diff --git a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.go b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.go index 58b7a7e3d4..ba0d367ab4 100644 --- a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.go +++ b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.go @@ -974,6 +974,45 @@ func (m *NewSubnet) GetIpCnt() uint32 { return 0 } +type UpgradePolicy struct { + SupportType string `protobuf:"bytes,1,opt,name=supportType,proto3" json:"supportType,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-" bson:"-"` + XXX_unrecognized []byte `json:"-" bson:"-"` + XXX_sizecache int32 `json:"-" bson:"-"` +} + +func (m *UpgradePolicy) Reset() { *m = UpgradePolicy{} } +func (m *UpgradePolicy) String() string { return proto.CompactTextString(m) } +func (*UpgradePolicy) ProtoMessage() {} +func (*UpgradePolicy) Descriptor() ([]byte, []int) { + return fileDescriptor_d789ea45d40d7a6b, []int{7} +} + +func (m *UpgradePolicy) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_UpgradePolicy.Unmarshal(m, b) +} +func (m *UpgradePolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_UpgradePolicy.Marshal(b, m, deterministic) +} +func (m *UpgradePolicy) XXX_Merge(src proto.Message) { + xxx_messageInfo_UpgradePolicy.Merge(m, src) +} +func (m *UpgradePolicy) XXX_Size() int { + return xxx_messageInfo_UpgradePolicy.Size(m) +} +func (m *UpgradePolicy) XXX_DiscardUnknown() { + xxx_messageInfo_UpgradePolicy.DiscardUnknown(m) +} + +var xxx_messageInfo_UpgradePolicy proto.InternalMessageInfo + +func (m *UpgradePolicy) GetSupportType() string { + if m != nil { + return m.SupportType + } + return "" +} + type ClusterBasicSetting struct { OS string `protobuf:"bytes,1,opt,name=OS,proto3" json:"OS,omitempty"` Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` @@ -984,6 +1023,7 @@ type ClusterBasicSetting struct { IsAutoUpgradeClusterLevel bool `protobuf:"varint,7,opt,name=isAutoUpgradeClusterLevel,proto3" json:"isAutoUpgradeClusterLevel,omitempty"` Area *CloudArea `protobuf:"bytes,8,opt,name=area,proto3" json:"area,omitempty"` Module *ClusterModule `protobuf:"bytes,9,opt,name=module,proto3" json:"module,omitempty"` + UpgradePolicy *UpgradePolicy `protobuf:"bytes,10,opt,name=upgradePolicy,proto3" json:"upgradePolicy,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-" bson:"-"` XXX_unrecognized []byte `json:"-" bson:"-"` XXX_sizecache int32 `json:"-" bson:"-"` @@ -993,7 +1033,7 @@ func (m *ClusterBasicSetting) Reset() { *m = ClusterBasicSetting{} } func (m *ClusterBasicSetting) String() string { return proto.CompactTextString(m) } func (*ClusterBasicSetting) ProtoMessage() {} func (*ClusterBasicSetting) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{7} + return fileDescriptor_d789ea45d40d7a6b, []int{8} } func (m *ClusterBasicSetting) XXX_Unmarshal(b []byte) error { @@ -1077,6 +1117,13 @@ func (m *ClusterBasicSetting) GetModule() *ClusterModule { return nil } +func (m *ClusterBasicSetting) GetUpgradePolicy() *UpgradePolicy { + if m != nil { + return m.UpgradePolicy + } + return nil +} + type ClusterAdvanceSetting struct { IPVS bool `protobuf:"varint,1,opt,name=IPVS,proto3" json:"IPVS,omitempty"` ContainerRuntime string `protobuf:"bytes,2,opt,name=containerRuntime,proto3" json:"containerRuntime,omitempty"` @@ -1096,7 +1143,7 @@ func (m *ClusterAdvanceSetting) Reset() { *m = ClusterAdvanceSetting{} } func (m *ClusterAdvanceSetting) String() string { return proto.CompactTextString(m) } func (*ClusterAdvanceSetting) ProtoMessage() {} func (*ClusterAdvanceSetting) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{8} + return fileDescriptor_d789ea45d40d7a6b, []int{9} } func (m *ClusterAdvanceSetting) XXX_Unmarshal(b []byte) error { @@ -1196,7 +1243,7 @@ func (m *ClusterConnectSetting) Reset() { *m = ClusterConnectSetting{} } func (m *ClusterConnectSetting) String() string { return proto.CompactTextString(m) } func (*ClusterConnectSetting) ProtoMessage() {} func (*ClusterConnectSetting) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{9} + return fileDescriptor_d789ea45d40d7a6b, []int{10} } func (m *ClusterConnectSetting) XXX_Unmarshal(b []byte) error { @@ -1273,7 +1320,7 @@ func (m *NodeSetting) Reset() { *m = NodeSetting{} } func (m *NodeSetting) String() string { return proto.CompactTextString(m) } func (*NodeSetting) ProtoMessage() {} func (*NodeSetting) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{10} + return fileDescriptor_d789ea45d40d7a6b, []int{11} } func (m *NodeSetting) XXX_Unmarshal(b []byte) error { @@ -1377,7 +1424,7 @@ func (m *NodeLoginInfo) Reset() { *m = NodeLoginInfo{} } func (m *NodeLoginInfo) String() string { return proto.CompactTextString(m) } func (*NodeLoginInfo) ProtoMessage() {} func (*NodeLoginInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{11} + return fileDescriptor_d789ea45d40d7a6b, []int{12} } func (m *NodeLoginInfo) XXX_Unmarshal(b []byte) error { @@ -1441,7 +1488,7 @@ func (m *ClusterCredential) Reset() { *m = ClusterCredential{} } func (m *ClusterCredential) String() string { return proto.CompactTextString(m) } func (*ClusterCredential) ProtoMessage() {} func (*ClusterCredential) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{12} + return fileDescriptor_d789ea45d40d7a6b, []int{13} } func (m *ClusterCredential) XXX_Unmarshal(b []byte) error { @@ -1565,7 +1612,7 @@ func (m *Namespace) Reset() { *m = Namespace{} } func (m *Namespace) String() string { return proto.CompactTextString(m) } func (*Namespace) ProtoMessage() {} func (*Namespace) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{13} + return fileDescriptor_d789ea45d40d7a6b, []int{14} } func (m *Namespace) XXX_Unmarshal(b []byte) error { @@ -1668,7 +1715,7 @@ func (m *ResourceQuota) Reset() { *m = ResourceQuota{} } func (m *ResourceQuota) String() string { return proto.CompactTextString(m) } func (*ResourceQuota) ProtoMessage() {} func (*ResourceQuota) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{14} + return fileDescriptor_d789ea45d40d7a6b, []int{15} } func (m *ResourceQuota) XXX_Unmarshal(b []byte) error { @@ -1772,7 +1819,7 @@ func (m *Credential) Reset() { *m = Credential{} } func (m *Credential) String() string { return proto.CompactTextString(m) } func (*Credential) ProtoMessage() {} func (*Credential) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{15} + return fileDescriptor_d789ea45d40d7a6b, []int{16} } func (m *Credential) XXX_Unmarshal(b []byte) error { @@ -1870,7 +1917,7 @@ func (m *BKOpsPlugin) Reset() { *m = BKOpsPlugin{} } func (m *BKOpsPlugin) String() string { return proto.CompactTextString(m) } func (*BKOpsPlugin) ProtoMessage() {} func (*BKOpsPlugin) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{16} + return fileDescriptor_d789ea45d40d7a6b, []int{17} } func (m *BKOpsPlugin) XXX_Unmarshal(b []byte) error { @@ -1932,7 +1979,7 @@ func (m *Action) Reset() { *m = Action{} } func (m *Action) String() string { return proto.CompactTextString(m) } func (*Action) ProtoMessage() {} func (*Action) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{17} + return fileDescriptor_d789ea45d40d7a6b, []int{18} } func (m *Action) XXX_Unmarshal(b []byte) error { @@ -1993,7 +2040,7 @@ func (m *ClusterMgr) Reset() { *m = ClusterMgr{} } func (m *ClusterMgr) String() string { return proto.CompactTextString(m) } func (*ClusterMgr) ProtoMessage() {} func (*ClusterMgr) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{18} + return fileDescriptor_d789ea45d40d7a6b, []int{19} } func (m *ClusterMgr) XXX_Unmarshal(b []byte) error { @@ -2089,7 +2136,7 @@ func (m *ManagedConfig) Reset() { *m = ManagedConfig{} } func (m *ManagedConfig) String() string { return proto.CompactTextString(m) } func (*ManagedConfig) ProtoMessage() {} func (*ManagedConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{19} + return fileDescriptor_d789ea45d40d7a6b, []int{20} } func (m *ManagedConfig) XXX_Unmarshal(b []byte) error { @@ -2142,7 +2189,7 @@ func (m *NodeGroupMgr) Reset() { *m = NodeGroupMgr{} } func (m *NodeGroupMgr) String() string { return proto.CompactTextString(m) } func (*NodeGroupMgr) ProtoMessage() {} func (*NodeGroupMgr) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{20} + return fileDescriptor_d789ea45d40d7a6b, []int{21} } func (m *NodeGroupMgr) XXX_Unmarshal(b []byte) error { @@ -2233,7 +2280,7 @@ func (m *OSInfo) Reset() { *m = OSInfo{} } func (m *OSInfo) String() string { return proto.CompactTextString(m) } func (*OSInfo) ProtoMessage() {} func (*OSInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{21} + return fileDescriptor_d789ea45d40d7a6b, []int{22} } func (m *OSInfo) XXX_Unmarshal(b []byte) error { @@ -2302,7 +2349,7 @@ func (m *Account) Reset() { *m = Account{} } func (m *Account) String() string { return proto.CompactTextString(m) } func (*Account) ProtoMessage() {} func (*Account) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{22} + return fileDescriptor_d789ea45d40d7a6b, []int{23} } func (m *Account) XXX_Unmarshal(b []byte) error { @@ -2408,7 +2455,7 @@ func (m *CloudAccount) Reset() { *m = CloudAccount{} } func (m *CloudAccount) String() string { return proto.CompactTextString(m) } func (*CloudAccount) ProtoMessage() {} func (*CloudAccount) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{23} + return fileDescriptor_d789ea45d40d7a6b, []int{24} } func (m *CloudAccount) XXX_Unmarshal(b []byte) error { @@ -2523,7 +2570,7 @@ func (m *CreateCloudAccountRequest) Reset() { *m = CreateCloudAccountReq func (m *CreateCloudAccountRequest) String() string { return proto.CompactTextString(m) } func (*CreateCloudAccountRequest) ProtoMessage() {} func (*CreateCloudAccountRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{24} + return fileDescriptor_d789ea45d40d7a6b, []int{25} } func (m *CreateCloudAccountRequest) XXX_Unmarshal(b []byte) error { @@ -2607,7 +2654,7 @@ func (m *CreateCloudAccountResponse) Reset() { *m = CreateCloudAccountRe func (m *CreateCloudAccountResponse) String() string { return proto.CompactTextString(m) } func (*CreateCloudAccountResponse) ProtoMessage() {} func (*CreateCloudAccountResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{25} + return fileDescriptor_d789ea45d40d7a6b, []int{26} } func (m *CreateCloudAccountResponse) XXX_Unmarshal(b []byte) error { @@ -2674,7 +2721,7 @@ func (m *UpdateCloudAccountRequest) Reset() { *m = UpdateCloudAccountReq func (m *UpdateCloudAccountRequest) String() string { return proto.CompactTextString(m) } func (*UpdateCloudAccountRequest) ProtoMessage() {} func (*UpdateCloudAccountRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{26} + return fileDescriptor_d789ea45d40d7a6b, []int{27} } func (m *UpdateCloudAccountRequest) XXX_Unmarshal(b []byte) error { @@ -2764,7 +2811,7 @@ func (m *UpdateCloudAccountResponse) Reset() { *m = UpdateCloudAccountRe func (m *UpdateCloudAccountResponse) String() string { return proto.CompactTextString(m) } func (*UpdateCloudAccountResponse) ProtoMessage() {} func (*UpdateCloudAccountResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{27} + return fileDescriptor_d789ea45d40d7a6b, []int{28} } func (m *UpdateCloudAccountResponse) XXX_Unmarshal(b []byte) error { @@ -2820,7 +2867,7 @@ func (m *MigrateCloudAccountRequest) Reset() { *m = MigrateCloudAccountR func (m *MigrateCloudAccountRequest) String() string { return proto.CompactTextString(m) } func (*MigrateCloudAccountRequest) ProtoMessage() {} func (*MigrateCloudAccountRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{28} + return fileDescriptor_d789ea45d40d7a6b, []int{29} } func (m *MigrateCloudAccountRequest) XXX_Unmarshal(b []byte) error { @@ -2882,7 +2929,7 @@ func (m *OriginEncrypt) Reset() { *m = OriginEncrypt{} } func (m *OriginEncrypt) String() string { return proto.CompactTextString(m) } func (*OriginEncrypt) ProtoMessage() {} func (*OriginEncrypt) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{29} + return fileDescriptor_d789ea45d40d7a6b, []int{30} } func (m *OriginEncrypt) XXX_Unmarshal(b []byte) error { @@ -2937,7 +2984,7 @@ func (m *MigrateCloudAccountResponse) Reset() { *m = MigrateCloudAccount func (m *MigrateCloudAccountResponse) String() string { return proto.CompactTextString(m) } func (*MigrateCloudAccountResponse) ProtoMessage() {} func (*MigrateCloudAccountResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{30} + return fileDescriptor_d789ea45d40d7a6b, []int{31} } func (m *MigrateCloudAccountResponse) XXX_Unmarshal(b []byte) error { @@ -2991,7 +3038,7 @@ func (m *DeleteCloudAccountRequest) Reset() { *m = DeleteCloudAccountReq func (m *DeleteCloudAccountRequest) String() string { return proto.CompactTextString(m) } func (*DeleteCloudAccountRequest) ProtoMessage() {} func (*DeleteCloudAccountRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{31} + return fileDescriptor_d789ea45d40d7a6b, []int{32} } func (m *DeleteCloudAccountRequest) XXX_Unmarshal(b []byte) error { @@ -3039,7 +3086,7 @@ func (m *DeleteCloudAccountResponse) Reset() { *m = DeleteCloudAccountRe func (m *DeleteCloudAccountResponse) String() string { return proto.CompactTextString(m) } func (*DeleteCloudAccountResponse) ProtoMessage() {} func (*DeleteCloudAccountResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{32} + return fileDescriptor_d789ea45d40d7a6b, []int{33} } func (m *DeleteCloudAccountResponse) XXX_Unmarshal(b []byte) error { @@ -3094,7 +3141,7 @@ func (m *ListCloudAccountPermRequest) Reset() { *m = ListCloudAccountPer func (m *ListCloudAccountPermRequest) String() string { return proto.CompactTextString(m) } func (*ListCloudAccountPermRequest) ProtoMessage() {} func (*ListCloudAccountPermRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{33} + return fileDescriptor_d789ea45d40d7a6b, []int{34} } func (m *ListCloudAccountPermRequest) XXX_Unmarshal(b []byte) error { @@ -3150,7 +3197,7 @@ func (m *ListCloudAccountPermResponse) Reset() { *m = ListCloudAccountPe func (m *ListCloudAccountPermResponse) String() string { return proto.CompactTextString(m) } func (*ListCloudAccountPermResponse) ProtoMessage() {} func (*ListCloudAccountPermResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{34} + return fileDescriptor_d789ea45d40d7a6b, []int{35} } func (m *ListCloudAccountPermResponse) XXX_Unmarshal(b []byte) error { @@ -3213,7 +3260,7 @@ func (m *ListCloudAccountRequest) Reset() { *m = ListCloudAccountRequest func (m *ListCloudAccountRequest) String() string { return proto.CompactTextString(m) } func (*ListCloudAccountRequest) ProtoMessage() {} func (*ListCloudAccountRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{35} + return fileDescriptor_d789ea45d40d7a6b, []int{36} } func (m *ListCloudAccountRequest) XXX_Unmarshal(b []byte) error { @@ -3275,7 +3322,7 @@ func (m *VerifyCloudAccountRequest) Reset() { *m = VerifyCloudAccountReq func (m *VerifyCloudAccountRequest) String() string { return proto.CompactTextString(m) } func (*VerifyCloudAccountRequest) ProtoMessage() {} func (*VerifyCloudAccountRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{36} + return fileDescriptor_d789ea45d40d7a6b, []int{37} } func (m *VerifyCloudAccountRequest) XXX_Unmarshal(b []byte) error { @@ -3330,7 +3377,7 @@ func (m *VerifyCloudAccountResponse) Reset() { *m = VerifyCloudAccountRe func (m *VerifyCloudAccountResponse) String() string { return proto.CompactTextString(m) } func (*VerifyCloudAccountResponse) ProtoMessage() {} func (*VerifyCloudAccountResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{37} + return fileDescriptor_d789ea45d40d7a6b, []int{38} } func (m *VerifyCloudAccountResponse) XXX_Unmarshal(b []byte) error { @@ -3385,7 +3432,7 @@ func (m *CloudAccountInfo) Reset() { *m = CloudAccountInfo{} } func (m *CloudAccountInfo) String() string { return proto.CompactTextString(m) } func (*CloudAccountInfo) ProtoMessage() {} func (*CloudAccountInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{38} + return fileDescriptor_d789ea45d40d7a6b, []int{39} } func (m *CloudAccountInfo) XXX_Unmarshal(b []byte) error { @@ -3435,7 +3482,7 @@ func (m *ListCloudAccountResponse) Reset() { *m = ListCloudAccountRespon func (m *ListCloudAccountResponse) String() string { return proto.CompactTextString(m) } func (*ListCloudAccountResponse) ProtoMessage() {} func (*ListCloudAccountResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{39} + return fileDescriptor_d789ea45d40d7a6b, []int{40} } func (m *ListCloudAccountResponse) XXX_Unmarshal(b []byte) error { @@ -3518,7 +3565,7 @@ func (m *CloudVPC) Reset() { *m = CloudVPC{} } func (m *CloudVPC) String() string { return proto.CompactTextString(m) } func (*CloudVPC) ProtoMessage() {} func (*CloudVPC) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{40} + return fileDescriptor_d789ea45d40d7a6b, []int{41} } func (m *CloudVPC) XXX_Unmarshal(b []byte) error { @@ -3664,7 +3711,7 @@ func (m *Cidr) Reset() { *m = Cidr{} } func (m *Cidr) String() string { return proto.CompactTextString(m) } func (*Cidr) ProtoMessage() {} func (*Cidr) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{41} + return fileDescriptor_d789ea45d40d7a6b, []int{42} } func (m *Cidr) XXX_Unmarshal(b []byte) error { @@ -3718,7 +3765,7 @@ func (m *CidrState) Reset() { *m = CidrState{} } func (m *CidrState) String() string { return proto.CompactTextString(m) } func (*CidrState) ProtoMessage() {} func (*CidrState) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{42} + return fileDescriptor_d789ea45d40d7a6b, []int{43} } func (m *CidrState) XXX_Unmarshal(b []byte) error { @@ -3776,7 +3823,7 @@ func (m *CreateCloudVPCRequest) Reset() { *m = CreateCloudVPCRequest{} } func (m *CreateCloudVPCRequest) String() string { return proto.CompactTextString(m) } func (*CreateCloudVPCRequest) ProtoMessage() {} func (*CreateCloudVPCRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{43} + return fileDescriptor_d789ea45d40d7a6b, []int{44} } func (m *CreateCloudVPCRequest) XXX_Unmarshal(b []byte) error { @@ -3901,7 +3948,7 @@ func (m *CreateCloudVPCResponse) Reset() { *m = CreateCloudVPCResponse{} func (m *CreateCloudVPCResponse) String() string { return proto.CompactTextString(m) } func (*CreateCloudVPCResponse) ProtoMessage() {} func (*CreateCloudVPCResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{44} + return fileDescriptor_d789ea45d40d7a6b, []int{45} } func (m *CreateCloudVPCResponse) XXX_Unmarshal(b []byte) error { @@ -3965,7 +4012,7 @@ func (m *UpdateCloudVPCRequest) Reset() { *m = UpdateCloudVPCRequest{} } func (m *UpdateCloudVPCRequest) String() string { return proto.CompactTextString(m) } func (*UpdateCloudVPCRequest) ProtoMessage() {} func (*UpdateCloudVPCRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{45} + return fileDescriptor_d789ea45d40d7a6b, []int{46} } func (m *UpdateCloudVPCRequest) XXX_Unmarshal(b []byte) error { @@ -4084,7 +4131,7 @@ func (m *UpdateCloudVPCResponse) Reset() { *m = UpdateCloudVPCResponse{} func (m *UpdateCloudVPCResponse) String() string { return proto.CompactTextString(m) } func (*UpdateCloudVPCResponse) ProtoMessage() {} func (*UpdateCloudVPCResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{46} + return fileDescriptor_d789ea45d40d7a6b, []int{47} } func (m *UpdateCloudVPCResponse) XXX_Unmarshal(b []byte) error { @@ -4145,7 +4192,7 @@ func (m *DeleteCloudVPCRequest) Reset() { *m = DeleteCloudVPCRequest{} } func (m *DeleteCloudVPCRequest) String() string { return proto.CompactTextString(m) } func (*DeleteCloudVPCRequest) ProtoMessage() {} func (*DeleteCloudVPCRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{47} + return fileDescriptor_d789ea45d40d7a6b, []int{48} } func (m *DeleteCloudVPCRequest) XXX_Unmarshal(b []byte) error { @@ -4194,7 +4241,7 @@ func (m *DeleteCloudVPCResponse) Reset() { *m = DeleteCloudVPCResponse{} func (m *DeleteCloudVPCResponse) String() string { return proto.CompactTextString(m) } func (*DeleteCloudVPCResponse) ProtoMessage() {} func (*DeleteCloudVPCResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{48} + return fileDescriptor_d789ea45d40d7a6b, []int{49} } func (m *DeleteCloudVPCResponse) XXX_Unmarshal(b []byte) error { @@ -4258,7 +4305,7 @@ func (m *ListCloudVPCRequest) Reset() { *m = ListCloudVPCRequest{} } func (m *ListCloudVPCRequest) String() string { return proto.CompactTextString(m) } func (*ListCloudVPCRequest) ProtoMessage() {} func (*ListCloudVPCRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{49} + return fileDescriptor_d789ea45d40d7a6b, []int{50} } func (m *ListCloudVPCRequest) XXX_Unmarshal(b []byte) error { @@ -4328,7 +4375,7 @@ func (m *ListCloudVPCResponse) Reset() { *m = ListCloudVPCResponse{} } func (m *ListCloudVPCResponse) String() string { return proto.CompactTextString(m) } func (*ListCloudVPCResponse) ProtoMessage() {} func (*ListCloudVPCResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{50} + return fileDescriptor_d789ea45d40d7a6b, []int{51} } func (m *ListCloudVPCResponse) XXX_Unmarshal(b []byte) error { @@ -4401,7 +4448,7 @@ func (m *CloudVPCResp) Reset() { *m = CloudVPCResp{} } func (m *CloudVPCResp) String() string { return proto.CompactTextString(m) } func (*CloudVPCResp) ProtoMessage() {} func (*CloudVPCResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{51} + return fileDescriptor_d789ea45d40d7a6b, []int{52} } func (m *CloudVPCResp) XXX_Unmarshal(b []byte) error { @@ -4526,7 +4573,7 @@ func (m *CidrDetailInfo) Reset() { *m = CidrDetailInfo{} } func (m *CidrDetailInfo) String() string { return proto.CompactTextString(m) } func (*CidrDetailInfo) ProtoMessage() {} func (*CidrDetailInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{52} + return fileDescriptor_d789ea45d40d7a6b, []int{53} } func (m *CidrDetailInfo) XXX_Unmarshal(b []byte) error { @@ -4579,7 +4626,7 @@ func (m *ListCloudRegionsRequest) Reset() { *m = ListCloudRegionsRequest func (m *ListCloudRegionsRequest) String() string { return proto.CompactTextString(m) } func (*ListCloudRegionsRequest) ProtoMessage() {} func (*ListCloudRegionsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{53} + return fileDescriptor_d789ea45d40d7a6b, []int{54} } func (m *ListCloudRegionsRequest) XXX_Unmarshal(b []byte) error { @@ -4621,7 +4668,7 @@ func (m *ListCloudRegionsResponse) Reset() { *m = ListCloudRegionsRespon func (m *ListCloudRegionsResponse) String() string { return proto.CompactTextString(m) } func (*ListCloudRegionsResponse) ProtoMessage() {} func (*ListCloudRegionsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{54} + return fileDescriptor_d789ea45d40d7a6b, []int{55} } func (m *ListCloudRegionsResponse) XXX_Unmarshal(b []byte) error { @@ -4683,7 +4730,7 @@ func (m *CloudRegion) Reset() { *m = CloudRegion{} } func (m *CloudRegion) String() string { return proto.CompactTextString(m) } func (*CloudRegion) ProtoMessage() {} func (*CloudRegion) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{55} + return fileDescriptor_d789ea45d40d7a6b, []int{56} } func (m *CloudRegion) XXX_Unmarshal(b []byte) error { @@ -4736,7 +4783,7 @@ func (m *GetVPCCidrRequest) Reset() { *m = GetVPCCidrRequest{} } func (m *GetVPCCidrRequest) String() string { return proto.CompactTextString(m) } func (*GetVPCCidrRequest) ProtoMessage() {} func (*GetVPCCidrRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{56} + return fileDescriptor_d789ea45d40d7a6b, []int{57} } func (m *GetVPCCidrRequest) XXX_Unmarshal(b []byte) error { @@ -4778,7 +4825,7 @@ func (m *GetVPCCidrResponse) Reset() { *m = GetVPCCidrResponse{} } func (m *GetVPCCidrResponse) String() string { return proto.CompactTextString(m) } func (*GetVPCCidrResponse) ProtoMessage() {} func (*GetVPCCidrResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{57} + return fileDescriptor_d789ea45d40d7a6b, []int{58} } func (m *GetVPCCidrResponse) XXX_Unmarshal(b []byte) error { @@ -4841,7 +4888,7 @@ func (m *VPCCidr) Reset() { *m = VPCCidr{} } func (m *VPCCidr) String() string { return proto.CompactTextString(m) } func (*VPCCidr) ProtoMessage() {} func (*VPCCidr) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{58} + return fileDescriptor_d789ea45d40d7a6b, []int{59} } func (m *VPCCidr) XXX_Unmarshal(b []byte) error { @@ -4921,7 +4968,7 @@ func (m *Cloud) Reset() { *m = Cloud{} } func (m *Cloud) String() string { return proto.CompactTextString(m) } func (*Cloud) ProtoMessage() {} func (*Cloud) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{59} + return fileDescriptor_d789ea45d40d7a6b, []int{60} } func (m *Cloud) XXX_Unmarshal(b []byte) error { @@ -5108,7 +5155,7 @@ func (m *CloudConfigInfo) Reset() { *m = CloudConfigInfo{} } func (m *CloudConfigInfo) String() string { return proto.CompactTextString(m) } func (*CloudConfigInfo) ProtoMessage() {} func (*CloudConfigInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{60} + return fileDescriptor_d789ea45d40d7a6b, []int{61} } func (m *CloudConfigInfo) XXX_Unmarshal(b []byte) error { @@ -5204,7 +5251,7 @@ func (m *CloudNetworkInfo) Reset() { *m = CloudNetworkInfo{} } func (m *CloudNetworkInfo) String() string { return proto.CompactTextString(m) } func (*CloudNetworkInfo) ProtoMessage() {} func (*CloudNetworkInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{61} + return fileDescriptor_d789ea45d40d7a6b, []int{62} } func (m *CloudNetworkInfo) XXX_Unmarshal(b []byte) error { @@ -5293,7 +5340,7 @@ func (m *EnvCidrStep) Reset() { *m = EnvCidrStep{} } func (m *EnvCidrStep) String() string { return proto.CompactTextString(m) } func (*EnvCidrStep) ProtoMessage() {} func (*EnvCidrStep) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{62} + return fileDescriptor_d789ea45d40d7a6b, []int{63} } func (m *EnvCidrStep) XXX_Unmarshal(b []byte) error { @@ -5341,7 +5388,7 @@ func (m *NetworkMode) Reset() { *m = NetworkMode{} } func (m *NetworkMode) String() string { return proto.CompactTextString(m) } func (*NetworkMode) ProtoMessage() {} func (*NetworkMode) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{63} + return fileDescriptor_d789ea45d40d7a6b, []int{64} } func (m *NetworkMode) XXX_Unmarshal(b []byte) error { @@ -5418,7 +5465,7 @@ func (m *NodeGroup) Reset() { *m = NodeGroup{} } func (m *NodeGroup) String() string { return proto.CompactTextString(m) } func (*NodeGroup) ProtoMessage() {} func (*NodeGroup) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{64} + return fileDescriptor_d789ea45d40d7a6b, []int{65} } func (m *NodeGroup) XXX_Unmarshal(b []byte) error { @@ -5619,7 +5666,7 @@ func (m *CloudArea) Reset() { *m = CloudArea{} } func (m *CloudArea) String() string { return proto.CompactTextString(m) } func (*CloudArea) ProtoMessage() {} func (*CloudArea) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{65} + return fileDescriptor_d789ea45d40d7a6b, []int{66} } func (m *CloudArea) XXX_Unmarshal(b []byte) error { @@ -5681,7 +5728,7 @@ func (m *AutoScalingGroup) Reset() { *m = AutoScalingGroup{} } func (m *AutoScalingGroup) String() string { return proto.CompactTextString(m) } func (*AutoScalingGroup) ProtoMessage() {} func (*AutoScalingGroup) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{66} + return fileDescriptor_d789ea45d40d7a6b, []int{67} } func (m *AutoScalingGroup) XXX_Unmarshal(b []byte) error { @@ -5828,7 +5875,7 @@ func (m *TimeRange) Reset() { *m = TimeRange{} } func (m *TimeRange) String() string { return proto.CompactTextString(m) } func (*TimeRange) ProtoMessage() {} func (*TimeRange) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{67} + return fileDescriptor_d789ea45d40d7a6b, []int{68} } func (m *TimeRange) XXX_Unmarshal(b []byte) error { @@ -5890,7 +5937,7 @@ func (m *DataDisk) Reset() { *m = DataDisk{} } func (m *DataDisk) String() string { return proto.CompactTextString(m) } func (*DataDisk) ProtoMessage() {} func (*DataDisk) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{68} + return fileDescriptor_d789ea45d40d7a6b, []int{69} } func (m *DataDisk) XXX_Unmarshal(b []byte) error { @@ -5944,7 +5991,7 @@ func (m *CloudDataDisk) Reset() { *m = CloudDataDisk{} } func (m *CloudDataDisk) String() string { return proto.CompactTextString(m) } func (*CloudDataDisk) ProtoMessage() {} func (*CloudDataDisk) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{69} + return fileDescriptor_d789ea45d40d7a6b, []int{70} } func (m *CloudDataDisk) XXX_Unmarshal(b []byte) error { @@ -6014,6 +6061,7 @@ type InternetAccessible struct { PublicIPAssigned bool `protobuf:"varint,3,opt,name=publicIPAssigned,proto3" json:"publicIPAssigned,omitempty"` BandwidthPackageId string `protobuf:"bytes,4,opt,name=bandwidthPackageId,proto3" json:"bandwidthPackageId,omitempty"` PublicIP string `protobuf:"bytes,5,opt,name=publicIP,proto3" json:"publicIP,omitempty"` + PublicAccessCidrs []string `protobuf:"bytes,6,rep,name=publicAccessCidrs,proto3" json:"publicAccessCidrs,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-" bson:"-"` XXX_unrecognized []byte `json:"-" bson:"-"` XXX_sizecache int32 `json:"-" bson:"-"` @@ -6023,7 +6071,7 @@ func (m *InternetAccessible) Reset() { *m = InternetAccessible{} } func (m *InternetAccessible) String() string { return proto.CompactTextString(m) } func (*InternetAccessible) ProtoMessage() {} func (*InternetAccessible) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{70} + return fileDescriptor_d789ea45d40d7a6b, []int{71} } func (m *InternetAccessible) XXX_Unmarshal(b []byte) error { @@ -6079,6 +6127,13 @@ func (m *InternetAccessible) GetPublicIP() string { return "" } +func (m *InternetAccessible) GetPublicAccessCidrs() []string { + if m != nil { + return m.PublicAccessCidrs + } + return nil +} + // InstanceTemplateConfig instance config info type InstanceTemplateConfig struct { Region string `protobuf:"bytes,1,opt,name=region,proto3" json:"region,omitempty"` @@ -6114,7 +6169,7 @@ func (m *InstanceTemplateConfig) Reset() { *m = InstanceTemplateConfig{} func (m *InstanceTemplateConfig) String() string { return proto.CompactTextString(m) } func (*InstanceTemplateConfig) ProtoMessage() {} func (*InstanceTemplateConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{71} + return fileDescriptor_d789ea45d40d7a6b, []int{72} } func (m *InstanceTemplateConfig) XXX_Unmarshal(b []byte) error { @@ -6315,7 +6370,7 @@ func (m *InstanceChargePrepaid) Reset() { *m = InstanceChargePrepaid{} } func (m *InstanceChargePrepaid) String() string { return proto.CompactTextString(m) } func (*InstanceChargePrepaid) ProtoMessage() {} func (*InstanceChargePrepaid) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{72} + return fileDescriptor_d789ea45d40d7a6b, []int{73} } func (m *InstanceChargePrepaid) XXX_Unmarshal(b []byte) error { @@ -6382,7 +6437,7 @@ func (m *LaunchConfiguration) Reset() { *m = LaunchConfiguration{} } func (m *LaunchConfiguration) String() string { return proto.CompactTextString(m) } func (*LaunchConfiguration) ProtoMessage() {} func (*LaunchConfiguration) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{73} + return fileDescriptor_d789ea45d40d7a6b, []int{74} } func (m *LaunchConfiguration) XXX_Unmarshal(b []byte) error { @@ -6563,7 +6618,7 @@ func (m *KeyInfo) Reset() { *m = KeyInfo{} } func (m *KeyInfo) String() string { return proto.CompactTextString(m) } func (*KeyInfo) ProtoMessage() {} func (*KeyInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{74} + return fileDescriptor_d789ea45d40d7a6b, []int{75} } func (m *KeyInfo) XXX_Unmarshal(b []byte) error { @@ -6619,7 +6674,7 @@ func (m *ImageInfo) Reset() { *m = ImageInfo{} } func (m *ImageInfo) String() string { return proto.CompactTextString(m) } func (*ImageInfo) ProtoMessage() {} func (*ImageInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{75} + return fileDescriptor_d789ea45d40d7a6b, []int{76} } func (m *ImageInfo) XXX_Unmarshal(b []byte) error { @@ -6711,7 +6766,7 @@ func (m *ClusterAutoScalingOption) Reset() { *m = ClusterAutoScalingOpti func (m *ClusterAutoScalingOption) String() string { return proto.CompactTextString(m) } func (*ClusterAutoScalingOption) ProtoMessage() {} func (*ClusterAutoScalingOption) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{76} + return fileDescriptor_d789ea45d40d7a6b, []int{77} } func (m *ClusterAutoScalingOption) XXX_Unmarshal(b []byte) error { @@ -7019,7 +7074,7 @@ func (m *WebhookMode) Reset() { *m = WebhookMode{} } func (m *WebhookMode) String() string { return proto.CompactTextString(m) } func (*WebhookMode) ProtoMessage() {} func (*WebhookMode) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{77} + return fileDescriptor_d789ea45d40d7a6b, []int{78} } func (m *WebhookMode) XXX_Unmarshal(b []byte) error { @@ -7075,7 +7130,7 @@ func (m *Taint) Reset() { *m = Taint{} } func (m *Taint) String() string { return proto.CompactTextString(m) } func (*Taint) ProtoMessage() {} func (*Taint) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{78} + return fileDescriptor_d789ea45d40d7a6b, []int{79} } func (m *Taint) XXX_Unmarshal(b []byte) error { @@ -7159,7 +7214,7 @@ func (m *NodeTemplate) Reset() { *m = NodeTemplate{} } func (m *NodeTemplate) String() string { return proto.CompactTextString(m) } func (*NodeTemplate) ProtoMessage() {} func (*NodeTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{79} + return fileDescriptor_d789ea45d40d7a6b, []int{80} } func (m *NodeTemplate) XXX_Unmarshal(b []byte) error { @@ -7411,7 +7466,7 @@ func (m *ClusterModule) Reset() { *m = ClusterModule{} } func (m *ClusterModule) String() string { return proto.CompactTextString(m) } func (*ClusterModule) ProtoMessage() {} func (*ClusterModule) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{80} + return fileDescriptor_d789ea45d40d7a6b, []int{81} } func (m *ClusterModule) XXX_Unmarshal(b []byte) error { @@ -7477,7 +7532,7 @@ func (m *ModuleInfo) Reset() { *m = ModuleInfo{} } func (m *ModuleInfo) String() string { return proto.CompactTextString(m) } func (*ModuleInfo) ProtoMessage() {} func (*ModuleInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{81} + return fileDescriptor_d789ea45d40d7a6b, []int{82} } func (m *ModuleInfo) XXX_Unmarshal(b []byte) error { @@ -7553,7 +7608,7 @@ func (m *RunTimeInfo) Reset() { *m = RunTimeInfo{} } func (m *RunTimeInfo) String() string { return proto.CompactTextString(m) } func (*RunTimeInfo) ProtoMessage() {} func (*RunTimeInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{82} + return fileDescriptor_d789ea45d40d7a6b, []int{83} } func (m *RunTimeInfo) XXX_Unmarshal(b []byte) error { @@ -7619,7 +7674,7 @@ func (m *CreateNodeTemplateRequest) Reset() { *m = CreateNodeTemplateReq func (m *CreateNodeTemplateRequest) String() string { return proto.CompactTextString(m) } func (*CreateNodeTemplateRequest) ProtoMessage() {} func (*CreateNodeTemplateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{83} + return fileDescriptor_d789ea45d40d7a6b, []int{84} } func (m *CreateNodeTemplateRequest) XXX_Unmarshal(b []byte) error { @@ -7801,7 +7856,7 @@ func (m *CreateNodeTemplateResponse) Reset() { *m = CreateNodeTemplateRe func (m *CreateNodeTemplateResponse) String() string { return proto.CompactTextString(m) } func (*CreateNodeTemplateResponse) ProtoMessage() {} func (*CreateNodeTemplateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{84} + return fileDescriptor_d789ea45d40d7a6b, []int{85} } func (m *CreateNodeTemplateResponse) XXX_Unmarshal(b []byte) error { @@ -7882,7 +7937,7 @@ func (m *UpdateNodeTemplateRequest) Reset() { *m = UpdateNodeTemplateReq func (m *UpdateNodeTemplateRequest) String() string { return proto.CompactTextString(m) } func (*UpdateNodeTemplateRequest) ProtoMessage() {} func (*UpdateNodeTemplateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{85} + return fileDescriptor_d789ea45d40d7a6b, []int{86} } func (m *UpdateNodeTemplateRequest) XXX_Unmarshal(b []byte) error { @@ -8071,7 +8126,7 @@ func (m *UpdateNodeTemplateResponse) Reset() { *m = UpdateNodeTemplateRe func (m *UpdateNodeTemplateResponse) String() string { return proto.CompactTextString(m) } func (*UpdateNodeTemplateResponse) ProtoMessage() {} func (*UpdateNodeTemplateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{86} + return fileDescriptor_d789ea45d40d7a6b, []int{87} } func (m *UpdateNodeTemplateResponse) XXX_Unmarshal(b []byte) error { @@ -8132,7 +8187,7 @@ func (m *DeleteNodeTemplateRequest) Reset() { *m = DeleteNodeTemplateReq func (m *DeleteNodeTemplateRequest) String() string { return proto.CompactTextString(m) } func (*DeleteNodeTemplateRequest) ProtoMessage() {} func (*DeleteNodeTemplateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{87} + return fileDescriptor_d789ea45d40d7a6b, []int{88} } func (m *DeleteNodeTemplateRequest) XXX_Unmarshal(b []byte) error { @@ -8181,7 +8236,7 @@ func (m *DeleteNodeTemplateResponse) Reset() { *m = DeleteNodeTemplateRe func (m *DeleteNodeTemplateResponse) String() string { return proto.CompactTextString(m) } func (*DeleteNodeTemplateResponse) ProtoMessage() {} func (*DeleteNodeTemplateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{88} + return fileDescriptor_d789ea45d40d7a6b, []int{89} } func (m *DeleteNodeTemplateResponse) XXX_Unmarshal(b []byte) error { @@ -8242,7 +8297,7 @@ func (m *GetNodeTemplateRequest) Reset() { *m = GetNodeTemplateRequest{} func (m *GetNodeTemplateRequest) String() string { return proto.CompactTextString(m) } func (*GetNodeTemplateRequest) ProtoMessage() {} func (*GetNodeTemplateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{89} + return fileDescriptor_d789ea45d40d7a6b, []int{90} } func (m *GetNodeTemplateRequest) XXX_Unmarshal(b []byte) error { @@ -8292,7 +8347,7 @@ func (m *GetNodeTemplateResponse) Reset() { *m = GetNodeTemplateResponse func (m *GetNodeTemplateResponse) String() string { return proto.CompactTextString(m) } func (*GetNodeTemplateResponse) ProtoMessage() {} func (*GetNodeTemplateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{90} + return fileDescriptor_d789ea45d40d7a6b, []int{91} } func (m *GetNodeTemplateResponse) XXX_Unmarshal(b []byte) error { @@ -8360,7 +8415,7 @@ func (m *ListNodeTemplateRequest) Reset() { *m = ListNodeTemplateRequest func (m *ListNodeTemplateRequest) String() string { return proto.CompactTextString(m) } func (*ListNodeTemplateRequest) ProtoMessage() {} func (*ListNodeTemplateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{91} + return fileDescriptor_d789ea45d40d7a6b, []int{92} } func (m *ListNodeTemplateRequest) XXX_Unmarshal(b []byte) error { @@ -8409,7 +8464,7 @@ func (m *ListNodeTemplateResponse) Reset() { *m = ListNodeTemplateRespon func (m *ListNodeTemplateResponse) String() string { return proto.CompactTextString(m) } func (*ListNodeTemplateResponse) ProtoMessage() {} func (*ListNodeTemplateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{92} + return fileDescriptor_d789ea45d40d7a6b, []int{93} } func (m *ListNodeTemplateResponse) XXX_Unmarshal(b []byte) error { @@ -8490,7 +8545,7 @@ func (m *Project) Reset() { *m = Project{} } func (m *Project) String() string { return proto.CompactTextString(m) } func (*Project) ProtoMessage() {} func (*Project) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{93} + return fileDescriptor_d789ea45d40d7a6b, []int{94} } func (m *Project) XXX_Unmarshal(b []byte) error { @@ -8695,7 +8750,7 @@ func (m *Task) Reset() { *m = Task{} } func (m *Task) String() string { return proto.CompactTextString(m) } func (*Task) ProtoMessage() {} func (*Task) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{94} + return fileDescriptor_d789ea45d40d7a6b, []int{95} } func (m *Task) XXX_Unmarshal(b []byte) error { @@ -8882,7 +8937,7 @@ func (m *Step) Reset() { *m = Step{} } func (m *Step) String() string { return proto.CompactTextString(m) } func (*Step) ProtoMessage() {} func (*Step) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{95} + return fileDescriptor_d789ea45d40d7a6b, []int{96} } func (m *Step) XXX_Unmarshal(b []byte) error { @@ -9032,7 +9087,7 @@ func (m *TkeCidr) Reset() { *m = TkeCidr{} } func (m *TkeCidr) String() string { return proto.CompactTextString(m) } func (*TkeCidr) ProtoMessage() {} func (*TkeCidr) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{96} + return fileDescriptor_d789ea45d40d7a6b, []int{97} } func (m *TkeCidr) XXX_Unmarshal(b []byte) error { @@ -9116,7 +9171,7 @@ func (m *TkeCidrCount) Reset() { *m = TkeCidrCount{} } func (m *TkeCidrCount) String() string { return proto.CompactTextString(m) } func (*TkeCidrCount) ProtoMessage() {} func (*TkeCidrCount) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{97} + return fileDescriptor_d789ea45d40d7a6b, []int{98} } func (m *TkeCidrCount) XXX_Unmarshal(b []byte) error { @@ -9219,7 +9274,7 @@ func (m *CreateClusterReq) Reset() { *m = CreateClusterReq{} } func (m *CreateClusterReq) String() string { return proto.CompactTextString(m) } func (*CreateClusterReq) ProtoMessage() {} func (*CreateClusterReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{98} + return fileDescriptor_d789ea45d40d7a6b, []int{99} } func (m *CreateClusterReq) XXX_Unmarshal(b []byte) error { @@ -9557,7 +9612,7 @@ func (m *CreateClusterResp) Reset() { *m = CreateClusterResp{} } func (m *CreateClusterResp) String() string { return proto.CompactTextString(m) } func (*CreateClusterResp) ProtoMessage() {} func (*CreateClusterResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{99} + return fileDescriptor_d789ea45d40d7a6b, []int{100} } func (m *CreateClusterResp) XXX_Unmarshal(b []byte) error { @@ -9633,7 +9688,7 @@ func (m *AddSubnetToClusterReq) Reset() { *m = AddSubnetToClusterReq{} } func (m *AddSubnetToClusterReq) String() string { return proto.CompactTextString(m) } func (*AddSubnetToClusterReq) ProtoMessage() {} func (*AddSubnetToClusterReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{100} + return fileDescriptor_d789ea45d40d7a6b, []int{101} } func (m *AddSubnetToClusterReq) XXX_Unmarshal(b []byte) error { @@ -9689,7 +9744,7 @@ func (m *AddSubnetToClusterResp) Reset() { *m = AddSubnetToClusterResp{} func (m *AddSubnetToClusterResp) String() string { return proto.CompactTextString(m) } func (*AddSubnetToClusterResp) ProtoMessage() {} func (*AddSubnetToClusterResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{101} + return fileDescriptor_d789ea45d40d7a6b, []int{102} } func (m *AddSubnetToClusterResp) XXX_Unmarshal(b []byte) error { @@ -9754,7 +9809,7 @@ func (m *SwitchClusterUnderlayNetworkReq) Reset() { *m = SwitchClusterUn func (m *SwitchClusterUnderlayNetworkReq) String() string { return proto.CompactTextString(m) } func (*SwitchClusterUnderlayNetworkReq) ProtoMessage() {} func (*SwitchClusterUnderlayNetworkReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{102} + return fileDescriptor_d789ea45d40d7a6b, []int{103} } func (m *SwitchClusterUnderlayNetworkReq) XXX_Unmarshal(b []byte) error { @@ -9833,7 +9888,7 @@ func (m *SwitchClusterUnderlayNetworkResp) Reset() { *m = SwitchClusterU func (m *SwitchClusterUnderlayNetworkResp) String() string { return proto.CompactTextString(m) } func (*SwitchClusterUnderlayNetworkResp) ProtoMessage() {} func (*SwitchClusterUnderlayNetworkResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{103} + return fileDescriptor_d789ea45d40d7a6b, []int{104} } func (m *SwitchClusterUnderlayNetworkResp) XXX_Unmarshal(b []byte) error { @@ -9932,7 +9987,7 @@ func (m *CreateVirtualClusterReq) Reset() { *m = CreateVirtualClusterReq func (m *CreateVirtualClusterReq) String() string { return proto.CompactTextString(m) } func (*CreateVirtualClusterReq) ProtoMessage() {} func (*CreateVirtualClusterReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{104} + return fileDescriptor_d789ea45d40d7a6b, []int{105} } func (m *CreateVirtualClusterReq) XXX_Unmarshal(b []byte) error { @@ -10142,7 +10197,7 @@ func (m *NamespaceInfo) Reset() { *m = NamespaceInfo{} } func (m *NamespaceInfo) String() string { return proto.CompactTextString(m) } func (*NamespaceInfo) ProtoMessage() {} func (*NamespaceInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{105} + return fileDescriptor_d789ea45d40d7a6b, []int{106} } func (m *NamespaceInfo) XXX_Unmarshal(b []byte) error { @@ -10205,7 +10260,7 @@ func (m *NamespaceQuota) Reset() { *m = NamespaceQuota{} } func (m *NamespaceQuota) String() string { return proto.CompactTextString(m) } func (*NamespaceQuota) ProtoMessage() {} func (*NamespaceQuota) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{106} + return fileDescriptor_d789ea45d40d7a6b, []int{107} } func (m *NamespaceQuota) XXX_Unmarshal(b []byte) error { @@ -10270,7 +10325,7 @@ func (m *CreateVirtualClusterResp) Reset() { *m = CreateVirtualClusterRe func (m *CreateVirtualClusterResp) String() string { return proto.CompactTextString(m) } func (*CreateVirtualClusterResp) ProtoMessage() {} func (*CreateVirtualClusterResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{107} + return fileDescriptor_d789ea45d40d7a6b, []int{108} } func (m *CreateVirtualClusterResp) XXX_Unmarshal(b []byte) error { @@ -10333,6 +10388,455 @@ func (m *CreateVirtualClusterResp) GetWebAnnotations() *WebAnnotationsV2 { return nil } +type RecommendNodeGroupConfReq struct { + CloudID string `protobuf:"bytes,1,opt,name=cloudID,proto3" json:"cloudID,omitempty"` + AccountID string `protobuf:"bytes,2,opt,name=accountID,proto3" json:"accountID,omitempty"` + Region string `protobuf:"bytes,3,opt,name=region,proto3" json:"region,omitempty"` + ResourceGroupName string `protobuf:"bytes,4,opt,name=resourceGroupName,proto3" json:"resourceGroupName,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-" bson:"-"` + XXX_unrecognized []byte `json:"-" bson:"-"` + XXX_sizecache int32 `json:"-" bson:"-"` +} + +func (m *RecommendNodeGroupConfReq) Reset() { *m = RecommendNodeGroupConfReq{} } +func (m *RecommendNodeGroupConfReq) String() string { return proto.CompactTextString(m) } +func (*RecommendNodeGroupConfReq) ProtoMessage() {} +func (*RecommendNodeGroupConfReq) Descriptor() ([]byte, []int) { + return fileDescriptor_d789ea45d40d7a6b, []int{109} +} + +func (m *RecommendNodeGroupConfReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RecommendNodeGroupConfReq.Unmarshal(m, b) +} +func (m *RecommendNodeGroupConfReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RecommendNodeGroupConfReq.Marshal(b, m, deterministic) +} +func (m *RecommendNodeGroupConfReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_RecommendNodeGroupConfReq.Merge(m, src) +} +func (m *RecommendNodeGroupConfReq) XXX_Size() int { + return xxx_messageInfo_RecommendNodeGroupConfReq.Size(m) +} +func (m *RecommendNodeGroupConfReq) XXX_DiscardUnknown() { + xxx_messageInfo_RecommendNodeGroupConfReq.DiscardUnknown(m) +} + +var xxx_messageInfo_RecommendNodeGroupConfReq proto.InternalMessageInfo + +func (m *RecommendNodeGroupConfReq) GetCloudID() string { + if m != nil { + return m.CloudID + } + return "" +} + +func (m *RecommendNodeGroupConfReq) GetAccountID() string { + if m != nil { + return m.AccountID + } + return "" +} + +func (m *RecommendNodeGroupConfReq) GetRegion() string { + if m != nil { + return m.Region + } + return "" +} + +func (m *RecommendNodeGroupConfReq) GetResourceGroupName() string { + if m != nil { + return m.ResourceGroupName + } + return "" +} + +type InstanceProfile struct { + NodeOS string `protobuf:"bytes,1,opt,name=nodeOS,proto3" json:"nodeOS,omitempty"` + InstanceType string `protobuf:"bytes,2,opt,name=instanceType,proto3" json:"instanceType,omitempty"` + InstanceChargeType string `protobuf:"bytes,3,opt,name=instanceChargeType,proto3" json:"instanceChargeType,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-" bson:"-"` + XXX_unrecognized []byte `json:"-" bson:"-"` + XXX_sizecache int32 `json:"-" bson:"-"` +} + +func (m *InstanceProfile) Reset() { *m = InstanceProfile{} } +func (m *InstanceProfile) String() string { return proto.CompactTextString(m) } +func (*InstanceProfile) ProtoMessage() {} +func (*InstanceProfile) Descriptor() ([]byte, []int) { + return fileDescriptor_d789ea45d40d7a6b, []int{110} +} + +func (m *InstanceProfile) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_InstanceProfile.Unmarshal(m, b) +} +func (m *InstanceProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_InstanceProfile.Marshal(b, m, deterministic) +} +func (m *InstanceProfile) XXX_Merge(src proto.Message) { + xxx_messageInfo_InstanceProfile.Merge(m, src) +} +func (m *InstanceProfile) XXX_Size() int { + return xxx_messageInfo_InstanceProfile.Size(m) +} +func (m *InstanceProfile) XXX_DiscardUnknown() { + xxx_messageInfo_InstanceProfile.DiscardUnknown(m) +} + +var xxx_messageInfo_InstanceProfile proto.InternalMessageInfo + +func (m *InstanceProfile) GetNodeOS() string { + if m != nil { + return m.NodeOS + } + return "" +} + +func (m *InstanceProfile) GetInstanceType() string { + if m != nil { + return m.InstanceType + } + return "" +} + +func (m *InstanceProfile) GetInstanceChargeType() string { + if m != nil { + return m.InstanceChargeType + } + return "" +} + +type HardwareProfile struct { + CPU uint32 `protobuf:"varint,1,opt,name=CPU,proto3" json:"CPU,omitempty"` + Mem uint32 `protobuf:"varint,2,opt,name=Mem,proto3" json:"Mem,omitempty"` + GPU uint32 `protobuf:"varint,3,opt,name=GPU,proto3" json:"GPU,omitempty"` + SystemDisk *DataDisk `protobuf:"bytes,4,opt,name=systemDisk,proto3" json:"systemDisk,omitempty"` + DataDisks []*DataDisk `protobuf:"bytes,5,rep,name=dataDisks,proto3" json:"dataDisks,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-" bson:"-"` + XXX_unrecognized []byte `json:"-" bson:"-"` + XXX_sizecache int32 `json:"-" bson:"-"` +} + +func (m *HardwareProfile) Reset() { *m = HardwareProfile{} } +func (m *HardwareProfile) String() string { return proto.CompactTextString(m) } +func (*HardwareProfile) ProtoMessage() {} +func (*HardwareProfile) Descriptor() ([]byte, []int) { + return fileDescriptor_d789ea45d40d7a6b, []int{111} +} + +func (m *HardwareProfile) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_HardwareProfile.Unmarshal(m, b) +} +func (m *HardwareProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_HardwareProfile.Marshal(b, m, deterministic) +} +func (m *HardwareProfile) XXX_Merge(src proto.Message) { + xxx_messageInfo_HardwareProfile.Merge(m, src) +} +func (m *HardwareProfile) XXX_Size() int { + return xxx_messageInfo_HardwareProfile.Size(m) +} +func (m *HardwareProfile) XXX_DiscardUnknown() { + xxx_messageInfo_HardwareProfile.DiscardUnknown(m) +} + +var xxx_messageInfo_HardwareProfile proto.InternalMessageInfo + +func (m *HardwareProfile) GetCPU() uint32 { + if m != nil { + return m.CPU + } + return 0 +} + +func (m *HardwareProfile) GetMem() uint32 { + if m != nil { + return m.Mem + } + return 0 +} + +func (m *HardwareProfile) GetGPU() uint32 { + if m != nil { + return m.GPU + } + return 0 +} + +func (m *HardwareProfile) GetSystemDisk() *DataDisk { + if m != nil { + return m.SystemDisk + } + return nil +} + +func (m *HardwareProfile) GetDataDisks() []*DataDisk { + if m != nil { + return m.DataDisks + } + return nil +} + +type NetworkProfile struct { + SubnetIDs []string `protobuf:"bytes,1,rep,name=subnetIDs,proto3" json:"subnetIDs,omitempty"` + PublicIPAssigned bool `protobuf:"varint,2,opt,name=publicIPAssigned,proto3" json:"publicIPAssigned,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-" bson:"-"` + XXX_unrecognized []byte `json:"-" bson:"-"` + XXX_sizecache int32 `json:"-" bson:"-"` +} + +func (m *NetworkProfile) Reset() { *m = NetworkProfile{} } +func (m *NetworkProfile) String() string { return proto.CompactTextString(m) } +func (*NetworkProfile) ProtoMessage() {} +func (*NetworkProfile) Descriptor() ([]byte, []int) { + return fileDescriptor_d789ea45d40d7a6b, []int{112} +} + +func (m *NetworkProfile) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_NetworkProfile.Unmarshal(m, b) +} +func (m *NetworkProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_NetworkProfile.Marshal(b, m, deterministic) +} +func (m *NetworkProfile) XXX_Merge(src proto.Message) { + xxx_messageInfo_NetworkProfile.Merge(m, src) +} +func (m *NetworkProfile) XXX_Size() int { + return xxx_messageInfo_NetworkProfile.Size(m) +} +func (m *NetworkProfile) XXX_DiscardUnknown() { + xxx_messageInfo_NetworkProfile.DiscardUnknown(m) +} + +var xxx_messageInfo_NetworkProfile proto.InternalMessageInfo + +func (m *NetworkProfile) GetSubnetIDs() []string { + if m != nil { + return m.SubnetIDs + } + return nil +} + +func (m *NetworkProfile) GetPublicIPAssigned() bool { + if m != nil { + return m.PublicIPAssigned + } + return false +} + +type ScalingProfile struct { + MaxSize uint32 `protobuf:"varint,1,opt,name=maxSize,proto3" json:"maxSize,omitempty"` + DesiredSize uint32 `protobuf:"varint,2,opt,name=desiredSize,proto3" json:"desiredSize,omitempty"` + ScalingMode string `protobuf:"bytes,3,opt,name=scalingMode,proto3" json:"scalingMode,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-" bson:"-"` + XXX_unrecognized []byte `json:"-" bson:"-"` + XXX_sizecache int32 `json:"-" bson:"-"` +} + +func (m *ScalingProfile) Reset() { *m = ScalingProfile{} } +func (m *ScalingProfile) String() string { return proto.CompactTextString(m) } +func (*ScalingProfile) ProtoMessage() {} +func (*ScalingProfile) Descriptor() ([]byte, []int) { + return fileDescriptor_d789ea45d40d7a6b, []int{113} +} + +func (m *ScalingProfile) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ScalingProfile.Unmarshal(m, b) +} +func (m *ScalingProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ScalingProfile.Marshal(b, m, deterministic) +} +func (m *ScalingProfile) XXX_Merge(src proto.Message) { + xxx_messageInfo_ScalingProfile.Merge(m, src) +} +func (m *ScalingProfile) XXX_Size() int { + return xxx_messageInfo_ScalingProfile.Size(m) +} +func (m *ScalingProfile) XXX_DiscardUnknown() { + xxx_messageInfo_ScalingProfile.DiscardUnknown(m) +} + +var xxx_messageInfo_ScalingProfile proto.InternalMessageInfo + +func (m *ScalingProfile) GetMaxSize() uint32 { + if m != nil { + return m.MaxSize + } + return 0 +} + +func (m *ScalingProfile) GetDesiredSize() uint32 { + if m != nil { + return m.DesiredSize + } + return 0 +} + +func (m *ScalingProfile) GetScalingMode() string { + if m != nil { + return m.ScalingMode + } + return "" +} + +type RecommendNodeGroupConf struct { + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + ServiceRoleName string `protobuf:"bytes,2,opt,name=serviceRoleName,proto3" json:"serviceRoleName,omitempty"` + InstanceProfile *InstanceProfile `protobuf:"bytes,3,opt,name=instanceProfile,proto3" json:"instanceProfile,omitempty"` + HardwareProfile *HardwareProfile `protobuf:"bytes,4,opt,name=hardwareProfile,proto3" json:"hardwareProfile,omitempty"` + NetworkProfile *NetworkProfile `protobuf:"bytes,5,opt,name=networkProfile,proto3" json:"networkProfile,omitempty"` + ScalingProfile *ScalingProfile `protobuf:"bytes,6,opt,name=scalingProfile,proto3" json:"scalingProfile,omitempty"` + Mode string `protobuf:"bytes,7,opt,name=mode,proto3" json:"mode,omitempty"` + Zones []string `protobuf:"bytes,8,rep,name=zones,proto3" json:"zones,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-" bson:"-"` + XXX_unrecognized []byte `json:"-" bson:"-"` + XXX_sizecache int32 `json:"-" bson:"-"` +} + +func (m *RecommendNodeGroupConf) Reset() { *m = RecommendNodeGroupConf{} } +func (m *RecommendNodeGroupConf) String() string { return proto.CompactTextString(m) } +func (*RecommendNodeGroupConf) ProtoMessage() {} +func (*RecommendNodeGroupConf) Descriptor() ([]byte, []int) { + return fileDescriptor_d789ea45d40d7a6b, []int{114} +} + +func (m *RecommendNodeGroupConf) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RecommendNodeGroupConf.Unmarshal(m, b) +} +func (m *RecommendNodeGroupConf) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RecommendNodeGroupConf.Marshal(b, m, deterministic) +} +func (m *RecommendNodeGroupConf) XXX_Merge(src proto.Message) { + xxx_messageInfo_RecommendNodeGroupConf.Merge(m, src) +} +func (m *RecommendNodeGroupConf) XXX_Size() int { + return xxx_messageInfo_RecommendNodeGroupConf.Size(m) +} +func (m *RecommendNodeGroupConf) XXX_DiscardUnknown() { + xxx_messageInfo_RecommendNodeGroupConf.DiscardUnknown(m) +} + +var xxx_messageInfo_RecommendNodeGroupConf proto.InternalMessageInfo + +func (m *RecommendNodeGroupConf) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *RecommendNodeGroupConf) GetServiceRoleName() string { + if m != nil { + return m.ServiceRoleName + } + return "" +} + +func (m *RecommendNodeGroupConf) GetInstanceProfile() *InstanceProfile { + if m != nil { + return m.InstanceProfile + } + return nil +} + +func (m *RecommendNodeGroupConf) GetHardwareProfile() *HardwareProfile { + if m != nil { + return m.HardwareProfile + } + return nil +} + +func (m *RecommendNodeGroupConf) GetNetworkProfile() *NetworkProfile { + if m != nil { + return m.NetworkProfile + } + return nil +} + +func (m *RecommendNodeGroupConf) GetScalingProfile() *ScalingProfile { + if m != nil { + return m.ScalingProfile + } + return nil +} + +func (m *RecommendNodeGroupConf) GetMode() string { + if m != nil { + return m.Mode + } + return "" +} + +func (m *RecommendNodeGroupConf) GetZones() []string { + if m != nil { + return m.Zones + } + return nil +} + +type RecommendNodeGroupConfResp struct { + Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + Result bool `protobuf:"varint,3,opt,name=result,proto3" json:"result,omitempty"` + Data []*RecommendNodeGroupConf `protobuf:"bytes,4,rep,name=data,proto3" json:"data,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-" bson:"-"` + XXX_unrecognized []byte `json:"-" bson:"-"` + XXX_sizecache int32 `json:"-" bson:"-"` +} + +func (m *RecommendNodeGroupConfResp) Reset() { *m = RecommendNodeGroupConfResp{} } +func (m *RecommendNodeGroupConfResp) String() string { return proto.CompactTextString(m) } +func (*RecommendNodeGroupConfResp) ProtoMessage() {} +func (*RecommendNodeGroupConfResp) Descriptor() ([]byte, []int) { + return fileDescriptor_d789ea45d40d7a6b, []int{115} +} + +func (m *RecommendNodeGroupConfResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RecommendNodeGroupConfResp.Unmarshal(m, b) +} +func (m *RecommendNodeGroupConfResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RecommendNodeGroupConfResp.Marshal(b, m, deterministic) +} +func (m *RecommendNodeGroupConfResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_RecommendNodeGroupConfResp.Merge(m, src) +} +func (m *RecommendNodeGroupConfResp) XXX_Size() int { + return xxx_messageInfo_RecommendNodeGroupConfResp.Size(m) +} +func (m *RecommendNodeGroupConfResp) XXX_DiscardUnknown() { + xxx_messageInfo_RecommendNodeGroupConfResp.DiscardUnknown(m) +} + +var xxx_messageInfo_RecommendNodeGroupConfResp proto.InternalMessageInfo + +func (m *RecommendNodeGroupConfResp) GetCode() uint32 { + if m != nil { + return m.Code + } + return 0 +} + +func (m *RecommendNodeGroupConfResp) GetMessage() string { + if m != nil { + return m.Message + } + return "" +} + +func (m *RecommendNodeGroupConfResp) GetResult() bool { + if m != nil { + return m.Result + } + return false +} + +func (m *RecommendNodeGroupConfResp) GetData() []*RecommendNodeGroupConf { + if m != nil { + return m.Data + } + return nil +} + type KubeConfigReq struct { KubeConfig string `protobuf:"bytes,1,opt,name=kubeConfig,proto3" json:"kubeConfig,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-" bson:"-"` @@ -10344,7 +10848,7 @@ func (m *KubeConfigReq) Reset() { *m = KubeConfigReq{} } func (m *KubeConfigReq) String() string { return proto.CompactTextString(m) } func (*KubeConfigReq) ProtoMessage() {} func (*KubeConfigReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{108} + return fileDescriptor_d789ea45d40d7a6b, []int{116} } func (m *KubeConfigReq) XXX_Unmarshal(b []byte) error { @@ -10388,7 +10892,7 @@ func (m *KubeConfigConnectReq) Reset() { *m = KubeConfigConnectReq{} } func (m *KubeConfigConnectReq) String() string { return proto.CompactTextString(m) } func (*KubeConfigConnectReq) ProtoMessage() {} func (*KubeConfigConnectReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{109} + return fileDescriptor_d789ea45d40d7a6b, []int{117} } func (m *KubeConfigConnectReq) XXX_Unmarshal(b []byte) error { @@ -10464,7 +10968,7 @@ func (m *KubeConfigResp) Reset() { *m = KubeConfigResp{} } func (m *KubeConfigResp) String() string { return proto.CompactTextString(m) } func (*KubeConfigResp) ProtoMessage() {} func (*KubeConfigResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{110} + return fileDescriptor_d789ea45d40d7a6b, []int{118} } func (m *KubeConfigResp) XXX_Unmarshal(b []byte) error { @@ -10519,7 +11023,7 @@ func (m *KubeConfigConnectResp) Reset() { *m = KubeConfigConnectResp{} } func (m *KubeConfigConnectResp) String() string { return proto.CompactTextString(m) } func (*KubeConfigConnectResp) ProtoMessage() {} func (*KubeConfigConnectResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{111} + return fileDescriptor_d789ea45d40d7a6b, []int{119} } func (m *KubeConfigConnectResp) XXX_Unmarshal(b []byte) error { @@ -10576,7 +11080,7 @@ func (m *ImportCloudMode) Reset() { *m = ImportCloudMode{} } func (m *ImportCloudMode) String() string { return proto.CompactTextString(m) } func (*ImportCloudMode) ProtoMessage() {} func (*ImportCloudMode) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{112} + return fileDescriptor_d789ea45d40d7a6b, []int{120} } func (m *ImportCloudMode) XXX_Unmarshal(b []byte) error { @@ -10665,7 +11169,7 @@ func (m *ImportClusterReq) Reset() { *m = ImportClusterReq{} } func (m *ImportClusterReq) String() string { return proto.CompactTextString(m) } func (*ImportClusterReq) ProtoMessage() {} func (*ImportClusterReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{113} + return fileDescriptor_d789ea45d40d7a6b, []int{121} } func (m *ImportClusterReq) XXX_Unmarshal(b []byte) error { @@ -10861,7 +11365,7 @@ func (m *ImportClusterResp) Reset() { *m = ImportClusterResp{} } func (m *ImportClusterResp) String() string { return proto.CompactTextString(m) } func (*ImportClusterResp) ProtoMessage() {} func (*ImportClusterResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{114} + return fileDescriptor_d789ea45d40d7a6b, []int{122} } func (m *ImportClusterResp) XXX_Unmarshal(b []byte) error { @@ -10923,7 +11427,7 @@ func (m *DeleteVirtualClusterReq) Reset() { *m = DeleteVirtualClusterReq func (m *DeleteVirtualClusterReq) String() string { return proto.CompactTextString(m) } func (*DeleteVirtualClusterReq) ProtoMessage() {} func (*DeleteVirtualClusterReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{115} + return fileDescriptor_d789ea45d40d7a6b, []int{123} } func (m *DeleteVirtualClusterReq) XXX_Unmarshal(b []byte) error { @@ -10981,7 +11485,7 @@ func (m *DeleteVirtualClusterResp) Reset() { *m = DeleteVirtualClusterRe func (m *DeleteVirtualClusterResp) String() string { return proto.CompactTextString(m) } func (*DeleteVirtualClusterResp) ProtoMessage() {} func (*DeleteVirtualClusterResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{116} + return fileDescriptor_d789ea45d40d7a6b, []int{124} } func (m *DeleteVirtualClusterResp) XXX_Unmarshal(b []byte) error { @@ -11057,7 +11561,7 @@ func (m *UpdateVirtualClusterQuotaReq) Reset() { *m = UpdateVirtualClust func (m *UpdateVirtualClusterQuotaReq) String() string { return proto.CompactTextString(m) } func (*UpdateVirtualClusterQuotaReq) ProtoMessage() {} func (*UpdateVirtualClusterQuotaReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{117} + return fileDescriptor_d789ea45d40d7a6b, []int{125} } func (m *UpdateVirtualClusterQuotaReq) XXX_Unmarshal(b []byte) error { @@ -11113,7 +11617,7 @@ func (m *UpdateVirtualClusterQuotaResp) Reset() { *m = UpdateVirtualClus func (m *UpdateVirtualClusterQuotaResp) String() string { return proto.CompactTextString(m) } func (*UpdateVirtualClusterQuotaResp) ProtoMessage() {} func (*UpdateVirtualClusterQuotaResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{118} + return fileDescriptor_d789ea45d40d7a6b, []int{126} } func (m *UpdateVirtualClusterQuotaResp) XXX_Unmarshal(b []byte) error { @@ -11178,7 +11682,7 @@ func (m *DeleteClusterReq) Reset() { *m = DeleteClusterReq{} } func (m *DeleteClusterReq) String() string { return proto.CompactTextString(m) } func (*DeleteClusterReq) ProtoMessage() {} func (*DeleteClusterReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{119} + return fileDescriptor_d789ea45d40d7a6b, []int{127} } func (m *DeleteClusterReq) XXX_Unmarshal(b []byte) error { @@ -11257,7 +11761,7 @@ func (m *DeleteClusterResp) Reset() { *m = DeleteClusterResp{} } func (m *DeleteClusterResp) String() string { return proto.CompactTextString(m) } func (*DeleteClusterResp) ProtoMessage() {} func (*DeleteClusterResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{120} + return fileDescriptor_d789ea45d40d7a6b, []int{128} } func (m *DeleteClusterResp) XXX_Unmarshal(b []byte) error { @@ -11368,7 +11872,7 @@ func (m *UpdateClusterReq) Reset() { *m = UpdateClusterReq{} } func (m *UpdateClusterReq) String() string { return proto.CompactTextString(m) } func (*UpdateClusterReq) ProtoMessage() {} func (*UpdateClusterReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{121} + return fileDescriptor_d789ea45d40d7a6b, []int{129} } func (m *UpdateClusterReq) XXX_Unmarshal(b []byte) error { @@ -11670,7 +12174,7 @@ func (m *UpdateClusterResp) Reset() { *m = UpdateClusterResp{} } func (m *UpdateClusterResp) String() string { return proto.CompactTextString(m) } func (*UpdateClusterResp) ProtoMessage() {} func (*UpdateClusterResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{122} + return fileDescriptor_d789ea45d40d7a6b, []int{130} } func (m *UpdateClusterResp) XXX_Unmarshal(b []byte) error { @@ -11738,7 +12242,7 @@ func (m *RetryCreateClusterReq) Reset() { *m = RetryCreateClusterReq{} } func (m *RetryCreateClusterReq) String() string { return proto.CompactTextString(m) } func (*RetryCreateClusterReq) ProtoMessage() {} func (*RetryCreateClusterReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{123} + return fileDescriptor_d789ea45d40d7a6b, []int{131} } func (m *RetryCreateClusterReq) XXX_Unmarshal(b []byte) error { @@ -11788,7 +12292,7 @@ func (m *RetryCreateClusterResp) Reset() { *m = RetryCreateClusterResp{} func (m *RetryCreateClusterResp) String() string { return proto.CompactTextString(m) } func (*RetryCreateClusterResp) ProtoMessage() {} func (*RetryCreateClusterResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{124} + return fileDescriptor_d789ea45d40d7a6b, []int{132} } func (m *RetryCreateClusterResp) XXX_Unmarshal(b []byte) error { @@ -11856,7 +12360,7 @@ func (m *GetClusterReq) Reset() { *m = GetClusterReq{} } func (m *GetClusterReq) String() string { return proto.CompactTextString(m) } func (*GetClusterReq) ProtoMessage() {} func (*GetClusterReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{125} + return fileDescriptor_d789ea45d40d7a6b, []int{133} } func (m *GetClusterReq) XXX_Unmarshal(b []byte) error { @@ -11907,7 +12411,7 @@ func (m *GetClusterResp) Reset() { *m = GetClusterResp{} } func (m *GetClusterResp) String() string { return proto.CompactTextString(m) } func (*GetClusterResp) ProtoMessage() {} func (*GetClusterResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{126} + return fileDescriptor_d789ea45d40d7a6b, []int{134} } func (m *GetClusterResp) XXX_Unmarshal(b []byte) error { @@ -11981,7 +12485,7 @@ func (m *ExtraClusterInfo) Reset() { *m = ExtraClusterInfo{} } func (m *ExtraClusterInfo) String() string { return proto.CompactTextString(m) } func (*ExtraClusterInfo) ProtoMessage() {} func (*ExtraClusterInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{127} + return fileDescriptor_d789ea45d40d7a6b, []int{135} } func (m *ExtraClusterInfo) XXX_Unmarshal(b []byte) error { @@ -12020,7 +12524,7 @@ func (m *CheckNodesRequest) Reset() { *m = CheckNodesRequest{} } func (m *CheckNodesRequest) String() string { return proto.CompactTextString(m) } func (*CheckNodesRequest) ProtoMessage() {} func (*CheckNodesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{128} + return fileDescriptor_d789ea45d40d7a6b, []int{136} } func (m *CheckNodesRequest) XXX_Unmarshal(b []byte) error { @@ -12062,7 +12566,7 @@ func (m *CheckNodesResponse) Reset() { *m = CheckNodesResponse{} } func (m *CheckNodesResponse) String() string { return proto.CompactTextString(m) } func (*CheckNodesResponse) ProtoMessage() {} func (*CheckNodesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{129} + return fileDescriptor_d789ea45d40d7a6b, []int{137} } func (m *CheckNodesResponse) XXX_Unmarshal(b []byte) error { @@ -12124,7 +12628,7 @@ func (m *NodeResult) Reset() { *m = NodeResult{} } func (m *NodeResult) String() string { return proto.CompactTextString(m) } func (*NodeResult) ProtoMessage() {} func (*NodeResult) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{130} + return fileDescriptor_d789ea45d40d7a6b, []int{138} } func (m *NodeResult) XXX_Unmarshal(b []byte) error { @@ -12179,7 +12683,7 @@ func (m *UnCordonNodeRequest) Reset() { *m = UnCordonNodeRequest{} } func (m *UnCordonNodeRequest) String() string { return proto.CompactTextString(m) } func (*UnCordonNodeRequest) ProtoMessage() {} func (*UnCordonNodeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{131} + return fileDescriptor_d789ea45d40d7a6b, []int{139} } func (m *UnCordonNodeRequest) XXX_Unmarshal(b []byte) error { @@ -12235,7 +12739,7 @@ func (m *UnCordonNodeResponse) Reset() { *m = UnCordonNodeResponse{} } func (m *UnCordonNodeResponse) String() string { return proto.CompactTextString(m) } func (*UnCordonNodeResponse) ProtoMessage() {} func (*UnCordonNodeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{132} + return fileDescriptor_d789ea45d40d7a6b, []int{140} } func (m *UnCordonNodeResponse) XXX_Unmarshal(b []byte) error { @@ -12297,7 +12801,7 @@ func (m *CordonNodeRequest) Reset() { *m = CordonNodeRequest{} } func (m *CordonNodeRequest) String() string { return proto.CompactTextString(m) } func (*CordonNodeRequest) ProtoMessage() {} func (*CordonNodeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{133} + return fileDescriptor_d789ea45d40d7a6b, []int{141} } func (m *CordonNodeRequest) XXX_Unmarshal(b []byte) error { @@ -12353,7 +12857,7 @@ func (m *CordonNodeResponse) Reset() { *m = CordonNodeResponse{} } func (m *CordonNodeResponse) String() string { return proto.CompactTextString(m) } func (*CordonNodeResponse) ProtoMessage() {} func (*CordonNodeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{134} + return fileDescriptor_d789ea45d40d7a6b, []int{142} } func (m *CordonNodeResponse) XXX_Unmarshal(b []byte) error { @@ -12417,7 +12921,7 @@ func (m *UpdateNodeRequest) Reset() { *m = UpdateNodeRequest{} } func (m *UpdateNodeRequest) String() string { return proto.CompactTextString(m) } func (*UpdateNodeRequest) ProtoMessage() {} func (*UpdateNodeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{135} + return fileDescriptor_d789ea45d40d7a6b, []int{143} } func (m *UpdateNodeRequest) XXX_Unmarshal(b []byte) error { @@ -12487,7 +12991,7 @@ func (m *UpdateNodeResponse) Reset() { *m = UpdateNodeResponse{} } func (m *UpdateNodeResponse) String() string { return proto.CompactTextString(m) } func (*UpdateNodeResponse) ProtoMessage() {} func (*UpdateNodeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{136} + return fileDescriptor_d789ea45d40d7a6b, []int{144} } func (m *UpdateNodeResponse) XXX_Unmarshal(b []byte) error { @@ -12548,7 +13052,7 @@ func (m *NodeStatus) Reset() { *m = NodeStatus{} } func (m *NodeStatus) String() string { return proto.CompactTextString(m) } func (*NodeStatus) ProtoMessage() {} func (*NodeStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{137} + return fileDescriptor_d789ea45d40d7a6b, []int{145} } func (m *NodeStatus) XXX_Unmarshal(b []byte) error { @@ -12596,7 +13100,7 @@ func (m *UpdateClusterModuleRequest) Reset() { *m = UpdateClusterModuleR func (m *UpdateClusterModuleRequest) String() string { return proto.CompactTextString(m) } func (*UpdateClusterModuleRequest) ProtoMessage() {} func (*UpdateClusterModuleRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{138} + return fileDescriptor_d789ea45d40d7a6b, []int{146} } func (m *UpdateClusterModuleRequest) XXX_Unmarshal(b []byte) error { @@ -12652,7 +13156,7 @@ func (m *UpdateClusterModuleResponse) Reset() { *m = UpdateClusterModule func (m *UpdateClusterModuleResponse) String() string { return proto.CompactTextString(m) } func (*UpdateClusterModuleResponse) ProtoMessage() {} func (*UpdateClusterModuleResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{139} + return fileDescriptor_d789ea45d40d7a6b, []int{147} } func (m *UpdateClusterModuleResponse) XXX_Unmarshal(b []byte) error { @@ -12712,7 +13216,7 @@ func (m *RecordNodeInfoRequest) Reset() { *m = RecordNodeInfoRequest{} } func (m *RecordNodeInfoRequest) String() string { return proto.CompactTextString(m) } func (*RecordNodeInfoRequest) ProtoMessage() {} func (*RecordNodeInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{140} + return fileDescriptor_d789ea45d40d7a6b, []int{148} } func (m *RecordNodeInfoRequest) XXX_Unmarshal(b []byte) error { @@ -12752,7 +13256,7 @@ func (m *GetNodeRequest) Reset() { *m = GetNodeRequest{} } func (m *GetNodeRequest) String() string { return proto.CompactTextString(m) } func (*GetNodeRequest) ProtoMessage() {} func (*GetNodeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{141} + return fileDescriptor_d789ea45d40d7a6b, []int{149} } func (m *GetNodeRequest) XXX_Unmarshal(b []byte) error { @@ -12801,7 +13305,7 @@ func (m *GetNodeResponse) Reset() { *m = GetNodeResponse{} } func (m *GetNodeResponse) String() string { return proto.CompactTextString(m) } func (*GetNodeResponse) ProtoMessage() {} func (*GetNodeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{142} + return fileDescriptor_d789ea45d40d7a6b, []int{150} } func (m *GetNodeResponse) XXX_Unmarshal(b []byte) error { @@ -12861,7 +13365,7 @@ func (m *GetNodeInfoRequest) Reset() { *m = GetNodeInfoRequest{} } func (m *GetNodeInfoRequest) String() string { return proto.CompactTextString(m) } func (*GetNodeInfoRequest) ProtoMessage() {} func (*GetNodeInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{143} + return fileDescriptor_d789ea45d40d7a6b, []int{151} } func (m *GetNodeInfoRequest) XXX_Unmarshal(b []byte) error { @@ -12903,7 +13407,7 @@ func (m *GetNodeInfoResponse) Reset() { *m = GetNodeInfoResponse{} } func (m *GetNodeInfoResponse) String() string { return proto.CompactTextString(m) } func (*GetNodeInfoResponse) ProtoMessage() {} func (*GetNodeInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{144} + return fileDescriptor_d789ea45d40d7a6b, []int{152} } func (m *GetNodeInfoResponse) XXX_Unmarshal(b []byte) error { @@ -12966,7 +13470,7 @@ func (m *NodeConfig) Reset() { *m = NodeConfig{} } func (m *NodeConfig) String() string { return proto.CompactTextString(m) } func (*NodeConfig) ProtoMessage() {} func (*NodeConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{145} + return fileDescriptor_d789ea45d40d7a6b, []int{153} } func (m *NodeConfig) XXX_Unmarshal(b []byte) error { @@ -13038,7 +13542,7 @@ func (m *NodeInfo) Reset() { *m = NodeInfo{} } func (m *NodeInfo) String() string { return proto.CompactTextString(m) } func (*NodeInfo) ProtoMessage() {} func (*NodeInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{146} + return fileDescriptor_d789ea45d40d7a6b, []int{154} } func (m *NodeInfo) XXX_Unmarshal(b []byte) error { @@ -13161,7 +13665,7 @@ func (m *ListCommonClusterReq) Reset() { *m = ListCommonClusterReq{} } func (m *ListCommonClusterReq) String() string { return proto.CompactTextString(m) } func (*ListCommonClusterReq) ProtoMessage() {} func (*ListCommonClusterReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{147} + return fileDescriptor_d789ea45d40d7a6b, []int{155} } func (m *ListCommonClusterReq) XXX_Unmarshal(b []byte) error { @@ -13204,7 +13708,7 @@ func (m *ListCommonClusterResp) Reset() { *m = ListCommonClusterResp{} } func (m *ListCommonClusterResp) String() string { return proto.CompactTextString(m) } func (*ListCommonClusterResp) ProtoMessage() {} func (*ListCommonClusterResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{148} + return fileDescriptor_d789ea45d40d7a6b, []int{156} } func (m *ListCommonClusterResp) XXX_Unmarshal(b []byte) error { @@ -13275,7 +13779,7 @@ func (m *ListProjectClusterReq) Reset() { *m = ListProjectClusterReq{} } func (m *ListProjectClusterReq) String() string { return proto.CompactTextString(m) } func (*ListProjectClusterReq) ProtoMessage() {} func (*ListProjectClusterReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{149} + return fileDescriptor_d789ea45d40d7a6b, []int{157} } func (m *ListProjectClusterReq) XXX_Unmarshal(b []byte) error { @@ -13347,7 +13851,7 @@ func (m *ListProjectClusterResp) Reset() { *m = ListProjectClusterResp{} func (m *ListProjectClusterResp) String() string { return proto.CompactTextString(m) } func (*ListProjectClusterResp) ProtoMessage() {} func (*ListProjectClusterResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{150} + return fileDescriptor_d789ea45d40d7a6b, []int{158} } func (m *ListProjectClusterResp) XXX_Unmarshal(b []byte) error { @@ -13440,7 +13944,7 @@ func (m *ListClusterReq) Reset() { *m = ListClusterReq{} } func (m *ListClusterReq) String() string { return proto.CompactTextString(m) } func (*ListClusterReq) ProtoMessage() {} func (*ListClusterReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{151} + return fileDescriptor_d789ea45d40d7a6b, []int{159} } func (m *ListClusterReq) XXX_Unmarshal(b []byte) error { @@ -13617,7 +14121,7 @@ func (m *ListClusterResp) Reset() { *m = ListClusterResp{} } func (m *ListClusterResp) String() string { return proto.CompactTextString(m) } func (*ListClusterResp) ProtoMessage() {} func (*ListClusterResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{152} + return fileDescriptor_d789ea45d40d7a6b, []int{160} } func (m *ListClusterResp) XXX_Unmarshal(b []byte) error { @@ -13693,7 +14197,7 @@ func (m *ExtraInfo) Reset() { *m = ExtraInfo{} } func (m *ExtraInfo) String() string { return proto.CompactTextString(m) } func (*ExtraInfo) ProtoMessage() {} func (*ExtraInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{153} + return fileDescriptor_d789ea45d40d7a6b, []int{161} } func (m *ExtraInfo) XXX_Unmarshal(b []byte) error { @@ -13748,7 +14252,7 @@ func (m *WebAnnotations) Reset() { *m = WebAnnotations{} } func (m *WebAnnotations) String() string { return proto.CompactTextString(m) } func (*WebAnnotations) ProtoMessage() {} func (*WebAnnotations) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{154} + return fileDescriptor_d789ea45d40d7a6b, []int{162} } func (m *WebAnnotations) XXX_Unmarshal(b []byte) error { @@ -13787,7 +14291,7 @@ func (m *WebAnnotationsV2) Reset() { *m = WebAnnotationsV2{} } func (m *WebAnnotationsV2) String() string { return proto.CompactTextString(m) } func (*WebAnnotationsV2) ProtoMessage() {} func (*WebAnnotationsV2) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{155} + return fileDescriptor_d789ea45d40d7a6b, []int{163} } func (m *WebAnnotationsV2) XXX_Unmarshal(b []byte) error { @@ -13834,7 +14338,7 @@ func (m *ListNodesInClusterRequest) Reset() { *m = ListNodesInClusterReq func (m *ListNodesInClusterRequest) String() string { return proto.CompactTextString(m) } func (*ListNodesInClusterRequest) ProtoMessage() {} func (*ListNodesInClusterRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{156} + return fileDescriptor_d789ea45d40d7a6b, []int{164} } func (m *ListNodesInClusterRequest) XXX_Unmarshal(b []byte) error { @@ -13933,7 +14437,7 @@ func (m *ListNodesInClusterResponse) Reset() { *m = ListNodesInClusterRe func (m *ListNodesInClusterResponse) String() string { return proto.CompactTextString(m) } func (*ListNodesInClusterResponse) ProtoMessage() {} func (*ListNodesInClusterResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{157} + return fileDescriptor_d789ea45d40d7a6b, []int{165} } func (m *ListNodesInClusterResponse) XXX_Unmarshal(b []byte) error { @@ -14029,7 +14533,7 @@ func (m *ClusterNode) Reset() { *m = ClusterNode{} } func (m *ClusterNode) String() string { return proto.CompactTextString(m) } func (*ClusterNode) ProtoMessage() {} func (*ClusterNode) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{158} + return fileDescriptor_d789ea45d40d7a6b, []int{166} } func (m *ClusterNode) XXX_Unmarshal(b []byte) error { @@ -14271,7 +14775,7 @@ func (m *GetClustersMetaDataRequest) Reset() { *m = GetClustersMetaDataR func (m *GetClustersMetaDataRequest) String() string { return proto.CompactTextString(m) } func (*GetClustersMetaDataRequest) ProtoMessage() {} func (*GetClustersMetaDataRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{159} + return fileDescriptor_d789ea45d40d7a6b, []int{167} } func (m *GetClustersMetaDataRequest) XXX_Unmarshal(b []byte) error { @@ -14314,7 +14818,7 @@ func (m *GetClustersMetaDataResponse) Reset() { *m = GetClustersMetaData func (m *GetClustersMetaDataResponse) String() string { return proto.CompactTextString(m) } func (*GetClustersMetaDataResponse) ProtoMessage() {} func (*GetClustersMetaDataResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{160} + return fileDescriptor_d789ea45d40d7a6b, []int{168} } func (m *GetClustersMetaDataResponse) XXX_Unmarshal(b []byte) error { @@ -14382,7 +14886,7 @@ func (m *ClusterMeta) Reset() { *m = ClusterMeta{} } func (m *ClusterMeta) String() string { return proto.CompactTextString(m) } func (*ClusterMeta) ProtoMessage() {} func (*ClusterMeta) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{161} + return fileDescriptor_d789ea45d40d7a6b, []int{169} } func (m *ClusterMeta) XXX_Unmarshal(b []byte) error { @@ -14428,7 +14932,7 @@ func (m *ListMastersInClusterRequest) Reset() { *m = ListMastersInCluste func (m *ListMastersInClusterRequest) String() string { return proto.CompactTextString(m) } func (*ListMastersInClusterRequest) ProtoMessage() {} func (*ListMastersInClusterRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{162} + return fileDescriptor_d789ea45d40d7a6b, []int{170} } func (m *ListMastersInClusterRequest) XXX_Unmarshal(b []byte) error { @@ -14471,7 +14975,7 @@ func (m *ListMastersInClusterResponse) Reset() { *m = ListMastersInClust func (m *ListMastersInClusterResponse) String() string { return proto.CompactTextString(m) } func (*ListMastersInClusterResponse) ProtoMessage() {} func (*ListMastersInClusterResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{163} + return fileDescriptor_d789ea45d40d7a6b, []int{171} } func (m *ListMastersInClusterResponse) XXX_Unmarshal(b []byte) error { @@ -14538,7 +15042,7 @@ func (m *GetClusterCredentialReq) Reset() { *m = GetClusterCredentialReq func (m *GetClusterCredentialReq) String() string { return proto.CompactTextString(m) } func (*GetClusterCredentialReq) ProtoMessage() {} func (*GetClusterCredentialReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{164} + return fileDescriptor_d789ea45d40d7a6b, []int{172} } func (m *GetClusterCredentialReq) XXX_Unmarshal(b []byte) error { @@ -14580,7 +15084,7 @@ func (m *GetClusterCredentialResp) Reset() { *m = GetClusterCredentialRe func (m *GetClusterCredentialResp) String() string { return proto.CompactTextString(m) } func (*GetClusterCredentialResp) ProtoMessage() {} func (*GetClusterCredentialResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{165} + return fileDescriptor_d789ea45d40d7a6b, []int{173} } func (m *GetClusterCredentialResp) XXX_Unmarshal(b []byte) error { @@ -14648,7 +15152,7 @@ func (m *UpdateClusterCredentialReq) Reset() { *m = UpdateClusterCredent func (m *UpdateClusterCredentialReq) String() string { return proto.CompactTextString(m) } func (*UpdateClusterCredentialReq) ProtoMessage() {} func (*UpdateClusterCredentialReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{166} + return fileDescriptor_d789ea45d40d7a6b, []int{174} } func (m *UpdateClusterCredentialReq) XXX_Unmarshal(b []byte) error { @@ -14745,7 +15249,7 @@ func (m *UpdateClusterCredentialResp) Reset() { *m = UpdateClusterCreden func (m *UpdateClusterCredentialResp) String() string { return proto.CompactTextString(m) } func (*UpdateClusterCredentialResp) ProtoMessage() {} func (*UpdateClusterCredentialResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{167} + return fileDescriptor_d789ea45d40d7a6b, []int{175} } func (m *UpdateClusterCredentialResp) XXX_Unmarshal(b []byte) error { @@ -14798,7 +15302,7 @@ func (m *DeleteClusterCredentialReq) Reset() { *m = DeleteClusterCredent func (m *DeleteClusterCredentialReq) String() string { return proto.CompactTextString(m) } func (*DeleteClusterCredentialReq) ProtoMessage() {} func (*DeleteClusterCredentialReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{168} + return fileDescriptor_d789ea45d40d7a6b, []int{176} } func (m *DeleteClusterCredentialReq) XXX_Unmarshal(b []byte) error { @@ -14839,7 +15343,7 @@ func (m *DeleteClusterCredentialResp) Reset() { *m = DeleteClusterCreden func (m *DeleteClusterCredentialResp) String() string { return proto.CompactTextString(m) } func (*DeleteClusterCredentialResp) ProtoMessage() {} func (*DeleteClusterCredentialResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{169} + return fileDescriptor_d789ea45d40d7a6b, []int{177} } func (m *DeleteClusterCredentialResp) XXX_Unmarshal(b []byte) error { @@ -14897,7 +15401,7 @@ func (m *ListClusterCredentialReq) Reset() { *m = ListClusterCredentialR func (m *ListClusterCredentialReq) String() string { return proto.CompactTextString(m) } func (*ListClusterCredentialReq) ProtoMessage() {} func (*ListClusterCredentialReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{170} + return fileDescriptor_d789ea45d40d7a6b, []int{178} } func (m *ListClusterCredentialReq) XXX_Unmarshal(b []byte) error { @@ -14974,7 +15478,7 @@ func (m *ListClusterCredentialResp) Reset() { *m = ListClusterCredential func (m *ListClusterCredentialResp) String() string { return proto.CompactTextString(m) } func (*ListClusterCredentialResp) ProtoMessage() {} func (*ListClusterCredentialResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{171} + return fileDescriptor_d789ea45d40d7a6b, []int{179} } func (m *ListClusterCredentialResp) XXX_Unmarshal(b []byte) error { @@ -15033,7 +15537,7 @@ func (m *InitFederationClusterReq) Reset() { *m = InitFederationClusterR func (m *InitFederationClusterReq) String() string { return proto.CompactTextString(m) } func (*InitFederationClusterReq) ProtoMessage() {} func (*InitFederationClusterReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{172} + return fileDescriptor_d789ea45d40d7a6b, []int{180} } func (m *InitFederationClusterReq) XXX_Unmarshal(b []byte) error { @@ -15064,7 +15568,7 @@ func (m *InitFederationClusterResp) Reset() { *m = InitFederationCluster func (m *InitFederationClusterResp) String() string { return proto.CompactTextString(m) } func (*InitFederationClusterResp) ProtoMessage() {} func (*InitFederationClusterResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{173} + return fileDescriptor_d789ea45d40d7a6b, []int{181} } func (m *InitFederationClusterResp) XXX_Unmarshal(b []byte) error { @@ -15097,7 +15601,7 @@ func (m *AddFederatedClusterReq) Reset() { *m = AddFederatedClusterReq{} func (m *AddFederatedClusterReq) String() string { return proto.CompactTextString(m) } func (*AddFederatedClusterReq) ProtoMessage() {} func (*AddFederatedClusterReq) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{174} + return fileDescriptor_d789ea45d40d7a6b, []int{182} } func (m *AddFederatedClusterReq) XXX_Unmarshal(b []byte) error { @@ -15145,7 +15649,7 @@ func (m *AddFederatedClusterResp) Reset() { *m = AddFederatedClusterResp func (m *AddFederatedClusterResp) String() string { return proto.CompactTextString(m) } func (*AddFederatedClusterResp) ProtoMessage() {} func (*AddFederatedClusterResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{175} + return fileDescriptor_d789ea45d40d7a6b, []int{183} } func (m *AddFederatedClusterResp) XXX_Unmarshal(b []byte) error { @@ -15215,7 +15719,7 @@ func (m *CreateCloudRequest) Reset() { *m = CreateCloudRequest{} } func (m *CreateCloudRequest) String() string { return proto.CompactTextString(m) } func (*CreateCloudRequest) ProtoMessage() {} func (*CreateCloudRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{176} + return fileDescriptor_d789ea45d40d7a6b, []int{184} } func (m *CreateCloudRequest) XXX_Unmarshal(b []byte) error { @@ -15375,7 +15879,7 @@ func (m *CreateCloudResponse) Reset() { *m = CreateCloudResponse{} } func (m *CreateCloudResponse) String() string { return proto.CompactTextString(m) } func (*CreateCloudResponse) ProtoMessage() {} func (*CreateCloudResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{177} + return fileDescriptor_d789ea45d40d7a6b, []int{185} } func (m *CreateCloudResponse) XXX_Unmarshal(b []byte) error { @@ -15445,7 +15949,7 @@ func (m *UpdateCloudRequest) Reset() { *m = UpdateCloudRequest{} } func (m *UpdateCloudRequest) String() string { return proto.CompactTextString(m) } func (*UpdateCloudRequest) ProtoMessage() {} func (*UpdateCloudRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{178} + return fileDescriptor_d789ea45d40d7a6b, []int{186} } func (m *UpdateCloudRequest) XXX_Unmarshal(b []byte) error { @@ -15606,7 +16110,7 @@ func (m *UpdateCloudResponse) Reset() { *m = UpdateCloudResponse{} } func (m *UpdateCloudResponse) String() string { return proto.CompactTextString(m) } func (*UpdateCloudResponse) ProtoMessage() {} func (*UpdateCloudResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{179} + return fileDescriptor_d789ea45d40d7a6b, []int{187} } func (m *UpdateCloudResponse) XXX_Unmarshal(b []byte) error { @@ -15667,7 +16171,7 @@ func (m *DeleteCloudRequest) Reset() { *m = DeleteCloudRequest{} } func (m *DeleteCloudRequest) String() string { return proto.CompactTextString(m) } func (*DeleteCloudRequest) ProtoMessage() {} func (*DeleteCloudRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{180} + return fileDescriptor_d789ea45d40d7a6b, []int{188} } func (m *DeleteCloudRequest) XXX_Unmarshal(b []byte) error { @@ -15716,7 +16220,7 @@ func (m *DeleteCloudResponse) Reset() { *m = DeleteCloudResponse{} } func (m *DeleteCloudResponse) String() string { return proto.CompactTextString(m) } func (*DeleteCloudResponse) ProtoMessage() {} func (*DeleteCloudResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{181} + return fileDescriptor_d789ea45d40d7a6b, []int{189} } func (m *DeleteCloudResponse) XXX_Unmarshal(b []byte) error { @@ -15776,7 +16280,7 @@ func (m *GetCloudRequest) Reset() { *m = GetCloudRequest{} } func (m *GetCloudRequest) String() string { return proto.CompactTextString(m) } func (*GetCloudRequest) ProtoMessage() {} func (*GetCloudRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{182} + return fileDescriptor_d789ea45d40d7a6b, []int{190} } func (m *GetCloudRequest) XXX_Unmarshal(b []byte) error { @@ -15818,7 +16322,7 @@ func (m *GetCloudResponse) Reset() { *m = GetCloudResponse{} } func (m *GetCloudResponse) String() string { return proto.CompactTextString(m) } func (*GetCloudResponse) ProtoMessage() {} func (*GetCloudResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{183} + return fileDescriptor_d789ea45d40d7a6b, []int{191} } func (m *GetCloudResponse) XXX_Unmarshal(b []byte) error { @@ -15883,7 +16387,7 @@ func (m *ListCloudRequest) Reset() { *m = ListCloudRequest{} } func (m *ListCloudRequest) String() string { return proto.CompactTextString(m) } func (*ListCloudRequest) ProtoMessage() {} func (*ListCloudRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{184} + return fileDescriptor_d789ea45d40d7a6b, []int{192} } func (m *ListCloudRequest) XXX_Unmarshal(b []byte) error { @@ -15960,7 +16464,7 @@ func (m *ListCloudResponse) Reset() { *m = ListCloudResponse{} } func (m *ListCloudResponse) String() string { return proto.CompactTextString(m) } func (*ListCloudResponse) ProtoMessage() {} func (*ListCloudResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{185} + return fileDescriptor_d789ea45d40d7a6b, []int{193} } func (m *ListCloudResponse) XXX_Unmarshal(b []byte) error { @@ -16038,7 +16542,7 @@ func (m *CreateNodeGroupRequest) Reset() { *m = CreateNodeGroupRequest{} func (m *CreateNodeGroupRequest) String() string { return proto.CompactTextString(m) } func (*CreateNodeGroupRequest) ProtoMessage() {} func (*CreateNodeGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{186} + return fileDescriptor_d789ea45d40d7a6b, []int{194} } func (m *CreateNodeGroupRequest) XXX_Unmarshal(b []byte) error { @@ -16205,7 +16709,7 @@ func (m *GroupExtraInfo) Reset() { *m = GroupExtraInfo{} } func (m *GroupExtraInfo) String() string { return proto.CompactTextString(m) } func (*GroupExtraInfo) ProtoMessage() {} func (*GroupExtraInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{187} + return fileDescriptor_d789ea45d40d7a6b, []int{195} } func (m *GroupExtraInfo) XXX_Unmarshal(b []byte) error { @@ -16262,7 +16766,7 @@ func (m *CreateNodeGroupResponse) Reset() { *m = CreateNodeGroupResponse func (m *CreateNodeGroupResponse) String() string { return proto.CompactTextString(m) } func (*CreateNodeGroupResponse) ProtoMessage() {} func (*CreateNodeGroupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{188} + return fileDescriptor_d789ea45d40d7a6b, []int{196} } func (m *CreateNodeGroupResponse) XXX_Unmarshal(b []byte) error { @@ -16330,7 +16834,7 @@ func (m *CreateNodeGroupResponseData) Reset() { *m = CreateNodeGroupResp func (m *CreateNodeGroupResponseData) String() string { return proto.CompactTextString(m) } func (*CreateNodeGroupResponseData) ProtoMessage() {} func (*CreateNodeGroupResponseData) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{189} + return fileDescriptor_d789ea45d40d7a6b, []int{197} } func (m *CreateNodeGroupResponseData) XXX_Unmarshal(b []byte) error { @@ -16395,7 +16899,7 @@ func (m *UpdateNodeGroupRequest) Reset() { *m = UpdateNodeGroupRequest{} func (m *UpdateNodeGroupRequest) String() string { return proto.CompactTextString(m) } func (*UpdateNodeGroupRequest) ProtoMessage() {} func (*UpdateNodeGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{190} + return fileDescriptor_d789ea45d40d7a6b, []int{198} } func (m *UpdateNodeGroupRequest) XXX_Unmarshal(b []byte) error { @@ -16571,7 +17075,7 @@ func (m *UpdateNodeGroupResponse) Reset() { *m = UpdateNodeGroupResponse func (m *UpdateNodeGroupResponse) String() string { return proto.CompactTextString(m) } func (*UpdateNodeGroupResponse) ProtoMessage() {} func (*UpdateNodeGroupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{191} + return fileDescriptor_d789ea45d40d7a6b, []int{199} } func (m *UpdateNodeGroupResponse) XXX_Unmarshal(b []byte) error { @@ -16643,7 +17147,7 @@ func (m *DeleteNodeGroupRequest) Reset() { *m = DeleteNodeGroupRequest{} func (m *DeleteNodeGroupRequest) String() string { return proto.CompactTextString(m) } func (*DeleteNodeGroupRequest) ProtoMessage() {} func (*DeleteNodeGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{192} + return fileDescriptor_d789ea45d40d7a6b, []int{200} } func (m *DeleteNodeGroupRequest) XXX_Unmarshal(b []byte) error { @@ -16721,7 +17225,7 @@ func (m *DeleteNodeGroupResponse) Reset() { *m = DeleteNodeGroupResponse func (m *DeleteNodeGroupResponse) String() string { return proto.CompactTextString(m) } func (*DeleteNodeGroupResponse) ProtoMessage() {} func (*DeleteNodeGroupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{193} + return fileDescriptor_d789ea45d40d7a6b, []int{201} } func (m *DeleteNodeGroupResponse) XXX_Unmarshal(b []byte) error { @@ -16789,7 +17293,7 @@ func (m *DeleteNodeGroupResponseData) Reset() { *m = DeleteNodeGroupResp func (m *DeleteNodeGroupResponseData) String() string { return proto.CompactTextString(m) } func (*DeleteNodeGroupResponseData) ProtoMessage() {} func (*DeleteNodeGroupResponseData) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{194} + return fileDescriptor_d789ea45d40d7a6b, []int{202} } func (m *DeleteNodeGroupResponseData) XXX_Unmarshal(b []byte) error { @@ -16835,7 +17339,7 @@ func (m *GetNodeGroupRequest) Reset() { *m = GetNodeGroupRequest{} } func (m *GetNodeGroupRequest) String() string { return proto.CompactTextString(m) } func (*GetNodeGroupRequest) ProtoMessage() {} func (*GetNodeGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{195} + return fileDescriptor_d789ea45d40d7a6b, []int{203} } func (m *GetNodeGroupRequest) XXX_Unmarshal(b []byte) error { @@ -16878,7 +17382,7 @@ func (m *GetNodeGroupResponse) Reset() { *m = GetNodeGroupResponse{} } func (m *GetNodeGroupResponse) String() string { return proto.CompactTextString(m) } func (*GetNodeGroupResponse) ProtoMessage() {} func (*GetNodeGroupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{196} + return fileDescriptor_d789ea45d40d7a6b, []int{204} } func (m *GetNodeGroupResponse) XXX_Unmarshal(b []byte) error { @@ -16946,7 +17450,7 @@ func (m *ListClusterNodeGroupRequest) Reset() { *m = ListClusterNodeGrou func (m *ListClusterNodeGroupRequest) String() string { return proto.CompactTextString(m) } func (*ListClusterNodeGroupRequest) ProtoMessage() {} func (*ListClusterNodeGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{197} + return fileDescriptor_d789ea45d40d7a6b, []int{205} } func (m *ListClusterNodeGroupRequest) XXX_Unmarshal(b []byte) error { @@ -16996,7 +17500,7 @@ func (m *ListClusterNodeGroupResponse) Reset() { *m = ListClusterNodeGro func (m *ListClusterNodeGroupResponse) String() string { return proto.CompactTextString(m) } func (*ListClusterNodeGroupResponse) ProtoMessage() {} func (*ListClusterNodeGroupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{198} + return fileDescriptor_d789ea45d40d7a6b, []int{206} } func (m *ListClusterNodeGroupResponse) XXX_Unmarshal(b []byte) error { @@ -17066,7 +17570,7 @@ func (m *ListNodeGroupRequest) Reset() { *m = ListNodeGroupRequest{} } func (m *ListNodeGroupRequest) String() string { return proto.CompactTextString(m) } func (*ListNodeGroupRequest) ProtoMessage() {} func (*ListNodeGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{199} + return fileDescriptor_d789ea45d40d7a6b, []int{207} } func (m *ListNodeGroupRequest) XXX_Unmarshal(b []byte) error { @@ -17129,7 +17633,7 @@ func (m *ListNodeGroupResponse) Reset() { *m = ListNodeGroupResponse{} } func (m *ListNodeGroupResponse) String() string { return proto.CompactTextString(m) } func (*ListNodeGroupResponse) ProtoMessage() {} func (*ListNodeGroupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{200} + return fileDescriptor_d789ea45d40d7a6b, []int{208} } func (m *ListNodeGroupResponse) XXX_Unmarshal(b []byte) error { @@ -17197,7 +17701,7 @@ func (m *AddNodesRequest) Reset() { *m = AddNodesRequest{} } func (m *AddNodesRequest) String() string { return proto.CompactTextString(m) } func (*AddNodesRequest) ProtoMessage() {} func (*AddNodesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{201} + return fileDescriptor_d789ea45d40d7a6b, []int{209} } func (m *AddNodesRequest) XXX_Unmarshal(b []byte) error { @@ -17296,7 +17800,7 @@ func (m *AddNodesResponse) Reset() { *m = AddNodesResponse{} } func (m *AddNodesResponse) String() string { return proto.CompactTextString(m) } func (*AddNodesResponse) ProtoMessage() {} func (*AddNodesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{202} + return fileDescriptor_d789ea45d40d7a6b, []int{210} } func (m *AddNodesResponse) XXX_Unmarshal(b []byte) error { @@ -17367,7 +17871,7 @@ func (m *BatchDeleteClusterNodesRequest) Reset() { *m = BatchDeleteClust func (m *BatchDeleteClusterNodesRequest) String() string { return proto.CompactTextString(m) } func (*BatchDeleteClusterNodesRequest) ProtoMessage() {} func (*BatchDeleteClusterNodesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{203} + return fileDescriptor_d789ea45d40d7a6b, []int{211} } func (m *BatchDeleteClusterNodesRequest) XXX_Unmarshal(b []byte) error { @@ -17438,7 +17942,7 @@ func (m *BatchDeleteClusterNodesResponse) Reset() { *m = BatchDeleteClus func (m *BatchDeleteClusterNodesResponse) String() string { return proto.CompactTextString(m) } func (*BatchDeleteClusterNodesResponse) ProtoMessage() {} func (*BatchDeleteClusterNodesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{204} + return fileDescriptor_d789ea45d40d7a6b, []int{212} } func (m *BatchDeleteClusterNodesResponse) XXX_Unmarshal(b []byte) error { @@ -17510,7 +18014,7 @@ func (m *BatchNodesStatus) Reset() { *m = BatchNodesStatus{} } func (m *BatchNodesStatus) String() string { return proto.CompactTextString(m) } func (*BatchNodesStatus) ProtoMessage() {} func (*BatchNodesStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{205} + return fileDescriptor_d789ea45d40d7a6b, []int{213} } func (m *BatchNodesStatus) XXX_Unmarshal(b []byte) error { @@ -17592,7 +18096,7 @@ func (m *DeleteNodesRequest) Reset() { *m = DeleteNodesRequest{} } func (m *DeleteNodesRequest) String() string { return proto.CompactTextString(m) } func (*DeleteNodesRequest) ProtoMessage() {} func (*DeleteNodesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{206} + return fileDescriptor_d789ea45d40d7a6b, []int{214} } func (m *DeleteNodesRequest) XXX_Unmarshal(b []byte) error { @@ -17691,7 +18195,7 @@ func (m *DeleteNodesResponse) Reset() { *m = DeleteNodesResponse{} } func (m *DeleteNodesResponse) String() string { return proto.CompactTextString(m) } func (*DeleteNodesResponse) ProtoMessage() {} func (*DeleteNodesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{207} + return fileDescriptor_d789ea45d40d7a6b, []int{215} } func (m *DeleteNodesResponse) XXX_Unmarshal(b []byte) error { @@ -17760,7 +18264,7 @@ func (m *MoveNodesToGroupRequest) Reset() { *m = MoveNodesToGroupRequest func (m *MoveNodesToGroupRequest) String() string { return proto.CompactTextString(m) } func (*MoveNodesToGroupRequest) ProtoMessage() {} func (*MoveNodesToGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{208} + return fileDescriptor_d789ea45d40d7a6b, []int{216} } func (m *MoveNodesToGroupRequest) XXX_Unmarshal(b []byte) error { @@ -17817,7 +18321,7 @@ func (m *MoveNodesToGroupResponse) Reset() { *m = MoveNodesToGroupRespon func (m *MoveNodesToGroupResponse) String() string { return proto.CompactTextString(m) } func (*MoveNodesToGroupResponse) ProtoMessage() {} func (*MoveNodesToGroupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{209} + return fileDescriptor_d789ea45d40d7a6b, []int{217} } func (m *MoveNodesToGroupResponse) XXX_Unmarshal(b []byte) error { @@ -17886,7 +18390,7 @@ func (m *RemoveNodesFromGroupRequest) Reset() { *m = RemoveNodesFromGrou func (m *RemoveNodesFromGroupRequest) String() string { return proto.CompactTextString(m) } func (*RemoveNodesFromGroupRequest) ProtoMessage() {} func (*RemoveNodesFromGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{210} + return fileDescriptor_d789ea45d40d7a6b, []int{218} } func (m *RemoveNodesFromGroupRequest) XXX_Unmarshal(b []byte) error { @@ -17943,7 +18447,7 @@ func (m *RemoveNodesFromGroupResponse) Reset() { *m = RemoveNodesFromGro func (m *RemoveNodesFromGroupResponse) String() string { return proto.CompactTextString(m) } func (*RemoveNodesFromGroupResponse) ProtoMessage() {} func (*RemoveNodesFromGroupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{211} + return fileDescriptor_d789ea45d40d7a6b, []int{219} } func (m *RemoveNodesFromGroupResponse) XXX_Unmarshal(b []byte) error { @@ -18013,7 +18517,7 @@ func (m *CleanNodesInGroupRequest) Reset() { *m = CleanNodesInGroupReque func (m *CleanNodesInGroupRequest) String() string { return proto.CompactTextString(m) } func (*CleanNodesInGroupRequest) ProtoMessage() {} func (*CleanNodesInGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{212} + return fileDescriptor_d789ea45d40d7a6b, []int{220} } func (m *CleanNodesInGroupRequest) XXX_Unmarshal(b []byte) error { @@ -18077,7 +18581,7 @@ func (m *CleanNodesInGroupResponse) Reset() { *m = CleanNodesInGroupResp func (m *CleanNodesInGroupResponse) String() string { return proto.CompactTextString(m) } func (*CleanNodesInGroupResponse) ProtoMessage() {} func (*CleanNodesInGroupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{213} + return fileDescriptor_d789ea45d40d7a6b, []int{221} } func (m *CleanNodesInGroupResponse) XXX_Unmarshal(b []byte) error { @@ -18147,7 +18651,7 @@ func (m *CleanNodesInGroupV2Request) Reset() { *m = CleanNodesInGroupV2R func (m *CleanNodesInGroupV2Request) String() string { return proto.CompactTextString(m) } func (*CleanNodesInGroupV2Request) ProtoMessage() {} func (*CleanNodesInGroupV2Request) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{214} + return fileDescriptor_d789ea45d40d7a6b, []int{222} } func (m *CleanNodesInGroupV2Request) XXX_Unmarshal(b []byte) error { @@ -18211,7 +18715,7 @@ func (m *CleanNodesInGroupV2Response) Reset() { *m = CleanNodesInGroupV2 func (m *CleanNodesInGroupV2Response) String() string { return proto.CompactTextString(m) } func (*CleanNodesInGroupV2Response) ProtoMessage() {} func (*CleanNodesInGroupV2Response) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{215} + return fileDescriptor_d789ea45d40d7a6b, []int{223} } func (m *CleanNodesInGroupV2Response) XXX_Unmarshal(b []byte) error { @@ -18279,7 +18783,7 @@ func (m *ListNodesInGroupV2Request) Reset() { *m = ListNodesInGroupV2Req func (m *ListNodesInGroupV2Request) String() string { return proto.CompactTextString(m) } func (*ListNodesInGroupV2Request) ProtoMessage() {} func (*ListNodesInGroupV2Request) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{216} + return fileDescriptor_d789ea45d40d7a6b, []int{224} } func (m *ListNodesInGroupV2Request) XXX_Unmarshal(b []byte) error { @@ -18329,7 +18833,7 @@ func (m *ListNodesInGroupV2Response) Reset() { *m = ListNodesInGroupV2Re func (m *ListNodesInGroupV2Response) String() string { return proto.CompactTextString(m) } func (*ListNodesInGroupV2Response) ProtoMessage() {} func (*ListNodesInGroupV2Response) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{217} + return fileDescriptor_d789ea45d40d7a6b, []int{225} } func (m *ListNodesInGroupV2Response) XXX_Unmarshal(b []byte) error { @@ -18413,7 +18917,7 @@ func (m *NodeGroupNode) Reset() { *m = NodeGroupNode{} } func (m *NodeGroupNode) String() string { return proto.CompactTextString(m) } func (*NodeGroupNode) ProtoMessage() {} func (*NodeGroupNode) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{218} + return fileDescriptor_d789ea45d40d7a6b, []int{226} } func (m *NodeGroupNode) XXX_Unmarshal(b []byte) error { @@ -18575,7 +19079,7 @@ func (m *ListNodesInGroupResponse) Reset() { *m = ListNodesInGroupRespon func (m *ListNodesInGroupResponse) String() string { return proto.CompactTextString(m) } func (*ListNodesInGroupResponse) ProtoMessage() {} func (*ListNodesInGroupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{219} + return fileDescriptor_d789ea45d40d7a6b, []int{227} } func (m *ListNodesInGroupResponse) XXX_Unmarshal(b []byte) error { @@ -18645,7 +19149,7 @@ func (m *UpdateGroupMinMaxSizeRequest) Reset() { *m = UpdateGroupMinMaxS func (m *UpdateGroupMinMaxSizeRequest) String() string { return proto.CompactTextString(m) } func (*UpdateGroupMinMaxSizeRequest) ProtoMessage() {} func (*UpdateGroupMinMaxSizeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{220} + return fileDescriptor_d789ea45d40d7a6b, []int{228} } func (m *UpdateGroupMinMaxSizeRequest) XXX_Unmarshal(b []byte) error { @@ -18708,7 +19212,7 @@ func (m *UpdateGroupMinMaxSizeResponse) Reset() { *m = UpdateGroupMinMax func (m *UpdateGroupMinMaxSizeResponse) String() string { return proto.CompactTextString(m) } func (*UpdateGroupMinMaxSizeResponse) ProtoMessage() {} func (*UpdateGroupMinMaxSizeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{221} + return fileDescriptor_d789ea45d40d7a6b, []int{229} } func (m *UpdateGroupMinMaxSizeResponse) XXX_Unmarshal(b []byte) error { @@ -18770,7 +19274,7 @@ func (m *UpdateGroupAsTimeRangeRequest) Reset() { *m = UpdateGroupAsTime func (m *UpdateGroupAsTimeRangeRequest) String() string { return proto.CompactTextString(m) } func (*UpdateGroupAsTimeRangeRequest) ProtoMessage() {} func (*UpdateGroupAsTimeRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{222} + return fileDescriptor_d789ea45d40d7a6b, []int{230} } func (m *UpdateGroupAsTimeRangeRequest) XXX_Unmarshal(b []byte) error { @@ -18826,7 +19330,7 @@ func (m *UpdateGroupAsTimeRangeResponse) Reset() { *m = UpdateGroupAsTim func (m *UpdateGroupAsTimeRangeResponse) String() string { return proto.CompactTextString(m) } func (*UpdateGroupAsTimeRangeResponse) ProtoMessage() {} func (*UpdateGroupAsTimeRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{223} + return fileDescriptor_d789ea45d40d7a6b, []int{231} } func (m *UpdateGroupAsTimeRangeResponse) XXX_Unmarshal(b []byte) error { @@ -18886,7 +19390,7 @@ func (m *TransNodeGroupToNodeTemplateRequest) Reset() { *m = TransNodeGr func (m *TransNodeGroupToNodeTemplateRequest) String() string { return proto.CompactTextString(m) } func (*TransNodeGroupToNodeTemplateRequest) ProtoMessage() {} func (*TransNodeGroupToNodeTemplateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{224} + return fileDescriptor_d789ea45d40d7a6b, []int{232} } func (m *TransNodeGroupToNodeTemplateRequest) XXX_Unmarshal(b []byte) error { @@ -18928,7 +19432,7 @@ func (m *TransNodeGroupToNodeTemplateResponse) Reset() { *m = TransNodeG func (m *TransNodeGroupToNodeTemplateResponse) String() string { return proto.CompactTextString(m) } func (*TransNodeGroupToNodeTemplateResponse) ProtoMessage() {} func (*TransNodeGroupToNodeTemplateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{225} + return fileDescriptor_d789ea45d40d7a6b, []int{233} } func (m *TransNodeGroupToNodeTemplateResponse) XXX_Unmarshal(b []byte) error { @@ -18990,7 +19494,7 @@ func (m *UpdateGroupDesiredSizeRequest) Reset() { *m = UpdateGroupDesire func (m *UpdateGroupDesiredSizeRequest) String() string { return proto.CompactTextString(m) } func (*UpdateGroupDesiredSizeRequest) ProtoMessage() {} func (*UpdateGroupDesiredSizeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{226} + return fileDescriptor_d789ea45d40d7a6b, []int{234} } func (m *UpdateGroupDesiredSizeRequest) XXX_Unmarshal(b []byte) error { @@ -19046,7 +19550,7 @@ func (m *UpdateGroupDesiredSizeResponse) Reset() { *m = UpdateGroupDesir func (m *UpdateGroupDesiredSizeResponse) String() string { return proto.CompactTextString(m) } func (*UpdateGroupDesiredSizeResponse) ProtoMessage() {} func (*UpdateGroupDesiredSizeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{227} + return fileDescriptor_d789ea45d40d7a6b, []int{235} } func (m *UpdateGroupDesiredSizeResponse) XXX_Unmarshal(b []byte) error { @@ -19109,7 +19613,7 @@ func (m *UpdateGroupDesiredNodeRequest) Reset() { *m = UpdateGroupDesire func (m *UpdateGroupDesiredNodeRequest) String() string { return proto.CompactTextString(m) } func (*UpdateGroupDesiredNodeRequest) ProtoMessage() {} func (*UpdateGroupDesiredNodeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{228} + return fileDescriptor_d789ea45d40d7a6b, []int{236} } func (m *UpdateGroupDesiredNodeRequest) XXX_Unmarshal(b []byte) error { @@ -19173,7 +19677,7 @@ func (m *UpdateGroupDesiredNodeResponse) Reset() { *m = UpdateGroupDesir func (m *UpdateGroupDesiredNodeResponse) String() string { return proto.CompactTextString(m) } func (*UpdateGroupDesiredNodeResponse) ProtoMessage() {} func (*UpdateGroupDesiredNodeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{229} + return fileDescriptor_d789ea45d40d7a6b, []int{237} } func (m *UpdateGroupDesiredNodeResponse) XXX_Unmarshal(b []byte) error { @@ -19240,7 +19744,7 @@ func (m *EnableNodeGroupAutoScaleRequest) Reset() { *m = EnableNodeGroup func (m *EnableNodeGroupAutoScaleRequest) String() string { return proto.CompactTextString(m) } func (*EnableNodeGroupAutoScaleRequest) ProtoMessage() {} func (*EnableNodeGroupAutoScaleRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{230} + return fileDescriptor_d789ea45d40d7a6b, []int{238} } func (m *EnableNodeGroupAutoScaleRequest) XXX_Unmarshal(b []byte) error { @@ -19282,7 +19786,7 @@ func (m *EnableNodeGroupAutoScaleResponse) Reset() { *m = EnableNodeGrou func (m *EnableNodeGroupAutoScaleResponse) String() string { return proto.CompactTextString(m) } func (*EnableNodeGroupAutoScaleResponse) ProtoMessage() {} func (*EnableNodeGroupAutoScaleResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{231} + return fileDescriptor_d789ea45d40d7a6b, []int{239} } func (m *EnableNodeGroupAutoScaleResponse) XXX_Unmarshal(b []byte) error { @@ -19342,7 +19846,7 @@ func (m *DisableNodeGroupAutoScaleRequest) Reset() { *m = DisableNodeGro func (m *DisableNodeGroupAutoScaleRequest) String() string { return proto.CompactTextString(m) } func (*DisableNodeGroupAutoScaleRequest) ProtoMessage() {} func (*DisableNodeGroupAutoScaleRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{232} + return fileDescriptor_d789ea45d40d7a6b, []int{240} } func (m *DisableNodeGroupAutoScaleRequest) XXX_Unmarshal(b []byte) error { @@ -19384,7 +19888,7 @@ func (m *DisableNodeGroupAutoScaleResponse) Reset() { *m = DisableNodeGr func (m *DisableNodeGroupAutoScaleResponse) String() string { return proto.CompactTextString(m) } func (*DisableNodeGroupAutoScaleResponse) ProtoMessage() {} func (*DisableNodeGroupAutoScaleResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{233} + return fileDescriptor_d789ea45d40d7a6b, []int{241} } func (m *DisableNodeGroupAutoScaleResponse) XXX_Unmarshal(b []byte) error { @@ -19456,7 +19960,7 @@ func (m *CreateTaskRequest) Reset() { *m = CreateTaskRequest{} } func (m *CreateTaskRequest) String() string { return proto.CompactTextString(m) } func (*CreateTaskRequest) ProtoMessage() {} func (*CreateTaskRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{234} + return fileDescriptor_d789ea45d40d7a6b, []int{242} } func (m *CreateTaskRequest) XXX_Unmarshal(b []byte) error { @@ -19582,7 +20086,7 @@ func (m *CreateTaskResponse) Reset() { *m = CreateTaskResponse{} } func (m *CreateTaskResponse) String() string { return proto.CompactTextString(m) } func (*CreateTaskResponse) ProtoMessage() {} func (*CreateTaskResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{235} + return fileDescriptor_d789ea45d40d7a6b, []int{243} } func (m *CreateTaskResponse) XXX_Unmarshal(b []byte) error { @@ -19643,7 +20147,7 @@ func (m *RetryTaskRequest) Reset() { *m = RetryTaskRequest{} } func (m *RetryTaskRequest) String() string { return proto.CompactTextString(m) } func (*RetryTaskRequest) ProtoMessage() {} func (*RetryTaskRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{236} + return fileDescriptor_d789ea45d40d7a6b, []int{244} } func (m *RetryTaskRequest) XXX_Unmarshal(b []byte) error { @@ -19692,7 +20196,7 @@ func (m *RetryTaskResponse) Reset() { *m = RetryTaskResponse{} } func (m *RetryTaskResponse) String() string { return proto.CompactTextString(m) } func (*RetryTaskResponse) ProtoMessage() {} func (*RetryTaskResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{237} + return fileDescriptor_d789ea45d40d7a6b, []int{245} } func (m *RetryTaskResponse) XXX_Unmarshal(b []byte) error { @@ -19753,7 +20257,7 @@ func (m *SkipTaskRequest) Reset() { *m = SkipTaskRequest{} } func (m *SkipTaskRequest) String() string { return proto.CompactTextString(m) } func (*SkipTaskRequest) ProtoMessage() {} func (*SkipTaskRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{238} + return fileDescriptor_d789ea45d40d7a6b, []int{246} } func (m *SkipTaskRequest) XXX_Unmarshal(b []byte) error { @@ -19802,7 +20306,7 @@ func (m *SkipTaskResponse) Reset() { *m = SkipTaskResponse{} } func (m *SkipTaskResponse) String() string { return proto.CompactTextString(m) } func (*SkipTaskResponse) ProtoMessage() {} func (*SkipTaskResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{239} + return fileDescriptor_d789ea45d40d7a6b, []int{247} } func (m *SkipTaskResponse) XXX_Unmarshal(b []byte) error { @@ -19869,7 +20373,7 @@ func (m *UpdateTaskRequest) Reset() { *m = UpdateTaskRequest{} } func (m *UpdateTaskRequest) String() string { return proto.CompactTextString(m) } func (*UpdateTaskRequest) ProtoMessage() {} func (*UpdateTaskRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{240} + return fileDescriptor_d789ea45d40d7a6b, []int{248} } func (m *UpdateTaskRequest) XXX_Unmarshal(b []byte) error { @@ -19960,7 +20464,7 @@ func (m *UpdateTaskResponse) Reset() { *m = UpdateTaskResponse{} } func (m *UpdateTaskResponse) String() string { return proto.CompactTextString(m) } func (*UpdateTaskResponse) ProtoMessage() {} func (*UpdateTaskResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{241} + return fileDescriptor_d789ea45d40d7a6b, []int{249} } func (m *UpdateTaskResponse) XXX_Unmarshal(b []byte) error { @@ -20021,7 +20525,7 @@ func (m *DeleteTaskRequest) Reset() { *m = DeleteTaskRequest{} } func (m *DeleteTaskRequest) String() string { return proto.CompactTextString(m) } func (*DeleteTaskRequest) ProtoMessage() {} func (*DeleteTaskRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{242} + return fileDescriptor_d789ea45d40d7a6b, []int{250} } func (m *DeleteTaskRequest) XXX_Unmarshal(b []byte) error { @@ -20070,7 +20574,7 @@ func (m *DeleteTaskResponse) Reset() { *m = DeleteTaskResponse{} } func (m *DeleteTaskResponse) String() string { return proto.CompactTextString(m) } func (*DeleteTaskResponse) ProtoMessage() {} func (*DeleteTaskResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{243} + return fileDescriptor_d789ea45d40d7a6b, []int{251} } func (m *DeleteTaskResponse) XXX_Unmarshal(b []byte) error { @@ -20130,7 +20634,7 @@ func (m *GetTaskRequest) Reset() { *m = GetTaskRequest{} } func (m *GetTaskRequest) String() string { return proto.CompactTextString(m) } func (*GetTaskRequest) ProtoMessage() {} func (*GetTaskRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{244} + return fileDescriptor_d789ea45d40d7a6b, []int{252} } func (m *GetTaskRequest) XXX_Unmarshal(b []byte) error { @@ -20172,7 +20676,7 @@ func (m *GetTaskResponse) Reset() { *m = GetTaskResponse{} } func (m *GetTaskResponse) String() string { return proto.CompactTextString(m) } func (*GetTaskResponse) ProtoMessage() {} func (*GetTaskResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{245} + return fileDescriptor_d789ea45d40d7a6b, []int{253} } func (m *GetTaskResponse) XXX_Unmarshal(b []byte) error { @@ -20239,7 +20743,7 @@ func (m *ListTaskRequest) Reset() { *m = ListTaskRequest{} } func (m *ListTaskRequest) String() string { return proto.CompactTextString(m) } func (*ListTaskRequest) ProtoMessage() {} func (*ListTaskRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{246} + return fileDescriptor_d789ea45d40d7a6b, []int{254} } func (m *ListTaskRequest) XXX_Unmarshal(b []byte) error { @@ -20331,7 +20835,7 @@ func (m *ListTaskResponse) Reset() { *m = ListTaskResponse{} } func (m *ListTaskResponse) String() string { return proto.CompactTextString(m) } func (*ListTaskResponse) ProtoMessage() {} func (*ListTaskResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{247} + return fileDescriptor_d789ea45d40d7a6b, []int{255} } func (m *ListTaskResponse) XXX_Unmarshal(b []byte) error { @@ -20425,7 +20929,7 @@ func (m *CreateAutoScalingOptionRequest) Reset() { *m = CreateAutoScalin func (m *CreateAutoScalingOptionRequest) String() string { return proto.CompactTextString(m) } func (*CreateAutoScalingOptionRequest) ProtoMessage() {} func (*CreateAutoScalingOptionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{248} + return fileDescriptor_d789ea45d40d7a6b, []int{256} } func (m *CreateAutoScalingOptionRequest) XXX_Unmarshal(b []byte) error { @@ -20656,7 +21160,7 @@ func (m *CreateAutoScalingOptionResponse) Reset() { *m = CreateAutoScali func (m *CreateAutoScalingOptionResponse) String() string { return proto.CompactTextString(m) } func (*CreateAutoScalingOptionResponse) ProtoMessage() {} func (*CreateAutoScalingOptionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{249} + return fileDescriptor_d789ea45d40d7a6b, []int{257} } func (m *CreateAutoScalingOptionResponse) XXX_Unmarshal(b []byte) error { @@ -20748,7 +21252,7 @@ func (m *UpdateAutoScalingOptionRequest) Reset() { *m = UpdateAutoScalin func (m *UpdateAutoScalingOptionRequest) String() string { return proto.CompactTextString(m) } func (*UpdateAutoScalingOptionRequest) ProtoMessage() {} func (*UpdateAutoScalingOptionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{250} + return fileDescriptor_d789ea45d40d7a6b, []int{258} } func (m *UpdateAutoScalingOptionRequest) XXX_Unmarshal(b []byte) error { @@ -21015,7 +21519,7 @@ func (m *UpdateAutoScalingOptionResponse) Reset() { *m = UpdateAutoScali func (m *UpdateAutoScalingOptionResponse) String() string { return proto.CompactTextString(m) } func (*UpdateAutoScalingOptionResponse) ProtoMessage() {} func (*UpdateAutoScalingOptionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{251} + return fileDescriptor_d789ea45d40d7a6b, []int{259} } func (m *UpdateAutoScalingOptionResponse) XXX_Unmarshal(b []byte) error { @@ -21083,7 +21587,7 @@ func (m *UpdateAsOptionDeviceProviderRequest) Reset() { *m = UpdateAsOpt func (m *UpdateAsOptionDeviceProviderRequest) String() string { return proto.CompactTextString(m) } func (*UpdateAsOptionDeviceProviderRequest) ProtoMessage() {} func (*UpdateAsOptionDeviceProviderRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{252} + return fileDescriptor_d789ea45d40d7a6b, []int{260} } func (m *UpdateAsOptionDeviceProviderRequest) XXX_Unmarshal(b []byte) error { @@ -21131,7 +21635,7 @@ func (m *UpdateAsOptionDeviceProviderResponse) Reset() { *m = UpdateAsOp func (m *UpdateAsOptionDeviceProviderResponse) String() string { return proto.CompactTextString(m) } func (*UpdateAsOptionDeviceProviderResponse) ProtoMessage() {} func (*UpdateAsOptionDeviceProviderResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{253} + return fileDescriptor_d789ea45d40d7a6b, []int{261} } func (m *UpdateAsOptionDeviceProviderResponse) XXX_Unmarshal(b []byte) error { @@ -21213,7 +21717,7 @@ func (m *SyncAutoScalingOptionRequest) Reset() { *m = SyncAutoScalingOpt func (m *SyncAutoScalingOptionRequest) String() string { return proto.CompactTextString(m) } func (*SyncAutoScalingOptionRequest) ProtoMessage() {} func (*SyncAutoScalingOptionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{254} + return fileDescriptor_d789ea45d40d7a6b, []int{262} } func (m *SyncAutoScalingOptionRequest) XXX_Unmarshal(b []byte) error { @@ -21459,7 +21963,7 @@ func (m *SyncAutoScalingOptionResponse) Reset() { *m = SyncAutoScalingOp func (m *SyncAutoScalingOptionResponse) String() string { return proto.CompactTextString(m) } func (*SyncAutoScalingOptionResponse) ProtoMessage() {} func (*SyncAutoScalingOptionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{255} + return fileDescriptor_d789ea45d40d7a6b, []int{263} } func (m *SyncAutoScalingOptionResponse) XXX_Unmarshal(b []byte) error { @@ -21527,7 +22031,7 @@ func (m *DeleteAutoScalingOptionRequest) Reset() { *m = DeleteAutoScalin func (m *DeleteAutoScalingOptionRequest) String() string { return proto.CompactTextString(m) } func (*DeleteAutoScalingOptionRequest) ProtoMessage() {} func (*DeleteAutoScalingOptionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{256} + return fileDescriptor_d789ea45d40d7a6b, []int{264} } func (m *DeleteAutoScalingOptionRequest) XXX_Unmarshal(b []byte) error { @@ -21577,7 +22081,7 @@ func (m *DeleteAutoScalingOptionResponse) Reset() { *m = DeleteAutoScali func (m *DeleteAutoScalingOptionResponse) String() string { return proto.CompactTextString(m) } func (*DeleteAutoScalingOptionResponse) ProtoMessage() {} func (*DeleteAutoScalingOptionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{257} + return fileDescriptor_d789ea45d40d7a6b, []int{265} } func (m *DeleteAutoScalingOptionResponse) XXX_Unmarshal(b []byte) error { @@ -21645,7 +22149,7 @@ func (m *GetAutoScalingOptionRequest) Reset() { *m = GetAutoScalingOptio func (m *GetAutoScalingOptionRequest) String() string { return proto.CompactTextString(m) } func (*GetAutoScalingOptionRequest) ProtoMessage() {} func (*GetAutoScalingOptionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{258} + return fileDescriptor_d789ea45d40d7a6b, []int{266} } func (m *GetAutoScalingOptionRequest) XXX_Unmarshal(b []byte) error { @@ -21695,7 +22199,7 @@ func (m *GetAutoScalingOptionResponse) Reset() { *m = GetAutoScalingOpti func (m *GetAutoScalingOptionResponse) String() string { return proto.CompactTextString(m) } func (*GetAutoScalingOptionResponse) ProtoMessage() {} func (*GetAutoScalingOptionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{259} + return fileDescriptor_d789ea45d40d7a6b, []int{267} } func (m *GetAutoScalingOptionResponse) XXX_Unmarshal(b []byte) error { @@ -21765,7 +22269,7 @@ func (m *ListAutoScalingOptionRequest) Reset() { *m = ListAutoScalingOpt func (m *ListAutoScalingOptionRequest) String() string { return proto.CompactTextString(m) } func (*ListAutoScalingOptionRequest) ProtoMessage() {} func (*ListAutoScalingOptionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{260} + return fileDescriptor_d789ea45d40d7a6b, []int{268} } func (m *ListAutoScalingOptionRequest) XXX_Unmarshal(b []byte) error { @@ -21828,7 +22332,7 @@ func (m *ListAutoScalingOptionResponse) Reset() { *m = ListAutoScalingOp func (m *ListAutoScalingOptionResponse) String() string { return proto.CompactTextString(m) } func (*ListAutoScalingOptionResponse) ProtoMessage() {} func (*ListAutoScalingOptionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{261} + return fileDescriptor_d789ea45d40d7a6b, []int{269} } func (m *ListAutoScalingOptionResponse) XXX_Unmarshal(b []byte) error { @@ -21891,7 +22395,7 @@ func (m *UpdateAutoScalingStatusRequest) Reset() { *m = UpdateAutoScalin func (m *UpdateAutoScalingStatusRequest) String() string { return proto.CompactTextString(m) } func (*UpdateAutoScalingStatusRequest) ProtoMessage() {} func (*UpdateAutoScalingStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{262} + return fileDescriptor_d789ea45d40d7a6b, []int{270} } func (m *UpdateAutoScalingStatusRequest) XXX_Unmarshal(b []byte) error { @@ -21955,7 +22459,7 @@ func (m *UpdateAutoScalingStatusResponse) Reset() { *m = UpdateAutoScali func (m *UpdateAutoScalingStatusResponse) String() string { return proto.CompactTextString(m) } func (*UpdateAutoScalingStatusResponse) ProtoMessage() {} func (*UpdateAutoScalingStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{263} + return fileDescriptor_d789ea45d40d7a6b, []int{271} } func (m *UpdateAutoScalingStatusResponse) XXX_Unmarshal(b []byte) error { @@ -22025,7 +22529,7 @@ func (m *ServiceRoleInfo) Reset() { *m = ServiceRoleInfo{} } func (m *ServiceRoleInfo) String() string { return proto.CompactTextString(m) } func (*ServiceRoleInfo) ProtoMessage() {} func (*ServiceRoleInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{264} + return fileDescriptor_d789ea45d40d7a6b, []int{272} } func (m *ServiceRoleInfo) XXX_Unmarshal(b []byte) error { @@ -22087,7 +22591,7 @@ func (m *GetServiceRolesRequest) Reset() { *m = GetServiceRolesRequest{} func (m *GetServiceRolesRequest) String() string { return proto.CompactTextString(m) } func (*GetServiceRolesRequest) ProtoMessage() {} func (*GetServiceRolesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{265} + return fileDescriptor_d789ea45d40d7a6b, []int{273} } func (m *GetServiceRolesRequest) XXX_Unmarshal(b []byte) error { @@ -22143,7 +22647,7 @@ func (m *GetServiceRolesResponse) Reset() { *m = GetServiceRolesResponse func (m *GetServiceRolesResponse) String() string { return proto.CompactTextString(m) } func (*GetServiceRolesResponse) ProtoMessage() {} func (*GetServiceRolesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{266} + return fileDescriptor_d789ea45d40d7a6b, []int{274} } func (m *GetServiceRolesResponse) XXX_Unmarshal(b []byte) error { @@ -22205,7 +22709,7 @@ func (m *ResourceGroupInfo) Reset() { *m = ResourceGroupInfo{} } func (m *ResourceGroupInfo) String() string { return proto.CompactTextString(m) } func (*ResourceGroupInfo) ProtoMessage() {} func (*ResourceGroupInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{267} + return fileDescriptor_d789ea45d40d7a6b, []int{275} } func (m *ResourceGroupInfo) XXX_Unmarshal(b []byte) error { @@ -22259,7 +22763,7 @@ func (m *GetResourceGroupsRequest) Reset() { *m = GetResourceGroupsReque func (m *GetResourceGroupsRequest) String() string { return proto.CompactTextString(m) } func (*GetResourceGroupsRequest) ProtoMessage() {} func (*GetResourceGroupsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{268} + return fileDescriptor_d789ea45d40d7a6b, []int{276} } func (m *GetResourceGroupsRequest) XXX_Unmarshal(b []byte) error { @@ -22308,7 +22812,7 @@ func (m *GetResourceGroupsResponse) Reset() { *m = GetResourceGroupsResp func (m *GetResourceGroupsResponse) String() string { return proto.CompactTextString(m) } func (*GetResourceGroupsResponse) ProtoMessage() {} func (*GetResourceGroupsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{269} + return fileDescriptor_d789ea45d40d7a6b, []int{277} } func (m *GetResourceGroupsResponse) XXX_Unmarshal(b []byte) error { @@ -22370,7 +22874,7 @@ func (m *RegionInfo) Reset() { *m = RegionInfo{} } func (m *RegionInfo) String() string { return proto.CompactTextString(m) } func (*RegionInfo) ProtoMessage() {} func (*RegionInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{270} + return fileDescriptor_d789ea45d40d7a6b, []int{278} } func (m *RegionInfo) XXX_Unmarshal(b []byte) error { @@ -22424,7 +22928,7 @@ func (m *GetCloudRegionsRequest) Reset() { *m = GetCloudRegionsRequest{} func (m *GetCloudRegionsRequest) String() string { return proto.CompactTextString(m) } func (*GetCloudRegionsRequest) ProtoMessage() {} func (*GetCloudRegionsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{271} + return fileDescriptor_d789ea45d40d7a6b, []int{279} } func (m *GetCloudRegionsRequest) XXX_Unmarshal(b []byte) error { @@ -22473,7 +22977,7 @@ func (m *GetCloudRegionsResponse) Reset() { *m = GetCloudRegionsResponse func (m *GetCloudRegionsResponse) String() string { return proto.CompactTextString(m) } func (*GetCloudRegionsResponse) ProtoMessage() {} func (*GetCloudRegionsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{272} + return fileDescriptor_d789ea45d40d7a6b, []int{280} } func (m *GetCloudRegionsResponse) XXX_Unmarshal(b []byte) error { @@ -22537,7 +23041,7 @@ func (m *ZoneInfo) Reset() { *m = ZoneInfo{} } func (m *ZoneInfo) String() string { return proto.CompactTextString(m) } func (*ZoneInfo) ProtoMessage() {} func (*ZoneInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{273} + return fileDescriptor_d789ea45d40d7a6b, []int{281} } func (m *ZoneInfo) XXX_Unmarshal(b []byte) error { @@ -22612,7 +23116,7 @@ func (m *CloudClusterInfo) Reset() { *m = CloudClusterInfo{} } func (m *CloudClusterInfo) String() string { return proto.CompactTextString(m) } func (*CloudClusterInfo) ProtoMessage() {} func (*CloudClusterInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{274} + return fileDescriptor_d789ea45d40d7a6b, []int{282} } func (m *CloudClusterInfo) XXX_Unmarshal(b []byte) error { @@ -22710,7 +23214,7 @@ func (m *ListCloudRegionClusterRequest) Reset() { *m = ListCloudRegionCl func (m *ListCloudRegionClusterRequest) String() string { return proto.CompactTextString(m) } func (*ListCloudRegionClusterRequest) ProtoMessage() {} func (*ListCloudRegionClusterRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{275} + return fileDescriptor_d789ea45d40d7a6b, []int{283} } func (m *ListCloudRegionClusterRequest) XXX_Unmarshal(b []byte) error { @@ -22773,7 +23277,7 @@ func (m *ListCloudRegionClusterResponse) Reset() { *m = ListCloudRegionC func (m *ListCloudRegionClusterResponse) String() string { return proto.CompactTextString(m) } func (*ListCloudRegionClusterResponse) ProtoMessage() {} func (*ListCloudRegionClusterResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{276} + return fileDescriptor_d789ea45d40d7a6b, []int{284} } func (m *ListCloudRegionClusterResponse) XXX_Unmarshal(b []byte) error { @@ -22837,7 +23341,7 @@ func (m *GetCloudRegionZonesRequest) Reset() { *m = GetCloudRegionZonesR func (m *GetCloudRegionZonesRequest) String() string { return proto.CompactTextString(m) } func (*GetCloudRegionZonesRequest) ProtoMessage() {} func (*GetCloudRegionZonesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{277} + return fileDescriptor_d789ea45d40d7a6b, []int{285} } func (m *GetCloudRegionZonesRequest) XXX_Unmarshal(b []byte) error { @@ -22907,7 +23411,7 @@ func (m *GetCloudRegionZonesResponse) Reset() { *m = GetCloudRegionZones func (m *GetCloudRegionZonesResponse) String() string { return proto.CompactTextString(m) } func (*GetCloudRegionZonesResponse) ProtoMessage() {} func (*GetCloudRegionZonesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{278} + return fileDescriptor_d789ea45d40d7a6b, []int{286} } func (m *GetCloudRegionZonesResponse) XXX_Unmarshal(b []byte) error { @@ -22975,7 +23479,7 @@ func (m *OperationLog) Reset() { *m = OperationLog{} } func (m *OperationLog) String() string { return proto.CompactTextString(m) } func (*OperationLog) ProtoMessage() {} func (*OperationLog) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{279} + return fileDescriptor_d789ea45d40d7a6b, []int{287} } func (m *OperationLog) XXX_Unmarshal(b []byte) error { @@ -23080,7 +23584,7 @@ func (m *TaskOperationLog) Reset() { *m = TaskOperationLog{} } func (m *TaskOperationLog) String() string { return proto.CompactTextString(m) } func (*TaskOperationLog) ProtoMessage() {} func (*TaskOperationLog) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{280} + return fileDescriptor_d789ea45d40d7a6b, []int{288} } func (m *TaskOperationLog) XXX_Unmarshal(b []byte) error { @@ -23193,7 +23697,7 @@ func (m *TaskStepLog) Reset() { *m = TaskStepLog{} } func (m *TaskStepLog) String() string { return proto.CompactTextString(m) } func (*TaskStepLog) ProtoMessage() {} func (*TaskStepLog) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{281} + return fileDescriptor_d789ea45d40d7a6b, []int{289} } func (m *TaskStepLog) XXX_Unmarshal(b []byte) error { @@ -23269,7 +23773,7 @@ func (m *ListCloudInstanceTypeRequest) Reset() { *m = ListCloudInstanceT func (m *ListCloudInstanceTypeRequest) String() string { return proto.CompactTextString(m) } func (*ListCloudInstanceTypeRequest) ProtoMessage() {} func (*ListCloudInstanceTypeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{282} + return fileDescriptor_d789ea45d40d7a6b, []int{290} } func (m *ListCloudInstanceTypeRequest) XXX_Unmarshal(b []byte) error { @@ -23374,7 +23878,7 @@ func (m *ListCloudInstanceTypeResponse) Reset() { *m = ListCloudInstance func (m *ListCloudInstanceTypeResponse) String() string { return proto.CompactTextString(m) } func (*ListCloudInstanceTypeResponse) ProtoMessage() {} func (*ListCloudInstanceTypeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{283} + return fileDescriptor_d789ea45d40d7a6b, []int{291} } func (m *ListCloudInstanceTypeResponse) XXX_Unmarshal(b []byte) error { @@ -23447,7 +23951,7 @@ func (m *InstanceType) Reset() { *m = InstanceType{} } func (m *InstanceType) String() string { return proto.CompactTextString(m) } func (*InstanceType) ProtoMessage() {} func (*InstanceType) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{284} + return fileDescriptor_d789ea45d40d7a6b, []int{292} } func (m *InstanceType) XXX_Unmarshal(b []byte) error { @@ -23584,7 +24088,7 @@ func (m *GetMasterSuggestedMachinesRequest) Reset() { *m = GetMasterSugg func (m *GetMasterSuggestedMachinesRequest) String() string { return proto.CompactTextString(m) } func (*GetMasterSuggestedMachinesRequest) ProtoMessage() {} func (*GetMasterSuggestedMachinesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{285} + return fileDescriptor_d789ea45d40d7a6b, []int{293} } func (m *GetMasterSuggestedMachinesRequest) XXX_Unmarshal(b []byte) error { @@ -23675,7 +24179,7 @@ func (m *GetMasterSuggestedMachinesResponse) Reset() { *m = GetMasterSug func (m *GetMasterSuggestedMachinesResponse) String() string { return proto.CompactTextString(m) } func (*GetMasterSuggestedMachinesResponse) ProtoMessage() {} func (*GetMasterSuggestedMachinesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{286} + return fileDescriptor_d789ea45d40d7a6b, []int{294} } func (m *GetMasterSuggestedMachinesResponse) XXX_Unmarshal(b []byte) error { @@ -23738,7 +24242,7 @@ func (m *ListCloudInstancesRequest) Reset() { *m = ListCloudInstancesReq func (m *ListCloudInstancesRequest) String() string { return proto.CompactTextString(m) } func (*ListCloudInstancesRequest) ProtoMessage() {} func (*ListCloudInstancesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{287} + return fileDescriptor_d789ea45d40d7a6b, []int{295} } func (m *ListCloudInstancesRequest) XXX_Unmarshal(b []byte) error { @@ -23801,7 +24305,7 @@ func (m *ListCloudInstancesResponse) Reset() { *m = ListCloudInstancesRe func (m *ListCloudInstancesResponse) String() string { return proto.CompactTextString(m) } func (*ListCloudInstancesResponse) ProtoMessage() {} func (*ListCloudInstancesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{288} + return fileDescriptor_d789ea45d40d7a6b, []int{296} } func (m *ListCloudInstancesResponse) XXX_Unmarshal(b []byte) error { @@ -23873,7 +24377,7 @@ func (m *CloudNode) Reset() { *m = CloudNode{} } func (m *CloudNode) String() string { return proto.CompactTextString(m) } func (*CloudNode) ProtoMessage() {} func (*CloudNode) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{289} + return fileDescriptor_d789ea45d40d7a6b, []int{297} } func (m *CloudNode) XXX_Unmarshal(b []byte) error { @@ -23998,7 +24502,7 @@ func (m *GetCloudAccountTypeRequest) Reset() { *m = GetCloudAccountTypeR func (m *GetCloudAccountTypeRequest) String() string { return proto.CompactTextString(m) } func (*GetCloudAccountTypeRequest) ProtoMessage() {} func (*GetCloudAccountTypeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{290} + return fileDescriptor_d789ea45d40d7a6b, []int{298} } func (m *GetCloudAccountTypeRequest) XXX_Unmarshal(b []byte) error { @@ -24054,7 +24558,7 @@ func (m *GetCloudAccountTypeResponse) Reset() { *m = GetCloudAccountType func (m *GetCloudAccountTypeResponse) String() string { return proto.CompactTextString(m) } func (*GetCloudAccountTypeResponse) ProtoMessage() {} func (*GetCloudAccountTypeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{291} + return fileDescriptor_d789ea45d40d7a6b, []int{299} } func (m *GetCloudAccountTypeResponse) XXX_Unmarshal(b []byte) error { @@ -24114,7 +24618,7 @@ func (m *CloudAccountType) Reset() { *m = CloudAccountType{} } func (m *CloudAccountType) String() string { return proto.CompactTextString(m) } func (*CloudAccountType) ProtoMessage() {} func (*CloudAccountType) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{292} + return fileDescriptor_d789ea45d40d7a6b, []int{300} } func (m *CloudAccountType) XXX_Unmarshal(b []byte) error { @@ -24155,7 +24659,7 @@ func (m *GetCloudBandwidthPackagesRequest) Reset() { *m = GetCloudBandwi func (m *GetCloudBandwidthPackagesRequest) String() string { return proto.CompactTextString(m) } func (*GetCloudBandwidthPackagesRequest) ProtoMessage() {} func (*GetCloudBandwidthPackagesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{293} + return fileDescriptor_d789ea45d40d7a6b, []int{301} } func (m *GetCloudBandwidthPackagesRequest) XXX_Unmarshal(b []byte) error { @@ -24211,7 +24715,7 @@ func (m *GetCloudBandwidthPackagesResponse) Reset() { *m = GetCloudBandw func (m *GetCloudBandwidthPackagesResponse) String() string { return proto.CompactTextString(m) } func (*GetCloudBandwidthPackagesResponse) ProtoMessage() {} func (*GetCloudBandwidthPackagesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{294} + return fileDescriptor_d789ea45d40d7a6b, []int{302} } func (m *GetCloudBandwidthPackagesResponse) XXX_Unmarshal(b []byte) error { @@ -24275,7 +24779,7 @@ func (m *BandwidthPackageInfo) Reset() { *m = BandwidthPackageInfo{} } func (m *BandwidthPackageInfo) String() string { return proto.CompactTextString(m) } func (*BandwidthPackageInfo) ProtoMessage() {} func (*BandwidthPackageInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{295} + return fileDescriptor_d789ea45d40d7a6b, []int{303} } func (m *BandwidthPackageInfo) XXX_Unmarshal(b []byte) error { @@ -24346,7 +24850,7 @@ func (m *ListCloudOsImageRequest) Reset() { *m = ListCloudOsImageRequest func (m *ListCloudOsImageRequest) String() string { return proto.CompactTextString(m) } func (*ListCloudOsImageRequest) ProtoMessage() {} func (*ListCloudOsImageRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{296} + return fileDescriptor_d789ea45d40d7a6b, []int{304} } func (m *ListCloudOsImageRequest) XXX_Unmarshal(b []byte) error { @@ -24416,7 +24920,7 @@ func (m *ListCloudOsImageResponse) Reset() { *m = ListCloudOsImageRespon func (m *ListCloudOsImageResponse) String() string { return proto.CompactTextString(m) } func (*ListCloudOsImageResponse) ProtoMessage() {} func (*ListCloudOsImageResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{297} + return fileDescriptor_d789ea45d40d7a6b, []int{305} } func (m *ListCloudOsImageResponse) XXX_Unmarshal(b []byte) error { @@ -24484,7 +24988,7 @@ func (m *OsImage) Reset() { *m = OsImage{} } func (m *OsImage) String() string { return proto.CompactTextString(m) } func (*OsImage) ProtoMessage() {} func (*OsImage) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{298} + return fileDescriptor_d789ea45d40d7a6b, []int{306} } func (m *OsImage) XXX_Unmarshal(b []byte) error { @@ -24580,7 +25084,7 @@ func (m *ClusterInfo) Reset() { *m = ClusterInfo{} } func (m *ClusterInfo) String() string { return proto.CompactTextString(m) } func (*ClusterInfo) ProtoMessage() {} func (*ClusterInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{299} + return fileDescriptor_d789ea45d40d7a6b, []int{307} } func (m *ClusterInfo) XXX_Unmarshal(b []byte) error { @@ -24627,7 +25131,7 @@ func (m *ListCloudRuntimeInfoRequest) Reset() { *m = ListCloudRuntimeInf func (m *ListCloudRuntimeInfoRequest) String() string { return proto.CompactTextString(m) } func (*ListCloudRuntimeInfoRequest) ProtoMessage() {} func (*ListCloudRuntimeInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{300} + return fileDescriptor_d789ea45d40d7a6b, []int{308} } func (m *ListCloudRuntimeInfoRequest) XXX_Unmarshal(b []byte) error { @@ -24676,7 +25180,7 @@ func (m *ListCloudRuntimeInfoResponse) Reset() { *m = ListCloudRuntimeIn func (m *ListCloudRuntimeInfoResponse) String() string { return proto.CompactTextString(m) } func (*ListCloudRuntimeInfoResponse) ProtoMessage() {} func (*ListCloudRuntimeInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{301} + return fileDescriptor_d789ea45d40d7a6b, []int{309} } func (m *ListCloudRuntimeInfoResponse) XXX_Unmarshal(b []byte) error { @@ -24736,7 +25240,7 @@ func (m *RunTimeVersion) Reset() { *m = RunTimeVersion{} } func (m *RunTimeVersion) String() string { return proto.CompactTextString(m) } func (*RunTimeVersion) ProtoMessage() {} func (*RunTimeVersion) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{302} + return fileDescriptor_d789ea45d40d7a6b, []int{310} } func (m *RunTimeVersion) XXX_Unmarshal(b []byte) error { @@ -24777,7 +25281,7 @@ func (m *ListCloudProjectsRequest) Reset() { *m = ListCloudProjectsReque func (m *ListCloudProjectsRequest) String() string { return proto.CompactTextString(m) } func (*ListCloudProjectsRequest) ProtoMessage() {} func (*ListCloudProjectsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{303} + return fileDescriptor_d789ea45d40d7a6b, []int{311} } func (m *ListCloudProjectsRequest) XXX_Unmarshal(b []byte) error { @@ -24833,7 +25337,7 @@ func (m *ListCloudProjectsResponse) Reset() { *m = ListCloudProjectsResp func (m *ListCloudProjectsResponse) String() string { return proto.CompactTextString(m) } func (*ListCloudProjectsResponse) ProtoMessage() {} func (*ListCloudProjectsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{304} + return fileDescriptor_d789ea45d40d7a6b, []int{312} } func (m *ListCloudProjectsResponse) XXX_Unmarshal(b []byte) error { @@ -24894,7 +25398,7 @@ func (m *CloudProject) Reset() { *m = CloudProject{} } func (m *CloudProject) String() string { return proto.CompactTextString(m) } func (*CloudProject) ProtoMessage() {} func (*CloudProject) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{305} + return fileDescriptor_d789ea45d40d7a6b, []int{313} } func (m *CloudProject) XXX_Unmarshal(b []byte) error { @@ -24944,7 +25448,7 @@ func (m *ListCloudVpcsRequest) Reset() { *m = ListCloudVpcsRequest{} } func (m *ListCloudVpcsRequest) String() string { return proto.CompactTextString(m) } func (*ListCloudVpcsRequest) ProtoMessage() {} func (*ListCloudVpcsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{306} + return fileDescriptor_d789ea45d40d7a6b, []int{314} } func (m *ListCloudVpcsRequest) XXX_Unmarshal(b []byte) error { @@ -25014,7 +25518,7 @@ func (m *ListCloudVpcsResponse) Reset() { *m = ListCloudVpcsResponse{} } func (m *ListCloudVpcsResponse) String() string { return proto.CompactTextString(m) } func (*ListCloudVpcsResponse) ProtoMessage() {} func (*ListCloudVpcsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{307} + return fileDescriptor_d789ea45d40d7a6b, []int{315} } func (m *ListCloudVpcsResponse) XXX_Unmarshal(b []byte) error { @@ -25079,7 +25583,7 @@ func (m *CloudVpc) Reset() { *m = CloudVpc{} } func (m *CloudVpc) String() string { return proto.CompactTextString(m) } func (*CloudVpc) ProtoMessage() {} func (*CloudVpc) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{308} + return fileDescriptor_d789ea45d40d7a6b, []int{316} } func (m *CloudVpc) XXX_Unmarshal(b []byte) error { @@ -25155,7 +25659,7 @@ func (m *AssistantCidr) Reset() { *m = AssistantCidr{} } func (m *AssistantCidr) String() string { return proto.CompactTextString(m) } func (*AssistantCidr) ProtoMessage() {} func (*AssistantCidr) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{309} + return fileDescriptor_d789ea45d40d7a6b, []int{317} } func (m *AssistantCidr) XXX_Unmarshal(b []byte) error { @@ -25209,7 +25713,7 @@ func (m *ListCloudSubnetsRequest) Reset() { *m = ListCloudSubnetsRequest func (m *ListCloudSubnetsRequest) String() string { return proto.CompactTextString(m) } func (*ListCloudSubnetsRequest) ProtoMessage() {} func (*ListCloudSubnetsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{310} + return fileDescriptor_d789ea45d40d7a6b, []int{318} } func (m *ListCloudSubnetsRequest) XXX_Unmarshal(b []byte) error { @@ -25307,7 +25811,7 @@ func (m *ListCloudSubnetsResponse) Reset() { *m = ListCloudSubnetsRespon func (m *ListCloudSubnetsResponse) String() string { return proto.CompactTextString(m) } func (*ListCloudSubnetsResponse) ProtoMessage() {} func (*ListCloudSubnetsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{311} + return fileDescriptor_d789ea45d40d7a6b, []int{319} } func (m *ListCloudSubnetsResponse) XXX_Unmarshal(b []byte) error { @@ -25376,7 +25880,7 @@ func (m *Subnet) Reset() { *m = Subnet{} } func (m *Subnet) String() string { return proto.CompactTextString(m) } func (*Subnet) ProtoMessage() {} func (*Subnet) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{312} + return fileDescriptor_d789ea45d40d7a6b, []int{320} } func (m *Subnet) XXX_Unmarshal(b []byte) error { @@ -25482,7 +25986,7 @@ func (m *CheckCidrConflictFromVpcRequest) Reset() { *m = CheckCidrConfli func (m *CheckCidrConflictFromVpcRequest) String() string { return proto.CompactTextString(m) } func (*CheckCidrConflictFromVpcRequest) ProtoMessage() {} func (*CheckCidrConflictFromVpcRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{313} + return fileDescriptor_d789ea45d40d7a6b, []int{321} } func (m *CheckCidrConflictFromVpcRequest) XXX_Unmarshal(b []byte) error { @@ -25552,7 +26056,7 @@ func (m *CheckCidrConflictFromVpcResponse) Reset() { *m = CheckCidrConfl func (m *CheckCidrConflictFromVpcResponse) String() string { return proto.CompactTextString(m) } func (*CheckCidrConflictFromVpcResponse) ProtoMessage() {} func (*CheckCidrConflictFromVpcResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{314} + return fileDescriptor_d789ea45d40d7a6b, []int{322} } func (m *CheckCidrConflictFromVpcResponse) XXX_Unmarshal(b []byte) error { @@ -25612,7 +26116,7 @@ func (m *ConflictInfo) Reset() { *m = ConflictInfo{} } func (m *ConflictInfo) String() string { return proto.CompactTextString(m) } func (*ConflictInfo) ProtoMessage() {} func (*ConflictInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{315} + return fileDescriptor_d789ea45d40d7a6b, []int{323} } func (m *ConflictInfo) XXX_Unmarshal(b []byte) error { @@ -25654,7 +26158,7 @@ func (m *ListCloudSecurityGroupsRequest) Reset() { *m = ListCloudSecurit func (m *ListCloudSecurityGroupsRequest) String() string { return proto.CompactTextString(m) } func (*ListCloudSecurityGroupsRequest) ProtoMessage() {} func (*ListCloudSecurityGroupsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{316} + return fileDescriptor_d789ea45d40d7a6b, []int{324} } func (m *ListCloudSecurityGroupsRequest) XXX_Unmarshal(b []byte) error { @@ -25717,7 +26221,7 @@ func (m *ListCloudSecurityGroupsResponse) Reset() { *m = ListCloudSecuri func (m *ListCloudSecurityGroupsResponse) String() string { return proto.CompactTextString(m) } func (*ListCloudSecurityGroupsResponse) ProtoMessage() {} func (*ListCloudSecurityGroupsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{317} + return fileDescriptor_d789ea45d40d7a6b, []int{325} } func (m *ListCloudSecurityGroupsResponse) XXX_Unmarshal(b []byte) error { @@ -25780,7 +26284,7 @@ func (m *ListKeyPairsRequest) Reset() { *m = ListKeyPairsRequest{} } func (m *ListKeyPairsRequest) String() string { return proto.CompactTextString(m) } func (*ListKeyPairsRequest) ProtoMessage() {} func (*ListKeyPairsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{318} + return fileDescriptor_d789ea45d40d7a6b, []int{326} } func (m *ListKeyPairsRequest) XXX_Unmarshal(b []byte) error { @@ -25843,7 +26347,7 @@ func (m *ListKeyPairsResponse) Reset() { *m = ListKeyPairsResponse{} } func (m *ListKeyPairsResponse) String() string { return proto.CompactTextString(m) } func (*ListKeyPairsResponse) ProtoMessage() {} func (*ListKeyPairsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{319} + return fileDescriptor_d789ea45d40d7a6b, []int{327} } func (m *ListKeyPairsResponse) XXX_Unmarshal(b []byte) error { @@ -25905,7 +26409,7 @@ func (m *KeyPair) Reset() { *m = KeyPair{} } func (m *KeyPair) String() string { return proto.CompactTextString(m) } func (*KeyPair) ProtoMessage() {} func (*KeyPair) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{320} + return fileDescriptor_d789ea45d40d7a6b, []int{328} } func (m *KeyPair) XXX_Unmarshal(b []byte) error { @@ -25975,7 +26479,7 @@ func (m *ListOperationLogsRequest) Reset() { *m = ListOperationLogsReque func (m *ListOperationLogsRequest) String() string { return proto.CompactTextString(m) } func (*ListOperationLogsRequest) ProtoMessage() {} func (*ListOperationLogsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{321} + return fileDescriptor_d789ea45d40d7a6b, []int{329} } func (m *ListOperationLogsRequest) XXX_Unmarshal(b []byte) error { @@ -26136,7 +26640,7 @@ func (m *ListTaskStepLogsRequest) Reset() { *m = ListTaskStepLogsRequest func (m *ListTaskStepLogsRequest) String() string { return proto.CompactTextString(m) } func (*ListTaskStepLogsRequest) ProtoMessage() {} func (*ListTaskStepLogsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{322} + return fileDescriptor_d789ea45d40d7a6b, []int{330} } func (m *ListTaskStepLogsRequest) XXX_Unmarshal(b []byte) error { @@ -26199,7 +26703,7 @@ func (m *ListOperationLogsResponse) Reset() { *m = ListOperationLogsResp func (m *ListOperationLogsResponse) String() string { return proto.CompactTextString(m) } func (*ListOperationLogsResponse) ProtoMessage() {} func (*ListOperationLogsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{323} + return fileDescriptor_d789ea45d40d7a6b, []int{331} } func (m *ListOperationLogsResponse) XXX_Unmarshal(b []byte) error { @@ -26259,7 +26763,7 @@ func (m *ListTaskRecordsRequest) Reset() { *m = ListTaskRecordsRequest{} func (m *ListTaskRecordsRequest) String() string { return proto.CompactTextString(m) } func (*ListTaskRecordsRequest) ProtoMessage() {} func (*ListTaskRecordsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{324} + return fileDescriptor_d789ea45d40d7a6b, []int{332} } func (m *ListTaskRecordsRequest) XXX_Unmarshal(b []byte) error { @@ -26301,7 +26805,7 @@ func (m *ListTaskRecordsResponse) Reset() { *m = ListTaskRecordsResponse func (m *ListTaskRecordsResponse) String() string { return proto.CompactTextString(m) } func (*ListTaskRecordsResponse) ProtoMessage() {} func (*ListTaskRecordsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{325} + return fileDescriptor_d789ea45d40d7a6b, []int{333} } func (m *ListTaskRecordsResponse) XXX_Unmarshal(b []byte) error { @@ -26362,7 +26866,7 @@ func (m *TaskRecordsResponseData) Reset() { *m = TaskRecordsResponseData func (m *TaskRecordsResponseData) String() string { return proto.CompactTextString(m) } func (*TaskRecordsResponseData) ProtoMessage() {} func (*TaskRecordsResponseData) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{326} + return fileDescriptor_d789ea45d40d7a6b, []int{334} } func (m *TaskRecordsResponseData) XXX_Unmarshal(b []byte) error { @@ -26414,7 +26918,7 @@ func (m *TaskRecordStep) Reset() { *m = TaskRecordStep{} } func (m *TaskRecordStep) String() string { return proto.CompactTextString(m) } func (*TaskRecordStep) ProtoMessage() {} func (*TaskRecordStep) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{327} + return fileDescriptor_d789ea45d40d7a6b, []int{335} } func (m *TaskRecordStep) XXX_Unmarshal(b []byte) error { @@ -26497,7 +27001,7 @@ func (m *TaskRecordStepData) Reset() { *m = TaskRecordStepData{} } func (m *TaskRecordStepData) String() string { return proto.CompactTextString(m) } func (*TaskRecordStepData) ProtoMessage() {} func (*TaskRecordStepData) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{328} + return fileDescriptor_d789ea45d40d7a6b, []int{336} } func (m *TaskRecordStepData) XXX_Unmarshal(b []byte) error { @@ -26551,7 +27055,7 @@ func (m *ListOperationLogsResponseData) Reset() { *m = ListOperationLogs func (m *ListOperationLogsResponseData) String() string { return proto.CompactTextString(m) } func (*ListOperationLogsResponseData) ProtoMessage() {} func (*ListOperationLogsResponseData) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{329} + return fileDescriptor_d789ea45d40d7a6b, []int{337} } func (m *ListOperationLogsResponseData) XXX_Unmarshal(b []byte) error { @@ -26606,7 +27110,7 @@ func (m *OperationLogDetail) Reset() { *m = OperationLogDetail{} } func (m *OperationLogDetail) String() string { return proto.CompactTextString(m) } func (*OperationLogDetail) ProtoMessage() {} func (*OperationLogDetail) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{330} + return fileDescriptor_d789ea45d40d7a6b, []int{338} } func (m *OperationLogDetail) XXX_Unmarshal(b []byte) error { @@ -26711,7 +27215,7 @@ func (m *ListTaskStepLogsResponse) Reset() { *m = ListTaskStepLogsRespon func (m *ListTaskStepLogsResponse) String() string { return proto.CompactTextString(m) } func (*ListTaskStepLogsResponse) ProtoMessage() {} func (*ListTaskStepLogsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{331} + return fileDescriptor_d789ea45d40d7a6b, []int{339} } func (m *ListTaskStepLogsResponse) XXX_Unmarshal(b []byte) error { @@ -26772,7 +27276,7 @@ func (m *ListTaskStepLogsResponseData) Reset() { *m = ListTaskStepLogsRe func (m *ListTaskStepLogsResponseData) String() string { return proto.CompactTextString(m) } func (*ListTaskStepLogsResponseData) ProtoMessage() {} func (*ListTaskStepLogsResponseData) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{332} + return fileDescriptor_d789ea45d40d7a6b, []int{340} } func (m *ListTaskStepLogsResponseData) XXX_Unmarshal(b []byte) error { @@ -26822,7 +27326,7 @@ func (m *TaskStepLogDetail) Reset() { *m = TaskStepLogDetail{} } func (m *TaskStepLogDetail) String() string { return proto.CompactTextString(m) } func (*TaskStepLogDetail) ProtoMessage() {} func (*TaskStepLogDetail) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{333} + return fileDescriptor_d789ea45d40d7a6b, []int{341} } func (m *TaskStepLogDetail) XXX_Unmarshal(b []byte) error { @@ -26891,7 +27395,7 @@ func (m *CleanDbHistoryDataRequest) Reset() { *m = CleanDbHistoryDataReq func (m *CleanDbHistoryDataRequest) String() string { return proto.CompactTextString(m) } func (*CleanDbHistoryDataRequest) ProtoMessage() {} func (*CleanDbHistoryDataRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{334} + return fileDescriptor_d789ea45d40d7a6b, []int{342} } func (m *CleanDbHistoryDataRequest) XXX_Unmarshal(b []byte) error { @@ -26946,7 +27450,7 @@ func (m *CleanDbHistoryDataResponse) Reset() { *m = CleanDbHistoryDataRe func (m *CleanDbHistoryDataResponse) String() string { return proto.CompactTextString(m) } func (*CleanDbHistoryDataResponse) ProtoMessage() {} func (*CleanDbHistoryDataResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{335} + return fileDescriptor_d789ea45d40d7a6b, []int{343} } func (m *CleanDbHistoryDataResponse) XXX_Unmarshal(b []byte) error { @@ -27001,7 +27505,7 @@ func (m *SecurityGroup) Reset() { *m = SecurityGroup{} } func (m *SecurityGroup) String() string { return proto.CompactTextString(m) } func (*SecurityGroup) ProtoMessage() {} func (*SecurityGroup) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{336} + return fileDescriptor_d789ea45d40d7a6b, []int{344} } func (m *SecurityGroup) XXX_Unmarshal(b []byte) error { @@ -27055,7 +27559,7 @@ func (m *NodeOperationStatus) Reset() { *m = NodeOperationStatus{} } func (m *NodeOperationStatus) String() string { return proto.CompactTextString(m) } func (*NodeOperationStatus) ProtoMessage() {} func (*NodeOperationStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{337} + return fileDescriptor_d789ea45d40d7a6b, []int{345} } func (m *NodeOperationStatus) XXX_Unmarshal(b []byte) error { @@ -27102,7 +27606,7 @@ func (m *NodeOperationStatusInfo) Reset() { *m = NodeOperationStatusInfo func (m *NodeOperationStatusInfo) String() string { return proto.CompactTextString(m) } func (*NodeOperationStatusInfo) ProtoMessage() {} func (*NodeOperationStatusInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{338} + return fileDescriptor_d789ea45d40d7a6b, []int{346} } func (m *NodeOperationStatusInfo) XXX_Unmarshal(b []byte) error { @@ -27160,7 +27664,7 @@ func (m *DrainNodeRequest) Reset() { *m = DrainNodeRequest{} } func (m *DrainNodeRequest) String() string { return proto.CompactTextString(m) } func (*DrainNodeRequest) ProtoMessage() {} func (*DrainNodeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{339} + return fileDescriptor_d789ea45d40d7a6b, []int{347} } func (m *DrainNodeRequest) XXX_Unmarshal(b []byte) error { @@ -27286,7 +27790,7 @@ func (m *DrainNodeResponse) Reset() { *m = DrainNodeResponse{} } func (m *DrainNodeResponse) String() string { return proto.CompactTextString(m) } func (*DrainNodeResponse) ProtoMessage() {} func (*DrainNodeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{340} + return fileDescriptor_d789ea45d40d7a6b, []int{348} } func (m *DrainNodeResponse) XXX_Unmarshal(b []byte) error { @@ -27347,7 +27851,7 @@ func (m *NodeAnnotation) Reset() { *m = NodeAnnotation{} } func (m *NodeAnnotation) String() string { return proto.CompactTextString(m) } func (*NodeAnnotation) ProtoMessage() {} func (*NodeAnnotation) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{341} + return fileDescriptor_d789ea45d40d7a6b, []int{349} } func (m *NodeAnnotation) XXX_Unmarshal(b []byte) error { @@ -27394,7 +27898,7 @@ func (m *UpdateNodeAnnotationsRequest) Reset() { *m = UpdateNodeAnnotati func (m *UpdateNodeAnnotationsRequest) String() string { return proto.CompactTextString(m) } func (*UpdateNodeAnnotationsRequest) ProtoMessage() {} func (*UpdateNodeAnnotationsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{342} + return fileDescriptor_d789ea45d40d7a6b, []int{350} } func (m *UpdateNodeAnnotationsRequest) XXX_Unmarshal(b []byte) error { @@ -27443,7 +27947,7 @@ func (m *UpdateNodeAnnotationsResponse) Reset() { *m = UpdateNodeAnnotat func (m *UpdateNodeAnnotationsResponse) String() string { return proto.CompactTextString(m) } func (*UpdateNodeAnnotationsResponse) ProtoMessage() {} func (*UpdateNodeAnnotationsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{343} + return fileDescriptor_d789ea45d40d7a6b, []int{351} } func (m *UpdateNodeAnnotationsResponse) XXX_Unmarshal(b []byte) error { @@ -27504,7 +28008,7 @@ func (m *NodeLabel) Reset() { *m = NodeLabel{} } func (m *NodeLabel) String() string { return proto.CompactTextString(m) } func (*NodeLabel) ProtoMessage() {} func (*NodeLabel) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{344} + return fileDescriptor_d789ea45d40d7a6b, []int{352} } func (m *NodeLabel) XXX_Unmarshal(b []byte) error { @@ -27551,7 +28055,7 @@ func (m *UpdateNodeLabelsRequest) Reset() { *m = UpdateNodeLabelsRequest func (m *UpdateNodeLabelsRequest) String() string { return proto.CompactTextString(m) } func (*UpdateNodeLabelsRequest) ProtoMessage() {} func (*UpdateNodeLabelsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{345} + return fileDescriptor_d789ea45d40d7a6b, []int{353} } func (m *UpdateNodeLabelsRequest) XXX_Unmarshal(b []byte) error { @@ -27600,7 +28104,7 @@ func (m *UpdateNodeLabelsResponse) Reset() { *m = UpdateNodeLabelsRespon func (m *UpdateNodeLabelsResponse) String() string { return proto.CompactTextString(m) } func (*UpdateNodeLabelsResponse) ProtoMessage() {} func (*UpdateNodeLabelsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{346} + return fileDescriptor_d789ea45d40d7a6b, []int{354} } func (m *UpdateNodeLabelsResponse) XXX_Unmarshal(b []byte) error { @@ -27661,7 +28165,7 @@ func (m *NodeTaint) Reset() { *m = NodeTaint{} } func (m *NodeTaint) String() string { return proto.CompactTextString(m) } func (*NodeTaint) ProtoMessage() {} func (*NodeTaint) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{347} + return fileDescriptor_d789ea45d40d7a6b, []int{355} } func (m *NodeTaint) XXX_Unmarshal(b []byte) error { @@ -27708,7 +28212,7 @@ func (m *UpdateNodeTaintsRequest) Reset() { *m = UpdateNodeTaintsRequest func (m *UpdateNodeTaintsRequest) String() string { return proto.CompactTextString(m) } func (*UpdateNodeTaintsRequest) ProtoMessage() {} func (*UpdateNodeTaintsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{348} + return fileDescriptor_d789ea45d40d7a6b, []int{356} } func (m *UpdateNodeTaintsRequest) XXX_Unmarshal(b []byte) error { @@ -27757,7 +28261,7 @@ func (m *UpdateNodeTaintsResponse) Reset() { *m = UpdateNodeTaintsRespon func (m *UpdateNodeTaintsResponse) String() string { return proto.CompactTextString(m) } func (*UpdateNodeTaintsResponse) ProtoMessage() {} func (*UpdateNodeTaintsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{349} + return fileDescriptor_d789ea45d40d7a6b, []int{357} } func (m *UpdateNodeTaintsResponse) XXX_Unmarshal(b []byte) error { @@ -27816,7 +28320,7 @@ func (m *HealthRequest) Reset() { *m = HealthRequest{} } func (m *HealthRequest) String() string { return proto.CompactTextString(m) } func (*HealthRequest) ProtoMessage() {} func (*HealthRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{350} + return fileDescriptor_d789ea45d40d7a6b, []int{358} } func (m *HealthRequest) XXX_Unmarshal(b []byte) error { @@ -27850,7 +28354,7 @@ func (m *HealthResponse) Reset() { *m = HealthResponse{} } func (m *HealthResponse) String() string { return proto.CompactTextString(m) } func (*HealthResponse) ProtoMessage() {} func (*HealthResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{351} + return fileDescriptor_d789ea45d40d7a6b, []int{359} } func (m *HealthResponse) XXX_Unmarshal(b []byte) error { @@ -27903,7 +28407,7 @@ func (m *ListResourceSchemaRequest) Reset() { *m = ListResourceSchemaReq func (m *ListResourceSchemaRequest) String() string { return proto.CompactTextString(m) } func (*ListResourceSchemaRequest) ProtoMessage() {} func (*ListResourceSchemaRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{352} + return fileDescriptor_d789ea45d40d7a6b, []int{360} } func (m *ListResourceSchemaRequest) XXX_Unmarshal(b []byte) error { @@ -27943,7 +28447,7 @@ func (m *GetResourceSchemaRequest) Reset() { *m = GetResourceSchemaReque func (m *GetResourceSchemaRequest) String() string { return proto.CompactTextString(m) } func (*GetResourceSchemaRequest) ProtoMessage() {} func (*GetResourceSchemaRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{353} + return fileDescriptor_d789ea45d40d7a6b, []int{361} } func (m *GetResourceSchemaRequest) XXX_Unmarshal(b []byte) error { @@ -27994,7 +28498,7 @@ func (m *QueryPermByActionIDReqData) Reset() { *m = QueryPermByActionIDR func (m *QueryPermByActionIDReqData) String() string { return proto.CompactTextString(m) } func (*QueryPermByActionIDReqData) ProtoMessage() {} func (*QueryPermByActionIDReqData) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{354} + return fileDescriptor_d789ea45d40d7a6b, []int{362} } func (m *QueryPermByActionIDReqData) XXX_Unmarshal(b []byte) error { @@ -28069,7 +28573,7 @@ func (m *QueryPermByActionIDRequest) Reset() { *m = QueryPermByActionIDR func (m *QueryPermByActionIDRequest) String() string { return proto.CompactTextString(m) } func (*QueryPermByActionIDRequest) ProtoMessage() {} func (*QueryPermByActionIDRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{355} + return fileDescriptor_d789ea45d40d7a6b, []int{363} } func (m *QueryPermByActionIDRequest) XXX_Unmarshal(b []byte) error { @@ -28115,7 +28619,7 @@ func (m *Perms) Reset() { *m = Perms{} } func (m *Perms) String() string { return proto.CompactTextString(m) } func (*Perms) ProtoMessage() {} func (*Perms) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{356} + return fileDescriptor_d789ea45d40d7a6b, []int{364} } func (m *Perms) XXX_Unmarshal(b []byte) error { @@ -28155,7 +28659,7 @@ func (m *QueryPermByActionIDResponse) Reset() { *m = QueryPermByActionID func (m *QueryPermByActionIDResponse) String() string { return proto.CompactTextString(m) } func (*QueryPermByActionIDResponse) ProtoMessage() {} func (*QueryPermByActionIDResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{357} + return fileDescriptor_d789ea45d40d7a6b, []int{365} } func (m *QueryPermByActionIDResponse) XXX_Unmarshal(b []byte) error { @@ -28204,7 +28708,7 @@ func (m *CommonResp) Reset() { *m = CommonResp{} } func (m *CommonResp) String() string { return proto.CompactTextString(m) } func (*CommonResp) ProtoMessage() {} func (*CommonResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{358} + return fileDescriptor_d789ea45d40d7a6b, []int{366} } func (m *CommonResp) XXX_Unmarshal(b []byte) error { @@ -28267,7 +28771,7 @@ func (m *CommonListResp) Reset() { *m = CommonListResp{} } func (m *CommonListResp) String() string { return proto.CompactTextString(m) } func (*CommonListResp) ProtoMessage() {} func (*CommonListResp) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{359} + return fileDescriptor_d789ea45d40d7a6b, []int{367} } func (m *CommonListResp) XXX_Unmarshal(b []byte) error { @@ -28327,7 +28831,7 @@ func (m *ListBKCloudRequest) Reset() { *m = ListBKCloudRequest{} } func (m *ListBKCloudRequest) String() string { return proto.CompactTextString(m) } func (*ListBKCloudRequest) ProtoMessage() {} func (*ListBKCloudRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{360} + return fileDescriptor_d789ea45d40d7a6b, []int{368} } func (m *ListBKCloudRequest) XXX_Unmarshal(b []byte) error { @@ -28362,7 +28866,7 @@ func (m *ListCCTopologyRequest) Reset() { *m = ListCCTopologyRequest{} } func (m *ListCCTopologyRequest) String() string { return proto.CompactTextString(m) } func (*ListCCTopologyRequest) ProtoMessage() {} func (*ListCCTopologyRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{361} + return fileDescriptor_d789ea45d40d7a6b, []int{369} } func (m *ListCCTopologyRequest) XXX_Unmarshal(b []byte) error { @@ -28418,7 +28922,7 @@ func (m *GetBkSopsTemplateListRequest) Reset() { *m = GetBkSopsTemplateL func (m *GetBkSopsTemplateListRequest) String() string { return proto.CompactTextString(m) } func (*GetBkSopsTemplateListRequest) ProtoMessage() {} func (*GetBkSopsTemplateListRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{362} + return fileDescriptor_d789ea45d40d7a6b, []int{370} } func (m *GetBkSopsTemplateListRequest) XXX_Unmarshal(b []byte) error { @@ -28480,7 +28984,7 @@ func (m *GetBkSopsTemplateListResponse) Reset() { *m = GetBkSopsTemplate func (m *GetBkSopsTemplateListResponse) String() string { return proto.CompactTextString(m) } func (*GetBkSopsTemplateListResponse) ProtoMessage() {} func (*GetBkSopsTemplateListResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{363} + return fileDescriptor_d789ea45d40d7a6b, []int{371} } func (m *GetBkSopsTemplateListResponse) XXX_Unmarshal(b []byte) error { @@ -28539,7 +29043,7 @@ func (m *TemplateInfo) Reset() { *m = TemplateInfo{} } func (m *TemplateInfo) String() string { return proto.CompactTextString(m) } func (*TemplateInfo) ProtoMessage() {} func (*TemplateInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{364} + return fileDescriptor_d789ea45d40d7a6b, []int{372} } func (m *TemplateInfo) XXX_Unmarshal(b []byte) error { @@ -28624,7 +29128,7 @@ func (m *GetBkSopsTemplateInfoRequest) Reset() { *m = GetBkSopsTemplateI func (m *GetBkSopsTemplateInfoRequest) String() string { return proto.CompactTextString(m) } func (*GetBkSopsTemplateInfoRequest) ProtoMessage() {} func (*GetBkSopsTemplateInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{365} + return fileDescriptor_d789ea45d40d7a6b, []int{373} } func (m *GetBkSopsTemplateInfoRequest) XXX_Unmarshal(b []byte) error { @@ -28693,7 +29197,7 @@ func (m *GetBkSopsTemplateInfoResponse) Reset() { *m = GetBkSopsTemplate func (m *GetBkSopsTemplateInfoResponse) String() string { return proto.CompactTextString(m) } func (*GetBkSopsTemplateInfoResponse) ProtoMessage() {} func (*GetBkSopsTemplateInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{366} + return fileDescriptor_d789ea45d40d7a6b, []int{374} } func (m *GetBkSopsTemplateInfoResponse) XXX_Unmarshal(b []byte) error { @@ -28747,7 +29251,7 @@ func (m *TemplateDetailInfo) Reset() { *m = TemplateDetailInfo{} } func (m *TemplateDetailInfo) String() string { return proto.CompactTextString(m) } func (*TemplateDetailInfo) ProtoMessage() {} func (*TemplateDetailInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{367} + return fileDescriptor_d789ea45d40d7a6b, []int{375} } func (m *TemplateDetailInfo) XXX_Unmarshal(b []byte) error { @@ -28796,7 +29300,7 @@ func (m *ConstantValue) Reset() { *m = ConstantValue{} } func (m *ConstantValue) String() string { return proto.CompactTextString(m) } func (*ConstantValue) ProtoMessage() {} func (*ConstantValue) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{368} + return fileDescriptor_d789ea45d40d7a6b, []int{376} } func (m *ConstantValue) XXX_Unmarshal(b []byte) error { @@ -28857,7 +29361,7 @@ func (m *GetInnerTemplateValuesRequest) Reset() { *m = GetInnerTemplateV func (m *GetInnerTemplateValuesRequest) String() string { return proto.CompactTextString(m) } func (*GetInnerTemplateValuesRequest) ProtoMessage() {} func (*GetInnerTemplateValuesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{369} + return fileDescriptor_d789ea45d40d7a6b, []int{377} } func (m *GetInnerTemplateValuesRequest) XXX_Unmarshal(b []byte) error { @@ -28905,7 +29409,7 @@ func (m *GetInnerTemplateValuesResponse) Reset() { *m = GetInnerTemplate func (m *GetInnerTemplateValuesResponse) String() string { return proto.CompactTextString(m) } func (*GetInnerTemplateValuesResponse) ProtoMessage() {} func (*GetInnerTemplateValuesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{370} + return fileDescriptor_d789ea45d40d7a6b, []int{378} } func (m *GetInnerTemplateValuesResponse) XXX_Unmarshal(b []byte) error { @@ -28962,7 +29466,7 @@ func (m *TemplateValue) Reset() { *m = TemplateValue{} } func (m *TemplateValue) String() string { return proto.CompactTextString(m) } func (*TemplateValue) ProtoMessage() {} func (*TemplateValue) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{371} + return fileDescriptor_d789ea45d40d7a6b, []int{379} } func (m *TemplateValue) XXX_Unmarshal(b []byte) error { @@ -29033,7 +29537,7 @@ func (m *DebugBkSopsTaskRequest) Reset() { *m = DebugBkSopsTaskRequest{} func (m *DebugBkSopsTaskRequest) String() string { return proto.CompactTextString(m) } func (*DebugBkSopsTaskRequest) ProtoMessage() {} func (*DebugBkSopsTaskRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{372} + return fileDescriptor_d789ea45d40d7a6b, []int{380} } func (m *DebugBkSopsTaskRequest) XXX_Unmarshal(b []byte) error { @@ -29102,7 +29606,7 @@ func (m *DebugBkSopsTaskResponse) Reset() { *m = DebugBkSopsTaskResponse func (m *DebugBkSopsTaskResponse) String() string { return proto.CompactTextString(m) } func (*DebugBkSopsTaskResponse) ProtoMessage() {} func (*DebugBkSopsTaskResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{373} + return fileDescriptor_d789ea45d40d7a6b, []int{381} } func (m *DebugBkSopsTaskResponse) XXX_Unmarshal(b []byte) error { @@ -29155,7 +29659,7 @@ func (m *DebugBkSopsTaskInfo) Reset() { *m = DebugBkSopsTaskInfo{} } func (m *DebugBkSopsTaskInfo) String() string { return proto.CompactTextString(m) } func (*DebugBkSopsTaskInfo) ProtoMessage() {} func (*DebugBkSopsTaskInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{374} + return fileDescriptor_d789ea45d40d7a6b, []int{382} } func (m *DebugBkSopsTaskInfo) XXX_Unmarshal(b []byte) error { @@ -29210,7 +29714,7 @@ func (m *CloudModuleFlag) Reset() { *m = CloudModuleFlag{} } func (m *CloudModuleFlag) String() string { return proto.CompactTextString(m) } func (*CloudModuleFlag) ProtoMessage() {} func (*CloudModuleFlag) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{375} + return fileDescriptor_d789ea45d40d7a6b, []int{383} } func (m *CloudModuleFlag) XXX_Unmarshal(b []byte) error { @@ -29362,7 +29866,7 @@ func (m *FlagInfo) Reset() { *m = FlagInfo{} } func (m *FlagInfo) String() string { return proto.CompactTextString(m) } func (*FlagInfo) ProtoMessage() {} func (*FlagInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{376} + return fileDescriptor_d789ea45d40d7a6b, []int{384} } func (m *FlagInfo) XXX_Unmarshal(b []byte) error { @@ -29458,7 +29962,7 @@ func (m *ValueRegex) Reset() { *m = ValueRegex{} } func (m *ValueRegex) String() string { return proto.CompactTextString(m) } func (*ValueRegex) ProtoMessage() {} func (*ValueRegex) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{377} + return fileDescriptor_d789ea45d40d7a6b, []int{385} } func (m *ValueRegex) XXX_Unmarshal(b []byte) error { @@ -29505,7 +30009,7 @@ func (m *NumberRange) Reset() { *m = NumberRange{} } func (m *NumberRange) String() string { return proto.CompactTextString(m) } func (*NumberRange) ProtoMessage() {} func (*NumberRange) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{378} + return fileDescriptor_d789ea45d40d7a6b, []int{386} } func (m *NumberRange) XXX_Unmarshal(b []byte) error { @@ -29555,7 +30059,7 @@ func (m *CreateCloudModuleFlagRequest) Reset() { *m = CreateCloudModuleF func (m *CreateCloudModuleFlagRequest) String() string { return proto.CompactTextString(m) } func (*CreateCloudModuleFlagRequest) ProtoMessage() {} func (*CreateCloudModuleFlagRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{379} + return fileDescriptor_d789ea45d40d7a6b, []int{387} } func (m *CreateCloudModuleFlagRequest) XXX_Unmarshal(b []byte) error { @@ -29623,7 +30127,7 @@ func (m *CreateCloudModuleFlagResponse) Reset() { *m = CreateCloudModule func (m *CreateCloudModuleFlagResponse) String() string { return proto.CompactTextString(m) } func (*CreateCloudModuleFlagResponse) ProtoMessage() {} func (*CreateCloudModuleFlagResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{380} + return fileDescriptor_d789ea45d40d7a6b, []int{388} } func (m *CreateCloudModuleFlagResponse) XXX_Unmarshal(b []byte) error { @@ -29673,7 +30177,7 @@ func (m *UpdateCloudModuleFlagRequest) Reset() { *m = UpdateCloudModuleF func (m *UpdateCloudModuleFlagRequest) String() string { return proto.CompactTextString(m) } func (*UpdateCloudModuleFlagRequest) ProtoMessage() {} func (*UpdateCloudModuleFlagRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{381} + return fileDescriptor_d789ea45d40d7a6b, []int{389} } func (m *UpdateCloudModuleFlagRequest) XXX_Unmarshal(b []byte) error { @@ -29741,7 +30245,7 @@ func (m *UpdateCloudModuleFlagResponse) Reset() { *m = UpdateCloudModule func (m *UpdateCloudModuleFlagResponse) String() string { return proto.CompactTextString(m) } func (*UpdateCloudModuleFlagResponse) ProtoMessage() {} func (*UpdateCloudModuleFlagResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{382} + return fileDescriptor_d789ea45d40d7a6b, []int{390} } func (m *UpdateCloudModuleFlagResponse) XXX_Unmarshal(b []byte) error { @@ -29791,7 +30295,7 @@ func (m *DeleteCloudModuleFlagRequest) Reset() { *m = DeleteCloudModuleF func (m *DeleteCloudModuleFlagRequest) String() string { return proto.CompactTextString(m) } func (*DeleteCloudModuleFlagRequest) ProtoMessage() {} func (*DeleteCloudModuleFlagRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{383} + return fileDescriptor_d789ea45d40d7a6b, []int{391} } func (m *DeleteCloudModuleFlagRequest) XXX_Unmarshal(b []byte) error { @@ -29859,7 +30363,7 @@ func (m *DeleteCloudModuleFlagResponse) Reset() { *m = DeleteCloudModule func (m *DeleteCloudModuleFlagResponse) String() string { return proto.CompactTextString(m) } func (*DeleteCloudModuleFlagResponse) ProtoMessage() {} func (*DeleteCloudModuleFlagResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{384} + return fileDescriptor_d789ea45d40d7a6b, []int{392} } func (m *DeleteCloudModuleFlagResponse) XXX_Unmarshal(b []byte) error { @@ -29909,7 +30413,7 @@ func (m *ListCloudModuleFlagRequest) Reset() { *m = ListCloudModuleFlagR func (m *ListCloudModuleFlagRequest) String() string { return proto.CompactTextString(m) } func (*ListCloudModuleFlagRequest) ProtoMessage() {} func (*ListCloudModuleFlagRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{385} + return fileDescriptor_d789ea45d40d7a6b, []int{393} } func (m *ListCloudModuleFlagRequest) XXX_Unmarshal(b []byte) error { @@ -29978,7 +30482,7 @@ func (m *ListCloudModuleFlagResponse) Reset() { *m = ListCloudModuleFlag func (m *ListCloudModuleFlagResponse) String() string { return proto.CompactTextString(m) } func (*ListCloudModuleFlagResponse) ProtoMessage() {} func (*ListCloudModuleFlagResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{386} + return fileDescriptor_d789ea45d40d7a6b, []int{394} } func (m *ListCloudModuleFlagResponse) XXX_Unmarshal(b []byte) error { @@ -30033,7 +30537,7 @@ func (m *GetExternalNodeScriptRequest) Reset() { *m = GetExternalNodeScr func (m *GetExternalNodeScriptRequest) String() string { return proto.CompactTextString(m) } func (*GetExternalNodeScriptRequest) ProtoMessage() {} func (*GetExternalNodeScriptRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{387} + return fileDescriptor_d789ea45d40d7a6b, []int{395} } func (m *GetExternalNodeScriptRequest) XXX_Unmarshal(b []byte) error { @@ -30090,7 +30594,7 @@ func (m *GetExternalNodeScriptResponse) Reset() { *m = GetExternalNodeSc func (m *GetExternalNodeScriptResponse) String() string { return proto.CompactTextString(m) } func (*GetExternalNodeScriptResponse) ProtoMessage() {} func (*GetExternalNodeScriptResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{388} + return fileDescriptor_d789ea45d40d7a6b, []int{396} } func (m *GetExternalNodeScriptResponse) XXX_Unmarshal(b []byte) error { @@ -30157,7 +30661,7 @@ func (m *MapStruct) Reset() { *m = MapStruct{} } func (m *MapStruct) String() string { return proto.CompactTextString(m) } func (*MapStruct) ProtoMessage() {} func (*MapStruct) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{389} + return fileDescriptor_d789ea45d40d7a6b, []int{397} } func (m *MapStruct) XXX_Unmarshal(b []byte) error { @@ -30202,7 +30706,7 @@ func (m *GetBatchCustomSettingRequest) Reset() { *m = GetBatchCustomSett func (m *GetBatchCustomSettingRequest) String() string { return proto.CompactTextString(m) } func (*GetBatchCustomSettingRequest) ProtoMessage() {} func (*GetBatchCustomSettingRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{390} + return fileDescriptor_d789ea45d40d7a6b, []int{398} } func (m *GetBatchCustomSettingRequest) XXX_Unmarshal(b []byte) error { @@ -30259,7 +30763,7 @@ func (m *GetBatchCustomSettingResponse) Reset() { *m = GetBatchCustomSet func (m *GetBatchCustomSettingResponse) String() string { return proto.CompactTextString(m) } func (*GetBatchCustomSettingResponse) ProtoMessage() {} func (*GetBatchCustomSettingResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{391} + return fileDescriptor_d789ea45d40d7a6b, []int{399} } func (m *GetBatchCustomSettingResponse) XXX_Unmarshal(b []byte) error { @@ -30327,7 +30831,7 @@ func (m *ScopeInfo) Reset() { *m = ScopeInfo{} } func (m *ScopeInfo) String() string { return proto.CompactTextString(m) } func (*ScopeInfo) ProtoMessage() {} func (*ScopeInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{392} + return fileDescriptor_d789ea45d40d7a6b, []int{400} } func (m *ScopeInfo) XXX_Unmarshal(b []byte) error { @@ -30376,7 +30880,7 @@ func (m *GetBizTopologyHostRequest) Reset() { *m = GetBizTopologyHostReq func (m *GetBizTopologyHostRequest) String() string { return proto.CompactTextString(m) } func (*GetBizTopologyHostRequest) ProtoMessage() {} func (*GetBizTopologyHostRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{393} + return fileDescriptor_d789ea45d40d7a6b, []int{401} } func (m *GetBizTopologyHostRequest) XXX_Unmarshal(b []byte) error { @@ -30440,7 +30944,7 @@ func (m *GetBizTopologyHostResponse) Reset() { *m = GetBizTopologyHostRe func (m *GetBizTopologyHostResponse) String() string { return proto.CompactTextString(m) } func (*GetBizTopologyHostResponse) ProtoMessage() {} func (*GetBizTopologyHostResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{394} + return fileDescriptor_d789ea45d40d7a6b, []int{402} } func (m *GetBizTopologyHostResponse) XXX_Unmarshal(b []byte) error { @@ -30508,7 +31012,7 @@ func (m *NodeData) Reset() { *m = NodeData{} } func (m *NodeData) String() string { return proto.CompactTextString(m) } func (*NodeData) ProtoMessage() {} func (*NodeData) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{395} + return fileDescriptor_d789ea45d40d7a6b, []int{403} } func (m *NodeData) XXX_Unmarshal(b []byte) error { @@ -30561,7 +31065,7 @@ func (m *GetTopologyNodesRequest) Reset() { *m = GetTopologyNodesRequest func (m *GetTopologyNodesRequest) String() string { return proto.CompactTextString(m) } func (*GetTopologyNodesRequest) ProtoMessage() {} func (*GetTopologyNodesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{396} + return fileDescriptor_d789ea45d40d7a6b, []int{404} } func (m *GetTopologyNodesRequest) XXX_Unmarshal(b []byte) error { @@ -30653,7 +31157,7 @@ func (m *GetTopologyNodesResponse) Reset() { *m = GetTopologyNodesRespon func (m *GetTopologyNodesResponse) String() string { return proto.CompactTextString(m) } func (*GetTopologyNodesResponse) ProtoMessage() {} func (*GetTopologyNodesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{397} + return fileDescriptor_d789ea45d40d7a6b, []int{405} } func (m *GetTopologyNodesResponse) XXX_Unmarshal(b []byte) error { @@ -30723,7 +31227,7 @@ func (m *GetTopologyNodesData) Reset() { *m = GetTopologyNodesData{} } func (m *GetTopologyNodesData) String() string { return proto.CompactTextString(m) } func (*GetTopologyNodesData) ProtoMessage() {} func (*GetTopologyNodesData) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{398} + return fileDescriptor_d789ea45d40d7a6b, []int{406} } func (m *GetTopologyNodesData) XXX_Unmarshal(b []byte) error { @@ -30789,7 +31293,7 @@ func (m *HostData) Reset() { *m = HostData{} } func (m *HostData) String() string { return proto.CompactTextString(m) } func (*HostData) ProtoMessage() {} func (*HostData) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{399} + return fileDescriptor_d789ea45d40d7a6b, []int{407} } func (m *HostData) XXX_Unmarshal(b []byte) error { @@ -30871,7 +31375,7 @@ func (m *HostCloudArea) Reset() { *m = HostCloudArea{} } func (m *HostCloudArea) String() string { return proto.CompactTextString(m) } func (*HostCloudArea) ProtoMessage() {} func (*HostCloudArea) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{400} + return fileDescriptor_d789ea45d40d7a6b, []int{408} } func (m *HostCloudArea) XXX_Unmarshal(b []byte) error { @@ -30923,7 +31427,7 @@ func (m *GetTopologyHostIdsNodesRequest) Reset() { *m = GetTopologyHostI func (m *GetTopologyHostIdsNodesRequest) String() string { return proto.CompactTextString(m) } func (*GetTopologyHostIdsNodesRequest) ProtoMessage() {} func (*GetTopologyHostIdsNodesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{401} + return fileDescriptor_d789ea45d40d7a6b, []int{409} } func (m *GetTopologyHostIdsNodesRequest) XXX_Unmarshal(b []byte) error { @@ -31008,7 +31512,7 @@ func (m *GetTopologyHostIdsNodesResponse) Reset() { *m = GetTopologyHost func (m *GetTopologyHostIdsNodesResponse) String() string { return proto.CompactTextString(m) } func (*GetTopologyHostIdsNodesResponse) ProtoMessage() {} func (*GetTopologyHostIdsNodesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{402} + return fileDescriptor_d789ea45d40d7a6b, []int{410} } func (m *GetTopologyHostIdsNodesResponse) XXX_Unmarshal(b []byte) error { @@ -31078,7 +31582,7 @@ func (m *GetTopologyHostIdsNodesData) Reset() { *m = GetTopologyHostIdsN func (m *GetTopologyHostIdsNodesData) String() string { return proto.CompactTextString(m) } func (*GetTopologyHostIdsNodesData) ProtoMessage() {} func (*GetTopologyHostIdsNodesData) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{403} + return fileDescriptor_d789ea45d40d7a6b, []int{411} } func (m *GetTopologyHostIdsNodesData) XXX_Unmarshal(b []byte) error { @@ -31139,7 +31643,7 @@ func (m *HostIDsNodeData) Reset() { *m = HostIDsNodeData{} } func (m *HostIDsNodeData) String() string { return proto.CompactTextString(m) } func (*HostIDsNodeData) ProtoMessage() {} func (*HostIDsNodeData) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{404} + return fileDescriptor_d789ea45d40d7a6b, []int{412} } func (m *HostIDsNodeData) XXX_Unmarshal(b []byte) error { @@ -31187,7 +31691,7 @@ func (m *Meta) Reset() { *m = Meta{} } func (m *Meta) String() string { return proto.CompactTextString(m) } func (*Meta) ProtoMessage() {} func (*Meta) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{405} + return fileDescriptor_d789ea45d40d7a6b, []int{413} } func (m *Meta) XXX_Unmarshal(b []byte) error { @@ -31242,7 +31746,7 @@ func (m *GetHostsDetailsRequest) Reset() { *m = GetHostsDetailsRequest{} func (m *GetHostsDetailsRequest) String() string { return proto.CompactTextString(m) } func (*GetHostsDetailsRequest) ProtoMessage() {} func (*GetHostsDetailsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{406} + return fileDescriptor_d789ea45d40d7a6b, []int{414} } func (m *GetHostsDetailsRequest) XXX_Unmarshal(b []byte) error { @@ -31299,7 +31803,7 @@ func (m *GetHostsDetailsResponse) Reset() { *m = GetHostsDetailsResponse func (m *GetHostsDetailsResponse) String() string { return proto.CompactTextString(m) } func (*GetHostsDetailsResponse) ProtoMessage() {} func (*GetHostsDetailsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{407} + return fileDescriptor_d789ea45d40d7a6b, []int{415} } func (m *GetHostsDetailsResponse) XXX_Unmarshal(b []byte) error { @@ -31373,7 +31877,7 @@ func (m *HostDataWithMeta) Reset() { *m = HostDataWithMeta{} } func (m *HostDataWithMeta) String() string { return proto.CompactTextString(m) } func (*HostDataWithMeta) ProtoMessage() {} func (*HostDataWithMeta) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{408} + return fileDescriptor_d789ea45d40d7a6b, []int{416} } func (m *HostDataWithMeta) XXX_Unmarshal(b []byte) error { @@ -31466,7 +31970,7 @@ func (m *GetScopeHostCheckRequest) Reset() { *m = GetScopeHostCheckReque func (m *GetScopeHostCheckRequest) String() string { return proto.CompactTextString(m) } func (*GetScopeHostCheckRequest) ProtoMessage() {} func (*GetScopeHostCheckRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{409} + return fileDescriptor_d789ea45d40d7a6b, []int{417} } func (m *GetScopeHostCheckRequest) XXX_Unmarshal(b []byte) error { @@ -31544,7 +32048,7 @@ func (m *GetScopeHostCheckResponse) Reset() { *m = GetScopeHostCheckResp func (m *GetScopeHostCheckResponse) String() string { return proto.CompactTextString(m) } func (*GetScopeHostCheckResponse) ProtoMessage() {} func (*GetScopeHostCheckResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{410} + return fileDescriptor_d789ea45d40d7a6b, []int{418} } func (m *GetScopeHostCheckResponse) XXX_Unmarshal(b []byte) error { @@ -31614,7 +32118,7 @@ func (m *NotifyConfig) Reset() { *m = NotifyConfig{} } func (m *NotifyConfig) String() string { return proto.CompactTextString(m) } func (*NotifyConfig) ProtoMessage() {} func (*NotifyConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{411} + return fileDescriptor_d789ea45d40d7a6b, []int{419} } func (m *NotifyConfig) XXX_Unmarshal(b []byte) error { @@ -31670,7 +32174,7 @@ func (m *NotifyData) Reset() { *m = NotifyData{} } func (m *NotifyData) String() string { return proto.CompactTextString(m) } func (*NotifyData) ProtoMessage() {} func (*NotifyData) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{412} + return fileDescriptor_d789ea45d40d7a6b, []int{420} } func (m *NotifyData) XXX_Unmarshal(b []byte) error { @@ -31742,7 +32246,7 @@ func (m *NotifyTemplate) Reset() { *m = NotifyTemplate{} } func (m *NotifyTemplate) String() string { return proto.CompactTextString(m) } func (*NotifyTemplate) ProtoMessage() {} func (*NotifyTemplate) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{413} + return fileDescriptor_d789ea45d40d7a6b, []int{421} } func (m *NotifyTemplate) XXX_Unmarshal(b []byte) error { @@ -31921,7 +32425,7 @@ func (m *CreateNotifyTemplateRequest) Reset() { *m = CreateNotifyTemplat func (m *CreateNotifyTemplateRequest) String() string { return proto.CompactTextString(m) } func (*CreateNotifyTemplateRequest) ProtoMessage() {} func (*CreateNotifyTemplateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{414} + return fileDescriptor_d789ea45d40d7a6b, []int{422} } func (m *CreateNotifyTemplateRequest) XXX_Unmarshal(b []byte) error { @@ -32061,7 +32565,7 @@ func (m *CreateNotifyTemplateResponse) Reset() { *m = CreateNotifyTempla func (m *CreateNotifyTemplateResponse) String() string { return proto.CompactTextString(m) } func (*CreateNotifyTemplateResponse) ProtoMessage() {} func (*CreateNotifyTemplateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{415} + return fileDescriptor_d789ea45d40d7a6b, []int{423} } func (m *CreateNotifyTemplateResponse) XXX_Unmarshal(b []byte) error { @@ -32122,7 +32626,7 @@ func (m *DeleteNotifyTemplateRequest) Reset() { *m = DeleteNotifyTemplat func (m *DeleteNotifyTemplateRequest) String() string { return proto.CompactTextString(m) } func (*DeleteNotifyTemplateRequest) ProtoMessage() {} func (*DeleteNotifyTemplateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{416} + return fileDescriptor_d789ea45d40d7a6b, []int{424} } func (m *DeleteNotifyTemplateRequest) XXX_Unmarshal(b []byte) error { @@ -32171,7 +32675,7 @@ func (m *DeleteNotifyTemplateResponse) Reset() { *m = DeleteNotifyTempla func (m *DeleteNotifyTemplateResponse) String() string { return proto.CompactTextString(m) } func (*DeleteNotifyTemplateResponse) ProtoMessage() {} func (*DeleteNotifyTemplateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{417} + return fileDescriptor_d789ea45d40d7a6b, []int{425} } func (m *DeleteNotifyTemplateResponse) XXX_Unmarshal(b []byte) error { @@ -32232,7 +32736,7 @@ func (m *ListNotifyTemplateRequest) Reset() { *m = ListNotifyTemplateReq func (m *ListNotifyTemplateRequest) String() string { return proto.CompactTextString(m) } func (*ListNotifyTemplateRequest) ProtoMessage() {} func (*ListNotifyTemplateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{418} + return fileDescriptor_d789ea45d40d7a6b, []int{426} } func (m *ListNotifyTemplateRequest) XXX_Unmarshal(b []byte) error { @@ -32281,7 +32785,7 @@ func (m *ListNotifyTemplateResponse) Reset() { *m = ListNotifyTemplateRe func (m *ListNotifyTemplateResponse) String() string { return proto.CompactTextString(m) } func (*ListNotifyTemplateResponse) ProtoMessage() {} func (*ListNotifyTemplateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{419} + return fileDescriptor_d789ea45d40d7a6b, []int{427} } func (m *ListNotifyTemplateResponse) XXX_Unmarshal(b []byte) error { @@ -32345,7 +32849,7 @@ func (m *GetProviderResourceUsageRequest) Reset() { *m = GetProviderReso func (m *GetProviderResourceUsageRequest) String() string { return proto.CompactTextString(m) } func (*GetProviderResourceUsageRequest) ProtoMessage() {} func (*GetProviderResourceUsageRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{420} + return fileDescriptor_d789ea45d40d7a6b, []int{428} } func (m *GetProviderResourceUsageRequest) XXX_Unmarshal(b []byte) error { @@ -32415,7 +32919,7 @@ func (m *GetProviderResourceUsageResponse) Reset() { *m = GetProviderRes func (m *GetProviderResourceUsageResponse) String() string { return proto.CompactTextString(m) } func (*GetProviderResourceUsageResponse) ProtoMessage() {} func (*GetProviderResourceUsageResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{421} + return fileDescriptor_d789ea45d40d7a6b, []int{429} } func (m *GetProviderResourceUsageResponse) XXX_Unmarshal(b []byte) error { @@ -32493,7 +32997,7 @@ func (m *BusinessInfo) Reset() { *m = BusinessInfo{} } func (m *BusinessInfo) String() string { return proto.CompactTextString(m) } func (*BusinessInfo) ProtoMessage() {} func (*BusinessInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_d789ea45d40d7a6b, []int{422} + return fileDescriptor_d789ea45d40d7a6b, []int{430} } func (m *BusinessInfo) XXX_Unmarshal(b []byte) error { @@ -32660,6 +33164,7 @@ func init() { proto.RegisterType((*SubnetSource)(nil), "clustermanager.SubnetSource") proto.RegisterType((*ExistedSubnetIDs)(nil), "clustermanager.ExistedSubnetIDs") proto.RegisterType((*NewSubnet)(nil), "clustermanager.NewSubnet") + proto.RegisterType((*UpgradePolicy)(nil), "clustermanager.UpgradePolicy") proto.RegisterType((*ClusterBasicSetting)(nil), "clustermanager.ClusterBasicSetting") proto.RegisterMapType((map[string]string)(nil), "clustermanager.ClusterBasicSetting.ClusterTagsEntry") proto.RegisterType((*ClusterAdvanceSetting)(nil), "clustermanager.ClusterAdvanceSetting") @@ -32796,6 +33301,13 @@ func init() { proto.RegisterMapType((map[string]string)(nil), "clustermanager.NamespaceInfo.LabelsEntry") proto.RegisterType((*NamespaceQuota)(nil), "clustermanager.NamespaceQuota") proto.RegisterType((*CreateVirtualClusterResp)(nil), "clustermanager.CreateVirtualClusterResp") + proto.RegisterType((*RecommendNodeGroupConfReq)(nil), "clustermanager.RecommendNodeGroupConfReq") + proto.RegisterType((*InstanceProfile)(nil), "clustermanager.InstanceProfile") + proto.RegisterType((*HardwareProfile)(nil), "clustermanager.HardwareProfile") + proto.RegisterType((*NetworkProfile)(nil), "clustermanager.NetworkProfile") + proto.RegisterType((*ScalingProfile)(nil), "clustermanager.ScalingProfile") + proto.RegisterType((*RecommendNodeGroupConf)(nil), "clustermanager.RecommendNodeGroupConf") + proto.RegisterType((*RecommendNodeGroupConfResp)(nil), "clustermanager.RecommendNodeGroupConfResp") proto.RegisterType((*KubeConfigReq)(nil), "clustermanager.KubeConfigReq") proto.RegisterType((*KubeConfigConnectReq)(nil), "clustermanager.KubeConfigConnectReq") proto.RegisterType((*KubeConfigResp)(nil), "clustermanager.KubeConfigResp") @@ -33149,4733 +33661,4808 @@ func init() { func init() { proto.RegisterFile("clustermanager.proto", fileDescriptor_d789ea45d40d7a6b) } var fileDescriptor_d789ea45d40d7a6b = []byte{ - // 75607 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6b, 0x50, 0x1c, 0x57, - 0xd6, 0x20, 0xf8, 0x25, 0x7a, 0xc1, 0x45, 0x48, 0x72, 0xda, 0xb2, 0xb1, 0x6c, 0xcb, 0x65, 0xdc, - 0x6d, 0x43, 0x1a, 0xf4, 0x48, 0xbb, 0xfd, 0x90, 0xdb, 0xdd, 0x4e, 0x0a, 0x24, 0x57, 0x0b, 0x21, - 0x9c, 0x20, 0xb9, 0x6d, 0xb7, 0x5b, 0x53, 0x54, 0xa5, 0x50, 0x19, 0xa8, 0xa2, 0xab, 0x0a, 0x24, - 0xb9, 0xbf, 0xe9, 0x2e, 0x10, 0x48, 0x20, 0x15, 0x0f, 0xa5, 0xf5, 0x44, 0xe8, 0x81, 0xad, 0x07, - 0x7e, 0x00, 0x92, 0x2d, 0x4b, 0xa5, 0xa2, 0xb0, 0x62, 0x62, 0x67, 0x62, 0x66, 0x67, 0x26, 0x66, - 0x67, 0x7a, 0x76, 0x27, 0x36, 0xbe, 0xf8, 0xe6, 0xb1, 0xab, 0xca, 0xac, 0xaa, 0x6f, 0xbf, 0x58, - 0x26, 0xbe, 0xdd, 0x8d, 0x8d, 0xf0, 0xfc, 0xd8, 0x8d, 0xbc, 0xe7, 0xe6, 0xcd, 0x9b, 0x55, 0x05, - 0x92, 0x6c, 0x77, 0xf7, 0xe7, 0xdd, 0x4f, 0xa1, 0x08, 0x2a, 0xcf, 0x3d, 0xf7, 0xdc, 0xf7, 0xb9, - 0xe7, 0x9c, 0x7b, 0xee, 0xb9, 0xe8, 0x21, 0x4f, 0x5b, 0x67, 0x28, 0xac, 0x04, 0xdb, 0xdd, 0x7e, - 0x77, 0x8b, 0x12, 0x5c, 0xd7, 0x11, 0x0c, 0x84, 0x03, 0xfc, 0x0a, 0x3b, 0x74, 0xcd, 0xe3, 0x2d, - 0x81, 0x40, 0x4b, 0x9b, 0xb2, 0xde, 0xdd, 0xe1, 0x5b, 0xef, 0xf6, 0xfb, 0x03, 0x61, 0x77, 0xd8, - 0x17, 0xf0, 0x87, 0x00, 0x9b, 0xa6, 0xe2, 0xaf, 0xe6, 0xce, 0xdd, 0xeb, 0x43, 0xe1, 0x60, 0xa7, - 0x27, 0x4c, 0x52, 0x2b, 0xf1, 0x1f, 0x4f, 0x55, 0x8b, 0xe2, 0xaf, 0x0a, 0xed, 0x75, 0xb7, 0xb4, - 0x28, 0xc1, 0xf5, 0x81, 0x0e, 0x9c, 0x3f, 0x0f, 0xad, 0x47, 0xba, 0xdc, 0x6d, 0x3e, 0xaf, 0x3b, - 0xac, 0xac, 0x37, 0x7f, 0x90, 0x84, 0xb5, 0xd9, 0x85, 0xec, 0x0d, 0xba, 0x3b, 0x3a, 0x94, 0x20, - 0xc9, 0x58, 0xf6, 0x7f, 0xac, 0x47, 0xcb, 0x9c, 0x50, 0x6b, 0xfe, 0xd7, 0xa8, 0x88, 0x34, 0xc0, - 0x55, 0x53, 0xca, 0x39, 0xb8, 0xf2, 0xa2, 0xea, 0xd7, 0x55, 0xe9, 0x35, 0xc1, 0x82, 0x8a, 0x1b, - 0xaa, 0x9d, 0x8d, 0xda, 0xc1, 0xbe, 0xcc, 0x81, 0x89, 0xe4, 0xec, 0xed, 0xd4, 0xb1, 0x89, 0xcc, - 0x99, 0x83, 0xa9, 0xaf, 0x2f, 0xba, 0x6a, 0xe6, 0x12, 0x51, 0xfd, 0x42, 0x42, 0x4b, 0x0c, 0x27, - 0x63, 0xf1, 0x6a, 0x67, 0x63, 0xd5, 0xd6, 0x97, 0x1b, 0xab, 0x7e, 0x69, 0xfc, 0x93, 0xad, 0xcc, - 0xfc, 0xeb, 0xa8, 0x98, 0x7c, 0xd4, 0xbb, 0xdb, 0x95, 0xd2, 0x02, 0x5c, 0xc2, 0x5a, 0x55, 0x7a, - 0x4c, 0x60, 0xe1, 0xe2, 0x72, 0x20, 0xaa, 0x8d, 0x0c, 0xa6, 0xae, 0x5c, 0x95, 0xd9, 0x24, 0xfe, - 0x24, 0x87, 0x1e, 0xdc, 0xad, 0x78, 0x95, 0x20, 0x6e, 0xbc, 0x93, 0x56, 0x76, 0x11, 0x26, 0xa5, - 0xa8, 0x52, 0xb3, 0x90, 0x2f, 0x5d, 0xdc, 0xaa, 0x5d, 0xee, 0xd1, 0xcf, 0x8d, 0xa5, 0xa7, 0x2f, - 0x01, 0xed, 0x64, 0x2c, 0x9e, 0xee, 0x3e, 0x96, 0xe9, 0xb9, 0x0c, 0x9f, 0xa9, 0xd1, 0xde, 0x64, - 0x2c, 0x92, 0x39, 0x30, 0xa1, 0xf5, 0x1f, 0x9c, 0x4b, 0x44, 0x53, 0xc7, 0x26, 0xd2, 0xd3, 0x97, - 0x5c, 0x35, 0xe9, 0xa9, 0xab, 0xda, 0xec, 0x71, 0x40, 0x7c, 0x23, 0x10, 0x0a, 0x27, 0x6f, 0x8f, - 0xeb, 0xdd, 0xd3, 0x72, 0xbe, 0x12, 0xf8, 0xad, 0xa8, 0xb0, 0x23, 0x18, 0xe8, 0xf2, 0x79, 0x95, - 0x60, 0xe9, 0x62, 0x5c, 0x9b, 0xf5, 0xaa, 0x54, 0x29, 0x50, 0xa0, 0xe8, 0x20, 0x25, 0xc7, 0x8f, - 0x66, 0xfa, 0x06, 0x53, 0xb3, 0x53, 0x73, 0x89, 0x68, 0x32, 0x16, 0x4f, 0xc6, 0x8f, 0xa6, 0xae, - 0xcd, 0x68, 0xe7, 0x8e, 0xb8, 0x6a, 0x64, 0x8a, 0xcb, 0xbf, 0x84, 0x96, 0x06, 0x95, 0x16, 0x5f, - 0xc0, 0x5f, 0xba, 0x04, 0x93, 0x7a, 0x52, 0x95, 0x1e, 0x17, 0x08, 0x48, 0xe4, 0x49, 0xf7, 0x44, - 0xe3, 0xda, 0xf9, 0xf3, 0xa4, 0x4a, 0x24, 0x8d, 0xaf, 0x43, 0x4b, 0xba, 0x3a, 0x3c, 0xae, 0x9a, - 0xd2, 0xa5, 0x38, 0xdf, 0x8b, 0xaa, 0xf4, 0xbc, 0x00, 0x10, 0x51, 0x80, 0x6c, 0xfa, 0x40, 0x44, - 0x1b, 0x9b, 0xe8, 0xea, 0xf0, 0xcc, 0x25, 0xa2, 0xd0, 0xe0, 0xd4, 0xd0, 0xb4, 0xf6, 0xd1, 0x81, - 0x64, 0xec, 0x48, 0xe6, 0xec, 0x39, 0xed, 0x76, 0x9f, 0x36, 0xfe, 0x99, 0x0c, 0x59, 0xf8, 0x37, - 0x50, 0x51, 0x47, 0x30, 0xf0, 0xbe, 0xe2, 0x09, 0xbb, 0x6a, 0x4a, 0x97, 0x61, 0x8a, 0x82, 0x2a, - 0x3d, 0x2b, 0x58, 0x50, 0x71, 0x8d, 0x45, 0xb5, 0xef, 0xcb, 0x74, 0xf7, 0xb1, 0xd4, 0x68, 0x6f, - 0x66, 0xfc, 0x56, 0xea, 0xcc, 0x94, 0xab, 0x46, 0xb6, 0xd0, 0xf8, 0xfd, 0x08, 0x35, 0x77, 0x86, - 0x7c, 0x7e, 0x25, 0x14, 0x72, 0xd5, 0x94, 0x16, 0x62, 0x52, 0x6f, 0xab, 0xd2, 0x4e, 0x81, 0x01, - 0x8b, 0x6f, 0x40, 0xce, 0xd4, 0xcc, 0x51, 0x6d, 0x6a, 0x14, 0x0f, 0xc9, 0xa8, 0x76, 0x78, 0xdc, - 0x55, 0x53, 0xe9, 0xc8, 0x2d, 0xc4, 0x4c, 0x9b, 0x4b, 0x44, 0xf1, 0x50, 0xe9, 0x67, 0x2f, 0xe9, - 0xf1, 0x91, 0x64, 0x7c, 0xc8, 0xb9, 0xad, 0xa6, 0x5a, 0x66, 0xa8, 0xf2, 0x7b, 0x50, 0xb1, 0xe2, - 0xef, 0xf2, 0x05, 0x03, 0xfe, 0x76, 0xc5, 0x1f, 0x2e, 0x2d, 0xc2, 0x65, 0x6f, 0x56, 0x25, 0xa7, - 0xc0, 0xc2, 0xc5, 0x17, 0xac, 0x32, 0xa6, 0x6f, 0x69, 0x71, 0xa3, 0x0c, 0xd2, 0x31, 0xb8, 0x87, - 0xe7, 0x12, 0xd1, 0x50, 0xd8, 0xdd, 0x32, 0x97, 0x88, 0x7a, 0x95, 0xe6, 0x4e, 0xe3, 0x6f, 0x47, - 0x30, 0xe0, 0x95, 0x59, 0x12, 0xfc, 0x9b, 0x08, 0x29, 0xfe, 0x16, 0x9f, 0x5f, 0x69, 0xda, 0xdf, - 0xa1, 0x94, 0x22, 0x5c, 0xd0, 0x46, 0x55, 0x5a, 0x27, 0x30, 0x60, 0x73, 0x1a, 0xa4, 0x12, 0x27, - 0xf4, 0x21, 0x55, 0x4b, 0x1c, 0xd7, 0x3f, 0x1c, 0x9a, 0x4b, 0x44, 0x5b, 0x5f, 0x0e, 0xdd, 0x89, - 0x74, 0xb7, 0x2b, 0xa1, 0x40, 0x48, 0x66, 0xb0, 0xf9, 0xf7, 0x50, 0xb1, 0x2f, 0x54, 0xbb, 0xcf, - 0x58, 0x02, 0xbe, 0x2e, 0xa5, 0xb4, 0xd8, 0xc1, 0x95, 0x17, 0x56, 0xbf, 0xaa, 0x4a, 0x2f, 0x0b, - 0x2c, 0x5c, 0xac, 0xd0, 0x4f, 0x4d, 0x6b, 0x23, 0x97, 0xa1, 0x53, 0x52, 0x47, 0x3e, 0xd7, 0x06, - 0x2f, 0x40, 0x31, 0xc6, 0x20, 0xcf, 0x9c, 0x4a, 0x4f, 0x19, 0x13, 0x7e, 0xb7, 0xbb, 0x2d, 0xa4, - 0xc8, 0x6c, 0x3e, 0x7e, 0x27, 0x5d, 0x90, 0xb8, 0xca, 0xcb, 0x71, 0x95, 0x5f, 0x50, 0xa5, 0x8d, - 0x02, 0x0b, 0x17, 0xcb, 0x48, 0x9d, 0xf1, 0x44, 0x9d, 0x4b, 0x44, 0xad, 0xf9, 0x7f, 0x27, 0xd2, - 0x1d, 0xf2, 0xf9, 0x5b, 0xda, 0x14, 0x99, 0xcd, 0xc0, 0xef, 0x44, 0x4b, 0xdb, 0xdc, 0xcd, 0x4a, - 0x5b, 0xa8, 0xb4, 0xc4, 0xb1, 0xa8, 0xbc, 0x58, 0x7c, 0x7a, 0x5d, 0x16, 0xbb, 0x24, 0xeb, 0x66, - 0x5d, 0x1d, 0xc6, 0xaa, 0xf5, 0x87, 0x83, 0xfb, 0xab, 0x1f, 0x55, 0xa5, 0x87, 0x05, 0x92, 0xcf, - 0xe4, 0x01, 0xfa, 0x85, 0x43, 0xa9, 0xc9, 0xaf, 0x65, 0x02, 0xe5, 0x5f, 0x43, 0xcb, 0x3c, 0x41, - 0xc5, 0x1d, 0x0e, 0x04, 0x4b, 0x57, 0xe0, 0xba, 0x3e, 0xad, 0x4a, 0x0e, 0xc1, 0x84, 0x89, 0xab, - 0xc9, 0x12, 0xc3, 0x23, 0xa6, 0xf5, 0x9f, 0xd1, 0x66, 0xe2, 0xe9, 0x48, 0x9f, 0x6c, 0xa6, 0xf3, - 0x6b, 0x11, 0xc2, 0x3f, 0x95, 0x26, 0x5f, 0xbb, 0x52, 0xba, 0xd2, 0xa0, 0x20, 0x33, 0x10, 0x23, - 0xbd, 0xb3, 0xc3, 0x6b, 0xa6, 0xaf, 0x82, 0x74, 0x0b, 0xc2, 0x77, 0x17, 0xa0, 0xa2, 0x66, 0x4f, - 0x48, 0xf2, 0x7a, 0x03, 0xfe, 0x50, 0xe9, 0x03, 0xb8, 0x69, 0xcf, 0xcc, 0xd7, 0xb4, 0x6a, 0x13, - 0x11, 0x5a, 0x17, 0xe7, 0x54, 0xe9, 0x06, 0x27, 0x58, 0xf9, 0xc5, 0x09, 0x0e, 0xaa, 0x48, 0x5a, - 0x7a, 0xf2, 0x46, 0xfa, 0xf6, 0x99, 0xf4, 0x78, 0x14, 0x18, 0x6c, 0x6a, 0x76, 0x4a, 0x1f, 0x56, - 0x93, 0x33, 0x37, 0xb4, 0xa9, 0x81, 0xf4, 0xc7, 0x7d, 0x30, 0xcd, 0xa1, 0x61, 0xc9, 0xc4, 0x68, - 0xea, 0xfa, 0x47, 0x5a, 0xe2, 0x78, 0x32, 0x7e, 0x34, 0x19, 0x3b, 0x0c, 0xe3, 0x0b, 0x3c, 0x05, - 0x10, 0x80, 0x8e, 0x36, 0x7d, 0x4b, 0x9f, 0x3e, 0x96, 0x8c, 0x0d, 0xa5, 0xc7, 0x2f, 0x69, 0x7d, - 0x06, 0x05, 0x28, 0x17, 0xf0, 0xb5, 0x31, 0xc2, 0xba, 0xf5, 0xc9, 0x8f, 0xb5, 0x58, 0x4c, 0xeb, - 0x3f, 0xab, 0x5d, 0x39, 0xa2, 0x45, 0x4f, 0x24, 0x6f, 0x1d, 0xd1, 0x46, 0x86, 0x80, 0x42, 0xfa, - 0xea, 0x81, 0xd4, 0xb1, 0x89, 0x3b, 0x91, 0x1e, 0xd9, 0xaa, 0x35, 0xdf, 0x57, 0x80, 0x8a, 0x95, - 0x7d, 0xe1, 0xa0, 0x9b, 0xf4, 0x02, 0x8f, 0x7b, 0xa1, 0x7c, 0xbe, 0x5e, 0xa8, 0xb5, 0x50, 0xa1, - 0x1f, 0x62, 0x9c, 0x2a, 0x5d, 0xe7, 0x04, 0x96, 0x86, 0x78, 0x31, 0xbb, 0x27, 0x32, 0x1f, 0x9d, - 0xd5, 0x2e, 0x9e, 0xd0, 0x07, 0x3e, 0xd1, 0xae, 0x1d, 0x4f, 0x26, 0x2e, 0x64, 0x22, 0xaa, 0xb1, - 0xe4, 0xcd, 0x85, 0x68, 0x70, 0x71, 0xcc, 0xb9, 0x92, 0xb1, 0x78, 0xe6, 0xa3, 0xde, 0xd4, 0xf1, - 0xd3, 0xc9, 0x78, 0x54, 0x3f, 0x71, 0x6b, 0x7d, 0x32, 0x36, 0x60, 0xfc, 0xd1, 0xc7, 0x06, 0xb5, - 0xc3, 0xe3, 0xda, 0xf1, 0x83, 0x84, 0x00, 0xde, 0xa8, 0xe6, 0x6b, 0x7f, 0xea, 0xf0, 0x0d, 0x3d, - 0xd2, 0x0d, 0xbd, 0x90, 0xdb, 0xf8, 0x64, 0x6c, 0x08, 0x06, 0xc0, 0xe8, 0x05, 0xb6, 0xce, 0xfc, - 0x0e, 0x54, 0x18, 0xda, 0x1f, 0x0a, 0x2b, 0xed, 0xae, 0x9a, 0xd2, 0x07, 0xf1, 0x5c, 0x7c, 0x45, - 0x95, 0x5e, 0x14, 0x28, 0x50, 0x14, 0x5a, 0x3b, 0x9b, 0x95, 0xa0, 0x5f, 0x09, 0x2b, 0x21, 0xc2, - 0xb0, 0xc7, 0x26, 0xb4, 0x91, 0xde, 0x64, 0xfc, 0xa8, 0x76, 0xeb, 0x4b, 0x6d, 0xf8, 0x6a, 0x32, - 0x76, 0x38, 0xfd, 0x55, 0xaf, 0x1e, 0x1f, 0x31, 0x38, 0xbf, 0x99, 0x8b, 0xbf, 0xce, 0x21, 0x04, - 0x7d, 0x88, 0x57, 0xe4, 0x43, 0x98, 0xf2, 0x87, 0x9c, 0x2a, 0x0d, 0x73, 0x02, 0x93, 0x20, 0x46, - 0x38, 0x52, 0xfd, 0xa9, 0xf1, 0xd4, 0xc8, 0x41, 0xba, 0x32, 0xb5, 0xbe, 0xcf, 0xf5, 0xb1, 0x81, - 0x64, 0xfc, 0xa8, 0x7e, 0xf2, 0x46, 0xea, 0xd8, 0x79, 0xfd, 0x78, 0xff, 0x5c, 0x22, 0xba, 0x4d, - 0xaa, 0x97, 0xb6, 0xd4, 0xd6, 0xec, 0x72, 0xd6, 0xed, 0x68, 0x6c, 0xaa, 0x95, 0xcb, 0x61, 0xde, - 0xe8, 0x03, 0xa7, 0x52, 0x53, 0xe3, 0x40, 0xa5, 0x62, 0x2e, 0x11, 0x75, 0xd5, 0xd7, 0xd4, 0x36, - 0xd4, 0xd6, 0xd7, 0xd4, 0xd6, 0x37, 0x51, 0xcc, 0xd4, 0x91, 0xcf, 0x53, 0x9f, 0x1d, 0xa1, 0xac, - 0x24, 0x7d, 0xe8, 0xd3, 0xf4, 0x78, 0x34, 0x35, 0x73, 0x5d, 0x3f, 0x7c, 0xb1, 0x42, 0x66, 0xaa, - 0xc3, 0xef, 0x42, 0x4b, 0xdb, 0xdd, 0xc6, 0x80, 0x97, 0xae, 0x5e, 0x78, 0xc1, 0x6f, 0xc3, 0x58, - 0x30, 0x15, 0xca, 0x54, 0xe9, 0x49, 0x81, 0xe4, 0x33, 0xd7, 0x2e, 0x7c, 0x39, 0x5c, 0x0d, 0x5a, - 0xff, 0xc9, 0xf4, 0xf8, 0x84, 0x4c, 0x92, 0xf9, 0x11, 0x0e, 0xad, 0xf4, 0x2b, 0xe1, 0xbd, 0x81, - 0x60, 0x6b, 0xa3, 0x12, 0x0e, 0xfb, 0xfc, 0x2d, 0xa1, 0xd2, 0x87, 0x1d, 0x5c, 0x79, 0xb1, 0xb8, - 0x36, 0xbb, 0xa8, 0x7a, 0x1b, 0x1a, 0xb0, 0xfa, 0xec, 0xbc, 0xe2, 0x06, 0xd2, 0x7d, 0xb3, 0x47, - 0x53, 0x33, 0x63, 0xda, 0xf9, 0x78, 0x6a, 0x3c, 0x92, 0x9e, 0xfa, 0x1a, 0xb6, 0xe5, 0xcc, 0x58, - 0x24, 0x7d, 0xb9, 0x1b, 0x26, 0x80, 0x7e, 0xe2, 0x16, 0xc0, 0xe5, 0x6c, 0x12, 0xfc, 0xbf, 0xe2, - 0xa8, 0x14, 0x58, 0xed, 0x0e, 0xf9, 0x3c, 0xb4, 0x5e, 0x8f, 0xe0, 0x7a, 0xcd, 0xd7, 0x05, 0x2c, - 0x6e, 0x75, 0x50, 0x95, 0x02, 0x42, 0x5e, 0x2a, 0xe2, 0x5b, 0x64, 0xd6, 0xe0, 0xba, 0x91, 0x85, - 0x6d, 0xd6, 0x30, 0xf9, 0xf5, 0x11, 0xed, 0x72, 0x0f, 0x4c, 0xec, 0xd4, 0x40, 0xbf, 0x3e, 0xf6, - 0x39, 0x1e, 0x7b, 0xb2, 0x37, 0x76, 0x75, 0x78, 0x52, 0x93, 0x03, 0xc6, 0x78, 0x99, 0x4d, 0x20, - 0x2d, 0x82, 0x86, 0xe4, 0x2d, 0x8e, 0xff, 0x4f, 0x1c, 0x7a, 0x98, 0x24, 0x48, 0xde, 0x2e, 0xb7, - 0xdf, 0xa3, 0xd0, 0xf6, 0x94, 0xe2, 0xf6, 0xfc, 0x78, 0x9e, 0xf6, 0xd8, 0xb1, 0xab, 0x7f, 0xaf, - 0x4a, 0x7f, 0x29, 0x3c, 0x62, 0xa0, 0x2a, 0xb9, 0xa4, 0x44, 0x37, 0x34, 0x2a, 0x7d, 0xfb, 0x4c, - 0xe6, 0xd4, 0x8d, 0xd4, 0xc0, 0x2d, 0x3d, 0x72, 0x25, 0xab, 0x51, 0xda, 0xc8, 0x74, 0xea, 0xd8, - 0x84, 0xaf, 0xa3, 0x2b, 0x04, 0xc9, 0x46, 0xc3, 0xa6, 0x6e, 0x69, 0xa7, 0x27, 0xd2, 0xb7, 0x47, - 0xd2, 0xe3, 0x51, 0x83, 0x4d, 0xe2, 0x0c, 0xa9, 0xc9, 0x81, 0x3b, 0x91, 0x1e, 0x43, 0xac, 0x3b, - 0x79, 0x21, 0x35, 0x70, 0x4b, 0xeb, 0xff, 0x2c, 0x33, 0x16, 0xd1, 0xaf, 0xf5, 0xc8, 0xf3, 0xb4, - 0x82, 0xff, 0x1f, 0x39, 0xb4, 0xdc, 0x1f, 0xf0, 0x5a, 0xcd, 0x7a, 0x14, 0x37, 0xeb, 0xb1, 0x9c, - 0xe9, 0x63, 0xe1, 0x54, 0xab, 0x9c, 0x2a, 0x0d, 0x71, 0x82, 0x2d, 0x9f, 0xf8, 0x3b, 0xd2, 0x86, - 0xc3, 0x3d, 0xa9, 0x9e, 0x5b, 0x59, 0xb5, 0xd7, 0xa3, 0x3d, 0xe9, 0xd9, 0xd9, 0xd4, 0x99, 0x29, - 0x6d, 0xf6, 0xb8, 0x21, 0x2b, 0x04, 0x3c, 0xad, 0x4a, 0x50, 0x3f, 0x7e, 0x55, 0x1f, 0x9c, 0x02, - 0x20, 0x0c, 0x4c, 0x6e, 0xb5, 0x0d, 0xe0, 0xf0, 0x74, 0x72, 0xe6, 0x52, 0x32, 0x36, 0x48, 0x69, - 0x56, 0x3b, 0x1b, 0xf5, 0xe1, 0x91, 0xe4, 0xd7, 0x67, 0x08, 0xcf, 0x1a, 0xee, 0xd1, 0x8f, 0x5f, - 0x95, 0x6d, 0xb5, 0xe1, 0xbf, 0xe0, 0xd0, 0xd2, 0x50, 0xd8, 0x1d, 0xee, 0x0c, 0x95, 0xae, 0xc1, - 0xcc, 0xe2, 0x34, 0xa7, 0x4a, 0xbf, 0x12, 0x08, 0x4c, 0x94, 0x59, 0x2e, 0x07, 0x85, 0xa4, 0x0f, - 0xcc, 0xc2, 0xa7, 0x53, 0xae, 0x95, 0x9a, 0x5c, 0xf5, 0x5b, 0xe6, 0x12, 0x51, 0x79, 0x47, 0x7d, - 0x3d, 0xfc, 0xaa, 0xa9, 0xad, 0xab, 0x25, 0xc0, 0xcd, 0x52, 0xdd, 0x0e, 0xb9, 0x16, 0xb3, 0x06, - 0x57, 0x93, 0x4b, 0xaa, 0x73, 0xbd, 0x23, 0x35, 0xb9, 0xb6, 0xd7, 0x7f, 0x53, 0xfd, 0x52, 0xf0, - 0x27, 0x72, 0xa1, 0x99, 0x5b, 0x5e, 0x46, 0x32, 0xcb, 0x85, 0x66, 0x5e, 0x79, 0x29, 0x64, 0x95, - 0x57, 0xd8, 0x73, 0xca, 0xa4, 0x56, 0xc6, 0x3e, 0x0e, 0xdb, 0x6a, 0xb0, 0xf4, 0x31, 0x66, 0x1f, - 0x27, 0x30, 0xfb, 0x3e, 0xae, 0x9f, 0xb9, 0xae, 0x9f, 0xb8, 0x8a, 0xf7, 0x71, 0x92, 0xce, 0x77, - 0xa2, 0x62, 0xb2, 0x18, 0x31, 0x93, 0x7c, 0x1c, 0x93, 0x68, 0x34, 0xd8, 0x2f, 0x0b, 0x17, 0x9f, - 0x65, 0xd7, 0x38, 0x65, 0x91, 0xe5, 0x9d, 0x7e, 0xaf, 0x12, 0x6c, 0x73, 0xef, 0x5f, 0x1f, 0xe8, - 0xc2, 0x7f, 0x2b, 0xbe, 0xa9, 0x7e, 0x24, 0xb8, 0x5a, 0x2e, 0x34, 0xe1, 0xf2, 0x32, 0x92, 0x20, - 0xff, 0x85, 0xcc, 0xd2, 0xe3, 0xff, 0x0d, 0x87, 0x1e, 0x71, 0x77, 0x86, 0x03, 0x5b, 0x14, 0xbf, - 0x21, 0xfe, 0x28, 0xc0, 0xcb, 0x8c, 0xf9, 0x12, 0x2a, 0x7d, 0x02, 0x4b, 0x66, 0x84, 0x51, 0xcf, - 0x87, 0x25, 0x86, 0x6d, 0xfb, 0x1c, 0xc8, 0x6c, 0x78, 0x11, 0x6b, 0x37, 0xbf, 0xd0, 0x26, 0x4f, - 0x69, 0x63, 0x13, 0x30, 0xab, 0x2a, 0x1d, 0x30, 0xe2, 0x58, 0x64, 0xab, 0x74, 0x68, 0x83, 0x5f, - 0x52, 0xb4, 0xd4, 0xcc, 0x30, 0x60, 0xa6, 0x46, 0x7b, 0x4d, 0xe4, 0xe4, 0xcc, 0x10, 0x4b, 0x18, - 0xe6, 0x49, 0x32, 0x36, 0x99, 0x1e, 0xba, 0xa9, 0x0d, 0x9f, 0x90, 0xe7, 0xab, 0x8e, 0x31, 0x77, - 0x0a, 0xc3, 0x4a, 0x7b, 0x47, 0x9b, 0x3b, 0xac, 0x94, 0xae, 0xcd, 0x2f, 0xce, 0xb8, 0xfc, 0xa1, - 0xb0, 0xb1, 0x8e, 0x9a, 0x08, 0x9e, 0x33, 0xe0, 0xdf, 0xed, 0x6b, 0xa9, 0xf6, 0xab, 0x52, 0xab, - 0x40, 0x33, 0x8b, 0xbb, 0xe6, 0x29, 0x22, 0x19, 0x8b, 0x87, 0x83, 0x9d, 0x8a, 0x7e, 0xf2, 0x46, - 0xa5, 0x83, 0xad, 0x62, 0xfa, 0xd0, 0xa7, 0xda, 0xe1, 0x09, 0x63, 0x87, 0xea, 0x1f, 0xf1, 0x91, - 0x12, 0x2a, 0x1d, 0x20, 0xc4, 0x98, 0xdf, 0xfa, 0xc4, 0xb8, 0x7e, 0xf6, 0x36, 0x51, 0x70, 0x68, - 0x51, 0xfc, 0xbf, 0xe3, 0x50, 0x11, 0xde, 0x88, 0x5d, 0xfe, 0xdd, 0x81, 0xd2, 0x27, 0x17, 0x16, - 0xc2, 0x6a, 0x4d, 0x44, 0xd8, 0x71, 0x0e, 0x73, 0xaa, 0x74, 0x90, 0x13, 0xac, 0xfc, 0xe2, 0x7e, - 0xa3, 0x33, 0x7b, 0x4c, 0x59, 0x08, 0xe4, 0x05, 0x5c, 0x62, 0xa5, 0x03, 0x56, 0xb4, 0x12, 0x6a, - 0xde, 0xd5, 0x19, 0x6c, 0x5b, 0xbf, 0x57, 0x69, 0xde, 0x13, 0x08, 0xb4, 0xee, 0xf2, 0xb5, 0xbb, - 0x5b, 0x0c, 0x6d, 0xda, 0xd7, 0xe5, 0x6b, 0x53, 0xbc, 0x2d, 0x0a, 0x00, 0x52, 0x93, 0x03, 0x6c, - 0x66, 0xbd, 0xff, 0x44, 0x3a, 0xd2, 0xa7, 0x9f, 0x9a, 0xce, 0xa8, 0xfd, 0xda, 0xf4, 0xad, 0x64, - 0x6c, 0x50, 0x1b, 0x89, 0x1a, 0xaa, 0x1e, 0x66, 0x69, 0x5a, 0xc2, 0xd0, 0x63, 0x64, 0xab, 0x16, - 0xfc, 0x2e, 0x54, 0xd8, 0x1e, 0xf0, 0x76, 0xb6, 0x29, 0xae, 0x9a, 0x52, 0x07, 0x9e, 0xcd, 0x4e, - 0x55, 0x7a, 0x5d, 0xa0, 0x40, 0xaa, 0x9d, 0x4c, 0x8c, 0x6b, 0x67, 0x4f, 0xba, 0x6a, 0xca, 0x9d, - 0x92, 0x7e, 0x73, 0x46, 0x3b, 0x7c, 0x01, 0x66, 0x80, 0x7e, 0xf2, 0x06, 0xa4, 0xa4, 0x67, 0x3f, - 0x4f, 0x5d, 0x99, 0x71, 0x68, 0xf1, 0xf3, 0x5a, 0xe2, 0x40, 0x85, 0x4c, 0xf3, 0xf3, 0xbf, 0x43, - 0x2b, 0x70, 0x69, 0x96, 0xc6, 0xfc, 0x14, 0x2e, 0x66, 0xa7, 0x2a, 0x35, 0x0a, 0x59, 0x49, 0xa2, - 0xa4, 0x4d, 0x27, 0xb4, 0xbe, 0x4b, 0x54, 0x35, 0x06, 0x69, 0xcc, 0xd4, 0xf4, 0xf5, 0x0b, 0x87, - 0xd2, 0xd3, 0x07, 0x49, 0x27, 0xc1, 0x34, 0x35, 0x84, 0x8d, 0x4f, 0xe2, 0x5a, 0x24, 0x51, 0x6e, - 0x96, 0x9c, 0x45, 0x92, 0xf7, 0xa1, 0x95, 0xbe, 0x90, 0x33, 0xd0, 0xde, 0x4e, 0x55, 0xe6, 0xd2, - 0x32, 0xbc, 0x62, 0x7e, 0xae, 0x4a, 0x3f, 0x15, 0xb2, 0xd3, 0x2c, 0x7d, 0x26, 0xae, 0xf5, 0x7d, - 0xae, 0xf5, 0x5d, 0x83, 0xb2, 0x2b, 0x99, 0x45, 0x41, 0x4b, 0xca, 0xce, 0xcb, 0x6f, 0x46, 0xc5, - 0x5e, 0x25, 0xe4, 0x09, 0xfa, 0xb0, 0xad, 0xa4, 0xf4, 0x69, 0xdc, 0xce, 0x1f, 0xa9, 0xd2, 0x53, - 0x02, 0x0b, 0x37, 0xb5, 0xe8, 0xd4, 0x94, 0xb1, 0x33, 0xea, 0xc3, 0xc3, 0xe9, 0xdb, 0x57, 0x65, - 0x16, 0x81, 0xbf, 0xc4, 0xa1, 0x95, 0x64, 0x56, 0x39, 0xdd, 0x61, 0xa5, 0x25, 0x10, 0xdc, 0x5f, - 0xfa, 0x23, 0x4c, 0xec, 0xb7, 0xaa, 0xb4, 0x4f, 0xc8, 0x4e, 0x13, 0x15, 0x4b, 0x49, 0xea, 0xff, - 0x0c, 0x2b, 0xf7, 0x33, 0xe9, 0xcb, 0xdd, 0x86, 0x0c, 0x19, 0x1f, 0x32, 0x74, 0xf5, 0xfe, 0x83, - 0xd4, 0xfa, 0x00, 0xad, 0xd3, 0x4f, 0x4d, 0x1b, 0xcb, 0x60, 0x26, 0x7e, 0x27, 0xd2, 0x0d, 0x3d, - 0x5e, 0xde, 0xdc, 0xe9, 0x6b, 0xf3, 0x2a, 0xc1, 0xf5, 0xbe, 0xf6, 0x8e, 0x40, 0x30, 0xac, 0x04, - 0x2b, 0x4c, 0x46, 0x40, 0x71, 0xe5, 0xec, 0x72, 0xf9, 0x7a, 0x54, 0xe4, 0x0b, 0xed, 0x0a, 0xed, - 0x71, 0x07, 0x15, 0x6f, 0xe9, 0x8f, 0x71, 0xa7, 0x62, 0xa5, 0xd3, 0x82, 0x8a, 0x4f, 0x31, 0xdd, - 0x79, 0x2d, 0x19, 0xff, 0x2c, 0xb7, 0x3b, 0xe5, 0x42, 0x5f, 0xa8, 0x11, 0x23, 0xf3, 0xbb, 0x10, - 0x32, 0x24, 0x57, 0x58, 0xe7, 0xa5, 0xcf, 0xe0, 0x16, 0xe3, 0x51, 0x62, 0xc0, 0xe2, 0x3a, 0x76, - 0x8a, 0x18, 0x7b, 0xf2, 0x91, 0x4b, 0xfa, 0xa9, 0x69, 0x0b, 0x01, 0x92, 0xb5, 0xfe, 0xd3, 0xb0, - 0xbc, 0x64, 0x26, 0x2f, 0x7f, 0x99, 0x43, 0x2b, 0xa0, 0x81, 0xb4, 0x5f, 0x9f, 0xc5, 0xa5, 0xfc, - 0x4e, 0x95, 0x7e, 0x2b, 0x64, 0x25, 0x89, 0x3e, 0x6d, 0xf6, 0xc3, 0xac, 0x26, 0x9b, 0xfc, 0x2d, - 0x6e, 0x76, 0x13, 0x66, 0x2f, 0x0b, 0xf7, 0xb7, 0x55, 0xfe, 0x7a, 0x4f, 0x5b, 0xa0, 0xd3, 0x0b, - 0x15, 0xac, 0xa4, 0xca, 0x71, 0xea, 0x93, 0xb8, 0x9c, 0x55, 0x34, 0xff, 0x37, 0x1c, 0x5a, 0x81, - 0x91, 0x25, 0x8f, 0x27, 0xd0, 0xe9, 0x0f, 0xbb, 0x6a, 0x4a, 0xcb, 0x71, 0x45, 0xff, 0x09, 0xa7, - 0x4a, 0xb3, 0x9c, 0x90, 0x95, 0x28, 0x7e, 0x4a, 0x64, 0x72, 0xcb, 0x48, 0x11, 0x3f, 0x9a, 0xbe, - 0x7e, 0x59, 0x1b, 0xbe, 0xe9, 0xaa, 0xb1, 0x95, 0x74, 0x27, 0xd2, 0x03, 0xb5, 0xd5, 0x0e, 0x9f, - 0x4f, 0x1f, 0x98, 0x35, 0x06, 0x17, 0x73, 0x6a, 0x8a, 0xaf, 0x1d, 0x9a, 0x4c, 0x4f, 0x77, 0xdf, - 0x89, 0xf4, 0xa4, 0xae, 0x74, 0x83, 0x3c, 0xaf, 0x8d, 0xc5, 0xf5, 0xd3, 0xd3, 0xc9, 0xd8, 0x91, - 0xd4, 0xcc, 0xf9, 0x64, 0x2c, 0x02, 0x62, 0x3f, 0x2e, 0x1f, 0x72, 0x18, 0xd2, 0x5e, 0xc4, 0x12, - 0xff, 0x01, 0x3d, 0x15, 0xff, 0x32, 0x35, 0x35, 0x4e, 0xb9, 0x0f, 0x4b, 0x5b, 0xce, 0xaa, 0x3c, - 0x2f, 0xa3, 0x65, 0xed, 0x4a, 0x28, 0xe4, 0x6e, 0x51, 0x4a, 0x2b, 0x70, 0x23, 0x5f, 0x56, 0xa5, - 0x9f, 0x08, 0x26, 0xcc, 0xb4, 0x1e, 0x81, 0xe0, 0xa0, 0x25, 0x7a, 0xb4, 0x58, 0xcc, 0x58, 0xf5, - 0xa3, 0xbd, 0xda, 0xc5, 0x6b, 0xe9, 0xeb, 0x97, 0xb4, 0xa1, 0xf3, 0xda, 0x99, 0x0b, 0xda, 0xb5, - 0xe3, 0xa9, 0x8b, 0x71, 0xd9, 0xcc, 0xc4, 0xd7, 0xa1, 0x65, 0xbe, 0xd0, 0x36, 0xdf, 0x3e, 0xc5, - 0x5b, 0x2a, 0xe0, 0x89, 0x29, 0xaa, 0xd2, 0x7a, 0xc1, 0x84, 0x89, 0x3f, 0x32, 0x58, 0xc9, 0xd4, - 0xd5, 0xdc, 0x65, 0xa1, 0xdf, 0xbc, 0x99, 0x39, 0x40, 0x78, 0xb2, 0x6c, 0xa2, 0xf3, 0xcd, 0xc8, - 0x34, 0xaf, 0xba, 0xdc, 0xed, 0x72, 0xa0, 0x4d, 0x29, 0x7d, 0x0e, 0x57, 0x74, 0x93, 0x2a, 0xbd, - 0x24, 0x64, 0x25, 0x89, 0x3f, 0x76, 0xef, 0x0d, 0xa5, 0x46, 0x7b, 0x7d, 0xee, 0x76, 0x47, 0x30, - 0xd0, 0xa6, 0x54, 0x3a, 0xc8, 0xc4, 0xc0, 0x7b, 0x90, 0xd2, 0x4a, 0x54, 0x32, 0x39, 0x2b, 0x1b, - 0x7f, 0xb1, 0x00, 0x2d, 0x87, 0x45, 0x23, 0xbb, 0xfd, 0x2d, 0x4a, 0xa8, 0xb4, 0x32, 0xbf, 0x2c, - 0x0f, 0x6b, 0x85, 0xb0, 0x1c, 0x40, 0xad, 0xfe, 0x2b, 0x4e, 0x95, 0xfe, 0x03, 0x27, 0xd8, 0xf2, - 0x8b, 0xff, 0x8c, 0x63, 0x97, 0x9c, 0x21, 0x7d, 0x5d, 0xe9, 0x4e, 0x47, 0x0f, 0x68, 0x67, 0xae, - 0x83, 0x94, 0x57, 0xae, 0xcd, 0x7e, 0x48, 0x17, 0xaa, 0xb5, 0x5b, 0x26, 0x63, 0xc7, 0x58, 0x32, - 0x30, 0x6d, 0x8c, 0x69, 0x0e, 0xd4, 0x40, 0x83, 0xd4, 0x07, 0x22, 0xfa, 0xd8, 0x00, 0x18, 0xcd, - 0xe6, 0x12, 0x67, 0xec, 0x19, 0x06, 0xb3, 0xf3, 0xa4, 0x66, 0x4e, 0xeb, 0xe7, 0x47, 0x92, 0xf1, - 0x33, 0x60, 0x25, 0x82, 0x2d, 0xca, 0xcc, 0x1c, 0x25, 0xb5, 0xc4, 0x9f, 0xda, 0xf0, 0xa7, 0xc6, - 0x2c, 0xc2, 0x12, 0x87, 0x7e, 0xf6, 0x40, 0xe6, 0xf4, 0x48, 0x85, 0x6c, 0x6b, 0xd5, 0x9a, 0x57, - 0x50, 0x31, 0x63, 0xb9, 0xe1, 0x57, 0xa1, 0x45, 0xad, 0xca, 0x7e, 0xb0, 0x18, 0xcb, 0xc6, 0x4f, - 0xfe, 0x21, 0xb4, 0xa4, 0xcb, 0xdd, 0xd6, 0x49, 0x6c, 0xbc, 0x32, 0x7c, 0x6c, 0x2a, 0x78, 0x99, - 0x5b, 0xf3, 0x36, 0x5a, 0x61, 0xb7, 0x8c, 0xe4, 0xc9, 0xbd, 0x91, 0xcd, 0x9d, 0x47, 0x44, 0xaf, - 0xde, 0xba, 0xbd, 0x23, 0xd4, 0xd0, 0xd6, 0xd9, 0xe2, 0xf3, 0xb3, 0xa4, 0xdf, 0x45, 0xab, 0xb2, - 0xcd, 0x0d, 0xdf, 0x1f, 0xf1, 0xed, 0xa8, 0x98, 0xd1, 0x5d, 0xf3, 0xd0, 0x15, 0xec, 0x74, 0x1f, - 0xca, 0xa7, 0x57, 0xb0, 0x04, 0x7f, 0x8a, 0x56, 0xd8, 0xa5, 0x93, 0xfb, 0xe9, 0xc6, 0x4d, 0xaf, - 0xa9, 0xd2, 0x26, 0xf4, 0xb2, 0x60, 0x9a, 0xee, 0xc5, 0x2a, 0xb0, 0x55, 0xb3, 0x82, 0x33, 0x18, - 0xb2, 0x93, 0xf1, 0x21, 0x50, 0xd8, 0xd9, 0x05, 0x5c, 0xb6, 0x03, 0x3d, 0x98, 0x67, 0x0a, 0xf3, - 0x3c, 0x5a, 0xdc, 0xec, 0xfb, 0x20, 0x54, 0xca, 0x39, 0x16, 0x95, 0x17, 0xc9, 0xf8, 0x37, 0x2f, - 0xa0, 0x55, 0xa6, 0x1d, 0xd7, 0xbb, 0x3d, 0xe8, 0xc4, 0xd2, 0x6e, 0x01, 0x4e, 0xcf, 0x81, 0x97, - 0xfd, 0x0f, 0x2b, 0xd1, 0x62, 0xa3, 0x9d, 0xfc, 0xcb, 0x68, 0xa9, 0xa1, 0xa5, 0xd0, 0x63, 0x04, - 0x87, 0x2a, 0x3d, 0x21, 0x10, 0x90, 0xf8, 0x20, 0x48, 0x2d, 0xc9, 0xf8, 0x51, 0x53, 0xd4, 0x73, - 0xd5, 0xc8, 0x24, 0x91, 0x7f, 0x05, 0x2d, 0xf3, 0xf9, 0xfd, 0x4a, 0xd0, 0xd5, 0x40, 0xce, 0x07, - 0xb0, 0xed, 0xdb, 0x84, 0x89, 0x0f, 0x40, 0x5e, 0x6c, 0x21, 0x3b, 0x9a, 0x8c, 0xcd, 0xb8, 0x1a, - 0x64, 0x33, 0x8d, 0x7f, 0x17, 0x2d, 0x37, 0x09, 0x62, 0xbd, 0x00, 0x0e, 0x05, 0x5e, 0x52, 0xa5, - 0x17, 0x04, 0x5b, 0x82, 0xf8, 0x23, 0x7d, 0x2c, 0xae, 0x9d, 0x3b, 0x42, 0xec, 0x84, 0x93, 0x27, - 0x53, 0x9f, 0x5f, 0x4e, 0xc6, 0xbe, 0xa0, 0xda, 0x11, 0xd9, 0x0e, 0x6c, 0x79, 0xf8, 0xe7, 0xd0, - 0x22, 0x67, 0xc3, 0x0e, 0x6c, 0xda, 0x2f, 0x01, 0x53, 0xa5, 0xf1, 0x2d, 0xae, 0x84, 0xfa, 0x38, - 0x1b, 0x76, 0x10, 0x41, 0xd5, 0x80, 0xf2, 0xeb, 0xd0, 0xa2, 0x76, 0xa5, 0x1d, 0x1b, 0xef, 0x4b, - 0xaa, 0x1f, 0x57, 0xa5, 0x47, 0x05, 0xe3, 0x5b, 0xe4, 0x69, 0xe5, 0xb5, 0xc9, 0x53, 0x26, 0x7e, - 0xbb, 0xd2, 0xce, 0xbf, 0x8c, 0x16, 0x6d, 0x69, 0xd8, 0x81, 0x8d, 0xf6, 0x25, 0xd5, 0xcf, 0xa8, - 0xd2, 0xd3, 0x82, 0xf1, 0x2d, 0x3e, 0x0e, 0xf8, 0x5b, 0x4c, 0xe2, 0x6c, 0x0d, 0x37, 0xc8, 0x06, - 0x0a, 0x3f, 0x6c, 0xa9, 0x7f, 0x60, 0xa0, 0xdf, 0xab, 0x4a, 0x61, 0xaa, 0xfd, 0xbd, 0x0f, 0x04, - 0x60, 0xd0, 0x4d, 0x1a, 0xfd, 0xfa, 0x85, 0x5b, 0xfa, 0xe0, 0x94, 0x96, 0x30, 0x64, 0xd1, 0x64, - 0x22, 0x96, 0x4a, 0x7c, 0xa2, 0x4d, 0x8d, 0x26, 0x6f, 0x0d, 0xa4, 0x46, 0x7b, 0xe7, 0x12, 0x03, - 0x96, 0x36, 0x58, 0xe9, 0xc0, 0x0a, 0x5d, 0x2d, 0xfe, 0x69, 0xaa, 0x7b, 0x95, 0x8e, 0xcd, 0x92, - 0xab, 0xae, 0xb6, 0xa6, 0xd2, 0x31, 0x8f, 0x6e, 0x27, 0xa1, 0xa5, 0x1f, 0x04, 0xfc, 0x0a, 0x35, - 0xf3, 0x57, 0xa8, 0xd2, 0x33, 0xc2, 0x62, 0x03, 0x24, 0xae, 0x25, 0xed, 0x1f, 0x36, 0x54, 0x7c, - 0x2d, 0x1a, 0xcf, 0xee, 0x71, 0x92, 0x91, 0xff, 0x4b, 0x54, 0x6c, 0xcc, 0x86, 0x2d, 0xc1, 0x40, - 0x67, 0x87, 0xab, 0x86, 0x98, 0xec, 0xdf, 0x51, 0xa5, 0xb7, 0x04, 0x16, 0x2e, 0xbe, 0x41, 0xa4, - 0xdf, 0x81, 0x88, 0x76, 0xed, 0x5c, 0x6a, 0xb4, 0xb7, 0xde, 0x4c, 0x73, 0xb8, 0x6a, 0x2a, 0x1d, - 0x2c, 0xe5, 0xf2, 0xe4, 0x4c, 0x9f, 0x53, 0x22, 0xa5, 0xcf, 0xaa, 0xda, 0xb5, 0x73, 0xc9, 0xf8, - 0x10, 0x25, 0x55, 0x21, 0xb3, 0x64, 0xf9, 0xcd, 0xec, 0x29, 0x18, 0x58, 0xf1, 0xcb, 0x55, 0xe9, - 0xc7, 0xec, 0x29, 0x58, 0x69, 0x56, 0xc9, 0x54, 0xd0, 0x65, 0x4f, 0xbb, 0x36, 0xa2, 0x45, 0x3b, - 0x1b, 0x9c, 0xd8, 0x66, 0x4f, 0x66, 0xb1, 0xf1, 0x2d, 0xae, 0xce, 0xca, 0xbb, 0xb3, 0xc1, 0xe9, - 0x70, 0xd5, 0xc8, 0x46, 0x1a, 0xff, 0x2e, 0x3d, 0xf7, 0x59, 0x6e, 0x69, 0x01, 0xe6, 0xb9, 0xcf, - 0x8b, 0x6c, 0x46, 0x38, 0xfd, 0xb1, 0xac, 0x26, 0xb7, 0x6e, 0x6b, 0x37, 0xcf, 0xcd, 0x25, 0xa2, - 0xfa, 0xcd, 0x6b, 0xda, 0xd8, 0x97, 0x46, 0xc7, 0x1e, 0xbe, 0xa0, 0xdd, 0x3c, 0x97, 0x9a, 0x1c, - 0xa0, 0x67, 0x43, 0xf5, 0x68, 0x69, 0x87, 0x3b, 0x14, 0xda, 0xeb, 0x2d, 0x2d, 0xb1, 0x0e, 0x87, - 0x08, 0x48, 0xac, 0xd0, 0xa6, 0xce, 0x19, 0xa4, 0x4c, 0x3b, 0xb0, 0x36, 0x7d, 0x30, 0x75, 0xa1, - 0xbb, 0xd2, 0x41, 0x2c, 0x47, 0x60, 0x12, 0xbd, 0xf2, 0xb1, 0x36, 0x7d, 0x50, 0x26, 0x59, 0xf8, - 0xf7, 0x10, 0x1e, 0x55, 0x6c, 0x89, 0x2f, 0xa9, 0x76, 0xa9, 0xd2, 0x66, 0x81, 0x0c, 0xa0, 0xf8, - 0xd3, 0xac, 0x81, 0xc6, 0xe7, 0x34, 0xec, 0x80, 0xbc, 0xea, 0xb0, 0xcc, 0xd9, 0x58, 0x12, 0x82, - 0xdd, 0x26, 0x19, 0x1f, 0x72, 0x4a, 0x32, 0x26, 0xcb, 0x4b, 0xa8, 0xd0, 0xab, 0x74, 0xf9, 0x0c, - 0xe6, 0x00, 0xa6, 0xfa, 0xea, 0x1f, 0xab, 0x52, 0x99, 0x40, 0x81, 0xe2, 0xc3, 0x4e, 0xc9, 0x61, - 0x2e, 0xd1, 0xf4, 0xd4, 0xd7, 0xda, 0xc5, 0x43, 0xae, 0x1a, 0x6d, 0xf8, 0xa6, 0x4c, 0x31, 0x78, - 0x05, 0xad, 0x30, 0x06, 0xd6, 0x54, 0x5d, 0x5d, 0x35, 0x60, 0xd3, 0xaf, 0x36, 0x98, 0xa7, 0x90, - 0x95, 0x24, 0x96, 0x93, 0x3a, 0x9b, 0xc2, 0x1b, 0xe9, 0x6d, 0xac, 0x84, 0x92, 0xf9, 0x64, 0xca, - 0x89, 0xf6, 0x9c, 0xbc, 0x07, 0x15, 0x62, 0x88, 0xc1, 0x73, 0x1e, 0xc0, 0x05, 0x6c, 0x51, 0xa5, - 0x1a, 0x81, 0x02, 0xc5, 0x97, 0xc9, 0x32, 0xc4, 0x26, 0x08, 0x53, 0x52, 0xd5, 0xa2, 0x7d, 0xda, - 0xc8, 0x67, 0xce, 0x9d, 0xdb, 0xd6, 0xbb, 0x6a, 0x9c, 0x0c, 0x79, 0x2a, 0xf0, 0x3b, 0x77, 0x6e, - 0x93, 0x29, 0x0d, 0xbe, 0x09, 0x0a, 0xc1, 0x07, 0xa7, 0xbc, 0x25, 0xa0, 0x51, 0xa0, 0x58, 0x41, - 0xea, 0x8f, 0x4f, 0x4d, 0x2b, 0x1d, 0x20, 0x78, 0x6b, 0x23, 0xbd, 0xc9, 0xd8, 0xa7, 0x86, 0xec, - 0xc7, 0x24, 0xca, 0x34, 0x13, 0xff, 0x33, 0x54, 0x44, 0xb8, 0x67, 0xd7, 0x8b, 0xc4, 0x8c, 0x8d, - 0x59, 0xb5, 0x05, 0x15, 0x57, 0x41, 0x56, 0x5f, 0x47, 0xd7, 0x8b, 0xda, 0xd8, 0x55, 0xed, 0x6c, - 0x44, 0xb6, 0x12, 0xf9, 0xcd, 0xa8, 0xd0, 0x18, 0x2c, 0x5c, 0xab, 0x87, 0xac, 0x03, 0x42, 0x0a, - 0x14, 0x1f, 0xb3, 0x26, 0xed, 0xd8, 0x04, 0x9d, 0x0f, 0x66, 0x3d, 0x4c, 0x34, 0x5e, 0x41, 0x4b, - 0xc3, 0xee, 0x50, 0xab, 0xab, 0xa6, 0x74, 0x35, 0xa6, 0xb2, 0x4d, 0x95, 0x7e, 0x21, 0x10, 0x90, - 0xf8, 0x3a, 0xa9, 0xbc, 0x79, 0x2e, 0x97, 0x9c, 0x99, 0x21, 0xe7, 0x82, 0xc9, 0x99, 0x3e, 0x6d, - 0x6c, 0x22, 0x75, 0xec, 0xcb, 0xf4, 0xf4, 0x4d, 0x30, 0xa6, 0xe3, 0x63, 0x94, 0xd9, 0x74, 0xec, - 0x53, 0x52, 0x2e, 0x36, 0xbd, 0xc9, 0x84, 0x12, 0xbf, 0x03, 0x2d, 0xdf, 0xed, 0x36, 0xf4, 0x76, - 0x59, 0x71, 0x87, 0x02, 0x7e, 0x6c, 0x41, 0x26, 0x67, 0x74, 0xb6, 0x04, 0x71, 0x6d, 0x32, 0x76, - 0x38, 0x19, 0x3b, 0xa2, 0x9f, 0xbb, 0x41, 0xca, 0xc6, 0x52, 0xae, 0x7e, 0xf2, 0x06, 0x08, 0xba, - 0xb2, 0x0d, 0x9b, 0xff, 0x1d, 0x42, 0x9e, 0x3d, 0xee, 0x20, 0xb1, 0xd9, 0x3f, 0x82, 0x89, 0xfe, - 0x5a, 0x95, 0xde, 0x15, 0x18, 0xb0, 0xb8, 0x0d, 0x36, 0x9d, 0xf4, 0xd4, 0x78, 0xfa, 0xba, 0x31, - 0xad, 0xc0, 0x1a, 0xd5, 0xb0, 0xbd, 0xb1, 0xa9, 0x41, 0x72, 0xd5, 0xec, 0xaa, 0x7e, 0x7b, 0xd7, - 0x1b, 0xdb, 0x77, 0xc8, 0x7a, 0x74, 0x40, 0xbb, 0x3a, 0x6c, 0x14, 0x34, 0x32, 0x94, 0x9c, 0x39, - 0x95, 0xbe, 0x7e, 0xcb, 0x40, 0x92, 0x6b, 0x0d, 0x1c, 0x63, 0xc6, 0xdc, 0xba, 0xae, 0x45, 0xfb, - 0xf4, 0xb1, 0x7e, 0x99, 0x21, 0xbd, 0xe9, 0x6d, 0x55, 0xda, 0x89, 0x9a, 0x04, 0xbc, 0xf5, 0x8a, - 0x75, 0xe4, 0xd4, 0x1a, 0xf6, 0xd8, 0x7c, 0x92, 0x00, 0xbb, 0x29, 0x18, 0x7a, 0xc3, 0x47, 0x9f, - 0x11, 0xa6, 0x95, 0x8c, 0x61, 0xa6, 0xd8, 0x62, 0x30, 0x42, 0x58, 0x90, 0x65, 0xff, 0x76, 0x05, - 0x5a, 0x61, 0x37, 0xa8, 0xf3, 0x3b, 0xa9, 0x5e, 0xec, 0x6a, 0xe8, 0x7a, 0xc1, 0xe9, 0xaa, 0x91, - 0xc9, 0x26, 0x5f, 0xa9, 0x4a, 0x15, 0x42, 0x76, 0x9a, 0xf8, 0x30, 0x11, 0xee, 0x23, 0x33, 0x06, - 0x08, 0xa6, 0x90, 0x7e, 0xed, 0x82, 0x9c, 0x8d, 0xc8, 0x7b, 0xd0, 0xca, 0x90, 0x12, 0xc4, 0x4b, - 0xd7, 0xa4, 0x5b, 0x60, 0x1d, 0xac, 0x64, 0xa7, 0x89, 0x4f, 0x03, 0x5d, 0x02, 0x26, 0xb6, 0xf0, - 0xd1, 0xde, 0xac, 0x42, 0xb2, 0x72, 0xf1, 0x32, 0x2a, 0x69, 0x77, 0xef, 0x33, 0x3a, 0xaa, 0x21, - 0xe0, 0xad, 0xef, 0x6c, 0xc7, 0x42, 0x42, 0x09, 0x54, 0xdd, 0x9e, 0x62, 0x32, 0xf9, 0x64, 0xec, - 0xb0, 0x3e, 0x16, 0xd1, 0x2e, 0x5e, 0x69, 0x08, 0x78, 0xf5, 0xe3, 0x57, 0x33, 0x87, 0x86, 0x65, - 0x3b, 0x22, 0xbf, 0x13, 0xd3, 0x6c, 0x84, 0x92, 0x0c, 0x9a, 0x20, 0x24, 0x6c, 0x50, 0xa5, 0x2a, - 0xc1, 0x9e, 0x22, 0x3e, 0x4e, 0x3a, 0x03, 0x13, 0x4c, 0x8d, 0xf6, 0x92, 0x24, 0x86, 0xae, 0x85, - 0xcc, 0x0f, 0x72, 0x68, 0xb9, 0xe2, 0x77, 0x37, 0xb7, 0x29, 0x3b, 0x1b, 0x9c, 0x4e, 0xbf, 0x0f, - 0xcb, 0x13, 0x85, 0xd5, 0x3e, 0x55, 0xda, 0x2d, 0xd8, 0x12, 0xc4, 0x9d, 0xec, 0x17, 0xa8, 0x51, - 0x5a, 0x22, 0xa2, 0x8d, 0x4c, 0xef, 0x6c, 0x70, 0x56, 0x39, 0xeb, 0x5d, 0x60, 0x02, 0x35, 0x26, - 0x5d, 0x62, 0xb8, 0x3c, 0x39, 0x7b, 0x3b, 0x7d, 0x60, 0xb6, 0xab, 0xc3, 0x53, 0xe5, 0xf1, 0xfb, - 0x00, 0x66, 0x68, 0x09, 0xfa, 0x89, 0xab, 0xda, 0x47, 0xe7, 0xf4, 0xaf, 0xba, 0x53, 0x13, 0x47, - 0x20, 0x73, 0x85, 0x6c, 0x2b, 0x85, 0x57, 0x8c, 0xea, 0xf8, 0x1a, 0x3b, 0x9b, 0xfd, 0x4a, 0xd8, - 0x55, 0x13, 0x2a, 0x5d, 0x6a, 0x48, 0x81, 0xd5, 0x92, 0x2a, 0xfd, 0x4c, 0xb0, 0x25, 0x88, 0xeb, - 0xf2, 0x14, 0x9b, 0x8c, 0x1d, 0xa9, 0x04, 0x91, 0x23, 0x35, 0x7b, 0x54, 0x1b, 0x1c, 0x37, 0x54, - 0xc7, 0xc9, 0x91, 0xd4, 0xec, 0x51, 0x57, 0x8d, 0x6c, 0xcb, 0xcd, 0x47, 0x38, 0xb4, 0x3c, 0x84, - 0xbf, 0x1a, 0x03, 0x9d, 0x41, 0x8f, 0x82, 0x05, 0x9b, 0x62, 0xf1, 0xf1, 0x1c, 0x1d, 0x8c, 0xc1, - 0xa9, 0xfe, 0x99, 0x2a, 0xbd, 0x2a, 0xd8, 0xb2, 0x89, 0xcf, 0x41, 0x5f, 0x93, 0xba, 0xd0, 0x5a, - 0x18, 0x0c, 0x04, 0x8c, 0xa9, 0xb8, 0x78, 0xfd, 0x40, 0x9f, 0x76, 0xf0, 0x2b, 0xd9, 0x96, 0xd5, - 0xa8, 0xc2, 0x0a, 0x5f, 0xa8, 0x31, 0xec, 0x0e, 0xfb, 0x3c, 0xae, 0x8e, 0x6d, 0x01, 0xaf, 0x82, - 0x85, 0x99, 0xc2, 0xea, 0x5f, 0xaa, 0xd2, 0x0e, 0x21, 0x2b, 0x49, 0x74, 0xe6, 0x29, 0x88, 0x5a, - 0x5c, 0x32, 0x67, 0xcf, 0x69, 0x67, 0xe2, 0xda, 0xd4, 0xa8, 0xab, 0x81, 0x1e, 0xc6, 0x6f, 0x72, - 0x6c, 0x96, 0xea, 0x1a, 0x6b, 0x1d, 0x4c, 0x9a, 0x9c, 0x45, 0x94, 0xff, 0xc7, 0xe8, 0x41, 0x4f, - 0x9b, 0xdb, 0xd7, 0x5e, 0xbb, 0xaf, 0xc3, 0x17, 0x54, 0xbc, 0x8d, 0x8a, 0x27, 0xe0, 0xf7, 0x86, - 0xb0, 0x2c, 0x54, 0x52, 0xbd, 0x55, 0x95, 0xde, 0x10, 0xf2, 0xa5, 0x8b, 0x1b, 0xef, 0xa1, 0xeb, - 0x5d, 0x0d, 0xda, 0x99, 0x73, 0xfa, 0xb1, 0x1b, 0xfa, 0xc9, 0x1b, 0x99, 0x93, 0xd7, 0xe5, 0x7c, - 0x74, 0xf8, 0x56, 0xb4, 0xaa, 0xbd, 0xb3, 0x2d, 0xec, 0x23, 0x92, 0x0d, 0x5e, 0x8d, 0x08, 0x8f, - 0x37, 0xb6, 0x05, 0xe5, 0x24, 0x8a, 0xe5, 0xac, 0x09, 0xd5, 0x80, 0x54, 0x82, 0xdd, 0x01, 0x9b, - 0x19, 0xc8, 0xe9, 0x34, 0x06, 0xc8, 0x39, 0x79, 0xf9, 0x4e, 0x54, 0xe8, 0xf1, 0x79, 0x83, 0x8d, - 0x61, 0xa5, 0x03, 0x8b, 0x4b, 0x25, 0xe0, 0x1b, 0x42, 0x81, 0xe2, 0x2f, 0xc0, 0x5e, 0xac, 0xf5, - 0x1f, 0xcc, 0xf4, 0x0d, 0x1a, 0x50, 0x7d, 0xf2, 0x52, 0xe6, 0xf8, 0x6d, 0xa2, 0x42, 0xd3, 0x1d, - 0x33, 0x75, 0xec, 0x7c, 0x32, 0x7e, 0x05, 0xdc, 0x36, 0x5e, 0xd8, 0xf0, 0xca, 0x8b, 0x77, 0x22, - 0xdd, 0x5a, 0xdf, 0x8d, 0xe4, 0xcc, 0x09, 0x00, 0x89, 0x1b, 0x5e, 0x78, 0xb9, 0x42, 0xa6, 0x54, - 0xf9, 0xdf, 0xa3, 0x12, 0x93, 0x07, 0x75, 0x30, 0xfe, 0x0f, 0xb8, 0x6c, 0x7b, 0x8a, 0x58, 0x4b, - 0x14, 0x2b, 0x93, 0xcb, 0xb0, 0x67, 0x0a, 0xe5, 0xbe, 0x8e, 0xae, 0x17, 0xd6, 0x1b, 0xfb, 0xe3, - 0x7a, 0x6f, 0xa7, 0xbb, 0xad, 0xa2, 0xd2, 0x50, 0xa1, 0x07, 0x06, 0x69, 0xad, 0x8c, 0x64, 0xc0, - 0x94, 0xed, 0x54, 0xed, 0x9c, 0xf4, 0x45, 0xdc, 0xc7, 0x25, 0x79, 0x39, 0xe9, 0x8b, 0xb9, 0x9c, - 0xf4, 0xc5, 0xbc, 0x9c, 0xf4, 0xc5, 0x5c, 0x4e, 0x0a, 0x74, 0x57, 0xe4, 0xe5, 0xa4, 0x2f, 0xde, - 0x85, 0x93, 0xbe, 0x98, 0x97, 0x93, 0x42, 0x21, 0x01, 0xaa, 0x78, 0x80, 0x74, 0xf6, 0x96, 0x2a, - 0x35, 0x51, 0xc5, 0xe3, 0x17, 0xb6, 0xa3, 0x17, 0xbc, 0xd3, 0x98, 0x72, 0x8f, 0xb1, 0x32, 0x86, - 0x4f, 0xe9, 0x67, 0xae, 0x93, 0xc4, 0x99, 0xde, 0xe4, 0xcc, 0x8d, 0xf4, 0xed, 0x43, 0xa9, 0x89, - 0x23, 0xc9, 0xd8, 0x24, 0x6c, 0x5e, 0x6c, 0x3e, 0xaa, 0x58, 0xfc, 0x33, 0x8e, 0x1e, 0xfb, 0xe0, - 0x15, 0x09, 0xb2, 0xdc, 0x47, 0x9c, 0x2a, 0x9d, 0xe3, 0x04, 0x36, 0x45, 0x1c, 0x22, 0x86, 0xb8, - 0x9d, 0x1d, 0x1e, 0xa7, 0xdf, 0x67, 0x63, 0x7e, 0x30, 0x36, 0xfa, 0xb1, 0x69, 0x3d, 0xda, 0x4d, - 0xec, 0x22, 0x78, 0x4d, 0x40, 0x72, 0xb8, 0x55, 0xa9, 0x0a, 0x06, 0x3a, 0xc3, 0x4a, 0x95, 0xe2, - 0xf7, 0x69, 0x6a, 0x14, 0x5c, 0x69, 0xb2, 0x31, 0xbc, 0xbe, 0xa0, 0xe2, 0x09, 0x1b, 0x28, 0xd4, - 0x3c, 0x8b, 0x99, 0x88, 0x21, 0x30, 0x9c, 0x9a, 0xce, 0xa5, 0x5a, 0x21, 0xb3, 0xb5, 0x2b, 0xfb, - 0x2f, 0x1c, 0x5a, 0xce, 0xf2, 0x2e, 0xfe, 0x6d, 0xb4, 0xc8, 0xaf, 0xec, 0xc5, 0x4a, 0x77, 0xb1, - 0xf8, 0x68, 0xee, 0x71, 0xf6, 0x5e, 0xc0, 0x86, 0x59, 0x61, 0xa0, 0x8a, 0x65, 0xf9, 0x57, 0x39, - 0x08, 0x42, 0xc0, 0xc9, 0x64, 0x03, 0x91, 0xef, 0x44, 0xcb, 0x94, 0x7d, 0xbe, 0x50, 0x58, 0xf1, - 0x12, 0xb3, 0x84, 0x23, 0x9b, 0x7c, 0x2d, 0x24, 0x53, 0xf6, 0x0b, 0x73, 0xc4, 0xcc, 0x25, 0x3e, - 0x97, 0xaf, 0x24, 0xfb, 0x91, 0x55, 0x6a, 0xb4, 0x97, 0x14, 0x69, 0xe6, 0x2a, 0xab, 0x47, 0xab, - 0xb2, 0xe9, 0xf2, 0x9b, 0xd0, 0x22, 0x9f, 0x97, 0x98, 0x16, 0x40, 0xa1, 0x32, 0xbe, 0xc5, 0xb5, - 0xa9, 0x33, 0xd7, 0xf5, 0xa1, 0x4b, 0x59, 0x34, 0xcd, 0xad, 0x21, 0x24, 0x1b, 0x48, 0x65, 0xdf, - 0x70, 0xa8, 0x88, 0xf6, 0x03, 0xdf, 0x80, 0x16, 0xb7, 0xbb, 0x43, 0xad, 0x58, 0xea, 0x28, 0xa9, - 0xfe, 0xa9, 0x2a, 0xbd, 0x22, 0x60, 0x80, 0xb8, 0x11, 0x3a, 0x80, 0x6c, 0x6d, 0x50, 0x65, 0xa8, - 0x1a, 0xd8, 0x2a, 0x49, 0x23, 0x86, 0x3e, 0x49, 0x5d, 0xe8, 0xd6, 0x2e, 0x5e, 0xd1, 0xae, 0x0e, - 0xcb, 0x38, 0xa3, 0x41, 0x11, 0xab, 0x32, 0x20, 0x6f, 0x00, 0x45, 0xac, 0xb1, 0x2e, 0x48, 0x11, - 0xf4, 0x2a, 0xd8, 0x52, 0xa8, 0x68, 0x4b, 0xb4, 0x17, 0x17, 0x5a, 0xe2, 0xeb, 0x70, 0xfa, 0xc3, - 0x44, 0xbe, 0x78, 0x5e, 0x95, 0x36, 0x08, 0x00, 0x11, 0x9f, 0xbd, 0x4b, 0x2d, 0x5d, 0x0d, 0xc9, - 0xd8, 0xa7, 0xfa, 0xf1, 0xab, 0x32, 0xe0, 0x97, 0xfd, 0x2f, 0x45, 0xe8, 0xc1, 0x3c, 0xbe, 0x03, - 0xbc, 0x07, 0x15, 0x6c, 0x6f, 0x24, 0xa2, 0x57, 0xa3, 0x2a, 0x35, 0x08, 0x05, 0xdb, 0x1b, 0xcd, - 0x85, 0x07, 0xdd, 0xb9, 0xbd, 0x11, 0xe4, 0xbf, 0xf2, 0xcc, 0xf1, 0x31, 0xed, 0xc0, 0xb0, 0xab, - 0x66, 0x3d, 0x39, 0x4e, 0xc1, 0x9f, 0xc6, 0x82, 0x24, 0x26, 0x42, 0xe2, 0xcb, 0x09, 0x9e, 0x44, - 0x04, 0xb7, 0x42, 0x2e, 0xd8, 0xde, 0xc8, 0x4b, 0x68, 0x59, 0x97, 0x12, 0x0c, 0x19, 0x2a, 0x29, - 0x74, 0xce, 0xb3, 0xaa, 0xf4, 0x23, 0xc1, 0x84, 0x89, 0x8f, 0x5a, 0x4e, 0x2e, 0x16, 0x6f, 0xc4, - 0x0e, 0x09, 0xb2, 0x89, 0xc3, 0x1f, 0x2f, 0xb0, 0xbc, 0xcc, 0xdc, 0x2d, 0xa1, 0xd2, 0x45, 0x78, - 0x9e, 0xbf, 0x70, 0x0f, 0xee, 0x11, 0x26, 0xcc, 0xc8, 0x06, 0x07, 0x78, 0x09, 0x4e, 0x95, 0x62, - 0x9c, 0xc0, 0xd2, 0x13, 0x27, 0x4c, 0x57, 0x98, 0x33, 0x31, 0xad, 0xef, 0xcb, 0xb0, 0xbb, 0x25, - 0x4b, 0xe8, 0x65, 0x1d, 0x65, 0xc0, 0x9f, 0x8c, 0x1c, 0xd2, 0x7d, 0x39, 0xa1, 0xf5, 0x5d, 0x5a, - 0x87, 0x0d, 0x05, 0x87, 0x3e, 0x05, 0x13, 0x08, 0xec, 0x28, 0x58, 0x1b, 0x03, 0x2b, 0x09, 0x35, - 0x9e, 0x6b, 0x53, 0xe7, 0x52, 0x43, 0x57, 0xc1, 0x76, 0xaa, 0x4d, 0x8d, 0x6a, 0xfd, 0x37, 0xc2, - 0xee, 0x96, 0x50, 0x39, 0xa8, 0xdf, 0x9b, 0x28, 0xbe, 0xe5, 0x78, 0x08, 0x6e, 0x8c, 0x90, 0x01, - 0x0a, 0xac, 0x90, 0xd9, 0x7a, 0xf3, 0x8d, 0xa8, 0x98, 0x74, 0x11, 0x56, 0x9f, 0x16, 0x5b, 0xba, - 0x08, 0x0b, 0x17, 0x9f, 0x9c, 0xb7, 0x8b, 0x4d, 0x07, 0x59, 0x06, 0x9b, 0x1f, 0xe1, 0x50, 0x61, - 0x88, 0xac, 0x39, 0xe2, 0x3c, 0x1a, 0x56, 0xa5, 0xdf, 0x08, 0x14, 0x28, 0x2a, 0xda, 0xec, 0x87, - 0x99, 0xc8, 0x80, 0x7e, 0xe4, 0x13, 0xa7, 0xaf, 0xcd, 0xd7, 0xd9, 0xee, 0xd8, 0x0e, 0xa7, 0xdd, - 0x64, 0x71, 0x60, 0xa7, 0x33, 0xfd, 0xe4, 0x8d, 0xb9, 0x44, 0xb4, 0x69, 0x6b, 0x6d, 0x32, 0x31, - 0x9a, 0x9c, 0x19, 0x4a, 0x4f, 0x5f, 0x82, 0x05, 0x09, 0xc7, 0x14, 0x62, 0x32, 0xf6, 0xa9, 0xab, - 0x01, 0x1b, 0x87, 0x2f, 0x81, 0x41, 0x1d, 0xcc, 0x71, 0xe9, 0xeb, 0xe7, 0xd3, 0xb3, 0xb3, 0xda, - 0xd9, 0x43, 0xe9, 0xf1, 0x71, 0x99, 0x16, 0xc8, 0xff, 0x1a, 0x2d, 0x27, 0xcd, 0xae, 0x53, 0xba, - 0x94, 0x36, 0xe2, 0x9a, 0x8a, 0xad, 0xf6, 0xb6, 0x04, 0x7a, 0x5e, 0x3f, 0x39, 0x90, 0x8a, 0x5f, - 0x31, 0x84, 0x25, 0x7c, 0x78, 0xca, 0xfa, 0x29, 0x81, 0x4b, 0x93, 0x6c, 0xcb, 0xc6, 0x9f, 0xe5, - 0xd0, 0xa3, 0xbe, 0x90, 0xd4, 0x19, 0x0e, 0xec, 0xe8, 0x68, 0x09, 0xba, 0xbd, 0x8a, 0x93, 0x2d, - 0x6d, 0x19, 0x96, 0xdb, 0x76, 0xa9, 0xd2, 0xaf, 0x84, 0xf9, 0xb1, 0xc4, 0x9f, 0xb3, 0x42, 0x33, - 0x11, 0x36, 0x86, 0x4f, 0x65, 0xfa, 0x06, 0xef, 0xb5, 0x4a, 0xf3, 0xd3, 0xe6, 0x0f, 0x70, 0x68, - 0xb1, 0x3b, 0xa8, 0xb8, 0xb1, 0x08, 0x99, 0x87, 0xc1, 0x3b, 0xf1, 0x41, 0x4c, 0x50, 0x71, 0x57, - 0x37, 0xa9, 0xd2, 0x9b, 0x02, 0xc6, 0x15, 0x5d, 0x84, 0xfa, 0xcc, 0x75, 0x2d, 0x7e, 0x19, 0x8e, - 0x92, 0x58, 0x87, 0xdf, 0x72, 0xa3, 0xf7, 0xfb, 0x6f, 0x26, 0x63, 0x83, 0x7a, 0xf4, 0x90, 0x36, - 0x35, 0x5a, 0xe9, 0xd0, 0xfa, 0x4f, 0xb3, 0xab, 0x98, 0xe2, 0x57, 0xc8, 0x98, 0x20, 0xff, 0x2b, - 0xb4, 0x14, 0x4e, 0x83, 0xb1, 0x08, 0x59, 0x2c, 0x3e, 0x31, 0xcf, 0xfa, 0xdb, 0x86, 0x91, 0xc0, - 0xd6, 0x42, 0x72, 0x88, 0xa5, 0xe4, 0xd0, 0x1e, 0x9f, 0x2e, 0xc3, 0x49, 0xb3, 0xe9, 0x77, 0x0c, - 0x18, 0x6b, 0x7e, 0x86, 0x56, 0x65, 0xaf, 0xd5, 0xfb, 0x31, 0x67, 0x97, 0xfd, 0x15, 0x42, 0xab, - 0xf3, 0xfa, 0x13, 0xf1, 0xbf, 0x40, 0x8b, 0x5d, 0x0d, 0x3b, 0x81, 0xcf, 0x15, 0x82, 0xcd, 0x0a, - 0x03, 0xc4, 0xe7, 0xb6, 0x66, 0xf9, 0xd7, 0x19, 0x50, 0xea, 0x33, 0x94, 0xe5, 0xf5, 0x8a, 0xb3, - 0xf0, 0x1f, 0xa0, 0x55, 0x9e, 0x80, 0x3f, 0xec, 0xf6, 0xf9, 0x95, 0xa0, 0xdc, 0xe9, 0x0f, 0xfb, - 0xa8, 0x13, 0x7a, 0xbd, 0x2a, 0x6d, 0x15, 0x72, 0x12, 0xc5, 0x97, 0xc8, 0xb1, 0x8d, 0xdd, 0x01, - 0x09, 0x58, 0x01, 0x58, 0xb4, 0x32, 0x91, 0x81, 0x1a, 0xec, 0xe4, 0x73, 0x27, 0xd2, 0xed, 0x34, - 0xb3, 0x7b, 0xe5, 0x1c, 0x52, 0xbc, 0x8c, 0x56, 0x04, 0xe1, 0xe7, 0x4e, 0xc2, 0x4f, 0x17, 0x59, - 0xf6, 0x92, 0xac, 0x24, 0x71, 0x75, 0x56, 0x89, 0x84, 0xa5, 0x66, 0xa1, 0xf1, 0xff, 0xbc, 0x80, - 0xb8, 0x42, 0x48, 0xc1, 0x96, 0x50, 0xe9, 0xe2, 0x05, 0xf9, 0xaa, 0xbd, 0x5b, 0x89, 0x5f, 0x66, - 0xd0, 0xe4, 0xab, 0x7f, 0xc7, 0xa9, 0xd2, 0xff, 0x6e, 0x3a, 0x46, 0x18, 0x60, 0xf1, 0xbf, 0x70, - 0x20, 0xb4, 0x6b, 0x23, 0xbd, 0xc4, 0xb7, 0xc0, 0xe4, 0x91, 0x70, 0xfc, 0x6a, 0xf4, 0xf1, 0x47, - 0xbd, 0xd4, 0x70, 0xdc, 0xaa, 0xec, 0x4f, 0xc6, 0xe2, 0xc6, 0x90, 0x48, 0x0d, 0x2e, 0x43, 0x87, - 0x55, 0x82, 0x73, 0x89, 0xe8, 0x56, 0x38, 0x75, 0x0d, 0x07, 0x03, 0x6d, 0x6d, 0x18, 0x50, 0x1b, - 0xf6, 0x78, 0x09, 0xbc, 0xd1, 0xb3, 0x47, 0x31, 0xe6, 0x4e, 0xf0, 0x4e, 0xa4, 0x07, 0x4f, 0x84, - 0x64, 0x2c, 0x6e, 0x15, 0x76, 0xfb, 0x8c, 0xa1, 0x86, 0x8e, 0x4c, 0xe3, 0x85, 0x48, 0xca, 0xd3, - 0x2e, 0x8e, 0x26, 0x63, 0x9f, 0x92, 0xd3, 0xdf, 0x5b, 0x47, 0x32, 0x27, 0xaf, 0xc3, 0x8c, 0x7f, - 0x35, 0x73, 0xf2, 0x7a, 0x66, 0xf4, 0x18, 0x35, 0x86, 0x1a, 0x85, 0x6c, 0x72, 0xf8, 0x03, 0x5e, - 0xa5, 0xca, 0xeb, 0x0e, 0xbb, 0x0d, 0x79, 0xed, 0xb5, 0xf5, 0xc6, 0xaf, 0xf5, 0xcd, 0x9e, 0xd0, - 0xfa, 0x36, 0x5f, 0xf3, 0x7a, 0x25, 0xec, 0xf1, 0xbe, 0x2a, 0x5b, 0xad, 0xe5, 0xff, 0x33, 0x67, - 0x77, 0x29, 0x02, 0xce, 0x69, 0xee, 0x36, 0xac, 0x53, 0x11, 0xdd, 0x6d, 0x6c, 0x5e, 0x45, 0xfd, - 0x5a, 0xb4, 0x4f, 0x3f, 0xf2, 0xf9, 0x16, 0xb9, 0x5c, 0xeb, 0x9b, 0xd0, 0xae, 0x45, 0xd2, 0x37, - 0xa7, 0x53, 0xc7, 0xae, 0x55, 0x68, 0x6a, 0x94, 0xc8, 0x4f, 0xc9, 0xd8, 0xc5, 0xd4, 0x95, 0x41, - 0x90, 0x9f, 0xd8, 0xe9, 0xb9, 0x45, 0x5e, 0x97, 0xbc, 0x75, 0x1e, 0xe4, 0x51, 0xe0, 0xc7, 0x84, - 0x1d, 0x9b, 0xa8, 0xfd, 0xe5, 0xbb, 0xdb, 0xdc, 0x7e, 0xbf, 0xd2, 0x76, 0x27, 0xd2, 0xed, 0x71, - 0xb7, 0xf9, 0x3c, 0x81, 0x3b, 0x91, 0x6e, 0x38, 0xbc, 0x03, 0x3f, 0xce, 0xf4, 0xa1, 0x4f, 0x53, - 0x17, 0x8e, 0xb1, 0xdc, 0x3b, 0x35, 0x39, 0x50, 0x31, 0x97, 0x18, 0xb0, 0x3b, 0x2f, 0xb5, 0x20, - 0xde, 0xab, 0xb4, 0x29, 0x61, 0x5f, 0xc0, 0xdf, 0x10, 0x0c, 0x84, 0x15, 0x0f, 0xf6, 0x8e, 0x58, - 0x8a, 0x57, 0x15, 0x3e, 0x22, 0xc9, 0x93, 0x2c, 0xae, 0x25, 0x6c, 0x11, 0xfb, 0xe4, 0x91, 0xb5, - 0xd0, 0x7f, 0x21, 0x73, 0xfa, 0x62, 0xf2, 0xf6, 0x59, 0xfd, 0xf0, 0x45, 0x39, 0x4f, 0x1e, 0x7e, - 0x3b, 0x5a, 0xee, 0xee, 0xf4, 0xfa, 0xc2, 0xb5, 0xd8, 0x74, 0xe0, 0x25, 0x0c, 0xf8, 0x39, 0x55, - 0x2a, 0x17, 0x6c, 0x09, 0x62, 0x29, 0xcb, 0x73, 0xb5, 0xa9, 0xf1, 0xf4, 0xd4, 0x38, 0xf1, 0x8c, - 0xb1, 0xe1, 0xf1, 0x75, 0xa8, 0x10, 0xcc, 0x10, 0x6f, 0xb8, 0x89, 0x16, 0x8e, 0x2d, 0x2b, 0x14, - 0x28, 0x3e, 0x05, 0xae, 0x11, 0xec, 0x21, 0x32, 0x10, 0xcd, 0x7c, 0x76, 0x0a, 0xe4, 0x32, 0x99, - 0x22, 0xf3, 0x5f, 0x70, 0x68, 0xb5, 0xe9, 0x4f, 0x10, 0xf0, 0xfb, 0x15, 0x4f, 0x98, 0x2c, 0x09, - 0xc2, 0x17, 0xe7, 0x73, 0x73, 0xb4, 0x23, 0x57, 0xef, 0x50, 0x25, 0x59, 0xc8, 0x4f, 0x48, 0x7c, - 0x85, 0xf4, 0x14, 0x34, 0xec, 0x60, 0x9f, 0x76, 0xf1, 0x84, 0xb1, 0x3b, 0x4e, 0x7d, 0xcd, 0x3a, - 0xe8, 0x6a, 0xb7, 0xfb, 0x32, 0xe3, 0x33, 0x20, 0x6f, 0xe8, 0x93, 0xa6, 0x6f, 0x5f, 0x7e, 0x8a, - 0xf4, 0xac, 0x90, 0x2e, 0xd8, 0xfb, 0x62, 0xae, 0xff, 0xf7, 0x62, 0xca, 0x5c, 0xed, 0x74, 0xf9, - 0x6e, 0x0e, 0x21, 0x5f, 0x08, 0x93, 0xf6, 0x2b, 0x61, 0xc2, 0x63, 0xdd, 0xaa, 0xf4, 0x6b, 0x81, - 0x01, 0x8b, 0x0d, 0xd6, 0x6f, 0xd2, 0x32, 0xab, 0x4d, 0xb7, 0x33, 0x27, 0xa7, 0xca, 0xc3, 0xc1, - 0x4e, 0x85, 0x05, 0x38, 0x30, 0xd3, 0x25, 0x42, 0x01, 0x86, 0xd8, 0x1c, 0xda, 0x2a, 0x64, 0x86, - 0x3a, 0xdf, 0x4c, 0x05, 0x16, 0x2f, 0x61, 0xc6, 0xd8, 0x63, 0x97, 0x02, 0x4d, 0x26, 0x9c, 0xfa, - 0x6c, 0x5a, 0x1b, 0xfe, 0x18, 0x0c, 0xc9, 0x8c, 0xf1, 0xa8, 0x9c, 0x76, 0x33, 0x2d, 0x4c, 0x1f, - 0x88, 0x64, 0xc6, 0x22, 0x15, 0x54, 0x04, 0xf1, 0xf2, 0x4e, 0xb4, 0xd4, 0x1b, 0x68, 0x77, 0xfb, - 0x4c, 0xa6, 0x8b, 0x67, 0x23, 0x01, 0x89, 0x6b, 0x61, 0x2f, 0x85, 0xa1, 0x00, 0x0a, 0xa9, 0xcf, - 0xa6, 0x53, 0x3d, 0xb7, 0xb4, 0xf3, 0xe7, 0xb5, 0x91, 0x41, 0x99, 0xe0, 0xf1, 0x43, 0x1c, 0x2a, - 0x09, 0x29, 0x9e, 0xce, 0xa0, 0x2f, 0xbc, 0x1f, 0x9f, 0x15, 0x11, 0x91, 0x6d, 0x8f, 0x2a, 0x29, - 0x82, 0x3d, 0x45, 0x6c, 0xa2, 0xa2, 0x9a, 0x36, 0x35, 0xa0, 0xf5, 0x4d, 0xa4, 0x66, 0x7a, 0xf1, - 0x7e, 0xf1, 0xa9, 0x3e, 0x36, 0xc0, 0xf6, 0x14, 0x1c, 0xaf, 0x80, 0x8b, 0xbb, 0xc1, 0x45, 0xa0, - 0x2d, 0x0c, 0x82, 0xb1, 0xdd, 0xdc, 0xee, 0x4b, 0x26, 0x2e, 0x18, 0x0b, 0xda, 0x5e, 0x08, 0x7f, - 0x9e, 0x43, 0x85, 0x3e, 0x7f, 0x18, 0x6f, 0x82, 0x98, 0x63, 0x15, 0x8b, 0x65, 0xb9, 0xee, 0x7b, - 0x90, 0x2e, 0x79, 0x3c, 0x4a, 0x28, 0xe4, 0x6b, 0x6e, 0x53, 0x40, 0x16, 0xa2, 0x19, 0xc5, 0x06, - 0x10, 0xe1, 0xda, 0x9a, 0x2d, 0x3e, 0xfb, 0x1d, 0xab, 0x49, 0x69, 0x97, 0xfd, 0xab, 0x62, 0x54, - 0xcc, 0xf8, 0xd3, 0x1a, 0xa2, 0xda, 0x4a, 0xf0, 0x89, 0xdd, 0x12, 0x74, 0x77, 0xec, 0x69, 0x70, - 0x87, 0xf7, 0x10, 0x05, 0x26, 0xa4, 0x4a, 0x1d, 0x42, 0x76, 0x9a, 0xf8, 0x1e, 0x71, 0xb2, 0x35, - 0xf7, 0xc1, 0x64, 0x2c, 0x4e, 0x5c, 0x6a, 0x4d, 0x37, 0x60, 0x22, 0xca, 0x33, 0x1e, 0xb6, 0xe0, - 0x37, 0x0b, 0xd3, 0x0d, 0x70, 0x2c, 0xde, 0x4f, 0x6c, 0x18, 0xeb, 0x81, 0x88, 0x9c, 0x5d, 0x1e, - 0xff, 0x1e, 0x2a, 0x6e, 0x0f, 0x74, 0xfa, 0xc3, 0x4d, 0xee, 0x60, 0x8b, 0x12, 0x26, 0xd3, 0x11, - 0xae, 0xdb, 0x30, 0x70, 0xf3, 0xa8, 0x85, 0x78, 0xf4, 0x9e, 0x39, 0x45, 0xbc, 0x7e, 0x7b, 0x6e, - 0xb1, 0x65, 0xe3, 0x52, 0x65, 0x36, 0x1f, 0x7f, 0x9b, 0x43, 0x25, 0x9d, 0x7e, 0xb2, 0xf1, 0x19, - 0xfc, 0x88, 0x68, 0x87, 0xa7, 0x38, 0x55, 0x3a, 0xc6, 0x09, 0xf6, 0x34, 0xb1, 0x87, 0x83, 0xea, - 0x6b, 0x87, 0x2f, 0x68, 0x7d, 0x97, 0xac, 0x13, 0x29, 0x60, 0x70, 0xc3, 0x3d, 0xc9, 0xd8, 0x50, - 0xfa, 0xea, 0x01, 0x2d, 0x7e, 0x99, 0xee, 0x27, 0x5a, 0x24, 0xb1, 0x21, 0x3d, 0x3e, 0x91, 0xba, - 0x18, 0xcf, 0x4e, 0x3e, 0x7b, 0x8e, 0x24, 0x18, 0xfa, 0x0c, 0x93, 0x56, 0x0e, 0xc4, 0xa9, 0x1b, - 0xa1, 0xa1, 0x0b, 0x5d, 0x3e, 0x98, 0x3a, 0x73, 0x02, 0x26, 0x43, 0x85, 0x6c, 0xaf, 0x13, 0xef, - 0xa3, 0x17, 0x7b, 0x40, 0xda, 0x78, 0x76, 0x01, 0xef, 0x69, 0xdb, 0xe5, 0x1e, 0xac, 0xf0, 0x9b, - 0x97, 0x7b, 0xc8, 0xa1, 0x50, 0x26, 0x32, 0x0a, 0x6b, 0x04, 0xc0, 0xc4, 0x3d, 0xdd, 0xbc, 0xeb, - 0xd3, 0x6f, 0x13, 0x6e, 0x96, 0xe0, 0xe2, 0x84, 0x85, 0x8a, 0xcb, 0x12, 0x69, 0x66, 0x39, 0x55, - 0xba, 0x65, 0x13, 0x69, 0x3e, 0xfb, 0x36, 0x22, 0x8d, 0xa1, 0x7d, 0xb5, 0x29, 0xe1, 0xef, 0x57, - 0x42, 0xd9, 0x0a, 0x44, 0x37, 0x39, 0x82, 0x81, 0x40, 0x18, 0xe4, 0x93, 0x2e, 0x77, 0x10, 0x8b, - 0x26, 0xa4, 0x3c, 0x9b, 0x74, 0xf2, 0x0e, 0x5a, 0x6a, 0x08, 0x93, 0x61, 0x30, 0xb9, 0x17, 0x8b, - 0xab, 0xb3, 0xbb, 0xa1, 0xc9, 0x48, 0x25, 0x5c, 0x0d, 0x30, 0xc5, 0xb5, 0xfa, 0x89, 0xab, 0x59, - 0x67, 0xba, 0x90, 0x62, 0x4a, 0xee, 0xf0, 0xc5, 0xb7, 0xa2, 0x62, 0xb8, 0x62, 0x51, 0x17, 0x68, - 0xf1, 0xf9, 0x89, 0xad, 0xfd, 0x89, 0x7c, 0xfd, 0x8c, 0x11, 0x5c, 0xfe, 0xdd, 0x01, 0x90, 0x59, - 0xd9, 0x6c, 0x62, 0x29, 0x7c, 0x90, 0x75, 0x71, 0x7a, 0x26, 0x73, 0x9a, 0x78, 0x88, 0xca, 0x2c, - 0x9a, 0x51, 0x98, 0x21, 0x90, 0x98, 0x85, 0x15, 0xde, 0x7b, 0x61, 0x4c, 0x36, 0xb1, 0x14, 0x3e, - 0xf2, 0x15, 0xc6, 0xa0, 0xf1, 0xef, 0xa3, 0x87, 0xa0, 0xec, 0x46, 0x96, 0x6b, 0x86, 0x4a, 0x8b, - 0xb0, 0x05, 0x0a, 0x6b, 0x12, 0x79, 0x11, 0xc4, 0xc7, 0xd8, 0xc6, 0x50, 0xfe, 0x6d, 0xde, 0x9e, - 0xc8, 0x97, 0xc5, 0x28, 0x0b, 0x8a, 0xce, 0x2a, 0x0b, 0x31, 0x65, 0xe5, 0x43, 0x10, 0x1f, 0x63, - 0xdb, 0x92, 0x53, 0x56, 0xbe, 0x2c, 0xdf, 0xc5, 0xf9, 0xea, 0xbb, 0xc9, 0x11, 0x91, 0x45, 0xa8, - 0xc4, 0x36, 0x36, 0xbc, 0x07, 0x3d, 0xe0, 0xf3, 0xfb, 0xc2, 0x18, 0xb0, 0x23, 0xa4, 0x04, 0xfd, - 0xee, 0x76, 0x85, 0x30, 0xf4, 0x9f, 0xa8, 0x92, 0x28, 0xe4, 0xa6, 0x8a, 0x4f, 0x64, 0xcd, 0x4b, - 0x68, 0x6a, 0x27, 0x49, 0x96, 0x73, 0x73, 0xf0, 0x7d, 0x1c, 0x53, 0x4a, 0x83, 0x3b, 0x14, 0xda, - 0x1b, 0x08, 0x9a, 0xa2, 0x02, 0x36, 0x3a, 0xe7, 0xa6, 0x8a, 0x3f, 0xcf, 0x5b, 0x4a, 0x07, 0x49, - 0xae, 0x84, 0xdb, 0xc0, 0xf4, 0xaa, 0x45, 0xea, 0xcb, 0x99, 0xd4, 0xcc, 0x79, 0xd6, 0x27, 0x5d, - 0xce, 0xa5, 0x69, 0x08, 0x4b, 0xcb, 0x5a, 0x95, 0xfd, 0x0d, 0x6e, 0x5f, 0x10, 0xf3, 0xed, 0x62, - 0xf1, 0x91, 0xec, 0x99, 0xbb, 0x55, 0xd9, 0x8f, 0xe7, 0x2c, 0x56, 0x27, 0x4d, 0x64, 0xf3, 0xfc, - 0x3a, 0x75, 0xa5, 0x3b, 0xa3, 0x5e, 0xa2, 0xde, 0xe5, 0xb1, 0x21, 0xf0, 0xb1, 0x10, 0x33, 0x91, - 0x81, 0x64, 0x2c, 0x32, 0x97, 0x88, 0x8a, 0xe9, 0x48, 0x9f, 0x76, 0xf6, 0x10, 0xd9, 0xd8, 0x12, - 0xa7, 0xb4, 0xbe, 0x7e, 0x6d, 0xfa, 0x60, 0x46, 0xbd, 0x24, 0x9b, 0xa4, 0xca, 0xfe, 0x7a, 0x11, - 0x7a, 0xc0, 0x14, 0xe5, 0x82, 0x8a, 0x57, 0xf1, 0x87, 0x7d, 0xee, 0x36, 0xfe, 0x71, 0x54, 0x14, - 0xc2, 0x2a, 0xd7, 0x56, 0x3a, 0x94, 0x16, 0xc0, 0x48, 0xb5, 0xfc, 0x59, 0x60, 0x50, 0x19, 0x2f, - 0x95, 0x32, 0xb4, 0xdc, 0xd3, 0xe6, 0x53, 0xfc, 0x61, 0x50, 0xfc, 0x41, 0x40, 0x92, 0x6d, 0x30, - 0xfe, 0x47, 0x86, 0xe0, 0x63, 0x90, 0x93, 0xbc, 0xde, 0xa0, 0x12, 0x0a, 0x81, 0xe0, 0x23, 0xdb, - 0x81, 0xf8, 0x76, 0xa5, 0xdb, 0xa9, 0x04, 0xc3, 0x35, 0xee, 0xb0, 0x1b, 0x34, 0x28, 0x99, 0x81, - 0x18, 0xf5, 0x30, 0x86, 0xb9, 0x29, 0xd0, 0xaa, 0x80, 0xe2, 0x51, 0x24, 0x5b, 0x00, 0xa3, 0x0c, - 0x52, 0xa9, 0x1a, 0x90, 0xd4, 0x96, 0x41, 0x19, 0x36, 0x20, 0xef, 0x40, 0xc5, 0x1e, 0x10, 0x61, - 0xe9, 0xa1, 0x5c, 0x91, 0xcc, 0x82, 0xb2, 0xee, 0x78, 0x16, 0xdd, 0xe5, 0x8e, 0x27, 0xca, 0xb9, - 0xe3, 0x69, 0xe4, 0xc7, 0x6d, 0x37, 0xea, 0x0d, 0xce, 0x3b, 0x32, 0x03, 0x81, 0xde, 0x34, 0xbe, - 0x8c, 0xbe, 0x5e, 0x6e, 0xf6, 0x26, 0x01, 0x98, 0x6e, 0x79, 0xb9, 0x63, 0x24, 0x3e, 0xdd, 0xec, - 0x09, 0x55, 0x19, 0xcc, 0xbd, 0xca, 0xdd, 0xa2, 0xf8, 0xc3, 0xc9, 0xd8, 0x61, 0xfd, 0xb0, 0xb1, - 0xa9, 0xb3, 0x1e, 0x7b, 0x65, 0xff, 0x72, 0x11, 0x2a, 0xaa, 0x77, 0xb7, 0x2b, 0xa1, 0x0e, 0xb7, - 0x47, 0xe1, 0x79, 0xb4, 0xd8, 0x5a, 0x50, 0x32, 0xfe, 0xcd, 0x6f, 0xc8, 0x7f, 0xff, 0x1d, 0x86, - 0x35, 0xef, 0xc5, 0xf4, 0xc7, 0xd9, 0x4b, 0xdc, 0x30, 0xba, 0xcc, 0xc5, 0xec, 0xb5, 0xb6, 0x8b, - 0xd9, 0x30, 0xae, 0xec, 0xed, 0xe9, 0xd7, 0xe8, 0x86, 0x0f, 0x3b, 0x70, 0x8e, 0x7a, 0x44, 0xab, - 0xcb, 0x6e, 0xf7, 0x74, 0x13, 0x5f, 0x83, 0x0a, 0xdb, 0xdd, 0xfb, 0xde, 0xec, 0x0c, 0x84, 0xdd, - 0x64, 0xc8, 0xe9, 0x77, 0xd6, 0x48, 0x2d, 0xbb, 0xcb, 0x48, 0x15, 0xe6, 0x8c, 0xd4, 0xab, 0xa8, - 0xe8, 0x37, 0x06, 0xa1, 0x3a, 0x5f, 0x28, 0x8c, 0x99, 0x7a, 0x9e, 0xad, 0x44, 0x56, 0x42, 0xf8, - 0x8c, 0x05, 0x97, 0x28, 0x5b, 0xf8, 0xdf, 0x81, 0x89, 0x6e, 0x7a, 0x46, 0x95, 0x9e, 0x46, 0x4f, - 0x09, 0xd6, 0x40, 0x89, 0x0f, 0xb1, 0x81, 0x02, 0xfc, 0x64, 0x87, 0x2d, 0xfb, 0x8f, 0x05, 0xa8, - 0xc4, 0x56, 0xbe, 0x31, 0x14, 0x7e, 0x33, 0x93, 0xb9, 0x4e, 0x29, 0xe0, 0xdb, 0x0d, 0xad, 0xc7, - 0x1e, 0x02, 0x81, 0x5d, 0xd9, 0x3f, 0x42, 0x25, 0x41, 0xb6, 0x78, 0x73, 0xd5, 0xda, 0x80, 0xfc, - 0xc3, 0xf6, 0x50, 0x03, 0xd4, 0x5b, 0xcc, 0x3e, 0x3a, 0x4b, 0xef, 0x32, 0x3a, 0xcb, 0x72, 0x46, - 0xe7, 0x61, 0x7a, 0x3c, 0x08, 0x23, 0x67, 0x9e, 0xe2, 0x95, 0x5a, 0x7e, 0xe6, 0xb0, 0x38, 0xcd, - 0xcf, 0x4d, 0xeb, 0x54, 0xe9, 0x39, 0x54, 0x21, 0xd8, 0xfb, 0x4c, 0x2c, 0x65, 0xfb, 0x16, 0x7c, - 0x7c, 0x32, 0x7d, 0x83, 0x99, 0x8f, 0xce, 0x96, 0x0d, 0x2e, 0x42, 0x88, 0x61, 0x82, 0xb9, 0x43, - 0x68, 0x54, 0x41, 0xf1, 0x04, 0x4d, 0x41, 0x5e, 0x26, 0x5f, 0xfc, 0x33, 0x68, 0x45, 0xa8, 0xb3, - 0x99, 0xde, 0xf4, 0xa0, 0x7d, 0x97, 0x05, 0x35, 0x26, 0x6f, 0x58, 0xf1, 0xbb, 0xb1, 0xe3, 0x3f, - 0xf4, 0x1d, 0xfd, 0xe6, 0x2b, 0xd1, 0x03, 0x66, 0x3f, 0xe2, 0x6d, 0x19, 0x9b, 0xf0, 0xa1, 0x07, - 0x73, 0x13, 0x0c, 0x4a, 0xc0, 0x23, 0xcc, 0xc8, 0x0c, 0x32, 0xfd, 0xb6, 0x18, 0x70, 0x23, 0xd4, - 0x75, 0x19, 0xcb, 0x80, 0x01, 0xc6, 0x8b, 0xe8, 0x21, 0xa2, 0xba, 0x10, 0x87, 0x7d, 0x82, 0x0b, - 0x5d, 0x9b, 0x37, 0xcd, 0xa0, 0xdb, 0xd2, 0xaa, 0x34, 0xd0, 0xa5, 0x0f, 0xbd, 0x6d, 0x83, 0x6d, - 0xda, 0xaa, 0x4a, 0x6f, 0xa0, 0xcd, 0x02, 0xd3, 0x8d, 0xe2, 0xcb, 0x70, 0x68, 0x02, 0xbd, 0x0e, - 0x97, 0x06, 0xf4, 0xfe, 0x9b, 0xe6, 0xae, 0x05, 0x4e, 0x6b, 0x5a, 0xdf, 0x44, 0xe6, 0xd0, 0x30, - 0xbd, 0x51, 0x00, 0x52, 0x75, 0xd9, 0xc8, 0x12, 0x54, 0xcc, 0x38, 0x4f, 0xf3, 0x9b, 0xd1, 0x52, - 0xb8, 0xd6, 0x4c, 0x24, 0x02, 0x63, 0x7c, 0x05, 0x02, 0x12, 0x9f, 0x22, 0xa6, 0x2a, 0xbc, 0xf3, - 0xce, 0x25, 0xa2, 0xfa, 0xd8, 0xe7, 0x00, 0x49, 0xc6, 0xe2, 0xcd, 0xad, 0xa1, 0x40, 0x47, 0x48, - 0x26, 0xa8, 0xfc, 0xaf, 0xd1, 0xe2, 0x36, 0x9f, 0xbf, 0x95, 0xec, 0xf8, 0xbf, 0x50, 0xa5, 0x2d, - 0x02, 0x06, 0x88, 0x3f, 0x07, 0x44, 0x70, 0xd1, 0xcb, 0x7c, 0xf8, 0xb5, 0x3e, 0x74, 0x89, 0x1e, - 0xfa, 0x68, 0xc3, 0x47, 0xd3, 0x5f, 0xdd, 0xd4, 0x2f, 0x1c, 0xd2, 0x0e, 0x1d, 0x4c, 0xdf, 0x1e, - 0x49, 0xcd, 0x5c, 0x4f, 0xc6, 0x8f, 0x68, 0x87, 0xc7, 0xd3, 0xb7, 0xc7, 0x52, 0x13, 0x47, 0xe0, - 0x62, 0xac, 0x8c, 0xc9, 0xf0, 0x97, 0x38, 0xb4, 0xb4, 0xc3, 0x1d, 0x74, 0xb7, 0x9b, 0x47, 0x53, - 0xcf, 0x2e, 0xe0, 0x12, 0xbe, 0xae, 0x01, 0x63, 0x82, 0x8a, 0xe1, 0x55, 0x25, 0xb7, 0x40, 0xf2, - 0x8a, 0x6f, 0xd9, 0x6a, 0x03, 0x47, 0x69, 0x58, 0xc1, 0xb1, 0xb4, 0x83, 0xa9, 0x73, 0x99, 0xd3, - 0x7d, 0xe4, 0x52, 0xee, 0xc9, 0x1b, 0xc4, 0x0d, 0x17, 0x80, 0xe3, 0x51, 0x43, 0xb9, 0x30, 0xb5, - 0x2f, 0xbd, 0xff, 0x04, 0x9c, 0x31, 0x69, 0xd1, 0x13, 0x32, 0x29, 0xc0, 0x50, 0x9e, 0x1f, 0x74, - 0xb7, 0xb5, 0x05, 0xf6, 0x36, 0xb6, 0xfa, 0x3a, 0xde, 0xda, 0xa3, 0xf8, 0x37, 0x63, 0x1f, 0x34, - 0x3c, 0x35, 0x0b, 0xab, 0x5b, 0x55, 0x69, 0x8f, 0x90, 0x2f, 0x5d, 0x7c, 0x33, 0x0f, 0x90, 0x1c, - 0xf3, 0x0c, 0x5c, 0x49, 0x8f, 0x47, 0xa9, 0x6f, 0x1b, 0xd1, 0x2c, 0xfb, 0xba, 0xd3, 0x53, 0xb1, - 0xf4, 0xcd, 0x2f, 0xd3, 0xb7, 0x0f, 0x99, 0x66, 0x1b, 0x43, 0x6b, 0x64, 0xc0, 0x72, 0xbe, 0x72, - 0x0c, 0x96, 0xca, 0x74, 0xce, 0x7d, 0xb1, 0xd4, 0x9d, 0xaa, 0xd4, 0x88, 0xde, 0x14, 0xd8, 0xe9, - 0x23, 0x56, 0xb3, 0x83, 0xc7, 0xde, 0x05, 0x84, 0xa9, 0x49, 0x47, 0x9a, 0x9c, 0xd6, 0x44, 0x4f, - 0x68, 0x37, 0x2f, 0x25, 0x67, 0xc7, 0xc0, 0x81, 0x09, 0x70, 0xca, 0xbe, 0x58, 0x82, 0x96, 0x4a, - 0x60, 0x96, 0xec, 0x42, 0xa8, 0x23, 0xa8, 0xc0, 0x87, 0x79, 0x0a, 0x8d, 0x6f, 0xbf, 0x31, 0x60, - 0xb1, 0x96, 0x8c, 0xc3, 0x80, 0x31, 0xa1, 0x29, 0x61, 0x28, 0x1c, 0x2e, 0xa4, 0xcf, 0x25, 0xa2, - 0x6e, 0x8c, 0xac, 0x8d, 0x4d, 0xe8, 0x1f, 0x0e, 0x26, 0x67, 0xc7, 0xd8, 0x2c, 0xd0, 0xa1, 0x32, - 0x43, 0x92, 0xdf, 0x87, 0x8a, 0x3b, 0x02, 0xa1, 0xb0, 0x59, 0x70, 0xc1, 0xc2, 0x05, 0x8f, 0x0c, - 0xdd, 0x77, 0xc1, 0x38, 0x0b, 0x29, 0x98, 0x2d, 0x8a, 0x6f, 0x45, 0xcb, 0x3a, 0x70, 0x57, 0x9a, - 0xf3, 0x3a, 0xe7, 0x16, 0x0b, 0x60, 0xae, 0x83, 0x0e, 0x27, 0x73, 0x1a, 0x3b, 0x19, 0x98, 0x19, - 0xc5, 0xb5, 0x5a, 0xdf, 0xcd, 0xe4, 0xec, 0x87, 0x50, 0x14, 0xf1, 0x0d, 0x3b, 0x3c, 0x91, 0x9c, - 0x1d, 0x03, 0x2d, 0x59, 0x36, 0x11, 0xd7, 0xbc, 0x85, 0x96, 0xb3, 0x64, 0xbe, 0xb7, 0x7b, 0x17, - 0x9b, 0xe6, 0x38, 0x55, 0xfa, 0xdf, 0x38, 0x94, 0xe6, 0x04, 0x32, 0x92, 0xe2, 0x7f, 0xe4, 0x60, - 0x74, 0xa9, 0x2a, 0x0e, 0xb7, 0xa8, 0x68, 0xaf, 0x91, 0xca, 0xe2, 0xbe, 0xab, 0x74, 0x68, 0xd3, - 0xb7, 0xf4, 0xa1, 0x4b, 0xef, 0x07, 0x9a, 0x81, 0xd5, 0x54, 0x3a, 0xb4, 0xa9, 0xa8, 0xde, 0x3f, - 0x42, 0x55, 0x7f, 0xe8, 0xcb, 0x57, 0x1d, 0xd9, 0x37, 0x35, 0x47, 0x7b, 0xe1, 0x37, 0xa4, 0xeb, - 0x13, 0xe3, 0xa9, 0x81, 0x7e, 0x58, 0xc9, 0x99, 0xb1, 0x08, 0xcd, 0x0d, 0xb9, 0xb4, 0x8b, 0x57, - 0x20, 0x20, 0x05, 0x20, 0x1b, 0x6a, 0xfe, 0x4c, 0x1f, 0xd8, 0xcc, 0x60, 0x5e, 0x40, 0x9f, 0x19, - 0xab, 0x1a, 0x8f, 0x16, 0xe9, 0xc2, 0xc1, 0x2f, 0xb5, 0xe1, 0x69, 0xf3, 0xfc, 0x39, 0x75, 0xec, - 0x1a, 0xf8, 0x4e, 0x95, 0xf5, 0x17, 0x23, 0x64, 0x1e, 0xc6, 0xb5, 0x04, 0xf9, 0xdd, 0x68, 0x95, - 0xbb, 0xcb, 0xed, 0xc3, 0xf6, 0x17, 0xf3, 0xe8, 0x08, 0xa6, 0x2f, 0x3e, 0x42, 0xcd, 0x49, 0x14, - 0x9f, 0xd6, 0x6e, 0x7e, 0x01, 0x07, 0x0a, 0xa9, 0xd1, 0x5e, 0xeb, 0xf0, 0xd8, 0x41, 0x0e, 0x8d, - 0x21, 0xae, 0x42, 0x4e, 0x36, 0xfe, 0x2f, 0x51, 0x09, 0x6c, 0xef, 0xe6, 0x05, 0x4d, 0x18, 0xa7, - 0x87, 0xf3, 0x4f, 0x1a, 0x70, 0xb8, 0xb3, 0xe7, 0x30, 0x2f, 0x89, 0x81, 0x41, 0x51, 0x3f, 0x79, - 0x03, 0x4e, 0xe4, 0xad, 0xe9, 0x0c, 0xf3, 0x07, 0x66, 0x8e, 0x3d, 0xab, 0x51, 0x3a, 0x3e, 0x4b, - 0xa0, 0xa5, 0x2f, 0xba, 0x87, 0xd2, 0x6d, 0x39, 0xac, 0xd2, 0x2f, 0x64, 0x4e, 0x5f, 0xbc, 0x5b, - 0xe9, 0xb6, 0xac, 0xfc, 0x11, 0x0e, 0x3d, 0xe0, 0xf6, 0x7a, 0xf1, 0x95, 0xe5, 0xa6, 0x80, 0x59, - 0x85, 0xc5, 0x0b, 0x56, 0xa1, 0x56, 0x95, 0xaa, 0x85, 0xdc, 0x5c, 0x62, 0x15, 0x7b, 0x33, 0x57, - 0xeb, 0xbf, 0x6a, 0x06, 0x9c, 0x9a, 0xcc, 0x5f, 0x93, 0x5c, 0x0a, 0xfc, 0x05, 0x0e, 0x3d, 0x0c, - 0xf5, 0xc3, 0x09, 0x9b, 0x83, 0x81, 0x76, 0xb3, 0x4a, 0x4b, 0x16, 0xac, 0x52, 0x83, 0x2a, 0x6d, - 0x13, 0xe6, 0xc9, 0x2a, 0x3e, 0x9f, 0x9c, 0x19, 0x62, 0x7b, 0x88, 0xda, 0xfc, 0x16, 0xea, 0xa7, - 0x79, 0x88, 0xf1, 0xbf, 0x47, 0x25, 0xe4, 0xb2, 0x24, 0xa9, 0xd8, 0xd2, 0x05, 0x2b, 0x86, 0x7d, - 0x44, 0xed, 0x39, 0xc4, 0x2a, 0xb8, 0x9d, 0x48, 0xaf, 0x90, 0x42, 0x35, 0x52, 0xa3, 0xbd, 0xf3, - 0x8c, 0x98, 0x2d, 0x37, 0xff, 0x7b, 0xf4, 0x80, 0x07, 0x5f, 0xfb, 0xc5, 0x77, 0x03, 0xa1, 0x18, - 0x62, 0xbc, 0x9a, 0xaf, 0x12, 0xd8, 0xb1, 0x29, 0x37, 0x97, 0xf8, 0x14, 0xa9, 0x02, 0xbe, 0x74, - 0x38, 0xcf, 0x20, 0xe5, 0xe4, 0x32, 0x06, 0xe9, 0x71, 0xcf, 0x1e, 0xc5, 0xd3, 0x5a, 0xbb, 0x2f, - 0xac, 0x04, 0xfd, 0xee, 0x36, 0xa3, 0x8f, 0x6a, 0xdb, 0x3b, 0xc2, 0xfb, 0x49, 0x65, 0x0a, 0x17, - 0xac, 0x4c, 0x8d, 0x2a, 0x49, 0xc2, 0x82, 0x04, 0xcc, 0x7a, 0xa5, 0x3e, 0xff, 0x1c, 0xe2, 0xda, - 0x10, 0x2b, 0xc2, 0x27, 0xf1, 0xcc, 0xc9, 0x2f, 0xf4, 0x8f, 0x23, 0xfa, 0xf9, 0x4b, 0xf2, 0x82, - 0x04, 0xf8, 0x5e, 0x0e, 0x95, 0x40, 0xb1, 0x5e, 0x72, 0x9b, 0x77, 0x1e, 0x2d, 0x69, 0x1b, 0x8b, - 0x04, 0x0e, 0x9e, 0xf6, 0x8c, 0xe2, 0x73, 0xac, 0xcb, 0x43, 0xfa, 0x4a, 0xaf, 0x7e, 0x21, 0x01, - 0x52, 0x9f, 0xe9, 0xec, 0x18, 0xe9, 0x81, 0xdd, 0xb8, 0x69, 0x6b, 0xad, 0x6c, 0xcf, 0xbb, 0x09, - 0x22, 0xfe, 0xa0, 0x6b, 0x9c, 0xc0, 0xb0, 0x35, 0xf1, 0x23, 0x8e, 0x15, 0x34, 0xc9, 0xc4, 0xbc, - 0xd6, 0x93, 0x39, 0xfb, 0x11, 0xb8, 0xc4, 0xde, 0x89, 0x74, 0xb3, 0x9b, 0xbe, 0x21, 0x3e, 0xc5, - 0xa6, 0xb4, 0xc3, 0x9f, 0xb0, 0x2c, 0x26, 0x19, 0x23, 0x1e, 0xed, 0xeb, 0xa0, 0x16, 0xc9, 0x99, - 0x3e, 0x60, 0x7c, 0xb0, 0x53, 0x96, 0xb3, 0x11, 0x07, 0xd6, 0xc3, 0xac, 0x27, 0x1f, 0xe6, 0x90, - 0x5b, 0x2b, 0x75, 0x7d, 0xee, 0xda, 0xa8, 0x28, 0x7b, 0x09, 0x95, 0xd8, 0xfa, 0xc6, 0x50, 0xc9, - 0x43, 0x1d, 0x8a, 0xc7, 0x54, 0xc9, 0x8d, 0xdf, 0x06, 0xcc, 0xab, 0x84, 0x3c, 0x44, 0xaa, 0xc1, - 0xbf, 0xcb, 0x0e, 0x96, 0xa0, 0xe5, 0xf4, 0x3a, 0x92, 0xc1, 0xc5, 0xfb, 0x38, 0xb4, 0x12, 0x38, - 0x1e, 0x05, 0xdf, 0x85, 0xc1, 0xe2, 0xbb, 0x3f, 0xd9, 0x79, 0xc4, 0x2a, 0x32, 0x0b, 0x66, 0x7a, - 0xef, 0x89, 0xcb, 0x66, 0xe7, 0xc7, 0xf5, 0xb0, 0xd6, 0x34, 0xd4, 0x63, 0xd1, 0x3d, 0xd4, 0x23, - 0x2b, 0x8f, 0xad, 0x1e, 0xf7, 0xc0, 0x6f, 0xb3, 0xf3, 0xf3, 0x33, 0x1c, 0x5a, 0xd5, 0x1e, 0xe8, - 0x52, 0x08, 0xeb, 0xb3, 0xce, 0xd3, 0xe6, 0xaf, 0x08, 0xbe, 0xd9, 0xf6, 0x10, 0x93, 0xc9, 0xaa, - 0xcd, 0xaf, 0x52, 0x57, 0x66, 0xb4, 0xc3, 0x24, 0x78, 0x46, 0xfa, 0xd0, 0x97, 0xb4, 0x72, 0x0b, - 0x57, 0xab, 0xdc, 0x6a, 0xc4, 0xc5, 0x13, 0xa6, 0x91, 0x0e, 0x13, 0x62, 0x48, 0x54, 0xc8, 0x39, - 0x15, 0xe5, 0xff, 0x09, 0x87, 0x1e, 0x0a, 0x2a, 0x14, 0x6c, 0x70, 0x46, 0x68, 0xc1, 0xc2, 0xfc, - 0xb9, 0x53, 0x95, 0x82, 0x42, 0x69, 0x56, 0x46, 0xab, 0x15, 0x3b, 0x93, 0x33, 0x43, 0x59, 0xdd, - 0x7a, 0x2f, 0x4c, 0x3a, 0x7f, 0x2b, 0x32, 0xa7, 0x2f, 0xa6, 0x26, 0x4f, 0xa4, 0x8e, 0x5f, 0xaa, - 0x90, 0xf3, 0x56, 0x95, 0x3f, 0xca, 0xa1, 0x07, 0x3c, 0x6d, 0x8a, 0xdb, 0x8f, 0xe1, 0x2e, 0x3f, - 0x34, 0x60, 0x61, 0x3e, 0x8e, 0xfd, 0xce, 0x73, 0x73, 0x89, 0xcf, 0xd3, 0x2a, 0xe0, 0xcb, 0x84, - 0xb7, 0xee, 0x69, 0x6f, 0xc9, 0xa5, 0x63, 0xd4, 0x89, 0x07, 0x1b, 0x42, 0x8d, 0x12, 0xf2, 0x05, - 0x15, 0xd8, 0x19, 0xef, 0xc2, 0xd7, 0xf1, 0xcd, 0xb3, 0x3c, 0xd9, 0xc4, 0x0d, 0xd6, 0x34, 0x18, - 0xb0, 0x6a, 0xb5, 0x50, 0x95, 0xf2, 0x50, 0xe1, 0x63, 0x1c, 0x7a, 0xd4, 0xed, 0xf5, 0xb2, 0x4c, - 0x96, 0x91, 0x11, 0x16, 0xe6, 0xf2, 0xcd, 0xaa, 0xb4, 0x4b, 0x98, 0x3f, 0xb7, 0x58, 0x4d, 0x6b, - 0x98, 0x8c, 0x1d, 0xd6, 0xcf, 0xdd, 0xc8, 0xcb, 0xf1, 0xef, 0xd2, 0x8d, 0xf3, 0x93, 0xe7, 0xff, - 0x29, 0x87, 0xd6, 0xc2, 0xc2, 0xb3, 0x21, 0xb0, 0x02, 0x45, 0xd1, 0x82, 0xf5, 0xc7, 0x0a, 0xee, - 0x5d, 0x48, 0x88, 0x3f, 0xcf, 0x9a, 0xb3, 0xf9, 0xb7, 0xad, 0x05, 0x5a, 0x70, 0x97, 0x02, 0x36, - 0xdd, 0x2a, 0x50, 0xa5, 0xaf, 0x0a, 0xd0, 0x17, 0x05, 0x82, 0x8d, 0xa7, 0x8a, 0xe3, 0x05, 0x79, - 0xb6, 0x10, 0xf6, 0x56, 0xeb, 0x3d, 0x6c, 0x27, 0x36, 0x7c, 0xfb, 0xa6, 0x52, 0xe9, 0xd0, 0xd4, - 0x28, 0xe8, 0x3f, 0xa9, 0xd1, 0x5e, 0x88, 0x1a, 0x81, 0x2f, 0x07, 0x12, 0xef, 0x71, 0x88, 0x2f, - 0x68, 0xb6, 0xfd, 0x4e, 0xa4, 0x9b, 0x5d, 0xb2, 0x00, 0x99, 0x8f, 0x2d, 0xdd, 0x89, 0x74, 0xcf, - 0xb7, 0xd6, 0xef, 0x44, 0xba, 0xf3, 0x4e, 0x5b, 0x1b, 0x3c, 0xd6, 0x97, 0x1a, 0x39, 0xc8, 0x86, - 0xa1, 0xd2, 0x6e, 0xdd, 0xc8, 0x1c, 0x8b, 0xe8, 0xd3, 0xdd, 0xfa, 0x58, 0x5c, 0x3b, 0x3d, 0x91, - 0x9a, 0x24, 0x7a, 0x4d, 0xd9, 0xdf, 0x2d, 0x41, 0x4b, 0xb7, 0x37, 0xe2, 0xc3, 0x9a, 0x1e, 0x6e, - 0x5e, 0x4d, 0x02, 0xeb, 0xa3, 0xb9, 0x9a, 0xc4, 0xcf, 0xc1, 0x7b, 0x06, 0x34, 0x27, 0x1a, 0x40, - 0x89, 0xb8, 0xbc, 0xe3, 0xc0, 0x54, 0xc9, 0x58, 0x24, 0x19, 0x3f, 0x03, 0x31, 0xca, 0x6c, 0xc8, - 0xe0, 0xb0, 0x96, 0xab, 0x65, 0x9c, 0xe3, 0xb2, 0x2e, 0x69, 0x83, 0x42, 0xfc, 0x81, 0x2a, 0xed, - 0xcd, 0xba, 0xa4, 0xdd, 0x02, 0xf4, 0x48, 0x83, 0x16, 0x28, 0x1c, 0x3c, 0xaf, 0x71, 0x15, 0x00, - 0x0d, 0xb2, 0xcc, 0x25, 0xa2, 0xfa, 0x89, 0x5b, 0xc9, 0xaf, 0x6f, 0x83, 0x7b, 0x87, 0x36, 0x36, - 0xe1, 0x69, 0xf3, 0xdd, 0x89, 0x74, 0x37, 0xba, 0xdd, 0x8d, 0x70, 0x9f, 0x15, 0xbc, 0x60, 0xb3, - 0xee, 0x79, 0x0f, 0x73, 0x68, 0xb5, 0x57, 0xd9, 0xed, 0xee, 0x6c, 0x0b, 0x67, 0x9d, 0xe5, 0x2d, - 0xc2, 0x35, 0xc5, 0xb7, 0x43, 0xf2, 0x63, 0x88, 0xaf, 0x51, 0xdf, 0xcb, 0x64, 0xec, 0x30, 0xeb, - 0xf8, 0x71, 0x6f, 0x15, 0xc9, 0x4f, 0x95, 0x3f, 0xc5, 0xa1, 0x65, 0x60, 0x94, 0x35, 0x4f, 0xdd, - 0x73, 0x14, 0x79, 0x18, 0xe1, 0x75, 0x32, 0x60, 0x81, 0x22, 0x8f, 0x2b, 0x6a, 0x66, 0x14, 0xb7, - 0xb2, 0xc1, 0x22, 0x0d, 0x15, 0x14, 0x7b, 0x14, 0xb0, 0x2e, 0xa5, 0x73, 0x89, 0x68, 0xab, 0xb2, - 0x5f, 0x3f, 0x65, 0xbb, 0x10, 0x8f, 0xf5, 0xf0, 0x90, 0x7e, 0x6a, 0x3a, 0x19, 0x9b, 0xd4, 0x4f, - 0x1c, 0x4a, 0x4f, 0x5f, 0xd7, 0x4f, 0x0d, 0xc9, 0x26, 0xd5, 0x35, 0x9b, 0xd0, 0x72, 0xb6, 0xcc, - 0xfb, 0xb2, 0xf9, 0x90, 0x4b, 0x8b, 0x64, 0x76, 0x8a, 0xbf, 0xb0, 0xd9, 0x1d, 0x61, 0x64, 0xf1, - 0xca, 0x4d, 0x8d, 0xf6, 0xc2, 0x9c, 0xca, 0x72, 0xeb, 0x86, 0xf5, 0xbb, 0xbd, 0x11, 0x56, 0x39, - 0xb9, 0xcb, 0x8f, 0x03, 0x90, 0x94, 0xfd, 0x9b, 0xa5, 0x68, 0x19, 0x31, 0x86, 0xf2, 0xd5, 0xa8, - 0x10, 0xcc, 0xbe, 0x34, 0x16, 0x01, 0xbe, 0x5f, 0x4f, 0x81, 0xe2, 0x23, 0xe9, 0xbe, 0xaf, 0xd3, - 0x53, 0xd3, 0xd4, 0x9a, 0x69, 0x26, 0xc8, 0x14, 0x85, 0xdf, 0x8c, 0x8a, 0xe0, 0xf7, 0x56, 0x65, - 0x3f, 0x31, 0x43, 0xc2, 0x8d, 0x70, 0x0a, 0x15, 0x4b, 0xf3, 0x52, 0xd9, 0xaa, 0xec, 0x97, 0x2d, - 0x24, 0x7e, 0x6b, 0x7e, 0xc3, 0x33, 0x44, 0x3f, 0xcb, 0x4a, 0x12, 0x57, 0x48, 0x1f, 0x74, 0x06, - 0x15, 0x47, 0x7a, 0xea, 0xa3, 0xcc, 0xa9, 0x3e, 0x57, 0x4d, 0x8e, 0x75, 0xfa, 0x95, 0x6c, 0xeb, - 0x74, 0xf5, 0x13, 0xaa, 0xb4, 0x46, 0xa0, 0x40, 0x93, 0x40, 0xea, 0xca, 0x79, 0xbd, 0xff, 0xa6, - 0xd1, 0x1e, 0x6a, 0xbc, 0x7e, 0x77, 0x5e, 0xe3, 0x75, 0x75, 0x95, 0x2a, 0x09, 0x42, 0x6e, 0xaa, - 0xb8, 0x9a, 0xd4, 0x06, 0x1b, 0xe0, 0x0d, 0x96, 0x05, 0xbe, 0xe7, 0x79, 0x6c, 0xdd, 0x5b, 0xb3, - 0x6d, 0xdd, 0x24, 0x10, 0xb2, 0x09, 0x14, 0x1d, 0x40, 0x8a, 0x5c, 0x74, 0x74, 0x34, 0x04, 0x7d, - 0x7e, 0x8f, 0xaf, 0xc3, 0xdd, 0xe6, 0x70, 0x12, 0x0c, 0xc6, 0x38, 0xfe, 0x6e, 0x3e, 0xe3, 0x38, - 0x09, 0xe9, 0xc0, 0x26, 0x88, 0x3f, 0x5a, 0x98, 0x28, 0x60, 0x65, 0x59, 0xd5, 0xbb, 0xb9, 0x85, - 0xcc, 0xea, 0x70, 0x07, 0x39, 0x2f, 0x82, 0x28, 0x6e, 0xc1, 0x41, 0xb5, 0x1d, 0xd8, 0x75, 0xdb, - 0x41, 0x50, 0x1c, 0x6e, 0xc0, 0x49, 0x8d, 0xf6, 0xbe, 0x1f, 0x0a, 0xf8, 0xe9, 0x32, 0x4a, 0x5d, - 0x39, 0x95, 0x51, 0x2f, 0xcd, 0x63, 0xa5, 0xaf, 0xcb, 0x67, 0xa5, 0x87, 0xd9, 0x65, 0x4b, 0x10, - 0x57, 0xdb, 0x8a, 0xa4, 0x31, 0x96, 0xed, 0xf6, 0x7c, 0x62, 0x47, 0x35, 0x27, 0xbf, 0xb8, 0x99, - 0x2c, 0x15, 0x7c, 0x17, 0x9c, 0xb9, 0x8f, 0x67, 0x68, 0xd9, 0x78, 0x9a, 0xd2, 0x35, 0xc5, 0x24, - 0x42, 0x1c, 0x6f, 0xad, 0x2f, 0xa1, 0x4d, 0xdd, 0xd2, 0x2e, 0xf6, 0xa6, 0x46, 0x0e, 0x96, 0x9d, - 0x58, 0x86, 0x96, 0x3b, 0x99, 0x78, 0x41, 0xfc, 0x0e, 0xb4, 0x0c, 0xe3, 0xd2, 0x45, 0x85, 0x9d, - 0xa4, 0x4c, 0x98, 0x58, 0x55, 0xed, 0x6c, 0x24, 0x31, 0x6a, 0x4c, 0x43, 0x14, 0x0d, 0x74, 0x3d, - 0x97, 0x88, 0xa6, 0x8f, 0x5c, 0xd3, 0x4f, 0x1c, 0xa2, 0x1d, 0x24, 0x9b, 0xf9, 0xf8, 0x16, 0xf6, - 0xac, 0x12, 0x16, 0x1a, 0x96, 0xee, 0x98, 0x80, 0xd3, 0xaf, 0xb0, 0xf5, 0xa0, 0x41, 0x14, 0xa0, - 0x3f, 0xac, 0xd6, 0x7c, 0x7d, 0x3b, 0x19, 0x1f, 0xd2, 0xcf, 0x5f, 0x4a, 0x4f, 0x7f, 0xa4, 0xa9, - 0xd1, 0xf4, 0xed, 0x43, 0xfa, 0xcc, 0x45, 0xf6, 0xd8, 0xd3, 0x8d, 0x8a, 0xdc, 0x34, 0xa8, 0xd3, - 0x22, 0x2b, 0xd6, 0x82, 0x05, 0x15, 0x9f, 0xa7, 0x6d, 0x00, 0x97, 0x00, 0xda, 0x67, 0xae, 0x9a, - 0x4a, 0x07, 0x8d, 0x75, 0x5e, 0x5e, 0xed, 0x6c, 0xac, 0xc2, 0x55, 0xaa, 0x72, 0xd5, 0x54, 0xc8, - 0x56, 0x7e, 0xbe, 0x16, 0x15, 0x93, 0x0f, 0xe6, 0x7a, 0x07, 0x5e, 0xe9, 0x2c, 0x5c, 0x7c, 0x80, - 0x09, 0xe2, 0x64, 0x5e, 0xe8, 0x60, 0xd2, 0xf9, 0x17, 0x89, 0x76, 0x09, 0xcb, 0x13, 0x87, 0x4c, - 0xc5, 0x00, 0xf1, 0x11, 0x26, 0x23, 0xc4, 0x2f, 0x23, 0x4e, 0x30, 0x38, 0x99, 0xdf, 0x8e, 0x96, - 0x11, 0x32, 0x44, 0xa6, 0x7f, 0x24, 0x57, 0xc6, 0xc3, 0xc9, 0x10, 0x9f, 0x04, 0x68, 0xb2, 0x95, - 0x21, 0xd4, 0x4c, 0x2a, 0xfc, 0x76, 0xb4, 0x14, 0x9c, 0x68, 0x89, 0x47, 0x2f, 0x5e, 0x84, 0x04, - 0x24, 0x0a, 0x6c, 0x65, 0x18, 0x9f, 0xe1, 0x4a, 0x7a, 0x0b, 0x12, 0xbe, 0x53, 0xa3, 0xbd, 0x32, - 0xc9, 0xc3, 0xbf, 0x64, 0x05, 0x73, 0x2e, 0xb4, 0xf8, 0x17, 0x0d, 0xe6, 0xbc, 0x72, 0xde, 0x30, - 0xce, 0x2f, 0x59, 0xd1, 0x23, 0x8b, 0x98, 0x8c, 0x66, 0xf4, 0xc8, 0x95, 0xf3, 0xc6, 0x8d, 0xdc, - 0x84, 0x8a, 0x30, 0x0d, 0xeb, 0xe8, 0x1f, 0x1a, 0x6f, 0x41, 0xc5, 0xe5, 0x54, 0xad, 0xce, 0x9c, - 0xbc, 0x2e, 0x5b, 0x09, 0xfc, 0x6b, 0xb6, 0xf3, 0xce, 0x62, 0xab, 0x5c, 0x06, 0x2c, 0x2e, 0x87, - 0x42, 0x49, 0x6e, 0x26, 0x65, 0xd3, 0x0e, 0x55, 0x92, 0x51, 0x83, 0x60, 0x5b, 0x45, 0xe2, 0xeb, - 0xe4, 0x56, 0x3e, 0xbe, 0x9a, 0x34, 0xff, 0xf2, 0x2c, 0x4f, 0xce, 0xf4, 0x19, 0x98, 0xb3, 0x63, - 0x80, 0xa9, 0xa9, 0x51, 0x70, 0x2b, 0xab, 0x28, 0x4b, 0x2e, 0x41, 0x8f, 0x3a, 0x89, 0x21, 0xd5, - 0x22, 0x2c, 0x2b, 0xbf, 0xe9, 0x54, 0x42, 0x61, 0xfe, 0xcd, 0xec, 0x55, 0xfa, 0x92, 0xd1, 0x5a, - 0xba, 0x4a, 0x21, 0x04, 0x18, 0x5d, 0x98, 0xdf, 0x54, 0x97, 0x06, 0x1f, 0x5e, 0x55, 0x50, 0x1a, - 0x29, 0x14, 0x57, 0xfe, 0xfa, 0xdd, 0x0d, 0x55, 0xaf, 0xb8, 0xab, 0x3e, 0x90, 0xaa, 0xde, 0xa9, - 0x7a, 0xef, 0xb9, 0x1f, 0x59, 0x2b, 0xb4, 0xce, 0x3e, 0xab, 0x0b, 0xcc, 0x3b, 0x0c, 0x77, 0x9d, - 0xd5, 0xdf, 0x54, 0x2f, 0x0e, 0x16, 0xac, 0xe2, 0xf2, 0x4f, 0xee, 0x45, 0xf7, 0x39, 0xb9, 0x7f, - 0x6f, 0x4d, 0xee, 0xc5, 0x0b, 0x4f, 0xee, 0x3a, 0x55, 0x72, 0x09, 0x26, 0xb2, 0xf8, 0x33, 0xb3, - 0xc5, 0x6c, 0xf7, 0xb2, 0x17, 0x95, 0x41, 0x1e, 0xd3, 0xc7, 0x06, 0xf4, 0xe3, 0xfd, 0x7a, 0xe4, - 0x8a, 0x36, 0x7c, 0x98, 0xe5, 0x83, 0xd6, 0x62, 0x78, 0x9f, 0x2e, 0x06, 0xd0, 0xf8, 0xd7, 0xac, - 0x83, 0x67, 0x16, 0xd6, 0x99, 0xcf, 0x2c, 0xac, 0xab, 0x0e, 0x04, 0xda, 0x76, 0x1a, 0xc2, 0x0e, - 0x89, 0xb3, 0x42, 0x16, 0x4a, 0x85, 0xbd, 0x06, 0xac, 0xb7, 0xba, 0xe5, 0xc6, 0x89, 0x3f, 0xe9, - 0x3a, 0xd9, 0x6c, 0xad, 0x93, 0xa5, 0xe6, 0xed, 0xe0, 0x27, 0xad, 0x75, 0xf2, 0x10, 0xdb, 0xd5, - 0xe6, 0x62, 0xf9, 0xa6, 0x7a, 0x59, 0x70, 0x09, 0x1e, 0x4b, 0x6b, 0xd9, 0xec, 0xcc, 0x8d, 0xe6, - 0xff, 0x32, 0x0e, 0x14, 0x68, 0x31, 0xd7, 0xa7, 0xee, 0xca, 0x5c, 0x61, 0x18, 0x0b, 0x18, 0x5e, - 0xba, 0xc9, 0xad, 0x4a, 0xbf, 0x46, 0xbf, 0x12, 0xe6, 0x9f, 0x87, 0xe2, 0x83, 0x10, 0x6d, 0x0f, - 0x57, 0xd4, 0xdc, 0x25, 0xff, 0xc0, 0x99, 0x73, 0xea, 0x0f, 0x1c, 0x3b, 0x27, 0xfe, 0xc0, 0x2d, - 0x63, 0x30, 0xa0, 0xea, 0x65, 0x07, 0x0b, 0xd0, 0x9a, 0x7c, 0xe4, 0x43, 0x1d, 0x01, 0x7f, 0x48, - 0xe1, 0xd7, 0xa1, 0xc5, 0x9e, 0x80, 0x57, 0x21, 0x17, 0x42, 0xd7, 0xa8, 0xd2, 0x23, 0x02, 0x06, - 0x88, 0x2b, 0xd3, 0xb7, 0x8f, 0x69, 0x67, 0xce, 0x65, 0x8e, 0x9d, 0x4e, 0x4f, 0x4f, 0xa7, 0x2e, - 0x74, 0xcb, 0x18, 0xcc, 0x6f, 0xb2, 0x7c, 0x10, 0x0a, 0xac, 0x98, 0x27, 0x34, 0xd6, 0x1d, 0xcf, - 0xe6, 0x32, 0xd9, 0xa0, 0x19, 0xd3, 0x6e, 0x23, 0x5a, 0x1a, 0x54, 0x42, 0x9d, 0x6d, 0x70, 0xb3, - 0xb3, 0x90, 0x44, 0xad, 0x07, 0x90, 0xb8, 0x1c, 0x72, 0xa6, 0x66, 0x3e, 0xd4, 0xcf, 0x8d, 0xc9, - 0x04, 0xca, 0xbb, 0xd0, 0x62, 0xaf, 0x9b, 0xf8, 0x5f, 0xe4, 0x89, 0x63, 0xc0, 0x36, 0xa9, 0xfa, - 0x11, 0x55, 0x7a, 0x48, 0xc0, 0xe8, 0x26, 0x31, 0x12, 0xc2, 0x04, 0xc3, 0xca, 0xfe, 0xf5, 0x52, - 0xf4, 0xe8, 0x0e, 0xcc, 0x55, 0xf2, 0xad, 0xf7, 0x5f, 0x67, 0xaf, 0xf7, 0x1a, 0x55, 0x7a, 0xc6, - 0x5a, 0xef, 0x8f, 0x2d, 0xb0, 0x07, 0xdf, 0xd3, 0xe2, 0x7f, 0x9b, 0xdd, 0x35, 0xa9, 0x73, 0xf4, - 0x13, 0xec, 0xae, 0xb9, 0xca, 0x3e, 0xbf, 0x5d, 0x35, 0x0b, 0x11, 0x9e, 0x7f, 0xb7, 0x5c, 0xf4, - 0x1d, 0x77, 0xcb, 0xc5, 0xf7, 0xc9, 0x50, 0xfe, 0x94, 0xeb, 0x79, 0x3b, 0xbb, 0x0e, 0x97, 0x5a, - 0xb7, 0x3e, 0xef, 0x6b, 0x1d, 0xb2, 0xc2, 0xcc, 0xab, 0xd6, 0x7e, 0x08, 0xcb, 0xfa, 0x29, 0x63, - 0x12, 0xd1, 0xfd, 0xb0, 0x88, 0xee, 0x84, 0x2c, 0x57, 0x30, 0xf7, 0xc4, 0x77, 0x2d, 0x56, 0x5a, - 0xb8, 0x30, 0x2b, 0xc5, 0x42, 0x29, 0x65, 0xa5, 0x6b, 0x40, 0x56, 0xc4, 0xa4, 0xb3, 0x18, 0x2a, - 0x65, 0x93, 0x9b, 0xce, 0x72, 0xaa, 0x74, 0x9a, 0x43, 0x27, 0x38, 0x61, 0xfe, 0x59, 0x2b, 0xbe, - 0x0d, 0x44, 0x98, 0x01, 0x4a, 0x4f, 0xdf, 0x84, 0x90, 0xd8, 0xd4, 0xef, 0xc0, 0x40, 0x39, 0x76, - 0x2b, 0x4b, 0x66, 0xcd, 0x9c, 0xfa, 0x42, 0x9f, 0xfc, 0x48, 0x9b, 0xbe, 0xa5, 0x4d, 0x9e, 0xca, - 0x1c, 0x1a, 0x36, 0xdf, 0x57, 0xb9, 0x92, 0x3a, 0x76, 0x5e, 0x9b, 0xbd, 0xa6, 0x7d, 0x38, 0xc8, - 0xf2, 0x18, 0x6b, 0xae, 0xfd, 0x81, 0x33, 0x1b, 0x5f, 0x36, 0xc3, 0xa1, 0x35, 0xf9, 0x2a, 0xf6, - 0x83, 0xe0, 0x2b, 0x65, 0xff, 0x76, 0x31, 0x5a, 0xb3, 0xcd, 0xd7, 0x12, 0xfc, 0x33, 0x71, 0x83, - 0xdd, 0x08, 0xd1, 0x3e, 0x0d, 0xb1, 0x57, 0x77, 0xd6, 0x5b, 0xe0, 0x4c, 0x64, 0x34, 0x7d, 0xfb, - 0x50, 0x65, 0x66, 0xf4, 0x98, 0x96, 0x88, 0xc0, 0x8d, 0x49, 0x30, 0x4c, 0x81, 0xa7, 0x3c, 0x0c, - 0x68, 0x2e, 0xd3, 0x90, 0x19, 0xca, 0xfc, 0x4d, 0x0e, 0x2d, 0x53, 0xfc, 0x9e, 0xe0, 0xfe, 0x8e, - 0x30, 0x39, 0xaa, 0xc8, 0x39, 0xc0, 0xda, 0x1e, 0xf4, 0xb5, 0xf8, 0xfc, 0xb5, 0x80, 0x04, 0x71, - 0x64, 0x7f, 0x49, 0xb2, 0x68, 0x43, 0xe7, 0xb5, 0x2b, 0xf8, 0x86, 0xfe, 0xe1, 0x0b, 0xda, 0xf4, - 0x41, 0xfd, 0xc4, 0x2d, 0x2d, 0x31, 0x9c, 0x9e, 0xfd, 0x5c, 0x1f, 0xfc, 0x28, 0x19, 0x8b, 0xa7, - 0xa7, 0x2f, 0x41, 0x6c, 0x90, 0x2c, 0x04, 0x78, 0x9c, 0x27, 0xf5, 0x49, 0x1c, 0x6e, 0x4d, 0xe8, - 0xa7, 0x86, 0x70, 0xf7, 0x18, 0x6a, 0x94, 0xf8, 0xa4, 0x8d, 0x72, 0x2e, 0x59, 0xd9, 0xac, 0x2d, - 0xbf, 0x09, 0x2d, 0x72, 0xb7, 0xb5, 0x11, 0x07, 0x1d, 0x08, 0x79, 0xe0, 0x6e, 0x6b, 0x13, 0xd7, - 0xba, 0xdb, 0xda, 0x88, 0x5b, 0x01, 0x8e, 0xe0, 0x49, 0xc5, 0xbd, 0xf4, 0xed, 0xee, 0xd4, 0x95, - 0x19, 0xd9, 0x40, 0xda, 0x14, 0x56, 0xa5, 0xdf, 0xa0, 0x80, 0xb0, 0xc0, 0x00, 0x8b, 0x5b, 0x00, - 0x3f, 0xff, 0xc2, 0xb1, 0x82, 0xe1, 0x42, 0x03, 0x61, 0x8d, 0x00, 0x1a, 0x6d, 0x2c, 0x10, 0xb0, - 0x96, 0x49, 0xd9, 0x9b, 0xa8, 0xc4, 0xd6, 0x97, 0xbc, 0x03, 0x15, 0x93, 0xd6, 0x60, 0x6b, 0x1d, - 0x58, 0x76, 0x58, 0x10, 0xbf, 0x02, 0x15, 0xb4, 0x76, 0x11, 0xf3, 0x4e, 0x41, 0x6b, 0x97, 0xf1, - 0xed, 0xeb, 0x22, 0x1e, 0x75, 0x05, 0xbe, 0xae, 0xb2, 0x04, 0x87, 0x1e, 0xcb, 0xdb, 0x88, 0x1f, - 0xc6, 0x22, 0xfb, 0xa7, 0x05, 0xe8, 0xd1, 0x1a, 0xe2, 0x2c, 0xf0, 0xa7, 0x5f, 0x63, 0xef, 0xe4, - 0xee, 0xb8, 0x3f, 0x55, 0xa5, 0xb5, 0xec, 0x8e, 0x4b, 0xb7, 0x44, 0xea, 0xa6, 0x77, 0x6f, 0x5b, - 0xee, 0xa6, 0x56, 0x55, 0xda, 0x83, 0x76, 0x0b, 0xf3, 0xb7, 0x4e, 0x7c, 0x09, 0x0c, 0xd3, 0x4c, - 0x01, 0x30, 0xc1, 0x2a, 0x1d, 0xe9, 0x23, 0x97, 0xc0, 0x16, 0x6e, 0x7a, 0x37, 0x10, 0x3e, 0x0d, - 0x19, 0x58, 0xbe, 0x0b, 0x4f, 0x49, 0x61, 0x4e, 0x9b, 0xaf, 0xa0, 0x1f, 0xc6, 0x24, 0xf8, 0x57, - 0x8b, 0xd0, 0x63, 0x75, 0xbe, 0x50, 0x98, 0xad, 0x7b, 0x83, 0x12, 0x6c, 0x37, 0xa7, 0x41, 0x17, - 0xbb, 0xa5, 0xc3, 0x44, 0xc0, 0x91, 0xa2, 0x98, 0x2d, 0xfd, 0x8d, 0x7b, 0xb1, 0x5b, 0xc0, 0x82, - 0x05, 0xbb, 0x05, 0xe0, 0x90, 0x27, 0xb1, 0x20, 0x00, 0x00, 0x44, 0x6e, 0x66, 0x76, 0xfe, 0xd7, - 0xec, 0xd3, 0x63, 0x91, 0x19, 0x68, 0x92, 0x99, 0x1e, 0x2b, 0xad, 0xc0, 0xcf, 0xe0, 0xf9, 0xc3, - 0x08, 0x5d, 0x6f, 0xe6, 0x13, 0xba, 0xb0, 0xb5, 0xce, 0x26, 0x74, 0x3d, 0x41, 0x0c, 0x29, 0xf8, - 0x28, 0xc4, 0xc6, 0x6d, 0x2e, 0xeb, 0x07, 0xfa, 0x6c, 0x02, 0xd8, 0xa6, 0x71, 0x4e, 0x95, 0xce, - 0x72, 0x68, 0x94, 0x13, 0x16, 0xea, 0x30, 0xf1, 0xb7, 0x40, 0x92, 0xd6, 0x8d, 0x32, 0x2e, 0xb8, - 0x99, 0xa1, 0x8d, 0x7f, 0xa6, 0x1d, 0x3c, 0x9d, 0x8c, 0x1f, 0x4c, 0x9d, 0x99, 0xd2, 0x2f, 0x18, - 0x6b, 0x46, 0x9f, 0xfa, 0xca, 0x48, 0xed, 0x3f, 0x8d, 0x6d, 0x8f, 0xfd, 0x00, 0x27, 0x8a, 0x3e, - 0x26, 0x65, 0xe5, 0xed, 0x9b, 0x00, 0xd6, 0xad, 0xf5, 0x9f, 0x4e, 0xc6, 0xe2, 0x66, 0xdd, 0xb1, - 0xc7, 0x2a, 0x38, 0x66, 0xeb, 0x05, 0xe8, 0xf1, 0xfc, 0x95, 0xfb, 0x61, 0xe8, 0x13, 0xf5, 0x54, - 0x9f, 0x58, 0x74, 0x57, 0x7d, 0x82, 0x18, 0x77, 0x0c, 0x7d, 0xc2, 0x26, 0x3b, 0xc3, 0x5c, 0xc0, - 0x09, 0x9b, 0xde, 0x52, 0xa5, 0x26, 0x24, 0x0b, 0x0b, 0xf6, 0x89, 0xf8, 0x54, 0xd6, 0x88, 0x41, - 0x60, 0x68, 0x50, 0x4e, 0xa0, 0x96, 0x7f, 0xe0, 0x70, 0x6f, 0xfc, 0x81, 0x33, 0xdb, 0x56, 0x36, - 0xbc, 0x18, 0x3d, 0x92, 0x4d, 0xd4, 0x5c, 0x32, 0x5b, 0xb3, 0x39, 0xe7, 0xc6, 0xfb, 0xe0, 0x9c, - 0x4b, 0x82, 0x8b, 0x40, 0xb5, 0x25, 0x6c, 0xb2, 0x36, 0x97, 0x4d, 0xe2, 0x38, 0x35, 0xcc, 0x3a, - 0x78, 0x64, 0x9e, 0x49, 0xcc, 0xae, 0x87, 0xae, 0x9c, 0xab, 0x12, 0x7f, 0x9a, 0x65, 0xfc, 0x06, - 0x2a, 0x0c, 0x74, 0x28, 0x41, 0xac, 0xe2, 0x2f, 0xb6, 0x02, 0x80, 0x51, 0xa0, 0xf8, 0x84, 0xf9, - 0x2b, 0xab, 0xfb, 0xc9, 0x30, 0x52, 0x44, 0x46, 0xe0, 0x9e, 0xaf, 0xe3, 0xff, 0xbc, 0x4b, 0xef, - 0xbf, 0x15, 0xa0, 0x47, 0x77, 0x2a, 0x41, 0xdf, 0xee, 0xfd, 0x7f, 0x22, 0x7b, 0xd5, 0x8b, 0xac, - 0x73, 0xce, 0xb7, 0xb3, 0x30, 0x2d, 0xfa, 0x73, 0x58, 0x98, 0x36, 0xc9, 0xaa, 0xb4, 0x1d, 0x6d, - 0x13, 0xe6, 0xef, 0x2d, 0xf1, 0x71, 0x70, 0x02, 0xb3, 0x59, 0x55, 0xc8, 0x99, 0x69, 0xe4, 0x0a, - 0xbb, 0x05, 0x9b, 0x34, 0xf1, 0x26, 0x9c, 0x8f, 0xde, 0x0f, 0x63, 0x13, 0xde, 0x8d, 0x56, 0xb1, - 0xd5, 0xc6, 0x67, 0xda, 0x2f, 0x5a, 0xc3, 0xc4, 0xdd, 0xdd, 0xba, 0x62, 0xd9, 0xef, 0xf0, 0x85, - 0x0c, 0x8c, 0x67, 0x06, 0x33, 0xa7, 0xdf, 0x65, 0x7f, 0xbd, 0x08, 0x95, 0xe6, 0x2e, 0x9e, 0x1f, - 0xc6, 0xd6, 0x20, 0xdb, 0xb6, 0x06, 0xc7, 0x42, 0x9d, 0x81, 0x2f, 0x2a, 0xde, 0xc3, 0xf6, 0xc0, - 0x1f, 0xe0, 0xd0, 0xca, 0xbd, 0x4a, 0xf3, 0x2e, 0xe6, 0xd1, 0x59, 0x62, 0x25, 0xc9, 0x79, 0x7a, - 0xed, 0x2d, 0xa5, 0x59, 0xb2, 0xb0, 0xc0, 0x41, 0x39, 0x3b, 0xaf, 0xf8, 0x23, 0x38, 0x07, 0xcf, - 0x65, 0x8c, 0x2c, 0x67, 0x93, 0x57, 0xec, 0xb5, 0xd1, 0xda, 0xb4, 0x45, 0x95, 0x6a, 0x50, 0xb5, - 0x30, 0xef, 0xc8, 0x88, 0xab, 0xb3, 0xf9, 0xda, 0x3c, 0x9b, 0xd2, 0xed, 0x22, 0x54, 0x88, 0x09, - 0xec, 0x6c, 0x70, 0x62, 0xdb, 0xaa, 0x8d, 0xe3, 0x80, 0xfb, 0xbb, 0xc9, 0x71, 0xd6, 0x2e, 0xb0, - 0x0b, 0xcd, 0x25, 0xa2, 0x16, 0x9b, 0xd9, 0x44, 0x6f, 0x51, 0x31, 0x8c, 0xc6, 0x0c, 0xdc, 0xbd, - 0xba, 0xab, 0xc3, 0xc3, 0x46, 0xed, 0xce, 0x7a, 0xb3, 0xd5, 0x89, 0x10, 0xfc, 0xca, 0xb6, 0x7c, - 0x31, 0x60, 0x91, 0x87, 0xdf, 0x40, 0x80, 0x58, 0xbe, 0x98, 0x74, 0xfe, 0x3d, 0x7b, 0xfc, 0x9a, - 0xc5, 0x4c, 0xe4, 0x02, 0x36, 0x7a, 0x4d, 0x05, 0xf3, 0x61, 0x8b, 0x61, 0x49, 0x9e, 0xbc, 0x5a, - 0x6f, 0x3e, 0x82, 0x55, 0x61, 0x8f, 0x1e, 0x53, 0x65, 0xbe, 0x2b, 0x0b, 0xc7, 0x50, 0xd8, 0x4a, - 0x49, 0xde, 0x95, 0x2d, 0xc6, 0x7f, 0x48, 0x9b, 0xc8, 0xc3, 0xb1, 0x1b, 0xd1, 0xb2, 0xae, 0x0e, - 0x0f, 0x6e, 0xcf, 0x52, 0x2b, 0x83, 0x09, 0x13, 0x8b, 0xba, 0x3a, 0x3c, 0xa4, 0x0d, 0x26, 0x8c, - 0x7f, 0x0f, 0x15, 0x51, 0x67, 0x11, 0x62, 0xc6, 0xc2, 0x8e, 0xa8, 0x16, 0x54, 0x5c, 0x9f, 0x9e, - 0xbe, 0x64, 0x74, 0x25, 0x09, 0x80, 0x60, 0x70, 0x3a, 0x08, 0x3d, 0x82, 0x7f, 0xce, 0x25, 0xa2, - 0x38, 0xba, 0x08, 0x8e, 0x70, 0x60, 0x00, 0x2a, 0x64, 0x2b, 0x2f, 0xff, 0x12, 0x5a, 0x82, 0xef, - 0xd3, 0x93, 0xa3, 0xa6, 0xa7, 0x0c, 0x25, 0x0a, 0x20, 0x30, 0x3c, 0x78, 0x07, 0x80, 0xf7, 0x48, - 0xcc, 0xa6, 0xe0, 0x54, 0xf6, 0x94, 0xaa, 0xe8, 0xdb, 0x9e, 0x52, 0xa1, 0x6f, 0x7f, 0x4a, 0x55, - 0xfc, 0x5d, 0x4e, 0xa9, 0x96, 0xdf, 0xe7, 0x29, 0x15, 0xff, 0x2e, 0xbe, 0x32, 0xa8, 0x04, 0xbb, - 0x14, 0xaf, 0xab, 0xa1, 0xbe, 0xb3, 0x1d, 0x87, 0x23, 0x2d, 0x81, 0xbb, 0xdc, 0xf6, 0x14, 0xf1, - 0xa9, 0xae, 0x0e, 0x0f, 0x3c, 0xbe, 0xe9, 0x6a, 0x80, 0xf0, 0xc5, 0xf4, 0x89, 0x9b, 0x41, 0x80, - 0xcb, 0xf6, 0x1c, 0xfc, 0xdb, 0xb6, 0xab, 0xa6, 0x4c, 0x40, 0x52, 0xf6, 0x0d, 0xe0, 0x72, 0xeb, - 0xd1, 0xdf, 0xe4, 0xec, 0x58, 0xea, 0xd8, 0x04, 0xd0, 0x82, 0x77, 0x70, 0xe8, 0xbb, 0xbf, 0x5d, - 0x1d, 0x1e, 0xdb, 0x2d, 0x55, 0x19, 0x99, 0x6f, 0xb6, 0xe1, 0x60, 0xa4, 0x79, 0x5e, 0xdf, 0x70, - 0xfa, 0xbc, 0x41, 0x58, 0x95, 0x26, 0xa6, 0xf8, 0x10, 0xf9, 0xe1, 0x6a, 0x70, 0x38, 0x5d, 0x35, - 0x32, 0xf8, 0x33, 0xd3, 0xc7, 0xdf, 0xf8, 0x9d, 0x88, 0xbe, 0x08, 0x87, 0x43, 0x8d, 0xce, 0x47, - 0x14, 0x3f, 0x2d, 0x45, 0x51, 0xc5, 0xd5, 0xe6, 0x2f, 0x3b, 0x59, 0x8a, 0xb0, 0xe9, 0x75, 0x55, - 0x7a, 0x0d, 0xbd, 0x2a, 0x50, 0x1e, 0x24, 0xae, 0x67, 0x3d, 0x5f, 0xc8, 0xe3, 0x44, 0xb7, 0xb4, - 0xf8, 0x31, 0x10, 0x1a, 0x60, 0xc5, 0xc3, 0xab, 0x8e, 0x44, 0x88, 0x3a, 0xc0, 0xa1, 0xc5, 0x46, - 0xd1, 0xfc, 0x7a, 0xb4, 0xc4, 0xe3, 0xf3, 0x06, 0x43, 0xf3, 0x85, 0x0e, 0x75, 0xe2, 0x48, 0xb7, - 0xee, 0xb0, 0x22, 0x03, 0x1e, 0xb9, 0x12, 0xca, 0x8c, 0xaf, 0xc1, 0xad, 0x4a, 0xb2, 0x07, 0x8a, - 0xc1, 0x72, 0x62, 0xf2, 0xd8, 0xf3, 0x49, 0xb6, 0x03, 0xcb, 0x7e, 0x82, 0x8a, 0x28, 0x7d, 0x9e, - 0x47, 0x8b, 0x8d, 0x12, 0x4c, 0xbf, 0x68, 0xe3, 0x37, 0xff, 0x10, 0x5a, 0xd2, 0xdc, 0x16, 0xf0, - 0xc0, 0xc5, 0xbd, 0x42, 0x19, 0x3e, 0xca, 0xfe, 0x43, 0x11, 0x5a, 0xcd, 0x1c, 0xe5, 0xec, 0x6c, - 0x70, 0x9a, 0xd2, 0xdf, 0x7b, 0xd9, 0xbc, 0xd8, 0x79, 0x1f, 0x1a, 0xc1, 0x23, 0xc1, 0xd5, 0xab, - 0x0a, 0x4a, 0xbd, 0x0b, 0x48, 0x82, 0x59, 0x8f, 0x06, 0x16, 0x98, 0x71, 0x33, 0xbf, 0x35, 0x87, - 0xfc, 0xa6, 0x7a, 0x75, 0xf0, 0x41, 0xeb, 0xb1, 0x40, 0xeb, 0xfd, 0x40, 0x1b, 0xe7, 0x6c, 0xa2, - 0x3b, 0xc3, 0x22, 0xd3, 0x7c, 0x73, 0xb7, 0x9d, 0x61, 0x81, 0xd6, 0xe4, 0xdf, 0x33, 0x16, 0x7f, - 0xbb, 0x3d, 0x63, 0xab, 0xc5, 0xa5, 0x97, 0x98, 0x2a, 0x58, 0x5e, 0x2e, 0xbd, 0x50, 0xf7, 0x9a, - 0xfc, 0x7b, 0x8b, 0xfd, 0xe5, 0xf1, 0x8d, 0xf3, 0xec, 0x10, 0x0b, 0x90, 0x22, 0x7b, 0x47, 0x20, - 0x77, 0x23, 0x78, 0xf3, 0x3b, 0x6e, 0x04, 0xdf, 0x54, 0xaf, 0x0c, 0x96, 0xc8, 0x8b, 0x0d, 0x14, - 0x79, 0x09, 0x04, 0x04, 0xfc, 0x3e, 0xb6, 0x86, 0xd7, 0xb3, 0xb7, 0x86, 0x67, 0x16, 0xdc, 0x1a, - 0xbe, 0xa9, 0x5e, 0x1a, 0x5c, 0x6c, 0x34, 0xdd, 0xda, 0x23, 0x72, 0xf8, 0x2d, 0xfa, 0xa3, 0xf1, - 0xdb, 0xe2, 0x3f, 0x12, 0xbf, 0x5d, 0xfe, 0xc7, 0xe0, 0xb7, 0x25, 0xdf, 0x23, 0xbf, 0xdd, 0xad, - 0x4a, 0x1e, 0xe4, 0x16, 0xf2, 0x33, 0x1d, 0x71, 0x35, 0x0c, 0x0f, 0x28, 0x51, 0x5d, 0x1d, 0x1e, - 0xd0, 0x86, 0x6d, 0x87, 0xd3, 0xcc, 0x6a, 0xfe, 0x03, 0x47, 0x16, 0xe0, 0x1f, 0x38, 0x73, 0xe2, - 0x53, 0x0b, 0xe7, 0x4d, 0x0e, 0x3d, 0x9c, 0x5d, 0xc6, 0x0f, 0x43, 0xb1, 0xd2, 0x0a, 0xd1, 0x6a, - 0xe6, 0x14, 0xec, 0x4f, 0xc7, 0x92, 0xdf, 0xcb, 0xc7, 0x92, 0xbf, 0x3f, 0xa1, 0x75, 0x53, 0x16, - 0xeb, 0xfd, 0xf6, 0x42, 0xf9, 0xb7, 0x64, 0xb0, 0x1b, 0xb3, 0x19, 0xec, 0xdd, 0xc5, 0xe0, 0xef, - 0x8d, 0x8d, 0xfe, 0x26, 0x97, 0x8d, 0x36, 0x7e, 0x67, 0x36, 0xfa, 0x40, 0x70, 0xa5, 0xfc, 0x17, - 0xf3, 0x32, 0xd2, 0x4d, 0x96, 0xc4, 0x5b, 0x68, 0x4e, 0xdb, 0x79, 0xce, 0xa1, 0x29, 0x27, 0x34, - 0x85, 0xde, 0x40, 0x36, 0x27, 0x2c, 0x22, 0xea, 0x7c, 0xf6, 0x39, 0xfc, 0x0e, 0x97, 0x3f, 0xfc, - 0xbc, 0x08, 0x27, 0xf1, 0x38, 0xe0, 0x55, 0x16, 0x9f, 0x7c, 0x04, 0x4a, 0xc9, 0xe1, 0x96, 0xd9, - 0xdc, 0x71, 0x6f, 0x0e, 0x77, 0xcc, 0x57, 0x5a, 0x63, 0x38, 0xe8, 0xf3, 0xb7, 0x40, 0x69, 0xff, - 0x3f, 0xe4, 0x9d, 0x75, 0xaa, 0xe4, 0x42, 0x5b, 0x84, 0xfc, 0xdc, 0x41, 0xe4, 0xe9, 0xe9, 0xff, - 0xce, 0x06, 0x67, 0x2e, 0xe3, 0x84, 0x89, 0xc8, 0x9c, 0xb6, 0x1f, 0x2e, 0x40, 0x0f, 0x67, 0x53, - 0xfa, 0x61, 0x98, 0x55, 0xde, 0xb4, 0x79, 0xf0, 0x94, 0xe6, 0x35, 0xab, 0xec, 0x6c, 0x70, 0x02, - 0x87, 0x00, 0x73, 0x4a, 0x29, 0x74, 0x8e, 0x36, 0x32, 0x04, 0xc6, 0x8d, 0x9d, 0x0d, 0x4e, 0x6a, - 0x60, 0x74, 0x87, 0xdd, 0x65, 0x07, 0x0a, 0xd0, 0x6a, 0xe6, 0x40, 0xec, 0x4f, 0xc7, 0x74, 0x29, - 0x87, 0x29, 0xf8, 0x6e, 0x1c, 0x66, 0x53, 0xb5, 0x2a, 0xfd, 0x1c, 0xbd, 0x26, 0xe4, 0x6f, 0x85, - 0xc8, 0x93, 0x40, 0xb1, 0x0b, 0x4e, 0x0e, 0x3c, 0x25, 0xb2, 0xf3, 0xff, 0x7f, 0x77, 0x4a, 0x68, - 0x37, 0xbf, 0x80, 0x5e, 0xc9, 0x3f, 0x25, 0xae, 0x2d, 0x46, 0x0f, 0x52, 0xf3, 0x16, 0x33, 0x21, - 0x7e, 0x91, 0x3d, 0x21, 0x36, 0xdc, 0xc7, 0x84, 0x58, 0x1c, 0x2c, 0x28, 0x7d, 0xe8, 0xfb, 0x31, - 0x54, 0x51, 0x23, 0xd0, 0xa2, 0x7b, 0x32, 0x02, 0x75, 0xe6, 0x33, 0x49, 0xfd, 0xf1, 0x15, 0xae, - 0x46, 0x1b, 0x63, 0x87, 0x7d, 0x17, 0x3f, 0xbf, 0xc0, 0xb2, 0xee, 0x32, 0x8b, 0x75, 0x83, 0x73, - 0x38, 0x7c, 0x53, 0xd6, 0x9d, 0xc5, 0xb4, 0x37, 0x9d, 0xe0, 0x54, 0x49, 0xe5, 0xd0, 0x30, 0x27, - 0xe4, 0x1b, 0x21, 0x71, 0x1f, 0xb5, 0x3d, 0xd2, 0xc9, 0xfe, 0x27, 0x3a, 0x50, 0xf9, 0x17, 0x05, - 0xe8, 0x21, 0x7b, 0x8d, 0x7e, 0x18, 0xcb, 0x67, 0xfb, 0x3d, 0x9c, 0x61, 0x92, 0xe6, 0x80, 0x01, - 0x0b, 0x96, 0x10, 0x0f, 0x2f, 0x10, 0x68, 0xfd, 0x57, 0x8d, 0x25, 0xc4, 0x2c, 0x1e, 0xd3, 0xac, - 0x92, 0xb7, 0x33, 0x44, 0xde, 0x36, 0x3e, 0xf3, 0x18, 0x86, 0xbb, 0x0b, 0xc9, 0x25, 0x07, 0x92, - 0xf3, 0x1f, 0x8c, 0xc3, 0xff, 0x60, 0x1c, 0xbe, 0x8b, 0x05, 0xe0, 0xdd, 0x7c, 0x52, 0xeb, 0xf7, - 0xa5, 0xbf, 0xbf, 0x85, 0x56, 0xd0, 0x2a, 0xb2, 0xd6, 0x01, 0xec, 0xa0, 0x91, 0x95, 0x24, 0xae, - 0xd1, 0x66, 0x3f, 0xd4, 0x06, 0x06, 0x8d, 0xbe, 0x1b, 0x9e, 0x36, 0xdf, 0x6f, 0x22, 0x92, 0x6f, - 0x16, 0x2e, 0xff, 0x2b, 0x4b, 0x02, 0x2d, 0xce, 0x7f, 0x8e, 0x63, 0x08, 0x8b, 0x35, 0x4a, 0xd8, - 0xed, 0x6b, 0xc3, 0xa7, 0x44, 0xf7, 0x25, 0x8b, 0xfe, 0x23, 0x46, 0x16, 0x5d, 0x7e, 0x4f, 0xe4, - 0xef, 0x53, 0x2a, 0xcd, 0x32, 0x6c, 0x94, 0x7c, 0x8f, 0x86, 0x8d, 0xb2, 0x61, 0x0e, 0xad, 0xb0, - 0xd7, 0xee, 0x8f, 0x65, 0x64, 0x7d, 0x26, 0x67, 0x74, 0x71, 0x2c, 0xe8, 0xec, 0xc1, 0x2a, 0x1b, - 0xe7, 0x18, 0x1f, 0x0a, 0x72, 0xd9, 0xf2, 0x8f, 0x20, 0x18, 0x6c, 0xda, 0xa4, 0x4a, 0x2f, 0xa1, - 0x9f, 0x08, 0xf3, 0x95, 0x25, 0xae, 0x01, 0x16, 0x6a, 0xde, 0x4f, 0xd1, 0xc6, 0xae, 0x52, 0x66, - 0x55, 0xf6, 0x57, 0x05, 0xcc, 0x89, 0x29, 0xcd, 0xf7, 0x43, 0x74, 0xa6, 0x79, 0x2c, 0xef, 0x46, - 0x04, 0x4d, 0xba, 0xb7, 0x7d, 0x68, 0xbb, 0x2a, 0xd5, 0xa1, 0x5f, 0x08, 0xf3, 0xf6, 0x87, 0xe9, - 0x4d, 0x05, 0x86, 0x7e, 0xa6, 0x17, 0xe7, 0xdb, 0x96, 0x76, 0xa1, 0x62, 0x86, 0x0e, 0x5f, 0x9a, - 0x35, 0xe6, 0xd6, 0x36, 0xb3, 0xd6, 0xb6, 0x55, 0x80, 0x43, 0x26, 0xbb, 0x0b, 0x3c, 0x6c, 0x37, - 0x87, 0x98, 0x5b, 0x4c, 0x59, 0x94, 0x43, 0x0f, 0x6c, 0x51, 0xc2, 0x3b, 0x1b, 0x9c, 0xc6, 0x54, - 0x36, 0xe7, 0x56, 0xad, 0xc9, 0xd4, 0x39, 0xcb, 0x2b, 0x8c, 0x30, 0xf5, 0xa7, 0x61, 0xbf, 0x82, - 0xec, 0x20, 0x2c, 0x39, 0x8c, 0xa9, 0x0f, 0xa7, 0xc6, 0xd0, 0x33, 0xa6, 0x92, 0xb0, 0x41, 0x95, - 0xaa, 0xd0, 0x73, 0x42, 0x6e, 0x01, 0xe2, 0xc3, 0xd0, 0x0f, 0x5d, 0x1d, 0x9e, 0xd4, 0x68, 0xaf, - 0x91, 0x9d, 0x4c, 0xa6, 0x7f, 0x5e, 0x80, 0x78, 0x16, 0xfb, 0x87, 0x31, 0x8d, 0x7e, 0x61, 0x9b, - 0x46, 0x39, 0xce, 0x22, 0xa4, 0x35, 0xf7, 0x36, 0x85, 0x36, 0xab, 0x92, 0x13, 0x49, 0x42, 0x9e, - 0x5e, 0x30, 0x57, 0xe1, 0xce, 0x06, 0xa7, 0xc3, 0xea, 0xb2, 0xf9, 0x66, 0x8e, 0x07, 0x2d, 0x23, - 0xf9, 0xf9, 0x55, 0x68, 0x51, 0x57, 0x87, 0x19, 0xb6, 0xc6, 0xf8, 0x49, 0x4f, 0x6c, 0x0a, 0x98, - 0x13, 0x9b, 0x35, 0xa8, 0x10, 0x33, 0x9d, 0x66, 0x12, 0x7f, 0xab, 0x44, 0xa6, 0xdf, 0x4c, 0x3c, - 0xcf, 0xc5, 0x6c, 0x3c, 0xcf, 0xb2, 0xff, 0xb0, 0x1a, 0x2d, 0xc1, 0xf3, 0x93, 0xaf, 0xcd, 0xe6, - 0x46, 0xd8, 0x3c, 0x53, 0x84, 0x61, 0x58, 0xbe, 0x78, 0xec, 0x9e, 0xee, 0x80, 0xbe, 0x40, 0xa2, - 0xde, 0x32, 0xa3, 0x86, 0x01, 0xe2, 0x6a, 0x9a, 0x1d, 0x2e, 0xa3, 0x13, 0x21, 0x01, 0xe2, 0xe2, - 0x1e, 0xe0, 0x50, 0xa1, 0xe2, 0xf5, 0x85, 0x69, 0x54, 0xfd, 0xc2, 0xea, 0x16, 0x55, 0xf2, 0x0a, - 0x14, 0x28, 0xfe, 0x52, 0x9b, 0xbe, 0x95, 0x8c, 0x0f, 0x35, 0xba, 0xdd, 0xe4, 0xca, 0x38, 0x7d, - 0x81, 0xda, 0x92, 0x19, 0x12, 0x27, 0xd2, 0x5f, 0x1f, 0x65, 0x83, 0xf8, 0x43, 0xa0, 0x81, 0xd4, - 0x68, 0x2f, 0x0d, 0x0c, 0x6f, 0x3e, 0x5a, 0x3d, 0x48, 0xf0, 0xa7, 0x8f, 0xca, 0xb4, 0x0c, 0xfe, - 0x08, 0x87, 0x50, 0xc0, 0x8c, 0x62, 0x67, 0xde, 0xd6, 0xff, 0x71, 0x5e, 0x9e, 0xb2, 0x8e, 0x46, - 0xbb, 0x23, 0xf7, 0xf5, 0x71, 0x44, 0x28, 0x26, 0xb7, 0xf8, 0x3c, 0x38, 0xcf, 0xb3, 0x61, 0x10, - 0xe1, 0xe5, 0xa1, 0xd4, 0x68, 0x2f, 0x84, 0x8a, 0x83, 0x28, 0x1a, 0xf0, 0x18, 0x0c, 0x44, 0x74, - 0x94, 0x19, 0x02, 0xfc, 0x04, 0x87, 0x96, 0x63, 0x39, 0xc5, 0xac, 0xcf, 0x92, 0xfc, 0xe1, 0x2d, - 0xa1, 0x3e, 0xb5, 0x0c, 0x26, 0xd4, 0xe8, 0x5d, 0x55, 0xfa, 0xa5, 0x60, 0xa3, 0x20, 0xbe, 0x91, - 0xf9, 0xe8, 0xac, 0x76, 0xf1, 0x04, 0x5b, 0xbc, 0x2d, 0x10, 0x23, 0x84, 0xd4, 0xc3, 0xa9, 0xc6, - 0x18, 0x4f, 0x5f, 0x82, 0xb8, 0x78, 0xe0, 0x1c, 0x0c, 0x7e, 0x1f, 0xd0, 0xc9, 0xb2, 0x8d, 0x2e, - 0xff, 0xbf, 0x72, 0x68, 0x25, 0x9e, 0x00, 0x56, 0x24, 0x52, 0x72, 0x6d, 0x75, 0x4d, 0x4e, 0x6d, - 0x29, 0x46, 0xf5, 0x19, 0x4e, 0x95, 0x4e, 0x72, 0x42, 0x76, 0x4e, 0xf1, 0x00, 0x67, 0x8c, 0x6d, - 0xfc, 0x68, 0x32, 0x76, 0x24, 0x35, 0x73, 0x3e, 0x19, 0x8b, 0xd0, 0x98, 0xfe, 0xac, 0x9b, 0x34, - 0x5c, 0x47, 0x48, 0xce, 0x5c, 0x02, 0x15, 0x8b, 0x2a, 0x5d, 0xfa, 0xd8, 0x00, 0x88, 0x1c, 0xa0, - 0xa4, 0x69, 0xb3, 0x1f, 0x92, 0x40, 0x24, 0x77, 0x22, 0xdd, 0xe4, 0xaa, 0x75, 0x32, 0x76, 0x44, - 0xff, 0x62, 0x5c, 0x1f, 0x23, 0xef, 0xc5, 0xe9, 0x27, 0x6f, 0x24, 0x13, 0xa3, 0x70, 0x27, 0xd3, - 0x68, 0x33, 0x08, 0x2c, 0xd9, 0xd5, 0xe2, 0x7f, 0x8b, 0x96, 0x07, 0x42, 0x10, 0x4f, 0xaa, 0x5d, - 0xf1, 0x87, 0xe7, 0x0b, 0x6b, 0x03, 0x01, 0x11, 0x40, 0xc0, 0xb5, 0x65, 0x10, 0x2b, 0x69, 0xb3, - 0xcc, 0xb0, 0x07, 0xb4, 0x61, 0xd0, 0x4e, 0x72, 0x93, 0x14, 0x98, 0x89, 0x2d, 0x2f, 0xaf, 0xe2, - 0x70, 0x3f, 0x10, 0x7e, 0xcb, 0xaa, 0x42, 0xe1, 0x3c, 0x7d, 0x4c, 0xe3, 0x74, 0x55, 0xbf, 0xa1, - 0x4a, 0xb5, 0x42, 0x6e, 0x4e, 0x71, 0x03, 0xad, 0x0b, 0xfb, 0xbe, 0x1e, 0xd4, 0xca, 0x98, 0xa0, - 0x78, 0x6e, 0xd8, 0xea, 0x93, 0x4b, 0xc4, 0x58, 0x2f, 0x0f, 0xd2, 0xa7, 0xf7, 0x99, 0x6a, 0xa1, - 0xfc, 0xbe, 0x5c, 0x6c, 0xf4, 0x17, 0xd0, 0x5f, 0xf2, 0xe5, 0x16, 0x9f, 0xa2, 0x55, 0x63, 0xa3, - 0xbb, 0xd8, 0xea, 0x92, 0x2f, 0x1f, 0xeb, 0xea, 0x51, 0xfc, 0x6d, 0x5d, 0x3d, 0x96, 0x7f, 0x7b, - 0x57, 0x8f, 0x92, 0xef, 0xe2, 0xea, 0xb1, 0xe2, 0x7e, 0x5d, 0x3d, 0xa6, 0x38, 0x54, 0x82, 0x27, - 0x68, 0x43, 0x30, 0xd0, 0xe5, 0xf3, 0x2a, 0x41, 0xf2, 0x8c, 0xeb, 0x21, 0x4e, 0x95, 0x0e, 0x70, - 0x82, 0x3d, 0x4d, 0x0c, 0x42, 0x8c, 0x4d, 0xf0, 0x9e, 0xb5, 0xde, 0x3f, 0xc3, 0x3a, 0x07, 0x7c, - 0x92, 0x67, 0x8f, 0xc7, 0x06, 0x7e, 0x83, 0x73, 0xae, 0x6f, 0x6e, 0xeb, 0x54, 0x5a, 0x7d, 0xfe, - 0x96, 0xf5, 0x10, 0x16, 0x77, 0xbd, 0x7b, 0x6f, 0x08, 0x42, 0xe0, 0xa6, 0x86, 0xae, 0x6a, 0xc3, - 0x3d, 0xe9, 0xc8, 0x01, 0x32, 0xb8, 0x55, 0x64, 0x74, 0x93, 0xb1, 0x23, 0x38, 0x67, 0x07, 0x29, - 0x53, 0xb6, 0x57, 0x81, 0x8f, 0x70, 0x68, 0xa9, 0x07, 0xc2, 0xd8, 0xad, 0xb2, 0xde, 0xdd, 0x21, - 0x20, 0xf1, 0x5d, 0x60, 0x3a, 0x60, 0x5d, 0xa9, 0x74, 0x24, 0x6f, 0x9f, 0xd5, 0x26, 0x4f, 0x65, - 0x22, 0x3d, 0x99, 0xbe, 0x41, 0x6d, 0xa4, 0x37, 0x75, 0x65, 0xd0, 0x14, 0x5c, 0xc9, 0x53, 0xc4, - 0x24, 0x9e, 0x31, 0xb0, 0x58, 0xf0, 0xb4, 0x30, 0x83, 0xfc, 0x38, 0xde, 0x0f, 0x05, 0xfc, 0xe9, - 0x2b, 0x1f, 0xeb, 0xe7, 0x46, 0xc8, 0x4a, 0x26, 0x85, 0xf0, 0x6f, 0xa2, 0x62, 0xaf, 0x42, 0x63, - 0x70, 0x90, 0xb7, 0xfe, 0xc1, 0x5f, 0x9e, 0x81, 0x8b, 0x4f, 0x80, 0xc2, 0x08, 0xfe, 0x74, 0xd3, - 0x97, 0x53, 0x33, 0x07, 0x93, 0x33, 0x47, 0x52, 0x33, 0x83, 0xe6, 0x23, 0x15, 0x0c, 0x2e, 0x5f, - 0x87, 0x90, 0xe2, 0x6f, 0xf1, 0xf9, 0x21, 0x18, 0x0e, 0x6f, 0x99, 0x19, 0x18, 0xb0, 0xf8, 0x98, - 0x16, 0x3f, 0xae, 0x5d, 0xeb, 0xb1, 0xde, 0x14, 0x4a, 0x1c, 0xd7, 0x3f, 0x1c, 0x22, 0x6f, 0x0a, - 0x33, 0x88, 0xfc, 0x7b, 0xf4, 0x1a, 0x23, 0xbc, 0xe5, 0x8f, 0x63, 0x54, 0x9a, 0x57, 0x15, 0x5f, - 0x4e, 0xc6, 0x8f, 0x42, 0x1c, 0x53, 0xd8, 0xf0, 0x4c, 0x39, 0xe6, 0x34, 0x89, 0x4b, 0x33, 0x3c, - 0x9d, 0xbe, 0xd2, 0x5d, 0xae, 0x45, 0x12, 0xc9, 0x58, 0xdc, 0xd0, 0x9c, 0xf5, 0xfe, 0x13, 0xe4, - 0xb9, 0x26, 0xf3, 0xe6, 0xe2, 0x3f, 0xa6, 0x76, 0x04, 0x83, 0x43, 0xe1, 0x07, 0xff, 0xe7, 0x73, - 0x32, 0xac, 0xb7, 0xf0, 0x40, 0x37, 0x63, 0x73, 0x8a, 0xcf, 0xe6, 0xe7, 0xcf, 0xd8, 0xe6, 0xc0, - 0x0e, 0x90, 0xcc, 0xe6, 0xe2, 0xdf, 0x47, 0x85, 0xc6, 0x40, 0xe0, 0xb2, 0x57, 0xe3, 0xb2, 0x9f, - 0xcc, 0x5b, 0x36, 0xc4, 0xea, 0xc3, 0x45, 0xe3, 0x70, 0x26, 0x34, 0x97, 0xb8, 0x36, 0xab, 0xdc, - 0x64, 0xfc, 0xa8, 0xad, 0x38, 0x8a, 0xc9, 0xff, 0x0e, 0x2d, 0xef, 0x68, 0x73, 0x87, 0x77, 0x07, - 0x82, 0xed, 0xb8, 0xbc, 0x87, 0x17, 0xda, 0x3a, 0x1b, 0x18, 0x4c, 0xd8, 0x3a, 0xf1, 0x85, 0x4e, - 0x1b, 0x05, 0x71, 0x2d, 0x04, 0x93, 0x60, 0x23, 0xcc, 0xda, 0xca, 0xb6, 0x61, 0xaf, 0x79, 0x07, - 0xad, 0xcc, 0x12, 0x10, 0xbe, 0xb7, 0x90, 0xba, 0x6b, 0x7e, 0x85, 0x1e, 0xc8, 0xd9, 0xec, 0xbf, - 0x3f, 0xea, 0x3f, 0x47, 0x0f, 0xe4, 0xf4, 0xc7, 0x7d, 0x05, 0x06, 0xea, 0xe5, 0x54, 0x29, 0xc2, - 0xa1, 0xdf, 0x09, 0x20, 0x57, 0x8a, 0x9d, 0xc6, 0x88, 0xd1, 0x1d, 0xfb, 0xe2, 0xa8, 0xd1, 0x77, - 0x24, 0x62, 0xc2, 0x11, 0x12, 0xdf, 0x04, 0x1e, 0xf1, 0xc1, 0x0f, 0x2f, 0x53, 0x4c, 0x2a, 0xc3, - 0x69, 0x63, 0x57, 0x41, 0x8c, 0x4b, 0x7f, 0x78, 0x36, 0xf3, 0x45, 0xcc, 0x18, 0x73, 0x53, 0x98, - 0x33, 0x64, 0x14, 0x33, 0x6e, 0x4f, 0x96, 0x84, 0x57, 0x36, 0xbc, 0x0c, 0xad, 0xcc, 0x9a, 0x4e, - 0xbc, 0x0f, 0x3d, 0x08, 0x62, 0xaa, 0x1f, 0x42, 0x95, 0xc1, 0x13, 0x75, 0xe4, 0xdd, 0x34, 0x1c, - 0x10, 0x23, 0x5f, 0xba, 0xf8, 0x04, 0xdc, 0x95, 0x65, 0x9f, 0xbb, 0x3b, 0xd8, 0x97, 0x39, 0x30, - 0x41, 0xd8, 0x4b, 0xbe, 0x3c, 0x06, 0xaf, 0xc1, 0x60, 0xf2, 0x1a, 0x46, 0x01, 0xc3, 0x6b, 0x18, - 0x38, 0x21, 0x0d, 0x1f, 0x40, 0x14, 0x4c, 0x80, 0x84, 0x34, 0x8b, 0xcb, 0xbf, 0x8d, 0x4a, 0xda, - 0xdd, 0x9e, 0x3d, 0x3e, 0xbf, 0x52, 0xc3, 0x3e, 0x86, 0x86, 0x8d, 0xe3, 0xf6, 0x14, 0xf1, 0x49, - 0xdb, 0x67, 0x1e, 0xc2, 0x76, 0x7c, 0x3e, 0x88, 0x1e, 0xf2, 0xfa, 0x42, 0x46, 0xc5, 0x9d, 0xb6, - 0x18, 0xc2, 0x70, 0xf5, 0x11, 0x47, 0xeb, 0xcd, 0x8b, 0x20, 0x3e, 0xcd, 0x76, 0x4d, 0xdf, 0x97, - 0x99, 0x93, 0x93, 0x6c, 0xd0, 0x4e, 0x78, 0xce, 0x53, 0xce, 0x9b, 0x95, 0x29, 0xd3, 0x65, 0x0b, - 0x45, 0xbb, 0x24, 0xb7, 0x4c, 0x1b, 0x42, 0xbe, 0x32, 0x71, 0x7c, 0x82, 0xbc, 0x65, 0xda, 0xb2, - 0xf2, 0x1e, 0xb4, 0x8a, 0xc0, 0xad, 0xf0, 0x99, 0xcc, 0x1b, 0x8a, 0x39, 0x89, 0xa2, 0x23, 0xa7, - 0x2c, 0x12, 0xd4, 0xef, 0xda, 0x05, 0x52, 0x50, 0x4e, 0x1e, 0xde, 0x85, 0x8a, 0xba, 0x3a, 0x3c, - 0xec, 0x33, 0x28, 0x44, 0x95, 0xa2, 0x50, 0xf1, 0x31, 0xfa, 0x33, 0xcf, 0xd8, 0x58, 0x78, 0xfc, - 0x30, 0x87, 0x1e, 0x35, 0x3b, 0x6f, 0x8f, 0xe2, 0x69, 0xc5, 0x05, 0x98, 0x0f, 0x2c, 0x90, 0xd7, - 0x14, 0xdf, 0x54, 0xa5, 0x7a, 0x61, 0x7e, 0x2c, 0x71, 0xe3, 0xfc, 0x4d, 0x80, 0x70, 0x50, 0xf8, - 0x55, 0x0d, 0xfd, 0xc2, 0x78, 0xe6, 0xd3, 0x28, 0x79, 0xc0, 0x71, 0x7e, 0x6a, 0x9b, 0x8c, 0xcd, - 0x00, 0xbd, 0x20, 0x64, 0x2f, 0x2d, 0xf1, 0xa9, 0xac, 0x77, 0x07, 0xc8, 0x4b, 0xd5, 0x0c, 0x87, - 0x2c, 0x9b, 0x58, 0x46, 0x6e, 0x00, 0x30, 0x9b, 0x0b, 0xbf, 0x05, 0xd1, 0x07, 0xfd, 0xb1, 0x85, - 0xae, 0x04, 0xfa, 0x8a, 0x02, 0xc5, 0xc7, 0x8d, 0x5f, 0x10, 0x78, 0x10, 0xe2, 0xe9, 0xe9, 0x93, - 0x97, 0x32, 0xc7, 0x6f, 0x93, 0x27, 0x96, 0x28, 0x1e, 0x7f, 0x88, 0x43, 0x45, 0xe6, 0x07, 0x5c, - 0x0a, 0xc8, 0xc3, 0xf3, 0x6a, 0xfd, 0x5d, 0x4e, 0x82, 0x03, 0x17, 0x3f, 0xac, 0x2c, 0xe2, 0x4f, - 0x17, 0x2a, 0xa8, 0x3c, 0x33, 0x3a, 0x4c, 0x2e, 0xe2, 0x0e, 0xe3, 0xcb, 0xea, 0xb8, 0x61, 0xe9, - 0x48, 0x54, 0x1b, 0x3e, 0xa5, 0x45, 0x4f, 0x54, 0xc8, 0x16, 0x21, 0x7e, 0x27, 0x5a, 0x4e, 0x62, - 0x45, 0x41, 0x5d, 0x16, 0xe1, 0x66, 0x89, 0xaa, 0xb4, 0x5e, 0xb0, 0x25, 0x88, 0x4f, 0x92, 0x2f, - 0xb0, 0xf3, 0xe6, 0x69, 0x9d, 0x0d, 0x9d, 0x97, 0x51, 0x49, 0x87, 0x12, 0x34, 0xe6, 0x59, 0x43, - 0xc0, 0x5b, 0xdf, 0xd9, 0x8e, 0xf5, 0xd3, 0x12, 0x10, 0x37, 0xec, 0x29, 0x62, 0xa9, 0x36, 0x78, - 0x1c, 0x46, 0xb9, 0x23, 0xe0, 0x05, 0xf2, 0xe6, 0xc2, 0xb7, 0x21, 0xf2, 0x41, 0x54, 0x62, 0xda, - 0x65, 0xa1, 0xb2, 0x4b, 0x30, 0x4d, 0xdc, 0x37, 0xf6, 0x14, 0xf1, 0x65, 0xf3, 0x33, 0xe7, 0xd5, - 0x7a, 0xb8, 0x0e, 0x70, 0x44, 0x3b, 0x6c, 0xe8, 0x8a, 0x86, 0xc4, 0x86, 0xdf, 0x76, 0x34, 0xb4, - 0x08, 0xdc, 0x18, 0xd9, 0x4e, 0x88, 0xdf, 0x87, 0x1e, 0x30, 0x01, 0x52, 0x67, 0x38, 0x00, 0xe5, - 0x2e, 0xc5, 0xe5, 0xe2, 0xd7, 0x21, 0x72, 0x53, 0x45, 0x71, 0x9e, 0xb2, 0x49, 0x40, 0xca, 0xbc, - 0xa5, 0xe6, 0x92, 0xe1, 0x3b, 0xac, 0xd6, 0xca, 0xee, 0xb0, 0x2f, 0x80, 0x57, 0xe7, 0xf7, 0x5b, - 0xaa, 0xbd, 0x00, 0xbe, 0x0b, 0x15, 0x77, 0x75, 0x78, 0x9c, 0x7e, 0xdf, 0x36, 0x1c, 0x09, 0xb5, - 0x30, 0xff, 0xb4, 0x24, 0x0b, 0xc2, 0xc0, 0x01, 0x46, 0xc4, 0x66, 0x12, 0x7f, 0x4c, 0x9e, 0x9a, - 0x37, 0x1f, 0xd8, 0x38, 0x42, 0x83, 0x72, 0xb1, 0xf5, 0x92, 0xd9, 0x3c, 0xe6, 0x43, 0x46, 0x39, - 0xeb, 0x0d, 0xdf, 0xde, 0xa0, 0xeb, 0x14, 0x16, 0x69, 0xae, 0xdc, 0x56, 0xf6, 0x3c, 0x2a, 0x66, - 0x96, 0x8a, 0xb1, 0xfd, 0x2b, 0xfe, 0x2e, 0x73, 0xfb, 0x57, 0xfc, 0x5d, 0x38, 0x90, 0xb2, 0xb1, - 0x64, 0xc1, 0x36, 0x8e, 0x7f, 0x97, 0x6d, 0x47, 0xc5, 0x4c, 0x43, 0x0c, 0x94, 0x76, 0xd3, 0xe2, - 0x57, 0x24, 0xe3, 0xdf, 0x7c, 0x29, 0x5a, 0x46, 0x82, 0x24, 0x12, 0xaf, 0x62, 0xf3, 0x93, 0x3e, - 0x96, 0xb4, 0xc8, 0x7a, 0x2c, 0xa9, 0xec, 0xa3, 0x87, 0x51, 0x91, 0xc5, 0x56, 0x7f, 0x8e, 0x8a, - 0xa9, 0xd6, 0x47, 0x6d, 0x54, 0x58, 0x63, 0x62, 0xe1, 0x62, 0x31, 0x0d, 0xb3, 0xe9, 0xaa, 0x91, - 0xd9, 0x14, 0x7e, 0x9d, 0xcd, 0x32, 0x05, 0x26, 0x48, 0x6c, 0x99, 0x5a, 0x69, 0x45, 0xf2, 0x64, - 0x6d, 0x52, 0xbb, 0x72, 0x9e, 0xe7, 0x81, 0x40, 0xe8, 0x16, 0x54, 0xdc, 0xc8, 0xc4, 0xfa, 0x8c, - 0xc0, 0x8d, 0x6a, 0xfa, 0x26, 0x14, 0x18, 0x50, 0x5c, 0x35, 0xc9, 0x58, 0xdc, 0x90, 0x65, 0xe0, - 0x8d, 0xeb, 0x1a, 0xf6, 0x85, 0x1f, 0x27, 0xb5, 0xe8, 0x2e, 0x66, 0x9e, 0x35, 0x25, 0x07, 0x8b, - 0x6b, 0x73, 0x49, 0xe7, 0x3d, 0x61, 0xdc, 0x8d, 0x56, 0x82, 0x78, 0x6f, 0xcc, 0xdb, 0x90, 0xc7, - 0x4d, 0x62, 0xa0, 0x14, 0x56, 0xff, 0x54, 0x95, 0x5e, 0x11, 0xb2, 0xd3, 0xc4, 0x67, 0x6c, 0x62, - 0x0c, 0xa3, 0x5f, 0xd3, 0x70, 0x27, 0xe0, 0x17, 0x96, 0x9d, 0x91, 0xf7, 0xa3, 0x62, 0xb7, 0xb1, - 0x32, 0x3c, 0xee, 0x36, 0x9f, 0xbf, 0x85, 0x58, 0x77, 0x72, 0x94, 0x07, 0xc9, 0x42, 0xc1, 0xdd, - 0x4e, 0x9e, 0xff, 0x63, 0x72, 0x8a, 0xa5, 0xb6, 0x98, 0xad, 0x58, 0x23, 0x35, 0xa5, 0x1d, 0x06, - 0x8d, 0x8f, 0x72, 0x68, 0x45, 0x9b, 0xbb, 0xd3, 0xef, 0xd9, 0xd3, 0xa4, 0xb4, 0x1b, 0xb2, 0xb5, - 0x42, 0x0c, 0x2e, 0x39, 0xd1, 0x33, 0xeb, 0x30, 0x16, 0xec, 0x45, 0x9d, 0xf0, 0xc6, 0x12, 0x58, - 0x5f, 0xb2, 0xf2, 0x8b, 0x02, 0x94, 0xa9, 0x9f, 0xbc, 0x41, 0x9e, 0xbd, 0x37, 0xd5, 0xe1, 0xe4, - 0xd7, 0x47, 0xa8, 0x38, 0x0f, 0x61, 0x66, 0xe5, 0xac, 0xbc, 0xcc, 0xcb, 0x99, 0x85, 0xf3, 0x3c, - 0xa4, 0x65, 0xce, 0x34, 0xdb, 0xbb, 0x99, 0xb8, 0xf9, 0xe6, 0xbb, 0x99, 0x4f, 0xe4, 0xbe, 0xe9, - 0x88, 0x53, 0xcc, 0x11, 0x25, 0x8f, 0x6e, 0xb5, 0xd3, 0xe7, 0x22, 0x8b, 0xee, 0x56, 0x14, 0x7e, - 0x38, 0x92, 0x14, 0x05, 0xef, 0xf3, 0x90, 0xe7, 0x23, 0x9f, 0xca, 0x2d, 0xca, 0xe0, 0x51, 0xd7, - 0xc6, 0x53, 0x3d, 0xb7, 0xb2, 0x5e, 0x90, 0xdc, 0x8d, 0x96, 0x1a, 0xab, 0x64, 0x7b, 0x23, 0xb9, - 0xe7, 0x82, 0x1f, 0xbf, 0x23, 0x20, 0x51, 0xa2, 0x74, 0x32, 0x91, 0x01, 0xd0, 0x5e, 0x21, 0x9a, - 0xe7, 0xf6, 0x46, 0x6c, 0x7f, 0xeb, 0x49, 0xf5, 0x5d, 0xa1, 0xf2, 0x7d, 0x32, 0x36, 0x09, 0x7d, - 0x68, 0x74, 0xa6, 0xf9, 0xa2, 0xa9, 0x4c, 0x48, 0xe1, 0x93, 0x0f, 0xd6, 0x3c, 0x63, 0xd9, 0x5f, - 0x4a, 0xb3, 0xec, 0x2f, 0x96, 0x81, 0xc5, 0xfe, 0x8a, 0x55, 0xc9, 0x5d, 0x5e, 0xb1, 0x5a, 0x91, - 0xf3, 0x8a, 0xd5, 0x00, 0xc7, 0x5e, 0x09, 0x06, 0x0b, 0x09, 0x7e, 0x69, 0x87, 0xb9, 0x12, 0xfc, - 0x2e, 0xed, 0xce, 0xfb, 0x0a, 0x47, 0x68, 0xac, 0x17, 0x78, 0x56, 0x37, 0x36, 0x44, 0xc6, 0x07, - 0xf2, 0x27, 0x6f, 0x9f, 0xd5, 0xa3, 0xdd, 0xc9, 0x58, 0x24, 0x7d, 0xe8, 0x3a, 0x7b, 0x4b, 0xf8, - 0xdf, 0x73, 0xa8, 0xd0, 0x34, 0x8e, 0x10, 0x13, 0xc8, 0x0d, 0x4e, 0x95, 0xbe, 0xe0, 0x04, 0x0a, - 0x16, 0x2f, 0x71, 0xb4, 0x32, 0x59, 0xb6, 0x1a, 0xc2, 0xb6, 0xe1, 0x79, 0x21, 0x5c, 0x0e, 0x29, - 0x34, 0x19, 0x9b, 0xa4, 0x56, 0x44, 0x93, 0x0e, 0x39, 0x57, 0xb8, 0x7a, 0x40, 0x3f, 0x6e, 0xd9, - 0x9c, 0x53, 0x33, 0x07, 0xd3, 0x87, 0x7b, 0xee, 0x44, 0x7a, 0xa0, 0x39, 0xda, 0xd8, 0x84, 0xa1, - 0x41, 0xc7, 0x3e, 0x35, 0xf4, 0x31, 0x2c, 0xd9, 0x24, 0x63, 0x93, 0x60, 0x85, 0xa1, 0x96, 0x60, - 0x63, 0xca, 0xe0, 0xe5, 0x60, 0x74, 0x02, 0xb6, 0x5e, 0x80, 0xfa, 0x2b, 0xd3, 0x1a, 0xf3, 0xff, - 0x82, 0xa3, 0x07, 0x0b, 0x60, 0x4f, 0x99, 0xe6, 0x54, 0xc9, 0x27, 0x10, 0x98, 0xb8, 0xcb, 0x8a, - 0x2c, 0x7e, 0xf8, 0x86, 0x1e, 0xe9, 0x06, 0xa3, 0x6d, 0xfa, 0xc0, 0x2c, 0x7c, 0x3a, 0xe5, 0x5a, - 0xa9, 0xc9, 0x55, 0xbf, 0x65, 0x2e, 0x11, 0x95, 0x77, 0xd4, 0xd7, 0xc3, 0xaf, 0x9a, 0xda, 0xba, - 0x5a, 0x02, 0xdc, 0x2c, 0xd5, 0xed, 0x90, 0x6b, 0xe7, 0x12, 0x51, 0x57, 0xbd, 0xab, 0xc9, 0x25, - 0xd5, 0xb9, 0xde, 0x91, 0x9a, 0x5c, 0xdb, 0xeb, 0x4d, 0xa4, 0xda, 0x9a, 0x6f, 0xaa, 0x5f, 0x0f, - 0xfe, 0x4c, 0x2e, 0x34, 0xe9, 0xc8, 0xcb, 0x08, 0x19, 0xb9, 0xd0, 0xa4, 0x22, 0x2f, 0x05, 0x22, - 0xf2, 0x0a, 0x3b, 0x0d, 0x79, 0x19, 0x21, 0x41, 0x9f, 0x36, 0xdb, 0x83, 0x90, 0x27, 0xe0, 0x0f, - 0x75, 0xb6, 0x63, 0x86, 0x0f, 0xb6, 0x1c, 0x6c, 0x3e, 0x65, 0xc0, 0xe2, 0x4b, 0xd6, 0x6f, 0x78, - 0x9a, 0xc6, 0x8c, 0xa0, 0x0a, 0x86, 0xc8, 0x20, 0x3c, 0x69, 0x93, 0x3a, 0xf6, 0x65, 0x7a, 0xfa, - 0x26, 0x88, 0xd7, 0xd0, 0x71, 0x32, 0x43, 0x84, 0x0f, 0xa2, 0xe5, 0xc6, 0xa2, 0xa0, 0x8c, 0xed, - 0xc1, 0xf9, 0xed, 0xa5, 0x26, 0x4e, 0xf5, 0x06, 0x1c, 0x53, 0x94, 0xcd, 0x26, 0xae, 0xb6, 0xf6, - 0x2d, 0xbc, 0x44, 0x41, 0x6a, 0xfc, 0xa6, 0x7a, 0xc9, 0x61, 0xae, 0x60, 0x15, 0x27, 0xdb, 0x90, - 0xf9, 0x66, 0x04, 0x61, 0x7a, 0xea, 0x99, 0x3d, 0xf4, 0x21, 0xdc, 0x46, 0x1c, 0x10, 0x2b, 0x27, - 0x51, 0x7c, 0x92, 0x7e, 0x38, 0xb4, 0xb1, 0x09, 0x6d, 0xa4, 0x17, 0xe6, 0x4a, 0x32, 0x76, 0x38, - 0x35, 0xda, 0xeb, 0x70, 0xd5, 0xc8, 0x39, 0x59, 0xf8, 0x56, 0xb4, 0x38, 0xec, 0x6e, 0x09, 0x95, - 0xae, 0xce, 0x1f, 0xe6, 0x98, 0xe5, 0x5b, 0xe6, 0x33, 0xbf, 0x58, 0x2c, 0xc6, 0xb9, 0xc4, 0x67, - 0xf3, 0xf2, 0x2c, 0xe8, 0x44, 0xfd, 0xc2, 0xa1, 0xd4, 0xe4, 0xd7, 0xe6, 0x31, 0x9b, 0x81, 0xce, - 0x7f, 0xc5, 0xa1, 0x12, 0xba, 0xbd, 0x63, 0xf3, 0xdb, 0xc3, 0xb8, 0x39, 0x43, 0x9c, 0x2a, 0x1d, - 0xe6, 0x04, 0x7b, 0x9a, 0xb8, 0xdf, 0xd2, 0xdb, 0xc0, 0x29, 0xc6, 0x1f, 0x08, 0xb6, 0xbb, 0xdb, - 0xd6, 0x2b, 0x24, 0x6a, 0x79, 0xc5, 0x9d, 0x48, 0x8f, 0x7e, 0x7a, 0x2a, 0x13, 0x19, 0x65, 0xb7, - 0x27, 0x9a, 0x49, 0x53, 0xa3, 0x34, 0x22, 0x7a, 0x5e, 0x84, 0x4a, 0x87, 0x36, 0xf8, 0xa5, 0x73, - 0xe7, 0x36, 0x02, 0xe8, 0x3f, 0xe1, 0xaa, 0x71, 0xc2, 0x6f, 0xd9, 0x5e, 0x13, 0x3e, 0xc2, 0xa1, - 0xc5, 0xee, 0xa0, 0xe2, 0x2e, 0x7d, 0x04, 0x8f, 0xfa, 0xa3, 0xf9, 0x2f, 0xf9, 0x06, 0x15, 0x37, - 0x68, 0x76, 0x18, 0x57, 0xdc, 0x4c, 0xe8, 0xe2, 0xe7, 0xd3, 0x0d, 0xf5, 0x8a, 0x11, 0x05, 0xca, - 0x41, 0x02, 0x4f, 0xc6, 0x06, 0xf5, 0xe8, 0x21, 0x6d, 0x6a, 0xb4, 0xd2, 0xa1, 0xf5, 0x9f, 0x86, - 0x59, 0x47, 0x03, 0x5a, 0x03, 0x7e, 0x85, 0x8c, 0xa9, 0x61, 0xb6, 0x88, 0xcf, 0x6f, 0xb0, 0x6d, - 0xac, 0x14, 0x8f, 0x56, 0xf9, 0xfc, 0xa3, 0x55, 0x6b, 0xa2, 0xc2, 0x90, 0x81, 0x10, 0x44, 0xf3, - 0x9b, 0x42, 0x90, 0x7e, 0xed, 0x02, 0xb0, 0x8f, 0xe4, 0xed, 0xf1, 0x4a, 0x88, 0xb5, 0x44, 0xc6, - 0xce, 0xec, 0xf3, 0xd4, 0xe4, 0x80, 0x19, 0xfd, 0x8c, 0xe6, 0xfe, 0x2e, 0xcf, 0xe1, 0xbe, 0x82, - 0x8a, 0x99, 0x0d, 0xf0, 0xbe, 0xb2, 0xbe, 0x84, 0x8a, 0xe8, 0x1c, 0xfc, 0x56, 0x4f, 0xf0, 0x7e, - 0x3b, 0xdb, 0x98, 0x31, 0xa2, 0xa8, 0x4e, 0xb0, 0xa4, 0x5a, 0x26, 0xfa, 0xbe, 0xc1, 0x1a, 0xa7, - 0x6f, 0x81, 0x91, 0xeb, 0x4e, 0xa4, 0x9b, 0x1a, 0xb6, 0xee, 0x44, 0xba, 0xa5, 0xb7, 0x1a, 0x6d, - 0x93, 0xee, 0xc0, 0xac, 0x76, 0xf8, 0x8c, 0x76, 0xb5, 0x3b, 0xfd, 0x71, 0x5f, 0x59, 0x94, 0x43, - 0x45, 0x74, 0xca, 0xf0, 0x9b, 0x50, 0x51, 0x73, 0xab, 0x93, 0x39, 0xc6, 0x2d, 0x21, 0x27, 0x12, - 0x14, 0x2a, 0x2e, 0xa7, 0xd3, 0xc1, 0x58, 0xc4, 0x56, 0x02, 0xef, 0x44, 0xc5, 0xe4, 0x83, 0x89, - 0x0d, 0x8a, 0x9d, 0xa9, 0x58, 0x38, 0x8e, 0x48, 0x63, 0x73, 0x55, 0x63, 0x53, 0xcb, 0xba, 0x79, - 0xb4, 0x2a, 0x5b, 0x08, 0x34, 0x74, 0xf3, 0x12, 0x46, 0xb6, 0xa3, 0xd2, 0xbb, 0x5b, 0x95, 0x7e, - 0x2d, 0xd8, 0x53, 0xc4, 0x6d, 0xb6, 0x43, 0x1f, 0x43, 0x8a, 0x37, 0x36, 0x1f, 0xe6, 0xe8, 0x06, - 0xbf, 0x55, 0x3f, 0x9b, 0x3a, 0x7e, 0x89, 0x11, 0xb0, 0x8d, 0x1d, 0x6b, 0x26, 0xee, 0xaa, 0x81, - 0xb3, 0xd4, 0x64, 0xfc, 0x68, 0x7a, 0xea, 0x6b, 0xfd, 0xc4, 0xac, 0xab, 0x46, 0xb6, 0x53, 0xe7, - 0x77, 0xa0, 0x95, 0x0c, 0x80, 0x69, 0x27, 0x96, 0xbd, 0xb3, 0xd3, 0xc4, 0xd5, 0x59, 0x95, 0x21, - 0x2d, 0xce, 0xc6, 0xe3, 0x7f, 0x81, 0x96, 0xb5, 0xfb, 0xfc, 0x8d, 0xbe, 0x0f, 0xcc, 0x27, 0xe1, - 0x37, 0xa8, 0xd2, 0xd3, 0x82, 0x09, 0x13, 0x4b, 0x29, 0x01, 0x7d, 0x2c, 0xa2, 0x5d, 0x1d, 0x06, - 0x2e, 0xa7, 0x1f, 0xbf, 0xfa, 0x4d, 0xf5, 0x32, 0x61, 0x49, 0x69, 0x7a, 0x59, 0xf9, 0x5f, 0xc8, - 0x26, 0x32, 0xdf, 0x80, 0x96, 0xb5, 0xbb, 0xf7, 0x61, 0x5a, 0x8b, 0x31, 0xad, 0x17, 0xb1, 0xdb, - 0x22, 0x81, 0x89, 0x6b, 0xb3, 0xaa, 0x64, 0x50, 0xbc, 0x78, 0x25, 0x3f, 0x45, 0xc8, 0xc2, 0x6f, - 0xc7, 0xe7, 0x1e, 0xbe, 0xa0, 0xe2, 0xc5, 0x54, 0x97, 0x60, 0xaa, 0xd8, 0xb4, 0xce, 0xc2, 0xc5, - 0xc7, 0x58, 0xca, 0xfa, 0xd8, 0x79, 0x7d, 0xec, 0x0c, 0x25, 0x2b, 0xb3, 0x98, 0xfc, 0x6b, 0xf6, - 0x5b, 0x2e, 0x38, 0x56, 0x0b, 0x71, 0x2e, 0x79, 0x2c, 0xbb, 0x7a, 0x58, 0x56, 0xd9, 0xd9, 0xe0, - 0x34, 0x26, 0x1b, 0xf1, 0x20, 0xdc, 0x8f, 0x56, 0x12, 0xb5, 0xcf, 0x19, 0x08, 0xb4, 0x79, 0x03, - 0x7b, 0xfd, 0x44, 0x11, 0xdf, 0xae, 0x4a, 0x75, 0x42, 0x76, 0x9a, 0xf8, 0x4a, 0x16, 0x49, 0x72, - 0xb4, 0x3f, 0xf0, 0x09, 0x3c, 0x56, 0xa2, 0x1d, 0xbc, 0xa9, 0x0d, 0x5e, 0xd7, 0x8e, 0x4e, 0xe8, - 0x63, 0xe7, 0xa9, 0x12, 0xf3, 0xfc, 0x86, 0x0d, 0xa9, 0x2b, 0xaa, 0x9c, 0x4d, 0x8b, 0xbf, 0xcc, - 0xa1, 0xa2, 0x50, 0x67, 0xb3, 0x5f, 0xc1, 0x41, 0xef, 0x0a, 0x71, 0xc8, 0x25, 0x72, 0x64, 0x66, - 0xc1, 0xc5, 0xae, 0x9c, 0x46, 0xe0, 0x82, 0x40, 0x0e, 0xbe, 0x7c, 0xc2, 0x10, 0x85, 0x47, 0x7b, - 0x53, 0xa3, 0xbd, 0xa0, 0xfc, 0xe3, 0x19, 0x4a, 0x9e, 0x8e, 0x27, 0x00, 0x3d, 0x3a, 0x90, 0xea, - 0xbb, 0xa2, 0xf5, 0xf5, 0x6b, 0x23, 0x43, 0x99, 0xf1, 0xb8, 0x16, 0x1f, 0x4e, 0x8d, 0x4f, 0x19, - 0x9c, 0x18, 0xbf, 0x0a, 0x9d, 0x8a, 0x5f, 0xc1, 0x8f, 0xfa, 0x5f, 0xd0, 0x06, 0x06, 0x29, 0x24, - 0xf3, 0xd9, 0x29, 0xd9, 0xaa, 0x02, 0x7f, 0x86, 0x43, 0x4b, 0x3e, 0x08, 0xf8, 0x15, 0xf3, 0xbd, - 0x73, 0xb0, 0xaa, 0x0b, 0x00, 0x13, 0xf7, 0xde, 0x4b, 0x05, 0xc9, 0xcb, 0x0a, 0xd1, 0x38, 0x5b, - 0x41, 0x13, 0xf6, 0x2d, 0x6b, 0x08, 0xe5, 0xf3, 0x37, 0x0a, 0x50, 0x71, 0x50, 0x09, 0x07, 0xf7, - 0x37, 0x04, 0xda, 0x7c, 0x9e, 0xfd, 0x44, 0x73, 0xf8, 0xb0, 0x40, 0x95, 0x86, 0x0b, 0x04, 0x36, - 0x45, 0xfc, 0x7f, 0x38, 0xa2, 0x6b, 0xc1, 0xc6, 0x6e, 0xbe, 0x55, 0x69, 0x08, 0xd9, 0x87, 0x06, - 0xd3, 0xd3, 0xc7, 0xe1, 0x91, 0x9b, 0xb9, 0xc4, 0xa8, 0x6b, 0xdb, 0xb6, 0xda, 0x1a, 0x97, 0xd4, - 0x54, 0xbb, 0x4b, 0xae, 0x6d, 0x92, 0xdf, 0x2e, 0x87, 0x79, 0xfd, 0x13, 0xfd, 0xf3, 0xf1, 0x0a, - 0x2c, 0xff, 0x39, 0xe5, 0xda, 0x6d, 0xb5, 0xf5, 0x4d, 0x52, 0xdd, 0x2e, 0x57, 0x7d, 0x53, 0xad, - 0xbc, 0x53, 0xaa, 0x33, 0x34, 0x90, 0xfa, 0xed, 0x80, 0x7e, 0x27, 0xd2, 0x43, 0x35, 0x8e, 0x64, - 0x2c, 0x9e, 0x45, 0xcc, 0xd8, 0xdb, 0xc1, 0xba, 0x76, 0xf2, 0x06, 0xd9, 0x12, 0x13, 0xa3, 0xe0, - 0xbd, 0x0d, 0x3d, 0xae, 0xa9, 0x51, 0xa3, 0x61, 0xc0, 0x66, 0x32, 0x91, 0x91, 0x64, 0x2c, 0xa2, - 0x5d, 0x3d, 0x9b, 0x9e, 0x3e, 0x6e, 0xca, 0x23, 0x46, 0x13, 0x52, 0x67, 0xae, 0x6b, 0xfd, 0x57, - 0xc9, 0x7a, 0x83, 0x86, 0x7c, 0x3e, 0xae, 0x1f, 0xbf, 0x4a, 0x1c, 0x38, 0x20, 0x16, 0x20, 0x26, - 0xaa, 0xf5, 0x4d, 0x00, 0xc2, 0x9d, 0x48, 0x8f, 0xcc, 0x76, 0x07, 0xff, 0x37, 0x1c, 0x5a, 0xdd, - 0xde, 0xd9, 0x16, 0xf6, 0xbd, 0x13, 0xf0, 0x2b, 0x8d, 0xb8, 0x6c, 0xd2, 0x85, 0x70, 0x64, 0xfd, - 0x25, 0xa7, 0x4a, 0xd3, 0x9c, 0x90, 0x1f, 0x47, 0x3c, 0xce, 0x69, 0xc3, 0xd3, 0x99, 0xc8, 0x80, - 0x16, 0x49, 0xcc, 0x25, 0x46, 0x1b, 0x64, 0xd7, 0x76, 0xd9, 0xd5, 0xf4, 0xf6, 0x5c, 0x22, 0x5a, - 0xfb, 0xe6, 0x0e, 0xa9, 0xce, 0xd5, 0x64, 0x34, 0xd4, 0x82, 0x8e, 0x9a, 0xe7, 0x27, 0x13, 0x99, - 0xcf, 0x4e, 0xd1, 0x51, 0xa4, 0xd3, 0x36, 0x19, 0x1b, 0xa2, 0xb3, 0x81, 0x1d, 0xa3, 0x3b, 0x91, - 0x1e, 0x93, 0xdc, 0x5c, 0x62, 0x14, 0x9a, 0x45, 0x11, 0xef, 0x44, 0xba, 0x21, 0xb7, 0x3e, 0x16, - 0x4f, 0x26, 0x46, 0xb5, 0xb3, 0x87, 0xd2, 0xe3, 0xe3, 0x72, 0xfe, 0xea, 0xf2, 0x57, 0x38, 0xb4, - 0x2a, 0xa8, 0x74, 0xb4, 0xb9, 0x3d, 0xca, 0x0e, 0xff, 0x1e, 0xc5, 0xdd, 0x16, 0xde, 0x03, 0x3e, - 0xa5, 0x85, 0xd5, 0xbf, 0x55, 0xa5, 0x7d, 0x42, 0x4e, 0xa2, 0xe8, 0x05, 0xbb, 0x44, 0xea, 0xcc, - 0x51, 0x7d, 0xe8, 0x8a, 0xa1, 0x6b, 0x74, 0x5f, 0xd2, 0xe2, 0x37, 0x89, 0x7c, 0x71, 0xe6, 0xb6, - 0x3e, 0xf8, 0x91, 0x3e, 0x36, 0xa8, 0x1d, 0x1e, 0xb7, 0x1b, 0x2b, 0xee, 0x44, 0x7a, 0xd2, 0xb7, - 0xcf, 0xa5, 0x66, 0x26, 0x37, 0x6a, 0xfd, 0x07, 0x33, 0xea, 0xf9, 0x0e, 0x9f, 0xbf, 0x25, 0x19, - 0x1b, 0x34, 0x64, 0xb9, 0xfe, 0xd3, 0xe9, 0x2b, 0x07, 0x93, 0xb1, 0x38, 0xa5, 0x35, 0x97, 0xe8, - 0x96, 0x73, 0xca, 0xe5, 0xff, 0x96, 0x43, 0xc5, 0x21, 0xe0, 0xe7, 0xf8, 0x61, 0x72, 0x38, 0xcb, - 0xff, 0xef, 0x39, 0x55, 0xfa, 0x67, 0x9c, 0xc0, 0xa6, 0x88, 0x5f, 0x71, 0x64, 0x26, 0x61, 0xa3, - 0xdb, 0x5c, 0x22, 0xea, 0xac, 0x93, 0x1a, 0x1b, 0x5d, 0xce, 0x5d, 0x8d, 0x4e, 0xa9, 0xce, 0x55, - 0xbf, 0xa5, 0x1c, 0xea, 0x55, 0x81, 0xbb, 0x8e, 0x4c, 0x39, 0xb2, 0x6f, 0x99, 0xd2, 0xad, 0xa1, - 0xcd, 0x25, 0xcc, 0xd9, 0x88, 0x5f, 0x7d, 0x31, 0xe1, 0x67, 0xde, 0x92, 0xb6, 0xd6, 0xee, 0xda, - 0xd1, 0xb0, 0xab, 0xb1, 0x69, 0x7b, 0x43, 0x43, 0x6d, 0x8d, 0x49, 0x74, 0x2e, 0x31, 0x4a, 0x73, - 0x68, 0x7d, 0x5f, 0x1a, 0x7d, 0x1f, 0x1b, 0x84, 0xac, 0x73, 0x89, 0x28, 0x2d, 0x87, 0xbc, 0x39, - 0x7f, 0xec, 0x62, 0xe6, 0xa0, 0x0a, 0x68, 0x74, 0x44, 0x65, 0xb6, 0x11, 0x7c, 0x17, 0x42, 0x61, - 0x5f, 0xbb, 0x22, 0xbb, 0xfd, 0x2d, 0x4a, 0xa8, 0x74, 0x45, 0x7e, 0xc7, 0xd8, 0x26, 0x13, 0x03, - 0x5c, 0x35, 0x98, 0x1c, 0xa2, 0xa0, 0x4d, 0x8d, 0xea, 0x27, 0x6f, 0xb0, 0xc6, 0x72, 0xf6, 0x35, - 0x1b, 0xdb, 0xb9, 0x28, 0x93, 0x8f, 0xef, 0xe6, 0xc0, 0x88, 0xb4, 0xa3, 0xa3, 0x25, 0xe8, 0xf6, - 0x2a, 0x58, 0x21, 0x2f, 0xac, 0xde, 0xa5, 0x4a, 0xbf, 0x12, 0x58, 0xb8, 0x21, 0x03, 0x18, 0xd3, - 0x80, 0xd8, 0x59, 0x07, 0x0f, 0xa5, 0xe2, 0x57, 0xb6, 0x6c, 0xad, 0x25, 0x0f, 0x60, 0x62, 0x4f, - 0x86, 0x4a, 0xf0, 0xf5, 0x31, 0xc3, 0x17, 0xc6, 0xb5, 0xe1, 0xa3, 0x5a, 0xec, 0x00, 0x60, 0x54, - 0x6a, 0xfd, 0xa7, 0xb5, 0x44, 0x5c, 0xeb, 0xbf, 0x41, 0x22, 0xf7, 0xb2, 0xb4, 0x79, 0x37, 0x2a, - 0x26, 0x56, 0x75, 0x39, 0xd0, 0xa6, 0x10, 0x45, 0x1c, 0x9b, 0x8b, 0x58, 0xb8, 0x58, 0x05, 0x83, - 0xa6, 0xb4, 0x86, 0x2c, 0xe9, 0xf6, 0xe4, 0x0d, 0x10, 0xb0, 0x53, 0xa3, 0xbd, 0x3e, 0x77, 0x7b, - 0xfa, 0x8a, 0x9a, 0x1e, 0xf8, 0xc2, 0x94, 0x81, 0x98, 0xbc, 0x65, 0xe9, 0x02, 0x54, 0x44, 0x7b, - 0x8f, 0xff, 0x19, 0xfb, 0x0c, 0x7c, 0xb5, 0xc0, 0x38, 0xc4, 0x41, 0x2f, 0xc2, 0x46, 0xf6, 0x7e, - 0xa0, 0xd9, 0xbc, 0xac, 0x4f, 0x83, 0xfc, 0x82, 0x19, 0xb2, 0x16, 0x15, 0x86, 0x3c, 0x7b, 0x14, - 0xfc, 0xba, 0x3f, 0xc8, 0x2a, 0x15, 0xaa, 0xf4, 0xb8, 0x40, 0x81, 0xe2, 0x2a, 0xa0, 0xe3, 0x09, - 0x06, 0xfc, 0xe0, 0x28, 0xc2, 0x90, 0xa0, 0x58, 0xbc, 0x07, 0x2d, 0x36, 0x58, 0x1c, 0x31, 0x64, - 0xe2, 0x9d, 0x16, 0x03, 0xc4, 0x1a, 0x5b, 0x76, 0x2d, 0x1a, 0x27, 0x7d, 0x6b, 0xe8, 0x13, 0xf8, - 0x59, 0x5a, 0x80, 0x6a, 0xfd, 0xa7, 0xe9, 0x63, 0x00, 0xb0, 0x08, 0x41, 0x19, 0x81, 0x54, 0x19, - 0xd3, 0xe2, 0x5f, 0x47, 0x88, 0xc8, 0x09, 0x70, 0x3e, 0x61, 0x6c, 0xea, 0xd8, 0x05, 0x90, 0x01, - 0x8b, 0x2b, 0x41, 0xb6, 0x20, 0xfd, 0x7a, 0xfc, 0xaa, 0xcc, 0x24, 0x6e, 0x32, 0xc4, 0x12, 0x54, - 0x2e, 0x58, 0xfd, 0x27, 0x3e, 0x66, 0x0a, 0x5b, 0x0a, 0xdb, 0x5f, 0xe4, 0xd1, 0xea, 0xc3, 0x05, - 0xa8, 0xb0, 0xc6, 0x1d, 0x76, 0xd7, 0xf8, 0x42, 0xad, 0xfc, 0x71, 0x0e, 0x15, 0x7a, 0x7d, 0xa1, - 0x56, 0x2b, 0xd4, 0x69, 0xf5, 0x7e, 0x55, 0xea, 0x12, 0x28, 0x50, 0x7c, 0x1f, 0x02, 0xde, 0xa5, - 0xce, 0x9c, 0xa2, 0x8e, 0x8c, 0x75, 0xdb, 0x9d, 0x52, 0xdd, 0xae, 0x6a, 0xa9, 0xd1, 0xe5, 0x9c, - 0x4b, 0xf4, 0x43, 0x13, 0xe7, 0x12, 0x03, 0x95, 0x00, 0x6f, 0x6c, 0xac, 0xa9, 0x74, 0xd6, 0x6d, - 0xdf, 0x51, 0x63, 0x60, 0xd4, 0x92, 0x9f, 0x16, 0xb0, 0x41, 0xae, 0xdd, 0xe6, 0xda, 0xb1, 0xad, - 0x3c, 0xf3, 0xd9, 0x29, 0x3d, 0x72, 0x25, 0x7d, 0x60, 0x36, 0x19, 0x3f, 0x9a, 0x1a, 0xff, 0x3c, - 0x75, 0xe6, 0x54, 0x85, 0x4c, 0x4b, 0xe5, 0x77, 0x43, 0xb5, 0xb0, 0xf0, 0xc5, 0xbc, 0x82, 0x4d, - 0x81, 0xe2, 0xab, 0xb4, 0x5a, 0xc6, 0xd6, 0x72, 0xd5, 0x60, 0x2b, 0x1b, 0x37, 0x6c, 0x49, 0x7f, - 0x75, 0x33, 0x7d, 0xf3, 0x4b, 0xca, 0xea, 0x92, 0xb1, 0xf8, 0x06, 0x88, 0x6b, 0xbb, 0xc1, 0x58, - 0xeb, 0xb1, 0xc1, 0xf4, 0xf5, 0xc9, 0xe4, 0xad, 0xab, 0x32, 0x25, 0x53, 0x16, 0x5d, 0x82, 0x4a, - 0xb0, 0x24, 0xfe, 0x0f, 0x3d, 0x02, 0x64, 0xf8, 0x3a, 0x84, 0x76, 0xfb, 0xda, 0x94, 0x46, 0x78, - 0xc7, 0x7c, 0x11, 0xe3, 0x9e, 0x63, 0x81, 0xc5, 0xc7, 0xf4, 0x13, 0x87, 0xe8, 0x5b, 0xe6, 0xe5, - 0xca, 0xbe, 0xf0, 0xf3, 0xeb, 0x95, 0x7d, 0xe1, 0x17, 0xd6, 0xef, 0xdb, 0x1d, 0xaa, 0x90, 0x19, - 0x44, 0xfe, 0x7d, 0xc4, 0x1b, 0x73, 0x71, 0x73, 0x20, 0xd8, 0xee, 0x0e, 0x4b, 0x7e, 0xef, 0x36, - 0xfa, 0x82, 0x41, 0x21, 0xc4, 0xca, 0xca, 0x93, 0x2c, 0x3e, 0x45, 0xbc, 0x75, 0xe8, 0xd3, 0x69, - 0xf8, 0xe9, 0x11, 0xa3, 0x61, 0xb7, 0x6e, 0xe8, 0xd1, 0x9e, 0xf4, 0xec, 0xac, 0x9c, 0x27, 0x1b, - 0xff, 0x3a, 0x2a, 0x6e, 0x37, 0x7e, 0x34, 0xb9, 0x83, 0x2d, 0x4a, 0x98, 0x5c, 0xcd, 0x59, 0xab, - 0x4a, 0x8f, 0x09, 0x2c, 0x5c, 0x5c, 0x0e, 0x24, 0x52, 0x67, 0xa6, 0xb4, 0xd9, 0xe3, 0x32, 0x9b, - 0xc4, 0xff, 0x1e, 0x95, 0x18, 0xfd, 0xd0, 0xe0, 0x0e, 0x86, 0x7d, 0xd8, 0xdf, 0x09, 0x84, 0x75, - 0xfc, 0xae, 0x94, 0x3d, 0x45, 0xac, 0x05, 0x2a, 0xe9, 0xa9, 0xaf, 0xb5, 0x8b, 0x87, 0xb4, 0x91, - 0x41, 0xbd, 0xff, 0x84, 0xd6, 0x7f, 0xd0, 0x58, 0xf4, 0x23, 0x83, 0xe0, 0x27, 0x96, 0x8c, 0x1d, - 0x4b, 0xce, 0xf4, 0x69, 0xb3, 0x1f, 0xc2, 0x9b, 0x9b, 0xda, 0xcd, 0x2f, 0xf4, 0xb1, 0x01, 0xfa, - 0xbe, 0x1d, 0x18, 0x42, 0x65, 0x3b, 0xd5, 0xb2, 0x7f, 0xb9, 0x04, 0xf1, 0xe0, 0x15, 0xa1, 0x84, - 0x25, 0x8f, 0x47, 0x09, 0x85, 0x7c, 0xcd, 0x6d, 0x0a, 0x3f, 0x5e, 0x80, 0x78, 0x1f, 0x01, 0x3b, - 0xf7, 0x18, 0x75, 0x65, 0x66, 0xe7, 0x7f, 0xe5, 0x54, 0xe9, 0x6f, 0x39, 0x21, 0x0f, 0x82, 0xf8, - 0x3f, 0x71, 0x70, 0x50, 0x95, 0x9e, 0x1a, 0x4f, 0x5f, 0xbf, 0x05, 0xb3, 0xf5, 0x4e, 0xa4, 0xa7, - 0x5a, 0xaa, 0xaf, 0x79, 0xcb, 0x55, 0xd3, 0xf4, 0x86, 0x31, 0xf5, 0x1a, 0x24, 0x43, 0xd6, 0x1d, - 0xcd, 0x7c, 0xd4, 0x9b, 0x9c, 0x39, 0x95, 0xbe, 0x7e, 0x4b, 0x8f, 0x0e, 0x68, 0xb1, 0xcb, 0xda, - 0xd4, 0x6c, 0x6a, 0xe6, 0xc3, 0xd4, 0xd4, 0xc9, 0xb9, 0x44, 0xb4, 0x49, 0x96, 0x36, 0x6f, 0x76, - 0x39, 0x77, 0x35, 0x6c, 0x6f, 0x6c, 0x32, 0xb0, 0x77, 0x55, 0xbf, 0xbd, 0xeb, 0x8d, 0xed, 0x3b, - 0x64, 0x63, 0xbf, 0xfe, 0xaa, 0x3b, 0x73, 0x68, 0xd8, 0xc8, 0x72, 0x75, 0xd8, 0xe0, 0x6a, 0x23, - 0x43, 0x40, 0x64, 0x2e, 0x11, 0x65, 0x0a, 0xc9, 0xcd, 0x07, 0x25, 0xdc, 0x2d, 0x9f, 0xe4, 0xdc, - 0x2a, 0x6d, 0xa9, 0xa5, 0xe8, 0x5a, 0xb4, 0x0f, 0xcc, 0x36, 0x72, 0x9e, 0xb6, 0xf2, 0x47, 0x38, - 0xf4, 0x90, 0x09, 0xde, 0xe6, 0xde, 0x57, 0xed, 0xf6, 0x7b, 0xf7, 0xfa, 0xbc, 0xe1, 0x3d, 0x64, - 0xb1, 0xbc, 0xa5, 0x4a, 0x4d, 0x42, 0x5e, 0x04, 0xf1, 0xa7, 0x5a, 0xdf, 0xe7, 0xa9, 0xd9, 0xa3, - 0xda, 0xa1, 0x38, 0x94, 0x93, 0x8c, 0x1d, 0xce, 0x9c, 0x1e, 0x31, 0x06, 0x71, 0xf0, 0x78, 0x72, - 0x76, 0x70, 0x2e, 0x31, 0xba, 0xad, 0xb9, 0x23, 0xc4, 0x8a, 0xcb, 0x73, 0x89, 0xd1, 0x0d, 0x04, - 0x26, 0xe7, 0xa5, 0xc9, 0xb7, 0xa2, 0x55, 0x1d, 0x9d, 0xcd, 0x6d, 0x3e, 0x8f, 0xab, 0x41, 0x0a, - 0x85, 0x7c, 0x2d, 0x7e, 0xc5, 0x4b, 0x7c, 0xb4, 0xf1, 0xbe, 0x99, 0x93, 0x28, 0x96, 0x93, 0x43, - 0x26, 0x38, 0x21, 0xc5, 0x15, 0x72, 0x35, 0xd0, 0x32, 0x93, 0xb1, 0xb8, 0x29, 0xb6, 0xc9, 0x39, - 0x79, 0xf9, 0x77, 0x10, 0xdf, 0x6c, 0x96, 0xdc, 0xe0, 0xf6, 0xb4, 0xba, 0x5b, 0x14, 0x97, 0x97, - 0x1c, 0x90, 0xe1, 0xd3, 0x94, 0x3c, 0xc9, 0xe2, 0x03, 0xe0, 0x3c, 0x44, 0xbb, 0xd6, 0x55, 0x23, - 0xe7, 0x41, 0xe3, 0x5f, 0x41, 0x85, 0x66, 0x79, 0x64, 0x45, 0xc1, 0x9b, 0x5b, 0x26, 0x50, 0x5c, - 0x01, 0x95, 0xf5, 0x75, 0x68, 0x63, 0x57, 0xb5, 0xb3, 0x11, 0x99, 0xa6, 0x94, 0xc5, 0x1f, 0x45, - 0x0f, 0xbb, 0xcc, 0x87, 0xe6, 0x88, 0x4d, 0x95, 0x3c, 0x2a, 0xfb, 0x0a, 0x3d, 0xc6, 0xe3, 0x2c, - 0x93, 0x89, 0x79, 0x8c, 0xf7, 0x90, 0xf9, 0x3a, 0x1d, 0x7b, 0x57, 0x84, 0x1e, 0xde, 0x3d, 0x47, - 0x36, 0xe5, 0x02, 0xeb, 0x22, 0x1d, 0x6c, 0xca, 0xcb, 0x2d, 0xd1, 0xfc, 0xfc, 0x79, 0xb2, 0xb9, - 0x6e, 0xb0, 0xdf, 0xdf, 0xc5, 0x07, 0x98, 0x44, 0xeb, 0x5e, 0x41, 0xee, 0x45, 0xe1, 0x05, 0x62, - 0x29, 0xda, 0x0d, 0xa8, 0xd0, 0xd4, 0x28, 0x49, 0x0f, 0xbe, 0xa0, 0x4a, 0x1b, 0x05, 0x0a, 0x14, - 0x7f, 0x6c, 0x2a, 0xac, 0xf0, 0x58, 0x22, 0x53, 0x26, 0x3e, 0x1b, 0x88, 0x40, 0x24, 0x2b, 0x99, - 0x66, 0xe0, 0x5f, 0x43, 0x85, 0xee, 0x8e, 0x8e, 0xb6, 0xfd, 0xc6, 0xf6, 0x0e, 0x76, 0x04, 0xdc, - 0x5a, 0x0a, 0x14, 0x79, 0x30, 0x7d, 0x53, 0xc3, 0x41, 0xe6, 0xd0, 0xb0, 0x4c, 0x53, 0xf9, 0x16, - 0xb4, 0xc8, 0xd9, 0xb0, 0x03, 0x73, 0xa2, 0x92, 0xea, 0x1d, 0xaa, 0x24, 0x0b, 0xc6, 0xb7, 0xb8, - 0xd5, 0x10, 0x55, 0xcf, 0x1d, 0x71, 0x36, 0xec, 0x60, 0x1e, 0xb4, 0x1a, 0x02, 0x20, 0xfb, 0xba, - 0x5f, 0x32, 0xae, 0xea, 0x27, 0x2e, 0x19, 0x22, 0xef, 0xf4, 0x31, 0x1b, 0x9c, 0x55, 0x51, 0x0d, - 0x8a, 0x46, 0x41, 0xdb, 0x94, 0x76, 0x62, 0x56, 0x80, 0x82, 0xb6, 0x29, 0xed, 0x66, 0x41, 0xdb, - 0x94, 0xf6, 0xef, 0xa3, 0xa0, 0x6d, 0x4a, 0x3b, 0xbf, 0x17, 0x2d, 0xda, 0xd2, 0xb0, 0x03, 0xbb, - 0xe2, 0x94, 0x54, 0x2b, 0xaa, 0xd4, 0x2c, 0x18, 0xdf, 0xe2, 0xbb, 0x40, 0x73, 0xcb, 0xf7, 0xd1, - 0x22, 0xcb, 0xd1, 0x3d, 0x31, 0x6a, 0xec, 0x75, 0xb2, 0x51, 0x02, 0xff, 0x71, 0xf6, 0x4b, 0x8c, - 0x10, 0xc3, 0xe8, 0xf7, 0xaa, 0xf4, 0x97, 0x59, 0x2f, 0x31, 0xb6, 0x41, 0xb1, 0xc4, 0x86, 0xc6, - 0x5c, 0x71, 0x4d, 0x1f, 0x21, 0xbe, 0xee, 0xce, 0x86, 0x1d, 0xc6, 0xf0, 0x1f, 0xec, 0xd3, 0x26, - 0x4f, 0x81, 0x55, 0x0d, 0xab, 0xd1, 0x83, 0x20, 0x45, 0xd3, 0xfd, 0x36, 0x7d, 0xe8, 0xd3, 0xf4, - 0x78, 0x54, 0x1b, 0xc1, 0xcf, 0x23, 0x5e, 0xbd, 0x96, 0xbe, 0x7d, 0x54, 0x8b, 0x1a, 0xc2, 0x3e, - 0x4b, 0x3f, 0xeb, 0x39, 0xc6, 0xbf, 0xc2, 0xcc, 0x1e, 0x00, 0x0c, 0xb3, 0x07, 0x7b, 0xc1, 0x27, - 0x05, 0xaa, 0xf4, 0xdf, 0x30, 0xb3, 0xcf, 0x46, 0x10, 0x93, 0x1c, 0x10, 0x05, 0x66, 0x6f, 0x28, - 0x5b, 0x58, 0x34, 0x09, 0x2b, 0x7e, 0x8f, 0xe2, 0x87, 0x8b, 0x59, 0x5a, 0xb4, 0x4f, 0x1b, 0xf9, - 0x2c, 0x9b, 0x1f, 0xe7, 0x65, 0xc3, 0x8d, 0x0d, 0xdb, 0x31, 0x52, 0xea, 0xb3, 0x73, 0xc9, 0x99, - 0x9b, 0x14, 0x4c, 0x36, 0x0c, 0x83, 0xd0, 0xad, 0xeb, 0x5a, 0xb4, 0x4f, 0x1f, 0xeb, 0xbf, 0x13, - 0xe9, 0x71, 0xef, 0x0d, 0x01, 0xe9, 0xed, 0xf5, 0xbb, 0x6a, 0x6a, 0xb7, 0x49, 0xf5, 0x35, 0x7a, - 0x74, 0x20, 0x33, 0x16, 0x81, 0x6c, 0x95, 0x06, 0x2d, 0x96, 0xce, 0x9d, 0x48, 0x8f, 0x76, 0xb9, - 0xc7, 0x10, 0x3e, 0xf0, 0xe9, 0x0b, 0x78, 0x2e, 0xea, 0xa3, 0x3d, 0xd4, 0xd4, 0x00, 0xce, 0x8b, - 0x6c, 0x21, 0xa9, 0xd1, 0x5e, 0x33, 0x04, 0xee, 0xb3, 0xc1, 0x1f, 0xcb, 0xcb, 0x48, 0x3d, 0xe4, - 0x55, 0xd9, 0x8d, 0x91, 0x0b, 0xcd, 0x9a, 0xcb, 0x79, 0x3a, 0x89, 0x1f, 0xe4, 0x10, 0x0a, 0x61, - 0xd1, 0xc4, 0x10, 0xf6, 0xc8, 0x65, 0xd0, 0x9c, 0x50, 0x06, 0xa6, 0x30, 0x58, 0xdd, 0xa8, 0x4a, - 0x0d, 0x02, 0x93, 0x41, 0xac, 0x26, 0x8f, 0x7d, 0x9e, 0x39, 0x95, 0xeb, 0x75, 0x09, 0xad, 0x49, - 0xc6, 0xe2, 0x36, 0x41, 0xee, 0x0c, 0x9e, 0x8c, 0x58, 0x22, 0x4b, 0xc6, 0xe2, 0x3f, 0xd9, 0xb0, - 0x45, 0x66, 0xe8, 0xf1, 0x9f, 0x73, 0xa8, 0xc8, 0x4b, 0x4a, 0x0b, 0x95, 0x2e, 0xc7, 0x6a, 0xe5, - 0xfc, 0xd5, 0x09, 0xab, 0xd2, 0x6f, 0x04, 0x0b, 0x5f, 0xf4, 0x52, 0x91, 0x8f, 0xd6, 0x46, 0x3f, - 0x79, 0x81, 0xad, 0x0d, 0xbe, 0x45, 0x4f, 0x84, 0xbc, 0x72, 0xed, 0xe6, 0x17, 0x5a, 0xfc, 0xbc, - 0x96, 0x38, 0xa0, 0x0f, 0x0d, 0x18, 0x1a, 0x35, 0x76, 0x08, 0x06, 0x7f, 0x70, 0x87, 0x4d, 0x08, - 0x06, 0x9f, 0x72, 0x88, 0xd2, 0x5b, 0x21, 0x5b, 0x05, 0xf2, 0x1d, 0xa8, 0xc8, 0xd7, 0x6e, 0x6c, - 0x0c, 0xfe, 0xdd, 0x01, 0x12, 0x76, 0x25, 0x47, 0x09, 0x76, 0x99, 0x08, 0xe0, 0x97, 0x63, 0x65, - 0x60, 0x4f, 0xab, 0x46, 0xa6, 0x0d, 0x35, 0x18, 0x8c, 0x5a, 0x78, 0x3d, 0x65, 0x8e, 0x8f, 0x69, - 0x07, 0x86, 0xcd, 0xb3, 0x0e, 0x9a, 0x87, 0xef, 0xe3, 0xd0, 0x03, 0x3e, 0xbf, 0x2f, 0x5c, 0x17, - 0x68, 0xf1, 0xf9, 0x1b, 0xdc, 0xa1, 0xd0, 0xde, 0x40, 0xd0, 0x4b, 0x7c, 0xff, 0xf1, 0x9e, 0x9e, - 0x9b, 0x2a, 0xfe, 0x3c, 0xeb, 0x54, 0x0c, 0xba, 0xa2, 0x83, 0x24, 0x5b, 0xba, 0x1a, 0xc0, 0x61, - 0x44, 0x41, 0xd8, 0x84, 0x77, 0xef, 0xe4, 0x5c, 0x9a, 0xfc, 0x79, 0x0e, 0xad, 0x0a, 0xb1, 0xaf, - 0x94, 0xba, 0x6a, 0x42, 0xa5, 0x2b, 0xb1, 0x9d, 0x31, 0xa4, 0x4a, 0x1d, 0x42, 0x4e, 0xa2, 0xf8, - 0x2b, 0xab, 0x16, 0xe6, 0xbb, 0xa8, 0xd4, 0xdd, 0xc5, 0x55, 0x03, 0x37, 0x07, 0xe9, 0x0d, 0x1c, - 0x83, 0x73, 0xe0, 0xa8, 0x09, 0xf4, 0xd8, 0x18, 0xaa, 0x45, 0x5e, 0x2f, 0x1d, 0xed, 0xa5, 0x34, - 0x48, 0x17, 0xe5, 0x94, 0x67, 0x08, 0x40, 0x0f, 0xf8, 0x42, 0xe6, 0x4b, 0xaa, 0xe4, 0x59, 0x48, - 0xac, 0xac, 0x17, 0x56, 0xbf, 0xa7, 0x4a, 0xef, 0x08, 0xb9, 0xa9, 0x62, 0x6d, 0xde, 0x11, 0x61, - 0xfd, 0x5d, 0x92, 0xf1, 0xa3, 0x50, 0x74, 0xa5, 0x23, 0x13, 0x19, 0xd0, 0xc6, 0x3f, 0x73, 0xc0, - 0x6d, 0x07, 0xdb, 0x3b, 0x3f, 0xb9, 0x94, 0xf1, 0xd3, 0xbb, 0xbe, 0xd0, 0xb6, 0x80, 0xdf, 0x17, - 0x0e, 0x04, 0xcd, 0xca, 0x3c, 0x80, 0x2b, 0x03, 0x4f, 0xef, 0x66, 0x27, 0xb2, 0xa3, 0x36, 0x7f, - 0x5d, 0xc0, 0xcc, 0x45, 0xeb, 0x62, 0xab, 0x45, 0x0e, 0x49, 0xfe, 0xff, 0xe4, 0x10, 0x44, 0xd0, - 0xae, 0xa1, 0x4b, 0x8c, 0xc7, 0x4b, 0xec, 0x89, 0xbc, 0x27, 0x88, 0x74, 0x9d, 0x7d, 0xce, 0xa9, - 0xd2, 0x04, 0x27, 0x64, 0xe5, 0x15, 0x8f, 0x73, 0x54, 0x01, 0x67, 0x57, 0x5d, 0x39, 0xf0, 0xbe, - 0xd4, 0xc7, 0xdd, 0xa9, 0x33, 0xa7, 0x40, 0x2d, 0x20, 0xce, 0x1d, 0x33, 0x97, 0xb4, 0xe1, 0xc3, - 0xe4, 0x71, 0xc9, 0xe8, 0x09, 0x36, 0x58, 0xba, 0xde, 0x7f, 0x33, 0x7d, 0xe4, 0x52, 0x32, 0x36, - 0x08, 0x7a, 0x80, 0x36, 0x3c, 0x4d, 0x76, 0x0a, 0x1c, 0x13, 0x9b, 0x66, 0x01, 0x6a, 0x15, 0x0b, - 0xaf, 0x6b, 0x39, 0xab, 0x9e, 0xbc, 0x87, 0x59, 0x32, 0x3b, 0x42, 0x4a, 0x10, 0xdb, 0x52, 0xe0, - 0x7a, 0x04, 0xbe, 0xa7, 0x9f, 0x9b, 0x9a, 0xe3, 0x67, 0x03, 0xa5, 0x74, 0x92, 0x64, 0x39, 0x37, - 0x07, 0xdf, 0xcd, 0xa1, 0x65, 0xad, 0xca, 0xfe, 0x06, 0xb7, 0x2f, 0x48, 0xae, 0x45, 0xe4, 0x5c, - 0x01, 0xdd, 0xaa, 0xec, 0xc7, 0x7c, 0x00, 0xbb, 0xc7, 0x98, 0xc8, 0xe2, 0xeb, 0xe6, 0x83, 0xed, - 0xdd, 0x19, 0xf5, 0x92, 0x79, 0x2b, 0x25, 0x19, 0x1b, 0xd2, 0xa6, 0x0f, 0xa6, 0x2e, 0x74, 0x8b, - 0x99, 0xc8, 0x40, 0x32, 0x16, 0x99, 0x4b, 0x44, 0xc5, 0x74, 0xa4, 0x4f, 0x3b, 0x7b, 0x88, 0x70, - 0x55, 0xb0, 0xd3, 0x4d, 0x1f, 0xcc, 0xa8, 0x97, 0x64, 0x93, 0x14, 0x3c, 0xed, 0x1f, 0xf0, 0xb4, - 0x2a, 0xc1, 0x2d, 0x41, 0x77, 0xc7, 0x9e, 0x06, 0x77, 0x78, 0x0f, 0xbe, 0x26, 0x51, 0x04, 0x17, - 0xf9, 0xb2, 0xd3, 0xc4, 0x5a, 0xf2, 0x2e, 0xf5, 0xed, 0x11, 0x62, 0xa3, 0x99, 0xba, 0xa5, 0x9d, - 0x9e, 0x00, 0x4d, 0x30, 0x97, 0x93, 0xaf, 0x37, 0xf8, 0xde, 0xfa, 0x66, 0x4f, 0x68, 0x3d, 0xb1, - 0x54, 0xad, 0x07, 0x7a, 0x72, 0x36, 0x5d, 0xfe, 0x23, 0x0e, 0x15, 0xfa, 0x03, 0x5e, 0x30, 0x8f, - 0xc1, 0x91, 0x7a, 0x1f, 0xa7, 0x4a, 0xdd, 0x9c, 0x40, 0xc1, 0x62, 0x27, 0x29, 0x1b, 0x9b, 0xc0, - 0x2a, 0x1d, 0xda, 0xf0, 0x09, 0x2d, 0x92, 0xd8, 0xb4, 0x4d, 0x6a, 0x6c, 0xaa, 0x95, 0x77, 0xd5, - 0x36, 0x39, 0x6b, 0x2a, 0x1d, 0x6f, 0x6d, 0x97, 0xb7, 0xd6, 0xca, 0x77, 0x22, 0x3d, 0x0c, 0x54, - 0x1b, 0xfe, 0x54, 0x1f, 0x1b, 0xd0, 0xc6, 0x26, 0xc0, 0xb8, 0xe6, 0x70, 0xd5, 0xd7, 0xd4, 0x36, - 0xd4, 0xd6, 0xd7, 0xd4, 0xd6, 0x37, 0xed, 0x72, 0xd6, 0xed, 0x30, 0xf0, 0x1c, 0xa9, 0x23, 0x9f, - 0xa7, 0x3e, 0x23, 0x97, 0xd2, 0xa8, 0x6a, 0x09, 0x76, 0x37, 0x99, 0x56, 0x80, 0xbf, 0xc0, 0xa1, - 0xa5, 0x1e, 0xbc, 0x13, 0x92, 0x63, 0xf4, 0x1c, 0x27, 0x29, 0x97, 0x6d, 0xbf, 0x6c, 0x08, 0x2a, - 0x1d, 0x6e, 0x9f, 0x17, 0x4e, 0x1c, 0x49, 0x4e, 0xb1, 0x89, 0xba, 0x7e, 0x59, 0x62, 0x46, 0x62, - 0xd8, 0xd8, 0xd0, 0x67, 0x3f, 0xcc, 0xdd, 0x6e, 0x93, 0xb1, 0x38, 0xbb, 0x89, 0xeb, 0x27, 0x0d, - 0xc1, 0x88, 0x70, 0xdd, 0x99, 0x49, 0x43, 0x25, 0xc5, 0x47, 0x19, 0x32, 0xa1, 0xce, 0xf7, 0x73, - 0x68, 0x85, 0xcf, 0xa6, 0xfe, 0x96, 0x96, 0xe2, 0xaa, 0x96, 0xe5, 0x56, 0x35, 0x5b, 0x49, 0x06, - 0xe7, 0xbd, 0xac, 0xec, 0xe2, 0xb3, 0xa0, 0x9d, 0x10, 0xef, 0x1e, 0x53, 0xdc, 0xa0, 0xd7, 0x7f, - 0x32, 0x11, 0x72, 0x9f, 0x51, 0xce, 0xca, 0x58, 0xf6, 0xef, 0x17, 0xa3, 0xd5, 0x79, 0xfb, 0x83, - 0xff, 0x90, 0x43, 0x4b, 0x3b, 0x94, 0xa0, 0x2f, 0xe0, 0x25, 0xa7, 0xc5, 0xd8, 0x30, 0x4f, 0x40, - 0xa2, 0x1f, 0xd6, 0x24, 0xed, 0x26, 0x63, 0x3c, 0x8e, 0xdf, 0x66, 0x95, 0x49, 0x10, 0x99, 0x60, - 0xfc, 0xd3, 0xd1, 0x03, 0xda, 0x99, 0xeb, 0x73, 0x89, 0xd1, 0x8d, 0x95, 0x0e, 0xb1, 0xd2, 0xf1, - 0x7c, 0xa5, 0xe3, 0x85, 0x4a, 0xc7, 0x4f, 0x2a, 0x1d, 0x2f, 0x56, 0x3a, 0x5e, 0xaa, 0x74, 0xbc, - 0x5c, 0xe9, 0x78, 0xa5, 0xd2, 0xb1, 0x71, 0x43, 0xa5, 0x63, 0xe3, 0xc6, 0x4a, 0xc7, 0x46, 0xb1, - 0xd2, 0x21, 0xbe, 0x50, 0xe9, 0x78, 0xfe, 0xc5, 0x4a, 0xc7, 0x0b, 0x2f, 0x57, 0x3a, 0x5e, 0xdc, - 0x60, 0x68, 0x83, 0xa4, 0x5c, 0xfe, 0xe3, 0x45, 0xa8, 0x28, 0xa8, 0xf8, 0x95, 0xbd, 0x9b, 0xdb, - 0xdc, 0x2d, 0x44, 0x39, 0xea, 0x5d, 0xa4, 0x4a, 0x91, 0x45, 0x82, 0x05, 0x17, 0xff, 0xae, 0x80, - 0xec, 0x73, 0xb8, 0xf7, 0xf5, 0x0b, 0x87, 0xd2, 0xd3, 0x07, 0x73, 0x2b, 0x53, 0xbf, 0xbd, 0xc9, - 0xb5, 0xf9, 0xed, 0x5d, 0x52, 0x7d, 0xcd, 0x2e, 0x69, 0x47, 0xd3, 0xf6, 0x5d, 0x72, 0x6d, 0x7d, - 0xed, 0x5b, 0x73, 0x89, 0xd1, 0x4c, 0x64, 0x34, 0x75, 0xfe, 0x52, 0xfa, 0xf6, 0x21, 0x7d, 0xec, - 0x7c, 0x32, 0x76, 0x8c, 0x25, 0xf5, 0xaa, 0x83, 0xc9, 0xb4, 0x4d, 0xaa, 0xdf, 0x21, 0xd5, 0xcd, - 0x93, 0x6d, 0xd0, 0x96, 0xad, 0xc6, 0xd5, 0x28, 0x55, 0xd7, 0xd5, 0xee, 0x9a, 0x3f, 0x37, 0x9c, - 0x4a, 0xcc, 0x47, 0x60, 0x9d, 0xb9, 0x05, 0xe0, 0x16, 0xd8, 0xeb, 0xce, 0x12, 0xba, 0x13, 0xe9, - 0x49, 0x1f, 0xb9, 0x64, 0x48, 0xe9, 0xc3, 0x3d, 0x06, 0xfb, 0xc6, 0x8b, 0x23, 0x19, 0x8b, 0xcf, - 0xd3, 0xd4, 0xa8, 0x36, 0x36, 0x41, 0x2e, 0xce, 0xce, 0x9e, 0xce, 0x7c, 0x74, 0x56, 0xeb, 0xeb, - 0x4b, 0xdf, 0xf8, 0xd2, 0x18, 0xce, 0x03, 0x7d, 0xda, 0xc1, 0xaf, 0x92, 0xb1, 0x23, 0x70, 0xb3, - 0x0f, 0xf3, 0xcb, 0xab, 0xfa, 0xd8, 0x79, 0x6d, 0x64, 0x48, 0xbb, 0x7a, 0x50, 0x8f, 0x0e, 0xe8, - 0x63, 0xfd, 0x6c, 0xfd, 0x8c, 0x21, 0xb2, 0xfa, 0xbf, 0xec, 0xef, 0x1e, 0x46, 0x0f, 0xe6, 0xf1, - 0xbd, 0xe4, 0x7f, 0x8f, 0x56, 0xb7, 0xe5, 0x82, 0xe9, 0xa1, 0x3f, 0x7e, 0x11, 0x38, 0x3f, 0x86, - 0x58, 0xc5, 0x1e, 0x20, 0x80, 0xeb, 0x19, 0x3e, 0xbc, 0xcc, 0x39, 0xdf, 0x4f, 0xc6, 0x0e, 0xbb, - 0x6a, 0xe4, 0xfc, 0x54, 0xf8, 0x5f, 0xa3, 0x07, 0xed, 0x09, 0x0a, 0x73, 0xd0, 0x8f, 0xcd, 0x7f, - 0xf9, 0xd2, 0x45, 0x9e, 0x2d, 0x96, 0xd8, 0xf5, 0xf3, 0x21, 0x1a, 0xc2, 0x49, 0xce, 0x43, 0x23, - 0xed, 0xaa, 0xf4, 0x3e, 0xeb, 0x55, 0xf8, 0x1e, 0x71, 0xd8, 0x1b, 0x9f, 0xd0, 0x4f, 0x0d, 0xd1, - 0x4b, 0xc5, 0xda, 0xb5, 0x73, 0xc9, 0xf8, 0x90, 0xf6, 0xe1, 0xa7, 0xc9, 0xd8, 0xa7, 0xe0, 0x64, - 0x48, 0xdd, 0x0b, 0xe1, 0x53, 0xbb, 0x38, 0x08, 0xe1, 0x6e, 0x8c, 0x2c, 0xe0, 0x85, 0x18, 0x1b, - 0xd4, 0x4f, 0x4d, 0x1b, 0xdc, 0x7c, 0x9e, 0xe7, 0x03, 0x89, 0x4e, 0xbd, 0xf8, 0x4f, 0xa5, 0x53, - 0x2f, 0xf9, 0x53, 0xe9, 0xd4, 0x4b, 0xff, 0xfc, 0x3a, 0xf5, 0xb2, 0xbf, 0x8f, 0x3a, 0xf5, 0xdf, - 0x72, 0x79, 0x75, 0x6a, 0x08, 0x7e, 0x34, 0xc3, 0xa9, 0xd2, 0xcd, 0xfc, 0x3a, 0xf5, 0x85, 0xfc, - 0x3a, 0xf5, 0xf7, 0xaf, 0x41, 0x7f, 0x6b, 0x7d, 0xf8, 0x5e, 0xb4, 0xdc, 0xa2, 0x3f, 0xb7, 0x96, - 0xdb, 0xc9, 0x2a, 0xb9, 0xe8, 0x2e, 0x4a, 0xee, 0x6b, 0xaa, 0xb4, 0x89, 0x55, 0x72, 0xab, 0xee, - 0x4b, 0xc9, 0x65, 0xb5, 0xd5, 0x9e, 0x5c, 0x71, 0xa2, 0xf8, 0x9e, 0xc5, 0x09, 0xec, 0xe2, 0x99, - 0x2d, 0x4e, 0x3c, 0x95, 0x57, 0x9c, 0xd0, 0x66, 0xe2, 0xe9, 0xa9, 0xa9, 0xfc, 0x82, 0x84, 0x4d, - 0x18, 0xa7, 0xfa, 0xeb, 0xf2, 0x7c, 0xc2, 0x38, 0xd5, 0x5f, 0x9f, 0x58, 0x50, 0x7f, 0xcd, 0xa7, - 0x9d, 0x4e, 0xe7, 0xd3, 0x4e, 0x4b, 0xb0, 0x76, 0xda, 0xc3, 0xa9, 0xd2, 0xef, 0xf3, 0xa8, 0xa7, - 0xad, 0xdf, 0x56, 0x3d, 0xa5, 0x33, 0x01, 0xf4, 0x54, 0x6d, 0xa4, 0x97, 0x7a, 0xb3, 0x93, 0x53, - 0xec, 0xd8, 0x24, 0x89, 0x3c, 0x35, 0x3a, 0xbf, 0xb6, 0x6a, 0xb3, 0x24, 0xac, 0xf8, 0x53, 0x58, - 0x12, 0x0e, 0xe7, 0xd5, 0x8f, 0xe1, 0x3c, 0xfd, 0x57, 0xaa, 0xf4, 0x76, 0x3e, 0xfd, 0xb8, 0xe6, - 0x5b, 0xe8, 0xc7, 0xfb, 0x3b, 0xfd, 0x61, 0x1f, 0x91, 0x4a, 0xf0, 0xdd, 0xc1, 0x7b, 0x56, 0x8f, - 0x57, 0xfd, 0x89, 0xd5, 0xe3, 0x10, 0x2a, 0x34, 0x34, 0x3c, 0x63, 0xe5, 0x11, 0x4f, 0x74, 0x6c, - 0x51, 0xa1, 0x40, 0xf1, 0x8d, 0xd4, 0xcc, 0x70, 0xfa, 0xf6, 0x21, 0x47, 0xb5, 0x3b, 0xa4, 0xbc, - 0xf8, 0x82, 0x23, 0x95, 0x38, 0x91, 0xba, 0xd0, 0x0d, 0xf1, 0x5d, 0xad, 0xd0, 0x27, 0x78, 0x75, - 0x1a, 0x8b, 0x12, 0x7b, 0xf9, 0x64, 0x8e, 0xdf, 0xd6, 0xe2, 0x97, 0x8d, 0xe5, 0x78, 0xa3, 0x2f, - 0x7d, 0xfb, 0xd0, 0xc6, 0x17, 0xb7, 0x56, 0x1b, 0x32, 0x10, 0xa5, 0x99, 0x5f, 0x39, 0xe5, 0xbf, - 0x67, 0xe5, 0xf4, 0x32, 0x87, 0x0a, 0x43, 0x4a, 0x9b, 0xe2, 0x09, 0x07, 0x82, 0xa5, 0x0f, 0x62, - 0x86, 0xb3, 0xf1, 0x1e, 0xee, 0xc0, 0xac, 0x6b, 0x24, 0x79, 0xc0, 0x6b, 0x17, 0x7a, 0xc3, 0xa4, - 0x23, 0xbe, 0x41, 0x24, 0x2d, 0x6c, 0x30, 0x33, 0xa1, 0xa9, 0xd1, 0x5e, 0xd8, 0x7d, 0x40, 0x95, - 0xa9, 0x34, 0x04, 0x92, 0x81, 0x41, 0xeb, 0xf9, 0x7a, 0xd3, 0x03, 0x1a, 0xf2, 0x02, 0xaa, 0x4c, - 0x69, 0xfe, 0xbd, 0xd0, 0xa2, 0x19, 0xc5, 0x70, 0xf5, 0xdf, 0x4f, 0xc5, 0x70, 0xcd, 0xab, 0xa8, - 0xc4, 0x36, 0x34, 0xf7, 0xe3, 0x41, 0x5c, 0xf6, 0x9f, 0x38, 0xb4, 0x8c, 0x74, 0x22, 0xff, 0x0a, - 0x5a, 0xd2, 0xaa, 0xec, 0xa7, 0x82, 0x35, 0x8e, 0x2b, 0x09, 0x10, 0xf1, 0x11, 0xe8, 0x17, 0xf0, - 0xfc, 0xbb, 0xdd, 0x67, 0xf0, 0x3b, 0x6c, 0x06, 0x95, 0x21, 0x9d, 0xdf, 0x8a, 0x8a, 0x5a, 0x95, - 0xfd, 0x8d, 0x8a, 0x27, 0xa8, 0x84, 0x89, 0x60, 0x8c, 0x1d, 0x42, 0x2d, 0xa8, 0xf8, 0x44, 0xab, - 0xb2, 0x9f, 0x1d, 0x91, 0xf2, 0x66, 0xbc, 0x70, 0xc0, 0xb3, 0xbb, 0x42, 0xb6, 0x30, 0x09, 0xb1, - 0x06, 0x7c, 0x54, 0x46, 0xc4, 0x61, 0x4a, 0x0c, 0xa0, 0x98, 0x98, 0xd6, 0xf7, 0xf9, 0x42, 0xc4, - 0x00, 0xb3, 0xec, 0x6f, 0x38, 0x54, 0x44, 0x79, 0x25, 0xff, 0x73, 0xb4, 0x0c, 0x98, 0x9e, 0xd9, - 0xc8, 0x1f, 0xab, 0x52, 0x99, 0x60, 0xc2, 0xc4, 0x47, 0x80, 0x3f, 0xe6, 0x36, 0xd3, 0xc4, 0xe0, - 0x5f, 0x22, 0xac, 0x99, 0xd1, 0x00, 0x70, 0x38, 0x30, 0x0b, 0x2a, 0x16, 0x01, 0x11, 0x6d, 0x64, - 0x50, 0xb6, 0xa0, 0xbc, 0x87, 0x64, 0xc4, 0xb2, 0xd5, 0x22, 0x2b, 0x1c, 0x87, 0x05, 0x15, 0x7f, - 0x02, 0x19, 0xc9, 0x85, 0x82, 0x86, 0x1d, 0xd5, 0x75, 0x2e, 0xe7, 0x2e, 0xd7, 0x36, 0x69, 0x4b, - 0xed, 0xfa, 0x06, 0xd9, 0xb5, 0x53, 0x6a, 0xaa, 0x25, 0x5f, 0xdb, 0x24, 0x79, 0x6b, 0x6d, 0x13, - 0x7c, 0x54, 0xc8, 0x16, 0x85, 0xb2, 0xff, 0x5c, 0x85, 0x4a, 0xc9, 0xdd, 0x74, 0xc6, 0x69, 0x7a, - 0x3b, 0xc4, 0x16, 0xf9, 0x0d, 0x66, 0xf1, 0x1e, 0x77, 0x9b, 0x52, 0x13, 0xd8, 0xeb, 0xb7, 0xc5, - 0x2a, 0x70, 0xaa, 0xd2, 0xeb, 0x42, 0x6e, 0xaa, 0xf8, 0x1c, 0xbe, 0xab, 0x57, 0xe5, 0x0d, 0xec, - 0xf5, 0x57, 0xc1, 0x05, 0x3e, 0x6f, 0xa5, 0x79, 0xf3, 0x1b, 0x87, 0x70, 0xc2, 0x5e, 0x64, 0xe4, - 0x5e, 0x42, 0x6e, 0x7e, 0x7e, 0x2f, 0x2a, 0x54, 0xf6, 0x75, 0xb8, 0xfd, 0x5e, 0x85, 0x44, 0x16, - 0x03, 0xdb, 0x13, 0x05, 0x8a, 0x75, 0xe6, 0xaf, 0x4a, 0x70, 0xfb, 0x4a, 0x4d, 0x9d, 0xd4, 0xbf, - 0x3c, 0x3e, 0x97, 0x88, 0xb2, 0x9e, 0x22, 0x41, 0xb7, 0xdf, 0x1b, 0x68, 0xaf, 0x74, 0xb4, 0x29, - 0xee, 0x50, 0xb8, 0x6a, 0xaf, 0x3b, 0x14, 0x56, 0x2a, 0x1d, 0xed, 0x81, 0x50, 0xb8, 0xaa, 0x23, - 0xe0, 0x0d, 0x55, 0x3a, 0x3a, 0x82, 0xbe, 0x80, 0xb1, 0x7f, 0xc8, 0x94, 0x2e, 0xff, 0x01, 0xe2, - 0xdb, 0xdd, 0xfb, 0x6a, 0xdb, 0x3b, 0xc2, 0xfb, 0xab, 0x3b, 0xdb, 0x5a, 0x21, 0xa6, 0x34, 0xf1, - 0xa5, 0xc6, 0xae, 0x21, 0x79, 0x92, 0xc5, 0x8d, 0xed, 0xee, 0x7d, 0x55, 0x8a, 0x01, 0xac, 0x6a, - 0xee, 0x6c, 0x6b, 0xad, 0xf2, 0x62, 0x70, 0xa5, 0x36, 0x78, 0x5c, 0xff, 0x7c, 0x9c, 0x38, 0xcc, - 0x61, 0x3e, 0x6e, 0xb9, 0x1a, 0xe5, 0x21, 0xc3, 0xff, 0x16, 0xad, 0x08, 0x99, 0xfd, 0x50, 0xa3, - 0xb4, 0xb9, 0xf7, 0x13, 0x5d, 0x0a, 0x4b, 0x92, 0x59, 0x49, 0xe2, 0xcf, 0x88, 0x65, 0x0a, 0x1c, - 0x6e, 0x47, 0x86, 0xb4, 0x8b, 0xa3, 0x99, 0xe3, 0xb7, 0xc1, 0xef, 0xca, 0xd8, 0x9b, 0xae, 0x1c, - 0xd1, 0xfa, 0x2f, 0x6a, 0x53, 0xc4, 0x5f, 0x8f, 0x8a, 0xf9, 0x1b, 0x37, 0x80, 0x6b, 0xa2, 0x9c, - 0x45, 0x8f, 0xff, 0xef, 0x38, 0xb4, 0x9a, 0x82, 0x76, 0xf8, 0xfd, 0x8a, 0xe2, 0x55, 0xbc, 0xf8, - 0x36, 0x1b, 0xe8, 0x59, 0x51, 0x4e, 0x95, 0xfa, 0x39, 0x21, 0x3f, 0x8e, 0x18, 0x60, 0xc6, 0xbb, - 0x93, 0x24, 0x54, 0x85, 0x7d, 0xed, 0x4a, 0x25, 0xb8, 0x6e, 0x41, 0x2d, 0x52, 0x93, 0x03, 0xda, - 0xd7, 0x7d, 0x50, 0x47, 0x83, 0x35, 0x11, 0xbb, 0xe1, 0xb9, 0xd4, 0xcc, 0x64, 0xea, 0x93, 0x78, - 0xe6, 0xe4, 0x17, 0xda, 0xc5, 0x51, 0xed, 0xea, 0x51, 0xa8, 0xa1, 0x36, 0x32, 0x94, 0xfe, 0xe8, - 0xb3, 0xf9, 0xaa, 0x9f, 0xbf, 0x1e, 0xfc, 0x7f, 0xe5, 0xd0, 0x13, 0x56, 0x4a, 0xd8, 0xd7, 0xe6, - 0xfb, 0x00, 0xef, 0x41, 0x4d, 0x7b, 0x82, 0x8a, 0x7b, 0x4f, 0xa0, 0xcd, 0x4b, 0x94, 0xb9, 0x4f, - 0x38, 0x55, 0xba, 0xc4, 0x09, 0x0b, 0xe3, 0x8a, 0x07, 0x38, 0xb6, 0x59, 0x16, 0x46, 0x55, 0x78, - 0x4f, 0x50, 0x09, 0x19, 0x28, 0x95, 0xe9, 0x2b, 0x97, 0xb5, 0xe1, 0xa3, 0x64, 0x3a, 0xe3, 0x5b, - 0x26, 0x99, 0x53, 0xfd, 0xd8, 0x68, 0x62, 0x36, 0x8f, 0xb9, 0x7b, 0x95, 0x39, 0x34, 0x9c, 0x9c, - 0x1d, 0x32, 0x14, 0x6f, 0xdc, 0xce, 0xd4, 0xe9, 0xaf, 0xb5, 0xfe, 0x83, 0xfa, 0xf4, 0x31, 0x18, - 0x29, 0x08, 0x1f, 0x96, 0x39, 0xf9, 0x05, 0xeb, 0x57, 0xf4, 0x93, 0x0d, 0xf2, 0xc2, 0x95, 0x34, - 0xd4, 0x92, 0x47, 0x43, 0xad, 0xbe, 0x8e, 0xfa, 0x80, 0x57, 0x09, 0xbd, 0xe5, 0x0b, 0xef, 0xa9, - 0x0b, 0x78, 0xdc, 0x6d, 0x8d, 0xe1, 0x40, 0xd0, 0xdd, 0x02, 0x8a, 0x63, 0x21, 0x78, 0xd9, 0xcd, - 0x8f, 0x25, 0xae, 0x87, 0x8b, 0x0c, 0xfa, 0xd8, 0x80, 0x3e, 0xf6, 0xb9, 0x36, 0x76, 0x15, 0xd8, - 0xa1, 0xb1, 0xed, 0xe0, 0x36, 0xb0, 0x15, 0x82, 0x5b, 0xb9, 0xf3, 0xd3, 0xe2, 0xcf, 0x71, 0xe8, - 0x11, 0x5b, 0x2a, 0x38, 0x2d, 0x35, 0x04, 0xbc, 0x21, 0x12, 0x28, 0xc2, 0xab, 0x4a, 0x6e, 0x61, - 0x3e, 0x1c, 0x71, 0x33, 0xd4, 0xa5, 0xb5, 0xb3, 0x59, 0xa9, 0x02, 0x6d, 0xc7, 0x51, 0xdf, 0x98, - 0x8c, 0x1d, 0xc9, 0x9c, 0x3d, 0x57, 0xe3, 0x56, 0xda, 0x03, 0xfe, 0x46, 0x25, 0x0c, 0x71, 0x5b, - 0x52, 0xa3, 0xbd, 0x0d, 0x01, 0x6f, 0x6e, 0x2d, 0xa1, 0x8a, 0xf3, 0x15, 0x60, 0x48, 0x89, 0x8f, - 0xf9, 0x5a, 0xfc, 0x81, 0xa0, 0x42, 0xe9, 0x85, 0x98, 0x9e, 0xc5, 0x8a, 0x5d, 0x61, 0xf5, 0xeb, - 0xaa, 0xf4, 0x9a, 0xb0, 0x10, 0x9e, 0xb8, 0x16, 0x2a, 0x6a, 0x55, 0xca, 0xbc, 0x23, 0x96, 0x9e, - 0x1a, 0x4f, 0x4d, 0x9d, 0x94, 0x17, 0xca, 0x6c, 0x88, 0x28, 0x0f, 0x06, 0x5a, 0x9b, 0x02, 0x61, - 0x77, 0xdb, 0x0e, 0x7f, 0x50, 0x71, 0x7b, 0xf7, 0x3b, 0xb1, 0x13, 0x17, 0xb2, 0xee, 0x1f, 0xe4, - 0x4b, 0x17, 0x7f, 0x12, 0x68, 0xad, 0x0a, 0x1b, 0xd0, 0xaa, 0x4e, 0x00, 0x57, 0xe1, 0xd7, 0x0b, - 0x2b, 0x81, 0xad, 0x3a, 0x08, 0xd0, 0x41, 0xe4, 0x98, 0xd1, 0x5e, 0xe2, 0xf9, 0x90, 0x8f, 0x16, - 0xff, 0x07, 0x0e, 0x3d, 0xda, 0xee, 0xde, 0xc7, 0x26, 0x34, 0x28, 0x41, 0x8f, 0xe2, 0x0f, 0x1b, - 0x33, 0xa7, 0x18, 0xd7, 0xe4, 0x43, 0x4e, 0x95, 0x86, 0x39, 0x61, 0x7e, 0x3c, 0x31, 0x68, 0x30, - 0x3f, 0x7b, 0x95, 0x3a, 0x68, 0x6a, 0x25, 0x01, 0x91, 0xb5, 0x80, 0xa5, 0x57, 0xc2, 0xb8, 0x22, - 0x33, 0xb4, 0x92, 0x74, 0x21, 0x18, 0xab, 0x06, 0xe3, 0xe8, 0x93, 0x17, 0x61, 0x1d, 0x69, 0xfd, - 0xa7, 0xb5, 0xee, 0x31, 0x7d, 0xf2, 0x23, 0xd6, 0xc7, 0x57, 0x9e, 0xbf, 0x3a, 0xbc, 0xca, 0xa1, - 0x87, 0x18, 0xde, 0x80, 0x93, 0xe9, 0x23, 0x76, 0x25, 0xd5, 0xbf, 0x56, 0xa5, 0x77, 0x85, 0xbc, - 0x08, 0xa2, 0xd3, 0xc6, 0xc3, 0xa0, 0x25, 0x98, 0x85, 0xd9, 0xda, 0x90, 0x97, 0x93, 0x81, 0x19, - 0x3a, 0x75, 0x45, 0x95, 0xf3, 0x92, 0xe6, 0xff, 0x67, 0x0e, 0x3d, 0x66, 0x50, 0x69, 0xf1, 0x19, - 0x3b, 0xac, 0x82, 0xef, 0x2a, 0xca, 0x4a, 0x7b, 0xa0, 0xcb, 0xdd, 0x46, 0x2f, 0x14, 0x97, 0x54, - 0x1f, 0xe7, 0x54, 0xe9, 0x28, 0x27, 0x2c, 0x84, 0x29, 0x06, 0xcd, 0x68, 0x67, 0x6e, 0xf3, 0x42, - 0x7c, 0x10, 0xea, 0x62, 0xe3, 0xff, 0x57, 0x0f, 0xc2, 0xfb, 0x00, 0xfa, 0xd8, 0xa7, 0xda, 0xd8, - 0x84, 0xb1, 0x94, 0x0c, 0xdd, 0x59, 0x09, 0x25, 0x63, 0x93, 0xfa, 0x97, 0x13, 0xda, 0xc1, 0x68, - 0xee, 0xa2, 0x79, 0x9e, 0x70, 0x56, 0x43, 0xe7, 0xc0, 0x46, 0x12, 0xfd, 0x8b, 0x71, 0x72, 0x63, - 0x74, 0xa1, 0x0a, 0xf1, 0xf5, 0xac, 0x09, 0x72, 0x85, 0x19, 0x3d, 0xb8, 0x8a, 0x35, 0x41, 0x3a, - 0xc0, 0x62, 0x08, 0xc2, 0x11, 0x8d, 0x4d, 0x30, 0x8f, 0x15, 0x71, 0x1b, 0x1b, 0xec, 0x60, 0xa5, - 0x15, 0xad, 0x88, 0x09, 0x76, 0xf0, 0x24, 0x13, 0xc6, 0xc0, 0x46, 0x32, 0x4f, 0x68, 0x03, 0x26, - 0x16, 0xdf, 0xaa, 0xfb, 0x8a, 0xc5, 0xe7, 0xb4, 0xdd, 0xf8, 0x7e, 0x80, 0x09, 0x98, 0x6e, 0x81, - 0x45, 0x3e, 0xeb, 0x3e, 0x18, 0x0e, 0x8e, 0xc7, 0x5c, 0x0b, 0x67, 0x02, 0xfa, 0xf1, 0xf7, 0x15, - 0xd0, 0xcf, 0x69, 0xbb, 0x4f, 0xfe, 0x20, 0x53, 0x3a, 0x13, 0x94, 0x8f, 0x67, 0xb3, 0xe7, 0x09, - 0xcd, 0xf7, 0xd7, 0xec, 0x45, 0x6f, 0xb8, 0x62, 0x7b, 0x9b, 0x53, 0xa5, 0x19, 0xf6, 0xa2, 0xf7, - 0x14, 0x97, 0x2b, 0xf6, 0xfd, 0x40, 0x6e, 0x7c, 0x4f, 0x70, 0xb9, 0x11, 0x27, 0x56, 0x63, 0xde, - 0xfd, 0x3b, 0x55, 0xfa, 0x6d, 0x6e, 0xc4, 0x89, 0x3d, 0xac, 0x5a, 0x4f, 0xd9, 0x09, 0x15, 0x30, - 0x48, 0x24, 0x8a, 0x91, 0xa1, 0x64, 0x62, 0x54, 0x1b, 0xc3, 0xf1, 0x37, 0xf1, 0x7c, 0xca, 0x1c, - 0x98, 0x48, 0xcd, 0x7e, 0xe1, 0xc8, 0xed, 0x26, 0x47, 0x6a, 0xa6, 0x37, 0x39, 0x73, 0x83, 0xdd, - 0x1c, 0x1d, 0xf3, 0xc4, 0xac, 0xf8, 0x17, 0x1c, 0x7a, 0xb0, 0xb9, 0x73, 0xf7, 0x6e, 0x25, 0x68, - 0xc6, 0x2f, 0x82, 0xb0, 0x2f, 0x0f, 0xb3, 0xeb, 0x3e, 0x1f, 0x86, 0xf8, 0x01, 0x00, 0xab, 0xcc, - 0xdb, 0xdd, 0x55, 0x58, 0xa7, 0x26, 0x62, 0x07, 0x70, 0x43, 0x56, 0xec, 0x60, 0x39, 0x29, 0xb9, - 0x09, 0xc1, 0xc8, 0x1f, 0xa9, 0xa1, 0x43, 0xc0, 0x5e, 0xc1, 0x08, 0x0c, 0x71, 0x49, 0x59, 0x52, - 0xb4, 0x2d, 0x8e, 0x8d, 0x1b, 0x36, 0xc8, 0xf9, 0x2a, 0xc4, 0x5f, 0x84, 0x4d, 0x63, 0x4b, 0xd0, - 0xed, 0x51, 0x76, 0x77, 0xb6, 0x35, 0x29, 0xc1, 0x76, 0x9f, 0x1f, 0xef, 0x69, 0x8d, 0x8a, 0x07, - 0x9f, 0x81, 0x96, 0x54, 0xef, 0x56, 0x25, 0x8f, 0x30, 0x3f, 0x96, 0xb8, 0xd9, 0xd8, 0x32, 0x5a, - 0x48, 0x5a, 0x55, 0xd8, 0x4a, 0xac, 0x0a, 0x29, 0x9e, 0x4a, 0x7a, 0xc3, 0xc4, 0x98, 0x7b, 0x98, - 0xb7, 0x39, 0x1a, 0x02, 0x5e, 0x47, 0x26, 0x12, 0xd1, 0x0e, 0xc5, 0xf5, 0xb1, 0x08, 0x65, 0x73, - 0xf2, 0xfc, 0x45, 0xf0, 0xbd, 0x1c, 0x5a, 0x1e, 0xf2, 0xb8, 0xfd, 0xd8, 0x06, 0xd9, 0xe5, 0x6e, - 0xc3, 0x47, 0x9e, 0x25, 0xd5, 0xff, 0x48, 0x95, 0xde, 0x13, 0x6c, 0x09, 0xe2, 0x36, 0xe3, 0xab, - 0xca, 0x47, 0x3e, 0x2b, 0xb3, 0x26, 0x86, 0xfe, 0x71, 0x44, 0xff, 0xea, 0x08, 0x94, 0x67, 0xfc, - 0x1f, 0x3d, 0x46, 0xd9, 0xbd, 0x21, 0xaf, 0x5d, 0x51, 0x6d, 0xc3, 0xbf, 0x71, 0x83, 0x6c, 0x23, - 0x6e, 0x08, 0x43, 0x0f, 0xb5, 0xbb, 0xf7, 0xe1, 0x40, 0x47, 0xc6, 0xbc, 0x0d, 0x19, 0xa2, 0x9b, - 0xb1, 0xa4, 0x1f, 0xc5, 0xd5, 0x79, 0x5f, 0x95, 0x5a, 0x84, 0xbc, 0x08, 0xe2, 0x76, 0xa3, 0x8f, - 0xfc, 0x01, 0xaf, 0x52, 0xd5, 0x61, 0xc2, 0x61, 0x37, 0x82, 0x2e, 0x21, 0x9a, 0x04, 0x36, 0x61, - 0xb3, 0x7d, 0xc2, 0x6e, 0x46, 0xd6, 0x68, 0xbe, 0xb2, 0x61, 0x83, 0x9c, 0xb7, 0x18, 0x43, 0x0e, - 0x59, 0x89, 0xe7, 0xe8, 0x8e, 0x8e, 0xcd, 0xc1, 0x40, 0xfb, 0x3b, 0x4a, 0x30, 0x50, 0xba, 0x06, - 0x2f, 0x22, 0x6c, 0xa7, 0xc9, 0x4e, 0x13, 0x25, 0xd8, 0x24, 0x3b, 0x3b, 0xaa, 0x76, 0x07, 0x03, - 0xed, 0x55, 0x1f, 0x28, 0xc1, 0x00, 0x91, 0x3d, 0xd8, 0x0d, 0x7a, 0x2e, 0xd1, 0x0f, 0x71, 0x6d, - 0x1d, 0xac, 0x38, 0x82, 0x87, 0x74, 0x40, 0xce, 0xa6, 0xc9, 0x9f, 0xe5, 0xd0, 0xc3, 0x76, 0x6d, - 0x44, 0xda, 0x6d, 0x2c, 0x35, 0xaf, 0xb7, 0xf4, 0x31, 0xeb, 0xe8, 0x65, 0x1e, 0x14, 0xf1, 0x0d, - 0x66, 0xdb, 0xf6, 0x1a, 0x29, 0x55, 0xee, 0xdd, 0x78, 0x83, 0xf4, 0x7a, 0x2b, 0x2d, 0xed, 0xa8, - 0xff, 0xa2, 0x7e, 0x62, 0xd2, 0xba, 0xed, 0x94, 0x33, 0x98, 0xc6, 0xde, 0x3d, 0x4f, 0x09, 0xfc, - 0x65, 0x43, 0xc2, 0xce, 0x4d, 0x22, 0xba, 0xe1, 0xe3, 0xb8, 0x8a, 0x38, 0x88, 0xe8, 0xfc, 0x58, - 0xf3, 0xd6, 0x92, 0xa8, 0x8a, 0xa0, 0x04, 0x25, 0x63, 0x17, 0x2d, 0x85, 0x71, 0xbe, 0x5a, 0xce, - 0x5f, 0x08, 0x3f, 0xc9, 0xa1, 0x35, 0x79, 0x52, 0x37, 0xbb, 0x7d, 0x6d, 0x9d, 0x41, 0xa5, 0xf4, - 0x09, 0x5c, 0x53, 0x7c, 0x40, 0xb8, 0x00, 0x9a, 0x58, 0x37, 0x4f, 0x55, 0x77, 0x43, 0x3a, 0x59, - 0x9f, 0x70, 0xaf, 0x50, 0x1b, 0x19, 0x82, 0xeb, 0x93, 0xf3, 0x56, 0x77, 0x81, 0x92, 0xf8, 0x9e, - 0x02, 0xe4, 0xa0, 0xc9, 0x5b, 0x3a, 0x3a, 0xb3, 0xf4, 0x1b, 0xac, 0x61, 0x95, 0xae, 0xc5, 0xb5, - 0xfe, 0x8a, 0x53, 0xa5, 0x6b, 0x9c, 0x70, 0x57, 0x74, 0x31, 0xca, 0xea, 0x6c, 0x2d, 0x1d, 0x9d, - 0xf7, 0xa9, 0xb7, 0x95, 0x6f, 0x69, 0xd8, 0x51, 0xf1, 0x3d, 0x2a, 0x6f, 0x77, 0xad, 0x30, 0x8e, - 0x47, 0x4b, 0x02, 0x97, 0x3c, 0xc9, 0xc4, 0xa3, 0x25, 0x71, 0x4b, 0xde, 0x85, 0xf8, 0x24, 0x95, - 0x8e, 0xfa, 0xed, 0xf2, 0x36, 0xa9, 0x6e, 0x93, 0x3e, 0xf9, 0xb1, 0x16, 0x8b, 0xcd, 0x25, 0xa2, - 0x3b, 0x1a, 0x6a, 0x70, 0xa4, 0x91, 0x4d, 0xe4, 0xf1, 0xb4, 0xd8, 0xa4, 0x09, 0xac, 0xad, 0xda, - 0x2c, 0xb9, 0xea, 0x6a, 0x6b, 0x48, 0x0a, 0x0c, 0xd4, 0x5c, 0x22, 0x4a, 0xee, 0xf2, 0x6d, 0xd2, - 0x6e, 0x7e, 0x01, 0x22, 0x35, 0x0d, 0x38, 0xe2, 0x44, 0xcb, 0x95, 0x60, 0x30, 0x10, 0xdc, 0x46, - 0x02, 0xdd, 0x3b, 0x70, 0x3d, 0x9e, 0x54, 0xa5, 0xc7, 0x05, 0x5b, 0x82, 0xb8, 0xdc, 0x16, 0xe7, - 0xde, 0x96, 0xc6, 0xff, 0x3b, 0x0e, 0x3d, 0x6c, 0xdf, 0x30, 0x9c, 0x1d, 0x9d, 0xb0, 0xcd, 0x3d, - 0x85, 0x87, 0xf0, 0x14, 0xa7, 0x4a, 0xc7, 0x38, 0x61, 0x1e, 0xa4, 0x3f, 0xeb, 0x4e, 0x37, 0x4f, - 0x9d, 0xf2, 0xb4, 0x69, 0x9b, 0xd2, 0x0e, 0x6d, 0x2a, 0x5b, 0xa0, 0x4d, 0x26, 0xd2, 0xdf, 0xa7, - 0x36, 0x99, 0x75, 0xe2, 0x03, 0x68, 0x69, 0x7b, 0x00, 0x5f, 0xe2, 0x7b, 0x3a, 0x7f, 0xd0, 0xee, - 0x6d, 0x38, 0x15, 0x5b, 0xc7, 0xf1, 0x85, 0x4b, 0x82, 0x2e, 0xae, 0x83, 0xbf, 0x10, 0x58, 0xc6, - 0x34, 0x8e, 0x3b, 0x25, 0xb2, 0x52, 0x66, 0x3f, 0x4f, 0x5d, 0x99, 0x61, 0xd3, 0x64, 0x92, 0x8f, - 0xff, 0x3d, 0x5a, 0xb6, 0x57, 0x69, 0xde, 0x13, 0x08, 0xb4, 0x96, 0xfe, 0x28, 0x7f, 0x04, 0xd8, - 0xb7, 0x20, 0x19, 0x87, 0x9d, 0xc3, 0x81, 0x6e, 0xcc, 0x0c, 0xe2, 0x26, 0xa7, 0xe4, 0x20, 0xbf, - 0xc1, 0xf6, 0x9d, 0x15, 0x76, 0x99, 0x39, 0x32, 0xcb, 0x9c, 0x3d, 0x67, 0xc3, 0x94, 0x4d, 0x22, - 0xfc, 0xbf, 0xe6, 0xd0, 0xe3, 0xca, 0xbe, 0x0e, 0xc5, 0xef, 0x35, 0xa4, 0xb2, 0x86, 0x80, 0x37, - 0xd4, 0x40, 0x0c, 0x7f, 0xce, 0xce, 0x70, 0x60, 0xf7, 0xee, 0xd2, 0x1f, 0x3b, 0xb8, 0xf2, 0x25, - 0xe6, 0xf5, 0xfb, 0x05, 0x51, 0x45, 0x0f, 0x3d, 0xbc, 0x07, 0x66, 0xa0, 0x4f, 0x5e, 0x34, 0x06, - 0x6e, 0xb4, 0xd7, 0xd1, 0x11, 0xf0, 0xce, 0x25, 0xa2, 0x46, 0x56, 0x43, 0x36, 0x4c, 0xc6, 0x06, - 0x93, 0x89, 0xd1, 0xac, 0xd1, 0xa1, 0x9c, 0x3d, 0x99, 0x18, 0x4d, 0x9d, 0xb9, 0xae, 0x0f, 0x5d, - 0x72, 0xb4, 0xfa, 0xda, 0xda, 0x8c, 0x5e, 0xa4, 0xb7, 0x60, 0xaa, 0x36, 0x6e, 0x90, 0x17, 0xac, - 0x82, 0xa1, 0xe1, 0xf2, 0x7e, 0x65, 0x6f, 0x43, 0xc0, 0xdb, 0x08, 0x1b, 0x29, 0xd8, 0x0a, 0x9f, - 0xc1, 0x13, 0xb2, 0x59, 0x95, 0x7e, 0x29, 0xe4, 0x49, 0x16, 0xab, 0x73, 0x61, 0x86, 0xaa, 0x77, - 0xe2, 0x6a, 0x47, 0xc0, 0xab, 0xcd, 0xc4, 0x53, 0x9f, 0x1d, 0xd1, 0x2e, 0x8e, 0x26, 0x6f, 0xf5, - 0x25, 0x6f, 0x1d, 0xd1, 0x46, 0x86, 0xf4, 0x81, 0x41, 0xa8, 0xbb, 0x53, 0x32, 0x7b, 0xd9, 0xb1, - 0xe1, 0x9b, 0xea, 0xc5, 0x42, 0x41, 0xf9, 0x5f, 0xc8, 0x79, 0xc8, 0x1b, 0x82, 0x0e, 0xef, 0x55, - 0xba, 0x7c, 0x1e, 0xa5, 0x21, 0x10, 0x68, 0xa3, 0xb1, 0xc0, 0x9f, 0xc5, 0x9c, 0xc4, 0xaf, 0x4a, - 0xad, 0x42, 0x9e, 0x64, 0x71, 0x47, 0x2e, 0x8c, 0x86, 0x6a, 0x21, 0xb1, 0x76, 0x23, 0x7d, 0x95, - 0x8e, 0x64, 0x6c, 0x26, 0x7d, 0xb9, 0x5b, 0x8b, 0x1f, 0xa3, 0x0f, 0x04, 0xa4, 0x2e, 0x1c, 0x4b, - 0xc6, 0x8f, 0x26, 0xe3, 0x57, 0xb4, 0x0f, 0xbb, 0xb5, 0xe8, 0x09, 0x5a, 0x47, 0x7c, 0x4c, 0x28, - 0xe7, 0x29, 0xaa, 0xec, 0x0e, 0x87, 0x8a, 0x99, 0x79, 0xc6, 0xcb, 0x6c, 0x54, 0x40, 0x88, 0xf2, - 0x8a, 0x01, 0xe2, 0xf3, 0xd9, 0x53, 0xae, 0x9c, 0x9c, 0x3e, 0x99, 0x85, 0x25, 0x67, 0xfa, 0x20, - 0xf0, 0xe1, 0x5b, 0x4a, 0x33, 0x60, 0x54, 0x90, 0xa8, 0x82, 0x5b, 0xd0, 0x52, 0xfc, 0x34, 0x4f, - 0x90, 0x0d, 0xb3, 0x4b, 0x40, 0x62, 0x59, 0x36, 0x5d, 0x80, 0xdb, 0xee, 0x28, 0x13, 0x5c, 0xfe, - 0x25, 0xb4, 0x24, 0x1c, 0x68, 0x55, 0xcc, 0xc8, 0xba, 0xf0, 0x90, 0x14, 0x86, 0x88, 0xab, 0xb3, - 0xc9, 0x60, 0xb0, 0x0c, 0xa9, 0x65, 0x5f, 0x73, 0x68, 0x09, 0x0e, 0x45, 0xc3, 0x3f, 0xc3, 0x9c, - 0xe5, 0x54, 0x3f, 0xa4, 0x4a, 0x0f, 0x08, 0xc6, 0xb7, 0x88, 0x20, 0xf4, 0x9a, 0x63, 0xab, 0xb2, - 0x1f, 0x4e, 0x78, 0xd6, 0xd9, 0x4e, 0x78, 0xaa, 0x4b, 0x55, 0x69, 0xb5, 0x00, 0x10, 0x71, 0x39, - 0xc1, 0xc5, 0xcf, 0x96, 0x92, 0xb3, 0x1f, 0x1c, 0x1a, 0x7c, 0xf7, 0x6e, 0xc5, 0x13, 0x66, 0xcf, - 0x22, 0x08, 0x48, 0x7c, 0x19, 0x72, 0xe8, 0xc7, 0xfb, 0xf5, 0x73, 0x63, 0x73, 0x89, 0x68, 0x79, - 0x7d, 0xa0, 0x91, 0xdc, 0xfb, 0xad, 0x74, 0x34, 0x04, 0x95, 0xdd, 0x4a, 0x90, 0x85, 0xd4, 0x07, - 0x6a, 0xf7, 0x29, 0x9e, 0xce, 0x30, 0x0e, 0x0d, 0x8e, 0x29, 0x94, 0x45, 0xca, 0xd1, 0x72, 0x36, - 0xdc, 0x14, 0xbf, 0x15, 0xad, 0x60, 0xc3, 0x47, 0xd9, 0x0f, 0x99, 0xb2, 0x92, 0xc4, 0x15, 0x44, - 0xd0, 0xc4, 0xd1, 0xc9, 0x5d, 0x35, 0x72, 0x56, 0x3a, 0xbf, 0xd1, 0x16, 0x79, 0x11, 0x1e, 0x51, - 0xc1, 0x87, 0xa1, 0x3c, 0x9b, 0xd1, 0x16, 0x7c, 0xf1, 0xfd, 0x5c, 0x17, 0x2b, 0x08, 0xd8, 0x6a, - 0xd9, 0x37, 0x7e, 0xca, 0x66, 0xb6, 0xc5, 0x5f, 0x34, 0x3d, 0xab, 0x18, 0x27, 0xaa, 0x38, 0x04, - 0xd6, 0xa1, 0xa9, 0xac, 0xed, 0xa3, 0x8d, 0xc6, 0xf6, 0x5b, 0x3c, 0x7f, 0x28, 0x24, 0xb3, 0x39, - 0xdf, 0x39, 0xbc, 0xdf, 0x3b, 0x34, 0xbc, 0x1f, 0xbc, 0xe7, 0xb1, 0x3a, 0xe7, 0xe2, 0xbd, 0x91, - 0x4a, 0x82, 0x41, 0x92, 0x70, 0x7e, 0x6b, 0x73, 0x49, 0x43, 0x4a, 0x56, 0x2c, 0xbf, 0xb3, 0x79, - 0x7c, 0x88, 0xe1, 0xda, 0x27, 0xf6, 0xeb, 0xcf, 0xf1, 0x21, 0x7e, 0x2f, 0xcb, 0x87, 0x38, 0x19, - 0x8b, 0x03, 0x8a, 0x7e, 0xf2, 0x06, 0x39, 0x65, 0x05, 0x5b, 0x07, 0xf1, 0x5a, 0xf9, 0xae, 0xbe, - 0xc5, 0xff, 0x57, 0x81, 0xfd, 0x5a, 0x2b, 0xf8, 0x57, 0xfd, 0xa1, 0x40, 0x95, 0xfe, 0x4d, 0x81, - 0xfd, 0x62, 0xeb, 0xd7, 0x05, 0x59, 0xee, 0xe9, 0xe4, 0xa2, 0x6b, 0xcf, 0x2d, 0xba, 0xfd, 0xc4, - 0x06, 0x01, 0x46, 0x51, 0xee, 0x44, 0x7a, 0xb4, 0x9b, 0x5f, 0x50, 0x7f, 0x73, 0x63, 0x77, 0x50, - 0xf6, 0x85, 0x9f, 0x9f, 0x4b, 0x44, 0x95, 0x7d, 0xe1, 0x17, 0xe6, 0x12, 0xd1, 0x7d, 0xbb, 0x43, - 0x0e, 0xf6, 0xb2, 0x2f, 0x18, 0x6a, 0xc9, 0x3d, 0xe3, 0xab, 0x07, 0x61, 0x6f, 0x00, 0xa2, 0x5a, - 0xdf, 0x8d, 0xe4, 0xcc, 0x09, 0x16, 0x59, 0xef, 0x3f, 0xa1, 0x8f, 0x7d, 0xca, 0x52, 0x67, 0xf3, - 0x12, 0x35, 0x8c, 0xba, 0xc7, 0xc7, 0xe2, 0x46, 0x99, 0x8e, 0xf2, 0x70, 0x9b, 0xcf, 0xdf, 0xb9, - 0x8f, 0x50, 0xa0, 0x9e, 0xf0, 0xfd, 0x23, 0xfb, 0x76, 0x87, 0x2a, 0xe8, 0x0d, 0xe0, 0x3b, 0x91, - 0x1e, 0xfd, 0xe4, 0x05, 0xab, 0xa9, 0x46, 0x49, 0x03, 0x86, 0xbc, 0x7b, 0xf6, 0xa4, 0x75, 0x3d, - 0x1b, 0xbf, 0x39, 0x9a, 0x8c, 0xcd, 0xe8, 0x63, 0x71, 0x7d, 0x92, 0x7a, 0x2e, 0x0d, 0xa6, 0x8e, - 0x9d, 0xd7, 0x8f, 0xf7, 0xdf, 0x89, 0xf4, 0xd0, 0x41, 0xc1, 0xc3, 0x61, 0xbf, 0x0b, 0x7c, 0x79, - 0x11, 0x42, 0x9d, 0x21, 0x25, 0xd8, 0x88, 0x1f, 0x2e, 0x20, 0xae, 0x62, 0x7d, 0x8b, 0xd4, 0xff, - 0x97, 0xbd, 0x37, 0x8d, 0x8e, 0xe2, 0x5a, 0x13, 0x04, 0x2b, 0xb4, 0x21, 0x2e, 0x9b, 0x08, 0x36, - 0x19, 0x6c, 0x9c, 0xc8, 0xd8, 0x46, 0xf1, 0xc4, 0xe2, 0xf0, 0x86, 0xe5, 0x35, 0xb4, 0x60, 0xcb, - 0x06, 0x21, 0x87, 0x80, 0xe7, 0xe7, 0xe5, 0xf9, 0x25, 0x52, 0x1a, 0xa7, 0x91, 0x32, 0xf5, 0x32, - 0x53, 0x78, 0x79, 0x4b, 0x25, 0x20, 0x81, 0x04, 0x12, 0x12, 0x61, 0x56, 0x21, 0x36, 0x9b, 0xcd, - 0x8b, 0x24, 0xf3, 0xe0, 0x81, 0x48, 0x49, 0x66, 0xba, 0x4f, 0x77, 0x75, 0x57, 0x4d, 0xf5, 0x52, - 0x4c, 0x55, 0x77, 0x55, 0x57, 0x77, 0xcf, 0xa9, 0x22, 0x23, 0x33, 0x35, 0xa7, 0x7a, 0x98, 0x99, - 0x9e, 0x39, 0xa7, 0x8f, 0xcf, 0x9c, 0x33, 0x73, 0xe2, 0x7e, 0xf7, 0xde, 0xb8, 0xb1, 0x64, 0x4a, - 0x60, 0xcc, 0x62, 0xc3, 0x1f, 0x94, 0x77, 0x8f, 0x7b, 0xbf, 0xfb, 0xdd, 0x6f, 0xff, 0x94, 0xcd, - 0xd9, 0x12, 0x57, 0x21, 0xff, 0x5f, 0x59, 0x84, 0x3a, 0x02, 0x05, 0x7f, 0xf7, 0xae, 0xe4, 0x48, - 0x7f, 0xaa, 0xa5, 0x27, 0xd1, 0xfb, 0x75, 0x89, 0x07, 0x34, 0xb6, 0x60, 0x36, 0x91, 0xec, 0x69, - 0x21, 0x76, 0xff, 0xb8, 0x72, 0x89, 0x67, 0xe3, 0xf2, 0x30, 0x88, 0x65, 0x00, 0x94, 0xf0, 0x53, - 0x76, 0x3a, 0x75, 0xbc, 0xc3, 0x8c, 0x92, 0x78, 0xf9, 0x70, 0x6a, 0x60, 0x33, 0x34, 0x87, 0xd8, - 0x34, 0xa3, 0xdb, 0x3b, 0xf5, 0xd6, 0x93, 0xba, 0xd6, 0x01, 0x9c, 0xcc, 0x68, 0x74, 0x28, 0xf5, - 0xed, 0x6e, 0xb0, 0x1e, 0x4b, 0x1c, 0xe9, 0x4d, 0x9d, 0xda, 0x9c, 0x38, 0xbb, 0x85, 0x18, 0x29, - 0x80, 0x5b, 0x41, 0xef, 0x99, 0xd4, 0xe5, 0x43, 0xc6, 0xe0, 0xf4, 0x0a, 0xe8, 0xfd, 0x1d, 0x89, - 0xb6, 0x6e, 0x78, 0x36, 0xf5, 0xae, 0x01, 0x7d, 0xc7, 0x31, 0xbd, 0xf5, 0x64, 0xea, 0x9b, 0xad, - 0x7a, 0xec, 0x94, 0x31, 0x7e, 0x6b, 0xa7, 0xde, 0xdd, 0xe6, 0x69, 0x0e, 0x90, 0x10, 0x08, 0xc6, - 0xb3, 0xee, 0x01, 0x8b, 0x59, 0xa0, 0x5c, 0x4a, 0x3c, 0x7a, 0xef, 0x19, 0x8f, 0xf9, 0xf5, 0x9e, - 0x44, 0x6f, 0x14, 0xf3, 0xac, 0xf6, 0xe1, 0x4b, 0x3c, 0xe0, 0xf5, 0xec, 0xd9, 0xd8, 0xbc, 0xde, - 0x57, 0x17, 0x69, 0xf0, 0x34, 0x07, 0xea, 0x82, 0xa1, 0xfa, 0x60, 0xc0, 0x63, 0xe0, 0x39, 0x03, - 0x5d, 0x79, 0x16, 0x2f, 0xc6, 0x75, 0xd8, 0xfe, 0xe2, 0xf9, 0xa5, 0xa1, 0x60, 0x30, 0xb2, 0x74, - 0x89, 0x51, 0xb2, 0x14, 0x8a, 0x3c, 0xfa, 0xee, 0x91, 0xf8, 0x90, 0x41, 0x31, 0x91, 0x9d, 0xe5, - 0x96, 0xaa, 0x72, 0x07, 0x20, 0x5e, 0x16, 0xd0, 0x94, 0xe6, 0x40, 0xad, 0xb9, 0x62, 0x92, 0x92, - 0x90, 0x10, 0xbc, 0xd6, 0x3a, 0x79, 0x8b, 0x40, 0x6c, 0xc6, 0xf0, 0x70, 0x4c, 0xb8, 0x4c, 0x13, - 0x22, 0x6d, 0x89, 0x0f, 0xee, 0x82, 0x39, 0x18, 0x89, 0xaa, 0x47, 0x87, 0x97, 0xa5, 0x8e, 0x9f, - 0x49, 0x9e, 0x88, 0xd9, 0xab, 0x0f, 0x1f, 0x21, 0x15, 0x38, 0x37, 0x92, 0x59, 0xb7, 0x88, 0xac, - 0x95, 0x8a, 0x12, 0xf4, 0xae, 0x01, 0x90, 0x49, 0xc2, 0x56, 0x16, 0xab, 0xd6, 0x35, 0x89, 0xe7, - 0xb2, 0x9c, 0xf6, 0x71, 0x63, 0x78, 0xa8, 0xfc, 0x3f, 0x82, 0xa6, 0xfc, 0x9f, 0x02, 0x6f, 0x26, - 0x77, 0x55, 0xb8, 0x2e, 0x3b, 0xb9, 0x25, 0x1e, 0xfd, 0x44, 0x8f, 0x71, 0x71, 0xac, 0xc8, 0x82, - 0x76, 0xed, 0x31, 0xb0, 0xe7, 0x50, 0x8c, 0x7d, 0x42, 0x6a, 0xe0, 0x62, 0xf2, 0x78, 0xbf, 0x01, - 0x91, 0xb8, 0x77, 0xf9, 0xba, 0x55, 0x18, 0x22, 0x31, 0x64, 0x0c, 0x1f, 0x1b, 0x8d, 0x6a, 0xf1, - 0xd8, 0x36, 0x62, 0xf9, 0x8e, 0x83, 0x26, 0x59, 0xee, 0x20, 0x08, 0x5a, 0xa9, 0xed, 0x35, 0x90, - 0x48, 0x89, 0x03, 0x03, 0xa3, 0x5a, 0x9b, 0x3e, 0x70, 0x89, 0x39, 0x5e, 0xc5, 0x63, 0xa7, 0x13, - 0xbd, 0x31, 0xfd, 0xe0, 0x99, 0xf8, 0xe0, 0x1e, 0xb2, 0xde, 0x13, 0x3d, 0x26, 0xbe, 0xe8, 0x8d, - 0x25, 0x0e, 0x0e, 0xf0, 0xd6, 0x7d, 0xed, 0x59, 0x24, 0x22, 0x9f, 0x12, 0xda, 0x10, 0x2e, 0x9c, - 0x84, 0x77, 0xed, 0x67, 0x19, 0x9f, 0xa1, 0x4a, 0xda, 0x1a, 0x5e, 0xa2, 0x11, 0x41, 0x53, 0x2e, - 0x09, 0x92, 0x39, 0x88, 0xfc, 0x95, 0x40, 0x6c, 0x8e, 0xbb, 0x5b, 0x80, 0x3f, 0x60, 0x42, 0x5e, - 0x58, 0xba, 0x71, 0xe8, 0x34, 0x67, 0x42, 0xb2, 0xa7, 0x65, 0xa3, 0xef, 0xe3, 0xf8, 0x60, 0xcc, - 0x80, 0xd9, 0x06, 0x5f, 0x04, 0xd3, 0x1c, 0xf1, 0xc1, 0x98, 0xd9, 0xf7, 0xf2, 0xa1, 0xe4, 0x19, - 0x62, 0xac, 0xc5, 0xba, 0xd3, 0x90, 0x52, 0x78, 0x23, 0x2e, 0xed, 0x1c, 0xdd, 0x7f, 0x1e, 0x2e, - 0xd6, 0xb3, 0x4c, 0x1e, 0x61, 0x3c, 0x58, 0xa7, 0xb6, 0xbc, 0x06, 0x83, 0x96, 0x7a, 0x8c, 0x7b, - 0xb1, 0xb8, 0xde, 0x1f, 0x7a, 0x7e, 0xe9, 0x26, 0x6f, 0x68, 0x69, 0x83, 0x7f, 0xfd, 0x52, 0x32, - 0xdf, 0xb3, 0xaa, 0xb9, 0x70, 0xf1, 0xdf, 0x09, 0x48, 0x6c, 0x0a, 0xf9, 0x6a, 0x23, 0xde, 0x50, - 0x64, 0xad, 0x89, 0xb4, 0xc0, 0xcc, 0xf0, 0x88, 0xa0, 0x29, 0x3d, 0x82, 0xe4, 0xd2, 0x40, 0xde, - 0x2a, 0x58, 0x90, 0x57, 0x7b, 0xa7, 0x03, 0x79, 0x79, 0xd2, 0x60, 0x2f, 0xec, 0x91, 0x42, 0x6e, - 0x3d, 0xf4, 0x36, 0xc8, 0xf1, 0xf6, 0x4e, 0x86, 0xc3, 0x12, 0xe7, 0xce, 0x24, 0x5a, 0xba, 0x80, - 0x20, 0xd5, 0xbb, 0xbe, 0xd4, 0x07, 0x2e, 0x39, 0xe3, 0x20, 0x00, 0x22, 0x56, 0x5d, 0x56, 0x66, - 0x9c, 0xee, 0xf4, 0xf5, 0x75, 0x60, 0x6d, 0xb1, 0xba, 0x39, 0xa2, 0xd4, 0xd7, 0x07, 0x03, 0x61, - 0xe2, 0x72, 0xe8, 0xc8, 0x1f, 0xa5, 0xd4, 0xe1, 0x08, 0xc6, 0xff, 0x5c, 0xd0, 0x94, 0x6f, 0x05, - 0xc9, 0xd9, 0x4f, 0x3e, 0x23, 0xc4, 0x07, 0x77, 0x24, 0x8e, 0x5c, 0x30, 0xe1, 0x19, 0xa3, 0xc5, - 0xb2, 0xf2, 0x5a, 0x7d, 0x5b, 0x6b, 0x72, 0xa4, 0x1f, 0xe2, 0x84, 0xeb, 0xfd, 0xed, 0xa9, 0xcf, - 0x5b, 0x81, 0x08, 0x22, 0x1e, 0x5c, 0xc3, 0x3d, 0xc9, 0xf3, 0x9f, 0xe9, 0xc3, 0x7b, 0xc1, 0x7e, - 0x1e, 0x2e, 0x13, 0x4f, 0x07, 0x13, 0xf4, 0x3a, 0x70, 0x29, 0x31, 0xb0, 0xc7, 0xb8, 0xff, 0xc7, - 0x4f, 0xea, 0xad, 0xc6, 0x08, 0x30, 0xaf, 0x19, 0x4d, 0x0a, 0x14, 0x89, 0x58, 0x22, 0xc2, 0xb6, - 0x0d, 0xf8, 0x17, 0x18, 0x21, 0xf5, 0xcd, 0xd6, 0xe4, 0x9e, 0x33, 0x57, 0xa3, 0x5b, 0x54, 0xe7, - 0xea, 0xc5, 0x6d, 0x59, 0xa8, 0x80, 0x96, 0x56, 0x05, 0xc8, 0x56, 0x4c, 0xcd, 0xb8, 0x15, 0xff, - 0x4c, 0xd0, 0x94, 0x11, 0x41, 0x72, 0x74, 0xc3, 0x3b, 0xb1, 0xf3, 0xee, 0xd8, 0x09, 0xc7, 0xe2, - 0xc5, 0xdd, 0x59, 0x68, 0x46, 0x98, 0xec, 0x0d, 0x5c, 0x66, 0xd8, 0x8b, 0x69, 0x19, 0xf7, 0xe2, - 0xcf, 0x04, 0x4d, 0xf9, 0xe7, 0x82, 0xe4, 0xd6, 0x53, 0xfe, 0xd2, 0x0e, 0x18, 0x00, 0xe5, 0x7c, - 0xce, 0x37, 0xc0, 0x6f, 0x0c, 0x8f, 0xf1, 0x49, 0xde, 0xe2, 0x83, 0x31, 0xb0, 0x74, 0x8d, 0xc7, - 0x3a, 0x12, 0xfb, 0x2e, 0x2d, 0x05, 0x53, 0xbf, 0xa5, 0x10, 0xeb, 0x47, 0xdf, 0xbb, 0x8d, 0x0c, - 0x80, 0x6f, 0x78, 0xba, 0xad, 0x00, 0xa9, 0x19, 0x6c, 0x88, 0x73, 0x1f, 0xe2, 0x83, 0xbb, 0xe0, - 0x2c, 0x8c, 0x0d, 0x71, 0xfb, 0x02, 0xb1, 0x2d, 0x0b, 0x89, 0x61, 0xd8, 0x25, 0x7e, 0x4b, 0x0a, - 0x32, 0x6e, 0x09, 0x51, 0xae, 0xb9, 0x74, 0x94, 0x4f, 0xd8, 0x01, 0xe4, 0xce, 0xdc, 0x0b, 0x97, - 0xa5, 0x8b, 0x8f, 0xb3, 0xb0, 0xdc, 0xa0, 0x04, 0x9d, 0xa7, 0x29, 0x85, 0x2c, 0x2c, 0xb7, 0x85, - 0xe1, 0x5a, 0x5d, 0xeb, 0x16, 0x63, 0x7b, 0x46, 0xda, 0x18, 0xdb, 0x33, 0x33, 0xc5, 0xd8, 0x9e, - 0x35, 0x46, 0x8c, 0xed, 0xd9, 0x8e, 0x18, 0xdb, 0x4f, 0xa3, 0x9c, 0x7a, 0x5f, 0x18, 0x74, 0x50, - 0x13, 0x69, 0xbe, 0x7c, 0x5f, 0xb8, 0x4e, 0x2e, 0x64, 0x8b, 0x4c, 0x1c, 0xbe, 0x0c, 0x39, 0xb5, - 0x58, 0x9e, 0x4c, 0x5f, 0xb8, 0x4e, 0x6c, 0x46, 0x13, 0x42, 0xcd, 0x81, 0x88, 0x31, 0x6a, 0xa1, - 0xbb, 0x80, 0x4a, 0x6d, 0xc6, 0xda, 0x12, 0x2c, 0x13, 0xc3, 0xa2, 0x02, 0xda, 0x41, 0x5e, 0x66, - 0xe6, 0x30, 0xb1, 0x79, 0x41, 0x76, 0x0d, 0xb0, 0xbf, 0x21, 0x1c, 0x18, 0xcd, 0x0e, 0x4a, 0xba, - 0x8a, 0x5b, 0x05, 0x26, 0x89, 0xbb, 0x6f, 0x4c, 0x49, 0x1c, 0xb6, 0x08, 0xa1, 0x92, 0xb8, 0x32, - 0xdb, 0xa4, 0xf1, 0xc1, 0x1d, 0x00, 0x5e, 0xc6, 0xbc, 0x38, 0x97, 0x1a, 0x8d, 0x47, 0xd6, 0xa3, - 0xef, 0x38, 0x1e, 0x1f, 0xdc, 0x99, 0x41, 0x3a, 0xf7, 0x31, 0x2a, 0x20, 0x87, 0x5e, 0x13, 0xf2, - 0x91, 0x17, 0x6e, 0x2e, 0xde, 0xc1, 0x55, 0x9a, 0xf2, 0xaa, 0xe4, 0xa8, 0x94, 0x9f, 0xe2, 0x6d, - 0xf7, 0xdc, 0x1e, 0x37, 0xf7, 0xb7, 0x4d, 0x75, 0x8c, 0x24, 0xfe, 0x16, 0x4d, 0xa7, 0x65, 0xc1, - 0x70, 0x84, 0xcc, 0x3d, 0xcf, 0x8c, 0xfd, 0xee, 0xac, 0xb5, 0x4d, 0x3e, 0x6e, 0xb6, 0x40, 0x75, - 0x0e, 0x25, 0x7e, 0x8c, 0x26, 0x79, 0x03, 0x81, 0x60, 0x04, 0x8b, 0xe3, 0xc3, 0x85, 0xf7, 0x63, - 0x52, 0x67, 0x71, 0x46, 0x52, 0x47, 0x31, 0xdb, 0x03, 0xb1, 0xb3, 0x48, 0x53, 0x1e, 0x96, 0xf8, - 0x61, 0xe4, 0xd9, 0xb0, 0x34, 0xb3, 0x88, 0x38, 0x30, 0xf0, 0x8d, 0xc4, 0xb7, 0xd0, 0xd4, 0x46, - 0xef, 0x47, 0x58, 0xb4, 0x07, 0x49, 0x50, 0x88, 0x6a, 0x06, 0x67, 0x50, 0xb2, 0x55, 0xc9, 0xf3, - 0x13, 0x03, 0x5d, 0xf1, 0xc1, 0x2f, 0x4d, 0x8b, 0x1e, 0x6c, 0x49, 0x58, 0x43, 0xd3, 0xa9, 0xa8, - 0xb6, 0xf6, 0x62, 0x03, 0x9a, 0x1a, 0xde, 0xe8, 0x6f, 0x02, 0x83, 0xa7, 0xaa, 0x80, 0x3f, 0x82, - 0x35, 0x28, 0xf9, 0x90, 0x17, 0xd4, 0x56, 0x25, 0x2f, 0x25, 0x41, 0xa1, 0x2e, 0x9e, 0x4b, 0x5d, - 0xde, 0x4e, 0x4c, 0xf5, 0x30, 0x8b, 0xc8, 0x5e, 0x11, 0xca, 0xe5, 0x42, 0xa5, 0x6a, 0x1b, 0x40, - 0xfc, 0x4c, 0x40, 0xf3, 0xbc, 0x0d, 0x0d, 0xc1, 0x0f, 0x6b, 0x8d, 0x72, 0x82, 0x49, 0x7f, 0xfe, - 0xbe, 0x2f, 0xb0, 0xc2, 0xeb, 0x6f, 0xf0, 0xd5, 0x63, 0x95, 0x46, 0x3e, 0xa8, 0x5d, 0x33, 0xb5, - 0x93, 0x5f, 0x20, 0xaa, 0x3a, 0x1a, 0x97, 0x93, 0x37, 0x16, 0x25, 0xab, 0xc3, 0x99, 0x20, 0x39, - 0xa6, 0x9b, 0xaf, 0x54, 0x33, 0x0d, 0x2e, 0x7e, 0x2a, 0xa0, 0xb9, 0xd6, 0xfa, 0xaa, 0x00, 0xb7, - 0x46, 0x0f, 0x5e, 0x23, 0xb1, 0xb2, 0xb4, 0xee, 0xcf, 0x0b, 0xbc, 0xb2, 0xeb, 0x06, 0x96, 0x95, - 0x61, 0xda, 0xef, 0x13, 0x70, 0x9a, 0x06, 0x7f, 0x66, 0x64, 0xf7, 0x75, 0xf5, 0x7e, 0x01, 0x15, - 0xd8, 0x21, 0xf9, 0xba, 0x82, 0x47, 0xbf, 0xa3, 0x29, 0x6f, 0xa2, 0x37, 0x24, 0x8b, 0x9c, 0x8e, - 0xda, 0xf1, 0xc3, 0x4b, 0x40, 0x45, 0xb6, 0x24, 0xad, 0xda, 0xc0, 0x25, 0xd3, 0x04, 0x89, 0x8f, - 0xcf, 0x98, 0xec, 0x69, 0x19, 0x8d, 0xf6, 0x24, 0xf7, 0x9c, 0x81, 0x14, 0x56, 0x70, 0x55, 0x8a, - 0xbe, 0xca, 0x46, 0x53, 0x68, 0xe2, 0x50, 0xc0, 0x51, 0xbf, 0x32, 0xee, 0x8b, 0xf9, 0x9b, 0xc9, - 0x00, 0x97, 0x6b, 0xca, 0x93, 0x92, 0xad, 0x4a, 0x7e, 0xa8, 0xbc, 0x1c, 0x10, 0x5d, 0x55, 0x45, - 0x09, 0x54, 0x39, 0x35, 0x14, 0xaa, 0xad, 0x93, 0xf8, 0x01, 0x2a, 0xe0, 0x4b, 0x38, 0x23, 0x6d, - 0x8c, 0xee, 0x1d, 0x95, 0xf2, 0xa3, 0x74, 0x16, 0x10, 0x16, 0xa6, 0x9f, 0xc9, 0xd1, 0xd5, 0xf8, - 0x9a, 0x0f, 0x83, 0xa1, 0x8d, 0xdc, 0xd7, 0x64, 0x73, 0x5f, 0x63, 0xad, 0xb2, 0x7c, 0x0d, 0x54, - 0xb9, 0x7d, 0x8d, 0xb5, 0x93, 0xf1, 0x35, 0x7c, 0x09, 0xfe, 0x9a, 0x1c, 0xee, 0x6b, 0xec, 0x95, - 0x8e, 0xaf, 0x49, 0x3b, 0x93, 0xa3, 0x6b, 0xd1, 0xf1, 0x5c, 0x84, 0xcc, 0x77, 0x4a, 0x7c, 0x9f, - 0x3c, 0x27, 0xab, 0x9b, 0x23, 0xb6, 0xc3, 0xc2, 0x9e, 0xe4, 0x8e, 0x4a, 0xf9, 0x61, 0xee, 0x03, - 0xcb, 0x15, 0x9e, 0x71, 0xb2, 0x4e, 0x6c, 0xef, 0x28, 0xfa, 0x88, 0xe1, 0x42, 0x55, 0x80, 0x4d, - 0x04, 0x27, 0x86, 0x95, 0x56, 0xf6, 0x3a, 0xdb, 0x3c, 0xfc, 0x33, 0x62, 0x99, 0xc7, 0xde, 0x4f, - 0x0c, 0xa2, 0x29, 0x74, 0xea, 0x32, 0xff, 0x27, 0xec, 0xb0, 0xb0, 0xf3, 0xb0, 0xb5, 0x46, 0x7e, - 0x92, 0x5f, 0x7d, 0x79, 0x39, 0xbc, 0xbe, 0x55, 0x15, 0x0c, 0x83, 0x1e, 0x18, 0xa0, 0x36, 0xdb, - 0x38, 0x3d, 0x07, 0xa9, 0x56, 0xad, 0xa3, 0x88, 0x0d, 0xd8, 0x70, 0xc5, 0x58, 0x03, 0xcc, 0x97, - 0x63, 0xe6, 0x7f, 0xb0, 0x54, 0xc8, 0x4f, 0xf2, 0x1f, 0x31, 0xfe, 0xe9, 0x2c, 0x83, 0x88, 0x21, - 0x42, 0xe7, 0xb2, 0x9d, 0xc5, 0xc0, 0x02, 0x31, 0xc9, 0xca, 0x34, 0xe5, 0x45, 0xc9, 0xa5, 0x5a, - 0x2e, 0xb6, 0x81, 0x4b, 0x86, 0x73, 0x73, 0xe9, 0x2e, 0x06, 0xd9, 0xbb, 0xcf, 0x4d, 0x99, 0x67, - 0xe6, 0x35, 0x72, 0xd6, 0xba, 0xcc, 0x98, 0xf6, 0x04, 0x9d, 0xbd, 0x8b, 0x06, 0x04, 0x34, 0x89, - 0x23, 0xe1, 0x44, 0x15, 0x15, 0xd4, 0x05, 0x03, 0x11, 0xaf, 0x3f, 0xe0, 0x0b, 0xa9, 0x84, 0xf2, - 0x03, 0x20, 0x7d, 0x44, 0x53, 0x1e, 0x92, 0x1c, 0x95, 0xf2, 0x34, 0x88, 0x69, 0xc1, 0x08, 0x3a, - 0xd5, 0xd1, 0x44, 0x5c, 0x89, 0xa6, 0x12, 0xc2, 0x6e, 0x9d, 0x2f, 0x14, 0xf6, 0x07, 0x69, 0xaa, - 0xc5, 0x85, 0x9a, 0xb2, 0x40, 0xb2, 0x55, 0xc9, 0xd3, 0x6c, 0xa4, 0xa1, 0x6a, 0x6b, 0x50, 0x74, - 0x69, 0x3e, 0xba, 0x0f, 0xb2, 0x14, 0xf2, 0x48, 0x96, 0xe6, 0xd4, 0x7f, 0x8f, 0xd7, 0x49, 0x08, - 0x14, 0x3e, 0x24, 0x5e, 0x27, 0xf1, 0x80, 0x85, 0xe6, 0xb5, 0xe6, 0x93, 0xa9, 0xaa, 0xf8, 0xae, - 0xac, 0x30, 0x34, 0xbb, 0x40, 0x28, 0x8c, 0x16, 0xc8, 0xd3, 0x7e, 0xf9, 0xd6, 0xb2, 0xc5, 0xcf, - 0x78, 0x17, 0x7f, 0xa2, 0x2c, 0x7e, 0x73, 0xf1, 0x3b, 0x3f, 0x5b, 0xc8, 0xeb, 0x23, 0x96, 0x5b, - 0xd4, 0x25, 0x0b, 0xdd, 0xd4, 0x25, 0xcc, 0x43, 0xfd, 0xbb, 0xb2, 0x9c, 0x50, 0x56, 0x81, 0x40, - 0xb4, 0x26, 0x94, 0x16, 0xcf, 0xbe, 0x5e, 0x5a, 0xfc, 0x63, 0x9b, 0x0a, 0xe4, 0x49, 0x97, 0xb4, - 0xdd, 0xee, 0xbb, 0x72, 0x4f, 0x1f, 0x72, 0x4f, 0x1f, 0x72, 0xd7, 0xe9, 0x43, 0xfe, 0x5f, 0xc1, - 0x45, 0x1f, 0xf2, 0xf7, 0x82, 0xa6, 0xfc, 0x47, 0xc1, 0xa2, 0x0f, 0xf9, 0xd7, 0x16, 0x89, 0xca, - 0xb8, 0x19, 0x9f, 0x6b, 0xc3, 0x1d, 0x77, 0x9a, 0x42, 0xe4, 0x9e, 0x96, 0xe1, 0x9e, 0x96, 0x41, - 0xdc, 0xe7, 0xa2, 0x65, 0x58, 0x3e, 0x7e, 0x4c, 0xff, 0xe3, 0x55, 0x39, 0xfc, 0x55, 0x26, 0x95, - 0xc3, 0x31, 0x41, 0x53, 0x7a, 0xdd, 0x55, 0x0e, 0xad, 0x56, 0xfc, 0xc0, 0x49, 0x65, 0xae, 0x0d, - 0x77, 0x64, 0xd2, 0x39, 0x40, 0x54, 0x9e, 0x1f, 0x54, 0xe9, 0x90, 0x4e, 0xbe, 0x3c, 0xe5, 0x9e, - 0x7c, 0xd9, 0x2e, 0x5f, 0x9e, 0xfa, 0x93, 0x96, 0x2f, 0x4f, 0x1b, 0xbf, 0x7c, 0x79, 0x85, 0x29, - 0x5f, 0x9e, 0x4e, 0xa3, 0x29, 0x3d, 0x68, 0xba, 0xf5, 0xcc, 0xc4, 0xb1, 0xfb, 0x52, 0xe7, 0x4f, - 0xe9, 0x5d, 0x17, 0x99, 0x6f, 0x0f, 0x97, 0x8d, 0x80, 0x49, 0xa3, 0xbf, 0x14, 0x4c, 0xd9, 0xaf, - 0x38, 0xb6, 0xec, 0x17, 0x13, 0x6b, 0x4c, 0xf6, 0xeb, 0xbb, 0x5e, 0xd9, 0x6f, 0x89, 0x07, 0xc2, - 0x13, 0x42, 0xa0, 0x2c, 0xe3, 0x81, 0x05, 0x61, 0x08, 0xeb, 0xa7, 0x75, 0xd0, 0xe6, 0x5c, 0xea, - 0x46, 0x26, 0x30, 0x3e, 0x67, 0x0a, 0x8c, 0x67, 0x8c, 0x29, 0x30, 0xc6, 0xb1, 0x82, 0xa8, 0xc0, - 0x38, 0xc4, 0x31, 0xbf, 0x9e, 0xef, 0x2f, 0x3c, 0x86, 0xf0, 0x42, 0x60, 0xf2, 0xcc, 0xd2, 0x31, - 0x18, 0xcf, 0x13, 0xcf, 0x87, 0x51, 0x01, 0xf3, 0x7e, 0x01, 0x15, 0xd4, 0xda, 0x25, 0xcc, 0x33, - 0x49, 0xa2, 0xc1, 0x0d, 0xc1, 0xe0, 0x86, 0x06, 0xdf, 0x92, 0xa6, 0x50, 0x30, 0x12, 0x5c, 0xdf, - 0xfc, 0xde, 0x92, 0xda, 0x48, 0xc8, 0x1f, 0xd8, 0x80, 0x0d, 0xce, 0xc6, 0x27, 0x7f, 0x1e, 0xbf, - 0x08, 0xd8, 0xb1, 0x08, 0xb1, 0x47, 0x40, 0xd3, 0x6b, 0x1d, 0x02, 0xe8, 0x59, 0xe3, 0x58, 0xda, - 0x4d, 0x17, 0x4f, 0x3b, 0x96, 0x21, 0x36, 0x58, 0xc5, 0xd3, 0xb3, 0xdd, 0x83, 0xb9, 0xac, 0xf2, - 0x36, 0xd5, 0x46, 0x42, 0xcd, 0x75, 0x11, 0x92, 0xd2, 0x9f, 0x17, 0x45, 0x3f, 0x40, 0xe6, 0xc0, - 0xef, 0xb1, 0x5d, 0x2c, 0x1d, 0xb6, 0x48, 0xa4, 0x6f, 0x9b, 0x2c, 0x92, 0x26, 0xa2, 0x4b, 0xcf, - 0xec, 0xca, 0x22, 0xb9, 0xc0, 0x1c, 0xdf, 0x78, 0x45, 0x30, 0x99, 0xd4, 0x2b, 0x02, 0xe6, 0x38, - 0xaf, 0x08, 0xf4, 0x4e, 0x17, 0x5d, 0xc8, 0x42, 0x73, 0xdd, 0x86, 0x0b, 0x37, 0x05, 0x03, 0x61, - 0x9f, 0xb8, 0x04, 0xe5, 0xd4, 0x51, 0xc3, 0xcf, 0x29, 0x24, 0xfb, 0xb2, 0x51, 0x60, 0x30, 0xe5, - 0x7b, 0xf4, 0x43, 0x47, 0xc0, 0xc4, 0x3d, 0x79, 0x6c, 0xb3, 0x8a, 0x8b, 0xc5, 0x52, 0x34, 0xa1, - 0x91, 0xd8, 0xc5, 0x03, 0x1f, 0x8c, 0xf3, 0x88, 0xd0, 0x32, 0x59, 0xe4, 0x7b, 0x51, 0x15, 0x0f, - 0xa9, 0x14, 0x1f, 0x43, 0x79, 0x21, 0x5f, 0xb8, 0xb9, 0x21, 0x42, 0xc2, 0xd4, 0xe3, 0x88, 0x0f, - 0xa4, 0x48, 0x9e, 0x0c, 0x3d, 0x93, 0x43, 0x9f, 0x26, 0x8e, 0xf4, 0xaa, 0xa4, 0x54, 0xfc, 0x18, - 0x4d, 0xfb, 0xd0, 0xb7, 0xfe, 0x5d, 0xfe, 0xec, 0x73, 0xdc, 0x53, 0x1c, 0xff, 0xdc, 0xb7, 0x9e, - 0x13, 0xe3, 0xae, 0x93, 0x21, 0xf1, 0xae, 0xbd, 0xb7, 0x5c, 0x48, 0xf3, 0xa2, 0x47, 0xf5, 0xb3, - 0x47, 0x40, 0x00, 0x90, 0x38, 0xbc, 0x75, 0xf4, 0x60, 0xb7, 0x3a, 0xf5, 0x43, 0xcb, 0x08, 0x45, - 0xff, 0xdc, 0x83, 0xee, 0x5b, 0x8b, 0xf5, 0x69, 0x6e, 0x42, 0x87, 0xa7, 0x9c, 0x42, 0x07, 0x6c, - 0x2c, 0xca, 0x09, 0x1d, 0xf2, 0xa9, 0x7c, 0x81, 0x17, 0x22, 0xac, 0x77, 0x18, 0x70, 0xc2, 0x36, - 0xe2, 0x44, 0x15, 0x76, 0x03, 0xce, 0x87, 0xad, 0xbf, 0xc1, 0x83, 0xc1, 0xa4, 0xf4, 0xc7, 0xb2, - 0xeb, 0xcc, 0x4e, 0x6f, 0xd7, 0x69, 0x86, 0xd2, 0xb3, 0x4a, 0x28, 0x72, 0x6e, 0x5c, 0x42, 0x91, - 0xeb, 0x2e, 0xa1, 0x48, 0xbb, 0x85, 0x37, 0x51, 0x42, 0x91, 0x77, 0x4b, 0x24, 0x14, 0x13, 0xee, - 0x60, 0x09, 0x45, 0xfe, 0x3d, 0x09, 0xc5, 0x2d, 0x91, 0x50, 0x74, 0x5a, 0x2d, 0x36, 0x21, 0xb8, - 0xff, 0x3f, 0x65, 0x69, 0x4a, 0x2a, 0xcb, 0x22, 0xa1, 0xf8, 0xbb, 0xac, 0xbb, 0x4b, 0x0e, 0x71, - 0xb7, 0x1a, 0x66, 0xfe, 0x17, 0x87, 0xc8, 0x04, 0xa5, 0x21, 0x58, 0xd6, 0x56, 0x05, 0x22, 0x8f, - 0xcb, 0x40, 0xb0, 0xdc, 0xad, 0x02, 0x95, 0x49, 0xf7, 0x04, 0x2a, 0x37, 0x20, 0x50, 0x99, 0xec, - 0x2e, 0x50, 0x49, 0xff, 0x30, 0xfd, 0x78, 0x05, 0x2a, 0x7f, 0x74, 0x17, 0xa8, 0x40, 0x5e, 0x45, - 0x92, 0xcb, 0xd4, 0x4d, 0xa0, 0xf2, 0xc1, 0x1d, 0x2a, 0x34, 0x99, 0x7a, 0x4f, 0x68, 0x62, 0x17, - 0x9a, 0x4c, 0xfb, 0x49, 0x0b, 0x4d, 0x0a, 0xc6, 0x2f, 0x34, 0x79, 0xd6, 0x1e, 0x8d, 0x64, 0x81, - 0xa6, 0xcc, 0x34, 0xa3, 0x91, 0x4c, 0x64, 0x71, 0x48, 0x78, 0x49, 0x09, 0xb5, 0xce, 0xe3, 0x25, - 0x25, 0x33, 0xee, 0x22, 0x49, 0xc9, 0xcc, 0xbb, 0x5c, 0x52, 0x32, 0xeb, 0xce, 0x95, 0x94, 0xcc, - 0xbe, 0x23, 0x25, 0x25, 0x73, 0x7e, 0xa4, 0x92, 0x92, 0x13, 0x82, 0xa6, 0x1c, 0x13, 0xd0, 0x61, - 0x41, 0x22, 0x4c, 0x3a, 0x24, 0xdb, 0xaf, 0xc3, 0xf1, 0xbf, 0xa8, 0xb0, 0xe4, 0x17, 0x70, 0x87, - 0x39, 0xf1, 0x67, 0x6a, 0xe0, 0x62, 0xe2, 0xec, 0x16, 0x1c, 0xa2, 0x9c, 0x98, 0xa6, 0x19, 0x4d, - 0xf6, 0x5c, 0x82, 0x5a, 0x06, 0xa5, 0xa3, 0x07, 0xfe, 0x90, 0xe8, 0xfb, 0x4c, 0x1f, 0xb8, 0xa4, - 0xf7, 0x1d, 0x18, 0xdd, 0xde, 0x45, 0x00, 0x3b, 0x76, 0x3a, 0xb9, 0xe7, 0xa8, 0x3e, 0x72, 0x56, - 0xff, 0xb4, 0xd3, 0x2a, 0x73, 0xb1, 0x31, 0xe0, 0x57, 0x04, 0x8a, 0x27, 0xb0, 0xf4, 0xc5, 0x8d, - 0xd0, 0xb8, 0x27, 0x7d, 0x19, 0x43, 0xfa, 0xf2, 0x79, 0x16, 0xba, 0x0f, 0xe2, 0x78, 0xb8, 0x49, - 0x5f, 0x56, 0x3b, 0xa5, 0x2f, 0x8f, 0x69, 0xca, 0x12, 0x5e, 0xfa, 0xb2, 0x80, 0x07, 0x08, 0x9b, - 0xc9, 0x87, 0x33, 0xce, 0xd6, 0x2d, 0x10, 0xcb, 0x30, 0xe1, 0x5e, 0xda, 0xcf, 0x92, 0x45, 0x88, - 0x53, 0xc6, 0x8f, 0x93, 0x11, 0xd0, 0x30, 0x78, 0xb9, 0x0d, 0x77, 0x0f, 0xbc, 0xc6, 0x00, 0xaf, - 0xff, 0x2e, 0xa0, 0xd9, 0x2f, 0xfb, 0x22, 0x37, 0x53, 0xb2, 0xf7, 0x5a, 0x1a, 0x10, 0xba, 0x11, - 0xd7, 0xec, 0xd2, 0x35, 0x9a, 0xf2, 0x3a, 0x5a, 0x2d, 0xa5, 0x59, 0xa3, 0x5c, 0x98, 0x38, 0x7a, - 0x32, 0x35, 0xf0, 0x19, 0x2f, 0x9b, 0x4b, 0x0d, 0x9c, 0x4a, 0x6c, 0x6d, 0xcd, 0x0c, 0x2e, 0x7f, - 0x93, 0x8d, 0xe6, 0x38, 0x46, 0xbc, 0x3b, 0x60, 0x65, 0x35, 0xca, 0x31, 0xf8, 0x3b, 0x02, 0x20, - 0xf7, 0x67, 0x32, 0x4c, 0x27, 0x12, 0x4f, 0xa3, 0xb9, 0x55, 0xe2, 0x09, 0x5b, 0xa4, 0xe2, 0x1a, - 0x37, 0xe0, 0xcb, 0xbd, 0x35, 0xc0, 0x57, 0xba, 0x5a, 0x53, 0x56, 0xa2, 0x57, 0xa5, 0x74, 0x47, - 0x21, 0xcf, 0x4f, 0x77, 0xba, 0xb0, 0x33, 0x57, 0x04, 0x7c, 0x02, 0x57, 0x04, 0xba, 0x9f, 0x45, - 0xff, 0x26, 0x0b, 0xcd, 0x59, 0xe9, 0x0f, 0xdf, 0xb9, 0xe0, 0x0c, 0xc9, 0xce, 0xd0, 0x49, 0x41, - 0x4a, 0xb7, 0x4e, 0xf9, 0xf7, 0x6e, 0x1f, 0x4d, 0x1e, 0x6b, 0x10, 0x71, 0x41, 0x76, 0x80, 0x78, - 0x6c, 0x9b, 0xb1, 0xb3, 0xc7, 0xb6, 0x43, 0x48, 0x69, 0x88, 0xfb, 0x92, 0x1c, 0x6a, 0xd1, 0xbb, - 0xdb, 0xa0, 0x9c, 0x08, 0x5a, 0xf1, 0x68, 0x66, 0xdf, 0xd6, 0x33, 0x8c, 0xec, 0x8c, 0x0f, 0xc6, - 0xa0, 0x56, 0x6f, 0xc5, 0x61, 0x8c, 0x70, 0x7b, 0xfe, 0xe2, 0x14, 0xfd, 0x87, 0x2c, 0x54, 0xe8, - 0x5c, 0xe7, 0xdd, 0x76, 0x51, 0xb2, 0x6f, 0xf8, 0xa2, 0x40, 0x66, 0x06, 0xb8, 0x28, 0xa5, 0xaf, - 0x6a, 0xca, 0xcb, 0xa8, 0x52, 0x4a, 0xbb, 0x21, 0xae, 0xc8, 0x28, 0x0d, 0xa0, 0xfe, 0x75, 0x01, - 0x9a, 0x50, 0x03, 0xdb, 0x2c, 0xbe, 0xe5, 0x04, 0x4c, 0x48, 0xcb, 0x61, 0x02, 0xe6, 0x62, 0x0a, - 0x98, 0x25, 0x34, 0xe4, 0x7f, 0xec, 0x71, 0x39, 0x3e, 0xd2, 0xc9, 0x32, 0xbb, 0x94, 0x58, 0x52, - 0x2a, 0x72, 0xd0, 0x5b, 0x6d, 0xb1, 0xd5, 0xc4, 0xaf, 0x38, 0xa8, 0x40, 0x96, 0xd2, 0xc8, 0x13, - 0x7d, 0x89, 0x7d, 0xdb, 0x41, 0x05, 0x62, 0xd0, 0x7b, 0x2c, 0xa3, 0xc0, 0xd6, 0x11, 0x88, 0x2a, - 0xf4, 0xd4, 0x13, 0x30, 0x09, 0xd1, 0x8f, 0x84, 0xd0, 0x24, 0x5f, 0x60, 0x43, 0x83, 0x3f, 0xfc, - 0x7e, 0xb5, 0xa9, 0x59, 0xa9, 0xd1, 0x94, 0x55, 0x12, 0x5f, 0x2e, 0xbf, 0x00, 0xa3, 0xa7, 0x76, - 0x9e, 0x4d, 0xec, 0xdb, 0x6e, 0xd0, 0xf4, 0xdb, 0x0e, 0xb2, 0x39, 0xf4, 0x3d, 0x03, 0x10, 0x2e, - 0xdf, 0x39, 0xd9, 0xe3, 0x32, 0x99, 0x8c, 0x1f, 0x8c, 0x0f, 0xd6, 0x99, 0xe3, 0x16, 0xac, 0x93, - 0xa4, 0x26, 0x72, 0x06, 0xeb, 0x7c, 0xde, 0xe4, 0x6c, 0x73, 0xcd, 0x3b, 0xcb, 0x38, 0xdb, 0x59, - 0x3c, 0x11, 0xe4, 0x12, 0x6d, 0xf3, 0x17, 0x68, 0x12, 0xd9, 0x48, 0x1c, 0x64, 0x1d, 0x42, 0x44, - 0xe3, 0xec, 0x18, 0x39, 0x91, 0x8f, 0x9b, 0x7c, 0x72, 0x09, 0xf4, 0x67, 0x89, 0xe9, 0x21, 0xc7, - 0xd9, 0x63, 0xa5, 0x06, 0x54, 0xbc, 0x17, 0x0c, 0x35, 0x5e, 0x1b, 0xee, 0x90, 0x4b, 0xd7, 0x37, - 0x87, 0xfd, 0x01, 0x5f, 0x38, 0xac, 0xf2, 0x63, 0x89, 0x1f, 0xe1, 0x6c, 0x10, 0x65, 0xaf, 0xa9, - 0xbe, 0x30, 0x89, 0xc5, 0x8c, 0xb3, 0x62, 0xb0, 0x42, 0x79, 0x15, 0x48, 0x5b, 0x41, 0x5a, 0x00, - 0xb1, 0x41, 0x20, 0xf2, 0x0d, 0x0b, 0x27, 0x9c, 0x38, 0x7b, 0x0c, 0x93, 0xef, 0xa6, 0x43, 0x05, - 0x0b, 0x33, 0x0c, 0xc9, 0x6f, 0xf8, 0xa8, 0xc7, 0x6c, 0x60, 0x71, 0x05, 0x9a, 0x54, 0xef, 0x0b, - 0x63, 0x16, 0xc9, 0x1f, 0x0c, 0x10, 0x7d, 0x09, 0xb6, 0x46, 0xe6, 0xcb, 0x65, 0x91, 0x7c, 0x5b, - 0x3f, 0x4e, 0x6f, 0x87, 0xd5, 0x5d, 0x2a, 0xdf, 0x40, 0x5c, 0x83, 0x26, 0xfa, 0xc3, 0xab, 0xdf, - 0x7b, 0xaf, 0xc1, 0x1f, 0xf0, 0x91, 0xd8, 0xc8, 0x38, 0x8b, 0x8b, 0x59, 0x2a, 0x3f, 0x42, 0x90, - 0x3f, 0xc8, 0x8d, 0x2f, 0xfe, 0x21, 0x39, 0xd4, 0x95, 0x3c, 0x35, 0x94, 0x8c, 0x5d, 0xb6, 0x2d, - 0xce, 0xec, 0x22, 0xd6, 0xa3, 0x9c, 0x8d, 0xfe, 0x40, 0x3d, 0x49, 0xc0, 0x8b, 0xe1, 0x0a, 0x17, - 0xc8, 0x95, 0x0c, 0x5c, 0x89, 0xa0, 0xc4, 0xba, 0xe9, 0x1b, 0x97, 0x87, 0x97, 0x36, 0xfa, 0xc2, - 0xc1, 0x30, 0xce, 0x8d, 0xf1, 0x65, 0xe2, 0x30, 0x4e, 0x3f, 0x06, 0x99, 0x55, 0xbb, 0x06, 0x52, - 0x5b, 0x47, 0x20, 0x17, 0xab, 0x8a, 0x07, 0x13, 0x57, 0x22, 0x44, 0x8f, 0xa5, 0xaa, 0x02, 0x47, - 0x34, 0xa6, 0x69, 0xf7, 0xcd, 0x62, 0x79, 0x1e, 0xec, 0x7a, 0xf9, 0xaa, 0x8a, 0xb2, 0xf8, 0x60, - 0x1f, 0xb5, 0x93, 0x27, 0x88, 0x89, 0x6b, 0x28, 0x46, 0x05, 0x84, 0xea, 0x7d, 0x4d, 0x0d, 0xc1, - 0x8f, 0x31, 0x98, 0x4c, 0x36, 0x23, 0x4a, 0x72, 0xc5, 0xf2, 0x6a, 0x18, 0x01, 0xc2, 0x86, 0x9a, - 0xab, 0xef, 0xdc, 0x9b, 0xdc, 0xf9, 0x35, 0x84, 0x7f, 0x49, 0x1e, 0xfa, 0x36, 0x7e, 0xf9, 0x70, - 0x72, 0xef, 0xc1, 0x6b, 0xc3, 0x1d, 0x8f, 0x95, 0x26, 0xdb, 0xbf, 0x48, 0x76, 0x6f, 0x4b, 0xf4, - 0xc6, 0xa0, 0x07, 0x86, 0x25, 0x30, 0x37, 0x87, 0x02, 0x95, 0x1b, 0x5c, 0x7c, 0x09, 0xe5, 0xac, - 0xdf, 0x50, 0x55, 0x41, 0xe4, 0x97, 0xf8, 0x53, 0x70, 0x81, 0xbc, 0x20, 0x1e, 0xdb, 0x19, 0x1f, - 0xec, 0xa1, 0x31, 0x71, 0x13, 0x87, 0x4f, 0x26, 0x62, 0xdd, 0x06, 0xa8, 0xb0, 0x6f, 0x53, 0x71, - 0x43, 0xf1, 0x55, 0x94, 0xb7, 0x7e, 0x03, 0xbe, 0xd2, 0x10, 0xac, 0x57, 0xd6, 0x94, 0xa5, 0x12, - 0x29, 0x92, 0x1f, 0x66, 0xa3, 0xb0, 0x4b, 0xec, 0x36, 0x12, 0x69, 0x2e, 0x96, 0xa3, 0xbc, 0x7a, - 0x5f, 0x53, 0x84, 0x05, 0xea, 0x05, 0xc5, 0x23, 0x14, 0xc9, 0xf3, 0x47, 0xb7, 0x9e, 0x19, 0xdd, - 0x7f, 0x26, 0xed, 0x72, 0x48, 0x3b, 0x71, 0x15, 0xca, 0x37, 0xfe, 0xc2, 0x4b, 0x2a, 0x30, 0x19, - 0x1b, 0x56, 0x28, 0x17, 0xc1, 0x40, 0x19, 0x57, 0xc4, 0x5a, 0x8b, 0x55, 0x28, 0xbf, 0xce, 0x17, - 0x80, 0xf0, 0xc1, 0xd3, 0xcd, 0x14, 0x10, 0xac, 0x50, 0x9e, 0x1f, 0x1f, 0xec, 0xd3, 0x2f, 0x6f, - 0x4d, 0xbb, 0x2e, 0xd6, 0x52, 0xac, 0x45, 0x08, 0xfe, 0xae, 0x36, 0xb3, 0xa9, 0x60, 0x17, 0x3d, - 0xae, 0x58, 0x2e, 0x82, 0xe1, 0x32, 0xae, 0x8e, 0x6b, 0x2f, 0xbe, 0x8e, 0xf2, 0x71, 0xe2, 0x9a, - 0x90, 0x2f, 0x82, 0xe5, 0x68, 0xf9, 0x90, 0xa0, 0x85, 0x15, 0xca, 0x8f, 0x10, 0x84, 0x30, 0x18, - 0x8b, 0x5f, 0x3e, 0xac, 0x0f, 0x6c, 0x63, 0x41, 0x84, 0x6c, 0x21, 0xd8, 0x59, 0x0f, 0xf1, 0x4b, - 0x01, 0x4d, 0xaa, 0x0b, 0xf9, 0xea, 0x7d, 0x81, 0x88, 0xdf, 0xdb, 0x10, 0x2e, 0x9c, 0xe9, 0x1e, - 0x3c, 0x88, 0x3c, 0x43, 0x4b, 0xca, 0xcd, 0xa6, 0x20, 0xee, 0xc7, 0x31, 0xb1, 0xf9, 0x11, 0xe4, - 0x95, 0xf4, 0x12, 0xee, 0x4c, 0xee, 0x3d, 0xa8, 0xf7, 0x1d, 0x48, 0xf6, 0xb4, 0x40, 0x46, 0x22, - 0x1a, 0xae, 0x77, 0x27, 0x09, 0x49, 0xd7, 0xd3, 0x62, 0x76, 0x63, 0xb2, 0x04, 0x90, 0xfe, 0x1b, - 0xad, 0x21, 0x99, 0x16, 0x3f, 0xb4, 0x58, 0x8a, 0x26, 0x62, 0xac, 0x6d, 0x3a, 0xf9, 0x96, 0xdd, - 0xaf, 0x29, 0xf7, 0x49, 0x66, 0xa9, 0x3c, 0xd9, 0x12, 0x4f, 0xd9, 0xac, 0x10, 0x9f, 0x77, 0x7a, - 0x00, 0xc3, 0x13, 0xc1, 0x47, 0x45, 0x9e, 0x9c, 0x2e, 0x1e, 0xf2, 0xdc, 0x37, 0x51, 0x81, 0xfd, - 0xdb, 0x5d, 0x24, 0x30, 0xcb, 0x78, 0x09, 0x8c, 0x8b, 0xe4, 0xd0, 0x1c, 0x82, 0x97, 0xce, 0x34, - 0x6a, 0xca, 0x07, 0xe8, 0x7d, 0x89, 0xbe, 0xf5, 0xf2, 0x3b, 0xfc, 0x93, 0x63, 0x80, 0xc5, 0xde, - 0xf3, 0xf1, 0x91, 0x4f, 0xf5, 0x81, 0x4b, 0xa3, 0x23, 0xdd, 0xf5, 0xbe, 0x4d, 0xc1, 0x26, 0xa2, - 0x7f, 0xbf, 0x1a, 0xdd, 0x02, 0xfe, 0x9d, 0x80, 0x35, 0x20, 0x17, 0x1c, 0xa8, 0x70, 0x59, 0x6a, - 0x3e, 0x90, 0x0c, 0x03, 0x69, 0x3d, 0xda, 0xb3, 0x27, 0x79, 0x6a, 0xa8, 0x48, 0x9f, 0x86, 0x72, - 0xd6, 0x78, 0xc3, 0x1b, 0xc5, 0xd7, 0x51, 0x5e, 0xc4, 0x1b, 0xde, 0xc8, 0x08, 0x8a, 0x67, 0x34, - 0xe5, 0x29, 0x89, 0x14, 0xc9, 0x25, 0xf1, 0xa1, 0x21, 0x8c, 0xcc, 0xcc, 0x28, 0xce, 0x97, 0x47, - 0x12, 0xb1, 0x81, 0xf8, 0xe0, 0xae, 0xe4, 0xf1, 0x7e, 0x03, 0x98, 0x70, 0x3d, 0xc8, 0xa2, 0x55, - 0xd2, 0x4b, 0xfc, 0x1d, 0xca, 0x37, 0xfe, 0xc2, 0x38, 0x0e, 0xa8, 0x09, 0x9c, 0x93, 0x86, 0x15, - 0xca, 0x2a, 0xe9, 0x46, 0x71, 0x1b, 0x28, 0x66, 0xc0, 0xe4, 0x86, 0x38, 0xee, 0x81, 0xd8, 0x1b, - 0x47, 0xdf, 0x5f, 0x13, 0x34, 0xcb, 0x4c, 0xce, 0x3d, 0xbc, 0x22, 0x14, 0x6c, 0x24, 0x15, 0xc9, - 0xbe, 0x76, 0x95, 0x8d, 0x2e, 0x7e, 0xc4, 0xc2, 0x61, 0x02, 0xcd, 0xf1, 0x2b, 0x4c, 0x01, 0x92, - 0x70, 0x98, 0x93, 0xf9, 0x15, 0x7f, 0x57, 0x56, 0x11, 0x2a, 0x53, 0x27, 0x57, 0x55, 0x57, 0xad, - 0xa9, 0x52, 0x56, 0x56, 0xbd, 0x59, 0x55, 0xfd, 0xb2, 0x3a, 0x41, 0x5d, 0x5b, 0x5d, 0x8d, 0xff, - 0xa8, 0x5d, 0x5b, 0x5e, 0x5e, 0x59, 0x5b, 0xab, 0x4e, 0x58, 0xa1, 0x54, 0xad, 0x5c, 0xab, 0x56, - 0xaa, 0x13, 0xd6, 0x54, 0xad, 0xaa, 0x5c, 0xbd, 0x76, 0x8d, 0x3a, 0x75, 0xc5, 0x6a, 0xb5, 0xbc, - 0x72, 0x4d, 0xa5, 0xba, 0xaa, 0xaa, 0x5a, 0x59, 0x53, 0xc9, 0xc2, 0x60, 0xfe, 0xd2, 0xa4, 0x5b, - 0x81, 0xfc, 0xc0, 0x2e, 0xb3, 0x8c, 0x6e, 0x7d, 0x0a, 0xe6, 0x06, 0x0d, 0x8f, 0x79, 0xb0, 0x3b, - 0x4e, 0x8e, 0xee, 0x39, 0x08, 0x06, 0x10, 0x40, 0xd2, 0x26, 0xba, 0xba, 0x93, 0x27, 0x62, 0xec, - 0x78, 0x4d, 0xda, 0xf6, 0x09, 0x94, 0x1b, 0x8e, 0x78, 0x43, 0x11, 0x42, 0xa3, 0xcc, 0xd7, 0x94, - 0x79, 0x12, 0x94, 0xc8, 0x22, 0x8c, 0xcd, 0x92, 0x50, 0x19, 0xa0, 0x0b, 0x55, 0xe2, 0x12, 0x94, - 0xed, 0x0b, 0xd4, 0x13, 0x6f, 0x11, 0x7c, 0x55, 0x8c, 0xdf, 0xb4, 0x87, 0x41, 0x0b, 0x1f, 0x3e, - 0x4a, 0x7a, 0x18, 0x15, 0xe2, 0x4a, 0x34, 0xc5, 0x87, 0xa3, 0xaa, 0xd1, 0x50, 0xc3, 0x13, 0xf0, - 0x3b, 0x85, 0x3d, 0x9b, 0xac, 0x35, 0x74, 0x0c, 0xf8, 0x22, 0x32, 0x86, 0xb5, 0x89, 0xb8, 0x16, - 0x4d, 0xaa, 0x6b, 0x0e, 0x85, 0x7c, 0x81, 0x48, 0x6d, 0xc4, 0xd7, 0x44, 0xa8, 0x08, 0x8c, 0x04, - 0xf9, 0x72, 0x79, 0x01, 0x19, 0xa9, 0xef, 0x73, 0xbd, 0xf7, 0x0c, 0xf1, 0x23, 0xee, 0x69, 0x49, - 0xf4, 0x9d, 0x1c, 0xfd, 0x92, 0x3c, 0x25, 0x2a, 0xdf, 0x5e, 0xac, 0x42, 0x93, 0xc3, 0x11, 0x5f, - 0x53, 0xad, 0xc1, 0x0a, 0x05, 0xea, 0x0c, 0xba, 0x22, 0x9b, 0xe6, 0xd4, 0xb1, 0x54, 0xd8, 0x96, - 0x88, 0xc7, 0x53, 0x2d, 0x2d, 0xc4, 0x2d, 0x82, 0xb1, 0xad, 0xbe, 0x26, 0x6a, 0x7d, 0xff, 0xa0, - 0xd3, 0x28, 0x26, 0xbc, 0x71, 0x89, 0x31, 0x2b, 0x41, 0x77, 0xaf, 0x69, 0xca, 0x2b, 0x12, 0x74, - 0x91, 0x5f, 0x84, 0xe1, 0x53, 0x03, 0xa7, 0x92, 0x43, 0xdb, 0x60, 0x78, 0x2e, 0xa7, 0xa3, 0x49, - 0x71, 0x41, 0x21, 0x5c, 0x1a, 0x1c, 0x2b, 0x7c, 0x8b, 0x3e, 0x38, 0x98, 0xd8, 0x7f, 0x41, 0x85, - 0x71, 0xc4, 0x97, 0xf8, 0xa8, 0xf5, 0x40, 0x67, 0x14, 0x69, 0xca, 0x83, 0x7c, 0xd4, 0x7a, 0xf6, - 0x25, 0x98, 0x5b, 0xc6, 0xb4, 0x0d, 0x1f, 0xa8, 0xfe, 0x25, 0x9e, 0x39, 0x98, 0xcc, 0x8d, 0x60, - 0x32, 0x07, 0xd6, 0x11, 0x1c, 0xd1, 0xe3, 0x38, 0xea, 0x79, 0x8a, 0x6b, 0xa8, 0x7b, 0x00, 0x31, - 0x8c, 0x5b, 0xe3, 0xb1, 0x98, 0x25, 0xd4, 0x7d, 0x83, 0x37, 0x1c, 0x01, 0xa9, 0x2d, 0x21, 0x0b, - 0x20, 0xd8, 0xbc, 0x59, 0x2c, 0x8b, 0xf1, 0xc1, 0x1d, 0x89, 0xaf, 0x8f, 0x5b, 0x91, 0xab, 0x59, - 0xcf, 0x87, 0xba, 0x9f, 0xe6, 0x1a, 0xea, 0x1e, 0xd6, 0x0e, 0xc1, 0x6a, 0x8d, 0xd9, 0x29, 0xf1, - 0xdd, 0x88, 0xa6, 0xbe, 0x17, 0x0c, 0xd5, 0xf9, 0x68, 0x00, 0x6f, 0x9a, 0xb1, 0x0d, 0x07, 0x16, - 0xb4, 0x55, 0xc9, 0xcb, 0xc8, 0x79, 0xd1, 0x74, 0x89, 0x90, 0xc4, 0x32, 0x39, 0xd4, 0x96, 0xe8, - 0xfb, 0x8c, 0x21, 0x39, 0x70, 0xc9, 0x4e, 0xec, 0x3a, 0xad, 0xb7, 0x5d, 0x50, 0x6d, 0x23, 0x88, - 0x9d, 0x02, 0x9a, 0x5c, 0x17, 0x6c, 0x6c, 0x0c, 0x06, 0x6a, 0xbc, 0x21, 0x6f, 0x63, 0xb8, 0x70, - 0x3a, 0x86, 0x9a, 0x47, 0x5c, 0xa1, 0xa6, 0x9c, 0x6b, 0x08, 0xc0, 0x83, 0x1d, 0x14, 0x2d, 0x03, - 0xc8, 0x4b, 0xf4, 0xd6, 0xaf, 0xf5, 0xd6, 0xb3, 0x4c, 0x93, 0x0d, 0x41, 0xee, 0x53, 0x17, 0xcf, - 0x18, 0x30, 0x07, 0x26, 0x22, 0x34, 0xda, 0xcb, 0xb1, 0xd1, 0xa8, 0xa6, 0x5a, 0x7a, 0x8b, 0xe5, - 0x80, 0x6d, 0x39, 0x12, 0xe3, 0x51, 0x4d, 0x59, 0x28, 0xb1, 0x42, 0xb9, 0x90, 0xc7, 0xb6, 0x3c, - 0x17, 0xa7, 0xb2, 0x36, 0x62, 0x35, 0x42, 0x81, 0x60, 0xbd, 0xaf, 0xaa, 0xc6, 0x60, 0x59, 0x71, - 0x6a, 0xb6, 0x89, 0x20, 0xb3, 0xe1, 0x8a, 0xe5, 0x07, 0x40, 0x67, 0x45, 0x0e, 0xe2, 0xd3, 0xce, - 0xf8, 0x48, 0x6f, 0xb2, 0xa7, 0xa5, 0xaa, 0x86, 0xf0, 0xbe, 0x5c, 0x53, 0x71, 0x3d, 0x9a, 0x64, - 0xfc, 0x22, 0x79, 0x05, 0x49, 0xee, 0x00, 0x9c, 0x11, 0x85, 0x2f, 0x97, 0x97, 0xa4, 0xfa, 0xbf, - 0xd1, 0x47, 0xf6, 0x62, 0xf7, 0x4f, 0x33, 0xb6, 0x29, 0x80, 0xd9, 0xc0, 0x25, 0x3d, 0xb6, 0x27, - 0xd9, 0xd3, 0xc2, 0xb5, 0x57, 0xf9, 0xce, 0x73, 0xab, 0x11, 0x32, 0x2f, 0xa5, 0xcb, 0x3b, 0x2c, - 0x59, 0xdf, 0xe1, 0x99, 0xf6, 0x03, 0x32, 0x3a, 0xf3, 0xda, 0x95, 0x17, 0xd1, 0x74, 0xc7, 0x71, - 0x5d, 0x97, 0x82, 0x65, 0xb7, 0xa0, 0x29, 0x9d, 0x02, 0xda, 0x21, 0x48, 0xf8, 0x69, 0x95, 0x37, - 0x0b, 0x84, 0x03, 0xc1, 0xc9, 0x66, 0x58, 0x4c, 0x68, 0xf8, 0x99, 0xda, 0x0a, 0x26, 0x4c, 0xd1, - 0xc4, 0x81, 0x63, 0xfa, 0x37, 0x2d, 0xf0, 0xd1, 0x36, 0xd4, 0x61, 0x10, 0x72, 0x34, 0x14, 0x24, - 0xb0, 0xed, 0x7a, 0xc7, 0x3e, 0x40, 0x32, 0xd7, 0x86, 0xdb, 0x12, 0x7b, 0xcf, 0xeb, 0xdd, 0x6d, - 0xf1, 0xd8, 0x6e, 0x6f, 0x93, 0x3f, 0x3e, 0x48, 0xc8, 0xc5, 0xc4, 0xb1, 0xed, 0xfa, 0xf6, 0x6d, - 0xa9, 0xcb, 0xdd, 0xc9, 0xa1, 0xf3, 0xd7, 0x86, 0xdb, 0x8b, 0x0e, 0x4d, 0x41, 0x39, 0x18, 0x61, - 0xfe, 0x8c, 0xb0, 0xf7, 0xf0, 0xca, 0xcf, 0xd1, 0x94, 0x99, 0x84, 0xbd, 0x9f, 0x6c, 0x41, 0xb2, - 0xc0, 0xbb, 0xbf, 0x8a, 0xf2, 0x20, 0x73, 0x0e, 0x79, 0xbf, 0x81, 0xc6, 0x87, 0x22, 0xf9, 0x61, - 0x3e, 0x42, 0x25, 0x58, 0x97, 0xb1, 0x37, 0x7c, 0xfd, 0xc6, 0x70, 0xb0, 0x29, 0xbc, 0xd4, 0xdb, - 0xe4, 0x57, 0x49, 0x73, 0xf1, 0x69, 0x94, 0xd3, 0xe0, 0x0f, 0x6c, 0xb4, 0x78, 0x72, 0x1a, 0x05, - 0x72, 0x21, 0x04, 0x23, 0x82, 0x66, 0x84, 0xb5, 0x6e, 0x8f, 0x26, 0xf7, 0x9c, 0x51, 0x71, 0xbd, - 0xd8, 0x88, 0xf2, 0x9a, 0xe0, 0x86, 0x81, 0x60, 0xc6, 0xe3, 0x76, 0x80, 0x4b, 0xf8, 0xbb, 0x85, - 0x9f, 0x15, 0xd2, 0x49, 0x7e, 0x84, 0x7c, 0x17, 0x35, 0x29, 0x61, 0xd7, 0x6b, 0xa3, 0xef, 0xe3, - 0xab, 0xd1, 0xcd, 0xf8, 0xd8, 0xf4, 0x81, 0x4b, 0x2a, 0x69, 0x2f, 0x3e, 0x8d, 0x72, 0x43, 0xbe, - 0x48, 0xe8, 0x63, 0x92, 0xae, 0x0a, 0x42, 0xa6, 0xe2, 0x12, 0x79, 0x56, 0x6a, 0xe0, 0x24, 0x8c, - 0x46, 0x62, 0x95, 0x7f, 0x7d, 0x3c, 0xb1, 0xf7, 0x1b, 0x15, 0x6a, 0xc5, 0x25, 0xf4, 0x55, 0xce, - 0xe3, 0x02, 0xa0, 0xc2, 0xab, 0x3c, 0xd9, 0xed, 0x3d, 0x5e, 0x04, 0xef, 0x31, 0xd8, 0x46, 0xce, - 0xd6, 0x94, 0x19, 0xf0, 0x1e, 0x4f, 0x76, 0xbe, 0xc4, 0x2b, 0xec, 0x2f, 0x71, 0x3e, 0x5e, 0x1a, - 0x96, 0x86, 0xd9, 0x5e, 0xe2, 0xc9, 0x99, 0xde, 0x60, 0xcd, 0x8c, 0x10, 0x0e, 0xe6, 0x77, 0x9f, - 0x18, 0x1c, 0x03, 0x25, 0x89, 0x16, 0xc1, 0xa7, 0x01, 0x49, 0x84, 0x85, 0x83, 0x87, 0xf5, 0xd3, - 0x3b, 0x19, 0xb3, 0x50, 0xbd, 0x7a, 0x4d, 0xed, 0x1a, 0x45, 0x5d, 0x53, 0x59, 0xf1, 0x5d, 0x59, - 0x59, 0xe8, 0x25, 0x15, 0x99, 0x05, 0xdf, 0x8b, 0x58, 0x7a, 0xcb, 0x24, 0x96, 0x90, 0xe9, 0xba, - 0xcd, 0x88, 0xa5, 0xc7, 0x61, 0x55, 0x36, 0x62, 0x89, 0x7f, 0x52, 0x81, 0x4c, 0x22, 0x7a, 0x74, - 0x4c, 0x38, 0x99, 0x94, 0x52, 0x95, 0xe5, 0x45, 0x82, 0xf7, 0xb4, 0x58, 0x53, 0x1e, 0xb1, 0xbc, - 0x48, 0x04, 0x31, 0x8e, 0xf1, 0x2e, 0xbd, 0x8a, 0x90, 0x81, 0x26, 0x57, 0xf9, 0x22, 0xef, 0x07, - 0x69, 0x8a, 0x58, 0x6c, 0x7b, 0xcb, 0x15, 0xcb, 0xf7, 0x19, 0x7f, 0x33, 0x94, 0x15, 0x1f, 0xfa, - 0x3c, 0x79, 0x6c, 0xb3, 0xbe, 0x7d, 0xc4, 0x80, 0x12, 0xae, 0x99, 0x58, 0xc1, 0xe1, 0x6a, 0x78, - 0x62, 0x71, 0x00, 0x18, 0x13, 0x57, 0xdb, 0xc6, 0x71, 0x47, 0xd6, 0x97, 0x05, 0x34, 0x39, 0xbc, - 0xd1, 0xdf, 0xb4, 0x9a, 0xc6, 0x1f, 0x99, 0x8a, 0xdf, 0xbb, 0x1e, 0x41, 0x53, 0xf6, 0x09, 0x92, - 0xa5, 0x4a, 0x6e, 0x15, 0x58, 0xe8, 0x11, 0xc0, 0x20, 0x24, 0xe8, 0xc8, 0xd1, 0x6e, 0xd8, 0xdf, - 0x92, 0xe4, 0x9e, 0xb3, 0xbc, 0xf2, 0x1a, 0x52, 0x43, 0x52, 0x8b, 0x31, 0xa3, 0x27, 0xe9, 0x00, - 0xd9, 0x34, 0xf0, 0x6d, 0xe7, 0x07, 0x82, 0xed, 0x27, 0x73, 0x10, 0xcc, 0xd4, 0x01, 0x87, 0xa6, - 0x77, 0xef, 0x4a, 0x0e, 0xf5, 0xc1, 0x5b, 0xaa, 0x5a, 0x56, 0x25, 0x06, 0xd1, 0xc4, 0x48, 0xc8, - 0x1b, 0x08, 0x37, 0x18, 0xa7, 0x03, 0xaf, 0xfd, 0xeb, 0x9a, 0x52, 0x2d, 0x99, 0xa5, 0xb2, 0x92, - 0x3a, 0xfd, 0xb9, 0xbe, 0xed, 0x9c, 0x3e, 0xf2, 0x29, 0x4d, 0x68, 0xdb, 0x11, 0x1f, 0x8c, 0x9a, - 0x7b, 0x99, 0xd8, 0x7f, 0x81, 0x24, 0x04, 0x4c, 0x8d, 0x7c, 0x9d, 0xe8, 0xfc, 0x2c, 0x79, 0x79, - 0x28, 0x35, 0xb0, 0x5b, 0x3f, 0xbb, 0x37, 0x79, 0x22, 0x96, 0xd8, 0xb7, 0x3d, 0xd1, 0xfb, 0xb5, - 0x6a, 0x8e, 0x26, 0xfe, 0xa5, 0x80, 0x26, 0xb2, 0x48, 0x2a, 0x84, 0x3e, 0xe8, 0x13, 0x34, 0xe5, - 0x0b, 0x41, 0x32, 0xcb, 0xe5, 0x43, 0x02, 0xe4, 0xde, 0x67, 0xd7, 0x9d, 0xed, 0x9d, 0x1e, 0x3d, - 0x68, 0xc9, 0x3e, 0x48, 0xf4, 0x16, 0x3b, 0xd9, 0x3e, 0xc0, 0xbe, 0xc5, 0x07, 0x63, 0x91, 0x50, - 0xb3, 0x8f, 0xef, 0x96, 0xae, 0x43, 0x89, 0x87, 0x32, 0xe2, 0xac, 0x35, 0x34, 0x8a, 0x0f, 0xb5, - 0xa6, 0xb6, 0x8e, 0x40, 0x3a, 0x53, 0x40, 0x37, 0xb0, 0x13, 0xaa, 0xb9, 0xd0, 0xb9, 0xcf, 0xa0, - 0x49, 0x37, 0xfa, 0x48, 0xed, 0x10, 0x34, 0x65, 0x9b, 0x80, 0xb6, 0x0a, 0x12, 0x7e, 0x17, 0xe4, - 0xdf, 0xf0, 0xf4, 0xb1, 0x81, 0x26, 0x77, 0x9c, 0x89, 0x8f, 0xf4, 0xb2, 0xa3, 0x24, 0x01, 0x58, - 0x30, 0x12, 0x65, 0x39, 0x42, 0xc0, 0x8a, 0xc6, 0x68, 0x3c, 0xbc, 0x25, 0xd1, 0x77, 0x12, 0xba, - 0xb0, 0x37, 0x00, 0xec, 0x0e, 0x47, 0xb7, 0x77, 0x26, 0xf6, 0x7d, 0xc3, 0x4c, 0xdc, 0x0c, 0xa8, - 0xe0, 0x62, 0xd8, 0x25, 0xfb, 0xda, 0xaf, 0x46, 0xb7, 0x14, 0x1d, 0xcf, 0x46, 0x13, 0xd6, 0x6c, - 0xf4, 0x95, 0xfb, 0xeb, 0x43, 0xe2, 0x13, 0x28, 0x7b, 0x5d, 0x4d, 0x39, 0x79, 0x9f, 0x30, 0xe5, - 0x6a, 0xfc, 0x96, 0x0b, 0x93, 0x23, 0xbb, 0x13, 0xfd, 0x7f, 0x64, 0xea, 0xe8, 0x75, 0x35, 0xe5, - 0x44, 0xb2, 0x66, 0x54, 0x1b, 0xcf, 0x5a, 0x79, 0x55, 0x85, 0x4a, 0xde, 0x29, 0x78, 0xd6, 0x8c, - 0x02, 0x79, 0x32, 0x24, 0x21, 0x82, 0xde, 0x2a, 0x2e, 0x13, 0x2b, 0x51, 0x7e, 0x55, 0x4d, 0x75, - 0x73, 0xe3, 0x7a, 0x5f, 0x88, 0x64, 0x64, 0xc4, 0x38, 0x81, 0x15, 0xca, 0x73, 0xa1, 0xb9, 0xde, - 0xd1, 0xaa, 0x77, 0x7f, 0xa5, 0x77, 0x0d, 0x24, 0xf7, 0x9c, 0xa9, 0xaa, 0xd1, 0x7b, 0xbf, 0xd1, - 0x0f, 0x47, 0x55, 0xd6, 0x4a, 0x7c, 0x9a, 0x61, 0xd3, 0x1c, 0x33, 0xcf, 0x01, 0xc5, 0xa6, 0x22, - 0x19, 0x02, 0xdf, 0x0b, 0xca, 0x18, 0x13, 0x94, 0x57, 0x8a, 0x26, 0x90, 0x27, 0x8c, 0x70, 0x70, - 0xa0, 0xd7, 0x20, 0x65, 0x66, 0x57, 0xcd, 0x24, 0xf0, 0x69, 0xa5, 0x2d, 0xb8, 0x59, 0xde, 0x18, - 0xc1, 0xcd, 0x26, 0xd8, 0x83, 0x9b, 0x95, 0x3e, 0xad, 0x29, 0x4f, 0x20, 0x59, 0xa2, 0xdb, 0x2d, - 0x3f, 0x0a, 0x27, 0x0b, 0xc4, 0xc8, 0x9a, 0xd7, 0x2a, 0x09, 0xa9, 0x02, 0x2b, 0x68, 0xd3, 0xf4, - 0xb6, 0x6d, 0xb0, 0xcd, 0x45, 0x7b, 0x05, 0x34, 0x99, 0x74, 0x82, 0xac, 0x6f, 0x33, 0x51, 0x2e, - 0xb6, 0x10, 0x00, 0x75, 0x8e, 0x0a, 0x3f, 0x0c, 0x18, 0x34, 0x8e, 0x0f, 0xe0, 0x0d, 0x1f, 0xcd, - 0x5c, 0xfb, 0x6e, 0x73, 0x5b, 0x38, 0xdb, 0xba, 0x85, 0x74, 0x87, 0x4a, 0x8d, 0xf3, 0x40, 0x0b, - 0x25, 0xcb, 0x84, 0xf2, 0xcc, 0x35, 0xaf, 0x55, 0x7a, 0x8c, 0x03, 0x84, 0xc5, 0x92, 0x75, 0xfd, - 0x93, 0x8c, 0xa5, 0x31, 0xa6, 0xc8, 0x40, 0xf5, 0xfd, 0x5a, 0xdc, 0x2d, 0xf0, 0x7c, 0x94, 0x60, - 0xba, 0x1f, 0x70, 0x7c, 0x54, 0x1d, 0x97, 0xfa, 0x0b, 0x20, 0xb6, 0xac, 0xbc, 0x76, 0xf1, 0x6b, - 0xcb, 0x6b, 0x17, 0x2f, 0xc3, 0xff, 0x16, 0xe9, 0xdb, 0x0e, 0xea, 0xad, 0x24, 0xc0, 0xa2, 0x71, - 0x2d, 0x89, 0x69, 0xfe, 0x76, 0xbd, 0xbf, 0x87, 0x8d, 0x02, 0xa1, 0xef, 0x4d, 0x39, 0x53, 0x6f, - 0x54, 0xbf, 0x74, 0x4e, 0xef, 0xfa, 0x06, 0xf4, 0x2a, 0xc5, 0x3c, 0x63, 0xf6, 0x2a, 0x9a, 0x44, - 0x7e, 0x70, 0x51, 0x81, 0x16, 0x19, 0xbc, 0x3b, 0x5f, 0x2e, 0x4f, 0x86, 0x65, 0xd1, 0x60, 0x18, - 0x13, 0x42, 0xb9, 0x05, 0x42, 0x61, 0x34, 0x5f, 0xe5, 0x1b, 0x89, 0x61, 0x2e, 0x21, 0x57, 0x36, - 0xcd, 0x0d, 0xbd, 0x8a, 0x4b, 0xc7, 0xa5, 0x90, 0x90, 0x2d, 0x34, 0xf6, 0xbd, 0xf1, 0x8d, 0xb1, - 0xdd, 0xa0, 0x62, 0x82, 0x64, 0x67, 0xd8, 0x18, 0x07, 0x2e, 0x47, 0x3c, 0xb6, 0x3b, 0xd5, 0xff, - 0x6d, 0x62, 0xdf, 0x08, 0x6c, 0x2c, 0xa0, 0x6a, 0x1c, 0x87, 0xa3, 0xd0, 0xc3, 0xe5, 0xc9, 0x7a, - 0x1d, 0xe5, 0x85, 0x7c, 0x1b, 0xfc, 0xc1, 0x00, 0x81, 0xf7, 0x67, 0x30, 0xbc, 0x43, 0x91, 0x2c, - 0x9a, 0x31, 0x62, 0x7a, 0xcf, 0x18, 0x57, 0xe5, 0xe8, 0xd1, 0xef, 0xca, 0xe6, 0x84, 0x66, 0x15, - 0x08, 0x85, 0xf5, 0xce, 0xd8, 0x20, 0xa4, 0x97, 0xa8, 0xa2, 0xdc, 0x4d, 0x4d, 0x75, 0x55, 0x15, - 0xe4, 0x1e, 0x3c, 0x67, 0xd0, 0x23, 0x50, 0x22, 0x17, 0x13, 0x48, 0x3c, 0xbd, 0x39, 0xd1, 0xdb, - 0x9e, 0x1c, 0xd9, 0x9d, 0x1c, 0xea, 0xf5, 0xd7, 0xc3, 0x67, 0xc4, 0x07, 0x77, 0x90, 0x4d, 0xc2, - 0x7a, 0x4d, 0x58, 0xe9, 0x22, 0x15, 0x3a, 0x5a, 0x13, 0xc9, 0xe5, 0xd1, 0x44, 0x72, 0xee, 0x6a, - 0xdb, 0xef, 0xca, 0x66, 0x85, 0x66, 0xb8, 0x2d, 0x90, 0x63, 0x87, 0xd7, 0x5a, 0x64, 0xff, 0x13, - 0x68, 0x2e, 0xec, 0xb9, 0x16, 0xd9, 0xff, 0x64, 0x90, 0xfa, 0x83, 0xc8, 0x3f, 0xed, 0xa8, 0xbc, - 0x12, 0x20, 0x8c, 0x26, 0xf9, 0x02, 0x9b, 0xfc, 0xa1, 0x60, 0xa0, 0xd1, 0x17, 0xa0, 0x6e, 0x28, - 0xaf, 0x6b, 0xca, 0x53, 0x12, 0x5f, 0x2e, 0x3f, 0x4a, 0xb6, 0x01, 0xcb, 0x4b, 0x4b, 0x3c, 0x00, - 0xa8, 0x6f, 0x35, 0x85, 0x82, 0xf5, 0x25, 0x9e, 0x7a, 0xdf, 0xfa, 0xe6, 0x0d, 0x25, 0x9e, 0x70, - 0xc4, 0xbb, 0xe1, 0x1d, 0x3c, 0xa7, 0x9a, 0x63, 0xfc, 0xad, 0xe6, 0xe2, 0x0a, 0x35, 0xc7, 0x68, - 0xa5, 0xf2, 0xa3, 0x89, 0x6f, 0x22, 0xe4, 0x0b, 0x6c, 0xf0, 0x07, 0x20, 0x09, 0xf0, 0x44, 0xaa, - 0xe2, 0x7b, 0x44, 0xe2, 0x8a, 0xe5, 0x42, 0x7d, 0x78, 0x6f, 0xe2, 0xd3, 0x5d, 0x4c, 0x2c, 0x07, - 0x24, 0xe0, 0xc6, 0xe5, 0xe1, 0xef, 0xca, 0xa6, 0x86, 0x26, 0xab, 0xd9, 0x1b, 0x97, 0x87, 0xd5, - 0x5c, 0xac, 0x3b, 0x51, 0xb9, 0x6e, 0xe2, 0x6a, 0x34, 0xc9, 0x1f, 0xae, 0xfc, 0xc8, 0x00, 0x53, - 0xff, 0x26, 0x20, 0xe6, 0xf2, 0x41, 0x66, 0xce, 0x97, 0xcb, 0xf3, 0x4c, 0xb1, 0x34, 0xde, 0xae, - 0xe4, 0xce, 0xaf, 0xf5, 0xce, 0x63, 0x04, 0xcd, 0xf1, 0x2d, 0xc5, 0xaf, 0x05, 0x76, 0x63, 0xf0, - 0x72, 0x81, 0x7c, 0x6b, 0x17, 0x34, 0xa5, 0x55, 0x90, 0xf8, 0x1a, 0x79, 0x13, 0xaf, 0xe2, 0x61, - 0x9b, 0xf4, 0x9e, 0xaf, 0xde, 0x07, 0x99, 0xc3, 0x4b, 0x3c, 0x61, 0x7f, 0x60, 0x43, 0x83, 0xef, - 0x9d, 0x12, 0x8f, 0x59, 0x48, 0xbd, 0x0c, 0x62, 0xa9, 0xcd, 0x7b, 0x46, 0xb7, 0x9c, 0x82, 0x21, - 0xae, 0x0d, 0x77, 0x40, 0x53, 0xa8, 0x4d, 0xee, 0xfc, 0x3a, 0xf9, 0xd5, 0x4e, 0x56, 0xc5, 0x88, - 0x61, 0x68, 0xa3, 0xf2, 0x8b, 0x10, 0xf7, 0x0b, 0x68, 0x86, 0x39, 0x7a, 0x39, 0xc3, 0x3e, 0x40, - 0x2a, 0xe2, 0xd4, 0x53, 0x6e, 0xf5, 0xf2, 0x6b, 0xc4, 0x0d, 0x85, 0xe6, 0x89, 0xb3, 0xad, 0x08, - 0xd3, 0x7f, 0x51, 0x30, 0x18, 0x86, 0x87, 0x38, 0x35, 0x70, 0xb2, 0xaa, 0x02, 0x38, 0x66, 0x68, - 0xf8, 0x4a, 0x30, 0x1c, 0x21, 0x8f, 0xa1, 0xdb, 0x0c, 0xe2, 0x67, 0x02, 0x73, 0x35, 0x9b, 0x82, - 0x59, 0xa8, 0x12, 0xf7, 0x10, 0x09, 0x26, 0x02, 0xb5, 0x78, 0x98, 0xbd, 0xad, 0x29, 0xaf, 0x33, - 0x0f, 0xb3, 0x97, 0xd9, 0xaa, 0xa0, 0xc0, 0x14, 0x96, 0x74, 0xc7, 0xf4, 0xc1, 0x53, 0x60, 0xf9, - 0xcc, 0x5b, 0x3b, 0x43, 0x98, 0xc1, 0xf8, 0x60, 0xa7, 0xfe, 0xed, 0x7e, 0xd0, 0xd9, 0xca, 0xcb, - 0xe2, 0x83, 0x5f, 0x7e, 0x57, 0x96, 0xdb, 0x23, 0x64, 0x15, 0xcc, 0x64, 0x3e, 0x69, 0xa5, 0xa6, - 0xd4, 0x69, 0x2a, 0x7d, 0x14, 0x67, 0x9a, 0x52, 0xa7, 0x89, 0x4c, 0xde, 0xf4, 0x5d, 0x59, 0x5e, - 0x28, 0xa7, 0x20, 0xab, 0x70, 0xa6, 0x29, 0x78, 0xda, 0x2c, 0xa0, 0xa9, 0xc1, 0x40, 0xc3, 0xc7, - 0xf0, 0x19, 0x55, 0x81, 0xf7, 0x82, 0x98, 0x9a, 0xcc, 0x2f, 0xfb, 0x85, 0xa6, 0xac, 0x93, 0x6c, - 0x55, 0x72, 0x45, 0x7c, 0xa8, 0x15, 0x46, 0x23, 0x1b, 0x6e, 0x72, 0x15, 0x9d, 0x20, 0x22, 0x4f, - 0xf6, 0x1e, 0xd5, 0xfb, 0xc9, 0xd3, 0x0b, 0x2d, 0x9d, 0x6a, 0x13, 0xdb, 0xa8, 0xe2, 0x35, 0x01, - 0x4d, 0x5c, 0x5f, 0x17, 0x26, 0xb6, 0xe4, 0x20, 0x0c, 0x5a, 0x3a, 0xe6, 0x3e, 0x97, 0xd1, 0x1e, - 0xb0, 0xd5, 0x47, 0x05, 0x4d, 0x39, 0x24, 0x48, 0xe6, 0x40, 0x72, 0xa7, 0xc0, 0x2f, 0xf5, 0x16, - 0x44, 0x04, 0xe6, 0x2d, 0x46, 0x88, 0x41, 0x06, 0x3c, 0x7c, 0x58, 0x3e, 0xad, 0x9a, 0x4b, 0x13, - 0x13, 0x02, 0x9a, 0xe4, 0xe3, 0xec, 0xe7, 0x45, 0xf7, 0x4c, 0xfe, 0x8e, 0x6f, 0xe6, 0xec, 0xcf, - 0xe1, 0xab, 0xbb, 0x05, 0x4d, 0xe9, 0x10, 0x24, 0x7e, 0x30, 0xf9, 0x77, 0xb6, 0xcf, 0xfe, 0x61, - 0x4c, 0xea, 0xd9, 0xc7, 0x8e, 0xee, 0x39, 0x68, 0xf9, 0x4c, 0x7e, 0x2d, 0x62, 0xb9, 0x41, 0xaf, - 0x05, 0x9b, 0xeb, 0xab, 0x2a, 0x48, 0x06, 0x4d, 0x4c, 0x2e, 0xd2, 0x32, 0x79, 0x9e, 0x3d, 0x28, - 0x61, 0x7c, 0x70, 0x07, 0x68, 0xd6, 0xab, 0x2a, 0x54, 0xda, 0x4a, 0xfc, 0x56, 0x40, 0x08, 0xb6, - 0x04, 0x23, 0x33, 0x10, 0x85, 0x1d, 0x16, 0x34, 0xe5, 0xa0, 0x20, 0x71, 0x15, 0xf2, 0x0e, 0x8b, - 0xb4, 0xc8, 0xd4, 0xfb, 0xb6, 0x7e, 0x9d, 0xe8, 0x6d, 0x37, 0xde, 0x70, 0x83, 0x41, 0x38, 0x9a, - 0xd8, 0xdb, 0x76, 0x6d, 0xb8, 0x63, 0x95, 0x52, 0xad, 0xbc, 0x5c, 0x59, 0xf1, 0x6e, 0xf9, 0xca, - 0xb5, 0xb5, 0x6b, 0x2a, 0xd5, 0x45, 0x70, 0xd6, 0x89, 0xf6, 0x03, 0xc9, 0xfe, 0xe3, 0x30, 0x4a, - 0x31, 0x03, 0xdc, 0xc4, 0x81, 0x01, 0x4f, 0x55, 0x75, 0x45, 0x65, 0x4d, 0x65, 0x75, 0x45, 0x65, - 0xf5, 0x1a, 0xd6, 0xc7, 0x86, 0xe2, 0x52, 0xdb, 0xbf, 0x34, 0x2e, 0xc0, 0xd0, 0xf9, 0xc4, 0x8e, - 0x13, 0xc5, 0x2a, 0xb7, 0x30, 0xb1, 0x14, 0xe5, 0x41, 0x08, 0xc2, 0xc2, 0x59, 0x58, 0x2e, 0x88, - 0x69, 0x73, 0x52, 0x24, 0xcf, 0x82, 0x01, 0xe0, 0x97, 0x87, 0xc9, 0x02, 0x49, 0xb5, 0xf8, 0x24, - 0xca, 0x0d, 0x04, 0xeb, 0x7d, 0xe1, 0xc2, 0xd9, 0xb8, 0x2b, 0xa6, 0x94, 0xa1, 0x44, 0x9e, 0x01, - 0x3d, 0x8d, 0x1f, 0x66, 0x3f, 0xa8, 0x13, 0x0f, 0x08, 0x68, 0x5a, 0xc0, 0x17, 0xf9, 0x30, 0x18, - 0xda, 0x58, 0xeb, 0x8b, 0x44, 0xfc, 0x81, 0x0d, 0xd4, 0x2c, 0x7b, 0xbe, 0xc3, 0x3a, 0xc7, 0xd2, - 0xac, 0xac, 0x5a, 0x53, 0xca, 0x25, 0x7b, 0x5f, 0x79, 0x19, 0xa3, 0x6e, 0x93, 0x43, 0xbd, 0xfa, - 0xd1, 0x58, 0xf2, 0x78, 0x14, 0x58, 0x5c, 0xe6, 0x3c, 0x08, 0x6e, 0x13, 0x89, 0x7d, 0x97, 0xa0, - 0xfc, 0xbb, 0xb2, 0xdc, 0xcf, 0x84, 0xac, 0x7c, 0x41, 0xb5, 0x0f, 0x25, 0xfe, 0x2f, 0x02, 0x9a, - 0x49, 0x96, 0x50, 0xe6, 0x0d, 0xfb, 0xeb, 0xd8, 0xfa, 0x20, 0xf2, 0xef, 0x43, 0x4e, 0x4f, 0x33, - 0x47, 0xdb, 0xb2, 0x4f, 0x34, 0x25, 0x28, 0xb9, 0x8e, 0x22, 0xff, 0x9c, 0x20, 0x1f, 0xbc, 0x46, - 0x72, 0x61, 0xe9, 0x4a, 0xe1, 0x79, 0x23, 0x8a, 0x53, 0xec, 0xbc, 0xc0, 0x27, 0xaf, 0xdd, 0xd4, - 0x54, 0x97, 0xec, 0x6b, 0x37, 0x4e, 0x92, 0x7e, 0x0a, 0xf9, 0x32, 0xeb, 0x07, 0xb9, 0x4e, 0x2b, - 0xfe, 0xa3, 0x80, 0x66, 0x93, 0x0a, 0xa5, 0x7e, 0x93, 0x37, 0x50, 0xe7, 0x63, 0xdf, 0x05, 0xa1, - 0x85, 0x1f, 0x4e, 0xf3, 0x5d, 0xd6, 0xd6, 0x65, 0x5b, 0x04, 0x4d, 0xf9, 0x53, 0x69, 0x8e, 0xd1, - 0xd6, 0xe7, 0x1c, 0x4b, 0xae, 0xa7, 0x5e, 0x18, 0x87, 0x46, 0x0f, 0x5c, 0xe0, 0x63, 0x76, 0xb2, - 0xaf, 0xd3, 0xbb, 0x0d, 0xa6, 0xcb, 0xdf, 0xb4, 0x29, 0x0c, 0xd5, 0xc6, 0x17, 0x5a, 0x43, 0xe7, - 0x41, 0x07, 0x60, 0x20, 0x5d, 0xcf, 0x4e, 0x4d, 0xf3, 0x25, 0xe2, 0x5f, 0x0b, 0x68, 0xb2, 0x01, - 0x5f, 0xec, 0xd3, 0xe6, 0xba, 0xbb, 0xa1, 0x54, 0x9b, 0x6d, 0xca, 0x34, 0x41, 0x53, 0x76, 0x09, - 0x92, 0xa5, 0x9f, 0xfc, 0x7b, 0x3e, 0x06, 0xa9, 0xed, 0x03, 0x88, 0xaf, 0x30, 0x75, 0x57, 0x26, - 0x2e, 0xcd, 0x9c, 0x0f, 0x33, 0x1c, 0x92, 0xd1, 0x72, 0xff, 0xb1, 0x64, 0xfb, 0x25, 0xbd, 0xed, - 0xab, 0xd1, 0xde, 0x28, 0x31, 0xda, 0xc3, 0xca, 0x5b, 0xe3, 0x35, 0xa2, 0x63, 0x96, 0x95, 0xd7, - 0x02, 0x29, 0x4f, 0xbc, 0x7f, 0xb0, 0x0c, 0x53, 0xb5, 0xac, 0x46, 0xdc, 0x22, 0xa0, 0x69, 0x20, - 0x44, 0x55, 0x7d, 0xfe, 0x40, 0x38, 0xe2, 0x6d, 0x68, 0xc0, 0x41, 0x90, 0xf3, 0xcb, 0xde, 0xd0, - 0x94, 0xb5, 0x92, 0xbd, 0x4e, 0x2e, 0x03, 0x42, 0x6c, 0x74, 0x7b, 0x67, 0xea, 0xf3, 0x56, 0x3e, - 0xec, 0x28, 0x2f, 0xce, 0x05, 0x26, 0x3e, 0xf5, 0xd9, 0x57, 0x80, 0x54, 0x12, 0x5b, 0x5b, 0xf5, - 0x6d, 0x7f, 0x8c, 0x0f, 0xee, 0x4c, 0xf4, 0xb6, 0x27, 0xf6, 0xb6, 0xa9, 0xf6, 0x41, 0xc5, 0x83, - 0x02, 0x9a, 0xee, 0x0f, 0xf8, 0x23, 0x2b, 0x83, 0x1b, 0xfc, 0x81, 0x1a, 0x6f, 0x38, 0xfc, 0x61, - 0x30, 0x54, 0x8f, 0x53, 0x5b, 0x4e, 0x2c, 0xdb, 0xa8, 0x29, 0xef, 0x4b, 0xce, 0x5a, 0xb9, 0x36, - 0xc3, 0x12, 0x40, 0xde, 0xc4, 0xc4, 0x07, 0x4d, 0xa4, 0xcf, 0xd8, 0x2b, 0x73, 0xce, 0x23, 0xbe, - 0x81, 0x26, 0x91, 0x5b, 0x8c, 0x31, 0xf0, 0x03, 0x78, 0x51, 0xd8, 0x04, 0x89, 0x2f, 0x97, 0x17, - 0xf2, 0x48, 0x02, 0xf0, 0xef, 0xa2, 0xe6, 0x40, 0xbd, 0x2f, 0xd4, 0xe0, 0xfd, 0x78, 0x69, 0x70, - 0x13, 0xfe, 0xbf, 0x58, 0xe5, 0xbb, 0x88, 0x7f, 0x26, 0xa0, 0x39, 0xde, 0xe6, 0x48, 0xf0, 0x65, - 0x5f, 0xc0, 0x20, 0xbe, 0x7c, 0xab, 0xf0, 0xa7, 0x60, 0xf5, 0x34, 0x09, 0x9a, 0xbc, 0x53, 0xd0, - 0x94, 0xed, 0x82, 0x94, 0xae, 0x95, 0xdc, 0xc0, 0x3f, 0x77, 0xab, 0xb8, 0x9d, 0x00, 0x33, 0x10, - 0xea, 0x70, 0x8e, 0x49, 0x0f, 0x42, 0xb8, 0x82, 0x38, 0x8c, 0xf3, 0x02, 0x7c, 0xd6, 0x43, 0xe4, - 0x4e, 0x89, 0xfd, 0x17, 0x4a, 0x3c, 0x70, 0x27, 0x80, 0x0f, 0x25, 0x68, 0x19, 0x1f, 0x52, 0xa0, - 0xce, 0xa7, 0xa6, 0x5b, 0x86, 0xf8, 0x7f, 0x08, 0x68, 0x22, 0x6d, 0x15, 0x2e, 0x7c, 0xd0, 0x5d, - 0xa3, 0x55, 0x45, 0x1a, 0x50, 0x73, 0xc6, 0x72, 0xec, 0x78, 0x5c, 0xf6, 0x85, 0xa0, 0x29, 0x27, - 0x05, 0xc9, 0xec, 0x2f, 0xef, 0xb7, 0xd3, 0x2e, 0x9e, 0x34, 0xf3, 0xd2, 0x85, 0x97, 0x78, 0x78, - 0xc9, 0x22, 0xbf, 0x76, 0xf8, 0x42, 0xfa, 0x55, 0xc0, 0x84, 0xb3, 0x89, 0xa0, 0x61, 0xb2, 0xa7, - 0xc5, 0x92, 0xd4, 0x0f, 0x72, 0xab, 0x41, 0xb6, 0x67, 0x90, 0xe1, 0xe8, 0x1d, 0x31, 0x88, 0x60, - 0xa0, 0x9a, 0x8b, 0x14, 0xcf, 0x0b, 0xc4, 0xe3, 0x15, 0x93, 0x8d, 0x9e, 0x71, 0xd2, 0x6d, 0x95, - 0xb4, 0x07, 0x50, 0x30, 0x98, 0xba, 0x37, 0x87, 0x91, 0xd7, 0xea, 0x7d, 0x07, 0xf4, 0x2d, 0x34, - 0x9d, 0x02, 0xd0, 0x1c, 0xc4, 0x1f, 0x0d, 0xd0, 0x83, 0x2f, 0xbc, 0xfe, 0xdd, 0xe6, 0x50, 0xc3, - 0x52, 0x92, 0x81, 0xed, 0x5d, 0x7f, 0xa3, 0x77, 0x83, 0x6f, 0x69, 0x53, 0xc8, 0xbf, 0xc9, 0xdf, - 0xe0, 0xab, 0xdf, 0xe0, 0x83, 0x82, 0x64, 0x5f, 0x3b, 0xdf, 0x59, 0x35, 0x67, 0x10, 0x7f, 0x85, - 0xf2, 0x1b, 0x69, 0xb8, 0xda, 0x05, 0xa6, 0x91, 0x01, 0x2b, 0x94, 0x9f, 0x24, 0x93, 0x13, 0x27, - 0xb4, 0x45, 0xe5, 0x0a, 0xf8, 0x8d, 0x32, 0x27, 0x45, 0xe2, 0x43, 0x8b, 0x1d, 0xc8, 0x8a, 0x17, - 0x81, 0xb9, 0x5b, 0xb1, 0xca, 0x06, 0x10, 0x7f, 0x8f, 0xa6, 0xe2, 0xe9, 0x4c, 0x4e, 0xa6, 0x08, - 0xcf, 0xb3, 0x4e, 0x53, 0x6a, 0x25, 0x5b, 0x95, 0xac, 0xe8, 0x03, 0xc3, 0x7a, 0xeb, 0x49, 0xc6, - 0x1c, 0x00, 0xb9, 0x46, 0x25, 0x2c, 0x20, 0x4e, 0x25, 0x3b, 0x40, 0xc8, 0x91, 0xfd, 0x17, 0x92, - 0x5f, 0xc4, 0xf4, 0xe8, 0x30, 0x9b, 0xd9, 0x36, 0xa4, 0xe8, 0x47, 0xd3, 0xfc, 0x61, 0xd0, 0xc4, - 0x91, 0x42, 0x9c, 0x68, 0x32, 0xbf, 0xec, 0x45, 0x4d, 0x79, 0x4e, 0xb2, 0xd7, 0xc9, 0xc5, 0x8c, - 0xaf, 0x04, 0x35, 0x2a, 0xcc, 0x5d, 0xc2, 0xdd, 0x1b, 0x36, 0x93, 0xbd, 0xaf, 0xdd, 0xc4, 0x71, - 0x61, 0x5a, 0x13, 0x47, 0x42, 0x99, 0xa5, 0x33, 0x71, 0x3c, 0x29, 0xa0, 0x69, 0x04, 0x72, 0xca, - 0xbd, 0x11, 0xdf, 0x86, 0x60, 0xe8, 0x63, 0x9c, 0x13, 0x72, 0x62, 0xd9, 0x6f, 0x34, 0xe5, 0x23, - 0xc9, 0x5e, 0x27, 0xfb, 0x4c, 0xbe, 0xb5, 0xed, 0x2b, 0x9b, 0x5a, 0xc3, 0x00, 0xd6, 0xb6, 0x6d, - 0x8c, 0x2b, 0x84, 0xaf, 0x4b, 0x1c, 0xc0, 0x09, 0xc7, 0x87, 0x62, 0x57, 0xa3, 0x9b, 0x61, 0xc7, - 0x17, 0xad, 0x6f, 0xf6, 0x37, 0xd4, 0xfb, 0x42, 0x4b, 0xfd, 0x8d, 0x4d, 0xc1, 0x50, 0xc4, 0x17, - 0x2a, 0xe6, 0xe2, 0xf6, 0x42, 0x5b, 0xd5, 0x3e, 0xaf, 0x58, 0x8d, 0x26, 0xfa, 0xc3, 0xef, 0x86, - 0xdf, 0xf7, 0x86, 0x7c, 0xf5, 0x38, 0xdf, 0x63, 0x3e, 0x71, 0x02, 0x62, 0xa5, 0xf2, 0x02, 0x6e, - 0x3b, 0xcf, 0xc6, 0x63, 0x5f, 0x39, 0xb7, 0x13, 0x1b, 0x8e, 0xe1, 0xc6, 0xe2, 0xff, 0x26, 0xa0, - 0xa9, 0x75, 0x9c, 0xd3, 0x50, 0x55, 0x05, 0x49, 0xd8, 0x48, 0x12, 0x9d, 0xd8, 0x2a, 0xe5, 0x2f, - 0x09, 0x8d, 0xcb, 0x88, 0x96, 0x78, 0x6c, 0x37, 0xf8, 0x91, 0x55, 0x55, 0x94, 0x30, 0x3e, 0x2b, - 0xf9, 0x45, 0xec, 0x6a, 0x74, 0x0b, 0xc9, 0xd9, 0xb8, 0xe3, 0x68, 0x6a, 0xeb, 0x88, 0xf1, 0x49, - 0xbb, 0x2e, 0xea, 0x5d, 0xfb, 0x58, 0x7b, 0x7d, 0x7b, 0x5f, 0x6a, 0x60, 0xf3, 0xd5, 0xe8, 0x16, - 0x90, 0x13, 0xc5, 0x63, 0xbb, 0xc1, 0xa7, 0x3d, 0x3e, 0xb8, 0x33, 0x39, 0x74, 0x34, 0x3e, 0x18, - 0x05, 0x32, 0x9a, 0xf3, 0x63, 0x33, 0x28, 0xa3, 0xa8, 0x49, 0x4e, 0x43, 0xf3, 0x64, 0xec, 0x5c, - 0xb2, 0xff, 0x38, 0xe0, 0x0a, 0xdb, 0xd8, 0xaa, 0x6d, 0xf1, 0xe2, 0x06, 0x87, 0x79, 0xff, 0x22, - 0xfc, 0xad, 0x18, 0x2c, 0xed, 0xe6, 0xfd, 0x92, 0x85, 0xd1, 0xb4, 0xf9, 0x4d, 0x73, 0x7e, 0x4f, - 0x89, 0xc3, 0x97, 0x1d, 0xc1, 0x68, 0x1a, 0x41, 0x19, 0x8f, 0xf5, 0xdc, 0xe1, 0xc2, 0x62, 0x8c, - 0x99, 0xee, 0x73, 0x23, 0x52, 0x70, 0x0b, 0x50, 0xce, 0x72, 0x3d, 0xe4, 0x05, 0x36, 0xec, 0x6b, - 0xce, 0x77, 0xf6, 0x18, 0xb5, 0x4a, 0x35, 0x9b, 0x8b, 0x6f, 0xa3, 0x09, 0xfe, 0xf0, 0x2a, 0xff, - 0x47, 0xbe, 0xfa, 0x42, 0x09, 0x83, 0x04, 0x0e, 0xdb, 0x4c, 0xcb, 0xe4, 0x27, 0x8c, 0x4b, 0xdc, - 0xff, 0x8d, 0x13, 0x20, 0x13, 0x17, 0x2f, 0x8e, 0x6e, 0x25, 0xa8, 0x8e, 0x83, 0x3d, 0x80, 0x11, - 0xda, 0x5d, 0x5c, 0x6f, 0x40, 0x08, 0x5c, 0x6d, 0x6f, 0xa3, 0x1a, 0x6c, 0xf0, 0x15, 0xfe, 0x8c, - 0x73, 0x13, 0xb3, 0x56, 0xc9, 0x0f, 0x7b, 0x3f, 0x0c, 0x27, 0x7b, 0x5a, 0xfc, 0xde, 0x46, 0x4f, - 0x28, 0xd8, 0x60, 0x3c, 0x0b, 0x70, 0x25, 0xf0, 0xf7, 0xf8, 0x36, 0x12, 0x36, 0x4b, 0xb5, 0x75, - 0x13, 0x4f, 0x64, 0xa1, 0xc9, 0x00, 0xbe, 0xaa, 0x37, 0xb0, 0xc1, 0x17, 0x2e, 0x2c, 0x71, 0xa7, - 0xc5, 0x01, 0x6a, 0x29, 0x36, 0xc7, 0x4d, 0xcb, 0xfe, 0x93, 0xa0, 0x29, 0xff, 0x41, 0x90, 0x2c, - 0xfd, 0xe5, 0x7f, 0x29, 0xf0, 0xc0, 0xaf, 0x77, 0x0d, 0xa4, 0x4e, 0x6f, 0x4e, 0x75, 0x6c, 0xd5, - 0x0f, 0x9d, 0x07, 0xca, 0x6c, 0x91, 0x3e, 0xf2, 0x29, 0xbb, 0x32, 0xe6, 0xe3, 0x1b, 0x1f, 0xdc, - 0xc3, 0x0f, 0x03, 0xa0, 0x6c, 0x3c, 0xca, 0x30, 0x1a, 0x48, 0x88, 0x13, 0xed, 0xd1, 0x44, 0x6f, - 0x3b, 0x35, 0xca, 0x3c, 0x64, 0xed, 0xd0, 0x69, 0xef, 0x93, 0x1c, 0x3a, 0x98, 0x38, 0xda, 0x1d, - 0x8f, 0x1d, 0x02, 0xa1, 0x59, 0xa2, 0x6d, 0x5f, 0x2a, 0xda, 0xca, 0x2c, 0x3a, 0xc9, 0x2a, 0xc1, - 0xaa, 0xbd, 0xeb, 0x4b, 0x03, 0xb2, 0x31, 0x75, 0x00, 0xa6, 0x7e, 0xc5, 0xaa, 0xe5, 0xab, 0xbe, - 0x8f, 0xe7, 0xe9, 0x2f, 0xd0, 0x54, 0xab, 0xc4, 0xc2, 0xa5, 0xf7, 0x63, 0x56, 0x7b, 0x0b, 0x07, - 0x59, 0x5d, 0xf6, 0xda, 0xea, 0xa6, 0x70, 0x4d, 0x43, 0xf3, 0x06, 0x7f, 0x80, 0x1f, 0xfa, 0x2d, - 0x54, 0x60, 0x17, 0x0c, 0xdc, 0xbc, 0xc1, 0xa9, 0xc7, 0x2c, 0x7b, 0xb1, 0xaf, 0x4b, 0x57, 0xd6, - 0x9e, 0xa5, 0x29, 0xad, 0x59, 0x68, 0x4b, 0x96, 0xe4, 0xd0, 0x34, 0xc8, 0xef, 0xf1, 0x97, 0xcc, - 0xe6, 0x76, 0x43, 0xc0, 0x06, 0xdb, 0xb1, 0x1b, 0x04, 0x41, 0xef, 0x99, 0x6b, 0xc3, 0x1d, 0xbc, - 0x98, 0xe1, 0x6a, 0x74, 0x0b, 0xe8, 0x9b, 0x79, 0x41, 0x54, 0x6a, 0xe0, 0x22, 0x9c, 0x1e, 0x28, - 0x9e, 0x13, 0xbb, 0x4e, 0xea, 0x5d, 0x9f, 0x5f, 0x11, 0x4c, 0x4d, 0xc2, 0x15, 0x81, 0xd7, 0x05, - 0x5c, 0x11, 0x98, 0x84, 0xfe, 0x8a, 0x40, 0xe4, 0xea, 0x56, 0x5f, 0x36, 0x4e, 0xea, 0x7c, 0x45, - 0xe0, 0xc5, 0xc1, 0x57, 0x04, 0x4e, 0x7e, 0x7b, 0x45, 0xe0, 0x85, 0xaf, 0xe6, 0x1c, 0x50, 0xc7, - 0x82, 0xa2, 0xfd, 0x45, 0x0e, 0x9a, 0x6e, 0xdb, 0x84, 0x70, 0xd3, 0x9d, 0xee, 0xd9, 0x53, 0x63, - 0x71, 0x81, 0x9b, 0x93, 0x8e, 0x37, 0x27, 0xc1, 0xbb, 0xbc, 0x11, 0xaf, 0x5c, 0x98, 0xfa, 0xec, - 0x2b, 0x38, 0x59, 0x83, 0x98, 0xe1, 0x4e, 0x87, 0xf8, 0xc0, 0xfd, 0x0e, 0xe5, 0x44, 0xbc, 0xe1, - 0x8d, 0xc4, 0xf1, 0x6d, 0xa6, 0x9b, 0xd1, 0x17, 0x24, 0x02, 0xc1, 0xcd, 0xe4, 0x57, 0x78, 0x59, - 0x22, 0x68, 0x5a, 0xaf, 0x0d, 0xb7, 0x01, 0x94, 0x24, 0x7a, 0xdb, 0xaf, 0x0d, 0xb7, 0x03, 0xdb, - 0x47, 0x44, 0xa9, 0xe0, 0x15, 0x44, 0x2d, 0x7d, 0x4c, 0x03, 0xcd, 0x23, 0xbd, 0x2a, 0x1e, 0x4f, - 0xfc, 0xad, 0xd3, 0x05, 0x2f, 0x6f, 0x9c, 0x2e, 0x78, 0xf8, 0xa1, 0x77, 0xb8, 0xe0, 0xcd, 0xe3, - 0x5d, 0xf0, 0xd8, 0x27, 0xa7, 0xf1, 0xc2, 0x7b, 0x59, 0x53, 0x2a, 0x50, 0x99, 0xe4, 0x84, 0x03, - 0x79, 0x16, 0x7f, 0x1b, 0x8c, 0xf7, 0xc6, 0xdd, 0x9b, 0xe9, 0x8a, 0x80, 0x77, 0xb1, 0xe8, 0x2f, - 0xb3, 0xd0, 0x2c, 0xa5, 0xbe, 0xbe, 0xb6, 0x79, 0x7d, 0xc0, 0x17, 0x61, 0xf6, 0xbd, 0xaa, 0xef, - 0xd7, 0xe2, 0x3a, 0xa7, 0xfe, 0x6e, 0x39, 0x56, 0xe2, 0x98, 0xfa, 0xbb, 0x7c, 0x4a, 0x5d, 0x7e, - 0x57, 0xf6, 0x40, 0x68, 0x9e, 0xab, 0x9e, 0xa9, 0x34, 0xa7, 0xac, 0xbc, 0x76, 0x31, 0xaf, 0x84, - 0x7b, 0x03, 0xe5, 0x85, 0xf1, 0x6c, 0x04, 0x81, 0x38, 0xbc, 0xbc, 0x60, 0x2d, 0xb5, 0x38, 0xd5, - 0x39, 0x11, 0x71, 0x41, 0x07, 0x79, 0x16, 0x89, 0xbb, 0xd2, 0xd7, 0x6d, 0xb0, 0x86, 0xd4, 0xa9, - 0x46, 0x25, 0xd5, 0xe2, 0x13, 0x28, 0x3f, 0xd8, 0x64, 0x30, 0x36, 0x41, 0xaa, 0x92, 0xc3, 0x16, - 0x40, 0xac, 0x50, 0x9e, 0x08, 0xa6, 0x72, 0xf1, 0x58, 0x4c, 0x65, 0x85, 0xa5, 0xaf, 0x69, 0xca, - 0x2b, 0x68, 0x85, 0xe4, 0xbe, 0x0b, 0x72, 0x21, 0x39, 0x06, 0x6e, 0x62, 0x40, 0x31, 0x56, 0x74, - 0x40, 0x96, 0x50, 0xb4, 0x25, 0x1b, 0xcd, 0x76, 0x1b, 0xe8, 0xce, 0xbf, 0xa0, 0xbf, 0xbd, 0x71, - 0x7f, 0xe6, 0x9b, 0x00, 0xcf, 0xe4, 0x10, 0xd2, 0xec, 0x9d, 0x3c, 0xcf, 0x79, 0x0a, 0xe9, 0x41, - 0xbb, 0x68, 0x7f, 0x2e, 0x7a, 0xb0, 0xf6, 0x43, 0x7f, 0xa4, 0xee, 0x7d, 0x32, 0xc6, 0x5a, 0x22, - 0x3b, 0x20, 0x12, 0xca, 0x1f, 0x12, 0xba, 0xab, 0xd1, 0x84, 0x7a, 0x7f, 0x18, 0x07, 0xf3, 0xca, - 0xc2, 0x5b, 0xff, 0x84, 0xa6, 0x3c, 0x26, 0xd1, 0x32, 0xf9, 0x11, 0x7d, 0x38, 0xaa, 0xb7, 0x9e, - 0xe3, 0xe5, 0x1b, 0x90, 0xfa, 0xdb, 0xcc, 0xcd, 0xf4, 0xa9, 0x3e, 0x1c, 0x55, 0x69, 0x07, 0xee, - 0xb6, 0x64, 0xdf, 0xe4, 0xdb, 0xf2, 0x73, 0x34, 0xd5, 0x1f, 0xae, 0x35, 0x0e, 0xa0, 0xae, 0xaa, - 0x69, 0x95, 0x01, 0x99, 0x39, 0x78, 0xc1, 0x38, 0xa6, 0x86, 0xad, 0x4a, 0x9e, 0x4b, 0x6c, 0x6e, - 0x86, 0xa3, 0x7a, 0xf7, 0xc0, 0xe8, 0xe1, 0x83, 0x89, 0xe8, 0xe6, 0xaa, 0x1a, 0x92, 0x9c, 0xdf, - 0xd6, 0x56, 0xfc, 0x1d, 0x9a, 0x51, 0xd7, 0xe0, 0xf5, 0x37, 0x56, 0x7e, 0xd4, 0xe4, 0x0f, 0xf9, - 0xea, 0x6b, 0x7d, 0x75, 0xc1, 0x40, 0x7d, 0x98, 0x18, 0xf3, 0x61, 0x8b, 0x6d, 0xb7, 0x7a, 0xf9, - 0xb1, 0x75, 0x35, 0xe5, 0x8b, 0xcb, 0xab, 0xab, 0xf8, 0x5d, 0x89, 0x0f, 0xee, 0x2c, 0xd1, 0x87, - 0x2f, 0x25, 0xa2, 0xa7, 0x93, 0x23, 0xbb, 0xf5, 0xce, 0xe3, 0x55, 0x35, 0xfa, 0xa1, 0x23, 0x89, - 0x3d, 0x17, 0x88, 0x71, 0x98, 0xdb, 0x38, 0x16, 0x2c, 0x90, 0x37, 0x6e, 0x2c, 0x50, 0xaf, 0x29, - 0x5e, 0xf4, 0xae, 0x34, 0x16, 0xdc, 0xc8, 0x8f, 0xe8, 0x6d, 0xdb, 0x13, 0x9d, 0x9f, 0xc1, 0x01, - 0x52, 0x99, 0x14, 0xbf, 0x64, 0x37, 0xec, 0x40, 0x4f, 0xb3, 0xe8, 0xbf, 0xe5, 0x20, 0x4f, 0xe6, - 0x19, 0xee, 0x7c, 0x44, 0x41, 0xdf, 0xdd, 0x9c, 0x3b, 0xe6, 0xdd, 0xcd, 0xbd, 0x65, 0x78, 0x4a, - 0xac, 0x35, 0xed, 0x86, 0xf2, 0x32, 0x53, 0x32, 0x36, 0x83, 0x22, 0x72, 0x08, 0x30, 0x36, 0x96, - 0x41, 0x33, 0x83, 0xa2, 0xd2, 0x37, 0x34, 0x65, 0x2d, 0xaa, 0x95, 0xc6, 0x84, 0x0c, 0x79, 0x3e, - 0x0f, 0x7c, 0x16, 0xa0, 0x4b, 0x83, 0x09, 0x3b, 0xef, 0x47, 0x73, 0x80, 0x44, 0x58, 0xe7, 0x0f, - 0x45, 0x9a, 0xbd, 0x0d, 0xf7, 0x0c, 0x74, 0x7e, 0xca, 0x06, 0x3a, 0x9e, 0x7b, 0x06, 0x3a, 0x3f, - 0x32, 0x03, 0x9d, 0x7f, 0xeb, 0x6a, 0xa0, 0xf3, 0xd5, 0x9d, 0x63, 0xa0, 0xf3, 0x5d, 0xd9, 0x83, - 0xa1, 0x07, 0x54, 0x64, 0x0e, 0xa9, 0xe6, 0x11, 0xcb, 0x9d, 0x09, 0x9b, 0x00, 0x25, 0x59, 0x4d, - 0x78, 0x5a, 0x05, 0x34, 0xe5, 0xfd, 0x60, 0x38, 0x62, 0x37, 0xde, 0x79, 0x57, 0x53, 0xde, 0x96, - 0xac, 0x35, 0xf2, 0x6b, 0x96, 0x9f, 0xa9, 0x83, 0x3d, 0x89, 0x9d, 0x47, 0x09, 0xa3, 0xf8, 0xed, - 0xe1, 0x44, 0xfb, 0x81, 0x64, 0x4f, 0x8b, 0xd1, 0x82, 0xe7, 0x1d, 0x4b, 0x78, 0x1b, 0x1f, 0x5e, - 0xb2, 0xa4, 0x5a, 0xc7, 0x16, 0xcf, 0x09, 0x48, 0xe4, 0x4a, 0x08, 0x16, 0x26, 0xa6, 0xe2, 0x5b, - 0x04, 0x4d, 0xd9, 0x28, 0xb9, 0xd4, 0xcb, 0x6b, 0x9d, 0x65, 0x2e, 0xba, 0xac, 0x7a, 0xdf, 0xa6, - 0x80, 0x2f, 0xb2, 0xd4, 0x5f, 0x5f, 0x57, 0x8c, 0x1f, 0xbf, 0x7d, 0xfa, 0xb6, 0x73, 0xf1, 0xd8, - 0x2e, 0x73, 0xb1, 0xc9, 0x9e, 0x16, 0xbe, 0xc3, 0x77, 0x65, 0xd3, 0x43, 0xd3, 0xd4, 0x3c, 0xe8, - 0xa6, 0x66, 0xfb, 0xeb, 0xeb, 0xd4, 0x3f, 0x51, 0x5d, 0xa6, 0x17, 0xbf, 0x30, 0xcd, 0x8c, 0xa6, - 0x62, 0x61, 0xe5, 0xe3, 0xee, 0x6a, 0x14, 0xc7, 0x6b, 0x70, 0x7b, 0xad, 0x8d, 0xa6, 0xdd, 0x04, - 0x6b, 0xa3, 0x82, 0x5b, 0x6d, 0x6d, 0x64, 0x1a, 0x63, 0x4c, 0xbf, 0x6e, 0x63, 0x8c, 0x6e, 0x17, - 0xab, 0x0a, 0x71, 0x5c, 0x56, 0x15, 0x2b, 0x6e, 0x8e, 0x55, 0x85, 0xd3, 0x9a, 0xe2, 0x7f, 0x4e, - 0x67, 0x4d, 0x31, 0x63, 0xfc, 0xd6, 0x14, 0xa1, 0x5b, 0x6f, 0x4d, 0x71, 0xfd, 0x56, 0x14, 0x33, - 0x7f, 0xbc, 0x56, 0x14, 0xb3, 0x7e, 0x14, 0x56, 0x14, 0x43, 0x16, 0x75, 0xf0, 0x6c, 0x8c, 0xc7, - 0x9e, 0x1a, 0x2f, 0x1e, 0xbb, 0xed, 0x5a, 0x61, 0x9b, 0x22, 0x73, 0xce, 0x8d, 0x2a, 0x32, 0xa3, - 0x02, 0xca, 0x0a, 0x50, 0x5b, 0x26, 0x47, 0xd4, 0x6c, 0x83, 0xc2, 0x0d, 0x37, 0x79, 0xeb, 0x20, - 0xec, 0x29, 0xf6, 0xd8, 0xc9, 0x0a, 0x84, 0xe5, 0x57, 0xf4, 0xdd, 0x23, 0x06, 0x55, 0xfc, 0x45, - 0x6c, 0x74, 0xff, 0x79, 0x16, 0x7e, 0xd5, 0xf1, 0x30, 0xda, 0xdf, 0x9a, 0xc4, 0xd1, 0xee, 0xf8, - 0xe0, 0x97, 0x7c, 0x5f, 0x35, 0x2b, 0x10, 0x16, 0x5f, 0x60, 0xb1, 0x74, 0xca, 0x0d, 0x7e, 0xf4, - 0x3e, 0xd3, 0x6d, 0x9d, 0x2f, 0x97, 0x11, 0x50, 0x8a, 0x06, 0xeb, 0xa1, 0xf2, 0x15, 0x37, 0x23, - 0xbe, 0xe6, 0x8d, 0x69, 0x0b, 0xf6, 0x65, 0x69, 0x8a, 0x96, 0x85, 0xba, 0xb2, 0xa4, 0x74, 0xdc, - 0x0f, 0xb5, 0xf6, 0xe0, 0xf7, 0xe6, 0x27, 0xa0, 0x3a, 0xf8, 0xbf, 0xb3, 0xd1, 0x14, 0x0b, 0xe8, - 0xb0, 0x74, 0x1b, 0x82, 0x23, 0xdd, 0x06, 0x0f, 0x0e, 0x16, 0x97, 0xd4, 0xf5, 0x8c, 0xc6, 0xc8, - 0xc2, 0x77, 0xb3, 0x38, 0x23, 0x70, 0x5a, 0x28, 0x0b, 0xf0, 0xcf, 0x21, 0x94, 0x85, 0x65, 0x86, - 0xc4, 0xb1, 0xed, 0xc9, 0xbe, 0x6f, 0x19, 0x71, 0xb0, 0xc9, 0x1a, 0x08, 0x36, 0x1b, 0x4f, 0xb4, - 0x24, 0xf3, 0x44, 0x8e, 0x94, 0xee, 0x70, 0xeb, 0x78, 0x5e, 0xdf, 0x3a, 0xe5, 0xb9, 0x33, 0xa9, - 0xd3, 0x9f, 0x5b, 0xd3, 0xb9, 0xff, 0x02, 0xe5, 0xfe, 0xba, 0x39, 0xc8, 0xf4, 0x14, 0xf3, 0xd3, - 0xce, 0xf8, 0xba, 0xd1, 0x0a, 0xd4, 0x15, 0xd0, 0x43, 0x9e, 0xc3, 0x8f, 0x8d, 0x8b, 0x46, 0x0f, - 0x76, 0xeb, 0x6d, 0x17, 0x54, 0xa8, 0xff, 0x3e, 0xb7, 0xe1, 0x7b, 0x66, 0xf9, 0x2e, 0xea, 0x15, - 0xd0, 0x54, 0xeb, 0xca, 0x45, 0x0f, 0x9a, 0x54, 0xd7, 0xd4, 0x4c, 0xe2, 0xd7, 0x85, 0xc9, 0x30, - 0x7c, 0x91, 0x78, 0x3f, 0x9a, 0x58, 0xd7, 0xd4, 0xbc, 0xd2, 0xdf, 0xe8, 0x8f, 0x84, 0xc9, 0x90, - 0x66, 0x81, 0xf8, 0x08, 0x9a, 0xda, 0xe8, 0x6b, 0x0c, 0x86, 0x3e, 0x66, 0x43, 0x60, 0x1e, 0x5b, - 0xb5, 0x95, 0x8a, 0x45, 0x68, 0x32, 0x94, 0x90, 0x81, 0xc0, 0xc9, 0xc8, 0x52, 0x56, 0xf4, 0x5f, - 0x73, 0x50, 0xa1, 0xfb, 0x3d, 0xbd, 0xa7, 0xd7, 0xfa, 0x89, 0xe9, 0xb5, 0x48, 0xe8, 0xd0, 0xb4, - 0xe0, 0x20, 0xcf, 0x73, 0xe2, 0xed, 0xb1, 0x95, 0x5c, 0xa7, 0x04, 0x34, 0xe5, 0xb5, 0xe6, 0xf5, - 0xc4, 0x4c, 0x4e, 0xf5, 0xfd, 0x5a, 0xac, 0x46, 0x68, 0x23, 0x2b, 0x20, 0xc8, 0x6f, 0x89, 0xa6, - 0x2c, 0x94, 0xb8, 0x62, 0x79, 0x36, 0x8c, 0x6f, 0x96, 0x40, 0x22, 0x18, 0x9a, 0x1e, 0x99, 0x6b, - 0x5a, 0x5a, 0xa9, 0x29, 0x65, 0xe8, 0x25, 0xc9, 0x3a, 0x8b, 0x5c, 0x44, 0xfc, 0x79, 0xbf, 0xfd, - 0x54, 0x6f, 0x3d, 0x99, 0xf8, 0x3c, 0x9a, 0xf8, 0xe3, 0x4e, 0xfb, 0x60, 0x57, 0x04, 0x6e, 0x98, - 0xa2, 0x7d, 0x79, 0x68, 0xa6, 0x39, 0x44, 0x79, 0x30, 0x10, 0xf0, 0xd5, 0x45, 0x8c, 0xf5, 0xae, - 0x75, 0xca, 0xea, 0x70, 0x50, 0x3b, 0x4e, 0x56, 0xf7, 0x68, 0x3c, 0xb6, 0x9b, 0x8a, 0xeb, 0x16, - 0x01, 0x31, 0x53, 0xea, 0x49, 0xb5, 0x7e, 0x9b, 0xea, 0x1f, 0x88, 0xc7, 0x76, 0x97, 0x7a, 0xea, - 0x1a, 0xc2, 0x8b, 0x3f, 0xfa, 0xe8, 0x23, 0x8b, 0xbc, 0xed, 0xd7, 0x08, 0x19, 0xcf, 0x46, 0x24, - 0xe4, 0xa5, 0xfa, 0xb8, 0x7c, 0x20, 0x26, 0xb8, 0x62, 0xf9, 0x25, 0xce, 0xe2, 0xc8, 0x03, 0xc6, - 0x3f, 0xd8, 0xf1, 0x61, 0xb7, 0xc1, 0xec, 0x81, 0xdf, 0x2f, 0x14, 0x9e, 0xd8, 0x97, 0x1c, 0xd9, - 0x9d, 0xea, 0xbf, 0x3c, 0xba, 0xbf, 0x3f, 0xd9, 0xd3, 0x62, 0xe6, 0x48, 0x51, 0xb9, 0xd1, 0xc4, - 0xf5, 0xa6, 0x25, 0x7f, 0x36, 0x4d, 0x77, 0xfd, 0xac, 0xf1, 0x1d, 0xc1, 0xe6, 0x7a, 0x2c, 0xa8, - 0x58, 0x02, 0x42, 0x38, 0x1c, 0x8b, 0xb3, 0xc4, 0x63, 0xc9, 0x7b, 0x1e, 0xdb, 0x4d, 0xe2, 0x27, - 0x61, 0xe9, 0x1b, 0x48, 0xe2, 0x38, 0xf1, 0x1f, 0x33, 0xf4, 0xff, 0x5c, 0x40, 0x13, 0xbd, 0xcc, - 0x0e, 0x2a, 0x87, 0x25, 0x88, 0xf8, 0x58, 0x32, 0x8b, 0xe5, 0x06, 0xde, 0x5e, 0x8e, 0x71, 0x1b, - 0x78, 0x08, 0x30, 0x3b, 0xa2, 0xf4, 0x13, 0xa5, 0x62, 0x63, 0xc9, 0x2f, 0x62, 0xcf, 0x7a, 0xc0, - 0xb7, 0x98, 0x58, 0x86, 0x90, 0x3a, 0x70, 0x11, 0x06, 0x0b, 0x27, 0xbc, 0x15, 0x8e, 0x51, 0xbe, - 0x2b, 0xcb, 0x0d, 0x65, 0x1b, 0x6b, 0x34, 0x17, 0x20, 0xae, 0x66, 0xb2, 0xc2, 0x5c, 0x7a, 0xa0, - 0x63, 0xc8, 0x0a, 0xd3, 0x88, 0xcc, 0xa8, 0xa4, 0xb0, 0x0e, 0x4d, 0x0f, 0xf9, 0xc2, 0x58, 0x13, - 0x84, 0x0d, 0x8a, 0xb8, 0x64, 0xec, 0x38, 0x30, 0x99, 0xb3, 0x56, 0x7e, 0x40, 0x79, 0xad, 0x96, - 0xdf, 0x62, 0xda, 0xc2, 0xb3, 0xc1, 0x68, 0xa2, 0x3a, 0x7b, 0x94, 0x46, 0x34, 0xe5, 0xd7, 0x28, - 0x28, 0xb9, 0x82, 0xa9, 0xac, 0x00, 0x90, 0x93, 0x74, 0x14, 0xf4, 0x76, 0x9a, 0x00, 0x0e, 0xc0, - 0x41, 0xb6, 0x7c, 0x5b, 0xeb, 0x52, 0x00, 0x19, 0x62, 0xc7, 0x84, 0x13, 0x28, 0x18, 0xc4, 0x0a, - 0x9c, 0x22, 0x4f, 0x34, 0x15, 0xb5, 0x66, 0xa1, 0xa9, 0xfc, 0xdd, 0xba, 0xe3, 0x1f, 0x06, 0x8a, - 0xc9, 0x6c, 0xab, 0x96, 0x1f, 0xb6, 0xa3, 0x01, 0x40, 0xcd, 0x89, 0xe8, 0x69, 0xe8, 0x3f, 0x06, - 0x26, 0xeb, 0xc8, 0x42, 0xb3, 0x5c, 0x76, 0xfe, 0xa7, 0xba, 0x1d, 0x7f, 0x93, 0x83, 0xa6, 0x55, - 0x61, 0xab, 0x4b, 0x1c, 0x30, 0x1d, 0xab, 0x1f, 0x57, 0x9b, 0x08, 0x46, 0x30, 0x61, 0x9f, 0xb9, - 0x0a, 0x8d, 0x1b, 0x4d, 0x32, 0x6c, 0xf2, 0xb2, 0xe5, 0xad, 0xc8, 0x32, 0x03, 0xfb, 0x8c, 0xe3, - 0xad, 0xe0, 0x1f, 0x09, 0xf1, 0xf7, 0x28, 0xd7, 0x1f, 0x88, 0x10, 0x75, 0x44, 0x7e, 0xd9, 0xfb, - 0x9a, 0xe2, 0x93, 0xa0, 0x44, 0x7e, 0x9b, 0xf0, 0xc3, 0x70, 0x1f, 0xf6, 0x5d, 0xd2, 0x87, 0xbb, - 0x00, 0x3d, 0x95, 0x70, 0x16, 0xe5, 0x7a, 0xf4, 0x60, 0x7c, 0xe8, 0x24, 0xe0, 0x5e, 0xbe, 0xcd, - 0x12, 0x0f, 0x0b, 0x9c, 0x19, 0x1f, 0x6a, 0xd5, 0x07, 0x2e, 0xc5, 0x63, 0xbb, 0xa1, 0x86, 0x64, - 0xa5, 0x81, 0x49, 0xc4, 0xb7, 0xd1, 0x14, 0xcb, 0x7d, 0x26, 0x98, 0x11, 0xdb, 0xdf, 0x5b, 0x6b, - 0xe4, 0x22, 0x1e, 0xfd, 0x30, 0xdd, 0x71, 0x72, 0xa8, 0x65, 0x91, 0xf7, 0x93, 0xe6, 0x90, 0x2f, - 0x1e, 0xdb, 0x5d, 0xac, 0x5a, 0xbb, 0x88, 0x9a, 0x80, 0x26, 0xe0, 0xb8, 0x43, 0x4d, 0x90, 0x4e, - 0x6f, 0x62, 0xd9, 0x47, 0x9a, 0xd2, 0x2c, 0xd1, 0x32, 0xf9, 0x03, 0xde, 0xb2, 0x1e, 0xac, 0xe7, - 0x40, 0xe0, 0x40, 0xa5, 0x63, 0xcc, 0xb4, 0xbc, 0xab, 0x5b, 0x6f, 0xef, 0x04, 0x7b, 0xd0, 0xd4, - 0xf6, 0x73, 0x10, 0x4d, 0x07, 0x54, 0x46, 0x57, 0xa3, 0x5b, 0x00, 0xd7, 0xea, 0x5d, 0x9d, 0x7a, - 0xf7, 0xee, 0xf8, 0xd0, 0xe7, 0xc9, 0xee, 0x6d, 0x7a, 0xff, 0x91, 0xe4, 0x2e, 0xc2, 0x84, 0x41, - 0x2f, 0x95, 0x4e, 0x5a, 0x6a, 0x9c, 0x3d, 0x5a, 0x26, 0xd9, 0x81, 0x44, 0x7e, 0x20, 0x1e, 0xdb, - 0x4d, 0x19, 0x2f, 0xfe, 0x1d, 0x00, 0x75, 0x5a, 0xd1, 0x3f, 0x14, 0xa2, 0x02, 0xda, 0x85, 0x29, - 0xcc, 0x0e, 0xbb, 0x28, 0xcc, 0x70, 0xc2, 0x11, 0xee, 0x11, 0x0e, 0x8e, 0xa5, 0x30, 0x83, 0xc0, - 0x13, 0xfa, 0xc8, 0xde, 0x31, 0xd5, 0x66, 0x24, 0x3c, 0x30, 0xac, 0x2e, 0x3e, 0xdc, 0x03, 0x10, - 0x02, 0x4a, 0x33, 0x3a, 0xcb, 0x0f, 0xa6, 0x3c, 0xb3, 0x49, 0x31, 0xb2, 0x6f, 0x54, 0x8a, 0x51, - 0xc7, 0x29, 0xe1, 0x00, 0xda, 0x5e, 0xd6, 0x94, 0x52, 0x4e, 0x09, 0x77, 0xe3, 0xaf, 0xbd, 0xa9, - 0x74, 0xbb, 0xe9, 0x0f, 0xe9, 0x9b, 0x4e, 0xf5, 0xd8, 0x73, 0xf6, 0x00, 0x6e, 0xfc, 0x52, 0x41, - 0x00, 0x92, 0x41, 0x97, 0xc7, 0xa9, 0xca, 0x7e, 0xee, 0xa2, 0x2a, 0x7b, 0x7a, 0x0c, 0x55, 0x59, - 0xda, 0x71, 0x6f, 0xbb, 0xb2, 0xec, 0x6d, 0x17, 0x65, 0xd9, 0x73, 0xd7, 0xa1, 0x2c, 0x2b, 0x08, - 0x4d, 0xb5, 0x28, 0xcb, 0xfe, 0xc4, 0xa2, 0x2e, 0xfb, 0xd8, 0xa9, 0x2e, 0x9b, 0x24, 0xcf, 0x75, - 0x24, 0xa9, 0x29, 0x0b, 0x06, 0x1b, 0x20, 0x45, 0xcd, 0xb3, 0x9a, 0xb2, 0xdc, 0xaa, 0x4a, 0x2b, - 0xce, 0xa0, 0x4a, 0x33, 0xed, 0xdc, 0x0d, 0x04, 0x6b, 0x55, 0xac, 0xfd, 0x2b, 0x57, 0xc5, 0xda, - 0x89, 0x3b, 0x49, 0xb1, 0x56, 0x18, 0x9a, 0xed, 0xaa, 0x58, 0xfb, 0x13, 0xab, 0x46, 0x8d, 0x73, - 0x3d, 0x9f, 0xec, 0xee, 0x7a, 0x6e, 0xc7, 0x74, 0xb7, 0x41, 0x19, 0xf4, 0xac, 0x3d, 0xe0, 0xe1, - 0x82, 0xb4, 0xca, 0x20, 0x8e, 0xdc, 0x27, 0xda, 0xa0, 0xb3, 0x18, 0x31, 0x13, 0xd4, 0x4e, 0xd2, - 0xaa, 0x3d, 0x98, 0xee, 0x23, 0x49, 0xb3, 0xb2, 0x90, 0xa6, 0x6c, 0x90, 0xcc, 0x6e, 0xf2, 0x9b, - 0xc4, 0x01, 0x21, 0xb6, 0x1b, 0x62, 0xce, 0xc8, 0xc9, 0xd3, 0x9d, 0xf0, 0x1a, 0x94, 0x7a, 0xe2, - 0xb1, 0xdd, 0x55, 0x15, 0xba, 0xd6, 0x61, 0xbe, 0xe5, 0x25, 0x9e, 0xf8, 0xd0, 0x50, 0xa2, 0xa5, - 0x2b, 0x3e, 0x18, 0x4d, 0x9e, 0xee, 0xd4, 0x3b, 0xcf, 0xe9, 0x5d, 0x03, 0x2c, 0x25, 0xe9, 0xd0, - 0x49, 0x8a, 0x9f, 0xe3, 0x83, 0x31, 0x7d, 0xfb, 0x36, 0xe6, 0xf1, 0x69, 0x4e, 0x67, 0xf7, 0x45, - 0x9e, 0x76, 0xd7, 0xf9, 0x22, 0xfb, 0xad, 0xae, 0x7c, 0x05, 0x14, 0xb9, 0x57, 0x58, 0x5d, 0xf9, - 0x9e, 0x1c, 0x8f, 0x2b, 0x5f, 0x09, 0x5b, 0x13, 0x29, 0xb1, 0xfa, 0xf6, 0x59, 0xfd, 0xc3, 0xd2, - 0xf8, 0xf5, 0x3b, 0x80, 0xf8, 0xb6, 0x6b, 0x02, 0x36, 0x39, 0xbc, 0xb7, 0x20, 0x28, 0x24, 0xce, - 0xa3, 0x65, 0xf7, 0xde, 0x7a, 0xe6, 0x86, 0xbd, 0xb7, 0x1c, 0x5e, 0x5b, 0x6e, 0x2e, 0x50, 0x33, - 0xee, 0x74, 0x17, 0xa8, 0x99, 0xdf, 0xdf, 0x05, 0xea, 0x15, 0x34, 0x61, 0x93, 0x2f, 0x14, 0x36, - 0xe8, 0x80, 0x59, 0x54, 0xa0, 0xf3, 0x90, 0x44, 0xcb, 0xe4, 0x42, 0xcb, 0x0e, 0x73, 0x09, 0xea, - 0x18, 0x6f, 0x4e, 0x9b, 0xda, 0xe4, 0x07, 0xb3, 0xef, 0x50, 0xf9, 0x41, 0xab, 0x80, 0x72, 0xbc, - 0x21, 0x9f, 0x37, 0x5d, 0x9a, 0x34, 0xc8, 0x21, 0x15, 0xf2, 0x79, 0xc1, 0x5f, 0x10, 0xb7, 0x95, - 0x5f, 0x23, 0xdf, 0x3f, 0x74, 0x5e, 0x8f, 0x9d, 0x02, 0xb7, 0x2f, 0xe3, 0x8c, 0x8f, 0x1e, 0x85, - 0x79, 0x16, 0x91, 0xc8, 0x67, 0x34, 0x5d, 0x5f, 0x89, 0x47, 0x6f, 0x3b, 0x08, 0x0a, 0x0d, 0x82, - 0xdc, 0x68, 0x7b, 0xcf, 0xb2, 0x62, 0x15, 0x0f, 0x79, 0xfb, 0xd4, 0x3c, 0x43, 0x82, 0xa6, 0x5c, - 0x14, 0xd0, 0x79, 0x41, 0x72, 0x10, 0xeb, 0xf2, 0x62, 0xf8, 0x10, 0xfd, 0xe2, 0x1f, 0x40, 0x77, - 0xc3, 0x04, 0x8f, 0x70, 0x6a, 0x65, 0xe5, 0xb5, 0x44, 0xf3, 0x8f, 0xb1, 0x7e, 0x06, 0xa5, 0xcc, - 0x0f, 0xa6, 0x8b, 0xf9, 0xf7, 0x59, 0x68, 0xba, 0x6d, 0xd9, 0x77, 0xbe, 0xb8, 0xbb, 0xd6, 0x26, - 0xee, 0x76, 0xc9, 0x17, 0xd8, 0x5c, 0x17, 0x81, 0x08, 0xd5, 0x20, 0xee, 0x9e, 0x07, 0xe3, 0x58, - 0x2e, 0x8b, 0xd6, 0x01, 0x82, 0x67, 0x92, 0xa4, 0x85, 0x3a, 0x33, 0x38, 0x76, 0x43, 0x9e, 0x65, - 0xc3, 0x8a, 0x63, 0x88, 0x03, 0xfe, 0x53, 0x36, 0x9a, 0x03, 0x71, 0xc9, 0x9d, 0xe6, 0x8e, 0x3f, - 0x94, 0xc1, 0x77, 0x9c, 0x98, 0xa2, 0xc0, 0xbc, 0xf8, 0x85, 0x02, 0x39, 0x2a, 0x40, 0xa7, 0x64, - 0xab, 0x94, 0x4f, 0x08, 0x56, 0xbb, 0x92, 0xab, 0xd1, 0x2d, 0x2c, 0x04, 0x32, 0xe1, 0xf3, 0x0d, - 0x1c, 0x3c, 0xd4, 0x0a, 0xe9, 0xd4, 0xc8, 0x44, 0x8b, 0xc9, 0xa5, 0x4e, 0xb4, 0x47, 0x21, 0xec, - 0x10, 0x4f, 0x64, 0xc5, 0x07, 0x3b, 0xe3, 0xc3, 0x3d, 0xa9, 0xd3, 0xa7, 0xf4, 0xae, 0xdd, 0xf1, - 0xa1, 0xa1, 0xf8, 0xc8, 0x5e, 0x33, 0x44, 0x2d, 0xe6, 0x9d, 0x8c, 0x39, 0x68, 0x9a, 0x62, 0x8a, - 0x8d, 0x76, 0xf9, 0xc3, 0x2b, 0x82, 0xa1, 0x3a, 0x5f, 0xbd, 0xde, 0x8d, 0xb3, 0x70, 0x76, 0x76, - 0xe9, 0xdd, 0x1d, 0xfa, 0xc5, 0x93, 0xf1, 0x91, 0xde, 0xab, 0xd1, 0x2d, 0xaa, 0x6d, 0xd9, 0xe2, - 0x4b, 0x0e, 0xdf, 0x0a, 0xcc, 0x0d, 0x9a, 0x56, 0xd5, 0xb3, 0x60, 0xbd, 0xe4, 0x9d, 0x70, 0xb1, - 0xb0, 0x7e, 0x41, 0x53, 0x9e, 0x45, 0xcf, 0x48, 0xe9, 0x0e, 0x88, 0xe6, 0x8f, 0xe3, 0x75, 0xb1, - 0x16, 0x11, 0x60, 0x2c, 0x07, 0x15, 0xba, 0xf7, 0xbd, 0xf3, 0xaf, 0xcd, 0xba, 0xf1, 0x69, 0x89, - 0x70, 0x50, 0x1b, 0xb8, 0x36, 0xf3, 0xc9, 0xb5, 0xb9, 0xf8, 0x07, 0xd8, 0x16, 0x77, 0x5d, 0xd1, - 0xaf, 0xc6, 0xa1, 0x2b, 0xc2, 0xe2, 0x9d, 0x5c, 0xa3, 0x59, 0x58, 0x96, 0xf8, 0x3d, 0xe6, 0x43, - 0x19, 0x53, 0xc5, 0x51, 0x07, 0x53, 0x1c, 0xdd, 0x49, 0x6e, 0x4e, 0x69, 0xcf, 0xdd, 0x0a, 0x75, - 0x19, 0x5c, 0x42, 0xfe, 0x73, 0x16, 0xba, 0x1f, 0x34, 0xf2, 0xd6, 0x41, 0xb0, 0x32, 0xf4, 0x87, - 0x44, 0x0f, 0xab, 0xa8, 0x42, 0x39, 0x6b, 0x5c, 0x0a, 0x65, 0x1c, 0x36, 0x93, 0x28, 0x94, 0x27, - 0x39, 0x95, 0xc8, 0x62, 0x99, 0x19, 0x9a, 0x3d, 0x9b, 0xca, 0x77, 0x1e, 0x30, 0x43, 0xb3, 0x8b, - 0xec, 0xe2, 0xe9, 0xbb, 0x0f, 0x50, 0x09, 0x0f, 0xa5, 0x6e, 0x48, 0x23, 0x9a, 0xca, 0x31, 0xe3, - 0x7e, 0xc8, 0x85, 0x24, 0xb7, 0x12, 0xa7, 0x67, 0x1b, 0x6d, 0xed, 0x1c, 0xfd, 0xec, 0xb0, 0xd5, - 0x96, 0x01, 0x96, 0x55, 0xd4, 0x9e, 0x8d, 0x1e, 0xc8, 0x30, 0xdc, 0x9d, 0x7f, 0x41, 0xeb, 0x2c, - 0x17, 0x74, 0xac, 0x53, 0xc2, 0x2e, 0x32, 0x70, 0x4f, 0x17, 0xc2, 0x70, 0xb0, 0x5b, 0x7a, 0xf7, - 0xae, 0x64, 0x4f, 0x0b, 0x6f, 0x07, 0x00, 0xe1, 0x30, 0xc8, 0x3b, 0x47, 0x7c, 0x4c, 0x32, 0xef, - 0x94, 0xbc, 0xd8, 0xb9, 0xf3, 0xb6, 0x11, 0x47, 0x3f, 0x3b, 0x9c, 0x01, 0xd4, 0xfb, 0xf2, 0x51, - 0x01, 0xdc, 0x97, 0x5b, 0xf0, 0xfa, 0x9d, 0xcd, 0x42, 0xf9, 0xf4, 0x21, 0x21, 0xef, 0xde, 0x9e, - 0x2c, 0x4d, 0xe9, 0xce, 0x92, 0x58, 0xb1, 0xbc, 0x35, 0x8b, 0x3a, 0x0f, 0xc5, 0xf4, 0xb6, 0x0b, - 0x70, 0x61, 0xad, 0xd9, 0xa4, 0xae, 0x46, 0xb7, 0xf0, 0x95, 0xf1, 0xe1, 0x9e, 0xf8, 0x60, 0x54, - 0xbf, 0x74, 0xc1, 0xf2, 0x04, 0x92, 0xb3, 0x20, 0x8c, 0x30, 0x15, 0x49, 0x33, 0x39, 0x2b, 0xc8, - 0x92, 0x59, 0x68, 0xf7, 0xc4, 0xd9, 0x63, 0x60, 0x52, 0xc7, 0x0f, 0xac, 0xef, 0x3e, 0x93, 0xe8, - 0x3d, 0x9a, 0xfa, 0x76, 0xeb, 0xe8, 0xde, 0xcb, 0xd7, 0x86, 0x3b, 0x12, 0x83, 0xad, 0xc9, 0xee, - 0x6d, 0xf0, 0xe6, 0x19, 0x0f, 0xe8, 0xe5, 0x43, 0x06, 0xad, 0xb1, 0xf7, 0xb2, 0xde, 0xbd, 0x4b, - 0xef, 0xfa, 0x86, 0xa4, 0x27, 0xc0, 0x66, 0x7a, 0xc6, 0x72, 0x39, 0xec, 0x0b, 0x0f, 0x6e, 0xf2, - 0xab, 0x9d, 0x7a, 0xdb, 0x50, 0xea, 0xb3, 0xaf, 0x8c, 0x71, 0xbe, 0x88, 0x41, 0x54, 0x03, 0xe3, - 0x53, 0x4f, 0xb4, 0x60, 0x4f, 0x79, 0x8c, 0xb6, 0x71, 0xd8, 0x59, 0xe3, 0x41, 0x65, 0xfb, 0x21, - 0x1e, 0x15, 0x90, 0x48, 0x83, 0x9f, 0xc0, 0x41, 0x61, 0xb9, 0x05, 0xdc, 0xe7, 0xa0, 0xa6, 0x34, - 0x48, 0x2e, 0xd5, 0xf2, 0x3a, 0x02, 0x0a, 0x38, 0x7a, 0x0a, 0x0c, 0x6e, 0xb0, 0x80, 0x7d, 0xfb, - 0x92, 0x7b, 0x4f, 0x96, 0x7a, 0x22, 0x34, 0x29, 0xc2, 0xa2, 0xd1, 0x3d, 0xd1, 0xc4, 0xc0, 0x66, - 0x68, 0x56, 0xec, 0x09, 0xf9, 0x22, 0x5e, 0x7f, 0x60, 0x51, 0x7c, 0xa8, 0x35, 0x79, 0x7a, 0x68, - 0xf4, 0xe0, 0x89, 0x12, 0xc8, 0x56, 0x45, 0xaa, 0x71, 0x4a, 0x72, 0xe7, 0x5c, 0x6e, 0x34, 0x4d, - 0xce, 0x8f, 0x9c, 0xa6, 0xc9, 0xbd, 0x11, 0x9a, 0x46, 0x6c, 0x13, 0xd0, 0x8c, 0x7a, 0xeb, 0x5d, - 0xab, 0x0b, 0x86, 0x20, 0xc3, 0x4b, 0x3e, 0xb0, 0x5d, 0x6e, 0xf5, 0xf2, 0x73, 0x00, 0xc5, 0xfa, - 0xee, 0x03, 0x30, 0x6a, 0x89, 0x07, 0xf6, 0x8b, 0x46, 0x2f, 0xa0, 0x3b, 0xc5, 0xfb, 0x0b, 0xe9, - 0xb1, 0x4f, 0x61, 0x9b, 0x54, 0xb7, 0x21, 0x69, 0x54, 0x61, 0xc7, 0xd5, 0x1f, 0x93, 0xae, 0xfa, - 0x3a, 0x07, 0x4d, 0xb7, 0x75, 0xba, 0x47, 0x50, 0xfd, 0x58, 0x09, 0xaa, 0x97, 0x34, 0xe5, 0x79, - 0xf4, 0xac, 0xe4, 0x3c, 0xf0, 0x71, 0x53, 0x52, 0x89, 0x12, 0x54, 0x40, 0x93, 0x96, 0xb3, 0xe7, - 0xc5, 0xdd, 0x3c, 0xa5, 0x84, 0x7f, 0x5e, 0x1e, 0x1c, 0x43, 0x33, 0x66, 0x4a, 0x38, 0xf8, 0x44, - 0x3a, 0x2e, 0x1a, 0xad, 0xf9, 0x99, 0x35, 0x5a, 0x56, 0x3d, 0x56, 0xc4, 0xe1, 0x04, 0xf6, 0xc6, - 0xcd, 0x77, 0x02, 0x23, 0x0b, 0x37, 0x15, 0x52, 0x4f, 0xdb, 0xbc, 0xc0, 0x1e, 0x1c, 0x43, 0x21, - 0xc5, 0x14, 0x4f, 0xb5, 0x56, 0x5f, 0xaf, 0xe7, 0x6f, 0xd0, 0xd7, 0x8b, 0x2c, 0x88, 0x38, 0x7b, - 0xbd, 0xe0, 0xd4, 0x66, 0x79, 0xd2, 0x3b, 0x7b, 0xd1, 0x53, 0x30, 0x35, 0x56, 0x95, 0x2e, 0x1a, - 0xab, 0x87, 0xc7, 0xd0, 0x58, 0x91, 0x51, 0x78, 0xfd, 0xd4, 0x5b, 0x6e, 0xfa, 0xa9, 0x67, 0x6e, - 0x58, 0x3f, 0x65, 0xd5, 0x43, 0xbd, 0xe1, 0xa2, 0x87, 0x5a, 0xae, 0x29, 0x4f, 0x5a, 0xf4, 0x50, - 0x8f, 0xda, 0xf4, 0x50, 0x6f, 0x6d, 0x5c, 0x1e, 0x2e, 0xf1, 0x60, 0xc5, 0xd3, 0x3b, 0xbc, 0x5a, - 0xca, 0xa2, 0x83, 0xda, 0x78, 0xbd, 0x3a, 0xa8, 0x7b, 0xf1, 0x96, 0xef, 0x8a, 0x78, 0xcb, 0x76, - 0x1c, 0x76, 0x1b, 0x94, 0x5e, 0x1c, 0x33, 0x37, 0xf5, 0x06, 0x99, 0x39, 0xf1, 0x5f, 0x9b, 0x09, - 0x65, 0x40, 0x87, 0x34, 0x20, 0x68, 0xca, 0x7b, 0x2c, 0x07, 0xc2, 0xdb, 0x64, 0xed, 0x2c, 0xa3, - 0x0c, 0x4e, 0xac, 0x0a, 0x3f, 0xcb, 0xd5, 0x4a, 0x65, 0x4d, 0x55, 0xf5, 0xcb, 0xd7, 0x86, 0x3b, - 0x48, 0xf2, 0x98, 0x6b, 0xc3, 0x1d, 0x15, 0x95, 0x2b, 0x2b, 0x49, 0xe1, 0x0a, 0x65, 0xe5, 0x5a, - 0xb5, 0xf2, 0xda, 0x70, 0x07, 0xcb, 0xca, 0xa7, 0xac, 0xa9, 0x5a, 0x5d, 0x4d, 0x1b, 0x55, 0x56, - 0x7c, 0x57, 0x56, 0x1e, 0x52, 0xd4, 0x7c, 0x3a, 0x8e, 0x99, 0x83, 0x26, 0x9f, 0x8e, 0x62, 0x26, - 0xa1, 0x99, 0x6a, 0x1d, 0x44, 0x9d, 0x40, 0xc6, 0x50, 0xff, 0x84, 0xe5, 0x64, 0x18, 0x57, 0xf8, - 0x66, 0xc7, 0xb1, 0xfd, 0x04, 0xc2, 0x37, 0x3b, 0xbe, 0xf9, 0xae, 0x0b, 0xdf, 0xbc, 0x16, 0xe5, - 0x43, 0x98, 0x52, 0x16, 0xbf, 0x19, 0x23, 0x7e, 0x56, 0x28, 0x4b, 0xf6, 0x00, 0xce, 0xc6, 0xdb, - 0x88, 0xd3, 0x94, 0x82, 0xe1, 0x0f, 0x1f, 0xcf, 0x99, 0xf5, 0x12, 0xcf, 0xbb, 0x05, 0x74, 0xfe, - 0x54, 0xd0, 0x94, 0x2e, 0xab, 0x12, 0x35, 0x7a, 0xd3, 0x95, 0xa8, 0xb7, 0x2d, 0x8c, 0xb3, 0x9b, - 0xe7, 0xe0, 0xec, 0x3b, 0xd4, 0x73, 0x70, 0xce, 0x8f, 0xcc, 0x73, 0xb0, 0xf0, 0xc7, 0xeb, 0x39, - 0x78, 0xdf, 0x8f, 0xc2, 0x73, 0xd0, 0x16, 0x5e, 0x78, 0xee, 0xcd, 0x0b, 0x2f, 0x7c, 0x5e, 0x40, - 0x13, 0x99, 0xa6, 0xb2, 0x70, 0xde, 0x38, 0xdf, 0x26, 0x57, 0x13, 0x84, 0xca, 0x1f, 0xdc, 0x04, - 0x81, 0xcd, 0x20, 0xbe, 0xc1, 0x85, 0xa8, 0xbd, 0x9f, 0x1a, 0x67, 0x3d, 0xc3, 0x85, 0xa8, 0x5d, - 0x7c, 0x5d, 0x21, 0x6a, 0xb9, 0xd0, 0xb4, 0x4e, 0xe3, 0x86, 0x07, 0x6e, 0x89, 0x71, 0xc3, 0xef, - 0x9c, 0x21, 0x69, 0xe7, 0x8f, 0x49, 0x92, 0x63, 0x57, 0x09, 0x47, 0xb8, 0xda, 0x05, 0x63, 0x86, - 0xab, 0x75, 0x86, 0xa9, 0xad, 0xb7, 0xda, 0x45, 0x3e, 0x48, 0x62, 0x32, 0xb9, 0xa8, 0x41, 0xfd, - 0x81, 0x0d, 0x30, 0xf9, 0x4d, 0x0a, 0x62, 0xeb, 0xb9, 0x03, 0x2d, 0x38, 0x3e, 0xe0, 0x2d, 0x38, - 0x16, 0x8c, 0x79, 0x0c, 0xdf, 0xcb, 0xba, 0x23, 0x62, 0xc9, 0xba, 0x05, 0x71, 0x90, 0xd7, 0x18, - 0x64, 0x3a, 0x57, 0x2c, 0x97, 0xf3, 0x0e, 0x99, 0x7c, 0xea, 0xf1, 0x92, 0xc4, 0xb1, 0x61, 0x1c, - 0x4f, 0x2a, 0xb6, 0x28, 0xe2, 0x6f, 0xf4, 0x2d, 0xa9, 0x0e, 0x7e, 0xb8, 0xa8, 0x78, 0xc9, 0x8a, - 0x60, 0xa8, 0xd1, 0x1b, 0x81, 0x12, 0x75, 0x45, 0xf9, 0xe3, 0x8f, 0x3f, 0xfe, 0x4c, 0x71, 0xb1, - 0x25, 0x97, 0x57, 0x99, 0x69, 0x97, 0xf6, 0x10, 0x47, 0xa2, 0x53, 0xbb, 0x34, 0x91, 0xd9, 0xa5, - 0xb9, 0x90, 0xe8, 0xd4, 0x3c, 0xed, 0x94, 0x80, 0xa6, 0xc2, 0xae, 0xb2, 0xc3, 0x84, 0xf0, 0xc6, - 0xbf, 0xd7, 0x94, 0xdf, 0x48, 0xb6, 0x2a, 0xd9, 0xaf, 0x8f, 0x7c, 0x6a, 0xdb, 0x67, 0xc0, 0x75, - 0xf1, 0xc1, 0x18, 0x3d, 0x1b, 0x6c, 0x3a, 0x92, 0xf9, 0x90, 0x4d, 0x53, 0xb5, 0xa5, 0x60, 0x4c, - 0x02, 0xd6, 0xe4, 0x7c, 0x64, 0x5f, 0xd5, 0x36, 0xb5, 0x5b, 0x0c, 0xe1, 0x87, 0x7f, 0xb4, 0x31, - 0x84, 0xdf, 0x37, 0x63, 0xed, 0x3e, 0x32, 0x26, 0xe4, 0xe2, 0xc0, 0xbe, 0x2c, 0x0e, 0xef, 0xc2, - 0xf1, 0xc4, 0xe1, 0x35, 0xe3, 0xee, 0x3a, 0x62, 0xe2, 0x3e, 0x7a, 0x2f, 0x26, 0xee, 0xbd, 0x98, - 0xb8, 0xdf, 0xdf, 0xfc, 0xe9, 0x3f, 0x0b, 0x9a, 0xf2, 0xb7, 0x02, 0xfa, 0x1b, 0x41, 0x72, 0x08, - 0x64, 0xe5, 0xf3, 0x82, 0xab, 0x6b, 0x3a, 0x10, 0x57, 0xa9, 0x81, 0x93, 0xe0, 0x97, 0x1e, 0x1f, - 0x6a, 0xe5, 0x73, 0xa2, 0x13, 0x25, 0xa6, 0xd6, 0x11, 0xbf, 0xdc, 0x9f, 0xe8, 0xfb, 0xdc, 0x5d, - 0x0b, 0x73, 0xbc, 0xc3, 0xc0, 0xd7, 0x38, 0xcf, 0xe4, 0xd5, 0xe8, 0x16, 0xe2, 0x2a, 0x0f, 0x7e, - 0x1b, 0x38, 0x71, 0x25, 0x93, 0x80, 0x27, 0x0f, 0x0d, 0xea, 0xad, 0xe7, 0x40, 0x46, 0x8a, 0x27, - 0xbd, 0x98, 0x38, 0x76, 0x29, 0xd1, 0xd9, 0x0f, 0x8d, 0x49, 0xee, 0x04, 0x9a, 0x5f, 0xd5, 0xe9, - 0x27, 0x5f, 0xf4, 0x17, 0xd9, 0x68, 0xba, 0xed, 0xbb, 0xee, 0x3e, 0xfb, 0xa8, 0x34, 0xac, 0x8f, - 0xd3, 0x3e, 0x8a, 0x29, 0x90, 0x5d, 0x94, 0x12, 0xb7, 0x35, 0xe4, 0x5d, 0x69, 0xb9, 0xa6, 0xbc, - 0x84, 0x5e, 0x90, 0x9c, 0x67, 0x41, 0x6d, 0x04, 0x2c, 0x30, 0x96, 0x46, 0x6b, 0xf0, 0xb7, 0x02, - 0x9a, 0xa5, 0xfa, 0x22, 0xa1, 0x8f, 0x1d, 0x79, 0x22, 0x9f, 0x72, 0xaa, 0x0e, 0x0a, 0xd3, 0x69, - 0xa6, 0x79, 0xdd, 0xc0, 0xf3, 0x9c, 0xf2, 0x2e, 0x8b, 0x9a, 0x8c, 0xbb, 0x84, 0x79, 0x4c, 0x45, - 0x5b, 0x21, 0x80, 0x90, 0x50, 0x58, 0xcf, 0x59, 0x23, 0xbd, 0xa2, 0x29, 0x95, 0xa8, 0x5c, 0x72, - 0x5f, 0x94, 0x3c, 0x1f, 0x72, 0xa6, 0xc6, 0x07, 0x77, 0xea, 0x5d, 0xbb, 0x9d, 0xe1, 0xa5, 0x2d, - 0x70, 0xfa, 0x45, 0x36, 0x9a, 0xed, 0x36, 0xca, 0x9d, 0x0f, 0xac, 0xab, 0xc6, 0x07, 0xac, 0x78, - 0x11, 0x00, 0xac, 0xb3, 0xe0, 0xdd, 0x76, 0xd7, 0x9d, 0xbd, 0x3a, 0x0e, 0xdd, 0x19, 0x8c, 0x85, - 0x1d, 0xd7, 0xcd, 0xb1, 0xf8, 0x8c, 0xeb, 0xa0, 0x25, 0x2b, 0x5d, 0xab, 0x29, 0x2a, 0xaa, 0x91, - 0xd2, 0x6c, 0x6c, 0x86, 0xf3, 0xc9, 0x6c, 0x20, 0xb8, 0x33, 0x0b, 0x4d, 0x79, 0xd9, 0x17, 0x49, - 0x67, 0x18, 0x91, 0x75, 0xf3, 0x0c, 0x23, 0x1a, 0x88, 0x4b, 0x02, 0xe6, 0x17, 0xe1, 0x44, 0x30, - 0x6b, 0x64, 0x96, 0xca, 0x2f, 0x38, 0xa9, 0x27, 0x4b, 0xa8, 0x32, 0xe6, 0x4e, 0xb0, 0xcb, 0x54, - 0x00, 0xe3, 0x2d, 0x23, 0xf1, 0x23, 0xcd, 0xa1, 0x4a, 0x9f, 0xd0, 0x94, 0xc7, 0xd0, 0x52, 0xc9, - 0xfa, 0x6d, 0xb2, 0x08, 0xde, 0xfe, 0x69, 0x21, 0xf7, 0x54, 0x0e, 0x9a, 0xca, 0xf7, 0xf8, 0xc9, - 0x41, 0xac, 0x0f, 0xe5, 0x62, 0xf6, 0x32, 0x1d, 0x3a, 0xad, 0xe4, 0x79, 0xcf, 0xc0, 0x7b, 0x41, - 0xd0, 0xed, 0x40, 0x1f, 0x79, 0x81, 0x6d, 0x64, 0xbd, 0xf5, 0x42, 0x7c, 0x88, 0xbc, 0x7a, 0x64, - 0x16, 0x68, 0x79, 0x9b, 0x55, 0xbe, 0x8a, 0xa6, 0xbc, 0x80, 0x9e, 0x93, 0x6c, 0x27, 0x6d, 0x03, - 0x8e, 0xcc, 0xd7, 0xe6, 0x37, 0x84, 0x08, 0xe2, 0xb6, 0x42, 0xdc, 0x80, 0x26, 0x53, 0x7d, 0x27, - 0x16, 0xb6, 0x00, 0xea, 0x36, 0x1e, 0x0b, 0xc9, 0x52, 0x41, 0x25, 0x8c, 0x7a, 0x6c, 0xaf, 0x7e, - 0x96, 0x8a, 0xea, 0x7a, 0x5a, 0x78, 0x55, 0xdc, 0xa2, 0xc8, 0x46, 0xdf, 0xd2, 0x8d, 0xcb, 0xc3, - 0x4b, 0xb1, 0x2a, 0xae, 0x58, 0xb5, 0xf4, 0x2f, 0xea, 0x11, 0xd0, 0xf4, 0xf2, 0xf7, 0x7d, 0x75, - 0x1b, 0x71, 0x9e, 0x22, 0x12, 0x58, 0x44, 0x7c, 0x11, 0xe5, 0xfb, 0x03, 0x01, 0x5f, 0xa8, 0xaa, - 0x26, 0x5c, 0x28, 0x60, 0x29, 0x2a, 0x0e, 0xb1, 0xc1, 0x0a, 0xe5, 0x99, 0x20, 0xc2, 0x00, 0x6f, - 0x59, 0x26, 0x46, 0x65, 0xf5, 0xa5, 0x15, 0x9a, 0xa2, 0xa0, 0x17, 0x25, 0xe7, 0xd0, 0xf2, 0x83, - 0x89, 0xcf, 0xa3, 0x89, 0xa3, 0x27, 0x03, 0xc1, 0x7a, 0x1f, 0x31, 0x5c, 0xc2, 0x16, 0xe4, 0xeb, - 0xeb, 0x88, 0x68, 0xfa, 0x8a, 0xc0, 0x46, 0x29, 0xba, 0x90, 0x8d, 0x44, 0x7e, 0x84, 0x70, 0x53, - 0x30, 0x10, 0xf6, 0xdd, 0xe9, 0xd7, 0xa8, 0x81, 0x5d, 0x23, 0xf7, 0x54, 0xa4, 0x8e, 0x0f, 0x5a, - 0x52, 0xe1, 0x8d, 0x78, 0x41, 0x88, 0x85, 0x13, 0xee, 0xc3, 0xdd, 0x7a, 0x10, 0x06, 0xc7, 0x1b, - 0x85, 0xb7, 0x0c, 0xa6, 0x29, 0xd9, 0xe8, 0xfb, 0x38, 0x71, 0x60, 0xa0, 0xaa, 0x06, 0x6e, 0xd9, - 0xdc, 0x5a, 0x34, 0x91, 0x75, 0x77, 0x21, 0x70, 0x97, 0x59, 0x69, 0xe7, 0xb9, 0x6e, 0x32, 0x48, - 0x15, 0xaf, 0x9b, 0x27, 0x7e, 0x89, 0x35, 0xb1, 0xcb, 0xe6, 0xd3, 0xdd, 0x22, 0x69, 0xcc, 0xb0, - 0xaa, 0xcb, 0x49, 0x90, 0x5c, 0x15, 0x10, 0x32, 0x47, 0x16, 0xcb, 0x0d, 0x6e, 0xb0, 0xf2, 0x23, - 0x7f, 0x18, 0x72, 0x69, 0xe7, 0x93, 0xfc, 0x92, 0xa4, 0x4c, 0x9e, 0x47, 0xe4, 0x61, 0x1c, 0x38, - 0x50, 0xcd, 0x65, 0x9f, 0x4a, 0x5b, 0x89, 0x65, 0xce, 0xb7, 0x04, 0x0b, 0x7f, 0xb8, 0xb7, 0x84, - 0x40, 0x25, 0x28, 0xff, 0xdd, 0xc8, 0x9a, 0x95, 0x56, 0x93, 0x07, 0xb0, 0x59, 0xc0, 0x7b, 0x6e, - 0x31, 0x79, 0x28, 0x74, 0x8e, 0xe3, 0x62, 0xfe, 0x50, 0xf4, 0xb7, 0x59, 0x68, 0xc6, 0xda, 0x40, - 0x79, 0x30, 0x54, 0x1f, 0x0c, 0xc0, 0xd7, 0xde, 0x9c, 0xdb, 0x23, 0xd6, 0x3a, 0x3f, 0xf5, 0x49, - 0x4d, 0xf9, 0x19, 0xff, 0xa9, 0xf3, 0x89, 0x1d, 0x23, 0x5b, 0x28, 0x46, 0x55, 0xac, 0x1e, 0x47, - 0x51, 0xf1, 0x08, 0xfc, 0xb7, 0x87, 0x68, 0x8a, 0xca, 0x6c, 0xbc, 0xa4, 0xb7, 0x35, 0xe5, 0x17, - 0x34, 0x45, 0x65, 0x0d, 0x59, 0x0f, 0xfe, 0x46, 0x58, 0x8d, 0xc1, 0x60, 0x6a, 0x1d, 0x6e, 0xeb, - 0x8c, 0xc7, 0x3a, 0x46, 0xa3, 0xed, 0xf1, 0xc1, 0xa8, 0xc1, 0xc1, 0x0c, 0x1f, 0xd0, 0x5b, 0xdb, - 0x9c, 0xbd, 0x49, 0x7e, 0x4b, 0x6a, 0x36, 0xe5, 0xb6, 0x4b, 0xf2, 0x3c, 0x60, 0xa7, 0x49, 0xe7, - 0xae, 0x81, 0xd4, 0x37, 0x5b, 0xf5, 0xd8, 0x29, 0x80, 0xa8, 0xa2, 0x2b, 0x59, 0x68, 0xa6, 0xb5, - 0xd3, 0xdd, 0x71, 0xf7, 0xad, 0x01, 0x8b, 0x1e, 0x72, 0xbb, 0x6d, 0xab, 0x9b, 0x88, 0x3e, 0xbd, - 0x16, 0x2b, 0x66, 0x49, 0x2e, 0x7f, 0x7c, 0xe5, 0xc9, 0x98, 0x84, 0x02, 0x01, 0xb3, 0xd6, 0x2a, - 0x4d, 0x59, 0x81, 0x2a, 0x24, 0xd7, 0xdd, 0x90, 0xe7, 0xf1, 0x50, 0x60, 0xdb, 0x43, 0xe7, 0xad, - 0xfc, 0x8f, 0x59, 0x68, 0xfa, 0x3d, 0x68, 0x4d, 0x0f, 0xad, 0xcb, 0x35, 0xe5, 0x49, 0xf4, 0xb8, - 0xe4, 0xdc, 0x23, 0x79, 0x3e, 0x0f, 0xab, 0xf1, 0xc1, 0x4e, 0x3b, 0xb8, 0xfe, 0x55, 0x16, 0x12, - 0xef, 0x01, 0xab, 0xb7, 0xf4, 0x55, 0x4d, 0x79, 0x19, 0x55, 0x4a, 0x2e, 0x7b, 0x61, 0x05, 0x01, - 0xe7, 0x16, 0x3a, 0xa1, 0x35, 0x96, 0x43, 0x25, 0x14, 0x3c, 0xb4, 0x56, 0x39, 0xa0, 0x75, 0xf1, - 0x38, 0xa0, 0xf5, 0xbb, 0xb2, 0x09, 0x9a, 0x90, 0x93, 0x2f, 0x14, 0xd4, 0x73, 0x70, 0x7b, 0xc9, - 0x34, 0xee, 0x80, 0xdd, 0x3e, 0x26, 0x68, 0xca, 0x1b, 0xcc, 0xb8, 0xa3, 0x9a, 0x5f, 0x30, 0x2c, - 0x72, 0x91, 0xd5, 0xcc, 0x62, 0x29, 0xb1, 0xc8, 0x58, 0x4a, 0x0d, 0x32, 0x96, 0x2a, 0x15, 0x15, - 0x8b, 0x89, 0x4d, 0xc6, 0x52, 0xb5, 0x72, 0xd5, 0xea, 0x75, 0x95, 0xf4, 0x67, 0xf1, 0x77, 0x65, - 0x65, 0xa1, 0x97, 0x9c, 0x86, 0x1a, 0x4e, 0xa3, 0x8e, 0x49, 0xdc, 0x20, 0xea, 0x54, 0xeb, 0x28, - 0xcc, 0x9a, 0x43, 0x45, 0x93, 0x58, 0x66, 0x33, 0x16, 0xeb, 0x69, 0x99, 0xa6, 0x2c, 0x96, 0xf8, - 0xf2, 0x34, 0xf7, 0xce, 0x68, 0x01, 0x11, 0x88, 0xf8, 0xc6, 0xe2, 0x4a, 0xfe, 0x1e, 0xe7, 0x50, - 0x1f, 0xcf, 0xeb, 0xb9, 0xc7, 0xfc, 0x05, 0x5e, 0x6e, 0x9a, 0xdf, 0xe4, 0x52, 0xcb, 0xc2, 0x99, - 0xa6, 0xf9, 0xcd, 0x44, 0x32, 0x52, 0xb4, 0x95, 0x5e, 0x7e, 0xe6, 0x41, 0x51, 0xa6, 0x29, 0x2f, - 0xa2, 0xe7, 0x25, 0xe7, 0xe1, 0xcb, 0x0f, 0x80, 0x2b, 0x27, 0x0e, 0x3f, 0x52, 0x03, 0x03, 0xe0, - 0x9b, 0x0b, 0x30, 0xc8, 0x53, 0x8e, 0xff, 0x90, 0x85, 0x44, 0xbe, 0xff, 0xdd, 0x71, 0x21, 0x7f, - 0x6e, 0xb9, 0x90, 0xae, 0xb4, 0x1a, 0xb9, 0x87, 0x38, 0x42, 0x0e, 0xdc, 0xc3, 0xfb, 0x61, 0x23, - 0x12, 0x6d, 0xdd, 0xfa, 0x8e, 0xa3, 0xba, 0xd6, 0xa1, 0x9f, 0x38, 0x9b, 0x3a, 0x7f, 0x92, 0x1c, - 0x33, 0xb9, 0x97, 0xb5, 0x9a, 0x52, 0x83, 0xaa, 0x25, 0x97, 0x2d, 0x91, 0x1f, 0xe5, 0xc5, 0x4c, - 0x44, 0xd3, 0x8c, 0xd7, 0x66, 0x9a, 0x9f, 0x60, 0x8a, 0xcc, 0x79, 0x41, 0x5f, 0x00, 0x1a, 0x0f, - 0x56, 0x24, 0x16, 0xa2, 0x09, 0xe1, 0xe6, 0xba, 0x3a, 0x5f, 0x98, 0xdc, 0x4b, 0x95, 0xfe, 0x14, - 0x67, 0xa3, 0xbc, 0xf7, 0xbc, 0xfe, 0x06, 0xec, 0xc2, 0x60, 0x54, 0x90, 0x5f, 0x45, 0xff, 0x26, - 0x0b, 0xcd, 0xb5, 0x88, 0xbd, 0x56, 0x61, 0xf5, 0x27, 0xbd, 0xe9, 0xcf, 0x39, 0x45, 0x57, 0xd8, - 0x38, 0x95, 0x03, 0xc7, 0xa9, 0x2c, 0x12, 0x00, 0xd1, 0xcd, 0x9a, 0xe0, 0xf7, 0x36, 0xca, 0x03, - 0x6d, 0x2a, 0x21, 0x7c, 0x1f, 0x48, 0xc3, 0xcd, 0xc2, 0x9c, 0x65, 0x0f, 0x6b, 0x4a, 0x91, 0x44, - 0x7a, 0xd0, 0xac, 0x44, 0xa0, 0x96, 0x05, 0x15, 0x2d, 0x99, 0x80, 0xb4, 0x10, 0x9f, 0x75, 0xf8, - 0xeb, 0x3d, 0x98, 0x2e, 0x0b, 0x0a, 0x05, 0x6f, 0x53, 0x38, 0xb6, 0x4e, 0x53, 0x6a, 0xd1, 0xeb, - 0x52, 0x86, 0x6f, 0xa7, 0xf7, 0x2c, 0xdd, 0x3a, 0x6c, 0xd9, 0x91, 0x60, 0x51, 0x45, 0xd7, 0xb2, - 0xd0, 0x3c, 0xd7, 0x31, 0xef, 0x0e, 0xe0, 0xb7, 0x1a, 0x9d, 0x8f, 0x71, 0x5e, 0x7c, 0xc4, 0x47, - 0xe6, 0x3f, 0x95, 0x1c, 0xe9, 0xb7, 0x9c, 0x16, 0xc0, 0xfe, 0x2f, 0x34, 0x65, 0x1d, 0x5a, 0x23, - 0x65, 0xda, 0x1a, 0x79, 0x61, 0xe6, 0xfd, 0x4e, 0x27, 0x77, 0x3d, 0x8d, 0xe5, 0xae, 0x75, 0xc1, - 0x50, 0xbd, 0x71, 0x11, 0x0c, 0xc6, 0x9d, 0x02, 0xef, 0x5a, 0x4a, 0xbe, 0x08, 0x98, 0x09, 0x9c, - 0xe9, 0x76, 0x95, 0x0d, 0x2e, 0x68, 0x1e, 0x25, 0x6a, 0x44, 0x72, 0xf5, 0x06, 0x4e, 0x25, 0xb6, - 0xb6, 0xd2, 0x47, 0x2b, 0x5f, 0x13, 0x72, 0xf3, 0x85, 0x82, 0xd4, 0x04, 0x1b, 0x3d, 0xed, 0x3e, - 0xa9, 0x3c, 0x1d, 0x02, 0x1f, 0x59, 0x50, 0x22, 0x74, 0x2c, 0xd2, 0x05, 0x2c, 0x8c, 0xe2, 0x5f, - 0xd2, 0xe7, 0xd1, 0x04, 0x82, 0x2e, 0xc9, 0xed, 0x7a, 0x48, 0x53, 0xee, 0x93, 0x68, 0x99, 0x3c, - 0xd5, 0xfa, 0x8e, 0x62, 0x30, 0xfe, 0x48, 0x50, 0x69, 0xbd, 0xf8, 0x3a, 0x9a, 0x10, 0x7e, 0x3f, - 0xf8, 0x61, 0xcd, 0x87, 0xd4, 0x33, 0x09, 0x9b, 0x01, 0xd0, 0x32, 0xb9, 0x98, 0x74, 0x1f, 0xd8, - 0x96, 0x3c, 0xb6, 0x99, 0x70, 0x76, 0x67, 0xf7, 0x26, 0x4f, 0xc4, 0x16, 0x51, 0xd5, 0x65, 0x27, - 0xfc, 0x2e, 0x56, 0x69, 0x1f, 0x5e, 0x96, 0xc2, 0x63, 0x7d, 0x0f, 0x09, 0x4a, 0x45, 0x56, 0x42, - 0x82, 0x6c, 0x92, 0xed, 0x02, 0xb1, 0x1b, 0x5d, 0x55, 0xd1, 0xbf, 0xcb, 0x42, 0xd3, 0x58, 0xf7, - 0xbb, 0x03, 0xee, 0x5f, 0xb5, 0x88, 0x0b, 0xdc, 0x21, 0xc5, 0x55, 0xe4, 0x46, 0x48, 0x29, 0x1e, - 0xd6, 0x89, 0xf3, 0xa1, 0x7d, 0x0b, 0xe4, 0x05, 0x96, 0x4d, 0x1b, 0x17, 0x7a, 0xa7, 0xd2, 0xa9, - 0x63, 0x02, 0x12, 0xc9, 0x70, 0x3c, 0x80, 0x7f, 0x3f, 0xe8, 0xa1, 0x19, 0xc9, 0x5c, 0x46, 0x96, - 0x1f, 0xc9, 0x74, 0xdc, 0xc6, 0xed, 0xa0, 0x38, 0x90, 0x1d, 0x7a, 0x32, 0x0b, 0xcd, 0xb0, 0x0c, - 0x74, 0x77, 0x1c, 0x7c, 0xb5, 0x05, 0xe1, 0x15, 0xba, 0x1d, 0x3c, 0x16, 0x8b, 0x8e, 0xf7, 0xf0, - 0xbd, 0x9a, 0xf2, 0x4b, 0xf4, 0xb6, 0xe4, 0xb6, 0x15, 0xf2, 0xe2, 0x74, 0xdb, 0x78, 0x7d, 0xc0, - 0x10, 0xcd, 0x82, 0x37, 0x9f, 0x84, 0xdc, 0x7b, 0x0b, 0x4d, 0xa6, 0xfe, 0x6d, 0x9c, 0x94, 0x12, - 0x23, 0x02, 0x4b, 0x85, 0xbc, 0x30, 0xd1, 0x1b, 0xd3, 0x8f, 0xec, 0x84, 0x29, 0xf5, 0xbe, 0xfd, - 0xc9, 0xaf, 0x4f, 0xc5, 0x07, 0xff, 0xc0, 0x2c, 0xa6, 0x89, 0xc5, 0x84, 0xa5, 0x8f, 0xf8, 0x33, - 0x94, 0x5d, 0x5e, 0xb3, 0x16, 0x9f, 0xc4, 0x14, 0xd8, 0x4e, 0xe3, 0xb7, 0x3c, 0x0d, 0xbe, 0xa1, - 0xbc, 0x66, 0x2d, 0xf9, 0x78, 0xa3, 0x54, 0x5c, 0x82, 0xb2, 0x1b, 0x7d, 0x8d, 0x78, 0xef, 0xa7, - 0x40, 0x10, 0x75, 0xe3, 0x37, 0xc5, 0xaa, 0xfa, 0xb6, 0x56, 0xbd, 0xef, 0x00, 0x6d, 0xdf, 0xe8, - 0x6b, 0x14, 0x97, 0xa3, 0xec, 0x97, 0x6b, 0xd6, 0xe2, 0xad, 0x9f, 0x02, 0xfa, 0x42, 0xe3, 0xb7, - 0x7c, 0x3f, 0xb4, 0x7f, 0x99, 0x0e, 0xce, 0xaf, 0x70, 0x99, 0x6a, 0x34, 0x29, 0x1a, 0x9a, 0x84, - 0xf2, 0xe9, 0xf6, 0x8a, 0x6f, 0xa2, 0x7c, 0x03, 0xbf, 0x56, 0x9b, 0x31, 0xbe, 0x5f, 0xd0, 0x94, - 0x67, 0x25, 0x56, 0x28, 0x2f, 0xe5, 0xb9, 0xcd, 0x12, 0x0f, 0xa8, 0xf3, 0x99, 0xf5, 0x05, 0xec, - 0x36, 0xdf, 0x44, 0x65, 0x5d, 0xc5, 0x0f, 0x60, 0x6c, 0xbc, 0xb1, 0x59, 0xa6, 0xf5, 0x17, 0x2b, - 0x94, 0x5f, 0x24, 0xac, 0x09, 0x71, 0x52, 0x20, 0xe9, 0xe0, 0xb1, 0x41, 0x2d, 0x19, 0x52, 0xeb, - 0xa8, 0xaa, 0x28, 0x87, 0xbf, 0x17, 0x95, 0xaf, 0x5b, 0xb5, 0xb4, 0xaa, 0xa2, 0xbc, 0xb8, 0x44, - 0xef, 0x1a, 0x20, 0xfb, 0xcd, 0x86, 0x12, 0x97, 0xa3, 0x3c, 0x4c, 0x54, 0x53, 0x4e, 0x02, 0x83, - 0x1c, 0x29, 0x92, 0x67, 0x10, 0x58, 0x8b, 0xed, 0xa6, 0xe7, 0x53, 0x55, 0xa1, 0x92, 0x4a, 0xf1, - 0x19, 0x13, 0x0f, 0x70, 0xde, 0x38, 0x0c, 0x0f, 0x4c, 0xe7, 0xf1, 0x40, 0x7c, 0x70, 0xa8, 0xaa, - 0xc6, 0x7c, 0x41, 0x56, 0xf0, 0x04, 0x5e, 0x2e, 0xb5, 0xff, 0x79, 0x98, 0x27, 0xf0, 0x0a, 0x6d, - 0x9c, 0x46, 0xb9, 0x1b, 0xa7, 0xf1, 0x18, 0xca, 0x5e, 0x57, 0x53, 0x4e, 0x7c, 0x6f, 0xf0, 0xf4, - 0xc6, 0x6f, 0x79, 0x96, 0xad, 0xef, 0xba, 0x9a, 0x72, 0x4f, 0x55, 0x85, 0x6a, 0xd4, 0x89, 0x6f, - 0x31, 0x17, 0xa2, 0x09, 0xa6, 0x60, 0x9d, 0xba, 0x10, 0x3d, 0xc5, 0x77, 0x84, 0x70, 0x2c, 0xa6, - 0xd9, 0xe8, 0xa5, 0xcb, 0xfa, 0x45, 0xe3, 0xba, 0x24, 0x2e, 0x9e, 0xd5, 0x7b, 0xcf, 0x19, 0xf0, - 0xb1, 0xe3, 0x98, 0x7e, 0xf1, 0x48, 0xb2, 0xaf, 0x9d, 0xb9, 0x19, 0xad, 0x46, 0xf9, 0xf5, 0xbe, - 0x4d, 0x7e, 0x63, 0x9b, 0x88, 0x1f, 0xce, 0xe3, 0x9a, 0xb2, 0x4c, 0x62, 0x85, 0xf2, 0xc2, 0x72, - 0xc5, 0x43, 0xb7, 0x32, 0xd5, 0xff, 0xad, 0x7e, 0x62, 0x7b, 0x55, 0x85, 0xde, 0x75, 0x11, 0xc7, - 0xab, 0x31, 0x6f, 0x03, 0x6b, 0x2f, 0x9e, 0x37, 0x19, 0x55, 0xf0, 0xbd, 0x39, 0x24, 0x68, 0xca, - 0x7e, 0x81, 0x71, 0xaa, 0x1d, 0x02, 0xcf, 0xa4, 0x92, 0x50, 0x33, 0x56, 0x46, 0xd3, 0x03, 0xa9, - 0xb9, 0xe3, 0x83, 0x7d, 0xa6, 0x3f, 0x82, 0x07, 0x4c, 0x5d, 0xe3, 0x83, 0x7d, 0x25, 0x1e, 0xf0, - 0x17, 0x30, 0x0a, 0x89, 0x93, 0xb0, 0x51, 0xc8, 0x31, 0xa2, 0xa4, 0x3f, 0xf0, 0x16, 0xb4, 0x39, - 0x57, 0xb9, 0x93, 0x55, 0x16, 0x33, 0x1e, 0xf5, 0x80, 0x80, 0xa6, 0xd2, 0xcf, 0x24, 0xe1, 0x3d, - 0x51, 0x7a, 0xc6, 0x06, 0x5a, 0x80, 0xd1, 0x99, 0xad, 0x1b, 0x85, 0x74, 0xde, 0x3d, 0x80, 0xd9, - 0xe1, 0x25, 0x0e, 0x0c, 0x00, 0x72, 0xb9, 0x1a, 0xdd, 0x5c, 0x5e, 0xb3, 0xf6, 0x6a, 0x74, 0xf3, - 0xaa, 0xca, 0x55, 0x57, 0xa3, 0x9b, 0x5f, 0xae, 0x59, 0x9b, 0xec, 0x6b, 0x27, 0x77, 0xde, 0x36, - 0xa0, 0xd8, 0x21, 0xa0, 0xfc, 0x4f, 0x82, 0x01, 0x70, 0xbe, 0x9d, 0xe4, 0x8e, 0x7f, 0xdf, 0x24, - 0xf5, 0xe0, 0x68, 0xca, 0x9a, 0xcb, 0x2f, 0x33, 0x69, 0x5b, 0x72, 0xcf, 0x19, 0xbd, 0x23, 0x66, - 0x62, 0x0a, 0x1c, 0xd9, 0xcc, 0x68, 0x67, 0xdc, 0xdf, 0x6b, 0xc3, 0x1d, 0xb8, 0x4b, 0xc5, 0x22, - 0x6f, 0xd3, 0xe2, 0xf0, 0xfb, 0xbe, 0xc0, 0x27, 0xef, 0xfb, 0x02, 0x8b, 0x9f, 0xf0, 0x2c, 0xf5, - 0x3c, 0xfe, 0xf4, 0xb2, 0x65, 0xcb, 0x9e, 0x28, 0x56, 0xd9, 0x90, 0x62, 0xab, 0x80, 0x72, 0x31, - 0x43, 0x8e, 0x7d, 0x7b, 0x32, 0x26, 0x41, 0xc7, 0xfb, 0x03, 0x8d, 0xe5, 0x57, 0x6c, 0x10, 0xce, - 0x5a, 0x79, 0xaa, 0x2a, 0xac, 0xc0, 0xb4, 0x28, 0x3e, 0xd4, 0x5a, 0xae, 0x90, 0x85, 0x8f, 0x68, - 0x38, 0xfe, 0xe3, 0x2e, 0xc6, 0xfb, 0x17, 0xab, 0x30, 0xa0, 0xd8, 0x42, 0x0c, 0x97, 0x69, 0x8e, - 0x76, 0x1c, 0x2d, 0xce, 0x25, 0x2b, 0x66, 0x35, 0xd7, 0x06, 0xb2, 0xa8, 0x5b, 0xba, 0x31, 0xac, - 0x47, 0x75, 0xaf, 0x7c, 0x16, 0x78, 0x2e, 0x6e, 0x13, 0x87, 0xf9, 0xf9, 0xee, 0x94, 0x62, 0x67, - 0x68, 0x56, 0x7e, 0x85, 0x38, 0x27, 0x39, 0x5e, 0x2f, 0xbb, 0x35, 0xe6, 0xc0, 0xa5, 0xc4, 0xae, - 0x93, 0x7a, 0x7b, 0x67, 0xf2, 0xab, 0x81, 0x44, 0xdb, 0x3e, 0xfd, 0xc4, 0xbe, 0xd1, 0xad, 0x67, - 0x92, 0xe7, 0x86, 0x92, 0x43, 0x47, 0x41, 0x35, 0x56, 0xf4, 0xcf, 0x04, 0x34, 0x73, 0xa5, 0x3f, - 0x1c, 0xb1, 0xd8, 0x9d, 0xaa, 0xbe, 0x5f, 0x8b, 0x21, 0x34, 0xd9, 0x20, 0x43, 0xd7, 0x51, 0xb3, - 0x57, 0xc1, 0x54, 0x2a, 0x5b, 0x2a, 0xe4, 0x67, 0x81, 0x6c, 0xdd, 0x44, 0xb6, 0x84, 0x59, 0xdd, - 0xbe, 0x1f, 0x0c, 0x47, 0x78, 0xc3, 0x31, 0x42, 0xe7, 0xea, 0xad, 0x67, 0x46, 0xb7, 0x9e, 0xa1, - 0xa4, 0xae, 0x65, 0x28, 0x1a, 0x3e, 0xd5, 0x75, 0x41, 0x72, 0x21, 0xbc, 0xd8, 0xbc, 0xf1, 0x2c, - 0xb0, 0x05, 0x45, 0x7f, 0x9f, 0x8d, 0x66, 0xb9, 0x74, 0xb9, 0xf3, 0xf5, 0xcb, 0x56, 0x4a, 0x37, - 0xad, 0x7e, 0x19, 0xd2, 0x64, 0x60, 0x7a, 0x47, 0xe4, 0xd5, 0xca, 0x44, 0x58, 0x0b, 0xca, 0xe5, - 0xa8, 0x90, 0x4e, 0xed, 0x3b, 0x3f, 0xb3, 0xda, 0x97, 0x98, 0x2b, 0xdb, 0x95, 0xbe, 0x0b, 0x78, - 0xa5, 0x2f, 0x18, 0xd5, 0x8d, 0x33, 0x9a, 0xbe, 0xfb, 0x59, 0xc8, 0xf3, 0xd3, 0x9d, 0xdf, 0x18, - 0xda, 0xe0, 0xbf, 0xce, 0x81, 0xd3, 0xad, 0x21, 0xa9, 0x5e, 0x4c, 0x10, 0x7d, 0x9e, 0xf7, 0x34, - 0x15, 0x4c, 0xa9, 0x83, 0xbb, 0xa7, 0x69, 0x4e, 0x28, 0xab, 0xb0, 0x9e, 0x77, 0x34, 0x7d, 0x81, - 0xbd, 0x79, 0x70, 0xd6, 0x8f, 0x8c, 0x19, 0xc7, 0x15, 0x86, 0xa0, 0xcf, 0xda, 0x6d, 0xc9, 0xf8, - 0xb8, 0x4b, 0xe0, 0x24, 0x2d, 0x40, 0x60, 0x60, 0x67, 0x16, 0x53, 0xd2, 0x52, 0xc7, 0x0c, 0x91, - 0x16, 0xc5, 0x87, 0x8f, 0xe9, 0x5d, 0x5b, 0x12, 0xfb, 0x2f, 0x00, 0x95, 0x9c, 0x1a, 0x38, 0x49, - 0xc2, 0x94, 0x61, 0x3b, 0x38, 0x33, 0x1f, 0x0f, 0x3e, 0x4e, 0x82, 0x87, 0xb0, 0x0d, 0xde, 0x31, - 0x88, 0x0a, 0x00, 0xdd, 0xf8, 0xb3, 0x82, 0x46, 0xc5, 0x5c, 0x4c, 0x82, 0x10, 0xca, 0x5d, 0xef, - 0xff, 0xa4, 0xaa, 0x9e, 0x10, 0x2c, 0xa0, 0x97, 0xc0, 0x25, 0x72, 0x0d, 0xb1, 0xc5, 0x64, 0x16, - 0x27, 0xc4, 0x5f, 0x97, 0x7f, 0xaa, 0xe2, 0x83, 0xb1, 0x78, 0x6c, 0x1b, 0x89, 0xe8, 0x4f, 0x8d, - 0x3c, 0x53, 0x03, 0x27, 0x89, 0xeb, 0x6a, 0x4f, 0x8b, 0x25, 0x6b, 0x1e, 0x0c, 0x4c, 0x05, 0xa2, - 0xee, 0x60, 0x21, 0x2f, 0x24, 0x66, 0x2b, 0x38, 0xcb, 0x10, 0x2c, 0x21, 0x3e, 0xb8, 0xd3, 0x34, - 0x9c, 0x00, 0xa4, 0xb1, 0x3d, 0x0f, 0xcd, 0x76, 0xeb, 0xff, 0xd3, 0xc2, 0x1a, 0xc3, 0x02, 0x2a, - 0x20, 0xfd, 0x4d, 0x7f, 0x93, 0x3c, 0x3c, 0xf0, 0x73, 0xf6, 0x81, 0xdd, 0x77, 0x8b, 0xce, 0x67, - 0x73, 0x3e, 0x51, 0x35, 0x65, 0xb5, 0xe4, 0x18, 0x5a, 0x7e, 0x96, 0x37, 0x5e, 0xb1, 0x78, 0x62, - 0x90, 0xa6, 0xf8, 0x5b, 0x5b, 0xe2, 0x97, 0x76, 0x82, 0x93, 0x2b, 0x48, 0x6d, 0xe0, 0x40, 0x55, - 0xc7, 0x70, 0xe2, 0x16, 0x17, 0xa4, 0x97, 0x3f, 0x4e, 0x5b, 0x97, 0x9b, 0x85, 0xf6, 0xe6, 0xfe, - 0x12, 0xcd, 0x72, 0xdd, 0x03, 0x17, 0xe3, 0x83, 0xa5, 0x56, 0xe3, 0x83, 0xfb, 0x5c, 0x2d, 0x80, - 0x30, 0x9f, 0xca, 0xd9, 0x1e, 0xfc, 0x52, 0x53, 0xde, 0x42, 0xbf, 0x90, 0xd2, 0x40, 0xab, 0xfc, - 0x28, 0xe0, 0x55, 0x1b, 0xb8, 0x5f, 0x07, 0x82, 0x3d, 0x30, 0x1d, 0x4d, 0xc5, 0x28, 0xdb, 0xc4, - 0xac, 0x2f, 0xbb, 0x45, 0x42, 0x78, 0x78, 0xac, 0xd8, 0xde, 0x80, 0x1e, 0x6f, 0x7f, 0x56, 0xdc, - 0x17, 0x6c, 0xf1, 0x10, 0xae, 0x17, 0xb1, 0xff, 0x10, 0x29, 0x70, 0x9f, 0x77, 0x46, 0x45, 0xb8, - 0x9e, 0xb7, 0xaa, 0xc2, 0x25, 0x28, 0xc2, 0xc2, 0x31, 0x82, 0x22, 0xc0, 0x20, 0x3f, 0x4c, 0x4c, - 0x84, 0x88, 0x2f, 0x1c, 0xb9, 0x65, 0x31, 0x11, 0x6e, 0x7a, 0x1a, 0xdb, 0x7b, 0x71, 0x0f, 0x6e, - 0x52, 0xdc, 0x83, 0x7f, 0x65, 0x32, 0xe2, 0x10, 0x47, 0xbb, 0xff, 0x56, 0x86, 0x03, 0x28, 0x0b, - 0xbd, 0x94, 0x39, 0x1c, 0x40, 0x1e, 0x0c, 0x32, 0x9e, 0x68, 0x00, 0xcf, 0xa2, 0xbc, 0xe0, 0x7b, - 0xef, 0x85, 0x7d, 0x11, 0x1c, 0x1b, 0x61, 0x0a, 0x48, 0x6f, 0x49, 0x91, 0x3c, 0x8d, 0x90, 0xae, - 0x9b, 0xbb, 0x92, 0xa7, 0x87, 0x46, 0xb7, 0x77, 0x7d, 0x57, 0x96, 0x23, 0x65, 0x2d, 0xfa, 0x13, - 0x95, 0xd4, 0x8b, 0xcf, 0xa1, 0xdc, 0x06, 0x7f, 0xa3, 0x3f, 0x82, 0x63, 0x22, 0x60, 0xf1, 0xd9, - 0x3c, 0x09, 0x4a, 0x98, 0xdd, 0x23, 0x0e, 0xab, 0x97, 0xd8, 0xfb, 0x0d, 0xee, 0x9d, 0x2b, 0x65, - 0x17, 0xa6, 0x26, 0xa8, 0xd0, 0xc4, 0x4a, 0xd2, 0x15, 0xdc, 0x01, 0x24, 0x5d, 0x25, 0xe7, 0x3e, - 0x3f, 0x1d, 0xaf, 0xa7, 0x58, 0x53, 0x1e, 0xe4, 0xdc, 0xe7, 0x67, 0x90, 0x5c, 0x25, 0xa9, 0xcb, - 0xdb, 0x13, 0x43, 0x24, 0x86, 0x0f, 0xc5, 0x37, 0xa6, 0xbb, 0xfc, 0xed, 0x0a, 0x48, 0xed, 0x75, - 0xfa, 0x6c, 0xce, 0x30, 0x15, 0x32, 0x37, 0xc5, 0x2f, 0xd3, 0xe2, 0x45, 0x30, 0x73, 0xfc, 0x5e, - 0x04, 0xed, 0x02, 0xca, 0xf6, 0x36, 0x34, 0xe0, 0x80, 0xd1, 0xf9, 0x65, 0x1f, 0x6a, 0x4a, 0x44, - 0x32, 0x7e, 0xcb, 0x8d, 0xc4, 0x67, 0x8a, 0x50, 0xae, 0xd8, 0x29, 0xca, 0x66, 0x43, 0x5c, 0xa2, - 0x77, 0xb4, 0x26, 0x76, 0x7e, 0x9d, 0xfa, 0xec, 0xab, 0xd4, 0xc8, 0x80, 0x2d, 0xa6, 0xd4, 0xb3, - 0x1e, 0xbc, 0x4e, 0x36, 0xc0, 0xe8, 0xe1, 0x23, 0x04, 0xc2, 0xe1, 0xae, 0xd9, 0xcd, 0x91, 0x8d, - 0x39, 0x4b, 0x8f, 0x0b, 0x9a, 0x72, 0x58, 0x40, 0x3d, 0x82, 0x64, 0x7b, 0xfd, 0xe5, 0xed, 0x82, - 0xde, 0xf6, 0x05, 0x76, 0x9c, 0x3a, 0x1e, 0x1f, 0xba, 0xc0, 0x1f, 0x32, 0xa1, 0x27, 0xa8, 0x67, - 0x0f, 0xa1, 0x3c, 0x70, 0xb3, 0xf8, 0x60, 0x4c, 0x09, 0xd4, 0xeb, 0xad, 0xe7, 0x92, 0xe7, 0x86, - 0xcc, 0x38, 0x54, 0x47, 0xbb, 0x47, 0x8f, 0x5f, 0xe2, 0x9b, 0xe9, 0xd1, 0x61, 0x10, 0x71, 0x18, - 0x6d, 0xda, 0x0e, 0xea, 0x97, 0x47, 0x92, 0x7b, 0x4f, 0x92, 0x00, 0x77, 0x7b, 0xce, 0x24, 0xfa, - 0x4e, 0xf0, 0x93, 0x16, 0xfd, 0x43, 0x2e, 0x9a, 0x66, 0x59, 0xdc, 0x4f, 0x8b, 0x3a, 0xff, 0x63, - 0x7a, 0xea, 0xfc, 0x49, 0x37, 0xea, 0xfc, 0x4e, 0x21, 0xcb, 0xa3, 0x69, 0xc9, 0xf2, 0x5b, 0x25, - 0x8b, 0xf8, 0xc1, 0x89, 0x72, 0xe2, 0xd0, 0x63, 0x87, 0x4e, 0x2a, 0xa5, 0xba, 0x0e, 0xf2, 0x7b, - 0x7f, 0x36, 0xe7, 0xeb, 0x2f, 0xb6, 0x0a, 0x08, 0xd5, 0x79, 0x03, 0x10, 0x30, 0xad, 0x9e, 0x48, - 0xdd, 0xf0, 0x13, 0xcf, 0x15, 0xcb, 0x6b, 0xf8, 0xf1, 0xcd, 0xad, 0x80, 0xec, 0x78, 0x5b, 0x47, - 0xf4, 0x13, 0x47, 0x01, 0x43, 0x2c, 0xa2, 0xe1, 0x58, 0x8e, 0xc1, 0xde, 0x05, 0x82, 0xf5, 0x3e, - 0xd3, 0xd7, 0xbe, 0xbd, 0x53, 0x6f, 0xdd, 0x9c, 0xea, 0x1f, 0x84, 0xb6, 0xc5, 0x2a, 0x37, 0x83, - 0xc3, 0xde, 0x3e, 0xeb, 0x07, 0xb2, 0xb7, 0x17, 0x0f, 0x08, 0x68, 0xa2, 0xb7, 0x39, 0x12, 0xac, - 0xad, 0xf3, 0x36, 0xf8, 0xc8, 0x35, 0xfb, 0x44, 0x53, 0x3e, 0x94, 0xcc, 0x52, 0x9a, 0xcb, 0x89, - 0x38, 0xbe, 0x62, 0xb5, 0x8e, 0x3e, 0x7c, 0x29, 0x11, 0x3d, 0x1d, 0x1f, 0x1e, 0x4c, 0x0e, 0x7f, - 0x51, 0xe2, 0xd1, 0x7b, 0xcf, 0x18, 0x5c, 0x83, 0xa3, 0xc6, 0x58, 0x49, 0x7b, 0xa7, 0xc1, 0x5c, - 0x0c, 0xee, 0xa4, 0xca, 0x26, 0x58, 0x14, 0x19, 0xd1, 0xd1, 0x43, 0x35, 0xa7, 0x2d, 0x3a, 0x21, - 0xa0, 0xa9, 0x56, 0xf8, 0x14, 0x5f, 0x44, 0xb9, 0x4d, 0xbe, 0x50, 0x23, 0x35, 0x63, 0x28, 0xce, - 0x0c, 0xce, 0x4b, 0x6a, 0x8c, 0xb6, 0x18, 0xee, 0x54, 0xe8, 0x37, 0xf7, 0x75, 0x84, 0xcc, 0x42, - 0x17, 0x60, 0x5c, 0x6c, 0x05, 0xc6, 0x74, 0x21, 0xcf, 0xf9, 0x74, 0xab, 0x6f, 0xa1, 0x02, 0x3b, - 0x73, 0x2b, 0xbe, 0x6c, 0xae, 0x33, 0x63, 0xe4, 0x74, 0xfc, 0x6a, 0x41, 0x53, 0x79, 0x32, 0x4f, - 0x34, 0x90, 0xf5, 0x16, 0xed, 0x9a, 0x80, 0xee, 0x33, 0x60, 0x1c, 0xdb, 0xbc, 0x57, 0x71, 0xf2, - 0x58, 0x62, 0x2a, 0xeb, 0x30, 0x49, 0x5a, 0x90, 0xde, 0x9d, 0x89, 0xba, 0xc5, 0x71, 0x0f, 0xe2, - 0xf7, 0x95, 0xc1, 0x31, 0x56, 0x2d, 0xfb, 0xe6, 0xb1, 0x6a, 0x2b, 0xad, 0xa6, 0x84, 0x39, 0xd4, - 0x26, 0xde, 0x63, 0x35, 0x25, 0x9c, 0x0e, 0x57, 0xaa, 0xda, 0x2c, 0x62, 0x1c, 0x30, 0x6f, 0x44, - 0xb8, 0xc2, 0xa6, 0x12, 0x06, 0x9e, 0x12, 0xc7, 0xe0, 0xb1, 0xaa, 0x84, 0xa7, 0x81, 0xd6, 0x86, - 0x29, 0x83, 0x6d, 0xda, 0xdf, 0x2d, 0x26, 0xa9, 0x0d, 0xec, 0xe3, 0x07, 0x9a, 0xb2, 0x81, 0x51, - 0xda, 0xef, 0xf0, 0x0a, 0xaf, 0xeb, 0xa6, 0xb4, 0xab, 0xc6, 0x20, 0xb5, 0x5d, 0xa8, 0xe4, 0x09, - 0xdf, 0x83, 0x4a, 0xce, 0x1f, 0x3f, 0x95, 0xdc, 0xf6, 0x28, 0xa5, 0x92, 0x39, 0xf3, 0x9a, 0x89, - 0x37, 0xc9, 0xbc, 0xe6, 0x0f, 0x82, 0xa6, 0xf4, 0x0b, 0xe8, 0x2b, 0x41, 0x4a, 0x0f, 0xe2, 0x38, - 0x9e, 0x97, 0x3b, 0x31, 0x44, 0x66, 0xbc, 0xc5, 0x24, 0xd1, 0xdf, 0x64, 0xa3, 0xb9, 0x6e, 0xab, - 0xbd, 0xdb, 0x4c, 0x3c, 0xb2, 0xdd, 0x1c, 0xd7, 0xc9, 0xd7, 0x60, 0x13, 0x1f, 0x27, 0x85, 0xc4, - 0x6f, 0x38, 0xa1, 0x90, 0x1a, 0x6f, 0xdc, 0x57, 0x19, 0x5f, 0x41, 0x07, 0xa9, 0x61, 0x45, 0x82, - 0x76, 0x0d, 0x07, 0x51, 0xc4, 0x65, 0x38, 0x00, 0xaa, 0xe6, 0x70, 0x01, 0x91, 0xcc, 0x64, 0x40, - 0x7c, 0x06, 0x9a, 0xc4, 0x7d, 0x3e, 0x67, 0x81, 0x20, 0xdc, 0xb8, 0x05, 0x42, 0xd6, 0x75, 0x5a, - 0x20, 0xd8, 0xed, 0x57, 0xb2, 0x7f, 0x00, 0xfb, 0x95, 0x9c, 0xeb, 0xb1, 0x5f, 0xc9, 0xbd, 0x4e, - 0xfb, 0x95, 0xbc, 0xeb, 0xb6, 0x5f, 0x11, 0xbb, 0x4c, 0xc4, 0x0a, 0x72, 0x35, 0xcc, 0x96, 0x51, - 0xc4, 0xfa, 0x81, 0xd3, 0x92, 0xe0, 0xda, 0x70, 0x1b, 0x84, 0x16, 0xe0, 0xe9, 0x06, 0xbd, 0xbf, - 0x27, 0x7e, 0xc9, 0xe0, 0xd9, 0x20, 0x03, 0x36, 0x41, 0xb4, 0x9c, 0x1d, 0x41, 0x89, 0x87, 0xe2, - 0xe1, 0x12, 0x8f, 0x81, 0x71, 0x2b, 0x2b, 0x4a, 0x3c, 0x36, 0xb1, 0x04, 0xc5, 0xb2, 0x0a, 0xca, - 0x03, 0x4d, 0x39, 0x91, 0xd0, 0x41, 0x58, 0x61, 0xa3, 0x48, 0x9e, 0x6f, 0xd3, 0xb5, 0xdb, 0x77, - 0x9c, 0x74, 0x14, 0x7f, 0x6b, 0x7d, 0xc3, 0x40, 0x1a, 0xf7, 0xa6, 0xa6, 0xfc, 0xdc, 0xfa, 0x86, - 0xdd, 0x3c, 0x85, 0xb9, 0xed, 0xcd, 0xe3, 0xc8, 0x02, 0xf4, 0xbd, 0x0d, 0x59, 0x26, 0xdd, 0x90, - 0x21, 0xcb, 0xe4, 0x9b, 0x6f, 0xc8, 0x52, 0x8d, 0xf2, 0x9a, 0xbc, 0xe1, 0xf0, 0x87, 0xf5, 0x44, - 0xda, 0x85, 0x63, 0x7d, 0x91, 0x22, 0xb9, 0x98, 0xc6, 0x4a, 0x3f, 0xac, 0x9f, 0xde, 0xa9, 0x77, - 0xec, 0x83, 0xa7, 0x88, 0x66, 0x19, 0x85, 0xe8, 0x8d, 0xa9, 0xd3, 0x9f, 0xeb, 0x03, 0xdb, 0x54, - 0xd2, 0x45, 0x7c, 0x07, 0xe1, 0x53, 0x25, 0x22, 0xa7, 0x2a, 0x4d, 0x59, 0x21, 0x91, 0x03, 0x94, - 0x9f, 0xb3, 0x1d, 0x34, 0xc8, 0xc2, 0xb9, 0x03, 0x79, 0xd6, 0x63, 0x86, 0x8e, 0xc4, 0xca, 0x34, - 0xa0, 0xbd, 0xe3, 0xb1, 0x5d, 0xe5, 0x8a, 0x8a, 0x87, 0x15, 0x15, 0xce, 0xee, 0x66, 0x1a, 0x15, - 0xe1, 0x17, 0x71, 0x76, 0x37, 0xb3, 0xdd, 0xed, 0x6e, 0x38, 0x4b, 0x9b, 0x5f, 0xb1, 0xb8, 0xa6, - 0x05, 0x18, 0x63, 0x3f, 0x9a, 0x01, 0x63, 0x5b, 0x42, 0x9a, 0x42, 0x0c, 0x62, 0x12, 0xd2, 0x94, - 0xdc, 0xda, 0xc4, 0xb1, 0xed, 0xc9, 0xbe, 0x6f, 0xa9, 0xe5, 0x38, 0x89, 0x4a, 0xfa, 0x0a, 0xca, - 0x8b, 0x78, 0xfd, 0x81, 0x08, 0x0d, 0xc1, 0x39, 0xcb, 0xe9, 0xc8, 0xef, 0x0f, 0x44, 0xc8, 0xdb, - 0x02, 0x2d, 0xe5, 0xc9, 0x16, 0x63, 0x3f, 0x52, 0x2a, 0xfe, 0x1e, 0x4d, 0x69, 0x0e, 0xd4, 0xd6, - 0xbd, 0xef, 0xab, 0x6f, 0x6e, 0xf0, 0xae, 0x6f, 0xf0, 0x61, 0x71, 0xd3, 0x94, 0xb2, 0x37, 0x34, - 0x65, 0xad, 0x64, 0xad, 0x91, 0x2b, 0x78, 0x4f, 0x1b, 0x26, 0x7e, 0xd5, 0xa3, 0xc3, 0xcb, 0x40, - 0x3a, 0xab, 0x77, 0x6d, 0x89, 0x0f, 0xee, 0x82, 0x46, 0xd7, 0x86, 0x3b, 0x1e, 0xa3, 0x12, 0xdd, - 0x4e, 0xbe, 0x42, 0xb5, 0x0e, 0x2a, 0x56, 0x70, 0xb6, 0x6f, 0x33, 0x4c, 0xa0, 0x37, 0x6d, 0xdf, - 0xee, 0xb3, 0xd8, 0xbe, 0x6d, 0x5c, 0x1e, 0xf6, 0x18, 0x55, 0x01, 0x6f, 0xa3, 0x8f, 0xb3, 0x72, - 0x7b, 0x0d, 0xe5, 0x7a, 0x37, 0xf8, 0x02, 0x11, 0x2c, 0x56, 0x9a, 0x02, 0xd9, 0x84, 0xa1, 0x84, - 0xd2, 0x38, 0x8a, 0xf1, 0xc3, 0xc3, 0xd6, 0xfe, 0x98, 0xde, 0x7b, 0x26, 0x19, 0xbb, 0x7c, 0x6d, - 0xb8, 0x63, 0x99, 0xb1, 0x40, 0xfc, 0x43, 0x85, 0x1e, 0x62, 0x11, 0xca, 0xf6, 0xd7, 0xd7, 0x91, - 0xfc, 0x64, 0x05, 0x9a, 0x32, 0x45, 0x32, 0x7e, 0xcb, 0x79, 0x89, 0xde, 0x58, 0xa2, 0xed, 0xb2, - 0x6a, 0xfc, 0x10, 0x1f, 0x46, 0x39, 0x21, 0x6f, 0xdd, 0x46, 0x92, 0x77, 0x6c, 0xba, 0xa6, 0x4c, - 0x95, 0x70, 0x01, 0xb4, 0x3a, 0x72, 0x41, 0xc5, 0xbf, 0xc4, 0x52, 0x34, 0x09, 0xa0, 0xa2, 0xbc, - 0xc1, 0x1b, 0x86, 0x60, 0x8b, 0x44, 0xe8, 0xc5, 0x97, 0xe3, 0x4e, 0xfa, 0x91, 0x9d, 0x2a, 0x5f, - 0x28, 0xbe, 0x80, 0x26, 0x92, 0x17, 0x66, 0xd3, 0x53, 0x38, 0xac, 0x21, 0x79, 0xce, 0xcc, 0x52, - 0xb9, 0x00, 0xbe, 0xcd, 0xdf, 0xb4, 0xe9, 0x29, 0x83, 0xd2, 0x3f, 0x1c, 0x55, 0xcd, 0x4a, 0xb1, - 0x0a, 0x4d, 0x61, 0xe8, 0x05, 0x6f, 0xef, 0x7d, 0xd4, 0xc2, 0xd6, 0x23, 0x59, 0x6b, 0xe8, 0x6b, - 0x92, 0x38, 0x7b, 0x8c, 0xd8, 0x0f, 0x5a, 0xeb, 0xc5, 0x67, 0xd0, 0xc4, 0xf5, 0x1b, 0xcb, 0x49, - 0xc2, 0xe6, 0xb9, 0x78, 0x8b, 0xe7, 0x69, 0x4a, 0xa1, 0x64, 0x96, 0xca, 0x93, 0x58, 0xd2, 0x31, - 0x03, 0x1b, 0xb1, 0x72, 0x31, 0x82, 0x26, 0xf1, 0x74, 0xc6, 0xbc, 0x34, 0xde, 0xcc, 0xdc, 0x85, - 0xe0, 0x48, 0x07, 0xb8, 0x15, 0x10, 0x9c, 0x8d, 0xa7, 0x37, 0xe8, 0xd5, 0x38, 0x77, 0x26, 0x75, - 0xfa, 0x73, 0x02, 0xd0, 0x7c, 0x03, 0x71, 0x05, 0x18, 0x66, 0xe1, 0xcf, 0xbe, 0xdf, 0x74, 0xcf, - 0x65, 0x85, 0xf2, 0x3c, 0x8b, 0x85, 0x23, 0xc5, 0x17, 0xd4, 0x7a, 0x92, 0x36, 0x13, 0x3f, 0x30, - 0xee, 0x59, 0x78, 0x23, 0x8b, 0x9c, 0x87, 0x25, 0x41, 0xa4, 0x48, 0xae, 0xb4, 0x61, 0xd4, 0x44, - 0xfb, 0x17, 0x7a, 0xff, 0xa5, 0xaa, 0x9a, 0x12, 0xa6, 0xa7, 0x1f, 0xd5, 0xda, 0xf4, 0x81, 0x4b, - 0x90, 0x25, 0x84, 0x4c, 0x85, 0xc9, 0x69, 0x92, 0xb6, 0x02, 0x9b, 0x20, 0xa9, 0x64, 0x38, 0x83, - 0x8c, 0x00, 0x97, 0x16, 0xd5, 0xe7, 0x0d, 0x07, 0x03, 0x38, 0x64, 0x1e, 0x25, 0x23, 0xf8, 0x0a, - 0x79, 0x61, 0x7c, 0x70, 0x07, 0xd8, 0xca, 0x51, 0x4b, 0xec, 0xed, 0xc9, 0x33, 0x3b, 0xe3, 0x83, - 0x7d, 0x60, 0x3a, 0xa7, 0xef, 0x3a, 0xaa, 0x1f, 0x3a, 0xa6, 0x5a, 0xfa, 0x7c, 0x9f, 0xc0, 0x4d, - 0x2f, 0xa0, 0x02, 0xfb, 0x91, 0x5c, 0x57, 0x08, 0x24, 0x62, 0x8f, 0xcf, 0xd3, 0x69, 0xf2, 0x62, - 0xde, 0x14, 0x8b, 0x11, 0x19, 0x80, 0x89, 0x79, 0xf2, 0x0f, 0xb6, 0xab, 0xe8, 0x98, 0x80, 0xe6, - 0x9a, 0xa1, 0x11, 0xc2, 0xab, 0x7c, 0x11, 0x6f, 0x85, 0x17, 0xe7, 0xc0, 0xc1, 0x0c, 0x75, 0x19, - 0xca, 0x27, 0xf0, 0x44, 0xbd, 0xf9, 0x1e, 0x31, 0xa0, 0x93, 0x15, 0x32, 0x95, 0xab, 0xc3, 0x21, - 0x82, 0x35, 0xa1, 0xbe, 0xea, 0x19, 0xa6, 0x91, 0xe7, 0x59, 0xd4, 0x00, 0xad, 0x5b, 0x41, 0x9e, - 0x07, 0xab, 0x2f, 0xba, 0x9a, 0x8d, 0xe6, 0xb9, 0xf6, 0xbd, 0xdb, 0x7c, 0xc6, 0x32, 0xb1, 0x18, - 0xc6, 0x57, 0x59, 0xe2, 0x22, 0xb9, 0xee, 0xc5, 0xed, 0xe4, 0x35, 0xde, 0xd1, 0x94, 0x37, 0xd1, - 0x1b, 0x52, 0xa6, 0xa3, 0xa0, 0x6e, 0x0c, 0xae, 0x6b, 0x1f, 0x83, 0xdf, 0xf8, 0x17, 0x02, 0xe3, - 0x37, 0x8c, 0x61, 0x79, 0x95, 0x46, 0xbd, 0x6b, 0x60, 0xa4, 0x7a, 0x26, 0xca, 0xe1, 0x24, 0x38, - 0xf5, 0xe2, 0x4a, 0x34, 0xb5, 0xce, 0xbc, 0x0e, 0xd5, 0xcd, 0x8d, 0xc4, 0x40, 0x1d, 0xa3, 0x3a, - 0x5b, 0x95, 0x3c, 0x8d, 0x67, 0x8b, 0x12, 0x7b, 0xbf, 0x51, 0x6d, 0x0d, 0x4a, 0x97, 0x6a, 0x4a, - 0x09, 0x92, 0x24, 0x7e, 0x65, 0x19, 0x8f, 0xa6, 0xe8, 0x50, 0x16, 0x9a, 0x67, 0x70, 0x63, 0x90, - 0xe7, 0xfd, 0xe6, 0x4b, 0xa8, 0x4a, 0x63, 0x82, 0xa6, 0x5c, 0x10, 0xd0, 0x39, 0x41, 0xca, 0x34, - 0x8f, 0xfc, 0x69, 0x5a, 0x31, 0x01, 0x44, 0x52, 0xbe, 0x3d, 0xc2, 0x82, 0xff, 0x3d, 0x1b, 0xdd, - 0xef, 0xbe, 0xea, 0x9f, 0xa6, 0xb8, 0xe0, 0xf6, 0x86, 0x36, 0x23, 0xfe, 0x28, 0x19, 0x4f, 0x44, - 0x5e, 0xc8, 0x5f, 0x69, 0x17, 0xd8, 0xc9, 0x7c, 0xab, 0xbb, 0xb2, 0xd0, 0x1c, 0x13, 0x61, 0x94, - 0x87, 0x7c, 0xf5, 0xbe, 0x40, 0xc4, 0xef, 0x6d, 0x50, 0x7d, 0xbf, 0x16, 0xbf, 0x10, 0xd0, 0xc4, - 0xb0, 0x2f, 0xb4, 0xc9, 0x17, 0x7a, 0x8d, 0x3e, 0x78, 0x65, 0x3b, 0x04, 0x4d, 0xf9, 0xbd, 0x64, - 0x16, 0xcb, 0xbf, 0x8e, 0x0f, 0xee, 0x48, 0xec, 0x20, 0x8c, 0x45, 0xb2, 0xa7, 0x25, 0x39, 0xd4, - 0x12, 0x1f, 0xba, 0x90, 0xec, 0x69, 0xd9, 0xe8, 0xfb, 0xd8, 0x00, 0xb9, 0x81, 0x4b, 0xf1, 0xd8, - 0xae, 0x8d, 0xcd, 0xeb, 0x7d, 0x8b, 0x31, 0x85, 0x69, 0x00, 0xf1, 0x81, 0x01, 0x76, 0x5b, 0x58, - 0x0b, 0x2c, 0xea, 0x5f, 0x5c, 0x1f, 0xf2, 0x6f, 0xf2, 0x85, 0x48, 0x26, 0x6b, 0xf2, 0x0b, 0x7a, - 0x24, 0x7a, 0xdb, 0xab, 0x6a, 0x68, 0xae, 0x59, 0x76, 0xeb, 0xd8, 0x32, 0xa8, 0x7a, 0x25, 0xdd, - 0xb7, 0xc8, 0xf7, 0xf3, 0xbb, 0x64, 0x56, 0xb1, 0xa8, 0x53, 0x6c, 0xa4, 0xa2, 0x6b, 0x59, 0xa8, - 0xd0, 0x7d, 0x94, 0x3b, 0x5f, 0x97, 0xf8, 0x8e, 0xc5, 0x21, 0x6a, 0x41, 0x1a, 0xf0, 0x37, 0xbf, - 0xc9, 0xe5, 0x41, 0x4b, 0x9c, 0x3b, 0xa3, 0x6f, 0xeb, 0x48, 0xf6, 0xb4, 0xa4, 0x06, 0x36, 0xc7, - 0x2f, 0x9d, 0xb2, 0xf8, 0x47, 0x91, 0xa8, 0x67, 0x69, 0xb7, 0x27, 0xed, 0x2e, 0x67, 0x86, 0xc1, - 0xbf, 0x9b, 0x60, 0x73, 0x63, 0xbe, 0x6b, 0xc1, 0xd0, 0xfa, 0x7a, 0x64, 0xdd, 0x80, 0x7e, 0x63, - 0x2d, 0x9a, 0x5c, 0xd7, 0xe0, 0xf7, 0x05, 0x22, 0xe0, 0x5f, 0x4b, 0x04, 0x6a, 0x8f, 0x19, 0x7c, - 0xa1, 0xa5, 0x42, 0x9e, 0x05, 0x1f, 0x6c, 0xd0, 0xde, 0xd8, 0xcf, 0x56, 0xef, 0xee, 0xd4, 0xfb, - 0xf6, 0x9b, 0x63, 0x5a, 0x5a, 0x8b, 0xeb, 0xd0, 0x14, 0x58, 0xa4, 0x52, 0x5f, 0x1f, 0xf2, 0x85, - 0xc3, 0x44, 0x49, 0xb1, 0xcc, 0x38, 0x7e, 0x6b, 0x0d, 0x53, 0xa2, 0x40, 0x42, 0x05, 0xcc, 0x5a, - 0xb1, 0xa4, 0xf6, 0x05, 0xaa, 0xb5, 0xb1, 0xf8, 0x32, 0x42, 0x75, 0xde, 0x72, 0x5f, 0x28, 0x62, - 0x50, 0x19, 0x44, 0x55, 0xf1, 0xa8, 0xc1, 0xc9, 0x73, 0xc5, 0xd4, 0xc9, 0xbc, 0x5c, 0x81, 0xe7, - 0x98, 0x44, 0x20, 0xf6, 0xa8, 0x5c, 0x1b, 0xb1, 0x06, 0x4d, 0x6c, 0x0e, 0xfb, 0x42, 0x6b, 0x82, - 0x1b, 0x7d, 0x01, 0xa2, 0xaf, 0x90, 0x0d, 0xb6, 0xc5, 0x2c, 0x95, 0xe7, 0xa6, 0xfa, 0x2f, 0x8f, - 0xee, 0xef, 0x67, 0x16, 0x1f, 0x11, 0xa3, 0xd4, 0x92, 0x7e, 0xba, 0x40, 0x35, 0x9b, 0x8b, 0xd5, - 0x68, 0x0a, 0xd9, 0xd6, 0x8a, 0x60, 0xa3, 0xd7, 0x4f, 0x1d, 0x95, 0x70, 0x80, 0x64, 0x6b, 0x0d, - 0xa3, 0x91, 0x8f, 0x1e, 0xd5, 0xbb, 0x3b, 0xd9, 0x58, 0xd6, 0x46, 0xe2, 0x6a, 0x84, 0x60, 0x4b, - 0x8d, 0x35, 0x13, 0x41, 0xdb, 0x52, 0x4d, 0x59, 0x28, 0x71, 0xc5, 0xf2, 0x6c, 0x18, 0xc9, 0x2c, - 0x81, 0x5b, 0xc4, 0x7d, 0x32, 0xab, 0x11, 0x5f, 0x33, 0x60, 0xc5, 0xf8, 0x65, 0x80, 0x35, 0x08, - 0xdc, 0x16, 0x6b, 0x4a, 0x91, 0x64, 0x96, 0xd2, 0x64, 0x0b, 0xac, 0xc0, 0x36, 0x9a, 0xd9, 0xb2, - 0x74, 0xaf, 0xa0, 0x29, 0xbb, 0x05, 0xb4, 0x4b, 0x90, 0x32, 0x5c, 0x25, 0x1a, 0xe9, 0x20, 0x2d, - 0x16, 0xe4, 0x7c, 0xe2, 0x2d, 0xf0, 0x73, 0x45, 0xb0, 0x9e, 0xfb, 0x15, 0x81, 0x3b, 0xbb, 0x2b, - 0x82, 0xb9, 0xeb, 0x57, 0x04, 0xeb, 0xae, 0x15, 0xed, 0xb3, 0xbb, 0xd4, 0xdf, 0x55, 0x08, 0xb5, - 0xf4, 0x0d, 0x4d, 0x59, 0x8b, 0x6a, 0xa5, 0x4c, 0x9f, 0x90, 0x76, 0x53, 0x33, 0x23, 0xbd, 0x9e, - 0x2c, 0x34, 0xd7, 0x92, 0xe5, 0xec, 0x2e, 0x42, 0x7a, 0x59, 0xd6, 0xb7, 0xb7, 0x46, 0x53, 0x56, - 0xa1, 0xd7, 0xa4, 0x0c, 0x9f, 0x23, 0x2f, 0xb0, 0xe4, 0x0b, 0x74, 0x7b, 0x62, 0x2c, 0x6f, 0x70, - 0x6f, 0x16, 0x9a, 0x97, 0x76, 0xb4, 0x3b, 0x1f, 0x6a, 0x88, 0x01, 0x76, 0xa6, 0x4f, 0x90, 0x8b, - 0xf8, 0x1d, 0xb1, 0x5f, 0xc5, 0x31, 0x60, 0x67, 0x47, 0x2e, 0x2a, 0xe4, 0xec, 0x48, 0xac, 0x90, - 0x73, 0xc8, 0x05, 0x72, 0x7e, 0xa7, 0x29, 0x61, 0x1e, 0x70, 0xde, 0xe3, 0x0f, 0x82, 0x81, 0x8f, - 0x1d, 0x6a, 0x30, 0xd0, 0xa4, 0x87, 0x18, 0x0b, 0xc0, 0xc0, 0x0f, 0xbe, 0xf1, 0xcf, 0xfc, 0x4d, - 0xcc, 0x2e, 0xd9, 0x7c, 0x20, 0x9f, 0x77, 0x3e, 0x90, 0x0f, 0xa6, 0x7f, 0x20, 0x49, 0x77, 0xf3, - 0x79, 0x0c, 0x50, 0x24, 0xcc, 0xa5, 0x24, 0xad, 0xd6, 0x94, 0x0a, 0x89, 0x2b, 0x96, 0x9f, 0xd2, - 0xfb, 0x3f, 0x4b, 0xb4, 0x5d, 0x4c, 0x7e, 0x35, 0x60, 0x3c, 0x8d, 0xc3, 0x5d, 0xd7, 0x86, 0x3b, - 0xd8, 0xe7, 0x5c, 0x8d, 0x6e, 0x36, 0x97, 0x7b, 0x35, 0xba, 0x99, 0xfb, 0x12, 0x66, 0x00, 0x6d, - 0x0e, 0x25, 0xbe, 0x8d, 0x26, 0xd5, 0x05, 0x03, 0x01, 0x5f, 0x1d, 0x4c, 0x08, 0xaf, 0x66, 0xa9, - 0xa6, 0x2c, 0x93, 0xf8, 0x72, 0x79, 0xc1, 0xe8, 0xa7, 0xdf, 0x26, 0x76, 0x9d, 0x64, 0xd3, 0x25, - 0x0f, 0x9d, 0x4f, 0x6d, 0xde, 0x43, 0xc2, 0x8d, 0xf7, 0x9c, 0x1e, 0xdd, 0xfc, 0xa9, 0x69, 0xec, - 0x6e, 0x76, 0xe3, 0xb4, 0xe3, 0xb9, 0xdf, 0x43, 0x3b, 0x9e, 0x77, 0x03, 0x36, 0xa4, 0x94, 0x5e, - 0x4e, 0x0b, 0x46, 0xd4, 0x4b, 0x20, 0xc3, 0x8d, 0x25, 0x0c, 0xf5, 0x96, 0x6c, 0x30, 0xf8, 0xb8, - 0x2b, 0x09, 0xe6, 0x3a, 0x0b, 0xbf, 0x38, 0x0e, 0x82, 0xb9, 0x44, 0x53, 0x8a, 0x09, 0xc1, 0xbc, - 0x60, 0xcc, 0xbd, 0xb1, 0x86, 0x15, 0x48, 0xbf, 0x4b, 0xe3, 0xde, 0xec, 0xb4, 0x18, 0x61, 0x2e, - 0x2a, 0xac, 0x0a, 0xf8, 0x23, 0x2b, 0xec, 0x26, 0xd7, 0xaa, 0xef, 0xd7, 0x45, 0xf3, 0xd0, 0x7d, - 0x69, 0xea, 0xc2, 0x4d, 0x45, 0x07, 0xb3, 0xd0, 0x6c, 0xa5, 0xbe, 0x9e, 0x54, 0x9a, 0xe1, 0xfd, - 0x7d, 0xbf, 0x16, 0xdf, 0x74, 0x37, 0x22, 0x17, 0x4c, 0x4d, 0x85, 0xab, 0x11, 0xf9, 0x54, 0xde, - 0x64, 0xbc, 0xaa, 0xc2, 0xdd, 0x0e, 0xfc, 0x39, 0x27, 0x1a, 0x70, 0x84, 0x26, 0x02, 0x0b, 0x31, - 0x17, 0xab, 0xd8, 0x52, 0x9f, 0xa6, 0xac, 0x47, 0xbf, 0x92, 0xd2, 0x2c, 0x5c, 0x5e, 0xa8, 0x7f, - 0xb3, 0x8d, 0x50, 0x74, 0x3b, 0x8e, 0xe9, 0xad, 0x27, 0x6d, 0x36, 0xec, 0x94, 0xda, 0x71, 0x5b, - 0x98, 0x25, 0xfe, 0x70, 0x6f, 0x16, 0x9a, 0xe3, 0x3a, 0xc5, 0x9d, 0xff, 0x02, 0xad, 0xd7, 0x94, - 0x77, 0xd1, 0x3b, 0x52, 0xba, 0xe5, 0xcb, 0xd2, 0x78, 0xb6, 0x68, 0x8c, 0x57, 0xe8, 0xbf, 0xcc, - 0x40, 0x22, 0x0d, 0x7d, 0x1d, 0x6c, 0xae, 0xa7, 0x02, 0xb4, 0x77, 0xd1, 0x04, 0x62, 0xed, 0x4d, - 0x40, 0xa5, 0x52, 0x53, 0x16, 0x91, 0xb8, 0xd2, 0xd8, 0x14, 0x60, 0x5e, 0x3c, 0xb6, 0x9b, 0xf9, - 0x73, 0xa4, 0x76, 0x9e, 0x4d, 0xec, 0xdb, 0xce, 0x0c, 0x02, 0xbe, 0x2b, 0x9b, 0x13, 0x9a, 0x55, - 0x90, 0x55, 0x38, 0xd3, 0x11, 0xc2, 0x5a, 0xa5, 0xa3, 0x8a, 0xcf, 0xa3, 0x9c, 0x80, 0xe9, 0x64, - 0x54, 0x8c, 0x63, 0x7b, 0x18, 0x05, 0xf2, 0x2c, 0x36, 0x70, 0x7c, 0xb0, 0xcf, 0x18, 0x95, 0xb8, - 0x19, 0x01, 0xc9, 0xf2, 0x92, 0x8a, 0x5b, 0x89, 0x5b, 0x05, 0x94, 0xef, 0xab, 0xf7, 0x47, 0xb0, - 0xc6, 0x0f, 0x36, 0x74, 0x83, 0xa6, 0xd4, 0x4b, 0xac, 0x50, 0x7e, 0x03, 0x1e, 0xb9, 0x5a, 0xaf, - 0xb7, 0xd6, 0x00, 0xc0, 0xc3, 0x9f, 0x31, 0xc5, 0x29, 0xb1, 0x13, 0xea, 0x1a, 0x48, 0x0e, 0xef, - 0x4b, 0x7d, 0xbb, 0x1b, 0xd2, 0x3e, 0x11, 0xf3, 0x72, 0xec, 0x90, 0x84, 0x0d, 0xd1, 0x5b, 0x40, - 0xb7, 0xcf, 0x72, 0x71, 0x93, 0xf6, 0x03, 0xbb, 0x55, 0x36, 0x87, 0x78, 0x40, 0x40, 0x28, 0x48, - 0x73, 0x2e, 0x84, 0x09, 0xfe, 0x91, 0x1d, 0xf8, 0xc7, 0xb1, 0xbd, 0x4b, 0x58, 0xa2, 0x06, 0xa2, - 0x21, 0xaa, 0xd0, 0x14, 0x45, 0xe2, 0x86, 0x92, 0x1f, 0x87, 0xe8, 0x2f, 0x89, 0x63, 0xdb, 0xf5, - 0xed, 0xdb, 0x52, 0x97, 0xbb, 0x93, 0x43, 0xe7, 0xf5, 0xfe, 0x23, 0xc9, 0x5d, 0xdf, 0x10, 0x35, - 0xcd, 0xd9, 0xbd, 0xe0, 0x06, 0x05, 0xaf, 0x13, 0x64, 0x17, 0x54, 0xb9, 0x01, 0xc4, 0x3f, 0x0a, - 0x68, 0x32, 0xb6, 0x90, 0xa7, 0x8b, 0xcb, 0xc5, 0x8b, 0x7b, 0x62, 0x1c, 0x8b, 0xab, 0xe4, 0xba, - 0xc1, 0xf2, 0xde, 0xd2, 0x94, 0x37, 0x24, 0xcb, 0x70, 0xf2, 0x2b, 0x7c, 0xa6, 0x3f, 0x96, 0x7f, - 0x81, 0x28, 0x40, 0xb6, 0x7f, 0x09, 0x9b, 0x07, 0xb5, 0x7c, 0xe2, 0x3f, 0x30, 0x3d, 0x05, 0xf1, - 0x19, 0x6c, 0xbf, 0x6a, 0x19, 0x57, 0xfc, 0x47, 0x9c, 0x95, 0x28, 0xd8, 0x5c, 0x6f, 0x22, 0x57, - 0xe2, 0xd0, 0x3c, 0xd7, 0x65, 0xe9, 0x14, 0xa1, 0x93, 0x48, 0x10, 0xf6, 0x9e, 0xf2, 0x56, 0xc1, - 0x38, 0xf5, 0xd8, 0x6e, 0x96, 0xe2, 0x85, 0x19, 0x6c, 0xa4, 0xce, 0x9f, 0x4a, 0xb4, 0x5d, 0xe4, - 0xcd, 0x43, 0x70, 0x2a, 0x30, 0x2a, 0x63, 0xa5, 0xf9, 0x94, 0x21, 0xd6, 0x02, 0x91, 0xba, 0x8e, - 0x7c, 0x4a, 0x6e, 0xdf, 0xd5, 0xe8, 0x66, 0xe2, 0x92, 0x17, 0x1f, 0xdc, 0x99, 0xf8, 0xc3, 0xf1, - 0x44, 0x6f, 0x3b, 0x44, 0xc6, 0x4c, 0xec, 0xbf, 0x10, 0x1f, 0xee, 0x01, 0x9d, 0xbc, 0xf1, 0xcd, - 0x90, 0x98, 0xdf, 0xbe, 0x2c, 0xf1, 0x37, 0x68, 0x72, 0x30, 0xbc, 0x0a, 0x7f, 0x06, 0x76, 0xc9, - 0x9a, 0x80, 0x3f, 0x70, 0xb6, 0xfd, 0x03, 0x57, 0xd7, 0xe2, 0xc0, 0x0b, 0x2f, 0x6a, 0xca, 0x73, - 0x92, 0xa5, 0x83, 0x5c, 0xc2, 0x3e, 0x6b, 0x35, 0x81, 0x6e, 0xf6, 0x61, 0x7c, 0x2a, 0x1b, 0x82, - 0x83, 0x2c, 0x7d, 0x45, 0x4d, 0x40, 0xd3, 0xc9, 0x44, 0xdc, 0x12, 0xf2, 0xd3, 0xec, 0x31, 0x69, - 0xb8, 0x21, 0x54, 0x66, 0x10, 0x1b, 0x92, 0xb3, 0xa7, 0xbc, 0x8c, 0xad, 0x85, 0xcf, 0x7f, 0x08, - 0xab, 0x32, 0xa0, 0x15, 0xc3, 0x86, 0x65, 0x3d, 0xce, 0x41, 0xc4, 0x9d, 0x02, 0x9a, 0xc1, 0x54, - 0xb6, 0xdc, 0xb2, 0x50, 0xfa, 0xc8, 0x0b, 0xd0, 0x74, 0x43, 0xa8, 0xec, 0x59, 0x4d, 0x59, 0x2e, - 0xb9, 0xf5, 0x96, 0x17, 0xb0, 0xa5, 0x59, 0xcc, 0x83, 0xf9, 0xb5, 0xb8, 0xf5, 0x13, 0x5f, 0x32, - 0x13, 0x32, 0x4d, 0xa2, 0x06, 0xaa, 0x73, 0xcd, 0x84, 0x4c, 0xd3, 0xe8, 0x6b, 0x7e, 0x48, 0x1f, - 0x8a, 0xb1, 0xd4, 0x0f, 0x59, 0x85, 0x33, 0xcd, 0x74, 0x4c, 0x2b, 0xd1, 0x14, 0x7c, 0xe8, 0x35, - 0xd4, 0x0d, 0x72, 0x32, 0x1d, 0xe7, 0x21, 0xc9, 0x5a, 0x23, 0x8b, 0x90, 0x79, 0x0f, 0xae, 0x37, - 0x10, 0x9f, 0xaa, 0xb5, 0x89, 0x18, 0x15, 0x50, 0x5e, 0x1d, 0x84, 0x0e, 0x01, 0x13, 0x94, 0xf7, - 0x35, 0xc5, 0x27, 0x91, 0x22, 0xf9, 0x2d, 0xb8, 0x66, 0x7a, 0xdf, 0xfe, 0x44, 0xff, 0x1f, 0x4b, - 0x3c, 0xf1, 0xcb, 0x87, 0xf5, 0xbe, 0x03, 0xa3, 0xd1, 0x2d, 0xa3, 0xad, 0x9d, 0x7a, 0x77, 0x4b, - 0xf2, 0x74, 0x27, 0x1e, 0xcc, 0x40, 0x6a, 0x5c, 0xe0, 0x90, 0x12, 0x12, 0x4e, 0x0c, 0xf2, 0x18, - 0xe1, 0xe8, 0x95, 0xc1, 0xe6, 0x7a, 0xcf, 0x07, 0xe1, 0x60, 0x20, 0x75, 0xfa, 0xf3, 0xc4, 0x91, - 0x6e, 0x02, 0xbb, 0x64, 0x12, 0xf1, 0x75, 0x6b, 0x4e, 0xb2, 0xa9, 0x54, 0x72, 0x52, 0x62, 0xcd, - 0x3a, 0xf6, 0x00, 0x64, 0x1a, 0x83, 0x1c, 0x4a, 0x03, 0xa7, 0x92, 0x43, 0xdb, 0xe2, 0x43, 0x3b, - 0x93, 0x43, 0x9d, 0x54, 0xc7, 0xcd, 0x27, 0x20, 0x5b, 0x69, 0x71, 0x1d, 0x04, 0x53, 0x15, 0x4c, - 0x99, 0xf1, 0xae, 0x83, 0xf3, 0x32, 0x98, 0x98, 0x5b, 0xdc, 0x05, 0xab, 0x50, 0x9e, 0x2f, 0x80, - 0x9f, 0x83, 0x02, 0x2a, 0x6d, 0x5b, 0x22, 0x91, 0x22, 0x79, 0x21, 0x78, 0x97, 0x26, 0xdb, 0xdb, - 0x88, 0xb5, 0x3c, 0x79, 0x6e, 0x0f, 0x12, 0x37, 0x2a, 0x9c, 0xdd, 0x48, 0x25, 0xad, 0xc5, 0xdf, - 0xb1, 0x0c, 0x7f, 0xd8, 0xf5, 0x62, 0xba, 0xbb, 0xae, 0x00, 0xe3, 0xcc, 0x6a, 0xb3, 0x1d, 0x71, - 0xa9, 0xe4, 0x7a, 0xca, 0x8f, 0xba, 0x63, 0x1f, 0x6c, 0x95, 0xcc, 0x1f, 0x86, 0xca, 0xf7, 0x12, - 0x3f, 0x40, 0xf9, 0xc6, 0xa6, 0xe3, 0xb9, 0x45, 0x3c, 0xf7, 0x83, 0xae, 0x73, 0x43, 0x10, 0x17, - 0x33, 0x65, 0x00, 0xeb, 0x25, 0xcf, 0xb7, 0xcd, 0x1b, 0x8f, 0xed, 0xb6, 0x4c, 0xc7, 0x5a, 0x1a, - 0xf7, 0x6e, 0x72, 0x53, 0x83, 0x37, 0xf2, 0x5e, 0x30, 0xd4, 0x88, 0x27, 0x9c, 0x31, 0xee, 0x67, - 0xa2, 0x86, 0xeb, 0x06, 0xcf, 0x04, 0xde, 0x72, 0xcb, 0x70, 0xf2, 0x7c, 0x9a, 0x59, 0x95, 0x64, - 0xcb, 0xb2, 0x41, 0xa1, 0x6a, 0x69, 0x3d, 0xf7, 0x4d, 0x34, 0xcd, 0xf6, 0x32, 0xde, 0xbc, 0x34, - 0x48, 0x6f, 0xa3, 0xe9, 0x8e, 0x87, 0xed, 0xe6, 0x8d, 0xfe, 0x22, 0x9a, 0xee, 0xd8, 0x8f, 0xeb, - 0x32, 0x32, 0x20, 0xd1, 0x30, 0x5d, 0x68, 0x31, 0x79, 0x3a, 0x20, 0x1a, 0x72, 0xa7, 0x48, 0xa4, - 0x3f, 0x42, 0x47, 0x5d, 0x11, 0x30, 0x3d, 0x74, 0x45, 0xb0, 0xe0, 0x78, 0xa3, 0x1e, 0x10, 0x51, - 0xd1, 0x79, 0x01, 0xcd, 0xb0, 0x8c, 0x79, 0x57, 0xa8, 0x00, 0x8b, 0xfe, 0xc5, 0x0c, 0x1a, 0xb8, - 0xd6, 0x42, 0x96, 0xbe, 0x66, 0x27, 0x4b, 0x1f, 0xc3, 0x11, 0xf4, 0x49, 0xd9, 0x18, 0x44, 0x29, - 0x4b, 0x99, 0x47, 0x48, 0xd0, 0xe7, 0x2c, 0x24, 0xe8, 0xa2, 0xb1, 0x49, 0x50, 0x32, 0xc0, 0xdd, - 0x47, 0x81, 0x3a, 0x77, 0xf2, 0x0e, 0xa2, 0x40, 0x5d, 0x16, 0x77, 0x8f, 0x02, 0xbd, 0x47, 0x81, - 0xfe, 0xb4, 0x29, 0xd0, 0x67, 0xcd, 0xb0, 0xe1, 0x93, 0xa8, 0x02, 0x32, 0x4d, 0xd8, 0xf0, 0x09, - 0xa1, 0xdc, 0x82, 0x2c, 0x4b, 0xba, 0xfe, 0x7b, 0xc4, 0xe7, 0xad, 0x26, 0x3e, 0xdf, 0xb1, 0x11, - 0x9f, 0x95, 0x9a, 0x52, 0xc6, 0x88, 0xcf, 0xe5, 0xe3, 0x21, 0x3e, 0x17, 0x81, 0x89, 0x0f, 0xf6, - 0x08, 0x6f, 0xdb, 0x87, 0x1d, 0xbb, 0x8b, 0xef, 0x11, 0xa4, 0xe9, 0x09, 0x52, 0x97, 0x57, 0xe3, - 0x1e, 0x41, 0x7a, 0x33, 0x09, 0x52, 0x92, 0x91, 0x71, 0x26, 0x6c, 0x34, 0x79, 0x6c, 0x28, 0x49, - 0x4a, 0x52, 0x12, 0x83, 0x53, 0xb6, 0x93, 0x26, 0xa5, 0x98, 0xa8, 0x68, 0x7b, 0x16, 0x9a, 0x61, - 0x39, 0xa9, 0xbb, 0xc3, 0x00, 0xed, 0x75, 0x8b, 0x05, 0xce, 0x2c, 0x57, 0x60, 0xb7, 0x58, 0xdd, - 0xb0, 0xc4, 0x9a, 0x90, 0x61, 0x8f, 0x0f, 0xf1, 0x08, 0xea, 0x83, 0xa2, 0x3f, 0x17, 0x90, 0x48, - 0x35, 0x89, 0x1c, 0x41, 0xfb, 0x8e, 0x9d, 0xa0, 0x2d, 0xbf, 0x0e, 0x82, 0x76, 0x6c, 0x29, 0x6b, - 0x21, 0x9a, 0xe0, 0x0f, 0xaf, 0x08, 0x86, 0xea, 0x60, 0xdf, 0xf2, 0x55, 0xfa, 0xb3, 0xb4, 0x54, - 0x53, 0x9e, 0x46, 0x4f, 0x4a, 0x2e, 0x6b, 0x92, 0x67, 0x91, 0xd8, 0xa7, 0xf4, 0x3b, 0xec, 0xe7, - 0x8b, 0x4f, 0xd5, 0xd2, 0xef, 0x47, 0x7a, 0xaa, 0xfa, 0xc5, 0x3f, 0xb0, 0x90, 0x1b, 0xee, 0xa7, - 0xda, 0x2b, 0xe0, 0x38, 0xeb, 0x96, 0x23, 0x5d, 0x65, 0x3f, 0xd2, 0xc7, 0x8d, 0xa5, 0xb1, 0x23, - 0x9d, 0xc4, 0x05, 0xba, 0x1a, 0xc7, 0x11, 0xd2, 0x83, 0xb2, 0x4f, 0x63, 0x06, 0xc6, 0xbc, 0x18, - 0x1f, 0xf9, 0xd4, 0xfd, 0x22, 0x16, 0xfd, 0x59, 0x16, 0x2a, 0x30, 0xfb, 0xdd, 0x1d, 0xa7, 0xf4, - 0xda, 0x78, 0x4e, 0x69, 0x9c, 0xb9, 0x17, 0x4b, 0x57, 0x68, 0x4a, 0x39, 0x52, 0x24, 0xc7, 0x26, - 0xc8, 0xb3, 0x60, 0xf7, 0x4c, 0x18, 0xcf, 0xac, 0x25, 0x49, 0xe6, 0xa0, 0x02, 0x50, 0xfc, 0x71, - 0x07, 0xfd, 0xaa, 0xfd, 0xa0, 0x97, 0x5d, 0xc7, 0xdd, 0xcd, 0x09, 0x81, 0xbc, 0x90, 0x5c, 0xd4, - 0x27, 0x2c, 0xbc, 0xa8, 0x67, 0x2c, 0x5e, 0xf4, 0x8e, 0xe2, 0x41, 0x1f, 0x33, 0xa5, 0xa5, 0xa0, - 0x5a, 0xc7, 0xd9, 0x91, 0x98, 0xb4, 0x74, 0x22, 0x93, 0x93, 0x9a, 0xe2, 0xd1, 0xc7, 0xec, 0x59, - 0x71, 0xe6, 0xa4, 0x21, 0x6f, 0x33, 0x10, 0xb5, 0x79, 0xdf, 0x83, 0xa8, 0x2d, 0xdd, 0x27, 0x68, - 0x8a, 0x26, 0xa0, 0x2e, 0x41, 0x72, 0x9c, 0xab, 0xfc, 0x1b, 0x3b, 0x6c, 0x50, 0xc3, 0x6d, 0x12, - 0x1b, 0x1e, 0x47, 0x0f, 0x88, 0xc7, 0xb6, 0x25, 0x0f, 0xf5, 0x1b, 0xdc, 0x31, 0xa6, 0x7c, 0x81, - 0x3f, 0x4b, 0x0e, 0xb5, 0xe8, 0xdd, 0x6d, 0x50, 0x4e, 0x76, 0x19, 0x0f, 0x65, 0xf6, 0x6d, 0x3d, - 0x03, 0x1c, 0x9e, 0xde, 0x76, 0x30, 0x3e, 0x18, 0xa3, 0x57, 0xf8, 0xcc, 0xe8, 0xf6, 0x2e, 0xe2, - 0x86, 0xf1, 0x6d, 0x16, 0x9a, 0xce, 0xad, 0xe8, 0xee, 0xb8, 0xb3, 0xaf, 0x58, 0x14, 0xf0, 0x69, - 0xee, 0x2c, 0x6f, 0xaa, 0x4d, 0x22, 0x7f, 0xb6, 0x7d, 0x63, 0x60, 0x56, 0xfe, 0xc2, 0xbe, 0xa4, - 0x29, 0xcf, 0xa3, 0x67, 0x25, 0xe7, 0x16, 0x8c, 0xf7, 0xc6, 0x16, 0x7d, 0x3d, 0x03, 0xcd, 0x06, - 0x81, 0x17, 0x63, 0xd1, 0xe8, 0x85, 0x5d, 0x4e, 0x2e, 0x99, 0x40, 0x03, 0xe9, 0xcd, 0x21, 0x97, - 0x8c, 0xb8, 0x8f, 0xe1, 0xe3, 0x03, 0x51, 0x0f, 0x98, 0x4a, 0xfe, 0x7f, 0x02, 0xb9, 0x68, 0x7f, - 0xea, 0xd4, 0x74, 0x7b, 0x35, 0xe5, 0x05, 0x5e, 0xd3, 0xfd, 0x18, 0x1b, 0x23, 0xd1, 0x1e, 0x65, - 0xc1, 0x4f, 0x59, 0xa8, 0x37, 0x1c, 0x64, 0x2d, 0x3e, 0x18, 0x33, 0x2e, 0x99, 0x25, 0xd3, 0x6f, - 0xd6, 0xb8, 0x32, 0xfd, 0xbe, 0xc3, 0x1c, 0x5c, 0xb3, 0x4d, 0x75, 0x2c, 0x75, 0x70, 0x9d, 0xef, - 0x9c, 0x1a, 0x3c, 0xd9, 0xa8, 0xb9, 0x97, 0xf1, 0xca, 0x08, 0x85, 0x1e, 0xe7, 0x2b, 0x43, 0x5d, - 0x5c, 0xdf, 0x43, 0xd3, 0x80, 0xd5, 0x50, 0x9a, 0x23, 0xc1, 0x30, 0x8e, 0xc9, 0x92, 0x83, 0x0f, - 0xff, 0x39, 0x4d, 0x79, 0x46, 0xb2, 0xd7, 0xc9, 0x8f, 0x10, 0xe4, 0x31, 0x1c, 0xd5, 0xbb, 0x07, - 0x78, 0xc6, 0x96, 0x39, 0x55, 0x92, 0x08, 0x5a, 0xb6, 0x8e, 0xe2, 0x26, 0x34, 0x89, 0x06, 0x5a, - 0xf1, 0x07, 0x36, 0xa4, 0xb3, 0xc2, 0x57, 0xcc, 0x26, 0x10, 0xed, 0x1b, 0x1b, 0x91, 0xf2, 0x3d, - 0xe5, 0x42, 0x8b, 0x17, 0x36, 0xbc, 0x81, 0x98, 0x8c, 0xff, 0xae, 0x2c, 0x77, 0x87, 0x90, 0x55, - 0x20, 0xa8, 0x7c, 0x73, 0x71, 0x8f, 0x80, 0xa6, 0x36, 0x78, 0x9b, 0x03, 0x75, 0xef, 0xb3, 0x98, - 0xde, 0x79, 0xee, 0xd9, 0xde, 0x56, 0xe2, 0x56, 0xc0, 0xc9, 0x34, 0x83, 0x5d, 0x41, 0xd9, 0xcb, - 0x9a, 0xf2, 0x9c, 0x64, 0xeb, 0x2f, 0x4b, 0x30, 0x77, 0x62, 0xff, 0x05, 0xc0, 0x6f, 0xb0, 0x08, - 0xf0, 0x06, 0x66, 0x4c, 0x05, 0x80, 0x2a, 0x5b, 0x93, 0x6d, 0x0c, 0x71, 0x13, 0xf3, 0xb3, 0x9d, - 0x90, 0x49, 0x75, 0x6c, 0x07, 0x64, 0x8b, 0xcb, 0x2d, 0xf6, 0x0b, 0xa4, 0x2e, 0xb7, 0x0f, 0x18, - 0x54, 0xa8, 0xd5, 0x21, 0x19, 0xd7, 0xd8, 0xbc, 0x6f, 0xb7, 0x08, 0xcc, 0xfd, 0x36, 0xff, 0xba, - 0x26, 0xc6, 0x5e, 0xb9, 0x64, 0x62, 0x70, 0x83, 0x26, 0xbe, 0xb9, 0xc5, 0xce, 0x89, 0x93, 0x3d, - 0x2d, 0x89, 0xb3, 0xc7, 0x99, 0x7b, 0xdc, 0x22, 0x3d, 0x76, 0x54, 0x1f, 0xde, 0x5a, 0xcc, 0x1c, - 0x77, 0xdf, 0x83, 0x50, 0x07, 0xab, 0x6b, 0x89, 0xd9, 0x2c, 0x0e, 0x10, 0x47, 0x8a, 0x64, 0x85, - 0x8d, 0x37, 0x1a, 0x6d, 0x07, 0xe6, 0x1b, 0x02, 0x98, 0xaf, 0xae, 0xc5, 0xb2, 0xb2, 0x2d, 0xc9, - 0xd6, 0xd3, 0x06, 0x43, 0x49, 0xde, 0xa5, 0x3e, 0xd8, 0x6e, 0x63, 0xdf, 0xa9, 0x4f, 0xaf, 0x4a, - 0x86, 0xe2, 0x95, 0x79, 0xe8, 0xc6, 0x94, 0x79, 0xa7, 0x04, 0x2e, 0x9e, 0xa9, 0x25, 0x6a, 0xa4, - 0x19, 0xd1, 0xf4, 0x63, 0xb6, 0x57, 0x24, 0x68, 0xe9, 0xb7, 0x87, 0x53, 0x7f, 0xdc, 0x07, 0x84, - 0x23, 0x79, 0x88, 0xf6, 0x5d, 0x4a, 0x1c, 0x6f, 0x63, 0x22, 0x4a, 0xf8, 0x09, 0x2f, 0x46, 0x7c, - 0x70, 0x17, 0x88, 0x51, 0xae, 0x46, 0xb7, 0xb0, 0x98, 0x90, 0xbc, 0x1c, 0x30, 0x75, 0x6a, 0x33, - 0x88, 0xf7, 0x8c, 0x92, 0xcb, 0xad, 0xa3, 0xc7, 0x87, 0x12, 0x07, 0x06, 0x88, 0x87, 0x2a, 0x17, - 0x02, 0xf5, 0x7d, 0x84, 0xea, 0x82, 0x81, 0x70, 0x73, 0x23, 0x17, 0x77, 0x0f, 0x0b, 0xcd, 0xb8, - 0x62, 0xf9, 0x69, 0xf3, 0x6f, 0x08, 0x14, 0x1f, 0xf2, 0x85, 0x83, 0xcd, 0xa1, 0x3a, 0x1f, 0x88, - 0x9f, 0x42, 0x60, 0x89, 0x9e, 0xdc, 0x73, 0x2e, 0x35, 0x70, 0x31, 0xf5, 0xc7, 0x96, 0x44, 0xac, - 0x1b, 0xe4, 0x1f, 0x2a, 0x37, 0x88, 0xf8, 0x81, 0x2d, 0x42, 0xfe, 0x8c, 0x71, 0x44, 0xc8, 0xc7, - 0xd6, 0x46, 0xd6, 0x08, 0xf9, 0xb3, 0x4c, 0xc4, 0x8b, 0x0f, 0x1b, 0x3e, 0xd2, 0x1a, 0x07, 0x5f, - 0xfc, 0x08, 0xe5, 0x44, 0xbc, 0x1b, 0xc2, 0x85, 0x33, 0x31, 0xa8, 0x2e, 0x1b, 0x37, 0xa8, 0x6e, - 0x20, 0x80, 0x2a, 0x6b, 0xca, 0x52, 0x09, 0x0f, 0x21, 0x3f, 0xea, 0x0a, 0xa6, 0xf0, 0x95, 0x16, - 0x3f, 0x75, 0xdc, 0x5c, 0xfc, 0xa3, 0xc0, 0xb9, 0x20, 0x63, 0x41, 0x11, 0xf8, 0x54, 0xef, 0x12, - 0x34, 0x65, 0x87, 0x20, 0x59, 0xeb, 0xe4, 0x8f, 0x99, 0x13, 0x32, 0x89, 0x80, 0x15, 0x08, 0x86, - 0x1a, 0xbd, 0x0d, 0x4b, 0x7d, 0x1f, 0x45, 0x7c, 0xa1, 0x80, 0xb7, 0xa1, 0xf8, 0x6a, 0x74, 0x4b, - 0xe2, 0x60, 0xff, 0x68, 0xb4, 0x87, 0x47, 0x5e, 0xa6, 0xe7, 0xb2, 0xd6, 0x91, 0xfc, 0xfa, 0xeb, - 0xf8, 0x60, 0x7b, 0x62, 0xdf, 0x25, 0xd7, 0x06, 0x25, 0x1e, 0xbd, 0xf3, 0x5c, 0xf9, 0xba, 0x55, - 0xa4, 0xa0, 0x6d, 0x1f, 0xcb, 0x6a, 0xa2, 0x5a, 0x57, 0x62, 0x75, 0x77, 0x9e, 0x7d, 0x5d, 0xee, - 0xce, 0x55, 0x84, 0xcc, 0x52, 0x42, 0x3e, 0x2f, 0xf6, 0x3e, 0x9e, 0xc3, 0x39, 0x5d, 0x5b, 0x6a, - 0xe4, 0x69, 0x6c, 0x08, 0xea, 0x74, 0x6d, 0xa9, 0x37, 0xb0, 0x0c, 0xc9, 0x7c, 0x5e, 0xe8, 0x1e, - 0x05, 0x0e, 0x2f, 0x98, 0x05, 0x41, 0x2b, 0x5b, 0xa9, 0x29, 0x55, 0x34, 0xef, 0xf9, 0x4b, 0xe6, - 0xb6, 0xe0, 0x8b, 0x89, 0x4b, 0xa9, 0xf0, 0xd0, 0xe6, 0x9e, 0x0c, 0x52, 0x9c, 0xf8, 0xe0, 0x97, - 0x06, 0xcd, 0xd7, 0xb1, 0x4f, 0xef, 0xda, 0x92, 0xd8, 0xfb, 0x0d, 0x4d, 0x8b, 0xfe, 0x01, 0x9a, - 0x1a, 0x0c, 0x34, 0x90, 0xec, 0xfe, 0x58, 0xa0, 0x74, 0x1f, 0x7e, 0xd8, 0x70, 0xba, 0x06, 0x5b, - 0x95, 0xbc, 0xd8, 0xfa, 0x3b, 0x3e, 0xd4, 0x0a, 0xa9, 0xc4, 0xc0, 0xe5, 0xa1, 0x24, 0x3e, 0xd8, - 0x99, 0x68, 0x3f, 0x9d, 0x3a, 0xde, 0x01, 0x12, 0x65, 0xd5, 0xd6, 0xfd, 0xfb, 0xf8, 0x28, 0x3f, - 0x83, 0x26, 0x71, 0xb8, 0xf5, 0xba, 0xba, 0x3e, 0x8d, 0x26, 0x32, 0x58, 0xbf, 0x2e, 0x09, 0xcf, - 0x16, 0x41, 0x53, 0xfe, 0x14, 0xfd, 0x4e, 0x4a, 0x43, 0x2e, 0xc9, 0xb3, 0x08, 0x4e, 0xa4, 0x57, - 0x94, 0xb2, 0x97, 0x44, 0xe3, 0x68, 0xc9, 0xbd, 0x07, 0x74, 0xc4, 0x15, 0x81, 0x7f, 0x75, 0xaf, - 0x08, 0xb6, 0xf7, 0xce, 0x54, 0x4b, 0x5e, 0x11, 0x08, 0x76, 0x2e, 0xaa, 0x47, 0x53, 0xad, 0x60, - 0x20, 0xce, 0xe5, 0x90, 0x2d, 0x7c, 0x87, 0x89, 0xe0, 0x66, 0xa3, 0xbc, 0xa6, 0x60, 0xb0, 0x81, - 0x12, 0x61, 0x2a, 0xf9, 0x25, 0xce, 0x47, 0x08, 0x44, 0xbb, 0x66, 0xfc, 0x1a, 0x95, 0x2b, 0x29, - 0xea, 0xcc, 0x46, 0x73, 0x1c, 0x5f, 0x79, 0x77, 0xd0, 0xd6, 0x6f, 0x58, 0xf8, 0xe1, 0x9f, 0x8d, - 0x89, 0xfd, 0xe0, 0xab, 0x2a, 0xbc, 0x11, 0xef, 0x18, 0x59, 0x6a, 0xc5, 0x8f, 0x6f, 0xdc, 0x2d, - 0x12, 0x27, 0x44, 0x75, 0xb8, 0x45, 0x16, 0x5a, 0x02, 0x36, 0x66, 0xf0, 0x89, 0x2c, 0xfa, 0x73, - 0x01, 0xcd, 0xcb, 0xb0, 0x72, 0xf1, 0x0d, 0x34, 0x91, 0x61, 0x34, 0x12, 0xcc, 0x2e, 0x43, 0x32, - 0x18, 0x1c, 0x75, 0xc4, 0xec, 0xc0, 0x45, 0x83, 0xa0, 0x09, 0x31, 0x59, 0x9d, 0x58, 0x63, 0x3c, - 0x26, 0xe1, 0x8d, 0x44, 0x9a, 0x3a, 0xd3, 0x19, 0x76, 0x24, 0xbc, 0x91, 0xc8, 0x80, 0x8c, 0x66, - 0xf2, 0x3c, 0xfe, 0x0e, 0xe0, 0xf0, 0x12, 0xbb, 0xf4, 0xae, 0x6f, 0x20, 0xfc, 0x81, 0x8a, 0x9b, - 0x14, 0xfd, 0x0f, 0x11, 0xcd, 0x36, 0x13, 0x8a, 0x5a, 0x18, 0x8e, 0x15, 0xd6, 0x78, 0x3c, 0x82, - 0x19, 0xc0, 0xdb, 0x12, 0x8f, 0x67, 0x12, 0xbb, 0x62, 0xd4, 0x5c, 0x7e, 0xa6, 0x35, 0xb2, 0xce, - 0x6d, 0x67, 0x3f, 0x96, 0x10, 0xce, 0x09, 0x98, 0x8f, 0xb9, 0xe9, 0x39, 0x27, 0xc2, 0x2f, 0x95, - 0xdb, 0x62, 0xb1, 0xff, 0xec, 0x3a, 0xd8, 0x15, 0xc6, 0x94, 0x6c, 0x11, 0x9c, 0x5c, 0x49, 0x2e, - 0x51, 0x12, 0xda, 0x03, 0x1b, 0x96, 0x05, 0x83, 0x0d, 0xeb, 0x0c, 0xcc, 0x76, 0xb3, 0x39, 0x96, - 0x80, 0x95, 0x63, 0xc9, 0x1b, 0x27, 0xc7, 0x22, 0x8d, 0x9f, 0x63, 0xb1, 0x72, 0x2a, 0x1d, 0x4e, - 0x4e, 0x65, 0xc2, 0xf8, 0x39, 0x95, 0x17, 0xbf, 0x27, 0xa7, 0xe2, 0xe0, 0x50, 0xec, 0x74, 0x5e, - 0xfe, 0x0f, 0x48, 0xe7, 0x99, 0xdc, 0xd0, 0xc4, 0x4c, 0x66, 0x0c, 0x37, 0x9d, 0x1b, 0xfa, 0x84, - 0x31, 0x43, 0xe8, 0xba, 0xe6, 0xe5, 0x99, 0x21, 0x8c, 0x10, 0x29, 0x33, 0xb4, 0x60, 0x4c, 0x66, - 0x88, 0x31, 0x41, 0x94, 0xb6, 0x9d, 0xe4, 0x4e, 0xdb, 0xa6, 0x9d, 0xf9, 0xfb, 0xd3, 0xb6, 0x26, - 0xfb, 0x35, 0xf9, 0x87, 0x66, 0xbf, 0xa8, 0xa8, 0x6f, 0x0a, 0xc7, 0x7e, 0x51, 0x51, 0x1f, 0x61, - 0xbf, 0x38, 0x7d, 0x36, 0x63, 0xbf, 0xa8, 0xe4, 0xcf, 0xc2, 0x7e, 0x4d, 0xbd, 0x6b, 0xd8, 0xaf, - 0x69, 0x3f, 0x20, 0xfb, 0x55, 0x8a, 0x72, 0xea, 0x7d, 0xe1, 0x3a, 0xa2, 0x6d, 0x26, 0x3a, 0x0b, - 0x5f, 0xb8, 0x8e, 0x6a, 0xa2, 0x4c, 0x0c, 0x8b, 0x35, 0xe2, 0x4c, 0xc4, 0xe6, 0x0b, 0xd7, 0x19, - 0x6f, 0xab, 0xc9, 0x1c, 0x4c, 0x27, 0xf7, 0xd9, 0x8e, 0x4f, 0xd7, 0x56, 0x05, 0x22, 0x8f, 0xcb, - 0x80, 0x51, 0x71, 0x1c, 0x3e, 0x8e, 0x75, 0x98, 0xcc, 0xe8, 0x7e, 0x8f, 0x95, 0x77, 0xd8, 0x60, - 0xe7, 0x1d, 0xc4, 0x34, 0xa3, 0xd7, 0x46, 0x42, 0xfe, 0xc0, 0x06, 0x18, 0xfd, 0x46, 0x38, 0x0b, - 0x42, 0xd4, 0xc3, 0xed, 0x20, 0x5a, 0x62, 0x2b, 0x51, 0x6f, 0x56, 0x01, 0x51, 0x6f, 0xfe, 0x8e, - 0x0f, 0xb5, 0x92, 0x4c, 0xe1, 0x19, 0x88, 0x7a, 0xb3, 0xb9, 0xf8, 0x21, 0x9a, 0xe8, 0x63, 0x51, - 0xb8, 0x67, 0xba, 0x47, 0xe1, 0x4e, 0x73, 0x4d, 0x6d, 0x51, 0xb8, 0x71, 0x38, 0x18, 0x73, 0x30, - 0x16, 0x04, 0xea, 0xec, 0x31, 0x62, 0xc3, 0x64, 0x50, 0x2a, 0xac, 0xfa, 0x2e, 0xe3, 0x26, 0xe6, - 0x3e, 0x87, 0xa6, 0x8e, 0x19, 0x73, 0x3b, 0x3d, 0x2f, 0xf2, 0x84, 0xa6, 0x3c, 0x86, 0x96, 0x4a, - 0x69, 0x08, 0x29, 0x79, 0x16, 0x1c, 0x19, 0x2b, 0x07, 0x56, 0xa4, 0x68, 0x7b, 0x36, 0x9a, 0xe3, - 0xe8, 0x71, 0x77, 0x90, 0xf5, 0xaa, 0x85, 0xac, 0xcf, 0x40, 0xdc, 0xf2, 0x29, 0xbe, 0x99, 0x9a, - 0xd9, 0xc0, 0xad, 0x38, 0x57, 0x21, 0x2f, 0x3c, 0xbf, 0x9d, 0x04, 0x7d, 0x4b, 0x3e, 0x9a, 0x0d, - 0x2a, 0x61, 0x07, 0x11, 0xfc, 0x0b, 0x37, 0x22, 0xf8, 0xe9, 0x31, 0x88, 0xe0, 0xb4, 0x7a, 0x51, - 0x0b, 0x5d, 0xfc, 0x2f, 0x05, 0x9b, 0x7e, 0xbb, 0xec, 0x4b, 0x41, 0x53, 0x4e, 0x09, 0x12, 0x2d, - 0x95, 0x7b, 0x04, 0x7d, 0x38, 0xa6, 0xb7, 0x5d, 0x00, 0x3d, 0x2e, 0x64, 0xa7, 0x4c, 0xec, 0xfc, - 0x3a, 0x31, 0xd8, 0x9a, 0xec, 0xde, 0x66, 0xca, 0x6b, 0xb0, 0x3d, 0x96, 0xf1, 0x46, 0xf7, 0xc6, - 0xf4, 0x83, 0x67, 0xae, 0x46, 0xb7, 0x40, 0xce, 0x44, 0xc0, 0xbf, 0xd0, 0x37, 0x35, 0xf2, 0xb5, - 0xde, 0x7a, 0x12, 0xe8, 0x7f, 0xe2, 0xf5, 0xbb, 0xf7, 0x32, 0x30, 0x02, 0xfa, 0xc0, 0x25, 0xbd, - 0x6d, 0xbf, 0x99, 0xcf, 0x65, 0xb8, 0x07, 0x8e, 0xdc, 0x60, 0x26, 0xc8, 0xf3, 0xb6, 0xef, 0x52, - 0xfc, 0xdb, 0xcb, 0xc9, 0xe3, 0xfd, 0xa9, 0xfe, 0x13, 0xa9, 0xcb, 0x87, 0xf4, 0xd8, 0xa9, 0xab, - 0xd1, 0x2d, 0x4c, 0x19, 0x2f, 0xfe, 0xb9, 0x80, 0x66, 0x85, 0x7c, 0xd8, 0xbf, 0xd6, 0x1a, 0x5f, - 0x96, 0xc0, 0x93, 0x26, 0x68, 0xca, 0x2e, 0x41, 0x72, 0x6f, 0x23, 0x37, 0xc7, 0x2f, 0x1f, 0x4e, - 0xee, 0x3d, 0x48, 0xe2, 0xc5, 0xf4, 0x9e, 0xa1, 0x69, 0x5f, 0xfa, 0xae, 0x0d, 0x77, 0xc4, 0x87, - 0x5a, 0xc9, 0xf2, 0xe9, 0xb7, 0x1a, 0xcc, 0xc0, 0xe9, 0xcf, 0x59, 0x49, 0x7c, 0x70, 0x97, 0xc9, - 0xdc, 0x60, 0x5a, 0xdc, 0xf8, 0xfa, 0x91, 0x4f, 0xe3, 0x83, 0x7b, 0xb0, 0xf8, 0xe3, 0x53, 0x7e, - 0xff, 0x12, 0xfb, 0x2f, 0x24, 0xf7, 0x1c, 0x4d, 0xec, 0x6d, 0x33, 0x56, 0xef, 0xbe, 0x1a, 0x71, - 0x44, 0x40, 0xd3, 0x37, 0xfa, 0x7c, 0x4d, 0xa4, 0x18, 0xc2, 0x4c, 0x12, 0x6d, 0x02, 0x91, 0x9b, - 0x39, 0xeb, 0xe5, 0x66, 0xb2, 0x9a, 0xa1, 0x5d, 0x34, 0x7e, 0xf7, 0x10, 0x9c, 0x17, 0x39, 0x29, - 0x7c, 0x10, 0xc6, 0xf7, 0x8c, 0x6c, 0x8b, 0x0f, 0x76, 0x8e, 0xee, 0x89, 0x26, 0x06, 0x36, 0xc3, - 0x61, 0x19, 0x85, 0xf8, 0xfb, 0xe1, 0x27, 0x24, 0x73, 0x1d, 0xef, 0x37, 0x38, 0x57, 0x22, 0x3e, - 0xcf, 0xa5, 0x65, 0xc9, 0x35, 0x63, 0x7f, 0x98, 0x69, 0x59, 0x26, 0xb2, 0xb4, 0x2c, 0xa6, 0x1f, - 0xbd, 0x99, 0x45, 0x85, 0x3c, 0x4d, 0x70, 0x17, 0x48, 0xe6, 0x06, 0xeb, 0xd3, 0x64, 0x56, 0xc1, - 0xd3, 0x64, 0xfe, 0x66, 0x87, 0x95, 0xe9, 0x69, 0x32, 0x9b, 0x97, 0x76, 0x09, 0x9a, 0xb2, 0x53, - 0x40, 0x6d, 0x82, 0x94, 0xe6, 0xee, 0xc9, 0x6b, 0x61, 0x3c, 0x56, 0x9e, 0x3c, 0x34, 0xa8, 0xb7, - 0x9e, 0x33, 0x6d, 0x4e, 0x47, 0x3e, 0x35, 0x51, 0xea, 0xe5, 0x03, 0x89, 0xde, 0x76, 0xbd, 0x6b, - 0x80, 0x5d, 0x06, 0xa3, 0x2a, 0xb1, 0xff, 0x02, 0x56, 0x6d, 0x1a, 0xa3, 0x40, 0x74, 0xbe, 0xab, - 0xd1, 0x2d, 0x57, 0x04, 0xfe, 0x16, 0x5e, 0x11, 0xd8, 0xd7, 0x63, 0x39, 0x8b, 0x63, 0x29, 0x3f, - 0x0a, 0x39, 0x4b, 0x9a, 0xaf, 0xba, 0xc3, 0xe5, 0x2c, 0x47, 0x58, 0x08, 0x06, 0x77, 0x39, 0x4b, - 0xfd, 0x75, 0xc9, 0x59, 0x30, 0x17, 0xcf, 0xc9, 0x59, 0x2c, 0x06, 0x32, 0xac, 0x99, 0x53, 0xe6, - 0x72, 0x40, 0x18, 0x87, 0xd0, 0x25, 0xa0, 0x29, 0x1b, 0x89, 0xd0, 0xa5, 0xce, 0x0e, 0xb5, 0x3d, - 0x2d, 0xbc, 0xdc, 0x05, 0x26, 0xb8, 0x1a, 0xdd, 0x42, 0x42, 0xf8, 0xda, 0xee, 0x37, 0x4e, 0xa3, - 0xc3, 0xd2, 0x5d, 0xc4, 0x87, 0x7b, 0xe2, 0xb1, 0xd3, 0xc9, 0x3d, 0x47, 0x6d, 0x7d, 0x89, 0xf0, - 0xe6, 0xcf, 0x04, 0x96, 0x33, 0xdf, 0xf2, 0x68, 0x6d, 0x72, 0x7b, 0xb4, 0xd6, 0x68, 0xca, 0xd3, - 0xd6, 0x47, 0x6b, 0x11, 0x1f, 0x3a, 0xd9, 0xc0, 0xac, 0xdb, 0xbf, 0xd4, 0x87, 0x62, 0x55, 0x15, - 0x60, 0x14, 0xcf, 0x12, 0xd7, 0x8d, 0xfb, 0x45, 0x2b, 0x7d, 0x5a, 0x53, 0x9e, 0x40, 0xb2, 0xe4, - 0xb6, 0x26, 0x79, 0x1e, 0x68, 0xc0, 0x6d, 0x1b, 0x4d, 0x48, 0xa1, 0x7f, 0x9f, 0x8d, 0x66, 0x5a, - 0x3b, 0xfd, 0x88, 0xe9, 0x20, 0x66, 0xf2, 0x63, 0x07, 0xba, 0xdb, 0x7d, 0xe1, 0x4a, 0x5f, 0xd5, - 0x94, 0x97, 0x51, 0xa5, 0xe4, 0x7a, 0x14, 0xd7, 0x6b, 0x74, 0xf4, 0x79, 0x36, 0x04, 0x39, 0xe4, - 0xe2, 0xdd, 0x59, 0x60, 0xf4, 0x4f, 0x9d, 0x41, 0x0e, 0x6f, 0xad, 0x54, 0xf0, 0xa0, 0x80, 0x26, - 0x83, 0xbc, 0x6c, 0x85, 0xbf, 0xc1, 0xa0, 0x56, 0x80, 0x06, 0x6b, 0xd6, 0x94, 0x90, 0x64, 0xa9, - 0x90, 0xd7, 0xf3, 0xbf, 0xa8, 0x99, 0xf3, 0xfe, 0x0b, 0x25, 0x9e, 0xd4, 0xb7, 0x9f, 0xea, 0xdb, - 0x63, 0x00, 0x13, 0x89, 0x8e, 0xf6, 0x64, 0xeb, 0xe9, 0x74, 0x82, 0xba, 0xc4, 0x2e, 0x4d, 0x8f, - 0x75, 0x2d, 0x82, 0x0a, 0x83, 0x54, 0xc3, 0xbf, 0xf5, 0xde, 0x33, 0x7a, 0xf7, 0xae, 0xd1, 0xc3, - 0x9f, 0x15, 0xab, 0x96, 0x19, 0x4b, 0x37, 0x68, 0x4a, 0x3d, 0x5a, 0x2f, 0x65, 0xda, 0x40, 0xb9, - 0x9c, 0x84, 0x58, 0xe4, 0x8e, 0x35, 0xd9, 0xd3, 0xc2, 0x68, 0xeb, 0x12, 0x0f, 0xd0, 0x73, 0x60, - 0xab, 0xce, 0xdd, 0x52, 0xbd, 0x73, 0xbb, 0x1e, 0xeb, 0x82, 0xd3, 0x2b, 0xfa, 0x3b, 0x12, 0x6c, - 0xd1, 0x39, 0xc9, 0xdd, 0x71, 0x01, 0x57, 0x5a, 0x6c, 0x77, 0x32, 0x5c, 0xc0, 0xf1, 0xd8, 0xef, - 0xdc, 0xce, 0xab, 0xf7, 0xba, 0xa6, 0x54, 0xa3, 0x95, 0x52, 0xc6, 0xc3, 0xa0, 0x38, 0x14, 0x06, - 0x32, 0x65, 0x46, 0xee, 0x71, 0x39, 0x8a, 0xfe, 0x2a, 0x1b, 0xd2, 0xa4, 0x3b, 0xae, 0xde, 0x12, - 0x8b, 0x25, 0xd1, 0xd8, 0xf2, 0xf0, 0x77, 0x9d, 0x02, 0x7c, 0xe5, 0x7b, 0x5f, 0x55, 0xfe, 0x2a, - 0x96, 0xdb, 0xec, 0x83, 0x6e, 0x48, 0xe0, 0xbe, 0x92, 0xcf, 0x56, 0x0a, 0x82, 0x7b, 0x7c, 0x28, - 0x5c, 0xb6, 0x52, 0x97, 0xa1, 0x48, 0xf2, 0x59, 0xf2, 0xea, 0xb3, 0xa6, 0xa5, 0x7b, 0x04, 0x4d, - 0xe9, 0x16, 0x50, 0xa7, 0x20, 0xb9, 0xee, 0xa1, 0xdc, 0x0c, 0x47, 0xc1, 0xae, 0xdb, 0x2d, 0x32, - 0xb0, 0xfb, 0x8b, 0x2c, 0x48, 0x2c, 0xfe, 0xd3, 0xbe, 0xa8, 0xa5, 0x15, 0x9a, 0xa2, 0xa0, 0x17, - 0x25, 0xf7, 0xad, 0xa0, 0x2f, 0x15, 0xc7, 0x1c, 0xb8, 0x1b, 0xdb, 0x25, 0x27, 0xa2, 0x69, 0x4a, - 0x7d, 0x3d, 0xe6, 0xa0, 0xcc, 0xd0, 0x21, 0x8e, 0x67, 0x49, 0xd1, 0x94, 0xf9, 0x3c, 0xac, 0x4f, - 0x87, 0x48, 0xe3, 0x0c, 0xbe, 0xe9, 0xb3, 0x23, 0x8c, 0xeb, 0xd9, 0xa9, 0x42, 0xb9, 0x06, 0xd0, - 0x84, 0x0b, 0xb3, 0x70, 0xa8, 0xec, 0xc7, 0x35, 0xe5, 0x11, 0x09, 0x4a, 0xe4, 0x07, 0x6c, 0x03, - 0x03, 0xb4, 0x56, 0xd5, 0xb0, 0x08, 0x88, 0x9a, 0x90, 0x93, 0x2f, 0x14, 0x0a, 0x2a, 0xb4, 0x17, - 0xfd, 0x68, 0xba, 0x3f, 0xe0, 0x8f, 0xac, 0x0c, 0x6e, 0xf0, 0x07, 0x6a, 0xbc, 0xe1, 0xf0, 0x87, - 0xc1, 0x50, 0x3d, 0xb9, 0x41, 0xd8, 0xa7, 0xcb, 0x59, 0x2b, 0x3f, 0x34, 0xba, 0xbd, 0x33, 0xf5, - 0x79, 0xab, 0xc1, 0x46, 0xf6, 0xb4, 0x10, 0x49, 0x3b, 0xc9, 0xf9, 0xa0, 0x77, 0x0d, 0x90, 0x84, - 0x1c, 0xce, 0x7e, 0x62, 0xc8, 0x2d, 0xbf, 0x54, 0x8d, 0xa6, 0xac, 0xb2, 0x52, 0x94, 0x2f, 0xc0, - 0x17, 0x10, 0x66, 0x1e, 0xc3, 0x34, 0xa4, 0x92, 0x80, 0x10, 0x2f, 0xec, 0x44, 0xae, 0x0d, 0x77, - 0x90, 0x72, 0x7c, 0x5b, 0xe0, 0x2a, 0x56, 0x55, 0x58, 0xe5, 0x23, 0x57, 0x04, 0x87, 0xf5, 0x43, - 0x2e, 0x06, 0xb7, 0x2f, 0x04, 0x4d, 0x39, 0x29, 0x38, 0xec, 0x1f, 0x34, 0xc1, 0x60, 0x41, 0x8d, - 0xd1, 0x4e, 0xda, 0x22, 0x9b, 0x13, 0xc3, 0xe0, 0x03, 0x03, 0x58, 0x4d, 0x66, 0xd0, 0xde, 0x6e, - 0x0d, 0x81, 0x5b, 0x8c, 0x0f, 0xf7, 0xc0, 0x93, 0x49, 0x8e, 0x0c, 0x70, 0x37, 0x96, 0xe0, 0x52, - 0x51, 0x39, 0x80, 0x97, 0x6d, 0x0e, 0xfd, 0xd2, 0x05, 0x90, 0xb2, 0xc7, 0x07, 0x63, 0x24, 0x93, - 0x8a, 0x41, 0xa8, 0xdb, 0x16, 0x69, 0x61, 0xd0, 0xf3, 0xc6, 0xc7, 0xa0, 0xcf, 0xe4, 0x18, 0xf4, - 0x35, 0x68, 0x2a, 0xaf, 0x75, 0x62, 0x79, 0x95, 0xb1, 0xf3, 0x97, 0xad, 0x4a, 0x9e, 0xc3, 0x10, - 0x31, 0x61, 0x28, 0x88, 0xe1, 0xbe, 0x6a, 0x6b, 0x28, 0x76, 0x0b, 0x68, 0xaa, 0x3f, 0x5c, 0x49, - 0x2c, 0x7d, 0x8c, 0x53, 0xc2, 0xaa, 0xb2, 0x7c, 0x70, 0x96, 0x7b, 0x88, 0xe4, 0xb0, 0x3b, 0x30, - 0xc0, 0x2c, 0x7c, 0x60, 0xbc, 0x45, 0xcc, 0x84, 0xa7, 0x58, 0x7e, 0x21, 0x3e, 0xb8, 0x23, 0x71, - 0xe4, 0x82, 0xad, 0xc5, 0x68, 0x6f, 0x14, 0x76, 0xc4, 0x20, 0x99, 0x4a, 0x3c, 0xf1, 0xc1, 0x3d, - 0xa0, 0x80, 0x80, 0x85, 0x71, 0x87, 0xad, 0xda, 0xe6, 0x17, 0xdb, 0x05, 0x94, 0xdb, 0x60, 0x80, - 0x20, 0xb6, 0xaf, 0x9b, 0x24, 0x3f, 0xe0, 0x86, 0x31, 0x30, 0x8c, 0x62, 0xeb, 0x9b, 0x35, 0x9a, - 0xf2, 0xba, 0x04, 0x1d, 0xe4, 0x57, 0x60, 0x29, 0x64, 0x05, 0x18, 0xde, 0x41, 0xfd, 0x93, 0xd8, - 0x4f, 0x8e, 0x88, 0xcf, 0xbb, 0x85, 0x13, 0xfb, 0x13, 0x77, 0x2a, 0xbd, 0x6b, 0x40, 0x6f, 0x1d, - 0xd6, 0xfb, 0x2f, 0xe9, 0x27, 0x5a, 0x92, 0xdd, 0xdb, 0x54, 0x18, 0xb0, 0xf4, 0xb2, 0xa0, 0x29, - 0x43, 0x02, 0x1a, 0x14, 0x24, 0x3b, 0xba, 0x90, 0xbb, 0x85, 0xe4, 0xd0, 0xc1, 0x44, 0xc7, 0x76, - 0xbd, 0xbf, 0xc7, 0xbc, 0xb6, 0x38, 0x6d, 0x0a, 0xdc, 0x84, 0x6b, 0xc3, 0x1d, 0xd7, 0x86, 0x37, - 0x27, 0xce, 0x9d, 0x49, 0xb4, 0x74, 0x19, 0x7f, 0xd0, 0x0b, 0x0e, 0xe2, 0x1e, 0xe2, 0x26, 0x7b, - 0x60, 0x20, 0xd5, 0xfa, 0x6d, 0xaa, 0x7f, 0x20, 0x1e, 0xdb, 0x5d, 0xb7, 0xa9, 0x91, 0x89, 0xe1, - 0xf8, 0xa5, 0xc3, 0x2a, 0x53, 0x5b, 0x47, 0x88, 0x37, 0xdf, 0x57, 0x47, 0xe2, 0x43, 0x17, 0x53, - 0xfd, 0xc7, 0x53, 0xe7, 0x2f, 0x81, 0xb9, 0x16, 0x1b, 0xd3, 0x6a, 0xda, 0x02, 0x98, 0xa2, 0x68, - 0x47, 0x0e, 0x2a, 0x30, 0x97, 0x7e, 0x77, 0xbc, 0x18, 0xab, 0x2c, 0xbc, 0x95, 0x3b, 0xdb, 0x6d, - 0x61, 0xab, 0x00, 0xc6, 0x2f, 0x0e, 0xe9, 0x3b, 0x8e, 0xf1, 0xec, 0xf2, 0xed, 0xa7, 0xed, 0x3a, - 0x04, 0x4d, 0x69, 0x13, 0x50, 0xab, 0x20, 0x39, 0x0e, 0x41, 0xae, 0xd3, 0x3f, 0x3b, 0xa2, 0xef, - 0x38, 0xc6, 0x23, 0x7c, 0xd8, 0x0d, 0x7c, 0xe2, 0xc4, 0x52, 0x4c, 0xef, 0xea, 0x1c, 0x3d, 0xd5, - 0x06, 0xe2, 0x2f, 0x83, 0x49, 0xdf, 0x71, 0x46, 0xef, 0xd8, 0x07, 0x79, 0x27, 0x8c, 0x97, 0x91, - 0xfb, 0x58, 0x9c, 0x1a, 0xe8, 0x72, 0x3c, 0xb6, 0x2b, 0x71, 0xf4, 0xe4, 0xe8, 0x81, 0x56, 0x48, - 0xb8, 0xc2, 0x5e, 0x3e, 0xe0, 0xcc, 0xfe, 0x2a, 0x17, 0xcd, 0x2f, 0xf3, 0x46, 0xea, 0xde, 0xb7, - 0xc4, 0x86, 0xb4, 0xbc, 0x82, 0x6f, 0x3b, 0x5f, 0xc1, 0x17, 0xec, 0xb1, 0xd1, 0x70, 0x02, 0xa9, - 0x4b, 0x37, 0xf2, 0x04, 0xae, 0x46, 0x13, 0x70, 0xda, 0xaf, 0x9a, 0x30, 0x01, 0x24, 0x9c, 0x30, - 0x86, 0x96, 0xc9, 0x8f, 0xc2, 0xd3, 0x00, 0xe3, 0x27, 0x7b, 0x5a, 0xaa, 0x6a, 0x80, 0xc2, 0x2d, - 0x01, 0x07, 0x94, 0x47, 0x4b, 0x1e, 0x1d, 0xed, 0xd9, 0xa3, 0x0f, 0x47, 0x55, 0xda, 0x43, 0x0c, - 0xa0, 0xa9, 0x9b, 0xfc, 0xa1, 0x48, 0x33, 0xe0, 0x8e, 0xaa, 0x8a, 0x30, 0x79, 0x05, 0x57, 0x68, - 0x4a, 0xb9, 0x64, 0xab, 0x92, 0x1f, 0xb3, 0x0d, 0x6f, 0xc9, 0x0f, 0xe2, 0x3e, 0x91, 0x6d, 0x08, - 0x0b, 0x12, 0xcf, 0xb9, 0x7e, 0x24, 0x3e, 0x20, 0x20, 0x54, 0x8f, 0xf7, 0x1e, 0x47, 0x74, 0xcc, - 0xe5, 0xad, 0x32, 0xb9, 0x0a, 0xf9, 0xb7, 0x44, 0x26, 0x44, 0x43, 0x3a, 0x86, 0x7c, 0x11, 0xaf, - 0x3f, 0xb0, 0x08, 0xa4, 0xcb, 0x3c, 0xc4, 0x80, 0x68, 0x39, 0x71, 0x60, 0x00, 0x64, 0xc9, 0xf1, - 0xc1, 0xa1, 0x44, 0x6f, 0xac, 0xf8, 0xda, 0x70, 0x87, 0x01, 0xd5, 0xfe, 0x80, 0x37, 0xe2, 0x5b, - 0xa4, 0x77, 0x7d, 0x09, 0x89, 0x43, 0x13, 0x1d, 0xed, 0xa3, 0xdb, 0xbb, 0x08, 0xea, 0xa0, 0x48, - 0xa3, 0x98, 0x7f, 0x24, 0xd5, 0xca, 0x35, 0x4a, 0x55, 0xb5, 0xca, 0xad, 0xa4, 0xf4, 0x88, 0xa0, - 0x29, 0x3d, 0x02, 0xda, 0x2f, 0x48, 0x63, 0x40, 0x8e, 0xec, 0x4d, 0xb4, 0x5f, 0x32, 0xc8, 0x55, - 0x9c, 0x20, 0x85, 0xdc, 0x0a, 0x8c, 0x1e, 0xc9, 0x93, 0x01, 0x1a, 0x0c, 0x9a, 0x24, 0x73, 0xa7, - 0xbe, 0xe3, 0x8c, 0x2d, 0x9d, 0xca, 0xd5, 0xe8, 0x66, 0x9a, 0xb3, 0xeb, 0x6a, 0x74, 0xb3, 0xed, - 0x3d, 0x49, 0xf6, 0xb5, 0x17, 0xbb, 0x22, 0xb8, 0x8b, 0x39, 0xe8, 0xc1, 0xb4, 0x2b, 0xbb, 0x3b, - 0xf0, 0xdd, 0x2f, 0x2c, 0x14, 0xb2, 0x03, 0x2b, 0xe1, 0xaf, 0xc3, 0x1f, 0x54, 0x8b, 0x33, 0xae, - 0x59, 0x71, 0x1f, 0x1e, 0x90, 0xea, 0x44, 0x8c, 0xcd, 0x24, 0x83, 0xdf, 0x76, 0xdc, 0x67, 0x42, - 0xce, 0x58, 0xe7, 0x23, 0xbf, 0xc7, 0x83, 0x4e, 0x3a, 0x54, 0x48, 0xb6, 0xee, 0xd0, 0xa0, 0x1e, - 0xdb, 0xc3, 0xb7, 0x64, 0x78, 0xf0, 0xda, 0x70, 0x07, 0xd1, 0x54, 0x71, 0xbb, 0x41, 0x28, 0x98, - 0xb6, 0x6e, 0x7d, 0xc7, 0x51, 0x1b, 0x36, 0xfc, 0x9f, 0x04, 0x54, 0x60, 0xdf, 0x5b, 0xb1, 0xd0, - 0xc4, 0x50, 0x38, 0xa3, 0x8d, 0x89, 0x6a, 0x0a, 0xd1, 0x84, 0x70, 0x73, 0x5d, 0x9d, 0x2f, 0x1c, - 0xa6, 0x3e, 0xa9, 0xe4, 0xa7, 0x51, 0x43, 0xc1, 0x05, 0x4c, 0x38, 0x19, 0x30, 0xcc, 0x66, 0x69, - 0x8c, 0x72, 0xc0, 0xee, 0x93, 0xa4, 0x1c, 0xf2, 0x58, 0x89, 0x6a, 0x8c, 0x07, 0xac, 0x24, 0xf0, - 0x42, 0xbb, 0x05, 0x37, 0x26, 0x19, 0x6d, 0x06, 0xd3, 0x45, 0xc7, 0x27, 0x52, 0xef, 0xdc, 0x5b, - 0x88, 0xc4, 0x6b, 0x4c, 0x3e, 0x86, 0x05, 0xa4, 0x25, 0x7c, 0xcc, 0x78, 0x11, 0x38, 0xb6, 0x16, - 0x2c, 0x60, 0xec, 0xcc, 0x17, 0x56, 0xb4, 0x08, 0x28, 0xbc, 0x4d, 0xd0, 0x94, 0x16, 0x2b, 0x5a, - 0xdc, 0x64, 0x43, 0x8b, 0x80, 0xaf, 0x2c, 0x68, 0x31, 0x2d, 0x42, 0x5c, 0x53, 0xa9, 0xae, 0xaa, - 0xaa, 0x56, 0xd6, 0x54, 0x7e, 0x3f, 0x84, 0x28, 0xfe, 0xde, 0x54, 0xdd, 0x82, 0x72, 0xb0, 0x5e, - 0x53, 0xbc, 0xa6, 0xe2, 0x76, 0x5d, 0x7c, 0xb0, 0x33, 0xd9, 0x7f, 0x9c, 0x3c, 0x2a, 0x27, 0x5a, - 0xe2, 0xb1, 0x5d, 0xf1, 0xa1, 0xa1, 0xf8, 0xc8, 0x5e, 0x78, 0x90, 0x47, 0xb7, 0x8e, 0xd8, 0x14, - 0xbb, 0x44, 0x19, 0x80, 0x73, 0xe5, 0xe9, 0x6d, 0x3d, 0xcc, 0x06, 0xea, 0xda, 0x70, 0x47, 0x75, - 0x30, 0xa2, 0xfa, 0xbc, 0xf5, 0x1f, 0x27, 0xfb, 0xda, 0x4d, 0x9d, 0xeb, 0x0d, 0xe8, 0xf9, 0xf8, - 0x17, 0xe8, 0x0f, 0x42, 0x1a, 0x45, 0x1f, 0x31, 0x4d, 0xb2, 0xab, 0xfa, 0xc2, 0xcc, 0xb0, 0x88, - 0x72, 0x50, 0x8c, 0xd7, 0x21, 0xc2, 0x50, 0x5e, 0x5b, 0x4b, 0x80, 0x64, 0x31, 0x41, 0x2a, 0x89, - 0xf6, 0x28, 0xe4, 0x9b, 0x62, 0x5c, 0x3c, 0x50, 0xb3, 0xf1, 0xe1, 0x9e, 0xd4, 0xe9, 0x53, 0x7a, - 0xd7, 0x6e, 0xd8, 0x1a, 0x46, 0xd8, 0x80, 0xbe, 0x70, 0x89, 0x5d, 0x61, 0xf8, 0x03, 0xf1, 0x3e, - 0xef, 0x58, 0x2f, 0x61, 0xbe, 0xc9, 0x3e, 0x5b, 0x38, 0xdb, 0x62, 0x82, 0x56, 0x1d, 0xfc, 0x0d, - 0xcc, 0xc3, 0xb4, 0xd0, 0x76, 0x26, 0xd6, 0x85, 0xb5, 0x9a, 0x78, 0xfd, 0xac, 0xd5, 0xce, 0x9b, - 0xc8, 0x5a, 0x95, 0x86, 0x35, 0xa5, 0x09, 0x05, 0x24, 0x17, 0x94, 0x21, 0x57, 0x10, 0x39, 0x32, - 0xbe, 0xb9, 0x00, 0x41, 0xf8, 0x60, 0x77, 0xc1, 0x1b, 0xce, 0x74, 0xf3, 0x04, 0xab, 0xe2, 0x42, - 0x2a, 0x9f, 0x60, 0x5b, 0xed, 0xfa, 0x40, 0x6f, 0xcb, 0xa1, 0x5e, 0xf7, 0x3f, 0x01, 0x26, 0x04, - 0xb6, 0xe7, 0xce, 0x62, 0x42, 0x5a, 0x05, 0x4d, 0xd9, 0x2c, 0xa0, 0x3f, 0x95, 0xdc, 0x8e, 0x41, - 0x7e, 0x73, 0x3c, 0xaf, 0xee, 0x4d, 0x79, 0x6f, 0x77, 0x64, 0xa3, 0x39, 0xab, 0x82, 0xc4, 0xf0, - 0x62, 0x4d, 0xd0, 0x22, 0x98, 0x5e, 0xe7, 0x7c, 0xb1, 0x96, 0xa7, 0x8f, 0xcc, 0x6e, 0xbc, 0x55, - 0xb9, 0xe3, 0x7a, 0xab, 0x6a, 0xad, 0x32, 0xb7, 0xe7, 0x35, 0x65, 0x09, 0x7d, 0xab, 0x1e, 0x36, - 0xfe, 0xf3, 0xd0, 0x17, 0xea, 0xda, 0x70, 0x47, 0xa2, 0x37, 0xaa, 0x9f, 0x38, 0x0d, 0xcc, 0x76, - 0xea, 0x42, 0x6b, 0xea, 0xf2, 0xf6, 0xc7, 0x96, 0x2d, 0xfb, 0xae, 0x6c, 0xa2, 0x26, 0xe4, 0xe5, - 0x0b, 0x05, 0xf5, 0xa6, 0xf4, 0x6d, 0xbd, 0x15, 0x71, 0xc0, 0x73, 0xf5, 0x92, 0xa6, 0x3c, 0x64, - 0x45, 0x1c, 0x33, 0x19, 0x22, 0xb2, 0x64, 0x5d, 0x1f, 0x9f, 0x42, 0x95, 0x44, 0xf1, 0x4f, 0xb7, - 0x61, 0x5c, 0x0c, 0xe5, 0xf8, 0x60, 0x1f, 0x39, 0x98, 0xd3, 0x43, 0x4c, 0xae, 0x95, 0x38, 0x7b, - 0x8c, 0x0b, 0x36, 0xed, 0x72, 0x2b, 0xff, 0x5b, 0x36, 0x2a, 0x74, 0x8e, 0x7d, 0x77, 0x5c, 0xcd, - 0xb7, 0xc7, 0x71, 0x35, 0xc1, 0xc0, 0x18, 0x5f, 0xcd, 0x47, 0xf5, 0x6f, 0xb6, 0xa5, 0xdb, 0x21, - 0xab, 0x5f, 0xc4, 0xed, 0xbe, 0xa9, 0x24, 0x61, 0x77, 0xda, 0x83, 0xc9, 0xf8, 0x29, 0xfc, 0x56, - 0x39, 0x25, 0xde, 0xff, 0x23, 0x0b, 0xcd, 0x53, 0x7d, 0x8d, 0x74, 0xe0, 0x15, 0xa1, 0x60, 0xe3, - 0x2d, 0xb9, 0x80, 0x95, 0xd6, 0x0b, 0xb8, 0xd4, 0xc0, 0x98, 0xe4, 0x02, 0xce, 0x21, 0xc4, 0x22, - 0xa6, 0xde, 0x38, 0x62, 0xf1, 0x76, 0x5d, 0x39, 0x12, 0xca, 0x32, 0xd3, 0x36, 0xc9, 0xf3, 0xd9, - 0x8b, 0x68, 0x6e, 0x3d, 0x5e, 0x7f, 0x86, 0x07, 0xf0, 0xbf, 0x67, 0xa3, 0xfb, 0xdd, 0xc7, 0xbc, - 0x3b, 0xae, 0xdb, 0xba, 0x71, 0x5c, 0x37, 0x3e, 0x33, 0x41, 0x7c, 0x68, 0x97, 0x6d, 0x73, 0xee, - 0xb8, 0x8b, 0x46, 0x73, 0xdb, 0x65, 0x3a, 0x16, 0x9a, 0xd4, 0x3a, 0x39, 0xd4, 0xc2, 0x1f, 0x31, - 0x7b, 0x22, 0xf9, 0xb7, 0x0f, 0x1a, 0xf0, 0x6f, 0x5f, 0xd1, 0xdf, 0x67, 0xa3, 0xc2, 0xf2, 0x06, - 0x9f, 0x37, 0x40, 0xcc, 0xf4, 0x6e, 0xc9, 0x6d, 0x7b, 0xcd, 0x7a, 0xdb, 0x9e, 0xe4, 0x55, 0x4c, - 0x70, 0xdb, 0xc0, 0x2e, 0x51, 0x3f, 0x74, 0x24, 0xb1, 0xe7, 0xc2, 0xed, 0xbf, 0x73, 0xdf, 0x53, - 0x9e, 0x56, 0xfa, 0xa1, 0xa6, 0x44, 0x50, 0x48, 0x4a, 0xbb, 0xd1, 0x72, 0x31, 0x0f, 0x8c, 0xf1, - 0xc1, 0x3e, 0xfe, 0xf3, 0x29, 0x11, 0xeb, 0x76, 0x75, 0xad, 0x86, 0x82, 0xb0, 0x21, 0xbc, 0xc1, - 0xe0, 0xee, 0x1c, 0x74, 0x9f, 0xcb, 0xa4, 0x77, 0xc7, 0x85, 0x7e, 0x75, 0x1c, 0x17, 0xda, 0x12, - 0xa9, 0x08, 0x06, 0xe9, 0x69, 0x81, 0xdd, 0xbb, 0x53, 0x2e, 0x71, 0xa7, 0xa0, 0x29, 0xed, 0x02, - 0xda, 0x26, 0x48, 0xe9, 0x8f, 0x42, 0xf6, 0xf3, 0x26, 0xd3, 0xe6, 0xdd, 0xdd, 0x73, 0x36, 0x1e, - 0xdb, 0x95, 0x1a, 0x38, 0x09, 0x14, 0x52, 0x7c, 0x30, 0xa6, 0x0f, 0x6f, 0x49, 0xf4, 0x9d, 0x64, - 0x21, 0x73, 0x8c, 0x2a, 0xa0, 0x7c, 0x87, 0x5a, 0x53, 0x5b, 0x47, 0xe0, 0xae, 0xf3, 0x9f, 0x4f, - 0xee, 0x7a, 0xdf, 0xe7, 0xfa, 0xe0, 0x20, 0xb8, 0xa7, 0x15, 0xfd, 0x53, 0x36, 0x9a, 0xeb, 0x58, - 0xc8, 0x3a, 0xf9, 0x87, 0xbe, 0xf3, 0x6f, 0x58, 0xc5, 0x31, 0x65, 0x06, 0x03, 0x4b, 0xee, 0xfc, - 0xd2, 0x8c, 0x77, 0x1e, 0x8b, 0x4a, 0x2e, 0x27, 0xf7, 0x9c, 0x79, 0xb4, 0xe4, 0x51, 0xbd, 0x6d, - 0x9b, 0xde, 0xfe, 0x07, 0x9b, 0x58, 0xe6, 0x2e, 0x40, 0x00, 0x1f, 0x6b, 0xca, 0x26, 0x14, 0x91, - 0x32, 0xec, 0xfb, 0x0f, 0x86, 0x02, 0xf6, 0xe6, 0xa0, 0x79, 0xae, 0xd3, 0xde, 0x43, 0x02, 0xb7, - 0x10, 0x09, 0x98, 0xb6, 0xe4, 0x99, 0x0e, 0xe3, 0x56, 0xa2, 0x81, 0xbf, 0xcc, 0x82, 0x94, 0x54, - 0xee, 0x58, 0xe0, 0x36, 0x19, 0xe8, 0x8a, 0x9f, 0xa0, 0xbc, 0x60, 0x73, 0xa4, 0xa9, 0x39, 0x42, - 0x80, 0x6b, 0xbd, 0xa6, 0xbc, 0x2b, 0x91, 0x22, 0x79, 0x2d, 0x98, 0x33, 0x9a, 0x16, 0x4b, 0x5d, - 0x03, 0xa3, 0xd1, 0x76, 0x3d, 0x3a, 0xec, 0xf9, 0xd0, 0x5f, 0xef, 0x5b, 0xa4, 0xb7, 0x9e, 0x19, - 0xdd, 0x7a, 0x06, 0x6a, 0x8b, 0x4b, 0x3c, 0xeb, 0xbd, 0x61, 0x7f, 0xdd, 0x22, 0xfd, 0x68, 0x2c, - 0xd1, 0xfb, 0x35, 0x29, 0x64, 0x32, 0x53, 0xbe, 0x54, 0x25, 0xc3, 0x97, 0x3e, 0xab, 0x29, 0xcb, - 0xd1, 0x53, 0xd2, 0x1c, 0xfb, 0xae, 0xa4, 0x33, 0x10, 0xe6, 0x35, 0x72, 0x45, 0xff, 0x6b, 0x36, - 0x9a, 0xeb, 0xb6, 0x9d, 0x77, 0xc7, 0x2d, 0x5b, 0x6d, 0x51, 0xed, 0x3c, 0x90, 0xd6, 0xf8, 0x09, - 0x27, 0x85, 0xc6, 0x0e, 0x8b, 0x70, 0xdd, 0xa6, 0x63, 0x74, 0xe3, 0x92, 0xd6, 0xfd, 0x36, 0x5e, - 0x35, 0xc2, 0x1f, 0x65, 0x38, 0x0d, 0xf9, 0x61, 0xa2, 0x8e, 0xfa, 0xec, 0x2b, 0x93, 0x76, 0xa6, - 0x6e, 0x19, 0xc6, 0x17, 0xd9, 0x0c, 0x16, 0x41, 0x2e, 0xf4, 0x97, 0x93, 0xd0, 0x14, 0xcb, 0x46, - 0x88, 0xcb, 0xc1, 0xc7, 0x97, 0xdd, 0x0f, 0x7c, 0x46, 0xa4, 0x48, 0x9e, 0x41, 0xc4, 0x4d, 0xb1, - 0xdd, 0x7e, 0xe2, 0xfb, 0x52, 0x55, 0xa1, 0x92, 0x4a, 0xf1, 0x19, 0x34, 0xc1, 0x1f, 0x08, 0xf8, - 0x42, 0x55, 0x35, 0x66, 0x7e, 0xbf, 0xfb, 0x25, 0x5a, 0x26, 0x4f, 0x27, 0xa0, 0xb5, 0xad, 0x35, - 0x39, 0xb2, 0x3b, 0x3e, 0x38, 0x54, 0x55, 0xa3, 0xd2, 0x3a, 0xf1, 0x2d, 0x34, 0x99, 0x0e, 0x68, - 0x46, 0xe3, 0x28, 0x7b, 0x5a, 0x53, 0x9e, 0x90, 0x2c, 0x15, 0xf2, 0xc2, 0x44, 0x6f, 0x4c, 0x3f, - 0xb2, 0x93, 0x1c, 0x0e, 0x0d, 0x8d, 0x08, 0xd7, 0x26, 0xb5, 0x75, 0x84, 0x98, 0x52, 0x59, 0xfa, - 0x88, 0x3f, 0x43, 0xd9, 0xe5, 0x35, 0x6b, 0x31, 0xb2, 0x9d, 0x02, 0x70, 0x63, 0xfc, 0xa6, 0x66, - 0x97, 0xe5, 0x35, 0x6b, 0x09, 0xac, 0x19, 0xa5, 0xe2, 0x12, 0x94, 0xdd, 0xe8, 0x6b, 0x24, 0x69, - 0xf9, 0x30, 0x50, 0x18, 0xbf, 0xa9, 0xdf, 0xa5, 0xbe, 0xad, 0x55, 0xef, 0x3b, 0x40, 0xdb, 0x37, - 0xfa, 0x1a, 0xc5, 0xe5, 0x28, 0xfb, 0xe5, 0x9a, 0xb5, 0x66, 0x2a, 0xbe, 0x87, 0x24, 0xe3, 0xb7, - 0x7c, 0x3f, 0xb4, 0x7f, 0x99, 0x0e, 0xce, 0xaf, 0x70, 0x99, 0x6a, 0x34, 0x11, 0xbb, 0x04, 0x94, - 0x17, 0xc6, 0x8a, 0x2f, 0x22, 0x51, 0x37, 0x08, 0x6a, 0x89, 0x14, 0xc9, 0x1f, 0x90, 0x43, 0xc4, - 0x9a, 0x0b, 0x3a, 0x46, 0x5b, 0xe2, 0xd8, 0xa5, 0x44, 0x67, 0xbf, 0x25, 0x2a, 0x00, 0x8d, 0xa0, - 0x7e, 0x6d, 0xb8, 0xfd, 0xda, 0x70, 0x07, 0xb1, 0x81, 0x2a, 0xf1, 0x54, 0x54, 0xae, 0xac, 0x5c, - 0x53, 0x89, 0xff, 0x2c, 0x57, 0x2b, 0x95, 0x35, 0xf8, 0xaf, 0x15, 0x4a, 0xd5, 0xca, 0xca, 0x8a, - 0x12, 0x4f, 0x55, 0x75, 0xd5, 0x9a, 0x2a, 0x65, 0x65, 0xd5, 0x9b, 0xca, 0x9a, 0xaa, 0xd5, 0xd5, - 0x2a, 0x99, 0x53, 0x54, 0x50, 0xde, 0x27, 0xc1, 0x80, 0x8f, 0xc9, 0xe3, 0x8b, 0x0d, 0x16, 0x26, - 0xc7, 0x28, 0xa2, 0x36, 0x9c, 0x7a, 0xd7, 0x40, 0x72, 0xcf, 0x19, 0xbd, 0x23, 0x66, 0xdf, 0x71, - 0xd2, 0x51, 0xfc, 0xad, 0x15, 0xc5, 0x42, 0x94, 0xae, 0x37, 0x35, 0xe5, 0xe7, 0x56, 0x14, 0xfb, - 0x0a, 0x21, 0x0a, 0x68, 0x32, 0x74, 0x1e, 0xe3, 0x62, 0x9b, 0x38, 0x36, 0xf2, 0xa2, 0xf8, 0x50, - 0x2b, 0xd5, 0x4c, 0xeb, 0x23, 0x9a, 0x7e, 0xf6, 0x48, 0x3c, 0xb6, 0x8b, 0x0d, 0x55, 0x6c, 0x45, - 0xb4, 0x2b, 0x78, 0x32, 0x0f, 0x99, 0xe9, 0xea, 0x38, 0x32, 0xaf, 0xd0, 0x36, 0x33, 0x4b, 0x00, - 0xc7, 0x93, 0x75, 0x8f, 0xa1, 0xec, 0x75, 0x35, 0xe5, 0x24, 0x6c, 0x17, 0x86, 0x62, 0xe3, 0x37, - 0x8d, 0x48, 0xc0, 0xfa, 0xae, 0xab, 0x29, 0xf7, 0x54, 0x55, 0xa8, 0x46, 0x9d, 0xf8, 0x16, 0x33, - 0xa6, 0x9d, 0x4c, 0x63, 0xf2, 0xbe, 0xc4, 0x8c, 0x69, 0x9f, 0xe2, 0x3b, 0x82, 0x19, 0xad, 0xa9, - 0x7d, 0xba, 0x74, 0x59, 0xbf, 0x68, 0x3c, 0x88, 0x89, 0x8b, 0x67, 0xf5, 0xde, 0x73, 0xc6, 0xc6, - 0xee, 0x38, 0xa6, 0x5f, 0x3c, 0x92, 0xec, 0x6b, 0x67, 0x46, 0xb6, 0xd5, 0x28, 0xaf, 0xc9, 0x1b, - 0x0e, 0x7f, 0x58, 0x4f, 0xdc, 0xe1, 0x21, 0x8c, 0x1a, 0x14, 0xc9, 0xc5, 0x36, 0x07, 0x7e, 0x6a, - 0x59, 0x08, 0xf4, 0x27, 0x98, 0x45, 0xa5, 0x4e, 0x7f, 0xae, 0x0f, 0x6c, 0x53, 0x49, 0x17, 0xf1, - 0x1d, 0x84, 0x4f, 0x15, 0x3b, 0xc6, 0x4f, 0x29, 0xab, 0xd2, 0x94, 0x15, 0x12, 0x39, 0x40, 0xca, - 0x78, 0xb3, 0x83, 0x86, 0xdc, 0x9f, 0xdc, 0x81, 0x3c, 0xeb, 0x61, 0xe1, 0x40, 0x41, 0x50, 0x0d, - 0x74, 0x6c, 0x3c, 0xb6, 0xab, 0x5c, 0x51, 0xf1, 0xb0, 0xa2, 0x82, 0xf2, 0xeb, 0x7d, 0x9b, 0xfc, - 0x06, 0x72, 0x20, 0x1e, 0xed, 0x0f, 0x6b, 0x4a, 0x91, 0xc4, 0x0a, 0xe5, 0xd9, 0xe5, 0x8a, 0x87, - 0x5e, 0xd1, 0x54, 0xff, 0xb7, 0xfa, 0x89, 0xed, 0x55, 0x15, 0x7a, 0xd7, 0x45, 0x95, 0xb5, 0x10, - 0x7f, 0x6b, 0x22, 0x04, 0x35, 0xc8, 0x42, 0xa4, 0xbf, 0xa1, 0x29, 0x6b, 0x25, 0x4b, 0x85, 0x5c, - 0x49, 0xc8, 0x8a, 0xd3, 0x5a, 0xaa, 0xdd, 0xc0, 0x03, 0xab, 0x94, 0xda, 0x35, 0x95, 0x6a, 0x89, - 0xe7, 0xe7, 0xab, 0xd5, 0xd7, 0x8c, 0xff, 0x2b, 0xd7, 0x94, 0x57, 0x94, 0x78, 0xa0, 0xf4, 0x5d, - 0xfc, 0x43, 0x59, 0xb9, 0x92, 0x5a, 0xe9, 0xc7, 0x07, 0x63, 0xd0, 0x4e, 0xb5, 0x0c, 0x2a, 0xfe, - 0x1e, 0x4d, 0x69, 0x0e, 0xd4, 0xd6, 0xbd, 0xef, 0xab, 0x6f, 0x6e, 0xc0, 0x71, 0x52, 0xa7, 0xe3, - 0x8d, 0xc2, 0xd3, 0x5b, 0x6b, 0xe4, 0x8a, 0xd4, 0x37, 0x5b, 0xf5, 0xd8, 0x29, 0xb8, 0xa7, 0xe6, - 0x53, 0x1c, 0x1d, 0x5e, 0x96, 0x3a, 0x7e, 0x26, 0x79, 0x22, 0xa6, 0x77, 0x6d, 0x89, 0x0f, 0xee, - 0x82, 0x46, 0xd7, 0x86, 0x3b, 0x1e, 0x83, 0x52, 0x1c, 0x15, 0xd5, 0xac, 0x50, 0xad, 0x83, 0x8a, - 0x4f, 0xa3, 0x7c, 0x03, 0xac, 0x99, 0x3f, 0xfc, 0x44, 0x08, 0xc5, 0xc5, 0x0a, 0xe5, 0xc9, 0xe4, - 0x94, 0xc0, 0x5e, 0x9c, 0x95, 0x17, 0x5d, 0xc9, 0x86, 0xfc, 0xb0, 0x77, 0x23, 0x67, 0xbc, 0xc2, - 0xf2, 0x5c, 0xcf, 0x74, 0x7b, 0xae, 0xef, 0xf4, 0x57, 0x7a, 0x8d, 0xa6, 0xbc, 0x8e, 0x56, 0x4b, - 0x69, 0x8f, 0xe0, 0xc6, 0xde, 0xe8, 0x7f, 0x9b, 0x8d, 0xee, 0x07, 0x8f, 0x75, 0xc8, 0xf8, 0xe0, - 0x0f, 0xac, 0xf2, 0x7e, 0x54, 0xeb, 0xff, 0xc4, 0x77, 0xbd, 0xde, 0xd2, 0x0e, 0x16, 0xd1, 0x8d, - 0xc9, 0xb5, 0x62, 0xd4, 0x37, 0xd0, 0x84, 0x46, 0x7f, 0xc0, 0x98, 0x0c, 0xc3, 0xc0, 0x94, 0xb2, - 0x17, 0x8c, 0x37, 0x99, 0x96, 0xc9, 0xc5, 0xf1, 0xcb, 0xfd, 0x89, 0x3d, 0x97, 0x02, 0x9c, 0xd7, - 0x9d, 0x97, 0x84, 0xc1, 0xf1, 0x07, 0x36, 0x80, 0xdd, 0x65, 0x7c, 0x70, 0xe7, 0xe8, 0xc1, 0x6e, - 0x9a, 0xc4, 0x96, 0x76, 0xc5, 0x23, 0xc3, 0x67, 0x60, 0x10, 0x61, 0x23, 0x43, 0xd9, 0x38, 0x47, - 0xde, 0x61, 0x19, 0x19, 0xba, 0x8a, 0x2f, 0x39, 0xd8, 0xda, 0x85, 0xf8, 0xf6, 0x30, 0xb6, 0x76, - 0x32, 0xb0, 0xb5, 0xf1, 0x58, 0x4c, 0xdf, 0x7d, 0xc0, 0x4c, 0x9c, 0x6f, 0x72, 0xb6, 0xef, 0x68, - 0xca, 0x9b, 0xe8, 0x0d, 0x29, 0xe3, 0xae, 0xcb, 0x12, 0xac, 0x90, 0x6d, 0x6a, 0xa2, 0x37, 0xaa, - 0x7f, 0xd3, 0x05, 0x8a, 0x2c, 0x92, 0xef, 0xa6, 0xff, 0xd2, 0xe8, 0xc1, 0xee, 0xd1, 0xcf, 0x0e, - 0x5b, 0x19, 0xda, 0xa2, 0x9e, 0x6c, 0xf4, 0x40, 0x9a, 0xa1, 0xef, 0x8e, 0xab, 0xea, 0x72, 0xc5, - 0x72, 0x6e, 0xd1, 0x15, 0x7b, 0x57, 0x53, 0xde, 0x46, 0x6f, 0x4a, 0x99, 0xf7, 0x4f, 0x7e, 0x66, - 0xfc, 0x67, 0xc3, 0x54, 0x75, 0xf0, 0x8d, 0x45, 0x5d, 0xd6, 0xc3, 0x51, 0xc2, 0x6b, 0xfc, 0x8d, - 0x3e, 0xd5, 0x1b, 0xd8, 0x70, 0x2b, 0xae, 0xdb, 0x26, 0x84, 0x22, 0x74, 0x3a, 0x10, 0x24, 0xbb, - 0x78, 0x6d, 0xb0, 0x05, 0x81, 0xc1, 0x04, 0xd7, 0x43, 0x96, 0xf4, 0xfe, 0x9e, 0xc4, 0xfe, 0x0b, - 0x60, 0xd4, 0x41, 0xbe, 0x92, 0xb3, 0x58, 0xb4, 0x64, 0xad, 0xe0, 0xfa, 0x19, 0x0f, 0x0e, 0xbb, - 0x32, 0xd9, 0xdc, 0x83, 0xe3, 0x7e, 0x65, 0xb8, 0x9b, 0x42, 0xd2, 0xcd, 0x66, 0xde, 0x31, 0x79, - 0x81, 0x2d, 0x14, 0x07, 0xac, 0x32, 0xd1, 0xfe, 0x45, 0x72, 0xf8, 0x8b, 0x64, 0xdf, 0xbe, 0xe4, - 0xde, 0x93, 0x76, 0x91, 0x0f, 0xb7, 0xb8, 0xa2, 0xfd, 0xd9, 0x68, 0x7e, 0xba, 0xf1, 0xef, 0xdd, - 0x97, 0x31, 0xee, 0xcb, 0x5b, 0x9a, 0xf2, 0x06, 0x5a, 0x27, 0x8d, 0xb1, 0x81, 0xf2, 0x13, 0x1b, - 0x32, 0x1c, 0x11, 0xb5, 0x02, 0x35, 0x0e, 0xca, 0x72, 0x57, 0xfe, 0xab, 0x80, 0x1e, 0x5a, 0x13, - 0xf2, 0x06, 0xc2, 0xac, 0xdb, 0x9a, 0x20, 0x1f, 0xd6, 0x8b, 0xde, 0x98, 0x7a, 0xb7, 0x1b, 0x53, - 0x66, 0x50, 0xe6, 0x96, 0x1b, 0x33, 0x9b, 0xfb, 0xc1, 0x99, 0xf6, 0xd0, 0x58, 0xd4, 0x63, 0x5c, - 0x1e, 0xea, 0xcc, 0x37, 0x9e, 0x15, 0xc9, 0x73, 0xd8, 0xf8, 0xa9, 0x91, 0xaf, 0x13, 0x9d, 0x9f, - 0xc1, 0x67, 0xd9, 0x45, 0x8f, 0x45, 0xdb, 0xb2, 0xd1, 0xc2, 0xcc, 0xc3, 0xdd, 0x1d, 0x00, 0xd8, - 0x80, 0xf2, 0x23, 0x34, 0x1c, 0x5b, 0xce, 0x38, 0xc2, 0xb1, 0x61, 0x0d, 0x3e, 0xeb, 0x22, 0x3f, - 0x44, 0xff, 0x82, 0xcd, 0xb2, 0x99, 0x77, 0xa5, 0x06, 0x4e, 0x25, 0xb6, 0xb6, 0xaa, 0xac, 0x39, - 0x3d, 0x88, 0x71, 0xed, 0x9c, 0xbc, 0xd0, 0x76, 0x12, 0xf1, 0xc1, 0x18, 0x3f, 0x38, 0x81, 0xb4, - 0x16, 0x2b, 0x56, 0xae, 0xf0, 0x85, 0xfd, 0x21, 0x5f, 0xfd, 0x2d, 0x22, 0x82, 0xca, 0x71, 0x2a, - 0x29, 0x3a, 0x21, 0x21, 0x84, 0x16, 0x68, 0xca, 0x7c, 0x89, 0x2f, 0x97, 0xa7, 0xd9, 0x48, 0x16, - 0x95, 0xaf, 0x15, 0x5f, 0x70, 0xa0, 0xd8, 0xa2, 0x8c, 0x54, 0x49, 0x4e, 0xc8, 0x12, 0x24, 0x84, - 0x45, 0x5e, 0xcd, 0xbc, 0x0d, 0xf2, 0x4b, 0x8e, 0x97, 0xef, 0x68, 0xa2, 0xf7, 0x90, 0x79, 0x62, - 0x7b, 0xbf, 0x29, 0x81, 0x77, 0x41, 0x6f, 0xef, 0x8c, 0x5f, 0x3e, 0x9c, 0x1a, 0xd8, 0x0c, 0x71, - 0x27, 0xe2, 0x83, 0xd1, 0xd4, 0xf6, 0xf3, 0x89, 0xe8, 0x69, 0x3b, 0x26, 0xe6, 0x3f, 0xa2, 0xa8, - 0xdb, 0x8a, 0x8a, 0x2d, 0xf3, 0xdf, 0x43, 0xc5, 0xe3, 0xe3, 0x0e, 0x5c, 0x36, 0xd0, 0x38, 0x2d, - 0x76, 0x21, 0x16, 0xdb, 0x30, 0x31, 0x9c, 0x20, 0x3b, 0x3e, 0x3b, 0xbd, 0xb2, 0x2f, 0xc7, 0xed, - 0x66, 0xc0, 0x88, 0x3f, 0xf8, 0xcd, 0x58, 0xc9, 0x6e, 0x06, 0xb6, 0xb1, 0x84, 0x9b, 0x01, 0x71, - 0x2c, 0xb9, 0x72, 0xb9, 0x10, 0xbe, 0xc1, 0x26, 0x64, 0x4e, 0xec, 0xfd, 0x46, 0xe5, 0x9b, 0x89, - 0x15, 0x8e, 0x2b, 0xb2, 0xc8, 0xb8, 0x64, 0xe6, 0x15, 0x11, 0x01, 0x74, 0x33, 0x5e, 0x14, 0x71, - 0xaf, 0x80, 0xf2, 0x1a, 0xbd, 0x81, 0x66, 0x6f, 0x03, 0x31, 0x12, 0xfe, 0x9d, 0xa6, 0x7c, 0x22, - 0x91, 0x22, 0xb9, 0x09, 0xdc, 0x1f, 0xf8, 0x81, 0x4a, 0xe8, 0x09, 0xda, 0x2b, 0x0c, 0x2e, 0x7d, - 0x73, 0x0f, 0xdc, 0x0f, 0x03, 0x06, 0xa3, 0x51, 0x50, 0x3f, 0x5c, 0x1b, 0xee, 0xd0, 0xcf, 0xee, - 0x35, 0x98, 0x7b, 0x1c, 0x37, 0xd0, 0x20, 0x28, 0xfb, 0x4e, 0x8e, 0x7e, 0x89, 0x43, 0x0f, 0x61, - 0xe3, 0x66, 0x18, 0x70, 0x74, 0x7b, 0x67, 0x6a, 0x60, 0xaf, 0x4a, 0x66, 0x2e, 0x0d, 0x68, 0xca, - 0x46, 0xe4, 0x97, 0x32, 0x1f, 0x96, 0x83, 0x54, 0x72, 0xde, 0xdf, 0x74, 0x17, 0xb4, 0x1a, 0xb3, - 0x8c, 0xa6, 0x8e, 0xec, 0x1f, 0x5d, 0xef, 0x2a, 0x0f, 0x6a, 0x77, 0xfa, 0x5d, 0xad, 0x19, 0x87, - 0x9a, 0x8c, 0xcf, 0xbd, 0x64, 0xaa, 0xc9, 0x38, 0x7f, 0xd8, 0x3b, 0x45, 0x59, 0xf6, 0xc3, 0xdc, - 0xfe, 0x2b, 0x02, 0x7a, 0xb0, 0x12, 0xc7, 0xb0, 0x60, 0x3d, 0x68, 0x5c, 0xd9, 0x5b, 0x70, 0xff, - 0xe9, 0x47, 0x8d, 0xb5, 0x04, 0x79, 0x3e, 0x84, 0xe0, 0x30, 0x11, 0x00, 0x65, 0x50, 0xc0, 0xe6, - 0xd9, 0x46, 0x75, 0xed, 0xce, 0x46, 0x9e, 0xf4, 0x23, 0xde, 0x7b, 0x67, 0xc6, 0x80, 0xb4, 0x5a, - 0x4d, 0xa9, 0x41, 0xd5, 0xd2, 0x98, 0x5b, 0x28, 0x4b, 0x99, 0x4f, 0x85, 0xff, 0xae, 0xa2, 0xbf, - 0x16, 0x90, 0xa7, 0xc2, 0x1f, 0xbe, 0x6d, 0x90, 0xb6, 0x56, 0x53, 0x54, 0x54, 0x23, 0x8d, 0xb9, - 0x06, 0x79, 0xbe, 0xde, 0x7a, 0x6e, 0x74, 0x7f, 0xdf, 0x38, 0x41, 0xed, 0xd3, 0x6c, 0xb4, 0x20, - 0xc3, 0x90, 0xf7, 0x60, 0x6d, 0x7c, 0x58, 0x6d, 0xec, 0x3d, 0x94, 0xa5, 0xcc, 0xe7, 0x62, 0x01, - 0xb6, 0x7f, 0x44, 0x68, 0x3a, 0x78, 0xef, 0x1b, 0x38, 0x9e, 0x42, 0xd7, 0xef, 0x50, 0x7e, 0xc4, - 0x1b, 0xde, 0x88, 0x15, 0x84, 0x2c, 0x74, 0xd1, 0x2f, 0x25, 0x56, 0xf8, 0xff, 0xb3, 0xf7, 0x2e, - 0xd0, 0x51, 0x1c, 0x4b, 0x82, 0xe8, 0xad, 0xd6, 0x07, 0x29, 0x11, 0xbf, 0x32, 0x60, 0x59, 0xfc, - 0xda, 0x6d, 0x6c, 0x8b, 0xb6, 0x84, 0xa0, 0xc0, 0x3f, 0xf9, 0x62, 0xbb, 0x24, 0x01, 0x96, 0xcd, - 0x47, 0x2e, 0x01, 0xf7, 0x5e, 0x7b, 0x7c, 0x71, 0xd3, 0x5d, 0x88, 0xbe, 0x48, 0xdd, 0x7d, 0xbb, - 0x5b, 0xd8, 0xd8, 0x73, 0xe7, 0x09, 0x2c, 0x81, 0x64, 0xc4, 0xaf, 0x6c, 0xc0, 0xc8, 0xe2, 0x67, - 0x83, 0xc1, 0x36, 0x42, 0x60, 0x6c, 0x2c, 0x24, 0x61, 0x66, 0xce, 0xce, 0xec, 0xdb, 0x37, 0x3b, - 0xb3, 0x3b, 0xeb, 0xdd, 0xd9, 0xd9, 0x33, 0xfb, 0x99, 0xdd, 0xe3, 0xae, 0x6e, 0x69, 0xdf, 0xdb, - 0xc3, 0xce, 0x3b, 0x7b, 0xde, 0xd9, 0xe7, 0xdd, 0xd9, 0xf7, 0x4e, 0x66, 0x64, 0x56, 0x65, 0x75, - 0x55, 0xb5, 0x24, 0xff, 0xf1, 0xf5, 0x39, 0x3e, 0x46, 0x9d, 0x19, 0x99, 0x95, 0x9f, 0x88, 0xc8, - 0xc8, 0x88, 0xc8, 0x08, 0x49, 0x01, 0x5e, 0x6f, 0x24, 0x50, 0x03, 0x03, 0x0b, 0xcb, 0x64, 0x4e, - 0x16, 0xe2, 0xd6, 0x70, 0x37, 0x7b, 0x0c, 0xbc, 0x21, 0x6a, 0x96, 0x71, 0xce, 0xf9, 0xab, 0xe2, - 0xd1, 0x16, 0x5a, 0x91, 0xe9, 0xeb, 0x52, 0x8c, 0xde, 0xc5, 0x26, 0xc3, 0x5c, 0x07, 0x7b, 0xba, - 0x9e, 0x6c, 0x0c, 0x35, 0xd7, 0x95, 0xd0, 0x4f, 0x13, 0x33, 0xc0, 0x97, 0x35, 0xcb, 0xe2, 0x4b, - 0x95, 0x12, 0xc3, 0xca, 0x56, 0xbf, 0x6e, 0xb5, 0x32, 0x89, 0x5a, 0xe6, 0x94, 0x49, 0x8d, 0x1b, - 0x6b, 0x6b, 0x57, 0x36, 0x36, 0x2a, 0x85, 0x60, 0x8d, 0x53, 0x26, 0x6d, 0xa8, 0x5f, 0xbb, 0x72, - 0xfd, 0xc6, 0x0d, 0x86, 0x19, 0xee, 0xd7, 0x59, 0x4f, 0xda, 0x20, 0xcf, 0xb6, 0x81, 0x3d, 0x0f, - 0x51, 0xef, 0x07, 0x12, 0xe5, 0xcf, 0xb0, 0x2e, 0xa6, 0x5f, 0x3f, 0x37, 0xfa, 0xe6, 0xf1, 0xf4, - 0xb1, 0x6b, 0xa9, 0x81, 0x41, 0x40, 0xac, 0xf4, 0xc1, 0x43, 0x99, 0xb3, 0x83, 0x66, 0xf0, 0x32, - 0x03, 0xc3, 0x96, 0xa3, 0x82, 0x44, 0x32, 0x10, 0x4f, 0x52, 0xe5, 0xe8, 0x7c, 0x4d, 0x9e, 0xe3, - 0x87, 0x12, 0x49, 0xa4, 0xc1, 0x29, 0x0f, 0xf5, 0xe3, 0xbd, 0x39, 0x76, 0x6d, 0xf4, 0xd8, 0xc7, - 0x0a, 0x54, 0x89, 0x8b, 0x51, 0x9e, 0x1a, 0x09, 0xd1, 0x67, 0x4f, 0x60, 0x18, 0x55, 0x23, 0x21, - 0xd6, 0x02, 0x6f, 0xdc, 0x89, 0x53, 0xb4, 0x05, 0xae, 0x10, 0xd7, 0xa0, 0x29, 0xea, 0xcb, 0x6a, - 0xb0, 0x15, 0xe3, 0xc9, 0x86, 0x70, 0x8b, 0xca, 0x9b, 0x48, 0xad, 0x35, 0xac, 0x0f, 0x1a, 0xb7, - 0x10, 0xfa, 0xb0, 0x82, 0x88, 0x1b, 0xd1, 0xe4, 0x60, 0x6b, 0x3c, 0xae, 0x46, 0x92, 0x8d, 0x49, - 0x35, 0x46, 0x0d, 0xa6, 0xcb, 0x34, 0x79, 0x89, 0x9f, 0x2f, 0x97, 0xee, 0xa6, 0x3d, 0xf5, 0xbd, - 0xab, 0xf7, 0x5e, 0x80, 0xfe, 0x0c, 0xe9, 0x8c, 0x1a, 0x4b, 0x78, 0x78, 0xf1, 0x59, 0x54, 0x92, - 0x48, 0xaa, 0xb1, 0x46, 0x8c, 0x61, 0x91, 0xa0, 0x4a, 0x32, 0x1b, 0x15, 0xd7, 0x54, 0x6a, 0xb2, - 0xcf, 0x6f, 0xa9, 0xc8, 0x1a, 0x22, 0xe9, 0xef, 0xcb, 0x9a, 0x02, 0x4d, 0xf0, 0x14, 0x09, 0x8a, - 0x05, 0x52, 0x3c, 0x2e, 0xe0, 0xe5, 0x55, 0x63, 0x2c, 0x22, 0x79, 0x85, 0x73, 0xf6, 0x05, 0x0e, - 0xb1, 0x17, 0xe3, 0xa1, 0xd0, 0xd8, 0xdc, 0x1b, 0x35, 0xf9, 0x29, 0x3f, 0xb4, 0x97, 0x9e, 0x80, - 0x6f, 0x42, 0x56, 0x62, 0xf8, 0x26, 0xf7, 0x90, 0x6b, 0x68, 0xe4, 0xbd, 0x5d, 0x60, 0x77, 0x83, - 0x42, 0xf0, 0x8f, 0xc1, 0xa2, 0xe9, 0xf0, 0x6e, 0x7d, 0x60, 0x20, 0x7d, 0xec, 0xda, 0x97, 0x35, - 0x93, 0x7a, 0x84, 0xfc, 0x22, 0x61, 0xfa, 0x4c, 0x05, 0x7a, 0x14, 0x5f, 0xb4, 0xdb, 0x47, 0x6b, - 0x48, 0x80, 0x61, 0xd3, 0x3e, 0x6a, 0x4c, 0xd4, 0x24, 0xfd, 0x89, 0x84, 0xf7, 0x7a, 0x8e, 0x0f, - 0x07, 0x04, 0xf6, 0xd3, 0x9f, 0x93, 0x2f, 0x98, 0xe1, 0x80, 0xac, 0x5f, 0x20, 0x81, 0x80, 0x98, - 0x23, 0x8d, 0x43, 0xb6, 0x31, 0xb3, 0x21, 0x9f, 0x94, 0xa9, 0xc4, 0x31, 0x29, 0x13, 0xe0, 0x2e, - 0xf1, 0x04, 0x4a, 0x0d, 0x0e, 0x3a, 0x24, 0x65, 0xaa, 0x47, 0xa8, 0x39, 0x90, 0x48, 0x82, 0x08, - 0x46, 0x6d, 0xa9, 0xc4, 0xc8, 0xcd, 0x15, 0x4b, 0xa5, 0xf4, 0x05, 0xd1, 0xc0, 0xeb, 0xe9, 0x8b, - 0x67, 0x68, 0xd8, 0x67, 0xc0, 0x49, 0x0e, 0xaa, 0x6c, 0x1d, 0x42, 0xe6, 0xb6, 0x39, 0x84, 0x2d, - 0xf6, 0x5b, 0x53, 0xf0, 0xda, 0x84, 0x57, 0xdc, 0x98, 0x0f, 0x66, 0x1c, 0xd3, 0xe4, 0x16, 0xb4, - 0xdd, 0x6f, 0x67, 0x7b, 0x2c, 0x6f, 0x2e, 0x43, 0x06, 0x78, 0x55, 0x62, 0xb0, 0xa5, 0xcf, 0x05, - 0x0b, 0xfa, 0x7d, 0x2e, 0xc0, 0x56, 0x5b, 0xdd, 0xe9, 0xcc, 0x45, 0x34, 0xd3, 0xa9, 0xf8, 0xfe, - 0xbd, 0x80, 0x44, 0xfe, 0x6b, 0xb7, 0xc7, 0x59, 0x57, 0x3e, 0xf6, 0x9d, 0x80, 0xe6, 0x59, 0xfd, - 0x42, 0x40, 0xd3, 0x15, 0x35, 0x19, 0xdf, 0xc9, 0x9f, 0x21, 0x4f, 0x19, 0x8f, 0x82, 0x8d, 0xf4, - 0x9b, 0xa2, 0x9f, 0x16, 0x49, 0x45, 0xb0, 0xc6, 0x58, 0x28, 0x29, 0x8d, 0xcf, 0x26, 0x09, 0xd2, - 0x1d, 0xd2, 0xdf, 0xd1, 0x67, 0xc4, 0xab, 0xcd, 0x18, 0xf5, 0x30, 0xef, 0x4a, 0x4d, 0xf6, 0x9a, - 0x31, 0xea, 0x67, 0x41, 0x5f, 0x70, 0x07, 0xd4, 0x0f, 0x1e, 0x1e, 0xf9, 0xe4, 0x53, 0x82, 0x93, - 0xb6, 0xcc, 0xeb, 0xd5, 0x3f, 0xd7, 0xe4, 0x47, 0xd1, 0xc3, 0x7e, 0xdb, 0x58, 0xa5, 0xe9, 0xd0, - 0x18, 0x17, 0xb1, 0x6d, 0xa7, 0x1f, 0xe7, 0xb2, 0x25, 0xff, 0x4f, 0x01, 0xcd, 0xe0, 0x5a, 0xde, - 0x6e, 0xb9, 0x1f, 0xdd, 0x2f, 0x76, 0xe4, 0x58, 0x82, 0x8b, 0xdd, 0x1d, 0x46, 0x0c, 0x6b, 0x33, - 0x3a, 0x32, 0xdd, 0xe4, 0x94, 0x80, 0xa6, 0x35, 0x6e, 0x0f, 0xc7, 0xbe, 0x9d, 0x3d, 0x7e, 0x3a, - 0x7b, 0x8f, 0x97, 0xe0, 0xd3, 0xcb, 0xd8, 0x63, 0xca, 0x29, 0x46, 0x3e, 0xbd, 0x3a, 0x72, 0x73, - 0x6f, 0xa6, 0xa7, 0x3d, 0xe7, 0x36, 0x53, 0x47, 0xbc, 0xec, 0xd1, 0x4a, 0xd3, 0xa1, 0x79, 0xee, - 0x5d, 0xfe, 0x1f, 0x02, 0x9a, 0x6e, 0x36, 0xfc, 0x7d, 0xdb, 0xe4, 0x91, 0x42, 0x34, 0x03, 0xd8, - 0x2e, 0xbf, 0xcd, 0xab, 0xb3, 0xb6, 0xb9, 0xca, 0x65, 0x9b, 0xe1, 0x68, 0x59, 0xe8, 0xbe, 0xcb, - 0xdb, 0xb2, 0x04, 0xbb, 0x86, 0x1c, 0x82, 0xdd, 0xf2, 0xb8, 0x34, 0xa6, 0x60, 0x37, 0x09, 0x0b, - 0x76, 0x1b, 0x95, 0x95, 0xdf, 0xbd, 0x64, 0x47, 0x65, 0xb4, 0xfc, 0xaf, 0x2c, 0xa3, 0x15, 0x7c, - 0x83, 0x32, 0x5a, 0xe1, 0x37, 0x24, 0xa3, 0x99, 0x02, 0xd5, 0x24, 0x67, 0x81, 0xca, 0x86, 0x1a, - 0xdf, 0x9d, 0x40, 0xc5, 0x25, 0x2a, 0x29, 0x72, 0x4c, 0x54, 0x02, 0x53, 0x25, 0x98, 0x6d, 0x15, - 0x49, 0x28, 0xc8, 0x37, 0x2e, 0x47, 0xac, 0xd0, 0xe4, 0x6a, 0xf4, 0x88, 0xdf, 0x4e, 0x2f, 0xd2, - 0x74, 0x18, 0x46, 0x6e, 0x46, 0xf3, 0x0f, 0x02, 0x12, 0xf9, 0xa6, 0xbf, 0x6f, 0xac, 0xe6, 0x35, - 0x0f, 0x9a, 0x01, 0x97, 0xc1, 0x6f, 0x85, 0xd5, 0x24, 0xb3, 0x73, 0x0f, 0x10, 0xd7, 0x48, 0x23, - 0x80, 0xc5, 0x1a, 0x3e, 0x3e, 0x85, 0x39, 0x36, 0x8c, 0x83, 0xfb, 0xaf, 0xa6, 0x6e, 0xdc, 0x4c, - 0xf7, 0x7e, 0x00, 0xee, 0xee, 0x40, 0x36, 0xfa, 0xa5, 0xee, 0x74, 0x27, 0x89, 0x70, 0x7f, 0xfd, - 0x14, 0x49, 0x20, 0xf0, 0xb6, 0xde, 0x71, 0x2e, 0x33, 0xd4, 0x99, 0xee, 0x7b, 0x87, 0x4f, 0x15, - 0x50, 0x5d, 0xa5, 0xc9, 0x15, 0xc8, 0xef, 0xb7, 0x4f, 0x4c, 0x2a, 0xa1, 0x69, 0xfb, 0xc9, 0x0c, - 0x0c, 0x7c, 0xf0, 0xb5, 0x79, 0x58, 0x68, 0x93, 0xdb, 0x09, 0x0b, 0x9e, 0x19, 0x07, 0x16, 0x10, - 0xab, 0x1d, 0x60, 0xc1, 0x6c, 0x3e, 0x12, 0xb9, 0x0d, 0x11, 0xf6, 0x0a, 0x68, 0xea, 0x6a, 0x35, - 0xc9, 0x63, 0xc1, 0xaa, 0x2c, 0x2c, 0x58, 0xac, 0xc9, 0x33, 0x0c, 0x2c, 0x98, 0x84, 0x21, 0xbd, - 0xe3, 0x41, 0x82, 0xea, 0x4a, 0x4d, 0xf6, 0xa3, 0x72, 0x7f, 0x56, 0xf7, 0xd2, 0x6c, 0xf0, 0xc4, - 0x37, 0x47, 0x42, 0xa3, 0x74, 0xff, 0x89, 0x07, 0x4d, 0x33, 0x40, 0x7f, 0x9c, 0xf4, 0x68, 0xc4, - 0xe6, 0xce, 0xde, 0x86, 0xea, 0x95, 0x9a, 0x5c, 0x83, 0x9e, 0xf4, 0x67, 0x2f, 0xc0, 0x44, 0xc3, - 0x62, 0xff, 0xf7, 0x42, 0x34, 0x6d, 0x4d, 0x38, 0x61, 0xd9, 0xce, 0xa0, 0xfd, 0x4d, 0xd8, 0x4a, - 0x4d, 0x7e, 0x8c, 0xbf, 0x0c, 0x2f, 0x36, 0xaf, 0xaa, 0xe3, 0x8b, 0x83, 0x0d, 0xb6, 0x28, 0x4b, - 0xbc, 0x1e, 0xee, 0x3e, 0x0c, 0x4b, 0x2f, 0x91, 0x88, 0xf8, 0xe6, 0x7d, 0x78, 0x4e, 0xd6, 0x47, - 0xf8, 0xd8, 0xb8, 0xd0, 0xa3, 0x97, 0xbf, 0x05, 0x3f, 0x6e, 0xde, 0x82, 0xf3, 0xcc, 0xdc, 0x80, - 0xce, 0xb7, 0x60, 0xf2, 0x70, 0x0b, 0x72, 0x03, 0x1a, 0x77, 0xe0, 0xc7, 0xcd, 0x23, 0x2b, 0x9f, - 0x6b, 0xef, 0x78, 0x64, 0xf1, 0xed, 0x59, 0x66, 0x2d, 0x5e, 0x0b, 0x57, 0xf0, 0xdd, 0x6b, 0xe1, - 0xe2, 0x86, 0xb0, 0x56, 0x68, 0xfa, 0x96, 0x33, 0x61, 0x6d, 0x2d, 0x2f, 0xac, 0x95, 0xf3, 0x62, - 0x5a, 0x85, 0xd7, 0xf0, 0x8c, 0xa7, 0x62, 0x9a, 0xe9, 0x0d, 0x4f, 0xa5, 0xb4, 0x0a, 0xef, 0xaa, - 0xf5, 0x4a, 0xed, 0x4a, 0x23, 0x56, 0xd1, 0x22, 0x43, 0x6c, 0xdb, 0x48, 0x9f, 0x44, 0x34, 0x50, - 0xbd, 0x13, 0x3e, 0x63, 0xe9, 0x93, 0x88, 0x06, 0x69, 0x49, 0xfa, 0xd4, 0xa1, 0xd4, 0xe0, 0xdb, - 0x7a, 0xef, 0x60, 0xfa, 0x78, 0x7f, 0x6a, 0x60, 0x9f, 0x19, 0xf9, 0xbb, 0xbe, 0x81, 0x86, 0x12, - 0xee, 0xbf, 0xae, 0x0f, 0xbe, 0x69, 0x84, 0xee, 0xa0, 0xef, 0x25, 0x1a, 0xc4, 0x5f, 0x38, 0xc5, - 0xc0, 0x21, 0x41, 0xf9, 0x2c, 0xda, 0xf2, 0x7b, 0xa0, 0x47, 0xce, 0x21, 0x66, 0xe4, 0xe6, 0xde, - 0xf4, 0xd0, 0x59, 0xb6, 0xd1, 0xc4, 0xf5, 0xd5, 0xa2, 0x2b, 0x7f, 0x5d, 0xd0, 0xe4, 0x3d, 0x02, - 0x7a, 0x4d, 0xf0, 0x67, 0x23, 0xbd, 0x14, 0x83, 0x21, 0xe1, 0xe5, 0xfc, 0x8e, 0x62, 0x27, 0x7f, - 0x98, 0x87, 0xa6, 0x9b, 0xa3, 0xb8, 0x3d, 0xf8, 0x57, 0x63, 0x6e, 0x57, 0x64, 0xc2, 0xbf, 0xe0, - 0x71, 0x04, 0xe1, 0x5f, 0xf3, 0x2d, 0x11, 0x93, 0xb9, 0x6d, 0xb1, 0x44, 0xa1, 0x51, 0x11, 0x6a, - 0x0e, 0x24, 0x55, 0x58, 0x09, 0x6a, 0x76, 0x74, 0xee, 0x1a, 0x9f, 0xd7, 0xb4, 0xeb, 0x85, 0x46, - 0xd7, 0xfa, 0x8d, 0x37, 0xf4, 0xae, 0xfd, 0xe9, 0xde, 0xb6, 0xf4, 0xd1, 0xcb, 0x59, 0xe1, 0x27, - 0x15, 0xae, 0x63, 0x43, 0x9d, 0x90, 0xbd, 0xe6, 0x92, 0x48, 0x59, 0x26, 0xc8, 0xc0, 0x2e, 0xc1, - 0x99, 0x87, 0x16, 0xa2, 0xf9, 0x40, 0xaa, 0x5c, 0x7a, 0xca, 0xf5, 0x31, 0x2c, 0xe3, 0x33, 0xbe, - 0xf9, 0x5b, 0x34, 0x23, 0x9c, 0x20, 0xba, 0xfd, 0xba, 0xe8, 0x4b, 0x11, 0x30, 0x32, 0x91, 0x8d, - 0x2c, 0x82, 0x47, 0x0f, 0xf6, 0x5a, 0xe9, 0x01, 0x92, 0x17, 0xb3, 0x32, 0x14, 0x7d, 0x29, 0x52, - 0x09, 0x11, 0xf7, 0x43, 0x15, 0x34, 0x66, 0x7f, 0xc7, 0xae, 0x91, 0x4b, 0x03, 0xd4, 0x04, 0x00, - 0x79, 0xa9, 0xed, 0xed, 0xc5, 0x97, 0x50, 0x91, 0xfa, 0x72, 0x2c, 0x10, 0x09, 0x19, 0x17, 0xf1, - 0xe7, 0x35, 0xf9, 0x97, 0x7e, 0xa3, 0x50, 0x5a, 0xc3, 0xfe, 0xa2, 0xce, 0x2d, 0x99, 0x4b, 0xc7, - 0xd2, 0x57, 0x8f, 0x90, 0x30, 0xb0, 0x9d, 0xe0, 0x91, 0x7f, 0x6b, 0xb8, 0x2b, 0x1e, 0x88, 0x84, - 0xa2, 0x2d, 0x15, 0xde, 0x66, 0x35, 0x90, 0x48, 0x56, 0xbe, 0x14, 0x48, 0x24, 0xd5, 0x0a, 0x6f, - 0x4b, 0x34, 0x91, 0xac, 0x8c, 0x45, 0x43, 0x89, 0x0a, 0x6f, 0x2c, 0x1e, 0x8e, 0xc6, 0xc3, 0xc9, - 0x9d, 0x8a, 0xd1, 0xaf, 0xf8, 0x0a, 0x12, 0x5b, 0x02, 0x2f, 0xaf, 0x6c, 0x89, 0x25, 0x77, 0xd6, - 0xb4, 0x36, 0x6f, 0x07, 0x06, 0x45, 0xfd, 0x95, 0x9f, 0xd6, 0xe4, 0xd5, 0x7e, 0x87, 0x6a, 0x69, - 0x69, 0x4b, 0xe0, 0xe5, 0x4a, 0x15, 0x17, 0x56, 0x6e, 0x69, 0x6d, 0xde, 0x5e, 0x09, 0x01, 0xcc, - 0x2a, 0xf4, 0xfd, 0x47, 0xd2, 0x17, 0xcf, 0xd0, 0x20, 0x4f, 0xc4, 0x13, 0xd5, 0x74, 0x83, 0x70, - 0xe8, 0x46, 0x7c, 0x15, 0x4d, 0x4d, 0xb0, 0x75, 0xa8, 0x53, 0x9b, 0x03, 0x3b, 0xe9, 0x0b, 0xa6, - 0x46, 0x4d, 0x6e, 0xf0, 0x67, 0x55, 0x49, 0x8f, 0xb3, 0xd8, 0x8e, 0xc4, 0xb5, 0xe7, 0xd0, 0x01, - 0xfd, 0x6c, 0xcf, 0xe8, 0x91, 0x9b, 0x70, 0x4f, 0xd3, 0x87, 0xdb, 0xf4, 0xf3, 0xfb, 0xf4, 0xce, - 0xb3, 0xfa, 0xa5, 0x1e, 0xf8, 0xbc, 0xf1, 0x4e, 0x61, 0xe9, 0x12, 0xbd, 0x73, 0xcf, 0xa8, 0x76, - 0x4a, 0xc9, 0xea, 0x4f, 0xfc, 0x47, 0x02, 0x9a, 0x65, 0x14, 0x6d, 0x8c, 0x44, 0x54, 0x35, 0xa4, - 0x86, 0xb8, 0x2b, 0x22, 0x04, 0x57, 0xf5, 0x3b, 0xc3, 0x48, 0x51, 0x6e, 0xbf, 0x5b, 0x69, 0x45, - 0x65, 0x32, 0xdc, 0xa2, 0x56, 0xd0, 0xfb, 0x1e, 0xc4, 0xa8, 0xeb, 0xeb, 0xd2, 0x3f, 0xeb, 0x80, - 0x31, 0xe2, 0x03, 0x95, 0xbe, 0x0f, 0x3d, 0x99, 0x19, 0xea, 0xcb, 0xbc, 0x3f, 0x38, 0x7a, 0xec, - 0x23, 0xfd, 0x6c, 0x8f, 0x7e, 0xf9, 0x30, 0x8c, 0x50, 0x3f, 0x74, 0x60, 0xe4, 0x9d, 0x0f, 0xdd, - 0x86, 0xef, 0x3c, 0x0e, 0xf1, 0xbf, 0x0a, 0x68, 0x9e, 0x59, 0x93, 0x0c, 0x37, 0x87, 0x5f, 0x21, - 0x76, 0xab, 0x0d, 0xdb, 0xe2, 0x6a, 0x60, 0x5b, 0xb4, 0x39, 0x44, 0x8d, 0x12, 0x34, 0xb4, 0x75, - 0x6e, 0x58, 0xe9, 0x35, 0x81, 0x9f, 0x96, 0x09, 0x51, 0x99, 0xdc, 0x16, 0x57, 0x13, 0x18, 0xa4, - 0x02, 0x22, 0xab, 0x51, 0x74, 0x26, 0xf9, 0xa7, 0x46, 0xdf, 0xea, 0xd4, 0xdb, 0x86, 0xcd, 0xe9, - 0x71, 0xd9, 0x19, 0x31, 0x8f, 0xbc, 0x71, 0x20, 0x35, 0x78, 0x00, 0xe6, 0x99, 0x39, 0xfe, 0x99, - 0xde, 0xb9, 0x27, 0xdd, 0xff, 0x26, 0xec, 0x14, 0xb0, 0xd5, 0xd1, 0x63, 0x1f, 0x99, 0x39, 0xc2, - 0x06, 0x06, 0x1f, 0x5c, 0xa2, 0xe4, 0x1e, 0xa4, 0xb8, 0x5f, 0x40, 0x77, 0x25, 0xb6, 0x87, 0x21, - 0x41, 0xd5, 0x2f, 0xc2, 0xc9, 0x6d, 0x6b, 0xa2, 0xc1, 0x40, 0x73, 0x63, 0x32, 0x1a, 0xc7, 0xcc, - 0x73, 0x12, 0x21, 0xd3, 0xf5, 0x9a, 0xbc, 0xc6, 0xef, 0x0e, 0x25, 0x55, 0xe9, 0x37, 0x6f, 0x64, - 0x8e, 0x9c, 0x4b, 0xf7, 0x76, 0xa5, 0x7b, 0x2f, 0xea, 0xbd, 0x97, 0xf5, 0xbe, 0xb7, 0xf4, 0xdd, - 0x17, 0x0c, 0x1f, 0x14, 0x7e, 0x40, 0x90, 0x01, 0xd7, 0xbd, 0x2f, 0xf1, 0xa4, 0x80, 0xee, 0xb4, - 0xd4, 0x36, 0xee, 0x4c, 0x24, 0xd5, 0x96, 0x86, 0x68, 0x28, 0x41, 0xa3, 0x5d, 0x93, 0x18, 0x7e, - 0x6e, 0x30, 0xd2, 0x2a, 0x18, 0xcb, 0xf6, 0xd6, 0x2d, 0x6a, 0x65, 0x82, 0x14, 0x7b, 0xd7, 0x35, - 0xe2, 0x63, 0xf6, 0xc4, 0xc9, 0xba, 0x80, 0xda, 0x12, 0x8d, 0x34, 0xaa, 0x49, 0xe3, 0x09, 0x45, - 0x43, 0x34, 0x64, 0x1f, 0x25, 0x0c, 0xd1, 0xed, 0x03, 0xe2, 0x21, 0x01, 0xcd, 0x09, 0x37, 0x45, - 0xa2, 0x71, 0xd5, 0xe8, 0x2f, 0xc1, 0xad, 0x2c, 0x8d, 0x1b, 0x47, 0x32, 0x9d, 0xe6, 0x82, 0x93, - 0x2a, 0x60, 0xa0, 0xe6, 0xa0, 0x58, 0x1e, 0xd5, 0x91, 0x4b, 0x67, 0x32, 0x97, 0x8e, 0x65, 0x0d, - 0x27, 0x57, 0x57, 0xe2, 0x2e, 0x01, 0xdd, 0x11, 0xdd, 0xbe, 0x21, 0x9a, 0x0c, 0x34, 0x6f, 0x8c, - 0xc4, 0xd5, 0x40, 0x68, 0x67, 0x6d, 0xb4, 0x35, 0x92, 0x24, 0x16, 0x9b, 0x29, 0xb0, 0x7b, 0x4e, - 0xf5, 0xd2, 0x83, 0xd1, 0xed, 0x95, 0x49, 0x5c, 0x5a, 0xd9, 0x0a, 0xc5, 0x95, 0x41, 0x5c, 0x5e, - 0x01, 0x4c, 0xd6, 0x4b, 0x0b, 0xbd, 0x46, 0x28, 0xb1, 0xf4, 0x91, 0xcb, 0xa3, 0x7b, 0x0f, 0x2a, - 0x4e, 0x7d, 0x89, 0x9f, 0x0b, 0xe8, 0xae, 0x96, 0xc0, 0xcb, 0x7c, 0x45, 0x83, 0x1a, 0x0f, 0xaa, - 0x91, 0x24, 0xc6, 0xa3, 0xc9, 0x64, 0x24, 0x6f, 0x08, 0x9a, 0x7c, 0x50, 0xf0, 0xbb, 0xc3, 0x49, - 0x71, 0xcc, 0x0a, 0xad, 0x43, 0x8a, 0x19, 0xb5, 0x15, 0xb4, 0x88, 0x52, 0x06, 0x89, 0xfa, 0x45, - 0xd9, 0x58, 0xdb, 0x90, 0x31, 0x48, 0x83, 0x2c, 0x30, 0x0d, 0x11, 0x98, 0x74, 0xdf, 0x59, 0xa0, - 0x2a, 0xbd, 0xf3, 0xb8, 0xbe, 0xab, 0x37, 0xdd, 0xf7, 0x0e, 0xef, 0xef, 0xae, 0xb8, 0x0f, 0x47, - 0xd4, 0x04, 0x34, 0x93, 0xe3, 0x14, 0xa4, 0x9a, 0x30, 0xb5, 0x12, 0x32, 0x9f, 0x5f, 0x6b, 0xf2, - 0xf3, 0x7e, 0x47, 0x00, 0xa9, 0xd6, 0xc2, 0xd1, 0x60, 0x26, 0x84, 0xa1, 0x59, 0xe6, 0xe0, 0xc8, - 0xd7, 0xf4, 0xfd, 0x47, 0x52, 0x37, 0xf6, 0x67, 0xce, 0x6b, 0x8a, 0x63, 0xd7, 0xe2, 0x9f, 0x09, - 0x68, 0x0e, 0xee, 0xa5, 0x29, 0x8c, 0x05, 0x01, 0xe6, 0x0e, 0xd4, 0x12, 0xdd, 0x11, 0x68, 0x26, - 0x63, 0x9b, 0x42, 0xc6, 0x46, 0xdc, 0x3f, 0xfd, 0xb9, 0x00, 0xa5, 0x17, 0x59, 0x04, 0x48, 0xf6, - 0x50, 0x86, 0xc8, 0xce, 0xfa, 0x67, 0x1d, 0x96, 0xc3, 0xe0, 0xf2, 0x1e, 0x1a, 0xc8, 0xb3, 0xf7, - 0x03, 0xbd, 0xf7, 0x02, 0xa6, 0xab, 0x78, 0x44, 0x4d, 0xaa, 0x89, 0xd4, 0x40, 0x5f, 0xfa, 0xea, - 0x05, 0x7d, 0x4f, 0xb7, 0x9d, 0x82, 0x96, 0x31, 0x36, 0x9b, 0xeb, 0xf3, 0x62, 0x0b, 0x7f, 0x9f, - 0x9a, 0xca, 0x4c, 0xe4, 0x15, 0xfc, 0x7d, 0x6a, 0x01, 0x77, 0x59, 0xc2, 0x2b, 0x63, 0xbd, 0x54, - 0x4d, 0x2c, 0x91, 0x50, 0xb5, 0x79, 0x0f, 0x9a, 0xc6, 0x44, 0xc2, 0x99, 0xe6, 0x3d, 0xa8, 0x98, - 0xbb, 0x01, 0xd9, 0xec, 0x80, 0x2b, 0xb8, 0xe4, 0xc0, 0xd3, 0x59, 0xe0, 0x8b, 0xf9, 0x5c, 0x6a, - 0x60, 0x31, 0xd3, 0x75, 0x3d, 0xdd, 0x76, 0x9e, 0x66, 0x01, 0x26, 0x21, 0x4f, 0xb9, 0x9c, 0xbd, - 0x17, 0x1c, 0x92, 0x8c, 0xcf, 0x20, 0x6c, 0xe2, 0x8f, 0x34, 0xf9, 0x55, 0x7b, 0x22, 0xf1, 0x6d, - 0x7c, 0x7e, 0xa2, 0x2c, 0xbf, 0x07, 0xa2, 0x5f, 0x24, 0x79, 0x8b, 0x0e, 0x1d, 0x48, 0x0d, 0xf7, - 0xe8, 0xbd, 0x17, 0x46, 0xfa, 0xcf, 0xc1, 0x7a, 0x8c, 0xbe, 0x76, 0x21, 0x73, 0xe3, 0x23, 0x2f, - 0xbd, 0x06, 0x71, 0xf2, 0x98, 0x37, 0x33, 0xd4, 0x9e, 0x1a, 0xba, 0xc6, 0xf3, 0x61, 0xaf, 0x4b, - 0x2a, 0xf2, 0x7f, 0x22, 0xa0, 0x3b, 0xb6, 0xb4, 0x6e, 0xdd, 0xaa, 0xc6, 0x15, 0x9a, 0x32, 0x58, - 0xc1, 0x3c, 0x86, 0xbc, 0x2a, 0x9c, 0x52, 0x73, 0x44, 0xd0, 0xe4, 0xc3, 0x82, 0xdf, 0x09, 0x42, - 0x7a, 0x05, 0x0a, 0x2b, 0x59, 0xaa, 0xe1, 0x4a, 0x92, 0x2e, 0x9c, 0x9e, 0x70, 0xd4, 0xc1, 0x8e, - 0x3b, 0xe1, 0x78, 0x32, 0xa5, 0x4f, 0x4e, 0xb8, 0xa3, 0x2e, 0x73, 0x60, 0x2f, 0xd0, 0xee, 0x48, - 0xff, 0x39, 0x38, 0x0e, 0xf5, 0xce, 0xe3, 0x7c, 0x57, 0xc6, 0x5c, 0xbc, 0x4b, 0x97, 0x2c, 0x51, - 0x9c, 0x06, 0x24, 0x9e, 0x05, 0x8e, 0xb4, 0x3a, 0x1e, 0x08, 0xaa, 0x5b, 0x5b, 0x9b, 0x37, 0xd0, - 0x20, 0xdb, 0x61, 0xcc, 0x3f, 0x83, 0x24, 0x99, 0xef, 0x94, 0x9a, 0xad, 0x9a, 0x1c, 0xf4, 0xbb, - 0x43, 0x49, 0xab, 0x30, 0x3f, 0x6a, 0xa2, 0x75, 0x95, 0x49, 0xb3, 0xb2, 0x32, 0xa1, 0x06, 0x2b, - 0xa8, 0x6c, 0x46, 0xc2, 0xaa, 0x02, 0xe5, 0x78, 0x1b, 0xa2, 0x21, 0xef, 0x68, 0x5b, 0x9b, 0xbe, - 0x77, 0x30, 0xdd, 0xdb, 0x66, 0x10, 0x91, 0xe2, 0xfe, 0x09, 0xb1, 0x5d, 0x40, 0x25, 0x89, 0x60, - 0x20, 0x52, 0x1f, 0x49, 0xaa, 0xf1, 0x1d, 0x81, 0xe6, 0xd2, 0x99, 0x64, 0x64, 0x2f, 0x6a, 0xf2, - 0x0b, 0x7e, 0x4b, 0x85, 0xb4, 0x16, 0xff, 0xaa, 0x0c, 0xd3, 0x9f, 0x15, 0x59, 0x88, 0x91, 0x7e, - 0xb7, 0x2d, 0xfd, 0xc9, 0x3e, 0xf8, 0x1e, 0xfe, 0xaf, 0xe7, 0x4d, 0x83, 0x97, 0x60, 0xd1, 0xe0, - 0xbc, 0x66, 0xd9, 0xfe, 0xa5, 0x4b, 0x14, 0x4b, 0xe7, 0xf8, 0xdc, 0x9d, 0xd9, 0x12, 0x78, 0x19, - 0x13, 0x69, 0x03, 0xc6, 0xdb, 0x04, 0x53, 0xf1, 0xcf, 0x22, 0xc3, 0xf9, 0x8d, 0x26, 0x37, 0xf9, - 0x1d, 0x01, 0xa4, 0xf5, 0x78, 0x8d, 0xf0, 0x75, 0xb2, 0x32, 0xc6, 0xca, 0x81, 0xd5, 0xc1, 0x92, - 0x50, 0xa1, 0xf5, 0xe0, 0xa1, 0xd4, 0x67, 0x6f, 0xf3, 0x6b, 0xc2, 0x73, 0x3a, 0x73, 0x37, 0x1f, - 0x5d, 0xb2, 0x44, 0x71, 0xfc, 0x8c, 0x78, 0x42, 0x40, 0xd3, 0x08, 0x8e, 0x6e, 0x8c, 0xe1, 0xcb, - 0xfe, 0x73, 0x6a, 0x3c, 0x5a, 0x3a, 0x7b, 0xcc, 0x4c, 0xfd, 0xbf, 0xd0, 0xe4, 0x0d, 0xfe, 0xec, - 0x76, 0x92, 0x0c, 0xdc, 0xb9, 0x35, 0x56, 0xb9, 0x35, 0x1e, 0x6d, 0xa9, 0x7c, 0x45, 0x8d, 0x47, - 0xe9, 0xa1, 0xc7, 0x9f, 0x0c, 0xb7, 0x86, 0x3b, 0xd3, 0x1f, 0x9d, 0x49, 0xf7, 0x76, 0x79, 0xf9, - 0x73, 0x90, 0x6c, 0x77, 0x97, 0x92, 0xdd, 0x27, 0x1e, 0xdf, 0x6c, 0xab, 0x50, 0x2c, 0x6f, 0xc5, - 0x64, 0x18, 0x0a, 0x95, 0xde, 0x49, 0x96, 0x50, 0xd5, 0xe4, 0x2d, 0x7e, 0x17, 0x10, 0xe9, 0x29, - 0xee, 0xbc, 0x08, 0xe1, 0x9a, 0xca, 0xc0, 0x56, 0xc2, 0x9a, 0x43, 0xa1, 0x0a, 0x53, 0x48, 0xef, - 0x3c, 0x9b, 0x3e, 0xda, 0x67, 0x60, 0x9d, 0x7d, 0xa3, 0xf1, 0xa1, 0xe1, 0xf2, 0x05, 0xf1, 0x3d, - 0x2c, 0xe8, 0xd9, 0xab, 0xe8, 0x15, 0xa5, 0x94, 0x0c, 0x91, 0x44, 0xbb, 0x75, 0x87, 0x72, 0x1d, - 0x25, 0xbd, 0xb1, 0x80, 0x2c, 0x9e, 0x1a, 0x38, 0x6b, 0xde, 0x5b, 0xdc, 0x46, 0xe9, 0xfe, 0x11, - 0xf1, 0x9f, 0x0a, 0xa8, 0xcc, 0xa1, 0x76, 0x55, 0x20, 0xdc, 0xdc, 0x1a, 0x57, 0x4b, 0xef, 0x1a, - 0x47, 0x36, 0xf1, 0x16, 0x4d, 0xfe, 0x8d, 0x3f, 0x47, 0x27, 0xd2, 0x1a, 0x97, 0x89, 0x6c, 0x85, - 0x7a, 0x4a, 0xd9, 0x90, 0x8c, 0x54, 0x3f, 0x74, 0x00, 0x0c, 0xeb, 0xae, 0x93, 0xc9, 0xf1, 0x25, - 0x71, 0xb7, 0x07, 0x79, 0x8d, 0xea, 0xd5, 0xb1, 0xd6, 0x2c, 0x21, 0x9c, 0x5c, 0x03, 0x4a, 0xcb, - 0xc8, 0xea, 0x7f, 0x22, 0x68, 0xf2, 0x15, 0xc1, 0x3f, 0x26, 0xb8, 0xd4, 0xcd, 0x5f, 0x2c, 0x9a, - 0x62, 0xad, 0x13, 0xbc, 0x5c, 0x94, 0xaf, 0x6e, 0xd8, 0xb8, 0xe8, 0x1b, 0xbc, 0x61, 0x8c, 0x39, - 0x60, 0xf1, 0xaf, 0x05, 0x34, 0xdb, 0xca, 0xa2, 0x6b, 0x63, 0xad, 0x70, 0xb0, 0xcc, 0x21, 0x53, - 0xef, 0x15, 0x34, 0xf9, 0x2d, 0xc1, 0xef, 0x02, 0x24, 0xfd, 0x91, 0x73, 0xf9, 0x04, 0x0e, 0x97, - 0x60, 0xac, 0xf5, 0x6b, 0x9c, 0x2f, 0x2e, 0xe3, 0x72, 0x98, 0xd7, 0x5a, 0xb5, 0x05, 0xe6, 0x35, - 0x37, 0xc7, 0xbc, 0x18, 0x50, 0xf6, 0xbc, 0x58, 0xf9, 0x04, 0xe6, 0xd5, 0xa2, 0xb6, 0x7c, 0x73, - 0xf3, 0x62, 0xdf, 0xaf, 0xc6, 0xc7, 0x22, 0x0a, 0xf8, 0xc7, 0xd0, 0xec, 0x48, 0xf3, 0x40, 0x66, - 0xb2, 0xd5, 0x3b, 0x85, 0xb2, 0x75, 0x74, 0x29, 0xfa, 0x5f, 0x02, 0x5a, 0xe0, 0xfa, 0x8d, 0xdb, - 0x43, 0xf5, 0xf7, 0x73, 0x8b, 0xe9, 0xa2, 0xdc, 0xe6, 0xbc, 0x67, 0x13, 0xc6, 0xe8, 0xf4, 0xc0, - 0xce, 0x90, 0x79, 0x80, 0xbd, 0xb9, 0xf8, 0x21, 0xa9, 0xcf, 0xce, 0x0b, 0x36, 0xfd, 0xd9, 0xeb, - 0xc2, 0xb7, 0xa8, 0x40, 0xfb, 0xb2, 0xa6, 0x22, 0xee, 0x57, 0x0a, 0x01, 0x5c, 0x99, 0xcc, 0x81, - 0x2b, 0xc5, 0x06, 0x38, 0x96, 0xa7, 0x6d, 0xfa, 0xb6, 0xd7, 0x84, 0x1c, 0x0a, 0xb7, 0xc6, 0x6f, - 0x4e, 0xe1, 0xf6, 0x65, 0x4d, 0xa1, 0x3f, 0xbf, 0x34, 0x54, 0x2e, 0x38, 0x6a, 0xde, 0xf6, 0x08, - 0x2e, 0xaa, 0xb7, 0x5f, 0x7f, 0x0b, 0xaa, 0xb7, 0x2f, 0x6b, 0x8a, 0xfc, 0x85, 0xa5, 0x6d, 0xef, - 0x16, 0x94, 0xff, 0xdc, 0xa6, 0x85, 0xfb, 0x67, 0x63, 0x68, 0xe1, 0x8e, 0xfd, 0xa0, 0xb4, 0x70, - 0xfc, 0x4c, 0x5c, 0x14, 0x72, 0xff, 0xef, 0x38, 0x15, 0x72, 0x1f, 0xdd, 0x3e, 0x0a, 0x39, 0x40, - 0xa5, 0x86, 0xf2, 0x9f, 0x8d, 0xa5, 0x99, 0x7b, 0x7f, 0x4c, 0xcd, 0x5c, 0x6e, 0xd1, 0xf7, 0xbb, - 0xd4, 0xda, 0x0d, 0x8e, 0xa1, 0xb5, 0xcb, 0x3d, 0xd2, 0xef, 0x59, 0xa3, 0x77, 0x72, 0x1c, 0x1a, - 0xbd, 0xdc, 0x13, 0x78, 0x52, 0x93, 0x57, 0xe4, 0xd6, 0xf6, 0xcd, 0xcf, 0xad, 0xed, 0xcb, 0xad, - 0xdf, 0xeb, 0xce, 0xa9, 0xdf, 0x7b, 0xee, 0x1b, 0xd6, 0xef, 0x51, 0xb2, 0xfc, 0xd3, 0x3b, 0xca, - 0x7f, 0xe6, 0xac, 0xea, 0xfb, 0xb7, 0xe3, 0x50, 0xf5, 0xf5, 0xfe, 0x10, 0x55, 0x7d, 0x8c, 0x8b, - 0xff, 0x2c, 0x97, 0xce, 0xef, 0x64, 0x6e, 0x9d, 0xdf, 0x6f, 0xbe, 0x5d, 0x9d, 0xdf, 0x97, 0x35, - 0xc5, 0xfe, 0x49, 0x84, 0x27, 0x5e, 0x2e, 0xfe, 0x91, 0xeb, 0xff, 0x36, 0xf2, 0xae, 0x0e, 0x53, - 0xd9, 0xd3, 0xaf, 0x4a, 0xde, 0xd5, 0xc1, 0x0b, 0xbe, 0x0d, 0x59, 0xca, 0xbf, 0xdc, 0xfe, 0x0e, - 0x1b, 0x78, 0xb5, 0xe2, 0x34, 0x16, 0xfe, 0x6c, 0x82, 0x6a, 0x45, 0x9b, 0x5f, 0x46, 0xb5, 0xe9, - 0x05, 0x31, 0x9d, 0xd3, 0x1e, 0x32, 0x2f, 0x88, 0xe2, 0x1c, 0x2e, 0x7b, 0x16, 0xed, 0xe1, 0x8c, - 0x89, 0x6b, 0x0f, 0xc7, 0x75, 0x83, 0x14, 0x7f, 0xe4, 0x37, 0xc8, 0x5b, 0x2e, 0x7a, 0xc9, 0x3b, - 0xc6, 0xa1, 0x0d, 0x38, 0xf9, 0xc3, 0xd4, 0x5a, 0x9a, 0xdc, 0xc8, 0x51, 0x7d, 0xd9, 0x9f, 0x53, - 0x7d, 0x09, 0x4a, 0xc2, 0xdf, 0x7e, 0x37, 0xea, 0x4b, 0x5e, 0x50, 0xcb, 0xa1, 0xc9, 0x3c, 0x98, - 0xad, 0xc9, 0x04, 0xd5, 0xe1, 0xf6, 0x6f, 0x5b, 0x93, 0x69, 0x0e, 0xaf, 0x20, 0x4b, 0xa9, 0xf9, - 0x81, 0x9b, 0x52, 0x73, 0x36, 0x19, 0xd9, 0x8e, 0xef, 0x4e, 0xa9, 0x69, 0xf2, 0xf5, 0xf6, 0x49, - 0x13, 0x50, 0x70, 0xde, 0xf9, 0x03, 0x52, 0x70, 0xbe, 0xef, 0xae, 0xe0, 0x2c, 0x65, 0xd8, 0xf8, - 0x1d, 0x28, 0x38, 0x2d, 0x27, 0xa4, 0x9b, 0xb2, 0xf3, 0x4a, 0x4e, 0x65, 0xe7, 0x5d, 0x64, 0xb8, - 0x89, 0xef, 0x4a, 0xd9, 0x69, 0xe2, 0xe7, 0xcf, 0x72, 0xe9, 0x3d, 0xff, 0x75, 0x6e, 0xbd, 0x67, - 0xd9, 0x38, 0x38, 0xdd, 0xcb, 0xdf, 0xa9, 0xde, 0x93, 0x67, 0x0b, 0xb9, 0x54, 0xa0, 0xff, 0x61, - 0x2c, 0xed, 0xdf, 0xb9, 0x1f, 0xb4, 0xf6, 0xcf, 0xe4, 0xd3, 0x6e, 0x6a, 0xc0, 0xff, 0x30, 0x96, - 0x1a, 0xf0, 0xdc, 0x0f, 0x5a, 0x0d, 0xe8, 0x3a, 0x41, 0x36, 0x10, 0x31, 0x80, 0x0a, 0x5b, 0xa2, - 0xa1, 0xd6, 0x66, 0xb5, 0x74, 0x1e, 0x65, 0x48, 0x59, 0x6a, 0xae, 0xb5, 0xa4, 0x96, 0xe4, 0xf8, - 0xae, 0xd4, 0x64, 0xbf, 0x9f, 0x82, 0x4b, 0x5e, 0x18, 0x1e, 0x0b, 0xc8, 0x3b, 0x72, 0xe3, 0x62, - 0xe6, 0xfc, 0x10, 0x96, 0x70, 0x4e, 0x1c, 0xa3, 0xba, 0x37, 0x0a, 0x29, 0x36, 0xa1, 0x49, 0x2f, - 0xa9, 0x5b, 0xb6, 0x45, 0xa3, 0xdb, 0x4b, 0xe7, 0x93, 0x6f, 0xcc, 0x71, 0x78, 0x8b, 0x8e, 0xab, - 0xd7, 0x46, 0x43, 0x6a, 0xcd, 0x12, 0x2c, 0x28, 0xb2, 0x06, 0x92, 0x8f, 0x7d, 0xc5, 0x4b, 0x4b, - 0x40, 0x86, 0xb2, 0x44, 0xaf, 0x63, 0xc0, 0x62, 0x0c, 0x72, 0x2a, 0x82, 0xd6, 0x8d, 0xe4, 0x54, - 0x5c, 0x40, 0x94, 0x69, 0x4f, 0x69, 0xf2, 0x4a, 0x7f, 0x56, 0x95, 0xb4, 0x2c, 0x35, 0xd4, 0x01, - 0xa2, 0x5d, 0xad, 0x0c, 0x46, 0x54, 0xe8, 0x54, 0x3f, 0xb8, 0x3b, 0x7d, 0xe4, 0x32, 0x74, 0x5d, - 0x91, 0x1a, 0xd8, 0x4f, 0xd7, 0x96, 0xa4, 0x44, 0x54, 0xb2, 0x3a, 0x11, 0x33, 0x02, 0x9a, 0xab, - 0xbe, 0x1c, 0x53, 0x23, 0xa1, 0xc0, 0x96, 0x66, 0x15, 0x5f, 0x39, 0x1b, 0xa8, 0x26, 0xab, 0xb6, - 0x35, 0x19, 0xdd, 0xba, 0xb5, 0xf4, 0x5e, 0x3a, 0xe1, 0x6c, 0xd2, 0xe6, 0x28, 0x1b, 0xf2, 0xc2, - 0xf9, 0x73, 0xf6, 0x23, 0x05, 0x52, 0xc3, 0x6f, 0xe9, 0x1d, 0x9d, 0x99, 0xc1, 0xf3, 0x20, 0x83, - 0xa5, 0xfb, 0xce, 0x62, 0x6c, 0xe9, 0x69, 0xf7, 0xc6, 0xa2, 0xa1, 0x5b, 0xc3, 0xdd, 0xb8, 0x69, - 0x38, 0xd2, 0xe4, 0xe5, 0xb3, 0x3a, 0x1a, 0xf8, 0x60, 0xf0, 0xb0, 0xd4, 0x70, 0x4f, 0xe6, 0xed, - 0x8f, 0xd3, 0x07, 0xce, 0x79, 0xb7, 0x87, 0x9b, 0x9b, 0x59, 0xe8, 0x5b, 0xbd, 0x6d, 0xb8, 0x72, - 0xe9, 0x12, 0x25, 0xe7, 0x00, 0xc4, 0xcb, 0x02, 0x12, 0x23, 0xea, 0x4b, 0x0d, 0xd1, 0x50, 0x23, - 0x1c, 0x1e, 0xa0, 0x0c, 0xbb, 0x6f, 0x1c, 0xac, 0x6b, 0x8b, 0x26, 0xff, 0xd2, 0xef, 0xd0, 0x58, - 0xaa, 0xb1, 0x97, 0xdd, 0x1a, 0xee, 0x4e, 0x1f, 0xbd, 0x1c, 0x8b, 0x86, 0xf4, 0xa1, 0xc1, 0xcc, - 0x87, 0xfb, 0xf4, 0xb3, 0x3d, 0xa9, 0xeb, 0x1d, 0xa9, 0xeb, 0xfb, 0xf4, 0x43, 0x07, 0xd2, 0x5d, - 0x74, 0x2f, 0x6a, 0x65, 0x36, 0x72, 0xef, 0x12, 0x16, 0xf1, 0xd3, 0xa1, 0x7b, 0x43, 0xd5, 0x9d, - 0x5b, 0x0b, 0x2b, 0xcd, 0x03, 0x2c, 0x98, 0xb8, 0xaa, 0x9b, 0x3d, 0x94, 0x79, 0x2f, 0x0f, 0x2d, - 0x70, 0xfd, 0xc6, 0xed, 0xa1, 0xea, 0x0e, 0x7f, 0x35, 0x55, 0x77, 0xcd, 0x03, 0x9a, 0x5c, 0x4e, - 0xdd, 0x53, 0xbd, 0xc6, 0x4b, 0x1a, 0x1b, 0xd8, 0x0f, 0x24, 0x03, 0xa3, 0xef, 0x58, 0x1e, 0xba, - 0x87, 0x6e, 0x54, 0x02, 0x46, 0x56, 0x47, 0x82, 0x4c, 0x37, 0xd0, 0xfb, 0x18, 0xd3, 0xcb, 0x6f, - 0xb0, 0x3f, 0x07, 0xf8, 0x06, 0xee, 0x99, 0xa7, 0x04, 0xee, 0xb2, 0x08, 0x9b, 0x0a, 0x37, 0x79, - 0xf3, 0xb6, 0x98, 0x80, 0xe6, 0xd4, 0x5f, 0xc5, 0x48, 0x96, 0x02, 0x8c, 0x9f, 0xa9, 0x95, 0xd2, - 0x57, 0x4e, 0x83, 0x43, 0x7d, 0x79, 0xe6, 0xed, 0x4b, 0x7a, 0xd7, 0x7e, 0xcc, 0xc7, 0x48, 0xa8, - 0xa9, 0x9d, 0xad, 0x91, 0x64, 0xf8, 0x8b, 0xb6, 0x5d, 0x09, 0xb5, 0x79, 0x6b, 0x16, 0x28, 0x2f, - 0x56, 0x13, 0x30, 0xa3, 0x7e, 0x91, 0x79, 0x1d, 0xad, 0x7e, 0x59, 0x93, 0x5b, 0x51, 0xc2, 0x3f, - 0x9e, 0x35, 0x92, 0x1e, 0x74, 0xa1, 0x9a, 0x74, 0xef, 0xc5, 0xf4, 0xc5, 0x33, 0xf6, 0x21, 0x03, - 0x0e, 0x58, 0xa9, 0xc9, 0xf8, 0xb2, 0xef, 0xcf, 0x04, 0xb4, 0x30, 0xf7, 0x57, 0x6f, 0x0b, 0x3a, - 0xf2, 0xfd, 0xcb, 0x45, 0x68, 0x6e, 0xe3, 0xce, 0x48, 0xf0, 0x27, 0x93, 0xcf, 0x57, 0x31, 0xf9, - 0x1c, 0xcf, 0x65, 0xf2, 0x09, 0xe3, 0xbb, 0xa6, 0x93, 0xc9, 0x67, 0xf5, 0x84, 0x4d, 0x3e, 0x8f, - 0x79, 0x6b, 0x65, 0xfd, 0xfa, 0x35, 0x53, 0xff, 0x41, 0x2a, 0x72, 0x1b, 0x82, 0x8e, 0xb8, 0x19, - 0x82, 0x5a, 0x34, 0x79, 0xb3, 0xcd, 0x10, 0xb4, 0xf6, 0xeb, 0x19, 0x82, 0x6e, 0x0d, 0xbf, 0x9d, - 0x3e, 0x76, 0x3a, 0x7d, 0xa4, 0x13, 0x84, 0x91, 0x9f, 0xec, 0x42, 0xbf, 0x27, 0x76, 0xa1, 0xee, - 0x71, 0x78, 0x6c, 0x13, 0xf7, 0xe3, 0x1c, 0xb6, 0x9f, 0xc5, 0xe3, 0xb7, 0xfd, 0x24, 0xe3, 0xad, - 0x39, 0x4d, 0x3f, 0x27, 0xc6, 0x74, 0xd8, 0x0e, 0x6a, 0xf2, 0x8b, 0xee, 0xe6, 0x9d, 0x95, 0x5f, - 0xdb, 0xbc, 0x43, 0x46, 0xe8, 0x6a, 0xdd, 0x39, 0x3c, 0x2e, 0x7f, 0x6d, 0x62, 0x2c, 0xcb, 0x69, - 0xc1, 0xa9, 0xcc, 0x6d, 0xc1, 0xe1, 0x52, 0x44, 0x90, 0xf1, 0xfc, 0x64, 0xd0, 0xf9, 0xc9, 0xa0, - 0x33, 0x4e, 0x83, 0x8e, 0x45, 0x92, 0x9c, 0xf2, 0x2d, 0x58, 0x2c, 0xa6, 0x4e, 0xd4, 0x62, 0x31, - 0x2e, 0x93, 0xc3, 0xb4, 0x1f, 0xb9, 0xc9, 0xe1, 0x5f, 0xb8, 0x98, 0x1c, 0xa6, 0x93, 0x79, 0xdf, - 0x9e, 0x46, 0x85, 0x8b, 0x39, 0x8d, 0x0a, 0x90, 0xb5, 0x26, 0x82, 0xd9, 0x75, 0x0e, 0xa3, 0x42, - 0xed, 0xf8, 0x8c, 0x0a, 0xdf, 0x8a, 0x45, 0x41, 0xfc, 0xc1, 0x5a, 0x14, 0xee, 0xf8, 0x01, 0x5a, - 0x14, 0xce, 0x82, 0xa8, 0x8c, 0x2b, 0x1a, 0x93, 0x81, 0x78, 0xb2, 0x35, 0x46, 0x86, 0x0a, 0xb6, - 0xa3, 0xa4, 0x26, 0xab, 0x7e, 0x87, 0x6a, 0x6e, 0xa0, 0x09, 0x28, 0xe5, 0x87, 0xa9, 0x1f, 0x7c, - 0x2b, 0x35, 0x30, 0x48, 0x78, 0x17, 0x3e, 0x5f, 0x26, 0x3c, 0x50, 0x87, 0x0f, 0x8a, 0xff, 0x44, - 0x40, 0xa5, 0x7c, 0x31, 0xcd, 0x6c, 0xa4, 0x72, 0xee, 0xe7, 0xfb, 0x04, 0x4d, 0xfe, 0x43, 0xbf, - 0x2b, 0x94, 0xf4, 0xa2, 0x75, 0xcc, 0x95, 0x09, 0x5a, 0x69, 0x5f, 0x61, 0x98, 0x80, 0x7e, 0xb0, - 0x9f, 0xe6, 0x61, 0xfa, 0x2a, 0x93, 0x70, 0x1d, 0xc7, 0x0f, 0xde, 0x49, 0xfd, 0xfd, 0xb1, 0x9c, - 0xd4, 0x6f, 0x1b, 0x1b, 0x4e, 0xe9, 0xed, 0x68, 0xc3, 0xb9, 0xeb, 0xc7, 0x68, 0xc3, 0x29, 0xfb, - 0xb1, 0xdb, 0x70, 0xe6, 0xfc, 0x28, 0x6c, 0x38, 0x9c, 0x81, 0x65, 0xee, 0xb7, 0x6a, 0x60, 0x19, - 0xd3, 0xdc, 0x31, 0xef, 0x47, 0x6e, 0xee, 0x98, 0xff, 0x03, 0x36, 0x77, 0xfc, 0x52, 0x93, 0x37, - 0xa2, 0x46, 0x7f, 0x4e, 0xfd, 0xa3, 0x34, 0x4f, 0x3f, 0xd4, 0x9d, 0xee, 0x3b, 0x67, 0xab, 0x07, - 0x45, 0x93, 0x55, 0x3d, 0x6b, 0x18, 0x38, 0xce, 0xe6, 0xa1, 0x79, 0x2e, 0xbd, 0xfe, 0xfe, 0x98, - 0x37, 0x60, 0xe1, 0x32, 0x3d, 0xed, 0x3f, 0x58, 0xf3, 0xc6, 0x07, 0x79, 0x68, 0x3e, 0x1c, 0x56, - 0xae, 0xea, 0xe7, 0x5f, 0xd9, 0x2d, 0x1b, 0x8f, 0x69, 0x72, 0x29, 0x7f, 0x1f, 0x9d, 0x6c, 0x89, - 0x62, 0x34, 0xfe, 0x47, 0xb8, 0xff, 0x51, 0xc8, 0x0e, 0x68, 0xf6, 0x67, 0x82, 0x26, 0xff, 0x89, - 0x60, 0x86, 0x34, 0xfb, 0x44, 0xe0, 0x63, 0x9a, 0xb9, 0x2c, 0xe3, 0x57, 0x0b, 0x70, 0xa6, 0xf7, - 0x5f, 0x4f, 0x0d, 0x1e, 0xc0, 0xc2, 0x13, 0xc9, 0x81, 0x6b, 0xf7, 0x7e, 0xd4, 0x2f, 0x75, 0x8d, - 0xbc, 0xdb, 0x91, 0xe9, 0x69, 0x37, 0x82, 0xf3, 0x60, 0xd2, 0x7b, 0xab, 0xdf, 0x92, 0x99, 0xff, - 0xd3, 0x8f, 0xe0, 0x9d, 0x6d, 0xa6, 0xa7, 0xbd, 0x56, 0x06, 0x53, 0xb6, 0x25, 0x78, 0xda, 0xd3, - 0x9a, 0xbc, 0x1a, 0xad, 0xf4, 0x8f, 0xb1, 0xc8, 0xd2, 0x9d, 0x2e, 0x13, 0xe4, 0xa9, 0xcb, 0xf7, - 0x7e, 0x1e, 0x5a, 0xe0, 0xda, 0xcf, 0xed, 0x92, 0x49, 0xea, 0xab, 0x51, 0x15, 0xc1, 0x73, 0xa0, - 0xaa, 0x7b, 0xf8, 0xc0, 0x6b, 0x3f, 0x58, 0xc2, 0xba, 0xee, 0x41, 0x73, 0x56, 0xab, 0xc9, 0xef, - 0x83, 0xaa, 0x76, 0xd8, 0x6c, 0x86, 0x24, 0xca, 0x95, 0x69, 0x32, 0x7c, 0xa6, 0x56, 0x86, 0x19, - 0xa4, 0x06, 0x0f, 0xb3, 0x42, 0x92, 0x36, 0x39, 0x35, 0x74, 0x8e, 0x65, 0xe9, 0x85, 0x7f, 0xd3, - 0xc7, 0xae, 0x55, 0x78, 0xf5, 0xb3, 0xfb, 0x33, 0x6f, 0x5e, 0x60, 0xd6, 0x89, 0xac, 0x76, 0x9c, - 0x29, 0x70, 0xb5, 0x26, 0xd7, 0xa1, 0x1a, 0x7f, 0xae, 0x69, 0x4b, 0xf7, 0x40, 0x14, 0x21, 0x97, - 0x6d, 0xa3, 0x21, 0xeb, 0xfe, 0x7b, 0x1e, 0x9a, 0xeb, 0xdc, 0xc9, 0xef, 0xcf, 0xd1, 0x61, 0xc4, - 0xb4, 0xfb, 0xa1, 0x62, 0x38, 0xcb, 0x13, 0x92, 0x73, 0xa7, 0xa4, 0x79, 0x2e, 0xfb, 0xed, 0x16, - 0x40, 0xea, 0x42, 0x3e, 0x9a, 0xbb, 0x26, 0x9c, 0x70, 0xa7, 0x9b, 0x88, 0x9d, 0x6e, 0x1a, 0x34, - 0x79, 0x15, 0x4f, 0x37, 0x8f, 0xda, 0x0d, 0xcc, 0x5f, 0x3d, 0x02, 0xdf, 0xf3, 0xf6, 0x08, 0x7c, - 0x2b, 0x34, 0x79, 0x19, 0xef, 0x96, 0x7e, 0x9f, 0xfb, 0xf7, 0xc6, 0x70, 0x4e, 0xaf, 0xcf, 0x0e, - 0xc6, 0x57, 0xa5, 0xc9, 0xf7, 0x9a, 0x41, 0x28, 0xca, 0xec, 0x22, 0x97, 0x6b, 0x5c, 0xbe, 0xfa, - 0xec, 0xb8, 0x7c, 0xd0, 0x15, 0xd3, 0xef, 0xda, 0xbb, 0x72, 0x0d, 0xd1, 0x57, 0x7d, 0x56, 0xd0, - 0xe4, 0xd3, 0x02, 0x3a, 0x21, 0xf8, 0x73, 0x6e, 0x85, 0xf4, 0x3b, 0x97, 0xbd, 0xfd, 0x8e, 0x22, - 0xc3, 0xfd, 0xbd, 0x07, 0xcd, 0x73, 0x19, 0xdf, 0xed, 0xc1, 0x26, 0x9e, 0xb7, 0x84, 0x89, 0x1b, - 0x3f, 0x9b, 0x98, 0xa7, 0xc9, 0x65, 0x94, 0x4d, 0x88, 0x96, 0xd0, 0x71, 0x7c, 0xe4, 0x4b, 0x9a, - 0x59, 0x25, 0xf7, 0x0a, 0x4d, 0x98, 0x3c, 0x3f, 0xf2, 0x38, 0x3c, 0x50, 0x6d, 0x24, 0x61, 0x0e, - 0x19, 0x81, 0x3e, 0x89, 0x0a, 0x55, 0xde, 0x45, 0x81, 0x64, 0xd0, 0xa7, 0x45, 0xd2, 0x1c, 0x3e, - 0x94, 0x89, 0x61, 0xef, 0x86, 0xcb, 0x97, 0x42, 0x81, 0xac, 0x06, 0x10, 0xcf, 0xb7, 0x60, 0x00, - 0xc9, 0x9b, 0xa8, 0x01, 0xe4, 0xe7, 0xdc, 0x89, 0x9a, 0x6f, 0x62, 0x86, 0x79, 0xa2, 0xce, 0xc8, - 0x71, 0x2e, 0x3a, 0xfb, 0x7a, 0xb1, 0x45, 0xfb, 0xe9, 0x44, 0xfb, 0xe1, 0xc8, 0x6c, 0x17, 0x3c, - 0x68, 0x5a, 0xa3, 0x1a, 0xdf, 0x11, 0x86, 0x3c, 0xfe, 0xc4, 0x5b, 0x73, 0x05, 0x2a, 0x8a, 0x47, - 0x9b, 0x21, 0x97, 0xbe, 0xc0, 0xbd, 0xd6, 0x61, 0x85, 0x92, 0x98, 0x80, 0x16, 0x5e, 0x5c, 0xc2, - 0x32, 0xea, 0xb3, 0x5a, 0x71, 0x39, 0x2a, 0xc4, 0x7f, 0x1b, 0x88, 0x4c, 0xa2, 0xaa, 0xd3, 0x22, - 0x69, 0x1a, 0xdf, 0xd4, 0x5b, 0x5f, 0xa7, 0xd0, 0x0a, 0xb1, 0x02, 0xe5, 0x05, 0xe2, 0x11, 0x8a, - 0xa7, 0x04, 0x19, 0xf0, 0x6f, 0x69, 0xba, 0x05, 0x3e, 0x10, 0x8f, 0x28, 0xb8, 0x58, 0x5c, 0x45, - 0xb2, 0x28, 0x06, 0xe3, 0x61, 0xb2, 0x98, 0x66, 0x58, 0xd6, 0xbb, 0xfd, 0x7c, 0xb9, 0x75, 0xa0, - 0xe9, 0x83, 0x07, 0x47, 0x6e, 0x42, 0xfe, 0x44, 0x06, 0x50, 0xed, 0xd7, 0xe4, 0xfb, 0xd1, 0xbd, - 0xfe, 0xec, 0x25, 0xb0, 0x36, 0xa4, 0xcc, 0x77, 0xc4, 0x83, 0x66, 0xaf, 0x56, 0x93, 0x1c, 0xa8, - 0xc1, 0x00, 0x1e, 0x41, 0x93, 0x82, 0xcd, 0xd1, 0xd6, 0x90, 0x71, 0x3e, 0xcf, 0x87, 0xc8, 0x4a, - 0x50, 0x26, 0x15, 0xa7, 0x06, 0x0f, 0x73, 0x07, 0xe2, 0x74, 0x8f, 0xc2, 0xaa, 0xc4, 0x47, 0x51, - 0x71, 0x20, 0x48, 0x4c, 0xd8, 0xc6, 0x7a, 0x91, 0x3c, 0xd2, 0x66, 0xa9, 0x34, 0x39, 0x35, 0x78, - 0x58, 0xdf, 0xdb, 0x37, 0xd2, 0xbf, 0xab, 0xbe, 0x4e, 0x31, 0xcb, 0xc5, 0x9d, 0xb0, 0x4d, 0x24, - 0xac, 0x2c, 0x2c, 0xdb, 0x0b, 0x9a, 0x2c, 0xfb, 0x8d, 0x42, 0xe9, 0xc1, 0xc0, 0x4b, 0x09, 0x2f, - 0x3f, 0x11, 0x70, 0x72, 0x23, 0x62, 0xef, 0x68, 0x5b, 0x97, 0xde, 0x36, 0x9c, 0x1a, 0x18, 0xa4, - 0x08, 0x56, 0x61, 0x44, 0x43, 0xfd, 0xb2, 0x66, 0x76, 0x1c, 0x1f, 0xb2, 0x50, 0xae, 0x14, 0x9b, - 0xc9, 0x59, 0x8d, 0x9e, 0xab, 0x7f, 0xad, 0xc9, 0xcf, 0xa3, 0x5f, 0xf9, 0x5d, 0x96, 0x83, 0x45, - 0xf7, 0xb4, 0x60, 0x09, 0x89, 0xee, 0xc9, 0x7c, 0x45, 0xd9, 0xf4, 0x3f, 0x17, 0xcc, 0xf9, 0x7c, - 0x2e, 0x18, 0xfd, 0xfb, 0xfe, 0xb1, 0x07, 0xdd, 0x69, 0xeb, 0xfb, 0xf6, 0x60, 0x1b, 0x8a, 0xe5, - 0x84, 0x5b, 0x60, 0x0b, 0x3e, 0x6f, 0x45, 0xb4, 0xf1, 0x1d, 0x6c, 0x8f, 0x68, 0xf2, 0x83, 0x68, - 0x99, 0xdf, 0x6d, 0x49, 0xa4, 0x52, 0xb7, 0xf5, 0xf6, 0xed, 0xf5, 0xa0, 0x19, 0x4c, 0x0f, 0x0a, - 0xb1, 0x6e, 0x31, 0x81, 0x2f, 0x43, 0xf9, 0x11, 0x93, 0xb8, 0x17, 0x68, 0xf2, 0x5c, 0x3f, 0x29, - 0x90, 0x66, 0x32, 0x7b, 0xad, 0xb7, 0x89, 0x64, 0xb4, 0x06, 0xd2, 0x26, 0x75, 0xb0, 0x16, 0x4d, - 0x98, 0xda, 0x60, 0x19, 0xd9, 0x5a, 0xe0, 0x22, 0xa9, 0x44, 0xef, 0xbd, 0xac, 0x9f, 0x3a, 0xc5, - 0x3c, 0xda, 0xa1, 0x54, 0x7c, 0x0e, 0xcd, 0x30, 0x2c, 0x7d, 0x94, 0xff, 0x33, 0x54, 0xad, 0xd0, - 0xe4, 0x45, 0x7e, 0x7b, 0x6d, 0xf6, 0x08, 0x20, 0x2e, 0xb1, 0x62, 0x07, 0xac, 0xc6, 0x8c, 0x0f, - 0x2d, 0xf2, 0xdb, 0x67, 0x97, 0xdd, 0x05, 0xa5, 0xde, 0x7f, 0x29, 0xa0, 0xd2, 0xd5, 0x6a, 0xd2, - 0x02, 0xfe, 0xbd, 0xd2, 0x6f, 0x75, 0x8d, 0x26, 0x3f, 0x81, 0x56, 0xf8, 0x5d, 0x47, 0x25, 0xdd, - 0x0d, 0xdb, 0x6a, 0x9d, 0x4e, 0x82, 0xa7, 0x24, 0xdf, 0x3f, 0xf7, 0xa0, 0xbb, 0x1c, 0xda, 0xdf, - 0x1e, 0xa4, 0xb2, 0xc1, 0x42, 0x2a, 0x77, 0x67, 0x93, 0x8a, 0x6d, 0x67, 0xc7, 0x47, 0x2c, 0x34, - 0x9d, 0x83, 0xfb, 0xb2, 0x48, 0x73, 0x72, 0xac, 0xab, 0x2f, 0x23, 0x20, 0xa4, 0x10, 0xf4, 0x25, - 0xa4, 0x62, 0x62, 0xbd, 0x30, 0x5e, 0xac, 0xaf, 0x45, 0x08, 0xfe, 0x22, 0x07, 0x28, 0x2c, 0xe4, - 0x3d, 0x9a, 0xec, 0xf5, 0x73, 0xc5, 0x92, 0xc8, 0x37, 0xa5, 0x74, 0xc6, 0xd5, 0x8b, 0x4f, 0xa2, - 0xc9, 0xf0, 0x8b, 0x27, 0x1a, 0x12, 0x00, 0x9e, 0x2f, 0x67, 0x23, 0xa0, 0x64, 0xc2, 0x57, 0x55, - 0x63, 0xb2, 0x46, 0x65, 0x7e, 0x6e, 0x32, 0xd6, 0xf1, 0xfa, 0xfe, 0x42, 0x20, 0xe7, 0x59, 0x2d, - 0xc6, 0x64, 0x00, 0xfa, 0x7e, 0xe9, 0x81, 0x6e, 0x9c, 0xcb, 0x98, 0xd8, 0xa1, 0x42, 0x3e, 0xe4, - 0x85, 0x89, 0x58, 0x48, 0xe1, 0x4f, 0xe0, 0xcc, 0xb0, 0x36, 0xbd, 0x3d, 0x08, 0x61, 0xad, 0x85, - 0x10, 0xca, 0xec, 0x84, 0xc0, 0x76, 0x70, 0xc2, 0xc7, 0x85, 0xd3, 0x6a, 0xb0, 0xe3, 0xc2, 0xbe, - 0x92, 0xbe, 0xbf, 0xf3, 0xa0, 0xa2, 0xe7, 0xa2, 0x11, 0x10, 0x03, 0x97, 0xa0, 0xc2, 0x57, 0xf0, - 0xdf, 0x0c, 0x07, 0x4a, 0x35, 0x79, 0x96, 0x9f, 0x16, 0x49, 0x93, 0xf5, 0x83, 0xfd, 0x99, 0x37, - 0x2f, 0xe8, 0xdd, 0x83, 0x58, 0x86, 0x83, 0x42, 0x71, 0x39, 0xca, 0xc7, 0x7f, 0xf1, 0x6b, 0xc6, - 0xe3, 0xfc, 0x34, 0xa3, 0x0d, 0x3b, 0x58, 0x30, 0xb4, 0x58, 0x8d, 0x8a, 0xf0, 0xbf, 0x84, 0x5a, - 0xc6, 0x87, 0xe7, 0x06, 0xbc, 0xf8, 0x73, 0x54, 0x8c, 0xff, 0x06, 0x22, 0xc9, 0x1f, 0x57, 0x63, - 0xb3, 0x81, 0xb8, 0x1e, 0x15, 0x27, 0x5a, 0xb7, 0x44, 0xd4, 0xe4, 0xba, 0xd6, 0x16, 0xea, 0x07, - 0xbc, 0x54, 0x93, 0x17, 0xfb, 0xcd, 0x52, 0xe9, 0xee, 0x91, 0xfe, 0x73, 0xe6, 0xb0, 0xc9, 0x1f, - 0x99, 0x9e, 0x76, 0xbd, 0xef, 0x50, 0xe6, 0xc6, 0x61, 0x1a, 0x0c, 0xd6, 0x84, 0xae, 0xc6, 0x53, - 0x46, 0x73, 0xfc, 0xc6, 0x1a, 0x72, 0x53, 0xa6, 0x44, 0x37, 0x58, 0x88, 0xa6, 0x93, 0x4d, 0xa1, - 0xf7, 0x07, 0xb2, 0xd2, 0x8f, 0xda, 0x15, 0x3c, 0x73, 0xb2, 0x15, 0xa3, 0xa9, 0xc1, 0xc3, 0xec, - 0xa6, 0xc7, 0x5f, 0xf1, 0x9e, 0x44, 0x93, 0xe9, 0x0f, 0x8e, 0xdb, 0xc0, 0x12, 0x70, 0xe5, 0x52, - 0x09, 0x7d, 0x31, 0xc1, 0x92, 0x05, 0x99, 0x55, 0xe2, 0xf3, 0x48, 0xa4, 0x3f, 0xeb, 0x38, 0x89, - 0x1a, 0x36, 0x82, 0xdc, 0x65, 0x1c, 0xaa, 0x25, 0x91, 0x5e, 0x2a, 0x88, 0x48, 0x4d, 0x91, 0xcf, - 0x01, 0x4e, 0xac, 0x47, 0x53, 0x69, 0xe9, 0x26, 0x35, 0x9e, 0x30, 0x45, 0x75, 0x72, 0xa1, 0xc8, - 0xaa, 0x62, 0x83, 0xcc, 0x74, 0x75, 0xa6, 0x7b, 0x2f, 0x2a, 0x59, 0xb5, 0xe2, 0x93, 0xc6, 0x22, - 0xad, 0x6f, 0xa4, 0x69, 0x14, 0x7c, 0x7c, 0x26, 0xc6, 0xf5, 0x8d, 0xc6, 0xa8, 0x48, 0x2a, 0xf2, - 0xcc, 0xd5, 0xa1, 0xcc, 0xd0, 0x29, 0xc5, 0xac, 0xe6, 0xd6, 0x8a, 0xc8, 0xcc, 0x85, 0xf6, 0xb5, - 0x22, 0x62, 0x33, 0x1b, 0x06, 0x11, 0x96, 0x15, 0xbe, 0x4a, 0xdc, 0x2f, 0xa0, 0x29, 0xf4, 0x37, - 0x5c, 0x66, 0x69, 0x7a, 0x83, 0x26, 0x4d, 0x0e, 0xf9, 0xad, 0x35, 0x12, 0xbd, 0xac, 0xd3, 0xcc, - 0x0a, 0x4a, 0x6b, 0x04, 0xcb, 0x2e, 0xde, 0x91, 0x9b, 0x87, 0x46, 0xce, 0x74, 0xa7, 0x06, 0xfa, - 0xbc, 0x24, 0xea, 0x17, 0x2e, 0xa2, 0xc9, 0x0a, 0x07, 0xfa, 0xbc, 0xf5, 0x21, 0x12, 0xab, 0x74, - 0xf4, 0xd8, 0x47, 0x99, 0x1b, 0x97, 0x70, 0x81, 0xbc, 0x25, 0x12, 0x8d, 0xb7, 0x04, 0x9a, 0xbd, - 0x90, 0x50, 0x69, 0x91, 0x62, 0xfd, 0x86, 0x18, 0x46, 0x45, 0xcd, 0xd1, 0x20, 0x78, 0xf1, 0x42, - 0x32, 0x84, 0xb5, 0x9a, 0xfc, 0xb4, 0xdf, 0x28, 0x94, 0x1e, 0xc7, 0xbc, 0x96, 0x63, 0xfa, 0xe5, - 0x4d, 0xdb, 0x55, 0x78, 0x05, 0x83, 0xd1, 0xf9, 0xd4, 0xa9, 0xcc, 0xe0, 0x79, 0xbd, 0xf3, 0x43, - 0x5d, 0xeb, 0x36, 0xf0, 0x14, 0x4a, 0x60, 0xec, 0x8b, 0x14, 0xa3, 0x27, 0xf1, 0x97, 0xa8, 0x84, - 0x7e, 0x7b, 0x8d, 0xba, 0x43, 0x6d, 0x26, 0x4e, 0xc3, 0xc5, 0x35, 0xcb, 0x35, 0x79, 0xa9, 0xdf, - 0x52, 0x21, 0xdd, 0x4d, 0xe7, 0x4d, 0xfa, 0x29, 0x07, 0x3a, 0xfc, 0xa2, 0x6d, 0x17, 0xa6, 0x3a, - 0x28, 0x5b, 0xa4, 0x58, 0x1a, 0x54, 0x97, 0x6b, 0xf2, 0xbd, 0xe8, 0x1e, 0xbf, 0x8d, 0x2c, 0xa4, - 0x69, 0x06, 0xce, 0x53, 0xe2, 0x39, 0x9e, 0x07, 0xea, 0x2f, 0x8e, 0xab, 0x51, 0xf8, 0xaf, 0x7f, - 0x70, 0x3d, 0x92, 0x25, 0xde, 0x7a, 0x5d, 0x0f, 0x7a, 0xd6, 0x94, 0x9d, 0xf7, 0x4f, 0xf2, 0x47, - 0x5e, 0x1e, 0x43, 0x4c, 0xd7, 0x23, 0x8f, 0x35, 0xe7, 0x6e, 0x72, 0x2f, 0xa1, 0x19, 0x71, 0x5e, - 0x54, 0x21, 0xa4, 0x0c, 0x84, 0x52, 0xaf, 0xc9, 0xab, 0xfc, 0xf6, 0x5a, 0x69, 0xa9, 0xfc, 0x4a, - 0x6b, 0x5c, 0xf5, 0x92, 0x95, 0x48, 0x0d, 0xf4, 0xf1, 0x96, 0x8a, 0x4c, 0x4f, 0xbb, 0xa3, 0x18, - 0x6f, 0xef, 0xa5, 0x1a, 0xf7, 0x8e, 0xea, 0xfc, 0xb9, 0x17, 0x55, 0xba, 0x87, 0x3b, 0x2f, 0x60, - 0x21, 0xd8, 0xfb, 0x2b, 0xee, 0xf8, 0x4d, 0x7b, 0xd0, 0x7c, 0xb7, 0x6e, 0x6e, 0x8f, 0x53, 0x78, - 0xb3, 0xe5, 0x14, 0xf6, 0xda, 0x15, 0x3e, 0x56, 0xf4, 0x74, 0x4d, 0x67, 0xc1, 0x2f, 0x8e, 0xe5, - 0x5c, 0xae, 0xd3, 0x64, 0x19, 0x3d, 0xe1, 0x1f, 0x63, 0x99, 0xa4, 0x79, 0x39, 0x97, 0xdb, 0xf7, - 0x7f, 0xe7, 0xa1, 0x32, 0xeb, 0xc9, 0x8e, 0x4f, 0x9b, 0x6f, 0x40, 0x74, 0xfb, 0x0a, 0x17, 0xbc, - 0x47, 0xed, 0xa8, 0x3f, 0x5e, 0xed, 0x45, 0x02, 0x15, 0xec, 0x88, 0x05, 0xeb, 0x59, 0xea, 0xbd, - 0x17, 0x34, 0xf9, 0x39, 0x3f, 0x94, 0x48, 0xcf, 0x42, 0xb6, 0x96, 0xf4, 0xa9, 0x43, 0xa9, 0x81, - 0x0f, 0x76, 0xc4, 0x82, 0x59, 0x07, 0xee, 0x62, 0xef, 0xc8, 0x3e, 0x6a, 0xb3, 0xab, 0x20, 0x9a, - 0x72, 0xe2, 0xdb, 0x42, 0x76, 0xd4, 0xe4, 0x62, 0x59, 0x67, 0x34, 0xf4, 0x2c, 0x6e, 0x27, 0x79, - 0x9c, 0x93, 0x2c, 0x0d, 0xcf, 0x46, 0x4d, 0x56, 0xfc, 0x50, 0x22, 0xd5, 0x9b, 0x6d, 0x81, 0x63, - 0xcb, 0x9b, 0xe4, 0xfa, 0x35, 0x72, 0xcd, 0x9a, 0x95, 0x50, 0x51, 0xb5, 0x71, 0x9d, 0x51, 0x92, - 0x1a, 0xd8, 0x0f, 0x85, 0x8b, 0x98, 0xcb, 0x09, 0x7c, 0x3e, 0xdd, 0xd5, 0x96, 0xee, 0xed, 0x52, - 0xa0, 0x47, 0x66, 0x06, 0xcf, 0xb1, 0x59, 0xd2, 0xfd, 0x0e, 0x92, 0x98, 0x21, 0x6c, 0xf0, 0xd4, - 0xf5, 0x57, 0x60, 0x5a, 0xb5, 0xf7, 0x73, 0xbb, 0xe5, 0x19, 0xc3, 0xa4, 0x55, 0x9a, 0x4d, 0x5a, - 0x4c, 0x5c, 0x1a, 0x9f, 0x78, 0x4b, 0x13, 0x5c, 0xe5, 0x5a, 0x0f, 0x76, 0x75, 0xce, 0xb1, 0xb0, - 0xbe, 0xff, 0x9c, 0x8f, 0x4a, 0xd6, 0xc7, 0x54, 0xe2, 0x98, 0x1e, 0x59, 0x13, 0x6d, 0x12, 0x6b, - 0x51, 0x09, 0xe3, 0x90, 0x5c, 0xc2, 0x74, 0xa2, 0x1d, 0xb1, 0x54, 0x48, 0x25, 0xe0, 0xa4, 0x46, - 0x05, 0x04, 0x4b, 0x9d, 0xf8, 0x28, 0xbe, 0xfc, 0xc1, 0x6f, 0xe3, 0x02, 0x44, 0x16, 0x88, 0x2b, - 0x96, 0x8a, 0xa0, 0x83, 0xfa, 0x3a, 0x85, 0x2b, 0x15, 0x97, 0x19, 0xc9, 0xd2, 0x38, 0x4a, 0x62, - 0xc9, 0xd2, 0xa6, 0xb2, 0x94, 0x79, 0x23, 0x97, 0x2e, 0xeb, 0x37, 0x8e, 0x18, 0xe9, 0xf1, 0xb8, - 0x8d, 0xcc, 0x77, 0xda, 0x48, 0xfd, 0xd2, 0x99, 0x91, 0x4b, 0x67, 0xd2, 0xc7, 0xce, 0xe9, 0x37, - 0x8f, 0x65, 0x6f, 0xe4, 0x62, 0x54, 0x18, 0x8d, 0x6d, 0x4c, 0xa8, 0x71, 0x4a, 0x0e, 0xb3, 0x35, - 0xf9, 0x0e, 0x3f, 0x2d, 0x92, 0x8a, 0x41, 0x8a, 0x4a, 0x0d, 0x0e, 0x2a, 0xb4, 0x48, 0x5c, 0x81, - 0x50, 0x10, 0xb2, 0x1f, 0xb3, 0xe4, 0xe4, 0xc5, 0xb0, 0x63, 0x5c, 0xb1, 0x54, 0x02, 0xe2, 0x0c, - 0xcb, 0xff, 0x6c, 0xd6, 0x88, 0x2b, 0x79, 0x29, 0x17, 0xe4, 0xa6, 0xfb, 0x35, 0x79, 0x21, 0x2f, - 0xe5, 0xde, 0x09, 0x1f, 0xb5, 0xd9, 0x36, 0x78, 0x89, 0x77, 0x25, 0x6f, 0x9d, 0x2c, 0xe2, 0xba, - 0x31, 0xad, 0x93, 0xb6, 0x6e, 0x68, 0x0c, 0x2d, 0xde, 0x0e, 0xc9, 0xed, 0x36, 0x39, 0x6e, 0x8b, - 0x1d, 0x76, 0x1b, 0x44, 0x67, 0xd8, 0x2c, 0x7a, 0x88, 0x5a, 0xea, 0xaa, 0xf1, 0x87, 0x91, 0xcf, - 0x6f, 0xc1, 0x23, 0x49, 0x84, 0xaf, 0xc3, 0x9a, 0xc3, 0xfa, 0xfb, 0xfe, 0x95, 0x07, 0x4d, 0xdf, - 0x10, 0x48, 0x6c, 0xb7, 0x20, 0x9c, 0xcf, 0x09, 0xe1, 0xb2, 0xf0, 0x69, 0xbe, 0x1d, 0x9f, 0x2c, - 0x48, 0x33, 0xdb, 0x8a, 0x34, 0x06, 0x5e, 0x94, 0x66, 0xe1, 0x85, 0xb9, 0xeb, 0xb3, 0xad, 0xbb, - 0x6e, 0xec, 0xee, 0x7c, 0xfb, 0xee, 0x5a, 0xb6, 0x6f, 0xae, 0x6d, 0xfb, 0xf8, 0x5d, 0x99, 0x6b, - 0xdb, 0x15, 0x7e, 0xb1, 0x67, 0x1b, 0x29, 0xc8, 0x8a, 0xe1, 0x9b, 0x34, 0x4d, 0x58, 0x19, 0x97, - 0x19, 0x8d, 0x24, 0x57, 0xe7, 0xd2, 0x96, 0xf9, 0xb2, 0x36, 0x68, 0xb2, 0x75, 0x75, 0x70, 0x99, - 0xef, 0xdf, 0x7a, 0xd0, 0x64, 0xbc, 0xac, 0x8d, 0x49, 0x35, 0x86, 0x57, 0x74, 0x59, 0x56, 0xbe, - 0xc1, 0x71, 0x91, 0xd0, 0x0a, 0x54, 0x94, 0x48, 0xaa, 0x31, 0xee, 0xfe, 0x04, 0xe6, 0x0e, 0x56, - 0x68, 0x24, 0x72, 0xe5, 0xf3, 0xad, 0x1a, 0xb5, 0x62, 0x35, 0x2a, 0x68, 0x26, 0x12, 0x71, 0x9e, - 0x69, 0x84, 0x80, 0x12, 0xa9, 0x14, 0x70, 0x20, 0xd3, 0xd7, 0x95, 0x19, 0x3c, 0x5f, 0x5e, 0xbf, - 0x6e, 0xd5, 0xfa, 0x8a, 0x95, 0x8a, 0xb2, 0x5e, 0x59, 0xa4, 0x00, 0x80, 0xb8, 0x3c, 0x9b, 0x7a, - 0x09, 0xe7, 0x36, 0xa8, 0xb7, 0xc4, 0x99, 0x6e, 0xbf, 0x1e, 0x1d, 0x8e, 0x1f, 0x69, 0xcf, 0x4c, - 0x02, 0xc7, 0x04, 0xc2, 0x65, 0xeb, 0x23, 0x89, 0x64, 0x20, 0x02, 0x58, 0xf9, 0xf5, 0x65, 0x8d, - 0xe5, 0x59, 0xb2, 0x06, 0xb5, 0x11, 0x81, 0xac, 0x31, 0x2d, 0xeb, 0xd2, 0xf2, 0x4d, 0x88, 0x1b, - 0x0d, 0x54, 0x35, 0x91, 0xcf, 0x12, 0xec, 0x4b, 0x7e, 0x52, 0x20, 0xf9, 0x8d, 0x73, 0x01, 0xec, - 0xf0, 0xde, 0x40, 0xac, 0xb2, 0xa9, 0x35, 0x10, 0x69, 0x7a, 0x65, 0x5b, 0xb4, 0xb5, 0x72, 0x69, - 0x85, 0xb7, 0x35, 0x51, 0xf9, 0x92, 0x9a, 0x48, 0x2e, 0xad, 0x0c, 0x30, 0x6f, 0x06, 0x50, 0x5b, - 0xd4, 0x21, 0x14, 0x89, 0x86, 0xd4, 0x55, 0x81, 0x96, 0x70, 0xf3, 0x4e, 0xca, 0x41, 0x49, 0x62, - 0x40, 0xae, 0x58, 0x2a, 0x49, 0xf7, 0x0e, 0xea, 0x27, 0xf7, 0x65, 0xae, 0x0e, 0xe9, 0x9d, 0xc7, - 0x58, 0x7b, 0x0e, 0x40, 0xbc, 0x0f, 0xe5, 0x05, 0x63, 0xad, 0xf4, 0xad, 0xee, 0x4c, 0x4d, 0x9e, - 0xe1, 0xc7, 0xbf, 0x25, 0x54, 0xdb, 0xb0, 0xd1, 0x9b, 0x3e, 0x3d, 0x90, 0x3e, 0x72, 0x59, 0xc1, - 0x05, 0xe2, 0x0a, 0x54, 0xd8, 0xa2, 0xb6, 0x44, 0xe3, 0x3b, 0x09, 0xe9, 0x4d, 0xa9, 0xb9, 0x57, - 0x93, 0x7d, 0x7e, 0x5a, 0x24, 0x95, 0xea, 0x7b, 0x3a, 0xf4, 0xbe, 0xb7, 0xf4, 0xb3, 0xe7, 0xf5, - 0xcb, 0x07, 0x0d, 0xdf, 0x76, 0xef, 0xea, 0x1a, 0x85, 0x42, 0x88, 0x9b, 0x50, 0xc1, 0x96, 0xf0, - 0x2b, 0x06, 0xc3, 0x24, 0xd1, 0x3a, 0xa1, 0x44, 0x5a, 0x9e, 0x1a, 0xe8, 0x21, 0x64, 0x51, 0xe1, - 0x85, 0x8c, 0xbe, 0xe9, 0xb7, 0xfa, 0xe1, 0xf4, 0x84, 0x8a, 0xcc, 0xf9, 0x5d, 0xe9, 0xde, 0xae, - 0x91, 0xbd, 0x1f, 0xe8, 0x43, 0x83, 0x46, 0x98, 0x02, 0x05, 0x1a, 0x8b, 0xcf, 0x72, 0x56, 0xe2, - 0x62, 0x33, 0x1b, 0x9f, 0x69, 0x25, 0xbe, 0x8f, 0xfd, 0x65, 0x34, 0xa5, 0x0f, 0x7c, 0x8e, 0x5e, - 0x2f, 0x27, 0x11, 0x16, 0xaa, 0x12, 0x6a, 0xf3, 0x56, 0x2e, 0xba, 0x82, 0x78, 0x40, 0xc8, 0x62, - 0x8b, 0x84, 0x31, 0xd4, 0xfc, 0x46, 0x93, 0xd7, 0x67, 0x9d, 0xc3, 0x4f, 0xe8, 0x37, 0xde, 0x60, - 0xcd, 0x52, 0x03, 0x83, 0xb8, 0x23, 0xe2, 0xbc, 0xc5, 0x03, 0xf1, 0x47, 0x75, 0x79, 0x34, 0xd2, - 0x1c, 0x8e, 0xa8, 0x55, 0xd1, 0xad, 0x5b, 0xf1, 0xbf, 0x8b, 0xbe, 0xac, 0x99, 0x15, 0xbf, 0x43, - 0xf9, 0x99, 0x52, 0x08, 0xe5, 0xca, 0x24, 0x5a, 0x61, 0x65, 0xc1, 0xd5, 0x3d, 0x82, 0x26, 0x1f, - 0x15, 0xd0, 0x1b, 0x82, 0xff, 0x4e, 0x4c, 0x0d, 0x0e, 0x84, 0x20, 0xbd, 0x0c, 0x3e, 0x05, 0xb0, - 0xd9, 0x20, 0x5f, 0x7c, 0x47, 0x1e, 0x21, 0x7f, 0xe3, 0xe1, 0xae, 0xc4, 0xd6, 0xa1, 0xdd, 0x1e, - 0xa2, 0xe1, 0x7a, 0x8b, 0x68, 0x38, 0x37, 0x5b, 0x34, 0xe4, 0xa7, 0x34, 0x3e, 0xf1, 0x70, 0x95, - 0x26, 0xd7, 0x22, 0xd9, 0x3f, 0x13, 0xaf, 0xca, 0xba, 0x68, 0xc8, 0xb2, 0x18, 0x52, 0xa9, 0x7d, - 0xa3, 0xdc, 0xfc, 0x3e, 0xfe, 0xb6, 0x18, 0x95, 0xf0, 0x5f, 0x17, 0x1f, 0x46, 0x45, 0x11, 0xda, - 0x1f, 0x7f, 0xbc, 0x18, 0x85, 0x40, 0xec, 0xc7, 0x2f, 0x50, 0xb9, 0xd0, 0x28, 0xc7, 0x0d, 0x93, - 0x3b, 0x63, 0x2a, 0x77, 0xc0, 0x40, 0x43, 0x56, 0xc8, 0xb8, 0x04, 0x3b, 0x5a, 0x58, 0x39, 0x66, - 0xf4, 0x1c, 0x8b, 0xc9, 0xe3, 0x18, 0xbd, 0x1b, 0x8b, 0xb1, 0xf0, 0x96, 0x7b, 0x81, 0xb7, 0x40, - 0xfc, 0x85, 0x3b, 0x34, 0x79, 0x3a, 0xf0, 0x96, 0xe2, 0x60, 0xac, 0xd5, 0x99, 0xb5, 0x14, 0xb8, - 0xb3, 0x96, 0x4b, 0xd7, 0x47, 0xf7, 0x3a, 0xb3, 0x96, 0x7b, 0x51, 0x5e, 0x93, 0xc1, 0xc1, 0xe0, - 0x2b, 0x4d, 0xf8, 0x2b, 0x4d, 0xe6, 0x57, 0x9a, 0x62, 0xad, 0x62, 0xc2, 0x10, 0x01, 0x26, 0x99, - 0xe9, 0x08, 0x59, 0x16, 0xd2, 0x75, 0x74, 0x0e, 0xe4, 0xe6, 0x75, 0x6b, 0xb8, 0xbb, 0x71, 0xe5, - 0x9a, 0x35, 0xb7, 0x86, 0x7b, 0x46, 0xce, 0x5c, 0xc8, 0x9c, 0x1d, 0xd4, 0x2f, 0x9d, 0x4c, 0x7d, - 0xb6, 0x4f, 0x3f, 0xd8, 0x3f, 0xf2, 0x71, 0x5f, 0xea, 0xfa, 0x65, 0x5c, 0xbd, 0x7e, 0x4d, 0xdd, - 0xe6, 0xf5, 0x1b, 0x37, 0x64, 0x83, 0x7c, 0xfa, 0x91, 0xfe, 0xe6, 0xa5, 0xcc, 0x8d, 0x76, 0x43, - 0xbe, 0xa8, 0x47, 0xc5, 0xad, 0x91, 0x70, 0xb2, 0x21, 0x1e, 0x0e, 0xaa, 0x84, 0xf5, 0x79, 0x40, - 0xa5, 0x69, 0x96, 0x4a, 0x73, 0xa0, 0x6d, 0x6a, 0xe8, 0xd3, 0xf4, 0xe9, 0x61, 0x63, 0x82, 0xb7, - 0x86, 0x7b, 0xf4, 0x8e, 0xd7, 0x14, 0x13, 0x4e, 0x5c, 0x8e, 0x0a, 0x30, 0xdb, 0xc7, 0x12, 0x4c, - 0x1e, 0x53, 0x1b, 0x42, 0x89, 0x24, 0x82, 0x46, 0x0d, 0xdf, 0x39, 0xd9, 0x59, 0xa2, 0x40, 0x95, - 0xf8, 0x5b, 0x8e, 0x3f, 0x22, 0xf3, 0xce, 0x69, 0xf2, 0xc7, 0x55, 0x7a, 0xff, 0xf5, 0xf4, 0x81, - 0x73, 0x26, 0x77, 0xec, 0xdd, 0x8f, 0x79, 0x6e, 0x4f, 0xbb, 0xe9, 0xa4, 0x9a, 0xc5, 0x95, 0x81, - 0x7f, 0x1a, 0x1f, 0x83, 0x96, 0x1c, 0xff, 0x6c, 0x42, 0x53, 0x19, 0xfb, 0x6a, 0x88, 0x46, 0x9b, - 0xeb, 0xeb, 0x40, 0x72, 0xaa, 0x79, 0x42, 0x93, 0x7f, 0xee, 0xcf, 0xaa, 0x92, 0xfc, 0xc0, 0xd7, - 0x75, 0xed, 0x02, 0xa6, 0x8a, 0x2b, 0xa7, 0xeb, 0xeb, 0x2a, 0xf8, 0xb4, 0xee, 0x7a, 0xf7, 0xf5, - 0xd1, 0x8e, 0xfd, 0xf4, 0x13, 0x59, 0x6d, 0xc5, 0x53, 0x02, 0x42, 0x10, 0xae, 0xa0, 0x2e, 0x9c, - 0xd8, 0x4e, 0xde, 0x92, 0x3b, 0xdc, 0xed, 0xea, 0x02, 0xc9, 0x00, 0xae, 0x87, 0xe4, 0x2f, 0x5c, - 0x03, 0x69, 0x83, 0x81, 0xb8, 0x99, 0xa1, 0x53, 0x99, 0xb7, 0xdf, 0x62, 0x33, 0x85, 0x4f, 0x67, - 0x1d, 0x38, 0x8b, 0xbd, 0xa9, 0xa1, 0x8e, 0xd4, 0x50, 0x87, 0x13, 0xbf, 0x07, 0xe7, 0x74, 0xbd, - 0xe3, 0x6a, 0xfa, 0xea, 0x05, 0x85, 0xfb, 0x82, 0xd8, 0x2b, 0xa0, 0xe2, 0x10, 0xfd, 0x7e, 0xa2, - 0x74, 0x8a, 0xf3, 0xe5, 0xd3, 0x18, 0x20, 0x89, 0xc1, 0x6d, 0xc2, 0xb3, 0xf1, 0xa5, 0x8f, 0x5c, - 0x4e, 0xef, 0xbf, 0xf4, 0x8d, 0x8d, 0xcf, 0xfc, 0x80, 0xf8, 0x1c, 0x9a, 0x1a, 0xd8, 0x11, 0x08, - 0x37, 0x07, 0xb6, 0x34, 0xab, 0xcf, 0xb6, 0x46, 0x93, 0x01, 0xf2, 0x4c, 0x7d, 0x4a, 0x8d, 0xa4, - 0xc9, 0x55, 0xfe, 0xac, 0x2a, 0x69, 0xde, 0x48, 0xff, 0x39, 0xca, 0x26, 0x98, 0x15, 0xe2, 0xb7, - 0xb8, 0x02, 0x28, 0x53, 0xc9, 0x02, 0xaf, 0xc6, 0x6c, 0x02, 0x95, 0xfa, 0x8b, 0xd6, 0x39, 0x32, - 0x27, 0x9f, 0x5e, 0x80, 0xee, 0x5e, 0xad, 0x26, 0xd7, 0x06, 0x88, 0x32, 0xb9, 0xb5, 0xa9, 0x49, - 0x4d, 0x24, 0xd5, 0xd0, 0xda, 0x40, 0x70, 0x5b, 0xf8, 0x1b, 0xd1, 0x25, 0x3d, 0x96, 0x25, 0xdf, - 0xdd, 0x93, 0x4b, 0xbe, 0xcb, 0x56, 0xa8, 0xbe, 0x27, 0x58, 0x45, 0xea, 0x83, 0x82, 0x26, 0xb7, - 0xf8, 0x8b, 0x82, 0xcd, 0x09, 0xd0, 0x30, 0x07, 0xa8, 0x86, 0x19, 0xc4, 0xea, 0x35, 0x4b, 0x97, - 0x2c, 0x01, 0x2e, 0xb0, 0xa4, 0x72, 0xe9, 0x92, 0x25, 0xa9, 0x81, 0x0f, 0x8c, 0xe0, 0x18, 0x6b, - 0x1e, 0x34, 0xab, 0x1e, 0xcc, 0xaa, 0x5a, 0xba, 0x84, 0xd5, 0x61, 0x20, 0x52, 0x4c, 0x5c, 0xc1, - 0x5f, 0xcf, 0xf4, 0x75, 0x2d, 0xfa, 0xb2, 0x66, 0x6e, 0xbc, 0x4c, 0xc9, 0xc7, 0x40, 0x4a, 0x3e, - 0xee, 0x45, 0x29, 0x20, 0x0d, 0x94, 0x82, 0x35, 0x12, 0xf9, 0x07, 0xc4, 0x77, 0x8b, 0x3c, 0x9a, - 0x3f, 0x21, 0x79, 0x74, 0x09, 0xa8, 0xbf, 0xea, 0xa8, 0xe0, 0x48, 0x8e, 0x65, 0x28, 0x91, 0xa6, - 0x82, 0xc4, 0x95, 0xb9, 0x71, 0x38, 0x33, 0xd4, 0x5b, 0x5f, 0x07, 0xba, 0xab, 0xba, 0xef, 0x4a, - 0x52, 0xdc, 0xc1, 0xf8, 0x1c, 0x48, 0x8a, 0x24, 0x09, 0x17, 0xe5, 0x73, 0x1b, 0xd2, 0x07, 0x2e, - 0x8c, 0xec, 0x3f, 0x44, 0xb1, 0xf0, 0x6c, 0x3b, 0xa6, 0x02, 0xce, 0x3a, 0x76, 0x6b, 0xb8, 0x1b, - 0xf2, 0x2e, 0x57, 0x8c, 0xf6, 0xbc, 0xa9, 0x0f, 0xb7, 0x7d, 0xd1, 0xb6, 0xdb, 0x54, 0xd4, 0x79, - 0xf5, 0xce, 0xe3, 0x7a, 0xff, 0x75, 0x03, 0x38, 0x7d, 0xec, 0x34, 0x66, 0x6a, 0x57, 0x76, 0x53, - 0x4e, 0xc9, 0x9c, 0x37, 0xc7, 0xc6, 0x4a, 0xc9, 0x9f, 0x3e, 0x7d, 0x3d, 0xbd, 0xff, 0x52, 0x0b, - 0x81, 0x02, 0x93, 0x02, 0x55, 0xbf, 0xf1, 0xc3, 0x03, 0x25, 0xcf, 0x7f, 0xf3, 0x20, 0x5f, 0xae, - 0x1e, 0x6f, 0x0f, 0x19, 0xe9, 0x57, 0x16, 0x19, 0xe9, 0x3e, 0x57, 0x19, 0x49, 0x6d, 0x89, 0x35, - 0x07, 0x92, 0x6a, 0x6d, 0x34, 0xb2, 0x35, 0xdc, 0x34, 0x21, 0x9f, 0xd9, 0x71, 0x2c, 0x92, 0x54, - 0x6a, 0x5f, 0x5f, 0x37, 0xd9, 0xa9, 0x33, 0x0f, 0xdd, 0x65, 0x93, 0x4a, 0x13, 0xdf, 0xd7, 0xb5, - 0x71, 0xb3, 0xfd, 0xda, 0x28, 0x6b, 0xf2, 0xe3, 0x3c, 0x99, 0x2e, 0xe5, 0xc8, 0xb4, 0xc2, 0x0b, - 0x68, 0x9c, 0xee, 0xde, 0xab, 0x5f, 0xea, 0xc1, 0x0b, 0x36, 0x78, 0x78, 0xe4, 0xe3, 0xf7, 0xf4, - 0x83, 0x9f, 0xd2, 0x17, 0x1b, 0x64, 0x2d, 0x79, 0x62, 0x7e, 0x1e, 0x15, 0x86, 0x63, 0x78, 0xbe, - 0x94, 0x09, 0xd4, 0x6a, 0xf2, 0xa3, 0x7e, 0x5a, 0x24, 0x55, 0xe1, 0xe6, 0x46, 0x78, 0x17, 0x9e, - 0xb4, 0x1b, 0xf0, 0x68, 0x4f, 0xb4, 0xb1, 0xef, 0x51, 0xb2, 0x81, 0x49, 0x0b, 0x0a, 0x6d, 0x6f, - 0xf8, 0xb3, 0xb8, 0xae, 0xa7, 0x34, 0x87, 0xde, 0x0b, 0x0e, 0xb5, 0xa7, 0x06, 0x3e, 0x30, 0xbe, - 0x46, 0x29, 0xe0, 0x3f, 0x7a, 0x50, 0x99, 0x53, 0xd3, 0xdb, 0xd1, 0x9b, 0xee, 0x2e, 0x47, 0x9b, - 0x0c, 0x3e, 0xe2, 0xc0, 0xc1, 0x06, 0x90, 0x9d, 0xba, 0x37, 0xf0, 0xab, 0x60, 0x41, 0xf9, 0xf5, - 0x9a, 0xbc, 0x06, 0x3d, 0xed, 0xcf, 0xb1, 0x2a, 0x6c, 0x45, 0xb3, 0xd6, 0xd2, 0x0d, 0xdb, 0x3f, - 0x99, 0x84, 0x8a, 0x8d, 0x91, 0x88, 0x8f, 0xd0, 0xd4, 0xf7, 0x0c, 0xb9, 0xc9, 0x02, 0xd1, 0x22, - 0xe9, 0x0e, 0x7a, 0xd2, 0x0c, 0x1e, 0x0e, 0xd3, 0x8f, 0xd6, 0xd7, 0xd1, 0xec, 0xf6, 0x75, 0xe2, - 0xa3, 0x68, 0x52, 0x38, 0x12, 0x51, 0xe3, 0xf5, 0x0d, 0x74, 0x6d, 0x89, 0x36, 0x92, 0x95, 0x49, - 0x33, 0xe8, 0x58, 0xf6, 0x74, 0x64, 0x6e, 0x1c, 0x4e, 0x0d, 0x0c, 0xd5, 0x37, 0x28, 0xac, 0x4e, - 0x7c, 0x1e, 0x95, 0x84, 0xb9, 0xbb, 0x0a, 0xc5, 0xf2, 0x87, 0x35, 0x79, 0xb9, 0xdf, 0x52, 0x21, - 0x2d, 0x04, 0xf2, 0xa5, 0x7e, 0x47, 0x7d, 0xc7, 0x32, 0x17, 0xdf, 0x4b, 0x0d, 0x7c, 0x84, 0x4f, - 0x82, 0x83, 0xfd, 0x23, 0xaf, 0xdd, 0x00, 0x6e, 0xad, 0x58, 0xda, 0x88, 0x0f, 0xf0, 0xf7, 0x08, - 0xb2, 0x69, 0xe4, 0xe4, 0x99, 0x06, 0xe3, 0x09, 0xc6, 0x5a, 0xe9, 0xf2, 0x92, 0xe3, 0x67, 0x31, - 0xca, 0x6b, 0x51, 0x99, 0x37, 0x05, 0xa1, 0x4f, 0xfc, 0x5b, 0x12, 0x8d, 0xc1, 0xeb, 0x7d, 0x6f, - 0x31, 0xf8, 0x16, 0xb5, 0x45, 0x7c, 0x84, 0xbf, 0x3e, 0xdc, 0xa7, 0xc9, 0xf7, 0xc0, 0xf5, 0x61, - 0x2e, 0xc0, 0x37, 0xb1, 0xce, 0xf9, 0x11, 0x2e, 0x81, 0x1b, 0xc5, 0x52, 0x94, 0xb7, 0x23, 0x16, - 0xa4, 0xd7, 0x09, 0xb2, 0x54, 0xf8, 0xb7, 0x34, 0x8b, 0xc6, 0x7f, 0x60, 0xb6, 0xd0, 0x4d, 0x0d, - 0xb5, 0xde, 0xfa, 0x3a, 0x05, 0xd7, 0x61, 0x42, 0xa5, 0xfc, 0xa3, 0x88, 0x11, 0xea, 0x93, 0x06, - 0xff, 0x78, 0x88, 0x6f, 0x08, 0xe6, 0xf1, 0x5b, 0xc3, 0xdd, 0xf8, 0x5e, 0xf1, 0xde, 0x6e, 0xfd, - 0xfa, 0x4d, 0xfd, 0xd3, 0x93, 0xb7, 0x86, 0xbb, 0xd3, 0x9f, 0x5e, 0xd1, 0x7b, 0xaf, 0xe2, 0xd1, - 0xbc, 0x7e, 0x5a, 0xff, 0xf4, 0x64, 0xa6, 0xaf, 0xcb, 0x60, 0x33, 0x8f, 0xa3, 0x62, 0xba, 0x1d, - 0x3b, 0x1e, 0xa2, 0xca, 0x10, 0xb2, 0xf7, 0x66, 0xa9, 0x34, 0x1d, 0x3e, 0x11, 0x8e, 0xed, 0x78, - 0x08, 0x68, 0x5f, 0x31, 0x2b, 0xc5, 0x95, 0x86, 0xbf, 0x0d, 0xdc, 0x14, 0x20, 0x8c, 0x30, 0xf5, - 0xb7, 0xf1, 0xb2, 0xd8, 0x1d, 0x86, 0xd7, 0x4d, 0xf6, 0x9e, 0x31, 0x27, 0x9c, 0x15, 0x54, 0xd3, - 0x05, 0x52, 0x3f, 0x18, 0x29, 0x89, 0xa6, 0x6b, 0x7e, 0x56, 0x17, 0xd9, 0x1d, 0x80, 0x5a, 0xeb, - 0x49, 0xce, 0x1b, 0xa7, 0xc4, 0xd4, 0x68, 0x1a, 0x85, 0x6c, 0x7d, 0xb3, 0x7d, 0x79, 0x4c, 0x9f, - 0x9c, 0x10, 0x9a, 0x16, 0x34, 0xed, 0x32, 0x98, 0x26, 0x48, 0x48, 0xa7, 0xa2, 0x9a, 0x6a, 0x4d, - 0x7e, 0xd8, 0x9f, 0x5d, 0x27, 0x2d, 0x84, 0xf7, 0x11, 0xf8, 0x7e, 0xd3, 0x7f, 0x2e, 0x35, 0x78, - 0x38, 0xd3, 0xd3, 0x0e, 0x96, 0x3f, 0xe0, 0xe5, 0x34, 0x60, 0x63, 0x76, 0xb3, 0x6a, 0xcc, 0xc1, - 0xd1, 0xcf, 0xfd, 0x93, 0xa9, 0xf5, 0x94, 0x74, 0x55, 0x09, 0x9a, 0x5d, 0x4a, 0x63, 0x0c, 0x6f, - 0xa8, 0xbc, 0xce, 0x11, 0xb2, 0x7e, 0xe5, 0x48, 0xe6, 0xec, 0xa0, 0xef, 0xbc, 0xc7, 0xb4, 0xa4, - 0xca, 0xc0, 0xcc, 0xbf, 0x4f, 0xed, 0xe6, 0xb7, 0x7d, 0x4c, 0x31, 0xbf, 0xb0, 0x1c, 0x73, 0x96, - 0x66, 0x99, 0x8c, 0x8f, 0x74, 0x45, 0xaf, 0x0b, 0xa3, 0x9c, 0xf9, 0xd1, 0xd2, 0xea, 0x76, 0x93, - 0x9f, 0x04, 0x57, 0xcb, 0x3e, 0x37, 0xad, 0x89, 0x1c, 0x26, 0x0d, 0x9a, 0xbc, 0x16, 0x3d, 0xe3, - 0xcf, 0xb5, 0x3a, 0xfc, 0x69, 0xc2, 0x2d, 0xaa, 0xdb, 0x69, 0x72, 0x58, 0xa0, 0x1e, 0x62, 0x5c, - 0x57, 0xe2, 0xef, 0x50, 0x7e, 0xd2, 0xd4, 0x3b, 0x85, 0x35, 0x79, 0xab, 0x9f, 0x14, 0x48, 0xbf, - 0xce, 0xea, 0xb5, 0x1c, 0x5e, 0x7e, 0xd0, 0xa2, 0x9e, 0x76, 0x10, 0x35, 0x8c, 0xe8, 0xb6, 0x8d, - 0x1b, 0xe4, 0x75, 0x75, 0xb2, 0x52, 0x97, 0x1a, 0x18, 0x4c, 0x9f, 0xde, 0xab, 0xef, 0xdd, 0x03, - 0xe0, 0xf8, 0x42, 0xb4, 0x72, 0xb5, 0x5c, 0xfb, 0xab, 0xd4, 0xc0, 0x60, 0x6a, 0xf8, 0x34, 0xbe, - 0x8f, 0x93, 0xf2, 0x45, 0x0a, 0xf9, 0x8a, 0xef, 0x86, 0x07, 0x79, 0xd9, 0x0c, 0x6b, 0x02, 0x91, - 0xd0, 0x4b, 0xe1, 0x50, 0x72, 0x5b, 0x43, 0x20, 0xb8, 0x3d, 0xd0, 0xf4, 0x95, 0xc5, 0x3a, 0xe1, - 0x6b, 0xdd, 0x16, 0x85, 0xef, 0x8e, 0x6c, 0x28, 0xa7, 0x19, 0x73, 0x01, 0x98, 0x72, 0x11, 0x7f, - 0xac, 0xe3, 0x4a, 0x6a, 0xf0, 0x43, 0x7d, 0xe0, 0x3d, 0xfd, 0xd2, 0x0d, 0xbd, 0xbb, 0xc3, 0xf7, - 0x3f, 0x3d, 0xe4, 0xba, 0xed, 0xd6, 0xfc, 0xf6, 0xa0, 0xa2, 0xa0, 0x45, 0x16, 0x5b, 0x98, 0x4d, - 0x45, 0xd9, 0xf3, 0x72, 0xf1, 0x91, 0xb1, 0xaf, 0x0e, 0x50, 0x15, 0xa5, 0x27, 0xfa, 0xc2, 0x76, - 0xec, 0xd5, 0x72, 0x5f, 0x6d, 0x3b, 0x49, 0x69, 0x02, 0x9a, 0xe9, 0x34, 0x3c, 0x71, 0x2a, 0xf2, - 0x84, 0x43, 0xd4, 0xee, 0xea, 0x09, 0x87, 0x44, 0x91, 0x3e, 0x8c, 0x00, 0x3b, 0x2b, 0xbc, 0x7b, - 0xf0, 0xa2, 0xc9, 0x11, 0x35, 0xf9, 0x52, 0x34, 0xbe, 0xdd, 0x94, 0xac, 0x14, 0xbe, 0x88, 0xb3, - 0x6e, 0xe6, 0x5b, 0xac, 0x9b, 0x73, 0x51, 0xf1, 0x16, 0xf6, 0x55, 0x22, 0x10, 0x15, 0x28, 0x66, - 0x81, 0xef, 0x93, 0x7c, 0x74, 0xa7, 0x21, 0x82, 0xae, 0x4f, 0xd4, 0xb7, 0x04, 0x9a, 0x6e, 0x47, - 0xc3, 0xda, 0xff, 0x2e, 0xd8, 0x1e, 0x0a, 0x7e, 0x20, 0x68, 0xf2, 0x7b, 0x02, 0xa7, 0xe4, 0x3c, - 0x2e, 0x8c, 0x1e, 0xe9, 0xd5, 0x5f, 0x3b, 0x68, 0x98, 0x7e, 0x40, 0xf4, 0x80, 0x37, 0x48, 0xd5, - 0x0d, 0x1b, 0x6b, 0xd6, 0xd4, 0xd7, 0x6e, 0xae, 0x5f, 0x2b, 0xaf, 0x5e, 0x59, 0xae, 0x77, 0x5c, - 0xd4, 0x3b, 0xae, 0x00, 0xf8, 0xa2, 0x8a, 0x06, 0xa5, 0x7e, 0x93, 0xbc, 0x61, 0x25, 0xad, 0x83, - 0xcb, 0x13, 0xab, 0x6b, 0x7c, 0x4a, 0x56, 0x56, 0xd6, 0x19, 0xcd, 0x30, 0x0a, 0xb0, 0xaa, 0xb5, - 0xb2, 0xf2, 0xcc, 0xca, 0x0d, 0xac, 0x6a, 0x60, 0xb7, 0xde, 0x3b, 0xc8, 0xaa, 0xbc, 0xf2, 0x9a, - 0x35, 0xe0, 0xa6, 0x03, 0x25, 0x9c, 0xe2, 0x74, 0x3b, 0x6f, 0xc2, 0x2e, 0x30, 0xbd, 0x29, 0x39, - 0xc7, 0x82, 0x15, 0xfa, 0xa5, 0xeb, 0xfa, 0xf1, 0x0b, 0xfa, 0xf5, 0xab, 0xfa, 0xc1, 0xcb, 0xcc, - 0xab, 0xa0, 0xc2, 0x0b, 0xe1, 0x8a, 0x40, 0x6a, 0x81, 0x6e, 0x0d, 0xdf, 0x05, 0x2a, 0x68, 0x03, - 0x8a, 0x9b, 0x3d, 0x19, 0x3e, 0xda, 0x2e, 0x18, 0x60, 0x18, 0x2a, 0x38, 0x57, 0x56, 0x7a, 0xa1, - 0xfb, 0xf7, 0x1e, 0x54, 0x6a, 0x6f, 0x75, 0x7b, 0xb0, 0x90, 0xa7, 0x2d, 0x2c, 0xe4, 0xce, 0x6c, - 0x16, 0x42, 0x67, 0x33, 0x3e, 0xcd, 0xc5, 0x26, 0x4d, 0x6e, 0x44, 0xcf, 0xfa, 0x5d, 0xd7, 0x42, - 0x5a, 0x68, 0x5f, 0x42, 0xd8, 0x9c, 0xdc, 0xb7, 0xb9, 0x2f, 0x0b, 0xd0, 0x24, 0xda, 0x95, 0xb8, - 0x14, 0x4d, 0x0a, 0xe3, 0x3f, 0x0c, 0x3a, 0xbc, 0x93, 0xd0, 0x21, 0x2d, 0x93, 0x8a, 0xa1, 0x3f, - 0x7c, 0xbd, 0x60, 0x65, 0xe2, 0x62, 0x54, 0x10, 0x68, 0x0e, 0x07, 0x12, 0x74, 0x3d, 0x89, 0xd3, - 0x3c, 0x94, 0x48, 0x25, 0xec, 0xf3, 0x1f, 0xea, 0x87, 0xf6, 0x2b, 0x50, 0x88, 0x77, 0x2c, 0x10, - 0x0f, 0x6e, 0xe3, 0x1f, 0x3e, 0x92, 0x02, 0x69, 0x1a, 0x40, 0xd7, 0x36, 0x6c, 0x4c, 0x9f, 0xbc, - 0x96, 0x3e, 0xd9, 0xae, 0x90, 0x62, 0x51, 0x41, 0xd3, 0xa2, 0x89, 0xda, 0xd6, 0x44, 0x32, 0xda, - 0x12, 0x7e, 0x05, 0x2e, 0x7b, 0x40, 0x75, 0xe4, 0xd1, 0x71, 0x76, 0x9d, 0x24, 0xea, 0x97, 0x7a, - 0xf4, 0xce, 0x6b, 0x54, 0xc9, 0x0e, 0x96, 0xa9, 0x6c, 0x20, 0xf1, 0x61, 0x54, 0x18, 0x4d, 0x10, - 0x89, 0xbf, 0xc0, 0xbc, 0x4c, 0xd1, 0x22, 0xe6, 0x19, 0x40, 0x71, 0x10, 0x84, 0x7d, 0x5a, 0x27, - 0xd6, 0x23, 0x94, 0x50, 0xe3, 0x61, 0x15, 0x1a, 0x17, 0x9a, 0x37, 0x0e, 0xae, 0x58, 0x2a, 0xe5, - 0x3b, 0x00, 0x33, 0x15, 0x7b, 0xf0, 0x62, 0x42, 0x89, 0x72, 0x96, 0x7d, 0x88, 0x74, 0xc3, 0xec, - 0x43, 0x73, 0x29, 0x55, 0x11, 0xfb, 0x50, 0xb5, 0x77, 0xdd, 0x7a, 0x65, 0xad, 0xbc, 0xa6, 0x1c, - 0xe2, 0xde, 0x2c, 0x32, 0xf8, 0xed, 0xa7, 0x3c, 0x2b, 0x82, 0x0b, 0x1e, 0xd8, 0x6e, 0x39, 0x56, - 0xd4, 0x95, 0x93, 0x15, 0x79, 0xbf, 0x4b, 0x5e, 0xc4, 0xb1, 0x9e, 0x20, 0x2a, 0xa2, 0xa4, 0x00, - 0xf6, 0x25, 0x87, 0xd0, 0x64, 0xbc, 0xe7, 0xa9, 0x5f, 0x93, 0xef, 0xf7, 0x1b, 0x2d, 0xa4, 0x39, - 0x14, 0xaf, 0xac, 0x5e, 0x53, 0x94, 0x58, 0x0c, 0xb0, 0x6a, 0x9f, 0x26, 0x2f, 0x40, 0xf3, 0xfc, - 0x0c, 0xb9, 0xad, 0x1b, 0x0b, 0x5d, 0xf8, 0xd6, 0xa2, 0xc9, 0xfc, 0xc3, 0x04, 0xaf, 0xf5, 0x75, - 0x01, 0x1c, 0x94, 0x96, 0xd7, 0x03, 0x73, 0x6d, 0x0f, 0xd7, 0x39, 0xaf, 0x20, 0xdf, 0x5f, 0x09, - 0x68, 0x8e, 0xe9, 0xed, 0xda, 0x1a, 0x49, 0x86, 0x5b, 0xc8, 0xc1, 0xcb, 0xce, 0xb9, 0x87, 0xec, - 0x0f, 0x1f, 0x08, 0xc1, 0x70, 0x2e, 0x61, 0x45, 0x4e, 0x3e, 0x60, 0xdc, 0xf9, 0xe8, 0x99, 0xd0, - 0xf9, 0x58, 0xfd, 0x84, 0x26, 0xff, 0x1c, 0x55, 0xfb, 0x73, 0x8d, 0x8a, 0xc9, 0xeb, 0xe0, 0xaa, - 0x9f, 0x3e, 0x76, 0x8d, 0xe7, 0xe1, 0xbe, 0xbf, 0xcd, 0xe3, 0x9c, 0x62, 0x2c, 0x8d, 0x6f, 0xb7, - 0x67, 0xed, 0x18, 0xcd, 0x1e, 0xca, 0x46, 0xb3, 0x5c, 0x53, 0x23, 0xa6, 0xb2, 0x95, 0x91, 0x64, - 0x7c, 0xe7, 0xb8, 0x38, 0x74, 0xd9, 0x2f, 0x50, 0xb1, 0xd1, 0x42, 0x9c, 0x8e, 0xf2, 0xb6, 0xab, - 0x3b, 0x29, 0x0a, 0xe1, 0x3f, 0xc5, 0xe5, 0xa8, 0x60, 0x47, 0xa0, 0xb9, 0x15, 0xa6, 0x3d, 0x59, - 0x9a, 0x6f, 0x7b, 0xf6, 0xd4, 0x4a, 0x62, 0xb8, 0xd2, 0xf7, 0x1f, 0x0a, 0x00, 0x57, 0x7b, 0x1e, - 0x11, 0xaa, 0x7f, 0xa1, 0xc9, 0x1b, 0x90, 0xe2, 0xcf, 0xb9, 0x0f, 0xd2, 0xdd, 0x39, 0x76, 0xd1, - 0x8d, 0xf7, 0xfb, 0xd1, 0x54, 0xeb, 0x57, 0xc5, 0x52, 0x34, 0x69, 0x07, 0x7d, 0xb9, 0x22, 0x78, - 0xf3, 0xca, 0x8b, 0x15, 0xf6, 0xd3, 0xf7, 0x0f, 0x02, 0x77, 0x0e, 0x37, 0xc0, 0xc1, 0x9e, 0xb8, - 0xfd, 0x04, 0xb8, 0xea, 0x87, 0x34, 0x79, 0x19, 0x5a, 0xea, 0x77, 0x9d, 0x0b, 0xa7, 0x13, 0x00, - 0x89, 0x87, 0x12, 0xc2, 0xbf, 0xf5, 0x70, 0x3a, 0x7e, 0xb3, 0xcd, 0x8f, 0xc2, 0xeb, 0x84, 0x9f, - 0xd3, 0xf8, 0xa4, 0x91, 0x75, 0x9a, 0xfc, 0x0c, 0xaa, 0xf7, 0xbb, 0xaf, 0x08, 0xa7, 0x05, 0xe0, - 0x97, 0xd1, 0x0d, 0x13, 0xd7, 0xa1, 0x12, 0xbe, 0x1b, 0xab, 0x7f, 0x25, 0x5e, 0xd4, 0x7c, 0xde, - 0xbf, 0xd2, 0x8b, 0x26, 0xd3, 0x1f, 0xa6, 0x93, 0x89, 0xc2, 0x17, 0xf9, 0xae, 0xe7, 0xa1, 0x99, - 0xc6, 0xd8, 0x36, 0xc5, 0x82, 0xb7, 0x21, 0xa6, 0x8a, 0x4f, 0x32, 0x9b, 0x29, 0x08, 0x3c, 0xe4, - 0x14, 0xa4, 0x36, 0xd3, 0xf9, 0xec, 0xc9, 0x00, 0x91, 0xf8, 0xc8, 0xd5, 0x1e, 0x1e, 0x0e, 0xd0, - 0xaf, 0x53, 0x1b, 0x6a, 0xd2, 0xe9, 0xa1, 0x0d, 0xc8, 0x3c, 0xab, 0x34, 0xb9, 0xd6, 0xe9, 0xa1, - 0xcd, 0x62, 0xeb, 0x43, 0x9b, 0x4d, 0xb1, 0xe0, 0x84, 0x5f, 0xd9, 0x3c, 0xae, 0xc9, 0x8f, 0xa1, - 0x47, 0xfd, 0x8e, 0xeb, 0xcf, 0xd8, 0x54, 0x6a, 0xf0, 0x30, 0x8d, 0xd6, 0x41, 0x90, 0x23, 0xd3, - 0xd3, 0xbe, 0x23, 0x16, 0xa4, 0x94, 0xf6, 0xd7, 0x1e, 0x34, 0x2b, 0xab, 0xed, 0x8f, 0xc2, 0xed, - 0x9f, 0xcd, 0x67, 0x7c, 0x14, 0x46, 0x35, 0x6d, 0xce, 0x2b, 0x61, 0x5b, 0x46, 0xfa, 0xe4, 0x93, - 0x5b, 0x46, 0x3b, 0x8d, 0xe1, 0xab, 0x2b, 0xeb, 0xc9, 0xb8, 0xfa, 0x0b, 0xdc, 0xd5, 0x7f, 0x26, - 0x7b, 0xa3, 0x02, 0x04, 0x45, 0x1f, 0x91, 0x94, 0xa1, 0xa2, 0x70, 0x6c, 0xc7, 0xf2, 0xda, 0x70, - 0x88, 0x86, 0xd5, 0x51, 0x8c, 0xdf, 0xb4, 0xee, 0x21, 0x52, 0x97, 0x6f, 0xd4, 0x91, 0xdf, 0xe2, - 0x32, 0x54, 0x10, 0x0c, 0x87, 0xe2, 0x89, 0xd2, 0x02, 0xb2, 0x1c, 0xf3, 0xb2, 0x97, 0x43, 0x4e, - 0x24, 0xc2, 0x89, 0x64, 0x20, 0x92, 0xc4, 0xd0, 0x0a, 0xc0, 0x8a, 0x0b, 0xd1, 0x94, 0x40, 0x33, - 0x79, 0x84, 0xa7, 0xd6, 0xc7, 0xd6, 0xb5, 0xb6, 0x80, 0xa1, 0x44, 0xb1, 0x16, 0xfa, 0x9e, 0x40, - 0x53, 0x2c, 0xad, 0xf1, 0x6c, 0x70, 0x7b, 0x36, 0x9b, 0x20, 0x1d, 0x1b, 0xfe, 0x97, 0x5c, 0x19, - 0x3c, 0x44, 0x1b, 0x61, 0xfc, 0xf6, 0xed, 0x29, 0xe4, 0x94, 0x11, 0x8d, 0xe4, 0x3d, 0xeb, 0xed, - 0xc8, 0x21, 0x56, 0x59, 0x39, 0x04, 0x09, 0xe1, 0x4b, 0x39, 0xc4, 0x42, 0x37, 0x0e, 0x01, 0xef, - 0x84, 0xe8, 0x0d, 0x9d, 0xf2, 0x89, 0x35, 0xd4, 0x86, 0x02, 0xac, 0x01, 0xdf, 0xd5, 0xa9, 0x0d, - 0xa5, 0xd2, 0xb5, 0x17, 0xc3, 0x1c, 0xc2, 0x77, 0x07, 0x26, 0x95, 0x55, 0xa8, 0x08, 0x9e, 0x08, - 0xd7, 0xd7, 0xd1, 0x3b, 0x12, 0x08, 0xf0, 0xac, 0x90, 0x1d, 0x0d, 0xd0, 0x1f, 0x94, 0x1a, 0x03, - 0x53, 0x0c, 0x30, 0xf1, 0xd7, 0x68, 0x4a, 0x38, 0x82, 0x39, 0x3a, 0x15, 0xd1, 0x69, 0xa6, 0x1b, - 0x32, 0x3c, 0x6b, 0x8d, 0x61, 0x54, 0xb9, 0x7a, 0x41, 0xef, 0x38, 0x47, 0x5f, 0x42, 0x71, 0xc1, - 0x80, 0xe8, 0x8a, 0x5b, 0x1b, 0x39, 0x73, 0xc7, 0xa2, 0x89, 0x70, 0x47, 0x18, 0x2a, 0x7c, 0x69, - 0x9c, 0xdc, 0x51, 0x7c, 0x9a, 0x12, 0x5e, 0x31, 0x8b, 0x7a, 0xb5, 0x8c, 0x06, 0x23, 0x79, 0x80, - 0x5f, 0x6b, 0xba, 0xac, 0xa4, 0x17, 0xbd, 0xbb, 0x43, 0x3f, 0xf4, 0x21, 0x86, 0x31, 0x57, 0x89, - 0x34, 0xa9, 0x7e, 0x52, 0x93, 0x57, 0xa0, 0xc7, 0xfc, 0x22, 0x46, 0x65, 0x2b, 0x16, 0x4b, 0xf7, - 0x9a, 0xea, 0x42, 0x6e, 0x87, 0x2a, 0x46, 0xdb, 0x76, 0x8f, 0x76, 0xec, 0x4f, 0x0d, 0xec, 0xd7, - 0x0f, 0x75, 0xa7, 0x06, 0x0f, 0xfb, 0xfe, 0x86, 0xd7, 0xae, 0x18, 0x5d, 0xdc, 0x1e, 0xec, 0x76, - 0xa3, 0x85, 0xdd, 0xce, 0xb6, 0x85, 0x9e, 0x21, 0xb3, 0x71, 0x7d, 0xb6, 0xc8, 0x2f, 0x8b, 0xd3, - 0x7b, 0xab, 0x3b, 0x2c, 0x8b, 0x6a, 0x55, 0xc2, 0xf2, 0x6d, 0xdd, 0x24, 0x9a, 0xf6, 0x42, 0x54, - 0x08, 0xcd, 0xc5, 0xfb, 0x19, 0x99, 0x02, 0x3f, 0x99, 0xa1, 0xc9, 0x53, 0x19, 0x99, 0xc2, 0x3f, - 0x8c, 0x0e, 0x97, 0x71, 0x94, 0xe3, 0x31, 0x15, 0x30, 0x26, 0xe5, 0x14, 0xc1, 0x97, 0xeb, 0xeb, - 0x38, 0x32, 0x59, 0x81, 0x10, 0x7d, 0x91, 0x6f, 0x46, 0x14, 0x00, 0xaf, 0x59, 0xb3, 0x58, 0x2a, - 0xe1, 0x11, 0x4a, 0xe1, 0x6a, 0xc4, 0xc7, 0x51, 0x31, 0x66, 0x8b, 0x4a, 0x20, 0x62, 0x7d, 0x53, - 0x65, 0x96, 0x4a, 0xd3, 0xa1, 0xb1, 0xb7, 0xbe, 0x61, 0xc7, 0x72, 0x6f, 0x6d, 0x7d, 0x9d, 0xa2, - 0x98, 0x95, 0xe2, 0xd3, 0x68, 0x0a, 0x63, 0xf9, 0xd0, 0x47, 0x81, 0x69, 0x45, 0xb5, 0xd6, 0xf0, - 0xfd, 0x3c, 0x04, 0xfd, 0x58, 0x01, 0x8c, 0x80, 0x0a, 0x85, 0xe6, 0x30, 0x80, 0x0f, 0xcd, 0x32, - 0x69, 0xba, 0xf7, 0x82, 0xe9, 0x75, 0x0a, 0xfc, 0x46, 0x45, 0x77, 0x1a, 0xde, 0x80, 0xf5, 0x0d, - 0x72, 0x28, 0x14, 0x57, 0x13, 0x09, 0x48, 0xaf, 0x84, 0x39, 0x46, 0x3e, 0xf8, 0xc0, 0xba, 0xc1, - 0x48, 0x53, 0xf4, 0xae, 0xf7, 0x53, 0x37, 0x8e, 0x7b, 0xeb, 0x1b, 0xbc, 0xe9, 0x23, 0x97, 0x15, - 0x37, 0x38, 0x8b, 0xa5, 0xb8, 0xc8, 0xd1, 0x52, 0xec, 0x3c, 0x48, 0xd3, 0x52, 0xfc, 0x22, 0x62, - 0x61, 0xa6, 0x08, 0xf5, 0x8f, 0xa1, 0xf5, 0x20, 0x88, 0xcb, 0x1a, 0x48, 0x73, 0x68, 0xe7, 0x84, - 0xcf, 0x8d, 0xbc, 0x43, 0x5f, 0xac, 0x83, 0x26, 0xd6, 0x88, 0x5e, 0x25, 0x26, 0xd0, 0x8c, 0x6d, - 0x2f, 0xad, 0x53, 0x5b, 0x93, 0xf1, 0x68, 0xa4, 0x91, 0x61, 0x12, 0x98, 0xd7, 0x31, 0x5a, 0xfb, - 0xed, 0xb5, 0x52, 0xa5, 0xbe, 0xff, 0x40, 0x6a, 0x60, 0x50, 0xef, 0xbf, 0xae, 0x0f, 0xbe, 0x09, - 0x1f, 0x29, 0x5f, 0x1f, 0x53, 0x23, 0x8d, 0xc9, 0x40, 0x70, 0xbb, 0x97, 0x42, 0x2f, 0x4a, 0x1f, - 0x38, 0xa7, 0x1f, 0x7c, 0xb7, 0xbe, 0x4e, 0xb1, 0xf7, 0x50, 0x8d, 0x4f, 0x2b, 0x34, 0xdb, 0x4f, - 0xb1, 0x9d, 0xa1, 0x9a, 0x19, 0xc2, 0x71, 0x41, 0xed, 0x36, 0x35, 0xb8, 0x1d, 0xef, 0x72, 0x6d, - 0x34, 0xb2, 0xb5, 0x39, 0x1c, 0x4c, 0xae, 0x8a, 0x47, 0x5b, 0x36, 0xc5, 0x82, 0x5f, 0xff, 0xc4, - 0x2d, 0xb7, 0x48, 0x2c, 0x35, 0xa2, 0x26, 0x4f, 0x63, 0xaf, 0x6a, 0x0b, 0x53, 0x83, 0x87, 0x77, - 0xc4, 0x82, 0x4c, 0x8a, 0x91, 0xa8, 0x84, 0xc0, 0x45, 0xdc, 0x20, 0x05, 0xd2, 0x1d, 0x90, 0x2a, - 0x26, 0xd3, 0xd3, 0x8e, 0x7f, 0x32, 0xf6, 0x4a, 0x24, 0x08, 0xd3, 0x4e, 0x97, 0x3f, 0x71, 0xaf, - 0x4e, 0xcb, 0xb1, 0x5e, 0x30, 0xa1, 0x2b, 0x2a, 0x15, 0xa0, 0xc7, 0x5a, 0x37, 0x69, 0x36, 0x9c, - 0xc5, 0x64, 0xdc, 0x7b, 0x3e, 0xca, 0x7c, 0xb0, 0x0b, 0xa6, 0xe2, 0x4b, 0x7b, 0x90, 0xd7, 0xbd, - 0xed, 0xed, 0xc1, 0xdc, 0xeb, 0x2d, 0x36, 0x6c, 0xfb, 0x8d, 0x95, 0xce, 0x8a, 0x50, 0x0a, 0x61, - 0x92, 0xc0, 0xe2, 0x4b, 0x60, 0x21, 0x68, 0x67, 0xc0, 0xd0, 0x69, 0x04, 0xfc, 0x31, 0x97, 0x44, - 0x9a, 0x0f, 0x28, 0xc3, 0xaf, 0x25, 0x3f, 0x36, 0x3b, 0x8f, 0x5f, 0x88, 0x4a, 0xf8, 0x81, 0x60, - 0x01, 0x1a, 0x44, 0x5e, 0xd0, 0x9d, 0xc0, 0x0f, 0x9f, 0x96, 0xc7, 0x85, 0x0a, 0x68, 0x54, 0x83, - 0xad, 0xf1, 0x70, 0x72, 0xe7, 0x37, 0x15, 0x90, 0xeb, 0xab, 0xc9, 0x9c, 0x2f, 0xda, 0x65, 0xce, - 0x1a, 0x4d, 0x7e, 0x82, 0x47, 0x4e, 0x89, 0x43, 0xce, 0xf2, 0xd1, 0x13, 0x27, 0xf5, 0x9b, 0x1d, - 0xa9, 0xe1, 0xd3, 0x15, 0x7a, 0xc7, 0xb0, 0x7e, 0xe9, 0x7a, 0xe6, 0xec, 0x67, 0x7a, 0xf7, 0x60, - 0xa6, 0xab, 0x53, 0xd7, 0xba, 0xf5, 0x3d, 0x1d, 0xa3, 0xaf, 0x5d, 0xc8, 0x74, 0x75, 0x2e, 0xe2, - 0x45, 0x53, 0xd5, 0x3d, 0xc6, 0x03, 0x71, 0xd3, 0x72, 0x10, 0xae, 0x16, 0x10, 0xe1, 0x2a, 0x35, - 0xd0, 0x37, 0x81, 0xbb, 0x26, 0xee, 0x0b, 0x49, 0xa0, 0x87, 0x70, 0x5c, 0x5a, 0xa6, 0xce, 0xd1, - 0x2f, 0x75, 0xe9, 0x1d, 0x17, 0x32, 0x43, 0xed, 0xf4, 0x92, 0xf9, 0x85, 0x07, 0x2d, 0x70, 0xdd, - 0x94, 0xdb, 0x83, 0x44, 0x1a, 0x2c, 0xf2, 0xcf, 0x3c, 0x7b, 0xe8, 0x3d, 0x6e, 0x52, 0xe3, 0xbb, - 0x73, 0xf2, 0xae, 0x82, 0xce, 0x6b, 0x62, 0x38, 0x5f, 0x5a, 0x97, 0xd3, 0x4d, 0x08, 0xda, 0x95, - 0x87, 0x88, 0x1c, 0xf5, 0x8c, 0xba, 0xb3, 0x21, 0x10, 0x8e, 0xff, 0x84, 0xef, 0x5f, 0x17, 0xdf, - 0x97, 0x6a, 0xf2, 0x62, 0x54, 0xe1, 0x77, 0x5a, 0x54, 0x03, 0xd3, 0xfb, 0xf7, 0x8c, 0x6a, 0xe7, - 0xf0, 0x79, 0x0e, 0x98, 0xfe, 0x7f, 0x78, 0x40, 0x15, 0x66, 0x82, 0xff, 0x28, 0x8c, 0xa7, 0x74, - 0x3a, 0x13, 0x7f, 0x24, 0x97, 0xbd, 0x0e, 0x86, 0x50, 0x0f, 0xeb, 0x96, 0x13, 0x9f, 0xff, 0x95, - 0x80, 0x26, 0xd1, 0xf6, 0xa2, 0x1f, 0x15, 0x3c, 0xa3, 0xee, 0x34, 0x30, 0x98, 0x3c, 0x51, 0x80, - 0x12, 0xa9, 0x08, 0xfa, 0xc2, 0x82, 0x3d, 0x29, 0x10, 0x97, 0x93, 0x66, 0xdc, 0x8b, 0x38, 0x78, - 0xf8, 0x4c, 0xcb, 0xa4, 0x12, 0xfa, 0x6d, 0xd8, 0x76, 0x56, 0x9c, 0x1d, 0xf5, 0x35, 0xcf, 0x2d, - 0xea, 0x2b, 0xb4, 0xb6, 0x04, 0xa7, 0xb2, 0x44, 0x7d, 0xa5, 0xa1, 0xf1, 0xd8, 0xc8, 0xa5, 0x69, - 0x06, 0x8a, 0x50, 0x21, 0xed, 0xfd, 0x12, 0xb8, 0x05, 0xf2, 0x4f, 0xa4, 0x0d, 0x5a, 0xdd, 0x27, - 0x38, 0x06, 0x8a, 0x20, 0x31, 0xa0, 0xac, 0x0f, 0x54, 0x37, 0xf0, 0xaf, 0x4f, 0x2b, 0x38, 0x33, - 0x23, 0x0b, 0xba, 0xea, 0x65, 0x99, 0x37, 0xc2, 0x91, 0xa6, 0x28, 0x19, 0x5b, 0x85, 0x97, 0x10, - 0x36, 0xfd, 0x67, 0x47, 0x2c, 0x58, 0xe1, 0x8d, 0x44, 0x43, 0x2a, 0xa1, 0x82, 0x0a, 0x6f, 0x32, - 0x90, 0xd8, 0xfe, 0xcd, 0x05, 0x9c, 0x68, 0x40, 0xc5, 0x24, 0x57, 0x1c, 0x79, 0x46, 0x9e, 0x47, - 0x6e, 0x06, 0xe4, 0xe9, 0x91, 0x59, 0x2a, 0xf9, 0x20, 0x0b, 0xb3, 0x91, 0x1a, 0x6e, 0xf5, 0xda, - 0x0d, 0x5e, 0xf8, 0x91, 0xee, 0xbc, 0x7a, 0x6b, 0xb8, 0x3b, 0x73, 0x5e, 0x53, 0x4c, 0x70, 0xf1, - 0x69, 0x34, 0x49, 0x8d, 0x40, 0x5a, 0xe5, 0x7c, 0xd2, 0x1f, 0x24, 0x51, 0xa2, 0x65, 0x92, 0x0f, - 0x63, 0xf4, 0x89, 0x53, 0x39, 0x7b, 0x63, 0xc0, 0xe2, 0x83, 0xa8, 0xa0, 0x39, 0xdc, 0x12, 0x4e, - 0x52, 0x57, 0xe2, 0x05, 0xc4, 0x90, 0x4e, 0x4a, 0xa4, 0x92, 0x74, 0xff, 0xc1, 0xd1, 0x33, 0x9f, - 0xb0, 0xdc, 0xae, 0xf9, 0x7e, 0x8f, 0xf7, 0x67, 0x0a, 0xd4, 0x89, 0x15, 0x28, 0x3f, 0x86, 0x29, - 0x12, 0x1c, 0x8a, 0x4b, 0xf1, 0xd5, 0x92, 0x14, 0x48, 0x85, 0xa3, 0x67, 0x3e, 0xc9, 0x9c, 0xde, - 0xc5, 0xc0, 0x49, 0xa1, 0x58, 0x8b, 0x0a, 0x13, 0xe1, 0x96, 0x58, 0x33, 0xcb, 0x1a, 0x4c, 0x6e, - 0x46, 0xb4, 0x48, 0x9a, 0xaf, 0x1f, 0xfc, 0x00, 0x5c, 0x45, 0xbd, 0x51, 0x1e, 0x11, 0xbc, 0x8c, - 0x99, 0x02, 0x9c, 0xd8, 0x26, 0x20, 0x04, 0xb1, 0x04, 0xd6, 0xb5, 0x36, 0x37, 0xd3, 0x94, 0xbf, - 0xe4, 0xe1, 0x0c, 0x57, 0x2c, 0xad, 0x87, 0x48, 0x31, 0x5b, 0x03, 0xcd, 0x09, 0xb5, 0x02, 0x54, - 0x1b, 0x50, 0x0b, 0xee, 0xb7, 0x46, 0xce, 0x95, 0xc7, 0xbc, 0xfa, 0x8d, 0x37, 0x68, 0x0e, 0xdd, - 0xf4, 0xb1, 0x6b, 0x15, 0xa9, 0x81, 0xfd, 0x8e, 0xd0, 0x0a, 0xd7, 0xb9, 0xf8, 0x02, 0x6f, 0x48, - 0x2d, 0x36, 0xdf, 0xfb, 0x71, 0x86, 0xd4, 0x2a, 0x23, 0xbd, 0x23, 0x79, 0x8f, 0x03, 0x7d, 0xd2, - 0x97, 0x54, 0x43, 0x1f, 0xd3, 0x44, 0x80, 0x10, 0x37, 0x83, 0x3c, 0xff, 0xe7, 0xed, 0xad, 0x2f, - 0xf0, 0xd6, 0x07, 0xc4, 0x75, 0x6f, 0xba, 0xc6, 0x38, 0x77, 0x0f, 0xca, 0x6c, 0xe7, 0xee, 0x4d, - 0xf3, 0xc5, 0x4a, 0xc3, 0xf6, 0x3f, 0x99, 0xf3, 0x7c, 0xa6, 0xb6, 0x7f, 0xaf, 0xb5, 0x63, 0x88, - 0xc5, 0x00, 0x9e, 0x00, 0x99, 0xbe, 0xb7, 0x47, 0xdb, 0xba, 0x0c, 0xfb, 0xff, 0x33, 0x5c, 0x34, - 0x89, 0x12, 0x96, 0x10, 0xa0, 0xc2, 0x6f, 0x14, 0xba, 0x74, 0x45, 0xa8, 0x93, 0x76, 0x65, 0x86, - 0x9f, 0x78, 0x08, 0x79, 0x76, 0x48, 0xd4, 0x71, 0x99, 0xb8, 0xa5, 0x7b, 0x76, 0x48, 0xd2, 0x3c, - 0xb8, 0x6e, 0xc2, 0x2d, 0x73, 0x87, 0x44, 0x5c, 0x95, 0x31, 0xab, 0xa4, 0x21, 0xeb, 0x3c, 0x3b, - 0x24, 0xb1, 0xce, 0x78, 0x0b, 0x32, 0xd5, 0x0c, 0x74, 0xcb, 0xde, 0x82, 0x2c, 0xb0, 0xbc, 0xf4, - 0x80, 0x42, 0x58, 0x29, 0x18, 0x0b, 0x7b, 0xf4, 0x21, 0x6e, 0x30, 0x02, 0x59, 0x4c, 0x63, 0x01, - 0x0b, 0x1e, 0x35, 0x02, 0x59, 0x38, 0x2e, 0x35, 0x9d, 0x8c, 0xe3, 0x52, 0xb3, 0x48, 0x17, 0x2f, - 0xc2, 0x02, 0x11, 0xb6, 0x3b, 0x9d, 0xf4, 0x5b, 0x47, 0x22, 0x46, 0xb3, 0x42, 0xe9, 0x41, 0xf7, - 0x9e, 0x81, 0x17, 0x3b, 0xf7, 0x6f, 0x74, 0x20, 0x36, 0x67, 0x05, 0xed, 0x98, 0x41, 0xbe, 0xf2, - 0x94, 0x26, 0xaf, 0xcc, 0x8a, 0xaa, 0xe2, 0xf8, 0x25, 0x3e, 0xd2, 0x8a, 0xf3, 0x97, 0x2c, 0x9d, - 0x88, 0x35, 0x46, 0x28, 0x13, 0xd1, 0x54, 0xab, 0xb2, 0x00, 0x36, 0xf3, 0xac, 0x5f, 0xd0, 0x0f, - 0x1e, 0x1e, 0xf9, 0xe4, 0xd3, 0x91, 0xb6, 0x0e, 0x86, 0x34, 0x00, 0xc6, 0x1c, 0x02, 0x5c, 0xd9, - 0x3d, 0x53, 0x92, 0xf1, 0xf1, 0x31, 0x20, 0x28, 0x13, 0xe4, 0x02, 0xf3, 0x8d, 0x7a, 0x40, 0x75, - 0xce, 0xc5, 0x21, 0x31, 0x8e, 0x8a, 0x55, 0x59, 0xf1, 0x48, 0x48, 0xb4, 0x76, 0xb6, 0x8d, 0x77, - 0x8f, 0x7f, 0xe3, 0x14, 0x5b, 0x88, 0x12, 0xa2, 0x27, 0x35, 0x43, 0x94, 0xdc, 0xcf, 0xf7, 0x05, - 0x81, 0x4a, 0x5c, 0xb6, 0xca, 0x88, 0x5b, 0xc2, 0x18, 0x65, 0xde, 0xb8, 0x18, 0xa5, 0xc1, 0x8d, - 0xf3, 0x27, 0xc2, 0x8d, 0xab, 0xd7, 0x6a, 0xf2, 0xd3, 0xe8, 0x29, 0xbf, 0xdb, 0x02, 0x49, 0x0b, - 0xa9, 0x53, 0x28, 0x37, 0x6e, 0xfb, 0x12, 0x7f, 0x2e, 0xd0, 0x75, 0xf0, 0x1d, 0xa5, 0x36, 0xe7, - 0xac, 0x8d, 0xba, 0x3d, 0xe4, 0xb7, 0xe7, 0x2c, 0x37, 0xf8, 0x4a, 0x27, 0xcf, 0x0b, 0xc7, 0x79, - 0xd5, 0x05, 0x92, 0x01, 0xcb, 0x95, 0x9e, 0xbe, 0x76, 0x24, 0xef, 0x92, 0x41, 0x9e, 0xf3, 0xf5, - 0x09, 0x68, 0x36, 0x5b, 0x63, 0x45, 0x0d, 0x46, 0xe3, 0x21, 0x03, 0x07, 0x37, 0x64, 0xe1, 0xe0, - 0x37, 0xc2, 0x4a, 0x8c, 0x60, 0xbd, 0xce, 0x1f, 0x35, 0x9c, 0x7d, 0x49, 0x4f, 0xf4, 0x55, 0x06, - 0x4f, 0x34, 0x07, 0x38, 0xa2, 0x31, 0x9a, 0xde, 0x6e, 0x51, 0xab, 0xf1, 0x36, 0xde, 0x9f, 0xbd, - 0x8d, 0x0e, 0x33, 0x1a, 0xcf, 0x06, 0xf6, 0x7a, 0xd0, 0x9d, 0x2e, 0x4d, 0xc5, 0xb8, 0x71, 0x3c, - 0x0a, 0x66, 0x6a, 0x2b, 0x76, 0x3c, 0xae, 0xa5, 0xb4, 0x03, 0x91, 0x86, 0x20, 0x74, 0xdd, 0x4b, - 0x81, 0x70, 0x32, 0x1c, 0x69, 0xaa, 0xf0, 0x36, 0x47, 0x03, 0x21, 0xf2, 0x47, 0xa2, 0x35, 0x18, - 0x54, 0x13, 0x89, 0x0a, 0xef, 0xb6, 0x40, 0xf3, 0xd6, 0x46, 0xf6, 0x63, 0x6b, 0x20, 0xdc, 0xac, - 0x86, 0x2a, 0xbc, 0x2c, 0x83, 0xb5, 0x6a, 0xfa, 0xd2, 0x75, 0x0b, 0x28, 0x1f, 0xb3, 0x8a, 0x52, - 0x0f, 0xb9, 0x6d, 0xcc, 0x77, 0x9f, 0x26, 0x26, 0xe9, 0x9a, 0x5f, 0x6a, 0xf2, 0x46, 0x3f, 0x69, - 0xf0, 0x4d, 0x0f, 0x88, 0x74, 0xea, 0x1b, 0xca, 0x47, 0x53, 0xad, 0x9f, 0x14, 0x1f, 0xe0, 0x7d, - 0xb5, 0xe9, 0xf2, 0x12, 0xbb, 0x51, 0x09, 0x7f, 0x60, 0x51, 0x4b, 0xee, 0x13, 0xc6, 0x12, 0xe6, - 0x99, 0x11, 0xc3, 0xd8, 0x12, 0x96, 0x59, 0xd8, 0x26, 0x8c, 0x58, 0x3f, 0xd4, 0x9d, 0x1a, 0x78, - 0xdd, 0x5c, 0x8f, 0x5a, 0x5e, 0x56, 0xc6, 0x5b, 0x9f, 0x07, 0x0f, 0xab, 0x39, 0x59, 0x79, 0x16, - 0xfd, 0x2e, 0x27, 0x31, 0xa7, 0x3b, 0xaf, 0xf2, 0xe2, 0xf1, 0x0a, 0x53, 0x3c, 0x2e, 0x20, 0x5d, - 0x90, 0x87, 0x26, 0x86, 0x78, 0x3c, 0x8b, 0x11, 0x9e, 0x29, 0x24, 0xe3, 0x0e, 0x0c, 0x89, 0x98, - 0x25, 0xcf, 0x29, 0x24, 0x5b, 0xe2, 0xcb, 0xbd, 0x25, 0x04, 0xe9, 0xc6, 0xd5, 0x3f, 0xe4, 0x20, - 0xd9, 0x8c, 0x8a, 0x03, 0xcd, 0xcd, 0xd1, 0x97, 0x1a, 0xb7, 0x87, 0x63, 0x54, 0x18, 0xa6, 0xcf, - 0x28, 0x58, 0xa9, 0xb4, 0x54, 0xbf, 0xf1, 0x86, 0xde, 0xb5, 0x9f, 0xc6, 0xc1, 0x22, 0xd9, 0x75, - 0x69, 0x6e, 0x1b, 0xc8, 0xc9, 0xfc, 0xe9, 0x55, 0x2c, 0xdb, 0x50, 0x47, 0xd1, 0x3d, 0x1d, 0x99, - 0x1b, 0x97, 0x14, 0xb3, 0xb5, 0xb8, 0x13, 0x21, 0xf2, 0x43, 0x51, 0x93, 0xf1, 0x9d, 0x54, 0x48, - 0xfe, 0x95, 0x26, 0x6f, 0xf2, 0x73, 0xc5, 0xd2, 0x53, 0xb9, 0x3f, 0x01, 0x99, 0x7c, 0xcb, 0x81, - 0x69, 0x8d, 0xbe, 0x76, 0x03, 0xf2, 0xb7, 0x41, 0xe9, 0x22, 0xeb, 0x97, 0xb9, 0x5e, 0x7d, 0x37, - 0x04, 0x24, 0xda, 0x57, 0x47, 0x7c, 0x00, 0xe5, 0x35, 0x47, 0x9b, 0xf8, 0xc0, 0xee, 0xf8, 0xb7, - 0x34, 0x0d, 0xc6, 0x30, 0x72, 0xa6, 0x5b, 0xdf, 0xd3, 0xa1, 0x5f, 0xba, 0xae, 0xe0, 0x52, 0xf1, - 0x61, 0x54, 0x9c, 0x0c, 0xb7, 0xa8, 0x89, 0x64, 0xa0, 0x25, 0x46, 0x70, 0x2e, 0x0f, 0x9a, 0x98, - 0xa5, 0x52, 0x31, 0xb7, 0xe9, 0x46, 0xa9, 0x28, 0x5b, 0x83, 0x19, 0x90, 0x1b, 0x06, 0x8d, 0x0f, - 0xb6, 0xc0, 0x1e, 0x1f, 0xcc, 0xfb, 0x0b, 0x59, 0x59, 0x57, 0xe1, 0xb5, 0x84, 0x09, 0xf3, 0xf5, - 0x0b, 0x10, 0xe4, 0xc7, 0xf5, 0x78, 0x10, 0x97, 0xa3, 0x02, 0xa2, 0x78, 0xa1, 0x4c, 0x13, 0xa2, - 0x93, 0x90, 0x12, 0x6b, 0x64, 0x2f, 0x16, 0x0e, 0x93, 0x54, 0x89, 0xbf, 0x44, 0x93, 0x80, 0xa9, - 0x25, 0x28, 0x99, 0xdb, 0x70, 0x8a, 0xff, 0x62, 0x9d, 0x9a, 0x0c, 0x84, 0x9b, 0xe9, 0x4d, 0x9d, - 0xb6, 0xcb, 0xe2, 0x65, 0xac, 0xd8, 0xb7, 0xbb, 0x00, 0x89, 0xf6, 0xb6, 0xdf, 0x4c, 0x88, 0xc5, - 0x6a, 0x87, 0x1b, 0x2f, 0x19, 0x14, 0x7f, 0xe3, 0x2d, 0x86, 0x0e, 0xbc, 0x59, 0x57, 0xde, 0x15, - 0x59, 0x31, 0x16, 0x21, 0x38, 0x02, 0x3d, 0x0c, 0x4b, 0x81, 0x3e, 0xbc, 0x0e, 0x6f, 0x2b, 0xa9, - 0x1c, 0xf6, 0xd5, 0xe2, 0xb5, 0x8d, 0x27, 0xce, 0xe2, 0x48, 0x5b, 0xc7, 0x44, 0xe3, 0x2c, 0x1e, - 0x3c, 0x9c, 0x79, 0xf3, 0x94, 0x43, 0x9c, 0xc5, 0x4d, 0x28, 0x1f, 0x0f, 0x97, 0x10, 0xf1, 0x64, - 0x69, 0xa6, 0x13, 0x9b, 0x80, 0x5b, 0x09, 0x01, 0x93, 0xee, 0xa6, 0x87, 0x74, 0xff, 0x7b, 0x99, - 0xa1, 0x3d, 0xf6, 0xc7, 0xb6, 0xe4, 0x65, 0x28, 0x06, 0x24, 0x61, 0x8c, 0xd8, 0xf5, 0xaa, 0x88, - 0x0f, 0x63, 0xc4, 0xae, 0x57, 0x25, 0xfc, 0x85, 0x8a, 0xbb, 0x4a, 0x2d, 0xb5, 0x46, 0xff, 0xa3, - 0x87, 0x2c, 0x65, 0xbe, 0x25, 0xfc, 0x85, 0x8e, 0x63, 0xb7, 0xd6, 0x7b, 0x04, 0xfa, 0x0a, 0xd1, - 0x19, 0x7d, 0x6f, 0x52, 0x5b, 0xbe, 0x55, 0xf0, 0xbc, 0x1d, 0x9f, 0x2c, 0x56, 0x38, 0x09, 0x8b, - 0x4e, 0xd3, 0x1a, 0xa7, 0xac, 0x38, 0x37, 0x57, 0xfb, 0xaf, 0xc8, 0x4c, 0x7e, 0x91, 0xcd, 0x4c, - 0xee, 0x76, 0xc2, 0x3c, 0xfa, 0xc1, 0x89, 0xf0, 0x92, 0xab, 0x1e, 0x34, 0xc3, 0xd6, 0x54, 0xac, - 0xcc, 0x12, 0x6b, 0x67, 0x69, 0xb2, 0x68, 0x50, 0x72, 0x11, 0x0b, 0xf5, 0x68, 0x50, 0xee, 0xc3, - 0xb6, 0x1b, 0x14, 0x20, 0xaf, 0x71, 0x83, 0x2a, 0x71, 0x09, 0xef, 0xf8, 0xf5, 0xd9, 0xf7, 0xb7, - 0x1b, 0xe5, 0xd1, 0x85, 0x0b, 0xf8, 0xfe, 0x3a, 0x0f, 0xdd, 0x55, 0xdb, 0xac, 0x06, 0x22, 0x75, - 0x5b, 0x9e, 0x0a, 0x27, 0x92, 0xd1, 0xf8, 0x4e, 0xbc, 0xb7, 0xec, 0x52, 0xd0, 0x2e, 0xa0, 0x22, - 0x8c, 0x0c, 0x1c, 0x17, 0xde, 0xa6, 0xc9, 0x6b, 0xfc, 0x46, 0xa1, 0xf4, 0x24, 0x8d, 0x7b, 0x44, - 0x53, 0x46, 0x65, 0xde, 0xbe, 0xa4, 0x77, 0xed, 0x4f, 0x0d, 0x75, 0x40, 0xac, 0x2b, 0xbc, 0xaa, - 0x15, 0xbc, 0x52, 0x2c, 0xd3, 0xd7, 0x35, 0x72, 0xe6, 0x02, 0xdf, 0x06, 0xf2, 0x48, 0xe5, 0x83, - 0xca, 0xd2, 0x00, 0x6d, 0x8e, 0x36, 0x29, 0xc6, 0x47, 0xc4, 0x15, 0xbc, 0x54, 0xe5, 0x21, 0x1a, - 0x43, 0x42, 0xe3, 0x9c, 0x54, 0x35, 0x2d, 0x87, 0x3c, 0xf5, 0xb0, 0x29, 0x4f, 0x81, 0xfa, 0x92, - 0xac, 0x8f, 0x21, 0xef, 0x4c, 0x73, 0x93, 0xa4, 0xaa, 0x07, 0x04, 0x4d, 0xfe, 0x58, 0x40, 0x57, - 0x04, 0xbf, 0xfb, 0x1a, 0x49, 0x6f, 0x08, 0x10, 0x68, 0x26, 0x7d, 0xe2, 0x4c, 0x6a, 0xe8, 0x1a, - 0xe4, 0x3e, 0x86, 0x09, 0xea, 0x83, 0x6f, 0xc0, 0x1f, 0x15, 0x5e, 0x1a, 0x4c, 0x9f, 0xe4, 0xe6, - 0x85, 0x07, 0x60, 0xf4, 0x73, 0x97, 0x3e, 0xc9, 0xf4, 0xb4, 0xc3, 0xcd, 0xa7, 0xc2, 0x0b, 0x8d, - 0x47, 0xba, 0x5f, 0xd3, 0xdf, 0xfe, 0x38, 0x35, 0xb0, 0x9f, 0xca, 0x4b, 0x24, 0xb7, 0xfd, 0x52, - 0xfd, 0xfa, 0xc7, 0x5f, 0xb4, 0xed, 0x4e, 0x0d, 0xbc, 0x69, 0x54, 0xd0, 0x4f, 0xf5, 0xb6, 0x8d, - 0xdc, 0x3c, 0xbc, 0x0c, 0xf7, 0xd8, 0xdb, 0x89, 0xaf, 0x61, 0xe4, 0x8b, 0xbe, 0x21, 0x01, 0x95, - 0x39, 0x8d, 0xf9, 0xb6, 0x60, 0x6b, 0xbe, 0x53, 0x1e, 0x34, 0xc5, 0x62, 0x48, 0x13, 0x9f, 0x41, - 0xd3, 0x12, 0x7c, 0x81, 0x41, 0xd0, 0x24, 0x08, 0x6b, 0x76, 0x9d, 0x34, 0xd9, 0x30, 0xb4, 0xd5, - 0xd7, 0x29, 0xd9, 0xb5, 0xe2, 0x46, 0x34, 0xc3, 0x52, 0xc4, 0x91, 0x3b, 0x91, 0xf8, 0xed, 0xb5, - 0xd2, 0x34, 0xd3, 0x72, 0x47, 0x8d, 0x4c, 0x36, 0x18, 0xb1, 0xd6, 0xc9, 0xee, 0x40, 0xc6, 0x67, - 0xb1, 0x3b, 0x98, 0x5d, 0x39, 0xa5, 0x9a, 0xc3, 0xa2, 0x06, 0xf2, 0xfa, 0xad, 0xd3, 0xe7, 0xda, - 0x50, 0xd3, 0xc3, 0x11, 0x01, 0xdd, 0xb1, 0x2e, 0x1a, 0x52, 0x0d, 0xe9, 0x89, 0xa6, 0x7a, 0x78, - 0x0c, 0xe5, 0xe3, 0xdb, 0x11, 0xb1, 0xa4, 0x3b, 0x5c, 0x3b, 0x1d, 0x9a, 0x90, 0xd7, 0x10, 0xa4, - 0x91, 0x28, 0xa3, 0x49, 0xf4, 0xc2, 0x45, 0x79, 0xf3, 0xb8, 0xdb, 0xb3, 0x76, 0xbe, 0xf5, 0xe8, - 0x4e, 0x17, 0x18, 0xb1, 0x0c, 0x02, 0x23, 0x72, 0x4f, 0x84, 0x8c, 0xdf, 0x7c, 0x1c, 0x62, 0x8f, - 0x25, 0x0e, 0xb1, 0xef, 0x3f, 0x15, 0xa0, 0xe9, 0x75, 0xf1, 0x40, 0x98, 0x84, 0x73, 0x60, 0x7c, - 0xe9, 0x55, 0x54, 0x44, 0x03, 0x62, 0x50, 0x9f, 0x81, 0x9a, 0xcd, 0x9a, 0xfc, 0x07, 0x7e, 0xa3, - 0x50, 0x6a, 0xe0, 0x83, 0xa0, 0xd4, 0x37, 0x98, 0xb1, 0x36, 0xb5, 0x6e, 0x5a, 0x03, 0x2e, 0x82, - 0xe0, 0xc6, 0x36, 0xd8, 0x3d, 0xda, 0xd6, 0x95, 0x1a, 0x68, 0xbb, 0x35, 0xdc, 0x9d, 0x1a, 0x7e, - 0x4b, 0xef, 0xe8, 0xb4, 0xc3, 0x28, 0x46, 0xdf, 0xe2, 0x26, 0x7b, 0x12, 0xce, 0x47, 0x48, 0x3a, - 0x18, 0x53, 0x89, 0x7e, 0x77, 0x2c, 0x1a, 0x1a, 0xb9, 0xb9, 0x2b, 0x73, 0x7e, 0x28, 0x2b, 0xca, - 0x88, 0x01, 0x42, 0x0c, 0xb4, 0x5e, 0x81, 0xd7, 0x9e, 0xc7, 0x51, 0x01, 0x5e, 0x0f, 0x7c, 0xf7, - 0xc4, 0x33, 0xfa, 0x03, 0x4d, 0xfe, 0x95, 0x1f, 0x4a, 0x8c, 0xe9, 0x70, 0x03, 0xb2, 0x4c, 0xc6, - 0x32, 0xcd, 0x71, 0x4d, 0x07, 0x3a, 0x16, 0x67, 0xa2, 0x82, 0xad, 0x24, 0xc7, 0x3c, 0x3e, 0x71, - 0x8a, 0x14, 0xf8, 0x21, 0x2e, 0x46, 0x62, 0x53, 0x3c, 0x10, 0x54, 0x1b, 0xd4, 0x78, 0x38, 0x1a, - 0x6a, 0x54, 0x83, 0xd1, 0x48, 0x28, 0x41, 0x9f, 0x26, 0x3b, 0xd4, 0x88, 0x4b, 0xd0, 0x1d, 0xe1, - 0xa6, 0x48, 0x34, 0xae, 0xca, 0xcd, 0xcd, 0x75, 0x01, 0xb5, 0x25, 0x1a, 0x69, 0x54, 0x93, 0x09, - 0x72, 0x18, 0x15, 0x29, 0x4e, 0x55, 0x78, 0xbf, 0xf1, 0xd5, 0x27, 0xda, 0x0a, 0xbe, 0x66, 0x53, - 0x14, 0xf6, 0x53, 0x2c, 0x47, 0xd3, 0x42, 0x24, 0x91, 0xfb, 0x9a, 0x68, 0x30, 0xd0, 0x8c, 0x99, - 0x16, 0x5c, 0x02, 0x95, 0xec, 0x62, 0x8c, 0x4f, 0x09, 0xb5, 0x59, 0x0d, 0x26, 0xa3, 0x34, 0xa8, - 0xac, 0x62, 0xfc, 0x26, 0x2f, 0x1d, 0xf0, 0xf8, 0x68, 0x35, 0xa2, 0x2f, 0x1d, 0xcc, 0x22, 0xf2, - 0x9d, 0x70, 0x22, 0xb0, 0xa5, 0x59, 0x5d, 0xb9, 0x23, 0x1c, 0x24, 0x04, 0x3b, 0x99, 0x7e, 0xc7, - 0x5a, 0x2c, 0x3e, 0x85, 0x16, 0x24, 0xb6, 0x87, 0x63, 0xbf, 0x08, 0x84, 0x93, 0xab, 0xa2, 0x71, - 0xc8, 0x32, 0xbf, 0x01, 0x46, 0xcb, 0x96, 0xa6, 0x84, 0xcc, 0x61, 0x2c, 0x30, 0x71, 0x36, 0x2a, - 0x0c, 0xc5, 0x77, 0x2a, 0xad, 0x11, 0x30, 0x18, 0x28, 0xf4, 0x97, 0xaf, 0xdd, 0x83, 0x66, 0x70, - 0x38, 0x7e, 0xbb, 0xb9, 0x51, 0x60, 0xd1, 0xf3, 0x9e, 0x71, 0x70, 0x8a, 0xb1, 0x24, 0xce, 0x2e, - 0x0f, 0x9a, 0x8a, 0x9b, 0x99, 0x89, 0x47, 0xc5, 0xc7, 0xb3, 0x79, 0x06, 0xe4, 0x4c, 0x31, 0x0a, - 0xa5, 0x12, 0x1e, 0xb7, 0x19, 0x51, 0x99, 0x7c, 0xe5, 0x25, 0x34, 0x99, 0x4f, 0x97, 0x0a, 0x5c, - 0xad, 0xca, 0x69, 0xac, 0xe6, 0x47, 0x17, 0x73, 0x89, 0x4f, 0xe1, 0x19, 0x1b, 0xd8, 0x8e, 0xf9, - 0xcc, 0xa9, 0x34, 0x4e, 0x51, 0xfa, 0xea, 0x85, 0x91, 0xf3, 0xef, 0x32, 0xdb, 0x31, 0x07, 0x50, - 0xf6, 0x38, 0x9a, 0x9e, 0xdd, 0x8d, 0xc3, 0xdb, 0xb6, 0x99, 0xfc, 0xdb, 0xb6, 0x62, 0xee, 0xed, - 0x9a, 0xef, 0x1f, 0x09, 0x68, 0x2e, 0x64, 0xc6, 0xb5, 0x0e, 0xce, 0xd0, 0xd7, 0x36, 0xda, 0xdf, - 0x44, 0x3e, 0xa8, 0xc9, 0x0f, 0xf0, 0x5c, 0x68, 0x3e, 0x4d, 0x64, 0x3d, 0x7e, 0x16, 0xb4, 0x8e, - 0xb1, 0x20, 0x17, 0x75, 0x9e, 0x75, 0x2c, 0xf4, 0xd5, 0x32, 0xb0, 0xa8, 0x12, 0x3e, 0xf6, 0x09, - 0x65, 0x2f, 0xbe, 0xbf, 0xf3, 0xa0, 0x79, 0x2e, 0xb3, 0xf8, 0x3d, 0x45, 0x72, 0x66, 0xea, 0xc8, - 0xbd, 0x2c, 0xd2, 0x6c, 0x7e, 0xeb, 0x4c, 0xbc, 0xb2, 0x7b, 0x56, 0xa4, 0x05, 0x54, 0x8c, 0x3b, - 0x59, 0x13, 0xd8, 0xa2, 0x36, 0x7f, 0x6d, 0x72, 0xf9, 0x35, 0x2a, 0x6c, 0xc6, 0x1d, 0x31, 0x04, - 0xb8, 0xd7, 0x69, 0xc2, 0xe4, 0x53, 0x8b, 0xc9, 0xff, 0x29, 0x7d, 0xc0, 0x43, 0x70, 0x68, 0x69, - 0x90, 0xc6, 0xe9, 0xbd, 0x99, 0xbe, 0xcf, 0x98, 0x09, 0x1c, 0xea, 0xca, 0x1e, 0x45, 0x93, 0xb9, - 0x76, 0x13, 0x22, 0x88, 0xeb, 0x02, 0xba, 0xd3, 0x5c, 0x33, 0xe8, 0x85, 0xd1, 0x42, 0x3d, 0x43, - 0x5b, 0xc1, 0x39, 0xfe, 0x9b, 0xd1, 0x62, 0x4c, 0x8c, 0xb5, 0x92, 0x95, 0xe7, 0x9b, 0x21, 0x2b, - 0xdf, 0x5f, 0x79, 0x50, 0xa9, 0x7d, 0xec, 0xbf, 0xaf, 0x14, 0x50, 0xab, 0xc9, 0x4f, 0xa2, 0xc7, - 0xfd, 0xae, 0x2b, 0x22, 0xcd, 0xe0, 0x17, 0x98, 0x60, 0x8e, 0x1d, 0xef, 0xdf, 0xa6, 0x78, 0xbf, - 0x21, 0x10, 0x8e, 0x24, 0xbf, 0x36, 0xde, 0xaf, 0x43, 0x85, 0x49, 0xdc, 0x11, 0xc3, 0xfb, 0x59, - 0x76, 0x9d, 0x44, 0x38, 0x92, 0xa4, 0x78, 0x0e, 0x90, 0x06, 0x9e, 0x5f, 0x39, 0x63, 0x44, 0x11, - 0x53, 0x68, 0x5d, 0x16, 0xb2, 0x92, 0xc6, 0x13, 0x42, 0x56, 0xf8, 0xdc, 0xf7, 0x83, 0xac, 0xff, - 0xc2, 0x82, 0xac, 0x6c, 0xec, 0xbf, 0xaf, 0xc8, 0x4a, 0x93, 0x71, 0xb9, 0xae, 0x88, 0x24, 0xf2, - 0x0b, 0x0c, 0xdb, 0x6f, 0xc7, 0xd6, 0x27, 0xd0, 0x94, 0xa7, 0xd4, 0x40, 0x73, 0x72, 0x1b, 0x45, - 0x02, 0x96, 0x96, 0xd8, 0x5a, 0x2a, 0x95, 0xea, 0xbb, 0xce, 0xe9, 0x83, 0x9f, 0xa6, 0xdf, 0x6d, - 0x4b, 0x9f, 0x3a, 0x07, 0x4f, 0x07, 0x68, 0x62, 0xa7, 0x3d, 0x1e, 0x34, 0x95, 0xc1, 0x7e, 0x0f, - 0x5b, 0xb1, 0x0a, 0x15, 0x1b, 0xcf, 0x3b, 0xe8, 0xbd, 0x96, 0xc4, 0x11, 0x31, 0x4b, 0xa5, 0x52, - 0x7e, 0x43, 0xca, 0x93, 0xf1, 0x56, 0xb5, 0x8a, 0xf8, 0x30, 0x2d, 0x52, 0x4c, 0x20, 0xf6, 0xf0, - 0x2a, 0x6b, 0x2a, 0x8e, 0xf3, 0x76, 0xf1, 0x24, 0xdc, 0x2f, 0x80, 0x69, 0x9f, 0xe5, 0xec, 0x6d, - 0x0c, 0x6e, 0x53, 0x5b, 0x0c, 0x7d, 0xd5, 0xe2, 0x6c, 0xff, 0x58, 0xe2, 0x5d, 0x68, 0xf8, 0xc7, - 0x16, 0xa6, 0x06, 0x0f, 0x93, 0x28, 0x2c, 0x2c, 0xcc, 0x03, 0x1d, 0x8f, 0x7b, 0x8f, 0xd2, 0x7c, - 0x1a, 0x1e, 0x00, 0x02, 0x78, 0x5f, 0x38, 0x63, 0xc6, 0xb4, 0x85, 0x8d, 0xb9, 0x68, 0xcd, 0x17, - 0xfd, 0xb5, 0x86, 0x93, 0xc3, 0x56, 0x69, 0x51, 0x5f, 0xc3, 0x23, 0xb6, 0x65, 0x9a, 0xbc, 0x04, - 0x2d, 0xf6, 0xbb, 0x7e, 0x9d, 0xb9, 0x75, 0xf2, 0x43, 0xf7, 0xfd, 0x71, 0x1e, 0x2a, 0x7b, 0xb6, - 0x55, 0x8d, 0xef, 0x6c, 0x50, 0xe3, 0x2d, 0x35, 0x3b, 0x65, 0x72, 0xc3, 0xa9, 0xaf, 0x53, 0xd4, - 0xdf, 0x92, 0x2b, 0xd5, 0x23, 0x08, 0x51, 0x77, 0xab, 0xcd, 0x2c, 0xe0, 0x15, 0xf5, 0x12, 0x34, - 0x8b, 0xa5, 0x22, 0x7b, 0x9e, 0xa4, 0x10, 0x6e, 0x49, 0x89, 0x0d, 0xb7, 0xe4, 0xfd, 0x0b, 0xcd, - 0x62, 0xa7, 0x20, 0x1d, 0x21, 0x71, 0x29, 0x9d, 0x34, 0xf7, 0x02, 0x0b, 0x26, 0x2d, 0xea, 0x87, - 0x6f, 0xe0, 0x19, 0xbf, 0x3f, 0x38, 0x7a, 0xec, 0x63, 0x8b, 0x99, 0xf6, 0x71, 0x34, 0x39, 0x49, - 0x83, 0x18, 0xe3, 0xaf, 0xe5, 0x9b, 0x2d, 0xf9, 0x72, 0x69, 0x72, 0xfa, 0xc2, 0x99, 0xf4, 0x89, - 0x9b, 0xa3, 0x6f, 0xef, 0xa9, 0xaf, 0x53, 0x10, 0xab, 0xa9, 0x0f, 0x89, 0x8f, 0x21, 0x44, 0x3d, - 0x90, 0x71, 0xf3, 0x02, 0xd3, 0x21, 0x9a, 0x2b, 0x26, 0xaf, 0x4c, 0x20, 0xe2, 0x1b, 0xff, 0xca, - 0x04, 0x37, 0x2e, 0x02, 0x35, 0x65, 0x34, 0x4e, 0xd5, 0xad, 0xc4, 0xcb, 0xc5, 0x28, 0xe4, 0x4c, - 0x35, 0x2c, 0x06, 0x9d, 0x51, 0xc7, 0x82, 0xc4, 0xe5, 0xd8, 0x03, 0x69, 0x7e, 0xfa, 0xc4, 0x6b, - 0xa3, 0xc7, 0x0f, 0x01, 0x7e, 0x65, 0x7a, 0xda, 0x53, 0x03, 0xaf, 0xa7, 0x06, 0xf6, 0xa5, 0x8f, - 0xd2, 0xd4, 0x1f, 0xbe, 0x37, 0x3d, 0x6e, 0x5b, 0x48, 0x70, 0xee, 0x51, 0x54, 0x14, 0xa0, 0x45, - 0x74, 0x03, 0xc9, 0xc2, 0x18, 0x85, 0xd2, 0x54, 0xe8, 0x9f, 0xfd, 0x56, 0x8c, 0x1a, 0x71, 0x1b, - 0x2a, 0x8a, 0xa9, 0xf1, 0x96, 0xcd, 0xc1, 0xe4, 0xcb, 0x34, 0xd8, 0x86, 0x3f, 0x9b, 0x83, 0xba, - 0x8f, 0x9b, 0x66, 0x43, 0x62, 0x1d, 0x48, 0x22, 0x3f, 0x0d, 0xa6, 0xab, 0xc7, 0xb5, 0xb5, 0xc9, - 0x97, 0xab, 0x9f, 0xd5, 0xe4, 0x75, 0x68, 0x8d, 0x3f, 0xc7, 0x3c, 0x98, 0x77, 0x31, 0x04, 0x18, - 0xe4, 0xfb, 0xfa, 0x5c, 0x30, 0x46, 0xfc, 0xb9, 0x60, 0x7c, 0xcf, 0x77, 0x58, 0x40, 0x05, 0xb8, - 0xa7, 0x84, 0xf8, 0x10, 0x2a, 0xc0, 0xa5, 0xec, 0x80, 0xb5, 0xc5, 0x71, 0x24, 0x50, 0xf0, 0x7f, - 0x22, 0x86, 0x2a, 0x00, 0x5e, 0xd6, 0x80, 0x90, 0x59, 0xe8, 0x20, 0x9b, 0x56, 0x58, 0x03, 0x91, - 0xcc, 0x5e, 0xdc, 0x14, 0x8d, 0x36, 0x35, 0xab, 0x8b, 0x63, 0xf1, 0x68, 0x32, 0xba, 0xa5, 0x75, - 0xeb, 0xe2, 0x4d, 0xb8, 0x96, 0x97, 0x59, 0x0f, 0x0b, 0x68, 0x8e, 0xe3, 0x14, 0xbf, 0x22, 0x0b, - 0xaf, 0xa1, 0xc7, 0x1b, 0x0c, 0x60, 0x96, 0xe3, 0xc4, 0x1c, 0x0e, 0x34, 0xfe, 0x55, 0x8f, 0x4f, - 0xf3, 0x20, 0x54, 0x1b, 0x6d, 0x69, 0x89, 0x46, 0xf0, 0x30, 0x7e, 0xe8, 0x07, 0x7a, 0x9d, 0xe5, - 0x40, 0xbf, 0xd3, 0xb6, 0xe4, 0x8d, 0xc9, 0x78, 0x6b, 0x30, 0x39, 0xd6, 0x21, 0xce, 0x72, 0x9c, - 0x9b, 0xf3, 0x96, 0x4a, 0x46, 0xdb, 0x7a, 0x32, 0x6f, 0x52, 0x87, 0x75, 0xdf, 0xbb, 0x1e, 0x34, - 0x15, 0x2a, 0xe9, 0x49, 0xf0, 0x83, 0x5f, 0x98, 0xd5, 0x96, 0x85, 0x29, 0xb3, 0x2d, 0x0c, 0x9e, - 0x07, 0xc1, 0xc7, 0xb1, 0xd6, 0x66, 0x91, 0x26, 0xdf, 0x87, 0x16, 0xfa, 0xb3, 0xa6, 0x2f, 0x89, - 0xb0, 0x3e, 0xbc, 0x5b, 0xbf, 0x6f, 0x0d, 0x22, 0x2f, 0xa6, 0x6b, 0x9e, 0xa1, 0xf9, 0x14, 0x41, - 0x94, 0xa1, 0x81, 0x61, 0x1c, 0xaa, 0x58, 0x06, 0xfd, 0xd4, 0xe0, 0x61, 0x88, 0x93, 0x6c, 0x39, - 0x39, 0x8f, 0xe7, 0xd3, 0x70, 0x15, 0xb5, 0x1b, 0xa2, 0xb1, 0x68, 0x73, 0xb4, 0x69, 0x27, 0x63, - 0x61, 0x37, 0x04, 0xbb, 0x6e, 0xe3, 0xa4, 0xa0, 0xc9, 0x6d, 0x02, 0x2f, 0xd9, 0x26, 0xd8, 0x61, - 0x52, 0x01, 0x7e, 0x1e, 0xe9, 0x7d, 0x5d, 0xfa, 0x81, 0x21, 0x9a, 0x03, 0x95, 0xbc, 0xca, 0x24, - 0xcc, 0xb3, 0x47, 0x7f, 0xfd, 0x4c, 0x7a, 0xdf, 0x1b, 0xe9, 0xae, 0xc3, 0x5f, 0xb4, 0xed, 0x06, - 0x97, 0xe9, 0xf4, 0xb1, 0xd3, 0xe9, 0x23, 0x9d, 0xac, 0x79, 0xfa, 0xd8, 0xb5, 0xd4, 0x70, 0x0f, - 0x6e, 0x7d, 0xf0, 0x28, 0xb8, 0x9d, 0x91, 0x9c, 0x55, 0x8e, 0x5d, 0x7c, 0x59, 0x73, 0x67, 0x7c, - 0xd6, 0x74, 0xa1, 0x34, 0x24, 0x4d, 0xfb, 0xf5, 0xf3, 0x4b, 0x2a, 0x1f, 0x0d, 0x54, 0xbe, 0x22, - 0x57, 0x3e, 0x57, 0xf9, 0xc2, 0x03, 0x0b, 0x79, 0x2d, 0x0a, 0x66, 0x45, 0x90, 0x46, 0x0b, 0x30, - 0xe1, 0x55, 0x4d, 0x7e, 0x99, 0xa5, 0xd1, 0x8a, 0x06, 0x5b, 0x42, 0x5b, 0x58, 0x2a, 0xad, 0xf2, - 0xf4, 0xa9, 0x43, 0xa9, 0xc1, 0xb7, 0xc1, 0xa1, 0x3b, 0x35, 0xb0, 0x0f, 0x32, 0x80, 0xb0, 0xf4, - 0x4d, 0xd7, 0x52, 0x43, 0x47, 0x19, 0x64, 0xa6, 0xa7, 0x1d, 0x46, 0x60, 0xa4, 0x12, 0xa5, 0xec, - 0xb1, 0xa7, 0x3d, 0xfd, 0x56, 0x3f, 0x9d, 0x34, 0x09, 0xec, 0x05, 0x2d, 0xf4, 0xc3, 0x6f, 0x01, - 0x3c, 0xcb, 0xc0, 0xb5, 0x0d, 0x4d, 0xde, 0x1a, 0x6e, 0x26, 0x6f, 0x64, 0x93, 0x2a, 0x3c, 0xe7, - 0x74, 0x42, 0x9b, 0x9a, 0x68, 0xb4, 0x19, 0xd0, 0x86, 0x38, 0xc9, 0xf2, 0x6d, 0xa4, 0x52, 0xea, - 0x62, 0x73, 0xe5, 0xe0, 0xc8, 0x9b, 0x37, 0xc8, 0xa9, 0xfc, 0x51, 0xba, 0x77, 0x30, 0x7d, 0xe5, - 0xb4, 0xc2, 0x83, 0x55, 0xd7, 0x68, 0xf2, 0x13, 0x68, 0x85, 0xdf, 0x79, 0x6f, 0x0d, 0x4f, 0x4e, - 0x32, 0xca, 0xd4, 0xc0, 0x10, 0xee, 0xe1, 0xc2, 0x19, 0xfd, 0xc4, 0x31, 0x18, 0x2e, 0xc5, 0x8d, - 0xf7, 0x0b, 0xd0, 0xdc, 0xd5, 0x6a, 0xb2, 0x66, 0x7b, 0x63, 0x34, 0x96, 0x60, 0xf9, 0x0a, 0x00, - 0x37, 0xd9, 0x29, 0x87, 0xb6, 0xb4, 0x26, 0xc2, 0x11, 0x35, 0x91, 0x30, 0x50, 0x04, 0xc4, 0x0d, - 0xb3, 0x58, 0x2a, 0x62, 0xab, 0xa7, 0x70, 0xa5, 0xe2, 0xaf, 0xb9, 0xf3, 0xdb, 0x63, 0x3e, 0x69, - 0x32, 0xcf, 0xef, 0x65, 0x23, 0xfd, 0xe7, 0xe0, 0xd8, 0xd1, 0x7b, 0x2f, 0x80, 0x93, 0x0f, 0x1b, - 0xee, 0xbe, 0x74, 0x6f, 0x17, 0x9c, 0x45, 0x78, 0xe1, 0x89, 0x74, 0xc1, 0xcc, 0x03, 0xac, 0xb9, - 0xd8, 0x2b, 0xa0, 0xa9, 0x4c, 0xd6, 0x68, 0x24, 0x62, 0x19, 0x15, 0x6d, 0x92, 0x9a, 0xfc, 0x4b, - 0x7f, 0x56, 0x95, 0xb4, 0x0a, 0x7a, 0x49, 0x9f, 0x38, 0x97, 0x1e, 0x3c, 0x54, 0xe1, 0x65, 0xe3, - 0x4c, 0x77, 0x1e, 0x1d, 0x69, 0xeb, 0x08, 0x12, 0x9a, 0x84, 0xf4, 0x23, 0x20, 0x74, 0xa5, 0x3f, - 0xd9, 0x95, 0xb9, 0xb0, 0x2f, 0xdd, 0x79, 0x14, 0xef, 0x05, 0x89, 0x3b, 0x07, 0x25, 0x60, 0x45, - 0x2d, 0x62, 0xcd, 0x95, 0x42, 0x68, 0xaa, 0xfc, 0x4c, 0xc9, 0xfa, 0xa0, 0xf8, 0xf7, 0x02, 0x2a, - 0x48, 0x04, 0xa3, 0x46, 0x3c, 0xc0, 0xbf, 0x15, 0x34, 0x79, 0x58, 0xf0, 0x43, 0x99, 0xf4, 0x91, - 0xb0, 0x65, 0xfb, 0xe6, 0x2d, 0xe1, 0x57, 0x36, 0x87, 0x43, 0xde, 0xf4, 0xbb, 0x6d, 0x99, 0x8f, - 0x31, 0x86, 0xa5, 0x6e, 0xf4, 0x62, 0x56, 0x70, 0xea, 0xd4, 0x62, 0xd3, 0x33, 0x1e, 0xa3, 0x31, - 0x06, 0xac, 0x48, 0xf7, 0x9d, 0x4d, 0x1f, 0xbb, 0x66, 0xc0, 0xa6, 0xdf, 0xea, 0xcf, 0x0c, 0x1d, - 0x86, 0x90, 0xb9, 0xde, 0xda, 0xb5, 0x75, 0x35, 0x5e, 0x58, 0x3b, 0x6f, 0x7d, 0x9d, 0x37, 0x35, - 0x30, 0xe8, 0x35, 0xbb, 0x37, 0x12, 0x6e, 0x56, 0xe0, 0x35, 0x6e, 0x1b, 0xc6, 0xb5, 0x54, 0x9e, - 0xf4, 0xa6, 0x8f, 0x5d, 0xd3, 0x3b, 0x8f, 0x43, 0xa7, 0x00, 0x94, 0xa3, 0x3d, 0x21, 0x4a, 0xa5, - 0x88, 0x8d, 0x48, 0x99, 0x44, 0x7b, 0x51, 0x7e, 0xa6, 0xc0, 0xac, 0xaa, 0x9f, 0xd7, 0xe4, 0x5f, - 0xa2, 0x4d, 0xfe, 0x9c, 0x28, 0x65, 0x38, 0x70, 0x73, 0xbb, 0x0a, 0xd8, 0x08, 0xdc, 0xfa, 0x73, - 0x81, 0x43, 0xa2, 0xcf, 0x05, 0x63, 0xbf, 0x7d, 0xd7, 0x3d, 0x68, 0x9e, 0x4b, 0xc7, 0xdf, 0xc3, - 0x4d, 0x8d, 0x05, 0x77, 0xc8, 0x73, 0x8e, 0x58, 0xc5, 0xc6, 0x47, 0xde, 0xff, 0xf2, 0xf1, 0xab, - 0x2d, 0xd3, 0xb6, 0x49, 0x0d, 0xd5, 0x1b, 0x35, 0x59, 0x41, 0x0d, 0xfe, 0xdc, 0x13, 0x75, 0x5c, - 0x42, 0xd2, 0x17, 0x5b, 0x42, 0x07, 0xed, 0x65, 0x09, 0x3f, 0x24, 0xd1, 0x87, 0x4a, 0x18, 0xbe, - 0x72, 0x76, 0x42, 0x4b, 0x99, 0x38, 0x1f, 0x99, 0xb2, 0xbc, 0x91, 0xeb, 0xd4, 0x2c, 0xc1, 0xf5, - 0x1c, 0x6f, 0x20, 0x7e, 0xeb, 0x16, 0x06, 0xe0, 0x43, 0x25, 0xec, 0x97, 0xf9, 0xda, 0x50, 0xb1, - 0x94, 0x89, 0xa5, 0x68, 0x12, 0x71, 0x92, 0x88, 0xb2, 0xf4, 0xa7, 0xec, 0xa7, 0x38, 0x1b, 0x15, - 0xaa, 0xa1, 0xb0, 0x21, 0xfc, 0x2b, 0xf4, 0x97, 0x35, 0xf2, 0xd6, 0xa4, 0xac, 0xcc, 0xa6, 0xbe, - 0x94, 0x13, 0x43, 0xe3, 0x43, 0x1c, 0x7e, 0x0d, 0x86, 0xf6, 0xa8, 0x7d, 0x3d, 0x68, 0x53, 0xb3, - 0x58, 0x2a, 0x82, 0x4d, 0xb1, 0x5c, 0x84, 0xac, 0xbc, 0x30, 0xef, 0xbb, 0xe1, 0x85, 0xf9, 0x3f, - 0x48, 0x5e, 0x58, 0xf0, 0x13, 0x2f, 0xe4, 0x43, 0x5b, 0x5a, 0x09, 0x99, 0x08, 0x45, 0xe3, 0xe2, - 0x85, 0xff, 0xca, 0x89, 0x17, 0x7e, 0x6f, 0x61, 0x2f, 0x7f, 0x63, 0xf0, 0x42, 0xc1, 0xd1, 0x11, - 0x9a, 0x8e, 0x0f, 0x3c, 0xc5, 0x08, 0x47, 0x24, 0xef, 0x1a, 0x81, 0x23, 0xde, 0x0f, 0x93, 0x87, - 0x3e, 0x33, 0x3d, 0xed, 0x7a, 0xc7, 0x05, 0xfd, 0x4a, 0x1b, 0x5d, 0x0b, 0x3b, 0x83, 0xa4, 0xcb, - 0x9a, 0x7b, 0xf6, 0x4c, 0xfa, 0xa1, 0xeb, 0x6a, 0xeb, 0xd1, 0x8d, 0x4d, 0xb6, 0x20, 0xd1, 0x3e, - 0x58, 0xd1, 0x6b, 0x6a, 0x41, 0x36, 0xc6, 0x9b, 0x59, 0xd4, 0x55, 0xae, 0x48, 0x7c, 0x10, 0x15, - 0x92, 0xcb, 0x28, 0x53, 0x6b, 0xcf, 0x73, 0x08, 0x07, 0x41, 0x82, 0x81, 0xc1, 0xcd, 0x95, 0x02, - 0xfb, 0x36, 0xa3, 0x29, 0x96, 0x0a, 0x87, 0xbb, 0xb0, 0x53, 0x04, 0xf4, 0x99, 0xa8, 0x20, 0x1c, - 0x09, 0xa9, 0x2f, 0x53, 0x96, 0x0b, 0x3f, 0x30, 0x64, 0x48, 0x4d, 0x04, 0x29, 0x97, 0x25, 0x7f, - 0xfb, 0x46, 0x04, 0x82, 0x26, 0xf5, 0x91, 0x88, 0x1a, 0x67, 0x13, 0x23, 0x5f, 0x4a, 0x7c, 0xdd, - 0x88, 0xaf, 0x0f, 0xdb, 0x84, 0x3b, 0xf0, 0xdf, 0x33, 0x18, 0x5a, 0x09, 0x8d, 0x66, 0x4b, 0x78, - 0x1a, 0xa7, 0x98, 0xa1, 0x61, 0xa2, 0x73, 0x0f, 0x4b, 0x5a, 0x42, 0xf7, 0x8f, 0xe4, 0x44, 0x18, - 0xb9, 0x79, 0x28, 0x33, 0xf4, 0x31, 0xf8, 0x91, 0xa7, 0x07, 0x3e, 0x4a, 0x9f, 0x7a, 0x83, 0xd1, - 0xcb, 0x5b, 0xa3, 0x7b, 0x0f, 0x52, 0x49, 0xf6, 0x9f, 0x7a, 0xd0, 0x7c, 0xb7, 0x3e, 0xbf, 0x07, - 0x92, 0xd8, 0x64, 0x11, 0x0f, 0xe6, 0xb9, 0x91, 0x04, 0x5c, 0x01, 0x1c, 0xe4, 0x03, 0x98, 0x9a, - 0x1d, 0xfd, 0x55, 0x4d, 0xde, 0x82, 0x5e, 0xf4, 0x8f, 0x31, 0x55, 0xa9, 0x72, 0xfc, 0xeb, 0xa7, - 0xb7, 0x0d, 0xdb, 0x09, 0x61, 0x27, 0x9a, 0x62, 0xe9, 0xd9, 0x31, 0x1c, 0x1f, 0xc3, 0x38, 0x8f, - 0x89, 0x71, 0x18, 0x37, 0xe3, 0xea, 0x56, 0x95, 0x45, 0xe2, 0x83, 0x1f, 0xb8, 0x34, 0x19, 0x0f, - 0x44, 0x58, 0x40, 0x7e, 0xf8, 0x61, 0xda, 0x20, 0x0b, 0x38, 0x1b, 0xa4, 0xef, 0xaf, 0x0a, 0xd0, - 0xec, 0x3a, 0x75, 0x4b, 0x6b, 0x13, 0x25, 0x6f, 0xf2, 0x4e, 0x00, 0x90, 0xf5, 0x49, 0x87, 0xb3, - 0xdb, 0xeb, 0x7a, 0x76, 0x33, 0xa5, 0x20, 0x7f, 0x84, 0x3f, 0xe9, 0x70, 0x84, 0x7b, 0x5d, 0x8f, - 0x70, 0xa3, 0x07, 0xee, 0x24, 0xdf, 0x64, 0x3b, 0xc9, 0xab, 0x35, 0x79, 0x09, 0x87, 0xf8, 0x0b, - 0x8d, 0xe3, 0x3a, 0xdd, 0x75, 0x7e, 0xe4, 0x4c, 0xf7, 0x48, 0xff, 0x39, 0xe8, 0x2f, 0xd3, 0xd3, - 0x1e, 0x4f, 0xbe, 0x0c, 0x04, 0x61, 0x53, 0x58, 0xfe, 0xd0, 0x4f, 0xf0, 0x4e, 0x01, 0x15, 0x05, - 0x29, 0xaf, 0xa2, 0x01, 0x13, 0x97, 0xdb, 0x32, 0x77, 0x3a, 0xee, 0x9a, 0xc1, 0xfb, 0xc0, 0x84, - 0x0d, 0x0f, 0x25, 0x59, 0x57, 0xd2, 0xfd, 0x3c, 0x8a, 0x52, 0xd7, 0x73, 0xf3, 0x0c, 0x20, 0xf8, - 0x49, 0xf8, 0xb6, 0x62, 0x34, 0x29, 0x7b, 0xcc, 0xe4, 0x9a, 0x13, 0xb6, 0x6e, 0x57, 0x27, 0x34, - 0x39, 0x86, 0x22, 0x7e, 0x17, 0x0c, 0x93, 0x16, 0x8e, 0x5c, 0x7e, 0x6d, 0xa4, 0xff, 0x88, 0x7d, - 0x50, 0xd6, 0xf7, 0x8f, 0x96, 0x53, 0x99, 0xc3, 0x0e, 0xee, 0x88, 0xfe, 0x5c, 0x30, 0x46, 0xec, - 0xfb, 0xe7, 0x1e, 0x74, 0xa7, 0xed, 0x83, 0xdf, 0x03, 0x53, 0xda, 0x66, 0x39, 0xa7, 0xef, 0x19, - 0x63, 0xff, 0xc8, 0x41, 0x4d, 0x5e, 0x6c, 0x03, 0x6b, 0x72, 0x5f, 0x1b, 0xee, 0x4c, 0xa5, 0x6c, - 0xea, 0xd7, 0x9a, 0xfc, 0x3c, 0xfa, 0x95, 0xdf, 0x6d, 0xd6, 0x5f, 0x9b, 0x3f, 0x3d, 0x81, 0xee, - 0x70, 0x18, 0xad, 0x58, 0x4e, 0x9f, 0x5a, 0x08, 0xee, 0x4f, 0x2d, 0xc0, 0x03, 0xda, 0x77, 0x6b, - 0x32, 0x9a, 0x46, 0x54, 0x68, 0x6b, 0xa3, 0xa1, 0xd6, 0x66, 0x75, 0x55, 0x73, 0xa0, 0x49, 0xdc, - 0x98, 0x6d, 0x45, 0x7a, 0x4c, 0x93, 0x1f, 0x31, 0xad, 0x48, 0x95, 0x35, 0xb5, 0x8d, 0x90, 0x69, - 0xc2, 0xc8, 0x2f, 0x9c, 0x1a, 0x3c, 0x6c, 0xa4, 0xf2, 0x19, 0xd9, 0x77, 0x25, 0x7d, 0x74, 0xaf, - 0x91, 0xc2, 0xcd, 0x34, 0x36, 0x05, 0xcc, 0x90, 0xd5, 0xb0, 0x63, 0xab, 0x35, 0xb9, 0xce, 0xcf, - 0xca, 0xa4, 0x47, 0x8d, 0x4e, 0xe0, 0xd5, 0x7a, 0xb9, 0xfe, 0xde, 0xee, 0x0d, 0xcf, 0xac, 0xac, - 0xf6, 0x2e, 0x5d, 0x2c, 0x2d, 0x59, 0xfc, 0x50, 0xc5, 0xd2, 0xc5, 0x4b, 0x1f, 0x59, 0xbc, 0x1c, - 0xff, 0xb3, 0x7c, 0xf1, 0xb2, 0xca, 0xe4, 0xf6, 0x47, 0x12, 0xf8, 0xef, 0x87, 0x16, 0x2f, 0x5b, - 0x64, 0xc4, 0xbe, 0x16, 0x3b, 0x04, 0x54, 0xd4, 0x42, 0x26, 0x62, 0xbc, 0xa4, 0x21, 0x39, 0x89, - 0x8c, 0x42, 0xe9, 0xb9, 0xcc, 0x50, 0x7b, 0x6a, 0xe8, 0x1a, 0x58, 0x77, 0xca, 0x9f, 0x69, 0xdd, - 0xa2, 0xca, 0x0d, 0xf5, 0x8d, 0x6a, 0x7c, 0x87, 0x1a, 0xbf, 0x35, 0xdc, 0x8d, 0x7f, 0xd7, 0x46, - 0x23, 0xc9, 0x78, 0xb4, 0xb9, 0x99, 0x14, 0xac, 0x4c, 0x06, 0x43, 0xb4, 0xbc, 0x31, 0xb8, 0x4d, - 0xc5, 0x9d, 0xe0, 0xe2, 0xed, 0xad, 0x5b, 0xd4, 0x66, 0x35, 0xf9, 0x45, 0xdb, 0xae, 0x38, 0x44, - 0xf8, 0xce, 0xf4, 0x75, 0x2d, 0x52, 0x8c, 0xaf, 0x88, 0xcb, 0x51, 0xd1, 0xd6, 0xe6, 0x40, 0x13, - 0x17, 0x5b, 0x86, 0x08, 0x13, 0x46, 0xa1, 0x54, 0x0c, 0x14, 0xa4, 0x1f, 0xda, 0xaf, 0x18, 0x85, - 0x58, 0x96, 0xc0, 0x7f, 0xd7, 0xe1, 0xb3, 0x84, 0x0b, 0x44, 0x66, 0x14, 0x4a, 0x25, 0xd0, 0x8a, - 0x7a, 0xf1, 0x1a, 0xe5, 0xe2, 0x2a, 0x54, 0x12, 0x52, 0xb7, 0x06, 0x5a, 0x9b, 0x41, 0x7c, 0xa2, - 0x56, 0x22, 0x9f, 0x26, 0x2f, 0xf0, 0x5b, 0x2a, 0xa4, 0x69, 0xd0, 0x01, 0x5c, 0x24, 0xf4, 0xb6, - 0x61, 0xc5, 0x52, 0x2d, 0x56, 0xa3, 0x42, 0x35, 0x42, 0x4c, 0xae, 0xf0, 0xd0, 0x8e, 0xf4, 0x40, - 0x8b, 0xa4, 0x59, 0x54, 0x1b, 0x77, 0x88, 0x64, 0x77, 0xee, 0x3f, 0x47, 0xf9, 0x11, 0xad, 0x16, - 0x1f, 0x36, 0x2f, 0xb0, 0x45, 0xa6, 0x15, 0x88, 0x95, 0x49, 0xd3, 0x58, 0x98, 0xf3, 0xb7, 0xf5, - 0xa1, 0xc1, 0x91, 0xb6, 0x0e, 0xf3, 0x7e, 0xfb, 0x30, 0x9a, 0xd4, 0x4a, 0x6c, 0xdd, 0x2c, 0x53, - 0x3f, 0x34, 0xa4, 0x65, 0xac, 0x21, 0x35, 0x7a, 0xe3, 0x86, 0xb4, 0x46, 0xac, 0x46, 0xc5, 0xa4, - 0x0f, 0xe2, 0x67, 0x8f, 0x4c, 0x9b, 0x9a, 0x59, 0x2a, 0x95, 0xc0, 0xf7, 0xe8, 0x33, 0x04, 0xb3, - 0x42, 0x5c, 0x81, 0x10, 0x74, 0x43, 0x1a, 0x4f, 0xe6, 0x1e, 0x31, 0x98, 0xc5, 0x52, 0x09, 0x7c, - 0x94, 0x3d, 0x62, 0x30, 0x6b, 0xc4, 0x24, 0xec, 0x14, 0x17, 0xd1, 0x81, 0x3c, 0x34, 0x35, 0x0a, - 0xa5, 0xfa, 0xf4, 0xe9, 0xbd, 0x23, 0xfd, 0x7b, 0x60, 0x8d, 0x68, 0x06, 0xac, 0x70, 0x24, 0xb9, - 0x4c, 0xaa, 0xda, 0x12, 0x8d, 0x36, 0x57, 0x25, 0x92, 0xf1, 0x70, 0xa4, 0xa9, 0x2a, 0xd4, 0x0a, - 0x9e, 0x01, 0x55, 0x2d, 0x81, 0x18, 0x2d, 0x4b, 0x64, 0xfa, 0xba, 0xf4, 0x53, 0x83, 0x99, 0x33, - 0x6d, 0xd0, 0x6a, 0x91, 0x62, 0x74, 0x2a, 0x2a, 0x68, 0x0a, 0xfe, 0x9b, 0xec, 0x15, 0x89, 0xe4, - 0x30, 0x85, 0xf8, 0xed, 0x92, 0x37, 0x53, 0xd6, 0x1a, 0xa9, 0x94, 0xe2, 0x17, 0x09, 0xed, 0x82, - 0x0f, 0x92, 0xb6, 0x61, 0x7a, 0x57, 0xb6, 0x02, 0x8a, 0xbf, 0xc2, 0x72, 0x4a, 0x93, 0xfa, 0x32, - 0x89, 0x0a, 0x31, 0x59, 0x2a, 0xcb, 0x66, 0x15, 0xe4, 0xc4, 0x50, 0x30, 0x04, 0x78, 0xaa, 0x03, - 0xb4, 0x34, 0x87, 0x62, 0x62, 0x6f, 0x57, 0xfa, 0x48, 0x67, 0xba, 0xed, 0x7c, 0xfa, 0xf4, 0x99, - 0xd1, 0x0f, 0xba, 0x47, 0xce, 0xb7, 0xeb, 0x9d, 0xc7, 0x15, 0x80, 0x11, 0xa3, 0xa8, 0x20, 0x4e, - 0x02, 0x4d, 0x4e, 0x73, 0x8e, 0xa1, 0xb8, 0xae, 0xb5, 0x65, 0x8b, 0x0a, 0x01, 0x25, 0xe1, 0xf1, - 0x37, 0x80, 0x4b, 0x4b, 0x46, 0xf6, 0x51, 0xe4, 0x4a, 0x0d, 0x0c, 0xe2, 0x49, 0xb4, 0x0d, 0x9b, - 0xcc, 0x05, 0xd2, 0xaa, 0xc3, 0x15, 0x86, 0x3c, 0x5b, 0xc0, 0x58, 0x0c, 0x0d, 0xc5, 0x2f, 0x04, - 0x6b, 0x4a, 0x24, 0x08, 0x25, 0xf1, 0xc7, 0x70, 0xc7, 0xe6, 0x6b, 0xa4, 0x8b, 0x82, 0x7e, 0xe3, - 0x0d, 0x46, 0xad, 0x2b, 0x28, 0x0d, 0x93, 0x9c, 0xd8, 0x18, 0xb1, 0xfb, 0x8e, 0xa5, 0x2f, 0x7d, - 0x92, 0x79, 0xf3, 0x54, 0xfa, 0x48, 0xe7, 0x17, 0x6d, 0xbb, 0xa9, 0xd4, 0xdf, 0x60, 0x8c, 0x81, - 0xeb, 0xa8, 0xda, 0x1b, 0x8e, 0xed, 0x58, 0x5e, 0x15, 0x8e, 0xed, 0x78, 0xa8, 0x2a, 0xd4, 0x1a, - 0x68, 0xf6, 0xc2, 0xf8, 0x80, 0x81, 0x19, 0xdc, 0x91, 0xcf, 0x75, 0x86, 0x3b, 0x24, 0xb1, 0x36, - 0x80, 0x41, 0x3e, 0x5f, 0xf1, 0x02, 0xc4, 0xdc, 0x30, 0x32, 0x12, 0x43, 0x0f, 0xc6, 0x83, 0x16, - 0xdc, 0xbf, 0x25, 0xab, 0x13, 0x0b, 0x3a, 0x98, 0xcd, 0xb5, 0xa5, 0xfb, 0x20, 0x9f, 0x60, 0xe6, - 0xd2, 0x99, 0xcc, 0xa1, 0x3d, 0x10, 0x38, 0x96, 0x70, 0x5e, 0x3c, 0x00, 0xe0, 0x79, 0xf0, 0xc4, - 0xfd, 0x0b, 0x0f, 0x20, 0x2f, 0x73, 0x91, 0x37, 0x18, 0x15, 0x75, 0x91, 0x37, 0xd8, 0x51, 0x19, - 0xc7, 0x8e, 0x3c, 0x66, 0x1d, 0xe1, 0x38, 0xbe, 0x2c, 0x8e, 0x03, 0x52, 0xae, 0x95, 0x9b, 0x48, - 0x06, 0x37, 0xc9, 0x1f, 0x4b, 0xf9, 0x6f, 0x70, 0x91, 0x32, 0x8e, 0xb0, 0x0a, 0xcc, 0x6f, 0x12, - 0xf4, 0x5f, 0x98, 0x8d, 0xfe, 0x85, 0x24, 0x78, 0x5f, 0x16, 0x42, 0x2f, 0x61, 0x08, 0x3d, 0x69, - 0x2c, 0x84, 0x66, 0x78, 0xba, 0x94, 0xe1, 0x69, 0xd1, 0x98, 0x78, 0xca, 0x30, 0x2d, 0x2b, 0xf7, - 0x56, 0xb1, 0x2d, 0xf7, 0x96, 0xaf, 0x0e, 0x21, 0xf3, 0x4b, 0xe2, 0x5c, 0x54, 0xbc, 0x23, 0xd0, - 0x1c, 0x0e, 0x11, 0xf6, 0x08, 0xeb, 0x6c, 0x16, 0xe4, 0x78, 0x8b, 0xb0, 0x14, 0x4d, 0xe6, 0xbe, - 0x8e, 0x05, 0xbc, 0x96, 0x70, 0x84, 0x74, 0x50, 0xa0, 0xe0, 0x3f, 0x49, 0x49, 0xe0, 0x65, 0x1a, - 0x36, 0x1b, 0xff, 0xe9, 0x4b, 0xe7, 0xa3, 0xb9, 0xb5, 0xe4, 0xb9, 0x55, 0x16, 0x82, 0xb0, 0xcb, - 0xc3, 0xed, 0x7b, 0xba, 0xef, 0xb6, 0x9f, 0xee, 0x5b, 0xc9, 0x2b, 0x0c, 0xe3, 0x74, 0x6f, 0xf8, - 0x26, 0x4f, 0x77, 0x48, 0xb8, 0x4e, 0xef, 0x27, 0xc6, 0xd1, 0xbe, 0x19, 0x30, 0x94, 0x66, 0x55, - 0x76, 0x8c, 0x1f, 0xcf, 0xa8, 0xab, 0x66, 0x11, 0xf1, 0x50, 0x60, 0xe0, 0x92, 0xc8, 0xd3, 0x21, - 0xb0, 0xe3, 0x2f, 0x6b, 0x0a, 0x34, 0xc1, 0x53, 0x24, 0x28, 0x06, 0x94, 0xf8, 0x24, 0x77, 0xb1, - 0xe2, 0x42, 0xf4, 0x9a, 0x17, 0xab, 0x59, 0xd6, 0x6e, 0xd8, 0x81, 0x6a, 0xaa, 0x16, 0x42, 0x9a, - 0x1c, 0x40, 0x9b, 0xfd, 0x39, 0xd1, 0x40, 0x9a, 0x05, 0x2d, 0xf1, 0xb6, 0x70, 0xdd, 0x7d, 0x2e, - 0xb0, 0x0d, 0xfd, 0x5c, 0x60, 0xeb, 0xfe, 0xb9, 0x60, 0xcc, 0x9e, 0x57, 0xbd, 0xe9, 0x02, 0x9a, - 0xe7, 0xf2, 0x85, 0xef, 0x5e, 0xa4, 0x67, 0xb1, 0x43, 0x73, 0x8f, 0x48, 0xba, 0xdb, 0x71, 0xd2, - 0xb9, 0x63, 0x87, 0xfe, 0x87, 0x7c, 0xe6, 0x18, 0xff, 0xa3, 0x23, 0xa8, 0x57, 0x6d, 0xf4, 0xb4, - 0xf9, 0x5b, 0xa6, 0xa7, 0x1f, 0x2e, 0x21, 0x99, 0x02, 0xa6, 0x9d, 0x90, 0x72, 0x6d, 0xbf, 0x34, - 0x0b, 0x5a, 0x7e, 0x75, 0x42, 0xfa, 0x3b, 0x81, 0xbd, 0x59, 0xf8, 0x21, 0x10, 0x92, 0xa2, 0xc9, - 0xeb, 0xd1, 0x5a, 0x7f, 0xee, 0x11, 0x49, 0x73, 0x1c, 0x27, 0xed, 0xe6, 0x43, 0xf9, 0xcf, 0xf2, - 0xd1, 0x5c, 0x78, 0x9f, 0xf4, 0x13, 0x09, 0x7d, 0x93, 0x24, 0xb4, 0x1e, 0x95, 0x30, 0x69, 0xcd, - 0x20, 0x23, 0xfa, 0x14, 0xdc, 0x52, 0x21, 0x95, 0x5a, 0x08, 0x86, 0x7f, 0x96, 0x67, 0x81, 0x9b, - 0xf0, 0xd9, 0x73, 0x7a, 0xf4, 0xf8, 0x59, 0x67, 0x92, 0xc9, 0xb5, 0xdd, 0xf8, 0xec, 0xc1, 0x2d, - 0xbf, 0x1e, 0xc9, 0xb8, 0x7c, 0xe1, 0x7b, 0x24, 0x99, 0x9c, 0x23, 0x92, 0xe6, 0x38, 0x4e, 0xda, - 0x8d, 0x64, 0xfe, 0x3c, 0x1f, 0x95, 0x19, 0x61, 0x8f, 0x7f, 0x22, 0x98, 0x1f, 0x2f, 0xc1, 0x6c, - 0xd1, 0xe4, 0xcd, 0xe8, 0x05, 0x7f, 0x8e, 0xcd, 0x96, 0x66, 0x19, 0x5e, 0x6d, 0x5f, 0x91, 0x5c, - 0xfa, 0x3d, 0x5c, 0xba, 0xc3, 0xef, 0x97, 0x58, 0x44, 0xc5, 0x62, 0x10, 0x5a, 0xe0, 0x98, 0x7b, - 0xc9, 0x1c, 0xa2, 0x35, 0x6a, 0x30, 0xe7, 0x4c, 0xe8, 0x98, 0xec, 0x3c, 0xc7, 0x1c, 0x39, 0xd7, - 0xc0, 0xf1, 0x90, 0xdf, 0xdf, 0x79, 0x88, 0xfb, 0xc4, 0xca, 0x97, 0x93, 0x6a, 0x3c, 0x12, 0x68, - 0x5e, 0x17, 0x0d, 0xa9, 0x8d, 0xe4, 0xc5, 0x3c, 0x23, 0xc0, 0x17, 0xd0, 0xe4, 0x48, 0x34, 0xa4, - 0x5a, 0x43, 0x03, 0x7c, 0x2d, 0x22, 0xe4, 0xfb, 0x13, 0x97, 0xdb, 0xcc, 0x8a, 0xa5, 0x8e, 0x3e, - 0xdf, 0xa9, 0xc1, 0x41, 0xce, 0x76, 0xf2, 0x1c, 0x2a, 0x0a, 0x47, 0x60, 0xc4, 0xd4, 0xb1, 0xf3, - 0x71, 0x4d, 0x7e, 0xcc, 0x6f, 0x14, 0x4a, 0x55, 0x34, 0xf0, 0x32, 0x79, 0xbe, 0x9d, 0xee, 0x3c, - 0xaa, 0x9f, 0x3d, 0x9a, 0xb9, 0x71, 0x78, 0xa4, 0xbd, 0x27, 0xdd, 0x7b, 0x91, 0xf9, 0xf9, 0xf1, - 0x65, 0x8a, 0xd1, 0x94, 0x25, 0x92, 0xcb, 0xb9, 0x2a, 0x6c, 0x91, 0x33, 0x17, 0x2f, 0xa6, 0x06, - 0xba, 0xd2, 0x47, 0xaf, 0x43, 0x2f, 0x0c, 0x5f, 0xf9, 0x19, 0xfa, 0xfe, 0x32, 0x8f, 0x98, 0x64, - 0x9d, 0xfa, 0xba, 0x3d, 0x9e, 0xfe, 0x2c, 0xe7, 0x1c, 0x62, 0x59, 0x0e, 0x14, 0x82, 0xa7, 0xb3, - 0xb6, 0x04, 0x12, 0xea, 0x43, 0xcb, 0x33, 0xc3, 0x47, 0x33, 0xa7, 0xf1, 0xa6, 0xd3, 0xa5, 0x84, - 0x70, 0x66, 0xbb, 0x05, 0x34, 0xed, 0x25, 0x75, 0xcb, 0x66, 0xfe, 0x91, 0x70, 0x81, 0x73, 0xfa, - 0xff, 0x5f, 0xa8, 0x5b, 0xb8, 0x97, 0x9a, 0x9b, 0x24, 0x88, 0x4f, 0x9e, 0xdd, 0x5a, 0xba, 0x9b, - 0x7a, 0xac, 0x5b, 0xb3, 0xb4, 0x81, 0xd6, 0x0a, 0xec, 0x6f, 0xca, 0xd4, 0x97, 0x2c, 0x5d, 0x19, - 0x07, 0x56, 0xce, 0xf5, 0x77, 0xd9, 0x4c, 0x37, 0x8a, 0xe9, 0x10, 0x50, 0xf1, 0xda, 0x40, 0x0c, - 0xfc, 0xa3, 0xc5, 0x15, 0x86, 0x23, 0x80, 0xe0, 0xfc, 0xae, 0xd3, 0x00, 0x05, 0x27, 0x76, 0xea, - 0x18, 0x4f, 0x1b, 0x95, 0x3d, 0x8a, 0x26, 0x73, 0xc5, 0x13, 0x7a, 0xb6, 0xf9, 0xe7, 0x79, 0xe0, - 0xf8, 0x14, 0x48, 0x06, 0xb7, 0x41, 0x36, 0xe1, 0x46, 0x35, 0x99, 0x0c, 0x47, 0x8c, 0xa3, 0x33, - 0x80, 0x8a, 0x89, 0x63, 0x0a, 0x17, 0x62, 0xa6, 0x56, 0x93, 0x9f, 0xf4, 0x9b, 0xa5, 0xd2, 0x32, - 0x78, 0xc2, 0x02, 0x0a, 0x46, 0xaa, 0xbd, 0xdd, 0x12, 0x7e, 0xa5, 0x6a, 0x4b, 0xf8, 0x95, 0xcd, - 0x09, 0x35, 0xb9, 0xc8, 0x16, 0x76, 0x66, 0x4b, 0xf8, 0x15, 0xc5, 0x6c, 0x2f, 0xbe, 0x88, 0x26, - 0x91, 0x1f, 0x46, 0xbe, 0x13, 0x92, 0xa6, 0x8a, 0x95, 0x49, 0x8f, 0xf0, 0xdd, 0xd7, 0xd7, 0x95, - 0x33, 0x43, 0x6d, 0x15, 0xfc, 0x41, 0x9e, 0x8f, 0x38, 0x7f, 0x83, 0x75, 0x21, 0xbe, 0x23, 0x20, - 0x04, 0x9c, 0x9e, 0x9c, 0x63, 0x10, 0xc0, 0x61, 0x97, 0xa0, 0xc9, 0x7f, 0xe4, 0xe7, 0xca, 0xa5, - 0x98, 0xf9, 0x37, 0x6c, 0xe6, 0x68, 0xc7, 0xfe, 0xcc, 0x8d, 0x4b, 0x18, 0x4b, 0x88, 0x0b, 0x95, - 0x7e, 0xe2, 0x98, 0x11, 0xdc, 0x21, 0x35, 0xb0, 0x3f, 0x35, 0x7c, 0x1a, 0xd4, 0x8f, 0xd4, 0x2a, - 0x45, 0xf2, 0x91, 0x03, 0x58, 0x79, 0xd6, 0x68, 0xbc, 0xe1, 0xd8, 0x66, 0x16, 0xfc, 0x60, 0xf3, - 0xb6, 0x68, 0x22, 0xb9, 0xb9, 0x39, 0x9c, 0x48, 0x2e, 0x52, 0xb8, 0xaf, 0xb3, 0xc7, 0x4e, 0x39, - 0xb7, 0x83, 0xe5, 0x29, 0x30, 0x06, 0x06, 0xb1, 0xed, 0xa8, 0x33, 0xc3, 0x30, 0x75, 0xef, 0x71, - 0x68, 0xfd, 0x15, 0x99, 0xc4, 0x72, 0x3e, 0xe2, 0x08, 0xa6, 0x74, 0x88, 0x79, 0x44, 0xcb, 0xa4, - 0x12, 0x9a, 0x9f, 0xac, 0xf3, 0x90, 0xfe, 0xfa, 0x29, 0x23, 0xc8, 0x88, 0xf8, 0x30, 0x2a, 0x52, - 0xe3, 0xf1, 0x68, 0x7c, 0x6d, 0xa2, 0x89, 0xcf, 0xfc, 0x66, 0x14, 0x4a, 0x25, 0x16, 0xb6, 0x62, - 0x94, 0x8b, 0x0f, 0xa1, 0xe2, 0x38, 0x4c, 0xb4, 0x3e, 0xc4, 0x5b, 0x82, 0xcc, 0x52, 0xa9, 0x08, - 0xe6, 0x5a, 0x5f, 0xa7, 0x98, 0x85, 0xc6, 0x33, 0x84, 0x82, 0x89, 0x3e, 0x43, 0xb0, 0x3c, 0xbd, - 0xa8, 0x45, 0xc5, 0x8d, 0x04, 0x61, 0x22, 0x5b, 0xa3, 0xe2, 0x5c, 0x1b, 0xde, 0xf3, 0x28, 0x5b, - 0x9a, 0x85, 0xb2, 0x06, 0xaa, 0xf9, 0xde, 0xcb, 0x47, 0x77, 0xe1, 0x3d, 0x08, 0xbf, 0xc2, 0x5c, - 0xab, 0x9f, 0x8a, 0x9a, 0x7e, 0xd1, 0x3f, 0x0a, 0x6a, 0x0a, 0xa3, 0xa2, 0x40, 0x73, 0x33, 0x59, - 0x2a, 0xca, 0xff, 0x49, 0x82, 0x7d, 0xa3, 0x50, 0x7a, 0x9c, 0xa6, 0x73, 0xe2, 0xc8, 0xc2, 0x32, - 0x29, 0xe6, 0x2c, 0x4f, 0x56, 0xbf, 0xfd, 0xd6, 0x70, 0xb7, 0xe1, 0xaa, 0x47, 0x9e, 0x24, 0x2a, - 0x46, 0x4f, 0xe2, 0x51, 0x81, 0x2e, 0x18, 0xa7, 0xf7, 0xb0, 0xbd, 0xc8, 0x35, 0x36, 0xad, 0xe6, - 0x05, 0x4d, 0x7e, 0xce, 0x6f, 0x36, 0x90, 0xd6, 0x8e, 0xbc, 0xb7, 0x8b, 0x8e, 0x82, 0xfb, 0x20, - 0x3e, 0x64, 0xb8, 0xe1, 0xa4, 0x8f, 0x5c, 0xce, 0x0c, 0xb5, 0x97, 0xdb, 0x67, 0x6c, 0x86, 0xce, - 0x05, 0xd7, 0x7e, 0xc5, 0xec, 0xf9, 0x9b, 0x21, 0xd6, 0x32, 0x27, 0x44, 0xf9, 0x71, 0x53, 0xea, - 0x6a, 0x0b, 0xa5, 0x4e, 0xec, 0x5d, 0x8c, 0x85, 0x58, 0x57, 0xa1, 0x22, 0x7c, 0x08, 0xb3, 0x48, - 0x33, 0xd1, 0x2d, 0xf0, 0xd0, 0x91, 0x99, 0x65, 0xd8, 0x6f, 0x71, 0x3e, 0x42, 0x61, 0xe2, 0x4f, - 0x11, 0x64, 0x14, 0x91, 0xaf, 0x70, 0x25, 0xbe, 0x7f, 0x37, 0x09, 0xdd, 0xb9, 0x5a, 0x4d, 0xb2, - 0x3d, 0xc0, 0x7d, 0x26, 0x7e, 0x54, 0xd4, 0xba, 0x19, 0xde, 0xde, 0x1b, 0x07, 0x9f, 0x83, 0xe2, - 0x90, 0x2d, 0x24, 0x55, 0x1c, 0x32, 0x70, 0x49, 0xa4, 0x8f, 0x3e, 0xe0, 0x71, 0x3a, 0x21, 0x13, - 0x53, 0x71, 0xc8, 0xa0, 0xf0, 0xe1, 0x3a, 0x25, 0xa1, 0x06, 0xe2, 0xc1, 0x6d, 0xf8, 0xa6, 0xa9, - 0x46, 0x92, 0x14, 0x1f, 0xfe, 0x50, 0x93, 0x77, 0xfa, 0xad, 0x35, 0xd2, 0xb6, 0xf4, 0x85, 0x33, - 0x99, 0xab, 0xaf, 0xa7, 0x0f, 0xf5, 0x66, 0x3e, 0x7e, 0x07, 0xc8, 0xe1, 0xd6, 0x70, 0x27, 0x8d, - 0xbe, 0x76, 0xa8, 0x3b, 0x7d, 0xec, 0x9a, 0xde, 0x7f, 0x1d, 0x9e, 0x9d, 0xd4, 0x37, 0x54, 0xc1, - 0x1f, 0xfa, 0xa1, 0xfd, 0x55, 0x7c, 0x8e, 0xfb, 0x2a, 0xf3, 0xbd, 0x12, 0xb9, 0x69, 0x8e, 0xdc, - 0x7c, 0x7b, 0xe4, 0x4c, 0x37, 0xdf, 0xf1, 0xad, 0xe1, 0x2e, 0xc5, 0xfa, 0x61, 0xb1, 0x5b, 0x40, - 0x05, 0x81, 0xe6, 0xf0, 0x0e, 0x95, 0x62, 0xde, 0x1c, 0x1b, 0xe6, 0xd5, 0x47, 0x92, 0xcb, 0x24, - 0x40, 0x3d, 0x12, 0xcf, 0x16, 0xc0, 0xa5, 0xb5, 0x10, 0x68, 0x1e, 0xa2, 0xc7, 0xdd, 0x1a, 0xee, - 0x21, 0xa5, 0xb7, 0x86, 0x7b, 0x96, 0xa4, 0x06, 0x06, 0xe5, 0x26, 0x35, 0x92, 0xd4, 0x87, 0x77, - 0xeb, 0x03, 0x03, 0xb7, 0x86, 0xbb, 0x97, 0xb2, 0x92, 0x74, 0xdf, 0xbb, 0x50, 0x02, 0x32, 0x82, - 0xde, 0x79, 0x3c, 0x35, 0xb0, 0x9f, 0xc6, 0xab, 0x87, 0x5e, 0xc5, 0xd5, 0xa8, 0x80, 0xc4, 0xbf, - 0x23, 0xbe, 0x07, 0xf9, 0x35, 0x4b, 0x35, 0x79, 0xb1, 0x1f, 0x4a, 0xa4, 0x7b, 0xe1, 0xc6, 0x36, - 0xf2, 0xc9, 0xa7, 0xfa, 0xf9, 0x7d, 0xa9, 0x1b, 0x98, 0x75, 0x18, 0x5d, 0x19, 0x7c, 0x72, 0x89, - 0x02, 0xd0, 0xe2, 0x0b, 0xa8, 0x28, 0x16, 0x68, 0x52, 0x1b, 0xc3, 0xaf, 0x80, 0x17, 0x42, 0x01, - 0x84, 0xfb, 0x35, 0x0a, 0x25, 0x09, 0x5e, 0x4e, 0x41, 0xa7, 0x10, 0xea, 0xf1, 0xd6, 0x70, 0x77, - 0xba, 0xb7, 0x4d, 0x3f, 0x7b, 0xfe, 0xc1, 0x25, 0x4b, 0xec, 0x5d, 0x4b, 0x4b, 0x14, 0xa3, 0xb5, - 0xb8, 0x4b, 0x40, 0x33, 0x12, 0xdb, 0xa2, 0x2f, 0xc9, 0xec, 0x89, 0x38, 0x46, 0x15, 0x1a, 0xf5, - 0xb7, 0x51, 0x93, 0x1b, 0xfc, 0xf6, 0x5a, 0xe9, 0x31, 0x48, 0xb6, 0x01, 0x99, 0x02, 0x01, 0x77, - 0xc8, 0x17, 0x3f, 0xd0, 0x7b, 0x2f, 0x58, 0x11, 0x2f, 0x35, 0xd0, 0x37, 0xf2, 0xce, 0x87, 0xfa, - 0xfe, 0xd3, 0x06, 0xa0, 0x62, 0xef, 0xaf, 0x1a, 0x5f, 0x13, 0xd1, 0x43, 0x7e, 0x37, 0x2a, 0x35, - 0xd2, 0xae, 0x02, 0x87, 0xef, 0x69, 0xa7, 0x58, 0x03, 0x59, 0x82, 0xfe, 0xd4, 0x43, 0xde, 0x7f, - 0x67, 0x35, 0xfc, 0x71, 0xf3, 0xd8, 0x67, 0x2d, 0x3c, 0x76, 0x61, 0x36, 0xb5, 0x67, 0x2f, 0x87, - 0x4b, 0xb0, 0x51, 0x0b, 0xb7, 0xed, 0x16, 0xd0, 0x4c, 0xa7, 0x76, 0xf8, 0x66, 0x01, 0x88, 0x0c, - 0xc9, 0xcc, 0x29, 0x56, 0x96, 0x71, 0x58, 0x49, 0x73, 0x14, 0x1b, 0x28, 0x35, 0x13, 0x15, 0x24, - 0xa3, 0x49, 0x7a, 0xe5, 0xce, 0x57, 0xe0, 0x87, 0x58, 0x91, 0x3b, 0xc7, 0x34, 0x3e, 0x1a, 0x49, - 0x80, 0x44, 0x18, 0xce, 0x5f, 0x0a, 0xa8, 0x88, 0x15, 0x89, 0xb3, 0x51, 0x21, 0x96, 0xa8, 0x29, - 0xef, 0xcf, 0x57, 0xe8, 0x2f, 0x71, 0x2a, 0xf2, 0x84, 0x63, 0x54, 0x3c, 0xf3, 0x84, 0x63, 0xa2, - 0x88, 0xf2, 0xc3, 0xb1, 0x1d, 0x0f, 0x51, 0xe3, 0x3b, 0xf9, 0x1b, 0x0f, 0x14, 0x43, 0x73, 0xef, - 0x4c, 0x8c, 0xdf, 0x78, 0xa0, 0x26, 0xc7, 0x98, 0xc2, 0x28, 0x77, 0x36, 0x2a, 0x8c, 0xc2, 0xbb, - 0x14, 0xfa, 0xbe, 0x04, 0x7e, 0x89, 0x8f, 0xa1, 0x62, 0xa2, 0xc9, 0x90, 0xe3, 0x6a, 0x80, 0x1a, - 0xd3, 0xe7, 0x39, 0xcd, 0xa2, 0x96, 0x01, 0x29, 0x26, 0xbc, 0x6f, 0x19, 0x9a, 0x62, 0xa9, 0x23, - 0x63, 0x87, 0xf9, 0x4c, 0x51, 0x3c, 0xe1, 0x90, 0x93, 0x3f, 0xb7, 0xef, 0x8b, 0x42, 0xe2, 0xba, - 0xcc, 0x4b, 0x0f, 0xf5, 0xa1, 0xc4, 0x4f, 0x07, 0xd8, 0x4f, 0x07, 0xd8, 0xed, 0x74, 0x80, 0xfd, - 0xd2, 0x76, 0x80, 0x11, 0xe7, 0x26, 0xf3, 0x00, 0xab, 0x74, 0x3c, 0xc0, 0xf8, 0xee, 0x28, 0x00, - 0xb9, 0x67, 0x98, 0x8c, 0x86, 0x85, 0x86, 0x19, 0x83, 0x46, 0xa4, 0x79, 0x8e, 0xc7, 0x47, 0x7d, - 0x1d, 0x3d, 0x40, 0x3e, 0xf7, 0xa0, 0x05, 0xae, 0x3d, 0xfc, 0xb8, 0xcf, 0x91, 0x5f, 0x5a, 0xce, - 0x91, 0x07, 0x72, 0x9c, 0x23, 0xfc, 0xaa, 0x8c, 0xe7, 0x38, 0xe9, 0x11, 0xd0, 0x9c, 0x1c, 0xcd, - 0xbf, 0xb1, 0x53, 0x65, 0x99, 0xe5, 0x54, 0x59, 0xe0, 0xc4, 0x8f, 0xeb, 0xeb, 0x12, 0x8c, 0x7b, - 0xd0, 0xc1, 0x35, 0xa2, 0x69, 0x59, 0x15, 0xae, 0x47, 0x4c, 0x39, 0xca, 0x6f, 0x51, 0x8d, 0x80, - 0x0f, 0x36, 0xc7, 0xe1, 0xb5, 0x2a, 0xee, 0x14, 0x43, 0xf8, 0xfe, 0x00, 0xe5, 0xe3, 0x5f, 0xe2, - 0x3c, 0x84, 0x08, 0x5f, 0xdb, 0x9c, 0x74, 0xd4, 0x2b, 0xdc, 0x85, 0x8a, 0xa0, 0x3a, 0x9c, 0xad, - 0x58, 0x10, 0xcb, 0x50, 0xb1, 0xf1, 0xa0, 0x8c, 0x9e, 0x61, 0x93, 0xb6, 0x6c, 0xaf, 0x09, 0xbf, - 0x52, 0x1f, 0xf2, 0xb5, 0xe5, 0xa1, 0xd9, 0xab, 0xd5, 0x24, 0x1e, 0x76, 0x02, 0x5e, 0x20, 0xfd, - 0xb8, 0x8e, 0x80, 0x5f, 0xc1, 0x31, 0xcd, 0x1d, 0x01, 0x63, 0xed, 0x25, 0xf8, 0xb6, 0x1a, 0xad, - 0xa4, 0x29, 0xb0, 0x63, 0x09, 0xf6, 0x04, 0x92, 0x55, 0xb0, 0x14, 0x8a, 0x2e, 0xcb, 0x27, 0xdd, - 0x0f, 0xc1, 0xa3, 0x19, 0x53, 0x48, 0x50, 0x6d, 0x42, 0xef, 0xa0, 0x7e, 0xfc, 0xc2, 0x48, 0xff, - 0x7b, 0xe9, 0xd7, 0x3a, 0x68, 0xd8, 0x97, 0x9b, 0x1e, 0x72, 0x8f, 0xb4, 0xf6, 0xf1, 0xe3, 0xe6, - 0x0f, 0x6b, 0x0d, 0xfe, 0xe0, 0x18, 0xc7, 0x85, 0x09, 0x68, 0xbf, 0x08, 0x27, 0xb7, 0x61, 0xdc, - 0x1f, 0x8b, 0x29, 0xfc, 0x7f, 0x02, 0x9a, 0x9e, 0xdd, 0xe6, 0x47, 0x20, 0xdc, 0x19, 0x4c, 0xa2, - 0x68, 0x4c, 0x26, 0xf1, 0x59, 0x01, 0xb9, 0xac, 0x10, 0x7d, 0x16, 0xe9, 0x6e, 0x9b, 0x1a, 0xdc, - 0xfe, 0xa3, 0x22, 0xe4, 0x8d, 0x46, 0x5a, 0x3d, 0xd0, 0xc1, 0xaf, 0xd0, 0xe4, 0x6a, 0x23, 0xad, - 0xde, 0x92, 0xfa, 0x86, 0x1d, 0xcb, 0x41, 0x4a, 0x33, 0x22, 0xb2, 0xf7, 0x5f, 0x37, 0x84, 0x25, - 0x5e, 0x4c, 0xd2, 0xbb, 0xaf, 0x8f, 0x76, 0xec, 0x37, 0xf2, 0xec, 0x3d, 0x8f, 0x8a, 0xf0, 0x8e, - 0x73, 0x46, 0x6a, 0x92, 0xd7, 0xd0, 0x28, 0x24, 0x5d, 0x3f, 0x34, 0xa1, 0xae, 0x8d, 0xb6, 0x62, - 0x13, 0x9a, 0xb4, 0x5d, 0xdd, 0x49, 0xfa, 0x2e, 0x20, 0x7d, 0x13, 0x6d, 0x27, 0x2b, 0x93, 0x9e, - 0xd0, 0x3b, 0xae, 0x8e, 0xbe, 0x79, 0x49, 0xef, 0x3b, 0xc6, 0xfa, 0x1f, 0x39, 0xff, 0x6e, 0xfa, - 0xe4, 0x21, 0x7d, 0xef, 0xa0, 0x79, 0x19, 0x3d, 0xb4, 0xbf, 0x0a, 0x10, 0x37, 0xd3, 0xd7, 0x65, - 0xc0, 0x33, 0xab, 0x1a, 0xed, 0xc9, 0xe5, 0xb2, 0x5d, 0xf8, 0x9d, 0x5e, 0xb6, 0xb1, 0xf0, 0x85, - 0x1e, 0xf6, 0xbb, 0xa2, 0xa1, 0x34, 0x07, 0x92, 0x8b, 0x39, 0xdf, 0xb6, 0xaf, 0x7b, 0x88, 0xf2, - 0x3b, 0xbb, 0xe5, 0x8f, 0x9b, 0x0d, 0xae, 0xb4, 0xb0, 0x41, 0xd7, 0xab, 0xeb, 0x58, 0xec, 0xef, - 0xcf, 0x05, 0x54, 0xb2, 0x2e, 0x9a, 0x0c, 0x6f, 0xdd, 0x59, 0x1b, 0x8d, 0x6c, 0x0d, 0x37, 0x89, - 0x6b, 0x50, 0x61, 0x82, 0xf8, 0x71, 0x50, 0x6a, 0x5f, 0xae, 0xc9, 0x4b, 0xfd, 0xb4, 0x48, 0xba, - 0x1f, 0x5c, 0xd6, 0x47, 0xdb, 0x7a, 0x32, 0xa7, 0xce, 0xc1, 0xb5, 0x02, 0xd2, 0x59, 0x42, 0x79, - 0xa6, 0xa7, 0x1d, 0x00, 0x15, 0xda, 0x40, 0x7c, 0x00, 0x15, 0xe2, 0xcf, 0x30, 0x1d, 0x68, 0xcd, - 0x1d, 0x9a, 0x3c, 0xdd, 0x4f, 0x8b, 0x24, 0xfa, 0xaf, 0x42, 0xff, 0x15, 0x9f, 0x40, 0x93, 0x03, - 0x64, 0x35, 0x37, 0x44, 0xb7, 0xab, 0x11, 0x3e, 0xf4, 0x1b, 0x5f, 0x2e, 0xf1, 0x3f, 0x14, 0xfe, - 0x87, 0x6f, 0xbf, 0x07, 0x21, 0x98, 0x0c, 0x91, 0x9f, 0x56, 0x18, 0xbe, 0xed, 0x02, 0xd9, 0x48, - 0xc8, 0xd7, 0x43, 0x5f, 0xca, 0x94, 0xd2, 0x64, 0x24, 0xf0, 0x5e, 0x66, 0xb8, 0x4d, 0x3f, 0xd4, - 0x0f, 0xd3, 0x32, 0xdc, 0xdc, 0x7f, 0x8e, 0x0a, 0x92, 0xe1, 0x64, 0x33, 0x33, 0x54, 0x93, 0x3c, - 0x9e, 0x50, 0x22, 0x95, 0x01, 0x28, 0xf9, 0xa1, 0xef, 0xbf, 0x9a, 0x1a, 0xdc, 0x67, 0x38, 0xc3, - 0x28, 0x00, 0x82, 0xc9, 0x6a, 0x52, 0x90, 0x5e, 0xec, 0xf2, 0xcc, 0x1c, 0xbf, 0xac, 0x4c, 0xfa, - 0x15, 0x74, 0x01, 0x97, 0x39, 0x78, 0x42, 0x56, 0xe1, 0x85, 0x63, 0x1f, 0x6c, 0xc5, 0xa3, 0xbd, - 0x6d, 0xe9, 0x2b, 0xbb, 0xe1, 0x89, 0x19, 0x2c, 0x2f, 0xc0, 0x7e, 0xd1, 0xb6, 0xdb, 0x78, 0x87, - 0x80, 0xaf, 0x24, 0x64, 0xfd, 0xe9, 0x95, 0xe4, 0xc2, 0x99, 0x4c, 0x57, 0xa7, 0xc2, 0xbe, 0xe1, - 0xbb, 0x34, 0x15, 0x4d, 0x85, 0xf5, 0x60, 0xef, 0x63, 0xc5, 0x67, 0xd1, 0xf4, 0x88, 0xa5, 0xc4, - 0xf0, 0x8b, 0x20, 0xab, 0x63, 0xab, 0x94, 0xa6, 0xc2, 0x38, 0xa1, 0xeb, 0xfa, 0x3a, 0xc5, 0x06, - 0x61, 0x84, 0xea, 0xf3, 0xd8, 0x42, 0xf5, 0xf1, 0x4d, 0x2d, 0xa1, 0xfa, 0x7e, 0xc3, 0x87, 0xc5, - 0x80, 0xd5, 0x59, 0xa3, 0xc9, 0xf5, 0x7c, 0x4a, 0xd8, 0x9f, 0xf3, 0x8d, 0xd3, 0x5d, 0x6d, 0x10, - 0xc7, 0xc8, 0x08, 0x69, 0x70, 0x6b, 0xb8, 0x7b, 0xa4, 0xff, 0x1c, 0xfc, 0x9d, 0x1a, 0x18, 0x1c, - 0x79, 0xe3, 0xc4, 0xe8, 0x47, 0x03, 0x46, 0x2d, 0x9f, 0x1f, 0xf6, 0x8c, 0x80, 0x10, 0x1d, 0xf3, - 0x4e, 0x23, 0xbe, 0x4d, 0x9b, 0xa0, 0xc9, 0xbf, 0xf3, 0x73, 0xe5, 0x52, 0x94, 0x22, 0xb5, 0x73, - 0xca, 0x92, 0x2d, 0xdb, 0x37, 0xb7, 0x44, 0x23, 0xe1, 0x64, 0x34, 0xbe, 0x59, 0xdd, 0xa1, 0x46, - 0x92, 0x5f, 0xb4, 0xf1, 0x45, 0x2d, 0x6a, 0x32, 0x1e, 0x0e, 0x26, 0x16, 0x7b, 0xd3, 0xbd, 0x1f, - 0xa4, 0x4f, 0x9c, 0xd3, 0x2f, 0xef, 0x81, 0x56, 0xf1, 0xe4, 0xcb, 0x5f, 0xb4, 0xed, 0x52, 0x5b, - 0x02, 0xe1, 0xe6, 0x2f, 0xda, 0x76, 0xed, 0x88, 0x86, 0x83, 0x6a, 0xa6, 0xaf, 0x2b, 0x7d, 0xf4, - 0xba, 0x3e, 0x7c, 0x50, 0xe1, 0x3e, 0x2e, 0x3e, 0x4c, 0x1f, 0x27, 0x83, 0x77, 0x12, 0x7d, 0x61, - 0xad, 0x26, 0x82, 0x52, 0xa9, 0xb1, 0x0a, 0xe9, 0x13, 0x37, 0x2d, 0x39, 0xa9, 0xe1, 0x05, 0xf3, - 0xc3, 0x06, 0x8a, 0x03, 0xc3, 0x86, 0x58, 0xb4, 0x14, 0xc5, 0xc5, 0x1c, 0xc8, 0x7d, 0x40, 0x40, - 0x85, 0x41, 0x42, 0xf1, 0x54, 0xb2, 0x98, 0x6b, 0xd7, 0x6e, 0x98, 0x5c, 0x01, 0x5e, 0x4e, 0xd1, - 0x06, 0xd2, 0x33, 0x3c, 0xfd, 0x83, 0x99, 0xc9, 0x40, 0x44, 0x83, 0x11, 0xd0, 0x81, 0x93, 0xb9, - 0x42, 0x04, 0x2b, 0x80, 0x34, 0x00, 0xa0, 0x33, 0x85, 0x76, 0x2a, 0x6e, 0x43, 0x53, 0x82, 0xd4, - 0x2d, 0x9c, 0x0c, 0x83, 0x0a, 0x2e, 0x65, 0xce, 0xc3, 0x22, 0xac, 0x8d, 0x50, 0xa4, 0xb5, 0x95, - 0x24, 0x82, 0xf3, 0x38, 0x78, 0x56, 0xd0, 0x39, 0x5b, 0x41, 0xf0, 0x97, 0x42, 0xd4, 0x09, 0x10, - 0xbe, 0x54, 0x3c, 0xce, 0x2f, 0x59, 0x5a, 0xe1, 0x2f, 0x9d, 0x1e, 0x3d, 0x7e, 0xd6, 0xfa, 0x25, - 0x0b, 0x88, 0xf8, 0x5b, 0x34, 0x0d, 0x3e, 0xbd, 0x8e, 0xf9, 0xd4, 0x90, 0x27, 0x70, 0xb9, 0xbf, - 0x45, 0x1c, 0xdd, 0xb2, 0xdb, 0x49, 0xb3, 0x58, 0x5c, 0xe1, 0xd3, 0xe9, 0xa3, 0x97, 0xf5, 0x77, - 0x4e, 0xd2, 0x0f, 0x66, 0xc3, 0xe1, 0x4f, 0xc2, 0x18, 0xcc, 0x4f, 0x4e, 0x1e, 0xe7, 0x27, 0xb3, - 0xda, 0x71, 0x9f, 0xa4, 0x33, 0xa5, 0x9f, 0xcc, 0x82, 0xc3, 0x9f, 0x6c, 0x35, 0xe2, 0xe0, 0xc2, - 0x27, 0x4b, 0xc6, 0xf9, 0xc9, 0xac, 0x76, 0xfc, 0x2c, 0x89, 0xeb, 0x32, 0xfb, 0x64, 0x16, 0x9c, - 0xf8, 0x3b, 0x34, 0x83, 0x24, 0x35, 0x6f, 0x0c, 0x06, 0x9a, 0xd5, 0xf5, 0xad, 0x49, 0x22, 0xb2, - 0x4c, 0x19, 0xf3, 0xa3, 0xcb, 0x34, 0x79, 0x89, 0xdf, 0xde, 0x52, 0x9a, 0x63, 0x7e, 0xb6, 0xeb, - 0x7d, 0xfd, 0xd2, 0x75, 0xf8, 0x49, 0x3f, 0x6e, 0x87, 0x17, 0x5f, 0x45, 0xd3, 0xcd, 0xc2, 0x7a, - 0x92, 0x9f, 0xc1, 0xed, 0x69, 0xde, 0x84, 0xbe, 0x9e, 0x19, 0xb6, 0x7d, 0xdd, 0xf6, 0x21, 0xb1, - 0x4d, 0xc0, 0x12, 0x43, 0x50, 0x0d, 0xef, 0x50, 0xe3, 0x09, 0x9a, 0xe1, 0x79, 0x8b, 0x26, 0x6f, - 0xf6, 0x9b, 0xa5, 0x92, 0x42, 0xa9, 0xef, 0xc0, 0xb9, 0xf4, 0x9b, 0xd7, 0x46, 0xda, 0x3a, 0x2a, - 0xf4, 0x83, 0xfd, 0xe9, 0xee, 0xbd, 0xfa, 0xa5, 0x9e, 0x5b, 0xc3, 0x6f, 0x8f, 0xec, 0x3b, 0x97, - 0x3e, 0x76, 0x1a, 0x7e, 0x56, 0x78, 0xf5, 0x83, 0xfd, 0xf4, 0x08, 0x21, 0x88, 0x5c, 0xc5, 0x6d, - 0x3a, 0x79, 0x95, 0x69, 0x78, 0xdc, 0x9b, 0xdd, 0xf3, 0x71, 0x90, 0xa6, 0x5b, 0xe3, 0x20, 0x95, - 0x9a, 0xef, 0x44, 0x67, 0x40, 0x0d, 0x7b, 0x08, 0x3a, 0xdf, 0x92, 0x91, 0x4a, 0x84, 0xf8, 0x4c, - 0x5c, 0xe2, 0xb9, 0xf9, 0x96, 0xc7, 0x9e, 0x77, 0x40, 0xbd, 0x59, 0x52, 0x1d, 0xd4, 0xe4, 0x17, - 0xd1, 0xaf, 0xfd, 0x59, 0xe7, 0x99, 0xb4, 0x86, 0x3f, 0x26, 0x2a, 0xbc, 0xa9, 0x81, 0xa1, 0x91, - 0xf7, 0x76, 0xc1, 0x23, 0x3b, 0xbd, 0xff, 0x3a, 0x9c, 0xa4, 0x20, 0x67, 0x03, 0x60, 0x39, 0x4c, - 0xf3, 0x8b, 0xb6, 0x5d, 0xe6, 0xaa, 0xf7, 0x75, 0x81, 0x2c, 0xb0, 0xc8, 0xf7, 0xd7, 0x53, 0xd0, - 0x9c, 0x5a, 0x4a, 0x51, 0xfc, 0x67, 0xd8, 0x6d, 0x68, 0x2b, 0x7f, 0x6e, 0x09, 0x2c, 0x3d, 0xb5, - 0x9f, 0x3f, 0xb7, 0xe6, 0x59, 0x38, 0x36, 0x0b, 0xad, 0xcd, 0x82, 0xe3, 0x7e, 0x59, 0x53, 0x1a, - 0x9f, 0x3d, 0x5d, 0x28, 0x6d, 0x9b, 0xee, 0x10, 0x2b, 0xd0, 0x3c, 0xb3, 0x1e, 0xb1, 0x1c, 0xa9, - 0x0b, 0x9d, 0x8e, 0xd4, 0xf4, 0x89, 0x9b, 0x5c, 0xdc, 0xf2, 0xe9, 0x02, 0x3d, 0x59, 0xd9, 0x49, - 0x92, 0x37, 0xd1, 0x93, 0xe4, 0x2f, 0x9c, 0x8e, 0xc9, 0x0f, 0xbf, 0xf7, 0x63, 0xf2, 0xcb, 0x9a, - 0xf2, 0xf8, 0x7d, 0xca, 0xf4, 0xec, 0x8e, 0x15, 0xd1, 0xde, 0xaf, 0xe5, 0x44, 0x6d, 0x34, 0x0e, - 0xc6, 0x82, 0x31, 0x83, 0x1a, 0x8e, 0xfb, 0xd0, 0xb4, 0x9d, 0x51, 0x85, 0xdf, 0xd9, 0x19, 0x35, - 0xe9, 0x3b, 0x3c, 0xa3, 0x8a, 0xbe, 0xfb, 0x33, 0xaa, 0xf8, 0xbb, 0x3f, 0xa3, 0xd0, 0xf7, 0x71, - 0x46, 0x4d, 0xfe, 0x5e, 0xcf, 0xa8, 0x92, 0xef, 0xea, 0x8c, 0xe2, 0xa4, 0xcb, 0x29, 0x3f, 0x08, - 0xe9, 0xd2, 0x7a, 0x68, 0x4e, 0xfd, 0x9e, 0x0f, 0xcd, 0x69, 0x96, 0x43, 0xb3, 0xfa, 0x45, 0x4d, - 0x7e, 0x01, 0x3d, 0xef, 0xcf, 0x75, 0xf2, 0x18, 0x3c, 0x83, 0x63, 0xe2, 0x9f, 0x0b, 0xe6, 0x89, - 0xf1, 0xb9, 0x40, 0xd8, 0xff, 0xe7, 0x02, 0xc7, 0x03, 0x3f, 0x17, 0xd8, 0x17, 0x7c, 0x03, 0x1e, - 0xf6, 0xde, 0x38, 0xbb, 0xf7, 0xdb, 0xc3, 0x8d, 0x7b, 0xa7, 0xdd, 0x1f, 0x3b, 0x7f, 0x9c, 0xfe, - 0xd8, 0x8b, 0x35, 0xf9, 0x01, 0xbb, 0x3f, 0x76, 0xa9, 0xdd, 0x1f, 0xdb, 0xd9, 0x0d, 0xdb, 0xf7, - 0xba, 0x07, 0xcd, 0xa9, 0xa3, 0xdc, 0xc4, 0x49, 0x24, 0xa8, 0xb5, 0x8b, 0x04, 0x90, 0xdb, 0xdb, - 0x14, 0x09, 0x66, 0x65, 0x89, 0x01, 0x74, 0x41, 0xb8, 0xf3, 0xde, 0xe9, 0x56, 0xee, 0xf9, 0x5a, - 0xb7, 0xf2, 0xea, 0x46, 0x4d, 0x6e, 0x40, 0xeb, 0xfc, 0xb9, 0xc6, 0x6e, 0x1c, 0x0f, 0x5c, 0x5f, - 0x56, 0xa4, 0x9a, 0x1a, 0x89, 0x86, 0x54, 0xb3, 0x53, 0x82, 0x47, 0xce, 0x1d, 0xfe, 0x84, 0x47, - 0x63, 0xe0, 0xd1, 0xdf, 0x78, 0x20, 0x45, 0x85, 0x33, 0x16, 0x3d, 0x64, 0xc7, 0x22, 0xd0, 0x02, - 0x9a, 0x58, 0xe4, 0x90, 0x60, 0xe1, 0x5b, 0x41, 0x9c, 0x4b, 0x82, 0x26, 0x7f, 0x20, 0xa0, 0xf3, - 0x82, 0xdf, 0x7d, 0xbc, 0xd2, 0x1f, 0x51, 0x1f, 0x53, 0x8e, 0x1d, 0x81, 0x92, 0xf2, 0xd6, 0x70, - 0xb7, 0xfe, 0xde, 0xee, 0xf4, 0xc9, 0x5e, 0xfd, 0xcc, 0x87, 0xfa, 0x9e, 0xe3, 0xa9, 0xc1, 0x3d, - 0x78, 0x49, 0x4e, 0xef, 0x85, 0x78, 0x1d, 0xb8, 0xb6, 0xf3, 0x38, 0x49, 0x97, 0xd9, 0x09, 0xe5, - 0x34, 0x70, 0x0c, 0xe9, 0xcd, 0x6c, 0xdb, 0x71, 0x01, 0xf4, 0x5b, 0xc4, 0x07, 0x60, 0x90, 0x85, - 0xbe, 0xbe, 0x30, 0xba, 0xf7, 0x20, 0x0b, 0x86, 0xc8, 0x45, 0x51, 0xfd, 0x77, 0x1e, 0x78, 0x85, - 0x77, 0x7b, 0xa2, 0xe4, 0xb3, 0x16, 0x63, 0xf1, 0x7c, 0xe7, 0x73, 0x92, 0x4d, 0xca, 0xf2, 0xd2, - 0xca, 0x72, 0x15, 0x00, 0x03, 0x23, 0xbc, 0xb4, 0x5a, 0xa3, 0xc9, 0xf5, 0x68, 0xb5, 0x3f, 0xc7, - 0xa2, 0xb0, 0x3c, 0x0a, 0x96, 0xfd, 0x73, 0x7b, 0x65, 0x55, 0x40, 0x5c, 0x11, 0x1a, 0xe2, 0xd1, - 0x1d, 0xe1, 0x90, 0x1a, 0x67, 0x59, 0x45, 0x36, 0xe2, 0x4a, 0x86, 0xbe, 0xbf, 0x25, 0x19, 0x42, - 0x48, 0xbd, 0x81, 0xbf, 0xcf, 0x6a, 0xf2, 0x3a, 0x3f, 0x57, 0x2c, 0x3d, 0x49, 0x73, 0x8e, 0x5c, - 0x39, 0xcd, 0x0a, 0x6f, 0x0d, 0x77, 0xc3, 0x05, 0x82, 0x3e, 0x57, 0xd8, 0xd9, 0x1a, 0x49, 0x86, - 0xab, 0x12, 0x6a, 0xf3, 0xd6, 0xaa, 0x60, 0xbc, 0x6a, 0x4b, 0x30, 0xb1, 0x99, 0xa5, 0xe4, 0xde, - 0x1c, 0x8b, 0x46, 0x9b, 0x15, 0xae, 0x37, 0xb1, 0x1a, 0x2f, 0x75, 0x93, 0xf9, 0x08, 0x12, 0xc2, - 0x20, 0x41, 0x91, 0x34, 0x2b, 0xdd, 0x3b, 0xa8, 0x9f, 0xdc, 0x87, 0xc9, 0xb2, 0xf7, 0x42, 0xa6, - 0xa7, 0x5d, 0xef, 0xbd, 0xac, 0x9f, 0x3a, 0xa5, 0xd0, 0x6a, 0x71, 0x05, 0x2a, 0x61, 0xbe, 0xb8, - 0xe4, 0xb2, 0x93, 0x67, 0x46, 0xc7, 0xb5, 0x54, 0x48, 0x85, 0xd0, 0x8f, 0x62, 0x29, 0x15, 0x5f, - 0x13, 0x50, 0x01, 0x89, 0x09, 0x44, 0x99, 0xc7, 0x5c, 0xdb, 0xdd, 0x62, 0x23, 0xe7, 0x15, 0xb3, - 0x5e, 0x93, 0x6b, 0xfd, 0x00, 0x2f, 0x55, 0x43, 0x80, 0xf4, 0xcc, 0x81, 0xbd, 0x15, 0x5e, 0x63, - 0x35, 0x8c, 0x32, 0xfd, 0xf2, 0xc1, 0xd4, 0xe0, 0x81, 0x4c, 0x5f, 0x57, 0x6a, 0xf0, 0x00, 0x81, - 0x37, 0x5c, 0xc6, 0xd3, 0x57, 0x4e, 0x7f, 0x59, 0x53, 0xe8, 0xcf, 0x2f, 0x0d, 0x95, 0xff, 0x4c, - 0x81, 0xbe, 0xc4, 0xe3, 0x02, 0x9f, 0x7e, 0xa7, 0x60, 0x1c, 0x23, 0x01, 0x3f, 0x75, 0x33, 0x39, - 0xcf, 0x5a, 0xf8, 0x72, 0x6a, 0xe0, 0x83, 0xf4, 0x91, 0xcb, 0xdc, 0x80, 0xc0, 0xac, 0x93, 0xe9, - 0x69, 0xa7, 0xab, 0x78, 0xe4, 0x32, 0xde, 0x25, 0x6e, 0x70, 0x46, 0x17, 0xfc, 0x00, 0xf9, 0x8c, - 0x3e, 0xf8, 0xde, 0x78, 0x5e, 0x40, 0x67, 0x05, 0xff, 0x58, 0xa8, 0x23, 0xb5, 0x5a, 0xf2, 0xd1, - 0x5c, 0x39, 0x0d, 0x11, 0xf6, 0xe1, 0xcb, 0x24, 0xb2, 0x2e, 0xc8, 0x7d, 0x24, 0x42, 0xee, 0x7d, - 0x5e, 0x66, 0x17, 0x27, 0xea, 0x70, 0x88, 0xdb, 0x44, 0x1c, 0x84, 0xf4, 0xbd, 0x83, 0x99, 0x8b, - 0xef, 0xe9, 0x87, 0x3a, 0xc1, 0xe1, 0x88, 0x1f, 0x97, 0x19, 0xb2, 0x9f, 0xeb, 0xca, 0xc2, 0x40, - 0x76, 0xe7, 0x21, 0xaf, 0xfb, 0x30, 0x6f, 0xc7, 0x94, 0xef, 0xae, 0x6f, 0x51, 0x20, 0x75, 0x3f, - 0xe1, 0x1f, 0x77, 0xd3, 0x35, 0x66, 0xcf, 0x0d, 0x68, 0x04, 0x67, 0xb2, 0x48, 0xe9, 0xd7, 0x3a, - 0xf4, 0x3d, 0x9f, 0x50, 0x76, 0x42, 0x5f, 0x8b, 0x8f, 0xb9, 0x44, 0x92, 0xdf, 0x92, 0x15, 0xe9, - 0xca, 0x69, 0xc7, 0x4e, 0xdd, 0xd8, 0xcc, 0x3f, 0xce, 0x47, 0x25, 0x35, 0x2c, 0x50, 0x21, 0x7d, - 0x0a, 0x63, 0x24, 0x12, 0x62, 0x2e, 0x2b, 0x66, 0x66, 0x21, 0x2f, 0x9a, 0x4c, 0x7f, 0x98, 0x69, - 0x9a, 0x15, 0xbe, 0x88, 0x83, 0xa8, 0xc5, 0xfb, 0x96, 0x67, 0x81, 0xc0, 0x45, 0xa2, 0x0f, 0x95, - 0xd0, 0x9f, 0x1b, 0x13, 0xf8, 0x5a, 0x40, 0x43, 0x7e, 0xf3, 0x65, 0xe2, 0x4c, 0x48, 0xda, 0x10, - 0x62, 0x61, 0x3f, 0xc9, 0x0f, 0x2c, 0xcb, 0x6f, 0x09, 0xbf, 0xc2, 0x99, 0xec, 0xd9, 0x4f, 0xb1, - 0x0c, 0x15, 0x6d, 0x09, 0xbf, 0x02, 0xfd, 0x41, 0xbc, 0x6f, 0xe3, 0x37, 0x9e, 0x91, 0x91, 0xe0, - 0x08, 0xe2, 0xaf, 0xf1, 0x19, 0x8f, 0xbc, 0x68, 0x32, 0xfd, 0x41, 0xfa, 0xa5, 0xe1, 0x8a, 0xb8, - 0x22, 0x71, 0x21, 0x9a, 0x42, 0x7f, 0x2a, 0xc0, 0xf9, 0x20, 0x81, 0xad, 0xb5, 0x10, 0xcf, 0x8a, - 0x16, 0xc0, 0x28, 0x26, 0xc3, 0xac, 0xf8, 0x32, 0x3c, 0x7e, 0x72, 0x67, 0xab, 0x0f, 0x41, 0x64, - 0x34, 0x85, 0xfd, 0xc4, 0x63, 0x6c, 0x32, 0x92, 0x5f, 0x4f, 0x81, 0x31, 0x1a, 0x05, 0xb8, 0x6f, - 0x0b, 0xe3, 0x9c, 0x0a, 0x7d, 0x5b, 0xb8, 0xe3, 0x4c, 0x54, 0xf0, 0x4a, 0x34, 0xa2, 0x52, 0xd5, - 0xa4, 0x02, 0x3f, 0x88, 0xfa, 0x2f, 0x1a, 0x49, 0xb4, 0xb6, 0x90, 0xc9, 0x4f, 0xa7, 0xea, 0x3f, - 0xa3, 0x44, 0x9c, 0x8d, 0x0a, 0x31, 0x8b, 0xaf, 0x0f, 0x51, 0xbd, 0x21, 0xfd, 0x85, 0xdb, 0x91, - 0xcf, 0xc3, 0x5c, 0xa8, 0xda, 0xd0, 0x2c, 0x11, 0xa7, 0xa3, 0xbc, 0xd6, 0x78, 0x33, 0xd5, 0x17, - 0xe2, 0x3f, 0xa5, 0x2b, 0x27, 0x3d, 0x68, 0x2a, 0xd5, 0x6e, 0xac, 0x85, 0x53, 0x54, 0xfc, 0x0b, - 0x01, 0x4d, 0xa9, 0xb5, 0x28, 0x58, 0x6c, 0x02, 0x9f, 0xa5, 0x5a, 0x51, 0x7f, 0x5b, 0x76, 0xf7, - 0x18, 0x10, 0x89, 0x98, 0x6f, 0x87, 0x26, 0xaf, 0x13, 0xa7, 0xc0, 0xcd, 0x8c, 0x96, 0x97, 0xad, - 0xb0, 0xfc, 0xbc, 0x35, 0xdc, 0x0d, 0x57, 0x44, 0x50, 0x98, 0xe9, 0x1d, 0xc3, 0xf8, 0xf2, 0xbc, - 0xeb, 0xcd, 0xd1, 0xdd, 0xef, 0xd1, 0xf4, 0x1c, 0x5a, 0x77, 0x66, 0xdf, 0xc5, 0xcc, 0x87, 0xfb, - 0xe0, 0xe7, 0xee, 0x7f, 0x99, 0x7a, 0xc3, 0xb3, 0xc0, 0x57, 0x56, 0x65, 0xfd, 0x76, 0xd5, 0x8e, - 0xa5, 0xac, 0xa4, 0x5a, 0xf0, 0x8b, 0x6d, 0x1e, 0x34, 0x5b, 0x51, 0x93, 0xf1, 0x9d, 0x96, 0x21, - 0x6d, 0x08, 0x24, 0xb6, 0x8b, 0xb6, 0x37, 0x9c, 0x76, 0x38, 0x3c, 0xb9, 0xfb, 0xc6, 0x03, 0x96, - 0x88, 0xf9, 0x8e, 0x0a, 0x9a, 0xfc, 0x07, 0xe2, 0x5d, 0xa3, 0x7b, 0xf7, 0x8f, 0xf4, 0x1f, 0xb1, - 0xcc, 0x0c, 0xa2, 0x69, 0x96, 0x3d, 0x31, 0xaa, 0x75, 0x62, 0x0e, 0xcb, 0x69, 0xb4, 0xf4, 0xb3, - 0x57, 0x46, 0x3e, 0x3e, 0x07, 0xe9, 0x4b, 0xf0, 0xfc, 0xf7, 0xee, 0x4f, 0x1f, 0xbd, 0x9c, 0x1a, - 0xd8, 0xa7, 0x1f, 0x3c, 0xcc, 0x83, 0x41, 0x07, 0x64, 0xc2, 0x4b, 0x7d, 0x15, 0xee, 0x13, 0xae, - 0x7a, 0xd5, 0x08, 0xe4, 0xfc, 0xbb, 0xaa, 0x38, 0x1e, 0x26, 0x5e, 0x82, 0x3f, 0x17, 0xd0, 0x4c, - 0x62, 0xe7, 0x27, 0xce, 0x2f, 0x34, 0xe0, 0x00, 0xbe, 0xe9, 0xdb, 0x3c, 0x64, 0xcc, 0x3a, 0x3c, - 0xf1, 0xf9, 0xb9, 0xaa, 0x13, 0x31, 0x5f, 0x42, 0x93, 0x6b, 0xc4, 0xbb, 0xb6, 0x1b, 0x85, 0x70, - 0x16, 0xa6, 0xdb, 0xce, 0xa7, 0xdf, 0x6d, 0x4b, 0x7f, 0xb2, 0xaf, 0xec, 0x5e, 0xb3, 0x6a, 0xe4, - 0xe6, 0xc9, 0xf4, 0x81, 0x73, 0x74, 0xce, 0x56, 0x30, 0x32, 0xab, 0xf2, 0xb2, 0x7b, 0x1c, 0x67, - 0x15, 0x6d, 0x0d, 0x55, 0x99, 0xbd, 0xe0, 0xc9, 0xec, 0xf6, 0xa0, 0x39, 0x4e, 0x93, 0xa9, 0x8d, - 0x46, 0x22, 0x6a, 0x30, 0x29, 0x2e, 0x74, 0x1f, 0x34, 0x05, 0xc1, 0x53, 0xbb, 0x77, 0x1c, 0x50, - 0x89, 0x98, 0xef, 0x88, 0xa0, 0xc9, 0x4f, 0x8b, 0x5e, 0x6e, 0x8a, 0x7b, 0x3a, 0xaa, 0xe8, 0x7b, - 0xf2, 0x4b, 0x37, 0x47, 0x8f, 0x5d, 0xca, 0xbc, 0x7e, 0x2d, 0xdd, 0xb6, 0xab, 0xec, 0x3e, 0x6e, - 0xa6, 0xa4, 0x9c, 0xce, 0xd4, 0x80, 0x06, 0x38, 0x32, 0xd5, 0x1a, 0xf1, 0x49, 0xb7, 0xa9, 0x26, - 0xf0, 0xfe, 0x91, 0xb7, 0xf6, 0xbf, 0x63, 0x20, 0x09, 0xcb, 0x96, 0x06, 0xe9, 0x24, 0xff, 0xb3, - 0x80, 0xa6, 0xd4, 0xb7, 0xc4, 0xa2, 0xf1, 0xa4, 0x2b, 0x8d, 0x5a, 0xaa, 0x1d, 0x69, 0x34, 0x0b, - 0x22, 0x11, 0xf3, 0xbd, 0x21, 0x68, 0x72, 0x48, 0xbc, 0x4b, 0xef, 0x1f, 0xd6, 0x3b, 0x68, 0xd2, - 0x02, 0x2b, 0x06, 0xaf, 0xe6, 0xab, 0x60, 0x8e, 0xe5, 0xd4, 0x57, 0xe7, 0x6c, 0x4f, 0x6a, 0xf0, - 0x30, 0xcb, 0x1d, 0x84, 0x81, 0xf4, 0xd7, 0x4f, 0x8d, 0xbc, 0x76, 0xa3, 0xda, 0xcb, 0x82, 0x8c, - 0x73, 0xfb, 0xb8, 0x88, 0x2c, 0xc4, 0x7d, 0xbe, 0xbb, 0x73, 0x60, 0x72, 0x98, 0x8c, 0x0e, 0xef, - 0xf8, 0x1e, 0x0f, 0x9a, 0xc2, 0x82, 0xf7, 0xb8, 0x4c, 0xd6, 0x52, 0xed, 0x38, 0xd9, 0x2c, 0x88, - 0x44, 0xcc, 0xd7, 0x2f, 0x68, 0xf2, 0xab, 0xe2, 0x14, 0xd0, 0x3f, 0x31, 0x8e, 0xf4, 0x1b, 0xcb, - 0x4f, 0x90, 0x35, 0xc0, 0x7c, 0x0e, 0x49, 0x15, 0x53, 0x43, 0x1d, 0x60, 0x30, 0xa1, 0xe1, 0x82, - 0x18, 0x00, 0x71, 0x76, 0xee, 0x19, 0x39, 0xff, 0x9e, 0x7e, 0xf0, 0x70, 0x6a, 0x68, 0x28, 0x75, - 0xe3, 0x08, 0x65, 0x65, 0x24, 0x78, 0x21, 0x16, 0xb1, 0xf6, 0x7e, 0xa0, 0xbf, 0x7e, 0x41, 0xef, - 0x3e, 0xaa, 0xbf, 0x7e, 0x21, 0x75, 0xa3, 0xf7, 0x8b, 0xb6, 0xdd, 0x64, 0x0d, 0x1e, 0x28, 0xbb, - 0x6f, 0x7c, 0xd4, 0x8c, 0x17, 0xa2, 0xdb, 0x83, 0x66, 0xc8, 0xa1, 0x10, 0x71, 0xc2, 0xdd, 0x10, - 0x65, 0x8b, 0x61, 0xf3, 0xb3, 0x64, 0x20, 0x54, 0x6a, 0x2c, 0xf3, 0xba, 0x03, 0x80, 0x30, 0xe2, - 0xbb, 0x2a, 0x68, 0xf2, 0x2b, 0xa2, 0x98, 0x1a, 0x78, 0x3d, 0x7d, 0xf2, 0x1a, 0x0c, 0x1c, 0xb4, - 0x74, 0x65, 0x21, 0xd0, 0xe2, 0xd5, 0x37, 0xe0, 0xeb, 0xc7, 0xd0, 0x71, 0xba, 0xbf, 0xef, 0x9c, - 0xd4, 0x5f, 0x3f, 0x0d, 0x10, 0xe5, 0xa9, 0xc1, 0xc3, 0xb5, 0x9b, 0xd6, 0xd2, 0xdc, 0xaa, 0x5a, - 0x77, 0x7d, 0x5d, 0xad, 0xf9, 0xbe, 0x9e, 0x14, 0x2e, 0x22, 0x49, 0xf4, 0xe9, 0xda, 0x64, 0xde, - 0x1e, 0xd0, 0x3b, 0xae, 0x1a, 0x8b, 0x01, 0xc1, 0xaa, 0xc9, 0x4a, 0x2c, 0xf1, 0x3d, 0x30, 0x4e, - 0xbe, 0x16, 0x89, 0x86, 0x54, 0xbc, 0x1c, 0xff, 0xa7, 0x80, 0x66, 0xd7, 0x19, 0xba, 0xeb, 0xc4, - 0xaa, 0x78, 0xb4, 0x85, 0xad, 0x89, 0xcf, 0x1e, 0x01, 0xd9, 0x80, 0x63, 0xcb, 0x72, 0x4f, 0x4e, - 0x18, 0xba, 0x32, 0x7b, 0x05, 0x4d, 0x7e, 0x16, 0xaf, 0xcc, 0xbe, 0xec, 0x95, 0x79, 0x8c, 0xad, - 0x0c, 0xbe, 0x2f, 0x9d, 0x68, 0x03, 0x55, 0x2f, 0x40, 0xe0, 0x01, 0x32, 0x1f, 0xb6, 0xd4, 0xe0, - 0x61, 0x7c, 0x6c, 0x59, 0x97, 0x84, 0x4c, 0xb8, 0xd2, 0x3f, 0x91, 0x09, 0x8b, 0x03, 0x1e, 0x34, - 0x87, 0xbc, 0x63, 0x75, 0x99, 0xf2, 0xe2, 0xec, 0xe9, 0x70, 0xc0, 0x14, 0xc6, 0x32, 0xfd, 0xaa, - 0x71, 0xc3, 0xd3, 0xa5, 0xf8, 0x54, 0xd0, 0xe4, 0x97, 0xc4, 0xd2, 0x74, 0xd7, 0xf5, 0xd1, 0xbd, - 0x07, 0x1d, 0x16, 0xe4, 0x79, 0xb7, 0x9a, 0x72, 0xbd, 0xbb, 0x23, 0xbd, 0xef, 0x22, 0x0d, 0xe0, - 0xd0, 0xb5, 0x0f, 0x53, 0x00, 0x64, 0x64, 0x3c, 0x79, 0x0d, 0x20, 0xbe, 0x68, 0xdb, 0x55, 0x2b, - 0x1b, 0x7f, 0x66, 0x2d, 0x56, 0xa6, 0xaf, 0x0b, 0xf8, 0xc5, 0xc3, 0xfe, 0x07, 0xdd, 0x17, 0x2c, - 0x61, 0x5b, 0xb1, 0x44, 0x55, 0x65, 0xd5, 0x16, 0x3c, 0x27, 0xf1, 0xff, 0x12, 0xd0, 0x1d, 0xab, - 0x55, 0xc6, 0xe9, 0x12, 0x6b, 0xd5, 0x64, 0x80, 0xf8, 0x3c, 0xf9, 0x1d, 0xfc, 0xe5, 0xb3, 0x81, - 0xd8, 0x72, 0x3d, 0x30, 0x2e, 0x58, 0xba, 0x54, 0x7f, 0xa8, 0xc9, 0x6b, 0xc4, 0x85, 0x54, 0x15, - 0x73, 0xb6, 0x47, 0x3f, 0x7a, 0x82, 0x72, 0x83, 0x9e, 0x76, 0xbd, 0xe3, 0x35, 0x3e, 0xde, 0x4b, - 0x99, 0x09, 0x95, 0x1a, 0xf8, 0xc0, 0x0d, 0x8a, 0x4c, 0xff, 0x7e, 0x9f, 0x2f, 0xd7, 0xf4, 0x2b, - 0xab, 0x5a, 0xd4, 0x64, 0x00, 0xd3, 0xc5, 0x11, 0x0f, 0x64, 0x99, 0x23, 0xdb, 0x57, 0x1f, 0x61, - 0x08, 0xb2, 0x28, 0x7b, 0x06, 0x76, 0x18, 0x36, 0x59, 0xff, 0x78, 0x40, 0xe9, 0x5c, 0xcf, 0x0b, - 0x9a, 0xfc, 0x5b, 0xd1, 0x07, 0xd3, 0x60, 0x7c, 0x73, 0x60, 0x1f, 0x7d, 0x53, 0xce, 0xa5, 0x5c, - 0x2e, 0x7b, 0x86, 0xea, 0x51, 0x40, 0xa2, 0x71, 0x02, 0x31, 0x94, 0x5a, 0xe9, 0x53, 0x87, 0xe0, - 0x72, 0x6a, 0xb8, 0x6e, 0xe9, 0x9d, 0xc7, 0xf5, 0x9b, 0x37, 0x32, 0x47, 0xce, 0x8d, 0xf4, 0x9f, - 0xd3, 0xdb, 0x86, 0x81, 0x82, 0xc4, 0x09, 0x51, 0xd0, 0xfb, 0x1e, 0x34, 0x13, 0x4f, 0x64, 0x6d, - 0x80, 0xac, 0x98, 0xb9, 0x32, 0x0f, 0x38, 0x4d, 0x37, 0x1b, 0x8a, 0xad, 0x4d, 0xc5, 0xf8, 0x80, - 0xe9, 0xea, 0x7c, 0x22, 0x68, 0xf2, 0xef, 0xc4, 0x72, 0xe7, 0xd5, 0x69, 0x21, 0xad, 0x2c, 0x6b, - 0xf4, 0xac, 0xe3, 0x1a, 0xd9, 0x01, 0x27, 0xb8, 0x52, 0x55, 0x62, 0xe5, 0x38, 0x57, 0x0a, 0x3e, - 0x25, 0x7e, 0x28, 0xa0, 0x29, 0x16, 0x5e, 0x60, 0x3f, 0x73, 0x2d, 0xd5, 0x8e, 0x67, 0x6e, 0x16, - 0x44, 0x22, 0xe6, 0xdb, 0xa8, 0xc9, 0x0b, 0xf1, 0x25, 0xe0, 0xf4, 0xe8, 0xf1, 0xb3, 0xec, 0xc8, - 0xbd, 0x03, 0x7e, 0x66, 0xba, 0xae, 0xeb, 0x97, 0x7a, 0x68, 0x21, 0xc8, 0x84, 0xfe, 0x71, 0x9e, - 0x8d, 0xe2, 0x55, 0x01, 0x21, 0x93, 0x1e, 0xed, 0x62, 0xad, 0x59, 0xe7, 0x28, 0xd6, 0xf2, 0xd5, - 0x89, 0x98, 0x6f, 0xab, 0x26, 0x3f, 0x28, 0x4e, 0xb1, 0x6c, 0x19, 0x23, 0x53, 0xe0, 0xf9, 0xb5, - 0xec, 0xcb, 0x46, 0x58, 0x1a, 0x8e, 0x4c, 0xcb, 0xc5, 0xf1, 0x8e, 0x7a, 0x2f, 0xa5, 0xd3, 0x06, - 0x7a, 0xcd, 0xa6, 0xa3, 0xbf, 0xd7, 0x09, 0xc1, 0xac, 0x30, 0x8e, 0xb7, 0x12, 0x27, 0xb0, 0x44, - 0xcc, 0x77, 0x46, 0xd0, 0xe4, 0xad, 0xe2, 0xbd, 0x74, 0xfc, 0xa7, 0x0e, 0x61, 0x36, 0x43, 0x3d, - 0x01, 0xf7, 0x65, 0x7a, 0xda, 0x29, 0x28, 0x45, 0xbf, 0x15, 0x14, 0xfd, 0x38, 0x00, 0x7a, 0xe4, - 0x93, 0x7a, 0x98, 0x66, 0x76, 0x1c, 0x06, 0xa6, 0x6b, 0x07, 0x2e, 0x2d, 0x89, 0x4b, 0x1c, 0xe6, - 0x4f, 0xf5, 0x04, 0x89, 0xaa, 0x57, 0x0d, 0x55, 0x92, 0x29, 0xe2, 0x8a, 0xef, 0x7a, 0xd0, 0x64, - 0x08, 0x75, 0x05, 0x4b, 0x30, 0xdf, 0x69, 0x6e, 0xdc, 0xdc, 0x17, 0xe4, 0xac, 0x4f, 0xc4, 0x7c, - 0x9f, 0x0b, 0x9a, 0x7c, 0x51, 0x10, 0xef, 0xb0, 0x6c, 0x22, 0x9d, 0xe3, 0x9b, 0x02, 0x28, 0xc6, - 0xe8, 0x8a, 0x10, 0xe2, 0x01, 0x8f, 0x69, 0x0b, 0x1c, 0x4f, 0x61, 0xa3, 0x67, 0xae, 0x03, 0x1c, - 0x24, 0x96, 0xca, 0xa2, 0xb3, 0x74, 0xdf, 0x59, 0xa8, 0xfd, 0xa2, 0x6d, 0x37, 0x6d, 0x02, 0x71, - 0x66, 0x48, 0xe1, 0xe8, 0x6b, 0x37, 0xf8, 0x26, 0x7c, 0xea, 0x49, 0x00, 0xe3, 0x2e, 0xb3, 0x73, - 0xc5, 0x1c, 0x97, 0x59, 0xf1, 0xdf, 0x08, 0x68, 0x06, 0x99, 0x28, 0x49, 0xe5, 0xc1, 0xd6, 0x6a, - 0xa1, 0xe3, 0x5a, 0xf0, 0x20, 0x8e, 0xf7, 0x1d, 0x07, 0x28, 0xb8, 0xa4, 0x3f, 0x2d, 0xde, 0xc5, - 0x6c, 0x08, 0x17, 0xf5, 0x8e, 0x2b, 0xd6, 0xb5, 0xab, 0xe4, 0xab, 0xd8, 0x6d, 0xee, 0x75, 0xfe, - 0x27, 0x58, 0x77, 0xc0, 0xae, 0x43, 0xe6, 0x74, 0x8f, 0xe8, 0x24, 0xe5, 0x27, 0xb6, 0x05, 0xe2, - 0x6a, 0xc8, 0x40, 0x80, 0xff, 0x25, 0x20, 0x51, 0x0e, 0x85, 0x1a, 0x5b, 0xb7, 0x44, 0xd4, 0xa4, - 0x29, 0xda, 0xde, 0xeb, 0x20, 0xb9, 0x66, 0xc1, 0x38, 0x92, 0x82, 0x13, 0x58, 0x22, 0xe6, 0x7b, - 0x4b, 0xd0, 0xe4, 0xe7, 0xc5, 0x52, 0x3a, 0xd0, 0x4f, 0x87, 0xf4, 0xd7, 0x4f, 0xeb, 0x7d, 0x87, - 0xf0, 0x5d, 0x8e, 0x68, 0xe1, 0xca, 0x9e, 0x70, 0xab, 0xa9, 0xf0, 0x8e, 0x74, 0x7c, 0x36, 0x72, - 0xa9, 0x3f, 0x35, 0x78, 0x78, 0x53, 0x43, 0x6d, 0x65, 0xed, 0xba, 0xfa, 0xf4, 0x85, 0x33, 0xfa, - 0x30, 0x91, 0x75, 0x38, 0x60, 0x32, 0xdf, 0xe5, 0xbe, 0xaa, 0xf1, 0x4a, 0x29, 0x09, 0x32, 0xc6, - 0x04, 0x3e, 0xb3, 0xff, 0xcc, 0x83, 0xe6, 0x36, 0xbe, 0x14, 0x4e, 0x06, 0xb7, 0xd1, 0x01, 0x6f, - 0x8c, 0x84, 0xd4, 0x78, 0x73, 0x60, 0xe7, 0x3a, 0x08, 0xc1, 0x2d, 0xda, 0xc4, 0xb5, 0x5c, 0xd0, - 0x78, 0x51, 0x96, 0x4c, 0xac, 0x41, 0x22, 0xe6, 0xfb, 0x13, 0x72, 0x0b, 0x98, 0xa3, 0x77, 0xee, - 0x4d, 0xef, 0x7f, 0xc7, 0x10, 0x45, 0x20, 0xd6, 0x3b, 0xcc, 0xb7, 0xec, 0x79, 0xa8, 0x04, 0x9d, - 0xb2, 0x71, 0xdf, 0xcb, 0x82, 0xa2, 0x06, 0x8a, 0x56, 0xfa, 0x09, 0x2f, 0x5f, 0x57, 0x6e, 0x2c, - 0x24, 0x40, 0xed, 0x88, 0x05, 0x2b, 0x83, 0x91, 0xb0, 0x21, 0xe3, 0x3d, 0xee, 0x7b, 0x74, 0xdc, - 0x32, 0x1e, 0x0c, 0x3d, 0x51, 0xc5, 0x3e, 0x84, 0xd7, 0xf1, 0xaf, 0x04, 0x34, 0x13, 0x34, 0x33, - 0x9b, 0xc2, 0xf1, 0x64, 0x6b, 0xa0, 0x99, 0xa1, 0xd2, 0xfd, 0xce, 0x1a, 0x2a, 0x2b, 0x14, 0x5e, - 0xb7, 0xf2, 0xf1, 0x01, 0x26, 0x62, 0x3e, 0x55, 0x93, 0x7f, 0x2e, 0x52, 0x5f, 0x83, 0x91, 0xe3, - 0x3d, 0xe9, 0x7d, 0xa7, 0x60, 0x39, 0xca, 0xee, 0xb3, 0x97, 0x55, 0xa4, 0x3e, 0x3b, 0x91, 0xee, - 0x7a, 0x2b, 0x35, 0x78, 0x60, 0x5b, 0x34, 0x91, 0xe4, 0x48, 0xde, 0xeb, 0x9b, 0xe3, 0x30, 0xe1, - 0x1d, 0x9c, 0x02, 0xeb, 0xcf, 0x04, 0x34, 0x13, 0x4e, 0xd2, 0xb1, 0xa6, 0xe4, 0x04, 0xe5, 0x38, - 0x25, 0x67, 0xc0, 0x44, 0xcc, 0xf7, 0x9c, 0x26, 0x97, 0x8b, 0xd4, 0xd2, 0x6d, 0x99, 0x92, 0x43, - 0x19, 0x19, 0xfe, 0x22, 0xff, 0xfd, 0x39, 0x86, 0x6f, 0x39, 0xee, 0xfe, 0xbd, 0x80, 0xee, 0x82, - 0x5b, 0xb8, 0xf5, 0xc3, 0xcf, 0xb6, 0x46, 0x93, 0x01, 0xb1, 0xc2, 0xf9, 0xc2, 0xee, 0x00, 0x8a, - 0x67, 0x54, 0x39, 0x01, 0xe8, 0x44, 0xcc, 0x17, 0xc4, 0xd3, 0xa2, 0xc9, 0x2f, 0x46, 0x3b, 0xf6, - 0x8f, 0xbe, 0x73, 0xa2, 0xac, 0x94, 0xfa, 0x9d, 0x70, 0x13, 0x82, 0x1a, 0x38, 0xc4, 0xca, 0x2a, - 0xc7, 0x39, 0xad, 0xaa, 0xdf, 0xe2, 0xaf, 0xe0, 0x7d, 0xba, 0x20, 0xa0, 0x49, 0xab, 0x55, 0x70, - 0x28, 0x72, 0x12, 0x31, 0x70, 0x05, 0x13, 0x22, 0x17, 0xb8, 0xd6, 0x53, 0xb9, 0xf1, 0x0f, 0x34, - 0x79, 0x89, 0x88, 0x80, 0xdb, 0xe2, 0x8a, 0x32, 0x1f, 0x2f, 0x80, 0x90, 0x04, 0x61, 0xf5, 0x0d, - 0x99, 0x9e, 0x76, 0x90, 0x09, 0x39, 0xf1, 0xc3, 0x99, 0xdd, 0x62, 0xf9, 0xb7, 0xea, 0xd5, 0x30, - 0x34, 0xfb, 0x9d, 0xf8, 0xf7, 0x02, 0x9a, 0x4c, 0xbf, 0x08, 0x39, 0x43, 0x5d, 0x86, 0xc3, 0x25, - 0x34, 0xb4, 0x5f, 0x97, 0x2d, 0x30, 0x74, 0xd8, 0x98, 0xc3, 0x36, 0x89, 0xb3, 0xcd, 0x71, 0xf3, - 0x0f, 0x30, 0xcb, 0xd6, 0xe6, 0x9a, 0x03, 0x0f, 0x59, 0x91, 0xe5, 0x9a, 0x9a, 0x3e, 0x70, 0x4e, - 0xef, 0xda, 0x9f, 0xf9, 0xb0, 0x1f, 0x1c, 0x9d, 0xa0, 0x9b, 0x1c, 0xd2, 0x96, 0x75, 0xba, 0x55, - 0x61, 0x3c, 0xc7, 0x0b, 0x02, 0x9a, 0xaa, 0xa8, 0xc1, 0x68, 0x3c, 0x64, 0x4c, 0xdb, 0x41, 0xff, - 0xcb, 0xd7, 0xb3, 0x99, 0x97, 0xd9, 0x73, 0xfe, 0xb1, 0x24, 0xe8, 0xbe, 0x46, 0x4d, 0x5e, 0x2c, - 0x96, 0xea, 0x37, 0x8e, 0xe8, 0x1d, 0xe7, 0xec, 0xf3, 0x28, 0x13, 0xf9, 0x1a, 0xb8, 0xd1, 0xc1, - 0x41, 0xef, 0xbb, 0xd3, 0x65, 0xd8, 0x18, 0x93, 0xfe, 0x1f, 0x01, 0xa1, 0x8d, 0x86, 0x87, 0x9c, - 0xe8, 0xa2, 0xcb, 0xe2, 0xf1, 0xc9, 0x97, 0x0b, 0x84, 0xee, 0xcd, 0x69, 0xa2, 0xef, 0x9a, 0x0e, - 0x78, 0x8f, 0x3f, 0x45, 0xc7, 0xd8, 0x94, 0x5d, 0xf2, 0x6d, 0xea, 0xbb, 0xe6, 0x96, 0xe5, 0x9a, - 0xf8, 0xdf, 0x7a, 0xd0, 0x1d, 0x16, 0x45, 0x1d, 0x84, 0x3d, 0xb5, 0x5f, 0xd4, 0x1d, 0x80, 0x5c, - 0x2f, 0xea, 0x8e, 0xb0, 0x74, 0x4d, 0x46, 0x41, 0x4e, 0x5c, 0x4c, 0x59, 0x03, 0x99, 0x02, 0xdc, - 0x80, 0x74, 0xad, 0x1b, 0x8f, 0x0a, 0xcf, 0xe4, 0xc6, 0xc5, 0xcc, 0xf9, 0x21, 0x08, 0x1a, 0x48, - 0x97, 0xec, 0x95, 0x89, 0xc1, 0x57, 0x78, 0x53, 0x03, 0x83, 0xa9, 0xc1, 0x3d, 0x60, 0xd1, 0xd0, - 0xfb, 0xde, 0x1a, 0xdd, 0x7b, 0xd0, 0x74, 0xd6, 0x1b, 0xee, 0xd1, 0x0f, 0x75, 0xa7, 0xfb, 0xce, - 0x41, 0x9f, 0x81, 0xd6, 0x64, 0x34, 0x11, 0x0c, 0x34, 0x87, 0x23, 0x4d, 0xeb, 0x63, 0xc9, 0x70, - 0x34, 0x62, 0xc4, 0x35, 0xe4, 0x88, 0x7c, 0x59, 0xd9, 0xe2, 0xf1, 0x9e, 0x92, 0x10, 0xbd, 0x10, - 0x2f, 0xee, 0x7f, 0x11, 0x90, 0x48, 0x14, 0xe7, 0x80, 0xdf, 0xec, 0x14, 0xb1, 0x9b, 0x6e, 0x18, - 0x4c, 0xc2, 0x15, 0xbb, 0x78, 0x10, 0xba, 0x92, 0x07, 0x05, 0x4d, 0x7e, 0x51, 0xbc, 0x17, 0x0c, - 0xd4, 0x26, 0x2e, 0x51, 0x07, 0xe1, 0xbe, 0xb7, 0xf4, 0xde, 0x0b, 0x5b, 0x82, 0x34, 0xe1, 0x7c, - 0xd9, 0xc3, 0xe9, 0x77, 0xdb, 0x30, 0x11, 0x03, 0x59, 0x38, 0x81, 0x54, 0x8c, 0xbe, 0xf5, 0x51, - 0xba, 0xef, 0x9d, 0x91, 0xfe, 0x7e, 0xfd, 0xed, 0x93, 0xe9, 0x37, 0xaf, 0x71, 0x7a, 0x33, 0x67, - 0xb5, 0x31, 0x21, 0x79, 0xd3, 0xa8, 0x2e, 0xf8, 0xc5, 0x01, 0x01, 0xa1, 0xda, 0x68, 0x3c, 0x14, - 0x8d, 0x38, 0x53, 0x91, 0x59, 0xe7, 0x3e, 0x4f, 0x0e, 0x84, 0xce, 0x33, 0xa8, 0xc9, 0x0f, 0x8b, - 0xd4, 0xad, 0x15, 0x8b, 0x41, 0x07, 0xfb, 0x47, 0x2e, 0xbf, 0xa6, 0x0f, 0xbe, 0x97, 0x6e, 0xdb, - 0x55, 0x36, 0x9f, 0x72, 0x80, 0x4b, 0x9f, 0x51, 0xef, 0x4a, 0x56, 0xc9, 0x69, 0xff, 0xef, 0x29, - 0x9b, 0xef, 0x36, 0xfa, 0x20, 0xf9, 0x1a, 0x1e, 0xfa, 0xa0, 0x80, 0x4a, 0x36, 0x46, 0xb8, 0xc1, - 0xdb, 0x98, 0x2f, 0x5f, 0xcb, 0x86, 0xbf, 0x30, 0x37, 0x10, 0x9d, 0xc0, 0x66, 0x4d, 0x5e, 0x2a, - 0x8a, 0x54, 0x97, 0xc0, 0x8f, 0x7e, 0x0e, 0x3f, 0x7a, 0xa7, 0xa1, 0xdf, 0x5b, 0xe6, 0x75, 0x1b, - 0x7a, 0x6b, 0xc4, 0x32, 0xf8, 0xe2, 0xba, 0x78, 0x20, 0x0c, 0x23, 0xb7, 0xab, 0x0d, 0x58, 0x15, - 0x1b, 0xf6, 0xdd, 0x39, 0x20, 0xe8, 0x98, 0xb7, 0x69, 0xf2, 0x0a, 0xd1, 0x0f, 0xe3, 0x8b, 0x45, - 0x43, 0x23, 0x37, 0x77, 0x65, 0xce, 0x0f, 0x55, 0xe8, 0x97, 0xf7, 0xb0, 0x7d, 0x78, 0x3d, 0xd3, - 0xd3, 0xee, 0x6d, 0x88, 0x86, 0xbc, 0xa3, 0xef, 0x5f, 0x19, 0x6d, 0x3b, 0x54, 0x36, 0x2d, 0x0b, - 0x96, 0x8c, 0xdf, 0xe7, 0x9b, 0xe7, 0x36, 0xfe, 0x10, 0xfe, 0x24, 0x1e, 0xfc, 0x90, 0x80, 0xa6, - 0x9b, 0xbc, 0x73, 0x4d, 0x60, 0x8b, 0xda, 0x9c, 0xb0, 0x0b, 0x5a, 0xd9, 0x10, 0x6c, 0x2a, 0xe5, - 0x63, 0x03, 0xd2, 0x19, 0x6d, 0x20, 0x82, 0x16, 0x95, 0x41, 0x80, 0x0c, 0x4e, 0xef, 0xcd, 0xf4, - 0x7d, 0x56, 0xe6, 0x50, 0x36, 0x16, 0xde, 0x34, 0x93, 0xae, 0xf1, 0xe8, 0xff, 0xb9, 0x80, 0x66, - 0x99, 0x9f, 0xe4, 0x3c, 0xea, 0xdc, 0xc4, 0xab, 0x2c, 0x30, 0x36, 0x8f, 0xca, 0x71, 0x42, 0xd3, - 0xc9, 0xfc, 0xca, 0x3e, 0x99, 0xab, 0x17, 0x46, 0xce, 0xbf, 0x5b, 0xe6, 0x50, 0x96, 0xc3, 0xda, - 0x07, 0x24, 0xcc, 0x45, 0xf5, 0xb5, 0xed, 0xc7, 0x86, 0x40, 0x38, 0x92, 0xcc, 0xb9, 0x1f, 0x00, - 0x31, 0x8e, 0xfd, 0x60, 0x80, 0xee, 0xfb, 0x71, 0xe5, 0x4c, 0x66, 0xf7, 0xf5, 0x32, 0x87, 0xb2, - 0xb1, 0xf6, 0x23, 0x49, 0xba, 0xc6, 0xa3, 0xff, 0x07, 0x88, 0xc9, 0x45, 0x59, 0x6d, 0x6d, 0x5c, - 0x0d, 0xa9, 0x91, 0x64, 0x38, 0xd0, 0x6c, 0x9f, 0x81, 0x13, 0x94, 0xa3, 0xe8, 0xee, 0x0c, 0x98, - 0x88, 0xf9, 0x0e, 0x0b, 0x9a, 0xbc, 0x49, 0x9c, 0x67, 0xd1, 0x78, 0x98, 0x20, 0x20, 0x95, 0x94, - 0x3d, 0x48, 0x55, 0x1f, 0x07, 0x0f, 0xa5, 0x3e, 0x7b, 0x3b, 0xd3, 0xd3, 0x0e, 0x51, 0xe8, 0x9f, - 0x51, 0x77, 0xe6, 0x6c, 0x96, 0x43, 0xaf, 0x43, 0x4b, 0x82, 0x46, 0x8b, 0xaa, 0x57, 0x13, 0xac, - 0xcf, 0xdf, 0x89, 0xff, 0x55, 0x40, 0x77, 0x5a, 0x8e, 0x5f, 0x6e, 0x09, 0x72, 0x9f, 0xe9, 0xd6, - 0x55, 0x78, 0x60, 0xdc, 0xb0, 0x89, 0x98, 0xef, 0x0f, 0x35, 0xf9, 0x71, 0x71, 0x9e, 0xc5, 0x8e, - 0x67, 0x5b, 0x87, 0x79, 0x20, 0x83, 0xba, 0x00, 0x91, 0xf9, 0x3e, 0x58, 0x36, 0xe1, 0xf9, 0xe2, - 0x2d, 0xff, 0x4f, 0x02, 0xba, 0xd3, 0xa2, 0xf7, 0xcc, 0x35, 0x65, 0x17, 0x40, 0xc7, 0x29, 0xbb, - 0xc2, 0x26, 0x62, 0xbe, 0x16, 0x4d, 0x96, 0xc4, 0x3b, 0x2d, 0x6a, 0x55, 0x13, 0xa2, 0xcc, 0xad, - 0x02, 0xb6, 0xd5, 0x3f, 0xf1, 0x6d, 0xfd, 0x2f, 0x02, 0x9a, 0xc5, 0x69, 0xdc, 0xb8, 0x19, 0x96, - 0xe7, 0x50, 0xcc, 0x59, 0xe7, 0xb7, 0x68, 0x9c, 0x90, 0x89, 0x98, 0xef, 0x7f, 0xd3, 0xe4, 0x06, - 0x57, 0xc4, 0xa6, 0x8a, 0xa9, 0x2a, 0xbb, 0x4e, 0x2f, 0x67, 0x03, 0x90, 0x24, 0xc4, 0x85, 0xe3, - 0x99, 0xbb, 0xf8, 0x97, 0x02, 0x9a, 0x55, 0x1f, 0x09, 0x27, 0x57, 0xa9, 0x21, 0x15, 0xf2, 0x1b, - 0x32, 0xe1, 0xc9, 0x36, 0x5f, 0x47, 0x30, 0xc7, 0xf9, 0xba, 0x40, 0x26, 0x62, 0xf8, 0x84, 0x5e, - 0x22, 0xce, 0xd6, 0x3b, 0x4f, 0xe8, 0xe7, 0xf7, 0xe9, 0xdd, 0x47, 0xc1, 0x03, 0x86, 0x29, 0xa2, - 0x5d, 0xca, 0x73, 0x48, 0x46, 0xe1, 0x48, 0x38, 0xb9, 0xd5, 0xd0, 0xb5, 0x11, 0x31, 0x5b, 0x40, - 0x77, 0xc8, 0xa1, 0x10, 0xfd, 0xba, 0x1a, 0x62, 0xb3, 0x71, 0xd2, 0xa3, 0x65, 0x03, 0xe1, 0xb9, - 0xdc, 0x3f, 0x2e, 0xb8, 0x44, 0xcc, 0x17, 0x27, 0xa4, 0xa8, 0x5f, 0xde, 0xc3, 0xb4, 0x88, 0xaf, - 0x9f, 0xc6, 0xb7, 0x21, 0xcb, 0x84, 0x72, 0x57, 0x83, 0x91, 0xdc, 0xe7, 0x74, 0xc9, 0x0b, 0x84, - 0x42, 0x5b, 0xd9, 0x47, 0xb9, 0xc9, 0x5d, 0x14, 0xd0, 0x64, 0x2e, 0x67, 0x96, 0xfd, 0x6e, 0xcb, - 0x55, 0xba, 0xde, 0x6d, 0x2d, 0x30, 0xe6, 0x11, 0xb1, 0x58, 0x9c, 0x66, 0xe4, 0xdb, 0x02, 0x47, - 0xe0, 0xb2, 0x39, 0x59, 0x05, 0x34, 0x5b, 0xa1, 0x29, 0xab, 0xcf, 0xf3, 0x95, 0xba, 0xb9, 0x7b, - 0xe0, 0xe1, 0x5e, 0x16, 0xd0, 0x64, 0x2e, 0x33, 0x91, 0xe8, 0x73, 0x63, 0x75, 0xb9, 0x86, 0x6b, - 0x81, 0xa1, 0xc3, 0xfd, 0x25, 0x3e, 0xd1, 0xa6, 0x19, 0x59, 0x8d, 0xe8, 0x70, 0x67, 0x65, 0x15, - 0xf0, 0xf6, 0xc5, 0x32, 0x9f, 0xab, 0x0b, 0x8e, 0xe1, 0x96, 0x82, 0x87, 0xfc, 0xa9, 0x80, 0x26, - 0x73, 0x99, 0x61, 0xdc, 0x8c, 0xed, 0xb9, 0x87, 0x6c, 0x81, 0x31, 0x45, 0x53, 0x49, 0x9c, 0xc1, - 0xb8, 0x55, 0xb4, 0x35, 0x44, 0x07, 0x3d, 0x8f, 0xb7, 0x10, 0x05, 0xcd, 0x0a, 0x6e, 0xf0, 0x0b, - 0xfd, 0xe3, 0x18, 0xbc, 0xf8, 0x81, 0x80, 0x8a, 0xc8, 0x01, 0x8a, 0x87, 0xbd, 0xc0, 0xf1, 0x68, - 0xe5, 0xc6, 0xec, 0x75, 0x07, 0xa0, 0x03, 0x7e, 0x1e, 0xa3, 0xc4, 0x64, 0xc6, 0x68, 0xa2, 0xad, - 0xa1, 0xb2, 0x05, 0xbc, 0x8a, 0x83, 0x7e, 0xd7, 0x3e, 0x58, 0x71, 0x3c, 0x83, 0x3d, 0xe5, 0x41, - 0xc5, 0x46, 0xfe, 0x0f, 0xbb, 0x1c, 0x6d, 0x54, 0xb9, 0xca, 0xd1, 0x1c, 0x04, 0x1d, 0xef, 0x5f, - 0x08, 0x9a, 0x7c, 0x41, 0x10, 0x67, 0x70, 0x23, 0xa6, 0xfc, 0x53, 0xcb, 0x61, 0x14, 0x31, 0xa0, - 0xbe, 0x0f, 0x93, 0x48, 0x99, 0xe8, 0x4a, 0x3e, 0xf8, 0x86, 0x37, 0x95, 0xa3, 0xd4, 0x4d, 0x0d, - 0xb5, 0x76, 0x95, 0x8e, 0xb5, 0x9e, 0xad, 0xd5, 0x7d, 0x63, 0x81, 0xd1, 0x05, 0xfb, 0x05, 0xde, - 0x60, 0xd1, 0x20, 0xf1, 0x4d, 0x0d, 0xb5, 0x54, 0x03, 0x50, 0xca, 0x97, 0xd9, 0x68, 0xde, 0x59, - 0xa9, 0x4b, 0x06, 0xbd, 0x23, 0x16, 0xc4, 0x34, 0xf4, 0x99, 0x80, 0xa6, 0x72, 0x54, 0xeb, 0x38, - 0x74, 0x6b, 0xbd, 0xeb, 0xd0, 0xb3, 0xc1, 0xe8, 0xd0, 0x5f, 0xd0, 0x64, 0x1f, 0xd3, 0x79, 0xa6, - 0x06, 0x0f, 0xef, 0x88, 0x05, 0x99, 0x2c, 0x0b, 0xbf, 0xb8, 0xe1, 0x3a, 0x6b, 0x3b, 0xd9, 0x70, - 0x39, 0x9f, 0xb4, 0x57, 0x77, 0xc4, 0x82, 0x94, 0x09, 0xfc, 0xa5, 0x80, 0xa6, 0x72, 0x34, 0xec, - 0x38, 0x01, 0x6b, 0xbd, 0xeb, 0x04, 0xb2, 0xc1, 0xe8, 0x04, 0x9a, 0x35, 0x79, 0xb9, 0x38, 0x8b, - 0xe3, 0x06, 0x5e, 0x63, 0xd4, 0x65, 0x73, 0x6c, 0x1c, 0xc1, 0x6b, 0x9d, 0x52, 0x95, 0x7f, 0x62, - 0x53, 0x12, 0xaf, 0x7a, 0x50, 0x89, 0x41, 0x30, 0x78, 0x36, 0xf7, 0xb8, 0x92, 0x13, 0x37, 0x97, - 0x85, 0xb9, 0x81, 0xe8, 0x4c, 0xfe, 0x46, 0xd0, 0xe4, 0xcb, 0x82, 0x38, 0x8b, 0x23, 0x3b, 0xef, - 0xa6, 0x86, 0x5a, 0x4a, 0x7a, 0x47, 0x73, 0x93, 0x9e, 0x09, 0xf9, 0x7d, 0x90, 0xdf, 0x3c, 0x31, - 0x17, 0x26, 0x8b, 0x5f, 0x08, 0x68, 0x3a, 0xc7, 0x66, 0x9a, 0xc8, 0x5d, 0xf3, 0xfe, 0x1c, 0x8c, - 0xa8, 0x89, 0xbf, 0x66, 0x96, 0x8f, 0x0d, 0x68, 0x3a, 0xd4, 0xd4, 0x8b, 0xa5, 0xfc, 0xfa, 0xc1, - 0xeb, 0x14, 0xc3, 0x2c, 0x49, 0x56, 0x90, 0x6e, 0xaa, 0x91, 0xd4, 0x40, 0xbf, 0x72, 0x92, 0x25, - 0x0c, 0x86, 0x47, 0x2d, 0x1c, 0x82, 0xf8, 0xc5, 0x72, 0xb7, 0x89, 0x41, 0xd7, 0x1c, 0x27, 0xfe, - 0x13, 0x70, 0x2f, 0xd8, 0xd4, 0x50, 0x5b, 0x1b, 0x0e, 0x39, 0x68, 0xcc, 0xcc, 0x3a, 0x57, 0x4d, - 0x12, 0x0f, 0x62, 0xe2, 0xf7, 0x13, 0xe2, 0x4c, 0x98, 0xd3, 0x8e, 0x58, 0xd0, 0x1b, 0x0c, 0x87, - 0x98, 0x99, 0x95, 0x86, 0x34, 0x24, 0xa8, 0xc9, 0xcf, 0x66, 0x47, 0x2c, 0x98, 0xe9, 0x69, 0xc7, - 0x80, 0x63, 0x9e, 0x26, 0x3b, 0x62, 0x41, 0x0c, 0x67, 0xe0, 0xf7, 0x3f, 0x13, 0xd0, 0xb4, 0xda, - 0xac, 0xb7, 0xe5, 0x2e, 0x5c, 0xd0, 0x00, 0x60, 0xb3, 0xb9, 0x7f, 0x4c, 0x38, 0x3a, 0xa5, 0xdf, - 0x68, 0xf2, 0x93, 0x4c, 0x44, 0xa2, 0xce, 0x5b, 0x43, 0xed, 0x65, 0x95, 0x59, 0x05, 0x60, 0x53, - 0xbd, 0x35, 0xdc, 0x4d, 0xf5, 0xfb, 0xc3, 0xd7, 0xd3, 0x6d, 0xe7, 0x53, 0xc3, 0x03, 0x99, 0xe1, - 0xf7, 0x99, 0x9a, 0xf8, 0x6e, 0xdf, 0x5c, 0x97, 0xdb, 0x35, 0x71, 0x67, 0xc7, 0x0c, 0xe8, 0x4f, - 0x05, 0x34, 0x6d, 0x63, 0xd6, 0x33, 0xf2, 0xfb, 0xdc, 0xef, 0xfb, 0xb9, 0x27, 0x64, 0x83, 0xa3, - 0x13, 0x7a, 0x91, 0x13, 0xa2, 0x8c, 0x5a, 0x26, 0x44, 0x19, 0x05, 0x3c, 0xdf, 0x29, 0xf3, 0xe7, - 0x1a, 0x78, 0xd5, 0xab, 0x5c, 0xc6, 0x28, 0xc2, 0x47, 0xff, 0xd4, 0x83, 0xa6, 0xd5, 0x65, 0x3d, - 0xc0, 0xbf, 0xcf, 0xdd, 0x33, 0x31, 0xf7, 0x34, 0x6c, 0x70, 0x74, 0x1a, 0x7f, 0x27, 0x68, 0xf2, - 0xfb, 0x02, 0xde, 0x19, 0xcc, 0x35, 0xcd, 0x89, 0x1c, 0x11, 0x78, 0x3e, 0x6a, 0x94, 0x63, 0xae, - 0x71, 0xe3, 0x0d, 0xe3, 0x67, 0xba, 0xb7, 0x2b, 0x73, 0xe4, 0xb8, 0xde, 0xf7, 0x56, 0xa6, 0xa7, - 0x1d, 0x17, 0xa6, 0x8f, 0x5d, 0x03, 0x0b, 0x80, 0xde, 0xb1, 0x6b, 0xe4, 0xd2, 0x40, 0xe6, 0xed, - 0x8f, 0xd3, 0x07, 0xce, 0x41, 0x47, 0x06, 0xbf, 0x19, 0x79, 0x6f, 0x17, 0x94, 0xa4, 0x7b, 0xbb, - 0xd6, 0x51, 0xbd, 0x38, 0xdb, 0x7f, 0x62, 0x5f, 0xf8, 0x94, 0xea, 0x19, 0x87, 0x07, 0xf5, 0xce, - 0x6b, 0x14, 0x94, 0xb1, 0x2c, 0xb2, 0x92, 0x15, 0xfe, 0x09, 0xac, 0xa4, 0xf8, 0xc7, 0x02, 0x2a, - 0xa1, 0x06, 0x29, 0x58, 0x43, 0x37, 0x73, 0x95, 0x65, 0x01, 0x17, 0xe6, 0x06, 0xa2, 0xab, 0xa7, - 0xe2, 0xfb, 0xd8, 0x34, 0xd3, 0xa6, 0x05, 0x6b, 0x37, 0x8f, 0x97, 0xf4, 0xd6, 0x99, 0x63, 0xe1, - 0x90, 0xa1, 0x42, 0x9c, 0xc8, 0x14, 0xfe, 0x8b, 0x00, 0xee, 0x69, 0x9c, 0xf3, 0x25, 0x4c, 0xe5, - 0x81, 0x1c, 0x57, 0x65, 0xdb, 0x94, 0x2a, 0xc6, 0x07, 0x4c, 0xa7, 0xf6, 0x8a, 0x26, 0xaf, 0x10, - 0xe7, 0xf3, 0x3e, 0x67, 0x74, 0x8f, 0x09, 0x18, 0xe5, 0x46, 0x34, 0x6d, 0x16, 0xef, 0xd2, 0x49, - 0x5e, 0xef, 0x1b, 0xf7, 0xe8, 0xe5, 0xa2, 0x34, 0x11, 0xc7, 0x4c, 0x32, 0xf9, 0x84, 0xf8, 0xa9, - 0x07, 0x4d, 0x61, 0x7e, 0x85, 0x30, 0xd1, 0x85, 0x6e, 0x6e, 0x87, 0x96, 0x19, 0xde, 0x3b, 0x06, - 0x14, 0x9d, 0xda, 0xbf, 0xb1, 0x1c, 0xba, 0xd9, 0x73, 0x72, 0x3f, 0x74, 0xb3, 0x20, 0xbf, 0x8f, - 0x43, 0x77, 0xbe, 0x98, 0x93, 0xfb, 0x89, 0xff, 0x4d, 0x40, 0xd3, 0xd7, 0x46, 0x77, 0xa8, 0xd4, - 0x11, 0x1c, 0x16, 0xcf, 0xc6, 0x0c, 0xb2, 0x21, 0x5c, 0x4f, 0x5d, 0x3b, 0x20, 0x5d, 0xc2, 0x6e, - 0x41, 0x93, 0xd7, 0x33, 0x63, 0x47, 0xe6, 0xfc, 0x90, 0x69, 0xc9, 0xbc, 0x72, 0xba, 0xec, 0x21, - 0xfd, 0xf2, 0x1e, 0xea, 0x01, 0xf4, 0xe9, 0x47, 0x98, 0x45, 0x18, 0x14, 0xce, 0x01, 0x62, 0x6e, - 0x4f, 0x02, 0x0a, 0x65, 0x06, 0xaf, 0x66, 0x2e, 0x9d, 0x61, 0xb4, 0xed, 0xec, 0x23, 0xe3, 0x42, - 0x18, 0x86, 0x75, 0xf0, 0xb0, 0x07, 0xcd, 0x54, 0xd4, 0x16, 0x36, 0xda, 0x55, 0xf1, 0x68, 0x8b, - 0x0b, 0x81, 0x38, 0x41, 0xb9, 0x12, 0x88, 0x33, 0x30, 0x5d, 0x82, 0x13, 0xc4, 0xac, 0x35, 0xcb, - 0x98, 0x4d, 0xe6, 0xfc, 0xd0, 0xe8, 0x71, 0xe6, 0xf1, 0xbc, 0xda, 0xea, 0x02, 0x9e, 0x1a, 0x3a, - 0x60, 0xc0, 0xa5, 0x06, 0xfa, 0x00, 0x94, 0x84, 0xe3, 0xd8, 0x93, 0x7e, 0xab, 0x7f, 0xa4, 0x9f, - 0xae, 0x49, 0x6a, 0x68, 0x7f, 0xa6, 0xfd, 0x9a, 0xde, 0x7b, 0x81, 0x39, 0x79, 0xf6, 0xc1, 0x9a, - 0xf8, 0xbf, 0xca, 0x9a, 0x7c, 0x99, 0x87, 0x66, 0xd4, 0x36, 0xab, 0x81, 0x08, 0xf5, 0xce, 0x85, - 0x05, 0xb1, 0xfb, 0xb0, 0x64, 0x83, 0xb0, 0xd5, 0x58, 0x34, 0x0e, 0x48, 0x66, 0xe1, 0xcb, 0xd3, - 0xe4, 0xbf, 0xf0, 0x88, 0x73, 0x78, 0x83, 0x1c, 0x9d, 0x29, 0xdb, 0xfa, 0xb2, 0x8b, 0x9e, 0x71, - 0x2e, 0xc9, 0xf5, 0x53, 0xa9, 0xa1, 0x03, 0xc6, 0x02, 0x18, 0xe5, 0xfa, 0xf5, 0x6b, 0xe9, 0x81, - 0x8e, 0xcc, 0xa1, 0x3d, 0x20, 0x23, 0xf0, 0x9f, 0xfa, 0xa2, 0x6d, 0xb7, 0x69, 0x95, 0x1e, 0x18, - 0xd4, 0x87, 0x77, 0xa7, 0xfb, 0xe8, 0x4f, 0xdc, 0xf0, 0xc6, 0x1b, 0x46, 0x2d, 0xc4, 0xc6, 0xa7, - 0xb9, 0x35, 0xe1, 0xac, 0x1a, 0xea, 0x18, 0x79, 0xed, 0x46, 0xe6, 0xcc, 0x25, 0x4c, 0x73, 0xa4, - 0x7f, 0x78, 0xcf, 0x02, 0x90, 0x20, 0x9e, 0xc0, 0x91, 0x36, 0xf2, 0xda, 0x8d, 0xd4, 0xcd, 0x13, - 0x23, 0xfd, 0x2c, 0xe2, 0x15, 0x01, 0xd6, 0x3f, 0xfd, 0x28, 0x33, 0x74, 0x50, 0xbf, 0xd4, 0x9d, - 0xee, 0x3c, 0x64, 0xf0, 0x03, 0x88, 0xa4, 0x02, 0x7d, 0x8e, 0xdc, 0x7c, 0x5b, 0x1f, 0x7c, 0xef, - 0xd6, 0x70, 0x37, 0x0d, 0xaf, 0xd2, 0xd6, 0x33, 0x72, 0x73, 0x2f, 0x7d, 0x7a, 0xda, 0xd3, 0xbe, - 0x21, 0x90, 0xd8, 0x0e, 0x54, 0x30, 0xd2, 0xff, 0x5e, 0x66, 0x68, 0x0f, 0x50, 0x3d, 0xa3, 0x85, - 0x47, 0xfd, 0xcb, 0x27, 0xb0, 0xef, 0xa4, 0x8c, 0x6d, 0xfe, 0xc5, 0x7c, 0x74, 0x87, 0x6d, 0xbf, - 0x36, 0x49, 0x76, 0x3d, 0xb3, 0x03, 0x90, 0xab, 0xb9, 0xdc, 0x11, 0x96, 0xa2, 0xc0, 0x50, 0x9e, - 0x26, 0xff, 0x0f, 0x8f, 0xf8, 0x74, 0x0e, 0x14, 0x30, 0xc2, 0xcf, 0xfc, 0xb6, 0x55, 0x8d, 0xef, - 0xa4, 0x99, 0xc8, 0x09, 0x4e, 0xc0, 0xda, 0xc0, 0x8a, 0xfe, 0x84, 0x31, 0x5f, 0x03, 0x63, 0x1e, - 0x72, 0xc0, 0x18, 0x69, 0x6c, 0x8c, 0x11, 0xff, 0x35, 0xbd, 0xac, 0x59, 0x58, 0xc5, 0xb8, 0xe4, - 0xa4, 0xf2, 0x1c, 0xef, 0x01, 0xac, 0x4c, 0x22, 0xa1, 0xc9, 0x8f, 0x8a, 0xd3, 0x61, 0xbc, 0xf8, - 0xa3, 0xf4, 0xb8, 0xa5, 0xee, 0xc7, 0xfa, 0x95, 0x93, 0xa9, 0xc1, 0x03, 0x06, 0x27, 0xc4, 0xfc, - 0x14, 0xc4, 0x0d, 0x4e, 0x98, 0x58, 0x2a, 0x4e, 0x94, 0x0f, 0x8a, 0xff, 0x51, 0xb0, 0x3c, 0x78, - 0x60, 0x64, 0xb0, 0x68, 0xac, 0x51, 0x9b, 0x54, 0xe0, 0x1f, 0x0f, 0xe8, 0xb7, 0x3a, 0x45, 0x69, - 0x8c, 0x29, 0xe6, 0xa1, 0xd9, 0x70, 0x49, 0x21, 0xe5, 0x75, 0x6a, 0x22, 0x1c, 0x57, 0x89, 0xa7, - 0x92, 0xe8, 0x62, 0xac, 0xcd, 0x86, 0x63, 0x53, 0x5d, 0x3c, 0x5e, 0x70, 0x3a, 0xdd, 0xb4, 0x47, - 0x93, 0xcf, 0x78, 0xc4, 0x3b, 0xe1, 0xce, 0xc3, 0x41, 0x50, 0x55, 0x4c, 0x87, 0x27, 0xfb, 0x36, - 0x34, 0xd0, 0x67, 0x83, 0xa2, 0x2e, 0x45, 0xa0, 0x7e, 0x1a, 0xee, 0xd1, 0xfb, 0x87, 0x47, 0xf6, - 0x7e, 0x6c, 0xb4, 0xa0, 0xd8, 0x6f, 0x04, 0x21, 0x18, 0x3e, 0xa2, 0x77, 0x9c, 0xa3, 0x01, 0xfc, - 0x09, 0x15, 0x18, 0x36, 0x0f, 0xfd, 0xfa, 0x35, 0x30, 0x12, 0xb0, 0xc8, 0x84, 0x26, 0x85, 0xc3, - 0x7d, 0x22, 0xd3, 0xd3, 0x1e, 0x32, 0x3f, 0xae, 0x1f, 0xfc, 0x60, 0xe4, 0xb5, 0x1b, 0xe9, 0xfe, - 0x37, 0xf5, 0x1b, 0x6f, 0xe8, 0x5d, 0xfb, 0x47, 0xce, 0x13, 0x57, 0x9a, 0xb3, 0xe7, 0x0d, 0xca, - 0x4d, 0xf7, 0xbf, 0x99, 0xba, 0xbe, 0x4f, 0xef, 0xda, 0xaf, 0x5f, 0x3e, 0x78, 0x6b, 0xf8, 0x6d, - 0xf3, 0xee, 0xb2, 0xf7, 0xa0, 0x7e, 0xf9, 0x20, 0xbf, 0x85, 0xd0, 0x76, 0xa4, 0xff, 0x53, 0xe0, - 0x6e, 0x36, 0x2e, 0x49, 0x36, 0xf6, 0x31, 0xdf, 0x43, 0x13, 0xc0, 0x5d, 0x3a, 0x50, 0xc6, 0xcd, - 0x07, 0x3d, 0x4e, 0x5b, 0x4c, 0x52, 0x67, 0x8c, 0x63, 0x8b, 0x31, 0xdc, 0x04, 0xb6, 0x18, 0xc0, - 0xe9, 0x16, 0xff, 0xb1, 0xa0, 0xc9, 0xff, 0x3f, 0x77, 0xd7, 0x17, 0x1c, 0xc5, 0x91, 0xde, 0x33, - 0x7b, 0x95, 0x2b, 0x67, 0x2a, 0x39, 0x93, 0xb6, 0x31, 0x62, 0xec, 0xc8, 0xeb, 0x8d, 0x63, 0xb0, - 0x0c, 0x2c, 0x60, 0x8c, 0x09, 0xb1, 0x73, 0x1e, 0x21, 0x5b, 0xe8, 0x00, 0x5b, 0x87, 0x88, 0x73, - 0x71, 0xe5, 0x65, 0xb5, 0x1a, 0x4b, 0x7b, 0x92, 0x76, 0x37, 0x3b, 0x23, 0x38, 0x59, 0xd1, 0x15, - 0x04, 0x09, 0x10, 0x02, 0x24, 0x16, 0x84, 0x0e, 0x82, 0xef, 0xd0, 0xd9, 0x32, 0x1c, 0x67, 0x04, - 0x67, 0x73, 0x78, 0x6f, 0x15, 0xac, 0xdc, 0x43, 0x1e, 0xae, 0x72, 0x75, 0x29, 0xa7, 0x2a, 0x57, - 0x95, 0xe4, 0x21, 0x95, 0x64, 0x67, 0x77, 0x95, 0x07, 0xe7, 0xe1, 0x2a, 0x55, 0xa9, 0xab, 0x38, - 0x95, 0xea, 0xfe, 0xba, 0x67, 0x7a, 0x76, 0xba, 0x67, 0x76, 0x65, 0xca, 0x4e, 0xdd, 0x0b, 0xac, - 0xa6, 0x7f, 0xb3, 0xdb, 0xdf, 0x6f, 0xfa, 0xdf, 0x74, 0x7f, 0xdf, 0xef, 0xfb, 0xf3, 0x9a, 0x27, - 0x8c, 0x01, 0xf4, 0x09, 0x27, 0xfc, 0x0f, 0x98, 0xf3, 0x52, 0x02, 0x50, 0xe5, 0xd2, 0x18, 0x77, - 0xa3, 0xe3, 0xef, 0x46, 0x88, 0x5e, 0xc4, 0xc3, 0xfe, 0xb7, 0x6e, 0x96, 0x96, 0x16, 0xca, 0x37, - 0xde, 0xa2, 0x61, 0x4d, 0x85, 0xd3, 0xa5, 0xc2, 0xe1, 0xea, 0xf1, 0xdb, 0xa0, 0x73, 0xb0, 0x72, - 0xf2, 0xcc, 0xd4, 0x1b, 0x84, 0xbc, 0xdb, 0x11, 0xe6, 0xf9, 0x40, 0x10, 0xfb, 0x52, 0xe9, 0x7d, - 0x89, 0x6f, 0x10, 0xee, 0x36, 0x04, 0x90, 0xe1, 0xc2, 0x42, 0x3c, 0x1f, 0x7c, 0x68, 0xca, 0xdc, - 0x5d, 0xe2, 0x53, 0xf7, 0x30, 0x10, 0x34, 0x98, 0x4a, 0xe3, 0xc2, 0xf8, 0x20, 0x80, 0x28, 0x7b, - 0x7f, 0x5a, 0x1f, 0x7b, 0x90, 0xee, 0x0d, 0xff, 0x7b, 0x6b, 0x6a, 0xf9, 0xe2, 0xf4, 0xf2, 0x77, - 0xdf, 0xe4, 0xb9, 0xb3, 0x4f, 0x4f, 0x55, 0x6f, 0x1d, 0xb5, 0xdf, 0xbe, 0xe4, 0x70, 0x00, 0xbd, - 0x05, 0x56, 0x10, 0xb1, 0x46, 0x56, 0x10, 0xdd, 0x99, 0xa1, 0xb4, 0x43, 0xdb, 0x09, 0x6f, 0x9b, - 0xd3, 0xcd, 0x03, 0xa9, 0x41, 0x63, 0x7f, 0x22, 0xdd, 0x1b, 0xdc, 0xe6, 0x38, 0x5c, 0x3d, 0x6d, - 0xce, 0x03, 0xa7, 0xcc, 0x9d, 0x51, 0x20, 0x46, 0xce, 0xe3, 0x5d, 0x71, 0xc5, 0x5e, 0xb8, 0x54, - 0x9e, 0xbd, 0x53, 0x9e, 0xf8, 0x1e, 0x84, 0x53, 0x56, 0x6e, 0x5c, 0xa8, 0xcc, 0xcc, 0x6b, 0x75, - 0xa1, 0x56, 0x40, 0x85, 0x95, 0x1a, 0x34, 0x72, 0xb8, 0x56, 0xc4, 0xd3, 0x24, 0x42, 0x72, 0x75, - 0xf9, 0xd3, 0x47, 0xb7, 0x0e, 0xb3, 0x1c, 0xe6, 0x1b, 0x04, 0x73, 0xa5, 0x34, 0x75, 0xb8, 0xbf, - 0x29, 0x05, 0x26, 0xa7, 0x8e, 0x2d, 0x2a, 0x79, 0xfd, 0x9b, 0x68, 0x23, 0x55, 0x78, 0xe1, 0x46, - 0x9e, 0x9a, 0x70, 0x48, 0x08, 0xd2, 0x85, 0xd4, 0xd5, 0xda, 0x3e, 0xd7, 0xdf, 0x0e, 0xb6, 0x6a, - 0xc8, 0x36, 0x61, 0xa9, 0x78, 0xd6, 0x7f, 0x1f, 0xcb, 0x89, 0x5e, 0x13, 0xbc, 0x63, 0x19, 0xe9, - 0xa4, 0x91, 0x86, 0x5d, 0xd7, 0x80, 0x97, 0x79, 0xf7, 0xbd, 0xbd, 0x86, 0x43, 0x93, 0x58, 0x81, - 0xa6, 0x23, 0xea, 0x23, 0x07, 0x72, 0x89, 0xb4, 0xe9, 0xb4, 0xf3, 0x03, 0x99, 0x97, 0x39, 0x3d, - 0x34, 0xf4, 0x74, 0x2d, 0x1b, 0x41, 0x68, 0x46, 0xe1, 0xb6, 0xc6, 0x6e, 0xa2, 0x4c, 0x8e, 0x29, - 0x79, 0xfd, 0x25, 0xd4, 0xec, 0x34, 0x97, 0xea, 0xdd, 0x77, 0x49, 0xcc, 0x02, 0xdd, 0x81, 0xa4, - 0x87, 0x8a, 0x8f, 0x07, 0x94, 0x57, 0x26, 0x4e, 0x70, 0x9e, 0x2f, 0xcf, 0xc4, 0x9e, 0x6e, 0xa4, - 0x51, 0x31, 0x8b, 0x67, 0x22, 0x6a, 0xd3, 0x8b, 0x69, 0x96, 0xb6, 0x01, 0x3a, 0xc2, 0x90, 0x95, - 0x21, 0xd2, 0x8f, 0xfe, 0x70, 0x0e, 0x19, 0x92, 0x51, 0xb1, 0xb9, 0xfe, 0x1b, 0x28, 0x0d, 0x33, - 0xd0, 0xc3, 0x40, 0x9c, 0xd5, 0x35, 0x16, 0x1a, 0x03, 0xf1, 0xce, 0x75, 0x7a, 0x90, 0xe6, 0x41, - 0xd1, 0x09, 0x8f, 0x40, 0x60, 0x5b, 0x16, 0x42, 0xf9, 0x09, 0x19, 0x2f, 0xc4, 0xfe, 0xa0, 0x01, - 0x32, 0xd8, 0x48, 0x67, 0xc4, 0x41, 0x15, 0x16, 0x77, 0xb4, 0x8b, 0x11, 0x75, 0x6d, 0x5b, 0xca, - 0x94, 0x10, 0xe3, 0xb3, 0x53, 0x0a, 0x65, 0xcc, 0x6c, 0x69, 0xe0, 0x0e, 0x4a, 0xcd, 0x05, 0x4a, - 0xcd, 0xf8, 0xfb, 0xcb, 0xb3, 0x37, 0x42, 0xa9, 0xe1, 0x50, 0x81, 0xd4, 0xe8, 0xb1, 0xe7, 0x56, - 0x44, 0x4d, 0x0f, 0xd4, 0x17, 0x73, 0xf3, 0x16, 0xe4, 0xc2, 0x14, 0x4a, 0x07, 0xf9, 0xdb, 0x4c, - 0x88, 0x5c, 0x94, 0xbf, 0xcd, 0x84, 0xa9, 0x12, 0xc5, 0xde, 0x22, 0xdb, 0x1d, 0x4d, 0xbc, 0xcc, - 0x14, 0xaf, 0x47, 0xa4, 0xd1, 0xd3, 0x08, 0x26, 0x2d, 0x06, 0xc3, 0x0d, 0x9c, 0xad, 0x50, 0xfd, - 0xab, 0x13, 0x17, 0xaa, 0x87, 0xc7, 0x9d, 0xa5, 0x1c, 0xdc, 0xec, 0x68, 0x1b, 0x71, 0xb3, 0xfd, - 0x4e, 0xb4, 0x43, 0x1c, 0x26, 0x48, 0xbe, 0x18, 0xe2, 0x04, 0xa9, 0x7c, 0xd9, 0x68, 0xdc, 0x51, - 0x36, 0x1b, 0x22, 0x44, 0x2c, 0x28, 0xaa, 0x0a, 0x47, 0x10, 0x44, 0xc6, 0x45, 0x22, 0x3e, 0x83, - 0xcb, 0xe4, 0x9e, 0xbd, 0x1c, 0xc4, 0xf5, 0x62, 0xdc, 0x86, 0x7e, 0x93, 0x9e, 0xeb, 0x82, 0xdc, - 0xc5, 0xe3, 0x54, 0x83, 0x65, 0x66, 0xa9, 0x3c, 0x7b, 0x67, 0x79, 0xf6, 0x76, 0x75, 0x69, 0xba, - 0x3a, 0x77, 0xaa, 0x72, 0x69, 0xcc, 0x9e, 0x3e, 0x63, 0x4f, 0xdd, 0xe2, 0x54, 0x59, 0xc4, 0x0e, - 0xfd, 0x56, 0xc2, 0xec, 0xc7, 0x8f, 0xf5, 0x68, 0x44, 0xfd, 0x0d, 0x22, 0x1a, 0x43, 0xea, 0x1b, - 0x15, 0xea, 0xc9, 0xf0, 0xd5, 0x7d, 0x2c, 0x00, 0x41, 0x6b, 0x7b, 0x8b, 0xac, 0xd9, 0x56, 0x51, - 0xb1, 0x19, 0xa2, 0x22, 0x83, 0xcb, 0xb5, 0x3e, 0xaa, 0x31, 0x43, 0xae, 0x60, 0xe2, 0x49, 0x1d, - 0x37, 0x44, 0xa9, 0xae, 0x37, 0x81, 0x83, 0x82, 0xf7, 0xa6, 0x28, 0xfc, 0x55, 0x5a, 0x1c, 0x5f, - 0xbe, 0x38, 0x5d, 0x2a, 0x9e, 0x81, 0x7b, 0xe0, 0x86, 0x52, 0xe1, 0x7c, 0x69, 0xf1, 0x0c, 0x2c, - 0x9b, 0xe1, 0xba, 0x69, 0x19, 0x59, 0x3c, 0x4a, 0x5c, 0x9d, 0x2c, 0x4f, 0x5c, 0xad, 0xce, 0x9d, - 0x0a, 0x90, 0xaf, 0xc0, 0x66, 0xc7, 0x47, 0xf0, 0xbf, 0x1e, 0x19, 0x9a, 0x42, 0x44, 0xbd, 0xaf, - 0xab, 0x3f, 0x95, 0x25, 0x24, 0xf8, 0xbc, 0x2f, 0x58, 0x89, 0xd4, 0xfb, 0xc2, 0x05, 0x50, 0x0a, - 0xaa, 0x4a, 0x5e, 0xbf, 0xad, 0xa0, 0x87, 0xaa, 0x1f, 0xbc, 0x5f, 0x5d, 0x3a, 0xce, 0xd7, 0x95, - 0x30, 0x71, 0x51, 0x09, 0xa4, 0x02, 0xee, 0x62, 0x54, 0xf0, 0x7f, 0xe1, 0xb9, 0x91, 0x7c, 0xe0, - 0xbf, 0x92, 0xa7, 0xa5, 0x54, 0x98, 0x2c, 0x15, 0x0e, 0x97, 0x6f, 0xcc, 0xf3, 0x7c, 0x6c, 0x88, - 0x52, 0xc8, 0x8f, 0x26, 0x97, 0x67, 0x6f, 0x97, 0x2f, 0x4f, 0x54, 0xfe, 0xb2, 0x50, 0x2a, 0xe6, - 0x4b, 0x1f, 0xbe, 0x59, 0xfd, 0xe1, 0x85, 0x52, 0xe1, 0xb4, 0xbd, 0x58, 0xac, 0x2e, 0x2c, 0xc0, - 0xef, 0xc0, 0x09, 0xa4, 0xf6, 0x7b, 0xa1, 0xdc, 0x99, 0xfd, 0x29, 0x72, 0xd8, 0x35, 0xe7, 0x44, - 0x84, 0x88, 0x5b, 0xbc, 0x5b, 0x16, 0x12, 0x11, 0xe2, 0x21, 0x70, 0x6f, 0x5e, 0x6f, 0x46, 0x2a, - 0x2c, 0xae, 0x08, 0x65, 0xab, 0xdc, 0xcf, 0xdc, 0x31, 0x86, 0xd8, 0xef, 0xdb, 0x53, 0x51, 0x5c, - 0xc7, 0x6f, 0x2b, 0xaa, 0x0a, 0x07, 0x50, 0xe2, 0x3a, 0xba, 0x65, 0xd2, 0x3a, 0xf2, 0x10, 0x5a, - 0xc7, 0x0e, 0x52, 0x47, 0x38, 0x20, 0x82, 0x3a, 0xf2, 0x47, 0x56, 0xf8, 0x0a, 0xf8, 0x76, 0xb7, - 0x84, 0xd6, 0x11, 0xbd, 0x09, 0x01, 0x5a, 0xa4, 0x76, 0xa2, 0x00, 0x2d, 0xbe, 0x6a, 0x8f, 0x4a, - 0xcb, 0x69, 0xbd, 0xbe, 0x9a, 0xd7, 0x9f, 0x60, 0x01, 0x5a, 0xa4, 0x5e, 0x4d, 0xfc, 0x79, 0xd0, - 0x01, 0xf2, 0x93, 0x1c, 0x87, 0x31, 0x14, 0x5e, 0xbf, 0x8b, 0x11, 0xf5, 0xbe, 0xbd, 0x29, 0xd3, - 0x12, 0xf7, 0x0f, 0x56, 0x22, 0xed, 0x1f, 0x2e, 0x80, 0x56, 0xf1, 0x27, 0x4a, 0x5e, 0x7f, 0x47, - 0x61, 0x5b, 0x15, 0xb8, 0x88, 0x6e, 0x55, 0x9c, 0x95, 0x1e, 0x7e, 0xb8, 0xa0, 0xcf, 0xe3, 0xdc, - 0x63, 0x2d, 0x92, 0x0d, 0xa2, 0x78, 0x7d, 0xb9, 0x06, 0xc6, 0x6c, 0x36, 0x9b, 0x3b, 0x01, 0x32, - 0x7e, 0xe5, 0x13, 0x09, 0x50, 0xaa, 0x7c, 0x22, 0xc5, 0x53, 0x22, 0xcf, 0x29, 0x79, 0x3d, 0x81, - 0x9a, 0x3d, 0x92, 0x5e, 0x3e, 0xb4, 0xf6, 0xe5, 0xe0, 0x72, 0xe7, 0xbc, 0x9b, 0xfe, 0xf8, 0x46, - 0x67, 0x01, 0x90, 0x83, 0x58, 0x20, 0x88, 0xa7, 0x8c, 0x89, 0x5c, 0x52, 0xb9, 0x17, 0xc6, 0x0c, - 0xf9, 0x32, 0xdc, 0xdf, 0x4a, 0x11, 0xe6, 0x5c, 0x5d, 0x07, 0x25, 0x12, 0xa0, 0x94, 0x12, 0x29, - 0x9e, 0x52, 0x52, 0x01, 0x4f, 0xb2, 0x1d, 0x1e, 0x0f, 0x6a, 0x1f, 0x7c, 0x43, 0xd4, 0xb3, 0x01, - 0x4b, 0x44, 0x69, 0xe1, 0x0e, 0x6d, 0xc0, 0x77, 0xa7, 0x59, 0xc3, 0x56, 0xa9, 0x70, 0xb8, 0x54, - 0xb8, 0x2e, 0xfb, 0x6a, 0x50, 0xaa, 0x04, 0x0c, 0x34, 0x21, 0x4c, 0xf0, 0xed, 0xef, 0xda, 0x7f, - 0x35, 0x03, 0xdd, 0xae, 0x54, 0x28, 0x3a, 0xe7, 0x8e, 0x01, 0x0e, 0xdd, 0x3e, 0x6a, 0x6b, 0x45, - 0x97, 0xfe, 0xe9, 0x0b, 0xea, 0x23, 0x94, 0x0d, 0x13, 0x7e, 0xba, 0xcd, 0x38, 0x98, 0x4a, 0x1a, - 0x6c, 0x21, 0xe5, 0x7f, 0xb3, 0x09, 0x42, 0x4b, 0xdf, 0x6c, 0x82, 0x6f, 0xa2, 0xac, 0xff, 0x2c, - 0x92, 0xd7, 0x7f, 0xa9, 0xa0, 0x91, 0x60, 0xee, 0x9c, 0x45, 0x97, 0xb3, 0x0c, 0x73, 0xb6, 0x12, - 0xec, 0xe2, 0x79, 0x68, 0x84, 0xd5, 0xe3, 0xd7, 0x2b, 0x57, 0xce, 0x97, 0x8a, 0x67, 0x4b, 0x1f, - 0x2e, 0x95, 0x8a, 0x67, 0x4a, 0xc5, 0xab, 0xf6, 0xb9, 0x23, 0xd5, 0x85, 0x5b, 0xf6, 0xd2, 0x31, - 0xfc, 0x82, 0xf9, 0xee, 0x1c, 0x48, 0x7c, 0xf9, 0xbf, 0x4a, 0xfb, 0x3c, 0x7f, 0x9c, 0x3c, 0xc7, - 0xaf, 0x68, 0x2f, 0x36, 0xfa, 0x1c, 0x45, 0xeb, 0x4a, 0xf2, 0x70, 0x8f, 0x47, 0x98, 0xb7, 0x7e, - 0x1d, 0x7d, 0x48, 0x02, 0x94, 0xf6, 0x21, 0x29, 0x9e, 0x3e, 0xcd, 0x93, 0xe4, 0x78, 0xb5, 0xd9, - 0xe3, 0x9d, 0xef, 0x1f, 0x56, 0x36, 0x52, 0xe7, 0x08, 0x38, 0x43, 0x61, 0x67, 0xf4, 0x32, 0x78, - 0x80, 0x4f, 0x7f, 0x20, 0x43, 0x98, 0x89, 0x07, 0xdb, 0x0d, 0xcb, 0x4f, 0x83, 0x48, 0xf8, 0x48, - 0xca, 0xc1, 0x86, 0xfa, 0xc0, 0xdc, 0xb8, 0xfa, 0x35, 0xe6, 0x7e, 0x20, 0x25, 0x60, 0x3b, 0x3f, - 0xb1, 0xba, 0x82, 0x03, 0x72, 0x0e, 0x78, 0xcf, 0x46, 0xd4, 0x38, 0x13, 0xff, 0x15, 0x81, 0xe8, - 0x06, 0x3f, 0x15, 0x42, 0xdf, 0x0a, 0x29, 0x17, 0x1b, 0xeb, 0x44, 0x53, 0x32, 0xfe, 0x57, 0xc9, - 0xeb, 0x3f, 0x53, 0x98, 0x6a, 0x94, 0x74, 0xd8, 0x83, 0x19, 0x7c, 0x3e, 0x4c, 0xc3, 0x44, 0x72, - 0xe3, 0xe7, 0x31, 0xab, 0x8b, 0xa3, 0x2c, 0x7c, 0xcf, 0x00, 0x9d, 0x14, 0xcd, 0x67, 0x5d, 0x56, - 0xc2, 0x1a, 0x32, 0xeb, 0x98, 0xcf, 0x00, 0x58, 0xff, 0x7c, 0xc6, 0xf0, 0x94, 0xfd, 0xd3, 0x4a, - 0x5e, 0xdf, 0x8d, 0x62, 0xb0, 0x0d, 0x12, 0x87, 0x57, 0x7e, 0xea, 0xdd, 0x40, 0xdc, 0xd3, 0xdc, - 0xfd, 0x80, 0x3a, 0x30, 0xc4, 0xec, 0xe7, 0xb4, 0x67, 0x1b, 0x1e, 0xa6, 0x4c, 0x52, 0x29, 0x3c, - 0x30, 0x9d, 0x8c, 0xa8, 0xab, 0xbb, 0x86, 0xd3, 0xc9, 0x3a, 0x1a, 0xa1, 0x10, 0x26, 0x6d, 0x84, - 0x12, 0x34, 0xd7, 0x23, 0x3b, 0xd1, 0x13, 0xbb, 0x74, 0x6a, 0xd7, 0xc2, 0xb7, 0x97, 0x2f, 0x8e, - 0xc3, 0x21, 0x2e, 0x04, 0x29, 0x57, 0x8f, 0xbf, 0x5f, 0x59, 0x98, 0x2b, 0x9f, 0xb9, 0x5a, 0xf9, - 0xfe, 0x4d, 0xad, 0x4e, 0x1c, 0xbc, 0xef, 0x6b, 0xcf, 0x34, 0x4e, 0xc7, 0x70, 0x9a, 0x38, 0x4b, - 0xff, 0x42, 0x51, 0x91, 0xeb, 0x72, 0xe8, 0x6c, 0x29, 0x3e, 0x29, 0x77, 0x4b, 0xac, 0xdd, 0x48, - 0x6c, 0xa9, 0x07, 0x4a, 0x39, 0x18, 0x57, 0xf2, 0x7a, 0x2b, 0x6a, 0xe2, 0xe5, 0x57, 0xf9, 0x8d, - 0x41, 0xa6, 0xee, 0xe1, 0x2f, 0x59, 0x0f, 0x42, 0x48, 0x20, 0x12, 0x0d, 0x72, 0x26, 0x3b, 0x63, - 0xcf, 0xd4, 0x2b, 0x86, 0x94, 0xce, 0xf4, 0x18, 0x6c, 0xef, 0x90, 0x34, 0x81, 0xff, 0x51, 0x54, - 0xc4, 0xc5, 0x2b, 0x4a, 0xad, 0xf6, 0x63, 0xa4, 0x56, 0x8b, 0xa0, 0xdc, 0x7e, 0xfc, 0x4e, 0xd4, - 0x4c, 0x03, 0xdb, 0x89, 0x21, 0xbc, 0x6d, 0xcc, 0xed, 0xdd, 0xb3, 0x13, 0xcf, 0x95, 0x10, 0x6b, - 0xf7, 0x68, 0x2f, 0xad, 0xc8, 0x5a, 0xd8, 0x19, 0x73, 0xd3, 0x2a, 0x8c, 0xb2, 0x87, 0xee, 0xfa, - 0x33, 0xca, 0xcd, 0xf7, 0x63, 0xa4, 0xe6, 0x8b, 0xa0, 0xdc, 0x43, 0xdf, 0x86, 0x1f, 0xfa, 0x15, - 0xc7, 0xbd, 0x87, 0x0f, 0xdb, 0xd0, 0x9a, 0xf8, 0xb7, 0x4e, 0xde, 0x7c, 0x62, 0xf8, 0xee, 0x96, - 0x7b, 0x64, 0x38, 0xfa, 0x65, 0xc4, 0x3d, 0xa3, 0x77, 0x6c, 0x5e, 0x27, 0x3b, 0x9d, 0xae, 0xb5, - 0x78, 0x7d, 0x38, 0x90, 0xda, 0x9b, 0x8f, 0xe4, 0xf5, 0x8f, 0x9c, 0xd9, 0x86, 0xd7, 0xfb, 0xe2, - 0x8d, 0xa3, 0xb3, 0xcd, 0x35, 0xe9, 0x6c, 0xc3, 0x33, 0xf5, 0x99, 0xcd, 0x30, 0x4e, 0x6d, 0x79, - 0x01, 0x41, 0xee, 0x69, 0x3c, 0x8b, 0x56, 0xd6, 0xe9, 0x70, 0x8f, 0xbb, 0x9f, 0xba, 0x3f, 0x38, - 0xdc, 0x3f, 0x21, 0xf1, 0x8f, 0xa8, 0xa5, 0x7e, 0x5d, 0x28, 0x8e, 0x32, 0x3f, 0x4b, 0x4e, 0x27, - 0x5a, 0xfc, 0xc4, 0xdb, 0xe3, 0x1f, 0x94, 0xee, 0x9e, 0xf3, 0x9f, 0x41, 0x68, 0x4d, 0xfc, 0x99, - 0x90, 0xef, 0x74, 0x62, 0x37, 0xba, 0x57, 0x6d, 0xef, 0x63, 0x47, 0x3b, 0xa9, 0x26, 0x0f, 0xee, - 0x53, 0xb2, 0xd1, 0x53, 0x90, 0xed, 0xc4, 0xbf, 0x04, 0x0c, 0xca, 0xa5, 0x14, 0x1b, 0xc9, 0xeb, - 0xdb, 0x51, 0x6d, 0xbe, 0x26, 0x3c, 0xca, 0x46, 0xfd, 0xd7, 0x04, 0xe3, 0xeb, 0x73, 0xb1, 0x67, - 0xeb, 0x37, 0x1e, 0x57, 0xc0, 0x33, 0xc2, 0x7e, 0xe2, 0x28, 0x2b, 0x85, 0x19, 0x1c, 0x90, 0x18, - 0xc8, 0x6f, 0x70, 0x50, 0xd2, 0x9f, 0xd8, 0x04, 0x3f, 0xd0, 0xf0, 0x29, 0x45, 0x44, 0x03, 0x0d, - 0x6f, 0x3d, 0xb1, 0x77, 0x6f, 0xcb, 0x57, 0x56, 0x68, 0x2f, 0x7e, 0xdc, 0xde, 0xe4, 0x35, 0xa3, - 0xe8, 0x2f, 0xbe, 0xc0, 0xfc, 0x66, 0x3c, 0xd6, 0x4b, 0xfc, 0x66, 0x44, 0xb6, 0xb7, 0xd4, 0x03, - 0xa5, 0x96, 0x9f, 0xff, 0x15, 0x1e, 0x72, 0x7e, 0x1f, 0xad, 0xb4, 0x1d, 0xa2, 0x7f, 0x70, 0x16, - 0x37, 0xe4, 0x0c, 0x56, 0x4f, 0x26, 0x33, 0x43, 0x69, 0x4b, 0xb6, 0xb8, 0xe1, 0x31, 0x21, 0x8b, - 0x1b, 0x2f, 0xd4, 0x55, 0xd2, 0xd8, 0x84, 0x56, 0x3b, 0xc1, 0x6b, 0xd5, 0xdb, 0xef, 0xd8, 0x53, - 0x1f, 0xd0, 0xa6, 0x27, 0xbe, 0x1c, 0x28, 0x3a, 0x5f, 0xa3, 0x59, 0x9e, 0x80, 0x5f, 0x23, 0x9d, - 0xeb, 0x9f, 0x9d, 0xe5, 0x4b, 0xb0, 0x5d, 0x7e, 0x4c, 0xc8, 0xf2, 0x45, 0x68, 0x57, 0xda, 0x1b, - 0xed, 0x0a, 0x06, 0x70, 0xd1, 0xae, 0x3e, 0x8b, 0x9e, 0xd7, 0x76, 0x34, 0x62, 0x51, 0x7c, 0x84, - 0x7e, 0xa2, 0xab, 0x93, 0xf3, 0x11, 0xf5, 0x81, 0x7d, 0xa9, 0xde, 0x5c, 0xad, 0x79, 0xbe, 0x3a, - 0x0b, 0x40, 0x52, 0xd7, 0x4b, 0x21, 0x96, 0x3b, 0x99, 0x4b, 0xa1, 0xfb, 0x41, 0xce, 0xc4, 0xb5, - 0xf0, 0x55, 0xb8, 0x60, 0x9f, 0xbc, 0x62, 0xdf, 0x3c, 0x56, 0x63, 0x27, 0x53, 0x66, 0x3f, 0x3d, - 0x53, 0x2a, 0x5c, 0x87, 0x02, 0x40, 0xff, 0xfb, 0xe1, 0x23, 0xf6, 0xdb, 0x97, 0xe0, 0x0a, 0xfe, - 0x3c, 0x7e, 0x6d, 0xf9, 0xe8, 0x35, 0x1e, 0x00, 0x83, 0xeb, 0x16, 0xad, 0xe1, 0x87, 0xfe, 0x1f, - 0xce, 0xa2, 0x2d, 0xf8, 0xa1, 0xfb, 0x31, 0x21, 0x8b, 0x36, 0x21, 0x27, 0xa3, 0x78, 0xc9, 0xda, - 0xc4, 0x47, 0x08, 0x7a, 0xda, 0x73, 0xb3, 0x3f, 0x48, 0xd0, 0xd7, 0x0c, 0x76, 0xb6, 0xac, 0xb8, - 0x19, 0xa0, 0x9f, 0x47, 0xb8, 0xe0, 0x37, 0x66, 0xaa, 0x3c, 0xf8, 0xad, 0xc6, 0xd0, 0xf5, 0xe1, - 0x40, 0x6a, 0xe6, 0xc7, 0x4a, 0x5e, 0xbf, 0xa3, 0x78, 0xc3, 0xdf, 0xc0, 0x10, 0x3a, 0x58, 0x5e, - 0x0c, 0x89, 0x20, 0xe4, 0xc1, 0x9f, 0xd9, 0x0e, 0x00, 0xfc, 0x28, 0x21, 0x79, 0x13, 0x6a, 0xa8, - 0x21, 0xa1, 0x5f, 0x44, 0xd4, 0x87, 0x6a, 0xd9, 0x38, 0x90, 0xe9, 0x34, 0x72, 0x83, 0xb2, 0x58, - 0x18, 0x17, 0x87, 0x51, 0x21, 0xb1, 0x30, 0xb5, 0x60, 0x4a, 0xf3, 0x27, 0x4a, 0x5e, 0xff, 0xb9, - 0x82, 0x76, 0xc8, 0x68, 0xf6, 0x26, 0x4c, 0x06, 0x85, 0x53, 0xba, 0x33, 0x49, 0xee, 0xf8, 0x7f, - 0xff, 0x18, 0xc4, 0xb1, 0x9c, 0x0e, 0xeb, 0xb6, 0xa2, 0xa2, 0x57, 0x8d, 0x5c, 0xea, 0xf5, 0xe1, - 0xe0, 0xbe, 0xeb, 0xc7, 0x48, 0xfb, 0xae, 0x08, 0x4a, 0xd9, 0xfe, 0x06, 0x59, 0x06, 0x81, 0x0e, - 0x98, 0x33, 0x6e, 0x39, 0x99, 0x41, 0x34, 0x69, 0x49, 0x80, 0xab, 0xa0, 0xbc, 0xd7, 0x7a, 0x74, - 0xc1, 0xca, 0xb0, 0xca, 0xef, 0x32, 0x72, 0x07, 0x53, 0x49, 0x63, 0x7f, 0x66, 0xc0, 0x30, 0x85, - 0xab, 0x7c, 0x1e, 0x10, 0xb4, 0xca, 0xf7, 0xe2, 0xa8, 0x79, 0x47, 0xc8, 0x2a, 0xff, 0x31, 0x78, - 0x12, 0x89, 0x43, 0x26, 0xb4, 0x00, 0x13, 0xa0, 0xd1, 0x5c, 0x66, 0x80, 0xb9, 0x0d, 0x87, 0x43, - 0x02, 0xd5, 0x77, 0x6a, 0x2c, 0xa6, 0x77, 0xe7, 0x88, 0x51, 0xff, 0xaa, 0xa8, 0xbf, 0xdd, 0x6e, - 0x58, 0xcc, 0xd3, 0xa3, 0x1d, 0xc2, 0xae, 0x44, 0x8a, 0x42, 0x5e, 0x88, 0x34, 0x36, 0x44, 0x80, - 0xa4, 0xe6, 0x1e, 0xc2, 0x23, 0xf1, 0xc3, 0x60, 0x0a, 0x73, 0xd6, 0x88, 0x82, 0xbf, 0x18, 0x0b, - 0x22, 0x0b, 0x28, 0x0c, 0x0c, 0x22, 0xab, 0xb1, 0x90, 0x7d, 0x01, 0x0d, 0x22, 0xfb, 0x29, 0x3c, - 0x4c, 0x4f, 0xfc, 0xf1, 0x13, 0x72, 0xdd, 0x06, 0x4f, 0xf8, 0xf1, 0xba, 0x50, 0x9c, 0xbb, 0x68, - 0xda, 0x8a, 0xd6, 0x80, 0x01, 0xa4, 0x22, 0xe0, 0xf1, 0x42, 0x2d, 0x93, 0x15, 0x04, 0x4a, 0xd4, - 0xfb, 0xac, 0x82, 0xaa, 0x57, 0x59, 0xa6, 0x02, 0xa7, 0x16, 0xaf, 0x91, 0x8c, 0x50, 0x2d, 0xc1, - 0x55, 0x25, 0xa0, 0xe0, 0x4c, 0x05, 0xb5, 0x58, 0xb7, 0x1b, 0xb6, 0xa1, 0xa8, 0xdf, 0x02, 0xd2, - 0xdd, 0xec, 0x53, 0x45, 0x6a, 0x63, 0x28, 0x02, 0xbc, 0x41, 0xd0, 0x93, 0xf5, 0x18, 0x0b, 0x49, - 0xae, 0x3e, 0x56, 0xb8, 0x41, 0x1e, 0xaa, 0xc6, 0x74, 0x68, 0x36, 0x86, 0xc4, 0x85, 0xd7, 0x28, - 0xf2, 0x6f, 0xaa, 0x17, 0x4e, 0x6d, 0x1e, 0x02, 0x81, 0xa8, 0x5a, 0x8b, 0x78, 0xa1, 0x73, 0x2d, - 0xb8, 0xb8, 0x91, 0x59, 0xcd, 0xd1, 0xb8, 0xfe, 0x48, 0x81, 0x78, 0x47, 0x90, 0x07, 0xc8, 0x26, - 0x4d, 0x14, 0xa0, 0x1e, 0x90, 0x4d, 0x9a, 0x81, 0xf1, 0x8e, 0x1c, 0xca, 0x0d, 0x4b, 0x78, 0x01, - 0x35, 0xc3, 0x56, 0x41, 0xa9, 0x78, 0x96, 0x77, 0xcd, 0x3a, 0x98, 0x4d, 0x52, 0xb3, 0x42, 0xca, - 0xc3, 0x22, 0xe3, 0x79, 0xbb, 0x0e, 0x62, 0x0b, 0x3e, 0x51, 0xd4, 0x26, 0x48, 0xc6, 0x94, 0xea, - 0xc9, 0xed, 0xca, 0xa4, 0x5f, 0x1f, 0x48, 0x25, 0xad, 0x97, 0x72, 0x99, 0xc1, 0x57, 0xb3, 0x49, - 0xbf, 0xbf, 0x9a, 0x0c, 0x29, 0xf5, 0x57, 0x93, 0xdf, 0x40, 0x8d, 0xfe, 0x66, 0x5e, 0xdf, 0x8e, - 0xd6, 0x52, 0x41, 0x8b, 0xc2, 0x24, 0x09, 0xa1, 0x3f, 0xf6, 0x5e, 0xe5, 0xfa, 0x11, 0x9a, 0x81, - 0x4a, 0x5e, 0x44, 0x4c, 0xfd, 0x32, 0x7a, 0xbe, 0x5e, 0x53, 0x21, 0x90, 0xbe, 0x67, 0x34, 0x8e, - 0xbf, 0x28, 0x49, 0xab, 0x83, 0xfe, 0x85, 0xd7, 0x3f, 0x00, 0xc9, 0xf1, 0x20, 0xfd, 0x03, 0x8a, - 0x08, 0x5f, 0x02, 0x3a, 0x40, 0xb7, 0x9b, 0xb6, 0xb2, 0x50, 0x56, 0xfc, 0xb4, 0x88, 0xdc, 0x38, - 0x7d, 0xa6, 0x4f, 0x06, 0x8a, 0x05, 0x00, 0x94, 0x5b, 0xf1, 0xd6, 0x39, 0x22, 0x51, 0x6d, 0x72, - 0x54, 0x51, 0xd4, 0x35, 0x6e, 0xb5, 0x8c, 0xe4, 0x50, 0x2e, 0x65, 0x0d, 0xd3, 0xa9, 0x44, 0xde, - 0xf1, 0xbc, 0x40, 0xe9, 0xa9, 0x8c, 0x14, 0x4f, 0xcd, 0xee, 0x27, 0x6f, 0xab, 0x34, 0xb0, 0x66, - 0x61, 0xc2, 0x1e, 0xbf, 0x56, 0x59, 0x1c, 0xa3, 0x66, 0x8b, 0x2f, 0x37, 0x32, 0x95, 0x98, 0xf4, - 0x47, 0xe9, 0x54, 0xf2, 0xd7, 0x0a, 0x28, 0x80, 0xec, 0x31, 0x86, 0xb3, 0x89, 0x54, 0xce, 0x14, - 0x2b, 0x80, 0xec, 0x31, 0x86, 0x3b, 0x71, 0x69, 0xa0, 0x02, 0x88, 0x0b, 0x72, 0x43, 0xc8, 0x5d, - 0x43, 0x6e, 0x1e, 0x5b, 0xce, 0xcf, 0x93, 0x3c, 0x70, 0x1e, 0x43, 0xbc, 0x97, 0x1b, 0x19, 0x62, - 0xfa, 0x59, 0x8d, 0xff, 0x93, 0x1f, 0x53, 0x3b, 0xb8, 0x44, 0x83, 0x26, 0x92, 0xaf, 0x85, 0x79, - 0x5c, 0xe0, 0xd9, 0xa5, 0x00, 0xed, 0x36, 0xcf, 0xe7, 0x98, 0x9f, 0x11, 0x51, 0x08, 0x20, 0xbe, - 0xa0, 0xda, 0x7a, 0x68, 0x99, 0x90, 0x75, 0x94, 0x17, 0x65, 0x73, 0x31, 0x9c, 0xb1, 0x4f, 0xa3, - 0x2d, 0xf5, 0x18, 0xcb, 0xf2, 0x27, 0x5a, 0xc4, 0xac, 0xf9, 0x88, 0xaa, 0xb5, 0x1b, 0x34, 0xff, - 0x4a, 0xd7, 0x50, 0x6f, 0xaf, 0x61, 0x5a, 0x46, 0xcf, 0xbe, 0x44, 0xb2, 0x2f, 0x85, 0x27, 0x99, - 0x2d, 0x82, 0xb9, 0x50, 0x82, 0x65, 0xa6, 0x6f, 0x6d, 0xe4, 0x16, 0x6a, 0xff, 0x77, 0x94, 0x7b, - 0x41, 0xc0, 0x6b, 0xe8, 0x6b, 0x0d, 0xac, 0x15, 0xe2, 0x23, 0xf0, 0xc1, 0x99, 0x61, 0x06, 0x8c, - 0x83, 0xc6, 0x80, 0x19, 0x1f, 0x21, 0xff, 0xd7, 0xf2, 0xf4, 0x77, 0x2c, 0x77, 0x04, 0xfe, 0x16, - 0x9a, 0x25, 0xc4, 0x44, 0xf2, 0x01, 0x88, 0x41, 0xa4, 0x6b, 0x41, 0x01, 0xd2, 0xd3, 0xd6, 0x9d, - 0x89, 0x06, 0xb6, 0xce, 0x58, 0x5b, 0x17, 0x5e, 0x6e, 0xa4, 0xad, 0xb3, 0x3d, 0x35, 0xf4, 0xdf, - 0xfc, 0xd0, 0xfb, 0x8a, 0xd9, 0x31, 0x98, 0xe8, 0x35, 0x02, 0x86, 0x5e, 0x8a, 0x08, 0x1f, 0x7a, - 0x1d, 0x20, 0x35, 0x67, 0x5a, 0xc9, 0xeb, 0xaf, 0xb1, 0xfc, 0x46, 0xe4, 0xb9, 0x11, 0xdf, 0x50, - 0x50, 0x22, 0x5f, 0x9e, 0xb9, 0x6c, 0x1f, 0x9d, 0xa2, 0xc6, 0x6d, 0x0b, 0x7c, 0xda, 0x92, 0xbb, - 0x1a, 0x19, 0x93, 0x33, 0x66, 0x8a, 0x58, 0xb9, 0x4c, 0xe3, 0x1d, 0x3d, 0x1d, 0xd2, 0x44, 0x4f, - 0x86, 0x76, 0x5a, 0x33, 0x70, 0xdf, 0xb6, 0x16, 0xea, 0x6a, 0xef, 0xb4, 0xf1, 0x6d, 0x9b, 0x5a, - 0xbb, 0x59, 0x66, 0xad, 0x3d, 0x3d, 0x56, 0x2a, 0x5c, 0x87, 0x18, 0x14, 0x3e, 0x65, 0x51, 0x60, - 0x22, 0x22, 0x49, 0x27, 0x37, 0xd1, 0xbf, 0x71, 0x2b, 0x62, 0xb6, 0x15, 0x30, 0x9c, 0x35, 0xe4, - 0x2b, 0x62, 0x0e, 0x14, 0xba, 0x22, 0xf6, 0x60, 0xa9, 0xb9, 0xb9, 0xbc, 0xbe, 0x83, 0x0d, 0xd5, - 0xce, 0xeb, 0x27, 0x64, 0x24, 0xd5, 0x1e, 0x05, 0x9b, 0xf5, 0x3d, 0x5d, 0x7b, 0x84, 0x80, 0x80, - 0x00, 0x56, 0xd9, 0xcb, 0x29, 0xee, 0x9e, 0xf8, 0x81, 0xae, 0x65, 0x75, 0x6a, 0x4d, 0xa4, 0x7b, - 0x0e, 0xa5, 0x7a, 0xac, 0xbe, 0xce, 0x44, 0xb2, 0x3f, 0xd1, 0x6b, 0x98, 0x68, 0xb3, 0xac, 0xfa, - 0x3e, 0xa8, 0x34, 0x24, 0x22, 0xe0, 0x0e, 0x6a, 0x76, 0x2f, 0xbc, 0x8f, 0x33, 0xab, 0xec, 0xf1, - 0x1f, 0x94, 0x8a, 0xdf, 0xb7, 0x0b, 0xef, 0xd8, 0x0b, 0x77, 0xed, 0x53, 0xe3, 0x9a, 0xb4, 0xa4, - 0x91, 0x25, 0x63, 0xf7, 0xa1, 0x2c, 0x39, 0x64, 0x7b, 0xd0, 0x5d, 0xa0, 0x0f, 0xa5, 0xad, 0xd4, - 0x20, 0xa8, 0xf1, 0xcb, 0xb7, 0x76, 0x38, 0x54, 0xf8, 0xd6, 0x8e, 0x07, 0x4c, 0x8d, 0x3b, 0xa1, - 0xe4, 0xf5, 0x97, 0xd1, 0x23, 0x6e, 0x1b, 0xc6, 0x4d, 0x93, 0xf8, 0xf2, 0x97, 0x67, 0xef, 0xd0, - 0xf6, 0xbc, 0x29, 0xa8, 0xf7, 0xfa, 0xf1, 0x8d, 0x3c, 0xea, 0x1c, 0x54, 0x89, 0xa4, 0x21, 0xf8, - 0x09, 0x1d, 0x88, 0x5f, 0xc9, 0x52, 0xe5, 0xcf, 0xbd, 0x99, 0x5e, 0xc9, 0x40, 0xec, 0x81, 0x04, - 0x0e, 0xc4, 0x35, 0x48, 0x57, 0x4e, 0xd1, 0x79, 0xa4, 0x30, 0xfc, 0x94, 0x67, 0xe7, 0xed, 0xa5, - 0x59, 0x6a, 0xb0, 0xb4, 0x24, 0xc0, 0x61, 0x39, 0xc3, 0x7e, 0x68, 0x00, 0xd7, 0xfa, 0x23, 0x3a, - 0x04, 0x1f, 0x48, 0x98, 0xfd, 0x5d, 0x96, 0x91, 0x25, 0xa6, 0xac, 0x93, 0xf9, 0x25, 0x33, 0x44, - 0xe0, 0x10, 0xec, 0x05, 0xf2, 0xb2, 0x52, 0xd4, 0x4d, 0x8c, 0x85, 0xe1, 0xcf, 0x2f, 0x5f, 0x7f, - 0xdb, 0x63, 0x4e, 0x48, 0x39, 0xc8, 0x4a, 0xa1, 0x47, 0x25, 0x0e, 0xc6, 0xa6, 0x65, 0x64, 0x89, - 0x4d, 0x3f, 0x56, 0xd4, 0xfb, 0x5d, 0x4f, 0xea, 0x64, 0x26, 0xd7, 0x23, 0xd8, 0x50, 0xa8, 0x01, - 0x48, 0x37, 0x14, 0x7c, 0x38, 0x57, 0x9b, 0xcf, 0xed, 0x6c, 0xa4, 0xc2, 0xd5, 0x85, 0x5b, 0xf6, - 0xdd, 0x19, 0xef, 0x93, 0xf1, 0x97, 0x80, 0xb8, 0x20, 0x6a, 0x96, 0x18, 0x91, 0xa3, 0xf5, 0x3d, - 0x1a, 0x51, 0x11, 0x09, 0x50, 0x6e, 0xeb, 0xde, 0x9d, 0x32, 0xad, 0x4c, 0x6e, 0x98, 0xa4, 0x3b, - 0x14, 0x6b, 0x7d, 0x78, 0x30, 0xf2, 0x23, 0x25, 0x01, 0x94, 0x8b, 0x33, 0x33, 0xd0, 0x53, 0x54, - 0xf8, 0xe0, 0xcc, 0x31, 0x7b, 0xea, 0x3d, 0xa8, 0x79, 0x1c, 0x9a, 0x16, 0x18, 0x00, 0xcf, 0x02, - 0x3e, 0x6b, 0xdb, 0xe9, 0x46, 0x29, 0x09, 0xaa, 0x81, 0xbe, 0x16, 0x85, 0xc8, 0xa1, 0x68, 0xf9, - 0x4c, 0xde, 0x2e, 0x4e, 0xc1, 0xce, 0x3d, 0x7c, 0x59, 0xba, 0xfc, 0xe6, 0x1c, 0x97, 0x3a, 0x63, - 0x5d, 0x8b, 0x28, 0x6c, 0xa2, 0xa7, 0xbb, 0x27, 0x61, 0x25, 0xcc, 0xf8, 0x08, 0xfe, 0x0f, 0x8f, - 0xe7, 0xa3, 0xe8, 0x6f, 0xe9, 0x2c, 0xc9, 0xb6, 0xac, 0xba, 0x92, 0x7d, 0xc6, 0x60, 0x42, 0x3c, - 0x4b, 0x7a, 0x31, 0x8c, 0x85, 0x66, 0x71, 0xe2, 0x0f, 0x7a, 0x43, 0x16, 0xb7, 0x4b, 0xe7, 0x31, - 0xd2, 0x9d, 0xe0, 0x6b, 0x73, 0xce, 0x9a, 0x4e, 0x93, 0x96, 0x04, 0xcc, 0xf9, 0x6c, 0x7b, 0xcb, - 0x24, 0x15, 0xe1, 0x34, 0xe8, 0x7e, 0xea, 0xdd, 0xcc, 0xa3, 0xc6, 0x04, 0x6d, 0xe6, 0x79, 0x6d, - 0x09, 0x4a, 0x62, 0xf2, 0x67, 0x12, 0x3b, 0x98, 0xff, 0x81, 0xac, 0x24, 0xe0, 0x65, 0x4b, 0x66, - 0x47, 0x7c, 0x24, 0x9d, 0x18, 0x34, 0x46, 0xd1, 0x85, 0x88, 0xfa, 0xc0, 0x57, 0x87, 0x8c, 0xdc, - 0x70, 0xa7, 0x91, 0x1b, 0x6c, 0x1d, 0xd6, 0x93, 0x78, 0x50, 0xe9, 0x68, 0xf3, 0x4f, 0xeb, 0x02, - 0x90, 0x74, 0x5a, 0x17, 0x62, 0x69, 0x2b, 0x9d, 0x57, 0xf2, 0xfa, 0x00, 0xda, 0x56, 0xbe, 0x32, - 0xb7, 0x7c, 0xfd, 0x14, 0xf8, 0x17, 0xc3, 0x16, 0xfe, 0x06, 0xfb, 0xee, 0xb9, 0xf2, 0xec, 0x15, - 0xf8, 0xa3, 0x3c, 0x7b, 0x87, 0xa9, 0x80, 0xd0, 0x2b, 0x7f, 0xb4, 0x7f, 0xaf, 0xb6, 0xa2, 0xbb, - 0x02, 0x92, 0xda, 0x66, 0x8d, 0xdc, 0xa0, 0x19, 0x4f, 0x90, 0x2a, 0x92, 0x23, 0x25, 0xa8, 0xeb, - 0x28, 0x93, 0x2f, 0xc6, 0x0d, 0xac, 0x75, 0x8f, 0x44, 0x5c, 0x97, 0x2b, 0xac, 0xb7, 0x9d, 0xfe, - 0x09, 0xf7, 0xf6, 0x89, 0x67, 0xf0, 0x53, 0x45, 0x77, 0xf7, 0x52, 0x7c, 0x39, 0x60, 0x0a, 0x48, - 0x67, 0x7a, 0x8c, 0xc1, 0x44, 0x9a, 0x4a, 0xb0, 0xfe, 0xbd, 0xa2, 0x7e, 0x89, 0x4c, 0xbd, 0xbb, - 0x0e, 0x64, 0xb2, 0x99, 0x81, 0x4c, 0xef, 0xb0, 0x38, 0x7f, 0xa1, 0x5b, 0x5e, 0x4f, 0x83, 0x1c, - 0xe5, 0x07, 0x7c, 0x12, 0x39, 0x58, 0x2a, 0x2c, 0x96, 0x2f, 0x17, 0x21, 0x11, 0x4a, 0x79, 0xf2, - 0x5c, 0x79, 0xe2, 0xac, 0x16, 0x52, 0x1e, 0xae, 0x4c, 0xe6, 0xcd, 0xac, 0x9d, 0x8c, 0x5b, 0xcc, - 0x82, 0x6b, 0x11, 0x75, 0x75, 0xbb, 0x61, 0xb5, 0xf6, 0x77, 0x65, 0xb2, 0x26, 0xf3, 0x63, 0xc0, - 0x56, 0x08, 0x23, 0xc0, 0xfd, 0xb0, 0xa0, 0x08, 0x70, 0x11, 0x9a, 0x36, 0xd1, 0x1f, 0x28, 0x79, - 0x7d, 0x10, 0xad, 0xa3, 0xd3, 0xf2, 0x95, 0xe3, 0xf6, 0xf1, 0x63, 0xd5, 0xa5, 0xe9, 0xca, 0xe2, - 0x6d, 0x18, 0x4e, 0x21, 0x11, 0x8c, 0xe3, 0xf5, 0xa0, 0xb5, 0x02, 0x90, 0xb6, 0xca, 0xcb, 0x13, - 0xd0, 0xf2, 0x9c, 0x58, 0xcb, 0x52, 0x61, 0x32, 0xf4, 0x3b, 0xe0, 0x30, 0x05, 0x89, 0x52, 0xae, - 0x75, 0xf7, 0x9b, 0x99, 0xac, 0x19, 0xef, 0x1e, 0x32, 0xf1, 0x9b, 0xae, 0x19, 0x1f, 0x61, 0x9f, - 0xf8, 0x18, 0x67, 0x13, 0xfd, 0x50, 0x44, 0x15, 0x59, 0xce, 0x85, 0x53, 0xc5, 0xaf, 0xe7, 0x36, - 0xd6, 0x89, 0xa6, 0x54, 0x7d, 0xf8, 0xf9, 0x50, 0x25, 0xf6, 0xb5, 0xaa, 0x8f, 0xaa, 0xf8, 0x88, - 0xc5, 0xb9, 0xde, 0x5c, 0x8d, 0xa8, 0x0f, 0xb5, 0x1b, 0x16, 0x49, 0x82, 0xc5, 0x2c, 0x7c, 0x35, - 0x31, 0x30, 0x64, 0x98, 0x48, 0x44, 0x85, 0x00, 0x27, 0xdd, 0xfd, 0x96, 0xc1, 0x29, 0x75, 0x37, - 0x48, 0x96, 0x3f, 0xea, 0x85, 0xd3, 0xba, 0xab, 0xcb, 0xfe, 0xd1, 0xfb, 0xf6, 0xd4, 0x2d, 0xfb, - 0xd8, 0x38, 0xa8, 0xa7, 0x50, 0x9b, 0xa7, 0xbe, 0xb5, 0x7c, 0x7c, 0x4a, 0xdb, 0x5f, 0x0f, 0x6a, - 0x03, 0x3d, 0x10, 0x2d, 0xbc, 0x57, 0xfe, 0xce, 0x39, 0xa0, 0x18, 0x23, 0x7c, 0x84, 0x82, 0x7b, - 0x70, 0xc0, 0xfb, 0x02, 0xe5, 0x91, 0xd1, 0x74, 0x10, 0xe8, 0xf8, 0x1b, 0x45, 0xbd, 0xbf, 0xcd, - 0xe8, 0x1e, 0xea, 0xa5, 0xcd, 0x21, 0x61, 0xf6, 0x8b, 0x04, 0x32, 0x3d, 0x80, 0x00, 0x81, 0xcc, - 0x1a, 0x1c, 0x25, 0x25, 0x41, 0x66, 0xc0, 0xea, 0xad, 0xa3, 0xd5, 0x9b, 0x33, 0xfe, 0x9a, 0x6b, - 0xd2, 0x12, 0x10, 0x60, 0x8d, 0x3d, 0x2a, 0xb7, 0xa6, 0x07, 0xff, 0x22, 0x1e, 0xd8, 0xcf, 0xd1, - 0x9e, 0x92, 0xb0, 0x92, 0x7d, 0xbb, 0x86, 0x4c, 0x2b, 0x33, 0xd8, 0x65, 0x58, 0x56, 0x2a, 0xdd, - 0x2b, 0xee, 0x29, 0x3e, 0x58, 0x60, 0x4f, 0x11, 0xa0, 0xa9, 0x65, 0x97, 0x15, 0x72, 0xc2, 0x03, - 0xfb, 0x2e, 0x1d, 0x9d, 0xf8, 0xdd, 0x66, 0xf2, 0x7b, 0xf6, 0xc5, 0x6b, 0x10, 0x73, 0xb6, 0x3c, - 0x47, 0x73, 0xc7, 0x69, 0xa1, 0x08, 0x62, 0xea, 0x2b, 0x31, 0x91, 0xff, 0xd9, 0x21, 0xa3, 0x3b, - 0x9e, 0xe4, 0x7f, 0xdd, 0x8c, 0x9b, 0xc9, 0x4c, 0xd6, 0x88, 0x8f, 0x90, 0xff, 0xc8, 0x72, 0x8c, - 0x7e, 0xee, 0xe8, 0x19, 0x85, 0xa4, 0xdc, 0xed, 0x06, 0xc9, 0xed, 0x7f, 0x33, 0xa2, 0x22, 0x6c, - 0x40, 0xea, 0x0d, 0x36, 0x3f, 0xec, 0xce, 0x98, 0x82, 0x43, 0x67, 0x3f, 0x46, 0xba, 0x54, 0x15, - 0x41, 0x29, 0x19, 0x3f, 0x56, 0xf2, 0x7a, 0x1a, 0x3d, 0x43, 0x37, 0xa1, 0x48, 0xdf, 0xc7, 0x4d, - 0x95, 0xcc, 0x17, 0xe5, 0x2b, 0x67, 0x7d, 0xe2, 0x18, 0x14, 0x42, 0x1c, 0x0e, 0xb5, 0x95, 0xdd, - 0x06, 0x21, 0x4b, 0xb1, 0x17, 0x25, 0xb4, 0x05, 0xf1, 0xc4, 0xe6, 0xa3, 0x78, 0x5f, 0xc6, 0xb4, - 0x76, 0x65, 0x86, 0xd2, 0x16, 0x95, 0x08, 0x58, 0xd5, 0x6e, 0x58, 0xcc, 0x3e, 0xa2, 0x41, 0x24, - 0xcc, 0x27, 0xe3, 0x41, 0x48, 0x5f, 0xba, 0xfc, 0x40, 0x4e, 0x8f, 0xe4, 0x75, 0x84, 0xe8, 0x89, - 0x02, 0xb1, 0x15, 0x26, 0x59, 0xad, 0x93, 0xbf, 0x46, 0x06, 0x51, 0x7c, 0x39, 0x90, 0x05, 0xe6, - 0xe1, 0x7a, 0xa7, 0xb4, 0x48, 0x75, 0x44, 0x61, 0xb9, 0x0f, 0x13, 0x36, 0xb8, 0x36, 0xc6, 0xda, - 0x3f, 0x2d, 0x47, 0x26, 0xe4, 0x7d, 0x27, 0xfa, 0xea, 0x11, 0x75, 0x0d, 0x67, 0x1a, 0x6e, 0x05, - 0x1d, 0x3d, 0x26, 0x90, 0xb5, 0x29, 0x80, 0x03, 0x1e, 0x28, 0x3d, 0xb6, 0x90, 0xe2, 0xb9, 0x66, - 0xf6, 0x75, 0xf4, 0xa0, 0x9f, 0xba, 0x8e, 0x36, 0x6d, 0xbf, 0x90, 0xbc, 0x8e, 0xb6, 0x4f, 0x4b, - 0xdf, 0xcb, 0xb1, 0x8e, 0x4f, 0x4b, 0x5f, 0xaa, 0x87, 0x23, 0x70, 0x3c, 0x42, 0x0e, 0xd6, 0xb1, - 0x7d, 0x66, 0x9b, 0x61, 0x25, 0x52, 0x03, 0xe2, 0x83, 0x75, 0x1e, 0x10, 0x74, 0xb0, 0xee, 0xc5, - 0x71, 0x29, 0x09, 0xf7, 0x23, 0xaa, 0x76, 0xcd, 0x98, 0x30, 0x29, 0x43, 0xa0, 0xff, 0xc5, 0x67, - 0x53, 0xac, 0x17, 0x48, 0x08, 0x79, 0x31, 0xf6, 0xc2, 0x0a, 0x08, 0x81, 0x66, 0xd4, 0x03, 0xf5, - 0xa4, 0xfa, 0xcc, 0xf8, 0xbd, 0xab, 0x0b, 0x03, 0xb0, 0x0d, 0xe4, 0x48, 0x52, 0xf8, 0xde, 0xe5, - 0x85, 0x04, 0x39, 0x51, 0xd4, 0x22, 0x29, 0x1b, 0xff, 0xa8, 0xe4, 0xf5, 0xd3, 0x0a, 0xda, 0x0a, - 0x56, 0x76, 0x74, 0xc6, 0x3b, 0x3a, 0x0f, 0x6e, 0x8f, 0x83, 0xb5, 0xf6, 0xf4, 0xe9, 0xca, 0x8d, - 0x09, 0x30, 0x8f, 0x8d, 0x43, 0xe4, 0x3a, 0x2c, 0x70, 0xfe, 0x98, 0x52, 0x41, 0xd2, 0x7b, 0x3b, - 0x8b, 0x9a, 0x28, 0x5d, 0xf0, 0x4c, 0x4c, 0xda, 0x27, 0xaf, 0x55, 0x3f, 0x3c, 0x67, 0x8f, 0xcf, - 0x57, 0x2e, 0x8d, 0xd5, 0xf7, 0xc5, 0x1c, 0x93, 0xad, 0xb1, 0xe7, 0x57, 0xc8, 0x64, 0x3c, 0x89, - 0x0d, 0xc4, 0x34, 0x8e, 0x45, 0xd4, 0xd5, 0x9c, 0x5b, 0x2a, 0xa4, 0x61, 0x7c, 0x69, 0x20, 0x21, - 0x98, 0xfd, 0x84, 0x30, 0xe9, 0xec, 0x27, 0x41, 0x73, 0x61, 0x5d, 0x3a, 0x5a, 0x0d, 0x59, 0x38, - 0x4b, 0xc5, 0xb3, 0x95, 0xc5, 0xb1, 0xd2, 0xe2, 0x1d, 0x58, 0x89, 0x68, 0xeb, 0x9d, 0xcb, 0x2c, - 0x51, 0x07, 0x09, 0x31, 0xac, 0x4c, 0x9c, 0x28, 0x5f, 0x7e, 0x17, 0xba, 0x16, 0xb7, 0x66, 0xd9, - 0x15, 0xfb, 0xc3, 0xba, 0xce, 0x8a, 0x8d, 0x9c, 0x09, 0xaf, 0x75, 0xf4, 0x13, 0x4b, 0xc1, 0x48, - 0x5a, 0xd3, 0xa4, 0x23, 0x53, 0x16, 0x4a, 0x83, 0x10, 0x16, 0x22, 0x53, 0x26, 0xa3, 0xe1, 0xbc, - 0x92, 0xd7, 0x9f, 0x47, 0xae, 0x37, 0xac, 0x87, 0x86, 0xc7, 0xdd, 0x94, 0x30, 0x9c, 0xfd, 0x95, - 0x4b, 0x63, 0x3c, 0x0a, 0xc6, 0x18, 0xad, 0xe3, 0xd3, 0x51, 0x10, 0x1f, 0x81, 0x0f, 0xf4, 0x5d, - 0xf7, 0x44, 0x44, 0x5d, 0xcd, 0xb9, 0x77, 0x06, 0xb1, 0x21, 0x84, 0x49, 0xd9, 0x90, 0xa0, 0x29, - 0x1b, 0x67, 0x81, 0x0d, 0xd8, 0x63, 0xf2, 0xb1, 0xe1, 0x5c, 0x0e, 0x63, 0x63, 0x4f, 0xcb, 0xbd, - 0x63, 0x03, 0x0f, 0xb7, 0x0f, 0x38, 0x5b, 0xd8, 0x1c, 0x11, 0xf2, 0x83, 0x1a, 0x3f, 0x0d, 0x4f, - 0xd5, 0x85, 0xe5, 0x9a, 0xc4, 0x0b, 0xdc, 0xa6, 0x80, 0x87, 0x84, 0x75, 0x32, 0x47, 0xc6, 0x1a, - 0x20, 0xf0, 0x80, 0xee, 0x21, 0x0f, 0x73, 0x8a, 0xfa, 0xc5, 0xdd, 0x46, 0x62, 0xc0, 0xea, 0x43, - 0xbf, 0x53, 0x6b, 0x0e, 0x5c, 0x97, 0x6e, 0x7a, 0xb0, 0x62, 0x37, 0xff, 0xd1, 0x36, 0xd4, 0x54, - 0xbe, 0x7c, 0x1a, 0xbf, 0x7a, 0x1c, 0x99, 0xb7, 0x8b, 0x1f, 0x80, 0x4b, 0x21, 0xc8, 0x11, 0x68, - 0xd2, 0x12, 0x62, 0xd3, 0xc3, 0x68, 0xad, 0xc0, 0xa6, 0x3e, 0xf2, 0x0b, 0xad, 0xd3, 0x4a, 0x5e, - 0x3f, 0xa5, 0xa0, 0xa8, 0xba, 0x86, 0x7a, 0x16, 0x45, 0xf7, 0x01, 0x26, 0xaa, 0x77, 0x76, 0x44, - 0xdb, 0x32, 0xc9, 0xad, 0xbf, 0xbe, 0x79, 0xd3, 0x96, 0x4d, 0x9b, 0x63, 0x6a, 0xbc, 0x3b, 0x69, - 0x26, 0xb2, 0xa9, 0xf8, 0xc1, 0x6d, 0x2d, 0x4a, 0x64, 0xeb, 0xaa, 0x44, 0x36, 0x3b, 0x90, 0x4a, - 0x92, 0xfd, 0xf3, 0xf8, 0xd7, 0xcd, 0x4c, 0x7a, 0xa7, 0xef, 0xca, 0x6b, 0xbf, 0xab, 0x3e, 0xa6, - 0xaa, 0x7a, 0x36, 0xb5, 0xc7, 0x18, 0xd6, 0x87, 0xac, 0x3e, 0xf4, 0xc0, 0x7d, 0x11, 0xed, 0xb7, - 0xf0, 0xa7, 0x4c, 0x2e, 0xf5, 0x06, 0xc1, 0x45, 0x23, 0xdd, 0xab, 0xd4, 0x2f, 0x79, 0x40, 0xbf, - 0xd6, 0xfd, 0xc5, 0x6c, 0x2e, 0x63, 0x65, 0x9e, 0xfe, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe0, - 0xbb, 0x8e, 0xd7, 0x4e, 0x8f, 0x04, 0x00, + // 76810 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x7d, 0x70, 0x14, 0x57, + 0xb6, 0x20, 0x88, 0xbf, 0x14, 0x5f, 0xd2, 0x15, 0x02, 0x9c, 0x06, 0x5b, 0xc6, 0x36, 0x2e, 0xcb, + 0xdd, 0xb6, 0x94, 0x96, 0xf8, 0x48, 0xbb, 0xfd, 0x81, 0xdb, 0xdd, 0x4e, 0x95, 0x04, 0xae, 0x06, + 0x84, 0x9c, 0x12, 0xb8, 0x6d, 0xb7, 0x9b, 0x29, 0xaa, 0x12, 0x51, 0x96, 0x54, 0x55, 0x5d, 0x55, + 0x12, 0xe0, 0x7e, 0xd3, 0x5d, 0x12, 0x12, 0x48, 0x50, 0xfa, 0x20, 0xcd, 0xa7, 0x10, 0x1f, 0xb2, + 0xc1, 0xc8, 0x1f, 0x92, 0xc0, 0xc6, 0x50, 0x94, 0x4a, 0x26, 0x26, 0x66, 0x26, 0x66, 0x7e, 0xbf, + 0x99, 0x78, 0x3b, 0xd3, 0xb3, 0x3b, 0xb1, 0xf1, 0xe2, 0xcd, 0x47, 0x2c, 0x95, 0x59, 0x55, 0x6f, + 0x5f, 0xac, 0x26, 0xde, 0xee, 0xc6, 0x46, 0x78, 0xfe, 0xd8, 0x8d, 0x7b, 0xcf, 0xcd, 0xcc, 0x9b, + 0x55, 0x25, 0x01, 0xb6, 0xbb, 0xfb, 0x79, 0xf7, 0x11, 0x44, 0xa8, 0xf2, 0xdc, 0x73, 0xcf, 0xfd, + 0x3e, 0xf7, 0x9c, 0x73, 0xcf, 0x3d, 0x17, 0xad, 0xf4, 0xb4, 0x75, 0x84, 0x23, 0x4a, 0xa8, 0xdd, + 0xed, 0x77, 0xb7, 0x28, 0xa1, 0xb5, 0xc1, 0x50, 0x20, 0x12, 0xe0, 0x97, 0xd9, 0xa1, 0xab, 0x1f, + 0x6b, 0x09, 0x04, 0x5a, 0xda, 0x94, 0x75, 0xee, 0xa0, 0x6f, 0x9d, 0xdb, 0xef, 0x0f, 0x44, 0xdc, + 0x11, 0x5f, 0xc0, 0x1f, 0x06, 0x6c, 0x33, 0x95, 0x7c, 0xed, 0xee, 0xd8, 0xb3, 0x2e, 0x1c, 0x09, + 0x75, 0x78, 0x22, 0x34, 0xb5, 0x9a, 0xfc, 0xf1, 0xd4, 0xb4, 0x28, 0xfe, 0x9a, 0xf0, 0x3e, 0x77, + 0x4b, 0x8b, 0x12, 0x5a, 0x17, 0x08, 0x92, 0xfc, 0x05, 0x68, 0x3d, 0xdc, 0xe9, 0x6e, 0xf3, 0x79, + 0xdd, 0x11, 0x65, 0x9d, 0xf1, 0x83, 0x26, 0xac, 0xc9, 0x2d, 0x64, 0x5f, 0xc8, 0x1d, 0x0c, 0x2a, + 0x21, 0x9a, 0xb1, 0xe2, 0x7f, 0x5f, 0x87, 0x96, 0x38, 0xa1, 0xd6, 0xfc, 0xaf, 0x51, 0x09, 0x6d, + 0x80, 0xab, 0xae, 0x9c, 0x73, 0x70, 0x95, 0x25, 0xb5, 0xaf, 0xa9, 0xd2, 0xab, 0x82, 0x05, 0x15, + 0xd7, 0xd7, 0x3a, 0x9b, 0xb4, 0x43, 0xbd, 0xd9, 0x83, 0xe3, 0xa9, 0x99, 0xdb, 0xe9, 0xe3, 0xe3, + 0xd9, 0xb3, 0x87, 0xd2, 0x5f, 0x5f, 0x72, 0xd5, 0xcd, 0x26, 0x63, 0xfa, 0xc5, 0xa4, 0x96, 0x1c, + 0x4a, 0xc5, 0x13, 0xb5, 0xce, 0xa6, 0x9a, 0x2d, 0x2f, 0x35, 0xd5, 0xfc, 0x12, 0xff, 0x93, 0xad, + 0xcc, 0xfc, 0x6b, 0xa8, 0x94, 0x7e, 0x34, 0xb8, 0xdb, 0x95, 0xf2, 0x22, 0x52, 0xc2, 0x1a, 0x55, + 0x7a, 0x54, 0x60, 0xe1, 0xe2, 0x52, 0x20, 0xaa, 0x0d, 0x0f, 0xa4, 0xaf, 0x5c, 0x95, 0xd9, 0x24, + 0xfe, 0x14, 0x87, 0x1e, 0xdc, 0xa3, 0x78, 0x95, 0x10, 0x69, 0xbc, 0xd3, 0xac, 0xec, 0x02, 0x42, + 0x4a, 0x51, 0xa5, 0xdd, 0x42, 0xa1, 0x74, 0x71, 0x8b, 0xf6, 0x71, 0xb7, 0x7e, 0x7e, 0x34, 0x33, + 0x75, 0x19, 0x68, 0xa7, 0xe2, 0x89, 0x4c, 0xd7, 0xf1, 0x6c, 0xf7, 0xc7, 0xf0, 0x99, 0x1e, 0xe9, + 0x49, 0xc5, 0xa3, 0xd9, 0x83, 0xe3, 0x5a, 0xdf, 0xa1, 0xd9, 0x64, 0x2c, 0x7d, 0x7c, 0x3c, 0x33, + 0x75, 0xd9, 0x55, 0x97, 0x99, 0xbc, 0xaa, 0xcd, 0x9c, 0x00, 0xc4, 0xd7, 0x03, 0xe1, 0x48, 0xea, + 0xf6, 0x98, 0xde, 0x35, 0x25, 0x17, 0x2a, 0x81, 0xdf, 0x82, 0x8a, 0x83, 0xa1, 0x40, 0xa7, 0xcf, + 0xab, 0x84, 0xca, 0x17, 0x92, 0xda, 0xac, 0x53, 0xa5, 0x6a, 0xc1, 0x04, 0x8a, 0x0e, 0x5a, 0x72, + 0xe2, 0x58, 0xb6, 0x77, 0x20, 0x3d, 0x33, 0x39, 0x9b, 0x8c, 0xa5, 0xe2, 0x89, 0x54, 0xe2, 0x58, + 0xfa, 0xda, 0xb4, 0x76, 0xfe, 0xa8, 0xab, 0x4e, 0x36, 0x71, 0xf9, 0x17, 0xd1, 0xe2, 0x90, 0xd2, + 0xe2, 0x0b, 0xf8, 0xcb, 0x17, 0x11, 0x52, 0x4f, 0xa8, 0xd2, 0x63, 0x02, 0x05, 0x89, 0x3c, 0xed, + 0x9e, 0x58, 0x42, 0xbb, 0x70, 0x81, 0x56, 0x89, 0xa6, 0xf1, 0x5b, 0xd1, 0xa2, 0xce, 0xa0, 0xc7, + 0x55, 0x57, 0xbe, 0x98, 0xe4, 0x7b, 0x41, 0x95, 0x9e, 0x13, 0x00, 0x22, 0x0a, 0x90, 0x4d, 0xef, + 0x8f, 0x6a, 0xa3, 0xe3, 0x9d, 0x41, 0xcf, 0x6c, 0x32, 0x06, 0x0d, 0x4e, 0x0f, 0x4e, 0x69, 0x1f, + 0x1e, 0x4c, 0xc5, 0x8f, 0x66, 0xcf, 0x9d, 0xd7, 0x6e, 0xf7, 0x6a, 0x63, 0x9f, 0xc9, 0x90, 0x85, + 0x7f, 0x1d, 0x95, 0x04, 0x43, 0x81, 0xf7, 0x14, 0x4f, 0xc4, 0x55, 0x57, 0xbe, 0x84, 0x50, 0x14, + 0x54, 0xe9, 0x19, 0xc1, 0x82, 0x8a, 0xab, 0x2d, 0xaa, 0xbd, 0x5f, 0x66, 0xba, 0x8e, 0xa7, 0x47, + 0x7a, 0xb2, 0x63, 0xb7, 0xd2, 0x67, 0x27, 0x5d, 0x75, 0xb2, 0x85, 0xc6, 0x1f, 0x40, 0x68, 0x77, + 0x47, 0xd8, 0xe7, 0x57, 0xc2, 0x61, 0x57, 0x5d, 0x79, 0x31, 0x21, 0xf5, 0x96, 0x2a, 0xed, 0x14, + 0x18, 0xb0, 0xf8, 0x3a, 0xe4, 0x4c, 0x4f, 0x1f, 0xd3, 0x26, 0x47, 0xc8, 0x90, 0x8c, 0x68, 0x47, + 0xc6, 0x5c, 0x75, 0xd5, 0x8e, 0xfc, 0x42, 0x8c, 0xb4, 0xd9, 0x64, 0x8c, 0x0c, 0x95, 0x7e, 0xee, + 0xb2, 0x9e, 0x18, 0x4e, 0x25, 0x06, 0x9d, 0xdb, 0xea, 0x6a, 0x65, 0x86, 0x2a, 0xbf, 0x17, 0x95, + 0x2a, 0xfe, 0x4e, 0x5f, 0x28, 0xe0, 0x6f, 0x57, 0xfc, 0x91, 0xf2, 0x12, 0x52, 0xf6, 0x26, 0x55, + 0x72, 0x0a, 0x2c, 0x5c, 0x7c, 0xde, 0x2a, 0x63, 0xea, 0x96, 0x96, 0xc0, 0x65, 0xd0, 0x8e, 0x21, + 0x3d, 0x3c, 0x9b, 0x8c, 0x85, 0x23, 0xee, 0x96, 0xd9, 0x64, 0xcc, 0xab, 0xec, 0xee, 0xc0, 0x7f, + 0x83, 0xa1, 0x80, 0x57, 0x66, 0x49, 0xf0, 0x6f, 0x20, 0xa4, 0xf8, 0x5b, 0x7c, 0x7e, 0xa5, 0xf9, + 0x40, 0x50, 0x29, 0x47, 0xa4, 0xa0, 0x0d, 0xaa, 0xb4, 0x56, 0x60, 0xc0, 0xc6, 0x34, 0x48, 0x27, + 0x4f, 0xea, 0x83, 0xaa, 0x96, 0x3c, 0xa1, 0x7f, 0x30, 0x38, 0x9b, 0x8c, 0xb5, 0xbe, 0x14, 0xbe, + 0x13, 0xed, 0x6a, 0x57, 0xc2, 0x81, 0xb0, 0xcc, 0x60, 0xf3, 0xef, 0xa2, 0x52, 0x5f, 0xb8, 0x7e, + 0x3f, 0x5e, 0x02, 0xbe, 0x4e, 0xa5, 0xbc, 0xd4, 0xc1, 0x55, 0x16, 0xd7, 0xbe, 0xa2, 0x4a, 0x2f, + 0x09, 0x2c, 0x5c, 0xac, 0xd2, 0x4f, 0x4f, 0x69, 0xc3, 0x1f, 0x43, 0xa7, 0xa4, 0x8f, 0x7e, 0xae, + 0x0d, 0x5c, 0x84, 0x62, 0xf0, 0x20, 0x4f, 0x9f, 0xce, 0x4c, 0xe2, 0x09, 0xbf, 0xc7, 0xdd, 0x16, + 0x56, 0x64, 0x36, 0x1f, 0xbf, 0xd3, 0x5c, 0x90, 0xa4, 0xca, 0x4b, 0x49, 0x95, 0x9f, 0x57, 0xa5, + 0x0d, 0x02, 0x0b, 0x17, 0x2b, 0x68, 0x9d, 0xc9, 0x44, 0x9d, 0x4d, 0xc6, 0xac, 0xf9, 0x7f, 0x27, + 0xda, 0x15, 0xf6, 0xf9, 0x5b, 0xda, 0x14, 0x99, 0xcd, 0xc0, 0xef, 0x44, 0x8b, 0xdb, 0xdc, 0xbb, + 0x95, 0xb6, 0x70, 0x79, 0x99, 0x63, 0x41, 0x65, 0xa9, 0xf8, 0xd4, 0xda, 0x1c, 0x76, 0x49, 0xd7, + 0xcd, 0xda, 0xad, 0x04, 0xab, 0xde, 0x1f, 0x09, 0x1d, 0xa8, 0x7d, 0x44, 0x95, 0x1e, 0x12, 0x68, + 0x3e, 0x83, 0x07, 0xe8, 0x17, 0x0f, 0xa7, 0x27, 0xbe, 0x96, 0x29, 0x94, 0x7f, 0x15, 0x2d, 0xf1, + 0x84, 0x14, 0x77, 0x24, 0x10, 0x2a, 0x5f, 0x46, 0xea, 0xfa, 0x94, 0x2a, 0x39, 0x04, 0x03, 0x26, + 0xae, 0xa2, 0x4b, 0x8c, 0x8c, 0x98, 0xd6, 0x77, 0x56, 0x9b, 0x4e, 0x64, 0xa2, 0xbd, 0xb2, 0x91, + 0xce, 0xaf, 0x41, 0x88, 0xfc, 0x54, 0x9a, 0x7d, 0xed, 0x4a, 0xf9, 0x72, 0x4c, 0x41, 0x66, 0x20, + 0x38, 0xbd, 0x23, 0xe8, 0x35, 0xd2, 0x57, 0x40, 0xba, 0x05, 0xe1, 0xbb, 0x8a, 0x50, 0xc9, 0x6e, + 0x4f, 0x58, 0xf2, 0x7a, 0x03, 0xfe, 0x70, 0xf9, 0x03, 0xa4, 0x69, 0x4f, 0xcf, 0xd5, 0xb4, 0x5a, + 0x03, 0x11, 0x5a, 0x97, 0xe0, 0x54, 0xe9, 0x06, 0x27, 0x58, 0xf9, 0xc5, 0x71, 0x0e, 0xaa, 0x48, + 0x5b, 0x7a, 0xea, 0x46, 0xe6, 0xf6, 0xd9, 0xcc, 0x58, 0x0c, 0x18, 0x6c, 0x7a, 0x66, 0x52, 0x1f, + 0x52, 0x53, 0xd3, 0x37, 0xb4, 0xc9, 0xfe, 0xcc, 0x47, 0xbd, 0x30, 0xcd, 0xa1, 0x61, 0xa9, 0xe4, + 0x48, 0xfa, 0xfa, 0x87, 0x5a, 0xf2, 0x44, 0x2a, 0x71, 0x2c, 0x15, 0x3f, 0x02, 0xe3, 0x0b, 0x3c, + 0x05, 0x10, 0x80, 0x8e, 0x36, 0x75, 0x4b, 0x9f, 0x3a, 0x9e, 0x8a, 0x0f, 0x66, 0xc6, 0x2e, 0x6b, + 0xbd, 0x98, 0x02, 0x94, 0x0b, 0xf8, 0xda, 0x28, 0x65, 0xdd, 0xfa, 0xc4, 0x47, 0x5a, 0x3c, 0xae, + 0xf5, 0x9d, 0xd3, 0xae, 0x1c, 0xd5, 0x62, 0x27, 0x53, 0xb7, 0x8e, 0x6a, 0xc3, 0x83, 0x40, 0x21, + 0x73, 0xf5, 0x60, 0xfa, 0xf8, 0xf8, 0x9d, 0x68, 0xb7, 0x6c, 0xd5, 0x9a, 0xef, 0x2d, 0x42, 0xa5, + 0xca, 0xfe, 0x48, 0xc8, 0x4d, 0x7b, 0x81, 0x27, 0xbd, 0x50, 0x39, 0x57, 0x2f, 0xd4, 0x5b, 0xa8, + 0xd0, 0x0f, 0x71, 0x4e, 0x95, 0xae, 0x73, 0x02, 0x4b, 0x43, 0xbc, 0x94, 0xdb, 0x13, 0xd9, 0x0f, + 0xcf, 0x69, 0x97, 0x4e, 0xea, 0xfd, 0x9f, 0x68, 0xd7, 0x4e, 0xa4, 0x92, 0x17, 0xb3, 0x51, 0x15, + 0x2f, 0x79, 0x63, 0x21, 0x62, 0x2e, 0x4e, 0x38, 0x57, 0x2a, 0x9e, 0xc8, 0x7e, 0xd8, 0x93, 0x3e, + 0x71, 0x26, 0x95, 0x88, 0xe9, 0x27, 0x6f, 0xad, 0x4b, 0xc5, 0xfb, 0xf1, 0x1f, 0x7d, 0x74, 0x40, + 0x3b, 0x32, 0xa6, 0x9d, 0x38, 0x44, 0x09, 0x90, 0x8d, 0x6a, 0xae, 0xf6, 0xa7, 0x8f, 0xdc, 0xd0, + 0xa3, 0x5d, 0xd0, 0x0b, 0xf9, 0x8d, 0x4f, 0xc5, 0x07, 0x61, 0x00, 0x70, 0x2f, 0xb0, 0x75, 0xe6, + 0x77, 0xa0, 0xe2, 0xf0, 0x81, 0x70, 0x44, 0x69, 0x77, 0xd5, 0x95, 0x3f, 0x48, 0xe6, 0xe2, 0xcb, + 0xaa, 0xf4, 0x82, 0x60, 0x02, 0x45, 0xa1, 0xb5, 0x63, 0xb7, 0x12, 0xf2, 0x2b, 0x11, 0x25, 0x4c, + 0x19, 0xf6, 0xe8, 0xb8, 0x36, 0xdc, 0x93, 0x4a, 0x1c, 0xd3, 0x6e, 0x7d, 0xa9, 0x0d, 0x5d, 0x4d, + 0xc5, 0x8f, 0x64, 0xbe, 0xea, 0xd1, 0x13, 0xc3, 0x98, 0xf3, 0x1b, 0xb9, 0xf8, 0xeb, 0x1c, 0x42, + 0xd0, 0x87, 0x64, 0x45, 0xae, 0x24, 0x94, 0x3f, 0xe0, 0x54, 0x69, 0x88, 0x13, 0x98, 0x04, 0x31, + 0xca, 0xd1, 0xea, 0x4f, 0x8e, 0xa5, 0x87, 0x0f, 0x99, 0x2b, 0x53, 0xeb, 0xfd, 0x5c, 0x1f, 0xed, + 0x4f, 0x25, 0x8e, 0xe9, 0xa7, 0x6e, 0xa4, 0x8f, 0x5f, 0xd0, 0x4f, 0xf4, 0xcd, 0x26, 0x63, 0xdb, + 0xa4, 0x06, 0x69, 0x73, 0x7d, 0xdd, 0x2e, 0xe7, 0xd6, 0x1d, 0x4d, 0xcd, 0xf5, 0x72, 0x25, 0xcc, + 0x1b, 0xbd, 0xff, 0x74, 0x7a, 0x72, 0x0c, 0xa8, 0x54, 0xcd, 0x26, 0x63, 0xae, 0x86, 0xba, 0xfa, + 0xc6, 0xfa, 0x86, 0xba, 0xfa, 0x86, 0x66, 0x13, 0x33, 0x7d, 0xf4, 0xf3, 0xf4, 0x67, 0x47, 0x4d, + 0x56, 0x92, 0x39, 0xfc, 0x69, 0x66, 0x2c, 0x96, 0x9e, 0xbe, 0xae, 0x1f, 0xb9, 0x54, 0x25, 0x33, + 0xd5, 0xe1, 0x77, 0xa1, 0xc5, 0xed, 0x6e, 0x3c, 0xe0, 0xe5, 0xab, 0xe6, 0x5f, 0xf0, 0xdb, 0x08, + 0x16, 0x4c, 0x85, 0x0a, 0x55, 0x7a, 0x42, 0xa0, 0xf9, 0x8c, 0xb5, 0x0b, 0x5f, 0x0e, 0x57, 0xa3, + 0xd6, 0x77, 0x2a, 0x33, 0x36, 0x2e, 0xd3, 0x64, 0x7e, 0x98, 0x43, 0xcb, 0xfd, 0x4a, 0x64, 0x5f, + 0x20, 0xd4, 0xda, 0xa4, 0x44, 0x22, 0x3e, 0x7f, 0x4b, 0xb8, 0xfc, 0x21, 0x07, 0x57, 0x59, 0x2a, + 0xae, 0xc9, 0x2d, 0xaa, 0xc1, 0x86, 0x06, 0xac, 0x3e, 0x37, 0xaf, 0xb8, 0x9e, 0x76, 0xdf, 0xcc, + 0xb1, 0xf4, 0xf4, 0xa8, 0x76, 0x21, 0x91, 0x1e, 0x8b, 0x66, 0x26, 0xbf, 0x86, 0x6d, 0x39, 0x3b, + 0x1a, 0xcd, 0x7c, 0xdc, 0x05, 0x13, 0x40, 0x3f, 0x79, 0x0b, 0xe0, 0x72, 0x2e, 0x09, 0xfe, 0xdf, + 0x70, 0xa6, 0x14, 0x58, 0xeb, 0x0e, 0xfb, 0x3c, 0x66, 0xbd, 0x1e, 0x26, 0xf5, 0x9a, 0xab, 0x0b, + 0x58, 0xdc, 0xda, 0x90, 0x2a, 0x05, 0x84, 0x82, 0x54, 0xc4, 0x37, 0xe9, 0xac, 0x21, 0x75, 0xa3, + 0x0b, 0xdb, 0xa8, 0x61, 0xea, 0xeb, 0xa3, 0xda, 0xc7, 0xdd, 0x30, 0xb1, 0xd3, 0xfd, 0x7d, 0xfa, + 0xe8, 0xe7, 0x64, 0xec, 0xe9, 0xde, 0xd8, 0x19, 0xf4, 0xa4, 0x27, 0xfa, 0xf1, 0x78, 0x19, 0x4d, + 0xa0, 0x2d, 0x82, 0x86, 0x14, 0x2c, 0x8e, 0xff, 0xcf, 0x1c, 0x7a, 0x88, 0x26, 0x48, 0xde, 0x4e, + 0xb7, 0xdf, 0xa3, 0x98, 0xed, 0x29, 0x27, 0xed, 0xf9, 0xf1, 0x1c, 0xed, 0xb1, 0x63, 0xd7, 0xfe, + 0x5e, 0x95, 0xfe, 0x52, 0x78, 0x18, 0xa3, 0x2a, 0xf9, 0xa4, 0x44, 0x37, 0x34, 0x2a, 0x73, 0xfb, + 0x6c, 0xf6, 0xf4, 0x8d, 0x74, 0xff, 0x2d, 0x3d, 0x7a, 0x25, 0xa7, 0x51, 0xda, 0xf0, 0x54, 0xfa, + 0xf8, 0xb8, 0x2f, 0xd8, 0x19, 0x86, 0x64, 0xdc, 0xb0, 0xc9, 0x5b, 0xda, 0x99, 0xf1, 0xcc, 0xed, + 0xe1, 0xcc, 0x58, 0x0c, 0xb3, 0x49, 0x92, 0x21, 0x3d, 0xd1, 0x7f, 0x27, 0xda, 0x8d, 0xc5, 0xba, + 0x53, 0x17, 0xd3, 0xfd, 0xb7, 0xb4, 0xbe, 0xcf, 0xb2, 0xa3, 0x51, 0xfd, 0x5a, 0xb7, 0x3c, 0x47, + 0x2b, 0xf8, 0xff, 0x91, 0x43, 0x4b, 0xfd, 0x01, 0xaf, 0xd5, 0xac, 0x47, 0x48, 0xb3, 0x1e, 0xcd, + 0x9b, 0x3e, 0x16, 0x4e, 0xad, 0xca, 0xa9, 0xd2, 0x20, 0x27, 0xd8, 0xf2, 0x89, 0xbf, 0xa3, 0x6d, + 0x38, 0xd2, 0x9d, 0xee, 0xbe, 0x95, 0x53, 0x7b, 0x3d, 0xd6, 0x9d, 0x99, 0x99, 0x49, 0x9f, 0x9d, + 0xd4, 0x66, 0x4e, 0x60, 0x59, 0x21, 0xe0, 0x69, 0x55, 0x42, 0xfa, 0x89, 0xab, 0xfa, 0xc0, 0x24, + 0x00, 0x61, 0x60, 0xf2, 0xab, 0x8d, 0x81, 0x43, 0x53, 0xa9, 0xe9, 0xcb, 0xa9, 0xf8, 0x80, 0x49, + 0xb3, 0xd6, 0xd9, 0xa4, 0x0f, 0x0d, 0xa7, 0xbe, 0x3e, 0x4b, 0x79, 0xd6, 0x50, 0xb7, 0x7e, 0xe2, + 0xaa, 0x6c, 0xab, 0x0d, 0xff, 0x05, 0x87, 0x16, 0x87, 0x23, 0xee, 0x48, 0x47, 0xb8, 0x7c, 0x35, + 0x61, 0x16, 0x67, 0x38, 0x55, 0xfa, 0x95, 0x40, 0x61, 0xa2, 0xcc, 0x72, 0x39, 0x28, 0x24, 0x73, + 0x70, 0x06, 0x3e, 0x9d, 0x72, 0xbd, 0xd4, 0xec, 0x6a, 0xd8, 0x3c, 0x9b, 0x8c, 0xc9, 0x3b, 0x1a, + 0x1a, 0xe0, 0x57, 0x5d, 0xfd, 0xd6, 0x7a, 0x0a, 0xdc, 0x24, 0x6d, 0xdd, 0x21, 0xd7, 0x13, 0xd6, + 0xe0, 0x6a, 0x76, 0x49, 0x5b, 0x5d, 0x6f, 0x4b, 0xcd, 0xae, 0xed, 0x0d, 0xdf, 0xd4, 0xbe, 0x18, + 0xfa, 0x89, 0x5c, 0x6c, 0xe4, 0x96, 0x97, 0xd0, 0xcc, 0x72, 0xb1, 0x91, 0x57, 0x5e, 0x0c, 0x59, + 0xe5, 0x65, 0xf6, 0x9c, 0x32, 0xad, 0x15, 0xde, 0xc7, 0x61, 0x5b, 0x0d, 0x95, 0x3f, 0xca, 0xec, + 0xe3, 0x14, 0x66, 0xdf, 0xc7, 0xf5, 0xb3, 0xd7, 0xf5, 0x93, 0x57, 0xc9, 0x3e, 0x4e, 0xd3, 0xf9, + 0x0e, 0x54, 0x4a, 0x17, 0x23, 0x61, 0x92, 0x8f, 0x11, 0x12, 0x4d, 0x98, 0xfd, 0xb2, 0x70, 0xf1, + 0x19, 0x76, 0x8d, 0x9b, 0x2c, 0xb2, 0xb2, 0xc3, 0xef, 0x55, 0x42, 0x6d, 0xee, 0x03, 0xeb, 0x02, + 0x9d, 0xe4, 0x6f, 0xd5, 0x37, 0xb5, 0x0f, 0x87, 0x56, 0xc9, 0xc5, 0x06, 0x5c, 0x5e, 0x42, 0x13, + 0xe4, 0xbf, 0x90, 0x59, 0x7a, 0xfc, 0x5f, 0x71, 0xe8, 0x61, 0x77, 0x47, 0x24, 0xb0, 0x59, 0xf1, + 0x63, 0xf1, 0x47, 0x01, 0x5e, 0x86, 0xe7, 0x4b, 0xb8, 0xfc, 0x71, 0x22, 0x99, 0x51, 0x46, 0x3d, + 0x17, 0x96, 0x18, 0xb1, 0xed, 0x73, 0x20, 0xb3, 0x91, 0x45, 0xac, 0xdd, 0xfc, 0x42, 0x9b, 0x38, + 0xad, 0x8d, 0x8e, 0xc3, 0xac, 0xaa, 0x76, 0xc0, 0x88, 0x13, 0x91, 0xad, 0xda, 0xa1, 0x0d, 0x7c, + 0x69, 0xa2, 0xa5, 0xa7, 0x87, 0x00, 0x33, 0x3d, 0xd2, 0x63, 0x20, 0xa7, 0xa6, 0x07, 0x59, 0xc2, + 0x30, 0x4f, 0x52, 0xf1, 0x89, 0xcc, 0xe0, 0x4d, 0x6d, 0xe8, 0xa4, 0x3c, 0x57, 0x75, 0xf0, 0xdc, + 0x29, 0x8e, 0x28, 0xed, 0xc1, 0x36, 0x77, 0x44, 0x29, 0x5f, 0x53, 0x58, 0x9c, 0x71, 0xf9, 0xc3, + 0x11, 0xbc, 0x8e, 0x9a, 0x29, 0x9e, 0x33, 0xe0, 0xdf, 0xe3, 0x6b, 0xa9, 0xf5, 0xab, 0x52, 0xab, + 0x60, 0x66, 0x16, 0x77, 0xcd, 0x51, 0x44, 0x2a, 0x9e, 0x88, 0x84, 0x3a, 0x14, 0xfd, 0xd4, 0x8d, + 0x6a, 0x07, 0x5b, 0xc5, 0xcc, 0xe1, 0x4f, 0xb5, 0x23, 0xe3, 0x78, 0x87, 0xea, 0x1b, 0xf6, 0xd1, + 0x12, 0xaa, 0x1d, 0x20, 0xc4, 0x18, 0xdf, 0xfa, 0xf8, 0x98, 0x7e, 0xee, 0x36, 0x55, 0x70, 0xcc, + 0xa2, 0xf8, 0x7f, 0xcf, 0xa1, 0x12, 0xb2, 0x11, 0xbb, 0xfc, 0x7b, 0x02, 0xe5, 0x4f, 0xcc, 0x2f, + 0x84, 0xd5, 0x1b, 0x88, 0xb0, 0xe3, 0x1c, 0xe1, 0x54, 0xe9, 0x10, 0x27, 0x58, 0xf9, 0xc5, 0x03, + 0xb8, 0x33, 0xbb, 0x0d, 0x59, 0x08, 0xe4, 0x05, 0x52, 0x62, 0xb5, 0x03, 0x56, 0xb4, 0x12, 0xde, + 0xbd, 0xab, 0x23, 0xd4, 0xb6, 0x6e, 0x9f, 0xb2, 0x7b, 0x6f, 0x20, 0xd0, 0xba, 0xcb, 0xd7, 0xee, + 0x6e, 0xc1, 0xda, 0xb4, 0xaf, 0xd3, 0xd7, 0xa6, 0x78, 0x5b, 0x14, 0x00, 0xa4, 0x27, 0xfa, 0xd9, + 0xcc, 0x7a, 0xdf, 0xc9, 0x4c, 0xb4, 0x57, 0x3f, 0x3d, 0x95, 0x55, 0xfb, 0xb4, 0xa9, 0x5b, 0xa9, + 0xf8, 0x80, 0x36, 0x1c, 0xc3, 0xaa, 0x1e, 0x61, 0x69, 0x5a, 0x12, 0xeb, 0x31, 0xb2, 0x55, 0x0b, + 0x7e, 0x17, 0x2a, 0x6e, 0x0f, 0x78, 0x3b, 0xda, 0x14, 0x57, 0x5d, 0xb9, 0x83, 0xcc, 0x66, 0xa7, + 0x2a, 0xbd, 0x26, 0x98, 0x40, 0x53, 0x3b, 0x19, 0x1f, 0xd3, 0xce, 0x9d, 0x72, 0xd5, 0x55, 0x3a, + 0x25, 0xfd, 0xe6, 0xb4, 0x76, 0xe4, 0x22, 0xcc, 0x00, 0xfd, 0xd4, 0x0d, 0x48, 0xc9, 0xcc, 0x7c, + 0x9e, 0xbe, 0x32, 0xed, 0xd0, 0x12, 0x17, 0xb4, 0xe4, 0xc1, 0x2a, 0xd9, 0xcc, 0xcf, 0xff, 0x0e, + 0x2d, 0x23, 0xa5, 0x59, 0x1a, 0xf3, 0x93, 0xa4, 0x98, 0x9d, 0xaa, 0xd4, 0x24, 0xe4, 0x24, 0x89, + 0x92, 0x36, 0x95, 0xd4, 0x7a, 0x2f, 0x9b, 0xaa, 0x31, 0x48, 0x63, 0x86, 0xa6, 0xaf, 0x5f, 0x3c, + 0x9c, 0x99, 0x3a, 0x44, 0x3b, 0x09, 0xa6, 0x29, 0x16, 0x36, 0x3e, 0x49, 0x68, 0xd1, 0x64, 0xa5, + 0x51, 0x72, 0x0e, 0x49, 0xde, 0x87, 0x96, 0xfb, 0xc2, 0xce, 0x40, 0x7b, 0xbb, 0xa9, 0x32, 0x97, + 0x57, 0x90, 0x15, 0xf3, 0x73, 0x55, 0xfa, 0xa9, 0x90, 0x9b, 0x66, 0xe9, 0x33, 0x09, 0xad, 0xf7, + 0x73, 0xad, 0xf7, 0x1a, 0x94, 0x5d, 0xcd, 0x2c, 0x0a, 0xb3, 0xa4, 0xdc, 0xbc, 0xfc, 0x26, 0x54, + 0xea, 0x55, 0xc2, 0x9e, 0x90, 0x8f, 0xd8, 0x4a, 0xca, 0x9f, 0x22, 0xed, 0xfc, 0x91, 0x2a, 0x3d, + 0x29, 0xb0, 0x70, 0x43, 0x8b, 0x4e, 0x4f, 0xe2, 0x9d, 0x51, 0x1f, 0x1a, 0xca, 0xdc, 0xbe, 0x2a, + 0xb3, 0x08, 0xfc, 0x65, 0x0e, 0x2d, 0xa7, 0xb3, 0xca, 0xe9, 0x8e, 0x28, 0x2d, 0x81, 0xd0, 0x81, + 0xf2, 0x1f, 0x11, 0x62, 0xbf, 0x55, 0xa5, 0xfd, 0x42, 0x6e, 0x9a, 0xa8, 0x58, 0x4a, 0x52, 0xdf, + 0x67, 0x44, 0xb9, 0x9f, 0xce, 0x7c, 0xdc, 0x85, 0x65, 0xc8, 0xc4, 0x20, 0xd6, 0xd5, 0xfb, 0x0e, + 0x99, 0xd6, 0x07, 0x68, 0x9d, 0x7e, 0x7a, 0x0a, 0x2f, 0x83, 0xe9, 0xc4, 0x9d, 0x68, 0x17, 0xf4, + 0x78, 0xe5, 0xee, 0x0e, 0x5f, 0x9b, 0x57, 0x09, 0xad, 0xf3, 0xb5, 0x07, 0x03, 0xa1, 0x88, 0x12, + 0xaa, 0x32, 0x18, 0x81, 0x89, 0x2b, 0xe7, 0x96, 0xcb, 0x37, 0xa0, 0x12, 0x5f, 0x78, 0x57, 0x78, + 0xaf, 0x3b, 0xa4, 0x78, 0xcb, 0x7f, 0x4c, 0x3a, 0x95, 0x28, 0x9d, 0x16, 0x54, 0x7c, 0x92, 0xe9, + 0xce, 0x6b, 0xa9, 0xc4, 0x67, 0xf9, 0xdd, 0x29, 0x17, 0xfb, 0xc2, 0x4d, 0x04, 0x99, 0xdf, 0x85, + 0x10, 0x96, 0x5c, 0x61, 0x9d, 0x97, 0x3f, 0x4d, 0x5a, 0x4c, 0x46, 0x89, 0x01, 0x8b, 0x6b, 0xd9, + 0x29, 0x82, 0xf7, 0xe4, 0xa3, 0x97, 0xf5, 0xd3, 0x53, 0x16, 0x02, 0x24, 0x6b, 0x7d, 0x67, 0x60, + 0x79, 0xc9, 0x4c, 0x5e, 0xfe, 0x63, 0x0e, 0x2d, 0x83, 0x06, 0x9a, 0xfd, 0xfa, 0x0c, 0x29, 0xe5, + 0x77, 0xaa, 0xf4, 0x5b, 0x21, 0x27, 0x49, 0xf4, 0x69, 0x33, 0x1f, 0xe4, 0x34, 0xd9, 0xe0, 0x6f, + 0x09, 0xa3, 0x9b, 0x08, 0x7b, 0x99, 0xbf, 0xbf, 0xad, 0xf2, 0xd7, 0x79, 0xda, 0x02, 0x1d, 0x5e, + 0xa8, 0x60, 0xb5, 0xa9, 0x1c, 0xa7, 0x3f, 0x49, 0xc8, 0x39, 0x45, 0xf3, 0x7f, 0xcb, 0xa1, 0x65, + 0x04, 0x59, 0xf2, 0x78, 0x02, 0x1d, 0xfe, 0x88, 0xab, 0xae, 0xbc, 0x92, 0x54, 0xf4, 0x9f, 0x71, + 0xaa, 0x34, 0xc3, 0x09, 0x39, 0x89, 0xe2, 0xa7, 0x54, 0x26, 0xb7, 0x8c, 0x14, 0x89, 0x63, 0x99, + 0xeb, 0x1f, 0x6b, 0x43, 0x37, 0x5d, 0x75, 0xb6, 0x92, 0xee, 0x44, 0xbb, 0xa1, 0xb6, 0xda, 0x91, + 0x0b, 0x99, 0x83, 0x33, 0x78, 0x70, 0x09, 0xa7, 0x36, 0xf1, 0xb5, 0xc3, 0x13, 0x99, 0xa9, 0xae, + 0x3b, 0xd1, 0xee, 0xf4, 0x95, 0x2e, 0x90, 0xe7, 0xb5, 0xd1, 0x84, 0x7e, 0x66, 0x2a, 0x15, 0x3f, + 0x9a, 0x9e, 0xbe, 0x90, 0x8a, 0x47, 0x41, 0xec, 0x27, 0xe5, 0x43, 0x0e, 0x2c, 0xed, 0x45, 0x2d, + 0xf1, 0x1f, 0xd0, 0xd3, 0x89, 0x2f, 0xd3, 0x93, 0x63, 0x26, 0xf7, 0x61, 0x69, 0xcb, 0x39, 0x95, + 0xe7, 0x65, 0xb4, 0xa4, 0x5d, 0x09, 0x87, 0xdd, 0x2d, 0x4a, 0x79, 0x15, 0x69, 0xe4, 0x4b, 0xaa, + 0xf4, 0x13, 0xc1, 0x80, 0x19, 0xd6, 0x23, 0x10, 0x1c, 0xb4, 0x64, 0xb7, 0x16, 0x8f, 0xe3, 0x55, + 0x3f, 0xd2, 0xa3, 0x5d, 0xba, 0x96, 0xb9, 0x7e, 0x59, 0x1b, 0xbc, 0xa0, 0x9d, 0xbd, 0xa8, 0x5d, + 0x3b, 0x91, 0xbe, 0x94, 0x90, 0x8d, 0x4c, 0xfc, 0x56, 0xb4, 0xc4, 0x17, 0xde, 0xe6, 0xdb, 0xaf, + 0x78, 0xcb, 0x05, 0x32, 0x31, 0x45, 0x55, 0x5a, 0x27, 0x18, 0x30, 0xf1, 0x47, 0x98, 0x95, 0x4c, + 0x5e, 0xcd, 0x5f, 0x16, 0xfa, 0xcd, 0x9b, 0xd9, 0x83, 0x94, 0x27, 0xcb, 0x06, 0x3a, 0xbf, 0x1b, + 0x19, 0xe6, 0x55, 0x97, 0xbb, 0x5d, 0x0e, 0xb4, 0x29, 0xe5, 0xcf, 0x92, 0x8a, 0x6e, 0x54, 0xa5, + 0x17, 0x85, 0x9c, 0x24, 0xf1, 0xc7, 0xee, 0x7d, 0xe1, 0xf4, 0x48, 0x8f, 0xcf, 0xdd, 0xee, 0x08, + 0x05, 0xda, 0x94, 0x6a, 0x07, 0x9d, 0x18, 0x64, 0x0f, 0x52, 0x5a, 0xa9, 0x4a, 0x26, 0xe7, 0x64, + 0xe3, 0x2f, 0x15, 0xa1, 0xa5, 0xb0, 0x68, 0x64, 0xb7, 0xbf, 0x45, 0x09, 0x97, 0x57, 0x17, 0x96, + 0xe5, 0x61, 0xad, 0x50, 0x96, 0x03, 0xa8, 0xb5, 0x7f, 0xcd, 0xa9, 0xd2, 0x7f, 0xe4, 0x04, 0x5b, + 0x7e, 0xf1, 0x5f, 0x72, 0xec, 0x92, 0xc3, 0xd2, 0xd7, 0x95, 0xae, 0x4c, 0xec, 0xa0, 0x76, 0xf6, + 0x3a, 0x48, 0x79, 0x95, 0xda, 0xcc, 0x07, 0xe6, 0x42, 0xb5, 0x76, 0xcb, 0x54, 0xfc, 0x38, 0x4b, + 0x06, 0xa6, 0x0d, 0x9e, 0xe6, 0x40, 0x0d, 0x34, 0x48, 0xbd, 0x3f, 0xaa, 0x8f, 0xf6, 0x83, 0xd1, + 0x6c, 0x36, 0x79, 0xd6, 0x9e, 0x61, 0x20, 0x37, 0x4f, 0x7a, 0xfa, 0x8c, 0x7e, 0x61, 0x38, 0x95, + 0x38, 0x0b, 0x56, 0x22, 0xd8, 0xa2, 0x8c, 0xcc, 0x31, 0x5a, 0x4b, 0xf2, 0xa9, 0x0d, 0x7d, 0x8a, + 0x67, 0x11, 0x91, 0x38, 0xf4, 0x73, 0x07, 0xb3, 0x67, 0x86, 0xab, 0x64, 0x5b, 0xab, 0x56, 0xbf, + 0x8c, 0x4a, 0x19, 0xcb, 0x0d, 0xbf, 0x02, 0x2d, 0x68, 0x55, 0x0e, 0x80, 0xc5, 0x58, 0xc6, 0x3f, + 0xf9, 0x95, 0x68, 0x51, 0xa7, 0xbb, 0xad, 0x83, 0xda, 0x78, 0x65, 0xf8, 0xd8, 0x58, 0xf4, 0x12, + 0xb7, 0xfa, 0x2d, 0xb4, 0xcc, 0x6e, 0x19, 0x29, 0x90, 0x7b, 0x03, 0x9b, 0xbb, 0x80, 0x88, 0x5e, + 0xbb, 0x65, 0x7b, 0x30, 0xdc, 0xd8, 0xd6, 0xd1, 0xe2, 0xf3, 0xb3, 0xa4, 0xdf, 0x41, 0x2b, 0x72, + 0xcd, 0x0d, 0xdf, 0x1f, 0xf1, 0xed, 0xa8, 0x94, 0xd1, 0x5d, 0x0b, 0xd0, 0x15, 0xec, 0x74, 0x57, + 0x16, 0xd2, 0x2b, 0x58, 0x82, 0x3f, 0x45, 0xcb, 0xec, 0xd2, 0xc9, 0xfd, 0x74, 0xe3, 0xc6, 0x57, + 0x55, 0x69, 0x23, 0x7a, 0x49, 0x30, 0x4c, 0xf7, 0x62, 0x0d, 0xd8, 0xaa, 0x59, 0xc1, 0x19, 0x0c, + 0xd9, 0xa9, 0xc4, 0x20, 0x28, 0xec, 0xec, 0x02, 0xae, 0xd8, 0x81, 0x1e, 0x2c, 0x30, 0x85, 0x79, + 0x1e, 0x2d, 0xdc, 0xed, 0x7b, 0x3f, 0x5c, 0xce, 0x39, 0x16, 0x54, 0x96, 0xc8, 0xe4, 0x37, 0x2f, + 0xa0, 0x15, 0x86, 0x1d, 0xd7, 0xbb, 0x3d, 0xe4, 0x24, 0xd2, 0x6e, 0x11, 0x49, 0xcf, 0x83, 0x57, + 0xfc, 0x0f, 0xcb, 0xd1, 0x42, 0xdc, 0x4e, 0xfe, 0x25, 0xb4, 0x18, 0x6b, 0x29, 0xe6, 0x31, 0x82, + 0x43, 0x95, 0x1e, 0x17, 0x28, 0x48, 0x7c, 0x10, 0xa4, 0x96, 0x54, 0xe2, 0x98, 0x21, 0xea, 0xb9, + 0xea, 0x64, 0x9a, 0xc8, 0xbf, 0x8c, 0x96, 0xf8, 0xfc, 0x7e, 0x25, 0xe4, 0x6a, 0xa4, 0xe7, 0x03, + 0xc4, 0xf6, 0x6d, 0xc0, 0xc4, 0x07, 0x20, 0x2f, 0xb1, 0x90, 0x1d, 0x4b, 0xc5, 0xa7, 0x5d, 0x8d, + 0xb2, 0x91, 0xc6, 0xbf, 0x83, 0x96, 0x1a, 0x04, 0x89, 0x5e, 0x00, 0x87, 0x02, 0x2f, 0xaa, 0xd2, + 0xf3, 0x82, 0x2d, 0x41, 0xfc, 0x91, 0x3e, 0x9a, 0xd0, 0xce, 0x1f, 0xa5, 0x76, 0xc2, 0x89, 0x53, + 0xe9, 0xcf, 0x3f, 0x4e, 0xc5, 0xbf, 0x30, 0xb5, 0x23, 0xba, 0x1d, 0xd8, 0xf2, 0xf0, 0xcf, 0xa2, + 0x05, 0xce, 0xc6, 0x1d, 0xc4, 0xb4, 0x5f, 0x06, 0xa6, 0x4a, 0xfc, 0x2d, 0x2e, 0x87, 0xfa, 0x38, + 0x1b, 0x77, 0x50, 0x41, 0x15, 0x43, 0xf9, 0xb5, 0x68, 0x41, 0xbb, 0xd2, 0x4e, 0x8c, 0xf7, 0x65, + 0xb5, 0x8f, 0xa9, 0xd2, 0x23, 0x02, 0xfe, 0x16, 0x79, 0xb3, 0xf2, 0xda, 0xc4, 0x69, 0x03, 0xbf, + 0x5d, 0x69, 0xe7, 0x5f, 0x42, 0x0b, 0x36, 0x37, 0xee, 0x20, 0x46, 0xfb, 0xb2, 0xda, 0xa7, 0x55, + 0xe9, 0x29, 0x01, 0x7f, 0x8b, 0x8f, 0x01, 0xfe, 0x66, 0x83, 0x38, 0x5b, 0xc3, 0xf5, 0x32, 0x46, + 0xe1, 0x87, 0x2c, 0xf5, 0x0f, 0x0c, 0xf4, 0xfb, 0x54, 0x29, 0x62, 0x6a, 0x7f, 0xef, 0x01, 0x01, + 0x18, 0x74, 0x83, 0x46, 0x9f, 0x7e, 0xf1, 0x96, 0x3e, 0x30, 0xa9, 0x25, 0xb1, 0x2c, 0x9a, 0x4a, + 0xc6, 0xd3, 0xc9, 0x4f, 0xb4, 0xc9, 0x91, 0xd4, 0xad, 0xfe, 0xf4, 0x48, 0xcf, 0x6c, 0xb2, 0xdf, + 0xd2, 0x06, 0xab, 0x1d, 0x44, 0xa1, 0xab, 0x27, 0x3f, 0x0d, 0x75, 0xaf, 0xda, 0xb1, 0x49, 0x72, + 0x6d, 0xad, 0xaf, 0xab, 0x76, 0xcc, 0xa1, 0xdb, 0x49, 0x68, 0xf1, 0xfb, 0x01, 0xbf, 0x62, 0x9a, + 0xf9, 0xab, 0x54, 0xe9, 0x69, 0x61, 0x21, 0x06, 0x89, 0x6b, 0x68, 0xfb, 0x87, 0xb0, 0x8a, 0xaf, + 0xc5, 0x12, 0xb9, 0x3d, 0x4e, 0x33, 0xf2, 0x7f, 0x89, 0x4a, 0xf1, 0x6c, 0xd8, 0x1c, 0x0a, 0x74, + 0x04, 0x5d, 0x75, 0xd4, 0x64, 0xff, 0xb6, 0x2a, 0xbd, 0x29, 0xb0, 0x70, 0xf1, 0x75, 0x2a, 0xfd, + 0xf6, 0x47, 0xb5, 0x6b, 0xe7, 0xd3, 0x23, 0x3d, 0x0d, 0x46, 0x9a, 0xc3, 0x55, 0x57, 0xed, 0x60, + 0x29, 0x57, 0xa6, 0xa6, 0x7b, 0x9d, 0x12, 0x2d, 0x7d, 0x46, 0xd5, 0xae, 0x9d, 0x4f, 0x25, 0x06, + 0x4d, 0x52, 0x55, 0x32, 0x4b, 0x96, 0xdf, 0xc4, 0x9e, 0x82, 0x81, 0x15, 0xbf, 0x52, 0x95, 0x7e, + 0xcc, 0x9e, 0x82, 0x95, 0xe7, 0x94, 0x6c, 0x0a, 0xba, 0xec, 0x69, 0xd7, 0x06, 0xb4, 0x60, 0x67, + 0xa3, 0x93, 0xd8, 0xec, 0xe9, 0x2c, 0xc6, 0xdf, 0xe2, 0xaa, 0x9c, 0xbc, 0x3b, 0x1b, 0x9d, 0x0e, + 0x57, 0x9d, 0x8c, 0xd3, 0xf8, 0x77, 0xcc, 0x73, 0x9f, 0xa5, 0x96, 0x16, 0x60, 0x9c, 0xfb, 0xbc, + 0xc0, 0x66, 0x84, 0xd3, 0x1f, 0xcb, 0x6a, 0x72, 0xeb, 0xb6, 0x76, 0xf3, 0xfc, 0x6c, 0x32, 0xa6, + 0xdf, 0xbc, 0xa6, 0x8d, 0x7e, 0x89, 0x3b, 0xf6, 0xc8, 0x45, 0xed, 0xe6, 0xf9, 0xf4, 0x44, 0xbf, + 0x79, 0x36, 0xd4, 0x80, 0x16, 0x07, 0xdd, 0xe1, 0xf0, 0x3e, 0x6f, 0x79, 0x99, 0x75, 0x38, 0x44, + 0x41, 0x62, 0x95, 0x36, 0x79, 0x1e, 0x93, 0x32, 0xec, 0xc0, 0xda, 0xd4, 0xa1, 0xf4, 0xc5, 0xae, + 0x6a, 0x07, 0xb5, 0x1c, 0x81, 0x49, 0xf4, 0xca, 0x47, 0xda, 0xd4, 0x21, 0x99, 0x66, 0xe1, 0xdf, + 0x45, 0x64, 0x54, 0x89, 0x25, 0xbe, 0xac, 0xd6, 0xa5, 0x4a, 0x9b, 0x04, 0x3a, 0x80, 0xe2, 0x4f, + 0x73, 0x06, 0x9a, 0x9c, 0xd3, 0xb0, 0x03, 0xf2, 0x8a, 0xc3, 0x32, 0x67, 0x13, 0x49, 0x08, 0x76, + 0x9b, 0x54, 0x62, 0xd0, 0x29, 0xc9, 0x84, 0x2c, 0x2f, 0xa1, 0x62, 0xaf, 0xd2, 0xe9, 0xc3, 0xcc, + 0x01, 0x4c, 0xf5, 0xb5, 0x3f, 0x56, 0xa5, 0x0a, 0xc1, 0x04, 0x8a, 0x0f, 0x39, 0x25, 0x87, 0xb1, + 0x44, 0x33, 0x93, 0x5f, 0x6b, 0x97, 0x0e, 0xbb, 0xea, 0xb4, 0xa1, 0x9b, 0xb2, 0x89, 0xc1, 0x2b, + 0x68, 0x19, 0x1e, 0x58, 0x43, 0x75, 0x75, 0xd5, 0x81, 0x4d, 0xbf, 0x16, 0x33, 0x4f, 0x21, 0x27, + 0x49, 0xac, 0xa4, 0x75, 0x36, 0x84, 0x37, 0xda, 0xdb, 0x44, 0x09, 0xa5, 0xf3, 0xc9, 0x90, 0x13, + 0xed, 0x39, 0x79, 0x0f, 0x2a, 0x26, 0x10, 0xcc, 0x73, 0x1e, 0x20, 0x05, 0x6c, 0x56, 0xa5, 0x3a, + 0xc1, 0x04, 0x8a, 0x2f, 0xd1, 0x65, 0x48, 0x4c, 0x10, 0x86, 0xa4, 0xaa, 0xc5, 0x7a, 0xb5, 0xe1, + 0xcf, 0x9c, 0x3b, 0xb7, 0xad, 0x73, 0xd5, 0x39, 0x19, 0xf2, 0xa6, 0xc0, 0xef, 0xdc, 0xb9, 0x4d, + 0x36, 0x69, 0xf0, 0xcd, 0x50, 0x08, 0x39, 0x38, 0xe5, 0x2d, 0x01, 0xcd, 0x04, 0x8a, 0x55, 0xb4, + 0xfe, 0xe4, 0xd4, 0xb4, 0xda, 0x01, 0x82, 0xb7, 0x36, 0xdc, 0x93, 0x8a, 0x7f, 0x8a, 0x65, 0x3f, + 0x26, 0x51, 0x36, 0x33, 0xf1, 0x3f, 0x43, 0x25, 0x94, 0x7b, 0x76, 0xbe, 0x40, 0xcd, 0xd8, 0x84, + 0x55, 0x5b, 0x50, 0x71, 0x05, 0x64, 0xf5, 0x05, 0x3b, 0x5f, 0xd0, 0x46, 0xaf, 0x6a, 0xe7, 0xa2, + 0xb2, 0x95, 0xc8, 0x6f, 0x42, 0xc5, 0x78, 0xb0, 0x48, 0xad, 0x56, 0x5a, 0x07, 0x84, 0x26, 0x50, + 0x7c, 0xd4, 0x9a, 0xb4, 0xa3, 0xe3, 0xe6, 0x7c, 0x30, 0xea, 0x61, 0xa0, 0xf1, 0x0a, 0x5a, 0x1c, + 0x71, 0x87, 0x5b, 0x5d, 0x75, 0xe5, 0xab, 0x08, 0x95, 0x6d, 0xaa, 0xf4, 0x0b, 0x81, 0x82, 0xc4, + 0xd7, 0x68, 0xe5, 0x8d, 0x73, 0xb9, 0xd4, 0xf4, 0x34, 0x3d, 0x17, 0x4c, 0x4d, 0xf7, 0x6a, 0xa3, + 0xe3, 0xe9, 0xe3, 0x5f, 0x66, 0xa6, 0x6e, 0x82, 0x31, 0x9d, 0x1c, 0xa3, 0xcc, 0x64, 0xe2, 0x9f, + 0xd2, 0x72, 0x89, 0xe9, 0x4d, 0xa6, 0x94, 0xf8, 0x1d, 0x68, 0xe9, 0x1e, 0x37, 0xd6, 0xdb, 0x65, + 0xc5, 0x1d, 0x0e, 0xf8, 0x89, 0x05, 0x99, 0x9e, 0xd1, 0xd9, 0x12, 0xc4, 0x35, 0xa9, 0xf8, 0x91, + 0x54, 0xfc, 0xa8, 0x7e, 0xfe, 0x06, 0x2d, 0x9b, 0x48, 0xb9, 0xfa, 0xa9, 0x1b, 0x20, 0xe8, 0xca, + 0x36, 0x6c, 0xfe, 0x77, 0x08, 0x79, 0xf6, 0xba, 0x43, 0xd4, 0x66, 0xff, 0x30, 0x21, 0xfa, 0x6b, + 0x55, 0x7a, 0x47, 0x60, 0xc0, 0xe2, 0x36, 0xd8, 0x74, 0x32, 0x93, 0x63, 0x99, 0xeb, 0x78, 0x5a, + 0x81, 0x35, 0xaa, 0x71, 0x7b, 0x53, 0x73, 0xa3, 0xe4, 0xaa, 0xdb, 0x55, 0xfb, 0xd6, 0xae, 0xd7, + 0xb7, 0xef, 0x90, 0xf5, 0x58, 0xbf, 0x76, 0x75, 0x08, 0x17, 0x34, 0x3c, 0x98, 0x9a, 0x3e, 0x9d, + 0xb9, 0x7e, 0x0b, 0x23, 0xc9, 0xf5, 0x18, 0x07, 0xcf, 0x98, 0x5b, 0xd7, 0xb5, 0x58, 0xaf, 0x3e, + 0xda, 0x27, 0x33, 0xa4, 0x37, 0xbe, 0xa5, 0x4a, 0x3b, 0x51, 0xb3, 0x40, 0xb6, 0x5e, 0x71, 0x2b, + 0x3d, 0xb5, 0x86, 0x3d, 0xb6, 0x90, 0x24, 0xc0, 0x6e, 0x0a, 0x58, 0x6f, 0xf8, 0xf0, 0x33, 0xca, + 0xb4, 0x52, 0x71, 0xc2, 0x14, 0x5b, 0x30, 0x23, 0x84, 0x05, 0x59, 0xf1, 0xef, 0x96, 0xa1, 0x65, + 0x76, 0x83, 0x3a, 0xbf, 0xd3, 0xd4, 0x8b, 0x5d, 0x8d, 0x9d, 0xcf, 0x3b, 0x5d, 0x75, 0x32, 0xdd, + 0xe4, 0xab, 0x55, 0xa9, 0x4a, 0xc8, 0x4d, 0x13, 0x1f, 0xa2, 0xc2, 0x7d, 0x74, 0x1a, 0x83, 0x60, + 0x0a, 0xe9, 0xd7, 0x2e, 0xca, 0xb9, 0x88, 0xbc, 0x07, 0x2d, 0x0f, 0x2b, 0x21, 0xb2, 0x74, 0x0d, + 0xba, 0x45, 0xd6, 0xc1, 0x4a, 0x6e, 0x9a, 0xf8, 0x14, 0xd0, 0xa5, 0x60, 0x6a, 0x0b, 0x1f, 0xe9, + 0xc9, 0x29, 0x24, 0x27, 0x17, 0x2f, 0xa3, 0xb2, 0x76, 0xf7, 0x7e, 0xdc, 0x51, 0x8d, 0x01, 0x6f, + 0x43, 0x47, 0x3b, 0x11, 0x12, 0xca, 0xa0, 0xea, 0xf6, 0x14, 0x83, 0xc9, 0xa7, 0xe2, 0x47, 0xf4, + 0xd1, 0xa8, 0x76, 0xe9, 0x4a, 0x63, 0xc0, 0xab, 0x9f, 0xb8, 0x9a, 0x3d, 0x3c, 0x24, 0xdb, 0x11, + 0xf9, 0x9d, 0x84, 0x66, 0x13, 0x94, 0x84, 0x69, 0x82, 0x90, 0xb0, 0x5e, 0x95, 0x6a, 0x04, 0x7b, + 0x8a, 0xf8, 0x18, 0xed, 0x0c, 0x42, 0x30, 0x3d, 0xd2, 0x43, 0x93, 0x18, 0xba, 0x16, 0x32, 0x3f, + 0xc0, 0xa1, 0xa5, 0x8a, 0xdf, 0xbd, 0xbb, 0x4d, 0xd9, 0xd9, 0xe8, 0x74, 0xfa, 0x7d, 0x44, 0x9e, + 0x28, 0xae, 0xf5, 0xa9, 0xd2, 0x1e, 0xc1, 0x96, 0x20, 0xee, 0x64, 0xbf, 0x40, 0x8d, 0xd2, 0x92, + 0x51, 0x6d, 0x78, 0x6a, 0x67, 0xa3, 0xb3, 0xc6, 0xd9, 0xe0, 0x02, 0x13, 0x28, 0x9e, 0x74, 0xc9, + 0xa1, 0xca, 0xd4, 0xcc, 0xed, 0xcc, 0xc1, 0x99, 0xce, 0xa0, 0xa7, 0xc6, 0xe3, 0xf7, 0x01, 0x0c, + 0x6b, 0x09, 0xfa, 0xc9, 0xab, 0xda, 0x87, 0xe7, 0xf5, 0xaf, 0xba, 0xd2, 0xe3, 0x47, 0x21, 0x73, + 0x95, 0x6c, 0x2b, 0x85, 0x57, 0x70, 0x75, 0x7c, 0x4d, 0x1d, 0xbb, 0xfd, 0x4a, 0xc4, 0x55, 0x17, + 0x2e, 0x5f, 0x8c, 0xa5, 0xc0, 0x5a, 0x49, 0x95, 0x7e, 0x26, 0xd8, 0x12, 0xc4, 0xb5, 0x05, 0x8a, + 0x4d, 0xc5, 0x8f, 0x56, 0x83, 0xc8, 0x91, 0x9e, 0x39, 0xa6, 0x0d, 0x8c, 0x61, 0xd5, 0x71, 0x62, + 0x38, 0x3d, 0x73, 0xcc, 0x55, 0x27, 0xdb, 0x72, 0xf3, 0x51, 0x0e, 0x2d, 0x0d, 0x93, 0xaf, 0xa6, + 0x40, 0x47, 0xc8, 0xa3, 0x10, 0xc1, 0xa6, 0x54, 0x7c, 0x2c, 0x4f, 0x07, 0x63, 0x70, 0x6a, 0x7f, + 0xa6, 0x4a, 0xaf, 0x08, 0xb6, 0x6c, 0xe2, 0xb3, 0xd0, 0xd7, 0xb4, 0x2e, 0x66, 0x2d, 0x30, 0x03, + 0x01, 0x63, 0x2a, 0x29, 0x5e, 0x3f, 0xd8, 0xab, 0x1d, 0xfa, 0x4a, 0xb6, 0x65, 0xc5, 0x55, 0x58, + 0xe6, 0x0b, 0x37, 0x45, 0xdc, 0x11, 0x9f, 0xc7, 0x15, 0xdc, 0x16, 0xf0, 0x2a, 0x44, 0x98, 0x29, + 0xae, 0xfd, 0xa5, 0x2a, 0xed, 0x10, 0x72, 0x92, 0x44, 0x67, 0x81, 0x82, 0x4c, 0x8b, 0x4b, 0xf6, + 0xdc, 0x79, 0xed, 0x6c, 0x42, 0x9b, 0x1c, 0x71, 0x35, 0x9a, 0x87, 0xf1, 0x1b, 0x1d, 0x9b, 0xa4, + 0xad, 0x4d, 0xf5, 0x0e, 0x26, 0x4d, 0xce, 0x21, 0xca, 0xff, 0x53, 0xf4, 0xa0, 0xa7, 0xcd, 0xed, + 0x6b, 0xaf, 0xdf, 0x1f, 0xf4, 0x85, 0x14, 0x6f, 0x93, 0xe2, 0x09, 0xf8, 0xbd, 0x61, 0x22, 0x0b, + 0x95, 0xd5, 0x6e, 0x51, 0xa5, 0xd7, 0x85, 0x42, 0xe9, 0xe2, 0x86, 0x7b, 0xe8, 0x7a, 0x57, 0xa3, + 0x76, 0xf6, 0xbc, 0x7e, 0xfc, 0x86, 0x7e, 0xea, 0x46, 0xf6, 0xd4, 0x75, 0xb9, 0x10, 0x1d, 0xbe, + 0x15, 0xad, 0x68, 0xef, 0x68, 0x8b, 0xf8, 0xa8, 0x64, 0x43, 0x56, 0x23, 0x22, 0xe3, 0x4d, 0x6c, + 0x41, 0x79, 0x89, 0x62, 0x25, 0x6b, 0x42, 0xc5, 0x90, 0x6a, 0xb0, 0x3b, 0x10, 0x33, 0x03, 0x3d, + 0x9d, 0x26, 0x00, 0x39, 0x2f, 0x2f, 0xdf, 0x81, 0x8a, 0x3d, 0x3e, 0x6f, 0xa8, 0x29, 0xa2, 0x04, + 0x89, 0xb8, 0x54, 0x06, 0xbe, 0x21, 0x26, 0x50, 0xfc, 0x05, 0xd8, 0x8b, 0xb5, 0xbe, 0x43, 0xd9, + 0xde, 0x01, 0x0c, 0xd5, 0x27, 0x2e, 0x67, 0x4f, 0xdc, 0xa6, 0x2a, 0xb4, 0xb9, 0x63, 0xa6, 0x8f, + 0x5f, 0x48, 0x25, 0xae, 0x80, 0xdb, 0xc6, 0xf3, 0xeb, 0x5f, 0x7e, 0xe1, 0x4e, 0xb4, 0x4b, 0xeb, + 0xbd, 0x91, 0x9a, 0x3e, 0x09, 0x20, 0x71, 0xfd, 0xf3, 0x2f, 0x55, 0xc9, 0x26, 0x55, 0xfe, 0xf7, + 0xa8, 0xcc, 0xe0, 0x41, 0x41, 0xc6, 0xff, 0x81, 0x94, 0x6d, 0x4f, 0x11, 0xeb, 0xa9, 0x62, 0x65, + 0x70, 0x19, 0xf6, 0x4c, 0xa1, 0xd2, 0x17, 0xec, 0x7c, 0x7e, 0x1d, 0xde, 0x1f, 0xd7, 0x79, 0x3b, + 0xdc, 0x6d, 0x55, 0xd5, 0x58, 0x85, 0xee, 0x1f, 0x30, 0x6b, 0x85, 0x93, 0x01, 0x53, 0xb6, 0x53, + 0xb5, 0x73, 0xd2, 0x17, 0x48, 0x1f, 0x97, 0x15, 0xe4, 0xa4, 0x2f, 0xe4, 0x73, 0xd2, 0x17, 0x0a, + 0x72, 0xd2, 0x17, 0xf2, 0x39, 0x29, 0xd0, 0x5d, 0x56, 0x90, 0x93, 0xbe, 0x70, 0x17, 0x4e, 0xfa, + 0x42, 0x41, 0x4e, 0x0a, 0x85, 0x04, 0x4c, 0xc5, 0x03, 0xa4, 0xb3, 0x37, 0x55, 0xa9, 0xd9, 0x54, + 0x3c, 0x7e, 0x61, 0x3b, 0x7a, 0x21, 0x3b, 0x8d, 0x21, 0xf7, 0xe0, 0x95, 0x31, 0x74, 0x5a, 0x3f, + 0x7b, 0x9d, 0x26, 0x4e, 0xf7, 0xa4, 0xa6, 0x6f, 0x64, 0x6e, 0x1f, 0x4e, 0x8f, 0x1f, 0x4d, 0xc5, + 0x27, 0x60, 0xf3, 0x62, 0xf3, 0x99, 0x8a, 0xc5, 0xbf, 0xe4, 0xcc, 0x63, 0x1f, 0xb2, 0x22, 0x41, + 0x96, 0xfb, 0x90, 0x53, 0xa5, 0xf3, 0x9c, 0xc0, 0xa6, 0x88, 0x83, 0xd4, 0x10, 0xb7, 0x33, 0xe8, + 0x71, 0xfa, 0x7d, 0x36, 0xe6, 0x07, 0x63, 0xa3, 0x1f, 0x9f, 0xd2, 0x63, 0x5d, 0xd4, 0x2e, 0x42, + 0xd6, 0x04, 0x24, 0x47, 0x5a, 0x95, 0x9a, 0x50, 0xa0, 0x23, 0xa2, 0xd4, 0x28, 0x7e, 0x9f, 0xa6, + 0xc6, 0xc0, 0x95, 0x26, 0x17, 0xc3, 0xeb, 0x0b, 0x29, 0x9e, 0x08, 0x46, 0x31, 0xcd, 0xb3, 0x84, + 0x89, 0x60, 0x81, 0xe1, 0xf4, 0x54, 0x3e, 0xd5, 0x2a, 0x99, 0xad, 0x5d, 0xc5, 0x7f, 0xe5, 0xd0, + 0x52, 0x96, 0x77, 0xf1, 0x6f, 0xa1, 0x05, 0x7e, 0x65, 0x1f, 0x51, 0xba, 0x4b, 0xc5, 0x47, 0xf2, + 0x8f, 0xb3, 0xf7, 0x01, 0x36, 0xcc, 0x0a, 0x8c, 0x2a, 0x56, 0x14, 0x5e, 0xe5, 0x20, 0x08, 0x01, + 0x27, 0x93, 0x31, 0x22, 0xdf, 0x81, 0x96, 0x28, 0xfb, 0x7d, 0xe1, 0x88, 0xe2, 0xa5, 0x66, 0x09, + 0x47, 0x2e, 0xf9, 0x7a, 0x48, 0x36, 0xd9, 0x2f, 0xcc, 0x11, 0x23, 0x97, 0xf8, 0x6c, 0xa1, 0x92, + 0xec, 0x47, 0x56, 0xe9, 0x91, 0x1e, 0x5a, 0xa4, 0x91, 0xab, 0xa2, 0x01, 0xad, 0xc8, 0xa5, 0xcb, + 0x6f, 0x44, 0x0b, 0x7c, 0x5e, 0x6a, 0x5a, 0x00, 0x85, 0x0a, 0x7f, 0x8b, 0x6b, 0xd2, 0x67, 0xaf, + 0xeb, 0x83, 0x97, 0x73, 0x68, 0x1a, 0x5b, 0x43, 0x58, 0xc6, 0x48, 0x15, 0xdf, 0x70, 0xa8, 0xc4, + 0xec, 0x07, 0xbe, 0x11, 0x2d, 0x6c, 0x77, 0x87, 0x5b, 0x89, 0xd4, 0x51, 0x56, 0xfb, 0x53, 0x55, + 0x7a, 0x59, 0x20, 0x00, 0x71, 0x03, 0x74, 0x00, 0xdd, 0xda, 0xa0, 0xca, 0x50, 0x35, 0xb0, 0x55, + 0xd2, 0x46, 0x0c, 0x7e, 0x92, 0xbe, 0xd8, 0xa5, 0x5d, 0xba, 0xa2, 0x5d, 0x1d, 0x92, 0x49, 0x46, + 0x4c, 0x91, 0xa8, 0x32, 0x20, 0x6f, 0x00, 0x45, 0xa2, 0xb1, 0xce, 0x4b, 0x11, 0xf4, 0x2a, 0xd8, + 0x52, 0x4c, 0xd1, 0x96, 0x6a, 0x2f, 0x2e, 0xb4, 0xc8, 0x17, 0x74, 0xfa, 0x23, 0x54, 0xbe, 0x78, + 0x4e, 0x95, 0xd6, 0x0b, 0x00, 0x11, 0x9f, 0xb9, 0x4b, 0x2d, 0x5d, 0x8d, 0xa9, 0xf8, 0xa7, 0xfa, + 0x89, 0xab, 0x32, 0xe0, 0x57, 0xfc, 0x06, 0x95, 0xed, 0x08, 0xb6, 0x84, 0xdc, 0x58, 0xde, 0x68, + 0xf3, 0x79, 0x0e, 0xf0, 0xff, 0x04, 0x95, 0x86, 0x3b, 0x82, 0xc1, 0x40, 0x28, 0x42, 0xb8, 0x16, + 0x08, 0x5f, 0x64, 0x03, 0x64, 0xe1, 0x62, 0xb5, 0x7b, 0x5f, 0xd8, 0x51, 0xbf, 0xa5, 0x49, 0x1b, + 0x38, 0x9c, 0x4e, 0x5c, 0x49, 0x4f, 0x9c, 0x4c, 0x9f, 0xb8, 0x4c, 0x39, 0x56, 0xfd, 0x2f, 0x9b, + 0xeb, 0x1b, 0xea, 0xea, 0xeb, 0xfe, 0xb2, 0xa9, 0x59, 0x6a, 0xa8, 0x93, 0xe4, 0xba, 0x2a, 0x99, + 0xcd, 0x5a, 0xf1, 0x57, 0x08, 0x3d, 0x58, 0xc0, 0x5d, 0x81, 0xf7, 0xa0, 0xa2, 0xed, 0x4d, 0xb4, + 0xc0, 0x26, 0x55, 0x6a, 0x14, 0x8a, 0xb6, 0x37, 0x19, 0x6b, 0x1d, 0x46, 0x70, 0x7b, 0x13, 0x88, + 0x9c, 0x95, 0xd9, 0x13, 0xa3, 0xda, 0xc1, 0x21, 0x57, 0xdd, 0x3a, 0x7a, 0x82, 0x43, 0x3e, 0x31, + 0x0f, 0xa0, 0x56, 0x49, 0xea, 0x3e, 0x0a, 0xce, 0x4b, 0x14, 0xb7, 0x4a, 0x2e, 0xda, 0xde, 0xc4, + 0x4b, 0x68, 0x49, 0xa7, 0x12, 0x0a, 0x63, 0x2d, 0x18, 0xc6, 0xe3, 0x19, 0x55, 0xfa, 0x91, 0x60, + 0xc0, 0xc4, 0x47, 0x2c, 0xbf, 0x1a, 0x8b, 0x1d, 0x13, 0x1f, 0x08, 0xd9, 0xc0, 0xe1, 0x4f, 0x14, + 0x59, 0x8e, 0x6d, 0xee, 0x96, 0x70, 0xf9, 0x02, 0xb2, 0xb4, 0x9e, 0xbf, 0x07, 0x8f, 0x0c, 0x03, + 0x86, 0xb3, 0xc1, 0x99, 0x61, 0x92, 0x53, 0xa5, 0x38, 0x27, 0xb0, 0xf4, 0xc4, 0x71, 0xc3, 0xfb, + 0xe6, 0x6c, 0x5c, 0xeb, 0xfd, 0x32, 0xe2, 0x6e, 0xc9, 0x91, 0xb3, 0x59, 0xdf, 0x1c, 0x70, 0x61, + 0xa3, 0xe7, 0x82, 0x5f, 0x8e, 0x6b, 0xbd, 0x97, 0xd7, 0x12, 0xdb, 0xc4, 0xe1, 0x4f, 0xc1, 0xea, + 0x02, 0x9b, 0x18, 0x51, 0x00, 0xc1, 0x30, 0x63, 0xda, 0xeb, 0xb5, 0xc9, 0xf3, 0xe9, 0xc1, 0xab, + 0x60, 0xae, 0xd5, 0x26, 0x47, 0xb4, 0xbe, 0x1b, 0x11, 0x77, 0x4b, 0xb8, 0x12, 0x34, 0xfe, 0x8d, + 0x26, 0xbe, 0xe5, 0xeb, 0x08, 0x9e, 0x93, 0x90, 0x01, 0x0a, 0xac, 0x92, 0xd9, 0x7a, 0xf3, 0x4d, + 0xa8, 0x94, 0x76, 0x11, 0xd1, 0xd8, 0x16, 0x5a, 0xea, 0x0f, 0x0b, 0x17, 0x9f, 0x98, 0xb3, 0x8b, + 0x0d, 0x9f, 0x5c, 0x06, 0x9b, 0x1f, 0xe6, 0x50, 0x71, 0x98, 0x2e, 0x73, 0xea, 0xaf, 0x1a, 0x51, + 0xa5, 0xdf, 0x08, 0x26, 0x50, 0x54, 0xb4, 0x99, 0x0f, 0xb2, 0xd1, 0x7e, 0xfd, 0xe8, 0x27, 0x4e, + 0x5f, 0x9b, 0xaf, 0xa3, 0xdd, 0xb1, 0x1d, 0x0e, 0xd8, 0xe9, 0x7a, 0x24, 0x7e, 0x6e, 0xfa, 0xa9, + 0x1b, 0xb3, 0xc9, 0x58, 0xf3, 0x96, 0xfa, 0x54, 0x72, 0x24, 0x35, 0x3d, 0x98, 0x99, 0xba, 0x0c, + 0x3c, 0x00, 0x4e, 0x46, 0xc4, 0x54, 0xfc, 0x53, 0x57, 0x23, 0xb1, 0x47, 0x5f, 0x06, 0x1b, 0x3e, + 0x58, 0x00, 0x33, 0xd7, 0x2f, 0x64, 0x66, 0x66, 0xb4, 0x73, 0x87, 0x33, 0x63, 0x63, 0xb2, 0x59, + 0x20, 0xff, 0x6b, 0xb4, 0x94, 0x36, 0x7b, 0xab, 0xd2, 0xa9, 0xb4, 0x51, 0x6f, 0x58, 0x72, 0x50, + 0x60, 0x4b, 0x30, 0x5d, 0x04, 0x26, 0xfa, 0xd3, 0x89, 0x2b, 0x58, 0x3e, 0x23, 0xe7, 0xb5, 0xac, + 0x6b, 0x14, 0x78, 0x51, 0xc9, 0xb6, 0x6c, 0xfc, 0x39, 0x0e, 0x3d, 0xe2, 0x0b, 0x4b, 0x1d, 0x91, + 0x00, 0x5d, 0x99, 0x4e, 0xb6, 0xb4, 0x25, 0x44, 0x54, 0xdc, 0xa5, 0x4a, 0xbf, 0x12, 0xe6, 0xc6, + 0x12, 0x7f, 0xce, 0xca, 0xe9, 0x54, 0xbe, 0x19, 0x3a, 0x9d, 0xed, 0x1d, 0xb8, 0xd7, 0x2a, 0xcd, + 0x4d, 0x9b, 0x3f, 0xc8, 0xa1, 0x85, 0xee, 0x90, 0xe2, 0x26, 0x52, 0x6b, 0x81, 0x3d, 0xc5, 0x49, + 0xce, 0x7e, 0x42, 0x8a, 0xbb, 0xb6, 0x59, 0x95, 0xde, 0x10, 0x08, 0xae, 0xe8, 0xa2, 0xd4, 0xa7, + 0xaf, 0x6b, 0x89, 0x8f, 0xe1, 0xf4, 0x8a, 0xf5, 0x31, 0xae, 0xc4, 0xbd, 0xdf, 0x77, 0x33, 0x15, + 0x1f, 0xd0, 0x63, 0x87, 0xb5, 0xc9, 0x91, 0x6a, 0x87, 0xd6, 0x77, 0x86, 0x5d, 0xc5, 0x26, 0x7e, + 0x95, 0x4c, 0x08, 0xf2, 0xbf, 0x42, 0x8b, 0xe1, 0x00, 0x9a, 0x48, 0xad, 0xa5, 0xe2, 0xe3, 0x73, + 0xac, 0xbf, 0x6d, 0x04, 0x09, 0xcc, 0x3b, 0x34, 0x87, 0x58, 0x4e, 0xfd, 0x04, 0xc8, 0x81, 0x36, + 0x1c, 0x6e, 0x1b, 0xae, 0xce, 0x80, 0xc1, 0xb7, 0xa2, 0xb2, 0x0e, 0x96, 0x2d, 0x12, 0x53, 0x5d, + 0x81, 0x42, 0x6c, 0xbc, 0x13, 0x8c, 0xab, 0xf6, 0x8c, 0xa6, 0x43, 0x35, 0xc3, 0x27, 0x65, 0x3b, + 0xca, 0xea, 0x9f, 0xa1, 0x15, 0xb9, 0x8c, 0xe1, 0x7e, 0xcc, 0xf5, 0x15, 0x7f, 0x8d, 0xd0, 0xaa, + 0x82, 0xfe, 0x52, 0xfc, 0x2f, 0xd0, 0x42, 0x57, 0xe3, 0x4e, 0x60, 0xaa, 0xc5, 0x60, 0x93, 0x23, + 0x00, 0xf1, 0xd9, 0x2d, 0x39, 0xfe, 0x83, 0x18, 0x6a, 0xfa, 0x44, 0xe5, 0x78, 0xf5, 0x92, 0x2c, + 0xfc, 0xfb, 0x68, 0x85, 0x27, 0xe0, 0x8f, 0xb8, 0x7d, 0x7e, 0x25, 0x24, 0x77, 0xf8, 0x23, 0x3e, + 0xd3, 0xc9, 0xbe, 0x41, 0x95, 0xb6, 0x08, 0x79, 0x89, 0xe2, 0x8b, 0xb4, 0xe5, 0x76, 0x07, 0x2b, + 0xe0, 0x3b, 0x60, 0xb1, 0xcb, 0x46, 0xfb, 0xeb, 0x88, 0x13, 0xd3, 0x9d, 0x68, 0x97, 0xd3, 0xc8, + 0xee, 0x95, 0xf3, 0x48, 0xf1, 0x32, 0x5a, 0x16, 0x82, 0x9f, 0x3b, 0x29, 0xf3, 0x5e, 0x60, 0xd9, + 0x83, 0x72, 0x92, 0xc4, 0x55, 0x39, 0x25, 0x52, 0xfe, 0x9d, 0x83, 0xc6, 0xff, 0xab, 0x22, 0xea, + 0xea, 0x21, 0x85, 0x5a, 0xc2, 0xe5, 0x0b, 0xe7, 0x65, 0xe2, 0xf6, 0x6e, 0xa5, 0x7e, 0xa7, 0x21, + 0x83, 0x89, 0xff, 0x3d, 0xa7, 0x4a, 0xff, 0x9b, 0xe1, 0xf8, 0x81, 0xc1, 0xe2, 0x7f, 0xe5, 0x40, + 0x29, 0xd1, 0x86, 0x7b, 0xa8, 0xef, 0x84, 0xc1, 0x90, 0xe1, 0x78, 0x19, 0xf7, 0xf1, 0x87, 0x3d, + 0xa6, 0x61, 0xbc, 0x55, 0x39, 0x90, 0x8a, 0x27, 0xf0, 0x90, 0x48, 0x8d, 0x2e, 0xac, 0xa3, 0x2b, + 0xa1, 0xd9, 0x64, 0x6c, 0x0b, 0x9c, 0x2a, 0x47, 0x42, 0x81, 0xb6, 0x36, 0x02, 0xa8, 0x8f, 0x78, + 0xbc, 0x14, 0xde, 0xe4, 0xd9, 0xab, 0xe0, 0x89, 0x1a, 0xba, 0x13, 0xed, 0x26, 0x13, 0x21, 0x15, + 0x4f, 0x58, 0x85, 0xdd, 0x3e, 0x8b, 0xd5, 0xec, 0xe1, 0x29, 0xb2, 0xea, 0x69, 0x79, 0xda, 0xa5, + 0x91, 0x54, 0xfc, 0x53, 0x7a, 0xba, 0x7d, 0xeb, 0x68, 0xf6, 0xd4, 0x75, 0x58, 0x5e, 0xaf, 0x64, + 0x4f, 0x5d, 0xcf, 0x8e, 0x1c, 0x37, 0x8d, 0xbd, 0xb8, 0x90, 0x8d, 0x0e, 0x7f, 0xc0, 0xab, 0xd4, + 0x78, 0xdd, 0x11, 0x37, 0x96, 0x47, 0x5f, 0x5d, 0x87, 0x7f, 0xad, 0xdb, 0xed, 0x09, 0xaf, 0x6b, + 0xf3, 0xed, 0x5e, 0xa7, 0x44, 0x3c, 0xde, 0x57, 0x64, 0xab, 0xb5, 0xfc, 0x7f, 0xe1, 0xec, 0x2e, + 0x53, 0xc0, 0xa6, 0x8d, 0xad, 0x8d, 0x75, 0x9a, 0x32, 0xb7, 0x36, 0x9b, 0xd7, 0x54, 0x9f, 0x16, + 0xeb, 0xd5, 0x8f, 0x7e, 0xbe, 0x59, 0xae, 0xd4, 0x7a, 0xc7, 0xb5, 0x6b, 0xd1, 0xcc, 0xcd, 0xa9, + 0xf4, 0xf1, 0x6b, 0x55, 0x9a, 0x1a, 0xa3, 0xf2, 0x61, 0x2a, 0x7e, 0x29, 0x7d, 0x65, 0x00, 0xe4, + 0x43, 0x76, 0x7a, 0x6e, 0x96, 0xd7, 0xa6, 0x6e, 0x5d, 0x00, 0x79, 0x1b, 0x98, 0x3f, 0xe5, 0xfd, + 0x06, 0x6a, 0x5f, 0xe5, 0x9e, 0x36, 0xb7, 0xdf, 0xaf, 0xb4, 0xdd, 0x89, 0x76, 0x79, 0xdc, 0x6d, + 0x3e, 0x4f, 0xe0, 0x4e, 0xb4, 0x0b, 0x0e, 0x27, 0xc1, 0x4f, 0x35, 0x73, 0xf8, 0xd3, 0xf4, 0xc5, + 0xe3, 0xec, 0x56, 0x91, 0x9e, 0xe8, 0xaf, 0x9a, 0x4d, 0xf6, 0xdb, 0x9d, 0xb3, 0x5a, 0x10, 0xef, + 0x55, 0xda, 0x94, 0x88, 0x2f, 0xe0, 0x6f, 0x0c, 0x05, 0x22, 0x8a, 0x87, 0x78, 0x7f, 0x2c, 0x26, + 0xab, 0x8a, 0x1c, 0x01, 0x15, 0x48, 0x16, 0xd7, 0x50, 0x1e, 0x4c, 0x7c, 0x0e, 0xe9, 0x5a, 0xe8, + 0xbb, 0x98, 0x3d, 0x73, 0x29, 0x75, 0xfb, 0x9c, 0x7e, 0xe4, 0x92, 0x5c, 0x20, 0x0f, 0xbf, 0x1d, + 0x2d, 0x75, 0x77, 0x78, 0x7d, 0x91, 0x7a, 0x62, 0x1a, 0xf1, 0x52, 0x6e, 0xff, 0xac, 0x2a, 0x55, + 0x0a, 0xb6, 0x04, 0xb1, 0x9c, 0x65, 0xf0, 0xda, 0xe4, 0x58, 0x66, 0x72, 0x8c, 0x7a, 0xfe, 0xd8, + 0xf0, 0xf8, 0xad, 0xa8, 0x18, 0xcc, 0x2c, 0xaf, 0xbb, 0xa9, 0x95, 0x81, 0x58, 0x8e, 0x4c, 0xa0, + 0xf8, 0x24, 0xb8, 0x7e, 0xb0, 0x87, 0xe4, 0x40, 0x34, 0xfb, 0xd9, 0x69, 0x90, 0x3b, 0x65, 0x13, + 0x99, 0xff, 0x82, 0x43, 0xab, 0x0c, 0x7f, 0x89, 0x80, 0xdf, 0xaf, 0x78, 0x22, 0x74, 0x49, 0x50, + 0x26, 0x3c, 0x97, 0x1b, 0xa7, 0x1d, 0xb9, 0x76, 0x87, 0x2a, 0xc9, 0x42, 0x61, 0x42, 0xe2, 0xcb, + 0xb4, 0xa7, 0xa0, 0x61, 0x87, 0x7a, 0xb5, 0x4b, 0x27, 0xf1, 0x56, 0x3c, 0xf9, 0x35, 0xeb, 0x80, + 0xac, 0xdd, 0xee, 0xcd, 0x8e, 0x4d, 0x83, 0x70, 0xa3, 0x4f, 0x18, 0xbe, 0x8b, 0x85, 0x29, 0x9a, + 0x67, 0xa1, 0xe6, 0x82, 0xbd, 0x2f, 0xe6, 0xfa, 0x7f, 0x2d, 0x34, 0x99, 0xab, 0x9d, 0x2e, 0xdf, + 0xc5, 0x21, 0xe4, 0x0b, 0x13, 0xd2, 0x7e, 0x25, 0x42, 0x79, 0xac, 0x5b, 0x95, 0x7e, 0x2d, 0x30, + 0x60, 0xb1, 0xd1, 0xfa, 0x4d, 0x5b, 0x66, 0xb5, 0xe9, 0x76, 0xf6, 0xd4, 0x64, 0x65, 0x24, 0xd4, + 0xa1, 0xb0, 0x00, 0x07, 0x61, 0xba, 0x54, 0x02, 0x21, 0x10, 0x9b, 0xc3, 0x5e, 0x95, 0xcc, 0x50, + 0xe7, 0x77, 0x9b, 0xd2, 0x91, 0x97, 0x32, 0x63, 0xe2, 0x91, 0x6c, 0x02, 0x0d, 0x26, 0x9c, 0xfe, + 0x6c, 0x4a, 0x1b, 0xfa, 0x08, 0x0c, 0xe5, 0x8c, 0x71, 0xac, 0xd2, 0xec, 0x66, 0xb3, 0x30, 0xbd, + 0x3f, 0x9a, 0x1d, 0x8d, 0x56, 0x99, 0xf2, 0x8e, 0x97, 0x77, 0xa2, 0xc5, 0xde, 0x40, 0xbb, 0xdb, + 0x67, 0x30, 0x5d, 0x32, 0x1b, 0x29, 0x48, 0x5c, 0x03, 0x1b, 0x37, 0x0c, 0x05, 0x50, 0x48, 0x7f, + 0x36, 0x95, 0xee, 0xbe, 0xa5, 0x5d, 0xb8, 0xa0, 0x0d, 0x0f, 0xc8, 0x14, 0x8f, 0x1f, 0xe4, 0x50, + 0x59, 0x58, 0xf1, 0x74, 0x84, 0x7c, 0x91, 0x03, 0xe4, 0x2c, 0x8c, 0xca, 0x87, 0x7b, 0x55, 0x49, + 0x11, 0xec, 0x29, 0x62, 0xb3, 0x29, 0x17, 0x6a, 0x93, 0xfd, 0x5a, 0xef, 0x78, 0x7a, 0xba, 0x87, + 0xec, 0x17, 0x9f, 0xea, 0xa3, 0xfd, 0x6c, 0x4f, 0xc1, 0xf1, 0x11, 0xb8, 0xf0, 0x63, 0x2e, 0x02, + 0x6d, 0x61, 0x10, 0xf0, 0x76, 0x73, 0xbb, 0x37, 0x95, 0xbc, 0x88, 0x17, 0xb4, 0xbd, 0x10, 0xfe, + 0x02, 0x87, 0x8a, 0x7d, 0xfe, 0x08, 0xd9, 0x04, 0x09, 0xc7, 0x2a, 0x15, 0x2b, 0xf2, 0xdd, 0x13, + 0x21, 0x5d, 0xf2, 0x78, 0x94, 0x70, 0xd8, 0xb7, 0xbb, 0x4d, 0x01, 0xc1, 0xcb, 0xcc, 0x28, 0x36, + 0x82, 0xbc, 0xd8, 0xb6, 0xdb, 0xe2, 0xb3, 0xdf, 0xb1, 0x9a, 0x26, 0xed, 0x8a, 0x7f, 0x53, 0x8a, + 0x4a, 0x19, 0x7f, 0x61, 0x2c, 0x17, 0x2e, 0x07, 0x9f, 0xdf, 0xcd, 0x21, 0x77, 0x70, 0x6f, 0xa3, + 0x3b, 0xb2, 0x97, 0x6a, 0x4b, 0x61, 0x55, 0x0a, 0x0a, 0xb9, 0x69, 0xe2, 0xbb, 0xd4, 0x89, 0xd8, + 0xd8, 0x07, 0x53, 0xf1, 0x04, 0x75, 0x19, 0x36, 0xdc, 0x9c, 0xa9, 0xde, 0xc0, 0x78, 0x10, 0x83, + 0x5f, 0x30, 0x4c, 0x37, 0xc0, 0xb1, 0x78, 0x3f, 0xb5, 0xd1, 0xac, 0x03, 0x22, 0x72, 0x6e, 0x79, + 0xfc, 0xbb, 0xa8, 0xb4, 0x3d, 0xd0, 0xe1, 0x8f, 0x34, 0xbb, 0x43, 0x2d, 0x4a, 0x84, 0x4e, 0x47, + 0xb8, 0x4e, 0xc4, 0xc0, 0x8d, 0xa3, 0x24, 0xea, 0xb1, 0x7c, 0xf6, 0x34, 0xf5, 0x6a, 0xee, 0xbe, + 0xc5, 0x96, 0x4d, 0x4a, 0x95, 0xd9, 0x7c, 0xfc, 0x6d, 0x0e, 0x95, 0x75, 0xf8, 0xe9, 0xc6, 0x87, + 0xf9, 0x11, 0xd5, 0x7e, 0x4f, 0x73, 0xaa, 0x74, 0x9c, 0x13, 0xec, 0x69, 0x62, 0x37, 0x07, 0xd5, + 0xd7, 0x8e, 0x5c, 0xd4, 0x7a, 0x2f, 0x5b, 0x27, 0x6e, 0xc0, 0xe0, 0x86, 0xba, 0x53, 0xf1, 0xc1, + 0xcc, 0xd5, 0x83, 0x5a, 0xe2, 0x63, 0x73, 0x3f, 0xd1, 0xa2, 0xc9, 0xf5, 0x99, 0xb1, 0xf1, 0xf4, + 0xa5, 0x44, 0x6e, 0xf2, 0xb9, 0xf3, 0x34, 0x01, 0x2b, 0x4f, 0x4c, 0x5a, 0x25, 0x10, 0x37, 0xdd, + 0x24, 0xb1, 0xe2, 0xf5, 0xf1, 0xa1, 0xf4, 0xd9, 0x93, 0x30, 0x19, 0xaa, 0x64, 0x7b, 0x9d, 0x78, + 0x9f, 0x79, 0x71, 0x09, 0xa4, 0x8d, 0x67, 0xe6, 0xf1, 0x0e, 0xb7, 0x5d, 0x5e, 0x22, 0x06, 0x0d, + 0xe3, 0xf2, 0x12, 0x3d, 0xf4, 0xca, 0x46, 0x47, 0x60, 0x8d, 0x00, 0x98, 0xba, 0xdf, 0x1b, 0x77, + 0x99, 0xfa, 0x6c, 0xc2, 0xcd, 0x22, 0x52, 0x9c, 0x30, 0x5f, 0x71, 0x39, 0x22, 0xcd, 0x0c, 0xa7, + 0x4a, 0xb7, 0x6c, 0x22, 0xcd, 0x67, 0xdf, 0x46, 0xa4, 0xc1, 0xaa, 0x5e, 0x9b, 0x12, 0xf9, 0x7e, + 0x25, 0x94, 0x2d, 0x40, 0x74, 0xa3, 0x23, 0x14, 0x08, 0x44, 0x40, 0x3e, 0xe9, 0x74, 0x87, 0x88, + 0x68, 0x42, 0xcb, 0xb3, 0x49, 0x27, 0x6f, 0xa3, 0xc5, 0x58, 0x98, 0x8c, 0xc0, 0x91, 0x42, 0xa9, + 0xb8, 0x2a, 0xb7, 0x1b, 0x9a, 0x71, 0x2a, 0xe5, 0x6a, 0x80, 0x29, 0xae, 0xd1, 0x4f, 0x5e, 0xcd, + 0x39, 0xb3, 0x86, 0x14, 0x43, 0x4d, 0x80, 0x2f, 0xbe, 0x15, 0x95, 0xc2, 0x15, 0x92, 0xad, 0x81, + 0x16, 0x9f, 0x9f, 0x9e, 0x25, 0x3c, 0x5e, 0xa8, 0x9f, 0x09, 0x82, 0xcb, 0xbf, 0x27, 0x00, 0x32, + 0x2b, 0x9b, 0x4d, 0x2c, 0x87, 0x0f, 0xba, 0x2e, 0xce, 0x4c, 0x67, 0xcf, 0x50, 0x0f, 0x58, 0x99, + 0x45, 0xc3, 0x85, 0x61, 0x81, 0xc4, 0x28, 0xac, 0xf8, 0xde, 0x0b, 0x63, 0xb2, 0x89, 0xe5, 0xf0, + 0x51, 0xa8, 0x30, 0x06, 0x8d, 0x7f, 0x0f, 0xad, 0x84, 0xb2, 0x9b, 0x58, 0xae, 0x19, 0x2e, 0x2f, + 0x21, 0x16, 0x36, 0xa2, 0x49, 0x14, 0x44, 0x10, 0x1f, 0x65, 0x1b, 0x63, 0xf2, 0x6f, 0xe3, 0x76, + 0x48, 0xa1, 0x2c, 0xb8, 0x2c, 0x28, 0x3a, 0xa7, 0x2c, 0xc4, 0x94, 0x55, 0x08, 0x41, 0x7c, 0x94, + 0x6d, 0x4b, 0x5e, 0x59, 0x85, 0xb2, 0x7c, 0x17, 0xe7, 0xb2, 0xef, 0x26, 0x47, 0x44, 0x17, 0xa0, + 0x32, 0xdb, 0xd8, 0xf0, 0x1e, 0xf4, 0x80, 0xcf, 0xef, 0x8b, 0x10, 0xc0, 0x8e, 0xb0, 0x12, 0xf2, + 0xbb, 0xdb, 0x0d, 0x7b, 0xdb, 0x4f, 0x54, 0x49, 0x14, 0xf2, 0x53, 0xc5, 0xc7, 0x73, 0xe6, 0x25, + 0x34, 0xb5, 0x83, 0x26, 0xcb, 0xf9, 0x39, 0xf8, 0x5e, 0x8e, 0x29, 0xa5, 0xd1, 0x1d, 0x0e, 0xef, + 0x0b, 0x84, 0x0c, 0x51, 0x81, 0x18, 0xd5, 0xf3, 0x53, 0xc5, 0x9f, 0x17, 0x2c, 0x25, 0x48, 0x93, + 0xab, 0xe1, 0xb6, 0xb3, 0x79, 0x95, 0x24, 0xfd, 0xe5, 0x74, 0x7a, 0xfa, 0x02, 0xeb, 0x73, 0x2f, + 0xe7, 0xd3, 0xc4, 0xc2, 0xd2, 0x92, 0x56, 0xe5, 0x40, 0xa3, 0xdb, 0x17, 0x22, 0x7c, 0xbb, 0x54, + 0x7c, 0x38, 0x77, 0xe6, 0x6e, 0x51, 0x0e, 0x90, 0x39, 0x4b, 0xd4, 0x49, 0x03, 0xd9, 0x38, 0x9f, + 0x4f, 0x5f, 0xe9, 0xca, 0xaa, 0x97, 0x4d, 0xef, 0xf9, 0xf8, 0x20, 0xf8, 0x90, 0x88, 0xd9, 0x68, + 0x7f, 0x2a, 0x1e, 0x9d, 0x4d, 0xc6, 0xc4, 0x4c, 0xb4, 0x57, 0x3b, 0x77, 0x98, 0x6e, 0x6c, 0xc9, + 0xd3, 0x5a, 0x6f, 0x9f, 0x36, 0x75, 0x28, 0xab, 0x5e, 0x96, 0x0d, 0x52, 0x15, 0x7f, 0xb3, 0x00, + 0x3d, 0x60, 0x88, 0x72, 0x21, 0xc5, 0xab, 0xf8, 0x23, 0x3e, 0x77, 0x1b, 0xff, 0x18, 0x2a, 0x09, + 0x13, 0x95, 0x6b, 0x8b, 0x39, 0x94, 0x16, 0x00, 0xa7, 0x5a, 0xfe, 0x3a, 0x30, 0xa8, 0x8c, 0x17, + 0x4e, 0x05, 0x5a, 0xea, 0x69, 0xf3, 0x29, 0xfe, 0x08, 0x58, 0x19, 0x40, 0x40, 0x92, 0x6d, 0x30, + 0xfe, 0x47, 0x58, 0xf0, 0xc1, 0xe4, 0x24, 0xaf, 0x37, 0xa4, 0x84, 0xc3, 0x20, 0xf8, 0xc8, 0x76, + 0x20, 0xb9, 0x3d, 0xea, 0x76, 0x2a, 0xa1, 0x48, 0x9d, 0x3b, 0xe2, 0x06, 0x0d, 0x4a, 0x66, 0x20, + 0xb8, 0x1e, 0x78, 0x98, 0x9b, 0x03, 0xad, 0x0a, 0x28, 0x1e, 0x25, 0xb2, 0x05, 0xc0, 0x65, 0xd0, + 0x4a, 0xd5, 0x81, 0xa4, 0xb6, 0x04, 0xca, 0xb0, 0x01, 0x79, 0x07, 0x2a, 0xf5, 0x80, 0x08, 0x6b, + 0x1e, 0x3a, 0x96, 0xc8, 0x2c, 0x28, 0xe7, 0x0e, 0x6b, 0xc9, 0x5d, 0xee, 0xb0, 0xa2, 0xbc, 0x3b, + 0xac, 0x38, 0x3f, 0x69, 0x3b, 0xae, 0x37, 0x38, 0x27, 0xc9, 0x0c, 0x04, 0x7a, 0x13, 0x7f, 0xe1, + 0xbe, 0x5e, 0x6a, 0xf4, 0x26, 0x05, 0x18, 0x6e, 0x87, 0xf9, 0x63, 0x24, 0x3e, 0xb5, 0xdb, 0x13, + 0xae, 0xc1, 0xcc, 0xbd, 0xc6, 0xdd, 0xa2, 0xf8, 0x23, 0xa9, 0xf8, 0x11, 0xfd, 0x08, 0xde, 0xd4, + 0x59, 0x8f, 0xc4, 0x8a, 0xff, 0xff, 0x02, 0x54, 0xd2, 0xe0, 0x6e, 0x57, 0xc2, 0x41, 0xb7, 0x47, + 0xe1, 0x79, 0xb4, 0xd0, 0x5a, 0x50, 0x32, 0xf9, 0xcd, 0xaf, 0x2f, 0x7c, 0xbf, 0x1f, 0x86, 0xb5, + 0xe0, 0xc5, 0xfb, 0xc7, 0xd8, 0x4b, 0xea, 0x30, 0xba, 0xcc, 0xc5, 0xf3, 0x35, 0xb6, 0x8b, 0xe7, + 0x30, 0xae, 0xec, 0xed, 0xf0, 0x57, 0xcd, 0x0d, 0x1f, 0x76, 0xe0, 0x3c, 0xf5, 0xc8, 0xac, 0x2e, + 0xbb, 0xdd, 0x9b, 0x9b, 0xf8, 0x6a, 0x54, 0xdc, 0xee, 0xde, 0xff, 0x46, 0x47, 0x20, 0xe2, 0xa6, + 0x43, 0x6e, 0x7e, 0xe7, 0x8c, 0xd4, 0x92, 0xbb, 0x8c, 0x54, 0x71, 0xde, 0x48, 0xbd, 0x82, 0x4a, + 0x7e, 0x83, 0x09, 0x6d, 0xf5, 0x85, 0x23, 0x84, 0xa9, 0x17, 0xd8, 0x4a, 0x64, 0x25, 0x4c, 0xce, + 0x90, 0x48, 0x89, 0xb2, 0x85, 0xff, 0x1d, 0x98, 0xe8, 0xc6, 0xa7, 0x55, 0xe9, 0x29, 0xf4, 0xa4, + 0x60, 0x0d, 0x94, 0xb8, 0x92, 0x0d, 0x84, 0xe0, 0xa7, 0x3b, 0x6c, 0xc5, 0x7f, 0x2a, 0x42, 0x65, + 0xb6, 0xf2, 0xf1, 0x50, 0xf8, 0x8d, 0x4c, 0xc6, 0x3a, 0x35, 0x01, 0xdf, 0x6e, 0x68, 0x3d, 0xf6, + 0x10, 0x0f, 0xec, 0xca, 0xfe, 0x11, 0x2a, 0x0b, 0xb1, 0xc5, 0x1b, 0xab, 0xd6, 0x06, 0xe4, 0x1f, + 0xb2, 0x87, 0x52, 0x30, 0xbd, 0xe1, 0xec, 0xa3, 0xb3, 0xf8, 0x2e, 0xa3, 0xb3, 0x24, 0x6f, 0x74, + 0x1e, 0x32, 0x8f, 0x3f, 0x61, 0xe4, 0x8c, 0x53, 0xca, 0x72, 0xcb, 0x8f, 0x1e, 0x16, 0xa7, 0xf1, + 0xb9, 0x71, 0xad, 0x2a, 0x3d, 0x8b, 0xaa, 0x04, 0x7b, 0x9f, 0x89, 0xe5, 0x6c, 0xdf, 0x82, 0x0f, + 0x53, 0xb6, 0x77, 0x20, 0xfb, 0xe1, 0xb9, 0x8a, 0x81, 0x05, 0x08, 0x31, 0x4c, 0x30, 0x7f, 0x08, + 0x71, 0x15, 0x14, 0x4f, 0xc8, 0x10, 0xe4, 0x65, 0xfa, 0xc5, 0x3f, 0x8d, 0x96, 0x85, 0x3b, 0x76, + 0x9b, 0x37, 0x59, 0xcc, 0xbe, 0xcb, 0x81, 0xe2, 0xc9, 0x1b, 0x51, 0xfc, 0x6e, 0x72, 0xb1, 0x01, + 0xfa, 0xce, 0xfc, 0xe6, 0xab, 0xd1, 0x03, 0x46, 0x3f, 0x92, 0x6d, 0x99, 0x9c, 0x17, 0x40, 0x0f, + 0xe6, 0x27, 0x60, 0x4a, 0xc0, 0x23, 0x8c, 0xc8, 0x13, 0xb2, 0xf9, 0x6d, 0x31, 0xe0, 0x26, 0xa8, + 0xeb, 0x12, 0x96, 0x01, 0x03, 0x8c, 0x17, 0xd1, 0x4a, 0xaa, 0xba, 0xd0, 0x0b, 0x09, 0x14, 0x17, + 0xba, 0xb6, 0x60, 0x1a, 0xa6, 0xdb, 0xd2, 0xaa, 0x34, 0x9a, 0x4b, 0x1f, 0x7a, 0xdb, 0x06, 0xdb, + 0xb8, 0x45, 0x95, 0x5e, 0x47, 0x9b, 0x04, 0xa6, 0x1b, 0xc5, 0x97, 0xe0, 0x84, 0x06, 0x7a, 0x1d, + 0x2e, 0x45, 0xe8, 0x7d, 0x37, 0x8d, 0x5d, 0x0b, 0x9c, 0xf2, 0xb4, 0xde, 0xf1, 0xec, 0xe1, 0x21, + 0xf3, 0xc6, 0x04, 0x48, 0xd5, 0x15, 0xc3, 0x8b, 0x50, 0x29, 0xe3, 0x1c, 0xce, 0x6f, 0x42, 0x8b, + 0xe1, 0xda, 0x36, 0x95, 0x08, 0xf0, 0xf8, 0x0a, 0x14, 0x24, 0x3e, 0x49, 0x4d, 0x55, 0x64, 0xe7, + 0x9d, 0x4d, 0xc6, 0xf4, 0xd1, 0xcf, 0x01, 0x92, 0x8a, 0x27, 0x76, 0xb7, 0x86, 0x03, 0xc1, 0xb0, + 0x4c, 0x51, 0xf9, 0x5f, 0xa3, 0x85, 0x6d, 0x3e, 0x7f, 0x2b, 0xdd, 0xf1, 0x7f, 0xa1, 0x4a, 0x9b, + 0x05, 0x02, 0x10, 0x7f, 0x0e, 0x88, 0xe0, 0x82, 0x98, 0xfd, 0xe0, 0x6b, 0x7d, 0xf0, 0xb2, 0x79, + 0xc2, 0xa4, 0x0d, 0x1d, 0xcb, 0x7c, 0x75, 0x53, 0xbf, 0x78, 0x58, 0x3b, 0x7c, 0x28, 0x73, 0x7b, + 0x38, 0x3d, 0x7d, 0x3d, 0x95, 0x38, 0xaa, 0x1d, 0x19, 0xcb, 0xdc, 0x1e, 0x4d, 0x8f, 0x1f, 0x85, + 0x8b, 0xbf, 0x32, 0x21, 0xc3, 0x5f, 0xe6, 0xd0, 0xe2, 0xa0, 0x3b, 0xe4, 0x6e, 0x37, 0xce, 0xc1, + 0x9e, 0x99, 0xc7, 0xe5, 0x7d, 0x6d, 0x23, 0xc1, 0x04, 0x15, 0xc3, 0xab, 0x4a, 0x6e, 0x81, 0xe6, + 0x15, 0xdf, 0xb4, 0xd5, 0x06, 0xce, 0xed, 0x88, 0x82, 0x63, 0x69, 0x07, 0x93, 0xe7, 0xb3, 0x67, + 0x7a, 0xe9, 0xa5, 0xe3, 0x53, 0x37, 0xa8, 0x9b, 0x31, 0x00, 0xc7, 0x62, 0x58, 0xb9, 0x30, 0xb4, + 0x2f, 0xbd, 0xef, 0x24, 0x1c, 0x68, 0x69, 0xb1, 0x93, 0x32, 0x2d, 0x00, 0x2b, 0xcf, 0x0f, 0xba, + 0xdb, 0xda, 0x02, 0xfb, 0x9a, 0x5a, 0x7d, 0xc1, 0x37, 0xf7, 0x2a, 0xfe, 0x4d, 0xc4, 0xc7, 0x8e, + 0x4c, 0xcd, 0xe2, 0xda, 0x56, 0x55, 0xda, 0x2b, 0x14, 0x4a, 0x17, 0xdf, 0x28, 0x00, 0xa4, 0x67, + 0x4a, 0xfd, 0x57, 0x32, 0x63, 0x31, 0xd3, 0x77, 0x8f, 0x6a, 0x96, 0xbd, 0x5d, 0x99, 0xc9, 0x78, + 0xe6, 0xe6, 0x97, 0x99, 0xdb, 0x87, 0x0d, 0xb3, 0x0d, 0xd6, 0x1a, 0x19, 0xb0, 0x5c, 0xa8, 0x1c, + 0xcc, 0x52, 0x99, 0xce, 0xb9, 0x2f, 0x96, 0xba, 0x53, 0x95, 0x9a, 0xd0, 0x1b, 0x02, 0x3b, 0x7d, + 0xc4, 0x5a, 0x76, 0xf0, 0xd8, 0xbb, 0x8e, 0x30, 0x35, 0xcd, 0x91, 0xa6, 0x47, 0x43, 0xb1, 0x93, + 0xda, 0xcd, 0xcb, 0xa9, 0x99, 0x51, 0x70, 0xd0, 0x02, 0x9c, 0x8a, 0x2f, 0x16, 0xa1, 0xc5, 0x12, + 0x98, 0x25, 0x3b, 0x11, 0x0a, 0x86, 0x14, 0xf8, 0x30, 0x4e, 0xd9, 0xc9, 0xed, 0x3e, 0x06, 0x2c, + 0xd6, 0xd3, 0x71, 0xe8, 0xc7, 0x13, 0xda, 0x24, 0x0c, 0x85, 0xc3, 0x85, 0xfb, 0xd9, 0x64, 0xcc, + 0x4d, 0x90, 0xb5, 0xd1, 0x71, 0xfd, 0x83, 0x81, 0xd4, 0xcc, 0x28, 0x9b, 0x05, 0x3a, 0x54, 0x66, + 0x48, 0xf2, 0xfb, 0x51, 0x69, 0x30, 0x10, 0x8e, 0x18, 0x05, 0x17, 0xcd, 0x5f, 0xf0, 0xf0, 0xe0, + 0x7d, 0x17, 0x4c, 0xb2, 0xd0, 0x82, 0xd9, 0xa2, 0xf8, 0x56, 0xb4, 0x24, 0x48, 0xba, 0xd2, 0x98, + 0xd7, 0x79, 0xb7, 0x74, 0x00, 0x73, 0x2d, 0x74, 0x38, 0x9d, 0xd3, 0xc4, 0x89, 0xc2, 0xc8, 0x28, + 0xae, 0xd1, 0x7a, 0x6f, 0xa6, 0x66, 0x3e, 0x80, 0xa2, 0xa8, 0xef, 0xdb, 0x91, 0xf1, 0xd4, 0xcc, + 0x28, 0x68, 0xc9, 0xb2, 0x81, 0xb8, 0xfa, 0x4d, 0xb4, 0x94, 0x25, 0xf3, 0xbd, 0xdd, 0x2b, 0xd9, + 0x38, 0xcb, 0xa9, 0xd2, 0xff, 0xca, 0xa1, 0x0c, 0x27, 0xd0, 0x91, 0x14, 0xff, 0x13, 0x07, 0xa3, + 0x6b, 0xaa, 0xe2, 0x70, 0x4b, 0xcc, 0xec, 0x35, 0x5a, 0x59, 0xd2, 0x77, 0xd5, 0x0e, 0x6d, 0xea, + 0x96, 0x3e, 0x78, 0xf9, 0xbd, 0xc0, 0x6e, 0x60, 0x35, 0xd5, 0x0e, 0x6d, 0x32, 0xa6, 0xf7, 0x0d, + 0x9b, 0xaa, 0x3f, 0xf4, 0xe5, 0x2b, 0x8e, 0xdc, 0x9b, 0xa8, 0x23, 0x3d, 0xf0, 0x1b, 0xd2, 0xf5, + 0xf1, 0xb1, 0x74, 0x7f, 0x1f, 0xac, 0xe4, 0xec, 0x68, 0xd4, 0xcc, 0x0d, 0xb9, 0xb4, 0x4b, 0x57, + 0x20, 0xe0, 0x06, 0x20, 0x63, 0x35, 0x7f, 0xba, 0x17, 0x6c, 0x66, 0x30, 0x2f, 0xa0, 0xcf, 0xf0, + 0xaa, 0x26, 0xa3, 0x45, 0xbb, 0x70, 0xe0, 0x4b, 0x6d, 0x68, 0xca, 0x38, 0xec, 0x4e, 0x1f, 0xbf, + 0x06, 0xbe, 0x61, 0x15, 0x7d, 0xa5, 0x08, 0x19, 0x27, 0x7f, 0x2d, 0x21, 0x7e, 0x0f, 0x5a, 0xe1, + 0xee, 0x74, 0xfb, 0x88, 0xfd, 0xc5, 0x38, 0x3a, 0x82, 0xe9, 0x4b, 0xce, 0x6b, 0xf3, 0x12, 0xc5, + 0xa7, 0xb4, 0x9b, 0x5f, 0xc0, 0x81, 0x42, 0x7a, 0xa4, 0xc7, 0x3a, 0xa9, 0x76, 0xd0, 0x13, 0x6a, + 0x88, 0x1b, 0x91, 0x97, 0x8d, 0xff, 0x4b, 0x54, 0x06, 0xdb, 0xbb, 0x71, 0x01, 0x15, 0xc6, 0xe9, + 0xa1, 0xc2, 0x93, 0x06, 0xfc, 0x29, 0xec, 0x39, 0x8c, 0x4b, 0x70, 0x60, 0x50, 0xd4, 0x4f, 0xdd, + 0x80, 0xe3, 0x7f, 0x6b, 0x3a, 0xc3, 0xfc, 0x81, 0x99, 0x63, 0xcf, 0x8a, 0x4b, 0x27, 0x67, 0x09, + 0x66, 0xe9, 0x0b, 0xee, 0xa1, 0x74, 0x5b, 0x0e, 0xab, 0xf4, 0x8b, 0xd9, 0x33, 0x97, 0xee, 0x56, + 0xba, 0x2d, 0x2b, 0x7f, 0x94, 0x43, 0x0f, 0xb8, 0xbd, 0x5e, 0x72, 0x25, 0xbb, 0x39, 0x60, 0x54, + 0x61, 0xe1, 0xbc, 0x55, 0xa8, 0x57, 0xa5, 0x5a, 0x21, 0x3f, 0x97, 0x58, 0xc3, 0xde, 0x3c, 0xd6, + 0xfa, 0xae, 0x1a, 0x01, 0xb5, 0x26, 0x0a, 0xd7, 0x24, 0x9f, 0x02, 0x7f, 0x91, 0x43, 0x0f, 0x41, + 0xfd, 0x48, 0xc2, 0xa6, 0x50, 0xa0, 0xdd, 0xa8, 0xd2, 0xa2, 0x79, 0xab, 0xd4, 0xa8, 0x4a, 0xdb, + 0x84, 0x39, 0xb2, 0x8a, 0xcf, 0xa5, 0xa6, 0x07, 0xd9, 0x1e, 0x32, 0x6d, 0x7e, 0xf3, 0xf5, 0xd3, + 0x1c, 0xc4, 0xf8, 0xdf, 0xa3, 0x32, 0x7a, 0x19, 0x94, 0x56, 0x6c, 0xf1, 0xbc, 0x15, 0x23, 0x3e, + 0xb0, 0xf6, 0x1c, 0x62, 0x0d, 0xdc, 0xbe, 0x34, 0xaf, 0xc8, 0x42, 0x35, 0xd2, 0x23, 0x3d, 0x73, + 0x8c, 0x98, 0x2d, 0x37, 0xff, 0x7b, 0xf4, 0x80, 0x87, 0x5c, 0x6b, 0x26, 0x77, 0x1f, 0xa1, 0x18, + 0x6a, 0xbc, 0x9a, 0xab, 0x12, 0xc4, 0x71, 0x2b, 0x3f, 0x97, 0xf8, 0x24, 0xad, 0x02, 0xb9, 0x54, + 0x39, 0xc7, 0x20, 0xe5, 0xe5, 0xc2, 0x83, 0xf4, 0x98, 0x67, 0xaf, 0xe2, 0x69, 0xad, 0xdf, 0x1f, + 0x51, 0x42, 0x7e, 0x77, 0x1b, 0xee, 0xa3, 0xfa, 0xf6, 0x60, 0xe4, 0x00, 0xad, 0x4c, 0xf1, 0xbc, + 0x95, 0xa9, 0x53, 0x25, 0x49, 0x98, 0x97, 0x80, 0x51, 0xaf, 0xf4, 0xe7, 0x9f, 0x43, 0xdc, 0x1e, + 0x6a, 0x45, 0xf8, 0x24, 0x91, 0x3d, 0xf5, 0x85, 0xfe, 0x51, 0x54, 0xbf, 0x70, 0x59, 0x9e, 0x97, + 0x00, 0xdf, 0xc3, 0xa1, 0x32, 0x28, 0xd6, 0x4b, 0x6f, 0x2b, 0xcf, 0xa1, 0x25, 0x6d, 0x63, 0x91, + 0xc0, 0x81, 0xd5, 0x9e, 0x51, 0x7c, 0x96, 0xf5, 0xaf, 0xc8, 0x5c, 0xe9, 0xd1, 0x2f, 0x26, 0x41, + 0xea, 0x33, 0x9c, 0x39, 0xa3, 0xdd, 0xb0, 0x1b, 0x37, 0x6f, 0xa9, 0x97, 0xed, 0x79, 0x37, 0x42, + 0x44, 0x23, 0x74, 0x8d, 0x13, 0x18, 0xb6, 0x26, 0x7e, 0xc8, 0xb1, 0x82, 0x26, 0x9d, 0x98, 0xd7, + 0xba, 0xb3, 0xe7, 0x3e, 0x04, 0x97, 0xdf, 0x3b, 0xd1, 0x2e, 0x76, 0xd3, 0xc7, 0xe2, 0x53, 0x7c, + 0x52, 0x3b, 0xf2, 0x09, 0xcb, 0x62, 0x52, 0x71, 0xea, 0xb1, 0xbf, 0x16, 0x6a, 0x91, 0x9a, 0xee, + 0x05, 0xc6, 0x07, 0x3b, 0x65, 0x25, 0x1b, 0x51, 0x61, 0x1d, 0xcc, 0x7a, 0xfa, 0x61, 0x0c, 0xb9, + 0xb5, 0x52, 0xd7, 0xe5, 0xaf, 0x8d, 0xaa, 0x8a, 0x17, 0x51, 0x99, 0xad, 0x6f, 0xb0, 0x4a, 0x1e, + 0x0e, 0x2a, 0x1e, 0x43, 0x25, 0xc7, 0xbf, 0x31, 0xcc, 0xab, 0x84, 0x3d, 0x54, 0xaa, 0x21, 0xbf, + 0x2b, 0x0e, 0x95, 0xa1, 0xa5, 0xe6, 0x75, 0x2b, 0xcc, 0xc5, 0x7b, 0x39, 0xb4, 0x1c, 0x38, 0x9e, + 0x09, 0xbe, 0x0b, 0x83, 0x25, 0x77, 0x9b, 0x72, 0xf3, 0x88, 0x35, 0x74, 0x16, 0x4c, 0xf7, 0xdc, + 0x13, 0x97, 0xcd, 0xcd, 0x4f, 0xea, 0x61, 0xad, 0x69, 0xa8, 0xc7, 0x82, 0x7b, 0xa8, 0x47, 0x4e, + 0x1e, 0x5b, 0x3d, 0xee, 0x81, 0xdf, 0xe6, 0xe6, 0xe7, 0xa7, 0x39, 0xb4, 0xa2, 0x3d, 0xd0, 0xa9, + 0x50, 0xd6, 0x67, 0x9d, 0xa7, 0xcd, 0x5d, 0x11, 0x72, 0x73, 0x6f, 0x25, 0x93, 0xc9, 0xaa, 0xcd, + 0xaf, 0xd2, 0x57, 0xa6, 0xb5, 0x23, 0x34, 0x38, 0x48, 0xe6, 0xf0, 0x97, 0x66, 0xe5, 0xe6, 0xaf, + 0x56, 0xa5, 0xd5, 0x88, 0x4b, 0x27, 0x0d, 0x23, 0x1d, 0x21, 0xc4, 0x90, 0xa8, 0x92, 0xf3, 0x2a, + 0xca, 0xff, 0x33, 0x0e, 0xad, 0x0c, 0x29, 0x26, 0x18, 0x73, 0x46, 0x68, 0xc1, 0xfc, 0xfc, 0xb9, + 0x43, 0x95, 0x42, 0x42, 0x79, 0x4e, 0x46, 0xab, 0x15, 0x3b, 0x53, 0xd3, 0x83, 0x39, 0xdd, 0x7a, + 0x2f, 0x4c, 0xba, 0x70, 0x2b, 0xb2, 0x67, 0x2e, 0x81, 0xab, 0x4e, 0x95, 0x5c, 0xb0, 0xaa, 0xfc, + 0x31, 0x0e, 0x3d, 0xe0, 0x69, 0x53, 0xdc, 0x7e, 0x02, 0x77, 0xf9, 0xa1, 0x01, 0xf3, 0xf3, 0x71, + 0xe2, 0x57, 0x9f, 0x9f, 0x4b, 0x7c, 0xce, 0xac, 0x02, 0xb9, 0x2c, 0x79, 0xeb, 0x9e, 0xf6, 0x96, + 0x7c, 0x3a, 0xb8, 0x4e, 0x3c, 0xd8, 0x10, 0xea, 0x94, 0xb0, 0x2f, 0xa4, 0xc0, 0xce, 0x78, 0x17, + 0xbe, 0x4e, 0x6e, 0xd6, 0x15, 0xc8, 0x26, 0xae, 0xb7, 0xa6, 0x41, 0xbf, 0x55, 0xab, 0xf9, 0xaa, + 0x54, 0x80, 0x0a, 0x1f, 0xe7, 0xd0, 0x23, 0x6e, 0xaf, 0x97, 0x65, 0xb2, 0x8c, 0x8c, 0x30, 0x3f, + 0x97, 0xdf, 0xad, 0x4a, 0xbb, 0x84, 0xb9, 0x73, 0x8b, 0xb5, 0x66, 0x0d, 0x53, 0xf1, 0x23, 0xfa, + 0xf9, 0x1b, 0x05, 0x39, 0xfe, 0x5d, 0xba, 0x71, 0x6e, 0xf2, 0xfc, 0xbf, 0xe0, 0xd0, 0x1a, 0x58, + 0x78, 0x36, 0x04, 0x56, 0xa0, 0x28, 0x99, 0xb7, 0xfe, 0x44, 0xc1, 0xbd, 0x0b, 0x09, 0xf1, 0xe7, + 0x39, 0x73, 0xb6, 0xf0, 0xb6, 0x35, 0x4f, 0x0b, 0xee, 0x52, 0xc0, 0xc6, 0x5b, 0x45, 0xaa, 0xf4, + 0x55, 0x11, 0xfa, 0xa2, 0x48, 0xb0, 0xf1, 0x54, 0x71, 0xac, 0xa8, 0xc0, 0x16, 0xc2, 0xde, 0xda, + 0xbd, 0x87, 0xed, 0xc4, 0x86, 0x6f, 0xdf, 0x54, 0xaa, 0x1d, 0x9a, 0x1a, 0x03, 0xfd, 0x27, 0x3d, + 0xd2, 0x03, 0x51, 0x31, 0xc8, 0xe5, 0x47, 0xea, 0x1d, 0x0f, 0xf1, 0x13, 0x8d, 0xb6, 0xdf, 0x89, + 0x76, 0xb1, 0x4b, 0x16, 0x20, 0x73, 0xb1, 0xa5, 0x3b, 0xd1, 0xae, 0xb9, 0xd6, 0xfa, 0x9d, 0x68, + 0x57, 0xc1, 0x69, 0x6b, 0x83, 0xc7, 0x7b, 0xd3, 0xc3, 0x87, 0xd8, 0x30, 0x5b, 0xda, 0xad, 0x1b, + 0xd9, 0xe3, 0x51, 0x7d, 0xaa, 0x4b, 0x1f, 0x4d, 0x68, 0x67, 0xc6, 0xd3, 0x13, 0x54, 0xaf, 0xa9, + 0xf8, 0xfb, 0x45, 0x68, 0xf1, 0xf6, 0x26, 0x72, 0x58, 0xd3, 0xcd, 0xcd, 0xa9, 0x49, 0x10, 0x7d, + 0x34, 0x5f, 0x93, 0xf8, 0x39, 0x78, 0xcf, 0x80, 0xe6, 0x64, 0x06, 0x88, 0xa2, 0x2e, 0xfd, 0x24, + 0xf0, 0x56, 0x2a, 0x1e, 0x4d, 0x25, 0xce, 0x42, 0x0c, 0x36, 0x1b, 0x32, 0x38, 0xac, 0xe5, 0x6b, + 0x19, 0xe7, 0xb9, 0x9c, 0x4b, 0xe8, 0xa0, 0x10, 0xbf, 0xaf, 0x4a, 0xfb, 0x72, 0x2e, 0xa1, 0xb7, + 0x00, 0x3d, 0xda, 0xa0, 0x79, 0x0a, 0x07, 0xcf, 0x72, 0x52, 0x05, 0x40, 0x83, 0x2c, 0xb3, 0xc9, + 0x98, 0x7e, 0xf2, 0x56, 0xea, 0xeb, 0xdb, 0xe0, 0xde, 0xa1, 0x8d, 0x8e, 0x7b, 0xda, 0x7c, 0x77, + 0xa2, 0x5d, 0x4d, 0x6e, 0x77, 0x13, 0xdc, 0xd7, 0x05, 0x97, 0xdb, 0x9c, 0x7b, 0xec, 0x43, 0x1c, + 0x5a, 0xe5, 0x55, 0xf6, 0xb8, 0x3b, 0xda, 0x22, 0x39, 0x67, 0x79, 0x0b, 0x48, 0x4d, 0xc9, 0xed, + 0x97, 0xc2, 0x18, 0xe2, 0xab, 0xa6, 0xa3, 0x67, 0x2a, 0x7e, 0x84, 0x75, 0xfc, 0xb8, 0xb7, 0x8a, + 0x14, 0xa6, 0xca, 0x9f, 0xe6, 0xd0, 0x12, 0x30, 0xca, 0x1a, 0xa7, 0xee, 0x79, 0x8a, 0x3c, 0x8c, + 0xf0, 0x5a, 0x19, 0xb0, 0x40, 0x91, 0x27, 0x15, 0x35, 0x32, 0x8a, 0x5b, 0xd8, 0x60, 0x98, 0x58, + 0x05, 0x25, 0x1e, 0x05, 0xac, 0xff, 0xea, 0x6c, 0x32, 0xd6, 0xaa, 0x1c, 0xd0, 0x4f, 0xdb, 0x2e, + 0xfc, 0x13, 0x3d, 0x3c, 0xac, 0x9f, 0x9e, 0x4a, 0xc5, 0x27, 0xf4, 0x93, 0x87, 0x33, 0x53, 0xd7, + 0xf5, 0xd3, 0x83, 0xb2, 0x41, 0x75, 0xf5, 0x46, 0xb4, 0x94, 0x2d, 0xf3, 0xbe, 0x6c, 0x3e, 0xf4, + 0x52, 0x26, 0x9d, 0x9d, 0xe2, 0x2f, 0x6c, 0x76, 0x47, 0x18, 0x59, 0xb2, 0x72, 0xd3, 0x23, 0x3d, + 0x30, 0xa7, 0x72, 0x7c, 0xc8, 0x61, 0xfd, 0x6e, 0x6f, 0x82, 0x55, 0x4e, 0x63, 0x15, 0x90, 0x00, + 0x2b, 0x15, 0x7f, 0xb5, 0x18, 0x2d, 0xa1, 0xc6, 0x50, 0xbe, 0x16, 0x15, 0x83, 0xd9, 0xd7, 0x8c, + 0xb5, 0x40, 0x5c, 0x5c, 0x4d, 0xa0, 0xf8, 0x70, 0xa6, 0xf7, 0xeb, 0xcc, 0xe4, 0x94, 0x69, 0xcd, + 0x34, 0x12, 0x64, 0x13, 0x85, 0xdf, 0x84, 0x4a, 0xe0, 0xf7, 0x16, 0xe5, 0x00, 0x35, 0x43, 0xc2, + 0x8d, 0x77, 0x13, 0x2a, 0x96, 0x17, 0xa4, 0xb2, 0x45, 0x39, 0x20, 0x5b, 0x48, 0xfc, 0x96, 0xc2, + 0x86, 0x67, 0x88, 0xee, 0x96, 0x93, 0x24, 0x2e, 0x93, 0xde, 0xef, 0x08, 0x29, 0x8e, 0xcc, 0xe4, + 0x87, 0xd9, 0xd3, 0xbd, 0xae, 0xba, 0x3c, 0xeb, 0xf4, 0xcb, 0xb9, 0xd6, 0xe9, 0xda, 0xc7, 0x55, + 0x69, 0xb5, 0x60, 0x02, 0x0d, 0x02, 0xe9, 0x2b, 0x17, 0xf4, 0xbe, 0x9b, 0xb8, 0x3d, 0xa6, 0xf1, + 0xfa, 0x9d, 0x39, 0x8d, 0xd7, 0xb5, 0x35, 0xaa, 0x24, 0x08, 0xf9, 0xa9, 0xe2, 0x2a, 0x5a, 0x1b, + 0x62, 0x80, 0xc7, 0x2c, 0x0b, 0x1c, 0xdd, 0x0b, 0xd8, 0xba, 0xb7, 0xe4, 0xda, 0xba, 0x69, 0xa0, + 0x67, 0x03, 0x28, 0x3a, 0x80, 0x14, 0xbd, 0xc8, 0xe9, 0x68, 0x0c, 0xf9, 0xfc, 0x1e, 0x5f, 0xd0, + 0xdd, 0xe6, 0x70, 0x52, 0x0c, 0xc6, 0x38, 0xfe, 0x4e, 0x21, 0xe3, 0x38, 0x0d, 0x59, 0xc1, 0x26, + 0x88, 0x3f, 0x9a, 0x9f, 0x28, 0x60, 0xe5, 0x58, 0xd5, 0xbb, 0xb8, 0xf9, 0xcc, 0xea, 0x70, 0xc7, + 0xba, 0x20, 0x82, 0x28, 0x6e, 0x26, 0x41, 0xc3, 0x1d, 0xc4, 0x4f, 0xdc, 0x41, 0x51, 0x1c, 0x6e, + 0xc0, 0x49, 0x8f, 0xf4, 0xbc, 0x17, 0x0e, 0xf8, 0xcd, 0x65, 0x94, 0xbe, 0x72, 0x3a, 0xab, 0x5e, + 0x9e, 0xc3, 0x4a, 0xbf, 0xb5, 0x90, 0x95, 0x1e, 0x66, 0x97, 0x2d, 0x41, 0x5c, 0x65, 0x2b, 0xd2, + 0x8c, 0x21, 0x6d, 0xb7, 0xe7, 0x53, 0x3b, 0xaa, 0x31, 0xf9, 0xc5, 0x4d, 0x74, 0xa9, 0x90, 0xbb, + 0xee, 0xcc, 0x7d, 0x43, 0xac, 0x65, 0x93, 0x69, 0x6a, 0xae, 0x29, 0x26, 0x11, 0xe2, 0x94, 0x6b, + 0xbd, 0x49, 0x6d, 0xf2, 0x96, 0x76, 0xa9, 0x27, 0x3d, 0x7c, 0xa8, 0xe2, 0xe4, 0x12, 0xb4, 0xd4, + 0xc9, 0xc4, 0x43, 0xe2, 0x77, 0xa0, 0x25, 0x04, 0xd7, 0x5c, 0x54, 0xc4, 0x49, 0xca, 0x80, 0x89, + 0x35, 0xb5, 0xce, 0x26, 0x1a, 0x83, 0xc7, 0x30, 0x44, 0x99, 0x81, 0xbc, 0x67, 0x93, 0xb1, 0xcc, + 0xd1, 0x6b, 0xfa, 0xc9, 0xc3, 0x66, 0x07, 0xc9, 0x46, 0x3e, 0xbe, 0x85, 0x3d, 0xab, 0x84, 0x85, + 0x46, 0xa4, 0x3b, 0x26, 0xa0, 0xf6, 0xcb, 0x6c, 0x3d, 0xcc, 0x20, 0x11, 0xd0, 0x1f, 0x56, 0x6b, + 0xbe, 0xbe, 0x9d, 0x4a, 0x0c, 0xea, 0x17, 0x2e, 0x67, 0xa6, 0x3e, 0xd4, 0xd4, 0x58, 0xe6, 0xf6, + 0x61, 0x7d, 0xfa, 0x12, 0x7b, 0xec, 0xe9, 0x46, 0x25, 0x6e, 0x33, 0x68, 0xd5, 0x02, 0x2b, 0x96, + 0x84, 0x05, 0x15, 0x9f, 0x33, 0xdb, 0x00, 0x2e, 0x01, 0x66, 0x9f, 0xb9, 0xea, 0xaa, 0x1d, 0x66, + 0x2c, 0xf7, 0xca, 0x5a, 0x67, 0x53, 0x0d, 0xa9, 0x52, 0x8d, 0xab, 0xae, 0x4a, 0xb6, 0xf2, 0xf3, + 0xf5, 0xa8, 0x94, 0x7e, 0x30, 0x77, 0x49, 0xc8, 0x4a, 0x67, 0xe1, 0xe2, 0x03, 0x4c, 0x90, 0x2a, + 0xe3, 0xf6, 0x08, 0x93, 0xce, 0xbf, 0x40, 0xb5, 0x4b, 0x58, 0x9e, 0x24, 0x24, 0x2c, 0x01, 0x88, + 0x0f, 0x33, 0x19, 0x21, 0x3e, 0x1b, 0x75, 0x82, 0x21, 0xc9, 0xfc, 0x76, 0xb4, 0x84, 0x92, 0xa1, + 0x32, 0xfd, 0xc3, 0xf9, 0x32, 0x1e, 0x49, 0x86, 0xf8, 0x2b, 0x40, 0x93, 0xad, 0x0c, 0xa5, 0x66, + 0x50, 0xe1, 0xb7, 0xa3, 0xc5, 0xe0, 0x44, 0x4b, 0x3d, 0x7a, 0xc9, 0x22, 0xa4, 0x20, 0x51, 0x60, + 0x2b, 0xc3, 0xf8, 0x0c, 0x57, 0x9b, 0xb7, 0x3c, 0xe1, 0x3b, 0x3d, 0xd2, 0x23, 0xd3, 0x3c, 0xfc, + 0x8b, 0x56, 0xb0, 0xea, 0x62, 0x8b, 0x7f, 0x99, 0xc1, 0xaa, 0x97, 0xcf, 0x19, 0xa6, 0xfa, 0x45, + 0x2b, 0x3a, 0x66, 0x09, 0x93, 0xd1, 0x88, 0x8e, 0xb9, 0x7c, 0xce, 0xb8, 0x98, 0x1b, 0x51, 0x09, + 0xa1, 0x61, 0x1d, 0xfd, 0x43, 0xe3, 0x2d, 0xa8, 0xb8, 0xd4, 0x54, 0xab, 0xb3, 0xa7, 0xae, 0xcb, + 0x56, 0x02, 0xff, 0xaa, 0xed, 0xbc, 0xb3, 0xd4, 0x2a, 0x97, 0x01, 0x8b, 0x4b, 0xa1, 0x50, 0x9a, + 0x9b, 0x49, 0xd9, 0xb8, 0x43, 0x95, 0x64, 0xd4, 0x28, 0xd8, 0x56, 0x91, 0xf8, 0x1a, 0x8d, 0x3a, + 0x40, 0xee, 0x41, 0xcd, 0xbd, 0x3c, 0x2b, 0x53, 0xd3, 0xbd, 0x18, 0x73, 0x66, 0x14, 0x30, 0x35, + 0x35, 0x06, 0x6e, 0x65, 0x55, 0x15, 0xa9, 0x45, 0xe8, 0x11, 0x27, 0x35, 0xa4, 0x5a, 0x84, 0x65, + 0xe5, 0x37, 0x1d, 0x4a, 0x38, 0xc2, 0xbf, 0x91, 0xbb, 0x4a, 0x5f, 0xc4, 0xad, 0x35, 0x57, 0x29, + 0x84, 0x38, 0x33, 0x17, 0xe6, 0x37, 0xb5, 0xe5, 0xa1, 0x87, 0x56, 0x14, 0x95, 0x47, 0x8b, 0xc5, + 0xe5, 0xbf, 0x7e, 0x67, 0x7d, 0xcd, 0xcb, 0xee, 0x9a, 0xf7, 0xa5, 0x9a, 0xb7, 0x6b, 0xde, 0x7d, + 0xf6, 0x47, 0xd6, 0x0a, 0xdd, 0x6a, 0x9f, 0xd5, 0x45, 0xc6, 0x1d, 0x86, 0xbb, 0xce, 0xea, 0x6f, + 0x6a, 0x17, 0x86, 0x8a, 0x56, 0x70, 0x85, 0x27, 0xf7, 0x82, 0xfb, 0x9c, 0xdc, 0xbf, 0xb7, 0x26, + 0xf7, 0xc2, 0xf9, 0x27, 0xf7, 0x56, 0x55, 0x72, 0x09, 0x06, 0xb2, 0xf8, 0x33, 0xa3, 0xc5, 0x6c, + 0xf7, 0xb2, 0x17, 0xb1, 0x41, 0x1e, 0xd3, 0x47, 0xfb, 0xf5, 0x13, 0x7d, 0x7a, 0xf4, 0x8a, 0x36, + 0x74, 0x84, 0xe5, 0x83, 0xd6, 0x62, 0x78, 0xcf, 0x5c, 0x0c, 0xa0, 0xf1, 0xaf, 0x5e, 0x0b, 0xcf, + 0x48, 0xac, 0x35, 0x9e, 0x91, 0x58, 0x5b, 0x1b, 0x08, 0xb4, 0xed, 0xc4, 0xc2, 0x0e, 0x8d, 0x23, + 0x43, 0x17, 0x4a, 0x95, 0xbd, 0x06, 0xac, 0xb7, 0xba, 0xe5, 0xc6, 0x49, 0x3e, 0xcd, 0x75, 0xb2, + 0xc9, 0x5a, 0x27, 0x8b, 0x8d, 0xdb, 0xcf, 0x4f, 0x58, 0xeb, 0x64, 0x25, 0xdb, 0xd5, 0xc6, 0x62, + 0xf9, 0xa6, 0x76, 0x49, 0x68, 0x11, 0x19, 0x4b, 0x6b, 0xd9, 0xec, 0xcc, 0x7f, 0xad, 0xe0, 0x25, + 0x12, 0x08, 0xd1, 0x62, 0xae, 0x4f, 0xde, 0x95, 0xb9, 0xc2, 0x30, 0x16, 0x31, 0xbc, 0x74, 0xa3, + 0x5b, 0x95, 0x7e, 0x8d, 0x7e, 0x25, 0xcc, 0x3d, 0x0f, 0xc5, 0x07, 0x21, 0x9a, 0x20, 0xa9, 0xa8, + 0xb1, 0x4b, 0xfe, 0x81, 0x33, 0xe6, 0xd4, 0x1f, 0x38, 0x76, 0x4e, 0xfc, 0x81, 0x5b, 0xc2, 0x60, + 0x40, 0xd5, 0x2b, 0x0e, 0x15, 0xa1, 0xd5, 0x85, 0xc8, 0x87, 0x83, 0x01, 0x7f, 0x58, 0xe1, 0xd7, + 0xa2, 0x85, 0x9e, 0x80, 0x57, 0xa1, 0x17, 0x5e, 0x57, 0xab, 0xd2, 0xc3, 0x02, 0x01, 0x88, 0xcb, + 0x33, 0xb7, 0x8f, 0x6b, 0x67, 0xcf, 0x67, 0x8f, 0x9f, 0xc9, 0x4c, 0x4d, 0xa5, 0x2f, 0x76, 0xc9, + 0x04, 0xcc, 0x6f, 0xb4, 0x7c, 0x10, 0x8a, 0xac, 0x98, 0x2e, 0x66, 0x2c, 0x3f, 0x9e, 0xcd, 0x65, + 0xb0, 0x41, 0x23, 0x66, 0xdf, 0x06, 0xb4, 0x38, 0xa4, 0x84, 0x3b, 0xda, 0xe0, 0xe6, 0x6a, 0x31, + 0x8d, 0xca, 0x0f, 0x20, 0x71, 0x29, 0xe4, 0x4c, 0x4f, 0x7f, 0xa0, 0x9f, 0x1f, 0x95, 0x29, 0x94, + 0x77, 0xa1, 0x85, 0x5e, 0x37, 0xf5, 0xbf, 0x28, 0x10, 0xa7, 0x81, 0x6d, 0x52, 0xed, 0xc3, 0xaa, + 0xb4, 0x52, 0x20, 0xe8, 0x06, 0x31, 0x1a, 0xa2, 0x85, 0xc0, 0x2a, 0xfe, 0xed, 0x62, 0xf4, 0xc8, + 0x0e, 0xc2, 0x55, 0x0a, 0xad, 0xf7, 0x5f, 0xe7, 0xae, 0xf7, 0x3a, 0x55, 0x7a, 0xda, 0x5a, 0xef, + 0x8f, 0xce, 0xb3, 0x07, 0xdf, 0xd3, 0xe2, 0x7f, 0x8b, 0xdd, 0x35, 0x4d, 0xe7, 0xe8, 0xc7, 0xd9, + 0x5d, 0x73, 0x85, 0x7d, 0x7e, 0xbb, 0xea, 0xe6, 0x23, 0x3c, 0xf7, 0x6e, 0xb9, 0xe0, 0x3b, 0xee, + 0x96, 0x0b, 0xef, 0x93, 0xa1, 0xfc, 0x29, 0xd7, 0xf3, 0x76, 0x76, 0x1d, 0x2e, 0xb6, 0xae, 0x98, + 0xde, 0xd7, 0x3a, 0x64, 0x85, 0x99, 0x57, 0xac, 0xfd, 0x10, 0x96, 0xf5, 0x93, 0x78, 0x12, 0x99, + 0xfb, 0x61, 0x89, 0xb9, 0x13, 0xb2, 0x5c, 0xc1, 0xd8, 0x13, 0xdf, 0xb1, 0x58, 0x69, 0xf1, 0xfc, + 0xac, 0x94, 0x08, 0xa5, 0x26, 0x2b, 0x5d, 0x0d, 0xb2, 0x22, 0x21, 0x9d, 0xc3, 0x50, 0x4d, 0x36, + 0xb9, 0xf1, 0x1c, 0xa7, 0x4a, 0x67, 0x38, 0x74, 0x92, 0x13, 0xe6, 0x9e, 0xb5, 0xe2, 0x5b, 0x40, + 0x84, 0x19, 0xa0, 0xcc, 0xd4, 0x4d, 0x08, 0xf9, 0x6d, 0xfa, 0x1d, 0x60, 0x94, 0xe3, 0xb7, 0x72, + 0x64, 0xd6, 0xec, 0xe9, 0x2f, 0xf4, 0x89, 0x0f, 0xb5, 0xa9, 0x5b, 0xda, 0xc4, 0xe9, 0xec, 0xe1, + 0x21, 0xe3, 0xfd, 0x98, 0x2b, 0xe9, 0xe3, 0x17, 0xb4, 0x99, 0x6b, 0xda, 0x07, 0x03, 0x2c, 0x8f, + 0xb1, 0xe6, 0xda, 0x1f, 0x38, 0xa3, 0xf1, 0x15, 0xd3, 0x1c, 0x5a, 0x5d, 0xa8, 0x62, 0x3f, 0x08, + 0xbe, 0x52, 0xf1, 0xef, 0x16, 0xa2, 0xd5, 0xdb, 0x7c, 0x2d, 0xa1, 0x3f, 0x13, 0x37, 0xd8, 0x83, + 0x90, 0xd9, 0xa7, 0x61, 0xf6, 0xea, 0xce, 0x3a, 0x0b, 0x9c, 0x8d, 0x8e, 0x64, 0x6e, 0x1f, 0xae, + 0xce, 0x8e, 0x1c, 0xd7, 0x92, 0x51, 0xb8, 0x31, 0x09, 0x86, 0x29, 0xf0, 0x94, 0x87, 0x01, 0xcd, + 0x67, 0x1a, 0x32, 0x43, 0x99, 0xbf, 0xc9, 0xa1, 0x25, 0x8a, 0xdf, 0x13, 0x3a, 0x10, 0x8c, 0xd0, + 0xa3, 0x8a, 0xbc, 0x03, 0xac, 0xed, 0x21, 0x5f, 0x8b, 0xcf, 0x5f, 0x0f, 0x48, 0x10, 0x27, 0xf7, + 0x97, 0x34, 0x8b, 0x36, 0x78, 0x41, 0xbb, 0x42, 0x22, 0x10, 0x1c, 0xb9, 0xa8, 0x4d, 0x1d, 0xd2, + 0x4f, 0xde, 0xd2, 0x92, 0x43, 0x99, 0x99, 0xcf, 0xf5, 0x81, 0x0f, 0x53, 0xf1, 0x44, 0x66, 0xea, + 0x32, 0xc4, 0x3e, 0xc9, 0x41, 0x80, 0xc7, 0x87, 0xd2, 0x9f, 0x24, 0xe0, 0xd6, 0x84, 0x7e, 0x7a, + 0x90, 0x74, 0x0f, 0x56, 0xa3, 0xc4, 0x27, 0x6c, 0x94, 0xf3, 0xc9, 0xca, 0x46, 0x6d, 0xf9, 0x8d, + 0x68, 0x81, 0xbb, 0xad, 0x8d, 0x3a, 0xe8, 0x40, 0x48, 0x07, 0x77, 0x5b, 0x9b, 0xb8, 0xc6, 0xdd, + 0xd6, 0x46, 0xdd, 0x0a, 0x48, 0x84, 0x52, 0x53, 0xdc, 0xcb, 0xdc, 0xee, 0x4a, 0x5f, 0x99, 0x96, + 0x31, 0xd2, 0xc6, 0x88, 0x2a, 0xfd, 0x06, 0x05, 0x84, 0x79, 0x06, 0x58, 0xdc, 0x0c, 0xf8, 0x85, + 0x17, 0x8e, 0x15, 0xec, 0x17, 0x1a, 0x08, 0x6b, 0x04, 0xd0, 0xcc, 0xc6, 0x02, 0x01, 0x6b, 0x99, + 0x54, 0xbc, 0x81, 0xca, 0x6c, 0x7d, 0xc9, 0x3b, 0x50, 0x29, 0x6d, 0x8d, 0x15, 0x4b, 0x41, 0x66, + 0x41, 0xfc, 0x32, 0x54, 0xd4, 0xda, 0x49, 0xcd, 0x3b, 0x45, 0xad, 0x9d, 0xf8, 0xdb, 0xd7, 0x49, + 0x3d, 0xea, 0x8a, 0x7c, 0x9d, 0x15, 0x49, 0x0e, 0x3d, 0x5a, 0xb0, 0x11, 0x3f, 0x8c, 0x45, 0xf6, + 0x2f, 0x8a, 0xd0, 0x23, 0x75, 0xd4, 0x59, 0xe0, 0x4f, 0xbf, 0xc6, 0xde, 0xce, 0xdf, 0x71, 0x7f, + 0xaa, 0x4a, 0x6b, 0xd8, 0x1d, 0xd7, 0xdc, 0x12, 0x4d, 0x37, 0xbd, 0x7b, 0xdb, 0x72, 0x37, 0xb6, + 0xaa, 0xd2, 0x5e, 0xb4, 0x47, 0x98, 0xbb, 0x75, 0xe2, 0x8b, 0x60, 0x98, 0x66, 0x0a, 0x80, 0x09, + 0x56, 0xed, 0xc8, 0x1c, 0xbd, 0x0c, 0xb6, 0x70, 0xc3, 0xbb, 0x81, 0xf2, 0x69, 0xc8, 0xc0, 0xf2, + 0x5d, 0x78, 0x2a, 0x8b, 0x70, 0xda, 0x42, 0x05, 0xfd, 0x30, 0x26, 0xc1, 0xbf, 0x59, 0x80, 0x1e, + 0xdd, 0xea, 0x0b, 0x47, 0xd8, 0xba, 0x37, 0x2a, 0xa1, 0x76, 0x63, 0x1a, 0x74, 0xb2, 0x5b, 0x3a, + 0x4c, 0x04, 0x12, 0x09, 0x8b, 0xd9, 0xd2, 0x5f, 0xbf, 0x17, 0xbb, 0x05, 0x2c, 0x58, 0xb0, 0x5b, + 0x00, 0x0e, 0x7d, 0xf2, 0x0b, 0xa2, 0x0d, 0x40, 0x64, 0x6a, 0x66, 0xe7, 0x7f, 0xd5, 0x3e, 0x3d, + 0x16, 0x18, 0x81, 0x34, 0x99, 0xe9, 0xb1, 0xdc, 0x0a, 0x6c, 0x0d, 0x9e, 0x3f, 0x8c, 0xd0, 0xf5, + 0x46, 0x21, 0xa1, 0x8b, 0x58, 0xeb, 0x6c, 0x42, 0xd7, 0xe3, 0xd4, 0x90, 0x42, 0x8e, 0x42, 0x6c, + 0xdc, 0xe6, 0x63, 0xfd, 0x60, 0xaf, 0x4d, 0x00, 0xdb, 0x38, 0xc6, 0xa9, 0xd2, 0x39, 0x0e, 0x8d, + 0x70, 0xc2, 0x7c, 0x1d, 0x26, 0xfe, 0x16, 0x48, 0x9a, 0x75, 0x33, 0x19, 0x17, 0xdc, 0xcc, 0xd0, + 0xc6, 0x3e, 0xd3, 0x0e, 0x9d, 0x49, 0x25, 0x0e, 0xa5, 0xcf, 0x4e, 0xea, 0x17, 0xf1, 0x9a, 0xd1, + 0x27, 0xbf, 0xc2, 0xa9, 0x7d, 0x67, 0x88, 0xed, 0xb1, 0x0f, 0xe0, 0x54, 0xd1, 0x27, 0xa4, 0xac, + 0xbc, 0xbd, 0xe3, 0xc0, 0xba, 0xb5, 0xbe, 0x33, 0xa9, 0x78, 0xc2, 0xa8, 0x3b, 0xf1, 0x58, 0x05, + 0xc7, 0x6c, 0xbd, 0x08, 0x3d, 0x56, 0xb8, 0x72, 0x3f, 0x0c, 0x7d, 0xa2, 0xc1, 0xd4, 0x27, 0x16, + 0xdc, 0x55, 0x9f, 0xa0, 0xc6, 0x1d, 0xac, 0x4f, 0xd8, 0x64, 0x67, 0x98, 0x0b, 0x24, 0x61, 0xe3, + 0x9b, 0xaa, 0xd4, 0x8c, 0x64, 0x61, 0xde, 0x3e, 0x11, 0x9f, 0xcc, 0x19, 0x31, 0x08, 0x7c, 0x0d, + 0xca, 0x09, 0xd4, 0xf2, 0x0f, 0x1c, 0xe9, 0x8d, 0x3f, 0x70, 0x46, 0xdb, 0x2a, 0x86, 0x16, 0xa2, + 0x87, 0x73, 0x89, 0x1a, 0x4b, 0x66, 0x4b, 0x2e, 0xe7, 0xdc, 0x70, 0x1f, 0x9c, 0x73, 0x51, 0x68, + 0x01, 0xa8, 0xb6, 0x94, 0x4d, 0xd6, 0xe7, 0xb3, 0x49, 0x12, 0x14, 0x87, 0x59, 0x07, 0x0f, 0xcf, + 0x31, 0x89, 0xd9, 0xf5, 0xd0, 0x99, 0x77, 0x55, 0xe2, 0x4f, 0xb3, 0x8c, 0x5f, 0x47, 0xc5, 0x81, + 0xa0, 0x12, 0x22, 0x2a, 0xfe, 0x42, 0x2b, 0xc0, 0x99, 0x09, 0x14, 0x1f, 0x37, 0x7e, 0xe5, 0x74, + 0x3f, 0x1d, 0x46, 0x13, 0x91, 0x11, 0xb8, 0xe7, 0xea, 0xf8, 0x3f, 0xef, 0xd2, 0xfb, 0xef, 0x45, + 0xe8, 0x91, 0x9d, 0x4a, 0xc8, 0xb7, 0xe7, 0xc0, 0x9f, 0xc8, 0x5e, 0xf5, 0x02, 0xeb, 0x9c, 0xf3, + 0xed, 0x2c, 0x4c, 0x0b, 0xfe, 0x1c, 0x16, 0xa6, 0x8d, 0xb2, 0x2a, 0x6d, 0x47, 0xdb, 0x84, 0xb9, + 0x7b, 0x4b, 0x7c, 0x0c, 0x9c, 0xc0, 0x6c, 0x56, 0x15, 0x7a, 0x66, 0x1a, 0xbd, 0xc2, 0x6e, 0xc1, + 0x06, 0x4d, 0xb2, 0x09, 0x17, 0xa2, 0xf7, 0xc3, 0xd8, 0x84, 0xf7, 0xa0, 0x15, 0x6c, 0xb5, 0xc9, + 0x99, 0xf6, 0x0b, 0xd6, 0x30, 0x71, 0x77, 0xb7, 0xae, 0x58, 0xf6, 0x3b, 0x72, 0x21, 0x83, 0xe0, + 0x19, 0xc1, 0xda, 0xcd, 0xef, 0x8a, 0xbf, 0x59, 0x80, 0xca, 0xf3, 0x17, 0xcf, 0x0f, 0x63, 0x6b, + 0x90, 0x6d, 0x5b, 0x83, 0x63, 0xbe, 0xce, 0x20, 0x17, 0x15, 0xef, 0x61, 0x7b, 0xe0, 0x0f, 0x72, + 0x68, 0xf9, 0x3e, 0x65, 0xf7, 0x2e, 0xe6, 0x51, 0x5d, 0x6a, 0x25, 0xc9, 0x7b, 0x5a, 0xee, 0x4d, + 0x65, 0xb7, 0x64, 0x61, 0x81, 0x83, 0x72, 0x6e, 0x5e, 0xf1, 0x47, 0x70, 0x0e, 0x9e, 0xcf, 0x18, + 0x59, 0xce, 0x26, 0x2f, 0xdb, 0x67, 0xa3, 0xb5, 0x71, 0xb3, 0x2a, 0xd5, 0xa1, 0x5a, 0x61, 0xce, + 0x91, 0x11, 0x57, 0xe5, 0xf2, 0xb5, 0x39, 0x36, 0xa5, 0xdb, 0x25, 0xa8, 0x98, 0x10, 0xd8, 0xd9, + 0xe8, 0x24, 0xb6, 0x55, 0x1b, 0xc7, 0x01, 0xf7, 0x77, 0x83, 0xe3, 0xac, 0x99, 0x67, 0x17, 0x9a, + 0x4d, 0xc6, 0x2c, 0x36, 0xb3, 0xd1, 0xbc, 0x45, 0xc5, 0x30, 0x1a, 0x23, 0x30, 0xf9, 0xaa, 0xce, + 0xa0, 0x87, 0x8d, 0x4a, 0x9e, 0xf3, 0x26, 0xad, 0x13, 0x21, 0xf8, 0x95, 0x6b, 0xf9, 0x62, 0xc0, + 0x22, 0x0f, 0xbf, 0x81, 0x00, 0xb5, 0x7c, 0x31, 0xe9, 0xfc, 0xbb, 0xf6, 0xf8, 0x35, 0x0b, 0x99, + 0xc8, 0x05, 0x6c, 0xf4, 0x9a, 0x2a, 0xe6, 0xc3, 0x16, 0xa3, 0x93, 0x3e, 0xe9, 0xb5, 0xce, 0x78, + 0xe4, 0xab, 0xca, 0x1e, 0x3d, 0xa6, 0xc6, 0x78, 0x37, 0x17, 0x8e, 0xa1, 0x88, 0x95, 0x92, 0xbe, + 0x9b, 0x5b, 0x4a, 0xfe, 0xd0, 0x36, 0xd1, 0x87, 0x71, 0x37, 0xa0, 0x25, 0x9d, 0x41, 0x0f, 0x69, + 0xcf, 0x62, 0x2b, 0x83, 0x01, 0x13, 0x4b, 0x3a, 0x83, 0x1e, 0xda, 0x06, 0x03, 0xc6, 0xbf, 0x8b, + 0x4a, 0x4c, 0x67, 0x11, 0x6a, 0xc6, 0x22, 0x8e, 0xa8, 0x16, 0x54, 0x5c, 0x97, 0x99, 0xba, 0x8c, + 0xbb, 0x92, 0x06, 0x40, 0xc0, 0x9c, 0x0e, 0x42, 0x8f, 0x90, 0x9f, 0xb3, 0xc9, 0x18, 0x89, 0x2e, + 0x42, 0x22, 0x1c, 0x60, 0x40, 0x95, 0x6c, 0xe5, 0xe5, 0x5f, 0x44, 0x8b, 0xc8, 0x7d, 0x7a, 0x7a, + 0xd4, 0xf4, 0x24, 0x56, 0xa2, 0x00, 0x02, 0xc3, 0x43, 0x76, 0x00, 0x78, 0x6f, 0xc5, 0x68, 0x0a, + 0x49, 0x65, 0x4f, 0xa9, 0x4a, 0xbe, 0xed, 0x29, 0x15, 0xfa, 0xf6, 0xa7, 0x54, 0xa5, 0xdf, 0xe5, + 0x94, 0x6a, 0xe9, 0x7d, 0x9e, 0x52, 0xf1, 0xef, 0x90, 0x2b, 0x83, 0x4a, 0xa8, 0x53, 0xf1, 0xba, + 0x1a, 0x1b, 0x3a, 0xda, 0x49, 0xb8, 0xd5, 0x32, 0xb8, 0xcb, 0x6d, 0x4f, 0x11, 0x9f, 0xec, 0x0c, + 0x7a, 0xe0, 0x71, 0x51, 0x57, 0x23, 0x84, 0x67, 0x36, 0x9f, 0xf0, 0x19, 0x00, 0xb8, 0x6c, 0xcf, + 0xc1, 0xbf, 0x65, 0xbb, 0x6a, 0xca, 0x04, 0x5c, 0x65, 0xdf, 0x38, 0xae, 0xb4, 0x1e, 0x35, 0x4e, + 0xcd, 0x8c, 0xa6, 0x8f, 0x8f, 0x03, 0x2d, 0x78, 0xe7, 0xc7, 0x7c, 0xd7, 0xb8, 0x33, 0xe8, 0xb1, + 0xdd, 0x52, 0x95, 0x91, 0xf1, 0x26, 0x1d, 0x09, 0xb6, 0x5a, 0xe0, 0x75, 0x11, 0xa7, 0xcf, 0x1b, + 0x82, 0x55, 0x69, 0x60, 0x8a, 0x2b, 0xe9, 0x0f, 0x57, 0xa3, 0xc3, 0xe9, 0xaa, 0x93, 0xc1, 0x9f, + 0xd9, 0x7c, 0xdc, 0x8e, 0xdf, 0x89, 0xcc, 0x17, 0xef, 0x48, 0x28, 0xd5, 0xb9, 0x88, 0x92, 0xa7, + 0xb3, 0x4c, 0x54, 0x71, 0x95, 0xf1, 0xcb, 0x4e, 0xd6, 0x44, 0xd8, 0xf8, 0x9a, 0x2a, 0xbd, 0x8a, + 0x5e, 0x11, 0x4c, 0x1e, 0x24, 0xae, 0x63, 0x3d, 0x5f, 0xe8, 0xe3, 0x4b, 0xb7, 0xb4, 0xc4, 0x71, + 0x10, 0x1a, 0x60, 0xc5, 0xc3, 0xab, 0x95, 0x54, 0x88, 0x3a, 0xc8, 0xa1, 0x85, 0xb8, 0x68, 0x7e, + 0x1d, 0x5a, 0xe4, 0xf1, 0x79, 0x43, 0xe1, 0xb9, 0x42, 0xa3, 0x3a, 0x49, 0x24, 0x5f, 0x77, 0x44, + 0x91, 0x01, 0x8f, 0x5e, 0x09, 0x65, 0xc6, 0x17, 0x73, 0xab, 0xb2, 0xdc, 0x81, 0x62, 0xb0, 0x9c, + 0x84, 0x3c, 0xf1, 0x7c, 0x92, 0xed, 0xc0, 0x8a, 0x9f, 0xa0, 0x12, 0x93, 0x3e, 0xcf, 0xa3, 0x85, + 0xb8, 0x04, 0xc3, 0x2f, 0x1a, 0xff, 0xe6, 0x57, 0xa2, 0x45, 0xbb, 0xdb, 0x02, 0x1e, 0xb8, 0xb8, + 0x57, 0x2c, 0xc3, 0x47, 0xc5, 0x7f, 0x2c, 0x41, 0xab, 0x98, 0xa3, 0x9c, 0x9d, 0x8d, 0x4e, 0x43, + 0xfa, 0x7b, 0x37, 0x97, 0x17, 0x3b, 0xef, 0x43, 0x23, 0x78, 0x38, 0xb4, 0x6a, 0x45, 0x51, 0xb9, + 0x77, 0x1e, 0x49, 0x30, 0xe7, 0x51, 0xc4, 0x22, 0x23, 0x48, 0xe7, 0xb7, 0xe6, 0x90, 0xdf, 0xd4, + 0xae, 0x0a, 0x3d, 0x68, 0x3d, 0x86, 0x68, 0xbd, 0x8f, 0x68, 0xe3, 0x9c, 0xcd, 0xe6, 0xce, 0xb0, + 0xc0, 0x30, 0xdf, 0xdc, 0x6d, 0x67, 0x98, 0xa7, 0x35, 0x85, 0xf7, 0x8c, 0x85, 0xdf, 0x6e, 0xcf, + 0xd8, 0x62, 0x71, 0xe9, 0x45, 0x86, 0x0a, 0x56, 0x90, 0x4b, 0xcf, 0xd7, 0xbd, 0x06, 0xff, 0xde, + 0x6c, 0x7f, 0x59, 0x7d, 0xc3, 0x1c, 0x3b, 0xc4, 0x3c, 0xa4, 0xe8, 0xde, 0x11, 0xc8, 0xdf, 0x08, + 0xde, 0xf8, 0x8e, 0x1b, 0xc1, 0x37, 0xb5, 0xcb, 0x43, 0x65, 0xf2, 0x42, 0x8c, 0x22, 0x2f, 0x82, + 0x80, 0x80, 0xdf, 0xc7, 0xd6, 0xf0, 0x5a, 0xee, 0xd6, 0xf0, 0xf4, 0xbc, 0x5b, 0xc3, 0x37, 0xb5, + 0x8b, 0x43, 0x0b, 0x71, 0xd3, 0xad, 0x3d, 0x22, 0x8f, 0xdf, 0xa2, 0x3f, 0x1a, 0xbf, 0x2d, 0xfd, + 0x23, 0xf1, 0xdb, 0xa5, 0x7f, 0x0c, 0x7e, 0x5b, 0xf6, 0x3d, 0xf2, 0xdb, 0x3d, 0xaa, 0xe4, 0x41, + 0x6e, 0xa1, 0x30, 0xd3, 0x11, 0x57, 0xc1, 0xf0, 0x80, 0x12, 0xd5, 0x19, 0xf4, 0x80, 0x36, 0x6c, + 0x3b, 0x9c, 0x66, 0x56, 0xf3, 0x1f, 0x38, 0xba, 0x00, 0xff, 0xc0, 0x19, 0x13, 0xdf, 0xb4, 0x70, + 0xde, 0xe4, 0xd0, 0x43, 0xb9, 0x65, 0xfc, 0x30, 0x14, 0x2b, 0xad, 0x18, 0xad, 0x62, 0x4e, 0xc1, + 0xfe, 0x74, 0x2c, 0xf9, 0xdd, 0x42, 0x2c, 0xf9, 0xfb, 0x13, 0x5a, 0x37, 0xe6, 0xb0, 0xde, 0x6f, + 0x2f, 0x94, 0x7f, 0x4b, 0x06, 0xbb, 0x21, 0x97, 0xc1, 0xde, 0x5d, 0x0c, 0xfe, 0xde, 0xd8, 0xe8, + 0x6f, 0xf2, 0xd9, 0x68, 0xd3, 0x77, 0x66, 0xa3, 0x0f, 0x84, 0x96, 0xcb, 0x7f, 0x31, 0x27, 0x23, + 0xdd, 0x68, 0x49, 0xbc, 0xc5, 0xc6, 0xb4, 0x9d, 0xe3, 0x1c, 0xda, 0xe4, 0x84, 0x86, 0xd0, 0x1b, + 0xc8, 0xe5, 0x84, 0x25, 0x54, 0x9d, 0xcf, 0x3d, 0x87, 0xdf, 0xe1, 0xf2, 0x47, 0x9e, 0x13, 0xe1, + 0x24, 0x9e, 0x04, 0xbc, 0xca, 0xe1, 0x93, 0x0f, 0x43, 0x29, 0x79, 0xdc, 0x32, 0x97, 0x3b, 0xee, + 0xcb, 0xe3, 0x8e, 0x85, 0x4a, 0x6b, 0x8a, 0x84, 0x7c, 0xfe, 0x16, 0x28, 0xed, 0xff, 0x83, 0xbc, + 0x73, 0xab, 0x2a, 0xb9, 0xd0, 0x66, 0xa1, 0x30, 0x77, 0x10, 0x79, 0xf3, 0xf4, 0x7f, 0x67, 0xa3, + 0x33, 0x9f, 0x71, 0xc2, 0x44, 0x64, 0x4e, 0xdb, 0x8f, 0x14, 0xa1, 0x87, 0x72, 0x29, 0xfd, 0x30, + 0xcc, 0x2a, 0x6f, 0xd8, 0x3c, 0x78, 0xca, 0x0b, 0x9a, 0x55, 0x76, 0x36, 0x3a, 0x81, 0x43, 0x80, + 0x39, 0xa5, 0x1c, 0x3a, 0x47, 0x1b, 0x1e, 0x04, 0xe3, 0xc6, 0xce, 0x46, 0xa7, 0x69, 0x60, 0x74, + 0x47, 0xdc, 0x15, 0x07, 0x8b, 0xd0, 0x2a, 0xe6, 0x40, 0xec, 0x4f, 0xc7, 0x74, 0x4d, 0x0e, 0x53, + 0xf4, 0xdd, 0x38, 0xcc, 0xc6, 0x5a, 0x55, 0xfa, 0x39, 0x7a, 0x55, 0x28, 0xdc, 0x0a, 0x91, 0xa7, + 0x81, 0x62, 0xe7, 0x9d, 0x1c, 0x64, 0x4a, 0xe4, 0xe6, 0xff, 0x7f, 0xef, 0x94, 0xd0, 0x6e, 0x7e, + 0x01, 0xbd, 0x52, 0x78, 0x4a, 0x5c, 0x5b, 0x88, 0x1e, 0x34, 0xcd, 0x5b, 0xcc, 0x84, 0xf8, 0x45, + 0xee, 0x84, 0x58, 0x7f, 0x1f, 0x13, 0x62, 0x61, 0xa8, 0xa8, 0x7c, 0xe5, 0xf7, 0x63, 0xa8, 0x32, + 0x8d, 0x40, 0x0b, 0xee, 0xc9, 0x08, 0xd4, 0x51, 0xc8, 0x24, 0xf5, 0xc7, 0x57, 0xb8, 0x9a, 0x6c, + 0x8c, 0x1d, 0xf6, 0x5d, 0xf2, 0xbc, 0x04, 0xcb, 0xba, 0x2b, 0x2c, 0xd6, 0x0d, 0xce, 0xe1, 0xf0, + 0x6d, 0xb2, 0xee, 0x1c, 0xa6, 0xbd, 0xf1, 0x24, 0xa7, 0x4a, 0x2a, 0x87, 0x86, 0x38, 0xa1, 0xd0, + 0x08, 0x89, 0xfb, 0x4d, 0xdb, 0xa3, 0x39, 0xd9, 0xff, 0x44, 0x07, 0x2a, 0xff, 0xba, 0x08, 0xad, + 0xb4, 0xd7, 0xe8, 0x87, 0xb1, 0x7c, 0xb6, 0xdf, 0xc3, 0x19, 0x26, 0x6d, 0x0e, 0x18, 0xb0, 0x60, + 0x09, 0xf1, 0xf0, 0xdc, 0x81, 0xd6, 0x77, 0x15, 0x2f, 0x21, 0x66, 0xf1, 0x18, 0x66, 0x95, 0x82, + 0x9d, 0x21, 0xf2, 0xb6, 0xf1, 0x99, 0xc3, 0x30, 0xdc, 0x55, 0x4c, 0x2f, 0x39, 0xd0, 0x9c, 0xff, + 0x68, 0x1c, 0xfe, 0x47, 0xe3, 0xf0, 0x5d, 0x2c, 0x00, 0xef, 0x14, 0x92, 0x5a, 0xbf, 0x2f, 0xfd, + 0xfd, 0x4d, 0xb4, 0xcc, 0xac, 0x22, 0x6b, 0x1d, 0x20, 0x0e, 0x1a, 0x39, 0x49, 0xe2, 0x6a, 0x6d, + 0xe6, 0x03, 0xad, 0x7f, 0x00, 0xf7, 0xdd, 0xd0, 0x94, 0xf1, 0x3e, 0x15, 0x95, 0x7c, 0x73, 0x70, + 0xf9, 0x5f, 0x59, 0x12, 0x68, 0x69, 0xe1, 0x73, 0x1c, 0x2c, 0x2c, 0xd6, 0x29, 0x11, 0xb7, 0xaf, + 0x8d, 0x9c, 0x12, 0xdd, 0x97, 0x2c, 0xfa, 0x4f, 0x18, 0x59, 0x74, 0xe9, 0x3d, 0x91, 0xbf, 0x4f, + 0xa9, 0x34, 0xc7, 0xb0, 0x51, 0xf6, 0x3d, 0x1a, 0x36, 0x2a, 0x86, 0x38, 0xb4, 0xcc, 0x5e, 0xbb, + 0x3f, 0x96, 0x91, 0xf5, 0xe9, 0xbc, 0xd1, 0x25, 0xb1, 0xa0, 0x73, 0x07, 0xab, 0x62, 0x8c, 0x63, + 0x7c, 0x28, 0xe8, 0x65, 0xcb, 0x3f, 0x82, 0x60, 0xb0, 0x71, 0xa3, 0x2a, 0xbd, 0x88, 0x7e, 0x22, + 0xcc, 0x55, 0x96, 0xb8, 0x1a, 0x58, 0xa8, 0x71, 0x3f, 0x45, 0x1b, 0xbd, 0x6a, 0x32, 0xab, 0x8a, + 0xbf, 0x2e, 0x62, 0x4e, 0x4c, 0xcd, 0x7c, 0x3f, 0x44, 0x67, 0x9a, 0x47, 0x0b, 0x6e, 0x44, 0xd0, + 0xa4, 0x7b, 0xdb, 0x87, 0xb6, 0xab, 0xd2, 0x56, 0xf4, 0x0b, 0x61, 0xce, 0xfe, 0x30, 0xbc, 0xa9, + 0xc0, 0xd0, 0xcf, 0xf4, 0xe2, 0x5c, 0xdb, 0xd2, 0x2e, 0x54, 0xca, 0xd0, 0xe1, 0xcb, 0x73, 0xc6, + 0xdc, 0xda, 0x66, 0xd6, 0xd8, 0xb6, 0x0a, 0x70, 0xc8, 0x64, 0x77, 0x81, 0x87, 0xec, 0xe6, 0x10, + 0x63, 0x8b, 0xa9, 0x88, 0x71, 0xe8, 0x81, 0xcd, 0x4a, 0x64, 0x67, 0xa3, 0x13, 0x4f, 0x65, 0x63, + 0x6e, 0xd5, 0x1b, 0x4c, 0x9d, 0xb3, 0xbc, 0xc2, 0x28, 0x53, 0x7f, 0x0a, 0xf6, 0x2b, 0xc8, 0x0e, + 0xc2, 0x92, 0x03, 0x4f, 0x7d, 0x38, 0x35, 0x86, 0x9e, 0x31, 0x94, 0x84, 0xf5, 0xaa, 0x54, 0x83, + 0x9e, 0x15, 0xf2, 0x0b, 0x10, 0x1f, 0x82, 0x7e, 0xe8, 0x0c, 0x7a, 0xd2, 0x23, 0x3d, 0x38, 0x3b, + 0x9d, 0x4c, 0xff, 0xaa, 0x08, 0xf1, 0x2c, 0xf6, 0x0f, 0x63, 0x1a, 0xfd, 0xc2, 0x36, 0x8d, 0xf2, + 0x9c, 0x45, 0x68, 0x6b, 0xee, 0x6d, 0x0a, 0x6d, 0x52, 0x25, 0x27, 0x92, 0x84, 0x02, 0xbd, 0x60, + 0xac, 0xc2, 0x9d, 0x8d, 0x4e, 0x87, 0xd5, 0x65, 0x73, 0xcd, 0x1c, 0x0f, 0x5a, 0x42, 0xf3, 0xf3, + 0x2b, 0xd0, 0x82, 0xce, 0xa0, 0x11, 0xb6, 0x06, 0xff, 0x34, 0x4f, 0x6c, 0x8a, 0x98, 0x13, 0x9b, + 0xd5, 0xa8, 0x98, 0x30, 0x9d, 0xdd, 0x34, 0xfe, 0x56, 0x99, 0x6c, 0x7e, 0x33, 0xf1, 0x3c, 0x17, + 0xb2, 0xf1, 0x3c, 0x2b, 0xfe, 0xe3, 0x2a, 0xb4, 0x88, 0xcc, 0x4f, 0xbe, 0x3e, 0x97, 0x1b, 0x11, + 0xf3, 0x4c, 0x09, 0x81, 0x11, 0xf9, 0xe2, 0xd1, 0x7b, 0xba, 0x03, 0xfa, 0x3c, 0x8d, 0x7a, 0xcb, + 0x8c, 0x1a, 0x01, 0x88, 0xab, 0xcc, 0xec, 0x70, 0x19, 0x9d, 0x0a, 0x09, 0x10, 0x17, 0xf7, 0x20, + 0x87, 0x8a, 0x15, 0xaf, 0x2f, 0x62, 0x46, 0xd5, 0x2f, 0xae, 0x6d, 0x51, 0x25, 0xaf, 0x60, 0x02, + 0xc5, 0x5f, 0x6a, 0x53, 0xb7, 0x52, 0x89, 0xc1, 0x26, 0xb7, 0x9b, 0x5e, 0x19, 0x37, 0x5f, 0xd8, + 0xb6, 0x64, 0x86, 0xe4, 0xc9, 0xcc, 0xd7, 0xc7, 0xd8, 0x20, 0xfe, 0x10, 0x68, 0x20, 0x3d, 0xd2, + 0x63, 0x06, 0x86, 0x37, 0x1e, 0xe5, 0x1e, 0xa0, 0xf8, 0x53, 0xc7, 0x64, 0xb3, 0x0c, 0xfe, 0x28, + 0x87, 0x50, 0xc0, 0x88, 0x62, 0x67, 0xdc, 0xd6, 0xff, 0x71, 0x41, 0x9e, 0xb2, 0xd6, 0x8c, 0x76, + 0x47, 0xef, 0xeb, 0x93, 0x88, 0x50, 0x4c, 0x6e, 0xf1, 0x39, 0x70, 0x9e, 0x67, 0xc3, 0x20, 0xc2, + 0xcb, 0x43, 0xe9, 0x91, 0x1e, 0x08, 0x15, 0x07, 0x51, 0x34, 0xe0, 0x31, 0x18, 0x88, 0xe8, 0x28, + 0x33, 0x04, 0xf8, 0x71, 0x0e, 0x2d, 0x25, 0x72, 0x8a, 0x51, 0x9f, 0x45, 0x85, 0xc3, 0x5b, 0x42, + 0x7d, 0xea, 0x19, 0x4c, 0xa8, 0xd1, 0x3b, 0xaa, 0xf4, 0x4b, 0xc1, 0x46, 0x41, 0x7c, 0x3d, 0xfb, + 0xe1, 0x39, 0xed, 0xd2, 0x49, 0xb6, 0x78, 0x5b, 0x20, 0x46, 0x08, 0xa9, 0x47, 0x52, 0xf1, 0x18, + 0x4f, 0x5d, 0x86, 0xb8, 0x78, 0xe0, 0x1c, 0x0c, 0x7e, 0x1f, 0xd0, 0xc9, 0xb2, 0x8d, 0x2e, 0xff, + 0xbf, 0x70, 0x68, 0x39, 0x99, 0x00, 0x56, 0x24, 0x52, 0x7a, 0x6d, 0x75, 0x75, 0x5e, 0x6d, 0x4d, + 0x8c, 0xda, 0xb3, 0x9c, 0x2a, 0x9d, 0xe2, 0x84, 0xdc, 0x9c, 0xe2, 0x41, 0x0e, 0x8f, 0x6d, 0xe2, + 0x58, 0x2a, 0x7e, 0x34, 0x3d, 0x7d, 0x21, 0x15, 0x8f, 0x9a, 0x31, 0xfd, 0x59, 0x37, 0x69, 0xb8, + 0x8e, 0x90, 0x9a, 0xbe, 0x0c, 0x2a, 0x96, 0xa9, 0x74, 0xe9, 0xa3, 0xfd, 0x20, 0x72, 0x80, 0x92, + 0xa6, 0xcd, 0x7c, 0x40, 0x03, 0x91, 0xdc, 0x89, 0x76, 0xd1, 0xab, 0xd6, 0xa9, 0xf8, 0x51, 0xfd, + 0x8b, 0x31, 0x7d, 0x94, 0x3e, 0x4e, 0xa7, 0x9f, 0xba, 0x91, 0x4a, 0x8e, 0xc0, 0x9d, 0x4c, 0xdc, + 0x66, 0x10, 0x58, 0x72, 0xab, 0xc5, 0xff, 0x16, 0x2d, 0x0d, 0x84, 0x21, 0x9e, 0x54, 0xbb, 0xe2, + 0x8f, 0xcc, 0x15, 0xd6, 0x06, 0x02, 0x22, 0x80, 0x80, 0x6b, 0xcb, 0x20, 0x56, 0x9b, 0xcd, 0x32, + 0xc2, 0x1e, 0x98, 0x0d, 0x83, 0x76, 0xd2, 0x9b, 0xa4, 0xc0, 0x4c, 0x6c, 0x79, 0x79, 0x95, 0x84, + 0xfb, 0x81, 0xf0, 0x5b, 0x56, 0x15, 0x8a, 0xe7, 0xe8, 0x63, 0x33, 0x4e, 0x57, 0xed, 0xeb, 0xaa, + 0x54, 0x2f, 0xe4, 0xe7, 0x14, 0xd7, 0x9b, 0x75, 0x61, 0x1f, 0xf3, 0x83, 0x5a, 0xe1, 0x09, 0x4a, + 0xe6, 0x86, 0xad, 0x3e, 0xf9, 0x44, 0xf0, 0x7a, 0x79, 0xd0, 0x6f, 0x86, 0x74, 0xb1, 0xaa, 0x85, + 0x0a, 0xfb, 0x72, 0xb1, 0xd1, 0x5f, 0x40, 0x7f, 0x29, 0x94, 0x5b, 0x7c, 0xd2, 0xac, 0x1a, 0x1b, + 0xdd, 0xc5, 0x56, 0x97, 0x42, 0xf9, 0x58, 0x57, 0x8f, 0xd2, 0x6f, 0xeb, 0xea, 0xb1, 0xf4, 0xdb, + 0xbb, 0x7a, 0x94, 0x7d, 0x17, 0x57, 0x8f, 0x65, 0xf7, 0xeb, 0xea, 0x31, 0xc9, 0xa1, 0x32, 0x32, + 0x41, 0x1b, 0x43, 0x81, 0x4e, 0x9f, 0x57, 0x09, 0xd1, 0x67, 0x6a, 0x0f, 0x73, 0xaa, 0x74, 0x90, + 0x13, 0xec, 0x69, 0x62, 0x08, 0x62, 0x6c, 0x82, 0xf7, 0xac, 0xf5, 0xfe, 0x19, 0xd1, 0x39, 0xe0, + 0x93, 0x3e, 0xeb, 0x3c, 0xda, 0xff, 0x1b, 0x92, 0x73, 0xdd, 0xee, 0xb6, 0x0e, 0xa5, 0xd5, 0xe7, + 0x6f, 0x59, 0x07, 0x61, 0x71, 0xd7, 0xb9, 0xf7, 0x85, 0x21, 0x04, 0x6e, 0x7a, 0xf0, 0xaa, 0x36, + 0xd4, 0x9d, 0x89, 0x1e, 0xa4, 0x83, 0x5b, 0x43, 0x47, 0x37, 0x15, 0x3f, 0x4a, 0x72, 0x06, 0x69, + 0x99, 0xb2, 0xbd, 0x0a, 0x7c, 0x94, 0x43, 0x8b, 0x3d, 0x10, 0xc6, 0x6e, 0x85, 0xf5, 0xee, 0x0e, + 0x05, 0x89, 0xef, 0x00, 0xd3, 0x01, 0xeb, 0x4a, 0xb5, 0x23, 0x75, 0xfb, 0x9c, 0x36, 0x71, 0x3a, + 0x1b, 0xed, 0xce, 0xf6, 0x0e, 0x68, 0xc3, 0x3d, 0xe9, 0x2b, 0x03, 0x86, 0xe0, 0x4a, 0x9f, 0x5a, + 0xa6, 0xf1, 0x8c, 0x81, 0xc5, 0x82, 0xa7, 0x85, 0x11, 0xe4, 0xc7, 0xf1, 0x5e, 0x38, 0xe0, 0xcf, + 0x5c, 0xf9, 0x48, 0x3f, 0x3f, 0x4c, 0x57, 0x32, 0x2d, 0x84, 0x7f, 0x03, 0x95, 0x7a, 0x15, 0x33, + 0x06, 0x47, 0xf9, 0x03, 0x8c, 0xbf, 0x3c, 0x03, 0x17, 0x1f, 0x07, 0x85, 0x11, 0xfc, 0xe9, 0xa6, + 0x3e, 0x4e, 0x4f, 0x1f, 0x4a, 0x4d, 0x1f, 0x4d, 0x4f, 0x0f, 0x18, 0x8f, 0x54, 0x30, 0xb8, 0xfc, + 0x56, 0x84, 0x14, 0x7f, 0x8b, 0xcf, 0x0f, 0xc1, 0x70, 0x78, 0xcb, 0xcc, 0xc0, 0x80, 0xc5, 0x47, + 0xb5, 0xc4, 0x09, 0xed, 0x5a, 0xb7, 0xf5, 0xa6, 0x50, 0xf2, 0x84, 0xfe, 0xc1, 0x20, 0x7d, 0x33, + 0x99, 0x41, 0xe4, 0xdf, 0x35, 0xaf, 0x31, 0x3e, 0x48, 0x28, 0x91, 0x18, 0x95, 0xc6, 0x55, 0xc5, + 0x97, 0x52, 0x89, 0x63, 0x10, 0xc7, 0x14, 0x36, 0x3c, 0x43, 0x8e, 0x39, 0x43, 0xe3, 0xd2, 0x0c, + 0x4d, 0x65, 0xae, 0x74, 0x55, 0x6a, 0xd1, 0x64, 0x2a, 0x9e, 0xc0, 0x9a, 0xb3, 0xde, 0x77, 0x92, + 0x3e, 0xd7, 0x64, 0xdc, 0x5c, 0xfc, 0xa7, 0xa6, 0x1d, 0x01, 0x73, 0xa8, 0xf2, 0x95, 0x85, 0x5f, + 0xcc, 0x25, 0xdb, 0x49, 0x83, 0x85, 0x07, 0xba, 0x19, 0x9b, 0x53, 0x7c, 0xa6, 0x30, 0x7f, 0x26, + 0x36, 0x07, 0x76, 0x80, 0x64, 0x36, 0x17, 0xff, 0x1e, 0x2a, 0xc6, 0x03, 0x41, 0xca, 0x5e, 0x45, + 0xca, 0x7e, 0xa2, 0x60, 0xd9, 0x10, 0xab, 0x8f, 0x14, 0x4d, 0xc2, 0x99, 0x98, 0xb9, 0xc4, 0x35, + 0x39, 0xe5, 0xa6, 0x12, 0xc7, 0x6c, 0xc5, 0x99, 0x98, 0xfc, 0xef, 0xd0, 0xd2, 0x60, 0x9b, 0x3b, + 0xb2, 0x27, 0x10, 0x6a, 0x27, 0xe5, 0x3d, 0x34, 0xdf, 0xd6, 0xd9, 0xc8, 0x60, 0xc2, 0xd6, 0x49, + 0x2e, 0x74, 0xda, 0x28, 0x88, 0x6b, 0x20, 0x98, 0x04, 0x1b, 0x61, 0xd6, 0x56, 0xb6, 0x0d, 0x7b, + 0xf5, 0xdb, 0x68, 0x79, 0x8e, 0x80, 0xf0, 0xbd, 0x85, 0xd4, 0x5d, 0xfd, 0x2b, 0xf4, 0x40, 0xde, + 0x66, 0xff, 0xfd, 0x51, 0xff, 0x39, 0x7a, 0x20, 0xaf, 0x3f, 0xee, 0x2b, 0x30, 0x50, 0x0f, 0xa7, + 0x4a, 0x51, 0x0e, 0xfd, 0x4e, 0x00, 0xb9, 0x52, 0xec, 0xc0, 0x23, 0x66, 0xee, 0xd8, 0x97, 0x46, + 0x70, 0xdf, 0xd1, 0x88, 0x09, 0x47, 0x69, 0x7c, 0x13, 0x78, 0xc4, 0x87, 0x3c, 0x2c, 0x6d, 0x62, + 0x9a, 0x32, 0x9c, 0x36, 0x7a, 0x15, 0xc4, 0xb8, 0xcc, 0x07, 0xe7, 0xb2, 0x5f, 0xc4, 0xf1, 0x98, + 0x1b, 0xc2, 0x1c, 0x96, 0x51, 0x8c, 0xb8, 0x3d, 0x39, 0x12, 0x5e, 0xc5, 0xd0, 0x12, 0xb4, 0x3c, + 0x67, 0x3a, 0xf1, 0x3e, 0xf4, 0x20, 0x88, 0xa9, 0x7e, 0x08, 0x55, 0x06, 0x4f, 0xd4, 0xd1, 0x77, + 0xd3, 0x48, 0x40, 0x8c, 0x42, 0xe9, 0xe2, 0xe3, 0x70, 0x57, 0x96, 0x7d, 0xee, 0xee, 0x50, 0x6f, + 0xf6, 0xe0, 0x38, 0x65, 0x2f, 0x85, 0xf2, 0x60, 0x5e, 0x43, 0xc0, 0xf4, 0x35, 0x8c, 0x22, 0x86, + 0xd7, 0x30, 0x70, 0x4a, 0x1a, 0x3e, 0x80, 0x28, 0x98, 0x00, 0x29, 0x69, 0x16, 0x97, 0x7f, 0x0b, + 0x95, 0xb5, 0xbb, 0x3d, 0x7b, 0x7d, 0x7e, 0xa5, 0x8e, 0x7d, 0x0c, 0x8d, 0x18, 0xc7, 0xed, 0x29, + 0xe2, 0x13, 0xb6, 0xcf, 0x02, 0x84, 0xed, 0xf8, 0x7c, 0x08, 0xad, 0xf4, 0xfa, 0xc2, 0xb8, 0xe2, + 0x4e, 0x5b, 0x0c, 0x61, 0xb8, 0xfa, 0x48, 0xa2, 0xf5, 0x16, 0x44, 0x10, 0x9f, 0x62, 0xbb, 0xa6, + 0xf7, 0xcb, 0xec, 0xa9, 0x09, 0x36, 0x68, 0x27, 0x3c, 0xe7, 0x29, 0x17, 0xcc, 0xca, 0x94, 0xe9, + 0xb2, 0x85, 0xa2, 0x5d, 0x94, 0x5f, 0xa6, 0x0d, 0xa1, 0x50, 0x99, 0x24, 0x3e, 0x41, 0xc1, 0x32, + 0x6d, 0x59, 0x79, 0x0f, 0x5a, 0x41, 0xe1, 0x56, 0xf8, 0x4c, 0xe6, 0x0d, 0xc5, 0xbc, 0x44, 0xd1, + 0x91, 0x57, 0x16, 0x0d, 0xea, 0x77, 0xed, 0x22, 0x2d, 0x28, 0x2f, 0x0f, 0xef, 0x42, 0x25, 0x9d, + 0x41, 0x0f, 0xfb, 0x0c, 0x0a, 0x55, 0xa5, 0x4c, 0xa8, 0xf8, 0xa8, 0xf9, 0xb3, 0xc0, 0xd8, 0x58, + 0x78, 0xfc, 0x10, 0x87, 0x1e, 0x31, 0x3a, 0x6f, 0xaf, 0xe2, 0x69, 0x25, 0x05, 0x18, 0x0f, 0x2c, + 0xd0, 0xd7, 0x14, 0xdf, 0x50, 0xa5, 0x06, 0x61, 0x6e, 0x2c, 0x71, 0xc3, 0xdc, 0x4d, 0x80, 0x70, + 0x50, 0xe4, 0x55, 0x0d, 0xfd, 0xe2, 0x58, 0xf6, 0xd3, 0x18, 0x7d, 0xc0, 0x71, 0x6e, 0x6a, 0x1b, + 0xf1, 0x66, 0x80, 0x9e, 0x17, 0x72, 0x97, 0x96, 0xf8, 0x64, 0xce, 0xbb, 0x03, 0xf4, 0x59, 0x6c, + 0x86, 0x43, 0x56, 0x8c, 0x2f, 0xa1, 0x37, 0x00, 0x98, 0xcd, 0x85, 0xdf, 0x8c, 0x8a, 0x3d, 0xc4, + 0x02, 0xa7, 0x04, 0x89, 0x85, 0xae, 0x0c, 0xfa, 0xca, 0x04, 0x8a, 0x8f, 0xe1, 0x5f, 0x10, 0x78, + 0x10, 0xe2, 0xe9, 0xe9, 0x13, 0x97, 0xb3, 0x27, 0x6e, 0xd3, 0x27, 0x96, 0x4c, 0x3c, 0xfe, 0x30, + 0x87, 0x4a, 0x8c, 0x0f, 0xb8, 0x14, 0x50, 0x80, 0xe7, 0xd5, 0xfb, 0x3b, 0x9d, 0x14, 0x07, 0x2e, + 0x7e, 0x58, 0x59, 0xc4, 0x9f, 0xce, 0x57, 0x50, 0x65, 0x76, 0x64, 0x88, 0x5e, 0xc4, 0x1d, 0x22, + 0x97, 0xd5, 0x49, 0xc3, 0x32, 0xd1, 0x98, 0x36, 0x74, 0x5a, 0x8b, 0x9d, 0xac, 0x92, 0x2d, 0x42, + 0xfc, 0x4e, 0xb4, 0x94, 0xc6, 0x8a, 0x82, 0xba, 0x2c, 0x20, 0xcd, 0x12, 0x55, 0x69, 0x9d, 0x60, + 0x4b, 0x10, 0x9f, 0xa0, 0x5f, 0x60, 0xe7, 0x2d, 0xd0, 0x3a, 0x1b, 0x3a, 0x2f, 0xa3, 0xb2, 0xa0, + 0x12, 0xc2, 0xf3, 0xac, 0x31, 0xe0, 0x6d, 0xe8, 0x68, 0x27, 0xfa, 0x69, 0x19, 0x88, 0x1b, 0xf6, + 0x14, 0xb1, 0x5c, 0x1b, 0x38, 0x01, 0xa3, 0x1c, 0x0c, 0x78, 0x81, 0xbc, 0xb1, 0xf0, 0x6d, 0x88, + 0x7c, 0x08, 0x95, 0x19, 0x76, 0x59, 0xa8, 0xec, 0x22, 0x42, 0x93, 0xf4, 0x8d, 0x3d, 0x45, 0x7c, + 0xc9, 0xf8, 0xcc, 0x7b, 0x95, 0x1f, 0xae, 0x03, 0x1c, 0xd5, 0x8e, 0x60, 0x5d, 0x11, 0x4b, 0x6c, + 0xe4, 0x6d, 0x47, 0xac, 0x45, 0x90, 0xc6, 0xc8, 0x76, 0x42, 0xfc, 0x7e, 0xf4, 0x80, 0x01, 0x90, + 0x3a, 0x22, 0x01, 0x28, 0x77, 0x31, 0x29, 0x97, 0xbc, 0x0e, 0x91, 0x9f, 0x2a, 0x8a, 0x73, 0x94, + 0x4d, 0x03, 0x52, 0x16, 0x2c, 0x35, 0x9f, 0x0c, 0x1f, 0xb4, 0x5a, 0x2b, 0xbb, 0x23, 0xbe, 0x00, + 0x59, 0x9d, 0xdf, 0x6f, 0xa9, 0xf6, 0x02, 0xf8, 0x4e, 0x54, 0xda, 0x19, 0xf4, 0x38, 0xfd, 0xbe, + 0x6d, 0x24, 0x12, 0x6a, 0x71, 0xe1, 0x69, 0x49, 0x17, 0x04, 0xc6, 0x01, 0x46, 0xc4, 0x66, 0x12, + 0x7f, 0x4c, 0x9f, 0xd2, 0x37, 0x1e, 0xd8, 0x38, 0x6a, 0x06, 0xe5, 0x62, 0xeb, 0x25, 0xb3, 0x79, + 0x8c, 0x87, 0x8c, 0xf2, 0xd6, 0x1b, 0xb9, 0xbd, 0x61, 0xae, 0x53, 0x58, 0xa4, 0xf9, 0x72, 0x5b, + 0xc5, 0x73, 0xa8, 0x94, 0x59, 0x2a, 0x78, 0xfb, 0x57, 0xfc, 0x9d, 0xc6, 0xf6, 0xaf, 0xf8, 0x3b, + 0x49, 0x20, 0x65, 0xbc, 0x64, 0xc1, 0x36, 0x4e, 0x7e, 0x57, 0x6c, 0x47, 0xa5, 0x4c, 0x43, 0x30, + 0x4a, 0xbb, 0x61, 0xf1, 0x2b, 0x91, 0xc9, 0x6f, 0xbe, 0x1c, 0x2d, 0xa1, 0x41, 0x12, 0xa9, 0x57, + 0xb1, 0xf1, 0x69, 0x3e, 0x96, 0xb4, 0xc0, 0x7a, 0x2c, 0xa9, 0xe2, 0xc3, 0x87, 0x50, 0x89, 0xc5, + 0x56, 0x7f, 0x8e, 0x4a, 0x4d, 0xad, 0xcf, 0xb4, 0x51, 0x11, 0x8d, 0x89, 0x85, 0x8b, 0xa5, 0x66, + 0x98, 0x4d, 0x57, 0x9d, 0xcc, 0xa6, 0xf0, 0x6b, 0x6d, 0x96, 0x29, 0x30, 0x41, 0x12, 0xcb, 0xd4, + 0x72, 0x2b, 0x92, 0x27, 0x6b, 0x93, 0xda, 0x95, 0xf7, 0x3c, 0x0f, 0x04, 0x42, 0xb7, 0xa0, 0xe2, + 0x06, 0x26, 0xd6, 0x67, 0x14, 0x6e, 0x54, 0x9b, 0x6f, 0x42, 0x81, 0x01, 0xc5, 0x55, 0x97, 0x8a, + 0x27, 0xb0, 0x2c, 0x03, 0x6f, 0x5c, 0xd7, 0xb1, 0x2f, 0xfc, 0x38, 0x4d, 0x8b, 0xee, 0x42, 0xe6, + 0x59, 0x53, 0x7a, 0xb0, 0xb8, 0x26, 0x9f, 0x74, 0xc1, 0x13, 0xc6, 0x3d, 0x68, 0x39, 0x88, 0xf7, + 0x78, 0xde, 0x86, 0x3d, 0x6e, 0x1a, 0x03, 0xa5, 0xb8, 0xf6, 0xa7, 0xaa, 0xf4, 0xb2, 0x90, 0x9b, + 0x26, 0x3e, 0x6d, 0x13, 0x63, 0x18, 0xfd, 0xda, 0x0c, 0x77, 0x02, 0x7e, 0x61, 0xb9, 0x19, 0x79, + 0x3f, 0x2a, 0x75, 0xe3, 0x95, 0xe1, 0x71, 0xb7, 0xf9, 0xfc, 0x2d, 0xd4, 0xba, 0x93, 0xa7, 0x3c, + 0x48, 0x16, 0x0a, 0xe9, 0x76, 0xfa, 0xfc, 0x1f, 0x93, 0x53, 0x2c, 0xb7, 0xc5, 0x6c, 0x25, 0x1a, + 0xa9, 0x21, 0xed, 0x30, 0x68, 0x7c, 0x8c, 0x43, 0xcb, 0xda, 0xdc, 0x1d, 0x7e, 0xcf, 0xde, 0x66, + 0xa5, 0x1d, 0xcb, 0xd6, 0x0a, 0x35, 0xb8, 0xe4, 0x45, 0xcf, 0xdc, 0x4a, 0xb0, 0x60, 0x2f, 0xea, + 0x80, 0x37, 0x96, 0xc0, 0xfa, 0x92, 0x93, 0x5f, 0x14, 0xa0, 0x4c, 0xfd, 0xd4, 0x0d, 0xfa, 0xc6, + 0xbe, 0xa1, 0x0e, 0xa7, 0xbe, 0x3e, 0x6a, 0x8a, 0xf3, 0x10, 0x66, 0x56, 0xce, 0xc9, 0xcb, 0xbc, + 0x9c, 0x59, 0x3c, 0xc7, 0x43, 0x5a, 0xc6, 0x4c, 0xb3, 0xbd, 0x9b, 0x49, 0x9a, 0x6f, 0xbc, 0x9b, + 0xf9, 0x78, 0xfe, 0x9b, 0x8e, 0x24, 0xc5, 0x18, 0x51, 0xfa, 0xe8, 0x56, 0xbb, 0xf9, 0x5c, 0x64, + 0xc9, 0xdd, 0x8a, 0x22, 0x0f, 0x47, 0xd2, 0xa2, 0xe0, 0x7d, 0x1e, 0xfa, 0x7c, 0xe4, 0x93, 0xf9, + 0x45, 0x61, 0x1e, 0x75, 0x6d, 0x2c, 0xdd, 0x7d, 0x2b, 0xe7, 0x05, 0xc9, 0x3d, 0x68, 0x31, 0x5e, + 0x25, 0xdb, 0x9b, 0xe8, 0x3d, 0x17, 0xf2, 0xf8, 0x1d, 0x05, 0x89, 0x92, 0x49, 0x27, 0x1b, 0xed, + 0x07, 0xed, 0x15, 0xa2, 0x79, 0x6e, 0x6f, 0x22, 0xf6, 0xb7, 0xee, 0x74, 0xef, 0x15, 0x53, 0xbe, + 0x4f, 0xc5, 0x27, 0xa0, 0x0f, 0x71, 0x67, 0x1a, 0x2f, 0x9a, 0xca, 0x94, 0x14, 0x39, 0xf9, 0x60, + 0xcd, 0x33, 0x96, 0xfd, 0xa5, 0x3c, 0xc7, 0xfe, 0x62, 0x19, 0x58, 0xec, 0xaf, 0x58, 0x95, 0xdd, + 0xe5, 0x15, 0xab, 0x65, 0x79, 0xaf, 0x58, 0xf5, 0x73, 0xec, 0x95, 0x60, 0xb0, 0x90, 0x90, 0x97, + 0x76, 0x98, 0x2b, 0xc1, 0xef, 0x98, 0xdd, 0x79, 0x5f, 0xe1, 0x08, 0xf1, 0x7a, 0x81, 0x67, 0x75, + 0xe3, 0x83, 0x74, 0x7c, 0x20, 0x7f, 0xea, 0xf6, 0x39, 0x3d, 0xd6, 0x95, 0x8a, 0x47, 0x33, 0x87, + 0xaf, 0xb3, 0xb7, 0x84, 0xff, 0x03, 0x87, 0x8a, 0x0d, 0xe3, 0x08, 0x35, 0x81, 0xdc, 0xe0, 0x54, + 0xe9, 0x0b, 0x4e, 0x30, 0xc1, 0xe2, 0x65, 0xce, 0xac, 0x4c, 0x8e, 0xad, 0x86, 0xb2, 0x6d, 0x78, + 0x5e, 0x88, 0x94, 0x43, 0x0b, 0x4d, 0xc5, 0x27, 0x4c, 0x2b, 0xa2, 0x41, 0x87, 0x9e, 0x2b, 0x5c, + 0x3d, 0xa8, 0x9f, 0xb0, 0x6c, 0xce, 0xe9, 0xe9, 0x43, 0x99, 0x23, 0xdd, 0x77, 0xa2, 0xdd, 0xd0, + 0x1c, 0x6d, 0x74, 0x1c, 0x6b, 0xd0, 0xf1, 0x4f, 0xb1, 0x3e, 0x46, 0x24, 0x9b, 0x54, 0x7c, 0x02, + 0xac, 0x30, 0xa6, 0x25, 0x18, 0x4f, 0x19, 0xb2, 0x1c, 0x70, 0x27, 0x10, 0xeb, 0x05, 0xa8, 0xbf, + 0xb2, 0x59, 0x63, 0xfe, 0x5f, 0x73, 0xe6, 0xc1, 0x02, 0xd8, 0x53, 0xa6, 0x38, 0x55, 0xf2, 0x09, + 0x14, 0x26, 0xee, 0xb2, 0x22, 0x8b, 0x1f, 0xb9, 0xa1, 0x47, 0xbb, 0xc0, 0x68, 0x9b, 0x39, 0x38, + 0x03, 0x9f, 0x4e, 0xb9, 0x5e, 0x6a, 0x76, 0x35, 0x6c, 0x9e, 0x4d, 0xc6, 0xe4, 0x1d, 0x0d, 0x0d, + 0xf0, 0xab, 0xae, 0x7e, 0x6b, 0x3d, 0x05, 0x6e, 0x92, 0xb6, 0xee, 0x90, 0xeb, 0x67, 0x93, 0x31, + 0x57, 0x83, 0xab, 0xd9, 0x25, 0x6d, 0x75, 0xbd, 0x2d, 0x35, 0xbb, 0xb6, 0x37, 0x18, 0x48, 0xf5, + 0x75, 0xdf, 0xd4, 0xbe, 0x16, 0xfa, 0x99, 0x5c, 0x6c, 0xd0, 0x91, 0x97, 0x50, 0x32, 0x72, 0xb1, + 0x41, 0x45, 0x5e, 0x0c, 0x44, 0xe4, 0x65, 0x76, 0x1a, 0xf2, 0x12, 0x4a, 0xc2, 0x7c, 0xda, 0x6c, + 0x2f, 0x42, 0x9e, 0x80, 0x3f, 0xdc, 0xd1, 0x4e, 0x18, 0x3e, 0xd8, 0x72, 0x88, 0xf9, 0x94, 0x01, + 0x8b, 0x2f, 0x5a, 0xbf, 0xe1, 0x69, 0x1a, 0x23, 0x82, 0x2a, 0x18, 0x22, 0x43, 0xf0, 0xa4, 0x4d, + 0xfa, 0xf8, 0x97, 0x99, 0xa9, 0x9b, 0x20, 0x5e, 0x43, 0xc7, 0xc9, 0x0c, 0x11, 0x3e, 0x84, 0x96, + 0xe2, 0x45, 0x61, 0x32, 0xb6, 0x07, 0xe7, 0xb6, 0x97, 0x1a, 0x38, 0xb5, 0xeb, 0x49, 0x4c, 0x51, + 0x36, 0x9b, 0xb8, 0xca, 0xda, 0xb7, 0xc8, 0x12, 0x05, 0xa9, 0xf1, 0x9b, 0xda, 0x45, 0x47, 0xb8, + 0xa2, 0x15, 0x9c, 0x6c, 0x43, 0xe6, 0x77, 0x23, 0x08, 0xd3, 0xd3, 0xc0, 0xec, 0xa1, 0x2b, 0x49, + 0x1b, 0x49, 0x40, 0xac, 0xbc, 0x44, 0xf1, 0x09, 0xf3, 0xc3, 0xa1, 0x8d, 0x8e, 0x6b, 0xc3, 0x3d, + 0x30, 0x57, 0x52, 0xf1, 0x23, 0xe9, 0x91, 0x1e, 0x87, 0xab, 0x4e, 0xce, 0xcb, 0xc2, 0xb7, 0xa2, + 0x85, 0x11, 0x77, 0x4b, 0xb8, 0x7c, 0x55, 0xe1, 0x30, 0xc7, 0x2c, 0xdf, 0x32, 0x9e, 0xf9, 0x25, + 0x62, 0x31, 0xc9, 0x25, 0x3e, 0x53, 0x90, 0x67, 0x41, 0x27, 0xea, 0x17, 0x0f, 0xa7, 0x27, 0xbe, + 0x36, 0x8e, 0xd9, 0x30, 0x3a, 0xff, 0x15, 0x87, 0xca, 0xcc, 0xed, 0x9d, 0x98, 0xdf, 0x1e, 0x22, + 0xcd, 0x19, 0xe4, 0x54, 0xe9, 0x08, 0x27, 0xd8, 0xd3, 0xc4, 0x03, 0x96, 0xde, 0x06, 0x4e, 0x31, + 0xfe, 0x40, 0xa8, 0xdd, 0xdd, 0xb6, 0x4e, 0xa1, 0x51, 0xcb, 0xab, 0xee, 0x44, 0xbb, 0xf5, 0x33, + 0x93, 0xd9, 0xe8, 0x08, 0xbb, 0x3d, 0x99, 0x99, 0x34, 0x35, 0x66, 0x46, 0x44, 0x2f, 0x88, 0x50, + 0xed, 0xd0, 0x06, 0xbe, 0x74, 0xee, 0xdc, 0x46, 0x01, 0x7d, 0x27, 0x5d, 0x75, 0x4e, 0xf8, 0x2d, + 0xdb, 0x6b, 0xc2, 0x47, 0x39, 0xb4, 0xd0, 0x1d, 0x52, 0xdc, 0xe5, 0x0f, 0x93, 0x51, 0x7f, 0xa4, + 0xf0, 0x25, 0xdf, 0x90, 0xe2, 0x06, 0xcd, 0x8e, 0xe0, 0x8a, 0x9b, 0x28, 0x5d, 0xf2, 0x7c, 0x3a, + 0x56, 0xaf, 0x18, 0x51, 0xa0, 0x12, 0x24, 0xf0, 0x54, 0x7c, 0x40, 0x8f, 0x1d, 0xd6, 0x26, 0x47, + 0xaa, 0x1d, 0x5a, 0xdf, 0x19, 0x98, 0x75, 0x66, 0x40, 0x6b, 0xc0, 0xaf, 0x92, 0x09, 0x35, 0xc2, + 0x16, 0xc9, 0xf9, 0x0d, 0xb1, 0x8d, 0x95, 0x93, 0xd1, 0xaa, 0x9c, 0x7b, 0xb4, 0xea, 0x0d, 0x54, + 0x18, 0x32, 0x10, 0x82, 0xcc, 0xfc, 0x86, 0x10, 0xa4, 0x5f, 0xbb, 0x08, 0xec, 0x23, 0x75, 0x7b, + 0xac, 0x1a, 0x62, 0x2d, 0xd1, 0xb1, 0x33, 0xfa, 0x3c, 0x3d, 0xd1, 0x6f, 0x44, 0x3f, 0x33, 0x73, + 0x7f, 0x97, 0xe7, 0x70, 0x5f, 0x46, 0xa5, 0xcc, 0x06, 0x78, 0x5f, 0x59, 0x5f, 0x44, 0x25, 0xe6, + 0x1c, 0xfc, 0x56, 0x4f, 0xf0, 0x7e, 0x3b, 0xdb, 0x18, 0x1e, 0x51, 0xb4, 0x55, 0xb0, 0xa4, 0x5a, + 0x26, 0xfa, 0x3e, 0x66, 0x8d, 0x53, 0xb7, 0xc0, 0xc8, 0x75, 0x27, 0xda, 0x65, 0x1a, 0xb6, 0xee, + 0x44, 0xbb, 0xa4, 0x37, 0x9b, 0x6c, 0x93, 0xee, 0xe0, 0x8c, 0x76, 0xe4, 0xac, 0x76, 0xb5, 0x2b, + 0xf3, 0x51, 0x6f, 0x45, 0x8c, 0x43, 0x25, 0xe6, 0x94, 0xe1, 0x37, 0xa2, 0x92, 0xdd, 0xad, 0x4e, + 0xe6, 0x18, 0xb7, 0x8c, 0x9e, 0x48, 0x98, 0x50, 0x71, 0xa9, 0x39, 0x1d, 0xf0, 0x22, 0xb6, 0x12, + 0x78, 0x27, 0x2a, 0xa5, 0x1f, 0x4c, 0x6c, 0x50, 0xe2, 0x4c, 0xc5, 0xc2, 0x49, 0x44, 0x1a, 0x9b, + 0xab, 0x1a, 0x9b, 0x5a, 0xd1, 0xc5, 0xa3, 0x15, 0xb9, 0x42, 0x20, 0xd6, 0xcd, 0xcb, 0x18, 0xd9, + 0xce, 0x94, 0xde, 0xdd, 0xaa, 0xf4, 0x6b, 0xc1, 0x9e, 0x22, 0x6e, 0xb3, 0x1d, 0xfa, 0x60, 0x29, + 0x1e, 0x6f, 0x3e, 0xcc, 0xd1, 0x0d, 0x79, 0xab, 0x7e, 0x26, 0x7d, 0xe2, 0x32, 0x23, 0x60, 0xe3, + 0x1d, 0x6b, 0x3a, 0xe1, 0xaa, 0x83, 0xb3, 0xd4, 0x54, 0xe2, 0x58, 0x66, 0xf2, 0x6b, 0xfd, 0xe4, + 0x8c, 0xab, 0x4e, 0xb6, 0x53, 0xe7, 0x77, 0xa0, 0xe5, 0x0c, 0x80, 0x69, 0x27, 0x91, 0xbd, 0x73, + 0xd3, 0xc4, 0x55, 0x39, 0x95, 0xa1, 0x2d, 0xce, 0xc5, 0xe3, 0x7f, 0x81, 0x96, 0xb4, 0xfb, 0xfc, + 0x4d, 0xbe, 0xf7, 0x8d, 0x27, 0xe1, 0xd7, 0xab, 0xd2, 0x53, 0x82, 0x01, 0x13, 0xcb, 0x4d, 0x02, + 0xfa, 0x68, 0x54, 0xbb, 0x3a, 0x04, 0x5c, 0x4e, 0x3f, 0x71, 0xf5, 0x9b, 0xda, 0x25, 0xc2, 0xa2, + 0xf2, 0xcc, 0x92, 0xca, 0xbf, 0x90, 0x0d, 0x64, 0xbe, 0x11, 0x2d, 0x69, 0x77, 0xef, 0x27, 0xb4, + 0x16, 0x12, 0x5a, 0x2f, 0x10, 0xb7, 0x45, 0x0a, 0x13, 0xd7, 0xe4, 0x54, 0x09, 0x53, 0xbc, 0x74, + 0xa5, 0x30, 0x45, 0xc8, 0xc2, 0x6f, 0x27, 0xe7, 0x1e, 0xbe, 0x90, 0xe2, 0x25, 0x54, 0x17, 0x11, + 0xaa, 0xc4, 0xb4, 0xce, 0xc2, 0xc5, 0x47, 0x59, 0xca, 0xfa, 0xe8, 0x05, 0x7d, 0xf4, 0xac, 0x49, + 0x56, 0x66, 0x31, 0xf9, 0x57, 0xed, 0xb7, 0x5c, 0x48, 0xac, 0x16, 0xea, 0x5c, 0xf2, 0x68, 0x6e, + 0xf5, 0x88, 0xac, 0xb2, 0xb3, 0xd1, 0x89, 0x27, 0x1b, 0xf5, 0x20, 0x3c, 0x80, 0x96, 0x53, 0xb5, + 0xcf, 0x19, 0x08, 0xb4, 0x79, 0x03, 0xfb, 0xfc, 0x54, 0x11, 0xdf, 0xae, 0x4a, 0x5b, 0x85, 0xdc, + 0x34, 0xf1, 0xe5, 0x1c, 0x92, 0xf4, 0x68, 0xbf, 0xff, 0x13, 0x78, 0xac, 0x44, 0x3b, 0x74, 0x53, + 0x1b, 0xb8, 0xae, 0x1d, 0x1b, 0xd7, 0x47, 0x2f, 0x98, 0x4a, 0xcc, 0x73, 0xeb, 0xd7, 0xa7, 0xaf, + 0xa8, 0x72, 0x2e, 0x2d, 0xfe, 0x63, 0x0e, 0x95, 0x84, 0x3b, 0x76, 0xfb, 0x15, 0x12, 0xf4, 0xae, + 0x98, 0x84, 0x5c, 0xa2, 0x47, 0x66, 0x16, 0x5c, 0xec, 0xcc, 0x6b, 0x04, 0x29, 0x08, 0xe4, 0xe0, + 0x8f, 0x4f, 0x62, 0x51, 0x78, 0xa4, 0x27, 0x3d, 0xd2, 0x03, 0xca, 0x3f, 0x99, 0xa1, 0xf4, 0xe9, + 0x78, 0x0a, 0xd0, 0x63, 0xfd, 0xe9, 0xde, 0x2b, 0x5a, 0x6f, 0x9f, 0x36, 0x3c, 0x98, 0x1d, 0x4b, + 0x68, 0x89, 0xa1, 0xf4, 0xd8, 0x24, 0xe6, 0xc4, 0xe4, 0x55, 0xe8, 0x74, 0xe2, 0x0a, 0x79, 0xd4, + 0xff, 0xa2, 0xd6, 0x3f, 0x60, 0x42, 0xb2, 0x9f, 0x9d, 0x96, 0xad, 0x2a, 0xf0, 0x67, 0x39, 0xb4, + 0xe8, 0xfd, 0x80, 0x5f, 0x31, 0xde, 0x3b, 0x07, 0xab, 0xba, 0x00, 0x30, 0x71, 0xdf, 0xbd, 0x54, + 0x90, 0xbe, 0xac, 0x10, 0x4b, 0xb0, 0x15, 0x34, 0x60, 0xdf, 0xb2, 0x86, 0x50, 0x3e, 0x7f, 0xa3, + 0x08, 0x95, 0x86, 0x94, 0x48, 0xe8, 0x40, 0x63, 0xa0, 0xcd, 0xe7, 0x39, 0x40, 0x35, 0x87, 0x0f, + 0x8a, 0x54, 0x69, 0xa8, 0x48, 0x60, 0x53, 0xc4, 0xff, 0x9b, 0xa3, 0xba, 0x16, 0x6c, 0xec, 0xc6, + 0x5b, 0x95, 0x58, 0xc8, 0x3e, 0x3c, 0x90, 0x99, 0x3a, 0x01, 0x8f, 0xdc, 0xcc, 0x26, 0x47, 0x5c, + 0xdb, 0xb6, 0xd5, 0xd7, 0xb9, 0xa4, 0xe6, 0xfa, 0x5d, 0x72, 0x7d, 0xb3, 0xfc, 0x56, 0x25, 0xcc, + 0xeb, 0x9f, 0xe8, 0x9f, 0x8f, 0x55, 0x11, 0xf9, 0xcf, 0x29, 0xd7, 0x6f, 0xab, 0x6f, 0x68, 0x96, + 0xb6, 0xee, 0x72, 0x35, 0x34, 0xd7, 0xcb, 0x3b, 0xa5, 0xad, 0x58, 0x03, 0x69, 0xd8, 0x0e, 0xe8, + 0x77, 0xa2, 0xdd, 0xa6, 0xc6, 0x91, 0x8a, 0x27, 0x72, 0x88, 0xe1, 0xbd, 0x1d, 0xac, 0x6b, 0xa7, + 0x6e, 0xd0, 0x2d, 0x31, 0x39, 0x02, 0xde, 0xdb, 0xd0, 0xe3, 0x9a, 0x1a, 0xc3, 0x0d, 0x03, 0x36, + 0x93, 0x8d, 0x0e, 0xa7, 0xe2, 0x51, 0xed, 0xea, 0xb9, 0xcc, 0xd4, 0x09, 0x43, 0x1e, 0xc1, 0x4d, + 0x48, 0x9f, 0xbd, 0xae, 0xf5, 0x5d, 0xa5, 0xeb, 0x0d, 0x1a, 0xf2, 0xf9, 0x98, 0x7e, 0xe2, 0x2a, + 0x75, 0xe0, 0x80, 0x58, 0x80, 0x84, 0xa8, 0xd6, 0x3b, 0x0e, 0x08, 0x77, 0xa2, 0xdd, 0x32, 0xdb, + 0x1d, 0xfc, 0xdf, 0x72, 0x68, 0x55, 0x7b, 0x47, 0x5b, 0xc4, 0xf7, 0x76, 0xc0, 0xaf, 0x34, 0x91, + 0xb2, 0x69, 0x17, 0xc2, 0x91, 0xf5, 0x97, 0x9c, 0x2a, 0x4d, 0x71, 0x42, 0x61, 0x1c, 0xf1, 0x04, + 0xa7, 0x0d, 0x4d, 0x65, 0xa3, 0xfd, 0x5a, 0x34, 0x39, 0x9b, 0x1c, 0x69, 0x94, 0x5d, 0xdb, 0x65, + 0x57, 0xf3, 0x5b, 0xb3, 0xc9, 0x58, 0xfd, 0x1b, 0x3b, 0xa4, 0xad, 0xae, 0x66, 0xdc, 0x50, 0x0b, + 0x3a, 0x62, 0x9c, 0x9f, 0x8c, 0x67, 0x3f, 0x3b, 0x6d, 0x8e, 0xa2, 0x39, 0x6d, 0x53, 0xf1, 0x41, + 0x73, 0x36, 0xb0, 0x63, 0x74, 0x27, 0xda, 0x6d, 0x90, 0x9b, 0x4d, 0x8e, 0x40, 0xb3, 0x4c, 0xc4, + 0x3b, 0xd1, 0x2e, 0xc8, 0xad, 0x8f, 0x26, 0x52, 0xc9, 0x11, 0xed, 0xdc, 0xe1, 0xcc, 0xd8, 0x98, + 0x5c, 0xb8, 0xba, 0xfc, 0x15, 0x0e, 0xad, 0x08, 0x29, 0xc1, 0x36, 0xb7, 0x47, 0xd9, 0xe1, 0xdf, + 0xab, 0xb8, 0xdb, 0x22, 0x7b, 0xc1, 0xa7, 0xb4, 0xb8, 0xf6, 0xb7, 0xaa, 0xb4, 0x5f, 0xc8, 0x4b, + 0x14, 0xbd, 0x60, 0x97, 0x48, 0x9f, 0x3d, 0xa6, 0x0f, 0x5e, 0xc1, 0xba, 0x46, 0xd7, 0x65, 0x2d, + 0x71, 0x93, 0xca, 0x17, 0x67, 0x6f, 0xeb, 0x03, 0x1f, 0xea, 0xa3, 0x03, 0xda, 0x91, 0x31, 0xbb, + 0xb1, 0xe2, 0x4e, 0xb4, 0x3b, 0x73, 0xfb, 0x7c, 0x7a, 0x7a, 0x62, 0x83, 0xd6, 0x77, 0x28, 0xab, + 0x5e, 0x08, 0xfa, 0xfc, 0x2d, 0xa9, 0xf8, 0x00, 0x96, 0xe5, 0xfa, 0xce, 0x64, 0xae, 0x1c, 0x4a, + 0xc5, 0x13, 0x26, 0xad, 0xd9, 0x64, 0x97, 0x9c, 0x57, 0x2e, 0xff, 0x77, 0x1c, 0x2a, 0x0d, 0x03, + 0x3f, 0x27, 0x0f, 0x93, 0xc3, 0x59, 0xfe, 0xff, 0x8f, 0x53, 0xa5, 0x7f, 0xc9, 0x09, 0x6c, 0x8a, + 0xf8, 0x15, 0x47, 0x67, 0x12, 0x31, 0xba, 0xcd, 0x26, 0x63, 0xce, 0xad, 0x52, 0x53, 0x93, 0xcb, + 0xb9, 0xab, 0xc9, 0x29, 0x6d, 0x75, 0x35, 0x6c, 0xae, 0x84, 0x7a, 0x55, 0x91, 0xae, 0xa3, 0x53, + 0x8e, 0xee, 0x5b, 0x86, 0x74, 0x8b, 0xb5, 0xb9, 0xa4, 0x31, 0x1b, 0xc9, 0xab, 0x2f, 0x06, 0xfc, + 0xec, 0x9b, 0xd2, 0x96, 0xfa, 0x5d, 0x3b, 0x1a, 0x77, 0x35, 0x35, 0x6f, 0x6f, 0x6c, 0xac, 0xaf, + 0x33, 0x88, 0xce, 0x26, 0x47, 0xcc, 0x1c, 0x5a, 0xef, 0x97, 0xb8, 0xef, 0xe3, 0x03, 0x90, 0x75, + 0x36, 0x19, 0x33, 0xcb, 0xa1, 0x6f, 0xce, 0x1f, 0xbf, 0x94, 0x3d, 0xa4, 0x02, 0x9a, 0x39, 0xa2, + 0x32, 0xdb, 0x08, 0xbe, 0x13, 0xa1, 0x88, 0xaf, 0x5d, 0x91, 0xdd, 0xfe, 0x16, 0x25, 0x5c, 0xbe, + 0xac, 0xb0, 0x63, 0x6c, 0xb3, 0x81, 0x01, 0xae, 0x1a, 0x4c, 0x0e, 0x51, 0xd0, 0x26, 0x47, 0xf4, + 0x53, 0x37, 0x58, 0x63, 0x39, 0xfb, 0x9a, 0x8d, 0xed, 0x5c, 0x94, 0xc9, 0xc7, 0x77, 0x71, 0x60, + 0x44, 0xda, 0x11, 0x6c, 0x09, 0xb9, 0xbd, 0x0a, 0x51, 0xc8, 0x8b, 0x6b, 0x77, 0xa9, 0xd2, 0xaf, + 0x04, 0x16, 0x8e, 0x65, 0x00, 0x3c, 0x0d, 0xa8, 0x9d, 0x75, 0xe0, 0x70, 0x3a, 0x71, 0x65, 0xf3, + 0x96, 0x7a, 0xfa, 0x00, 0x26, 0xf1, 0x64, 0xa8, 0x06, 0x5f, 0x1f, 0x23, 0x7c, 0x61, 0x42, 0x1b, + 0x3a, 0xa6, 0xc5, 0x0f, 0x02, 0x46, 0xb5, 0xd6, 0x77, 0x46, 0x4b, 0x26, 0xb4, 0xbe, 0x1b, 0x34, + 0x72, 0x2f, 0x4b, 0x9b, 0x77, 0xa3, 0x52, 0x6a, 0x55, 0x97, 0x03, 0x6d, 0x0a, 0x55, 0xc4, 0x89, + 0xb9, 0x88, 0x85, 0x8b, 0x35, 0x30, 0x68, 0x4a, 0x6b, 0xd8, 0x92, 0x6e, 0x4f, 0xdd, 0x00, 0x01, + 0x3b, 0x3d, 0xd2, 0xe3, 0x73, 0xb7, 0x67, 0xae, 0xa8, 0x99, 0xfe, 0x2f, 0x0c, 0x19, 0x88, 0xc9, + 0x5b, 0x91, 0x29, 0x42, 0x25, 0x66, 0xef, 0xf1, 0x3f, 0x63, 0x9f, 0x81, 0xaf, 0x15, 0x18, 0x87, + 0x38, 0xe8, 0x45, 0xd8, 0xc8, 0xde, 0x0b, 0xec, 0x36, 0x2e, 0xeb, 0x9b, 0x41, 0x7e, 0xc1, 0x0c, + 0x59, 0x8f, 0x8a, 0xc3, 0x9e, 0xbd, 0x0a, 0x79, 0xdd, 0x1f, 0x64, 0x95, 0x2a, 0x55, 0x7a, 0x4c, + 0x30, 0x81, 0xe2, 0x0a, 0xa0, 0xe3, 0x09, 0x05, 0xfc, 0xe0, 0x28, 0xc2, 0x90, 0x30, 0xb1, 0x78, + 0x0f, 0x5a, 0x88, 0x59, 0x1c, 0x35, 0x64, 0x92, 0x9d, 0x96, 0x00, 0xc4, 0x3a, 0x5b, 0x76, 0x2d, + 0x96, 0xa0, 0x7d, 0x8b, 0xf5, 0x09, 0xf2, 0x2c, 0x2d, 0x40, 0xb5, 0xbe, 0x33, 0xe6, 0x63, 0x00, + 0xb0, 0x08, 0x41, 0x19, 0x81, 0x54, 0x99, 0xd0, 0xe2, 0x5f, 0x43, 0x88, 0xca, 0x09, 0x70, 0x3e, + 0x81, 0x37, 0x75, 0xe2, 0x02, 0xc8, 0x80, 0xc5, 0xe5, 0x20, 0x5b, 0xd0, 0x7e, 0x3d, 0x71, 0x55, + 0x66, 0x12, 0x37, 0x62, 0xb1, 0x04, 0x55, 0x0a, 0x56, 0xff, 0x89, 0x8f, 0x1a, 0xc2, 0x96, 0xc2, + 0xf6, 0x17, 0x7d, 0xb4, 0xfa, 0x48, 0x11, 0x2a, 0xae, 0x73, 0x47, 0xdc, 0x75, 0xbe, 0x70, 0x2b, + 0x7f, 0x82, 0x43, 0xc5, 0x5e, 0x5f, 0xb8, 0xd5, 0x0a, 0x75, 0x5a, 0x7b, 0x40, 0x95, 0x3a, 0x05, + 0x13, 0x28, 0xbe, 0x07, 0x01, 0xef, 0xd2, 0x67, 0x4f, 0x9b, 0x8e, 0x8c, 0x5b, 0xb7, 0x3b, 0xa5, + 0xad, 0xbb, 0x6a, 0xa5, 0x26, 0x97, 0x73, 0x36, 0xd9, 0x07, 0x4d, 0x9c, 0x4d, 0xf6, 0x57, 0x03, + 0xbc, 0xa9, 0xa9, 0xae, 0xda, 0xb9, 0x75, 0xfb, 0x8e, 0x3a, 0x8c, 0x51, 0x4f, 0x7f, 0x5a, 0xc0, + 0x46, 0xb9, 0x7e, 0x9b, 0x6b, 0xc7, 0xb6, 0xca, 0xec, 0x67, 0xa7, 0xf5, 0xe8, 0x95, 0xcc, 0xc1, + 0x99, 0x54, 0xe2, 0x58, 0x7a, 0xec, 0xf3, 0xf4, 0xd9, 0xd3, 0x55, 0xb2, 0x59, 0x2a, 0xbf, 0x07, + 0xaa, 0x45, 0x84, 0x2f, 0xe6, 0x15, 0x6c, 0x13, 0x28, 0xbe, 0x62, 0x56, 0x0b, 0x6f, 0x2d, 0x57, + 0x31, 0x5b, 0xd9, 0xb0, 0x7e, 0x73, 0xe6, 0xab, 0x9b, 0x99, 0x9b, 0x5f, 0x9a, 0xac, 0x2e, 0x15, + 0x4f, 0xac, 0x87, 0xb8, 0xb6, 0xeb, 0xf1, 0x5a, 0x8f, 0x0f, 0x64, 0xae, 0x4f, 0xa4, 0x6e, 0x5d, + 0x95, 0x4d, 0x32, 0x15, 0xb1, 0x45, 0xa8, 0x8c, 0x48, 0xe2, 0xff, 0xd8, 0x23, 0x40, 0x86, 0xdf, + 0x8a, 0xd0, 0x1e, 0x5f, 0x9b, 0xd2, 0x04, 0xef, 0x98, 0x2f, 0x60, 0xdc, 0x73, 0x2c, 0xb0, 0xf8, + 0xa8, 0x7e, 0xf2, 0xb0, 0xf9, 0x96, 0x79, 0xa5, 0xb2, 0x3f, 0xf2, 0xdc, 0x3a, 0x65, 0x7f, 0xe4, + 0xf9, 0x75, 0xfb, 0xf7, 0x84, 0xab, 0x64, 0x06, 0x91, 0x7f, 0x0f, 0xf1, 0x78, 0x2e, 0x6e, 0x0a, + 0x84, 0xda, 0xdd, 0x11, 0xc9, 0xef, 0xdd, 0x66, 0xbe, 0x60, 0x50, 0x0c, 0xb1, 0xb2, 0x0a, 0x24, + 0x8b, 0x4f, 0x52, 0x6f, 0x1d, 0xf3, 0xe9, 0x34, 0xf2, 0xf4, 0x08, 0x6e, 0xd8, 0xad, 0x1b, 0x7a, + 0xac, 0x3b, 0x33, 0x33, 0x23, 0x17, 0xc8, 0xc6, 0xbf, 0x86, 0x4a, 0xdb, 0xf1, 0x8f, 0x66, 0x77, + 0xa8, 0x45, 0x89, 0xd0, 0xab, 0x39, 0x6b, 0x54, 0xe9, 0x51, 0x81, 0x85, 0x8b, 0x4b, 0x81, 0x44, + 0xfa, 0xec, 0xa4, 0x36, 0x73, 0x42, 0x66, 0x93, 0xf8, 0xdf, 0xa3, 0x32, 0xdc, 0x0f, 0x8d, 0xee, + 0x50, 0xc4, 0x47, 0xfc, 0x9d, 0x40, 0x58, 0x27, 0xef, 0x4a, 0xd9, 0x53, 0xc4, 0x7a, 0xa0, 0x92, + 0x99, 0xfc, 0x5a, 0xbb, 0x74, 0x58, 0x1b, 0x1e, 0xd0, 0xfb, 0x4e, 0x6a, 0x7d, 0x87, 0xf0, 0xa2, + 0x1f, 0x1e, 0x00, 0x3f, 0xb1, 0x54, 0xfc, 0x78, 0x6a, 0xba, 0x57, 0x9b, 0xf9, 0x00, 0xde, 0xdc, + 0xd4, 0x6e, 0x7e, 0xa1, 0x8f, 0xf6, 0x9b, 0xef, 0xdb, 0x81, 0x21, 0x54, 0xb6, 0x53, 0xad, 0xf8, + 0xe7, 0x8b, 0x11, 0x0f, 0x5e, 0x11, 0x4a, 0x44, 0xf2, 0x78, 0x94, 0x70, 0xd8, 0xb7, 0xbb, 0x4d, + 0xe1, 0xc7, 0x8a, 0x10, 0xef, 0xa3, 0x60, 0xe7, 0x5e, 0x5c, 0x57, 0x66, 0x76, 0xfe, 0x37, 0x4e, + 0x95, 0xfe, 0x8e, 0x13, 0x0a, 0x20, 0x88, 0xff, 0x13, 0x07, 0x07, 0x55, 0x99, 0xc9, 0xb1, 0xcc, + 0xf5, 0x5b, 0x30, 0x5b, 0xef, 0x44, 0xbb, 0x6b, 0xa5, 0x86, 0xba, 0x37, 0x5d, 0x75, 0xcd, 0xaf, + 0xe3, 0xa9, 0xd7, 0x28, 0x61, 0x59, 0x77, 0x24, 0xfb, 0x61, 0x4f, 0x6a, 0xfa, 0x74, 0xe6, 0xfa, + 0x2d, 0x3d, 0xd6, 0xaf, 0xc5, 0x3f, 0xd6, 0x26, 0x67, 0xd2, 0xd3, 0x1f, 0xa4, 0x27, 0x4f, 0xcd, + 0x26, 0x63, 0xcd, 0xb2, 0xb4, 0x69, 0x93, 0xcb, 0xb9, 0xab, 0x71, 0x7b, 0x53, 0x33, 0xc6, 0xde, + 0x55, 0xfb, 0xd6, 0xae, 0xd7, 0xb7, 0xef, 0x90, 0xf1, 0x7e, 0xfd, 0x55, 0x57, 0xf6, 0xf0, 0x10, + 0xce, 0x72, 0x75, 0x08, 0x73, 0xb5, 0xe1, 0x41, 0x20, 0x32, 0x9b, 0x8c, 0x31, 0x85, 0xe4, 0xe7, + 0x83, 0x12, 0xee, 0x96, 0x4f, 0x72, 0x6e, 0x91, 0x36, 0xd7, 0x9b, 0xe8, 0x5a, 0xac, 0x17, 0xcc, + 0x36, 0x72, 0x81, 0xb6, 0xf2, 0x47, 0x39, 0xb4, 0xd2, 0x00, 0x6f, 0x73, 0xef, 0xaf, 0x75, 0xfb, + 0xbd, 0xfb, 0x7c, 0xde, 0xc8, 0x5e, 0xba, 0x58, 0xde, 0x54, 0xa5, 0x66, 0xa1, 0x20, 0x82, 0xf8, + 0x53, 0xad, 0xf7, 0xf3, 0xf4, 0xcc, 0x31, 0xed, 0x70, 0x02, 0xca, 0x49, 0xc5, 0x8f, 0x64, 0xcf, + 0x0c, 0xe3, 0x41, 0x1c, 0x38, 0x91, 0x9a, 0x19, 0x98, 0x4d, 0x8e, 0x6c, 0xdb, 0x1d, 0x0c, 0xb3, + 0xe2, 0xf2, 0x6c, 0x72, 0x64, 0x3d, 0x85, 0xc9, 0x05, 0x69, 0xf2, 0xad, 0x68, 0x45, 0xb0, 0x63, + 0x77, 0x9b, 0xcf, 0xe3, 0x6a, 0x94, 0xc2, 0x61, 0x5f, 0x8b, 0x5f, 0xf1, 0x52, 0x1f, 0x6d, 0xb2, + 0x6f, 0xe6, 0x25, 0x8a, 0x95, 0xf4, 0x90, 0x09, 0x4e, 0x48, 0x49, 0x85, 0x5c, 0x8d, 0x66, 0x99, + 0xa9, 0x78, 0xc2, 0x10, 0xdb, 0xe4, 0xbc, 0xbc, 0xfc, 0xdb, 0x88, 0xdf, 0x6d, 0x94, 0xdc, 0xe8, + 0xf6, 0xb4, 0xba, 0x5b, 0x14, 0x97, 0x97, 0x1e, 0x90, 0x91, 0xd3, 0x94, 0x02, 0xc9, 0xe2, 0x03, + 0xe0, 0x3c, 0x64, 0x76, 0xad, 0xab, 0x4e, 0x2e, 0x80, 0xc6, 0xbf, 0x8c, 0x8a, 0x8d, 0xf2, 0xe8, + 0x8a, 0x82, 0x37, 0xb7, 0x0c, 0xa0, 0xb8, 0x0c, 0x2a, 0xeb, 0x0b, 0x6a, 0xa3, 0x57, 0xb5, 0x73, + 0x51, 0xd9, 0x4c, 0xe1, 0xf7, 0xa1, 0x07, 0xe0, 0x37, 0xcc, 0x64, 0x08, 0xac, 0xb4, 0x98, 0xa8, + 0x66, 0xe4, 0x89, 0xa3, 0xfc, 0x54, 0x71, 0x03, 0x7d, 0x73, 0x7f, 0xf2, 0x76, 0xf6, 0xd4, 0xe4, + 0x16, 0xeb, 0x21, 0x6f, 0xa9, 0xd1, 0x45, 0x1e, 0xba, 0x52, 0x42, 0x58, 0x16, 0x87, 0xde, 0x09, + 0x92, 0xfb, 0x00, 0x72, 0x3e, 0x95, 0x8a, 0xc4, 0x23, 0xe8, 0x21, 0x97, 0xf1, 0xc2, 0x1d, 0x35, + 0xe6, 0xd2, 0xd7, 0x6c, 0x5f, 0x36, 0xcf, 0x0f, 0x39, 0xcb, 0x56, 0x63, 0x9c, 0x1f, 0xae, 0x34, + 0x9e, 0xc5, 0x63, 0x2f, 0xa9, 0x98, 0xa7, 0x86, 0xcf, 0x52, 0x69, 0xa0, 0xc8, 0xba, 0xc1, 0x07, + 0xd2, 0xc0, 0x52, 0x4b, 0x27, 0xb8, 0x70, 0x81, 0xee, 0xea, 0xeb, 0xed, 0x17, 0x87, 0xc9, 0xc9, + 0x29, 0x55, 0xf7, 0x97, 0xd1, 0x0b, 0x59, 0x64, 0x65, 0x5a, 0x1a, 0x7e, 0x23, 0x2a, 0x36, 0x54, + 0x59, 0x3a, 0x74, 0xcf, 0xab, 0xd2, 0x06, 0xc1, 0x04, 0x8a, 0x3f, 0x36, 0x34, 0x65, 0x78, 0xa5, + 0x91, 0x29, 0x93, 0x1c, 0x4a, 0x44, 0x21, 0x84, 0x96, 0x6c, 0x66, 0xe0, 0x5f, 0x45, 0xc5, 0xee, + 0x60, 0xb0, 0xed, 0x00, 0x96, 0x2b, 0xc0, 0x80, 0x41, 0x5a, 0x6b, 0x02, 0x45, 0x1e, 0x6c, 0xee, + 0xa6, 0xc5, 0x22, 0x7b, 0x78, 0x48, 0x36, 0x53, 0xf9, 0x16, 0xb4, 0xc0, 0xd9, 0xb8, 0x83, 0xb0, + 0xc0, 0xb2, 0xda, 0x1d, 0xaa, 0x24, 0x0b, 0xf8, 0x5b, 0xdc, 0x82, 0x65, 0xe4, 0xf3, 0x47, 0x9d, + 0x8d, 0x3b, 0x98, 0x97, 0xb4, 0x06, 0x01, 0xc8, 0x3e, 0x2b, 0x98, 0x4a, 0xa8, 0xfa, 0xc9, 0xcb, + 0x58, 0xd6, 0x9e, 0x3a, 0x6e, 0x83, 0xb3, 0xba, 0x31, 0xa6, 0x88, 0x0b, 0xda, 0xa6, 0xb4, 0x53, + 0x7b, 0x06, 0x14, 0xb4, 0x4d, 0x69, 0x37, 0x0a, 0xda, 0xa6, 0xb4, 0x7f, 0x1f, 0x05, 0x6d, 0x53, + 0xda, 0xf9, 0x7d, 0x68, 0xc1, 0xe6, 0xc6, 0x1d, 0xc4, 0x07, 0xa8, 0xac, 0x56, 0x51, 0xa5, 0xdd, + 0x02, 0xfe, 0x16, 0xdf, 0x01, 0x9a, 0x9b, 0xbf, 0x8f, 0x16, 0x59, 0x1e, 0xf6, 0xc9, 0x11, 0xbc, + 0xc9, 0xca, 0xb8, 0x04, 0xfe, 0xa3, 0xdc, 0x27, 0x20, 0x21, 0x78, 0xd2, 0xef, 0x55, 0xe9, 0x2f, + 0x73, 0x9e, 0x80, 0x6c, 0x83, 0x62, 0xa9, 0xf1, 0x8e, 0xb9, 0x5b, 0x9b, 0x39, 0x4a, 0x9d, 0xec, + 0x9d, 0x8d, 0x3b, 0xf0, 0xf0, 0x1f, 0xea, 0xd5, 0x26, 0x4e, 0x83, 0x39, 0x8f, 0xe8, 0xef, 0x03, + 0x20, 0xbe, 0x9b, 0x1b, 0x7d, 0xe6, 0xf0, 0xa7, 0x99, 0xb1, 0x98, 0x36, 0x4c, 0xde, 0x65, 0xbc, + 0x7a, 0x2d, 0x73, 0xfb, 0x98, 0x16, 0xc3, 0x5a, 0x06, 0x4b, 0x3f, 0xe7, 0x1d, 0xc8, 0xbf, 0x26, + 0xbb, 0x0c, 0x00, 0x98, 0x5d, 0x06, 0x0c, 0x15, 0x9f, 0x14, 0xa9, 0xd2, 0x7f, 0x27, 0xbb, 0x4c, + 0x2e, 0x82, 0x98, 0xe2, 0x80, 0x28, 0xec, 0x32, 0x58, 0xcb, 0x23, 0x32, 0x51, 0x44, 0xf1, 0x7b, + 0x14, 0x3f, 0xdc, 0x08, 0xd3, 0x62, 0xbd, 0xda, 0xf0, 0x67, 0xb9, 0x1b, 0x41, 0x41, 0xfe, 0xdf, + 0xd4, 0xb8, 0x9d, 0x20, 0xa5, 0x3f, 0x3b, 0x9f, 0x9a, 0xbe, 0x69, 0x82, 0xe9, 0x4e, 0x85, 0x09, + 0xdd, 0xba, 0xae, 0xc5, 0x7a, 0xf5, 0xd1, 0xbe, 0x3b, 0xd1, 0x6e, 0xf7, 0xbe, 0x30, 0x90, 0xde, + 0xde, 0xb0, 0xab, 0xae, 0x7e, 0x9b, 0xd4, 0x50, 0xa7, 0xc7, 0xfa, 0xb3, 0xa3, 0x51, 0xc8, 0x56, + 0x8d, 0x69, 0xb1, 0x74, 0xee, 0x44, 0xbb, 0xb5, 0x8f, 0xbb, 0xb1, 0xd4, 0x43, 0x8e, 0x7d, 0xc0, + 0x65, 0x52, 0x1f, 0xe9, 0x36, 0x6d, 0x1c, 0xe0, 0x35, 0xc9, 0x16, 0x92, 0x1e, 0xe9, 0x31, 0x62, + 0xef, 0x3e, 0x13, 0xfa, 0xb1, 0xbc, 0x84, 0xd6, 0x43, 0x5e, 0x91, 0xdb, 0x18, 0xb9, 0xd8, 0xa8, + 0xb9, 0x5c, 0xa0, 0x93, 0xf8, 0x01, 0x0e, 0xa1, 0x30, 0x91, 0x89, 0xb0, 0x94, 0x49, 0x6f, 0xa1, + 0xe6, 0xc5, 0x50, 0x30, 0xa4, 0xd0, 0xda, 0x26, 0x55, 0x6a, 0x14, 0x98, 0x0c, 0x62, 0x2d, 0x7d, + 0x65, 0xf4, 0xec, 0xe9, 0x7c, 0x77, 0x4f, 0x68, 0x4d, 0x2a, 0x9e, 0xb0, 0x49, 0x90, 0x67, 0xc9, + 0x64, 0x24, 0xa2, 0x60, 0x2a, 0x9e, 0xf8, 0xc9, 0xfa, 0xcd, 0x32, 0x43, 0x8f, 0xff, 0x9c, 0x43, + 0x25, 0x5e, 0x5a, 0x5a, 0xb8, 0x7c, 0x29, 0xd1, 0x67, 0xe7, 0xae, 0x4e, 0x44, 0x95, 0x7e, 0x23, + 0x58, 0xf8, 0xa2, 0xd7, 0x94, 0x35, 0xcd, 0xda, 0xe8, 0xa7, 0x2e, 0xb2, 0xb5, 0x21, 0xd7, 0xf7, + 0xa9, 0x74, 0x59, 0xa9, 0xdd, 0xfc, 0x42, 0x4b, 0x5c, 0xd0, 0x92, 0x07, 0xf5, 0xc1, 0x7e, 0xac, + 0xca, 0x13, 0x4f, 0x64, 0x70, 0x44, 0x77, 0xd8, 0xa4, 0x6f, 0x70, 0x66, 0x87, 0xf0, 0xc0, 0x55, + 0xb2, 0x55, 0x20, 0x1f, 0x44, 0x25, 0xbe, 0x76, 0xbc, 0x23, 0xf9, 0xf7, 0x04, 0x68, 0xbc, 0x97, + 0x3c, 0xed, 0xdb, 0x65, 0x20, 0x80, 0x43, 0x90, 0x95, 0x81, 0x3d, 0x26, 0x1b, 0x9e, 0xc2, 0xfa, + 0x37, 0x58, 0xd3, 0xc8, 0x7a, 0xca, 0x9e, 0x18, 0xd5, 0x0e, 0x0e, 0x19, 0x87, 0x2c, 0x66, 0x1e, + 0xbe, 0x97, 0x43, 0x0f, 0xf8, 0xfc, 0xbe, 0xc8, 0xd6, 0x40, 0x8b, 0xcf, 0xdf, 0xe8, 0x0e, 0x87, + 0xf7, 0x05, 0x42, 0x5e, 0x7a, 0xe9, 0x80, 0x08, 0x13, 0xf9, 0xa9, 0xe2, 0xcf, 0x73, 0x8e, 0xe3, + 0xa0, 0x2b, 0x82, 0x34, 0xd9, 0x52, 0x12, 0x01, 0x0e, 0x23, 0x0a, 0x52, 0x2e, 0x3c, 0xb8, 0x27, + 0xe7, 0xd3, 0xe4, 0x2f, 0x70, 0x68, 0x45, 0x98, 0x7d, 0x1e, 0xd5, 0x55, 0x17, 0x2e, 0x5f, 0x4e, + 0x76, 0xd1, 0xb0, 0x2a, 0x05, 0x85, 0xbc, 0x44, 0xf1, 0x57, 0x56, 0x2d, 0x8c, 0x07, 0x59, 0x4d, + 0x3f, 0x1b, 0x57, 0x1d, 0x5c, 0x59, 0x34, 0xaf, 0xfe, 0x60, 0xce, 0x41, 0xc2, 0x35, 0x98, 0xe7, + 0xd5, 0x50, 0x2d, 0xfa, 0x6c, 0xea, 0x48, 0x8f, 0x49, 0x83, 0x76, 0x51, 0x5e, 0x79, 0x58, 0xf2, + 0x7a, 0xc0, 0x17, 0x36, 0x9e, 0x70, 0xa5, 0xef, 0x51, 0x12, 0x2b, 0x41, 0x71, 0xed, 0xbb, 0xaa, + 0xf4, 0xb6, 0x90, 0x9f, 0x2a, 0xd6, 0x17, 0x1c, 0x11, 0xd6, 0xd1, 0x26, 0x95, 0x38, 0x06, 0x45, + 0x57, 0x3b, 0xb2, 0xd1, 0x7e, 0x6d, 0xec, 0x33, 0x07, 0x5c, 0xb3, 0xb0, 0x3d, 0x30, 0x94, 0x4f, + 0x99, 0xbc, 0xf9, 0xeb, 0x0b, 0x6f, 0x0b, 0xf8, 0x7d, 0x91, 0x40, 0xc8, 0xa8, 0xcc, 0x03, 0xa4, + 0x32, 0xf0, 0xe6, 0x6f, 0x6e, 0x22, 0x3b, 0x6a, 0x73, 0xd7, 0x05, 0xec, 0x6b, 0x66, 0x5d, 0x6c, + 0xb5, 0xc8, 0x23, 0xc9, 0xff, 0x1f, 0x1c, 0x82, 0xd0, 0xdd, 0x75, 0xe6, 0x12, 0xe3, 0xc9, 0x12, + 0x7b, 0xbc, 0xe0, 0xd1, 0xa5, 0xb9, 0xce, 0x3e, 0xe7, 0x54, 0x69, 0x9c, 0x13, 0x72, 0xf2, 0x8a, + 0x27, 0x38, 0x53, 0xf3, 0x67, 0x57, 0x5d, 0x25, 0xf0, 0xbe, 0xf4, 0x47, 0x5d, 0xe9, 0xb3, 0xa7, + 0x41, 0x1f, 0xa1, 0x5e, 0x25, 0xd3, 0x97, 0xb5, 0xa1, 0x23, 0xf4, 0x55, 0xcb, 0xd8, 0x49, 0x36, + 0x4a, 0xbb, 0xde, 0x77, 0x33, 0x73, 0xf4, 0x72, 0x2a, 0x3e, 0x00, 0x0a, 0x88, 0x36, 0x34, 0x45, + 0x77, 0x0a, 0x12, 0x8c, 0xdb, 0xcc, 0x02, 0xd4, 0xaa, 0xe6, 0x5f, 0xd7, 0x72, 0x4e, 0x3d, 0x79, + 0x0f, 0xb3, 0x64, 0x76, 0x84, 0x95, 0x10, 0x31, 0xe2, 0xc0, 0xbd, 0x0c, 0x12, 0x20, 0x20, 0x3f, + 0x35, 0xcf, 0xc1, 0x07, 0x4a, 0xe9, 0xa0, 0xc9, 0x72, 0x7e, 0x0e, 0xbe, 0x8b, 0x43, 0x4b, 0x5a, + 0x95, 0x03, 0x8d, 0x6e, 0x5f, 0x88, 0xde, 0xc7, 0xc8, 0xbb, 0x7b, 0xba, 0x45, 0x39, 0x40, 0xf8, + 0x00, 0xf1, 0xcb, 0x31, 0x90, 0xc5, 0xd7, 0x8c, 0x97, 0xe2, 0xbb, 0xb2, 0xea, 0x65, 0xe3, 0x3a, + 0x4c, 0x2a, 0x3e, 0xa8, 0x4d, 0x1d, 0x4a, 0x5f, 0xec, 0x12, 0xb3, 0xd1, 0xfe, 0x54, 0x3c, 0x3a, + 0x9b, 0x8c, 0x89, 0x99, 0x68, 0xaf, 0x76, 0xee, 0x30, 0xe5, 0xaa, 0x60, 0x20, 0x9c, 0x3a, 0x94, + 0x55, 0x2f, 0xcb, 0x06, 0x29, 0xcc, 0x1c, 0x96, 0x7b, 0x03, 0x9e, 0x56, 0x25, 0xb4, 0x39, 0xe4, + 0x0e, 0xee, 0x6d, 0x74, 0x47, 0xf6, 0x92, 0xfb, 0x19, 0x25, 0x70, 0x83, 0x30, 0x37, 0x4d, 0xac, + 0xa7, 0x0f, 0x62, 0xdf, 0x1e, 0xa6, 0xc6, 0xa1, 0xc9, 0x5b, 0xda, 0x99, 0x71, 0x50, 0x41, 0xf3, + 0x39, 0xf9, 0x3a, 0xcc, 0xf7, 0xd6, 0xed, 0xf6, 0x84, 0xd7, 0x51, 0x13, 0xd9, 0x3a, 0xa0, 0x27, + 0xe7, 0xd2, 0xe5, 0x3f, 0xe4, 0x50, 0xb1, 0x3f, 0xe0, 0x05, 0xbb, 0x1c, 0x9c, 0xe5, 0xf7, 0x72, + 0xaa, 0xd4, 0xc5, 0x09, 0x26, 0x58, 0xec, 0xa0, 0x65, 0x13, 0xdb, 0x5b, 0xb5, 0x43, 0x1b, 0x3a, + 0xa9, 0x45, 0x93, 0x1b, 0xb7, 0x49, 0x4d, 0xcd, 0xf5, 0xf2, 0xae, 0xfa, 0x66, 0x67, 0x5d, 0xb5, + 0xe3, 0xcd, 0xed, 0xf2, 0x96, 0x7a, 0xf9, 0x4e, 0xb4, 0x9b, 0x81, 0x6a, 0x43, 0x9f, 0xea, 0xa3, + 0xfd, 0xda, 0xe8, 0x38, 0x58, 0xf5, 0x1c, 0xae, 0x86, 0xba, 0xfa, 0xc6, 0xfa, 0x86, 0xba, 0xfa, + 0x86, 0xe6, 0x5d, 0xce, 0xad, 0x3b, 0x30, 0x9e, 0x23, 0x7d, 0xf4, 0xf3, 0xf4, 0x67, 0xf4, 0x36, + 0x9c, 0xa9, 0xd3, 0x82, 0xc1, 0x4f, 0x36, 0x2b, 0xc0, 0x5f, 0xe4, 0xd0, 0x62, 0x0f, 0xd9, 0x09, + 0xe9, 0xf9, 0x7d, 0x9e, 0x77, 0x96, 0xcb, 0xb6, 0x5f, 0x36, 0x86, 0x94, 0xa0, 0xdb, 0xe7, 0x85, + 0xa3, 0x4e, 0x9a, 0x53, 0x6c, 0x36, 0x7d, 0xce, 0x2c, 0x31, 0x23, 0x39, 0x84, 0x37, 0xf4, 0x99, + 0x0f, 0xf2, 0xb7, 0xdb, 0x54, 0x3c, 0xc1, 0x6e, 0xe2, 0xfa, 0x29, 0x2c, 0x18, 0x51, 0xae, 0x3b, + 0x3d, 0x81, 0x75, 0x61, 0x72, 0x86, 0x22, 0x53, 0xea, 0x7c, 0x1f, 0x87, 0x96, 0xf9, 0x6c, 0x7a, + 0x77, 0x79, 0x39, 0xa9, 0x6a, 0x45, 0x7e, 0x55, 0x73, 0xb5, 0x73, 0xf0, 0x1a, 0xcc, 0xc9, 0x2e, + 0x3e, 0x03, 0x5a, 0x0a, 0x75, 0x2b, 0x32, 0xc4, 0x0d, 0xf3, 0xde, 0x51, 0x36, 0x4a, 0x2f, 0x52, + 0xca, 0x39, 0x19, 0x2b, 0xfe, 0xc3, 0x42, 0xb4, 0xaa, 0x60, 0x7f, 0xf0, 0x1f, 0x70, 0x68, 0x71, + 0x50, 0x09, 0xf9, 0x02, 0x5e, 0x7a, 0x4c, 0x4d, 0x4e, 0x04, 0x28, 0x48, 0xf4, 0xc3, 0x9a, 0x34, + 0xbb, 0x09, 0x8f, 0xc7, 0x89, 0xdb, 0xac, 0x16, 0x0b, 0x22, 0x13, 0x8c, 0x7f, 0x26, 0x76, 0x50, + 0x3b, 0x7b, 0x7d, 0x36, 0x39, 0xb2, 0xa1, 0xda, 0x21, 0x56, 0x3b, 0x9e, 0xab, 0x76, 0x3c, 0x5f, + 0xed, 0xf8, 0x49, 0xb5, 0xe3, 0x85, 0x6a, 0xc7, 0x8b, 0xd5, 0x8e, 0x97, 0xaa, 0x1d, 0x2f, 0x57, + 0x3b, 0x36, 0xac, 0xaf, 0x76, 0x6c, 0xd8, 0x50, 0xed, 0xd8, 0x20, 0x56, 0x3b, 0xc4, 0xe7, 0xab, + 0x1d, 0xcf, 0xbd, 0x50, 0xed, 0x78, 0xfe, 0xa5, 0x6a, 0xc7, 0x0b, 0xeb, 0xb1, 0x1a, 0x4a, 0xcb, + 0xe5, 0x3f, 0x5a, 0x80, 0x4a, 0x42, 0x8a, 0x5f, 0xd9, 0xb7, 0xa9, 0xcd, 0xdd, 0x42, 0x95, 0xa3, + 0x9e, 0x05, 0xaa, 0x14, 0x5d, 0x20, 0x58, 0x70, 0xf1, 0xef, 0x8b, 0xe8, 0x3e, 0x47, 0x7a, 0x5f, + 0xbf, 0x78, 0x38, 0x33, 0x75, 0x28, 0xbf, 0x32, 0x0d, 0xdb, 0x9b, 0x5d, 0x9b, 0xde, 0xda, 0x25, + 0x35, 0xd4, 0xed, 0x92, 0x76, 0x34, 0x6f, 0xdf, 0x25, 0xd7, 0x37, 0xd4, 0xbf, 0x39, 0x9b, 0x1c, + 0xc9, 0x46, 0x47, 0xd2, 0x17, 0x2e, 0x67, 0x6e, 0x1f, 0xd6, 0x47, 0x2f, 0xa4, 0xe2, 0xc7, 0x59, + 0x52, 0xaf, 0x38, 0x98, 0x4c, 0xdb, 0xa4, 0x86, 0x1d, 0xd2, 0xd6, 0x39, 0xb2, 0x0d, 0xd8, 0xb2, + 0xd5, 0xb9, 0x9a, 0xa4, 0xda, 0xad, 0xf5, 0xbb, 0xe6, 0xce, 0x0d, 0xc7, 0x21, 0x73, 0x11, 0x58, + 0x6b, 0x6c, 0x01, 0xa4, 0x05, 0xf6, 0xba, 0xb3, 0x84, 0xee, 0x44, 0xbb, 0x33, 0x47, 0x2f, 0x63, + 0x29, 0x7d, 0xa8, 0x1b, 0xb3, 0x6f, 0xb2, 0x38, 0x52, 0xf1, 0xc4, 0x1c, 0x4d, 0x8d, 0x69, 0xa3, + 0xe3, 0xf4, 0xc6, 0xee, 0xcc, 0x99, 0xec, 0x87, 0xe7, 0xb4, 0xde, 0xde, 0xcc, 0x8d, 0x2f, 0xf1, + 0x70, 0x1e, 0xec, 0xd5, 0x0e, 0x7d, 0x95, 0x8a, 0x1f, 0x85, 0x2b, 0x85, 0x84, 0x5f, 0x5e, 0xd5, + 0x47, 0x2f, 0x68, 0xc3, 0x83, 0xda, 0xd5, 0x43, 0x7a, 0xac, 0x5f, 0x1f, 0xed, 0x63, 0xeb, 0x87, + 0x87, 0xc8, 0xea, 0xff, 0x8a, 0xbf, 0x7f, 0x08, 0x3d, 0x58, 0xc0, 0xe9, 0x93, 0xff, 0x3d, 0x5a, + 0xd5, 0x96, 0x0f, 0x36, 0xbd, 0x0d, 0x88, 0x9e, 0x5e, 0x18, 0x43, 0xac, 0x61, 0x4f, 0x2e, 0xc0, + 0xe7, 0x8d, 0x9c, 0x9a, 0xe6, 0x39, 0x16, 0xa4, 0xe2, 0x47, 0x5c, 0x75, 0x72, 0x61, 0x2a, 0xfc, + 0xaf, 0xd1, 0x83, 0xf6, 0x04, 0x85, 0xf1, 0x30, 0x20, 0x76, 0xc7, 0x42, 0xe9, 0x22, 0xcf, 0x16, + 0x4b, 0x0f, 0x14, 0x0a, 0x21, 0x62, 0xe1, 0x24, 0xef, 0x85, 0x93, 0x76, 0x55, 0x7a, 0x8f, 0x75, + 0x67, 0x7c, 0x97, 0x7a, 0x0a, 0x8e, 0x8d, 0xeb, 0xa7, 0x07, 0xcd, 0xdb, 0xcc, 0xda, 0xb5, 0xf3, + 0xa9, 0xc4, 0xa0, 0xf6, 0xc1, 0xa7, 0xa9, 0xf8, 0xa7, 0xe0, 0xdd, 0x68, 0xfa, 0x35, 0xc2, 0xa7, + 0x76, 0x69, 0x00, 0xe2, 0xec, 0xe0, 0x2c, 0xe0, 0xfe, 0x18, 0x1f, 0xd0, 0x4f, 0x4f, 0x61, 0x6e, + 0x3e, 0xc7, 0xbb, 0x85, 0x54, 0xa7, 0x5e, 0xf8, 0xa7, 0xd2, 0xa9, 0x17, 0xfd, 0xa9, 0x74, 0xea, + 0xc5, 0x7f, 0x7e, 0x9d, 0x7a, 0xc9, 0x3f, 0x44, 0x9d, 0xfa, 0xef, 0xb8, 0x82, 0x3a, 0x35, 0x44, + 0x5d, 0x9a, 0xe6, 0x54, 0xe9, 0x66, 0x61, 0x9d, 0xfa, 0x62, 0x61, 0x9d, 0xfa, 0xfb, 0xd7, 0xa0, + 0xbf, 0xb5, 0x3e, 0x7c, 0x2f, 0x5a, 0x6e, 0xc9, 0x9f, 0x5b, 0xcb, 0xed, 0x60, 0x95, 0x5c, 0x74, + 0x17, 0x25, 0xf7, 0x55, 0x55, 0xda, 0xc8, 0x2a, 0xb9, 0x35, 0xf7, 0xa5, 0xe4, 0xb2, 0xda, 0x6a, + 0x77, 0xbe, 0x38, 0x51, 0x7a, 0xcf, 0xe2, 0x04, 0xf1, 0x2d, 0xcd, 0x15, 0x27, 0x9e, 0x2c, 0x28, + 0x4e, 0x68, 0xd3, 0x89, 0xcc, 0xe4, 0x64, 0x61, 0x41, 0xc2, 0x26, 0x8c, 0x9b, 0xfa, 0xeb, 0xd2, + 0x42, 0xc2, 0xb8, 0xa9, 0xbf, 0x3e, 0x3e, 0xaf, 0xfe, 0x5a, 0x48, 0x3b, 0x9d, 0x2a, 0xa4, 0x9d, + 0x96, 0x11, 0xed, 0xb4, 0x9b, 0x53, 0xa5, 0xdf, 0x17, 0x50, 0x4f, 0x5b, 0xbf, 0xad, 0x7a, 0x6a, + 0xce, 0x04, 0xd0, 0x53, 0xb5, 0xe1, 0x1e, 0xd3, 0x8d, 0x9e, 0x1e, 0x9f, 0xc7, 0x27, 0x68, 0xc8, + 0xab, 0x91, 0xb9, 0xb5, 0x55, 0x9b, 0x25, 0x61, 0xd9, 0x9f, 0xc2, 0x92, 0x70, 0xa4, 0xa0, 0x7e, + 0x0c, 0x07, 0xf9, 0xbf, 0x52, 0xa5, 0xb7, 0x0a, 0xe9, 0xc7, 0x75, 0xdf, 0x42, 0x3f, 0x3e, 0xd0, + 0xe1, 0x8f, 0xf8, 0xa8, 0x54, 0x42, 0x2e, 0x2d, 0xde, 0xb3, 0x7a, 0xbc, 0xe2, 0x4f, 0xac, 0x1e, + 0x87, 0x51, 0x31, 0xd6, 0xf0, 0xf0, 0xca, 0xa3, 0x2e, 0xf0, 0xc4, 0xa2, 0x62, 0x02, 0xc5, 0xd7, + 0xd3, 0xd3, 0x43, 0x99, 0xdb, 0x87, 0x1d, 0xb5, 0xee, 0xb0, 0xf2, 0xc2, 0xf3, 0x8e, 0x74, 0xf2, + 0x64, 0xfa, 0x62, 0x17, 0x04, 0x96, 0xb5, 0x62, 0xae, 0x90, 0xd5, 0x89, 0x17, 0x25, 0x71, 0x2f, + 0xca, 0x9e, 0xb8, 0xad, 0x25, 0x3e, 0xc6, 0xcb, 0xf1, 0x46, 0x6f, 0xe6, 0xf6, 0xe1, 0x0d, 0x2f, + 0x6c, 0xa9, 0xc5, 0x32, 0x90, 0x49, 0xb3, 0xb0, 0x72, 0xca, 0x7f, 0xcf, 0xca, 0xe9, 0xc7, 0x1c, + 0x2a, 0x0e, 0x2b, 0x6d, 0x8a, 0x27, 0x12, 0x08, 0x95, 0x3f, 0x48, 0x18, 0xce, 0x86, 0x7b, 0xb8, + 0x7c, 0xb3, 0xb6, 0x89, 0xe6, 0x01, 0x77, 0x61, 0xe8, 0x0d, 0x83, 0x8e, 0xf8, 0x3a, 0x95, 0xb4, + 0x88, 0xc1, 0xcc, 0x80, 0xa6, 0x47, 0x7a, 0x60, 0xf7, 0x01, 0x55, 0xa6, 0x1a, 0x0b, 0x24, 0xfd, + 0x03, 0xd6, 0xbb, 0xf9, 0x86, 0xeb, 0x35, 0xe4, 0x05, 0x54, 0xd9, 0xa4, 0xf9, 0x0f, 0x42, 0x8b, + 0x66, 0x14, 0xc3, 0x55, 0xff, 0x30, 0x15, 0xc3, 0xd5, 0xaf, 0xa0, 0x32, 0xdb, 0xd0, 0xdc, 0x8f, + 0xeb, 0x72, 0xc5, 0x7f, 0xe6, 0xd0, 0x12, 0xda, 0x89, 0xfc, 0xcb, 0x68, 0x51, 0xab, 0x72, 0xc0, + 0x14, 0xac, 0x49, 0x40, 0x4b, 0x80, 0x88, 0x0f, 0x43, 0xbf, 0x80, 0xcb, 0xe1, 0xed, 0x5e, 0xcc, + 0xef, 0x88, 0x19, 0x54, 0x86, 0x74, 0x7e, 0x0b, 0x2a, 0x69, 0x55, 0x0e, 0x34, 0x29, 0x9e, 0x90, + 0x12, 0xa1, 0x82, 0x31, 0xf1, 0x44, 0xb5, 0xa0, 0xe2, 0xe3, 0xad, 0xca, 0x01, 0x76, 0x44, 0x2a, + 0x77, 0x93, 0x85, 0x03, 0x2e, 0xe5, 0x55, 0xb2, 0x85, 0x49, 0x89, 0x35, 0x92, 0x33, 0x33, 0x2a, + 0x0e, 0x9b, 0xc4, 0x00, 0x4a, 0x88, 0x69, 0xbd, 0x9f, 0xcf, 0x47, 0x0c, 0x30, 0x2b, 0xfe, 0x96, + 0x43, 0x25, 0x26, 0xaf, 0xe4, 0x7f, 0x8e, 0x96, 0x00, 0xd3, 0x33, 0x1a, 0xf9, 0x63, 0x55, 0xaa, + 0x10, 0x0c, 0x98, 0xf8, 0x30, 0xf0, 0xc7, 0xfc, 0x66, 0x1a, 0x18, 0xfc, 0x8b, 0x94, 0x35, 0x33, + 0x1a, 0x00, 0x89, 0x43, 0x66, 0x41, 0xc5, 0x12, 0x20, 0xa2, 0x0d, 0x0f, 0xc8, 0x16, 0x94, 0xf7, + 0xd0, 0x8c, 0x44, 0xb6, 0x5a, 0x60, 0xc5, 0x01, 0xb1, 0xa0, 0xe2, 0x4f, 0x20, 0x23, 0xbd, 0xc9, + 0xd0, 0xb8, 0xa3, 0x76, 0xab, 0xcb, 0xb9, 0xcb, 0xb5, 0x4d, 0xda, 0x5c, 0xbf, 0xae, 0x51, 0x76, + 0xed, 0x94, 0x9a, 0xeb, 0xe9, 0xd7, 0x36, 0x49, 0xde, 0x52, 0xdf, 0x0c, 0x1f, 0x55, 0xb2, 0x45, + 0xa1, 0xe2, 0xbf, 0xd4, 0xa0, 0x72, 0x7a, 0x29, 0x9e, 0xf1, 0xd6, 0xde, 0x0e, 0x41, 0x4d, 0x7e, + 0x43, 0x58, 0xbc, 0xc7, 0xdd, 0xa6, 0xd4, 0x05, 0xf6, 0xf9, 0x6d, 0x41, 0x12, 0x9c, 0xaa, 0xf4, + 0x9a, 0x90, 0x9f, 0x2a, 0x3e, 0x4b, 0x2e, 0x09, 0xd6, 0x78, 0x03, 0xfb, 0xfc, 0x35, 0x70, 0x73, + 0xd0, 0x5b, 0x6d, 0x5c, 0x39, 0x27, 0xb1, 0xa3, 0x88, 0xfb, 0x1a, 0xbd, 0x10, 0x91, 0x9f, 0x9f, + 0xdf, 0x87, 0x8a, 0x95, 0xfd, 0x41, 0xb7, 0xdf, 0xab, 0xd0, 0x90, 0x66, 0x60, 0x7b, 0x32, 0x81, + 0xe2, 0x56, 0xe3, 0x57, 0x35, 0xf8, 0x9b, 0xa5, 0x27, 0x4f, 0xe9, 0x5f, 0x9e, 0x98, 0x4d, 0xc6, + 0x58, 0x17, 0x95, 0x90, 0xdb, 0xef, 0x0d, 0xb4, 0x57, 0x3b, 0xda, 0x14, 0x77, 0x38, 0x52, 0xb3, + 0xcf, 0x1d, 0x8e, 0x28, 0xd5, 0x8e, 0xf6, 0x40, 0x38, 0x52, 0x13, 0x0c, 0x78, 0xc3, 0xd5, 0x8e, + 0x60, 0xc8, 0x17, 0xc0, 0xfb, 0x87, 0x6c, 0xd2, 0xe5, 0xdf, 0x47, 0x7c, 0xbb, 0x7b, 0x7f, 0x7d, + 0x7b, 0x30, 0x72, 0xa0, 0xb6, 0xa3, 0xad, 0x15, 0x82, 0x59, 0x53, 0x27, 0x6e, 0xe2, 0x93, 0x52, + 0x20, 0x59, 0xdc, 0xd0, 0xee, 0xde, 0x5f, 0xa3, 0x60, 0x60, 0xcd, 0xee, 0x8e, 0xb6, 0xd6, 0x1a, + 0x2f, 0x01, 0x57, 0x6b, 0x03, 0x27, 0xf4, 0xcf, 0xc7, 0xa8, 0xa7, 0x1e, 0xe1, 0xe3, 0x96, 0x8f, + 0x53, 0x01, 0x32, 0xfc, 0x6f, 0xd1, 0xb2, 0xb0, 0xd1, 0x0f, 0x75, 0x4a, 0x9b, 0xfb, 0x00, 0xd5, + 0xa5, 0x88, 0x24, 0x99, 0x93, 0x24, 0xfe, 0x8c, 0x5a, 0xa6, 0xc0, 0xd3, 0x77, 0x78, 0x50, 0xbb, + 0x34, 0x92, 0x3d, 0x71, 0x1b, 0x1c, 0xbe, 0xf0, 0xde, 0x74, 0xe5, 0xa8, 0xd6, 0x77, 0x49, 0x9b, + 0xa4, 0x8e, 0x82, 0xa6, 0x98, 0xbf, 0x61, 0x3d, 0xf8, 0x44, 0xca, 0x39, 0xf4, 0xf8, 0x7f, 0xce, + 0xa1, 0x55, 0x26, 0x68, 0x87, 0xdf, 0xaf, 0x28, 0x5e, 0xc5, 0x4b, 0xae, 0xd1, 0x81, 0x9e, 0x15, + 0xe3, 0x54, 0xa9, 0x8f, 0x13, 0x0a, 0xe3, 0x88, 0x01, 0x66, 0xbc, 0x3b, 0x68, 0x42, 0x4d, 0xc4, + 0xd7, 0xae, 0x54, 0x83, 0xcf, 0x18, 0xd4, 0x22, 0x3d, 0xd1, 0xaf, 0x7d, 0xdd, 0x0b, 0x75, 0xc4, + 0xac, 0x89, 0xda, 0x0d, 0xcf, 0xa7, 0xa7, 0x27, 0xd2, 0x9f, 0x24, 0xb2, 0xa7, 0xbe, 0xd0, 0x2e, + 0x8d, 0x68, 0x57, 0x8f, 0x41, 0x0d, 0xb5, 0xe1, 0xc1, 0xcc, 0x87, 0x9f, 0xcd, 0x55, 0xfd, 0xc2, + 0xf5, 0xe0, 0xff, 0x1b, 0x87, 0x1e, 0xb7, 0x52, 0x22, 0xbe, 0x36, 0xdf, 0xfb, 0x64, 0x0f, 0x6a, + 0xde, 0x1b, 0x52, 0xdc, 0x7b, 0x03, 0x6d, 0x5e, 0xaa, 0xcc, 0x7d, 0xc2, 0xa9, 0xd2, 0x65, 0x4e, + 0x98, 0x1f, 0x57, 0x3c, 0xc8, 0xb1, 0xcd, 0xb2, 0x30, 0x6a, 0x22, 0x7b, 0x43, 0x4a, 0x18, 0xa3, + 0x54, 0x67, 0xae, 0x7c, 0xac, 0x0d, 0x1d, 0xa3, 0xd3, 0x99, 0x5c, 0x6f, 0xc9, 0x9e, 0xee, 0x23, + 0x46, 0x13, 0xa3, 0x79, 0xcc, 0xa5, 0xaf, 0xec, 0xe1, 0xa1, 0xd4, 0xcc, 0x20, 0x56, 0xbc, 0x49, + 0x3b, 0xd3, 0x67, 0xbe, 0xd6, 0xfa, 0x0e, 0xe9, 0x53, 0xc7, 0x61, 0xa4, 0x20, 0x6e, 0x59, 0xf6, + 0xd4, 0x17, 0xac, 0x43, 0xd3, 0x4f, 0xd6, 0xcb, 0xf3, 0x57, 0x12, 0xab, 0x25, 0x8f, 0x84, 0x5b, + 0x7d, 0xc1, 0x86, 0x80, 0x57, 0x09, 0xbf, 0xe9, 0x8b, 0xec, 0xdd, 0x1a, 0xf0, 0xb8, 0xdb, 0x9a, + 0x22, 0x81, 0x90, 0xbb, 0x05, 0x14, 0xc7, 0x62, 0x70, 0xef, 0x9b, 0x1b, 0x4b, 0x5c, 0x07, 0x37, + 0x28, 0xf4, 0xd1, 0x7e, 0x7d, 0xf4, 0x73, 0x6d, 0xf4, 0x2a, 0xb0, 0x43, 0xbc, 0xed, 0x90, 0x36, + 0xb0, 0x15, 0x82, 0xeb, 0xc0, 0x73, 0xd3, 0xe2, 0xcf, 0x73, 0xe8, 0x61, 0x5b, 0x2a, 0x78, 0x4b, + 0x35, 0x06, 0xbc, 0x61, 0x1a, 0xa1, 0xc2, 0xab, 0x4a, 0x6e, 0x61, 0x2e, 0x1c, 0x71, 0x13, 0xd4, + 0xa5, 0xb5, 0x63, 0xb7, 0x52, 0x03, 0xda, 0x8e, 0xa3, 0xa1, 0x29, 0x15, 0x3f, 0x9a, 0x3d, 0x77, + 0xbe, 0xce, 0xad, 0xb4, 0x07, 0xfc, 0x4d, 0x4a, 0x04, 0x02, 0xc6, 0xa4, 0x47, 0x7a, 0x1a, 0x03, + 0xde, 0xfc, 0x5a, 0x42, 0x15, 0xe7, 0x2a, 0x00, 0x4b, 0x89, 0x8f, 0xfa, 0x5a, 0xfc, 0x81, 0x90, + 0x62, 0xd2, 0x0b, 0x33, 0x3d, 0x4b, 0x14, 0xbb, 0xe2, 0xda, 0xd7, 0x54, 0xe9, 0x55, 0x61, 0x3e, + 0x3c, 0x71, 0x0d, 0x54, 0xd4, 0xaa, 0x94, 0x71, 0x39, 0x2d, 0x33, 0x39, 0x96, 0x9e, 0x3c, 0x25, + 0xcf, 0x97, 0x19, 0x8b, 0x28, 0x0f, 0x06, 0x5a, 0x9b, 0x03, 0x11, 0x77, 0xdb, 0x0e, 0x7f, 0x48, + 0x71, 0x7b, 0x0f, 0x38, 0x89, 0xf7, 0x18, 0xb2, 0x2e, 0x3e, 0x14, 0x4a, 0x17, 0x7f, 0x12, 0x68, + 0xad, 0x89, 0x60, 0x68, 0x4d, 0x07, 0x80, 0x6b, 0xc8, 0xb3, 0x89, 0xd5, 0xc0, 0x56, 0x1d, 0x14, + 0xe8, 0xa0, 0x72, 0xcc, 0x48, 0x0f, 0xf5, 0x7c, 0x28, 0x44, 0x8b, 0xff, 0x03, 0x87, 0x1e, 0x69, + 0x77, 0xef, 0x67, 0x13, 0x1a, 0x95, 0x90, 0x47, 0xf1, 0x47, 0xf0, 0xcc, 0x29, 0x25, 0x35, 0xf9, + 0x80, 0x53, 0xa5, 0x21, 0x4e, 0x98, 0x1b, 0x4f, 0x0c, 0x61, 0xe6, 0x67, 0xaf, 0x52, 0xd0, 0x4c, + 0xad, 0xa6, 0x20, 0xba, 0x16, 0x88, 0xf4, 0x4a, 0x19, 0x57, 0x74, 0xda, 0xac, 0xa4, 0xb9, 0x10, + 0xf0, 0xaa, 0x21, 0x38, 0xfa, 0xc4, 0x25, 0x58, 0x47, 0x5a, 0xdf, 0x19, 0xad, 0x6b, 0x54, 0x9f, + 0xf8, 0x90, 0x75, 0x2e, 0x96, 0xe7, 0xae, 0x0e, 0xaf, 0x72, 0x68, 0x25, 0xc3, 0x1b, 0x48, 0xb2, + 0xf9, 0x7a, 0x5e, 0x59, 0xed, 0xaf, 0x55, 0xe9, 0x1d, 0xa1, 0x20, 0x82, 0xe8, 0xb4, 0xf1, 0x30, + 0x68, 0x09, 0x61, 0x61, 0xb6, 0x36, 0x14, 0xe4, 0x64, 0x60, 0x86, 0x4e, 0x5f, 0x51, 0xe5, 0x82, + 0xa4, 0xf9, 0xff, 0x99, 0x43, 0x8f, 0x62, 0x2a, 0x2d, 0x3e, 0xbc, 0xc3, 0x2a, 0xe4, 0x92, 0xa4, + 0xac, 0xb4, 0x07, 0x3a, 0xdd, 0x6d, 0xe6, 0x4d, 0xe6, 0xb2, 0xda, 0x13, 0x9c, 0x2a, 0x1d, 0xe3, + 0x84, 0xf9, 0x30, 0xc5, 0x90, 0x11, 0x66, 0xcd, 0x6d, 0xdc, 0xc4, 0x0f, 0x41, 0x5d, 0x6c, 0xfc, + 0xff, 0xea, 0x21, 0x78, 0x98, 0x40, 0x1f, 0xfd, 0x54, 0x1b, 0x1d, 0x6f, 0x35, 0x7d, 0x8d, 0x52, + 0xf1, 0x09, 0xfd, 0xcb, 0x71, 0xed, 0x50, 0x2c, 0x7f, 0xd1, 0x3c, 0x47, 0x39, 0x2b, 0xd6, 0x39, + 0x88, 0x91, 0x44, 0xff, 0x62, 0x8c, 0x5e, 0x55, 0x9d, 0xaf, 0x42, 0x7c, 0x03, 0x6b, 0x82, 0x5c, + 0x66, 0x84, 0x2d, 0xae, 0x61, 0x4d, 0x90, 0x0e, 0xb0, 0x18, 0x82, 0x70, 0x64, 0x06, 0x45, 0x98, + 0xc3, 0x8a, 0xb8, 0x8d, 0x8d, 0xb2, 0xb0, 0xdc, 0x0a, 0x93, 0xc4, 0x44, 0x59, 0x78, 0x82, 0x89, + 0x9f, 0x60, 0x23, 0x59, 0x20, 0xa6, 0x02, 0x13, 0x04, 0x70, 0xc5, 0x7d, 0x05, 0x01, 0x74, 0xda, + 0xae, 0x9a, 0x3f, 0xc0, 0x44, 0x6a, 0xb7, 0xc0, 0x22, 0x9f, 0x73, 0x11, 0x8d, 0x44, 0xe5, 0x63, + 0xee, 0xa3, 0x33, 0x91, 0x04, 0xf9, 0xfb, 0x8a, 0x24, 0xe8, 0xb4, 0x5d, 0x64, 0x7f, 0x90, 0x29, + 0x9d, 0x89, 0x06, 0xc8, 0xb3, 0xd9, 0x0b, 0xc4, 0x04, 0xfc, 0x1b, 0xf6, 0x86, 0x39, 0xdc, 0xed, + 0xbd, 0xcd, 0xa9, 0xd2, 0x34, 0x7b, 0xc3, 0x7c, 0x92, 0xcb, 0x17, 0xfb, 0x7e, 0x20, 0x57, 0xcd, + 0xc7, 0xb9, 0xfc, 0x50, 0x17, 0xab, 0x08, 0xef, 0xfe, 0x9d, 0x2a, 0xfd, 0x36, 0x3f, 0xd4, 0xc5, + 0x5e, 0x56, 0xad, 0x37, 0xd9, 0x89, 0x29, 0x60, 0xd0, 0x10, 0x18, 0xc3, 0x83, 0xa9, 0xe4, 0x88, + 0x36, 0x4a, 0x02, 0x7f, 0x92, 0xf9, 0x94, 0x3d, 0x38, 0x9e, 0x9e, 0xf9, 0xc2, 0x91, 0xdf, 0x4d, + 0x8e, 0xf4, 0x74, 0x4f, 0x6a, 0xfa, 0x06, 0xbb, 0x39, 0x3a, 0xe6, 0x08, 0x96, 0xf1, 0xaf, 0x39, + 0xf4, 0xe0, 0xee, 0x8e, 0x3d, 0x7b, 0x94, 0x90, 0x11, 0x38, 0x09, 0xe2, 0xcd, 0x3c, 0xc4, 0xae, + 0xfb, 0x42, 0x18, 0xe2, 0xfb, 0x00, 0xac, 0x31, 0xae, 0x95, 0xd7, 0x10, 0x9d, 0x9a, 0x8a, 0x1d, + 0xc0, 0x0d, 0x59, 0xb1, 0x83, 0xe5, 0xa4, 0xf4, 0x0a, 0x06, 0x23, 0x7f, 0xa4, 0x07, 0x0f, 0x03, + 0x7b, 0x05, 0x23, 0x30, 0x04, 0x44, 0x65, 0x49, 0x99, 0x6d, 0x71, 0x6c, 0x58, 0xbf, 0x5e, 0x2e, + 0x54, 0x21, 0xfe, 0x12, 0x6c, 0x1a, 0x9b, 0x43, 0x6e, 0x8f, 0xb2, 0xa7, 0xa3, 0xad, 0x59, 0x09, + 0xb5, 0xfb, 0xfc, 0x64, 0x4f, 0x6b, 0x52, 0x3c, 0xe4, 0x0c, 0xb4, 0xac, 0x76, 0x8f, 0x2a, 0x79, + 0x84, 0xb9, 0xb1, 0xc4, 0x4d, 0x78, 0xcb, 0x68, 0xa1, 0x69, 0x35, 0x11, 0x2b, 0xb1, 0x26, 0xac, + 0x78, 0xaa, 0xcd, 0xab, 0x2d, 0x78, 0xee, 0x11, 0xde, 0xe6, 0x68, 0x0c, 0x78, 0x1d, 0xd9, 0x68, + 0x54, 0x3b, 0x9c, 0xd0, 0x47, 0xa3, 0x26, 0x9b, 0x93, 0xe7, 0x2e, 0x82, 0xef, 0xe1, 0xd0, 0xd2, + 0xb0, 0xc7, 0xed, 0x27, 0x36, 0xc8, 0x4e, 0x77, 0x1b, 0x39, 0xf2, 0x2c, 0xab, 0xfd, 0x27, 0xaa, + 0xf4, 0xae, 0x60, 0x4b, 0x10, 0xb7, 0xe1, 0xaf, 0x1a, 0x1f, 0xfd, 0xac, 0xce, 0x99, 0x18, 0xfa, + 0x47, 0x51, 0xfd, 0xab, 0xa3, 0x50, 0x1e, 0xfe, 0x3f, 0x72, 0xdc, 0x64, 0xf7, 0x58, 0x5e, 0xbb, + 0xa2, 0xda, 0x86, 0x7f, 0xc3, 0x7a, 0xd9, 0x46, 0x1c, 0x0b, 0x43, 0x2b, 0xdb, 0xdd, 0xfb, 0x49, + 0x84, 0x25, 0x3c, 0x6f, 0xc3, 0x58, 0x74, 0xc3, 0x4b, 0xfa, 0x11, 0x52, 0x9d, 0xf7, 0x54, 0xa9, + 0x45, 0x28, 0x88, 0x20, 0x6e, 0xc7, 0x7d, 0xe4, 0x0f, 0x78, 0x95, 0x9a, 0xa0, 0x01, 0x87, 0xdd, + 0x08, 0xba, 0x84, 0x6a, 0x12, 0xc4, 0x84, 0xcd, 0xf6, 0x09, 0xbb, 0x19, 0x59, 0xa3, 0xf9, 0xf2, + 0xfa, 0xf5, 0x72, 0xc1, 0x62, 0xb0, 0x1c, 0xb2, 0x9c, 0xcc, 0xd1, 0x1d, 0xc1, 0x4d, 0xa1, 0x40, + 0xfb, 0xdb, 0x4a, 0x28, 0x50, 0xbe, 0x9a, 0x2c, 0x22, 0x62, 0xa7, 0xc9, 0x4d, 0x13, 0x25, 0xd8, + 0x24, 0x3b, 0x82, 0x35, 0x7b, 0x42, 0x81, 0xf6, 0x9a, 0xf7, 0x95, 0x50, 0x80, 0xca, 0x1e, 0xec, + 0x06, 0x3d, 0x9b, 0xec, 0x83, 0x80, 0xba, 0x0e, 0x56, 0x1c, 0x21, 0x43, 0xda, 0x2f, 0xe7, 0xd2, + 0xe4, 0xcf, 0x71, 0xe8, 0x21, 0xbb, 0x36, 0x22, 0xed, 0xc1, 0x4b, 0xcd, 0xeb, 0x2d, 0x7f, 0xd4, + 0x3a, 0x7a, 0x99, 0x03, 0x45, 0x7c, 0x9d, 0xd9, 0xb6, 0xbd, 0x38, 0xa5, 0xc6, 0xbd, 0x87, 0x6c, + 0x90, 0x5e, 0x6f, 0xb5, 0xa5, 0x1d, 0xf5, 0x5d, 0xd2, 0x4f, 0x4e, 0x58, 0xd7, 0xac, 0xf2, 0x06, + 0x13, 0xef, 0xdd, 0x73, 0x94, 0xc0, 0x7f, 0x8c, 0x25, 0xec, 0xfc, 0x24, 0xaa, 0x1b, 0x3e, 0x46, + 0xaa, 0x48, 0xa2, 0x97, 0xce, 0x8d, 0x35, 0x67, 0x2d, 0xa9, 0xaa, 0x08, 0x4a, 0x50, 0x2a, 0x7e, + 0xc9, 0x52, 0x18, 0xe7, 0xaa, 0xe5, 0xdc, 0x85, 0xf0, 0x13, 0x1c, 0x5a, 0x5d, 0x20, 0x75, 0x93, + 0xdb, 0xd7, 0xd6, 0x11, 0x52, 0xca, 0x1f, 0x27, 0x35, 0x25, 0x07, 0x84, 0xf3, 0xa0, 0x89, 0x5b, + 0xe7, 0xa8, 0xea, 0x1e, 0x48, 0xa7, 0xeb, 0x13, 0x2e, 0x34, 0x6a, 0xc3, 0x83, 0x70, 0x6f, 0x73, + 0xce, 0xea, 0xce, 0x53, 0x12, 0xdf, 0x5d, 0x84, 0x1c, 0x66, 0xf2, 0xe6, 0x60, 0x47, 0x8e, 0x7e, + 0x43, 0x34, 0xac, 0xf2, 0x35, 0xa4, 0xd6, 0x5f, 0x71, 0xaa, 0x74, 0x8d, 0x13, 0xee, 0x8a, 0x2e, + 0xc6, 0x58, 0x9d, 0xad, 0x25, 0xd8, 0x71, 0x9f, 0x7a, 0x5b, 0xe5, 0xe6, 0xc6, 0x1d, 0x55, 0xdf, + 0xa3, 0xf2, 0x76, 0xd7, 0x0a, 0x93, 0x40, 0xb8, 0x34, 0x62, 0xca, 0x13, 0x4c, 0x20, 0x5c, 0x1a, + 0x30, 0xe5, 0x1d, 0x08, 0x8c, 0x52, 0xed, 0x68, 0xd8, 0x2e, 0x6f, 0x93, 0xb6, 0x6e, 0xd4, 0x27, + 0x3e, 0xd2, 0xe2, 0xf1, 0xd9, 0x64, 0x6c, 0x47, 0x63, 0x1d, 0x09, 0x71, 0xb2, 0x91, 0xbe, 0xda, + 0x16, 0x9f, 0x30, 0x80, 0xf5, 0x35, 0x9b, 0x24, 0xd7, 0xd6, 0xfa, 0x3a, 0x9a, 0x02, 0x03, 0x35, + 0x9b, 0x8c, 0xd1, 0x4b, 0x84, 0x1b, 0xb5, 0x9b, 0x5f, 0x80, 0x48, 0x6d, 0x46, 0x3a, 0x71, 0xa2, + 0xa5, 0x4a, 0x28, 0x14, 0x08, 0x6d, 0xa3, 0x11, 0xf6, 0x1d, 0xa4, 0x1e, 0x4f, 0xa8, 0xd2, 0x63, + 0x82, 0x2d, 0x41, 0x5c, 0x6a, 0x0b, 0xb0, 0x6f, 0x4b, 0xe3, 0xff, 0x3d, 0x87, 0x1e, 0xb2, 0x6f, + 0x18, 0xce, 0x60, 0x07, 0x6c, 0x73, 0x4f, 0x92, 0x21, 0x3c, 0xcd, 0xa9, 0xd2, 0x71, 0x4e, 0x98, + 0x03, 0xe9, 0xcf, 0xba, 0xd3, 0xcd, 0x51, 0xa7, 0x02, 0x6d, 0xda, 0xa6, 0xb4, 0x43, 0x9b, 0x2a, + 0xe6, 0x69, 0x93, 0x81, 0xf4, 0x0f, 0xa9, 0x4d, 0x46, 0x9d, 0xf8, 0x00, 0x5a, 0xdc, 0x1e, 0x20, + 0xb7, 0x07, 0x9f, 0x2a, 0x1c, 0x2d, 0x7c, 0x1b, 0x49, 0x25, 0xd6, 0x71, 0x72, 0xd3, 0x93, 0xa2, + 0x8b, 0x6b, 0xe1, 0x2f, 0x44, 0xb4, 0x31, 0x8c, 0xe3, 0x4e, 0x89, 0xae, 0x94, 0x99, 0xcf, 0xd3, + 0x57, 0xa6, 0xd9, 0x34, 0x99, 0xe6, 0xe3, 0x7f, 0x8f, 0x96, 0xec, 0x53, 0x76, 0xef, 0x0d, 0x04, + 0x5a, 0xcb, 0x7f, 0x54, 0x38, 0xf4, 0xec, 0x9b, 0x90, 0x4c, 0xe2, 0xdd, 0x91, 0x08, 0x3b, 0x46, + 0x06, 0x71, 0xa3, 0x53, 0x72, 0xd0, 0xdf, 0x60, 0xfb, 0xce, 0x89, 0xf7, 0xcc, 0x1c, 0x99, 0x65, + 0xcf, 0x9d, 0xb7, 0x61, 0xca, 0x06, 0x11, 0xfe, 0xdf, 0x72, 0xe8, 0x31, 0x65, 0x7f, 0x50, 0xf1, + 0x7b, 0xb1, 0x54, 0xd6, 0x18, 0xf0, 0x86, 0x1b, 0xa9, 0xe1, 0xcf, 0xd9, 0x11, 0x09, 0xec, 0xd9, + 0x53, 0xfe, 0x63, 0x07, 0x57, 0xb9, 0xc8, 0xb8, 0xf7, 0x3f, 0x2f, 0xaa, 0xe8, 0x31, 0x0f, 0xef, + 0x81, 0x19, 0xe8, 0x13, 0x97, 0xf0, 0xc0, 0x8d, 0xf4, 0x38, 0x82, 0x01, 0xef, 0x6c, 0x32, 0x86, + 0xb3, 0x62, 0xd9, 0x30, 0x15, 0x1f, 0x48, 0x25, 0x47, 0x72, 0x46, 0xc7, 0xe4, 0xec, 0xa9, 0xe4, + 0x48, 0xfa, 0xec, 0x75, 0x7d, 0xf0, 0xb2, 0xa3, 0xd5, 0xd7, 0xd6, 0x86, 0x7b, 0xd1, 0xbc, 0x7e, + 0x53, 0xb3, 0x61, 0xbd, 0x3c, 0x6f, 0x15, 0xb0, 0x86, 0xcb, 0xfb, 0x95, 0x7d, 0x8d, 0x01, 0x6f, + 0x13, 0x6c, 0xa4, 0x60, 0x2b, 0x7c, 0x9a, 0x4c, 0xc8, 0xdd, 0xaa, 0xf4, 0x4b, 0xa1, 0x40, 0xb2, + 0x58, 0x9b, 0x0f, 0xc3, 0xaa, 0xde, 0xc9, 0xab, 0xc1, 0x80, 0x57, 0x9b, 0x4e, 0xa4, 0x3f, 0x3b, + 0xaa, 0x5d, 0x1a, 0x49, 0xdd, 0xea, 0x4d, 0xdd, 0x3a, 0xaa, 0x0d, 0x0f, 0xea, 0xfd, 0x03, 0x50, + 0x77, 0xa7, 0x64, 0xf4, 0xb2, 0x63, 0xfd, 0x37, 0xb5, 0x0b, 0x85, 0xa2, 0xca, 0xbf, 0x90, 0x0b, + 0x90, 0xc7, 0x82, 0x0e, 0xef, 0x55, 0x3a, 0x7d, 0x1e, 0xa5, 0x31, 0x10, 0x68, 0x33, 0x83, 0x90, + 0x3f, 0x43, 0x38, 0x89, 0x5f, 0x95, 0x5a, 0x85, 0x02, 0xc9, 0xe2, 0x8e, 0x7c, 0x98, 0x19, 0x23, + 0x86, 0x06, 0xf9, 0x8d, 0xf6, 0x56, 0x3b, 0x52, 0xf1, 0xe9, 0xcc, 0xc7, 0x5d, 0x5a, 0xe2, 0xb8, + 0xf9, 0x32, 0x41, 0xfa, 0xe2, 0xf1, 0x54, 0xe2, 0x58, 0x2a, 0x71, 0x45, 0xfb, 0xa0, 0x4b, 0x8b, + 0x9d, 0x34, 0xeb, 0x48, 0x8e, 0x09, 0xe5, 0x02, 0x45, 0x55, 0xdc, 0xe1, 0x50, 0x29, 0x33, 0xcf, + 0x78, 0x99, 0x0d, 0x47, 0x08, 0xe1, 0x65, 0x09, 0x40, 0x7c, 0x2e, 0x77, 0xca, 0x55, 0xd2, 0xd3, + 0x27, 0xa3, 0xb0, 0xd4, 0x74, 0x2f, 0x44, 0x5c, 0x7c, 0x53, 0xd9, 0x0d, 0x18, 0x55, 0x34, 0x9c, + 0xe1, 0x66, 0xb4, 0x98, 0xbc, 0x09, 0x14, 0x62, 0xe3, 0xfb, 0x52, 0x90, 0x58, 0x91, 0x4b, 0x17, + 0xe0, 0xb6, 0xcb, 0xd1, 0x14, 0x97, 0x7f, 0x11, 0x2d, 0x8a, 0x04, 0x5a, 0x15, 0x23, 0xa4, 0x2f, + 0xbc, 0x60, 0x45, 0x20, 0xe2, 0xaa, 0x5c, 0x32, 0x04, 0x2c, 0x43, 0x6a, 0xc5, 0xd7, 0x1c, 0x5a, + 0x44, 0x62, 0xe0, 0xf0, 0x4f, 0x33, 0x67, 0x39, 0xb5, 0x2b, 0x55, 0xe9, 0x01, 0x01, 0x7f, 0x8b, + 0x08, 0x62, 0xbe, 0x39, 0xb6, 0x28, 0x07, 0xe0, 0x84, 0x67, 0xad, 0xed, 0x84, 0xa7, 0xb6, 0x5c, + 0x95, 0x56, 0x09, 0x00, 0x11, 0x97, 0x52, 0x5c, 0xf2, 0x5e, 0x2a, 0x3d, 0xfb, 0x21, 0x31, 0xc9, + 0xf7, 0xec, 0x51, 0x3c, 0x11, 0xf6, 0x2c, 0x82, 0x82, 0xc4, 0x97, 0x20, 0x87, 0x7e, 0xa2, 0x4f, + 0x3f, 0x3f, 0x3a, 0x9b, 0x8c, 0x55, 0x36, 0x04, 0x9a, 0xe8, 0x85, 0xe3, 0x6a, 0x47, 0x63, 0x48, + 0xd9, 0xa3, 0x84, 0x58, 0x48, 0x43, 0xa0, 0x7e, 0xbf, 0xe2, 0xe9, 0x88, 0x90, 0x98, 0xe4, 0x84, + 0x42, 0x45, 0xb4, 0x12, 0x2d, 0x65, 0xe3, 0x5c, 0xf1, 0x5b, 0xd0, 0x32, 0x36, 0x6e, 0x95, 0xfd, + 0x90, 0x29, 0x27, 0x49, 0x5c, 0x46, 0x05, 0x4d, 0x12, 0x16, 0xdd, 0x55, 0x27, 0xe7, 0xa4, 0xf3, + 0x1b, 0x6c, 0x21, 0x1f, 0xe1, 0xf5, 0x16, 0x72, 0x18, 0xca, 0xb3, 0x19, 0x6d, 0x51, 0x1f, 0xdf, + 0xcb, 0x77, 0xb1, 0x82, 0x48, 0xb1, 0x96, 0x7d, 0xe3, 0xa7, 0x6c, 0x66, 0x5b, 0xe0, 0x47, 0xc3, + 0xb3, 0x8a, 0x71, 0xa2, 0x4a, 0x40, 0x44, 0x1f, 0x33, 0x95, 0xb5, 0x7d, 0xb4, 0x99, 0x41, 0x05, + 0x17, 0xce, 0x1d, 0x83, 0xc9, 0x68, 0xce, 0x77, 0x8e, 0x2b, 0xf8, 0xb6, 0x19, 0x57, 0x10, 0x1e, + 0x12, 0x59, 0x95, 0x77, 0xe3, 0x1f, 0xa7, 0xd2, 0x28, 0x94, 0x34, 0x8e, 0xe0, 0x9a, 0x7c, 0xd2, + 0x90, 0x92, 0x13, 0x44, 0xf0, 0x5c, 0x01, 0x1f, 0x62, 0xb8, 0x6f, 0x4a, 0xfc, 0xfa, 0xf3, 0x7c, + 0x88, 0xdf, 0xcd, 0xf1, 0x21, 0x4e, 0xc5, 0x13, 0x80, 0xa2, 0x9f, 0xba, 0x41, 0x4f, 0x59, 0xc1, + 0xd6, 0x41, 0xbd, 0x56, 0xbe, 0xab, 0x6f, 0xf1, 0xff, 0x59, 0x64, 0xbf, 0x4f, 0x0b, 0xfe, 0x55, + 0x7f, 0x28, 0x52, 0xa5, 0xbf, 0x2a, 0xb2, 0xdf, 0xa8, 0xfd, 0xba, 0x28, 0xc7, 0x3d, 0x9d, 0xde, + 0xb0, 0xed, 0xbe, 0x65, 0x6e, 0x3f, 0xf1, 0x01, 0x80, 0x99, 0x28, 0x77, 0xa2, 0xdd, 0xda, 0xff, + 0xc3, 0xde, 0x9f, 0x47, 0x47, 0x71, 0xad, 0x09, 0x82, 0xf8, 0x0b, 0x6d, 0x88, 0x0b, 0x08, 0x11, + 0x6c, 0x32, 0xd8, 0x38, 0x2d, 0x6f, 0x28, 0x9e, 0x58, 0x1c, 0xde, 0xb0, 0xbc, 0x86, 0x16, 0xb0, + 0xcc, 0x26, 0x87, 0x80, 0xe7, 0xe7, 0xa5, 0xfc, 0x12, 0x29, 0x81, 0x34, 0x52, 0xa6, 0x5e, 0x66, + 0x0a, 0x1b, 0xbf, 0xa5, 0x12, 0x21, 0x81, 0x04, 0x12, 0x12, 0x61, 0x56, 0x21, 0x36, 0x9b, 0xcd, + 0x8b, 0x90, 0x79, 0xf0, 0x40, 0xa4, 0x24, 0xf3, 0xeb, 0x3a, 0xdd, 0xd5, 0xdd, 0xf5, 0xab, 0x9e, + 0xae, 0x62, 0xaa, 0xba, 0xab, 0xba, 0xba, 0x67, 0xa6, 0x9a, 0x8c, 0xcc, 0xd4, 0x9c, 0xaa, 0x61, + 0x66, 0x7a, 0xe6, 0x9c, 0x3e, 0x3e, 0x73, 0xce, 0xcc, 0x89, 0xfb, 0xdd, 0x7b, 0xe3, 0xc6, 0x92, + 0x92, 0x58, 0xcc, 0x62, 0xc3, 0x3f, 0x28, 0xef, 0x1e, 0xf7, 0x7e, 0xf7, 0xbb, 0xdf, 0xfe, 0x5d, + 0xfa, 0x03, 0xb3, 0x37, 0x37, 0x5e, 0x07, 0xdf, 0x27, 0x91, 0x67, 0xaf, 0x0f, 0xb6, 0xfb, 0x3e, + 0x89, 0x3c, 0x77, 0x7d, 0xb0, 0xfd, 0x93, 0x75, 0x61, 0x0f, 0xef, 0x65, 0x0c, 0x82, 0x5a, 0xe2, + 0xe0, 0xfc, 0xed, 0x36, 0x78, 0x1b, 0x60, 0x50, 0xbd, 0xe5, 0x62, 0x7c, 0x60, 0x1f, 0xdf, 0x38, + 0xd1, 0xba, 0x2f, 0xd1, 0xf3, 0x15, 0x3f, 0x3a, 0xdf, 0x97, 0xb0, 0x61, 0xcc, 0x3c, 0xbe, 0x3f, + 0x66, 0xcc, 0xe9, 0x99, 0x1b, 0xa9, 0xf3, 0x07, 0x1a, 0x3f, 0x21, 0x23, 0x30, 0x4b, 0xf8, 0xd6, + 0xae, 0x4f, 0xd6, 0x85, 0x8b, 0x98, 0xeb, 0xf1, 0xb5, 0x68, 0x53, 0x62, 0xff, 0x31, 0xf3, 0x53, + 0x8d, 0x99, 0xda, 0x0c, 0x7a, 0xf7, 0xf0, 0x7e, 0xd3, 0x2f, 0x1c, 0x27, 0x3b, 0x8d, 0xf7, 0x0f, + 0x24, 0x7a, 0x62, 0x89, 0x5e, 0x66, 0xb9, 0xd4, 0x91, 0xdc, 0x73, 0x34, 0xb1, 0xb7, 0xf5, 0x5a, + 0xb4, 0x89, 0x1d, 0x0a, 0x3e, 0x0e, 0xab, 0x13, 0xf2, 0xa9, 0x4c, 0x84, 0x1a, 0xc3, 0xbe, 0x50, + 0x35, 0xce, 0x98, 0x40, 0x4c, 0xc5, 0x5a, 0x32, 0x35, 0x65, 0x4b, 0xa6, 0xc4, 0x55, 0xc8, 0xff, + 0x67, 0x06, 0xa1, 0x8e, 0x40, 0xc1, 0xdf, 0xb5, 0x2b, 0x39, 0x74, 0x36, 0xd5, 0xdc, 0x9d, 0xe8, + 0xf9, 0xa6, 0xd8, 0x03, 0x1a, 0x5b, 0x30, 0x9b, 0x48, 0x76, 0x37, 0x13, 0xbb, 0x7f, 0x5c, 0x39, + 0xdf, 0xb3, 0x71, 0x51, 0x18, 0xc4, 0x32, 0x00, 0x4a, 0xf8, 0x29, 0x3b, 0x9d, 0x3a, 0xde, 0x6e, + 0x86, 0x67, 0xbc, 0x72, 0x38, 0xd5, 0xb7, 0x05, 0x9a, 0x43, 0x50, 0x9c, 0xe1, 0xed, 0x1d, 0x7a, + 0xcb, 0x49, 0x5d, 0x6b, 0x07, 0x4e, 0x66, 0x38, 0x3a, 0x90, 0xfa, 0x6e, 0x37, 0x58, 0x8f, 0x25, + 0x8e, 0xf4, 0xa4, 0x4e, 0x6d, 0x49, 0x9c, 0x6b, 0x22, 0x46, 0x0a, 0xe0, 0x56, 0xd0, 0x73, 0x26, + 0x75, 0xe5, 0x90, 0x31, 0x38, 0xbd, 0x02, 0xfa, 0xd9, 0xf6, 0x44, 0x6b, 0x17, 0x3c, 0x9b, 0x7a, + 0x67, 0x9f, 0xbe, 0xe3, 0x98, 0xde, 0x72, 0x32, 0xf5, 0xed, 0x56, 0x3d, 0x76, 0xca, 0x18, 0xbf, + 0xa5, 0x43, 0xef, 0x6a, 0xf5, 0x34, 0x06, 0x48, 0xec, 0x05, 0xe3, 0x59, 0xf7, 0x80, 0xc5, 0x2c, + 0x50, 0x2e, 0xc5, 0x1e, 0xbd, 0xe7, 0x8c, 0xc7, 0xfc, 0x7a, 0x4f, 0xa2, 0x27, 0x8a, 0x79, 0x56, + 0xfb, 0xf0, 0xc5, 0x1e, 0x70, 0xb7, 0xf6, 0x6c, 0x6c, 0x5c, 0xeb, 0xab, 0x89, 0xd4, 0x79, 0x1a, + 0x03, 0x35, 0xc1, 0x50, 0x6d, 0x30, 0xe0, 0x31, 0xf0, 0x9c, 0x81, 0xae, 0x3c, 0xf3, 0xe6, 0xe1, + 0x3a, 0x6c, 0x7f, 0xf1, 0xea, 0x82, 0x50, 0x30, 0x18, 0x59, 0x30, 0xdf, 0x28, 0x59, 0x00, 0x45, + 0x1e, 0x7d, 0xf7, 0x50, 0x7c, 0xc0, 0xa0, 0x98, 0xc8, 0xce, 0x72, 0x4b, 0x55, 0xb9, 0x03, 0x10, + 0xaf, 0x08, 0x68, 0x52, 0x63, 0xa0, 0xda, 0x5c, 0x31, 0xc9, 0x85, 0x48, 0x08, 0x5e, 0x6b, 0x9d, + 0xdc, 0x24, 0x10, 0x9b, 0x31, 0x3c, 0x1c, 0x13, 0x2e, 0xd3, 0x4c, 0x4c, 0x4d, 0xf1, 0xfe, 0x5d, + 0x30, 0x07, 0x23, 0x51, 0xf5, 0xe8, 0xe0, 0xc2, 0xd4, 0xf1, 0x33, 0xc9, 0x13, 0x31, 0x7b, 0xf5, + 0xe1, 0x23, 0xa4, 0x02, 0x27, 0x65, 0x32, 0xeb, 0xe6, 0x92, 0xb5, 0x52, 0x51, 0x82, 0xde, 0xd9, + 0x07, 0x32, 0x49, 0xd8, 0xca, 0x22, 0xd5, 0xba, 0x26, 0xf1, 0x7c, 0x86, 0xd3, 0x3e, 0x6e, 0x14, + 0x0f, 0x95, 0xff, 0x5b, 0xd0, 0x94, 0xff, 0x43, 0xe0, 0xcd, 0xe4, 0xae, 0x09, 0x37, 0x64, 0x27, + 0x37, 0xdf, 0xa3, 0x9f, 0xe8, 0x36, 0x2e, 0x8e, 0x15, 0x59, 0xd0, 0xae, 0xdd, 0x06, 0xf6, 0x1c, + 0x88, 0xb1, 0x4f, 0x48, 0xf5, 0x5d, 0x4a, 0x1e, 0x3f, 0x6b, 0x40, 0x24, 0xee, 0x5d, 0xb6, 0x66, + 0x39, 0x86, 0x48, 0x0c, 0x19, 0x83, 0xc7, 0x86, 0xa3, 0x5a, 0x3c, 0xb6, 0x8d, 0x58, 0xbe, 0xe3, + 0x68, 0x4d, 0x96, 0x3b, 0x08, 0x82, 0x56, 0x6a, 0x7b, 0x0d, 0x24, 0x52, 0xe2, 0x40, 0xdf, 0xb0, + 0xd6, 0xaa, 0xf7, 0x5d, 0x66, 0x8e, 0x57, 0xf1, 0xd8, 0xe9, 0x44, 0x4f, 0x4c, 0x3f, 0x78, 0x26, + 0xde, 0xbf, 0x87, 0xac, 0xf7, 0x44, 0xb7, 0x89, 0x2f, 0x7a, 0x62, 0x89, 0x83, 0x7d, 0xbc, 0x75, + 0x5f, 0x5b, 0x06, 0x09, 0x05, 0xa8, 0x84, 0xd6, 0x87, 0x0b, 0x26, 0xe0, 0x5d, 0xfb, 0xf9, 0x88, + 0xcf, 0x50, 0x05, 0x6d, 0x0d, 0x2f, 0xd1, 0x90, 0xa0, 0x29, 0x97, 0x05, 0xc9, 0x1c, 0x44, 0xfe, + 0x5a, 0x20, 0x36, 0xc7, 0x5d, 0xcd, 0xc0, 0x1f, 0x30, 0x21, 0x2f, 0x2c, 0xdd, 0x38, 0x74, 0x9a, + 0xac, 0x21, 0xd9, 0xdd, 0xbc, 0xd1, 0xb7, 0x39, 0xde, 0x1f, 0x33, 0x60, 0xb6, 0xce, 0x17, 0xc1, + 0x34, 0x47, 0xbc, 0x3f, 0x66, 0xf6, 0xbd, 0x72, 0x28, 0x79, 0x86, 0x18, 0x6b, 0xb1, 0xee, 0x34, + 0x96, 0x15, 0xde, 0x88, 0xcb, 0x3b, 0x87, 0xf7, 0x5f, 0x80, 0x8b, 0xf5, 0x32, 0x93, 0x47, 0x18, + 0x0f, 0xd6, 0xa9, 0xa6, 0xa5, 0x30, 0x68, 0x89, 0xc7, 0xb8, 0x17, 0xf3, 0x6a, 0xfd, 0xa1, 0x57, + 0x17, 0x6c, 0xf2, 0x86, 0x16, 0xd4, 0xf9, 0xd7, 0x2e, 0x20, 0xf3, 0xbd, 0xac, 0x9a, 0x0b, 0x17, + 0xff, 0xbd, 0x80, 0xc4, 0x86, 0x90, 0xaf, 0x3a, 0xe2, 0x0d, 0x45, 0x56, 0x9b, 0x48, 0x0b, 0xcc, + 0x0c, 0x8f, 0x08, 0x9a, 0xd2, 0x2d, 0x48, 0x2e, 0x0d, 0xe4, 0xad, 0x82, 0x05, 0x79, 0xb5, 0x75, + 0x38, 0x90, 0x97, 0x27, 0x0d, 0xf6, 0xc2, 0x1e, 0x29, 0xe4, 0xd6, 0x43, 0x6f, 0x83, 0x1c, 0x6f, + 0xeb, 0x60, 0x38, 0x2c, 0x71, 0xfe, 0x4c, 0xa2, 0xb9, 0x13, 0x08, 0x52, 0xbd, 0xf3, 0x2b, 0xbd, + 0xef, 0xb2, 0x33, 0x00, 0x03, 0x20, 0x62, 0xd5, 0x65, 0x65, 0xc6, 0xe9, 0x4e, 0x59, 0x5b, 0x03, + 0xd6, 0x16, 0x2b, 0x1b, 0x23, 0x4a, 0x6d, 0x6d, 0x30, 0x10, 0x26, 0x2e, 0x87, 0x8e, 0xc4, 0x55, + 0x4a, 0x0d, 0x0e, 0x9d, 0xfc, 0x67, 0x82, 0xa6, 0x7c, 0x27, 0x48, 0xce, 0x7e, 0xf2, 0x19, 0x21, + 0xde, 0xbf, 0x23, 0x71, 0xe4, 0xa2, 0x09, 0xcf, 0x18, 0x2d, 0x96, 0x96, 0x55, 0xeb, 0xdb, 0x5a, + 0x92, 0x43, 0x67, 0x21, 0x40, 0xb9, 0x7e, 0xb6, 0x2d, 0xf5, 0x45, 0x0b, 0x10, 0x41, 0xc4, 0x83, + 0x6b, 0xb0, 0x3b, 0x79, 0xe1, 0x73, 0x7d, 0x70, 0x2f, 0xd8, 0xcf, 0xc3, 0x65, 0xe2, 0xe9, 0x60, + 0x82, 0x5e, 0xfb, 0x2e, 0x27, 0xfa, 0xf6, 0x18, 0xf7, 0xff, 0xf8, 0x49, 0xbd, 0xc5, 0x18, 0x01, + 0xe6, 0x35, 0xc3, 0x58, 0x81, 0x22, 0x11, 0x4b, 0x44, 0xd8, 0xb6, 0x01, 0xff, 0x02, 0x23, 0xa4, + 0xbe, 0xdd, 0x9a, 0xdc, 0x73, 0xe6, 0x5a, 0xb4, 0x49, 0x75, 0xae, 0x5e, 0xdc, 0x96, 0x81, 0xf2, + 0x69, 0x69, 0x65, 0x80, 0x6c, 0x45, 0xde, 0x88, 0x5b, 0xf1, 0x2f, 0x04, 0x4d, 0x19, 0x12, 0x24, + 0x47, 0x37, 0xbc, 0x13, 0x3b, 0xef, 0x8f, 0x9d, 0x70, 0x2c, 0x5e, 0xdc, 0x9d, 0x81, 0xa6, 0x86, + 0xc9, 0xde, 0xc0, 0x65, 0x86, 0xbd, 0x98, 0x3c, 0xe2, 0x5e, 0xfc, 0xb9, 0xa0, 0x29, 0x7f, 0x26, + 0x48, 0x6e, 0x3d, 0xe5, 0xaf, 0xec, 0x80, 0x01, 0x50, 0xce, 0x27, 0x9b, 0x03, 0xfc, 0xc6, 0xf0, + 0x18, 0x9f, 0x5d, 0x2e, 0xde, 0x1f, 0x03, 0x4b, 0xd7, 0x78, 0xac, 0x3d, 0xb1, 0xef, 0xf2, 0x02, + 0x30, 0xf5, 0x5b, 0x00, 0x41, 0x86, 0xf4, 0xbd, 0xdb, 0xc8, 0x00, 0xf8, 0x86, 0xa7, 0xdb, 0x0a, + 0x90, 0x9a, 0xc1, 0x86, 0x38, 0xf7, 0x21, 0xde, 0xbf, 0x0b, 0xce, 0xc2, 0xd8, 0x10, 0xb7, 0x2f, + 0x10, 0x5b, 0x33, 0x90, 0x18, 0x86, 0x5d, 0xe2, 0xb7, 0x24, 0x7f, 0xc4, 0x2d, 0x21, 0xca, 0x35, + 0x97, 0x8e, 0xf2, 0x09, 0x3b, 0x80, 0xdc, 0x9b, 0x7b, 0xe1, 0xb2, 0x74, 0xf1, 0x59, 0x16, 0x0f, + 0x1c, 0x94, 0xa0, 0xb3, 0x35, 0xa5, 0x80, 0xc5, 0x03, 0xb7, 0x30, 0x5c, 0x2b, 0xab, 0xdd, 0x82, + 0x7b, 0x4f, 0x4d, 0x1b, 0xdc, 0x7b, 0xda, 0x48, 0xc1, 0xbd, 0xa7, 0x8f, 0x12, 0xdc, 0x7b, 0x86, + 0x23, 0xb8, 0xf7, 0x8b, 0x28, 0xab, 0xd6, 0x17, 0x06, 0x1d, 0xd4, 0x78, 0x9a, 0xa8, 0xdf, 0x17, + 0xae, 0x91, 0x0b, 0xd8, 0x22, 0x13, 0x87, 0xaf, 0x40, 0x32, 0x2f, 0x96, 0xa0, 0xd3, 0x17, 0xae, + 0x11, 0x1b, 0xd1, 0xb8, 0x50, 0x63, 0x20, 0x62, 0x8c, 0x5a, 0xe0, 0x2e, 0xa0, 0x52, 0x1b, 0xb1, + 0xb6, 0x04, 0xcb, 0xc4, 0xb0, 0xa8, 0x80, 0x76, 0x90, 0x17, 0x9a, 0xc9, 0x53, 0x6c, 0x5e, 0x90, + 0x9d, 0x7d, 0xec, 0x6f, 0x88, 0x43, 0x46, 0xd3, 0x92, 0x92, 0xae, 0xe2, 0x56, 0x81, 0x49, 0xe2, + 0x1e, 0x1a, 0x55, 0x12, 0x87, 0x2d, 0x42, 0xa8, 0x24, 0xae, 0xd4, 0x36, 0x69, 0xbc, 0x7f, 0x07, + 0x80, 0x97, 0x31, 0x2f, 0x4e, 0xe2, 0x46, 0x03, 0xa1, 0x75, 0xeb, 0x3b, 0x8e, 0xc7, 0xfb, 0x77, + 0x8e, 0x20, 0x9d, 0xdb, 0x8c, 0xf2, 0xc9, 0xa1, 0x57, 0x85, 0x7c, 0xe4, 0x85, 0x9b, 0x85, 0x77, + 0x70, 0xb9, 0xa6, 0xbc, 0x25, 0x39, 0x2a, 0xe5, 0x17, 0x78, 0xdb, 0x3d, 0xb7, 0xc7, 0xcd, 0xfd, + 0x6d, 0x53, 0x1d, 0x23, 0x89, 0xbf, 0x45, 0x53, 0x68, 0x59, 0x30, 0x1c, 0x21, 0x73, 0xcf, 0x36, + 0x83, 0xce, 0x3b, 0x6b, 0x6d, 0x93, 0x8f, 0x99, 0x2d, 0x50, 0x9d, 0x43, 0x89, 0x9b, 0xd1, 0x04, + 0x6f, 0x20, 0x10, 0x8c, 0x60, 0x71, 0x7c, 0xb8, 0xe0, 0x61, 0x4c, 0xea, 0xcc, 0x1b, 0x91, 0xd4, + 0x51, 0xcc, 0xf6, 0x40, 0xec, 0xcc, 0xd5, 0x94, 0x27, 0x25, 0x7e, 0x18, 0x79, 0x06, 0x2c, 0xcd, + 0x2c, 0x22, 0x0e, 0x0c, 0x7c, 0x23, 0xf1, 0x3d, 0x94, 0x57, 0xef, 0xfd, 0x04, 0x8b, 0xf6, 0x20, + 0xfb, 0x0a, 0x51, 0xcd, 0xe0, 0xd4, 0x4d, 0xb6, 0x2a, 0x79, 0x4e, 0xa2, 0xaf, 0x33, 0xde, 0xff, + 0x95, 0x69, 0xd1, 0x83, 0x2d, 0x09, 0xab, 0x68, 0x1e, 0x17, 0xd5, 0xd6, 0x5e, 0xac, 0x43, 0x79, + 0xe1, 0x8d, 0xfe, 0x06, 0x30, 0x78, 0xaa, 0x0c, 0xf8, 0x23, 0x58, 0x83, 0x92, 0x0b, 0x09, 0x49, + 0x6d, 0x55, 0xf2, 0x02, 0x12, 0x8d, 0xea, 0xd2, 0xf9, 0xd4, 0x95, 0xed, 0xc4, 0x54, 0x0f, 0xb3, + 0x88, 0xec, 0x15, 0xa1, 0x5c, 0x2e, 0x54, 0xaa, 0xb6, 0x01, 0xc4, 0xcf, 0x05, 0x34, 0xdb, 0x5b, + 0x57, 0x17, 0xfc, 0xb8, 0xda, 0x28, 0x27, 0x98, 0xf4, 0x17, 0x1b, 0x7c, 0x81, 0xc5, 0x5e, 0x7f, + 0x9d, 0xaf, 0x16, 0xab, 0x34, 0x72, 0x41, 0xed, 0x3a, 0x52, 0x3b, 0xf9, 0x35, 0xa2, 0xaa, 0xa3, + 0x01, 0x41, 0x79, 0x63, 0x51, 0xb2, 0x3a, 0x9c, 0x82, 0x92, 0x63, 0xba, 0xf9, 0x4a, 0x75, 0xa4, + 0xc1, 0xc5, 0xcf, 0x04, 0x34, 0xcb, 0x5a, 0x5f, 0x19, 0xe0, 0xd6, 0xe8, 0xc1, 0x6b, 0x24, 0x56, + 0x96, 0xd6, 0xfd, 0x79, 0x8d, 0x57, 0x76, 0xdd, 0xc4, 0xb2, 0x46, 0x98, 0xf6, 0x56, 0x22, 0x5d, + 0xd3, 0xa8, 0xd3, 0x8c, 0xec, 0xbe, 0xa1, 0xde, 0xaf, 0xa1, 0x7c, 0x3b, 0x24, 0xdf, 0x50, 0xd4, + 0xea, 0x0f, 0x34, 0xe5, 0x5d, 0xf4, 0x8e, 0x64, 0x91, 0xd3, 0x51, 0x3b, 0x7e, 0x78, 0x09, 0xa8, + 0xc8, 0x96, 0xe4, 0x73, 0xeb, 0xbb, 0x6c, 0x9a, 0x20, 0xf1, 0x81, 0x21, 0x93, 0xdd, 0xcd, 0xc3, + 0xd1, 0xee, 0xe4, 0x9e, 0x33, 0x90, 0x3b, 0x0b, 0xae, 0x4a, 0xe1, 0xd7, 0x99, 0x68, 0x12, 0xcd, + 0x58, 0x0a, 0x38, 0xea, 0x57, 0xc6, 0x7d, 0x31, 0x7f, 0x33, 0x19, 0xe0, 0x22, 0x4d, 0x79, 0x5e, + 0xb2, 0x55, 0xc9, 0x8f, 0x97, 0x95, 0x01, 0xa2, 0xab, 0x2c, 0x2f, 0x86, 0x2a, 0xa7, 0x86, 0x42, + 0xb5, 0x75, 0x12, 0x3f, 0x42, 0xf9, 0x7c, 0x09, 0x67, 0xa4, 0x8d, 0xd1, 0xbd, 0xa3, 0x52, 0x7e, + 0x9a, 0xce, 0x02, 0xc2, 0xc2, 0xf4, 0x33, 0x39, 0xba, 0x1a, 0x5f, 0xf3, 0x71, 0x30, 0xb4, 0x91, + 0xfb, 0x9a, 0x4c, 0xee, 0x6b, 0xac, 0x55, 0x96, 0xaf, 0x81, 0x2a, 0xb7, 0xaf, 0xb1, 0x76, 0x32, + 0xbe, 0x86, 0x2f, 0xc1, 0x5f, 0x93, 0xc5, 0x7d, 0x8d, 0xbd, 0xd2, 0xf1, 0x35, 0x69, 0x67, 0x72, + 0x74, 0x2d, 0x3c, 0x9e, 0x8d, 0x90, 0xf9, 0x4e, 0x89, 0x1b, 0xc8, 0x73, 0xb2, 0xb2, 0x31, 0x62, + 0x3b, 0x2c, 0xec, 0x49, 0xee, 0xa8, 0x94, 0x9f, 0xe4, 0x3e, 0xb0, 0x4c, 0xe1, 0x19, 0x27, 0xeb, + 0xc4, 0xf6, 0x8e, 0xa2, 0x8f, 0x18, 0x2e, 0x54, 0x06, 0xd8, 0x44, 0x70, 0x62, 0x58, 0x69, 0x65, + 0xaf, 0xb3, 0xcd, 0xc3, 0x3f, 0x23, 0x96, 0x79, 0xec, 0xfd, 0xc4, 0x20, 0x9a, 0x44, 0xa7, 0x2e, + 0xf5, 0x7f, 0xca, 0x0e, 0x0b, 0x3b, 0x0f, 0x5b, 0x6b, 0xe4, 0xe7, 0xf9, 0xd5, 0x97, 0x95, 0xc1, + 0xeb, 0x5b, 0x59, 0xce, 0x30, 0xe8, 0x81, 0x3e, 0x6a, 0xb3, 0x8d, 0xf3, 0x82, 0x90, 0x6a, 0xd5, + 0x3a, 0x8a, 0x58, 0x87, 0x0d, 0x57, 0x8c, 0x35, 0xc0, 0x7c, 0x59, 0x66, 0xe2, 0x09, 0x4b, 0x85, + 0xfc, 0x3c, 0xff, 0x11, 0x63, 0x9f, 0xce, 0x32, 0x88, 0x18, 0x22, 0x74, 0x2e, 0xdb, 0x59, 0x0c, + 0x2c, 0x10, 0x0c, 0xad, 0x54, 0x53, 0x5e, 0x97, 0x5c, 0xaa, 0xe5, 0x22, 0x1b, 0xb8, 0x8c, 0x70, + 0x6e, 0x2e, 0xdd, 0xc5, 0x20, 0x7b, 0xf7, 0xb9, 0x29, 0x73, 0xcc, 0x84, 0x4a, 0xce, 0x5a, 0x97, + 0x19, 0xd3, 0x9e, 0xa0, 0xb3, 0x77, 0x61, 0x9f, 0x80, 0x26, 0x70, 0x24, 0x9c, 0xa8, 0xa2, 0xfc, + 0x9a, 0x60, 0x20, 0xe2, 0xf5, 0x07, 0x7c, 0x21, 0x95, 0x50, 0x7e, 0x00, 0xa4, 0x4f, 0x69, 0xca, + 0xe3, 0x92, 0xa3, 0x52, 0x9e, 0x0c, 0x31, 0x2d, 0x18, 0x41, 0xa7, 0x3a, 0x9a, 0x88, 0xcb, 0x50, + 0x1e, 0x21, 0xec, 0xd6, 0xf8, 0x42, 0x61, 0x7f, 0x90, 0xe6, 0x78, 0x7c, 0x42, 0x53, 0x1e, 0x93, + 0x6c, 0x55, 0xf2, 0x64, 0x1b, 0x69, 0xa8, 0xda, 0x1a, 0x14, 0x5e, 0x9e, 0x83, 0x1e, 0x82, 0xf4, + 0x88, 0x3c, 0x92, 0xa5, 0xc9, 0xfc, 0xd7, 0xf1, 0x3a, 0x09, 0x81, 0xc2, 0x87, 0xc4, 0xeb, 0x24, + 0x1e, 0xb1, 0xd0, 0xbc, 0xd6, 0x44, 0x36, 0x95, 0xe5, 0xdf, 0x97, 0x16, 0x84, 0x66, 0xe4, 0x0b, + 0x05, 0xd1, 0x7c, 0x79, 0xf2, 0x9f, 0xbc, 0xb7, 0x70, 0xde, 0x4b, 0xde, 0x79, 0x9f, 0x2a, 0xf3, + 0xde, 0x9d, 0xf7, 0xc1, 0xcf, 0x9f, 0xe0, 0xf5, 0x11, 0x8b, 0x2c, 0xea, 0x92, 0x27, 0xdc, 0xd4, + 0x25, 0xcc, 0x43, 0xfd, 0xfb, 0xd2, 0xac, 0x50, 0x46, 0xbe, 0x40, 0xb4, 0x26, 0x94, 0x16, 0xcf, + 0xbc, 0x51, 0x5a, 0x7c, 0xb3, 0x4d, 0x05, 0xf2, 0xbc, 0x4b, 0xbe, 0x70, 0xf7, 0x5d, 0x79, 0xa0, + 0x0f, 0x79, 0xa0, 0x0f, 0xb9, 0xef, 0xf4, 0x21, 0xff, 0x8f, 0xe0, 0xa2, 0x0f, 0xf9, 0x07, 0x41, + 0x53, 0xfe, 0xa3, 0x60, 0xd1, 0x87, 0xfc, 0x1b, 0x8b, 0x44, 0x65, 0xcc, 0x8c, 0xcf, 0xf5, 0xc1, + 0xf6, 0x7b, 0x4d, 0x21, 0xf2, 0x40, 0xcb, 0xf0, 0x40, 0xcb, 0x20, 0xee, 0x73, 0xd1, 0x32, 0x2c, + 0x1a, 0x3b, 0xa6, 0xff, 0xf1, 0xaa, 0x1c, 0xfe, 0x7a, 0x24, 0x95, 0xc3, 0x31, 0x41, 0x53, 0x7a, + 0xdc, 0x55, 0x0e, 0x2d, 0x56, 0xfc, 0xc0, 0x49, 0x65, 0xae, 0x0f, 0xb6, 0x8f, 0xa4, 0x73, 0x80, + 0xa8, 0x3c, 0x3f, 0xa8, 0xd2, 0x21, 0x9d, 0x7c, 0x79, 0xd2, 0x03, 0xf9, 0xb2, 0x5d, 0xbe, 0x9c, + 0xf7, 0x93, 0x96, 0x2f, 0x4f, 0x1e, 0xbb, 0x7c, 0x79, 0xb1, 0x29, 0x5f, 0x9e, 0x42, 0xa3, 0x29, + 0x3d, 0x6a, 0xba, 0xf5, 0x4c, 0xc3, 0xb1, 0xfb, 0x52, 0x17, 0x4e, 0xe9, 0x9d, 0x97, 0x98, 0x6f, + 0x0f, 0x97, 0x06, 0x81, 0x49, 0xa3, 0xbf, 0x12, 0x4c, 0xd9, 0xaf, 0x38, 0xba, 0xec, 0x17, 0x13, + 0x6b, 0x4c, 0xf6, 0xeb, 0xbb, 0x51, 0xd9, 0x6f, 0xb1, 0x07, 0xc2, 0x13, 0x42, 0xa0, 0x2c, 0xe3, + 0x81, 0x05, 0x61, 0x08, 0xeb, 0xa7, 0xb5, 0xd3, 0xe6, 0x5c, 0xce, 0x48, 0x26, 0x30, 0x3e, 0x6f, + 0x0a, 0x8c, 0xa7, 0x8e, 0x2a, 0x30, 0xc6, 0xb1, 0x82, 0xa8, 0xc0, 0x38, 0xc4, 0x31, 0xbf, 0x9e, + 0x5b, 0x17, 0x1e, 0x43, 0x78, 0x21, 0x30, 0x79, 0x66, 0x79, 0x20, 0x8c, 0xe7, 0x89, 0xe7, 0xc3, + 0xa8, 0x80, 0x79, 0xbf, 0x80, 0xf2, 0xab, 0xed, 0x12, 0xe6, 0x69, 0x24, 0xc3, 0xe1, 0xfa, 0x60, + 0x70, 0x7d, 0x9d, 0x6f, 0x7e, 0x43, 0x28, 0x18, 0x09, 0xae, 0x6d, 0x5c, 0x37, 0xbf, 0x3a, 0x12, + 0xf2, 0x07, 0xd6, 0x63, 0x83, 0xb3, 0xb1, 0xc9, 0x9f, 0xc7, 0x2e, 0x02, 0x76, 0x2c, 0x42, 0xec, + 0x16, 0xd0, 0x94, 0x6a, 0x87, 0x00, 0x7a, 0xfa, 0x18, 0x96, 0x76, 0xdb, 0xc5, 0xd3, 0x8e, 0x65, + 0x88, 0x75, 0x56, 0xf1, 0xf4, 0x0c, 0xf7, 0x60, 0x2e, 0xcb, 0xbd, 0x0d, 0xd5, 0x91, 0x50, 0x63, + 0x4d, 0x04, 0x6c, 0x0d, 0x2d, 0xa2, 0xe8, 0x47, 0xc8, 0x1c, 0xf8, 0x3d, 0xb6, 0x8b, 0xa5, 0xc3, + 0x16, 0x89, 0xf4, 0x5d, 0x93, 0x45, 0xd2, 0x0c, 0x78, 0xe9, 0x99, 0x5d, 0x59, 0x24, 0x17, 0x98, + 0xe3, 0x1b, 0xaf, 0x0a, 0x26, 0x93, 0x7a, 0x55, 0xc0, 0x1c, 0xe7, 0x55, 0x81, 0xde, 0xe9, 0xc2, + 0x8b, 0x19, 0x68, 0x96, 0xdb, 0x70, 0xe1, 0x86, 0x60, 0x20, 0xec, 0x13, 0xe7, 0xa3, 0xac, 0x1a, + 0x6a, 0xf8, 0x39, 0x89, 0xa4, 0x7d, 0x36, 0x0a, 0x0c, 0xa6, 0x7c, 0x8f, 0x7e, 0xe8, 0x08, 0x98, + 0xb8, 0x27, 0x8f, 0x6d, 0x51, 0x71, 0xb1, 0x58, 0x82, 0xc6, 0xd5, 0x13, 0xbb, 0x78, 0xe0, 0x83, + 0x71, 0x02, 0x13, 0x5a, 0x26, 0x8b, 0x7c, 0x2f, 0xaa, 0xe2, 0x21, 0x95, 0xe2, 0x33, 0x28, 0x27, + 0xe4, 0x0b, 0x37, 0xd6, 0x45, 0x48, 0x7c, 0x7c, 0x1c, 0xf1, 0x81, 0x14, 0xc9, 0x13, 0xa1, 0x67, + 0x72, 0xe0, 0xb3, 0xc4, 0x91, 0x1e, 0x95, 0x94, 0x8a, 0x9b, 0xd1, 0xe4, 0x8f, 0x7d, 0x6b, 0x3f, + 0xe4, 0xcf, 0x3e, 0xcb, 0x3d, 0xb7, 0xf2, 0x2f, 0x7c, 0x6b, 0x39, 0x31, 0xee, 0x1a, 0x19, 0x32, + 0xfe, 0xda, 0x7b, 0xcb, 0x05, 0x34, 0x21, 0x7b, 0x54, 0x3f, 0x77, 0x04, 0x04, 0x00, 0x89, 0xc3, + 0x5b, 0x87, 0x0f, 0x76, 0xa9, 0x79, 0x1f, 0x5b, 0x46, 0x28, 0xfc, 0x33, 0x0f, 0x7a, 0x68, 0x35, + 0xd6, 0xa7, 0xb9, 0x09, 0x1d, 0x5e, 0x70, 0x0a, 0x1d, 0xb0, 0xb1, 0x28, 0x27, 0x74, 0xc8, 0xa5, + 0xf2, 0x05, 0x5e, 0x88, 0xb0, 0xd6, 0x61, 0xc0, 0x09, 0xdb, 0x88, 0x33, 0x64, 0xd8, 0x0d, 0x38, + 0x9f, 0xb4, 0xfe, 0x06, 0x0f, 0x06, 0x93, 0xd2, 0x1f, 0xcd, 0xae, 0x33, 0x33, 0xbd, 0x5d, 0xa7, + 0x19, 0x4a, 0xcf, 0x2a, 0xa1, 0xc8, 0xba, 0x79, 0x09, 0x45, 0xb6, 0xbb, 0x84, 0x22, 0xed, 0x16, + 0xde, 0x46, 0x09, 0x45, 0xce, 0x1d, 0x91, 0x50, 0x8c, 0xbb, 0x87, 0x25, 0x14, 0xb9, 0x0f, 0x24, + 0x14, 0x77, 0x44, 0x42, 0xd1, 0x61, 0xb5, 0xd8, 0x84, 0xe0, 0xfe, 0xff, 0x94, 0xa1, 0x29, 0xa9, + 0x0c, 0x8b, 0x84, 0xe2, 0xef, 0x33, 0xee, 0x2f, 0x39, 0xc4, 0xfd, 0x6a, 0x98, 0xf9, 0x5f, 0x1c, + 0x22, 0x13, 0x94, 0x86, 0x60, 0x59, 0x5d, 0x19, 0x88, 0x3c, 0x2b, 0x03, 0xc1, 0x72, 0xbf, 0x0a, + 0x54, 0x26, 0x3c, 0x10, 0xa8, 0xdc, 0x84, 0x40, 0x65, 0xa2, 0xbb, 0x40, 0x25, 0xfd, 0xc3, 0xf4, + 0xe3, 0x15, 0xa8, 0xfc, 0xd1, 0x5d, 0xa0, 0x02, 0x09, 0x1d, 0x49, 0x12, 0x55, 0x37, 0x81, 0xca, + 0x47, 0xf7, 0xa8, 0xd0, 0x24, 0xef, 0x81, 0xd0, 0xc4, 0x2e, 0x34, 0x99, 0xfc, 0x93, 0x16, 0x9a, + 0xe4, 0x8f, 0x5d, 0x68, 0xf2, 0xb2, 0x3d, 0x1a, 0xc9, 0x63, 0x9a, 0x32, 0xcd, 0x8c, 0x46, 0x32, + 0x9e, 0xc5, 0x21, 0xe1, 0x25, 0x25, 0xd4, 0x3a, 0x8f, 0x97, 0x94, 0x4c, 0xbd, 0x8f, 0x24, 0x25, + 0xd3, 0xee, 0x73, 0x49, 0xc9, 0xf4, 0x7b, 0x57, 0x52, 0x32, 0xe3, 0x9e, 0x94, 0x94, 0xcc, 0xfc, + 0x91, 0x4a, 0x4a, 0x4e, 0x08, 0x9a, 0x72, 0x4c, 0x40, 0x87, 0x05, 0x89, 0x30, 0xe9, 0x90, 0xe5, + 0xbf, 0x06, 0xc7, 0xff, 0xa2, 0xc2, 0x92, 0x5f, 0xc2, 0x1d, 0xe6, 0xc4, 0x9f, 0xa9, 0xbe, 0x4b, + 0x89, 0x73, 0x4d, 0x38, 0x44, 0x39, 0x31, 0x4d, 0x33, 0x9a, 0xec, 0xb9, 0x0c, 0xb5, 0x0c, 0x4a, + 0x87, 0x0f, 0xfc, 0x21, 0xd1, 0xfb, 0xb9, 0xde, 0x77, 0x59, 0xef, 0x3d, 0x30, 0xbc, 0xbd, 0x93, + 0x00, 0x76, 0xec, 0x74, 0x72, 0xcf, 0x51, 0x7d, 0xe8, 0x9c, 0xfe, 0x59, 0x87, 0x55, 0xe6, 0x62, + 0x63, 0xc0, 0xaf, 0x0a, 0x14, 0x4f, 0x60, 0xe9, 0x8b, 0x1b, 0xa1, 0xf1, 0x40, 0xfa, 0x32, 0x8a, + 0xf4, 0xe5, 0x8b, 0x0c, 0xf4, 0x10, 0xc4, 0xf1, 0x70, 0x93, 0xbe, 0xac, 0x74, 0x4a, 0x5f, 0x9e, + 0xd1, 0x94, 0xf9, 0xbc, 0xf4, 0xe5, 0x31, 0x1e, 0x20, 0x6c, 0x26, 0x1f, 0xce, 0x38, 0x5b, 0x77, + 0x40, 0x2c, 0xc3, 0x84, 0x7b, 0x69, 0x3f, 0x4b, 0x16, 0x21, 0x4e, 0x19, 0x3f, 0xce, 0x88, 0x80, + 0x86, 0xc1, 0xcb, 0x6d, 0xb8, 0x07, 0xe0, 0x35, 0x0a, 0x78, 0xfd, 0x37, 0x01, 0xcd, 0x58, 0xe2, + 0x8b, 0xdc, 0x4e, 0xc9, 0xde, 0xd2, 0x34, 0x20, 0x74, 0x33, 0xae, 0xd9, 0x25, 0xab, 0x34, 0xe5, + 0x6d, 0xb4, 0x52, 0x4a, 0xb3, 0x46, 0xb9, 0x20, 0x71, 0xf4, 0x64, 0xaa, 0xef, 0x73, 0x5e, 0x36, + 0x97, 0xea, 0x3b, 0x95, 0xd8, 0xda, 0x32, 0x32, 0xb8, 0xfc, 0x6d, 0x26, 0x9a, 0xe9, 0x18, 0xf1, + 0xfe, 0x80, 0x95, 0x95, 0x28, 0xcb, 0xe0, 0xef, 0x08, 0x80, 0x3c, 0x3c, 0x92, 0x61, 0x3a, 0x91, + 0x78, 0x1a, 0xcd, 0xad, 0x12, 0x4f, 0xd8, 0x22, 0x15, 0xd7, 0xb8, 0x01, 0x5f, 0xf6, 0x9d, 0x01, + 0xbe, 0x92, 0x95, 0x9a, 0xb2, 0x0c, 0xbd, 0x25, 0xa5, 0x3b, 0x0a, 0x79, 0x4e, 0xba, 0xd3, 0x85, + 0x9d, 0xb9, 0x2a, 0xe0, 0x13, 0xb8, 0x2a, 0xd0, 0xfd, 0x2c, 0xfc, 0x77, 0x19, 0x68, 0xe6, 0x32, + 0x7f, 0xf8, 0xde, 0x05, 0x67, 0x48, 0x76, 0x86, 0x4e, 0x0a, 0x52, 0xba, 0x75, 0xca, 0xbf, 0x77, + 0xfb, 0x68, 0xf2, 0x58, 0x83, 0x88, 0x0b, 0xb2, 0x03, 0xc4, 0x63, 0xdb, 0x8c, 0x9d, 0x3d, 0xb6, + 0x1d, 0x42, 0x4a, 0x43, 0xdc, 0x97, 0xe4, 0x40, 0xb3, 0xde, 0xd5, 0x0a, 0xe5, 0x44, 0xd0, 0x8a, + 0x47, 0x33, 0xfb, 0xb6, 0x9c, 0x61, 0x64, 0x67, 0xbc, 0x3f, 0x06, 0xb5, 0x7a, 0x0b, 0x0e, 0x63, + 0x84, 0xdb, 0xf3, 0x17, 0xa7, 0xf0, 0x3f, 0x64, 0xa0, 0x02, 0xe7, 0x3a, 0xef, 0xb7, 0x8b, 0x92, + 0x79, 0xd3, 0x17, 0x05, 0x32, 0x33, 0xc0, 0x45, 0x29, 0x79, 0x4b, 0x53, 0x96, 0xa0, 0x0a, 0x29, + 0xed, 0x86, 0xb8, 0x22, 0xa3, 0x34, 0x80, 0xfa, 0x37, 0xf9, 0x68, 0x5c, 0x15, 0x6c, 0xb3, 0xf8, + 0x9e, 0x13, 0x30, 0x21, 0x2d, 0x87, 0x09, 0x98, 0xf3, 0x28, 0x60, 0x16, 0xd3, 0x90, 0xff, 0xb1, + 0x67, 0xe5, 0xf8, 0x50, 0x07, 0xcb, 0xec, 0x52, 0x6c, 0x49, 0xa9, 0xc8, 0x41, 0xef, 0x0a, 0x8b, + 0xad, 0x26, 0x7e, 0xc5, 0x41, 0x05, 0xb2, 0x80, 0x46, 0x9e, 0xe8, 0x4d, 0xec, 0xdb, 0x0e, 0x2a, + 0x10, 0x83, 0xde, 0x63, 0x19, 0x05, 0xb6, 0x0e, 0x41, 0x54, 0xa1, 0x17, 0x9e, 0x83, 0x49, 0x88, + 0x7e, 0x24, 0x84, 0x26, 0xf8, 0x02, 0xeb, 0xeb, 0xfc, 0xe1, 0x0d, 0x2b, 0x4c, 0xcd, 0x4a, 0x95, + 0xa6, 0x2c, 0x97, 0xf8, 0x72, 0xf9, 0x35, 0x18, 0x3d, 0xb5, 0xf3, 0x5c, 0x62, 0xdf, 0x76, 0x83, + 0xa6, 0xdf, 0x76, 0x90, 0xcd, 0xa1, 0xef, 0xe9, 0x83, 0x70, 0xf9, 0xce, 0xc9, 0x9e, 0x95, 0xc9, + 0x64, 0xfc, 0x60, 0x7c, 0xb0, 0xce, 0x2c, 0xb7, 0x60, 0x9d, 0x24, 0x35, 0x91, 0x33, 0x58, 0xe7, + 0xab, 0x26, 0x67, 0x9b, 0x6d, 0xde, 0x59, 0xc6, 0xd9, 0x4e, 0xe7, 0x89, 0x20, 0x97, 0x68, 0x9b, + 0xbf, 0x44, 0x13, 0xc8, 0x46, 0xe2, 0x20, 0xeb, 0x10, 0x22, 0x1a, 0x67, 0xc7, 0xc8, 0x8a, 0x6c, + 0x6e, 0xf0, 0xc9, 0xc5, 0xd0, 0x9f, 0x65, 0xc4, 0x87, 0x1c, 0x67, 0xcf, 0x94, 0x18, 0x50, 0xb1, + 0x2e, 0x18, 0xaa, 0xbf, 0x3e, 0xd8, 0x2e, 0x97, 0xac, 0x6d, 0x0c, 0xfb, 0x03, 0xbe, 0x70, 0x58, + 0xe5, 0xc7, 0x12, 0x3f, 0xc1, 0xd9, 0x20, 0x4a, 0x97, 0xaa, 0xbe, 0x30, 0x89, 0xc5, 0x8c, 0xb3, + 0x62, 0xb0, 0x42, 0x79, 0x39, 0x48, 0x5b, 0x41, 0x5a, 0x00, 0xb1, 0x41, 0x20, 0xf2, 0x0d, 0x0b, + 0x27, 0x9c, 0x38, 0x77, 0x0c, 0x93, 0xef, 0xa6, 0x43, 0x05, 0x0b, 0x33, 0x0c, 0xc9, 0x6f, 0xf8, + 0xa8, 0xc7, 0x6c, 0x60, 0x71, 0x31, 0x9a, 0x50, 0xeb, 0x0b, 0x63, 0x16, 0xc9, 0x1f, 0x0c, 0x10, + 0x7d, 0x09, 0xb6, 0x46, 0xe6, 0xcb, 0x65, 0x91, 0x7c, 0xdb, 0x59, 0x9c, 0xde, 0x0e, 0xab, 0xbb, + 0x54, 0xbe, 0x81, 0xb8, 0x0a, 0x8d, 0xf7, 0x87, 0x57, 0xae, 0x5b, 0x57, 0xe7, 0x0f, 0xf8, 0x48, + 0x6c, 0x64, 0x9c, 0xc5, 0xc5, 0x2c, 0x95, 0x9f, 0x22, 0xc8, 0x1f, 0xe4, 0xc6, 0x97, 0xfe, 0x90, + 0x1c, 0xe8, 0x4c, 0x9e, 0x1a, 0x48, 0xc6, 0xae, 0xd8, 0x16, 0x67, 0x76, 0x11, 0x6b, 0x51, 0xd6, + 0x46, 0x7f, 0xa0, 0x96, 0x24, 0xe0, 0xc5, 0x70, 0x85, 0x0b, 0xe4, 0x0a, 0x06, 0xae, 0x44, 0x50, + 0x62, 0xdd, 0xf4, 0x8d, 0x8b, 0xc2, 0x0b, 0xea, 0x7d, 0xe1, 0x60, 0x18, 0xe7, 0xc6, 0xf8, 0x2a, + 0x71, 0x18, 0xa7, 0x1f, 0x83, 0xcc, 0xaa, 0x9d, 0x7d, 0xa9, 0xad, 0x43, 0x90, 0x8b, 0x55, 0xc5, + 0x83, 0x89, 0xcb, 0x10, 0xa2, 0xc7, 0x52, 0x59, 0x8e, 0x23, 0x1a, 0xd3, 0x7c, 0xff, 0x66, 0xb1, + 0x3c, 0x1b, 0x76, 0xbd, 0x6c, 0x79, 0x79, 0x69, 0xbc, 0xbf, 0x97, 0xda, 0xc9, 0x13, 0xc4, 0xc4, + 0x35, 0x14, 0xa3, 0x02, 0x42, 0xb5, 0xbe, 0x86, 0xba, 0xe0, 0x66, 0x0c, 0x26, 0x13, 0xcd, 0x88, + 0x92, 0x5c, 0xb1, 0xbc, 0x12, 0x46, 0x80, 0xb0, 0xa1, 0xe6, 0xea, 0x3b, 0xf6, 0x26, 0x77, 0x7e, + 0x03, 0xe1, 0x5f, 0x92, 0x87, 0xbe, 0x8b, 0x5f, 0x39, 0x9c, 0xdc, 0x7b, 0xf0, 0xfa, 0x60, 0xfb, + 0x33, 0x25, 0xc9, 0xb6, 0x2f, 0x93, 0x5d, 0xdb, 0x12, 0x3d, 0x31, 0xe8, 0x81, 0x61, 0x09, 0xcc, + 0xcd, 0xa1, 0x40, 0xe5, 0x06, 0x17, 0xdf, 0x40, 0x59, 0x6b, 0xd7, 0x57, 0x96, 0x13, 0xf9, 0x25, + 0xfe, 0x14, 0x5c, 0x20, 0x3f, 0x16, 0x8f, 0xed, 0x8c, 0xf7, 0x77, 0xd3, 0x98, 0xb8, 0x89, 0xc3, + 0x27, 0x13, 0xb1, 0x2e, 0x03, 0x54, 0xd8, 0xb7, 0xa9, 0xb8, 0xa1, 0xf8, 0x16, 0xca, 0x59, 0xbb, + 0x1e, 0x5f, 0x69, 0x08, 0xd6, 0x2b, 0x6b, 0xca, 0x02, 0x89, 0x14, 0xc9, 0x4f, 0xb2, 0x51, 0xd8, + 0x25, 0x76, 0x1b, 0x89, 0x34, 0x17, 0xcb, 0x50, 0x4e, 0xad, 0xaf, 0x21, 0xc2, 0x02, 0xf5, 0x82, + 0xe2, 0x11, 0x8a, 0xe4, 0x39, 0xc3, 0x5b, 0xcf, 0x0c, 0xef, 0x3f, 0x93, 0x76, 0x39, 0xa4, 0x9d, + 0xb8, 0x1c, 0xe5, 0x1a, 0x7f, 0xe1, 0x25, 0xe5, 0x9b, 0x8c, 0x0d, 0x2b, 0x94, 0x0b, 0x61, 0xa0, + 0x11, 0x57, 0xc4, 0x5a, 0x8b, 0x95, 0x28, 0xb7, 0xc6, 0x17, 0x80, 0xf0, 0xc1, 0x53, 0xcc, 0x14, + 0x10, 0xac, 0x50, 0x9e, 0x13, 0xef, 0xef, 0xd5, 0xaf, 0x6c, 0x4d, 0xbb, 0x2e, 0xd6, 0x52, 0xac, + 0x46, 0x08, 0xfe, 0x5e, 0x61, 0x66, 0x53, 0xc1, 0x2e, 0x7a, 0x5c, 0xb1, 0x5c, 0x08, 0xc3, 0x8d, + 0xb8, 0x3a, 0xae, 0xbd, 0xf8, 0x36, 0xca, 0xc5, 0x89, 0x6b, 0x42, 0xbe, 0x08, 0x96, 0xa3, 0xe5, + 0x42, 0x82, 0x16, 0x56, 0x28, 0x3f, 0x45, 0x10, 0x42, 0x7f, 0x2c, 0x7e, 0xe5, 0xb0, 0xde, 0xb7, + 0x8d, 0x05, 0x11, 0xb2, 0x85, 0x60, 0x67, 0x3d, 0xc4, 0xaf, 0x04, 0x34, 0xa1, 0x26, 0xe4, 0xab, + 0xf5, 0x05, 0x22, 0x7e, 0x6f, 0x5d, 0xb8, 0x60, 0x9a, 0x7b, 0xf0, 0x20, 0xf2, 0x0c, 0xcd, 0x2f, + 0x33, 0x9b, 0x82, 0xb8, 0x1f, 0xc7, 0xc4, 0xe6, 0x47, 0x90, 0x97, 0xd1, 0x4b, 0xb8, 0x33, 0xb9, + 0xf7, 0xa0, 0xde, 0x7b, 0x20, 0xd9, 0xdd, 0x0c, 0x19, 0x89, 0x68, 0xb8, 0xde, 0x9d, 0x24, 0x24, + 0x5d, 0x77, 0xb3, 0xd9, 0x8d, 0xc9, 0x12, 0x40, 0xfa, 0x6f, 0xb4, 0x86, 0x64, 0x5a, 0xfc, 0xd0, + 0x62, 0x09, 0x1a, 0x8f, 0xb1, 0xb6, 0xe9, 0xe4, 0x5b, 0xfa, 0xb0, 0xa6, 0x3c, 0x24, 0x99, 0xa5, + 0xf2, 0x44, 0x4b, 0x3c, 0x65, 0xb3, 0x42, 0x7c, 0xd5, 0xe9, 0x01, 0x0c, 0x4f, 0x04, 0x1f, 0x15, + 0x79, 0x62, 0xba, 0x78, 0xc8, 0xb3, 0xde, 0x45, 0xf9, 0xf6, 0x6f, 0x77, 0x91, 0xc0, 0x2c, 0xe4, + 0x25, 0x30, 0x2e, 0x92, 0x43, 0x73, 0x08, 0x5e, 0x3a, 0x53, 0xaf, 0x29, 0x1f, 0xa1, 0x0d, 0x12, + 0x7d, 0xeb, 0xe5, 0x0f, 0xf8, 0x27, 0xc7, 0x00, 0x8b, 0xbd, 0x17, 0xe2, 0x43, 0x9f, 0xe9, 0x7d, + 0x97, 0x87, 0x87, 0xba, 0x6a, 0x7d, 0x9b, 0x82, 0x0d, 0x44, 0xff, 0x7e, 0x2d, 0xda, 0x04, 0xfe, + 0x9d, 0x80, 0x35, 0x20, 0x17, 0x1c, 0xa8, 0x70, 0x59, 0x6a, 0x3e, 0x90, 0x0c, 0x03, 0x69, 0x3d, + 0xdc, 0xbd, 0x27, 0x79, 0x6a, 0xa0, 0x50, 0x9f, 0x8c, 0xb2, 0x56, 0x79, 0xc3, 0x1b, 0xc5, 0xb7, + 0x51, 0x4e, 0xc4, 0x1b, 0xde, 0xc8, 0x08, 0x8a, 0x97, 0x34, 0xe5, 0x05, 0x89, 0x14, 0xc9, 0xc5, + 0xf1, 0x81, 0x01, 0x8c, 0xcc, 0xcc, 0x28, 0xce, 0x57, 0x86, 0x12, 0xb1, 0xbe, 0x78, 0xff, 0xae, + 0xe4, 0xf1, 0xb3, 0x06, 0x30, 0xe1, 0x7a, 0x90, 0x45, 0xab, 0xa4, 0x97, 0xf8, 0x3b, 0x94, 0x6b, + 0xfc, 0x85, 0x71, 0x1c, 0x50, 0x13, 0x38, 0x27, 0x0d, 0x2b, 0x94, 0x55, 0xd2, 0x8d, 0xe2, 0x36, + 0x50, 0xcc, 0x80, 0xc9, 0x0d, 0x71, 0xdc, 0x03, 0xb1, 0x37, 0x8e, 0xbe, 0xbf, 0x2a, 0x68, 0x96, + 0x99, 0x9c, 0x7b, 0x78, 0x71, 0x28, 0x58, 0x4f, 0x2a, 0x92, 0xbd, 0x6d, 0x2a, 0x1b, 0x5d, 0xfc, + 0x84, 0x85, 0xc3, 0x04, 0x9a, 0xe3, 0x57, 0x98, 0x02, 0x24, 0xe1, 0x30, 0x27, 0xf2, 0x2b, 0xfe, + 0xbe, 0xb4, 0x3c, 0x54, 0xaa, 0x4e, 0xac, 0x5c, 0x51, 0xb9, 0xaa, 0x52, 0x59, 0x56, 0xf9, 0x6e, + 0xe5, 0x8a, 0x25, 0xea, 0x38, 0x75, 0xf5, 0x8a, 0x15, 0xf8, 0x8f, 0xea, 0xd5, 0x65, 0x65, 0x15, + 0xd5, 0xd5, 0xea, 0xb8, 0xc5, 0x4a, 0xe5, 0xb2, 0xd5, 0x6a, 0x85, 0x3a, 0x6e, 0x55, 0xe5, 0xf2, + 0x8a, 0x95, 0xab, 0x57, 0xa9, 0x79, 0x8b, 0x57, 0xaa, 0x65, 0x15, 0xab, 0x2a, 0xd4, 0xe5, 0x95, + 0x2b, 0x94, 0x55, 0x15, 0x2c, 0x0c, 0xe6, 0x9f, 0x98, 0x74, 0x2b, 0x90, 0x1f, 0xd8, 0x65, 0x96, + 0xd1, 0xad, 0x2f, 0xc0, 0xdc, 0xa0, 0xe1, 0x31, 0x0f, 0x76, 0xc7, 0xc9, 0xe1, 0x3d, 0x07, 0xc1, + 0x00, 0x02, 0x48, 0xda, 0x44, 0x67, 0x57, 0xf2, 0x44, 0x8c, 0x1d, 0xaf, 0x49, 0xdb, 0x3e, 0x87, + 0xb2, 0xc3, 0x11, 0x6f, 0x28, 0x42, 0x68, 0x94, 0x39, 0x9a, 0x32, 0x5b, 0x82, 0x12, 0x59, 0x84, + 0xb1, 0x59, 0x12, 0x2a, 0x03, 0x74, 0xa1, 0x4a, 0x9c, 0x8f, 0x32, 0x7d, 0x81, 0x5a, 0xe2, 0x2d, + 0x82, 0xaf, 0x8a, 0xf1, 0x9b, 0xf6, 0x30, 0x68, 0xe1, 0xc3, 0x47, 0x49, 0x0f, 0xa3, 0x42, 0x5c, + 0x86, 0x26, 0xf9, 0x70, 0x54, 0x35, 0x1a, 0x6a, 0x78, 0x1c, 0x7e, 0xa7, 0xb0, 0x67, 0x93, 0xb5, + 0x86, 0x8e, 0x01, 0x5f, 0x44, 0xc6, 0xb0, 0x36, 0x11, 0x57, 0xa3, 0x09, 0x35, 0x8d, 0xa1, 0x90, + 0x2f, 0x10, 0xa9, 0x8e, 0xf8, 0x1a, 0x08, 0x15, 0x81, 0x91, 0x20, 0x5f, 0x2e, 0x3f, 0x46, 0x46, + 0xea, 0xfd, 0x42, 0xef, 0x39, 0x43, 0xfc, 0x88, 0xbb, 0x9b, 0x13, 0xbd, 0x27, 0x87, 0xbf, 0x22, + 0x4f, 0x89, 0xca, 0xb7, 0x17, 0x2b, 0xd1, 0xc4, 0x70, 0xc4, 0xd7, 0x50, 0x6d, 0xb0, 0x42, 0x81, + 0x1a, 0x83, 0xae, 0xc8, 0xa4, 0x39, 0x75, 0x2c, 0x15, 0xb6, 0x25, 0xe2, 0xf1, 0x54, 0x4b, 0x0b, + 0xb1, 0x49, 0x30, 0xb6, 0xd5, 0xd7, 0x40, 0xad, 0xef, 0x1f, 0x75, 0x1a, 0xc5, 0x84, 0x37, 0xce, + 0x37, 0x66, 0x25, 0xe8, 0x6e, 0xa9, 0xa6, 0xbc, 0x29, 0x41, 0x17, 0xf9, 0x75, 0x18, 0x3e, 0xd5, + 0x77, 0x2a, 0x39, 0xb0, 0x0d, 0x86, 0xe7, 0x72, 0x3a, 0x9a, 0x14, 0x17, 0x14, 0xc2, 0xa5, 0xc1, + 0xb1, 0xc2, 0x9b, 0xf4, 0xfe, 0xfe, 0xc4, 0xfe, 0x8b, 0x2a, 0x8c, 0x23, 0xbe, 0xc1, 0x47, 0xad, + 0x07, 0x3a, 0xa3, 0x50, 0x53, 0x1e, 0xe5, 0xa3, 0xd6, 0xb3, 0x2f, 0xc1, 0xdc, 0x32, 0xa6, 0x6d, + 0xf8, 0x40, 0xf5, 0x6f, 0xf0, 0xcc, 0xc1, 0x44, 0x6e, 0x04, 0x93, 0x39, 0xb0, 0x8e, 0xe0, 0x88, + 0x1e, 0xc7, 0x51, 0xcf, 0x93, 0x5c, 0x43, 0xdd, 0x03, 0x88, 0x61, 0xdc, 0x1a, 0x8f, 0xc5, 0x2c, + 0xa1, 0xee, 0xeb, 0xbc, 0xe1, 0x08, 0x48, 0x6d, 0x09, 0x59, 0x00, 0xc1, 0xe6, 0xcd, 0x62, 0x59, + 0x8c, 0xf7, 0xef, 0x48, 0x7c, 0x73, 0xdc, 0x8a, 0x5c, 0xcd, 0x7a, 0x3e, 0xd4, 0xfd, 0x64, 0xd7, + 0x50, 0xf7, 0xb0, 0x76, 0x08, 0x56, 0x6b, 0xcc, 0x4e, 0x89, 0xef, 0x7a, 0x94, 0xb7, 0x2e, 0x18, + 0xaa, 0xf1, 0xd1, 0x00, 0xde, 0x34, 0x63, 0x1b, 0x0e, 0x2c, 0x68, 0xab, 0x92, 0x17, 0x92, 0xf3, + 0xa2, 0xe9, 0x12, 0x21, 0x89, 0x65, 0x72, 0xa0, 0x35, 0xd1, 0xfb, 0x39, 0x43, 0x72, 0xe0, 0x92, + 0x9d, 0xd8, 0x75, 0x5a, 0x6f, 0xbd, 0xa8, 0xda, 0x46, 0x10, 0x3b, 0x04, 0x34, 0xb1, 0x26, 0x58, + 0x5f, 0x1f, 0x0c, 0x54, 0x79, 0x43, 0xde, 0xfa, 0x70, 0xc1, 0x14, 0x0c, 0x35, 0x4f, 0xb9, 0x42, + 0x4d, 0x19, 0xd7, 0x10, 0x80, 0x07, 0x3b, 0x28, 0x5a, 0x06, 0x90, 0xe7, 0xeb, 0x2d, 0xdf, 0xe8, + 0x2d, 0xe7, 0x98, 0x26, 0x1b, 0x82, 0xdc, 0xa7, 0x2e, 0x9d, 0x31, 0x60, 0x0e, 0x4c, 0x44, 0x68, + 0xb4, 0x97, 0x63, 0xc3, 0x51, 0x4d, 0xb5, 0xf4, 0x16, 0xcb, 0x00, 0xdb, 0x72, 0x24, 0xc6, 0xd3, + 0x9a, 0xf2, 0x84, 0xc4, 0x0a, 0xe5, 0x02, 0x1e, 0xdb, 0xf2, 0x5c, 0x9c, 0xca, 0xda, 0x88, 0x2b, + 0x10, 0x0a, 0x04, 0x6b, 0x7d, 0x95, 0x55, 0x06, 0xcb, 0x8a, 0x53, 0xb3, 0x8d, 0x07, 0x99, 0x0d, + 0x57, 0x2c, 0x3f, 0x02, 0x3a, 0x2b, 0x72, 0x10, 0x9f, 0x75, 0xc4, 0x87, 0x7a, 0x92, 0xdd, 0xcd, + 0x95, 0x55, 0x84, 0xf7, 0xe5, 0x9a, 0x8a, 0x6b, 0xd1, 0x04, 0xe3, 0x17, 0xc9, 0x2b, 0x48, 0x72, + 0x07, 0xe0, 0x8c, 0x28, 0x7c, 0xb9, 0x3c, 0x3f, 0x75, 0xf6, 0x5b, 0x7d, 0x68, 0x2f, 0x76, 0xff, + 0x34, 0x63, 0x9b, 0x02, 0x98, 0xf5, 0x5d, 0xd6, 0x63, 0x7b, 0x92, 0xdd, 0xcd, 0x5c, 0x7b, 0x95, + 0xef, 0x3c, 0x6b, 0x05, 0x42, 0xe6, 0xa5, 0x74, 0x79, 0x87, 0x25, 0xeb, 0x3b, 0x3c, 0xcd, 0x7e, + 0x40, 0x46, 0x67, 0x5e, 0xbb, 0xf2, 0x3a, 0x9a, 0xe2, 0x38, 0xae, 0x1b, 0x52, 0xb0, 0xec, 0x16, + 0x34, 0xa5, 0x43, 0x40, 0x3b, 0x04, 0x09, 0x3f, 0xad, 0xf2, 0x16, 0x81, 0x70, 0x20, 0x38, 0xd9, + 0x0c, 0x8b, 0x09, 0x0d, 0x3f, 0x53, 0x5b, 0xc1, 0x84, 0x29, 0x9a, 0x38, 0x70, 0x4c, 0xff, 0xb6, + 0x19, 0x3e, 0xda, 0x86, 0x3a, 0x0c, 0x42, 0x8e, 0x86, 0x82, 0x04, 0xb6, 0x5d, 0x6f, 0xdf, 0x07, + 0x48, 0xe6, 0xfa, 0x60, 0x6b, 0x62, 0xef, 0x05, 0xbd, 0xab, 0x35, 0x1e, 0xdb, 0xed, 0x6d, 0xf0, + 0xc7, 0xfb, 0x09, 0xb9, 0x98, 0x38, 0xb6, 0x5d, 0xdf, 0xbe, 0x2d, 0x75, 0xa5, 0x2b, 0x39, 0x70, + 0xe1, 0xfa, 0x60, 0x5b, 0xe1, 0xa1, 0x49, 0x28, 0x0b, 0x23, 0xcc, 0x9f, 0x13, 0xf6, 0x1e, 0x5e, + 0xf9, 0x99, 0x9a, 0x32, 0x8d, 0xb0, 0xf7, 0x13, 0x2d, 0x48, 0x16, 0x78, 0xf7, 0xb7, 0x50, 0x0e, + 0x64, 0xce, 0x21, 0xef, 0x37, 0xd0, 0xf8, 0x50, 0x24, 0x3f, 0xc9, 0x47, 0xa8, 0x04, 0xeb, 0x32, + 0xf6, 0x86, 0xaf, 0xdd, 0x18, 0x0e, 0x36, 0x84, 0x17, 0x78, 0x1b, 0xfc, 0x2a, 0x69, 0x2e, 0xbe, + 0x88, 0xb2, 0xea, 0xfc, 0x81, 0x8d, 0x16, 0x4f, 0x4e, 0xa3, 0x40, 0x2e, 0x80, 0x60, 0x44, 0xd0, + 0x8c, 0xb0, 0xd6, 0x6d, 0xd1, 0xe4, 0x9e, 0x33, 0x2a, 0xae, 0x17, 0xeb, 0x51, 0x4e, 0x03, 0xdc, + 0x30, 0x10, 0xcc, 0x78, 0xdc, 0x0e, 0x70, 0x3e, 0x7f, 0xb7, 0xf0, 0xb3, 0x42, 0x3a, 0xc9, 0x4f, + 0x91, 0xef, 0xa2, 0x26, 0x25, 0xec, 0x7a, 0x6d, 0xf4, 0x6d, 0xbe, 0x16, 0xdd, 0x82, 0x8f, 0x4d, + 0xef, 0xbb, 0xac, 0x92, 0xf6, 0xe2, 0x8b, 0x28, 0x3b, 0xe4, 0x8b, 0x84, 0x36, 0x93, 0x74, 0x55, + 0x10, 0x32, 0x15, 0x97, 0xc8, 0xd3, 0x53, 0x7d, 0x27, 0x61, 0x34, 0x12, 0xab, 0xfc, 0x9b, 0xe3, + 0x89, 0xbd, 0xdf, 0xaa, 0x50, 0x2b, 0xce, 0xa7, 0xaf, 0x72, 0x0e, 0x17, 0x00, 0x15, 0x5e, 0xe5, + 0x89, 0x6e, 0xef, 0xf1, 0x5c, 0x78, 0x8f, 0xc1, 0x36, 0x72, 0x86, 0xa6, 0x4c, 0x85, 0xf7, 0x78, + 0xa2, 0xf3, 0x25, 0x5e, 0x6c, 0x7f, 0x89, 0x73, 0xf1, 0xd2, 0xb0, 0x34, 0xcc, 0xf6, 0x12, 0x4f, + 0x1c, 0xe9, 0x0d, 0xd6, 0xcc, 0x08, 0xe1, 0x60, 0x7e, 0xf7, 0xa9, 0xc1, 0x31, 0x50, 0x92, 0x68, + 0x2e, 0x7c, 0x1a, 0x90, 0x44, 0x58, 0x38, 0x78, 0x58, 0x3f, 0xbd, 0x93, 0x31, 0x0b, 0x2b, 0x56, + 0xae, 0xaa, 0x5e, 0xa5, 0xa8, 0xab, 0x2a, 0xca, 0xbf, 0x2f, 0x2d, 0x0d, 0xbd, 0xa1, 0x22, 0xb3, + 0xe0, 0x96, 0x88, 0xa5, 0xf7, 0x4c, 0x62, 0x09, 0x99, 0xae, 0xdb, 0x8c, 0x58, 0x7a, 0x16, 0x56, + 0x65, 0x23, 0x96, 0xf8, 0x27, 0x15, 0xc8, 0x24, 0xa2, 0x47, 0xc7, 0x84, 0x93, 0x49, 0x29, 0x55, + 0x5a, 0x5e, 0x24, 0x78, 0x4f, 0x8b, 0x34, 0xe5, 0x29, 0xcb, 0x8b, 0x44, 0x10, 0xe3, 0x28, 0xef, + 0xd2, 0x5b, 0x08, 0x19, 0x68, 0x72, 0xb9, 0x2f, 0xb2, 0x21, 0x48, 0x53, 0xc4, 0x62, 0xdb, 0x5b, + 0xae, 0x58, 0x7e, 0xc8, 0xf8, 0x9b, 0xa1, 0xac, 0xf8, 0xc0, 0x17, 0xc9, 0x63, 0x5b, 0xf4, 0xed, + 0x43, 0x06, 0x94, 0x70, 0xcd, 0xc4, 0x72, 0x0e, 0x57, 0xc3, 0x13, 0x8b, 0x03, 0xc0, 0x98, 0xb8, + 0xda, 0x36, 0x8e, 0x3b, 0xb2, 0xbe, 0x22, 0xa0, 0x89, 0xe1, 0x8d, 0xfe, 0x86, 0x95, 0x34, 0xfe, + 0x48, 0x1e, 0x7e, 0xef, 0xba, 0x05, 0x4d, 0xd9, 0x27, 0x48, 0x96, 0x2a, 0xb9, 0x45, 0x60, 0xa1, + 0x47, 0x00, 0x83, 0x90, 0xa0, 0x23, 0x47, 0xbb, 0x60, 0x7f, 0x8b, 0x93, 0x7b, 0xce, 0xf1, 0xca, + 0x6b, 0x48, 0x0d, 0x49, 0x2d, 0xc6, 0x8c, 0x9e, 0xa4, 0x03, 0x64, 0xd3, 0xc0, 0xb7, 0x9d, 0x1f, + 0x08, 0xb6, 0x9f, 0xcc, 0x41, 0x30, 0x53, 0x3b, 0x1c, 0x9a, 0xde, 0xb5, 0x2b, 0x39, 0xd0, 0x0b, + 0x6f, 0xa9, 0x6a, 0x59, 0x95, 0x18, 0x44, 0xe3, 0x23, 0x21, 0x6f, 0x20, 0x5c, 0x67, 0x9c, 0x0e, + 0xbc, 0xf6, 0x6f, 0x6b, 0xca, 0x0a, 0xc9, 0x2c, 0x95, 0x95, 0xd4, 0xe9, 0x2f, 0xf4, 0x6d, 0xe7, + 0xf5, 0xa1, 0xcf, 0x68, 0x42, 0xdb, 0xf6, 0x78, 0x7f, 0xd4, 0xdc, 0xcb, 0xc4, 0xfe, 0x8b, 0x24, + 0x21, 0x60, 0x6a, 0xe8, 0x9b, 0x44, 0xc7, 0xe7, 0xc9, 0x2b, 0x03, 0xa9, 0xbe, 0xdd, 0xfa, 0xb9, + 0xbd, 0xc9, 0x13, 0xb1, 0xc4, 0xbe, 0xed, 0x89, 0x9e, 0x6f, 0x54, 0x73, 0x34, 0xf1, 0x2f, 0x05, + 0x34, 0x9e, 0x45, 0x52, 0x21, 0xf4, 0x41, 0xaf, 0xa0, 0x29, 0x5f, 0x0a, 0x92, 0x59, 0x2e, 0x1f, + 0x12, 0x20, 0xf7, 0x3e, 0xbb, 0xee, 0x6c, 0xef, 0xf4, 0xe8, 0x41, 0x4b, 0xf6, 0x41, 0xa2, 0xb7, + 0xd8, 0xc9, 0xf6, 0x01, 0xf6, 0x2d, 0xde, 0x1f, 0x8b, 0x84, 0x1a, 0x7d, 0x7c, 0xb7, 0x74, 0x1d, + 0x8a, 0x3d, 0x94, 0x11, 0x67, 0xad, 0xa1, 0x51, 0x7c, 0xa0, 0x25, 0xb5, 0x75, 0x08, 0xd2, 0x99, + 0x02, 0xba, 0x81, 0x9d, 0x50, 0xcd, 0x85, 0xce, 0x7a, 0x09, 0x4d, 0xb8, 0xd9, 0x47, 0x6a, 0x87, + 0xa0, 0x29, 0xdb, 0x04, 0xb4, 0x55, 0x90, 0xf0, 0xbb, 0x20, 0xff, 0x86, 0xa7, 0x8f, 0x0d, 0x34, + 0xb9, 0xe3, 0x4c, 0x7c, 0xa8, 0x87, 0x1d, 0x25, 0x09, 0xc0, 0x82, 0x91, 0x28, 0xcb, 0x11, 0x02, + 0x56, 0x34, 0x46, 0xe3, 0xc1, 0xa6, 0x44, 0xef, 0x49, 0xe8, 0xc2, 0xde, 0x00, 0xb0, 0x3b, 0x1c, + 0xde, 0xde, 0x91, 0xd8, 0xf7, 0x2d, 0x33, 0x71, 0x33, 0xa0, 0x82, 0x8b, 0x61, 0x97, 0xec, 0x6d, + 0xbb, 0x16, 0x6d, 0x2a, 0x3c, 0x9e, 0x89, 0xc6, 0xad, 0xda, 0xe8, 0x2b, 0xf3, 0xd7, 0x86, 0xc4, + 0xe7, 0x50, 0xe6, 0x9a, 0xaa, 0x32, 0xf2, 0x3e, 0x61, 0xca, 0xd5, 0xf8, 0x2d, 0x17, 0x24, 0x87, + 0x76, 0x27, 0xce, 0xfe, 0x91, 0xa9, 0xa3, 0xd7, 0x54, 0x95, 0x11, 0xc9, 0x9a, 0x51, 0x6d, 0x3c, + 0x6b, 0x65, 0x95, 0xe5, 0x2a, 0x79, 0xa7, 0xe0, 0x59, 0x33, 0x0a, 0xe4, 0x89, 0x90, 0x84, 0x08, + 0x7a, 0xab, 0xb8, 0x4c, 0xac, 0x40, 0xb9, 0x95, 0x55, 0x2b, 0x1a, 0xeb, 0xd7, 0xfa, 0x42, 0x24, + 0x23, 0x23, 0xc6, 0x09, 0xac, 0x50, 0x9e, 0x05, 0xcd, 0xf5, 0xf6, 0x16, 0xbd, 0xeb, 0x6b, 0xbd, + 0xb3, 0x2f, 0xb9, 0xe7, 0x4c, 0x65, 0x95, 0xde, 0xf3, 0xad, 0x7e, 0x38, 0xaa, 0xb2, 0x56, 0xe2, + 0x8b, 0x0c, 0x9b, 0x66, 0x99, 0x79, 0x0e, 0x28, 0x36, 0x15, 0xc9, 0x10, 0xf8, 0x5e, 0x50, 0xc6, + 0x98, 0xa0, 0xbc, 0x12, 0x34, 0x8e, 0x3c, 0x61, 0x84, 0x83, 0x03, 0xbd, 0x06, 0x29, 0x33, 0xbb, + 0x6a, 0x26, 0x81, 0x4f, 0x2b, 0x6d, 0xc1, 0xcd, 0x72, 0x46, 0x09, 0x6e, 0x36, 0xce, 0x1e, 0xdc, + 0xac, 0xe4, 0x45, 0x4d, 0x79, 0x0e, 0xc9, 0x12, 0xdd, 0x6e, 0xf9, 0x69, 0x38, 0x59, 0x20, 0x46, + 0x56, 0x2d, 0xad, 0x20, 0xa4, 0x0a, 0xac, 0xa0, 0x55, 0xd3, 0x5b, 0xb7, 0xc1, 0x36, 0x17, 0xee, + 0x15, 0xd0, 0x44, 0xd2, 0x09, 0xb2, 0xbe, 0x4d, 0x43, 0xd9, 0xd8, 0x42, 0x00, 0xd4, 0x39, 0x2a, + 0xfc, 0x30, 0x60, 0xd0, 0x38, 0x3e, 0x80, 0x37, 0x7c, 0x34, 0xb3, 0xec, 0xbb, 0xcd, 0x6d, 0xe1, + 0x0c, 0xeb, 0x16, 0xd2, 0x1d, 0x2a, 0x31, 0xce, 0x03, 0x3d, 0x21, 0x59, 0x26, 0x94, 0xa7, 0xad, + 0x5a, 0x5a, 0xe1, 0x31, 0x0e, 0x10, 0x16, 0x4b, 0xd6, 0xf5, 0x4f, 0x32, 0x96, 0xc6, 0x98, 0x22, + 0x03, 0xd5, 0xf7, 0x6b, 0x71, 0xb7, 0xc0, 0xf3, 0x51, 0x82, 0xe9, 0x7e, 0xc0, 0xf1, 0x51, 0x35, + 0x5c, 0xea, 0x2f, 0x80, 0xd8, 0xd2, 0xb2, 0xea, 0x79, 0x4b, 0x17, 0x55, 0xcf, 0x5b, 0x88, 0xff, + 0xcd, 0xd5, 0xb7, 0x1d, 0xd4, 0x5b, 0x48, 0x80, 0x45, 0xe3, 0x5a, 0x12, 0xd3, 0xfc, 0xed, 0xfa, + 0xd9, 0x6e, 0x36, 0x0a, 0x84, 0xbe, 0x37, 0xe5, 0x4c, 0x3d, 0x51, 0xfd, 0xf2, 0x79, 0xbd, 0xf3, + 0x5b, 0xd0, 0xab, 0x14, 0xf1, 0x8c, 0xd9, 0x5b, 0x68, 0x02, 0xf9, 0xc1, 0x45, 0x05, 0x9a, 0x6b, + 0xf0, 0xee, 0x7c, 0xb9, 0x3c, 0x11, 0x96, 0x45, 0x83, 0x61, 0x8c, 0x0b, 0x65, 0xe7, 0x0b, 0x05, + 0xd1, 0x5c, 0x95, 0x6f, 0x24, 0x86, 0xb9, 0x84, 0x5c, 0x99, 0x34, 0x37, 0xf4, 0x72, 0x2e, 0x1d, + 0x97, 0x42, 0x42, 0xb6, 0xd0, 0xd8, 0xf7, 0xc6, 0x37, 0xc6, 0x76, 0x83, 0x8a, 0x09, 0x92, 0x9d, + 0x61, 0x63, 0x1c, 0xb8, 0x1c, 0xf1, 0xd8, 0xee, 0xd4, 0xd9, 0xef, 0x12, 0xfb, 0x86, 0x60, 0x63, + 0x01, 0x55, 0xe3, 0x38, 0x1c, 0x05, 0x1e, 0x2e, 0x4f, 0xd6, 0xdb, 0x28, 0x27, 0xe4, 0x5b, 0xef, + 0x0f, 0x06, 0x08, 0xbc, 0xbf, 0x84, 0xe1, 0x1d, 0x8a, 0x64, 0xd1, 0x8c, 0x11, 0xd3, 0x73, 0xc6, + 0xb8, 0x2a, 0x47, 0x8f, 0x7e, 0x5f, 0x3a, 0x33, 0x34, 0x3d, 0x5f, 0x28, 0xa8, 0x75, 0xc6, 0x06, + 0x21, 0xbd, 0x44, 0x15, 0x65, 0x6f, 0x6a, 0xa8, 0xa9, 0x2c, 0x27, 0xf7, 0xe0, 0x15, 0x83, 0x1e, + 0x81, 0x12, 0xb9, 0x88, 0x40, 0xe2, 0xe9, 0x2d, 0x89, 0x9e, 0xb6, 0xe4, 0xd0, 0xee, 0xe4, 0x40, + 0x8f, 0xbf, 0x16, 0x3e, 0x23, 0xde, 0xbf, 0x83, 0x6c, 0x12, 0xd6, 0x6b, 0xc2, 0x4a, 0xe7, 0xaa, + 0xd0, 0xd1, 0x9a, 0x48, 0x2e, 0x87, 0x26, 0x92, 0x73, 0x57, 0xdb, 0x7e, 0x5f, 0x3a, 0x3d, 0x34, + 0xd5, 0x6d, 0x81, 0x1c, 0x3b, 0xbc, 0xda, 0x22, 0xfb, 0x1f, 0x47, 0x73, 0x61, 0xcf, 0xb2, 0xc8, + 0xfe, 0x27, 0x82, 0xd4, 0x1f, 0x44, 0xfe, 0x69, 0x47, 0xe5, 0x95, 0x00, 0x61, 0x34, 0xc1, 0x17, + 0xd8, 0xe4, 0x0f, 0x05, 0x03, 0xf5, 0xbe, 0x00, 0x75, 0x43, 0x79, 0x5b, 0x53, 0x5e, 0x90, 0xf8, + 0x72, 0xf9, 0x69, 0xb2, 0x0d, 0x58, 0x5e, 0x5a, 0xec, 0x01, 0x40, 0x7d, 0xaf, 0x21, 0x14, 0xac, + 0x2d, 0xf6, 0xd4, 0xfa, 0xd6, 0x36, 0xae, 0x2f, 0xf6, 0x84, 0x23, 0xde, 0xf5, 0x1f, 0xe0, 0x39, + 0xd5, 0x2c, 0xe3, 0x6f, 0x35, 0x1b, 0x57, 0xa8, 0x59, 0x46, 0x2b, 0x95, 0x1f, 0x4d, 0x7c, 0x17, + 0x21, 0x5f, 0x60, 0xbd, 0x3f, 0x00, 0x49, 0x80, 0xc7, 0x53, 0x15, 0xdf, 0x53, 0x12, 0x57, 0x2c, + 0x17, 0xe8, 0x83, 0x7b, 0x13, 0x9f, 0xed, 0x62, 0x62, 0x39, 0x20, 0x01, 0x37, 0x2e, 0x0a, 0x7f, + 0x5f, 0x9a, 0x17, 0x9a, 0xa8, 0x66, 0x6e, 0x5c, 0x14, 0x56, 0xb3, 0xb1, 0xee, 0x44, 0xe5, 0xba, + 0x89, 0x2b, 0xd1, 0x04, 0x7f, 0xb8, 0xe2, 0x13, 0x03, 0x4c, 0xfd, 0x9b, 0x80, 0x98, 0xcb, 0x05, + 0x99, 0x39, 0x5f, 0x2e, 0xcf, 0x36, 0xc5, 0xd2, 0x78, 0xbb, 0x92, 0x3b, 0xbf, 0xd1, 0x3b, 0x8e, + 0x11, 0x34, 0xc7, 0xb7, 0x14, 0xbf, 0x11, 0xd8, 0x8d, 0xc1, 0xcb, 0x05, 0xf2, 0xad, 0x4d, 0xd0, + 0x94, 0x16, 0x41, 0xe2, 0x6b, 0xe4, 0x4d, 0xbc, 0x8a, 0x87, 0x6d, 0xd2, 0x3a, 0x5f, 0xad, 0x0f, + 0x32, 0x87, 0x17, 0x7b, 0xc2, 0xfe, 0xc0, 0xfa, 0x3a, 0xdf, 0x07, 0xc5, 0x1e, 0xb3, 0x90, 0x7a, + 0x19, 0xc4, 0x52, 0x5b, 0xf6, 0x0c, 0x37, 0x9d, 0x82, 0x21, 0xae, 0x0f, 0xb6, 0x43, 0x53, 0xa8, + 0x4d, 0xee, 0xfc, 0x26, 0xf9, 0xf5, 0x4e, 0x56, 0xc5, 0x88, 0x61, 0x68, 0xa3, 0xf2, 0x8b, 0x10, + 0xf7, 0x0b, 0x68, 0xaa, 0x39, 0x7a, 0x19, 0xc3, 0x3e, 0x40, 0x2a, 0xe2, 0xd4, 0x53, 0x6e, 0xf5, + 0xf2, 0x52, 0xe2, 0x86, 0x42, 0xf3, 0xc4, 0xd9, 0x56, 0x84, 0xe9, 0xbf, 0x28, 0x18, 0x0c, 0xc3, + 0x43, 0x9c, 0xea, 0x3b, 0x59, 0x59, 0x0e, 0x1c, 0x33, 0x34, 0x7c, 0x33, 0x18, 0x8e, 0x90, 0xc7, + 0xd0, 0x6d, 0x06, 0xf1, 0x73, 0x81, 0xb9, 0x9a, 0x4d, 0xc2, 0x2c, 0x54, 0xb1, 0x7b, 0x88, 0x04, + 0x13, 0x81, 0x5a, 0x3c, 0xcc, 0xde, 0xd7, 0x94, 0xb7, 0x99, 0x87, 0xd9, 0x12, 0xb6, 0x2a, 0x28, + 0x30, 0x85, 0x25, 0x5d, 0x31, 0xbd, 0xff, 0x14, 0x58, 0x3e, 0xf3, 0xd6, 0xce, 0x10, 0x66, 0x30, + 0xde, 0xdf, 0xa1, 0x7f, 0xb7, 0x1f, 0x74, 0xb6, 0xf2, 0xc2, 0x78, 0xff, 0x57, 0xdf, 0x97, 0x66, + 0x77, 0x0b, 0x19, 0xf9, 0xd3, 0x98, 0x4f, 0x5a, 0x89, 0x29, 0x75, 0xca, 0xa3, 0x8f, 0xe2, 0x34, + 0x53, 0xea, 0x34, 0x9e, 0xc9, 0x9b, 0xbe, 0x2f, 0xcd, 0x09, 0x65, 0xe5, 0x67, 0x14, 0x4c, 0x33, + 0x05, 0x4f, 0x5b, 0x04, 0x94, 0x17, 0x0c, 0xd4, 0x6d, 0x86, 0xcf, 0xa8, 0x0c, 0xac, 0x0b, 0x62, + 0x6a, 0x32, 0xb7, 0xf4, 0x97, 0x9a, 0xb2, 0x46, 0xb2, 0x55, 0xc9, 0xe5, 0xf1, 0x81, 0x16, 0x18, + 0x8d, 0x6c, 0xb8, 0xc9, 0x55, 0x74, 0x80, 0x88, 0x3c, 0xd9, 0x73, 0x54, 0x3f, 0x4b, 0x9e, 0x5e, + 0x68, 0xe9, 0x54, 0x9b, 0xd8, 0x46, 0x15, 0xaf, 0x0b, 0x68, 0xfc, 0xda, 0x9a, 0x30, 0xb1, 0x25, + 0x07, 0x61, 0xd0, 0x82, 0x51, 0xf7, 0xb9, 0x94, 0xf6, 0x80, 0xad, 0x3e, 0x2a, 0x68, 0xca, 0x21, + 0x41, 0x32, 0x07, 0x92, 0x3b, 0x04, 0x7e, 0xa9, 0x77, 0x20, 0x22, 0x30, 0x6f, 0x31, 0x42, 0x0c, + 0x32, 0xe0, 0xe1, 0xc3, 0xf2, 0x69, 0xd5, 0x5c, 0x9a, 0x98, 0x10, 0xd0, 0x04, 0x1f, 0x67, 0x3f, + 0x2f, 0xba, 0x67, 0xf2, 0x77, 0x7c, 0x33, 0x67, 0x7f, 0x0e, 0x5f, 0xdd, 0x25, 0x68, 0x4a, 0xbb, + 0x20, 0xf1, 0x83, 0xc9, 0xbf, 0xb3, 0x7d, 0xf6, 0x0f, 0x63, 0x52, 0xcf, 0x3e, 0x76, 0x78, 0xcf, + 0x41, 0xcb, 0x67, 0xf2, 0x6b, 0x11, 0xcb, 0x0c, 0x7a, 0x2d, 0xd8, 0x58, 0x5b, 0x59, 0x4e, 0x32, + 0x68, 0x62, 0x72, 0x91, 0x96, 0xc9, 0xb3, 0xed, 0x41, 0x09, 0xe3, 0xfd, 0x3b, 0x40, 0xb3, 0x5e, + 0x59, 0xae, 0xd2, 0x56, 0xe2, 0x77, 0x02, 0x42, 0xb0, 0x25, 0x18, 0x99, 0x81, 0x28, 0xec, 0xb0, + 0xa0, 0x29, 0x07, 0x05, 0x89, 0xab, 0x90, 0x77, 0x58, 0xa4, 0x45, 0xa6, 0xde, 0xb7, 0xe5, 0x9b, + 0x44, 0x4f, 0x9b, 0xf1, 0x86, 0x1b, 0x0c, 0xc2, 0xd1, 0xc4, 0xde, 0xd6, 0xeb, 0x83, 0xed, 0xcb, + 0x95, 0x15, 0xca, 0x92, 0x8a, 0xf2, 0x0f, 0xcb, 0x96, 0xad, 0xae, 0x5e, 0x55, 0xa1, 0xce, 0x85, + 0xb3, 0x4e, 0xb4, 0x1d, 0x48, 0x9e, 0x3d, 0x0e, 0xa3, 0x14, 0x31, 0xc0, 0x4d, 0x1c, 0xe8, 0xf3, + 0x54, 0xae, 0x28, 0xaf, 0xa8, 0xaa, 0x58, 0x51, 0x5e, 0xb1, 0x62, 0x15, 0xeb, 0x63, 0x43, 0x71, + 0xa9, 0xed, 0x5f, 0x19, 0x17, 0x60, 0xe0, 0x42, 0x62, 0xc7, 0x89, 0x22, 0x95, 0x5b, 0x98, 0x58, + 0x82, 0x72, 0x20, 0x04, 0x61, 0xc1, 0x74, 0x2c, 0x17, 0xc4, 0xb4, 0x39, 0x29, 0x92, 0xa7, 0xc3, + 0x00, 0xf0, 0xcb, 0xc3, 0x64, 0x81, 0xa4, 0x5a, 0x7c, 0x1e, 0x65, 0x07, 0x82, 0xb5, 0xbe, 0x70, + 0xc1, 0x0c, 0xdc, 0x15, 0x53, 0xca, 0x50, 0x22, 0x4f, 0x85, 0x9e, 0xc6, 0x0f, 0xb3, 0x1f, 0xd4, + 0x89, 0x07, 0x04, 0x34, 0x39, 0xe0, 0x8b, 0x7c, 0x1c, 0x0c, 0x6d, 0xac, 0xf6, 0x45, 0x22, 0xfe, + 0xc0, 0x7a, 0x6a, 0x96, 0x3d, 0xc7, 0x61, 0x9d, 0x63, 0x69, 0x56, 0xba, 0x42, 0x53, 0xca, 0x24, + 0x7b, 0x5f, 0x79, 0x21, 0xa3, 0x6e, 0x93, 0x03, 0x3d, 0xfa, 0xd1, 0x58, 0xf2, 0x78, 0x14, 0x58, + 0x5c, 0xe6, 0x3c, 0x08, 0x6e, 0x13, 0x89, 0x7d, 0x97, 0xa1, 0xfc, 0xfb, 0xd2, 0xec, 0xcf, 0x85, + 0x8c, 0x5c, 0x41, 0xb5, 0x0f, 0x25, 0xfe, 0x8f, 0x02, 0x9a, 0x46, 0x96, 0x50, 0xea, 0x0d, 0xfb, + 0x6b, 0xd8, 0xfa, 0x20, 0xf2, 0xef, 0xe3, 0x4e, 0x4f, 0x33, 0x47, 0xdb, 0xd2, 0x4f, 0x35, 0x25, + 0x28, 0xb9, 0x8e, 0x22, 0xff, 0x82, 0x20, 0x1f, 0xbc, 0x46, 0x72, 0x61, 0xe9, 0x4a, 0xe1, 0x79, + 0x23, 0x8a, 0x53, 0xec, 0xbc, 0xc0, 0x27, 0xaf, 0xdd, 0xd4, 0x50, 0x93, 0xec, 0x6d, 0x33, 0x4e, + 0x92, 0x7e, 0x0a, 0xf9, 0x32, 0xeb, 0x07, 0xb9, 0x4e, 0x2b, 0xfe, 0x57, 0x01, 0xcd, 0x20, 0x15, + 0x4a, 0xed, 0x26, 0x6f, 0xa0, 0xc6, 0xc7, 0xbe, 0x0b, 0x42, 0x0b, 0x3f, 0x99, 0xe6, 0xbb, 0xac, + 0xad, 0x4b, 0x9b, 0x04, 0x4d, 0xf9, 0x53, 0x69, 0xa6, 0xd1, 0xd6, 0xe7, 0x1c, 0x4b, 0xae, 0xa5, + 0x5e, 0x18, 0x87, 0x86, 0x0f, 0x5c, 0xe4, 0x63, 0x76, 0xb2, 0xaf, 0xd3, 0xbb, 0x0c, 0xa6, 0xcb, + 0xdf, 0xb0, 0x29, 0x0c, 0xd5, 0xc6, 0x17, 0x5a, 0x43, 0xe7, 0x41, 0x07, 0x60, 0x20, 0x5d, 0xcf, + 0x4e, 0x4d, 0xf3, 0x25, 0xe2, 0xdf, 0x08, 0x68, 0xa2, 0x01, 0x5f, 0xec, 0xd3, 0x66, 0xb9, 0xbb, + 0xa1, 0xac, 0x30, 0xdb, 0x94, 0x6a, 0x82, 0xa6, 0xec, 0x12, 0x24, 0x4b, 0x3f, 0xf9, 0xf7, 0x7c, + 0x0c, 0x52, 0xdb, 0x07, 0x10, 0x5f, 0x61, 0xea, 0xae, 0x4c, 0x5c, 0x9a, 0x39, 0x1f, 0x66, 0x38, + 0x24, 0xa3, 0xe5, 0xfe, 0x63, 0xc9, 0xb6, 0xcb, 0x7a, 0xeb, 0xd7, 0xc3, 0x3d, 0x51, 0x62, 0xb4, + 0x87, 0x95, 0xb7, 0xc6, 0x6b, 0x44, 0xc7, 0x2c, 0x2d, 0xab, 0x06, 0x52, 0x9e, 0x78, 0xff, 0x60, + 0x19, 0xa6, 0x6a, 0x59, 0x8d, 0xd8, 0x24, 0xa0, 0xc9, 0x20, 0x44, 0x55, 0x7d, 0xfe, 0x40, 0x38, + 0xe2, 0xad, 0xab, 0xc3, 0x41, 0x90, 0x73, 0x4b, 0xdf, 0xd1, 0x94, 0xd5, 0x92, 0xbd, 0x4e, 0x2e, + 0x05, 0x42, 0x6c, 0x78, 0x7b, 0x47, 0xea, 0x8b, 0x16, 0x3e, 0xec, 0x28, 0x2f, 0xce, 0x05, 0x26, + 0x3e, 0xf5, 0xf9, 0xd7, 0x80, 0x54, 0x12, 0x5b, 0x5b, 0xf4, 0x6d, 0x7f, 0x8c, 0xf7, 0xef, 0x4c, + 0xf4, 0xb4, 0x25, 0xf6, 0xb6, 0xaa, 0xf6, 0x41, 0xc5, 0x83, 0x02, 0x9a, 0xe2, 0x0f, 0xf8, 0x23, + 0xcb, 0x82, 0xeb, 0xfd, 0x81, 0x2a, 0x6f, 0x38, 0xfc, 0x71, 0x30, 0x54, 0x8b, 0x53, 0x5b, 0x8e, + 0x2f, 0xdd, 0xa8, 0x29, 0x1b, 0x24, 0x67, 0xad, 0x5c, 0x3d, 0xc2, 0x12, 0x40, 0xde, 0xc4, 0xc4, + 0x07, 0x0d, 0xa4, 0xcf, 0xe8, 0x2b, 0x73, 0xce, 0x23, 0xbe, 0x83, 0x26, 0x90, 0x5b, 0x8c, 0x31, + 0xf0, 0x23, 0x78, 0x51, 0xd8, 0x04, 0x89, 0x2f, 0x97, 0x9f, 0xe0, 0x91, 0x04, 0xe0, 0xdf, 0xb9, + 0x8d, 0x81, 0x5a, 0x5f, 0xa8, 0xce, 0xbb, 0x79, 0x41, 0x70, 0x13, 0xfe, 0xbf, 0x48, 0xe5, 0xbb, + 0x88, 0x7f, 0x2e, 0xa0, 0x99, 0xde, 0xc6, 0x48, 0x70, 0x89, 0x2f, 0x60, 0x10, 0x5f, 0xbe, 0xe5, + 0xf8, 0x53, 0xb0, 0x7a, 0x9a, 0x04, 0x4d, 0xde, 0x29, 0x68, 0xca, 0x76, 0x41, 0x4a, 0xd7, 0x4a, + 0xae, 0xe3, 0x9f, 0xbb, 0xe5, 0xdc, 0x4e, 0x80, 0x19, 0x08, 0x75, 0x38, 0xc7, 0xa4, 0x07, 0x21, + 0x5c, 0x41, 0x1c, 0xc6, 0x79, 0x01, 0xbe, 0xec, 0x21, 0x72, 0xa7, 0xc4, 0xfe, 0x8b, 0xc5, 0x1e, + 0xb8, 0x13, 0xc0, 0x87, 0x12, 0xb4, 0x8c, 0x0f, 0x29, 0x50, 0xe3, 0x53, 0xd3, 0x2d, 0x43, 0xfc, + 0xdf, 0x05, 0x34, 0x9e, 0xb6, 0x0a, 0x17, 0x3c, 0xea, 0xae, 0xd1, 0xaa, 0x24, 0x0d, 0xa8, 0x39, + 0x63, 0x19, 0x76, 0x3c, 0x2e, 0xfd, 0x52, 0xd0, 0x94, 0x93, 0x82, 0x64, 0xf6, 0x97, 0xf7, 0xdb, + 0x69, 0x17, 0x4f, 0x9a, 0x79, 0xe9, 0xc2, 0x8b, 0x3d, 0xbc, 0x64, 0x91, 0x5f, 0x3b, 0x7c, 0x21, + 0xfd, 0x2a, 0x60, 0xc2, 0xd9, 0x44, 0xd0, 0x30, 0xd9, 0xdd, 0x6c, 0x49, 0xea, 0x07, 0xb9, 0xd5, + 0x20, 0xdb, 0x33, 0xc8, 0x70, 0xf4, 0xf6, 0x18, 0x44, 0x30, 0x50, 0xcd, 0x45, 0x8a, 0x17, 0x04, + 0xe2, 0xf1, 0x8a, 0xc9, 0x46, 0xcf, 0x18, 0xe9, 0xb6, 0x0a, 0xda, 0x03, 0x28, 0x18, 0x4c, 0xdd, + 0x9b, 0xc3, 0xc8, 0xab, 0xf5, 0xde, 0x03, 0x7a, 0x13, 0x4d, 0xa7, 0x00, 0x34, 0x07, 0xf1, 0x47, + 0x03, 0xf4, 0xe0, 0x0b, 0xaf, 0xfd, 0xb0, 0x31, 0x54, 0xb7, 0x80, 0x64, 0x60, 0xfb, 0xd0, 0x5f, + 0xef, 0x5d, 0xef, 0x5b, 0xd0, 0x10, 0xf2, 0x6f, 0xf2, 0xd7, 0xf9, 0x6a, 0xd7, 0xfb, 0xa0, 0x20, + 0xd9, 0xdb, 0xc6, 0x77, 0x56, 0xcd, 0x19, 0xc4, 0x5f, 0xa1, 0xdc, 0x7a, 0x1a, 0xae, 0xf6, 0x31, + 0xd3, 0xc8, 0x80, 0x15, 0xca, 0xcf, 0x93, 0xc9, 0x89, 0x13, 0xda, 0xdc, 0x32, 0x05, 0xfc, 0x46, + 0x99, 0x93, 0x22, 0xf1, 0xa1, 0xc5, 0x0e, 0x64, 0x45, 0x73, 0xc1, 0xdc, 0xad, 0x48, 0x65, 0x03, + 0x88, 0xbf, 0x47, 0x79, 0x78, 0x3a, 0x93, 0x93, 0x29, 0xc4, 0xf3, 0xac, 0xd1, 0x94, 0x6a, 0xc9, + 0x56, 0x25, 0x2b, 0x7a, 0xdf, 0xa0, 0xde, 0x72, 0x92, 0x31, 0x07, 0x40, 0xae, 0x51, 0x09, 0x0b, + 0x88, 0x53, 0xc9, 0x0e, 0x10, 0x72, 0x64, 0xff, 0xc5, 0xe4, 0x97, 0x31, 0x3d, 0x3a, 0xc8, 0x66, + 0xb6, 0x0d, 0x29, 0xfa, 0xd1, 0x64, 0x7f, 0x18, 0x34, 0x71, 0xa4, 0x10, 0x27, 0x9a, 0xcc, 0x2d, + 0x7d, 0x5d, 0x53, 0x5e, 0x91, 0xec, 0x75, 0x72, 0x11, 0xe3, 0x2b, 0x41, 0x8d, 0x0a, 0x73, 0x17, + 0x73, 0xf7, 0x86, 0xcd, 0x64, 0xef, 0x6b, 0x37, 0x71, 0x7c, 0x22, 0xad, 0x89, 0x23, 0xa1, 0xcc, + 0xd2, 0x99, 0x38, 0x9e, 0x14, 0xd0, 0x64, 0x02, 0x39, 0x65, 0xde, 0x88, 0x6f, 0x7d, 0x30, 0xb4, + 0x19, 0xe7, 0x84, 0x1c, 0x5f, 0xfa, 0x1b, 0x4d, 0xf9, 0x44, 0xb2, 0xd7, 0xc9, 0x3e, 0x93, 0x6f, + 0x6d, 0xfd, 0xda, 0xa6, 0xd6, 0x30, 0x80, 0xb5, 0x75, 0x1b, 0xe3, 0x0a, 0xe1, 0xeb, 0x12, 0x07, + 0x70, 0xc2, 0xf1, 0x81, 0xd8, 0xb5, 0xe8, 0x16, 0xd8, 0xf1, 0xb9, 0x6b, 0x1b, 0xfd, 0x75, 0xb5, + 0xbe, 0xd0, 0x02, 0x7f, 0x7d, 0x43, 0x30, 0x14, 0xf1, 0x85, 0x8a, 0xb8, 0xb8, 0xbd, 0xd0, 0x56, + 0xb5, 0xcf, 0x2b, 0xae, 0x40, 0xe3, 0xfd, 0xe1, 0x0f, 0xc3, 0x1b, 0xbc, 0x21, 0x5f, 0x2d, 0xce, + 0xf7, 0x98, 0x4b, 0x9c, 0x80, 0x58, 0xa9, 0xfc, 0x18, 0xb7, 0x9d, 0xe7, 0xe2, 0xb1, 0xaf, 0x9d, + 0xdb, 0x89, 0x0d, 0xc7, 0x70, 0x63, 0xf1, 0x7f, 0x15, 0x50, 0x5e, 0x0d, 0xe7, 0x34, 0x54, 0x59, + 0x4e, 0x12, 0x36, 0x92, 0x44, 0x27, 0xb6, 0x4a, 0xf9, 0x2b, 0x42, 0xe3, 0x32, 0xa2, 0x25, 0x1e, + 0xdb, 0x0d, 0x7e, 0x64, 0x95, 0xe5, 0xc5, 0x8c, 0xcf, 0x4a, 0x7e, 0x19, 0xbb, 0x16, 0x6d, 0x22, + 0x39, 0x1b, 0x77, 0x1c, 0x4d, 0x6d, 0x1d, 0x32, 0x3e, 0x69, 0xd7, 0x25, 0xbd, 0x73, 0x1f, 0x6b, + 0xaf, 0x6f, 0xef, 0x4d, 0xf5, 0x6d, 0xb9, 0x16, 0x6d, 0x02, 0x39, 0x51, 0x3c, 0xb6, 0x1b, 0x7c, + 0xda, 0xe3, 0xfd, 0x3b, 0x93, 0x03, 0x47, 0xe3, 0xfd, 0x51, 0x20, 0xa3, 0x39, 0x3f, 0x36, 0x83, + 0x32, 0x8a, 0x9a, 0xe4, 0x34, 0x34, 0x4f, 0xc6, 0xce, 0x27, 0xcf, 0x1e, 0x07, 0x5c, 0x61, 0x1b, + 0x5b, 0xb5, 0x2d, 0x5e, 0x5c, 0xef, 0x30, 0xef, 0x9f, 0x8b, 0xbf, 0x15, 0x83, 0xa5, 0xdd, 0xbc, + 0x5f, 0xb2, 0x30, 0x9a, 0x36, 0xbf, 0x69, 0xce, 0xef, 0x29, 0x71, 0xf8, 0x8a, 0x23, 0x18, 0x4d, + 0x3d, 0x28, 0xe3, 0xb1, 0x9e, 0x3b, 0x5c, 0x50, 0x84, 0x31, 0xd3, 0x43, 0x6e, 0x44, 0x0a, 0x6e, + 0x01, 0xca, 0x59, 0xae, 0x87, 0xfc, 0x98, 0x0d, 0xfb, 0x9a, 0xf3, 0x9d, 0x3b, 0x46, 0xad, 0x52, + 0xcd, 0xe6, 0xe2, 0xfb, 0x68, 0x9c, 0x3f, 0xbc, 0xdc, 0xff, 0x89, 0xaf, 0xb6, 0x40, 0xc2, 0x20, + 0x81, 0xc3, 0x36, 0xd3, 0x32, 0xf9, 0x39, 0xe3, 0x12, 0x9f, 0xfd, 0xd6, 0x09, 0x90, 0x89, 0x4b, + 0x97, 0x86, 0xb7, 0x12, 0x54, 0xc7, 0xc1, 0x1e, 0xc0, 0x08, 0xed, 0x2e, 0xae, 0x35, 0x20, 0x04, + 0xae, 0xb6, 0xb7, 0x5e, 0x0d, 0xd6, 0xf9, 0x0a, 0x7e, 0xce, 0xb9, 0x89, 0x59, 0xab, 0xe4, 0x27, + 0xbd, 0x1f, 0x87, 0x93, 0xdd, 0xcd, 0x7e, 0x6f, 0xbd, 0x27, 0x14, 0xac, 0x33, 0x9e, 0x05, 0xb8, + 0x12, 0xf8, 0x7b, 0x7c, 0x1b, 0x09, 0x9b, 0xa5, 0xda, 0xba, 0x89, 0x27, 0x32, 0xd0, 0x44, 0x00, + 0x5f, 0xd5, 0x1b, 0x58, 0xef, 0x0b, 0x17, 0x14, 0xbb, 0xd3, 0xe2, 0x00, 0xb5, 0x14, 0x9b, 0xe3, + 0xa6, 0xa5, 0xff, 0x49, 0xd0, 0x94, 0xff, 0x20, 0x48, 0x96, 0xfe, 0xf2, 0xbf, 0x12, 0x78, 0xe0, + 0xd7, 0x3b, 0xfb, 0x52, 0xa7, 0xb7, 0xa4, 0xda, 0xb7, 0xea, 0x87, 0x2e, 0x00, 0x65, 0x36, 0x57, + 0x1f, 0xfa, 0x8c, 0x5d, 0x19, 0xf3, 0xf1, 0x8d, 0xf7, 0xef, 0xe1, 0x87, 0x01, 0x50, 0x36, 0x1e, + 0x65, 0x18, 0x0d, 0x24, 0xc4, 0x89, 0xb6, 0x68, 0xa2, 0xa7, 0x8d, 0x1a, 0x65, 0x1e, 0xb2, 0x76, + 0xe8, 0xb0, 0xf7, 0x49, 0x0e, 0x1c, 0x4c, 0x1c, 0xed, 0x8a, 0xc7, 0x0e, 0x81, 0xd0, 0x2c, 0xd1, + 0xba, 0x2f, 0x15, 0x6d, 0x61, 0x16, 0x9d, 0x64, 0x95, 0x60, 0xd5, 0xde, 0xf9, 0x95, 0x01, 0xd9, + 0x98, 0x3a, 0x00, 0x53, 0xbf, 0x22, 0xd5, 0xf2, 0x55, 0xb7, 0xe2, 0x79, 0xfa, 0x4b, 0x94, 0x67, + 0x95, 0x58, 0xb8, 0xf4, 0x7e, 0xc6, 0x6a, 0x6f, 0xe1, 0x20, 0xab, 0x4b, 0x97, 0xae, 0x6c, 0x08, + 0x57, 0xd5, 0x35, 0xae, 0xf7, 0x07, 0xf8, 0xa1, 0xdf, 0x43, 0xf9, 0x76, 0xc1, 0xc0, 0xed, 0x1b, + 0x9c, 0x7a, 0xcc, 0xb2, 0x17, 0xfb, 0x86, 0x74, 0x65, 0x6d, 0x19, 0x9a, 0xd2, 0x92, 0x81, 0x9a, + 0x32, 0x24, 0x87, 0xa6, 0x41, 0x5e, 0xc7, 0x5f, 0x32, 0x9b, 0xdb, 0x0d, 0x01, 0x1b, 0x6c, 0xc7, + 0x6e, 0x10, 0x04, 0x3d, 0x67, 0xae, 0x0f, 0xb6, 0xf3, 0x62, 0x86, 0x6b, 0xd1, 0x26, 0xd0, 0x37, + 0xf3, 0x82, 0xa8, 0x54, 0xdf, 0x25, 0x38, 0x3d, 0x50, 0x3c, 0x27, 0x76, 0x9d, 0xd4, 0x3b, 0xbf, + 0xb8, 0x2a, 0x98, 0x9a, 0x84, 0xab, 0x02, 0xaf, 0x0b, 0xb8, 0x2a, 0x30, 0x09, 0xfd, 0x55, 0x81, + 0xc8, 0xd5, 0xad, 0xbe, 0x6c, 0x9c, 0xd4, 0xf9, 0xaa, 0xc0, 0x8b, 0x83, 0xaf, 0x0a, 0x9c, 0xfc, + 0xf6, 0xaa, 0xc0, 0x0b, 0x5f, 0xcd, 0x39, 0xa0, 0x8e, 0x05, 0x45, 0xfb, 0x8b, 0x2c, 0x34, 0xc5, + 0xb6, 0x09, 0xe1, 0x86, 0x7b, 0xdd, 0xb3, 0xa7, 0xca, 0xe2, 0x02, 0x37, 0x33, 0x1d, 0x6f, 0x4e, + 0x82, 0x77, 0x79, 0x23, 0x5e, 0xb9, 0x20, 0xf5, 0xf9, 0xd7, 0x70, 0xb2, 0x06, 0x31, 0xc3, 0x9d, + 0x0e, 0xf1, 0x81, 0xfb, 0x1d, 0xca, 0x8a, 0x78, 0xc3, 0x1b, 0x89, 0xe3, 0xdb, 0x34, 0x37, 0xa3, + 0x2f, 0x48, 0x04, 0x82, 0x9b, 0xc9, 0x6f, 0xf2, 0xb2, 0x44, 0xd0, 0xb4, 0x5e, 0x1f, 0x6c, 0x05, + 0x28, 0x49, 0xf4, 0xb4, 0x5d, 0x1f, 0x6c, 0x03, 0xb6, 0x8f, 0x88, 0x52, 0xc1, 0x2b, 0x88, 0x5a, + 0xfa, 0x98, 0x06, 0x9a, 0x47, 0x7a, 0x54, 0x3c, 0x9e, 0xf8, 0x5b, 0xa7, 0x0b, 0x5e, 0xce, 0x18, + 0x5d, 0xf0, 0xf0, 0x43, 0xef, 0x70, 0xc1, 0x9b, 0xcd, 0xbb, 0xe0, 0xb1, 0x4f, 0x4e, 0xe3, 0x85, + 0xb7, 0x44, 0x53, 0xca, 0x51, 0xa9, 0xe4, 0x84, 0x03, 0x79, 0x3a, 0x7f, 0x1b, 0x8c, 0xf7, 0xc6, + 0xdd, 0x9b, 0xe9, 0xaa, 0x80, 0x77, 0xb1, 0xf0, 0x2f, 0x33, 0xd0, 0x74, 0xa5, 0xb6, 0xb6, 0xba, + 0x71, 0x6d, 0xc0, 0x17, 0x61, 0xf6, 0xbd, 0xaa, 0xef, 0xd7, 0xe2, 0x1a, 0xa7, 0xfe, 0x6e, 0x11, + 0x56, 0xe2, 0x98, 0xfa, 0xbb, 0x5c, 0x4a, 0x5d, 0x7e, 0x5f, 0xfa, 0x48, 0x68, 0xb6, 0xab, 0x9e, + 0xa9, 0x24, 0xab, 0xb4, 0xac, 0x7a, 0x1e, 0xaf, 0x84, 0x7b, 0x07, 0xe5, 0x84, 0xf1, 0x6c, 0x04, + 0x81, 0x38, 0xbc, 0xbc, 0x60, 0x2d, 0xd5, 0x38, 0xd5, 0x39, 0x11, 0x71, 0x41, 0x07, 0x79, 0x3a, + 0x89, 0xbb, 0xd2, 0xdb, 0x65, 0xb0, 0x86, 0xd4, 0xa9, 0x46, 0x25, 0xd5, 0xe2, 0x73, 0x28, 0x37, + 0xd8, 0x60, 0x30, 0x36, 0x41, 0xaa, 0x92, 0xc3, 0x16, 0x40, 0xac, 0x50, 0x1e, 0x0f, 0xa6, 0x72, + 0xf1, 0x58, 0x4c, 0x65, 0x85, 0x25, 0x4b, 0x35, 0xe5, 0x4d, 0xb4, 0x58, 0x72, 0xdf, 0x05, 0xb9, + 0x80, 0x1c, 0x03, 0x37, 0x31, 0xa0, 0x18, 0x2b, 0x3a, 0x20, 0x4b, 0x28, 0x6c, 0xca, 0x44, 0x33, + 0xdc, 0x06, 0xba, 0xf7, 0x2f, 0xe8, 0x6f, 0x6f, 0xde, 0x9f, 0xf9, 0x36, 0xc0, 0x33, 0x39, 0x84, + 0x34, 0x7b, 0x27, 0xcf, 0x76, 0x9e, 0x42, 0x7a, 0xd0, 0x2e, 0xdc, 0x9f, 0x8d, 0x1e, 0xad, 0xfe, + 0xd8, 0x1f, 0xa9, 0xd9, 0x40, 0xc6, 0x58, 0x4d, 0x64, 0x07, 0x44, 0x42, 0xf9, 0x43, 0x42, 0xf7, + 0x0a, 0x34, 0xae, 0xd6, 0x1f, 0xc6, 0xc1, 0xbc, 0x32, 0xf0, 0xd6, 0x3f, 0xa7, 0x29, 0xcf, 0x48, + 0xb4, 0x4c, 0x7e, 0x4a, 0x1f, 0x8c, 0xea, 0x2d, 0xe7, 0x79, 0xf9, 0x06, 0xa4, 0xfe, 0x36, 0x73, + 0x33, 0x7d, 0xa6, 0x0f, 0x46, 0x55, 0xda, 0x81, 0xbb, 0x2d, 0x99, 0xb7, 0xf9, 0xb6, 0xfc, 0x02, + 0xe5, 0xf9, 0xc3, 0xd5, 0xc6, 0x01, 0xd4, 0x54, 0x36, 0x2c, 0x37, 0x20, 0x33, 0x0b, 0x2f, 0x18, + 0xc7, 0xd4, 0xb0, 0x55, 0xc9, 0xb3, 0x88, 0xcd, 0xcd, 0x60, 0x54, 0xef, 0xea, 0x1b, 0x3e, 0x7c, + 0x30, 0x11, 0xdd, 0x52, 0x59, 0x45, 0x92, 0xf3, 0xdb, 0xda, 0x8a, 0xbf, 0x43, 0x53, 0x6b, 0xea, + 0xbc, 0xfe, 0xfa, 0x8a, 0x4f, 0x1a, 0xfc, 0x21, 0x5f, 0x6d, 0xb5, 0xaf, 0x26, 0x18, 0xa8, 0x0d, + 0x13, 0x63, 0x3e, 0x6c, 0xb1, 0xed, 0x56, 0x2f, 0x3f, 0xb3, 0xa6, 0xaa, 0x6c, 0x5e, 0xd9, 0x8a, + 0x4a, 0x7e, 0x57, 0xe2, 0xfd, 0x3b, 0x8b, 0xf5, 0xc1, 0xcb, 0x89, 0xe8, 0xe9, 0xe4, 0xd0, 0x6e, + 0xbd, 0xe3, 0x78, 0x65, 0x95, 0x7e, 0xe8, 0x48, 0x62, 0xcf, 0x45, 0x62, 0x1c, 0xe6, 0x36, 0x8e, + 0x05, 0x0b, 0xe4, 0x8c, 0x19, 0x0b, 0xd4, 0x6a, 0x8a, 0x17, 0x7d, 0x28, 0x8d, 0x06, 0x37, 0xf2, + 0x53, 0x7a, 0xeb, 0xf6, 0x44, 0xc7, 0xe7, 0x70, 0x80, 0x54, 0x26, 0xc5, 0x2f, 0xd9, 0x0d, 0x3b, + 0xd0, 0xd3, 0x2c, 0xfc, 0xe7, 0x2c, 0xe4, 0x19, 0x79, 0x86, 0x7b, 0x1f, 0x51, 0xd0, 0x77, 0x37, + 0xeb, 0x9e, 0x79, 0x77, 0xb3, 0xef, 0x18, 0x9e, 0x12, 0xab, 0x4d, 0xbb, 0xa1, 0x9c, 0x91, 0x29, + 0x19, 0x9b, 0x41, 0x11, 0x39, 0x04, 0x18, 0x1b, 0xcb, 0xa0, 0x99, 0x41, 0x51, 0xc9, 0x3b, 0x9a, + 0xb2, 0x1a, 0x55, 0x4b, 0xa3, 0x42, 0x86, 0x3c, 0x87, 0x07, 0x3e, 0x0b, 0xd0, 0xa5, 0xc1, 0x84, + 0x1d, 0x0f, 0xa3, 0x99, 0x40, 0x22, 0xac, 0xf1, 0x87, 0x22, 0x8d, 0xde, 0xba, 0x07, 0x06, 0x3a, + 0x3f, 0x65, 0x03, 0x1d, 0xcf, 0x03, 0x03, 0x9d, 0x1f, 0x99, 0x81, 0xce, 0xff, 0xe0, 0x6a, 0xa0, + 0xf3, 0xf5, 0xbd, 0x63, 0xa0, 0xf3, 0x7d, 0xe9, 0xa3, 0xa1, 0x47, 0x54, 0x64, 0x0e, 0xa9, 0xe6, + 0x10, 0xcb, 0x9d, 0x71, 0x9b, 0x00, 0x25, 0x59, 0x4d, 0x78, 0x5a, 0x04, 0x34, 0x69, 0x43, 0x30, + 0x1c, 0xb1, 0x1b, 0xef, 0x7c, 0xa8, 0x29, 0xef, 0x4b, 0xd6, 0x1a, 0x79, 0xa9, 0xe5, 0x67, 0xea, + 0x60, 0x77, 0x62, 0xe7, 0x51, 0xc2, 0x28, 0x7e, 0x77, 0x38, 0xd1, 0x76, 0x20, 0xd9, 0xdd, 0x6c, + 0xb4, 0xe0, 0x79, 0xc7, 0x62, 0xde, 0xc6, 0x87, 0x97, 0x2c, 0xa9, 0xd6, 0xb1, 0xc5, 0xf3, 0x02, + 0x12, 0xb9, 0x12, 0x82, 0x85, 0x89, 0xa9, 0x78, 0x93, 0xa0, 0x29, 0x1b, 0x25, 0x97, 0x7a, 0x79, + 0xb5, 0xb3, 0xcc, 0x45, 0x97, 0x55, 0xeb, 0xdb, 0x14, 0xf0, 0x45, 0x16, 0xf8, 0x6b, 0x6b, 0x8a, + 0xf0, 0xe3, 0xb7, 0x4f, 0xdf, 0x76, 0x3e, 0x1e, 0xdb, 0x65, 0x2e, 0x36, 0xd9, 0xdd, 0xcc, 0x77, + 0xf8, 0xbe, 0x74, 0x4a, 0x68, 0xb2, 0x9a, 0x03, 0xdd, 0xd4, 0x4c, 0x7f, 0x6d, 0x8d, 0xfa, 0x33, + 0xd5, 0x65, 0x7a, 0xf1, 0x4b, 0xd3, 0xcc, 0x28, 0x0f, 0x0b, 0x2b, 0x9f, 0x75, 0x57, 0xa3, 0x38, + 0x5e, 0x83, 0xbb, 0x6b, 0x6d, 0x34, 0xf9, 0x36, 0x58, 0x1b, 0xe5, 0xdf, 0x69, 0x6b, 0x23, 0xd3, + 0x18, 0x63, 0xca, 0x0d, 0x1b, 0x63, 0x74, 0xb9, 0x58, 0x55, 0x88, 0x63, 0xb2, 0xaa, 0x58, 0x7c, + 0x7b, 0xac, 0x2a, 0x9c, 0xd6, 0x14, 0xff, 0xff, 0x74, 0xd6, 0x14, 0x53, 0xc7, 0x6e, 0x4d, 0x11, + 0xba, 0xf3, 0xd6, 0x14, 0x37, 0x6e, 0x45, 0x31, 0xed, 0xc7, 0x6b, 0x45, 0x31, 0xfd, 0x47, 0x61, + 0x45, 0x31, 0x60, 0x51, 0x07, 0xcf, 0xc0, 0x78, 0xec, 0x85, 0xb1, 0xe2, 0xb1, 0xbb, 0xae, 0x15, + 0xb6, 0x29, 0x32, 0x67, 0xde, 0xac, 0x22, 0x33, 0x2a, 0xa0, 0x8c, 0x00, 0xb5, 0x65, 0x72, 0x44, + 0xcd, 0x36, 0x28, 0xdc, 0x70, 0x83, 0xb7, 0x06, 0xc2, 0x9e, 0x62, 0x8f, 0x9d, 0x8c, 0x40, 0x58, + 0x7e, 0x53, 0xdf, 0x3d, 0x64, 0x50, 0xc5, 0x5f, 0xc6, 0x86, 0xf7, 0x5f, 0x60, 0xe1, 0x57, 0x1d, + 0x0f, 0xa3, 0xfd, 0xad, 0x49, 0x1c, 0xed, 0x8a, 0xf7, 0x7f, 0xc5, 0xf7, 0x55, 0x33, 0x02, 0x61, + 0xf1, 0x35, 0x16, 0x4b, 0xa7, 0xcc, 0xe0, 0x47, 0x1f, 0x32, 0xdd, 0xd6, 0xf9, 0x72, 0x19, 0x01, + 0xa5, 0x68, 0xb0, 0x1e, 0x2a, 0x5f, 0x71, 0x3b, 0xe2, 0x6b, 0xde, 0x9c, 0xb6, 0x60, 0x5f, 0x86, + 0xa6, 0x68, 0x19, 0xa8, 0x33, 0x43, 0x4a, 0xc7, 0xfd, 0x50, 0x6b, 0x0f, 0x7e, 0x6f, 0x7e, 0x02, + 0xaa, 0x83, 0xff, 0x2b, 0x13, 0x4d, 0xb2, 0x80, 0x0e, 0x4b, 0xb7, 0x21, 0x38, 0xd2, 0x6d, 0xf0, + 0xe0, 0x60, 0x71, 0x49, 0x5d, 0xcb, 0x68, 0x8c, 0x0c, 0x7c, 0x37, 0x8b, 0x46, 0x04, 0x4e, 0x0b, + 0x65, 0x01, 0xfe, 0x39, 0x84, 0xb2, 0xb0, 0xcc, 0x90, 0x38, 0xb6, 0x3d, 0xd9, 0xfb, 0x1d, 0x23, + 0x0e, 0x36, 0x59, 0x03, 0xc1, 0x66, 0xe2, 0x89, 0xe6, 0x8f, 0x3c, 0x91, 0x23, 0xa5, 0x3b, 0xdc, + 0x3a, 0x9e, 0xd7, 0xb7, 0x4e, 0x79, 0xfe, 0x4c, 0xea, 0xf4, 0x17, 0xd6, 0x74, 0xee, 0xbf, 0x44, + 0xd9, 0xbf, 0x6e, 0x0c, 0x32, 0x3d, 0xc5, 0x9c, 0xb4, 0x33, 0xbe, 0x6d, 0xb4, 0x02, 0x75, 0x05, + 0xf4, 0x90, 0x67, 0xf2, 0x63, 0xe3, 0xa2, 0xe1, 0x83, 0x5d, 0x7a, 0xeb, 0x45, 0x15, 0xea, 0x6f, + 0xe5, 0x36, 0xdc, 0x62, 0x96, 0xef, 0xc2, 0x1e, 0x01, 0xe5, 0x59, 0x57, 0x2e, 0x7a, 0xd0, 0x84, + 0x9a, 0x86, 0x46, 0x12, 0xbf, 0x2e, 0x4c, 0x86, 0xe1, 0x8b, 0xc4, 0x87, 0xd1, 0xf8, 0x9a, 0x86, + 0xc6, 0x65, 0xfe, 0x7a, 0x7f, 0x24, 0x4c, 0x86, 0x34, 0x0b, 0xc4, 0xa7, 0x50, 0x5e, 0xbd, 0xaf, + 0x3e, 0x18, 0xda, 0xcc, 0x86, 0xc0, 0x3c, 0xb6, 0x6a, 0x2b, 0x15, 0x0b, 0xd1, 0x44, 0x28, 0x21, + 0x03, 0x81, 0x93, 0x91, 0xa5, 0xac, 0xf0, 0x7f, 0xca, 0x42, 0x05, 0xee, 0xf7, 0xf4, 0x81, 0x5e, + 0xeb, 0x27, 0xa6, 0xd7, 0x22, 0xa1, 0x43, 0xd3, 0x82, 0x83, 0x3c, 0xdb, 0x89, 0xb7, 0x47, 0x57, + 0x72, 0xfd, 0x59, 0x16, 0x7a, 0x48, 0xf5, 0xd5, 0x04, 0xeb, 0xeb, 0x7d, 0x81, 0x5a, 0x66, 0xae, + 0x51, 0x16, 0x0c, 0xac, 0x53, 0x7d, 0xbf, 0x16, 0xd7, 0x9a, 0xb6, 0xe5, 0x2c, 0x01, 0xf3, 0xcb, + 0xd2, 0x78, 0x5c, 0x86, 0x59, 0xe7, 0xf9, 0x20, 0x16, 0xc2, 0xd1, 0x21, 0x8b, 0x3d, 0x96, 0x4c, + 0xdc, 0xb1, 0xdd, 0x24, 0xa2, 0x0f, 0x96, 0x07, 0x81, 0x6c, 0x88, 0x13, 0x48, 0x31, 0xd3, 0xf3, + 0x2f, 0x04, 0x34, 0xde, 0xcb, 0x2c, 0x73, 0x32, 0x58, 0xca, 0x82, 0xcd, 0x92, 0x59, 0x2c, 0xd7, + 0xf1, 0x16, 0x5c, 0x8c, 0xfe, 0xc5, 0x43, 0x80, 0x21, 0x0c, 0x7d, 0xd1, 0x29, 0x5d, 0x15, 0x4b, + 0x7e, 0x19, 0x7b, 0xd9, 0x03, 0xde, 0xae, 0xc4, 0x56, 0x81, 0xd4, 0x81, 0xd3, 0x2a, 0xd8, 0xdc, + 0x60, 0x73, 0x1d, 0xc7, 0x28, 0xdf, 0x97, 0x66, 0x87, 0x32, 0x8d, 0x35, 0x9a, 0x0b, 0x10, 0x57, + 0x32, 0xe9, 0x15, 0x08, 0xcc, 0x5e, 0x1c, 0x55, 0x7a, 0x95, 0x46, 0x88, 0x43, 0x65, 0x57, 0x35, + 0x68, 0x4a, 0xc8, 0x17, 0xc6, 0xba, 0x09, 0xbc, 0xe5, 0x5c, 0xfa, 0x7a, 0x1c, 0x2a, 0xcb, 0x59, + 0x2b, 0x3f, 0xa2, 0x2c, 0xad, 0xe6, 0xb7, 0x98, 0xb6, 0xf0, 0xac, 0x37, 0x9a, 0xa8, 0xce, 0x1e, + 0x25, 0x06, 0x8d, 0x87, 0x7e, 0x25, 0xa5, 0x3f, 0x61, 0x79, 0x1e, 0xec, 0x81, 0xcd, 0x18, 0x27, + 0xb1, 0xeb, 0x4c, 0xaa, 0xa3, 0x8b, 0x37, 0xc9, 0x01, 0xe3, 0x45, 0xe3, 0xbd, 0x84, 0x63, 0xbb, + 0x2a, 0x98, 0x9b, 0x53, 0xf8, 0xcf, 0x19, 0x68, 0x32, 0xb5, 0xbb, 0xac, 0x0a, 0x05, 0xd7, 0xf9, + 0xeb, 0x7c, 0xe2, 0x8b, 0x2c, 0x76, 0xbf, 0xc0, 0xf9, 0x9f, 0x92, 0xd8, 0xfd, 0x34, 0x2a, 0x25, + 0x84, 0xe7, 0xc0, 0x56, 0x95, 0x2c, 0x7e, 0xff, 0x17, 0x02, 0x9a, 0x48, 0x0d, 0x20, 0xb9, 0xe8, + 0x4c, 0x38, 0x7e, 0xbd, 0xa5, 0x42, 0xae, 0x4b, 0xf4, 0xc4, 0xf4, 0x23, 0x3b, 0xe1, 0xd0, 0x58, + 0xec, 0x48, 0x08, 0x46, 0x0f, 0xeb, 0x2d, 0xab, 0x5a, 0xad, 0x6b, 0xed, 0xfa, 0xb6, 0x16, 0xbd, + 0xf7, 0x00, 0x38, 0x62, 0xe8, 0xd1, 0x41, 0x83, 0xff, 0xc6, 0x01, 0x55, 0x18, 0x23, 0x0b, 0x6e, + 0x05, 0x7a, 0xd7, 0xee, 0x78, 0xff, 0x0e, 0xfd, 0xdb, 0x73, 0xa9, 0x2b, 0xbb, 0xf5, 0xf6, 0xcb, + 0xc3, 0x2d, 0x1d, 0xfc, 0xf8, 0xaa, 0x65, 0x6e, 0x71, 0x35, 0x12, 0xe9, 0xef, 0xb2, 0x0d, 0xde, + 0x10, 0xf1, 0x9b, 0x00, 0xd8, 0xc0, 0x01, 0x7e, 0x5c, 0xaa, 0xe5, 0x89, 0x10, 0xcc, 0x90, 0x28, + 0x87, 0x5c, 0x5a, 0x94, 0x18, 0xef, 0x32, 0x7a, 0x54, 0xb2, 0xef, 0xa6, 0x3c, 0x11, 0x4c, 0x43, + 0xe1, 0xab, 0x0a, 0xff, 0x2a, 0x1b, 0x4d, 0x7e, 0xd3, 0x1b, 0xaa, 0xfd, 0xd8, 0x1b, 0x62, 0xfb, + 0xbd, 0x1e, 0x65, 0x96, 0x55, 0xad, 0x26, 0x6f, 0xc1, 0x6a, 0x4d, 0x51, 0x25, 0xe3, 0xb7, 0xbc, + 0x14, 0xbe, 0xa1, 0xac, 0x6a, 0x35, 0xc7, 0xda, 0xef, 0x82, 0x42, 0xfe, 0x83, 0xe2, 0x31, 0x2d, + 0xb1, 0xef, 0xe4, 0xf5, 0xc1, 0xf6, 0x44, 0xdf, 0x1e, 0x4b, 0xf9, 0xe0, 0x01, 0xbd, 0xa5, 0x35, + 0x19, 0x3b, 0x3d, 0xfc, 0xf5, 0x01, 0xd5, 0x18, 0xd1, 0x98, 0x68, 0x39, 0x89, 0xb9, 0x41, 0x27, + 0x5a, 0xee, 0xab, 0xa7, 0x13, 0x2d, 0xa7, 0x51, 0x32, 0x6e, 0x6d, 0xa2, 0xe5, 0xbe, 0x7a, 0xf1, + 0x63, 0x94, 0xb9, 0xa4, 0x6a, 0x35, 0xf1, 0x81, 0xc6, 0xdc, 0x8a, 0xf1, 0x5b, 0x7e, 0x0f, 0xc6, + 0x5c, 0x72, 0x3b, 0xbe, 0xc8, 0x64, 0xc4, 0x06, 0xbb, 0xe3, 0xfd, 0xb1, 0x85, 0xaa, 0x31, 0x83, + 0x78, 0x54, 0x40, 0x08, 0x4c, 0xc7, 0xcb, 0xfd, 0x4c, 0x9b, 0x53, 0x60, 0xc7, 0xf1, 0x2c, 0x31, + 0x0f, 0x5e, 0x1a, 0xd7, 0x41, 0x5e, 0x05, 0x8b, 0x21, 0x29, 0xb4, 0x0e, 0x1d, 0x28, 0xf6, 0x58, + 0xc2, 0x5a, 0x62, 0xb3, 0x47, 0x16, 0xf4, 0x72, 0xbe, 0x27, 0x3e, 0xd0, 0x12, 0x1f, 0x68, 0xa1, + 0xb4, 0x6e, 0xbc, 0x3f, 0x16, 0xf6, 0xd5, 0xad, 0xe3, 0xac, 0xa4, 0xf5, 0x96, 0xf3, 0x89, 0xf3, + 0x67, 0x54, 0x6e, 0x06, 0xb1, 0x47, 0xe0, 0xd3, 0x07, 0x41, 0x86, 0xb6, 0xf4, 0x0b, 0xac, 0xd5, + 0x14, 0x2f, 0x9f, 0x37, 0x88, 0xac, 0x8f, 0x25, 0xda, 0xb9, 0x3d, 0xeb, 0x33, 0x27, 0x28, 0x31, + 0x5e, 0x3b, 0x54, 0x2c, 0xd9, 0x61, 0x54, 0x7e, 0xa8, 0xac, 0x6a, 0xf5, 0xb5, 0xe8, 0x96, 0xe5, + 0x15, 0xcb, 0xaf, 0x45, 0xb7, 0x94, 0x57, 0x56, 0x2f, 0x4d, 0xf6, 0xb6, 0x11, 0x90, 0xfe, 0x5f, + 0x0c, 0x3a, 0x0c, 0xe4, 0x2e, 0x14, 0xa2, 0x5f, 0x40, 0xe3, 0x41, 0x1f, 0x5b, 0x59, 0x6e, 0x50, + 0x61, 0x99, 0x2c, 0xc2, 0x31, 0x2b, 0x95, 0x73, 0x41, 0x83, 0x5b, 0x59, 0xae, 0x9a, 0x85, 0xe2, + 0x46, 0x94, 0xdf, 0xd0, 0xb8, 0xb6, 0xce, 0x5f, 0x53, 0x59, 0xa5, 0x84, 0xc3, 0xfe, 0xf5, 0x01, + 0x5f, 0x2d, 0x51, 0x38, 0x63, 0x23, 0x48, 0x47, 0xa5, 0x3c, 0x97, 0x68, 0x70, 0x5b, 0xb7, 0x0d, + 0xb7, 0x74, 0xe8, 0x2d, 0xdf, 0x18, 0x23, 0x56, 0x5d, 0x8b, 0x36, 0x59, 0xa5, 0x5c, 0xd7, 0xa2, + 0x4d, 0xaa, 0xa3, 0x2f, 0xf5, 0x05, 0xb7, 0xad, 0x1d, 0x7b, 0xc9, 0x27, 0x07, 0x7a, 0x92, 0x87, + 0xfa, 0xf5, 0x96, 0xf3, 0xe4, 0x13, 0x4f, 0x64, 0xa0, 0xbc, 0xea, 0x1a, 0x6f, 0x9d, 0x3f, 0xb0, + 0x9e, 0x7e, 0x62, 0x15, 0x1a, 0x57, 0xef, 0xfd, 0xa4, 0xda, 0xff, 0x29, 0x25, 0xe2, 0x5e, 0xd0, + 0x94, 0x22, 0x89, 0x96, 0xc9, 0x73, 0x40, 0xc1, 0x1b, 0x1f, 0xec, 0x4f, 0x0e, 0x7e, 0x99, 0x1c, + 0x68, 0x06, 0xf9, 0x21, 0xa0, 0x82, 0xc4, 0xde, 0x6f, 0xbf, 0x2f, 0x1d, 0x27, 0x65, 0x17, 0xa4, + 0xc6, 0xcd, 0xfd, 0x99, 0x4a, 0xbb, 0x88, 0x6f, 0x61, 0x1e, 0x1b, 0x2b, 0x7d, 0x8d, 0x51, 0xe1, + 0x96, 0x82, 0x9a, 0x88, 0x2b, 0x97, 0x27, 0xb2, 0xe4, 0x71, 0xc3, 0xdb, 0x3b, 0xb9, 0x71, 0xf8, + 0x46, 0x62, 0x19, 0x9a, 0x10, 0x86, 0xf5, 0x62, 0x1d, 0x78, 0x26, 0xcd, 0xa6, 0x32, 0x47, 0xe2, + 0xcb, 0xe5, 0xc9, 0x66, 0x5c, 0x24, 0x40, 0x6c, 0x7c, 0x6d, 0xc9, 0x02, 0x4d, 0x29, 0x46, 0x92, + 0x64, 0xfb, 0x72, 0x96, 0x7f, 0xf0, 0xdc, 0x31, 0xd6, 0x9b, 0x6c, 0xd3, 0xa5, 0x1c, 0x34, 0xc3, + 0xfd, 0xbd, 0x32, 0x08, 0x5e, 0x8e, 0x23, 0x03, 0x82, 0x17, 0x73, 0x64, 0x93, 0xd9, 0x68, 0x16, + 0x76, 0xec, 0x03, 0x34, 0x99, 0x24, 0xdc, 0x53, 0x83, 0x75, 0x3e, 0x4e, 0x6f, 0x86, 0x63, 0xf0, + 0xd8, 0xeb, 0xe4, 0x47, 0xbc, 0x1f, 0x87, 0x71, 0x76, 0x01, 0x73, 0x6d, 0xd8, 0x33, 0x2f, 0x75, + 0x5a, 0x4b, 0xb5, 0xfd, 0x41, 0xb5, 0xb7, 0x17, 0xc3, 0x68, 0xb2, 0xdf, 0x8a, 0xa7, 0x89, 0x25, + 0xc2, 0xa3, 0xe9, 0x9c, 0x12, 0x48, 0x33, 0x08, 0xa8, 0x62, 0xef, 0x2c, 0x8b, 0x70, 0xb2, 0x3c, + 0xd0, 0xa8, 0xf6, 0x46, 0xc6, 0xa4, 0x1b, 0xac, 0xd7, 0x8a, 0x20, 0x28, 0xc7, 0xa4, 0xb6, 0xdb, + 0x47, 0x26, 0xb5, 0x75, 0x96, 0xc5, 0xe4, 0xf1, 0x6f, 0xe2, 0x03, 0x17, 0xad, 0x93, 0xda, 0x1a, + 0x89, 0x41, 0x94, 0x17, 0xb0, 0x00, 0x38, 0x21, 0xc1, 0xd3, 0x89, 0x64, 0xe9, 0x94, 0x38, 0xc8, + 0x97, 0xad, 0xab, 0xdb, 0xdd, 0x50, 0x6d, 0x6d, 0xc4, 0x3a, 0x94, 0x17, 0xb6, 0x00, 0x0c, 0xa1, + 0xb4, 0x1d, 0x13, 0x5a, 0xc1, 0x0a, 0xf8, 0x5a, 0x5b, 0x57, 0x0e, 0x40, 0xe9, 0x6c, 0xd6, 0x06, + 0x62, 0x39, 0xca, 0xaa, 0x37, 0x20, 0x7c, 0x1c, 0x55, 0xf7, 0xcd, 0x93, 0x70, 0x81, 0xfc, 0xa4, + 0xf7, 0xd3, 0xc6, 0x90, 0xcf, 0x06, 0x13, 0x60, 0x94, 0x52, 0x8d, 0xb1, 0xf1, 0x6f, 0x57, 0x87, + 0x7d, 0x21, 0x15, 0x37, 0x16, 0x5f, 0x44, 0xd9, 0x9f, 0x06, 0x03, 0xbe, 0x70, 0x41, 0x2e, 0xc6, + 0x55, 0x10, 0x9b, 0x09, 0x97, 0xc8, 0xd3, 0x39, 0x68, 0x37, 0x28, 0x37, 0xbd, 0x3d, 0xa6, 0x1f, + 0x3d, 0xaa, 0x42, 0x6d, 0xc9, 0x62, 0x4d, 0x29, 0x43, 0x8a, 0x94, 0x06, 0xea, 0xe5, 0xa7, 0xc7, + 0x48, 0x9c, 0x15, 0x46, 0x33, 0xd1, 0xac, 0x74, 0x94, 0xde, 0xbd, 0xcf, 0x2e, 0x7e, 0x68, 0x09, + 0x70, 0xee, 0xf0, 0xeb, 0x71, 0xff, 0x30, 0x0b, 0xf7, 0x98, 0x6e, 0x63, 0x48, 0xc0, 0xf3, 0xb5, + 0x9a, 0xf2, 0x21, 0xfa, 0x40, 0x1a, 0x61, 0x8b, 0xc6, 0xbc, 0xd5, 0x69, 0xd9, 0xa9, 0x53, 0x02, + 0x9a, 0xb4, 0xb4, 0x71, 0x2d, 0xf1, 0x3a, 0x32, 0x58, 0xa8, 0x15, 0x08, 0x6d, 0x64, 0x05, 0x04, + 0x73, 0xcd, 0x37, 0xae, 0x05, 0x57, 0x2c, 0xcf, 0x80, 0x19, 0xcd, 0x12, 0xc8, 0xab, 0x89, 0x55, + 0xd3, 0xf9, 0x82, 0xca, 0x35, 0x2d, 0xa9, 0xd0, 0x94, 0x52, 0xf4, 0x86, 0x64, 0x9d, 0x45, 0x2e, + 0x24, 0xe1, 0x91, 0xbe, 0xfb, 0x4c, 0x6f, 0x39, 0x99, 0xf8, 0x22, 0x9a, 0xf8, 0xe3, 0x4e, 0xfb, + 0x60, 0x57, 0x05, 0x6e, 0x98, 0xc2, 0x7d, 0x39, 0x68, 0x9a, 0x39, 0x44, 0x59, 0x30, 0x10, 0xf0, + 0xd5, 0x44, 0x8c, 0xf5, 0xae, 0x76, 0x9a, 0x3e, 0xe0, 0x18, 0xe1, 0x9c, 0xe9, 0xc3, 0xd3, 0xf1, + 0xd8, 0x6e, 0x6a, 0xfd, 0x30, 0x17, 0x64, 0xc3, 0x25, 0x9e, 0x54, 0xcb, 0x77, 0xa9, 0xb3, 0x7d, + 0xf1, 0xd8, 0xee, 0x12, 0x4f, 0x4d, 0x5d, 0x78, 0xde, 0x27, 0x9f, 0x7c, 0x62, 0x31, 0x5f, 0xf8, + 0x35, 0x42, 0xfe, 0x30, 0x96, 0x5b, 0x52, 0xf3, 0xc6, 0x5c, 0x90, 0xcd, 0x72, 0xc5, 0xf2, 0x1b, + 0x9c, 0x03, 0x87, 0x87, 0x30, 0x26, 0xdb, 0x5a, 0x92, 0x43, 0xbb, 0x0d, 0x2a, 0x0e, 0xc2, 0x28, + 0x41, 0xe1, 0x89, 0x7d, 0xc9, 0xa1, 0xdd, 0xa9, 0xb3, 0x57, 0x86, 0xf7, 0x9f, 0x4d, 0x76, 0x37, + 0x9b, 0x29, 0x27, 0x55, 0x6e, 0x34, 0x9e, 0x79, 0xcd, 0xbc, 0x33, 0xcc, 0x6b, 0xd6, 0x3d, 0xcf, + 0xbc, 0x66, 0xff, 0x80, 0xcc, 0x6b, 0xce, 0x6d, 0x66, 0x5e, 0x23, 0x9a, 0xf2, 0x6b, 0x14, 0x94, + 0x5c, 0xc1, 0x54, 0x56, 0x00, 0xc8, 0x49, 0x76, 0x3f, 0x2a, 0xec, 0x30, 0x01, 0x1c, 0x80, 0x83, + 0x6c, 0xf9, 0xb6, 0x96, 0x05, 0x00, 0x32, 0xc4, 0x2d, 0x04, 0xe7, 0xa3, 0xb3, 0xf0, 0xb2, 0x0c, + 0x50, 0x0b, 0x5b, 0x32, 0x50, 0x1e, 0x7f, 0xb7, 0xee, 0x79, 0xc4, 0x49, 0x05, 0x43, 0xb6, 0x55, + 0xcb, 0x4f, 0xda, 0xd1, 0x00, 0x48, 0xba, 0x12, 0xd1, 0xd3, 0xd0, 0x7f, 0x14, 0xc1, 0x50, 0x7b, + 0x06, 0x9a, 0xee, 0xb2, 0xf3, 0x3f, 0xd5, 0xed, 0xf8, 0xdb, 0x2c, 0x34, 0xb9, 0x12, 0x3b, 0xb1, + 0x61, 0x6a, 0x00, 0x5b, 0x73, 0xae, 0xb4, 0x4b, 0xc7, 0x30, 0xec, 0xb3, 0xc8, 0x0b, 0x63, 0x46, + 0x93, 0x0c, 0x9b, 0x2c, 0xb1, 0xbc, 0x15, 0x19, 0x66, 0x9c, 0xd4, 0x31, 0xbc, 0x15, 0xfc, 0x23, + 0x21, 0xfe, 0x1e, 0x65, 0xfb, 0x03, 0x11, 0x62, 0xdd, 0x95, 0x5b, 0xba, 0x41, 0x53, 0x7c, 0x12, + 0x94, 0xc8, 0xef, 0x13, 0xf5, 0x22, 0xdc, 0x87, 0x7d, 0x97, 0xf5, 0xc1, 0x4e, 0x40, 0x4f, 0xc5, + 0x9c, 0x83, 0xae, 0x1e, 0x3d, 0x18, 0x1f, 0x38, 0x09, 0xb8, 0x97, 0x6f, 0x33, 0xdf, 0xc3, 0xf2, + 0x10, 0xc4, 0x07, 0x5a, 0xf4, 0xbe, 0xcb, 0xf1, 0xd8, 0x6e, 0xa8, 0x21, 0x49, 0x3e, 0x61, 0x12, + 0xf1, 0x7d, 0x34, 0xc9, 0x72, 0x9f, 0x09, 0x66, 0xc4, 0xee, 0xcc, 0xd6, 0x1a, 0xb9, 0x90, 0x47, + 0x3f, 0xcc, 0x14, 0x37, 0x39, 0xd0, 0x3c, 0x17, 0xd3, 0x5e, 0xf1, 0xd8, 0xee, 0x22, 0xd5, 0xda, + 0x45, 0xd4, 0x04, 0x34, 0x0e, 0x87, 0x71, 0x6d, 0x00, 0xde, 0x77, 0x7c, 0xe9, 0x27, 0x9a, 0xd2, + 0x28, 0xd1, 0x32, 0xf9, 0x23, 0xde, 0x51, 0x19, 0x9c, 0x91, 0xe0, 0xfd, 0xa6, 0xc6, 0x06, 0xcc, + 0x53, 0xb7, 0xb3, 0x4b, 0x6f, 0xeb, 0x00, 0xf7, 0xba, 0xd4, 0xf6, 0xf3, 0x10, 0x9c, 0x14, 0x2c, + 0xf0, 0x0c, 0xf6, 0x0f, 0xe3, 0x5a, 0xbd, 0xb3, 0x43, 0xef, 0xda, 0x1d, 0x1f, 0xf8, 0x22, 0xd9, + 0xb5, 0x4d, 0x3f, 0x7b, 0x24, 0xb9, 0x8b, 0xe8, 0xb4, 0xa0, 0x97, 0x4a, 0x27, 0x2d, 0x31, 0xce, + 0x1e, 0x2d, 0x94, 0xec, 0x40, 0x22, 0x3f, 0x12, 0x8f, 0xed, 0xa6, 0xbc, 0x33, 0xff, 0x0e, 0x00, + 0x19, 0x59, 0xf8, 0x8f, 0x05, 0x28, 0x9f, 0x76, 0x61, 0xf6, 0x87, 0x87, 0x5d, 0xec, 0x0f, 0xb1, + 0xfc, 0x8b, 0x7b, 0x84, 0x83, 0xa3, 0xd9, 0x1f, 0x42, 0x1c, 0x3f, 0x7d, 0x68, 0xef, 0xa8, 0x56, + 0x88, 0x24, 0xdb, 0x0a, 0xac, 0x2e, 0x3e, 0xd8, 0x0d, 0x10, 0x02, 0x36, 0x88, 0x74, 0x96, 0x1f, + 0xcc, 0x16, 0xd1, 0xa6, 0x14, 0xce, 0xbc, 0x59, 0xa5, 0x70, 0x0d, 0x67, 0xd3, 0x08, 0xd0, 0xb6, + 0x44, 0x53, 0x4a, 0x38, 0x9b, 0xc6, 0x9b, 0x7f, 0xed, 0x4d, 0x1b, 0xc6, 0xdb, 0xfe, 0x90, 0xbe, + 0xeb, 0xb4, 0x36, 0x7c, 0xc5, 0x1e, 0x0f, 0x9b, 0x5f, 0x2a, 0xe8, 0x93, 0x47, 0x30, 0x8d, 0xe4, + 0x2c, 0x0f, 0x7f, 0xe1, 0x62, 0x79, 0xf8, 0xe2, 0x28, 0x96, 0x87, 0x69, 0xc7, 0xbd, 0xeb, 0xb6, + 0x87, 0xef, 0xbb, 0xd8, 0x1e, 0xbe, 0x72, 0x03, 0xb6, 0x87, 0xf9, 0xa1, 0x3c, 0x8b, 0xed, 0xe1, + 0xcf, 0x2c, 0xd6, 0x87, 0x9b, 0x9d, 0xd6, 0x87, 0x13, 0xe4, 0x59, 0x8e, 0x9c, 0x9f, 0xa5, 0xc1, + 0x60, 0x1d, 0x64, 0xfc, 0x7c, 0x59, 0x53, 0x16, 0x59, 0x2d, 0x13, 0x8b, 0x46, 0xb0, 0x4c, 0x34, + 0xdd, 0x86, 0x0d, 0x04, 0x6b, 0xb5, 0x53, 0xfc, 0xd7, 0xae, 0x76, 0x8a, 0x27, 0xee, 0x25, 0x3b, + 0xc5, 0x82, 0xd0, 0x0c, 0x57, 0x3b, 0xc5, 0x9f, 0x59, 0x0d, 0x14, 0xb9, 0x48, 0x5e, 0x13, 0xdd, + 0x23, 0x79, 0xd9, 0x31, 0xdd, 0x5d, 0xb0, 0xad, 0x7b, 0xd9, 0x1e, 0x3f, 0xfe, 0xb1, 0xb4, 0xb6, + 0x75, 0x1c, 0xb9, 0x4f, 0x8c, 0xeb, 0xce, 0x61, 0xc4, 0x4c, 0x50, 0x3b, 0xc9, 0x52, 0xfd, 0x68, + 0xba, 0x8f, 0x24, 0xcd, 0x4a, 0x43, 0x9a, 0xb2, 0x5e, 0x32, 0xbb, 0xc9, 0xef, 0x12, 0x7f, 0xee, + 0xd8, 0x6e, 0x08, 0xe1, 0x29, 0x27, 0x4f, 0x77, 0xc0, 0x6b, 0x50, 0xe2, 0x89, 0xc7, 0x76, 0x57, + 0x96, 0xeb, 0x5a, 0xbb, 0xf9, 0x96, 0x17, 0x7b, 0xe2, 0x03, 0x03, 0x89, 0xe6, 0xce, 0x78, 0x7f, + 0x34, 0x79, 0xba, 0x43, 0xef, 0x38, 0xaf, 0x77, 0xf6, 0x51, 0x8f, 0x18, 0x83, 0x21, 0x20, 0xf8, + 0x39, 0xde, 0x1f, 0xd3, 0xb7, 0x6f, 0x63, 0x01, 0x74, 0xcc, 0xe9, 0xec, 0xa1, 0x9d, 0x26, 0xdf, + 0x77, 0xa1, 0x9d, 0xfc, 0xd6, 0xc8, 0x28, 0xf9, 0x14, 0xb9, 0x97, 0x5b, 0x23, 0xa3, 0x3c, 0x3f, + 0x96, 0xc8, 0x28, 0xc5, 0x6c, 0x4d, 0xa4, 0xc4, 0x1a, 0x2a, 0xc5, 0x1a, 0x6e, 0x23, 0x4d, 0x98, + 0x34, 0x07, 0x10, 0xdf, 0x75, 0xc3, 0xaa, 0x4d, 0x8e, 0x60, 0x18, 0x10, 0x63, 0x1f, 0xa7, 0x25, + 0xb6, 0x07, 0xc3, 0x78, 0xe9, 0xa6, 0x83, 0x61, 0x38, 0x82, 0x60, 0xb8, 0x45, 0x94, 0x98, 0x7a, + 0xaf, 0x47, 0x94, 0x98, 0x76, 0xeb, 0x11, 0x25, 0xde, 0x44, 0xe3, 0x36, 0xf9, 0x42, 0x61, 0x83, + 0x0e, 0x98, 0x4e, 0x05, 0x3a, 0x8f, 0x4b, 0xb4, 0x4c, 0x2e, 0xb0, 0xec, 0x30, 0x97, 0xef, 0x9b, + 0xf1, 0xe6, 0xb4, 0xa9, 0x4d, 0x7e, 0x30, 0xe3, 0x1e, 0x95, 0x1f, 0xb4, 0x08, 0x28, 0xcb, 0x1b, + 0xf2, 0x79, 0xd3, 0x65, 0x9d, 0x86, 0x94, 0xbc, 0x21, 0x9f, 0x17, 0xc2, 0xaf, 0xe0, 0xb6, 0xf2, + 0x52, 0xf2, 0xfd, 0x03, 0x17, 0xf4, 0xd8, 0x29, 0x88, 0xa2, 0x01, 0x62, 0x4f, 0x98, 0x67, 0x2e, + 0x09, 0x24, 0x4d, 0xb3, 0x9f, 0x17, 0x7b, 0xf4, 0xd6, 0x83, 0x60, 0x1f, 0x46, 0x90, 0x1b, 0x6d, + 0xef, 0x59, 0x58, 0xa4, 0xe2, 0x21, 0xef, 0x9e, 0xd5, 0xdc, 0x80, 0xa0, 0x29, 0x97, 0x04, 0x74, + 0x41, 0x90, 0x1c, 0xc4, 0xba, 0x3c, 0x0f, 0x3e, 0x44, 0xbf, 0xf4, 0x07, 0x30, 0x85, 0x63, 0x76, + 0x1c, 0x70, 0x6a, 0xa5, 0x65, 0xd5, 0xc4, 0x90, 0x1a, 0x63, 0xfd, 0x11, 0x6c, 0xdc, 0x7e, 0x30, + 0xd3, 0xb6, 0xbf, 0xca, 0x40, 0x53, 0x6c, 0xcb, 0xbe, 0xf7, 0xc5, 0xc1, 0xd5, 0x36, 0xeb, 0x21, + 0x97, 0xf4, 0xeb, 0x8d, 0x35, 0x11, 0x48, 0xf8, 0x03, 0xf2, 0xdf, 0xd9, 0x30, 0x8e, 0xe5, 0xb2, + 0x68, 0xed, 0x60, 0xc7, 0x43, 0x44, 0xc0, 0xd4, 0x37, 0xdc, 0xb1, 0x1b, 0xf2, 0x74, 0x1b, 0x56, + 0x1c, 0x45, 0x1c, 0xf0, 0x9f, 0x32, 0xd1, 0x4c, 0x48, 0xf3, 0xe4, 0xf4, 0x1e, 0xfb, 0xa1, 0xfc, + 0x67, 0xe3, 0xc4, 0xb2, 0x1f, 0xe6, 0xc5, 0x2f, 0x14, 0xc8, 0x51, 0x01, 0x3a, 0x25, 0x5b, 0xa5, + 0x7c, 0x42, 0x70, 0x28, 0x30, 0x59, 0x46, 0x19, 0xc2, 0xe7, 0x1b, 0x38, 0x78, 0xa0, 0x05, 0xb2, + 0x53, 0x93, 0x89, 0xe6, 0x91, 0x4b, 0x9d, 0x68, 0x8b, 0x42, 0x14, 0x57, 0x9e, 0xc8, 0x8a, 0xf7, + 0x77, 0xc4, 0x07, 0xbb, 0x53, 0xa7, 0x4f, 0xe9, 0x9d, 0xbb, 0xe3, 0x03, 0x03, 0xf1, 0xa1, 0xbd, + 0x66, 0xc6, 0x0f, 0xcc, 0x3b, 0x19, 0x73, 0xf4, 0x9d, 0x04, 0xdb, 0x65, 0x8a, 0x8d, 0x76, 0xf9, + 0xc3, 0x8b, 0x83, 0xa1, 0x1a, 0x5f, 0xad, 0xde, 0xd5, 0x9e, 0xd8, 0x7f, 0x51, 0xef, 0xe8, 0xd4, + 0xbb, 0xda, 0xf5, 0x4b, 0x27, 0xe3, 0x43, 0x3d, 0xd7, 0xa2, 0x4d, 0xaa, 0x6d, 0xd9, 0xe2, 0x1b, + 0x0e, 0x57, 0x75, 0xcc, 0x0d, 0x9a, 0x4e, 0xaa, 0xd3, 0x61, 0xbd, 0xe4, 0x9d, 0x70, 0x71, 0x58, + 0x7d, 0x4d, 0x53, 0x5e, 0x46, 0x2f, 0x49, 0xe9, 0x0e, 0x88, 0xa6, 0xe3, 0xe6, 0x4d, 0x5b, 0x2d, + 0x22, 0xc0, 0x58, 0x16, 0x2a, 0x70, 0xef, 0x7b, 0xef, 0x5f, 0x9b, 0x35, 0x63, 0x33, 0xba, 0xc3, + 0x31, 0x42, 0xe1, 0xda, 0xcc, 0x21, 0xd7, 0xe6, 0xd2, 0x1f, 0x60, 0x5b, 0xdc, 0x4d, 0xef, 0x7e, + 0x35, 0x06, 0xd3, 0x3b, 0x2c, 0xde, 0xc9, 0x36, 0x9a, 0x85, 0x65, 0x89, 0xdf, 0x63, 0x3e, 0x33, + 0x0c, 0xb5, 0xc3, 0x6b, 0x67, 0x76, 0x78, 0xf7, 0x52, 0xd4, 0x88, 0xb4, 0xe7, 0x6e, 0x85, 0xba, + 0x11, 0x3c, 0xec, 0xff, 0x73, 0x06, 0x7a, 0x18, 0x0c, 0x9c, 0xad, 0x83, 0x60, 0xdb, 0xd2, 0x1f, + 0x12, 0x3d, 0x2c, 0xa7, 0xf6, 0xb9, 0x19, 0x63, 0xb2, 0xcf, 0xc5, 0x59, 0x08, 0x88, 0x7d, 0xee, + 0x04, 0xa7, 0x4d, 0xae, 0x58, 0x6a, 0x66, 0xba, 0xca, 0xa4, 0xf2, 0x9d, 0x47, 0xcc, 0x4c, 0x57, + 0x22, 0xbb, 0x78, 0xfa, 0xee, 0x03, 0x54, 0xc2, 0x43, 0xa9, 0x1b, 0xd2, 0x88, 0x66, 0xc6, 0x1f, + 0x71, 0x3f, 0xe4, 0x02, 0x92, 0xaa, 0x96, 0x33, 0x5b, 0x1c, 0x6e, 0xe9, 0x18, 0xfe, 0xfc, 0xb0, + 0xd5, 0x34, 0x1c, 0x96, 0x55, 0xd8, 0x96, 0x89, 0x1e, 0x19, 0x61, 0xb8, 0x7b, 0xff, 0x82, 0xd6, + 0x58, 0x2e, 0xe8, 0x68, 0xa7, 0x84, 0x23, 0x0e, 0xc0, 0x3d, 0x7d, 0x02, 0x86, 0x83, 0xdd, 0xd2, + 0xbb, 0x76, 0x25, 0xbb, 0x9b, 0x79, 0xb3, 0x6a, 0x8b, 0xaa, 0x93, 0xb8, 0xec, 0x8f, 0xbc, 0x53, + 0xf2, 0x3c, 0xe7, 0xce, 0xdb, 0x46, 0x1c, 0xfe, 0xfc, 0xf0, 0x08, 0xa0, 0xde, 0x9b, 0x8b, 0xf2, + 0xe1, 0xbe, 0xdc, 0x81, 0xd7, 0xef, 0x5c, 0x06, 0xca, 0xa5, 0x0f, 0x09, 0x79, 0xf7, 0xf6, 0x64, + 0x68, 0x4a, 0x57, 0x86, 0xc4, 0x8a, 0xe5, 0xad, 0x19, 0x34, 0x16, 0x43, 0x4c, 0x6f, 0xbd, 0x08, + 0x17, 0xd6, 0x9a, 0x9c, 0xf7, 0x5a, 0xb4, 0x89, 0xaf, 0xc4, 0x66, 0x5f, 0x51, 0xfd, 0xf2, 0x45, + 0xcb, 0x13, 0x48, 0xce, 0x82, 0x30, 0xc2, 0x54, 0x24, 0xcd, 0xe4, 0xac, 0x20, 0x4b, 0x66, 0x99, + 0xb2, 0x12, 0xe7, 0x8e, 0x81, 0x87, 0x12, 0x3f, 0xb0, 0xbe, 0xfb, 0x4c, 0xa2, 0xe7, 0x68, 0xea, + 0xbb, 0xad, 0xc3, 0x7b, 0xaf, 0x5c, 0x1f, 0x6c, 0x4f, 0xf4, 0xb7, 0x24, 0xbb, 0xb6, 0xc1, 0x9b, + 0x67, 0x3c, 0xa0, 0x57, 0x0e, 0x19, 0xb4, 0xc6, 0xde, 0x2b, 0x7a, 0xd7, 0x2e, 0xbd, 0xf3, 0x5b, + 0x92, 0xed, 0x0d, 0x7b, 0x3d, 0x19, 0xcb, 0xe5, 0xb0, 0x2f, 0x3c, 0xb8, 0xc9, 0xaf, 0x77, 0xea, + 0xad, 0x03, 0xa9, 0xcf, 0xbf, 0x36, 0xc6, 0xf9, 0x32, 0x06, 0x41, 0xe2, 0x8c, 0x4f, 0x3d, 0xd1, + 0x8c, 0x03, 0x8f, 0x61, 0xb4, 0x8d, 0xb3, 0x78, 0x18, 0x0f, 0x2a, 0xdb, 0x0f, 0xf1, 0xa8, 0x60, + 0x5a, 0x29, 0xc2, 0x41, 0x71, 0x86, 0x3c, 0x41, 0x4d, 0xa9, 0x93, 0x5c, 0xaa, 0xe5, 0x35, 0x04, + 0x14, 0xb0, 0x31, 0x0a, 0x0c, 0x6e, 0xb0, 0x80, 0xbd, 0xfb, 0x92, 0x7b, 0x4f, 0x96, 0x78, 0x22, + 0x34, 0xc7, 0xdc, 0xdc, 0xe1, 0x3d, 0xd1, 0x44, 0xdf, 0x16, 0x68, 0x56, 0xe4, 0x09, 0xf9, 0x22, + 0x5e, 0x7f, 0x60, 0x6e, 0x7c, 0xa0, 0x25, 0x79, 0x7a, 0x60, 0xf8, 0xe0, 0x89, 0x62, 0x48, 0xfe, + 0x4b, 0xaa, 0x8d, 0x75, 0xb9, 0xcc, 0xe5, 0x46, 0xd3, 0x64, 0xfd, 0xc8, 0x69, 0x9a, 0xec, 0x9b, + 0xa1, 0x69, 0xc4, 0x56, 0x01, 0x4d, 0xad, 0xb5, 0xde, 0xb5, 0x9a, 0x60, 0x08, 0x12, 0x66, 0xe6, + 0x02, 0xdb, 0xe5, 0x56, 0x2f, 0xbf, 0x02, 0x50, 0xac, 0xef, 0x3e, 0x00, 0xa3, 0x16, 0x7b, 0x60, + 0xbf, 0x68, 0x30, 0x38, 0xba, 0x53, 0x7c, 0xf8, 0x05, 0x3d, 0xf6, 0x19, 0x6c, 0x93, 0xea, 0x36, + 0x24, 0x4d, 0xd2, 0xe2, 0xb8, 0xfa, 0xa3, 0xd2, 0x55, 0xdf, 0x64, 0xa1, 0x29, 0xb6, 0x4e, 0x0f, + 0x08, 0xaa, 0x1f, 0x2b, 0x41, 0xf5, 0x86, 0xa6, 0xbc, 0x8a, 0x5e, 0x96, 0x9c, 0x07, 0x3e, 0x66, + 0x4a, 0x2a, 0x51, 0x8c, 0xf2, 0xe1, 0x01, 0xe3, 0x9e, 0x17, 0x77, 0xf3, 0x94, 0x62, 0xfe, 0x79, + 0x79, 0x74, 0x14, 0xcd, 0x98, 0x29, 0xe1, 0xe0, 0xf3, 0x92, 0xba, 0x68, 0xb4, 0xe6, 0x8c, 0xac, + 0xd1, 0xb2, 0xea, 0xb1, 0x22, 0x8e, 0x98, 0x1a, 0xef, 0xdc, 0xfe, 0x98, 0x1a, 0x64, 0xe1, 0xa6, + 0x42, 0xea, 0x45, 0x5b, 0x50, 0x8d, 0x47, 0x47, 0x51, 0x48, 0x31, 0xc5, 0x53, 0xb5, 0x35, 0x74, + 0xc6, 0xab, 0x37, 0x19, 0x3a, 0x83, 0x2c, 0x88, 0xc4, 0xce, 0x78, 0xcd, 0xa9, 0xcd, 0xf2, 0xa4, + 0x8f, 0x9d, 0x41, 0x4f, 0xc1, 0xd4, 0x58, 0x55, 0xb8, 0x68, 0xac, 0x9e, 0x1c, 0x45, 0x63, 0x45, + 0x46, 0xe1, 0xf5, 0x53, 0xef, 0xb9, 0xe9, 0xa7, 0x5e, 0xba, 0x69, 0xfd, 0x94, 0x55, 0x0f, 0xf5, + 0x8e, 0x8b, 0x1e, 0x6a, 0x91, 0xa6, 0x3c, 0x6f, 0xd1, 0x43, 0x3d, 0x6d, 0xd3, 0x43, 0xbd, 0xb7, + 0x71, 0x51, 0xb8, 0xd8, 0x83, 0x15, 0x4f, 0x1f, 0xf0, 0x6a, 0x29, 0x8b, 0x0e, 0x6a, 0xe3, 0x8d, + 0xea, 0xa0, 0x1e, 0xa4, 0xaf, 0xb9, 0x2f, 0xd2, 0xd7, 0xd8, 0x71, 0xd8, 0x5d, 0x50, 0x7a, 0x71, + 0xcc, 0x5c, 0xde, 0x4d, 0x32, 0x73, 0xe2, 0xbf, 0x31, 0xf3, 0x73, 0x82, 0x0e, 0xa9, 0x4f, 0xd0, + 0x94, 0x75, 0x2c, 0xa5, 0xdc, 0xfb, 0x64, 0xed, 0x2c, 0x41, 0x67, 0x67, 0x5f, 0x6a, 0xeb, 0x10, + 0xfc, 0x2c, 0x53, 0x2b, 0x94, 0x55, 0x95, 0x2b, 0x96, 0x5c, 0x1f, 0x6c, 0x27, 0xb9, 0x38, 0xaf, + 0x0f, 0xb6, 0x97, 0x57, 0x2c, 0xab, 0x20, 0x85, 0x8b, 0x95, 0x65, 0xab, 0xd5, 0x8a, 0xeb, 0x83, + 0xed, 0x2c, 0xc9, 0xb9, 0xb2, 0xaa, 0x72, 0xe5, 0x0a, 0xda, 0xa8, 0xa2, 0xfc, 0xfb, 0xd2, 0xb2, + 0x90, 0xa2, 0xe6, 0xd2, 0x71, 0xcc, 0x94, 0x9e, 0xb9, 0x74, 0x14, 0x33, 0xa7, 0x67, 0x9e, 0x75, + 0x10, 0x75, 0x1c, 0x19, 0x43, 0xfd, 0x19, 0x4b, 0x71, 0x37, 0xa6, 0x6c, 0x38, 0x8e, 0x63, 0xfb, + 0x09, 0x64, 0xc3, 0x71, 0x7c, 0xf3, 0x7d, 0x97, 0x0d, 0x67, 0x35, 0xca, 0x05, 0x3f, 0x19, 0x96, + 0x0e, 0x07, 0x23, 0x7e, 0x56, 0x28, 0x4b, 0xf6, 0x7c, 0x38, 0xc6, 0xdb, 0xd8, 0x85, 0xb5, 0x13, + 0xd8, 0xf0, 0x87, 0x4f, 0x8f, 0xc3, 0x7a, 0x89, 0x17, 0xdc, 0xf2, 0xe3, 0x7c, 0x26, 0x68, 0x4a, + 0xa7, 0x55, 0x89, 0x1a, 0xbd, 0xed, 0x4a, 0xd4, 0xbb, 0x96, 0x15, 0xc7, 0x2d, 0x10, 0xcb, 0x8c, + 0x7b, 0x34, 0x10, 0xcb, 0xcc, 0x1f, 0x59, 0x20, 0x96, 0x82, 0x1f, 0x6f, 0x20, 0x96, 0x87, 0x7e, + 0x14, 0x81, 0x58, 0x6c, 0xd9, 0x5a, 0x66, 0xdd, 0xbe, 0x6c, 0x2d, 0x17, 0x04, 0x34, 0x9e, 0x69, + 0x2a, 0x0b, 0x66, 0x8f, 0xf1, 0x6d, 0x72, 0x35, 0x41, 0xa8, 0xf8, 0xc1, 0x4d, 0x10, 0xd8, 0x0c, + 0xe2, 0x3b, 0x5c, 0xc6, 0x8f, 0x87, 0xa9, 0x71, 0xd6, 0x4b, 0x5c, 0xc6, 0x8f, 0x79, 0x37, 0x94, + 0xf1, 0x83, 0xcb, 0xf4, 0xe1, 0x34, 0x6e, 0x78, 0xe4, 0x8e, 0x18, 0x37, 0xfc, 0xce, 0x99, 0xe1, + 0x63, 0xce, 0xa8, 0x24, 0x39, 0x76, 0x95, 0x70, 0x64, 0xff, 0x78, 0x6c, 0xd4, 0xec, 0x1f, 0xce, + 0xac, 0x1f, 0xb5, 0x56, 0xbb, 0xc8, 0x47, 0x49, 0x88, 0x5b, 0x17, 0x35, 0xa8, 0x3f, 0xb0, 0x1e, + 0x26, 0xbf, 0x4d, 0x39, 0x41, 0x3c, 0xf7, 0xa0, 0x05, 0xc7, 0x47, 0xbc, 0x05, 0xc7, 0x63, 0xa3, + 0x1e, 0xc3, 0x2d, 0x59, 0x77, 0x44, 0x2c, 0x49, 0x8c, 0x21, 0xad, 0xcc, 0x2a, 0x83, 0x4c, 0xe7, + 0x8a, 0xe5, 0x32, 0x3e, 0xbe, 0x8d, 0x19, 0xc0, 0x73, 0xff, 0x85, 0xe2, 0xc4, 0xb1, 0x41, 0x1c, + 0x9e, 0x37, 0x36, 0x37, 0xe2, 0xaf, 0xf7, 0xcd, 0x5f, 0x11, 0xfc, 0x78, 0x6e, 0xd1, 0xfc, 0xc5, + 0xc1, 0x50, 0xbd, 0x37, 0x02, 0x25, 0xea, 0xe2, 0xb2, 0x67, 0x9f, 0x7d, 0xf6, 0xa5, 0xa2, 0x22, + 0x4b, 0x6a, 0xe4, 0x52, 0xd3, 0x2e, 0xed, 0x71, 0x8e, 0x44, 0xa7, 0x76, 0x69, 0x22, 0xb3, 0x4b, + 0x73, 0x21, 0xd1, 0xa9, 0x79, 0xda, 0x29, 0x01, 0xe5, 0xc1, 0xae, 0xb2, 0xc3, 0x84, 0x6c, 0x31, + 0xbf, 0xd7, 0x94, 0xdf, 0x48, 0xb6, 0x2a, 0xd9, 0xaf, 0x0f, 0x7d, 0x66, 0xdb, 0x67, 0xc0, 0x75, + 0xf1, 0xfe, 0x18, 0x3d, 0x1b, 0x6c, 0x3a, 0x32, 0xf2, 0x21, 0x9b, 0xa6, 0x6a, 0x0b, 0xc0, 0x98, + 0x04, 0xac, 0xc9, 0xf9, 0x44, 0x29, 0xaa, 0x6d, 0x6a, 0xb7, 0x94, 0x2c, 0x4f, 0xfe, 0x68, 0x53, + 0xb2, 0x6c, 0x30, 0x53, 0x97, 0x3c, 0x35, 0x2a, 0xe4, 0xe2, 0x3c, 0x29, 0x2c, 0xad, 0xc9, 0x13, + 0x63, 0x49, 0x6b, 0x62, 0xa6, 0x31, 0x71, 0xa4, 0x18, 0x79, 0xfa, 0x41, 0x8a, 0x91, 0x07, 0x29, + 0x46, 0x6e, 0xdd, 0xfc, 0xe9, 0x3f, 0x0b, 0x9a, 0xf2, 0x77, 0x02, 0xfa, 0x5b, 0x41, 0x72, 0x08, + 0x64, 0xe5, 0x0b, 0x82, 0x6b, 0xa4, 0x2f, 0x20, 0xae, 0x52, 0x7d, 0x27, 0x21, 0xcc, 0x57, 0x7c, + 0xa0, 0x05, 0xf0, 0x07, 0xf1, 0x44, 0x00, 0x25, 0xa6, 0xd6, 0x1e, 0xbf, 0x72, 0x36, 0xd1, 0xfb, + 0x85, 0xbb, 0x16, 0xe6, 0x78, 0xbb, 0x81, 0xaf, 0x71, 0xda, 0xfe, 0x6b, 0xd1, 0x26, 0x12, 0x79, + 0x0c, 0xfc, 0x36, 0xda, 0x4e, 0xa7, 0x8e, 0xb7, 0x33, 0x09, 0x38, 0x78, 0x12, 0x83, 0x8c, 0x14, + 0x4f, 0x7a, 0x29, 0x71, 0xec, 0x72, 0xa2, 0xe3, 0x2c, 0x34, 0x26, 0xa9, 0xe8, 0xfa, 0x2e, 0xeb, + 0x31, 0x03, 0x73, 0x38, 0xc3, 0x8e, 0x15, 0xfe, 0x45, 0x26, 0x9a, 0x62, 0xfb, 0xae, 0xfb, 0xcf, + 0x3e, 0x2a, 0x0d, 0xeb, 0xe3, 0xb4, 0x8f, 0x62, 0x0a, 0x64, 0x17, 0xa5, 0xc4, 0x5d, 0x8d, 0x20, + 0x5e, 0x52, 0xa6, 0x29, 0x6f, 0xa0, 0xd7, 0x24, 0xe7, 0x59, 0x50, 0x1b, 0x01, 0x0b, 0x8c, 0xa5, + 0xd1, 0x1a, 0xfc, 0x9d, 0x80, 0xa6, 0xab, 0xbe, 0x48, 0x68, 0xb3, 0x23, 0xed, 0xfe, 0x0b, 0x4e, + 0xd5, 0x41, 0x41, 0x3a, 0xcd, 0x34, 0xaf, 0x1b, 0x78, 0x95, 0x53, 0xde, 0x65, 0x50, 0x93, 0x71, + 0x97, 0xa8, 0xf9, 0xa9, 0x68, 0x0b, 0xc4, 0x63, 0x15, 0x0a, 0x6a, 0x39, 0x6b, 0xa4, 0x37, 0x35, + 0xa5, 0x02, 0x95, 0x49, 0xee, 0x8b, 0x92, 0xe7, 0x0c, 0x6f, 0xef, 0x48, 0xec, 0xfb, 0x36, 0xde, + 0xbf, 0x53, 0xef, 0xdc, 0xed, 0xcc, 0xd6, 0x63, 0x81, 0xd3, 0x2f, 0x33, 0xd1, 0x0c, 0xb7, 0x51, + 0xee, 0x7d, 0x60, 0x5d, 0x3e, 0x36, 0x60, 0xc5, 0x8b, 0x00, 0x60, 0x9d, 0x0e, 0xef, 0xb6, 0xbb, + 0xee, 0xec, 0xad, 0x31, 0xe8, 0xce, 0x60, 0x2c, 0x1c, 0x07, 0xcc, 0x1c, 0x0b, 0x74, 0x65, 0x74, + 0x2c, 0xa3, 0xb2, 0x64, 0xb5, 0xa6, 0xa8, 0xa8, 0x4a, 0x4a, 0xb3, 0xb1, 0x23, 0x9c, 0xcf, 0xc8, + 0x06, 0x82, 0x3b, 0x33, 0xd0, 0xa4, 0x25, 0xbe, 0x48, 0x3a, 0xc3, 0x88, 0x8c, 0xdb, 0x67, 0x18, + 0x51, 0x47, 0x5c, 0x12, 0x30, 0xbf, 0x08, 0x27, 0x82, 0x59, 0x23, 0xb3, 0x54, 0x7e, 0xcd, 0x49, + 0x3d, 0x59, 0x22, 0x3f, 0x33, 0x77, 0x82, 0x5d, 0xa6, 0x02, 0x18, 0x6f, 0x19, 0x09, 0xc7, 0x6f, + 0x0e, 0x55, 0xf2, 0x9c, 0xa6, 0x3c, 0x83, 0x16, 0x48, 0xd6, 0x6f, 0x93, 0x45, 0x08, 0x9e, 0x96, + 0x16, 0x72, 0x4f, 0x65, 0xa1, 0x3c, 0xbe, 0xc7, 0x4f, 0x0e, 0x62, 0x7d, 0x28, 0x1b, 0xb3, 0x97, + 0xe9, 0xd0, 0x69, 0x05, 0xcf, 0x7b, 0x06, 0xd6, 0x05, 0x41, 0xb7, 0x03, 0x7d, 0xe4, 0xc7, 0x6c, + 0x23, 0xeb, 0x2d, 0x17, 0xe3, 0x03, 0xe4, 0xd5, 0x23, 0xb3, 0x40, 0xcb, 0xbb, 0xac, 0xf2, 0x55, + 0x34, 0xe5, 0x35, 0xf4, 0x8a, 0x64, 0x3b, 0x69, 0x1b, 0x70, 0x8c, 0x7c, 0x6d, 0x7e, 0x43, 0x88, + 0x20, 0x6e, 0x2b, 0xc4, 0xf5, 0x68, 0x22, 0xd5, 0x77, 0x62, 0x61, 0x0b, 0xa0, 0x6e, 0xe3, 0xb1, + 0x90, 0x2c, 0x15, 0x54, 0xc2, 0xa8, 0xc7, 0xf6, 0xea, 0xe7, 0xa8, 0xa8, 0xae, 0xbb, 0x99, 0x57, + 0xc5, 0xcd, 0x8d, 0x6c, 0xf4, 0x2d, 0xd8, 0xb8, 0x28, 0xbc, 0x00, 0xab, 0xe2, 0x8a, 0x54, 0x4b, + 0xff, 0xc2, 0x6e, 0x01, 0x4d, 0x29, 0xdb, 0xe0, 0xab, 0xd9, 0x88, 0xd3, 0xbe, 0x92, 0x38, 0x8d, + 0xe2, 0xeb, 0x28, 0xd7, 0x1f, 0x08, 0xf8, 0x42, 0x95, 0x55, 0x34, 0x0a, 0x11, 0x8e, 0x39, 0xc1, + 0x0a, 0xe5, 0x69, 0x20, 0xc2, 0x00, 0x6f, 0x59, 0x26, 0x46, 0x65, 0xf5, 0x25, 0xe5, 0x9a, 0xa2, + 0xa0, 0xd7, 0x25, 0xe7, 0xd0, 0xf2, 0xa3, 0x89, 0x2f, 0xa2, 0x89, 0xa3, 0x27, 0x03, 0xc1, 0x5a, + 0x1f, 0x31, 0x5c, 0xc2, 0x16, 0xe4, 0x6b, 0x6b, 0x88, 0x68, 0xfa, 0xaa, 0xc0, 0x46, 0x29, 0xbc, + 0x98, 0x89, 0x44, 0x7e, 0x84, 0x70, 0x43, 0x30, 0x10, 0xf6, 0xdd, 0xeb, 0xd7, 0xa8, 0xce, 0x12, + 0xd4, 0xc3, 0xa1, 0x1a, 0x73, 0x7e, 0x10, 0x8e, 0x5a, 0x05, 0x42, 0x2c, 0x49, 0x53, 0x9e, 0x26, + 0x77, 0xeb, 0x51, 0x18, 0x1c, 0x6f, 0x14, 0xde, 0x32, 0x98, 0xa6, 0x78, 0xa3, 0x6f, 0x73, 0xe2, + 0x40, 0x5f, 0x65, 0x15, 0xdc, 0xb2, 0x59, 0xd5, 0x68, 0x3c, 0xeb, 0xee, 0x42, 0xe0, 0x2e, 0xb4, + 0xd2, 0xce, 0xb3, 0xdc, 0x64, 0x90, 0x2a, 0x5e, 0x37, 0x4f, 0xfc, 0x12, 0x6b, 0x62, 0x97, 0xcd, + 0xa7, 0xbb, 0x45, 0xb2, 0x42, 0x63, 0x55, 0x97, 0x93, 0x20, 0xb9, 0x26, 0x20, 0x64, 0x8e, 0x2c, + 0x96, 0x19, 0xdc, 0x60, 0xc5, 0x27, 0xfe, 0x70, 0x04, 0x2f, 0x2d, 0x97, 0xa4, 0xeb, 0x27, 0x65, + 0xf2, 0x6c, 0x22, 0x0f, 0xe3, 0xc0, 0x81, 0x6a, 0x2e, 0x7b, 0x55, 0xda, 0x4a, 0x2c, 0x75, 0xbe, + 0x25, 0x58, 0xf8, 0xc3, 0xbd, 0x25, 0x04, 0x2a, 0x41, 0xf9, 0xef, 0x46, 0xd6, 0x2c, 0xb3, 0x9a, + 0x3c, 0x80, 0xcd, 0x02, 0xde, 0x73, 0x8b, 0xc9, 0x43, 0x81, 0x73, 0x1c, 0x17, 0xf3, 0x87, 0xc2, + 0xbf, 0xcb, 0x40, 0x53, 0x57, 0x07, 0xca, 0x82, 0xa1, 0xda, 0x60, 0x00, 0xbe, 0xf6, 0xf6, 0xdc, + 0x1e, 0xb1, 0xda, 0xf9, 0xa9, 0xcf, 0x6b, 0xca, 0xcf, 0xf9, 0x4f, 0x9d, 0x43, 0xec, 0x18, 0xd9, + 0x42, 0x31, 0xaa, 0x62, 0xf5, 0x38, 0x8a, 0x8a, 0x47, 0xe0, 0xbf, 0x3d, 0x44, 0x33, 0xfe, 0x67, + 0xe2, 0x25, 0xbd, 0xaf, 0x29, 0xbf, 0xa4, 0x19, 0xff, 0xab, 0xc8, 0x7a, 0xf0, 0x37, 0xc2, 0x6a, + 0x0c, 0x06, 0x53, 0x6b, 0x77, 0x5b, 0x67, 0x3c, 0xd6, 0x3e, 0x1c, 0x6d, 0x8b, 0xf7, 0x47, 0x0d, + 0x0e, 0x06, 0xc7, 0x95, 0x73, 0xf6, 0x56, 0x61, 0x60, 0x6a, 0x36, 0xe5, 0xb6, 0x4b, 0xf2, 0x6c, + 0x60, 0xa7, 0x49, 0xe7, 0xce, 0xbe, 0xd4, 0xb7, 0x5b, 0xf5, 0xd8, 0x29, 0x80, 0xa8, 0xc2, 0xab, + 0x19, 0x68, 0x9a, 0xb5, 0xd3, 0xfd, 0x71, 0xf7, 0xad, 0xf1, 0x5f, 0x1f, 0x77, 0xbb, 0x6d, 0x2b, + 0x1b, 0x88, 0x3e, 0xbd, 0x1a, 0x2b, 0x66, 0xc1, 0x28, 0x19, 0xae, 0x3c, 0x19, 0x93, 0x50, 0x20, + 0x60, 0xd6, 0x5a, 0xa9, 0x29, 0x8b, 0x51, 0xb9, 0xe4, 0xba, 0x1b, 0xf2, 0x6c, 0x1e, 0x0a, 0x6c, + 0x7b, 0xe8, 0xbc, 0x95, 0xff, 0x31, 0x03, 0x4d, 0x79, 0x00, 0xad, 0xe9, 0xa1, 0x75, 0x91, 0xa6, + 0x3c, 0x8f, 0x9e, 0x95, 0x9c, 0x7b, 0x24, 0xcf, 0xe1, 0x61, 0x35, 0xde, 0xdf, 0x61, 0x07, 0xd7, + 0xbf, 0xce, 0x40, 0xe2, 0x03, 0x60, 0xf5, 0x96, 0xbc, 0xa5, 0x29, 0x4b, 0x50, 0x85, 0xe4, 0xb2, + 0x17, 0x56, 0x10, 0x70, 0x6e, 0xa1, 0x13, 0x5a, 0x63, 0x59, 0x54, 0x42, 0xc1, 0x43, 0x6b, 0xa5, + 0x03, 0x5a, 0xe7, 0x8d, 0x01, 0x5a, 0xbf, 0x2f, 0x1d, 0xa7, 0x09, 0x59, 0xb9, 0x42, 0x7e, 0x2d, + 0x07, 0xb7, 0x97, 0x4d, 0xe3, 0x0e, 0xd8, 0xed, 0x63, 0x82, 0xa6, 0xbc, 0xc3, 0x8c, 0x3b, 0x56, + 0xf0, 0x0b, 0x86, 0x45, 0xce, 0xb5, 0x9a, 0x59, 0x2c, 0x20, 0x16, 0x19, 0x0b, 0xa8, 0x41, 0xc6, + 0x02, 0xa5, 0xbc, 0x7c, 0x1e, 0xb1, 0xc9, 0x58, 0xa0, 0x56, 0x2c, 0x5f, 0xb9, 0xa6, 0x82, 0xfe, + 0x2c, 0xfa, 0xbe, 0xb4, 0x34, 0xf4, 0x86, 0xd3, 0x50, 0xc3, 0x69, 0xd4, 0x31, 0x81, 0x1b, 0x44, + 0xcd, 0xb3, 0x8e, 0xc2, 0xac, 0x39, 0x54, 0x34, 0x81, 0x25, 0x8a, 0x66, 0xb1, 0x9e, 0x70, 0x10, + 0x37, 0xbe, 0x3c, 0xcd, 0xbd, 0x33, 0x5a, 0x40, 0x04, 0x22, 0xbe, 0xb1, 0xb8, 0x8c, 0xbf, 0xc7, + 0x59, 0xd4, 0xc7, 0xf3, 0x46, 0xee, 0x31, 0x7f, 0x81, 0x17, 0x99, 0xe6, 0x37, 0xd9, 0xd4, 0xb2, + 0x70, 0x9a, 0x69, 0x7e, 0x33, 0x9e, 0x8c, 0x14, 0x6d, 0xa1, 0x97, 0x9f, 0x79, 0x50, 0x94, 0x6a, + 0xca, 0xeb, 0xe8, 0x55, 0xc9, 0x79, 0xf8, 0xf2, 0x23, 0xe0, 0xca, 0x89, 0xc3, 0x8f, 0x54, 0xc1, + 0x00, 0xf8, 0xe6, 0x02, 0x0c, 0xf2, 0x94, 0xe3, 0x3f, 0x66, 0x20, 0x91, 0xef, 0x7f, 0x7f, 0x5c, + 0xc8, 0x5f, 0x58, 0x2e, 0xa4, 0x2b, 0xad, 0x46, 0xee, 0x21, 0x8e, 0x90, 0x03, 0xf7, 0xf0, 0x61, + 0xd8, 0x88, 0x44, 0x6b, 0x97, 0xbe, 0xe3, 0xa8, 0xae, 0xb5, 0xeb, 0x27, 0xce, 0xa5, 0x2e, 0x9c, + 0x24, 0xc7, 0x4c, 0xee, 0x65, 0xb5, 0xa6, 0x54, 0xa1, 0x15, 0x92, 0xcb, 0x96, 0xc8, 0x4f, 0xf3, + 0x62, 0x26, 0xa2, 0x69, 0xc6, 0x6b, 0x33, 0xcd, 0x4f, 0x30, 0x45, 0xe6, 0xbc, 0xa0, 0xaf, 0x01, + 0x8d, 0x07, 0x2b, 0x12, 0x0b, 0xd0, 0xb8, 0x70, 0x63, 0x4d, 0x8d, 0x2f, 0x4c, 0xee, 0xa5, 0x4a, + 0x7f, 0x8a, 0x33, 0x50, 0xce, 0x3a, 0xaf, 0xbf, 0x0e, 0xbb, 0x30, 0x18, 0x15, 0xe4, 0x57, 0xe1, + 0xbf, 0xcb, 0x40, 0xb3, 0x2c, 0x62, 0xaf, 0xe5, 0x58, 0xfd, 0x49, 0x6f, 0xfa, 0x2b, 0x4e, 0xd1, + 0x15, 0x36, 0x4e, 0xe5, 0xc0, 0x31, 0x8f, 0x45, 0x02, 0x20, 0xba, 0x59, 0x13, 0xfc, 0xde, 0x47, + 0x39, 0xa0, 0x4d, 0x25, 0x84, 0xef, 0x23, 0x69, 0xb8, 0x59, 0x98, 0x13, 0xc2, 0x17, 0x93, 0x1e, + 0x34, 0xc9, 0x2b, 0xa8, 0x65, 0x41, 0x45, 0x4b, 0x26, 0x20, 0x2d, 0xc4, 0x97, 0x1d, 0xfe, 0x7a, + 0x8f, 0xa6, 0x4b, 0x2a, 0x49, 0xc1, 0xdb, 0x14, 0x8e, 0xad, 0xd1, 0x94, 0x6a, 0xf4, 0xb6, 0x34, + 0xc2, 0xb7, 0xd3, 0x7b, 0x96, 0x6e, 0x1d, 0xb6, 0x64, 0xb3, 0xb0, 0xa8, 0xc2, 0xeb, 0x19, 0x68, + 0xb6, 0xeb, 0x98, 0xf7, 0x07, 0xf0, 0x5b, 0x8d, 0xce, 0x47, 0x39, 0x2f, 0x3e, 0x04, 0x22, 0xf3, + 0x9f, 0x4a, 0x0e, 0x9d, 0xb5, 0x9c, 0x16, 0xc0, 0xfe, 0x2f, 0x35, 0x65, 0x0d, 0x5a, 0x25, 0x8d, + 0xb4, 0x35, 0xf2, 0x13, 0x23, 0xef, 0x77, 0x3a, 0xb9, 0xeb, 0x69, 0x2c, 0x77, 0xad, 0x09, 0x86, + 0x70, 0x58, 0x45, 0x83, 0x71, 0xa7, 0xc0, 0xbb, 0x9a, 0x92, 0x2f, 0x02, 0x66, 0x02, 0xa7, 0xb9, + 0x5d, 0x65, 0x83, 0x0b, 0x9a, 0x4d, 0x89, 0x1a, 0x12, 0x1d, 0x3c, 0xd5, 0x77, 0x2a, 0xb1, 0xb5, + 0x85, 0x3e, 0x5a, 0xb9, 0x9a, 0x90, 0x9d, 0x2b, 0xe4, 0xa7, 0xc6, 0xd9, 0xe8, 0x69, 0xf7, 0x49, + 0xe5, 0x29, 0x10, 0xf8, 0xc8, 0x82, 0x12, 0xa1, 0x63, 0xa1, 0x2e, 0x60, 0x61, 0x14, 0xff, 0x92, + 0xbe, 0x8a, 0xc6, 0x11, 0x74, 0x49, 0x6e, 0xd7, 0xe3, 0x9a, 0xf2, 0x90, 0x44, 0xcb, 0xe4, 0x3c, + 0xeb, 0x3b, 0x8a, 0xc1, 0xf8, 0x13, 0x41, 0xa5, 0xf5, 0xe2, 0xdb, 0x68, 0x5c, 0x78, 0x43, 0xf0, + 0xe3, 0xaa, 0x8f, 0xa9, 0x67, 0x12, 0x36, 0x03, 0xa0, 0x65, 0x72, 0x11, 0xe9, 0xde, 0xb7, 0x2d, + 0x79, 0x6c, 0x0b, 0xe1, 0xec, 0xce, 0xed, 0x4d, 0x9e, 0x88, 0xcd, 0xa5, 0xaa, 0xcb, 0x0e, 0xf8, + 0x5d, 0xa4, 0xd2, 0x3e, 0xbc, 0x2c, 0x85, 0xc7, 0xfa, 0x1e, 0x12, 0x94, 0x8a, 0xac, 0x84, 0xe4, + 0x2c, 0x20, 0xdb, 0x05, 0x62, 0x37, 0xba, 0xaa, 0xc2, 0x7f, 0x9f, 0x81, 0x26, 0xb3, 0xee, 0xf7, + 0x07, 0xdc, 0xbf, 0x65, 0x11, 0x17, 0xb8, 0x43, 0x8a, 0xab, 0xc8, 0x8d, 0x90, 0x52, 0x3c, 0xac, + 0x13, 0xe7, 0x43, 0xfb, 0x16, 0xc8, 0x8f, 0x59, 0x36, 0x6d, 0x4c, 0xe8, 0x9d, 0x4a, 0xa7, 0x8e, + 0x09, 0x48, 0x24, 0xc3, 0xf1, 0x00, 0x7e, 0x6b, 0xd0, 0x43, 0x13, 0x3c, 0xbb, 0x8c, 0x2c, 0x3f, + 0x35, 0xd2, 0x71, 0x1b, 0xb7, 0x83, 0xe2, 0x40, 0x76, 0xe8, 0xc9, 0x0c, 0x34, 0xd5, 0x32, 0xd0, + 0xfd, 0x71, 0xf0, 0x2b, 0x2c, 0x08, 0xaf, 0xc0, 0xed, 0xe0, 0xb1, 0x58, 0x74, 0xac, 0x87, 0xef, + 0xd5, 0x94, 0x3f, 0x41, 0xef, 0x4b, 0x6e, 0x5b, 0x21, 0xcf, 0x4b, 0xb7, 0x8d, 0x37, 0x06, 0x0c, + 0xd1, 0x0c, 0x78, 0xf3, 0x49, 0xc8, 0xbd, 0xf7, 0x6c, 0x59, 0x0b, 0xb8, 0xd0, 0xa9, 0xd6, 0xac, + 0x05, 0x4f, 0xa4, 0xcb, 0x5a, 0x00, 0x16, 0xd3, 0xc4, 0x62, 0xc2, 0x9a, 0x6d, 0xe0, 0xe7, 0x10, + 0xdc, 0x1f, 0xa2, 0x79, 0xe3, 0xed, 0xc4, 0xc1, 0xfd, 0x49, 0xd8, 0x6b, 0x16, 0xdc, 0x1f, 0x02, + 0xf4, 0xcf, 0x47, 0x99, 0xf5, 0xbe, 0x7a, 0x12, 0x37, 0x1f, 0xe7, 0xa4, 0x32, 0x7e, 0x53, 0xac, + 0x0a, 0xc9, 0x10, 0x68, 0xfb, 0x7a, 0x5f, 0xbd, 0xb8, 0x08, 0xe2, 0xec, 0x67, 0xe1, 0xf6, 0x58, + 0x5f, 0x88, 0xe3, 0xec, 0x3f, 0x0c, 0xed, 0xf9, 0x38, 0xfb, 0x6c, 0x85, 0x10, 0x28, 0xbf, 0x70, + 0x60, 0x02, 0xca, 0xa5, 0xdb, 0x2b, 0xbe, 0x8b, 0x72, 0x0d, 0xfc, 0xba, 0xc2, 0x0c, 0xd0, 0xfd, + 0x9a, 0xa6, 0xbc, 0x2c, 0xb1, 0x42, 0x79, 0x01, 0xcf, 0x6d, 0x16, 0x7b, 0x40, 0x9d, 0xcf, 0xac, + 0x2f, 0x60, 0xb7, 0xf9, 0x26, 0x2a, 0xeb, 0x2a, 0x7e, 0x04, 0x63, 0x73, 0xe9, 0x20, 0xb0, 0x8a, + 0x83, 0x15, 0xca, 0xaf, 0x13, 0xd6, 0x84, 0x38, 0x29, 0x24, 0xf6, 0xf4, 0x25, 0xda, 0xb7, 0x80, + 0x41, 0x2d, 0x19, 0x52, 0x6b, 0xaf, 0x2c, 0x2f, 0x83, 0xbf, 0xe7, 0x96, 0xad, 0x59, 0xbe, 0xa0, + 0xb2, 0xbc, 0xac, 0xa8, 0x58, 0xef, 0xec, 0x23, 0xfb, 0xcd, 0x86, 0x12, 0x17, 0x41, 0xe2, 0x0a, + 0xc6, 0x49, 0x60, 0x90, 0x23, 0x45, 0xf2, 0x54, 0x02, 0x6b, 0xb1, 0xdd, 0xf4, 0x7c, 0x2a, 0xcb, + 0x55, 0x52, 0x29, 0xbe, 0x64, 0xe2, 0x01, 0xce, 0x1b, 0x87, 0xe1, 0x81, 0x29, 0x3c, 0x1e, 0x88, + 0xf7, 0x0f, 0x54, 0x56, 0x99, 0x2f, 0xc8, 0x62, 0x9e, 0xc0, 0xcb, 0xa6, 0xf6, 0x3f, 0x4f, 0xf2, + 0x04, 0x5e, 0x81, 0x8d, 0xd3, 0x28, 0x73, 0xe3, 0x34, 0x9e, 0x41, 0x99, 0x6b, 0xaa, 0xca, 0x88, + 0xef, 0x0d, 0x9e, 0xde, 0xf8, 0xcd, 0xe2, 0x4f, 0xd3, 0xbe, 0x6b, 0xaa, 0xca, 0x3c, 0x95, 0xe5, + 0xaa, 0x51, 0x27, 0xbe, 0xc7, 0x5c, 0x88, 0xc6, 0x99, 0x82, 0x75, 0xea, 0x42, 0xf4, 0x02, 0xdf, + 0x11, 0xc2, 0xb1, 0x98, 0x66, 0xa3, 0x97, 0xaf, 0xe8, 0x97, 0x8c, 0xeb, 0x92, 0xb8, 0x74, 0x4e, + 0xef, 0x39, 0x6f, 0xc0, 0xc7, 0x8e, 0x63, 0xfa, 0xa5, 0x23, 0xc9, 0xde, 0x36, 0xe6, 0x66, 0xb4, + 0x12, 0xe5, 0xd6, 0xfa, 0x36, 0xf9, 0x8d, 0x6d, 0x22, 0x7e, 0x38, 0x38, 0xf4, 0x3a, 0x2b, 0x94, + 0x9f, 0x28, 0x53, 0x3c, 0x74, 0x2b, 0x53, 0x67, 0xbf, 0xd3, 0x4f, 0x6c, 0xaf, 0x2c, 0xd7, 0x3b, + 0x2f, 0xe1, 0x78, 0x35, 0xe6, 0x6d, 0x60, 0xed, 0xc5, 0x0b, 0x26, 0xa3, 0x0a, 0xbe, 0x37, 0x87, + 0x04, 0x4d, 0xd9, 0x2f, 0x30, 0x4e, 0xb5, 0x5d, 0xe0, 0x99, 0x54, 0x12, 0x6a, 0xc6, 0xca, 0x68, + 0x7a, 0xe2, 0xfd, 0x3b, 0x12, 0x47, 0x2e, 0xc6, 0xfb, 0x7b, 0x4d, 0x7f, 0x04, 0x0f, 0x98, 0xba, + 0xc6, 0xfb, 0x7b, 0x8b, 0x3d, 0xe0, 0x2f, 0x60, 0x14, 0x12, 0x27, 0x61, 0xa3, 0x90, 0x63, 0x44, + 0x49, 0x7f, 0xe0, 0x2d, 0x68, 0x73, 0xae, 0x72, 0x27, 0xab, 0x2c, 0x62, 0x3c, 0xea, 0x01, 0x01, + 0xe5, 0xb1, 0x74, 0x1f, 0x10, 0xde, 0x13, 0xa5, 0x67, 0x6c, 0xa0, 0x05, 0x18, 0x9d, 0xd9, 0xba, + 0x51, 0x48, 0xe7, 0xdd, 0x03, 0x98, 0x1d, 0x5e, 0xe2, 0x40, 0x1f, 0x20, 0x97, 0x6b, 0xd1, 0x2d, + 0x7c, 0xaa, 0x85, 0x25, 0x55, 0xab, 0x93, 0xbd, 0x6d, 0xe4, 0xce, 0xdb, 0x06, 0x14, 0xdb, 0x05, + 0x94, 0xfb, 0x69, 0x30, 0x00, 0xce, 0xb7, 0x13, 0xdc, 0xf1, 0xef, 0xbb, 0xa4, 0x1e, 0x1c, 0x4d, + 0x59, 0x73, 0x79, 0x09, 0x93, 0xb6, 0x25, 0xf7, 0x9c, 0xd1, 0xdb, 0x63, 0x26, 0xa6, 0xc0, 0x91, + 0xcd, 0x8c, 0x76, 0xc6, 0xfd, 0xbd, 0x3e, 0xd8, 0x8e, 0xbb, 0x94, 0xcf, 0xf5, 0x36, 0xcc, 0x0b, + 0x6f, 0xf0, 0x05, 0x3e, 0xdd, 0xe0, 0x0b, 0xcc, 0x7b, 0xce, 0xb3, 0xc0, 0xf3, 0xec, 0x8b, 0x0b, + 0x17, 0x2e, 0x7c, 0xae, 0x48, 0x65, 0x43, 0x8a, 0x2d, 0x02, 0xca, 0xc6, 0x0c, 0x39, 0xf6, 0xed, + 0x71, 0x09, 0x36, 0xc4, 0xa2, 0x76, 0xc3, 0xfe, 0x40, 0x63, 0xf9, 0x4d, 0x1b, 0x84, 0xb3, 0x56, + 0x9e, 0xca, 0x72, 0x2b, 0x30, 0xcd, 0x8d, 0x0f, 0xb4, 0x94, 0x29, 0x64, 0xe1, 0x43, 0x1a, 0x8e, + 0xff, 0xb8, 0x8b, 0xf1, 0xfe, 0x45, 0x2a, 0x0c, 0x28, 0x36, 0x13, 0xc3, 0xe5, 0x55, 0xbe, 0xfa, + 0x86, 0x3a, 0x6f, 0xc4, 0x87, 0xa3, 0xc5, 0x4d, 0x90, 0x1f, 0x76, 0x5b, 0x0e, 0x6d, 0x53, 0x6a, + 0xb0, 0xeb, 0x92, 0xa5, 0x1b, 0xc3, 0x7a, 0x54, 0xf7, 0x4a, 0xd6, 0x89, 0xdd, 0xfe, 0xb8, 0xb8, + 0x4d, 0x1c, 0xe6, 0xe7, 0xbb, 0x53, 0x8a, 0x9d, 0xa1, 0x59, 0xf9, 0x4d, 0xe2, 0x9c, 0xe4, 0x78, + 0xbd, 0xec, 0xd6, 0x98, 0x7d, 0x97, 0x13, 0xbb, 0x4e, 0xea, 0x6d, 0x1d, 0xc9, 0xaf, 0xfb, 0x12, + 0xad, 0xfb, 0xf4, 0x13, 0xfb, 0x86, 0xb7, 0x9e, 0x81, 0x94, 0x24, 0xa0, 0x1a, 0x2b, 0xfc, 0x17, + 0x02, 0x9a, 0xb6, 0xcc, 0x1f, 0x8e, 0x58, 0xec, 0x4e, 0x55, 0xdf, 0xaf, 0xc5, 0x10, 0x9a, 0x68, + 0x90, 0xa1, 0x6b, 0xa8, 0xd9, 0xab, 0x60, 0x2a, 0x95, 0x2d, 0x15, 0xf2, 0xcb, 0x40, 0xb6, 0x6e, + 0x22, 0x5b, 0xc2, 0xac, 0x6e, 0x37, 0x04, 0xc3, 0x11, 0xde, 0x70, 0x8c, 0xd0, 0xb9, 0x7a, 0xcb, + 0x99, 0xe1, 0xad, 0x67, 0x28, 0xa9, 0x6b, 0x19, 0x8a, 0x86, 0x4f, 0x75, 0x5d, 0x90, 0x5c, 0x00, + 0x2f, 0x36, 0x6f, 0x3c, 0x0b, 0x6c, 0x41, 0xe1, 0x3f, 0x64, 0xa2, 0xe9, 0x2e, 0x5d, 0xee, 0x7d, + 0xfd, 0xb2, 0x95, 0xd2, 0x4d, 0xab, 0x5f, 0x86, 0xac, 0x83, 0x98, 0xde, 0x11, 0x79, 0xb5, 0x32, + 0x11, 0xd6, 0x82, 0x72, 0x39, 0x2a, 0xa4, 0x53, 0xfb, 0xce, 0x19, 0x59, 0xed, 0x4b, 0xcc, 0x95, + 0xed, 0x4a, 0xdf, 0xc7, 0x78, 0xa5, 0x2f, 0x18, 0xd5, 0x8d, 0x31, 0x39, 0x99, 0xfb, 0x59, 0xc8, + 0x73, 0xd2, 0x9d, 0xdf, 0x28, 0xda, 0xe0, 0xbf, 0xc9, 0x82, 0xd3, 0xad, 0x22, 0x99, 0x33, 0x4d, + 0x10, 0x7d, 0x95, 0xf7, 0x34, 0x15, 0x4c, 0xa9, 0x83, 0xbb, 0xa7, 0x69, 0x56, 0x28, 0xa3, 0xa0, + 0x96, 0x77, 0x34, 0x7d, 0x8d, 0xbd, 0x79, 0x70, 0xd6, 0x4f, 0x8d, 0x1a, 0xc7, 0x15, 0x86, 0xa0, + 0xcf, 0xda, 0x5d, 0x49, 0xa0, 0xbf, 0x4b, 0xe0, 0x24, 0x2d, 0x40, 0x60, 0x60, 0x67, 0x16, 0x53, + 0xd2, 0x52, 0xc3, 0x0c, 0x91, 0xe6, 0xc6, 0x07, 0x8f, 0xe9, 0x9d, 0x4d, 0x89, 0xfd, 0x17, 0x81, + 0x4a, 0x4e, 0xf5, 0x9d, 0x24, 0x61, 0xca, 0xb0, 0x1d, 0x9c, 0x99, 0xde, 0x14, 0x1f, 0x27, 0xc1, + 0x43, 0xd8, 0x06, 0xef, 0x18, 0x44, 0x05, 0x80, 0x6e, 0xfc, 0x59, 0x41, 0xa3, 0x22, 0x2e, 0x26, + 0x41, 0x08, 0x65, 0xaf, 0xf5, 0x7f, 0x5a, 0x59, 0x4b, 0x08, 0x16, 0xd0, 0x4b, 0xe0, 0x12, 0xb9, + 0x8a, 0xd8, 0x62, 0x32, 0x8b, 0x13, 0xe2, 0xaf, 0xcb, 0x3f, 0x55, 0xf1, 0xfe, 0x58, 0x3c, 0xb6, + 0x8d, 0x44, 0xf4, 0xa7, 0x46, 0x9e, 0xa9, 0xbe, 0x93, 0xc4, 0x75, 0xb5, 0xbb, 0xd9, 0x92, 0x84, + 0x1c, 0x06, 0xa6, 0x02, 0x51, 0x77, 0xb0, 0x90, 0x9f, 0x20, 0x66, 0x2b, 0x38, 0x69, 0x2b, 0x2c, + 0x21, 0xde, 0xbf, 0xd3, 0x34, 0x9c, 0x00, 0xa4, 0xb1, 0x3d, 0x07, 0xcd, 0x70, 0xeb, 0xff, 0xd3, + 0xc2, 0x1a, 0x83, 0x02, 0xca, 0x27, 0xfd, 0x4d, 0x7f, 0x93, 0x1c, 0x3c, 0xf0, 0x2b, 0xf6, 0x81, + 0xdd, 0x77, 0x8b, 0xce, 0x67, 0x73, 0x3e, 0x51, 0x35, 0x65, 0xa5, 0xe4, 0x18, 0x5a, 0x7e, 0x99, + 0x37, 0x5e, 0xb1, 0x78, 0x62, 0x90, 0xa6, 0xf8, 0x5b, 0x9b, 0xe3, 0x97, 0x77, 0x82, 0x93, 0x2b, + 0x48, 0x6d, 0xe0, 0x40, 0x55, 0xc7, 0x70, 0x62, 0x93, 0x0b, 0xd2, 0xcb, 0x1d, 0xa3, 0xad, 0xcb, + 0xed, 0x42, 0x7b, 0xb3, 0xfe, 0x04, 0x4d, 0x77, 0xdd, 0x03, 0x17, 0xe3, 0x83, 0x05, 0x56, 0xe3, + 0x83, 0x87, 0x5c, 0x2d, 0x80, 0x30, 0x9f, 0xca, 0xd9, 0x1e, 0xfc, 0x89, 0xa6, 0xbc, 0x87, 0x7e, + 0x29, 0xa5, 0x81, 0x56, 0xf9, 0x69, 0xc0, 0xab, 0x36, 0x70, 0xbf, 0x01, 0x04, 0x7b, 0x60, 0x0a, + 0xca, 0xc3, 0x28, 0xdb, 0xc4, 0xac, 0x4b, 0xdc, 0x22, 0x21, 0x3c, 0x39, 0x5a, 0x6c, 0x6f, 0x40, + 0x8f, 0x96, 0x80, 0x08, 0x77, 0x05, 0x47, 0xbe, 0x66, 0x8b, 0x87, 0x70, 0xa3, 0x88, 0x5d, 0xb5, + 0x86, 0x45, 0x78, 0xe5, 0x26, 0xc3, 0x22, 0xc0, 0xb2, 0x48, 0x54, 0x84, 0x57, 0x9d, 0x51, 0x11, + 0x6e, 0xe4, 0xad, 0x2a, 0x77, 0x09, 0x8a, 0xf0, 0xc4, 0x28, 0x41, 0x11, 0x60, 0x90, 0x1f, 0x26, + 0x26, 0x42, 0xc4, 0x17, 0x8e, 0xdc, 0xb1, 0x98, 0x08, 0x2b, 0x9d, 0x31, 0x11, 0x72, 0x1f, 0xc4, + 0x3d, 0xb8, 0x17, 0xe2, 0x1e, 0xfc, 0x6b, 0x93, 0x11, 0x87, 0x38, 0xda, 0x67, 0xef, 0x64, 0x38, + 0x80, 0xd2, 0xd0, 0x1b, 0x23, 0x87, 0x03, 0xc8, 0x81, 0x41, 0xc6, 0x12, 0x0d, 0xe0, 0x65, 0x94, + 0x13, 0x5c, 0xb7, 0x2e, 0xec, 0x8b, 0xe0, 0xd8, 0x08, 0x93, 0x40, 0x7a, 0x4b, 0x8a, 0xe4, 0xc9, + 0x84, 0x74, 0xdd, 0xd2, 0x99, 0x3c, 0x3d, 0x80, 0x73, 0xe5, 0x65, 0x49, 0x19, 0x73, 0x7f, 0xa6, + 0x92, 0x7a, 0xf1, 0x15, 0x94, 0x5d, 0xe7, 0xaf, 0xf7, 0x47, 0x70, 0x4c, 0x04, 0x2c, 0x3e, 0x9b, + 0x2d, 0x41, 0x09, 0xb3, 0x7b, 0xc4, 0x61, 0xf5, 0x68, 0xa6, 0xbd, 0x6c, 0x29, 0xb3, 0x20, 0x35, + 0x4e, 0x85, 0x26, 0x56, 0x92, 0x2e, 0xff, 0x1e, 0x20, 0xe9, 0x2a, 0x38, 0xf7, 0xf9, 0x29, 0x78, + 0x3d, 0x45, 0x9a, 0xf2, 0x28, 0xe7, 0x3e, 0x3f, 0x95, 0xe4, 0x2a, 0x49, 0x5d, 0xd9, 0x9e, 0x18, + 0x20, 0x31, 0x7c, 0x28, 0xbe, 0x31, 0xdd, 0xe5, 0xef, 0x56, 0x40, 0x6a, 0xaf, 0xd3, 0x67, 0x73, + 0xaa, 0xa9, 0x90, 0xb9, 0x2d, 0x7e, 0x99, 0x16, 0x2f, 0x82, 0x69, 0x63, 0xf7, 0x22, 0x68, 0x13, + 0x50, 0xa6, 0xb7, 0xae, 0x0e, 0x07, 0x8c, 0xce, 0x2d, 0xfd, 0x58, 0x53, 0x22, 0x92, 0xf1, 0x5b, + 0xae, 0x27, 0x3e, 0x53, 0x84, 0x72, 0xc5, 0x4e, 0x51, 0x36, 0x1b, 0xe2, 0x62, 0xbd, 0xbd, 0x25, + 0xb1, 0xf3, 0x9b, 0xd4, 0xe7, 0x5f, 0xa7, 0x86, 0xfa, 0x6c, 0x31, 0xa5, 0x5e, 0xf6, 0xe0, 0x75, + 0xb2, 0x01, 0x86, 0x0f, 0x1f, 0x21, 0x10, 0x0e, 0x77, 0xcd, 0x6e, 0x8e, 0x6c, 0xcc, 0x59, 0x72, + 0x5c, 0xd0, 0x94, 0xc3, 0x02, 0xea, 0x16, 0x24, 0xdb, 0xeb, 0x2f, 0x6f, 0x17, 0xf4, 0xd6, 0x2f, + 0xb1, 0xe3, 0xd4, 0xf1, 0xf8, 0xc0, 0x45, 0xfe, 0x90, 0x09, 0x3d, 0x41, 0x3d, 0x7b, 0x08, 0xe5, + 0x81, 0x9b, 0xc5, 0xfb, 0x63, 0x4a, 0xa0, 0x56, 0x6f, 0x39, 0x9f, 0x3c, 0x3f, 0x60, 0xc6, 0xa1, + 0x3a, 0xda, 0x35, 0x7c, 0xfc, 0x32, 0xdf, 0x0c, 0xa7, 0xde, 0x8d, 0x41, 0xfc, 0x3a, 0xbd, 0xf5, + 0xa0, 0x7e, 0x65, 0x28, 0xb9, 0xf7, 0x24, 0x09, 0x70, 0xb7, 0xe7, 0x4c, 0xa2, 0xf7, 0x04, 0x3f, + 0x69, 0xe1, 0x3f, 0x66, 0xa3, 0xc9, 0x96, 0xc5, 0xfd, 0xb4, 0xa8, 0xf3, 0x3f, 0xa6, 0xa7, 0xce, + 0x9f, 0x77, 0xa3, 0xce, 0xef, 0x15, 0xb2, 0x3c, 0x9a, 0x96, 0x2c, 0xbf, 0x53, 0xb2, 0x88, 0x1f, + 0x9c, 0x28, 0x27, 0x0e, 0x3d, 0x76, 0xe8, 0xa4, 0x52, 0xaa, 0x1b, 0x20, 0xbf, 0xf7, 0x67, 0x72, + 0xbe, 0xfe, 0x62, 0x8b, 0x80, 0x50, 0x8d, 0x37, 0x00, 0x01, 0xd3, 0x6a, 0x89, 0xd4, 0x0d, 0x92, + 0x0b, 0x9b, 0xc5, 0xf2, 0x2a, 0x7e, 0x7c, 0x73, 0x2b, 0x20, 0x3b, 0xde, 0xd6, 0x21, 0xfd, 0xc4, + 0x51, 0xc0, 0x10, 0x73, 0x69, 0x38, 0x16, 0x92, 0x72, 0x32, 0x10, 0xac, 0xf5, 0x99, 0xbe, 0xf6, + 0x6d, 0x1d, 0x7a, 0xcb, 0x96, 0xd4, 0xd9, 0x7e, 0x68, 0x5b, 0xa4, 0x72, 0x33, 0x38, 0xec, 0xed, + 0x33, 0x7e, 0x20, 0x7b, 0x7b, 0xf1, 0x80, 0x80, 0xc6, 0x7b, 0x1b, 0x23, 0xc1, 0xea, 0x1a, 0x2f, + 0x49, 0x9d, 0x9a, 0x5b, 0xfa, 0xa9, 0xa6, 0x7c, 0x2c, 0x99, 0xa5, 0x34, 0x97, 0x13, 0x71, 0x7c, + 0xc5, 0x6a, 0x1d, 0x3e, 0x29, 0x6e, 0xb1, 0x47, 0xef, 0x39, 0x63, 0x70, 0x0d, 0x8e, 0x1a, 0x63, + 0x25, 0x6d, 0x1d, 0x06, 0x73, 0xd1, 0xbf, 0x93, 0x2a, 0x9b, 0x60, 0x51, 0x64, 0x44, 0x47, 0x0f, + 0xd5, 0x9c, 0xb6, 0xf0, 0x84, 0x80, 0xf2, 0xac, 0xf0, 0x29, 0xbe, 0x8e, 0xb2, 0x1b, 0x7c, 0xa1, + 0x7a, 0x6a, 0xc6, 0x50, 0x34, 0x32, 0x38, 0xcf, 0xaf, 0x32, 0xda, 0x62, 0xb8, 0x53, 0xa1, 0xdf, + 0xac, 0xb7, 0x11, 0x32, 0x0b, 0x5d, 0x80, 0x71, 0x9e, 0x15, 0x18, 0xd3, 0x85, 0x3c, 0xe7, 0x40, + 0xb1, 0xf0, 0x3d, 0x94, 0x6f, 0x67, 0x6e, 0xc5, 0x25, 0xe6, 0x3a, 0x47, 0x8c, 0x9c, 0x8e, 0x5f, + 0x2d, 0x68, 0x2a, 0x4f, 0xe4, 0x89, 0x06, 0xb2, 0xde, 0xc2, 0x5d, 0xe3, 0xd0, 0x43, 0x06, 0x8c, + 0x63, 0x9b, 0xf7, 0x4a, 0x4e, 0x1e, 0x4b, 0x4c, 0x65, 0x1d, 0x26, 0x49, 0x8f, 0xa5, 0x77, 0x67, + 0xa2, 0x6e, 0x71, 0xdc, 0x83, 0x78, 0xab, 0x32, 0x38, 0xc6, 0xaa, 0x65, 0xde, 0x3e, 0x56, 0x6d, + 0x99, 0xd5, 0x94, 0x30, 0x8b, 0xda, 0xc4, 0x7b, 0xac, 0xa6, 0x84, 0x53, 0xe0, 0x4a, 0xad, 0x30, + 0x8b, 0x18, 0x07, 0xcc, 0x1b, 0x11, 0x2e, 0xb6, 0xa9, 0x84, 0x81, 0xa7, 0xc4, 0x31, 0x78, 0xac, + 0x2a, 0xe1, 0xc9, 0xa0, 0xb5, 0x61, 0xca, 0x60, 0x9b, 0xf6, 0xb7, 0xc9, 0x24, 0xb5, 0x81, 0x7d, + 0xfc, 0x48, 0x53, 0xd6, 0x33, 0x4a, 0xfb, 0x03, 0x5e, 0xe1, 0x75, 0xc3, 0x94, 0x76, 0xe5, 0x28, + 0xa4, 0xb6, 0x0b, 0x95, 0x3c, 0xee, 0x16, 0xa8, 0xe4, 0xdc, 0xb1, 0x53, 0xc9, 0xad, 0x4f, 0x53, + 0x2a, 0x99, 0x33, 0xaf, 0x19, 0x7f, 0x9b, 0xcc, 0x6b, 0xfe, 0x20, 0x68, 0xca, 0x59, 0x01, 0x7d, + 0x2d, 0x48, 0xe9, 0x41, 0x1c, 0xc7, 0xf3, 0x72, 0x27, 0x86, 0xc8, 0x8c, 0x77, 0x98, 0x24, 0xfa, + 0xdb, 0x4c, 0x34, 0xcb, 0x6d, 0xb5, 0xf7, 0x9b, 0x89, 0x47, 0xa6, 0x9b, 0xe3, 0x3a, 0xf9, 0x1a, + 0x6c, 0xe2, 0xe3, 0xa4, 0x90, 0xf8, 0x0d, 0x27, 0x14, 0x52, 0xfd, 0xcd, 0xfb, 0x2a, 0xe3, 0x2b, + 0xe8, 0x20, 0x35, 0xac, 0x48, 0xd0, 0xae, 0xe1, 0x20, 0x8a, 0xb8, 0x11, 0x0e, 0x80, 0xaa, 0x39, + 0x5c, 0x40, 0x64, 0x64, 0x32, 0x20, 0x3e, 0x15, 0x4d, 0xe0, 0x3e, 0x9f, 0xb3, 0x40, 0x10, 0x6e, + 0xde, 0x02, 0x21, 0xe3, 0x06, 0x2d, 0x10, 0xec, 0xf6, 0x2b, 0x99, 0x3f, 0x80, 0xfd, 0x4a, 0xd6, + 0x8d, 0xd8, 0xaf, 0x64, 0xdf, 0xa0, 0xfd, 0x4a, 0xce, 0x0d, 0xdb, 0xaf, 0x88, 0x9d, 0x26, 0x62, + 0x05, 0xb9, 0x1a, 0x66, 0xcb, 0x28, 0x62, 0xfd, 0xc8, 0x69, 0x49, 0x70, 0x7d, 0xb0, 0x15, 0x42, + 0x0b, 0xf0, 0x74, 0x83, 0x7e, 0xb6, 0x3b, 0x7e, 0xd9, 0xe0, 0xd9, 0xae, 0x0f, 0xb6, 0x99, 0x88, + 0x96, 0xb3, 0x23, 0x28, 0xf6, 0x50, 0x3c, 0x5c, 0xec, 0x31, 0x30, 0x6e, 0x45, 0x79, 0xb1, 0xc7, + 0x26, 0x96, 0xa0, 0x58, 0x56, 0x41, 0x39, 0xa0, 0x29, 0x27, 0x12, 0x3a, 0x08, 0x2b, 0x6c, 0x14, + 0xc9, 0x73, 0x6c, 0xba, 0x76, 0xfb, 0x8e, 0x93, 0x8e, 0xe2, 0x6f, 0xad, 0x6f, 0x18, 0x48, 0xe3, + 0xde, 0xd5, 0x94, 0x5f, 0x58, 0xdf, 0xb0, 0xdb, 0xa7, 0x30, 0xb7, 0xbd, 0x79, 0x1c, 0x59, 0x80, + 0x6e, 0xd9, 0x90, 0x65, 0xc2, 0x4d, 0x19, 0xb2, 0x4c, 0xbc, 0xfd, 0x86, 0x2c, 0x2b, 0x50, 0x4e, + 0x83, 0x37, 0x1c, 0xfe, 0xb8, 0x96, 0x48, 0xbb, 0x70, 0xac, 0x2f, 0x52, 0x24, 0x17, 0xd1, 0x58, + 0xe9, 0x87, 0xf5, 0xd3, 0x3b, 0xf5, 0xf6, 0x7d, 0xf0, 0x14, 0xd1, 0x2c, 0xa3, 0x10, 0xbd, 0x31, + 0x75, 0xfa, 0x0b, 0xbd, 0x6f, 0x9b, 0x4a, 0xba, 0x88, 0x1f, 0x20, 0x7c, 0xaa, 0x44, 0xe4, 0x54, + 0xa9, 0x29, 0x8b, 0x25, 0x72, 0x80, 0xf2, 0x2b, 0xb6, 0x83, 0x06, 0x59, 0x38, 0x77, 0x20, 0x2f, + 0x7b, 0xcc, 0xd0, 0x91, 0x58, 0x99, 0x06, 0xb4, 0x77, 0x3c, 0xb6, 0xab, 0x4c, 0x51, 0xf1, 0xb0, + 0xa2, 0xc2, 0xd9, 0xdd, 0x4c, 0xa6, 0x22, 0xfc, 0x42, 0xce, 0xee, 0x66, 0x86, 0xbb, 0xdd, 0x0d, + 0x67, 0x69, 0xf3, 0x2b, 0x16, 0xd7, 0x34, 0x1f, 0x63, 0xec, 0xa7, 0x47, 0xc0, 0xd8, 0x96, 0x90, + 0xa6, 0x10, 0x83, 0x98, 0x84, 0x34, 0x25, 0xb7, 0x36, 0x71, 0x6c, 0x7b, 0xb2, 0xf7, 0x3b, 0x6a, + 0x39, 0x4e, 0xa2, 0x92, 0xbe, 0x89, 0x72, 0x22, 0x5e, 0x7f, 0x20, 0x42, 0x43, 0x70, 0x4e, 0x77, + 0x3a, 0xf2, 0xfb, 0x03, 0x11, 0xf2, 0xb6, 0x40, 0x4b, 0x79, 0xa2, 0xc5, 0xd8, 0x8f, 0x94, 0x8a, + 0xbf, 0x47, 0x93, 0x1a, 0x03, 0xd5, 0x35, 0x1b, 0x7c, 0xb5, 0x8d, 0x75, 0xde, 0xb5, 0x75, 0x3e, + 0x2c, 0x6e, 0x9a, 0x54, 0xfa, 0x8e, 0xa6, 0xac, 0x96, 0xac, 0x35, 0x72, 0x39, 0xef, 0x69, 0xc3, + 0xc4, 0xaf, 0x7a, 0x74, 0x70, 0x21, 0x48, 0x67, 0xf5, 0xce, 0xa6, 0x78, 0xff, 0x2e, 0x68, 0x74, + 0x7d, 0xb0, 0xfd, 0x19, 0x2a, 0xd1, 0xed, 0xe0, 0x2b, 0x54, 0xeb, 0xa0, 0x62, 0x39, 0x67, 0xfb, + 0x36, 0xd5, 0x04, 0x7a, 0xd3, 0xf6, 0xed, 0x21, 0x8b, 0xed, 0xdb, 0xc6, 0x45, 0x61, 0x8f, 0x51, + 0x15, 0xf0, 0xd6, 0xfb, 0x38, 0x2b, 0xb7, 0xa5, 0x28, 0xdb, 0xbb, 0xde, 0x17, 0x88, 0x60, 0xb1, + 0xd2, 0x24, 0xc8, 0x26, 0x0c, 0x25, 0x94, 0xc6, 0x51, 0x8c, 0x1f, 0x1e, 0xb6, 0xf6, 0x67, 0xf4, + 0x9e, 0x33, 0xc9, 0xd8, 0x95, 0xeb, 0x83, 0xed, 0x0b, 0x8d, 0x05, 0xe2, 0x1f, 0x2a, 0xf4, 0x10, + 0x0b, 0x51, 0xa6, 0xbf, 0xb6, 0x86, 0xe4, 0x27, 0xcb, 0xd7, 0x94, 0x49, 0x92, 0xf1, 0x5b, 0xce, + 0x49, 0xf4, 0xc4, 0x12, 0xad, 0x57, 0x54, 0xe3, 0x87, 0xf8, 0x24, 0xca, 0x0a, 0x79, 0x6b, 0x36, + 0x92, 0xbc, 0x63, 0x53, 0x34, 0x25, 0x4f, 0xc2, 0x05, 0xd0, 0xea, 0xc8, 0x45, 0x15, 0xff, 0x12, + 0x4b, 0xd0, 0x04, 0x80, 0x8a, 0xb2, 0x3a, 0x6f, 0x18, 0x82, 0x2d, 0x12, 0xa1, 0x17, 0x5f, 0x8e, + 0x3b, 0xe9, 0x47, 0x76, 0xaa, 0x7c, 0xa1, 0xf8, 0x1a, 0x1a, 0x4f, 0x5e, 0x98, 0x4d, 0x2f, 0xe0, + 0xb0, 0x86, 0xe4, 0x39, 0x33, 0x4b, 0xe5, 0x7c, 0xf8, 0x36, 0x7f, 0xc3, 0xa6, 0x17, 0x0c, 0x4a, + 0xff, 0x70, 0x54, 0x35, 0x2b, 0xc5, 0x4a, 0x34, 0x89, 0xa1, 0x17, 0xbc, 0xbd, 0x0f, 0x51, 0x0b, + 0x5b, 0x8f, 0x64, 0xad, 0xa1, 0xaf, 0x49, 0xe2, 0xdc, 0x31, 0x62, 0x3f, 0x68, 0xad, 0x17, 0x5f, + 0x42, 0xe3, 0xd7, 0x6e, 0x2c, 0x23, 0x09, 0x9b, 0x67, 0xe1, 0x2d, 0x9e, 0xad, 0x29, 0x05, 0x92, + 0x59, 0x2a, 0x4f, 0x60, 0x49, 0xc7, 0x0c, 0x6c, 0xc4, 0xca, 0xc5, 0x08, 0x9a, 0xc0, 0xd3, 0x19, + 0xb3, 0xd3, 0x78, 0x33, 0x73, 0x17, 0x82, 0x23, 0x1d, 0xe0, 0x56, 0x40, 0x70, 0x36, 0x9e, 0xde, + 0xa0, 0x57, 0xe3, 0xfc, 0x99, 0xd4, 0xe9, 0x2f, 0x08, 0x40, 0xf3, 0x0d, 0xc4, 0xc5, 0x60, 0x98, + 0x85, 0x3f, 0xfb, 0x61, 0xd3, 0x3d, 0x97, 0x15, 0xca, 0xb3, 0x2d, 0x16, 0x8e, 0x14, 0x5f, 0x50, + 0xeb, 0x49, 0xda, 0x4c, 0xfc, 0xc8, 0xb8, 0x67, 0xe1, 0x8d, 0x2c, 0x72, 0x1e, 0x96, 0x04, 0x91, + 0x22, 0xb9, 0xc2, 0x86, 0x51, 0x13, 0x6d, 0x5f, 0xea, 0x67, 0x2f, 0x57, 0x56, 0x15, 0x33, 0x3d, + 0xfd, 0xb0, 0xd6, 0xaa, 0xf7, 0x5d, 0x86, 0x2c, 0x21, 0x64, 0x2a, 0x4c, 0x4e, 0x93, 0xb4, 0x15, + 0xd8, 0x04, 0x49, 0x25, 0xc3, 0x19, 0x64, 0x04, 0xb8, 0xb4, 0xa8, 0x3e, 0x6f, 0x38, 0x18, 0xc0, + 0x21, 0xf3, 0x28, 0x19, 0xc1, 0x57, 0xc8, 0x4f, 0xc4, 0xfb, 0x77, 0x80, 0xad, 0x1c, 0xb5, 0xc4, + 0xde, 0x9e, 0x3c, 0xb3, 0x33, 0xde, 0xdf, 0x0b, 0xa6, 0x73, 0xfa, 0xae, 0xa3, 0xfa, 0xa1, 0x63, + 0xaa, 0xa5, 0xcf, 0xad, 0x04, 0x6e, 0x7a, 0x0d, 0xe5, 0xdb, 0x8f, 0xe4, 0x86, 0x42, 0x20, 0x11, + 0x7b, 0x7c, 0x9e, 0x4e, 0x93, 0xe7, 0xf1, 0xa6, 0x58, 0x8c, 0xc8, 0x00, 0x4c, 0xcc, 0x93, 0x7f, + 0xb0, 0x5d, 0x85, 0xc7, 0x04, 0x34, 0xcb, 0x0c, 0x8d, 0x10, 0x5e, 0xee, 0x8b, 0x78, 0xcb, 0xbd, + 0x38, 0x07, 0x0e, 0x66, 0xa8, 0x4b, 0x51, 0x2e, 0x81, 0x27, 0xea, 0xcd, 0xf7, 0x94, 0x01, 0x9d, + 0xac, 0x90, 0xa9, 0x5c, 0x1d, 0x0e, 0x11, 0xac, 0x09, 0xf5, 0x55, 0x1f, 0x61, 0x1a, 0x79, 0xb6, + 0x45, 0x0d, 0xd0, 0xb2, 0x15, 0xe4, 0x79, 0xb0, 0xfa, 0xc2, 0x6b, 0x99, 0x68, 0xb6, 0x6b, 0xdf, + 0xfb, 0xcd, 0x67, 0x6c, 0x24, 0x16, 0xc3, 0xf8, 0x2a, 0x4b, 0x5c, 0x24, 0xd7, 0xbd, 0xb8, 0x9b, + 0xbc, 0xc6, 0x07, 0x9a, 0xf2, 0x2e, 0x7a, 0x47, 0x1a, 0xe9, 0x28, 0xa8, 0x1b, 0x83, 0xeb, 0xda, + 0x47, 0xe1, 0x37, 0xfe, 0xa5, 0xc0, 0xf8, 0x0d, 0x63, 0x58, 0x5e, 0xa5, 0x51, 0xeb, 0x1a, 0x18, + 0xa9, 0x96, 0x89, 0x72, 0x38, 0x09, 0x4e, 0xad, 0xb8, 0x0c, 0xe5, 0xd5, 0x98, 0xd7, 0x61, 0x45, + 0x63, 0x3d, 0x31, 0x50, 0xc7, 0xa8, 0xce, 0x56, 0x25, 0x4f, 0xe6, 0xd9, 0xa2, 0xc4, 0xde, 0x6f, + 0x55, 0x5b, 0x83, 0x92, 0x05, 0x9a, 0x52, 0x8c, 0x24, 0x89, 0x5f, 0xd9, 0x88, 0x47, 0x53, 0x78, + 0x28, 0x03, 0xcd, 0x36, 0xb8, 0x31, 0xc8, 0xf3, 0x7e, 0xfb, 0x25, 0x54, 0x25, 0x31, 0x41, 0x53, + 0x2e, 0x0a, 0xe8, 0xbc, 0x20, 0x8d, 0x34, 0x8f, 0xfc, 0x59, 0x5a, 0x31, 0x01, 0x44, 0x52, 0xbe, + 0x3b, 0xc2, 0x82, 0xff, 0x2d, 0x13, 0x3d, 0xec, 0xbe, 0xea, 0x9f, 0xa6, 0xb8, 0xe0, 0xee, 0x86, + 0x36, 0x23, 0xfe, 0x28, 0x23, 0x9e, 0x88, 0xfc, 0x04, 0x7f, 0xa5, 0x5d, 0x60, 0x67, 0xe4, 0x5b, + 0xdd, 0x99, 0x81, 0x66, 0x9a, 0x08, 0xa3, 0x2c, 0xe4, 0xab, 0xf5, 0x05, 0x22, 0x7e, 0x6f, 0x9d, + 0xea, 0xfb, 0xb5, 0xf8, 0xa5, 0x80, 0xc6, 0x87, 0x7d, 0xa1, 0x4d, 0xbe, 0xd0, 0x52, 0xfa, 0xe0, + 0x95, 0xee, 0x10, 0x34, 0xe5, 0xf7, 0x92, 0x59, 0x2c, 0xff, 0x3a, 0xde, 0xbf, 0x23, 0xb1, 0x83, + 0x30, 0x16, 0xc9, 0xee, 0xe6, 0xe4, 0x40, 0x73, 0x7c, 0xe0, 0x62, 0xb2, 0xbb, 0x79, 0xa3, 0x6f, + 0xb3, 0x01, 0x72, 0x7d, 0x97, 0xe3, 0xb1, 0x5d, 0x1b, 0x1b, 0xd7, 0xfa, 0xe6, 0x61, 0x0a, 0xd3, + 0x00, 0xe2, 0x03, 0x7d, 0xec, 0xb6, 0xb0, 0x16, 0x58, 0xd4, 0x3f, 0xaf, 0x36, 0xe4, 0xdf, 0xe4, + 0x0b, 0x91, 0x4c, 0xd6, 0xe4, 0x17, 0xf4, 0x48, 0xf4, 0xb4, 0x55, 0x56, 0xd1, 0x5c, 0xb3, 0xec, + 0xd6, 0xb1, 0x65, 0x50, 0xf5, 0x4a, 0xba, 0x6f, 0x91, 0x1f, 0xe6, 0x77, 0xc9, 0xac, 0x62, 0x51, + 0xa7, 0xd8, 0x48, 0x85, 0xd7, 0x33, 0x50, 0x81, 0xfb, 0x28, 0xf7, 0xbe, 0x2e, 0xf1, 0x03, 0x8b, + 0x43, 0xd4, 0x63, 0x69, 0xc0, 0xdf, 0xfc, 0x26, 0x97, 0x07, 0x2d, 0x71, 0xfe, 0x8c, 0xbe, 0xad, + 0x3d, 0xd9, 0xdd, 0x9c, 0xea, 0xdb, 0x12, 0xbf, 0x7c, 0xca, 0xe2, 0x1f, 0x45, 0xa2, 0x9e, 0xa5, + 0xdd, 0x9e, 0xb4, 0xbb, 0x3c, 0x32, 0x0c, 0xfe, 0xfd, 0x38, 0x9b, 0x1b, 0xf3, 0x7d, 0x0b, 0x86, + 0xd6, 0xd7, 0x23, 0xe3, 0x26, 0xf4, 0x1b, 0xab, 0xd1, 0xc4, 0x9a, 0x3a, 0xbf, 0x2f, 0x10, 0x01, + 0xff, 0x5a, 0x22, 0x50, 0x7b, 0xc6, 0xe0, 0x0b, 0x2d, 0x15, 0xf2, 0x74, 0xf8, 0x60, 0x83, 0xf6, + 0xc6, 0x7e, 0xb6, 0x7a, 0x57, 0x87, 0xde, 0xbb, 0xdf, 0x1c, 0xd3, 0xd2, 0x5a, 0x5c, 0x83, 0x26, + 0xc1, 0x22, 0x95, 0xda, 0xda, 0x90, 0x2f, 0x1c, 0x26, 0x4a, 0x8a, 0x85, 0xc6, 0xf1, 0x5b, 0x6b, + 0x98, 0x12, 0x05, 0x12, 0x2a, 0x60, 0xd6, 0x8a, 0x25, 0xb5, 0xcf, 0x57, 0xad, 0x8d, 0xc5, 0x25, + 0x08, 0xd5, 0x78, 0xcb, 0x7c, 0xa1, 0x88, 0x41, 0x65, 0x10, 0x55, 0xc5, 0xd3, 0x06, 0x27, 0xcf, + 0x15, 0x53, 0x27, 0xf3, 0x32, 0x05, 0x9e, 0x63, 0x12, 0x81, 0xd8, 0xa3, 0x72, 0x6d, 0xc4, 0x2a, + 0x34, 0xbe, 0x31, 0xec, 0x0b, 0xad, 0x0a, 0x6e, 0xf4, 0x05, 0x88, 0xbe, 0x42, 0x36, 0xd8, 0x16, + 0xb3, 0x54, 0x9e, 0x95, 0x3a, 0x7b, 0x65, 0x78, 0xff, 0x59, 0x66, 0xf1, 0x11, 0x31, 0x4a, 0x2d, + 0xe9, 0xa7, 0xf3, 0x55, 0xb3, 0xb9, 0xb8, 0x02, 0x4d, 0x22, 0xdb, 0x5a, 0x1e, 0xac, 0xf7, 0xfa, + 0xa9, 0xa3, 0x12, 0x0e, 0x90, 0x6c, 0xad, 0x61, 0x34, 0xf2, 0xd1, 0xa3, 0x7a, 0x57, 0x07, 0x1b, + 0xcb, 0xda, 0x48, 0x5c, 0x89, 0x10, 0x6c, 0xa9, 0xb1, 0x66, 0x22, 0x68, 0x5b, 0xa0, 0x29, 0x4f, + 0x48, 0x5c, 0xb1, 0x3c, 0x03, 0x46, 0x32, 0x4b, 0xe0, 0x16, 0x71, 0x9f, 0xcc, 0x6a, 0xc4, 0xa5, + 0x06, 0xac, 0x18, 0xbf, 0x0c, 0xb0, 0x06, 0x81, 0xdb, 0x3c, 0x4d, 0x29, 0x94, 0xcc, 0x52, 0x9a, + 0x6c, 0x81, 0x15, 0xd8, 0x46, 0x33, 0x5b, 0x96, 0xec, 0x15, 0x34, 0x65, 0xb7, 0x80, 0x76, 0x09, + 0xd2, 0x08, 0x57, 0x89, 0x46, 0x3a, 0x48, 0x8b, 0x05, 0x39, 0x9f, 0x78, 0x0b, 0xfc, 0x5c, 0x15, + 0xac, 0xe7, 0x7e, 0x55, 0xe0, 0xce, 0xee, 0xaa, 0x60, 0xee, 0xfa, 0x55, 0xc1, 0xba, 0x6b, 0x85, + 0xfb, 0xec, 0x2e, 0xf5, 0xf7, 0x15, 0x42, 0x2d, 0x79, 0x47, 0x53, 0x56, 0xa3, 0x6a, 0x69, 0xa4, + 0x4f, 0x48, 0xbb, 0xa9, 0x23, 0x23, 0xbd, 0xee, 0x0c, 0x34, 0xcb, 0x92, 0xe5, 0xec, 0x3e, 0x42, + 0x7a, 0x19, 0xd6, 0xb7, 0xb7, 0x4a, 0x53, 0x96, 0xa3, 0xa5, 0xd2, 0x08, 0x9f, 0x23, 0x3f, 0x66, + 0xc9, 0x17, 0xe8, 0xf6, 0xc4, 0x58, 0xde, 0xe0, 0x9e, 0x0c, 0x34, 0x3b, 0xed, 0x68, 0xf7, 0x3e, + 0xd4, 0x10, 0x03, 0xec, 0x91, 0x3e, 0x41, 0x2e, 0xe4, 0x77, 0xc4, 0x7e, 0x15, 0x47, 0x81, 0x9d, + 0x1d, 0xd9, 0xa8, 0x80, 0xb3, 0x23, 0xb1, 0x42, 0xce, 0x21, 0x17, 0xc8, 0xf9, 0x9d, 0xa6, 0x84, + 0x79, 0xc0, 0x59, 0xc7, 0x1f, 0x04, 0x03, 0x1f, 0x3b, 0xd4, 0x60, 0xa0, 0x49, 0x0f, 0x31, 0x16, + 0x80, 0x81, 0x1f, 0x7c, 0xe3, 0x9f, 0xfb, 0x1b, 0x98, 0x5d, 0xb2, 0xf9, 0x40, 0xbe, 0xea, 0x7c, + 0x20, 0x1f, 0x4d, 0xff, 0x40, 0x92, 0xee, 0xe6, 0xf3, 0x18, 0xa0, 0x48, 0x98, 0x4b, 0x49, 0xba, + 0x42, 0x53, 0xca, 0x25, 0xae, 0x58, 0x7e, 0x41, 0x3f, 0xfb, 0x79, 0xa2, 0xf5, 0x52, 0xf2, 0xeb, + 0x3e, 0xe3, 0x69, 0x1c, 0xec, 0xbc, 0x3e, 0xd8, 0xce, 0x3e, 0xe7, 0x5a, 0x74, 0x8b, 0xb9, 0xdc, + 0x6b, 0xd1, 0x2d, 0xdc, 0x97, 0x30, 0x03, 0x68, 0x73, 0x28, 0xf1, 0x7d, 0x34, 0xa1, 0x26, 0x18, + 0x08, 0xf8, 0x6a, 0x60, 0x42, 0x78, 0x35, 0x4b, 0x34, 0x65, 0xa1, 0xc4, 0x97, 0xcb, 0x8f, 0x0d, + 0x7f, 0xf6, 0x5d, 0x62, 0xd7, 0x49, 0x36, 0x5d, 0xf2, 0xd0, 0x85, 0xd4, 0x96, 0x3d, 0x24, 0xdc, + 0x78, 0xf7, 0xe9, 0xe1, 0x2d, 0x9f, 0x99, 0xc6, 0xee, 0x66, 0x37, 0x4e, 0x3b, 0x9e, 0x7d, 0x0b, + 0xda, 0xf1, 0x9c, 0x9b, 0xb0, 0x21, 0xa5, 0xf4, 0x72, 0x5a, 0x30, 0xa2, 0x5e, 0x02, 0x23, 0xdc, + 0x58, 0xc2, 0x50, 0x37, 0x65, 0x82, 0xc1, 0xc7, 0x7d, 0x49, 0x30, 0xd7, 0x58, 0xf8, 0xc5, 0x31, + 0x10, 0xcc, 0xc5, 0x9a, 0x52, 0x44, 0x08, 0xe6, 0xc7, 0x46, 0xdd, 0x1b, 0x6b, 0x58, 0x81, 0xf4, + 0xbb, 0x34, 0xe6, 0xcd, 0x4e, 0x8b, 0x11, 0x66, 0xa1, 0x82, 0xca, 0x80, 0x3f, 0xb2, 0xd8, 0x6e, + 0x72, 0xad, 0xfa, 0x7e, 0x5d, 0x38, 0x1b, 0x3d, 0x94, 0xa6, 0x2e, 0xdc, 0x50, 0x78, 0x30, 0x03, + 0xcd, 0x50, 0x6a, 0x6b, 0x49, 0xa5, 0x19, 0xde, 0xdf, 0xf7, 0x6b, 0xf1, 0x5d, 0x77, 0x23, 0x72, + 0xc1, 0xd4, 0x54, 0xb8, 0x1a, 0x91, 0xe7, 0xf1, 0x26, 0xe3, 0x95, 0xe5, 0xee, 0x76, 0xe0, 0xaf, + 0x38, 0xd1, 0x80, 0x23, 0x34, 0x11, 0x58, 0x88, 0xb9, 0x58, 0xc5, 0x96, 0xf8, 0x34, 0x65, 0x2d, + 0xfa, 0x95, 0x94, 0x66, 0xe1, 0xf2, 0x13, 0xfa, 0xb7, 0xdb, 0x08, 0x45, 0xb7, 0xe3, 0x98, 0xde, + 0x72, 0xd2, 0x66, 0xc3, 0x4e, 0xa9, 0x1d, 0xb7, 0x85, 0x59, 0xe2, 0x0f, 0xf7, 0x64, 0xa0, 0x99, + 0xae, 0x53, 0xdc, 0xfb, 0x2f, 0xd0, 0x5a, 0x4d, 0xf9, 0x10, 0x7d, 0x20, 0xa5, 0x5b, 0xbe, 0x2c, + 0x8d, 0x65, 0x8b, 0x46, 0x79, 0x85, 0xfe, 0xcb, 0x54, 0x24, 0xd2, 0xd0, 0xd7, 0xc1, 0xc6, 0x5a, + 0x2a, 0x40, 0xfb, 0x10, 0x8d, 0x23, 0xd6, 0xde, 0x04, 0x54, 0x2a, 0x34, 0x65, 0x2e, 0x89, 0x2b, + 0x8d, 0x4d, 0x01, 0x66, 0xc7, 0x63, 0xbb, 0x99, 0x3f, 0x47, 0x6a, 0xe7, 0xb9, 0xc4, 0xbe, 0xed, + 0xcc, 0x20, 0xe0, 0xfb, 0xd2, 0x99, 0xa1, 0xe9, 0xf9, 0x19, 0x05, 0xd3, 0x1c, 0x21, 0xac, 0x55, + 0x3a, 0xaa, 0xf8, 0x2a, 0xca, 0x0a, 0x98, 0x4e, 0x46, 0x45, 0x38, 0xb6, 0x87, 0x51, 0x20, 0x4f, + 0x67, 0x03, 0xc7, 0xfb, 0x7b, 0x8d, 0x51, 0x89, 0x9b, 0x11, 0x90, 0x2c, 0x6f, 0xa8, 0xb8, 0x95, + 0xb8, 0x55, 0x40, 0xb9, 0xbe, 0x5a, 0x7f, 0x04, 0x6b, 0xfc, 0x60, 0x43, 0xd7, 0x6b, 0x4a, 0xad, + 0xc4, 0x0a, 0xe5, 0x77, 0xe0, 0x91, 0xab, 0xf6, 0x7a, 0xab, 0x0d, 0x00, 0x3c, 0xfc, 0x39, 0x53, + 0x9c, 0x12, 0x3b, 0xa1, 0xce, 0xbe, 0xe4, 0xe0, 0xbe, 0xd4, 0x77, 0xbb, 0x21, 0xed, 0x13, 0x31, + 0x2f, 0xc7, 0x0e, 0x49, 0xd8, 0x10, 0xbd, 0x19, 0x74, 0xfb, 0x2c, 0x17, 0x37, 0x69, 0xdf, 0xb7, + 0x5b, 0x65, 0x73, 0x88, 0x07, 0x04, 0x84, 0x82, 0x34, 0xe7, 0x42, 0x98, 0xe0, 0x1f, 0xd9, 0x81, + 0x7f, 0x1c, 0xdb, 0x3b, 0x9f, 0x25, 0x6a, 0x20, 0x1a, 0xa2, 0x72, 0x4d, 0x51, 0x24, 0x6e, 0x28, + 0xf9, 0x59, 0x88, 0xfe, 0x92, 0x38, 0xb6, 0x5d, 0xdf, 0xbe, 0x2d, 0x75, 0xa5, 0x2b, 0x39, 0x70, + 0x41, 0x3f, 0x7b, 0x24, 0xb9, 0xeb, 0x5b, 0xa2, 0xa6, 0x39, 0xb7, 0x17, 0xdc, 0xa0, 0xe0, 0x75, + 0x82, 0xec, 0x82, 0x2a, 0x37, 0x80, 0xf8, 0x47, 0x01, 0x4d, 0xc4, 0x16, 0xf2, 0x74, 0x71, 0xd9, + 0x78, 0x71, 0xcf, 0x8d, 0x61, 0x71, 0x15, 0x5c, 0x37, 0x58, 0xde, 0x7b, 0x9a, 0xf2, 0x8e, 0x64, + 0x19, 0x4e, 0x7e, 0x93, 0xcf, 0xf4, 0xc7, 0xf2, 0x2f, 0x10, 0x05, 0xc8, 0xf6, 0xaf, 0x60, 0xf3, + 0xa0, 0x96, 0x4f, 0xfc, 0x07, 0xa6, 0xa7, 0x20, 0x3e, 0x83, 0xed, 0x57, 0x2d, 0xe3, 0x8a, 0xff, + 0x15, 0x67, 0x25, 0x0a, 0x36, 0xd6, 0x9a, 0xc8, 0x95, 0x38, 0x34, 0xcf, 0x72, 0x59, 0x3a, 0x45, + 0xe8, 0x24, 0x12, 0x84, 0xbd, 0xa7, 0xbc, 0x55, 0x30, 0x4e, 0x3d, 0xb6, 0x9b, 0xa5, 0x78, 0x61, + 0x06, 0x1b, 0xa9, 0x0b, 0xa7, 0x12, 0xad, 0x97, 0x78, 0xf3, 0x10, 0x9c, 0x0a, 0x8c, 0xca, 0x58, + 0x69, 0x3e, 0x65, 0x88, 0xb5, 0x40, 0xa4, 0xae, 0x43, 0x9f, 0x91, 0xdb, 0x77, 0x2d, 0xba, 0x85, + 0xb8, 0xe4, 0xc5, 0xfb, 0x77, 0x26, 0xfe, 0x70, 0x3c, 0xd1, 0xd3, 0x06, 0x91, 0x31, 0x13, 0xfb, + 0x2f, 0xc6, 0x07, 0xbb, 0x41, 0x27, 0x6f, 0x7c, 0x33, 0x24, 0xe6, 0xb7, 0x2f, 0x4b, 0xfc, 0x0d, + 0x9a, 0x18, 0x0c, 0x2f, 0xc7, 0x9f, 0x81, 0x5d, 0xb2, 0xc6, 0xe1, 0x0f, 0x9c, 0x61, 0xff, 0xc0, + 0x95, 0xd5, 0x38, 0xf0, 0xc2, 0xeb, 0x9a, 0xf2, 0x8a, 0x64, 0xe9, 0x20, 0x17, 0xb3, 0xcf, 0x5a, + 0x49, 0xa0, 0x9b, 0x7d, 0x18, 0x9f, 0xca, 0x86, 0xe0, 0x20, 0x4b, 0x5f, 0x51, 0x13, 0xd0, 0x14, + 0x32, 0x11, 0xb7, 0x84, 0xdc, 0x34, 0x7b, 0x4c, 0x1a, 0xae, 0x0f, 0x95, 0x1a, 0xc4, 0x86, 0xe4, + 0xec, 0x29, 0x2f, 0x64, 0x6b, 0xe1, 0xf3, 0x1f, 0xc2, 0xaa, 0x0c, 0x68, 0xc5, 0xb0, 0x61, 0x59, + 0x8f, 0x73, 0x10, 0x71, 0xa7, 0x80, 0xa6, 0x32, 0x95, 0x2d, 0xb7, 0x2c, 0x94, 0x3e, 0xf2, 0x02, + 0x34, 0x5d, 0x1f, 0x2a, 0x7d, 0x59, 0x53, 0x16, 0x49, 0x6e, 0xbd, 0xe5, 0xc7, 0xd8, 0xd2, 0x2c, + 0xe6, 0xc1, 0xfc, 0x5a, 0xdc, 0xfa, 0x89, 0x6f, 0x98, 0x09, 0x99, 0x26, 0x50, 0x03, 0xd5, 0x59, + 0x66, 0x42, 0xa6, 0xc9, 0xf4, 0x35, 0x3f, 0xa4, 0x0f, 0xc4, 0x58, 0xea, 0x87, 0x8c, 0x82, 0x69, + 0x66, 0x3a, 0xa6, 0x65, 0x68, 0x12, 0x3e, 0xf4, 0x2a, 0xea, 0x06, 0x39, 0x91, 0x8e, 0xf3, 0xb8, + 0x64, 0xad, 0x91, 0x45, 0xc8, 0xbc, 0x07, 0xd7, 0x1b, 0x88, 0x4f, 0xd5, 0xda, 0x44, 0x8c, 0x0a, + 0x28, 0xa7, 0x06, 0x42, 0x87, 0x80, 0x09, 0xca, 0x06, 0x4d, 0xf1, 0x49, 0xa4, 0x48, 0x7e, 0x0f, + 0xae, 0x99, 0xde, 0xbb, 0x3f, 0x71, 0xf6, 0x8f, 0xc5, 0x9e, 0xf8, 0x95, 0xc3, 0x7a, 0xef, 0x81, + 0xe1, 0x68, 0xd3, 0x70, 0x4b, 0x87, 0xde, 0xd5, 0x9c, 0x3c, 0xdd, 0x81, 0x07, 0x33, 0x90, 0x1a, + 0x17, 0x38, 0xa4, 0x98, 0x84, 0x13, 0x83, 0x3c, 0x46, 0x38, 0x7a, 0x65, 0xb0, 0xb1, 0xd6, 0xf3, + 0x51, 0x38, 0x18, 0x48, 0x9d, 0xfe, 0x22, 0x71, 0xa4, 0x8b, 0xc0, 0x2e, 0x99, 0x44, 0x7c, 0xdb, + 0x9a, 0x93, 0x2c, 0x8f, 0x4a, 0x4e, 0x8a, 0xad, 0x59, 0xc7, 0x1e, 0x81, 0x4c, 0x63, 0x90, 0x43, + 0xa9, 0xef, 0x54, 0x72, 0x60, 0x5b, 0x7c, 0x60, 0x67, 0x72, 0xa0, 0x83, 0xea, 0xb8, 0xf9, 0x04, + 0x64, 0xcb, 0x2c, 0xae, 0x83, 0x60, 0xaa, 0x82, 0x29, 0x33, 0xde, 0x75, 0x70, 0xf6, 0x08, 0x26, + 0xe6, 0x16, 0x77, 0xc1, 0x4a, 0x94, 0xe3, 0x0b, 0xe0, 0xe7, 0x20, 0x9f, 0x4a, 0xdb, 0xe6, 0x4b, + 0xa4, 0x48, 0x7e, 0x02, 0xbc, 0x4b, 0x93, 0x6d, 0xad, 0xc4, 0x5a, 0x9e, 0x3c, 0xb7, 0x07, 0x89, + 0x1b, 0x15, 0xce, 0x6e, 0xa4, 0x92, 0xd6, 0xe2, 0xef, 0x58, 0x86, 0x3f, 0xec, 0x7a, 0x31, 0xc5, + 0x5d, 0x57, 0x80, 0x71, 0xe6, 0x0a, 0xb3, 0x1d, 0x71, 0xa9, 0xe4, 0x7a, 0xca, 0x4f, 0xbb, 0x63, + 0x1f, 0x6c, 0x95, 0xcc, 0x1f, 0x86, 0xca, 0xf7, 0x12, 0x3f, 0x42, 0xb9, 0xc6, 0xa6, 0xe3, 0xb9, + 0x45, 0x3c, 0xf7, 0xa3, 0xae, 0x73, 0x43, 0x10, 0x17, 0x33, 0x65, 0x00, 0xeb, 0x25, 0xcf, 0xb1, + 0xcd, 0x1b, 0x8f, 0xed, 0xb6, 0x4c, 0xc7, 0x5a, 0x1a, 0xf7, 0x6e, 0x62, 0x43, 0x9d, 0x37, 0xb2, + 0x2e, 0x18, 0xaa, 0xc7, 0x13, 0x4e, 0x1d, 0xf3, 0x33, 0x51, 0xc5, 0x75, 0x83, 0x67, 0x02, 0x6f, + 0xb9, 0x65, 0x38, 0x79, 0x0e, 0xcd, 0xac, 0x4a, 0xb2, 0x65, 0xd9, 0xa0, 0x50, 0xb5, 0xb4, 0x9e, + 0xf5, 0x2e, 0x9a, 0x6c, 0x7b, 0x19, 0x6f, 0x5f, 0x1a, 0xa4, 0xf7, 0xd1, 0x14, 0xc7, 0xc3, 0x76, + 0xfb, 0x46, 0x7f, 0x1d, 0x4d, 0x71, 0xec, 0xc7, 0x0d, 0x19, 0x19, 0x90, 0x68, 0x98, 0x2e, 0xb4, + 0x98, 0x3c, 0x05, 0x10, 0x0d, 0xb9, 0x53, 0x24, 0xd2, 0x1f, 0xa1, 0xa3, 0xae, 0x0a, 0x98, 0x1e, + 0xba, 0x2a, 0x58, 0x70, 0xbc, 0x51, 0x0f, 0x88, 0xa8, 0xf0, 0x82, 0x80, 0xa6, 0x5a, 0xc6, 0xbc, + 0x2f, 0x54, 0x80, 0x85, 0xff, 0x72, 0x2a, 0x0d, 0x5c, 0x6b, 0x21, 0x4b, 0x97, 0xda, 0xc9, 0xd2, + 0x67, 0x70, 0x04, 0x7d, 0x52, 0x36, 0x0a, 0x51, 0xca, 0x52, 0xe6, 0x11, 0x12, 0xf4, 0x15, 0x0b, + 0x09, 0x3a, 0x77, 0x74, 0x12, 0x94, 0x0c, 0x70, 0xff, 0x51, 0xa0, 0xce, 0x9d, 0xbc, 0x87, 0x28, + 0x50, 0x97, 0xc5, 0x3d, 0xa0, 0x40, 0x1f, 0x50, 0xa0, 0x3f, 0x6d, 0x0a, 0xf4, 0x65, 0x33, 0x6c, + 0xf8, 0x04, 0xaa, 0x80, 0x4c, 0x13, 0x36, 0x7c, 0x5c, 0x28, 0x3b, 0x3f, 0xc3, 0x92, 0xae, 0xff, + 0x01, 0xf1, 0x79, 0xa7, 0x89, 0xcf, 0x0f, 0x6c, 0xc4, 0x67, 0x85, 0xa6, 0x94, 0x32, 0xe2, 0x73, + 0xd1, 0x58, 0x88, 0xcf, 0xb9, 0x60, 0xe2, 0x83, 0x3d, 0xc2, 0x5b, 0xf7, 0x61, 0xc7, 0xee, 0xa2, + 0x07, 0x04, 0x69, 0x7a, 0x82, 0xd4, 0xe5, 0xd5, 0x78, 0x40, 0x90, 0xde, 0x4e, 0x82, 0x94, 0x64, + 0x64, 0x9c, 0x06, 0x1b, 0x4d, 0x1e, 0x1b, 0x4a, 0x92, 0x92, 0x94, 0xc4, 0xe0, 0x94, 0xed, 0xa4, + 0x49, 0x29, 0x26, 0x2a, 0xdc, 0x9e, 0x81, 0xa6, 0x5a, 0x4e, 0xea, 0xfe, 0x30, 0x40, 0x7b, 0xdb, + 0x62, 0x81, 0x33, 0xdd, 0x15, 0xd8, 0x2d, 0x56, 0x37, 0x2c, 0xb1, 0x26, 0x64, 0xd8, 0xe3, 0x43, + 0x3c, 0x82, 0xfa, 0xa0, 0xf0, 0xdf, 0x0a, 0x48, 0xa4, 0x9a, 0x44, 0x8e, 0xa0, 0xfd, 0xc0, 0x4e, + 0xd0, 0x96, 0xdd, 0x00, 0x41, 0x3b, 0xba, 0x94, 0xb5, 0x00, 0x8d, 0xf3, 0x87, 0x17, 0x07, 0x43, + 0x35, 0xb0, 0x6f, 0xb9, 0x2a, 0xfd, 0x59, 0x52, 0xa2, 0x29, 0x2f, 0xa2, 0xe7, 0x25, 0x97, 0x35, + 0xc9, 0xd3, 0x49, 0xec, 0x53, 0xfa, 0x1d, 0xf6, 0xf3, 0xc5, 0xa7, 0x6a, 0xe9, 0xf7, 0x23, 0x3d, + 0x55, 0xfd, 0xd2, 0x1f, 0x58, 0xc8, 0x0d, 0xf7, 0x53, 0xed, 0x11, 0x70, 0x9c, 0x75, 0xcb, 0x91, + 0x2e, 0xb7, 0x1f, 0xe9, 0xb3, 0xc6, 0xd2, 0xd8, 0x91, 0x4e, 0xe0, 0x02, 0x5d, 0x8d, 0xe1, 0x08, + 0xe9, 0x41, 0xd9, 0xa7, 0x31, 0x03, 0x63, 0x5e, 0x8a, 0x0f, 0x7d, 0xe6, 0x7e, 0x11, 0x0b, 0xff, + 0x3c, 0x03, 0xe5, 0x9b, 0xfd, 0xee, 0x8f, 0x53, 0x5a, 0x3a, 0x96, 0x53, 0x1a, 0x63, 0xee, 0xc5, + 0x92, 0xc5, 0x9a, 0x52, 0x86, 0x14, 0xc9, 0xb1, 0x09, 0xf2, 0x74, 0xd8, 0x3d, 0x13, 0xc6, 0x47, + 0xd6, 0x92, 0x24, 0xb3, 0x50, 0x3e, 0x28, 0xfe, 0xb8, 0x83, 0x7e, 0xcb, 0x7e, 0xd0, 0x0b, 0x6f, + 0xe0, 0xee, 0x66, 0x85, 0x40, 0x5e, 0x48, 0x2e, 0xea, 0x73, 0x16, 0x5e, 0xd4, 0x33, 0x1a, 0x2f, + 0x7a, 0x4f, 0xf1, 0xa0, 0xcf, 0x98, 0xd2, 0x52, 0x50, 0xad, 0xe3, 0xec, 0x48, 0x4c, 0x5a, 0x3a, + 0x9e, 0xc9, 0x49, 0x4d, 0xf1, 0xe8, 0x33, 0xf6, 0xac, 0x38, 0x33, 0xd3, 0x90, 0xb7, 0x23, 0x10, + 0xb5, 0x39, 0xb7, 0x40, 0xd4, 0x96, 0xec, 0x13, 0x34, 0x45, 0x13, 0x50, 0xa7, 0x20, 0x39, 0xce, + 0x55, 0xfe, 0x8d, 0x1d, 0x36, 0xa8, 0xe1, 0x36, 0x89, 0x0d, 0x8f, 0xa3, 0x07, 0xc4, 0x63, 0xdb, + 0x92, 0x87, 0xce, 0x1a, 0xdc, 0x31, 0xa6, 0x7c, 0x81, 0x3f, 0x4b, 0x0e, 0x34, 0xeb, 0x5d, 0xad, + 0x50, 0x4e, 0x76, 0x19, 0x0f, 0x65, 0xf6, 0x6d, 0x39, 0x03, 0x1c, 0x9e, 0xde, 0x7a, 0x30, 0xde, + 0x1f, 0xa3, 0x57, 0xf8, 0xcc, 0xf0, 0xf6, 0x4e, 0xe2, 0x86, 0xf1, 0x5d, 0x06, 0x9a, 0xc2, 0xad, + 0xe8, 0xfe, 0xb8, 0xb3, 0x6f, 0x5a, 0x14, 0xf0, 0x69, 0xee, 0x2c, 0x6f, 0xaa, 0x4d, 0x22, 0x7f, + 0xb6, 0x7e, 0x6b, 0x60, 0x56, 0xfe, 0xc2, 0xbe, 0xa1, 0x29, 0xaf, 0xa2, 0x97, 0x25, 0xe7, 0x16, + 0x8c, 0xf5, 0xc6, 0x16, 0x7e, 0x33, 0x15, 0xcd, 0x00, 0x81, 0x17, 0x63, 0xd1, 0xe8, 0x85, 0x5d, + 0x44, 0x2e, 0x99, 0x40, 0x03, 0xe9, 0xcd, 0x24, 0x97, 0x8c, 0xb8, 0x8f, 0xe1, 0xe3, 0x03, 0x51, + 0x0f, 0x98, 0x4a, 0xfe, 0xbf, 0x02, 0xb9, 0x68, 0x7f, 0xea, 0xd4, 0x74, 0x7b, 0x35, 0xe5, 0x35, + 0x5e, 0xd3, 0xfd, 0x0c, 0x1b, 0x23, 0xd1, 0x16, 0x65, 0xc1, 0x4f, 0x59, 0xa8, 0x37, 0x1c, 0x64, + 0x2d, 0xde, 0x1f, 0x33, 0x2e, 0x99, 0x25, 0xd3, 0x6f, 0xc6, 0x98, 0x32, 0xfd, 0x7e, 0xc0, 0x1c, + 0x5c, 0x33, 0x4d, 0x75, 0x2c, 0x75, 0x70, 0x9d, 0xe3, 0x9c, 0x1a, 0x3c, 0xd9, 0xa8, 0xb9, 0x97, + 0xf1, 0xca, 0x08, 0x05, 0x1e, 0xe7, 0x2b, 0x43, 0x5d, 0x5c, 0xd7, 0xa1, 0xc9, 0xc0, 0x6a, 0x28, + 0x8d, 0x91, 0x60, 0x18, 0xc7, 0x64, 0xc9, 0xc2, 0x87, 0xff, 0x8a, 0xa6, 0xbc, 0x24, 0xd9, 0xeb, + 0xe4, 0xa7, 0x08, 0xf2, 0x18, 0x8c, 0xea, 0x5d, 0x7d, 0x3c, 0x63, 0xcb, 0x9c, 0x2a, 0x49, 0x04, + 0x2d, 0x5b, 0x47, 0x71, 0x13, 0x9a, 0x40, 0x03, 0xad, 0xf8, 0x03, 0xeb, 0xd3, 0x59, 0xe1, 0x2b, + 0x66, 0x13, 0x88, 0xf6, 0x8d, 0x8d, 0x48, 0xf9, 0x9e, 0x72, 0x81, 0xc5, 0x0b, 0x1b, 0xde, 0x40, + 0x4c, 0xc6, 0x7f, 0x5f, 0x9a, 0xbd, 0x43, 0xc8, 0xc8, 0x17, 0x54, 0xbe, 0xb9, 0xb8, 0x47, 0x40, + 0x79, 0x75, 0xde, 0xc6, 0x40, 0xcd, 0x06, 0x16, 0xd3, 0x3b, 0xc7, 0x3d, 0xdb, 0xdb, 0x32, 0xdc, + 0x0a, 0x38, 0x99, 0x46, 0xb0, 0x2b, 0x28, 0x5d, 0xa2, 0x29, 0xaf, 0x48, 0xb6, 0xfe, 0xb2, 0x04, + 0x73, 0x27, 0xf6, 0x5f, 0x04, 0xfc, 0x06, 0x8b, 0x00, 0x6f, 0x60, 0xc6, 0x54, 0x00, 0xa8, 0xb2, + 0x35, 0xd9, 0xc6, 0x10, 0x37, 0x31, 0x3f, 0xdb, 0x71, 0x23, 0xa9, 0x8e, 0xed, 0x80, 0x6c, 0x71, + 0xb9, 0xc5, 0x7e, 0x81, 0xd4, 0xe5, 0xf6, 0x11, 0x83, 0x0a, 0xb5, 0x3a, 0x24, 0xe3, 0x1a, 0x9b, + 0xf7, 0x6d, 0x93, 0xc0, 0xdc, 0x6f, 0x73, 0x6f, 0x68, 0x62, 0xec, 0x95, 0x4b, 0x26, 0x06, 0x37, + 0x68, 0xe2, 0x9b, 0x5b, 0xe4, 0x9c, 0x38, 0xd9, 0xdd, 0x9c, 0x38, 0x77, 0x9c, 0xb9, 0xc7, 0xcd, + 0xd5, 0x63, 0x47, 0xf5, 0xc1, 0xad, 0x45, 0xcc, 0x71, 0x77, 0x1d, 0x84, 0x3a, 0x58, 0x59, 0x4d, + 0xcc, 0x66, 0x71, 0x80, 0x38, 0x52, 0x24, 0x2b, 0x6c, 0xbc, 0xe1, 0x68, 0x1b, 0x30, 0xdf, 0x10, + 0xc0, 0x7c, 0x65, 0x35, 0x96, 0x95, 0x35, 0x25, 0x5b, 0x4e, 0x1b, 0x0c, 0x25, 0x79, 0x97, 0x7a, + 0x61, 0xbb, 0x8d, 0x7d, 0xa7, 0x3e, 0xbd, 0x2a, 0x19, 0x8a, 0x57, 0xe6, 0xa1, 0x9b, 0x53, 0xe6, + 0x9d, 0x12, 0xb8, 0x78, 0xa6, 0x96, 0xa8, 0x91, 0x66, 0x44, 0xd3, 0xcd, 0x6c, 0xaf, 0x48, 0xd0, + 0xd2, 0xef, 0x0e, 0xa7, 0xfe, 0xb8, 0x0f, 0x08, 0x47, 0xf2, 0x10, 0xed, 0xbb, 0x9c, 0x38, 0xde, + 0xca, 0x44, 0x94, 0xf0, 0x13, 0x5e, 0x8c, 0x78, 0xff, 0x2e, 0x10, 0xa3, 0x5c, 0x8b, 0x36, 0xb1, + 0x98, 0x90, 0xbc, 0x1c, 0x30, 0x75, 0x6a, 0x0b, 0x88, 0xf7, 0x8c, 0x92, 0x2b, 0x2d, 0xc3, 0xc7, + 0x07, 0x12, 0x07, 0xfa, 0x88, 0x87, 0x2a, 0x17, 0x02, 0x75, 0x03, 0x42, 0x35, 0xc1, 0x40, 0xb8, + 0xb1, 0x9e, 0x8b, 0xbb, 0x87, 0x85, 0x66, 0x5c, 0xb1, 0xfc, 0xa2, 0xf9, 0x37, 0x04, 0x8a, 0x0f, + 0xf9, 0xc2, 0xc1, 0xc6, 0x50, 0x8d, 0x0f, 0xc4, 0x4f, 0x21, 0xb0, 0x44, 0x4f, 0xee, 0x39, 0x9f, + 0xea, 0xbb, 0x94, 0xfa, 0x63, 0x73, 0x22, 0xd6, 0x05, 0xf2, 0x0f, 0x95, 0x1b, 0x44, 0xfc, 0xc8, + 0x16, 0x21, 0x7f, 0xea, 0x18, 0x22, 0xe4, 0x63, 0x6b, 0x23, 0x6b, 0x84, 0xfc, 0xe9, 0x26, 0xe2, + 0xc5, 0x87, 0x0d, 0x1f, 0x69, 0x8d, 0x83, 0x2f, 0x7e, 0x82, 0xb2, 0x22, 0xde, 0xf5, 0xe1, 0x82, + 0x69, 0x18, 0x54, 0x17, 0x8e, 0x19, 0x54, 0xd7, 0x13, 0x40, 0x95, 0x35, 0x65, 0x81, 0x84, 0x87, + 0x90, 0x9f, 0x76, 0x05, 0x53, 0xf8, 0x4a, 0x8b, 0x9f, 0x3a, 0x6e, 0x2e, 0xfe, 0x51, 0xe0, 0x5c, + 0x90, 0xb1, 0xa0, 0x08, 0x7c, 0xaa, 0x77, 0x09, 0x9a, 0xb2, 0x43, 0x90, 0xac, 0x75, 0xf2, 0x66, + 0xe6, 0x84, 0x4c, 0x22, 0x60, 0x05, 0x82, 0xa1, 0x7a, 0x6f, 0xdd, 0x02, 0xdf, 0x27, 0x11, 0x5f, + 0x28, 0xe0, 0xad, 0x2b, 0xba, 0x16, 0x6d, 0x4a, 0x1c, 0x3c, 0x3b, 0x1c, 0xed, 0xe6, 0x91, 0x97, + 0xe9, 0xb9, 0xac, 0xb5, 0x27, 0xbf, 0xf9, 0x26, 0xde, 0xdf, 0x96, 0xd8, 0x77, 0xd9, 0xb5, 0x41, + 0xb1, 0x47, 0xef, 0x38, 0x5f, 0xb6, 0x66, 0x39, 0x29, 0x68, 0xdd, 0xc7, 0xb2, 0x9a, 0xa8, 0xd6, + 0x95, 0x58, 0xdd, 0x9d, 0x67, 0xdc, 0x90, 0xbb, 0x73, 0x25, 0x21, 0xb3, 0x94, 0x90, 0xcf, 0x8b, + 0xbd, 0x8f, 0x67, 0x72, 0x4e, 0xd7, 0x96, 0x1a, 0x79, 0x32, 0x1b, 0x82, 0x3a, 0x5d, 0x5b, 0xea, + 0x0d, 0x2c, 0x43, 0x32, 0x9f, 0x17, 0xb8, 0x47, 0x81, 0xc3, 0x0b, 0x66, 0x41, 0xd0, 0x4a, 0x97, + 0x69, 0x4a, 0x25, 0xcd, 0x7b, 0xfe, 0x86, 0xb9, 0x2d, 0xf8, 0x62, 0xe2, 0x52, 0x2a, 0x3c, 0xb4, + 0xb9, 0x27, 0x83, 0x14, 0x27, 0xde, 0xff, 0x95, 0x41, 0xf3, 0xb5, 0xef, 0xd3, 0x3b, 0x9b, 0x12, + 0x7b, 0xbf, 0xa5, 0x69, 0xd1, 0x3f, 0x42, 0x79, 0xc1, 0x40, 0x1d, 0xc9, 0xee, 0x8f, 0x05, 0x4a, + 0x0f, 0xe1, 0x87, 0x0d, 0xa7, 0x6b, 0xb0, 0x55, 0xc9, 0xf3, 0xac, 0xbf, 0xe3, 0x03, 0x2d, 0x90, + 0x4a, 0x0c, 0x5c, 0x1e, 0x8a, 0xe3, 0xfd, 0x1d, 0x89, 0xb6, 0xd3, 0xa9, 0xe3, 0xed, 0x20, 0x51, + 0x56, 0x6d, 0xdd, 0x6f, 0xc5, 0x47, 0xf9, 0x25, 0x34, 0x81, 0xc3, 0xad, 0x37, 0xd4, 0xf5, 0x45, + 0x34, 0x9e, 0xc1, 0xfa, 0x0d, 0x49, 0x78, 0x9a, 0x04, 0x4d, 0xf9, 0x53, 0xf4, 0x3b, 0x29, 0x0d, + 0xb9, 0x24, 0x4f, 0x27, 0x38, 0x91, 0x5e, 0x51, 0xca, 0x5e, 0x12, 0x8d, 0xa3, 0x25, 0xf7, 0x1e, + 0xd0, 0x11, 0x57, 0x05, 0xfe, 0xd5, 0xbd, 0x2a, 0xd8, 0xde, 0x3b, 0x53, 0x2d, 0x79, 0x55, 0x20, + 0xd8, 0xb9, 0xb0, 0x16, 0xe5, 0x59, 0xc1, 0x40, 0x9c, 0xc5, 0x21, 0x5b, 0xf8, 0x0e, 0x13, 0xc1, + 0xcd, 0x40, 0x39, 0x0d, 0xc1, 0x60, 0x1d, 0x25, 0xc2, 0x54, 0xf2, 0x4b, 0x9c, 0x83, 0x10, 0x88, + 0x76, 0xcd, 0xf8, 0x35, 0x2a, 0x57, 0x52, 0xd8, 0x91, 0x89, 0x66, 0x3a, 0xbe, 0xf2, 0xfe, 0xa0, + 0xad, 0xdf, 0xb1, 0xf0, 0xc3, 0x3f, 0x1f, 0x15, 0xfb, 0xc1, 0x57, 0x95, 0x7b, 0x23, 0xde, 0x51, + 0xb2, 0xd4, 0x8a, 0x9b, 0x6f, 0xde, 0x2d, 0x12, 0x27, 0x44, 0x75, 0xb8, 0x45, 0x16, 0x58, 0x02, + 0x36, 0x8e, 0xe0, 0x13, 0x59, 0xf8, 0x6f, 0x05, 0x34, 0x7b, 0x84, 0x95, 0x8b, 0xef, 0xa0, 0xf1, + 0x0c, 0xa3, 0x91, 0x60, 0x76, 0x23, 0x24, 0x83, 0xc1, 0x51, 0x47, 0xcc, 0x0e, 0x5c, 0x34, 0x08, + 0x9a, 0x10, 0x93, 0xd5, 0x89, 0x55, 0xc6, 0x63, 0x12, 0xde, 0x48, 0xa4, 0xa9, 0xd3, 0x9c, 0x61, + 0x47, 0xc2, 0x1b, 0x89, 0x0c, 0xc8, 0x68, 0x26, 0xcf, 0xe6, 0xef, 0x00, 0x0e, 0x2f, 0xb1, 0x4b, + 0xef, 0xfc, 0x16, 0xc2, 0x1f, 0xa8, 0xb8, 0x49, 0xe1, 0x7f, 0x17, 0xd1, 0x0c, 0x33, 0xa1, 0xa8, + 0x85, 0xe1, 0x58, 0x6c, 0x8d, 0xc7, 0x23, 0x98, 0x01, 0xbc, 0x2d, 0xf1, 0x78, 0x26, 0xb0, 0x2b, + 0x46, 0xcd, 0xe5, 0xa7, 0x59, 0x23, 0xeb, 0xdc, 0x75, 0xf6, 0x63, 0x3e, 0xe1, 0x9c, 0x80, 0xf9, + 0x98, 0x95, 0x9e, 0x73, 0x22, 0xfc, 0x52, 0x99, 0x2d, 0x16, 0xfb, 0xcf, 0x6f, 0x80, 0x5d, 0x61, + 0x4c, 0x49, 0x93, 0xe0, 0xe4, 0x4a, 0xb2, 0x89, 0x92, 0xd0, 0x1e, 0xd8, 0xb0, 0x34, 0x18, 0xac, + 0x5b, 0x63, 0x60, 0xb6, 0xdb, 0xcd, 0xb1, 0x04, 0xac, 0x1c, 0x4b, 0xce, 0x18, 0x39, 0x16, 0x69, + 0xec, 0x1c, 0x8b, 0x95, 0x53, 0x69, 0x77, 0x72, 0x2a, 0xe3, 0xc6, 0xce, 0xa9, 0xbc, 0x7e, 0x8b, + 0x9c, 0x8a, 0x83, 0x43, 0xb1, 0xd3, 0x79, 0xb9, 0x3f, 0x20, 0x9d, 0x67, 0x72, 0x43, 0xe3, 0x47, + 0x32, 0x63, 0xb8, 0xed, 0xdc, 0xd0, 0xa7, 0x8c, 0x19, 0x42, 0x37, 0x34, 0x2f, 0xcf, 0x0c, 0x61, + 0x84, 0x48, 0x99, 0xa1, 0xc7, 0x46, 0x65, 0x86, 0x18, 0x13, 0x44, 0x69, 0xdb, 0x09, 0xee, 0xb4, + 0x6d, 0xda, 0x99, 0x6f, 0x9d, 0xb6, 0x35, 0xd9, 0xaf, 0x89, 0x3f, 0x34, 0xfb, 0x45, 0x45, 0x7d, + 0x93, 0x38, 0xf6, 0x8b, 0x8a, 0xfa, 0x08, 0xfb, 0xc5, 0xe9, 0xb3, 0x19, 0xfb, 0x45, 0x25, 0x7f, + 0x16, 0xf6, 0x2b, 0xef, 0xbe, 0x61, 0xbf, 0x26, 0xff, 0x80, 0xec, 0x57, 0x09, 0xca, 0xaa, 0xf5, + 0x85, 0x6b, 0x88, 0xb6, 0x99, 0xe8, 0x2c, 0x7c, 0xe1, 0x1a, 0xaa, 0x89, 0x32, 0x31, 0x2c, 0xd6, + 0x88, 0x33, 0x11, 0x9b, 0x2f, 0x5c, 0x63, 0xbc, 0xad, 0x26, 0x73, 0x30, 0x85, 0xdc, 0x67, 0x3b, + 0x3e, 0x5d, 0x5d, 0x19, 0x88, 0x3c, 0x2b, 0x03, 0x46, 0xc5, 0x71, 0xf8, 0x38, 0xd6, 0x61, 0x22, + 0xa3, 0xfb, 0x3d, 0x56, 0xde, 0x61, 0xbd, 0x9d, 0x77, 0x10, 0xd3, 0x8c, 0x5e, 0x1d, 0x09, 0xf9, + 0x03, 0xeb, 0x61, 0xf4, 0x9b, 0xe1, 0x2c, 0x08, 0x51, 0x0f, 0xb7, 0x83, 0x68, 0x89, 0xad, 0x44, + 0xbd, 0x59, 0x05, 0x44, 0xbd, 0xf9, 0x3b, 0x3e, 0xd0, 0x42, 0x32, 0x85, 0x8f, 0x40, 0xd4, 0x9b, + 0xcd, 0xc5, 0x8f, 0xd1, 0x78, 0x1f, 0x8b, 0xc2, 0x3d, 0xcd, 0x3d, 0x0a, 0x77, 0x9a, 0x6b, 0x6a, + 0x8b, 0xc2, 0x8d, 0xc3, 0xc1, 0x98, 0x83, 0xb1, 0x20, 0x50, 0xe7, 0x8e, 0x11, 0x1b, 0x26, 0x83, + 0x52, 0x61, 0xd5, 0xf7, 0x19, 0x37, 0x31, 0xeb, 0x15, 0x94, 0x37, 0x6a, 0xcc, 0xed, 0xf4, 0xbc, + 0xc8, 0x73, 0x9a, 0xf2, 0x0c, 0x5a, 0x20, 0xa5, 0x21, 0xa4, 0xe4, 0xe9, 0x70, 0x64, 0xac, 0x1c, + 0x58, 0x91, 0xc2, 0xed, 0x99, 0x68, 0xa6, 0xa3, 0xc7, 0xfd, 0x41, 0xd6, 0xab, 0x16, 0xb2, 0x7e, + 0x04, 0xe2, 0x96, 0x4f, 0xf1, 0xcd, 0xd4, 0xcc, 0x06, 0x6e, 0xc5, 0xb9, 0x0a, 0x79, 0xe1, 0xf9, + 0xdd, 0x24, 0xe8, 0x9b, 0x73, 0xd1, 0x0c, 0x50, 0x09, 0x3b, 0x88, 0xe0, 0x5f, 0xba, 0x11, 0xc1, + 0x2f, 0x8e, 0x42, 0x04, 0xa7, 0xd5, 0x8b, 0x5a, 0xe8, 0xe2, 0x7f, 0x25, 0xd8, 0xf4, 0xdb, 0xa5, + 0x5f, 0x09, 0x9a, 0x72, 0x4a, 0x90, 0x68, 0xa9, 0xdc, 0x2d, 0xe8, 0x83, 0x31, 0xbd, 0xf5, 0x22, + 0xe8, 0x71, 0x21, 0x3b, 0x65, 0x62, 0xe7, 0x37, 0x89, 0xfe, 0x96, 0x64, 0xd7, 0x36, 0x53, 0x5e, + 0x83, 0xed, 0xb1, 0x8c, 0x37, 0xba, 0x27, 0xa6, 0x1f, 0x3c, 0x73, 0x2d, 0xda, 0x04, 0x39, 0x13, + 0x01, 0xff, 0x42, 0xdf, 0xd4, 0xd0, 0x37, 0x7a, 0xcb, 0x49, 0xa0, 0xff, 0x89, 0xd7, 0xef, 0xde, + 0x2b, 0xc0, 0x08, 0xe8, 0x7d, 0x97, 0xf5, 0xd6, 0xfd, 0x66, 0x3e, 0x97, 0xc1, 0x6e, 0x38, 0x72, + 0x83, 0x99, 0x20, 0xcf, 0xdb, 0xbe, 0xcb, 0xf1, 0xef, 0xae, 0x24, 0x8f, 0x9f, 0x4d, 0x9d, 0x3d, + 0x91, 0xba, 0x72, 0x48, 0x8f, 0x9d, 0xba, 0x16, 0x6d, 0x62, 0xca, 0x78, 0xf1, 0xdf, 0x0a, 0x68, + 0x7a, 0xc8, 0x87, 0xfd, 0x6b, 0xad, 0xf1, 0x65, 0x09, 0x3c, 0x69, 0x82, 0xa6, 0xec, 0x12, 0x24, + 0xf7, 0x36, 0x72, 0x63, 0xfc, 0xca, 0xe1, 0xe4, 0xde, 0x83, 0x24, 0x5e, 0x4c, 0xcf, 0x19, 0x9a, + 0xf6, 0xa5, 0xf7, 0xfa, 0x60, 0x7b, 0x7c, 0xa0, 0x85, 0x2c, 0x9f, 0x7e, 0xab, 0xc1, 0x0c, 0x9c, + 0xfe, 0x82, 0x95, 0xc4, 0xfb, 0x77, 0x99, 0xcc, 0x0d, 0xa6, 0xc5, 0x8d, 0xaf, 0x1f, 0xfa, 0x2c, + 0xde, 0xbf, 0x07, 0x8b, 0x3f, 0x3e, 0xe3, 0xf7, 0x2f, 0xb1, 0xff, 0x62, 0x72, 0xcf, 0xd1, 0xc4, + 0xde, 0x56, 0x63, 0xf5, 0xee, 0xab, 0x11, 0x87, 0x04, 0x34, 0x65, 0xa3, 0xcf, 0xd7, 0x40, 0x8a, + 0x21, 0xcc, 0x24, 0xd1, 0x26, 0x10, 0xb9, 0x99, 0xb3, 0x5e, 0x6e, 0x24, 0xab, 0x19, 0xd8, 0x45, + 0xe3, 0x77, 0x0f, 0xc0, 0x79, 0x91, 0x93, 0xc2, 0x07, 0x61, 0x7c, 0xcf, 0xd0, 0xb6, 0x78, 0x7f, + 0xc7, 0xf0, 0x9e, 0x68, 0xa2, 0x6f, 0x0b, 0x1c, 0x96, 0x51, 0x88, 0xbf, 0x1f, 0x7e, 0x42, 0x32, + 0xd7, 0xb1, 0x7e, 0x83, 0x73, 0x25, 0xe2, 0xab, 0x5c, 0x5a, 0x96, 0x6c, 0x33, 0xf6, 0x87, 0x99, + 0x96, 0x65, 0x3c, 0x4b, 0xcb, 0x62, 0xfa, 0xd1, 0x9b, 0x59, 0x54, 0xc8, 0xd3, 0x04, 0x77, 0x81, + 0x64, 0x6e, 0xb0, 0x3e, 0x4d, 0x66, 0x15, 0x3c, 0x4d, 0xe6, 0x6f, 0x76, 0x58, 0x23, 0x3d, 0x4d, + 0x66, 0xf3, 0x92, 0x4e, 0x41, 0x53, 0x76, 0x0a, 0xa8, 0x55, 0x90, 0xd2, 0xdc, 0x3d, 0x79, 0x35, + 0x8c, 0xc7, 0xca, 0x93, 0x87, 0xfa, 0xf5, 0x96, 0xf3, 0xa6, 0xcd, 0xe9, 0xd0, 0x67, 0x26, 0x4a, + 0xbd, 0x72, 0x20, 0xd1, 0xd3, 0xa6, 0x77, 0xf6, 0xb1, 0xcb, 0x60, 0x54, 0x25, 0xf6, 0x5f, 0xc4, + 0xaa, 0x4d, 0x63, 0x14, 0x88, 0xce, 0x77, 0x2d, 0xda, 0x74, 0x55, 0xe0, 0x6f, 0xe1, 0x55, 0x81, + 0x7d, 0x3d, 0x96, 0xb3, 0x38, 0x96, 0xf2, 0xa3, 0x90, 0xb3, 0xa4, 0xf9, 0xaa, 0x7b, 0x5c, 0xce, + 0x72, 0x84, 0x85, 0x60, 0x70, 0x97, 0xb3, 0xd4, 0xde, 0x90, 0x9c, 0x05, 0x73, 0xf1, 0x9c, 0x9c, + 0xc5, 0x62, 0x20, 0xc3, 0x9a, 0x39, 0x65, 0x2e, 0x07, 0x84, 0x31, 0x08, 0x5d, 0x02, 0x9a, 0xb2, + 0x91, 0x08, 0x5d, 0x6a, 0xec, 0x50, 0xdb, 0xdd, 0xcc, 0xcb, 0x5d, 0x60, 0x82, 0x6b, 0xd1, 0x26, + 0x12, 0xc2, 0xd7, 0x76, 0xbf, 0x71, 0x1a, 0x1d, 0x96, 0xee, 0x22, 0x3e, 0xd8, 0x1d, 0x8f, 0x9d, + 0x4e, 0xee, 0x39, 0x6a, 0xeb, 0x4b, 0x84, 0x37, 0x7f, 0x2e, 0xb0, 0x9c, 0xf9, 0x96, 0x47, 0x6b, + 0x93, 0xdb, 0xa3, 0xb5, 0x4a, 0x53, 0x5e, 0xb4, 0x3e, 0x5a, 0x73, 0xf9, 0xd0, 0xc9, 0x06, 0x66, + 0xdd, 0xfe, 0x95, 0x3e, 0x10, 0xab, 0x2c, 0x07, 0xa3, 0x78, 0x96, 0xb8, 0x6e, 0xcc, 0x2f, 0x5a, + 0xc9, 0x8b, 0x9a, 0xf2, 0x1c, 0x92, 0x25, 0xb7, 0x35, 0xc9, 0xb3, 0x41, 0x03, 0x6e, 0xdb, 0x68, + 0x42, 0x0a, 0xfd, 0x55, 0x26, 0x9a, 0x66, 0xed, 0xf4, 0x23, 0xa6, 0x83, 0x98, 0xc9, 0x8f, 0x1d, + 0xe8, 0xee, 0xf6, 0x85, 0x2b, 0x79, 0x4b, 0x53, 0x96, 0xa0, 0x0a, 0xc9, 0xf5, 0x28, 0x6e, 0xd4, + 0xe8, 0xe8, 0x8b, 0x4c, 0x08, 0x72, 0xc8, 0xc5, 0xbb, 0xb3, 0xc0, 0xe8, 0x9f, 0x3a, 0x83, 0x1c, + 0xde, 0x59, 0xa9, 0xe0, 0x41, 0x01, 0x4d, 0x04, 0x79, 0xd9, 0x62, 0x7f, 0x9d, 0x41, 0xad, 0x00, + 0x0d, 0xd6, 0xa8, 0x29, 0x21, 0xc9, 0x52, 0x21, 0xaf, 0xe5, 0x7f, 0x51, 0x33, 0xe7, 0xfd, 0x17, + 0x8b, 0x3d, 0xa9, 0xef, 0x3e, 0xd3, 0xb7, 0xc7, 0x00, 0x26, 0x12, 0xed, 0x6d, 0xc9, 0x96, 0xd3, + 0xe9, 0x04, 0x75, 0x89, 0x5d, 0x9a, 0x1e, 0xeb, 0x9c, 0x0b, 0x15, 0x06, 0xa9, 0x86, 0x7f, 0xeb, + 0x3d, 0x67, 0xf4, 0xae, 0x5d, 0xc3, 0x87, 0x3f, 0x2f, 0x52, 0x2d, 0x33, 0x96, 0xac, 0xd7, 0x94, + 0x5a, 0xb4, 0x56, 0x1a, 0x69, 0x03, 0xe5, 0x32, 0x12, 0x62, 0x91, 0x3b, 0xd6, 0x64, 0x77, 0x33, + 0xa3, 0xad, 0x8b, 0x3d, 0x40, 0xcf, 0x81, 0xad, 0x3a, 0x77, 0x4b, 0xf5, 0x8e, 0xed, 0x7a, 0xac, + 0x13, 0x4e, 0xaf, 0xf0, 0xef, 0x49, 0xb0, 0x45, 0xe7, 0x24, 0xf7, 0xc7, 0x05, 0x5c, 0x66, 0xb1, + 0xdd, 0x19, 0xe1, 0x02, 0x8e, 0xc5, 0x7e, 0xe7, 0x6e, 0x5e, 0xbd, 0xb7, 0x35, 0x65, 0x05, 0x5a, + 0x26, 0x8d, 0x78, 0x18, 0x14, 0x87, 0xc2, 0x40, 0xa6, 0xcc, 0xc8, 0x3d, 0x2e, 0x47, 0xe1, 0x5f, + 0x67, 0x42, 0x9a, 0x74, 0xc7, 0xd5, 0x9b, 0x6f, 0xb1, 0x24, 0x1a, 0x5d, 0x1e, 0xfe, 0xa1, 0x53, + 0x80, 0xaf, 0xdc, 0xf2, 0x55, 0xe5, 0xaf, 0x62, 0x99, 0xcd, 0x3e, 0xe8, 0xa6, 0x04, 0xee, 0xcb, + 0xf8, 0x6c, 0xa5, 0x20, 0xb8, 0xc7, 0x87, 0xc2, 0x65, 0x2b, 0x75, 0x19, 0x8a, 0x24, 0x9f, 0x25, + 0xaf, 0x3e, 0x6b, 0x5a, 0xb2, 0x47, 0xd0, 0x94, 0x2e, 0x01, 0x75, 0x08, 0x92, 0xeb, 0x1e, 0xca, + 0x8d, 0x70, 0x14, 0xec, 0xba, 0xdd, 0x21, 0x03, 0xbb, 0xbf, 0xc8, 0x80, 0xc4, 0xe2, 0x3f, 0xed, + 0x8b, 0x5a, 0x52, 0xae, 0x29, 0x0a, 0x7a, 0x5d, 0x72, 0xdf, 0x0a, 0xfa, 0x52, 0x71, 0xcc, 0x81, + 0xbb, 0xb1, 0x5d, 0x72, 0x3c, 0x9a, 0xac, 0xd4, 0xd6, 0x62, 0x0e, 0xca, 0x0c, 0x1d, 0xe2, 0x78, + 0x96, 0x14, 0x4d, 0x99, 0xc3, 0xc3, 0xfa, 0x14, 0x88, 0x34, 0xce, 0xe0, 0x9b, 0x3e, 0x3b, 0xc2, + 0x98, 0x9e, 0x9d, 0x4a, 0x94, 0x6d, 0x00, 0x4d, 0xb8, 0x20, 0x03, 0x87, 0xca, 0x7e, 0x56, 0x53, + 0x9e, 0x92, 0xa0, 0x44, 0x7e, 0xc4, 0x36, 0x30, 0x40, 0x6b, 0x65, 0x15, 0x8b, 0x80, 0xa8, 0x09, + 0x59, 0xb9, 0x42, 0x81, 0xa0, 0x42, 0x7b, 0xd1, 0x8f, 0xa6, 0xf8, 0x03, 0xfe, 0xc8, 0xb2, 0xe0, + 0x7a, 0x7f, 0xa0, 0xca, 0x1b, 0x0e, 0x7f, 0x1c, 0x0c, 0xd5, 0x92, 0x1b, 0x84, 0x7d, 0xba, 0x9c, + 0xb5, 0xf2, 0xe3, 0xc3, 0xdb, 0x3b, 0x52, 0x5f, 0xb4, 0x18, 0x6c, 0x64, 0x77, 0x33, 0x91, 0xb4, + 0x93, 0x9c, 0x0f, 0x7a, 0x67, 0x1f, 0x49, 0xc8, 0xe1, 0xec, 0x27, 0x86, 0xdc, 0xf2, 0x4b, 0x55, + 0x69, 0xca, 0x72, 0x2b, 0x45, 0xf9, 0x1a, 0x7c, 0x01, 0x61, 0xe6, 0x31, 0x4c, 0x43, 0x2a, 0x09, + 0x08, 0xf1, 0xc2, 0x4e, 0xe4, 0xfa, 0x60, 0x3b, 0x29, 0xc7, 0xb7, 0x05, 0xae, 0x62, 0x65, 0xb9, + 0x55, 0x3e, 0x72, 0x55, 0x70, 0x58, 0x3f, 0x64, 0x63, 0x70, 0xfb, 0x52, 0xd0, 0x94, 0x93, 0x82, + 0xc3, 0xfe, 0x41, 0x13, 0x0c, 0x16, 0xd4, 0x18, 0xed, 0xa4, 0x2d, 0xb2, 0x39, 0x31, 0x0c, 0x3e, + 0xd0, 0x87, 0xd5, 0x64, 0x06, 0xed, 0xed, 0xd6, 0x10, 0xb8, 0xc5, 0xf8, 0x60, 0x37, 0x3c, 0x99, + 0xe4, 0xc8, 0x00, 0x77, 0x63, 0x09, 0x2e, 0x15, 0x95, 0x03, 0x78, 0xd9, 0xe6, 0xd0, 0x2f, 0x5f, + 0x04, 0x29, 0x7b, 0xbc, 0x3f, 0x46, 0x32, 0xa9, 0x18, 0x84, 0xba, 0x6d, 0x91, 0x16, 0x06, 0x3d, + 0x67, 0x6c, 0x0c, 0xfa, 0x34, 0x8e, 0x41, 0x5f, 0x85, 0xf2, 0x78, 0xad, 0x13, 0xcb, 0xab, 0x8c, + 0x9d, 0xbf, 0x6c, 0x55, 0xf2, 0x4c, 0x86, 0x88, 0x09, 0x43, 0x41, 0x0c, 0xf7, 0x55, 0x5b, 0x43, + 0xb1, 0x4b, 0x40, 0x79, 0xfe, 0x70, 0x05, 0xb1, 0xf4, 0x31, 0x4e, 0x09, 0xab, 0xca, 0x72, 0xc1, + 0x59, 0xee, 0x71, 0x92, 0xc3, 0xee, 0x40, 0x1f, 0xb3, 0xf0, 0x81, 0xf1, 0xe6, 0x32, 0x13, 0x9e, + 0x22, 0xf9, 0xb5, 0x78, 0xff, 0x8e, 0xc4, 0x91, 0x8b, 0xb6, 0x16, 0xc3, 0x3d, 0x51, 0xd8, 0x11, + 0x83, 0x64, 0x2a, 0xf6, 0xc4, 0xfb, 0xf7, 0x80, 0x02, 0x02, 0x16, 0xc6, 0x1d, 0xb6, 0x6a, 0x9b, + 0x5f, 0x6c, 0x13, 0x50, 0x76, 0x9d, 0x01, 0x82, 0xd8, 0xbe, 0x6e, 0x82, 0xfc, 0x88, 0x1b, 0xc6, + 0xc0, 0x30, 0x8a, 0xad, 0x6f, 0x56, 0x69, 0xca, 0xdb, 0x12, 0x74, 0x90, 0xdf, 0x84, 0xa5, 0x90, + 0x15, 0x60, 0x78, 0x07, 0xf5, 0x4f, 0x62, 0x3f, 0x39, 0x22, 0x3e, 0xef, 0x16, 0x4e, 0xec, 0x4f, + 0xdc, 0xa9, 0xf4, 0xce, 0x3e, 0xbd, 0x65, 0x50, 0x3f, 0x7b, 0x59, 0x3f, 0xd1, 0x9c, 0xec, 0xda, + 0xa6, 0xc2, 0x80, 0x25, 0x57, 0x04, 0x4d, 0x19, 0x10, 0x50, 0xbf, 0x20, 0xd9, 0xd1, 0x85, 0xdc, + 0x25, 0x24, 0x07, 0x0e, 0x26, 0xda, 0xb7, 0xeb, 0x67, 0xbb, 0xcd, 0x6b, 0x8b, 0xd3, 0xa6, 0xc0, + 0x4d, 0xb8, 0x3e, 0xd8, 0x7e, 0x7d, 0x70, 0x4b, 0xe2, 0xfc, 0x99, 0x44, 0x73, 0xa7, 0xf1, 0x07, + 0xbd, 0xe0, 0x20, 0xee, 0x21, 0x6e, 0xb2, 0x07, 0xfa, 0x52, 0x2d, 0xdf, 0xa5, 0xce, 0xf6, 0xc5, + 0x63, 0xbb, 0x6b, 0x36, 0xd5, 0x33, 0x31, 0x1c, 0xbf, 0x74, 0x58, 0x65, 0x6a, 0xeb, 0x10, 0xf1, + 0xe6, 0xfb, 0xfa, 0x48, 0x7c, 0xe0, 0x52, 0xea, 0xec, 0xf1, 0xd4, 0x85, 0xcb, 0x60, 0xae, 0xc5, + 0xc6, 0xb4, 0x9a, 0xb6, 0x00, 0xa6, 0x28, 0xdc, 0x91, 0x85, 0xf2, 0xcd, 0xa5, 0xdf, 0x1f, 0x2f, + 0xc6, 0x72, 0x0b, 0x6f, 0xe5, 0xce, 0x76, 0x5b, 0xd8, 0x2a, 0x80, 0xf1, 0x4b, 0x03, 0xfa, 0x8e, + 0x63, 0x3c, 0xbb, 0x7c, 0xf7, 0x69, 0xbb, 0x76, 0x41, 0x53, 0x5a, 0x05, 0xd4, 0x22, 0x48, 0x8e, + 0x43, 0x90, 0x6b, 0xf4, 0xcf, 0x8f, 0xe8, 0x3b, 0x8e, 0xf1, 0x08, 0x1f, 0x76, 0x03, 0x9f, 0x38, + 0xb1, 0x14, 0xd3, 0x3b, 0x3b, 0x86, 0x4f, 0xb5, 0x82, 0xf8, 0xcb, 0x60, 0xd2, 0x77, 0x9c, 0xd1, + 0xdb, 0xf7, 0x41, 0xde, 0x09, 0xe3, 0x65, 0xe4, 0x3e, 0x16, 0xa7, 0x06, 0xba, 0x12, 0x8f, 0xed, + 0x4a, 0x1c, 0x3d, 0x39, 0x7c, 0xa0, 0x05, 0x12, 0xae, 0xb0, 0x97, 0x0f, 0x38, 0xb3, 0xbf, 0xce, + 0x46, 0x73, 0x4a, 0xbd, 0x91, 0x9a, 0x0d, 0x96, 0xd8, 0x90, 0x96, 0x57, 0xf0, 0x7d, 0xe7, 0x2b, + 0xf8, 0x9a, 0x3d, 0x36, 0x1a, 0x4e, 0x20, 0x75, 0xf9, 0x66, 0x9e, 0xc0, 0x95, 0x68, 0x1c, 0x4e, + 0xfb, 0x55, 0x15, 0x26, 0x80, 0x84, 0x13, 0xc6, 0xd0, 0x32, 0xf9, 0x69, 0x78, 0x1a, 0x60, 0xfc, + 0x64, 0x77, 0x73, 0x65, 0x15, 0x50, 0xb8, 0xc5, 0xe0, 0x80, 0xf2, 0x74, 0xf1, 0xd3, 0xc3, 0xdd, + 0x7b, 0xf4, 0xc1, 0xa8, 0x4a, 0x7b, 0x88, 0x01, 0x94, 0xb7, 0xc9, 0x1f, 0x8a, 0x34, 0x02, 0xee, + 0xa8, 0x2c, 0x0f, 0x93, 0x57, 0x70, 0xb1, 0xa6, 0x94, 0x49, 0xb6, 0x2a, 0xf9, 0x19, 0xdb, 0xf0, + 0x96, 0xfc, 0x20, 0xee, 0x13, 0xd9, 0x86, 0xb0, 0x20, 0xf1, 0xac, 0x1b, 0x47, 0xe2, 0x7d, 0x02, + 0x42, 0xb5, 0x78, 0xef, 0x71, 0x44, 0xc7, 0x6c, 0xde, 0x2a, 0x93, 0xab, 0x90, 0x7f, 0x4b, 0x64, + 0x42, 0x34, 0xa4, 0x63, 0xc8, 0x17, 0xf1, 0xfa, 0x03, 0x73, 0x41, 0xba, 0xcc, 0x43, 0x0c, 0x88, + 0x96, 0x13, 0x07, 0xfa, 0x40, 0x96, 0x1c, 0xef, 0x1f, 0x48, 0xf4, 0xc4, 0x8a, 0xae, 0x0f, 0xb6, + 0x1b, 0x50, 0xed, 0x0f, 0x78, 0x23, 0xbe, 0xb9, 0x7a, 0xe7, 0x57, 0x90, 0x38, 0x34, 0xd1, 0xde, + 0x36, 0xbc, 0xbd, 0x93, 0xa0, 0x0e, 0x8a, 0x34, 0x8a, 0xf8, 0x47, 0x52, 0xad, 0x58, 0xa5, 0x54, + 0xae, 0x50, 0xb9, 0x95, 0x94, 0x1c, 0x11, 0x34, 0xa5, 0x5b, 0x40, 0xfb, 0x05, 0x69, 0x14, 0xc8, + 0x91, 0xbd, 0x89, 0xb6, 0xcb, 0x06, 0xb9, 0x8a, 0x13, 0xa4, 0x90, 0x5b, 0x81, 0xd1, 0x23, 0x79, + 0x32, 0x40, 0x83, 0x41, 0x93, 0x64, 0xee, 0xd4, 0x77, 0x9c, 0xb1, 0xa5, 0x53, 0xb9, 0x16, 0xdd, + 0x42, 0x73, 0x76, 0x5d, 0x8b, 0x6e, 0xb1, 0xbd, 0x27, 0xc9, 0xde, 0xb6, 0x22, 0x57, 0x04, 0x77, + 0x29, 0x0b, 0x3d, 0x9a, 0x76, 0x65, 0xf7, 0x07, 0xbe, 0xfb, 0xa5, 0x85, 0x42, 0x76, 0x60, 0x25, + 0xfc, 0x75, 0xf8, 0x83, 0xaa, 0x71, 0xc6, 0x35, 0x2b, 0xee, 0xc3, 0x03, 0x52, 0x9d, 0x88, 0xb1, + 0x99, 0x64, 0xf0, 0xbb, 0x8e, 0xfb, 0x4c, 0xc8, 0x19, 0xed, 0x7c, 0xe4, 0x75, 0x3c, 0xe8, 0xa4, + 0x43, 0x85, 0x64, 0xeb, 0x0e, 0xf5, 0xeb, 0xb1, 0x3d, 0x7c, 0x4b, 0x86, 0x07, 0xaf, 0x0f, 0xb6, + 0x13, 0x4d, 0x15, 0xb7, 0x1b, 0x84, 0x82, 0x69, 0xed, 0xd2, 0x77, 0x1c, 0xb5, 0x61, 0xc3, 0xff, + 0x9f, 0x80, 0xf2, 0xed, 0x7b, 0x2b, 0x16, 0x98, 0x18, 0x0a, 0x67, 0xb4, 0x31, 0x51, 0x4d, 0x01, + 0x1a, 0x17, 0x6e, 0xac, 0xa9, 0xf1, 0x85, 0xc3, 0xd4, 0x27, 0x95, 0xfc, 0x34, 0x6a, 0x28, 0xb8, + 0x80, 0x09, 0x27, 0x03, 0x86, 0x19, 0x2c, 0x8d, 0x51, 0x16, 0xd8, 0x7d, 0x92, 0x94, 0x43, 0x1e, + 0x2b, 0x51, 0x8d, 0xf1, 0x80, 0x95, 0x04, 0x7e, 0xc2, 0x6e, 0xc1, 0x8d, 0x49, 0x46, 0x9b, 0xc1, + 0x74, 0xe1, 0xf1, 0xf1, 0xd4, 0x3b, 0xf7, 0x0e, 0x22, 0xf1, 0x2a, 0x93, 0x8f, 0x61, 0x01, 0x69, + 0x09, 0x1f, 0x33, 0x56, 0x04, 0x8e, 0xad, 0x05, 0xf3, 0x19, 0x3b, 0xf3, 0xa5, 0x15, 0x2d, 0x02, + 0x0a, 0x6f, 0x15, 0x34, 0xa5, 0xd9, 0x8a, 0x16, 0x37, 0xd9, 0xd0, 0x22, 0xe0, 0x2b, 0x0b, 0x5a, + 0x4c, 0x8b, 0x10, 0x57, 0x55, 0xa8, 0xcb, 0x2b, 0x57, 0x28, 0xab, 0x2a, 0x6e, 0x0d, 0x21, 0x8a, + 0xbf, 0x37, 0x55, 0xb7, 0xa0, 0x1c, 0xac, 0xd5, 0x14, 0xaf, 0xa9, 0xb8, 0x5d, 0x13, 0xef, 0xef, + 0x48, 0x9e, 0x3d, 0x4e, 0x1e, 0x95, 0x13, 0xcd, 0xf1, 0xd8, 0xae, 0xf8, 0xc0, 0x40, 0x7c, 0x68, + 0x2f, 0x3c, 0xc8, 0xc3, 0x5b, 0x87, 0x6c, 0x8a, 0x5d, 0xa2, 0x0c, 0xc0, 0xb9, 0xf2, 0xf4, 0xd6, + 0x6e, 0x66, 0x03, 0x75, 0x7d, 0xb0, 0x7d, 0x45, 0x30, 0xa2, 0xfa, 0xbc, 0xb5, 0x9b, 0x93, 0xbd, + 0x6d, 0xa6, 0xce, 0xf5, 0x26, 0xf4, 0x7c, 0xfc, 0x0b, 0xf4, 0x07, 0x21, 0x8d, 0xa2, 0x8f, 0x98, + 0x26, 0xd9, 0x55, 0x7d, 0x61, 0x66, 0x58, 0x44, 0x39, 0x28, 0xc6, 0xeb, 0x10, 0x61, 0x28, 0xaf, + 0xad, 0x25, 0x40, 0x32, 0x8f, 0x20, 0x95, 0x44, 0x5b, 0x14, 0xf2, 0x4d, 0x31, 0x2e, 0x1e, 0xa8, + 0xd9, 0xf8, 0x60, 0x77, 0xea, 0xf4, 0x29, 0xbd, 0x73, 0x37, 0x6c, 0x0d, 0x23, 0x6c, 0x40, 0x5f, + 0x38, 0xdf, 0xae, 0x30, 0xfc, 0x81, 0x78, 0x9f, 0x0f, 0xac, 0x97, 0x30, 0xd7, 0x64, 0x9f, 0x2d, + 0x9c, 0x6d, 0x11, 0x41, 0xab, 0x0e, 0xfe, 0x06, 0xe6, 0x61, 0x5a, 0x68, 0x3b, 0x13, 0xeb, 0xc2, + 0x5a, 0x8d, 0xbf, 0x71, 0xd6, 0x6a, 0xe7, 0x6d, 0x64, 0xad, 0x4a, 0xc2, 0x9a, 0xd2, 0x80, 0x02, + 0x92, 0x0b, 0xca, 0x90, 0xcb, 0x89, 0x1c, 0x19, 0xdf, 0x5c, 0x80, 0x20, 0x7c, 0xb0, 0xbb, 0xe0, + 0x0d, 0x67, 0xba, 0x79, 0x82, 0x55, 0x71, 0x21, 0x95, 0x4f, 0xb0, 0xad, 0x76, 0x7d, 0xa0, 0xb7, + 0x65, 0x51, 0xaf, 0xfb, 0x9f, 0x00, 0x13, 0x02, 0xdb, 0x73, 0x6f, 0x31, 0x21, 0x2d, 0x82, 0xa6, + 0x6c, 0x11, 0xd0, 0x9f, 0x4a, 0x6e, 0xc7, 0x20, 0xbf, 0x3b, 0x96, 0x57, 0xf7, 0xb6, 0xbc, 0xb7, + 0x3b, 0x32, 0xd1, 0xcc, 0xe5, 0x41, 0x62, 0x78, 0xb1, 0x2a, 0x68, 0x11, 0x4c, 0xaf, 0x71, 0xbe, + 0x58, 0x8b, 0xd2, 0x47, 0x66, 0x37, 0xde, 0xaa, 0xec, 0x31, 0xbd, 0x55, 0xd5, 0x56, 0x99, 0xdb, + 0xab, 0x9a, 0x32, 0x9f, 0xbe, 0x55, 0x4f, 0x1a, 0xff, 0x79, 0xe8, 0x0b, 0x75, 0x7d, 0xb0, 0x3d, + 0xd1, 0x13, 0xd5, 0x4f, 0x9c, 0x06, 0x66, 0x3b, 0x75, 0xb1, 0x25, 0x75, 0x65, 0xfb, 0x33, 0x0b, + 0x17, 0x7e, 0x5f, 0x3a, 0x5e, 0x13, 0x72, 0x72, 0x85, 0xfc, 0x5a, 0x53, 0xfa, 0xb6, 0xd6, 0x8a, + 0x38, 0xe0, 0xb9, 0x7a, 0x43, 0x53, 0x1e, 0xb7, 0x22, 0x8e, 0x69, 0x0c, 0x11, 0x59, 0xb2, 0xae, + 0x8f, 0x4d, 0xa1, 0x4a, 0xa2, 0xf8, 0xa7, 0xdb, 0x30, 0x2e, 0x86, 0x72, 0xbc, 0xbf, 0x97, 0x1c, + 0xcc, 0xe9, 0x01, 0x26, 0xd7, 0x4a, 0x9c, 0x3b, 0xc6, 0x05, 0x9b, 0x76, 0xb9, 0x95, 0xff, 0x9c, + 0x89, 0x0a, 0x9c, 0x63, 0xdf, 0x1f, 0x57, 0xf3, 0xfd, 0x31, 0x5c, 0x4d, 0x30, 0x30, 0xc6, 0x57, + 0xf3, 0x69, 0xfd, 0xdb, 0x6d, 0xe9, 0x76, 0xc8, 0xea, 0x17, 0x71, 0xb7, 0x6f, 0x2a, 0x49, 0xd8, + 0x9d, 0xf6, 0x60, 0x46, 0xfc, 0x14, 0x7e, 0xab, 0x9c, 0x12, 0xef, 0xff, 0x9e, 0x81, 0x66, 0xab, + 0xbe, 0x7a, 0x3a, 0xf0, 0xe2, 0x50, 0xb0, 0xfe, 0x8e, 0x5c, 0xc0, 0x0a, 0xeb, 0x05, 0x5c, 0x60, + 0x60, 0x4c, 0x72, 0x01, 0x67, 0x12, 0x62, 0x11, 0x53, 0x6f, 0x1c, 0xb1, 0x78, 0xb7, 0xae, 0x1c, + 0x09, 0x65, 0x39, 0xd2, 0x36, 0xc9, 0x73, 0xd8, 0x8b, 0x68, 0x6e, 0x3d, 0x5e, 0xff, 0x08, 0x0f, + 0xe0, 0x7f, 0xcb, 0x44, 0x0f, 0xbb, 0x8f, 0x79, 0x7f, 0x5c, 0xb7, 0x35, 0x63, 0xb8, 0x6e, 0x7c, + 0x66, 0x82, 0xf8, 0xc0, 0x2e, 0xdb, 0xe6, 0xdc, 0x73, 0x17, 0x8d, 0xe6, 0xb6, 0x1b, 0xe9, 0x58, + 0x68, 0x52, 0xeb, 0xe4, 0x40, 0x33, 0x7f, 0xc4, 0xec, 0x89, 0xe4, 0xdf, 0x3e, 0x68, 0xc0, 0xbf, + 0x7d, 0x85, 0xff, 0x90, 0x89, 0x0a, 0xca, 0xea, 0x7c, 0xde, 0x00, 0x31, 0xd3, 0xbb, 0x23, 0xb7, + 0x6d, 0xa9, 0xf5, 0xb6, 0x3d, 0xcf, 0xab, 0x98, 0xe0, 0xb6, 0x81, 0x5d, 0xa2, 0x7e, 0xe8, 0x48, + 0x62, 0xcf, 0xc5, 0xbb, 0x7f, 0xe7, 0x6e, 0x51, 0x9e, 0x56, 0xf2, 0xb1, 0xa6, 0x44, 0x50, 0x48, + 0x4a, 0xbb, 0xd1, 0x72, 0x11, 0x0f, 0x8c, 0xf1, 0xfe, 0x5e, 0xfe, 0xf3, 0x29, 0x11, 0xeb, 0x76, + 0x75, 0xad, 0x86, 0x82, 0xb0, 0x21, 0xbc, 0xc1, 0xe0, 0xee, 0x2c, 0xf4, 0x90, 0xcb, 0xa4, 0xf7, + 0xc7, 0x85, 0x7e, 0x6b, 0x0c, 0x17, 0xda, 0x12, 0xa9, 0x08, 0x06, 0xe9, 0x6e, 0x86, 0xdd, 0xbb, + 0x57, 0x2e, 0x71, 0x87, 0xa0, 0x29, 0x6d, 0x02, 0xda, 0x26, 0x48, 0xe9, 0x8f, 0x42, 0xf6, 0xf3, + 0x26, 0xd3, 0xe6, 0xdd, 0xdd, 0x73, 0x2e, 0x1e, 0xdb, 0x95, 0xea, 0x3b, 0x09, 0x14, 0x52, 0xbc, + 0x3f, 0xa6, 0x0f, 0x36, 0x25, 0x7a, 0x4f, 0xb2, 0x90, 0x39, 0x46, 0x15, 0x50, 0xbe, 0x03, 0x2d, + 0xa9, 0xad, 0x43, 0x70, 0xd7, 0xf9, 0xcf, 0x27, 0x77, 0xbd, 0xf7, 0x0b, 0xbd, 0xbf, 0x1f, 0xdc, + 0xd3, 0x0a, 0xff, 0x29, 0x13, 0xcd, 0x72, 0x2c, 0x64, 0x8d, 0xfc, 0x43, 0xdf, 0xf9, 0x77, 0xac, + 0xe2, 0x98, 0x52, 0x83, 0x81, 0x25, 0x77, 0x7e, 0xc1, 0x88, 0x77, 0x1e, 0x8b, 0x4a, 0xae, 0x24, + 0xf7, 0x9c, 0x79, 0xba, 0xf8, 0x69, 0xbd, 0x75, 0x9b, 0xde, 0xf6, 0x07, 0x9b, 0x58, 0xe6, 0x3e, + 0x40, 0x00, 0x9b, 0x35, 0x65, 0x13, 0x8a, 0x48, 0x23, 0xec, 0xfb, 0x0f, 0x86, 0x02, 0xf6, 0x66, + 0xa1, 0xd9, 0xae, 0xd3, 0x3e, 0x40, 0x02, 0x77, 0x10, 0x09, 0x98, 0xb6, 0xe4, 0x23, 0x1d, 0xc6, + 0x9d, 0x44, 0x03, 0x7f, 0x99, 0x01, 0x29, 0xa9, 0xdc, 0xb1, 0xc0, 0x5d, 0x32, 0xd0, 0x15, 0x3f, + 0x45, 0x39, 0xc1, 0xc6, 0x48, 0x43, 0x63, 0x84, 0x00, 0xd7, 0x5a, 0x4d, 0xf9, 0x50, 0x22, 0x45, + 0xf2, 0x6a, 0x30, 0x67, 0x34, 0x2d, 0x96, 0x3a, 0xfb, 0x86, 0xa3, 0x6d, 0x7a, 0x74, 0xd0, 0xf3, + 0xb1, 0xbf, 0xd6, 0x37, 0x57, 0x6f, 0x39, 0x33, 0xbc, 0xf5, 0x0c, 0xd4, 0x16, 0x15, 0x7b, 0xd6, + 0x7a, 0xc3, 0xfe, 0x9a, 0xb9, 0xfa, 0xd1, 0x58, 0xa2, 0xe7, 0x1b, 0x52, 0xc8, 0x64, 0xa6, 0x7c, + 0xa9, 0x4a, 0x86, 0x2f, 0x79, 0x59, 0x53, 0x16, 0xa1, 0x17, 0xa4, 0x99, 0xf6, 0x5d, 0x49, 0x67, + 0x20, 0xcc, 0x6b, 0xe4, 0x0a, 0xff, 0xe7, 0x4c, 0x34, 0xcb, 0x6d, 0x3b, 0xef, 0x8f, 0x5b, 0xb6, + 0xd2, 0xa2, 0xda, 0x79, 0x24, 0xad, 0xf1, 0x13, 0x4e, 0x0a, 0x8d, 0x1d, 0x16, 0xe1, 0xba, 0x4d, + 0xc1, 0xe8, 0xc6, 0x25, 0xad, 0xfb, 0x5d, 0xbc, 0x6a, 0x84, 0x3f, 0x1a, 0xe1, 0x34, 0xe4, 0x27, + 0x89, 0x3a, 0xea, 0xf3, 0xaf, 0x4d, 0xda, 0x99, 0xba, 0x65, 0x18, 0x5f, 0x64, 0x33, 0x58, 0x04, + 0xb9, 0xd0, 0x5f, 0x4e, 0x40, 0x93, 0x2c, 0x1b, 0x21, 0x2e, 0x02, 0x1f, 0x5f, 0x76, 0x3f, 0xf0, + 0x19, 0x91, 0x22, 0x79, 0x2a, 0x11, 0x37, 0xc5, 0x76, 0xfb, 0x89, 0xef, 0x4b, 0x65, 0xb9, 0x4a, + 0x2a, 0xc5, 0x97, 0xd0, 0x38, 0x7f, 0x20, 0xe0, 0x0b, 0x55, 0x56, 0x99, 0xf9, 0xfd, 0x1e, 0x96, + 0x68, 0x99, 0x3c, 0x85, 0x80, 0xd6, 0xb6, 0x96, 0xe4, 0xd0, 0xee, 0x78, 0xff, 0x40, 0x65, 0x95, + 0x4a, 0xeb, 0xc4, 0xf7, 0xd0, 0x44, 0x3a, 0xa0, 0x19, 0x8d, 0xa3, 0xf4, 0x45, 0x4d, 0x79, 0x4e, + 0xb2, 0x54, 0xc8, 0x4f, 0x24, 0x7a, 0x62, 0xfa, 0x91, 0x9d, 0xe4, 0x70, 0x68, 0x68, 0x44, 0xb8, + 0x36, 0xa9, 0xad, 0x43, 0xc4, 0x94, 0xca, 0xd2, 0x47, 0xfc, 0x39, 0xca, 0x2c, 0xab, 0x5a, 0x8d, + 0x91, 0xed, 0x24, 0x80, 0x1b, 0xe3, 0x37, 0x35, 0xbb, 0x2c, 0xab, 0x5a, 0x4d, 0x60, 0xcd, 0x28, + 0x15, 0xe7, 0xa3, 0xcc, 0x7a, 0x5f, 0x3d, 0x49, 0xcb, 0x87, 0x81, 0xc2, 0xf8, 0x4d, 0xfd, 0x2e, + 0xf5, 0x6d, 0x2d, 0x7a, 0xef, 0x01, 0xda, 0xbe, 0xde, 0x57, 0x2f, 0x2e, 0x42, 0x99, 0x4b, 0xaa, + 0x56, 0x9b, 0xa9, 0xf8, 0x1e, 0x97, 0x8c, 0xdf, 0xf2, 0xc3, 0xd0, 0x7e, 0x09, 0x1d, 0x9c, 0x5f, + 0xe1, 0x42, 0xd5, 0x68, 0x22, 0x76, 0x0a, 0x28, 0x27, 0x8c, 0x15, 0x5f, 0x44, 0xa2, 0x6e, 0x10, + 0xd4, 0x12, 0x29, 0x92, 0x3f, 0x22, 0x87, 0x88, 0x35, 0x17, 0x74, 0x8c, 0xd6, 0xc4, 0xb1, 0xcb, + 0x89, 0x8e, 0xb3, 0x96, 0xa8, 0x00, 0x34, 0x82, 0xfa, 0xf5, 0xc1, 0xb6, 0xeb, 0x83, 0xed, 0xc4, + 0x06, 0xaa, 0xd8, 0x53, 0x5e, 0xb1, 0xac, 0x62, 0x55, 0x05, 0xfe, 0xb3, 0x4c, 0xad, 0x50, 0x56, + 0xe1, 0xbf, 0x16, 0x2b, 0x95, 0xcb, 0x2a, 0xca, 0x8b, 0x3d, 0x95, 0x2b, 0x2a, 0x57, 0x55, 0x2a, + 0xcb, 0x2a, 0xdf, 0x55, 0x56, 0x55, 0xae, 0x5c, 0xa1, 0x92, 0x39, 0x45, 0x05, 0xe5, 0x7c, 0x1a, + 0x0c, 0xf8, 0x98, 0x3c, 0xbe, 0xc8, 0x60, 0x61, 0xb2, 0x8c, 0x22, 0x6a, 0xc3, 0xa9, 0x77, 0xf6, + 0x25, 0xf7, 0x9c, 0xd1, 0xdb, 0x63, 0xf6, 0x1d, 0x27, 0x1d, 0xc5, 0xdf, 0x5a, 0x51, 0x2c, 0x44, + 0xe9, 0x7a, 0x57, 0x53, 0x7e, 0x61, 0x45, 0xb1, 0x6f, 0x12, 0xa2, 0x80, 0x26, 0x43, 0xe7, 0x31, + 0x2e, 0xb6, 0x89, 0x63, 0x23, 0xcf, 0x8d, 0x0f, 0xb4, 0x50, 0xcd, 0xb4, 0x3e, 0xa4, 0xe9, 0xe7, + 0x8e, 0xc4, 0x63, 0xbb, 0xd8, 0x50, 0x45, 0x56, 0x44, 0xbb, 0x98, 0x27, 0xf3, 0x90, 0x99, 0xae, + 0x8e, 0x23, 0xf3, 0x0a, 0x6c, 0x33, 0xb3, 0x04, 0x70, 0x3c, 0x59, 0xf7, 0x0c, 0xca, 0x5c, 0x53, + 0x55, 0x46, 0xc2, 0x76, 0x61, 0x28, 0x36, 0x7e, 0xd3, 0x88, 0x04, 0xac, 0xef, 0x9a, 0xaa, 0x32, + 0x4f, 0x65, 0xb9, 0x6a, 0xd4, 0x89, 0xef, 0x31, 0x63, 0xda, 0x89, 0x34, 0x26, 0xef, 0x1b, 0xcc, + 0x98, 0xf6, 0x05, 0xbe, 0x23, 0x98, 0xd1, 0x9a, 0xda, 0xa7, 0xcb, 0x57, 0xf4, 0x4b, 0xc6, 0x83, + 0x98, 0xb8, 0x74, 0x4e, 0xef, 0x39, 0x6f, 0x6c, 0xec, 0x8e, 0x63, 0xfa, 0xa5, 0x23, 0xc9, 0xde, + 0x36, 0x66, 0x64, 0xbb, 0x02, 0xe5, 0x34, 0x78, 0xc3, 0xe1, 0x8f, 0x6b, 0x89, 0x3b, 0x3c, 0x84, + 0x51, 0x83, 0x22, 0xb9, 0xc8, 0xe6, 0xc0, 0x4f, 0x2d, 0x0b, 0x81, 0xfe, 0x04, 0xb3, 0xa8, 0xd4, + 0xe9, 0x2f, 0xf4, 0xbe, 0x6d, 0x2a, 0xe9, 0x22, 0x7e, 0x80, 0xf0, 0xa9, 0x62, 0xc7, 0xf8, 0x49, + 0xa5, 0x95, 0xff, 0x1f, 0x7b, 0x6f, 0x02, 0x1d, 0xc5, 0xb5, 0x25, 0x08, 0xfe, 0x48, 0x2d, 0x48, + 0x0f, 0xb1, 0x85, 0x01, 0xcb, 0x62, 0x4b, 0xa7, 0xb1, 0x2d, 0xd2, 0x12, 0x82, 0x00, 0x6f, 0xf2, + 0xc7, 0x76, 0x48, 0x02, 0xbe, 0xbe, 0x59, 0xe4, 0x10, 0xf0, 0xfd, 0xed, 0x6f, 0xe3, 0x24, 0x33, + 0x10, 0xf9, 0x49, 0x65, 0xe6, 0xcf, 0x4c, 0x61, 0x83, 0xeb, 0xd7, 0x08, 0x8c, 0x00, 0x19, 0xb1, + 0x85, 0x0d, 0x18, 0x59, 0x18, 0xb0, 0xc1, 0xe0, 0x45, 0x08, 0x8c, 0x17, 0x21, 0x09, 0xd3, 0x75, + 0xba, 0xab, 0xa7, 0xa7, 0xba, 0xaa, 0xbb, 0xda, 0x5d, 0x35, 0x35, 0xa7, 0xba, 0xbb, 0xaa, 0xbb, + 0x9d, 0x91, 0x29, 0xf5, 0x4c, 0x1f, 0xba, 0xe7, 0xcc, 0x99, 0xd3, 0xe3, 0xe9, 0xea, 0x99, 0xf3, + 0xde, 0x7d, 0x2f, 0xe2, 0x45, 0x46, 0x44, 0x4a, 0xf2, 0x82, 0xc1, 0xdf, 0xe7, 0x70, 0x50, 0xc6, + 0xdb, 0x97, 0x7b, 0xef, 0xbb, 0xef, 0xde, 0xfb, 0xee, 0xd5, 0xe4, 0x15, 0x7e, 0xba, 0x81, 0xec, + 0xe2, 0x6d, 0x6c, 0x34, 0xc4, 0xfe, 0xe4, 0x36, 0xe4, 0x31, 0xaf, 0xe1, 0x0e, 0x14, 0x04, 0xd5, + 0xc0, 0xc7, 0xa6, 0x07, 0x0e, 0xd6, 0xcb, 0x0a, 0x69, 0x56, 0x94, 0x51, 0x49, 0x48, 0xdd, 0x16, + 0xc6, 0xc4, 0x81, 0xbe, 0x68, 0xbf, 0x57, 0x93, 0x7d, 0x7e, 0x23, 0x51, 0x9a, 0x59, 0x2f, 0x7b, + 0x19, 0x8a, 0x0e, 0x5f, 0xfc, 0x42, 0x3f, 0xbb, 0xb7, 0xb1, 0x41, 0x3f, 0xf4, 0xb9, 0x62, 0x94, + 0x10, 0xff, 0xc8, 0x24, 0x08, 0x4a, 0xcc, 0x70, 0x91, 0xfe, 0x8c, 0x26, 0xaf, 0xf7, 0x5b, 0x32, + 0xa4, 0xe5, 0x94, 0xad, 0x38, 0xaf, 0x0d, 0x77, 0x62, 0x3a, 0xb0, 0x5a, 0x6e, 0x5e, 0xb7, 0x5c, + 0xa9, 0xf2, 0xfe, 0x6a, 0xad, 0xf2, 0x14, 0xfe, 0xbb, 0x7c, 0x5d, 0x7d, 0x43, 0x95, 0x17, 0x52, + 0x37, 0x92, 0x0f, 0x79, 0xd5, 0x2a, 0x66, 0xa5, 0x9f, 0xee, 0x1f, 0x80, 0x72, 0x8a, 0xa5, 0x51, + 0xf1, 0x8f, 0xd1, 0xa4, 0xb6, 0x68, 0x73, 0x70, 0x8b, 0x1a, 0x6a, 0x8b, 0x10, 0x3f, 0xa9, 0xd3, + 0xc8, 0x42, 0x91, 0xee, 0xad, 0x39, 0x52, 0xc3, 0xf0, 0xa5, 0x57, 0xf5, 0x81, 0xf7, 0x00, 0x4f, + 0xcd, 0xa3, 0xb8, 0x7d, 0x68, 0xd1, 0xf0, 0x99, 0x0b, 0xd9, 0xb3, 0x03, 0xfa, 0xa1, 0x5d, 0xe9, + 0xfe, 0x83, 0x50, 0xe8, 0xc6, 0x50, 0xd7, 0x62, 0x48, 0x25, 0x5e, 0x51, 0xcd, 0x0c, 0xc5, 0xda, + 0xa8, 0xf8, 0x30, 0x2a, 0xc1, 0x60, 0x6d, 0xbc, 0x87, 0x2f, 0x05, 0x57, 0x5c, 0x46, 0xa2, 0x54, + 0x46, 0x77, 0x09, 0xec, 0xc5, 0x8d, 0x74, 0xdf, 0x97, 0x05, 0x10, 0x1f, 0xf6, 0x76, 0xbc, 0x19, + 0xaf, 0xb0, 0x1c, 0xd7, 0xd3, 0x9d, 0x8e, 0xeb, 0x5b, 0xfd, 0x94, 0x5e, 0xa7, 0xc9, 0x4f, 0xa3, + 0xb5, 0x7e, 0xd7, 0x2d, 0xf8, 0x66, 0x67, 0xf4, 0xbf, 0x28, 0x40, 0xb3, 0xe1, 0xc5, 0x3a, 0x44, + 0x7c, 0x08, 0x47, 0x57, 0x07, 0x5e, 0x6e, 0x0e, 0xef, 0x50, 0xc7, 0xfb, 0x5a, 0xda, 0x76, 0x45, + 0x74, 0xba, 0xe4, 0x5a, 0x29, 0xea, 0x33, 0x68, 0x42, 0x6b, 0x38, 0x8a, 0x3b, 0x23, 0x30, 0x30, + 0xa9, 0xee, 0x71, 0x7c, 0x26, 0xb3, 0x34, 0x69, 0x41, 0xfa, 0xfa, 0xc5, 0xcc, 0x1b, 0x57, 0xa3, + 0xdc, 0xab, 0xbb, 0x00, 0x75, 0x83, 0x13, 0x8e, 0xb6, 0x80, 0xdd, 0x65, 0xba, 0x7f, 0xff, 0xc8, + 0x89, 0xc3, 0x2c, 0x88, 0x2d, 0xab, 0x4a, 0x5a, 0x86, 0x69, 0x10, 0x10, 0x31, 0x5a, 0x86, 0xb4, + 0x31, 0xb6, 0xfc, 0x9a, 0xa5, 0x65, 0xa8, 0x2a, 0x3e, 0x69, 0xbb, 0xd6, 0xce, 0x27, 0xd8, 0x63, + 0x5c, 0x6b, 0xcb, 0xe0, 0x5a, 0x9b, 0x1e, 0x18, 0xd0, 0x8f, 0xbc, 0x69, 0x06, 0xce, 0x37, 0x6f, + 0xb6, 0xcf, 0x6b, 0xf2, 0xb3, 0xe8, 0x19, 0x7f, 0xde, 0x55, 0x97, 0xfc, 0x30, 0x42, 0x63, 0x51, + 0x33, 0x3d, 0xed, 0xfa, 0xa5, 0x43, 0xa0, 0xc8, 0xa2, 0xf1, 0x6e, 0x2e, 0x5e, 0x1d, 0x39, 0x71, + 0x78, 0xe4, 0x9d, 0x93, 0xd6, 0x0b, 0xad, 0xaf, 0xbb, 0x00, 0xcd, 0x71, 0x69, 0xfa, 0xf6, 0x40, + 0x55, 0x07, 0x14, 0x2b, 0xbc, 0x49, 0x28, 0xb6, 0x51, 0x93, 0x7f, 0x83, 0x9e, 0xf5, 0xe7, 0x5f, + 0x3f, 0xe9, 0xd1, 0xb1, 0xef, 0x8d, 0xa1, 0xaa, 0x83, 0x39, 0xfa, 0x0e, 0x59, 0x37, 0x47, 0x4e, + 0xae, 0x0b, 0xb7, 0xaa, 0x4a, 0x20, 0xda, 0x72, 0x33, 0xd0, 0x6d, 0x1b, 0x42, 0x29, 0xd6, 0x1d, + 0x08, 0x92, 0x1d, 0x5e, 0x6d, 0x18, 0x03, 0x02, 0x83, 0x09, 0xae, 0x86, 0xe4, 0xd7, 0x2f, 0x76, + 0x67, 0x8e, 0x7f, 0x06, 0x46, 0x1d, 0x74, 0x96, 0x9c, 0xc5, 0xa2, 0x25, 0x6a, 0x05, 0x57, 0x0f, + 0x1f, 0x38, 0x06, 0xca, 0x14, 0x70, 0x07, 0x8e, 0x33, 0xca, 0x70, 0x98, 0x42, 0xc3, 0xcd, 0xe6, + 0x5f, 0x31, 0xe9, 0xee, 0x1c, 0x57, 0x1c, 0x30, 0xca, 0x4c, 0xe7, 0xfb, 0xd9, 0xa1, 0xf7, 0xb3, + 0xbd, 0xc7, 0xb2, 0x47, 0xcf, 0xe5, 0x8a, 0x7c, 0xb8, 0xc1, 0xf9, 0x8e, 0x17, 0xa0, 0xb9, 0x6e, + 0xed, 0xff, 0x84, 0x2f, 0xa3, 0xe0, 0xcb, 0x73, 0x9a, 0xfc, 0x0c, 0xda, 0xe0, 0x1f, 0x65, 0x01, + 0xa5, 0xa5, 0x2d, 0x79, 0xb6, 0x88, 0x59, 0x81, 0xe2, 0x8d, 0xb2, 0xe0, 0xca, 0xdf, 0x09, 0xe8, + 0x9e, 0x75, 0x89, 0x40, 0x34, 0x69, 0x54, 0x5b, 0x17, 0xe3, 0xdd, 0x7a, 0x31, 0x8c, 0x09, 0x39, + 0x61, 0x4c, 0x1d, 0xe6, 0xcc, 0x2d, 0x18, 0x33, 0x93, 0xfb, 0xe0, 0x4c, 0x7b, 0x98, 0x2f, 0xea, + 0x51, 0x90, 0x87, 0x3d, 0xe6, 0x1b, 0xcb, 0x88, 0xa4, 0x3b, 0x8d, 0xf6, 0x87, 0xaf, 0x7d, 0x94, + 0x39, 0xf0, 0x0e, 0x4c, 0x2b, 0x57, 0xf4, 0xe8, 0xdb, 0x53, 0x80, 0xe6, 0xe7, 0x6f, 0xee, 0xf6, + 0x00, 0xc0, 0x08, 0x2a, 0x49, 0x31, 0x77, 0x6c, 0x85, 0x63, 0x70, 0xc7, 0x46, 0x34, 0xf8, 0x46, + 0x15, 0xe9, 0x1e, 0xf6, 0x0b, 0x16, 0x2b, 0xc7, 0xbc, 0x6b, 0xb8, 0xef, 0xbd, 0xcc, 0xab, 0x1d, + 0x8a, 0x51, 0x9c, 0x6d, 0xc4, 0x98, 0x56, 0x4e, 0x9a, 0x9f, 0xb3, 0x13, 0xe9, 0xfe, 0x01, 0xbe, + 0x71, 0x0a, 0x69, 0xbb, 0xad, 0x54, 0xb9, 0x41, 0x4d, 0x86, 0x13, 0x6a, 0xe8, 0x26, 0x31, 0x41, + 0xf5, 0x24, 0x94, 0x14, 0xeb, 0x90, 0x32, 0x42, 0x77, 0x6b, 0xf2, 0x5c, 0x3f, 0x9f, 0x2e, 0x4d, + 0xc9, 0x61, 0x59, 0x14, 0x3e, 0x57, 0x7c, 0xdc, 0x46, 0x62, 0x7d, 0x79, 0xb9, 0x92, 0xc2, 0x84, + 0xc5, 0x49, 0x88, 0xe1, 0x79, 0x35, 0xff, 0x32, 0x48, 0x4f, 0xda, 0x4e, 0xbe, 0x53, 0x99, 0x9e, + 0xb7, 0xcc, 0x1d, 0x3b, 0x7a, 0xa9, 0x0a, 0xce, 0x05, 0xbd, 0xf3, 0x40, 0xfa, 0xfa, 0xc9, 0xe1, + 0xbe, 0x9d, 0xe0, 0x77, 0x22, 0xdd, 0xdf, 0x3e, 0xbc, 0xf7, 0x93, 0x4c, 0xfb, 0xf9, 0x5c, 0x4a, + 0xcc, 0x4f, 0xc2, 0x77, 0xd8, 0x4a, 0x8a, 0x2d, 0xfd, 0xff, 0x44, 0x8a, 0xc7, 0x76, 0x3b, 0x70, + 0x58, 0x40, 0xbc, 0x5b, 0x06, 0x42, 0x54, 0xe7, 0x50, 0x62, 0xd8, 0x41, 0x63, 0xfb, 0x72, 0xf9, + 0x95, 0x63, 0x85, 0x4e, 0x98, 0x01, 0x2d, 0x7e, 0xef, 0x98, 0xb1, 0xca, 0xc0, 0x0c, 0x62, 0x63, + 0x09, 0x98, 0x01, 0x7e, 0x2c, 0xb9, 0x74, 0xa9, 0x1c, 0xe6, 0x90, 0x23, 0x64, 0xce, 0x1c, 0xbd, + 0xa4, 0xf0, 0xc5, 0xc4, 0x06, 0x1b, 0x8a, 0x54, 0x62, 0x24, 0x33, 0x51, 0x44, 0x04, 0xd0, 0xcd, + 0x8b, 0x28, 0xe2, 0x51, 0x01, 0x15, 0xb7, 0x06, 0xa2, 0x6d, 0x81, 0x08, 0x35, 0x12, 0xfe, 0xbd, + 0x26, 0xef, 0xf0, 0xd3, 0x24, 0x29, 0x0e, 0xcf, 0x1f, 0xf8, 0x86, 0xaa, 0xd8, 0x0e, 0xe6, 0x66, + 0xe0, 0x5b, 0xfa, 0xce, 0x6e, 0xc0, 0x0f, 0x0c, 0x83, 0xed, 0xed, 0xa0, 0x7e, 0xb8, 0x31, 0xd4, + 0xa5, 0x5f, 0x3e, 0x8a, 0x2f, 0xf7, 0xc4, 0x6f, 0x20, 0x66, 0x28, 0x7b, 0xcf, 0x8d, 0x7c, 0x40, + 0x5c, 0x0f, 0x11, 0xe3, 0x66, 0x68, 0x70, 0x64, 0xef, 0x81, 0xe1, 0xbe, 0xa3, 0x0a, 0xed, 0xb9, + 0x36, 0xaa, 0xc9, 0x5b, 0x51, 0xd8, 0x9f, 0x7f, 0xb3, 0x6c, 0xac, 0x92, 0x1d, 0x7f, 0xdd, 0x10, + 0x74, 0x0d, 0xb9, 0x32, 0x9a, 0x3a, 0xb2, 0xff, 0xe8, 0x88, 0xab, 0x3c, 0xa8, 0xdd, 0xea, 0xb8, + 0xda, 0x34, 0x06, 0x35, 0x19, 0x1f, 0x7b, 0xc9, 0x54, 0x93, 0x71, 0xef, 0x61, 0x6f, 0x15, 0x65, + 0xd9, 0xf7, 0x83, 0xfd, 0x5f, 0x0a, 0x68, 0xde, 0x72, 0xe2, 0xc3, 0xc2, 0xa8, 0xc1, 0xfc, 0xca, + 0xde, 0x04, 0xfc, 0x67, 0x93, 0x1a, 0x6d, 0x08, 0xd2, 0x5c, 0x70, 0xc1, 0x61, 0x12, 0x00, 0x76, + 0x41, 0x01, 0x9b, 0xe7, 0x1c, 0xae, 0xeb, 0x48, 0x01, 0xf2, 0xba, 0xb7, 0xf8, 0xd3, 0x39, 0x33, + 0x0a, 0xa4, 0x35, 0x6b, 0x72, 0x13, 0x5a, 0xe3, 0x1f, 0x75, 0x09, 0x25, 0x7f, 0xfe, 0x5d, 0xe1, + 0xe7, 0xe5, 0xfb, 0x2b, 0x01, 0x79, 0x1b, 0xc2, 0xc9, 0x1f, 0x0c, 0xd2, 0xd6, 0x6b, 0xb2, 0x82, + 0x9a, 0xfc, 0xa3, 0x8e, 0x41, 0x9a, 0xab, 0x77, 0x5c, 0x19, 0x39, 0xde, 0x3b, 0x46, 0x50, 0x7b, + 0xbd, 0x00, 0xdd, 0x9d, 0xa7, 0xc9, 0x9f, 0x60, 0x6d, 0x6c, 0x54, 0x6d, 0xf4, 0x35, 0x94, 0xfc, + 0xf9, 0xf7, 0xc5, 0x02, 0x6c, 0xff, 0x11, 0xa1, 0x69, 0xf0, 0x7a, 0x1f, 0xd3, 0x78, 0x06, 0x5d, + 0xbf, 0x47, 0x25, 0xa9, 0x40, 0x72, 0x2b, 0x51, 0x10, 0x1a, 0xae, 0x8b, 0x5e, 0xf0, 0x1b, 0x89, + 0x92, 0x02, 0xb4, 0xde, 0x08, 0xa0, 0x06, 0x0a, 0x16, 0x16, 0xc9, 0x9c, 0x2c, 0xc4, 0x8d, 0xa1, + 0x2e, 0xf6, 0x18, 0x78, 0x5d, 0xcc, 0x4c, 0xe3, 0x8c, 0xf3, 0x57, 0x24, 0x62, 0xad, 0x34, 0x23, + 0xdb, 0xdb, 0xa9, 0x18, 0xad, 0x8b, 0x2d, 0x86, 0xba, 0x0e, 0xf6, 0x74, 0x2d, 0xd9, 0x18, 0xaa, + 0xae, 0x2b, 0xa3, 0x5d, 0x13, 0x35, 0xc0, 0xd7, 0x75, 0x4b, 0x12, 0x8b, 0x95, 0x32, 0x43, 0xcb, + 0xd6, 0xb8, 0x66, 0xa5, 0x32, 0x81, 0x6a, 0xe6, 0x94, 0x09, 0xcd, 0xeb, 0xeb, 0xeb, 0x97, 0x37, + 0x37, 0x2b, 0xc5, 0xa0, 0x8d, 0x53, 0x26, 0xac, 0x6b, 0x5c, 0xbd, 0x7c, 0xed, 0xfa, 0x75, 0x86, + 0x1a, 0xee, 0x85, 0x9c, 0x27, 0x6d, 0x10, 0x67, 0xdb, 0x80, 0x9e, 0x87, 0xa8, 0xf5, 0x03, 0xf1, + 0xf2, 0x67, 0x68, 0x17, 0x33, 0xaf, 0x9d, 0x1b, 0x79, 0xe3, 0x44, 0xe6, 0xf8, 0x67, 0xe9, 0xfe, + 0x01, 0x00, 0xac, 0xcc, 0xa1, 0xc3, 0xd9, 0xb3, 0x03, 0xa6, 0xf3, 0x32, 0x03, 0xc2, 0x96, 0xa2, + 0xa2, 0x64, 0x2a, 0x90, 0x48, 0x51, 0xe1, 0xe8, 0x5c, 0x4d, 0x9e, 0xe5, 0x87, 0x14, 0x49, 0xa4, + 0xce, 0x29, 0x0f, 0xf7, 0xe1, 0xbd, 0x39, 0xfe, 0xd9, 0xc8, 0xf1, 0x4f, 0x14, 0xc8, 0x12, 0x17, + 0xa2, 0x02, 0x35, 0x1a, 0xa2, 0xcf, 0x9e, 0x40, 0x31, 0xaa, 0x46, 0x43, 0xac, 0x06, 0xde, 0xb8, + 0x93, 0xa7, 0x68, 0x0d, 0x9c, 0x21, 0xae, 0x42, 0x93, 0xd4, 0x97, 0xd5, 0x60, 0x1b, 0x86, 0x93, + 0x75, 0xe1, 0x56, 0x95, 0x57, 0x91, 0x5a, 0x73, 0x58, 0x1b, 0xd4, 0x6f, 0x21, 0xb4, 0x61, 0x2d, + 0x22, 0xae, 0x47, 0x13, 0x83, 0x6d, 0x89, 0x84, 0x1a, 0x4d, 0x35, 0xa7, 0xd4, 0x38, 0x55, 0x98, + 0x2e, 0xd1, 0xe4, 0x45, 0x7e, 0x3e, 0x5d, 0xba, 0x9b, 0xb6, 0xd4, 0xfb, 0xae, 0xde, 0x73, 0x01, + 0xda, 0x33, 0xb8, 0x33, 0xaa, 0x2c, 0xe1, 0xcb, 0x8b, 0x4f, 0xa3, 0xb2, 0x64, 0x4a, 0x8d, 0x37, + 0x63, 0x08, 0x8b, 0x06, 0x55, 0x12, 0xd9, 0xa8, 0xb4, 0xae, 0x5a, 0x93, 0x7d, 0x7e, 0x4b, 0x46, + 0xce, 0x10, 0x49, 0x7b, 0x5f, 0xd7, 0x15, 0x69, 0x82, 0xa7, 0x44, 0x50, 0x2c, 0x25, 0xc5, 0x13, + 0x02, 0x5e, 0x5e, 0x35, 0xce, 0x3c, 0x92, 0x57, 0x39, 0x47, 0x5f, 0xe0, 0x00, 0x7b, 0x21, 0x1e, + 0x0a, 0xf5, 0xcd, 0xbd, 0x5e, 0x93, 0x7f, 0xe1, 0x87, 0xfa, 0xd2, 0x13, 0xd0, 0x27, 0x44, 0x25, + 0x86, 0x3e, 0xb9, 0x87, 0x5c, 0x83, 0xc3, 0xef, 0xed, 0x04, 0xbd, 0x1b, 0x24, 0x82, 0x7d, 0x0c, + 0x66, 0x4d, 0x87, 0x76, 0xe9, 0xfd, 0xfd, 0x99, 0xe3, 0x9f, 0x7d, 0x5d, 0x37, 0xa1, 0x5b, 0x28, + 0x2c, 0x11, 0xa6, 0x4e, 0x57, 0xa0, 0x45, 0xf1, 0x45, 0xbb, 0x7e, 0xb4, 0x8e, 0x38, 0x18, 0x36, + 0xf5, 0xa3, 0xc6, 0x44, 0x4d, 0xd4, 0x1f, 0x8f, 0x7b, 0xaf, 0x67, 0x79, 0x77, 0x40, 0xa0, 0x3f, + 0xfd, 0x39, 0xe9, 0xc1, 0x74, 0x07, 0x64, 0xed, 0x81, 0x38, 0x02, 0x62, 0x86, 0x34, 0x0e, 0xd1, + 0xc6, 0xcc, 0x8a, 0x7c, 0x50, 0xa6, 0x32, 0xc7, 0xa0, 0x4c, 0x00, 0xbb, 0xc4, 0x12, 0x28, 0x3d, + 0x30, 0xe0, 0x10, 0x94, 0xa9, 0x11, 0xa1, 0x48, 0x20, 0x99, 0x02, 0x16, 0x8c, 0xea, 0x52, 0x89, + 0x92, 0x9b, 0x4b, 0x96, 0xca, 0xe9, 0x0b, 0xa2, 0xfe, 0xd7, 0x32, 0x1f, 0x9d, 0xa1, 0x6e, 0x9f, + 0x01, 0x26, 0xb9, 0x52, 0x15, 0x6b, 0x10, 0x32, 0xb7, 0xcd, 0xc1, 0x6d, 0xb1, 0xdf, 0x1a, 0x82, + 0xd7, 0xc6, 0xbc, 0xe2, 0xca, 0xbc, 0x33, 0xe3, 0xb8, 0x26, 0xb7, 0xa2, 0xad, 0x7e, 0x3b, 0xd9, + 0x63, 0x71, 0x73, 0x19, 0x30, 0xc0, 0xab, 0x12, 0x83, 0x2c, 0x7d, 0x29, 0x58, 0xc0, 0xef, 0x4b, + 0x01, 0xb6, 0xda, 0x6a, 0x4e, 0x67, 0x2e, 0xa2, 0x19, 0x4e, 0xc5, 0xf7, 0xef, 0x04, 0x24, 0xf2, + 0xbd, 0xdd, 0x1e, 0x67, 0x5d, 0xe5, 0xe8, 0x77, 0x02, 0x1a, 0x67, 0xf5, 0x2b, 0x01, 0x4d, 0x55, + 0xd4, 0x54, 0x62, 0x3b, 0x7f, 0x86, 0xfc, 0xc2, 0x78, 0x14, 0x6c, 0x84, 0xdf, 0x14, 0xfd, 0x34, + 0x49, 0x2a, 0x81, 0x35, 0xc6, 0x4c, 0x49, 0x79, 0x62, 0x26, 0x09, 0x90, 0xee, 0x10, 0xfe, 0x8e, + 0x3e, 0x23, 0x5e, 0x69, 0xfa, 0xa8, 0x87, 0x79, 0x57, 0x6b, 0xb2, 0xd7, 0xf4, 0x51, 0x3f, 0x03, + 0xda, 0x82, 0x3b, 0xa0, 0x7e, 0xe8, 0xc8, 0xf0, 0xa7, 0x9f, 0x13, 0x98, 0xb4, 0x45, 0x5e, 0xaf, + 0xfd, 0xb9, 0x26, 0x3f, 0x8a, 0x1e, 0xf6, 0xdb, 0xc6, 0x2a, 0x4d, 0x85, 0xca, 0x38, 0x89, 0x6d, + 0x3b, 0xed, 0x9c, 0x8b, 0x96, 0xfc, 0xdf, 0x05, 0x34, 0x8d, 0xab, 0x79, 0xbb, 0xc5, 0x7e, 0x74, + 0xbf, 0xd8, 0x91, 0x63, 0x09, 0x2e, 0x76, 0x77, 0x18, 0x3e, 0xac, 0x4d, 0xef, 0xc8, 0x74, 0x93, + 0xd3, 0x02, 0x9a, 0xd2, 0xbc, 0x35, 0x1c, 0xff, 0x7e, 0xf6, 0xf8, 0x97, 0xb9, 0x7b, 0xbc, 0x08, + 0x9f, 0x5e, 0xc6, 0x1e, 0x53, 0x4a, 0x31, 0xfc, 0xf9, 0x95, 0xe1, 0xeb, 0x7b, 0xb3, 0xdd, 0xbb, + 0xf3, 0x6e, 0x33, 0x35, 0xc4, 0xcb, 0x1d, 0xad, 0x34, 0x15, 0xaa, 0xe7, 0xdf, 0xe5, 0xff, 0x57, + 0x40, 0x53, 0xcd, 0x8a, 0x7f, 0x68, 0x9b, 0x3c, 0x5c, 0x8c, 0xa6, 0x01, 0xd9, 0xe5, 0xb7, 0x79, + 0x65, 0xce, 0x36, 0xd7, 0xb8, 0x6c, 0x33, 0x1c, 0x2d, 0xf3, 0xdd, 0x77, 0x79, 0x4b, 0x0e, 0x63, + 0xd7, 0x94, 0x87, 0xb1, 0x5b, 0x9a, 0x90, 0x46, 0x65, 0xec, 0x26, 0x60, 0xc6, 0x6e, 0xbd, 0xb2, + 0xfc, 0xe6, 0x73, 0x76, 0x94, 0x47, 0x2b, 0xfc, 0xc6, 0x3c, 0x5a, 0xd1, 0x77, 0xc8, 0xa3, 0x15, + 0x7f, 0x47, 0x3c, 0x9a, 0xc9, 0x50, 0x4d, 0x70, 0x66, 0xa8, 0x6c, 0xa0, 0x71, 0xf3, 0x18, 0x2a, + 0x2e, 0x50, 0x49, 0x89, 0x63, 0xa0, 0x12, 0x98, 0x2a, 0x81, 0x6c, 0x2b, 0x4b, 0x42, 0x8b, 0x7c, + 0xe7, 0x7c, 0xc4, 0x32, 0x4d, 0xae, 0x45, 0x8f, 0xf8, 0xed, 0xf8, 0x22, 0x4d, 0x85, 0x61, 0xe4, + 0x27, 0x34, 0xff, 0x20, 0x20, 0x91, 0xaf, 0xfa, 0x87, 0x46, 0x6a, 0x5e, 0xf5, 0xa0, 0x69, 0x70, + 0x19, 0xfc, 0x5e, 0x48, 0x4d, 0x2a, 0x37, 0xf6, 0x00, 0x31, 0x8d, 0x34, 0x1c, 0x58, 0xac, 0xe2, + 0xfd, 0x53, 0x98, 0x63, 0xc3, 0x30, 0x78, 0xe0, 0x4a, 0xfa, 0xda, 0xf5, 0x4c, 0xcf, 0x07, 0x60, + 0xee, 0x0e, 0x68, 0xa3, 0x5f, 0xec, 0xca, 0xec, 0x23, 0x1e, 0xee, 0xaf, 0x9e, 0x22, 0x01, 0x04, + 0xde, 0xd2, 0x3b, 0xce, 0x65, 0x07, 0xf7, 0x65, 0x7a, 0xdf, 0xe1, 0x43, 0x05, 0xd4, 0xd6, 0x68, + 0x72, 0x15, 0xf2, 0xfb, 0xed, 0x13, 0x93, 0xca, 0x68, 0xd8, 0x7e, 0x32, 0x03, 0x03, 0x1e, 0x7c, + 0xed, 0x1e, 0xe6, 0xda, 0xe4, 0x76, 0x82, 0x82, 0xa7, 0xc6, 0x00, 0x05, 0x44, 0x6b, 0x07, 0x50, + 0x30, 0x93, 0xf7, 0x44, 0x6e, 0x03, 0x84, 0xbd, 0x02, 0x9a, 0xbc, 0x52, 0x4d, 0xf1, 0x50, 0xb0, + 0x22, 0x07, 0x0a, 0x16, 0x6a, 0xf2, 0x34, 0x03, 0x0a, 0x26, 0xe0, 0x92, 0xde, 0xb1, 0x00, 0x41, + 0x6d, 0xb5, 0x26, 0xfb, 0x51, 0xa5, 0x3f, 0xa7, 0x79, 0x69, 0x26, 0x58, 0xe2, 0x9b, 0x23, 0xa1, + 0x5e, 0xba, 0xff, 0xc4, 0x83, 0xa6, 0x18, 0x45, 0x7f, 0x9c, 0xf8, 0x68, 0xf8, 0xe6, 0xce, 0xdd, + 0x86, 0xda, 0xe5, 0x9a, 0x5c, 0x87, 0x9e, 0xf4, 0xe7, 0x2e, 0xc0, 0x78, 0xdd, 0x62, 0xff, 0xb7, + 0x62, 0x34, 0x65, 0x55, 0x38, 0x69, 0xd9, 0xce, 0xa0, 0xfd, 0x4d, 0xd8, 0x72, 0x4d, 0x7e, 0x8c, + 0xbf, 0x0c, 0x2f, 0x34, 0xaf, 0xaa, 0x63, 0xf3, 0x83, 0x0d, 0xba, 0x28, 0x8b, 0xbf, 0x1e, 0xee, + 0x3e, 0x0c, 0x4b, 0x2f, 0x11, 0x8f, 0xf8, 0xe6, 0x7d, 0x78, 0x56, 0x4e, 0x27, 0xbc, 0x6f, 0x5c, + 0x68, 0xd1, 0xcb, 0xdf, 0x82, 0x1f, 0x37, 0x6f, 0xc1, 0x05, 0x66, 0x6c, 0x40, 0xe7, 0x5b, 0x30, + 0x79, 0xb8, 0x05, 0xb1, 0x01, 0x8d, 0x3b, 0xf0, 0xe3, 0xe6, 0x91, 0x55, 0xc8, 0xd5, 0x77, 0x3c, + 0xb2, 0xf8, 0xfa, 0x2c, 0xb2, 0x16, 0x2f, 0x85, 0x2b, 0xba, 0xf9, 0x52, 0xb8, 0x84, 0xc1, 0xac, + 0x15, 0x9b, 0xb6, 0xe5, 0x8c, 0x59, 0x5b, 0xcd, 0x33, 0x6b, 0x95, 0x3c, 0x9b, 0x56, 0xe5, 0x35, + 0x2c, 0xe3, 0x29, 0x9b, 0x66, 0x5a, 0xc3, 0x53, 0x2e, 0xad, 0xca, 0xbb, 0x62, 0xad, 0x52, 0xbf, + 0xdc, 0xf0, 0x55, 0xb4, 0xc0, 0x60, 0xdb, 0xd6, 0xd3, 0x27, 0x11, 0x4d, 0x54, 0xee, 0x84, 0xcf, + 0x58, 0xfa, 0x24, 0xa2, 0x49, 0x5a, 0x94, 0x39, 0x75, 0x38, 0x3d, 0xf0, 0x96, 0xde, 0x33, 0x90, + 0x39, 0xd1, 0x97, 0xee, 0xdf, 0x6f, 0x7a, 0xfe, 0x6e, 0x6c, 0xa2, 0xae, 0x84, 0xfb, 0xae, 0xea, + 0x03, 0x6f, 0x18, 0xae, 0x3b, 0xe8, 0x7b, 0x89, 0x26, 0xf1, 0x57, 0x4e, 0x3e, 0x70, 0x88, 0x53, + 0x3e, 0x8b, 0xb4, 0xfc, 0x1e, 0x68, 0x91, 0x33, 0x88, 0x19, 0xbe, 0xbe, 0x37, 0x33, 0x78, 0x96, + 0x6d, 0x34, 0x31, 0x7d, 0xb5, 0xc8, 0xca, 0x5f, 0x13, 0x34, 0x79, 0x8f, 0x80, 0x5e, 0x15, 0xfc, + 0xb9, 0x40, 0x2f, 0xc5, 0x61, 0x48, 0x78, 0x39, 0x6f, 0x92, 0xef, 0xe4, 0x0f, 0x0b, 0xd0, 0x54, + 0x73, 0x14, 0xb7, 0x07, 0xfd, 0x6a, 0xce, 0x6f, 0x8a, 0x4c, 0xe8, 0x17, 0x3c, 0x8e, 0x20, 0xf4, + 0x6b, 0xae, 0xc5, 0x63, 0x32, 0xb7, 0x2d, 0x16, 0x2f, 0x34, 0x2a, 0x42, 0x91, 0x40, 0x4a, 0x85, + 0x95, 0xa0, 0x6a, 0x47, 0xe7, 0xa6, 0xf1, 0x79, 0x4d, 0x9b, 0x9e, 0x6f, 0x34, 0xad, 0x5f, 0x7b, + 0x5d, 0xef, 0x3c, 0x90, 0xe9, 0x69, 0xcf, 0x1c, 0xbb, 0x94, 0xe3, 0x7e, 0x52, 0xe1, 0x1a, 0x36, + 0xc4, 0x09, 0xb9, 0x6b, 0x2e, 0x89, 0x94, 0x64, 0x02, 0x0f, 0xec, 0xe2, 0x9c, 0x79, 0x70, 0x3e, + 0x9a, 0x0b, 0xa8, 0xca, 0x85, 0xa7, 0x5c, 0x1b, 0xc7, 0x3c, 0x3e, 0xa3, 0x9b, 0xbf, 0x43, 0xd3, + 0xc2, 0x49, 0x22, 0xdb, 0x6f, 0x88, 0xbd, 0x14, 0x05, 0x25, 0x13, 0xd9, 0xc8, 0x12, 0x78, 0xf4, + 0x60, 0xcf, 0x95, 0x1e, 0x20, 0x71, 0x31, 0xab, 0x43, 0xb1, 0x97, 0xa2, 0xd5, 0xe0, 0x71, 0x3f, + 0x54, 0x45, 0x7d, 0xf6, 0x77, 0xec, 0x1c, 0xbe, 0xd8, 0x4f, 0x55, 0x00, 0x10, 0x97, 0xda, 0x5e, + 0x5f, 0x7c, 0x09, 0x95, 0xa8, 0x2f, 0xc7, 0x03, 0xd1, 0x90, 0x71, 0x11, 0x7f, 0x4e, 0x93, 0x9f, + 0xf1, 0x1b, 0x89, 0xd2, 0x2a, 0xf6, 0x8b, 0x1a, 0xb7, 0x64, 0x2f, 0x1e, 0xcf, 0x5c, 0x39, 0x4a, + 0xdc, 0xc0, 0xee, 0x03, 0x8b, 0xfc, 0x1b, 0x43, 0x9d, 0x89, 0x40, 0x34, 0x14, 0x6b, 0xad, 0xf2, + 0x46, 0xd4, 0x40, 0x32, 0x55, 0xfd, 0x52, 0x20, 0x99, 0x52, 0xab, 0xbc, 0xad, 0xb1, 0x64, 0xaa, + 0x3a, 0x1e, 0x0b, 0x25, 0xab, 0xbc, 0xf1, 0x44, 0x38, 0x96, 0x08, 0xa7, 0xb6, 0x2b, 0x46, 0xbb, + 0xe2, 0x0e, 0x24, 0xb6, 0x06, 0x5e, 0x5e, 0xde, 0x1a, 0x4f, 0x6d, 0xaf, 0x6b, 0x8b, 0x6c, 0x05, + 0x02, 0x45, 0xed, 0x95, 0x7f, 0xa9, 0xc9, 0x2b, 0xfd, 0x0e, 0xd9, 0xd2, 0xe2, 0xd6, 0xc0, 0xcb, + 0xd5, 0x2a, 0x4e, 0xac, 0xde, 0xd4, 0x16, 0xd9, 0x5a, 0x0d, 0x0e, 0xcc, 0xaa, 0xf4, 0x03, 0x47, + 0x33, 0x1f, 0x9d, 0xa1, 0x4e, 0x9e, 0x88, 0x25, 0xaa, 0x69, 0x06, 0xe1, 0xd0, 0x8c, 0xf8, 0x0a, + 0x9a, 0x9c, 0x64, 0xeb, 0xd0, 0xa0, 0x46, 0x02, 0xdb, 0xe9, 0x0b, 0xa6, 0x66, 0x4d, 0x6e, 0xf2, + 0xe7, 0x64, 0x49, 0x8f, 0x33, 0xdf, 0x8e, 0xc4, 0xb4, 0xe7, 0xf0, 0x41, 0xfd, 0x6c, 0xf7, 0xc8, + 0xd1, 0xeb, 0x70, 0x4f, 0xd3, 0x87, 0xda, 0xf5, 0xf3, 0xfb, 0xf5, 0x7d, 0x67, 0xf5, 0x8b, 0xdd, + 0xd0, 0xbd, 0xf1, 0x4e, 0x61, 0xf1, 0x22, 0x7d, 0xdf, 0x9e, 0x11, 0xed, 0x94, 0x92, 0xd3, 0x9e, + 0xf8, 0x8f, 0x05, 0x34, 0xc3, 0x48, 0x5a, 0x1f, 0x8d, 0xaa, 0x6a, 0x48, 0x0d, 0x71, 0x57, 0x44, + 0x70, 0xae, 0xea, 0x77, 0x2e, 0x23, 0xc5, 0xb8, 0xfd, 0x6e, 0xa3, 0x19, 0xd5, 0xa9, 0x70, 0xab, + 0x5a, 0x45, 0xef, 0x7b, 0xe0, 0xa3, 0xae, 0xb7, 0x53, 0xff, 0xa2, 0x03, 0xc6, 0x88, 0x0f, 0x54, + 0xfa, 0x3e, 0xf4, 0xed, 0xec, 0x60, 0x6f, 0xf6, 0xfd, 0x81, 0x91, 0xe3, 0x1f, 0xeb, 0x67, 0xbb, + 0xf5, 0x4b, 0x47, 0x60, 0x84, 0xfa, 0xe1, 0x83, 0xc3, 0xef, 0x7c, 0xe8, 0x36, 0x7c, 0xe7, 0x71, + 0x88, 0xff, 0x45, 0x40, 0x73, 0xcc, 0x9c, 0x54, 0x38, 0x12, 0xde, 0x41, 0xf4, 0x56, 0xeb, 0xb6, + 0x24, 0xd4, 0xc0, 0x96, 0x58, 0x24, 0x44, 0x95, 0x12, 0xd4, 0xb5, 0x75, 0xfe, 0xb2, 0xd2, 0xab, + 0x02, 0x3f, 0x2d, 0xb3, 0x44, 0x75, 0x6a, 0x4b, 0x42, 0x4d, 0xe2, 0x22, 0x55, 0xe0, 0x59, 0x8d, + 0x82, 0x33, 0x89, 0x3f, 0x35, 0xf2, 0xe6, 0x3e, 0xbd, 0x7d, 0xc8, 0x9c, 0x1e, 0x17, 0x9d, 0x11, + 0xd3, 0xc8, 0x6b, 0x07, 0xd3, 0x03, 0x07, 0x61, 0x9e, 0xd9, 0x13, 0x5f, 0xe8, 0xfb, 0xf6, 0x64, + 0xfa, 0xde, 0x80, 0x9d, 0x02, 0xb2, 0x3a, 0x72, 0xfc, 0x63, 0x33, 0x46, 0x58, 0xff, 0xc0, 0x83, + 0x8b, 0x94, 0xfc, 0x83, 0x14, 0x0f, 0x08, 0xe8, 0xae, 0xe4, 0xd6, 0x30, 0x04, 0xa8, 0xfa, 0x55, + 0x38, 0xb5, 0x65, 0x55, 0x2c, 0x18, 0x88, 0x34, 0xa7, 0x62, 0x09, 0x4c, 0x3c, 0x27, 0x10, 0x34, + 0x5d, 0xab, 0xc9, 0xab, 0xfc, 0xee, 0xa5, 0xa4, 0x1a, 0xfd, 0xfa, 0xb5, 0xec, 0xd1, 0x73, 0x99, + 0x9e, 0xce, 0x4c, 0xcf, 0x47, 0x7a, 0xcf, 0x25, 0xbd, 0xf7, 0x4d, 0x7d, 0xd7, 0x05, 0xc3, 0x06, + 0x85, 0x1f, 0x10, 0x44, 0xc0, 0x75, 0x6f, 0x4b, 0x7c, 0x5b, 0x40, 0x77, 0x5a, 0x72, 0x9b, 0xb7, + 0x27, 0x53, 0x6a, 0x6b, 0x53, 0x2c, 0x94, 0xa4, 0xde, 0xae, 0x89, 0x0f, 0x3f, 0xb7, 0x32, 0xd2, + 0x0a, 0x18, 0xcb, 0xd6, 0xb6, 0x4d, 0x6a, 0x75, 0x92, 0x24, 0x7b, 0xd7, 0x34, 0xe3, 0x63, 0xf6, + 0xe4, 0xdb, 0x0d, 0x01, 0xb5, 0x35, 0x16, 0x6d, 0x56, 0x53, 0xc6, 0x13, 0x8a, 0xa6, 0x58, 0xc8, + 0x3e, 0x4a, 0x18, 0xa2, 0x5b, 0x07, 0xe2, 0x61, 0x01, 0xcd, 0x0a, 0xb7, 0x44, 0x63, 0x09, 0xd5, + 0x68, 0x2f, 0xc9, 0xad, 0x2c, 0xf5, 0x1b, 0x47, 0x22, 0x9d, 0xe6, 0x2b, 0x27, 0x55, 0xc1, 0x40, + 0xcd, 0x41, 0xb1, 0x38, 0xaa, 0xc3, 0x17, 0xcf, 0x64, 0x2f, 0x1e, 0xcf, 0x19, 0x4e, 0xbe, 0xa6, + 0xc4, 0x9d, 0x02, 0xba, 0x23, 0xb6, 0x75, 0x5d, 0x2c, 0x15, 0x88, 0xac, 0x8f, 0x26, 0xd4, 0x40, + 0x68, 0x7b, 0x7d, 0xac, 0x2d, 0x9a, 0x22, 0x1a, 0x9b, 0x49, 0xb0, 0x7b, 0x4e, 0xf9, 0xd2, 0x83, + 0xb1, 0xad, 0xd5, 0x29, 0x9c, 0x5a, 0xdd, 0x06, 0xc9, 0xd5, 0x41, 0x9c, 0x5e, 0x05, 0x44, 0xd6, + 0x4b, 0x13, 0xbd, 0x86, 0x2b, 0xb1, 0xcc, 0xd1, 0x4b, 0x23, 0x7b, 0x0f, 0x29, 0x4e, 0x6d, 0x89, + 0x5f, 0x0a, 0xe8, 0xae, 0xd6, 0xc0, 0xcb, 0x7c, 0x46, 0x93, 0x9a, 0x08, 0xaa, 0xd1, 0x14, 0x86, + 0xa3, 0x89, 0x64, 0x24, 0xaf, 0x0b, 0x9a, 0x7c, 0x48, 0xf0, 0xbb, 0x97, 0x93, 0x12, 0x98, 0x14, + 0x5a, 0x87, 0x14, 0x37, 0x72, 0xab, 0x68, 0x12, 0xc5, 0x0c, 0xe2, 0xf5, 0x8b, 0x92, 0xb1, 0xf6, + 0x41, 0x63, 0x90, 0x06, 0x5a, 0x60, 0x1c, 0x22, 0x65, 0x32, 0xbd, 0x67, 0x01, 0xab, 0xf4, 0x7d, + 0x27, 0xf4, 0x9d, 0x3d, 0x99, 0xde, 0x77, 0x78, 0x7b, 0x77, 0xc5, 0x7d, 0x38, 0xa2, 0x26, 0xa0, + 0xe9, 0x1c, 0xa5, 0x20, 0xd9, 0x84, 0xa8, 0x95, 0x91, 0xf9, 0xbc, 0xa0, 0xc9, 0xcf, 0xf9, 0x1d, + 0x0b, 0x48, 0xf5, 0x16, 0x8a, 0x06, 0x33, 0x21, 0x04, 0xcd, 0x32, 0x07, 0x47, 0xba, 0xa6, 0x1f, + 0x38, 0x9a, 0xbe, 0x76, 0x20, 0x7b, 0x5e, 0x53, 0x1c, 0x9b, 0x16, 0xff, 0x54, 0x40, 0xb3, 0x70, + 0x2b, 0x2d, 0x61, 0xcc, 0x08, 0x30, 0x73, 0xa0, 0xd6, 0xd8, 0xb6, 0x40, 0x84, 0x8c, 0x6d, 0x12, + 0x19, 0x1b, 0x31, 0xff, 0xf4, 0xe7, 0x2b, 0x28, 0xbd, 0xc8, 0x3c, 0x40, 0xb2, 0x87, 0x32, 0x84, + 0x77, 0xd6, 0xbf, 0xe8, 0xb0, 0x1c, 0x06, 0x97, 0xf6, 0x50, 0x47, 0x9e, 0x3d, 0x1f, 0xe8, 0x3d, + 0x17, 0x30, 0x5e, 0x25, 0xa2, 0x6a, 0x4a, 0x4d, 0xa6, 0xfb, 0x7b, 0x33, 0x57, 0x2e, 0xe8, 0x7b, + 0xba, 0xec, 0x18, 0xb4, 0x84, 0x91, 0xd9, 0x7c, 0xdd, 0x8b, 0xad, 0xfc, 0x7d, 0x6a, 0x32, 0x53, + 0x91, 0x57, 0xf1, 0xf7, 0xa9, 0x79, 0xdc, 0x65, 0x09, 0xaf, 0x8c, 0xf5, 0x52, 0x35, 0xbe, 0x40, + 0x42, 0xb5, 0xe6, 0x3d, 0x68, 0x0a, 0x63, 0x09, 0xa7, 0x9b, 0xf7, 0xa0, 0x52, 0xee, 0x06, 0x64, + 0xd3, 0x03, 0x2e, 0xe3, 0x82, 0x03, 0x4f, 0x65, 0x8e, 0x2f, 0xe6, 0x72, 0xa1, 0x81, 0xc5, 0x6c, + 0xe7, 0xd5, 0x4c, 0xfb, 0x79, 0x1a, 0x05, 0x98, 0xb8, 0x3c, 0xe5, 0x62, 0xf6, 0x5e, 0x70, 0x08, + 0x32, 0x3e, 0x8d, 0x90, 0x89, 0x3f, 0xd6, 0xe4, 0x57, 0xec, 0x81, 0xc4, 0xb7, 0xf0, 0xf1, 0x89, + 0x72, 0xec, 0x1e, 0x88, 0x7c, 0x91, 0xc4, 0x2d, 0x3a, 0x7c, 0x30, 0x3d, 0xd4, 0xad, 0xf7, 0x5c, + 0x18, 0xee, 0x3b, 0x07, 0xeb, 0x31, 0xf2, 0xea, 0x85, 0xec, 0xb5, 0x8f, 0xbd, 0xf4, 0x1a, 0xc4, + 0xf1, 0x63, 0xde, 0xec, 0xe0, 0xee, 0xf4, 0xe0, 0x67, 0x3c, 0x1d, 0xf6, 0xba, 0x84, 0x22, 0xff, + 0x67, 0x02, 0xba, 0x63, 0x53, 0xdb, 0xe6, 0xcd, 0x6a, 0x42, 0xa1, 0x21, 0x83, 0x15, 0x4c, 0x63, + 0xc8, 0xab, 0xc2, 0x49, 0x75, 0x47, 0x05, 0x4d, 0x3e, 0x22, 0xf8, 0x9d, 0x4a, 0x48, 0x3b, 0x20, + 0xb1, 0x9a, 0x85, 0x1a, 0xae, 0x26, 0xe1, 0xc2, 0xe9, 0x09, 0x47, 0x0d, 0xec, 0xb8, 0x13, 0x8e, + 0x47, 0x53, 0xfa, 0xe4, 0x84, 0x3b, 0xea, 0xb2, 0x07, 0xf7, 0x02, 0xee, 0x0e, 0xf7, 0x9d, 0x83, + 0xe3, 0x50, 0xdf, 0x77, 0x82, 0x6f, 0xca, 0x98, 0x8b, 0x77, 0xf1, 0xa2, 0x45, 0x8a, 0xd3, 0x80, + 0xc4, 0xb3, 0x40, 0x91, 0x56, 0x26, 0x02, 0x41, 0x75, 0x73, 0x5b, 0x64, 0x1d, 0x75, 0xb2, 0x1d, + 0xc6, 0xf4, 0x33, 0x48, 0x82, 0xf9, 0x4e, 0xaa, 0xdb, 0xac, 0xc9, 0x41, 0xbf, 0x7b, 0x29, 0x69, + 0x05, 0xa6, 0x47, 0x2d, 0x34, 0xaf, 0x3a, 0x65, 0x66, 0x56, 0x27, 0xd5, 0x60, 0x15, 0xe5, 0xcd, + 0x88, 0x5b, 0x55, 0xc0, 0x1c, 0x6f, 0x53, 0x2c, 0xe4, 0x1d, 0x69, 0x6f, 0xd7, 0xf7, 0x0e, 0x64, + 0x7a, 0xda, 0x0d, 0x24, 0x52, 0xdc, 0xbb, 0x10, 0x77, 0x0b, 0xa8, 0x2c, 0x19, 0x0c, 0x44, 0x1b, + 0xa3, 0x29, 0x35, 0xb1, 0x2d, 0x10, 0x29, 0x9f, 0x4e, 0x46, 0xf6, 0xa2, 0x26, 0x3f, 0xef, 0xb7, + 0x64, 0x48, 0xab, 0xf1, 0x57, 0x75, 0x98, 0x7e, 0x56, 0xe5, 0x00, 0x46, 0xe6, 0xdd, 0xf6, 0xcc, + 0xa7, 0xfb, 0xa1, 0x3f, 0xfc, 0xaf, 0xfb, 0x0d, 0x83, 0x96, 0x60, 0xd6, 0xe0, 0xbc, 0x66, 0xd9, + 0xfe, 0xc5, 0x8b, 0x14, 0x4b, 0xe3, 0xf8, 0xdc, 0x9d, 0xde, 0x1a, 0x78, 0x19, 0x23, 0x69, 0x13, + 0x86, 0xdb, 0x24, 0x13, 0xf1, 0xcf, 0x20, 0xc3, 0xf9, 0xad, 0x26, 0xb7, 0xf8, 0x1d, 0x0b, 0x48, + 0x6b, 0xf1, 0x1a, 0xe1, 0xeb, 0x64, 0x75, 0x9c, 0xa5, 0x03, 0xa9, 0x83, 0x25, 0xa1, 0x4c, 0xeb, + 0xa1, 0xc3, 0xe9, 0x2f, 0xde, 0xe2, 0xd7, 0x84, 0xa7, 0x74, 0xe6, 0x6e, 0x3e, 0xba, 0x68, 0x91, + 0xe2, 0xd8, 0x8d, 0x78, 0x52, 0x40, 0x53, 0x08, 0x8c, 0xae, 0x8f, 0xe3, 0xcb, 0xfe, 0xb3, 0x6a, + 0x22, 0x56, 0x3e, 0x73, 0xd4, 0x48, 0xfd, 0xbf, 0xd2, 0xe4, 0x75, 0xfe, 0xdc, 0x7a, 0x92, 0x0c, + 0xd4, 0xb9, 0x2d, 0x5e, 0xbd, 0x39, 0x11, 0x6b, 0xad, 0xde, 0xa1, 0x26, 0x62, 0xf4, 0xd0, 0xe3, + 0x4f, 0x86, 0x1b, 0x43, 0xfb, 0x32, 0x1f, 0x9f, 0xc9, 0xf4, 0x74, 0x7a, 0xf9, 0x73, 0x90, 0x6c, + 0x77, 0xa7, 0x92, 0xdb, 0x26, 0x1e, 0xdf, 0x4c, 0x2b, 0x53, 0x2c, 0x6f, 0xc6, 0x68, 0x18, 0x0a, + 0x95, 0xdf, 0x49, 0x96, 0x50, 0xd5, 0xe4, 0x4d, 0x7e, 0x97, 0x22, 0xd2, 0x2f, 0xb8, 0xf3, 0x22, + 0x84, 0x73, 0xaa, 0x03, 0x9b, 0x09, 0x69, 0x0e, 0x85, 0xaa, 0x4c, 0x26, 0x7d, 0xdf, 0xd9, 0xcc, + 0xb1, 0x5e, 0x03, 0xea, 0xec, 0x1b, 0x8d, 0x0f, 0x0d, 0x97, 0x1e, 0xc4, 0xf7, 0x30, 0xa3, 0x67, + 0xcf, 0xa2, 0x57, 0x94, 0x72, 0x32, 0x44, 0xe2, 0xed, 0xd6, 0xbd, 0x94, 0xeb, 0x28, 0xe9, 0x8d, + 0x05, 0x78, 0xf1, 0x74, 0xff, 0x59, 0xf3, 0xde, 0xe2, 0x36, 0x4a, 0xf7, 0x4e, 0xc4, 0x7f, 0x2e, + 0xa0, 0x0a, 0x87, 0xdc, 0x15, 0x81, 0x70, 0xa4, 0x2d, 0xa1, 0x96, 0xdf, 0x35, 0x86, 0x68, 0xe2, + 0xad, 0x9a, 0xfc, 0x5b, 0x7f, 0x9e, 0x46, 0xa4, 0x55, 0x2e, 0x13, 0xd9, 0x0c, 0xf9, 0x14, 0xb3, + 0x21, 0x18, 0xa9, 0x7e, 0xf8, 0x20, 0x28, 0xd6, 0x5d, 0x27, 0x93, 0xa7, 0x27, 0x71, 0x97, 0x07, + 0x79, 0x8d, 0xec, 0x95, 0xf1, 0xb6, 0x1c, 0x26, 0x9c, 0x5c, 0x03, 0xca, 0x2b, 0xc8, 0xea, 0x7f, + 0x2a, 0x68, 0xf2, 0x65, 0xc1, 0x3f, 0x6a, 0x71, 0xa9, 0x8b, 0xbf, 0x58, 0xb4, 0xc4, 0xdb, 0xc6, + 0x79, 0xb9, 0xa8, 0x5c, 0xd9, 0xb4, 0x7e, 0xc1, 0x77, 0x78, 0xc3, 0x18, 0x75, 0xc0, 0xe2, 0x5f, + 0x0b, 0x68, 0xa6, 0x95, 0x44, 0xd7, 0xc7, 0xdb, 0xe0, 0x60, 0x99, 0x45, 0xa6, 0xde, 0x23, 0x68, + 0xf2, 0x9b, 0x82, 0xdf, 0xa5, 0x90, 0xf4, 0xc7, 0xce, 0xe9, 0xe3, 0x38, 0x5c, 0x82, 0xf1, 0xb6, + 0x6f, 0x71, 0xbe, 0xb8, 0x8c, 0xcb, 0x61, 0x5e, 0xab, 0xd5, 0x56, 0x98, 0xd7, 0xec, 0x3c, 0xf3, + 0x62, 0x85, 0x72, 0xe7, 0xc5, 0xd2, 0xc7, 0x31, 0xaf, 0x56, 0xb5, 0xf5, 0xbb, 0x9b, 0x17, 0xeb, + 0xbf, 0x16, 0x1f, 0x8b, 0x28, 0xe0, 0x1f, 0x45, 0xb2, 0x23, 0xcd, 0x01, 0x9e, 0xc9, 0x96, 0xef, + 0xe4, 0xca, 0xd6, 0xd1, 0xa4, 0xe8, 0x7f, 0x08, 0x68, 0x9e, 0x6b, 0x1f, 0xb7, 0x87, 0xe8, 0xef, + 0xe7, 0x16, 0xd5, 0x45, 0xa5, 0xcd, 0x78, 0xcf, 0xc6, 0x8c, 0xd1, 0xe9, 0x81, 0x9e, 0x21, 0xfb, + 0x00, 0x7b, 0x73, 0x71, 0x2b, 0x89, 0xcf, 0xce, 0x0b, 0x36, 0xf9, 0xd9, 0x6b, 0xc2, 0xf7, 0x28, + 0x40, 0xfb, 0xba, 0xae, 0x2a, 0xe1, 0x57, 0x8a, 0xa1, 0xb8, 0x32, 0x91, 0x2b, 0xae, 0x94, 0x1a, + 0xc5, 0x31, 0x3f, 0x6d, 0x93, 0xb7, 0xbd, 0x2a, 0xe4, 0x11, 0xb8, 0x35, 0x7f, 0x77, 0x02, 0xb7, + 0xaf, 0xeb, 0x8a, 0xfd, 0x85, 0xe5, 0xa1, 0x4a, 0xc1, 0x51, 0xf2, 0xb6, 0x47, 0x70, 0x11, 0xbd, + 0xbd, 0xf0, 0x3d, 0x88, 0xde, 0xbe, 0xae, 0x2b, 0xf1, 0x17, 0x97, 0xb7, 0xbf, 0x5b, 0x54, 0xf9, + 0x73, 0x9b, 0x14, 0xee, 0x5f, 0x8c, 0x22, 0x85, 0x3b, 0x7e, 0x4b, 0x49, 0xe1, 0xf8, 0x99, 0xb8, + 0x08, 0xe4, 0xfe, 0x9f, 0x31, 0x0a, 0xe4, 0x3e, 0xbe, 0x7d, 0x04, 0x72, 0x00, 0x4a, 0x4d, 0x95, + 0x3f, 0x1b, 0x4d, 0x32, 0xf7, 0xfe, 0xa8, 0x92, 0xb9, 0xfc, 0xac, 0xef, 0xcd, 0x94, 0xda, 0x0d, + 0x8c, 0x22, 0xb5, 0xcb, 0x3f, 0xd2, 0x1f, 0x58, 0xa2, 0xf7, 0xf6, 0x18, 0x24, 0x7a, 0xf9, 0x27, + 0xf0, 0xa4, 0x26, 0x2f, 0xcb, 0x2f, 0xed, 0x9b, 0x9b, 0x5f, 0xda, 0x97, 0x5f, 0xbe, 0xd7, 0x95, + 0x57, 0xbe, 0xf7, 0xec, 0x77, 0x2c, 0xdf, 0xa3, 0x68, 0xf9, 0x4f, 0xee, 0xa8, 0xfc, 0x99, 0xb3, + 0xa8, 0xef, 0xdf, 0x8c, 0x41, 0xd4, 0xd7, 0x73, 0x2b, 0x8a, 0xfa, 0x18, 0x15, 0xff, 0x59, 0x3e, + 0x99, 0xdf, 0xdb, 0xf9, 0x65, 0x7e, 0xbf, 0xfd, 0x7e, 0x65, 0x7e, 0x5f, 0xd7, 0x95, 0xfa, 0x27, + 0x10, 0x9a, 0x78, 0xa9, 0xf4, 0x47, 0x2e, 0xff, 0x5b, 0xcf, 0x9b, 0x3a, 0x4c, 0x66, 0x4f, 0xbf, + 0xaa, 0x79, 0x53, 0x07, 0x2f, 0xd8, 0x36, 0xe4, 0x08, 0xff, 0xf2, 0xdb, 0x3b, 0xac, 0xe3, 0xc5, + 0x8a, 0x53, 0x98, 0xfb, 0xb3, 0x71, 0x8a, 0x15, 0x6d, 0x76, 0x19, 0xb5, 0xa6, 0x15, 0xc4, 0x54, + 0x4e, 0x7a, 0xc8, 0xac, 0x20, 0x4a, 0xf3, 0x98, 0xec, 0x59, 0xa4, 0x87, 0xd3, 0xc6, 0x2f, 0x3d, + 0x1c, 0xd3, 0x0d, 0x52, 0xfc, 0x91, 0xdf, 0x20, 0x6f, 0xb8, 0xc8, 0x25, 0xef, 0x18, 0x83, 0x34, + 0xe0, 0xed, 0x5b, 0x53, 0x6a, 0x69, 0x52, 0x23, 0x47, 0xf1, 0x65, 0x5f, 0x5e, 0xf1, 0x25, 0x08, + 0x09, 0x7f, 0x77, 0x73, 0xc4, 0x97, 0x3c, 0xa3, 0x96, 0x47, 0x92, 0x79, 0x28, 0x57, 0x92, 0x09, + 0xa2, 0xc3, 0xad, 0xdf, 0xb7, 0x24, 0xd3, 0x1c, 0x5e, 0x51, 0x8e, 0x50, 0xf3, 0x03, 0x37, 0xa1, + 0xe6, 0x4c, 0x32, 0xb2, 0x6d, 0x37, 0x4f, 0xa8, 0x69, 0xd2, 0xf5, 0xdd, 0x13, 0xc6, 0x21, 0xe0, + 0xbc, 0xf3, 0x16, 0x12, 0x70, 0xbe, 0xef, 0x2e, 0xe0, 0x2c, 0x67, 0xd0, 0x78, 0x13, 0x04, 0x9c, + 0x96, 0x13, 0xd2, 0x4d, 0xd8, 0x79, 0x39, 0xaf, 0xb0, 0xf3, 0x2e, 0x32, 0xdc, 0xe4, 0xcd, 0x12, + 0x76, 0x9a, 0xf0, 0xf9, 0xb3, 0x7c, 0x72, 0xcf, 0xff, 0x35, 0xbf, 0xdc, 0xb3, 0x62, 0x0c, 0x94, + 0xee, 0xe5, 0x9b, 0x2a, 0xf7, 0xe4, 0xc9, 0x42, 0x3e, 0x11, 0xe8, 0xdf, 0x8d, 0x26, 0xfd, 0x3b, + 0x77, 0x4b, 0x4b, 0xff, 0x4c, 0x3a, 0xed, 0x26, 0x06, 0xfc, 0xbb, 0xd1, 0xc4, 0x80, 0xe7, 0x6e, + 0x69, 0x31, 0xa0, 0xeb, 0x04, 0xd9, 0x40, 0xc4, 0x00, 0x2a, 0x6e, 0x8d, 0x85, 0xda, 0x22, 0x6a, + 0xf9, 0x1c, 0x4a, 0x90, 0x72, 0xc4, 0x5c, 0xab, 0x49, 0x2e, 0x89, 0xf1, 0x5d, 0xad, 0xc9, 0x7e, + 0x3f, 0x2d, 0x2e, 0x79, 0x61, 0x78, 0xcc, 0x21, 0xef, 0xf0, 0xb5, 0x8f, 0xb2, 0xe7, 0x07, 0x31, + 0x87, 0x73, 0xf2, 0x38, 0x95, 0xbd, 0xd1, 0x92, 0x62, 0x0b, 0x9a, 0xf0, 0x92, 0xba, 0x69, 0x4b, + 0x2c, 0xb6, 0xb5, 0x7c, 0x2e, 0xe9, 0x63, 0x96, 0xc3, 0x5b, 0x74, 0x9c, 0xbd, 0x3a, 0x16, 0x52, + 0xeb, 0x16, 0x61, 0x46, 0x91, 0x55, 0x90, 0x7c, 0xac, 0x17, 0x2f, 0x4d, 0x01, 0x1e, 0xca, 0xe2, + 0xbd, 0x8e, 0x15, 0x16, 0xe3, 0x10, 0x53, 0x11, 0xa4, 0x6e, 0x24, 0xa6, 0xe2, 0x3c, 0x22, 0x4c, + 0xfb, 0x85, 0x26, 0x2f, 0xf7, 0xe7, 0x64, 0x49, 0x4b, 0xd2, 0x83, 0x1d, 0xc0, 0xda, 0xd5, 0xcb, + 0xa0, 0x44, 0x85, 0x46, 0xf5, 0x43, 0xbb, 0x32, 0x47, 0x2f, 0x41, 0xd3, 0x55, 0xe9, 0xfe, 0x03, + 0x74, 0x6d, 0x49, 0x48, 0x44, 0x25, 0xa7, 0x11, 0x31, 0x2b, 0xa0, 0xd9, 0xea, 0xcb, 0x71, 0x35, + 0x1a, 0x0a, 0x6c, 0x8a, 0xa8, 0xf8, 0xca, 0xd9, 0x44, 0x25, 0x59, 0xf5, 0x6d, 0xa9, 0xd8, 0xe6, + 0xcd, 0xe5, 0xf7, 0xd2, 0x09, 0xe7, 0xa2, 0x36, 0x87, 0xd9, 0x10, 0x17, 0xce, 0x9f, 0xb7, 0x1d, + 0x29, 0x90, 0x1e, 0x7a, 0x53, 0xef, 0xd8, 0x97, 0x1d, 0x38, 0x0f, 0x3c, 0x58, 0xa6, 0xf7, 0x2c, + 0x86, 0x96, 0xee, 0xdd, 0xde, 0x78, 0x2c, 0x74, 0x63, 0xa8, 0x0b, 0x57, 0x0d, 0x47, 0x5b, 0xbc, + 0x7c, 0x54, 0x47, 0x03, 0x1e, 0x0c, 0x1a, 0x96, 0x1e, 0xea, 0xce, 0xbe, 0xf5, 0x49, 0xe6, 0xe0, + 0x39, 0xef, 0xd6, 0x70, 0x24, 0xc2, 0x5c, 0xdf, 0xea, 0xed, 0x43, 0xd5, 0x8b, 0x17, 0x29, 0x79, + 0x07, 0x20, 0x5e, 0x12, 0x90, 0x18, 0x55, 0x5f, 0x6a, 0x8a, 0x85, 0x9a, 0xe1, 0xf0, 0x00, 0x61, + 0xd8, 0x7d, 0x63, 0x20, 0x5d, 0x9b, 0x34, 0xf9, 0x19, 0xbf, 0x43, 0x65, 0xa9, 0xce, 0x9e, 0x76, + 0x63, 0xa8, 0x2b, 0x73, 0xec, 0x52, 0x3c, 0x16, 0xd2, 0x07, 0x07, 0xb2, 0x1f, 0xee, 0xd7, 0xcf, + 0x76, 0xa7, 0xaf, 0x76, 0xa4, 0xaf, 0xee, 0xd7, 0x0f, 0x1f, 0xcc, 0x74, 0xd2, 0xbd, 0xa8, 0x97, + 0xd9, 0xc8, 0xbd, 0x8b, 0x98, 0xc7, 0x4f, 0x87, 0xe6, 0x0d, 0x51, 0x77, 0x7e, 0x29, 0xac, 0x34, + 0x07, 0xa0, 0x60, 0xfc, 0xa2, 0x6e, 0xf6, 0x50, 0xe6, 0xbd, 0x02, 0x34, 0xcf, 0xb5, 0x8f, 0xdb, + 0x43, 0xd4, 0x1d, 0xfe, 0x66, 0xa2, 0xee, 0xba, 0x07, 0x34, 0xb9, 0x92, 0x9a, 0xa7, 0x7a, 0x8d, + 0x97, 0x34, 0xb6, 0x62, 0xb7, 0x48, 0x04, 0x46, 0xdf, 0xf1, 0x02, 0x74, 0x0f, 0xdd, 0xa8, 0x24, + 0x8c, 0xac, 0x81, 0x38, 0x99, 0x6e, 0xa2, 0xf7, 0x31, 0x26, 0x97, 0x5f, 0x67, 0x7f, 0x0e, 0xf0, + 0x1d, 0xdc, 0x33, 0x4f, 0x09, 0xdc, 0x65, 0x11, 0x36, 0x15, 0x6e, 0xf2, 0xe6, 0x6d, 0x31, 0x09, + 0xd5, 0xa9, 0xbd, 0x8a, 0x11, 0x2c, 0x05, 0x08, 0x3f, 0x13, 0x2b, 0x65, 0x2e, 0x9f, 0x06, 0x83, + 0xfa, 0xca, 0xec, 0x5b, 0x17, 0xf5, 0xce, 0x03, 0x98, 0x8e, 0x11, 0x57, 0x53, 0xdb, 0xdb, 0xa2, + 0xa9, 0xf0, 0x57, 0xed, 0x3b, 0x93, 0x6a, 0x64, 0x73, 0x4e, 0x51, 0x9e, 0xad, 0x26, 0xc5, 0x8c, + 0xfc, 0x05, 0xe6, 0x75, 0xb4, 0xf6, 0x65, 0x4d, 0x6e, 0x43, 0x49, 0xff, 0x58, 0xd6, 0x48, 0x7a, + 0xd0, 0x05, 0x6b, 0x32, 0x3d, 0x1f, 0x65, 0x3e, 0x3a, 0x63, 0x1f, 0x32, 0xc0, 0x80, 0x15, 0x9b, + 0x8c, 0x9e, 0x7d, 0x7f, 0x2a, 0xa0, 0xf9, 0xf9, 0x7b, 0xbd, 0x2d, 0xf0, 0xc8, 0xf7, 0xaf, 0x17, + 0xa0, 0xd9, 0xcd, 0xdb, 0xa3, 0xc1, 0x9f, 0x54, 0x3e, 0xdf, 0x44, 0xe5, 0x73, 0x22, 0x9f, 0xca, + 0x27, 0x8c, 0xef, 0x9a, 0x4e, 0x2a, 0x9f, 0x95, 0xe3, 0x56, 0xf9, 0x3c, 0xe6, 0xad, 0x97, 0xf5, + 0xab, 0x9f, 0x99, 0xf2, 0x0f, 0x92, 0x91, 0x5f, 0x11, 0x74, 0xd4, 0x4d, 0x11, 0xd4, 0xaa, 0xc9, + 0x1b, 0x6d, 0x8a, 0xa0, 0xd5, 0xdf, 0x4e, 0x11, 0x74, 0x63, 0xe8, 0xad, 0xcc, 0xf1, 0xd3, 0x99, + 0xa3, 0xfb, 0x80, 0x19, 0xf9, 0x49, 0x2f, 0xf4, 0x07, 0xa2, 0x17, 0xea, 0x1a, 0x83, 0xc5, 0x36, + 0x31, 0x3f, 0xce, 0xa3, 0xfb, 0x59, 0x38, 0x76, 0xdd, 0x4f, 0x2a, 0xd1, 0x96, 0x57, 0xf5, 0x73, + 0x72, 0x54, 0x83, 0xed, 0xa0, 0x26, 0xbf, 0xe8, 0xae, 0xde, 0x59, 0xfe, 0xad, 0xd5, 0x3b, 0x64, + 0x84, 0xae, 0xda, 0x9d, 0x23, 0x63, 0xb2, 0xd7, 0x26, 0xca, 0xb2, 0xbc, 0x1a, 0x9c, 0xea, 0xfc, + 0x1a, 0x1c, 0x2e, 0x44, 0x04, 0x19, 0xcf, 0x4f, 0x0a, 0x9d, 0x9f, 0x14, 0x3a, 0x63, 0x54, 0xe8, + 0x58, 0x38, 0xc9, 0x49, 0xdf, 0x83, 0xc6, 0x62, 0xf2, 0x78, 0x35, 0x16, 0x63, 0x52, 0x39, 0x4c, + 0xf9, 0x91, 0xab, 0x1c, 0xfe, 0x95, 0x8b, 0xca, 0x61, 0x2a, 0x99, 0xf7, 0xed, 0xa9, 0x54, 0xf8, + 0x28, 0xaf, 0x52, 0x01, 0xa2, 0xd6, 0x44, 0x31, 0xb9, 0xce, 0xa3, 0x54, 0xa8, 0x1f, 0x9b, 0x52, + 0xe1, 0x7b, 0xd1, 0x28, 0x88, 0xb7, 0xac, 0x46, 0xe1, 0x8e, 0x5b, 0x50, 0xa3, 0x70, 0x16, 0x58, + 0x65, 0x9c, 0xd1, 0x9c, 0x0a, 0x24, 0x52, 0x6d, 0x71, 0x32, 0x54, 0xd0, 0x1d, 0xa5, 0x34, 0x59, + 0xf5, 0x3b, 0x64, 0x73, 0x03, 0x4d, 0x42, 0x2a, 0x3f, 0x4c, 0xfd, 0xd0, 0x9b, 0xe9, 0xfe, 0x01, + 0x42, 0xbb, 0xf0, 0xf9, 0x32, 0xee, 0x81, 0x3a, 0x74, 0x28, 0xfe, 0x33, 0x01, 0x95, 0xf3, 0xc9, + 0x34, 0xb2, 0x91, 0xca, 0x99, 0x9f, 0xef, 0x17, 0x34, 0xf9, 0x8f, 0xfc, 0xae, 0xa5, 0xa4, 0x17, + 0xad, 0x63, 0xae, 0x4e, 0xd2, 0x4c, 0xfb, 0x0a, 0xc3, 0x04, 0xf4, 0x43, 0x7d, 0x34, 0x0e, 0xd3, + 0x37, 0x99, 0x84, 0xeb, 0x38, 0x6e, 0x79, 0x23, 0xf5, 0xf7, 0x47, 0x33, 0x52, 0xbf, 0x6d, 0x74, + 0x38, 0xe5, 0xb7, 0xa3, 0x0e, 0xe7, 0xae, 0x1f, 0xa3, 0x0e, 0xa7, 0xe2, 0xc7, 0xae, 0xc3, 0x99, + 0xf5, 0xa3, 0xd0, 0xe1, 0x70, 0x0a, 0x96, 0xd9, 0xdf, 0xab, 0x82, 0x65, 0x54, 0x75, 0xc7, 0x9c, + 0x1f, 0xb9, 0xba, 0x63, 0xee, 0x2d, 0xac, 0xee, 0x78, 0x46, 0x93, 0xd7, 0xa3, 0x66, 0x7f, 0x5e, + 0xf9, 0xa3, 0x34, 0x47, 0x3f, 0xdc, 0x95, 0xe9, 0x3d, 0x67, 0xcb, 0x07, 0x41, 0x93, 0x55, 0x3c, + 0x6b, 0x28, 0x38, 0xce, 0x16, 0xa0, 0x39, 0x2e, 0xad, 0xfe, 0xe1, 0xa8, 0x37, 0x60, 0xe1, 0xb2, + 0xdd, 0xbb, 0x6f, 0x59, 0xf5, 0xc6, 0x07, 0x05, 0x68, 0x2e, 0x1c, 0x56, 0xae, 0xe2, 0xe7, 0x5f, + 0xdb, 0x35, 0x1b, 0x8f, 0x69, 0x72, 0x39, 0x7f, 0x1f, 0x9d, 0x68, 0xf1, 0x62, 0x34, 0xf6, 0x47, + 0xb8, 0xff, 0x5e, 0xc8, 0x75, 0x68, 0xf6, 0xa7, 0x82, 0x26, 0xff, 0x89, 0x60, 0xba, 0x34, 0xfb, + 0x54, 0xe0, 0x7d, 0x9a, 0xb9, 0x2c, 0xe3, 0x37, 0x73, 0x70, 0xa6, 0xf7, 0x5d, 0x4d, 0x0f, 0x1c, + 0xc4, 0xcc, 0x13, 0x89, 0x81, 0x6b, 0xb7, 0x7e, 0xd4, 0x2f, 0x76, 0x0e, 0xbf, 0xdb, 0x91, 0xed, + 0xde, 0x6d, 0x38, 0xe7, 0xc1, 0xa8, 0xf7, 0x66, 0x9f, 0x25, 0x32, 0xff, 0xe7, 0x1f, 0xc3, 0x3b, + 0xdb, 0x6c, 0xf7, 0xee, 0x7a, 0x19, 0x54, 0xd9, 0x16, 0xe7, 0x69, 0xbf, 0xd4, 0xe4, 0x95, 0x68, + 0xb9, 0x7f, 0x94, 0x45, 0x96, 0xee, 0x74, 0x99, 0x20, 0x8f, 0x5d, 0xbe, 0xf7, 0x0b, 0xd0, 0x3c, + 0xd7, 0x76, 0x6e, 0x97, 0x48, 0x52, 0xdf, 0x0c, 0xab, 0x08, 0x9c, 0x03, 0x56, 0xdd, 0xc3, 0x3b, + 0x5e, 0xbb, 0x65, 0x11, 0xeb, 0xaa, 0x07, 0xcd, 0x5a, 0xa9, 0xa6, 0x7e, 0x08, 0xac, 0xda, 0x66, + 0xd3, 0x19, 0x12, 0x2f, 0x57, 0xa6, 0xca, 0xf0, 0xa9, 0x7a, 0x19, 0x66, 0x90, 0x1e, 0x38, 0xc2, + 0x12, 0x49, 0xd8, 0xe4, 0xf4, 0xe0, 0x39, 0x16, 0xa5, 0x17, 0xfe, 0x66, 0x8e, 0x7f, 0x56, 0xe5, + 0xd5, 0xcf, 0x1e, 0xc8, 0xbe, 0x71, 0x81, 0x69, 0x27, 0x72, 0xea, 0x71, 0xaa, 0xc0, 0x95, 0x9a, + 0xdc, 0x80, 0xea, 0xfc, 0xf9, 0xa6, 0x2d, 0xdd, 0x03, 0x5e, 0x84, 0x5c, 0xb6, 0x8d, 0xba, 0xac, + 0xfb, 0x6f, 0x05, 0x68, 0xb6, 0x73, 0x23, 0x7f, 0x38, 0x47, 0x87, 0xe1, 0xd3, 0xee, 0x56, 0x85, + 0x70, 0x16, 0x27, 0x24, 0xef, 0x4e, 0x49, 0x73, 0x5c, 0xf6, 0xdb, 0xcd, 0x81, 0xd4, 0x85, 0x42, + 0x34, 0x7b, 0x55, 0x38, 0xe9, 0x8e, 0x37, 0x51, 0x3b, 0xde, 0x34, 0x69, 0xf2, 0x0a, 0x1e, 0x6f, + 0x1e, 0xb5, 0x2b, 0x98, 0xbf, 0xb9, 0x07, 0xbe, 0xe7, 0xec, 0x1e, 0xf8, 0x96, 0x69, 0xf2, 0x12, + 0xde, 0x2c, 0xfd, 0x3e, 0xf7, 0xfe, 0x46, 0x31, 0x4e, 0x6f, 0xcc, 0x75, 0xc6, 0x57, 0xa3, 0xc9, + 0xf7, 0x9a, 0x4e, 0x28, 0x2a, 0xec, 0x2c, 0x97, 0xab, 0x5f, 0xbe, 0xc6, 0x5c, 0xbf, 0x7c, 0xd0, + 0x14, 0x93, 0xef, 0xda, 0x9b, 0x72, 0x75, 0xd1, 0x57, 0x7b, 0x56, 0xd0, 0xe4, 0xd3, 0x02, 0x3a, + 0x29, 0xf8, 0xf3, 0x6e, 0x85, 0xf4, 0x7b, 0x97, 0xbd, 0xbd, 0x49, 0x9e, 0xe1, 0xfe, 0xab, 0x07, + 0xcd, 0x71, 0x19, 0xdf, 0xed, 0x41, 0x26, 0x9e, 0xb3, 0xb8, 0x89, 0x1b, 0x3b, 0x99, 0x98, 0xa3, + 0xc9, 0x15, 0x94, 0x4c, 0x88, 0x16, 0xd7, 0x71, 0xbc, 0xe7, 0x4b, 0x1a, 0x59, 0x25, 0xff, 0x0a, + 0x8d, 0x1b, 0x3d, 0x3f, 0xf6, 0x38, 0x3c, 0x50, 0x6d, 0x26, 0x6e, 0x0e, 0x19, 0x82, 0x3e, 0x89, + 0x8a, 0x55, 0xde, 0x44, 0x81, 0x44, 0xd0, 0xa7, 0x49, 0xd2, 0x2c, 0xde, 0x95, 0x89, 0xa1, 0xef, + 0x86, 0xcb, 0x97, 0x42, 0x0b, 0x59, 0x15, 0x20, 0x9e, 0xef, 0x41, 0x01, 0x52, 0x30, 0x5e, 0x05, + 0xc8, 0xcf, 0xb9, 0x13, 0xb5, 0xd0, 0x84, 0x0c, 0xf3, 0x44, 0x9d, 0x96, 0xe7, 0x5c, 0x74, 0xb6, + 0xf5, 0x62, 0x8b, 0xf6, 0xd3, 0x89, 0x76, 0xeb, 0xf0, 0x6c, 0x17, 0x3c, 0x68, 0x4a, 0xb3, 0x9a, + 0xd8, 0x16, 0x86, 0x38, 0xfe, 0xc4, 0x5a, 0x73, 0x19, 0x2a, 0x49, 0xc4, 0x22, 0x10, 0x4b, 0x5f, + 0xe0, 0x5e, 0xeb, 0xb0, 0x44, 0x49, 0x4c, 0x42, 0x0d, 0x2f, 0x4e, 0x61, 0x11, 0xf5, 0x59, 0xae, + 0xb8, 0x14, 0x15, 0xe3, 0xdf, 0x06, 0x20, 0x13, 0xaf, 0xea, 0x34, 0x49, 0x9a, 0xc2, 0x57, 0xf5, + 0x36, 0x36, 0x28, 0x34, 0x43, 0xac, 0x42, 0x05, 0x81, 0x44, 0x94, 0xc2, 0x29, 0x01, 0x06, 0xfc, + 0x2d, 0x4d, 0xb5, 0x94, 0x0f, 0x24, 0xa2, 0x0a, 0x4e, 0x16, 0x57, 0x90, 0x28, 0x8a, 0xc1, 0x44, + 0x98, 0x2c, 0xa6, 0xe9, 0x96, 0xf5, 0x6e, 0x3f, 0x9f, 0x6e, 0x1d, 0x68, 0xe6, 0xd0, 0xa1, 0xe1, + 0xeb, 0x10, 0x3f, 0x91, 0x15, 0xa8, 0xf5, 0x6b, 0xf2, 0xfd, 0xe8, 0x5e, 0x7f, 0xee, 0x12, 0x58, + 0x2b, 0x52, 0xe2, 0x3b, 0xec, 0x41, 0x33, 0x57, 0xaa, 0x29, 0xae, 0xa8, 0x41, 0x00, 0x1e, 0x41, + 0x13, 0x82, 0x91, 0x58, 0x5b, 0xc8, 0x38, 0x9f, 0xe7, 0x82, 0x67, 0x25, 0x48, 0x93, 0x4a, 0xd3, + 0x03, 0x47, 0xb8, 0x03, 0x71, 0xaa, 0x47, 0x61, 0x59, 0xe2, 0xa3, 0xa8, 0x34, 0x10, 0x24, 0x2a, + 0x6c, 0x63, 0xbd, 0x48, 0x1c, 0x69, 0x33, 0x55, 0x9a, 0x98, 0x1e, 0x38, 0xa2, 0xef, 0xed, 0x1d, + 0xee, 0xdb, 0xd9, 0xd8, 0xa0, 0x98, 0xe9, 0xe2, 0x76, 0xd8, 0x26, 0xe2, 0x56, 0x16, 0x96, 0xed, + 0x79, 0x4d, 0x96, 0xfd, 0x46, 0xa2, 0xf4, 0x60, 0xe0, 0xa5, 0xa4, 0x97, 0x9f, 0x08, 0x18, 0xb9, + 0x11, 0xb6, 0x77, 0xa4, 0xbd, 0x53, 0x6f, 0x1f, 0x4a, 0xf7, 0x0f, 0x50, 0x00, 0xab, 0x32, 0xbc, + 0xa1, 0x7e, 0x5d, 0x37, 0x33, 0x81, 0x0f, 0x59, 0x48, 0x57, 0x4a, 0xcd, 0xe0, 0xac, 0x46, 0xcb, + 0xb5, 0x2f, 0x68, 0xf2, 0x73, 0xe8, 0xd7, 0x7e, 0x97, 0xe5, 0x60, 0xde, 0x3d, 0x2d, 0x50, 0x42, + 0xbc, 0x7b, 0x32, 0x5b, 0x51, 0x36, 0xfd, 0x2f, 0x05, 0x73, 0x3e, 0x5f, 0x0a, 0x46, 0xfb, 0xbe, + 0x7f, 0xea, 0x41, 0x77, 0xda, 0xda, 0xbe, 0x3d, 0xc8, 0x86, 0x62, 0x39, 0xe1, 0xe6, 0xd9, 0x9c, + 0xcf, 0x5b, 0x01, 0x6d, 0x6c, 0x07, 0xdb, 0x23, 0x9a, 0xfc, 0x20, 0x5a, 0xe2, 0x77, 0x5b, 0x12, + 0xa9, 0xdc, 0x6d, 0xbd, 0x7d, 0x7b, 0x3d, 0x68, 0x1a, 0x93, 0x83, 0x82, 0xaf, 0x5b, 0x8c, 0xe0, + 0x4b, 0x50, 0x61, 0xd4, 0x44, 0xee, 0x79, 0x9a, 0x3c, 0xdb, 0x4f, 0x12, 0xa4, 0xe9, 0x4c, 0x5f, + 0xeb, 0x6d, 0x21, 0x11, 0xad, 0x01, 0xb5, 0x49, 0x1e, 0xac, 0x45, 0x0b, 0xc6, 0x36, 0x58, 0x46, + 0xb6, 0x16, 0x38, 0x49, 0x2a, 0xd3, 0x7b, 0x2e, 0xe9, 0xa7, 0x4e, 0x31, 0x8b, 0x76, 0x48, 0x15, + 0x9f, 0x45, 0xd3, 0x0c, 0x4d, 0x1f, 0xa5, 0xff, 0x0c, 0x54, 0xab, 0x34, 0x79, 0x81, 0xdf, 0x9e, + 0x9b, 0x3b, 0x02, 0xf0, 0x4b, 0xac, 0xd8, 0x0b, 0xd6, 0x62, 0xc2, 0x87, 0x16, 0xf8, 0xed, 0xb3, + 0xcb, 0x6d, 0x82, 0x62, 0xef, 0xbf, 0x16, 0x50, 0xf9, 0x4a, 0x35, 0x65, 0x29, 0xfe, 0x83, 0xe2, + 0x6f, 0x6d, 0x9d, 0x26, 0x3f, 0x81, 0x96, 0xf9, 0x5d, 0x47, 0x25, 0xdd, 0x0d, 0xdb, 0x6a, 0x9d, + 0x4e, 0x92, 0xc7, 0x24, 0xdf, 0xbf, 0xf4, 0xa0, 0xbb, 0x1c, 0xea, 0xdf, 0x1e, 0xa8, 0xb2, 0xce, + 0x82, 0x2a, 0x77, 0xe7, 0xa2, 0x8a, 0x6d, 0x67, 0xc7, 0x86, 0x2c, 0x34, 0x9c, 0x83, 0xfb, 0xb2, + 0x48, 0xb3, 0xf2, 0xac, 0xab, 0x2f, 0x2b, 0x20, 0xa4, 0x10, 0xf0, 0x25, 0xa8, 0x62, 0x42, 0xbd, + 0x30, 0x56, 0xa8, 0xaf, 0x47, 0x08, 0x7e, 0x91, 0x03, 0x14, 0x16, 0xf2, 0x1e, 0x4d, 0xf6, 0xfa, + 0xb9, 0x64, 0x49, 0xe4, 0xab, 0x52, 0x3c, 0xe3, 0xf2, 0xc5, 0x27, 0xd1, 0x44, 0xf8, 0xe2, 0x91, + 0x86, 0x38, 0x80, 0xe7, 0xd3, 0xd9, 0x08, 0x28, 0x9a, 0xf0, 0x59, 0xb5, 0x18, 0xad, 0x51, 0x85, + 0x9f, 0x9b, 0x8c, 0x75, 0xbc, 0xbe, 0x3f, 0x17, 0xc8, 0x79, 0x56, 0x8f, 0x21, 0x19, 0x0a, 0xfd, + 0xb0, 0xf8, 0x40, 0x37, 0xce, 0x65, 0x4c, 0xec, 0x50, 0x21, 0x1d, 0x79, 0x61, 0x22, 0x16, 0x54, + 0xf8, 0x13, 0x38, 0x33, 0xac, 0x55, 0x6f, 0x0f, 0x44, 0x58, 0x6d, 0x41, 0x84, 0x0a, 0x3b, 0x22, + 0xb0, 0x1d, 0x1c, 0xf7, 0x71, 0xe1, 0xb4, 0x1a, 0xec, 0xb8, 0xb0, 0xaf, 0xa4, 0xef, 0xef, 0x3d, + 0xa8, 0xe4, 0xd9, 0x58, 0x14, 0xd8, 0xc0, 0x45, 0xa8, 0x78, 0x07, 0xfe, 0xcd, 0x60, 0xa0, 0x5c, + 0x93, 0x67, 0xf8, 0x69, 0x92, 0x34, 0x51, 0x3f, 0xd4, 0x97, 0x7d, 0xe3, 0x82, 0xde, 0x35, 0x80, + 0x79, 0x38, 0x48, 0x14, 0x97, 0xa2, 0x42, 0xfc, 0x8b, 0x5f, 0x33, 0x1e, 0xe6, 0xa7, 0x18, 0x75, + 0xd8, 0xc1, 0x82, 0x4b, 0x8b, 0xb5, 0xa8, 0x04, 0xff, 0x25, 0xd8, 0x32, 0x36, 0x38, 0x37, 0xca, + 0x8b, 0x3f, 0x47, 0xa5, 0xf8, 0x37, 0x20, 0x49, 0xe1, 0x98, 0x2a, 0x9b, 0x15, 0xc4, 0xb5, 0xa8, + 0x34, 0xd9, 0xb6, 0x29, 0xaa, 0xa6, 0xd6, 0xb4, 0xb5, 0x52, 0x3b, 0xe0, 0xc5, 0x9a, 0xbc, 0xd0, + 0x6f, 0xa6, 0x4a, 0x77, 0x0f, 0xf7, 0x9d, 0x33, 0x87, 0x4d, 0x7e, 0x64, 0xbb, 0x77, 0xeb, 0xbd, + 0x87, 0xb3, 0xd7, 0x8e, 0x50, 0x67, 0xb0, 0x66, 0xe9, 0x5a, 0x3c, 0x65, 0x34, 0xcb, 0x6f, 0xac, + 0x21, 0x37, 0x65, 0x8a, 0x74, 0x03, 0xc5, 0x68, 0x2a, 0xd9, 0x14, 0x7a, 0x7f, 0x20, 0x2b, 0xfd, + 0xa8, 0x5d, 0xc0, 0x33, 0x2b, 0x57, 0x30, 0x9a, 0x1e, 0x38, 0xc2, 0x6e, 0x7a, 0xfc, 0x15, 0xef, + 0x49, 0x34, 0x91, 0x7e, 0x70, 0xd4, 0x06, 0x96, 0x80, 0x4b, 0x97, 0xca, 0xe8, 0x8b, 0x09, 0x16, + 0x2c, 0xc8, 0xcc, 0x12, 0x9f, 0x43, 0x22, 0xfd, 0x6c, 0xe0, 0x38, 0x6a, 0xd8, 0x08, 0x72, 0x97, + 0x71, 0xc8, 0x96, 0x44, 0x7a, 0xa9, 0x20, 0x2c, 0x35, 0x05, 0x3e, 0x87, 0x72, 0x62, 0x23, 0x9a, + 0x4c, 0x53, 0x37, 0xa8, 0x89, 0xa4, 0xc9, 0xaa, 0x93, 0x0b, 0x45, 0x4e, 0x16, 0x1b, 0x64, 0xb6, + 0x73, 0x5f, 0xa6, 0xe7, 0x23, 0x25, 0x27, 0x57, 0x7c, 0xd2, 0x58, 0xa4, 0xb5, 0xcd, 0x34, 0x8c, + 0x82, 0x8f, 0x8f, 0xc4, 0xb8, 0xb6, 0xd9, 0x18, 0x15, 0x09, 0x45, 0x9e, 0xbd, 0x32, 0x98, 0x1d, + 0x3c, 0xa5, 0x98, 0xd9, 0xdc, 0x5a, 0x11, 0x9e, 0xb9, 0xd8, 0xbe, 0x56, 0x84, 0x6d, 0x66, 0xc3, + 0x20, 0xcc, 0xb2, 0xc2, 0x67, 0x89, 0x07, 0x04, 0x34, 0x89, 0x7e, 0xc3, 0x65, 0x96, 0x86, 0x37, + 0x68, 0xd1, 0xe4, 0x90, 0xdf, 0x9a, 0x23, 0xd1, 0xcb, 0x3a, 0x8d, 0xac, 0xa0, 0xb4, 0x45, 0x31, + 0xef, 0xe2, 0x1d, 0xbe, 0x7e, 0x78, 0xf8, 0x4c, 0x57, 0xba, 0xbf, 0xd7, 0x4b, 0xbc, 0x7e, 0xe1, + 0x24, 0x1a, 0xac, 0xb0, 0xbf, 0xd7, 0xdb, 0x18, 0x22, 0xbe, 0x4a, 0x47, 0x8e, 0x7f, 0x9c, 0xbd, + 0x76, 0x11, 0x27, 0xc8, 0x9b, 0xa2, 0xb1, 0x44, 0x6b, 0x20, 0xe2, 0x85, 0x80, 0x4a, 0x0b, 0x14, + 0x6b, 0x1f, 0x62, 0x18, 0x95, 0x44, 0x62, 0x41, 0xb0, 0xe2, 0x85, 0x60, 0x08, 0xab, 0x35, 0xf9, + 0x97, 0x7e, 0x23, 0x51, 0x7a, 0x1c, 0xd3, 0x5a, 0x8e, 0xe8, 0x57, 0xb6, 0x6c, 0x55, 0xe1, 0x15, + 0x0c, 0x06, 0xe7, 0x53, 0xa7, 0xb2, 0x03, 0xe7, 0xf5, 0x7d, 0x1f, 0xea, 0x5a, 0x97, 0x01, 0xa7, + 0x90, 0x02, 0x63, 0x5f, 0xa0, 0x18, 0x2d, 0x89, 0xcf, 0xa0, 0x32, 0xda, 0xf7, 0x2a, 0x75, 0x9b, + 0x1a, 0x21, 0x46, 0xc3, 0xa5, 0x75, 0x4b, 0x35, 0x79, 0xb1, 0xdf, 0x92, 0x21, 0xdd, 0x4d, 0xe7, + 0x4d, 0xda, 0xa9, 0x04, 0x3c, 0xfc, 0xaa, 0x7d, 0x27, 0xc6, 0x3a, 0x48, 0x5b, 0xa0, 0x58, 0x2a, + 0xd4, 0x56, 0x6a, 0xf2, 0xbd, 0xe8, 0x1e, 0xbf, 0x0d, 0x2d, 0xa4, 0x29, 0x06, 0xcc, 0x53, 0xe4, + 0x39, 0x51, 0x00, 0xe2, 0x2f, 0x8e, 0xaa, 0xd1, 0xf2, 0xdf, 0xfe, 0xe0, 0x7a, 0x24, 0x87, 0xbd, + 0xf5, 0xba, 0x1e, 0xf4, 0xac, 0x2a, 0x3b, 0xef, 0x9f, 0xe4, 0x8f, 0xbc, 0x02, 0x06, 0x98, 0xae, + 0x47, 0x1e, 0xab, 0xce, 0xdd, 0xe4, 0x5e, 0x42, 0xd3, 0x12, 0x3c, 0xab, 0x42, 0x50, 0x19, 0x10, + 0xa5, 0x51, 0x93, 0x57, 0xf8, 0xed, 0xb9, 0xd2, 0x62, 0x79, 0x47, 0x5b, 0x42, 0xf5, 0x92, 0x95, + 0x48, 0xf7, 0xf7, 0xf2, 0x9a, 0x8a, 0x6c, 0xf7, 0x6e, 0x47, 0x36, 0xde, 0xde, 0x4a, 0x2d, 0x6e, + 0x1d, 0x35, 0xf8, 0xf3, 0x2f, 0xaa, 0x74, 0x0f, 0x77, 0x5e, 0xc0, 0x42, 0xb0, 0xf7, 0x57, 0xdc, + 0xf1, 0x9b, 0xf1, 0xa0, 0xb9, 0x6e, 0xcd, 0xdc, 0x1e, 0xa7, 0xf0, 0x46, 0xcb, 0x29, 0xec, 0xb5, + 0x0b, 0x7c, 0xac, 0xe0, 0xe9, 0x1a, 0xce, 0x82, 0x5f, 0x1c, 0xcb, 0xb9, 0xdc, 0xa0, 0xc9, 0x32, + 0x7a, 0xc2, 0x3f, 0xca, 0x32, 0x49, 0x73, 0xf2, 0x2e, 0xb7, 0xef, 0xff, 0x2c, 0x40, 0x15, 0xd6, + 0x93, 0x1d, 0x9f, 0x36, 0xdf, 0x01, 0xeb, 0xf6, 0x0d, 0x2e, 0x78, 0x8f, 0xda, 0x41, 0x7f, 0xac, + 0xd2, 0x8b, 0x24, 0x2a, 0xda, 0x16, 0x0f, 0x36, 0xb2, 0xd0, 0x7b, 0xcf, 0x6b, 0xf2, 0xb3, 0x7e, + 0x48, 0x91, 0x9e, 0x86, 0x68, 0x2d, 0x99, 0x53, 0x87, 0xd3, 0xfd, 0x1f, 0x6c, 0x8b, 0x07, 0x73, + 0x0e, 0xdc, 0x85, 0xde, 0xe1, 0xfd, 0x54, 0x67, 0x57, 0x45, 0x24, 0xe5, 0xc4, 0xb6, 0x85, 0xec, + 0xa8, 0x49, 0xc5, 0x72, 0xce, 0x68, 0x68, 0x59, 0xdc, 0x4a, 0xe2, 0x38, 0xa7, 0x58, 0x18, 0x9e, + 0xf5, 0x9a, 0xac, 0xf8, 0x21, 0x45, 0x6a, 0x34, 0xeb, 0x02, 0xc5, 0x96, 0x37, 0xc8, 0x8d, 0xab, + 0xe4, 0xba, 0x55, 0xcb, 0x21, 0xa3, 0x66, 0xfd, 0x1a, 0x23, 0x25, 0xdd, 0x7f, 0x00, 0x12, 0x17, + 0x30, 0x93, 0x13, 0xe8, 0x3e, 0xd3, 0xd9, 0x9e, 0xe9, 0xe9, 0x54, 0xa0, 0x45, 0xa6, 0x06, 0xcf, + 0xb3, 0x59, 0xd2, 0xfd, 0x0e, 0x9c, 0x98, 0xc1, 0x6c, 0xf0, 0xd8, 0xf5, 0x97, 0xa0, 0x5a, 0xb5, + 0xb7, 0x73, 0xbb, 0xc5, 0x19, 0xc3, 0xa8, 0x55, 0x9e, 0x8b, 0x5a, 0x8c, 0x5d, 0x1a, 0x1b, 0x7b, + 0x4b, 0x03, 0x5c, 0xe5, 0x5b, 0x0f, 0x76, 0x75, 0xce, 0xb3, 0xb0, 0xbe, 0xff, 0x54, 0x88, 0xca, + 0xd6, 0xc6, 0x55, 0x62, 0x98, 0x1e, 0x5d, 0x15, 0x6b, 0x11, 0xeb, 0x51, 0x19, 0xa3, 0x90, 0x5c, + 0xc0, 0x74, 0x22, 0x1d, 0xb1, 0x64, 0x48, 0x65, 0x60, 0xa4, 0x46, 0x19, 0x04, 0x4b, 0x9e, 0xf8, + 0x28, 0xbe, 0xfc, 0xc1, 0xb7, 0x71, 0x01, 0x22, 0x0b, 0xc4, 0x25, 0x4b, 0x25, 0xd0, 0x40, 0x63, + 0x83, 0xc2, 0xa5, 0x8a, 0x4b, 0x8c, 0x60, 0x69, 0x1c, 0x26, 0xb1, 0x60, 0x69, 0x93, 0x59, 0xc8, + 0xbc, 0xe1, 0x8b, 0x97, 0xf4, 0x6b, 0x47, 0x8d, 0xf0, 0x78, 0xdc, 0x46, 0x16, 0x3a, 0x6d, 0xa4, + 0x7e, 0xf1, 0xcc, 0xf0, 0xc5, 0x33, 0x99, 0xe3, 0xe7, 0xf4, 0xeb, 0xc7, 0x73, 0x37, 0x72, 0x21, + 0x2a, 0x8e, 0xc5, 0xd7, 0x27, 0xd5, 0x04, 0x45, 0x87, 0x99, 0x9a, 0x7c, 0x87, 0x9f, 0x26, 0x49, + 0xa5, 0xc0, 0x45, 0xa5, 0x07, 0x06, 0x14, 0x9a, 0x24, 0x2e, 0x43, 0x28, 0x08, 0xd1, 0x8f, 0x59, + 0x70, 0xf2, 0x52, 0xd8, 0x31, 0x2e, 0x59, 0x2a, 0x03, 0x76, 0x86, 0xc5, 0x7f, 0x36, 0x73, 0xc4, + 0xe5, 0x3c, 0x97, 0x0b, 0x7c, 0xd3, 0xfd, 0x9a, 0x3c, 0x9f, 0xe7, 0x72, 0xef, 0x84, 0x4e, 0x6d, + 0xba, 0x0d, 0x9e, 0xe3, 0x5d, 0xce, 0x6b, 0x27, 0x4b, 0xb8, 0x66, 0x4c, 0xed, 0xa4, 0xad, 0x19, + 0xea, 0x43, 0x8b, 0xd7, 0x43, 0x72, 0xbb, 0x4d, 0x8e, 0xdb, 0x52, 0x87, 0xdd, 0x06, 0xd6, 0x19, + 0x36, 0x8b, 0x1e, 0xa2, 0x96, 0xbc, 0x5a, 0xdc, 0x31, 0xf2, 0xf9, 0x2d, 0x70, 0x24, 0x89, 0xd0, + 0x3b, 0xac, 0x39, 0xac, 0xbf, 0xef, 0xaf, 0x3c, 0x68, 0xea, 0xba, 0x40, 0x72, 0xab, 0x05, 0xe0, + 0x7c, 0x4e, 0x00, 0x97, 0x03, 0x4f, 0x73, 0xed, 0xf0, 0x64, 0x01, 0x9a, 0x99, 0x56, 0xa0, 0x31, + 0xe0, 0xa2, 0x3c, 0x07, 0x2e, 0xcc, 0x5d, 0x9f, 0x69, 0xdd, 0x75, 0x63, 0x77, 0xe7, 0xda, 0x77, + 0xd7, 0xb2, 0x7d, 0xb3, 0x6d, 0xdb, 0xc7, 0xef, 0xca, 0x6c, 0xdb, 0xae, 0xf0, 0x8b, 0x3d, 0xd3, + 0x08, 0x41, 0x56, 0x0a, 0x7d, 0xd2, 0x30, 0x61, 0x15, 0x5c, 0x64, 0x34, 0x12, 0x5c, 0x9d, 0x0b, + 0x5b, 0xe6, 0xcb, 0xd9, 0xa0, 0x89, 0xd6, 0xd5, 0xc1, 0x69, 0xbe, 0x7f, 0xe3, 0x41, 0x13, 0xf1, + 0xb2, 0x36, 0xa7, 0xd4, 0x38, 0x5e, 0xd1, 0x25, 0x39, 0xf1, 0x06, 0xc7, 0x84, 0x42, 0xcb, 0x50, + 0x49, 0x32, 0xa5, 0xc6, 0xb9, 0xfb, 0x13, 0xa8, 0x3b, 0x58, 0xa2, 0x11, 0xc8, 0x95, 0x8f, 0xb7, + 0x6a, 0xe4, 0x8a, 0xb5, 0xa8, 0x28, 0x42, 0x38, 0xe2, 0x02, 0x53, 0x09, 0x01, 0x29, 0x52, 0x39, + 0xc0, 0x40, 0xb6, 0xb7, 0x33, 0x3b, 0x70, 0xbe, 0xb2, 0x71, 0xcd, 0x8a, 0xb5, 0x55, 0xcb, 0x15, + 0x65, 0xad, 0xb2, 0x40, 0x81, 0x02, 0xe2, 0xd2, 0x5c, 0xec, 0x25, 0x94, 0xdb, 0xc0, 0xde, 0x32, + 0x67, 0xbc, 0xfd, 0x76, 0x78, 0x38, 0x76, 0xa0, 0x3d, 0x33, 0x01, 0x0c, 0x13, 0x08, 0x95, 0x6d, + 0x8c, 0x26, 0x53, 0x81, 0x28, 0x40, 0xe5, 0xb7, 0xe7, 0x35, 0x96, 0xe6, 0xf0, 0x1a, 0x54, 0x47, + 0x04, 0xbc, 0xc6, 0x94, 0x9c, 0x4b, 0xcb, 0x77, 0xc1, 0x6e, 0x34, 0x51, 0xd1, 0x44, 0x21, 0x0b, + 0xb0, 0x2f, 0xf9, 0x49, 0x82, 0xe4, 0x37, 0xce, 0x05, 0xd0, 0xc3, 0x7b, 0x03, 0xf1, 0xea, 0x96, + 0xb6, 0x40, 0xb4, 0x65, 0xc7, 0x96, 0x58, 0x5b, 0xf5, 0xe2, 0x2a, 0x6f, 0x5b, 0xb2, 0xfa, 0x25, + 0x35, 0x99, 0x5a, 0x5c, 0x1d, 0x60, 0xd6, 0x0c, 0x20, 0xb6, 0x68, 0x40, 0x28, 0x1a, 0x0b, 0xa9, + 0x2b, 0x02, 0xad, 0xe1, 0xc8, 0x76, 0x4a, 0x41, 0x49, 0x60, 0x40, 0x2e, 0x59, 0x2a, 0xcb, 0xf4, + 0x0c, 0xe8, 0x6f, 0xef, 0xcf, 0x5e, 0x19, 0xd4, 0xf7, 0x1d, 0x67, 0xf5, 0xb9, 0x02, 0xe2, 0x7d, + 0xa8, 0x20, 0x18, 0x6f, 0xa3, 0x6f, 0x75, 0xa7, 0x6b, 0xf2, 0x34, 0x3f, 0xfe, 0x96, 0x50, 0x7d, + 0xd3, 0x7a, 0x6f, 0xe6, 0x74, 0x7f, 0xe6, 0xe8, 0x25, 0x05, 0x27, 0x88, 0xcb, 0x50, 0x71, 0xab, + 0xda, 0x1a, 0x4b, 0x6c, 0x27, 0xa8, 0x37, 0xa9, 0xee, 0x5e, 0x4d, 0xf6, 0xf9, 0x69, 0x92, 0x54, + 0xae, 0xef, 0xe9, 0xd0, 0x7b, 0xdf, 0xd4, 0xcf, 0x9e, 0xd7, 0x2f, 0x1d, 0x32, 0x6c, 0xdb, 0xbd, + 0x2b, 0xeb, 0x14, 0x5a, 0x42, 0xdc, 0x80, 0x8a, 0x36, 0x85, 0x77, 0x18, 0x04, 0x93, 0x78, 0xeb, + 0x84, 0x14, 0x69, 0x69, 0xba, 0xbf, 0x9b, 0xa0, 0x45, 0x95, 0x17, 0x22, 0xfa, 0x66, 0xde, 0xec, + 0x83, 0xd3, 0x13, 0x32, 0xb2, 0xe7, 0x77, 0x66, 0x7a, 0x3a, 0x87, 0xf7, 0x7e, 0xa0, 0x0f, 0x0e, + 0x18, 0x6e, 0x0a, 0x14, 0xa8, 0x2c, 0x3e, 0xcd, 0x69, 0x89, 0x4b, 0xcd, 0x68, 0x7c, 0xa6, 0x96, + 0xf8, 0x3e, 0xf6, 0xcb, 0xa8, 0x4a, 0x1f, 0xf8, 0x1c, 0xbb, 0x5a, 0x49, 0x3c, 0x2c, 0xd4, 0x24, + 0xd5, 0xc8, 0x66, 0xce, 0xbb, 0x82, 0x78, 0x50, 0xc8, 0x21, 0x8b, 0x84, 0x30, 0xd4, 0xfd, 0x56, + 0x93, 0xd7, 0xe6, 0x9c, 0xc3, 0x4f, 0xe8, 0xd7, 0x5e, 0x67, 0xd5, 0xd2, 0xfd, 0x03, 0xb8, 0x21, + 0x62, 0xbc, 0xc5, 0x17, 0xe2, 0x8f, 0xea, 0xca, 0x58, 0x34, 0x12, 0x8e, 0xaa, 0x35, 0xb1, 0xcd, + 0x9b, 0xf1, 0xdf, 0x05, 0x5f, 0xd7, 0xcd, 0x48, 0xdc, 0xa1, 0xfc, 0x4c, 0x29, 0x86, 0x74, 0x65, + 0x02, 0xcd, 0xb0, 0x92, 0xe0, 0xda, 0x6e, 0x41, 0x93, 0x8f, 0x09, 0xe8, 0x75, 0xc1, 0x7f, 0x27, + 0xc6, 0x06, 0x07, 0x44, 0x90, 0x5e, 0x06, 0x9b, 0x02, 0xd8, 0x6c, 0xe0, 0x2f, 0x6e, 0x92, 0x45, + 0xc8, 0xdf, 0x78, 0xb8, 0x2b, 0xb1, 0x75, 0x68, 0xb7, 0x07, 0x6b, 0xb8, 0xd6, 0xc2, 0x1a, 0xce, + 0xce, 0x65, 0x0d, 0xf9, 0x29, 0x8d, 0x8d, 0x3d, 0x5c, 0xa1, 0xc9, 0xf5, 0x48, 0xf6, 0x4f, 0xc7, + 0xab, 0xb2, 0x26, 0x16, 0xb2, 0x2c, 0x86, 0x54, 0x6e, 0xdf, 0x28, 0x37, 0xbb, 0x8f, 0xbf, 0x2d, + 0x45, 0x65, 0x7c, 0xef, 0xe2, 0xc3, 0xa8, 0x24, 0x4a, 0xdb, 0xe3, 0x8f, 0x17, 0x23, 0x11, 0x90, + 0xfd, 0xc4, 0x05, 0xca, 0x17, 0x1a, 0xe9, 0xb8, 0x62, 0x6a, 0x7b, 0x5c, 0xe5, 0x0e, 0x18, 0xa8, + 0xc8, 0x12, 0x19, 0x95, 0x60, 0x47, 0x0b, 0x4b, 0xc7, 0x84, 0x9e, 0x23, 0x31, 0x05, 0x1c, 0xa1, + 0x77, 0x23, 0x31, 0x16, 0xda, 0x72, 0x2f, 0xd0, 0x16, 0xf0, 0xbf, 0x70, 0x87, 0x26, 0x4f, 0x05, + 0xda, 0x52, 0x1a, 0x8c, 0xb7, 0x39, 0x93, 0x96, 0x22, 0x77, 0xd2, 0x72, 0xf1, 0xea, 0xc8, 0x5e, + 0x67, 0xd2, 0x72, 0x2f, 0x2a, 0x68, 0x31, 0x28, 0x18, 0xf4, 0xd2, 0x82, 0x7b, 0x69, 0x31, 0x7b, + 0x69, 0x89, 0xb7, 0x89, 0x49, 0x83, 0x05, 0x98, 0x60, 0x86, 0x23, 0x64, 0x51, 0x48, 0xd7, 0xd0, + 0x39, 0x90, 0x9b, 0xd7, 0x8d, 0xa1, 0xae, 0xe6, 0xe5, 0xab, 0x56, 0xdd, 0x18, 0xea, 0x1e, 0x3e, + 0x73, 0x21, 0x7b, 0x76, 0x40, 0xbf, 0xf8, 0x76, 0xfa, 0x8b, 0xfd, 0xfa, 0xa1, 0xbe, 0xe1, 0x4f, + 0x7a, 0xd3, 0x57, 0x2f, 0xe1, 0xec, 0xb5, 0xab, 0x1a, 0x36, 0xae, 0x5d, 0xbf, 0x2e, 0xb7, 0xc8, + 0xe7, 0x1f, 0xeb, 0x6f, 0x5c, 0xcc, 0x5e, 0xdb, 0x6d, 0xf0, 0x17, 0x8d, 0xa8, 0xb4, 0x2d, 0x1a, + 0x4e, 0x35, 0x25, 0xc2, 0x41, 0x95, 0x90, 0x3e, 0x0f, 0x88, 0x34, 0xcd, 0x54, 0x69, 0x16, 0xd4, + 0x4d, 0x0f, 0x7e, 0x9e, 0x39, 0x3d, 0x64, 0x4c, 0xf0, 0xc6, 0x50, 0xb7, 0xde, 0xf1, 0xaa, 0x62, + 0x96, 0x13, 0x97, 0xa2, 0x22, 0x4c, 0xf6, 0x31, 0x07, 0x53, 0xc0, 0xc4, 0x86, 0x90, 0x22, 0x89, + 0x20, 0x51, 0xc3, 0x77, 0x4e, 0x76, 0x96, 0x28, 0x90, 0x25, 0xfe, 0x8e, 0xa3, 0x8f, 0xc8, 0xbc, + 0x73, 0x9a, 0xf4, 0x71, 0x85, 0xde, 0x77, 0x35, 0x73, 0xf0, 0x9c, 0x49, 0x1d, 0x7b, 0x0e, 0x60, + 0x9a, 0xdb, 0xbd, 0xdb, 0x34, 0x52, 0xcd, 0xa1, 0xca, 0x40, 0x3f, 0x8d, 0xce, 0xa0, 0x26, 0x47, + 0x3f, 0x5b, 0xd0, 0x64, 0x46, 0xbe, 0x9a, 0x62, 0xb1, 0x48, 0x63, 0x03, 0x70, 0x4e, 0x75, 0x4f, + 0x68, 0xf2, 0xcf, 0xfd, 0x39, 0x59, 0x92, 0x1f, 0xe8, 0xba, 0xae, 0x5d, 0xc0, 0x58, 0x71, 0xf9, + 0x74, 0x63, 0x43, 0x15, 0x1f, 0xd6, 0x5d, 0xef, 0xba, 0x3a, 0xd2, 0x71, 0x80, 0x76, 0x91, 0x53, + 0x57, 0x3c, 0x25, 0x20, 0x04, 0xee, 0x0a, 0x1a, 0xc2, 0xc9, 0xad, 0xe4, 0x2d, 0xb9, 0xc3, 0xdd, + 0xae, 0x21, 0x90, 0x0a, 0xe0, 0x7c, 0x08, 0xfe, 0xc2, 0x55, 0x90, 0xd6, 0x19, 0x80, 0x9b, 0x1d, + 0x3c, 0x95, 0x7d, 0xeb, 0x4d, 0x36, 0x53, 0xe8, 0x3a, 0xe7, 0xc0, 0x59, 0xe8, 0x4d, 0x0f, 0x76, + 0xa4, 0x07, 0x3b, 0x9c, 0xe8, 0x3d, 0x18, 0xa7, 0xeb, 0x1d, 0x57, 0x32, 0x57, 0x2e, 0x28, 0x5c, + 0x0f, 0x62, 0x8f, 0x80, 0x4a, 0x43, 0xb4, 0xff, 0x64, 0xf9, 0x24, 0xe7, 0xcb, 0xa7, 0x31, 0x40, + 0xe2, 0x83, 0xdb, 0x2c, 0xcf, 0xc6, 0x97, 0x39, 0x7a, 0x29, 0x73, 0xe0, 0xe2, 0x77, 0x36, 0x3e, + 0xb3, 0x03, 0xf1, 0x59, 0x34, 0x39, 0xb0, 0x2d, 0x10, 0x8e, 0x04, 0x36, 0x45, 0xd4, 0xa7, 0xdb, + 0x62, 0xa9, 0x00, 0x79, 0xa6, 0x3e, 0xa9, 0x4e, 0xd2, 0xe4, 0x1a, 0x7f, 0x4e, 0x96, 0x34, 0x67, + 0xb8, 0xef, 0x1c, 0x25, 0x13, 0x4c, 0x0b, 0xf1, 0x3b, 0x9c, 0x01, 0x98, 0xa9, 0xe4, 0x14, 0xaf, + 0xc5, 0x64, 0x02, 0x95, 0xfb, 0x4b, 0xd6, 0x38, 0x12, 0x27, 0x9f, 0x5e, 0x84, 0xee, 0x5e, 0xa9, + 0xa6, 0x56, 0x07, 0x88, 0x30, 0xb9, 0xad, 0xa5, 0x45, 0x4d, 0xa6, 0xd4, 0xd0, 0xea, 0x40, 0x70, + 0x4b, 0xf8, 0x3b, 0x91, 0x25, 0x3d, 0x96, 0xc3, 0xdf, 0xdd, 0x93, 0x8f, 0xbf, 0xcb, 0x15, 0xa8, + 0xbe, 0x27, 0x58, 0x59, 0xea, 0x43, 0x82, 0x26, 0xb7, 0xfa, 0x4b, 0x82, 0x91, 0x24, 0x48, 0x98, + 0x03, 0x54, 0xc2, 0x0c, 0x6c, 0xf5, 0xaa, 0xc5, 0x8b, 0x16, 0x01, 0x15, 0x58, 0x54, 0xbd, 0x78, + 0xd1, 0xa2, 0x74, 0xff, 0x07, 0x86, 0x73, 0x8c, 0x55, 0x0f, 0x9a, 0x59, 0x0f, 0xe6, 0x64, 0x2d, + 0x5e, 0xc4, 0xf2, 0x70, 0x21, 0x92, 0x4c, 0x4c, 0xc1, 0x5f, 0xcb, 0xf6, 0x76, 0x2e, 0xf8, 0xba, + 0x6e, 0x76, 0xa2, 0x42, 0x29, 0xc4, 0x85, 0x94, 0x42, 0xdc, 0x8a, 0x52, 0x44, 0x2a, 0x28, 0x45, + 0xab, 0x24, 0xf2, 0x07, 0xd8, 0x77, 0x0b, 0x3f, 0x5a, 0x38, 0x2e, 0x7e, 0x74, 0x11, 0x88, 0xbf, + 0x1a, 0x28, 0xe3, 0x48, 0x8e, 0x65, 0x48, 0x91, 0x26, 0x03, 0xc7, 0x95, 0xbd, 0x76, 0x24, 0x3b, + 0xd8, 0xd3, 0xd8, 0x00, 0xb2, 0xab, 0x86, 0x9b, 0xc5, 0x29, 0x6e, 0x63, 0x74, 0x0e, 0x38, 0x45, + 0x12, 0x84, 0x8b, 0xd2, 0xb9, 0x75, 0x99, 0x83, 0x17, 0x86, 0x0f, 0x1c, 0xa6, 0x50, 0x78, 0x76, + 0x37, 0xc6, 0x02, 0x4e, 0x3b, 0x76, 0x63, 0xa8, 0x0b, 0xe2, 0x2e, 0x57, 0x8d, 0x74, 0xbf, 0xa1, + 0x0f, 0xb5, 0x7f, 0xd5, 0xbe, 0xcb, 0x14, 0xd4, 0x79, 0xf5, 0x7d, 0x27, 0xf4, 0xbe, 0xab, 0x46, + 0xe1, 0xcc, 0xf1, 0xd3, 0x98, 0xa8, 0x5d, 0xde, 0x45, 0x29, 0x25, 0x33, 0xde, 0x1c, 0x1d, 0x2a, + 0x25, 0x7f, 0xe6, 0xf4, 0xd5, 0xcc, 0x81, 0x8b, 0xad, 0xa4, 0x14, 0xa8, 0x14, 0xa8, 0xf8, 0x8d, + 0x1f, 0x1e, 0x08, 0x79, 0xfe, 0x2f, 0x0f, 0xf2, 0xe5, 0x6b, 0xf1, 0xf6, 0xe0, 0x91, 0x7e, 0x6d, + 0xe1, 0x91, 0xee, 0x73, 0xe5, 0x91, 0xd4, 0xd6, 0x78, 0x24, 0x90, 0x52, 0xeb, 0x63, 0xd1, 0xcd, + 0xe1, 0x96, 0x71, 0xd9, 0xcc, 0x8e, 0x61, 0x91, 0xa4, 0x72, 0xfb, 0xfa, 0xba, 0xf1, 0x4e, 0xfb, + 0x0a, 0xd0, 0x5d, 0x36, 0xae, 0x34, 0xf9, 0x43, 0x5d, 0x1b, 0x37, 0xda, 0xaf, 0x8d, 0xb2, 0x26, + 0x3f, 0xce, 0xa3, 0xe9, 0x62, 0x0e, 0x4d, 0xab, 0xbc, 0x00, 0xc6, 0x99, 0xae, 0xbd, 0xfa, 0xc5, + 0x6e, 0xbc, 0x60, 0x03, 0x47, 0x86, 0x3f, 0x79, 0x4f, 0x3f, 0xf4, 0x39, 0x7d, 0xb1, 0x41, 0xd6, + 0x92, 0x47, 0xe6, 0xe7, 0x50, 0x71, 0x38, 0x8e, 0xe7, 0x4b, 0x89, 0x40, 0xbd, 0x26, 0x3f, 0xea, + 0xa7, 0x49, 0x52, 0x0d, 0xae, 0x6e, 0xb8, 0x77, 0xe1, 0x51, 0xbb, 0x09, 0x8f, 0xf6, 0x64, 0x3b, + 0xeb, 0x8f, 0xa2, 0x0d, 0x4c, 0x5a, 0x50, 0x68, 0x7d, 0xc3, 0x9e, 0xc5, 0x75, 0x3d, 0xa5, 0x59, + 0xf4, 0x5e, 0x70, 0x78, 0x77, 0xba, 0xff, 0x03, 0xa3, 0x37, 0x8a, 0x01, 0xff, 0xde, 0x83, 0x2a, + 0x9c, 0xaa, 0xde, 0x8e, 0xd6, 0x74, 0x77, 0x39, 0xea, 0x64, 0xf0, 0x11, 0x07, 0x06, 0x36, 0x00, + 0xec, 0xd4, 0xbc, 0x81, 0x5f, 0x05, 0x0b, 0xc8, 0xaf, 0xd5, 0xe4, 0x55, 0xe8, 0x97, 0xfe, 0x3c, + 0xab, 0xc2, 0x56, 0x34, 0x67, 0x2d, 0xdd, 0xa0, 0xfd, 0xd3, 0x09, 0xa8, 0xd4, 0x18, 0x89, 0xf8, + 0x08, 0x0d, 0x7d, 0xcf, 0x80, 0x9b, 0x2c, 0x10, 0x4d, 0x92, 0xee, 0xa0, 0x27, 0xcd, 0xc0, 0x91, + 0x30, 0xed, 0xb4, 0xb1, 0x81, 0x46, 0xb7, 0x6f, 0x10, 0x1f, 0x45, 0x13, 0xc2, 0xd1, 0xa8, 0x9a, + 0x68, 0x6c, 0xa2, 0x6b, 0x4b, 0xa4, 0x91, 0x2c, 0x4d, 0x9a, 0x46, 0xc7, 0xb2, 0xa7, 0x23, 0x7b, + 0xed, 0x48, 0xba, 0x7f, 0xb0, 0xb1, 0x49, 0x61, 0x79, 0xe2, 0x73, 0xa8, 0x2c, 0xcc, 0xdd, 0x55, + 0x28, 0x94, 0x3f, 0xac, 0xc9, 0x4b, 0xfd, 0x96, 0x0c, 0x69, 0x3e, 0xa0, 0x2f, 0xb5, 0x3b, 0xea, + 0x3d, 0x9e, 0xfd, 0xe8, 0xbd, 0x74, 0xff, 0xc7, 0xf8, 0x24, 0x38, 0xd4, 0x37, 0xfc, 0xea, 0x35, + 0xa0, 0xd6, 0x8a, 0xa5, 0x8e, 0xf8, 0x00, 0x7f, 0x8f, 0x20, 0x9b, 0x46, 0x4e, 0x9e, 0x29, 0x30, + 0x9e, 0x60, 0xbc, 0x8d, 0x2e, 0x2f, 0x39, 0x7e, 0x16, 0xa2, 0x82, 0x56, 0x95, 0x59, 0x53, 0x10, + 0xfc, 0xc4, 0xdf, 0x92, 0x68, 0x0c, 0x5e, 0xef, 0x7d, 0x93, 0x95, 0x6f, 0x55, 0x5b, 0xc5, 0x47, + 0xf8, 0xeb, 0xc3, 0x7d, 0x9a, 0x7c, 0x0f, 0x5c, 0x1f, 0x66, 0x43, 0xf9, 0x16, 0xd6, 0x38, 0x3f, + 0xc2, 0x45, 0x70, 0xa3, 0x58, 0x8c, 0x0a, 0xb6, 0xc5, 0x83, 0xf4, 0x3a, 0x41, 0x96, 0x0a, 0x7f, + 0x4b, 0x33, 0xa8, 0xff, 0x07, 0xa6, 0x0b, 0xdd, 0xd0, 0x54, 0xef, 0x6d, 0x6c, 0x50, 0x70, 0x1e, + 0x46, 0x54, 0x4a, 0x3f, 0x4a, 0x18, 0xa2, 0x3e, 0x69, 0xd0, 0x8f, 0x87, 0xf8, 0x8a, 0xa0, 0x1e, + 0xbf, 0x31, 0xd4, 0x85, 0xef, 0x15, 0xef, 0xed, 0xd2, 0xaf, 0x5e, 0xd7, 0x3f, 0x7f, 0xfb, 0xc6, + 0x50, 0x57, 0xe6, 0xf3, 0xcb, 0x7a, 0xcf, 0x15, 0x3c, 0x9a, 0xd7, 0x4e, 0xeb, 0x9f, 0xbf, 0x9d, + 0xed, 0xed, 0x34, 0xc8, 0xcc, 0xe3, 0xa8, 0x94, 0x6e, 0xc7, 0xb6, 0x87, 0xa8, 0x30, 0x84, 0xec, + 0xbd, 0x99, 0x2a, 0x4d, 0x85, 0x2e, 0xc2, 0xf1, 0x6d, 0x0f, 0x01, 0xee, 0x2b, 0x66, 0xa6, 0xb8, + 0xdc, 0xb0, 0xb7, 0x81, 0x9b, 0x02, 0xb8, 0x11, 0xa6, 0xf6, 0x36, 0x5e, 0xe6, 0xbb, 0xc3, 0xb0, + 0xba, 0xc9, 0xdd, 0x33, 0x66, 0x84, 0xb3, 0x8c, 0x4a, 0xba, 0x80, 0xeb, 0x07, 0x25, 0x25, 0x91, + 0x74, 0xcd, 0xcd, 0x69, 0x22, 0xb7, 0x01, 0x10, 0x6b, 0x3d, 0xc9, 0x59, 0xe3, 0x94, 0x99, 0x12, + 0x4d, 0x23, 0x91, 0xad, 0x6f, 0xae, 0x2d, 0x8f, 0x69, 0x93, 0x13, 0x42, 0x53, 0x82, 0xa6, 0x5e, + 0x06, 0xe3, 0x04, 0x71, 0xe9, 0x54, 0x52, 0x57, 0xab, 0xc9, 0x0f, 0xfb, 0x73, 0xf3, 0xa4, 0xf9, + 0xf0, 0x3e, 0x02, 0xdf, 0x6f, 0xfa, 0xce, 0xa5, 0x07, 0x8e, 0x64, 0xbb, 0x77, 0x83, 0xe6, 0x0f, + 0x68, 0x39, 0x75, 0xd8, 0x98, 0x5b, 0xad, 0x16, 0x53, 0x70, 0xf4, 0x73, 0xff, 0x44, 0xaa, 0x3d, + 0x25, 0x4d, 0x55, 0x83, 0x64, 0x97, 0xe2, 0x18, 0x83, 0x1b, 0xca, 0xaf, 0x73, 0x88, 0xac, 0x5f, + 0x3e, 0x9a, 0x3d, 0x3b, 0xe0, 0x3b, 0xef, 0x31, 0x35, 0xa9, 0x32, 0x10, 0xf3, 0x1f, 0x52, 0xba, + 0xf9, 0x7d, 0x1f, 0x53, 0xcc, 0x2e, 0x2c, 0xcf, 0x9c, 0xa5, 0x19, 0x26, 0xe1, 0x23, 0x4d, 0xd1, + 0xeb, 0xc2, 0x08, 0xa7, 0x7e, 0xb4, 0xd4, 0xba, 0xdd, 0xf8, 0x27, 0xc1, 0x55, 0xb3, 0xcf, 0x4d, + 0x6b, 0x3c, 0x87, 0x49, 0x93, 0x26, 0xaf, 0x46, 0x4f, 0xf9, 0xf3, 0xad, 0x0e, 0x7f, 0x9a, 0x70, + 0x8b, 0xea, 0x76, 0x9a, 0x1c, 0x11, 0xa8, 0x85, 0x18, 0xd7, 0x94, 0xf8, 0x7b, 0x54, 0x98, 0x32, + 0xe5, 0x4e, 0x61, 0x4d, 0xde, 0xec, 0x27, 0x09, 0xd2, 0x0b, 0x39, 0xad, 0x56, 0xc2, 0xcb, 0x0f, + 0x9a, 0xd4, 0xbd, 0x1b, 0x58, 0x0d, 0xc3, 0xbb, 0x6d, 0xf3, 0x3a, 0x79, 0x4d, 0x83, 0xac, 0x34, + 0xa4, 0xfb, 0x07, 0x32, 0xa7, 0xf7, 0xea, 0x7b, 0xf7, 0x40, 0x71, 0x7c, 0x21, 0x5a, 0xbe, 0x52, + 0xae, 0xff, 0x75, 0xba, 0x7f, 0x20, 0x3d, 0x74, 0x1a, 0xdf, 0xc7, 0x49, 0xfa, 0x02, 0x85, 0xf4, + 0xe2, 0xbb, 0xe6, 0x41, 0x5e, 0x36, 0xc3, 0xba, 0x40, 0x34, 0xf4, 0x52, 0x38, 0x94, 0xda, 0xd2, + 0x14, 0x08, 0x6e, 0x0d, 0xb4, 0x7c, 0x63, 0xb6, 0x4e, 0xf8, 0x56, 0xb7, 0x45, 0xe1, 0xe6, 0xa1, + 0x0d, 0xa5, 0x34, 0xa3, 0x2e, 0x00, 0x13, 0x2e, 0xe2, 0xce, 0x3a, 0x2e, 0xa7, 0x07, 0x3e, 0xd4, + 0xfb, 0xdf, 0xd3, 0x2f, 0x5e, 0xd3, 0xbb, 0x3a, 0x7c, 0xff, 0xdd, 0x43, 0xae, 0xdb, 0x6e, 0xd5, + 0x6f, 0x0f, 0x2c, 0x0a, 0x5a, 0x78, 0xb1, 0xf9, 0xb9, 0x58, 0x94, 0x3b, 0x2f, 0x17, 0x1b, 0x19, + 0xfb, 0xea, 0x00, 0x56, 0x51, 0x7c, 0xa2, 0x2f, 0x6c, 0x47, 0x5f, 0x2d, 0xf7, 0xd5, 0xb6, 0xa3, + 0x94, 0x26, 0xa0, 0xe9, 0x4e, 0xc3, 0x13, 0x27, 0x23, 0x4f, 0x38, 0x44, 0xf5, 0xae, 0x9e, 0x70, + 0x48, 0x14, 0xe9, 0xc3, 0x08, 0xd0, 0xb3, 0xc2, 0xbb, 0x07, 0x2f, 0x9a, 0x18, 0x55, 0x53, 0x2f, + 0xc5, 0x12, 0x5b, 0x4d, 0xce, 0x4a, 0xe1, 0x93, 0x38, 0xed, 0x66, 0xa1, 0x45, 0xbb, 0x39, 0x1b, + 0x95, 0x6e, 0x62, 0xbd, 0x12, 0x86, 0xa8, 0x48, 0x31, 0x13, 0x7c, 0x9f, 0x16, 0xa2, 0x3b, 0x0d, + 0x16, 0x74, 0x6d, 0xb2, 0xb1, 0x35, 0xd0, 0x72, 0x3b, 0x2a, 0xd6, 0xfe, 0x67, 0xc1, 0xf6, 0x50, + 0xf0, 0x03, 0x41, 0x93, 0xdf, 0x13, 0x38, 0x21, 0xe7, 0x09, 0x61, 0xe4, 0x68, 0x8f, 0xfe, 0xea, + 0x21, 0x43, 0xf5, 0x03, 0xac, 0x07, 0xbc, 0x41, 0xaa, 0x6d, 0x5a, 0x5f, 0xb7, 0xaa, 0xb1, 0x7e, + 0x63, 0xe3, 0x6a, 0x79, 0xe5, 0xf2, 0x4a, 0xbd, 0xe3, 0x23, 0xbd, 0xe3, 0x32, 0x14, 0x5f, 0x50, + 0xd5, 0xa4, 0x34, 0x6e, 0x90, 0xd7, 0x2d, 0xa7, 0x79, 0x70, 0x79, 0x62, 0x79, 0xcd, 0xbf, 0x90, + 0x95, 0xe5, 0x0d, 0x46, 0x35, 0x0c, 0x02, 0x2c, 0x6b, 0xb5, 0xac, 0x3c, 0xb5, 0x7c, 0x1d, 0xcb, + 0xea, 0xdf, 0xa5, 0xf7, 0x0c, 0xb0, 0x2c, 0xaf, 0xbc, 0x6a, 0x15, 0x98, 0xe9, 0x40, 0x0a, 0x27, + 0x38, 0xdd, 0xca, 0xab, 0xb0, 0x8b, 0x4c, 0x6b, 0x4a, 0xce, 0xb0, 0x60, 0x99, 0x7e, 0xf1, 0xaa, + 0x7e, 0xe2, 0x82, 0x7e, 0xf5, 0x8a, 0x7e, 0xe8, 0x12, 0xb3, 0x2a, 0xa8, 0xf2, 0x82, 0xbb, 0x22, + 0xe0, 0x5a, 0xa0, 0x59, 0xc3, 0x76, 0x81, 0x32, 0xda, 0x00, 0xe2, 0x66, 0x4b, 0x86, 0x8d, 0xb6, + 0x0b, 0x04, 0x18, 0x8a, 0x0a, 0xce, 0x94, 0x95, 0x5e, 0xe8, 0xfe, 0x9d, 0x07, 0x95, 0xdb, 0x6b, + 0xdd, 0x1e, 0x24, 0xe4, 0x97, 0x16, 0x12, 0x72, 0x67, 0x2e, 0x09, 0xa1, 0xb3, 0x19, 0x9b, 0xe4, + 0x62, 0x83, 0x26, 0x37, 0xa3, 0xa7, 0xfd, 0xae, 0x6b, 0x21, 0xcd, 0xb7, 0x2f, 0x21, 0x6c, 0x4e, + 0xfe, 0xdb, 0xdc, 0xd7, 0x45, 0x68, 0x02, 0x6d, 0x4a, 0x5c, 0x8c, 0x26, 0x84, 0xf1, 0x0f, 0x03, + 0x0f, 0xef, 0x24, 0x78, 0x48, 0xd3, 0xa4, 0x52, 0x68, 0x0f, 0x5f, 0x2f, 0x58, 0x9a, 0xb8, 0x10, + 0x15, 0x05, 0x22, 0xe1, 0x40, 0x92, 0xae, 0x27, 0x31, 0x9a, 0x87, 0x14, 0xa9, 0x8c, 0x75, 0xff, + 0xa1, 0x7e, 0xf8, 0x80, 0x02, 0x89, 0x78, 0xc7, 0x02, 0x89, 0xe0, 0x16, 0xfe, 0xe1, 0x23, 0x49, + 0x90, 0xa6, 0x40, 0xe9, 0xfa, 0xa6, 0xf5, 0x99, 0xb7, 0x3f, 0xcb, 0xbc, 0xbd, 0x5b, 0x21, 0xc9, + 0xa2, 0x82, 0xa6, 0xc4, 0x92, 0xf5, 0x6d, 0xc9, 0x54, 0xac, 0x35, 0xbc, 0x03, 0x2e, 0x7b, 0x80, + 0x75, 0xe4, 0xd1, 0x71, 0x6e, 0x9e, 0x24, 0xea, 0x17, 0xbb, 0xf5, 0x7d, 0x9f, 0x51, 0x21, 0x3b, + 0x68, 0xa6, 0x72, 0x0b, 0x89, 0x0f, 0xa3, 0xe2, 0x58, 0x92, 0x70, 0xfc, 0x45, 0xe6, 0x65, 0x8a, + 0x26, 0x31, 0xcb, 0x00, 0x0a, 0x83, 0xc0, 0xec, 0xd3, 0x3c, 0xb1, 0x11, 0xa1, 0xa4, 0x9a, 0x08, + 0xab, 0x50, 0xb9, 0xd8, 0xbc, 0x71, 0x70, 0xc9, 0x52, 0x39, 0xdf, 0x00, 0xa8, 0xa9, 0xd8, 0x83, + 0x17, 0xb3, 0x94, 0x28, 0xe7, 0xe8, 0x87, 0x48, 0x33, 0x4c, 0x3f, 0x34, 0x9b, 0x62, 0x15, 0xd1, + 0x0f, 0xd5, 0x7a, 0xd7, 0xac, 0x55, 0x56, 0xcb, 0xab, 0x2a, 0xc1, 0xef, 0xcd, 0x02, 0x83, 0xde, + 0x7e, 0xce, 0x93, 0x22, 0xb8, 0xe0, 0x81, 0xee, 0x96, 0x23, 0x45, 0x9d, 0x79, 0x49, 0x91, 0xf7, + 0x66, 0xd2, 0x22, 0x8e, 0xf4, 0x04, 0x51, 0x09, 0x45, 0x05, 0xd0, 0x2f, 0x39, 0xb8, 0x26, 0xe3, + 0x2d, 0x4f, 0xfd, 0x9a, 0x7c, 0xbf, 0xdf, 0xa8, 0x21, 0xcd, 0xa2, 0x70, 0x65, 0xb5, 0x9a, 0xa2, + 0xc8, 0x62, 0x14, 0xab, 0xf5, 0x69, 0xf2, 0x3c, 0x34, 0xc7, 0xcf, 0x80, 0xdb, 0xba, 0xb1, 0xd0, + 0x84, 0x6f, 0x35, 0x9a, 0xc8, 0x3f, 0x4c, 0xf0, 0x5a, 0x5f, 0x17, 0xc0, 0x41, 0x69, 0x79, 0x3d, + 0x30, 0xdb, 0xf6, 0x70, 0x9d, 0xb3, 0x0a, 0xf2, 0xfd, 0xa5, 0x80, 0x66, 0x99, 0xd6, 0xae, 0x6d, + 0xd1, 0x54, 0xb8, 0x95, 0x1c, 0xbc, 0xec, 0x9c, 0x7b, 0xc8, 0xfe, 0xf0, 0x81, 0x20, 0x0c, 0x67, + 0x12, 0x56, 0xe2, 0x64, 0x03, 0xc6, 0x9d, 0x8f, 0x9e, 0x71, 0x9d, 0x8f, 0xb5, 0x4f, 0x68, 0xf2, + 0xcf, 0x51, 0xad, 0x3f, 0xdf, 0xa8, 0x18, 0xbf, 0x0e, 0xa6, 0xfa, 0x99, 0xe3, 0x9f, 0xf1, 0x34, + 0xdc, 0xf7, 0xb7, 0x05, 0x9c, 0x51, 0x8c, 0xa5, 0xf2, 0xed, 0xf6, 0xac, 0x1d, 0x83, 0xd9, 0x43, + 0xb9, 0x60, 0x96, 0x6f, 0x6a, 0x44, 0x55, 0xb6, 0x3c, 0x9a, 0x4a, 0x6c, 0x1f, 0x13, 0x85, 0xae, + 0xf8, 0x15, 0x2a, 0x35, 0x6a, 0x88, 0x53, 0x51, 0xc1, 0x56, 0x75, 0x3b, 0x05, 0x21, 0xfc, 0x53, + 0x5c, 0x8a, 0x8a, 0xb6, 0x05, 0x22, 0x6d, 0x30, 0xed, 0x89, 0xd2, 0x5c, 0xdb, 0xb3, 0xa7, 0x36, + 0xe2, 0xc3, 0x95, 0xbe, 0xff, 0x50, 0xa0, 0x70, 0xad, 0xe7, 0x11, 0xa1, 0xf6, 0x57, 0x9a, 0xbc, + 0x0e, 0x29, 0xfe, 0xbc, 0xfb, 0x20, 0xdd, 0x9d, 0x67, 0x17, 0xdd, 0x68, 0xbf, 0x1f, 0x4d, 0xb6, + 0xf6, 0x2a, 0x96, 0xa3, 0x09, 0xdb, 0xe8, 0xcb, 0x15, 0xc1, 0x5b, 0x50, 0x59, 0xaa, 0xb0, 0x4f, + 0xdf, 0x3f, 0x08, 0xdc, 0x39, 0xdc, 0x04, 0x07, 0x7b, 0xf2, 0xf6, 0x63, 0xe0, 0x6a, 0x1f, 0xd2, + 0xe4, 0x25, 0x68, 0xb1, 0xdf, 0x75, 0x2e, 0x9c, 0x4c, 0x00, 0x38, 0x1e, 0x8a, 0x08, 0xff, 0xc6, + 0xc3, 0xc9, 0xf8, 0xcd, 0x3a, 0x3f, 0x0a, 0xab, 0x13, 0x7e, 0x4e, 0x63, 0xe3, 0x46, 0xd6, 0x68, + 0xf2, 0x53, 0xa8, 0xd1, 0xef, 0xbe, 0x22, 0x9c, 0x14, 0x80, 0x5f, 0x46, 0x37, 0x48, 0x5c, 0x83, + 0xca, 0xf8, 0x66, 0xac, 0xf6, 0x95, 0x78, 0x51, 0x0b, 0x79, 0xfb, 0x4a, 0x2f, 0x9a, 0x48, 0x3f, + 0x4c, 0x23, 0x13, 0x85, 0x4f, 0xf2, 0x5d, 0x2d, 0x40, 0xd3, 0x8d, 0xb1, 0x6d, 0x88, 0x07, 0x6f, + 0x43, 0x48, 0x15, 0x9f, 0x64, 0x3a, 0x53, 0x60, 0x78, 0xc8, 0x29, 0x48, 0x75, 0xa6, 0x73, 0xd9, + 0x93, 0x01, 0xc2, 0xf1, 0x91, 0xab, 0x3d, 0x3c, 0x1c, 0xa0, 0xbd, 0x53, 0x1d, 0x6a, 0xca, 0xe9, + 0xa1, 0x0d, 0xf0, 0x3c, 0x2b, 0x34, 0xb9, 0xde, 0xe9, 0xa1, 0xcd, 0x42, 0xeb, 0x43, 0x9b, 0x0d, + 0xf1, 0xe0, 0xb8, 0x5f, 0xd9, 0x3c, 0xae, 0xc9, 0x8f, 0xa1, 0x47, 0xfd, 0x8e, 0xeb, 0xcf, 0xc8, + 0x54, 0x7a, 0xe0, 0x08, 0xf5, 0xd6, 0x41, 0x80, 0x23, 0xdb, 0xbd, 0x7b, 0x5b, 0x3c, 0x48, 0x31, + 0xed, 0xaf, 0x3d, 0x68, 0x46, 0x4e, 0xdd, 0x1f, 0x85, 0xd9, 0x3f, 0x9b, 0xcf, 0xd8, 0x30, 0x8c, + 0x4a, 0xda, 0x9c, 0x57, 0xc2, 0xb6, 0x8c, 0xf4, 0xc9, 0x27, 0xb7, 0x8c, 0x76, 0x1c, 0xc3, 0x57, + 0x57, 0xd6, 0x92, 0x71, 0xf5, 0x17, 0xb8, 0xab, 0xff, 0x74, 0xf6, 0x46, 0x05, 0x10, 0x8a, 0x3e, + 0x22, 0xa9, 0x40, 0x25, 0xe1, 0xf8, 0xb6, 0xa5, 0xf5, 0xe1, 0x10, 0x75, 0xab, 0xa3, 0x18, 0xdf, + 0x34, 0xef, 0x21, 0x92, 0x57, 0x68, 0xe4, 0x91, 0x6f, 0x71, 0x09, 0x2a, 0x0a, 0x86, 0x43, 0x89, + 0x64, 0x79, 0x11, 0x59, 0x8e, 0x39, 0xb9, 0xcb, 0x21, 0x27, 0x93, 0xe1, 0x64, 0x2a, 0x10, 0x4d, + 0xe1, 0xd2, 0x0a, 0x94, 0x15, 0xe7, 0xa3, 0x49, 0x81, 0x08, 0x79, 0x84, 0xa7, 0x36, 0xc6, 0xd7, + 0xb4, 0xb5, 0x82, 0xa2, 0x44, 0xb1, 0x26, 0xfa, 0x9e, 0x40, 0x93, 0x2c, 0xb5, 0xf1, 0x6c, 0x70, + 0x7d, 0x36, 0x9b, 0x20, 0x1d, 0x1b, 0xfe, 0x4b, 0xae, 0x0c, 0x1e, 0x22, 0x8d, 0x30, 0xbe, 0x7d, + 0x7b, 0x8a, 0x39, 0x61, 0x44, 0x33, 0x79, 0xcf, 0x7a, 0x3b, 0x52, 0x88, 0x15, 0x56, 0x0a, 0x41, + 0x5c, 0xf8, 0x52, 0x0a, 0x31, 0xdf, 0x8d, 0x42, 0xc0, 0x3b, 0x21, 0x7a, 0x43, 0xa7, 0x74, 0x62, + 0x15, 0xd5, 0xa1, 0x00, 0x69, 0xc0, 0x77, 0x75, 0xaa, 0x43, 0xa9, 0x76, 0x6d, 0xc5, 0x50, 0x87, + 0xf0, 0xcd, 0x81, 0x4a, 0x65, 0x05, 0x2a, 0x81, 0x27, 0xc2, 0x8d, 0x0d, 0xf4, 0x8e, 0x04, 0x0c, + 0x3c, 0x4b, 0x64, 0x47, 0x03, 0xb4, 0x07, 0xa9, 0xc6, 0xc0, 0x14, 0xa3, 0x98, 0xf8, 0x02, 0x9a, + 0x14, 0x8e, 0x62, 0x8a, 0x4e, 0x59, 0x74, 0x1a, 0xe9, 0x86, 0x0c, 0xcf, 0x9a, 0x63, 0x28, 0x55, + 0xae, 0x5c, 0xd0, 0x3b, 0xce, 0xd1, 0x97, 0x50, 0x9c, 0x33, 0x20, 0xba, 0xe2, 0xd6, 0x4a, 0xce, + 0xd4, 0xb1, 0x64, 0x3c, 0xd4, 0x11, 0x86, 0x0a, 0x3d, 0x8d, 0x91, 0x3a, 0x8a, 0xbf, 0xa4, 0x88, + 0x57, 0xca, 0xbc, 0x5e, 0x2d, 0xa1, 0xce, 0x48, 0x1e, 0xe0, 0xd7, 0x9a, 0x2e, 0x2b, 0x69, 0x45, + 0xef, 0xea, 0xd0, 0x0f, 0x7f, 0x88, 0xcb, 0x98, 0xab, 0x44, 0xaa, 0xd4, 0x3e, 0xa9, 0xc9, 0xcb, + 0xd0, 0x63, 0x7e, 0x11, 0x83, 0xb2, 0x15, 0x8a, 0xa5, 0x7b, 0x4d, 0x71, 0x21, 0xb7, 0x43, 0x55, + 0x23, 0xed, 0xbb, 0x46, 0x3a, 0x0e, 0xa4, 0xfb, 0x0f, 0xe8, 0x87, 0xbb, 0xd2, 0x03, 0x47, 0x7c, + 0x7f, 0xc3, 0x4b, 0x57, 0x8c, 0x26, 0x6e, 0x0f, 0x72, 0xbb, 0xde, 0x42, 0x6e, 0x67, 0xda, 0x5c, + 0xcf, 0x90, 0xd9, 0xb8, 0x3e, 0x5b, 0xe4, 0x97, 0xc5, 0xe9, 0xbd, 0xd5, 0x1d, 0x96, 0x45, 0xb5, + 0x0a, 0x61, 0xf9, 0xba, 0x6e, 0x1c, 0xcd, 0xee, 0x62, 0x54, 0x0c, 0xd5, 0xc5, 0xfb, 0x19, 0x9a, + 0x02, 0x3d, 0x99, 0xa6, 0xc9, 0x93, 0x19, 0x9a, 0xc2, 0x1f, 0x86, 0x87, 0x4b, 0x38, 0xcc, 0xf1, + 0x98, 0x02, 0x18, 0x13, 0x73, 0x4a, 0xa0, 0xe7, 0xc6, 0x06, 0x0e, 0x4d, 0x96, 0x21, 0x44, 0x5f, + 0xe4, 0x9b, 0x1e, 0x05, 0xc0, 0x6a, 0xd6, 0x4c, 0x96, 0xca, 0x78, 0x80, 0x52, 0xb8, 0x1c, 0xf1, + 0x71, 0x54, 0x8a, 0xc9, 0xa2, 0x12, 0x88, 0x5a, 0xdf, 0x54, 0x99, 0xa9, 0xd2, 0x54, 0xa8, 0xec, + 0x6d, 0x6c, 0xda, 0xb6, 0xd4, 0x5b, 0xdf, 0xd8, 0xa0, 0x28, 0x66, 0xa6, 0xf8, 0x4b, 0x34, 0x89, + 0x91, 0x7c, 0x68, 0xa3, 0xc8, 0xd4, 0xa2, 0x5a, 0x73, 0xf8, 0x76, 0x1e, 0x82, 0x76, 0xac, 0x05, + 0x0c, 0x87, 0x0a, 0xc5, 0xe6, 0x30, 0x80, 0x0e, 0xcd, 0x30, 0x71, 0xba, 0xe7, 0x82, 0x69, 0x75, + 0x0a, 0xf4, 0x46, 0x45, 0x77, 0x1a, 0xd6, 0x80, 0x8d, 0x4d, 0x72, 0x28, 0x94, 0x50, 0x93, 0x49, + 0x08, 0xaf, 0x84, 0x29, 0x46, 0x21, 0xd8, 0xc0, 0xba, 0x95, 0x91, 0x26, 0xe9, 0x9d, 0xef, 0xa7, + 0xaf, 0x9d, 0xf0, 0x36, 0x36, 0x79, 0x33, 0x47, 0x2f, 0x29, 0x6e, 0xe5, 0x2c, 0x9a, 0xe2, 0x12, + 0x47, 0x4d, 0xb1, 0xf3, 0x20, 0x4d, 0x4d, 0xf1, 0x8b, 0x88, 0xb9, 0x99, 0x22, 0xd8, 0x3f, 0x8a, + 0xd4, 0x83, 0x00, 0x2e, 0xab, 0x20, 0xcd, 0xa2, 0x8d, 0x13, 0x3a, 0x37, 0xfc, 0x0e, 0x7d, 0xb1, + 0x0e, 0x92, 0x58, 0xc3, 0x7b, 0x95, 0x98, 0x44, 0xd3, 0xb6, 0xbc, 0xb4, 0x46, 0x6d, 0x4b, 0x25, + 0x62, 0xd1, 0x66, 0x06, 0x49, 0xa0, 0x5e, 0xc7, 0x60, 0xed, 0xb7, 0xe7, 0x4a, 0xd5, 0xfa, 0x81, + 0x83, 0xe9, 0xfe, 0x01, 0xbd, 0xef, 0xaa, 0x3e, 0xf0, 0x06, 0x74, 0x52, 0xb9, 0x36, 0xae, 0x46, + 0x9b, 0x53, 0x81, 0xe0, 0x56, 0x2f, 0x2d, 0xbd, 0x20, 0x73, 0xf0, 0x9c, 0x7e, 0xe8, 0xdd, 0xc6, + 0x06, 0xc5, 0xde, 0x42, 0x2d, 0x3e, 0xad, 0xd0, 0x4c, 0x3f, 0x85, 0x76, 0x06, 0x6a, 0xa6, 0x0b, + 0xc7, 0x79, 0xf5, 0x5b, 0xd4, 0xe0, 0x56, 0xbc, 0xcb, 0xf5, 0xb1, 0xe8, 0xe6, 0x48, 0x38, 0x98, + 0x5a, 0x91, 0x88, 0xb5, 0x6e, 0x88, 0x07, 0xbf, 0xfd, 0x89, 0x5b, 0x69, 0xe1, 0x58, 0xea, 0x44, + 0x4d, 0x9e, 0xc2, 0x5e, 0xd5, 0x16, 0xa7, 0x07, 0x8e, 0x6c, 0x8b, 0x07, 0x19, 0x17, 0x23, 0x51, + 0x0e, 0x81, 0xf3, 0xb8, 0x41, 0x12, 0xa4, 0x3b, 0x20, 0x54, 0x4c, 0xb6, 0x7b, 0x37, 0xfe, 0x64, + 0xe4, 0x95, 0x70, 0x10, 0xa6, 0x9e, 0xae, 0x70, 0xfc, 0x56, 0x9d, 0x96, 0x63, 0xbd, 0x68, 0x5c, + 0x57, 0x54, 0xca, 0x40, 0x8f, 0xb6, 0x6e, 0xd2, 0x4c, 0x38, 0x8b, 0xc9, 0xb8, 0xf7, 0x7c, 0x9c, + 0xfd, 0x60, 0x27, 0x4c, 0xc5, 0x97, 0xf1, 0x20, 0xaf, 0x7b, 0xdd, 0xdb, 0x83, 0xb8, 0x37, 0x5a, + 0x74, 0xd8, 0xf6, 0x1b, 0x2b, 0x9d, 0x15, 0xc1, 0x14, 0x42, 0x24, 0x81, 0xc4, 0x97, 0xc1, 0x42, + 0xd0, 0xc6, 0x80, 0xa0, 0x53, 0x0f, 0xf8, 0xa3, 0x2e, 0x89, 0x34, 0x17, 0x40, 0x86, 0x5f, 0x4b, + 0x7e, 0x6c, 0x76, 0x1a, 0x3f, 0x1f, 0x95, 0xf1, 0x03, 0xc1, 0x0c, 0x34, 0xb0, 0xbc, 0x20, 0x3b, + 0x81, 0x0f, 0x9f, 0x56, 0xc0, 0xb9, 0x0a, 0x68, 0x56, 0x83, 0x6d, 0x89, 0x70, 0x6a, 0xfb, 0x77, + 0xe5, 0x90, 0xeb, 0x9b, 0xf1, 0x9c, 0x2f, 0xda, 0x79, 0xce, 0x3a, 0x4d, 0x7e, 0x82, 0x07, 0x4e, + 0x89, 0x03, 0xce, 0xca, 0x91, 0x93, 0x6f, 0xeb, 0xd7, 0x3b, 0xd2, 0x43, 0xa7, 0xab, 0xf4, 0x8e, + 0x21, 0xfd, 0xe2, 0xd5, 0xec, 0xd9, 0x2f, 0xf4, 0xae, 0x81, 0x6c, 0xe7, 0x3e, 0x5d, 0xeb, 0xd2, + 0xf7, 0x74, 0x8c, 0xbc, 0x7a, 0x21, 0xdb, 0xb9, 0x6f, 0x01, 0xcf, 0x9a, 0xaa, 0xee, 0x3e, 0x1e, + 0x88, 0x99, 0x96, 0x03, 0x73, 0x35, 0x8f, 0x30, 0x57, 0xe9, 0xfe, 0xde, 0x71, 0xdc, 0x35, 0x71, + 0x5b, 0x48, 0x02, 0x39, 0x84, 0xe3, 0xd2, 0x32, 0x71, 0x8e, 0x7e, 0xb1, 0x53, 0xef, 0xb8, 0x90, + 0x1d, 0xdc, 0x4d, 0x2f, 0x99, 0x5f, 0x79, 0xd0, 0x3c, 0xd7, 0x4d, 0xb9, 0x3d, 0x50, 0xa4, 0xc9, + 0xc2, 0xff, 0xcc, 0xb1, 0xbb, 0xde, 0xe3, 0x26, 0x35, 0xb6, 0x3b, 0x27, 0x6f, 0x2a, 0xe8, 0xbc, + 0x26, 0x86, 0xf1, 0xa5, 0x75, 0x39, 0xdd, 0x98, 0xa0, 0x9d, 0x05, 0x88, 0xf0, 0x51, 0x4f, 0xa9, + 0xdb, 0x9b, 0x02, 0xe1, 0xc4, 0x4f, 0xf0, 0xfe, 0x6d, 0xe1, 0x7d, 0xb1, 0x26, 0x2f, 0x44, 0x55, + 0x7e, 0xa7, 0x45, 0x35, 0x20, 0xbd, 0x6f, 0xcf, 0x88, 0x76, 0x0e, 0x9f, 0xe7, 0x00, 0xe9, 0xff, + 0x8b, 0x07, 0x44, 0x61, 0x66, 0xf1, 0x1f, 0x85, 0xf2, 0x94, 0x4e, 0x67, 0xfc, 0x8f, 0xe4, 0x72, + 0xd7, 0xc1, 0x60, 0xea, 0x61, 0xdd, 0xf2, 0xc2, 0xf3, 0x5f, 0x09, 0x68, 0x02, 0xad, 0x2f, 0xfa, + 0x51, 0xd1, 0x53, 0xea, 0x76, 0x03, 0x82, 0xc9, 0x13, 0x05, 0x48, 0x91, 0x4a, 0xa0, 0x2d, 0xcc, + 0xd8, 0x93, 0x04, 0x71, 0x29, 0xa9, 0xc6, 0xbd, 0x88, 0x83, 0x87, 0xcf, 0x34, 0x4d, 0x2a, 0xa3, + 0x7d, 0xc3, 0xb6, 0xb3, 0xe4, 0x5c, 0xaf, 0xaf, 0x05, 0x6e, 0x5e, 0x5f, 0xa1, 0xb6, 0xc5, 0x39, + 0x95, 0xc5, 0xeb, 0x2b, 0x75, 0x8d, 0xc7, 0x46, 0x2e, 0x4d, 0x31, 0x40, 0x84, 0x32, 0x69, 0xef, + 0x97, 0xc1, 0x2d, 0x90, 0x7f, 0x22, 0x6d, 0xe0, 0xea, 0x7e, 0xc1, 0xd1, 0x51, 0x04, 0xf1, 0x01, + 0x65, 0x7d, 0xa0, 0xba, 0x8e, 0x7f, 0x7d, 0x5a, 0xc5, 0xa9, 0x19, 0x99, 0xd3, 0x55, 0x2f, 0x8b, + 0xbc, 0x11, 0x8e, 0xb6, 0xc4, 0xc8, 0xd8, 0xaa, 0xbc, 0x04, 0xb1, 0xe9, 0x9f, 0x6d, 0xf1, 0x60, + 0x95, 0x37, 0x1a, 0x0b, 0xa9, 0x04, 0x0b, 0xaa, 0xbc, 0xa9, 0x40, 0x72, 0xeb, 0x77, 0xe7, 0x70, + 0xa2, 0x09, 0x95, 0x92, 0x58, 0x71, 0xe4, 0x19, 0x79, 0x01, 0xb9, 0x19, 0x90, 0xa7, 0x47, 0x66, + 0xaa, 0xe4, 0x83, 0x28, 0xcc, 0x46, 0x68, 0xb8, 0x95, 0xab, 0xd7, 0x79, 0xe1, 0x23, 0xb3, 0xef, + 0xca, 0x8d, 0xa1, 0xae, 0xec, 0x79, 0x4d, 0x31, 0x8b, 0x8b, 0xbf, 0x44, 0x13, 0xd4, 0x28, 0x84, + 0x55, 0x2e, 0x24, 0xed, 0x41, 0x10, 0x25, 0x9a, 0x26, 0xf9, 0x30, 0x44, 0x9f, 0x3c, 0x95, 0xb7, + 0x35, 0x56, 0x58, 0x7c, 0x10, 0x15, 0x45, 0xc2, 0xad, 0xe1, 0x14, 0x35, 0x25, 0x9e, 0x47, 0x14, + 0xe9, 0x24, 0x45, 0x2a, 0xcb, 0xf4, 0x1d, 0x1a, 0x39, 0xf3, 0x29, 0x8b, 0xed, 0x5a, 0xe8, 0xf7, + 0x78, 0x7f, 0xa6, 0x40, 0x9e, 0x58, 0x85, 0x0a, 0xe3, 0x18, 0x23, 0xc1, 0xa0, 0xb8, 0x1c, 0x5f, + 0x2d, 0x49, 0x82, 0x54, 0x3c, 0x72, 0xe6, 0xd3, 0xec, 0xe9, 0x9d, 0xac, 0x38, 0x49, 0x14, 0xeb, + 0x51, 0x71, 0x32, 0xdc, 0x1a, 0x8f, 0xb0, 0xa8, 0xc1, 0xe4, 0x66, 0x44, 0x93, 0xa4, 0xb9, 0xfa, + 0xa1, 0x0f, 0xc0, 0x54, 0xd4, 0x1b, 0xe3, 0x01, 0xc1, 0xcb, 0x88, 0x29, 0x94, 0x13, 0xdb, 0x05, + 0x84, 0xc0, 0x97, 0xc0, 0x9a, 0xb6, 0x48, 0x84, 0x86, 0xfc, 0x25, 0x0f, 0x67, 0xb8, 0x64, 0x69, + 0x2d, 0x78, 0x8a, 0xd9, 0x1c, 0x88, 0x24, 0xd5, 0x2a, 0x10, 0x6d, 0x40, 0x2e, 0x98, 0xdf, 0x1a, + 0x31, 0x57, 0x1e, 0xf3, 0xea, 0xd7, 0x5e, 0xa7, 0x31, 0x74, 0x33, 0xc7, 0x3f, 0xab, 0x4a, 0xf7, + 0x1f, 0x70, 0x2c, 0xad, 0x70, 0x8d, 0x8b, 0xcf, 0xf3, 0x8a, 0xd4, 0x52, 0xf3, 0xbd, 0x1f, 0xa7, + 0x48, 0xad, 0x31, 0xc2, 0x3b, 0x92, 0xf7, 0x38, 0xd0, 0x26, 0x7d, 0x49, 0x35, 0xf8, 0x09, 0x0d, + 0x04, 0x08, 0x7e, 0x33, 0xc8, 0xf3, 0x7f, 0x5e, 0xdf, 0xfa, 0x3c, 0xaf, 0x7d, 0x40, 0x5c, 0xf3, + 0xa6, 0x69, 0x8c, 0x73, 0xf3, 0x20, 0xcc, 0x76, 0x6e, 0xde, 0x54, 0x5f, 0x2c, 0x37, 0x74, 0xff, + 0x13, 0x39, 0xcb, 0x67, 0xaa, 0xfb, 0xf7, 0x5a, 0x1b, 0x06, 0x5f, 0x0c, 0x60, 0x09, 0x90, 0xed, + 0x7d, 0x6b, 0xa4, 0xbd, 0xd3, 0xd0, 0xff, 0x3f, 0xc5, 0x79, 0x93, 0x28, 0x63, 0x01, 0x01, 0xaa, + 0xfc, 0x46, 0xa2, 0x4b, 0x53, 0x04, 0x3b, 0x69, 0x53, 0xa6, 0xfb, 0x89, 0x87, 0x90, 0x67, 0x9b, + 0x44, 0x0d, 0x97, 0x89, 0x59, 0xba, 0x67, 0x9b, 0x24, 0xcd, 0x81, 0xeb, 0x26, 0xdc, 0x32, 0xb7, + 0x49, 0xc4, 0x54, 0x19, 0x93, 0x4a, 0xea, 0xb2, 0xce, 0xb3, 0x4d, 0x12, 0x1b, 0x8c, 0xb7, 0x20, + 0x93, 0x4d, 0x47, 0xb7, 0xec, 0x2d, 0xc8, 0x3c, 0xcb, 0x4b, 0x0f, 0x48, 0x84, 0x95, 0x82, 0xb1, + 0xb0, 0x47, 0x1f, 0xe2, 0x3a, 0xc3, 0x91, 0xc5, 0x14, 0xe6, 0xb0, 0xe0, 0x51, 0xc3, 0x91, 0x85, + 0xe3, 0x52, 0xd3, 0xc9, 0x38, 0x2e, 0x35, 0xf3, 0x74, 0xf1, 0x22, 0x2c, 0x10, 0x21, 0xbb, 0x53, + 0x49, 0xbb, 0x0d, 0xc4, 0x63, 0x34, 0x4b, 0x94, 0x1e, 0x74, 0x6f, 0x19, 0x68, 0xb1, 0x73, 0xfb, + 0x46, 0x03, 0x62, 0x24, 0xc7, 0x69, 0xc7, 0x34, 0xd2, 0xcb, 0x2f, 0x34, 0x79, 0x79, 0x8e, 0x57, + 0x15, 0xc7, 0x9e, 0x78, 0x4f, 0x2b, 0xce, 0x3d, 0x59, 0x1a, 0x11, 0xeb, 0x0c, 0x57, 0x26, 0xa2, + 0x29, 0x56, 0x65, 0x0e, 0x6c, 0xe6, 0x58, 0x7b, 0xd0, 0x0f, 0x1d, 0x19, 0xfe, 0xf4, 0xf3, 0xe1, + 0xf6, 0x0e, 0x06, 0x34, 0x50, 0x8c, 0x19, 0x04, 0xb8, 0x92, 0x7b, 0x26, 0x24, 0xe3, 0xfd, 0x63, + 0x80, 0x53, 0x26, 0x88, 0x05, 0xe6, 0x1b, 0xf1, 0x80, 0xe8, 0x9c, 0xf3, 0x43, 0x62, 0x1c, 0x15, + 0x2b, 0x72, 0xfc, 0x91, 0x10, 0x6f, 0xed, 0x6c, 0x1b, 0xef, 0x1e, 0xfb, 0xc6, 0x29, 0x36, 0x17, + 0x25, 0x44, 0x4e, 0x6a, 0xba, 0x28, 0xb9, 0x9f, 0x6f, 0x0b, 0x1c, 0x95, 0xb8, 0x6c, 0x95, 0xe1, + 0xb7, 0x84, 0x11, 0xca, 0x82, 0x31, 0x11, 0x4a, 0x83, 0x1a, 0x17, 0x8e, 0x87, 0x1a, 0xd7, 0xae, + 0xd6, 0xe4, 0x5f, 0xa2, 0x5f, 0xf8, 0xdd, 0x16, 0x48, 0x9a, 0x4f, 0x8d, 0x42, 0xb9, 0x71, 0xdb, + 0x97, 0xf8, 0x4b, 0x81, 0xae, 0x83, 0xef, 0x18, 0xd5, 0x39, 0xe7, 0x6c, 0xd4, 0xed, 0xc1, 0xbf, + 0x3d, 0x6b, 0xb9, 0xc1, 0x57, 0x3b, 0x59, 0x5e, 0x38, 0xce, 0xab, 0x21, 0x90, 0x0a, 0x58, 0xae, + 0xf4, 0xf4, 0xb5, 0x23, 0x79, 0x97, 0x0c, 0xfc, 0x9c, 0xaf, 0x57, 0x40, 0x33, 0xd9, 0x1a, 0x2b, + 0x6a, 0x30, 0x96, 0x08, 0x19, 0x30, 0xb8, 0x2e, 0x07, 0x06, 0xbf, 0x13, 0x52, 0x62, 0x38, 0xeb, + 0x75, 0xee, 0xd4, 0x30, 0xf6, 0x25, 0x2d, 0xd1, 0x57, 0x19, 0x3c, 0xd2, 0x1c, 0xe4, 0x90, 0xc6, + 0xa8, 0x7a, 0xbb, 0x79, 0xad, 0xc6, 0xdb, 0x78, 0x7f, 0xee, 0x36, 0x3a, 0xcc, 0x68, 0x2c, 0x1b, + 0xd8, 0xe3, 0x41, 0x77, 0xba, 0x54, 0x15, 0x13, 0xc6, 0xf1, 0x28, 0x98, 0xa1, 0xad, 0xd8, 0xf1, + 0xb8, 0x9a, 0xe2, 0x0e, 0x78, 0x1a, 0x02, 0xd7, 0x75, 0x2f, 0x05, 0xc2, 0xa9, 0x70, 0xb4, 0xa5, + 0xca, 0x1b, 0x89, 0x05, 0x42, 0xe4, 0x47, 0xb2, 0x2d, 0x18, 0x54, 0x93, 0xc9, 0x2a, 0xef, 0x96, + 0x40, 0x64, 0x73, 0x33, 0xfb, 0xd8, 0x1c, 0x08, 0x47, 0xd4, 0x50, 0x95, 0x97, 0x45, 0xb0, 0x56, + 0x4d, 0x5b, 0xba, 0x2e, 0x01, 0x15, 0x62, 0x52, 0x51, 0xee, 0x21, 0xb7, 0x8d, 0xb9, 0xee, 0xd3, + 0xc4, 0x28, 0x5d, 0xf7, 0x8c, 0x26, 0xaf, 0xf7, 0x93, 0x0a, 0xdf, 0xf5, 0x80, 0x48, 0xa3, 0xbe, + 0xc1, 0x42, 0x34, 0xd9, 0xda, 0xa5, 0xf8, 0x00, 0x6f, 0xab, 0x4d, 0x97, 0x97, 0xe8, 0x8d, 0xca, + 0xf8, 0x03, 0x8b, 0x6a, 0x72, 0x9f, 0x30, 0x96, 0xb0, 0xc0, 0xf4, 0x18, 0xc6, 0x96, 0xb0, 0xc2, + 0x42, 0x36, 0x61, 0xc4, 0xfa, 0xe1, 0xae, 0x74, 0xff, 0x6b, 0xe6, 0x7a, 0xd4, 0xf3, 0xbc, 0x32, + 0xde, 0xfa, 0x02, 0x78, 0x58, 0xcd, 0xf1, 0xca, 0x33, 0x68, 0xbf, 0x1c, 0xc7, 0x9c, 0xd9, 0x77, + 0x85, 0x67, 0x8f, 0x97, 0x99, 0xec, 0x71, 0x11, 0x69, 0x82, 0x3c, 0x34, 0x31, 0xd8, 0xe3, 0x19, + 0x0c, 0xf1, 0x4c, 0x26, 0x19, 0x37, 0x60, 0x70, 0xc4, 0x2c, 0x78, 0x4e, 0x31, 0xd9, 0x12, 0x5f, + 0xfe, 0x2d, 0x21, 0x40, 0x37, 0xa6, 0xf6, 0x21, 0x06, 0xc9, 0x46, 0x54, 0x1a, 0x88, 0x44, 0x62, + 0x2f, 0x35, 0x6f, 0x0d, 0xc7, 0x29, 0x33, 0x4c, 0x9f, 0x51, 0xb0, 0x54, 0x69, 0xb1, 0x7e, 0xed, + 0x75, 0xbd, 0xf3, 0x00, 0xf5, 0x83, 0x45, 0xa2, 0xeb, 0xd2, 0xd8, 0x36, 0x10, 0x93, 0xf9, 0xf3, + 0x2b, 0x98, 0xb7, 0xa1, 0x86, 0xa2, 0x7b, 0x3a, 0xb2, 0xd7, 0x2e, 0x2a, 0x66, 0x6d, 0x71, 0x3b, + 0x42, 0xe4, 0x43, 0x51, 0x53, 0x89, 0xed, 0x94, 0x49, 0xfe, 0xb5, 0x26, 0x6f, 0xf0, 0x73, 0xc9, + 0xd2, 0x2f, 0xf2, 0x77, 0x01, 0x91, 0x7c, 0x2b, 0x81, 0x68, 0x8d, 0xbc, 0x7a, 0x0d, 0xe2, 0xb7, + 0x41, 0xea, 0x02, 0x6b, 0xcf, 0x5c, 0xab, 0xbe, 0x6b, 0x02, 0x12, 0xed, 0xab, 0x23, 0x3e, 0x80, + 0x0a, 0x22, 0xb1, 0x16, 0xde, 0xb1, 0x3b, 0xfe, 0x96, 0xa6, 0xc0, 0x18, 0x86, 0xcf, 0x74, 0xe9, + 0x7b, 0x3a, 0xf4, 0x8b, 0x57, 0x15, 0x9c, 0x2a, 0x3e, 0x8c, 0x4a, 0x53, 0xe1, 0x56, 0x35, 0x99, + 0x0a, 0xb4, 0xc6, 0x09, 0xcc, 0x15, 0x40, 0x15, 0x33, 0x55, 0x2a, 0xe5, 0x36, 0xdd, 0x48, 0x15, + 0x65, 0xab, 0x33, 0x03, 0x72, 0xc3, 0xa0, 0xfe, 0xc1, 0xe6, 0xd9, 0xfd, 0x83, 0x79, 0x7f, 0x25, + 0x2b, 0x6b, 0xaa, 0xbc, 0x16, 0x37, 0x61, 0xbe, 0x3e, 0x01, 0x9c, 0xfc, 0xb8, 0x1e, 0x0f, 0xe2, + 0x52, 0x54, 0x44, 0x04, 0x2f, 0x94, 0x68, 0x82, 0x77, 0x12, 0x92, 0x62, 0xf5, 0xec, 0xc5, 0xdc, + 0x61, 0x92, 0x2c, 0xf1, 0x19, 0x34, 0x01, 0x88, 0x5a, 0x92, 0xa2, 0xb9, 0x0d, 0xa6, 0xf8, 0x1e, + 0x1b, 0xd4, 0x54, 0x20, 0x1c, 0xa1, 0x37, 0x75, 0x5a, 0x2f, 0x87, 0x96, 0xb1, 0x64, 0xdf, 0xae, + 0x22, 0x24, 0xda, 0xeb, 0x7e, 0x37, 0x2e, 0x16, 0x6b, 0x1d, 0x6e, 0xbc, 0x64, 0x50, 0xfc, 0x8d, + 0xb7, 0x14, 0x1a, 0xf0, 0xe6, 0x5c, 0x79, 0x97, 0xe5, 0xf8, 0x58, 0x04, 0xe7, 0x08, 0xf4, 0x30, + 0x2c, 0x07, 0xfc, 0xf0, 0x3a, 0xbc, 0xad, 0xa4, 0x7c, 0xd8, 0x37, 0xf3, 0xd7, 0x36, 0x16, 0x3f, + 0x8b, 0xc3, 0xed, 0x1d, 0xe3, 0xf5, 0xb3, 0x78, 0xe8, 0x48, 0xf6, 0x8d, 0x53, 0x0e, 0x7e, 0x16, + 0x37, 0xa0, 0x42, 0x3c, 0x5c, 0x82, 0xc4, 0x13, 0xa5, 0xe9, 0x4e, 0x64, 0x02, 0x6e, 0x25, 0xa4, + 0x98, 0x74, 0x37, 0x3d, 0xa4, 0xfb, 0xde, 0xcb, 0x0e, 0xee, 0xb1, 0x3f, 0xb6, 0x25, 0x2f, 0x43, + 0x71, 0x41, 0xe2, 0xc6, 0x88, 0x5d, 0xaf, 0x4a, 0x78, 0x37, 0x46, 0xec, 0x7a, 0x55, 0xc6, 0x5f, + 0xa8, 0xb8, 0xab, 0xd4, 0x62, 0xab, 0xf7, 0x3f, 0x7a, 0xc8, 0x52, 0xe2, 0x5b, 0xc6, 0x5f, 0xe8, + 0x38, 0x72, 0x6b, 0xbd, 0x47, 0xa0, 0x6f, 0xe0, 0x9d, 0xd1, 0xf7, 0x06, 0xd5, 0xe5, 0x5b, 0x19, + 0xcf, 0xdb, 0xf1, 0xc9, 0x62, 0x95, 0x13, 0xb3, 0xe8, 0x34, 0xad, 0x31, 0xf2, 0x8a, 0xb3, 0xf3, + 0xd5, 0xff, 0x86, 0xc4, 0xe4, 0x57, 0xb9, 0xc4, 0xe4, 0x6e, 0x27, 0xc8, 0xa3, 0x1d, 0x8e, 0x87, + 0x96, 0x5c, 0xf1, 0xa0, 0x69, 0xb6, 0xaa, 0x62, 0x75, 0x0e, 0x5b, 0x3b, 0x43, 0x93, 0x45, 0x03, + 0x93, 0x4b, 0x98, 0xab, 0x47, 0x03, 0x73, 0x1f, 0xb6, 0xdd, 0xa0, 0x00, 0x78, 0x8d, 0x1b, 0x54, + 0x99, 0x8b, 0x7b, 0xc7, 0x6f, 0x4f, 0xbe, 0xbf, 0x5f, 0x2f, 0x8f, 0x2e, 0x54, 0xc0, 0xf7, 0xd7, + 0x05, 0xe8, 0xae, 0xfa, 0x88, 0x1a, 0x88, 0x36, 0x6c, 0xfa, 0x45, 0x38, 0x99, 0x8a, 0x25, 0xb6, + 0xe3, 0xbd, 0x65, 0x97, 0x82, 0xdd, 0x02, 0x2a, 0xc1, 0xc0, 0xc0, 0x51, 0xe1, 0x2d, 0x9a, 0xbc, + 0xca, 0x6f, 0x24, 0x4a, 0x4f, 0x52, 0xbf, 0x47, 0x34, 0x64, 0x54, 0xf6, 0xad, 0x8b, 0x7a, 0xe7, + 0x81, 0xf4, 0x60, 0x07, 0xf8, 0xba, 0xc2, 0xab, 0x5a, 0xc5, 0x0b, 0xc5, 0xb2, 0xbd, 0x9d, 0xc3, + 0x67, 0x2e, 0xf0, 0x75, 0x20, 0x8e, 0x54, 0x21, 0x88, 0x2c, 0x8d, 0xa2, 0x91, 0x58, 0x8b, 0x62, + 0x74, 0x22, 0x2e, 0xe3, 0xb9, 0x2a, 0x0f, 0x91, 0x18, 0x12, 0x1c, 0xe7, 0xb8, 0xaa, 0x29, 0x79, + 0xf8, 0xa9, 0x87, 0x4d, 0x7e, 0x0a, 0xc4, 0x97, 0x64, 0x7d, 0x0c, 0x7e, 0x67, 0x8a, 0x1b, 0x27, + 0x55, 0xdb, 0x2f, 0x68, 0xf2, 0x27, 0x02, 0xba, 0x2c, 0xf8, 0xdd, 0xd7, 0x48, 0x7a, 0x5d, 0x00, + 0x47, 0x33, 0x99, 0x93, 0x67, 0xd2, 0x83, 0x9f, 0x41, 0xec, 0x63, 0x98, 0xa0, 0x3e, 0xf0, 0x3a, + 0xfc, 0xa8, 0xf2, 0x52, 0x67, 0xfa, 0x24, 0x36, 0x2f, 0x3c, 0x00, 0xa3, 0xdd, 0x5d, 0xfc, 0x34, + 0xdb, 0xbd, 0x1b, 0x6e, 0x3e, 0x55, 0x5e, 0xa8, 0x3c, 0xdc, 0xf5, 0xaa, 0xfe, 0xd6, 0x27, 0xe9, + 0xfe, 0x03, 0x94, 0x5f, 0x22, 0xb1, 0xed, 0x17, 0xeb, 0x57, 0x3f, 0xf9, 0xaa, 0x7d, 0x57, 0xba, + 0xff, 0x0d, 0x23, 0x83, 0x76, 0xd5, 0xd3, 0x3e, 0x7c, 0xfd, 0xc8, 0x12, 0xdc, 0x62, 0xcf, 0x3e, + 0x7c, 0x0d, 0x23, 0x3d, 0xfa, 0x06, 0x05, 0x54, 0xe1, 0x34, 0xe6, 0xdb, 0x82, 0xac, 0xf9, 0x4e, + 0x79, 0xd0, 0x24, 0x8b, 0x22, 0x4d, 0x7c, 0x0a, 0x4d, 0x49, 0xf2, 0x09, 0x06, 0x42, 0x13, 0x27, + 0xac, 0xb9, 0x79, 0xd2, 0x44, 0x43, 0xd1, 0xd6, 0xd8, 0xa0, 0xe4, 0xe6, 0x8a, 0xeb, 0xd1, 0x34, + 0x4b, 0x12, 0x87, 0xee, 0x84, 0xe3, 0xb7, 0xe7, 0x4a, 0x53, 0x4c, 0xcd, 0x1d, 0x55, 0x32, 0xd9, + 0xca, 0x88, 0xf5, 0x4e, 0x7a, 0x07, 0x32, 0x3e, 0x8b, 0xde, 0xc1, 0x6c, 0xca, 0x29, 0xd4, 0x1c, + 0x66, 0x35, 0x90, 0xd7, 0x6f, 0x9d, 0x3e, 0x57, 0x87, 0xaa, 0x1e, 0x8e, 0x0a, 0xe8, 0x8e, 0x35, + 0xb1, 0x90, 0x6a, 0x70, 0x4f, 0x34, 0xd4, 0xc3, 0x63, 0xa8, 0x10, 0xdf, 0x8e, 0x88, 0x26, 0xdd, + 0xe1, 0xda, 0xe9, 0x50, 0x85, 0xbc, 0x86, 0x20, 0x95, 0x44, 0x19, 0x4d, 0xa0, 0x17, 0x2e, 0x4a, + 0x9b, 0xc7, 0x5c, 0x9f, 0xd5, 0xf3, 0xad, 0x45, 0x77, 0xba, 0x94, 0x11, 0x2b, 0xc0, 0x31, 0x22, + 0xf7, 0x44, 0xc8, 0xf8, 0xe6, 0xfd, 0x10, 0x7b, 0x2c, 0x7e, 0x88, 0x7d, 0xff, 0xa1, 0x08, 0x4d, + 0x6d, 0x48, 0x04, 0xc2, 0xc4, 0x9d, 0x03, 0xa3, 0x4b, 0xaf, 0xa0, 0x12, 0xea, 0x10, 0x83, 0xda, + 0x0c, 0xd4, 0x6d, 0xd4, 0xe4, 0xdf, 0xf8, 0x8d, 0x44, 0xa9, 0x89, 0x77, 0x82, 0xd2, 0xd8, 0x64, + 0xfa, 0xda, 0xd4, 0xba, 0x68, 0x0e, 0x98, 0x08, 0x82, 0x19, 0xdb, 0x40, 0xd7, 0x48, 0x7b, 0x67, + 0xba, 0xbf, 0xfd, 0xc6, 0x50, 0x57, 0x7a, 0xe8, 0x4d, 0xbd, 0x63, 0x9f, 0xbd, 0x8c, 0x62, 0xb4, + 0x2d, 0x6e, 0xb0, 0x07, 0xe1, 0x7c, 0x84, 0x84, 0x83, 0x31, 0x85, 0xe8, 0x77, 0xc7, 0x63, 0xa1, + 0xe1, 0xeb, 0x3b, 0xb3, 0xe7, 0x07, 0x73, 0xbc, 0x8c, 0x18, 0x45, 0x88, 0x82, 0xd6, 0x2b, 0xf0, + 0xd2, 0xf3, 0x04, 0x2a, 0xc2, 0xeb, 0x81, 0xef, 0x9e, 0x78, 0x46, 0xbf, 0xd1, 0xe4, 0x5f, 0xfb, + 0x21, 0xc5, 0x98, 0x0e, 0x37, 0x20, 0xcb, 0x64, 0x2c, 0xd3, 0x1c, 0xd3, 0x74, 0xa0, 0x61, 0x71, + 0x3a, 0x2a, 0xda, 0x4c, 0x62, 0xcc, 0xe3, 0x13, 0xa7, 0x44, 0x81, 0x0f, 0x71, 0x21, 0x12, 0x5b, + 0x12, 0x81, 0xa0, 0xda, 0xa4, 0x26, 0xc2, 0xb1, 0x50, 0xb3, 0x1a, 0x8c, 0x45, 0x43, 0x49, 0xfa, + 0x34, 0xd9, 0x21, 0x47, 0x5c, 0x84, 0xee, 0x08, 0xb7, 0x44, 0x63, 0x09, 0x55, 0x8e, 0x44, 0x1a, + 0x02, 0x6a, 0x6b, 0x2c, 0xda, 0xac, 0xa6, 0x92, 0xe4, 0x30, 0x2a, 0x51, 0x9c, 0xb2, 0xf0, 0x7e, + 0xe3, 0xab, 0x4f, 0xac, 0x0d, 0x6c, 0xcd, 0x26, 0x29, 0xec, 0x53, 0xac, 0x44, 0x53, 0x42, 0x24, + 0x90, 0xfb, 0xaa, 0x58, 0x30, 0x10, 0xc1, 0x44, 0x0b, 0x2e, 0x81, 0x4a, 0x6e, 0x32, 0x86, 0xa7, + 0xa4, 0x1a, 0x51, 0x83, 0xa9, 0x18, 0x75, 0x2a, 0xab, 0x18, 0xdf, 0xe4, 0xa5, 0x03, 0x1e, 0x1f, + 0xcd, 0x46, 0xf4, 0xa5, 0x83, 0x99, 0x44, 0xfa, 0x09, 0x27, 0x03, 0x9b, 0x22, 0xea, 0xf2, 0x6d, + 0xe1, 0x20, 0x41, 0xd8, 0x89, 0xb4, 0x1f, 0x6b, 0xb2, 0xf8, 0x0b, 0x34, 0x2f, 0xb9, 0x35, 0x1c, + 0xff, 0x55, 0x20, 0x9c, 0x5a, 0x11, 0x4b, 0x40, 0x94, 0xf9, 0x75, 0x30, 0x5a, 0xb6, 0x34, 0x65, + 0x64, 0x0e, 0xa3, 0x15, 0x13, 0x67, 0xa2, 0xe2, 0x50, 0x62, 0xbb, 0xd2, 0x16, 0x05, 0x85, 0x81, + 0x42, 0xbf, 0x7c, 0xbb, 0x3d, 0x68, 0x1a, 0x07, 0xe3, 0xb7, 0x9b, 0x19, 0x05, 0x66, 0x3d, 0xef, + 0x19, 0x03, 0xa5, 0x18, 0x8d, 0xe3, 0xec, 0xf4, 0xa0, 0xc9, 0xb8, 0x9a, 0x19, 0x78, 0x54, 0x7c, + 0x3c, 0x97, 0x66, 0x40, 0xcc, 0x14, 0x23, 0x51, 0x2a, 0xe3, 0x61, 0x9b, 0x21, 0x95, 0x49, 0x57, + 0x5e, 0x42, 0x13, 0xf9, 0x70, 0xa9, 0x40, 0xd5, 0x6a, 0x9c, 0xc6, 0x6a, 0x76, 0xba, 0x90, 0x0b, + 0x7c, 0x0a, 0xcf, 0xd8, 0x40, 0x77, 0xcc, 0x47, 0x4e, 0xa5, 0x7e, 0x8a, 0x32, 0x57, 0x2e, 0x0c, + 0x9f, 0x7f, 0x97, 0xe9, 0x8e, 0xb9, 0x02, 0x15, 0x8f, 0xa3, 0xa9, 0xb9, 0xcd, 0x38, 0xbc, 0x6d, + 0x9b, 0xce, 0xbf, 0x6d, 0x2b, 0xe5, 0xde, 0xae, 0xf9, 0xfe, 0xb1, 0x80, 0x66, 0x43, 0x64, 0x5c, + 0xeb, 0xe0, 0x0c, 0x79, 0x6d, 0xb3, 0xfd, 0x4d, 0xe4, 0x83, 0x9a, 0xfc, 0x00, 0x4f, 0x85, 0xe6, + 0xd2, 0x40, 0xd6, 0x63, 0x27, 0x41, 0x6b, 0x18, 0x09, 0x72, 0x11, 0xe7, 0x59, 0xc7, 0x42, 0x5f, + 0x2d, 0x03, 0x89, 0x2a, 0xe3, 0x7d, 0x9f, 0x50, 0xf2, 0xe2, 0xfb, 0x7b, 0x0f, 0x9a, 0xe3, 0x32, + 0x8b, 0x3f, 0x50, 0x20, 0x67, 0xaa, 0x8e, 0xfc, 0xcb, 0x22, 0xcd, 0xe4, 0xb7, 0xce, 0x84, 0x2b, + 0xbb, 0x65, 0x45, 0x46, 0x40, 0xa5, 0xb8, 0x91, 0x55, 0x81, 0x4d, 0x6a, 0xe4, 0x5b, 0xa3, 0xcb, + 0x0b, 0xa8, 0x38, 0x82, 0x1b, 0x62, 0x00, 0x70, 0xaf, 0xd3, 0x84, 0x49, 0x57, 0x0b, 0xc9, 0xff, + 0x14, 0x3f, 0xe0, 0x21, 0x38, 0xd4, 0x34, 0x50, 0xe3, 0xf4, 0xde, 0x6c, 0xef, 0x17, 0x4c, 0x05, + 0x0e, 0x79, 0x15, 0x8f, 0xa2, 0x89, 0x5c, 0xbd, 0x71, 0x21, 0xc4, 0x55, 0x01, 0xdd, 0x69, 0xae, + 0x19, 0xb4, 0xc2, 0x70, 0xa1, 0x91, 0x81, 0xad, 0xe0, 0xec, 0xff, 0xcd, 0xa8, 0x31, 0x2a, 0xc4, + 0x5a, 0xd1, 0xca, 0xf3, 0xdd, 0xa0, 0x95, 0xef, 0x2f, 0x3d, 0xa8, 0xdc, 0x3e, 0xf6, 0x3f, 0x54, + 0x0c, 0xa8, 0xd7, 0xe4, 0x27, 0xd1, 0xe3, 0x7e, 0xd7, 0x15, 0x91, 0xa6, 0xf1, 0x0b, 0x4c, 0x20, + 0xc7, 0x0e, 0xf7, 0x6f, 0x51, 0xb8, 0x5f, 0x17, 0x08, 0x47, 0x53, 0xdf, 0x1a, 0xee, 0xd7, 0xa0, + 0xe2, 0x14, 0x6e, 0x88, 0xc1, 0xfd, 0x0c, 0xbb, 0x4c, 0x22, 0x1c, 0x4d, 0x51, 0x38, 0x87, 0x92, + 0x06, 0x9c, 0x5f, 0x3e, 0x63, 0x78, 0x11, 0x53, 0x68, 0x5e, 0x0e, 0xb0, 0x92, 0xca, 0xe3, 0x02, + 0x56, 0xe8, 0xee, 0x87, 0x01, 0xd6, 0x7f, 0x65, 0x01, 0x56, 0x36, 0xf6, 0x3f, 0x54, 0x60, 0xa5, + 0xc1, 0xb8, 0x5c, 0x57, 0x44, 0x12, 0xf9, 0x05, 0x86, 0xed, 0xb7, 0x43, 0xeb, 0x13, 0x68, 0xd2, + 0x2f, 0xd4, 0x40, 0x24, 0xb5, 0x85, 0x02, 0x01, 0x0b, 0x4b, 0x6c, 0x4d, 0x95, 0xca, 0xf5, 0x9d, + 0xe7, 0xf4, 0x81, 0xcf, 0x33, 0xef, 0xb6, 0x67, 0x4e, 0x9d, 0x83, 0xa7, 0x03, 0x34, 0xb0, 0xd3, + 0x1e, 0x0f, 0x9a, 0xcc, 0xca, 0xfe, 0x00, 0x5b, 0xb1, 0x02, 0x95, 0x1a, 0xcf, 0x3b, 0xe8, 0xbd, + 0x96, 0xf8, 0x11, 0x31, 0x53, 0xa5, 0x72, 0x7e, 0x43, 0x2a, 0x53, 0x89, 0x36, 0xb5, 0x86, 0xd8, + 0x30, 0x2d, 0x50, 0xcc, 0x42, 0xec, 0xe1, 0x55, 0xce, 0x54, 0x1c, 0xe7, 0xed, 0x62, 0x49, 0x78, + 0x40, 0x00, 0xd5, 0x3e, 0x8b, 0xd9, 0xdb, 0x1c, 0xdc, 0xa2, 0xb6, 0x1a, 0xf2, 0xaa, 0x85, 0xb9, + 0xf6, 0xb1, 0xc4, 0xba, 0xd0, 0xb0, 0x8f, 0x2d, 0x4e, 0x0f, 0x1c, 0x21, 0x5e, 0x58, 0x98, 0x9b, + 0x07, 0x3a, 0x1e, 0xf7, 0x16, 0xa5, 0xb9, 0xd4, 0x3d, 0x00, 0x38, 0xf0, 0xbe, 0x70, 0xc6, 0xf4, + 0x69, 0x0b, 0x1b, 0xf3, 0x91, 0x35, 0x5e, 0xf4, 0xb7, 0x1a, 0x4e, 0x1e, 0x5d, 0xa5, 0x45, 0x7c, + 0x0d, 0x8f, 0xd8, 0x96, 0x68, 0xf2, 0x22, 0xb4, 0xd0, 0xef, 0xda, 0x3b, 0x33, 0xeb, 0xe4, 0x87, + 0xee, 0xfb, 0x47, 0x05, 0xa8, 0xe2, 0xe9, 0x36, 0x35, 0xb1, 0xbd, 0x49, 0x4d, 0xb4, 0xd6, 0x6d, + 0x97, 0xc9, 0x0d, 0xa7, 0xb1, 0x41, 0x51, 0x7f, 0x47, 0xae, 0x54, 0x8f, 0x20, 0x44, 0xcd, 0xad, + 0x36, 0x32, 0x87, 0x57, 0xd4, 0x4a, 0xd0, 0x4c, 0x96, 0x4a, 0xec, 0x71, 0x92, 0x42, 0xb8, 0x26, + 0x45, 0x36, 0x5c, 0x93, 0xb7, 0x2f, 0x34, 0x93, 0x9d, 0x9c, 0x74, 0x84, 0xc4, 0xc5, 0x74, 0xd2, + 0xdc, 0x0b, 0x2c, 0x98, 0xb4, 0xa8, 0x1f, 0xb9, 0x86, 0x67, 0xfc, 0xfe, 0xc0, 0xc8, 0xf1, 0x4f, + 0x2c, 0x6a, 0xda, 0xc7, 0xd1, 0xc4, 0x14, 0x75, 0x62, 0x8c, 0x7b, 0x2b, 0x34, 0x6b, 0xf2, 0xe9, + 0xd2, 0xc4, 0xcc, 0x85, 0x33, 0x99, 0x93, 0xd7, 0x47, 0xde, 0xda, 0xd3, 0xd8, 0xa0, 0x20, 0x96, + 0xd3, 0x18, 0x12, 0x1f, 0x43, 0x88, 0x5a, 0x20, 0xe3, 0xea, 0x45, 0xa6, 0x41, 0x34, 0x97, 0x4c, + 0x5e, 0x99, 0x80, 0xc7, 0x37, 0xfe, 0x95, 0x09, 0xae, 0x5c, 0x02, 0x62, 0xca, 0x58, 0x82, 0x8a, + 0x5b, 0x89, 0x95, 0x8b, 0x91, 0xc8, 0xa9, 0x6a, 0x98, 0x0f, 0x3a, 0x23, 0x8f, 0x39, 0x89, 0xcb, + 0xb3, 0x07, 0xd2, 0xdc, 0xcc, 0xc9, 0x57, 0x47, 0x4e, 0x1c, 0x06, 0xf8, 0xca, 0x76, 0xef, 0x4e, + 0xf7, 0xbf, 0x96, 0xee, 0xdf, 0x9f, 0x39, 0x46, 0x43, 0x7f, 0xf8, 0xde, 0xf0, 0xb8, 0x6d, 0x21, + 0x81, 0xb9, 0x47, 0x51, 0x49, 0x80, 0x26, 0xd1, 0x0d, 0x24, 0x0b, 0x63, 0x24, 0x4a, 0x93, 0xa1, + 0x7d, 0xf6, 0xad, 0x18, 0x39, 0xe2, 0x16, 0x54, 0x12, 0x57, 0x13, 0xad, 0x1b, 0x83, 0xa9, 0x97, + 0xa9, 0xb3, 0x0d, 0x7f, 0x2e, 0x05, 0x75, 0x1f, 0x37, 0x8d, 0x86, 0xc4, 0x1a, 0x90, 0x44, 0x7e, + 0x1a, 0x4c, 0x56, 0x8f, 0x73, 0xeb, 0x53, 0x2f, 0xd7, 0x3e, 0xad, 0xc9, 0x6b, 0xd0, 0x2a, 0x7f, + 0x9e, 0x79, 0x30, 0xeb, 0x62, 0x70, 0x30, 0xc8, 0xb7, 0xf5, 0xa5, 0x60, 0x8c, 0xf8, 0x4b, 0xc1, + 0xe8, 0xcf, 0x77, 0x44, 0x40, 0x45, 0xb8, 0xa5, 0xa4, 0xf8, 0x10, 0x2a, 0xc2, 0xa9, 0xec, 0x80, + 0xb5, 0xf9, 0x71, 0x24, 0xa5, 0xe0, 0x7f, 0xc2, 0x86, 0x2a, 0x50, 0xbc, 0xa2, 0x09, 0x21, 0x33, + 0xd1, 0x81, 0x37, 0xad, 0xb2, 0x3a, 0x22, 0x99, 0xb9, 0xb0, 0x25, 0x16, 0x6b, 0x89, 0xa8, 0x0b, + 0xe3, 0x89, 0x58, 0x2a, 0xb6, 0xa9, 0x6d, 0xf3, 0xc2, 0x0d, 0x38, 0x97, 0xe7, 0x59, 0x8f, 0x08, + 0x68, 0x96, 0xe3, 0x14, 0xbf, 0x21, 0x09, 0xaf, 0xa3, 0xc7, 0x1b, 0x0c, 0x60, 0x86, 0xe3, 0xc4, + 0x1c, 0x0e, 0x34, 0xfe, 0x55, 0x8f, 0x4f, 0xf3, 0x20, 0x54, 0x1f, 0x6b, 0x6d, 0x8d, 0x45, 0xf1, + 0x30, 0x6e, 0xf5, 0x03, 0xbd, 0xc1, 0x72, 0xa0, 0xdf, 0x69, 0x5b, 0xf2, 0xe6, 0x54, 0xa2, 0x2d, + 0x98, 0x1a, 0xed, 0x10, 0x67, 0x31, 0xce, 0xcd, 0x79, 0x4b, 0x65, 0x23, 0xed, 0xdd, 0xd9, 0x37, + 0xa8, 0xc1, 0xba, 0xef, 0x5d, 0x0f, 0x9a, 0x0c, 0x99, 0xf4, 0x24, 0xb8, 0xe5, 0x17, 0x66, 0xa5, + 0x65, 0x61, 0x2a, 0x6c, 0x0b, 0x83, 0xe7, 0x41, 0xe0, 0x71, 0xb4, 0xb5, 0x59, 0xa0, 0xc9, 0xf7, + 0xa1, 0xf9, 0xfe, 0x9c, 0xe9, 0x4b, 0x22, 0xac, 0x0f, 0x6f, 0xd6, 0xef, 0x5b, 0x85, 0xc8, 0x8b, + 0xe9, 0xba, 0xa7, 0x68, 0x3c, 0x45, 0x60, 0x65, 0xa8, 0x63, 0x18, 0x87, 0x2c, 0x16, 0x41, 0x3f, + 0x3d, 0x70, 0x04, 0xfc, 0x24, 0x5b, 0x4e, 0xce, 0x13, 0x85, 0xd4, 0x5d, 0x45, 0xfd, 0xba, 0x58, + 0x3c, 0x16, 0x89, 0xb5, 0x6c, 0x67, 0x24, 0xec, 0x9a, 0x60, 0x97, 0x6d, 0xbc, 0x2d, 0x68, 0x72, + 0xbb, 0xc0, 0x73, 0xb6, 0x49, 0x76, 0x98, 0x54, 0x81, 0x9d, 0x47, 0x66, 0x7f, 0xa7, 0x7e, 0x70, + 0x90, 0xc6, 0x40, 0x25, 0xaf, 0x32, 0x09, 0xf1, 0xec, 0xd6, 0x5f, 0x3b, 0x93, 0xd9, 0xff, 0x7a, + 0xa6, 0xf3, 0xc8, 0x57, 0xed, 0xbb, 0xc0, 0x64, 0x3a, 0x73, 0xfc, 0x74, 0xe6, 0xe8, 0x3e, 0x56, + 0x3d, 0x73, 0xfc, 0xb3, 0xf4, 0x50, 0x37, 0xae, 0x7d, 0xe8, 0x18, 0x98, 0x9d, 0x91, 0x98, 0x55, + 0x8e, 0x4d, 0x7c, 0x5d, 0x77, 0x67, 0x62, 0xc6, 0x54, 0xa1, 0x3c, 0x24, 0x4d, 0x79, 0xe1, 0xb9, + 0x45, 0xd5, 0x8f, 0x06, 0xaa, 0x77, 0xc8, 0xd5, 0xcf, 0x56, 0x3f, 0xff, 0xc0, 0x7c, 0x5e, 0x8a, + 0x82, 0x49, 0x11, 0x84, 0xd1, 0x02, 0x48, 0x78, 0x45, 0x93, 0x5f, 0x66, 0x61, 0xb4, 0x62, 0xc1, + 0xd6, 0xd0, 0x26, 0x16, 0x4a, 0xab, 0x32, 0x73, 0xea, 0x70, 0x7a, 0xe0, 0x2d, 0x30, 0xe8, 0x4e, + 0xf7, 0xef, 0x87, 0x08, 0x20, 0x2c, 0x7c, 0xd3, 0x67, 0xe9, 0xc1, 0x63, 0xac, 0x64, 0xb6, 0x7b, + 0x37, 0x8c, 0xc0, 0x08, 0x25, 0x4a, 0xc9, 0x63, 0xf7, 0xee, 0xcc, 0x9b, 0x7d, 0x74, 0xd2, 0xc4, + 0xb1, 0x17, 0xd4, 0xd0, 0x8f, 0xbc, 0x09, 0xe5, 0x59, 0x04, 0xae, 0x2d, 0x68, 0xe2, 0xe6, 0x70, + 0x84, 0xbc, 0x91, 0x4d, 0xa9, 0xf0, 0x9c, 0xd3, 0x09, 0x6c, 0xea, 0x62, 0xb1, 0x08, 0x80, 0x0d, + 0x31, 0x92, 0xe5, 0xeb, 0x48, 0xe5, 0xd4, 0xc4, 0xe6, 0xf2, 0xa1, 0xe1, 0x37, 0xae, 0x91, 0x53, + 0xf9, 0xe3, 0x4c, 0xcf, 0x40, 0xe6, 0xf2, 0x69, 0x85, 0x2f, 0x56, 0x5b, 0xa7, 0xc9, 0x4f, 0xa0, + 0x65, 0x7e, 0xe7, 0xbd, 0x35, 0x2c, 0x39, 0xc9, 0x28, 0xd3, 0xfd, 0x83, 0xb8, 0x85, 0x0b, 0x67, + 0xf4, 0x93, 0xc7, 0x61, 0xb8, 0x14, 0x36, 0xde, 0x2f, 0x42, 0xb3, 0x57, 0xaa, 0xa9, 0xba, 0xad, + 0xcd, 0xb1, 0x78, 0x92, 0xc5, 0x2b, 0x00, 0xd8, 0x64, 0xa7, 0x1c, 0xda, 0xd4, 0x96, 0x0c, 0x47, + 0xd5, 0x64, 0xd2, 0x00, 0x11, 0x60, 0x37, 0xcc, 0x64, 0xa9, 0x84, 0xad, 0x9e, 0xc2, 0xa5, 0x8a, + 0x2f, 0x70, 0xe7, 0xb7, 0xc7, 0x7c, 0xd2, 0x64, 0x9e, 0xdf, 0x4b, 0x86, 0xfb, 0xce, 0xc1, 0xb1, + 0xa3, 0xf7, 0x5c, 0x00, 0x23, 0x1f, 0x36, 0xdc, 0xfd, 0x99, 0x9e, 0x4e, 0x38, 0x8b, 0xf0, 0xc2, + 0x13, 0xee, 0x82, 0xa9, 0x07, 0x58, 0x75, 0xb1, 0x47, 0x40, 0x93, 0x19, 0xaf, 0xd1, 0x4c, 0xd8, + 0x32, 0xca, 0xda, 0xa4, 0x34, 0xf9, 0x19, 0x7f, 0x4e, 0x96, 0xb4, 0x02, 0x5a, 0xc9, 0x9c, 0x3c, + 0x97, 0x19, 0x38, 0x5c, 0xe5, 0x65, 0xe3, 0xcc, 0xec, 0x3b, 0x36, 0xdc, 0xde, 0x11, 0x24, 0x38, + 0x09, 0xe1, 0x47, 0x80, 0xe9, 0xca, 0x7c, 0xba, 0x33, 0x7b, 0x61, 0x7f, 0x66, 0xdf, 0x31, 0xbc, + 0x17, 0xc4, 0xef, 0x1c, 0xa4, 0x80, 0x16, 0xb5, 0x84, 0x55, 0x57, 0x8a, 0xa1, 0xaa, 0xf2, 0x33, + 0x25, 0xa7, 0x43, 0xf1, 0xbf, 0x0a, 0xa8, 0x28, 0x19, 0x8c, 0x19, 0xfe, 0x00, 0xff, 0x56, 0xd0, + 0xe4, 0x21, 0xc1, 0x0f, 0x69, 0xd2, 0xc7, 0xc2, 0xa6, 0xad, 0x1b, 0x37, 0x85, 0x77, 0x6c, 0x0c, + 0x87, 0xbc, 0x99, 0x77, 0xdb, 0xb3, 0x9f, 0x60, 0x08, 0x4b, 0x5f, 0xeb, 0xc1, 0xa4, 0xe0, 0xd4, + 0xa9, 0x85, 0xa6, 0x65, 0x3c, 0x06, 0x63, 0x5c, 0xb0, 0x2a, 0xd3, 0x7b, 0x36, 0x73, 0xfc, 0x33, + 0xa3, 0x6c, 0xe6, 0xcd, 0xbe, 0xec, 0xe0, 0x11, 0x70, 0x99, 0xeb, 0xad, 0x5f, 0xdd, 0x50, 0xe7, + 0x85, 0xb5, 0xf3, 0x36, 0x36, 0x78, 0xd3, 0xfd, 0x03, 0x5e, 0xb3, 0x79, 0x23, 0xe0, 0x66, 0x15, + 0x5e, 0xe3, 0xf6, 0x21, 0x9c, 0x4b, 0xf9, 0x49, 0x6f, 0xe6, 0xf8, 0x67, 0xfa, 0xbe, 0x13, 0xd0, + 0x28, 0x14, 0xca, 0x53, 0x9f, 0x20, 0xa5, 0x52, 0xc2, 0x46, 0xa4, 0x4c, 0xa0, 0xad, 0x28, 0x3f, + 0x53, 0x60, 0x56, 0xb5, 0xcf, 0x69, 0xf2, 0x33, 0x68, 0x83, 0x3f, 0x2f, 0x48, 0x19, 0x06, 0xdc, + 0xdc, 0xae, 0x02, 0x34, 0x02, 0xb5, 0xfe, 0x52, 0xe0, 0x80, 0xe8, 0x4b, 0xc1, 0xd8, 0x6f, 0xdf, + 0x55, 0x0f, 0x9a, 0xe3, 0xd2, 0xf0, 0x0f, 0x70, 0x53, 0x63, 0xce, 0x1d, 0x0a, 0x9c, 0x3d, 0x56, + 0xb1, 0xf1, 0x91, 0xf7, 0xbf, 0xbc, 0xff, 0x6a, 0xcb, 0xb4, 0x6d, 0x5c, 0x43, 0xed, 0x7a, 0x4d, + 0x56, 0x50, 0x93, 0x3f, 0xff, 0x44, 0x1d, 0x97, 0x90, 0xb4, 0xc5, 0x96, 0xd0, 0x41, 0x7a, 0x59, + 0xc6, 0x0f, 0x49, 0xf4, 0xa1, 0x32, 0x06, 0xaf, 0x9c, 0x9e, 0xd0, 0x92, 0x26, 0xce, 0x45, 0x26, + 0x2f, 0x6f, 0xc4, 0x3a, 0x35, 0x53, 0x70, 0x3e, 0x47, 0x1b, 0x88, 0xdd, 0xba, 0x85, 0x00, 0xf8, + 0x50, 0x19, 0xfb, 0x32, 0x5f, 0x1b, 0x2a, 0x96, 0x34, 0xb1, 0x1c, 0x4d, 0x20, 0x46, 0x12, 0x31, + 0x16, 0xfe, 0x94, 0x7d, 0x8a, 0x33, 0x51, 0xb1, 0x1a, 0x0a, 0x1b, 0xcc, 0xbf, 0x42, 0xbf, 0xac, + 0x9e, 0xb7, 0x26, 0xe4, 0x44, 0x36, 0xf5, 0xa5, 0x9d, 0x08, 0x1a, 0xef, 0xe2, 0xf0, 0x5b, 0x10, + 0xb4, 0x47, 0xed, 0xeb, 0x41, 0xab, 0x9a, 0xc9, 0x52, 0x09, 0x6c, 0x8a, 0xe5, 0x22, 0x64, 0xa5, + 0x85, 0x05, 0x37, 0x87, 0x16, 0x16, 0xde, 0x92, 0xb4, 0xb0, 0xe8, 0x27, 0x5a, 0xc8, 0xbb, 0xb6, + 0xb4, 0x22, 0x32, 0x61, 0x8a, 0xc6, 0x44, 0x0b, 0xff, 0xca, 0x89, 0x16, 0xfe, 0x60, 0x6e, 0x2f, + 0x7f, 0x6b, 0xd0, 0x42, 0xc1, 0xd1, 0x10, 0x9a, 0x8e, 0x0f, 0x2c, 0xc5, 0x08, 0x45, 0x24, 0xef, + 0x1a, 0x81, 0x22, 0xde, 0x0f, 0x93, 0x87, 0x36, 0xb3, 0xdd, 0xbb, 0xf5, 0x8e, 0x0b, 0xfa, 0xe5, + 0x76, 0xba, 0x16, 0x76, 0x02, 0x49, 0x97, 0x35, 0xff, 0xec, 0x19, 0xf7, 0x43, 0xd7, 0xd5, 0xd6, + 0xa2, 0x1b, 0x99, 0x6c, 0x45, 0xa2, 0x7d, 0xb0, 0xa2, 0xd7, 0x94, 0x82, 0xac, 0x4f, 0x44, 0x98, + 0xd7, 0x55, 0x2e, 0x49, 0x7c, 0x10, 0x15, 0x93, 0xcb, 0x28, 0x13, 0x6b, 0xcf, 0x71, 0x70, 0x07, + 0x41, 0x9c, 0x81, 0xc1, 0xcd, 0x95, 0x16, 0xf6, 0x6d, 0x44, 0x93, 0x2c, 0x19, 0x0e, 0x77, 0x61, + 0x27, 0x0f, 0xe8, 0xd3, 0x51, 0x51, 0x38, 0x1a, 0x52, 0x5f, 0xa6, 0x24, 0x17, 0x3e, 0x70, 0xc9, + 0x90, 0x9a, 0x0c, 0x52, 0x2a, 0x4b, 0x7e, 0xfb, 0x86, 0x05, 0x02, 0x26, 0x8d, 0xd1, 0xa8, 0x9a, + 0x60, 0x13, 0x23, 0x3d, 0x25, 0xbf, 0xad, 0xc7, 0xd7, 0x87, 0x6d, 0xcc, 0x1d, 0xd8, 0xef, 0x19, + 0x04, 0xad, 0x8c, 0x7a, 0xb3, 0x25, 0x34, 0x8d, 0x13, 0xcc, 0x50, 0x37, 0xd1, 0xf9, 0x87, 0x25, + 0x2d, 0xa2, 0xfb, 0x47, 0x62, 0x22, 0x0c, 0x5f, 0x3f, 0x9c, 0x1d, 0xfc, 0x04, 0xec, 0xc8, 0x33, + 0xfd, 0x1f, 0x67, 0x4e, 0xbd, 0xce, 0xf0, 0xe5, 0xcd, 0x91, 0xbd, 0x87, 0x28, 0x27, 0xfb, 0xcf, + 0x3d, 0x68, 0xae, 0x5b, 0x9b, 0x3f, 0x00, 0x4a, 0x6c, 0xb0, 0xb0, 0x07, 0x73, 0xdc, 0x50, 0x02, + 0xae, 0x00, 0x0e, 0xfc, 0x01, 0x4c, 0xcd, 0x0e, 0xfe, 0xaa, 0x26, 0x6f, 0x42, 0x2f, 0xfa, 0x47, + 0x99, 0xaa, 0x54, 0x3d, 0xf6, 0xf5, 0xd3, 0xdb, 0x87, 0xec, 0x88, 0xb0, 0x1d, 0x4d, 0xb2, 0xb4, + 0xec, 0xe8, 0x8e, 0x8f, 0x41, 0x9c, 0xc7, 0x84, 0x38, 0x0c, 0x9b, 0x09, 0x75, 0xb3, 0xca, 0x3c, + 0xf1, 0xc1, 0x07, 0x4e, 0x4d, 0x25, 0x02, 0x51, 0xe6, 0x90, 0x1f, 0x3e, 0x4c, 0x1d, 0x64, 0x11, + 0xa7, 0x83, 0xf4, 0xfd, 0x65, 0x11, 0x9a, 0xd9, 0xa0, 0x6e, 0x6a, 0x6b, 0xa1, 0xe8, 0x4d, 0xde, + 0x09, 0x00, 0xb0, 0x3e, 0xe9, 0x70, 0x76, 0x7b, 0x5d, 0xcf, 0x6e, 0x26, 0x14, 0xe4, 0x8f, 0xf0, + 0x27, 0x1d, 0x8e, 0x70, 0xaf, 0xeb, 0x11, 0x6e, 0xb4, 0xc0, 0x9d, 0xe4, 0x1b, 0x6c, 0x27, 0x79, + 0xad, 0x26, 0x2f, 0xe2, 0x00, 0x7f, 0xbe, 0x71, 0x5c, 0x67, 0x3a, 0xcf, 0x0f, 0x9f, 0xe9, 0x1a, + 0xee, 0x3b, 0x07, 0xed, 0x65, 0xbb, 0x77, 0x27, 0x52, 0x2f, 0x03, 0x42, 0xd8, 0x04, 0x96, 0xb7, + 0xfa, 0x09, 0xbe, 0x4f, 0x40, 0x25, 0x41, 0x4a, 0xab, 0xa8, 0xc3, 0xc4, 0xa5, 0xb6, 0xc8, 0x9d, + 0x8e, 0xbb, 0x66, 0xd0, 0x3e, 0x50, 0x61, 0xc3, 0x43, 0x49, 0xd6, 0x94, 0x74, 0x3f, 0x0f, 0xa2, + 0xd4, 0xf4, 0xdc, 0x3c, 0x03, 0x08, 0x7c, 0x12, 0xba, 0xad, 0x18, 0x55, 0x2a, 0x1e, 0x33, 0xa9, + 0xe6, 0xb8, 0xb5, 0xdb, 0xb5, 0x49, 0x4d, 0x8e, 0xa3, 0xa8, 0xdf, 0x05, 0xc2, 0xa4, 0xf9, 0xc3, + 0x97, 0x5e, 0x1d, 0xee, 0x3b, 0x6a, 0x1f, 0x94, 0xf5, 0xfd, 0xa3, 0xe5, 0x54, 0xe6, 0xa0, 0x83, + 0x3b, 0xa2, 0xbf, 0x14, 0x8c, 0x11, 0xfb, 0xfe, 0xa5, 0x07, 0xdd, 0x69, 0xeb, 0xf0, 0x07, 0x20, + 0x4a, 0x5b, 0x2c, 0xe7, 0xf4, 0x3d, 0xa3, 0xec, 0x1f, 0x39, 0xa8, 0xc9, 0x8b, 0x6d, 0x20, 0x4d, + 0xee, 0x6b, 0xc3, 0x9d, 0xa9, 0x94, 0x4c, 0xbd, 0xa0, 0xc9, 0xcf, 0xa1, 0x5f, 0xfb, 0xdd, 0x66, + 0xfd, 0xad, 0xe9, 0xd3, 0x13, 0xe8, 0x0e, 0x87, 0xd1, 0x8a, 0x95, 0xf4, 0xa9, 0x85, 0xe0, 0xfe, + 0xd4, 0x02, 0x2c, 0xa0, 0x7d, 0x37, 0x26, 0xa2, 0x29, 0x44, 0x84, 0xb6, 0x3a, 0x16, 0x6a, 0x8b, + 0xa8, 0x2b, 0x22, 0x81, 0x16, 0x71, 0x7d, 0xae, 0x16, 0xe9, 0x31, 0x4d, 0x7e, 0xc4, 0xd4, 0x22, + 0x55, 0xd7, 0xd5, 0x37, 0x43, 0xa4, 0x09, 0x23, 0xbe, 0x70, 0x7a, 0xe0, 0x88, 0x11, 0xca, 0x67, + 0x78, 0xff, 0xe5, 0xcc, 0xb1, 0xbd, 0x46, 0x08, 0x37, 0x53, 0xd9, 0x14, 0x30, 0x5d, 0x56, 0xc3, + 0x8e, 0xad, 0xd4, 0xe4, 0x06, 0x3f, 0x4b, 0x93, 0x1e, 0x35, 0x1a, 0x81, 0x57, 0xeb, 0x95, 0xfa, + 0x7b, 0xbb, 0xd6, 0x3d, 0xb5, 0xbc, 0xd6, 0xbb, 0x78, 0xa1, 0xb4, 0x68, 0xe1, 0x43, 0x55, 0x8b, + 0x17, 0x2e, 0x7e, 0x64, 0xe1, 0x52, 0xfc, 0x67, 0xe9, 0xc2, 0x25, 0xd5, 0xa9, 0xad, 0x8f, 0x24, + 0xf1, 0xef, 0x87, 0x16, 0x2e, 0x59, 0x60, 0xf8, 0xbe, 0x16, 0x3b, 0x04, 0x54, 0xd2, 0x4a, 0x26, + 0x62, 0xbc, 0xa4, 0x21, 0x31, 0x89, 0x8c, 0x44, 0xe9, 0xd9, 0xec, 0xe0, 0xee, 0xf4, 0xe0, 0x67, + 0xa0, 0xdd, 0xa9, 0x7c, 0xaa, 0x6d, 0x93, 0x2a, 0x37, 0x35, 0x36, 0xab, 0x89, 0x6d, 0x6a, 0xe2, + 0xc6, 0x50, 0x17, 0xfe, 0xae, 0x8f, 0x45, 0x53, 0x89, 0x58, 0x24, 0x42, 0x12, 0x96, 0xa7, 0x82, + 0x21, 0x9a, 0xde, 0x1c, 0xdc, 0xa2, 0xe2, 0x46, 0x70, 0xf2, 0xd6, 0xb6, 0x4d, 0x6a, 0x44, 0x4d, + 0x7d, 0xd5, 0xbe, 0x33, 0x01, 0x1e, 0xbe, 0xb3, 0xbd, 0x9d, 0x0b, 0x14, 0xa3, 0x17, 0x71, 0x29, + 0x2a, 0xd9, 0x1c, 0x09, 0xb4, 0x70, 0xbe, 0x65, 0x08, 0x33, 0x61, 0x24, 0x4a, 0xa5, 0x80, 0x41, + 0xfa, 0xe1, 0x03, 0x8a, 0x91, 0x88, 0x79, 0x09, 0xfc, 0xbb, 0x01, 0x9f, 0x25, 0x9c, 0x23, 0x32, + 0x23, 0x51, 0x2a, 0x83, 0x5a, 0xd4, 0x8a, 0xd7, 0x48, 0x17, 0x57, 0xa0, 0xb2, 0x90, 0xba, 0x39, + 0xd0, 0x16, 0x01, 0xf6, 0x89, 0x6a, 0x89, 0x7c, 0x9a, 0x3c, 0xcf, 0x6f, 0xc9, 0x90, 0xa6, 0x40, + 0x03, 0x70, 0x91, 0xd0, 0xdb, 0x87, 0x14, 0x4b, 0xb6, 0x58, 0x8b, 0x8a, 0xd5, 0x28, 0x51, 0xb9, + 0xc2, 0x43, 0x3b, 0xd2, 0x02, 0x4d, 0x92, 0x66, 0x50, 0x69, 0xdc, 0x61, 0x12, 0xdd, 0xb9, 0xef, + 0x1c, 0xa5, 0x47, 0x34, 0x5b, 0x7c, 0xd8, 0xbc, 0xc0, 0x96, 0x98, 0x5a, 0x20, 0x96, 0x26, 0x4d, + 0x61, 0x6e, 0xce, 0xdf, 0xd2, 0x07, 0x07, 0x86, 0xdb, 0x3b, 0xcc, 0xfb, 0xed, 0xc3, 0x68, 0x42, + 0x1b, 0xd1, 0x75, 0xb3, 0x48, 0xfd, 0x50, 0x91, 0xa6, 0xb1, 0x8a, 0x54, 0xe9, 0x8d, 0x2b, 0xd2, + 0x1c, 0xb1, 0x16, 0x95, 0x92, 0x36, 0x88, 0x9d, 0x3d, 0x32, 0x75, 0x6a, 0x66, 0xaa, 0x54, 0x06, + 0xfd, 0xd1, 0x67, 0x08, 0x66, 0x86, 0xb8, 0x0c, 0x21, 0x68, 0x86, 0x54, 0x9e, 0xc8, 0x3d, 0x62, + 0x30, 0x93, 0xa5, 0x32, 0xe8, 0x94, 0x3d, 0x62, 0x30, 0x73, 0xc4, 0x14, 0xec, 0x14, 0xe7, 0xd1, + 0x81, 0x3c, 0x34, 0x35, 0x12, 0xa5, 0xc6, 0xcc, 0xe9, 0xbd, 0xc3, 0x7d, 0x7b, 0x60, 0x8d, 0x68, + 0x04, 0xac, 0x70, 0x34, 0xb5, 0x44, 0xaa, 0xd9, 0x14, 0x8b, 0x45, 0x6a, 0x92, 0xa9, 0x44, 0x38, + 0xda, 0x52, 0x13, 0x6a, 0x03, 0xcb, 0x80, 0x9a, 0xd6, 0x40, 0x9c, 0xa6, 0x25, 0xb3, 0xbd, 0x9d, + 0xfa, 0xa9, 0x81, 0xec, 0x99, 0x76, 0xa8, 0xb5, 0x40, 0x31, 0x1a, 0x15, 0x15, 0x34, 0x09, 0xff, + 0x26, 0x7b, 0x45, 0x3c, 0x39, 0x4c, 0x22, 0x76, 0xbb, 0xe4, 0xcd, 0x94, 0x35, 0x47, 0x2a, 0xa7, + 0xf0, 0x45, 0x5c, 0xbb, 0xe0, 0x83, 0xa4, 0x7d, 0x88, 0xde, 0x95, 0xad, 0x05, 0xc5, 0x5f, 0x63, + 0x3e, 0xa5, 0x45, 0x7d, 0x99, 0x78, 0x85, 0x98, 0x28, 0x55, 0xe4, 0x92, 0x0a, 0x72, 0x62, 0x28, + 0xb8, 0x04, 0x58, 0xaa, 0x43, 0x69, 0x69, 0x16, 0x85, 0xc4, 0x9e, 0xce, 0xcc, 0xd1, 0x7d, 0x99, + 0xf6, 0xf3, 0x99, 0xd3, 0x67, 0x46, 0x3e, 0xe8, 0x1a, 0x3e, 0xbf, 0x5b, 0xdf, 0x77, 0x42, 0x81, + 0x32, 0x62, 0x0c, 0x15, 0x25, 0x88, 0xa3, 0xc9, 0x29, 0xce, 0x3e, 0x14, 0xd7, 0xb4, 0xb5, 0x6e, + 0x52, 0xc1, 0xa1, 0x24, 0x3c, 0xfe, 0x86, 0xe2, 0xd2, 0xa2, 0xe1, 0xfd, 0x14, 0xb8, 0xd2, 0xfd, + 0x03, 0x78, 0x12, 0xed, 0x43, 0x26, 0x71, 0x81, 0xb0, 0xea, 0x70, 0x85, 0x21, 0xcf, 0x16, 0x30, + 0x14, 0x43, 0x45, 0xf1, 0x2b, 0xc1, 0x1a, 0x12, 0x09, 0x5c, 0x49, 0xfc, 0x23, 0xb8, 0x63, 0xf3, + 0x39, 0xd2, 0x47, 0x82, 0x7e, 0xed, 0x75, 0x86, 0xad, 0xcb, 0x28, 0x0e, 0x93, 0x98, 0xd8, 0x18, + 0xb0, 0x7b, 0x8f, 0x67, 0x2e, 0x7e, 0x9a, 0x7d, 0xe3, 0x54, 0xe6, 0xe8, 0xbe, 0xaf, 0xda, 0x77, + 0x51, 0xae, 0xbf, 0xc9, 0x18, 0x03, 0xd7, 0x50, 0xad, 0x37, 0x1c, 0xdf, 0xb6, 0xb4, 0x26, 0x1c, + 0xdf, 0xf6, 0x50, 0x4d, 0xa8, 0x2d, 0x10, 0xf1, 0xc2, 0xf8, 0x80, 0x80, 0x19, 0xd4, 0x91, 0x8f, + 0x75, 0x86, 0x1b, 0x24, 0xbe, 0x36, 0x80, 0x40, 0x3e, 0x57, 0xf5, 0x3c, 0xf8, 0xdc, 0x30, 0x22, + 0x12, 0x43, 0x0b, 0xc6, 0x83, 0x16, 0xdc, 0xbe, 0x25, 0xaa, 0x13, 0x73, 0x3a, 0x98, 0x4b, 0xb5, + 0xa5, 0xfb, 0x20, 0x9e, 0x60, 0xf6, 0xe2, 0x99, 0xec, 0xe1, 0x3d, 0xe0, 0x38, 0x96, 0x50, 0x5e, + 0x3c, 0x00, 0xa0, 0x79, 0xf0, 0xc4, 0xfd, 0x2b, 0x0f, 0x00, 0x2f, 0x33, 0x91, 0x37, 0x08, 0x15, + 0x35, 0x91, 0x37, 0xc8, 0x51, 0x05, 0x47, 0x8e, 0x3c, 0x66, 0x1e, 0xa1, 0x38, 0xbe, 0x1c, 0x8a, + 0x03, 0x5c, 0xae, 0x95, 0x9a, 0x48, 0x06, 0x35, 0x29, 0x1c, 0x4d, 0xf8, 0x6f, 0x50, 0x91, 0x0a, + 0x0e, 0xb1, 0x8a, 0xcc, 0x3e, 0x09, 0xf8, 0xcf, 0xcf, 0x05, 0xff, 0x62, 0xe2, 0xbc, 0x2f, 0x07, + 0xa0, 0x17, 0x31, 0x80, 0x9e, 0x30, 0x1a, 0x40, 0x33, 0x38, 0x5d, 0xcc, 0xe0, 0xb4, 0x64, 0x54, + 0x38, 0x65, 0x90, 0x96, 0x13, 0x7b, 0xab, 0xd4, 0x16, 0x7b, 0xcb, 0xd7, 0x80, 0x90, 0xd9, 0x93, + 0x38, 0x1b, 0x95, 0x6e, 0x0b, 0x44, 0xc2, 0x21, 0x42, 0x1e, 0x61, 0x9d, 0xcd, 0x84, 0x3c, 0x6f, + 0x11, 0x16, 0xa3, 0x89, 0x5c, 0xef, 0x98, 0xc1, 0x6b, 0x0d, 0x47, 0x49, 0x03, 0x45, 0x0a, 0xfe, + 0x49, 0x52, 0x02, 0x2f, 0x53, 0xb7, 0xd9, 0xf8, 0xa7, 0x2f, 0x53, 0x88, 0x66, 0xd7, 0x93, 0xe7, + 0x56, 0x39, 0x00, 0xc2, 0x2e, 0x0f, 0xb7, 0xef, 0xe9, 0xbe, 0xcb, 0x7e, 0xba, 0x6f, 0x26, 0xaf, + 0x30, 0x8c, 0xd3, 0xbd, 0xe9, 0xbb, 0x3c, 0xdd, 0x21, 0xe0, 0x3a, 0xbd, 0x9f, 0x18, 0x47, 0xfb, + 0x46, 0x80, 0x50, 0x1a, 0x55, 0xd9, 0xd1, 0x7f, 0x3c, 0xc3, 0xae, 0xba, 0x05, 0xc4, 0x42, 0x81, + 0x15, 0x97, 0x44, 0x1e, 0x0f, 0x81, 0x1c, 0x7f, 0x5d, 0x57, 0xa4, 0x09, 0x9e, 0x12, 0x41, 0x31, + 0x4a, 0x89, 0x4f, 0x72, 0x17, 0x2b, 0xce, 0x45, 0xaf, 0x79, 0xb1, 0x9a, 0x61, 0x6d, 0x86, 0x1d, + 0xa8, 0xa6, 0x68, 0x21, 0xa4, 0xc9, 0x01, 0xb4, 0xd1, 0x9f, 0x17, 0x0c, 0xa4, 0x19, 0x50, 0x13, + 0x6f, 0x0b, 0xd7, 0xdc, 0x97, 0x02, 0xdb, 0xd0, 0x2f, 0x05, 0xb6, 0xee, 0x5f, 0x0a, 0xc6, 0xec, + 0x79, 0xd1, 0x9b, 0x2e, 0xa0, 0x39, 0x2e, 0x3d, 0xdc, 0x7c, 0x96, 0x9e, 0xf9, 0x0e, 0xcd, 0x3f, + 0x22, 0xe9, 0x6e, 0xc7, 0x49, 0xe7, 0xf7, 0x1d, 0xfa, 0x77, 0x85, 0xcc, 0x30, 0xfe, 0x47, 0x87, + 0x50, 0xaf, 0xd8, 0xf0, 0x69, 0xe3, 0xf7, 0x8c, 0x4f, 0xb7, 0x2e, 0x22, 0x99, 0x0c, 0xa6, 0x1d, + 0x91, 0xf2, 0x6d, 0xbf, 0x34, 0x03, 0x6a, 0x7e, 0x73, 0x44, 0xfa, 0x7b, 0x81, 0xbd, 0x59, 0xb8, + 0x15, 0x10, 0x49, 0xd1, 0xe4, 0xb5, 0x68, 0xb5, 0x3f, 0xff, 0x88, 0xa4, 0x59, 0x8e, 0x93, 0x76, + 0xb3, 0xa1, 0xfc, 0x17, 0x85, 0x68, 0x36, 0xbc, 0x4f, 0xfa, 0x09, 0x85, 0xbe, 0x4b, 0x14, 0x5a, + 0x8b, 0xca, 0x18, 0xb7, 0x66, 0xa0, 0x11, 0x7d, 0x0a, 0x6e, 0xc9, 0x90, 0xca, 0x2d, 0x08, 0xc3, + 0x3f, 0xcb, 0xb3, 0x94, 0x1b, 0xf7, 0xd9, 0x73, 0x7a, 0xe4, 0xc4, 0x59, 0x67, 0x94, 0xc9, 0xb7, + 0xdd, 0xf8, 0xec, 0xc1, 0x35, 0xbf, 0x1d, 0xca, 0xb8, 0xf4, 0xf0, 0x03, 0xa2, 0x4c, 0xde, 0x11, + 0x49, 0xb3, 0x1c, 0x27, 0xed, 0x86, 0x32, 0x7f, 0x56, 0x88, 0x2a, 0x0c, 0xb7, 0xc7, 0x3f, 0x21, + 0xcc, 0x8f, 0x17, 0x61, 0x36, 0x69, 0xf2, 0x46, 0xf4, 0xbc, 0x3f, 0xcf, 0x66, 0x4b, 0x33, 0x0c, + 0xab, 0xb6, 0x6f, 0x88, 0x2e, 0x7d, 0x1e, 0x2e, 0xdc, 0xe1, 0x0f, 0x8b, 0x2c, 0xa2, 0x62, 0x51, + 0x08, 0xcd, 0x73, 0x8c, 0xbd, 0x64, 0x0e, 0xd1, 0xea, 0x35, 0x98, 0x33, 0x26, 0x74, 0x0c, 0x76, + 0x9e, 0x67, 0x8e, 0x9c, 0x69, 0xe0, 0x58, 0xd0, 0xef, 0xef, 0x3d, 0xc4, 0x7c, 0x62, 0xf9, 0xcb, + 0x29, 0x35, 0x11, 0x0d, 0x44, 0xd6, 0xc4, 0x42, 0x6a, 0x33, 0x79, 0x31, 0xcf, 0x10, 0xf0, 0x79, + 0x34, 0x31, 0x1a, 0x0b, 0xa9, 0x56, 0xd7, 0x00, 0xdf, 0x0a, 0x09, 0xf9, 0xf6, 0xc4, 0xa5, 0x36, + 0xb5, 0x62, 0xb9, 0xa3, 0xcd, 0x77, 0x7a, 0x60, 0x80, 0xd3, 0x9d, 0x3c, 0x8b, 0x4a, 0xc2, 0x51, + 0x18, 0x31, 0x35, 0xec, 0x7c, 0x5c, 0x93, 0x1f, 0xf3, 0x1b, 0x89, 0x52, 0x0d, 0x75, 0xbc, 0x4c, + 0x9e, 0x6f, 0x67, 0xf6, 0x1d, 0xd3, 0xcf, 0x1e, 0xcb, 0x5e, 0x3b, 0x32, 0xbc, 0xbb, 0x3b, 0xd3, + 0xf3, 0x11, 0xb3, 0xf3, 0xe3, 0xd3, 0x14, 0xa3, 0x2a, 0x0b, 0x24, 0x97, 0x77, 0x55, 0xd8, 0x22, + 0x67, 0x3f, 0xfa, 0x28, 0xdd, 0xdf, 0x99, 0x39, 0x76, 0x15, 0x5a, 0x61, 0xf0, 0xca, 0xcf, 0xd0, + 0xf7, 0x17, 0x05, 0x44, 0x25, 0xeb, 0xd4, 0xd6, 0xed, 0xf1, 0xf4, 0x67, 0x29, 0x67, 0x10, 0xcb, + 0x62, 0xa0, 0x10, 0x38, 0x9d, 0xb1, 0x29, 0x90, 0x54, 0x1f, 0x5a, 0x9a, 0x1d, 0x3a, 0x96, 0x3d, + 0x8d, 0x37, 0x9d, 0x2e, 0x25, 0xb8, 0x33, 0xdb, 0x25, 0xa0, 0x29, 0x2f, 0xa9, 0x9b, 0x36, 0xf2, + 0x8f, 0x84, 0x8b, 0x9c, 0xc3, 0xff, 0xff, 0x4a, 0xdd, 0xc4, 0xbd, 0xd4, 0xdc, 0x20, 0x81, 0x7f, + 0xf2, 0xdc, 0xda, 0xd2, 0xdd, 0xd4, 0x62, 0xdd, 0x1a, 0xa5, 0x0d, 0xa4, 0x56, 0xa0, 0x7f, 0x53, + 0x26, 0xbf, 0x64, 0x69, 0xca, 0x38, 0xb0, 0xf2, 0xae, 0xbf, 0xcb, 0x66, 0xba, 0x61, 0x4c, 0x87, + 0x80, 0x4a, 0x57, 0x07, 0xe2, 0x60, 0x1f, 0x2d, 0x2e, 0x33, 0x0c, 0x01, 0x04, 0xe7, 0x77, 0x9d, + 0x46, 0x51, 0x30, 0x62, 0xa7, 0x86, 0xf1, 0xb4, 0x52, 0xc5, 0xa3, 0x68, 0x22, 0x97, 0x3c, 0xae, + 0x67, 0x9b, 0x7f, 0x56, 0x00, 0x86, 0x4f, 0x81, 0x54, 0x70, 0x0b, 0x44, 0x13, 0x6e, 0x56, 0x53, + 0xa9, 0x70, 0xd4, 0x38, 0x3a, 0x03, 0xa8, 0x94, 0x18, 0xa6, 0x70, 0x2e, 0x66, 0xea, 0x35, 0xf9, + 0x49, 0xbf, 0x99, 0x2a, 0x2d, 0x81, 0x27, 0x2c, 0x20, 0x60, 0xa4, 0xd2, 0xdb, 0x4d, 0xe1, 0x1d, + 0x35, 0x9b, 0xc2, 0x3b, 0x36, 0x26, 0xd5, 0xd4, 0x02, 0x9b, 0xdb, 0x99, 0x4d, 0xe1, 0x1d, 0x8a, + 0x59, 0x5f, 0x7c, 0x11, 0x4d, 0x20, 0x1f, 0x46, 0xbc, 0x13, 0x12, 0xa6, 0x8a, 0xa5, 0x49, 0x8f, + 0xf0, 0xcd, 0x37, 0x36, 0x54, 0x32, 0x45, 0x6d, 0x0d, 0xfc, 0x20, 0xcf, 0x47, 0x9c, 0xfb, 0x60, + 0x4d, 0x88, 0xef, 0x08, 0x08, 0x01, 0xa5, 0x27, 0xe7, 0x18, 0x38, 0x70, 0xd8, 0x29, 0x68, 0xf2, + 0x1f, 0xfb, 0xb9, 0x74, 0x29, 0x6e, 0xfe, 0x86, 0xcd, 0x1c, 0xe9, 0x38, 0x90, 0xbd, 0x76, 0x11, + 0x43, 0x09, 0x31, 0xa1, 0xd2, 0x4f, 0x1e, 0x37, 0x9c, 0x3b, 0xa4, 0xfb, 0x0f, 0xa4, 0x87, 0x4e, + 0x83, 0xf8, 0x91, 0x6a, 0xa5, 0x48, 0x3c, 0x72, 0x28, 0x56, 0x99, 0x33, 0x1a, 0x6f, 0x38, 0xbe, + 0x91, 0x39, 0x3f, 0xd8, 0xb8, 0x25, 0x96, 0x4c, 0x6d, 0x8c, 0x84, 0x93, 0xa9, 0x05, 0x0a, 0xd7, + 0x3b, 0x7b, 0xec, 0x94, 0x77, 0x3b, 0x58, 0x9c, 0x02, 0x63, 0x60, 0xe0, 0xdb, 0x8e, 0x1a, 0x33, + 0x0c, 0x51, 0xf3, 0x1e, 0x87, 0xda, 0xdf, 0x90, 0x48, 0x2c, 0xe5, 0x3d, 0x8e, 0x60, 0x4c, 0x07, + 0x9f, 0x47, 0x34, 0x4d, 0x2a, 0xa3, 0xf1, 0xc9, 0xf6, 0x1d, 0xd6, 0x5f, 0x3b, 0x65, 0x38, 0x19, + 0x11, 0x1f, 0x46, 0x25, 0x6a, 0x22, 0x11, 0x4b, 0xac, 0x4e, 0xb6, 0xf0, 0x91, 0xdf, 0x8c, 0x44, + 0xa9, 0xcc, 0x42, 0x56, 0x8c, 0x74, 0xf1, 0x21, 0x54, 0x9a, 0x80, 0x89, 0x36, 0x86, 0x78, 0x4d, + 0x90, 0x99, 0x2a, 0x95, 0xc0, 0x5c, 0x1b, 0x1b, 0x14, 0x33, 0xd1, 0x78, 0x86, 0x50, 0x34, 0xde, + 0x67, 0x08, 0x96, 0xa7, 0x17, 0xf5, 0xa8, 0xb4, 0x99, 0x00, 0x4c, 0x74, 0x73, 0x4c, 0x9c, 0x6d, + 0x83, 0x7b, 0x1e, 0x64, 0xcb, 0x73, 0x40, 0xd6, 0x00, 0x35, 0xdf, 0x7b, 0x85, 0xe8, 0x2e, 0xbc, + 0x07, 0xe1, 0x1d, 0xcc, 0xb4, 0xfa, 0x17, 0x31, 0xd3, 0x2e, 0xfa, 0x47, 0x81, 0x4d, 0x61, 0x54, + 0x12, 0x88, 0x44, 0xc8, 0x52, 0x51, 0xfa, 0x4f, 0x02, 0xec, 0x1b, 0x89, 0xd2, 0xe3, 0x34, 0x9c, + 0x13, 0x87, 0x16, 0x96, 0x49, 0x31, 0x63, 0x79, 0xb2, 0xfa, 0xbb, 0x6f, 0x0c, 0x75, 0x19, 0xa6, + 0x7a, 0xe4, 0x49, 0xa2, 0x62, 0xb4, 0x24, 0x1e, 0x13, 0xe8, 0x82, 0x71, 0x72, 0x0f, 0xdb, 0x8b, + 0x5c, 0x63, 0xd3, 0xea, 0x9e, 0xd7, 0xe4, 0x67, 0xfd, 0x66, 0x05, 0x69, 0xf5, 0xf0, 0x7b, 0x3b, + 0xe9, 0x28, 0xb8, 0x0e, 0xf1, 0x21, 0xc3, 0x0d, 0x27, 0x73, 0xf4, 0x52, 0x76, 0x70, 0x77, 0xa5, + 0x7d, 0xc6, 0xa6, 0xeb, 0x5c, 0x30, 0xed, 0x57, 0xcc, 0x96, 0xbf, 0x1b, 0x64, 0xad, 0x70, 0x02, + 0x94, 0x1f, 0x37, 0xa6, 0xae, 0xb4, 0x60, 0xea, 0xf8, 0xde, 0xc5, 0x58, 0x90, 0x75, 0x05, 0x2a, + 0xc1, 0x87, 0x30, 0xf3, 0x34, 0x13, 0xdb, 0x04, 0x0f, 0x1d, 0x99, 0x5a, 0x86, 0x7d, 0x8b, 0x73, + 0x11, 0x0a, 0x13, 0x7b, 0x8a, 0x20, 0xc3, 0x88, 0x42, 0x85, 0x4b, 0xf1, 0xfd, 0xdb, 0x09, 0xe8, + 0xce, 0x95, 0x6a, 0x8a, 0xed, 0x01, 0x6e, 0x33, 0xf9, 0xa3, 0xc2, 0xd6, 0x8d, 0xf0, 0xf6, 0xde, + 0x38, 0xf8, 0x1c, 0x04, 0x87, 0x6c, 0x21, 0xa9, 0xe0, 0x90, 0x15, 0x97, 0x44, 0xfa, 0xe8, 0x03, + 0x1e, 0xa7, 0x13, 0x34, 0x31, 0x05, 0x87, 0xac, 0x14, 0x3e, 0x5c, 0x27, 0x25, 0xd5, 0x40, 0x22, + 0xb8, 0x05, 0xdf, 0x34, 0xd5, 0x68, 0x8a, 0xc2, 0xc3, 0x1f, 0x69, 0xf2, 0x76, 0xbf, 0x35, 0x47, + 0xda, 0x92, 0xb9, 0x70, 0x26, 0x7b, 0xe5, 0xb5, 0xcc, 0xe1, 0x9e, 0xec, 0x27, 0xef, 0x00, 0x3a, + 0xdc, 0x18, 0xda, 0x47, 0xbd, 0xaf, 0x1d, 0xee, 0xca, 0x1c, 0xff, 0x4c, 0xef, 0xbb, 0x0a, 0xcf, + 0x4e, 0x1a, 0x9b, 0x6a, 0xe0, 0x87, 0x7e, 0xf8, 0x40, 0x0d, 0x1f, 0xe3, 0xbe, 0xc6, 0x7c, 0xaf, + 0x44, 0x6e, 0x9a, 0xc3, 0xd7, 0xdf, 0x1a, 0x3e, 0xd3, 0xc5, 0x37, 0x7c, 0x63, 0xa8, 0x53, 0xb1, + 0x76, 0x2c, 0x76, 0x09, 0xa8, 0x28, 0x10, 0x09, 0x6f, 0x53, 0x29, 0xe4, 0xcd, 0xb2, 0x41, 0x5e, + 0x63, 0x34, 0xb5, 0x44, 0x02, 0xd0, 0x23, 0xfe, 0x6c, 0xa1, 0xb8, 0xb4, 0x1a, 0x1c, 0xcd, 0x83, + 0xf7, 0xb8, 0x1b, 0x43, 0xdd, 0x24, 0xf5, 0xc6, 0x50, 0xf7, 0xa2, 0x74, 0xff, 0x80, 0xdc, 0xa2, + 0x46, 0x53, 0xfa, 0xd0, 0x2e, 0xbd, 0xbf, 0xff, 0xc6, 0x50, 0xd7, 0x62, 0x96, 0x92, 0xe9, 0x7d, + 0x17, 0x52, 0x80, 0x47, 0xd0, 0xf7, 0x9d, 0x48, 0xf7, 0x1f, 0xa0, 0xfe, 0xea, 0xa1, 0x55, 0x71, + 0x25, 0x2a, 0x22, 0xfe, 0xef, 0x88, 0xed, 0x41, 0x61, 0xdd, 0x62, 0x4d, 0x5e, 0xe8, 0x87, 0x14, + 0xe9, 0x5e, 0xb8, 0xb1, 0x0d, 0x7f, 0xfa, 0xb9, 0x7e, 0x7e, 0x7f, 0xfa, 0x1a, 0x26, 0x1d, 0x46, + 0x53, 0x06, 0x9d, 0x5c, 0xa4, 0x40, 0x69, 0xf1, 0x79, 0x54, 0x12, 0x0f, 0xb4, 0xa8, 0xcd, 0xe1, + 0x1d, 0x60, 0x85, 0x50, 0x04, 0xee, 0x7e, 0x8d, 0x44, 0x49, 0x82, 0x97, 0x53, 0xd0, 0x28, 0xb8, + 0x7a, 0xbc, 0x31, 0xd4, 0x95, 0xe9, 0x69, 0xd7, 0xcf, 0x9e, 0x7f, 0x70, 0xd1, 0x22, 0x7b, 0xd3, + 0xd2, 0x22, 0xc5, 0xa8, 0x2d, 0xee, 0x14, 0xd0, 0xb4, 0xe4, 0x96, 0xd8, 0x4b, 0x32, 0x7b, 0x22, + 0x8e, 0x41, 0x85, 0x7a, 0xfd, 0x6d, 0xd6, 0xe4, 0x26, 0xbf, 0x3d, 0x57, 0x7a, 0x0c, 0x82, 0x6d, + 0x40, 0xa4, 0x40, 0x80, 0x1d, 0xd2, 0xe3, 0x07, 0x7a, 0xcf, 0x05, 0x2b, 0xe0, 0xa5, 0xfb, 0x7b, + 0x87, 0xdf, 0xf9, 0x50, 0x3f, 0x70, 0xda, 0x28, 0xa8, 0xd8, 0xdb, 0xab, 0xc5, 0xd7, 0x44, 0xf4, + 0x90, 0xdf, 0x0d, 0x4b, 0x8d, 0xb0, 0xab, 0x40, 0xe1, 0xbb, 0x77, 0x53, 0xa8, 0x81, 0x28, 0x41, + 0xff, 0xc4, 0x43, 0xde, 0x7f, 0xe7, 0x54, 0xfc, 0x71, 0xd3, 0xd8, 0xa7, 0x2d, 0x34, 0x76, 0x7e, + 0x2e, 0xb6, 0xe7, 0x2e, 0x87, 0x8b, 0xb3, 0x51, 0x0b, 0xb5, 0xed, 0x12, 0xd0, 0x74, 0xa7, 0x7a, + 0xf8, 0x66, 0x01, 0x80, 0x0c, 0xc1, 0xcc, 0x29, 0x54, 0x56, 0x70, 0x50, 0x49, 0x63, 0x14, 0x1b, + 0x20, 0x35, 0x1d, 0x15, 0xa5, 0x62, 0x29, 0x7a, 0xe5, 0x2e, 0x54, 0xe0, 0x43, 0xac, 0xca, 0x1f, + 0x63, 0x1a, 0x1f, 0x8d, 0xc4, 0x41, 0x22, 0x0c, 0xe7, 0x2f, 0x04, 0x54, 0xc2, 0x92, 0xc4, 0x99, + 0xa8, 0x18, 0x73, 0xd4, 0x94, 0xf6, 0x17, 0x2a, 0xf4, 0x4b, 0x9c, 0x8c, 0x3c, 0xe1, 0x38, 0x65, + 0xcf, 0x3c, 0xe1, 0xb8, 0x28, 0xa2, 0xc2, 0x70, 0x7c, 0xdb, 0x43, 0x54, 0xf9, 0x4e, 0x7e, 0xe3, + 0x81, 0xe2, 0xd2, 0xdc, 0x3b, 0x13, 0xe3, 0x1b, 0x0f, 0xd4, 0xa4, 0x18, 0x93, 0x18, 0xe6, 0xce, + 0x44, 0xc5, 0x31, 0x78, 0x97, 0x42, 0xdf, 0x97, 0xc0, 0x97, 0xf8, 0x18, 0x2a, 0x25, 0x92, 0x0c, + 0x39, 0xa1, 0x06, 0xa8, 0x32, 0x7d, 0x8e, 0xd3, 0x2c, 0xea, 0x59, 0x21, 0xc5, 0x2c, 0xef, 0x5b, + 0x82, 0x26, 0x59, 0xf2, 0xc8, 0xd8, 0x61, 0x3e, 0x93, 0x14, 0x4f, 0x38, 0xe4, 0x64, 0xcf, 0xed, + 0xfb, 0xaa, 0x98, 0x98, 0x2e, 0xf3, 0xdc, 0x43, 0x63, 0x28, 0xf9, 0xd3, 0x01, 0xf6, 0xd3, 0x01, + 0x76, 0x3b, 0x1d, 0x60, 0xcf, 0xd8, 0x0e, 0x30, 0x62, 0xdc, 0x64, 0x1e, 0x60, 0xd5, 0x8e, 0x07, + 0x18, 0xdf, 0x1c, 0x2d, 0x40, 0xee, 0x19, 0x26, 0xa1, 0x61, 0xae, 0x61, 0x46, 0xc1, 0x11, 0x69, + 0x8e, 0xe3, 0xf1, 0xd1, 0xd8, 0x40, 0x0f, 0x90, 0x2f, 0x3d, 0x68, 0x9e, 0x6b, 0x0b, 0x3f, 0xee, + 0x73, 0xe4, 0x19, 0xcb, 0x39, 0xf2, 0x40, 0x9e, 0x73, 0x84, 0x5f, 0x95, 0xb1, 0x1c, 0x27, 0xdd, + 0x02, 0x9a, 0x95, 0xa7, 0xfa, 0x77, 0x76, 0xaa, 0x2c, 0xb1, 0x9c, 0x2a, 0xf3, 0x9c, 0xe8, 0x71, + 0x63, 0x43, 0x92, 0x51, 0x0f, 0x3a, 0xb8, 0x66, 0x34, 0x25, 0x27, 0xc3, 0xf5, 0x88, 0xa9, 0x44, + 0x85, 0xad, 0xaa, 0xe1, 0xf0, 0xc1, 0x66, 0x38, 0xbc, 0x5a, 0xc5, 0x8d, 0xe2, 0x12, 0xbe, 0xdf, + 0xa0, 0x42, 0xfc, 0x25, 0xce, 0x41, 0x88, 0xd0, 0xb5, 0x8d, 0x29, 0x47, 0xb9, 0xc2, 0x5d, 0xa8, + 0x04, 0xb2, 0xc3, 0xb9, 0x82, 0x05, 0xb1, 0x02, 0x95, 0x1a, 0x0f, 0xca, 0xe8, 0x19, 0x36, 0x61, + 0xd3, 0xd6, 0xba, 0xf0, 0x8e, 0xc6, 0x90, 0xaf, 0xbd, 0x00, 0xcd, 0x5c, 0xa9, 0xa6, 0xf0, 0xb0, + 0x93, 0xf0, 0x02, 0xe9, 0xc7, 0x75, 0x04, 0xfc, 0x1a, 0x8e, 0x69, 0xee, 0x08, 0x18, 0x6d, 0x2f, + 0xc1, 0xb6, 0xd5, 0xa8, 0x25, 0x4d, 0x82, 0x1d, 0x4b, 0xb2, 0x27, 0x90, 0x2c, 0x83, 0x85, 0x50, + 0x74, 0x59, 0x3e, 0xe9, 0x7e, 0x70, 0x1e, 0xcd, 0x88, 0x42, 0x92, 0x4a, 0x13, 0x7a, 0x06, 0xf4, + 0x13, 0x17, 0x86, 0xfb, 0xde, 0xcb, 0xbc, 0xda, 0x41, 0xdd, 0xbe, 0x5c, 0xf7, 0x90, 0x7b, 0xa4, + 0xb5, 0x8d, 0x1f, 0x37, 0x7d, 0x58, 0x6d, 0xd0, 0x07, 0x47, 0x3f, 0x2e, 0x8c, 0x41, 0xfb, 0x55, + 0x38, 0xb5, 0x05, 0xc3, 0xfe, 0x68, 0x44, 0xe1, 0xff, 0x13, 0xd0, 0xd4, 0xdc, 0x3a, 0x3f, 0x02, + 0xe6, 0xce, 0x20, 0x12, 0x25, 0xa3, 0x12, 0x89, 0x2f, 0x8a, 0xc8, 0x65, 0x85, 0xc8, 0xb3, 0x48, + 0x73, 0x5b, 0xd4, 0xe0, 0xd6, 0x1f, 0x15, 0x22, 0xaf, 0x37, 0xc2, 0xea, 0x81, 0x0c, 0x7e, 0x99, + 0x26, 0xd7, 0x1a, 0x61, 0xf5, 0x16, 0x35, 0x36, 0x6d, 0x5b, 0x0a, 0x5c, 0x9a, 0xe1, 0x91, 0xbd, + 0xef, 0xaa, 0xc1, 0x2c, 0xf1, 0x6c, 0x92, 0xde, 0x75, 0x75, 0xa4, 0xe3, 0x80, 0x11, 0x67, 0xef, + 0x39, 0x54, 0x82, 0x77, 0x9c, 0x53, 0x52, 0x93, 0xb8, 0x86, 0x46, 0x22, 0x69, 0xfa, 0xa1, 0x71, + 0x35, 0x6d, 0xd4, 0x15, 0x5b, 0xd0, 0x84, 0xad, 0xea, 0x76, 0xd2, 0x76, 0x11, 0x69, 0x9b, 0x48, + 0x3b, 0x59, 0x9a, 0xf4, 0x84, 0xde, 0x71, 0x65, 0xe4, 0x8d, 0x8b, 0x7a, 0xef, 0x71, 0xd6, 0xfe, + 0xf0, 0xf9, 0x77, 0x33, 0x6f, 0x1f, 0xd6, 0xf7, 0x0e, 0x98, 0x97, 0xd1, 0xc3, 0x07, 0x6a, 0x00, + 0x70, 0xb3, 0xbd, 0x9d, 0x46, 0x79, 0xa6, 0x55, 0xa3, 0x2d, 0xb9, 0x5c, 0xb6, 0x8b, 0x6f, 0xea, + 0x65, 0x1b, 0x33, 0x5f, 0xe8, 0x61, 0xbf, 0x2b, 0x18, 0x4a, 0xb3, 0x20, 0xb8, 0x98, 0xf3, 0x6d, + 0xfb, 0xaa, 0x87, 0x08, 0xbf, 0x73, 0x6b, 0xfe, 0xb8, 0xc9, 0xe0, 0x72, 0x0b, 0x19, 0x74, 0xbd, + 0xba, 0x8e, 0x46, 0xfe, 0xfe, 0x4c, 0x40, 0x65, 0x6b, 0x62, 0xa9, 0xf0, 0xe6, 0xed, 0xf5, 0xb1, + 0xe8, 0xe6, 0x70, 0x8b, 0xb8, 0x0a, 0x15, 0x27, 0x89, 0x1d, 0x07, 0xc5, 0xf6, 0xa5, 0x9a, 0xbc, + 0xd8, 0x4f, 0x93, 0xa4, 0xfb, 0xc1, 0x64, 0x7d, 0xa4, 0xbd, 0x3b, 0x7b, 0xea, 0x1c, 0x5c, 0x2b, + 0x20, 0x9c, 0x25, 0xa4, 0x67, 0xbb, 0x77, 0x43, 0x41, 0x85, 0x56, 0x10, 0x1f, 0x40, 0xc5, 0xb8, + 0x1b, 0x26, 0x03, 0xad, 0xbb, 0x43, 0x93, 0xa7, 0xfa, 0x69, 0x92, 0x44, 0xff, 0x2a, 0xf4, 0xaf, + 0xf8, 0x04, 0x9a, 0x18, 0x20, 0xab, 0xb9, 0x2e, 0xb6, 0x55, 0x8d, 0xf2, 0xae, 0xdf, 0xf8, 0x74, + 0x89, 0xff, 0x50, 0xf8, 0x0f, 0xdf, 0x01, 0x0f, 0x42, 0x30, 0x19, 0xc2, 0x3f, 0x2d, 0x33, 0x6c, + 0xdb, 0x05, 0xb2, 0x91, 0x10, 0xaf, 0x87, 0xbe, 0x94, 0x29, 0xa7, 0xc1, 0x48, 0xe0, 0xbd, 0xcc, + 0x50, 0xbb, 0x7e, 0xb8, 0x0f, 0xa6, 0x65, 0x98, 0xb9, 0xff, 0x1c, 0x15, 0xa5, 0xc2, 0xa9, 0x08, + 0x53, 0x54, 0x93, 0x38, 0x9e, 0x90, 0x22, 0x55, 0x40, 0x51, 0xf2, 0xa1, 0x1f, 0xb8, 0x92, 0x1e, + 0xd8, 0x6f, 0x18, 0xc3, 0x28, 0x50, 0x04, 0xa3, 0xd5, 0x84, 0x20, 0xbd, 0xd8, 0x15, 0x98, 0x31, + 0x7e, 0x59, 0x9a, 0xf4, 0x6b, 0x68, 0x02, 0x2e, 0x73, 0xf0, 0x84, 0xac, 0xca, 0x0b, 0xc7, 0x3e, + 0xe8, 0x8a, 0x47, 0x7a, 0xda, 0x33, 0x97, 0x77, 0xc1, 0x13, 0x33, 0x58, 0x5e, 0x28, 0xfb, 0x55, + 0xfb, 0x2e, 0xe3, 0x1d, 0x02, 0xbe, 0x92, 0x90, 0xf5, 0xa7, 0x57, 0x92, 0x0b, 0x67, 0xb2, 0x9d, + 0xfb, 0x14, 0xd6, 0x87, 0xef, 0xe2, 0x64, 0x34, 0x19, 0xd6, 0x83, 0xbd, 0x8f, 0x15, 0x9f, 0x46, + 0x53, 0xa3, 0x96, 0x14, 0xc3, 0x2e, 0x82, 0xac, 0x8e, 0x2d, 0x53, 0x9a, 0x0c, 0xe3, 0x84, 0xa6, + 0x1b, 0x1b, 0x14, 0x5b, 0x09, 0xc3, 0x55, 0x9f, 0xc7, 0xe6, 0xaa, 0x8f, 0xaf, 0x6a, 0x71, 0xd5, + 0xf7, 0x5b, 0xde, 0x2d, 0x06, 0xac, 0xce, 0x2a, 0x4d, 0x6e, 0xe4, 0x43, 0xc2, 0xfe, 0x9c, 0xaf, + 0x9c, 0xe9, 0x6c, 0x07, 0x3f, 0x46, 0x86, 0x4b, 0x83, 0x1b, 0x43, 0x5d, 0xc3, 0x7d, 0xe7, 0xe0, + 0x77, 0xba, 0x7f, 0x60, 0xf8, 0xf5, 0x93, 0x23, 0x1f, 0xf7, 0x1b, 0xb9, 0x7c, 0x7c, 0xd8, 0x33, + 0x02, 0x42, 0x74, 0xcc, 0xdb, 0x0d, 0xff, 0x36, 0xed, 0x82, 0x26, 0xff, 0xde, 0xcf, 0xa5, 0x4b, + 0x31, 0x0a, 0xd4, 0xce, 0x21, 0x4b, 0x36, 0x6d, 0xdd, 0xd8, 0x1a, 0x8b, 0x86, 0x53, 0xb1, 0xc4, + 0x46, 0x75, 0x9b, 0x1a, 0x4d, 0x7d, 0xd5, 0xce, 0x27, 0xb5, 0xaa, 0xa9, 0x44, 0x38, 0x98, 0x5c, + 0xe8, 0xcd, 0xf4, 0x7c, 0x90, 0x39, 0x79, 0x4e, 0xbf, 0xb4, 0x07, 0x6a, 0x25, 0x52, 0x2f, 0x7f, + 0xd5, 0xbe, 0x53, 0x6d, 0x0d, 0x84, 0x23, 0x5f, 0xb5, 0xef, 0xdc, 0x16, 0x0b, 0x07, 0xd5, 0x6c, + 0x6f, 0x67, 0xe6, 0xd8, 0x55, 0x7d, 0xe8, 0x90, 0xc2, 0x75, 0x2e, 0x3e, 0x4c, 0x1f, 0x27, 0x83, + 0x75, 0x12, 0x7d, 0x61, 0xad, 0x26, 0x83, 0x52, 0xb9, 0xb1, 0x0a, 0x99, 0x93, 0xd7, 0x2d, 0x31, + 0xa9, 0xe1, 0x05, 0xf3, 0xc3, 0x06, 0x88, 0x03, 0xc1, 0x06, 0x5f, 0xb4, 0x14, 0xc4, 0xc5, 0x3c, + 0xc0, 0x7d, 0x50, 0x40, 0xc5, 0x41, 0x82, 0xf1, 0x94, 0xb3, 0x98, 0x6d, 0x97, 0x6e, 0x98, 0x54, + 0x01, 0x5e, 0x4e, 0xd1, 0x0a, 0xd2, 0x53, 0x3c, 0xfe, 0x83, 0x9a, 0xc9, 0x00, 0x44, 0x83, 0x10, + 0xd0, 0x81, 0x93, 0xb9, 0x82, 0x07, 0x2b, 0x28, 0x69, 0x14, 0x80, 0xc6, 0x14, 0xda, 0xa8, 0xb8, + 0x05, 0x4d, 0x0a, 0x52, 0xb3, 0x70, 0x32, 0x0c, 0xca, 0xb8, 0x54, 0x38, 0x0f, 0x8b, 0x90, 0x36, + 0x82, 0x91, 0xd6, 0x5a, 0x92, 0x08, 0xc6, 0xe3, 0x60, 0x59, 0x41, 0xe7, 0x6c, 0x2d, 0x82, 0x7b, + 0x0a, 0x51, 0x23, 0x40, 0xe8, 0xa9, 0x74, 0x8c, 0x3d, 0x59, 0x6a, 0xe1, 0x9e, 0x4e, 0x8f, 0x9c, + 0x38, 0x6b, 0xed, 0xc9, 0x52, 0x44, 0xfc, 0x1d, 0x9a, 0x02, 0x5d, 0xaf, 0x61, 0x36, 0x35, 0xe4, + 0x09, 0x5c, 0xfe, 0xbe, 0x88, 0xa1, 0x5b, 0x6e, 0x3d, 0x69, 0x06, 0xf3, 0x2b, 0x7c, 0x3a, 0x73, + 0xec, 0x92, 0xfe, 0xce, 0xdb, 0xb4, 0xc3, 0xdc, 0x72, 0xb8, 0x4b, 0x18, 0x83, 0xd9, 0xe5, 0xc4, + 0x31, 0x76, 0x99, 0x53, 0x8f, 0xeb, 0x92, 0xce, 0x94, 0x76, 0x99, 0x53, 0x0e, 0x77, 0xd9, 0x66, + 0xf8, 0xc1, 0x85, 0x2e, 0xcb, 0xc6, 0xd8, 0x65, 0x4e, 0x3d, 0x7e, 0x96, 0xc4, 0x74, 0x99, 0x75, + 0x99, 0x53, 0x4e, 0xfc, 0x3d, 0x9a, 0x46, 0x82, 0x9a, 0x37, 0x07, 0x03, 0x11, 0x75, 0x6d, 0x5b, + 0x8a, 0xb0, 0x2c, 0x93, 0x46, 0xed, 0x74, 0x89, 0x26, 0x2f, 0xf2, 0xdb, 0x6b, 0x4a, 0xb3, 0xcc, + 0x6e, 0x3b, 0xdf, 0xd7, 0x2f, 0x5e, 0x85, 0x4f, 0xda, 0xb9, 0xbd, 0xbc, 0xf8, 0x0a, 0x9a, 0x6a, + 0x26, 0x36, 0x92, 0xf8, 0x0c, 0x6e, 0x4f, 0xf3, 0xc6, 0xd5, 0x7b, 0x76, 0xc8, 0xd6, 0xbb, 0xad, + 0x23, 0xb1, 0x5d, 0xc0, 0x1c, 0x43, 0x50, 0x0d, 0x6f, 0x53, 0x13, 0x49, 0x1a, 0xe1, 0x79, 0x93, + 0x26, 0x6f, 0xf4, 0x9b, 0xa9, 0x92, 0x42, 0xb1, 0xef, 0xe0, 0xb9, 0xcc, 0x1b, 0x9f, 0x0d, 0xb7, + 0x77, 0x54, 0xe9, 0x87, 0xfa, 0x32, 0x5d, 0x7b, 0xf5, 0x8b, 0xdd, 0x37, 0x86, 0xde, 0x1a, 0xde, + 0x7f, 0x2e, 0x73, 0xfc, 0x34, 0x7c, 0x56, 0x79, 0xf5, 0x43, 0x7d, 0xf4, 0x08, 0x21, 0x80, 0x5c, + 0xc3, 0x6d, 0x3a, 0x79, 0x95, 0x69, 0x58, 0xdc, 0x9b, 0xcd, 0xf3, 0x7e, 0x90, 0xa6, 0x5a, 0xfd, + 0x20, 0x95, 0x9b, 0xef, 0x44, 0xa7, 0x41, 0x0e, 0x7b, 0x08, 0x3a, 0xd7, 0x12, 0x91, 0x4a, 0x04, + 0xff, 0x4c, 0x5c, 0xe0, 0xb9, 0xb9, 0x96, 0xc7, 0x9e, 0x77, 0x40, 0xbe, 0x99, 0x52, 0x1b, 0xd4, + 0xe4, 0x17, 0xd1, 0x0b, 0xfe, 0x9c, 0xf3, 0x4c, 0x5a, 0xc5, 0x1f, 0x13, 0x55, 0xde, 0x74, 0xff, + 0xe0, 0xf0, 0x7b, 0x3b, 0xe1, 0x91, 0x9d, 0xde, 0x77, 0x15, 0x4e, 0x52, 0xe0, 0xb3, 0xa1, 0x60, + 0x25, 0x4c, 0xf3, 0xab, 0xf6, 0x9d, 0xe6, 0xaa, 0xf7, 0x76, 0x02, 0x2f, 0xb0, 0xc0, 0xf7, 0xd7, + 0x93, 0xd0, 0xac, 0x7a, 0x8a, 0x51, 0x7c, 0x37, 0xec, 0x36, 0xb4, 0x99, 0x3f, 0xb7, 0x04, 0x16, + 0x9e, 0xda, 0xcf, 0x9f, 0x5b, 0x73, 0x2c, 0x14, 0x9b, 0xb9, 0xd6, 0x66, 0xce, 0x71, 0xbf, 0xae, + 0x2b, 0x4f, 0xcc, 0x9c, 0x2a, 0x94, 0xb7, 0x4f, 0x75, 0xf0, 0x15, 0x68, 0x9e, 0x59, 0x8f, 0x58, + 0x8e, 0xd4, 0xf9, 0x4e, 0x47, 0x6a, 0xe6, 0xe4, 0x75, 0xce, 0x6f, 0xf9, 0x54, 0x81, 0x9e, 0xac, + 0xec, 0x24, 0x29, 0x18, 0xef, 0x49, 0xf2, 0xe7, 0x4e, 0xc7, 0xe4, 0x87, 0x3f, 0xf8, 0x31, 0xf9, + 0x75, 0x5d, 0x65, 0xe2, 0x3e, 0x65, 0x6a, 0x6e, 0xc3, 0x8a, 0x68, 0x6f, 0xd7, 0x72, 0xa2, 0x36, + 0x1b, 0x07, 0x63, 0xd1, 0xa8, 0x4e, 0x0d, 0xc7, 0x7c, 0x68, 0xda, 0xce, 0xa8, 0xe2, 0x9b, 0x76, + 0x46, 0x4d, 0xb8, 0x89, 0x67, 0x54, 0xc9, 0xcd, 0x3f, 0xa3, 0x4a, 0x6f, 0xfe, 0x19, 0x85, 0x7e, + 0x88, 0x33, 0x6a, 0xe2, 0x0f, 0x7a, 0x46, 0x95, 0xdd, 0xac, 0x33, 0x8a, 0xe3, 0x2e, 0x27, 0xdd, + 0x12, 0xdc, 0xa5, 0xf5, 0xd0, 0x9c, 0xfc, 0x03, 0x1f, 0x9a, 0x53, 0x2c, 0x87, 0x66, 0xed, 0x8b, + 0x9a, 0xfc, 0x3c, 0x7a, 0xce, 0x9f, 0xef, 0xe4, 0x31, 0x68, 0x06, 0x47, 0xc4, 0xbf, 0x14, 0xcc, + 0x13, 0xe3, 0x4b, 0x81, 0x90, 0xff, 0x2f, 0x05, 0x8e, 0x06, 0x7e, 0x29, 0xb0, 0x1e, 0x7c, 0xfd, + 0x1e, 0xf6, 0xde, 0x38, 0xb7, 0xf5, 0xdb, 0xc3, 0x8c, 0x7b, 0xbb, 0xdd, 0x1e, 0xbb, 0x70, 0x8c, + 0xf6, 0xd8, 0x0b, 0x35, 0xf9, 0x01, 0xbb, 0x3d, 0x76, 0xb9, 0xdd, 0x1e, 0xdb, 0xd9, 0x0c, 0xdb, + 0xf7, 0x9a, 0x07, 0xcd, 0x6a, 0xa0, 0xd4, 0xc4, 0x89, 0x25, 0xa8, 0xb7, 0xb3, 0x04, 0x10, 0xdb, + 0xdb, 0x64, 0x09, 0x66, 0xe4, 0xb0, 0x01, 0x74, 0x41, 0xb8, 0xf3, 0xde, 0xe9, 0x56, 0xee, 0xf9, + 0x56, 0xb7, 0xf2, 0xda, 0x66, 0x4d, 0x6e, 0x42, 0x6b, 0xfc, 0xf9, 0xc6, 0x6e, 0x1c, 0x0f, 0x5c, + 0x5b, 0x56, 0xa0, 0x9a, 0x1c, 0x8d, 0x85, 0x54, 0xb3, 0x51, 0x02, 0x47, 0xce, 0x0d, 0xfe, 0x04, + 0x47, 0xa3, 0xc0, 0xd1, 0xdf, 0x78, 0x20, 0x44, 0x85, 0x33, 0x14, 0x3d, 0x64, 0x87, 0x22, 0x90, + 0x02, 0x9a, 0x50, 0xe4, 0x10, 0x60, 0xe1, 0x7b, 0x01, 0x9c, 0x8b, 0x82, 0x26, 0x7f, 0x20, 0xa0, + 0xf3, 0x82, 0xdf, 0x7d, 0xbc, 0xd2, 0x1f, 0x53, 0x1b, 0x53, 0x8e, 0x1c, 0x81, 0x90, 0xf2, 0xc6, + 0x50, 0x97, 0xfe, 0xde, 0xae, 0xcc, 0xdb, 0x3d, 0xfa, 0x99, 0x0f, 0xf5, 0x3d, 0x27, 0xd2, 0x03, + 0x7b, 0xf0, 0x92, 0x9c, 0xde, 0x0b, 0xfe, 0x3a, 0x70, 0xee, 0xbe, 0x13, 0x24, 0x5c, 0xe6, 0x3e, + 0x48, 0xa7, 0x8e, 0x63, 0x48, 0x6b, 0x66, 0xdd, 0x8e, 0x0b, 0x20, 0xdf, 0x22, 0x36, 0x00, 0x03, + 0xcc, 0xf5, 0xf5, 0x85, 0x91, 0xbd, 0x87, 0x98, 0x33, 0x44, 0xce, 0x8b, 0xea, 0xbf, 0xf5, 0xc0, + 0x2b, 0xbc, 0xdb, 0x13, 0x24, 0x9f, 0xb6, 0x28, 0x8b, 0xe7, 0x3a, 0x9f, 0x93, 0x6c, 0x52, 0x96, + 0x97, 0x56, 0x96, 0xab, 0x00, 0x28, 0x18, 0xe1, 0xa5, 0xd5, 0x2a, 0x4d, 0x6e, 0x44, 0x2b, 0xfd, + 0x79, 0x16, 0x85, 0xc5, 0x51, 0xb0, 0xec, 0x9f, 0xdb, 0x2b, 0xab, 0x22, 0x62, 0x8a, 0xd0, 0x94, + 0x88, 0x6d, 0x0b, 0x87, 0xd4, 0x04, 0x8b, 0x2a, 0xb2, 0x1e, 0x67, 0x32, 0xf0, 0xfd, 0x1d, 0x89, + 0x10, 0x42, 0xf2, 0x0d, 0xf8, 0x7d, 0x5a, 0x93, 0xd7, 0xf8, 0xb9, 0x64, 0xe9, 0x49, 0x1a, 0x73, + 0xe4, 0xf2, 0x69, 0x96, 0x78, 0x63, 0xa8, 0x0b, 0x2e, 0x10, 0xf4, 0xb9, 0xc2, 0xf6, 0xb6, 0x68, + 0x2a, 0x5c, 0x93, 0x54, 0x23, 0x9b, 0x6b, 0x82, 0x89, 0x9a, 0x4d, 0xc1, 0xe4, 0x46, 0x16, 0x92, + 0x7b, 0x63, 0x3c, 0x16, 0x8b, 0x28, 0x5c, 0x6b, 0x62, 0x2d, 0x5e, 0xea, 0x16, 0xf3, 0x11, 0x24, + 0xb8, 0x41, 0x82, 0x24, 0x69, 0x46, 0xa6, 0x67, 0x40, 0x7f, 0x7b, 0x3f, 0x46, 0xcb, 0x9e, 0x0b, + 0xd9, 0xee, 0xdd, 0x7a, 0xcf, 0x25, 0xfd, 0xd4, 0x29, 0x85, 0x66, 0x8b, 0xcb, 0x50, 0x19, 0xb3, + 0xc5, 0x25, 0x97, 0x9d, 0x02, 0xd3, 0x3b, 0xae, 0x25, 0x43, 0x2a, 0x86, 0x76, 0x14, 0x4b, 0xaa, + 0xf8, 0xaa, 0x80, 0x8a, 0x88, 0x4f, 0x20, 0x4a, 0x3c, 0x66, 0xdb, 0xee, 0x16, 0xeb, 0x39, 0xab, + 0x98, 0xb5, 0x9a, 0x5c, 0xef, 0x87, 0xf2, 0x52, 0x2d, 0x38, 0x48, 0xcf, 0x1e, 0xdc, 0x5b, 0xe5, + 0x35, 0x56, 0xc3, 0x48, 0xd3, 0x2f, 0x1d, 0x4a, 0x0f, 0x1c, 0xcc, 0xf6, 0x76, 0xa6, 0x07, 0x0e, + 0x92, 0xf2, 0x86, 0xc9, 0x78, 0xe6, 0xf2, 0xe9, 0xaf, 0xeb, 0x8a, 0xfd, 0x85, 0xe5, 0xa1, 0xca, + 0x9f, 0x29, 0xd0, 0x96, 0x78, 0x42, 0xe0, 0xc3, 0xef, 0x14, 0x8d, 0x61, 0x24, 0x60, 0xa7, 0x6e, + 0x06, 0xe7, 0x59, 0x0d, 0x3d, 0xa7, 0xfb, 0x3f, 0xc8, 0x1c, 0xbd, 0xc4, 0x0d, 0x08, 0xd4, 0x3a, + 0xd9, 0xee, 0xdd, 0x74, 0x15, 0x8f, 0x5e, 0xc2, 0xbb, 0xc4, 0x0d, 0xce, 0x68, 0x82, 0x1f, 0x20, + 0x1f, 0xd1, 0x07, 0xdf, 0x1b, 0xcf, 0x0b, 0xe8, 0xac, 0xe0, 0x1f, 0x0d, 0x74, 0xa4, 0x36, 0x4b, + 0x3c, 0x9a, 0xcb, 0xa7, 0xc1, 0xc3, 0x3e, 0xf4, 0x4c, 0x3c, 0xeb, 0x02, 0xdf, 0x47, 0x3c, 0xe4, + 0xde, 0xe7, 0x65, 0x7a, 0x71, 0x22, 0x0e, 0x07, 0xbf, 0x4d, 0xc4, 0x40, 0x48, 0xdf, 0x3b, 0x90, + 0xfd, 0xe8, 0x3d, 0xfd, 0xf0, 0x3e, 0x30, 0x38, 0xe2, 0xc7, 0x65, 0xba, 0xec, 0xe7, 0x9a, 0xb2, + 0x10, 0x90, 0x5d, 0x05, 0xc8, 0xeb, 0x3e, 0xcc, 0xdb, 0x31, 0xe4, 0xbb, 0xeb, 0x5b, 0x14, 0x08, + 0xdd, 0x4f, 0xe8, 0xc7, 0xdd, 0x74, 0x8d, 0xd9, 0x73, 0x03, 0xea, 0xc1, 0x99, 0x2c, 0x52, 0xe6, + 0xd5, 0x0e, 0x7d, 0xcf, 0xa7, 0x94, 0x9c, 0xd0, 0xd7, 0xe2, 0xa3, 0x2e, 0x91, 0xe4, 0xb7, 0x44, + 0x45, 0xba, 0x7c, 0xda, 0xb1, 0x51, 0x37, 0x32, 0xf3, 0x4f, 0x0b, 0x51, 0x59, 0x1d, 0x73, 0x54, + 0x48, 0x9f, 0xc2, 0x18, 0x81, 0x84, 0x98, 0xc9, 0x8a, 0x19, 0x59, 0xc8, 0x8b, 0x26, 0xd2, 0x0f, + 0x33, 0x4c, 0xb3, 0xc2, 0x27, 0x71, 0x25, 0xea, 0xf1, 0xbe, 0x15, 0x58, 0x4a, 0xe0, 0x24, 0xd1, + 0x87, 0xca, 0xe8, 0xe7, 0xfa, 0x24, 0xbe, 0x16, 0x50, 0x97, 0xdf, 0x7c, 0x9a, 0x38, 0x1d, 0x82, + 0x36, 0x84, 0x98, 0xdb, 0x4f, 0xf2, 0x81, 0x79, 0xf9, 0x4d, 0xe1, 0x1d, 0x9c, 0xca, 0x9e, 0x7d, + 0x8a, 0x15, 0xa8, 0x64, 0x53, 0x78, 0x07, 0xb4, 0x07, 0xfe, 0xbe, 0x8d, 0x6f, 0x3c, 0x23, 0x23, + 0xc0, 0x11, 0xf8, 0x5f, 0xe3, 0x23, 0x1e, 0x79, 0xd1, 0x44, 0xfa, 0x41, 0xda, 0xa5, 0xee, 0x8a, + 0xb8, 0x24, 0x71, 0x3e, 0x9a, 0x44, 0x3f, 0x15, 0xa0, 0x7c, 0x10, 0xc0, 0xd6, 0x9a, 0x88, 0x67, + 0x45, 0x13, 0x60, 0x14, 0x13, 0x61, 0x56, 0x7c, 0x1a, 0x1e, 0x3f, 0xb9, 0xb3, 0x35, 0x86, 0xc0, + 0x33, 0x9a, 0xc2, 0x3e, 0xf1, 0x18, 0x5b, 0x8c, 0xe0, 0xd7, 0x93, 0x60, 0x8c, 0x46, 0x02, 0x6e, + 0xdb, 0x42, 0x38, 0x27, 0x43, 0xdb, 0x16, 0xea, 0x38, 0x1d, 0x15, 0xed, 0x88, 0x45, 0x55, 0x2a, + 0x9a, 0x54, 0xe0, 0x83, 0x88, 0xff, 0x62, 0xd1, 0x64, 0x5b, 0x2b, 0x99, 0xfc, 0x54, 0x2a, 0xfe, + 0x33, 0x52, 0xc4, 0x99, 0xa8, 0x18, 0x93, 0xf8, 0xc6, 0x10, 0x95, 0x1b, 0xd2, 0x2f, 0x5c, 0x8f, + 0x74, 0x0f, 0x73, 0xa1, 0x62, 0x43, 0x33, 0x45, 0x9c, 0x8a, 0x0a, 0xda, 0x12, 0x11, 0x2a, 0x2f, + 0xc4, 0x3f, 0xa5, 0xa1, 0xd3, 0x1e, 0x34, 0x99, 0x4a, 0x37, 0x56, 0xc3, 0x29, 0x2a, 0xfe, 0xb9, + 0x80, 0x26, 0xd5, 0x5b, 0x04, 0x2c, 0x36, 0x86, 0xcf, 0x92, 0xad, 0xa8, 0xbf, 0xab, 0xb8, 0x7b, + 0x94, 0x12, 0xc9, 0xb8, 0x6f, 0x9b, 0x26, 0xaf, 0x11, 0x27, 0xc1, 0xcd, 0x8c, 0xa6, 0x57, 0x2c, + 0xb3, 0x7c, 0xde, 0x18, 0xea, 0x82, 0x2b, 0x22, 0x08, 0xcc, 0xf4, 0x8e, 0x21, 0x7c, 0x79, 0xde, + 0xf9, 0xc6, 0xc8, 0xae, 0xf7, 0x68, 0x78, 0x0e, 0xad, 0x2b, 0xbb, 0xff, 0xa3, 0xec, 0x87, 0xfb, + 0xe1, 0x73, 0xd7, 0xbf, 0x4e, 0xbf, 0xee, 0x99, 0xe7, 0xab, 0xa8, 0xb1, 0xf6, 0x5d, 0xb3, 0x6d, + 0x31, 0x4b, 0xa9, 0x15, 0xfc, 0x62, 0xbb, 0x07, 0xcd, 0x54, 0xd4, 0x54, 0x62, 0xbb, 0x65, 0x48, + 0xeb, 0x02, 0xc9, 0xad, 0xa2, 0xed, 0x0d, 0xa7, 0xbd, 0x1c, 0x9e, 0xdc, 0x7d, 0x63, 0x29, 0x96, + 0x8c, 0xfb, 0x8e, 0x09, 0x9a, 0xfc, 0x1b, 0xf1, 0xae, 0x91, 0xbd, 0x07, 0x86, 0xfb, 0x8e, 0x5a, + 0x66, 0x06, 0xde, 0x34, 0x2b, 0x9e, 0x18, 0xd1, 0xf6, 0x61, 0x0a, 0xcb, 0x49, 0xb4, 0xf4, 0xb3, + 0x97, 0x87, 0x3f, 0x39, 0x07, 0xe1, 0x4b, 0xf0, 0xfc, 0xf7, 0x1e, 0xc8, 0x1c, 0xbb, 0x94, 0xee, + 0xdf, 0xaf, 0x1f, 0x3a, 0xc2, 0x17, 0x83, 0x06, 0xc8, 0x84, 0x17, 0xfb, 0xaa, 0xdc, 0x27, 0x5c, + 0xf3, 0x8a, 0xe1, 0xc8, 0xf9, 0xf7, 0x35, 0x09, 0x3c, 0x4c, 0xbc, 0x04, 0x7f, 0x26, 0xa0, 0xe9, + 0x44, 0xcf, 0x4f, 0x8c, 0x5f, 0xa8, 0xc3, 0x01, 0x7c, 0xd3, 0xb7, 0x59, 0xc8, 0x98, 0x79, 0x78, + 0xe2, 0x73, 0xf3, 0x65, 0x27, 0xe3, 0xbe, 0xa4, 0x26, 0xd7, 0x89, 0x77, 0x6d, 0x35, 0x12, 0xe1, + 0x2c, 0xcc, 0xb4, 0x9f, 0xcf, 0xbc, 0xdb, 0x9e, 0xf9, 0x74, 0x7f, 0xc5, 0xbd, 0x66, 0xd6, 0xf0, + 0xf5, 0xb7, 0x33, 0x07, 0xcf, 0xd1, 0x39, 0x5b, 0x8b, 0x91, 0x59, 0x55, 0x56, 0xdc, 0xe3, 0x38, + 0xab, 0x58, 0x5b, 0xa8, 0xc6, 0x6c, 0x05, 0x4f, 0x66, 0x97, 0x07, 0xcd, 0x72, 0x9a, 0x4c, 0x7d, + 0x2c, 0x1a, 0x55, 0x83, 0x29, 0x71, 0xbe, 0xfb, 0xa0, 0x69, 0x11, 0x3c, 0xb5, 0x7b, 0xc7, 0x50, + 0x2a, 0x19, 0xf7, 0x1d, 0x15, 0x34, 0xf9, 0x97, 0xa2, 0x97, 0x9b, 0xe2, 0x9e, 0x8e, 0x1a, 0xfa, + 0x9e, 0xfc, 0xe2, 0xf5, 0x91, 0xe3, 0x17, 0xb3, 0xaf, 0x7d, 0x96, 0x69, 0xdf, 0x59, 0x71, 0x1f, + 0x37, 0x53, 0x92, 0x4e, 0x67, 0x6a, 0x94, 0x86, 0x72, 0x64, 0xaa, 0x75, 0xe2, 0x93, 0x6e, 0x53, + 0x4d, 0xe2, 0xfd, 0x23, 0x6f, 0xed, 0x7f, 0xcf, 0x8a, 0x24, 0x2d, 0x5b, 0x1a, 0xa4, 0x93, 0xfc, + 0x4f, 0x02, 0x9a, 0xd4, 0xd8, 0x1a, 0x8f, 0x25, 0x52, 0xae, 0x38, 0x6a, 0xc9, 0x76, 0xc4, 0xd1, + 0x9c, 0x12, 0xc9, 0xb8, 0xef, 0x75, 0x41, 0x93, 0x43, 0xe2, 0x5d, 0x7a, 0xdf, 0x90, 0xde, 0x41, + 0x83, 0x16, 0x58, 0x21, 0x78, 0x25, 0x9f, 0x05, 0x73, 0xac, 0xa4, 0xb6, 0x3a, 0x67, 0xbb, 0xd3, + 0x03, 0x47, 0x58, 0xec, 0x20, 0x5c, 0x48, 0x7f, 0xed, 0xd4, 0xf0, 0xab, 0xd7, 0x6a, 0xbd, 0xcc, + 0xc9, 0x38, 0xb7, 0x8f, 0x0b, 0xc8, 0x42, 0xdc, 0xe7, 0xbb, 0x3b, 0x0f, 0x24, 0x87, 0xc9, 0xe8, + 0xf0, 0x8e, 0xef, 0xf1, 0xa0, 0x49, 0xcc, 0x79, 0x8f, 0xcb, 0x64, 0x2d, 0xd9, 0x8e, 0x93, 0xcd, + 0x29, 0x91, 0x8c, 0xfb, 0xfa, 0x04, 0x4d, 0x7e, 0x45, 0x9c, 0x04, 0xf2, 0x27, 0x46, 0x91, 0x7e, + 0x6b, 0xf9, 0x04, 0x5e, 0x03, 0xd4, 0xe7, 0x10, 0x54, 0x31, 0x3d, 0xd8, 0x01, 0x0a, 0x13, 0xea, + 0x2e, 0x88, 0x15, 0x20, 0xc6, 0xce, 0xdd, 0xc3, 0xe7, 0xdf, 0xd3, 0x0f, 0x1d, 0x49, 0x0f, 0x0e, + 0xa6, 0xaf, 0x1d, 0xa5, 0xa4, 0x8c, 0x38, 0x2f, 0xc4, 0x2c, 0xd6, 0xde, 0x0f, 0xf4, 0xd7, 0x2e, + 0xe8, 0x5d, 0xc7, 0xf4, 0xd7, 0x2e, 0xa4, 0xaf, 0xf5, 0x7c, 0xd5, 0xbe, 0x8b, 0xac, 0xc1, 0x03, + 0x15, 0xf7, 0x8d, 0x0d, 0x9b, 0xf1, 0x42, 0x74, 0x79, 0xd0, 0x34, 0x39, 0x14, 0x22, 0x46, 0xb8, + 0xeb, 0x62, 0x6c, 0x31, 0x6c, 0x76, 0x96, 0xac, 0x08, 0xe5, 0x1a, 0x2b, 0xbc, 0xee, 0x05, 0x80, + 0x19, 0xf1, 0x5d, 0x11, 0x34, 0x79, 0x87, 0x28, 0xa6, 0xfb, 0x5f, 0xcb, 0xbc, 0xfd, 0x19, 0x0c, + 0x1c, 0xa4, 0x74, 0x15, 0x21, 0x90, 0xe2, 0x35, 0x36, 0xe1, 0xeb, 0xc7, 0xe0, 0x09, 0xba, 0xbf, + 0xef, 0xbc, 0xad, 0xbf, 0x76, 0x1a, 0x4a, 0x54, 0xa6, 0x07, 0x8e, 0xd4, 0x6f, 0x58, 0x4d, 0x63, + 0xab, 0x6a, 0x5d, 0x8d, 0x0d, 0xf5, 0xe6, 0xfb, 0x7a, 0x92, 0xb8, 0x80, 0x04, 0xd1, 0xa7, 0x6b, + 0x93, 0x7d, 0xab, 0x5f, 0xef, 0xb8, 0x62, 0x2c, 0x06, 0x38, 0xab, 0x26, 0x2b, 0xb1, 0xc8, 0xf7, + 0xc0, 0x18, 0xe9, 0x5a, 0x34, 0x16, 0x52, 0xf1, 0x72, 0xfc, 0xef, 0x02, 0x9a, 0xd9, 0x60, 0xc8, + 0xae, 0x93, 0x2b, 0x12, 0xb1, 0x56, 0xb6, 0x26, 0x3e, 0xbb, 0x07, 0x64, 0xa3, 0x1c, 0x5b, 0x96, + 0x7b, 0xf2, 0x96, 0xa1, 0x2b, 0xb3, 0x57, 0xd0, 0xe4, 0xa7, 0xf1, 0xca, 0xec, 0xcf, 0x5d, 0x99, + 0xc7, 0xd8, 0xca, 0xe0, 0xfb, 0xd2, 0xc9, 0x76, 0x10, 0xf5, 0x42, 0x09, 0x3c, 0x40, 0x66, 0xc3, + 0x96, 0x1e, 0x38, 0x82, 0x8f, 0x2d, 0xeb, 0x92, 0x90, 0x09, 0x57, 0xfb, 0xc7, 0x33, 0x61, 0xb1, + 0xdf, 0x83, 0x66, 0x91, 0x77, 0xac, 0x2e, 0x53, 0x5e, 0x98, 0x3b, 0x1d, 0xae, 0x30, 0x2d, 0x63, + 0x99, 0x7e, 0xcd, 0x98, 0xcb, 0xd3, 0xa5, 0xf8, 0x5c, 0xd0, 0xe4, 0x97, 0xc4, 0xf2, 0x4c, 0xe7, + 0xd5, 0x91, 0xbd, 0x87, 0x1c, 0x16, 0xe4, 0x39, 0xb7, 0x9c, 0x4a, 0xbd, 0xab, 0x23, 0xb3, 0xff, + 0x23, 0xea, 0xc0, 0xa1, 0x73, 0x3f, 0xc6, 0x00, 0x88, 0xc8, 0xf8, 0xf6, 0x67, 0x50, 0xe2, 0xab, + 0xf6, 0x9d, 0xf5, 0xb2, 0xf1, 0x33, 0x67, 0xb1, 0xb2, 0xbd, 0x9d, 0x40, 0x2f, 0x1e, 0xf6, 0x3f, + 0xe8, 0xbe, 0x60, 0x49, 0xdb, 0x8a, 0x25, 0x6b, 0xaa, 0x6b, 0x36, 0xe1, 0x39, 0x89, 0xff, 0x87, + 0x80, 0xee, 0x58, 0xa9, 0x32, 0x4a, 0x97, 0x5c, 0xad, 0xa6, 0x02, 0xc4, 0xe6, 0xc9, 0xef, 0x60, + 0x2f, 0x9f, 0x5b, 0x88, 0x2d, 0xd7, 0x03, 0x63, 0x2a, 0x4b, 0x97, 0xea, 0x8f, 0x34, 0x79, 0x95, + 0x38, 0x9f, 0x8a, 0x62, 0xce, 0x76, 0xeb, 0xc7, 0x4e, 0x52, 0x6a, 0xd0, 0xbd, 0x5b, 0xef, 0x78, + 0x95, 0xf7, 0xf7, 0x52, 0x61, 0x96, 0x4a, 0xf7, 0x7f, 0xe0, 0x56, 0x8a, 0x4c, 0xff, 0x7e, 0x9f, + 0x2f, 0xdf, 0xf4, 0xab, 0x6b, 0x5a, 0xd5, 0x54, 0x00, 0xe3, 0xc5, 0x51, 0x0f, 0x44, 0x99, 0x23, + 0xdb, 0xd7, 0x18, 0x65, 0x00, 0xb2, 0x20, 0x77, 0x06, 0xf6, 0x32, 0x6c, 0xb2, 0xfe, 0xb1, 0x14, + 0xa5, 0x73, 0x3d, 0x2f, 0x68, 0xf2, 0xef, 0x44, 0x1f, 0x4c, 0x83, 0xd1, 0xcd, 0xfe, 0xfd, 0xf4, + 0x4d, 0x39, 0x17, 0x72, 0xb9, 0xe2, 0x29, 0x2a, 0x47, 0x01, 0x8e, 0xc6, 0xa9, 0x88, 0x21, 0xd4, + 0xca, 0x9c, 0x3a, 0x0c, 0x97, 0x53, 0xc3, 0x74, 0x4b, 0xdf, 0x77, 0x42, 0xbf, 0x7e, 0x2d, 0x7b, + 0xf4, 0xdc, 0x70, 0xdf, 0x39, 0xbd, 0x7d, 0x08, 0x30, 0x48, 0x1c, 0x17, 0x06, 0xbd, 0xef, 0x41, + 0xd3, 0xf1, 0x44, 0x56, 0x07, 0xc8, 0x8a, 0x99, 0x2b, 0xf3, 0x80, 0xd3, 0x74, 0x73, 0x4b, 0xb1, + 0xb5, 0xa9, 0x1a, 0x5b, 0x61, 0xba, 0x3a, 0x9f, 0x0a, 0x9a, 0xfc, 0x7b, 0xb1, 0xd2, 0x79, 0x75, + 0x5a, 0x49, 0x2d, 0xcb, 0x1a, 0x3d, 0xed, 0xb8, 0x46, 0xf6, 0x82, 0xe3, 0x5c, 0xa9, 0x1a, 0xb1, + 0x7a, 0x8c, 0x2b, 0x05, 0x5d, 0x89, 0x1f, 0x0a, 0x68, 0x92, 0x85, 0x16, 0xd8, 0xcf, 0x5c, 0x4b, + 0xb6, 0xe3, 0x99, 0x9b, 0x53, 0x22, 0x19, 0xf7, 0xad, 0xd7, 0xe4, 0xf9, 0xf8, 0x12, 0x70, 0x7a, + 0xe4, 0xc4, 0x59, 0x76, 0xe4, 0xde, 0x01, 0x9f, 0xd9, 0xce, 0xab, 0xfa, 0xc5, 0x6e, 0x9a, 0x08, + 0x3c, 0xa1, 0x7f, 0x8c, 0x67, 0xa3, 0x78, 0x45, 0x40, 0xc8, 0xc4, 0x47, 0x3b, 0x5b, 0x6b, 0xe6, + 0x39, 0xb2, 0xb5, 0x7c, 0x76, 0x32, 0xee, 0xdb, 0xac, 0xc9, 0x0f, 0x8a, 0x93, 0x2c, 0x5b, 0xc6, + 0xd0, 0x14, 0x68, 0x7e, 0x3d, 0xeb, 0xd9, 0x70, 0x4b, 0xc3, 0xa1, 0x69, 0xa5, 0x38, 0xd6, 0x51, + 0xef, 0xa5, 0x78, 0xda, 0x44, 0xaf, 0xd9, 0x74, 0xf4, 0xf7, 0x3a, 0x01, 0x98, 0xb5, 0x8c, 0xe3, + 0xad, 0xc4, 0xa9, 0x58, 0x32, 0xee, 0x3b, 0x23, 0x68, 0xf2, 0x66, 0xf1, 0x5e, 0x3a, 0xfe, 0x53, + 0x87, 0x31, 0x99, 0xa1, 0x96, 0x80, 0xfb, 0xb3, 0xdd, 0xbb, 0x69, 0x51, 0x0a, 0x7e, 0xcb, 0x28, + 0xf8, 0x71, 0x05, 0xe8, 0x91, 0x4f, 0xf2, 0x61, 0x9a, 0xb9, 0x7e, 0x18, 0x98, 0xac, 0x1d, 0xa8, + 0xb4, 0x24, 0x2e, 0x72, 0x98, 0x3f, 0x95, 0x13, 0x24, 0x6b, 0x5e, 0x31, 0x44, 0x49, 0x26, 0x8b, + 0x2b, 0xbe, 0xeb, 0x41, 0x13, 0xc1, 0xd5, 0x15, 0x2c, 0xc1, 0x5c, 0xa7, 0xb9, 0x71, 0x73, 0x9f, + 0x97, 0x37, 0x3f, 0x19, 0xf7, 0x7d, 0x29, 0x68, 0xf2, 0x47, 0x82, 0x78, 0x87, 0x65, 0x13, 0xe9, + 0x1c, 0xdf, 0x10, 0x40, 0x30, 0x46, 0x57, 0x84, 0x20, 0x0f, 0x58, 0x4c, 0x5b, 0xca, 0xf1, 0x18, + 0x36, 0x72, 0xe6, 0x2a, 0x94, 0x83, 0xc0, 0x52, 0x39, 0x78, 0x96, 0xe9, 0x3d, 0x0b, 0xb9, 0x5f, + 0xb5, 0xef, 0xa2, 0x55, 0xc0, 0xcf, 0x0c, 0x49, 0x1c, 0x79, 0xf5, 0x1a, 0x5f, 0x85, 0x0f, 0x3d, + 0x09, 0xc5, 0xb8, 0xcb, 0xec, 0x6c, 0x31, 0xcf, 0x65, 0x56, 0xfc, 0xdf, 0x04, 0x34, 0x8d, 0x4c, + 0x94, 0x84, 0xf2, 0x60, 0x6b, 0x35, 0xdf, 0x71, 0x2d, 0xf8, 0x22, 0x8e, 0xf7, 0x1d, 0x87, 0x52, + 0x70, 0x49, 0xff, 0xa5, 0x78, 0x17, 0xd3, 0x21, 0x7c, 0xa4, 0x77, 0x5c, 0xb6, 0xae, 0x5d, 0x35, + 0x9f, 0xc5, 0x6e, 0x73, 0xaf, 0xf1, 0x9f, 0xa0, 0xdd, 0x01, 0xbd, 0x0e, 0x99, 0xd3, 0x3d, 0xa2, + 0x13, 0x97, 0x9f, 0xdc, 0x12, 0x48, 0xa8, 0x21, 0x03, 0x00, 0xfe, 0x87, 0x80, 0x44, 0x39, 0x14, + 0x6a, 0x6e, 0xdb, 0x14, 0x55, 0x53, 0x26, 0x6b, 0x7b, 0xaf, 0x03, 0xe7, 0x9a, 0x53, 0xc6, 0x11, + 0x15, 0x9c, 0x8a, 0x25, 0xe3, 0xbe, 0x37, 0x05, 0x4d, 0x7e, 0x4e, 0x2c, 0xa7, 0x03, 0xfd, 0x7c, + 0x50, 0x7f, 0xed, 0xb4, 0xde, 0x7b, 0x18, 0xdf, 0xe5, 0x88, 0x14, 0xae, 0xe2, 0x09, 0xb7, 0x9c, + 0x2a, 0xef, 0x70, 0xc7, 0x17, 0xc3, 0x17, 0xfb, 0xd2, 0x03, 0x47, 0x36, 0x34, 0xd5, 0x57, 0xd7, + 0xaf, 0x69, 0xcc, 0x5c, 0x38, 0xa3, 0x0f, 0x11, 0x5e, 0x87, 0x2b, 0x4c, 0xe6, 0xbb, 0xd4, 0x57, + 0x33, 0x56, 0x2e, 0x25, 0x49, 0xc6, 0x98, 0xc4, 0x67, 0xf6, 0x9f, 0x7a, 0xd0, 0xec, 0xe6, 0x97, + 0xc2, 0xa9, 0xe0, 0x16, 0x3a, 0xe0, 0xf5, 0xd1, 0x90, 0x9a, 0x88, 0x04, 0xb6, 0xaf, 0x01, 0x17, + 0xdc, 0xa2, 0x8d, 0x5d, 0xcb, 0x57, 0x1a, 0x2f, 0xca, 0xa2, 0xf1, 0x55, 0x48, 0xc6, 0x7d, 0x7f, + 0x42, 0x6e, 0x01, 0xb3, 0xf4, 0x7d, 0x7b, 0x33, 0x07, 0xde, 0x31, 0x58, 0x11, 0xf0, 0xf5, 0x0e, + 0xf3, 0xad, 0x78, 0x0e, 0x32, 0x41, 0xa6, 0x6c, 0xdc, 0xf7, 0x72, 0x4a, 0x51, 0x05, 0x45, 0x1b, + 0xed, 0xc2, 0xcb, 0xe7, 0x55, 0x1a, 0x0b, 0x09, 0xa5, 0xb6, 0xc5, 0x83, 0xd5, 0xc1, 0x68, 0xd8, + 0xe0, 0xf1, 0x1e, 0xf7, 0x3d, 0x3a, 0x66, 0x1e, 0x0f, 0x86, 0x9e, 0xac, 0x61, 0x1d, 0xe1, 0x75, + 0xfc, 0x4b, 0x01, 0x4d, 0x07, 0xc9, 0xcc, 0x86, 0x70, 0x22, 0xd5, 0x16, 0x88, 0x30, 0x50, 0xba, + 0xdf, 0x59, 0x42, 0x65, 0x2d, 0x85, 0xd7, 0xad, 0x72, 0x6c, 0x05, 0x93, 0x71, 0x9f, 0xaa, 0xc9, + 0x3f, 0x17, 0xa9, 0xad, 0xc1, 0xf0, 0x89, 0xee, 0xcc, 0xfe, 0x53, 0xb0, 0x1c, 0x15, 0xf7, 0xd9, + 0xd3, 0xaa, 0xd2, 0x5f, 0x9c, 0xcc, 0x74, 0xbe, 0x99, 0x1e, 0x38, 0xb8, 0x25, 0x96, 0x4c, 0x71, + 0x28, 0xef, 0xf5, 0xcd, 0x72, 0x98, 0xf0, 0x36, 0x4e, 0x80, 0xf5, 0xa7, 0x02, 0x9a, 0x0e, 0x27, + 0xe9, 0x68, 0x53, 0x72, 0x2a, 0xe5, 0x38, 0x25, 0xe7, 0x82, 0xc9, 0xb8, 0xef, 0x59, 0x4d, 0xae, + 0x14, 0xa9, 0xa6, 0xdb, 0x32, 0x25, 0x87, 0x34, 0x32, 0xfc, 0x05, 0xfe, 0xfb, 0xf3, 0x0c, 0xdf, + 0x72, 0xdc, 0xfd, 0x3b, 0x01, 0xdd, 0x05, 0xb7, 0x70, 0x6b, 0xc7, 0x4f, 0xb7, 0xc5, 0x52, 0x01, + 0xb1, 0xca, 0xf9, 0xc2, 0xee, 0x50, 0x14, 0xcf, 0xa8, 0x7a, 0x1c, 0xa5, 0x93, 0x71, 0x5f, 0x10, + 0x4f, 0x8b, 0x06, 0xbf, 0x18, 0xe9, 0x38, 0x30, 0xf2, 0xce, 0xc9, 0x8a, 0x72, 0x6a, 0x77, 0xc2, + 0x4d, 0x08, 0x72, 0xe0, 0x10, 0xab, 0xa8, 0x1e, 0xe3, 0xb4, 0x6a, 0x7e, 0x87, 0x7b, 0xc1, 0xfb, + 0x74, 0x41, 0x40, 0x13, 0x56, 0xaa, 0x60, 0x50, 0xe4, 0xc4, 0x62, 0xe0, 0x0c, 0xc6, 0x44, 0xce, + 0x73, 0xcd, 0xa7, 0x7c, 0xe3, 0x6f, 0x34, 0x79, 0x91, 0x88, 0x80, 0xda, 0xe2, 0x8c, 0x0a, 0x1f, + 0xcf, 0x80, 0x90, 0x00, 0x61, 0x8d, 0x4d, 0xd9, 0xee, 0xdd, 0xc0, 0x13, 0x72, 0xec, 0x87, 0x33, + 0xb9, 0xc5, 0xfc, 0x6f, 0xcd, 0x2b, 0x61, 0xa8, 0xf6, 0x7b, 0xf1, 0xbf, 0x0a, 0x68, 0x22, 0xed, + 0x11, 0x62, 0x86, 0xba, 0x0c, 0x87, 0x0b, 0x68, 0x68, 0xbf, 0x2e, 0x5b, 0xca, 0xd0, 0x61, 0x63, + 0x0a, 0xdb, 0x22, 0xce, 0x34, 0xc7, 0xcd, 0x3f, 0xc0, 0xac, 0x58, 0x9d, 0x6f, 0x0e, 0x7c, 0xc9, + 0xaa, 0x1c, 0xd3, 0xd4, 0xcc, 0xc1, 0x73, 0x7a, 0xe7, 0x81, 0xec, 0x87, 0x7d, 0x60, 0xe8, 0x04, + 0xcd, 0xe4, 0xe1, 0xb6, 0xac, 0xd3, 0xad, 0x09, 0xe3, 0x39, 0x5e, 0x10, 0xd0, 0x64, 0x45, 0x0d, + 0xc6, 0x12, 0x21, 0x63, 0xda, 0x0e, 0xf2, 0x5f, 0x3e, 0x9f, 0xcd, 0xbc, 0xc2, 0x1e, 0xf3, 0x8f, + 0x05, 0x41, 0xf7, 0x35, 0x6b, 0xf2, 0x42, 0xb1, 0x5c, 0xbf, 0x76, 0x54, 0xef, 0x38, 0x67, 0x9f, + 0x47, 0x85, 0xc8, 0xe7, 0xc0, 0x8d, 0x0e, 0x0e, 0x7a, 0xdf, 0x9d, 0x2e, 0xc3, 0xc6, 0x90, 0xf4, + 0x7f, 0x0b, 0x08, 0xad, 0x37, 0x2c, 0xe4, 0x44, 0x17, 0x59, 0x16, 0x0f, 0x4f, 0xbe, 0x7c, 0x45, + 0xe8, 0xde, 0x9c, 0x26, 0xf2, 0xae, 0xa9, 0x00, 0xf7, 0xb8, 0x2b, 0x3a, 0xc6, 0x96, 0xdc, 0x94, + 0xef, 0x53, 0xde, 0x35, 0xbb, 0x22, 0xdf, 0xc4, 0xff, 0xd6, 0x83, 0xee, 0xb0, 0x08, 0xea, 0xc0, + 0xed, 0xa9, 0xfd, 0xa2, 0xee, 0x50, 0xc8, 0xf5, 0xa2, 0xee, 0x58, 0x96, 0xae, 0xc9, 0x08, 0xf0, + 0x89, 0x0b, 0x29, 0x69, 0x20, 0x53, 0x80, 0x1b, 0x90, 0xae, 0x75, 0xe1, 0x51, 0xe1, 0x99, 0x5c, + 0xfb, 0x28, 0x7b, 0x7e, 0x10, 0x9c, 0x06, 0xd2, 0x25, 0xdb, 0x31, 0xbe, 0xf2, 0x55, 0xde, 0x74, + 0xff, 0x40, 0x7a, 0x60, 0x0f, 0x68, 0x34, 0xf4, 0xde, 0x37, 0x47, 0xf6, 0x1e, 0x32, 0x8d, 0xf5, + 0x86, 0xba, 0xf5, 0xc3, 0x5d, 0x99, 0xde, 0x73, 0xd0, 0x66, 0xa0, 0x2d, 0x15, 0x4b, 0x06, 0x03, + 0x91, 0x70, 0xb4, 0x65, 0x6d, 0x3c, 0x15, 0x8e, 0x45, 0x0d, 0xbf, 0x86, 0x1c, 0x92, 0x2f, 0xa9, + 0x58, 0x38, 0xd6, 0x53, 0x12, 0xbc, 0x17, 0xe2, 0xc5, 0xfd, 0xcf, 0x02, 0x12, 0x89, 0xe0, 0x1c, + 0xe0, 0x9b, 0x9d, 0x22, 0x76, 0xd5, 0x0d, 0x2b, 0x93, 0x74, 0x85, 0x2e, 0xbe, 0x08, 0x5d, 0xc9, + 0x43, 0x82, 0x26, 0xbf, 0x28, 0xde, 0x0b, 0x0a, 0x6a, 0x13, 0x96, 0xa8, 0x81, 0x70, 0xef, 0x9b, + 0x7a, 0xcf, 0x85, 0x4d, 0x41, 0x1a, 0x70, 0xbe, 0xe2, 0xe1, 0xcc, 0xbb, 0xed, 0x18, 0x89, 0x01, + 0x2d, 0x9c, 0x8a, 0x54, 0x8d, 0xbc, 0xf9, 0x71, 0xa6, 0xf7, 0x9d, 0xe1, 0xbe, 0x3e, 0xfd, 0xad, + 0xb7, 0x33, 0x6f, 0x7c, 0xc6, 0xc9, 0xcd, 0x9c, 0xc5, 0xc6, 0x04, 0xe5, 0x4d, 0xa5, 0xba, 0xe0, + 0x17, 0xfb, 0x05, 0x84, 0xea, 0x63, 0x89, 0x50, 0x2c, 0xea, 0x8c, 0x45, 0x66, 0x9e, 0xfb, 0x3c, + 0xb9, 0x22, 0x74, 0x9e, 0x41, 0x4d, 0x7e, 0x58, 0xa4, 0x66, 0xad, 0x98, 0x0d, 0x3a, 0xd4, 0x37, + 0x7c, 0xe9, 0x55, 0x7d, 0xe0, 0xbd, 0x4c, 0xfb, 0xce, 0x8a, 0xb9, 0x94, 0x02, 0x5c, 0xfc, 0x82, + 0x5a, 0x57, 0xb2, 0x4c, 0x4e, 0xfa, 0x7f, 0x4f, 0xc5, 0x5c, 0xb7, 0xd1, 0x07, 0x49, 0x6f, 0x78, + 0xe8, 0x03, 0x02, 0x2a, 0x5b, 0x1f, 0xe5, 0x06, 0x6f, 0x23, 0xbe, 0x7c, 0x2e, 0x1b, 0xfe, 0xfc, + 0xfc, 0x85, 0xe8, 0x04, 0x36, 0x6a, 0xf2, 0x62, 0x51, 0xa4, 0xb2, 0x04, 0x7e, 0xf4, 0xb3, 0xf8, + 0xd1, 0x3b, 0x0d, 0xfd, 0xde, 0x0a, 0xaf, 0xdb, 0xd0, 0xdb, 0xa2, 0x96, 0xc1, 0x97, 0x36, 0x24, + 0x02, 0x61, 0x18, 0xb9, 0x5d, 0x6c, 0xc0, 0xb2, 0xd8, 0xb0, 0xef, 0xce, 0x53, 0x82, 0x8e, 0x79, + 0x8b, 0x26, 0x2f, 0x13, 0xfd, 0x30, 0xbe, 0x78, 0x2c, 0x34, 0x7c, 0x7d, 0x67, 0xf6, 0xfc, 0x60, + 0x95, 0x7e, 0x69, 0x0f, 0xdb, 0x87, 0xd7, 0xb2, 0xdd, 0xbb, 0xbd, 0x4d, 0xb1, 0x90, 0x77, 0xe4, + 0xfd, 0xcb, 0x23, 0xed, 0x87, 0x2b, 0xa6, 0xe4, 0x94, 0x25, 0xe3, 0xf7, 0xf9, 0xe6, 0xb8, 0x8d, + 0x3f, 0x84, 0xbb, 0xc4, 0x83, 0x1f, 0x14, 0xd0, 0x54, 0x93, 0x76, 0xae, 0x0a, 0x6c, 0x52, 0x23, + 0x49, 0x3b, 0xa3, 0x95, 0x5b, 0x82, 0x4d, 0xa5, 0x72, 0xf4, 0x82, 0x74, 0x46, 0xeb, 0x08, 0xa3, + 0x45, 0x79, 0x10, 0x40, 0x83, 0xd3, 0x7b, 0xb3, 0xbd, 0x5f, 0x54, 0x38, 0xa4, 0x8d, 0x06, 0x37, + 0x11, 0xd2, 0x34, 0x1e, 0xfd, 0xbf, 0x14, 0xd0, 0x0c, 0xb3, 0x4b, 0xce, 0xa2, 0xce, 0x8d, 0xbd, + 0xca, 0x29, 0xc6, 0xe6, 0x51, 0x3d, 0xc6, 0xd2, 0x74, 0x32, 0xbf, 0xb6, 0x4f, 0xe6, 0xca, 0x85, + 0xe1, 0xf3, 0xef, 0x56, 0x38, 0xa4, 0xe5, 0xd1, 0xf6, 0x01, 0x0a, 0x73, 0x5e, 0x7d, 0x6d, 0xfb, + 0xb1, 0x2e, 0x10, 0x8e, 0xa6, 0xf2, 0xee, 0x07, 0x94, 0x18, 0xc3, 0x7e, 0xb0, 0x82, 0xee, 0xfb, + 0x71, 0xf9, 0x4c, 0x76, 0xd7, 0xd5, 0x0a, 0x87, 0xb4, 0xd1, 0xf6, 0x23, 0x45, 0x9a, 0xc6, 0xa3, + 0xff, 0x07, 0xf0, 0xc9, 0x45, 0x49, 0x6d, 0x7d, 0x42, 0x0d, 0xa9, 0xd1, 0x54, 0x38, 0x10, 0xb1, + 0xcf, 0xc0, 0xa9, 0x94, 0x23, 0xeb, 0xee, 0x5c, 0x30, 0x19, 0xf7, 0x1d, 0x11, 0x34, 0x79, 0x83, + 0x38, 0xc7, 0x22, 0xf1, 0x30, 0x8b, 0x00, 0x57, 0x52, 0xf1, 0x20, 0x15, 0x7d, 0x1c, 0x3a, 0x9c, + 0xfe, 0xe2, 0xad, 0x6c, 0xf7, 0x6e, 0xf0, 0x42, 0xff, 0x94, 0xba, 0x3d, 0x6f, 0xb5, 0x3c, 0x72, + 0x1d, 0x9a, 0x12, 0x34, 0x6a, 0xd4, 0xbc, 0x92, 0x64, 0x6d, 0xfe, 0x5e, 0xfc, 0x2f, 0x02, 0xba, + 0xd3, 0x72, 0xfc, 0x72, 0x4b, 0x90, 0xff, 0x4c, 0xb7, 0xae, 0xc2, 0x03, 0x63, 0x2e, 0x9b, 0x8c, + 0xfb, 0xfe, 0x48, 0x93, 0x1f, 0x17, 0xe7, 0x58, 0xf4, 0x78, 0xb6, 0x75, 0x98, 0x03, 0x3c, 0xa8, + 0x4b, 0x21, 0x32, 0xdf, 0x07, 0x2b, 0xc6, 0x3d, 0x5f, 0xbc, 0xe5, 0xff, 0x41, 0x40, 0x77, 0x5a, + 0xe4, 0x9e, 0xf9, 0xa6, 0xec, 0x52, 0xd0, 0x71, 0xca, 0xae, 0x65, 0x93, 0x71, 0x5f, 0xab, 0x26, + 0x4b, 0xe2, 0x9d, 0x16, 0xb1, 0xaa, 0x59, 0xa2, 0xc2, 0x2d, 0x03, 0xb6, 0xd5, 0x3f, 0xfe, 0x6d, + 0xfd, 0xcf, 0x02, 0x9a, 0xc1, 0x49, 0xdc, 0xb8, 0x19, 0x56, 0xe6, 0x11, 0xcc, 0x59, 0xe7, 0xb7, + 0x60, 0x8c, 0x25, 0x93, 0x71, 0xdf, 0xff, 0xa4, 0xc9, 0x4d, 0xae, 0x80, 0x4d, 0x05, 0x53, 0x35, + 0x76, 0x99, 0x5e, 0xde, 0x0a, 0xc0, 0x49, 0x88, 0xf3, 0xc7, 0x32, 0x77, 0xf1, 0x2f, 0x04, 0x34, + 0xa3, 0x31, 0x1a, 0x4e, 0xad, 0x50, 0x43, 0x2a, 0xc4, 0x37, 0x64, 0xcc, 0x93, 0x6d, 0xbe, 0x8e, + 0xc5, 0x1c, 0xe7, 0xeb, 0x52, 0x32, 0x19, 0xc7, 0x27, 0xf4, 0x22, 0x71, 0xa6, 0xbe, 0xef, 0xa4, + 0x7e, 0x7e, 0xbf, 0xde, 0x75, 0x0c, 0x2c, 0x60, 0x98, 0x20, 0xda, 0x25, 0x3d, 0x0f, 0x67, 0x14, + 0x8e, 0x86, 0x53, 0x9b, 0x0d, 0x59, 0x1b, 0x61, 0xb3, 0x05, 0x74, 0x87, 0x1c, 0x0a, 0xd1, 0xde, + 0xd5, 0x10, 0x9b, 0x8d, 0x93, 0x1c, 0x2d, 0xb7, 0x10, 0x9e, 0xcb, 0xfd, 0x63, 0x2a, 0x97, 0x8c, + 0xfb, 0x12, 0x04, 0x15, 0xf5, 0x4b, 0x7b, 0x98, 0x14, 0xf1, 0xb5, 0xd3, 0xf8, 0x36, 0x64, 0x99, + 0x50, 0xfe, 0x6c, 0x50, 0x92, 0xfb, 0x9c, 0x2e, 0x79, 0x81, 0x50, 0x68, 0x33, 0xeb, 0x94, 0x9b, + 0xdc, 0x47, 0x02, 0x9a, 0xc8, 0xc5, 0xcc, 0xb2, 0xdf, 0x6d, 0xb9, 0x4c, 0xd7, 0xbb, 0xad, 0xa5, + 0x8c, 0x79, 0x44, 0x2c, 0x14, 0xa7, 0x18, 0xf1, 0xb6, 0xc0, 0x10, 0xb8, 0x62, 0x56, 0x4e, 0x02, + 0x8d, 0x56, 0x68, 0xf2, 0xea, 0x73, 0x7c, 0xe5, 0x6e, 0xe6, 0x1e, 0x78, 0xb8, 0x97, 0x04, 0x34, + 0x91, 0x8b, 0x4c, 0x24, 0xfa, 0xdc, 0x48, 0x5d, 0xbe, 0xe1, 0x5a, 0xca, 0xd0, 0xe1, 0x3e, 0x83, + 0x4f, 0xb4, 0x29, 0x46, 0x54, 0x23, 0x3a, 0xdc, 0x19, 0x39, 0x09, 0xbc, 0x7e, 0xb1, 0xc2, 0xe7, + 0x6a, 0x82, 0x63, 0x98, 0xa5, 0xe0, 0x21, 0x7f, 0x2e, 0xa0, 0x89, 0x5c, 0x64, 0x18, 0x37, 0x65, + 0x7b, 0xfe, 0x21, 0x5b, 0xca, 0x98, 0xac, 0xa9, 0x24, 0x4e, 0x63, 0xd4, 0x2a, 0xd6, 0x16, 0xa2, + 0x83, 0x9e, 0xc3, 0x6b, 0x88, 0x82, 0x66, 0x06, 0x37, 0xf8, 0xf9, 0xfe, 0x31, 0x0c, 0x5e, 0xfc, + 0x40, 0x40, 0x25, 0xe4, 0x00, 0xc5, 0xc3, 0x9e, 0xe7, 0x78, 0xb4, 0x72, 0x63, 0xf6, 0xba, 0x17, + 0xa0, 0x03, 0x7e, 0x0e, 0x83, 0xc4, 0x44, 0x46, 0x68, 0x62, 0x6d, 0xa1, 0x8a, 0x79, 0xbc, 0x88, + 0x83, 0xf6, 0x6b, 0x1f, 0xac, 0x38, 0x96, 0xc1, 0x9e, 0xf2, 0xa0, 0x52, 0x23, 0xfe, 0x87, 0x9d, + 0x8f, 0x36, 0xb2, 0x5c, 0xf9, 0x68, 0xae, 0x04, 0x1d, 0xef, 0x9f, 0x0b, 0x9a, 0x7c, 0x41, 0x10, + 0xa7, 0x71, 0x23, 0xa6, 0xf4, 0x53, 0xcb, 0xa3, 0x14, 0x31, 0x4a, 0xfd, 0x10, 0x2a, 0x91, 0x0a, + 0xd1, 0x15, 0x7d, 0xf0, 0x0d, 0x6f, 0x32, 0x87, 0xa9, 0x1b, 0x9a, 0xea, 0xed, 0x22, 0x1d, 0x6b, + 0x3e, 0x5b, 0xab, 0xfb, 0x46, 0x2b, 0x46, 0x17, 0xec, 0x57, 0x78, 0x83, 0x45, 0x03, 0xc5, 0x37, + 0x34, 0xd5, 0x53, 0x09, 0x40, 0x39, 0x9f, 0x66, 0xc3, 0x79, 0x67, 0xa1, 0x2e, 0x19, 0xf4, 0xb6, + 0x78, 0x10, 0xe3, 0xd0, 0x17, 0x02, 0x9a, 0xcc, 0x61, 0xad, 0xe3, 0xd0, 0xad, 0xf9, 0xae, 0x43, + 0xcf, 0x2d, 0x46, 0x87, 0xfe, 0xbc, 0x26, 0xfb, 0x98, 0xcc, 0x33, 0x3d, 0x70, 0x64, 0x5b, 0x3c, + 0xc8, 0x78, 0x59, 0xf8, 0xe2, 0x86, 0xeb, 0x2c, 0xed, 0x64, 0xc3, 0xe5, 0x6c, 0xd2, 0x5e, 0xd9, + 0x16, 0x0f, 0x52, 0x22, 0xf0, 0x17, 0x02, 0x9a, 0xcc, 0xe1, 0xb0, 0xe3, 0x04, 0xac, 0xf9, 0xae, + 0x13, 0xc8, 0x2d, 0x46, 0x27, 0x10, 0xd1, 0xe4, 0xa5, 0xe2, 0x0c, 0x8e, 0x1a, 0x78, 0x8d, 0x51, + 0x57, 0xcc, 0xb2, 0x51, 0x04, 0xaf, 0x75, 0x4a, 0x35, 0xfe, 0xf1, 0x4d, 0x49, 0xbc, 0xe2, 0x41, + 0x65, 0x06, 0xc2, 0xe0, 0xd9, 0xdc, 0xe3, 0x8a, 0x4e, 0xdc, 0x5c, 0xe6, 0xe7, 0x2f, 0x44, 0x67, + 0xf2, 0x37, 0x82, 0x26, 0x5f, 0x12, 0xc4, 0x19, 0x1c, 0xda, 0x79, 0x37, 0x34, 0xd5, 0x53, 0xd4, + 0x3b, 0x96, 0x1f, 0xf5, 0xcc, 0x92, 0x3f, 0x04, 0xfa, 0xcd, 0x11, 0xf3, 0x41, 0xb2, 0xf8, 0x95, + 0x80, 0xfe, 0x7f, 0xf6, 0xae, 0x35, 0x38, 0x8e, 0x22, 0xbf, 0x67, 0xd6, 0xc9, 0xd5, 0x65, 0xea, + 0xee, 0xec, 0x6b, 0x30, 0x36, 0x03, 0x27, 0xc4, 0x86, 0xf3, 0x43, 0xc8, 0x5e, 0x6c, 0x8c, 0x79, + 0x1c, 0x04, 0x46, 0x12, 0xd8, 0xc2, 0x18, 0x74, 0x96, 0xcf, 0xb9, 0x50, 0xf9, 0x90, 0xd5, 0x6a, + 0x90, 0x17, 0x49, 0xbb, 0x7b, 0x3b, 0x2b, 0x71, 0x42, 0xf1, 0x95, 0x8d, 0xf5, 0xb0, 0xb0, 0x5e, + 0x5e, 0x59, 0x08, 0x0b, 0x1b, 0xac, 0x03, 0xd9, 0xc6, 0x87, 0x1e, 0x06, 0x9f, 0xbc, 0xde, 0x95, + 0x10, 0x54, 0x5d, 0x3e, 0x5c, 0x85, 0x22, 0x45, 0xaa, 0x42, 0xe5, 0xf1, 0xe1, 0x92, 0xdc, 0xce, + 0xee, 0x2a, 0x55, 0x81, 0x0f, 0x97, 0x54, 0xa5, 0x48, 0x48, 0xa5, 0xa6, 0xff, 0xdd, 0x33, 0x3d, + 0x3b, 0xd3, 0x33, 0xbb, 0x82, 0x1c, 0xa9, 0x54, 0xbe, 0xd8, 0xab, 0xe9, 0xdf, 0xec, 0xf6, 0xff, + 0xd7, 0xdd, 0xff, 0x7e, 0xfd, 0x1f, 0xeb, 0x18, 0x35, 0xd3, 0x82, 0xf7, 0x9a, 0x9b, 0x5d, 0x14, + 0x51, 0x0b, 0xbb, 0xcd, 0xdc, 0xe2, 0x0d, 0x34, 0x0d, 0x6a, 0xea, 0xd1, 0x46, 0x96, 0x3f, 0xf0, + 0x4e, 0x31, 0xae, 0x25, 0x31, 0x83, 0xa4, 0x51, 0x8d, 0xa4, 0x06, 0xda, 0x95, 0x57, 0x69, 0xc2, + 0x60, 0x70, 0x6a, 0x61, 0x3a, 0x48, 0x15, 0xda, 0xc2, 0x13, 0x0c, 0xbe, 0x9a, 0xd1, 0xc4, 0xef, + 0x83, 0x79, 0xc1, 0xa1, 0x86, 0xda, 0xda, 0x70, 0xb3, 0xc3, 0x89, 0x99, 0x59, 0xc6, 0x3d, 0x49, + 0x62, 0x21, 0x66, 0xff, 0x7e, 0x18, 0xdd, 0x08, 0x32, 0x75, 0xc6, 0x42, 0x95, 0xa1, 0x70, 0x33, + 0xbd, 0x66, 0x25, 0x21, 0x0d, 0x71, 0xd7, 0x64, 0xa5, 0xe9, 0x8c, 0x85, 0xf2, 0x93, 0x3d, 0x3a, + 0xd0, 0x73, 0x36, 0xe9, 0x8c, 0x85, 0x74, 0x9c, 0xd1, 0xbf, 0x3f, 0x14, 0xc4, 0xb5, 0xb5, 0x45, + 0xbe, 0xe5, 0x1c, 0x2d, 0x68, 0x00, 0xa8, 0x34, 0x9b, 0x3d, 0x71, 0x44, 0xa4, 0x67, 0x93, 0xf2, + 0x23, 0x74, 0x89, 0x44, 0x8c, 0xb7, 0x32, 0x3d, 0xd2, 0xb6, 0xa2, 0x07, 0x70, 0xa7, 0xfa, 0xe9, + 0xe2, 0x20, 0x39, 0xdf, 0x5f, 0xbc, 0x9e, 0x3b, 0x7a, 0x31, 0xbb, 0x98, 0xca, 0x2f, 0xbe, 0x49, + 0x8f, 0x89, 0x6f, 0xf7, 0xdf, 0xca, 0xd9, 0x5d, 0x63, 0x73, 0x76, 0x5d, 0x01, 0xfd, 0x42, 0x10, + 0xd7, 0xfe, 0xa0, 0xc8, 0x8d, 0x7c, 0x13, 0x7f, 0xbf, 0xef, 0x2e, 0x90, 0x0d, 0x47, 0x04, 0xfa, + 0x53, 0x66, 0x11, 0x65, 0x94, 0xd2, 0x45, 0x94, 0xf1, 0x80, 0xd5, 0x3b, 0x52, 0x95, 0x5b, 0xc5, + 0x03, 0xdd, 0x4c, 0xc6, 0x28, 0xac, 0x47, 0x7f, 0xe1, 0x13, 0xd7, 0xd6, 0x15, 0x39, 0xe0, 0x6f, + 0xe2, 0x5b, 0x26, 0xba, 0x8b, 0x61, 0xc3, 0x11, 0x31, 0x7e, 0x25, 0x24, 0xe5, 0x37, 0x05, 0xbd, + 0x65, 0x74, 0xad, 0x69, 0x0a, 0x32, 0x2e, 0xb0, 0x7a, 0xd4, 0x78, 0xae, 0x6b, 0x8d, 0xa5, 0x31, + 0xe3, 0xcf, 0xdc, 0xd9, 0x81, 0xfc, 0xf8, 0x19, 0x6d, 0xe6, 0xe5, 0xfc, 0x64, 0x8f, 0xfe, 0x30, + 0x37, 0xb1, 0x00, 0x37, 0x00, 0x5a, 0xef, 0xb1, 0xc2, 0x6c, 0x2a, 0xff, 0xca, 0xd5, 0xdc, 0xf0, + 0x34, 0x7c, 0x91, 0xa1, 0x6f, 0x0a, 0x17, 0x8e, 0xc1, 0x93, 0xdc, 0xd9, 0x81, 0x27, 0xc9, 0xb9, + 0x38, 0x6d, 0x7f, 0x7c, 0xbf, 0x70, 0x8d, 0x9c, 0x33, 0x2e, 0xa6, 0xb5, 0x13, 0x0b, 0x04, 0x4a, + 0x55, 0x16, 0x66, 0xb2, 0xba, 0xaa, 0x0c, 0x26, 0xd1, 0x7b, 0x82, 0xf8, 0x0d, 0x72, 0x21, 0x05, + 0x1c, 0xf2, 0xae, 0xab, 0x2c, 0x04, 0xde, 0xe1, 0x0e, 0x22, 0xec, 0x29, 0xfa, 0x7e, 0x6c, 0xad, + 0x79, 0xa7, 0x05, 0xdc, 0x7d, 0x87, 0x5d, 0xe9, 0x3d, 0x69, 0xd6, 0x85, 0xe9, 0x0c, 0xd5, 0xa8, + 0x1c, 0x11, 0xfe, 0x45, 0x00, 0xf3, 0x34, 0xc6, 0xf8, 0x12, 0x44, 0xb9, 0xd3, 0x65, 0xab, 0x6c, + 0x13, 0xa9, 0xba, 0x34, 0x30, 0x11, 0xed, 0xf9, 0xa4, 0xfc, 0x10, 0xaa, 0x60, 0x6d, 0xce, 0x48, + 0x1b, 0x63, 0x18, 0xd1, 0x46, 0x24, 0x6d, 0x16, 0x6b, 0xd2, 0x89, 0xbd, 0xf7, 0x8d, 0x7d, 0xf4, + 0x2e, 0xb4, 0xb3, 0x1c, 0xc3, 0x4c, 0x2c, 0xbc, 0x8a, 0xae, 0xf9, 0xc4, 0x6f, 0x52, 0xbb, 0x42, + 0x10, 0xf4, 0x0e, 0x9e, 0xd9, 0xa1, 0x45, 0xc2, 0xef, 0x7a, 0xa0, 0x88, 0x68, 0x7f, 0x63, 0x99, + 0x74, 0x8b, 0x65, 0xe2, 0x4f, 0xba, 0x45, 0xc8, 0xaf, 0x62, 0xd2, 0xad, 0x40, 0xae, 0xda, 0x0f, + 0x9d, 0xc0, 0x2e, 0x2d, 0xa1, 0x68, 0x7b, 0xbb, 0x12, 0x69, 0x36, 0xea, 0x5b, 0x1b, 0x8d, 0x3c, + 0x63, 0x37, 0xf2, 0x74, 0xc6, 0xe9, 0xbb, 0xf8, 0xaa, 0x52, 0xa1, 0xc4, 0xb5, 0xe5, 0x00, 0xda, + 0xcc, 0xba, 0xa4, 0xe4, 0x26, 0x16, 0x72, 0xc3, 0x97, 0x0a, 0x43, 0xa3, 0xc6, 0xd0, 0xce, 0x5d, + 0x39, 0x0f, 0xb7, 0x5a, 0x52, 0xa9, 0x40, 0x2c, 0xed, 0xf7, 0xd0, 0xfd, 0xde, 0xbb, 0xa1, 0x40, + 0xdc, 0x59, 0xde, 0x7f, 0x15, 0xc4, 0x75, 0xfb, 0xa3, 0x9d, 0x0a, 0xb1, 0x89, 0x87, 0x7e, 0x64, + 0xd3, 0x8b, 0xc5, 0x08, 0xee, 0x02, 0xc4, 0x0e, 0x24, 0xbd, 0x69, 0x50, 0x48, 0xca, 0x4f, 0xd1, + 0x7b, 0x9f, 0xfc, 0xc5, 0x8c, 0x79, 0xa9, 0x7b, 0xe5, 0xbc, 0xb4, 0x5b, 0x9b, 0xef, 0x23, 0xc6, + 0x50, 0xd7, 0xde, 0xd6, 0xb5, 0xa5, 0xa1, 0xec, 0x18, 0xa0, 0x3e, 0xf1, 0xe1, 0xd8, 0x4a, 0xf9, + 0xf4, 0x3b, 0xf9, 0xd9, 0x29, 0xaa, 0xe6, 0x9c, 0xcd, 0x85, 0x38, 0x3a, 0xc2, 0xb8, 0x28, 0x3d, + 0xe5, 0x13, 0x6f, 0x3c, 0xa0, 0xb4, 0xd3, 0xda, 0x3e, 0x16, 0x8f, 0xb6, 0x73, 0x74, 0x85, 0x13, + 0x8a, 0xab, 0x2b, 0x9c, 0xc1, 0x84, 0x82, 0x73, 0xf8, 0x86, 0x6f, 0xbd, 0x21, 0x4d, 0xfe, 0x62, + 0x66, 0xe5, 0x0c, 0x35, 0xfe, 0xde, 0x63, 0xb5, 0x86, 0xcf, 0x66, 0x86, 0x0d, 0x5c, 0x36, 0x35, + 0x03, 0x50, 0x1c, 0x99, 0xa4, 0x2f, 0xf7, 0xf2, 0x5c, 0x61, 0x8e, 0x70, 0x92, 0xcd, 0x0c, 0xe5, + 0x7b, 0x16, 0xb4, 0xb3, 0x97, 0xa8, 0xbd, 0xeb, 0x0c, 0x70, 0x52, 0xb5, 0x1a, 0x4e, 0x3e, 0x5b, + 0x23, 0x7e, 0xbb, 0xb6, 0x4d, 0x09, 0x46, 0x88, 0xa1, 0x32, 0x10, 0x62, 0x37, 0xe7, 0x29, 0x86, + 0x50, 0x36, 0xb6, 0x96, 0x80, 0xa4, 0x97, 0x9d, 0x6b, 0x92, 0xf2, 0x07, 0x3e, 0x74, 0x0b, 0x7b, + 0x37, 0x49, 0x24, 0xa5, 0x4d, 0x2f, 0xbd, 0xe5, 0x2b, 0x91, 0x92, 0xeb, 0xaf, 0x65, 0x33, 0xc3, + 0x06, 0x01, 0xc6, 0x73, 0xed, 0xfa, 0x42, 0x2e, 0xd5, 0x9b, 0x1f, 0xed, 0x83, 0xe5, 0x12, 0xfb, + 0x53, 0xbf, 0x3e, 0xfa, 0x82, 0x79, 0x41, 0x9f, 0x4a, 0x6b, 0x8b, 0x2f, 0xe4, 0x66, 0xc8, 0x9f, + 0xfa, 0x8b, 0x4b, 0x63, 0x46, 0x29, 0xa4, 0x09, 0x20, 0x69, 0x46, 0x61, 0xda, 0xce, 0xf4, 0x16, + 0x8e, 0x2f, 0xe5, 0xa7, 0x66, 0x75, 0xf5, 0x83, 0xbf, 0x1f, 0x5c, 0x7b, 0x00, 0x09, 0xe3, 0x16, + 0x66, 0xf7, 0xc2, 0xf1, 0xa5, 0xec, 0xf2, 0xb9, 0xc2, 0x1c, 0x0d, 0xfe, 0x85, 0xc1, 0xda, 0xb5, + 0xb7, 0xf3, 0x99, 0x11, 0x6d, 0x76, 0x30, 0x77, 0x62, 0xd4, 0x50, 0x8d, 0x10, 0x54, 0x06, 0xbe, + 0xb3, 0xb0, 0xfc, 0x8a, 0x96, 0xbe, 0xf0, 0xe9, 0xe2, 0x20, 0x89, 0x34, 0x73, 0x74, 0xb2, 0xb0, + 0xdc, 0x4f, 0xbc, 0x70, 0x27, 0x7b, 0x0e, 0x06, 0xd5, 0x56, 0x18, 0x05, 0x85, 0xb9, 0x0b, 0xf9, + 0x4c, 0x1f, 0x28, 0x40, 0x3a, 0x16, 0xee, 0xaf, 0xda, 0x55, 0x46, 0xbb, 0xe3, 0x67, 0xb4, 0xf1, + 0xdf, 0xfa, 0x5d, 0xf1, 0x06, 0x5b, 0x7b, 0x1d, 0xda, 0x69, 0x3f, 0x72, 0x77, 0x00, 0x71, 0x2d, + 0x07, 0x1c, 0xb1, 0xa4, 0x0b, 0x64, 0xd6, 0x24, 0xe5, 0xff, 0xf0, 0xa1, 0xc7, 0x5d, 0xba, 0x80, + 0x11, 0x89, 0xe7, 0x47, 0x1d, 0x4a, 0xbc, 0x8b, 0x24, 0x65, 0xc7, 0x7d, 0x02, 0xb8, 0x01, 0x46, + 0xff, 0xbf, 0xc7, 0x7c, 0x81, 0x1e, 0xb3, 0xdb, 0xa1, 0xc7, 0xec, 0xf4, 0xee, 0x31, 0xe8, 0x63, + 0xb2, 0x6f, 0xb5, 0xa8, 0x8a, 0x92, 0x96, 0x8c, 0x5b, 0x5c, 0x5c, 0x23, 0xac, 0x4a, 0x42, 0x4d, + 0xca, 0xf7, 0xa3, 0x75, 0x50, 0x5f, 0xfd, 0x47, 0xc9, 0xca, 0x83, 0x58, 0x62, 0x6b, 0x57, 0x5e, + 0xcd, 0xa6, 0x87, 0x0d, 0x4d, 0xa8, 0xeb, 0x53, 0x58, 0x79, 0x31, 0xeb, 0xaa, 0x1d, 0xa8, 0x5c, + 0x3d, 0x88, 0xfe, 0x41, 0xb0, 0xf8, 0x7e, 0xd0, 0x61, 0xb0, 0xd5, 0xab, 0xd6, 0xe6, 0x28, 0xa8, + 0x2a, 0x05, 0xfa, 0x3f, 0x2a, 0xe2, 0x4e, 0x0f, 0x11, 0xd7, 0x88, 0x37, 0xc1, 0x7e, 0x0d, 0x3f, + 0xaf, 0x53, 0xd4, 0x70, 0x5c, 0xc1, 0xcb, 0x02, 0xc4, 0xb9, 0xb7, 0x2e, 0xc6, 0x51, 0x51, 0xb7, + 0x97, 0x0a, 0x27, 0xe2, 0xe6, 0x7c, 0x49, 0x79, 0xca, 0x87, 0x36, 0xc0, 0xf6, 0x8f, 0x41, 0x90, + 0x53, 0xa9, 0x5e, 0x5f, 0xf1, 0xc6, 0x30, 0x35, 0x63, 0x43, 0x11, 0xeb, 0x2a, 0x38, 0x89, 0x5b, + 0x9c, 0xd4, 0xe6, 0x16, 0x0b, 0xfd, 0x57, 0x8d, 0x37, 0x48, 0xef, 0x37, 0xe2, 0x31, 0x2c, 0x8e, + 0x6b, 0xbd, 0xd3, 0x24, 0x97, 0x01, 0x1e, 0x05, 0xc6, 0xf5, 0x8f, 0x76, 0x7d, 0x01, 0xee, 0x4b, + 0x68, 0x90, 0x46, 0x73, 0x84, 0xc3, 0xd6, 0x2a, 0x3f, 0xd9, 0xd3, 0x6c, 0xfe, 0xb8, 0x36, 0x72, + 0xb9, 0x70, 0x7c, 0x29, 0x37, 0x77, 0x5a, 0x5b, 0x1a, 0xd3, 0x06, 0x86, 0x0a, 0x17, 0xb1, 0x55, + 0xd1, 0x1b, 0x17, 0x8d, 0x91, 0x9b, 0x9b, 0x3b, 0x9d, 0xbd, 0x7e, 0x52, 0x1b, 0x18, 0xd2, 0xe6, + 0x47, 0x3e, 0x5d, 0x7c, 0xc5, 0xdc, 0xc6, 0xf5, 0x8f, 0x68, 0xf3, 0x23, 0x6c, 0x13, 0xc2, 0xbb, + 0x85, 0xb9, 0x6b, 0xa0, 0xdd, 0x6c, 0x5a, 0x12, 0x56, 0x75, 0xfe, 0xdd, 0x65, 0xf4, 0x5d, 0x52, + 0x51, 0xaa, 0xcd, 0xd3, 0x3e, 0xa7, 0x26, 0xc6, 0x59, 0x44, 0x4a, 0x68, 0x62, 0x1d, 0x57, 0x46, + 0x13, 0x03, 0x9c, 0x34, 0xf1, 0x7b, 0x42, 0x52, 0xfe, 0xb3, 0xa2, 0x16, 0xd6, 0x01, 0xa4, 0x85, + 0x83, 0xf6, 0x06, 0x66, 0x0c, 0xb6, 0x00, 0x94, 0x9f, 0xec, 0x61, 0x5e, 0x34, 0x4c, 0xff, 0x30, + 0xd1, 0x19, 0x5d, 0xed, 0xbf, 0x3c, 0x97, 0x5d, 0x9e, 0xcd, 0xcd, 0xbc, 0x4e, 0x3c, 0xbc, 0x52, + 0x43, 0xd9, 0xd4, 0xd1, 0x42, 0xff, 0x55, 0x08, 0xf9, 0xb0, 0x7a, 0xf2, 0xd4, 0xf0, 0xf3, 0x98, + 0xbc, 0xab, 0x3e, 0x6a, 0x04, 0x82, 0x11, 0xfb, 0xc3, 0x91, 0xfd, 0xc1, 0x1f, 0x63, 0xee, 0xaa, + 0x5d, 0xc8, 0x30, 0x61, 0x1e, 0x46, 0x20, 0x36, 0x34, 0x61, 0x6e, 0x09, 0x9b, 0x17, 0xde, 0x02, + 0x04, 0xb5, 0x87, 0x23, 0x7a, 0x61, 0xa0, 0x1d, 0x40, 0x84, 0xbd, 0x3f, 0x29, 0x8d, 0x3d, 0xc8, + 0x7c, 0xa7, 0xff, 0x3b, 0x3f, 0xb2, 0x72, 0x66, 0x74, 0xe5, 0xa7, 0xe7, 0x58, 0xee, 0xb4, 0xa1, + 0x91, 0xc2, 0xfc, 0x71, 0xed, 0x8d, 0x49, 0x83, 0x03, 0x18, 0x2d, 0xb0, 0x82, 0xf0, 0x97, 0xb3, + 0x82, 0x68, 0x8a, 0x76, 0x44, 0x0c, 0xda, 0x4e, 0x58, 0xfb, 0x9c, 0xac, 0x1e, 0x0c, 0xb7, 0x2b, + 0x07, 0x82, 0x91, 0x16, 0xf7, 0x3e, 0xc7, 0xe0, 0x4a, 0xe9, 0x73, 0x16, 0x38, 0x61, 0x6e, 0x58, + 0x00, 0x77, 0x41, 0x8b, 0xa1, 0xc9, 0x79, 0x6d, 0x76, 0x52, 0xdf, 0x39, 0x0d, 0xbc, 0x09, 0x9e, + 0xa5, 0xf9, 0x99, 0x97, 0xf2, 0xe3, 0xd3, 0x52, 0x49, 0xa8, 0x55, 0x50, 0x91, 0x08, 0xb7, 0x2b, + 0x71, 0xbd, 0x56, 0xd8, 0xe8, 0xc6, 0x87, 0xd3, 0x96, 0xd9, 0x33, 0x69, 0xd7, 0x74, 0xd1, 0x74, + 0xee, 0xd5, 0x0e, 0x73, 0x25, 0x37, 0x8b, 0xba, 0xbd, 0x2b, 0xb9, 0xe6, 0xe9, 0xf6, 0x67, 0x84, + 0xa4, 0xfc, 0x13, 0xb4, 0x8d, 0x04, 0xbb, 0x61, 0x34, 0x4f, 0x91, 0x67, 0x28, 0xf8, 0x2b, 0x43, + 0x16, 0x6f, 0x69, 0xbf, 0x69, 0x7a, 0x08, 0xa7, 0x56, 0xf8, 0xc4, 0x34, 0x9b, 0x3e, 0x65, 0x7f, + 0x8f, 0xa6, 0x87, 0x2f, 0xf2, 0x63, 0x4a, 0x28, 0x91, 0x90, 0x12, 0x81, 0x03, 0x68, 0x97, 0x73, + 0x0d, 0xf3, 0x08, 0xa3, 0x88, 0x43, 0x15, 0x4b, 0x81, 0x46, 0x7d, 0xe2, 0xad, 0x07, 0xe3, 0xc1, + 0x88, 0x6a, 0xf4, 0xf3, 0x83, 0xd1, 0x27, 0x99, 0xd0, 0x70, 0xe8, 0xee, 0x62, 0x36, 0xdc, 0xd0, + 0x94, 0xc2, 0x5d, 0xe5, 0xbd, 0x44, 0x98, 0xec, 0x11, 0x92, 0xf2, 0x63, 0xa8, 0xc2, 0xe8, 0x2e, + 0x85, 0xa5, 0xb7, 0xb0, 0xfb, 0x06, 0x39, 0x8c, 0x25, 0xf7, 0xab, 0x77, 0xb8, 0x94, 0xe7, 0x07, + 0x4e, 0x30, 0x46, 0x40, 0xf7, 0xf8, 0xef, 0x2e, 0xa7, 0x53, 0x51, 0x89, 0xc7, 0x7d, 0xe2, 0xc6, + 0x47, 0x23, 0x34, 0x83, 0x05, 0x0c, 0x84, 0x8e, 0x44, 0x14, 0x47, 0xc1, 0xb4, 0x7b, 0xb6, 0xf0, + 0x90, 0x94, 0x8a, 0xbb, 0x4a, 0x7f, 0x81, 0xd0, 0x30, 0x0e, 0x23, 0x0c, 0xe2, 0xd4, 0x9a, 0xc2, + 0x42, 0x67, 0xc0, 0x86, 0xca, 0xc6, 0x08, 0x92, 0x2c, 0x28, 0x32, 0xe1, 0x61, 0x08, 0x9c, 0x50, + 0x43, 0x54, 0x03, 0x4c, 0xc6, 0x23, 0xfe, 0xef, 0x95, 0x41, 0x06, 0xd5, 0x74, 0x4a, 0x00, 0x02, + 0xe4, 0xea, 0x03, 0xed, 0x8c, 0x4f, 0xbc, 0xb9, 0x2e, 0xac, 0x72, 0x88, 0xb1, 0xc9, 0xc9, 0x85, + 0x52, 0x66, 0x76, 0x94, 0xf1, 0x06, 0xa1, 0xe6, 0x25, 0x42, 0x4d, 0xef, 0x3b, 0x2b, 0x13, 0x33, + 0x9e, 0xd4, 0x30, 0x28, 0x57, 0x6a, 0x64, 0xff, 0x83, 0xab, 0xa2, 0xa6, 0x19, 0xea, 0xab, 0x73, + 0xf3, 0x3a, 0xa4, 0x05, 0x75, 0x8c, 0xa2, 0x64, 0xef, 0x33, 0x1e, 0x91, 0xb3, 0xec, 0x7d, 0xc6, + 0x2b, 0x40, 0x93, 0xff, 0x75, 0x7c, 0xdc, 0xb1, 0x91, 0x8d, 0xb8, 0xc5, 0x86, 0x66, 0x92, 0xc8, + 0xc5, 0x0c, 0x8d, 0xb2, 0x06, 0xea, 0x06, 0xae, 0x99, 0x48, 0x28, 0xb0, 0x13, 0x2f, 0x15, 0x8e, + 0xf6, 0x1a, 0x4b, 0x39, 0x78, 0xd9, 0x08, 0xf3, 0xc4, 0xcc, 0xf6, 0x0f, 0xa0, 0xfb, 0x9c, 0x3d, + 0x26, 0xf1, 0x17, 0x83, 0xcb, 0x24, 0x89, 0xe4, 0x76, 0x24, 0x60, 0x04, 0x79, 0xeb, 0xc0, 0x44, + 0xcc, 0x0a, 0xa2, 0x08, 0xb7, 0x31, 0x38, 0xa2, 0x0d, 0x27, 0x0e, 0x8f, 0x5e, 0xc6, 0x37, 0x72, + 0x66, 0x20, 0xa6, 0x41, 0xe7, 0x2e, 0xf4, 0x0d, 0x72, 0xc5, 0x0d, 0x91, 0x3f, 0xee, 0x20, 0x47, + 0x7a, 0xe3, 0xcb, 0xb9, 0x89, 0x85, 0x95, 0x89, 0xab, 0x85, 0xe5, 0xd1, 0xc2, 0xd4, 0x60, 0x7e, + 0xb2, 0x47, 0x1b, 0x1d, 0xd6, 0x46, 0xe6, 0x99, 0x00, 0x35, 0xce, 0xbe, 0x0d, 0x89, 0xa0, 0xda, + 0xaa, 0x37, 0xeb, 0x71, 0x9f, 0xf8, 0xfb, 0x38, 0x7e, 0x0e, 0xae, 0x6f, 0xa5, 0x63, 0x68, 0x1d, + 0xb6, 0xba, 0xb7, 0xbb, 0x20, 0x48, 0x6d, 0xe7, 0xf1, 0x9a, 0x6d, 0x1d, 0x89, 0xbb, 0x83, 0x03, + 0xea, 0xe8, 0xe5, 0xd2, 0x61, 0x12, 0x6e, 0x07, 0x3f, 0xd1, 0x89, 0xc7, 0x75, 0xac, 0xae, 0x24, + 0x21, 0xce, 0x31, 0x1c, 0x82, 0x99, 0x6f, 0xaf, 0x84, 0xbf, 0xb2, 0x99, 0xde, 0x95, 0x33, 0xa3, + 0xd9, 0xf4, 0x30, 0xbc, 0x03, 0x2f, 0x64, 0x53, 0xa7, 0xb3, 0x99, 0x61, 0x58, 0x36, 0xc3, 0x73, + 0x35, 0xa1, 0xc4, 0x74, 0x2d, 0x71, 0xf1, 0x64, 0x6e, 0xe0, 0x62, 0x61, 0x6a, 0xd0, 0x25, 0x92, + 0x87, 0x2e, 0x76, 0xa0, 0x5b, 0xff, 0xd7, 0x12, 0x91, 0x27, 0xe5, 0x13, 0xbf, 0xde, 0xd8, 0x1a, + 0x8e, 0x61, 0x12, 0x6c, 0x86, 0x28, 0xb4, 0x84, 0x6b, 0x88, 0x62, 0x02, 0x08, 0x05, 0x05, 0x21, + 0x29, 0x5f, 0x15, 0xd0, 0x4d, 0x85, 0x6b, 0xef, 0x14, 0x96, 0xfb, 0xd9, 0xba, 0x62, 0x26, 0xce, + 0x08, 0xae, 0x54, 0xc0, 0x5b, 0x94, 0x0a, 0xf6, 0x2f, 0x7d, 0x6e, 0xc4, 0x1f, 0xd8, 0xaf, 0x64, + 0x69, 0xc9, 0xa6, 0x4e, 0x66, 0x53, 0x47, 0x73, 0x33, 0xd3, 0x2c, 0x1f, 0xd5, 0x95, 0x04, 0x72, + 0xfd, 0xe4, 0xca, 0xc4, 0xd5, 0xdc, 0xd9, 0x81, 0xfc, 0x2b, 0xa9, 0x6c, 0x3a, 0x99, 0x7d, 0xf7, + 0x5c, 0xe1, 0xe7, 0x2f, 0x65, 0x53, 0x43, 0x5a, 0x26, 0x5d, 0x98, 0x9d, 0x85, 0xdf, 0x81, 0xcb, + 0x58, 0xe9, 0xbb, 0x9e, 0xdc, 0xa9, 0xad, 0x61, 0x7c, 0xef, 0x37, 0x65, 0x38, 0xc7, 0x38, 0xf7, + 0x78, 0xb3, 0xcc, 0xc3, 0x39, 0xc6, 0x42, 0xe0, 0x13, 0x49, 0xb9, 0x02, 0x89, 0xb0, 0xb8, 0xc2, + 0x94, 0xad, 0x33, 0x3f, 0x33, 0x37, 0x3a, 0xce, 0x26, 0xf0, 0x96, 0x8a, 0xea, 0x75, 0x7c, 0x55, + 0x10, 0x45, 0xb8, 0x8b, 0x73, 0xae, 0xa3, 0x59, 0xc6, 0xad, 0x23, 0x0b, 0x21, 0x75, 0xac, 0xc7, + 0x75, 0x84, 0xbb, 0x32, 0xa8, 0x23, 0x7b, 0x7b, 0xa7, 0x3f, 0x01, 0x33, 0xf7, 0x2a, 0xcf, 0x3a, + 0xa2, 0x73, 0xe0, 0xab, 0x86, 0x6b, 0xe7, 0xe4, 0xab, 0xc6, 0x56, 0xed, 0x36, 0x6e, 0x39, 0xa9, + 0xd7, 0xf7, 0x93, 0xf2, 0x26, 0xea, 0xab, 0x86, 0xeb, 0xb5, 0x91, 0xbd, 0x1a, 0x3b, 0x88, 0x7f, + 0x92, 0xe1, 0xd0, 0x8f, 0xbc, 0xeb, 0x77, 0xc6, 0x27, 0x7e, 0xfd, 0x89, 0xb0, 0x9a, 0x70, 0x1e, + 0x1f, 0xb4, 0x84, 0x3b, 0x3e, 0x4c, 0x00, 0xa9, 0xe2, 0x2f, 0x85, 0xa4, 0x7c, 0x41, 0xa0, 0x47, + 0x15, 0x7a, 0x11, 0x39, 0xaa, 0x38, 0xc5, 0xbd, 0x07, 0x32, 0x41, 0x5f, 0xc5, 0x15, 0xd0, 0xcd, + 0x88, 0xa7, 0x44, 0xf5, 0xf5, 0xe5, 0x06, 0xd0, 0xd9, 0x74, 0x36, 0x37, 0x7c, 0x85, 0xec, 0x41, + 0x60, 0x38, 0x40, 0x6e, 0x10, 0x18, 0x2e, 0x9e, 0x10, 0x39, 0x26, 0x24, 0xe5, 0x20, 0xaa, 0xb0, + 0x44, 0x37, 0xb3, 0xa1, 0xa5, 0x87, 0xdd, 0xcb, 0x8d, 0xab, 0x7f, 0xf2, 0xe3, 0xdb, 0x8c, 0x05, + 0x40, 0x9c, 0xb9, 0x17, 0xda, 0xea, 0x77, 0xb2, 0xce, 0x65, 0x36, 0x8c, 0x51, 0xfc, 0x65, 0xfa, + 0x78, 0xcb, 0xfa, 0xa8, 0x9d, 0x79, 0x09, 0x94, 0x70, 0x80, 0x5c, 0x4a, 0xb8, 0x78, 0x42, 0x49, + 0x1e, 0x8c, 0xea, 0xee, 0xb3, 0x18, 0x93, 0xdb, 0xe0, 0xd5, 0x95, 0x96, 0x03, 0x58, 0x1c, 0x9f, + 0x17, 0xde, 0x90, 0xda, 0x6c, 0x6f, 0xaa, 0x45, 0x6c, 0x65, 0x53, 0x47, 0xb3, 0xa9, 0xcb, 0xbc, + 0xaf, 0x86, 0xa0, 0x9d, 0x80, 0x81, 0x2e, 0xa4, 0x13, 0x7c, 0xf5, 0xa7, 0xda, 0xe2, 0x38, 0x0c, + 0xbb, 0x6c, 0x2a, 0x6d, 0x5c, 0xc1, 0xba, 0xd8, 0xb6, 0xdb, 0xa8, 0x2d, 0x8e, 0x3f, 0xf5, 0x77, + 0x6b, 0xc4, 0x5b, 0x09, 0x1b, 0x2a, 0xfc, 0x74, 0x9d, 0xd2, 0x19, 0x0e, 0x29, 0x74, 0x21, 0x65, + 0xdf, 0xd9, 0xb8, 0xa1, 0xb9, 0x3b, 0x1b, 0xf7, 0x97, 0x08, 0xeb, 0x1f, 0xfa, 0x92, 0xf2, 0x67, + 0x02, 0xea, 0x76, 0xe7, 0xce, 0x58, 0x74, 0x19, 0xcb, 0x30, 0xe3, 0x28, 0x41, 0x4b, 0x9f, 0x86, + 0x4e, 0x58, 0xe8, 0xbf, 0x9c, 0x3f, 0x7f, 0x3a, 0x9b, 0x3e, 0x95, 0x7d, 0x77, 0x39, 0x9b, 0x1e, + 0xce, 0xa6, 0x2f, 0x6a, 0x63, 0xc7, 0x0a, 0xb3, 0xf3, 0xda, 0x72, 0x9f, 0xbe, 0xc1, 0x7c, 0x6b, + 0x0a, 0xa2, 0x9d, 0xd9, 0xbf, 0x4a, 0xfa, 0x2a, 0x7f, 0x1c, 0xb7, 0xe3, 0xe3, 0xd2, 0xa3, 0xe5, + 0xb6, 0xa3, 0xd3, 0xba, 0x12, 0x37, 0x6e, 0xbf, 0x8f, 0x3a, 0x2e, 0x94, 0x30, 0x86, 0x38, 0x40, + 0xee, 0x18, 0xe2, 0xe2, 0x49, 0x6b, 0xbe, 0x88, 0xaf, 0x57, 0x2b, 0x2c, 0x8e, 0x0a, 0x76, 0xb5, + 0xb2, 0x8d, 0xd8, 0x89, 0xc0, 0x1d, 0x0a, 0x35, 0x57, 0xe0, 0xc1, 0x5d, 0xdc, 0x1b, 0x5c, 0x19, + 0xd2, 0x99, 0xb8, 0x71, 0x8f, 0x92, 0xb0, 0xd3, 0xe0, 0x14, 0x03, 0x8a, 0xcb, 0x41, 0x75, 0x69, + 0x60, 0x46, 0xaf, 0xfe, 0x90, 0x5a, 0x62, 0x70, 0x09, 0xd8, 0xcd, 0x4e, 0xac, 0x66, 0xec, 0x05, + 0x3e, 0x07, 0xac, 0x91, 0x27, 0x2a, 0x9f, 0x89, 0x7f, 0xf3, 0x81, 0xa3, 0x87, 0x9d, 0x0a, 0x47, + 0x33, 0x13, 0x2e, 0x17, 0xdb, 0x4a, 0x44, 0x13, 0x32, 0xfe, 0x4b, 0x48, 0xca, 0x1f, 0x0a, 0x34, + 0x80, 0x16, 0x57, 0xed, 0xc1, 0x0c, 0x3e, 0xed, 0x15, 0xce, 0x85, 0xf3, 0xe2, 0x57, 0x31, 0xab, + 0x3b, 0x3b, 0x9c, 0xd8, 0xda, 0x00, 0xbd, 0xe8, 0x34, 0x9f, 0x35, 0x26, 0x82, 0x89, 0x0e, 0xb5, + 0x84, 0xf9, 0x0c, 0x80, 0xa5, 0xcf, 0x67, 0x14, 0x4f, 0xd8, 0x1f, 0x12, 0x92, 0xf2, 0x5e, 0xe4, + 0x87, 0x63, 0x90, 0x00, 0x6c, 0xf9, 0x89, 0x75, 0x03, 0xb6, 0xd4, 0x33, 0xcf, 0x03, 0x4a, 0xc0, + 0x60, 0xb1, 0x1f, 0x94, 0xee, 0x2d, 0x5b, 0x4d, 0xa9, 0xb8, 0x52, 0xba, 0x62, 0x7a, 0xd1, 0x27, + 0xae, 0x6f, 0xec, 0x8a, 0x84, 0x4a, 0xe8, 0x84, 0x8e, 0x30, 0x6e, 0x27, 0xe4, 0xa0, 0x99, 0x11, + 0xd9, 0x80, 0x36, 0xd5, 0xca, 0x44, 0xae, 0xd9, 0x57, 0x57, 0xce, 0xf4, 0xc2, 0x25, 0x2e, 0xf8, + 0x6b, 0x17, 0xfa, 0xdf, 0xc9, 0xcf, 0x4e, 0xe5, 0x86, 0x2f, 0xe6, 0x7f, 0x36, 0x27, 0x95, 0x88, + 0x83, 0xfd, 0xbe, 0x74, 0x4f, 0xf9, 0x74, 0x74, 0x45, 0xb0, 0xdd, 0xf8, 0x6f, 0x04, 0x11, 0x99, + 0xd6, 0x97, 0xc6, 0x91, 0xe2, 0x56, 0xbe, 0x85, 0x66, 0xf1, 0x41, 0x62, 0x55, 0x29, 0x50, 0xc2, + 0x41, 0xaf, 0x90, 0x94, 0x6b, 0xd0, 0x46, 0xd6, 0x9a, 0x87, 0x3d, 0x18, 0xa4, 0x81, 0x4e, 0xec, + 0x25, 0x5b, 0x20, 0x26, 0x14, 0xc4, 0xcb, 0x86, 0xc8, 0x2e, 0x0f, 0xf8, 0xef, 0x29, 0x35, 0x2e, + 0x54, 0x24, 0xda, 0xac, 0xd0, 0xb3, 0x43, 0xdc, 0x05, 0xfe, 0x53, 0x10, 0x11, 0xe3, 0xba, 0xc9, + 0x95, 0xda, 0x8e, 0xe1, 0x4a, 0xed, 0x04, 0x65, 0xce, 0xe3, 0x1f, 0x40, 0x15, 0xc4, 0xc7, 0x1f, + 0x0b, 0xc2, 0xca, 0x46, 0x3d, 0x00, 0x2c, 0x27, 0xf1, 0x4c, 0x09, 0x96, 0x76, 0x9f, 0xf4, 0xd8, + 0xaa, 0xa4, 0x85, 0x93, 0x31, 0x33, 0xc3, 0xc4, 0x11, 0xda, 0xe8, 0xa6, 0x69, 0x27, 0x5f, 0x7c, + 0x3b, 0x86, 0x2b, 0xbe, 0x13, 0x94, 0x69, 0xf4, 0x5d, 0x7a, 0xa3, 0x9f, 0x37, 0xcc, 0x7b, 0x58, + 0x0f, 0x16, 0x69, 0x23, 0xbb, 0xeb, 0x64, 0xc5, 0xc7, 0x82, 0xef, 0xad, 0xfa, 0x92, 0x04, 0x47, + 0x9f, 0xf9, 0xcc, 0x3b, 0x7a, 0x43, 0xe6, 0xcd, 0xbc, 0xdb, 0xe9, 0x62, 0x89, 0xb7, 0x78, 0x03, + 0x89, 0xbc, 0x49, 0x5f, 0x52, 0xfe, 0xc8, 0x98, 0x6d, 0xd8, 0xd0, 0x67, 0xac, 0x70, 0x64, 0xb6, + 0xb9, 0xc4, 0x9d, 0x6d, 0x58, 0xa6, 0x7e, 0x6b, 0x33, 0x8c, 0x51, 0x5b, 0x36, 0x96, 0x22, 0xd3, + 0x1a, 0xf7, 0xa2, 0xd5, 0x0d, 0x3a, 0x7d, 0xc4, 0xad, 0x25, 0xe6, 0x0f, 0x06, 0xf7, 0x9b, 0x38, + 0xf6, 0x11, 0xc5, 0xd4, 0x6f, 0xf6, 0xc4, 0x11, 0xe6, 0x27, 0xf0, 0xed, 0x44, 0x95, 0x9d, 0x78, + 0xad, 0xf7, 0x5a, 0x76, 0x69, 0xcc, 0x7e, 0x07, 0x21, 0x6d, 0x64, 0xef, 0x84, 0x6c, 0xb7, 0x13, + 0x7b, 0xd1, 0x97, 0xd5, 0xf7, 0x3e, 0x31, 0xc2, 0x48, 0x15, 0xa5, 0x04, 0xbe, 0x93, 0xa7, 0x3d, + 0x1d, 0x12, 0xbf, 0xd8, 0x97, 0x80, 0x6e, 0x69, 0xa5, 0xfc, 0xdd, 0x49, 0x79, 0x37, 0x2a, 0x4e, + 0x5d, 0xa5, 0x6b, 0xd9, 0x4a, 0xfb, 0x33, 0x07, 0xfd, 0xfa, 0xa0, 0xff, 0xde, 0xd2, 0x85, 0xd7, + 0x2b, 0x60, 0xd1, 0xb0, 0x9f, 0x1b, 0x41, 0xa6, 0xbc, 0x04, 0x76, 0xc9, 0x91, 0x64, 0x17, 0xd8, + 0x2d, 0xff, 0x91, 0x7f, 0x80, 0x55, 0x34, 0x6c, 0x76, 0x15, 0x27, 0x45, 0xc3, 0x4a, 0x8f, 0xe5, + 0x7d, 0xa2, 0xea, 0xf1, 0x55, 0xca, 0xab, 0x37, 0xb7, 0x35, 0x8f, 0xcf, 0x11, 0xf4, 0xc2, 0x1a, + 0x6a, 0x37, 0x63, 0x91, 0x9e, 0x63, 0x37, 0xe3, 0x24, 0x7b, 0x55, 0x29, 0x50, 0x22, 0xf9, 0xe9, + 0xff, 0xc3, 0x2a, 0xe7, 0x7e, 0xb4, 0xda, 0x7e, 0x88, 0xfe, 0xda, 0x58, 0xdc, 0xe0, 0x3b, 0x58, + 0x39, 0x14, 0x8a, 0x76, 0x44, 0x12, 0xbc, 0xc5, 0x0d, 0x8b, 0xf1, 0x58, 0xdc, 0x58, 0xa1, 0x66, + 0x50, 0x91, 0xed, 0x68, 0xbd, 0xe1, 0xc7, 0x57, 0xb8, 0x7a, 0x41, 0x1b, 0xb9, 0x46, 0xba, 0x9e, + 0xf3, 0x63, 0xd7, 0xf8, 0xfb, 0x45, 0xe1, 0xdb, 0x83, 0xf0, 0x6b, 0x78, 0x70, 0xfd, 0xbd, 0xb1, + 0x7c, 0x71, 0x97, 0xcb, 0x8e, 0xf1, 0x58, 0xbe, 0x38, 0xca, 0x15, 0xb1, 0x3a, 0xfe, 0x82, 0x00, + 0x8c, 0xe3, 0xaf, 0x4d, 0xa2, 0x87, 0xa4, 0xfb, 0xca, 0x91, 0x28, 0xd0, 0x4d, 0x3e, 0x91, 0xd5, + 0xc9, 0x69, 0x9f, 0x78, 0xc3, 0xfe, 0x70, 0x4b, 0xbc, 0x58, 0x3c, 0x5b, 0x9d, 0x1d, 0x40, 0x5c, + 0xd3, 0x4b, 0x47, 0x2c, 0x73, 0x33, 0x17, 0x46, 0x6b, 0x21, 0xb2, 0x8b, 0x29, 0xe1, 0x21, 0x78, + 0xa0, 0xbd, 0x78, 0x5e, 0x9b, 0xeb, 0x2b, 0x92, 0x93, 0x06, 0xa9, 0x1f, 0x1a, 0xcf, 0xa6, 0x2e, + 0x43, 0x01, 0xa0, 0x7f, 0x7d, 0xf4, 0x98, 0xf6, 0xc6, 0x24, 0x3c, 0xd1, 0x3f, 0xf7, 0x5e, 0x5a, + 0x39, 0x7e, 0x89, 0x05, 0x80, 0x72, 0xdd, 0x21, 0x95, 0xdd, 0xe8, 0xff, 0x6c, 0x2c, 0xda, 0xdc, + 0x1b, 0xdd, 0x8e, 0xf1, 0x58, 0xb4, 0x39, 0x72, 0x72, 0x44, 0x5f, 0xb2, 0x6e, 0x64, 0x9d, 0x25, + 0x2d, 0xfd, 0xb9, 0xc2, 0xee, 0x2f, 0x69, 0xeb, 0x06, 0x0f, 0x54, 0xad, 0xba, 0x1b, 0xa0, 0x8f, + 0x7d, 0x8c, 0x1f, 0x20, 0x15, 0x95, 0xef, 0x07, 0x58, 0x24, 0xe8, 0x16, 0x6f, 0x20, 0x11, 0xf3, + 0x13, 0x21, 0x29, 0x2f, 0x08, 0x56, 0x4f, 0x40, 0x10, 0x84, 0x28, 0xcb, 0x33, 0x1e, 0xce, 0x94, + 0x2c, 0xf8, 0xb7, 0x76, 0x02, 0x00, 0x3f, 0x8a, 0x49, 0xde, 0x8e, 0xca, 0xea, 0x48, 0xe8, 0x37, + 0x3e, 0xf1, 0xa6, 0x62, 0x36, 0x0e, 0x46, 0x1b, 0x94, 0x78, 0x3b, 0xcf, 0x2d, 0xc8, 0xc4, 0xe9, + 0x28, 0x0f, 0xb7, 0xa0, 0x62, 0x30, 0xa1, 0xf9, 0x73, 0x21, 0x29, 0x7f, 0x2c, 0xa0, 0xfb, 0x78, + 0x34, 0x5b, 0x73, 0x47, 0x43, 0xb0, 0x57, 0x72, 0x32, 0x89, 0xdf, 0xf8, 0x5f, 0xdf, 0x0c, 0xce, + 0x6e, 0xad, 0x06, 0xeb, 0x9a, 0x20, 0xa2, 0x43, 0x4a, 0x3c, 0xfc, 0x4c, 0x97, 0xfb, 0xd8, 0xb5, + 0x63, 0xb8, 0x63, 0xd7, 0x09, 0x4a, 0xd8, 0xfe, 0x31, 0x5e, 0x06, 0x41, 0x48, 0x34, 0x43, 0x6f, + 0x19, 0x49, 0x52, 0x24, 0x6e, 0x89, 0x8b, 0xa9, 0x20, 0x7f, 0xd4, 0x5a, 0x42, 0xa4, 0xe5, 0x60, + 0x95, 0xdf, 0xa8, 0xc4, 0x3b, 0xc3, 0x21, 0xe5, 0x40, 0xb4, 0x4d, 0x51, 0x1d, 0x57, 0xf9, 0x2c, + 0xc0, 0x6d, 0x95, 0x6f, 0xc5, 0x11, 0xf1, 0x8e, 0xe1, 0x55, 0xfe, 0xed, 0xd0, 0x12, 0xc1, 0xe7, + 0x54, 0xe8, 0x01, 0x2a, 0x40, 0x2b, 0xe3, 0xd1, 0x36, 0x6a, 0x36, 0xec, 0x0d, 0x71, 0x0d, 0x44, + 0x54, 0x24, 0x31, 0x79, 0x3b, 0x8e, 0x85, 0xfa, 0x47, 0x41, 0xfc, 0xf6, 0x1e, 0x25, 0x41, 0x2d, + 0x3d, 0xf6, 0x80, 0x07, 0x9a, 0x53, 0x70, 0x25, 0x2b, 0x84, 0xeb, 0x1b, 0xe2, 0x80, 0x24, 0xe2, + 0x3e, 0xa7, 0x6b, 0xe2, 0x5b, 0x40, 0x14, 0x6a, 0xac, 0x51, 0x09, 0xf6, 0x62, 0xd4, 0x9f, 0xce, + 0xa5, 0xd0, 0xd5, 0x9f, 0xae, 0x48, 0x42, 0xfa, 0x05, 0xc4, 0x9f, 0xee, 0x03, 0x68, 0x4c, 0x8b, + 0x2b, 0xf6, 0x26, 0x7e, 0x08, 0x0b, 0x8b, 0x27, 0xf6, 0x66, 0x4f, 0x9c, 0xb9, 0x68, 0xda, 0x89, + 0x36, 0x80, 0x00, 0xb8, 0x22, 0x60, 0xf1, 0x42, 0x24, 0xe3, 0x15, 0xb8, 0x46, 0xeb, 0xb7, 0x49, + 0x05, 0x55, 0x2f, 0xd0, 0xa4, 0x0d, 0x46, 0x2d, 0x9e, 0xc6, 0xc9, 0xb1, 0xaa, 0xdc, 0xab, 0x8a, + 0x41, 0xee, 0x49, 0x1b, 0x8a, 0xb1, 0xe6, 0x30, 0xac, 0x43, 0x95, 0x76, 0x09, 0xf0, 0x70, 0xd3, + 0x06, 0xd3, 0x44, 0x46, 0x4f, 0x04, 0x58, 0x83, 0xa0, 0xad, 0xa5, 0x08, 0x0b, 0xf9, 0xbe, 0x3e, + 0x11, 0x18, 0x25, 0x0f, 0x55, 0xa3, 0x21, 0x79, 0xb6, 0x79, 0xb8, 0xc8, 0x17, 0x25, 0x27, 0xd8, + 0x5e, 0x2a, 0x9c, 0xc8, 0xdc, 0x01, 0xb1, 0xb2, 0x8a, 0x25, 0x62, 0x63, 0xbe, 0x4b, 0xee, 0xc5, + 0xe5, 0xcc, 0x6a, 0x46, 0xb8, 0xef, 0x8f, 0x04, 0x70, 0xfd, 0x84, 0x48, 0x09, 0xb1, 0x90, 0x8a, + 0x5c, 0x02, 0x29, 0xc4, 0x42, 0xaa, 0xab, 0xeb, 0x27, 0x83, 0x32, 0xdd, 0x12, 0x1e, 0x41, 0x15, + 0x70, 0x54, 0x90, 0x4d, 0x9f, 0x62, 0x4d, 0xb3, 0x3a, 0x63, 0x21, 0x22, 0x96, 0x47, 0xb9, 0x57, + 0x90, 0x00, 0x56, 0xae, 0x4e, 0x5d, 0x82, 0xcf, 0x05, 0x71, 0x23, 0xe4, 0xa5, 0x0a, 0x37, 0xc7, + 0x6b, 0xa3, 0x91, 0x67, 0xda, 0xc2, 0xa1, 0xc4, 0x63, 0xf1, 0x68, 0xfb, 0xa1, 0x58, 0xc8, 0x6e, + 0xaf, 0xc6, 0x43, 0x72, 0xed, 0xd5, 0xf8, 0x2f, 0x10, 0xa1, 0x7f, 0x92, 0x94, 0x77, 0xa3, 0x9b, + 0x49, 0x6c, 0x8f, 0xd4, 0x49, 0x1c, 0x4d, 0xa0, 0xef, 0xed, 0xfc, 0xe5, 0x63, 0x24, 0x19, 0x17, + 0xbf, 0x08, 0x8b, 0xfa, 0x30, 0x7a, 0xa8, 0x54, 0x51, 0x21, 0xa6, 0x40, 0xf3, 0x91, 0x80, 0xfe, + 0x45, 0x21, 0x52, 0x1d, 0xf4, 0x2b, 0x36, 0x14, 0x04, 0x44, 0x5f, 0x77, 0x0b, 0x05, 0x41, 0x10, + 0xde, 0x4b, 0x40, 0x03, 0x68, 0x0e, 0xd3, 0x1a, 0xea, 0xd5, 0xab, 0xb7, 0x16, 0x8e, 0xbc, 0x4e, + 0xda, 0x74, 0xab, 0x6b, 0xdc, 0x04, 0x80, 0x32, 0x2b, 0xde, 0x12, 0x35, 0x12, 0x09, 0xd3, 0x8e, + 0xf2, 0x82, 0xb8, 0xc1, 0xac, 0x96, 0x12, 0xea, 0x88, 0x87, 0x13, 0x5d, 0x64, 0x2a, 0xe1, 0x0f, + 0x3c, 0x2b, 0x90, 0x7b, 0x2b, 0xc3, 0xc5, 0x13, 0xb1, 0x5b, 0xf1, 0x6e, 0x95, 0x38, 0xd6, 0xcc, + 0x0e, 0x68, 0xbd, 0x97, 0xf2, 0x99, 0x1e, 0x22, 0xb6, 0xf3, 0xe3, 0x72, 0xa6, 0x12, 0x95, 0xfc, + 0x28, 0x99, 0x4a, 0xde, 0x13, 0x20, 0x18, 0xca, 0x3e, 0xa5, 0x2b, 0x16, 0x0c, 0xc7, 0x55, 0xe7, + 0x60, 0x28, 0xfb, 0x94, 0xae, 0x06, 0xbd, 0xd4, 0x35, 0x18, 0x8a, 0x09, 0x32, 0xbd, 0xe9, 0x4d, + 0x41, 0xe6, 0xfa, 0x56, 0x92, 0xd3, 0x38, 0x25, 0x9e, 0x45, 0x10, 0xeb, 0xe3, 0x72, 0x54, 0x4c, + 0x2b, 0xad, 0xf1, 0xa7, 0xac, 0x4e, 0xad, 0x67, 0x72, 0x2e, 0xaa, 0x88, 0xbf, 0x16, 0x66, 0x71, + 0xae, 0x77, 0x97, 0x0e, 0x68, 0xb3, 0x7b, 0x3e, 0x48, 0xed, 0x8c, 0x70, 0xb0, 0x04, 0x6c, 0x0b, + 0x2a, 0x6d, 0x81, 0x9e, 0x09, 0x09, 0x58, 0xd9, 0xf8, 0x74, 0x26, 0x86, 0x11, 0xf6, 0x6e, 0xb4, + 0xa3, 0x14, 0x61, 0x69, 0x2a, 0xc9, 0x04, 0x16, 0x6b, 0xda, 0x27, 0x4a, 0x7b, 0x14, 0x92, 0x8a, + 0xa6, 0xb1, 0xa3, 0xa5, 0x45, 0x51, 0x13, 0x4a, 0xf3, 0xfe, 0x60, 0xe8, 0x70, 0x58, 0x9f, 0x64, + 0x76, 0x38, 0xcc, 0x85, 0x1c, 0x2c, 0x15, 0x7d, 0x67, 0x39, 0xaf, 0x10, 0xf9, 0x5f, 0x13, 0xbe, + 0x0c, 0x02, 0x9e, 0x46, 0x3f, 0x2c, 0x63, 0xad, 0x10, 0xe8, 0x86, 0x0f, 0xc6, 0x0c, 0xd3, 0xa6, + 0x74, 0x2a, 0x6d, 0x6a, 0xa0, 0x1b, 0xff, 0x5f, 0xcc, 0xd3, 0x5f, 0xd2, 0x34, 0x1a, 0xfa, 0xb7, + 0x90, 0x84, 0x29, 0x2a, 0xe2, 0x2b, 0x20, 0x0a, 0xe1, 0xae, 0x05, 0x1d, 0x90, 0x96, 0xbe, 0x6e, + 0x4c, 0x34, 0x70, 0x74, 0x46, 0xfb, 0xba, 0xe3, 0xe3, 0x72, 0xfa, 0x3a, 0x3d, 0x53, 0x43, 0xff, + 0xce, 0xaa, 0xde, 0xa7, 0xd4, 0xfa, 0xf6, 0x60, 0x8b, 0xe2, 0xa2, 0x7a, 0x09, 0xc2, 0x5b, 0xf5, + 0x1a, 0x40, 0x22, 0xce, 0xa8, 0x90, 0x94, 0x9f, 0xa6, 0xa9, 0x9e, 0x70, 0xbb, 0x61, 0xdb, 0x50, + 0x08, 0xca, 0xbe, 0x32, 0x7e, 0x56, 0x3b, 0x3e, 0x42, 0x84, 0xdb, 0xe5, 0xda, 0xda, 0x9c, 0xb7, + 0xca, 0xd1, 0xc9, 0x51, 0x35, 0x8c, 0xa5, 0x5c, 0x21, 0xfe, 0x8e, 0x96, 0x01, 0xa9, 0xa2, 0xad, + 0x9e, 0x83, 0x56, 0x75, 0x3d, 0xb7, 0x2d, 0x86, 0x9a, 0x61, 0x88, 0xea, 0xd8, 0xbe, 0x4d, 0xa4, + 0xbd, 0x8b, 0x27, 0xad, 0x36, 0xda, 0x93, 0x4d, 0x5d, 0x06, 0x1f, 0x14, 0x36, 0x7b, 0x93, 0x6b, + 0x4e, 0x26, 0xce, 0x20, 0x57, 0xd1, 0x3f, 0x31, 0x2b, 0x62, 0x7a, 0x14, 0xd0, 0x15, 0x53, 0xf8, + 0x2b, 0x62, 0x06, 0xe4, 0xb9, 0x22, 0xb6, 0x60, 0x89, 0xb8, 0xf1, 0xa4, 0x7c, 0x1f, 0x55, 0xd5, + 0xc6, 0xf6, 0x13, 0x92, 0xb3, 0x4a, 0xb7, 0x81, 0xcc, 0xf2, 0xbe, 0xc6, 0x7d, 0x8e, 0x00, 0x17, + 0x07, 0x56, 0xde, 0xe6, 0x54, 0x1f, 0x9e, 0x7a, 0x83, 0xde, 0x4c, 0xeb, 0x54, 0x13, 0x8c, 0x34, + 0x3f, 0x17, 0x6e, 0x4e, 0x1c, 0x6e, 0x08, 0x86, 0x5a, 0x83, 0x2d, 0x8a, 0x8a, 0xee, 0xe2, 0x55, + 0xdf, 0x06, 0xe5, 0xba, 0x44, 0xb8, 0xbc, 0x41, 0xc4, 0x6e, 0x81, 0xfd, 0x38, 0x95, 0x4a, 0xeb, + 0xbd, 0x92, 0x4d, 0xff, 0x4c, 0x4b, 0x5d, 0xd0, 0x66, 0x97, 0xb4, 0xc1, 0x5e, 0x89, 0x5b, 0x52, + 0xce, 0x92, 0xb1, 0xe9, 0xb9, 0x18, 0xbe, 0x64, 0xbb, 0xd1, 0x5c, 0xa0, 0x77, 0x44, 0x12, 0xe1, + 0x76, 0x48, 0x4c, 0xc0, 0x3f, 0xda, 0x61, 0x50, 0xde, 0x47, 0x3b, 0x16, 0x30, 0x11, 0xee, 0x84, + 0x90, 0x94, 0x9f, 0x44, 0xb7, 0x9a, 0x7d, 0x58, 0xef, 0x9a, 0xd8, 0x96, 0x3f, 0x37, 0xb1, 0x40, + 0xfa, 0xf3, 0x76, 0xb7, 0xd1, 0x6b, 0xc7, 0x97, 0xd3, 0xd4, 0x71, 0xa8, 0x12, 0xce, 0xc8, 0xf0, + 0x4b, 0xa2, 0x88, 0x9f, 0x8a, 0x91, 0x20, 0xa8, 0x4f, 0x44, 0x5b, 0x38, 0x8a, 0xd8, 0x02, 0x71, + 0x55, 0xc4, 0x45, 0x48, 0x33, 0xb2, 0xa4, 0xd1, 0xa4, 0xa0, 0x7e, 0x72, 0x13, 0xd3, 0xda, 0xf2, + 0x04, 0x11, 0x98, 0x5b, 0xe2, 0x62, 0xb0, 0x1c, 0xa5, 0x3f, 0xd4, 0xa6, 0xd7, 0xfa, 0x23, 0xa2, + 0x82, 0x0f, 0x06, 0xd5, 0xd6, 0xc6, 0x84, 0x12, 0xc3, 0xa2, 0x6c, 0xe6, 0xd9, 0x25, 0x53, 0x84, + 0xab, 0x0a, 0xb6, 0x02, 0xd9, 0x08, 0x5b, 0xc4, 0x4c, 0x8c, 0xba, 0xe1, 0x4f, 0xaf, 0x5c, 0x7e, + 0xc3, 0x22, 0x8e, 0x47, 0x39, 0x44, 0xd8, 0x42, 0xb7, 0x71, 0x0c, 0x8c, 0xd5, 0x84, 0x12, 0xc3, + 0x32, 0xbd, 0x2f, 0x88, 0x6b, 0x4d, 0x4b, 0xea, 0x50, 0x34, 0xde, 0xec, 0x70, 0xa0, 0x50, 0x04, + 0xe0, 0x1e, 0x28, 0xd8, 0x70, 0x66, 0x98, 0x42, 0x73, 0xb0, 0xe1, 0x0a, 0x17, 0x66, 0xe7, 0xb5, + 0xa5, 0x71, 0x6b, 0xcb, 0xd8, 0x4b, 0x20, 0xce, 0x22, 0xaa, 0xe0, 0x08, 0x11, 0x27, 0xf5, 0x3d, + 0xee, 0x13, 0x11, 0x76, 0x50, 0xae, 0x6b, 0xda, 0x1b, 0x56, 0x13, 0xd1, 0x78, 0x17, 0xce, 0xfc, + 0xe8, 0x1c, 0xeb, 0xc3, 0x82, 0xe1, 0x5f, 0x29, 0x39, 0x40, 0x19, 0x3f, 0x33, 0x05, 0xdd, 0x49, + 0x02, 0x1f, 0x0c, 0xf7, 0x69, 0x23, 0x6f, 0x43, 0xcd, 0x03, 0xd0, 0xb5, 0x40, 0x00, 0x68, 0x0b, + 0xf8, 0x2c, 0xed, 0x26, 0x07, 0xa5, 0xd8, 0xa9, 0x06, 0xc6, 0x5a, 0x25, 0x78, 0x0e, 0x55, 0xe6, + 0x86, 0x93, 0x5a, 0x7a, 0x04, 0x4e, 0xee, 0xe1, 0xcb, 0x22, 0xb9, 0x73, 0x53, 0x4c, 0x16, 0x91, + 0xcd, 0x55, 0x4e, 0x6e, 0x13, 0xcd, 0x4d, 0xcd, 0xc1, 0x44, 0x50, 0x0d, 0x74, 0xeb, 0xff, 0xe9, + 0xfa, 0xfc, 0x08, 0xfa, 0x0b, 0x32, 0x4b, 0xd2, 0x23, 0xab, 0xc6, 0xd0, 0x61, 0xa5, 0x3d, 0xe8, + 0x3c, 0x4b, 0x5a, 0x31, 0x94, 0x85, 0x0a, 0xe7, 0x1c, 0x28, 0xe4, 0x85, 0x98, 0xde, 0x2f, 0x8d, + 0x66, 0x24, 0x27, 0xc1, 0x97, 0xa6, 0x8c, 0x35, 0x9d, 0xc4, 0x2d, 0x71, 0x99, 0xf3, 0xe9, 0xf1, + 0x96, 0x8a, 0x2b, 0xc2, 0x84, 0xe3, 0xfb, 0xc0, 0x7a, 0x98, 0x47, 0x84, 0x71, 0x3b, 0xcc, 0xb3, + 0xca, 0xe2, 0x96, 0xcf, 0xe5, 0x47, 0x1c, 0x39, 0xa8, 0xfd, 0x01, 0xaf, 0xc4, 0x65, 0xb3, 0xc5, + 0x93, 0x23, 0xd0, 0x1d, 0x09, 0xb6, 0x2b, 0x47, 0xd0, 0x4b, 0x3e, 0xf1, 0x86, 0xef, 0x77, 0x28, + 0xf1, 0xae, 0x06, 0x25, 0xde, 0x5e, 0xd3, 0x25, 0x87, 0x74, 0xa5, 0x52, 0x5f, 0x67, 0x9f, 0xd6, + 0x1d, 0x40, 0xdc, 0x69, 0xdd, 0x11, 0x4b, 0x7a, 0xe9, 0xb4, 0x90, 0x94, 0xdb, 0xd0, 0xae, 0xdc, + 0xf9, 0xa9, 0x95, 0xcb, 0x83, 0x60, 0x5f, 0x0c, 0x47, 0xf8, 0xd5, 0xda, 0xd2, 0x58, 0x6e, 0xe2, + 0x3c, 0xfc, 0x91, 0x9b, 0x58, 0xa0, 0x51, 0x40, 0xc8, 0x93, 0x1f, 0x1c, 0x78, 0x42, 0x5a, 0xd5, + 0x5b, 0x2e, 0xf9, 0x7d, 0x63, 0x4a, 0xbc, 0x5d, 0x0d, 0x04, 0x71, 0x15, 0xf1, 0x95, 0x12, 0xd4, + 0xf5, 0x08, 0x8d, 0xe4, 0xac, 0x77, 0xb0, 0x9a, 0x7d, 0x9c, 0x38, 0xc3, 0x4c, 0x61, 0xa9, 0xfd, + 0xf4, 0x8f, 0x99, 0xdd, 0xa7, 0x3e, 0x83, 0x0f, 0xa6, 0xcd, 0xd3, 0x4b, 0xe7, 0xc7, 0x2e, 0x53, + 0x40, 0x24, 0xda, 0xac, 0xb4, 0x07, 0x23, 0x24, 0x1a, 0xed, 0x5f, 0x09, 0xe2, 0xb7, 0xf0, 0xd4, + 0x5b, 0x7b, 0x30, 0x1a, 0x8b, 0xb6, 0x45, 0x5b, 0xba, 0x9c, 0x53, 0x39, 0x9a, 0xe5, 0xa5, 0x74, + 0xc8, 0x23, 0xac, 0xc2, 0xc7, 0x9e, 0x83, 0xd9, 0x54, 0x26, 0x77, 0x36, 0x0d, 0x39, 0x61, 0x72, + 0x27, 0xc7, 0x72, 0x03, 0xa7, 0x24, 0x8f, 0x72, 0xef, 0x20, 0x6d, 0xd6, 0x24, 0xe3, 0xa1, 0x40, + 0x82, 0x4a, 0x70, 0xc9, 0x27, 0xae, 0xdf, 0xa3, 0x24, 0x6a, 0x5a, 0x1b, 0xa3, 0x31, 0x95, 0xda, + 0x31, 0xe8, 0x52, 0x38, 0x7a, 0x80, 0xdb, 0x61, 0x6e, 0x1e, 0xe0, 0x4e, 0x68, 0xd2, 0x45, 0xaf, + 0x08, 0x49, 0xb9, 0x1d, 0x6d, 0x26, 0xd3, 0xf2, 0xf9, 0x7e, 0xad, 0xbf, 0xaf, 0xb0, 0x3c, 0x9a, + 0xcf, 0x5c, 0x05, 0x75, 0x0a, 0x39, 0x71, 0x0c, 0xab, 0x07, 0xa9, 0x06, 0x80, 0xa4, 0x57, 0x9e, + 0x1d, 0x80, 0x9e, 0x67, 0xf8, 0x5a, 0x66, 0x53, 0x27, 0x3d, 0xbf, 0xc3, 0x25, 0x14, 0x59, 0x53, + 0xab, 0x1a, 0x8d, 0xa9, 0x81, 0xa6, 0x0e, 0x55, 0xdf, 0xe9, 0xaa, 0x81, 0x6e, 0xfa, 0x89, 0xf5, + 0x71, 0x56, 0xd1, 0xcf, 0x9d, 0xa8, 0xc2, 0xcb, 0x39, 0x6f, 0xaa, 0xd8, 0xf5, 0xdc, 0xb6, 0x12, + 0xd1, 0x84, 0xaa, 0x77, 0xbf, 0x1a, 0xaa, 0x9c, 0x6d, 0xad, 0x4a, 0xa3, 0x2a, 0xd0, 0x9d, 0x60, + 0x4c, 0x6f, 0x2e, 0xfa, 0xc4, 0x9b, 0xf6, 0x28, 0x09, 0x9c, 0x0f, 0x8c, 0x4a, 0x78, 0x28, 0xd8, + 0xd6, 0xa1, 0xa8, 0xc8, 0x89, 0x0a, 0x07, 0x1c, 0xf7, 0xf4, 0x9b, 0x07, 0x27, 0xd4, 0xcd, 0xe0, + 0x84, 0x87, 0xc4, 0x0a, 0xa7, 0xa6, 0xb6, 0x51, 0xbb, 0xfe, 0x8e, 0x36, 0x32, 0xaf, 0xf5, 0xf5, + 0x42, 0xf4, 0x14, 0x22, 0xf3, 0xc8, 0xcb, 0x2b, 0xfd, 0x23, 0xd2, 0x81, 0x52, 0x50, 0xd5, 0xe4, + 0x42, 0x34, 0xf5, 0x76, 0xee, 0xb5, 0x31, 0xa0, 0x58, 0x47, 0xd8, 0x08, 0x05, 0xf3, 0x60, 0x97, + 0xfd, 0x02, 0xe1, 0x91, 0xd2, 0xd4, 0x09, 0x74, 0xfc, 0xb9, 0x20, 0xae, 0xad, 0x53, 0x9a, 0x3a, + 0x5a, 0x48, 0x77, 0x08, 0xaa, 0xad, 0x4e, 0xb1, 0x42, 0x2d, 0x00, 0x97, 0x58, 0xa1, 0x45, 0x38, + 0x42, 0x4a, 0x10, 0xcf, 0x80, 0x85, 0xf9, 0xe3, 0x85, 0xb9, 0x71, 0x7b, 0xcd, 0x25, 0x6e, 0x09, + 0xc4, 0xa2, 0xf5, 0xdf, 0xc6, 0x97, 0xa6, 0x59, 0xff, 0x45, 0x5d, 0xb1, 0x8f, 0x91, 0x91, 0x12, + 0x4c, 0x84, 0x0e, 0xd7, 0x76, 0xa8, 0x89, 0x68, 0x7b, 0xa3, 0x92, 0x48, 0x84, 0x23, 0x2d, 0xce, + 0x23, 0xc5, 0x06, 0x73, 0x1d, 0x29, 0x0e, 0x68, 0x22, 0xd9, 0x59, 0x01, 0xdf, 0xf0, 0xc0, 0xb9, + 0x4b, 0x7d, 0x83, 0xbe, 0xb7, 0x39, 0xf9, 0xa6, 0x76, 0xe6, 0x12, 0xf8, 0x9c, 0xad, 0x4c, 0x91, + 0x34, 0x7a, 0x92, 0x27, 0x02, 0x8b, 0xfa, 0x94, 0xdf, 0xc9, 0xfe, 0xec, 0x39, 0xa5, 0x29, 0x10, + 0x62, 0x7f, 0x5d, 0x0d, 0xa8, 0xa1, 0x68, 0x4c, 0x09, 0x74, 0xe3, 0xff, 0xf0, 0x72, 0x8c, 0x7c, + 0xae, 0x6f, 0x3e, 0x02, 0xf9, 0xc9, 0xf7, 0x28, 0x09, 0x9d, 0x95, 0x39, 0x9f, 0x88, 0x74, 0x01, + 0xc2, 0xcf, 0xd3, 0xf9, 0x61, 0x6f, 0x54, 0x75, 0xb8, 0x74, 0xb6, 0x63, 0xb8, 0x4b, 0x55, 0x27, + 0x28, 0x21, 0xe3, 0x7d, 0x21, 0x29, 0x47, 0xd0, 0x3d, 0xe4, 0x10, 0x0a, 0x8f, 0x7d, 0xbd, 0xab, + 0xe2, 0xf9, 0x22, 0x77, 0xfe, 0x94, 0x2d, 0x38, 0x06, 0x81, 0x60, 0x83, 0x43, 0x69, 0x75, 0xaf, + 0x81, 0xcb, 0x92, 0xff, 0x51, 0x0e, 0x6d, 0x6e, 0x3c, 0xd1, 0xf9, 0x28, 0x70, 0x38, 0xaa, 0x26, + 0x6a, 0xa3, 0x1d, 0x91, 0x04, 0x09, 0x11, 0xb0, 0x6e, 0x8f, 0x92, 0xa0, 0xf2, 0xe1, 0x18, 0x44, + 0x8e, 0xa9, 0x75, 0x2c, 0x08, 0xee, 0xa6, 0xcb, 0x0e, 0x64, 0xe2, 0x91, 0x3c, 0x83, 0x10, 0xb9, + 0x51, 0xc0, 0xb2, 0xc2, 0x24, 0x2b, 0x35, 0xb0, 0xcf, 0xb0, 0x12, 0xd5, 0x1f, 0xbb, 0xb2, 0x40, + 0x2d, 0x5c, 0x17, 0xb2, 0x19, 0x12, 0x52, 0x15, 0x96, 0xfb, 0x30, 0x61, 0x83, 0x69, 0xa3, 0x7f, + 0xcf, 0x17, 0xe5, 0x48, 0x85, 0x14, 0xf8, 0x38, 0xd4, 0xbc, 0x4f, 0xdc, 0xc0, 0x88, 0xa6, 0xf7, + 0x82, 0xfa, 0x66, 0x15, 0xc8, 0xda, 0xee, 0xc2, 0x01, 0x0b, 0xe4, 0x5e, 0x5b, 0x70, 0xf1, 0x4c, + 0x37, 0x7b, 0x16, 0xdd, 0x68, 0xa7, 0xae, 0xbe, 0x4e, 0x3a, 0xe0, 0x48, 0x5e, 0x7d, 0xdd, 0x17, + 0xa5, 0xef, 0x49, 0x7f, 0xfd, 0x17, 0xa5, 0x2f, 0xdc, 0xcc, 0x10, 0xd8, 0xeb, 0xc3, 0x17, 0xeb, + 0xba, 0x7c, 0x6a, 0x9d, 0x92, 0x08, 0x86, 0xdb, 0x9c, 0x2f, 0xd6, 0x59, 0x80, 0xdb, 0xc5, 0xba, + 0x15, 0xc7, 0x64, 0x67, 0x3c, 0x80, 0x48, 0xe0, 0x6f, 0xca, 0x84, 0x4a, 0x18, 0x82, 0xf8, 0x5f, + 0x6c, 0x62, 0xc9, 0x52, 0x81, 0x98, 0x90, 0x47, 0xfd, 0x8f, 0xac, 0x82, 0x10, 0xe8, 0x46, 0xcd, + 0x50, 0x4f, 0x12, 0xaa, 0x5a, 0xdf, 0x77, 0x35, 0xea, 0x00, 0x5d, 0x06, 0x7c, 0x25, 0xe9, 0xb8, + 0xef, 0xb2, 0x42, 0xdc, 0x8c, 0x28, 0x8a, 0x91, 0x84, 0x8d, 0xbf, 0x15, 0x92, 0xf2, 0x90, 0x80, + 0x76, 0x82, 0x94, 0xf5, 0x0d, 0x81, 0xfa, 0x86, 0xce, 0xdd, 0x01, 0x90, 0x56, 0x1b, 0x1d, 0xca, + 0xcf, 0x0c, 0x80, 0x78, 0x54, 0x0f, 0xe1, 0xe7, 0xb0, 0xc0, 0xf9, 0x23, 0x42, 0x05, 0xce, 0x74, + 0x6e, 0x2c, 0x6a, 0x2a, 0xc9, 0x82, 0x67, 0xe0, 0xa4, 0xf6, 0xe2, 0xa5, 0xc2, 0xbb, 0x63, 0x5a, + 0xef, 0x74, 0x7e, 0xb2, 0xa7, 0xb4, 0x2f, 0x66, 0x98, 0xac, 0xf1, 0x3f, 0xb4, 0x4a, 0x26, 0x03, + 0x21, 0x5d, 0x40, 0x9d, 0xc6, 0x1e, 0x9f, 0xb8, 0x9e, 0x31, 0x4b, 0x85, 0x8c, 0x94, 0x8f, 0xb5, + 0x05, 0x1d, 0x66, 0x3f, 0x47, 0x18, 0x77, 0xf6, 0xe3, 0xa0, 0x19, 0xb7, 0x2e, 0x19, 0xad, 0x87, + 0x84, 0xa4, 0xd9, 0xf4, 0xa9, 0x7c, 0xa6, 0x27, 0x9b, 0x59, 0x80, 0x95, 0x88, 0xb4, 0xc5, 0x78, + 0x4c, 0x73, 0x96, 0x60, 0x17, 0xc3, 0xfc, 0xc0, 0x89, 0xdc, 0xd9, 0xb7, 0x60, 0x68, 0x31, 0x6b, + 0x96, 0x5a, 0xff, 0x1f, 0x96, 0x74, 0x57, 0xac, 0xc4, 0x55, 0xd8, 0xd6, 0x91, 0x4f, 0x34, 0x1b, + 0x25, 0xee, 0x4d, 0x27, 0x8d, 0x30, 0x65, 0x9e, 0x34, 0x38, 0xc2, 0x3c, 0xc2, 0x94, 0xf1, 0x68, + 0x38, 0x2d, 0x24, 0xe5, 0x87, 0x90, 0x69, 0x0d, 0x6b, 0xa1, 0xe1, 0x0e, 0x33, 0x3b, 0x0e, 0x23, + 0x7f, 0x7e, 0xb2, 0x87, 0x45, 0x81, 0x8e, 0x91, 0xea, 0xbf, 0x18, 0x05, 0x81, 0x6e, 0xf8, 0x40, + 0xf6, 0xba, 0x27, 0x7c, 0xe2, 0x7a, 0xc6, 0xbc, 0xd3, 0x8d, 0x0d, 0x47, 0x18, 0x97, 0x0d, 0x0e, + 0x9a, 0xb0, 0x71, 0x0a, 0xd8, 0x80, 0x33, 0x26, 0x1b, 0x1b, 0xc6, 0x63, 0x2f, 0x36, 0xf6, 0x55, + 0x7d, 0x79, 0x6c, 0xe8, 0xea, 0xf6, 0x06, 0xe3, 0x08, 0x9b, 0x21, 0x82, 0x7f, 0x51, 0x63, 0xa7, + 0xe1, 0xce, 0x92, 0xb0, 0x4c, 0x97, 0x78, 0x84, 0x39, 0x14, 0xb0, 0x90, 0xb0, 0x99, 0x67, 0xc8, + 0x58, 0x04, 0x04, 0x1e, 0xd0, 0x97, 0xc8, 0xc3, 0x94, 0x20, 0x7e, 0x6d, 0xaf, 0x12, 0x6c, 0x4b, + 0x1c, 0x46, 0xdf, 0x29, 0x16, 0x07, 0x9e, 0x73, 0x0f, 0x3d, 0x68, 0xb1, 0x99, 0x0a, 0x6a, 0x17, + 0xda, 0x98, 0x3b, 0x3b, 0xa4, 0x6f, 0x3d, 0x8e, 0x4d, 0x6b, 0xe9, 0x6b, 0x60, 0x52, 0x08, 0xe1, + 0x08, 0x24, 0x6e, 0x09, 0x96, 0xe9, 0x16, 0x74, 0xb3, 0x83, 0x4c, 0x87, 0xf1, 0x2f, 0xd4, 0x8c, + 0x0a, 0x49, 0x79, 0x50, 0x40, 0x95, 0xe2, 0x06, 0x62, 0x59, 0x54, 0xb9, 0x1f, 0x30, 0x95, 0x72, + 0x43, 0x7d, 0x65, 0x5d, 0x34, 0xb4, 0xf3, 0xf7, 0xee, 0xda, 0xbe, 0x63, 0xfb, 0x5d, 0x7e, 0x31, + 0xd0, 0x14, 0x52, 0x83, 0xb1, 0x70, 0xa0, 0x73, 0x57, 0x95, 0xe0, 0xdb, 0xb9, 0x2e, 0x18, 0x8b, + 0xb5, 0x85, 0x43, 0xf8, 0xfc, 0x3c, 0xf0, 0xac, 0x1a, 0x8d, 0x3c, 0x60, 0x7b, 0xf2, 0xf4, 0x1f, + 0x88, 0xb7, 0x8b, 0xa2, 0x1c, 0x0b, 0xef, 0x53, 0xba, 0xe4, 0x8e, 0xc4, 0x61, 0x74, 0xc3, 0xd7, + 0x7d, 0xd2, 0x37, 0xf5, 0x4f, 0xd1, 0x78, 0xf8, 0x79, 0x8c, 0xab, 0xf4, 0x35, 0xad, 0x13, 0xbf, + 0x65, 0x01, 0xfd, 0x4e, 0xd3, 0xd7, 0x62, 0xf1, 0x68, 0x22, 0x7a, 0xf7, 0x7f, 0x07, 0x00, 0x00, + 0xff, 0xff, 0x52, 0xb0, 0x31, 0x4b, 0x01, 0x9f, 0x04, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -37954,6 +38541,7 @@ type ClusterManagerClient interface { GetNodeGroup(ctx context.Context, in *GetNodeGroupRequest, opts ...grpc.CallOption) (*GetNodeGroupResponse, error) ListClusterNodeGroup(ctx context.Context, in *ListClusterNodeGroupRequest, opts ...grpc.CallOption) (*ListClusterNodeGroupResponse, error) ListNodeGroup(ctx context.Context, in *ListNodeGroupRequest, opts ...grpc.CallOption) (*ListNodeGroupResponse, error) + RecommendNodeGroupConf(ctx context.Context, in *RecommendNodeGroupConfReq, opts ...grpc.CallOption) (*RecommendNodeGroupConfResp, error) MoveNodesToGroup(ctx context.Context, in *MoveNodesToGroupRequest, opts ...grpc.CallOption) (*MoveNodesToGroupResponse, error) RemoveNodesFromGroup(ctx context.Context, in *RemoveNodesFromGroupRequest, opts ...grpc.CallOption) (*RemoveNodesFromGroupResponse, error) CleanNodesInGroup(ctx context.Context, in *CleanNodesInGroupRequest, opts ...grpc.CallOption) (*CleanNodesInGroupResponse, error) @@ -38588,6 +39176,15 @@ func (c *clusterManagerClient) ListNodeGroup(ctx context.Context, in *ListNodeGr return out, nil } +func (c *clusterManagerClient) RecommendNodeGroupConf(ctx context.Context, in *RecommendNodeGroupConfReq, opts ...grpc.CallOption) (*RecommendNodeGroupConfResp, error) { + out := new(RecommendNodeGroupConfResp) + err := c.cc.Invoke(ctx, "/clustermanager.ClusterManager/RecommendNodeGroupConf", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *clusterManagerClient) MoveNodesToGroup(ctx context.Context, in *MoveNodesToGroupRequest, opts ...grpc.CallOption) (*MoveNodesToGroupResponse, error) { out := new(MoveNodesToGroupResponse) err := c.cc.Invoke(ctx, "/clustermanager.ClusterManager/MoveNodesToGroup", in, out, opts...) @@ -39437,6 +40034,7 @@ type ClusterManagerServer interface { GetNodeGroup(context.Context, *GetNodeGroupRequest) (*GetNodeGroupResponse, error) ListClusterNodeGroup(context.Context, *ListClusterNodeGroupRequest) (*ListClusterNodeGroupResponse, error) ListNodeGroup(context.Context, *ListNodeGroupRequest) (*ListNodeGroupResponse, error) + RecommendNodeGroupConf(context.Context, *RecommendNodeGroupConfReq) (*RecommendNodeGroupConfResp, error) MoveNodesToGroup(context.Context, *MoveNodesToGroupRequest) (*MoveNodesToGroupResponse, error) RemoveNodesFromGroup(context.Context, *RemoveNodesFromGroupRequest) (*RemoveNodesFromGroupResponse, error) CleanNodesInGroup(context.Context, *CleanNodesInGroupRequest) (*CleanNodesInGroupResponse, error) @@ -39725,6 +40323,9 @@ func (*UnimplementedClusterManagerServer) ListClusterNodeGroup(ctx context.Conte func (*UnimplementedClusterManagerServer) ListNodeGroup(ctx context.Context, req *ListNodeGroupRequest) (*ListNodeGroupResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListNodeGroup not implemented") } +func (*UnimplementedClusterManagerServer) RecommendNodeGroupConf(ctx context.Context, req *RecommendNodeGroupConfReq) (*RecommendNodeGroupConfResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method RecommendNodeGroupConf not implemented") +} func (*UnimplementedClusterManagerServer) MoveNodesToGroup(ctx context.Context, req *MoveNodesToGroupRequest) (*MoveNodesToGroupResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method MoveNodesToGroup not implemented") } @@ -41017,6 +41618,24 @@ func _ClusterManager_ListNodeGroup_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _ClusterManager_RecommendNodeGroupConf_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RecommendNodeGroupConfReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ClusterManagerServer).RecommendNodeGroupConf(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/clustermanager.ClusterManager/RecommendNodeGroupConf", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ClusterManagerServer).RecommendNodeGroupConf(ctx, req.(*RecommendNodeGroupConfReq)) + } + return interceptor(ctx, in, info, handler) +} + func _ClusterManager_MoveNodesToGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MoveNodesToGroupRequest) if err := dec(in); err != nil { @@ -42815,6 +43434,10 @@ var _ClusterManager_serviceDesc = grpc.ServiceDesc{ MethodName: "ListNodeGroup", Handler: _ClusterManager_ListNodeGroup_Handler, }, + { + MethodName: "RecommendNodeGroupConf", + Handler: _ClusterManager_RecommendNodeGroupConf_Handler, + }, { MethodName: "MoveNodesToGroup", Handler: _ClusterManager_MoveNodesToGroup_Handler, diff --git a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.gw.go b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.gw.go index dfc82151c5..21d9b1e799 100644 --- a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.gw.go +++ b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.gw.go @@ -3079,6 +3079,78 @@ func local_request_ClusterManager_ListNodeGroup_0(ctx context.Context, marshaler } +var ( + filter_ClusterManager_RecommendNodeGroupConf_0 = &utilities.DoubleArray{Encoding: map[string]int{"cloudID": 0}, Base: []int{1, 1, 0}, Check: []int{0, 1, 2}} +) + +func request_ClusterManager_RecommendNodeGroupConf_0(ctx context.Context, marshaler runtime.Marshaler, client ClusterManagerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq RecommendNodeGroupConfReq + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["cloudID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cloudID") + } + + protoReq.CloudID, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cloudID", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterManager_RecommendNodeGroupConf_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.RecommendNodeGroupConf(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_ClusterManager_RecommendNodeGroupConf_0(ctx context.Context, marshaler runtime.Marshaler, server ClusterManagerServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq RecommendNodeGroupConfReq + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["cloudID"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "cloudID") + } + + protoReq.CloudID, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "cloudID", err) + } + + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_ClusterManager_RecommendNodeGroupConf_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.RecommendNodeGroupConf(ctx, &protoReq) + return msg, metadata, err + +} + func request_ClusterManager_MoveNodesToGroup_0(ctx context.Context, marshaler runtime.Marshaler, client ClusterManagerClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq MoveNodesToGroupRequest var metadata runtime.ServerMetadata @@ -10338,6 +10410,26 @@ func RegisterClusterManagerGwServer(ctx context.Context, mux *runtime.ServeMux, }) + mux.Handle("GET", pattern_ClusterManager_RecommendNodeGroupConf_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_ClusterManager_RecommendNodeGroupConf_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ClusterManager_RecommendNodeGroupConf_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_ClusterManager_MoveNodesToGroup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -13259,6 +13351,26 @@ func RegisterClusterManagerGwClient(ctx context.Context, mux *runtime.ServeMux, }) + mux.Handle("GET", pattern_ClusterManager_RecommendNodeGroupConf_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_ClusterManager_RecommendNodeGroupConf_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_ClusterManager_RecommendNodeGroupConf_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("POST", pattern_ClusterManager_MoveNodesToGroup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -15117,6 +15229,8 @@ var ( pattern_ClusterManager_ListNodeGroup_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"clustermanager", "v1", "nodegroup"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ClusterManager_RecommendNodeGroupConf_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"clustermanager", "v1", "cloud", "cloudID", "recommendNodeGroupConf"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_ClusterManager_MoveNodesToGroup_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"clustermanager", "v1", "nodegroup", "nodeGroupID", "node"}, "", runtime.AssumeColonVerbOpt(true))) pattern_ClusterManager_RemoveNodesFromGroup_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"clustermanager", "v1", "nodegroup", "nodeGroupID", "node"}, "", runtime.AssumeColonVerbOpt(true))) @@ -15407,6 +15521,8 @@ var ( forward_ClusterManager_ListNodeGroup_0 = runtime.ForwardResponseMessage + forward_ClusterManager_RecommendNodeGroupConf_0 = runtime.ForwardResponseMessage + forward_ClusterManager_MoveNodesToGroup_0 = runtime.ForwardResponseMessage forward_ClusterManager_RemoveNodesFromGroup_0 = runtime.ForwardResponseMessage diff --git a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.micro.go b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.micro.go index 67ad3631fa..8473274c56 100644 --- a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.micro.go +++ b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.micro.go @@ -378,6 +378,12 @@ func NewClusterManagerEndpoints() []*api.Endpoint { Method: []string{"GET"}, Handler: "rpc", }, + { + Name: "ClusterManager.RecommendNodeGroupConf", + Path: []string{"/clustermanager/v1/cloud/{cloudID}/recommendNodeGroupConf"}, + Method: []string{"GET"}, + Handler: "rpc", + }, { Name: "ClusterManager.MoveNodesToGroup", Path: []string{"/clustermanager/v1/nodegroup/{nodeGroupID}/node"}, @@ -970,6 +976,7 @@ type ClusterManagerService interface { GetNodeGroup(ctx context.Context, in *GetNodeGroupRequest, opts ...client.CallOption) (*GetNodeGroupResponse, error) ListClusterNodeGroup(ctx context.Context, in *ListClusterNodeGroupRequest, opts ...client.CallOption) (*ListClusterNodeGroupResponse, error) ListNodeGroup(ctx context.Context, in *ListNodeGroupRequest, opts ...client.CallOption) (*ListNodeGroupResponse, error) + RecommendNodeGroupConf(ctx context.Context, in *RecommendNodeGroupConfReq, opts ...client.CallOption) (*RecommendNodeGroupConfResp, error) MoveNodesToGroup(ctx context.Context, in *MoveNodesToGroupRequest, opts ...client.CallOption) (*MoveNodesToGroupResponse, error) RemoveNodesFromGroup(ctx context.Context, in *RemoveNodesFromGroupRequest, opts ...client.CallOption) (*RemoveNodesFromGroupResponse, error) CleanNodesInGroup(ctx context.Context, in *CleanNodesInGroupRequest, opts ...client.CallOption) (*CleanNodesInGroupResponse, error) @@ -1665,6 +1672,16 @@ func (c *clusterManagerService) ListNodeGroup(ctx context.Context, in *ListNodeG return out, nil } +func (c *clusterManagerService) RecommendNodeGroupConf(ctx context.Context, in *RecommendNodeGroupConfReq, opts ...client.CallOption) (*RecommendNodeGroupConfResp, error) { + req := c.c.NewRequest(c.name, "ClusterManager.RecommendNodeGroupConf", in) + out := new(RecommendNodeGroupConfResp) + err := c.c.Call(ctx, req, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *clusterManagerService) MoveNodesToGroup(ctx context.Context, in *MoveNodesToGroupRequest, opts ...client.CallOption) (*MoveNodesToGroupResponse, error) { req := c.c.NewRequest(c.name, "ClusterManager.MoveNodesToGroup", in) out := new(MoveNodesToGroupResponse) @@ -2602,6 +2619,7 @@ type ClusterManagerHandler interface { GetNodeGroup(context.Context, *GetNodeGroupRequest, *GetNodeGroupResponse) error ListClusterNodeGroup(context.Context, *ListClusterNodeGroupRequest, *ListClusterNodeGroupResponse) error ListNodeGroup(context.Context, *ListNodeGroupRequest, *ListNodeGroupResponse) error + RecommendNodeGroupConf(context.Context, *RecommendNodeGroupConfReq, *RecommendNodeGroupConfResp) error MoveNodesToGroup(context.Context, *MoveNodesToGroupRequest, *MoveNodesToGroupResponse) error RemoveNodesFromGroup(context.Context, *RemoveNodesFromGroupRequest, *RemoveNodesFromGroupResponse) error CleanNodesInGroup(context.Context, *CleanNodesInGroupRequest, *CleanNodesInGroupResponse) error @@ -2774,6 +2792,7 @@ func RegisterClusterManagerHandler(s server.Server, hdlr ClusterManagerHandler, GetNodeGroup(ctx context.Context, in *GetNodeGroupRequest, out *GetNodeGroupResponse) error ListClusterNodeGroup(ctx context.Context, in *ListClusterNodeGroupRequest, out *ListClusterNodeGroupResponse) error ListNodeGroup(ctx context.Context, in *ListNodeGroupRequest, out *ListNodeGroupResponse) error + RecommendNodeGroupConf(ctx context.Context, in *RecommendNodeGroupConfReq, out *RecommendNodeGroupConfResp) error MoveNodesToGroup(ctx context.Context, in *MoveNodesToGroupRequest, out *MoveNodesToGroupResponse) error RemoveNodesFromGroup(ctx context.Context, in *RemoveNodesFromGroupRequest, out *RemoveNodesFromGroupResponse) error CleanNodesInGroup(ctx context.Context, in *CleanNodesInGroupRequest, out *CleanNodesInGroupResponse) error @@ -3208,6 +3227,12 @@ func RegisterClusterManagerHandler(s server.Server, hdlr ClusterManagerHandler, Method: []string{"GET"}, Handler: "rpc", })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "ClusterManager.RecommendNodeGroupConf", + Path: []string{"/clustermanager/v1/cloud/{cloudID}/recommendNodeGroupConf"}, + Method: []string{"GET"}, + Handler: "rpc", + })) opts = append(opts, api.WithEndpoint(&api.Endpoint{ Name: "ClusterManager.MoveNodesToGroup", Path: []string{"/clustermanager/v1/nodegroup/{nodeGroupID}/node"}, @@ -3965,6 +3990,10 @@ func (h *clusterManagerHandler) ListNodeGroup(ctx context.Context, in *ListNodeG return h.ClusterManagerHandler.ListNodeGroup(ctx, in, out) } +func (h *clusterManagerHandler) RecommendNodeGroupConf(ctx context.Context, in *RecommendNodeGroupConfReq, out *RecommendNodeGroupConfResp) error { + return h.ClusterManagerHandler.RecommendNodeGroupConf(ctx, in, out) +} + func (h *clusterManagerHandler) MoveNodesToGroup(ctx context.Context, in *MoveNodesToGroupRequest, out *MoveNodesToGroupResponse) error { return h.ClusterManagerHandler.MoveNodesToGroup(ctx, in, out) } diff --git a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.validate.go b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.validate.go index c769c0689e..2f68cfa361 100644 --- a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.validate.go +++ b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.pb.validate.go @@ -11,11 +11,12 @@ import ( "net/mail" "net/url" "regexp" + "sort" "strings" "time" "unicode/utf8" - "github.com/golang/protobuf/ptypes" + "google.golang.org/protobuf/types/known/anypb" ) // ensure the imports are used @@ -30,19 +31,31 @@ var ( _ = time.Duration(0) _ = (*url.URL)(nil) _ = (*mail.Address)(nil) - _ = ptypes.DynamicAny{} + _ = anypb.Any{} + _ = sort.Sort ) -// define the regex for a UUID once up-front -var _clustermanager_uuidPattern = regexp.MustCompile("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$") - // Validate checks the field values on Cluster with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Cluster) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Cluster with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in ClusterMultiError, or nil if none found. +func (m *Cluster) ValidateAll() error { + return m.validate(true) +} + +func (m *Cluster) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterID // no validation rules for ClusterName @@ -75,62 +88,168 @@ func (m *Cluster) Validate() error { // no validation rules for UpdateTime - for key, val := range m.GetBcsAddons() { - _ = val - - // no validation rules for BcsAddons[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ClusterValidationError{ - field: fmt.Sprintf("BcsAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetBcsAddons())) + i := 0 + for key := range m.GetBcsAddons() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetBcsAddons()[key] + _ = val + + // no validation rules for BcsAddons[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ClusterValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } - for key, val := range m.GetExtraAddons() { - _ = val - - // no validation rules for ExtraAddons[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ClusterValidationError{ - field: fmt.Sprintf("ExtraAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetExtraAddons())) + i := 0 + for key := range m.GetExtraAddons() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetExtraAddons()[key] + _ = val + + // no validation rules for ExtraAddons[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ClusterValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } // no validation rules for SystemID // no validation rules for ManageType - for key, val := range m.GetMaster() { - _ = val + { + sorted_keys := make([]string, len(m.GetMaster())) + i := 0 + for key := range m.GetMaster() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetMaster()[key] + _ = val + + // no validation rules for Master[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterValidationError{ + field: fmt.Sprintf("Master[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterValidationError{ + field: fmt.Sprintf("Master[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ClusterValidationError{ + field: fmt.Sprintf("Master[%v]", key), + reason: "embedded message failed validation", + cause: err, + } + } + } - // no validation rules for Master[key] + } + } - if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNetworkSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterValidationError{ + field: "NetworkSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: if err := v.Validate(); err != nil { - return ClusterValidationError{ - field: fmt.Sprintf("Master[%v]", key), + errors = append(errors, ClusterValidationError{ + field: "NetworkSettings", reason: "embedded message failed validation", cause: err, - } + }) } } - - } - - if v, ok := interface{}(m.GetNetworkSettings()).(interface{ Validate() error }); ok { + } else if v, ok := interface{}(m.GetNetworkSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterValidationError{ field: "NetworkSettings", @@ -140,7 +259,26 @@ func (m *Cluster) Validate() error { } } - if v, ok := interface{}(m.GetClusterBasicSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterBasicSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterValidationError{ + field: "ClusterBasicSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterValidationError{ + field: "ClusterBasicSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterBasicSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterValidationError{ field: "ClusterBasicSettings", @@ -150,7 +288,26 @@ func (m *Cluster) Validate() error { } } - if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterAdvanceSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterValidationError{ + field: "ClusterAdvanceSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterValidationError{ + field: "ClusterAdvanceSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterValidationError{ field: "ClusterAdvanceSettings", @@ -160,7 +317,26 @@ func (m *Cluster) Validate() error { } } - if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterValidationError{ + field: "NodeSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterValidationError{ + field: "NodeSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterValidationError{ field: "NodeSettings", @@ -171,19 +347,27 @@ func (m *Cluster) Validate() error { } if _, ok := _Cluster_Status_InLookup[m.GetStatus()]; !ok { - return ClusterValidationError{ + err := ClusterValidationError{ field: "Status", reason: "value must be in list [CREATING RUNNING DELETING FALURE INITIALIZATION]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Updater if _, ok := _Cluster_NetworkType_InLookup[m.GetNetworkType()]; !ok { - return ClusterValidationError{ + err := ClusterValidationError{ field: "NetworkType", reason: "value must be in list [underlay overlay ]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for AutoGenerateMasterNodes @@ -191,7 +375,26 @@ func (m *Cluster) Validate() error { for idx, item := range m.GetTemplate() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterValidationError{ + field: fmt.Sprintf("Template[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterValidationError{ + field: fmt.Sprintf("Template[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterValidationError{ field: fmt.Sprintf("Template[%v]", idx), @@ -229,7 +432,26 @@ func (m *Cluster) Validate() error { // no validation rules for ClusterIamRole - if v, ok := interface{}(m.GetSharedRanges()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetSharedRanges()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterValidationError{ + field: "SharedRanges", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterValidationError{ + field: "SharedRanges", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSharedRanges()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterValidationError{ field: "SharedRanges", @@ -239,9 +461,29 @@ func (m *Cluster) Validate() error { } } + if len(errors) > 0 { + return ClusterMultiError(errors) + } + return nil } +// ClusterMultiError is an error wrapping multiple validation errors returned +// by Cluster.ValidateAll() if the designated constraints aren't met. +type ClusterMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ClusterMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ClusterMultiError) AllErrors() []error { return m } + // ClusterValidationError is the validation error returned by Cluster.Validate // if the designated constraints aren't met. type ClusterValidationError struct { @@ -312,15 +554,50 @@ var _Cluster_NetworkType_InLookup = map[string]struct{}{ // Validate checks the field values on SharedClusterRanges with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *SharedClusterRanges) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on SharedClusterRanges with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// SharedClusterRangesMultiError, or nil if none found. +func (m *SharedClusterRanges) ValidateAll() error { + return m.validate(true) +} + +func (m *SharedClusterRanges) validate(all bool) error { if m == nil { return nil } + var errors []error + + if len(errors) > 0 { + return SharedClusterRangesMultiError(errors) + } + return nil } +// SharedClusterRangesMultiError is an error wrapping multiple validation +// errors returned by SharedClusterRanges.ValidateAll() if the designated +// constraints aren't met. +type SharedClusterRangesMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SharedClusterRangesMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SharedClusterRangesMultiError) AllErrors() []error { return m } + // SharedClusterRangesValidationError is the validation error returned by // SharedClusterRanges.Validate if the designated constraints aren't met. type SharedClusterRangesValidationError struct { @@ -378,12 +655,26 @@ var _ interface { } = SharedClusterRangesValidationError{} // Validate checks the field values on Node with the rules defined in the proto -// definition for this message. If any rules are violated, an error is returned. +// definition for this message. If any rules are violated, the first error +// encountered is returned, or nil if there are no violations. func (m *Node) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Node with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in NodeMultiError, or nil if none found. +func (m *Node) ValidateAll() error { + return m.validate(true) +} + +func (m *Node) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeID // no validation rules for InnerIP @@ -430,9 +721,29 @@ func (m *Node) Validate() error { // no validation rules for ChargeType + if len(errors) > 0 { + return NodeMultiError(errors) + } + return nil } +// NodeMultiError is an error wrapping multiple validation errors returned by +// Node.ValidateAll() if the designated constraints aren't met. +type NodeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeMultiError) AllErrors() []error { return m } + // NodeValidationError is the validation error returned by Node.Validate if the // designated constraints aren't met. type NodeValidationError struct { @@ -488,13 +799,27 @@ var _ interface { } = NodeValidationError{} // Validate checks the field values on NetworkSetting with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NetworkSetting) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NetworkSetting with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NetworkSettingMultiError, +// or nil if none found. +func (m *NetworkSetting) ValidateAll() error { + return m.validate(true) +} + +func (m *NetworkSetting) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterIPv4CIDR // no validation rules for ServiceIPv4CIDR @@ -505,7 +830,26 @@ func (m *NetworkSetting) Validate() error { // no validation rules for EnableVPCCni - if v, ok := interface{}(m.GetSubnetSource()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetSubnetSource()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NetworkSettingValidationError{ + field: "SubnetSource", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NetworkSettingValidationError{ + field: "SubnetSource", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSubnetSource()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NetworkSettingValidationError{ field: "SubnetSource", @@ -531,9 +875,30 @@ func (m *NetworkSetting) Validate() error { // no validation rules for NetworkMode + if len(errors) > 0 { + return NetworkSettingMultiError(errors) + } + return nil } +// NetworkSettingMultiError is an error wrapping multiple validation errors +// returned by NetworkSetting.ValidateAll() if the designated constraints +// aren't met. +type NetworkSettingMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NetworkSettingMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NetworkSettingMultiError) AllErrors() []error { return m } + // NetworkSettingValidationError is the validation error returned by // NetworkSetting.Validate if the designated constraints aren't met. type NetworkSettingValidationError struct { @@ -589,17 +954,50 @@ var _ interface { } = NetworkSettingValidationError{} // Validate checks the field values on SubnetSource with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *SubnetSource) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on SubnetSource with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in SubnetSourceMultiError, or +// nil if none found. +func (m *SubnetSource) ValidateAll() error { + return m.validate(true) +} + +func (m *SubnetSource) validate(all bool) error { if m == nil { return nil } + var errors []error + for idx, item := range m.GetNew() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SubnetSourceValidationError{ + field: fmt.Sprintf("New[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SubnetSourceValidationError{ + field: fmt.Sprintf("New[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SubnetSourceValidationError{ field: fmt.Sprintf("New[%v]", idx), @@ -611,7 +1009,26 @@ func (m *SubnetSource) Validate() error { } - if v, ok := interface{}(m.GetExisted()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetExisted()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SubnetSourceValidationError{ + field: "Existed", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SubnetSourceValidationError{ + field: "Existed", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetExisted()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SubnetSourceValidationError{ field: "Existed", @@ -621,9 +1038,29 @@ func (m *SubnetSource) Validate() error { } } + if len(errors) > 0 { + return SubnetSourceMultiError(errors) + } + return nil } +// SubnetSourceMultiError is an error wrapping multiple validation errors +// returned by SubnetSource.ValidateAll() if the designated constraints aren't met. +type SubnetSourceMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SubnetSourceMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SubnetSourceMultiError) AllErrors() []error { return m } + // SubnetSourceValidationError is the validation error returned by // SubnetSource.Validate if the designated constraints aren't met. type SubnetSourceValidationError struct { @@ -679,16 +1116,51 @@ var _ interface { } = SubnetSourceValidationError{} // Validate checks the field values on ExistedSubnetIDs with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ExistedSubnetIDs) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ExistedSubnetIDs with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ExistedSubnetIDsMultiError, or nil if none found. +func (m *ExistedSubnetIDs) ValidateAll() error { + return m.validate(true) +} + +func (m *ExistedSubnetIDs) validate(all bool) error { if m == nil { return nil } + var errors []error + + if len(errors) > 0 { + return ExistedSubnetIDsMultiError(errors) + } + return nil } +// ExistedSubnetIDsMultiError is an error wrapping multiple validation errors +// returned by ExistedSubnetIDs.ValidateAll() if the designated constraints +// aren't met. +type ExistedSubnetIDsMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ExistedSubnetIDsMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ExistedSubnetIDsMultiError) AllErrors() []error { return m } + // ExistedSubnetIDsValidationError is the validation error returned by // ExistedSubnetIDs.Validate if the designated constraints aren't met. type ExistedSubnetIDsValidationError struct { @@ -744,21 +1216,56 @@ var _ interface { } = ExistedSubnetIDsValidationError{} // Validate checks the field values on NewSubnet with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NewSubnet) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NewSubnet with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NewSubnetMultiError, or nil +// if none found. +func (m *NewSubnet) ValidateAll() error { + return m.validate(true) +} + +func (m *NewSubnet) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Mask // no validation rules for Zone // no validation rules for IpCnt + if len(errors) > 0 { + return NewSubnetMultiError(errors) + } + return nil } +// NewSubnetMultiError is an error wrapping multiple validation errors returned +// by NewSubnet.ValidateAll() if the designated constraints aren't met. +type NewSubnetMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NewSubnetMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NewSubnetMultiError) AllErrors() []error { return m } + // NewSubnetValidationError is the validation error returned by // NewSubnet.Validate if the designated constraints aren't met. type NewSubnetValidationError struct { @@ -813,14 +1320,130 @@ var _ interface { ErrorName() string } = NewSubnetValidationError{} +// Validate checks the field values on UpgradePolicy with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *UpgradePolicy) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpgradePolicy with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in UpgradePolicyMultiError, or +// nil if none found. +func (m *UpgradePolicy) ValidateAll() error { + return m.validate(true) +} + +func (m *UpgradePolicy) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for SupportType + + if len(errors) > 0 { + return UpgradePolicyMultiError(errors) + } + + return nil +} + +// UpgradePolicyMultiError is an error wrapping multiple validation errors +// returned by UpgradePolicy.ValidateAll() if the designated constraints +// aren't met. +type UpgradePolicyMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpgradePolicyMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpgradePolicyMultiError) AllErrors() []error { return m } + +// UpgradePolicyValidationError is the validation error returned by +// UpgradePolicy.Validate if the designated constraints aren't met. +type UpgradePolicyValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e UpgradePolicyValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e UpgradePolicyValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e UpgradePolicyValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e UpgradePolicyValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e UpgradePolicyValidationError) ErrorName() string { return "UpgradePolicyValidationError" } + +// Error satisfies the builtin error interface +func (e UpgradePolicyValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sUpgradePolicy.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = UpgradePolicyValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = UpgradePolicyValidationError{} + // Validate checks the field values on ClusterBasicSetting with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ClusterBasicSetting) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ClusterBasicSetting with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ClusterBasicSettingMultiError, or nil if none found. +func (m *ClusterBasicSetting) ValidateAll() error { + return m.validate(true) +} + +func (m *ClusterBasicSetting) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for OS // no validation rules for Version @@ -835,7 +1458,26 @@ func (m *ClusterBasicSetting) Validate() error { // no validation rules for IsAutoUpgradeClusterLevel - if v, ok := interface{}(m.GetArea()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetArea()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterBasicSettingValidationError{ + field: "Area", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterBasicSettingValidationError{ + field: "Area", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetArea()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterBasicSettingValidationError{ field: "Area", @@ -845,7 +1487,26 @@ func (m *ClusterBasicSetting) Validate() error { } } - if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetModule()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterBasicSettingValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterBasicSettingValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterBasicSettingValidationError{ field: "Module", @@ -855,9 +1516,59 @@ func (m *ClusterBasicSetting) Validate() error { } } + if all { + switch v := interface{}(m.GetUpgradePolicy()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterBasicSettingValidationError{ + field: "UpgradePolicy", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterBasicSettingValidationError{ + field: "UpgradePolicy", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUpgradePolicy()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ClusterBasicSettingValidationError{ + field: "UpgradePolicy", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(errors) > 0 { + return ClusterBasicSettingMultiError(errors) + } + return nil } +// ClusterBasicSettingMultiError is an error wrapping multiple validation +// errors returned by ClusterBasicSetting.ValidateAll() if the designated +// constraints aren't met. +type ClusterBasicSettingMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ClusterBasicSettingMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ClusterBasicSettingMultiError) AllErrors() []error { return m } + // ClusterBasicSettingValidationError is the validation error returned by // ClusterBasicSetting.Validate if the designated constraints aren't met. type ClusterBasicSettingValidationError struct { @@ -916,12 +1627,26 @@ var _ interface { // Validate checks the field values on ClusterAdvanceSetting with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ClusterAdvanceSetting) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ClusterAdvanceSetting with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ClusterAdvanceSettingMultiError, or nil if none found. +func (m *ClusterAdvanceSetting) ValidateAll() error { + return m.validate(true) +} + +func (m *ClusterAdvanceSetting) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for IPVS // no validation rules for ContainerRuntime @@ -938,7 +1663,26 @@ func (m *ClusterAdvanceSetting) Validate() error { // no validation rules for EnableHa - if v, ok := interface{}(m.GetClusterConnectSetting()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterConnectSetting()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterAdvanceSettingValidationError{ + field: "ClusterConnectSetting", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterAdvanceSettingValidationError{ + field: "ClusterConnectSetting", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterConnectSetting()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterAdvanceSettingValidationError{ field: "ClusterConnectSetting", @@ -948,9 +1692,30 @@ func (m *ClusterAdvanceSetting) Validate() error { } } + if len(errors) > 0 { + return ClusterAdvanceSettingMultiError(errors) + } + return nil } +// ClusterAdvanceSettingMultiError is an error wrapping multiple validation +// errors returned by ClusterAdvanceSetting.ValidateAll() if the designated +// constraints aren't met. +type ClusterAdvanceSettingMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ClusterAdvanceSettingMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ClusterAdvanceSettingMultiError) AllErrors() []error { return m } + // ClusterAdvanceSettingValidationError is the validation error returned by // ClusterAdvanceSetting.Validate if the designated constraints aren't met. type ClusterAdvanceSettingValidationError struct { @@ -1009,12 +1774,26 @@ var _ interface { // Validate checks the field values on ClusterConnectSetting with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ClusterConnectSetting) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ClusterConnectSetting with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ClusterConnectSettingMultiError, or nil if none found. +func (m *ClusterConnectSetting) ValidateAll() error { + return m.validate(true) +} + +func (m *ClusterConnectSetting) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for IsExtranet // no validation rules for SubnetId @@ -1023,7 +1802,26 @@ func (m *ClusterConnectSetting) Validate() error { // no validation rules for SecurityGroup - if v, ok := interface{}(m.GetInternet()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetInternet()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterConnectSettingValidationError{ + field: "Internet", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterConnectSettingValidationError{ + field: "Internet", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetInternet()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterConnectSettingValidationError{ field: "Internet", @@ -1033,9 +1831,30 @@ func (m *ClusterConnectSetting) Validate() error { } } + if len(errors) > 0 { + return ClusterConnectSettingMultiError(errors) + } + return nil } +// ClusterConnectSettingMultiError is an error wrapping multiple validation +// errors returned by ClusterConnectSetting.ValidateAll() if the designated +// constraints aren't met. +type ClusterConnectSettingMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ClusterConnectSettingMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ClusterConnectSettingMultiError) AllErrors() []error { return m } + // ClusterConnectSettingValidationError is the validation error returned by // ClusterConnectSetting.Validate if the designated constraints aren't met. type ClusterConnectSettingValidationError struct { @@ -1093,13 +1912,27 @@ var _ interface { } = ClusterConnectSettingValidationError{} // Validate checks the field values on NodeSetting with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeSetting) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeSetting with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeSettingMultiError, or +// nil if none found. +func (m *NodeSetting) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeSetting) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for DockerGraphPath // no validation rules for MountTarget @@ -1113,7 +1946,26 @@ func (m *NodeSetting) Validate() error { for idx, item := range m.GetTaints() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeSettingValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeSettingValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeSettingValidationError{ field: fmt.Sprintf("Taints[%v]", idx), @@ -1125,7 +1977,26 @@ func (m *NodeSetting) Validate() error { } - if v, ok := interface{}(m.GetMasterLogin()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetMasterLogin()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeSettingValidationError{ + field: "MasterLogin", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeSettingValidationError{ + field: "MasterLogin", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetMasterLogin()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeSettingValidationError{ field: "MasterLogin", @@ -1135,7 +2006,26 @@ func (m *NodeSetting) Validate() error { } } - if v, ok := interface{}(m.GetWorkerLogin()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWorkerLogin()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeSettingValidationError{ + field: "WorkerLogin", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeSettingValidationError{ + field: "WorkerLogin", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWorkerLogin()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeSettingValidationError{ field: "WorkerLogin", @@ -1145,9 +2035,29 @@ func (m *NodeSetting) Validate() error { } } + if len(errors) > 0 { + return NodeSettingMultiError(errors) + } + return nil } +// NodeSettingMultiError is an error wrapping multiple validation errors +// returned by NodeSetting.ValidateAll() if the designated constraints aren't met. +type NodeSettingMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeSettingMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeSettingMultiError) AllErrors() []error { return m } + // NodeSettingValidationError is the validation error returned by // NodeSetting.Validate if the designated constraints aren't met. type NodeSettingValidationError struct { @@ -1203,18 +2113,51 @@ var _ interface { } = NodeSettingValidationError{} // Validate checks the field values on NodeLoginInfo with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeLoginInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeLoginInfo with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeLoginInfoMultiError, or +// nil if none found. +func (m *NodeLoginInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeLoginInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for InitLoginUsername // no validation rules for InitLoginPassword - if v, ok := interface{}(m.GetKeyPair()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetKeyPair()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeLoginInfoValidationError{ + field: "KeyPair", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeLoginInfoValidationError{ + field: "KeyPair", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetKeyPair()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeLoginInfoValidationError{ field: "KeyPair", @@ -1224,9 +2167,30 @@ func (m *NodeLoginInfo) Validate() error { } } + if len(errors) > 0 { + return NodeLoginInfoMultiError(errors) + } + return nil } +// NodeLoginInfoMultiError is an error wrapping multiple validation errors +// returned by NodeLoginInfo.ValidateAll() if the designated constraints +// aren't met. +type NodeLoginInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeLoginInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeLoginInfoMultiError) AllErrors() []error { return m } + // NodeLoginInfoValidationError is the validation error returned by // NodeLoginInfo.Validate if the designated constraints aren't met. type NodeLoginInfoValidationError struct { @@ -1282,13 +2246,27 @@ var _ interface { } = NodeLoginInfoValidationError{} // Validate checks the field values on ClusterCredential with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ClusterCredential) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ClusterCredential with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ClusterCredentialMultiError, or nil if none found. +func (m *ClusterCredential) ValidateAll() error { + return m.validate(true) +} + +func (m *ClusterCredential) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ServerKey // no validation rules for ClusterID @@ -1313,9 +2291,30 @@ func (m *ClusterCredential) Validate() error { // no validation rules for ClientKey + if len(errors) > 0 { + return ClusterCredentialMultiError(errors) + } + return nil } +// ClusterCredentialMultiError is an error wrapping multiple validation errors +// returned by ClusterCredential.ValidateAll() if the designated constraints +// aren't met. +type ClusterCredentialMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ClusterCredentialMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ClusterCredentialMultiError) AllErrors() []error { return m } + // ClusterCredentialValidationError is the validation error returned by // ClusterCredential.Validate if the designated constraints aren't met. type ClusterCredentialValidationError struct { @@ -1373,12 +2372,27 @@ var _ interface { } = ClusterCredentialValidationError{} // Validate checks the field values on Namespace with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Namespace) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Namespace with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NamespaceMultiError, or nil +// if none found. +func (m *Namespace) ValidateAll() error { + return m.validate(true) +} + +func (m *Namespace) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Name // no validation rules for FederationClusterID @@ -1398,7 +2412,26 @@ func (m *Namespace) Validate() error { for idx, item := range m.GetQuotaList() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NamespaceValidationError{ + field: fmt.Sprintf("QuotaList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NamespaceValidationError{ + field: fmt.Sprintf("QuotaList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NamespaceValidationError{ field: fmt.Sprintf("QuotaList[%v]", idx), @@ -1410,9 +2443,29 @@ func (m *Namespace) Validate() error { } + if len(errors) > 0 { + return NamespaceMultiError(errors) + } + return nil } +// NamespaceMultiError is an error wrapping multiple validation errors returned +// by Namespace.ValidateAll() if the designated constraints aren't met. +type NamespaceMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NamespaceMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NamespaceMultiError) AllErrors() []error { return m } + // NamespaceValidationError is the validation error returned by // Namespace.Validate if the designated constraints aren't met. type NamespaceValidationError struct { @@ -1468,13 +2521,27 @@ var _ interface { } = NamespaceValidationError{} // Validate checks the field values on ResourceQuota with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ResourceQuota) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ResourceQuota with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ResourceQuotaMultiError, or +// nil if none found. +func (m *ResourceQuota) ValidateAll() error { + return m.validate(true) +} + +func (m *ResourceQuota) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Namespace // no validation rules for FederationClusterID @@ -1493,9 +2560,30 @@ func (m *ResourceQuota) Validate() error { // no validation rules for Message + if len(errors) > 0 { + return ResourceQuotaMultiError(errors) + } + return nil } +// ResourceQuotaMultiError is an error wrapping multiple validation errors +// returned by ResourceQuota.ValidateAll() if the designated constraints +// aren't met. +type ResourceQuotaMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ResourceQuotaMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ResourceQuotaMultiError) AllErrors() []error { return m } + // ResourceQuotaValidationError is the validation error returned by // ResourceQuota.Validate if the designated constraints aren't met. type ResourceQuotaValidationError struct { @@ -1551,12 +2639,27 @@ var _ interface { } = ResourceQuotaValidationError{} // Validate checks the field values on Credential with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Credential) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Credential with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CredentialMultiError, or +// nil if none found. +func (m *Credential) ValidateAll() error { + return m.validate(true) +} + +func (m *Credential) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Key // no validation rules for Secret @@ -1575,9 +2678,29 @@ func (m *Credential) Validate() error { // no validation rules for GkeProjectID + if len(errors) > 0 { + return CredentialMultiError(errors) + } + return nil } +// CredentialMultiError is an error wrapping multiple validation errors +// returned by Credential.ValidateAll() if the designated constraints aren't met. +type CredentialMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CredentialMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CredentialMultiError) AllErrors() []error { return m } + // CredentialValidationError is the validation error returned by // Credential.Validate if the designated constraints aren't met. type CredentialValidationError struct { @@ -1633,13 +2756,27 @@ var _ interface { } = CredentialValidationError{} // Validate checks the field values on BKOpsPlugin with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *BKOpsPlugin) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on BKOpsPlugin with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in BKOpsPluginMultiError, or +// nil if none found. +func (m *BKOpsPlugin) ValidateAll() error { + return m.validate(true) +} + +func (m *BKOpsPlugin) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for System // no validation rules for Link @@ -1648,9 +2785,29 @@ func (m *BKOpsPlugin) Validate() error { // no validation rules for AllowSkipWhenFailed + if len(errors) > 0 { + return BKOpsPluginMultiError(errors) + } + return nil } +// BKOpsPluginMultiError is an error wrapping multiple validation errors +// returned by BKOpsPlugin.ValidateAll() if the designated constraints aren't met. +type BKOpsPluginMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m BKOpsPluginMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m BKOpsPluginMultiError) AllErrors() []error { return m } + // BKOpsPluginValidationError is the validation error returned by // BKOpsPlugin.Validate if the designated constraints aren't met. type BKOpsPluginValidationError struct { @@ -1706,32 +2863,95 @@ var _ interface { } = BKOpsPluginValidationError{} // Validate checks the field values on Action with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Action) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Action with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in ActionMultiError, or nil if none found. +func (m *Action) ValidateAll() error { + return m.validate(true) +} + +func (m *Action) validate(all bool) error { if m == nil { return nil } - for key, val := range m.GetPlugins() { - _ = val - - // no validation rules for Plugins[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ActionValidationError{ - field: fmt.Sprintf("Plugins[%v]", key), - reason: "embedded message failed validation", - cause: err, + var errors []error + + { + sorted_keys := make([]string, len(m.GetPlugins())) + i := 0 + for key := range m.GetPlugins() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetPlugins()[key] + _ = val + + // no validation rules for Plugins[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ActionValidationError{ + field: fmt.Sprintf("Plugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ActionValidationError{ + field: fmt.Sprintf("Plugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ActionValidationError{ + field: fmt.Sprintf("Plugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } + } + } + if len(errors) > 0 { + return ActionMultiError(errors) } return nil } +// ActionMultiError is an error wrapping multiple validation errors returned by +// Action.ValidateAll() if the designated constraints aren't met. +type ActionMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ActionMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ActionMultiError) AllErrors() []error { return m } + // ActionValidationError is the validation error returned by Action.Validate if // the designated constraints aren't met. type ActionValidationError struct { @@ -1787,13 +3007,47 @@ var _ interface { } = ActionValidationError{} // Validate checks the field values on ClusterMgr with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ClusterMgr) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ClusterMgr with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ClusterMgrMultiError, or +// nil if none found. +func (m *ClusterMgr) ValidateAll() error { + return m.validate(true) +} + +func (m *ClusterMgr) validate(all bool) error { if m == nil { return nil } - if v, ok := interface{}(m.GetCreateCluster()).(interface{ Validate() error }); ok { + var errors []error + + if all { + switch v := interface{}(m.GetCreateCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "CreateCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "CreateCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCreateCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: "CreateCluster", @@ -1803,7 +3057,26 @@ func (m *ClusterMgr) Validate() error { } } - if v, ok := interface{}(m.GetDeleteCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetDeleteCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "DeleteCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "DeleteCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetDeleteCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: "DeleteCluster", @@ -1813,7 +3086,26 @@ func (m *ClusterMgr) Validate() error { } } - if v, ok := interface{}(m.GetAddNodesToCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAddNodesToCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "AddNodesToCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "AddNodesToCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAddNodesToCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: "AddNodesToCluster", @@ -1823,7 +3115,26 @@ func (m *ClusterMgr) Validate() error { } } - if v, ok := interface{}(m.GetDeleteNodesFromCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetDeleteNodesFromCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "DeleteNodesFromCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "DeleteNodesFromCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetDeleteNodesFromCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: "DeleteNodesFromCluster", @@ -1833,7 +3144,26 @@ func (m *ClusterMgr) Validate() error { } } - if v, ok := interface{}(m.GetImportCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetImportCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "ImportCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "ImportCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetImportCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: "ImportCluster", @@ -1843,7 +3173,26 @@ func (m *ClusterMgr) Validate() error { } } - if v, ok := interface{}(m.GetCommonMixedAction()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCommonMixedAction()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "CommonMixedAction", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "CommonMixedAction", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCommonMixedAction()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: "CommonMixedAction", @@ -1853,7 +3202,26 @@ func (m *ClusterMgr) Validate() error { } } - if v, ok := interface{}(m.GetCheckExternalNodeEmptyAction()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCheckExternalNodeEmptyAction()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "CheckExternalNodeEmptyAction", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: "CheckExternalNodeEmptyAction", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCheckExternalNodeEmptyAction()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: "CheckExternalNodeEmptyAction", @@ -1866,7 +3234,26 @@ func (m *ClusterMgr) Validate() error { for idx, item := range m.GetManagedConfig() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: fmt.Sprintf("ManagedConfig[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterMgrValidationError{ + field: fmt.Sprintf("ManagedConfig[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterMgrValidationError{ field: fmt.Sprintf("ManagedConfig[%v]", idx), @@ -1878,9 +3265,29 @@ func (m *ClusterMgr) Validate() error { } + if len(errors) > 0 { + return ClusterMgrMultiError(errors) + } + return nil } +// ClusterMgrMultiError is an error wrapping multiple validation errors +// returned by ClusterMgr.ValidateAll() if the designated constraints aren't met. +type ClusterMgrMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ClusterMgrMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ClusterMgrMultiError) AllErrors() []error { return m } + // ClusterMgrValidationError is the validation error returned by // ClusterMgr.Validate if the designated constraints aren't met. type ClusterMgrValidationError struct { @@ -1936,20 +3343,55 @@ var _ interface { } = ClusterMgrValidationError{} // Validate checks the field values on ManagedConfig with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ManagedConfig) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ManagedConfig with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ManagedConfigMultiError, or +// nil if none found. +func (m *ManagedConfig) ValidateAll() error { + return m.validate(true) +} + +func (m *ManagedConfig) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Spec // no validation rules for Desc + if len(errors) > 0 { + return ManagedConfigMultiError(errors) + } + return nil } +// ManagedConfigMultiError is an error wrapping multiple validation errors +// returned by ManagedConfig.ValidateAll() if the designated constraints +// aren't met. +type ManagedConfigMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ManagedConfigMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ManagedConfigMultiError) AllErrors() []error { return m } + // ManagedConfigValidationError is the validation error returned by // ManagedConfig.Validate if the designated constraints aren't met. type ManagedConfigValidationError struct { @@ -2005,14 +3447,47 @@ var _ interface { } = ManagedConfigValidationError{} // Validate checks the field values on NodeGroupMgr with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeGroupMgr) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeGroupMgr with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeGroupMgrMultiError, or +// nil if none found. +func (m *NodeGroupMgr) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeGroupMgr) validate(all bool) error { if m == nil { return nil } - if v, ok := interface{}(m.GetCreateNodeGroup()).(interface{ Validate() error }); ok { + var errors []error + + if all { + switch v := interface{}(m.GetCreateNodeGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "CreateNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "CreateNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCreateNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "CreateNodeGroup", @@ -2022,7 +3497,26 @@ func (m *NodeGroupMgr) Validate() error { } } - if v, ok := interface{}(m.GetDeleteNodeGroup()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetDeleteNodeGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "DeleteNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "DeleteNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetDeleteNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "DeleteNodeGroup", @@ -2032,7 +3526,26 @@ func (m *NodeGroupMgr) Validate() error { } } - if v, ok := interface{}(m.GetMoveNodesToGroup()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetMoveNodesToGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "MoveNodesToGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "MoveNodesToGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetMoveNodesToGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "MoveNodesToGroup", @@ -2042,7 +3555,26 @@ func (m *NodeGroupMgr) Validate() error { } } - if v, ok := interface{}(m.GetRemoveNodesFromGroup()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetRemoveNodesFromGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "RemoveNodesFromGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "RemoveNodesFromGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRemoveNodesFromGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "RemoveNodesFromGroup", @@ -2052,7 +3584,26 @@ func (m *NodeGroupMgr) Validate() error { } } - if v, ok := interface{}(m.GetCleanNodesInGroup()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCleanNodesInGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "CleanNodesInGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "CleanNodesInGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCleanNodesInGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "CleanNodesInGroup", @@ -2062,7 +3613,26 @@ func (m *NodeGroupMgr) Validate() error { } } - if v, ok := interface{}(m.GetUpdateDesiredNodes()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetUpdateDesiredNodes()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "UpdateDesiredNodes", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "UpdateDesiredNodes", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUpdateDesiredNodes()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "UpdateDesiredNodes", @@ -2072,7 +3642,26 @@ func (m *NodeGroupMgr) Validate() error { } } - if v, ok := interface{}(m.GetAddExternalNodesToCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAddExternalNodesToCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "AddExternalNodesToCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "AddExternalNodesToCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAddExternalNodesToCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "AddExternalNodesToCluster", @@ -2082,7 +3671,26 @@ func (m *NodeGroupMgr) Validate() error { } } - if v, ok := interface{}(m.GetDeleteExternalNodesFromCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetDeleteExternalNodesFromCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "DeleteExternalNodesFromCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupMgrValidationError{ + field: "DeleteExternalNodesFromCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetDeleteExternalNodesFromCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupMgrValidationError{ field: "DeleteExternalNodesFromCluster", @@ -2092,9 +3700,29 @@ func (m *NodeGroupMgr) Validate() error { } } + if len(errors) > 0 { + return NodeGroupMgrMultiError(errors) + } + return nil } +// NodeGroupMgrMultiError is an error wrapping multiple validation errors +// returned by NodeGroupMgr.ValidateAll() if the designated constraints aren't met. +type NodeGroupMgrMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeGroupMgrMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeGroupMgrMultiError) AllErrors() []error { return m } + // NodeGroupMgrValidationError is the validation error returned by // NodeGroupMgr.Validate if the designated constraints aren't met. type NodeGroupMgrValidationError struct { @@ -2150,17 +3778,51 @@ var _ interface { } = NodeGroupMgrValidationError{} // Validate checks the field values on OSInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *OSInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on OSInfo with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in OSInfoMultiError, or nil if none found. +func (m *OSInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *OSInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Regions + if len(errors) > 0 { + return OSInfoMultiError(errors) + } + return nil } +// OSInfoMultiError is an error wrapping multiple validation errors returned by +// OSInfo.ValidateAll() if the designated constraints aren't met. +type OSInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m OSInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m OSInfoMultiError) AllErrors() []error { return m } + // OSInfoValidationError is the validation error returned by OSInfo.Validate if // the designated constraints aren't met. type OSInfoValidationError struct { @@ -2216,12 +3878,26 @@ var _ interface { } = OSInfoValidationError{} // Validate checks the field values on Account with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Account) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Account with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in AccountMultiError, or nil if none found. +func (m *Account) ValidateAll() error { + return m.validate(true) +} + +func (m *Account) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for SecretID // no validation rules for SecretKey @@ -2240,9 +3916,29 @@ func (m *Account) Validate() error { // no validation rules for GkeProjectID + if len(errors) > 0 { + return AccountMultiError(errors) + } + return nil } +// AccountMultiError is an error wrapping multiple validation errors returned +// by Account.ValidateAll() if the designated constraints aren't met. +type AccountMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AccountMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AccountMultiError) AllErrors() []error { return m } + // AccountValidationError is the validation error returned by Account.Validate // if the designated constraints aren't met. type AccountValidationError struct { @@ -2298,13 +3994,27 @@ var _ interface { } = AccountValidationError{} // Validate checks the field values on CloudAccount with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CloudAccount) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudAccount with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CloudAccountMultiError, or +// nil if none found. +func (m *CloudAccount) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudAccount) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for ProjectID @@ -2315,7 +4025,26 @@ func (m *CloudAccount) Validate() error { // no validation rules for Desc - if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAccount()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudAccountValidationError{ + field: "Account", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudAccountValidationError{ + field: "Account", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudAccountValidationError{ field: "Account", @@ -2335,9 +4064,29 @@ func (m *CloudAccount) Validate() error { // no validation rules for UpdateTime + if len(errors) > 0 { + return CloudAccountMultiError(errors) + } + return nil } +// CloudAccountMultiError is an error wrapping multiple validation errors +// returned by CloudAccount.ValidateAll() if the designated constraints aren't met. +type CloudAccountMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudAccountMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudAccountMultiError) AllErrors() []error { return m } + // CloudAccountValidationError is the validation error returned by // CloudAccount.Validate if the designated constraints aren't met. type CloudAccountValidationError struct { @@ -2394,36 +4143,81 @@ var _ interface { // Validate checks the field values on CreateCloudAccountRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateCloudAccountRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateCloudAccountRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateCloudAccountRequestMultiError, or nil if none found. +func (m *CreateCloudAccountRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateCloudAccountRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 1024 { - return CreateCloudAccountRequestValidationError{ + err := CreateCloudAccountRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateCloudAccountRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return CreateCloudAccountRequestValidationError{ + err := CreateCloudAccountRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetAccountName()) < 1 { - return CreateCloudAccountRequestValidationError{ + err := CreateCloudAccountRequestValidationError{ field: "AccountName", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Desc - if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAccount()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudAccountRequestValidationError{ + field: "Account", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudAccountRequestValidationError{ + field: "Account", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudAccountRequestValidationError{ field: "Account", @@ -2433,7 +4227,26 @@ func (m *CreateCloudAccountRequest) Validate() error { } } - if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetEnable()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudAccountRequestValidationError{ + field: "Enable", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudAccountRequestValidationError{ + field: "Enable", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudAccountRequestValidationError{ field: "Enable", @@ -2444,22 +4257,51 @@ func (m *CreateCloudAccountRequest) Validate() error { } if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 1024 { - return CreateCloudAccountRequestValidationError{ + err := CreateCloudAccountRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) < 2 { - return CreateCloudAccountRequestValidationError{ + err := CreateCloudAccountRequestValidationError{ field: "ProjectID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return CreateCloudAccountRequestMultiError(errors) } return nil } +// CreateCloudAccountRequestMultiError is an error wrapping multiple validation +// errors returned by CreateCloudAccountRequest.ValidateAll() if the +// designated constraints aren't met. +type CreateCloudAccountRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateCloudAccountRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateCloudAccountRequestMultiError) AllErrors() []error { return m } + // CreateCloudAccountRequestValidationError is the validation error returned by // CreateCloudAccountRequest.Validate if the designated constraints aren't met. type CreateCloudAccountRequestValidationError struct { @@ -2520,19 +4362,52 @@ var _CreateCloudAccountRequest_CloudID_Pattern = regexp.MustCompile("^[0-9a-zA-Z // Validate checks the field values on CreateCloudAccountResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateCloudAccountResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateCloudAccountResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateCloudAccountResponseMultiError, or nil if none found. +func (m *CreateCloudAccountResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateCloudAccountResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudAccountResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudAccountResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudAccountResponseValidationError{ field: "Data", @@ -2542,9 +4417,30 @@ func (m *CreateCloudAccountResponse) Validate() error { } } + if len(errors) > 0 { + return CreateCloudAccountResponseMultiError(errors) + } + return nil } +// CreateCloudAccountResponseMultiError is an error wrapping multiple +// validation errors returned by CreateCloudAccountResponse.ValidateAll() if +// the designated constraints aren't met. +type CreateCloudAccountResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateCloudAccountResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateCloudAccountResponseMultiError) AllErrors() []error { return m } + // CreateCloudAccountResponseValidationError is the validation error returned // by CreateCloudAccountResponse.Validate if the designated constraints aren't met. type CreateCloudAccountResponseValidationError struct { @@ -2603,45 +4499,94 @@ var _ interface { // Validate checks the field values on UpdateCloudAccountRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateCloudAccountRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateCloudAccountRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateCloudAccountRequestMultiError, or nil if none found. +func (m *UpdateCloudAccountRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateCloudAccountRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 1024 { - return UpdateCloudAccountRequestValidationError{ + err := UpdateCloudAccountRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateCloudAccountRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return UpdateCloudAccountRequestValidationError{ + err := UpdateCloudAccountRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetAccountID()); l < 2 || l > 1024 { - return UpdateCloudAccountRequestValidationError{ + err := UpdateCloudAccountRequestValidationError{ field: "AccountID", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateCloudAccountRequest_AccountID_Pattern.MatchString(m.GetAccountID()) { - return UpdateCloudAccountRequestValidationError{ + err := UpdateCloudAccountRequestValidationError{ field: "AccountID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for AccountName // no validation rules for Desc - if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetEnable()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudAccountRequestValidationError{ + field: "Enable", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudAccountRequestValidationError{ + field: "Enable", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudAccountRequestValidationError{ field: "Enable", @@ -2654,13 +4599,36 @@ func (m *UpdateCloudAccountRequest) Validate() error { // no validation rules for ProjectID if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 1024 { - return UpdateCloudAccountRequestValidationError{ + err := UpdateCloudAccountRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAccount()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudAccountRequestValidationError{ + field: "Account", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudAccountRequestValidationError{ + field: "Account", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudAccountRequestValidationError{ field: "Account", @@ -2670,9 +4638,30 @@ func (m *UpdateCloudAccountRequest) Validate() error { } } + if len(errors) > 0 { + return UpdateCloudAccountRequestMultiError(errors) + } + return nil } +// UpdateCloudAccountRequestMultiError is an error wrapping multiple validation +// errors returned by UpdateCloudAccountRequest.ValidateAll() if the +// designated constraints aren't met. +type UpdateCloudAccountRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateCloudAccountRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateCloudAccountRequestMultiError) AllErrors() []error { return m } + // UpdateCloudAccountRequestValidationError is the validation error returned by // UpdateCloudAccountRequest.Validate if the designated constraints aren't met. type UpdateCloudAccountRequestValidationError struct { @@ -2735,21 +4724,56 @@ var _UpdateCloudAccountRequest_AccountID_Pattern = regexp.MustCompile("^[0-9a-zA // Validate checks the field values on UpdateCloudAccountResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateCloudAccountResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateCloudAccountResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateCloudAccountResponseMultiError, or nil if none found. +func (m *UpdateCloudAccountResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateCloudAccountResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return UpdateCloudAccountResponseMultiError(errors) + } + return nil } +// UpdateCloudAccountResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateCloudAccountResponse.ValidateAll() if +// the designated constraints aren't met. +type UpdateCloudAccountResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateCloudAccountResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateCloudAccountResponseMultiError) AllErrors() []error { return m } + // UpdateCloudAccountResponseValidationError is the validation error returned // by UpdateCloudAccountResponse.Validate if the designated constraints aren't met. type UpdateCloudAccountResponseValidationError struct { @@ -2808,29 +4832,70 @@ var _ interface { // Validate checks the field values on MigrateCloudAccountRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *MigrateCloudAccountRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MigrateCloudAccountRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// MigrateCloudAccountRequestMultiError, or nil if none found. +func (m *MigrateCloudAccountRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *MigrateCloudAccountRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 1024 { - return MigrateCloudAccountRequestValidationError{ + err := MigrateCloudAccountRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_MigrateCloudAccountRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return MigrateCloudAccountRequestValidationError{ + err := MigrateCloudAccountRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for AccountIDs - if v, ok := interface{}(m.GetEncrypt()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetEncrypt()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, MigrateCloudAccountRequestValidationError{ + field: "Encrypt", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, MigrateCloudAccountRequestValidationError{ + field: "Encrypt", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetEncrypt()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return MigrateCloudAccountRequestValidationError{ field: "Encrypt", @@ -2842,9 +4907,30 @@ func (m *MigrateCloudAccountRequest) Validate() error { // no validation rules for All + if len(errors) > 0 { + return MigrateCloudAccountRequestMultiError(errors) + } + return nil } +// MigrateCloudAccountRequestMultiError is an error wrapping multiple +// validation errors returned by MigrateCloudAccountRequest.ValidateAll() if +// the designated constraints aren't met. +type MigrateCloudAccountRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MigrateCloudAccountRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MigrateCloudAccountRequestMultiError) AllErrors() []error { return m } + // MigrateCloudAccountRequestValidationError is the validation error returned // by MigrateCloudAccountRequest.Validate if the designated constraints aren't met. type MigrateCloudAccountRequestValidationError struct { @@ -2904,22 +4990,57 @@ var _ interface { var _MigrateCloudAccountRequest_CloudID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on OriginEncrypt with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *OriginEncrypt) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on OriginEncrypt with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in OriginEncryptMultiError, or +// nil if none found. +func (m *OriginEncrypt) ValidateAll() error { + return m.validate(true) +} + +func (m *OriginEncrypt) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for EncryptType // no validation rules for Kv // no validation rules for Iv + if len(errors) > 0 { + return OriginEncryptMultiError(errors) + } + return nil } +// OriginEncryptMultiError is an error wrapping multiple validation errors +// returned by OriginEncrypt.ValidateAll() if the designated constraints +// aren't met. +type OriginEncryptMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m OriginEncryptMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m OriginEncryptMultiError) AllErrors() []error { return m } + // OriginEncryptValidationError is the validation error returned by // OriginEncrypt.Validate if the designated constraints aren't met. type OriginEncryptValidationError struct { @@ -2976,21 +5097,56 @@ var _ interface { // Validate checks the field values on MigrateCloudAccountResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *MigrateCloudAccountResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MigrateCloudAccountResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// MigrateCloudAccountResponseMultiError, or nil if none found. +func (m *MigrateCloudAccountResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *MigrateCloudAccountResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return MigrateCloudAccountResponseMultiError(errors) + } + return nil } +// MigrateCloudAccountResponseMultiError is an error wrapping multiple +// validation errors returned by MigrateCloudAccountResponse.ValidateAll() if +// the designated constraints aren't met. +type MigrateCloudAccountResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MigrateCloudAccountResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MigrateCloudAccountResponseMultiError) AllErrors() []error { return m } + // MigrateCloudAccountResponseValidationError is the validation error returned // by MigrateCloudAccountResponse.Validate if the designated constraints // aren't met. @@ -3050,43 +5206,94 @@ var _ interface { // Validate checks the field values on DeleteCloudAccountRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteCloudAccountRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteCloudAccountRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteCloudAccountRequestMultiError, or nil if none found. +func (m *DeleteCloudAccountRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteCloudAccountRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 1024 { - return DeleteCloudAccountRequestValidationError{ + err := DeleteCloudAccountRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteCloudAccountRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return DeleteCloudAccountRequestValidationError{ + err := DeleteCloudAccountRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetAccountID()); l < 2 || l > 1024 { - return DeleteCloudAccountRequestValidationError{ + err := DeleteCloudAccountRequestValidationError{ field: "AccountID", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteCloudAccountRequest_AccountID_Pattern.MatchString(m.GetAccountID()) { - return DeleteCloudAccountRequestValidationError{ + err := DeleteCloudAccountRequestValidationError{ field: "AccountID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return DeleteCloudAccountRequestMultiError(errors) } return nil } +// DeleteCloudAccountRequestMultiError is an error wrapping multiple validation +// errors returned by DeleteCloudAccountRequest.ValidateAll() if the +// designated constraints aren't met. +type DeleteCloudAccountRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteCloudAccountRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteCloudAccountRequestMultiError) AllErrors() []error { return m } + // DeleteCloudAccountRequestValidationError is the validation error returned by // DeleteCloudAccountRequest.Validate if the designated constraints aren't met. type DeleteCloudAccountRequestValidationError struct { @@ -3149,21 +5356,56 @@ var _DeleteCloudAccountRequest_AccountID_Pattern = regexp.MustCompile("^[0-9a-zA // Validate checks the field values on DeleteCloudAccountResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteCloudAccountResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteCloudAccountResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteCloudAccountResponseMultiError, or nil if none found. +func (m *DeleteCloudAccountResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteCloudAccountResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return DeleteCloudAccountResponseMultiError(errors) + } + return nil } +// DeleteCloudAccountResponseMultiError is an error wrapping multiple +// validation errors returned by DeleteCloudAccountResponse.ValidateAll() if +// the designated constraints aren't met. +type DeleteCloudAccountResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteCloudAccountResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteCloudAccountResponseMultiError) AllErrors() []error { return m } + // DeleteCloudAccountResponseValidationError is the validation error returned // by DeleteCloudAccountResponse.Validate if the designated constraints aren't met. type DeleteCloudAccountResponseValidationError struct { @@ -3222,19 +5464,54 @@ var _ interface { // Validate checks the field values on ListCloudAccountPermRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudAccountPermRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudAccountPermRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudAccountPermRequestMultiError, or nil if none found. +func (m *ListCloudAccountPermRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudAccountPermRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProjectID // no validation rules for AccountName + if len(errors) > 0 { + return ListCloudAccountPermRequestMultiError(errors) + } + return nil } +// ListCloudAccountPermRequestMultiError is an error wrapping multiple +// validation errors returned by ListCloudAccountPermRequest.ValidateAll() if +// the designated constraints aren't met. +type ListCloudAccountPermRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudAccountPermRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudAccountPermRequestMultiError) AllErrors() []error { return m } + // ListCloudAccountPermRequestValidationError is the validation error returned // by ListCloudAccountPermRequest.Validate if the designated constraints // aren't met. @@ -3294,12 +5571,26 @@ var _ interface { // Validate checks the field values on ListCloudAccountPermResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudAccountPermResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudAccountPermResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudAccountPermResponseMultiError, or nil if none found. +func (m *ListCloudAccountPermResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudAccountPermResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -3309,7 +5600,26 @@ func (m *ListCloudAccountPermResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudAccountPermResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudAccountPermResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudAccountPermResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -3321,9 +5631,30 @@ func (m *ListCloudAccountPermResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudAccountPermResponseMultiError(errors) + } + return nil } +// ListCloudAccountPermResponseMultiError is an error wrapping multiple +// validation errors returned by ListCloudAccountPermResponse.ValidateAll() if +// the designated constraints aren't met. +type ListCloudAccountPermResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudAccountPermResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudAccountPermResponseMultiError) AllErrors() []error { return m } + // ListCloudAccountPermResponseValidationError is the validation error returned // by ListCloudAccountPermResponse.Validate if the designated constraints // aren't met. @@ -3383,17 +5714,35 @@ var _ interface { // Validate checks the field values on ListCloudAccountRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudAccountRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudAccountRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudAccountRequestMultiError, or nil if none found. +func (m *ListCloudAccountRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudAccountRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) > 1024 { - return ListCloudAccountRequestValidationError{ + err := ListCloudAccountRequestValidationError{ field: "CloudID", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for AccountID @@ -3402,9 +5751,30 @@ func (m *ListCloudAccountRequest) Validate() error { // no validation rules for Operator + if len(errors) > 0 { + return ListCloudAccountRequestMultiError(errors) + } + return nil } +// ListCloudAccountRequestMultiError is an error wrapping multiple validation +// errors returned by ListCloudAccountRequest.ValidateAll() if the designated +// constraints aren't met. +type ListCloudAccountRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudAccountRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudAccountRequestMultiError) AllErrors() []error { return m } + // ListCloudAccountRequestValidationError is the validation error returned by // ListCloudAccountRequest.Validate if the designated constraints aren't met. type ListCloudAccountRequestValidationError struct { @@ -3463,29 +5833,70 @@ var _ interface { // Validate checks the field values on VerifyCloudAccountRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *VerifyCloudAccountRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on VerifyCloudAccountRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// VerifyCloudAccountRequestMultiError, or nil if none found. +func (m *VerifyCloudAccountRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *VerifyCloudAccountRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 1024 { - return VerifyCloudAccountRequestValidationError{ + err := VerifyCloudAccountRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_VerifyCloudAccountRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return VerifyCloudAccountRequestValidationError{ + err := VerifyCloudAccountRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Desc - if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAccount()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, VerifyCloudAccountRequestValidationError{ + field: "Account", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, VerifyCloudAccountRequestValidationError{ + field: "Account", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return VerifyCloudAccountRequestValidationError{ field: "Account", @@ -3495,9 +5906,30 @@ func (m *VerifyCloudAccountRequest) Validate() error { } } + if len(errors) > 0 { + return VerifyCloudAccountRequestMultiError(errors) + } + return nil } +// VerifyCloudAccountRequestMultiError is an error wrapping multiple validation +// errors returned by VerifyCloudAccountRequest.ValidateAll() if the +// designated constraints aren't met. +type VerifyCloudAccountRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m VerifyCloudAccountRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m VerifyCloudAccountRequestMultiError) AllErrors() []error { return m } + // VerifyCloudAccountRequestValidationError is the validation error returned by // VerifyCloudAccountRequest.Validate if the designated constraints aren't met. type VerifyCloudAccountRequestValidationError struct { @@ -3558,21 +5990,56 @@ var _VerifyCloudAccountRequest_CloudID_Pattern = regexp.MustCompile("^[0-9a-zA-Z // Validate checks the field values on VerifyCloudAccountResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *VerifyCloudAccountResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on VerifyCloudAccountResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// VerifyCloudAccountResponseMultiError, or nil if none found. +func (m *VerifyCloudAccountResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *VerifyCloudAccountResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return VerifyCloudAccountResponseMultiError(errors) + } + return nil } +// VerifyCloudAccountResponseMultiError is an error wrapping multiple +// validation errors returned by VerifyCloudAccountResponse.ValidateAll() if +// the designated constraints aren't met. +type VerifyCloudAccountResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m VerifyCloudAccountResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m VerifyCloudAccountResponseMultiError) AllErrors() []error { return m } + // VerifyCloudAccountResponseValidationError is the validation error returned // by VerifyCloudAccountResponse.Validate if the designated constraints aren't met. type VerifyCloudAccountResponseValidationError struct { @@ -3630,14 +6097,47 @@ var _ interface { } = VerifyCloudAccountResponseValidationError{} // Validate checks the field values on CloudAccountInfo with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CloudAccountInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudAccountInfo with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CloudAccountInfoMultiError, or nil if none found. +func (m *CloudAccountInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudAccountInfo) validate(all bool) error { if m == nil { return nil } - if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { + var errors []error + + if all { + switch v := interface{}(m.GetAccount()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudAccountInfoValidationError{ + field: "Account", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudAccountInfoValidationError{ + field: "Account", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAccount()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudAccountInfoValidationError{ field: "Account", @@ -3647,9 +6147,30 @@ func (m *CloudAccountInfo) Validate() error { } } + if len(errors) > 0 { + return CloudAccountInfoMultiError(errors) + } + return nil } +// CloudAccountInfoMultiError is an error wrapping multiple validation errors +// returned by CloudAccountInfo.ValidateAll() if the designated constraints +// aren't met. +type CloudAccountInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudAccountInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudAccountInfoMultiError) AllErrors() []error { return m } + // CloudAccountInfoValidationError is the validation error returned by // CloudAccountInfo.Validate if the designated constraints aren't met. type CloudAccountInfoValidationError struct { @@ -3706,12 +6227,26 @@ var _ interface { // Validate checks the field values on ListCloudAccountResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudAccountResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudAccountResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudAccountResponseMultiError, or nil if none found. +func (m *ListCloudAccountResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudAccountResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -3721,7 +6256,26 @@ func (m *ListCloudAccountResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudAccountResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudAccountResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudAccountResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -3733,7 +6287,26 @@ func (m *ListCloudAccountResponse) Validate() error { } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudAccountResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudAccountResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudAccountResponseValidationError{ field: "WebAnnotations", @@ -3743,9 +6316,30 @@ func (m *ListCloudAccountResponse) Validate() error { } } + if len(errors) > 0 { + return ListCloudAccountResponseMultiError(errors) + } + return nil } +// ListCloudAccountResponseMultiError is an error wrapping multiple validation +// errors returned by ListCloudAccountResponse.ValidateAll() if the designated +// constraints aren't met. +type ListCloudAccountResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudAccountResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudAccountResponseMultiError) AllErrors() []error { return m } + // ListCloudAccountResponseValidationError is the validation error returned by // ListCloudAccountResponse.Validate if the designated constraints aren't met. type ListCloudAccountResponseValidationError struct { @@ -3803,12 +6397,27 @@ var _ interface { } = ListCloudAccountResponseValidationError{} // Validate checks the field values on CloudVPC with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CloudVPC) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudVPC with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CloudVPCMultiError, or nil +// if none found. +func (m *CloudVPC) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudVPC) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for Region @@ -3837,7 +6446,26 @@ func (m *CloudVPC) Validate() error { // no validation rules for BusinessID - if v, ok := interface{}(m.GetOverlay()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetOverlay()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudVPCValidationError{ + field: "Overlay", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudVPCValidationError{ + field: "Overlay", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetOverlay()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudVPCValidationError{ field: "Overlay", @@ -3847,7 +6475,26 @@ func (m *CloudVPC) Validate() error { } } - if v, ok := interface{}(m.GetUnderlay()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetUnderlay()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudVPCValidationError{ + field: "Underlay", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudVPCValidationError{ + field: "Underlay", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUnderlay()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudVPCValidationError{ field: "Underlay", @@ -3857,9 +6504,29 @@ func (m *CloudVPC) Validate() error { } } + if len(errors) > 0 { + return CloudVPCMultiError(errors) + } + return nil } +// CloudVPCMultiError is an error wrapping multiple validation errors returned +// by CloudVPC.ValidateAll() if the designated constraints aren't met. +type CloudVPCMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudVPCMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudVPCMultiError) AllErrors() []error { return m } + // CloudVPCValidationError is the validation error returned by // CloudVPC.Validate if the designated constraints aren't met. type CloudVPCValidationError struct { @@ -3915,16 +6582,49 @@ var _ interface { } = CloudVPCValidationError{} // Validate checks the field values on Cidr with the rules defined in the proto -// definition for this message. If any rules are violated, an error is returned. +// definition for this message. If any rules are violated, the first error +// encountered is returned, or nil if there are no violations. func (m *Cidr) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Cidr with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in CidrMultiError, or nil if none found. +func (m *Cidr) ValidateAll() error { + return m.validate(true) +} + +func (m *Cidr) validate(all bool) error { if m == nil { return nil } + var errors []error + for idx, item := range m.GetCidrs() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CidrValidationError{ + field: fmt.Sprintf("Cidrs[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CidrValidationError{ + field: fmt.Sprintf("Cidrs[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CidrValidationError{ field: fmt.Sprintf("Cidrs[%v]", idx), @@ -3938,9 +6638,29 @@ func (m *Cidr) Validate() error { // no validation rules for ReservedIPNum + if len(errors) > 0 { + return CidrMultiError(errors) + } + return nil } +// CidrMultiError is an error wrapping multiple validation errors returned by +// Cidr.ValidateAll() if the designated constraints aren't met. +type CidrMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CidrMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CidrMultiError) AllErrors() []error { return m } + // CidrValidationError is the validation error returned by Cidr.Validate if the // designated constraints aren't met. type CidrValidationError struct { @@ -3996,19 +6716,54 @@ var _ interface { } = CidrValidationError{} // Validate checks the field values on CidrState with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CidrState) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CidrState with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CidrStateMultiError, or nil +// if none found. +func (m *CidrState) ValidateAll() error { + return m.validate(true) +} + +func (m *CidrState) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Cidr // no validation rules for Block + if len(errors) > 0 { + return CidrStateMultiError(errors) + } + return nil } +// CidrStateMultiError is an error wrapping multiple validation errors returned +// by CidrState.ValidateAll() if the designated constraints aren't met. +type CidrStateMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CidrStateMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CidrStateMultiError) AllErrors() []error { return m } + // CidrStateValidationError is the validation error returned by // CidrState.Validate if the designated constraints aren't met. type CidrStateValidationError struct { @@ -4065,98 +6820,175 @@ var _ interface { // Validate checks the field values on CreateCloudVPCRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateCloudVPCRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateCloudVPCRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateCloudVPCRequestMultiError, or nil if none found. +func (m *CreateCloudVPCRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateCloudVPCRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 100 { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateCloudVPCRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _CreateCloudVPCRequest_NetworkType_InLookup[m.GetNetworkType()]; !ok { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "NetworkType", reason: "value must be in list [overlay underlay]", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetRegion()); l < 2 || l > 100 { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "Region", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateCloudVPCRequest_Region_Pattern.MatchString(m.GetRegion()) { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "Region", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for RegionName if l := utf8.RuneCountInString(m.GetVpcName()); l < 2 || l > 100 { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "VpcName", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateCloudVPCRequest_VpcName_Pattern.MatchString(m.GetVpcName()) { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "VpcName", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetVpcID()); l < 2 || l > 100 { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "VpcID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateCloudVPCRequest_VpcID_Pattern.MatchString(m.GetVpcID()) { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "VpcID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _CreateCloudVPCRequest_Available_InLookup[m.GetAvailable()]; !ok { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "Available", reason: "value must be in list [true false]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Extra if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 100 { - return CreateCloudVPCRequestValidationError{ + err := CreateCloudVPCRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for ReservedIPNum // no validation rules for BusinessID - if v, ok := interface{}(m.GetOverlay()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetOverlay()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudVPCRequestValidationError{ + field: "Overlay", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudVPCRequestValidationError{ + field: "Overlay", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetOverlay()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudVPCRequestValidationError{ field: "Overlay", @@ -4166,7 +6998,26 @@ func (m *CreateCloudVPCRequest) Validate() error { } } - if v, ok := interface{}(m.GetUnderlay()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetUnderlay()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudVPCRequestValidationError{ + field: "Underlay", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudVPCRequestValidationError{ + field: "Underlay", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUnderlay()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudVPCRequestValidationError{ field: "Underlay", @@ -4176,9 +7027,30 @@ func (m *CreateCloudVPCRequest) Validate() error { } } + if len(errors) > 0 { + return CreateCloudVPCRequestMultiError(errors) + } + return nil } +// CreateCloudVPCRequestMultiError is an error wrapping multiple validation +// errors returned by CreateCloudVPCRequest.ValidateAll() if the designated +// constraints aren't met. +type CreateCloudVPCRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateCloudVPCRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateCloudVPCRequestMultiError) AllErrors() []error { return m } + // CreateCloudVPCRequestValidationError is the validation error returned by // CreateCloudVPCRequest.Validate if the designated constraints aren't met. type CreateCloudVPCRequestValidationError struct { @@ -4255,21 +7127,56 @@ var _CreateCloudVPCRequest_Available_InLookup = map[string]struct{}{ // Validate checks the field values on CreateCloudVPCResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateCloudVPCResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateCloudVPCResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateCloudVPCResponseMultiError, or nil if none found. +func (m *CreateCloudVPCResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateCloudVPCResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return CreateCloudVPCResponseMultiError(errors) + } + return nil } +// CreateCloudVPCResponseMultiError is an error wrapping multiple validation +// errors returned by CreateCloudVPCResponse.ValidateAll() if the designated +// constraints aren't met. +type CreateCloudVPCResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateCloudVPCResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateCloudVPCResponseMultiError) AllErrors() []error { return m } + // CreateCloudVPCResponseValidationError is the validation error returned by // CreateCloudVPCResponse.Validate if the designated constraints aren't met. type CreateCloudVPCResponseValidationError struct { @@ -4328,24 +7235,46 @@ var _ interface { // Validate checks the field values on UpdateCloudVPCRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateCloudVPCRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateCloudVPCRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateCloudVPCRequestMultiError, or nil if none found. +func (m *UpdateCloudVPCRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateCloudVPCRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 100 { - return UpdateCloudVPCRequestValidationError{ + err := UpdateCloudVPCRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateCloudVPCRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return UpdateCloudVPCRequestValidationError{ + err := UpdateCloudVPCRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for NetworkType @@ -4357,34 +7286,69 @@ func (m *UpdateCloudVPCRequest) Validate() error { // no validation rules for VpcName if l := utf8.RuneCountInString(m.GetVpcID()); l < 2 || l > 100 { - return UpdateCloudVPCRequestValidationError{ + err := UpdateCloudVPCRequestValidationError{ field: "VpcID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateCloudVPCRequest_VpcID_Pattern.MatchString(m.GetVpcID()) { - return UpdateCloudVPCRequestValidationError{ + err := UpdateCloudVPCRequestValidationError{ field: "VpcID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _UpdateCloudVPCRequest_Available_InLookup[m.GetAvailable()]; !ok { - return UpdateCloudVPCRequestValidationError{ + err := UpdateCloudVPCRequestValidationError{ field: "Available", reason: "value must be in list [ true false]", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 100 { - return UpdateCloudVPCRequestValidationError{ + err := UpdateCloudVPCRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetReservedIPNum()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetReservedIPNum()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudVPCRequestValidationError{ + field: "ReservedIPNum", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudVPCRequestValidationError{ + field: "ReservedIPNum", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetReservedIPNum()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudVPCRequestValidationError{ field: "ReservedIPNum", @@ -4394,7 +7358,26 @@ func (m *UpdateCloudVPCRequest) Validate() error { } } - if v, ok := interface{}(m.GetBusinessID()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetBusinessID()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudVPCRequestValidationError{ + field: "BusinessID", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudVPCRequestValidationError{ + field: "BusinessID", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetBusinessID()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudVPCRequestValidationError{ field: "BusinessID", @@ -4404,7 +7387,26 @@ func (m *UpdateCloudVPCRequest) Validate() error { } } - if v, ok := interface{}(m.GetOverlay()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetOverlay()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudVPCRequestValidationError{ + field: "Overlay", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudVPCRequestValidationError{ + field: "Overlay", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetOverlay()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudVPCRequestValidationError{ field: "Overlay", @@ -4414,7 +7416,26 @@ func (m *UpdateCloudVPCRequest) Validate() error { } } - if v, ok := interface{}(m.GetUnderlay()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetUnderlay()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudVPCRequestValidationError{ + field: "Underlay", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudVPCRequestValidationError{ + field: "Underlay", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUnderlay()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudVPCRequestValidationError{ field: "Underlay", @@ -4424,9 +7445,30 @@ func (m *UpdateCloudVPCRequest) Validate() error { } } + if len(errors) > 0 { + return UpdateCloudVPCRequestMultiError(errors) + } + return nil } +// UpdateCloudVPCRequestMultiError is an error wrapping multiple validation +// errors returned by UpdateCloudVPCRequest.ValidateAll() if the designated +// constraints aren't met. +type UpdateCloudVPCRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateCloudVPCRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateCloudVPCRequestMultiError) AllErrors() []error { return m } + // UpdateCloudVPCRequestValidationError is the validation error returned by // UpdateCloudVPCRequest.Validate if the designated constraints aren't met. type UpdateCloudVPCRequestValidationError struct { @@ -4495,19 +7537,52 @@ var _UpdateCloudVPCRequest_Available_InLookup = map[string]struct{}{ // Validate checks the field values on UpdateCloudVPCResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateCloudVPCResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateCloudVPCResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateCloudVPCResponseMultiError, or nil if none found. +func (m *UpdateCloudVPCResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateCloudVPCResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudVPCResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudVPCResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudVPCResponseValidationError{ field: "Data", @@ -4517,9 +7592,30 @@ func (m *UpdateCloudVPCResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateCloudVPCResponseMultiError(errors) + } + return nil } +// UpdateCloudVPCResponseMultiError is an error wrapping multiple validation +// errors returned by UpdateCloudVPCResponse.ValidateAll() if the designated +// constraints aren't met. +type UpdateCloudVPCResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateCloudVPCResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateCloudVPCResponseMultiError) AllErrors() []error { return m } + // UpdateCloudVPCResponseValidationError is the validation error returned by // UpdateCloudVPCResponse.Validate if the designated constraints aren't met. type UpdateCloudVPCResponseValidationError struct { @@ -4578,43 +7674,94 @@ var _ interface { // Validate checks the field values on DeleteCloudVPCRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteCloudVPCRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteCloudVPCRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteCloudVPCRequestMultiError, or nil if none found. +func (m *DeleteCloudVPCRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteCloudVPCRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 100 { - return DeleteCloudVPCRequestValidationError{ + err := DeleteCloudVPCRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteCloudVPCRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return DeleteCloudVPCRequestValidationError{ + err := DeleteCloudVPCRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetVpcID()); l < 2 || l > 100 { - return DeleteCloudVPCRequestValidationError{ + err := DeleteCloudVPCRequestValidationError{ field: "VpcID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteCloudVPCRequest_VpcID_Pattern.MatchString(m.GetVpcID()) { - return DeleteCloudVPCRequestValidationError{ + err := DeleteCloudVPCRequestValidationError{ field: "VpcID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return DeleteCloudVPCRequestMultiError(errors) } return nil } +// DeleteCloudVPCRequestMultiError is an error wrapping multiple validation +// errors returned by DeleteCloudVPCRequest.ValidateAll() if the designated +// constraints aren't met. +type DeleteCloudVPCRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteCloudVPCRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteCloudVPCRequestMultiError) AllErrors() []error { return m } + // DeleteCloudVPCRequestValidationError is the validation error returned by // DeleteCloudVPCRequest.Validate if the designated constraints aren't met. type DeleteCloudVPCRequestValidationError struct { @@ -4677,19 +7824,52 @@ var _DeleteCloudVPCRequest_VpcID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on DeleteCloudVPCResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteCloudVPCResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteCloudVPCResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteCloudVPCResponseMultiError, or nil if none found. +func (m *DeleteCloudVPCResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteCloudVPCResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteCloudVPCResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteCloudVPCResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteCloudVPCResponseValidationError{ field: "Data", @@ -4699,9 +7879,30 @@ func (m *DeleteCloudVPCResponse) Validate() error { } } + if len(errors) > 0 { + return DeleteCloudVPCResponseMultiError(errors) + } + return nil } +// DeleteCloudVPCResponseMultiError is an error wrapping multiple validation +// errors returned by DeleteCloudVPCResponse.ValidateAll() if the designated +// constraints aren't met. +type DeleteCloudVPCResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteCloudVPCResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteCloudVPCResponseMultiError) AllErrors() []error { return m } + // DeleteCloudVPCResponseValidationError is the validation error returned by // DeleteCloudVPCResponse.Validate if the designated constraints aren't met. type DeleteCloudVPCResponseValidationError struct { @@ -4760,17 +7961,35 @@ var _ interface { // Validate checks the field values on ListCloudVPCRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudVPCRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudVPCRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudVPCRequestMultiError, or nil if none found. +func (m *ListCloudVPCRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudVPCRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) > 20 { - return ListCloudVPCRequestValidationError{ + err := ListCloudVPCRequestValidationError{ field: "CloudID", reason: "value length must be at most 20 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region @@ -4778,17 +7997,42 @@ func (m *ListCloudVPCRequest) Validate() error { // no validation rules for VpcID if _, ok := _ListCloudVPCRequest_NetworkType_InLookup[m.GetNetworkType()]; !ok { - return ListCloudVPCRequestValidationError{ + err := ListCloudVPCRequestValidationError{ field: "NetworkType", reason: "value must be in list [overlay underlay]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for BusinessID + if len(errors) > 0 { + return ListCloudVPCRequestMultiError(errors) + } + return nil } +// ListCloudVPCRequestMultiError is an error wrapping multiple validation +// errors returned by ListCloudVPCRequest.ValidateAll() if the designated +// constraints aren't met. +type ListCloudVPCRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudVPCRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudVPCRequestMultiError) AllErrors() []error { return m } + // ListCloudVPCRequestValidationError is the validation error returned by // ListCloudVPCRequest.Validate if the designated constraints aren't met. type ListCloudVPCRequestValidationError struct { @@ -4852,12 +8096,26 @@ var _ListCloudVPCRequest_NetworkType_InLookup = map[string]struct{}{ // Validate checks the field values on ListCloudVPCResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudVPCResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudVPCResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudVPCResponseMultiError, or nil if none found. +func (m *ListCloudVPCResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudVPCResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -4867,7 +8125,26 @@ func (m *ListCloudVPCResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudVPCResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudVPCResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudVPCResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -4879,9 +8156,30 @@ func (m *ListCloudVPCResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudVPCResponseMultiError(errors) + } + return nil } +// ListCloudVPCResponseMultiError is an error wrapping multiple validation +// errors returned by ListCloudVPCResponse.ValidateAll() if the designated +// constraints aren't met. +type ListCloudVPCResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudVPCResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudVPCResponseMultiError) AllErrors() []error { return m } + // ListCloudVPCResponseValidationError is the validation error returned by // ListCloudVPCResponse.Validate if the designated constraints aren't met. type ListCloudVPCResponseValidationError struct { @@ -4939,13 +8237,27 @@ var _ interface { } = ListCloudVPCResponseValidationError{} // Validate checks the field values on CloudVPCResp with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CloudVPCResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudVPCResp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CloudVPCRespMultiError, or +// nil if none found. +func (m *CloudVPCResp) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudVPCResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for Region @@ -4966,7 +8278,26 @@ func (m *CloudVPCResp) Validate() error { // no validation rules for AvailableIPNum - if v, ok := interface{}(m.GetOverlay()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetOverlay()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudVPCRespValidationError{ + field: "Overlay", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudVPCRespValidationError{ + field: "Overlay", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetOverlay()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudVPCRespValidationError{ field: "Overlay", @@ -4976,7 +8307,26 @@ func (m *CloudVPCResp) Validate() error { } } - if v, ok := interface{}(m.GetUnderlay()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetUnderlay()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudVPCRespValidationError{ + field: "Underlay", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudVPCRespValidationError{ + field: "Underlay", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUnderlay()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudVPCRespValidationError{ field: "Underlay", @@ -4988,9 +8338,29 @@ func (m *CloudVPCResp) Validate() error { // no validation rules for BusinessID + if len(errors) > 0 { + return CloudVPCRespMultiError(errors) + } + return nil } +// CloudVPCRespMultiError is an error wrapping multiple validation errors +// returned by CloudVPCResp.ValidateAll() if the designated constraints aren't met. +type CloudVPCRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudVPCRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudVPCRespMultiError) AllErrors() []error { return m } + // CloudVPCRespValidationError is the validation error returned by // CloudVPCResp.Validate if the designated constraints aren't met. type CloudVPCRespValidationError struct { @@ -5046,17 +8416,50 @@ var _ interface { } = CloudVPCRespValidationError{} // Validate checks the field values on CidrDetailInfo with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CidrDetailInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CidrDetailInfo with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CidrDetailInfoMultiError, +// or nil if none found. +func (m *CidrDetailInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *CidrDetailInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + for idx, item := range m.GetCidrs() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CidrDetailInfoValidationError{ + field: fmt.Sprintf("Cidrs[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CidrDetailInfoValidationError{ + field: fmt.Sprintf("Cidrs[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CidrDetailInfoValidationError{ field: fmt.Sprintf("Cidrs[%v]", idx), @@ -5072,9 +8475,30 @@ func (m *CidrDetailInfo) Validate() error { // no validation rules for AvailableIPNum + if len(errors) > 0 { + return CidrDetailInfoMultiError(errors) + } + return nil } +// CidrDetailInfoMultiError is an error wrapping multiple validation errors +// returned by CidrDetailInfo.ValidateAll() if the designated constraints +// aren't met. +type CidrDetailInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CidrDetailInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CidrDetailInfoMultiError) AllErrors() []error { return m } + // CidrDetailInfoValidationError is the validation error returned by // CidrDetailInfo.Validate if the designated constraints aren't met. type CidrDetailInfoValidationError struct { @@ -5131,22 +8555,61 @@ var _ interface { // Validate checks the field values on ListCloudRegionsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudRegionsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudRegionsRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudRegionsRequestMultiError, or nil if none found. +func (m *ListCloudRegionsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudRegionsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) > 20 { - return ListCloudRegionsRequestValidationError{ + err := ListCloudRegionsRequestValidationError{ field: "CloudID", reason: "value length must be at most 20 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return ListCloudRegionsRequestMultiError(errors) } return nil } +// ListCloudRegionsRequestMultiError is an error wrapping multiple validation +// errors returned by ListCloudRegionsRequest.ValidateAll() if the designated +// constraints aren't met. +type ListCloudRegionsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudRegionsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudRegionsRequestMultiError) AllErrors() []error { return m } + // ListCloudRegionsRequestValidationError is the validation error returned by // ListCloudRegionsRequest.Validate if the designated constraints aren't met. type ListCloudRegionsRequestValidationError struct { @@ -5205,12 +8668,26 @@ var _ interface { // Validate checks the field values on ListCloudRegionsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudRegionsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudRegionsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudRegionsResponseMultiError, or nil if none found. +func (m *ListCloudRegionsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudRegionsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -5220,7 +8697,26 @@ func (m *ListCloudRegionsResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudRegionsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudRegionsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudRegionsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -5232,9 +8728,30 @@ func (m *ListCloudRegionsResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudRegionsResponseMultiError(errors) + } + return nil } +// ListCloudRegionsResponseMultiError is an error wrapping multiple validation +// errors returned by ListCloudRegionsResponse.ValidateAll() if the designated +// constraints aren't met. +type ListCloudRegionsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudRegionsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudRegionsResponseMultiError) AllErrors() []error { return m } + // ListCloudRegionsResponseValidationError is the validation error returned by // ListCloudRegionsResponse.Validate if the designated constraints aren't met. type ListCloudRegionsResponseValidationError struct { @@ -5292,22 +8809,56 @@ var _ interface { } = ListCloudRegionsResponseValidationError{} // Validate checks the field values on CloudRegion with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CloudRegion) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudRegion with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CloudRegionMultiError, or +// nil if none found. +func (m *CloudRegion) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudRegion) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for RegionName // no validation rules for Region + if len(errors) > 0 { + return CloudRegionMultiError(errors) + } + return nil } +// CloudRegionMultiError is an error wrapping multiple validation errors +// returned by CloudRegion.ValidateAll() if the designated constraints aren't met. +type CloudRegionMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudRegionMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudRegionMultiError) AllErrors() []error { return m } + // CloudRegionValidationError is the validation error returned by // CloudRegion.Validate if the designated constraints aren't met. type CloudRegionValidationError struct { @@ -5363,18 +8914,53 @@ var _ interface { } = CloudRegionValidationError{} // Validate checks the field values on GetVPCCidrRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *GetVPCCidrRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetVPCCidrRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetVPCCidrRequestMultiError, or nil if none found. +func (m *GetVPCCidrRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetVPCCidrRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for VpcID + if len(errors) > 0 { + return GetVPCCidrRequestMultiError(errors) + } + return nil } +// GetVPCCidrRequestMultiError is an error wrapping multiple validation errors +// returned by GetVPCCidrRequest.ValidateAll() if the designated constraints +// aren't met. +type GetVPCCidrRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetVPCCidrRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetVPCCidrRequestMultiError) AllErrors() []error { return m } + // GetVPCCidrRequestValidationError is the validation error returned by // GetVPCCidrRequest.Validate if the designated constraints aren't met. type GetVPCCidrRequestValidationError struct { @@ -5433,12 +9019,26 @@ var _ interface { // Validate checks the field values on GetVPCCidrResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetVPCCidrResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetVPCCidrResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetVPCCidrResponseMultiError, or nil if none found. +func (m *GetVPCCidrResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetVPCCidrResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -5448,7 +9048,26 @@ func (m *GetVPCCidrResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetVPCCidrResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetVPCCidrResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetVPCCidrResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -5460,9 +9079,30 @@ func (m *GetVPCCidrResponse) Validate() error { } + if len(errors) > 0 { + return GetVPCCidrResponseMultiError(errors) + } + return nil } +// GetVPCCidrResponseMultiError is an error wrapping multiple validation errors +// returned by GetVPCCidrResponse.ValidateAll() if the designated constraints +// aren't met. +type GetVPCCidrResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetVPCCidrResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetVPCCidrResponseMultiError) AllErrors() []error { return m } + // GetVPCCidrResponseValidationError is the validation error returned by // GetVPCCidrResponse.Validate if the designated constraints aren't met. type GetVPCCidrResponseValidationError struct { @@ -5520,12 +9160,26 @@ var _ interface { } = GetVPCCidrResponseValidationError{} // Validate checks the field values on VPCCidr with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *VPCCidr) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on VPCCidr with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in VPCCidrMultiError, or nil if none found. +func (m *VPCCidr) ValidateAll() error { + return m.validate(true) +} + +func (m *VPCCidr) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Vpc // no validation rules for Cidr @@ -5534,9 +9188,29 @@ func (m *VPCCidr) Validate() error { // no validation rules for Status + if len(errors) > 0 { + return VPCCidrMultiError(errors) + } + return nil } +// VPCCidrMultiError is an error wrapping multiple validation errors returned +// by VPCCidr.ValidateAll() if the designated constraints aren't met. +type VPCCidrMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m VPCCidrMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m VPCCidrMultiError) AllErrors() []error { return m } + // VPCCidrValidationError is the validation error returned by VPCCidr.Validate // if the designated constraints aren't met. type VPCCidrValidationError struct { @@ -5592,53 +9266,144 @@ var _ interface { } = VPCCidrValidationError{} // Validate checks the field values on Cloud with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Cloud) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Cloud with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in CloudMultiError, or nil if none found. +func (m *Cloud) ValidateAll() error { + return m.validate(true) +} + +func (m *Cloud) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for Name // no validation rules for Editable - for key, val := range m.GetOpsPlugins() { - _ = val - - // no validation rules for OpsPlugins[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CloudValidationError{ - field: fmt.Sprintf("OpsPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetOpsPlugins())) + i := 0 + for key := range m.GetOpsPlugins() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetOpsPlugins()[key] + _ = val + + // no validation rules for OpsPlugins[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CloudValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } - for key, val := range m.GetExtraPlugins() { - _ = val + { + sorted_keys := make([]string, len(m.GetExtraPlugins())) + i := 0 + for key := range m.GetExtraPlugins() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetExtraPlugins()[key] + _ = val + + // no validation rules for ExtraPlugins[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CloudValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + } + } + } - // no validation rules for ExtraPlugins[key] + } + } - if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCloudCredential()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudValidationError{ + field: "CloudCredential", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: if err := v.Validate(); err != nil { - return CloudValidationError{ - field: fmt.Sprintf("ExtraPlugins[%v]", key), + errors = append(errors, CloudValidationError{ + field: "CloudCredential", reason: "embedded message failed validation", cause: err, - } + }) } } - - } - - if v, ok := interface{}(m.GetCloudCredential()).(interface{ Validate() error }); ok { + } else if v, ok := interface{}(m.GetCloudCredential()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudValidationError{ field: "CloudCredential", @@ -5648,7 +9413,26 @@ func (m *Cloud) Validate() error { } } - if v, ok := interface{}(m.GetOsManagement()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetOsManagement()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudValidationError{ + field: "OsManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudValidationError{ + field: "OsManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetOsManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudValidationError{ field: "OsManagement", @@ -5658,7 +9442,26 @@ func (m *Cloud) Validate() error { } } - if v, ok := interface{}(m.GetClusterManagement()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterManagement()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudValidationError{ + field: "ClusterManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudValidationError{ + field: "ClusterManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudValidationError{ field: "ClusterManagement", @@ -5668,7 +9471,26 @@ func (m *Cloud) Validate() error { } } - if v, ok := interface{}(m.GetNodeGroupManagement()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeGroupManagement()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudValidationError{ + field: "NodeGroupManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudValidationError{ + field: "NodeGroupManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeGroupManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudValidationError{ field: "NodeGroupManagement", @@ -5696,7 +9518,26 @@ func (m *Cloud) Validate() error { // no validation rules for Enable - if v, ok := interface{}(m.GetNetworkInfo()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNetworkInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudValidationError{ + field: "NetworkInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudValidationError{ + field: "NetworkInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNetworkInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudValidationError{ field: "NetworkInfo", @@ -5706,7 +9547,26 @@ func (m *Cloud) Validate() error { } } - if v, ok := interface{}(m.GetConfInfo()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetConfInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudValidationError{ + field: "ConfInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudValidationError{ + field: "ConfInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetConfInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudValidationError{ field: "ConfInfo", @@ -5718,9 +9578,29 @@ func (m *Cloud) Validate() error { // no validation rules for PlatformInfo + if len(errors) > 0 { + return CloudMultiError(errors) + } + return nil } +// CloudMultiError is an error wrapping multiple validation errors returned by +// Cloud.ValidateAll() if the designated constraints aren't met. +type CloudMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudMultiError) AllErrors() []error { return m } + // CloudValidationError is the validation error returned by Cloud.Validate if // the designated constraints aren't met. type CloudValidationError struct { @@ -5776,13 +9656,27 @@ var _ interface { } = CloudValidationError{} // Validate checks the field values on CloudConfigInfo with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CloudConfigInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudConfigInfo with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CloudConfigInfoMultiError, or nil if none found. +func (m *CloudConfigInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudConfigInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudInternalEnable // no validation rules for CloudDomain @@ -5799,9 +9693,30 @@ func (m *CloudConfigInfo) Validate() error { // no validation rules for DisableCheckGroupResource + if len(errors) > 0 { + return CloudConfigInfoMultiError(errors) + } + return nil } +// CloudConfigInfoMultiError is an error wrapping multiple validation errors +// returned by CloudConfigInfo.ValidateAll() if the designated constraints +// aren't met. +type CloudConfigInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudConfigInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudConfigInfoMultiError) AllErrors() []error { return m } + // CloudConfigInfoValidationError is the validation error returned by // CloudConfigInfo.Validate if the designated constraints aren't met. type CloudConfigInfoValidationError struct { @@ -5857,17 +9772,50 @@ var _ interface { } = CloudConfigInfoValidationError{} // Validate checks the field values on CloudNetworkInfo with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CloudNetworkInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudNetworkInfo with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CloudNetworkInfoMultiError, or nil if none found. +func (m *CloudNetworkInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudNetworkInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + for idx, item := range m.GetCidrSteps() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudNetworkInfoValidationError{ + field: fmt.Sprintf("CidrSteps[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudNetworkInfoValidationError{ + field: fmt.Sprintf("CidrSteps[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudNetworkInfoValidationError{ field: fmt.Sprintf("CidrSteps[%v]", idx), @@ -5884,7 +9832,26 @@ func (m *CloudNetworkInfo) Validate() error { for idx, item := range m.GetVpcCniModes() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudNetworkInfoValidationError{ + field: fmt.Sprintf("VpcCniModes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudNetworkInfoValidationError{ + field: fmt.Sprintf("VpcCniModes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudNetworkInfoValidationError{ field: fmt.Sprintf("VpcCniModes[%v]", idx), @@ -5896,9 +9863,30 @@ func (m *CloudNetworkInfo) Validate() error { } + if len(errors) > 0 { + return CloudNetworkInfoMultiError(errors) + } + return nil } +// CloudNetworkInfoMultiError is an error wrapping multiple validation errors +// returned by CloudNetworkInfo.ValidateAll() if the designated constraints +// aren't met. +type CloudNetworkInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudNetworkInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudNetworkInfoMultiError) AllErrors() []error { return m } + // CloudNetworkInfoValidationError is the validation error returned by // CloudNetworkInfo.Validate if the designated constraints aren't met. type CloudNetworkInfoValidationError struct { @@ -5954,20 +9942,54 @@ var _ interface { } = CloudNetworkInfoValidationError{} // Validate checks the field values on EnvCidrStep with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *EnvCidrStep) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on EnvCidrStep with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in EnvCidrStepMultiError, or +// nil if none found. +func (m *EnvCidrStep) ValidateAll() error { + return m.validate(true) +} + +func (m *EnvCidrStep) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Env // no validation rules for Step + if len(errors) > 0 { + return EnvCidrStepMultiError(errors) + } + return nil } +// EnvCidrStepMultiError is an error wrapping multiple validation errors +// returned by EnvCidrStep.ValidateAll() if the designated constraints aren't met. +type EnvCidrStepMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m EnvCidrStepMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m EnvCidrStepMultiError) AllErrors() []error { return m } + // EnvCidrStepValidationError is the validation error returned by // EnvCidrStep.Validate if the designated constraints aren't met. type EnvCidrStepValidationError struct { @@ -6023,22 +10045,56 @@ var _ interface { } = EnvCidrStepValidationError{} // Validate checks the field values on NetworkMode with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NetworkMode) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NetworkMode with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NetworkModeMultiError, or +// nil if none found. +func (m *NetworkMode) ValidateAll() error { + return m.validate(true) +} + +func (m *NetworkMode) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Mode // no validation rules for Default // no validation rules for Name + if len(errors) > 0 { + return NetworkModeMultiError(errors) + } + return nil } +// NetworkModeMultiError is an error wrapping multiple validation errors +// returned by NetworkMode.ValidateAll() if the designated constraints aren't met. +type NetworkModeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NetworkModeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NetworkModeMultiError) AllErrors() []error { return m } + // NetworkModeValidationError is the validation error returned by // NetworkMode.Validate if the designated constraints aren't met. type NetworkModeValidationError struct { @@ -6094,12 +10150,27 @@ var _ interface { } = NetworkModeValidationError{} // Validate checks the field values on NodeGroup with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeGroup) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeGroup with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeGroupMultiError, or nil +// if none found. +func (m *NodeGroup) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeGroup) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeGroupID // no validation rules for Name @@ -6110,7 +10181,26 @@ func (m *NodeGroup) Validate() error { // no validation rules for EnableAutoscale - if v, ok := interface{}(m.GetAutoScaling()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAutoScaling()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupValidationError{ + field: "AutoScaling", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupValidationError{ + field: "AutoScaling", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAutoScaling()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupValidationError{ field: "AutoScaling", @@ -6120,7 +10210,26 @@ func (m *NodeGroup) Validate() error { } } - if v, ok := interface{}(m.GetLaunchTemplate()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetLaunchTemplate()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupValidationError{ + field: "LaunchTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupValidationError{ + field: "LaunchTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetLaunchTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupValidationError{ field: "LaunchTemplate", @@ -6149,22 +10258,49 @@ func (m *NodeGroup) Validate() error { // no validation rules for Provider if _, ok := _NodeGroup_Status_InLookup[m.GetStatus()]; !ok { - return NodeGroupValidationError{ + err := NodeGroupValidationError{ field: "Status", reason: "value must be in list [CREATING RUNNING DELETING FALURE INITIALIZATION DELETED]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for ConsumerID if m.GetNodeTemplate() == nil { - return NodeGroupValidationError{ + err := NodeGroupValidationError{ field: "NodeTemplate", reason: "value is required", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeTemplate()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupValidationError{ + field: "NodeTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupValidationError{ + field: "NodeTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupValidationError{ field: "NodeTemplate", @@ -6180,7 +10316,26 @@ func (m *NodeGroup) Validate() error { // no validation rules for NodeGroupType - if v, ok := interface{}(m.GetArea()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetArea()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeGroupValidationError{ + field: "Area", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeGroupValidationError{ + field: "Area", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetArea()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeGroupValidationError{ field: "Area", @@ -6192,9 +10347,29 @@ func (m *NodeGroup) Validate() error { // no validation rules for ExtraInfo + if len(errors) > 0 { + return NodeGroupMultiError(errors) + } + return nil } +// NodeGroupMultiError is an error wrapping multiple validation errors returned +// by NodeGroup.ValidateAll() if the designated constraints aren't met. +type NodeGroupMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeGroupMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeGroupMultiError) AllErrors() []error { return m } + // NodeGroupValidationError is the validation error returned by // NodeGroup.Validate if the designated constraints aren't met. type NodeGroupValidationError struct { @@ -6259,19 +10434,54 @@ var _NodeGroup_Status_InLookup = map[string]struct{}{ } // Validate checks the field values on CloudArea with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CloudArea) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudArea with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CloudAreaMultiError, or nil +// if none found. +func (m *CloudArea) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudArea) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for BkCloudID // no validation rules for BkCloudName + if len(errors) > 0 { + return CloudAreaMultiError(errors) + } + return nil } +// CloudAreaMultiError is an error wrapping multiple validation errors returned +// by CloudArea.ValidateAll() if the designated constraints aren't met. +type CloudAreaMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudAreaMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudAreaMultiError) AllErrors() []error { return m } + // CloudAreaValidationError is the validation error returned by // CloudArea.Validate if the designated constraints aren't met. type CloudAreaValidationError struct { @@ -6327,29 +10537,51 @@ var _ interface { } = CloudAreaValidationError{} // Validate checks the field values on AutoScalingGroup with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *AutoScalingGroup) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AutoScalingGroup with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// AutoScalingGroupMultiError, or nil if none found. +func (m *AutoScalingGroup) ValidateAll() error { + return m.validate(true) +} + +func (m *AutoScalingGroup) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for AutoScalingID // no validation rules for AutoScalingName if val := m.GetMinSize(); val < 0 || val > 1000 { - return AutoScalingGroupValidationError{ + err := AutoScalingGroupValidationError{ field: "MinSize", reason: "value must be inside range [0, 1000]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxSize(); val < 0 || val > 1000 { - return AutoScalingGroupValidationError{ + err := AutoScalingGroupValidationError{ field: "MaxSize", reason: "value must be inside range [0, 1000]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for DesiredSize @@ -6369,7 +10601,26 @@ func (m *AutoScalingGroup) Validate() error { for idx, item := range m.GetTimeRanges() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, AutoScalingGroupValidationError{ + field: fmt.Sprintf("TimeRanges[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, AutoScalingGroupValidationError{ + field: fmt.Sprintf("TimeRanges[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return AutoScalingGroupValidationError{ field: fmt.Sprintf("TimeRanges[%v]", idx), @@ -6385,9 +10636,30 @@ func (m *AutoScalingGroup) Validate() error { // no validation rules for ServiceRole + if len(errors) > 0 { + return AutoScalingGroupMultiError(errors) + } + return nil } +// AutoScalingGroupMultiError is an error wrapping multiple validation errors +// returned by AutoScalingGroup.ValidateAll() if the designated constraints +// aren't met. +type AutoScalingGroupMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AutoScalingGroupMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AutoScalingGroupMultiError) AllErrors() []error { return m } + // AutoScalingGroupValidationError is the validation error returned by // AutoScalingGroup.Validate if the designated constraints aren't met. type AutoScalingGroupValidationError struct { @@ -6443,33 +10715,76 @@ var _ interface { } = AutoScalingGroupValidationError{} // Validate checks the field values on TimeRange with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *TimeRange) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TimeRange with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in TimeRangeMultiError, or nil +// if none found. +func (m *TimeRange) ValidateAll() error { + return m.validate(true) +} + +func (m *TimeRange) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetName()); l < 2 || l > 1024 { - return TimeRangeValidationError{ + err := TimeRangeValidationError{ field: "Name", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetSchedule()); l < 2 || l > 1024 { - return TimeRangeValidationError{ + err := TimeRangeValidationError{ field: "Schedule", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Zone // no validation rules for DesiredNum + if len(errors) > 0 { + return TimeRangeMultiError(errors) + } + return nil } +// TimeRangeMultiError is an error wrapping multiple validation errors returned +// by TimeRange.ValidateAll() if the designated constraints aren't met. +type TimeRangeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TimeRangeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TimeRangeMultiError) AllErrors() []error { return m } + // TimeRangeValidationError is the validation error returned by // TimeRange.Validate if the designated constraints aren't met. type TimeRangeValidationError struct { @@ -6525,19 +10840,54 @@ var _ interface { } = TimeRangeValidationError{} // Validate checks the field values on DataDisk with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *DataDisk) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DataDisk with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in DataDiskMultiError, or nil +// if none found. +func (m *DataDisk) ValidateAll() error { + return m.validate(true) +} + +func (m *DataDisk) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for DiskType // no validation rules for DiskSize + if len(errors) > 0 { + return DataDiskMultiError(errors) + } + return nil } +// DataDiskMultiError is an error wrapping multiple validation errors returned +// by DataDisk.ValidateAll() if the designated constraints aren't met. +type DataDiskMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DataDiskMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DataDiskMultiError) AllErrors() []error { return m } + // DataDiskValidationError is the validation error returned by // DataDisk.Validate if the designated constraints aren't met. type DataDiskValidationError struct { @@ -6593,13 +10943,27 @@ var _ interface { } = DataDiskValidationError{} // Validate checks the field values on CloudDataDisk with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CloudDataDisk) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudDataDisk with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CloudDataDiskMultiError, or +// nil if none found. +func (m *CloudDataDisk) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudDataDisk) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for DiskType // no validation rules for DiskSize @@ -6612,9 +10976,30 @@ func (m *CloudDataDisk) Validate() error { // no validation rules for DiskPartition + if len(errors) > 0 { + return CloudDataDiskMultiError(errors) + } + return nil } +// CloudDataDiskMultiError is an error wrapping multiple validation errors +// returned by CloudDataDisk.ValidateAll() if the designated constraints +// aren't met. +type CloudDataDiskMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudDataDiskMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudDataDiskMultiError) AllErrors() []error { return m } + // CloudDataDiskValidationError is the validation error returned by // CloudDataDisk.Validate if the designated constraints aren't met. type CloudDataDiskValidationError struct { @@ -6671,12 +11056,26 @@ var _ interface { // Validate checks the field values on InternetAccessible with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *InternetAccessible) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on InternetAccessible with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// InternetAccessibleMultiError, or nil if none found. +func (m *InternetAccessible) ValidateAll() error { + return m.validate(true) +} + +func (m *InternetAccessible) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for InternetChargeType // no validation rules for InternetMaxBandwidth @@ -6687,9 +11086,30 @@ func (m *InternetAccessible) Validate() error { // no validation rules for PublicIP + if len(errors) > 0 { + return InternetAccessibleMultiError(errors) + } + return nil } +// InternetAccessibleMultiError is an error wrapping multiple validation errors +// returned by InternetAccessible.ValidateAll() if the designated constraints +// aren't met. +type InternetAccessibleMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m InternetAccessibleMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m InternetAccessibleMultiError) AllErrors() []error { return m } + // InternetAccessibleValidationError is the validation error returned by // InternetAccessible.Validate if the designated constraints aren't met. type InternetAccessibleValidationError struct { @@ -6748,12 +11168,26 @@ var _ interface { // Validate checks the field values on InstanceTemplateConfig with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *InstanceTemplateConfig) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on InstanceTemplateConfig with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// InstanceTemplateConfigMultiError, or nil if none found. +func (m *InstanceTemplateConfig) ValidateAll() error { + return m.validate(true) +} + +func (m *InstanceTemplateConfig) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Region // no validation rules for Zone @@ -6773,13 +11207,36 @@ func (m *InstanceTemplateConfig) Validate() error { // no validation rules for InstanceType if _, ok := _InstanceTemplateConfig_InstanceChargeType_InLookup[m.GetInstanceChargeType()]; !ok { - return InstanceTemplateConfigValidationError{ + err := InstanceTemplateConfigValidationError{ field: "InstanceChargeType", reason: "value must be in list [PREPAID POSTPAID_BY_HOUR SPOTPAID]", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetSystemDisk()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetSystemDisk()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: "SystemDisk", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: "SystemDisk", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSystemDisk()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTemplateConfigValidationError{ field: "SystemDisk", @@ -6792,7 +11249,26 @@ func (m *InstanceTemplateConfig) Validate() error { for idx, item := range m.GetDataDisks() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTemplateConfigValidationError{ field: fmt.Sprintf("DataDisks[%v]", idx), @@ -6804,7 +11280,26 @@ func (m *InstanceTemplateConfig) Validate() error { } - if v, ok := interface{}(m.GetImageInfo()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetImageInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: "ImageInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: "ImageInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetImageInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTemplateConfigValidationError{ field: "ImageInfo", @@ -6823,7 +11318,26 @@ func (m *InstanceTemplateConfig) Validate() error { for idx, item := range m.GetCloudDataDisks() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: fmt.Sprintf("CloudDataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: fmt.Sprintf("CloudDataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTemplateConfigValidationError{ field: fmt.Sprintf("CloudDataDisks[%v]", idx), @@ -6837,7 +11351,26 @@ func (m *InstanceTemplateConfig) Validate() error { // no validation rules for InitLoginUsername - if v, ok := interface{}(m.GetKeyPair()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetKeyPair()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: "KeyPair", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: "KeyPair", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetKeyPair()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTemplateConfigValidationError{ field: "KeyPair", @@ -6851,7 +11384,26 @@ func (m *InstanceTemplateConfig) Validate() error { // no validation rules for NodeRole - if v, ok := interface{}(m.GetCharge()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCharge()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: "Charge", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: "Charge", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCharge()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTemplateConfigValidationError{ field: "Charge", @@ -6861,7 +11413,26 @@ func (m *InstanceTemplateConfig) Validate() error { } } - if v, ok := interface{}(m.GetInternetAccess()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetInternetAccess()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: "InternetAccess", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, InstanceTemplateConfigValidationError{ + field: "InternetAccess", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetInternetAccess()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTemplateConfigValidationError{ field: "InternetAccess", @@ -6871,9 +11442,30 @@ func (m *InstanceTemplateConfig) Validate() error { } } + if len(errors) > 0 { + return InstanceTemplateConfigMultiError(errors) + } + return nil } +// InstanceTemplateConfigMultiError is an error wrapping multiple validation +// errors returned by InstanceTemplateConfig.ValidateAll() if the designated +// constraints aren't met. +type InstanceTemplateConfigMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m InstanceTemplateConfigMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m InstanceTemplateConfigMultiError) AllErrors() []error { return m } + // InstanceTemplateConfigValidationError is the validation error returned by // InstanceTemplateConfig.Validate if the designated constraints aren't met. type InstanceTemplateConfigValidationError struct { @@ -6938,19 +11530,54 @@ var _InstanceTemplateConfig_InstanceChargeType_InLookup = map[string]struct{}{ // Validate checks the field values on InstanceChargePrepaid with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *InstanceChargePrepaid) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on InstanceChargePrepaid with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// InstanceChargePrepaidMultiError, or nil if none found. +func (m *InstanceChargePrepaid) ValidateAll() error { + return m.validate(true) +} + +func (m *InstanceChargePrepaid) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Period // no validation rules for RenewFlag + if len(errors) > 0 { + return InstanceChargePrepaidMultiError(errors) + } + return nil } +// InstanceChargePrepaidMultiError is an error wrapping multiple validation +// errors returned by InstanceChargePrepaid.ValidateAll() if the designated +// constraints aren't met. +type InstanceChargePrepaidMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m InstanceChargePrepaidMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m InstanceChargePrepaidMultiError) AllErrors() []error { return m } + // InstanceChargePrepaidValidationError is the validation error returned by // InstanceChargePrepaid.Validate if the designated constraints aren't met. type InstanceChargePrepaidValidationError struct { @@ -7009,12 +11636,26 @@ var _ interface { // Validate checks the field values on LaunchConfiguration with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *LaunchConfiguration) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on LaunchConfiguration with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// LaunchConfigurationMultiError, or nil if none found. +func (m *LaunchConfiguration) ValidateAll() error { + return m.validate(true) +} + +func (m *LaunchConfiguration) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for LaunchConfigurationID // no validation rules for LaunchConfigureName @@ -7031,7 +11672,26 @@ func (m *LaunchConfiguration) Validate() error { // no validation rules for InstanceChargeType - if v, ok := interface{}(m.GetSystemDisk()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetSystemDisk()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: "SystemDisk", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: "SystemDisk", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSystemDisk()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return LaunchConfigurationValidationError{ field: "SystemDisk", @@ -7044,7 +11704,26 @@ func (m *LaunchConfiguration) Validate() error { for idx, item := range m.GetDataDisks() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return LaunchConfigurationValidationError{ field: fmt.Sprintf("DataDisks[%v]", idx), @@ -7056,7 +11735,26 @@ func (m *LaunchConfiguration) Validate() error { } - if v, ok := interface{}(m.GetInternetAccess()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetInternetAccess()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: "InternetAccess", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: "InternetAccess", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetInternetAccess()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return LaunchConfigurationValidationError{ field: "InternetAccess", @@ -7068,7 +11766,26 @@ func (m *LaunchConfiguration) Validate() error { // no validation rules for InitLoginPassword - if v, ok := interface{}(m.GetImageInfo()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetImageInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: "ImageInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: "ImageInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetImageInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return LaunchConfigurationValidationError{ field: "ImageInfo", @@ -7088,7 +11805,26 @@ func (m *LaunchConfiguration) Validate() error { // no validation rules for Selector - if v, ok := interface{}(m.GetKeyPair()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetKeyPair()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: "KeyPair", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: "KeyPair", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetKeyPair()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return LaunchConfigurationValidationError{ field: "KeyPair", @@ -7098,7 +11834,26 @@ func (m *LaunchConfiguration) Validate() error { } } - if v, ok := interface{}(m.GetCharge()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCharge()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: "Charge", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, LaunchConfigurationValidationError{ + field: "Charge", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCharge()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return LaunchConfigurationValidationError{ field: "Charge", @@ -7108,9 +11863,30 @@ func (m *LaunchConfiguration) Validate() error { } } + if len(errors) > 0 { + return LaunchConfigurationMultiError(errors) + } + return nil } +// LaunchConfigurationMultiError is an error wrapping multiple validation +// errors returned by LaunchConfiguration.ValidateAll() if the designated +// constraints aren't met. +type LaunchConfigurationMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m LaunchConfigurationMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m LaunchConfigurationMultiError) AllErrors() []error { return m } + // LaunchConfigurationValidationError is the validation error returned by // LaunchConfiguration.Validate if the designated constraints aren't met. type LaunchConfigurationValidationError struct { @@ -7168,21 +11944,55 @@ var _ interface { } = LaunchConfigurationValidationError{} // Validate checks the field values on KeyInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *KeyInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on KeyInfo with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in KeyInfoMultiError, or nil if none found. +func (m *KeyInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *KeyInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for KeyID // no validation rules for KeySecret // no validation rules for KeyPublic + if len(errors) > 0 { + return KeyInfoMultiError(errors) + } + return nil } +// KeyInfoMultiError is an error wrapping multiple validation errors returned +// by KeyInfo.ValidateAll() if the designated constraints aren't met. +type KeyInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m KeyInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m KeyInfoMultiError) AllErrors() []error { return m } + // KeyInfoValidationError is the validation error returned by KeyInfo.Validate // if the designated constraints aren't met. type KeyInfoValidationError struct { @@ -7238,21 +12048,56 @@ var _ interface { } = KeyInfoValidationError{} // Validate checks the field values on ImageInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ImageInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ImageInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ImageInfoMultiError, or nil +// if none found. +func (m *ImageInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *ImageInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ImageID // no validation rules for ImageName // no validation rules for ImageType + if len(errors) > 0 { + return ImageInfoMultiError(errors) + } + return nil } +// ImageInfoMultiError is an error wrapping multiple validation errors returned +// by ImageInfo.ValidateAll() if the designated constraints aren't met. +type ImageInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ImageInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ImageInfoMultiError) AllErrors() []error { return m } + // ImageInfoValidationError is the validation error returned by // ImageInfo.Validate if the designated constraints aren't met. type ImageInfoValidationError struct { @@ -7309,12 +12154,26 @@ var _ interface { // Validate checks the field values on ClusterAutoScalingOption with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ClusterAutoScalingOption) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ClusterAutoScalingOption with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ClusterAutoScalingOptionMultiError, or nil if none found. +func (m *ClusterAutoScalingOption) ValidateAll() error { + return m.validate(true) +} + +func (m *ClusterAutoScalingOption) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for IsScaleDownEnable // no validation rules for Expander @@ -7383,7 +12242,26 @@ func (m *ClusterAutoScalingOption) Validate() error { // no validation rules for BufferResourceMemRatio - if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetModule()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterAutoScalingOptionValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterAutoScalingOptionValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterAutoScalingOptionValidationError{ field: "Module", @@ -7393,7 +12271,26 @@ func (m *ClusterAutoScalingOption) Validate() error { } } - if v, ok := interface{}(m.GetWebhook()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebhook()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterAutoScalingOptionValidationError{ + field: "Webhook", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterAutoScalingOptionValidationError{ + field: "Webhook", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebhook()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterAutoScalingOptionValidationError{ field: "Webhook", @@ -7406,17 +12303,42 @@ func (m *ClusterAutoScalingOption) Validate() error { // no validation rules for ExpendablePodsPriorityCutoff if m.GetNewPodScaleUpDelay() < 0 { - return ClusterAutoScalingOptionValidationError{ + err := ClusterAutoScalingOptionValidationError{ field: "NewPodScaleUpDelay", reason: "value must be greater than or equal to 0", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for DevicePoolProvider + if len(errors) > 0 { + return ClusterAutoScalingOptionMultiError(errors) + } + return nil } +// ClusterAutoScalingOptionMultiError is an error wrapping multiple validation +// errors returned by ClusterAutoScalingOption.ValidateAll() if the designated +// constraints aren't met. +type ClusterAutoScalingOptionMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ClusterAutoScalingOptionMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ClusterAutoScalingOptionMultiError) AllErrors() []error { return m } + // ClusterAutoScalingOptionValidationError is the validation error returned by // ClusterAutoScalingOption.Validate if the designated constraints aren't met. type ClusterAutoScalingOptionValidationError struct { @@ -7474,22 +12396,56 @@ var _ interface { } = ClusterAutoScalingOptionValidationError{} // Validate checks the field values on WebhookMode with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *WebhookMode) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on WebhookMode with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in WebhookModeMultiError, or +// nil if none found. +func (m *WebhookMode) ValidateAll() error { + return m.validate(true) +} + +func (m *WebhookMode) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Mode // no validation rules for Server // no validation rules for Token + if len(errors) > 0 { + return WebhookModeMultiError(errors) + } + return nil } +// WebhookModeMultiError is an error wrapping multiple validation errors +// returned by WebhookMode.ValidateAll() if the designated constraints aren't met. +type WebhookModeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m WebhookModeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m WebhookModeMultiError) AllErrors() []error { return m } + // WebhookModeValidationError is the validation error returned by // WebhookMode.Validate if the designated constraints aren't met. type WebhookModeValidationError struct { @@ -7545,21 +12501,55 @@ var _ interface { } = WebhookModeValidationError{} // Validate checks the field values on Taint with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Taint) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Taint with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in TaintMultiError, or nil if none found. +func (m *Taint) ValidateAll() error { + return m.validate(true) +} + +func (m *Taint) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Key // no validation rules for Value // no validation rules for Effect + if len(errors) > 0 { + return TaintMultiError(errors) + } + return nil } +// TaintMultiError is an error wrapping multiple validation errors returned by +// Taint.ValidateAll() if the designated constraints aren't met. +type TaintMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TaintMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TaintMultiError) AllErrors() []error { return m } + // TaintValidationError is the validation error returned by Taint.Validate if // the designated constraints aren't met. type TaintValidationError struct { @@ -7615,13 +12605,27 @@ var _ interface { } = TaintValidationError{} // Validate checks the field values on NodeTemplate with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeTemplate) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeTemplate with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeTemplateMultiError, or +// nil if none found. +func (m *NodeTemplate) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeTemplate) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeTemplateID // no validation rules for Name @@ -7633,7 +12637,26 @@ func (m *NodeTemplate) Validate() error { for idx, item := range m.GetTaints() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: fmt.Sprintf("Taints[%v]", idx), @@ -7656,7 +12679,26 @@ func (m *NodeTemplate) Validate() error { for idx, item := range m.GetDataDisks() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: fmt.Sprintf("DataDisks[%v]", idx), @@ -7672,7 +12714,26 @@ func (m *NodeTemplate) Validate() error { // no validation rules for PreStartUserScript - if v, ok := interface{}(m.GetBcsScaleOutAddons()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetBcsScaleOutAddons()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "BcsScaleOutAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "BcsScaleOutAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetBcsScaleOutAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: "BcsScaleOutAddons", @@ -7682,7 +12743,26 @@ func (m *NodeTemplate) Validate() error { } } - if v, ok := interface{}(m.GetBcsScaleInAddons()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetBcsScaleInAddons()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "BcsScaleInAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "BcsScaleInAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetBcsScaleInAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: "BcsScaleInAddons", @@ -7692,7 +12772,26 @@ func (m *NodeTemplate) Validate() error { } } - if v, ok := interface{}(m.GetScaleOutExtraAddons()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleOutExtraAddons()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "ScaleOutExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "ScaleOutExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleOutExtraAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: "ScaleOutExtraAddons", @@ -7702,7 +12801,26 @@ func (m *NodeTemplate) Validate() error { } } - if v, ok := interface{}(m.GetScaleInExtraAddons()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleInExtraAddons()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "ScaleInExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "ScaleInExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleInExtraAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: "ScaleInExtraAddons", @@ -7724,7 +12842,26 @@ func (m *NodeTemplate) Validate() error { // no validation rules for Desc - if v, ok := interface{}(m.GetRuntime()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetRuntime()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "Runtime", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "Runtime", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRuntime()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: "Runtime", @@ -7734,7 +12871,26 @@ func (m *NodeTemplate) Validate() error { } } - if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetModule()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeTemplateValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTemplateValidationError{ field: "Module", @@ -7758,9 +12914,29 @@ func (m *NodeTemplate) Validate() error { // no validation rules for AllowSkipScaleInWhenFailed + if len(errors) > 0 { + return NodeTemplateMultiError(errors) + } + return nil } +// NodeTemplateMultiError is an error wrapping multiple validation errors +// returned by NodeTemplate.ValidateAll() if the designated constraints aren't met. +type NodeTemplateMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeTemplateMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeTemplateMultiError) AllErrors() []error { return m } + // NodeTemplateValidationError is the validation error returned by // NodeTemplate.Validate if the designated constraints aren't met. type NodeTemplateValidationError struct { @@ -7816,13 +12992,27 @@ var _ interface { } = NodeTemplateValidationError{} // Validate checks the field values on ClusterModule with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ClusterModule) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ClusterModule with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ClusterModuleMultiError, or +// nil if none found. +func (m *ClusterModule) ValidateAll() error { + return m.validate(true) +} + +func (m *ClusterModule) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for MasterModuleID // no validation rules for MasterModuleName @@ -7831,9 +13021,30 @@ func (m *ClusterModule) Validate() error { // no validation rules for WorkerModuleName + if len(errors) > 0 { + return ClusterModuleMultiError(errors) + } + return nil } +// ClusterModuleMultiError is an error wrapping multiple validation errors +// returned by ClusterModule.ValidateAll() if the designated constraints +// aren't met. +type ClusterModuleMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ClusterModuleMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ClusterModuleMultiError) AllErrors() []error { return m } + // ClusterModuleValidationError is the validation error returned by // ClusterModule.Validate if the designated constraints aren't met. type ClusterModuleValidationError struct { @@ -7889,12 +13100,27 @@ var _ interface { } = ClusterModuleValidationError{} // Validate checks the field values on ModuleInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ModuleInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ModuleInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ModuleInfoMultiError, or +// nil if none found. +func (m *ModuleInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *ModuleInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ScaleOutModuleID // no validation rules for ScaleInModuleID @@ -7907,9 +13133,29 @@ func (m *ModuleInfo) Validate() error { // no validation rules for ScaleInModuleName + if len(errors) > 0 { + return ModuleInfoMultiError(errors) + } + return nil } +// ModuleInfoMultiError is an error wrapping multiple validation errors +// returned by ModuleInfo.ValidateAll() if the designated constraints aren't met. +type ModuleInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ModuleInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ModuleInfoMultiError) AllErrors() []error { return m } + // ModuleInfoValidationError is the validation error returned by // ModuleInfo.Validate if the designated constraints aren't met. type ModuleInfoValidationError struct { @@ -7965,20 +13211,54 @@ var _ interface { } = ModuleInfoValidationError{} // Validate checks the field values on RunTimeInfo with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *RunTimeInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RunTimeInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in RunTimeInfoMultiError, or +// nil if none found. +func (m *RunTimeInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *RunTimeInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ContainerRuntime // no validation rules for RuntimeVersion + if len(errors) > 0 { + return RunTimeInfoMultiError(errors) + } + return nil } +// RunTimeInfoMultiError is an error wrapping multiple validation errors +// returned by RunTimeInfo.ValidateAll() if the designated constraints aren't met. +type RunTimeInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RunTimeInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RunTimeInfoMultiError) AllErrors() []error { return m } + // RunTimeInfoValidationError is the validation error returned by // RunTimeInfo.Validate if the designated constraints aren't met. type RunTimeInfoValidationError struct { @@ -8035,31 +13315,57 @@ var _ interface { // Validate checks the field values on CreateNodeTemplateRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateNodeTemplateRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateNodeTemplateRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateNodeTemplateRequestMultiError, or nil if none found. +func (m *CreateNodeTemplateRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateNodeTemplateRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetProjectID()); l < 1 || l > 2048 { - return CreateNodeTemplateRequestValidationError{ + err := CreateNodeTemplateRequestValidationError{ field: "ProjectID", reason: "value length must be between 1 and 2048 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateNodeTemplateRequest_ProjectID_Pattern.MatchString(m.GetProjectID()) { - return CreateNodeTemplateRequestValidationError{ + err := CreateNodeTemplateRequestValidationError{ field: "ProjectID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetName()) < 1 { - return CreateNodeTemplateRequestValidationError{ + err := CreateNodeTemplateRequestValidationError{ field: "Name", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Desc @@ -8069,7 +13375,26 @@ func (m *CreateNodeTemplateRequest) Validate() error { for idx, item := range m.GetTaints() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: fmt.Sprintf("Taints[%v]", idx), @@ -8092,7 +13417,26 @@ func (m *CreateNodeTemplateRequest) Validate() error { for idx, item := range m.GetDataDisks() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: fmt.Sprintf("DataDisks[%v]", idx), @@ -8108,7 +13452,26 @@ func (m *CreateNodeTemplateRequest) Validate() error { // no validation rules for PreStartUserScript - if v, ok := interface{}(m.GetScaleOutExtraAddons()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleOutExtraAddons()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "ScaleOutExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "ScaleOutExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleOutExtraAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "ScaleOutExtraAddons", @@ -8118,7 +13481,26 @@ func (m *CreateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetScaleInExtraAddons()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleInExtraAddons()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "ScaleInExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "ScaleInExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleInExtraAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "ScaleInExtraAddons", @@ -8131,13 +13513,36 @@ func (m *CreateNodeTemplateRequest) Validate() error { // no validation rules for NodeOS if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 1024 { - return CreateNodeTemplateRequestValidationError{ + err := CreateNodeTemplateRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetRuntime()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetRuntime()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "Runtime", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "Runtime", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRuntime()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "Runtime", @@ -8147,7 +13552,26 @@ func (m *CreateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetModule()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "Module", @@ -8157,7 +13581,26 @@ func (m *CreateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetScaleInPreScript()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleInPreScript()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "ScaleInPreScript", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "ScaleInPreScript", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleInPreScript()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "ScaleInPreScript", @@ -8167,7 +13610,26 @@ func (m *CreateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetScaleInPostScript()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleInPostScript()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "ScaleInPostScript", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "ScaleInPostScript", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleInPostScript()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "ScaleInPostScript", @@ -8177,7 +13639,26 @@ func (m *CreateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "Annotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateRequestValidationError{ + field: "Annotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateRequestValidationError{ field: "Annotations", @@ -8187,9 +13668,30 @@ func (m *CreateNodeTemplateRequest) Validate() error { } } + if len(errors) > 0 { + return CreateNodeTemplateRequestMultiError(errors) + } + return nil } +// CreateNodeTemplateRequestMultiError is an error wrapping multiple validation +// errors returned by CreateNodeTemplateRequest.ValidateAll() if the +// designated constraints aren't met. +type CreateNodeTemplateRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateNodeTemplateRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateNodeTemplateRequestMultiError) AllErrors() []error { return m } + // CreateNodeTemplateRequestValidationError is the validation error returned by // CreateNodeTemplateRequest.Validate if the designated constraints aren't met. type CreateNodeTemplateRequestValidationError struct { @@ -8250,19 +13752,52 @@ var _CreateNodeTemplateRequest_ProjectID_Pattern = regexp.MustCompile("^[0-9a-zA // Validate checks the field values on CreateNodeTemplateResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateNodeTemplateResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateNodeTemplateResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateNodeTemplateResponseMultiError, or nil if none found. +func (m *CreateNodeTemplateResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateNodeTemplateResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeTemplateResponseValidationError{ field: "WebAnnotations", @@ -8272,9 +13807,30 @@ func (m *CreateNodeTemplateResponse) Validate() error { } } + if len(errors) > 0 { + return CreateNodeTemplateResponseMultiError(errors) + } + return nil } +// CreateNodeTemplateResponseMultiError is an error wrapping multiple +// validation errors returned by CreateNodeTemplateResponse.ValidateAll() if +// the designated constraints aren't met. +type CreateNodeTemplateResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateNodeTemplateResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateNodeTemplateResponseMultiError) AllErrors() []error { return m } + // CreateNodeTemplateResponseValidationError is the validation error returned // by CreateNodeTemplateResponse.Validate if the designated constraints aren't met. type CreateNodeTemplateResponseValidationError struct { @@ -8333,12 +13889,26 @@ var _ interface { // Validate checks the field values on UpdateNodeTemplateRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeTemplateRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeTemplateRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeTemplateRequestMultiError, or nil if none found. +func (m *UpdateNodeTemplateRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeTemplateRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProjectID // no validation rules for NodeTemplateID @@ -8352,7 +13922,26 @@ func (m *UpdateNodeTemplateRequest) Validate() error { for idx, item := range m.GetTaints() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: fmt.Sprintf("Taints[%v]", idx), @@ -8370,7 +13959,26 @@ func (m *UpdateNodeTemplateRequest) Validate() error { // no validation rules for UserScript - if v, ok := interface{}(m.GetUnSchedulable()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetUnSchedulable()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "UnSchedulable", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "UnSchedulable", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUnSchedulable()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "UnSchedulable", @@ -8383,7 +13991,26 @@ func (m *UpdateNodeTemplateRequest) Validate() error { for idx, item := range m.GetDataDisks() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: fmt.Sprintf("DataDisks[%v]", idx), @@ -8399,7 +14026,26 @@ func (m *UpdateNodeTemplateRequest) Validate() error { // no validation rules for PreStartUserScript - if v, ok := interface{}(m.GetScaleOutExtraAddons()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleOutExtraAddons()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "ScaleOutExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "ScaleOutExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleOutExtraAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "ScaleOutExtraAddons", @@ -8409,7 +14055,26 @@ func (m *UpdateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetScaleInExtraAddons()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleInExtraAddons()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "ScaleInExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "ScaleInExtraAddons", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleInExtraAddons()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "ScaleInExtraAddons", @@ -8422,13 +14087,36 @@ func (m *UpdateNodeTemplateRequest) Validate() error { // no validation rules for NodeOS if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 1024 { - return UpdateNodeTemplateRequestValidationError{ + err := UpdateNodeTemplateRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetRuntime()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetRuntime()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "Runtime", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "Runtime", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRuntime()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "Runtime", @@ -8438,7 +14126,26 @@ func (m *UpdateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetModule()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "Module", @@ -8448,7 +14155,26 @@ func (m *UpdateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetScaleInPreScript()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleInPreScript()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "ScaleInPreScript", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "ScaleInPreScript", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleInPreScript()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "ScaleInPreScript", @@ -8458,7 +14184,26 @@ func (m *UpdateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetScaleInPostScript()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleInPostScript()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "ScaleInPostScript", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "ScaleInPostScript", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleInPostScript()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "ScaleInPostScript", @@ -8468,7 +14213,26 @@ func (m *UpdateNodeTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "Annotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateRequestValidationError{ + field: "Annotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateRequestValidationError{ field: "Annotations", @@ -8478,9 +14242,30 @@ func (m *UpdateNodeTemplateRequest) Validate() error { } } + if len(errors) > 0 { + return UpdateNodeTemplateRequestMultiError(errors) + } + return nil } +// UpdateNodeTemplateRequestMultiError is an error wrapping multiple validation +// errors returned by UpdateNodeTemplateRequest.ValidateAll() if the +// designated constraints aren't met. +type UpdateNodeTemplateRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeTemplateRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeTemplateRequestMultiError) AllErrors() []error { return m } + // UpdateNodeTemplateRequestValidationError is the validation error returned by // UpdateNodeTemplateRequest.Validate if the designated constraints aren't met. type UpdateNodeTemplateRequestValidationError struct { @@ -8539,19 +14324,52 @@ var _ interface { // Validate checks the field values on UpdateNodeTemplateResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeTemplateResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeTemplateResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeTemplateResponseMultiError, or nil if none found. +func (m *UpdateNodeTemplateResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeTemplateResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTemplateResponseValidationError{ field: "WebAnnotations", @@ -8561,9 +14379,30 @@ func (m *UpdateNodeTemplateResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateNodeTemplateResponseMultiError(errors) + } + return nil } +// UpdateNodeTemplateResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateNodeTemplateResponse.ValidateAll() if +// the designated constraints aren't met. +type UpdateNodeTemplateResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeTemplateResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeTemplateResponseMultiError) AllErrors() []error { return m } + // UpdateNodeTemplateResponseValidationError is the validation error returned // by UpdateNodeTemplateResponse.Validate if the designated constraints aren't met. type UpdateNodeTemplateResponseValidationError struct { @@ -8622,19 +14461,54 @@ var _ interface { // Validate checks the field values on DeleteNodeTemplateRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteNodeTemplateRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteNodeTemplateRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteNodeTemplateRequestMultiError, or nil if none found. +func (m *DeleteNodeTemplateRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteNodeTemplateRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProjectID // no validation rules for NodeTemplateID + if len(errors) > 0 { + return DeleteNodeTemplateRequestMultiError(errors) + } + return nil } +// DeleteNodeTemplateRequestMultiError is an error wrapping multiple validation +// errors returned by DeleteNodeTemplateRequest.ValidateAll() if the +// designated constraints aren't met. +type DeleteNodeTemplateRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteNodeTemplateRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteNodeTemplateRequestMultiError) AllErrors() []error { return m } + // DeleteNodeTemplateRequestValidationError is the validation error returned by // DeleteNodeTemplateRequest.Validate if the designated constraints aren't met. type DeleteNodeTemplateRequestValidationError struct { @@ -8693,19 +14567,52 @@ var _ interface { // Validate checks the field values on DeleteNodeTemplateResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteNodeTemplateResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteNodeTemplateResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteNodeTemplateResponseMultiError, or nil if none found. +func (m *DeleteNodeTemplateResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteNodeTemplateResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteNodeTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteNodeTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodeTemplateResponseValidationError{ field: "WebAnnotations", @@ -8715,9 +14622,30 @@ func (m *DeleteNodeTemplateResponse) Validate() error { } } + if len(errors) > 0 { + return DeleteNodeTemplateResponseMultiError(errors) + } + return nil } +// DeleteNodeTemplateResponseMultiError is an error wrapping multiple +// validation errors returned by DeleteNodeTemplateResponse.ValidateAll() if +// the designated constraints aren't met. +type DeleteNodeTemplateResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteNodeTemplateResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteNodeTemplateResponseMultiError) AllErrors() []error { return m } + // DeleteNodeTemplateResponseValidationError is the validation error returned // by DeleteNodeTemplateResponse.Validate if the designated constraints aren't met. type DeleteNodeTemplateResponseValidationError struct { @@ -8776,19 +14704,54 @@ var _ interface { // Validate checks the field values on GetNodeTemplateRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetNodeTemplateRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetNodeTemplateRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetNodeTemplateRequestMultiError, or nil if none found. +func (m *GetNodeTemplateRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetNodeTemplateRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProjectID // no validation rules for NodeTemplateID + if len(errors) > 0 { + return GetNodeTemplateRequestMultiError(errors) + } + return nil } +// GetNodeTemplateRequestMultiError is an error wrapping multiple validation +// errors returned by GetNodeTemplateRequest.ValidateAll() if the designated +// constraints aren't met. +type GetNodeTemplateRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetNodeTemplateRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetNodeTemplateRequestMultiError) AllErrors() []error { return m } + // GetNodeTemplateRequestValidationError is the validation error returned by // GetNodeTemplateRequest.Validate if the designated constraints aren't met. type GetNodeTemplateRequestValidationError struct { @@ -8847,19 +14810,52 @@ var _ interface { // Validate checks the field values on GetNodeTemplateResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetNodeTemplateResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetNodeTemplateResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetNodeTemplateResponseMultiError, or nil if none found. +func (m *GetNodeTemplateResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetNodeTemplateResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetNodeTemplateResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetNodeTemplateResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetNodeTemplateResponseValidationError{ field: "Data", @@ -8869,7 +14865,26 @@ func (m *GetNodeTemplateResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetNodeTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetNodeTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetNodeTemplateResponseValidationError{ field: "WebAnnotations", @@ -8879,9 +14894,30 @@ func (m *GetNodeTemplateResponse) Validate() error { } } + if len(errors) > 0 { + return GetNodeTemplateResponseMultiError(errors) + } + return nil } +// GetNodeTemplateResponseMultiError is an error wrapping multiple validation +// errors returned by GetNodeTemplateResponse.ValidateAll() if the designated +// constraints aren't met. +type GetNodeTemplateResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetNodeTemplateResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetNodeTemplateResponseMultiError) AllErrors() []error { return m } + // GetNodeTemplateResponseValidationError is the validation error returned by // GetNodeTemplateResponse.Validate if the designated constraints aren't met. type GetNodeTemplateResponseValidationError struct { @@ -8940,19 +14976,54 @@ var _ interface { // Validate checks the field values on ListNodeTemplateRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNodeTemplateRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNodeTemplateRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNodeTemplateRequestMultiError, or nil if none found. +func (m *ListNodeTemplateRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNodeTemplateRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProjectID // no validation rules for NodeTemplateID + if len(errors) > 0 { + return ListNodeTemplateRequestMultiError(errors) + } + return nil } +// ListNodeTemplateRequestMultiError is an error wrapping multiple validation +// errors returned by ListNodeTemplateRequest.ValidateAll() if the designated +// constraints aren't met. +type ListNodeTemplateRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNodeTemplateRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNodeTemplateRequestMultiError) AllErrors() []error { return m } + // ListNodeTemplateRequestValidationError is the validation error returned by // ListNodeTemplateRequest.Validate if the designated constraints aren't met. type ListNodeTemplateRequestValidationError struct { @@ -9011,12 +15082,26 @@ var _ interface { // Validate checks the field values on ListNodeTemplateResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNodeTemplateResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNodeTemplateResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNodeTemplateResponseMultiError, or nil if none found. +func (m *ListNodeTemplateResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNodeTemplateResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -9026,7 +15111,26 @@ func (m *ListNodeTemplateResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListNodeTemplateResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListNodeTemplateResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodeTemplateResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -9038,9 +15142,30 @@ func (m *ListNodeTemplateResponse) Validate() error { } + if len(errors) > 0 { + return ListNodeTemplateResponseMultiError(errors) + } + return nil } +// ListNodeTemplateResponseMultiError is an error wrapping multiple validation +// errors returned by ListNodeTemplateResponse.ValidateAll() if the designated +// constraints aren't met. +type ListNodeTemplateResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNodeTemplateResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNodeTemplateResponseMultiError) AllErrors() []error { return m } + // ListNodeTemplateResponseValidationError is the validation error returned by // ListNodeTemplateResponse.Validate if the designated constraints aren't met. type ListNodeTemplateResponseValidationError struct { @@ -9098,12 +15223,26 @@ var _ interface { } = ListNodeTemplateResponseValidationError{} // Validate checks the field values on Project with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Project) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Project with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in ProjectMultiError, or nil if none found. +func (m *Project) ValidateAll() error { + return m.validate(true) +} + +func (m *Project) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProjectID // no validation rules for Name @@ -9142,30 +15281,79 @@ func (m *Project) Validate() error { // no validation rules for IsSecret - for key, val := range m.GetCredentials() { - _ = val - - // no validation rules for Credentials[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ProjectValidationError{ - field: fmt.Sprintf("Credentials[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetCredentials())) + i := 0 + for key := range m.GetCredentials() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetCredentials()[key] + _ = val + + // no validation rules for Credentials[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ProjectValidationError{ + field: fmt.Sprintf("Credentials[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ProjectValidationError{ + field: fmt.Sprintf("Credentials[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ProjectValidationError{ + field: fmt.Sprintf("Credentials[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } // no validation rules for CreatTime // no validation rules for UpdateTime + if len(errors) > 0 { + return ProjectMultiError(errors) + } + return nil } +// ProjectMultiError is an error wrapping multiple validation errors returned +// by Project.ValidateAll() if the designated constraints aren't met. +type ProjectMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ProjectMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ProjectMultiError) AllErrors() []error { return m } + // ProjectValidationError is the validation error returned by Project.Validate // if the designated constraints aren't met. type ProjectValidationError struct { @@ -9221,21 +15409,39 @@ var _ interface { } = ProjectValidationError{} // Validate checks the field values on Task with the rules defined in the proto -// definition for this message. If any rules are violated, an error is returned. +// definition for this message. If any rules are violated, the first error +// encountered is returned, or nil if there are no violations. func (m *Task) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Task with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in TaskMultiError, or nil if none found. +func (m *Task) ValidateAll() error { + return m.validate(true) +} + +func (m *Task) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for TaskID // no validation rules for TaskType if _, ok := _Task_Status_InLookup[m.GetStatus()]; !ok { - return TaskValidationError{ + err := TaskValidationError{ field: "Status", reason: "value must be in list [INITIALIZING RUNNING SUCCESS FAILURE TIMEOUT FORCETERMINATE]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Message @@ -9248,21 +15454,50 @@ func (m *Task) Validate() error { // no validation rules for CurrentStep - for key, val := range m.GetSteps() { - _ = val - - // no validation rules for Steps[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return TaskValidationError{ - field: fmt.Sprintf("Steps[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetSteps())) + i := 0 + for key := range m.GetSteps() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetSteps()[key] + _ = val + + // no validation rules for Steps[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, TaskValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, TaskValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return TaskValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } // no validation rules for ClusterID @@ -9283,9 +15518,29 @@ func (m *Task) Validate() error { // no validation rules for NodeGroupID + if len(errors) > 0 { + return TaskMultiError(errors) + } + return nil } +// TaskMultiError is an error wrapping multiple validation errors returned by +// Task.ValidateAll() if the designated constraints aren't met. +type TaskMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TaskMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TaskMultiError) AllErrors() []error { return m } + // TaskValidationError is the validation error returned by Task.Validate if the // designated constraints aren't met. type TaskValidationError struct { @@ -9350,12 +15605,26 @@ var _Task_Status_InLookup = map[string]struct{}{ } // Validate checks the field values on Step with the rules defined in the proto -// definition for this message. If any rules are violated, an error is returned. +// definition for this message. If any rules are violated, the first error +// encountered is returned, or nil if there are no violations. func (m *Step) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Step with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in StepMultiError, or nil if none found. +func (m *Step) ValidateAll() error { + return m.validate(true) +} + +func (m *Step) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Name // no validation rules for System @@ -9373,10 +15642,14 @@ func (m *Step) Validate() error { // no validation rules for ExecutionTime if _, ok := _Step_Status_InLookup[m.GetStatus()]; !ok { - return StepValidationError{ + err := StepValidationError{ field: "Status", reason: "value must be in list [NOTSTARTED RUNNING SUCCESS FAILURE TIMEOUT FORCETERMINATE]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Message @@ -9393,9 +15666,29 @@ func (m *Step) Validate() error { // no validation rules for AllowSkip + if len(errors) > 0 { + return StepMultiError(errors) + } + return nil } +// StepMultiError is an error wrapping multiple validation errors returned by +// Step.ValidateAll() if the designated constraints aren't met. +type StepMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m StepMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m StepMultiError) AllErrors() []error { return m } + // StepValidationError is the validation error returned by Step.Validate if the // designated constraints aren't met. type StepValidationError struct { @@ -9460,12 +15753,26 @@ var _Step_Status_InLookup = map[string]struct{}{ } // Validate checks the field values on TkeCidr with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *TkeCidr) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TkeCidr with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in TkeCidrMultiError, or nil if none found. +func (m *TkeCidr) ValidateAll() error { + return m.validate(true) +} + +func (m *TkeCidr) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for VPC // no validation rules for CIDR @@ -9480,9 +15787,29 @@ func (m *TkeCidr) Validate() error { // no validation rules for UpdateTime + if len(errors) > 0 { + return TkeCidrMultiError(errors) + } + return nil } +// TkeCidrMultiError is an error wrapping multiple validation errors returned +// by TkeCidr.ValidateAll() if the designated constraints aren't met. +type TkeCidrMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TkeCidrMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TkeCidrMultiError) AllErrors() []error { return m } + // TkeCidrValidationError is the validation error returned by TkeCidr.Validate // if the designated constraints aren't met. type TkeCidrValidationError struct { @@ -9538,13 +15865,27 @@ var _ interface { } = TkeCidrValidationError{} // Validate checks the field values on TkeCidrCount with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *TkeCidrCount) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TkeCidrCount with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in TkeCidrCountMultiError, or +// nil if none found. +func (m *TkeCidrCount) ValidateAll() error { + return m.validate(true) +} + +func (m *TkeCidrCount) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Count // no validation rules for VPC @@ -9553,9 +15894,29 @@ func (m *TkeCidrCount) Validate() error { // no validation rules for Status + if len(errors) > 0 { + return TkeCidrCountMultiError(errors) + } + return nil } +// TkeCidrCountMultiError is an error wrapping multiple validation errors +// returned by TkeCidrCount.ValidateAll() if the designated constraints aren't met. +type TkeCidrCountMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TkeCidrCountMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TkeCidrCountMultiError) AllErrors() []error { return m } + // TkeCidrCountValidationError is the validation error returned by // TkeCidrCount.Validate if the designated constraints aren't met. type TkeCidrCountValidationError struct { @@ -9611,90 +15972,148 @@ var _ interface { } = TkeCidrCountValidationError{} // Validate checks the field values on CreateClusterReq with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CreateClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateClusterReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateClusterReqMultiError, or nil if none found. +func (m *CreateClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterID if l := utf8.RuneCountInString(m.GetClusterName()); l < 1 || l > 1024 { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "ClusterName", reason: "value length must be between 1 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProvider()) > 32 { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "Provider", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetRegion()); l < 1 || l > 100 { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "Region", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateClusterReq_Region_Pattern.MatchString(m.GetRegion()) { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "Region", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetVpcID()) > 40 { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "VpcID", reason: "value length must be at most 40 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) > 100 { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "ProjectID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateClusterReq_ProjectID_Pattern.MatchString(m.GetProjectID()) { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "ProjectID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetBusinessID()) > 100 { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "BusinessID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateClusterReq_BusinessID_Pattern.MatchString(m.GetBusinessID()) { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "BusinessID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _CreateClusterReq_Environment_InLookup[m.GetEnvironment()]; !ok { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "Environment", reason: "value must be in list [stag debug prod]", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _CreateClusterReq_EngineType_InLookup[m.GetEngineType()]; !ok { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "EngineType", reason: "value must be in list [k8s mesos]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for IsExclusive @@ -9704,53 +16123,119 @@ func (m *CreateClusterReq) Validate() error { // no validation rules for FederationClusterID if len(m.GetLabels()) > 20 { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "Labels", reason: "value must contain no more than 20 pair(s)", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 20 { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "Creator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for OnlyCreateInfo - for key, val := range m.GetBcsAddons() { - _ = val - - // no validation rules for BcsAddons[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CreateClusterReqValidationError{ - field: fmt.Sprintf("BcsAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetBcsAddons())) + i := 0 + for key := range m.GetBcsAddons() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetBcsAddons()[key] + _ = val + + // no validation rules for BcsAddons[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CreateClusterReqValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } - for key, val := range m.GetExtraAddons() { - _ = val - - // no validation rules for ExtraAddons[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CreateClusterReqValidationError{ - field: fmt.Sprintf("ExtraAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetExtraAddons())) + i := 0 + for key := range m.GetExtraAddons() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetExtraAddons()[key] + _ = val + + // no validation rules for ExtraAddons[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CreateClusterReqValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } // no validation rules for CloudID @@ -9758,10 +16243,14 @@ func (m *CreateClusterReq) Validate() error { // no validation rules for ManageType if m.GetNetworkSettings() == nil { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "NetworkSettings", reason: "value is required", } + if !all { + return err + } + errors = append(errors, err) } if a := m.GetNetworkSettings(); a != nil { @@ -9769,17 +16258,40 @@ func (m *CreateClusterReq) Validate() error { } if m.GetClusterBasicSettings() == nil { - return CreateClusterReqValidationError{ + err := CreateClusterReqValidationError{ field: "ClusterBasicSettings", reason: "value is required", } + if !all { + return err + } + errors = append(errors, err) } if a := m.GetClusterBasicSettings(); a != nil { } - if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterAdvanceSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: "ClusterAdvanceSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: "ClusterAdvanceSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterReqValidationError{ field: "ClusterAdvanceSettings", @@ -9789,7 +16301,26 @@ func (m *CreateClusterReq) Validate() error { } } - if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: "NodeSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: "NodeSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterReqValidationError{ field: "NodeSettings", @@ -9810,7 +16341,26 @@ func (m *CreateClusterReq) Validate() error { for idx, item := range m.GetInstances() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: fmt.Sprintf("Instances[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: fmt.Sprintf("Instances[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterReqValidationError{ field: fmt.Sprintf("Instances[%v]", idx), @@ -9843,7 +16393,26 @@ func (m *CreateClusterReq) Validate() error { for idx, item := range m.GetNodeGroups() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: fmt.Sprintf("NodeGroups[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: fmt.Sprintf("NodeGroups[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterReqValidationError{ field: fmt.Sprintf("NodeGroups[%v]", idx), @@ -9859,7 +16428,26 @@ func (m *CreateClusterReq) Validate() error { // no validation rules for ClusterIamRole - if v, ok := interface{}(m.GetSharedRanges()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetSharedRanges()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: "SharedRanges", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateClusterReqValidationError{ + field: "SharedRanges", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSharedRanges()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterReqValidationError{ field: "SharedRanges", @@ -9869,9 +16457,30 @@ func (m *CreateClusterReq) Validate() error { } } + if len(errors) > 0 { + return CreateClusterReqMultiError(errors) + } + return nil } +// CreateClusterReqMultiError is an error wrapping multiple validation errors +// returned by CreateClusterReq.ValidateAll() if the designated constraints +// aren't met. +type CreateClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateClusterReqMultiError) AllErrors() []error { return m } + // CreateClusterReqValidationError is the validation error returned by // CreateClusterReq.Validate if the designated constraints aren't met. type CreateClusterReqValidationError struct { @@ -9944,20 +16553,53 @@ var _CreateClusterReq_EngineType_InLookup = map[string]struct{}{ } // Validate checks the field values on CreateClusterResp with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CreateClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateClusterResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateClusterRespMultiError, or nil if none found. +func (m *CreateClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterRespValidationError{ field: "Data", @@ -9967,7 +16609,26 @@ func (m *CreateClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterRespValidationError{ field: "Task", @@ -9977,7 +16638,26 @@ func (m *CreateClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateClusterRespValidationError{ field: "WebAnnotations", @@ -9987,9 +16667,30 @@ func (m *CreateClusterResp) Validate() error { } } + if len(errors) > 0 { + return CreateClusterRespMultiError(errors) + } + return nil } +// CreateClusterRespMultiError is an error wrapping multiple validation errors +// returned by CreateClusterResp.ValidateAll() if the designated constraints +// aren't met. +type CreateClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateClusterRespMultiError) AllErrors() []error { return m } + // CreateClusterRespValidationError is the validation error returned by // CreateClusterResp.Validate if the designated constraints aren't met. type CreateClusterRespValidationError struct { @@ -10048,34 +16749,79 @@ var _ interface { // Validate checks the field values on AddSubnetToClusterReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *AddSubnetToClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AddSubnetToClusterReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// AddSubnetToClusterReqMultiError, or nil if none found. +func (m *AddSubnetToClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *AddSubnetToClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return AddSubnetToClusterReqValidationError{ + err := AddSubnetToClusterReqValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return AddSubnetToClusterReqValidationError{ + err := AddSubnetToClusterReqValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_AddSubnetToClusterReq_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return AddSubnetToClusterReqValidationError{ + err := AddSubnetToClusterReqValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetSubnet()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetSubnet()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, AddSubnetToClusterReqValidationError{ + field: "Subnet", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, AddSubnetToClusterReqValidationError{ + field: "Subnet", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSubnet()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return AddSubnetToClusterReqValidationError{ field: "Subnet", @@ -10087,9 +16833,30 @@ func (m *AddSubnetToClusterReq) Validate() error { // no validation rules for Operator + if len(errors) > 0 { + return AddSubnetToClusterReqMultiError(errors) + } + return nil } +// AddSubnetToClusterReqMultiError is an error wrapping multiple validation +// errors returned by AddSubnetToClusterReq.ValidateAll() if the designated +// constraints aren't met. +type AddSubnetToClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AddSubnetToClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AddSubnetToClusterReqMultiError) AllErrors() []error { return m } + // AddSubnetToClusterReqValidationError is the validation error returned by // AddSubnetToClusterReq.Validate if the designated constraints aren't met. type AddSubnetToClusterReqValidationError struct { @@ -10150,19 +16917,52 @@ var _AddSubnetToClusterReq_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-] // Validate checks the field values on AddSubnetToClusterResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *AddSubnetToClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AddSubnetToClusterResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// AddSubnetToClusterRespMultiError, or nil if none found. +func (m *AddSubnetToClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *AddSubnetToClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, AddSubnetToClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, AddSubnetToClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return AddSubnetToClusterRespValidationError{ field: "WebAnnotations", @@ -10172,9 +16972,30 @@ func (m *AddSubnetToClusterResp) Validate() error { } } + if len(errors) > 0 { + return AddSubnetToClusterRespMultiError(errors) + } + return nil } +// AddSubnetToClusterRespMultiError is an error wrapping multiple validation +// errors returned by AddSubnetToClusterResp.ValidateAll() if the designated +// constraints aren't met. +type AddSubnetToClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AddSubnetToClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AddSubnetToClusterRespMultiError) AllErrors() []error { return m } + // AddSubnetToClusterRespValidationError is the validation error returned by // AddSubnetToClusterResp.Validate if the designated constraints aren't met. type AddSubnetToClusterRespValidationError struct { @@ -10233,36 +17054,81 @@ var _ interface { // Validate checks the field values on SwitchClusterUnderlayNetworkReq with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *SwitchClusterUnderlayNetworkReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on SwitchClusterUnderlayNetworkReq with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// SwitchClusterUnderlayNetworkReqMultiError, or nil if none found. +func (m *SwitchClusterUnderlayNetworkReq) ValidateAll() error { + return m.validate(true) +} + +func (m *SwitchClusterUnderlayNetworkReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return SwitchClusterUnderlayNetworkReqValidationError{ + err := SwitchClusterUnderlayNetworkReqValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return SwitchClusterUnderlayNetworkReqValidationError{ + err := SwitchClusterUnderlayNetworkReqValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_SwitchClusterUnderlayNetworkReq_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return SwitchClusterUnderlayNetworkReqValidationError{ + err := SwitchClusterUnderlayNetworkReqValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Disable - if v, ok := interface{}(m.GetSubnet()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetSubnet()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SwitchClusterUnderlayNetworkReqValidationError{ + field: "Subnet", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SwitchClusterUnderlayNetworkReqValidationError{ + field: "Subnet", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSubnet()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SwitchClusterUnderlayNetworkReqValidationError{ field: "Subnet", @@ -10278,9 +17144,30 @@ func (m *SwitchClusterUnderlayNetworkReq) Validate() error { // no validation rules for Operator + if len(errors) > 0 { + return SwitchClusterUnderlayNetworkReqMultiError(errors) + } + return nil } +// SwitchClusterUnderlayNetworkReqMultiError is an error wrapping multiple +// validation errors returned by SwitchClusterUnderlayNetworkReq.ValidateAll() +// if the designated constraints aren't met. +type SwitchClusterUnderlayNetworkReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SwitchClusterUnderlayNetworkReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SwitchClusterUnderlayNetworkReqMultiError) AllErrors() []error { return m } + // SwitchClusterUnderlayNetworkReqValidationError is the validation error // returned by SwitchClusterUnderlayNetworkReq.Validate if the designated // constraints aren't met. @@ -10342,19 +17229,53 @@ var _SwitchClusterUnderlayNetworkReq_ClusterID_Pattern = regexp.MustCompile("^[0 // Validate checks the field values on SwitchClusterUnderlayNetworkResp with // the rules defined in the proto definition for this message. If any rules -// are violated, an error is returned. +// are violated, the first error encountered is returned, or nil if there are +// no violations. func (m *SwitchClusterUnderlayNetworkResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on SwitchClusterUnderlayNetworkResp with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// SwitchClusterUnderlayNetworkRespMultiError, or nil if none found. +func (m *SwitchClusterUnderlayNetworkResp) ValidateAll() error { + return m.validate(true) +} + +func (m *SwitchClusterUnderlayNetworkResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SwitchClusterUnderlayNetworkRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SwitchClusterUnderlayNetworkRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SwitchClusterUnderlayNetworkRespValidationError{ field: "Task", @@ -10364,7 +17285,26 @@ func (m *SwitchClusterUnderlayNetworkResp) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SwitchClusterUnderlayNetworkRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SwitchClusterUnderlayNetworkRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SwitchClusterUnderlayNetworkRespValidationError{ field: "WebAnnotations", @@ -10374,7 +17314,26 @@ func (m *SwitchClusterUnderlayNetworkResp) Validate() error { } } - if v, ok := interface{}(m.GetCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SwitchClusterUnderlayNetworkRespValidationError{ + field: "Cluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SwitchClusterUnderlayNetworkRespValidationError{ + field: "Cluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SwitchClusterUnderlayNetworkRespValidationError{ field: "Cluster", @@ -10384,9 +17343,31 @@ func (m *SwitchClusterUnderlayNetworkResp) Validate() error { } } + if len(errors) > 0 { + return SwitchClusterUnderlayNetworkRespMultiError(errors) + } + return nil } +// SwitchClusterUnderlayNetworkRespMultiError is an error wrapping multiple +// validation errors returned by +// SwitchClusterUnderlayNetworkResp.ValidateAll() if the designated +// constraints aren't met. +type SwitchClusterUnderlayNetworkRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SwitchClusterUnderlayNetworkRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SwitchClusterUnderlayNetworkRespMultiError) AllErrors() []error { return m } + // SwitchClusterUnderlayNetworkRespValidationError is the validation error // returned by SwitchClusterUnderlayNetworkResp.Validate if the designated // constraints aren't met. @@ -10446,126 +17427,219 @@ var _ interface { // Validate checks the field values on CreateVirtualClusterReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateVirtualClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateVirtualClusterReq with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateVirtualClusterReqMultiError, or nil if none found. +func (m *CreateVirtualClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateVirtualClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterID if l := utf8.RuneCountInString(m.GetClusterName()); l < 1 || l > 1024 { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "ClusterName", reason: "value length must be between 1 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProvider()) > 32 { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "Provider", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetRegion()); l < 1 || l > 100 { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "Region", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateVirtualClusterReq_Region_Pattern.MatchString(m.GetRegion()) { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "Region", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetVpcID()) > 32 { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "VpcID", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) > 100 { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "ProjectID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateVirtualClusterReq_ProjectID_Pattern.MatchString(m.GetProjectID()) { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "ProjectID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetBusinessID()) > 100 { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "BusinessID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateVirtualClusterReq_BusinessID_Pattern.MatchString(m.GetBusinessID()) { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "BusinessID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _CreateVirtualClusterReq_Environment_InLookup[m.GetEnvironment()]; !ok { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "Environment", reason: "value must be in list [stag debug prod]", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _CreateVirtualClusterReq_EngineType_InLookup[m.GetEngineType()]; !ok { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "EngineType", reason: "value must be in list [k8s mesos]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for IsExclusive if _, ok := _CreateVirtualClusterReq_ClusterType_InLookup[m.GetClusterType()]; !ok { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "ClusterType", reason: "value must be in list [federation single virtual]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for HostClusterID if _, ok := _CreateVirtualClusterReq_HostClusterNetwork_InLookup[m.GetHostClusterNetwork()]; !ok { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "HostClusterNetwork", reason: "value must be in list [devnet idc ]", } + if !all { + return err + } + errors = append(errors, err) } if len(m.GetLabels()) > 20 { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "Labels", reason: "value must contain no more than 20 pair(s)", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 20 { - return CreateVirtualClusterReqValidationError{ + err := CreateVirtualClusterReqValidationError{ field: "Creator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for OnlyCreateInfo - if v, ok := interface{}(m.GetNetworkSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNetworkSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "NetworkSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "NetworkSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNetworkSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterReqValidationError{ field: "NetworkSettings", @@ -10575,7 +17649,26 @@ func (m *CreateVirtualClusterReq) Validate() error { } } - if v, ok := interface{}(m.GetClusterBasicSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterBasicSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "ClusterBasicSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "ClusterBasicSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterBasicSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterReqValidationError{ field: "ClusterBasicSettings", @@ -10585,7 +17678,26 @@ func (m *CreateVirtualClusterReq) Validate() error { } } - if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterAdvanceSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "ClusterAdvanceSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "ClusterAdvanceSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterReqValidationError{ field: "ClusterAdvanceSettings", @@ -10595,7 +17707,26 @@ func (m *CreateVirtualClusterReq) Validate() error { } } - if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "NodeSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "NodeSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterReqValidationError{ field: "NodeSettings", @@ -10609,7 +17740,26 @@ func (m *CreateVirtualClusterReq) Validate() error { // no validation rules for Description - if v, ok := interface{}(m.GetNs()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNs()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "Ns", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateVirtualClusterReqValidationError{ + field: "Ns", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNs()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterReqValidationError{ field: "Ns", @@ -10621,9 +17771,30 @@ func (m *CreateVirtualClusterReq) Validate() error { // no validation rules for ProjectCode + if len(errors) > 0 { + return CreateVirtualClusterReqMultiError(errors) + } + return nil } +// CreateVirtualClusterReqMultiError is an error wrapping multiple validation +// errors returned by CreateVirtualClusterReq.ValidateAll() if the designated +// constraints aren't met. +type CreateVirtualClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateVirtualClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateVirtualClusterReqMultiError) AllErrors() []error { return m } + // CreateVirtualClusterReqValidationError is the validation error returned by // CreateVirtualClusterReq.Validate if the designated constraints aren't met. type CreateVirtualClusterReqValidationError struct { @@ -10710,20 +17881,53 @@ var _CreateVirtualClusterReq_HostClusterNetwork_InLookup = map[string]struct{}{ } // Validate checks the field values on NamespaceInfo with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NamespaceInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NamespaceInfo with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NamespaceInfoMultiError, or +// nil if none found. +func (m *NamespaceInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *NamespaceInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Name // no validation rules for Labels // no validation rules for Annotations - if v, ok := interface{}(m.GetQuota()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetQuota()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NamespaceInfoValidationError{ + field: "Quota", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NamespaceInfoValidationError{ + field: "Quota", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetQuota()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NamespaceInfoValidationError{ field: "Quota", @@ -10733,9 +17937,30 @@ func (m *NamespaceInfo) Validate() error { } } + if len(errors) > 0 { + return NamespaceInfoMultiError(errors) + } + return nil } +// NamespaceInfoMultiError is an error wrapping multiple validation errors +// returned by NamespaceInfo.ValidateAll() if the designated constraints +// aren't met. +type NamespaceInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NamespaceInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NamespaceInfoMultiError) AllErrors() []error { return m } + // NamespaceInfoValidationError is the validation error returned by // NamespaceInfo.Validate if the designated constraints aren't met. type NamespaceInfoValidationError struct { @@ -10791,13 +18016,27 @@ var _ interface { } = NamespaceInfoValidationError{} // Validate checks the field values on NamespaceQuota with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NamespaceQuota) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NamespaceQuota with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NamespaceQuotaMultiError, +// or nil if none found. +func (m *NamespaceQuota) ValidateAll() error { + return m.validate(true) +} + +func (m *NamespaceQuota) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CpuRequests // no validation rules for CpuLimits @@ -10806,9 +18045,30 @@ func (m *NamespaceQuota) Validate() error { // no validation rules for MemoryLimits + if len(errors) > 0 { + return NamespaceQuotaMultiError(errors) + } + return nil } +// NamespaceQuotaMultiError is an error wrapping multiple validation errors +// returned by NamespaceQuota.ValidateAll() if the designated constraints +// aren't met. +type NamespaceQuotaMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NamespaceQuotaMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NamespaceQuotaMultiError) AllErrors() []error { return m } + // NamespaceQuotaValidationError is the validation error returned by // NamespaceQuota.Validate if the designated constraints aren't met. type NamespaceQuotaValidationError struct { @@ -10865,19 +18125,52 @@ var _ interface { // Validate checks the field values on CreateVirtualClusterResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateVirtualClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateVirtualClusterResp with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateVirtualClusterRespMultiError, or nil if none found. +func (m *CreateVirtualClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateVirtualClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateVirtualClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateVirtualClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterRespValidationError{ field: "Data", @@ -10887,7 +18180,26 @@ func (m *CreateVirtualClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateVirtualClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateVirtualClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterRespValidationError{ field: "Task", @@ -10897,7 +18209,26 @@ func (m *CreateVirtualClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateVirtualClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateVirtualClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateVirtualClusterRespValidationError{ field: "WebAnnotations", @@ -10907,9 +18238,30 @@ func (m *CreateVirtualClusterResp) Validate() error { } } + if len(errors) > 0 { + return CreateVirtualClusterRespMultiError(errors) + } + return nil } +// CreateVirtualClusterRespMultiError is an error wrapping multiple validation +// errors returned by CreateVirtualClusterResp.ValidateAll() if the designated +// constraints aren't met. +type CreateVirtualClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateVirtualClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateVirtualClusterRespMultiError) AllErrors() []error { return m } + // CreateVirtualClusterRespValidationError is the validation error returned by // CreateVirtualClusterResp.Validate if the designated constraints aren't met. type CreateVirtualClusterRespValidationError struct { @@ -10966,24 +18318,1080 @@ var _ interface { ErrorName() string } = CreateVirtualClusterRespValidationError{} +// Validate checks the field values on RecommendNodeGroupConfReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *RecommendNodeGroupConfReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RecommendNodeGroupConfReq with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RecommendNodeGroupConfReqMultiError, or nil if none found. +func (m *RecommendNodeGroupConfReq) ValidateAll() error { + return m.validate(true) +} + +func (m *RecommendNodeGroupConfReq) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if l := utf8.RuneCountInString(m.GetCloudID()); l < 1 || l > 1024 { + err := RecommendNodeGroupConfReqValidationError{ + field: "CloudID", + reason: "value length must be between 1 and 1024 runes, inclusive", + } + if !all { + return err + } + errors = append(errors, err) + } + + if utf8.RuneCountInString(m.GetAccountID()) > 1024 { + err := RecommendNodeGroupConfReqValidationError{ + field: "AccountID", + reason: "value length must be at most 1024 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if utf8.RuneCountInString(m.GetRegion()) > 100 { + err := RecommendNodeGroupConfReqValidationError{ + field: "Region", + reason: "value length must be at most 100 runes", + } + if !all { + return err + } + errors = append(errors, err) + } + + if !_RecommendNodeGroupConfReq_Region_Pattern.MatchString(m.GetRegion()) { + err := RecommendNodeGroupConfReqValidationError{ + field: "Region", + reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", + } + if !all { + return err + } + errors = append(errors, err) + } + + // no validation rules for ResourceGroupName + + if len(errors) > 0 { + return RecommendNodeGroupConfReqMultiError(errors) + } + + return nil +} + +// RecommendNodeGroupConfReqMultiError is an error wrapping multiple validation +// errors returned by RecommendNodeGroupConfReq.ValidateAll() if the +// designated constraints aren't met. +type RecommendNodeGroupConfReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RecommendNodeGroupConfReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RecommendNodeGroupConfReqMultiError) AllErrors() []error { return m } + +// RecommendNodeGroupConfReqValidationError is the validation error returned by +// RecommendNodeGroupConfReq.Validate if the designated constraints aren't met. +type RecommendNodeGroupConfReqValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e RecommendNodeGroupConfReqValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e RecommendNodeGroupConfReqValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e RecommendNodeGroupConfReqValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e RecommendNodeGroupConfReqValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e RecommendNodeGroupConfReqValidationError) ErrorName() string { + return "RecommendNodeGroupConfReqValidationError" +} + +// Error satisfies the builtin error interface +func (e RecommendNodeGroupConfReqValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sRecommendNodeGroupConfReq.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = RecommendNodeGroupConfReqValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = RecommendNodeGroupConfReqValidationError{} + +var _RecommendNodeGroupConfReq_Region_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") + +// Validate checks the field values on InstanceProfile with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *InstanceProfile) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on InstanceProfile with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// InstanceProfileMultiError, or nil if none found. +func (m *InstanceProfile) ValidateAll() error { + return m.validate(true) +} + +func (m *InstanceProfile) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for NodeOS + + // no validation rules for InstanceType + + // no validation rules for InstanceChargeType + + if len(errors) > 0 { + return InstanceProfileMultiError(errors) + } + + return nil +} + +// InstanceProfileMultiError is an error wrapping multiple validation errors +// returned by InstanceProfile.ValidateAll() if the designated constraints +// aren't met. +type InstanceProfileMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m InstanceProfileMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m InstanceProfileMultiError) AllErrors() []error { return m } + +// InstanceProfileValidationError is the validation error returned by +// InstanceProfile.Validate if the designated constraints aren't met. +type InstanceProfileValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e InstanceProfileValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e InstanceProfileValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e InstanceProfileValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e InstanceProfileValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e InstanceProfileValidationError) ErrorName() string { return "InstanceProfileValidationError" } + +// Error satisfies the builtin error interface +func (e InstanceProfileValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sInstanceProfile.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = InstanceProfileValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = InstanceProfileValidationError{} + +// Validate checks the field values on HardwareProfile with the rules defined +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. +func (m *HardwareProfile) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on HardwareProfile with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// HardwareProfileMultiError, or nil if none found. +func (m *HardwareProfile) ValidateAll() error { + return m.validate(true) +} + +func (m *HardwareProfile) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for CPU + + // no validation rules for Mem + + // no validation rules for GPU + + if all { + switch v := interface{}(m.GetSystemDisk()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, HardwareProfileValidationError{ + field: "SystemDisk", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, HardwareProfileValidationError{ + field: "SystemDisk", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSystemDisk()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return HardwareProfileValidationError{ + field: "SystemDisk", + reason: "embedded message failed validation", + cause: err, + } + } + } + + for idx, item := range m.GetDataDisks() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, HardwareProfileValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, HardwareProfileValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return HardwareProfileValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + if len(errors) > 0 { + return HardwareProfileMultiError(errors) + } + + return nil +} + +// HardwareProfileMultiError is an error wrapping multiple validation errors +// returned by HardwareProfile.ValidateAll() if the designated constraints +// aren't met. +type HardwareProfileMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m HardwareProfileMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m HardwareProfileMultiError) AllErrors() []error { return m } + +// HardwareProfileValidationError is the validation error returned by +// HardwareProfile.Validate if the designated constraints aren't met. +type HardwareProfileValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e HardwareProfileValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e HardwareProfileValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e HardwareProfileValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e HardwareProfileValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e HardwareProfileValidationError) ErrorName() string { return "HardwareProfileValidationError" } + +// Error satisfies the builtin error interface +func (e HardwareProfileValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sHardwareProfile.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = HardwareProfileValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = HardwareProfileValidationError{} + +// Validate checks the field values on NetworkProfile with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *NetworkProfile) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NetworkProfile with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NetworkProfileMultiError, +// or nil if none found. +func (m *NetworkProfile) ValidateAll() error { + return m.validate(true) +} + +func (m *NetworkProfile) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for PublicIPAssigned + + if len(errors) > 0 { + return NetworkProfileMultiError(errors) + } + + return nil +} + +// NetworkProfileMultiError is an error wrapping multiple validation errors +// returned by NetworkProfile.ValidateAll() if the designated constraints +// aren't met. +type NetworkProfileMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NetworkProfileMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NetworkProfileMultiError) AllErrors() []error { return m } + +// NetworkProfileValidationError is the validation error returned by +// NetworkProfile.Validate if the designated constraints aren't met. +type NetworkProfileValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e NetworkProfileValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e NetworkProfileValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e NetworkProfileValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e NetworkProfileValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e NetworkProfileValidationError) ErrorName() string { return "NetworkProfileValidationError" } + +// Error satisfies the builtin error interface +func (e NetworkProfileValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sNetworkProfile.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = NetworkProfileValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = NetworkProfileValidationError{} + +// Validate checks the field values on ScalingProfile with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *ScalingProfile) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ScalingProfile with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ScalingProfileMultiError, +// or nil if none found. +func (m *ScalingProfile) ValidateAll() error { + return m.validate(true) +} + +func (m *ScalingProfile) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if val := m.GetMaxSize(); val < 0 || val > 1000 { + err := ScalingProfileValidationError{ + field: "MaxSize", + reason: "value must be inside range [0, 1000]", + } + if !all { + return err + } + errors = append(errors, err) + } + + if val := m.GetDesiredSize(); val < 0 || val > 1000 { + err := ScalingProfileValidationError{ + field: "DesiredSize", + reason: "value must be inside range [0, 1000]", + } + if !all { + return err + } + errors = append(errors, err) + } + + // no validation rules for ScalingMode + + if len(errors) > 0 { + return ScalingProfileMultiError(errors) + } + + return nil +} + +// ScalingProfileMultiError is an error wrapping multiple validation errors +// returned by ScalingProfile.ValidateAll() if the designated constraints +// aren't met. +type ScalingProfileMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ScalingProfileMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ScalingProfileMultiError) AllErrors() []error { return m } + +// ScalingProfileValidationError is the validation error returned by +// ScalingProfile.Validate if the designated constraints aren't met. +type ScalingProfileValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e ScalingProfileValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e ScalingProfileValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e ScalingProfileValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e ScalingProfileValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e ScalingProfileValidationError) ErrorName() string { return "ScalingProfileValidationError" } + +// Error satisfies the builtin error interface +func (e ScalingProfileValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sScalingProfile.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = ScalingProfileValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = ScalingProfileValidationError{} + +// Validate checks the field values on RecommendNodeGroupConf with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *RecommendNodeGroupConf) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RecommendNodeGroupConf with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RecommendNodeGroupConfMultiError, or nil if none found. +func (m *RecommendNodeGroupConf) ValidateAll() error { + return m.validate(true) +} + +func (m *RecommendNodeGroupConf) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Name + + // no validation rules for ServiceRoleName + + if all { + switch v := interface{}(m.GetInstanceProfile()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, RecommendNodeGroupConfValidationError{ + field: "InstanceProfile", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, RecommendNodeGroupConfValidationError{ + field: "InstanceProfile", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetInstanceProfile()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return RecommendNodeGroupConfValidationError{ + field: "InstanceProfile", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if all { + switch v := interface{}(m.GetHardwareProfile()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, RecommendNodeGroupConfValidationError{ + field: "HardwareProfile", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, RecommendNodeGroupConfValidationError{ + field: "HardwareProfile", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetHardwareProfile()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return RecommendNodeGroupConfValidationError{ + field: "HardwareProfile", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if all { + switch v := interface{}(m.GetNetworkProfile()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, RecommendNodeGroupConfValidationError{ + field: "NetworkProfile", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, RecommendNodeGroupConfValidationError{ + field: "NetworkProfile", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNetworkProfile()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return RecommendNodeGroupConfValidationError{ + field: "NetworkProfile", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if all { + switch v := interface{}(m.GetScalingProfile()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, RecommendNodeGroupConfValidationError{ + field: "ScalingProfile", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, RecommendNodeGroupConfValidationError{ + field: "ScalingProfile", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScalingProfile()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return RecommendNodeGroupConfValidationError{ + field: "ScalingProfile", + reason: "embedded message failed validation", + cause: err, + } + } + } + + // no validation rules for Mode + + if len(errors) > 0 { + return RecommendNodeGroupConfMultiError(errors) + } + + return nil +} + +// RecommendNodeGroupConfMultiError is an error wrapping multiple validation +// errors returned by RecommendNodeGroupConf.ValidateAll() if the designated +// constraints aren't met. +type RecommendNodeGroupConfMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RecommendNodeGroupConfMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RecommendNodeGroupConfMultiError) AllErrors() []error { return m } + +// RecommendNodeGroupConfValidationError is the validation error returned by +// RecommendNodeGroupConf.Validate if the designated constraints aren't met. +type RecommendNodeGroupConfValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e RecommendNodeGroupConfValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e RecommendNodeGroupConfValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e RecommendNodeGroupConfValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e RecommendNodeGroupConfValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e RecommendNodeGroupConfValidationError) ErrorName() string { + return "RecommendNodeGroupConfValidationError" +} + +// Error satisfies the builtin error interface +func (e RecommendNodeGroupConfValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sRecommendNodeGroupConf.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = RecommendNodeGroupConfValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = RecommendNodeGroupConfValidationError{} + +// Validate checks the field values on RecommendNodeGroupConfResp with the +// rules defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *RecommendNodeGroupConfResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RecommendNodeGroupConfResp with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RecommendNodeGroupConfRespMultiError, or nil if none found. +func (m *RecommendNodeGroupConfResp) ValidateAll() error { + return m.validate(true) +} + +func (m *RecommendNodeGroupConfResp) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + // no validation rules for Code + + // no validation rules for Message + + // no validation rules for Result + + for idx, item := range m.GetData() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, RecommendNodeGroupConfRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, RecommendNodeGroupConfRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return RecommendNodeGroupConfRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } + } + } + + } + + if len(errors) > 0 { + return RecommendNodeGroupConfRespMultiError(errors) + } + + return nil +} + +// RecommendNodeGroupConfRespMultiError is an error wrapping multiple +// validation errors returned by RecommendNodeGroupConfResp.ValidateAll() if +// the designated constraints aren't met. +type RecommendNodeGroupConfRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RecommendNodeGroupConfRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RecommendNodeGroupConfRespMultiError) AllErrors() []error { return m } + +// RecommendNodeGroupConfRespValidationError is the validation error returned +// by RecommendNodeGroupConfResp.Validate if the designated constraints aren't met. +type RecommendNodeGroupConfRespValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e RecommendNodeGroupConfRespValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e RecommendNodeGroupConfRespValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e RecommendNodeGroupConfRespValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e RecommendNodeGroupConfRespValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e RecommendNodeGroupConfRespValidationError) ErrorName() string { + return "RecommendNodeGroupConfRespValidationError" +} + +// Error satisfies the builtin error interface +func (e RecommendNodeGroupConfRespValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sRecommendNodeGroupConfResp.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = RecommendNodeGroupConfRespValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = RecommendNodeGroupConfRespValidationError{} + // Validate checks the field values on KubeConfigReq with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *KubeConfigReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on KubeConfigReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in KubeConfigReqMultiError, or +// nil if none found. +func (m *KubeConfigReq) ValidateAll() error { + return m.validate(true) +} + +func (m *KubeConfigReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetKubeConfig()) < 1 { - return KubeConfigReqValidationError{ + err := KubeConfigReqValidationError{ field: "KubeConfig", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return KubeConfigReqMultiError(errors) } return nil } +// KubeConfigReqMultiError is an error wrapping multiple validation errors +// returned by KubeConfigReq.ValidateAll() if the designated constraints +// aren't met. +type KubeConfigReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m KubeConfigReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m KubeConfigReqMultiError) AllErrors() []error { return m } + // KubeConfigReqValidationError is the validation error returned by // KubeConfigReq.Validate if the designated constraints aren't met. type KubeConfigReqValidationError struct { @@ -11040,49 +19448,100 @@ var _ interface { // Validate checks the field values on KubeConfigConnectReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *KubeConfigConnectReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on KubeConfigConnectReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// KubeConfigConnectReqMultiError, or nil if none found. +func (m *KubeConfigConnectReq) ValidateAll() error { + return m.validate(true) +} + +func (m *KubeConfigConnectReq) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterID // no validation rules for IsExtranet if l := utf8.RuneCountInString(m.GetCloudID()); l < 1 || l > 1024 { - return KubeConfigConnectReqValidationError{ + err := KubeConfigConnectReqValidationError{ field: "CloudID", reason: "value length must be between 1 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetAccountID()) > 1024 { - return KubeConfigConnectReqValidationError{ + err := KubeConfigConnectReqValidationError{ field: "AccountID", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) > 100 { - return KubeConfigConnectReqValidationError{ + err := KubeConfigConnectReqValidationError{ field: "Region", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if !_KubeConfigConnectReq_Region_Pattern.MatchString(m.GetRegion()) { - return KubeConfigConnectReqValidationError{ + err := KubeConfigConnectReqValidationError{ field: "Region", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for ResourceGroupName + if len(errors) > 0 { + return KubeConfigConnectReqMultiError(errors) + } + return nil } +// KubeConfigConnectReqMultiError is an error wrapping multiple validation +// errors returned by KubeConfigConnectReq.ValidateAll() if the designated +// constraints aren't met. +type KubeConfigConnectReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m KubeConfigConnectReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m KubeConfigConnectReqMultiError) AllErrors() []error { return m } + // KubeConfigConnectReqValidationError is the validation error returned by // KubeConfigConnectReq.Validate if the designated constraints aren't met. type KubeConfigConnectReqValidationError struct { @@ -11142,22 +19601,57 @@ var _ interface { var _KubeConfigConnectReq_Region_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on KubeConfigResp with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *KubeConfigResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on KubeConfigResp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in KubeConfigRespMultiError, +// or nil if none found. +func (m *KubeConfigResp) ValidateAll() error { + return m.validate(true) +} + +func (m *KubeConfigResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return KubeConfigRespMultiError(errors) + } + return nil } +// KubeConfigRespMultiError is an error wrapping multiple validation errors +// returned by KubeConfigResp.ValidateAll() if the designated constraints +// aren't met. +type KubeConfigRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m KubeConfigRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m KubeConfigRespMultiError) AllErrors() []error { return m } + // KubeConfigRespValidationError is the validation error returned by // KubeConfigResp.Validate if the designated constraints aren't met. type KubeConfigRespValidationError struct { @@ -11214,21 +19708,56 @@ var _ interface { // Validate checks the field values on KubeConfigConnectResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *KubeConfigConnectResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on KubeConfigConnectResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// KubeConfigConnectRespMultiError, or nil if none found. +func (m *KubeConfigConnectResp) ValidateAll() error { + return m.validate(true) +} + +func (m *KubeConfigConnectResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return KubeConfigConnectRespMultiError(errors) + } + return nil } +// KubeConfigConnectRespMultiError is an error wrapping multiple validation +// errors returned by KubeConfigConnectResp.ValidateAll() if the designated +// constraints aren't met. +type KubeConfigConnectRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m KubeConfigConnectRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m KubeConfigConnectRespMultiError) AllErrors() []error { return m } + // KubeConfigConnectRespValidationError is the validation error returned by // KubeConfigConnectResp.Validate if the designated constraints aren't met. type KubeConfigConnectRespValidationError struct { @@ -11286,13 +19815,27 @@ var _ interface { } = KubeConfigConnectRespValidationError{} // Validate checks the field values on ImportCloudMode with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ImportCloudMode) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ImportCloudMode with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ImportCloudModeMultiError, or nil if none found. +func (m *ImportCloudMode) ValidateAll() error { + return m.validate(true) +} + +func (m *ImportCloudMode) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for KubeConfig @@ -11301,9 +19844,30 @@ func (m *ImportCloudMode) Validate() error { // no validation rules for ResourceGroup + if len(errors) > 0 { + return ImportCloudModeMultiError(errors) + } + return nil } +// ImportCloudModeMultiError is an error wrapping multiple validation errors +// returned by ImportCloudMode.ValidateAll() if the designated constraints +// aren't met. +type ImportCloudModeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ImportCloudModeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ImportCloudModeMultiError) AllErrors() []error { return m } + // ImportCloudModeValidationError is the validation error returned by // ImportCloudMode.Validate if the designated constraints aren't met. type ImportCloudModeValidationError struct { @@ -11359,88 +19923,161 @@ var _ interface { } = ImportCloudModeValidationError{} // Validate checks the field values on ImportClusterReq with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ImportClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ImportClusterReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ImportClusterReqMultiError, or nil if none found. +func (m *ImportClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *ImportClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterID if l := utf8.RuneCountInString(m.GetClusterName()); l < 1 || l > 1024 { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "ClusterName", reason: "value length must be between 1 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Description if l := utf8.RuneCountInString(m.GetProvider()); l < 1 || l > 1024 { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "Provider", reason: "value length must be between 1 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) > 100 { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "Region", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if !_ImportClusterReq_Region_Pattern.MatchString(m.GetRegion()) { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "Region", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetProjectID()); l < 1 || l > 100 { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "ProjectID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_ImportClusterReq_ProjectID_Pattern.MatchString(m.GetProjectID()) { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "ProjectID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetBusinessID()); l < 1 || l > 100 { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "BusinessID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_ImportClusterReq_BusinessID_Pattern.MatchString(m.GetBusinessID()) { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "BusinessID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _ImportClusterReq_Environment_InLookup[m.GetEnvironment()]; !ok { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "Environment", reason: "value must be in list [stag debug prod]", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _ImportClusterReq_EngineType_InLookup[m.GetEngineType()]; !ok { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "EngineType", reason: "value must be in list [k8s mesos ]", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetIsExclusive()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetIsExclusive()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ImportClusterReqValidationError{ + field: "IsExclusive", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ImportClusterReqValidationError{ + field: "IsExclusive", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetIsExclusive()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ImportClusterReqValidationError{ field: "IsExclusive", @@ -11451,31 +20088,47 @@ func (m *ImportClusterReq) Validate() error { } if _, ok := _ImportClusterReq_ClusterType_InLookup[m.GetClusterType()]; !ok { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "ClusterType", reason: "value must be in list [federation single ]", } + if !all { + return err + } + errors = append(errors, err) } if len(m.GetLabels()) > 20 { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "Labels", reason: "value must contain no more than 20 pair(s)", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetCreator()); l < 1 || l > 1024 { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "Creator", reason: "value length must be between 1 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if m.GetCloudMode() == nil { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "CloudMode", reason: "value is required", } + if !all { + return err + } + errors = append(errors, err) } if a := m.GetCloudMode(); a != nil { @@ -11495,20 +20148,47 @@ func (m *ImportClusterReq) Validate() error { // no validation rules for IsShared if utf8.RuneCountInString(m.GetVersion()) > 1024 { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "Version", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetAccountID()) > 1024 { - return ImportClusterReqValidationError{ + err := ImportClusterReqValidationError{ field: "AccountID", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetArea()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetArea()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ImportClusterReqValidationError{ + field: "Area", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ImportClusterReqValidationError{ + field: "Area", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetArea()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ImportClusterReqValidationError{ field: "Area", @@ -11518,9 +20198,30 @@ func (m *ImportClusterReq) Validate() error { } } + if len(errors) > 0 { + return ImportClusterReqMultiError(errors) + } + return nil } +// ImportClusterReqMultiError is an error wrapping multiple validation errors +// returned by ImportClusterReq.ValidateAll() if the designated constraints +// aren't met. +type ImportClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ImportClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ImportClusterReqMultiError) AllErrors() []error { return m } + // ImportClusterReqValidationError is the validation error returned by // ImportClusterReq.Validate if the designated constraints aren't met. type ImportClusterReqValidationError struct { @@ -11600,20 +20301,53 @@ var _ImportClusterReq_ClusterType_InLookup = map[string]struct{}{ } // Validate checks the field values on ImportClusterResp with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ImportClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ImportClusterResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ImportClusterRespMultiError, or nil if none found. +func (m *ImportClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *ImportClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ImportClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ImportClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ImportClusterRespValidationError{ field: "Data", @@ -11623,9 +20357,30 @@ func (m *ImportClusterResp) Validate() error { } } + if len(errors) > 0 { + return ImportClusterRespMultiError(errors) + } + return nil } +// ImportClusterRespMultiError is an error wrapping multiple validation errors +// returned by ImportClusterResp.ValidateAll() if the designated constraints +// aren't met. +type ImportClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ImportClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ImportClusterRespMultiError) AllErrors() []error { return m } + // ImportClusterRespValidationError is the validation error returned by // ImportClusterResp.Validate if the designated constraints aren't met. type ImportClusterRespValidationError struct { @@ -11684,40 +20439,87 @@ var _ interface { // Validate checks the field values on DeleteVirtualClusterReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteVirtualClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteVirtualClusterReq with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteVirtualClusterReqMultiError, or nil if none found. +func (m *DeleteVirtualClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteVirtualClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return DeleteVirtualClusterReqValidationError{ + err := DeleteVirtualClusterReqValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return DeleteVirtualClusterReqValidationError{ + err := DeleteVirtualClusterReqValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteVirtualClusterReq_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return DeleteVirtualClusterReqValidationError{ + err := DeleteVirtualClusterReqValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for OnlyDeleteInfo // no validation rules for Operator + if len(errors) > 0 { + return DeleteVirtualClusterReqMultiError(errors) + } + return nil } +// DeleteVirtualClusterReqMultiError is an error wrapping multiple validation +// errors returned by DeleteVirtualClusterReq.ValidateAll() if the designated +// constraints aren't met. +type DeleteVirtualClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteVirtualClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteVirtualClusterReqMultiError) AllErrors() []error { return m } + // DeleteVirtualClusterReqValidationError is the validation error returned by // DeleteVirtualClusterReq.Validate if the designated constraints aren't met. type DeleteVirtualClusterReqValidationError struct { @@ -11778,19 +20580,52 @@ var _DeleteVirtualClusterReq_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z // Validate checks the field values on DeleteVirtualClusterResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteVirtualClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteVirtualClusterResp with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteVirtualClusterRespMultiError, or nil if none found. +func (m *DeleteVirtualClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteVirtualClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteVirtualClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteVirtualClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteVirtualClusterRespValidationError{ field: "Data", @@ -11800,7 +20635,26 @@ func (m *DeleteVirtualClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteVirtualClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteVirtualClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteVirtualClusterRespValidationError{ field: "Task", @@ -11810,7 +20664,26 @@ func (m *DeleteVirtualClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteVirtualClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteVirtualClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteVirtualClusterRespValidationError{ field: "WebAnnotations", @@ -11820,9 +20693,30 @@ func (m *DeleteVirtualClusterResp) Validate() error { } } + if len(errors) > 0 { + return DeleteVirtualClusterRespMultiError(errors) + } + return nil } +// DeleteVirtualClusterRespMultiError is an error wrapping multiple validation +// errors returned by DeleteVirtualClusterResp.ValidateAll() if the designated +// constraints aren't met. +type DeleteVirtualClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteVirtualClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteVirtualClusterRespMultiError) AllErrors() []error { return m } + // DeleteVirtualClusterRespValidationError is the validation error returned by // DeleteVirtualClusterResp.Validate if the designated constraints aren't met. type DeleteVirtualClusterRespValidationError struct { @@ -11881,34 +20775,79 @@ var _ interface { // Validate checks the field values on UpdateVirtualClusterQuotaReq with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateVirtualClusterQuotaReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateVirtualClusterQuotaReq with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateVirtualClusterQuotaReqMultiError, or nil if none found. +func (m *UpdateVirtualClusterQuotaReq) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateVirtualClusterQuotaReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return UpdateVirtualClusterQuotaReqValidationError{ + err := UpdateVirtualClusterQuotaReqValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return UpdateVirtualClusterQuotaReqValidationError{ + err := UpdateVirtualClusterQuotaReqValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateVirtualClusterQuotaReq_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return UpdateVirtualClusterQuotaReqValidationError{ + err := UpdateVirtualClusterQuotaReqValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetQuota()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetQuota()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateVirtualClusterQuotaReqValidationError{ + field: "Quota", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateVirtualClusterQuotaReqValidationError{ + field: "Quota", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetQuota()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateVirtualClusterQuotaReqValidationError{ field: "Quota", @@ -11919,15 +20858,40 @@ func (m *UpdateVirtualClusterQuotaReq) Validate() error { } if utf8.RuneCountInString(m.GetUpdater()) > 1024 { - return UpdateVirtualClusterQuotaReqValidationError{ + err := UpdateVirtualClusterQuotaReqValidationError{ field: "Updater", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return UpdateVirtualClusterQuotaReqMultiError(errors) } return nil } +// UpdateVirtualClusterQuotaReqMultiError is an error wrapping multiple +// validation errors returned by UpdateVirtualClusterQuotaReq.ValidateAll() if +// the designated constraints aren't met. +type UpdateVirtualClusterQuotaReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateVirtualClusterQuotaReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateVirtualClusterQuotaReqMultiError) AllErrors() []error { return m } + // UpdateVirtualClusterQuotaReqValidationError is the validation error returned // by UpdateVirtualClusterQuotaReq.Validate if the designated constraints // aren't met. @@ -11989,19 +20953,52 @@ var _UpdateVirtualClusterQuotaReq_ClusterID_Pattern = regexp.MustCompile("^[0-9a // Validate checks the field values on UpdateVirtualClusterQuotaResp with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateVirtualClusterQuotaResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateVirtualClusterQuotaResp with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateVirtualClusterQuotaRespMultiError, or nil if none found. +func (m *UpdateVirtualClusterQuotaResp) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateVirtualClusterQuotaResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateVirtualClusterQuotaRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateVirtualClusterQuotaRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateVirtualClusterQuotaRespValidationError{ field: "Data", @@ -12011,9 +21008,30 @@ func (m *UpdateVirtualClusterQuotaResp) Validate() error { } } + if len(errors) > 0 { + return UpdateVirtualClusterQuotaRespMultiError(errors) + } + return nil } +// UpdateVirtualClusterQuotaRespMultiError is an error wrapping multiple +// validation errors returned by UpdateVirtualClusterQuotaResp.ValidateAll() +// if the designated constraints aren't met. +type UpdateVirtualClusterQuotaRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateVirtualClusterQuotaRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateVirtualClusterQuotaRespMultiError) AllErrors() []error { return m } + // UpdateVirtualClusterQuotaRespValidationError is the validation error // returned by UpdateVirtualClusterQuotaResp.Validate if the designated // constraints aren't met. @@ -12072,32 +21090,58 @@ var _ interface { } = UpdateVirtualClusterQuotaRespValidationError{} // Validate checks the field values on DeleteClusterReq with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *DeleteClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteClusterReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteClusterReqMultiError, or nil if none found. +func (m *DeleteClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return DeleteClusterReqValidationError{ + err := DeleteClusterReqValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return DeleteClusterReqValidationError{ + err := DeleteClusterReqValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteClusterReq_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return DeleteClusterReqValidationError{ + err := DeleteClusterReqValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for IsForced @@ -12110,9 +21154,30 @@ func (m *DeleteClusterReq) Validate() error { // no validation rules for DeleteClusterRecord + if len(errors) > 0 { + return DeleteClusterReqMultiError(errors) + } + return nil } +// DeleteClusterReqMultiError is an error wrapping multiple validation errors +// returned by DeleteClusterReq.ValidateAll() if the designated constraints +// aren't met. +type DeleteClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteClusterReqMultiError) AllErrors() []error { return m } + // DeleteClusterReqValidationError is the validation error returned by // DeleteClusterReq.Validate if the designated constraints aren't met. type DeleteClusterReqValidationError struct { @@ -12170,20 +21235,53 @@ var _ interface { var _DeleteClusterReq_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on DeleteClusterResp with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *DeleteClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteClusterResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteClusterRespMultiError, or nil if none found. +func (m *DeleteClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteClusterRespValidationError{ field: "Data", @@ -12193,7 +21291,26 @@ func (m *DeleteClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteClusterRespValidationError{ field: "Task", @@ -12203,7 +21320,26 @@ func (m *DeleteClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteClusterRespValidationError{ field: "WebAnnotations", @@ -12213,9 +21349,30 @@ func (m *DeleteClusterResp) Validate() error { } } + if len(errors) > 0 { + return DeleteClusterRespMultiError(errors) + } + return nil } +// DeleteClusterRespMultiError is an error wrapping multiple validation errors +// returned by DeleteClusterResp.ValidateAll() if the designated constraints +// aren't met. +type DeleteClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteClusterRespMultiError) AllErrors() []error { return m } + // DeleteClusterRespValidationError is the validation error returned by // DeleteClusterResp.Validate if the designated constraints aren't met. type DeleteClusterRespValidationError struct { @@ -12273,57 +21430,110 @@ var _ interface { } = DeleteClusterRespValidationError{} // Validate checks the field values on UpdateClusterReq with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *UpdateClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateClusterReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateClusterReqMultiError, or nil if none found. +func (m *UpdateClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetClusterID()) > 1024 { - return UpdateClusterReqValidationError{ + err := UpdateClusterReqValidationError{ field: "ClusterID", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for ClusterName if utf8.RuneCountInString(m.GetProvider()) > 1024 { - return UpdateClusterReqValidationError{ + err := UpdateClusterReqValidationError{ field: "Provider", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region if utf8.RuneCountInString(m.GetVpcID()) > 1024 { - return UpdateClusterReqValidationError{ + err := UpdateClusterReqValidationError{ field: "VpcID", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) > 1024 { - return UpdateClusterReqValidationError{ + err := UpdateClusterReqValidationError{ field: "ProjectID", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetBusinessID()) > 1024 { - return UpdateClusterReqValidationError{ + err := UpdateClusterReqValidationError{ field: "BusinessID", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Environment // no validation rules for EngineType - if v, ok := interface{}(m.GetIsExclusive()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetIsExclusive()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "IsExclusive", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "IsExclusive", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetIsExclusive()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "IsExclusive", @@ -12338,65 +21548,154 @@ func (m *UpdateClusterReq) Validate() error { // no validation rules for FederationClusterID if len(m.GetLabels()) > 20 { - return UpdateClusterReqValidationError{ + err := UpdateClusterReqValidationError{ field: "Labels", reason: "value must contain no more than 20 pair(s)", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetUpdater()) > 1024 { - return UpdateClusterReqValidationError{ + err := UpdateClusterReqValidationError{ field: "Updater", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _UpdateClusterReq_Status_InLookup[m.GetStatus()]; !ok { - return UpdateClusterReqValidationError{ + err := UpdateClusterReqValidationError{ field: "Status", reason: "value must be in list [CREATING RUNNING DELETING FAILURE INITIALIZATION DELETED ]", } - } - - for key, val := range m.GetBcsAddons() { - _ = val - - // no validation rules for BcsAddons[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return UpdateClusterReqValidationError{ - field: fmt.Sprintf("BcsAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, + if !all { + return err + } + errors = append(errors, err) + } + + { + sorted_keys := make([]string, len(m.GetBcsAddons())) + i := 0 + for key := range m.GetBcsAddons() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetBcsAddons()[key] + _ = val + + // no validation rules for BcsAddons[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateClusterReqValidationError{ + field: fmt.Sprintf("BcsAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } - for key, val := range m.GetExtraAddons() { - _ = val - - // no validation rules for ExtraAddons[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return UpdateClusterReqValidationError{ - field: fmt.Sprintf("ExtraAddons[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetExtraAddons())) + i := 0 + for key := range m.GetExtraAddons() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetExtraAddons()[key] + _ = val + + // no validation rules for ExtraAddons[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateClusterReqValidationError{ + field: fmt.Sprintf("ExtraAddons[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } // no validation rules for SystemID // no validation rules for ManageType - if v, ok := interface{}(m.GetNetworkSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNetworkSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "NetworkSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "NetworkSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNetworkSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "NetworkSettings", @@ -12406,7 +21705,26 @@ func (m *UpdateClusterReq) Validate() error { } } - if v, ok := interface{}(m.GetClusterBasicSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterBasicSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "ClusterBasicSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "ClusterBasicSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterBasicSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "ClusterBasicSettings", @@ -12416,7 +21734,26 @@ func (m *UpdateClusterReq) Validate() error { } } - if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterAdvanceSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "ClusterAdvanceSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "ClusterAdvanceSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterAdvanceSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "ClusterAdvanceSettings", @@ -12426,7 +21763,26 @@ func (m *UpdateClusterReq) Validate() error { } } - if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeSettings()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "NodeSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "NodeSettings", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeSettings()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "NodeSettings", @@ -12444,7 +21800,26 @@ func (m *UpdateClusterReq) Validate() error { // no validation rules for ExtraClusterID - if v, ok := interface{}(m.GetIsCommonCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetIsCommonCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "IsCommonCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "IsCommonCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetIsCommonCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "IsCommonCluster", @@ -12454,7 +21829,26 @@ func (m *UpdateClusterReq) Validate() error { } } - if v, ok := interface{}(m.GetDescription()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetDescription()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "Description", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "Description", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetDescription()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "Description", @@ -12466,7 +21860,26 @@ func (m *UpdateClusterReq) Validate() error { // no validation rules for ClusterCategory - if v, ok := interface{}(m.GetIsShared()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetIsShared()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "IsShared", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "IsShared", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetIsShared()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "IsShared", @@ -12479,17 +21892,40 @@ func (m *UpdateClusterReq) Validate() error { // no validation rules for CreateTime if utf8.RuneCountInString(m.GetCreator()) > 1024 { - return UpdateClusterReqValidationError{ + err := UpdateClusterReqValidationError{ field: "Creator", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for ImportCategory // no validation rules for CloudAccountID - if v, ok := interface{}(m.GetIsMixed()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetIsMixed()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "IsMixed", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "IsMixed", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetIsMixed()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "IsMixed", @@ -12499,7 +21935,26 @@ func (m *UpdateClusterReq) Validate() error { } } - if v, ok := interface{}(m.GetSharedRanges()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetSharedRanges()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "SharedRanges", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterReqValidationError{ + field: "SharedRanges", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSharedRanges()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterReqValidationError{ field: "SharedRanges", @@ -12509,9 +21964,30 @@ func (m *UpdateClusterReq) Validate() error { } } + if len(errors) > 0 { + return UpdateClusterReqMultiError(errors) + } + return nil } +// UpdateClusterReqMultiError is an error wrapping multiple validation errors +// returned by UpdateClusterReq.ValidateAll() if the designated constraints +// aren't met. +type UpdateClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateClusterReqMultiError) AllErrors() []error { return m } + // UpdateClusterReqValidationError is the validation error returned by // UpdateClusterReq.Validate if the designated constraints aren't met. type UpdateClusterReqValidationError struct { @@ -12577,20 +22053,53 @@ var _UpdateClusterReq_Status_InLookup = map[string]struct{}{ } // Validate checks the field values on UpdateClusterResp with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *UpdateClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateClusterResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateClusterRespMultiError, or nil if none found. +func (m *UpdateClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterRespValidationError{ field: "Data", @@ -12600,7 +22109,26 @@ func (m *UpdateClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterRespValidationError{ field: "WebAnnotations", @@ -12610,9 +22138,30 @@ func (m *UpdateClusterResp) Validate() error { } } + if len(errors) > 0 { + return UpdateClusterRespMultiError(errors) + } + return nil } +// UpdateClusterRespMultiError is an error wrapping multiple validation errors +// returned by UpdateClusterResp.ValidateAll() if the designated constraints +// aren't met. +type UpdateClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateClusterRespMultiError) AllErrors() []error { return m } + // UpdateClusterRespValidationError is the validation error returned by // UpdateClusterResp.Validate if the designated constraints aren't met. type UpdateClusterRespValidationError struct { @@ -12671,24 +22220,63 @@ var _ interface { // Validate checks the field values on RetryCreateClusterReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *RetryCreateClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RetryCreateClusterReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RetryCreateClusterReqMultiError, or nil if none found. +func (m *RetryCreateClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *RetryCreateClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterID if l := utf8.RuneCountInString(m.GetOperator()); l < 1 || l > 100 { - return RetryCreateClusterReqValidationError{ + err := RetryCreateClusterReqValidationError{ field: "Operator", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return RetryCreateClusterReqMultiError(errors) } return nil } +// RetryCreateClusterReqMultiError is an error wrapping multiple validation +// errors returned by RetryCreateClusterReq.ValidateAll() if the designated +// constraints aren't met. +type RetryCreateClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RetryCreateClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RetryCreateClusterReqMultiError) AllErrors() []error { return m } + // RetryCreateClusterReqValidationError is the validation error returned by // RetryCreateClusterReq.Validate if the designated constraints aren't met. type RetryCreateClusterReqValidationError struct { @@ -12747,19 +22335,52 @@ var _ interface { // Validate checks the field values on RetryCreateClusterResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *RetryCreateClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RetryCreateClusterResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RetryCreateClusterRespMultiError, or nil if none found. +func (m *RetryCreateClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *RetryCreateClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, RetryCreateClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, RetryCreateClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return RetryCreateClusterRespValidationError{ field: "Data", @@ -12769,7 +22390,26 @@ func (m *RetryCreateClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, RetryCreateClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, RetryCreateClusterRespValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return RetryCreateClusterRespValidationError{ field: "Task", @@ -12779,9 +22419,30 @@ func (m *RetryCreateClusterResp) Validate() error { } } + if len(errors) > 0 { + return RetryCreateClusterRespMultiError(errors) + } + return nil } +// RetryCreateClusterRespMultiError is an error wrapping multiple validation +// errors returned by RetryCreateClusterResp.ValidateAll() if the designated +// constraints aren't met. +type RetryCreateClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RetryCreateClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RetryCreateClusterRespMultiError) AllErrors() []error { return m } + // RetryCreateClusterRespValidationError is the validation error returned by // RetryCreateClusterResp.Validate if the designated constraints aren't met. type RetryCreateClusterRespValidationError struct { @@ -12839,39 +22500,86 @@ var _ interface { } = RetryCreateClusterRespValidationError{} // Validate checks the field values on GetClusterReq with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *GetClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetClusterReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in GetClusterReqMultiError, or +// nil if none found. +func (m *GetClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *GetClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return GetClusterReqValidationError{ + err := GetClusterReqValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return GetClusterReqValidationError{ + err := GetClusterReqValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_GetClusterReq_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return GetClusterReqValidationError{ + err := GetClusterReqValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for CloudInfo + if len(errors) > 0 { + return GetClusterReqMultiError(errors) + } + return nil } +// GetClusterReqMultiError is an error wrapping multiple validation errors +// returned by GetClusterReq.ValidateAll() if the designated constraints +// aren't met. +type GetClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetClusterReqMultiError) AllErrors() []error { return m } + // GetClusterReqValidationError is the validation error returned by // GetClusterReq.Validate if the designated constraints aren't met. type GetClusterReqValidationError struct { @@ -12929,20 +22637,53 @@ var _ interface { var _GetClusterReq_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on GetClusterResp with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *GetClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetClusterResp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in GetClusterRespMultiError, +// or nil if none found. +func (m *GetClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *GetClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetClusterRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetClusterRespValidationError{ field: "Data", @@ -12952,7 +22693,26 @@ func (m *GetClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetExtra()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetExtra()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetClusterRespValidationError{ + field: "Extra", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetClusterRespValidationError{ + field: "Extra", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetExtra()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetClusterRespValidationError{ field: "Extra", @@ -12962,7 +22722,26 @@ func (m *GetClusterResp) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetClusterRespValidationError{ field: "WebAnnotations", @@ -12972,9 +22751,30 @@ func (m *GetClusterResp) Validate() error { } } + if len(errors) > 0 { + return GetClusterRespMultiError(errors) + } + return nil } +// GetClusterRespMultiError is an error wrapping multiple validation errors +// returned by GetClusterResp.ValidateAll() if the designated constraints +// aren't met. +type GetClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetClusterRespMultiError) AllErrors() []error { return m } + // GetClusterRespValidationError is the validation error returned by // GetClusterResp.Validate if the designated constraints aren't met. type GetClusterRespValidationError struct { @@ -13030,18 +22830,53 @@ var _ interface { } = GetClusterRespValidationError{} // Validate checks the field values on ExtraClusterInfo with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ExtraClusterInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ExtraClusterInfo with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ExtraClusterInfoMultiError, or nil if none found. +func (m *ExtraClusterInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *ExtraClusterInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProviderType + if len(errors) > 0 { + return ExtraClusterInfoMultiError(errors) + } + return nil } +// ExtraClusterInfoMultiError is an error wrapping multiple validation errors +// returned by ExtraClusterInfo.ValidateAll() if the designated constraints +// aren't met. +type ExtraClusterInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ExtraClusterInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ExtraClusterInfoMultiError) AllErrors() []error { return m } + // ExtraClusterInfoValidationError is the validation error returned by // ExtraClusterInfo.Validate if the designated constraints aren't met. type ExtraClusterInfoValidationError struct { @@ -13097,16 +22932,51 @@ var _ interface { } = ExtraClusterInfoValidationError{} // Validate checks the field values on CheckNodesRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CheckNodesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CheckNodesRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CheckNodesRequestMultiError, or nil if none found. +func (m *CheckNodesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CheckNodesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + + if len(errors) > 0 { + return CheckNodesRequestMultiError(errors) + } + return nil } +// CheckNodesRequestMultiError is an error wrapping multiple validation errors +// returned by CheckNodesRequest.ValidateAll() if the designated constraints +// aren't met. +type CheckNodesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CheckNodesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CheckNodesRequestMultiError) AllErrors() []error { return m } + // CheckNodesRequestValidationError is the validation error returned by // CheckNodesRequest.Validate if the designated constraints aren't met. type CheckNodesRequestValidationError struct { @@ -13165,38 +23035,102 @@ var _ interface { // Validate checks the field values on CheckNodesResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CheckNodesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CheckNodesResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CheckNodesResponseMultiError, or nil if none found. +func (m *CheckNodesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CheckNodesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - for key, val := range m.GetData() { - _ = val - - // no validation rules for Data[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CheckNodesResponseValidationError{ - field: fmt.Sprintf("Data[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetData())) + i := 0 + for key := range m.GetData() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetData()[key] + _ = val + + // no validation rules for Data[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CheckNodesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CheckNodesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CheckNodesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } + } + } + if len(errors) > 0 { + return CheckNodesResponseMultiError(errors) } return nil } +// CheckNodesResponseMultiError is an error wrapping multiple validation errors +// returned by CheckNodesResponse.ValidateAll() if the designated constraints +// aren't met. +type CheckNodesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CheckNodesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CheckNodesResponseMultiError) AllErrors() []error { return m } + // CheckNodesResponseValidationError is the validation error returned by // CheckNodesResponse.Validate if the designated constraints aren't met. type CheckNodesResponseValidationError struct { @@ -13254,21 +23188,56 @@ var _ interface { } = CheckNodesResponseValidationError{} // Validate checks the field values on NodeResult with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeResult) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeResult with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeResultMultiError, or +// nil if none found. +func (m *NodeResult) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeResult) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for IsExist // no validation rules for ClusterID // no validation rules for ClusterName + if len(errors) > 0 { + return NodeResultMultiError(errors) + } + return nil } +// NodeResultMultiError is an error wrapping multiple validation errors +// returned by NodeResult.ValidateAll() if the designated constraints aren't met. +type NodeResultMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeResultMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeResultMultiError) AllErrors() []error { return m } + // NodeResultValidationError is the validation error returned by // NodeResult.Validate if the designated constraints aren't met. type NodeResultValidationError struct { @@ -13325,22 +23294,61 @@ var _ interface { // Validate checks the field values on UnCordonNodeRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UnCordonNodeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UnCordonNodeRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UnCordonNodeRequestMultiError, or nil if none found. +func (m *UnCordonNodeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UnCordonNodeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if len(m.GetClusterID()) < 1 { - return UnCordonNodeRequestValidationError{ + err := UnCordonNodeRequestValidationError{ field: "ClusterID", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return UnCordonNodeRequestMultiError(errors) } return nil } +// UnCordonNodeRequestMultiError is an error wrapping multiple validation +// errors returned by UnCordonNodeRequest.ValidateAll() if the designated +// constraints aren't met. +type UnCordonNodeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UnCordonNodeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UnCordonNodeRequestMultiError) AllErrors() []error { return m } + // UnCordonNodeRequestValidationError is the validation error returned by // UnCordonNodeRequest.Validate if the designated constraints aren't met. type UnCordonNodeRequestValidationError struct { @@ -13399,19 +23407,52 @@ var _ interface { // Validate checks the field values on UnCordonNodeResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UnCordonNodeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UnCordonNodeResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UnCordonNodeResponseMultiError, or nil if none found. +func (m *UnCordonNodeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UnCordonNodeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UnCordonNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UnCordonNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UnCordonNodeResponseValidationError{ field: "Data", @@ -13421,9 +23462,30 @@ func (m *UnCordonNodeResponse) Validate() error { } } + if len(errors) > 0 { + return UnCordonNodeResponseMultiError(errors) + } + return nil } +// UnCordonNodeResponseMultiError is an error wrapping multiple validation +// errors returned by UnCordonNodeResponse.ValidateAll() if the designated +// constraints aren't met. +type UnCordonNodeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UnCordonNodeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UnCordonNodeResponseMultiError) AllErrors() []error { return m } + // UnCordonNodeResponseValidationError is the validation error returned by // UnCordonNodeResponse.Validate if the designated constraints aren't met. type UnCordonNodeResponseValidationError struct { @@ -13481,23 +23543,62 @@ var _ interface { } = UnCordonNodeResponseValidationError{} // Validate checks the field values on CordonNodeRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CordonNodeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CordonNodeRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CordonNodeRequestMultiError, or nil if none found. +func (m *CordonNodeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CordonNodeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if len(m.GetClusterID()) < 1 { - return CordonNodeRequestValidationError{ + err := CordonNodeRequestValidationError{ field: "ClusterID", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return CordonNodeRequestMultiError(errors) } return nil } +// CordonNodeRequestMultiError is an error wrapping multiple validation errors +// returned by CordonNodeRequest.ValidateAll() if the designated constraints +// aren't met. +type CordonNodeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CordonNodeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CordonNodeRequestMultiError) AllErrors() []error { return m } + // CordonNodeRequestValidationError is the validation error returned by // CordonNodeRequest.Validate if the designated constraints aren't met. type CordonNodeRequestValidationError struct { @@ -13556,19 +23657,52 @@ var _ interface { // Validate checks the field values on CordonNodeResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CordonNodeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CordonNodeResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CordonNodeResponseMultiError, or nil if none found. +func (m *CordonNodeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CordonNodeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CordonNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CordonNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CordonNodeResponseValidationError{ field: "Data", @@ -13578,9 +23712,30 @@ func (m *CordonNodeResponse) Validate() error { } } + if len(errors) > 0 { + return CordonNodeResponseMultiError(errors) + } + return nil } +// CordonNodeResponseMultiError is an error wrapping multiple validation errors +// returned by CordonNodeResponse.ValidateAll() if the designated constraints +// aren't met. +type CordonNodeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CordonNodeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CordonNodeResponseMultiError) AllErrors() []error { return m } + // CordonNodeResponseValidationError is the validation error returned by // CordonNodeResponse.Validate if the designated constraints aren't met. type CordonNodeResponseValidationError struct { @@ -13638,25 +23793,47 @@ var _ interface { } = CordonNodeResponseValidationError{} // Validate checks the field values on UpdateNodeRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeRequestMultiError, or nil if none found. +func (m *UpdateNodeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := len(m.GetInnerIPs()); l < 1 || l > 100 { - return UpdateNodeRequestValidationError{ + err := UpdateNodeRequestValidationError{ field: "InnerIPs", reason: "value must contain between 1 and 100 items, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _UpdateNodeRequest_Status_InLookup[m.GetStatus()]; !ok { - return UpdateNodeRequestValidationError{ + err := UpdateNodeRequestValidationError{ field: "Status", reason: "value must be in list [INITIALIZATION RUNNING DELETING ADD-FAILURE REMOVE-FAILURE]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for NodeGroupID @@ -13664,15 +23841,40 @@ func (m *UpdateNodeRequest) Validate() error { // no validation rules for ClusterID if len(m.GetUpdater()) < 1 { - return UpdateNodeRequestValidationError{ + err := UpdateNodeRequestValidationError{ field: "Updater", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return UpdateNodeRequestMultiError(errors) } return nil } +// UpdateNodeRequestMultiError is an error wrapping multiple validation errors +// returned by UpdateNodeRequest.ValidateAll() if the designated constraints +// aren't met. +type UpdateNodeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeRequestMultiError) AllErrors() []error { return m } + // UpdateNodeRequestValidationError is the validation error returned by // UpdateNodeRequest.Validate if the designated constraints aren't met. type UpdateNodeRequestValidationError struct { @@ -13739,19 +23941,52 @@ var _UpdateNodeRequest_Status_InLookup = map[string]struct{}{ // Validate checks the field values on UpdateNodeResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeResponseMultiError, or nil if none found. +func (m *UpdateNodeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeResponseValidationError{ field: "Data", @@ -13761,9 +23996,30 @@ func (m *UpdateNodeResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateNodeResponseMultiError(errors) + } + return nil } +// UpdateNodeResponseMultiError is an error wrapping multiple validation errors +// returned by UpdateNodeResponse.ValidateAll() if the designated constraints +// aren't met. +type UpdateNodeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeResponseMultiError) AllErrors() []error { return m } + // UpdateNodeResponseValidationError is the validation error returned by // UpdateNodeResponse.Validate if the designated constraints aren't met. type UpdateNodeResponseValidationError struct { @@ -13821,15 +24077,50 @@ var _ interface { } = UpdateNodeResponseValidationError{} // Validate checks the field values on NodeStatus with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeStatus) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeStatus with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeStatusMultiError, or +// nil if none found. +func (m *NodeStatus) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeStatus) validate(all bool) error { if m == nil { return nil } + var errors []error + + if len(errors) > 0 { + return NodeStatusMultiError(errors) + } + return nil } +// NodeStatusMultiError is an error wrapping multiple validation errors +// returned by NodeStatus.ValidateAll() if the designated constraints aren't met. +type NodeStatusMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeStatusMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeStatusMultiError) AllErrors() []error { return m } + // NodeStatusValidationError is the validation error returned by // NodeStatus.Validate if the designated constraints aren't met. type NodeStatusValidationError struct { @@ -13886,15 +24177,48 @@ var _ interface { // Validate checks the field values on UpdateClusterModuleRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateClusterModuleRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateClusterModuleRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateClusterModuleRequestMultiError, or nil if none found. +func (m *UpdateClusterModuleRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateClusterModuleRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterID - if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetModule()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterModuleRequestValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterModuleRequestValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterModuleRequestValidationError{ field: "Module", @@ -13905,15 +24229,40 @@ func (m *UpdateClusterModuleRequest) Validate() error { } if len(m.GetOperator()) < 1 { - return UpdateClusterModuleRequestValidationError{ + err := UpdateClusterModuleRequestValidationError{ field: "Operator", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return UpdateClusterModuleRequestMultiError(errors) } return nil } +// UpdateClusterModuleRequestMultiError is an error wrapping multiple +// validation errors returned by UpdateClusterModuleRequest.ValidateAll() if +// the designated constraints aren't met. +type UpdateClusterModuleRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateClusterModuleRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateClusterModuleRequestMultiError) AllErrors() []error { return m } + // UpdateClusterModuleRequestValidationError is the validation error returned // by UpdateClusterModuleRequest.Validate if the designated constraints aren't met. type UpdateClusterModuleRequestValidationError struct { @@ -13972,19 +24321,52 @@ var _ interface { // Validate checks the field values on UpdateClusterModuleResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateClusterModuleResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateClusterModuleResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateClusterModuleResponseMultiError, or nil if none found. +func (m *UpdateClusterModuleResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateClusterModuleResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateClusterModuleResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateClusterModuleResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateClusterModuleResponseValidationError{ field: "Data", @@ -13994,9 +24376,30 @@ func (m *UpdateClusterModuleResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateClusterModuleResponseMultiError(errors) + } + return nil } +// UpdateClusterModuleResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateClusterModuleResponse.ValidateAll() if +// the designated constraints aren't met. +type UpdateClusterModuleResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateClusterModuleResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateClusterModuleResponseMultiError) AllErrors() []error { return m } + // UpdateClusterModuleResponseValidationError is the validation error returned // by UpdateClusterModuleResponse.Validate if the designated constraints // aren't met. @@ -14056,23 +24459,60 @@ var _ interface { // Validate checks the field values on RecordNodeInfoRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *RecordNodeInfoRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RecordNodeInfoRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RecordNodeInfoRequestMultiError, or nil if none found. +func (m *RecordNodeInfoRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *RecordNodeInfoRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := len(m.GetNodes()); l < 1 || l > 1000 { - return RecordNodeInfoRequestValidationError{ + err := RecordNodeInfoRequestValidationError{ field: "Nodes", reason: "value must contain between 1 and 1000 items, inclusive", } + if !all { + return err + } + errors = append(errors, err) } for idx, item := range m.GetNodes() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, RecordNodeInfoRequestValidationError{ + field: fmt.Sprintf("Nodes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, RecordNodeInfoRequestValidationError{ + field: fmt.Sprintf("Nodes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return RecordNodeInfoRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), @@ -14084,9 +24524,30 @@ func (m *RecordNodeInfoRequest) Validate() error { } + if len(errors) > 0 { + return RecordNodeInfoRequestMultiError(errors) + } + return nil } +// RecordNodeInfoRequestMultiError is an error wrapping multiple validation +// errors returned by RecordNodeInfoRequest.ValidateAll() if the designated +// constraints aren't met. +type RecordNodeInfoRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RecordNodeInfoRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RecordNodeInfoRequestMultiError) AllErrors() []error { return m } + // RecordNodeInfoRequestValidationError is the validation error returned by // RecordNodeInfoRequest.Validate if the designated constraints aren't met. type RecordNodeInfoRequestValidationError struct { @@ -14144,25 +24605,64 @@ var _ interface { } = RecordNodeInfoRequestValidationError{} // Validate checks the field values on GetNodeRequest with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *GetNodeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetNodeRequest with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in GetNodeRequestMultiError, +// or nil if none found. +func (m *GetNodeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetNodeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if ip := net.ParseIP(m.GetInnerIP()); ip == nil || ip.To4() == nil { - return GetNodeRequestValidationError{ + err := GetNodeRequestValidationError{ field: "InnerIP", reason: "value must be a valid IPv4 address", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for ShowPwd + if len(errors) > 0 { + return GetNodeRequestMultiError(errors) + } + return nil } +// GetNodeRequestMultiError is an error wrapping multiple validation errors +// returned by GetNodeRequest.ValidateAll() if the designated constraints +// aren't met. +type GetNodeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetNodeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetNodeRequestMultiError) AllErrors() []error { return m } + // GetNodeRequestValidationError is the validation error returned by // GetNodeRequest.Validate if the designated constraints aren't met. type GetNodeRequestValidationError struct { @@ -14218,13 +24718,27 @@ var _ interface { } = GetNodeRequestValidationError{} // Validate checks the field values on GetNodeResponse with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *GetNodeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetNodeResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetNodeResponseMultiError, or nil if none found. +func (m *GetNodeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetNodeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -14234,7 +24748,26 @@ func (m *GetNodeResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetNodeResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetNodeResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetNodeResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -14246,9 +24779,30 @@ func (m *GetNodeResponse) Validate() error { } + if len(errors) > 0 { + return GetNodeResponseMultiError(errors) + } + return nil } +// GetNodeResponseMultiError is an error wrapping multiple validation errors +// returned by GetNodeResponse.ValidateAll() if the designated constraints +// aren't met. +type GetNodeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetNodeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetNodeResponseMultiError) AllErrors() []error { return m } + // GetNodeResponseValidationError is the validation error returned by // GetNodeResponse.Validate if the designated constraints aren't met. type GetNodeResponseValidationError struct { @@ -14305,22 +24859,61 @@ var _ interface { // Validate checks the field values on GetNodeInfoRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetNodeInfoRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetNodeInfoRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetNodeInfoRequestMultiError, or nil if none found. +func (m *GetNodeInfoRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetNodeInfoRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if ip := net.ParseIP(m.GetInnerIP()); ip == nil || ip.To4() == nil { - return GetNodeInfoRequestValidationError{ + err := GetNodeInfoRequestValidationError{ field: "InnerIP", reason: "value must be a valid IPv4 address", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return GetNodeInfoRequestMultiError(errors) } return nil } +// GetNodeInfoRequestMultiError is an error wrapping multiple validation errors +// returned by GetNodeInfoRequest.ValidateAll() if the designated constraints +// aren't met. +type GetNodeInfoRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetNodeInfoRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetNodeInfoRequestMultiError) AllErrors() []error { return m } + // GetNodeInfoRequestValidationError is the validation error returned by // GetNodeInfoRequest.Validate if the designated constraints aren't met. type GetNodeInfoRequestValidationError struct { @@ -14379,19 +24972,52 @@ var _ interface { // Validate checks the field values on GetNodeInfoResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetNodeInfoResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetNodeInfoResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetNodeInfoResponseMultiError, or nil if none found. +func (m *GetNodeInfoResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetNodeInfoResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetNodeInfoResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetNodeInfoResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetNodeInfoResponseValidationError{ field: "Data", @@ -14401,9 +25027,30 @@ func (m *GetNodeInfoResponse) Validate() error { } } + if len(errors) > 0 { + return GetNodeInfoResponseMultiError(errors) + } + return nil } +// GetNodeInfoResponseMultiError is an error wrapping multiple validation +// errors returned by GetNodeInfoResponse.ValidateAll() if the designated +// constraints aren't met. +type GetNodeInfoResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetNodeInfoResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetNodeInfoResponseMultiError) AllErrors() []error { return m } + // GetNodeInfoResponseValidationError is the validation error returned by // GetNodeInfoResponse.Validate if the designated constraints aren't met. type GetNodeInfoResponseValidationError struct { @@ -14461,12 +25108,27 @@ var _ interface { } = GetNodeInfoResponseValidationError{} // Validate checks the field values on NodeConfig with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeConfig) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeConfig with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeConfigMultiError, or +// nil if none found. +func (m *NodeConfig) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeConfig) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for InstanceType // no validation rules for CPU @@ -14475,9 +25137,29 @@ func (m *NodeConfig) Validate() error { // no validation rules for GPU + if len(errors) > 0 { + return NodeConfigMultiError(errors) + } + return nil } +// NodeConfigMultiError is an error wrapping multiple validation errors +// returned by NodeConfig.ValidateAll() if the designated constraints aren't met. +type NodeConfigMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeConfigMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeConfigMultiError) AllErrors() []error { return m } + // NodeConfigValidationError is the validation error returned by // NodeConfig.Validate if the designated constraints aren't met. type NodeConfigValidationError struct { @@ -14533,12 +25215,27 @@ var _ interface { } = NodeConfigValidationError{} // Validate checks the field values on NodeInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeInfoMultiError, or nil +// if none found. +func (m *NodeInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeName // no validation rules for NodeType @@ -14557,7 +25254,26 @@ func (m *NodeInfo) Validate() error { // no validation rules for Status - if v, ok := interface{}(m.GetInstanceConfig()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetInstanceConfig()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeInfoValidationError{ + field: "InstanceConfig", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeInfoValidationError{ + field: "InstanceConfig", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetInstanceConfig()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeInfoValidationError{ field: "InstanceConfig", @@ -14567,7 +25283,26 @@ func (m *NodeInfo) Validate() error { } } - if v, ok := interface{}(m.GetZoneInfo()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetZoneInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeInfoValidationError{ + field: "ZoneInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeInfoValidationError{ + field: "ZoneInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetZoneInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeInfoValidationError{ field: "ZoneInfo", @@ -14577,7 +25312,26 @@ func (m *NodeInfo) Validate() error { } } - if v, ok := interface{}(m.GetGroup()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeInfoValidationError{ + field: "Group", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeInfoValidationError{ + field: "Group", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeInfoValidationError{ field: "Group", @@ -14587,7 +25341,26 @@ func (m *NodeInfo) Validate() error { } } - if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeTemplate()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeInfoValidationError{ + field: "NodeTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeInfoValidationError{ + field: "NodeTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeInfoValidationError{ field: "NodeTemplate", @@ -14597,9 +25370,29 @@ func (m *NodeInfo) Validate() error { } } + if len(errors) > 0 { + return NodeInfoMultiError(errors) + } + return nil } +// NodeInfoMultiError is an error wrapping multiple validation errors returned +// by NodeInfo.ValidateAll() if the designated constraints aren't met. +type NodeInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeInfoMultiError) AllErrors() []error { return m } + // NodeInfoValidationError is the validation error returned by // NodeInfo.Validate if the designated constraints aren't met. type NodeInfoValidationError struct { @@ -14656,17 +25449,52 @@ var _ interface { // Validate checks the field values on ListCommonClusterReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCommonClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCommonClusterReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCommonClusterReqMultiError, or nil if none found. +func (m *ListCommonClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCommonClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ShowVCluster + if len(errors) > 0 { + return ListCommonClusterReqMultiError(errors) + } + return nil } +// ListCommonClusterReqMultiError is an error wrapping multiple validation +// errors returned by ListCommonClusterReq.ValidateAll() if the designated +// constraints aren't met. +type ListCommonClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCommonClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCommonClusterReqMultiError) AllErrors() []error { return m } + // ListCommonClusterReqValidationError is the validation error returned by // ListCommonClusterReq.Validate if the designated constraints aren't met. type ListCommonClusterReqValidationError struct { @@ -14725,12 +25553,26 @@ var _ interface { // Validate checks the field values on ListCommonClusterResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCommonClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCommonClusterResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCommonClusterRespMultiError, or nil if none found. +func (m *ListCommonClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCommonClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -14740,7 +25582,26 @@ func (m *ListCommonClusterResp) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCommonClusterRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCommonClusterRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCommonClusterRespValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -14752,7 +25613,26 @@ func (m *ListCommonClusterResp) Validate() error { } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCommonClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCommonClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCommonClusterRespValidationError{ field: "WebAnnotations", @@ -14762,9 +25642,30 @@ func (m *ListCommonClusterResp) Validate() error { } } + if len(errors) > 0 { + return ListCommonClusterRespMultiError(errors) + } + return nil } +// ListCommonClusterRespMultiError is an error wrapping multiple validation +// errors returned by ListCommonClusterResp.ValidateAll() if the designated +// constraints aren't met. +type ListCommonClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCommonClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCommonClusterRespMultiError) AllErrors() []error { return m } + // ListCommonClusterRespValidationError is the validation error returned by // ListCommonClusterResp.Validate if the designated constraints aren't met. type ListCommonClusterRespValidationError struct { @@ -14823,40 +25724,87 @@ var _ interface { // Validate checks the field values on ListProjectClusterReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListProjectClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListProjectClusterReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListProjectClusterReqMultiError, or nil if none found. +func (m *ListProjectClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *ListProjectClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetProjectID()) > 100 { - return ListProjectClusterReqValidationError{ + err := ListProjectClusterReqValidationError{ field: "ProjectID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) > 100 { - return ListProjectClusterReqValidationError{ + err := ListProjectClusterReqValidationError{ field: "Region", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProvider()) > 32 { - return ListProjectClusterReqValidationError{ + err := ListProjectClusterReqValidationError{ field: "Provider", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Operator // no validation rules for BizId + if len(errors) > 0 { + return ListProjectClusterReqMultiError(errors) + } + return nil } +// ListProjectClusterReqMultiError is an error wrapping multiple validation +// errors returned by ListProjectClusterReq.ValidateAll() if the designated +// constraints aren't met. +type ListProjectClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListProjectClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListProjectClusterReqMultiError) AllErrors() []error { return m } + // ListProjectClusterReqValidationError is the validation error returned by // ListProjectClusterReq.Validate if the designated constraints aren't met. type ListProjectClusterReqValidationError struct { @@ -14915,12 +25863,26 @@ var _ interface { // Validate checks the field values on ListProjectClusterResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListProjectClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListProjectClusterResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListProjectClusterRespMultiError, or nil if none found. +func (m *ListProjectClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *ListProjectClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -14930,7 +25892,26 @@ func (m *ListProjectClusterResp) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListProjectClusterRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListProjectClusterRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListProjectClusterRespValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -14942,24 +25923,72 @@ func (m *ListProjectClusterResp) Validate() error { } - for key, val := range m.GetClusterExtraInfo() { - _ = val + { + sorted_keys := make([]string, len(m.GetClusterExtraInfo())) + i := 0 + for key := range m.GetClusterExtraInfo() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetClusterExtraInfo()[key] + _ = val + + // no validation rules for ClusterExtraInfo[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListProjectClusterRespValidationError{ + field: fmt.Sprintf("ClusterExtraInfo[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListProjectClusterRespValidationError{ + field: fmt.Sprintf("ClusterExtraInfo[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ListProjectClusterRespValidationError{ + field: fmt.Sprintf("ClusterExtraInfo[%v]", key), + reason: "embedded message failed validation", + cause: err, + } + } + } - // no validation rules for ClusterExtraInfo[key] + } + } - if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListProjectClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: if err := v.Validate(); err != nil { - return ListProjectClusterRespValidationError{ - field: fmt.Sprintf("ClusterExtraInfo[%v]", key), + errors = append(errors, ListProjectClusterRespValidationError{ + field: "WebAnnotations", reason: "embedded message failed validation", cause: err, - } + }) } } - - } - - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListProjectClusterRespValidationError{ field: "WebAnnotations", @@ -14969,9 +25998,30 @@ func (m *ListProjectClusterResp) Validate() error { } } + if len(errors) > 0 { + return ListProjectClusterRespMultiError(errors) + } + return nil } +// ListProjectClusterRespMultiError is an error wrapping multiple validation +// errors returned by ListProjectClusterResp.ValidateAll() if the designated +// constraints aren't met. +type ListProjectClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListProjectClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListProjectClusterRespMultiError) AllErrors() []error { return m } + // ListProjectClusterRespValidationError is the validation error returned by // ListProjectClusterResp.Validate if the designated constraints aren't met. type ListProjectClusterRespValidationError struct { @@ -15029,53 +26079,91 @@ var _ interface { } = ListProjectClusterRespValidationError{} // Validate checks the field values on ListClusterReq with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ListClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListClusterReq with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ListClusterReqMultiError, +// or nil if none found. +func (m *ListClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *ListClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetClusterName()) > 100 { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "ClusterName", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProvider()) > 32 { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "Provider", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) > 100 { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "Region", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetVpcID()) > 32 { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "VpcID", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) > 100 { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "ProjectID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetBusinessID()) > 100 { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "BusinessID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Environment @@ -15089,33 +26177,49 @@ func (m *ListClusterReq) Validate() error { // no validation rules for FederationClusterID if _, ok := _ListClusterReq_Status_InLookup[m.GetStatus()]; !ok { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "Status", reason: "value must be in list [CREATING RUNNING DELETING FALURE INITIALIZATION DELETED ]", } + if !all { + return err + } + errors = append(errors, err) } if m.GetOffset() < 0 { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "Offset", reason: "value must be greater than or equal to 0", } + if !all { + return err + } + errors = append(errors, err) } if m.GetLimit() > 1000 { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "Limit", reason: "value must be less than or equal to 1000", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Operator if utf8.RuneCountInString(m.GetSystemID()) > 100 { - return ListClusterReqValidationError{ + err := ListClusterReqValidationError{ field: "SystemID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for ExtraClusterID @@ -15126,9 +26230,30 @@ func (m *ListClusterReq) Validate() error { // no validation rules for All + if len(errors) > 0 { + return ListClusterReqMultiError(errors) + } + return nil } +// ListClusterReqMultiError is an error wrapping multiple validation errors +// returned by ListClusterReq.ValidateAll() if the designated constraints +// aren't met. +type ListClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListClusterReqMultiError) AllErrors() []error { return m } + // ListClusterReqValidationError is the validation error returned by // ListClusterReq.Validate if the designated constraints aren't met. type ListClusterReqValidationError struct { @@ -15194,13 +26319,27 @@ var _ListClusterReq_Status_InLookup = map[string]struct{}{ } // Validate checks the field values on ListClusterResp with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ListClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListClusterResp with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListClusterRespMultiError, or nil if none found. +func (m *ListClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *ListClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -15210,7 +26349,26 @@ func (m *ListClusterResp) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListClusterRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListClusterRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListClusterRespValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -15222,24 +26380,72 @@ func (m *ListClusterResp) Validate() error { } - for key, val := range m.GetClusterExtraInfo() { - _ = val + { + sorted_keys := make([]string, len(m.GetClusterExtraInfo())) + i := 0 + for key := range m.GetClusterExtraInfo() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetClusterExtraInfo()[key] + _ = val + + // no validation rules for ClusterExtraInfo[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListClusterRespValidationError{ + field: fmt.Sprintf("ClusterExtraInfo[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListClusterRespValidationError{ + field: fmt.Sprintf("ClusterExtraInfo[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ListClusterRespValidationError{ + field: fmt.Sprintf("ClusterExtraInfo[%v]", key), + reason: "embedded message failed validation", + cause: err, + } + } + } - // no validation rules for ClusterExtraInfo[key] + } + } - if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListClusterRespValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: if err := v.Validate(); err != nil { - return ListClusterRespValidationError{ - field: fmt.Sprintf("ClusterExtraInfo[%v]", key), + errors = append(errors, ListClusterRespValidationError{ + field: "WebAnnotations", reason: "embedded message failed validation", cause: err, - } + }) } } - - } - - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListClusterRespValidationError{ field: "WebAnnotations", @@ -15249,9 +26455,30 @@ func (m *ListClusterResp) Validate() error { } } + if len(errors) > 0 { + return ListClusterRespMultiError(errors) + } + return nil } +// ListClusterRespMultiError is an error wrapping multiple validation errors +// returned by ListClusterResp.ValidateAll() if the designated constraints +// aren't met. +type ListClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListClusterRespMultiError) AllErrors() []error { return m } + // ListClusterRespValidationError is the validation error returned by // ListClusterResp.Validate if the designated constraints aren't met. type ListClusterRespValidationError struct { @@ -15307,21 +26534,56 @@ var _ interface { } = ListClusterRespValidationError{} // Validate checks the field values on ExtraInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ExtraInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ExtraInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ExtraInfoMultiError, or nil +// if none found. +func (m *ExtraInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *ExtraInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CanDeleted // no validation rules for ProviderType // no validation rules for AutoScale + if len(errors) > 0 { + return ExtraInfoMultiError(errors) + } + return nil } +// ExtraInfoMultiError is an error wrapping multiple validation errors returned +// by ExtraInfo.ValidateAll() if the designated constraints aren't met. +type ExtraInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ExtraInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ExtraInfoMultiError) AllErrors() []error { return m } + // ExtraInfoValidationError is the validation error returned by // ExtraInfo.Validate if the designated constraints aren't met. type ExtraInfoValidationError struct { @@ -15377,33 +26639,97 @@ var _ interface { } = ExtraInfoValidationError{} // Validate checks the field values on WebAnnotations with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *WebAnnotations) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on WebAnnotations with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in WebAnnotationsMultiError, +// or nil if none found. +func (m *WebAnnotations) ValidateAll() error { + return m.validate(true) +} + +func (m *WebAnnotations) validate(all bool) error { if m == nil { return nil } - for key, val := range m.GetPerms() { - _ = val - - // no validation rules for Perms[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return WebAnnotationsValidationError{ - field: fmt.Sprintf("Perms[%v]", key), - reason: "embedded message failed validation", - cause: err, + var errors []error + + { + sorted_keys := make([]string, len(m.GetPerms())) + i := 0 + for key := range m.GetPerms() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetPerms()[key] + _ = val + + // no validation rules for Perms[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, WebAnnotationsValidationError{ + field: fmt.Sprintf("Perms[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, WebAnnotationsValidationError{ + field: fmt.Sprintf("Perms[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return WebAnnotationsValidationError{ + field: fmt.Sprintf("Perms[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } + } + } + if len(errors) > 0 { + return WebAnnotationsMultiError(errors) } return nil } +// WebAnnotationsMultiError is an error wrapping multiple validation errors +// returned by WebAnnotations.ValidateAll() if the designated constraints +// aren't met. +type WebAnnotationsMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m WebAnnotationsMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m WebAnnotationsMultiError) AllErrors() []error { return m } + // WebAnnotationsValidationError is the validation error returned by // WebAnnotations.Validate if the designated constraints aren't met. type WebAnnotationsValidationError struct { @@ -15459,14 +26785,47 @@ var _ interface { } = WebAnnotationsValidationError{} // Validate checks the field values on WebAnnotationsV2 with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *WebAnnotationsV2) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on WebAnnotationsV2 with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// WebAnnotationsV2MultiError, or nil if none found. +func (m *WebAnnotationsV2) ValidateAll() error { + return m.validate(true) +} + +func (m *WebAnnotationsV2) validate(all bool) error { if m == nil { return nil } - if v, ok := interface{}(m.GetPerms()).(interface{ Validate() error }); ok { + var errors []error + + if all { + switch v := interface{}(m.GetPerms()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, WebAnnotationsV2ValidationError{ + field: "Perms", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, WebAnnotationsV2ValidationError{ + field: "Perms", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetPerms()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return WebAnnotationsV2ValidationError{ field: "Perms", @@ -15476,9 +26835,30 @@ func (m *WebAnnotationsV2) Validate() error { } } + if len(errors) > 0 { + return WebAnnotationsV2MultiError(errors) + } + return nil } +// WebAnnotationsV2MultiError is an error wrapping multiple validation errors +// returned by WebAnnotationsV2.ValidateAll() if the designated constraints +// aren't met. +type WebAnnotationsV2MultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m WebAnnotationsV2MultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m WebAnnotationsV2MultiError) AllErrors() []error { return m } + // WebAnnotationsV2ValidationError is the validation error returned by // WebAnnotationsV2.Validate if the designated constraints aren't met. type WebAnnotationsV2ValidationError struct { @@ -15535,38 +26915,68 @@ var _ interface { // Validate checks the field values on ListNodesInClusterRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNodesInClusterRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNodesInClusterRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNodesInClusterRequestMultiError, or nil if none found. +func (m *ListNodesInClusterRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNodesInClusterRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return ListNodesInClusterRequestValidationError{ + err := ListNodesInClusterRequestValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) > 100 { - return ListNodesInClusterRequestValidationError{ + err := ListNodesInClusterRequestValidationError{ field: "Region", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetVpcID()) > 32 { - return ListNodesInClusterRequestValidationError{ + err := ListNodesInClusterRequestValidationError{ field: "VpcID", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetNodeGroupID()) > 100 { - return ListNodesInClusterRequestValidationError{ + err := ListNodesInClusterRequestValidationError{ field: "NodeGroupID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for InstanceType @@ -15574,24 +26984,53 @@ func (m *ListNodesInClusterRequest) Validate() error { // no validation rules for Status if m.GetOffset() < 0 { - return ListNodesInClusterRequestValidationError{ + err := ListNodesInClusterRequestValidationError{ field: "Offset", reason: "value must be greater than or equal to 0", } + if !all { + return err + } + errors = append(errors, err) } if m.GetLimit() > 5000 { - return ListNodesInClusterRequestValidationError{ + err := ListNodesInClusterRequestValidationError{ field: "Limit", reason: "value must be less than or equal to 5000", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for ShowPwd + if len(errors) > 0 { + return ListNodesInClusterRequestMultiError(errors) + } + return nil } +// ListNodesInClusterRequestMultiError is an error wrapping multiple validation +// errors returned by ListNodesInClusterRequest.ValidateAll() if the +// designated constraints aren't met. +type ListNodesInClusterRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNodesInClusterRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNodesInClusterRequestMultiError) AllErrors() []error { return m } + // ListNodesInClusterRequestValidationError is the validation error returned by // ListNodesInClusterRequest.Validate if the designated constraints aren't met. type ListNodesInClusterRequestValidationError struct { @@ -15650,12 +27089,26 @@ var _ interface { // Validate checks the field values on ListNodesInClusterResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNodesInClusterResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNodesInClusterResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNodesInClusterResponseMultiError, or nil if none found. +func (m *ListNodesInClusterResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNodesInClusterResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -15665,7 +27118,26 @@ func (m *ListNodesInClusterResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListNodesInClusterResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListNodesInClusterResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodesInClusterResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -15677,7 +27149,26 @@ func (m *ListNodesInClusterResponse) Validate() error { } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListNodesInClusterResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListNodesInClusterResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodesInClusterResponseValidationError{ field: "WebAnnotations", @@ -15687,9 +27178,30 @@ func (m *ListNodesInClusterResponse) Validate() error { } } + if len(errors) > 0 { + return ListNodesInClusterResponseMultiError(errors) + } + return nil } +// ListNodesInClusterResponseMultiError is an error wrapping multiple +// validation errors returned by ListNodesInClusterResponse.ValidateAll() if +// the designated constraints aren't met. +type ListNodesInClusterResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNodesInClusterResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNodesInClusterResponseMultiError) AllErrors() []error { return m } + // ListNodesInClusterResponseValidationError is the validation error returned // by ListNodesInClusterResponse.Validate if the designated constraints aren't met. type ListNodesInClusterResponseValidationError struct { @@ -15747,13 +27259,27 @@ var _ interface { } = ListNodesInClusterResponseValidationError{} // Validate checks the field values on ClusterNode with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ClusterNode) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ClusterNode with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ClusterNodeMultiError, or +// nil if none found. +func (m *ClusterNode) ValidateAll() error { + return m.validate(true) +} + +func (m *ClusterNode) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeID // no validation rules for InnerIP @@ -15789,7 +27315,26 @@ func (m *ClusterNode) Validate() error { for idx, item := range m.GetTaints() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ClusterNodeValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ClusterNodeValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ClusterNodeValidationError{ field: fmt.Sprintf("Taints[%v]", idx), @@ -15827,9 +27372,29 @@ func (m *ClusterNode) Validate() error { // no validation rules for FailedReason + if len(errors) > 0 { + return ClusterNodeMultiError(errors) + } + return nil } +// ClusterNodeMultiError is an error wrapping multiple validation errors +// returned by ClusterNode.ValidateAll() if the designated constraints aren't met. +type ClusterNodeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ClusterNodeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ClusterNodeMultiError) AllErrors() []error { return m } + // ClusterNodeValidationError is the validation error returned by // ClusterNode.Validate if the designated constraints aren't met. type ClusterNodeValidationError struct { @@ -15886,22 +27451,61 @@ var _ interface { // Validate checks the field values on GetClustersMetaDataRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetClustersMetaDataRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetClustersMetaDataRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetClustersMetaDataRequestMultiError, or nil if none found. +func (m *GetClustersMetaDataRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetClustersMetaDataRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := len(m.GetClusters()); l < 1 || l > 1000 { - return GetClustersMetaDataRequestValidationError{ + err := GetClustersMetaDataRequestValidationError{ field: "Clusters", reason: "value must contain between 1 and 1000 items, inclusive", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return GetClustersMetaDataRequestMultiError(errors) } return nil } +// GetClustersMetaDataRequestMultiError is an error wrapping multiple +// validation errors returned by GetClustersMetaDataRequest.ValidateAll() if +// the designated constraints aren't met. +type GetClustersMetaDataRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetClustersMetaDataRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetClustersMetaDataRequestMultiError) AllErrors() []error { return m } + // GetClustersMetaDataRequestValidationError is the validation error returned // by GetClustersMetaDataRequest.Validate if the designated constraints aren't met. type GetClustersMetaDataRequestValidationError struct { @@ -15960,12 +27564,26 @@ var _ interface { // Validate checks the field values on GetClustersMetaDataResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetClustersMetaDataResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetClustersMetaDataResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetClustersMetaDataResponseMultiError, or nil if none found. +func (m *GetClustersMetaDataResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetClustersMetaDataResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -15975,7 +27593,26 @@ func (m *GetClustersMetaDataResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetClustersMetaDataResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetClustersMetaDataResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetClustersMetaDataResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -15987,7 +27624,26 @@ func (m *GetClustersMetaDataResponse) Validate() error { } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetClustersMetaDataResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetClustersMetaDataResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetClustersMetaDataResponseValidationError{ field: "WebAnnotations", @@ -15997,9 +27653,30 @@ func (m *GetClustersMetaDataResponse) Validate() error { } } + if len(errors) > 0 { + return GetClustersMetaDataResponseMultiError(errors) + } + return nil } +// GetClustersMetaDataResponseMultiError is an error wrapping multiple +// validation errors returned by GetClustersMetaDataResponse.ValidateAll() if +// the designated constraints aren't met. +type GetClustersMetaDataResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetClustersMetaDataResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetClustersMetaDataResponseMultiError) AllErrors() []error { return m } + // GetClustersMetaDataResponseValidationError is the validation error returned // by GetClustersMetaDataResponse.Validate if the designated constraints // aren't met. @@ -16058,20 +27735,54 @@ var _ interface { } = GetClustersMetaDataResponseValidationError{} // Validate checks the field values on ClusterMeta with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ClusterMeta) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ClusterMeta with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ClusterMetaMultiError, or +// nil if none found. +func (m *ClusterMeta) ValidateAll() error { + return m.validate(true) +} + +func (m *ClusterMeta) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterId // no validation rules for ClusterNodeNum + if len(errors) > 0 { + return ClusterMetaMultiError(errors) + } + return nil } +// ClusterMetaMultiError is an error wrapping multiple validation errors +// returned by ClusterMeta.ValidateAll() if the designated constraints aren't met. +type ClusterMetaMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ClusterMetaMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ClusterMetaMultiError) AllErrors() []error { return m } + // ClusterMetaValidationError is the validation error returned by // ClusterMeta.Validate if the designated constraints aren't met. type ClusterMetaValidationError struct { @@ -16128,22 +27839,61 @@ var _ interface { // Validate checks the field values on ListMastersInClusterRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListMastersInClusterRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListMastersInClusterRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListMastersInClusterRequestMultiError, or nil if none found. +func (m *ListMastersInClusterRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListMastersInClusterRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return ListMastersInClusterRequestValidationError{ + err := ListMastersInClusterRequestValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return ListMastersInClusterRequestMultiError(errors) } return nil } +// ListMastersInClusterRequestMultiError is an error wrapping multiple +// validation errors returned by ListMastersInClusterRequest.ValidateAll() if +// the designated constraints aren't met. +type ListMastersInClusterRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListMastersInClusterRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListMastersInClusterRequestMultiError) AllErrors() []error { return m } + // ListMastersInClusterRequestValidationError is the validation error returned // by ListMastersInClusterRequest.Validate if the designated constraints // aren't met. @@ -16203,12 +27953,26 @@ var _ interface { // Validate checks the field values on ListMastersInClusterResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListMastersInClusterResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListMastersInClusterResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListMastersInClusterResponseMultiError, or nil if none found. +func (m *ListMastersInClusterResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListMastersInClusterResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -16218,7 +27982,26 @@ func (m *ListMastersInClusterResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListMastersInClusterResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListMastersInClusterResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListMastersInClusterResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -16230,7 +28013,26 @@ func (m *ListMastersInClusterResponse) Validate() error { } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListMastersInClusterResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListMastersInClusterResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListMastersInClusterResponseValidationError{ field: "WebAnnotations", @@ -16240,9 +28042,30 @@ func (m *ListMastersInClusterResponse) Validate() error { } } + if len(errors) > 0 { + return ListMastersInClusterResponseMultiError(errors) + } + return nil } +// ListMastersInClusterResponseMultiError is an error wrapping multiple +// validation errors returned by ListMastersInClusterResponse.ValidateAll() if +// the designated constraints aren't met. +type ListMastersInClusterResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListMastersInClusterResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListMastersInClusterResponseMultiError) AllErrors() []error { return m } + // ListMastersInClusterResponseValidationError is the validation error returned // by ListMastersInClusterResponse.Validate if the designated constraints // aren't met. @@ -16302,22 +28125,61 @@ var _ interface { // Validate checks the field values on GetClusterCredentialReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetClusterCredentialReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetClusterCredentialReq with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetClusterCredentialReqMultiError, or nil if none found. +func (m *GetClusterCredentialReq) ValidateAll() error { + return m.validate(true) +} + +func (m *GetClusterCredentialReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetServerKey()); l < 1 || l > 100 { - return GetClusterCredentialReqValidationError{ + err := GetClusterCredentialReqValidationError{ field: "ServerKey", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return GetClusterCredentialReqMultiError(errors) } return nil } +// GetClusterCredentialReqMultiError is an error wrapping multiple validation +// errors returned by GetClusterCredentialReq.ValidateAll() if the designated +// constraints aren't met. +type GetClusterCredentialReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetClusterCredentialReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetClusterCredentialReqMultiError) AllErrors() []error { return m } + // GetClusterCredentialReqValidationError is the validation error returned by // GetClusterCredentialReq.Validate if the designated constraints aren't met. type GetClusterCredentialReqValidationError struct { @@ -16376,19 +28238,52 @@ var _ interface { // Validate checks the field values on GetClusterCredentialResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetClusterCredentialResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetClusterCredentialResp with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetClusterCredentialRespMultiError, or nil if none found. +func (m *GetClusterCredentialResp) ValidateAll() error { + return m.validate(true) +} + +func (m *GetClusterCredentialResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetClusterCredentialRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetClusterCredentialRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetClusterCredentialRespValidationError{ field: "Data", @@ -16398,9 +28293,30 @@ func (m *GetClusterCredentialResp) Validate() error { } } + if len(errors) > 0 { + return GetClusterCredentialRespMultiError(errors) + } + return nil } +// GetClusterCredentialRespMultiError is an error wrapping multiple validation +// errors returned by GetClusterCredentialResp.ValidateAll() if the designated +// constraints aren't met. +type GetClusterCredentialRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetClusterCredentialRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetClusterCredentialRespMultiError) AllErrors() []error { return m } + // GetClusterCredentialRespValidationError is the validation error returned by // GetClusterCredentialResp.Validate if the designated constraints aren't met. type GetClusterCredentialRespValidationError struct { @@ -16459,78 +28375,149 @@ var _ interface { // Validate checks the field values on UpdateClusterCredentialReq with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateClusterCredentialReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateClusterCredentialReq with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateClusterCredentialReqMultiError, or nil if none found. +func (m *UpdateClusterCredentialReq) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateClusterCredentialReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetServerKey()); l < 1 || l > 100 { - return UpdateClusterCredentialReqValidationError{ + err := UpdateClusterCredentialReqValidationError{ field: "ServerKey", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return UpdateClusterCredentialReqValidationError{ + err := UpdateClusterCredentialReqValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetClientModule()); l < 1 || l > 100 { - return UpdateClusterCredentialReqValidationError{ + err := UpdateClusterCredentialReqValidationError{ field: "ClientModule", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetServerAddress()); l < 1 || l > 2048 { - return UpdateClusterCredentialReqValidationError{ + err := UpdateClusterCredentialReqValidationError{ field: "ServerAddress", reason: "value length must be between 1 and 2048 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetCaCertData()) > 4096 { - return UpdateClusterCredentialReqValidationError{ + err := UpdateClusterCredentialReqValidationError{ field: "CaCertData", reason: "value length must be at most 4096 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetUserToken()) > 2048 { - return UpdateClusterCredentialReqValidationError{ + err := UpdateClusterCredentialReqValidationError{ field: "UserToken", reason: "value length must be at most 2048 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetClusterDomain()) > 2048 { - return UpdateClusterCredentialReqValidationError{ + err := UpdateClusterCredentialReqValidationError{ field: "ClusterDomain", reason: "value length must be at most 2048 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetClientCert()) > 4096 { - return UpdateClusterCredentialReqValidationError{ + err := UpdateClusterCredentialReqValidationError{ field: "ClientCert", reason: "value length must be at most 4096 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetClientKey()) > 4096 { - return UpdateClusterCredentialReqValidationError{ + err := UpdateClusterCredentialReqValidationError{ field: "ClientKey", reason: "value length must be at most 4096 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return UpdateClusterCredentialReqMultiError(errors) } return nil } +// UpdateClusterCredentialReqMultiError is an error wrapping multiple +// validation errors returned by UpdateClusterCredentialReq.ValidateAll() if +// the designated constraints aren't met. +type UpdateClusterCredentialReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateClusterCredentialReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateClusterCredentialReqMultiError) AllErrors() []error { return m } + // UpdateClusterCredentialReqValidationError is the validation error returned // by UpdateClusterCredentialReq.Validate if the designated constraints aren't met. type UpdateClusterCredentialReqValidationError struct { @@ -16589,21 +28576,56 @@ var _ interface { // Validate checks the field values on UpdateClusterCredentialResp with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateClusterCredentialResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateClusterCredentialResp with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateClusterCredentialRespMultiError, or nil if none found. +func (m *UpdateClusterCredentialResp) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateClusterCredentialResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return UpdateClusterCredentialRespMultiError(errors) + } + return nil } +// UpdateClusterCredentialRespMultiError is an error wrapping multiple +// validation errors returned by UpdateClusterCredentialResp.ValidateAll() if +// the designated constraints aren't met. +type UpdateClusterCredentialRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateClusterCredentialRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateClusterCredentialRespMultiError) AllErrors() []error { return m } + // UpdateClusterCredentialRespValidationError is the validation error returned // by UpdateClusterCredentialResp.Validate if the designated constraints // aren't met. @@ -16663,22 +28685,61 @@ var _ interface { // Validate checks the field values on DeleteClusterCredentialReq with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteClusterCredentialReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteClusterCredentialReq with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteClusterCredentialReqMultiError, or nil if none found. +func (m *DeleteClusterCredentialReq) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteClusterCredentialReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetServerKey()); l < 2 || l > 100 { - return DeleteClusterCredentialReqValidationError{ + err := DeleteClusterCredentialReqValidationError{ field: "ServerKey", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return DeleteClusterCredentialReqMultiError(errors) } return nil } +// DeleteClusterCredentialReqMultiError is an error wrapping multiple +// validation errors returned by DeleteClusterCredentialReq.ValidateAll() if +// the designated constraints aren't met. +type DeleteClusterCredentialReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteClusterCredentialReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteClusterCredentialReqMultiError) AllErrors() []error { return m } + // DeleteClusterCredentialReqValidationError is the validation error returned // by DeleteClusterCredentialReq.Validate if the designated constraints aren't met. type DeleteClusterCredentialReqValidationError struct { @@ -16737,21 +28798,56 @@ var _ interface { // Validate checks the field values on DeleteClusterCredentialResp with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteClusterCredentialResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteClusterCredentialResp with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteClusterCredentialRespMultiError, or nil if none found. +func (m *DeleteClusterCredentialResp) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteClusterCredentialResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return DeleteClusterCredentialRespMultiError(errors) + } + return nil } +// DeleteClusterCredentialRespMultiError is an error wrapping multiple +// validation errors returned by DeleteClusterCredentialResp.ValidateAll() if +// the designated constraints aren't met. +type DeleteClusterCredentialRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteClusterCredentialRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteClusterCredentialRespMultiError) AllErrors() []error { return m } + // DeleteClusterCredentialRespValidationError is the validation error returned // by DeleteClusterCredentialResp.Validate if the designated constraints // aren't met. @@ -16811,57 +28907,116 @@ var _ interface { // Validate checks the field values on ListClusterCredentialReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListClusterCredentialReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListClusterCredentialReq with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListClusterCredentialReqMultiError, or nil if none found. +func (m *ListClusterCredentialReq) ValidateAll() error { + return m.validate(true) +} + +func (m *ListClusterCredentialReq) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetServerKey()) > 100 { - return ListClusterCredentialReqValidationError{ + err := ListClusterCredentialReqValidationError{ field: "ServerKey", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetClusterID()) > 100 { - return ListClusterCredentialReqValidationError{ + err := ListClusterCredentialReqValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetClientMode()) > 100 { - return ListClusterCredentialReqValidationError{ + err := ListClusterCredentialReqValidationError{ field: "ClientMode", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetConnectMode()) > 100 { - return ListClusterCredentialReqValidationError{ + err := ListClusterCredentialReqValidationError{ field: "ConnectMode", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if m.GetOffset() < 0 { - return ListClusterCredentialReqValidationError{ + err := ListClusterCredentialReqValidationError{ field: "Offset", reason: "value must be greater than or equal to 0", } + if !all { + return err + } + errors = append(errors, err) } if m.GetLimit() > 1000 { - return ListClusterCredentialReqValidationError{ + err := ListClusterCredentialReqValidationError{ field: "Limit", reason: "value must be less than or equal to 1000", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return ListClusterCredentialReqMultiError(errors) } return nil } +// ListClusterCredentialReqMultiError is an error wrapping multiple validation +// errors returned by ListClusterCredentialReq.ValidateAll() if the designated +// constraints aren't met. +type ListClusterCredentialReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListClusterCredentialReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListClusterCredentialReqMultiError) AllErrors() []error { return m } + // ListClusterCredentialReqValidationError is the validation error returned by // ListClusterCredentialReq.Validate if the designated constraints aren't met. type ListClusterCredentialReqValidationError struct { @@ -16920,12 +29075,26 @@ var _ interface { // Validate checks the field values on ListClusterCredentialResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListClusterCredentialResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListClusterCredentialResp with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListClusterCredentialRespMultiError, or nil if none found. +func (m *ListClusterCredentialResp) ValidateAll() error { + return m.validate(true) +} + +func (m *ListClusterCredentialResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -16935,7 +29104,26 @@ func (m *ListClusterCredentialResp) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListClusterCredentialRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListClusterCredentialRespValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListClusterCredentialRespValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -16947,9 +29135,30 @@ func (m *ListClusterCredentialResp) Validate() error { } + if len(errors) > 0 { + return ListClusterCredentialRespMultiError(errors) + } + return nil } +// ListClusterCredentialRespMultiError is an error wrapping multiple validation +// errors returned by ListClusterCredentialResp.ValidateAll() if the +// designated constraints aren't met. +type ListClusterCredentialRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListClusterCredentialRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListClusterCredentialRespMultiError) AllErrors() []error { return m } + // ListClusterCredentialRespValidationError is the validation error returned by // ListClusterCredentialResp.Validate if the designated constraints aren't met. type ListClusterCredentialRespValidationError struct { @@ -17008,15 +29217,50 @@ var _ interface { // Validate checks the field values on InitFederationClusterReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *InitFederationClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on InitFederationClusterReq with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// InitFederationClusterReqMultiError, or nil if none found. +func (m *InitFederationClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *InitFederationClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + + if len(errors) > 0 { + return InitFederationClusterReqMultiError(errors) + } + return nil } +// InitFederationClusterReqMultiError is an error wrapping multiple validation +// errors returned by InitFederationClusterReq.ValidateAll() if the designated +// constraints aren't met. +type InitFederationClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m InitFederationClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m InitFederationClusterReqMultiError) AllErrors() []error { return m } + // InitFederationClusterReqValidationError is the validation error returned by // InitFederationClusterReq.Validate if the designated constraints aren't met. type InitFederationClusterReqValidationError struct { @@ -17075,15 +29319,50 @@ var _ interface { // Validate checks the field values on InitFederationClusterResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *InitFederationClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on InitFederationClusterResp with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// InitFederationClusterRespMultiError, or nil if none found. +func (m *InitFederationClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *InitFederationClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + + if len(errors) > 0 { + return InitFederationClusterRespMultiError(errors) + } + return nil } +// InitFederationClusterRespMultiError is an error wrapping multiple validation +// errors returned by InitFederationClusterResp.ValidateAll() if the +// designated constraints aren't met. +type InitFederationClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m InitFederationClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m InitFederationClusterRespMultiError) AllErrors() []error { return m } + // InitFederationClusterRespValidationError is the validation error returned by // InitFederationClusterResp.Validate if the designated constraints aren't met. type InitFederationClusterRespValidationError struct { @@ -17142,19 +29421,54 @@ var _ interface { // Validate checks the field values on AddFederatedClusterReq with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *AddFederatedClusterReq) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AddFederatedClusterReq with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// AddFederatedClusterReqMultiError, or nil if none found. +func (m *AddFederatedClusterReq) ValidateAll() error { + return m.validate(true) +} + +func (m *AddFederatedClusterReq) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for FederationClusterID // no validation rules for ClusterID + if len(errors) > 0 { + return AddFederatedClusterReqMultiError(errors) + } + return nil } +// AddFederatedClusterReqMultiError is an error wrapping multiple validation +// errors returned by AddFederatedClusterReq.ValidateAll() if the designated +// constraints aren't met. +type AddFederatedClusterReqMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AddFederatedClusterReqMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AddFederatedClusterReqMultiError) AllErrors() []error { return m } + // AddFederatedClusterReqValidationError is the validation error returned by // AddFederatedClusterReq.Validate if the designated constraints aren't met. type AddFederatedClusterReqValidationError struct { @@ -17213,21 +29527,56 @@ var _ interface { // Validate checks the field values on AddFederatedClusterResp with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *AddFederatedClusterResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AddFederatedClusterResp with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// AddFederatedClusterRespMultiError, or nil if none found. +func (m *AddFederatedClusterResp) ValidateAll() error { + return m.validate(true) +} + +func (m *AddFederatedClusterResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return AddFederatedClusterRespMultiError(errors) + } + return nil } +// AddFederatedClusterRespMultiError is an error wrapping multiple validation +// errors returned by AddFederatedClusterResp.ValidateAll() if the designated +// constraints aren't met. +type AddFederatedClusterRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AddFederatedClusterRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AddFederatedClusterRespMultiError) AllErrors() []error { return m } + // AddFederatedClusterRespValidationError is the validation error returned by // AddFederatedClusterResp.Validate if the designated constraints aren't met. type AddFederatedClusterRespValidationError struct { @@ -17286,70 +29635,173 @@ var _ interface { // Validate checks the field values on CreateCloudRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateCloudRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateCloudRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateCloudRequestMultiError, or nil if none found. +func (m *CreateCloudRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateCloudRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 20 { - return CreateCloudRequestValidationError{ + err := CreateCloudRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateCloudRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return CreateCloudRequestValidationError{ + err := CreateCloudRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetName()); l < 2 || l > 64 { - return CreateCloudRequestValidationError{ + err := CreateCloudRequestValidationError{ field: "Name", reason: "value length must be between 2 and 64 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Editable - for key, val := range m.GetOpsPlugins() { - _ = val - - // no validation rules for OpsPlugins[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CreateCloudRequestValidationError{ - field: fmt.Sprintf("OpsPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetOpsPlugins())) + i := 0 + for key := range m.GetOpsPlugins() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetOpsPlugins()[key] + _ = val + + // no validation rules for OpsPlugins[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CreateCloudRequestValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } - for key, val := range m.GetExtraPlugins() { - _ = val + { + sorted_keys := make([]string, len(m.GetExtraPlugins())) + i := 0 + for key := range m.GetExtraPlugins() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetExtraPlugins()[key] + _ = val + + // no validation rules for ExtraPlugins[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CreateCloudRequestValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + } + } + } - // no validation rules for ExtraPlugins[key] + } + } - if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCloudCredential()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "CloudCredential", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: if err := v.Validate(); err != nil { - return CreateCloudRequestValidationError{ - field: fmt.Sprintf("ExtraPlugins[%v]", key), + errors = append(errors, CreateCloudRequestValidationError{ + field: "CloudCredential", reason: "embedded message failed validation", cause: err, - } + }) } } - - } - - if v, ok := interface{}(m.GetCloudCredential()).(interface{ Validate() error }); ok { + } else if v, ok := interface{}(m.GetCloudCredential()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudRequestValidationError{ field: "CloudCredential", @@ -17359,7 +29811,26 @@ func (m *CreateCloudRequest) Validate() error { } } - if v, ok := interface{}(m.GetOsManagement()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetOsManagement()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "OsManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "OsManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetOsManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudRequestValidationError{ field: "OsManagement", @@ -17369,7 +29840,26 @@ func (m *CreateCloudRequest) Validate() error { } } - if v, ok := interface{}(m.GetClusterManagement()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterManagement()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "ClusterManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "ClusterManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudRequestValidationError{ field: "ClusterManagement", @@ -17379,7 +29869,26 @@ func (m *CreateCloudRequest) Validate() error { } } - if v, ok := interface{}(m.GetNodeGroupManagement()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeGroupManagement()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "NodeGroupManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "NodeGroupManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeGroupManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudRequestValidationError{ field: "NodeGroupManagement", @@ -17390,10 +29899,14 @@ func (m *CreateCloudRequest) Validate() error { } if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 20 { - return CreateCloudRequestValidationError{ + err := CreateCloudRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for CloudProvider @@ -17406,7 +29919,26 @@ func (m *CreateCloudRequest) Validate() error { // no validation rules for Enable - if v, ok := interface{}(m.GetNetworkInfo()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNetworkInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "NetworkInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "NetworkInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNetworkInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudRequestValidationError{ field: "NetworkInfo", @@ -17416,7 +29948,26 @@ func (m *CreateCloudRequest) Validate() error { } } - if v, ok := interface{}(m.GetConfInfo()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetConfInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "ConfInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudRequestValidationError{ + field: "ConfInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetConfInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudRequestValidationError{ field: "ConfInfo", @@ -17428,9 +29979,30 @@ func (m *CreateCloudRequest) Validate() error { // no validation rules for PlatformInfo + if len(errors) > 0 { + return CreateCloudRequestMultiError(errors) + } + return nil } +// CreateCloudRequestMultiError is an error wrapping multiple validation errors +// returned by CreateCloudRequest.ValidateAll() if the designated constraints +// aren't met. +type CreateCloudRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateCloudRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateCloudRequestMultiError) AllErrors() []error { return m } + // CreateCloudRequestValidationError is the validation error returned by // CreateCloudRequest.Validate if the designated constraints aren't met. type CreateCloudRequestValidationError struct { @@ -17491,21 +30063,56 @@ var _CreateCloudRequest_CloudID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on CreateCloudResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateCloudResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateCloudResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateCloudResponseMultiError, or nil if none found. +func (m *CreateCloudResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateCloudResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return CreateCloudResponseMultiError(errors) + } + return nil } +// CreateCloudResponseMultiError is an error wrapping multiple validation +// errors returned by CreateCloudResponse.ValidateAll() if the designated +// constraints aren't met. +type CreateCloudResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateCloudResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateCloudResponseMultiError) AllErrors() []error { return m } + // CreateCloudResponseValidationError is the validation error returned by // CreateCloudResponse.Validate if the designated constraints aren't met. type CreateCloudResponseValidationError struct { @@ -17564,63 +30171,162 @@ var _ interface { // Validate checks the field values on UpdateCloudRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateCloudRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateCloudRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateCloudRequestMultiError, or nil if none found. +func (m *UpdateCloudRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateCloudRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) > 1024 { - return UpdateCloudRequestValidationError{ + err := UpdateCloudRequestValidationError{ field: "CloudID", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetName()) > 1024 { - return UpdateCloudRequestValidationError{ + err := UpdateCloudRequestValidationError{ field: "Name", reason: "value length must be at most 1024 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Editable - for key, val := range m.GetOpsPlugins() { - _ = val - - // no validation rules for OpsPlugins[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return UpdateCloudRequestValidationError{ - field: fmt.Sprintf("OpsPlugins[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetOpsPlugins())) + i := 0 + for key := range m.GetOpsPlugins() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetOpsPlugins()[key] + _ = val + + // no validation rules for OpsPlugins[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateCloudRequestValidationError{ + field: fmt.Sprintf("OpsPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } - for key, val := range m.GetExtraPlugins() { - _ = val + { + sorted_keys := make([]string, len(m.GetExtraPlugins())) + i := 0 + for key := range m.GetExtraPlugins() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetExtraPlugins()[key] + _ = val + + // no validation rules for ExtraPlugins[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateCloudRequestValidationError{ + field: fmt.Sprintf("ExtraPlugins[%v]", key), + reason: "embedded message failed validation", + cause: err, + } + } + } - // no validation rules for ExtraPlugins[key] + } + } - if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCloudCredential()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "CloudCredential", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: if err := v.Validate(); err != nil { - return UpdateCloudRequestValidationError{ - field: fmt.Sprintf("ExtraPlugins[%v]", key), + errors = append(errors, UpdateCloudRequestValidationError{ + field: "CloudCredential", reason: "embedded message failed validation", cause: err, - } + }) } } - - } - - if v, ok := interface{}(m.GetCloudCredential()).(interface{ Validate() error }); ok { + } else if v, ok := interface{}(m.GetCloudCredential()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudRequestValidationError{ field: "CloudCredential", @@ -17630,7 +30336,26 @@ func (m *UpdateCloudRequest) Validate() error { } } - if v, ok := interface{}(m.GetOsManagement()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetOsManagement()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "OsManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "OsManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetOsManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudRequestValidationError{ field: "OsManagement", @@ -17640,7 +30365,26 @@ func (m *UpdateCloudRequest) Validate() error { } } - if v, ok := interface{}(m.GetClusterManagement()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetClusterManagement()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "ClusterManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "ClusterManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetClusterManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudRequestValidationError{ field: "ClusterManagement", @@ -17650,7 +30394,26 @@ func (m *UpdateCloudRequest) Validate() error { } } - if v, ok := interface{}(m.GetNodeGroupManagement()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeGroupManagement()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "NodeGroupManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "NodeGroupManagement", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeGroupManagement()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudRequestValidationError{ field: "NodeGroupManagement", @@ -17661,10 +30424,14 @@ func (m *UpdateCloudRequest) Validate() error { } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 1024 { - return UpdateCloudRequestValidationError{ + err := UpdateCloudRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for CloudProvider @@ -17677,7 +30444,26 @@ func (m *UpdateCloudRequest) Validate() error { // no validation rules for Enable - if v, ok := interface{}(m.GetNetworkInfo()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNetworkInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "NetworkInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "NetworkInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNetworkInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudRequestValidationError{ field: "NetworkInfo", @@ -17687,7 +30473,26 @@ func (m *UpdateCloudRequest) Validate() error { } } - if v, ok := interface{}(m.GetConfInfo()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetConfInfo()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "ConfInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudRequestValidationError{ + field: "ConfInfo", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetConfInfo()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudRequestValidationError{ field: "ConfInfo", @@ -17699,9 +30504,30 @@ func (m *UpdateCloudRequest) Validate() error { // no validation rules for PlatformInfo + if len(errors) > 0 { + return UpdateCloudRequestMultiError(errors) + } + return nil } +// UpdateCloudRequestMultiError is an error wrapping multiple validation errors +// returned by UpdateCloudRequest.ValidateAll() if the designated constraints +// aren't met. +type UpdateCloudRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateCloudRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateCloudRequestMultiError) AllErrors() []error { return m } + // UpdateCloudRequestValidationError is the validation error returned by // UpdateCloudRequest.Validate if the designated constraints aren't met. type UpdateCloudRequestValidationError struct { @@ -17760,19 +30586,52 @@ var _ interface { // Validate checks the field values on UpdateCloudResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateCloudResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateCloudResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateCloudResponseMultiError, or nil if none found. +func (m *UpdateCloudResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateCloudResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudResponseValidationError{ field: "Data", @@ -17782,9 +30641,30 @@ func (m *UpdateCloudResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateCloudResponseMultiError(errors) + } + return nil } +// UpdateCloudResponseMultiError is an error wrapping multiple validation +// errors returned by UpdateCloudResponse.ValidateAll() if the designated +// constraints aren't met. +type UpdateCloudResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateCloudResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateCloudResponseMultiError) AllErrors() []error { return m } + // UpdateCloudResponseValidationError is the validation error returned by // UpdateCloudResponse.Validate if the designated constraints aren't met. type UpdateCloudResponseValidationError struct { @@ -17843,31 +30723,74 @@ var _ interface { // Validate checks the field values on DeleteCloudRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteCloudRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteCloudRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteCloudRequestMultiError, or nil if none found. +func (m *DeleteCloudRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteCloudRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 20 { - return DeleteCloudRequestValidationError{ + err := DeleteCloudRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteCloudRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return DeleteCloudRequestValidationError{ + err := DeleteCloudRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for IsForce + if len(errors) > 0 { + return DeleteCloudRequestMultiError(errors) + } + return nil } +// DeleteCloudRequestMultiError is an error wrapping multiple validation errors +// returned by DeleteCloudRequest.ValidateAll() if the designated constraints +// aren't met. +type DeleteCloudRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteCloudRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteCloudRequestMultiError) AllErrors() []error { return m } + // DeleteCloudRequestValidationError is the validation error returned by // DeleteCloudRequest.Validate if the designated constraints aren't met. type DeleteCloudRequestValidationError struct { @@ -17928,19 +30851,52 @@ var _DeleteCloudRequest_CloudID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on DeleteCloudResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteCloudResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteCloudResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteCloudResponseMultiError, or nil if none found. +func (m *DeleteCloudResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteCloudResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteCloudResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteCloudResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteCloudResponseValidationError{ field: "Data", @@ -17950,9 +30906,30 @@ func (m *DeleteCloudResponse) Validate() error { } } + if len(errors) > 0 { + return DeleteCloudResponseMultiError(errors) + } + return nil } +// DeleteCloudResponseMultiError is an error wrapping multiple validation +// errors returned by DeleteCloudResponse.ValidateAll() if the designated +// constraints aren't met. +type DeleteCloudResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteCloudResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteCloudResponseMultiError) AllErrors() []error { return m } + // DeleteCloudResponseValidationError is the validation error returned by // DeleteCloudResponse.Validate if the designated constraints aren't met. type DeleteCloudResponseValidationError struct { @@ -18010,30 +30987,73 @@ var _ interface { } = DeleteCloudResponseValidationError{} // Validate checks the field values on GetCloudRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *GetCloudRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetCloudRequestMultiError, or nil if none found. +func (m *GetCloudRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetCloudID()); l < 2 || l > 20 { - return GetCloudRequestValidationError{ + err := GetCloudRequestValidationError{ field: "CloudID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_GetCloudRequest_CloudID_Pattern.MatchString(m.GetCloudID()) { - return GetCloudRequestValidationError{ + err := GetCloudRequestValidationError{ field: "CloudID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return GetCloudRequestMultiError(errors) } return nil } +// GetCloudRequestMultiError is an error wrapping multiple validation errors +// returned by GetCloudRequest.ValidateAll() if the designated constraints +// aren't met. +type GetCloudRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudRequestMultiError) AllErrors() []error { return m } + // GetCloudRequestValidationError is the validation error returned by // GetCloudRequest.Validate if the designated constraints aren't met. type GetCloudRequestValidationError struct { @@ -18091,20 +31111,53 @@ var _ interface { var _GetCloudRequest_CloudID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on GetCloudResponse with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *GetCloudResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetCloudResponseMultiError, or nil if none found. +func (m *GetCloudResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetCloudResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetCloudResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetCloudResponseValidationError{ field: "Data", @@ -18114,9 +31167,30 @@ func (m *GetCloudResponse) Validate() error { } } + if len(errors) > 0 { + return GetCloudResponseMultiError(errors) + } + return nil } +// GetCloudResponseMultiError is an error wrapping multiple validation errors +// returned by GetCloudResponse.ValidateAll() if the designated constraints +// aren't met. +type GetCloudResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudResponseMultiError) AllErrors() []error { return m } + // GetCloudResponseValidationError is the validation error returned by // GetCloudResponse.Validate if the designated constraints aren't met. type GetCloudResponseValidationError struct { @@ -18172,18 +31246,36 @@ var _ interface { } = GetCloudResponseValidationError{} // Validate checks the field values on ListCloudRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ListCloudRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudRequestMultiError, or nil if none found. +func (m *ListCloudRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) > 20 { - return ListCloudRequestValidationError{ + err := ListCloudRequestValidationError{ field: "CloudID", reason: "value length must be at most 20 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Name @@ -18196,9 +31288,30 @@ func (m *ListCloudRequest) Validate() error { // no validation rules for CloudProvider + if len(errors) > 0 { + return ListCloudRequestMultiError(errors) + } + return nil } +// ListCloudRequestMultiError is an error wrapping multiple validation errors +// returned by ListCloudRequest.ValidateAll() if the designated constraints +// aren't met. +type ListCloudRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudRequestMultiError) AllErrors() []error { return m } + // ListCloudRequestValidationError is the validation error returned by // ListCloudRequest.Validate if the designated constraints aren't met. type ListCloudRequestValidationError struct { @@ -18254,13 +31367,27 @@ var _ interface { } = ListCloudRequestValidationError{} // Validate checks the field values on ListCloudResponse with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ListCloudResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudResponseMultiError, or nil if none found. +func (m *ListCloudResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -18270,7 +31397,26 @@ func (m *ListCloudResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -18282,9 +31428,30 @@ func (m *ListCloudResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudResponseMultiError(errors) + } + return nil } +// ListCloudResponseMultiError is an error wrapping multiple validation errors +// returned by ListCloudResponse.ValidateAll() if the designated constraints +// aren't met. +type ListCloudResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudResponseMultiError) AllErrors() []error { return m } + // ListCloudResponseValidationError is the validation error returned by // ListCloudResponse.Validate if the designated constraints aren't met. type ListCloudResponseValidationError struct { @@ -18343,64 +31510,125 @@ var _ interface { // Validate checks the field values on CreateNodeGroupRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateNodeGroupRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateNodeGroupRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateNodeGroupRequestMultiError, or nil if none found. +func (m *CreateNodeGroupRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateNodeGroupRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetName()); l < 1 || l > 255 { - return CreateNodeGroupRequestValidationError{ + err := CreateNodeGroupRequestValidationError{ field: "Name", reason: "value length must be between 1 and 255 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - return CreateNodeGroupRequestValidationError{ + err := CreateNodeGroupRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return CreateNodeGroupRequestValidationError{ + err := CreateNodeGroupRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateNodeGroupRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return CreateNodeGroupRequestValidationError{ + err := CreateNodeGroupRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetRegion()); l < 1 || l > 32 { - return CreateNodeGroupRequestValidationError{ + err := CreateNodeGroupRequestValidationError{ field: "Region", reason: "value length must be between 1 and 32 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateNodeGroupRequest_Region_Pattern.MatchString(m.GetRegion()) { - return CreateNodeGroupRequestValidationError{ + err := CreateNodeGroupRequestValidationError{ field: "Region", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for EnableAutoscale if m.GetAutoScaling() == nil { - return CreateNodeGroupRequestValidationError{ + err := CreateNodeGroupRequestValidationError{ field: "AutoScaling", reason: "value is required", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetAutoScaling()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAutoScaling()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeGroupRequestValidationError{ + field: "AutoScaling", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeGroupRequestValidationError{ + field: "AutoScaling", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAutoScaling()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupRequestValidationError{ field: "AutoScaling", @@ -18411,13 +31639,36 @@ func (m *CreateNodeGroupRequest) Validate() error { } if m.GetLaunchTemplate() == nil { - return CreateNodeGroupRequestValidationError{ + err := CreateNodeGroupRequestValidationError{ field: "LaunchTemplate", reason: "value is required", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetLaunchTemplate()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetLaunchTemplate()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeGroupRequestValidationError{ + field: "LaunchTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeGroupRequestValidationError{ + field: "LaunchTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetLaunchTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupRequestValidationError{ field: "LaunchTemplate", @@ -18434,17 +31685,40 @@ func (m *CreateNodeGroupRequest) Validate() error { // no validation rules for NodeOS if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 20 { - return CreateNodeGroupRequestValidationError{ + err := CreateNodeGroupRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Provider // no validation rules for ConsumerID - if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeTemplate()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeGroupRequestValidationError{ + field: "NodeTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeGroupRequestValidationError{ + field: "NodeTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupRequestValidationError{ field: "NodeTemplate", @@ -18462,7 +31736,26 @@ func (m *CreateNodeGroupRequest) Validate() error { // no validation rules for CloudAreaName - if v, ok := interface{}(m.GetExtra()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetExtra()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeGroupRequestValidationError{ + field: "Extra", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeGroupRequestValidationError{ + field: "Extra", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetExtra()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupRequestValidationError{ field: "Extra", @@ -18474,9 +31767,30 @@ func (m *CreateNodeGroupRequest) Validate() error { // no validation rules for OnlyCreateInfo + if len(errors) > 0 { + return CreateNodeGroupRequestMultiError(errors) + } + return nil } +// CreateNodeGroupRequestMultiError is an error wrapping multiple validation +// errors returned by CreateNodeGroupRequest.ValidateAll() if the designated +// constraints aren't met. +type CreateNodeGroupRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateNodeGroupRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateNodeGroupRequestMultiError) AllErrors() []error { return m } + // CreateNodeGroupRequestValidationError is the validation error returned by // CreateNodeGroupRequest.Validate if the designated constraints aren't met. type CreateNodeGroupRequestValidationError struct { @@ -18538,22 +31852,57 @@ var _CreateNodeGroupRequest_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z- var _CreateNodeGroupRequest_Region_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on GroupExtraInfo with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *GroupExtraInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GroupExtraInfo with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in GroupExtraInfoMultiError, +// or nil if none found. +func (m *GroupExtraInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *GroupExtraInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Provider // no validation rules for PoolID // no validation rules for ScriptType + if len(errors) > 0 { + return GroupExtraInfoMultiError(errors) + } + return nil } +// GroupExtraInfoMultiError is an error wrapping multiple validation errors +// returned by GroupExtraInfo.ValidateAll() if the designated constraints +// aren't met. +type GroupExtraInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GroupExtraInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GroupExtraInfoMultiError) AllErrors() []error { return m } + // GroupExtraInfoValidationError is the validation error returned by // GroupExtraInfo.Validate if the designated constraints aren't met. type GroupExtraInfoValidationError struct { @@ -18610,19 +31959,52 @@ var _ interface { // Validate checks the field values on CreateNodeGroupResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateNodeGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateNodeGroupResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateNodeGroupResponseMultiError, or nil if none found. +func (m *CreateNodeGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateNodeGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupResponseValidationError{ field: "Data", @@ -18632,7 +32014,26 @@ func (m *CreateNodeGroupResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupResponseValidationError{ field: "WebAnnotations", @@ -18642,9 +32043,30 @@ func (m *CreateNodeGroupResponse) Validate() error { } } + if len(errors) > 0 { + return CreateNodeGroupResponseMultiError(errors) + } + return nil } +// CreateNodeGroupResponseMultiError is an error wrapping multiple validation +// errors returned by CreateNodeGroupResponse.ValidateAll() if the designated +// constraints aren't met. +type CreateNodeGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateNodeGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateNodeGroupResponseMultiError) AllErrors() []error { return m } + // CreateNodeGroupResponseValidationError is the validation error returned by // CreateNodeGroupResponse.Validate if the designated constraints aren't met. type CreateNodeGroupResponseValidationError struct { @@ -18703,13 +32125,46 @@ var _ interface { // Validate checks the field values on CreateNodeGroupResponseData with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateNodeGroupResponseData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateNodeGroupResponseData with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateNodeGroupResponseDataMultiError, or nil if none found. +func (m *CreateNodeGroupResponseData) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateNodeGroupResponseData) validate(all bool) error { if m == nil { return nil } - if v, ok := interface{}(m.GetNodeGroup()).(interface{ Validate() error }); ok { + var errors []error + + if all { + switch v := interface{}(m.GetNodeGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeGroupResponseDataValidationError{ + field: "NodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeGroupResponseDataValidationError{ + field: "NodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupResponseDataValidationError{ field: "NodeGroup", @@ -18719,7 +32174,26 @@ func (m *CreateNodeGroupResponseData) Validate() error { } } - if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNodeGroupResponseDataValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNodeGroupResponseDataValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNodeGroupResponseDataValidationError{ field: "Task", @@ -18729,9 +32203,30 @@ func (m *CreateNodeGroupResponseData) Validate() error { } } + if len(errors) > 0 { + return CreateNodeGroupResponseDataMultiError(errors) + } + return nil } +// CreateNodeGroupResponseDataMultiError is an error wrapping multiple +// validation errors returned by CreateNodeGroupResponseData.ValidateAll() if +// the designated constraints aren't met. +type CreateNodeGroupResponseDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateNodeGroupResponseDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateNodeGroupResponseDataMultiError) AllErrors() []error { return m } + // CreateNodeGroupResponseDataValidationError is the validation error returned // by CreateNodeGroupResponseData.Validate if the designated constraints // aren't met. @@ -18791,45 +32286,94 @@ var _ interface { // Validate checks the field values on UpdateNodeGroupRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeGroupRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeGroupRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeGroupRequestMultiError, or nil if none found. +func (m *UpdateNodeGroupRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeGroupRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetNodeGroupID()) > 20 { - return UpdateNodeGroupRequestValidationError{ + err := UpdateNodeGroupRequestValidationError{ field: "NodeGroupID", reason: "value length must be at most 20 runes", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - return UpdateNodeGroupRequestValidationError{ + err := UpdateNodeGroupRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return UpdateNodeGroupRequestValidationError{ + err := UpdateNodeGroupRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateNodeGroupRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return UpdateNodeGroupRequestValidationError{ + err := UpdateNodeGroupRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Name // no validation rules for Region - if v, ok := interface{}(m.GetEnableAutoscale()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetEnableAutoscale()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "EnableAutoscale", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "EnableAutoscale", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetEnableAutoscale()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupRequestValidationError{ field: "EnableAutoscale", @@ -18839,7 +32383,26 @@ func (m *UpdateNodeGroupRequest) Validate() error { } } - if v, ok := interface{}(m.GetAutoScaling()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAutoScaling()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "AutoScaling", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "AutoScaling", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAutoScaling()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupRequestValidationError{ field: "AutoScaling", @@ -18849,7 +32412,26 @@ func (m *UpdateNodeGroupRequest) Validate() error { } } - if v, ok := interface{}(m.GetLaunchTemplate()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetLaunchTemplate()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "LaunchTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "LaunchTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetLaunchTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupRequestValidationError{ field: "LaunchTemplate", @@ -18859,7 +32441,26 @@ func (m *UpdateNodeGroupRequest) Validate() error { } } - if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetNodeTemplate()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "NodeTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "NodeTemplate", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupRequestValidationError{ field: "NodeTemplate", @@ -18878,10 +32479,14 @@ func (m *UpdateNodeGroupRequest) Validate() error { // no validation rules for NodeOS if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 20 { - return UpdateNodeGroupRequestValidationError{ + err := UpdateNodeGroupRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Provider @@ -18890,7 +32495,26 @@ func (m *UpdateNodeGroupRequest) Validate() error { // no validation rules for Desc - if v, ok := interface{}(m.GetBkCloudID()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetBkCloudID()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "BkCloudID", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "BkCloudID", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetBkCloudID()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupRequestValidationError{ field: "BkCloudID", @@ -18900,7 +32524,26 @@ func (m *UpdateNodeGroupRequest) Validate() error { } } - if v, ok := interface{}(m.GetCloudAreaName()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCloudAreaName()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "CloudAreaName", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeGroupRequestValidationError{ + field: "CloudAreaName", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCloudAreaName()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupRequestValidationError{ field: "CloudAreaName", @@ -18914,9 +32557,30 @@ func (m *UpdateNodeGroupRequest) Validate() error { // no validation rules for ExtraInfo + if len(errors) > 0 { + return UpdateNodeGroupRequestMultiError(errors) + } + return nil } +// UpdateNodeGroupRequestMultiError is an error wrapping multiple validation +// errors returned by UpdateNodeGroupRequest.ValidateAll() if the designated +// constraints aren't met. +type UpdateNodeGroupRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeGroupRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeGroupRequestMultiError) AllErrors() []error { return m } + // UpdateNodeGroupRequestValidationError is the validation error returned by // UpdateNodeGroupRequest.Validate if the designated constraints aren't met. type UpdateNodeGroupRequestValidationError struct { @@ -18977,19 +32641,52 @@ var _UpdateNodeGroupRequest_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z- // Validate checks the field values on UpdateNodeGroupResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeGroupResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeGroupResponseMultiError, or nil if none found. +func (m *UpdateNodeGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupResponseValidationError{ field: "Data", @@ -18999,7 +32696,26 @@ func (m *UpdateNodeGroupResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeGroupResponseValidationError{ field: "WebAnnotations", @@ -19009,9 +32725,30 @@ func (m *UpdateNodeGroupResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateNodeGroupResponseMultiError(errors) + } + return nil } +// UpdateNodeGroupResponseMultiError is an error wrapping multiple validation +// errors returned by UpdateNodeGroupResponse.ValidateAll() if the designated +// constraints aren't met. +type UpdateNodeGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeGroupResponseMultiError) AllErrors() []error { return m } + // UpdateNodeGroupResponseValidationError is the validation error returned by // UpdateNodeGroupResponse.Validate if the designated constraints aren't met. type UpdateNodeGroupResponseValidationError struct { @@ -19070,24 +32807,46 @@ var _ interface { // Validate checks the field values on DeleteNodeGroupRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteNodeGroupRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteNodeGroupRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteNodeGroupRequestMultiError, or nil if none found. +func (m *DeleteNodeGroupRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteNodeGroupRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - return DeleteNodeGroupRequestValidationError{ + err := DeleteNodeGroupRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteNodeGroupRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return DeleteNodeGroupRequestValidationError{ + err := DeleteNodeGroupRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for IsForce @@ -19097,17 +32856,42 @@ func (m *DeleteNodeGroupRequest) Validate() error { // no validation rules for KeepNodesInstance if l := utf8.RuneCountInString(m.GetOperator()); l < 2 || l > 100 { - return DeleteNodeGroupRequestValidationError{ + err := DeleteNodeGroupRequestValidationError{ field: "Operator", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for OnlyDeleteInfo + if len(errors) > 0 { + return DeleteNodeGroupRequestMultiError(errors) + } + return nil } +// DeleteNodeGroupRequestMultiError is an error wrapping multiple validation +// errors returned by DeleteNodeGroupRequest.ValidateAll() if the designated +// constraints aren't met. +type DeleteNodeGroupRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteNodeGroupRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteNodeGroupRequestMultiError) AllErrors() []error { return m } + // DeleteNodeGroupRequestValidationError is the validation error returned by // DeleteNodeGroupRequest.Validate if the designated constraints aren't met. type DeleteNodeGroupRequestValidationError struct { @@ -19168,19 +32952,52 @@ var _DeleteNodeGroupRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0-9a-zA- // Validate checks the field values on DeleteNodeGroupResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteNodeGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteNodeGroupResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteNodeGroupResponseMultiError, or nil if none found. +func (m *DeleteNodeGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteNodeGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteNodeGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteNodeGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodeGroupResponseValidationError{ field: "Data", @@ -19190,7 +33007,26 @@ func (m *DeleteNodeGroupResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodeGroupResponseValidationError{ field: "WebAnnotations", @@ -19200,9 +33036,30 @@ func (m *DeleteNodeGroupResponse) Validate() error { } } + if len(errors) > 0 { + return DeleteNodeGroupResponseMultiError(errors) + } + return nil } +// DeleteNodeGroupResponseMultiError is an error wrapping multiple validation +// errors returned by DeleteNodeGroupResponse.ValidateAll() if the designated +// constraints aren't met. +type DeleteNodeGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteNodeGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteNodeGroupResponseMultiError) AllErrors() []error { return m } + // DeleteNodeGroupResponseValidationError is the validation error returned by // DeleteNodeGroupResponse.Validate if the designated constraints aren't met. type DeleteNodeGroupResponseValidationError struct { @@ -19261,13 +33118,46 @@ var _ interface { // Validate checks the field values on DeleteNodeGroupResponseData with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteNodeGroupResponseData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteNodeGroupResponseData with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteNodeGroupResponseDataMultiError, or nil if none found. +func (m *DeleteNodeGroupResponseData) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteNodeGroupResponseData) validate(all bool) error { if m == nil { return nil } - if v, ok := interface{}(m.GetNodeGroup()).(interface{ Validate() error }); ok { + var errors []error + + if all { + switch v := interface{}(m.GetNodeGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteNodeGroupResponseDataValidationError{ + field: "NodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteNodeGroupResponseDataValidationError{ + field: "NodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodeGroupResponseDataValidationError{ field: "NodeGroup", @@ -19277,7 +33167,26 @@ func (m *DeleteNodeGroupResponseData) Validate() error { } } - if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteNodeGroupResponseDataValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteNodeGroupResponseDataValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodeGroupResponseDataValidationError{ field: "Task", @@ -19287,9 +33196,30 @@ func (m *DeleteNodeGroupResponseData) Validate() error { } } + if len(errors) > 0 { + return DeleteNodeGroupResponseDataMultiError(errors) + } + return nil } +// DeleteNodeGroupResponseDataMultiError is an error wrapping multiple +// validation errors returned by DeleteNodeGroupResponseData.ValidateAll() if +// the designated constraints aren't met. +type DeleteNodeGroupResponseDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteNodeGroupResponseDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteNodeGroupResponseDataMultiError) AllErrors() []error { return m } + // DeleteNodeGroupResponseDataValidationError is the validation error returned // by DeleteNodeGroupResponseData.Validate if the designated constraints // aren't met. @@ -19349,29 +33279,72 @@ var _ interface { // Validate checks the field values on GetNodeGroupRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetNodeGroupRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetNodeGroupRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetNodeGroupRequestMultiError, or nil if none found. +func (m *GetNodeGroupRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetNodeGroupRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - return GetNodeGroupRequestValidationError{ + err := GetNodeGroupRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_GetNodeGroupRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return GetNodeGroupRequestValidationError{ + err := GetNodeGroupRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return GetNodeGroupRequestMultiError(errors) } return nil } +// GetNodeGroupRequestMultiError is an error wrapping multiple validation +// errors returned by GetNodeGroupRequest.ValidateAll() if the designated +// constraints aren't met. +type GetNodeGroupRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetNodeGroupRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetNodeGroupRequestMultiError) AllErrors() []error { return m } + // GetNodeGroupRequestValidationError is the validation error returned by // GetNodeGroupRequest.Validate if the designated constraints aren't met. type GetNodeGroupRequestValidationError struct { @@ -19432,19 +33405,52 @@ var _GetNodeGroupRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-] // Validate checks the field values on GetNodeGroupResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetNodeGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetNodeGroupResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetNodeGroupResponseMultiError, or nil if none found. +func (m *GetNodeGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetNodeGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetNodeGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetNodeGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetNodeGroupResponseValidationError{ field: "Data", @@ -19454,7 +33460,26 @@ func (m *GetNodeGroupResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetNodeGroupResponseValidationError{ field: "WebAnnotations", @@ -19464,9 +33489,30 @@ func (m *GetNodeGroupResponse) Validate() error { } } + if len(errors) > 0 { + return GetNodeGroupResponseMultiError(errors) + } + return nil } +// GetNodeGroupResponseMultiError is an error wrapping multiple validation +// errors returned by GetNodeGroupResponse.ValidateAll() if the designated +// constraints aren't met. +type GetNodeGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetNodeGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetNodeGroupResponseMultiError) AllErrors() []error { return m } + // GetNodeGroupResponseValidationError is the validation error returned by // GetNodeGroupResponse.Validate if the designated constraints aren't met. type GetNodeGroupResponseValidationError struct { @@ -19525,38 +33571,85 @@ var _ interface { // Validate checks the field values on ListClusterNodeGroupRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListClusterNodeGroupRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListClusterNodeGroupRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListClusterNodeGroupRequestMultiError, or nil if none found. +func (m *ListClusterNodeGroupRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListClusterNodeGroupRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - return ListClusterNodeGroupRequestValidationError{ + err := ListClusterNodeGroupRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return ListClusterNodeGroupRequestValidationError{ + err := ListClusterNodeGroupRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_ListClusterNodeGroupRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return ListClusterNodeGroupRequestValidationError{ + err := ListClusterNodeGroupRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for EnableFilter + if len(errors) > 0 { + return ListClusterNodeGroupRequestMultiError(errors) + } + return nil } +// ListClusterNodeGroupRequestMultiError is an error wrapping multiple +// validation errors returned by ListClusterNodeGroupRequest.ValidateAll() if +// the designated constraints aren't met. +type ListClusterNodeGroupRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListClusterNodeGroupRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListClusterNodeGroupRequestMultiError) AllErrors() []error { return m } + // ListClusterNodeGroupRequestValidationError is the validation error returned // by ListClusterNodeGroupRequest.Validate if the designated constraints // aren't met. @@ -19618,12 +33711,26 @@ var _ListClusterNodeGroupRequest_ClusterID_Pattern = regexp.MustCompile("^[0-9a- // Validate checks the field values on ListClusterNodeGroupResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListClusterNodeGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListClusterNodeGroupResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListClusterNodeGroupResponseMultiError, or nil if none found. +func (m *ListClusterNodeGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListClusterNodeGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -19633,7 +33740,26 @@ func (m *ListClusterNodeGroupResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListClusterNodeGroupResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListClusterNodeGroupResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListClusterNodeGroupResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -19645,7 +33771,26 @@ func (m *ListClusterNodeGroupResponse) Validate() error { } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListClusterNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListClusterNodeGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListClusterNodeGroupResponseValidationError{ field: "WebAnnotations", @@ -19655,9 +33800,30 @@ func (m *ListClusterNodeGroupResponse) Validate() error { } } + if len(errors) > 0 { + return ListClusterNodeGroupResponseMultiError(errors) + } + return nil } +// ListClusterNodeGroupResponseMultiError is an error wrapping multiple +// validation errors returned by ListClusterNodeGroupResponse.ValidateAll() if +// the designated constraints aren't met. +type ListClusterNodeGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListClusterNodeGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListClusterNodeGroupResponseMultiError) AllErrors() []error { return m } + // ListClusterNodeGroupResponseValidationError is the validation error returned // by ListClusterNodeGroupResponse.Validate if the designated constraints // aren't met. @@ -19717,12 +33883,26 @@ var _ interface { // Validate checks the field values on ListNodeGroupRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNodeGroupRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNodeGroupRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNodeGroupRequestMultiError, or nil if none found. +func (m *ListNodeGroupRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNodeGroupRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Name // no validation rules for ClusterID @@ -19731,9 +33911,30 @@ func (m *ListNodeGroupRequest) Validate() error { // no validation rules for ProjectID + if len(errors) > 0 { + return ListNodeGroupRequestMultiError(errors) + } + return nil } +// ListNodeGroupRequestMultiError is an error wrapping multiple validation +// errors returned by ListNodeGroupRequest.ValidateAll() if the designated +// constraints aren't met. +type ListNodeGroupRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNodeGroupRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNodeGroupRequestMultiError) AllErrors() []error { return m } + // ListNodeGroupRequestValidationError is the validation error returned by // ListNodeGroupRequest.Validate if the designated constraints aren't met. type ListNodeGroupRequestValidationError struct { @@ -19792,12 +33993,26 @@ var _ interface { // Validate checks the field values on ListNodeGroupResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNodeGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNodeGroupResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNodeGroupResponseMultiError, or nil if none found. +func (m *ListNodeGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNodeGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -19807,7 +34022,26 @@ func (m *ListNodeGroupResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListNodeGroupResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListNodeGroupResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodeGroupResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -19819,9 +34053,30 @@ func (m *ListNodeGroupResponse) Validate() error { } + if len(errors) > 0 { + return ListNodeGroupResponseMultiError(errors) + } + return nil } +// ListNodeGroupResponseMultiError is an error wrapping multiple validation +// errors returned by ListNodeGroupResponse.ValidateAll() if the designated +// constraints aren't met. +type ListNodeGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNodeGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNodeGroupResponseMultiError) AllErrors() []error { return m } + // ListNodeGroupResponseValidationError is the validation error returned by // ListNodeGroupResponse.Validate if the designated constraints aren't met. type ListNodeGroupResponseValidationError struct { @@ -19879,39 +34134,69 @@ var _ interface { } = ListNodeGroupResponseValidationError{} // Validate checks the field values on AddNodesRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *AddNodesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AddNodesRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// AddNodesRequestMultiError, or nil if none found. +func (m *AddNodesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *AddNodesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return AddNodesRequestValidationError{ + err := AddNodesRequestValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return AddNodesRequestValidationError{ + err := AddNodesRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_AddNodesRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return AddNodesRequestValidationError{ + err := AddNodesRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if len(m.GetNodes()) < 1 { - return AddNodesRequestValidationError{ + err := AddNodesRequestValidationError{ field: "Nodes", reason: "value must contain at least 1 item(s)", } + if !all { + return err + } + errors = append(errors, err) } _AddNodesRequest_Nodes_Unique := make(map[string]struct{}, len(m.GetNodes())) @@ -19920,10 +34205,14 @@ func (m *AddNodesRequest) Validate() error { _, _ = idx, item if _, exists := _AddNodesRequest_Nodes_Unique[item]; exists { - return AddNodesRequestValidationError{ + err := AddNodesRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), reason: "repeated value must contain unique items", } + if !all { + return err + } + errors = append(errors, err) } else { _AddNodesRequest_Nodes_Unique[item] = struct{}{} } @@ -19938,17 +34227,40 @@ func (m *AddNodesRequest) Validate() error { // no validation rules for OnlyCreateInfo if l := utf8.RuneCountInString(m.GetOperator()); l < 2 || l > 20 { - return AddNodesRequestValidationError{ + err := AddNodesRequestValidationError{ field: "Operator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for NodeTemplateID // no validation rules for IsExternalNode - if v, ok := interface{}(m.GetLogin()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetLogin()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, AddNodesRequestValidationError{ + field: "Login", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, AddNodesRequestValidationError{ + field: "Login", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetLogin()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return AddNodesRequestValidationError{ field: "Login", @@ -19958,9 +34270,30 @@ func (m *AddNodesRequest) Validate() error { } } + if len(errors) > 0 { + return AddNodesRequestMultiError(errors) + } + return nil } +// AddNodesRequestMultiError is an error wrapping multiple validation errors +// returned by AddNodesRequest.ValidateAll() if the designated constraints +// aren't met. +type AddNodesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AddNodesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AddNodesRequestMultiError) AllErrors() []error { return m } + // AddNodesRequestValidationError is the validation error returned by // AddNodesRequest.Validate if the designated constraints aren't met. type AddNodesRequestValidationError struct { @@ -20018,20 +34351,53 @@ var _ interface { var _AddNodesRequest_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on AddNodesResponse with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *AddNodesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AddNodesResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// AddNodesResponseMultiError, or nil if none found. +func (m *AddNodesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *AddNodesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, AddNodesResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, AddNodesResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return AddNodesResponseValidationError{ field: "Data", @@ -20041,7 +34407,26 @@ func (m *AddNodesResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, AddNodesResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, AddNodesResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return AddNodesResponseValidationError{ field: "WebAnnotations", @@ -20051,9 +34436,30 @@ func (m *AddNodesResponse) Validate() error { } } + if len(errors) > 0 { + return AddNodesResponseMultiError(errors) + } + return nil } +// AddNodesResponseMultiError is an error wrapping multiple validation errors +// returned by AddNodesResponse.ValidateAll() if the designated constraints +// aren't met. +type AddNodesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AddNodesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AddNodesResponseMultiError) AllErrors() []error { return m } + // AddNodesResponseValidationError is the validation error returned by // AddNodesResponse.Validate if the designated constraints aren't met. type AddNodesResponseValidationError struct { @@ -20110,31 +34516,57 @@ var _ interface { // Validate checks the field values on BatchDeleteClusterNodesRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *BatchDeleteClusterNodesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on BatchDeleteClusterNodesRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// BatchDeleteClusterNodesRequestMultiError, or nil if none found. +func (m *BatchDeleteClusterNodesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *BatchDeleteClusterNodesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return BatchDeleteClusterNodesRequestValidationError{ + err := BatchDeleteClusterNodesRequestValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return BatchDeleteClusterNodesRequestValidationError{ + err := BatchDeleteClusterNodesRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_BatchDeleteClusterNodesRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return BatchDeleteClusterNodesRequestValidationError{ + err := BatchDeleteClusterNodesRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for NodeIPs @@ -20142,17 +34574,42 @@ func (m *BatchDeleteClusterNodesRequest) Validate() error { // no validation rules for VirtualNodeIDs if l := utf8.RuneCountInString(m.GetOperator()); l < 2 || l > 20 { - return BatchDeleteClusterNodesRequestValidationError{ + err := BatchDeleteClusterNodesRequestValidationError{ field: "Operator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for DeleteMode + if len(errors) > 0 { + return BatchDeleteClusterNodesRequestMultiError(errors) + } + return nil } +// BatchDeleteClusterNodesRequestMultiError is an error wrapping multiple +// validation errors returned by BatchDeleteClusterNodesRequest.ValidateAll() +// if the designated constraints aren't met. +type BatchDeleteClusterNodesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m BatchDeleteClusterNodesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m BatchDeleteClusterNodesRequestMultiError) AllErrors() []error { return m } + // BatchDeleteClusterNodesRequestValidationError is the validation error // returned by BatchDeleteClusterNodesRequest.Validate if the designated // constraints aren't met. @@ -20214,12 +34671,26 @@ var _BatchDeleteClusterNodesRequest_ClusterID_Pattern = regexp.MustCompile("^[0- // Validate checks the field values on BatchDeleteClusterNodesResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *BatchDeleteClusterNodesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on BatchDeleteClusterNodesResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// BatchDeleteClusterNodesResponseMultiError, or nil if none found. +func (m *BatchDeleteClusterNodesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *BatchDeleteClusterNodesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -20229,7 +34700,26 @@ func (m *BatchDeleteClusterNodesResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, BatchDeleteClusterNodesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, BatchDeleteClusterNodesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return BatchDeleteClusterNodesResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -20241,7 +34731,26 @@ func (m *BatchDeleteClusterNodesResponse) Validate() error { } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, BatchDeleteClusterNodesResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, BatchDeleteClusterNodesResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return BatchDeleteClusterNodesResponseValidationError{ field: "WebAnnotations", @@ -20251,9 +34760,30 @@ func (m *BatchDeleteClusterNodesResponse) Validate() error { } } + if len(errors) > 0 { + return BatchDeleteClusterNodesResponseMultiError(errors) + } + return nil } +// BatchDeleteClusterNodesResponseMultiError is an error wrapping multiple +// validation errors returned by BatchDeleteClusterNodesResponse.ValidateAll() +// if the designated constraints aren't met. +type BatchDeleteClusterNodesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m BatchDeleteClusterNodesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m BatchDeleteClusterNodesResponseMultiError) AllErrors() []error { return m } + // BatchDeleteClusterNodesResponseValidationError is the validation error // returned by BatchDeleteClusterNodesResponse.Validate if the designated // constraints aren't met. @@ -20312,13 +34842,27 @@ var _ interface { } = BatchDeleteClusterNodesResponseValidationError{} // Validate checks the field values on BatchNodesStatus with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *BatchNodesStatus) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on BatchNodesStatus with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// BatchNodesStatusMultiError, or nil if none found. +func (m *BatchNodesStatus) ValidateAll() error { + return m.validate(true) +} + +func (m *BatchNodesStatus) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Success // no validation rules for Message @@ -20329,9 +34873,30 @@ func (m *BatchNodesStatus) Validate() error { // no validation rules for NodeGroupType + if len(errors) > 0 { + return BatchNodesStatusMultiError(errors) + } + return nil } +// BatchNodesStatusMultiError is an error wrapping multiple validation errors +// returned by BatchNodesStatus.ValidateAll() if the designated constraints +// aren't met. +type BatchNodesStatusMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m BatchNodesStatusMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m BatchNodesStatusMultiError) AllErrors() []error { return m } + // BatchNodesStatusValidationError is the validation error returned by // BatchNodesStatus.Validate if the designated constraints aren't met. type BatchNodesStatusValidationError struct { @@ -20388,38 +34953,68 @@ var _ interface { // Validate checks the field values on DeleteNodesRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteNodesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteNodesRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteNodesRequestMultiError, or nil if none found. +func (m *DeleteNodesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteNodesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return DeleteNodesRequestValidationError{ + err := DeleteNodesRequestValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return DeleteNodesRequestValidationError{ + err := DeleteNodesRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteNodesRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return DeleteNodesRequestValidationError{ + err := DeleteNodesRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetNodes()) < 1 { - return DeleteNodesRequestValidationError{ + err := DeleteNodesRequestValidationError{ field: "Nodes", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for DeleteMode @@ -20427,10 +35022,14 @@ func (m *DeleteNodesRequest) Validate() error { // no validation rules for IsForce if l := utf8.RuneCountInString(m.GetOperator()); l < 2 || l > 20 { - return DeleteNodesRequestValidationError{ + err := DeleteNodesRequestValidationError{ field: "Operator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for OnlyDeleteInfo @@ -20441,9 +35040,30 @@ func (m *DeleteNodesRequest) Validate() error { // no validation rules for IsExternalNode + if len(errors) > 0 { + return DeleteNodesRequestMultiError(errors) + } + return nil } +// DeleteNodesRequestMultiError is an error wrapping multiple validation errors +// returned by DeleteNodesRequest.ValidateAll() if the designated constraints +// aren't met. +type DeleteNodesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteNodesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteNodesRequestMultiError) AllErrors() []error { return m } + // DeleteNodesRequestValidationError is the validation error returned by // DeleteNodesRequest.Validate if the designated constraints aren't met. type DeleteNodesRequestValidationError struct { @@ -20504,19 +35124,52 @@ var _DeleteNodesRequest_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$" // Validate checks the field values on DeleteNodesResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteNodesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteNodesResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteNodesResponseMultiError, or nil if none found. +func (m *DeleteNodesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteNodesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteNodesResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteNodesResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodesResponseValidationError{ field: "Data", @@ -20526,7 +35179,26 @@ func (m *DeleteNodesResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteNodesResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteNodesResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNodesResponseValidationError{ field: "WebAnnotations", @@ -20536,9 +35208,30 @@ func (m *DeleteNodesResponse) Validate() error { } } + if len(errors) > 0 { + return DeleteNodesResponseMultiError(errors) + } + return nil } +// DeleteNodesResponseMultiError is an error wrapping multiple validation +// errors returned by DeleteNodesResponse.ValidateAll() if the designated +// constraints aren't met. +type DeleteNodesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteNodesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteNodesResponseMultiError) AllErrors() []error { return m } + // DeleteNodesResponseValidationError is the validation error returned by // DeleteNodesResponse.Validate if the designated constraints aren't met. type DeleteNodesResponseValidationError struct { @@ -20597,38 +35290,68 @@ var _ interface { // Validate checks the field values on MoveNodesToGroupRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *MoveNodesToGroupRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MoveNodesToGroupRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// MoveNodesToGroupRequestMultiError, or nil if none found. +func (m *MoveNodesToGroupRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *MoveNodesToGroupRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 5 || l > 100 { - return MoveNodesToGroupRequestValidationError{ + err := MoveNodesToGroupRequestValidationError{ field: "ClusterID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return MoveNodesToGroupRequestValidationError{ + err := MoveNodesToGroupRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_MoveNodesToGroupRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return MoveNodesToGroupRequestValidationError{ + err := MoveNodesToGroupRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := len(m.GetNodes()); l < 1 || l > 100 { - return MoveNodesToGroupRequestValidationError{ + err := MoveNodesToGroupRequestValidationError{ field: "Nodes", reason: "value must contain between 1 and 100 items, inclusive", } + if !all { + return err + } + errors = append(errors, err) } _MoveNodesToGroupRequest_Nodes_Unique := make(map[string]struct{}, len(m.GetNodes())) @@ -20637,10 +35360,14 @@ func (m *MoveNodesToGroupRequest) Validate() error { _, _ = idx, item if _, exists := _MoveNodesToGroupRequest_Nodes_Unique[item]; exists { - return MoveNodesToGroupRequestValidationError{ + err := MoveNodesToGroupRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), reason: "repeated value must contain unique items", } + if !all { + return err + } + errors = append(errors, err) } else { _MoveNodesToGroupRequest_Nodes_Unique[item] = struct{}{} } @@ -20649,22 +35376,51 @@ func (m *MoveNodesToGroupRequest) Validate() error { } if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - return MoveNodesToGroupRequestValidationError{ + err := MoveNodesToGroupRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_MoveNodesToGroupRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return MoveNodesToGroupRequestValidationError{ + err := MoveNodesToGroupRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return MoveNodesToGroupRequestMultiError(errors) } return nil } +// MoveNodesToGroupRequestMultiError is an error wrapping multiple validation +// errors returned by MoveNodesToGroupRequest.ValidateAll() if the designated +// constraints aren't met. +type MoveNodesToGroupRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MoveNodesToGroupRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MoveNodesToGroupRequestMultiError) AllErrors() []error { return m } + // MoveNodesToGroupRequestValidationError is the validation error returned by // MoveNodesToGroupRequest.Validate if the designated constraints aren't met. type MoveNodesToGroupRequestValidationError struct { @@ -20727,19 +35483,52 @@ var _MoveNodesToGroupRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0-9a-zA // Validate checks the field values on MoveNodesToGroupResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *MoveNodesToGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MoveNodesToGroupResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// MoveNodesToGroupResponseMultiError, or nil if none found. +func (m *MoveNodesToGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *MoveNodesToGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, MoveNodesToGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, MoveNodesToGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return MoveNodesToGroupResponseValidationError{ field: "Data", @@ -20749,7 +35538,26 @@ func (m *MoveNodesToGroupResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, MoveNodesToGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, MoveNodesToGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return MoveNodesToGroupResponseValidationError{ field: "WebAnnotations", @@ -20759,9 +35567,30 @@ func (m *MoveNodesToGroupResponse) Validate() error { } } + if len(errors) > 0 { + return MoveNodesToGroupResponseMultiError(errors) + } + return nil } +// MoveNodesToGroupResponseMultiError is an error wrapping multiple validation +// errors returned by MoveNodesToGroupResponse.ValidateAll() if the designated +// constraints aren't met. +type MoveNodesToGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MoveNodesToGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MoveNodesToGroupResponseMultiError) AllErrors() []error { return m } + // MoveNodesToGroupResponseValidationError is the validation error returned by // MoveNodesToGroupResponse.Validate if the designated constraints aren't met. type MoveNodesToGroupResponseValidationError struct { @@ -20820,38 +35649,68 @@ var _ interface { // Validate checks the field values on RemoveNodesFromGroupRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *RemoveNodesFromGroupRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RemoveNodesFromGroupRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RemoveNodesFromGroupRequestMultiError, or nil if none found. +func (m *RemoveNodesFromGroupRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *RemoveNodesFromGroupRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 5 || l > 100 { - return RemoveNodesFromGroupRequestValidationError{ + err := RemoveNodesFromGroupRequestValidationError{ field: "ClusterID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return RemoveNodesFromGroupRequestValidationError{ + err := RemoveNodesFromGroupRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_RemoveNodesFromGroupRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return RemoveNodesFromGroupRequestValidationError{ + err := RemoveNodesFromGroupRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := len(m.GetNodes()); l < 1 || l > 100 { - return RemoveNodesFromGroupRequestValidationError{ + err := RemoveNodesFromGroupRequestValidationError{ field: "Nodes", reason: "value must contain between 1 and 100 items, inclusive", } + if !all { + return err + } + errors = append(errors, err) } _RemoveNodesFromGroupRequest_Nodes_Unique := make(map[string]struct{}, len(m.GetNodes())) @@ -20860,10 +35719,14 @@ func (m *RemoveNodesFromGroupRequest) Validate() error { _, _ = idx, item if _, exists := _RemoveNodesFromGroupRequest_Nodes_Unique[item]; exists { - return RemoveNodesFromGroupRequestValidationError{ + err := RemoveNodesFromGroupRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), reason: "repeated value must contain unique items", } + if !all { + return err + } + errors = append(errors, err) } else { _RemoveNodesFromGroupRequest_Nodes_Unique[item] = struct{}{} } @@ -20872,22 +35735,51 @@ func (m *RemoveNodesFromGroupRequest) Validate() error { } if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - return RemoveNodesFromGroupRequestValidationError{ + err := RemoveNodesFromGroupRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_RemoveNodesFromGroupRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return RemoveNodesFromGroupRequestValidationError{ + err := RemoveNodesFromGroupRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return RemoveNodesFromGroupRequestMultiError(errors) } return nil } +// RemoveNodesFromGroupRequestMultiError is an error wrapping multiple +// validation errors returned by RemoveNodesFromGroupRequest.ValidateAll() if +// the designated constraints aren't met. +type RemoveNodesFromGroupRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RemoveNodesFromGroupRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RemoveNodesFromGroupRequestMultiError) AllErrors() []error { return m } + // RemoveNodesFromGroupRequestValidationError is the validation error returned // by RemoveNodesFromGroupRequest.Validate if the designated constraints // aren't met. @@ -20951,19 +35843,52 @@ var _RemoveNodesFromGroupRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0-9 // Validate checks the field values on RemoveNodesFromGroupResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *RemoveNodesFromGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RemoveNodesFromGroupResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RemoveNodesFromGroupResponseMultiError, or nil if none found. +func (m *RemoveNodesFromGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *RemoveNodesFromGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, RemoveNodesFromGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, RemoveNodesFromGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return RemoveNodesFromGroupResponseValidationError{ field: "Data", @@ -20973,7 +35898,26 @@ func (m *RemoveNodesFromGroupResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, RemoveNodesFromGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, RemoveNodesFromGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return RemoveNodesFromGroupResponseValidationError{ field: "WebAnnotations", @@ -20983,9 +35927,30 @@ func (m *RemoveNodesFromGroupResponse) Validate() error { } } + if len(errors) > 0 { + return RemoveNodesFromGroupResponseMultiError(errors) + } + return nil } +// RemoveNodesFromGroupResponseMultiError is an error wrapping multiple +// validation errors returned by RemoveNodesFromGroupResponse.ValidateAll() if +// the designated constraints aren't met. +type RemoveNodesFromGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RemoveNodesFromGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RemoveNodesFromGroupResponseMultiError) AllErrors() []error { return m } + // RemoveNodesFromGroupResponseValidationError is the validation error returned // by RemoveNodesFromGroupResponse.Validate if the designated constraints // aren't met. @@ -21045,38 +36010,68 @@ var _ interface { // Validate checks the field values on CleanNodesInGroupRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CleanNodesInGroupRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CleanNodesInGroupRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CleanNodesInGroupRequestMultiError, or nil if none found. +func (m *CleanNodesInGroupRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CleanNodesInGroupRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 5 || l > 100 { - return CleanNodesInGroupRequestValidationError{ + err := CleanNodesInGroupRequestValidationError{ field: "ClusterID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return CleanNodesInGroupRequestValidationError{ + err := CleanNodesInGroupRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_CleanNodesInGroupRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return CleanNodesInGroupRequestValidationError{ + err := CleanNodesInGroupRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := len(m.GetNodes()); l < 1 || l > 100 { - return CleanNodesInGroupRequestValidationError{ + err := CleanNodesInGroupRequestValidationError{ field: "Nodes", reason: "value must contain between 1 and 100 items, inclusive", } + if !all { + return err + } + errors = append(errors, err) } _CleanNodesInGroupRequest_Nodes_Unique := make(map[string]struct{}, len(m.GetNodes())) @@ -21085,10 +36080,14 @@ func (m *CleanNodesInGroupRequest) Validate() error { _, _ = idx, item if _, exists := _CleanNodesInGroupRequest_Nodes_Unique[item]; exists { - return CleanNodesInGroupRequestValidationError{ + err := CleanNodesInGroupRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), reason: "repeated value must contain unique items", } + if !all { + return err + } + errors = append(errors, err) } else { _CleanNodesInGroupRequest_Nodes_Unique[item] = struct{}{} } @@ -21097,29 +36096,62 @@ func (m *CleanNodesInGroupRequest) Validate() error { } if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - return CleanNodesInGroupRequestValidationError{ + err := CleanNodesInGroupRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CleanNodesInGroupRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return CleanNodesInGroupRequestValidationError{ + err := CleanNodesInGroupRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetOperator()); l < 2 || l > 20 { - return CleanNodesInGroupRequestValidationError{ + err := CleanNodesInGroupRequestValidationError{ field: "Operator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return CleanNodesInGroupRequestMultiError(errors) } return nil } +// CleanNodesInGroupRequestMultiError is an error wrapping multiple validation +// errors returned by CleanNodesInGroupRequest.ValidateAll() if the designated +// constraints aren't met. +type CleanNodesInGroupRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CleanNodesInGroupRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CleanNodesInGroupRequestMultiError) AllErrors() []error { return m } + // CleanNodesInGroupRequestValidationError is the validation error returned by // CleanNodesInGroupRequest.Validate if the designated constraints aren't met. type CleanNodesInGroupRequestValidationError struct { @@ -21182,19 +36214,52 @@ var _CleanNodesInGroupRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0-9a-z // Validate checks the field values on CleanNodesInGroupResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CleanNodesInGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CleanNodesInGroupResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CleanNodesInGroupResponseMultiError, or nil if none found. +func (m *CleanNodesInGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CleanNodesInGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CleanNodesInGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CleanNodesInGroupResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CleanNodesInGroupResponseValidationError{ field: "Data", @@ -21204,7 +36269,26 @@ func (m *CleanNodesInGroupResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CleanNodesInGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CleanNodesInGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CleanNodesInGroupResponseValidationError{ field: "WebAnnotations", @@ -21214,9 +36298,30 @@ func (m *CleanNodesInGroupResponse) Validate() error { } } + if len(errors) > 0 { + return CleanNodesInGroupResponseMultiError(errors) + } + return nil } +// CleanNodesInGroupResponseMultiError is an error wrapping multiple validation +// errors returned by CleanNodesInGroupResponse.ValidateAll() if the +// designated constraints aren't met. +type CleanNodesInGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CleanNodesInGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CleanNodesInGroupResponseMultiError) AllErrors() []error { return m } + // CleanNodesInGroupResponseValidationError is the validation error returned by // CleanNodesInGroupResponse.Validate if the designated constraints aren't met. type CleanNodesInGroupResponseValidationError struct { @@ -21275,64 +36380,127 @@ var _ interface { // Validate checks the field values on CleanNodesInGroupV2Request with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CleanNodesInGroupV2Request) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CleanNodesInGroupV2Request with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CleanNodesInGroupV2RequestMultiError, or nil if none found. +func (m *CleanNodesInGroupV2Request) ValidateAll() error { + return m.validate(true) +} + +func (m *CleanNodesInGroupV2Request) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 5 || l > 100 { - return CleanNodesInGroupV2RequestValidationError{ + err := CleanNodesInGroupV2RequestValidationError{ field: "ClusterID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return CleanNodesInGroupV2RequestValidationError{ + err := CleanNodesInGroupV2RequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_CleanNodesInGroupV2Request_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return CleanNodesInGroupV2RequestValidationError{ + err := CleanNodesInGroupV2RequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetNodes()) < 1 { - return CleanNodesInGroupV2RequestValidationError{ + err := CleanNodesInGroupV2RequestValidationError{ field: "Nodes", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - return CleanNodesInGroupV2RequestValidationError{ + err := CleanNodesInGroupV2RequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CleanNodesInGroupV2Request_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return CleanNodesInGroupV2RequestValidationError{ + err := CleanNodesInGroupV2RequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetOperator()); l < 2 || l > 20 { - return CleanNodesInGroupV2RequestValidationError{ + err := CleanNodesInGroupV2RequestValidationError{ field: "Operator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return CleanNodesInGroupV2RequestMultiError(errors) } return nil } +// CleanNodesInGroupV2RequestMultiError is an error wrapping multiple +// validation errors returned by CleanNodesInGroupV2Request.ValidateAll() if +// the designated constraints aren't met. +type CleanNodesInGroupV2RequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CleanNodesInGroupV2RequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CleanNodesInGroupV2RequestMultiError) AllErrors() []error { return m } + // CleanNodesInGroupV2RequestValidationError is the validation error returned // by CleanNodesInGroupV2Request.Validate if the designated constraints aren't met. type CleanNodesInGroupV2RequestValidationError struct { @@ -21395,19 +36563,52 @@ var _CleanNodesInGroupV2Request_NodeGroupID_Pattern = regexp.MustCompile("^[0-9a // Validate checks the field values on CleanNodesInGroupV2Response with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CleanNodesInGroupV2Response) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CleanNodesInGroupV2Response with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CleanNodesInGroupV2ResponseMultiError, or nil if none found. +func (m *CleanNodesInGroupV2Response) ValidateAll() error { + return m.validate(true) +} + +func (m *CleanNodesInGroupV2Response) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CleanNodesInGroupV2ResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CleanNodesInGroupV2ResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CleanNodesInGroupV2ResponseValidationError{ field: "Data", @@ -21417,7 +36618,26 @@ func (m *CleanNodesInGroupV2Response) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CleanNodesInGroupV2ResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CleanNodesInGroupV2ResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CleanNodesInGroupV2ResponseValidationError{ field: "WebAnnotations", @@ -21427,9 +36647,30 @@ func (m *CleanNodesInGroupV2Response) Validate() error { } } + if len(errors) > 0 { + return CleanNodesInGroupV2ResponseMultiError(errors) + } + return nil } +// CleanNodesInGroupV2ResponseMultiError is an error wrapping multiple +// validation errors returned by CleanNodesInGroupV2Response.ValidateAll() if +// the designated constraints aren't met. +type CleanNodesInGroupV2ResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CleanNodesInGroupV2ResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CleanNodesInGroupV2ResponseMultiError) AllErrors() []error { return m } + // CleanNodesInGroupV2ResponseValidationError is the validation error returned // by CleanNodesInGroupV2Response.Validate if the designated constraints // aren't met. @@ -21489,31 +36730,74 @@ var _ interface { // Validate checks the field values on ListNodesInGroupV2Request with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNodesInGroupV2Request) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNodesInGroupV2Request with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNodesInGroupV2RequestMultiError, or nil if none found. +func (m *ListNodesInGroupV2Request) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNodesInGroupV2Request) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 2 || l > 20 { - return ListNodesInGroupV2RequestValidationError{ + err := ListNodesInGroupV2RequestValidationError{ field: "NodeGroupID", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_ListNodesInGroupV2Request_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return ListNodesInGroupV2RequestValidationError{ + err := ListNodesInGroupV2RequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Output + if len(errors) > 0 { + return ListNodesInGroupV2RequestMultiError(errors) + } + return nil } +// ListNodesInGroupV2RequestMultiError is an error wrapping multiple validation +// errors returned by ListNodesInGroupV2Request.ValidateAll() if the +// designated constraints aren't met. +type ListNodesInGroupV2RequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNodesInGroupV2RequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNodesInGroupV2RequestMultiError) AllErrors() []error { return m } + // ListNodesInGroupV2RequestValidationError is the validation error returned by // ListNodesInGroupV2Request.Validate if the designated constraints aren't met. type ListNodesInGroupV2RequestValidationError struct { @@ -21574,12 +36858,26 @@ var _ListNodesInGroupV2Request_NodeGroupID_Pattern = regexp.MustCompile("^[0-9a- // Validate checks the field values on ListNodesInGroupV2Response with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNodesInGroupV2Response) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNodesInGroupV2Response with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNodesInGroupV2ResponseMultiError, or nil if none found. +func (m *ListNodesInGroupV2Response) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNodesInGroupV2Response) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -21589,7 +36887,26 @@ func (m *ListNodesInGroupV2Response) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListNodesInGroupV2ResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListNodesInGroupV2ResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodesInGroupV2ResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -21601,7 +36918,26 @@ func (m *ListNodesInGroupV2Response) Validate() error { } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListNodesInGroupV2ResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListNodesInGroupV2ResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodesInGroupV2ResponseValidationError{ field: "WebAnnotations", @@ -21611,9 +36947,30 @@ func (m *ListNodesInGroupV2Response) Validate() error { } } + if len(errors) > 0 { + return ListNodesInGroupV2ResponseMultiError(errors) + } + return nil } +// ListNodesInGroupV2ResponseMultiError is an error wrapping multiple +// validation errors returned by ListNodesInGroupV2Response.ValidateAll() if +// the designated constraints aren't met. +type ListNodesInGroupV2ResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNodesInGroupV2ResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNodesInGroupV2ResponseMultiError) AllErrors() []error { return m } + // ListNodesInGroupV2ResponseValidationError is the validation error returned // by ListNodesInGroupV2Response.Validate if the designated constraints aren't met. type ListNodesInGroupV2ResponseValidationError struct { @@ -21671,13 +37028,27 @@ var _ interface { } = ListNodesInGroupV2ResponseValidationError{} // Validate checks the field values on NodeGroupNode with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeGroupNode) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeGroupNode with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeGroupNodeMultiError, or +// nil if none found. +func (m *NodeGroupNode) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeGroupNode) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeID // no validation rules for InnerIP @@ -21714,9 +37085,30 @@ func (m *NodeGroupNode) Validate() error { // no validation rules for NodeName + if len(errors) > 0 { + return NodeGroupNodeMultiError(errors) + } + return nil } +// NodeGroupNodeMultiError is an error wrapping multiple validation errors +// returned by NodeGroupNode.ValidateAll() if the designated constraints +// aren't met. +type NodeGroupNodeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeGroupNodeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeGroupNodeMultiError) AllErrors() []error { return m } + // NodeGroupNodeValidationError is the validation error returned by // NodeGroupNode.Validate if the designated constraints aren't met. type NodeGroupNodeValidationError struct { @@ -21773,12 +37165,26 @@ var _ interface { // Validate checks the field values on ListNodesInGroupResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNodesInGroupResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNodesInGroupResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNodesInGroupResponseMultiError, or nil if none found. +func (m *ListNodesInGroupResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNodesInGroupResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -21788,7 +37194,26 @@ func (m *ListNodesInGroupResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListNodesInGroupResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListNodesInGroupResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodesInGroupResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -21800,7 +37225,26 @@ func (m *ListNodesInGroupResponse) Validate() error { } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListNodesInGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListNodesInGroupResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNodesInGroupResponseValidationError{ field: "WebAnnotations", @@ -21810,9 +37254,30 @@ func (m *ListNodesInGroupResponse) Validate() error { } } + if len(errors) > 0 { + return ListNodesInGroupResponseMultiError(errors) + } + return nil } +// ListNodesInGroupResponseMultiError is an error wrapping multiple validation +// errors returned by ListNodesInGroupResponse.ValidateAll() if the designated +// constraints aren't met. +type ListNodesInGroupResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNodesInGroupResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNodesInGroupResponseMultiError) AllErrors() []error { return m } + // ListNodesInGroupResponseValidationError is the validation error returned by // ListNodesInGroupResponse.Validate if the designated constraints aren't met. type ListNodesInGroupResponseValidationError struct { @@ -21871,50 +37336,105 @@ var _ interface { // Validate checks the field values on UpdateGroupMinMaxSizeRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateGroupMinMaxSizeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateGroupMinMaxSizeRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateGroupMinMaxSizeRequestMultiError, or nil if none found. +func (m *UpdateGroupMinMaxSizeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateGroupMinMaxSizeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 5 || l > 100 { - return UpdateGroupMinMaxSizeRequestValidationError{ + err := UpdateGroupMinMaxSizeRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateGroupMinMaxSizeRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return UpdateGroupMinMaxSizeRequestValidationError{ + err := UpdateGroupMinMaxSizeRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if m.GetMinSize() < 0 { - return UpdateGroupMinMaxSizeRequestValidationError{ + err := UpdateGroupMinMaxSizeRequestValidationError{ field: "MinSize", reason: "value must be greater than or equal to 0", } + if !all { + return err + } + errors = append(errors, err) } if m.GetMaxSize() < 0 { - return UpdateGroupMinMaxSizeRequestValidationError{ + err := UpdateGroupMinMaxSizeRequestValidationError{ field: "MaxSize", reason: "value must be greater than or equal to 0", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetOperator()); l < 1 || l > 100 { - return UpdateGroupMinMaxSizeRequestValidationError{ + err := UpdateGroupMinMaxSizeRequestValidationError{ field: "Operator", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return UpdateGroupMinMaxSizeRequestMultiError(errors) } return nil } +// UpdateGroupMinMaxSizeRequestMultiError is an error wrapping multiple +// validation errors returned by UpdateGroupMinMaxSizeRequest.ValidateAll() if +// the designated constraints aren't met. +type UpdateGroupMinMaxSizeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateGroupMinMaxSizeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateGroupMinMaxSizeRequestMultiError) AllErrors() []error { return m } + // UpdateGroupMinMaxSizeRequestValidationError is the validation error returned // by UpdateGroupMinMaxSizeRequest.Validate if the designated constraints // aren't met. @@ -21976,19 +37496,52 @@ var _UpdateGroupMinMaxSizeRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0- // Validate checks the field values on UpdateGroupMinMaxSizeResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateGroupMinMaxSizeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateGroupMinMaxSizeResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateGroupMinMaxSizeResponseMultiError, or nil if none found. +func (m *UpdateGroupMinMaxSizeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateGroupMinMaxSizeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateGroupMinMaxSizeResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateGroupMinMaxSizeResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateGroupMinMaxSizeResponseValidationError{ field: "WebAnnotations", @@ -21998,9 +37551,30 @@ func (m *UpdateGroupMinMaxSizeResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateGroupMinMaxSizeResponseMultiError(errors) + } + return nil } +// UpdateGroupMinMaxSizeResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateGroupMinMaxSizeResponse.ValidateAll() +// if the designated constraints aren't met. +type UpdateGroupMinMaxSizeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateGroupMinMaxSizeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateGroupMinMaxSizeResponseMultiError) AllErrors() []error { return m } + // UpdateGroupMinMaxSizeResponseValidationError is the validation error // returned by UpdateGroupMinMaxSizeResponse.Validate if the designated // constraints aren't met. @@ -22060,30 +37634,71 @@ var _ interface { // Validate checks the field values on UpdateGroupAsTimeRangeRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateGroupAsTimeRangeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateGroupAsTimeRangeRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateGroupAsTimeRangeRequestMultiError, or nil if none found. +func (m *UpdateGroupAsTimeRangeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateGroupAsTimeRangeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 5 || l > 100 { - return UpdateGroupAsTimeRangeRequestValidationError{ + err := UpdateGroupAsTimeRangeRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateGroupAsTimeRangeRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return UpdateGroupAsTimeRangeRequestValidationError{ + err := UpdateGroupAsTimeRangeRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } for idx, item := range m.GetTimeRanges() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateGroupAsTimeRangeRequestValidationError{ + field: fmt.Sprintf("TimeRanges[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateGroupAsTimeRangeRequestValidationError{ + field: fmt.Sprintf("TimeRanges[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateGroupAsTimeRangeRequestValidationError{ field: fmt.Sprintf("TimeRanges[%v]", idx), @@ -22097,9 +37712,30 @@ func (m *UpdateGroupAsTimeRangeRequest) Validate() error { // no validation rules for Operator + if len(errors) > 0 { + return UpdateGroupAsTimeRangeRequestMultiError(errors) + } + return nil } +// UpdateGroupAsTimeRangeRequestMultiError is an error wrapping multiple +// validation errors returned by UpdateGroupAsTimeRangeRequest.ValidateAll() +// if the designated constraints aren't met. +type UpdateGroupAsTimeRangeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateGroupAsTimeRangeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateGroupAsTimeRangeRequestMultiError) AllErrors() []error { return m } + // UpdateGroupAsTimeRangeRequestValidationError is the validation error // returned by UpdateGroupAsTimeRangeRequest.Validate if the designated // constraints aren't met. @@ -22161,19 +37797,52 @@ var _UpdateGroupAsTimeRangeRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0 // Validate checks the field values on UpdateGroupAsTimeRangeResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateGroupAsTimeRangeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateGroupAsTimeRangeResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateGroupAsTimeRangeResponseMultiError, or nil if none found. +func (m *UpdateGroupAsTimeRangeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateGroupAsTimeRangeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateGroupAsTimeRangeResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateGroupAsTimeRangeResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateGroupAsTimeRangeResponseValidationError{ field: "WebAnnotations", @@ -22183,9 +37852,30 @@ func (m *UpdateGroupAsTimeRangeResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateGroupAsTimeRangeResponseMultiError(errors) + } + return nil } +// UpdateGroupAsTimeRangeResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateGroupAsTimeRangeResponse.ValidateAll() +// if the designated constraints aren't met. +type UpdateGroupAsTimeRangeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateGroupAsTimeRangeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateGroupAsTimeRangeResponseMultiError) AllErrors() []error { return m } + // UpdateGroupAsTimeRangeResponseValidationError is the validation error // returned by UpdateGroupAsTimeRangeResponse.Validate if the designated // constraints aren't met. @@ -22245,29 +37935,74 @@ var _ interface { // Validate checks the field values on TransNodeGroupToNodeTemplateRequest with // the rules defined in the proto definition for this message. If any rules -// are violated, an error is returned. +// are violated, the first error encountered is returned, or nil if there are +// no violations. func (m *TransNodeGroupToNodeTemplateRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TransNodeGroupToNodeTemplateRequest +// with the rules defined in the proto definition for this message. If any +// rules are violated, the result is a list of violation errors wrapped in +// TransNodeGroupToNodeTemplateRequestMultiError, or nil if none found. +func (m *TransNodeGroupToNodeTemplateRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *TransNodeGroupToNodeTemplateRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 1 || l > 100 { - return TransNodeGroupToNodeTemplateRequestValidationError{ + err := TransNodeGroupToNodeTemplateRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_TransNodeGroupToNodeTemplateRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return TransNodeGroupToNodeTemplateRequestValidationError{ + err := TransNodeGroupToNodeTemplateRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return TransNodeGroupToNodeTemplateRequestMultiError(errors) } return nil } +// TransNodeGroupToNodeTemplateRequestMultiError is an error wrapping multiple +// validation errors returned by +// TransNodeGroupToNodeTemplateRequest.ValidateAll() if the designated +// constraints aren't met. +type TransNodeGroupToNodeTemplateRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TransNodeGroupToNodeTemplateRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TransNodeGroupToNodeTemplateRequestMultiError) AllErrors() []error { return m } + // TransNodeGroupToNodeTemplateRequestValidationError is the validation error // returned by TransNodeGroupToNodeTemplateRequest.Validate if the designated // constraints aren't met. @@ -22329,19 +38064,53 @@ var _TransNodeGroupToNodeTemplateRequest_NodeGroupID_Pattern = regexp.MustCompil // Validate checks the field values on TransNodeGroupToNodeTemplateResponse // with the rules defined in the proto definition for this message. If any -// rules are violated, an error is returned. +// rules are violated, the first error encountered is returned, or nil if +// there are no violations. func (m *TransNodeGroupToNodeTemplateResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TransNodeGroupToNodeTemplateResponse +// with the rules defined in the proto definition for this message. If any +// rules are violated, the result is a list of violation errors wrapped in +// TransNodeGroupToNodeTemplateResponseMultiError, or nil if none found. +func (m *TransNodeGroupToNodeTemplateResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *TransNodeGroupToNodeTemplateResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetTemplate()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetTemplate()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, TransNodeGroupToNodeTemplateResponseValidationError{ + field: "Template", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, TransNodeGroupToNodeTemplateResponseValidationError{ + field: "Template", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTemplate()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return TransNodeGroupToNodeTemplateResponseValidationError{ field: "Template", @@ -22351,9 +38120,31 @@ func (m *TransNodeGroupToNodeTemplateResponse) Validate() error { } } + if len(errors) > 0 { + return TransNodeGroupToNodeTemplateResponseMultiError(errors) + } + return nil } +// TransNodeGroupToNodeTemplateResponseMultiError is an error wrapping multiple +// validation errors returned by +// TransNodeGroupToNodeTemplateResponse.ValidateAll() if the designated +// constraints aren't met. +type TransNodeGroupToNodeTemplateResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TransNodeGroupToNodeTemplateResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TransNodeGroupToNodeTemplateResponseMultiError) AllErrors() []error { return m } + // TransNodeGroupToNodeTemplateResponseValidationError is the validation error // returned by TransNodeGroupToNodeTemplateResponse.Validate if the designated // constraints aren't met. @@ -22413,38 +38204,85 @@ var _ interface { // Validate checks the field values on UpdateGroupDesiredSizeRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateGroupDesiredSizeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateGroupDesiredSizeRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateGroupDesiredSizeRequestMultiError, or nil if none found. +func (m *UpdateGroupDesiredSizeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateGroupDesiredSizeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 5 || l > 100 { - return UpdateGroupDesiredSizeRequestValidationError{ + err := UpdateGroupDesiredSizeRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateGroupDesiredSizeRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return UpdateGroupDesiredSizeRequestValidationError{ + err := UpdateGroupDesiredSizeRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for DesiredSize if utf8.RuneCountInString(m.GetOperator()) > 100 { - return UpdateGroupDesiredSizeRequestValidationError{ + err := UpdateGroupDesiredSizeRequestValidationError{ field: "Operator", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return UpdateGroupDesiredSizeRequestMultiError(errors) } return nil } +// UpdateGroupDesiredSizeRequestMultiError is an error wrapping multiple +// validation errors returned by UpdateGroupDesiredSizeRequest.ValidateAll() +// if the designated constraints aren't met. +type UpdateGroupDesiredSizeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateGroupDesiredSizeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateGroupDesiredSizeRequestMultiError) AllErrors() []error { return m } + // UpdateGroupDesiredSizeRequestValidationError is the validation error // returned by UpdateGroupDesiredSizeRequest.Validate if the designated // constraints aren't met. @@ -22506,19 +38344,52 @@ var _UpdateGroupDesiredSizeRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0 // Validate checks the field values on UpdateGroupDesiredSizeResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateGroupDesiredSizeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateGroupDesiredSizeResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateGroupDesiredSizeResponseMultiError, or nil if none found. +func (m *UpdateGroupDesiredSizeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateGroupDesiredSizeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateGroupDesiredSizeResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateGroupDesiredSizeResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateGroupDesiredSizeResponseValidationError{ field: "WebAnnotations", @@ -22528,9 +38399,30 @@ func (m *UpdateGroupDesiredSizeResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateGroupDesiredSizeResponseMultiError(errors) + } + return nil } +// UpdateGroupDesiredSizeResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateGroupDesiredSizeResponse.ValidateAll() +// if the designated constraints aren't met. +type UpdateGroupDesiredSizeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateGroupDesiredSizeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateGroupDesiredSizeResponseMultiError) AllErrors() []error { return m } + // UpdateGroupDesiredSizeResponseValidationError is the validation error // returned by UpdateGroupDesiredSizeResponse.Validate if the designated // constraints aren't met. @@ -22590,40 +38482,87 @@ var _ interface { // Validate checks the field values on UpdateGroupDesiredNodeRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateGroupDesiredNodeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateGroupDesiredNodeRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateGroupDesiredNodeRequestMultiError, or nil if none found. +func (m *UpdateGroupDesiredNodeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateGroupDesiredNodeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 5 || l > 100 { - return UpdateGroupDesiredNodeRequestValidationError{ + err := UpdateGroupDesiredNodeRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateGroupDesiredNodeRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return UpdateGroupDesiredNodeRequestValidationError{ + err := UpdateGroupDesiredNodeRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for DesiredNode if utf8.RuneCountInString(m.GetOperator()) > 100 { - return UpdateGroupDesiredNodeRequestValidationError{ + err := UpdateGroupDesiredNodeRequestValidationError{ field: "Operator", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Manual + if len(errors) > 0 { + return UpdateGroupDesiredNodeRequestMultiError(errors) + } + return nil } +// UpdateGroupDesiredNodeRequestMultiError is an error wrapping multiple +// validation errors returned by UpdateGroupDesiredNodeRequest.ValidateAll() +// if the designated constraints aren't met. +type UpdateGroupDesiredNodeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateGroupDesiredNodeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateGroupDesiredNodeRequestMultiError) AllErrors() []error { return m } + // UpdateGroupDesiredNodeRequestValidationError is the validation error // returned by UpdateGroupDesiredNodeRequest.Validate if the designated // constraints aren't met. @@ -22685,19 +38624,52 @@ var _UpdateGroupDesiredNodeRequest_NodeGroupID_Pattern = regexp.MustCompile("^[0 // Validate checks the field values on UpdateGroupDesiredNodeResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateGroupDesiredNodeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateGroupDesiredNodeResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateGroupDesiredNodeResponseMultiError, or nil if none found. +func (m *UpdateGroupDesiredNodeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateGroupDesiredNodeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateGroupDesiredNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateGroupDesiredNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateGroupDesiredNodeResponseValidationError{ field: "Data", @@ -22707,7 +38679,26 @@ func (m *UpdateGroupDesiredNodeResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateGroupDesiredNodeResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateGroupDesiredNodeResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateGroupDesiredNodeResponseValidationError{ field: "WebAnnotations", @@ -22717,9 +38708,30 @@ func (m *UpdateGroupDesiredNodeResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateGroupDesiredNodeResponseMultiError(errors) + } + return nil } +// UpdateGroupDesiredNodeResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateGroupDesiredNodeResponse.ValidateAll() +// if the designated constraints aren't met. +type UpdateGroupDesiredNodeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateGroupDesiredNodeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateGroupDesiredNodeResponseMultiError) AllErrors() []error { return m } + // UpdateGroupDesiredNodeResponseValidationError is the validation error // returned by UpdateGroupDesiredNodeResponse.Validate if the designated // constraints aren't met. @@ -22779,29 +38791,72 @@ var _ interface { // Validate checks the field values on EnableNodeGroupAutoScaleRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *EnableNodeGroupAutoScaleRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on EnableNodeGroupAutoScaleRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// EnableNodeGroupAutoScaleRequestMultiError, or nil if none found. +func (m *EnableNodeGroupAutoScaleRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *EnableNodeGroupAutoScaleRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 5 || l > 100 { - return EnableNodeGroupAutoScaleRequestValidationError{ + err := EnableNodeGroupAutoScaleRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_EnableNodeGroupAutoScaleRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return EnableNodeGroupAutoScaleRequestValidationError{ + err := EnableNodeGroupAutoScaleRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return EnableNodeGroupAutoScaleRequestMultiError(errors) } return nil } +// EnableNodeGroupAutoScaleRequestMultiError is an error wrapping multiple +// validation errors returned by EnableNodeGroupAutoScaleRequest.ValidateAll() +// if the designated constraints aren't met. +type EnableNodeGroupAutoScaleRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m EnableNodeGroupAutoScaleRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m EnableNodeGroupAutoScaleRequestMultiError) AllErrors() []error { return m } + // EnableNodeGroupAutoScaleRequestValidationError is the validation error // returned by EnableNodeGroupAutoScaleRequest.Validate if the designated // constraints aren't met. @@ -22863,19 +38918,53 @@ var _EnableNodeGroupAutoScaleRequest_NodeGroupID_Pattern = regexp.MustCompile("^ // Validate checks the field values on EnableNodeGroupAutoScaleResponse with // the rules defined in the proto definition for this message. If any rules -// are violated, an error is returned. +// are violated, the first error encountered is returned, or nil if there are +// no violations. func (m *EnableNodeGroupAutoScaleResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on EnableNodeGroupAutoScaleResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// EnableNodeGroupAutoScaleResponseMultiError, or nil if none found. +func (m *EnableNodeGroupAutoScaleResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *EnableNodeGroupAutoScaleResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, EnableNodeGroupAutoScaleResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, EnableNodeGroupAutoScaleResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return EnableNodeGroupAutoScaleResponseValidationError{ field: "WebAnnotations", @@ -22885,9 +38974,31 @@ func (m *EnableNodeGroupAutoScaleResponse) Validate() error { } } + if len(errors) > 0 { + return EnableNodeGroupAutoScaleResponseMultiError(errors) + } + return nil } +// EnableNodeGroupAutoScaleResponseMultiError is an error wrapping multiple +// validation errors returned by +// EnableNodeGroupAutoScaleResponse.ValidateAll() if the designated +// constraints aren't met. +type EnableNodeGroupAutoScaleResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m EnableNodeGroupAutoScaleResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m EnableNodeGroupAutoScaleResponseMultiError) AllErrors() []error { return m } + // EnableNodeGroupAutoScaleResponseValidationError is the validation error // returned by EnableNodeGroupAutoScaleResponse.Validate if the designated // constraints aren't met. @@ -22947,29 +39058,74 @@ var _ interface { // Validate checks the field values on DisableNodeGroupAutoScaleRequest with // the rules defined in the proto definition for this message. If any rules -// are violated, an error is returned. +// are violated, the first error encountered is returned, or nil if there are +// no violations. func (m *DisableNodeGroupAutoScaleRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DisableNodeGroupAutoScaleRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// DisableNodeGroupAutoScaleRequestMultiError, or nil if none found. +func (m *DisableNodeGroupAutoScaleRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DisableNodeGroupAutoScaleRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetNodeGroupID()); l < 5 || l > 100 { - return DisableNodeGroupAutoScaleRequestValidationError{ + err := DisableNodeGroupAutoScaleRequestValidationError{ field: "NodeGroupID", reason: "value length must be between 5 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_DisableNodeGroupAutoScaleRequest_NodeGroupID_Pattern.MatchString(m.GetNodeGroupID()) { - return DisableNodeGroupAutoScaleRequestValidationError{ + err := DisableNodeGroupAutoScaleRequestValidationError{ field: "NodeGroupID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return DisableNodeGroupAutoScaleRequestMultiError(errors) } return nil } +// DisableNodeGroupAutoScaleRequestMultiError is an error wrapping multiple +// validation errors returned by +// DisableNodeGroupAutoScaleRequest.ValidateAll() if the designated +// constraints aren't met. +type DisableNodeGroupAutoScaleRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DisableNodeGroupAutoScaleRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DisableNodeGroupAutoScaleRequestMultiError) AllErrors() []error { return m } + // DisableNodeGroupAutoScaleRequestValidationError is the validation error // returned by DisableNodeGroupAutoScaleRequest.Validate if the designated // constraints aren't met. @@ -23031,19 +39187,53 @@ var _DisableNodeGroupAutoScaleRequest_NodeGroupID_Pattern = regexp.MustCompile(" // Validate checks the field values on DisableNodeGroupAutoScaleResponse with // the rules defined in the proto definition for this message. If any rules -// are violated, an error is returned. +// are violated, the first error encountered is returned, or nil if there are +// no violations. func (m *DisableNodeGroupAutoScaleResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DisableNodeGroupAutoScaleResponse +// with the rules defined in the proto definition for this message. If any +// rules are violated, the result is a list of violation errors wrapped in +// DisableNodeGroupAutoScaleResponseMultiError, or nil if none found. +func (m *DisableNodeGroupAutoScaleResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DisableNodeGroupAutoScaleResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DisableNodeGroupAutoScaleResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DisableNodeGroupAutoScaleResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DisableNodeGroupAutoScaleResponseValidationError{ field: "WebAnnotations", @@ -23053,9 +39243,31 @@ func (m *DisableNodeGroupAutoScaleResponse) Validate() error { } } + if len(errors) > 0 { + return DisableNodeGroupAutoScaleResponseMultiError(errors) + } + return nil } +// DisableNodeGroupAutoScaleResponseMultiError is an error wrapping multiple +// validation errors returned by +// DisableNodeGroupAutoScaleResponse.ValidateAll() if the designated +// constraints aren't met. +type DisableNodeGroupAutoScaleResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DisableNodeGroupAutoScaleResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DisableNodeGroupAutoScaleResponseMultiError) AllErrors() []error { return m } + // DisableNodeGroupAutoScaleResponseValidationError is the validation error // returned by DisableNodeGroupAutoScaleResponse.Validate if the designated // constraints aren't met. @@ -23114,20 +39326,38 @@ var _ interface { } = DisableNodeGroupAutoScaleResponseValidationError{} // Validate checks the field values on CreateTaskRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CreateTaskRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateTaskRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateTaskRequestMultiError, or nil if none found. +func (m *CreateTaskRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateTaskRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for TaskType if _, ok := _CreateTaskRequest_Status_InLookup[m.GetStatus()]; !ok { - return CreateTaskRequestValidationError{ + err := CreateTaskRequestValidationError{ field: "Status", reason: "value must be in list [INITIALIZING RUNNING SUCCESS FAILED TIMEOUT]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Message @@ -23141,83 +39371,165 @@ func (m *CreateTaskRequest) Validate() error { // no validation rules for CurrentStep if len(m.GetStepSequence()) < 1 { - return CreateTaskRequestValidationError{ + err := CreateTaskRequestValidationError{ field: "StepSequence", reason: "value must contain at least 1 item(s)", } + if !all { + return err + } + errors = append(errors, err) } if l := len(m.GetSteps()); l < 1 || l > 20 { - return CreateTaskRequestValidationError{ + err := CreateTaskRequestValidationError{ field: "Steps", reason: "value must contain between 1 and 20 pairs, inclusive", } - } - - for key, val := range m.GetSteps() { - _ = val - - // no validation rules for Steps[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return CreateTaskRequestValidationError{ - field: fmt.Sprintf("Steps[%v]", key), - reason: "embedded message failed validation", - cause: err, + if !all { + return err + } + errors = append(errors, err) + } + + { + sorted_keys := make([]string, len(m.GetSteps())) + i := 0 + for key := range m.GetSteps() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetSteps()[key] + _ = val + + // no validation rules for Steps[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateTaskRequestValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateTaskRequestValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return CreateTaskRequestValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - return CreateTaskRequestValidationError{ + err := CreateTaskRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return CreateTaskRequestValidationError{ + err := CreateTaskRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateTaskRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return CreateTaskRequestValidationError{ + err := CreateTaskRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetProjectID()); l < 2 || l > 32 { - return CreateTaskRequestValidationError{ + err := CreateTaskRequestValidationError{ field: "ProjectID", reason: "value length must be between 2 and 32 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateTaskRequest_ProjectID_Pattern.MatchString(m.GetProjectID()) { - return CreateTaskRequestValidationError{ + err := CreateTaskRequestValidationError{ field: "ProjectID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 20 { - return CreateTaskRequestValidationError{ + err := CreateTaskRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for LastUpdate + if len(errors) > 0 { + return CreateTaskRequestMultiError(errors) + } + return nil } +// CreateTaskRequestMultiError is an error wrapping multiple validation errors +// returned by CreateTaskRequest.ValidateAll() if the designated constraints +// aren't met. +type CreateTaskRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateTaskRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateTaskRequestMultiError) AllErrors() []error { return m } + // CreateTaskRequestValidationError is the validation error returned by // CreateTaskRequest.Validate if the designated constraints aren't met. type CreateTaskRequestValidationError struct { @@ -23288,19 +39600,52 @@ var _CreateTaskRequest_ProjectID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on CreateTaskResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateTaskResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateTaskResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateTaskResponseMultiError, or nil if none found. +func (m *CreateTaskResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateTaskResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateTaskResponseValidationError{ field: "Data", @@ -23310,9 +39655,30 @@ func (m *CreateTaskResponse) Validate() error { } } + if len(errors) > 0 { + return CreateTaskResponseMultiError(errors) + } + return nil } +// CreateTaskResponseMultiError is an error wrapping multiple validation errors +// returned by CreateTaskResponse.ValidateAll() if the designated constraints +// aren't met. +type CreateTaskResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateTaskResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateTaskResponseMultiError) AllErrors() []error { return m } + // CreateTaskResponseValidationError is the validation error returned by // CreateTaskResponse.Validate if the designated constraints aren't met. type CreateTaskResponseValidationError struct { @@ -23370,37 +39736,84 @@ var _ interface { } = CreateTaskResponseValidationError{} // Validate checks the field values on RetryTaskRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *RetryTaskRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RetryTaskRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RetryTaskRequestMultiError, or nil if none found. +func (m *RetryTaskRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *RetryTaskRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetTaskID()); l < 2 || l > 1024 { - return RetryTaskRequestValidationError{ + err := RetryTaskRequestValidationError{ field: "TaskID", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_RetryTaskRequest_TaskID_Pattern.MatchString(m.GetTaskID()) { - return RetryTaskRequestValidationError{ + err := RetryTaskRequestValidationError{ field: "TaskID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 1024 { - return RetryTaskRequestValidationError{ + err := RetryTaskRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return RetryTaskRequestMultiError(errors) } return nil } +// RetryTaskRequestMultiError is an error wrapping multiple validation errors +// returned by RetryTaskRequest.ValidateAll() if the designated constraints +// aren't met. +type RetryTaskRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RetryTaskRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RetryTaskRequestMultiError) AllErrors() []error { return m } + // RetryTaskRequestValidationError is the validation error returned by // RetryTaskRequest.Validate if the designated constraints aren't met. type RetryTaskRequestValidationError struct { @@ -23458,20 +39871,53 @@ var _ interface { var _RetryTaskRequest_TaskID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on RetryTaskResponse with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *RetryTaskResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RetryTaskResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RetryTaskResponseMultiError, or nil if none found. +func (m *RetryTaskResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *RetryTaskResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, RetryTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, RetryTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return RetryTaskResponseValidationError{ field: "Data", @@ -23481,9 +39927,30 @@ func (m *RetryTaskResponse) Validate() error { } } + if len(errors) > 0 { + return RetryTaskResponseMultiError(errors) + } + return nil } +// RetryTaskResponseMultiError is an error wrapping multiple validation errors +// returned by RetryTaskResponse.ValidateAll() if the designated constraints +// aren't met. +type RetryTaskResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RetryTaskResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RetryTaskResponseMultiError) AllErrors() []error { return m } + // RetryTaskResponseValidationError is the validation error returned by // RetryTaskResponse.Validate if the designated constraints aren't met. type RetryTaskResponseValidationError struct { @@ -23541,37 +40008,84 @@ var _ interface { } = RetryTaskResponseValidationError{} // Validate checks the field values on SkipTaskRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *SkipTaskRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on SkipTaskRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// SkipTaskRequestMultiError, or nil if none found. +func (m *SkipTaskRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *SkipTaskRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetTaskID()); l < 2 || l > 1024 { - return SkipTaskRequestValidationError{ + err := SkipTaskRequestValidationError{ field: "TaskID", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_SkipTaskRequest_TaskID_Pattern.MatchString(m.GetTaskID()) { - return SkipTaskRequestValidationError{ + err := SkipTaskRequestValidationError{ field: "TaskID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 1024 { - return SkipTaskRequestValidationError{ + err := SkipTaskRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 1024 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return SkipTaskRequestMultiError(errors) } return nil } +// SkipTaskRequestMultiError is an error wrapping multiple validation errors +// returned by SkipTaskRequest.ValidateAll() if the designated constraints +// aren't met. +type SkipTaskRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SkipTaskRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SkipTaskRequestMultiError) AllErrors() []error { return m } + // SkipTaskRequestValidationError is the validation error returned by // SkipTaskRequest.Validate if the designated constraints aren't met. type SkipTaskRequestValidationError struct { @@ -23629,20 +40143,53 @@ var _ interface { var _SkipTaskRequest_TaskID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on SkipTaskResponse with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *SkipTaskResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on SkipTaskResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// SkipTaskResponseMultiError, or nil if none found. +func (m *SkipTaskResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *SkipTaskResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SkipTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SkipTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SkipTaskResponseValidationError{ field: "Data", @@ -23652,9 +40199,30 @@ func (m *SkipTaskResponse) Validate() error { } } + if len(errors) > 0 { + return SkipTaskResponseMultiError(errors) + } + return nil } +// SkipTaskResponseMultiError is an error wrapping multiple validation errors +// returned by SkipTaskResponse.ValidateAll() if the designated constraints +// aren't met. +type SkipTaskResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SkipTaskResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SkipTaskResponseMultiError) AllErrors() []error { return m } + // SkipTaskResponseValidationError is the validation error returned by // SkipTaskResponse.Validate if the designated constraints aren't met. type SkipTaskResponseValidationError struct { @@ -23710,32 +40278,58 @@ var _ interface { } = SkipTaskResponseValidationError{} // Validate checks the field values on UpdateTaskRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *UpdateTaskRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateTaskRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateTaskRequestMultiError, or nil if none found. +func (m *UpdateTaskRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateTaskRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetTaskID()); l < 2 || l > 36 { - return UpdateTaskRequestValidationError{ + err := UpdateTaskRequestValidationError{ field: "TaskID", reason: "value length must be between 2 and 36 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_UpdateTaskRequest_TaskID_Pattern.MatchString(m.GetTaskID()) { - return UpdateTaskRequestValidationError{ + err := UpdateTaskRequestValidationError{ field: "TaskID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _UpdateTaskRequest_Status_InLookup[m.GetStatus()]; !ok { - return UpdateTaskRequestValidationError{ + err := UpdateTaskRequestValidationError{ field: "Status", reason: "value must be in list [INITIALIZING RUNNING SUCCESS FAILURE TIMEOUT]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Message @@ -23747,39 +40341,97 @@ func (m *UpdateTaskRequest) Validate() error { // no validation rules for CurrentStep if l := len(m.GetSteps()); l < 1 || l > 20 { - return UpdateTaskRequestValidationError{ + err := UpdateTaskRequestValidationError{ field: "Steps", reason: "value must contain between 1 and 20 pairs, inclusive", } - } - - for key, val := range m.GetSteps() { - _ = val - - // no validation rules for Steps[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return UpdateTaskRequestValidationError{ - field: fmt.Sprintf("Steps[%v]", key), - reason: "embedded message failed validation", - cause: err, + if !all { + return err + } + errors = append(errors, err) + } + + { + sorted_keys := make([]string, len(m.GetSteps())) + i := 0 + for key := range m.GetSteps() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetSteps()[key] + _ = val + + // no validation rules for Steps[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateTaskRequestValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateTaskRequestValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return UpdateTaskRequestValidationError{ + field: fmt.Sprintf("Steps[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } - } + } } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 20 { - return UpdateTaskRequestValidationError{ + err := UpdateTaskRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return UpdateTaskRequestMultiError(errors) } return nil } +// UpdateTaskRequestMultiError is an error wrapping multiple validation errors +// returned by UpdateTaskRequest.ValidateAll() if the designated constraints +// aren't met. +type UpdateTaskRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateTaskRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateTaskRequestMultiError) AllErrors() []error { return m } + // UpdateTaskRequestValidationError is the validation error returned by // UpdateTaskRequest.Validate if the designated constraints aren't met. type UpdateTaskRequestValidationError struct { @@ -23848,19 +40500,52 @@ var _UpdateTaskRequest_Status_InLookup = map[string]struct{}{ // Validate checks the field values on UpdateTaskResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateTaskResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateTaskResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateTaskResponseMultiError, or nil if none found. +func (m *UpdateTaskResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateTaskResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateTaskResponseValidationError{ field: "Data", @@ -23870,9 +40555,30 @@ func (m *UpdateTaskResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateTaskResponseMultiError(errors) + } + return nil } +// UpdateTaskResponseMultiError is an error wrapping multiple validation errors +// returned by UpdateTaskResponse.ValidateAll() if the designated constraints +// aren't met. +type UpdateTaskResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateTaskResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateTaskResponseMultiError) AllErrors() []error { return m } + // UpdateTaskResponseValidationError is the validation error returned by // UpdateTaskResponse.Validate if the designated constraints aren't met. type UpdateTaskResponseValidationError struct { @@ -23930,32 +40636,75 @@ var _ interface { } = UpdateTaskResponseValidationError{} // Validate checks the field values on DeleteTaskRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *DeleteTaskRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteTaskRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteTaskRequestMultiError, or nil if none found. +func (m *DeleteTaskRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteTaskRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetTaskID()); l < 2 || l > 36 { - return DeleteTaskRequestValidationError{ + err := DeleteTaskRequestValidationError{ field: "TaskID", reason: "value length must be between 2 and 36 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteTaskRequest_TaskID_Pattern.MatchString(m.GetTaskID()) { - return DeleteTaskRequestValidationError{ + err := DeleteTaskRequestValidationError{ field: "TaskID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for IsForce + if len(errors) > 0 { + return DeleteTaskRequestMultiError(errors) + } + return nil } +// DeleteTaskRequestMultiError is an error wrapping multiple validation errors +// returned by DeleteTaskRequest.ValidateAll() if the designated constraints +// aren't met. +type DeleteTaskRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteTaskRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteTaskRequestMultiError) AllErrors() []error { return m } + // DeleteTaskRequestValidationError is the validation error returned by // DeleteTaskRequest.Validate if the designated constraints aren't met. type DeleteTaskRequestValidationError struct { @@ -24016,19 +40765,52 @@ var _DeleteTaskRequest_TaskID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on DeleteTaskResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteTaskResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteTaskResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteTaskResponseMultiError, or nil if none found. +func (m *DeleteTaskResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteTaskResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteTaskResponseValidationError{ field: "Data", @@ -24038,9 +40820,30 @@ func (m *DeleteTaskResponse) Validate() error { } } + if len(errors) > 0 { + return DeleteTaskResponseMultiError(errors) + } + return nil } +// DeleteTaskResponseMultiError is an error wrapping multiple validation errors +// returned by DeleteTaskResponse.ValidateAll() if the designated constraints +// aren't met. +type DeleteTaskResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteTaskResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteTaskResponseMultiError) AllErrors() []error { return m } + // DeleteTaskResponseValidationError is the validation error returned by // DeleteTaskResponse.Validate if the designated constraints aren't met. type DeleteTaskResponseValidationError struct { @@ -24098,30 +40901,73 @@ var _ interface { } = DeleteTaskResponseValidationError{} // Validate checks the field values on GetTaskRequest with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *GetTaskRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetTaskRequest with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in GetTaskRequestMultiError, +// or nil if none found. +func (m *GetTaskRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetTaskRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetTaskID()); l < 2 || l > 36 { - return GetTaskRequestValidationError{ + err := GetTaskRequestValidationError{ field: "TaskID", reason: "value length must be between 2 and 36 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_GetTaskRequest_TaskID_Pattern.MatchString(m.GetTaskID()) { - return GetTaskRequestValidationError{ + err := GetTaskRequestValidationError{ field: "TaskID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return GetTaskRequestMultiError(errors) } return nil } +// GetTaskRequestMultiError is an error wrapping multiple validation errors +// returned by GetTaskRequest.ValidateAll() if the designated constraints +// aren't met. +type GetTaskRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetTaskRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetTaskRequestMultiError) AllErrors() []error { return m } + // GetTaskRequestValidationError is the validation error returned by // GetTaskRequest.Validate if the designated constraints aren't met. type GetTaskRequestValidationError struct { @@ -24179,20 +41025,53 @@ var _ interface { var _GetTaskRequest_TaskID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-]+$") // Validate checks the field values on GetTaskResponse with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *GetTaskResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetTaskResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetTaskResponseMultiError, or nil if none found. +func (m *GetTaskResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetTaskResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTaskResponseValidationError{ field: "Data", @@ -24202,9 +41081,30 @@ func (m *GetTaskResponse) Validate() error { } } + if len(errors) > 0 { + return GetTaskResponseMultiError(errors) + } + return nil } +// GetTaskResponseMultiError is an error wrapping multiple validation errors +// returned by GetTaskResponse.ValidateAll() if the designated constraints +// aren't met. +type GetTaskResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetTaskResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetTaskResponseMultiError) AllErrors() []error { return m } + // GetTaskResponseValidationError is the validation error returned by // GetTaskResponse.Validate if the designated constraints aren't met. type GetTaskResponseValidationError struct { @@ -24260,39 +41160,69 @@ var _ interface { } = GetTaskResponseValidationError{} // Validate checks the field values on ListTaskRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ListTaskRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListTaskRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListTaskRequestMultiError, or nil if none found. +func (m *ListTaskRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListTaskRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetClusterID()) > 100 { - return ListTaskRequestValidationError{ + err := ListTaskRequestValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) > 32 { - return ListTaskRequestValidationError{ + err := ListTaskRequestValidationError{ field: "ProjectID", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetCreator()) > 20 { - return ListTaskRequestValidationError{ + err := ListTaskRequestValidationError{ field: "Creator", reason: "value length must be at most 20 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetUpdater()) > 20 { - return ListTaskRequestValidationError{ + err := ListTaskRequestValidationError{ field: "Updater", reason: "value length must be at most 20 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for TaskType @@ -24303,9 +41233,30 @@ func (m *ListTaskRequest) Validate() error { // no validation rules for NodeGroupID + if len(errors) > 0 { + return ListTaskRequestMultiError(errors) + } + return nil } +// ListTaskRequestMultiError is an error wrapping multiple validation errors +// returned by ListTaskRequest.ValidateAll() if the designated constraints +// aren't met. +type ListTaskRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListTaskRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListTaskRequestMultiError) AllErrors() []error { return m } + // ListTaskRequestValidationError is the validation error returned by // ListTaskRequest.Validate if the designated constraints aren't met. type ListTaskRequestValidationError struct { @@ -24361,13 +41312,27 @@ var _ interface { } = ListTaskRequestValidationError{} // Validate checks the field values on ListTaskResponse with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ListTaskResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListTaskResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListTaskResponseMultiError, or nil if none found. +func (m *ListTaskResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListTaskResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -24377,7 +41342,26 @@ func (m *ListTaskResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListTaskResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListTaskResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListTaskResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -24389,7 +41373,26 @@ func (m *ListTaskResponse) Validate() error { } - if v, ok := interface{}(m.GetLatestTask()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetLatestTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListTaskResponseValidationError{ + field: "LatestTask", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListTaskResponseValidationError{ + field: "LatestTask", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetLatestTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListTaskResponseValidationError{ field: "LatestTask", @@ -24399,9 +41402,30 @@ func (m *ListTaskResponse) Validate() error { } } + if len(errors) > 0 { + return ListTaskResponseMultiError(errors) + } + return nil } +// ListTaskResponseMultiError is an error wrapping multiple validation errors +// returned by ListTaskResponse.ValidateAll() if the designated constraints +// aren't met. +type ListTaskResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListTaskResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListTaskResponseMultiError) AllErrors() []error { return m } + // ListTaskResponseValidationError is the validation error returned by // ListTaskResponse.Validate if the designated constraints aren't met. type ListTaskResponseValidationError struct { @@ -24458,12 +41482,26 @@ var _ interface { // Validate checks the field values on CreateAutoScalingOptionRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateAutoScalingOptionRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateAutoScalingOptionRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// CreateAutoScalingOptionRequestMultiError, or nil if none found. +func (m *CreateAutoScalingOptionRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateAutoScalingOptionRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for IsScaleDownEnable // no validation rules for Expander @@ -24491,31 +41529,47 @@ func (m *CreateAutoScalingOptionRequest) Validate() error { // no validation rules for UnregisteredNodeRemovalTime if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - return CreateAutoScalingOptionRequestValidationError{ + err := CreateAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return CreateAutoScalingOptionRequestValidationError{ + err := CreateAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateAutoScalingOptionRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return CreateAutoScalingOptionRequestValidationError{ + err := CreateAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetCreator()); l < 2 || l > 20 { - return CreateAutoScalingOptionRequestValidationError{ + err := CreateAutoScalingOptionRequestValidationError{ field: "Creator", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Provider @@ -24530,7 +41584,26 @@ func (m *CreateAutoScalingOptionRequest) Validate() error { // no validation rules for MaxNodeProvisionTime - if v, ok := interface{}(m.GetScaleUpFromZero()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleUpFromZero()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateAutoScalingOptionRequestValidationError{ + field: "ScaleUpFromZero", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateAutoScalingOptionRequestValidationError{ + field: "ScaleUpFromZero", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleUpFromZero()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateAutoScalingOptionRequestValidationError{ field: "ScaleUpFromZero", @@ -24544,7 +41617,26 @@ func (m *CreateAutoScalingOptionRequest) Validate() error { // no validation rules for ScaleDownDelayAfterDelete - if v, ok := interface{}(m.GetScaleDownDelayAfterFailure()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleDownDelayAfterFailure()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateAutoScalingOptionRequestValidationError{ + field: "ScaleDownDelayAfterFailure", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateAutoScalingOptionRequestValidationError{ + field: "ScaleDownDelayAfterFailure", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleDownDelayAfterFailure()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterFailure", @@ -24560,9 +41652,30 @@ func (m *CreateAutoScalingOptionRequest) Validate() error { // no validation rules for BufferResourceMemRatio + if len(errors) > 0 { + return CreateAutoScalingOptionRequestMultiError(errors) + } + return nil } +// CreateAutoScalingOptionRequestMultiError is an error wrapping multiple +// validation errors returned by CreateAutoScalingOptionRequest.ValidateAll() +// if the designated constraints aren't met. +type CreateAutoScalingOptionRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateAutoScalingOptionRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateAutoScalingOptionRequestMultiError) AllErrors() []error { return m } + // CreateAutoScalingOptionRequestValidationError is the validation error // returned by CreateAutoScalingOptionRequest.Validate if the designated // constraints aren't met. @@ -24624,19 +41737,52 @@ var _CreateAutoScalingOptionRequest_ClusterID_Pattern = regexp.MustCompile("^[0- // Validate checks the field values on CreateAutoScalingOptionResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateAutoScalingOptionResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateAutoScalingOptionResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// CreateAutoScalingOptionResponseMultiError, or nil if none found. +func (m *CreateAutoScalingOptionResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateAutoScalingOptionResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateAutoScalingOptionResponseValidationError{ field: "Data", @@ -24646,9 +41792,30 @@ func (m *CreateAutoScalingOptionResponse) Validate() error { } } + if len(errors) > 0 { + return CreateAutoScalingOptionResponseMultiError(errors) + } + return nil } +// CreateAutoScalingOptionResponseMultiError is an error wrapping multiple +// validation errors returned by CreateAutoScalingOptionResponse.ValidateAll() +// if the designated constraints aren't met. +type CreateAutoScalingOptionResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateAutoScalingOptionResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateAutoScalingOptionResponseMultiError) AllErrors() []error { return m } + // CreateAutoScalingOptionResponseValidationError is the validation error // returned by CreateAutoScalingOptionResponse.Validate if the designated // constraints aren't met. @@ -24708,50 +41875,103 @@ var _ interface { // Validate checks the field values on UpdateAutoScalingOptionRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateAutoScalingOptionRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateAutoScalingOptionRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateAutoScalingOptionRequestMultiError, or nil if none found. +func (m *UpdateAutoScalingOptionRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateAutoScalingOptionRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for IsScaleDownEnable if _, ok := _UpdateAutoScalingOptionRequest_Expander_InLookup[m.GetExpander()]; !ok { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "Expander", reason: "value must be in list [random least-waste most-pods priority]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxEmptyBulkDelete(); val < 1 || val > 100 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "MaxEmptyBulkDelete", reason: "value must be inside range [1, 100]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownDelay(); val < 60 || val > 86400 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownDelay", reason: "value must be inside range [60, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownUnneededTime(); val < 60 || val > 86400 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownUnneededTime", reason: "value must be inside range [60, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownUtilizationThreahold(); val < 0 || val > 80 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownUtilizationThreahold", reason: "value must be inside range [0, 80]", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetSkipNodesWithLocalStorage()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetSkipNodesWithLocalStorage()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "SkipNodesWithLocalStorage", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "SkipNodesWithLocalStorage", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSkipNodesWithLocalStorage()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "SkipNodesWithLocalStorage", @@ -24761,7 +41981,26 @@ func (m *UpdateAutoScalingOptionRequest) Validate() error { } } - if v, ok := interface{}(m.GetSkipNodesWithSystemPods()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetSkipNodesWithSystemPods()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "SkipNodesWithSystemPods", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "SkipNodesWithSystemPods", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSkipNodesWithSystemPods()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "SkipNodesWithSystemPods", @@ -24771,7 +42010,26 @@ func (m *UpdateAutoScalingOptionRequest) Validate() error { } } - if v, ok := interface{}(m.GetIgnoreDaemonSetsUtilization()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetIgnoreDaemonSetsUtilization()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "IgnoreDaemonSetsUtilization", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "IgnoreDaemonSetsUtilization", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetIgnoreDaemonSetsUtilization()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "IgnoreDaemonSetsUtilization", @@ -24782,47 +42040,71 @@ func (m *UpdateAutoScalingOptionRequest) Validate() error { } if val := m.GetOkTotalUnreadyCount(); val < 0 || val > 320000 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "OkTotalUnreadyCount", reason: "value must be inside range [0, 320000]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxTotalUnreadyPercentage(); val < 0 || val > 100 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "MaxTotalUnreadyPercentage", reason: "value must be inside range [0, 100]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownUnreadyTime(); val < 1200 || val > 86400 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownUnreadyTime", reason: "value must be inside range [1200, 86400]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for UnregisteredNodeRemovalTime if utf8.RuneCountInString(m.GetProjectID()) > 32 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ProjectID", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetClusterID()) > 100 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 20 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Provider @@ -24832,36 +42114,71 @@ func (m *UpdateAutoScalingOptionRequest) Validate() error { if wrapper := m.GetBufferResourceRatio(); wrapper != nil { if val := wrapper.GetValue(); val < 0 || val > 100 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "BufferResourceRatio", reason: "value must be inside range [0, 100]", } + if !all { + return err + } + errors = append(errors, err) } } if val := m.GetMaxGracefulTerminationSec(); val < 60 || val > 86400 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "MaxGracefulTerminationSec", reason: "value must be inside range [60, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScanInterval(); val < 5 || val > 86400 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ScanInterval", reason: "value must be inside range [5, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxNodeProvisionTime(); val < 900 || val > 86400 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "MaxNodeProvisionTime", reason: "value must be inside range [900, 86400]", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetScaleUpFromZero()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleUpFromZero()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "ScaleUpFromZero", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "ScaleUpFromZero", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleUpFromZero()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "ScaleUpFromZero", @@ -24872,45 +42189,84 @@ func (m *UpdateAutoScalingOptionRequest) Validate() error { } if val := m.GetScaleDownDelayAfterAdd(); val < 1200 || val > 86400 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterAdd", reason: "value must be inside range [1200, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownDelayAfterDelete(); val < 0 || val > 86400 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterDelete", reason: "value must be inside range [0, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if wrapper := m.GetScaleDownDelayAfterFailure(); wrapper != nil { if val := wrapper.GetValue(); val < 60 || val > 86400 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterFailure", reason: "value must be inside range [60, 86400]", } + if !all { + return err + } + errors = append(errors, err) } } if val := m.GetBufferResourceCpuRatio(); val < 0 || val > 100 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "BufferResourceCpuRatio", reason: "value must be inside range [0, 100]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetBufferResourceMemRatio(); val < 0 || val > 100 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "BufferResourceMemRatio", reason: "value must be inside range [0, 100]", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetModule()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "Module", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetModule()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "Module", @@ -24920,7 +42276,26 @@ func (m *UpdateAutoScalingOptionRequest) Validate() error { } } - if v, ok := interface{}(m.GetWebhook()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebhook()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "Webhook", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "Webhook", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebhook()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "Webhook", @@ -24932,7 +42307,26 @@ func (m *UpdateAutoScalingOptionRequest) Validate() error { // no validation rules for OnlyUpdateInfo - if v, ok := interface{}(m.GetExpendablePodsPriorityCutoff()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetExpendablePodsPriorityCutoff()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "ExpendablePodsPriorityCutoff", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingOptionRequestValidationError{ + field: "ExpendablePodsPriorityCutoff", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetExpendablePodsPriorityCutoff()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionRequestValidationError{ field: "ExpendablePodsPriorityCutoff", @@ -24945,17 +42339,42 @@ func (m *UpdateAutoScalingOptionRequest) Validate() error { if wrapper := m.GetNewPodScaleUpDelay(); wrapper != nil { if wrapper.GetValue() < 0 { - return UpdateAutoScalingOptionRequestValidationError{ + err := UpdateAutoScalingOptionRequestValidationError{ field: "NewPodScaleUpDelay", reason: "value must be greater than or equal to 0", } + if !all { + return err + } + errors = append(errors, err) } } + if len(errors) > 0 { + return UpdateAutoScalingOptionRequestMultiError(errors) + } + return nil } +// UpdateAutoScalingOptionRequestMultiError is an error wrapping multiple +// validation errors returned by UpdateAutoScalingOptionRequest.ValidateAll() +// if the designated constraints aren't met. +type UpdateAutoScalingOptionRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateAutoScalingOptionRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateAutoScalingOptionRequestMultiError) AllErrors() []error { return m } + // UpdateAutoScalingOptionRequestValidationError is the validation error // returned by UpdateAutoScalingOptionRequest.Validate if the designated // constraints aren't met. @@ -25022,19 +42441,52 @@ var _UpdateAutoScalingOptionRequest_Expander_InLookup = map[string]struct{}{ // Validate checks the field values on UpdateAutoScalingOptionResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateAutoScalingOptionResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateAutoScalingOptionResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateAutoScalingOptionResponseMultiError, or nil if none found. +func (m *UpdateAutoScalingOptionResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateAutoScalingOptionResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionResponseValidationError{ field: "Data", @@ -25044,7 +42496,26 @@ func (m *UpdateAutoScalingOptionResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingOptionResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingOptionResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingOptionResponseValidationError{ field: "WebAnnotations", @@ -25054,9 +42525,30 @@ func (m *UpdateAutoScalingOptionResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateAutoScalingOptionResponseMultiError(errors) + } + return nil } +// UpdateAutoScalingOptionResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateAutoScalingOptionResponse.ValidateAll() +// if the designated constraints aren't met. +type UpdateAutoScalingOptionResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateAutoScalingOptionResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateAutoScalingOptionResponseMultiError) AllErrors() []error { return m } + // UpdateAutoScalingOptionResponseValidationError is the validation error // returned by UpdateAutoScalingOptionResponse.Validate if the designated // constraints aren't met. @@ -25116,24 +42608,65 @@ var _ interface { // Validate checks the field values on UpdateAsOptionDeviceProviderRequest with // the rules defined in the proto definition for this message. If any rules -// are violated, an error is returned. +// are violated, the first error encountered is returned, or nil if there are +// no violations. func (m *UpdateAsOptionDeviceProviderRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateAsOptionDeviceProviderRequest +// with the rules defined in the proto definition for this message. If any +// rules are violated, the result is a list of violation errors wrapped in +// UpdateAsOptionDeviceProviderRequestMultiError, or nil if none found. +func (m *UpdateAsOptionDeviceProviderRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateAsOptionDeviceProviderRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetClusterID()) > 100 { - return UpdateAsOptionDeviceProviderRequestValidationError{ + err := UpdateAsOptionDeviceProviderRequestValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Provider + if len(errors) > 0 { + return UpdateAsOptionDeviceProviderRequestMultiError(errors) + } + return nil } +// UpdateAsOptionDeviceProviderRequestMultiError is an error wrapping multiple +// validation errors returned by +// UpdateAsOptionDeviceProviderRequest.ValidateAll() if the designated +// constraints aren't met. +type UpdateAsOptionDeviceProviderRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateAsOptionDeviceProviderRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateAsOptionDeviceProviderRequestMultiError) AllErrors() []error { return m } + // UpdateAsOptionDeviceProviderRequestValidationError is the validation error // returned by UpdateAsOptionDeviceProviderRequest.Validate if the designated // constraints aren't met. @@ -25193,21 +42726,58 @@ var _ interface { // Validate checks the field values on UpdateAsOptionDeviceProviderResponse // with the rules defined in the proto definition for this message. If any -// rules are violated, an error is returned. +// rules are violated, the first error encountered is returned, or nil if +// there are no violations. func (m *UpdateAsOptionDeviceProviderResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateAsOptionDeviceProviderResponse +// with the rules defined in the proto definition for this message. If any +// rules are violated, the result is a list of violation errors wrapped in +// UpdateAsOptionDeviceProviderResponseMultiError, or nil if none found. +func (m *UpdateAsOptionDeviceProviderResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateAsOptionDeviceProviderResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return UpdateAsOptionDeviceProviderResponseMultiError(errors) + } + return nil } +// UpdateAsOptionDeviceProviderResponseMultiError is an error wrapping multiple +// validation errors returned by +// UpdateAsOptionDeviceProviderResponse.ValidateAll() if the designated +// constraints aren't met. +type UpdateAsOptionDeviceProviderResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateAsOptionDeviceProviderResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateAsOptionDeviceProviderResponseMultiError) AllErrors() []error { return m } + // UpdateAsOptionDeviceProviderResponseValidationError is the validation error // returned by UpdateAsOptionDeviceProviderResponse.Validate if the designated // constraints aren't met. @@ -25267,47 +42837,81 @@ var _ interface { // Validate checks the field values on SyncAutoScalingOptionRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *SyncAutoScalingOptionRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on SyncAutoScalingOptionRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// SyncAutoScalingOptionRequestMultiError, or nil if none found. +func (m *SyncAutoScalingOptionRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *SyncAutoScalingOptionRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for IsScaleDownEnable if _, ok := _SyncAutoScalingOptionRequest_Expander_InLookup[m.GetExpander()]; !ok { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "Expander", reason: "value must be in list [random least-waste most-pods priority]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxEmptyBulkDelete(); val < 1 || val > 100 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "MaxEmptyBulkDelete", reason: "value must be inside range [1, 100]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownDelay(); val < 60 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownDelay", reason: "value must be inside range [60, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownUnneededTime(); val < 60 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownUnneededTime", reason: "value must be inside range [60, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownUtilizationThreahold(); val < 0 || val > 80 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownUtilizationThreahold", reason: "value must be inside range [0, 80]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for SkipNodesWithLocalStorage @@ -25317,85 +42921,148 @@ func (m *SyncAutoScalingOptionRequest) Validate() error { // no validation rules for IgnoreDaemonSetsUtilization if val := m.GetOkTotalUnreadyCount(); val < 0 || val > 320000 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "OkTotalUnreadyCount", reason: "value must be inside range [0, 320000]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxTotalUnreadyPercentage(); val < 0 || val > 100 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "MaxTotalUnreadyPercentage", reason: "value must be inside range [0, 100]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownUnreadyTime(); val < 1200 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownUnreadyTime", reason: "value must be inside range [1200, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetClusterID()) > 100 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 20 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for ScaleDownGpuUtilizationThreshold if val := m.GetBufferResourceRatio(); val < 0 || val > 100 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "BufferResourceRatio", reason: "value must be inside range [0, 100]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxGracefulTerminationSec(); val < 60 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "MaxGracefulTerminationSec", reason: "value must be inside range [60, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScanInterval(); val < 5 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "ScanInterval", reason: "value must be inside range [5, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxNodeProvisionTime(); val < 900 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "MaxNodeProvisionTime", reason: "value must be inside range [900, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxNodeStartupTime(); val < 900 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "MaxNodeStartupTime", reason: "value must be inside range [900, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetMaxNodeStartScheduleTime(); val < 900 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "MaxNodeStartScheduleTime", reason: "value must be inside range [900, 86400]", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetScaleUpFromZero()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetScaleUpFromZero()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SyncAutoScalingOptionRequestValidationError{ + field: "ScaleUpFromZero", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SyncAutoScalingOptionRequestValidationError{ + field: "ScaleUpFromZero", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetScaleUpFromZero()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SyncAutoScalingOptionRequestValidationError{ field: "ScaleUpFromZero", @@ -25406,45 +43073,84 @@ func (m *SyncAutoScalingOptionRequest) Validate() error { } if val := m.GetScaleDownDelayAfterAdd(); val < 1200 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterAdd", reason: "value must be inside range [1200, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetScaleDownDelayAfterDelete(); val < 0 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterDelete", reason: "value must be inside range [0, 86400]", } + if !all { + return err + } + errors = append(errors, err) } if wrapper := m.GetScaleDownDelayAfterFailure(); wrapper != nil { if val := wrapper.GetValue(); val < 60 || val > 86400 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "ScaleDownDelayAfterFailure", reason: "value must be inside range [60, 86400]", } + if !all { + return err + } + errors = append(errors, err) } } if val := m.GetBufferResourceCpuRatio(); val < 0 || val > 100 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "BufferResourceCpuRatio", reason: "value must be inside range [0, 100]", } + if !all { + return err + } + errors = append(errors, err) } if val := m.GetBufferResourceMemRatio(); val < 0 || val > 100 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "BufferResourceMemRatio", reason: "value must be inside range [0, 100]", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetWebhook()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebhook()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SyncAutoScalingOptionRequestValidationError{ + field: "Webhook", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SyncAutoScalingOptionRequestValidationError{ + field: "Webhook", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebhook()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SyncAutoScalingOptionRequestValidationError{ field: "Webhook", @@ -25454,7 +43160,26 @@ func (m *SyncAutoScalingOptionRequest) Validate() error { } } - if v, ok := interface{}(m.GetExpendablePodsPriorityCutoff()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetExpendablePodsPriorityCutoff()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SyncAutoScalingOptionRequestValidationError{ + field: "ExpendablePodsPriorityCutoff", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SyncAutoScalingOptionRequestValidationError{ + field: "ExpendablePodsPriorityCutoff", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetExpendablePodsPriorityCutoff()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SyncAutoScalingOptionRequestValidationError{ field: "ExpendablePodsPriorityCutoff", @@ -25467,17 +43192,42 @@ func (m *SyncAutoScalingOptionRequest) Validate() error { if wrapper := m.GetNewPodScaleUpDelay(); wrapper != nil { if wrapper.GetValue() < 0 { - return SyncAutoScalingOptionRequestValidationError{ + err := SyncAutoScalingOptionRequestValidationError{ field: "NewPodScaleUpDelay", reason: "value must be greater than or equal to 0", } + if !all { + return err + } + errors = append(errors, err) } } + if len(errors) > 0 { + return SyncAutoScalingOptionRequestMultiError(errors) + } + return nil } +// SyncAutoScalingOptionRequestMultiError is an error wrapping multiple +// validation errors returned by SyncAutoScalingOptionRequest.ValidateAll() if +// the designated constraints aren't met. +type SyncAutoScalingOptionRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SyncAutoScalingOptionRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SyncAutoScalingOptionRequestMultiError) AllErrors() []error { return m } + // SyncAutoScalingOptionRequestValidationError is the validation error returned // by SyncAutoScalingOptionRequest.Validate if the designated constraints // aren't met. @@ -25544,19 +43294,52 @@ var _SyncAutoScalingOptionRequest_Expander_InLookup = map[string]struct{}{ // Validate checks the field values on SyncAutoScalingOptionResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *SyncAutoScalingOptionResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on SyncAutoScalingOptionResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// SyncAutoScalingOptionResponseMultiError, or nil if none found. +func (m *SyncAutoScalingOptionResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *SyncAutoScalingOptionResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SyncAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SyncAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SyncAutoScalingOptionResponseValidationError{ field: "Data", @@ -25566,7 +43349,26 @@ func (m *SyncAutoScalingOptionResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SyncAutoScalingOptionResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SyncAutoScalingOptionResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SyncAutoScalingOptionResponseValidationError{ field: "WebAnnotations", @@ -25576,9 +43378,30 @@ func (m *SyncAutoScalingOptionResponse) Validate() error { } } + if len(errors) > 0 { + return SyncAutoScalingOptionResponseMultiError(errors) + } + return nil } +// SyncAutoScalingOptionResponseMultiError is an error wrapping multiple +// validation errors returned by SyncAutoScalingOptionResponse.ValidateAll() +// if the designated constraints aren't met. +type SyncAutoScalingOptionResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SyncAutoScalingOptionResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SyncAutoScalingOptionResponseMultiError) AllErrors() []error { return m } + // SyncAutoScalingOptionResponseValidationError is the validation error // returned by SyncAutoScalingOptionResponse.Validate if the designated // constraints aren't met. @@ -25638,38 +43461,85 @@ var _ interface { // Validate checks the field values on DeleteAutoScalingOptionRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteAutoScalingOptionRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteAutoScalingOptionRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// DeleteAutoScalingOptionRequestMultiError, or nil if none found. +func (m *DeleteAutoScalingOptionRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteAutoScalingOptionRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - return DeleteAutoScalingOptionRequestValidationError{ + err := DeleteAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return DeleteAutoScalingOptionRequestValidationError{ + err := DeleteAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_DeleteAutoScalingOptionRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return DeleteAutoScalingOptionRequestValidationError{ + err := DeleteAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for IsForce + if len(errors) > 0 { + return DeleteAutoScalingOptionRequestMultiError(errors) + } + return nil } +// DeleteAutoScalingOptionRequestMultiError is an error wrapping multiple +// validation errors returned by DeleteAutoScalingOptionRequest.ValidateAll() +// if the designated constraints aren't met. +type DeleteAutoScalingOptionRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteAutoScalingOptionRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteAutoScalingOptionRequestMultiError) AllErrors() []error { return m } + // DeleteAutoScalingOptionRequestValidationError is the validation error // returned by DeleteAutoScalingOptionRequest.Validate if the designated // constraints aren't met. @@ -25731,19 +43601,52 @@ var _DeleteAutoScalingOptionRequest_ClusterID_Pattern = regexp.MustCompile("^[0- // Validate checks the field values on DeleteAutoScalingOptionResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteAutoScalingOptionResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteAutoScalingOptionResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// DeleteAutoScalingOptionResponseMultiError, or nil if none found. +func (m *DeleteAutoScalingOptionResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteAutoScalingOptionResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteAutoScalingOptionResponseValidationError{ field: "Data", @@ -25753,7 +43656,26 @@ func (m *DeleteAutoScalingOptionResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteAutoScalingOptionResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteAutoScalingOptionResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteAutoScalingOptionResponseValidationError{ field: "WebAnnotations", @@ -25763,9 +43685,30 @@ func (m *DeleteAutoScalingOptionResponse) Validate() error { } } + if len(errors) > 0 { + return DeleteAutoScalingOptionResponseMultiError(errors) + } + return nil } +// DeleteAutoScalingOptionResponseMultiError is an error wrapping multiple +// validation errors returned by DeleteAutoScalingOptionResponse.ValidateAll() +// if the designated constraints aren't met. +type DeleteAutoScalingOptionResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteAutoScalingOptionResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteAutoScalingOptionResponseMultiError) AllErrors() []error { return m } + // DeleteAutoScalingOptionResponseValidationError is the validation error // returned by DeleteAutoScalingOptionResponse.Validate if the designated // constraints aren't met. @@ -25825,38 +43768,85 @@ var _ interface { // Validate checks the field values on GetAutoScalingOptionRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetAutoScalingOptionRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetAutoScalingOptionRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetAutoScalingOptionRequestMultiError, or nil if none found. +func (m *GetAutoScalingOptionRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetAutoScalingOptionRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 2 || l > 100 { - return GetAutoScalingOptionRequestValidationError{ + err := GetAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value length must be between 2 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !strings.HasPrefix(m.GetClusterID(), "BCS-") { - return GetAutoScalingOptionRequestValidationError{ + err := GetAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value does not have prefix \"BCS-\"", } + if !all { + return err + } + errors = append(errors, err) } if !_GetAutoScalingOptionRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return GetAutoScalingOptionRequestValidationError{ + err := GetAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Provider + if len(errors) > 0 { + return GetAutoScalingOptionRequestMultiError(errors) + } + return nil } +// GetAutoScalingOptionRequestMultiError is an error wrapping multiple +// validation errors returned by GetAutoScalingOptionRequest.ValidateAll() if +// the designated constraints aren't met. +type GetAutoScalingOptionRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetAutoScalingOptionRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetAutoScalingOptionRequestMultiError) AllErrors() []error { return m } + // GetAutoScalingOptionRequestValidationError is the validation error returned // by GetAutoScalingOptionRequest.Validate if the designated constraints // aren't met. @@ -25918,19 +43908,52 @@ var _GetAutoScalingOptionRequest_ClusterID_Pattern = regexp.MustCompile("^[0-9a- // Validate checks the field values on GetAutoScalingOptionResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetAutoScalingOptionResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetAutoScalingOptionResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetAutoScalingOptionResponseMultiError, or nil if none found. +func (m *GetAutoScalingOptionResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetAutoScalingOptionResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetAutoScalingOptionResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetAutoScalingOptionResponseValidationError{ field: "Data", @@ -25940,7 +43963,26 @@ func (m *GetAutoScalingOptionResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetAutoScalingOptionResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetAutoScalingOptionResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetAutoScalingOptionResponseValidationError{ field: "WebAnnotations", @@ -25950,9 +43992,30 @@ func (m *GetAutoScalingOptionResponse) Validate() error { } } + if len(errors) > 0 { + return GetAutoScalingOptionResponseMultiError(errors) + } + return nil } +// GetAutoScalingOptionResponseMultiError is an error wrapping multiple +// validation errors returned by GetAutoScalingOptionResponse.ValidateAll() if +// the designated constraints aren't met. +type GetAutoScalingOptionResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetAutoScalingOptionResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetAutoScalingOptionResponseMultiError) AllErrors() []error { return m } + // GetAutoScalingOptionResponseValidationError is the validation error returned // by GetAutoScalingOptionResponse.Validate if the designated constraints // aren't met. @@ -26012,43 +44075,94 @@ var _ interface { // Validate checks the field values on ListAutoScalingOptionRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListAutoScalingOptionRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListAutoScalingOptionRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListAutoScalingOptionRequestMultiError, or nil if none found. +func (m *ListAutoScalingOptionRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListAutoScalingOptionRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetClusterID()) > 100 { - return ListAutoScalingOptionRequestValidationError{ + err := ListAutoScalingOptionRequestValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetProjectID()) > 32 { - return ListAutoScalingOptionRequestValidationError{ + err := ListAutoScalingOptionRequestValidationError{ field: "ProjectID", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetCreator()) > 20 { - return ListAutoScalingOptionRequestValidationError{ + err := ListAutoScalingOptionRequestValidationError{ field: "Creator", reason: "value length must be at most 20 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetUpdater()) > 20 { - return ListAutoScalingOptionRequestValidationError{ + err := ListAutoScalingOptionRequestValidationError{ field: "Updater", reason: "value length must be at most 20 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return ListAutoScalingOptionRequestMultiError(errors) } return nil } +// ListAutoScalingOptionRequestMultiError is an error wrapping multiple +// validation errors returned by ListAutoScalingOptionRequest.ValidateAll() if +// the designated constraints aren't met. +type ListAutoScalingOptionRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListAutoScalingOptionRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListAutoScalingOptionRequestMultiError) AllErrors() []error { return m } + // ListAutoScalingOptionRequestValidationError is the validation error returned // by ListAutoScalingOptionRequest.Validate if the designated constraints // aren't met. @@ -26108,12 +44222,26 @@ var _ interface { // Validate checks the field values on ListAutoScalingOptionResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListAutoScalingOptionResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListAutoScalingOptionResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ListAutoScalingOptionResponseMultiError, or nil if none found. +func (m *ListAutoScalingOptionResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListAutoScalingOptionResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -26123,7 +44251,26 @@ func (m *ListAutoScalingOptionResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListAutoScalingOptionResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListAutoScalingOptionResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListAutoScalingOptionResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -26135,9 +44282,30 @@ func (m *ListAutoScalingOptionResponse) Validate() error { } + if len(errors) > 0 { + return ListAutoScalingOptionResponseMultiError(errors) + } + return nil } +// ListAutoScalingOptionResponseMultiError is an error wrapping multiple +// validation errors returned by ListAutoScalingOptionResponse.ValidateAll() +// if the designated constraints aren't met. +type ListAutoScalingOptionResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListAutoScalingOptionResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListAutoScalingOptionResponseMultiError) AllErrors() []error { return m } + // ListAutoScalingOptionResponseValidationError is the validation error // returned by ListAutoScalingOptionResponse.Validate if the designated // constraints aren't met. @@ -26197,33 +44365,76 @@ var _ interface { // Validate checks the field values on UpdateAutoScalingStatusRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateAutoScalingStatusRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateAutoScalingStatusRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateAutoScalingStatusRequestMultiError, or nil if none found. +func (m *UpdateAutoScalingStatusRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateAutoScalingStatusRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Enable if utf8.RuneCountInString(m.GetClusterID()) > 100 { - return UpdateAutoScalingStatusRequestValidationError{ + err := UpdateAutoScalingStatusRequestValidationError{ field: "ClusterID", reason: "value length must be at most 100 runes", } + if !all { + return err + } + errors = append(errors, err) } if l := utf8.RuneCountInString(m.GetUpdater()); l < 2 || l > 20 { - return UpdateAutoScalingStatusRequestValidationError{ + err := UpdateAutoScalingStatusRequestValidationError{ field: "Updater", reason: "value length must be between 2 and 20 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Provider + if len(errors) > 0 { + return UpdateAutoScalingStatusRequestMultiError(errors) + } + return nil } +// UpdateAutoScalingStatusRequestMultiError is an error wrapping multiple +// validation errors returned by UpdateAutoScalingStatusRequest.ValidateAll() +// if the designated constraints aren't met. +type UpdateAutoScalingStatusRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateAutoScalingStatusRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateAutoScalingStatusRequestMultiError) AllErrors() []error { return m } + // UpdateAutoScalingStatusRequestValidationError is the validation error // returned by UpdateAutoScalingStatusRequest.Validate if the designated // constraints aren't met. @@ -26283,19 +44494,52 @@ var _ interface { // Validate checks the field values on UpdateAutoScalingStatusResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateAutoScalingStatusResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateAutoScalingStatusResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateAutoScalingStatusResponseMultiError, or nil if none found. +func (m *UpdateAutoScalingStatusResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateAutoScalingStatusResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingStatusResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingStatusResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingStatusResponseValidationError{ field: "Data", @@ -26305,7 +44549,26 @@ func (m *UpdateAutoScalingStatusResponse) Validate() error { } } - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateAutoScalingStatusResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateAutoScalingStatusResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateAutoScalingStatusResponseValidationError{ field: "WebAnnotations", @@ -26315,9 +44578,30 @@ func (m *UpdateAutoScalingStatusResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateAutoScalingStatusResponseMultiError(errors) + } + return nil } +// UpdateAutoScalingStatusResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateAutoScalingStatusResponse.ValidateAll() +// if the designated constraints aren't met. +type UpdateAutoScalingStatusResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateAutoScalingStatusResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateAutoScalingStatusResponseMultiError) AllErrors() []error { return m } + // UpdateAutoScalingStatusResponseValidationError is the validation error // returned by UpdateAutoScalingStatusResponse.Validate if the designated // constraints aren't met. @@ -26376,13 +44660,27 @@ var _ interface { } = UpdateAutoScalingStatusResponseValidationError{} // Validate checks the field values on ServiceRoleInfo with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ServiceRoleInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ServiceRoleInfo with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ServiceRoleInfoMultiError, or nil if none found. +func (m *ServiceRoleInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *ServiceRoleInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for RoleName // no validation rules for RoleID @@ -26391,9 +44689,30 @@ func (m *ServiceRoleInfo) Validate() error { // no validation rules for Description + if len(errors) > 0 { + return ServiceRoleInfoMultiError(errors) + } + return nil } +// ServiceRoleInfoMultiError is an error wrapping multiple validation errors +// returned by ServiceRoleInfo.ValidateAll() if the designated constraints +// aren't met. +type ServiceRoleInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ServiceRoleInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ServiceRoleInfoMultiError) AllErrors() []error { return m } + // ServiceRoleInfoValidationError is the validation error returned by // ServiceRoleInfo.Validate if the designated constraints aren't met. type ServiceRoleInfoValidationError struct { @@ -26450,31 +44769,74 @@ var _ interface { // Validate checks the field values on GetServiceRolesRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetServiceRolesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetServiceRolesRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetServiceRolesRequestMultiError, or nil if none found. +func (m *GetServiceRolesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetServiceRolesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return GetServiceRolesRequestValidationError{ + err := GetServiceRolesRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for AccountID if _, ok := _GetServiceRolesRequest_RoleType_InLookup[m.GetRoleType()]; !ok { - return GetServiceRolesRequestValidationError{ + err := GetServiceRolesRequestValidationError{ field: "RoleType", reason: "value must be in list [cluster nodeGroup]", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return GetServiceRolesRequestMultiError(errors) } return nil } +// GetServiceRolesRequestMultiError is an error wrapping multiple validation +// errors returned by GetServiceRolesRequest.ValidateAll() if the designated +// constraints aren't met. +type GetServiceRolesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetServiceRolesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetServiceRolesRequestMultiError) AllErrors() []error { return m } + // GetServiceRolesRequestValidationError is the validation error returned by // GetServiceRolesRequest.Validate if the designated constraints aren't met. type GetServiceRolesRequestValidationError struct { @@ -26538,12 +44900,26 @@ var _GetServiceRolesRequest_RoleType_InLookup = map[string]struct{}{ // Validate checks the field values on GetServiceRolesResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetServiceRolesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetServiceRolesResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetServiceRolesResponseMultiError, or nil if none found. +func (m *GetServiceRolesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetServiceRolesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -26553,7 +44929,26 @@ func (m *GetServiceRolesResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetServiceRolesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetServiceRolesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetServiceRolesResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -26565,9 +44960,30 @@ func (m *GetServiceRolesResponse) Validate() error { } + if len(errors) > 0 { + return GetServiceRolesResponseMultiError(errors) + } + return nil } +// GetServiceRolesResponseMultiError is an error wrapping multiple validation +// errors returned by GetServiceRolesResponse.ValidateAll() if the designated +// constraints aren't met. +type GetServiceRolesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetServiceRolesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetServiceRolesResponseMultiError) AllErrors() []error { return m } + // GetServiceRolesResponseValidationError is the validation error returned by // GetServiceRolesResponse.Validate if the designated constraints aren't met. type GetServiceRolesResponseValidationError struct { @@ -26625,22 +45041,57 @@ var _ interface { } = GetServiceRolesResponseValidationError{} // Validate checks the field values on ResourceGroupInfo with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *ResourceGroupInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ResourceGroupInfo with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ResourceGroupInfoMultiError, or nil if none found. +func (m *ResourceGroupInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *ResourceGroupInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Name // no validation rules for Region // no validation rules for ProvisioningState + if len(errors) > 0 { + return ResourceGroupInfoMultiError(errors) + } + return nil } +// ResourceGroupInfoMultiError is an error wrapping multiple validation errors +// returned by ResourceGroupInfo.ValidateAll() if the designated constraints +// aren't met. +type ResourceGroupInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ResourceGroupInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ResourceGroupInfoMultiError) AllErrors() []error { return m } + // ResourceGroupInfoValidationError is the validation error returned by // ResourceGroupInfo.Validate if the designated constraints aren't met. type ResourceGroupInfoValidationError struct { @@ -26699,24 +45150,63 @@ var _ interface { // Validate checks the field values on GetResourceGroupsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetResourceGroupsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetResourceGroupsRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetResourceGroupsRequestMultiError, or nil if none found. +func (m *GetResourceGroupsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetResourceGroupsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return GetResourceGroupsRequestValidationError{ + err := GetResourceGroupsRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for AccountID + if len(errors) > 0 { + return GetResourceGroupsRequestMultiError(errors) + } + return nil } +// GetResourceGroupsRequestMultiError is an error wrapping multiple validation +// errors returned by GetResourceGroupsRequest.ValidateAll() if the designated +// constraints aren't met. +type GetResourceGroupsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetResourceGroupsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetResourceGroupsRequestMultiError) AllErrors() []error { return m } + // GetResourceGroupsRequestValidationError is the validation error returned by // GetResourceGroupsRequest.Validate if the designated constraints aren't met. type GetResourceGroupsRequestValidationError struct { @@ -26775,12 +45265,26 @@ var _ interface { // Validate checks the field values on GetResourceGroupsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetResourceGroupsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetResourceGroupsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetResourceGroupsResponseMultiError, or nil if none found. +func (m *GetResourceGroupsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetResourceGroupsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -26790,7 +45294,26 @@ func (m *GetResourceGroupsResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetResourceGroupsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetResourceGroupsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetResourceGroupsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -26802,9 +45325,30 @@ func (m *GetResourceGroupsResponse) Validate() error { } + if len(errors) > 0 { + return GetResourceGroupsResponseMultiError(errors) + } + return nil } +// GetResourceGroupsResponseMultiError is an error wrapping multiple validation +// errors returned by GetResourceGroupsResponse.ValidateAll() if the +// designated constraints aren't met. +type GetResourceGroupsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetResourceGroupsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetResourceGroupsResponseMultiError) AllErrors() []error { return m } + // GetResourceGroupsResponseValidationError is the validation error returned by // GetResourceGroupsResponse.Validate if the designated constraints aren't met. type GetResourceGroupsResponseValidationError struct { @@ -26862,21 +45406,56 @@ var _ interface { } = GetResourceGroupsResponseValidationError{} // Validate checks the field values on RegionInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *RegionInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RegionInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in RegionInfoMultiError, or +// nil if none found. +func (m *RegionInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *RegionInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Region // no validation rules for RegionName // no validation rules for RegionState + if len(errors) > 0 { + return RegionInfoMultiError(errors) + } + return nil } +// RegionInfoMultiError is an error wrapping multiple validation errors +// returned by RegionInfo.ValidateAll() if the designated constraints aren't met. +type RegionInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RegionInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RegionInfoMultiError) AllErrors() []error { return m } + // RegionInfoValidationError is the validation error returned by // RegionInfo.Validate if the designated constraints aren't met. type RegionInfoValidationError struct { @@ -26933,24 +45512,63 @@ var _ interface { // Validate checks the field values on GetCloudRegionsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetCloudRegionsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudRegionsRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetCloudRegionsRequestMultiError, or nil if none found. +func (m *GetCloudRegionsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudRegionsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return GetCloudRegionsRequestValidationError{ + err := GetCloudRegionsRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for AccountID + if len(errors) > 0 { + return GetCloudRegionsRequestMultiError(errors) + } + return nil } +// GetCloudRegionsRequestMultiError is an error wrapping multiple validation +// errors returned by GetCloudRegionsRequest.ValidateAll() if the designated +// constraints aren't met. +type GetCloudRegionsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudRegionsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudRegionsRequestMultiError) AllErrors() []error { return m } + // GetCloudRegionsRequestValidationError is the validation error returned by // GetCloudRegionsRequest.Validate if the designated constraints aren't met. type GetCloudRegionsRequestValidationError struct { @@ -27009,12 +45627,26 @@ var _ interface { // Validate checks the field values on GetCloudRegionsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetCloudRegionsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudRegionsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetCloudRegionsResponseMultiError, or nil if none found. +func (m *GetCloudRegionsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudRegionsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -27024,7 +45656,26 @@ func (m *GetCloudRegionsResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetCloudRegionsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetCloudRegionsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetCloudRegionsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -27036,9 +45687,30 @@ func (m *GetCloudRegionsResponse) Validate() error { } + if len(errors) > 0 { + return GetCloudRegionsResponseMultiError(errors) + } + return nil } +// GetCloudRegionsResponseMultiError is an error wrapping multiple validation +// errors returned by GetCloudRegionsResponse.ValidateAll() if the designated +// constraints aren't met. +type GetCloudRegionsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudRegionsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudRegionsResponseMultiError) AllErrors() []error { return m } + // GetCloudRegionsResponseValidationError is the validation error returned by // GetCloudRegionsResponse.Validate if the designated constraints aren't met. type GetCloudRegionsResponseValidationError struct { @@ -27096,12 +45768,27 @@ var _ interface { } = GetCloudRegionsResponseValidationError{} // Validate checks the field values on ZoneInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ZoneInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ZoneInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ZoneInfoMultiError, or nil +// if none found. +func (m *ZoneInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *ZoneInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ZoneID // no validation rules for Zone @@ -27112,9 +45799,29 @@ func (m *ZoneInfo) Validate() error { // no validation rules for SubnetNum + if len(errors) > 0 { + return ZoneInfoMultiError(errors) + } + return nil } +// ZoneInfoMultiError is an error wrapping multiple validation errors returned +// by ZoneInfo.ValidateAll() if the designated constraints aren't met. +type ZoneInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ZoneInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ZoneInfoMultiError) AllErrors() []error { return m } + // ZoneInfoValidationError is the validation error returned by // ZoneInfo.Validate if the designated constraints aren't met. type ZoneInfoValidationError struct { @@ -27170,13 +45877,27 @@ var _ interface { } = ZoneInfoValidationError{} // Validate checks the field values on CloudClusterInfo with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CloudClusterInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudClusterInfo with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CloudClusterInfoMultiError, or nil if none found. +func (m *CloudClusterInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudClusterInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterID // no validation rules for ClusterName @@ -27195,9 +45916,30 @@ func (m *CloudClusterInfo) Validate() error { // no validation rules for ClusterLevel + if len(errors) > 0 { + return CloudClusterInfoMultiError(errors) + } + return nil } +// CloudClusterInfoMultiError is an error wrapping multiple validation errors +// returned by CloudClusterInfo.ValidateAll() if the designated constraints +// aren't met. +type CloudClusterInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudClusterInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudClusterInfoMultiError) AllErrors() []error { return m } + // CloudClusterInfoValidationError is the validation error returned by // CloudClusterInfo.Validate if the designated constraints aren't met. type CloudClusterInfoValidationError struct { @@ -27254,38 +45996,85 @@ var _ interface { // Validate checks the field values on ListCloudRegionClusterRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudRegionClusterRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudRegionClusterRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ListCloudRegionClusterRequestMultiError, or nil if none found. +func (m *ListCloudRegionClusterRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudRegionClusterRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return ListCloudRegionClusterRequestValidationError{ + err := ListCloudRegionClusterRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) < 2 { - return ListCloudRegionClusterRequestValidationError{ + err := ListCloudRegionClusterRequestValidationError{ field: "Region", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetAccountID()) < 2 { - return ListCloudRegionClusterRequestValidationError{ + err := ListCloudRegionClusterRequestValidationError{ field: "AccountID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for ResourceGroupName + if len(errors) > 0 { + return ListCloudRegionClusterRequestMultiError(errors) + } + return nil } +// ListCloudRegionClusterRequestMultiError is an error wrapping multiple +// validation errors returned by ListCloudRegionClusterRequest.ValidateAll() +// if the designated constraints aren't met. +type ListCloudRegionClusterRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudRegionClusterRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudRegionClusterRequestMultiError) AllErrors() []error { return m } + // ListCloudRegionClusterRequestValidationError is the validation error // returned by ListCloudRegionClusterRequest.Validate if the designated // constraints aren't met. @@ -27345,12 +46134,26 @@ var _ interface { // Validate checks the field values on ListCloudRegionClusterResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudRegionClusterResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudRegionClusterResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ListCloudRegionClusterResponseMultiError, or nil if none found. +func (m *ListCloudRegionClusterResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudRegionClusterResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -27360,7 +46163,26 @@ func (m *ListCloudRegionClusterResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudRegionClusterResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudRegionClusterResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudRegionClusterResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -27372,9 +46194,30 @@ func (m *ListCloudRegionClusterResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudRegionClusterResponseMultiError(errors) + } + return nil } +// ListCloudRegionClusterResponseMultiError is an error wrapping multiple +// validation errors returned by ListCloudRegionClusterResponse.ValidateAll() +// if the designated constraints aren't met. +type ListCloudRegionClusterResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudRegionClusterResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudRegionClusterResponseMultiError) AllErrors() []error { return m } + // ListCloudRegionClusterResponseValidationError is the validation error // returned by ListCloudRegionClusterResponse.Validate if the designated // constraints aren't met. @@ -27434,17 +46277,35 @@ var _ interface { // Validate checks the field values on GetCloudRegionZonesRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetCloudRegionZonesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudRegionZonesRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetCloudRegionZonesRequestMultiError, or nil if none found. +func (m *GetCloudRegionZonesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudRegionZonesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return GetCloudRegionZonesRequestValidationError{ + err := GetCloudRegionZonesRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region @@ -27455,9 +46316,30 @@ func (m *GetCloudRegionZonesRequest) Validate() error { // no validation rules for State + if len(errors) > 0 { + return GetCloudRegionZonesRequestMultiError(errors) + } + return nil } +// GetCloudRegionZonesRequestMultiError is an error wrapping multiple +// validation errors returned by GetCloudRegionZonesRequest.ValidateAll() if +// the designated constraints aren't met. +type GetCloudRegionZonesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudRegionZonesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudRegionZonesRequestMultiError) AllErrors() []error { return m } + // GetCloudRegionZonesRequestValidationError is the validation error returned // by GetCloudRegionZonesRequest.Validate if the designated constraints aren't met. type GetCloudRegionZonesRequestValidationError struct { @@ -27516,12 +46398,26 @@ var _ interface { // Validate checks the field values on GetCloudRegionZonesResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetCloudRegionZonesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudRegionZonesResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetCloudRegionZonesResponseMultiError, or nil if none found. +func (m *GetCloudRegionZonesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudRegionZonesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -27531,7 +46427,26 @@ func (m *GetCloudRegionZonesResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetCloudRegionZonesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetCloudRegionZonesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetCloudRegionZonesResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -27543,9 +46458,30 @@ func (m *GetCloudRegionZonesResponse) Validate() error { } + if len(errors) > 0 { + return GetCloudRegionZonesResponseMultiError(errors) + } + return nil } +// GetCloudRegionZonesResponseMultiError is an error wrapping multiple +// validation errors returned by GetCloudRegionZonesResponse.ValidateAll() if +// the designated constraints aren't met. +type GetCloudRegionZonesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudRegionZonesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudRegionZonesResponseMultiError) AllErrors() []error { return m } + // GetCloudRegionZonesResponseValidationError is the validation error returned // by GetCloudRegionZonesResponse.Validate if the designated constraints // aren't met. @@ -27604,13 +46540,27 @@ var _ interface { } = GetCloudRegionZonesResponseValidationError{} // Validate checks the field values on OperationLog with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *OperationLog) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on OperationLog with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in OperationLogMultiError, or +// nil if none found. +func (m *OperationLog) ValidateAll() error { + return m.validate(true) +} + +func (m *OperationLog) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ResourceType // no validation rules for ResourceID @@ -27629,9 +46579,29 @@ func (m *OperationLog) Validate() error { // no validation rules for ResourceName + if len(errors) > 0 { + return OperationLogMultiError(errors) + } + return nil } +// OperationLogMultiError is an error wrapping multiple validation errors +// returned by OperationLog.ValidateAll() if the designated constraints aren't met. +type OperationLogMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m OperationLogMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m OperationLogMultiError) AllErrors() []error { return m } + // OperationLogValidationError is the validation error returned by // OperationLog.Validate if the designated constraints aren't met. type OperationLogValidationError struct { @@ -27687,13 +46657,27 @@ var _ interface { } = OperationLogValidationError{} // Validate checks the field values on TaskOperationLog with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *TaskOperationLog) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TaskOperationLog with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// TaskOperationLogMultiError, or nil if none found. +func (m *TaskOperationLog) ValidateAll() error { + return m.validate(true) +} + +func (m *TaskOperationLog) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ResourceType // no validation rules for ResourceID @@ -27716,9 +46700,30 @@ func (m *TaskOperationLog) Validate() error { // no validation rules for ResourceName + if len(errors) > 0 { + return TaskOperationLogMultiError(errors) + } + return nil } +// TaskOperationLogMultiError is an error wrapping multiple validation errors +// returned by TaskOperationLog.ValidateAll() if the designated constraints +// aren't met. +type TaskOperationLogMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TaskOperationLogMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TaskOperationLogMultiError) AllErrors() []error { return m } + // TaskOperationLogValidationError is the validation error returned by // TaskOperationLog.Validate if the designated constraints aren't met. type TaskOperationLogValidationError struct { @@ -27774,13 +46779,27 @@ var _ interface { } = TaskOperationLogValidationError{} // Validate checks the field values on TaskStepLog with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *TaskStepLog) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TaskStepLog with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in TaskStepLogMultiError, or +// nil if none found. +func (m *TaskStepLog) ValidateAll() error { + return m.validate(true) +} + +func (m *TaskStepLog) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for TaskID // no validation rules for StepName @@ -27791,9 +46810,29 @@ func (m *TaskStepLog) Validate() error { // no validation rules for CreateTime + if len(errors) > 0 { + return TaskStepLogMultiError(errors) + } + return nil } +// TaskStepLogMultiError is an error wrapping multiple validation errors +// returned by TaskStepLog.ValidateAll() if the designated constraints aren't met. +type TaskStepLogMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TaskStepLogMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TaskStepLogMultiError) AllErrors() []error { return m } + // TaskStepLogValidationError is the validation error returned by // TaskStepLog.Validate if the designated constraints aren't met. type TaskStepLogValidationError struct { @@ -27850,17 +46889,35 @@ var _ interface { // Validate checks the field values on ListCloudInstanceTypeRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudInstanceTypeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudInstanceTypeRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudInstanceTypeRequestMultiError, or nil if none found. +func (m *ListCloudInstanceTypeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudInstanceTypeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return ListCloudInstanceTypeRequestValidationError{ + err := ListCloudInstanceTypeRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region @@ -27868,17 +46925,25 @@ func (m *ListCloudInstanceTypeRequest) Validate() error { // no validation rules for AccountID if utf8.RuneCountInString(m.GetZone()) > 32 { - return ListCloudInstanceTypeRequestValidationError{ + err := ListCloudInstanceTypeRequestValidationError{ field: "Zone", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetNodeFamily()) > 32 { - return ListCloudInstanceTypeRequestValidationError{ + err := ListCloudInstanceTypeRequestValidationError{ field: "NodeFamily", reason: "value length must be at most 32 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Cpu @@ -27890,15 +46955,40 @@ func (m *ListCloudInstanceTypeRequest) Validate() error { // no validation rules for Provider if _, ok := _ListCloudInstanceTypeRequest_ResourceType_InLookup[m.GetResourceType()]; !ok { - return ListCloudInstanceTypeRequestValidationError{ + err := ListCloudInstanceTypeRequestValidationError{ field: "ResourceType", reason: "value must be in list [ online offline]", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return ListCloudInstanceTypeRequestMultiError(errors) } return nil } +// ListCloudInstanceTypeRequestMultiError is an error wrapping multiple +// validation errors returned by ListCloudInstanceTypeRequest.ValidateAll() if +// the designated constraints aren't met. +type ListCloudInstanceTypeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudInstanceTypeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudInstanceTypeRequestMultiError) AllErrors() []error { return m } + // ListCloudInstanceTypeRequestValidationError is the validation error returned // by ListCloudInstanceTypeRequest.Validate if the designated constraints // aren't met. @@ -27964,12 +47054,26 @@ var _ListCloudInstanceTypeRequest_ResourceType_InLookup = map[string]struct{}{ // Validate checks the field values on ListCloudInstanceTypeResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudInstanceTypeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudInstanceTypeResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ListCloudInstanceTypeResponseMultiError, or nil if none found. +func (m *ListCloudInstanceTypeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudInstanceTypeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -27979,7 +47083,26 @@ func (m *ListCloudInstanceTypeResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudInstanceTypeResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudInstanceTypeResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudInstanceTypeResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -27991,9 +47114,30 @@ func (m *ListCloudInstanceTypeResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudInstanceTypeResponseMultiError(errors) + } + return nil } +// ListCloudInstanceTypeResponseMultiError is an error wrapping multiple +// validation errors returned by ListCloudInstanceTypeResponse.ValidateAll() +// if the designated constraints aren't met. +type ListCloudInstanceTypeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudInstanceTypeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudInstanceTypeResponseMultiError) AllErrors() []error { return m } + // ListCloudInstanceTypeResponseValidationError is the validation error // returned by ListCloudInstanceTypeResponse.Validate if the designated // constraints aren't met. @@ -28052,13 +47196,27 @@ var _ interface { } = ListCloudInstanceTypeResponseValidationError{} // Validate checks the field values on InstanceType with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *InstanceType) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on InstanceType with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in InstanceTypeMultiError, or +// nil if none found. +func (m *InstanceType) ValidateAll() error { + return m.validate(true) +} + +func (m *InstanceType) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeType // no validation rules for TypeName @@ -28079,7 +47237,26 @@ func (m *InstanceType) Validate() error { // no validation rules for ResourcePoolID - if v, ok := interface{}(m.GetSystemDisk()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetSystemDisk()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, InstanceTypeValidationError{ + field: "SystemDisk", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, InstanceTypeValidationError{ + field: "SystemDisk", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetSystemDisk()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTypeValidationError{ field: "SystemDisk", @@ -28092,7 +47269,26 @@ func (m *InstanceType) Validate() error { for idx, item := range m.GetDataDisks() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, InstanceTypeValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, InstanceTypeValidationError{ + field: fmt.Sprintf("DataDisks[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return InstanceTypeValidationError{ field: fmt.Sprintf("DataDisks[%v]", idx), @@ -28106,9 +47302,29 @@ func (m *InstanceType) Validate() error { // no validation rules for AvailableQuota + if len(errors) > 0 { + return InstanceTypeMultiError(errors) + } + return nil } +// InstanceTypeMultiError is an error wrapping multiple validation errors +// returned by InstanceType.ValidateAll() if the designated constraints aren't met. +type InstanceTypeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m InstanceTypeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m InstanceTypeMultiError) AllErrors() []error { return m } + // InstanceTypeValidationError is the validation error returned by // InstanceType.Validate if the designated constraints aren't met. type InstanceTypeValidationError struct { @@ -28165,31 +47381,58 @@ var _ interface { // Validate checks the field values on GetMasterSuggestedMachinesRequest with // the rules defined in the proto definition for this message. If any rules -// are violated, an error is returned. +// are violated, the first error encountered is returned, or nil if there are +// no violations. func (m *GetMasterSuggestedMachinesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetMasterSuggestedMachinesRequest +// with the rules defined in the proto definition for this message. If any +// rules are violated, the result is a list of violation errors wrapped in +// GetMasterSuggestedMachinesRequestMultiError, or nil if none found. +func (m *GetMasterSuggestedMachinesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetMasterSuggestedMachinesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return GetMasterSuggestedMachinesRequestValidationError{ + err := GetMasterSuggestedMachinesRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) < 2 { - return GetMasterSuggestedMachinesRequestValidationError{ + err := GetMasterSuggestedMachinesRequestValidationError{ field: "Region", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _GetMasterSuggestedMachinesRequest_Level_InLookup[m.GetLevel()]; !ok { - return GetMasterSuggestedMachinesRequestValidationError{ + err := GetMasterSuggestedMachinesRequestValidationError{ field: "Level", reason: "value must be in list [L100 L500 L1000 L2000]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for AccountID @@ -28202,9 +47445,31 @@ func (m *GetMasterSuggestedMachinesRequest) Validate() error { // no validation rules for Zones + if len(errors) > 0 { + return GetMasterSuggestedMachinesRequestMultiError(errors) + } + return nil } +// GetMasterSuggestedMachinesRequestMultiError is an error wrapping multiple +// validation errors returned by +// GetMasterSuggestedMachinesRequest.ValidateAll() if the designated +// constraints aren't met. +type GetMasterSuggestedMachinesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetMasterSuggestedMachinesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetMasterSuggestedMachinesRequestMultiError) AllErrors() []error { return m } + // GetMasterSuggestedMachinesRequestValidationError is the validation error // returned by GetMasterSuggestedMachinesRequest.Validate if the designated // constraints aren't met. @@ -28271,12 +47536,27 @@ var _GetMasterSuggestedMachinesRequest_Level_InLookup = map[string]struct{}{ // Validate checks the field values on GetMasterSuggestedMachinesResponse with // the rules defined in the proto definition for this message. If any rules -// are violated, an error is returned. +// are violated, the first error encountered is returned, or nil if there are +// no violations. func (m *GetMasterSuggestedMachinesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetMasterSuggestedMachinesResponse +// with the rules defined in the proto definition for this message. If any +// rules are violated, the result is a list of violation errors wrapped in +// GetMasterSuggestedMachinesResponseMultiError, or nil if none found. +func (m *GetMasterSuggestedMachinesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetMasterSuggestedMachinesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -28286,7 +47566,26 @@ func (m *GetMasterSuggestedMachinesResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetMasterSuggestedMachinesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetMasterSuggestedMachinesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetMasterSuggestedMachinesResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -28298,9 +47597,31 @@ func (m *GetMasterSuggestedMachinesResponse) Validate() error { } + if len(errors) > 0 { + return GetMasterSuggestedMachinesResponseMultiError(errors) + } + return nil } +// GetMasterSuggestedMachinesResponseMultiError is an error wrapping multiple +// validation errors returned by +// GetMasterSuggestedMachinesResponse.ValidateAll() if the designated +// constraints aren't met. +type GetMasterSuggestedMachinesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetMasterSuggestedMachinesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetMasterSuggestedMachinesResponseMultiError) AllErrors() []error { return m } + // GetMasterSuggestedMachinesResponseValidationError is the validation error // returned by GetMasterSuggestedMachinesResponse.Validate if the designated // constraints aren't met. @@ -28360,17 +47681,35 @@ var _ interface { // Validate checks the field values on ListCloudInstancesRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudInstancesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudInstancesRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudInstancesRequestMultiError, or nil if none found. +func (m *ListCloudInstancesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudInstancesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return ListCloudInstancesRequestValidationError{ + err := ListCloudInstancesRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region @@ -28378,15 +47717,40 @@ func (m *ListCloudInstancesRequest) Validate() error { // no validation rules for AccountID if utf8.RuneCountInString(m.GetIpList()) < 1 { - return ListCloudInstancesRequestValidationError{ + err := ListCloudInstancesRequestValidationError{ field: "IpList", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return ListCloudInstancesRequestMultiError(errors) } return nil } +// ListCloudInstancesRequestMultiError is an error wrapping multiple validation +// errors returned by ListCloudInstancesRequest.ValidateAll() if the +// designated constraints aren't met. +type ListCloudInstancesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudInstancesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudInstancesRequestMultiError) AllErrors() []error { return m } + // ListCloudInstancesRequestValidationError is the validation error returned by // ListCloudInstancesRequest.Validate if the designated constraints aren't met. type ListCloudInstancesRequestValidationError struct { @@ -28445,12 +47809,26 @@ var _ interface { // Validate checks the field values on ListCloudInstancesResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudInstancesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudInstancesResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudInstancesResponseMultiError, or nil if none found. +func (m *ListCloudInstancesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudInstancesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -28460,7 +47838,26 @@ func (m *ListCloudInstancesResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudInstancesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudInstancesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudInstancesResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -28472,9 +47869,30 @@ func (m *ListCloudInstancesResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudInstancesResponseMultiError(errors) + } + return nil } +// ListCloudInstancesResponseMultiError is an error wrapping multiple +// validation errors returned by ListCloudInstancesResponse.ValidateAll() if +// the designated constraints aren't met. +type ListCloudInstancesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudInstancesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudInstancesResponseMultiError) AllErrors() []error { return m } + // ListCloudInstancesResponseValidationError is the validation error returned // by ListCloudInstancesResponse.Validate if the designated constraints aren't met. type ListCloudInstancesResponseValidationError struct { @@ -28532,12 +47950,27 @@ var _ interface { } = ListCloudInstancesResponseValidationError{} // Validate checks the field values on CloudNode with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CloudNode) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudNode with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CloudNodeMultiError, or nil +// if none found. +func (m *CloudNode) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudNode) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeID // no validation rules for InnerIP @@ -28564,9 +47997,29 @@ func (m *CloudNode) Validate() error { // no validation rules for CloudRegionNode + if len(errors) > 0 { + return CloudNodeMultiError(errors) + } + return nil } +// CloudNodeMultiError is an error wrapping multiple validation errors returned +// by CloudNode.ValidateAll() if the designated constraints aren't met. +type CloudNodeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudNodeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudNodeMultiError) AllErrors() []error { return m } + // CloudNodeValidationError is the validation error returned by // CloudNode.Validate if the designated constraints aren't met. type CloudNodeValidationError struct { @@ -28623,26 +48076,65 @@ var _ interface { // Validate checks the field values on GetCloudAccountTypeRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetCloudAccountTypeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudAccountTypeRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetCloudAccountTypeRequestMultiError, or nil if none found. +func (m *GetCloudAccountTypeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudAccountTypeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return GetCloudAccountTypeRequestValidationError{ + err := GetCloudAccountTypeRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region // no validation rules for AccountID + if len(errors) > 0 { + return GetCloudAccountTypeRequestMultiError(errors) + } + return nil } +// GetCloudAccountTypeRequestMultiError is an error wrapping multiple +// validation errors returned by GetCloudAccountTypeRequest.ValidateAll() if +// the designated constraints aren't met. +type GetCloudAccountTypeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudAccountTypeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudAccountTypeRequestMultiError) AllErrors() []error { return m } + // GetCloudAccountTypeRequestValidationError is the validation error returned // by GetCloudAccountTypeRequest.Validate if the designated constraints aren't met. type GetCloudAccountTypeRequestValidationError struct { @@ -28701,19 +48193,52 @@ var _ interface { // Validate checks the field values on GetCloudAccountTypeResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetCloudAccountTypeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudAccountTypeResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetCloudAccountTypeResponseMultiError, or nil if none found. +func (m *GetCloudAccountTypeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudAccountTypeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetCloudAccountTypeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetCloudAccountTypeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetCloudAccountTypeResponseValidationError{ field: "Data", @@ -28723,9 +48248,30 @@ func (m *GetCloudAccountTypeResponse) Validate() error { } } + if len(errors) > 0 { + return GetCloudAccountTypeResponseMultiError(errors) + } + return nil } +// GetCloudAccountTypeResponseMultiError is an error wrapping multiple +// validation errors returned by GetCloudAccountTypeResponse.ValidateAll() if +// the designated constraints aren't met. +type GetCloudAccountTypeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudAccountTypeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudAccountTypeResponseMultiError) AllErrors() []error { return m } + // GetCloudAccountTypeResponseValidationError is the validation error returned // by GetCloudAccountTypeResponse.Validate if the designated constraints // aren't met. @@ -28784,18 +48330,53 @@ var _ interface { } = GetCloudAccountTypeResponseValidationError{} // Validate checks the field values on CloudAccountType with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CloudAccountType) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudAccountType with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CloudAccountTypeMultiError, or nil if none found. +func (m *CloudAccountType) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudAccountType) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Type + if len(errors) > 0 { + return CloudAccountTypeMultiError(errors) + } + return nil } +// CloudAccountTypeMultiError is an error wrapping multiple validation errors +// returned by CloudAccountType.ValidateAll() if the designated constraints +// aren't met. +type CloudAccountTypeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudAccountTypeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudAccountTypeMultiError) AllErrors() []error { return m } + // CloudAccountTypeValidationError is the validation error returned by // CloudAccountType.Validate if the designated constraints aren't met. type CloudAccountTypeValidationError struct { @@ -28852,31 +48433,76 @@ var _ interface { // Validate checks the field values on GetCloudBandwidthPackagesRequest with // the rules defined in the proto definition for this message. If any rules -// are violated, an error is returned. +// are violated, the first error encountered is returned, or nil if there are +// no violations. func (m *GetCloudBandwidthPackagesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudBandwidthPackagesRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetCloudBandwidthPackagesRequestMultiError, or nil if none found. +func (m *GetCloudBandwidthPackagesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudBandwidthPackagesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 1 { - return GetCloudBandwidthPackagesRequestValidationError{ + err := GetCloudBandwidthPackagesRequestValidationError{ field: "CloudID", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetRegion()) < 1 { - return GetCloudBandwidthPackagesRequestValidationError{ + err := GetCloudBandwidthPackagesRequestValidationError{ field: "Region", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for AccountID + if len(errors) > 0 { + return GetCloudBandwidthPackagesRequestMultiError(errors) + } + return nil } +// GetCloudBandwidthPackagesRequestMultiError is an error wrapping multiple +// validation errors returned by +// GetCloudBandwidthPackagesRequest.ValidateAll() if the designated +// constraints aren't met. +type GetCloudBandwidthPackagesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudBandwidthPackagesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudBandwidthPackagesRequestMultiError) AllErrors() []error { return m } + // GetCloudBandwidthPackagesRequestValidationError is the validation error // returned by GetCloudBandwidthPackagesRequest.Validate if the designated // constraints aren't met. @@ -28936,12 +48562,27 @@ var _ interface { // Validate checks the field values on GetCloudBandwidthPackagesResponse with // the rules defined in the proto definition for this message. If any rules -// are violated, an error is returned. +// are violated, the first error encountered is returned, or nil if there are +// no violations. func (m *GetCloudBandwidthPackagesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetCloudBandwidthPackagesResponse +// with the rules defined in the proto definition for this message. If any +// rules are violated, the result is a list of violation errors wrapped in +// GetCloudBandwidthPackagesResponseMultiError, or nil if none found. +func (m *GetCloudBandwidthPackagesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetCloudBandwidthPackagesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -28951,7 +48592,26 @@ func (m *GetCloudBandwidthPackagesResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetCloudBandwidthPackagesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetCloudBandwidthPackagesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetCloudBandwidthPackagesResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -28963,9 +48623,31 @@ func (m *GetCloudBandwidthPackagesResponse) Validate() error { } + if len(errors) > 0 { + return GetCloudBandwidthPackagesResponseMultiError(errors) + } + return nil } +// GetCloudBandwidthPackagesResponseMultiError is an error wrapping multiple +// validation errors returned by +// GetCloudBandwidthPackagesResponse.ValidateAll() if the designated +// constraints aren't met. +type GetCloudBandwidthPackagesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetCloudBandwidthPackagesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetCloudBandwidthPackagesResponseMultiError) AllErrors() []error { return m } + // GetCloudBandwidthPackagesResponseValidationError is the validation error // returned by GetCloudBandwidthPackagesResponse.Validate if the designated // constraints aren't met. @@ -29025,12 +48707,26 @@ var _ interface { // Validate checks the field values on BandwidthPackageInfo with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *BandwidthPackageInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on BandwidthPackageInfo with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// BandwidthPackageInfoMultiError, or nil if none found. +func (m *BandwidthPackageInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *BandwidthPackageInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Id // no validation rules for Name @@ -29041,9 +48737,30 @@ func (m *BandwidthPackageInfo) Validate() error { // no validation rules for Bandwidth + if len(errors) > 0 { + return BandwidthPackageInfoMultiError(errors) + } + return nil } +// BandwidthPackageInfoMultiError is an error wrapping multiple validation +// errors returned by BandwidthPackageInfo.ValidateAll() if the designated +// constraints aren't met. +type BandwidthPackageInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m BandwidthPackageInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m BandwidthPackageInfoMultiError) AllErrors() []error { return m } + // BandwidthPackageInfoValidationError is the validation error returned by // BandwidthPackageInfo.Validate if the designated constraints aren't met. type BandwidthPackageInfoValidationError struct { @@ -29102,17 +48819,35 @@ var _ interface { // Validate checks the field values on ListCloudOsImageRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudOsImageRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudOsImageRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudOsImageRequestMultiError, or nil if none found. +func (m *ListCloudOsImageRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudOsImageRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return ListCloudOsImageRequestValidationError{ + err := ListCloudOsImageRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region @@ -29123,9 +48858,30 @@ func (m *ListCloudOsImageRequest) Validate() error { // no validation rules for ProjectID + if len(errors) > 0 { + return ListCloudOsImageRequestMultiError(errors) + } + return nil } +// ListCloudOsImageRequestMultiError is an error wrapping multiple validation +// errors returned by ListCloudOsImageRequest.ValidateAll() if the designated +// constraints aren't met. +type ListCloudOsImageRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudOsImageRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudOsImageRequestMultiError) AllErrors() []error { return m } + // ListCloudOsImageRequestValidationError is the validation error returned by // ListCloudOsImageRequest.Validate if the designated constraints aren't met. type ListCloudOsImageRequestValidationError struct { @@ -29184,12 +48940,26 @@ var _ interface { // Validate checks the field values on ListCloudOsImageResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudOsImageResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudOsImageResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudOsImageResponseMultiError, or nil if none found. +func (m *ListCloudOsImageResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudOsImageResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -29199,7 +48969,26 @@ func (m *ListCloudOsImageResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudOsImageResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudOsImageResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudOsImageResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -29211,9 +49000,30 @@ func (m *ListCloudOsImageResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudOsImageResponseMultiError(errors) + } + return nil } +// ListCloudOsImageResponseMultiError is an error wrapping multiple validation +// errors returned by ListCloudOsImageResponse.ValidateAll() if the designated +// constraints aren't met. +type ListCloudOsImageResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudOsImageResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudOsImageResponseMultiError) AllErrors() []error { return m } + // ListCloudOsImageResponseValidationError is the validation error returned by // ListCloudOsImageResponse.Validate if the designated constraints aren't met. type ListCloudOsImageResponseValidationError struct { @@ -29271,12 +49081,26 @@ var _ interface { } = ListCloudOsImageResponseValidationError{} // Validate checks the field values on OsImage with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *OsImage) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on OsImage with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in OsImageMultiError, or nil if none found. +func (m *OsImage) ValidateAll() error { + return m.validate(true) +} + +func (m *OsImage) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ImageID // no validation rules for Alias @@ -29296,7 +49120,26 @@ func (m *OsImage) Validate() error { for idx, item := range m.GetClusters() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, OsImageValidationError{ + field: fmt.Sprintf("Clusters[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, OsImageValidationError{ + field: fmt.Sprintf("Clusters[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return OsImageValidationError{ field: fmt.Sprintf("Clusters[%v]", idx), @@ -29308,9 +49151,29 @@ func (m *OsImage) Validate() error { } + if len(errors) > 0 { + return OsImageMultiError(errors) + } + return nil } +// OsImageMultiError is an error wrapping multiple validation errors returned +// by OsImage.ValidateAll() if the designated constraints aren't met. +type OsImageMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m OsImageMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m OsImageMultiError) AllErrors() []error { return m } + // OsImageValidationError is the validation error returned by OsImage.Validate // if the designated constraints aren't met. type OsImageValidationError struct { @@ -29366,20 +49229,54 @@ var _ interface { } = OsImageValidationError{} // Validate checks the field values on ClusterInfo with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ClusterInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ClusterInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ClusterInfoMultiError, or +// nil if none found. +func (m *ClusterInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *ClusterInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterName // no validation rules for ClusterID + if len(errors) > 0 { + return ClusterInfoMultiError(errors) + } + return nil } +// ClusterInfoMultiError is an error wrapping multiple validation errors +// returned by ClusterInfo.ValidateAll() if the designated constraints aren't met. +type ClusterInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ClusterInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ClusterInfoMultiError) AllErrors() []error { return m } + // ClusterInfoValidationError is the validation error returned by // ClusterInfo.Validate if the designated constraints aren't met. type ClusterInfoValidationError struct { @@ -29436,24 +49333,63 @@ var _ interface { // Validate checks the field values on ListCloudRuntimeInfoRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudRuntimeInfoRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudRuntimeInfoRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudRuntimeInfoRequestMultiError, or nil if none found. +func (m *ListCloudRuntimeInfoRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudRuntimeInfoRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterID if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return ListCloudRuntimeInfoRequestValidationError{ + err := ListCloudRuntimeInfoRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return ListCloudRuntimeInfoRequestMultiError(errors) } return nil } +// ListCloudRuntimeInfoRequestMultiError is an error wrapping multiple +// validation errors returned by ListCloudRuntimeInfoRequest.ValidateAll() if +// the designated constraints aren't met. +type ListCloudRuntimeInfoRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudRuntimeInfoRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudRuntimeInfoRequestMultiError) AllErrors() []error { return m } + // ListCloudRuntimeInfoRequestValidationError is the validation error returned // by ListCloudRuntimeInfoRequest.Validate if the designated constraints // aren't met. @@ -29513,38 +49449,102 @@ var _ interface { // Validate checks the field values on ListCloudRuntimeInfoResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudRuntimeInfoResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudRuntimeInfoResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudRuntimeInfoResponseMultiError, or nil if none found. +func (m *ListCloudRuntimeInfoResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudRuntimeInfoResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - for key, val := range m.GetData() { - _ = val - - // no validation rules for Data[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return ListCloudRuntimeInfoResponseValidationError{ - field: fmt.Sprintf("Data[%v]", key), - reason: "embedded message failed validation", - cause: err, + { + sorted_keys := make([]string, len(m.GetData())) + i := 0 + for key := range m.GetData() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetData()[key] + _ = val + + // no validation rules for Data[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudRuntimeInfoResponseValidationError{ + field: fmt.Sprintf("Data[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudRuntimeInfoResponseValidationError{ + field: fmt.Sprintf("Data[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return ListCloudRuntimeInfoResponseValidationError{ + field: fmt.Sprintf("Data[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } + } + } + if len(errors) > 0 { + return ListCloudRuntimeInfoResponseMultiError(errors) } return nil } +// ListCloudRuntimeInfoResponseMultiError is an error wrapping multiple +// validation errors returned by ListCloudRuntimeInfoResponse.ValidateAll() if +// the designated constraints aren't met. +type ListCloudRuntimeInfoResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudRuntimeInfoResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudRuntimeInfoResponseMultiError) AllErrors() []error { return m } + // ListCloudRuntimeInfoResponseValidationError is the validation error returned // by ListCloudRuntimeInfoResponse.Validate if the designated constraints // aren't met. @@ -29603,16 +49603,51 @@ var _ interface { } = ListCloudRuntimeInfoResponseValidationError{} // Validate checks the field values on RunTimeVersion with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *RunTimeVersion) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RunTimeVersion with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in RunTimeVersionMultiError, +// or nil if none found. +func (m *RunTimeVersion) ValidateAll() error { + return m.validate(true) +} + +func (m *RunTimeVersion) validate(all bool) error { if m == nil { return nil } + var errors []error + + if len(errors) > 0 { + return RunTimeVersionMultiError(errors) + } + return nil } +// RunTimeVersionMultiError is an error wrapping multiple validation errors +// returned by RunTimeVersion.ValidateAll() if the designated constraints +// aren't met. +type RunTimeVersionMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RunTimeVersionMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RunTimeVersionMultiError) AllErrors() []error { return m } + // RunTimeVersionValidationError is the validation error returned by // RunTimeVersion.Validate if the designated constraints aren't met. type RunTimeVersionValidationError struct { @@ -29669,26 +49704,65 @@ var _ interface { // Validate checks the field values on ListCloudProjectsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudProjectsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudProjectsRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudProjectsRequestMultiError, or nil if none found. +func (m *ListCloudProjectsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudProjectsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return ListCloudProjectsRequestValidationError{ + err := ListCloudProjectsRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region // no validation rules for AccountID + if len(errors) > 0 { + return ListCloudProjectsRequestMultiError(errors) + } + return nil } +// ListCloudProjectsRequestMultiError is an error wrapping multiple validation +// errors returned by ListCloudProjectsRequest.ValidateAll() if the designated +// constraints aren't met. +type ListCloudProjectsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudProjectsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudProjectsRequestMultiError) AllErrors() []error { return m } + // ListCloudProjectsRequestValidationError is the validation error returned by // ListCloudProjectsRequest.Validate if the designated constraints aren't met. type ListCloudProjectsRequestValidationError struct { @@ -29747,12 +49821,26 @@ var _ interface { // Validate checks the field values on ListCloudProjectsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudProjectsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudProjectsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudProjectsResponseMultiError, or nil if none found. +func (m *ListCloudProjectsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudProjectsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -29762,7 +49850,26 @@ func (m *ListCloudProjectsResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudProjectsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudProjectsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudProjectsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -29774,9 +49881,30 @@ func (m *ListCloudProjectsResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudProjectsResponseMultiError(errors) + } + return nil } +// ListCloudProjectsResponseMultiError is an error wrapping multiple validation +// errors returned by ListCloudProjectsResponse.ValidateAll() if the +// designated constraints aren't met. +type ListCloudProjectsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudProjectsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudProjectsResponseMultiError) AllErrors() []error { return m } + // ListCloudProjectsResponseValidationError is the validation error returned by // ListCloudProjectsResponse.Validate if the designated constraints aren't met. type ListCloudProjectsResponseValidationError struct { @@ -29834,20 +49962,54 @@ var _ interface { } = ListCloudProjectsResponseValidationError{} // Validate checks the field values on CloudProject with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CloudProject) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudProject with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CloudProjectMultiError, or +// nil if none found. +func (m *CloudProject) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudProject) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProjectID // no validation rules for ProjectName + if len(errors) > 0 { + return CloudProjectMultiError(errors) + } + return nil } +// CloudProjectMultiError is an error wrapping multiple validation errors +// returned by CloudProject.ValidateAll() if the designated constraints aren't met. +type CloudProjectMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudProjectMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudProjectMultiError) AllErrors() []error { return m } + // CloudProjectValidationError is the validation error returned by // CloudProject.Validate if the designated constraints aren't met. type CloudProjectValidationError struct { @@ -29904,17 +50066,35 @@ var _ interface { // Validate checks the field values on ListCloudVpcsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudVpcsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudVpcsRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudVpcsRequestMultiError, or nil if none found. +func (m *ListCloudVpcsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudVpcsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return ListCloudVpcsRequestValidationError{ + err := ListCloudVpcsRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region @@ -29925,9 +50105,30 @@ func (m *ListCloudVpcsRequest) Validate() error { // no validation rules for ResourceGroupName + if len(errors) > 0 { + return ListCloudVpcsRequestMultiError(errors) + } + return nil } +// ListCloudVpcsRequestMultiError is an error wrapping multiple validation +// errors returned by ListCloudVpcsRequest.ValidateAll() if the designated +// constraints aren't met. +type ListCloudVpcsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudVpcsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudVpcsRequestMultiError) AllErrors() []error { return m } + // ListCloudVpcsRequestValidationError is the validation error returned by // ListCloudVpcsRequest.Validate if the designated constraints aren't met. type ListCloudVpcsRequestValidationError struct { @@ -29986,12 +50187,26 @@ var _ interface { // Validate checks the field values on ListCloudVpcsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudVpcsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudVpcsResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudVpcsResponseMultiError, or nil if none found. +func (m *ListCloudVpcsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudVpcsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -30001,7 +50216,26 @@ func (m *ListCloudVpcsResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudVpcsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudVpcsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudVpcsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -30013,9 +50247,30 @@ func (m *ListCloudVpcsResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudVpcsResponseMultiError(errors) + } + return nil } +// ListCloudVpcsResponseMultiError is an error wrapping multiple validation +// errors returned by ListCloudVpcsResponse.ValidateAll() if the designated +// constraints aren't met. +type ListCloudVpcsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudVpcsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudVpcsResponseMultiError) AllErrors() []error { return m } + // ListCloudVpcsResponseValidationError is the validation error returned by // ListCloudVpcsResponse.Validate if the designated constraints aren't met. type ListCloudVpcsResponseValidationError struct { @@ -30073,12 +50328,27 @@ var _ interface { } = ListCloudVpcsResponseValidationError{} // Validate checks the field values on CloudVpc with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CloudVpc) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudVpc with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CloudVpcMultiError, or nil +// if none found. +func (m *CloudVpc) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudVpc) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Name // no validation rules for VpcId @@ -30090,7 +50360,26 @@ func (m *CloudVpc) Validate() error { for idx, item := range m.GetCidrs() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudVpcValidationError{ + field: fmt.Sprintf("Cidrs[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudVpcValidationError{ + field: fmt.Sprintf("Cidrs[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudVpcValidationError{ field: fmt.Sprintf("Cidrs[%v]", idx), @@ -30104,9 +50393,29 @@ func (m *CloudVpc) Validate() error { // no validation rules for AllocateIpNum + if len(errors) > 0 { + return CloudVpcMultiError(errors) + } + return nil } +// CloudVpcMultiError is an error wrapping multiple validation errors returned +// by CloudVpc.ValidateAll() if the designated constraints aren't met. +type CloudVpcMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudVpcMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudVpcMultiError) AllErrors() []error { return m } + // CloudVpcValidationError is the validation error returned by // CloudVpc.Validate if the designated constraints aren't met. type CloudVpcValidationError struct { @@ -30162,20 +50471,55 @@ var _ interface { } = CloudVpcValidationError{} // Validate checks the field values on AssistantCidr with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *AssistantCidr) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on AssistantCidr with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in AssistantCidrMultiError, or +// nil if none found. +func (m *AssistantCidr) ValidateAll() error { + return m.validate(true) +} + +func (m *AssistantCidr) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Cidr // no validation rules for CidrType + if len(errors) > 0 { + return AssistantCidrMultiError(errors) + } + return nil } +// AssistantCidrMultiError is an error wrapping multiple validation errors +// returned by AssistantCidr.ValidateAll() if the designated constraints +// aren't met. +type AssistantCidrMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m AssistantCidrMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m AssistantCidrMultiError) AllErrors() []error { return m } + // AssistantCidrValidationError is the validation error returned by // AssistantCidr.Validate if the designated constraints aren't met. type AssistantCidrValidationError struct { @@ -30232,17 +50576,35 @@ var _ interface { // Validate checks the field values on ListCloudSubnetsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudSubnetsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudSubnetsRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudSubnetsRequestMultiError, or nil if none found. +func (m *ListCloudSubnetsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudSubnetsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return ListCloudSubnetsRequestValidationError{ + err := ListCloudSubnetsRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region @@ -30261,9 +50623,30 @@ func (m *ListCloudSubnetsRequest) Validate() error { // no validation rules for Name + if len(errors) > 0 { + return ListCloudSubnetsRequestMultiError(errors) + } + return nil } +// ListCloudSubnetsRequestMultiError is an error wrapping multiple validation +// errors returned by ListCloudSubnetsRequest.ValidateAll() if the designated +// constraints aren't met. +type ListCloudSubnetsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudSubnetsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudSubnetsRequestMultiError) AllErrors() []error { return m } + // ListCloudSubnetsRequestValidationError is the validation error returned by // ListCloudSubnetsRequest.Validate if the designated constraints aren't met. type ListCloudSubnetsRequestValidationError struct { @@ -30322,12 +50705,26 @@ var _ interface { // Validate checks the field values on ListCloudSubnetsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudSubnetsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudSubnetsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudSubnetsResponseMultiError, or nil if none found. +func (m *ListCloudSubnetsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudSubnetsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -30337,7 +50734,26 @@ func (m *ListCloudSubnetsResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudSubnetsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudSubnetsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudSubnetsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -30349,9 +50765,30 @@ func (m *ListCloudSubnetsResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudSubnetsResponseMultiError(errors) + } + return nil } +// ListCloudSubnetsResponseMultiError is an error wrapping multiple validation +// errors returned by ListCloudSubnetsResponse.ValidateAll() if the designated +// constraints aren't met. +type ListCloudSubnetsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudSubnetsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudSubnetsResponseMultiError) AllErrors() []error { return m } + // ListCloudSubnetsResponseValidationError is the validation error returned by // ListCloudSubnetsResponse.Validate if the designated constraints aren't met. type ListCloudSubnetsResponseValidationError struct { @@ -30409,12 +50846,26 @@ var _ interface { } = ListCloudSubnetsResponseValidationError{} // Validate checks the field values on Subnet with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Subnet) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Subnet with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in SubnetMultiError, or nil if none found. +func (m *Subnet) ValidateAll() error { + return m.validate(true) +} + +func (m *Subnet) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for VpcID // no validation rules for SubnetID @@ -30431,7 +50882,26 @@ func (m *Subnet) Validate() error { // no validation rules for ZoneName - if v, ok := interface{}(m.GetCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, SubnetValidationError{ + field: "Cluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, SubnetValidationError{ + field: "Cluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return SubnetValidationError{ field: "Cluster", @@ -30443,9 +50913,29 @@ func (m *Subnet) Validate() error { // no validation rules for HwNeutronSubnetID + if len(errors) > 0 { + return SubnetMultiError(errors) + } + return nil } +// SubnetMultiError is an error wrapping multiple validation errors returned by +// Subnet.ValidateAll() if the designated constraints aren't met. +type SubnetMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SubnetMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SubnetMultiError) AllErrors() []error { return m } + // SubnetValidationError is the validation error returned by Subnet.Validate if // the designated constraints aren't met. type SubnetValidationError struct { @@ -30502,17 +50992,35 @@ var _ interface { // Validate checks the field values on CheckCidrConflictFromVpcRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CheckCidrConflictFromVpcRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CheckCidrConflictFromVpcRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// CheckCidrConflictFromVpcRequestMultiError, or nil if none found. +func (m *CheckCidrConflictFromVpcRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CheckCidrConflictFromVpcRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return CheckCidrConflictFromVpcRequestValidationError{ + err := CheckCidrConflictFromVpcRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for VpcId @@ -30520,17 +51028,42 @@ func (m *CheckCidrConflictFromVpcRequest) Validate() error { // no validation rules for Cidr if utf8.RuneCountInString(m.GetRegion()) < 2 { - return CheckCidrConflictFromVpcRequestValidationError{ + err := CheckCidrConflictFromVpcRequestValidationError{ field: "Region", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for AccountID + if len(errors) > 0 { + return CheckCidrConflictFromVpcRequestMultiError(errors) + } + return nil } +// CheckCidrConflictFromVpcRequestMultiError is an error wrapping multiple +// validation errors returned by CheckCidrConflictFromVpcRequest.ValidateAll() +// if the designated constraints aren't met. +type CheckCidrConflictFromVpcRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CheckCidrConflictFromVpcRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CheckCidrConflictFromVpcRequestMultiError) AllErrors() []error { return m } + // CheckCidrConflictFromVpcRequestValidationError is the validation error // returned by CheckCidrConflictFromVpcRequest.Validate if the designated // constraints aren't met. @@ -30590,19 +51123,53 @@ var _ interface { // Validate checks the field values on CheckCidrConflictFromVpcResponse with // the rules defined in the proto definition for this message. If any rules -// are violated, an error is returned. +// are violated, the first error encountered is returned, or nil if there are +// no violations. func (m *CheckCidrConflictFromVpcResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CheckCidrConflictFromVpcResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// CheckCidrConflictFromVpcResponseMultiError, or nil if none found. +func (m *CheckCidrConflictFromVpcResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CheckCidrConflictFromVpcResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CheckCidrConflictFromVpcResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CheckCidrConflictFromVpcResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CheckCidrConflictFromVpcResponseValidationError{ field: "Data", @@ -30612,9 +51179,31 @@ func (m *CheckCidrConflictFromVpcResponse) Validate() error { } } + if len(errors) > 0 { + return CheckCidrConflictFromVpcResponseMultiError(errors) + } + return nil } +// CheckCidrConflictFromVpcResponseMultiError is an error wrapping multiple +// validation errors returned by +// CheckCidrConflictFromVpcResponse.ValidateAll() if the designated +// constraints aren't met. +type CheckCidrConflictFromVpcResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CheckCidrConflictFromVpcResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CheckCidrConflictFromVpcResponseMultiError) AllErrors() []error { return m } + // CheckCidrConflictFromVpcResponseValidationError is the validation error // returned by CheckCidrConflictFromVpcResponse.Validate if the designated // constraints aren't met. @@ -30673,16 +51262,50 @@ var _ interface { } = CheckCidrConflictFromVpcResponseValidationError{} // Validate checks the field values on ConflictInfo with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ConflictInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ConflictInfo with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ConflictInfoMultiError, or +// nil if none found. +func (m *ConflictInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *ConflictInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + + if len(errors) > 0 { + return ConflictInfoMultiError(errors) + } + return nil } +// ConflictInfoMultiError is an error wrapping multiple validation errors +// returned by ConflictInfo.ValidateAll() if the designated constraints aren't met. +type ConflictInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ConflictInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ConflictInfoMultiError) AllErrors() []error { return m } + // ConflictInfoValidationError is the validation error returned by // ConflictInfo.Validate if the designated constraints aren't met. type ConflictInfoValidationError struct { @@ -30739,17 +51362,35 @@ var _ interface { // Validate checks the field values on ListCloudSecurityGroupsRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudSecurityGroupsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudSecurityGroupsRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ListCloudSecurityGroupsRequestMultiError, or nil if none found. +func (m *ListCloudSecurityGroupsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudSecurityGroupsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return ListCloudSecurityGroupsRequestValidationError{ + err := ListCloudSecurityGroupsRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region @@ -30758,9 +51399,30 @@ func (m *ListCloudSecurityGroupsRequest) Validate() error { // no validation rules for ResourceGroupName + if len(errors) > 0 { + return ListCloudSecurityGroupsRequestMultiError(errors) + } + return nil } +// ListCloudSecurityGroupsRequestMultiError is an error wrapping multiple +// validation errors returned by ListCloudSecurityGroupsRequest.ValidateAll() +// if the designated constraints aren't met. +type ListCloudSecurityGroupsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudSecurityGroupsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudSecurityGroupsRequestMultiError) AllErrors() []error { return m } + // ListCloudSecurityGroupsRequestValidationError is the validation error // returned by ListCloudSecurityGroupsRequest.Validate if the designated // constraints aren't met. @@ -30820,12 +51482,26 @@ var _ interface { // Validate checks the field values on ListCloudSecurityGroupsResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudSecurityGroupsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudSecurityGroupsResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ListCloudSecurityGroupsResponseMultiError, or nil if none found. +func (m *ListCloudSecurityGroupsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudSecurityGroupsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -30835,7 +51511,26 @@ func (m *ListCloudSecurityGroupsResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudSecurityGroupsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudSecurityGroupsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudSecurityGroupsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -30847,9 +51542,30 @@ func (m *ListCloudSecurityGroupsResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudSecurityGroupsResponseMultiError(errors) + } + return nil } +// ListCloudSecurityGroupsResponseMultiError is an error wrapping multiple +// validation errors returned by ListCloudSecurityGroupsResponse.ValidateAll() +// if the designated constraints aren't met. +type ListCloudSecurityGroupsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudSecurityGroupsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudSecurityGroupsResponseMultiError) AllErrors() []error { return m } + // ListCloudSecurityGroupsResponseValidationError is the validation error // returned by ListCloudSecurityGroupsResponse.Validate if the designated // constraints aren't met. @@ -30909,17 +51625,35 @@ var _ interface { // Validate checks the field values on ListKeyPairsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListKeyPairsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListKeyPairsRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListKeyPairsRequestMultiError, or nil if none found. +func (m *ListKeyPairsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListKeyPairsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetCloudID()) < 2 { - return ListKeyPairsRequestValidationError{ + err := ListKeyPairsRequestValidationError{ field: "CloudID", reason: "value length must be at least 2 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Region @@ -30928,9 +51662,30 @@ func (m *ListKeyPairsRequest) Validate() error { // no validation rules for ResourceGroupName + if len(errors) > 0 { + return ListKeyPairsRequestMultiError(errors) + } + return nil } +// ListKeyPairsRequestMultiError is an error wrapping multiple validation +// errors returned by ListKeyPairsRequest.ValidateAll() if the designated +// constraints aren't met. +type ListKeyPairsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListKeyPairsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListKeyPairsRequestMultiError) AllErrors() []error { return m } + // ListKeyPairsRequestValidationError is the validation error returned by // ListKeyPairsRequest.Validate if the designated constraints aren't met. type ListKeyPairsRequestValidationError struct { @@ -30989,12 +51744,26 @@ var _ interface { // Validate checks the field values on ListKeyPairsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListKeyPairsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListKeyPairsResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListKeyPairsResponseMultiError, or nil if none found. +func (m *ListKeyPairsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListKeyPairsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -31004,7 +51773,26 @@ func (m *ListKeyPairsResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListKeyPairsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListKeyPairsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListKeyPairsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -31016,9 +51804,30 @@ func (m *ListKeyPairsResponse) Validate() error { } + if len(errors) > 0 { + return ListKeyPairsResponseMultiError(errors) + } + return nil } +// ListKeyPairsResponseMultiError is an error wrapping multiple validation +// errors returned by ListKeyPairsResponse.ValidateAll() if the designated +// constraints aren't met. +type ListKeyPairsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListKeyPairsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListKeyPairsResponseMultiError) AllErrors() []error { return m } + // ListKeyPairsResponseValidationError is the validation error returned by // ListKeyPairsResponse.Validate if the designated constraints aren't met. type ListKeyPairsResponseValidationError struct { @@ -31076,21 +51885,55 @@ var _ interface { } = ListKeyPairsResponseValidationError{} // Validate checks the field values on KeyPair with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *KeyPair) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on KeyPair with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in KeyPairMultiError, or nil if none found. +func (m *KeyPair) ValidateAll() error { + return m.validate(true) +} + +func (m *KeyPair) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for KeyID // no validation rules for KeyName // no validation rules for Description + if len(errors) > 0 { + return KeyPairMultiError(errors) + } + return nil } +// KeyPairMultiError is an error wrapping multiple validation errors returned +// by KeyPair.ValidateAll() if the designated constraints aren't met. +type KeyPairMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m KeyPairMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m KeyPairMultiError) AllErrors() []error { return m } + // KeyPairValidationError is the validation error returned by KeyPair.Validate // if the designated constraints aren't met. type KeyPairValidationError struct { @@ -31147,12 +51990,26 @@ var _ interface { // Validate checks the field values on ListOperationLogsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListOperationLogsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListOperationLogsRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListOperationLogsRequestMultiError, or nil if none found. +func (m *ListOperationLogsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListOperationLogsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ResourceType // no validation rules for ResourceID @@ -31162,17 +52019,25 @@ func (m *ListOperationLogsRequest) Validate() error { // no validation rules for EndTime if m.GetLimit() <= 0 { - return ListOperationLogsRequestValidationError{ + err := ListOperationLogsRequestValidationError{ field: "Limit", reason: "value must be greater than 0", } + if !all { + return err + } + errors = append(errors, err) } if m.GetPage() <= 0 { - return ListOperationLogsRequestValidationError{ + err := ListOperationLogsRequestValidationError{ field: "Page", reason: "value must be greater than 0", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Simple @@ -31199,9 +52064,30 @@ func (m *ListOperationLogsRequest) Validate() error { // no validation rules for OpUser + if len(errors) > 0 { + return ListOperationLogsRequestMultiError(errors) + } + return nil } +// ListOperationLogsRequestMultiError is an error wrapping multiple validation +// errors returned by ListOperationLogsRequest.ValidateAll() if the designated +// constraints aren't met. +type ListOperationLogsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListOperationLogsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListOperationLogsRequestMultiError) AllErrors() []error { return m } + // ListOperationLogsRequestValidationError is the validation error returned by // ListOperationLogsRequest.Validate if the designated constraints aren't met. type ListOperationLogsRequestValidationError struct { @@ -31260,33 +52146,76 @@ var _ interface { // Validate checks the field values on ListTaskStepLogsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListTaskStepLogsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListTaskStepLogsRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListTaskStepLogsRequestMultiError, or nil if none found. +func (m *ListTaskStepLogsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListTaskStepLogsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for TaskID // no validation rules for StepName if m.GetPage() <= 0 { - return ListTaskStepLogsRequestValidationError{ + err := ListTaskStepLogsRequestValidationError{ field: "Page", reason: "value must be greater than 0", } + if !all { + return err + } + errors = append(errors, err) } if m.GetLimit() <= 0 { - return ListTaskStepLogsRequestValidationError{ + err := ListTaskStepLogsRequestValidationError{ field: "Limit", reason: "value must be greater than 0", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return ListTaskStepLogsRequestMultiError(errors) } return nil } +// ListTaskStepLogsRequestMultiError is an error wrapping multiple validation +// errors returned by ListTaskStepLogsRequest.ValidateAll() if the designated +// constraints aren't met. +type ListTaskStepLogsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListTaskStepLogsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListTaskStepLogsRequestMultiError) AllErrors() []error { return m } + // ListTaskStepLogsRequestValidationError is the validation error returned by // ListTaskStepLogsRequest.Validate if the designated constraints aren't met. type ListTaskStepLogsRequestValidationError struct { @@ -31345,19 +52274,52 @@ var _ interface { // Validate checks the field values on ListOperationLogsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListOperationLogsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListOperationLogsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListOperationLogsResponseMultiError, or nil if none found. +func (m *ListOperationLogsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListOperationLogsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListOperationLogsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListOperationLogsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListOperationLogsResponseValidationError{ field: "Data", @@ -31367,9 +52329,30 @@ func (m *ListOperationLogsResponse) Validate() error { } } + if len(errors) > 0 { + return ListOperationLogsResponseMultiError(errors) + } + return nil } +// ListOperationLogsResponseMultiError is an error wrapping multiple validation +// errors returned by ListOperationLogsResponse.ValidateAll() if the +// designated constraints aren't met. +type ListOperationLogsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListOperationLogsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListOperationLogsResponseMultiError) AllErrors() []error { return m } + // ListOperationLogsResponseValidationError is the validation error returned by // ListOperationLogsResponse.Validate if the designated constraints aren't met. type ListOperationLogsResponseValidationError struct { @@ -31428,17 +52411,52 @@ var _ interface { // Validate checks the field values on ListTaskRecordsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListTaskRecordsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListTaskRecordsRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListTaskRecordsRequestMultiError, or nil if none found. +func (m *ListTaskRecordsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListTaskRecordsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for TaskID + if len(errors) > 0 { + return ListTaskRecordsRequestMultiError(errors) + } + return nil } +// ListTaskRecordsRequestMultiError is an error wrapping multiple validation +// errors returned by ListTaskRecordsRequest.ValidateAll() if the designated +// constraints aren't met. +type ListTaskRecordsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListTaskRecordsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListTaskRecordsRequestMultiError) AllErrors() []error { return m } + // ListTaskRecordsRequestValidationError is the validation error returned by // ListTaskRecordsRequest.Validate if the designated constraints aren't met. type ListTaskRecordsRequestValidationError struct { @@ -31497,19 +52515,52 @@ var _ interface { // Validate checks the field values on ListTaskRecordsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListTaskRecordsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListTaskRecordsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListTaskRecordsResponseMultiError, or nil if none found. +func (m *ListTaskRecordsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListTaskRecordsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListTaskRecordsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListTaskRecordsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListTaskRecordsResponseValidationError{ field: "Data", @@ -31519,9 +52570,30 @@ func (m *ListTaskRecordsResponse) Validate() error { } } + if len(errors) > 0 { + return ListTaskRecordsResponseMultiError(errors) + } + return nil } +// ListTaskRecordsResponseMultiError is an error wrapping multiple validation +// errors returned by ListTaskRecordsResponse.ValidateAll() if the designated +// constraints aren't met. +type ListTaskRecordsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListTaskRecordsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListTaskRecordsResponseMultiError) AllErrors() []error { return m } + // ListTaskRecordsResponseValidationError is the validation error returned by // ListTaskRecordsResponse.Validate if the designated constraints aren't met. type ListTaskRecordsResponseValidationError struct { @@ -31580,18 +52652,51 @@ var _ interface { // Validate checks the field values on TaskRecordsResponseData with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *TaskRecordsResponseData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TaskRecordsResponseData with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// TaskRecordsResponseDataMultiError, or nil if none found. +func (m *TaskRecordsResponseData) ValidateAll() error { + return m.validate(true) +} + +func (m *TaskRecordsResponseData) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Status for idx, item := range m.GetStep() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, TaskRecordsResponseDataValidationError{ + field: fmt.Sprintf("Step[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, TaskRecordsResponseDataValidationError{ + field: fmt.Sprintf("Step[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return TaskRecordsResponseDataValidationError{ field: fmt.Sprintf("Step[%v]", idx), @@ -31603,9 +52708,30 @@ func (m *TaskRecordsResponseData) Validate() error { } + if len(errors) > 0 { + return TaskRecordsResponseDataMultiError(errors) + } + return nil } +// TaskRecordsResponseDataMultiError is an error wrapping multiple validation +// errors returned by TaskRecordsResponseData.ValidateAll() if the designated +// constraints aren't met. +type TaskRecordsResponseDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TaskRecordsResponseDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TaskRecordsResponseDataMultiError) AllErrors() []error { return m } + // TaskRecordsResponseDataValidationError is the validation error returned by // TaskRecordsResponseData.Validate if the designated constraints aren't met. type TaskRecordsResponseDataValidationError struct { @@ -31663,13 +52789,27 @@ var _ interface { } = TaskRecordsResponseDataValidationError{} // Validate checks the field values on TaskRecordStep with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *TaskRecordStep) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TaskRecordStep with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in TaskRecordStepMultiError, +// or nil if none found. +func (m *TaskRecordStep) ValidateAll() error { + return m.validate(true) +} + +func (m *TaskRecordStep) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Name // no validation rules for Status @@ -31681,7 +52821,26 @@ func (m *TaskRecordStep) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, TaskRecordStepValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, TaskRecordStepValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return TaskRecordStepValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -31697,9 +52856,30 @@ func (m *TaskRecordStep) Validate() error { // no validation rules for AllowRetry + if len(errors) > 0 { + return TaskRecordStepMultiError(errors) + } + return nil } +// TaskRecordStepMultiError is an error wrapping multiple validation errors +// returned by TaskRecordStep.ValidateAll() if the designated constraints +// aren't met. +type TaskRecordStepMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TaskRecordStepMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TaskRecordStepMultiError) AllErrors() []error { return m } + // TaskRecordStepValidationError is the validation error returned by // TaskRecordStep.Validate if the designated constraints aren't met. type TaskRecordStepValidationError struct { @@ -31756,21 +52936,56 @@ var _ interface { // Validate checks the field values on TaskRecordStepData with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *TaskRecordStepData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TaskRecordStepData with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// TaskRecordStepDataMultiError, or nil if none found. +func (m *TaskRecordStepData) ValidateAll() error { + return m.validate(true) +} + +func (m *TaskRecordStepData) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Log // no validation rules for Timestamp // no validation rules for Level + if len(errors) > 0 { + return TaskRecordStepDataMultiError(errors) + } + return nil } +// TaskRecordStepDataMultiError is an error wrapping multiple validation errors +// returned by TaskRecordStepData.ValidateAll() if the designated constraints +// aren't met. +type TaskRecordStepDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TaskRecordStepDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TaskRecordStepDataMultiError) AllErrors() []error { return m } + // TaskRecordStepDataValidationError is the validation error returned by // TaskRecordStepData.Validate if the designated constraints aren't met. type TaskRecordStepDataValidationError struct { @@ -31829,18 +53044,51 @@ var _ interface { // Validate checks the field values on ListOperationLogsResponseData with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListOperationLogsResponseData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListOperationLogsResponseData with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// ListOperationLogsResponseDataMultiError, or nil if none found. +func (m *ListOperationLogsResponseData) ValidateAll() error { + return m.validate(true) +} + +func (m *ListOperationLogsResponseData) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Count for idx, item := range m.GetResults() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListOperationLogsResponseDataValidationError{ + field: fmt.Sprintf("Results[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListOperationLogsResponseDataValidationError{ + field: fmt.Sprintf("Results[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListOperationLogsResponseDataValidationError{ field: fmt.Sprintf("Results[%v]", idx), @@ -31852,9 +53100,30 @@ func (m *ListOperationLogsResponseData) Validate() error { } + if len(errors) > 0 { + return ListOperationLogsResponseDataMultiError(errors) + } + return nil } +// ListOperationLogsResponseDataMultiError is an error wrapping multiple +// validation errors returned by ListOperationLogsResponseData.ValidateAll() +// if the designated constraints aren't met. +type ListOperationLogsResponseDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListOperationLogsResponseDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListOperationLogsResponseDataMultiError) AllErrors() []error { return m } + // ListOperationLogsResponseDataValidationError is the validation error // returned by ListOperationLogsResponseData.Validate if the designated // constraints aren't met. @@ -31914,12 +53183,26 @@ var _ interface { // Validate checks the field values on OperationLogDetail with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *OperationLogDetail) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on OperationLogDetail with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// OperationLogDetailMultiError, or nil if none found. +func (m *OperationLogDetail) ValidateAll() error { + return m.validate(true) +} + +func (m *OperationLogDetail) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ResourceType // no validation rules for ResourceID @@ -31932,7 +53215,26 @@ func (m *OperationLogDetail) Validate() error { // no validation rules for CreateTime - if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, OperationLogDetailValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, OperationLogDetailValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return OperationLogDetailValidationError{ field: "Task", @@ -31948,9 +53250,30 @@ func (m *OperationLogDetail) Validate() error { // no validation rules for ResourceName + if len(errors) > 0 { + return OperationLogDetailMultiError(errors) + } + return nil } +// OperationLogDetailMultiError is an error wrapping multiple validation errors +// returned by OperationLogDetail.ValidateAll() if the designated constraints +// aren't met. +type OperationLogDetailMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m OperationLogDetailMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m OperationLogDetailMultiError) AllErrors() []error { return m } + // OperationLogDetailValidationError is the validation error returned by // OperationLogDetail.Validate if the designated constraints aren't met. type OperationLogDetailValidationError struct { @@ -32009,19 +53332,52 @@ var _ interface { // Validate checks the field values on ListTaskStepLogsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListTaskStepLogsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListTaskStepLogsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListTaskStepLogsResponseMultiError, or nil if none found. +func (m *ListTaskStepLogsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListTaskStepLogsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListTaskStepLogsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListTaskStepLogsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListTaskStepLogsResponseValidationError{ field: "Data", @@ -32031,9 +53387,30 @@ func (m *ListTaskStepLogsResponse) Validate() error { } } + if len(errors) > 0 { + return ListTaskStepLogsResponseMultiError(errors) + } + return nil } +// ListTaskStepLogsResponseMultiError is an error wrapping multiple validation +// errors returned by ListTaskStepLogsResponse.ValidateAll() if the designated +// constraints aren't met. +type ListTaskStepLogsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListTaskStepLogsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListTaskStepLogsResponseMultiError) AllErrors() []error { return m } + // ListTaskStepLogsResponseValidationError is the validation error returned by // ListTaskStepLogsResponse.Validate if the designated constraints aren't met. type ListTaskStepLogsResponseValidationError struct { @@ -32092,18 +53469,51 @@ var _ interface { // Validate checks the field values on ListTaskStepLogsResponseData with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListTaskStepLogsResponseData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListTaskStepLogsResponseData with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListTaskStepLogsResponseDataMultiError, or nil if none found. +func (m *ListTaskStepLogsResponseData) ValidateAll() error { + return m.validate(true) +} + +func (m *ListTaskStepLogsResponseData) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Count for idx, item := range m.GetResults() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListTaskStepLogsResponseDataValidationError{ + field: fmt.Sprintf("Results[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListTaskStepLogsResponseDataValidationError{ + field: fmt.Sprintf("Results[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListTaskStepLogsResponseDataValidationError{ field: fmt.Sprintf("Results[%v]", idx), @@ -32115,9 +53525,30 @@ func (m *ListTaskStepLogsResponseData) Validate() error { } + if len(errors) > 0 { + return ListTaskStepLogsResponseDataMultiError(errors) + } + return nil } +// ListTaskStepLogsResponseDataMultiError is an error wrapping multiple +// validation errors returned by ListTaskStepLogsResponseData.ValidateAll() if +// the designated constraints aren't met. +type ListTaskStepLogsResponseDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListTaskStepLogsResponseDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListTaskStepLogsResponseDataMultiError) AllErrors() []error { return m } + // ListTaskStepLogsResponseDataValidationError is the validation error returned // by ListTaskStepLogsResponseData.Validate if the designated constraints // aren't met. @@ -32176,13 +53607,27 @@ var _ interface { } = ListTaskStepLogsResponseDataValidationError{} // Validate checks the field values on TaskStepLogDetail with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *TaskStepLogDetail) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TaskStepLogDetail with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// TaskStepLogDetailMultiError, or nil if none found. +func (m *TaskStepLogDetail) ValidateAll() error { + return m.validate(true) +} + +func (m *TaskStepLogDetail) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for TaskID // no validation rules for StepName @@ -32193,9 +53638,30 @@ func (m *TaskStepLogDetail) Validate() error { // no validation rules for CreateTime + if len(errors) > 0 { + return TaskStepLogDetailMultiError(errors) + } + return nil } +// TaskStepLogDetailMultiError is an error wrapping multiple validation errors +// returned by TaskStepLogDetail.ValidateAll() if the designated constraints +// aren't met. +type TaskStepLogDetailMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TaskStepLogDetailMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TaskStepLogDetailMultiError) AllErrors() []error { return m } + // TaskStepLogDetailValidationError is the validation error returned by // TaskStepLogDetail.Validate if the designated constraints aren't met. type TaskStepLogDetailValidationError struct { @@ -32254,26 +53720,65 @@ var _ interface { // Validate checks the field values on CleanDbHistoryDataRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CleanDbHistoryDataRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CleanDbHistoryDataRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CleanDbHistoryDataRequestMultiError, or nil if none found. +func (m *CleanDbHistoryDataRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CleanDbHistoryDataRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if _, ok := _CleanDbHistoryDataRequest_DataType_InLookup[m.GetDataType()]; !ok { - return CleanDbHistoryDataRequestValidationError{ + err := CleanDbHistoryDataRequestValidationError{ field: "DataType", reason: "value must be in list [task operationlog]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for StartTime // no validation rules for EndTime + if len(errors) > 0 { + return CleanDbHistoryDataRequestMultiError(errors) + } + return nil } +// CleanDbHistoryDataRequestMultiError is an error wrapping multiple validation +// errors returned by CleanDbHistoryDataRequest.ValidateAll() if the +// designated constraints aren't met. +type CleanDbHistoryDataRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CleanDbHistoryDataRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CleanDbHistoryDataRequestMultiError) AllErrors() []error { return m } + // CleanDbHistoryDataRequestValidationError is the validation error returned by // CleanDbHistoryDataRequest.Validate if the designated constraints aren't met. type CleanDbHistoryDataRequestValidationError struct { @@ -32337,21 +53842,56 @@ var _CleanDbHistoryDataRequest_DataType_InLookup = map[string]struct{}{ // Validate checks the field values on CleanDbHistoryDataResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CleanDbHistoryDataResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CleanDbHistoryDataResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CleanDbHistoryDataResponseMultiError, or nil if none found. +func (m *CleanDbHistoryDataResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CleanDbHistoryDataResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result + if len(errors) > 0 { + return CleanDbHistoryDataResponseMultiError(errors) + } + return nil } +// CleanDbHistoryDataResponseMultiError is an error wrapping multiple +// validation errors returned by CleanDbHistoryDataResponse.ValidateAll() if +// the designated constraints aren't met. +type CleanDbHistoryDataResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CleanDbHistoryDataResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CleanDbHistoryDataResponseMultiError) AllErrors() []error { return m } + // CleanDbHistoryDataResponseValidationError is the validation error returned // by CleanDbHistoryDataResponse.Validate if the designated constraints aren't met. type CleanDbHistoryDataResponseValidationError struct { @@ -32409,22 +53949,57 @@ var _ interface { } = CleanDbHistoryDataResponseValidationError{} // Validate checks the field values on SecurityGroup with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *SecurityGroup) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on SecurityGroup with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in SecurityGroupMultiError, or +// nil if none found. +func (m *SecurityGroup) ValidateAll() error { + return m.validate(true) +} + +func (m *SecurityGroup) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for SecurityGroupID // no validation rules for SecurityGroupName // no validation rules for Description + if len(errors) > 0 { + return SecurityGroupMultiError(errors) + } + return nil } +// SecurityGroupMultiError is an error wrapping multiple validation errors +// returned by SecurityGroup.ValidateAll() if the designated constraints +// aren't met. +type SecurityGroupMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m SecurityGroupMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m SecurityGroupMultiError) AllErrors() []error { return m } + // SecurityGroupValidationError is the validation error returned by // SecurityGroup.Validate if the designated constraints aren't met. type SecurityGroupValidationError struct { @@ -32481,16 +54056,49 @@ var _ interface { // Validate checks the field values on NodeOperationStatus with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *NodeOperationStatus) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeOperationStatus with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// NodeOperationStatusMultiError, or nil if none found. +func (m *NodeOperationStatus) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeOperationStatus) validate(all bool) error { if m == nil { return nil } + var errors []error + for idx, item := range m.GetFail() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeOperationStatusValidationError{ + field: fmt.Sprintf("Fail[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeOperationStatusValidationError{ + field: fmt.Sprintf("Fail[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeOperationStatusValidationError{ field: fmt.Sprintf("Fail[%v]", idx), @@ -32505,7 +54113,26 @@ func (m *NodeOperationStatus) Validate() error { for idx, item := range m.GetSuccess() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeOperationStatusValidationError{ + field: fmt.Sprintf("Success[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeOperationStatusValidationError{ + field: fmt.Sprintf("Success[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeOperationStatusValidationError{ field: fmt.Sprintf("Success[%v]", idx), @@ -32517,9 +54144,30 @@ func (m *NodeOperationStatus) Validate() error { } + if len(errors) > 0 { + return NodeOperationStatusMultiError(errors) + } + return nil } +// NodeOperationStatusMultiError is an error wrapping multiple validation +// errors returned by NodeOperationStatus.ValidateAll() if the designated +// constraints aren't met. +type NodeOperationStatusMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeOperationStatusMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeOperationStatusMultiError) AllErrors() []error { return m } + // NodeOperationStatusValidationError is the validation error returned by // NodeOperationStatus.Validate if the designated constraints aren't met. type NodeOperationStatusValidationError struct { @@ -32578,19 +54226,54 @@ var _ interface { // Validate checks the field values on NodeOperationStatusInfo with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *NodeOperationStatusInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeOperationStatusInfo with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// NodeOperationStatusInfoMultiError, or nil if none found. +func (m *NodeOperationStatusInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeOperationStatusInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeName // no validation rules for Message + if len(errors) > 0 { + return NodeOperationStatusInfoMultiError(errors) + } + return nil } +// NodeOperationStatusInfoMultiError is an error wrapping multiple validation +// errors returned by NodeOperationStatusInfo.ValidateAll() if the designated +// constraints aren't met. +type NodeOperationStatusInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeOperationStatusInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeOperationStatusInfoMultiError) AllErrors() []error { return m } + // NodeOperationStatusInfoValidationError is the validation error returned by // NodeOperationStatusInfo.Validate if the designated constraints aren't met. type NodeOperationStatusInfoValidationError struct { @@ -32648,18 +54331,36 @@ var _ interface { } = NodeOperationStatusInfoValidationError{} // Validate checks the field values on DrainNodeRequest with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *DrainNodeRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DrainNodeRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DrainNodeRequestMultiError, or nil if none found. +func (m *DrainNodeRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DrainNodeRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if len(m.GetClusterID()) < 1 { - return DrainNodeRequestValidationError{ + err := DrainNodeRequestValidationError{ field: "ClusterID", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Force @@ -32682,9 +54383,30 @@ func (m *DrainNodeRequest) Validate() error { // no validation rules for DryRun + if len(errors) > 0 { + return DrainNodeRequestMultiError(errors) + } + return nil } +// DrainNodeRequestMultiError is an error wrapping multiple validation errors +// returned by DrainNodeRequest.ValidateAll() if the designated constraints +// aren't met. +type DrainNodeRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DrainNodeRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DrainNodeRequestMultiError) AllErrors() []error { return m } + // DrainNodeRequestValidationError is the validation error returned by // DrainNodeRequest.Validate if the designated constraints aren't met. type DrainNodeRequestValidationError struct { @@ -32740,20 +54462,53 @@ var _ interface { } = DrainNodeRequestValidationError{} // Validate checks the field values on DrainNodeResponse with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *DrainNodeResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DrainNodeResponse with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DrainNodeResponseMultiError, or nil if none found. +func (m *DrainNodeResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DrainNodeResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DrainNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DrainNodeResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DrainNodeResponseValidationError{ field: "Data", @@ -32763,9 +54518,30 @@ func (m *DrainNodeResponse) Validate() error { } } + if len(errors) > 0 { + return DrainNodeResponseMultiError(errors) + } + return nil } +// DrainNodeResponseMultiError is an error wrapping multiple validation errors +// returned by DrainNodeResponse.ValidateAll() if the designated constraints +// aren't met. +type DrainNodeResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DrainNodeResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DrainNodeResponseMultiError) AllErrors() []error { return m } + // DrainNodeResponseValidationError is the validation error returned by // DrainNodeResponse.Validate if the designated constraints aren't met. type DrainNodeResponseValidationError struct { @@ -32823,25 +54599,64 @@ var _ interface { } = DrainNodeResponseValidationError{} // Validate checks the field values on NodeAnnotation with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeAnnotation) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeAnnotation with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeAnnotationMultiError, +// or nil if none found. +func (m *NodeAnnotation) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeAnnotation) validate(all bool) error { if m == nil { return nil } + var errors []error + if len(m.GetNodeName()) < 1 { - return NodeAnnotationValidationError{ + err := NodeAnnotationValidationError{ field: "NodeName", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Annotations + if len(errors) > 0 { + return NodeAnnotationMultiError(errors) + } + return nil } +// NodeAnnotationMultiError is an error wrapping multiple validation errors +// returned by NodeAnnotation.ValidateAll() if the designated constraints +// aren't met. +type NodeAnnotationMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeAnnotationMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeAnnotationMultiError) AllErrors() []error { return m } + // NodeAnnotationValidationError is the validation error returned by // NodeAnnotation.Validate if the designated constraints aren't met. type NodeAnnotationValidationError struct { @@ -32898,23 +54713,60 @@ var _ interface { // Validate checks the field values on UpdateNodeAnnotationsRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeAnnotationsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeAnnotationsRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeAnnotationsRequestMultiError, or nil if none found. +func (m *UpdateNodeAnnotationsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeAnnotationsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if len(m.GetClusterID()) < 1 { - return UpdateNodeAnnotationsRequestValidationError{ + err := UpdateNodeAnnotationsRequestValidationError{ field: "ClusterID", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) } for idx, item := range m.GetNodes() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeAnnotationsRequestValidationError{ + field: fmt.Sprintf("Nodes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeAnnotationsRequestValidationError{ + field: fmt.Sprintf("Nodes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeAnnotationsRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), @@ -32926,9 +54778,30 @@ func (m *UpdateNodeAnnotationsRequest) Validate() error { } + if len(errors) > 0 { + return UpdateNodeAnnotationsRequestMultiError(errors) + } + return nil } +// UpdateNodeAnnotationsRequestMultiError is an error wrapping multiple +// validation errors returned by UpdateNodeAnnotationsRequest.ValidateAll() if +// the designated constraints aren't met. +type UpdateNodeAnnotationsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeAnnotationsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeAnnotationsRequestMultiError) AllErrors() []error { return m } + // UpdateNodeAnnotationsRequestValidationError is the validation error returned // by UpdateNodeAnnotationsRequest.Validate if the designated constraints // aren't met. @@ -32988,19 +54861,52 @@ var _ interface { // Validate checks the field values on UpdateNodeAnnotationsResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeAnnotationsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeAnnotationsResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateNodeAnnotationsResponseMultiError, or nil if none found. +func (m *UpdateNodeAnnotationsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeAnnotationsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeAnnotationsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeAnnotationsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeAnnotationsResponseValidationError{ field: "Data", @@ -33010,9 +54916,30 @@ func (m *UpdateNodeAnnotationsResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateNodeAnnotationsResponseMultiError(errors) + } + return nil } +// UpdateNodeAnnotationsResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateNodeAnnotationsResponse.ValidateAll() +// if the designated constraints aren't met. +type UpdateNodeAnnotationsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeAnnotationsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeAnnotationsResponseMultiError) AllErrors() []error { return m } + // UpdateNodeAnnotationsResponseValidationError is the validation error // returned by UpdateNodeAnnotationsResponse.Validate if the designated // constraints aren't met. @@ -33071,24 +54998,63 @@ var _ interface { } = UpdateNodeAnnotationsResponseValidationError{} // Validate checks the field values on NodeLabel with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeLabel) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeLabel with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeLabelMultiError, or nil +// if none found. +func (m *NodeLabel) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeLabel) validate(all bool) error { if m == nil { return nil } + var errors []error + if len(m.GetNodeName()) < 1 { - return NodeLabelValidationError{ + err := NodeLabelValidationError{ field: "NodeName", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Labels + if len(errors) > 0 { + return NodeLabelMultiError(errors) + } + return nil } +// NodeLabelMultiError is an error wrapping multiple validation errors returned +// by NodeLabel.ValidateAll() if the designated constraints aren't met. +type NodeLabelMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeLabelMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeLabelMultiError) AllErrors() []error { return m } + // NodeLabelValidationError is the validation error returned by // NodeLabel.Validate if the designated constraints aren't met. type NodeLabelValidationError struct { @@ -33145,16 +55111,49 @@ var _ interface { // Validate checks the field values on UpdateNodeLabelsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeLabelsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeLabelsRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeLabelsRequestMultiError, or nil if none found. +func (m *UpdateNodeLabelsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeLabelsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + for idx, item := range m.GetNodes() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeLabelsRequestValidationError{ + field: fmt.Sprintf("Nodes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeLabelsRequestValidationError{ + field: fmt.Sprintf("Nodes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeLabelsRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), @@ -33167,15 +55166,40 @@ func (m *UpdateNodeLabelsRequest) Validate() error { } if len(m.GetClusterID()) < 1 { - return UpdateNodeLabelsRequestValidationError{ + err := UpdateNodeLabelsRequestValidationError{ field: "ClusterID", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return UpdateNodeLabelsRequestMultiError(errors) } return nil } +// UpdateNodeLabelsRequestMultiError is an error wrapping multiple validation +// errors returned by UpdateNodeLabelsRequest.ValidateAll() if the designated +// constraints aren't met. +type UpdateNodeLabelsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeLabelsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeLabelsRequestMultiError) AllErrors() []error { return m } + // UpdateNodeLabelsRequestValidationError is the validation error returned by // UpdateNodeLabelsRequest.Validate if the designated constraints aren't met. type UpdateNodeLabelsRequestValidationError struct { @@ -33234,19 +55258,52 @@ var _ interface { // Validate checks the field values on UpdateNodeLabelsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeLabelsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeLabelsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeLabelsResponseMultiError, or nil if none found. +func (m *UpdateNodeLabelsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeLabelsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeLabelsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeLabelsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeLabelsResponseValidationError{ field: "Data", @@ -33256,9 +55313,30 @@ func (m *UpdateNodeLabelsResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateNodeLabelsResponseMultiError(errors) + } + return nil } +// UpdateNodeLabelsResponseMultiError is an error wrapping multiple validation +// errors returned by UpdateNodeLabelsResponse.ValidateAll() if the designated +// constraints aren't met. +type UpdateNodeLabelsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeLabelsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeLabelsResponseMultiError) AllErrors() []error { return m } + // UpdateNodeLabelsResponseValidationError is the validation error returned by // UpdateNodeLabelsResponse.Validate if the designated constraints aren't met. type UpdateNodeLabelsResponseValidationError struct { @@ -33316,23 +55394,61 @@ var _ interface { } = UpdateNodeLabelsResponseValidationError{} // Validate checks the field values on NodeTaint with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeTaint) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeTaint with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeTaintMultiError, or nil +// if none found. +func (m *NodeTaint) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeTaint) validate(all bool) error { if m == nil { return nil } + var errors []error + if len(m.GetNodeName()) < 1 { - return NodeTaintValidationError{ + err := NodeTaintValidationError{ field: "NodeName", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) } for idx, item := range m.GetTaints() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NodeTaintValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NodeTaintValidationError{ + field: fmt.Sprintf("Taints[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NodeTaintValidationError{ field: fmt.Sprintf("Taints[%v]", idx), @@ -33344,9 +55460,29 @@ func (m *NodeTaint) Validate() error { } + if len(errors) > 0 { + return NodeTaintMultiError(errors) + } + return nil } +// NodeTaintMultiError is an error wrapping multiple validation errors returned +// by NodeTaint.ValidateAll() if the designated constraints aren't met. +type NodeTaintMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeTaintMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeTaintMultiError) AllErrors() []error { return m } + // NodeTaintValidationError is the validation error returned by // NodeTaint.Validate if the designated constraints aren't met. type NodeTaintValidationError struct { @@ -33403,16 +55539,49 @@ var _ interface { // Validate checks the field values on UpdateNodeTaintsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeTaintsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeTaintsRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeTaintsRequestMultiError, or nil if none found. +func (m *UpdateNodeTaintsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeTaintsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + for idx, item := range m.GetNodes() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTaintsRequestValidationError{ + field: fmt.Sprintf("Nodes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTaintsRequestValidationError{ + field: fmt.Sprintf("Nodes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTaintsRequestValidationError{ field: fmt.Sprintf("Nodes[%v]", idx), @@ -33425,15 +55594,40 @@ func (m *UpdateNodeTaintsRequest) Validate() error { } if len(m.GetClusterID()) < 1 { - return UpdateNodeTaintsRequestValidationError{ + err := UpdateNodeTaintsRequestValidationError{ field: "ClusterID", reason: "value length must be at least 1 bytes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return UpdateNodeTaintsRequestMultiError(errors) } return nil } +// UpdateNodeTaintsRequestMultiError is an error wrapping multiple validation +// errors returned by UpdateNodeTaintsRequest.ValidateAll() if the designated +// constraints aren't met. +type UpdateNodeTaintsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeTaintsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeTaintsRequestMultiError) AllErrors() []error { return m } + // UpdateNodeTaintsRequestValidationError is the validation error returned by // UpdateNodeTaintsRequest.Validate if the designated constraints aren't met. type UpdateNodeTaintsRequestValidationError struct { @@ -33492,19 +55686,52 @@ var _ interface { // Validate checks the field values on UpdateNodeTaintsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateNodeTaintsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateNodeTaintsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateNodeTaintsResponseMultiError, or nil if none found. +func (m *UpdateNodeTaintsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateNodeTaintsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateNodeTaintsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateNodeTaintsResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateNodeTaintsResponseValidationError{ field: "Data", @@ -33514,9 +55741,30 @@ func (m *UpdateNodeTaintsResponse) Validate() error { } } + if len(errors) > 0 { + return UpdateNodeTaintsResponseMultiError(errors) + } + return nil } +// UpdateNodeTaintsResponseMultiError is an error wrapping multiple validation +// errors returned by UpdateNodeTaintsResponse.ValidateAll() if the designated +// constraints aren't met. +type UpdateNodeTaintsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateNodeTaintsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateNodeTaintsResponseMultiError) AllErrors() []error { return m } + // UpdateNodeTaintsResponseValidationError is the validation error returned by // UpdateNodeTaintsResponse.Validate if the designated constraints aren't met. type UpdateNodeTaintsResponseValidationError struct { @@ -33574,16 +55822,51 @@ var _ interface { } = UpdateNodeTaintsResponseValidationError{} // Validate checks the field values on HealthRequest with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *HealthRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on HealthRequest with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in HealthRequestMultiError, or +// nil if none found. +func (m *HealthRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *HealthRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + + if len(errors) > 0 { + return HealthRequestMultiError(errors) + } + return nil } +// HealthRequestMultiError is an error wrapping multiple validation errors +// returned by HealthRequest.ValidateAll() if the designated constraints +// aren't met. +type HealthRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m HealthRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m HealthRequestMultiError) AllErrors() []error { return m } + // HealthRequestValidationError is the validation error returned by // HealthRequest.Validate if the designated constraints aren't met. type HealthRequestValidationError struct { @@ -33639,22 +55922,57 @@ var _ interface { } = HealthRequestValidationError{} // Validate checks the field values on HealthResponse with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *HealthResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on HealthResponse with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in HealthResponseMultiError, +// or nil if none found. +func (m *HealthResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *HealthResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Available + if len(errors) > 0 { + return HealthResponseMultiError(errors) + } + return nil } +// HealthResponseMultiError is an error wrapping multiple validation errors +// returned by HealthResponse.ValidateAll() if the designated constraints +// aren't met. +type HealthResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m HealthResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m HealthResponseMultiError) AllErrors() []error { return m } + // HealthResponseValidationError is the validation error returned by // HealthResponse.Validate if the designated constraints aren't met. type HealthResponseValidationError struct { @@ -33711,17 +56029,52 @@ var _ interface { // Validate checks the field values on ListResourceSchemaRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListResourceSchemaRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListResourceSchemaRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListResourceSchemaRequestMultiError, or nil if none found. +func (m *ListResourceSchemaRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListResourceSchemaRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID + if len(errors) > 0 { + return ListResourceSchemaRequestMultiError(errors) + } + return nil } +// ListResourceSchemaRequestMultiError is an error wrapping multiple validation +// errors returned by ListResourceSchemaRequest.ValidateAll() if the +// designated constraints aren't met. +type ListResourceSchemaRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListResourceSchemaRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListResourceSchemaRequestMultiError) AllErrors() []error { return m } + // ListResourceSchemaRequestValidationError is the validation error returned by // ListResourceSchemaRequest.Validate if the designated constraints aren't met. type ListResourceSchemaRequestValidationError struct { @@ -33780,19 +56133,54 @@ var _ interface { // Validate checks the field values on GetResourceSchemaRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetResourceSchemaRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetResourceSchemaRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetResourceSchemaRequestMultiError, or nil if none found. +func (m *GetResourceSchemaRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetResourceSchemaRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for Name + if len(errors) > 0 { + return GetResourceSchemaRequestMultiError(errors) + } + return nil } +// GetResourceSchemaRequestMultiError is an error wrapping multiple validation +// errors returned by GetResourceSchemaRequest.ValidateAll() if the designated +// constraints aren't met. +type GetResourceSchemaRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetResourceSchemaRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetResourceSchemaRequestMultiError) AllErrors() []error { return m } + // GetResourceSchemaRequestValidationError is the validation error returned by // GetResourceSchemaRequest.Validate if the designated constraints aren't met. type GetResourceSchemaRequestValidationError struct { @@ -33851,12 +56239,26 @@ var _ interface { // Validate checks the field values on QueryPermByActionIDReqData with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *QueryPermByActionIDReqData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on QueryPermByActionIDReqData with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// QueryPermByActionIDReqDataMultiError, or nil if none found. +func (m *QueryPermByActionIDReqData) ValidateAll() error { + return m.validate(true) +} + +func (m *QueryPermByActionIDReqData) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProjectId // no validation rules for ClusterId @@ -33868,15 +56270,40 @@ func (m *QueryPermByActionIDReqData) Validate() error { // no validation rules for AccountId if utf8.RuneCountInString(m.GetOperator()) < 1 { - return QueryPermByActionIDReqDataValidationError{ + err := QueryPermByActionIDReqDataValidationError{ field: "Operator", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return QueryPermByActionIDReqDataMultiError(errors) } return nil } +// QueryPermByActionIDReqDataMultiError is an error wrapping multiple +// validation errors returned by QueryPermByActionIDReqData.ValidateAll() if +// the designated constraints aren't met. +type QueryPermByActionIDReqDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m QueryPermByActionIDReqDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m QueryPermByActionIDReqDataMultiError) AllErrors() []error { return m } + // QueryPermByActionIDReqDataValidationError is the validation error returned // by QueryPermByActionIDReqData.Validate if the designated constraints aren't met. type QueryPermByActionIDReqDataValidationError struct { @@ -33935,15 +56362,48 @@ var _ interface { // Validate checks the field values on QueryPermByActionIDRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *QueryPermByActionIDRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on QueryPermByActionIDRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// QueryPermByActionIDRequestMultiError, or nil if none found. +func (m *QueryPermByActionIDRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *QueryPermByActionIDRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ActionID - if v, ok := interface{}(m.GetPermCtx()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetPermCtx()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, QueryPermByActionIDRequestValidationError{ + field: "PermCtx", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, QueryPermByActionIDRequestValidationError{ + field: "PermCtx", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetPermCtx()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return QueryPermByActionIDRequestValidationError{ field: "PermCtx", @@ -33953,9 +56413,30 @@ func (m *QueryPermByActionIDRequest) Validate() error { } } + if len(errors) > 0 { + return QueryPermByActionIDRequestMultiError(errors) + } + return nil } +// QueryPermByActionIDRequestMultiError is an error wrapping multiple +// validation errors returned by QueryPermByActionIDRequest.ValidateAll() if +// the designated constraints aren't met. +type QueryPermByActionIDRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m QueryPermByActionIDRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m QueryPermByActionIDRequestMultiError) AllErrors() []error { return m } + // QueryPermByActionIDRequestValidationError is the validation error returned // by QueryPermByActionIDRequest.Validate if the designated constraints aren't met. type QueryPermByActionIDRequestValidationError struct { @@ -34013,32 +56494,95 @@ var _ interface { } = QueryPermByActionIDRequestValidationError{} // Validate checks the field values on Perms with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *Perms) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Perms with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in PermsMultiError, or nil if none found. +func (m *Perms) ValidateAll() error { + return m.validate(true) +} + +func (m *Perms) validate(all bool) error { if m == nil { return nil } - for key, val := range m.GetPerms() { - _ = val - - // no validation rules for Perms[key] - - if v, ok := interface{}(val).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return PermsValidationError{ - field: fmt.Sprintf("Perms[%v]", key), - reason: "embedded message failed validation", - cause: err, + var errors []error + + { + sorted_keys := make([]string, len(m.GetPerms())) + i := 0 + for key := range m.GetPerms() { + sorted_keys[i] = key + i++ + } + sort.Slice(sorted_keys, func(i, j int) bool { return sorted_keys[i] < sorted_keys[j] }) + for _, key := range sorted_keys { + val := m.GetPerms()[key] + _ = val + + // no validation rules for Perms[key] + + if all { + switch v := interface{}(val).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, PermsValidationError{ + field: fmt.Sprintf("Perms[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, PermsValidationError{ + field: fmt.Sprintf("Perms[%v]", key), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(val).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return PermsValidationError{ + field: fmt.Sprintf("Perms[%v]", key), + reason: "embedded message failed validation", + cause: err, + } } } + } + } + if len(errors) > 0 { + return PermsMultiError(errors) } return nil } +// PermsMultiError is an error wrapping multiple validation errors returned by +// Perms.ValidateAll() if the designated constraints aren't met. +type PermsMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m PermsMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m PermsMultiError) AllErrors() []error { return m } + // PermsValidationError is the validation error returned by Perms.Validate if // the designated constraints aren't met. type PermsValidationError struct { @@ -34095,15 +56639,48 @@ var _ interface { // Validate checks the field values on QueryPermByActionIDResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *QueryPermByActionIDResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on QueryPermByActionIDResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// QueryPermByActionIDResponseMultiError, or nil if none found. +func (m *QueryPermByActionIDResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *QueryPermByActionIDResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, QueryPermByActionIDResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, QueryPermByActionIDResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return QueryPermByActionIDResponseValidationError{ field: "Data", @@ -34113,9 +56690,30 @@ func (m *QueryPermByActionIDResponse) Validate() error { } } + if len(errors) > 0 { + return QueryPermByActionIDResponseMultiError(errors) + } + return nil } +// QueryPermByActionIDResponseMultiError is an error wrapping multiple +// validation errors returned by QueryPermByActionIDResponse.ValidateAll() if +// the designated constraints aren't met. +type QueryPermByActionIDResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m QueryPermByActionIDResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m QueryPermByActionIDResponseMultiError) AllErrors() []error { return m } + // QueryPermByActionIDResponseValidationError is the validation error returned // by QueryPermByActionIDResponse.Validate if the designated constraints // aren't met. @@ -34174,19 +56772,53 @@ var _ interface { } = QueryPermByActionIDResponseValidationError{} // Validate checks the field values on CommonResp with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CommonResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CommonResp with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CommonRespMultiError, or +// nil if none found. +func (m *CommonResp) ValidateAll() error { + return m.validate(true) +} + +func (m *CommonResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CommonRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CommonRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CommonRespValidationError{ field: "Data", @@ -34196,9 +56828,29 @@ func (m *CommonResp) Validate() error { } } + if len(errors) > 0 { + return CommonRespMultiError(errors) + } + return nil } +// CommonRespMultiError is an error wrapping multiple validation errors +// returned by CommonResp.ValidateAll() if the designated constraints aren't met. +type CommonRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CommonRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CommonRespMultiError) AllErrors() []error { return m } + // CommonRespValidationError is the validation error returned by // CommonResp.Validate if the designated constraints aren't met. type CommonRespValidationError struct { @@ -34254,20 +56906,53 @@ var _ interface { } = CommonRespValidationError{} // Validate checks the field values on CommonListResp with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *CommonListResp) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CommonListResp with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in CommonListRespMultiError, +// or nil if none found. +func (m *CommonListResp) ValidateAll() error { + return m.validate(true) +} + +func (m *CommonListResp) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CommonListRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CommonListRespValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CommonListRespValidationError{ field: "Data", @@ -34277,9 +56962,30 @@ func (m *CommonListResp) Validate() error { } } + if len(errors) > 0 { + return CommonListRespMultiError(errors) + } + return nil } +// CommonListRespMultiError is an error wrapping multiple validation errors +// returned by CommonListResp.ValidateAll() if the designated constraints +// aren't met. +type CommonListRespMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CommonListRespMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CommonListRespMultiError) AllErrors() []error { return m } + // CommonListRespValidationError is the validation error returned by // CommonListResp.Validate if the designated constraints aren't met. type CommonListRespValidationError struct { @@ -34336,15 +57042,50 @@ var _ interface { // Validate checks the field values on ListBKCloudRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListBKCloudRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListBKCloudRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListBKCloudRequestMultiError, or nil if none found. +func (m *ListBKCloudRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListBKCloudRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + + if len(errors) > 0 { + return ListBKCloudRequestMultiError(errors) + } + return nil } +// ListBKCloudRequestMultiError is an error wrapping multiple validation errors +// returned by ListBKCloudRequest.ValidateAll() if the designated constraints +// aren't met. +type ListBKCloudRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListBKCloudRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListBKCloudRequestMultiError) AllErrors() []error { return m } + // ListBKCloudRequestValidationError is the validation error returned by // ListBKCloudRequest.Validate if the designated constraints aren't met. type ListBKCloudRequestValidationError struct { @@ -34403,29 +57144,70 @@ var _ interface { // Validate checks the field values on ListCCTopologyRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCCTopologyRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCCTopologyRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCCTopologyRequestMultiError, or nil if none found. +func (m *ListCCTopologyRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCCTopologyRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetClusterID()); l < 1 || l > 100 { - return ListCCTopologyRequestValidationError{ + err := ListCCTopologyRequestValidationError{ field: "ClusterID", reason: "value length must be between 1 and 100 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_ListCCTopologyRequest_ClusterID_Pattern.MatchString(m.GetClusterID()) { - return ListCCTopologyRequestValidationError{ + err := ListCCTopologyRequestValidationError{ field: "ClusterID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for BizID - if v, ok := interface{}(m.GetFilterInter()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetFilterInter()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCCTopologyRequestValidationError{ + field: "FilterInter", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCCTopologyRequestValidationError{ + field: "FilterInter", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetFilterInter()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCCTopologyRequestValidationError{ field: "FilterInter", @@ -34435,9 +57217,30 @@ func (m *ListCCTopologyRequest) Validate() error { } } + if len(errors) > 0 { + return ListCCTopologyRequestMultiError(errors) + } + return nil } +// ListCCTopologyRequestMultiError is an error wrapping multiple validation +// errors returned by ListCCTopologyRequest.ValidateAll() if the designated +// constraints aren't met. +type ListCCTopologyRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCCTopologyRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCCTopologyRequestMultiError) AllErrors() []error { return m } + // ListCCTopologyRequestValidationError is the validation error returned by // ListCCTopologyRequest.Validate if the designated constraints aren't met. type ListCCTopologyRequestValidationError struct { @@ -34498,33 +57301,76 @@ var _ListCCTopologyRequest_ClusterID_Pattern = regexp.MustCompile("^[0-9a-zA-Z-] // Validate checks the field values on GetBkSopsTemplateListRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetBkSopsTemplateListRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetBkSopsTemplateListRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetBkSopsTemplateListRequestMultiError, or nil if none found. +func (m *GetBkSopsTemplateListRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetBkSopsTemplateListRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for BusinessID // no validation rules for Operator if _, ok := _GetBkSopsTemplateListRequest_TemplateSource_InLookup[m.GetTemplateSource()]; !ok { - return GetBkSopsTemplateListRequestValidationError{ + err := GetBkSopsTemplateListRequestValidationError{ field: "TemplateSource", reason: "value must be in list [business common ]", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _GetBkSopsTemplateListRequest_Scope_InLookup[m.GetScope()]; !ok { - return GetBkSopsTemplateListRequestValidationError{ + err := GetBkSopsTemplateListRequestValidationError{ field: "Scope", reason: "value must be in list [cmdb_biz project ]", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return GetBkSopsTemplateListRequestMultiError(errors) } return nil } +// GetBkSopsTemplateListRequestMultiError is an error wrapping multiple +// validation errors returned by GetBkSopsTemplateListRequest.ValidateAll() if +// the designated constraints aren't met. +type GetBkSopsTemplateListRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetBkSopsTemplateListRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetBkSopsTemplateListRequestMultiError) AllErrors() []error { return m } + // GetBkSopsTemplateListRequestValidationError is the validation error returned // by GetBkSopsTemplateListRequest.Validate if the designated constraints // aren't met. @@ -34596,12 +57442,26 @@ var _GetBkSopsTemplateListRequest_Scope_InLookup = map[string]struct{}{ // Validate checks the field values on GetBkSopsTemplateListResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetBkSopsTemplateListResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetBkSopsTemplateListResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetBkSopsTemplateListResponseMultiError, or nil if none found. +func (m *GetBkSopsTemplateListResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetBkSopsTemplateListResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -34609,7 +57469,26 @@ func (m *GetBkSopsTemplateListResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetBkSopsTemplateListResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetBkSopsTemplateListResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetBkSopsTemplateListResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -34621,9 +57500,30 @@ func (m *GetBkSopsTemplateListResponse) Validate() error { } + if len(errors) > 0 { + return GetBkSopsTemplateListResponseMultiError(errors) + } + return nil } +// GetBkSopsTemplateListResponseMultiError is an error wrapping multiple +// validation errors returned by GetBkSopsTemplateListResponse.ValidateAll() +// if the designated constraints aren't met. +type GetBkSopsTemplateListResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetBkSopsTemplateListResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetBkSopsTemplateListResponseMultiError) AllErrors() []error { return m } + // GetBkSopsTemplateListResponseValidationError is the validation error // returned by GetBkSopsTemplateListResponse.Validate if the designated // constraints aren't met. @@ -34682,13 +57582,27 @@ var _ interface { } = GetBkSopsTemplateListResponseValidationError{} // Validate checks the field values on TemplateInfo with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *TemplateInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TemplateInfo with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in TemplateInfoMultiError, or +// nil if none found. +func (m *TemplateInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *TemplateInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for TemplateName // no validation rules for TemplateID @@ -34703,9 +57617,29 @@ func (m *TemplateInfo) Validate() error { // no validation rules for ProjectID + if len(errors) > 0 { + return TemplateInfoMultiError(errors) + } + return nil } +// TemplateInfoMultiError is an error wrapping multiple validation errors +// returned by TemplateInfo.ValidateAll() if the designated constraints aren't met. +type TemplateInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TemplateInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TemplateInfoMultiError) AllErrors() []error { return m } + // TemplateInfoValidationError is the validation error returned by // TemplateInfo.Validate if the designated constraints aren't met. type TemplateInfoValidationError struct { @@ -34762,12 +57696,26 @@ var _ interface { // Validate checks the field values on GetBkSopsTemplateInfoRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetBkSopsTemplateInfoRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetBkSopsTemplateInfoRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetBkSopsTemplateInfoRequestMultiError, or nil if none found. +func (m *GetBkSopsTemplateInfoRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetBkSopsTemplateInfoRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for BusinessID // no validation rules for TemplateID @@ -34775,22 +57723,51 @@ func (m *GetBkSopsTemplateInfoRequest) Validate() error { // no validation rules for Operator if _, ok := _GetBkSopsTemplateInfoRequest_TemplateSource_InLookup[m.GetTemplateSource()]; !ok { - return GetBkSopsTemplateInfoRequestValidationError{ + err := GetBkSopsTemplateInfoRequestValidationError{ field: "TemplateSource", reason: "value must be in list [business common ]", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _GetBkSopsTemplateInfoRequest_Scope_InLookup[m.GetScope()]; !ok { - return GetBkSopsTemplateInfoRequestValidationError{ + err := GetBkSopsTemplateInfoRequestValidationError{ field: "Scope", reason: "value must be in list [cmdb_biz project ]", } + if !all { + return err + } + errors = append(errors, err) + } + + if len(errors) > 0 { + return GetBkSopsTemplateInfoRequestMultiError(errors) } return nil } +// GetBkSopsTemplateInfoRequestMultiError is an error wrapping multiple +// validation errors returned by GetBkSopsTemplateInfoRequest.ValidateAll() if +// the designated constraints aren't met. +type GetBkSopsTemplateInfoRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetBkSopsTemplateInfoRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetBkSopsTemplateInfoRequestMultiError) AllErrors() []error { return m } + // GetBkSopsTemplateInfoRequestValidationError is the validation error returned // by GetBkSopsTemplateInfoRequest.Validate if the designated constraints // aren't met. @@ -34862,17 +57839,50 @@ var _GetBkSopsTemplateInfoRequest_Scope_InLookup = map[string]struct{}{ // Validate checks the field values on GetBkSopsTemplateInfoResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetBkSopsTemplateInfoResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetBkSopsTemplateInfoResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetBkSopsTemplateInfoResponseMultiError, or nil if none found. +func (m *GetBkSopsTemplateInfoResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetBkSopsTemplateInfoResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetBkSopsTemplateInfoResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetBkSopsTemplateInfoResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetBkSopsTemplateInfoResponseValidationError{ field: "Data", @@ -34882,9 +57892,30 @@ func (m *GetBkSopsTemplateInfoResponse) Validate() error { } } + if len(errors) > 0 { + return GetBkSopsTemplateInfoResponseMultiError(errors) + } + return nil } +// GetBkSopsTemplateInfoResponseMultiError is an error wrapping multiple +// validation errors returned by GetBkSopsTemplateInfoResponse.ValidateAll() +// if the designated constraints aren't met. +type GetBkSopsTemplateInfoResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetBkSopsTemplateInfoResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetBkSopsTemplateInfoResponseMultiError) AllErrors() []error { return m } + // GetBkSopsTemplateInfoResponseValidationError is the validation error // returned by GetBkSopsTemplateInfoResponse.Validate if the designated // constraints aren't met. @@ -34944,18 +57975,51 @@ var _ interface { // Validate checks the field values on TemplateDetailInfo with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *TemplateDetailInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TemplateDetailInfo with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// TemplateDetailInfoMultiError, or nil if none found. +func (m *TemplateDetailInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *TemplateDetailInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for TemplateUrl for idx, item := range m.GetValues() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, TemplateDetailInfoValidationError{ + field: fmt.Sprintf("Values[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, TemplateDetailInfoValidationError{ + field: fmt.Sprintf("Values[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return TemplateDetailInfoValidationError{ field: fmt.Sprintf("Values[%v]", idx), @@ -34967,9 +58031,30 @@ func (m *TemplateDetailInfo) Validate() error { } + if len(errors) > 0 { + return TemplateDetailInfoMultiError(errors) + } + return nil } +// TemplateDetailInfoMultiError is an error wrapping multiple validation errors +// returned by TemplateDetailInfo.ValidateAll() if the designated constraints +// aren't met. +type TemplateDetailInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TemplateDetailInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TemplateDetailInfoMultiError) AllErrors() []error { return m } + // TemplateDetailInfoValidationError is the validation error returned by // TemplateDetailInfo.Validate if the designated constraints aren't met. type TemplateDetailInfoValidationError struct { @@ -35027,13 +58112,27 @@ var _ interface { } = TemplateDetailInfoValidationError{} // Validate checks the field values on ConstantValue with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ConstantValue) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ConstantValue with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ConstantValueMultiError, or +// nil if none found. +func (m *ConstantValue) ValidateAll() error { + return m.validate(true) +} + +func (m *ConstantValue) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Key // no validation rules for Name @@ -35042,9 +58141,30 @@ func (m *ConstantValue) Validate() error { // no validation rules for Desc + if len(errors) > 0 { + return ConstantValueMultiError(errors) + } + return nil } +// ConstantValueMultiError is an error wrapping multiple validation errors +// returned by ConstantValue.ValidateAll() if the designated constraints +// aren't met. +type ConstantValueMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ConstantValueMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ConstantValueMultiError) AllErrors() []error { return m } + // ConstantValueValidationError is the validation error returned by // ConstantValue.Validate if the designated constraints aren't met. type ConstantValueValidationError struct { @@ -35101,19 +58221,54 @@ var _ interface { // Validate checks the field values on GetInnerTemplateValuesRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetInnerTemplateValuesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetInnerTemplateValuesRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetInnerTemplateValuesRequestMultiError, or nil if none found. +func (m *GetInnerTemplateValuesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetInnerTemplateValuesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ClusterID // no validation rules for Operator + if len(errors) > 0 { + return GetInnerTemplateValuesRequestMultiError(errors) + } + return nil } +// GetInnerTemplateValuesRequestMultiError is an error wrapping multiple +// validation errors returned by GetInnerTemplateValuesRequest.ValidateAll() +// if the designated constraints aren't met. +type GetInnerTemplateValuesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetInnerTemplateValuesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetInnerTemplateValuesRequestMultiError) AllErrors() []error { return m } + // GetInnerTemplateValuesRequestValidationError is the validation error // returned by GetInnerTemplateValuesRequest.Validate if the designated // constraints aren't met. @@ -35173,12 +58328,26 @@ var _ interface { // Validate checks the field values on GetInnerTemplateValuesResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetInnerTemplateValuesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetInnerTemplateValuesResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetInnerTemplateValuesResponseMultiError, or nil if none found. +func (m *GetInnerTemplateValuesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetInnerTemplateValuesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -35186,7 +58355,26 @@ func (m *GetInnerTemplateValuesResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetInnerTemplateValuesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetInnerTemplateValuesResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetInnerTemplateValuesResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -35198,9 +58386,30 @@ func (m *GetInnerTemplateValuesResponse) Validate() error { } + if len(errors) > 0 { + return GetInnerTemplateValuesResponseMultiError(errors) + } + return nil } +// GetInnerTemplateValuesResponseMultiError is an error wrapping multiple +// validation errors returned by GetInnerTemplateValuesResponse.ValidateAll() +// if the designated constraints aren't met. +type GetInnerTemplateValuesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetInnerTemplateValuesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetInnerTemplateValuesResponseMultiError) AllErrors() []error { return m } + // GetInnerTemplateValuesResponseValidationError is the validation error // returned by GetInnerTemplateValuesResponse.Validate if the designated // constraints aren't met. @@ -35259,13 +58468,27 @@ var _ interface { } = GetInnerTemplateValuesResponseValidationError{} // Validate checks the field values on TemplateValue with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *TemplateValue) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on TemplateValue with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in TemplateValueMultiError, or +// nil if none found. +func (m *TemplateValue) ValidateAll() error { + return m.validate(true) +} + +func (m *TemplateValue) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Name // no validation rules for Desc @@ -35276,9 +58499,30 @@ func (m *TemplateValue) Validate() error { // no validation rules for Value + if len(errors) > 0 { + return TemplateValueMultiError(errors) + } + return nil } +// TemplateValueMultiError is an error wrapping multiple validation errors +// returned by TemplateValue.ValidateAll() if the designated constraints +// aren't met. +type TemplateValueMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m TemplateValueMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m TemplateValueMultiError) AllErrors() []error { return m } + // TemplateValueValidationError is the validation error returned by // TemplateValue.Validate if the designated constraints aren't met. type TemplateValueValidationError struct { @@ -35335,45 +58579,96 @@ var _ interface { // Validate checks the field values on DebugBkSopsTaskRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DebugBkSopsTaskRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DebugBkSopsTaskRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DebugBkSopsTaskRequestMultiError, or nil if none found. +func (m *DebugBkSopsTaskRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DebugBkSopsTaskRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if utf8.RuneCountInString(m.GetBusinessID()) < 1 { - return DebugBkSopsTaskRequestValidationError{ + err := DebugBkSopsTaskRequestValidationError{ field: "BusinessID", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetTemplateID()) < 1 { - return DebugBkSopsTaskRequestValidationError{ + err := DebugBkSopsTaskRequestValidationError{ field: "TemplateID", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetOperator()) < 1 { - return DebugBkSopsTaskRequestValidationError{ + err := DebugBkSopsTaskRequestValidationError{ field: "Operator", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } if _, ok := _DebugBkSopsTaskRequest_TemplateSource_InLookup[m.GetTemplateSource()]; !ok { - return DebugBkSopsTaskRequestValidationError{ + err := DebugBkSopsTaskRequestValidationError{ field: "TemplateSource", reason: "value must be in list [business common ]", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Constant + if len(errors) > 0 { + return DebugBkSopsTaskRequestMultiError(errors) + } + return nil } +// DebugBkSopsTaskRequestMultiError is an error wrapping multiple validation +// errors returned by DebugBkSopsTaskRequest.ValidateAll() if the designated +// constraints aren't met. +type DebugBkSopsTaskRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DebugBkSopsTaskRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DebugBkSopsTaskRequestMultiError) AllErrors() []error { return m } + // DebugBkSopsTaskRequestValidationError is the validation error returned by // DebugBkSopsTaskRequest.Validate if the designated constraints aren't met. type DebugBkSopsTaskRequestValidationError struct { @@ -35438,17 +58733,50 @@ var _DebugBkSopsTaskRequest_TemplateSource_InLookup = map[string]struct{}{ // Validate checks the field values on DebugBkSopsTaskResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DebugBkSopsTaskResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DebugBkSopsTaskResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DebugBkSopsTaskResponseMultiError, or nil if none found. +func (m *DebugBkSopsTaskResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DebugBkSopsTaskResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DebugBkSopsTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DebugBkSopsTaskResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DebugBkSopsTaskResponseValidationError{ field: "Data", @@ -35458,9 +58786,30 @@ func (m *DebugBkSopsTaskResponse) Validate() error { } } + if len(errors) > 0 { + return DebugBkSopsTaskResponseMultiError(errors) + } + return nil } +// DebugBkSopsTaskResponseMultiError is an error wrapping multiple validation +// errors returned by DebugBkSopsTaskResponse.ValidateAll() if the designated +// constraints aren't met. +type DebugBkSopsTaskResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DebugBkSopsTaskResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DebugBkSopsTaskResponseMultiError) AllErrors() []error { return m } + // DebugBkSopsTaskResponseValidationError is the validation error returned by // DebugBkSopsTaskResponse.Validate if the designated constraints aren't met. type DebugBkSopsTaskResponseValidationError struct { @@ -35519,13 +58868,46 @@ var _ interface { // Validate checks the field values on DebugBkSopsTaskInfo with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DebugBkSopsTaskInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DebugBkSopsTaskInfo with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DebugBkSopsTaskInfoMultiError, or nil if none found. +func (m *DebugBkSopsTaskInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *DebugBkSopsTaskInfo) validate(all bool) error { if m == nil { return nil } - if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { + var errors []error + + if all { + switch v := interface{}(m.GetTask()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DebugBkSopsTaskInfoValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DebugBkSopsTaskInfoValidationError{ + field: "Task", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetTask()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DebugBkSopsTaskInfoValidationError{ field: "Task", @@ -35535,9 +58917,30 @@ func (m *DebugBkSopsTaskInfo) Validate() error { } } + if len(errors) > 0 { + return DebugBkSopsTaskInfoMultiError(errors) + } + return nil } +// DebugBkSopsTaskInfoMultiError is an error wrapping multiple validation +// errors returned by DebugBkSopsTaskInfo.ValidateAll() if the designated +// constraints aren't met. +type DebugBkSopsTaskInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DebugBkSopsTaskInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DebugBkSopsTaskInfoMultiError) AllErrors() []error { return m } + // DebugBkSopsTaskInfoValidationError is the validation error returned by // DebugBkSopsTaskInfo.Validate if the designated constraints aren't met. type DebugBkSopsTaskInfoValidationError struct { @@ -35595,13 +58998,27 @@ var _ interface { } = DebugBkSopsTaskInfoValidationError{} // Validate checks the field values on CloudModuleFlag with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *CloudModuleFlag) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CloudModuleFlag with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CloudModuleFlagMultiError, or nil if none found. +func (m *CloudModuleFlag) ValidateAll() error { + return m.validate(true) +} + +func (m *CloudModuleFlag) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for Version @@ -35626,7 +59043,26 @@ func (m *CloudModuleFlag) Validate() error { // no validation rules for FlagType - if v, ok := interface{}(m.GetRegex()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetRegex()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudModuleFlagValidationError{ + field: "Regex", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudModuleFlagValidationError{ + field: "Regex", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRegex()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudModuleFlagValidationError{ field: "Regex", @@ -35636,7 +59072,26 @@ func (m *CloudModuleFlag) Validate() error { } } - if v, ok := interface{}(m.GetRange()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetRange()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CloudModuleFlagValidationError{ + field: "Range", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CloudModuleFlagValidationError{ + field: "Range", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRange()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CloudModuleFlagValidationError{ field: "Range", @@ -35648,9 +59103,30 @@ func (m *CloudModuleFlag) Validate() error { // no validation rules for NetworkType + if len(errors) > 0 { + return CloudModuleFlagMultiError(errors) + } + return nil } +// CloudModuleFlagMultiError is an error wrapping multiple validation errors +// returned by CloudModuleFlag.ValidateAll() if the designated constraints +// aren't met. +type CloudModuleFlagMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CloudModuleFlagMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CloudModuleFlagMultiError) AllErrors() []error { return m } + // CloudModuleFlagValidationError is the validation error returned by // CloudModuleFlag.Validate if the designated constraints aren't met. type CloudModuleFlagValidationError struct { @@ -35706,19 +59182,53 @@ var _ interface { } = CloudModuleFlagValidationError{} // Validate checks the field values on FlagInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *FlagInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on FlagInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in FlagInfoMultiError, or nil +// if none found. +func (m *FlagInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *FlagInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for FlagName // no validation rules for FlagDesc // no validation rules for DefaultValue - if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetEnable()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, FlagInfoValidationError{ + field: "Enable", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, FlagInfoValidationError{ + field: "Enable", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return FlagInfoValidationError{ field: "Enable", @@ -35730,7 +59240,26 @@ func (m *FlagInfo) Validate() error { // no validation rules for FlagType - if v, ok := interface{}(m.GetRegex()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetRegex()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, FlagInfoValidationError{ + field: "Regex", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, FlagInfoValidationError{ + field: "Regex", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRegex()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return FlagInfoValidationError{ field: "Regex", @@ -35740,7 +59269,26 @@ func (m *FlagInfo) Validate() error { } } - if v, ok := interface{}(m.GetRange()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetRange()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, FlagInfoValidationError{ + field: "Range", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, FlagInfoValidationError{ + field: "Range", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetRange()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return FlagInfoValidationError{ field: "Range", @@ -35752,9 +59300,29 @@ func (m *FlagInfo) Validate() error { // no validation rules for NetworkType + if len(errors) > 0 { + return FlagInfoMultiError(errors) + } + return nil } +// FlagInfoMultiError is an error wrapping multiple validation errors returned +// by FlagInfo.ValidateAll() if the designated constraints aren't met. +type FlagInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m FlagInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m FlagInfoMultiError) AllErrors() []error { return m } + // FlagInfoValidationError is the validation error returned by // FlagInfo.Validate if the designated constraints aren't met. type FlagInfoValidationError struct { @@ -35810,19 +59378,54 @@ var _ interface { } = FlagInfoValidationError{} // Validate checks the field values on ValueRegex with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ValueRegex) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ValueRegex with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ValueRegexMultiError, or +// nil if none found. +func (m *ValueRegex) ValidateAll() error { + return m.validate(true) +} + +func (m *ValueRegex) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Validator // no validation rules for Message + if len(errors) > 0 { + return ValueRegexMultiError(errors) + } + return nil } +// ValueRegexMultiError is an error wrapping multiple validation errors +// returned by ValueRegex.ValidateAll() if the designated constraints aren't met. +type ValueRegexMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ValueRegexMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ValueRegexMultiError) AllErrors() []error { return m } + // ValueRegexValidationError is the validation error returned by // ValueRegex.Validate if the designated constraints aren't met. type ValueRegexValidationError struct { @@ -35878,20 +59481,54 @@ var _ interface { } = ValueRegexValidationError{} // Validate checks the field values on NumberRange with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NumberRange) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NumberRange with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NumberRangeMultiError, or +// nil if none found. +func (m *NumberRange) ValidateAll() error { + return m.validate(true) +} + +func (m *NumberRange) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Min // no validation rules for Max + if len(errors) > 0 { + return NumberRangeMultiError(errors) + } + return nil } +// NumberRangeMultiError is an error wrapping multiple validation errors +// returned by NumberRange.ValidateAll() if the designated constraints aren't met. +type NumberRangeMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NumberRangeMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NumberRangeMultiError) AllErrors() []error { return m } + // NumberRangeValidationError is the validation error returned by // NumberRange.Validate if the designated constraints aren't met. type NumberRangeValidationError struct { @@ -35948,34 +59585,75 @@ var _ interface { // Validate checks the field values on CreateCloudModuleFlagRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateCloudModuleFlagRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateCloudModuleFlagRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateCloudModuleFlagRequestMultiError, or nil if none found. +func (m *CreateCloudModuleFlagRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateCloudModuleFlagRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for Version if utf8.RuneCountInString(m.GetModuleID()) < 1 { - return CreateCloudModuleFlagRequestValidationError{ + err := CreateCloudModuleFlagRequestValidationError{ field: "ModuleID", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } if len(m.GetFlagList()) < 1 { - return CreateCloudModuleFlagRequestValidationError{ + err := CreateCloudModuleFlagRequestValidationError{ field: "FlagList", reason: "value must contain at least 1 item(s)", } + if !all { + return err + } + errors = append(errors, err) } for idx, item := range m.GetFlagList() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateCloudModuleFlagRequestValidationError{ + field: fmt.Sprintf("FlagList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateCloudModuleFlagRequestValidationError{ + field: fmt.Sprintf("FlagList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateCloudModuleFlagRequestValidationError{ field: fmt.Sprintf("FlagList[%v]", idx), @@ -35989,9 +59667,30 @@ func (m *CreateCloudModuleFlagRequest) Validate() error { // no validation rules for Operator + if len(errors) > 0 { + return CreateCloudModuleFlagRequestMultiError(errors) + } + return nil } +// CreateCloudModuleFlagRequestMultiError is an error wrapping multiple +// validation errors returned by CreateCloudModuleFlagRequest.ValidateAll() if +// the designated constraints aren't met. +type CreateCloudModuleFlagRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateCloudModuleFlagRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateCloudModuleFlagRequestMultiError) AllErrors() []error { return m } + // CreateCloudModuleFlagRequestValidationError is the validation error returned // by CreateCloudModuleFlagRequest.Validate if the designated constraints // aren't met. @@ -36051,19 +59750,54 @@ var _ interface { // Validate checks the field values on CreateCloudModuleFlagResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateCloudModuleFlagResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateCloudModuleFlagResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// CreateCloudModuleFlagResponseMultiError, or nil if none found. +func (m *CreateCloudModuleFlagResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateCloudModuleFlagResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message + if len(errors) > 0 { + return CreateCloudModuleFlagResponseMultiError(errors) + } + return nil } +// CreateCloudModuleFlagResponseMultiError is an error wrapping multiple +// validation errors returned by CreateCloudModuleFlagResponse.ValidateAll() +// if the designated constraints aren't met. +type CreateCloudModuleFlagResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateCloudModuleFlagResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateCloudModuleFlagResponseMultiError) AllErrors() []error { return m } + // CreateCloudModuleFlagResponseValidationError is the validation error // returned by CreateCloudModuleFlagResponse.Validate if the designated // constraints aren't met. @@ -36123,12 +59857,26 @@ var _ interface { // Validate checks the field values on UpdateCloudModuleFlagRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateCloudModuleFlagRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateCloudModuleFlagRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// UpdateCloudModuleFlagRequestMultiError, or nil if none found. +func (m *UpdateCloudModuleFlagRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateCloudModuleFlagRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for Version @@ -36136,16 +59884,39 @@ func (m *UpdateCloudModuleFlagRequest) Validate() error { // no validation rules for ModuleID if len(m.GetFlagList()) < 1 { - return UpdateCloudModuleFlagRequestValidationError{ + err := UpdateCloudModuleFlagRequestValidationError{ field: "FlagList", reason: "value must contain at least 1 item(s)", } + if !all { + return err + } + errors = append(errors, err) } for idx, item := range m.GetFlagList() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, UpdateCloudModuleFlagRequestValidationError{ + field: fmt.Sprintf("FlagList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, UpdateCloudModuleFlagRequestValidationError{ + field: fmt.Sprintf("FlagList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return UpdateCloudModuleFlagRequestValidationError{ field: fmt.Sprintf("FlagList[%v]", idx), @@ -36159,9 +59930,30 @@ func (m *UpdateCloudModuleFlagRequest) Validate() error { // no validation rules for Operator + if len(errors) > 0 { + return UpdateCloudModuleFlagRequestMultiError(errors) + } + return nil } +// UpdateCloudModuleFlagRequestMultiError is an error wrapping multiple +// validation errors returned by UpdateCloudModuleFlagRequest.ValidateAll() if +// the designated constraints aren't met. +type UpdateCloudModuleFlagRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateCloudModuleFlagRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateCloudModuleFlagRequestMultiError) AllErrors() []error { return m } + // UpdateCloudModuleFlagRequestValidationError is the validation error returned // by UpdateCloudModuleFlagRequest.Validate if the designated constraints // aren't met. @@ -36221,19 +60013,54 @@ var _ interface { // Validate checks the field values on UpdateCloudModuleFlagResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *UpdateCloudModuleFlagResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on UpdateCloudModuleFlagResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// UpdateCloudModuleFlagResponseMultiError, or nil if none found. +func (m *UpdateCloudModuleFlagResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *UpdateCloudModuleFlagResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message + if len(errors) > 0 { + return UpdateCloudModuleFlagResponseMultiError(errors) + } + return nil } +// UpdateCloudModuleFlagResponseMultiError is an error wrapping multiple +// validation errors returned by UpdateCloudModuleFlagResponse.ValidateAll() +// if the designated constraints aren't met. +type UpdateCloudModuleFlagResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m UpdateCloudModuleFlagResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m UpdateCloudModuleFlagResponseMultiError) AllErrors() []error { return m } + // UpdateCloudModuleFlagResponseValidationError is the validation error // returned by UpdateCloudModuleFlagResponse.Validate if the designated // constraints aren't met. @@ -36293,12 +60120,26 @@ var _ interface { // Validate checks the field values on DeleteCloudModuleFlagRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteCloudModuleFlagRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteCloudModuleFlagRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteCloudModuleFlagRequestMultiError, or nil if none found. +func (m *DeleteCloudModuleFlagRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteCloudModuleFlagRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for Version @@ -36307,9 +60148,30 @@ func (m *DeleteCloudModuleFlagRequest) Validate() error { // no validation rules for Operator + if len(errors) > 0 { + return DeleteCloudModuleFlagRequestMultiError(errors) + } + return nil } +// DeleteCloudModuleFlagRequestMultiError is an error wrapping multiple +// validation errors returned by DeleteCloudModuleFlagRequest.ValidateAll() if +// the designated constraints aren't met. +type DeleteCloudModuleFlagRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteCloudModuleFlagRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteCloudModuleFlagRequestMultiError) AllErrors() []error { return m } + // DeleteCloudModuleFlagRequestValidationError is the validation error returned // by DeleteCloudModuleFlagRequest.Validate if the designated constraints // aren't met. @@ -36369,19 +60231,54 @@ var _ interface { // Validate checks the field values on DeleteCloudModuleFlagResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteCloudModuleFlagResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteCloudModuleFlagResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// DeleteCloudModuleFlagResponseMultiError, or nil if none found. +func (m *DeleteCloudModuleFlagResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteCloudModuleFlagResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message + if len(errors) > 0 { + return DeleteCloudModuleFlagResponseMultiError(errors) + } + return nil } +// DeleteCloudModuleFlagResponseMultiError is an error wrapping multiple +// validation errors returned by DeleteCloudModuleFlagResponse.ValidateAll() +// if the designated constraints aren't met. +type DeleteCloudModuleFlagResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteCloudModuleFlagResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteCloudModuleFlagResponseMultiError) AllErrors() []error { return m } + // DeleteCloudModuleFlagResponseValidationError is the validation error // returned by DeleteCloudModuleFlagResponse.Validate if the designated // constraints aren't met. @@ -36441,12 +60338,26 @@ var _ interface { // Validate checks the field values on ListCloudModuleFlagRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudModuleFlagRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudModuleFlagRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudModuleFlagRequestMultiError, or nil if none found. +func (m *ListCloudModuleFlagRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudModuleFlagRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for CloudID // no validation rules for Version @@ -36455,9 +60366,30 @@ func (m *ListCloudModuleFlagRequest) Validate() error { // no validation rules for Operator + if len(errors) > 0 { + return ListCloudModuleFlagRequestMultiError(errors) + } + return nil } +// ListCloudModuleFlagRequestMultiError is an error wrapping multiple +// validation errors returned by ListCloudModuleFlagRequest.ValidateAll() if +// the designated constraints aren't met. +type ListCloudModuleFlagRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudModuleFlagRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudModuleFlagRequestMultiError) AllErrors() []error { return m } + // ListCloudModuleFlagRequestValidationError is the validation error returned // by ListCloudModuleFlagRequest.Validate if the designated constraints aren't met. type ListCloudModuleFlagRequestValidationError struct { @@ -36516,12 +60448,26 @@ var _ interface { // Validate checks the field values on ListCloudModuleFlagResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListCloudModuleFlagResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListCloudModuleFlagResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListCloudModuleFlagResponseMultiError, or nil if none found. +func (m *ListCloudModuleFlagResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListCloudModuleFlagResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -36529,7 +60475,26 @@ func (m *ListCloudModuleFlagResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListCloudModuleFlagResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListCloudModuleFlagResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListCloudModuleFlagResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -36541,9 +60506,30 @@ func (m *ListCloudModuleFlagResponse) Validate() error { } + if len(errors) > 0 { + return ListCloudModuleFlagResponseMultiError(errors) + } + return nil } +// ListCloudModuleFlagResponseMultiError is an error wrapping multiple +// validation errors returned by ListCloudModuleFlagResponse.ValidateAll() if +// the designated constraints aren't met. +type ListCloudModuleFlagResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListCloudModuleFlagResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListCloudModuleFlagResponseMultiError) AllErrors() []error { return m } + // ListCloudModuleFlagResponseValidationError is the validation error returned // by ListCloudModuleFlagResponse.Validate if the designated constraints // aren't met. @@ -36603,21 +60589,56 @@ var _ interface { // Validate checks the field values on GetExternalNodeScriptRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetExternalNodeScriptRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetExternalNodeScriptRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetExternalNodeScriptRequestMultiError, or nil if none found. +func (m *GetExternalNodeScriptRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetExternalNodeScriptRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NodeGroupID // no validation rules for Operator // no validation rules for Internal + if len(errors) > 0 { + return GetExternalNodeScriptRequestMultiError(errors) + } + return nil } +// GetExternalNodeScriptRequestMultiError is an error wrapping multiple +// validation errors returned by GetExternalNodeScriptRequest.ValidateAll() if +// the designated constraints aren't met. +type GetExternalNodeScriptRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetExternalNodeScriptRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetExternalNodeScriptRequestMultiError) AllErrors() []error { return m } + // GetExternalNodeScriptRequestValidationError is the validation error returned // by GetExternalNodeScriptRequest.Validate if the designated constraints // aren't met. @@ -36677,12 +60698,26 @@ var _ interface { // Validate checks the field values on GetExternalNodeScriptResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetExternalNodeScriptResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetExternalNodeScriptResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetExternalNodeScriptResponseMultiError, or nil if none found. +func (m *GetExternalNodeScriptResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetExternalNodeScriptResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -36691,7 +60726,26 @@ func (m *GetExternalNodeScriptResponse) Validate() error { // no validation rules for Data - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetExternalNodeScriptResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetExternalNodeScriptResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetExternalNodeScriptResponseValidationError{ field: "WebAnnotations", @@ -36701,9 +60755,30 @@ func (m *GetExternalNodeScriptResponse) Validate() error { } } + if len(errors) > 0 { + return GetExternalNodeScriptResponseMultiError(errors) + } + return nil } +// GetExternalNodeScriptResponseMultiError is an error wrapping multiple +// validation errors returned by GetExternalNodeScriptResponse.ValidateAll() +// if the designated constraints aren't met. +type GetExternalNodeScriptResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetExternalNodeScriptResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetExternalNodeScriptResponseMultiError) AllErrors() []error { return m } + // GetExternalNodeScriptResponseValidationError is the validation error // returned by GetExternalNodeScriptResponse.Validate if the designated // constraints aren't met. @@ -36762,17 +60837,52 @@ var _ interface { } = GetExternalNodeScriptResponseValidationError{} // Validate checks the field values on MapStruct with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *MapStruct) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on MapStruct with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in MapStructMultiError, or nil +// if none found. +func (m *MapStruct) ValidateAll() error { + return m.validate(true) +} + +func (m *MapStruct) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Values + if len(errors) > 0 { + return MapStructMultiError(errors) + } + return nil } +// MapStructMultiError is an error wrapping multiple validation errors returned +// by MapStruct.ValidateAll() if the designated constraints aren't met. +type MapStructMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MapStructMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MapStructMultiError) AllErrors() []error { return m } + // MapStructValidationError is the validation error returned by // MapStruct.Validate if the designated constraints aren't met. type MapStructValidationError struct { @@ -36829,19 +60939,54 @@ var _ interface { // Validate checks the field values on GetBatchCustomSettingRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetBatchCustomSettingRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetBatchCustomSettingRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetBatchCustomSettingRequestMultiError, or nil if none found. +func (m *GetBatchCustomSettingRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetBatchCustomSettingRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ScopeType // no validation rules for ScopeId + if len(errors) > 0 { + return GetBatchCustomSettingRequestMultiError(errors) + } + return nil } +// GetBatchCustomSettingRequestMultiError is an error wrapping multiple +// validation errors returned by GetBatchCustomSettingRequest.ValidateAll() if +// the designated constraints aren't met. +type GetBatchCustomSettingRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetBatchCustomSettingRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetBatchCustomSettingRequestMultiError) AllErrors() []error { return m } + // GetBatchCustomSettingRequestValidationError is the validation error returned // by GetBatchCustomSettingRequest.Validate if the designated constraints // aren't met. @@ -36901,12 +61046,26 @@ var _ interface { // Validate checks the field values on GetBatchCustomSettingResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetBatchCustomSettingResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetBatchCustomSettingResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetBatchCustomSettingResponseMultiError, or nil if none found. +func (m *GetBatchCustomSettingResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetBatchCustomSettingResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Success @@ -36915,7 +61074,26 @@ func (m *GetBatchCustomSettingResponse) Validate() error { // no validation rules for RequestId - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetBatchCustomSettingResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetBatchCustomSettingResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetBatchCustomSettingResponseValidationError{ field: "Data", @@ -36925,9 +61103,30 @@ func (m *GetBatchCustomSettingResponse) Validate() error { } } + if len(errors) > 0 { + return GetBatchCustomSettingResponseMultiError(errors) + } + return nil } +// GetBatchCustomSettingResponseMultiError is an error wrapping multiple +// validation errors returned by GetBatchCustomSettingResponse.ValidateAll() +// if the designated constraints aren't met. +type GetBatchCustomSettingResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetBatchCustomSettingResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetBatchCustomSettingResponseMultiError) AllErrors() []error { return m } + // GetBatchCustomSettingResponseValidationError is the validation error // returned by GetBatchCustomSettingResponse.Validate if the designated // constraints aren't met. @@ -36986,19 +61185,54 @@ var _ interface { } = GetBatchCustomSettingResponseValidationError{} // Validate checks the field values on ScopeInfo with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *ScopeInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ScopeInfo with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in ScopeInfoMultiError, or nil +// if none found. +func (m *ScopeInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *ScopeInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ScopeType // no validation rules for ScopeId + if len(errors) > 0 { + return ScopeInfoMultiError(errors) + } + return nil } +// ScopeInfoMultiError is an error wrapping multiple validation errors returned +// by ScopeInfo.ValidateAll() if the designated constraints aren't met. +type ScopeInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ScopeInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ScopeInfoMultiError) AllErrors() []error { return m } + // ScopeInfoValidationError is the validation error returned by // ScopeInfo.Validate if the designated constraints aren't met. type ScopeInfoValidationError struct { @@ -37055,12 +61289,26 @@ var _ interface { // Validate checks the field values on GetBizTopologyHostRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetBizTopologyHostRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetBizTopologyHostRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetBizTopologyHostRequestMultiError, or nil if none found. +func (m *GetBizTopologyHostRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetBizTopologyHostRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ScopeType // no validation rules for ScopeId @@ -37070,7 +61318,26 @@ func (m *GetBizTopologyHostRequest) Validate() error { for idx, item := range m.GetScopeList() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetBizTopologyHostRequestValidationError{ + field: fmt.Sprintf("ScopeList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetBizTopologyHostRequestValidationError{ + field: fmt.Sprintf("ScopeList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetBizTopologyHostRequestValidationError{ field: fmt.Sprintf("ScopeList[%v]", idx), @@ -37082,9 +61349,30 @@ func (m *GetBizTopologyHostRequest) Validate() error { } + if len(errors) > 0 { + return GetBizTopologyHostRequestMultiError(errors) + } + return nil } +// GetBizTopologyHostRequestMultiError is an error wrapping multiple validation +// errors returned by GetBizTopologyHostRequest.ValidateAll() if the +// designated constraints aren't met. +type GetBizTopologyHostRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetBizTopologyHostRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetBizTopologyHostRequestMultiError) AllErrors() []error { return m } + // GetBizTopologyHostRequestValidationError is the validation error returned by // GetBizTopologyHostRequest.Validate if the designated constraints aren't met. type GetBizTopologyHostRequestValidationError struct { @@ -37143,12 +61431,26 @@ var _ interface { // Validate checks the field values on GetBizTopologyHostResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetBizTopologyHostResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetBizTopologyHostResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetBizTopologyHostResponseMultiError, or nil if none found. +func (m *GetBizTopologyHostResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetBizTopologyHostResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Success @@ -37157,7 +61459,26 @@ func (m *GetBizTopologyHostResponse) Validate() error { // no validation rules for RequestId - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetBizTopologyHostResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetBizTopologyHostResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetBizTopologyHostResponseValidationError{ field: "Data", @@ -37167,9 +61488,30 @@ func (m *GetBizTopologyHostResponse) Validate() error { } } + if len(errors) > 0 { + return GetBizTopologyHostResponseMultiError(errors) + } + return nil } +// GetBizTopologyHostResponseMultiError is an error wrapping multiple +// validation errors returned by GetBizTopologyHostResponse.ValidateAll() if +// the designated constraints aren't met. +type GetBizTopologyHostResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetBizTopologyHostResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetBizTopologyHostResponseMultiError) AllErrors() []error { return m } + // GetBizTopologyHostResponseValidationError is the validation error returned // by GetBizTopologyHostResponse.Validate if the designated constraints aren't met. type GetBizTopologyHostResponseValidationError struct { @@ -37227,19 +61569,54 @@ var _ interface { } = GetBizTopologyHostResponseValidationError{} // Validate checks the field values on NodeData with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NodeData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NodeData with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NodeDataMultiError, or nil +// if none found. +func (m *NodeData) ValidateAll() error { + return m.validate(true) +} + +func (m *NodeData) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ObjectId // no validation rules for InstanceId + if len(errors) > 0 { + return NodeDataMultiError(errors) + } + return nil } +// NodeDataMultiError is an error wrapping multiple validation errors returned +// by NodeData.ValidateAll() if the designated constraints aren't met. +type NodeDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NodeDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NodeDataMultiError) AllErrors() []error { return m } + // NodeDataValidationError is the validation error returned by // NodeData.Validate if the designated constraints aren't met. type NodeDataValidationError struct { @@ -37296,27 +61673,64 @@ var _ interface { // Validate checks the field values on GetTopologyNodesRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetTopologyNodesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetTopologyNodesRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetTopologyNodesRequestMultiError, or nil if none found. +func (m *GetTopologyNodesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetTopologyNodesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ScopeType // no validation rules for ScopeId if len(m.GetNodeList()) < 1 { - return GetTopologyNodesRequestValidationError{ + err := GetTopologyNodesRequestValidationError{ field: "NodeList", reason: "value must contain at least 1 item(s)", } + if !all { + return err + } + errors = append(errors, err) } for idx, item := range m.GetNodeList() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetTopologyNodesRequestValidationError{ + field: fmt.Sprintf("NodeList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetTopologyNodesRequestValidationError{ + field: fmt.Sprintf("NodeList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyNodesRequestValidationError{ field: fmt.Sprintf("NodeList[%v]", idx), @@ -37330,7 +61744,26 @@ func (m *GetTopologyNodesRequest) Validate() error { // no validation rules for SearchContent - if v, ok := interface{}(m.GetAlive()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAlive()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetTopologyNodesRequestValidationError{ + field: "Alive", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetTopologyNodesRequestValidationError{ + field: "Alive", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAlive()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyNodesRequestValidationError{ field: "Alive", @@ -37346,9 +61779,30 @@ func (m *GetTopologyNodesRequest) Validate() error { // no validation rules for ShowAvailableNode + if len(errors) > 0 { + return GetTopologyNodesRequestMultiError(errors) + } + return nil } +// GetTopologyNodesRequestMultiError is an error wrapping multiple validation +// errors returned by GetTopologyNodesRequest.ValidateAll() if the designated +// constraints aren't met. +type GetTopologyNodesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetTopologyNodesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetTopologyNodesRequestMultiError) AllErrors() []error { return m } + // GetTopologyNodesRequestValidationError is the validation error returned by // GetTopologyNodesRequest.Validate if the designated constraints aren't met. type GetTopologyNodesRequestValidationError struct { @@ -37407,12 +61861,26 @@ var _ interface { // Validate checks the field values on GetTopologyNodesResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetTopologyNodesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetTopologyNodesResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetTopologyNodesResponseMultiError, or nil if none found. +func (m *GetTopologyNodesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetTopologyNodesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Success @@ -37421,7 +61889,26 @@ func (m *GetTopologyNodesResponse) Validate() error { // no validation rules for RequestId - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetTopologyNodesResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetTopologyNodesResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyNodesResponseValidationError{ field: "Data", @@ -37431,9 +61918,30 @@ func (m *GetTopologyNodesResponse) Validate() error { } } + if len(errors) > 0 { + return GetTopologyNodesResponseMultiError(errors) + } + return nil } +// GetTopologyNodesResponseMultiError is an error wrapping multiple validation +// errors returned by GetTopologyNodesResponse.ValidateAll() if the designated +// constraints aren't met. +type GetTopologyNodesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetTopologyNodesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetTopologyNodesResponseMultiError) AllErrors() []error { return m } + // GetTopologyNodesResponseValidationError is the validation error returned by // GetTopologyNodesResponse.Validate if the designated constraints aren't met. type GetTopologyNodesResponseValidationError struct { @@ -37492,12 +62000,26 @@ var _ interface { // Validate checks the field values on GetTopologyNodesData with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetTopologyNodesData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetTopologyNodesData with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetTopologyNodesDataMultiError, or nil if none found. +func (m *GetTopologyNodesData) ValidateAll() error { + return m.validate(true) +} + +func (m *GetTopologyNodesData) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Start // no validation rules for PageSize @@ -37507,7 +62029,26 @@ func (m *GetTopologyNodesData) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetTopologyNodesDataValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetTopologyNodesDataValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyNodesDataValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -37519,9 +62060,30 @@ func (m *GetTopologyNodesData) Validate() error { } + if len(errors) > 0 { + return GetTopologyNodesDataMultiError(errors) + } + return nil } +// GetTopologyNodesDataMultiError is an error wrapping multiple validation +// errors returned by GetTopologyNodesData.ValidateAll() if the designated +// constraints aren't met. +type GetTopologyNodesDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetTopologyNodesDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetTopologyNodesDataMultiError) AllErrors() []error { return m } + // GetTopologyNodesDataValidationError is the validation error returned by // GetTopologyNodesData.Validate if the designated constraints aren't met. type GetTopologyNodesDataValidationError struct { @@ -37579,12 +62141,27 @@ var _ interface { } = GetTopologyNodesDataValidationError{} // Validate checks the field values on HostData with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *HostData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on HostData with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in HostDataMultiError, or nil +// if none found. +func (m *HostData) ValidateAll() error { + return m.validate(true) +} + +func (m *HostData) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for HostId // no validation rules for Ip @@ -37597,7 +62174,26 @@ func (m *HostData) Validate() error { // no validation rules for OsName - if v, ok := interface{}(m.GetCloudArea()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCloudArea()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, HostDataValidationError{ + field: "CloudArea", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, HostDataValidationError{ + field: "CloudArea", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCloudArea()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return HostDataValidationError{ field: "CloudArea", @@ -37607,9 +62203,29 @@ func (m *HostData) Validate() error { } } + if len(errors) > 0 { + return HostDataMultiError(errors) + } + return nil } +// HostDataMultiError is an error wrapping multiple validation errors returned +// by HostData.ValidateAll() if the designated constraints aren't met. +type HostDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m HostDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m HostDataMultiError) AllErrors() []error { return m } + // HostDataValidationError is the validation error returned by // HostData.Validate if the designated constraints aren't met. type HostDataValidationError struct { @@ -37665,20 +62281,55 @@ var _ interface { } = HostDataValidationError{} // Validate checks the field values on HostCloudArea with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *HostCloudArea) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on HostCloudArea with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in HostCloudAreaMultiError, or +// nil if none found. +func (m *HostCloudArea) ValidateAll() error { + return m.validate(true) +} + +func (m *HostCloudArea) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Id // no validation rules for Name + if len(errors) > 0 { + return HostCloudAreaMultiError(errors) + } + return nil } +// HostCloudAreaMultiError is an error wrapping multiple validation errors +// returned by HostCloudArea.ValidateAll() if the designated constraints +// aren't met. +type HostCloudAreaMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m HostCloudAreaMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m HostCloudAreaMultiError) AllErrors() []error { return m } + // HostCloudAreaValidationError is the validation error returned by // HostCloudArea.Validate if the designated constraints aren't met. type HostCloudAreaValidationError struct { @@ -37735,27 +62386,64 @@ var _ interface { // Validate checks the field values on GetTopologyHostIdsNodesRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetTopologyHostIdsNodesRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetTopologyHostIdsNodesRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetTopologyHostIdsNodesRequestMultiError, or nil if none found. +func (m *GetTopologyHostIdsNodesRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetTopologyHostIdsNodesRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ScopeType // no validation rules for ScopeId if len(m.GetNodeList()) < 1 { - return GetTopologyHostIdsNodesRequestValidationError{ + err := GetTopologyHostIdsNodesRequestValidationError{ field: "NodeList", reason: "value must contain at least 1 item(s)", } + if !all { + return err + } + errors = append(errors, err) } for idx, item := range m.GetNodeList() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetTopologyHostIdsNodesRequestValidationError{ + field: fmt.Sprintf("NodeList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetTopologyHostIdsNodesRequestValidationError{ + field: fmt.Sprintf("NodeList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyHostIdsNodesRequestValidationError{ field: fmt.Sprintf("NodeList[%v]", idx), @@ -37769,7 +62457,26 @@ func (m *GetTopologyHostIdsNodesRequest) Validate() error { // no validation rules for SearchContent - if v, ok := interface{}(m.GetAlive()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAlive()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetTopologyHostIdsNodesRequestValidationError{ + field: "Alive", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetTopologyHostIdsNodesRequestValidationError{ + field: "Alive", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAlive()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyHostIdsNodesRequestValidationError{ field: "Alive", @@ -37783,9 +62490,30 @@ func (m *GetTopologyHostIdsNodesRequest) Validate() error { // no validation rules for PageSize + if len(errors) > 0 { + return GetTopologyHostIdsNodesRequestMultiError(errors) + } + return nil } +// GetTopologyHostIdsNodesRequestMultiError is an error wrapping multiple +// validation errors returned by GetTopologyHostIdsNodesRequest.ValidateAll() +// if the designated constraints aren't met. +type GetTopologyHostIdsNodesRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetTopologyHostIdsNodesRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetTopologyHostIdsNodesRequestMultiError) AllErrors() []error { return m } + // GetTopologyHostIdsNodesRequestValidationError is the validation error // returned by GetTopologyHostIdsNodesRequest.Validate if the designated // constraints aren't met. @@ -37845,12 +62573,26 @@ var _ interface { // Validate checks the field values on GetTopologyHostIdsNodesResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetTopologyHostIdsNodesResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetTopologyHostIdsNodesResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetTopologyHostIdsNodesResponseMultiError, or nil if none found. +func (m *GetTopologyHostIdsNodesResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetTopologyHostIdsNodesResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Success @@ -37859,7 +62601,26 @@ func (m *GetTopologyHostIdsNodesResponse) Validate() error { // no validation rules for RequestId - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetTopologyHostIdsNodesResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetTopologyHostIdsNodesResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyHostIdsNodesResponseValidationError{ field: "Data", @@ -37869,9 +62630,30 @@ func (m *GetTopologyHostIdsNodesResponse) Validate() error { } } + if len(errors) > 0 { + return GetTopologyHostIdsNodesResponseMultiError(errors) + } + return nil } +// GetTopologyHostIdsNodesResponseMultiError is an error wrapping multiple +// validation errors returned by GetTopologyHostIdsNodesResponse.ValidateAll() +// if the designated constraints aren't met. +type GetTopologyHostIdsNodesResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetTopologyHostIdsNodesResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetTopologyHostIdsNodesResponseMultiError) AllErrors() []error { return m } + // GetTopologyHostIdsNodesResponseValidationError is the validation error // returned by GetTopologyHostIdsNodesResponse.Validate if the designated // constraints aren't met. @@ -37931,12 +62713,26 @@ var _ interface { // Validate checks the field values on GetTopologyHostIdsNodesData with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetTopologyHostIdsNodesData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetTopologyHostIdsNodesData with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetTopologyHostIdsNodesDataMultiError, or nil if none found. +func (m *GetTopologyHostIdsNodesData) ValidateAll() error { + return m.validate(true) +} + +func (m *GetTopologyHostIdsNodesData) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Start // no validation rules for PageSize @@ -37946,7 +62742,26 @@ func (m *GetTopologyHostIdsNodesData) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetTopologyHostIdsNodesDataValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetTopologyHostIdsNodesDataValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetTopologyHostIdsNodesDataValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -37958,9 +62773,30 @@ func (m *GetTopologyHostIdsNodesData) Validate() error { } + if len(errors) > 0 { + return GetTopologyHostIdsNodesDataMultiError(errors) + } + return nil } +// GetTopologyHostIdsNodesDataMultiError is an error wrapping multiple +// validation errors returned by GetTopologyHostIdsNodesData.ValidateAll() if +// the designated constraints aren't met. +type GetTopologyHostIdsNodesDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetTopologyHostIdsNodesDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetTopologyHostIdsNodesDataMultiError) AllErrors() []error { return m } + // GetTopologyHostIdsNodesDataValidationError is the validation error returned // by GetTopologyHostIdsNodesData.Validate if the designated constraints // aren't met. @@ -38019,16 +62855,49 @@ var _ interface { } = GetTopologyHostIdsNodesDataValidationError{} // Validate checks the field values on HostIDsNodeData with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *HostIDsNodeData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on HostIDsNodeData with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// HostIDsNodeDataMultiError, or nil if none found. +func (m *HostIDsNodeData) ValidateAll() error { + return m.validate(true) +} + +func (m *HostIDsNodeData) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for HostId - if v, ok := interface{}(m.GetMeta()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetMeta()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, HostIDsNodeDataValidationError{ + field: "Meta", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, HostIDsNodeDataValidationError{ + field: "Meta", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetMeta()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return HostIDsNodeDataValidationError{ field: "Meta", @@ -38038,9 +62907,30 @@ func (m *HostIDsNodeData) Validate() error { } } + if len(errors) > 0 { + return HostIDsNodeDataMultiError(errors) + } + return nil } +// HostIDsNodeDataMultiError is an error wrapping multiple validation errors +// returned by HostIDsNodeData.ValidateAll() if the designated constraints +// aren't met. +type HostIDsNodeDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m HostIDsNodeDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m HostIDsNodeDataMultiError) AllErrors() []error { return m } + // HostIDsNodeDataValidationError is the validation error returned by // HostIDsNodeData.Validate if the designated constraints aren't met. type HostIDsNodeDataValidationError struct { @@ -38096,21 +62986,55 @@ var _ interface { } = HostIDsNodeDataValidationError{} // Validate checks the field values on Meta with the rules defined in the proto -// definition for this message. If any rules are violated, an error is returned. +// definition for this message. If any rules are violated, the first error +// encountered is returned, or nil if there are no violations. func (m *Meta) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on Meta with the rules defined in the +// proto definition for this message. If any rules are violated, the result is +// a list of violation errors wrapped in MetaMultiError, or nil if none found. +func (m *Meta) ValidateAll() error { + return m.validate(true) +} + +func (m *Meta) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ScopeType // no validation rules for ScopeId // no validation rules for BkBizId + if len(errors) > 0 { + return MetaMultiError(errors) + } + return nil } +// MetaMultiError is an error wrapping multiple validation errors returned by +// Meta.ValidateAll() if the designated constraints aren't met. +type MetaMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m MetaMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m MetaMultiError) AllErrors() []error { return m } + // MetaValidationError is the validation error returned by Meta.Validate if the // designated constraints aren't met. type MetaValidationError struct { @@ -38167,12 +63091,26 @@ var _ interface { // Validate checks the field values on GetHostsDetailsRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetHostsDetailsRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetHostsDetailsRequest with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetHostsDetailsRequestMultiError, or nil if none found. +func (m *GetHostsDetailsRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetHostsDetailsRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ScopeType // no validation rules for ScopeId @@ -38180,7 +63118,26 @@ func (m *GetHostsDetailsRequest) Validate() error { for idx, item := range m.GetHostList() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetHostsDetailsRequestValidationError{ + field: fmt.Sprintf("HostList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetHostsDetailsRequestValidationError{ + field: fmt.Sprintf("HostList[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetHostsDetailsRequestValidationError{ field: fmt.Sprintf("HostList[%v]", idx), @@ -38192,9 +63149,30 @@ func (m *GetHostsDetailsRequest) Validate() error { } + if len(errors) > 0 { + return GetHostsDetailsRequestMultiError(errors) + } + return nil } +// GetHostsDetailsRequestMultiError is an error wrapping multiple validation +// errors returned by GetHostsDetailsRequest.ValidateAll() if the designated +// constraints aren't met. +type GetHostsDetailsRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetHostsDetailsRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetHostsDetailsRequestMultiError) AllErrors() []error { return m } + // GetHostsDetailsRequestValidationError is the validation error returned by // GetHostsDetailsRequest.Validate if the designated constraints aren't met. type GetHostsDetailsRequestValidationError struct { @@ -38253,12 +63231,26 @@ var _ interface { // Validate checks the field values on GetHostsDetailsResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetHostsDetailsResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetHostsDetailsResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetHostsDetailsResponseMultiError, or nil if none found. +func (m *GetHostsDetailsResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetHostsDetailsResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Success @@ -38270,7 +63262,26 @@ func (m *GetHostsDetailsResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetHostsDetailsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetHostsDetailsResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetHostsDetailsResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -38282,9 +63293,30 @@ func (m *GetHostsDetailsResponse) Validate() error { } + if len(errors) > 0 { + return GetHostsDetailsResponseMultiError(errors) + } + return nil } +// GetHostsDetailsResponseMultiError is an error wrapping multiple validation +// errors returned by GetHostsDetailsResponse.ValidateAll() if the designated +// constraints aren't met. +type GetHostsDetailsResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetHostsDetailsResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetHostsDetailsResponseMultiError) AllErrors() []error { return m } + // GetHostsDetailsResponseValidationError is the validation error returned by // GetHostsDetailsResponse.Validate if the designated constraints aren't met. type GetHostsDetailsResponseValidationError struct { @@ -38342,13 +63374,27 @@ var _ interface { } = GetHostsDetailsResponseValidationError{} // Validate checks the field values on HostDataWithMeta with the rules defined -// in the proto definition for this message. If any rules are violated, an -// error is returned. +// in the proto definition for this message. If any rules are violated, the +// first error encountered is returned, or nil if there are no violations. func (m *HostDataWithMeta) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on HostDataWithMeta with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// HostDataWithMetaMultiError, or nil if none found. +func (m *HostDataWithMeta) ValidateAll() error { + return m.validate(true) +} + +func (m *HostDataWithMeta) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for HostId // no validation rules for Ip @@ -38361,7 +63407,26 @@ func (m *HostDataWithMeta) Validate() error { // no validation rules for OsName - if v, ok := interface{}(m.GetCloudArea()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCloudArea()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, HostDataWithMetaValidationError{ + field: "CloudArea", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, HostDataWithMetaValidationError{ + field: "CloudArea", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCloudArea()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return HostDataWithMetaValidationError{ field: "CloudArea", @@ -38371,7 +63436,26 @@ func (m *HostDataWithMeta) Validate() error { } } - if v, ok := interface{}(m.GetMeta()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetMeta()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, HostDataWithMetaValidationError{ + field: "Meta", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, HostDataWithMetaValidationError{ + field: "Meta", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetMeta()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return HostDataWithMetaValidationError{ field: "Meta", @@ -38381,9 +63465,30 @@ func (m *HostDataWithMeta) Validate() error { } } + if len(errors) > 0 { + return HostDataWithMetaMultiError(errors) + } + return nil } +// HostDataWithMetaMultiError is an error wrapping multiple validation errors +// returned by HostDataWithMeta.ValidateAll() if the designated constraints +// aren't met. +type HostDataWithMetaMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m HostDataWithMetaMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m HostDataWithMetaMultiError) AllErrors() []error { return m } + // HostDataWithMetaValidationError is the validation error returned by // HostDataWithMeta.Validate if the designated constraints aren't met. type HostDataWithMetaValidationError struct { @@ -38440,21 +63545,56 @@ var _ interface { // Validate checks the field values on GetScopeHostCheckRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetScopeHostCheckRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetScopeHostCheckRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetScopeHostCheckRequestMultiError, or nil if none found. +func (m *GetScopeHostCheckRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetScopeHostCheckRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ScopeType // no validation rules for ScopeId // no validation rules for ShowAvailableNode + if len(errors) > 0 { + return GetScopeHostCheckRequestMultiError(errors) + } + return nil } +// GetScopeHostCheckRequestMultiError is an error wrapping multiple validation +// errors returned by GetScopeHostCheckRequest.ValidateAll() if the designated +// constraints aren't met. +type GetScopeHostCheckRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetScopeHostCheckRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetScopeHostCheckRequestMultiError) AllErrors() []error { return m } + // GetScopeHostCheckRequestValidationError is the validation error returned by // GetScopeHostCheckRequest.Validate if the designated constraints aren't met. type GetScopeHostCheckRequestValidationError struct { @@ -38513,12 +63653,26 @@ var _ interface { // Validate checks the field values on GetScopeHostCheckResponse with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetScopeHostCheckResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetScopeHostCheckResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// GetScopeHostCheckResponseMultiError, or nil if none found. +func (m *GetScopeHostCheckResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetScopeHostCheckResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Success @@ -38530,7 +63684,26 @@ func (m *GetScopeHostCheckResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetScopeHostCheckResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetScopeHostCheckResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetScopeHostCheckResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -38542,9 +63715,30 @@ func (m *GetScopeHostCheckResponse) Validate() error { } + if len(errors) > 0 { + return GetScopeHostCheckResponseMultiError(errors) + } + return nil } +// GetScopeHostCheckResponseMultiError is an error wrapping multiple validation +// errors returned by GetScopeHostCheckResponse.ValidateAll() if the +// designated constraints aren't met. +type GetScopeHostCheckResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetScopeHostCheckResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetScopeHostCheckResponseMultiError) AllErrors() []error { return m } + // GetScopeHostCheckResponseValidationError is the validation error returned by // GetScopeHostCheckResponse.Validate if the designated constraints aren't met. type GetScopeHostCheckResponseValidationError struct { @@ -38602,22 +63796,56 @@ var _ interface { } = GetScopeHostCheckResponseValidationError{} // Validate checks the field values on NotifyConfig with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NotifyConfig) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NotifyConfig with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NotifyConfigMultiError, or +// nil if none found. +func (m *NotifyConfig) ValidateAll() error { + return m.validate(true) +} + +func (m *NotifyConfig) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Server // no validation rules for DataId // no validation rules for AccessToken + if len(errors) > 0 { + return NotifyConfigMultiError(errors) + } + return nil } +// NotifyConfigMultiError is an error wrapping multiple validation errors +// returned by NotifyConfig.ValidateAll() if the designated constraints aren't met. +type NotifyConfigMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NotifyConfigMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NotifyConfigMultiError) AllErrors() []error { return m } + // NotifyConfigValidationError is the validation error returned by // NotifyConfig.Validate if the designated constraints aren't met. type NotifyConfigValidationError struct { @@ -38673,21 +63901,56 @@ var _ interface { } = NotifyConfigValidationError{} // Validate checks the field values on NotifyData with the rules defined in the -// proto definition for this message. If any rules are violated, an error is returned. +// proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NotifyData) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NotifyData with the rules defined in +// the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NotifyDataMultiError, or +// nil if none found. +func (m *NotifyData) ValidateAll() error { + return m.validate(true) +} + +func (m *NotifyData) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Enable // no validation rules for Title // no validation rules for Content + if len(errors) > 0 { + return NotifyDataMultiError(errors) + } + return nil } +// NotifyDataMultiError is an error wrapping multiple validation errors +// returned by NotifyData.ValidateAll() if the designated constraints aren't met. +type NotifyDataMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NotifyDataMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NotifyDataMultiError) AllErrors() []error { return m } + // NotifyDataValidationError is the validation error returned by // NotifyData.Validate if the designated constraints aren't met. type NotifyDataValidationError struct { @@ -38743,13 +64006,27 @@ var _ interface { } = NotifyDataValidationError{} // Validate checks the field values on NotifyTemplate with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *NotifyTemplate) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on NotifyTemplate with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in NotifyTemplateMultiError, +// or nil if none found. +func (m *NotifyTemplate) ValidateAll() error { + return m.validate(true) +} + +func (m *NotifyTemplate) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for NotifyTemplateID // no validation rules for Name @@ -38762,7 +64039,26 @@ func (m *NotifyTemplate) Validate() error { // no validation rules for Enable - if v, ok := interface{}(m.GetConfig()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetConfig()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NotifyTemplateValidationError{ + field: "Config", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NotifyTemplateValidationError{ + field: "Config", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetConfig()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NotifyTemplateValidationError{ field: "Config", @@ -38772,7 +64068,26 @@ func (m *NotifyTemplate) Validate() error { } } - if v, ok := interface{}(m.GetCreateCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCreateCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NotifyTemplateValidationError{ + field: "CreateCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NotifyTemplateValidationError{ + field: "CreateCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCreateCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NotifyTemplateValidationError{ field: "CreateCluster", @@ -38782,7 +64097,26 @@ func (m *NotifyTemplate) Validate() error { } } - if v, ok := interface{}(m.GetDeleteCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetDeleteCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NotifyTemplateValidationError{ + field: "DeleteCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NotifyTemplateValidationError{ + field: "DeleteCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetDeleteCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NotifyTemplateValidationError{ field: "DeleteCluster", @@ -38792,7 +64126,26 @@ func (m *NotifyTemplate) Validate() error { } } - if v, ok := interface{}(m.GetCreateNodeGroup()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCreateNodeGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NotifyTemplateValidationError{ + field: "CreateNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NotifyTemplateValidationError{ + field: "CreateNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCreateNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NotifyTemplateValidationError{ field: "CreateNodeGroup", @@ -38802,7 +64155,26 @@ func (m *NotifyTemplate) Validate() error { } } - if v, ok := interface{}(m.GetDeleteNodeGroup()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetDeleteNodeGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NotifyTemplateValidationError{ + field: "DeleteNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NotifyTemplateValidationError{ + field: "DeleteNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetDeleteNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NotifyTemplateValidationError{ field: "DeleteNodeGroup", @@ -38812,7 +64184,26 @@ func (m *NotifyTemplate) Validate() error { } } - if v, ok := interface{}(m.GetUpdateNodeGroup()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetUpdateNodeGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NotifyTemplateValidationError{ + field: "UpdateNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NotifyTemplateValidationError{ + field: "UpdateNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUpdateNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NotifyTemplateValidationError{ field: "UpdateNodeGroup", @@ -38822,7 +64213,26 @@ func (m *NotifyTemplate) Validate() error { } } - if v, ok := interface{}(m.GetGroupScaleOutNode()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetGroupScaleOutNode()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NotifyTemplateValidationError{ + field: "GroupScaleOutNode", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NotifyTemplateValidationError{ + field: "GroupScaleOutNode", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetGroupScaleOutNode()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NotifyTemplateValidationError{ field: "GroupScaleOutNode", @@ -38832,7 +64242,26 @@ func (m *NotifyTemplate) Validate() error { } } - if v, ok := interface{}(m.GetGroupScaleInNode()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetGroupScaleInNode()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, NotifyTemplateValidationError{ + field: "GroupScaleInNode", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, NotifyTemplateValidationError{ + field: "GroupScaleInNode", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetGroupScaleInNode()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return NotifyTemplateValidationError{ field: "GroupScaleInNode", @@ -38852,9 +64281,30 @@ func (m *NotifyTemplate) Validate() error { // no validation rules for UpdateTime + if len(errors) > 0 { + return NotifyTemplateMultiError(errors) + } + return nil } +// NotifyTemplateMultiError is an error wrapping multiple validation errors +// returned by NotifyTemplate.ValidateAll() if the designated constraints +// aren't met. +type NotifyTemplateMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m NotifyTemplateMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m NotifyTemplateMultiError) AllErrors() []error { return m } + // NotifyTemplateValidationError is the validation error returned by // NotifyTemplate.Validate if the designated constraints aren't met. type NotifyTemplateValidationError struct { @@ -38911,43 +64361,92 @@ var _ interface { // Validate checks the field values on CreateNotifyTemplateRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateNotifyTemplateRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateNotifyTemplateRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateNotifyTemplateRequestMultiError, or nil if none found. +func (m *CreateNotifyTemplateRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateNotifyTemplateRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + if l := utf8.RuneCountInString(m.GetProjectID()); l < 1 || l > 2048 { - return CreateNotifyTemplateRequestValidationError{ + err := CreateNotifyTemplateRequestValidationError{ field: "ProjectID", reason: "value length must be between 1 and 2048 runes, inclusive", } + if !all { + return err + } + errors = append(errors, err) } if !_CreateNotifyTemplateRequest_ProjectID_Pattern.MatchString(m.GetProjectID()) { - return CreateNotifyTemplateRequestValidationError{ + err := CreateNotifyTemplateRequestValidationError{ field: "ProjectID", reason: "value does not match regex pattern \"^[0-9a-zA-Z-]+$\"", } + if !all { + return err + } + errors = append(errors, err) } if utf8.RuneCountInString(m.GetName()) < 1 { - return CreateNotifyTemplateRequestValidationError{ + err := CreateNotifyTemplateRequestValidationError{ field: "Name", reason: "value length must be at least 1 runes", } + if !all { + return err + } + errors = append(errors, err) } // no validation rules for Desc if _, ok := _CreateNotifyTemplateRequest_NotifyType_InLookup[m.GetNotifyType()]; !ok { - return CreateNotifyTemplateRequestValidationError{ + err := CreateNotifyTemplateRequestValidationError{ field: "NotifyType", reason: "value must be in list [bk_monitor_event bk_monitor_metrics]", } + if !all { + return err + } + errors = append(errors, err) } - if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetEnable()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNotifyTemplateRequestValidationError{ + field: "Enable", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNotifyTemplateRequestValidationError{ + field: "Enable", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetEnable()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateRequestValidationError{ field: "Enable", @@ -38957,7 +64456,26 @@ func (m *CreateNotifyTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetCreateCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCreateCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNotifyTemplateRequestValidationError{ + field: "CreateCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNotifyTemplateRequestValidationError{ + field: "CreateCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCreateCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateRequestValidationError{ field: "CreateCluster", @@ -38967,7 +64485,26 @@ func (m *CreateNotifyTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetDeleteCluster()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetDeleteCluster()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNotifyTemplateRequestValidationError{ + field: "DeleteCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNotifyTemplateRequestValidationError{ + field: "DeleteCluster", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetDeleteCluster()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateRequestValidationError{ field: "DeleteCluster", @@ -38977,7 +64514,26 @@ func (m *CreateNotifyTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetCreateNodeGroup()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetCreateNodeGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNotifyTemplateRequestValidationError{ + field: "CreateNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNotifyTemplateRequestValidationError{ + field: "CreateNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetCreateNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateRequestValidationError{ field: "CreateNodeGroup", @@ -38987,7 +64543,26 @@ func (m *CreateNotifyTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetDeleteNodeGroup()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetDeleteNodeGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNotifyTemplateRequestValidationError{ + field: "DeleteNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNotifyTemplateRequestValidationError{ + field: "DeleteNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetDeleteNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateRequestValidationError{ field: "DeleteNodeGroup", @@ -38997,7 +64572,26 @@ func (m *CreateNotifyTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetUpdateNodeGroup()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetUpdateNodeGroup()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNotifyTemplateRequestValidationError{ + field: "UpdateNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNotifyTemplateRequestValidationError{ + field: "UpdateNodeGroup", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetUpdateNodeGroup()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateRequestValidationError{ field: "UpdateNodeGroup", @@ -39007,7 +64601,26 @@ func (m *CreateNotifyTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetGroupScaleOutNode()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetGroupScaleOutNode()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNotifyTemplateRequestValidationError{ + field: "GroupScaleOutNode", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNotifyTemplateRequestValidationError{ + field: "GroupScaleOutNode", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetGroupScaleOutNode()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateRequestValidationError{ field: "GroupScaleOutNode", @@ -39017,7 +64630,26 @@ func (m *CreateNotifyTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetGroupScaleInNode()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetGroupScaleInNode()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNotifyTemplateRequestValidationError{ + field: "GroupScaleInNode", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNotifyTemplateRequestValidationError{ + field: "GroupScaleInNode", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetGroupScaleInNode()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateRequestValidationError{ field: "GroupScaleInNode", @@ -39027,7 +64659,26 @@ func (m *CreateNotifyTemplateRequest) Validate() error { } } - if v, ok := interface{}(m.GetConfig()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetConfig()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNotifyTemplateRequestValidationError{ + field: "Config", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNotifyTemplateRequestValidationError{ + field: "Config", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetConfig()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateRequestValidationError{ field: "Config", @@ -39041,9 +64692,30 @@ func (m *CreateNotifyTemplateRequest) Validate() error { // no validation rules for Creator + if len(errors) > 0 { + return CreateNotifyTemplateRequestMultiError(errors) + } + return nil } +// CreateNotifyTemplateRequestMultiError is an error wrapping multiple +// validation errors returned by CreateNotifyTemplateRequest.ValidateAll() if +// the designated constraints aren't met. +type CreateNotifyTemplateRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateNotifyTemplateRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateNotifyTemplateRequestMultiError) AllErrors() []error { return m } + // CreateNotifyTemplateRequestValidationError is the validation error returned // by CreateNotifyTemplateRequest.Validate if the designated constraints // aren't met. @@ -39110,19 +64782,52 @@ var _CreateNotifyTemplateRequest_NotifyType_InLookup = map[string]struct{}{ // Validate checks the field values on CreateNotifyTemplateResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *CreateNotifyTemplateResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on CreateNotifyTemplateResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// CreateNotifyTemplateResponseMultiError, or nil if none found. +func (m *CreateNotifyTemplateResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *CreateNotifyTemplateResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, CreateNotifyTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, CreateNotifyTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return CreateNotifyTemplateResponseValidationError{ field: "WebAnnotations", @@ -39132,9 +64837,30 @@ func (m *CreateNotifyTemplateResponse) Validate() error { } } + if len(errors) > 0 { + return CreateNotifyTemplateResponseMultiError(errors) + } + return nil } +// CreateNotifyTemplateResponseMultiError is an error wrapping multiple +// validation errors returned by CreateNotifyTemplateResponse.ValidateAll() if +// the designated constraints aren't met. +type CreateNotifyTemplateResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m CreateNotifyTemplateResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m CreateNotifyTemplateResponseMultiError) AllErrors() []error { return m } + // CreateNotifyTemplateResponseValidationError is the validation error returned // by CreateNotifyTemplateResponse.Validate if the designated constraints // aren't met. @@ -39194,19 +64920,54 @@ var _ interface { // Validate checks the field values on DeleteNotifyTemplateRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteNotifyTemplateRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteNotifyTemplateRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteNotifyTemplateRequestMultiError, or nil if none found. +func (m *DeleteNotifyTemplateRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteNotifyTemplateRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProjectID // no validation rules for NotifyTemplateID + if len(errors) > 0 { + return DeleteNotifyTemplateRequestMultiError(errors) + } + return nil } +// DeleteNotifyTemplateRequestMultiError is an error wrapping multiple +// validation errors returned by DeleteNotifyTemplateRequest.ValidateAll() if +// the designated constraints aren't met. +type DeleteNotifyTemplateRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteNotifyTemplateRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteNotifyTemplateRequestMultiError) AllErrors() []error { return m } + // DeleteNotifyTemplateRequestValidationError is the validation error returned // by DeleteNotifyTemplateRequest.Validate if the designated constraints // aren't met. @@ -39266,19 +65027,52 @@ var _ interface { // Validate checks the field values on DeleteNotifyTemplateResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *DeleteNotifyTemplateResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on DeleteNotifyTemplateResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// DeleteNotifyTemplateResponseMultiError, or nil if none found. +func (m *DeleteNotifyTemplateResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *DeleteNotifyTemplateResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetWebAnnotations()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, DeleteNotifyTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, DeleteNotifyTemplateResponseValidationError{ + field: "WebAnnotations", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetWebAnnotations()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return DeleteNotifyTemplateResponseValidationError{ field: "WebAnnotations", @@ -39288,9 +65082,30 @@ func (m *DeleteNotifyTemplateResponse) Validate() error { } } + if len(errors) > 0 { + return DeleteNotifyTemplateResponseMultiError(errors) + } + return nil } +// DeleteNotifyTemplateResponseMultiError is an error wrapping multiple +// validation errors returned by DeleteNotifyTemplateResponse.ValidateAll() if +// the designated constraints aren't met. +type DeleteNotifyTemplateResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m DeleteNotifyTemplateResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m DeleteNotifyTemplateResponseMultiError) AllErrors() []error { return m } + // DeleteNotifyTemplateResponseValidationError is the validation error returned // by DeleteNotifyTemplateResponse.Validate if the designated constraints // aren't met. @@ -39350,19 +65165,54 @@ var _ interface { // Validate checks the field values on ListNotifyTemplateRequest with the rules // defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNotifyTemplateRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNotifyTemplateRequest with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNotifyTemplateRequestMultiError, or nil if none found. +func (m *ListNotifyTemplateRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNotifyTemplateRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProjectID // no validation rules for NotifyTemplateID + if len(errors) > 0 { + return ListNotifyTemplateRequestMultiError(errors) + } + return nil } +// ListNotifyTemplateRequestMultiError is an error wrapping multiple validation +// errors returned by ListNotifyTemplateRequest.ValidateAll() if the +// designated constraints aren't met. +type ListNotifyTemplateRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNotifyTemplateRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNotifyTemplateRequestMultiError) AllErrors() []error { return m } + // ListNotifyTemplateRequestValidationError is the validation error returned by // ListNotifyTemplateRequest.Validate if the designated constraints aren't met. type ListNotifyTemplateRequestValidationError struct { @@ -39421,12 +65271,26 @@ var _ interface { // Validate checks the field values on ListNotifyTemplateResponse with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *ListNotifyTemplateResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on ListNotifyTemplateResponse with the +// rules defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// ListNotifyTemplateResponseMultiError, or nil if none found. +func (m *ListNotifyTemplateResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *ListNotifyTemplateResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message @@ -39436,7 +65300,26 @@ func (m *ListNotifyTemplateResponse) Validate() error { for idx, item := range m.GetData() { _, _ = idx, item - if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, ListNotifyTemplateResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, ListNotifyTemplateResponseValidationError{ + field: fmt.Sprintf("Data[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return ListNotifyTemplateResponseValidationError{ field: fmt.Sprintf("Data[%v]", idx), @@ -39448,9 +65331,30 @@ func (m *ListNotifyTemplateResponse) Validate() error { } + if len(errors) > 0 { + return ListNotifyTemplateResponseMultiError(errors) + } + return nil } +// ListNotifyTemplateResponseMultiError is an error wrapping multiple +// validation errors returned by ListNotifyTemplateResponse.ValidateAll() if +// the designated constraints aren't met. +type ListNotifyTemplateResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m ListNotifyTemplateResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m ListNotifyTemplateResponseMultiError) AllErrors() []error { return m } + // ListNotifyTemplateResponseValidationError is the validation error returned // by ListNotifyTemplateResponse.Validate if the designated constraints aren't met. type ListNotifyTemplateResponseValidationError struct { @@ -39509,12 +65413,26 @@ var _ interface { // Validate checks the field values on GetProviderResourceUsageRequest with the // rules defined in the proto definition for this message. If any rules are -// violated, an error is returned. +// violated, the first error encountered is returned, or nil if there are no violations. func (m *GetProviderResourceUsageRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetProviderResourceUsageRequest with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetProviderResourceUsageRequestMultiError, or nil if none found. +func (m *GetProviderResourceUsageRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *GetProviderResourceUsageRequest) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProviderID // no validation rules for Region @@ -39524,15 +65442,38 @@ func (m *GetProviderResourceUsageRequest) Validate() error { if wrapper := m.GetRatio(); wrapper != nil { if val := wrapper.GetValue(); val < 0 || val > 100 { - return GetProviderResourceUsageRequestValidationError{ + err := GetProviderResourceUsageRequestValidationError{ field: "Ratio", reason: "value must be inside range [0, 100]", } + if !all { + return err + } + errors = append(errors, err) } } - if v, ok := interface{}(m.GetAvailable()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetAvailable()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetProviderResourceUsageRequestValidationError{ + field: "Available", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetProviderResourceUsageRequestValidationError{ + field: "Available", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetAvailable()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetProviderResourceUsageRequestValidationError{ field: "Available", @@ -39542,9 +65483,30 @@ func (m *GetProviderResourceUsageRequest) Validate() error { } } + if len(errors) > 0 { + return GetProviderResourceUsageRequestMultiError(errors) + } + return nil } +// GetProviderResourceUsageRequestMultiError is an error wrapping multiple +// validation errors returned by GetProviderResourceUsageRequest.ValidateAll() +// if the designated constraints aren't met. +type GetProviderResourceUsageRequestMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetProviderResourceUsageRequestMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetProviderResourceUsageRequestMultiError) AllErrors() []error { return m } + // GetProviderResourceUsageRequestValidationError is the validation error // returned by GetProviderResourceUsageRequest.Validate if the designated // constraints aren't met. @@ -39604,19 +65566,53 @@ var _ interface { // Validate checks the field values on GetProviderResourceUsageResponse with // the rules defined in the proto definition for this message. If any rules -// are violated, an error is returned. +// are violated, the first error encountered is returned, or nil if there are +// no violations. func (m *GetProviderResourceUsageResponse) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on GetProviderResourceUsageResponse with +// the rules defined in the proto definition for this message. If any rules +// are violated, the result is a list of violation errors wrapped in +// GetProviderResourceUsageResponseMultiError, or nil if none found. +func (m *GetProviderResourceUsageResponse) ValidateAll() error { + return m.validate(true) +} + +func (m *GetProviderResourceUsageResponse) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for Code // no validation rules for Message // no validation rules for Result - if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { + if all { + switch v := interface{}(m.GetData()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, GetProviderResourceUsageResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, GetProviderResourceUsageResponseValidationError{ + field: "Data", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetData()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { return GetProviderResourceUsageResponseValidationError{ field: "Data", @@ -39626,9 +65622,31 @@ func (m *GetProviderResourceUsageResponse) Validate() error { } } + if len(errors) > 0 { + return GetProviderResourceUsageResponseMultiError(errors) + } + return nil } +// GetProviderResourceUsageResponseMultiError is an error wrapping multiple +// validation errors returned by +// GetProviderResourceUsageResponse.ValidateAll() if the designated +// constraints aren't met. +type GetProviderResourceUsageResponseMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m GetProviderResourceUsageResponseMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m GetProviderResourceUsageResponseMultiError) AllErrors() []error { return m } + // GetProviderResourceUsageResponseValidationError is the validation error // returned by GetProviderResourceUsageResponse.Validate if the designated // constraints aren't met. @@ -39687,13 +65705,27 @@ var _ interface { } = GetProviderResourceUsageResponseValidationError{} // Validate checks the field values on BusinessInfo with the rules defined in -// the proto definition for this message. If any rules are violated, an error -// is returned. +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. func (m *BusinessInfo) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on BusinessInfo with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in BusinessInfoMultiError, or +// nil if none found. +func (m *BusinessInfo) ValidateAll() error { + return m.validate(true) +} + +func (m *BusinessInfo) validate(all bool) error { if m == nil { return nil } + var errors []error + // no validation rules for ProjectId // no validation rules for ProjectName @@ -39732,9 +65764,29 @@ func (m *BusinessInfo) Validate() error { // no validation rules for Url + if len(errors) > 0 { + return BusinessInfoMultiError(errors) + } + return nil } +// BusinessInfoMultiError is an error wrapping multiple validation errors +// returned by BusinessInfo.ValidateAll() if the designated constraints aren't met. +type BusinessInfoMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m BusinessInfoMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m BusinessInfoMultiError) AllErrors() []error { return m } + // BusinessInfoValidationError is the validation error returned by // BusinessInfo.Validate if the designated constraints aren't met. type BusinessInfoValidationError struct { diff --git a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.proto b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.proto index e569697939..814c551ad5 100644 --- a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.proto +++ b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.proto @@ -628,6 +628,15 @@ service ClusterManager { summary : "查询NodeGroup列表" }; } + rpc RecommendNodeGroupConf(RecommendNodeGroupConfReq) returns (RecommendNodeGroupConfResp) { + option (google.api.http) = { + get : "/clustermanager/v1/cloud/{cloudID}/recommendNodeGroupConf" + }; + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + description : "创建集群时推荐的节点池配置" + summary : "创建集群时推荐的节点池配置" + }; + } rpc MoveNodesToGroup(MoveNodesToGroupRequest) returns (MoveNodesToGroupResponse) { option (google.api.http) = { post : "/clustermanager/v1/nodegroup/{nodeGroupID}/node" @@ -1887,6 +1896,13 @@ message NewSubnet { }]; } +message UpgradePolicy { + string supportType = 1[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "supportType", + description: "aws EKS升级策略类型(EXTENDED|STANDARD)" + }]; +} + message ClusterBasicSetting { string OS = 1[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { title: "OS", @@ -1925,6 +1941,10 @@ message ClusterBasicSetting { title: "module", description: "集群转移模块信息" }]; + UpgradePolicy upgradePolicy = 10[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "upgradePolicy", + description: "集群升级策略" + }]; } message ClusterAdvanceSetting { @@ -3725,6 +3745,10 @@ message InternetAccessible { title: "publicIP", description: "公网ip地址" }]; + repeated string publicAccessCidrs = 6[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "publicAccessCidrs", + description: "允许访问Kubernetes API Server的公网Ip cidr" + }]; } // InstanceTemplateConfig instance config info @@ -5605,6 +5629,178 @@ message CreateVirtualClusterResp { }]; } +message RecommendNodeGroupConfReq { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema : { + title : "RecommendNodeGroupConfReq" + description : "获取创建集群时推荐的节点池配置" + required : [ + "cloudID", + "accountID" + ] + } + }; + string cloudID = 1 [ + (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title : "cloudType", + description : "云模版ID, 集群所属云进行流程管理" + },(validate.rules).string = {min_len : 1, max_len : 1024} + ]; + string accountID = 2[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "accountID", + description: "导入集群关联的cloud凭证信息, 可以为空; 当为空时, 可以通过cloud获取cloud凭证信息" + },(validate.rules).string = {max_len : 1024}]; + string region = 3 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title : "region", + description : "集群所在地域" + },(validate.rules).string = {max_len : 100, pattern : "^[0-9a-zA-Z-]+$"}]; + string resourceGroupName = 4 [(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title : "resourceGroupName", + description : "AKS集群所属resource group" + }]; +} + +message InstanceProfile { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema : { + title : "InstanceProfile" + description : "实例配置" + } + }; + string nodeOS = 1[ (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "nodeOS", description: "节点操作系统" + }]; + string instanceType = 2[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "instanceType", + description: "机型信息字符串,若配置CPU和内存,该值不强制,默认自行向上就近匹配机型信息" + }]; + string instanceChargeType = 3[ (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "instanceChargeType", description: "计费模式" + }]; +} + +message HardwareProfile { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema : { + title : "HardwareProfile" + description : "CPU、MEM、DISK等配置" + } + }; + uint32 CPU = 1[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "CPU", + description: "机型CPU信息,与机型instanceType互斥,比instanceType优先级高" + }]; + uint32 Mem = 2[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "Mem", + description: "机型Mem信息,与机型instanceType互斥,比instanceType优先级高" + }]; + uint32 GPU = 3[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "GPU", + description: "机型GPU信息,与机型instanceType互斥,比instanceType优先级高,可以会为0" + }]; + DataDisk systemDisk = 4[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title : "systemDisk", + description : "机型系统盘, 主要用于自建资源池. 仅仅provider为self时, 需要关注" + }]; + repeated DataDisk dataDisks = 5[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title : "dataDisks", + description : "机型数据盘, 主要用于自建资源池. 仅仅provider为self时, 需要关注" + }]; +} + +message NetworkProfile { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema : { + title : "NetworkProfile" + description : "网络相关配置" + } + }; + repeated string subnetIDs = 1[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "subnetIDs", description: "子网ID" + }]; + bool publicIPAssigned = 2[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "publicIPAssigned", + description: "是否分配公网IP。默认为false。" + }]; +} + +message ScalingProfile { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema : { + title : "ScalingProfile" + description : "节点池扩缩容配置" + } + }; + uint32 maxSize = 1[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "maxSize", + description: "弹性伸缩组最大实例数" + }, (validate.rules).uint32 = {gte: 0, lte: 1000}]; + uint32 desiredSize = 2[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "desiredSize", + description: "节点数量" + }, (validate.rules).uint32 = {gte: 0, lte: 1000}]; + string scalingMode = 3[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "scalingMode", + description: "扩缩容模式" + }]; +} + +message RecommendNodeGroupConf { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema : { + title : "RecommendNodeGroupConf" + description : "创建集群时推荐的节点池配置" + } + }; + string name = 1[ (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "name", description: "节点池名称" + }]; + string serviceRoleName = 2[ (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "serviceRoleName", description: "awsCloud节点池服务角色" + }]; + InstanceProfile instanceProfile = 3[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "instanceProfile", description: "实例相关配置" + }]; + HardwareProfile hardwareProfile = 4[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "hardwareProfile", description: "硬件相关配置" + }]; + NetworkProfile networkProfile = 5[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "networkProfile", description: "网络相关配置" + }]; + ScalingProfile scalingProfile = 6[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "scalingProfile", description: "扩缩容配置" + }]; + string mode = 7[ (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "mode", description: "azureCloud节点池模式,System|User" + }]; + repeated string zones = 8[ (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "zones", description: "节点池所属区域" + }]; +} + +message RecommendNodeGroupConfResp { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema : { + title : "RecommendNodeGroupConfResp" + description : "创建集群时推荐的节点池配置" + required : [ "code", "message", "data"] + } + }; + uint32 code = 1[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title : "code", description : "返回错误码" + }]; + string message = 2[ (grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title: "message", description: "返回错误信息" + }]; + bool result = 3[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title : "result", description : "返回结果" + }]; + repeated RecommendNodeGroupConf data = 4[(grpc.gateway.protoc_gen_swagger.options.openapiv2_field) = { + title : "data", + description : "推荐的节点池配置" + }]; +} + message KubeConfigReq { option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { json_schema : { diff --git a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.swagger.json b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.swagger.json index 410fab3b85..fc94518b60 100644 --- a/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.swagger.json +++ b/bcs-services/bcs-cluster-manager/api/clustermanager/clustermanager.swagger.json @@ -28,7 +28,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -79,7 +79,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -113,7 +113,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -165,7 +165,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -199,7 +199,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -237,7 +237,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -256,8 +256,7 @@ "description": "isForce. 强制删除AutoScalingOption信息,即使未正常执行完成,也会进入终止。对于自定义cluster-autoscaler安装的场景下,是需要清理已部署的CA模块。", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" } ], "tags": [ @@ -276,7 +275,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -317,7 +316,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -365,7 +364,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -406,7 +405,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -447,7 +446,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -501,7 +500,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -562,7 +561,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -596,7 +595,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -636,7 +635,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -662,8 +661,7 @@ "description": "editable. 对于SaaS层面该信息是否可编辑,BCS默认提供的预定义信息不可编译", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" }, { "name": "creator", @@ -703,7 +701,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -737,7 +735,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -771,7 +769,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -802,7 +800,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -820,8 +818,7 @@ "name": "isForce", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" } ], "tags": [ @@ -840,7 +837,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -868,6 +865,60 @@ ] } }, + "/clustermanager/v1/cloud/{cloudID}/recommendNodeGroupConf": { + "get": { + "summary": "创建集群时推荐的节点池配置", + "description": "创建集群时推荐的节点池配置", + "operationId": "ClusterManager_RecommendNodeGroupConf", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/clustermanagerRecommendNodeGroupConfResp" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "cloudID", + "description": "云模版ID, 集群所属云进行流程管理", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "accountID", + "description": "accountID. 导入集群关联的cloud凭证信息, 可以为空; 当为空时, 可以通过cloud获取cloud凭证信息", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "region", + "description": "region. 集群所在地域", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "resourceGroupName", + "description": "resourceGroupName. AKS集群所属resource group", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "ClusterManager" + ] + } + }, "/clustermanager/v1/cloudregion/{cloudID}": { "get": { "summary": "查询Cloud region列表", @@ -881,7 +932,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -914,7 +965,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -966,7 +1017,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1005,7 +1056,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1046,7 +1097,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1087,7 +1138,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1125,7 +1176,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1173,7 +1224,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1220,7 +1271,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1267,7 +1318,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1321,7 +1372,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1347,8 +1398,7 @@ "description": "isExtranet. 默认false 获取内网,是否获取外网访问的kubeconfig", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" }, { "name": "accountID", @@ -1390,7 +1440,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1444,7 +1494,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1542,7 +1592,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1596,7 +1646,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1657,7 +1707,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1704,7 +1754,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1744,7 +1794,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1828,7 +1878,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1868,7 +1918,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1908,7 +1958,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -1962,7 +2012,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2009,7 +2059,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2063,8 +2113,7 @@ "description": "injectCluster. 是否注入子网所属集群信息", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" }, { "name": "resourceGroupName", @@ -2099,7 +2148,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2147,7 +2196,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2210,7 +2259,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2273,7 +2322,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2328,7 +2377,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2389,7 +2438,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2450,7 +2499,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2511,7 +2560,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2570,7 +2619,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2604,7 +2653,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2642,7 +2691,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2690,7 +2739,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2758,8 +2807,7 @@ "description": "isExclusive. 是否为业务独占集群", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" }, { "name": "clusterType", @@ -2824,8 +2872,7 @@ "description": "isCommonCluster. 是否为公共集群,默认false", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" }, { "name": "clusterID", @@ -2839,8 +2886,7 @@ "description": "all. true时获取所有的集群信息,包括被软删除的集群; false时获取非DELETED状态的集群信息", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" } ], "tags": [ @@ -2859,7 +2905,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2893,7 +2939,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2927,7 +2973,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2946,8 +2992,7 @@ "description": "cloudInfo. 集群关联的云集群信息, 默认从数据库获取数据", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" } ], "tags": [ @@ -2966,7 +3011,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -2985,8 +3030,7 @@ "description": "isForced. 是否强制删除,默认false。强制删除会一并删除clustermanager管理的资源,例如节点,节点池等。强制删除周期较长,清理工作会进入长后台任务运行,集群信息不会立刻被清空,而是处于删除状态。", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" }, { "name": "instanceDeleteMode", @@ -3000,8 +3044,7 @@ "description": "onlyDeleteInfo. 默认为false。设置为true时,仅删除cluster-manager所记录的信息,不会触发任何自动化流程。该参数可以与isForced同时协同工作。", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" }, { "name": "operator", @@ -3015,8 +3058,7 @@ "description": "deleteClusterRecord. 管理员操作, 设置true时仅删除集群数据库记录", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" } ], "tags": [ @@ -3035,7 +3077,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3076,7 +3118,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3102,8 +3144,7 @@ "description": "filterInter. 是否屏蔽空闲机池", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" } ], "tags": [ @@ -3124,7 +3165,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3157,7 +3198,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3227,8 +3268,7 @@ "description": "showPwd. 节点密码是否展示(默认不展示)", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" } ], "tags": [ @@ -3247,7 +3287,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3280,8 +3320,7 @@ "description": "isForce. 不管节点处于任何状态都强制删除,例如可能刚初始化,NotReady等", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" }, { "name": "operator", @@ -3295,8 +3334,7 @@ "description": "onlyDeleteInfo. 默认为false。设置为true时,仅删除cluster-manager所记录的信息,不会触发任何自动化流程.", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" }, { "name": "nodeTemplateID", @@ -3317,8 +3355,7 @@ "description": "是否是第三方节点(IDC节点). 下架第三方节点需置为true, 且必须关联nodeGroupID", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" } ], "tags": [ @@ -3337,7 +3374,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3378,7 +3415,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3419,7 +3456,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3489,7 +3526,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3520,7 +3557,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3551,7 +3588,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3592,7 +3629,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3626,7 +3663,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3667,7 +3704,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3708,7 +3745,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3727,8 +3764,7 @@ "description": "enableFilter. enableFilter为true时, 输出结果按照是否开启弹性伸缩排序(开启的排序在后面)", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" } ], "tags": [ @@ -3749,7 +3785,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3810,7 +3846,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3851,7 +3887,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3900,7 +3936,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3924,7 +3960,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3958,7 +3994,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -3990,7 +4026,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4024,7 +4060,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4058,7 +4094,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4092,7 +4128,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4126,7 +4162,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4160,7 +4196,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4194,7 +4230,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4228,7 +4264,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4262,7 +4298,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4281,8 +4317,7 @@ "description": "showPwd. 节点密码是否展示(默认不展示)", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" } ], "tags": [ @@ -4303,7 +4338,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4336,7 +4371,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4388,7 +4423,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4422,7 +4457,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4453,7 +4488,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4472,24 +4507,21 @@ "description": "isForce. 强制删除,包括清理节点池管理的机器。外部资源删除转入后台删除长任务对列,默认会返回Task信息方便确认进度。", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" }, { "name": "reserveNodesInCluster", "description": "reserveNodesInCluster. 保留节点在集群中,仅删除节点池,解除节点与节点池关联。当且仅当强制删除时生效。", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" }, { "name": "keepNodesInstance", "description": "keepNodesInstance. 节点从集群移除,清理资源,但不销毁机器,保留机器运行。当且仅当强制删除时生效。", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" }, { "name": "operator", @@ -4503,8 +4535,7 @@ "description": "onlyDeleteInfo. onlyDeleteInfo仅删除数据,不执行流程", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" } ], "tags": [ @@ -4523,7 +4554,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4564,7 +4595,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4605,7 +4636,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4646,7 +4677,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4687,7 +4718,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4728,7 +4759,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4769,7 +4800,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4810,7 +4841,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4841,7 +4872,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4880,7 +4911,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4921,7 +4952,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4954,7 +4985,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -4995,7 +5026,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5021,8 +5052,7 @@ "description": "internal. 获取内网或外网脚本, 默认外网脚本", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" } ], "tags": [ @@ -5043,7 +5073,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5067,7 +5097,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5125,16 +5155,14 @@ "description": "simple. 只展示 operationLogs 信息", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" }, { "name": "taskIDNull", "description": "taskIDNull. 默认false,过滤taskID为空的场景; 当为true时,不过滤taskID为空的", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" }, { "name": "clusterID", @@ -5169,8 +5197,7 @@ "description": "v2. 是否使用v2的查询版本", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" }, { "name": "ipList", @@ -5226,7 +5253,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5267,7 +5294,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5328,7 +5355,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5366,7 +5393,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5407,7 +5434,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5445,7 +5472,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5483,7 +5510,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5531,7 +5558,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5569,7 +5596,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5610,7 +5637,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5650,7 +5677,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5713,7 +5740,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5746,7 +5773,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5786,7 +5813,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5798,8 +5825,7 @@ "description": "showVCluster. 展示vcluster集群的host共享集群(默认全部展示)", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" } ], "tags": [ @@ -5820,7 +5846,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5900,7 +5926,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5934,7 +5960,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5965,7 +5991,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -5984,8 +6010,7 @@ "description": "isForce. 强制删除Task信息,即使未正常执行完成,也会进入终止。", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" } ], "tags": [ @@ -6004,7 +6029,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6045,7 +6070,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6086,7 +6111,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6127,7 +6152,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6160,7 +6185,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6216,7 +6241,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6250,7 +6275,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6269,8 +6294,7 @@ "description": "onlyDeleteInfo. 默认为false。设置为true时,仅删除cluster-manager所记录的信息,不会触发任何自动化流程。该参数可以与isForced同时协同工作。", "in": "query", "required": false, - "type": "boolean", - "format": "boolean" + "type": "boolean" }, { "name": "operator", @@ -6298,7 +6322,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6339,7 +6363,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6372,7 +6396,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6420,7 +6444,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6468,7 +6492,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6516,7 +6540,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6564,7 +6588,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6612,7 +6636,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6660,7 +6684,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6714,7 +6738,7 @@ } }, "default": { - "description": "An unexpected error response", + "description": "An unexpected error response.", "schema": { "$ref": "#/definitions/runtimeError" } @@ -6818,7 +6842,9 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - } + }, + "description": "具体行为流程动作定义", + "title": "plugins" } }, "description": "记录各模块功能自动化行为模板, 对接job系统, 完成自定义操作; 针对不同云的不同操作模版参数需自定义针对大部分操作,仅需要前置动作或后置动作即可. 可自由扩展", @@ -6861,7 +6887,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" } @@ -6902,7 +6927,6 @@ }, "onlyCreateInfo": { "type": "boolean", - "format": "boolean", "description": "仅写入节点信息,默认是false。仅写入节点信息时,会通过cluster所属cloudprovider查询节点信息,并设置为RUNNING。", "title": "onlyCreateInfo" }, @@ -6918,7 +6942,6 @@ }, "isExternalNode": { "type": "boolean", - "format": "boolean", "description": "上架第三方节点需置为true, 且必须关联nodeGroupID", "title": "是否是第三方节点(IDC节点)" }, @@ -6951,7 +6974,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -7015,7 +7037,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -7115,7 +7136,6 @@ }, "replaceUnhealthy": { "type": "boolean", - "format": "boolean", "description": "开启监控不健康节点替换服务,默认false。连续1分钟ping不通则视为不健康!", "title": "replaceUnhealthy" }, @@ -7134,7 +7154,6 @@ }, "autoUpgrade": { "type": "boolean", - "format": "boolean", "description": "开启自动升级GKE版本功能,如果集群为发布版本,则强制开启", "title": "autoUpgrade" }, @@ -7163,11 +7182,12 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "bksops模板默认通用参数,实际调用时根据实际行为可覆盖或定制化", + "title": "params" }, "allowSkipWhenFailed": { "type": "boolean", - "format": "boolean", "description": "allowSkipWhenFailed插件执行失败时是否允许跳过, 默认不允许跳过", "title": "allowSkipWhenFailed" } @@ -7212,7 +7232,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -7247,8 +7266,7 @@ } }, "success": { - "type": "boolean", - "format": "boolean" + "type": "boolean" }, "message": { "type": "string" @@ -7280,7 +7298,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -7331,7 +7348,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -7339,7 +7355,9 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerNodeResult" - } + }, + "description": "返回node检查结果,key是IP", + "title": "data" } }, "description": "返回节点状态", @@ -7396,8 +7414,7 @@ "type": "string" }, "block": { - "type": "boolean", - "format": "boolean" + "type": "boolean" } } }, @@ -7417,7 +7434,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" } @@ -7475,7 +7491,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -7509,7 +7524,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -7542,7 +7556,6 @@ }, "editable": { "type": "boolean", - "format": "boolean", "description": "对于SaaS层面该信息是否可编辑,BCS默认提供的预定义信息不可编译", "title": "editable" }, @@ -7550,13 +7563,17 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - } + }, + "description": "通过标准运维实现的扩展流程或者插件", + "title": "opsPlugins" }, "extraPlugins": { "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - } + }, + "description": "额外扩展流程,用于自定义扩展,该部分允许用户编辑", + "title": "extraPlugins" }, "cloudCredential": { "$ref": "#/definitions/clustermanagerCredential", @@ -7637,7 +7654,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "平台不同云的配置信息", + "title": "platformInfo" } }, "description": "云信息,多云管理下用于定义共享信息,BCS默认地提供蓝鲸云预定义,腾讯云预定义信息", @@ -7678,7 +7697,6 @@ }, "enable": { "type": "boolean", - "format": "boolean", "description": "cloud账号是否启用,默认是启用的", "title": "enable" }, @@ -7804,7 +7822,6 @@ "properties": { "cloudInternalEnable": { "type": "boolean", - "format": "boolean", "description": "cloud是否开启内部配置", "title": "cloudInternalEnable" }, @@ -7820,19 +7837,16 @@ }, "disableCreateCluster": { "type": "boolean", - "format": "boolean", "description": "cloud是否关闭创建集群特性", "title": "disableCreateCluster" }, "disableImportCluster": { "type": "boolean", - "format": "boolean", "description": "cloud是否关闭导入集群特性", "title": "disableImportCluster" }, "disableNodeGroup": { "type": "boolean", - "format": "boolean", "description": "cloud是否关闭节点池特性", "title": "disableNodeGroup" }, @@ -7843,7 +7857,6 @@ }, "disableCheckGroupResource": { "type": "boolean", - "format": "boolean", "description": "cloud是否关闭节点池资源quota校验开关", "title": "disableCheckGroupResource" } @@ -7871,7 +7884,6 @@ }, "autoFormatAndMount": { "type": "boolean", - "format": "boolean", "description": "是否自动化格式盘并挂载", "title": "autoFormatAndMount" }, @@ -7923,7 +7935,6 @@ }, "enable": { "type": "boolean", - "format": "boolean", "description": "是否启用该参数", "title": "enable" }, @@ -8121,7 +8132,6 @@ }, "cloudRegionNode": { "type": "boolean", - "format": "boolean", "description": "是否是该云的某个地域节点", "title": "cloudRegionNode" } @@ -8398,7 +8408,6 @@ }, "isExclusive": { "type": "boolean", - "format": "boolean", "description": "是否业务独占集群,默认为false", "title": "isExclusive" }, @@ -8411,7 +8420,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "集群标签", + "title": "labels" }, "creator": { "type": "string", @@ -8428,13 +8439,17 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - } + }, + "description": "创建集群时进行BCS内置插件安装,该信息会索引云上默认配置信息进行对比与补充,Addons默认在集群正常初始化之后进行调用。", + "title": "bcsAddons" }, "extraAddons": { "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - } + }, + "description": "创建集群时额外扩展传递的信息,该部分为预留二方/三方/服务商扩展使用,Addons默认在集群状态正常之后进行调用与安装。", + "title": "extraAddons" }, "systemID": { "type": "string", @@ -8450,7 +8465,9 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerNode" - } + }, + "description": "集群master IP列表", + "title": "master" }, "networkSettings": { "$ref": "#/definitions/clustermanagerNetworkSetting", @@ -8489,7 +8506,6 @@ }, "autoGenerateMasterNodes": { "type": "boolean", - "format": "boolean", "description": "创建集群是否使用已存在节点, 默认false, 即使用已经存在的节点, 从创建集群参数中获取", "title": "autoGenerateMasterNodes" }, @@ -8505,7 +8521,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "存储集群扩展信息, 例如esb_url/webhook_image/priviledge_image等扩展信息或者是针对不同云特性开关", + "title": "extraInfo" }, "moduleID": { "type": "string", @@ -8519,7 +8537,6 @@ }, "isCommonCluster": { "type": "boolean", - "format": "boolean", "description": "是否为公共集群,默认false(废弃)", "title": "isCommonCluster" }, @@ -8535,7 +8552,6 @@ }, "is_shared": { "type": "boolean", - "format": "boolean", "description": "是否为共享集群,默认false", "title": "is_shared" }, @@ -8561,7 +8577,6 @@ }, "isMixed": { "type": "boolean", - "format": "boolean", "description": "标记该集群是否是混部集群", "title": "isMixed" }, @@ -8584,7 +8599,6 @@ "properties": { "IPVS": { "type": "boolean", - "format": "boolean", "description": "Kubernetes集群IPVS特性,默认为false", "title": "IPVS" }, @@ -8602,7 +8616,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "配置各模块自定义参数,预定义的key为KubeAPIServer,KubeController,Etcd,KubeScheduler。value为各模块进程启动参数,多个参数之间使用;间隔,例如Etcd: node-data-dir=/data/bcs/lib/etcd;", + "title": "extraArgs" }, "networkType": { "type": "string", @@ -8611,19 +8627,16 @@ }, "deletionProtection": { "type": "boolean", - "format": "boolean", "description": "是否启用集群删除保护", "title": "deletionProtection" }, "auditEnabled": { "type": "boolean", - "format": "boolean", "description": "是否开启审计开关", "title": "auditEnabled" }, "enableHa": { "type": "boolean", - "format": "boolean", "description": "自建集群是否开启高可用", "title": "enableHa" }, @@ -8639,7 +8652,6 @@ "properties": { "isScaleDownEnable": { "type": "boolean", - "format": "boolean", "description": "scale-down-enabled,是否允许缩容节点", "title": "isScaleDownEnable" }, @@ -8674,19 +8686,16 @@ }, "skipNodesWithLocalStorage": { "type": "boolean", - "format": "boolean", "description": "忽略有本地存储的节点,默认为false", "title": "skipNodesWithLocalStorage" }, "skipNodesWithSystemPods": { "type": "boolean", - "format": "boolean", "description": "忽略kube-system NS下非DaemonSet管理的Pod的节点,默认false", "title": "skipNodesWithSystemPods" }, "ignoreDaemonSetsUtilization": { "type": "boolean", - "format": "boolean", "description": "忽略DaemonSet的资源计算", "title": "ignoreDaemonSetsUtilization" }, @@ -8751,7 +8760,6 @@ }, "enableAutoscale": { "type": "boolean", - "format": "boolean", "description": "是否开启自动扩缩容,开启后会在该集群部署 ClusterAutoScaling 组件,默认为 false", "title": "enableAutoscale" }, @@ -8781,7 +8789,6 @@ }, "scaleUpFromZero": { "type": "boolean", - "format": "boolean", "description": "scale-up-from-zero,允许自动扩容(没有 ready 节点时)", "title": "scaleUpFromZero" }, @@ -8878,7 +8885,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "集群相关tag信息,用于集群管理标签信息注入. 可自定义设置, 可根据不同云实现业务定制tags(例如:可根据businessID绑定业务信息)", + "title": "clusterTags" }, "versionName": { "type": "string", @@ -8897,7 +8906,6 @@ }, "isAutoUpgradeClusterLevel": { "type": "boolean", - "format": "boolean", "description": "是否开启自动变配集群等级,针对托管集群生效", "title": "isAutoUpgradeClusterLevel" }, @@ -8910,6 +8918,11 @@ "$ref": "#/definitions/clustermanagerClusterModule", "description": "集群转移模块信息", "title": "module" + }, + "upgradePolicy": { + "$ref": "#/definitions/clustermanagerUpgradePolicy", + "description": "集群升级策略", + "title": "upgradePolicy" } } }, @@ -8918,7 +8931,6 @@ "properties": { "isExtranet": { "type": "boolean", - "format": "boolean", "description": "isExtranet集群内外网访问(true外网访问 false内网访问, 默认false)", "title": "isExtranet" }, @@ -9186,7 +9198,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "节点标签信息", + "title": "labels" }, "taints": { "type": "array", @@ -9248,7 +9262,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "节点注解信息", + "title": "annotations" }, "zoneName": { "type": "string", @@ -9285,7 +9301,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -9317,7 +9332,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -9403,7 +9417,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -9425,7 +9438,6 @@ "properties": { "isScaleDownEnable": { "type": "boolean", - "format": "boolean", "description": "scale-down-enabled,是否允许缩容节点", "title": "isScaleDownEnable" }, @@ -9460,19 +9472,16 @@ }, "skipNodesWithLocalStorage": { "type": "boolean", - "format": "boolean", "description": "忽略有本地存储的节点,默认为false", "title": "skipNodesWithLocalStorage" }, "skipNodesWithSystemPods": { "type": "boolean", - "format": "boolean", "description": "忽略kube-system NS下非DaemonSet管理的Pod的节点,默认false", "title": "skipNodesWithSystemPods" }, "ignoreDaemonSetsUtilization": { "type": "boolean", - "format": "boolean", "description": "忽略DaemonSet的资源计算,默认false", "title": "ignoreDaemonSetsUtilization" }, @@ -9517,7 +9526,6 @@ }, "enableAutoscale": { "type": "boolean", - "format": "boolean", "description": "是否开启自动扩缩容,开启后会在该集群部署 ClusterAutoScaling 组件,默认为 false", "title": "enableAutoscale" }, @@ -9547,7 +9555,6 @@ }, "scaleUpFromZero": { "type": "boolean", - "format": "boolean", "description": "scale-up-from-zero,允许自动扩容(没有 ready 节点时)", "title": "scaleUpFromZero" }, @@ -9612,7 +9619,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -9646,7 +9652,6 @@ }, "enable": { "type": "boolean", - "format": "boolean", "description": "cloud云账号是否开启,默认开启", "title": "enable" }, @@ -9686,7 +9691,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -9775,7 +9779,6 @@ }, "editable": { "type": "boolean", - "format": "boolean", "description": "对于SaaS层面该信息是否可编辑,BCS默认提供的预定义信息不可编译", "title": "editable" }, @@ -9783,13 +9786,17 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - } + }, + "description": "通过标准运维实现的扩展流程或者插件", + "title": "opsPlugins" }, "extraPlugins": { "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - } + }, + "description": "额外扩展流程,用于自定义扩展,该部分允许用户编辑", + "title": "extraPlugins" }, "cloudCredential": { "$ref": "#/definitions/clustermanagerCredential", @@ -9855,7 +9862,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "平台不同云的配置信息", + "title": "platformInfo" } }, "description": "创建cloud请求", @@ -9883,7 +9892,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" } @@ -9985,7 +9993,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" } @@ -10041,7 +10048,6 @@ }, "isExclusive": { "type": "boolean", - "format": "boolean", "description": "是否为业务独占集群", "title": "isExclusive" }, @@ -10059,7 +10065,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "集群的labels,用于携带额外的信息,最大不得超过20个", + "title": "labels" }, "creator": { "type": "string", @@ -10068,7 +10076,6 @@ }, "onlyCreateInfo": { "type": "boolean", - "format": "boolean", "description": "仅创建集群信息,不进行真实集群创建,默认为false", "title": "onlyCreateInfo" }, @@ -10076,13 +10083,17 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - } + }, + "description": "创建集群时进行BCS内置插件安装,该信息会索引云上默认配置信息进行对比与补充,如果填写错误直接报错", + "title": "bcsAddons" }, "extraAddons": { "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - } + }, + "description": "创建集群时额外扩展传递的信息,该部分为预留二方/三方/服务商扩展使用,如果填错直接报错", + "title": "extraAddons" }, "cloudID": { "type": "string", @@ -10132,7 +10143,6 @@ }, "systemReinstall": { "type": "boolean", - "format": "boolean", "description": "是否重装master节点的系统,机器被托管情况下有效", "title": "systemReinstall" }, @@ -10148,7 +10158,6 @@ }, "autoGenerateMasterNodes": { "type": "boolean", - "format": "boolean", "description": "创建集群Master节点来源, 默认false表示使用已有节点; 为true时, 需要生成master instance", "title": "autoGenerateMasterNodes" }, @@ -10164,7 +10173,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "存储集群扩展信息, 例如esb_url/webhook_image/priviledge_image等扩展信息", + "title": "extraInfo" }, "moduleID": { "type": "string", @@ -10178,7 +10189,6 @@ }, "isCommonCluster": { "type": "boolean", - "format": "boolean", "description": "是否为公共集群,默认false(废弃)", "title": "isCommonCluster" }, @@ -10194,7 +10204,6 @@ }, "is_shared": { "type": "boolean", - "format": "boolean", "description": "是否为共享集群,默认false", "title": "is_shared" }, @@ -10218,7 +10227,6 @@ }, "isMixed": { "type": "boolean", - "format": "boolean", "description": "标记该集群是否是混部集群, 默认是false", "title": "isMixed" }, @@ -10265,7 +10273,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -10313,7 +10320,6 @@ }, "enableAutoscale": { "type": "boolean", - "format": "boolean", "description": "是否开启弹性伸缩,默认false", "title": "enableAutoscale" }, @@ -10331,13 +10337,17 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "新实例初始化label信息", + "title": "labels" }, "taints": { "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "新实例初始化的污点信息(废弃)", + "title": "taints" }, "nodeOS": { "type": "string", @@ -10368,7 +10378,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "新实例初始化的资源标签信息", + "title": "tags" }, "nodeGroupType": { "type": "string", @@ -10393,7 +10405,6 @@ }, "onlyCreateInfo": { "type": "boolean", - "format": "boolean", "description": "onlyCreateInfo仅录入数据,不执行流程", "title": "onlyCreateInfo" } @@ -10426,7 +10437,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -10479,7 +10489,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "新实例初始化label信息", + "title": "labels" }, "taints": { "type": "array", @@ -10522,7 +10534,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "配置各模块自定义参数,预定义的key为kubeletvalue为各模块进程启动参数,多个参数之间使用;间隔,例如Kubelet: root-dir=/var/lib/kubelet;", + "title": "extraArgs" }, "preStartUserScript": { "type": "string", @@ -10599,7 +10613,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -10635,7 +10648,6 @@ }, "enable": { "type": "boolean", - "format": "boolean", "description": "是否开启通知", "title": "enable" }, @@ -10713,7 +10725,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -10775,7 +10786,9 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerStep" - } + }, + "description": "任务详细步骤信息,主要用于信息确认,异常时", + "title": "steps" }, "clusterID": { "type": "string", @@ -10825,7 +10838,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -10884,7 +10896,6 @@ }, "isExclusive": { "type": "boolean", - "format": "boolean", "description": "是否为业务独占集群", "title": "isExclusive" }, @@ -10907,7 +10918,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "集群的labels,用于携带额外的信息,最大不得超过20个", + "title": "labels" }, "creator": { "type": "string", @@ -10916,7 +10929,6 @@ }, "onlyCreateInfo": { "type": "boolean", - "format": "boolean", "description": "仅创建集群信息,不进行真实集群创建,默认为false", "title": "onlyCreateInfo" }, @@ -10952,7 +10964,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "存储集群扩展信息, 例如esb_url/webhook_image/priviledge_image等扩展信息", + "title": "extraInfo" }, "description": { "type": "string", @@ -11002,7 +11016,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11115,7 +11128,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "标准运维任务的全局变量参数", + "title": "constant" } }, "description": "调试标准运维任务请求参数", @@ -11170,7 +11185,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11202,7 +11216,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" } @@ -11246,7 +11259,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11273,7 +11285,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11300,7 +11311,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" } @@ -11329,7 +11339,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11372,7 +11381,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11419,7 +11427,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11446,7 +11453,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11484,7 +11490,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11511,7 +11516,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11538,7 +11542,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11596,7 +11599,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11634,24 +11636,21 @@ "title": "nodes" }, "force": { - "type": "boolean", - "format": "boolean" + "type": "boolean" }, "gracePeriodSeconds": { "type": "integer", "format": "int32" }, "ignoreAllDaemonSets": { - "type": "boolean", - "format": "boolean" + "type": "boolean" }, "timeout": { "type": "integer", "format": "int64" }, "deleteLocalData": { - "type": "boolean", - "format": "boolean" + "type": "boolean" }, "selector": { "type": "string" @@ -11660,16 +11659,14 @@ "type": "string" }, "disableEviction": { - "type": "boolean", - "format": "boolean" + "type": "boolean" }, "skipWaitForDeleteTimeoutSeconds": { "type": "integer", "format": "int64" }, "dryRun": { - "type": "boolean", - "format": "boolean" + "type": "boolean" } } }, @@ -11689,7 +11686,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11731,7 +11727,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11784,7 +11779,6 @@ "properties": { "canDeleted": { "type": "boolean", - "format": "boolean", "description": "集群列表的集群是否能够删除(集群无所属node节点时才允许删除)", "title": "canDeleted" }, @@ -11795,7 +11789,6 @@ }, "autoScale": { "type": "boolean", - "format": "boolean", "description": "集群是否支持弹性伸缩, 在云支持弹性伸缩的前提下, 某些类型集群支持弹性伸缩", "title": "autoScale" } @@ -11817,7 +11810,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -11875,7 +11867,6 @@ }, "success": { "type": "boolean", - "format": "boolean", "description": "是否成功", "title": "success" }, @@ -11911,7 +11902,6 @@ }, "allScope": { "type": "boolean", - "format": "boolean", "description": "是否获取所有资源范围的拓扑结构,默认为false", "title": "allScope" }, @@ -11938,7 +11928,6 @@ }, "success": { "type": "boolean", - "format": "boolean", "description": "是否成功", "title": "success" }, @@ -12035,7 +12024,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12068,7 +12056,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12104,7 +12091,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12136,7 +12122,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12168,7 +12153,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12202,7 +12186,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12236,7 +12219,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12295,7 +12277,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12337,7 +12318,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12395,7 +12375,6 @@ }, "success": { "type": "boolean", - "format": "boolean", "description": "是否成功", "title": "success" }, @@ -12465,7 +12444,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12501,7 +12479,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12540,7 +12517,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12574,7 +12550,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12611,7 +12586,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12649,7 +12623,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12682,7 +12655,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12737,7 +12709,6 @@ }, "showAvailableNode": { "type": "boolean", - "format": "boolean", "description": "展示可用节点,未在clustermanager中被占用节点", "title": "showAvailableNode" } @@ -12756,7 +12727,6 @@ }, "success": { "type": "boolean", - "format": "boolean", "description": "是否成功", "title": "success" }, @@ -12796,7 +12766,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12828,7 +12797,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -12928,7 +12896,6 @@ }, "success": { "type": "boolean", - "format": "boolean", "description": "是否成功", "title": "success" }, @@ -13018,7 +12985,6 @@ }, "showAvailableNode": { "type": "boolean", - "format": "boolean", "description": "展示可用节点,未在clustermanager中被占用节点", "title": "showAvailableNode" } @@ -13037,7 +13003,6 @@ }, "success": { "type": "boolean", - "format": "boolean", "description": "是否成功", "title": "success" }, @@ -13074,7 +13039,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -13108,6 +13072,44 @@ } } }, + "clustermanagerHardwareProfile": { + "type": "object", + "properties": { + "CPU": { + "type": "integer", + "format": "int64", + "description": "机型CPU信息,与机型instanceType互斥,比instanceType优先级高", + "title": "CPU" + }, + "Mem": { + "type": "integer", + "format": "int64", + "description": "机型Mem信息,与机型instanceType互斥,比instanceType优先级高", + "title": "Mem" + }, + "GPU": { + "type": "integer", + "format": "int64", + "description": "机型GPU信息,与机型instanceType互斥,比instanceType优先级高,可以会为0", + "title": "GPU" + }, + "systemDisk": { + "$ref": "#/definitions/clustermanagerDataDisk", + "description": "机型系统盘, 主要用于自建资源池. 仅仅provider为self时, 需要关注", + "title": "systemDisk" + }, + "dataDisks": { + "type": "array", + "items": { + "$ref": "#/definitions/clustermanagerDataDisk" + }, + "description": "机型数据盘, 主要用于自建资源池. 仅仅provider为self时, 需要关注", + "title": "dataDisks" + } + }, + "description": "CPU、MEM、DISK等配置", + "title": "HardwareProfile" + }, "clustermanagerHealthResponse": { "type": "object", "properties": { @@ -13254,7 +13256,6 @@ }, "inter": { "type": "boolean", - "format": "boolean", "description": "默认外网方式导入, 为true时候以内网方式导入. 该字段仅对云导入生效", "title": "inter" }, @@ -13325,7 +13326,6 @@ }, "isExclusive": { "type": "boolean", - "format": "boolean", "description": "是否为业务独占集群,默认为true", "title": "isExclusive" }, @@ -13338,7 +13338,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "集群的labels,用于携带额外的信息,最大不得超过20个", + "title": "labels" }, "creator": { "type": "string", @@ -13364,7 +13366,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "存储集群扩展信息, 例如esb_url/webhook_image/priviledge_image等扩展信息", + "title": "extraInfo" }, "extraClusterID": { "type": "string", @@ -13378,7 +13382,6 @@ }, "is_shared": { "type": "boolean", - "format": "boolean", "description": "是否为共享集群,默认false", "title": "is_shared" }, @@ -13428,7 +13431,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -13468,6 +13470,28 @@ } } }, + "clustermanagerInstanceProfile": { + "type": "object", + "properties": { + "nodeOS": { + "type": "string", + "description": "节点操作系统", + "title": "nodeOS" + }, + "instanceType": { + "type": "string", + "description": "机型信息字符串,若配置CPU和内存,该值不强制,默认自行向上就近匹配机型信息", + "title": "instanceType" + }, + "instanceChargeType": { + "type": "string", + "description": "计费模式", + "title": "instanceChargeType" + } + }, + "description": "实例配置", + "title": "InstanceProfile" + }, "clustermanagerInstanceTemplateConfig": { "type": "object", "properties": { @@ -13558,13 +13582,11 @@ }, "isSecurityService": { "type": "boolean", - "format": "boolean", "description": "新实例启动时的是否开启云安全, 选填 qcloud默认开启", "title": "isSecurityService" }, "isMonitorService": { "type": "boolean", - "format": "boolean", "description": "新实例启动时的是否开启云监控, 选填 默认开启", "title": "isMonitorService" }, @@ -13712,7 +13734,6 @@ }, "publicIPAssigned": { "type": "boolean", - "format": "boolean", "description": "是否分配公网IP。默认为false。", "title": "publicIPAssigned" }, @@ -13725,6 +13746,14 @@ "type": "string", "description": "公网ip地址", "title": "publicIP" + }, + "publicAccessCidrs": { + "type": "array", + "items": { + "type": "string" + }, + "description": "允许访问Kubernetes API Server的公网Ip cidr", + "title": "publicAccessCidrs" } }, "title": "InternetAccessible 公网带宽设置" @@ -13787,7 +13816,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" } @@ -13831,7 +13859,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" } @@ -13928,13 +13955,11 @@ }, "isSecurityService": { "type": "boolean", - "format": "boolean", "description": "新实例启动时的是否开启云安全, 选填 yunti默认关闭", "title": "isSecurityService" }, "isMonitorService": { "type": "boolean", - "format": "boolean", "description": "新实例启动时的是否开启云监控, 选填 默认开启", "title": "isMonitorService" }, @@ -13952,7 +13977,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "节点通过selector的匹配策略,目前仅用作第三方节点匹配", + "title": "selector" }, "keyPair": { "$ref": "#/definitions/clustermanagerKeyInfo", @@ -13983,7 +14010,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14019,7 +14045,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14055,7 +14080,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14096,7 +14120,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14132,7 +14155,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14198,7 +14220,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14234,7 +14255,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14270,7 +14290,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14302,7 +14321,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14338,7 +14356,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14374,7 +14391,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14382,7 +14398,9 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerRunTimeVersion" - } + }, + "description": "获取到的信息", + "title": "data" } }, "description": "查询运行时信息列表返回", @@ -14408,7 +14426,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14444,7 +14461,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14480,7 +14496,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14516,7 +14531,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14552,7 +14566,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14589,7 +14602,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14630,7 +14642,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14646,7 +14657,9 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerExtraInfo" - } + }, + "description": "集群其他标识信息,cluster结构之外的数据获取", + "title": "clusterExtraInfo" }, "web_annotations": { "$ref": "#/definitions/clustermanagerWebAnnotations", @@ -14678,7 +14691,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14720,7 +14732,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14756,7 +14767,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14798,7 +14808,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14834,7 +14843,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14870,7 +14878,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14912,7 +14919,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14953,7 +14959,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -14994,7 +14999,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -15030,7 +15034,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -15076,7 +15079,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -15092,7 +15094,9 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerExtraInfo" - } + }, + "description": "集群其他标识信息,cluster结构之外的数据获取", + "title": "clusterExtraInfo" }, "web_annotations": { "$ref": "#/definitions/clustermanagerWebAnnotationsV2", @@ -15124,7 +15128,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -15151,7 +15154,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -15192,7 +15194,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -15278,7 +15279,6 @@ }, "all": { "type": "boolean", - "format": "boolean", "description": "all操作所有的账号迁移", "title": "all" } @@ -15305,7 +15305,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" } @@ -15392,7 +15391,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -15426,13 +15424,17 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "命名空间标签", + "title": "labels" }, "annotations": { "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "命名空间注解", + "title": "annotations" }, "quota": { "$ref": "#/definitions/clustermanagerNamespaceQuota", @@ -15465,14 +15467,33 @@ "type": "string" }, "default": { - "type": "boolean", - "format": "boolean" + "type": "boolean" }, "name": { "type": "string" } } }, + "clustermanagerNetworkProfile": { + "type": "object", + "properties": { + "subnetIDs": { + "type": "array", + "items": { + "type": "string" + }, + "description": "子网ID", + "title": "subnetIDs" + }, + "publicIPAssigned": { + "type": "boolean", + "description": "是否分配公网IP。默认为false。", + "title": "publicIPAssigned" + } + }, + "description": "网络相关配置", + "title": "NetworkProfile" + }, "clustermanagerNetworkSetting": { "type": "object", "properties": { @@ -15500,7 +15521,6 @@ }, "enableVPCCni": { "type": "boolean", - "format": "boolean", "description": "enableVPCCni是否开启VPC-CNI网络模式(使能vpc-cni模式时,新增流程开启)", "title": "enableVPCCni" }, @@ -15519,7 +15539,6 @@ }, "isStaticIpMode": { "type": "boolean", - "format": "boolean", "description": "集群VPC-CNI模式是否为非固定IP,默认: FALSE 非固定IP", "title": "isStaticIpMode" }, @@ -15730,7 +15749,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "节点注解信息", + "title": "annotations" } } }, @@ -15799,7 +15820,6 @@ }, "enableAutoscale": { "type": "boolean", - "format": "boolean", "description": "是否开启弹性伸缩,默认false", "title": "enableAutoscale" }, @@ -15817,13 +15837,17 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "新实例初始化label信息", + "title": "labels" }, "taints": { "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "新实例初始化的污点信息", + "title": "taints" }, "nodeOS": { "type": "string", @@ -15876,7 +15900,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "新实例初始化的资源标签信息", + "title": "tags" }, "nodeGroupType": { "type": "string", @@ -15892,7 +15918,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "节点池扩展信,存储资源池类型等信息", + "title": "extraInfo" } }, "description": "节点组,对蓝鲸、腾讯云、AWS弹性伸缩能力封装", @@ -16129,7 +16157,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "节点标签信息", + "title": "labels" } } }, @@ -16186,7 +16216,6 @@ "properties": { "isExist": { "type": "boolean", - "format": "boolean", "description": "节点是否存在集群中", "title": "isExist" }, @@ -16225,13 +16254,17 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "节点通用的labels设置", + "title": "labels" }, "extraArgs": { "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "配置各模块自定义参数,预定义的key为kubeletvalue为各模块进程启动参数,多个参数之间使用;间隔,例如Kubelet: root-dir=/var/lib/kubelet;", + "title": "extraArgs" }, "taints": { "type": "array", @@ -16327,7 +16360,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "新实例初始化label信息", + "title": "labels" }, "taints": { "type": "array", @@ -16370,7 +16405,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "配置各模块自定义参数,预定义的key为kubeletvalue为各模块进程启动参数,多个参数之间使用;间隔,例如Kubelet: root-dir=/var/lib/kubelet;", + "title": "extraArgs" }, "preStartUserScript": { "type": "string", @@ -16443,7 +16480,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "节点annotation设置", + "title": "annotations" }, "maxPodsPerNode": { "type": "integer", @@ -16453,19 +16492,16 @@ }, "skipSystemInit": { "type": "boolean", - "format": "boolean", "description": "是否跳过执行系统初始化, 默认执行", "title": "skipSystemInit" }, "allowSkipScaleOutWhenFailed": { "type": "boolean", - "format": "boolean", "description": "扩容失败时是否允许跳过流程, 默认不允许跳过", "title": "allowSkipScaleOutWhenFailed" }, "allowSkipScaleInWhenFailed": { "type": "boolean", - "format": "boolean", "description": "缩容失败时是否允许跳过流程, 默认不允许跳过", "title": "skipSystemInit" } @@ -16500,7 +16536,6 @@ "properties": { "enable": { "type": "boolean", - "format": "boolean", "description": "操作是否开启通知", "title": "enable" }, @@ -16547,7 +16582,6 @@ }, "enable": { "type": "boolean", - "format": "boolean", "description": "是否开启通知", "title": "enable" }, @@ -16656,7 +16690,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "云上默认置入的区域信息,key是字符串,values是中文说明", + "title": "regions" } }, "description": "用于记录一些固定的系统信息,用于帮助OS层面信息展示", @@ -16871,6 +16907,92 @@ } } }, + "clustermanagerRecommendNodeGroupConf": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "节点池名称", + "title": "name" + }, + "serviceRoleName": { + "type": "string", + "description": "awsCloud节点池服务角色", + "title": "serviceRoleName" + }, + "instanceProfile": { + "$ref": "#/definitions/clustermanagerInstanceProfile", + "description": "实例相关配置", + "title": "instanceProfile" + }, + "hardwareProfile": { + "$ref": "#/definitions/clustermanagerHardwareProfile", + "description": "硬件相关配置", + "title": "hardwareProfile" + }, + "networkProfile": { + "$ref": "#/definitions/clustermanagerNetworkProfile", + "description": "网络相关配置", + "title": "networkProfile" + }, + "scalingProfile": { + "$ref": "#/definitions/clustermanagerScalingProfile", + "description": "扩缩容配置", + "title": "scalingProfile" + }, + "mode": { + "type": "string", + "description": "azureCloud节点池模式,System|User", + "title": "mode" + }, + "zones": { + "type": "array", + "items": { + "type": "string" + }, + "description": "节点池所属区域", + "title": "zones" + } + }, + "description": "创建集群时推荐的节点池配置", + "title": "RecommendNodeGroupConf" + }, + "clustermanagerRecommendNodeGroupConfResp": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int64", + "description": "返回错误码", + "title": "code" + }, + "message": { + "type": "string", + "description": "返回错误信息", + "title": "message" + }, + "result": { + "type": "boolean", + "description": "返回结果", + "title": "result" + }, + "data": { + "type": "array", + "items": { + "$ref": "#/definitions/clustermanagerRecommendNodeGroupConf" + }, + "description": "推荐的节点池配置", + "title": "data" + } + }, + "description": "创建集群时推荐的节点池配置", + "title": "RecommendNodeGroupConfResp", + "required": [ + "code", + "message", + "data" + ] + }, "clustermanagerRecordNodeInfoRequest": { "type": "object", "properties": { @@ -16956,7 +17078,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -17032,7 +17153,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -17092,7 +17212,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -17130,6 +17249,30 @@ } } }, + "clustermanagerScalingProfile": { + "type": "object", + "properties": { + "maxSize": { + "type": "integer", + "format": "int64", + "description": "弹性伸缩组最大实例数", + "title": "maxSize" + }, + "desiredSize": { + "type": "integer", + "format": "int64", + "description": "节点数量", + "title": "desiredSize" + }, + "scalingMode": { + "type": "string", + "description": "扩缩容模式", + "title": "scalingMode" + } + }, + "description": "节点池扩缩容配置", + "title": "ScalingProfile" + }, "clustermanagerScopeInfo": { "type": "object", "properties": { @@ -17244,7 +17387,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -17277,7 +17419,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "步骤定义的参数,key、value对", + "title": "params" }, "retry": { "type": "integer", @@ -17328,7 +17472,6 @@ }, "skipOnFailed": { "type": "boolean", - "format": "boolean", "description": "失败时自动跳过某步骤,由用户设置。当设置失败跳过时,系统自动跳过当前失败步骤,执行后续流程", "title": "skipOnFailed" }, @@ -17339,7 +17482,6 @@ }, "allowSkip": { "type": "boolean", - "format": "boolean", "description": "标识该步骤失败时候是否允许用户手动跳过。当为true失败时候允许用户手动跳过, 为false失败时用户仅能通过重试解决", "title": "allowSkip" } @@ -17433,7 +17575,6 @@ }, "disable": { "type": "boolean", - "format": "boolean", "description": "开关集群网络模式, 默认打开", "title": "disable" }, @@ -17444,7 +17585,6 @@ }, "isStaticIpMode": { "type": "boolean", - "format": "boolean", "description": "是否开启静态IP模式", "title": "isStaticIpMode" }, @@ -17483,7 +17623,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -17515,7 +17654,6 @@ "properties": { "isScaleDownEnable": { "type": "boolean", - "format": "boolean", "description": "scale-down-enabled,是否允许缩容节点", "title": "isScaleDownEnable" }, @@ -17550,19 +17688,16 @@ }, "skipNodesWithLocalStorage": { "type": "boolean", - "format": "boolean", "description": "忽略有本地存储的节点,默认为true", "title": "skipNodesWithLocalStorage" }, "skipNodesWithSystemPods": { "type": "boolean", - "format": "boolean", "description": "忽略kube-system NS下非DaemonSet管理的Pod的节点,默认true", "title": "skipNodesWithSystemPods" }, "ignoreDaemonSetsUtilization": { "type": "boolean", - "format": "boolean", "description": "忽略DaemonSet的资源计算, 默认为true", "title": "ignoreDaemonSetsUtilization" }, @@ -17638,7 +17773,6 @@ }, "scaleUpFromZero": { "type": "boolean", - "format": "boolean", "description": "scale-up-from-zero,允许自动扩容(没有 ready 节点时)", "title": "scaleUpFromZero" }, @@ -17713,7 +17847,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -17806,7 +17939,9 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerStep" - } + }, + "description": "任务详细步骤信息,主要用于信息确认,异常时", + "title": "steps" }, "clusterID": { "type": "string", @@ -17835,7 +17970,6 @@ }, "forceTerminate": { "type": "boolean", - "format": "boolean", "description": "任务设置为强制终止,用于流程控制", "title": "forceTerminate" }, @@ -17843,7 +17977,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "公共参数,便于跨Step完成信息传递", + "title": "commonParams" }, "taskName": { "type": "string", @@ -17902,13 +18038,11 @@ }, "allowSkip": { "type": "boolean", - "format": "boolean", "description": "当前步骤失败是否允许跳过,系统内置", "title": "allowSkip" }, "allowRetry": { "type": "boolean", - "format": "boolean", "description": "当前步骤失败是否允许重试(默认都可以重试),系统内置", "title": "allowRetry" } @@ -18088,7 +18222,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -18145,7 +18278,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -18199,7 +18331,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" } @@ -18210,7 +18341,6 @@ "properties": { "isScaleDownEnable": { "type": "boolean", - "format": "boolean", "description": "scale-down-enabled,是否允许缩容节点", "title": "isScaleDownEnable" }, @@ -18245,19 +18375,16 @@ }, "skipNodesWithLocalStorage": { "type": "boolean", - "format": "boolean", "description": "忽略有本地存储的节点,默认为false", "title": "skipNodesWithLocalStorage" }, "skipNodesWithSystemPods": { "type": "boolean", - "format": "boolean", "description": "忽略kube-system NS下非DaemonSet管理的Pod的节点,默认false", "title": "skipNodesWithSystemPods" }, "ignoreDaemonSetsUtilization": { "type": "boolean", - "format": "boolean", "description": "忽略DaemonSet的资源计算", "title": "ignoreDaemonSetsUtilization" }, @@ -18337,7 +18464,6 @@ }, "scaleUpFromZero": { "type": "boolean", - "format": "boolean", "description": "scale-up-from-zero,允许自动扩容(没有 ready 节点时)", "title": "scaleUpFromZero" }, @@ -18383,7 +18509,6 @@ }, "onlyUpdateInfo": { "type": "boolean", - "format": "boolean", "description": "仅更新CA组件配置参数信息,不触发流程", "title": "onlyUpdateInfo" }, @@ -18424,7 +18549,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -18445,7 +18569,6 @@ "properties": { "enable": { "type": "boolean", - "format": "boolean", "description": "是否开启集群扩缩容", "title": "enable" }, @@ -18482,7 +18605,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -18523,7 +18645,6 @@ }, "enable": { "type": "boolean", - "format": "boolean", "description": "cloud云账号是否开启,默认开启", "title": "enable" }, @@ -18567,7 +18688,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" } @@ -18651,7 +18771,6 @@ }, "editable": { "type": "boolean", - "format": "boolean", "description": "对于SaaS层面该信息是否可编辑,BCS默认提供的预定义信息不可编译", "title": "editable" }, @@ -18659,13 +18778,17 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - } + }, + "description": "通过标准运维实现的扩展流程或者插件", + "title": "opsPlugins" }, "extraPlugins": { "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - } + }, + "description": "额外扩展流程,用于自定义扩展,该部分允许用户编辑", + "title": "extraPlugins" }, "cloudCredential": { "$ref": "#/definitions/clustermanagerCredential", @@ -18731,7 +18854,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "平台不同云的配置信息", + "title": "platformInfo" } }, "description": "创建项目请求", @@ -18757,7 +18882,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -18857,7 +18981,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -18944,7 +19067,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" } @@ -18999,7 +19121,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19066,7 +19187,6 @@ }, "isExclusive": { "type": "boolean", - "format": "boolean", "description": "是否为业务独占集群", "title": "isExclusive" }, @@ -19084,7 +19204,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "集群的labels,用于携带额外的信息,最大不得超过20个", + "title": "labels" }, "updater": { "type": "string", @@ -19100,13 +19222,17 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - } + }, + "description": "创建集群时进行BCS内置插件安装,该信息会索引云上默认配置信息进行对比与补充,如果填写错误直接报错", + "title": "bcsAddons" }, "extraAddons": { "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerBKOpsPlugin" - } + }, + "description": "创建集群时额外扩展传递的信息,该部分为预留二方/三方/服务商扩展使用,如果填错直接报错", + "title": "extraAddons" }, "systemID": { "type": "string", @@ -19155,7 +19281,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "存储集群扩展信息, 例如esb_url/webhook_image/priviledge_image等扩展信息", + "title": "ExtraInfo" }, "moduleID": { "type": "string", @@ -19169,7 +19297,6 @@ }, "isCommonCluster": { "type": "boolean", - "format": "boolean", "description": "是否为公共集群,默认false", "title": "isCommonCluster" }, @@ -19185,7 +19312,6 @@ }, "is_shared": { "type": "boolean", - "format": "boolean", "description": "是否为共享集群,默认false", "title": "is_shared" }, @@ -19211,7 +19337,6 @@ }, "isMixed": { "type": "boolean", - "format": "boolean", "description": "标记该集群是否是混部集群", "title": "isMixed" }, @@ -19243,7 +19368,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19310,7 +19434,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19344,7 +19467,6 @@ }, "manual": { "type": "boolean", - "format": "boolean", "description": "手动扩容操作,用户手动扩容操作不做数据回退清理,展示具体的步骤,支持用户重试", "title": "manual" } @@ -19373,7 +19495,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19434,7 +19555,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19495,7 +19615,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19542,7 +19661,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19584,7 +19702,6 @@ }, "enableAutoscale": { "type": "boolean", - "format": "boolean", "description": "是否开启弹性伸缩,默认false", "title": "enableAutoscale" }, @@ -19607,19 +19724,25 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "新实例初始化label信息", + "title": "labels" }, "taints": { "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "新实例初始化的污点信息", + "title": "taints" }, "tags": { "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "新实例初始化的资源标签信息", + "title": "tags" }, "nodeOS": { "type": "string", @@ -19659,7 +19782,6 @@ }, "onlyUpdateInfo": { "type": "boolean", - "format": "boolean", "description": "onlyUpdateInfo仅更新数据,不执行流程", "title": "onlyUpdateInfo" }, @@ -19667,7 +19789,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "节点池扩展息", + "title": "extraInfo" } }, "description": "更新NodeGroup请求", @@ -19689,7 +19813,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19739,7 +19862,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19810,7 +19932,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19861,7 +19982,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -19905,7 +20025,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "新实例初始化label信息", + "title": "labels" }, "taints": { "type": "array", @@ -19948,7 +20070,9 @@ "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "配置各模块自定义参数,预定义的key为kubeletvalue为各模块进程启动参数,多个参数之间使用;间隔,例如Kubelet: root-dir=/var/lib/kubelet;", + "title": "extraArgs" }, "preStartUserScript": { "type": "string", @@ -20025,7 +20149,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -20074,7 +20197,9 @@ "type": "object", "additionalProperties": { "$ref": "#/definitions/clustermanagerStep" - } + }, + "description": "任务详细步骤信息,主要用于信息确认,异常时", + "title": "steps" }, "updater": { "type": "string", @@ -20105,7 +20230,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -20158,7 +20282,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" }, @@ -20175,6 +20298,16 @@ "message" ] }, + "clustermanagerUpgradePolicy": { + "type": "object", + "properties": { + "supportType": { + "type": "string", + "description": "aws EKS升级策略类型(EXTENDED|STANDARD)", + "title": "supportType" + } + } + }, "clustermanagerVPCCidr": { "type": "object", "properties": { @@ -20235,7 +20368,6 @@ }, "result": { "type": "boolean", - "format": "boolean", "description": "返回结果", "title": "result" } @@ -20330,8 +20462,7 @@ "type": "string" }, "enable": { - "type": "boolean", - "format": "boolean" + "type": "boolean" }, "flagType": { "type": "string" diff --git a/bcs-services/bcs-cluster-manager/go.mod b/bcs-services/bcs-cluster-manager/go.mod index f1aef48e38..ec9717028d 100644 --- a/bcs-services/bcs-cluster-manager/go.mod +++ b/bcs-services/bcs-cluster-manager/go.mod @@ -25,7 +25,7 @@ require ( github.com/Tencent/bk-bcs/bcs-services/pkg v0.0.0-20240418123107-72b120390195 github.com/apparentlymart/go-cidr v1.1.0 github.com/avast/retry-go v2.7.0+incompatible - github.com/aws/aws-sdk-go v1.49.6 + github.com/aws/aws-sdk-go v1.55.5 github.com/emicklei/go-restful v2.15.0+incompatible github.com/envoyproxy/protoc-gen-validate v1.0.4 github.com/ghodss/yaml v1.0.0 diff --git a/bcs-services/bcs-cluster-manager/i18n/lang/en.yaml b/bcs-services/bcs-cluster-manager/i18n/lang/en.yaml index a2c30751c2..3b5e876fe5 100644 --- a/bcs-services/bcs-cluster-manager/i18n/lang/en.yaml +++ b/bcs-services/bcs-cluster-manager/i18n/lang/en.yaml @@ -35,10 +35,13 @@ removeHostFromCmdb: "remove host" #AllocateSubnetTask ImportClusterNodesTask: "Import cluster nodes" RegisterClusterKubeConfigTask: "Register cluster kube config authentication" +RegisterEKSClusterKubeConfigTask: "Register cluster kube config authentication" InstallGSEAgentTask: "Node installation agent plug-in" CreateClusterShieldAlarmTask: "Shield machine alarm" CreateTKEClusterTask: "create cluster request" +CreateEKSClusterTask: "create cluster request" CheckTKEClusterStatusTask: "Check cluster status" +CheckEKSClusterStatusTask: "Check cluster status" CheckCreateClusterNodeStatusTask: "Check cluster node status" RegisterManageClusterKubeConfigTask: "Register cluster connection information" EnableTkeClusterVpcCniTask: "Enable cluster VPC-CNI network mode" @@ -56,6 +59,7 @@ CheckClusterNodesInCMDBStep: "Check node in cmdb status" SyncClusterNodesToCMDBStep: "Sync node to bkcc" RemoveClusterNodesTaintTask: "remove built-in taints" UpdateAddNodeDBInfoTask: "update node data" +UpdateEKSNodesToDBTask: "update node data" RemoveNodesFromClusterTask: "delete node" UpdateRemoveNodeDBInfoTask: "Clean up node data" CreateCloudNodeGroupTask: "Create a cloud node group" diff --git a/bcs-services/bcs-cluster-manager/i18n/lang/zh.yaml b/bcs-services/bcs-cluster-manager/i18n/lang/zh.yaml index ddb2ddabf9..b89407b97e 100644 --- a/bcs-services/bcs-cluster-manager/i18n/lang/zh.yaml +++ b/bcs-services/bcs-cluster-manager/i18n/lang/zh.yaml @@ -35,11 +35,14 @@ removeHostFromCmdb: "移除主机" # ImportClusterNodesTask: "导入集群节点" RegisterClusterKubeConfigTask: "注册集群kubeConfig认证" +RegisterEKSClusterKubeConfigTask: "注册集群kubeConfig认证" InstallGSEAgentTask: "节点安装agent插件" CreateClusterShieldAlarmTask: "屏蔽机器告警" CreateTKEClusterTask: "提交创建集群请求" +CreateEKSClusterTask: "提交创建集群请求" CreateCloudClusterTask: "提交创建集群请求" CheckTKEClusterStatusTask: "轮询集群创建状态" +CheckEKSClusterStatusTask: "轮询集群创建状态" CheckCloudClusterStatusTask: "轮询集群创建状态" CheckCreateClusterNodeStatusTask: "检测集群节点状态" RegisterManageClusterKubeConfigTask: "注册集群连接信息" @@ -58,6 +61,7 @@ CheckClusterNodesInCMDBStep: "检测节点同步cmdb状态" SyncClusterNodesToCMDBStep: "同步节点至bkcc" RemoveClusterNodesTaintTask: "删除内置污点" UpdateAddNodeDBInfoTask: "更新节点数据" +UpdateEKSNodesToDBTask: "更新节点数据" RemoveNodesFromClusterTask: "删除节点" UpdateRemoveNodeDBInfoTask: "清理节点数据" CreateCloudNodeGroupTask: "创建云节点组" diff --git a/bcs-services/bcs-cluster-manager/internal/actions/moduleflag/list.go b/bcs-services/bcs-cluster-manager/internal/actions/moduleflag/list.go index 5dd832a104..4a74496b0b 100644 --- a/bcs-services/bcs-cluster-manager/internal/actions/moduleflag/list.go +++ b/bcs-services/bcs-cluster-manager/internal/actions/moduleflag/list.go @@ -79,7 +79,7 @@ func (la *ListAction) listCloudModuleFlag() error { cloudModuleFlags = append(cloudModuleFlags, flags...) for i := range cloudModuleFlags { - cloudModuleFlags[i].FlagDesc = i18n.T(la.ctx, cloudModuleFlags[i].FlagName) + cloudModuleFlags[i].FlagDesc = i18n.T(la.ctx, cloudModuleFlags[i].FlagDesc) la.moduleFlagListList = append(la.moduleFlagListList, &cloudModuleFlags[i]) } diff --git a/bcs-services/bcs-cluster-manager/internal/actions/nodegroup/recommended_config.go b/bcs-services/bcs-cluster-manager/internal/actions/nodegroup/recommended_config.go new file mode 100644 index 0000000000..245e673346 --- /dev/null +++ b/bcs-services/bcs-cluster-manager/internal/actions/nodegroup/recommended_config.go @@ -0,0 +1,103 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +package nodegroup + +import ( + "context" + + "github.com/Tencent/bk-bcs/bcs-common/common/blog" + + cmproto "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/api/clustermanager" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/actions" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/common" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/store" +) + +// RecommendNodeGroupConfAction action for get cluster +type RecommendNodeGroupConfAction struct { + ctx context.Context + model store.ClusterManagerModel + req *cmproto.RecommendNodeGroupConfReq + resp *cmproto.RecommendNodeGroupConfResp + cloud *cmproto.Cloud + configs []*cmproto.RecommendNodeGroupConf +} + +// NewRecommendNodeGroupConfAction create get action +func NewRecommendNodeGroupConfAction(model store.ClusterManagerModel) *RecommendNodeGroupConfAction { + return &RecommendNodeGroupConfAction{ + model: model, + } +} + +func (ra *RecommendNodeGroupConfAction) validate() error { + return ra.req.Validate() +} + +func (ra *RecommendNodeGroupConfAction) setResp(code uint32, msg string) { + ra.resp.Code = code + ra.resp.Message = msg + ra.resp.Result = (code == common.BcsErrClusterManagerSuccess) + ra.resp.Data = ra.configs +} + +// Handle get cluster request +func (ra *RecommendNodeGroupConfAction) Handle(ctx context.Context, req *cmproto.RecommendNodeGroupConfReq, + resp *cmproto.RecommendNodeGroupConfResp) { + if req == nil || resp == nil { + blog.Errorf("get recommendedNodeGroupConf failed, req or resp is empty") + return + } + ra.ctx = ctx + ra.req = req + ra.resp = resp + var err error + + if err = req.Validate(); err != nil { + ra.setResp(common.BcsErrClusterManagerInvalidParameter, err.Error()) + return + } + + if ra.cloud, err = actions.GetCloudByCloudID(ra.model, req.CloudID); err != nil { + ra.setResp(common.BcsErrClusterManagerDBOperation, err.Error()) + return + } + + cmOption, err := cloudprovider.GetCredential(&cloudprovider.CredentialData{ + Cloud: ra.cloud, + AccountID: ra.req.AccountID, + }) + if err != nil { + blog.Errorf("get credential for cloud provider %s/%s failed, %s", + ra.cloud.CloudID, ra.cloud.CloudProvider, err.Error()) + ra.setResp(common.BcsErrClusterManagerCloudProviderErr, err.Error()) + return + } + cmOption.Region = ra.req.Region + + mgr, err := cloudprovider.GetNodeGroupMgr(ra.cloud.CloudProvider) + if err != nil { + blog.Errorf("get nodegroup manager for cloud provider %s failed, %s", ra.cloud.CloudProvider, err.Error()) + ra.setResp(common.BcsErrClusterManagerCloudProviderErr, err.Error()) + return + } + + configs, err := mgr.RecommendNodeGroupConf(cmOption) + if err != nil { + ra.setResp(common.BcsErrClusterManagerCheckKubeConnErr, err.Error()) + return + } + ra.configs = configs + ra.setResp(common.BcsErrClusterManagerSuccess, common.BcsErrClusterManagerSuccessStr) +} diff --git a/bcs-services/bcs-cluster-manager/internal/auth/preset.go b/bcs-services/bcs-cluster-manager/internal/auth/preset.go index 6bba9d05d2..9f656f7c38 100644 --- a/bcs-services/bcs-cluster-manager/internal/auth/preset.go +++ b/bcs-services/bcs-cluster-manager/internal/auth/preset.go @@ -33,6 +33,7 @@ var NoAuthMethod = []string{ // nodeGroup resource "ClusterManager.GetExternalNodeScriptByGroupID", + "ClusterManager.RecommendNodeGroupConf", // cloud template "ClusterManager.GetCloud", @@ -179,6 +180,7 @@ var ActionPermissions = map[string]string{ "ClusterManager.ListNodesInGroup": cluster.CanViewClusterOperation, "ClusterManager.ListNodesInGroupV2": cluster.CanViewClusterOperation, "ClusterManager.UpdateGroupAsTimeRange": cluster.CanManageClusterOperation, + "ClusterManager.RecommendNodeGroupConf": "", "ClusterManager.UpdateGroupDesiredNode": cluster.CanManageClusterOperation, "ClusterManager.UpdateGroupDesiredSize": cluster.CanManageClusterOperation, diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/constant.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/constant.go index 277ff06685..e8fe7e1afb 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/constant.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/constant.go @@ -12,6 +12,19 @@ package api +const ( + // RegionStateOptInNR region state opt-in-not-required + RegionStateOptInNR = "opt-in-not-required" + // RegionStateOptedIn region state opted-in + RegionStateOptedIn = "opted-in" + // RegionStateNotOptedIn region state not-opted-in + RegionStateNotOptedIn = "not-opted-in" + // BCSRegionStateAvailable xxx + BCSRegionStateAvailable = "AVAILABLE" + // BCSRegionStateUnavailable xxx + BCSRegionStateUnavailable = "UNAVAILABLE" +) + const ( // NodeGroupStatusCreating node group status creating NodeGroupStatusCreating = "CREATING" @@ -75,3 +88,16 @@ const ( // EksClusterRole EKS role policy AmazonEKSClusterPolicy EksClusterRole = "arn:aws:iam::aws:policy/AmazonEKSClusterPolicy" ) + +const ( + // ClusterAuthenticationModeAM xxx + ClusterAuthenticationModeAM = "API_AND_CONFIG_MAP" + // ClusterAuthenticationModeAPI xxx + ClusterAuthenticationModeAPI = "API" + // ClusterAuthenticationModeCM xxx + ClusterAuthenticationModeCM = "CONFIG_MAP" + // ClusterUpdatePolicyExtended xxx + ClusterUpdatePolicyExtended = "EXTENDED" + // ClusterUpdatePolicyStandard xxx + ClusterUpdatePolicyStandard = "STANDARD" +) diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/ec2.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/ec2.go index 26824ff614..ddf36655d8 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/ec2.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/ec2.go @@ -255,7 +255,7 @@ func (c *EC2Client) DescribeKeyPairs(input *ec2.DescribeKeyPairsInput) ( blog.Errorf("DescribeKeyPairs failed: %v", err) return nil, err } - if output == nil || output.KeyPairs == nil { + if output == nil { blog.Errorf("DescribeKeyPairs lose response information") return nil, cloudprovider.ErrCloudLostResponse } diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/eks.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/eks.go index 270bb00c22..8a5799ac67 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/eks.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/eks.go @@ -201,3 +201,18 @@ func (cli *EksClient) DeleteNodegroup(input *eks.DeleteNodegroupInput) (*eks.Nod return output.Nodegroup, nil } + +// CreateAddon creates cluster addon +func (cli *EksClient) CreateAddon(input *eks.CreateAddonInput) (*eks.Addon, error) { + if cli == nil { + return nil, cloudprovider.ErrServerIsNil + } + + output, err := cli.eksClient.CreateAddon(input) + if err != nil { + return nil, err + } + + blog.Infof("eksClient create eks cluster[%s] addon[%s] success", *input.ClusterName, *input.AddonName) + return output.Addon, nil +} diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/node.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/node.go index 5f1c863b17..4248ed5181 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/node.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/node.go @@ -105,13 +105,12 @@ func (nm *NodeManager) ListNodeInstanceType(info cloudprovider.InstanceInfo, blog.Errorf("ListNodeInstanceType DescribeInstanceTypesPages failed, %s", err.Error()) return nil, err } - - instanceTypes := convertToInstanceType(cloudInstanceTypes) - + instanceTypes := convertToInstanceType(info, cloudInstanceTypes) return instanceTypes, nil } -func convertToInstanceType(cloudInstanceTypes []*ec2.InstanceTypeInfo) []*proto.InstanceType { +func convertToInstanceType(info cloudprovider.InstanceInfo, + cloudInstanceTypes []*ec2.InstanceTypeInfo) []*proto.InstanceType { // nolint instanceTypes := make([]*proto.InstanceType, 0) for _, v := range cloudInstanceTypes { t := &proto.InstanceType{} @@ -120,14 +119,23 @@ func convertToInstanceType(cloudInstanceTypes []*ec2.InstanceTypeInfo) []*proto. t.NodeType = *v.InstanceType family := strings.Split(*v.InstanceType, ".") t.NodeFamily = family[0] + if info.NodeFamily != "" && t.NodeFamily != info.NodeFamily { + continue + } t.Status = common.InstanceSell } if v.VCpuInfo != nil && v.VCpuInfo.DefaultVCpus != nil { t.Cpu = uint32(*v.VCpuInfo.DefaultVCpus) + if info.Cpu != 0 && t.Cpu != info.Cpu { + continue + } } if v.MemoryInfo != nil && v.MemoryInfo.SizeInMiB != nil { memGb := math.Ceil(float64(*v.MemoryInfo.SizeInMiB / 1024)) // nolint t.Memory = uint32(memGb) + if info.Memory != 0 && t.Memory != info.Memory { + continue + } } if v.GpuInfo != nil && v.GpuInfo.Gpus != nil { var gpuCount uint32 @@ -314,9 +322,16 @@ func (nm *NodeManager) GetCloudRegions(opt *cloudprovider.CommonOption) ([]*prot regions := make([]*proto.RegionInfo, 0) for _, v := range output.Regions { regions = append(regions, &proto.RegionInfo{ - Region: aws.StringValue(v.RegionName), - RegionName: aws.StringValue(v.RegionName), - RegionState: aws.StringValue(v.OptInStatus), + Region: aws.StringValue(v.RegionName), + RegionName: aws.StringValue(v.RegionName), + RegionState: func(s string) string { + switch s { + case RegionStateOptInNR, RegionStateOptedIn: + return BCSRegionStateAvailable + default: + return BCSRegionStateUnavailable + } + }(aws.StringValue(v.OptInStatus)), }) } @@ -340,7 +355,7 @@ func (nm *NodeManager) GetZoneList(opt *cloudprovider.GetZoneListOption) ([]*pro ZoneID: *z.ZoneId, Zone: *z.ZoneId, ZoneName: *z.ZoneName, - ZoneState: *z.State, + ZoneState: BCSRegionStateAvailable, }) } diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/business/network.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/business/network.go new file mode 100644 index 0000000000..beb1c67bbf --- /dev/null +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/business/network.go @@ -0,0 +1,216 @@ +/* + * Tencent is pleased to support the open source community by making Blueking Container Service available. + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * Licensed under the MIT License (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * http://opensource.org/licenses/MIT + * Unless required by applicable law or agreed to in writing, software distributed under + * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions and + * limitations under the License. + */ + +package business + +import ( + "context" + "fmt" + "net" + "time" + + "github.com/Tencent/bk-bcs/bcs-common/common/blog" + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/service/ec2" + + proto "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/api/clustermanager" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/cidrtree" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/utils" +) + +// GetVpcCIDRBlocks 获取vpc所属的cidr段(包括普通辅助cidr、容器辅助cidr) +func GetVpcCIDRBlocks(opt *cloudprovider.CommonOption, vpcId string) ([]*net.IPNet, error) { + client, err := api.GetEc2Client(opt) + if err != nil { + return nil, fmt.Errorf("GetVpcCIDRBlocks GetEc2Client failed, %s", err.Error()) + } + + output, err := client.DescribeVpcs(&ec2.DescribeVpcsInput{ + VpcIds: aws.StringSlice([]string{vpcId}), + }) + if err != nil { + return nil, fmt.Errorf("GetVpcCIDRBlocks DescribeVpcs failed, %s", err.Error()) + } + + if len(output.Vpcs) == 0 { + return nil, fmt.Errorf("GetVpcCIDRBlocks DescribeVpcs failed, vpc does not exist") + } + + cidr := *output.Vpcs[0].CidrBlock + _, netIP, err := net.ParseCIDR(cidr) + if err != nil { + return nil, fmt.Errorf("GetVpcCIDRBlocks ParseCIDR failed, %s", err.Error()) + } + + return []*net.IPNet{netIP}, nil +} + +// GetAllocatedSubnetsByVpc 获取vpc已分配的子网cidr段 +func GetAllocatedSubnetsByVpc(opt *cloudprovider.CommonOption, vpcId string) ([]*net.IPNet, error) { + client, err := api.GetEc2Client(opt) + if err != nil { + return nil, fmt.Errorf("GetAllocatedSubnetsByVpc GetEc2Client failed, %s", err.Error()) + } + + cloudSubnets := make([]*ec2.Subnet, 0) + err = client.DescribeSubnetsPages(&ec2.DescribeSubnetsInput{ + Filters: []*ec2.Filter{ + { + Name: aws.String("vpc-id"), + Values: aws.StringSlice([]string{vpcId}), + }, + }, + }, func(page *ec2.DescribeSubnetsOutput, lastPage bool) bool { + cloudSubnets = append(cloudSubnets, page.Subnets...) + return !lastPage + }) + if err != nil { + return nil, fmt.Errorf("GetAllocatedSubnetsByVpc DescribeSubnetsPages failed, %s", err.Error()) + } + + var ret []*net.IPNet + for _, subnet := range cloudSubnets { + if subnet.CidrBlock != nil { + _, c, err := net.ParseCIDR(*subnet.CidrBlock) + if err != nil { + return ret, err + } + ret = append(ret, c) + } + } + return ret, nil +} + +// GetFreeIPNets return free subnets +func GetFreeIPNets(opt *cloudprovider.CommonOption, vpcId string) ([]*net.IPNet, error) { + // 获取vpc cidr blocks + allBlocks, err := GetVpcCIDRBlocks(opt, vpcId) + if err != nil { + return nil, err + } + + // 获取vpc 已使用子网列表 + allSubnets, err := GetAllocatedSubnetsByVpc(opt, vpcId) + if err != nil { + return nil, err + } + + // 空闲IP列表 + return cidrtree.GetFreeIPNets(allBlocks, nil, allSubnets), nil +} + +// AllocateSubnet allocate directrouter subnet +func AllocateSubnet(opt *cloudprovider.CommonOption, vpcId, zone string, mask int) (*cidrtree.Subnet, error) { + frees, err := GetFreeIPNets(opt, vpcId) + if err != nil { + return nil, err + } + sub, err := cidrtree.AllocateFromFrees(mask, frees) + if err != nil { + return nil, err + } + + // create vpc subnet + vpcCli, err := api.GetEc2Client(opt) + if err != nil { + return nil, err + } + ret, err := vpcCli.CreateSubnet(&ec2.CreateSubnetInput{ + AvailabilityZone: aws.String(zone), + CidrBlock: aws.String(sub.String()), + VpcId: aws.String(vpcId), + }) + if err != nil { + return nil, err + } + + return subnetFromVpcSubnet(ret.Subnet), err +} + +// subnetFromVpcSubnet trans vpc subnet to local subnet +func subnetFromVpcSubnet(info *ec2.Subnet) *cidrtree.Subnet { + s := &cidrtree.Subnet{} + if info == nil { + return s + } + s.ID = *info.SubnetId + if info.CidrBlock != nil { + _, s.IPNet, _ = net.ParseCIDR(*info.CidrBlock) + } + s.VpcID = *info.VpcId + s.Zone = *info.AvailabilityZone + s.AvailableIps = uint64(*info.AvailableIpAddressCount) + + return s +} + +// AllocateClusterVpcCniSubnets 集群分配所需的vpc-cni子网资源 +func AllocateClusterVpcCniSubnets(ctx context.Context, vpcId string, + subnets []*proto.NewSubnet, opt *cloudprovider.CommonOption) ([]string, error) { + taskID := cloudprovider.GetTaskIDFromContext(ctx) + + subnetIDs := make([]string, 0) + + for i := range subnets { + mask := 0 // nolint + if subnets[i].Mask > 0 { + mask = int(subnets[i].Mask) + } else if subnets[i].IpCnt > 0 { + lenMask, err := utils.GetMaskLenByNum(utils.IPV4, float64(subnets[i].IpCnt)) + if err != nil { + blog.Errorf("AllocateClusterVpcCniSubnets[%s] failed: %v", taskID, err) + continue + } + mask = lenMask + } else { + mask = utils.DefaultMask + } + + sub, err := AllocateSubnet(opt, vpcId, subnets[i].Zone, mask) + if err != nil { + blog.Errorf("AllocateClusterVpcCniSubnets[%s] failed: %v", taskID, err) + continue + } + + blog.Infof("AllocateClusterVpcCniSubnets[%s] vpc[%s] zone[%s] subnet[%s]", + taskID, vpcId, subnets[i].Zone, sub.ID) + subnetIDs = append(subnetIDs, sub.ID) + time.Sleep(time.Millisecond * 500) + } + + blog.Infof("AllocateClusterVpcCniSubnets[%s] subnets[%v]", taskID, subnetIDs) + return subnetIDs, nil +} + +// CheckConflictFromVpc check cidr conflict in vpc cidrs +func CheckConflictFromVpc(opt *cloudprovider.CommonOption, vpcId, cidr string) ([]string, error) { + ipNets, err := GetVpcCIDRBlocks(opt, vpcId) + if err != nil { + return nil, err + } + + _, c, err := net.ParseCIDR(cidr) + if err != nil { + return nil, err + } + + conflictCidrs := make([]string, 0) + for i := range ipNets { + if cidrtree.CidrContains(ipNets[i], c) || cidrtree.CidrContains(c, ipNets[i]) { + conflictCidrs = append(conflictCidrs, ipNets[i].String()) + } + } + + return conflictCidrs, nil +} diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/nodegroup.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/nodegroup.go index ef51a777b7..d88237b84f 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/nodegroup.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/nodegroup.go @@ -126,6 +126,73 @@ func (ng *NodeGroup) generateUpdateNodegroupConfigInput(group *proto.NodeGroup, return input } +// RecommendNodeGroupConf recommends nodegroup configs +func (ng *NodeGroup) RecommendNodeGroupConf(opt *cloudprovider.CommonOption) ([]*proto.RecommendNodeGroupConf, error) { + if opt == nil { + return nil, fmt.Errorf("invalid request") + } + + configs := make([]*proto.RecommendNodeGroupConf, 0) + config := generateNodeGroupConf() + + mgr := api.NodeManager{} + serviceRoles, err := mgr.GetServiceRoles(opt, "nodeGroup") + if err != nil { + blog.Errorf("RecommendNodeGroupConf GetServiceRoles failed, %s", err.Error()) + return nil, err + } + if len(serviceRoles) == 0 { + return nil, fmt.Errorf("RecommendNodeGroupConf GetServiceRoles failed, no valid EKS-Node-Role") + } + config.ServiceRoleName = serviceRoles[0].RoleName + + insTypes, err := mgr.ListNodeInstanceType(cloudprovider.InstanceInfo{ + Region: opt.Region, + Cpu: 8, + Memory: 16, + }, opt) + if len(insTypes) == 0 { + return nil, fmt.Errorf("RecommendNodeGroupConf no valid instanceType for 8c16g") + } + config.InstanceProfile.InstanceType = insTypes[0].NodeType + configs = append(configs, config) + + return configs, nil +} + +func generateNodeGroupConf() *proto.RecommendNodeGroupConf { + return &proto.RecommendNodeGroupConf{ + Name: "default", + InstanceProfile: &proto.InstanceProfile{ + NodeOS: "AL_X86_64", + InstanceChargeType: "POSTPAID_BY_HOUR", + }, + HardwareProfile: &proto.HardwareProfile{ + CPU: 8, + Mem: 16, + SystemDisk: &proto.DataDisk{ + DiskType: "gp2", + DiskSize: "100", + }, + DataDisks: []*proto.DataDisk{ + { + DiskType: "gp2", + DiskSize: "100", + }, + }, + }, + NetworkProfile: &proto.NetworkProfile{ + PublicIPAssigned: false, + }, + ScalingProfile: &proto.ScalingProfile{ + DesiredSize: 2, + MaxSize: 10, + // 释放模式 + ScalingMode: "Delete", + }, + } +} + // GetNodesInGroup get all nodes belong to NodeGroup func (ng *NodeGroup) GetNodesInGroup(group *proto.NodeGroup, opt *cloudprovider.CommonOption) ([]*proto.Node, error) { return nil, cloudprovider.ErrCloudNotImplemented diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/taskmgr.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/taskmgr.go index e3f36bf53e..976b835bfb 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/taskmgr.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/taskmgr.go @@ -22,6 +22,7 @@ import ( "github.com/google/uuid" proto "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/api/clustermanager" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/actions" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/common" @@ -111,6 +112,17 @@ func (t *Task) BuildCreateClusterTask(cls *proto.Cluster, opt *cloudprovider.Cre return nil, fmt.Errorf("BuildCreateClusterTask TaskOptions is lost") } + nodeGroups := make([]*proto.NodeGroup, 0) + var desireSize uint32 + for _, ngID := range opt.NodeGroupIDs { + nodeGroup, errGet := actions.GetNodeGroupByGroupID(cloudprovider.GetStorageModel(), ngID) + if errGet != nil { + return nil, fmt.Errorf("BuildCreateClusterTask GetNodeGroupByGroupID failed, %s", errGet.Error()) + } + nodeGroups = append(nodeGroups, nodeGroup) + desireSize += nodeGroup.AutoScaling.DesiredSize + } + nowStr := time.Now().Format(time.RFC3339) task := &proto.Task{ TaskID: uuid.New().String(), @@ -140,36 +152,40 @@ func (t *Task) BuildCreateClusterTask(cls *proto.Cluster, opt *cloudprovider.Cre createClusterTask.BuildCreateClusterStep(task) // step1: check cluster status by clusterID createClusterTask.BuildCheckClusterStatusStep(task) - // step2: create node group - createClusterTask.BuildCreateCloudNodeGroupStep(task) - // step3: check cluster nodegroups status - createClusterTask.BuildCheckCloudNodeGroupStatusStep(task) - // step4: register managed cluster kubeConfig + // step2: register managed cluster kubeConfig createClusterTask.BuildRegisterClsKubeConfigStep(task) - // step5: check cluster nodegroups status - createClusterTask.BuildCheckClusterNodesStatusStep(task) - // step6: update nodes to DB - createClusterTask.BuildUpdateNodesToDBStep(task) - // step7: install cluster watch component - common.BuildWatchComponentTaskStep(task, cls, "") - // step8: 若需要则设置节点注解 - common.BuildNodeAnnotationsTaskStep(task, cls.ClusterID, nil, func() map[string]string { - if opt.NodeTemplate != nil && len(opt.NodeTemplate.GetAnnotations()) > 0 { - return opt.NodeTemplate.GetAnnotations() + // aws support skipping nodegroups creation + if len(nodeGroups) != 0 { + // step3: create node group + createClusterTask.BuildCreateCloudNodeGroupStep(task) + // step4: check cluster nodegroups status + createClusterTask.BuildCheckCloudNodeGroupStatusStep(task) + if desireSize != 0 { + // step5: check cluster nodegroups status + createClusterTask.BuildCheckClusterNodesStatusStep(task) + // step6: update nodes to DB + createClusterTask.BuildUpdateNodesToDBStep(task) + // step7: install cluster watch component + common.BuildWatchComponentTaskStep(task, cls, "") + // step8: 若需要则设置节点注解 + common.BuildNodeAnnotationsTaskStep(task, cls.ClusterID, nil, func() map[string]string { + if opt.NodeTemplate != nil && len(opt.NodeTemplate.GetAnnotations()) > 0 { + return opt.NodeTemplate.GetAnnotations() + } + return nil + }()) + // step9 install gse agent + common.BuildInstallGseAgentTaskStep(task, &common.GseInstallInfo{ + ClusterId: cls.ClusterID, + BusinessId: cls.BusinessID, + CloudArea: cls.GetClusterBasicSettings().GetArea(), + User: nodeGroups[0].GetLaunchTemplate().GetInitLoginUsername(), + Passwd: nodeGroups[0].GetLaunchTemplate().GetInitLoginPassword(), + KeyInfo: nodeGroups[0].GetLaunchTemplate().GetKeyPair(), + AllowReviseCloudId: icommon.True, + }, cloudprovider.WithStepAllowSkip(true)) } - return nil - }()) - - // step9 install gse agent - common.BuildInstallGseAgentTaskStep(task, &common.GseInstallInfo{ - ClusterId: cls.ClusterID, - BusinessId: cls.BusinessID, - CloudArea: cls.GetClusterBasicSettings().GetArea(), - User: cls.GetNodeSettings().GetWorkerLogin().GetInitLoginUsername(), - Passwd: cls.GetNodeSettings().GetWorkerLogin().GetInitLoginPassword(), - KeyInfo: cls.GetNodeSettings().GetWorkerLogin().GetKeyPair(), - AllowReviseCloudId: icommon.True, - }, cloudprovider.WithStepAllowSkip(true)) + } // step10: transfer host module moduleID := cls.GetClusterBasicSettings().GetModule().GetWorkerModuleID() diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/clean_nodes_ingroup.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/cleanNodesInGroup.go similarity index 100% rename from bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/clean_nodes_ingroup.go rename to bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/cleanNodesInGroup.go diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/create_cluster.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/createCluster.go similarity index 84% rename from bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/create_cluster.go rename to bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/createCluster.go index 5fe1544ef7..b19b2d5f8f 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/create_cluster.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/createCluster.go @@ -29,14 +29,18 @@ import ( "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/actions" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/business" providerutils "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/utils" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/clusterops" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/common" + icommon "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/common" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/options" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/loop" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/utils" ) +var defaultAddons = []string{"coredns", "kube-proxy", "vpc-cni", "eks-pod-identity-agent"} + // CreateEKSClusterTask call aws interface to create cluster func CreateEKSClusterTask(taskID string, stepName string) error { start := time.Now() @@ -116,7 +120,10 @@ func createEKSCluster(ctx context.Context, info *cloudprovider.CloudDependBasicI return "", err } - input := generateCreateClusterInput(info.Cluster, role.Arn) + input, err := generateCreateClusterInput(info, role.Arn) + if err != nil { + return "", fmt.Errorf("generateCreateClusterInput failed, %v", err) + } eksCluster, err := client.CreateEksCluster(input) if err != nil { @@ -139,18 +146,61 @@ func createEKSCluster(ctx context.Context, info *cloudprovider.CloudDependBasicI return *eksCluster.Name, nil } -func generateCreateClusterInput(cluster *proto.Cluster, roleArn *string) *eks.CreateClusterInput { - subnets := strings.Split(cluster.ClusterBasicSettings.SubnetID, ",") +func generateCreateClusterInput(info *cloudprovider.CloudDependBasicInfo, roleArn *string) ( + *eks.CreateClusterInput, error) { + + var ( + cluster = info.Cluster + subnetIds = make([]string, 0) + err error + ) + + if cluster.GetClusterAdvanceSettings().GetNetworkType() == icommon.VpcCni { + subnetIds, err = business.AllocateClusterVpcCniSubnets(context.Background(), cluster.VpcID, + cluster.GetNetworkSettings().GetSubnetSource().GetNew(), info.CmOption) + if err != nil { + return nil, err + } + if len(info.Cluster.GetNetworkSettings().GetSubnetSource().GetExisted().GetIds()) > 0 { + subnetIds = append(subnetIds, info.Cluster.GetNetworkSettings().GetSubnetSource().GetExisted().GetIds()...) + } + } else { + subnetIds = strings.Split(cluster.ClusterBasicSettings.SubnetID, ",") + } + sgs := strings.Split(cluster.ClusterAdvanceSettings.ClusterConnectSetting.SecurityGroup, ",") input := &eks.CreateClusterInput{ + // 默认启用集群访问权限,认证模式为 + AccessConfig: &eks.CreateAccessConfigRequest{ + AuthenticationMode: aws.String(api.ClusterAuthenticationModeAM), + BootstrapClusterCreatorAdminPermissions: aws.Bool(true), + }, Name: aws.String(cluster.ClusterName), RoleArn: roleArn, ResourcesVpcConfig: &eks.VpcConfigRequest{ - SubnetIds: aws.StringSlice(subnets), + SubnetIds: aws.StringSlice(subnetIds), SecurityGroupIds: aws.StringSlice(sgs), - EndpointPrivateAccess: aws.Bool(true), - EndpointPublicAccess: aws.Bool(cluster.ClusterAdvanceSettings.ClusterConnectSetting.Internet.PublicIPAssigned), + EndpointPrivateAccess: aws.Bool(!cluster.ClusterAdvanceSettings.ClusterConnectSetting.IsExtranet), + EndpointPublicAccess: aws.Bool(cluster.ClusterAdvanceSettings.ClusterConnectSetting.IsExtranet), + PublicAccessCidrs: func() []*string { + if cluster.ClusterAdvanceSettings.ClusterConnectSetting.Internet == nil || + cluster.ClusterAdvanceSettings.ClusterConnectSetting.Internet.PublicAccessCidrs == nil { + return nil + } + return aws.StringSlice(cluster.ClusterAdvanceSettings.ClusterConnectSetting.Internet.PublicAccessCidrs) + }(), }, + UpgradePolicy: func(setting *proto.ClusterBasicSetting) *eks.UpgradePolicyRequest { + if setting.UpgradePolicy == nil { + // 默认使用EXTENDED升级策略, 与aws保持一致 + return &eks.UpgradePolicyRequest{SupportType: aws.String(api.ClusterUpdatePolicyExtended)} + } + if setting.UpgradePolicy.SupportType != api.ClusterUpdatePolicyExtended && + setting.UpgradePolicy.SupportType != api.ClusterUpdatePolicyStandard { + return &eks.UpgradePolicyRequest{SupportType: aws.String(api.ClusterUpdatePolicyExtended)} + } + return &eks.UpgradePolicyRequest{SupportType: aws.String(setting.UpgradePolicy.SupportType)} + }(cluster.ClusterBasicSettings), Version: aws.String(cluster.ClusterBasicSettings.Version), } input.KubernetesNetworkConfig = generateKubernetesNetworkConfig(cluster) @@ -158,7 +208,7 @@ func generateCreateClusterInput(cluster *proto.Cluster, roleArn *string) *eks.Cr input.Tags = aws.StringMap(cluster.ClusterBasicSettings.ClusterTags) } - return input + return input, nil } func generateKubernetesNetworkConfig(cluster *proto.Cluster) *eks.KubernetesNetworkConfigRequest { @@ -174,7 +224,6 @@ func generateKubernetesNetworkConfig(cluster *proto.Cluster) *eks.KubernetesNetw req.IpFamily = aws.String("ipv4") req.ServiceIpv4Cidr = aws.String(cluster.NetworkSettings.ServiceIPv4CIDR) } - } return req @@ -223,6 +272,15 @@ func CheckEKSClusterStatusTask(taskID string, stepName string) error { return retErr } + err = createAddon(ctx, dependInfo) + if err != nil { + blog.Errorf("CheckEKSClusterStatusTask[%s] createAddon[%s] failed: %v", + taskID, clusterID, err) + retErr := fmt.Errorf("createAddon[%s] failed, %s", clusterID, err.Error()) + _ = state.UpdateStepFailure(start, stepName, retErr) + return retErr + } + // update step if err = state.UpdateStepSucc(start, stepName); err != nil { blog.Errorf("CheckEKSClusterStatusTask[%s] task %s %s update to storage fatal", @@ -287,6 +345,30 @@ func checkClusterStatus(ctx context.Context, info *cloudprovider.CloudDependBasi return nil } +func createAddon(ctx context.Context, info *cloudprovider.CloudDependBasicInfo) error { + taskID := cloudprovider.GetTaskIDFromContext(ctx) + + // get awsCloud client + cli, err := api.NewEksClient(info.CmOption) + if err != nil { + blog.Errorf("checkClusterStatus[%s] get aws client failed: %s", taskID, err.Error()) + retErr := fmt.Errorf("get cloud aws client err, %s", err.Error()) + return retErr + } + + for _, addon := range defaultAddons { + _, err = cli.CreateAddon(&eks.CreateAddonInput{ + ClusterName: aws.String(info.Cluster.ClusterName), + AddonName: aws.String(addon), + }) + if err != nil { + return err + } + } + + return nil +} + // RegisterEKSClusterKubeConfigTask register cluster kubeconfig func RegisterEKSClusterKubeConfigTask(taskID string, stepName string) error { start := time.Now() @@ -376,9 +458,20 @@ func CheckEKSClusterNodesStatusTask(taskID string, stepName string) error { return retErr } + var totalNodesNum uint32 + for _, ngID := range strings.Split(nodeGroupIDs, ",") { + nodeGroup, _ := actions.GetNodeGroupByGroupID(cloudprovider.GetStorageModel(), ngID) + // 运行至此, 认为节点池已创建成功 + err = cloudprovider.UpdateNodeGroupStatus(ngID, common.StatusRunning) + if err != nil { + blog.Errorf("CheckEKSClusterNodesStatusTask[%s] UpdateNodeGroupStatus failed, %s", taskID, err.Error()) + return fmt.Errorf("UpdateNodeGroupStatus failed, %s", err.Error()) + } + totalNodesNum += nodeGroup.AutoScaling.DesiredSize + } // check cluster status ctx := cloudprovider.WithTaskIDForContext(context.Background(), taskID) - addSuccessNodes, addFailureNodes, err := checkClusterNodesStatus(ctx, dependInfo, strings.Split(nodeGroupIDs, ",")) + addSuccessNodes, addFailureNodes, err := checkClusterNodesStatus(ctx, dependInfo, totalNodesNum) if err != nil { blog.Errorf("CheckEKSClusterStatusTask[%s] checkClusterStatus[%s] failed: %v", taskID, clusterID, err) @@ -394,7 +487,7 @@ func CheckEKSClusterNodesStatusTask(taskID string, stepName string) error { if len(addFailureNodes) > 0 { state.Task.CommonParams[cloudprovider.FailedClusterNodeIDsKey.String()] = strings.Join(addFailureNodes, ",") } - if len(addSuccessNodes) == 0 { + if totalNodesNum != 0 && len(addSuccessNodes) == 0 { blog.Errorf("CheckCreateClusterNodeStatusTask[%s] nodes init failed", taskID) retErr := fmt.Errorf("节点初始化失败, 请联系管理员") _ = state.UpdateStepFailure(start, stepName, retErr) @@ -412,24 +505,9 @@ func CheckEKSClusterNodesStatusTask(taskID string, stepName string) error { } func checkClusterNodesStatus(ctx context.Context, info *cloudprovider.CloudDependBasicInfo, // nolint - nodeGroupIDs []string) ([]string, []string, error) { - var totalNodesNum uint32 + totalNodesNum uint32) ([]string, []string, error) { var addSuccessNodes, addFailureNodes = make([]string, 0), make([]string, 0) taskID := cloudprovider.GetTaskIDFromContext(ctx) - for _, ngID := range nodeGroupIDs { - nodeGroup, err := actions.GetNodeGroupByGroupID(cloudprovider.GetStorageModel(), ngID) - if err != nil { - return nil, nil, fmt.Errorf("get nodegroup information failed, %s", err.Error()) - } - // 运行至此, 认为节点池已创建成功 - err = cloudprovider.UpdateNodeGroupStatus(ngID, common.StatusRunning) - if err != nil { - blog.Errorf("checkClusterNodesStatus[%s] UpdateNodeGroupStatus failed, %s", taskID, err.Error()) - return nil, nil, fmt.Errorf("UpdateNodeGroupStatus failed, %s", err.Error()) - } - totalNodesNum += nodeGroup.AutoScaling.DesiredSize - } - k8sOperator := clusterops.NewK8SOperator(options.GetGlobalCMOptions(), cloudprovider.GetStorageModel()) // wait node group state to normal diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/create_node_group.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/createNodeGroup.go similarity index 100% rename from bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/create_node_group.go rename to bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/createNodeGroup.go diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/delete_cluster.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/deleteCluster.go similarity index 100% rename from bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/delete_cluster.go rename to bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/deleteCluster.go diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/delete_node_group.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/deleteNodeGroup.go similarity index 100% rename from bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/delete_node_group.go rename to bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/deleteNodeGroup.go diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/import_cluster.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/importCluster.go similarity index 100% rename from bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/import_cluster.go rename to bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/importCluster.go diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/update_desired_nodes.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/updateDesiredNodes.go similarity index 100% rename from bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/update_desired_nodes.go rename to bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/tasks/updateDesiredNodes.go diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/utils.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/utils.go index 5aece38898..4383f0d8a3 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/utils.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/utils.go @@ -78,7 +78,7 @@ var ( } updateEKSNodesToDBStep = cloudprovider.StepInfo{ StepMethod: fmt.Sprintf("%s-UpdateEKSNodesToDBTask", cloudName), - StepName: "更新任务状态", + StepName: "更新节点信息", } // import cluster task diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/validate.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/validate.go index a63c874c44..b5e7f8e515 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/validate.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/validate.go @@ -261,8 +261,21 @@ func (c *CloudValidate) CreateClusterValidate(req *proto.CreateClusterReq, return fmt.Errorf("%s CreateClusterValidate lost valid crendential info", cloudName) } - if len(req.NodeGroups) == 0 { - return fmt.Errorf("%s CreateClusterValidate nodeGroup is empty", cloudName) + for _, ng := range req.NodeGroups { + if ng.AutoScaling != nil { + if ng.AutoScaling.DesiredSize > ng.AutoScaling.MaxSize { + return fmt.Errorf("%s CreateClusterValidate nodegroup[%s] desiredSize can't larger than maxSize", + cloudName, ng.NodeGroupID) + } + if ng.AutoScaling.DesiredSize < ng.AutoScaling.MinSize { + return fmt.Errorf("%s CreateClusterValidate nodegroup[%s] desiredSize can't less than minSize", + cloudName, ng.NodeGroupID) + } + if ng.AutoScaling.MinSize > ng.AutoScaling.MaxSize { + return fmt.Errorf("%s CreateClusterValidate nodegroup[%s] minSize can't larger than maxSize", + cloudName, ng.NodeGroupID) + } + } } // default not handle systemReinstall diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/vpc.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/vpcmgr.go similarity index 85% rename from bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/vpc.go rename to bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/vpcmgr.go index a4799cd5ac..0e57c44ad3 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api/vpc.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/vpcmgr.go @@ -10,19 +10,23 @@ * limitations under the License. */ -package api +package aws import ( "fmt" + "github.com/Tencent/bk-bcs/bcs-common/common/blog" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/remote/cidrtree" "net" "strings" "sync" - proto "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/api/clustermanager" - "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" - "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" + + proto "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/api/clustermanager" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/api" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/aws/business" ) var vpcMgr sync.Once @@ -30,7 +34,7 @@ var vpcMgr sync.Once func init() { vpcMgr.Do(func() { // init VPC manager - cloudprovider.InitVPCManager("aws", &VPCManager{}) + cloudprovider.InitVPCManager(cloudName, &VPCManager{}) }) } @@ -40,12 +44,12 @@ type VPCManager struct{} // CheckConflictInVpcCidr check cidr conflict func (vm *VPCManager) CheckConflictInVpcCidr(vpcID string, cidr string, opt *cloudprovider.CommonOption) ( []string, error) { - return nil, cloudprovider.ErrCloudNotImplemented + return business.CheckConflictFromVpc(opt, vpcID, cidr) } // ListVpcs list vpcs func (vm *VPCManager) ListVpcs(vpcID string, opt *cloudprovider.ListNetworksOption) ([]*proto.CloudVpc, error) { - client, err := GetEc2Client(&opt.CommonOption) + client, err := api.GetEc2Client(&opt.CommonOption) if err != nil { return nil, fmt.Errorf("ListVpcs GetEc2Client failed, err %s", err.Error()) } @@ -67,7 +71,8 @@ func (vm *VPCManager) ListVpcs(vpcID string, opt *cloudprovider.ListNetworksOpti results := make([]*proto.CloudVpc, 0) for _, v := range vpcs { - results = append(results, &proto.CloudVpc{ + + cloudVpc := &proto.CloudVpc{ Name: *v.VpcId, VpcId: *v.VpcId, Ipv4Cidr: func(v *ec2.Vpc) string { @@ -82,7 +87,25 @@ func (vm *VPCManager) ListVpcs(vpcID string, opt *cloudprovider.ListNetworksOpti } return "" }(), - }) + } + results = append(results, cloudVpc) + + // get free ipNet list + freeIPNets, err := business.GetFreeIPNets(&opt.CommonOption, vpcID) + if err != nil { + blog.Errorf("vpc GetFreeIPNets failed: %v", err) + continue + } + var ipCnt uint32 + for i := range freeIPNets { + ipNum, err := cidrtree.GetIPNum(freeIPNets[i]) + if err != nil { + blog.Errorf("vpc GetIPNum failed: %v", err) + continue + } + ipCnt += ipNum + } + cloudVpc.AllocateIpNum = ipCnt } return results, nil @@ -91,7 +114,7 @@ func (vm *VPCManager) ListVpcs(vpcID string, opt *cloudprovider.ListNetworksOpti // ListSubnets list vpc subnets func (vm *VPCManager) ListSubnets(vpcID string, zone string, opt *cloudprovider.ListNetworksOption) ( []*proto.Subnet, error) { - client, err := GetEc2Client(&opt.CommonOption) + client, err := api.GetEc2Client(&opt.CommonOption) if err != nil { return nil, fmt.Errorf("ListSubnets GetEc2Client failed, err %s", err.Error()) } @@ -144,7 +167,7 @@ func (vm *VPCManager) ListSubnets(vpcID string, zone string, opt *cloudprovider. // ListSecurityGroups list security groups func (vm *VPCManager) ListSecurityGroups(opt *cloudprovider.ListNetworksOption) ([]*proto.SecurityGroup, error) { - client, err := GetEc2Client(&opt.CommonOption) + client, err := api.GetEc2Client(&opt.CommonOption) if err != nil { return nil, fmt.Errorf("ListSecurityGroups GetEc2Client failed, err %s", err.Error()) } diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/azure/nodegroup.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/azure/nodegroup.go index a28af29b70..18fb03b9df 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/azure/nodegroup.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/azure/nodegroup.go @@ -142,6 +142,11 @@ func (ng *NodeGroup) UpdateNodeGroup(group *proto.NodeGroup, opt *cloudprovider. return nil, nil } +// RecommendNodeGroupConf recommends nodegroup configs +func (ng *NodeGroup) RecommendNodeGroupConf(opt *cloudprovider.CommonOption) ([]*proto.RecommendNodeGroupConf, error) { + return nil, cloudprovider.ErrCloudNotImplemented +} + // GetNodesInGroup 从云上拉取该节点池的所有节点 - get all nodes belong to NodeGroup func (ng *NodeGroup) GetNodesInGroup(group *proto.NodeGroup, opt *cloudprovider.CommonOption) ([]*proto.Node, error) { diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/azure/taskmgr.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/azure/taskmgr.go index 304c2e04ae..090cecd338 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/azure/taskmgr.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/azure/taskmgr.go @@ -24,6 +24,7 @@ import ( "github.com/pkg/errors" proto "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/api/clustermanager" + "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/actions" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/azure/tasks" "github.com/Tencent/bk-bcs/bcs-services/bcs-cluster-manager/internal/cloudprovider/common" @@ -136,6 +137,15 @@ func (t *Task) BuildCreateClusterTask(cls *proto.Cluster, opt *cloudprovider.Cre taskName := fmt.Sprintf(createClusterTaskTemplate, cls.ClusterID) task.CommonParams[cloudprovider.TaskNameKey.String()] = taskName + nodeGroups := make([]*proto.NodeGroup, 0) + for _, ngID := range opt.NodeGroupIDs { + nodeGroup, errGet := actions.GetNodeGroupByGroupID(cloudprovider.GetStorageModel(), ngID) + if errGet != nil { + return nil, fmt.Errorf("BuildCreateClusterTask GetNodeGroupByGroupID failed, %s", errGet.Error()) + } + nodeGroups = append(nodeGroups, nodeGroup) + } + // setting all steps details createClusterTask := &CreateClusterTaskOption{Cluster: cls, NodeGroupIDs: opt.NodeGroupIDs} @@ -168,10 +178,11 @@ func (t *Task) BuildCreateClusterTask(cls *proto.Cluster, opt *cloudprovider.Cre ClusterId: cls.ClusterID, BusinessId: cls.BusinessID, CloudArea: cls.GetClusterBasicSettings().GetArea(), - User: cls.GetNodeSettings().GetWorkerLogin().GetInitLoginUsername(), - Passwd: cls.GetNodeSettings().GetWorkerLogin().GetInitLoginPassword(), - KeyInfo: cls.GetNodeSettings().GetWorkerLogin().GetKeyPair(), AllowReviseCloudId: icommon.True, + // 多个节点池使用共同的用户名和密码和SSH密钥 + User: nodeGroups[0].GetLaunchTemplate().GetInitLoginUsername(), + Passwd: nodeGroups[0].GetLaunchTemplate().GetInitLoginPassword(), + KeyInfo: nodeGroups[0].GetLaunchTemplate().GetKeyPair(), }, cloudprovider.WithStepAllowSkip(true)) // step10: transfer host module diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/nodegroup.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/nodegroup.go index 0ec07863c6..4920200cda 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/nodegroup.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/blueking/nodegroup.go @@ -113,6 +113,11 @@ func (ng *NodeGroup) UpdateNodeGroup( return task, nil } +// RecommendNodeGroupConf recommends nodegroup configs +func (ng *NodeGroup) RecommendNodeGroupConf(opt *cloudprovider.CommonOption) ([]*proto.RecommendNodeGroupConf, error) { + return nil, cloudprovider.ErrCloudNotImplemented +} + // GetNodesInGroup get all nodes belong to NodeGroup func (ng *NodeGroup) GetNodesInGroup(group *proto.NodeGroup, opt *cloudprovider.CommonOption) ([]*proto.Node, error) { return nil, cloudprovider.ErrCloudNotImplemented diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/google/nodegroup.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/google/nodegroup.go index a5c9b8b96f..7f49c1398d 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/google/nodegroup.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/google/nodegroup.go @@ -123,6 +123,11 @@ func (ng *NodeGroup) generatePatchInstanceGroupManager(group *proto.NodeGroup) * return igm } +// RecommendNodeGroupConf recommends nodegroup configs +func (ng *NodeGroup) RecommendNodeGroupConf(opt *cloudprovider.CommonOption) ([]*proto.RecommendNodeGroupConf, error) { + return nil, cloudprovider.ErrCloudNotImplemented +} + // GetNodesInGroup get all nodes belong to NodeGroup func (ng *NodeGroup) GetNodesInGroup(group *proto.NodeGroup, opt *cloudprovider.CommonOption) ([]*proto.Node, error) { diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/huawei/nodegroup.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/huawei/nodegroup.go index 622d186a07..61076e3ccb 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/huawei/nodegroup.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/huawei/nodegroup.go @@ -113,6 +113,11 @@ func (ng *NodeGroup) UpdateNodeGroup(group *proto.NodeGroup, opt *cloudprovider. return nil, nil } +// RecommendNodeGroupConf recommends nodegroup configs +func (ng *NodeGroup) RecommendNodeGroupConf(opt *cloudprovider.CommonOption) ([]*proto.RecommendNodeGroupConf, error) { + return nil, cloudprovider.ErrCloudNotImplemented +} + // GetNodesInGroup 从云上拉取该节点池的所有节点 - get all nodes belong to NodeGroup func (ng *NodeGroup) GetNodesInGroup(group *proto.NodeGroup, opt *cloudprovider.CommonOption) ([]*proto.Node, error) { diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/interface.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/interface.go index 8bd7bb5794..fc246ed5fc 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/interface.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/interface.go @@ -362,6 +362,8 @@ type NodeGroupManager interface { DeleteNodeGroup(group *proto.NodeGroup, nodes []*proto.Node, opt *DeleteNodeGroupOption) (*proto.Task, error) // UpdateNodeGroup update specified nodegroup configuration UpdateNodeGroup(group *proto.NodeGroup, opt *UpdateNodeGroupOption) (*proto.Task, error) + // RecommendNodeGroupConf recommends nodegroup configs + RecommendNodeGroupConf(opt *CommonOption) ([]*proto.RecommendNodeGroupConf, error) // GetNodesInGroup get all nodes belong to NodeGroup GetNodesInGroup(group *proto.NodeGroup, opt *CommonOption) ([]*proto.Node, error) // GetNodesInGroupV2 get all nodes belong to NodeGroup diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/nodegroup.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/nodegroup.go index 520e09b767..7214c28fda 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/nodegroup.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/ladder/nodegroup.go @@ -149,6 +149,11 @@ func (ng *NodeGroup) UpdateNodeGroup( return task, nil } +// RecommendNodeGroupConf recommends nodegroup configs +func (ng *NodeGroup) RecommendNodeGroupConf(opt *cloudprovider.CommonOption) ([]*proto.RecommendNodeGroupConf, error) { + return nil, cloudprovider.ErrCloudNotImplemented +} + // GetNodesInGroup get all nodes belong to NodeGroup func (ng *NodeGroup) GetNodesInGroup(group *proto.NodeGroup, opt *cloudprovider.CommonOption) ([]*proto.Node, error) { // just get from cluster-manager storage no more implementation diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/qcloud-public/nodegroupmgr.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/qcloud-public/nodegroupmgr.go index fb7eec9d49..e1a8f8e4c1 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/qcloud-public/nodegroupmgr.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/qcloud-public/nodegroupmgr.go @@ -480,6 +480,11 @@ func transTkeNodeToNode(node *tke.Instance) *proto.NodeGroupNode { return n } +// RecommendNodeGroupConf recommends nodegroup configs +func (ng *NodeGroup) RecommendNodeGroupConf(opt *cloudprovider.CommonOption) ([]*proto.RecommendNodeGroupConf, error) { + return nil, cloudprovider.ErrCloudNotImplemented +} + // GetNodesInGroup get all nodes belong to NodeGroup func (ng *NodeGroup) GetNodesInGroup(group *proto.NodeGroup, opt *cloudprovider.CommonOption) ([]*proto.Node, error) { if group.ClusterID == "" || group.NodeGroupID == "" { diff --git a/bcs-services/bcs-cluster-manager/internal/cloudprovider/qcloud/nodegroupmgr.go b/bcs-services/bcs-cluster-manager/internal/cloudprovider/qcloud/nodegroupmgr.go index e31fccb60c..ef499d7628 100644 --- a/bcs-services/bcs-cluster-manager/internal/cloudprovider/qcloud/nodegroupmgr.go +++ b/bcs-services/bcs-cluster-manager/internal/cloudprovider/qcloud/nodegroupmgr.go @@ -481,6 +481,11 @@ func transTkeNodeToNode(node *tke.Instance) *proto.NodeGroupNode { return n } +// RecommendNodeGroupConf recommends nodegroup configs +func (ng *NodeGroup) RecommendNodeGroupConf(opt *cloudprovider.CommonOption) ([]*proto.RecommendNodeGroupConf, error) { + return nil, cloudprovider.ErrCloudNotImplemented +} + // GetNodesInGroup get all nodes belong to NodeGroup func (ng *NodeGroup) GetNodesInGroup(group *proto.NodeGroup, opt *cloudprovider.CommonOption) ([]*proto.Node, error) { if group.ClusterID == "" || group.NodeGroupID == "" { diff --git a/bcs-services/bcs-cluster-manager/internal/handler/nodegroup.go b/bcs-services/bcs-cluster-manager/internal/handler/nodegroup.go index 5c39e628b7..5fd68a516c 100644 --- a/bcs-services/bcs-cluster-manager/internal/handler/nodegroup.go +++ b/bcs-services/bcs-cluster-manager/internal/handler/nodegroup.go @@ -125,6 +125,21 @@ func (cm *ClusterManager) ListNodeGroup(ctx context.Context, return nil } +// RecommendNodeGroupConf implements interface cmproto.ClusterManagerServer +func (cm *ClusterManager) RecommendNodeGroupConf(ctx context.Context, + req *cmproto.RecommendNodeGroupConfReq, resp *cmproto.RecommendNodeGroupConfResp) error { + reqID, err := requestIDFromContext(ctx) + if err != nil { + return err + } + start := time.Now() + ca := nodegroup.NewRecommendNodeGroupConfAction(cm.model) + ca.Handle(ctx, req, resp) + metrics.ReportAPIRequestMetric("RecommendNodeGroupConf", "grpc", strconv.Itoa(int(resp.Code)), start) + blog.Infof("reqID: %s, action: RecommendNodeGroupConf, req %v, resp %v", reqID, req, resp) + return nil +} + // MoveNodesToGroup implements interface cmproto.ClusterManagerServer func (cm *ClusterManager) MoveNodesToGroup(ctx context.Context, req *cmproto.MoveNodesToGroupRequest, resp *cmproto.MoveNodesToGroupResponse) error {