do dry runs in planning stage to estimate size of all sends

This commit is contained in:
Anton Schirg
2018-08-30 12:52:08 +02:00
parent 47d8a5a7cd
commit b5957aca37
5 changed files with 138 additions and 84 deletions
+69 -60
View File
@@ -38,7 +38,7 @@ func (x FilesystemVersion_VersionType) String() string {
return proto.EnumName(FilesystemVersion_VersionType_name, int32(x))
}
func (FilesystemVersion_VersionType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_pdu_cc43fc3f9f8b50e6, []int{5, 0}
return fileDescriptor_pdu_ae88208ed9690d0f, []int{5, 0}
}
type SnapshotReplicationStatusReq_Op int32
@@ -61,7 +61,7 @@ func (x SnapshotReplicationStatusReq_Op) String() string {
return proto.EnumName(SnapshotReplicationStatusReq_Op_name, int32(x))
}
func (SnapshotReplicationStatusReq_Op) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_pdu_cc43fc3f9f8b50e6, []int{14, 0}
return fileDescriptor_pdu_ae88208ed9690d0f, []int{14, 0}
}
type ListFilesystemReq struct {
@@ -74,7 +74,7 @@ func (m *ListFilesystemReq) Reset() { *m = ListFilesystemReq{} }
func (m *ListFilesystemReq) String() string { return proto.CompactTextString(m) }
func (*ListFilesystemReq) ProtoMessage() {}
func (*ListFilesystemReq) Descriptor() ([]byte, []int) {
return fileDescriptor_pdu_cc43fc3f9f8b50e6, []int{0}
return fileDescriptor_pdu_ae88208ed9690d0f, []int{0}
}
func (m *ListFilesystemReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListFilesystemReq.Unmarshal(m, b)
@@ -105,7 +105,7 @@ func (m *ListFilesystemRes) Reset() { *m = ListFilesystemRes{} }
func (m *ListFilesystemRes) String() string { return proto.CompactTextString(m) }
func (*ListFilesystemRes) ProtoMessage() {}
func (*ListFilesystemRes) Descriptor() ([]byte, []int) {
return fileDescriptor_pdu_cc43fc3f9f8b50e6, []int{1}
return fileDescriptor_pdu_ae88208ed9690d0f, []int{1}
}
func (m *ListFilesystemRes) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListFilesystemRes.Unmarshal(m, b)
@@ -144,7 +144,7 @@ func (m *Filesystem) Reset() { *m = Filesystem{} }
func (m *Filesystem) String() string { return proto.CompactTextString(m) }
func (*Filesystem) ProtoMessage() {}
func (*Filesystem) Descriptor() ([]byte, []int) {
return fileDescriptor_pdu_cc43fc3f9f8b50e6, []int{2}
return fileDescriptor_pdu_ae88208ed9690d0f, []int{2}
}
func (m *Filesystem) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Filesystem.Unmarshal(m, b)
@@ -189,7 +189,7 @@ func (m *ListFilesystemVersionsReq) Reset() { *m = ListFilesystemVersion
func (m *ListFilesystemVersionsReq) String() string { return proto.CompactTextString(m) }
func (*ListFilesystemVersionsReq) ProtoMessage() {}
func (*ListFilesystemVersionsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_pdu_cc43fc3f9f8b50e6, []int{3}
return fileDescriptor_pdu_ae88208ed9690d0f, []int{3}
}
func (m *ListFilesystemVersionsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListFilesystemVersionsReq.Unmarshal(m, b)
@@ -227,7 +227,7 @@ func (m *ListFilesystemVersionsRes) Reset() { *m = ListFilesystemVersion
func (m *ListFilesystemVersionsRes) String() string { return proto.CompactTextString(m) }
func (*ListFilesystemVersionsRes) ProtoMessage() {}
func (*ListFilesystemVersionsRes) Descriptor() ([]byte, []int) {
return fileDescriptor_pdu_cc43fc3f9f8b50e6, []int{4}
return fileDescriptor_pdu_ae88208ed9690d0f, []int{4}
}
func (m *ListFilesystemVersionsRes) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListFilesystemVersionsRes.Unmarshal(m, b)
@@ -269,7 +269,7 @@ func (m *FilesystemVersion) Reset() { *m = FilesystemVersion{} }
func (m *FilesystemVersion) String() string { return proto.CompactTextString(m) }
func (*FilesystemVersion) ProtoMessage() {}
func (*FilesystemVersion) Descriptor() ([]byte, []int) {
return fileDescriptor_pdu_cc43fc3f9f8b50e6, []int{5}
return fileDescriptor_pdu_ae88208ed9690d0f, []int{5}
}
func (m *FilesystemVersion) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FilesystemVersion.Unmarshal(m, b)
@@ -339,6 +339,7 @@ type SendReq struct {
ResumeToken string `protobuf:"bytes,4,opt,name=ResumeToken,proto3" json:"ResumeToken,omitempty"`
Compress bool `protobuf:"varint,5,opt,name=Compress,proto3" json:"Compress,omitempty"`
Dedup bool `protobuf:"varint,6,opt,name=Dedup,proto3" json:"Dedup,omitempty"`
DryRun bool `protobuf:"varint,7,opt,name=DryRun,proto3" json:"DryRun,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@@ -348,7 +349,7 @@ func (m *SendReq) Reset() { *m = SendReq{} }
func (m *SendReq) String() string { return proto.CompactTextString(m) }
func (*SendReq) ProtoMessage() {}
func (*SendReq) Descriptor() ([]byte, []int) {
return fileDescriptor_pdu_cc43fc3f9f8b50e6, []int{6}
return fileDescriptor_pdu_ae88208ed9690d0f, []int{6}
}
func (m *SendReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendReq.Unmarshal(m, b)
@@ -410,6 +411,13 @@ func (m *SendReq) GetDedup() bool {
return false
}
func (m *SendReq) GetDryRun() bool {
if m != nil {
return m.DryRun
}
return false
}
type Property struct {
Name string `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"`
Value string `protobuf:"bytes,2,opt,name=Value,proto3" json:"Value,omitempty"`
@@ -422,7 +430,7 @@ func (m *Property) Reset() { *m = Property{} }
func (m *Property) String() string { return proto.CompactTextString(m) }
func (*Property) ProtoMessage() {}
func (*Property) Descriptor() ([]byte, []int) {
return fileDescriptor_pdu_cc43fc3f9f8b50e6, []int{7}
return fileDescriptor_pdu_ae88208ed9690d0f, []int{7}
}
func (m *Property) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Property.Unmarshal(m, b)
@@ -471,7 +479,7 @@ func (m *SendRes) Reset() { *m = SendRes{} }
func (m *SendRes) String() string { return proto.CompactTextString(m) }
func (*SendRes) ProtoMessage() {}
func (*SendRes) Descriptor() ([]byte, []int) {
return fileDescriptor_pdu_cc43fc3f9f8b50e6, []int{8}
return fileDescriptor_pdu_ae88208ed9690d0f, []int{8}
}
func (m *SendRes) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendRes.Unmarshal(m, b)
@@ -525,7 +533,7 @@ func (m *ReceiveReq) Reset() { *m = ReceiveReq{} }
func (m *ReceiveReq) String() string { return proto.CompactTextString(m) }
func (*ReceiveReq) ProtoMessage() {}
func (*ReceiveReq) Descriptor() ([]byte, []int) {
return fileDescriptor_pdu_cc43fc3f9f8b50e6, []int{9}
return fileDescriptor_pdu_ae88208ed9690d0f, []int{9}
}
func (m *ReceiveReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReceiveReq.Unmarshal(m, b)
@@ -569,7 +577,7 @@ func (m *ReceiveRes) Reset() { *m = ReceiveRes{} }
func (m *ReceiveRes) String() string { return proto.CompactTextString(m) }
func (*ReceiveRes) ProtoMessage() {}
func (*ReceiveRes) Descriptor() ([]byte, []int) {
return fileDescriptor_pdu_cc43fc3f9f8b50e6, []int{10}
return fileDescriptor_pdu_ae88208ed9690d0f, []int{10}
}
func (m *ReceiveRes) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ReceiveRes.Unmarshal(m, b)
@@ -602,7 +610,7 @@ func (m *DestroySnapshotsReq) Reset() { *m = DestroySnapshotsReq{} }
func (m *DestroySnapshotsReq) String() string { return proto.CompactTextString(m) }
func (*DestroySnapshotsReq) ProtoMessage() {}
func (*DestroySnapshotsReq) Descriptor() ([]byte, []int) {
return fileDescriptor_pdu_cc43fc3f9f8b50e6, []int{11}
return fileDescriptor_pdu_ae88208ed9690d0f, []int{11}
}
func (m *DestroySnapshotsReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DestroySnapshotsReq.Unmarshal(m, b)
@@ -648,7 +656,7 @@ func (m *DestroySnapshotRes) Reset() { *m = DestroySnapshotRes{} }
func (m *DestroySnapshotRes) String() string { return proto.CompactTextString(m) }
func (*DestroySnapshotRes) ProtoMessage() {}
func (*DestroySnapshotRes) Descriptor() ([]byte, []int) {
return fileDescriptor_pdu_cc43fc3f9f8b50e6, []int{12}
return fileDescriptor_pdu_ae88208ed9690d0f, []int{12}
}
func (m *DestroySnapshotRes) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DestroySnapshotRes.Unmarshal(m, b)
@@ -693,7 +701,7 @@ func (m *DestroySnapshotsRes) Reset() { *m = DestroySnapshotsRes{} }
func (m *DestroySnapshotsRes) String() string { return proto.CompactTextString(m) }
func (*DestroySnapshotsRes) ProtoMessage() {}
func (*DestroySnapshotsRes) Descriptor() ([]byte, []int) {
return fileDescriptor_pdu_cc43fc3f9f8b50e6, []int{13}
return fileDescriptor_pdu_ae88208ed9690d0f, []int{13}
}
func (m *DestroySnapshotsRes) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DestroySnapshotsRes.Unmarshal(m, b)
@@ -733,7 +741,7 @@ func (m *SnapshotReplicationStatusReq) Reset() { *m = SnapshotReplicatio
func (m *SnapshotReplicationStatusReq) String() string { return proto.CompactTextString(m) }
func (*SnapshotReplicationStatusReq) ProtoMessage() {}
func (*SnapshotReplicationStatusReq) Descriptor() ([]byte, []int) {
return fileDescriptor_pdu_cc43fc3f9f8b50e6, []int{14}
return fileDescriptor_pdu_ae88208ed9690d0f, []int{14}
}
func (m *SnapshotReplicationStatusReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SnapshotReplicationStatusReq.Unmarshal(m, b)
@@ -785,7 +793,7 @@ func (m *SnapshotReplicationStatusRes) Reset() { *m = SnapshotReplicatio
func (m *SnapshotReplicationStatusRes) String() string { return proto.CompactTextString(m) }
func (*SnapshotReplicationStatusRes) ProtoMessage() {}
func (*SnapshotReplicationStatusRes) Descriptor() ([]byte, []int) {
return fileDescriptor_pdu_cc43fc3f9f8b50e6, []int{15}
return fileDescriptor_pdu_ae88208ed9690d0f, []int{15}
}
func (m *SnapshotReplicationStatusRes) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SnapshotReplicationStatusRes.Unmarshal(m, b)
@@ -833,47 +841,48 @@ func init() {
proto.RegisterEnum("pdu.SnapshotReplicationStatusReq_Op", SnapshotReplicationStatusReq_Op_name, SnapshotReplicationStatusReq_Op_value)
}
func init() { proto.RegisterFile("pdu.proto", fileDescriptor_pdu_cc43fc3f9f8b50e6) }
func init() { proto.RegisterFile("pdu.proto", fileDescriptor_pdu_ae88208ed9690d0f) }
var fileDescriptor_pdu_cc43fc3f9f8b50e6 = []byte{
// 616 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xdb, 0x6e, 0x13, 0x3d,
0x10, 0xfe, 0x77, 0x37, 0x6d, 0x37, 0x93, 0x1e, 0x52, 0xb7, 0xfa, 0x59, 0xaa, 0x0a, 0x45, 0x16,
0x17, 0x01, 0x89, 0x48, 0x84, 0x8a, 0x1b, 0x24, 0x2e, 0x7a, 0xe4, 0x02, 0xd1, 0xca, 0x09, 0x55,
0xaf, 0x90, 0x96, 0xee, 0x48, 0x5d, 0x25, 0x1b, 0xbb, 0xb6, 0x17, 0x11, 0x1e, 0x80, 0xf7, 0xe0,
0x15, 0x78, 0x1a, 0x1e, 0x07, 0xd9, 0xd9, 0x83, 0x9b, 0x94, 0x28, 0x57, 0xeb, 0xf9, 0xe6, 0xdb,
0x99, 0x6f, 0x66, 0x3c, 0x86, 0xa6, 0x48, 0xf2, 0x9e, 0x90, 0x5c, 0x73, 0x12, 0x88, 0x24, 0xa7,
0x7b, 0xb0, 0xfb, 0x31, 0x55, 0xfa, 0x3c, 0x1d, 0xa3, 0x9a, 0x2a, 0x8d, 0x19, 0xc3, 0x7b, 0x7a,
0xbe, 0x08, 0x2a, 0xf2, 0x1a, 0x5a, 0x35, 0xa0, 0x22, 0xaf, 0x13, 0x74, 0x5b, 0xfd, 0x9d, 0x9e,
0x89, 0xe7, 0x10, 0x5d, 0x0e, 0x3d, 0x06, 0xa8, 0x4d, 0x42, 0xa0, 0x71, 0x15, 0xeb, 0xbb, 0xc8,
0xeb, 0x78, 0xdd, 0x26, 0xb3, 0x67, 0xd2, 0x81, 0x16, 0x43, 0x95, 0x67, 0x38, 0xe4, 0x23, 0x9c,
0x44, 0xbe, 0x75, 0xb9, 0x10, 0x7d, 0x07, 0x4f, 0x1f, 0x6a, 0xb9, 0x46, 0xa9, 0x52, 0x3e, 0x51,
0x0c, 0xef, 0xc9, 0x33, 0x37, 0x41, 0x11, 0xd8, 0x41, 0xe8, 0xe5, 0xbf, 0x7f, 0x56, 0xa4, 0x0f,
0x61, 0x69, 0x16, 0xd5, 0xfc, 0x3f, 0x57, 0x4d, 0xe1, 0x66, 0x15, 0x8f, 0xfe, 0xf1, 0x60, 0x77,
0xc1, 0x4f, 0xde, 0x42, 0x63, 0x38, 0x15, 0x68, 0x05, 0x6c, 0xf7, 0xe9, 0xe3, 0x51, 0x7a, 0xc5,
0xd7, 0x30, 0x99, 0xe5, 0x9b, 0x8e, 0x7c, 0x8a, 0x33, 0x2c, 0xca, 0xb6, 0x67, 0x83, 0x5d, 0xe4,
0x69, 0x12, 0x05, 0x1d, 0xaf, 0xdb, 0x60, 0xf6, 0x4c, 0x0e, 0xa1, 0x79, 0x22, 0x31, 0xd6, 0x38,
0xbc, 0xb9, 0x88, 0x1a, 0xd6, 0x51, 0x03, 0xe4, 0x00, 0x42, 0x6b, 0xa4, 0x7c, 0x12, 0xad, 0xd9,
0x48, 0x95, 0x4d, 0x5f, 0x40, 0xcb, 0x49, 0x4b, 0x36, 0x21, 0x1c, 0x4c, 0x62, 0xa1, 0xee, 0xb8,
0x6e, 0xff, 0x67, 0xac, 0x63, 0xce, 0x47, 0x59, 0x2c, 0x47, 0x6d, 0x8f, 0xfe, 0xf2, 0x60, 0x63,
0x80, 0x93, 0x64, 0x85, 0xbe, 0x1a, 0x91, 0xe7, 0x92, 0x67, 0xa5, 0x70, 0x73, 0x26, 0xdb, 0xe0,
0x0f, 0xb9, 0x95, 0xdd, 0x64, 0xfe, 0x90, 0xcf, 0x8f, 0xb6, 0xb1, 0x30, 0x5a, 0x2b, 0x9c, 0x67,
0x42, 0xa2, 0x52, 0x56, 0x78, 0xc8, 0x2a, 0x9b, 0xec, 0xc3, 0xda, 0x29, 0x26, 0xb9, 0x88, 0xd6,
0xad, 0x63, 0x66, 0xd0, 0x23, 0x08, 0xaf, 0x24, 0x17, 0x28, 0xf5, 0xb4, 0x6a, 0x9e, 0xe7, 0x34,
0x6f, 0x1f, 0xd6, 0xae, 0xe3, 0x71, 0x5e, 0x76, 0x74, 0x66, 0xd0, 0x9f, 0x55, 0x65, 0x8a, 0x74,
0x61, 0xe7, 0xb3, 0xc2, 0xc4, 0x55, 0xe6, 0xd9, 0x0c, 0xf3, 0x30, 0xa1, 0xb0, 0x79, 0xf6, 0x5d,
0xe0, 0xad, 0xc6, 0x64, 0x90, 0xfe, 0x98, 0x85, 0x0c, 0xd8, 0x03, 0x8c, 0xbc, 0x02, 0x28, 0xf4,
0xa4, 0xa8, 0xa2, 0xc0, 0x5e, 0xa2, 0x2d, 0x3b, 0xfe, 0x52, 0x26, 0x73, 0x08, 0xf4, 0x06, 0x80,
0xe1, 0x2d, 0xa6, 0xdf, 0x70, 0x95, 0x26, 0xbf, 0x84, 0xf6, 0xc9, 0x18, 0x63, 0x39, 0xbf, 0x20,
0x21, 0x5b, 0xc0, 0xe9, 0xa6, 0x13, 0x59, 0xd1, 0x11, 0xec, 0x9d, 0xa2, 0xd2, 0x92, 0x4f, 0xcb,
0x69, 0xaf, 0xb2, 0x2d, 0xe4, 0x08, 0x9a, 0x15, 0x3f, 0xf2, 0x97, 0x6e, 0x44, 0x4d, 0xa4, 0x5f,
0x80, 0xcc, 0x25, 0x2b, 0x96, 0xab, 0x34, 0x6d, 0xa6, 0x25, 0xcb, 0x55, 0xf2, 0xcc, 0xf4, 0xce,
0xa4, 0xe4, 0xb2, 0x9c, 0x9e, 0x35, 0xe8, 0x87, 0xc7, 0x8a, 0x31, 0xcf, 0xd1, 0x86, 0x69, 0xc0,
0x58, 0x97, 0xcb, 0xfb, 0xc4, 0xc6, 0x5f, 0x94, 0xc2, 0x4a, 0x1e, 0xfd, 0xed, 0xc1, 0x61, 0xed,
0x10, 0xe3, 0xf4, 0xd6, 0x2e, 0xc9, 0x40, 0xc7, 0x3a, 0x5f, 0xa9, 0x41, 0x07, 0x4e, 0x51, 0x33,
0x8d, 0xb5, 0xf8, 0x23, 0xf0, 0xb9, 0xb0, 0xd7, 0x7f, 0xbb, 0xff, 0xdc, 0x4a, 0x59, 0x96, 0xaa,
0x77, 0x29, 0x98, 0xcf, 0x05, 0xed, 0x80, 0x7f, 0x29, 0xc8, 0x06, 0x04, 0x17, 0x68, 0x36, 0x72,
0x17, 0xb6, 0x06, 0x58, 0xfd, 0x80, 0x49, 0xdb, 0xa3, 0xef, 0x97, 0x6a, 0x56, 0x46, 0x73, 0xcd,
0x2f, 0xee, 0xb2, 0x83, 0x7c, 0x5d, 0xb7, 0x8f, 0xfd, 0x9b, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff,
0x47, 0xbd, 0x08, 0x65, 0xf9, 0x05, 0x00, 0x00,
var fileDescriptor_pdu_ae88208ed9690d0f = []byte{
// 627 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0xdb, 0x6e, 0x13, 0x31,
0x10, 0x65, 0x37, 0x69, 0x93, 0x4c, 0x7a, 0x49, 0xdd, 0xaa, 0x2c, 0x55, 0x85, 0x22, 0x8b, 0x87,
0x80, 0x44, 0x24, 0x42, 0xc5, 0x0b, 0x12, 0x0f, 0xbd, 0xf2, 0x80, 0x68, 0xe5, 0x84, 0xaa, 0x4f,
0x48, 0x4b, 0x77, 0xa4, 0xae, 0x72, 0xb1, 0x6b, 0xef, 0x22, 0xc2, 0x07, 0xf0, 0x41, 0xbc, 0xf1,
0x27, 0x7c, 0x0e, 0xf2, 0x64, 0x2f, 0x6e, 0x52, 0xa2, 0x3c, 0xd5, 0xe7, 0xcc, 0xd9, 0x99, 0x33,
0x63, 0x4f, 0x03, 0x0d, 0x15, 0xa5, 0x5d, 0xa5, 0x65, 0x22, 0x59, 0x45, 0x45, 0x29, 0xdf, 0x85,
0x9d, 0x4f, 0xb1, 0x49, 0xce, 0xe3, 0x11, 0x9a, 0xa9, 0x49, 0x70, 0x2c, 0xf0, 0x9e, 0x9f, 0x2f,
0x92, 0x86, 0xbd, 0x81, 0x66, 0x49, 0x98, 0xc0, 0x6b, 0x57, 0x3a, 0xcd, 0xde, 0x76, 0xd7, 0xe6,
0x73, 0x84, 0xae, 0x86, 0x1f, 0x03, 0x94, 0x90, 0x31, 0xa8, 0x5e, 0x85, 0xc9, 0x5d, 0xe0, 0xb5,
0xbd, 0x4e, 0x43, 0xd0, 0x99, 0xb5, 0xa1, 0x29, 0xd0, 0xa4, 0x63, 0x1c, 0xc8, 0x21, 0x4e, 0x02,
0x9f, 0x42, 0x2e, 0xc5, 0xdf, 0xc3, 0xb3, 0x87, 0x5e, 0xae, 0x51, 0x9b, 0x58, 0x4e, 0x8c, 0xc0,
0x7b, 0xf6, 0xdc, 0x2d, 0x90, 0x25, 0x76, 0x18, 0x7e, 0xf9, 0xff, 0x8f, 0x0d, 0xeb, 0x41, 0x3d,
0x87, 0x59, 0x37, 0xfb, 0x73, 0xdd, 0x64, 0x61, 0x51, 0xe8, 0xf8, 0x5f, 0x0f, 0x76, 0x16, 0xe2,
0xec, 0x1d, 0x54, 0x07, 0x53, 0x85, 0x64, 0x60, 0xab, 0xc7, 0x1f, 0xcf, 0xd2, 0xcd, 0xfe, 0x5a,
0xa5, 0x20, 0xbd, 0x9d, 0xc8, 0xe7, 0x70, 0x8c, 0x59, 0xdb, 0x74, 0xb6, 0xdc, 0x45, 0x1a, 0x47,
0x41, 0xa5, 0xed, 0x75, 0xaa, 0x82, 0xce, 0xec, 0x10, 0x1a, 0x27, 0x1a, 0xc3, 0x04, 0x07, 0x37,
0x17, 0x41, 0x95, 0x02, 0x25, 0xc1, 0x0e, 0xa0, 0x4e, 0x20, 0x96, 0x93, 0x60, 0x8d, 0x32, 0x15,
0x98, 0xbf, 0x84, 0xa6, 0x53, 0x96, 0x6d, 0x40, 0xbd, 0x3f, 0x09, 0x95, 0xb9, 0x93, 0x49, 0xeb,
0x89, 0x45, 0xc7, 0x52, 0x0e, 0xc7, 0xa1, 0x1e, 0xb6, 0x3c, 0xfe, 0xc7, 0x83, 0x5a, 0x1f, 0x27,
0xd1, 0x0a, 0x73, 0xb5, 0x26, 0xcf, 0xb5, 0x1c, 0xe7, 0xc6, 0xed, 0x99, 0x6d, 0x81, 0x3f, 0x90,
0x64, 0xbb, 0x21, 0xfc, 0x81, 0x9c, 0xbf, 0xda, 0xea, 0xc2, 0xd5, 0x92, 0x71, 0x39, 0x56, 0x1a,
0x8d, 0x21, 0xe3, 0x75, 0x51, 0x60, 0xb6, 0x07, 0x6b, 0xa7, 0x18, 0xa5, 0x2a, 0x58, 0xa7, 0xc0,
0x0c, 0xb0, 0x7d, 0x58, 0x3f, 0xd5, 0x53, 0x91, 0x4e, 0x82, 0x1a, 0xd1, 0x19, 0xe2, 0x47, 0x50,
0xbf, 0xd2, 0x52, 0xa1, 0x4e, 0xa6, 0xc5, 0x50, 0x3d, 0x67, 0xa8, 0x7b, 0xb0, 0x76, 0x1d, 0x8e,
0xd2, 0x7c, 0xd2, 0x33, 0xc0, 0x7f, 0x15, 0x1d, 0x1b, 0xd6, 0x81, 0xed, 0x2f, 0x06, 0x23, 0xd7,
0xb1, 0x47, 0x25, 0xe6, 0x69, 0xc6, 0x61, 0xe3, 0xec, 0x87, 0xc2, 0xdb, 0x04, 0xa3, 0x7e, 0xfc,
0x73, 0x96, 0xb2, 0x22, 0x1e, 0x70, 0xec, 0x35, 0x40, 0xe6, 0x27, 0x46, 0x13, 0x54, 0xe8, 0x71,
0x6d, 0xd2, 0xb3, 0xc8, 0x6d, 0x0a, 0x47, 0xc0, 0x6f, 0x00, 0x04, 0xde, 0x62, 0xfc, 0x1d, 0x57,
0x19, 0xfe, 0x2b, 0x68, 0x9d, 0x8c, 0x30, 0xd4, 0xf3, 0x8b, 0x53, 0x17, 0x0b, 0x3c, 0xdf, 0x70,
0x32, 0x1b, 0x3e, 0x84, 0xdd, 0x53, 0x34, 0x89, 0x96, 0xd3, 0xfc, 0x15, 0xac, 0xb2, 0x45, 0xec,
0x08, 0x1a, 0x85, 0x3e, 0xf0, 0x97, 0x6e, 0x4a, 0x29, 0xe4, 0x5f, 0x81, 0xcd, 0x15, 0xcb, 0x96,
0x2e, 0x87, 0x54, 0x69, 0xc9, 0xd2, 0xe5, 0x3a, 0x7b, 0x7b, 0x67, 0x5a, 0x4b, 0x9d, 0xdf, 0x1e,
0x01, 0xfe, 0xf1, 0xb1, 0x66, 0xec, 0xbf, 0xa9, 0x9a, 0x1d, 0xc0, 0x28, 0xc9, 0x97, 0xfa, 0x29,
0xe5, 0x5f, 0xb4, 0x22, 0x72, 0x1d, 0xff, 0xed, 0xc1, 0x61, 0x19, 0x50, 0xa3, 0xf8, 0x96, 0x96,
0xa7, 0x9f, 0x84, 0x49, 0xba, 0xd2, 0x80, 0x0e, 0x9c, 0xa6, 0x66, 0x1e, 0x4b, 0xf3, 0x47, 0xe0,
0x4b, 0x45, 0x6b, 0xb1, 0xd5, 0x7b, 0x41, 0x56, 0x96, 0x95, 0xea, 0x5e, 0x2a, 0xe1, 0x4b, 0xc5,
0xdb, 0xe0, 0x5f, 0x2a, 0x56, 0x83, 0xca, 0x05, 0xda, 0x4d, 0xdd, 0x81, 0xcd, 0x3e, 0x16, 0x1f,
0x60, 0xd4, 0xf2, 0xf8, 0x87, 0xa5, 0x9e, 0x8d, 0xf5, 0x5c, 0xea, 0xb3, 0xb7, 0xec, 0x30, 0xdf,
0xd6, 0xe9, 0x47, 0xe0, 0xed, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf0, 0xc1, 0x08, 0xf6, 0x11,
0x06, 0x00, 0x00,
}