saas-smartAi通信协议标准库
gongshangguo
2022-03-08 a32c642ffa2b9f05e3b55fc88b2c2bed3277a080
aiotProto/aiot/aiot_business.pb.go
@@ -20,56 +20,406 @@
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
// 请求类型
type RequestType int32
const (
   // 同步请求 默认
   RequestType_sync RequestType = 0
   // 异步请求
   RequestType_Async RequestType = 1
)
var RequestType_name = map[int32]string{
   0: "sync",
   1: "Async",
}
var RequestType_value = map[string]int32{
   "sync":  0,
   "Async": 1,
}
func (x RequestType) String() string {
   return proto.EnumName(RequestType_name, int32(x))
}
func (RequestType) EnumDescriptor() ([]byte, []int) {
   return fileDescriptor_29eca6d4b33e7fd8, []int{0}
}
// 请求方式
type RequestMethod int32
const (
   // 默认
   RequestMethod_MethodDefault RequestMethod = 0
   // post请求
   RequestMethod_Post RequestMethod = 1
   // get请求
   RequestMethod_Get RequestMethod = 2
   // put请求
   RequestMethod_Put RequestMethod = 3
   // delete请求
   RequestMethod_Delete RequestMethod = 4
)
var RequestMethod_name = map[int32]string{
   0: "MethodDefault",
   1: "Post",
   2: "Get",
   3: "Put",
   4: "Delete",
}
var RequestMethod_value = map[string]int32{
   "MethodDefault": 0,
   "Post":          1,
   "Get":           2,
   "Put":           3,
   "Delete":        4,
}
func (x RequestMethod) String() string {
   return proto.EnumName(RequestMethod_name, int32(x))
}
func (RequestMethod) EnumDescriptor() ([]byte, []int) {
   return fileDescriptor_29eca6d4b33e7fd8, []int{1}
}
// 请求header
type RequestContentType int32
const (
   RequestContentType_ContentTypeDefault            RequestContentType = 0
   RequestContentType_ApplicationJson               RequestContentType = 1
   RequestContentType_ApplicationXWwwFormUrlencoded RequestContentType = 2
   RequestContentType_MultipartFormData             RequestContentType = 3
   RequestContentType_ApplicationXml                RequestContentType = 4
)
var RequestContentType_name = map[int32]string{
   0: "ContentTypeDefault",
   1: "ApplicationJson",
   2: "ApplicationXWwwFormUrlencoded",
   3: "MultipartFormData",
   4: "ApplicationXml",
}
var RequestContentType_value = map[string]int32{
   "ContentTypeDefault":            0,
   "ApplicationJson":               1,
   "ApplicationXWwwFormUrlencoded": 2,
   "MultipartFormData":             3,
   "ApplicationXml":                4,
}
func (x RequestContentType) String() string {
   return proto.EnumName(RequestContentType_name, int32(x))
}
func (RequestContentType) EnumDescriptor() ([]byte, []int) {
   return fileDescriptor_29eca6d4b33e7fd8, []int{2}
}
// 请求的body体
type BusinessReq struct {
   Topic                string   `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
   Authorization        string   `protobuf:"bytes,2,opt,name=authorization,proto3" json:"authorization,omitempty"`
   Req                  []byte   `protobuf:"bytes,3,opt,name=req,proto3" json:"req,omitempty"`
type NodeReq struct {
   // 请求的topic url
   Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
   // 节点ID
   NodeId string `protobuf:"bytes,2,opt,name=nodeId,proto3" json:"nodeId,omitempty"`
   // token
   Authorization string `protobuf:"bytes,3,opt,name=authorization,proto3" json:"authorization,omitempty"`
   // 请求指向的ip
   Ip string `protobuf:"bytes,4,opt,name=ip,proto3" json:"ip,omitempty"`
   // 请求的端口 保留字段
   Port string `protobuf:"bytes,5,opt,name=port,proto3" json:"port,omitempty"`
   // 请求的同步/异步类型
   SyncType RequestType `protobuf:"varint,6,opt,name=syncType,proto3,enum=aiot.RequestType" json:"syncType,omitempty"`
   // method
   Method RequestMethod `protobuf:"varint,7,opt,name=method,proto3,enum=aiot.RequestMethod" json:"method,omitempty"`
   // content-type
   ContentType RequestContentType `protobuf:"varint,8,opt,name=contentType,proto3,enum=aiot.RequestContentType" json:"contentType,omitempty"`
   // 请求业务参数
   Req                  []byte   `protobuf:"bytes,9,opt,name=req,proto3" json:"req,omitempty"`
   XXX_NoUnkeyedLiteral struct{} `json:"-"`
   XXX_unrecognized     []byte   `json:"-"`
   XXX_sizecache        int32    `json:"-"`
}
func (m *BusinessReq) Reset()         { *m = BusinessReq{} }
func (m *BusinessReq) String() string { return proto.CompactTextString(m) }
func (*BusinessReq) ProtoMessage()    {}
func (*BusinessReq) Descriptor() ([]byte, []int) {
func (m *NodeReq) Reset()         { *m = NodeReq{} }
func (m *NodeReq) String() string { return proto.CompactTextString(m) }
func (*NodeReq) ProtoMessage()    {}
func (*NodeReq) Descriptor() ([]byte, []int) {
   return fileDescriptor_29eca6d4b33e7fd8, []int{0}
}
func (m *BusinessReq) XXX_Unmarshal(b []byte) error {
   return xxx_messageInfo_BusinessReq.Unmarshal(m, b)
func (m *NodeReq) XXX_Unmarshal(b []byte) error {
   return xxx_messageInfo_NodeReq.Unmarshal(m, b)
}
func (m *BusinessReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   return xxx_messageInfo_BusinessReq.Marshal(b, m, deterministic)
func (m *NodeReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   return xxx_messageInfo_NodeReq.Marshal(b, m, deterministic)
}
func (m *BusinessReq) XXX_Merge(src proto.Message) {
   xxx_messageInfo_BusinessReq.Merge(m, src)
func (m *NodeReq) XXX_Merge(src proto.Message) {
   xxx_messageInfo_NodeReq.Merge(m, src)
}
func (m *BusinessReq) XXX_Size() int {
   return xxx_messageInfo_BusinessReq.Size(m)
func (m *NodeReq) XXX_Size() int {
   return xxx_messageInfo_NodeReq.Size(m)
}
func (m *BusinessReq) XXX_DiscardUnknown() {
   xxx_messageInfo_BusinessReq.DiscardUnknown(m)
func (m *NodeReq) XXX_DiscardUnknown() {
   xxx_messageInfo_NodeReq.DiscardUnknown(m)
}
var xxx_messageInfo_BusinessReq proto.InternalMessageInfo
var xxx_messageInfo_NodeReq proto.InternalMessageInfo
func (m *BusinessReq) GetTopic() string {
func (m *NodeReq) GetTopic() string {
   if m != nil {
      return m.Topic
   }
   return ""
}
func (m *BusinessReq) GetAuthorization() string {
func (m *NodeReq) GetNodeId() string {
   if m != nil {
      return m.NodeId
   }
   return ""
}
func (m *NodeReq) GetAuthorization() string {
   if m != nil {
      return m.Authorization
   }
   return ""
}
func (m *BusinessReq) GetReq() []byte {
func (m *NodeReq) GetIp() string {
   if m != nil {
      return m.Ip
   }
   return ""
}
func (m *NodeReq) GetPort() string {
   if m != nil {
      return m.Port
   }
   return ""
}
func (m *NodeReq) GetSyncType() RequestType {
   if m != nil {
      return m.SyncType
   }
   return RequestType_sync
}
func (m *NodeReq) GetMethod() RequestMethod {
   if m != nil {
      return m.Method
   }
   return RequestMethod_MethodDefault
}
func (m *NodeReq) GetContentType() RequestContentType {
   if m != nil {
      return m.ContentType
   }
   return RequestContentType_ContentTypeDefault
}
func (m *NodeReq) GetReq() []byte {
   if m != nil {
      return m.Req
   }
   return nil
}
// 集群请求参数
type ClusterReq struct {
   // 请求的topic url
   Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
   // 集群ID
   ClusterId string `protobuf:"bytes,2,opt,name=clusterId,proto3" json:"clusterId,omitempty"`
   // token
   Authorization string `protobuf:"bytes,3,opt,name=authorization,proto3" json:"authorization,omitempty"`
   // 请求的同步/异步类型
   SyncType RequestType `protobuf:"varint,4,opt,name=syncType,proto3,enum=aiot.RequestType" json:"syncType,omitempty"`
   // method
   Method RequestMethod `protobuf:"varint,5,opt,name=method,proto3,enum=aiot.RequestMethod" json:"method,omitempty"`
   // content-type
   ContentType RequestContentType `protobuf:"varint,6,opt,name=contentType,proto3,enum=aiot.RequestContentType" json:"contentType,omitempty"`
   // 请求业务参数
   Req                  []byte   `protobuf:"bytes,7,opt,name=req,proto3" json:"req,omitempty"`
   XXX_NoUnkeyedLiteral struct{} `json:"-"`
   XXX_unrecognized     []byte   `json:"-"`
   XXX_sizecache        int32    `json:"-"`
}
func (m *ClusterReq) Reset()         { *m = ClusterReq{} }
func (m *ClusterReq) String() string { return proto.CompactTextString(m) }
func (*ClusterReq) ProtoMessage()    {}
func (*ClusterReq) Descriptor() ([]byte, []int) {
   return fileDescriptor_29eca6d4b33e7fd8, []int{1}
}
func (m *ClusterReq) XXX_Unmarshal(b []byte) error {
   return xxx_messageInfo_ClusterReq.Unmarshal(m, b)
}
func (m *ClusterReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   return xxx_messageInfo_ClusterReq.Marshal(b, m, deterministic)
}
func (m *ClusterReq) XXX_Merge(src proto.Message) {
   xxx_messageInfo_ClusterReq.Merge(m, src)
}
func (m *ClusterReq) XXX_Size() int {
   return xxx_messageInfo_ClusterReq.Size(m)
}
func (m *ClusterReq) XXX_DiscardUnknown() {
   xxx_messageInfo_ClusterReq.DiscardUnknown(m)
}
var xxx_messageInfo_ClusterReq proto.InternalMessageInfo
func (m *ClusterReq) GetTopic() string {
   if m != nil {
      return m.Topic
   }
   return ""
}
func (m *ClusterReq) GetClusterId() string {
   if m != nil {
      return m.ClusterId
   }
   return ""
}
func (m *ClusterReq) GetAuthorization() string {
   if m != nil {
      return m.Authorization
   }
   return ""
}
func (m *ClusterReq) GetSyncType() RequestType {
   if m != nil {
      return m.SyncType
   }
   return RequestType_sync
}
func (m *ClusterReq) GetMethod() RequestMethod {
   if m != nil {
      return m.Method
   }
   return RequestMethod_MethodDefault
}
func (m *ClusterReq) GetContentType() RequestContentType {
   if m != nil {
      return m.ContentType
   }
   return RequestContentType_ContentTypeDefault
}
func (m *ClusterReq) GetReq() []byte {
   if m != nil {
      return m.Req
   }
   return nil
}
// 设备列表请求参数
type NodesReq struct {
   // 请求的topic url
   Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
   // 设备列表ID
   NodeIds []string `protobuf:"bytes,2,rep,name=nodeIds,proto3" json:"nodeIds,omitempty"`
   // token
   Authorization string `protobuf:"bytes,3,opt,name=authorization,proto3" json:"authorization,omitempty"`
   // 请求的同步/异步类型
   SyncType RequestType `protobuf:"varint,4,opt,name=syncType,proto3,enum=aiot.RequestType" json:"syncType,omitempty"`
   // method
   Method RequestMethod `protobuf:"varint,5,opt,name=method,proto3,enum=aiot.RequestMethod" json:"method,omitempty"`
   // content-type
   ContentType RequestContentType `protobuf:"varint,6,opt,name=contentType,proto3,enum=aiot.RequestContentType" json:"contentType,omitempty"`
   // 请求业务参数
   Req                  []byte   `protobuf:"bytes,7,opt,name=req,proto3" json:"req,omitempty"`
   XXX_NoUnkeyedLiteral struct{} `json:"-"`
   XXX_unrecognized     []byte   `json:"-"`
   XXX_sizecache        int32    `json:"-"`
}
func (m *NodesReq) Reset()         { *m = NodesReq{} }
func (m *NodesReq) String() string { return proto.CompactTextString(m) }
func (*NodesReq) ProtoMessage()    {}
func (*NodesReq) Descriptor() ([]byte, []int) {
   return fileDescriptor_29eca6d4b33e7fd8, []int{2}
}
func (m *NodesReq) XXX_Unmarshal(b []byte) error {
   return xxx_messageInfo_NodesReq.Unmarshal(m, b)
}
func (m *NodesReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   return xxx_messageInfo_NodesReq.Marshal(b, m, deterministic)
}
func (m *NodesReq) XXX_Merge(src proto.Message) {
   xxx_messageInfo_NodesReq.Merge(m, src)
}
func (m *NodesReq) XXX_Size() int {
   return xxx_messageInfo_NodesReq.Size(m)
}
func (m *NodesReq) XXX_DiscardUnknown() {
   xxx_messageInfo_NodesReq.DiscardUnknown(m)
}
var xxx_messageInfo_NodesReq proto.InternalMessageInfo
func (m *NodesReq) GetTopic() string {
   if m != nil {
      return m.Topic
   }
   return ""
}
func (m *NodesReq) GetNodeIds() []string {
   if m != nil {
      return m.NodeIds
   }
   return nil
}
func (m *NodesReq) GetAuthorization() string {
   if m != nil {
      return m.Authorization
   }
   return ""
}
func (m *NodesReq) GetSyncType() RequestType {
   if m != nil {
      return m.SyncType
   }
   return RequestType_sync
}
func (m *NodesReq) GetMethod() RequestMethod {
   if m != nil {
      return m.Method
   }
   return RequestMethod_MethodDefault
}
func (m *NodesReq) GetContentType() RequestContentType {
   if m != nil {
      return m.ContentType
   }
   return RequestContentType_ContentTypeDefault
}
func (m *NodesReq) GetReq() []byte {
   if m != nil {
      return m.Req
   }
@@ -78,9 +428,13 @@
// 响应的body体
type BusinessReply struct {
   Code                 int32    `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
   Msg                  string   `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"`
   Success              bool     `protobuf:"varint,3,opt,name=success,proto3" json:"success,omitempty"`
   // 返回的错误码
   Code int32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"`
   // 错误信息
   Msg string `protobuf:"bytes,2,opt,name=msg,proto3" json:"msg,omitempty"`
   // 是否success
   Success bool `protobuf:"varint,3,opt,name=success,proto3" json:"success,omitempty"`
   // 返回结果
   Data                 []byte   `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"`
   XXX_NoUnkeyedLiteral struct{} `json:"-"`
   XXX_unrecognized     []byte   `json:"-"`
@@ -91,7 +445,7 @@
func (m *BusinessReply) String() string { return proto.CompactTextString(m) }
func (*BusinessReply) ProtoMessage()    {}
func (*BusinessReply) Descriptor() ([]byte, []int) {
   return fileDescriptor_29eca6d4b33e7fd8, []int{1}
   return fileDescriptor_29eca6d4b33e7fd8, []int{3}
}
func (m *BusinessReply) XXX_Unmarshal(b []byte) error {
@@ -141,7 +495,12 @@
}
func init() {
   proto.RegisterType((*BusinessReq)(nil), "aiot.BusinessReq")
   proto.RegisterEnum("aiot.RequestType", RequestType_name, RequestType_value)
   proto.RegisterEnum("aiot.RequestMethod", RequestMethod_name, RequestMethod_value)
   proto.RegisterEnum("aiot.RequestContentType", RequestContentType_name, RequestContentType_value)
   proto.RegisterType((*NodeReq)(nil), "aiot.NodeReq")
   proto.RegisterType((*ClusterReq)(nil), "aiot.ClusterReq")
   proto.RegisterType((*NodesReq)(nil), "aiot.NodesReq")
   proto.RegisterType((*BusinessReply)(nil), "aiot.BusinessReply")
}
@@ -150,21 +509,43 @@
}
var fileDescriptor_29eca6d4b33e7fd8 = []byte{
   // 250 bytes of a gzipped FileDescriptorProto
   0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0x50, 0x3d, 0x4f, 0xc3, 0x40,
   0x0c, 0x6d, 0x68, 0xca, 0x87, 0x43, 0x11, 0x75, 0x19, 0xa2, 0x4c, 0x55, 0xc4, 0xd0, 0x29, 0x48,
   0x30, 0x30, 0xc3, 0xc2, 0x8a, 0xae, 0x23, 0x03, 0xba, 0x5e, 0x2c, 0x38, 0x29, 0x89, 0xd3, 0xdc,
   0x05, 0x54, 0x7e, 0x3d, 0xf2, 0xa5, 0x15, 0xb4, 0xdb, 0xfb, 0xb0, 0x9f, 0xe5, 0x07, 0x73, 0x6d,
   0xd9, 0xbf, 0xaf, 0x7b, 0x67, 0x1b, 0x72, 0xae, 0x68, 0x3b, 0xf6, 0x8c, 0xb1, 0x88, 0xd9, 0x2c,
   0x58, 0x86, 0xeb, 0x9a, 0x9b, 0xc1, 0xc8, 0xdf, 0x20, 0x79, 0xde, 0x8d, 0x2a, 0xda, 0xe0, 0x0d,
   0x4c, 0x3c, 0xb7, 0xd6, 0xa4, 0xd1, 0x22, 0x5a, 0x5e, 0xa8, 0x81, 0xe0, 0x2d, 0x4c, 0x75, 0xef,
   0x3f, 0xb9, 0xb3, 0x3f, 0xda, 0x5b, 0x6e, 0xd2, 0x93, 0xe0, 0x1e, 0x8a, 0x78, 0x0d, 0xe3, 0x8e,
   0x36, 0xe9, 0x78, 0x11, 0x2d, 0x2f, 0x95, 0xc0, 0xdc, 0xc0, 0xf4, 0x2f, 0xbc, 0xad, 0xb6, 0x88,
   0x10, 0x1b, 0x2e, 0x29, 0xa4, 0x4f, 0x54, 0xc0, 0xb2, 0x56, 0xbb, 0x8f, 0x5d, 0xa4, 0x40, 0x4c,
   0xe1, 0xcc, 0xf5, 0xc6, 0x90, 0x73, 0x21, 0xec, 0x5c, 0xed, 0xa9, 0xec, 0x97, 0xda, 0xeb, 0x34,
   0x0e, 0x37, 0x02, 0xbe, 0xff, 0x86, 0xe4, 0xc9, 0xb2, 0x5f, 0x51, 0xf7, 0x65, 0x0d, 0xe1, 0x23,
   0x24, 0x2f, 0xe4, 0xf7, 0x67, 0x71, 0x56, 0xc8, 0xcf, 0xc5, 0xbf, 0x1f, 0xb3, 0xf9, 0xb1, 0xd4,
   0x56, 0xdb, 0x7c, 0x84, 0x77, 0x90, 0xac, 0xa8, 0x29, 0x25, 0x4b, 0x9a, 0xb8, 0x1a, 0xa6, 0x5e,
   0xa5, 0x25, 0xc3, 0x55, 0x76, 0xc4, 0xf3, 0xd1, 0xfa, 0x34, 0x34, 0xf8, 0xf0, 0x1b, 0x00, 0x00,
   0xff, 0xff, 0xa4, 0x59, 0x2c, 0xb2, 0x71, 0x01, 0x00, 0x00,
   // 597 bytes of a gzipped FileDescriptorProto
   0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x54, 0xcf, 0x6e, 0xd3, 0x4e,
   0x10, 0xae, 0xff, 0xc4, 0x49, 0x26, 0x75, 0xba, 0x99, 0xfe, 0x7e, 0xd5, 0xaa, 0x02, 0x29, 0x44,
   0x1c, 0xa2, 0x22, 0x7a, 0x28, 0x1c, 0x10, 0xb7, 0xd2, 0x0a, 0x44, 0xa5, 0xa2, 0x6a, 0x5b, 0x04,
   0x37, 0xe4, 0xae, 0x17, 0x6a, 0xc9, 0xf6, 0xba, 0xde, 0x35, 0x55, 0x78, 0x04, 0x2e, 0xf0, 0x1e,
   0x3c, 0x1a, 0x2f, 0x81, 0x76, 0xed, 0xd4, 0x8e, 0x50, 0x24, 0xca, 0x91, 0xdb, 0xcc, 0x7c, 0xdf,
   0xb7, 0xf6, 0x7e, 0x33, 0x3b, 0xb0, 0x1d, 0x25, 0x52, 0x7f, 0xb8, 0xac, 0x54, 0x92, 0x0b, 0xa5,
   0xf6, 0x8b, 0x52, 0x6a, 0x89, 0xbe, 0x29, 0xee, 0x4e, 0x2c, 0xc4, 0x65, 0x96, 0xc9, 0xbc, 0x06,
   0x66, 0x3f, 0x5c, 0xe8, 0xbf, 0x91, 0xb1, 0x60, 0xe2, 0x1a, 0xff, 0x83, 0x9e, 0x96, 0x45, 0xc2,
   0xa9, 0x33, 0x75, 0xe6, 0x43, 0x56, 0x27, 0xb8, 0x03, 0x41, 0x2e, 0x63, 0xf1, 0x3a, 0xa6, 0xae,
   0x2d, 0x37, 0x19, 0x3e, 0x84, 0x30, 0xaa, 0xf4, 0x95, 0x2c, 0x93, 0x2f, 0x91, 0x4e, 0x64, 0x4e,
   0x3d, 0x0b, 0xaf, 0x16, 0x71, 0x0c, 0x6e, 0x52, 0x50, 0xdf, 0x42, 0x6e, 0x52, 0x20, 0x82, 0x5f,
   0xc8, 0x52, 0xd3, 0x9e, 0xad, 0xd8, 0x18, 0x1f, 0xc3, 0x40, 0x2d, 0x72, 0x7e, 0xb1, 0x28, 0x04,
   0x0d, 0xa6, 0xce, 0x7c, 0x7c, 0x30, 0xd9, 0x37, 0x7f, 0xba, 0xcf, 0xc4, 0x75, 0x25, 0x94, 0x36,
   0x00, 0xbb, 0xa5, 0xe0, 0x23, 0x08, 0x32, 0xa1, 0xaf, 0x64, 0x4c, 0xfb, 0x96, 0xbc, 0xbd, 0x42,
   0x3e, 0xb5, 0x10, 0x6b, 0x28, 0xf8, 0x1c, 0x46, 0x5c, 0xe6, 0x5a, 0xe4, 0xf6, 0x14, 0x3a, 0xb0,
   0x0a, 0xba, 0xa2, 0x38, 0x6a, 0x71, 0xd6, 0x25, 0x23, 0x01, 0xaf, 0x14, 0xd7, 0x74, 0x38, 0x75,
   0xe6, 0x9b, 0xcc, 0x84, 0xb3, 0xef, 0x2e, 0xc0, 0x51, 0x5a, 0x29, 0x2d, 0xca, 0xf5, 0x86, 0xdd,
   0x83, 0x21, 0xaf, 0x39, 0xb7, 0x9e, 0xb5, 0x85, 0x3f, 0xb4, 0xad, 0x6b, 0x89, 0x7f, 0x17, 0x4b,
   0x7a, 0x77, 0xb6, 0x24, 0xf8, 0x0b, 0x4b, 0xfa, 0xad, 0x25, 0x5f, 0x5d, 0x18, 0x98, 0x01, 0x52,
   0xeb, 0x0d, 0xa1, 0xd0, 0xaf, 0x67, 0x46, 0x51, 0x77, 0xea, 0xcd, 0x87, 0x6c, 0x99, 0xfe, 0x73,
   0x66, 0x70, 0x08, 0x5f, 0x34, 0x0f, 0x8f, 0x89, 0x22, 0x5d, 0x98, 0x71, 0xe7, 0x32, 0x16, 0xd6,
   0x8f, 0x1e, 0xb3, 0xb1, 0x91, 0x65, 0xea, 0x53, 0x33, 0x19, 0x26, 0x34, 0x06, 0xa9, 0x8a, 0x73,
   0xa1, 0x94, 0x35, 0x60, 0xc0, 0x96, 0xa9, 0xd1, 0xc7, 0x91, 0x8e, 0xec, 0xb5, 0x37, 0x99, 0x8d,
   0xf7, 0x66, 0x30, 0xea, 0x5c, 0x1c, 0x07, 0xe0, 0x9b, 0xab, 0x93, 0x0d, 0x1c, 0x42, 0xef, 0xd0,
   0x86, 0xce, 0xde, 0x09, 0x84, 0x2b, 0xf7, 0xc5, 0x09, 0x84, 0x75, 0x74, 0x2c, 0x3e, 0x46, 0x55,
   0xaa, 0xc9, 0x86, 0x11, 0x9e, 0x49, 0xa5, 0x89, 0x83, 0x7d, 0xf0, 0x5e, 0x09, 0x4d, 0x5c, 0x13,
   0x9c, 0x55, 0x9a, 0x78, 0x08, 0x10, 0x1c, 0x8b, 0x54, 0x68, 0x41, 0xfc, 0xbd, 0x6f, 0x0e, 0xe0,
   0xef, 0x56, 0xe0, 0x0e, 0x60, 0x27, 0x6d, 0x8f, 0xdd, 0x86, 0xad, 0xc3, 0xa2, 0x48, 0x13, 0x6e,
   0x9b, 0x77, 0xa2, 0x64, 0x4e, 0x1c, 0x7c, 0x00, 0xf7, 0x3b, 0xc5, 0xf7, 0xef, 0x6e, 0x6e, 0x5e,
   0xca, 0x32, 0x7b, 0x5b, 0xa6, 0x22, 0x37, 0x9e, 0xc4, 0xc4, 0xc5, 0xff, 0x61, 0x72, 0x5a, 0xa5,
   0x3a, 0x29, 0xa2, 0x52, 0x1b, 0xf0, 0x38, 0xd2, 0x11, 0xf1, 0x10, 0x61, 0xdc, 0x55, 0x66, 0x29,
   0xf1, 0x0f, 0x7e, 0x3a, 0x30, 0x3a, 0x4c, 0xa4, 0x3e, 0x17, 0xe5, 0xe7, 0x84, 0x0b, 0x3c, 0x00,
   0x38, 0x17, 0x79, 0x7c, 0x21, 0xcd, 0x20, 0x62, 0x58, 0x77, 0xaf, 0xd9, 0x6a, 0xbb, 0x4d, 0xfb,
   0x57, 0xfa, 0x32, 0xdb, 0xc0, 0x67, 0xb0, 0x65, 0x34, 0xf6, 0x98, 0x45, 0xce, 0xcd, 0xf4, 0x8e,
   0x6b, 0xe6, 0x99, 0x59, 0x8c, 0x5c, 0xa6, 0xeb, 0x95, 0x61, 0xfd, 0xb5, 0x66, 0x13, 0x20, 0xa9,
   0x79, 0xed, 0x62, 0x58, 0xa7, 0x7c, 0x0a, 0xa3, 0xf6, 0x3f, 0xd5, 0xf2, 0x7b, 0xcb, 0xd7, 0xb3,
   0x46, 0x75, 0x19, 0xd8, 0x4d, 0xfd, 0xe4, 0x57, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc8, 0x35, 0xc6,
   0xfc, 0xd9, 0x05, 0x00, 0x00,
}