mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Merge pull request #35998 from yujuhong/fix_enum
Automatic merge from submit-queue CRI: Rename container/sandbox states The enum constants are not namespaced. The shorter, unspecifc names are likely to cause naming conflicts in the future. Also replace "SandBox" with "Sandbox" in the API for consistency. /cc @kubernetes/sig-node
This commit is contained in:
		@@ -119,7 +119,7 @@ func (r *FakeRuntimeService) RunPodSandbox(config *runtimeApi.PodSandboxConfig)
 | 
			
		||||
	// fixed name from BuildSandboxName() for easily making fake sandboxes.
 | 
			
		||||
	podSandboxID := BuildSandboxName(config.Metadata)
 | 
			
		||||
	createdAt := time.Now().Unix()
 | 
			
		||||
	readyState := runtimeApi.PodSandBoxState_READY
 | 
			
		||||
	readyState := runtimeApi.PodSandboxState_SANDBOX_READY
 | 
			
		||||
	r.Sandboxes[podSandboxID] = &FakePodSandbox{
 | 
			
		||||
		PodSandboxStatus: runtimeApi.PodSandboxStatus{
 | 
			
		||||
			Id:        &podSandboxID,
 | 
			
		||||
@@ -143,7 +143,7 @@ func (r *FakeRuntimeService) StopPodSandbox(podSandboxID string) error {
 | 
			
		||||
 | 
			
		||||
	r.Called = append(r.Called, "StopPodSandbox")
 | 
			
		||||
 | 
			
		||||
	notReadyState := runtimeApi.PodSandBoxState_NOTREADY
 | 
			
		||||
	notReadyState := runtimeApi.PodSandboxState_SANDBOX_NOTREADY
 | 
			
		||||
	if s, ok := r.Sandboxes[podSandboxID]; ok {
 | 
			
		||||
		s.State = ¬ReadyState
 | 
			
		||||
	} else {
 | 
			
		||||
@@ -231,7 +231,7 @@ func (r *FakeRuntimeService) CreateContainer(podSandboxID string, config *runtim
 | 
			
		||||
	// fixed BuildContainerName() for easily making fake containers.
 | 
			
		||||
	containerID := BuildContainerName(config.Metadata, podSandboxID)
 | 
			
		||||
	createdAt := time.Now().Unix()
 | 
			
		||||
	createdState := runtimeApi.ContainerState_CREATED
 | 
			
		||||
	createdState := runtimeApi.ContainerState_CONTAINER_CREATED
 | 
			
		||||
	imageRef := config.Image.GetImage()
 | 
			
		||||
	r.Containers[containerID] = &FakeContainer{
 | 
			
		||||
		ContainerStatus: runtimeApi.ContainerStatus{
 | 
			
		||||
@@ -263,7 +263,7 @@ func (r *FakeRuntimeService) StartContainer(containerID string) error {
 | 
			
		||||
 | 
			
		||||
	// Set container to running.
 | 
			
		||||
	startedAt := time.Now().Unix()
 | 
			
		||||
	runningState := runtimeApi.ContainerState_RUNNING
 | 
			
		||||
	runningState := runtimeApi.ContainerState_CONTAINER_RUNNING
 | 
			
		||||
	c.State = &runningState
 | 
			
		||||
	c.StartedAt = &startedAt
 | 
			
		||||
 | 
			
		||||
@@ -283,7 +283,7 @@ func (r *FakeRuntimeService) StopContainer(containerID string, timeout int64) er
 | 
			
		||||
 | 
			
		||||
	// Set container to exited state.
 | 
			
		||||
	finishedAt := time.Now().Unix()
 | 
			
		||||
	exitedState := runtimeApi.ContainerState_EXITED
 | 
			
		||||
	exitedState := runtimeApi.ContainerState_CONTAINER_EXITED
 | 
			
		||||
	c.State = &exitedState
 | 
			
		||||
	c.FinishedAt = &finishedAt
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -152,60 +152,60 @@ func (x *Protocol) UnmarshalJSON(data []byte) error {
 | 
			
		||||
}
 | 
			
		||||
func (Protocol) EnumDescriptor() ([]byte, []int) { return fileDescriptorApi, []int{0} }
 | 
			
		||||
 | 
			
		||||
type PodSandBoxState int32
 | 
			
		||||
type PodSandboxState int32
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	PodSandBoxState_READY    PodSandBoxState = 0
 | 
			
		||||
	PodSandBoxState_NOTREADY PodSandBoxState = 1
 | 
			
		||||
	PodSandboxState_SANDBOX_READY    PodSandboxState = 0
 | 
			
		||||
	PodSandboxState_SANDBOX_NOTREADY PodSandboxState = 1
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var PodSandBoxState_name = map[int32]string{
 | 
			
		||||
	0: "READY",
 | 
			
		||||
	1: "NOTREADY",
 | 
			
		||||
var PodSandboxState_name = map[int32]string{
 | 
			
		||||
	0: "SANDBOX_READY",
 | 
			
		||||
	1: "SANDBOX_NOTREADY",
 | 
			
		||||
}
 | 
			
		||||
var PodSandBoxState_value = map[string]int32{
 | 
			
		||||
	"READY":    0,
 | 
			
		||||
	"NOTREADY": 1,
 | 
			
		||||
var PodSandboxState_value = map[string]int32{
 | 
			
		||||
	"SANDBOX_READY":    0,
 | 
			
		||||
	"SANDBOX_NOTREADY": 1,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x PodSandBoxState) Enum() *PodSandBoxState {
 | 
			
		||||
	p := new(PodSandBoxState)
 | 
			
		||||
func (x PodSandboxState) Enum() *PodSandboxState {
 | 
			
		||||
	p := new(PodSandboxState)
 | 
			
		||||
	*p = x
 | 
			
		||||
	return p
 | 
			
		||||
}
 | 
			
		||||
func (x PodSandBoxState) String() string {
 | 
			
		||||
	return proto.EnumName(PodSandBoxState_name, int32(x))
 | 
			
		||||
func (x PodSandboxState) String() string {
 | 
			
		||||
	return proto.EnumName(PodSandboxState_name, int32(x))
 | 
			
		||||
}
 | 
			
		||||
func (x *PodSandBoxState) UnmarshalJSON(data []byte) error {
 | 
			
		||||
	value, err := proto.UnmarshalJSONEnum(PodSandBoxState_value, data, "PodSandBoxState")
 | 
			
		||||
func (x *PodSandboxState) UnmarshalJSON(data []byte) error {
 | 
			
		||||
	value, err := proto.UnmarshalJSONEnum(PodSandboxState_value, data, "PodSandboxState")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	*x = PodSandBoxState(value)
 | 
			
		||||
	*x = PodSandboxState(value)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
func (PodSandBoxState) EnumDescriptor() ([]byte, []int) { return fileDescriptorApi, []int{1} }
 | 
			
		||||
func (PodSandboxState) EnumDescriptor() ([]byte, []int) { return fileDescriptorApi, []int{1} }
 | 
			
		||||
 | 
			
		||||
type ContainerState int32
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	ContainerState_CREATED ContainerState = 0
 | 
			
		||||
	ContainerState_RUNNING ContainerState = 1
 | 
			
		||||
	ContainerState_EXITED  ContainerState = 2
 | 
			
		||||
	ContainerState_UNKNOWN ContainerState = 3
 | 
			
		||||
	ContainerState_CONTAINER_CREATED ContainerState = 0
 | 
			
		||||
	ContainerState_CONTAINER_RUNNING ContainerState = 1
 | 
			
		||||
	ContainerState_CONTAINER_EXITED  ContainerState = 2
 | 
			
		||||
	ContainerState_CONTAINER_UNKNOWN ContainerState = 3
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var ContainerState_name = map[int32]string{
 | 
			
		||||
	0: "CREATED",
 | 
			
		||||
	1: "RUNNING",
 | 
			
		||||
	2: "EXITED",
 | 
			
		||||
	3: "UNKNOWN",
 | 
			
		||||
	0: "CONTAINER_CREATED",
 | 
			
		||||
	1: "CONTAINER_RUNNING",
 | 
			
		||||
	2: "CONTAINER_EXITED",
 | 
			
		||||
	3: "CONTAINER_UNKNOWN",
 | 
			
		||||
}
 | 
			
		||||
var ContainerState_value = map[string]int32{
 | 
			
		||||
	"CREATED": 0,
 | 
			
		||||
	"RUNNING": 1,
 | 
			
		||||
	"EXITED":  2,
 | 
			
		||||
	"UNKNOWN": 3,
 | 
			
		||||
	"CONTAINER_CREATED": 0,
 | 
			
		||||
	"CONTAINER_RUNNING": 1,
 | 
			
		||||
	"CONTAINER_EXITED":  2,
 | 
			
		||||
	"CONTAINER_UNKNOWN": 3,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (x ContainerState) Enum() *ContainerState {
 | 
			
		||||
@@ -823,7 +823,7 @@ func (m *Namespace) GetOptions() *NamespaceOption {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// LinuxSandBoxStatus contains status specific to Linux sandboxes.
 | 
			
		||||
// LinuxSandboxStatus contains status specific to Linux sandboxes.
 | 
			
		||||
type LinuxPodSandboxStatus struct {
 | 
			
		||||
	// Namespaces contains paths to the sandbox's namespaces.
 | 
			
		||||
	Namespaces       *Namespace `protobuf:"bytes,1,opt,name=namespaces" json:"namespaces,omitempty"`
 | 
			
		||||
@@ -849,7 +849,7 @@ type PodSandboxStatus struct {
 | 
			
		||||
	// Metadata of the sandbox.
 | 
			
		||||
	Metadata *PodSandboxMetadata `protobuf:"bytes,2,opt,name=metadata" json:"metadata,omitempty"`
 | 
			
		||||
	// State of the sandbox.
 | 
			
		||||
	State *PodSandBoxState `protobuf:"varint,3,opt,name=state,enum=runtime.PodSandBoxState" json:"state,omitempty"`
 | 
			
		||||
	State *PodSandboxState `protobuf:"varint,3,opt,name=state,enum=runtime.PodSandboxState" json:"state,omitempty"`
 | 
			
		||||
	// Creation timestamp of the sandbox in nanoseconds.
 | 
			
		||||
	CreatedAt *int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt" json:"created_at,omitempty"`
 | 
			
		||||
	// Network contains network status if network is handled by the runtime.
 | 
			
		||||
@@ -883,11 +883,11 @@ func (m *PodSandboxStatus) GetMetadata() *PodSandboxMetadata {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *PodSandboxStatus) GetState() PodSandBoxState {
 | 
			
		||||
func (m *PodSandboxStatus) GetState() PodSandboxState {
 | 
			
		||||
	if m != nil && m.State != nil {
 | 
			
		||||
		return *m.State
 | 
			
		||||
	}
 | 
			
		||||
	return PodSandBoxState_READY
 | 
			
		||||
	return PodSandboxState_SANDBOX_READY
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *PodSandboxStatus) GetCreatedAt() int64 {
 | 
			
		||||
@@ -949,7 +949,7 @@ type PodSandboxFilter struct {
 | 
			
		||||
	// ID of the sandbox.
 | 
			
		||||
	Id *string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
 | 
			
		||||
	// State of the sandbox.
 | 
			
		||||
	State *PodSandBoxState `protobuf:"varint,2,opt,name=state,enum=runtime.PodSandBoxState" json:"state,omitempty"`
 | 
			
		||||
	State *PodSandboxState `protobuf:"varint,2,opt,name=state,enum=runtime.PodSandboxState" json:"state,omitempty"`
 | 
			
		||||
	// LabelSelector to select matches.
 | 
			
		||||
	// Only api.MatchLabels is supported for now and the requirements
 | 
			
		||||
	// are ANDed. MatchExpressions is not supported yet.
 | 
			
		||||
@@ -969,11 +969,11 @@ func (m *PodSandboxFilter) GetId() string {
 | 
			
		||||
	return ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *PodSandboxFilter) GetState() PodSandBoxState {
 | 
			
		||||
func (m *PodSandboxFilter) GetState() PodSandboxState {
 | 
			
		||||
	if m != nil && m.State != nil {
 | 
			
		||||
		return *m.State
 | 
			
		||||
	}
 | 
			
		||||
	return PodSandBoxState_READY
 | 
			
		||||
	return PodSandboxState_SANDBOX_READY
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *PodSandboxFilter) GetLabelSelector() map[string]string {
 | 
			
		||||
@@ -1008,7 +1008,7 @@ type PodSandbox struct {
 | 
			
		||||
	// Metadata of the sandbox
 | 
			
		||||
	Metadata *PodSandboxMetadata `protobuf:"bytes,2,opt,name=metadata" json:"metadata,omitempty"`
 | 
			
		||||
	// The state of the PodSandbox
 | 
			
		||||
	State *PodSandBoxState `protobuf:"varint,3,opt,name=state,enum=runtime.PodSandBoxState" json:"state,omitempty"`
 | 
			
		||||
	State *PodSandboxState `protobuf:"varint,3,opt,name=state,enum=runtime.PodSandboxState" json:"state,omitempty"`
 | 
			
		||||
	// Creation timestamps of the sandbox in nanoseconds
 | 
			
		||||
	CreatedAt *int64 `protobuf:"varint,4,opt,name=created_at,json=createdAt" json:"created_at,omitempty"`
 | 
			
		||||
	// The labels of the PodSandbox
 | 
			
		||||
@@ -1038,11 +1038,11 @@ func (m *PodSandbox) GetMetadata() *PodSandboxMetadata {
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *PodSandbox) GetState() PodSandBoxState {
 | 
			
		||||
func (m *PodSandbox) GetState() PodSandboxState {
 | 
			
		||||
	if m != nil && m.State != nil {
 | 
			
		||||
		return *m.State
 | 
			
		||||
	}
 | 
			
		||||
	return PodSandBoxState_READY
 | 
			
		||||
	return PodSandboxState_SANDBOX_READY
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *PodSandbox) GetCreatedAt() int64 {
 | 
			
		||||
@@ -1727,7 +1727,7 @@ func (m *ContainerFilter) GetState() ContainerState {
 | 
			
		||||
	if m != nil && m.State != nil {
 | 
			
		||||
		return *m.State
 | 
			
		||||
	}
 | 
			
		||||
	return ContainerState_CREATED
 | 
			
		||||
	return ContainerState_CONTAINER_CREATED
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *ContainerFilter) GetPodSandboxId() string {
 | 
			
		||||
@@ -1832,7 +1832,7 @@ func (m *Container) GetState() ContainerState {
 | 
			
		||||
	if m != nil && m.State != nil {
 | 
			
		||||
		return *m.State
 | 
			
		||||
	}
 | 
			
		||||
	return ContainerState_CREATED
 | 
			
		||||
	return ContainerState_CONTAINER_CREATED
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *Container) GetCreatedAt() int64 {
 | 
			
		||||
@@ -1950,7 +1950,7 @@ func (m *ContainerStatus) GetState() ContainerState {
 | 
			
		||||
	if m != nil && m.State != nil {
 | 
			
		||||
		return *m.State
 | 
			
		||||
	}
 | 
			
		||||
	return ContainerState_CREATED
 | 
			
		||||
	return ContainerState_CONTAINER_CREATED
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (m *ContainerStatus) GetCreatedAt() int64 {
 | 
			
		||||
@@ -2677,7 +2677,7 @@ func init() {
 | 
			
		||||
	proto.RegisterType((*UpdateRuntimeConfigRequest)(nil), "runtime.UpdateRuntimeConfigRequest")
 | 
			
		||||
	proto.RegisterType((*UpdateRuntimeConfigResponse)(nil), "runtime.UpdateRuntimeConfigResponse")
 | 
			
		||||
	proto.RegisterEnum("runtime.Protocol", Protocol_name, Protocol_value)
 | 
			
		||||
	proto.RegisterEnum("runtime.PodSandBoxState", PodSandBoxState_name, PodSandBoxState_value)
 | 
			
		||||
	proto.RegisterEnum("runtime.PodSandboxState", PodSandboxState_name, PodSandboxState_value)
 | 
			
		||||
	proto.RegisterEnum("runtime.ContainerState", ContainerState_name, ContainerState_value)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -2706,7 +2706,7 @@ type RuntimeServiceClient interface {
 | 
			
		||||
	RemovePodSandbox(ctx context.Context, in *RemovePodSandboxRequest, opts ...grpc.CallOption) (*RemovePodSandboxResponse, error)
 | 
			
		||||
	// PodSandboxStatus returns the status of the PodSandbox.
 | 
			
		||||
	PodSandboxStatus(ctx context.Context, in *PodSandboxStatusRequest, opts ...grpc.CallOption) (*PodSandboxStatusResponse, error)
 | 
			
		||||
	// ListPodSandbox returns a list of SandBox.
 | 
			
		||||
	// ListPodSandbox returns a list of Sandbox.
 | 
			
		||||
	ListPodSandbox(ctx context.Context, in *ListPodSandboxRequest, opts ...grpc.CallOption) (*ListPodSandboxResponse, error)
 | 
			
		||||
	// CreateContainer creates a new container in specified PodSandbox
 | 
			
		||||
	CreateContainer(ctx context.Context, in *CreateContainerRequest, opts ...grpc.CallOption) (*CreateContainerResponse, error)
 | 
			
		||||
@@ -2912,7 +2912,7 @@ type RuntimeServiceServer interface {
 | 
			
		||||
	RemovePodSandbox(context.Context, *RemovePodSandboxRequest) (*RemovePodSandboxResponse, error)
 | 
			
		||||
	// PodSandboxStatus returns the status of the PodSandbox.
 | 
			
		||||
	PodSandboxStatus(context.Context, *PodSandboxStatusRequest) (*PodSandboxStatusResponse, error)
 | 
			
		||||
	// ListPodSandbox returns a list of SandBox.
 | 
			
		||||
	// ListPodSandbox returns a list of Sandbox.
 | 
			
		||||
	ListPodSandbox(context.Context, *ListPodSandboxRequest) (*ListPodSandboxResponse, error)
 | 
			
		||||
	// CreateContainer creates a new container in specified PodSandbox
 | 
			
		||||
	CreateContainer(context.Context, *CreateContainerRequest) (*CreateContainerResponse, error)
 | 
			
		||||
@@ -3503,199 +3503,201 @@ var _ImageService_serviceDesc = grpc.ServiceDesc{
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var fileDescriptorApi = []byte{
 | 
			
		||||
	// 3101 bytes of a gzipped FileDescriptorProto
 | 
			
		||||
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x1a, 0x4d, 0x77, 0xdb, 0xc6,
 | 
			
		||||
	0x31, 0x24, 0x45, 0x8a, 0x1c, 0x8a, 0x14, 0xbd, 0x92, 0x25, 0x9a, 0x8e, 0x6d, 0x19, 0x49, 0x9a,
 | 
			
		||||
	0x44, 0x49, 0xfc, 0x12, 0xb6, 0x4d, 0x9a, 0x2f, 0x27, 0x8a, 0xa4, 0xa4, 0x8a, 0x6d, 0x5a, 0x05,
 | 
			
		||||
	0xed, 0x34, 0x79, 0x39, 0xa0, 0x30, 0x01, 0x4b, 0xb0, 0x49, 0x00, 0x01, 0x40, 0xc5, 0xec, 0xb5,
 | 
			
		||||
	0x97, 0x1e, 0x7a, 0xe8, 0xb5, 0xb7, 0x1e, 0xfa, 0x5e, 0x0f, 0xbd, 0xf5, 0xbd, 0xbe, 0xd7, 0xff,
 | 
			
		||||
	0xd0, 0xd7, 0x1f, 0xd2, 0x43, 0xcf, 0xed, 0xb1, 0xb3, 0x1f, 0x58, 0x2c, 0xbe, 0x14, 0xc9, 0x79,
 | 
			
		||||
	0xaf, 0xf1, 0x0d, 0x3b, 0x3b, 0x3b, 0x33, 0x3b, 0x33, 0x3b, 0x3b, 0x33, 0x0b, 0x68, 0x99, 0xbe,
 | 
			
		||||
	0x73, 0xc3, 0x0f, 0xbc, 0xc8, 0x23, 0xcb, 0xc1, 0xdc, 0x8d, 0x9c, 0x99, 0xad, 0x6d, 0x43, 0xf7,
 | 
			
		||||
	0x0b, 0x3b, 0x08, 0x1d, 0xcf, 0xd5, 0xed, 0x6f, 0xe6, 0x76, 0x18, 0x91, 0x3e, 0x2c, 0x9f, 0x70,
 | 
			
		||||
	0x48, 0xbf, 0xb2, 0x55, 0x79, 0xa5, 0xa5, 0xc7, 0x43, 0xed, 0xcf, 0x15, 0x58, 0x95, 0xc8, 0xa1,
 | 
			
		||||
	0xef, 0xb9, 0xa1, 0x5d, 0x8e, 0x4d, 0xae, 0xc3, 0x8a, 0x60, 0x62, 0xb8, 0xe6, 0xcc, 0xee, 0x57,
 | 
			
		||||
	0xd9, 0x74, 0x5b, 0xc0, 0x46, 0x08, 0x22, 0x2f, 0xc3, 0x6a, 0x8c, 0x12, 0x13, 0xa9, 0x31, 0xac,
 | 
			
		||||
	0xae, 0x00, 0x0b, 0x6e, 0xe4, 0x06, 0xac, 0xc5, 0x88, 0xb8, 0x07, 0x89, 0xbc, 0xc4, 0x90, 0x2f,
 | 
			
		||||
	0x88, 0xa9, 0x1d, 0xdf, 0x11, 0xf8, 0xda, 0xd7, 0xd0, 0xda, 0x1b, 0x8d, 0x77, 0x3d, 0xf7, 0xa1,
 | 
			
		||||
	0x73, 0x44, 0x45, 0x0c, 0xed, 0x80, 0xae, 0x41, 0x11, 0x6b, 0x54, 0x44, 0x31, 0x24, 0x03, 0x68,
 | 
			
		||||
	0x86, 0xb6, 0x19, 0x4c, 0x8e, 0xed, 0x10, 0xc5, 0xa3, 0x53, 0x72, 0x4c, 0x57, 0x79, 0x7e, 0x84,
 | 
			
		||||
	0xc4, 0x42, 0x94, 0x89, 0xad, 0x12, 0x43, 0xed, 0x0f, 0x15, 0x68, 0x1f, 0x7a, 0x41, 0x74, 0xc7,
 | 
			
		||||
	0xf4, 0x7d, 0xc7, 0x3d, 0x22, 0x6f, 0x40, 0x93, 0x29, 0x75, 0xe2, 0x4d, 0x99, 0x0e, 0xba, 0xc3,
 | 
			
		||||
	0x0b, 0x37, 0x84, 0x48, 0x37, 0x0e, 0xc5, 0x84, 0x2e, 0x51, 0xc8, 0x4b, 0xd0, 0x9d, 0x78, 0x6e,
 | 
			
		||||
	0x64, 0x3a, 0xae, 0x1d, 0x18, 0x3e, 0xd2, 0x61, 0x9a, 0xa9, 0xeb, 0x1d, 0x09, 0xa5, 0xc4, 0xc9,
 | 
			
		||||
	0x65, 0x68, 0x1d, 0x7b, 0x61, 0xc4, 0x31, 0x6a, 0x0c, 0xa3, 0x49, 0x01, 0x6c, 0x72, 0x13, 0x96,
 | 
			
		||||
	0xd9, 0xa4, 0xe3, 0x0b, 0x1d, 0x34, 0xe8, 0xf0, 0xc0, 0xd7, 0x7e, 0x5f, 0x81, 0xfa, 0x1d, 0x0f,
 | 
			
		||||
	0x99, 0x67, 0xd8, 0x98, 0xd1, 0xb1, 0xb0, 0x8f, 0xc2, 0x06, 0x81, 0x09, 0x1b, 0x8a, 0xc1, 0x4d,
 | 
			
		||||
	0xc4, 0xd9, 0xd0, 0x49, 0xd4, 0x4f, 0x60, 0x9b, 0x96, 0xe7, 0x4e, 0x17, 0x4c, 0x84, 0xa6, 0x2e,
 | 
			
		||||
	0xc7, 0xd4, 0x76, 0xa1, 0x3d, 0x75, 0xdc, 0xf9, 0x13, 0x23, 0xb0, 0xa7, 0xe6, 0x03, 0x7b, 0xca,
 | 
			
		||||
	0x44, 0x69, 0xea, 0x5d, 0x01, 0xd6, 0x39, 0x54, 0x7b, 0x04, 0xab, 0xd4, 0xd8, 0xa1, 0x6f, 0x4e,
 | 
			
		||||
	0xec, 0xbb, 0x4c, 0x85, 0xd4, 0x35, 0x18, 0x53, 0xd7, 0x8e, 0xbe, 0xf5, 0x82, 0xc7, 0x4c, 0xb2,
 | 
			
		||||
	0xa6, 0xde, 0xa6, 0xb0, 0x11, 0x07, 0x91, 0x4b, 0xd0, 0xe4, 0x72, 0x39, 0x16, 0x13, 0xab, 0xa9,
 | 
			
		||||
	0xb3, 0x1d, 0x1f, 0x3a, 0x96, 0x9c, 0x72, 0xfc, 0x89, 0x90, 0x6a, 0x99, 0xef, 0x7e, 0xa2, 0xfd,
 | 
			
		||||
	0xa6, 0x02, 0x17, 0x6f, 0x53, 0xe6, 0x87, 0x9e, 0x35, 0x36, 0x5d, 0xeb, 0x81, 0xf7, 0x44, 0x38,
 | 
			
		||||
	0xc1, 0x0b, 0xd0, 0x99, 0x1c, 0x05, 0xde, 0xdc, 0xc7, 0x9d, 0x06, 0xb6, 0x1b, 0x09, 0x6d, 0xac,
 | 
			
		||||
	0x70, 0xe0, 0x21, 0x83, 0x91, 0x7d, 0xb8, 0xe0, 0xc6, 0xa2, 0x1a, 0xb1, 0xf5, 0x29, 0xf7, 0xf6,
 | 
			
		||||
	0xb0, 0x2f, 0x4d, 0x9a, 0xd9, 0x8c, 0xde, 0x73, 0xd3, 0x80, 0x50, 0x0b, 0x80, 0x24, 0xfc, 0xef,
 | 
			
		||||
	0xd8, 0x91, 0x69, 0x99, 0x91, 0x49, 0x08, 0x2c, 0xb1, 0x73, 0xc0, 0x19, 0xb3, 0x6f, 0xd2, 0x83,
 | 
			
		||||
	0xda, 0x5c, 0x6c, 0xb0, 0xa5, 0xd3, 0x4f, 0xf2, 0x3c, 0xb4, 0x24, 0x3d, 0x71, 0x18, 0x12, 0x00,
 | 
			
		||||
	0x75, 0x4a, 0x33, 0x8a, 0xec, 0x99, 0x1f, 0x31, 0x65, 0x77, 0xf4, 0x78, 0xa8, 0xfd, 0x7d, 0x09,
 | 
			
		||||
	0x7a, 0xb9, 0x4d, 0xbf, 0x03, 0xcd, 0x99, 0x60, 0xcf, 0xd8, 0xb6, 0x87, 0x97, 0x13, 0xcf, 0xcc,
 | 
			
		||||
	0x49, 0xa8, 0x4b, 0x64, 0x6a, 0x78, 0xaa, 0x52, 0xe5, 0xdc, 0xca, 0x31, 0xd5, 0xe4, 0xd4, 0x3b,
 | 
			
		||||
	0x32, 0x2c, 0x27, 0xb0, 0x27, 0x91, 0x17, 0x2c, 0x84, 0x94, 0x2b, 0x08, 0xdc, 0x8b, 0x61, 0xe4,
 | 
			
		||||
	0x2d, 0x00, 0xcb, 0x0d, 0x8d, 0x09, 0x93, 0x83, 0xc9, 0xda, 0x1e, 0x12, 0xc9, 0x5b, 0x9e, 0x4d,
 | 
			
		||||
	0xbd, 0x85, 0x58, 0x42, 0xd8, 0x77, 0xa1, 0x43, 0x7d, 0xdd, 0x98, 0xf1, 0x63, 0x15, 0xf6, 0xeb,
 | 
			
		||||
	0x78, 0xec, 0xda, 0xc3, 0x75, 0x45, 0x62, 0x79, 0xe6, 0xf4, 0x15, 0x3f, 0x19, 0x84, 0xe4, 0x43,
 | 
			
		||||
	0x68, 0x30, 0x5f, 0x0b, 0xfb, 0x0d, 0xb6, 0xe6, 0xa5, 0x82, 0x5d, 0x72, 0x2e, 0x37, 0x6e, 0x33,
 | 
			
		||||
	0xbc, 0x7d, 0x37, 0x0a, 0x16, 0xba, 0x58, 0x44, 0x6e, 0x43, 0xdb, 0x74, 0x5d, 0x2f, 0x32, 0xb9,
 | 
			
		||||
	0xc1, 0x97, 0x19, 0x8d, 0xed, 0x72, 0x1a, 0x3b, 0x09, 0x32, 0x27, 0xa4, 0x2e, 0x27, 0x3f, 0x81,
 | 
			
		||||
	0x3a, 0xf3, 0xff, 0x7e, 0x93, 0xed, 0xfa, 0xaa, 0xa4, 0x53, 0xe8, 0x98, 0x3a, 0x47, 0x1e, 0xbc,
 | 
			
		||||
	0x0b, 0x6d, 0x45, 0x34, 0xea, 0x18, 0x8f, 0xed, 0x85, 0xf0, 0x15, 0xfa, 0x49, 0xd6, 0xa1, 0x7e,
 | 
			
		||||
	0x62, 0x4e, 0xe7, 0xb1, 0x3d, 0xf8, 0xe0, 0xbd, 0xea, 0xcf, 0x2a, 0x83, 0x9b, 0xd0, 0xcb, 0x4a,
 | 
			
		||||
	0x74, 0x9e, 0xf5, 0xda, 0x01, 0xac, 0xeb, 0x73, 0x37, 0x11, 0x2c, 0xbe, 0x08, 0xde, 0x82, 0x86,
 | 
			
		||||
	0xb0, 0x1f, 0xf7, 0x9d, 0x4b, 0xa5, 0x1a, 0xd1, 0x05, 0xa2, 0xf6, 0x21, 0x5c, 0xcc, 0x90, 0x12,
 | 
			
		||||
	0xd7, 0xc4, 0x8b, 0xd0, 0xf5, 0x3d, 0xcb, 0x08, 0x39, 0xd8, 0x40, 0x9f, 0x17, 0xe7, 0xcf, 0x97,
 | 
			
		||||
	0xb8, 0x07, 0x16, 0x5d, 0x3e, 0x8e, 0x3c, 0x3f, 0x2f, 0xca, 0xd9, 0x96, 0xf7, 0x61, 0x23, 0xbb,
 | 
			
		||||
	0x9c, 0xb3, 0xd7, 0x3e, 0x82, 0x4d, 0xdd, 0x9e, 0x79, 0x27, 0xf6, 0xd3, 0x92, 0x1e, 0x40, 0x3f,
 | 
			
		||||
	0x4f, 0x20, 0x21, 0x9e, 0x40, 0xc7, 0x68, 0x86, 0x79, 0x78, 0x3e, 0xe2, 0xaf, 0xaa, 0x04, 0x44,
 | 
			
		||||
	0x00, 0xe4, 0x74, 0x48, 0x17, 0xaa, 0x18, 0xe3, 0xf9, 0x22, 0xfc, 0xd2, 0xbe, 0x82, 0xd6, 0x48,
 | 
			
		||||
	0x8d, 0x06, 0x6a, 0x04, 0xc5, 0x2b, 0x4a, 0x0c, 0xc9, 0x30, 0xb9, 0xbc, 0xbe, 0x2b, 0x7c, 0xc9,
 | 
			
		||||
	0x6b, 0xed, 0x56, 0x2e, 0x74, 0x0a, 0x19, 0x86, 0x00, 0x32, 0x02, 0x85, 0xc2, 0x17, 0x48, 0x9e,
 | 
			
		||||
	0x9e, 0xae, 0x60, 0x69, 0x7f, 0x4a, 0x85, 0x23, 0x65, 0x33, 0x96, 0xdc, 0x8c, 0x95, 0x0a, 0x4f,
 | 
			
		||||
	0xd5, 0xf3, 0x84, 0xa7, 0x1b, 0x50, 0x0f, 0x91, 0x24, 0x0f, 0x90, 0x5d, 0x65, 0x73, 0x62, 0xd5,
 | 
			
		||||
	0x27, 0x9c, 0xa5, 0xad, 0x73, 0x34, 0x72, 0x05, 0x60, 0x82, 0x17, 0x57, 0x64, 0x5b, 0x86, 0xc9,
 | 
			
		||||
	0x23, 0x67, 0x4d, 0x6f, 0x09, 0xc8, 0x4e, 0x44, 0xde, 0x4b, 0xf4, 0x58, 0x67, 0x62, 0x6c, 0x15,
 | 
			
		||||
	0x88, 0x91, 0xb2, 0x4b, 0xa2, 0x69, 0x79, 0xda, 0x1b, 0xa7, 0x9f, 0x76, 0xb1, 0x8e, 0x23, 0x2b,
 | 
			
		||||
	0x01, 0x6b, 0xb9, 0x34, 0x60, 0xf1, 0x15, 0x67, 0x09, 0x58, 0xcd, 0xd2, 0x80, 0x25, 0x68, 0x9c,
 | 
			
		||||
	0x1a, 0xb0, 0x7e, 0xc8, 0xd0, 0x73, 0x07, 0xfa, 0xf9, 0xa3, 0x23, 0x42, 0x06, 0x86, 0x9f, 0x90,
 | 
			
		||||
	0x41, 0x4e, 0x09, 0x3f, 0x62, 0x89, 0x40, 0xd4, 0xfe, 0x55, 0x51, 0xbd, 0xee, 0x53, 0x67, 0x1a,
 | 
			
		||||
	0xd9, 0x41, 0xce, 0xeb, 0xa4, 0xf3, 0x54, 0xcf, 0xe6, 0x3c, 0x63, 0xe8, 0x32, 0xb5, 0x1b, 0x98,
 | 
			
		||||
	0xd7, 0xb0, 0xdb, 0x8d, 0xe5, 0x83, 0xed, 0xe1, 0xeb, 0x05, 0xf2, 0x70, 0x96, 0xdc, 0x66, 0x63,
 | 
			
		||||
	0x81, 0xce, 0x35, 0xde, 0x99, 0xaa, 0xb0, 0xc1, 0xc7, 0x40, 0xf2, 0x48, 0xe7, 0x52, 0xdd, 0xe7,
 | 
			
		||||
	0xf4, 0xb8, 0xd2, 0x74, 0xb0, 0x20, 0x6c, 0x3f, 0x64, 0x62, 0x9c, 0xa2, 0x37, 0x2e, 0xa7, 0x2e,
 | 
			
		||||
	0x10, 0xb5, 0x3f, 0xd6, 0x00, 0x92, 0xc9, 0x67, 0xf6, 0x9c, 0xbe, 0x23, 0x4f, 0x0d, 0x4f, 0x0d,
 | 
			
		||||
	0xae, 0x15, 0x48, 0x51, 0x78, 0x5e, 0x3e, 0x4d, 0x9f, 0x17, 0x9e, 0x24, 0xbc, 0x58, 0xb4, 0xfa,
 | 
			
		||||
	0x99, 0x3d, 0x29, 0xbb, 0xb0, 0x91, 0x35, 0xb7, 0x38, 0x27, 0xaf, 0x42, 0xdd, 0xc1, 0x1c, 0x90,
 | 
			
		||||
	0x17, 0x37, 0xed, 0xe1, 0x5a, 0xc1, 0xb6, 0x74, 0x8e, 0xa1, 0x5d, 0x87, 0xd6, 0xc1, 0xcc, 0x3c,
 | 
			
		||||
	0xb2, 0xc7, 0xbe, 0x3d, 0xa1, 0xbc, 0x1c, 0x3a, 0x10, 0xfc, 0xf9, 0x40, 0x1b, 0x42, 0xf3, 0x96,
 | 
			
		||||
	0xbd, 0xf8, 0x82, 0xf2, 0x3d, 0xab, 0x7c, 0xda, 0x3f, 0x2a, 0xb0, 0xc9, 0xc2, 0xdd, 0x6e, 0x5c,
 | 
			
		||||
	0x5a, 0xa0, 0x70, 0xde, 0x3c, 0xc0, 0x8b, 0x80, 0x99, 0xd4, 0x9f, 0x1b, 0xbe, 0x1d, 0x38, 0x1e,
 | 
			
		||||
	0xf7, 0x29, 0x6a, 0x52, 0x7f, 0x7e, 0xc8, 0x00, 0xb4, 0xfc, 0xa0, 0xd3, 0xdf, 0xcc, 0x3d, 0xe1,
 | 
			
		||||
	0x5b, 0x35, 0xbd, 0x89, 0x80, 0x5f, 0xd0, 0x71, 0xbc, 0x36, 0x3c, 0xc6, 0xec, 0x3c, 0x64, 0x3e,
 | 
			
		||||
	0xc4, 0xd7, 0x8e, 0x19, 0x00, 0x1d, 0xfd, 0xe2, 0x0c, 0xef, 0xe4, 0x60, 0x61, 0x4c, 0x9d, 0x99,
 | 
			
		||||
	0x83, 0xf5, 0x80, 0x6b, 0x3c, 0x58, 0x44, 0x88, 0xc9, 0x1d, 0x87, 0xf0, 0xc9, 0xdb, 0x74, 0xee,
 | 
			
		||||
	0xc0, 0xfd, 0x84, 0xce, 0x10, 0x0d, 0x3a, 0x9e, 0x37, 0x33, 0xc2, 0x89, 0x17, 0x60, 0x25, 0x69,
 | 
			
		||||
	0x3d, 0x62, 0xf1, 0xbe, 0xa6, 0xb7, 0x11, 0x38, 0xa6, 0xb0, 0x1d, 0xeb, 0x91, 0x66, 0x42, 0x67,
 | 
			
		||||
	0xbc, 0xcf, 0xb6, 0x23, 0xaa, 0x15, 0x4c, 0xdc, 0xe7, 0xa1, 0x38, 0x4e, 0x98, 0xb8, 0xd3, 0x6f,
 | 
			
		||||
	0x0a, 0x0b, 0xbc, 0x69, 0xac, 0x07, 0xf6, 0x4d, 0x61, 0xd1, 0xc2, 0x8f, 0xb3, 0x76, 0xf6, 0x4d,
 | 
			
		||||
	0x15, 0x36, 0xb5, 0x4f, 0x44, 0x6d, 0x84, 0x0a, 0x63, 0x03, 0xcd, 0x02, 0xd8, 0x35, 0x7d, 0xf3,
 | 
			
		||||
	0x81, 0x33, 0x75, 0xa2, 0x05, 0x1a, 0xb0, 0x67, 0x5a, 0x96, 0x31, 0x89, 0x21, 0x8e, 0x1d, 0x17,
 | 
			
		||||
	0xaa, 0xab, 0x08, 0xdf, 0x55, 0xc0, 0xe4, 0x35, 0xb8, 0x60, 0x05, 0x9e, 0x9f, 0xc6, 0xe5, 0x95,
 | 
			
		||||
	0x6b, 0x8f, 0x4e, 0xa8, 0xc8, 0xda, 0x7f, 0x2b, 0xb0, 0x9e, 0x36, 0x8b, 0xc8, 0xb4, 0x6f, 0x42,
 | 
			
		||||
	0x2b, 0x88, 0x0d, 0x24, 0x82, 0xc4, 0x56, 0xfa, 0xde, 0xca, 0x1b, 0x52, 0x4f, 0x96, 0xe0, 0x39,
 | 
			
		||||
	0x5c, 0xc9, 0x08, 0x50, 0x49, 0x39, 0x5e, 0xb2, 0x37, 0x3d, 0x85, 0x48, 0x3e, 0x4a, 0x6a, 0xc6,
 | 
			
		||||
	0xa4, 0xb6, 0xa6, 0x6b, 0x37, 0xe4, 0xda, 0x94, 0xea, 0x65, 0x2d, 0x29, 0x2a, 0x2b, 0xf2, 0x23,
 | 
			
		||||
	0x61, 0x8a, 0x6c, 0x41, 0xc1, 0xd6, 0xdc, 0xc7, 0x19, 0x6e, 0x1e, 0xed, 0x4b, 0x68, 0x49, 0x50,
 | 
			
		||||
	0x5c, 0x64, 0x71, 0xdf, 0x63, 0x45, 0x16, 0x42, 0x8e, 0x44, 0xd9, 0x85, 0x10, 0xfc, 0xa4, 0xd5,
 | 
			
		||||
	0x2c, 0xea, 0xda, 0xa1, 0x5c, 0xcc, 0xa9, 0x81, 0x10, 0x5e, 0xf5, 0xd7, 0xf4, 0x6e, 0x02, 0xfe,
 | 
			
		||||
	0x0c, 0xa1, 0xda, 0x0e, 0x5c, 0x90, 0xca, 0x39, 0xb5, 0xb4, 0x53, 0x4a, 0xb5, 0x6a, 0xba, 0x54,
 | 
			
		||||
	0xfb, 0x4f, 0x1d, 0x56, 0xb3, 0x26, 0x79, 0x3b, 0x57, 0xa9, 0x0d, 0x12, 0x75, 0x66, 0xf9, 0x29,
 | 
			
		||||
	0x11, 0xf6, 0x95, 0xf8, 0x10, 0x57, 0x33, 0x1a, 0x91, 0xe7, 0x5c, 0x1c, 0x6c, 0x2a, 0xcf, 0xc4,
 | 
			
		||||
	0x9b, 0xcd, 0x30, 0x20, 0xc4, 0xfd, 0x0c, 0x31, 0xa4, 0xd2, 0x9b, 0xc1, 0x11, 0x3d, 0x36, 0x14,
 | 
			
		||||
	0xcc, 0xbe, 0xc9, 0x35, 0x68, 0xd3, 0xf4, 0x06, 0xab, 0x2b, 0x5a, 0xe8, 0xb1, 0x63, 0xd2, 0xd2,
 | 
			
		||||
	0x41, 0x80, 0xb0, 0xcc, 0x23, 0x2f, 0xc1, 0x92, 0xed, 0x9e, 0xc4, 0xb1, 0x34, 0x69, 0x78, 0xc4,
 | 
			
		||||
	0xc1, 0x43, 0x67, 0xd3, 0x68, 0xb0, 0xc6, 0x8c, 0xb6, 0x23, 0xe2, 0x44, 0xa7, 0x2b, 0x11, 0x59,
 | 
			
		||||
	0x97, 0x42, 0x17, 0xb3, 0xe4, 0x03, 0x19, 0xda, 0x9b, 0x99, 0xe0, 0x9c, 0xd1, 0x54, 0x61, 0x7c,
 | 
			
		||||
	0xbf, 0x95, 0x8e, 0xef, 0x2d, 0x46, 0xe2, 0xd5, 0x52, 0x12, 0xa7, 0xd7, 0x6f, 0x57, 0x01, 0xfc,
 | 
			
		||||
	0xc0, 0x39, 0x71, 0xa6, 0xf6, 0x91, 0x6d, 0xf5, 0x81, 0x35, 0x18, 0x14, 0x08, 0x6b, 0x5a, 0x89,
 | 
			
		||||
	0x26, 0x88, 0x11, 0x78, 0x5e, 0xf4, 0x30, 0xec, 0xb7, 0x79, 0xe3, 0x23, 0x06, 0xeb, 0x0c, 0x4a,
 | 
			
		||||
	0xfb, 0x14, 0xb4, 0x50, 0x66, 0x9d, 0x95, 0x15, 0x9e, 0x9f, 0xe3, 0x98, 0x35, 0x56, 0xd6, 0xe9,
 | 
			
		||||
	0xc5, 0x68, 0x39, 0x6e, 0xbf, 0xc3, 0x56, 0xf2, 0x01, 0x8d, 0x77, 0xec, 0xc3, 0xf0, 0x5c, 0x2c,
 | 
			
		||||
	0xfe, 0xbb, 0x6c, 0xaa, 0xc5, 0x20, 0x77, 0x11, 0x40, 0xbd, 0x36, 0x8a, 0x16, 0xfd, 0x55, 0x06,
 | 
			
		||||
	0xa7, 0x9f, 0xe4, 0xc7, 0x71, 0xf2, 0xd9, 0x63, 0xd6, 0xbf, 0x52, 0x72, 0x88, 0x9f, 0x99, 0x4a,
 | 
			
		||||
	0xf3, 0xaf, 0x15, 0xd8, 0xd8, 0x65, 0xd7, 0xb9, 0x12, 0x60, 0xce, 0x51, 0x29, 0x91, 0x37, 0x65,
 | 
			
		||||
	0x49, 0x9a, 0x2d, 0x6b, 0xb2, 0x9b, 0x15, 0x78, 0xe4, 0x63, 0xe8, 0xc6, 0x34, 0xc5, 0xca, 0xda,
 | 
			
		||||
	0x77, 0x15, 0xb3, 0x9d, 0x50, 0x1d, 0x6a, 0x1f, 0xc0, 0x66, 0x4e, 0x66, 0x71, 0xf5, 0x5e, 0xc7,
 | 
			
		||||
	0x40, 0x28, 0x7b, 0x6c, 0x52, 0xe4, 0xb6, 0x84, 0x61, 0x6d, 0xf7, 0x1e, 0x2d, 0x69, 0xcd, 0x20,
 | 
			
		||||
	0xca, 0x6d, 0xf8, 0x0c, 0x6b, 0x59, 0x3d, 0x9b, 0x5e, 0x2b, 0x4a, 0xce, 0x31, 0xac, 0xd3, 0x4a,
 | 
			
		||||
	0xf7, 0x29, 0x88, 0xd2, 0x38, 0x40, 0xb7, 0xed, 0xcd, 0x23, 0x11, 0xff, 0xe2, 0xa1, 0xb6, 0xc9,
 | 
			
		||||
	0xab, 0xef, 0x3c, 0xb7, 0xf7, 0x61, 0x83, 0x17, 0xbf, 0x4f, 0xb3, 0x89, 0x4b, 0x71, 0xe9, 0x9d,
 | 
			
		||||
	0xa7, 0xfb, 0xbb, 0xaa, 0x12, 0x08, 0x4b, 0xb2, 0xf5, 0x37, 0xd2, 0xd9, 0xfa, 0x66, 0xde, 0xe0,
 | 
			
		||||
	0xa9, 0x0c, 0x32, 0xef, 0x46, 0xb5, 0x02, 0x37, 0xd2, 0x73, 0x29, 0xfd, 0x12, 0x0b, 0x19, 0xaf,
 | 
			
		||||
	0xe5, 0xa9, 0xff, 0x1f, 0x33, 0xfa, 0x03, 0x9e, 0xd1, 0x4b, 0xd6, 0xb2, 0x8b, 0xf0, 0x66, 0x26,
 | 
			
		||||
	0xa3, 0xef, 0x97, 0x89, 0x29, 0x13, 0xfa, 0xdf, 0x2e, 0x41, 0x4b, 0xce, 0xe5, 0x74, 0x9a, 0x57,
 | 
			
		||||
	0x52, 0xb5, 0x40, 0x49, 0xea, 0x95, 0x54, 0x7b, 0x9a, 0x2b, 0x69, 0xe9, 0xbb, 0xae, 0x24, 0x4c,
 | 
			
		||||
	0xfe, 0xd8, 0x87, 0x11, 0xd8, 0x0f, 0xc5, 0x15, 0xd3, 0x64, 0x00, 0xdd, 0x7e, 0x98, 0x18, 0xbe,
 | 
			
		||||
	0x71, 0x26, 0xc3, 0xa7, 0x4b, 0x87, 0xe5, 0x6c, 0xe9, 0xf0, 0x76, 0xe6, 0x7e, 0xb9, 0x9a, 0x27,
 | 
			
		||||
	0x57, 0x78, 0xb3, 0xec, 0x17, 0xdd, 0x2c, 0x2f, 0x14, 0x2c, 0x7e, 0x66, 0x0b, 0x87, 0xdb, 0xbc,
 | 
			
		||||
	0x70, 0x50, 0xbd, 0x4a, 0x44, 0xaf, 0x21, 0xaa, 0x4c, 0x42, 0x45, 0xf5, 0x40, 0xf2, 0x5b, 0xd3,
 | 
			
		||||
	0x15, 0x2c, 0x1a, 0x0a, 0x52, 0xfa, 0x4f, 0x5a, 0x5d, 0x67, 0x08, 0x05, 0x7f, 0x51, 0x13, 0x9f,
 | 
			
		||||
	0x92, 0x9e, 0xd0, 0xdb, 0xb9, 0x5a, 0xf3, 0x6c, 0x5e, 0xf7, 0x46, 0xba, 0xd4, 0x3c, 0x9f, 0xbb,
 | 
			
		||||
	0xe4, 0x2a, 0x4d, 0x76, 0x13, 0x63, 0xe4, 0xe5, 0xd3, 0xbc, 0x48, 0x68, 0x09, 0x08, 0x4e, 0x63,
 | 
			
		||||
	0x76, 0xf4, 0xd0, 0x71, 0x9d, 0xf0, 0x98, 0xcf, 0x37, 0xd8, 0x3c, 0xc4, 0xa0, 0x1d, 0xf6, 0x78,
 | 
			
		||||
	0x63, 0x3f, 0xc1, 0x92, 0x64, 0xe2, 0x59, 0x36, 0x73, 0xc6, 0xba, 0xde, 0xa4, 0x80, 0x5d, 0x1c,
 | 
			
		||||
	0x27, 0x07, 0xa4, 0x79, 0xae, 0x03, 0xd2, 0xca, 0x1c, 0x90, 0x0d, 0x68, 0xa0, 0xbc, 0xa1, 0xe7,
 | 
			
		||||
	0xb2, 0x1c, 0xa5, 0xa5, 0x8b, 0x11, 0x0d, 0xf0, 0x33, 0x3b, 0x0c, 0x29, 0x83, 0x36, 0xcf, 0x3a,
 | 
			
		||||
	0xc4, 0x50, 0x49, 0xb2, 0x56, 0xca, 0x92, 0xac, 0x53, 0x9a, 0x4e, 0x99, 0x24, 0xab, 0x53, 0x96,
 | 
			
		||||
	0x64, 0x9d, 0xa5, 0xe7, 0xa4, 0xe4, 0x85, 0xdd, 0xd3, 0xf2, 0xc2, 0x1f, 0xf2, 0xe0, 0xdc, 0xc2,
 | 
			
		||||
	0x7b, 0x3f, 0xeb, 0xea, 0xe2, 0xe4, 0xbc, 0x99, 0x69, 0x4d, 0xf5, 0xcb, 0xb4, 0x20, 0x3b, 0x53,
 | 
			
		||||
	0xbf, 0x82, 0xd5, 0xfd, 0x27, 0xf6, 0x64, 0xbc, 0x70, 0x27, 0xe7, 0xb8, 0xab, 0x51, 0xdc, 0xc9,
 | 
			
		||||
	0xcc, 0x12, 0x05, 0x1e, 0xfd, 0x54, 0x6f, 0xef, 0x5a, 0xfa, 0xf6, 0x36, 0xa0, 0x97, 0x70, 0x10,
 | 
			
		||||
	0x72, 0x6e, 0x50, 0x39, 0x2d, 0x8a, 0x4c, 0x89, 0xaf, 0xe8, 0x62, 0x24, 0xe0, 0x76, 0x10, 0xb0,
 | 
			
		||||
	0x5d, 0x73, 0x38, 0x8e, 0xd2, 0x6e, 0x5b, 0x4b, 0xbb, 0xad, 0xf6, 0x08, 0xda, 0x94, 0xc1, 0xf7,
 | 
			
		||||
	0x12, 0x5f, 0xa4, 0xb0, 0xb5, 0x24, 0x85, 0x95, 0x99, 0xf0, 0x92, 0x92, 0x09, 0x6b, 0x5b, 0xb0,
 | 
			
		||||
	0xc2, 0x79, 0x89, 0x8d, 0xd0, 0x12, 0x2e, 0x98, 0xc6, 0x76, 0xc3, 0x4f, 0xed, 0xe7, 0xd0, 0xd9,
 | 
			
		||||
	0x89, 0x22, 0x73, 0x72, 0x7c, 0x0e, 0x79, 0x24, 0xaf, 0xaa, 0xca, 0x4b, 0x83, 0x6e, 0x4c, 0xa9,
 | 
			
		||||
	0x94, 0xdb, 0x88, 0xbe, 0xe8, 0x05, 0xd1, 0xa7, 0x5e, 0xf0, 0xad, 0x19, 0x58, 0xe7, 0xcb, 0x59,
 | 
			
		||||
	0xb1, 0xbc, 0x12, 0xaf, 0xbc, 0x35, 0xd4, 0x27, 0xfb, 0xd6, 0x5e, 0x86, 0xb5, 0x14, 0xbd, 0x52,
 | 
			
		||||
	0xc6, 0xef, 0x40, 0x9b, 0x45, 0x05, 0x91, 0x1d, 0xbd, 0xa2, 0xf6, 0x6c, 0x4e, 0x0b, 0x1d, 0xb4,
 | 
			
		||||
	0x4e, 0xa5, 0x61, 0x9f, 0xc1, 0x65, 0x8c, 0x7e, 0x3d, 0x93, 0x48, 0xac, 0xa7, 0xd7, 0x67, 0x92,
 | 
			
		||||
	0x88, 0xc7, 0x50, 0x67, 0xe0, 0x5c, 0x8c, 0xbe, 0x4c, 0xfb, 0x07, 0xbe, 0x67, 0x44, 0xe6, 0x91,
 | 
			
		||||
	0x7c, 0x37, 0xa7, 0x80, 0x7b, 0x38, 0x66, 0xcf, 0xfe, 0x74, 0xd2, 0x72, 0x90, 0x71, 0x14, 0x3f,
 | 
			
		||||
	0x9e, 0xb7, 0x29, 0x6c, 0x8f, 0x83, 0xa8, 0x46, 0x42, 0xe7, 0xd7, 0x3c, 0x41, 0x58, 0xd2, 0xd9,
 | 
			
		||||
	0x37, 0x66, 0xd9, 0x44, 0x95, 0x57, 0x28, 0x04, 0xc3, 0x04, 0xdb, 0x4e, 0x7c, 0x3d, 0x75, 0xd3,
 | 
			
		||||
	0x02, 0xeb, 0x62, 0x56, 0xbb, 0x09, 0x84, 0x6b, 0x20, 0x75, 0x25, 0x9d, 0x5d, 0x5b, 0xef, 0xc3,
 | 
			
		||||
	0x5a, 0x6a, 0xbd, 0x7c, 0xb5, 0x4a, 0x11, 0xc8, 0x72, 0x17, 0x8b, 0xff, 0x59, 0x01, 0xd8, 0x99,
 | 
			
		||||
	0x47, 0xc7, 0xa2, 0x94, 0x1f, 0x40, 0x93, 0xf6, 0x20, 0x94, 0x86, 0x80, 0x1c, 0xd3, 0x39, 0xdf,
 | 
			
		||||
	0x0c, 0x43, 0xac, 0xa3, 0xe3, 0x9c, 0x4b, 0x8e, 0x59, 0x19, 0x8e, 0x54, 0xe2, 0xf6, 0x11, 0xfd,
 | 
			
		||||
	0xa6, 0x8f, 0xf8, 0xfc, 0x5f, 0x05, 0xc3, 0xb4, 0xac, 0x00, 0xc3, 0xb8, 0xe8, 0x23, 0x75, 0x38,
 | 
			
		||||
	0x74, 0x87, 0x03, 0x29, 0x9a, 0x63, 0xd9, 0x28, 0x5a, 0xb4, 0x30, 0x22, 0xef, 0xb1, 0xed, 0x8a,
 | 
			
		||||
	0x6c, 0xaa, 0x13, 0x43, 0xef, 0x51, 0x20, 0x45, 0x0b, 0xec, 0x23, 0xd4, 0x72, 0x10, 0xa3, 0x35,
 | 
			
		||||
	0x38, 0x5a, 0x0c, 0x65, 0x68, 0xf4, 0x37, 0x8f, 0xde, 0xe1, 0x7c, 0x3a, 0xe5, 0x9b, 0x3c, 0xaf,
 | 
			
		||||
	0x2e, 0xb1, 0x3e, 0xe6, 0xfb, 0xc8, 0x76, 0x85, 0x12, 0x15, 0x89, 0xcd, 0x7d, 0xff, 0xd2, 0x6c,
 | 
			
		||||
	0x0d, 0x2e, 0x28, 0x82, 0x8a, 0xaa, 0x02, 0x7d, 0x81, 0x17, 0x1c, 0x4f, 0x27, 0xbf, 0x76, 0x11,
 | 
			
		||||
	0xd6, 0x52, 0xeb, 0x05, 0xd9, 0x6d, 0xe8, 0x88, 0x27, 0x20, 0x61, 0x67, 0x2c, 0xef, 0xe9, 0xe9,
 | 
			
		||||
	0x9f, 0x38, 0x56, 0xdc, 0x1a, 0x5c, 0xc6, 0xf1, 0x2e, 0x0e, 0x31, 0x5c, 0x74, 0x74, 0x4e, 0x5e,
 | 
			
		||||
	0xe0, 0x7e, 0x08, 0x5d, 0xf1, 0x60, 0x64, 0xa4, 0x9e, 0x54, 0x93, 0xbe, 0x57, 0x8a, 0xb6, 0xde,
 | 
			
		||||
	0x71, 0xd5, 0xa1, 0xf6, 0x35, 0x0c, 0xee, 0xfb, 0x16, 0x4d, 0x5f, 0x54, 0xaa, 0xf1, 0xd6, 0x90,
 | 
			
		||||
	0x78, 0xfc, 0x73, 0x4c, 0x09, 0xf1, 0xf4, 0xb2, 0x4e, 0xa0, 0x0e, 0xb5, 0x2b, 0x70, 0xb9, 0x90,
 | 
			
		||||
	0x38, 0xdf, 0xf7, 0xf6, 0xf3, 0xd0, 0x8c, 0x7f, 0x62, 0x21, 0xcb, 0x50, 0xbb, 0xb7, 0x7b, 0xd8,
 | 
			
		||||
	0x7b, 0x8e, 0x7e, 0xdc, 0xdf, 0x3b, 0xec, 0x55, 0xb6, 0xb7, 0x61, 0x35, 0xd3, 0xcb, 0x27, 0x2d,
 | 
			
		||||
	0xa8, 0xeb, 0xfb, 0x3b, 0x7b, 0x5f, 0x21, 0xda, 0x0a, 0x34, 0x47, 0x77, 0xef, 0xf1, 0x51, 0x65,
 | 
			
		||||
	0x7b, 0x17, 0xba, 0xe9, 0x64, 0x8c, 0xb4, 0x61, 0x79, 0x17, 0x67, 0xef, 0xed, 0xef, 0x21, 0x32,
 | 
			
		||||
	0x0e, 0xf4, 0xfb, 0xa3, 0xd1, 0xc1, 0xe8, 0xb3, 0x5e, 0x85, 0x00, 0x34, 0xf6, 0xbf, 0x3c, 0xa0,
 | 
			
		||||
	0x13, 0x55, 0x3a, 0x71, 0x7f, 0x74, 0x6b, 0x74, 0xf7, 0x97, 0xa3, 0x5e, 0x6d, 0xf8, 0x6f, 0x80,
 | 
			
		||||
	0xae, 0x10, 0x74, 0x8c, 0x67, 0xc0, 0x99, 0xd8, 0xe4, 0x26, 0x2c, 0xc7, 0xff, 0x09, 0x25, 0x69,
 | 
			
		||||
	0x5f, 0xfa, 0xa7, 0xa6, 0x41, 0x3f, 0x3f, 0x21, 0xec, 0xfa, 0x1c, 0x39, 0x64, 0xd6, 0x52, 0xde,
 | 
			
		||||
	0x3f, 0xae, 0xa8, 0x8a, 0xcb, 0x3d, 0xb0, 0x0c, 0xae, 0x96, 0x4d, 0x4b, 0x8a, 0x63, 0xe8, 0xa6,
 | 
			
		||||
	0x1f, 0xa2, 0x49, 0xb2, 0xa6, 0xf0, 0x81, 0x7b, 0x70, 0xad, 0x74, 0x5e, 0x12, 0xfd, 0x0a, 0x7a,
 | 
			
		||||
	0xd9, 0x27, 0x68, 0x92, 0xb4, 0x6d, 0x4b, 0x9e, 0xb7, 0x07, 0xd7, 0x4f, 0xc1, 0x50, 0x49, 0xe7,
 | 
			
		||||
	0x1e, 0x6b, 0xb7, 0xca, 0x9f, 0xdb, 0x72, 0xa4, 0xcb, 0xde, 0xf0, 0xb8, 0x2a, 0xd2, 0xef, 0x16,
 | 
			
		||||
	0x44, 0x7d, 0x22, 0x2d, 0x78, 0xbf, 0x52, 0x54, 0x51, 0xfc, 0xe0, 0x81, 0x44, 0xbf, 0xc0, 0x3a,
 | 
			
		||||
	0x22, 0xdd, 0x92, 0x21, 0xc9, 0xaa, 0xe2, 0x06, 0xd3, 0x60, 0xab, 0x1c, 0x21, 0x6d, 0x37, 0xb5,
 | 
			
		||||
	0xe1, 0x92, 0xb2, 0x5b, 0x41, 0x17, 0x27, 0x65, 0xb7, 0xc2, 0x4e, 0x0d, 0x73, 0xaf, 0x54, 0x5b,
 | 
			
		||||
	0x45, 0x71, 0xaf, 0xa2, 0x1e, 0xce, 0xe0, 0x6a, 0xd9, 0xb4, 0xba, 0xfd, 0x4c, 0x4b, 0x45, 0xd9,
 | 
			
		||||
	0x7e, 0x71, 0xa7, 0x66, 0xb0, 0x55, 0x8e, 0x90, 0xb5, 0x55, 0x52, 0x2a, 0x66, 0x6c, 0x95, 0xeb,
 | 
			
		||||
	0x4c, 0x64, 0x6c, 0x95, 0xaf, 0x31, 0x85, 0xad, 0x32, 0x35, 0xdf, 0xb5, 0xd2, 0x74, 0x39, 0x6f,
 | 
			
		||||
	0xab, 0xe2, 0x0c, 0x1c, 0xe9, 0xee, 0x40, 0x33, 0xce, 0x77, 0x49, 0x72, 0xba, 0x33, 0x49, 0xf6,
 | 
			
		||||
	0xe0, 0x52, 0xc1, 0x8c, 0x24, 0xf1, 0x53, 0x58, 0xa2, 0x50, 0xb2, 0x9e, 0x42, 0x8a, 0x97, 0x5e,
 | 
			
		||||
	0xcc, 0x40, 0xe5, 0xb2, 0xf7, 0xa1, 0xc1, 0x13, 0x46, 0x92, 0x44, 0xd8, 0x54, 0x2e, 0x3a, 0xd8,
 | 
			
		||||
	0xcc, 0xc1, 0xe5, 0xe2, 0xcf, 0xf9, 0xbf, 0x83, 0x22, 0xf3, 0x23, 0x97, 0x53, 0x7f, 0x37, 0xa5,
 | 
			
		||||
	0xf3, 0xcb, 0xc1, 0xf3, 0xc5, 0x93, 0x92, 0xd6, 0x03, 0x58, 0x2b, 0x88, 0xdc, 0x24, 0x69, 0x4f,
 | 
			
		||||
	0x94, 0x5f, 0x1a, 0x83, 0x17, 0x4f, 0x47, 0x8a, 0x79, 0x0c, 0xff, 0x56, 0x85, 0x15, 0x7e, 0x45,
 | 
			
		||||
	0x8a, 0x68, 0xfb, 0x19, 0x40, 0x92, 0xa8, 0x91, 0x41, 0xca, 0x01, 0x52, 0xd9, 0xe6, 0xe0, 0x72,
 | 
			
		||||
	0xe1, 0x9c, 0xaa, 0x09, 0x25, 0xe7, 0x52, 0x34, 0x91, 0xcf, 0xe4, 0x14, 0x4d, 0x14, 0xa4, 0x69,
 | 
			
		||||
	0x48, 0x6b, 0x0f, 0x5a, 0x32, 0x11, 0x20, 0x4a, 0xfe, 0x90, 0xc9, 0x62, 0x06, 0x83, 0xa2, 0x29,
 | 
			
		||||
	0x55, 0x22, 0xe5, 0xe6, 0x57, 0x24, 0xca, 0xe7, 0x13, 0x8a, 0x44, 0x45, 0xc9, 0xc2, 0x73, 0xff,
 | 
			
		||||
	0x0b, 0x00, 0x00, 0xff, 0xff, 0x27, 0xd9, 0x1b, 0x77, 0x6c, 0x2b, 0x00, 0x00,
 | 
			
		||||
	// 3133 bytes of a gzipped FileDescriptorProto
 | 
			
		||||
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x3a, 0x4d, 0x73, 0x1b, 0xc7,
 | 
			
		||||
	0xb1, 0x04, 0xc0, 0x0f, 0xa0, 0x41, 0x80, 0xe0, 0x90, 0x22, 0x21, 0xd0, 0x92, 0xa8, 0xb5, 0x65,
 | 
			
		||||
	0x4b, 0xb2, 0xad, 0xb2, 0xf0, 0xde, 0xb3, 0x9e, 0x65, 0x4b, 0x36, 0x4c, 0xd2, 0x0e, 0x2d, 0x09,
 | 
			
		||||
	0x62, 0x06, 0x92, 0x63, 0x97, 0x0f, 0x9b, 0x15, 0x76, 0x04, 0xae, 0x04, 0xec, 0xae, 0x67, 0x07,
 | 
			
		||||
	0xb4, 0x98, 0x6b, 0x2e, 0x39, 0xe4, 0x90, 0x6b, 0x6e, 0x39, 0xa4, 0xca, 0x87, 0xdc, 0x52, 0x95,
 | 
			
		||||
	0xaa, 0xfc, 0x87, 0x54, 0x7e, 0x48, 0x0e, 0x39, 0x27, 0xc7, 0xd4, 0x7c, 0xec, 0xec, 0xec, 0x07,
 | 
			
		||||
	0x68, 0x52, 0xae, 0x8a, 0x75, 0xdb, 0xe9, 0xe9, 0xee, 0xe9, 0xe9, 0xee, 0xe9, 0xe9, 0xee, 0x59,
 | 
			
		||||
	0xa8, 0x39, 0xa1, 0x77, 0x23, 0xa4, 0x01, 0x0b, 0xd0, 0x12, 0x9d, 0xfa, 0xcc, 0x9b, 0x10, 0xeb,
 | 
			
		||||
	0x3a, 0x34, 0xbf, 0x24, 0x34, 0xf2, 0x02, 0x1f, 0x93, 0x6f, 0xa7, 0x24, 0x62, 0xa8, 0x0d, 0x4b,
 | 
			
		||||
	0x47, 0x12, 0xd2, 0x2e, 0x6d, 0x97, 0xae, 0xd6, 0x70, 0x3c, 0xb4, 0xbe, 0x2f, 0xc1, 0x8a, 0x46,
 | 
			
		||||
	0x8e, 0xc2, 0xc0, 0x8f, 0xc8, 0x6c, 0x6c, 0x74, 0x19, 0x96, 0xd5, 0x22, 0xb6, 0xef, 0x4c, 0x48,
 | 
			
		||||
	0xbb, 0x2c, 0xa6, 0xeb, 0x0a, 0xd6, 0x77, 0x26, 0x04, 0xbd, 0x05, 0x2b, 0x31, 0x4a, 0xcc, 0xa4,
 | 
			
		||||
	0x22, 0xb0, 0x9a, 0x0a, 0xac, 0x56, 0x43, 0x37, 0x60, 0x2d, 0x46, 0x74, 0x42, 0x4f, 0x23, 0xcf,
 | 
			
		||||
	0x0b, 0xe4, 0x55, 0x35, 0xd5, 0x0b, 0x3d, 0x85, 0x6f, 0x7d, 0x03, 0xb5, 0xdd, 0xfe, 0x60, 0x27,
 | 
			
		||||
	0xf0, 0x9f, 0x7a, 0x23, 0x2e, 0x62, 0x44, 0x28, 0xa7, 0x69, 0x97, 0xb6, 0x2b, 0x5c, 0x44, 0x35,
 | 
			
		||||
	0x44, 0x1d, 0xa8, 0x46, 0xc4, 0xa1, 0xc3, 0x43, 0x12, 0xb5, 0xcb, 0x62, 0x4a, 0x8f, 0x39, 0x55,
 | 
			
		||||
	0x10, 0x32, 0x2f, 0xf0, 0xa3, 0x76, 0x45, 0x52, 0xa9, 0xa1, 0xf5, 0xfb, 0x12, 0xd4, 0x0f, 0x02,
 | 
			
		||||
	0xca, 0x1e, 0x38, 0x61, 0xe8, 0xf9, 0x23, 0xf4, 0x2e, 0x54, 0x85, 0x52, 0x87, 0xc1, 0x58, 0xe8,
 | 
			
		||||
	0xa0, 0xd9, 0x5d, 0xbd, 0xa1, 0x44, 0xba, 0x71, 0xa0, 0x26, 0xb0, 0x46, 0x41, 0x57, 0xa0, 0x39,
 | 
			
		||||
	0x0c, 0x7c, 0xe6, 0x78, 0x3e, 0xa1, 0x76, 0x18, 0x50, 0x26, 0x34, 0xb3, 0x80, 0x1b, 0x1a, 0xca,
 | 
			
		||||
	0x99, 0xa3, 0x2d, 0xa8, 0x1d, 0x06, 0x11, 0x93, 0x18, 0x15, 0x81, 0x51, 0xe5, 0x00, 0x31, 0xb9,
 | 
			
		||||
	0x09, 0x4b, 0x62, 0xd2, 0x0b, 0x95, 0x0e, 0x16, 0xf9, 0x70, 0x3f, 0xb4, 0x7e, 0x57, 0x82, 0x85,
 | 
			
		||||
	0x07, 0xc1, 0xd4, 0x67, 0x99, 0x65, 0x1c, 0x76, 0xa8, 0xec, 0x63, 0x2c, 0xe3, 0xb0, 0xc3, 0x64,
 | 
			
		||||
	0x19, 0x8e, 0x21, 0x4d, 0x24, 0x97, 0xe1, 0x93, 0x1d, 0xa8, 0x52, 0xe2, 0xb8, 0x81, 0x3f, 0x3e,
 | 
			
		||||
	0x16, 0x22, 0x54, 0xb1, 0x1e, 0x73, 0xdb, 0x45, 0x64, 0xec, 0xf9, 0xd3, 0x17, 0x36, 0x25, 0x63,
 | 
			
		||||
	0xe7, 0x09, 0x19, 0x0b, 0x51, 0xaa, 0xb8, 0xa9, 0xc0, 0x58, 0x42, 0xad, 0x67, 0xb0, 0xc2, 0x8d,
 | 
			
		||||
	0x1d, 0x85, 0xce, 0x90, 0x3c, 0x14, 0x2a, 0xe4, 0xae, 0x21, 0x16, 0xf5, 0x09, 0xfb, 0x2e, 0xa0,
 | 
			
		||||
	0xcf, 0x85, 0x64, 0x55, 0x5c, 0xe7, 0xb0, 0xbe, 0x04, 0xa1, 0xf3, 0x50, 0x95, 0x72, 0x79, 0xae,
 | 
			
		||||
	0x10, 0xab, 0x8a, 0xc5, 0x8e, 0x0f, 0x3c, 0x57, 0x4f, 0x79, 0xe1, 0x50, 0x49, 0xb5, 0x24, 0x77,
 | 
			
		||||
	0x3f, 0xb4, 0x7e, 0x5d, 0x82, 0x73, 0xf7, 0xf9, 0xe2, 0x07, 0x81, 0x3b, 0x70, 0x7c, 0xf7, 0x49,
 | 
			
		||||
	0xf0, 0x42, 0x39, 0xc1, 0xeb, 0xd0, 0x18, 0x8e, 0x68, 0x30, 0x0d, 0xed, 0xd0, 0xa1, 0xc4, 0x67,
 | 
			
		||||
	0x4a, 0x1b, 0xcb, 0x12, 0x78, 0x20, 0x60, 0x68, 0x0f, 0x56, 0xfd, 0x58, 0x54, 0x3b, 0xb6, 0x3e,
 | 
			
		||||
	0x5f, 0xbd, 0xde, 0x6d, 0x6b, 0x93, 0x66, 0x36, 0x83, 0x5b, 0x7e, 0x1a, 0x10, 0x59, 0x14, 0x50,
 | 
			
		||||
	0xb2, 0xfe, 0x03, 0xc2, 0x1c, 0xd7, 0x61, 0x0e, 0x42, 0x30, 0x2f, 0xce, 0x81, 0x5c, 0x58, 0x7c,
 | 
			
		||||
	0xa3, 0x16, 0x54, 0xa6, 0x6a, 0x83, 0x35, 0xcc, 0x3f, 0xd1, 0x6b, 0x50, 0xd3, 0xfc, 0xd4, 0x61,
 | 
			
		||||
	0x48, 0x00, 0xdc, 0x29, 0x1d, 0xc6, 0xc8, 0x24, 0x64, 0x42, 0xd9, 0x0d, 0x1c, 0x0f, 0xad, 0xbf,
 | 
			
		||||
	0xce, 0x43, 0x2b, 0xb7, 0xe9, 0x5b, 0x50, 0x9d, 0xa8, 0xe5, 0xc5, 0xb2, 0xf5, 0xee, 0x56, 0xe2,
 | 
			
		||||
	0x99, 0x39, 0x09, 0xb1, 0x46, 0xe6, 0x86, 0xe7, 0x2a, 0x35, 0xce, 0xad, 0x1e, 0x73, 0x4d, 0x8e,
 | 
			
		||||
	0x83, 0x91, 0xed, 0x7a, 0x94, 0x0c, 0x59, 0x40, 0x8f, 0x95, 0x94, 0xcb, 0xe3, 0x60, 0xb4, 0x1b,
 | 
			
		||||
	0xc3, 0xd0, 0x4d, 0x00, 0xd7, 0x8f, 0xec, 0xa1, 0x90, 0x43, 0xc8, 0x5a, 0xef, 0x22, 0xbd, 0xb6,
 | 
			
		||||
	0x3e, 0x9b, 0xb8, 0xe6, 0xfa, 0x91, 0x12, 0xf6, 0x03, 0x68, 0x70, 0x5f, 0xb7, 0x27, 0xf2, 0x58,
 | 
			
		||||
	0x45, 0xed, 0x85, 0xed, 0xca, 0xd5, 0x7a, 0x77, 0xdd, 0x90, 0x58, 0x9f, 0x39, 0xbc, 0x1c, 0x26,
 | 
			
		||||
	0x83, 0x08, 0xdd, 0x81, 0x45, 0xe1, 0x6b, 0x51, 0x7b, 0x51, 0xd0, 0x5c, 0x29, 0xd8, 0xa5, 0x5c,
 | 
			
		||||
	0xe5, 0xc6, 0x7d, 0x81, 0xb7, 0xe7, 0x33, 0x7a, 0x8c, 0x15, 0x11, 0xba, 0x0f, 0x75, 0xc7, 0xf7,
 | 
			
		||||
	0x03, 0xe6, 0x48, 0x83, 0x2f, 0x09, 0x1e, 0xd7, 0x67, 0xf3, 0xe8, 0x25, 0xc8, 0x92, 0x91, 0x49,
 | 
			
		||||
	0x8e, 0xfe, 0x17, 0x16, 0x84, 0xff, 0xb7, 0xab, 0x62, 0xd7, 0x17, 0x35, 0x9f, 0x42, 0xc7, 0xc4,
 | 
			
		||||
	0x12, 0xb9, 0xf3, 0x01, 0xd4, 0x0d, 0xd1, 0xb8, 0x63, 0x3c, 0x27, 0xc7, 0xca, 0x57, 0xf8, 0x27,
 | 
			
		||||
	0x5a, 0x87, 0x85, 0x23, 0x67, 0x3c, 0x8d, 0xed, 0x21, 0x07, 0xb7, 0xcb, 0xff, 0x5f, 0xea, 0xdc,
 | 
			
		||||
	0x85, 0x56, 0x56, 0xa2, 0xb3, 0xd0, 0x5b, 0xfb, 0xb0, 0x8e, 0xa7, 0x7e, 0x22, 0x58, 0x7c, 0x11,
 | 
			
		||||
	0xdc, 0x84, 0x45, 0x65, 0x3f, 0xe9, 0x3b, 0xe7, 0x67, 0x6a, 0x04, 0x2b, 0x44, 0xeb, 0x0e, 0x9c,
 | 
			
		||||
	0xcb, 0xb0, 0x52, 0xd7, 0xc4, 0x1b, 0xd0, 0x0c, 0x03, 0xd7, 0x8e, 0x24, 0xd8, 0xf6, 0xdc, 0xf8,
 | 
			
		||||
	0xfc, 0x85, 0x1a, 0x77, 0xdf, 0xe5, 0xe4, 0x03, 0x16, 0x84, 0x79, 0x51, 0x4e, 0x47, 0xde, 0x86,
 | 
			
		||||
	0x8d, 0x2c, 0xb9, 0x5c, 0xde, 0xfa, 0x18, 0x36, 0x31, 0x99, 0x04, 0x47, 0xe4, 0x65, 0x59, 0x77,
 | 
			
		||||
	0xa0, 0x9d, 0x67, 0x90, 0x30, 0x4f, 0xa0, 0x03, 0xe6, 0xb0, 0x69, 0x74, 0x36, 0xe6, 0xd7, 0x4c,
 | 
			
		||||
	0x06, 0x2a, 0x00, 0x4a, 0x3e, 0xa8, 0x09, 0x65, 0x2f, 0x54, 0x44, 0x65, 0x2f, 0xb4, 0xbe, 0x86,
 | 
			
		||||
	0x5a, 0xdf, 0x8c, 0x06, 0x66, 0x04, 0xad, 0xe1, 0x78, 0x88, 0xba, 0xc9, 0xe5, 0xf5, 0x43, 0xe1,
 | 
			
		||||
	0x4b, 0x5f, 0x6b, 0xf7, 0x72, 0xa1, 0x53, 0xc9, 0xd0, 0x05, 0xd0, 0x11, 0x28, 0x52, 0xbe, 0x80,
 | 
			
		||||
	0xf2, 0xfc, 0xb0, 0x81, 0x65, 0xfd, 0x31, 0x15, 0x8e, 0x8c, 0xcd, 0xb8, 0x7a, 0x33, 0x6e, 0x2a,
 | 
			
		||||
	0x3c, 0x95, 0xcf, 0x12, 0x9e, 0x6e, 0xc0, 0x42, 0xc4, 0x1c, 0x26, 0x03, 0x64, 0xd3, 0xd8, 0x5c,
 | 
			
		||||
	0x7a, 0x49, 0x82, 0x25, 0x1a, 0xba, 0x00, 0x30, 0xa4, 0xc4, 0x61, 0xc4, 0xb5, 0x1d, 0x19, 0x39,
 | 
			
		||||
	0x2b, 0xb8, 0xa6, 0x20, 0x3d, 0x86, 0x6e, 0x27, 0x7a, 0x5c, 0x10, 0x62, 0x6c, 0x17, 0x30, 0x4c,
 | 
			
		||||
	0xd9, 0x25, 0xd1, 0xb4, 0x3e, 0xed, 0x8b, 0x27, 0x9f, 0x76, 0x45, 0x27, 0x91, 0x8d, 0x80, 0xb5,
 | 
			
		||||
	0x34, 0x33, 0x60, 0x49, 0x8a, 0xd3, 0x04, 0xac, 0xea, 0xcc, 0x80, 0xa5, 0x78, 0x9c, 0x18, 0xb0,
 | 
			
		||||
	0x7e, 0xca, 0xd0, 0xf3, 0x00, 0xda, 0xf9, 0xa3, 0xa3, 0x42, 0xc6, 0x4d, 0x58, 0x8c, 0x04, 0xe4,
 | 
			
		||||
	0x84, 0xf0, 0xa3, 0x48, 0x14, 0xa2, 0xf5, 0x8f, 0x92, 0xe9, 0x75, 0x9f, 0x79, 0x63, 0x46, 0x68,
 | 
			
		||||
	0xce, 0xeb, 0xb4, 0xf3, 0x94, 0x4f, 0xe7, 0x3c, 0x03, 0x68, 0x0a, 0xb5, 0xdb, 0x11, 0x19, 0x8b,
 | 
			
		||||
	0xdb, 0x4d, 0xe4, 0x83, 0xf5, 0xee, 0x3b, 0x05, 0x84, 0x72, 0x49, 0x69, 0xb3, 0x81, 0x42, 0x97,
 | 
			
		||||
	0x1a, 0x6f, 0x8c, 0x4d, 0x58, 0xe7, 0x13, 0x40, 0x79, 0xa4, 0x33, 0xa9, 0xee, 0x0b, 0x7e, 0x5c,
 | 
			
		||||
	0x79, 0x3a, 0x58, 0x10, 0xb6, 0x9f, 0x0a, 0x31, 0x4e, 0xd0, 0x9b, 0x94, 0x13, 0x2b, 0x44, 0xeb,
 | 
			
		||||
	0x0f, 0x15, 0x80, 0x64, 0xf2, 0x95, 0x3d, 0xa7, 0xb7, 0xf4, 0xa9, 0x91, 0xa9, 0xc1, 0xa5, 0x02,
 | 
			
		||||
	0x7e, 0x85, 0xe7, 0xe5, 0xb3, 0xf4, 0x79, 0x91, 0x49, 0xc2, 0x1b, 0x45, 0xd4, 0xaf, 0xec, 0x49,
 | 
			
		||||
	0xd9, 0x81, 0x8d, 0xac, 0xb9, 0xd5, 0x39, 0xb9, 0x06, 0x0b, 0x1e, 0x23, 0x13, 0x59, 0xdc, 0xd4,
 | 
			
		||||
	0xbb, 0x6b, 0x05, 0xdb, 0xc2, 0x12, 0xc3, 0xba, 0x0c, 0xb5, 0xfd, 0x89, 0x33, 0x22, 0x83, 0x90,
 | 
			
		||||
	0x0c, 0xf9, 0x5a, 0x1e, 0x1f, 0xa8, 0xf5, 0xe5, 0xc0, 0xea, 0x42, 0xf5, 0x1e, 0x39, 0xfe, 0x92,
 | 
			
		||||
	0xaf, 0x7b, 0x5a, 0xf9, 0xac, 0xbf, 0x95, 0x60, 0x53, 0x84, 0xbb, 0x9d, 0xb8, 0xb4, 0xc0, 0x24,
 | 
			
		||||
	0x0a, 0xa6, 0x74, 0x48, 0x22, 0x61, 0xd2, 0x70, 0x6a, 0x87, 0x84, 0x7a, 0x81, 0xf4, 0x29, 0x6e,
 | 
			
		||||
	0xd2, 0x70, 0x7a, 0x20, 0x00, 0xbc, 0xfc, 0xe0, 0xd3, 0xdf, 0x4e, 0x03, 0xe5, 0x5b, 0x15, 0x5c,
 | 
			
		||||
	0x1d, 0x86, 0xd3, 0x9f, 0xf3, 0x71, 0x4c, 0x1b, 0x1d, 0x3a, 0x94, 0x44, 0xc2, 0x87, 0x24, 0xed,
 | 
			
		||||
	0x40, 0x00, 0xd0, 0x4d, 0x38, 0x37, 0x21, 0x93, 0x80, 0x1e, 0xdb, 0x63, 0x6f, 0xe2, 0x31, 0xdb,
 | 
			
		||||
	0xf3, 0xed, 0x27, 0xc7, 0x8c, 0x44, 0xca, 0x71, 0x90, 0x9c, 0xbc, 0xcf, 0xe7, 0xf6, 0xfd, 0x4f,
 | 
			
		||||
	0xf9, 0x0c, 0xb2, 0xa0, 0x11, 0x04, 0x13, 0x3b, 0x1a, 0x06, 0x94, 0xd8, 0x8e, 0xfb, 0x4c, 0xc4,
 | 
			
		||||
	0xfb, 0x0a, 0xae, 0x07, 0xc1, 0x64, 0xc0, 0x61, 0x3d, 0xf7, 0x99, 0xe5, 0x40, 0x63, 0xb0, 0x27,
 | 
			
		||||
	0xb6, 0xa3, 0xaa, 0x15, 0x04, 0xf3, 0xd3, 0x48, 0x1d, 0xa7, 0x1a, 0x16, 0xdf, 0x1c, 0x46, 0x83,
 | 
			
		||||
	0x71, 0xac, 0x07, 0xf1, 0xcd, 0x61, 0xec, 0x38, 0x8c, 0xb3, 0x76, 0xf1, 0xcd, 0x15, 0x36, 0x26,
 | 
			
		||||
	0x47, 0xaa, 0x36, 0xaa, 0x61, 0x39, 0xb0, 0x5c, 0x80, 0x1d, 0x27, 0x74, 0x9e, 0x78, 0x63, 0x8f,
 | 
			
		||||
	0x1d, 0xa3, 0x6b, 0xd0, 0x72, 0x5c, 0xd7, 0x1e, 0xc6, 0x10, 0x8f, 0xc4, 0x85, 0xea, 0x8a, 0xe3,
 | 
			
		||||
	0xba, 0x3b, 0x06, 0x18, 0xbd, 0x0d, 0xab, 0x2e, 0x0d, 0xc2, 0x34, 0xae, 0xac, 0x5c, 0x5b, 0x7c,
 | 
			
		||||
	0xc2, 0x44, 0xb6, 0xfe, 0x5d, 0x82, 0xf5, 0xb4, 0x59, 0x54, 0xa6, 0x7d, 0x17, 0x6a, 0x34, 0x36,
 | 
			
		||||
	0x90, 0x0a, 0x12, 0xdb, 0xe9, 0x7b, 0x2b, 0x6f, 0x48, 0x9c, 0x90, 0xa0, 0x5b, 0xb0, 0x9c, 0x11,
 | 
			
		||||
	0xa0, 0x94, 0x72, 0xbc, 0x64, 0x6f, 0x38, 0x85, 0x88, 0x3e, 0x4e, 0x6a, 0xc6, 0xa4, 0xb6, 0xe6,
 | 
			
		||||
	0xb4, 0x1b, 0x9a, 0x36, 0xa5, 0x7a, 0x5d, 0x4b, 0xaa, 0xca, 0x0a, 0xbd, 0xa9, 0x4c, 0x91, 0x2d,
 | 
			
		||||
	0x28, 0x04, 0xcd, 0xe3, 0x88, 0x50, 0x69, 0x1e, 0xeb, 0x2b, 0xa8, 0x69, 0x50, 0x5c, 0x64, 0x49,
 | 
			
		||||
	0xdf, 0x13, 0x45, 0x56, 0x0b, 0x2a, 0x23, 0x55, 0x76, 0x55, 0x30, 0xff, 0xe4, 0xd5, 0xac, 0xe3,
 | 
			
		||||
	0xba, 0x1e, 0x5f, 0xc5, 0x19, 0xdb, 0x23, 0xcf, 0x95, 0x55, 0x7f, 0x05, 0x37, 0x13, 0xf0, 0xe7,
 | 
			
		||||
	0x9e, 0x1b, 0x59, 0x3d, 0x58, 0xd5, 0xca, 0x39, 0xb1, 0xb4, 0x33, 0x4a, 0xb5, 0x72, 0xba, 0x54,
 | 
			
		||||
	0xfb, 0xd7, 0x02, 0xac, 0x64, 0x4d, 0xf2, 0x7e, 0xae, 0x52, 0xeb, 0x24, 0xea, 0xcc, 0xae, 0x67,
 | 
			
		||||
	0x44, 0xd8, 0xab, 0xf1, 0x21, 0x2e, 0x67, 0x34, 0xa2, 0xcf, 0xb9, 0x3a, 0xd8, 0x5c, 0x9e, 0x61,
 | 
			
		||||
	0x30, 0x99, 0x38, 0xbe, 0x1b, 0xf7, 0x33, 0xd4, 0x90, 0x4b, 0xef, 0xd0, 0x11, 0x3f, 0x36, 0x1c,
 | 
			
		||||
	0x2c, 0xbe, 0xd1, 0x25, 0xa8, 0xf3, 0xf4, 0xc6, 0xf3, 0x45, 0xa1, 0x27, 0x8e, 0x49, 0x0d, 0x83,
 | 
			
		||||
	0x02, 0xed, 0x7a, 0x14, 0x5d, 0x81, 0x79, 0xe2, 0x1f, 0xc5, 0xb1, 0x34, 0x69, 0x78, 0xc4, 0xc1,
 | 
			
		||||
	0x03, 0x8b, 0x69, 0xf4, 0x26, 0x2c, 0x4e, 0x82, 0xa9, 0xcf, 0xe2, 0x44, 0xa7, 0xa9, 0x11, 0x45,
 | 
			
		||||
	0x97, 0x02, 0xab, 0x59, 0xf4, 0x91, 0x0e, 0xed, 0xd5, 0x4c, 0x70, 0xce, 0x68, 0xaa, 0x30, 0xbe,
 | 
			
		||||
	0xdf, 0x4b, 0xc7, 0xf7, 0x9a, 0x60, 0x71, 0x6d, 0x26, 0x8b, 0x93, 0xeb, 0xb7, 0x8b, 0x00, 0x21,
 | 
			
		||||
	0xf5, 0x8e, 0xbc, 0x31, 0x19, 0x11, 0xb7, 0x0d, 0xa2, 0xc1, 0x60, 0x40, 0x44, 0xd3, 0x4a, 0x35,
 | 
			
		||||
	0x41, 0x6c, 0x1a, 0x04, 0xec, 0x69, 0xd4, 0xae, 0xcb, 0xc6, 0x47, 0x0c, 0xc6, 0x02, 0x8a, 0xce,
 | 
			
		||||
	0x43, 0x95, 0x17, 0xca, 0xa2, 0xb3, 0xb2, 0x2c, 0xf3, 0xf3, 0x71, 0x30, 0x12, 0x8d, 0x95, 0x75,
 | 
			
		||||
	0x7e, 0x31, 0xba, 0x9e, 0xdf, 0x6e, 0x08, 0x4a, 0x39, 0xe0, 0xf1, 0x4e, 0x7c, 0xd8, 0x81, 0x3f,
 | 
			
		||||
	0x24, 0xed, 0xa6, 0x98, 0xaa, 0x09, 0xc8, 0x43, 0x7f, 0x28, 0xc2, 0x31, 0x63, 0xc7, 0xed, 0x15,
 | 
			
		||||
	0x01, 0xe7, 0x9f, 0xe8, 0x7f, 0xe2, 0xe4, 0xb3, 0x25, 0xac, 0x7f, 0x61, 0xc6, 0x21, 0x7e, 0x65,
 | 
			
		||||
	0x2a, 0xcd, 0x3f, 0x97, 0x60, 0x63, 0x47, 0x5c, 0xe7, 0x46, 0x80, 0x39, 0x43, 0xa5, 0x84, 0xde,
 | 
			
		||||
	0xd3, 0x25, 0x69, 0xb6, 0xac, 0xc9, 0x6e, 0x56, 0xe1, 0xa1, 0x4f, 0xa0, 0x19, 0xf3, 0x54, 0x94,
 | 
			
		||||
	0x95, 0x1f, 0x2a, 0x66, 0x1b, 0x91, 0x39, 0xb4, 0x3e, 0x82, 0xcd, 0x9c, 0xcc, 0xea, 0xea, 0xbd,
 | 
			
		||||
	0x0c, 0xcb, 0x49, 0x8f, 0x4d, 0x8b, 0x5c, 0xd7, 0xb0, 0x7d, 0xd7, 0xba, 0xcd, 0x4b, 0x5a, 0x87,
 | 
			
		||||
	0xb2, 0xdc, 0x86, 0x4f, 0x41, 0x2b, 0xea, 0xd9, 0x34, 0xad, 0x2a, 0x39, 0x07, 0xb0, 0xce, 0x2b,
 | 
			
		||||
	0xdd, 0x97, 0x60, 0xca, 0xe3, 0x00, 0xdf, 0x76, 0x30, 0x65, 0x2a, 0xfe, 0xc5, 0x43, 0x6b, 0x53,
 | 
			
		||||
	0x56, 0xdf, 0xf9, 0xd5, 0x3e, 0x84, 0x0d, 0x59, 0xfc, 0xbe, 0xcc, 0x26, 0xce, 0xc7, 0xa5, 0x77,
 | 
			
		||||
	0x9e, 0xef, 0x6f, 0xcb, 0x46, 0x20, 0x9c, 0x91, 0xad, 0xbf, 0x9b, 0xce, 0xd6, 0x37, 0xf3, 0x06,
 | 
			
		||||
	0x4f, 0x65, 0x90, 0x79, 0x37, 0xaa, 0x14, 0xb8, 0x11, 0xce, 0xa5, 0xf4, 0xf3, 0x22, 0x64, 0xbc,
 | 
			
		||||
	0x9d, 0xe7, 0xfe, 0x5f, 0xcc, 0xe8, 0xf7, 0x65, 0x46, 0xaf, 0x97, 0xd6, 0x5d, 0x84, 0xf7, 0x32,
 | 
			
		||||
	0x19, 0x7d, 0x7b, 0x96, 0x98, 0x3a, 0xa1, 0xff, 0xcd, 0x3c, 0xd4, 0xf4, 0x5c, 0x4e, 0xa7, 0x79,
 | 
			
		||||
	0x25, 0x95, 0x0b, 0x94, 0x64, 0x5e, 0x49, 0x95, 0x97, 0xb9, 0x92, 0xe6, 0x7f, 0xe8, 0x4a, 0xda,
 | 
			
		||||
	0x82, 0x9a, 0xf8, 0xb0, 0x29, 0x79, 0xaa, 0xae, 0x98, 0xaa, 0x00, 0x60, 0xf2, 0x34, 0x31, 0xfc,
 | 
			
		||||
	0xe2, 0xa9, 0x0c, 0x9f, 0x2e, 0x1d, 0x96, 0xb2, 0xa5, 0xc3, 0xfb, 0x99, 0xfb, 0xe5, 0x62, 0x9e,
 | 
			
		||||
	0x5d, 0xe1, 0xcd, 0xb2, 0x57, 0x74, 0xb3, 0xbc, 0x5e, 0x40, 0xfc, 0xca, 0x16, 0x0e, 0xf7, 0x65,
 | 
			
		||||
	0xe1, 0x60, 0x7a, 0x95, 0x8a, 0x5e, 0x5d, 0x00, 0x7d, 0x50, 0xe3, 0xea, 0x01, 0xe5, 0xb7, 0x86,
 | 
			
		||||
	0x0d, 0x2c, 0x1e, 0x0a, 0x52, 0xfa, 0x4f, 0x5a, 0x5d, 0xa7, 0x08, 0x05, 0x7f, 0x32, 0x13, 0x9f,
 | 
			
		||||
	0x19, 0x3d, 0xa1, 0xf7, 0x73, 0xb5, 0xe6, 0xe9, 0xbc, 0xee, 0xdd, 0x74, 0xa9, 0x79, 0x36, 0x77,
 | 
			
		||||
	0xc9, 0x55, 0x9a, 0xe2, 0x26, 0x76, 0xa8, 0x9a, 0x96, 0x45, 0x42, 0x4d, 0x41, 0x7a, 0x8c, 0x67,
 | 
			
		||||
	0x47, 0x4f, 0x3d, 0xdf, 0x8b, 0x0e, 0xe5, 0xfc, 0xa2, 0x98, 0x87, 0x18, 0xd4, 0x13, 0x8f, 0x37,
 | 
			
		||||
	0xe4, 0x85, 0xc7, 0xec, 0x61, 0xe0, 0x12, 0xe1, 0x8c, 0x0b, 0xb8, 0xca, 0x01, 0x3b, 0x81, 0x4b,
 | 
			
		||||
	0x92, 0x03, 0x52, 0x3d, 0xd3, 0x01, 0xa9, 0x65, 0x0e, 0xc8, 0x06, 0x2c, 0x52, 0xe2, 0x44, 0x81,
 | 
			
		||||
	0x2f, 0x72, 0x94, 0x1a, 0x56, 0x23, 0x1e, 0xe0, 0x27, 0x24, 0x8a, 0xf8, 0x02, 0x75, 0x99, 0x75,
 | 
			
		||||
	0xa8, 0xa1, 0x91, 0x64, 0x2d, 0xcf, 0x4a, 0xb2, 0x4e, 0x68, 0x3a, 0x65, 0x92, 0xac, 0xc6, 0xac,
 | 
			
		||||
	0x24, 0xeb, 0x34, 0x3d, 0x27, 0x23, 0x2f, 0x6c, 0x9e, 0x94, 0x17, 0xfe, 0x94, 0x07, 0xe7, 0x1e,
 | 
			
		||||
	0x6c, 0xe6, 0x5c, 0x5d, 0x9d, 0x9c, 0xf7, 0x32, 0xad, 0xa9, 0xf6, 0x2c, 0x2d, 0xe8, 0xce, 0xd4,
 | 
			
		||||
	0x2f, 0x61, 0x65, 0xef, 0x05, 0x19, 0x0e, 0x8e, 0xfd, 0xe1, 0x19, 0xee, 0xea, 0x16, 0x54, 0x86,
 | 
			
		||||
	0x13, 0x57, 0x15, 0x78, 0xfc, 0xd3, 0xbc, 0xbd, 0x2b, 0xe9, 0xdb, 0xdb, 0x86, 0x56, 0xb2, 0x82,
 | 
			
		||||
	0x92, 0x73, 0x83, 0xcb, 0xe9, 0x72, 0x64, 0xce, 0x7c, 0x19, 0xab, 0x91, 0x82, 0x13, 0x4a, 0xc5,
 | 
			
		||||
	0xae, 0x25, 0x9c, 0x50, 0x9a, 0x76, 0xdb, 0x4a, 0xda, 0x6d, 0xad, 0x67, 0x50, 0xe7, 0x0b, 0xfc,
 | 
			
		||||
	0x28, 0xf1, 0x55, 0x0a, 0x5b, 0x49, 0x52, 0x58, 0x9d, 0x09, 0xcf, 0x1b, 0x99, 0xb0, 0xb5, 0x0d,
 | 
			
		||||
	0xcb, 0x72, 0x2d, 0xb5, 0x11, 0x5e, 0xc2, 0xd1, 0x71, 0x6c, 0xb7, 0x29, 0x1d, 0x5b, 0x3f, 0x83,
 | 
			
		||||
	0x46, 0x8f, 0x31, 0x67, 0x78, 0x78, 0x06, 0x79, 0xf4, 0x5a, 0x65, 0x73, 0x2d, 0x0b, 0x9a, 0x31,
 | 
			
		||||
	0xa7, 0x99, 0xab, 0xf5, 0x01, 0x1d, 0x04, 0x94, 0x7d, 0x16, 0xd0, 0xef, 0x1c, 0xea, 0x9e, 0x2d,
 | 
			
		||||
	0x67, 0x45, 0x30, 0xaf, 0x5e, 0x79, 0x2b, 0x57, 0x17, 0xb0, 0xf8, 0xb6, 0xde, 0x82, 0xb5, 0x14,
 | 
			
		||||
	0xbf, 0x99, 0x0b, 0xdf, 0x82, 0xba, 0x88, 0x0a, 0x2a, 0x3b, 0xba, 0x6a, 0xf6, 0x6c, 0x4e, 0x0a,
 | 
			
		||||
	0x1d, 0xbc, 0x4e, 0xe5, 0x61, 0x5f, 0xc0, 0x75, 0x8c, 0x7e, 0x27, 0x93, 0x48, 0xac, 0xa7, 0xe9,
 | 
			
		||||
	0x33, 0x49, 0xc4, 0x73, 0x58, 0x10, 0xe0, 0x5c, 0x8c, 0xde, 0x82, 0x1a, 0x25, 0x61, 0x60, 0x33,
 | 
			
		||||
	0x67, 0xa4, 0xdf, 0xcd, 0x39, 0xe0, 0x91, 0x33, 0x8a, 0xc4, 0xb3, 0x3f, 0x9f, 0x74, 0xbd, 0x11,
 | 
			
		||||
	0x89, 0x58, 0xfc, 0x78, 0x5e, 0xe7, 0xb0, 0x5d, 0x09, 0xe2, 0x1a, 0x89, 0xbc, 0x5f, 0xc9, 0x04,
 | 
			
		||||
	0x61, 0x1e, 0x8b, 0x6f, 0xeb, 0x23, 0x40, 0xa6, 0xbc, 0x4a, 0x21, 0x6f, 0xc2, 0xa2, 0xd8, 0x4e,
 | 
			
		||||
	0x7c, 0x3d, 0x35, 0xd3, 0x02, 0x63, 0x35, 0x6b, 0xdd, 0x05, 0x24, 0x35, 0x90, 0xba, 0x92, 0x4e,
 | 
			
		||||
	0xaf, 0xad, 0x0f, 0x61, 0x2d, 0x45, 0xaf, 0x5f, 0xad, 0x52, 0x0c, 0xb2, 0xab, 0x2b, 0xe2, 0xbf,
 | 
			
		||||
	0x97, 0x00, 0x7a, 0x53, 0x76, 0xa8, 0x4a, 0xf9, 0x0e, 0x54, 0xa7, 0x11, 0xa1, 0x46, 0x43, 0x40,
 | 
			
		||||
	0x8f, 0xf9, 0x5c, 0xe8, 0x44, 0xd1, 0x77, 0x01, 0x8d, 0x73, 0x2e, 0x3d, 0x16, 0x65, 0xf8, 0x94,
 | 
			
		||||
	0x1d, 0xc6, 0xed, 0x23, 0xfe, 0x8d, 0xae, 0x40, 0x53, 0xfe, 0xab, 0x60, 0x3b, 0xae, 0x4b, 0x49,
 | 
			
		||||
	0x14, 0xa9, 0x3e, 0x52, 0x43, 0x42, 0x7b, 0x12, 0xc8, 0xd1, 0x3c, 0x97, 0xf8, 0xcc, 0x63, 0xc7,
 | 
			
		||||
	0x36, 0x0b, 0x9e, 0x13, 0x5f, 0x65, 0x53, 0x8d, 0x18, 0xfa, 0x88, 0x03, 0x39, 0x1a, 0x25, 0x23,
 | 
			
		||||
	0x2f, 0x62, 0x34, 0x46, 0x5b, 0x94, 0x68, 0x31, 0x54, 0xa0, 0x59, 0xdf, 0x97, 0xa0, 0x75, 0x30,
 | 
			
		||||
	0x1d, 0x8f, 0xe5, 0x26, 0xcf, 0xaa, 0x4b, 0xf4, 0x96, 0xda, 0x47, 0xb6, 0x2b, 0x94, 0xa8, 0x48,
 | 
			
		||||
	0x6d, 0xee, 0xc7, 0x97, 0x66, 0x6b, 0xb0, 0x6a, 0x08, 0xaa, 0xaa, 0x8a, 0xbb, 0x80, 0x64, 0xc1,
 | 
			
		||||
	0xf1, 0x72, 0xf2, 0x5b, 0xe7, 0x60, 0x2d, 0x45, 0xaf, 0xd8, 0x5e, 0x87, 0x86, 0x7a, 0x02, 0x52,
 | 
			
		||||
	0x76, 0x3e, 0x0f, 0x55, 0x7e, 0xfa, 0x87, 0x9e, 0x1b, 0xb7, 0x06, 0x97, 0xc2, 0xc0, 0xdd, 0xf1,
 | 
			
		||||
	0x5c, 0x6a, 0xf5, 0xa1, 0x81, 0x25, 0x7b, 0x85, 0x7b, 0x07, 0x9a, 0xea, 0xc1, 0xc8, 0x4e, 0x3d,
 | 
			
		||||
	0xa9, 0x26, 0x7d, 0xaf, 0x14, 0x6f, 0xdc, 0xf0, 0xcd, 0xa1, 0xf5, 0x0d, 0x74, 0x1e, 0x87, 0x2e,
 | 
			
		||||
	0x4f, 0x5f, 0x4c, 0xae, 0xf1, 0xd6, 0xee, 0x40, 0xfc, 0xbb, 0xcc, 0x2c, 0xe6, 0x69, 0xb2, 0x06,
 | 
			
		||||
	0x35, 0x87, 0xd6, 0x05, 0xd8, 0x2a, 0x64, 0x2e, 0xf7, 0x7d, 0xfd, 0x35, 0xa8, 0xc6, 0x3f, 0xb1,
 | 
			
		||||
	0xa0, 0x25, 0xa8, 0x3c, 0xda, 0x39, 0x68, 0xcd, 0xf1, 0x8f, 0xc7, 0xbb, 0x07, 0xad, 0xd2, 0xf5,
 | 
			
		||||
	0xdb, 0xb0, 0x92, 0xe9, 0xe5, 0xa3, 0x55, 0x68, 0x0c, 0x7a, 0xfd, 0xdd, 0x4f, 0x1f, 0x7e, 0x65,
 | 
			
		||||
	0xe3, 0xbd, 0xde, 0xee, 0xd7, 0xad, 0x39, 0xb4, 0x0e, 0xad, 0x18, 0xd4, 0x7f, 0xf8, 0x48, 0x42,
 | 
			
		||||
	0x4b, 0xd7, 0x9f, 0x43, 0x33, 0x9d, 0x9c, 0xa1, 0x73, 0xb0, 0xba, 0xf3, 0xb0, 0xff, 0xa8, 0xb7,
 | 
			
		||||
	0xdf, 0xdf, 0xc3, 0xf6, 0x0e, 0xde, 0xeb, 0x3d, 0xda, 0xdb, 0x6d, 0xcd, 0xa5, 0xc1, 0xf8, 0x71,
 | 
			
		||||
	0xbf, 0xbf, 0xdf, 0xff, 0xbc, 0x55, 0xe2, 0x5c, 0x13, 0xf0, 0xde, 0x57, 0xfb, 0x1c, 0xb9, 0x9c,
 | 
			
		||||
	0x46, 0x7e, 0xdc, 0xbf, 0xd7, 0x7f, 0xf8, 0x8b, 0x7e, 0xab, 0xd2, 0xfd, 0x27, 0x40, 0x53, 0x6d,
 | 
			
		||||
	0x70, 0x40, 0xe8, 0x91, 0x37, 0x24, 0xe8, 0x2e, 0x2c, 0xc5, 0xff, 0x17, 0x25, 0xe9, 0x62, 0xfa,
 | 
			
		||||
	0x67, 0xa8, 0x4e, 0x3b, 0x3f, 0xa1, 0xfc, 0x61, 0x0e, 0x1d, 0x08, 0x2b, 0x1b, 0xef, 0x26, 0x17,
 | 
			
		||||
	0x4c, 0x85, 0xe7, 0x1e, 0x66, 0x3a, 0x17, 0x67, 0x4d, 0x6b, 0x8e, 0x03, 0x68, 0xa6, 0x1f, 0xb0,
 | 
			
		||||
	0x51, 0x42, 0x53, 0xf8, 0x30, 0xde, 0xb9, 0x34, 0x73, 0x5e, 0x33, 0xfd, 0x1a, 0x5a, 0xd9, 0xa7,
 | 
			
		||||
	0x6b, 0x94, 0xb4, 0x7b, 0x67, 0x3c, 0x8b, 0x77, 0x2e, 0x9f, 0x80, 0x61, 0xb2, 0xce, 0x3d, 0xf2,
 | 
			
		||||
	0x6e, 0xcf, 0x7e, 0xa6, 0xcb, 0xb1, 0x9e, 0xf5, 0xf6, 0x27, 0x55, 0x91, 0x7e, 0xef, 0x40, 0xe6,
 | 
			
		||||
	0xd3, 0x6a, 0xc1, 0xbb, 0x97, 0xa1, 0x8a, 0xe2, 0x87, 0x12, 0x6b, 0x0e, 0x7d, 0x09, 0x2b, 0x99,
 | 
			
		||||
	0x56, 0x0e, 0x4a, 0xa8, 0x8a, 0x1b, 0x53, 0x9d, 0xed, 0xd9, 0x08, 0x69, 0xbb, 0x99, 0x8d, 0x9a,
 | 
			
		||||
	0x94, 0xdd, 0x0a, 0xba, 0x3f, 0x29, 0xbb, 0x15, 0x76, 0x78, 0x84, 0x7b, 0xa5, 0xda, 0x31, 0x86,
 | 
			
		||||
	0x7b, 0x15, 0xf5, 0x7e, 0x3a, 0x17, 0x67, 0x4d, 0x9b, 0xdb, 0xcf, 0xb4, 0x62, 0x8c, 0xed, 0x17,
 | 
			
		||||
	0x77, 0x78, 0x3a, 0xdb, 0xb3, 0x11, 0xb2, 0xb6, 0x4a, 0x4a, 0xcc, 0x8c, 0xad, 0x72, 0x1d, 0x8d,
 | 
			
		||||
	0x8c, 0xad, 0xf2, 0xb5, 0xa9, 0xb2, 0x55, 0xa6, 0x56, 0xbc, 0x34, 0x33, 0xcd, 0xce, 0xdb, 0xaa,
 | 
			
		||||
	0x38, 0x73, 0xb7, 0xe6, 0x50, 0x0f, 0xaa, 0x71, 0x9e, 0x8c, 0x92, 0xd3, 0x9d, 0x49, 0xce, 0x3b,
 | 
			
		||||
	0xe7, 0x0b, 0x66, 0x34, 0x8b, 0xff, 0x83, 0x79, 0x0e, 0x45, 0xeb, 0x29, 0xa4, 0x98, 0xf4, 0x5c,
 | 
			
		||||
	0x06, 0xaa, 0xc9, 0x3e, 0x84, 0x45, 0x99, 0x68, 0xa2, 0x24, 0x32, 0xa7, 0x72, 0xd8, 0xce, 0x66,
 | 
			
		||||
	0x0e, 0xae, 0x89, 0xbf, 0x90, 0xff, 0x1c, 0xaa, 0x8c, 0x11, 0x6d, 0xa5, 0xfe, 0x8a, 0x4a, 0xe7,
 | 
			
		||||
	0xa5, 0x9d, 0xd7, 0x8a, 0x27, 0x35, 0xaf, 0x27, 0xb0, 0x56, 0x10, 0xf1, 0x51, 0xd2, 0xd6, 0x98,
 | 
			
		||||
	0x7d, 0xd9, 0x74, 0xde, 0x38, 0x19, 0x29, 0x5e, 0xa3, 0xfb, 0x97, 0x32, 0x2c, 0xcb, 0xab, 0x55,
 | 
			
		||||
	0x45, 0xdb, 0xcf, 0x01, 0x92, 0x04, 0x0f, 0x75, 0x52, 0x0e, 0x90, 0xca, 0x52, 0x3b, 0x5b, 0x85,
 | 
			
		||||
	0x73, 0xa6, 0x26, 0x8c, 0x5c, 0xcd, 0xd0, 0x44, 0x3e, 0x03, 0x34, 0x34, 0x51, 0x90, 0xde, 0x59,
 | 
			
		||||
	0x73, 0x68, 0x17, 0x6a, 0x3a, 0x81, 0x40, 0x46, 0xde, 0x91, 0xc9, 0x7e, 0x3a, 0x9d, 0xa2, 0x29,
 | 
			
		||||
	0x53, 0x22, 0x23, 0x63, 0x30, 0x24, 0xca, 0xe7, 0x21, 0x86, 0x44, 0x45, 0x49, 0xc6, 0xdc, 0x7f,
 | 
			
		||||
	0x02, 0x00, 0x00, 0xff, 0xff, 0x45, 0x43, 0x5d, 0x1f, 0xa4, 0x2b, 0x00, 0x00,
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,7 @@ service RuntimeService {
 | 
			
		||||
    rpc RemovePodSandbox(RemovePodSandboxRequest) returns (RemovePodSandboxResponse) {}
 | 
			
		||||
    // PodSandboxStatus returns the status of the PodSandbox.
 | 
			
		||||
    rpc PodSandboxStatus(PodSandboxStatusRequest) returns (PodSandboxStatusResponse) {}
 | 
			
		||||
    // ListPodSandbox returns a list of SandBox.
 | 
			
		||||
    // ListPodSandbox returns a list of Sandbox.
 | 
			
		||||
    rpc ListPodSandbox(ListPodSandboxRequest) returns (ListPodSandboxResponse) {}
 | 
			
		||||
 | 
			
		||||
    // CreateContainer creates a new container in specified PodSandbox
 | 
			
		||||
@@ -270,15 +270,15 @@ message Namespace {
 | 
			
		||||
    optional NamespaceOption options = 2;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// LinuxSandBoxStatus contains status specific to Linux sandboxes.
 | 
			
		||||
// LinuxSandboxStatus contains status specific to Linux sandboxes.
 | 
			
		||||
message LinuxPodSandboxStatus {
 | 
			
		||||
    // Namespaces contains paths to the sandbox's namespaces.
 | 
			
		||||
    optional Namespace namespaces = 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
enum PodSandBoxState {
 | 
			
		||||
    READY = 0;
 | 
			
		||||
    NOTREADY = 1;
 | 
			
		||||
enum PodSandboxState {
 | 
			
		||||
    SANDBOX_READY = 0;
 | 
			
		||||
    SANDBOX_NOTREADY = 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// PodSandboxStatus contains the status of the PodSandbox.
 | 
			
		||||
@@ -288,7 +288,7 @@ message PodSandboxStatus {
 | 
			
		||||
    // Metadata of the sandbox.
 | 
			
		||||
    optional PodSandboxMetadata metadata = 2;
 | 
			
		||||
    // State of the sandbox.
 | 
			
		||||
    optional PodSandBoxState state = 3;
 | 
			
		||||
    optional PodSandboxState state = 3;
 | 
			
		||||
    // Creation timestamp of the sandbox in nanoseconds.
 | 
			
		||||
    optional int64 created_at = 4;
 | 
			
		||||
    // Network contains network status if network is handled by the runtime.
 | 
			
		||||
@@ -313,7 +313,7 @@ message PodSandboxFilter {
 | 
			
		||||
    // ID of the sandbox.
 | 
			
		||||
    optional string id = 1;
 | 
			
		||||
    // State of the sandbox.
 | 
			
		||||
    optional PodSandBoxState state = 2;
 | 
			
		||||
    optional PodSandboxState state = 2;
 | 
			
		||||
    // LabelSelector to select matches.
 | 
			
		||||
    // Only api.MatchLabels is supported for now and the requirements
 | 
			
		||||
    // are ANDed. MatchExpressions is not supported yet.
 | 
			
		||||
@@ -333,7 +333,7 @@ message PodSandbox {
 | 
			
		||||
    // Metadata of the sandbox
 | 
			
		||||
    optional PodSandboxMetadata metadata = 2;
 | 
			
		||||
    // The state of the PodSandbox
 | 
			
		||||
    optional PodSandBoxState state = 3;
 | 
			
		||||
    optional PodSandboxState state = 3;
 | 
			
		||||
    // Creation timestamps of the sandbox in nanoseconds
 | 
			
		||||
    optional int64 created_at = 4;
 | 
			
		||||
    // The labels of the PodSandbox
 | 
			
		||||
@@ -529,10 +529,10 @@ message RemoveContainerRequest {
 | 
			
		||||
message RemoveContainerResponse {}
 | 
			
		||||
 | 
			
		||||
enum ContainerState {
 | 
			
		||||
    CREATED = 0;
 | 
			
		||||
    RUNNING = 1;
 | 
			
		||||
    EXITED  = 2;
 | 
			
		||||
    UNKNOWN = 3;
 | 
			
		||||
    CONTAINER_CREATED = 0;
 | 
			
		||||
    CONTAINER_RUNNING = 1;
 | 
			
		||||
    CONTAINER_EXITED  = 2;
 | 
			
		||||
    CONTAINER_UNKNOWN = 3;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// ContainerFilter is used to filter containers.
 | 
			
		||||
 
 | 
			
		||||
@@ -206,11 +206,11 @@ func ConvertPodStatusToRunningPod(runtimeName string, podStatus *PodStatus) Pod
 | 
			
		||||
// This is only needed because we need to return sandboxes as if they were
 | 
			
		||||
// kubecontainer.Containers to avoid substantial changes to PLEG.
 | 
			
		||||
// TODO: Remove this once it becomes obsolete.
 | 
			
		||||
func SandboxToContainerState(state runtimeApi.PodSandBoxState) ContainerState {
 | 
			
		||||
func SandboxToContainerState(state runtimeApi.PodSandboxState) ContainerState {
 | 
			
		||||
	switch state {
 | 
			
		||||
	case runtimeApi.PodSandBoxState_READY:
 | 
			
		||||
	case runtimeApi.PodSandboxState_SANDBOX_READY:
 | 
			
		||||
		return ContainerStateRunning
 | 
			
		||||
	case runtimeApi.PodSandBoxState_NOTREADY:
 | 
			
		||||
	case runtimeApi.PodSandboxState_SANDBOX_NOTREADY:
 | 
			
		||||
		return ContainerStateExited
 | 
			
		||||
	}
 | 
			
		||||
	return ContainerStateUnknown
 | 
			
		||||
 
 | 
			
		||||
@@ -100,13 +100,13 @@ func toRuntimeAPIContainer(c *dockertypes.Container) (*runtimeApi.Container, err
 | 
			
		||||
 | 
			
		||||
func toDockerContainerStatus(state runtimeApi.ContainerState) string {
 | 
			
		||||
	switch state {
 | 
			
		||||
	case runtimeApi.ContainerState_CREATED:
 | 
			
		||||
	case runtimeApi.ContainerState_CONTAINER_CREATED:
 | 
			
		||||
		return "created"
 | 
			
		||||
	case runtimeApi.ContainerState_RUNNING:
 | 
			
		||||
	case runtimeApi.ContainerState_CONTAINER_RUNNING:
 | 
			
		||||
		return "running"
 | 
			
		||||
	case runtimeApi.ContainerState_EXITED:
 | 
			
		||||
	case runtimeApi.ContainerState_CONTAINER_EXITED:
 | 
			
		||||
		return "exited"
 | 
			
		||||
	case runtimeApi.ContainerState_UNKNOWN:
 | 
			
		||||
	case runtimeApi.ContainerState_CONTAINER_UNKNOWN:
 | 
			
		||||
		fallthrough
 | 
			
		||||
	default:
 | 
			
		||||
		return "unknown"
 | 
			
		||||
@@ -118,24 +118,24 @@ func toRuntimeAPIContainerState(state string) runtimeApi.ContainerState {
 | 
			
		||||
	// we upgrade docker.
 | 
			
		||||
	switch {
 | 
			
		||||
	case strings.HasPrefix(state, statusRunningPrefix):
 | 
			
		||||
		return runtimeApi.ContainerState_RUNNING
 | 
			
		||||
		return runtimeApi.ContainerState_CONTAINER_RUNNING
 | 
			
		||||
	case strings.HasPrefix(state, statusExitedPrefix):
 | 
			
		||||
		return runtimeApi.ContainerState_EXITED
 | 
			
		||||
		return runtimeApi.ContainerState_CONTAINER_EXITED
 | 
			
		||||
	case strings.HasPrefix(state, statusCreatedPrefix):
 | 
			
		||||
		return runtimeApi.ContainerState_CREATED
 | 
			
		||||
		return runtimeApi.ContainerState_CONTAINER_CREATED
 | 
			
		||||
	default:
 | 
			
		||||
		return runtimeApi.ContainerState_UNKNOWN
 | 
			
		||||
		return runtimeApi.ContainerState_CONTAINER_UNKNOWN
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func toRuntimeAPISandboxState(state string) runtimeApi.PodSandBoxState {
 | 
			
		||||
func toRuntimeAPISandboxState(state string) runtimeApi.PodSandboxState {
 | 
			
		||||
	// Parse the state string in dockertypes.Container. This could break when
 | 
			
		||||
	// we upgrade docker.
 | 
			
		||||
	switch {
 | 
			
		||||
	case strings.HasPrefix(state, statusRunningPrefix):
 | 
			
		||||
		return runtimeApi.PodSandBoxState_READY
 | 
			
		||||
		return runtimeApi.PodSandboxState_SANDBOX_READY
 | 
			
		||||
	default:
 | 
			
		||||
		return runtimeApi.PodSandBoxState_NOTREADY
 | 
			
		||||
		return runtimeApi.PodSandboxState_SANDBOX_NOTREADY
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -30,10 +30,10 @@ func TestConvertDockerStatusToRuntimeAPIState(t *testing.T) {
 | 
			
		||||
		input    string
 | 
			
		||||
		expected runtimeApi.ContainerState
 | 
			
		||||
	}{
 | 
			
		||||
		{input: "Up 5 hours", expected: runtimeApi.ContainerState_RUNNING},
 | 
			
		||||
		{input: "Exited (0) 2 hours ago", expected: runtimeApi.ContainerState_EXITED},
 | 
			
		||||
		{input: "Created", expected: runtimeApi.ContainerState_CREATED},
 | 
			
		||||
		{input: "Random string", expected: runtimeApi.ContainerState_UNKNOWN},
 | 
			
		||||
		{input: "Up 5 hours", expected: runtimeApi.ContainerState_CONTAINER_RUNNING},
 | 
			
		||||
		{input: "Exited (0) 2 hours ago", expected: runtimeApi.ContainerState_CONTAINER_EXITED},
 | 
			
		||||
		{input: "Created", expected: runtimeApi.ContainerState_CONTAINER_CREATED},
 | 
			
		||||
		{input: "Random string", expected: runtimeApi.ContainerState_CONTAINER_UNKNOWN},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, test := range testCases {
 | 
			
		||||
 
 | 
			
		||||
@@ -327,7 +327,7 @@ func (ds *dockerService) ContainerStatus(containerID string) (*runtimeApi.Contai
 | 
			
		||||
	var reason, message string
 | 
			
		||||
	if r.State.Running {
 | 
			
		||||
		// Container is running.
 | 
			
		||||
		state = runtimeApi.ContainerState_RUNNING
 | 
			
		||||
		state = runtimeApi.ContainerState_CONTAINER_RUNNING
 | 
			
		||||
	} else {
 | 
			
		||||
		// Container is *not* running. We need to get more details.
 | 
			
		||||
		//    * Case 1: container has run and exited with non-zero finishedAt
 | 
			
		||||
@@ -336,7 +336,7 @@ func (ds *dockerService) ContainerStatus(containerID string) (*runtimeApi.Contai
 | 
			
		||||
		//              time, but a non-zero exit code.
 | 
			
		||||
		//    * Case 3: container has been created, but not started (yet).
 | 
			
		||||
		if !finishedAt.IsZero() { // Case 1
 | 
			
		||||
			state = runtimeApi.ContainerState_EXITED
 | 
			
		||||
			state = runtimeApi.ContainerState_CONTAINER_EXITED
 | 
			
		||||
			switch {
 | 
			
		||||
			case r.State.OOMKilled:
 | 
			
		||||
				// TODO: consider exposing OOMKilled via the runtimeAPI.
 | 
			
		||||
@@ -349,13 +349,13 @@ func (ds *dockerService) ContainerStatus(containerID string) (*runtimeApi.Contai
 | 
			
		||||
				reason = "Error"
 | 
			
		||||
			}
 | 
			
		||||
		} else if r.State.ExitCode != 0 { // Case 2
 | 
			
		||||
			state = runtimeApi.ContainerState_EXITED
 | 
			
		||||
			state = runtimeApi.ContainerState_CONTAINER_EXITED
 | 
			
		||||
			// Adjust finshedAt and startedAt time to createdAt time to avoid
 | 
			
		||||
			// the confusion.
 | 
			
		||||
			finishedAt, startedAt = createdAt, createdAt
 | 
			
		||||
			reason = "ContainerCannotRun"
 | 
			
		||||
		} else { // Case 3
 | 
			
		||||
			state = runtimeApi.ContainerState_CREATED
 | 
			
		||||
			state = runtimeApi.ContainerState_CONTAINER_CREATED
 | 
			
		||||
		}
 | 
			
		||||
		message = r.State.Error
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -62,7 +62,7 @@ func TestListContainers(t *testing.T) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	expected := []*runtimeApi.Container{}
 | 
			
		||||
	state := runtimeApi.ContainerState_RUNNING
 | 
			
		||||
	state := runtimeApi.ContainerState_CONTAINER_RUNNING
 | 
			
		||||
	var createdAt int64 = 0
 | 
			
		||||
	for i := range configs {
 | 
			
		||||
		// We don't care about the sandbox id; pass a bogus one.
 | 
			
		||||
@@ -105,7 +105,7 @@ func TestContainerStatus(t *testing.T) {
 | 
			
		||||
	var defaultTime time.Time
 | 
			
		||||
	dt := defaultTime.UnixNano()
 | 
			
		||||
	ct, st, ft := dt, dt, dt
 | 
			
		||||
	state := runtimeApi.ContainerState_CREATED
 | 
			
		||||
	state := runtimeApi.ContainerState_CONTAINER_CREATED
 | 
			
		||||
	// The following variables are not set in FakeDockerClient.
 | 
			
		||||
	imageRef := DockerImageIDPrefix + ""
 | 
			
		||||
	exitCode := int32(0)
 | 
			
		||||
@@ -149,7 +149,7 @@ func TestContainerStatus(t *testing.T) {
 | 
			
		||||
	// Advance the clock and start the container.
 | 
			
		||||
	fClock.SetTime(time.Now())
 | 
			
		||||
	*expected.StartedAt = fClock.Now().UnixNano()
 | 
			
		||||
	*expected.State = runtimeApi.ContainerState_RUNNING
 | 
			
		||||
	*expected.State = runtimeApi.ContainerState_CONTAINER_RUNNING
 | 
			
		||||
 | 
			
		||||
	err = ds.StartContainer(id)
 | 
			
		||||
	assert.NoError(t, err)
 | 
			
		||||
@@ -159,7 +159,7 @@ func TestContainerStatus(t *testing.T) {
 | 
			
		||||
	// Advance the clock and stop the container.
 | 
			
		||||
	fClock.SetTime(time.Now().Add(1 * time.Hour))
 | 
			
		||||
	*expected.FinishedAt = fClock.Now().UnixNano()
 | 
			
		||||
	*expected.State = runtimeApi.ContainerState_EXITED
 | 
			
		||||
	*expected.State = runtimeApi.ContainerState_CONTAINER_EXITED
 | 
			
		||||
	*expected.Reason = "Completed"
 | 
			
		||||
 | 
			
		||||
	err = ds.StopContainer(id, 0)
 | 
			
		||||
 
 | 
			
		||||
@@ -192,9 +192,9 @@ func (ds *dockerService) PodSandboxStatus(podSandboxID string) (*runtimeApi.PodS
 | 
			
		||||
	ct := createdAt.UnixNano()
 | 
			
		||||
 | 
			
		||||
	// Translate container to sandbox state.
 | 
			
		||||
	state := runtimeApi.PodSandBoxState_NOTREADY
 | 
			
		||||
	state := runtimeApi.PodSandboxState_SANDBOX_NOTREADY
 | 
			
		||||
	if r.State.Running {
 | 
			
		||||
		state = runtimeApi.PodSandBoxState_READY
 | 
			
		||||
		state = runtimeApi.PodSandboxState_SANDBOX_READY
 | 
			
		||||
	}
 | 
			
		||||
	IP, err := ds.getIP(r)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@@ -244,11 +244,11 @@ func (ds *dockerService) ListPodSandbox(filter *runtimeApi.PodSandboxFilter) ([]
 | 
			
		||||
			f.Add("id", filter.GetId())
 | 
			
		||||
		}
 | 
			
		||||
		if filter.State != nil {
 | 
			
		||||
			if filter.GetState() == runtimeApi.PodSandBoxState_READY {
 | 
			
		||||
			if filter.GetState() == runtimeApi.PodSandboxState_SANDBOX_READY {
 | 
			
		||||
				// Only list running containers.
 | 
			
		||||
				opts.All = false
 | 
			
		||||
			} else {
 | 
			
		||||
				// runtimeApi.PodSandBoxState_NOTREADY can mean the
 | 
			
		||||
				// runtimeApi.PodSandboxState_SANDBOX_NOTREADY can mean the
 | 
			
		||||
				// container is in any of the non-running state (e.g., created,
 | 
			
		||||
				// exited). We can't tell docker to filter out running
 | 
			
		||||
				// containers directly, so we'll need to filter them out
 | 
			
		||||
@@ -277,7 +277,7 @@ func (ds *dockerService) ListPodSandbox(filter *runtimeApi.PodSandboxFilter) ([]
 | 
			
		||||
			glog.V(5).Infof("Unable to convert docker to runtime API sandbox: %v", err)
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		if filterOutReadySandboxes && converted.GetState() == runtimeApi.PodSandBoxState_READY {
 | 
			
		||||
		if filterOutReadySandboxes && converted.GetState() == runtimeApi.PodSandboxState_SANDBOX_READY {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -63,7 +63,7 @@ func TestListSandboxes(t *testing.T) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	expected := []*runtimeApi.PodSandbox{}
 | 
			
		||||
	state := runtimeApi.PodSandBoxState_READY
 | 
			
		||||
	state := runtimeApi.PodSandboxState_SANDBOX_READY
 | 
			
		||||
	var createdAt int64 = 0
 | 
			
		||||
	for i := range configs {
 | 
			
		||||
		id, err := ds.RunPodSandbox(configs[i])
 | 
			
		||||
@@ -98,7 +98,7 @@ func TestSandboxStatus(t *testing.T) {
 | 
			
		||||
	fakeIP := "2.3.4.5"
 | 
			
		||||
	fakeNS := fmt.Sprintf("/proc/%d/ns/net", os.Getpid())
 | 
			
		||||
 | 
			
		||||
	state := runtimeApi.PodSandBoxState_READY
 | 
			
		||||
	state := runtimeApi.PodSandboxState_SANDBOX_READY
 | 
			
		||||
	ct := int64(0)
 | 
			
		||||
	hostNetwork := false
 | 
			
		||||
	expected := &runtimeApi.PodSandboxStatus{
 | 
			
		||||
@@ -128,7 +128,7 @@ func TestSandboxStatus(t *testing.T) {
 | 
			
		||||
	assert.Equal(t, expected, status)
 | 
			
		||||
 | 
			
		||||
	// Stop the sandbox.
 | 
			
		||||
	*expected.State = runtimeApi.PodSandBoxState_NOTREADY
 | 
			
		||||
	*expected.State = runtimeApi.PodSandboxState_SANDBOX_NOTREADY
 | 
			
		||||
	err = ds.StopPodSandbox(id)
 | 
			
		||||
	assert.NoError(t, err)
 | 
			
		||||
	status, err = ds.PodSandboxStatus(id)
 | 
			
		||||
 
 | 
			
		||||
@@ -72,13 +72,13 @@ func (c containerStatusByCreated) Less(i, j int) bool { return c[i].CreatedAt.Af
 | 
			
		||||
// toKubeContainerState converts runtimeApi.ContainerState to kubecontainer.ContainerState.
 | 
			
		||||
func toKubeContainerState(state runtimeApi.ContainerState) kubecontainer.ContainerState {
 | 
			
		||||
	switch state {
 | 
			
		||||
	case runtimeApi.ContainerState_CREATED:
 | 
			
		||||
	case runtimeApi.ContainerState_CONTAINER_CREATED:
 | 
			
		||||
		return kubecontainer.ContainerStateCreated
 | 
			
		||||
	case runtimeApi.ContainerState_RUNNING:
 | 
			
		||||
	case runtimeApi.ContainerState_CONTAINER_RUNNING:
 | 
			
		||||
		return kubecontainer.ContainerStateRunning
 | 
			
		||||
	case runtimeApi.ContainerState_EXITED:
 | 
			
		||||
	case runtimeApi.ContainerState_CONTAINER_EXITED:
 | 
			
		||||
		return kubecontainer.ContainerStateExited
 | 
			
		||||
	case runtimeApi.ContainerState_UNKNOWN:
 | 
			
		||||
	case runtimeApi.ContainerState_CONTAINER_UNKNOWN:
 | 
			
		||||
		return kubecontainer.ContainerStateUnknown
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -301,7 +301,7 @@ func (m *kubeGenericRuntimeManager) getKubeletContainers(allContainers bool) ([]
 | 
			
		||||
		LabelSelector: map[string]string{kubernetesManagedLabel: "true"},
 | 
			
		||||
	}
 | 
			
		||||
	if !allContainers {
 | 
			
		||||
		runningState := runtimeApi.ContainerState_RUNNING
 | 
			
		||||
		runningState := runtimeApi.ContainerState_CONTAINER_RUNNING
 | 
			
		||||
		filter.State = &runningState
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -390,7 +390,7 @@ func (m *kubeGenericRuntimeManager) getPodContainerStatuses(uid kubetypes.UID, n
 | 
			
		||||
			CreatedAt:    time.Unix(0, status.GetCreatedAt()),
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if c.GetState() == runtimeApi.ContainerState_RUNNING {
 | 
			
		||||
		if c.GetState() == runtimeApi.ContainerState_CONTAINER_RUNNING {
 | 
			
		||||
			cStatus.StartedAt = time.Unix(0, status.GetStartedAt())
 | 
			
		||||
		} else {
 | 
			
		||||
			cStatus.Reason = status.GetReason()
 | 
			
		||||
 
 | 
			
		||||
@@ -154,7 +154,7 @@ func (cgc *containerGC) evictableContainers(minAge time.Duration) (containersByE
 | 
			
		||||
	newestGCTime := time.Now().Add(-minAge)
 | 
			
		||||
	for _, container := range containers {
 | 
			
		||||
		// Prune out running containers.
 | 
			
		||||
		if container.GetState() == runtimeApi.ContainerState_RUNNING {
 | 
			
		||||
		if container.GetState() == runtimeApi.ContainerState_CONTAINER_RUNNING {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@@ -249,7 +249,7 @@ func (cgc *containerGC) evictSandboxes(minAge time.Duration) error {
 | 
			
		||||
	newestGCTime := time.Now().Add(-minAge)
 | 
			
		||||
	for _, sandbox := range sandboxes {
 | 
			
		||||
		// Prune out ready sandboxes.
 | 
			
		||||
		if sandbox.GetState() == runtimeApi.PodSandBoxState_READY {
 | 
			
		||||
		if sandbox.GetState() == runtimeApi.PodSandboxState_SANDBOX_READY {
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -54,7 +54,7 @@ func TestSandboxGC(t *testing.T) {
 | 
			
		||||
		{
 | 
			
		||||
			description: "sandbox with no containers should be garbage collected.",
 | 
			
		||||
			sandboxes: []sandboxTemplate{
 | 
			
		||||
				{pod: pods[0], state: runtimeApi.PodSandBoxState_NOTREADY},
 | 
			
		||||
				{pod: pods[0], state: runtimeApi.PodSandboxState_SANDBOX_NOTREADY},
 | 
			
		||||
			},
 | 
			
		||||
			containers: []containerTemplate{},
 | 
			
		||||
			remain:     []int{},
 | 
			
		||||
@@ -62,7 +62,7 @@ func TestSandboxGC(t *testing.T) {
 | 
			
		||||
		{
 | 
			
		||||
			description: "running sandbox should not be garbage collected.",
 | 
			
		||||
			sandboxes: []sandboxTemplate{
 | 
			
		||||
				{pod: pods[0], state: runtimeApi.PodSandBoxState_READY},
 | 
			
		||||
				{pod: pods[0], state: runtimeApi.PodSandboxState_SANDBOX_READY},
 | 
			
		||||
			},
 | 
			
		||||
			containers: []containerTemplate{},
 | 
			
		||||
			remain:     []int{0},
 | 
			
		||||
@@ -70,18 +70,18 @@ func TestSandboxGC(t *testing.T) {
 | 
			
		||||
		{
 | 
			
		||||
			description: "sandbox with containers should not be garbage collected.",
 | 
			
		||||
			sandboxes: []sandboxTemplate{
 | 
			
		||||
				{pod: pods[0], state: runtimeApi.PodSandBoxState_NOTREADY},
 | 
			
		||||
				{pod: pods[0], state: runtimeApi.PodSandboxState_SANDBOX_NOTREADY},
 | 
			
		||||
			},
 | 
			
		||||
			containers: []containerTemplate{
 | 
			
		||||
				{pod: pods[0], container: &pods[0].Spec.Containers[0], state: runtimeApi.ContainerState_EXITED},
 | 
			
		||||
				{pod: pods[0], container: &pods[0].Spec.Containers[0], state: runtimeApi.ContainerState_CONTAINER_EXITED},
 | 
			
		||||
			},
 | 
			
		||||
			remain: []int{0},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			description: "sandbox within min age should not be garbage collected.",
 | 
			
		||||
			sandboxes: []sandboxTemplate{
 | 
			
		||||
				{pod: pods[0], createdAt: time.Now().UnixNano(), state: runtimeApi.PodSandBoxState_NOTREADY},
 | 
			
		||||
				{pod: pods[1], createdAt: time.Now().Add(-2 * time.Hour).UnixNano(), state: runtimeApi.PodSandBoxState_NOTREADY},
 | 
			
		||||
				{pod: pods[0], createdAt: time.Now().UnixNano(), state: runtimeApi.PodSandboxState_SANDBOX_NOTREADY},
 | 
			
		||||
				{pod: pods[1], createdAt: time.Now().Add(-2 * time.Hour).UnixNano(), state: runtimeApi.PodSandboxState_SANDBOX_NOTREADY},
 | 
			
		||||
			},
 | 
			
		||||
			containers: []containerTemplate{},
 | 
			
		||||
			minAge:     time.Hour, // assume the test won't take an hour
 | 
			
		||||
@@ -91,14 +91,14 @@ func TestSandboxGC(t *testing.T) {
 | 
			
		||||
			description: "multiple sandboxes should be handled properly.",
 | 
			
		||||
			sandboxes: []sandboxTemplate{
 | 
			
		||||
				// running sandbox.
 | 
			
		||||
				{pod: pods[0], attempt: 1, state: runtimeApi.PodSandBoxState_READY},
 | 
			
		||||
				{pod: pods[0], attempt: 1, state: runtimeApi.PodSandboxState_SANDBOX_READY},
 | 
			
		||||
				// exited sandbox with containers.
 | 
			
		||||
				{pod: pods[1], attempt: 1, state: runtimeApi.PodSandBoxState_NOTREADY},
 | 
			
		||||
				{pod: pods[1], attempt: 1, state: runtimeApi.PodSandboxState_SANDBOX_NOTREADY},
 | 
			
		||||
				// exited sandbox without containers.
 | 
			
		||||
				{pod: pods[1], attempt: 0, state: runtimeApi.PodSandBoxState_NOTREADY},
 | 
			
		||||
				{pod: pods[1], attempt: 0, state: runtimeApi.PodSandboxState_SANDBOX_NOTREADY},
 | 
			
		||||
			},
 | 
			
		||||
			containers: []containerTemplate{
 | 
			
		||||
				{pod: pods[1], container: &pods[1].Spec.Containers[0], sandboxAttempt: 1, state: runtimeApi.ContainerState_EXITED},
 | 
			
		||||
				{pod: pods[1], container: &pods[1].Spec.Containers[0], sandboxAttempt: 1, state: runtimeApi.ContainerState_CONTAINER_EXITED},
 | 
			
		||||
			},
 | 
			
		||||
			remain: []int{0, 1},
 | 
			
		||||
		},
 | 
			
		||||
@@ -153,7 +153,7 @@ func TestContainerGC(t *testing.T) {
 | 
			
		||||
		{
 | 
			
		||||
			description: "all containers should be removed when max container limit is 0",
 | 
			
		||||
			containers: []containerTemplate{
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
			},
 | 
			
		||||
			policy: &kubecontainer.ContainerGCPolicy{MinAge: time.Minute, MaxPerPodContainer: 1, MaxContainers: 0},
 | 
			
		||||
			remain: []int{},
 | 
			
		||||
@@ -161,11 +161,11 @@ func TestContainerGC(t *testing.T) {
 | 
			
		||||
		{
 | 
			
		||||
			description: "max containers should be complied when no max per pod container limit is set",
 | 
			
		||||
			containers: []containerTemplate{
 | 
			
		||||
				makeGCContainer("foo", "bar", 4, 4, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 3, 3, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 4, 4, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 3, 3, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
			},
 | 
			
		||||
			policy: &kubecontainer.ContainerGCPolicy{MinAge: time.Minute, MaxPerPodContainer: -1, MaxContainers: 4},
 | 
			
		||||
			remain: []int{0, 1, 2, 3},
 | 
			
		||||
@@ -173,9 +173,9 @@ func TestContainerGC(t *testing.T) {
 | 
			
		||||
		{
 | 
			
		||||
			description: "no containers should be removed if both max container and per pod container limits are not set",
 | 
			
		||||
			containers: []containerTemplate{
 | 
			
		||||
				makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
			},
 | 
			
		||||
			policy: &kubecontainer.ContainerGCPolicy{MinAge: time.Minute, MaxPerPodContainer: -1, MaxContainers: -1},
 | 
			
		||||
			remain: []int{0, 1, 2},
 | 
			
		||||
@@ -183,94 +183,94 @@ func TestContainerGC(t *testing.T) {
 | 
			
		||||
		{
 | 
			
		||||
			description: "recently started containers should not be removed",
 | 
			
		||||
			containers: []containerTemplate{
 | 
			
		||||
				makeGCContainer("foo", "bar", 2, time.Now().UnixNano(), runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, time.Now().UnixNano(), runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, time.Now().UnixNano(), runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 2, time.Now().UnixNano(), runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, time.Now().UnixNano(), runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, time.Now().UnixNano(), runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
			},
 | 
			
		||||
			remain: []int{0, 1, 2},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			description: "oldest containers should be removed when per pod container limit exceeded",
 | 
			
		||||
			containers: []containerTemplate{
 | 
			
		||||
				makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
			},
 | 
			
		||||
			remain: []int{0, 1},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			description: "running containers should not be removed",
 | 
			
		||||
			containers: []containerTemplate{
 | 
			
		||||
				makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_RUNNING),
 | 
			
		||||
				makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_RUNNING),
 | 
			
		||||
			},
 | 
			
		||||
			remain: []int{0, 1, 2},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			description: "no containers should be removed when limits are not exceeded",
 | 
			
		||||
			containers: []containerTemplate{
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
			},
 | 
			
		||||
			remain: []int{0, 1},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			description: "max container count should apply per (UID, container) pair",
 | 
			
		||||
			containers: []containerTemplate{
 | 
			
		||||
				makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo1", "baz", 2, 2, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo1", "baz", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo1", "baz", 0, 0, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo2", "bar", 2, 2, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo2", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo2", "bar", 0, 0, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo1", "baz", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo1", "baz", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo1", "baz", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo2", "bar", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo2", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo2", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
			},
 | 
			
		||||
			remain: []int{0, 1, 3, 4, 6, 7},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			description: "max limit should apply and try to keep from every pod",
 | 
			
		||||
			containers: []containerTemplate{
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo1", "bar1", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo1", "bar1", 0, 0, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo2", "bar2", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo2", "bar2", 0, 0, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo3", "bar3", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo3", "bar3", 0, 0, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo4", "bar4", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo4", "bar4", 0, 0, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo1", "bar1", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo1", "bar1", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo2", "bar2", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo2", "bar2", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo3", "bar3", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo3", "bar3", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo4", "bar4", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo4", "bar4", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
			},
 | 
			
		||||
			remain: []int{0, 2, 4, 6, 8},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			description: "oldest pods should be removed if limit exceeded",
 | 
			
		||||
			containers: []containerTemplate{
 | 
			
		||||
				makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo1", "bar1", 2, 2, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo1", "bar1", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo2", "bar2", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo3", "bar3", 0, 0, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo4", "bar4", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo5", "bar5", 0, 0, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo6", "bar6", 2, 2, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo7", "bar7", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo1", "bar1", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo1", "bar1", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo2", "bar2", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo3", "bar3", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo4", "bar4", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo5", "bar5", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo6", "bar6", 2, 2, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo7", "bar7", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
			},
 | 
			
		||||
			remain: []int{0, 2, 4, 6, 8, 9},
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			description: "containers for deleted pods should be removed",
 | 
			
		||||
			containers: []containerTemplate{
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("foo", "bar", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				// deleted pods still respect MinAge.
 | 
			
		||||
				makeGCContainer("deleted", "bar1", 2, time.Now().UnixNano(), runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("deleted", "bar1", 1, 1, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("deleted", "bar1", 0, 0, runtimeApi.ContainerState_EXITED),
 | 
			
		||||
				makeGCContainer("deleted", "bar1", 2, time.Now().UnixNano(), runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("deleted", "bar1", 1, 1, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
				makeGCContainer("deleted", "bar1", 0, 0, runtimeApi.ContainerState_CONTAINER_EXITED),
 | 
			
		||||
			},
 | 
			
		||||
			remain: []int{0, 1, 2},
 | 
			
		||||
		},
 | 
			
		||||
 
 | 
			
		||||
@@ -393,14 +393,14 @@ func (m *kubeGenericRuntimeManager) podSandboxChanged(pod *api.Pod, podStatus *k
 | 
			
		||||
 | 
			
		||||
	readySandboxCount := 0
 | 
			
		||||
	for _, s := range podStatus.SandboxStatuses {
 | 
			
		||||
		if s.GetState() == runtimeApi.PodSandBoxState_READY {
 | 
			
		||||
		if s.GetState() == runtimeApi.PodSandboxState_SANDBOX_READY {
 | 
			
		||||
			readySandboxCount++
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Needs to create a new sandbox when readySandboxCount > 1 or the ready sandbox is not the latest one.
 | 
			
		||||
	sandboxStatus := podStatus.SandboxStatuses[0]
 | 
			
		||||
	if readySandboxCount > 1 || sandboxStatus.GetState() != runtimeApi.PodSandBoxState_READY {
 | 
			
		||||
	if readySandboxCount > 1 || sandboxStatus.GetState() != runtimeApi.PodSandboxState_SANDBOX_READY {
 | 
			
		||||
		glog.V(2).Infof("No ready sandbox for pod %q can be found. Need to start a new one", format.Pod(pod))
 | 
			
		||||
		return true, sandboxStatus.Metadata.GetAttempt() + 1, sandboxStatus.GetId()
 | 
			
		||||
	}
 | 
			
		||||
@@ -865,7 +865,7 @@ func (m *kubeGenericRuntimeManager) GetPodStatus(uid kubetypes.UID, name, namesp
 | 
			
		||||
		sandboxStatuses[idx] = podSandboxStatus
 | 
			
		||||
 | 
			
		||||
		// Only get pod IP from latest sandbox
 | 
			
		||||
		if idx == 0 && podSandboxStatus.GetState() == runtimeApi.PodSandBoxState_READY {
 | 
			
		||||
		if idx == 0 && podSandboxStatus.GetState() == runtimeApi.PodSandboxState_SANDBOX_READY {
 | 
			
		||||
			podIP = m.determinePodSandboxIP(namespace, name, podSandboxStatus)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -66,7 +66,7 @@ type sandboxTemplate struct {
 | 
			
		||||
	pod       *api.Pod
 | 
			
		||||
	attempt   uint32
 | 
			
		||||
	createdAt int64
 | 
			
		||||
	state     runtimeApi.PodSandBoxState
 | 
			
		||||
	state     runtimeApi.PodSandboxState
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// containerTemplate is a container template to create fake container.
 | 
			
		||||
@@ -86,7 +86,7 @@ func makeAndSetFakePod(t *testing.T, m *kubeGenericRuntimeManager, fakeRuntime *
 | 
			
		||||
	sandbox := makeFakePodSandbox(t, m, sandboxTemplate{
 | 
			
		||||
		pod:       pod,
 | 
			
		||||
		createdAt: fakeCreatedAt,
 | 
			
		||||
		state:     runtimeApi.PodSandBoxState_READY,
 | 
			
		||||
		state:     runtimeApi.PodSandboxState_SANDBOX_READY,
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	var containers []*apitest.FakeContainer
 | 
			
		||||
@@ -95,7 +95,7 @@ func makeAndSetFakePod(t *testing.T, m *kubeGenericRuntimeManager, fakeRuntime *
 | 
			
		||||
			pod:       pod,
 | 
			
		||||
			container: c,
 | 
			
		||||
			createdAt: fakeCreatedAt,
 | 
			
		||||
			state:     runtimeApi.ContainerState_RUNNING,
 | 
			
		||||
			state:     runtimeApi.ContainerState_CONTAINER_RUNNING,
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	for i := range pod.Spec.Containers {
 | 
			
		||||
@@ -509,10 +509,10 @@ func TestKillPod(t *testing.T) {
 | 
			
		||||
	assert.Equal(t, 2, len(fakeRuntime.Containers))
 | 
			
		||||
	assert.Equal(t, 1, len(fakeRuntime.Sandboxes))
 | 
			
		||||
	for _, sandbox := range fakeRuntime.Sandboxes {
 | 
			
		||||
		assert.Equal(t, runtimeApi.PodSandBoxState_NOTREADY, sandbox.GetState())
 | 
			
		||||
		assert.Equal(t, runtimeApi.PodSandboxState_SANDBOX_NOTREADY, sandbox.GetState())
 | 
			
		||||
	}
 | 
			
		||||
	for _, c := range fakeRuntime.Containers {
 | 
			
		||||
		assert.Equal(t, runtimeApi.ContainerState_EXITED, c.GetState())
 | 
			
		||||
		assert.Equal(t, runtimeApi.ContainerState_CONTAINER_EXITED, c.GetState())
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -550,10 +550,10 @@ func TestSyncPod(t *testing.T) {
 | 
			
		||||
	assert.Equal(t, 2, len(fakeImage.Images))
 | 
			
		||||
	assert.Equal(t, 1, len(fakeRuntime.Sandboxes))
 | 
			
		||||
	for _, sandbox := range fakeRuntime.Sandboxes {
 | 
			
		||||
		assert.Equal(t, runtimeApi.PodSandBoxState_READY, sandbox.GetState())
 | 
			
		||||
		assert.Equal(t, runtimeApi.PodSandboxState_SANDBOX_READY, sandbox.GetState())
 | 
			
		||||
	}
 | 
			
		||||
	for _, c := range fakeRuntime.Containers {
 | 
			
		||||
		assert.Equal(t, runtimeApi.ContainerState_RUNNING, c.GetState())
 | 
			
		||||
		assert.Equal(t, runtimeApi.ContainerState_CONTAINER_RUNNING, c.GetState())
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -575,11 +575,11 @@ func TestPruneInitContainers(t *testing.T) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	templates := []containerTemplate{
 | 
			
		||||
		{pod: pod, container: &init1, attempt: 2, createdAt: 2, state: runtimeApi.ContainerState_EXITED},
 | 
			
		||||
		{pod: pod, container: &init1, attempt: 1, createdAt: 1, state: runtimeApi.ContainerState_EXITED},
 | 
			
		||||
		{pod: pod, container: &init2, attempt: 1, createdAt: 1, state: runtimeApi.ContainerState_EXITED},
 | 
			
		||||
		{pod: pod, container: &init2, attempt: 0, createdAt: 0, state: runtimeApi.ContainerState_EXITED},
 | 
			
		||||
		{pod: pod, container: &init1, attempt: 0, createdAt: 0, state: runtimeApi.ContainerState_EXITED},
 | 
			
		||||
		{pod: pod, container: &init1, attempt: 2, createdAt: 2, state: runtimeApi.ContainerState_CONTAINER_EXITED},
 | 
			
		||||
		{pod: pod, container: &init1, attempt: 1, createdAt: 1, state: runtimeApi.ContainerState_CONTAINER_EXITED},
 | 
			
		||||
		{pod: pod, container: &init2, attempt: 1, createdAt: 1, state: runtimeApi.ContainerState_CONTAINER_EXITED},
 | 
			
		||||
		{pod: pod, container: &init2, attempt: 0, createdAt: 0, state: runtimeApi.ContainerState_CONTAINER_EXITED},
 | 
			
		||||
		{pod: pod, container: &init1, attempt: 0, createdAt: 0, state: runtimeApi.ContainerState_CONTAINER_EXITED},
 | 
			
		||||
	}
 | 
			
		||||
	fakes := makeFakeContainers(t, m, templates)
 | 
			
		||||
	fakeRuntime.SetFakeContainers(fakes)
 | 
			
		||||
 
 | 
			
		||||
@@ -153,7 +153,7 @@ func generatePodSandboxLinuxConfig(pod *api.Pod, cgroupParent string) *runtimeAp
 | 
			
		||||
func (m *kubeGenericRuntimeManager) getKubeletSandboxes(all bool) ([]*runtimeApi.PodSandbox, error) {
 | 
			
		||||
	var filter *runtimeApi.PodSandboxFilter
 | 
			
		||||
	if !all {
 | 
			
		||||
		readyState := runtimeApi.PodSandBoxState_READY
 | 
			
		||||
		readyState := runtimeApi.PodSandboxState_SANDBOX_READY
 | 
			
		||||
		filter = &runtimeApi.PodSandboxFilter{
 | 
			
		||||
			State: &readyState,
 | 
			
		||||
		}
 | 
			
		||||
@@ -195,7 +195,7 @@ func (m *kubeGenericRuntimeManager) determinePodSandboxIP(podNamespace, podName
 | 
			
		||||
 | 
			
		||||
// getPodSandboxID gets the sandbox id by podUID and returns ([]sandboxID, error).
 | 
			
		||||
// Param state could be nil in order to get all sandboxes belonging to same pod.
 | 
			
		||||
func (m *kubeGenericRuntimeManager) getSandboxIDByPodUID(podUID string, state *runtimeApi.PodSandBoxState) ([]string, error) {
 | 
			
		||||
func (m *kubeGenericRuntimeManager) getSandboxIDByPodUID(podUID string, state *runtimeApi.PodSandboxState) ([]string, error) {
 | 
			
		||||
	filter := &runtimeApi.PodSandboxFilter{
 | 
			
		||||
		State:         state,
 | 
			
		||||
		LabelSelector: map[string]string{types.KubernetesPodUIDLabel: podUID},
 | 
			
		||||
 
 | 
			
		||||
@@ -88,13 +88,13 @@ type fakeContainer struct {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *fakeContainer) Start() {
 | 
			
		||||
	c.State = runtimeApi.ContainerState_RUNNING
 | 
			
		||||
	c.State = runtimeApi.ContainerState_CONTAINER_RUNNING
 | 
			
		||||
 | 
			
		||||
	c.Status.State = &c.State
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (c *fakeContainer) Stop() {
 | 
			
		||||
	c.State = runtimeApi.ContainerState_EXITED
 | 
			
		||||
	c.State = runtimeApi.ContainerState_CONTAINER_EXITED
 | 
			
		||||
 | 
			
		||||
	c.Status.State = &c.State
 | 
			
		||||
 | 
			
		||||
@@ -135,11 +135,11 @@ func (r *FakeRuntime) StartContainer(id string) error {
 | 
			
		||||
		return ErrContainerNotFound
 | 
			
		||||
	}
 | 
			
		||||
	switch c.State {
 | 
			
		||||
	case runtimeApi.ContainerState_EXITED:
 | 
			
		||||
	case runtimeApi.ContainerState_CONTAINER_EXITED:
 | 
			
		||||
		fallthrough
 | 
			
		||||
	case runtimeApi.ContainerState_CREATED:
 | 
			
		||||
	case runtimeApi.ContainerState_CONTAINER_CREATED:
 | 
			
		||||
		c.Start()
 | 
			
		||||
	case runtimeApi.ContainerState_UNKNOWN:
 | 
			
		||||
	case runtimeApi.ContainerState_CONTAINER_UNKNOWN:
 | 
			
		||||
		// TODO(tmrts): add timeout to Start API or generalize timeout somehow
 | 
			
		||||
		//<-time.After(time.Duration(timeout) * time.Second)
 | 
			
		||||
		fallthrough
 | 
			
		||||
@@ -157,9 +157,9 @@ func (r *FakeRuntime) StopContainer(id string, timeout int64) error {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	switch c.State {
 | 
			
		||||
	case runtimeApi.ContainerState_RUNNING:
 | 
			
		||||
		c.State = runtimeApi.ContainerState_EXITED // This state might not be the best one
 | 
			
		||||
	case runtimeApi.ContainerState_UNKNOWN:
 | 
			
		||||
	case runtimeApi.ContainerState_CONTAINER_RUNNING:
 | 
			
		||||
		c.State = runtimeApi.ContainerState_CONTAINER_EXITED // This state might not be the best one
 | 
			
		||||
	case runtimeApi.ContainerState_CONTAINER_UNKNOWN:
 | 
			
		||||
		<-time.After(time.Duration(timeout) * time.Second)
 | 
			
		||||
		fallthrough
 | 
			
		||||
	default:
 | 
			
		||||
@@ -214,7 +214,7 @@ func (r *FakeRuntime) ExecSync(containerID string, cmd []string, timeout time.Du
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// TODO(tmrts): Validate the assumption that container has to be running for exec to work.
 | 
			
		||||
	if c.State != runtimeApi.ContainerState_RUNNING {
 | 
			
		||||
	if c.State != runtimeApi.ContainerState_CONTAINER_RUNNING {
 | 
			
		||||
		return nil, nil, ErrInvalidContainerStateTransition
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user