vendor: update agent grpc

To include SandboxId in CreateSandboxRequest.

Included commits:
745fa71 (origin/pr/309) agent: set sandbox id log field in CreateSandbox
a3321f4 (origin/pr/304) vendor: Revendor netlink to fix PID 1 segfault
a9ade15 (origin/pr/293) agent: Add sandbox level reference counter for sandbox storage
5f89c07 (origin/pr/263) yamux: disable yamux keep alive in server channel
815f831 (origin/pr/303) agent: do not quit on grpc serve errors
8abefd1 (origin/pr/301) protocols/client: close yamux session when closing the stream
67643cf (origin/pr/297) agent: Fix CPU tests for both initrd and rootfs image
cf8d3c8 (origin/pr/295) agent: disable yamux keep alive
ed656df (origin/pr/284) grpc: Ignore WriteStdin after the standard input has been closed
1a52204 grpc: Don't close the terminal on CloseStdin() call
04457e3 (origin/pr/292) logging: Add sandbox field
ba2a32a (origin/pr/286) create: Reduce cyclomatic complexity of CreateContainer
bce5f78 (origin/pr/289) logging: Redirect yamux warnings/errors to logger
23311ea namespace: Add check to make sure PID namespace is not received
7fe2eba (origin/pr/273) release: Kata Containers 1.1.0
4ef4971 (origin/pr/277) travis: Enable travis ci for ppc64le
57bf4e6 (origin/pr/279) namespace: do not create path using rand.
a589bdb (origin/pr/275) CI: update static-checks.sh in travis.yml
1372df2 (origin/pr/271) logging: Fix handling of non-string fields when PID 1
4018add (origin/pr/269) agent: honour CPU constraints when agent is the init process
1cff660 (origin/pr/268) mount: Remove redundant mkdir
cc74b5d (origin/pr/266) network: Setup localhost when running as init
dc06ec7 network: Add extra sanity checks
b580ae7 network: Check all function parameters
ee106e9 main: Exit(1) on error
5bf3909 network: Reduce cyclomatic complexity
cdf9bce namespace: Simplify code
0d7f36f (origin/pr/260) agent: update container cpuset cgroup parents
4cf1809 (origin/pr/258) agent: update container cpuset cgroup before setting the new configuration
d70e5bb agent: don't modify container's config
a30395a (origin/pr/253) grpc: signal frozen containers

Signed-off-by: Peng Tao <bergwolf@gmail.com>
This commit is contained in:
Peng Tao 2018-07-31 10:03:52 +08:00
parent 0541a5fc77
commit e69ebe5add
4 changed files with 235 additions and 158 deletions

4
Gopkg.lock generated
View File

@ -100,7 +100,7 @@
"protocols/client", "protocols/client",
"protocols/grpc" "protocols/grpc"
] ]
revision = "f6db83c952e3042ed7b527a1bd576e6b888f4f75" revision = "061f7a6154344c07b7e3c337c2dac33082fe51ec"
[[projects]] [[projects]]
name = "github.com/kubernetes-incubator/cri-o" name = "github.com/kubernetes-incubator/cri-o"
@ -264,6 +264,6 @@
[solve-meta] [solve-meta]
analyzer-name = "dep" analyzer-name = "dep"
analyzer-version = 1 analyzer-version = 1
inputs-digest = "f57c595789df5fbc01e237cc52c7454911dbc37b9282304b6b1f076606e4c157" inputs-digest = "50ac161303ae5e6cb2a559d4f027bdfd86d45ee5825efd1d323d8c6d432d1b2f"
solver-name = "gps-cdcl" solver-name = "gps-cdcl"
solver-version = 1 solver-version = 1

View File

@ -60,7 +60,7 @@
[[constraint]] [[constraint]]
name = "github.com/kata-containers/agent" name = "github.com/kata-containers/agent"
revision = "f6db83c952e3042ed7b527a1bd576e6b888f4f75" revision = "061f7a6154344c07b7e3c337c2dac33082fe51ec"
[[constraint]] [[constraint]]
name = "github.com/containerd/cri-containerd" name = "github.com/containerd/cri-containerd"

View File

@ -37,6 +37,15 @@ type AgentClient struct {
conn *grpc.ClientConn conn *grpc.ClientConn
} }
type yamuxSessionStream struct {
net.Conn
session *yamux.Session
}
func (y *yamuxSessionStream) Close() error {
return y.session.Close()
}
type dialer func(string, time.Duration) (net.Conn, error) type dialer func(string, time.Duration) (net.Conn, error)
// NewAgentClient creates a new agent gRPC client and handles both unix and vsock addresses. // NewAgentClient creates a new agent gRPC client and handles both unix and vsock addresses.
@ -147,7 +156,10 @@ func agentDialer(addr *url.URL, enableYamux bool) dialer {
}() }()
var session *yamux.Session var session *yamux.Session
session, err = yamux.Client(conn, nil) sessionConfig := yamux.DefaultConfig()
// Disable keepAlive since we don't know how much time a container can be paused
sessionConfig.EnableKeepAlive = false
session, err = yamux.Client(conn, sessionConfig)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -158,7 +170,12 @@ func agentDialer(addr *url.URL, enableYamux bool) dialer {
return nil, err return nil, err
} }
return stream, nil y := &yamuxSessionStream{
Conn: stream.(net.Conn),
session: session,
}
return y, nil
} }
} }

View File

@ -134,13 +134,18 @@ func (x IPFamily) String() string {
func (IPFamily) EnumDescriptor() ([]byte, []int) { return fileDescriptorAgent, []int{0} } func (IPFamily) EnumDescriptor() ([]byte, []int) { return fileDescriptorAgent, []int{0} }
type CreateContainerRequest struct { type CreateContainerRequest struct {
ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
ExecId string `protobuf:"bytes,2,opt,name=exec_id,json=execId,proto3" json:"exec_id,omitempty"` ExecId string `protobuf:"bytes,2,opt,name=exec_id,json=execId,proto3" json:"exec_id,omitempty"`
StringUser *StringUser `protobuf:"bytes,3,opt,name=string_user,json=stringUser" json:"string_user,omitempty"` StringUser *StringUser `protobuf:"bytes,3,opt,name=string_user,json=stringUser" json:"string_user,omitempty"`
Devices []*Device `protobuf:"bytes,4,rep,name=devices" json:"devices,omitempty"` Devices []*Device `protobuf:"bytes,4,rep,name=devices" json:"devices,omitempty"`
Storages []*Storage `protobuf:"bytes,5,rep,name=storages" json:"storages,omitempty"` Storages []*Storage `protobuf:"bytes,5,rep,name=storages" json:"storages,omitempty"`
OCI *Spec `protobuf:"bytes,6,opt,name=OCI" json:"OCI,omitempty"` OCI *Spec `protobuf:"bytes,6,opt,name=OCI" json:"OCI,omitempty"`
SandboxPidns bool `protobuf:"varint,7,opt,name=sandbox_pidns,json=sandboxPidns,proto3" json:"sandbox_pidns,omitempty"` // This field is used to indicate if the container needs to join
// sandbox shared pid ns or create a new namespace. This field is
// meant to override the NEWPID config settings in the OCI spec.
// The agent would receive an OCI spec with PID namespace cleared
// out altogether and not just the pid ns path.
SandboxPidns bool `protobuf:"varint,7,opt,name=sandbox_pidns,json=sandboxPidns,proto3" json:"sandbox_pidns,omitempty"`
} }
func (m *CreateContainerRequest) Reset() { *m = CreateContainerRequest{} } func (m *CreateContainerRequest) Reset() { *m = CreateContainerRequest{} }
@ -1064,10 +1069,18 @@ func (m *TtyWinResizeRequest) GetColumn() uint32 {
} }
type CreateSandboxRequest struct { type CreateSandboxRequest struct {
Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"` Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
Dns []string `protobuf:"bytes,2,rep,name=dns" json:"dns,omitempty"` Dns []string `protobuf:"bytes,2,rep,name=dns" json:"dns,omitempty"`
Storages []*Storage `protobuf:"bytes,3,rep,name=storages" json:"storages,omitempty"` Storages []*Storage `protobuf:"bytes,3,rep,name=storages" json:"storages,omitempty"`
SandboxPidns bool `protobuf:"varint,4,opt,name=sandbox_pidns,json=sandboxPidns,proto3" json:"sandbox_pidns,omitempty"` // This field means that a pause process needs to be created by the
// agent. This pid namespace of the pause process will be treated as
// a shared pid namespace. All containers created will join this shared
// pid namespace.
SandboxPidns bool `protobuf:"varint,4,opt,name=sandbox_pidns,json=sandboxPidns,proto3" json:"sandbox_pidns,omitempty"`
// SandboxId identifies which sandbox is using the agent. We allow only
// one sandbox per agent and implicitly require that CreateSandbox is
// called before other sandbox/network calls.
SandboxId string `protobuf:"bytes,5,opt,name=sandbox_id,json=sandboxId,proto3" json:"sandbox_id,omitempty"`
} }
func (m *CreateSandboxRequest) Reset() { *m = CreateSandboxRequest{} } func (m *CreateSandboxRequest) Reset() { *m = CreateSandboxRequest{} }
@ -1103,6 +1116,13 @@ func (m *CreateSandboxRequest) GetSandboxPidns() bool {
return false return false
} }
func (m *CreateSandboxRequest) GetSandboxId() string {
if m != nil {
return m.SandboxId
}
return ""
}
type DestroySandboxRequest struct { type DestroySandboxRequest struct {
} }
@ -3660,6 +3680,12 @@ func (m *CreateSandboxRequest) MarshalTo(dAtA []byte) (int, error) {
} }
i++ i++
} }
if len(m.SandboxId) > 0 {
dAtA[i] = 0x2a
i++
i = encodeVarintAgent(dAtA, i, uint64(len(m.SandboxId)))
i += copy(dAtA[i:], m.SandboxId)
}
return i, nil return i, nil
} }
@ -4726,6 +4752,10 @@ func (m *CreateSandboxRequest) Size() (n int) {
if m.SandboxPidns { if m.SandboxPidns {
n += 2 n += 2
} }
l = len(m.SandboxId)
if l > 0 {
n += 1 + l + sovAgent(uint64(l))
}
return n return n
} }
@ -9079,6 +9109,35 @@ func (m *CreateSandboxRequest) Unmarshal(dAtA []byte) error {
} }
} }
m.SandboxPidns = bool(v != 0) m.SandboxPidns = bool(v != 0)
case 5:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field SandboxId", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowAgent
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= (uint64(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthAgent
}
postIndex := iNdEx + intStringLen
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.SandboxId = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default: default:
iNdEx = preIndex iNdEx = preIndex
skippy, err := skipAgent(dAtA[iNdEx:]) skippy, err := skipAgent(dAtA[iNdEx:])
@ -10815,146 +10874,147 @@ var (
func init() { proto.RegisterFile("agent.proto", fileDescriptorAgent) } func init() { proto.RegisterFile("agent.proto", fileDescriptorAgent) }
var fileDescriptorAgent = []byte{ var fileDescriptorAgent = []byte{
// 2246 bytes of a gzipped FileDescriptorProto // 2258 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xdd, 0x6e, 0x1b, 0xc7, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x58, 0xdd, 0x6e, 0x1c, 0x49,
0xf5, 0xff, 0xf3, 0x53, 0xe2, 0x21, 0x29, 0x89, 0x2b, 0x59, 0x66, 0x68, 0xc3, 0x7f, 0x65, 0xdd, 0x15, 0x66, 0x7e, 0xed, 0x39, 0x33, 0x63, 0x7b, 0xda, 0x8e, 0x33, 0x3b, 0x59, 0x82, 0xb7, 0x03,
0x3a, 0x6a, 0x02, 0xcb, 0x88, 0x62, 0xb4, 0x81, 0x8d, 0x20, 0xb5, 0x64, 0x55, 0x56, 0x13, 0xd7, 0x59, 0xb3, 0xab, 0x38, 0x5a, 0x6f, 0x04, 0xab, 0x44, 0xab, 0x25, 0x76, 0x8c, 0x63, 0x76, 0x43,
0xec, 0xca, 0x82, 0x0b, 0xf4, 0x82, 0x18, 0xed, 0x8e, 0xa8, 0x89, 0xb9, 0x3b, 0x9b, 0x99, 0x59, 0x86, 0x76, 0xac, 0x20, 0x71, 0x31, 0x2a, 0x77, 0x97, 0xc7, 0xb5, 0x99, 0xee, 0xea, 0xad, 0xaa,
0x49, 0x6c, 0x80, 0x5e, 0xf6, 0x09, 0x7a, 0xdb, 0x17, 0x28, 0x7a, 0x51, 0xa0, 0xaf, 0xd0, 0x8b, 0xb6, 0x3d, 0xac, 0xc4, 0x25, 0x4f, 0xc0, 0x2d, 0x2f, 0x80, 0xb8, 0x40, 0xe2, 0x15, 0xb8, 0xe0,
0x5e, 0xf6, 0x09, 0x8a, 0xc2, 0x8f, 0xd0, 0x27, 0x28, 0xe6, 0x6b, 0x3f, 0xf8, 0xe5, 0x56, 0x11, 0x92, 0x27, 0x40, 0x28, 0x8f, 0xc0, 0x13, 0xa0, 0xfa, 0xeb, 0x9f, 0xf9, 0x0b, 0x78, 0x2d, 0x71,
0xd0, 0x1b, 0x72, 0xcf, 0x99, 0x33, 0xbf, 0xf3, 0x31, 0x33, 0x67, 0xce, 0x1c, 0x68, 0xa2, 0x21, 0x33, 0xd3, 0xe7, 0xd4, 0xa9, 0xef, 0xfc, 0x54, 0xd5, 0xa9, 0x53, 0x07, 0x9a, 0x68, 0x88, 0x23,
0x8e, 0xc4, 0x4e, 0xcc, 0xa8, 0xa0, 0x4e, 0x75, 0xc8, 0x62, 0xbf, 0xd7, 0xa0, 0x3e, 0xd1, 0x8c, 0xb1, 0x13, 0x33, 0x2a, 0xa8, 0x53, 0x1d, 0xb2, 0xd8, 0xef, 0x35, 0xa8, 0x4f, 0x34, 0xa3, 0x77,
0xde, 0x9d, 0x21, 0xa5, 0xc3, 0x11, 0x7e, 0xa4, 0xa8, 0xd3, 0xe4, 0xec, 0x11, 0x0e, 0x63, 0x31, 0x67, 0x48, 0xe9, 0x70, 0x84, 0x1f, 0x2a, 0xea, 0x34, 0x39, 0x7b, 0x88, 0xc3, 0x58, 0x8c, 0xf5,
0xd6, 0x83, 0xee, 0x1f, 0xca, 0xb0, 0xb9, 0xcf, 0x30, 0x12, 0x78, 0x9f, 0x46, 0x02, 0x91, 0x08, 0xa0, 0xfb, 0xc7, 0x32, 0x6c, 0xee, 0x33, 0x8c, 0x04, 0xde, 0xa7, 0x91, 0x40, 0x24, 0xc2, 0xcc,
0x33, 0x0f, 0x7f, 0x9b, 0x60, 0x2e, 0x9c, 0x0f, 0xa1, 0xe5, 0x5b, 0xde, 0x80, 0x04, 0xdd, 0xd2, 0xc3, 0xdf, 0x24, 0x98, 0x0b, 0xe7, 0x03, 0x68, 0xf9, 0x96, 0x37, 0x20, 0x41, 0xb7, 0xb4, 0x55,
0x56, 0x69, 0xbb, 0xe1, 0x35, 0x53, 0xde, 0x51, 0xe0, 0xdc, 0x86, 0x25, 0x7c, 0x85, 0x7d, 0x39, 0xda, 0x6e, 0x78, 0xcd, 0x94, 0x77, 0x14, 0x38, 0xb7, 0x61, 0x09, 0x5f, 0x61, 0x5f, 0x8e, 0x96,
0x5a, 0x56, 0xa3, 0x75, 0x49, 0x1e, 0x05, 0xce, 0xa7, 0xd0, 0xe4, 0x82, 0x91, 0x68, 0x38, 0x48, 0xd5, 0x68, 0x5d, 0x92, 0x47, 0x81, 0xf3, 0x09, 0x34, 0xb9, 0x60, 0x24, 0x1a, 0x0e, 0x12, 0x8e,
0x38, 0x66, 0xdd, 0xca, 0x56, 0x69, 0xbb, 0xb9, 0xbb, 0xb6, 0x23, 0x4d, 0xdb, 0x39, 0x56, 0x03, 0x59, 0xb7, 0xb2, 0x55, 0xda, 0x6e, 0xee, 0xae, 0xed, 0x48, 0xd3, 0x76, 0x8e, 0xd5, 0xc0, 0x09,
0x27, 0x1c, 0x33, 0x0f, 0x78, 0xfa, 0xed, 0x3c, 0x80, 0xa5, 0x00, 0x5f, 0x10, 0x1f, 0xf3, 0x6e, 0xc7, 0xcc, 0x03, 0x9e, 0x7e, 0x3b, 0xf7, 0x61, 0x29, 0xc0, 0x17, 0xc4, 0xc7, 0xbc, 0x5b, 0xdd,
0x75, 0xab, 0xb2, 0xdd, 0xdc, 0x6d, 0x69, 0xf1, 0xe7, 0x8a, 0xe9, 0xd9, 0x41, 0xe7, 0x47, 0xb0, 0xaa, 0x6c, 0x37, 0x77, 0x5b, 0x5a, 0xfc, 0x99, 0x62, 0x7a, 0x76, 0xd0, 0xf9, 0x31, 0x2c, 0x73,
0xcc, 0x05, 0x65, 0x68, 0x88, 0x79, 0xb7, 0xa6, 0x04, 0xdb, 0x16, 0x57, 0x71, 0xbd, 0x74, 0xd8, 0x41, 0x19, 0x1a, 0x62, 0xde, 0xad, 0x29, 0xc1, 0xb6, 0xc5, 0x55, 0x5c, 0x2f, 0x1d, 0x76, 0xde,
0xb9, 0x0b, 0x95, 0x57, 0xfb, 0x47, 0xdd, 0xba, 0xd2, 0x0e, 0x46, 0x2a, 0xc6, 0xbe, 0x27, 0xd9, 0x87, 0xca, 0xcb, 0xfd, 0xa3, 0x6e, 0x5d, 0x69, 0x07, 0x23, 0x15, 0x63, 0xdf, 0x93, 0x6c, 0xe7,
0xce, 0x7d, 0x68, 0x73, 0x14, 0x05, 0xa7, 0xf4, 0x6a, 0x10, 0x93, 0x20, 0xe2, 0xdd, 0xa5, 0xad, 0x1e, 0xb4, 0x39, 0x8a, 0x82, 0x53, 0x7a, 0x35, 0x88, 0x49, 0x10, 0xf1, 0xee, 0xd2, 0x56, 0x69,
0xd2, 0xf6, 0xb2, 0xd7, 0x32, 0xcc, 0xbe, 0xe4, 0xb9, 0x4f, 0xe0, 0xd6, 0xb1, 0x40, 0x4c, 0x5c, 0x7b, 0xd9, 0x6b, 0x19, 0x66, 0x5f, 0xf2, 0xdc, 0xc7, 0x70, 0xeb, 0x58, 0x20, 0x26, 0xae, 0x11,
0x23, 0x3a, 0xee, 0x09, 0x6c, 0x7a, 0x38, 0xa4, 0x17, 0xd7, 0x0a, 0x6d, 0x17, 0x96, 0x04, 0x09, 0x1d, 0xf7, 0x04, 0x36, 0x3d, 0x1c, 0xd2, 0x8b, 0x6b, 0x85, 0xb6, 0x0b, 0x4b, 0x82, 0x84, 0x98,
0x31, 0x4d, 0x84, 0x0a, 0x6d, 0xdb, 0xb3, 0xa4, 0xfb, 0xa7, 0x12, 0x38, 0x07, 0x57, 0xd8, 0xef, 0x26, 0x42, 0x85, 0xb6, 0xed, 0x59, 0xd2, 0xfd, 0x73, 0x09, 0x9c, 0x83, 0x2b, 0xec, 0xf7, 0x19,
0x33, 0xea, 0x63, 0xce, 0xff, 0x47, 0xcb, 0xf5, 0x11, 0x2c, 0xc5, 0xda, 0x80, 0x6e, 0x55, 0x89, 0xf5, 0x31, 0xe7, 0xff, 0xa7, 0xe5, 0xfa, 0x10, 0x96, 0x62, 0x6d, 0x40, 0xb7, 0xaa, 0xc4, 0xcd,
0x9b, 0x55, 0xb0, 0x56, 0xd9, 0x51, 0xf7, 0x1b, 0xd8, 0x38, 0x26, 0xc3, 0x08, 0x8d, 0x6e, 0xd0, 0x2a, 0x58, 0xab, 0xec, 0xa8, 0xfb, 0x35, 0x6c, 0x1c, 0x93, 0x61, 0x84, 0x46, 0x37, 0x68, 0xef,
0xde, 0x4d, 0xa8, 0x73, 0x85, 0xa9, 0x4c, 0x6d, 0x7b, 0x86, 0x72, 0xfb, 0xe0, 0xbc, 0x41, 0x44, 0x26, 0xd4, 0xb9, 0xc2, 0x54, 0xa6, 0xb6, 0x3d, 0x43, 0xb9, 0x7d, 0x70, 0x5e, 0x23, 0x22, 0x6e,
0xdc, 0x9c, 0x26, 0xf7, 0x21, 0xac, 0x17, 0x10, 0x79, 0x4c, 0x23, 0x8e, 0x95, 0x01, 0x02, 0x89, 0x4e, 0x93, 0xfb, 0x00, 0xd6, 0x0b, 0x88, 0x3c, 0xa6, 0x11, 0xc7, 0xca, 0x00, 0x81, 0x44, 0xc2,
0x84, 0x2b, 0xb0, 0x9a, 0x67, 0x28, 0x17, 0xc3, 0xc6, 0xd7, 0x84, 0x5b, 0x71, 0xfc, 0xdf, 0x98, 0x15, 0x58, 0xcd, 0x33, 0x94, 0x8b, 0x61, 0xe3, 0x2b, 0xc2, 0xad, 0x38, 0xfe, 0x5f, 0x4c, 0xd8,
0xb0, 0x09, 0xf5, 0x33, 0xca, 0x42, 0x24, 0xac, 0x05, 0x9a, 0x72, 0x1c, 0xa8, 0x22, 0x36, 0xe4, 0x84, 0xfa, 0x19, 0x65, 0x21, 0x12, 0xd6, 0x02, 0x4d, 0x39, 0x0e, 0x54, 0x11, 0x1b, 0xf2, 0x6e,
0xdd, 0xca, 0x56, 0x65, 0xbb, 0xe1, 0xa9, 0x6f, 0xb9, 0x2b, 0x27, 0xd4, 0x18, 0xbb, 0x3e, 0x84, 0x65, 0xab, 0xb2, 0xdd, 0xf0, 0xd4, 0xb7, 0xdc, 0x95, 0x13, 0x6a, 0x8c, 0x5d, 0x1f, 0x40, 0xcb,
0x96, 0x89, 0xfb, 0x60, 0x44, 0xb8, 0x50, 0x7a, 0x5a, 0x5e, 0xd3, 0xf0, 0xe4, 0x1c, 0x97, 0xc2, 0xc4, 0x7d, 0x30, 0x22, 0x5c, 0x28, 0x3d, 0x2d, 0xaf, 0x69, 0x78, 0x72, 0x8e, 0x4b, 0x61, 0xf3,
0xe6, 0x49, 0x1c, 0x5c, 0xf3, 0xc0, 0xef, 0x42, 0x83, 0x61, 0x4e, 0x13, 0x26, 0x8f, 0x69, 0x59, 0x24, 0x0e, 0xae, 0x79, 0xe0, 0x77, 0xa1, 0xc1, 0x30, 0xa7, 0x09, 0x93, 0xc7, 0xb4, 0xac, 0xd6,
0xad, 0xfb, 0x86, 0x5e, 0xf7, 0xaf, 0x49, 0x94, 0x5c, 0x79, 0x76, 0xcc, 0xcb, 0xc4, 0xcc, 0x11, 0x7d, 0x43, 0xaf, 0xfb, 0x57, 0x24, 0x4a, 0xae, 0x3c, 0x3b, 0xe6, 0x65, 0x62, 0xe6, 0x08, 0x09,
0x12, 0xfc, 0x3a, 0x47, 0xe8, 0x09, 0xdc, 0xea, 0xa3, 0x84, 0x5f, 0xc7, 0x56, 0xf7, 0xa9, 0x3c, 0x7e, 0x9d, 0x23, 0xf4, 0x18, 0x6e, 0xf5, 0x51, 0xc2, 0xaf, 0x63, 0xab, 0xfb, 0x44, 0x1e, 0x3f,
0x7e, 0x3c, 0x09, 0xaf, 0x35, 0xf9, 0x8f, 0x25, 0x58, 0xde, 0x8f, 0x93, 0x13, 0x8e, 0x86, 0xd8, 0x9e, 0x84, 0xd7, 0x9a, 0xfc, 0xa7, 0x12, 0x2c, 0xef, 0xc7, 0xc9, 0x09, 0x47, 0x43, 0xec, 0xfc,
0xf9, 0x7f, 0x68, 0x0a, 0x2a, 0xd0, 0x68, 0x90, 0x48, 0x52, 0x89, 0x57, 0x3d, 0x50, 0x2c, 0x2d, 0x00, 0x9a, 0x82, 0x0a, 0x34, 0x1a, 0x24, 0x92, 0x54, 0xe2, 0x55, 0x0f, 0x14, 0x4b, 0x0b, 0xc8,
0x20, 0xc3, 0x8e, 0x99, 0x1f, 0x27, 0x46, 0xa2, 0xbc, 0x55, 0xd9, 0xae, 0x7a, 0x4d, 0xcd, 0xd3, 0xb0, 0x63, 0xe6, 0xc7, 0x89, 0x91, 0x28, 0x6f, 0x55, 0xb6, 0xab, 0x5e, 0x53, 0xf3, 0xb4, 0xc8,
0x22, 0x3b, 0xb0, 0xae, 0xc6, 0x06, 0x24, 0x1a, 0xbc, 0xc5, 0x2c, 0xc2, 0xa3, 0x90, 0x06, 0x58, 0x0e, 0xac, 0xab, 0xb1, 0x01, 0x89, 0x06, 0x6f, 0x30, 0x8b, 0xf0, 0x28, 0xa4, 0x01, 0x56, 0xfb,
0xed, 0xdf, 0xaa, 0xd7, 0x51, 0x43, 0x47, 0xd1, 0x57, 0xe9, 0x80, 0xf3, 0x31, 0x74, 0x52, 0x79, 0xb7, 0xea, 0x75, 0xd4, 0xd0, 0x51, 0xf4, 0x65, 0x3a, 0xe0, 0x7c, 0x04, 0x9d, 0x54, 0x5e, 0x1e,
0x79, 0x28, 0x95, 0x74, 0x55, 0x49, 0xaf, 0x1a, 0xe9, 0x13, 0xc3, 0x76, 0x7f, 0x0b, 0x2b, 0xaf, 0x4a, 0x25, 0x5d, 0x55, 0xd2, 0xab, 0x46, 0xfa, 0xc4, 0xb0, 0xdd, 0xdf, 0xc1, 0xca, 0xab, 0x73,
0xcf, 0x19, 0x15, 0x62, 0x44, 0xa2, 0xe1, 0x73, 0x24, 0x90, 0xcc, 0x1e, 0x31, 0x66, 0x84, 0x06, 0x46, 0x85, 0x18, 0x91, 0x68, 0xf8, 0x0c, 0x09, 0x24, 0xb3, 0x47, 0x8c, 0x19, 0xa1, 0x01, 0x37,
0xdc, 0x58, 0x6b, 0x49, 0xe7, 0x13, 0xe8, 0x08, 0x2d, 0x8b, 0x83, 0x81, 0x95, 0x29, 0x2b, 0x99, 0xd6, 0x5a, 0xd2, 0xf9, 0x18, 0x3a, 0x42, 0xcb, 0xe2, 0x60, 0x60, 0x65, 0xca, 0x4a, 0x66, 0x2d,
0xb5, 0x74, 0xa0, 0x6f, 0x84, 0x7f, 0x08, 0x2b, 0x99, 0xb0, 0xcc, 0x3f, 0xc6, 0xde, 0x76, 0xca, 0x1d, 0xe8, 0x1b, 0xe1, 0x1f, 0xc1, 0x4a, 0x26, 0x2c, 0xf3, 0x8f, 0xb1, 0xb7, 0x9d, 0x72, 0x5f,
0x7d, 0x4d, 0x42, 0xec, 0x5e, 0xa8, 0x58, 0xa9, 0x45, 0x76, 0x3e, 0x81, 0x46, 0x16, 0x87, 0x92, 0x91, 0x10, 0xbb, 0x17, 0x2a, 0x56, 0x6a, 0x91, 0x9d, 0x8f, 0xa1, 0x91, 0xc5, 0xa1, 0xa4, 0x76,
0xda, 0x21, 0x2b, 0x7a, 0x87, 0xd8, 0x70, 0x7a, 0xcb, 0x69, 0x50, 0xbe, 0x80, 0x55, 0x91, 0x1a, 0xc8, 0x8a, 0xde, 0x21, 0x36, 0x9c, 0xde, 0x72, 0x1a, 0x94, 0xcf, 0x61, 0x55, 0xa4, 0x86, 0x0f,
0x3e, 0x08, 0x90, 0x40, 0xc5, 0x4d, 0x55, 0xf4, 0xca, 0x5b, 0x11, 0x05, 0xda, 0x7d, 0x0a, 0x8d, 0x02, 0x24, 0x50, 0x71, 0x53, 0x15, 0xbd, 0xf2, 0x56, 0x44, 0x81, 0x76, 0x9f, 0x40, 0xa3, 0x4f,
0x3e, 0x09, 0xb8, 0x56, 0xdc, 0x85, 0x25, 0x3f, 0x61, 0x0c, 0x47, 0xc2, 0xba, 0x6c, 0x48, 0x67, 0x02, 0xae, 0x15, 0x77, 0x61, 0xc9, 0x4f, 0x18, 0xc3, 0x91, 0xb0, 0x2e, 0x1b, 0xd2, 0xd9, 0x80,
0x03, 0x6a, 0x23, 0x12, 0x12, 0x61, 0xdc, 0xd4, 0x84, 0x4b, 0x01, 0x5e, 0xe2, 0x90, 0xb2, 0xb1, 0xda, 0x88, 0x84, 0x44, 0x18, 0x37, 0x35, 0xe1, 0x52, 0x80, 0x17, 0x38, 0xa4, 0x6c, 0xac, 0x02,
0x0a, 0xd8, 0x06, 0xd4, 0xf2, 0x8b, 0xab, 0x09, 0xe7, 0x0e, 0x34, 0x42, 0x74, 0x95, 0x2e, 0xaa, 0xb6, 0x01, 0xb5, 0xfc, 0xe2, 0x6a, 0xc2, 0xb9, 0x03, 0x8d, 0x10, 0x5d, 0xa5, 0x8b, 0x2a, 0x47,
0x1c, 0x59, 0x0e, 0xd1, 0x95, 0x36, 0xbe, 0x0b, 0x4b, 0x67, 0x88, 0x8c, 0xfc, 0x48, 0x98, 0xa8, 0x96, 0x43, 0x74, 0xa5, 0x8d, 0xef, 0xc2, 0xd2, 0x19, 0x22, 0x23, 0x3f, 0x12, 0x26, 0x2a, 0x96,
0x58, 0x32, 0x53, 0x58, 0xcd, 0x2b, 0xfc, 0x6b, 0x19, 0x9a, 0x5a, 0xa3, 0x36, 0x78, 0x03, 0x6a, 0xcc, 0x14, 0x56, 0xf3, 0x0a, 0xff, 0x56, 0x86, 0xa6, 0xd6, 0xa8, 0x0d, 0xde, 0x80, 0x9a, 0x8f,
0x3e, 0xf2, 0xcf, 0x53, 0x95, 0x8a, 0x70, 0x1e, 0x58, 0x43, 0xca, 0xf9, 0x24, 0x9c, 0x59, 0x6a, 0xfc, 0xf3, 0x54, 0xa5, 0x22, 0x9c, 0xfb, 0xd6, 0x90, 0x72, 0x3e, 0x09, 0x67, 0x96, 0x5a, 0xd3,
0x4d, 0x7b, 0x04, 0xc0, 0x2f, 0x51, 0x6c, 0x6c, 0xab, 0xcc, 0x11, 0x6e, 0x48, 0x19, 0x6d, 0xee, 0x1e, 0x02, 0xf0, 0x4b, 0x14, 0x1b, 0xdb, 0x2a, 0x73, 0x84, 0x1b, 0x52, 0x46, 0x9b, 0xfb, 0x29,
0x67, 0xd0, 0xd2, 0xfb, 0xce, 0x4c, 0xa9, 0xce, 0x99, 0xd2, 0xd4, 0x52, 0x7a, 0xd2, 0x7d, 0x68, 0xb4, 0xf4, 0xbe, 0x33, 0x53, 0xaa, 0x73, 0xa6, 0x34, 0xb5, 0x94, 0x9e, 0x74, 0x0f, 0xda, 0x09,
0x27, 0x1c, 0x0f, 0xce, 0x09, 0x66, 0x88, 0xf9, 0xe7, 0xe3, 0x6e, 0x4d, 0xdf, 0x91, 0x09, 0xc7, 0xc7, 0x83, 0x73, 0x82, 0x19, 0x62, 0xfe, 0xf9, 0xb8, 0x5b, 0xd3, 0x77, 0x64, 0xc2, 0xf1, 0x73,
0x2f, 0x2c, 0xcf, 0xd9, 0x85, 0x9a, 0x4c, 0x7f, 0xbc, 0x5b, 0x57, 0xd7, 0xf1, 0xdd, 0x3c, 0xa4, 0xcb, 0x73, 0x76, 0xa1, 0x26, 0xd3, 0x1f, 0xef, 0xd6, 0xd5, 0x75, 0xfc, 0x7e, 0x1e, 0x52, 0xb9,
0x72, 0x75, 0x47, 0xfd, 0x1e, 0x44, 0x82, 0x8d, 0x3d, 0x2d, 0xda, 0xfb, 0x1c, 0x20, 0x63, 0x3a, 0xba, 0xa3, 0x7e, 0x0f, 0x22, 0xc1, 0xc6, 0x9e, 0x16, 0xed, 0x7d, 0x06, 0x90, 0x31, 0x9d, 0x35,
0x6b, 0x50, 0x79, 0x8b, 0xc7, 0xe6, 0x1c, 0xca, 0x4f, 0x19, 0x9c, 0x0b, 0x34, 0x4a, 0x6c, 0xd4, 0xa8, 0xbc, 0xc1, 0x63, 0x73, 0x0e, 0xe5, 0xa7, 0x0c, 0xce, 0x05, 0x1a, 0x25, 0x36, 0xea, 0x9a,
0x35, 0xf1, 0xa4, 0xfc, 0x79, 0xc9, 0xf5, 0x61, 0x75, 0x6f, 0xf4, 0x96, 0xd0, 0xdc, 0xf4, 0x0d, 0x78, 0x5c, 0xfe, 0xac, 0xe4, 0xfa, 0xb0, 0xba, 0x37, 0x7a, 0x43, 0x68, 0x6e, 0xfa, 0x06, 0xd4,
0xa8, 0x85, 0xe8, 0x1b, 0xca, 0x6c, 0x24, 0x15, 0xa1, 0xb8, 0x24, 0xa2, 0xcc, 0x42, 0x28, 0xc2, 0x42, 0xf4, 0x35, 0x65, 0x36, 0x92, 0x8a, 0x50, 0x5c, 0x12, 0x51, 0x66, 0x21, 0x14, 0xe1, 0xac,
0x59, 0x81, 0x32, 0x8d, 0x55, 0xbc, 0x1a, 0x5e, 0x99, 0xc6, 0x99, 0xa2, 0x6a, 0x4e, 0x91, 0xfb, 0x40, 0x99, 0xc6, 0x2a, 0x5e, 0x0d, 0xaf, 0x4c, 0xe3, 0x4c, 0x51, 0x35, 0xa7, 0xc8, 0xfd, 0x67,
0x8f, 0x2a, 0x40, 0xa6, 0xc5, 0xf1, 0xa0, 0x47, 0xe8, 0x80, 0x63, 0x26, 0x4b, 0x90, 0xc1, 0xe9, 0x15, 0x20, 0xd3, 0xe2, 0x78, 0xd0, 0x23, 0x74, 0xc0, 0x31, 0x93, 0x25, 0xc8, 0xe0, 0x74, 0x2c,
0x58, 0x60, 0x3e, 0x60, 0xd8, 0x4f, 0x18, 0x27, 0x17, 0x72, 0xfd, 0xa4, 0xdb, 0xb7, 0xb4, 0xdb, 0x30, 0x1f, 0x30, 0xec, 0x27, 0x8c, 0x93, 0x0b, 0xb9, 0x7e, 0xd2, 0xed, 0x5b, 0xda, 0xed, 0x09,
0x13, 0xb6, 0x79, 0xb7, 0x09, 0x3d, 0xd6, 0xf3, 0xf6, 0xe4, 0x34, 0xcf, 0xce, 0x72, 0x8e, 0xe0, 0xdb, 0xbc, 0xdb, 0x84, 0x1e, 0xeb, 0x79, 0x7b, 0x72, 0x9a, 0x67, 0x67, 0x39, 0x47, 0x70, 0x2b,
0x56, 0x86, 0x19, 0xe4, 0xe0, 0xca, 0x8b, 0xe0, 0xd6, 0x53, 0xb8, 0x20, 0x83, 0x3a, 0x80, 0x75, 0xc3, 0x0c, 0x72, 0x70, 0xe5, 0x45, 0x70, 0xeb, 0x29, 0x5c, 0x90, 0x41, 0x1d, 0xc0, 0x3a, 0xa1,
0x42, 0x07, 0xdf, 0x26, 0x38, 0x29, 0x00, 0x55, 0x16, 0x01, 0x75, 0x08, 0xfd, 0xa5, 0x9a, 0x90, 0x83, 0x6f, 0x12, 0x9c, 0x14, 0x80, 0x2a, 0x8b, 0x80, 0x3a, 0x84, 0xfe, 0x4a, 0x4d, 0xc8, 0x60,
0xc1, 0xf4, 0xe1, 0x83, 0x9c, 0x97, 0xf2, 0xb8, 0xe7, 0xc0, 0xaa, 0x8b, 0xc0, 0x36, 0x53, 0xab, 0xfa, 0xf0, 0x5e, 0xce, 0x4b, 0x79, 0xdc, 0x73, 0x60, 0xd5, 0x45, 0x60, 0x9b, 0xa9, 0x55, 0x32,
0x64, 0x3e, 0xc8, 0x10, 0x7f, 0x0e, 0x9b, 0x84, 0x0e, 0x2e, 0x11, 0x11, 0x93, 0x70, 0xb5, 0xf7, 0x1f, 0x64, 0x88, 0xbf, 0x80, 0x4d, 0x42, 0x07, 0x97, 0x88, 0x88, 0x49, 0xb8, 0xda, 0x3b, 0x9c,
0x38, 0x29, 0x2f, 0xdd, 0x22, 0x96, 0x76, 0x32, 0xc4, 0x6c, 0x58, 0x70, 0xb2, 0xfe, 0x1e, 0x27, 0x94, 0x97, 0x6e, 0x11, 0x4b, 0x3b, 0x19, 0x62, 0x36, 0x2c, 0x38, 0x59, 0x7f, 0x87, 0x93, 0x2f,
0x5f, 0xaa, 0x09, 0x19, 0xcc, 0x33, 0xe8, 0x10, 0x3a, 0x69, 0xcd, 0xd2, 0x22, 0x90, 0x55, 0x42, 0xd4, 0x84, 0x0c, 0xe6, 0x29, 0x74, 0x08, 0x9d, 0xb4, 0x66, 0x69, 0x11, 0xc8, 0x2a, 0xa1, 0x45,
0x8b, 0x96, 0xec, 0x41, 0x87, 0x63, 0x5f, 0x50, 0x96, 0xdf, 0x04, 0xcb, 0x8b, 0x20, 0xd6, 0x8c, 0x4b, 0xf6, 0xa0, 0xc3, 0xb1, 0x2f, 0x28, 0xcb, 0x6f, 0x82, 0xe5, 0x45, 0x10, 0x6b, 0x46, 0x3e,
0x7c, 0x8a, 0xe1, 0xfe, 0x1a, 0x5a, 0x2f, 0x92, 0x21, 0x16, 0xa3, 0xd3, 0x34, 0x19, 0xdc, 0x58, 0xc5, 0x70, 0x7f, 0x03, 0xad, 0xe7, 0xc9, 0x10, 0x8b, 0xd1, 0x69, 0x9a, 0x0c, 0x6e, 0x2c, 0xff,
0xfe, 0x71, 0xff, 0x55, 0x86, 0xe6, 0xfe, 0x90, 0xd1, 0x24, 0x2e, 0xe4, 0x64, 0x7d, 0x48, 0x27, 0xb8, 0xff, 0x2e, 0x43, 0x73, 0x7f, 0xc8, 0x68, 0x12, 0x17, 0x72, 0xb2, 0x3e, 0xa4, 0x93, 0x39,
0x73, 0xb2, 0x12, 0x51, 0x39, 0x59, 0x0b, 0x3f, 0x86, 0x56, 0xa8, 0x8e, 0xae, 0x91, 0xd7, 0x79, 0x59, 0x89, 0xa8, 0x9c, 0xac, 0x85, 0x1f, 0x41, 0x2b, 0x54, 0x47, 0xd7, 0xc8, 0xeb, 0x3c, 0xd4,
0xa8, 0x33, 0x75, 0xa8, 0xbd, 0x66, 0x98, 0x4b, 0x66, 0x3b, 0x00, 0x31, 0x09, 0xb8, 0x99, 0xa3, 0x99, 0x3a, 0xd4, 0x5e, 0x33, 0xcc, 0x25, 0xb3, 0x1d, 0x80, 0x98, 0x04, 0xdc, 0xcc, 0xd1, 0xe9,
0xd3, 0xd1, 0xaa, 0xa9, 0x08, 0x6d, 0x8a, 0xf6, 0x1a, 0x71, 0x9a, 0xad, 0x3f, 0x85, 0xe6, 0xa9, 0x68, 0xd5, 0x54, 0x84, 0x36, 0x45, 0x7b, 0x8d, 0x38, 0xcd, 0xd6, 0x9f, 0x40, 0xf3, 0x54, 0x06,
0x0c, 0x92, 0x99, 0x50, 0x48, 0x46, 0x59, 0xf4, 0x3c, 0x38, 0xcd, 0x0e, 0xe1, 0x0b, 0x68, 0x9f, 0xc9, 0x4c, 0x28, 0x24, 0xa3, 0x2c, 0x7a, 0x1e, 0x9c, 0x66, 0x87, 0xf0, 0x39, 0xb4, 0xcf, 0x75,
0xeb, 0x90, 0x99, 0x49, 0x7a, 0x0f, 0xdd, 0x37, 0x9e, 0x64, 0xfe, 0xee, 0xe4, 0x23, 0xab, 0x17, 0xc8, 0xcc, 0x24, 0xbd, 0x87, 0xee, 0x19, 0x4f, 0x32, 0x7f, 0x77, 0xf2, 0x91, 0xd5, 0x0b, 0xd0,
0xa0, 0x75, 0x9e, 0x63, 0xf5, 0x8e, 0xa1, 0x33, 0x25, 0x32, 0x23, 0x07, 0x6d, 0xe7, 0x73, 0x50, 0x3a, 0xcf, 0xb1, 0x7a, 0xc7, 0xd0, 0x99, 0x12, 0x99, 0x91, 0x83, 0xb6, 0xf3, 0x39, 0xa8, 0xb9,
0x73, 0xd7, 0xd1, 0x8a, 0xf2, 0x33, 0xf3, 0x79, 0xe9, 0x17, 0xb0, 0x39, 0x59, 0xe6, 0x98, 0xa2, 0xeb, 0x68, 0x45, 0xf9, 0x99, 0xf9, 0xbc, 0xf4, 0x4b, 0xd8, 0x9c, 0x2c, 0x73, 0x4c, 0x51, 0xf6,
0xec, 0x31, 0xb4, 0x7c, 0x65, 0x5d, 0x61, 0x05, 0x3a, 0x53, 0x76, 0x7b, 0x4d, 0x3f, 0x23, 0xdc, 0x08, 0x5a, 0xbe, 0xb2, 0xae, 0xb0, 0x02, 0x9d, 0x29, 0xbb, 0xbd, 0xa6, 0x9f, 0x11, 0x6e, 0x00,
0x00, 0x9c, 0x37, 0x8c, 0x08, 0x7c, 0x2c, 0x18, 0x46, 0xe1, 0x4d, 0x54, 0xcd, 0x0e, 0x54, 0xd5, 0xce, 0x6b, 0x46, 0x04, 0x3e, 0x16, 0x0c, 0xa3, 0xf0, 0x26, 0xaa, 0x66, 0x07, 0xaa, 0xea, 0x8a,
0x15, 0x5b, 0x51, 0x45, 0xa1, 0xfa, 0x76, 0x3f, 0x82, 0xf5, 0x82, 0x16, 0x63, 0xf2, 0x1a, 0x54, 0xad, 0xa8, 0xa2, 0x50, 0x7d, 0xbb, 0x1f, 0xc2, 0x7a, 0x41, 0x8b, 0x31, 0x79, 0x0d, 0x2a, 0x23,
0x46, 0x38, 0x52, 0xe8, 0x6d, 0x4f, 0x7e, 0xba, 0x08, 0x3a, 0x1e, 0x46, 0xc1, 0xcd, 0x59, 0x63, 0x1c, 0x29, 0xf4, 0xb6, 0x27, 0x3f, 0x5d, 0x04, 0x1d, 0x0f, 0xa3, 0xe0, 0xe6, 0xac, 0x31, 0x2a,
0x54, 0x54, 0x32, 0x15, 0xdb, 0xe0, 0xe4, 0x55, 0x18, 0x53, 0xac, 0xd5, 0xa5, 0x9c, 0xd5, 0xaf, 0x2a, 0x99, 0x8a, 0x6d, 0x70, 0xf2, 0x2a, 0x8c, 0x29, 0xd6, 0xea, 0x52, 0xce, 0xea, 0x97, 0xd0,
0xa0, 0xb3, 0x3f, 0xa2, 0x1c, 0x1f, 0x8b, 0x80, 0x44, 0x37, 0x51, 0xe6, 0x7f, 0x07, 0xeb, 0xaf, 0xd9, 0x1f, 0x51, 0x8e, 0x8f, 0x45, 0x40, 0xa2, 0x9b, 0x28, 0xf3, 0xbf, 0x85, 0xf5, 0x57, 0x62,
0xc5, 0xf8, 0x8d, 0x04, 0xe3, 0xe4, 0x37, 0xf8, 0x86, 0xfc, 0x63, 0xf4, 0xd2, 0xfa, 0xc7, 0xe8, 0xfc, 0x5a, 0x82, 0x71, 0xf2, 0x5b, 0x7c, 0x43, 0xfe, 0x31, 0x7a, 0x69, 0xfd, 0x63, 0xf4, 0x52,
0xa5, 0xac, 0xf0, 0x7d, 0x3a, 0x4a, 0xc2, 0x48, 0x6d, 0xf7, 0xb6, 0x67, 0x28, 0xf7, 0xf7, 0x25, 0x56, 0xf8, 0x3e, 0x1d, 0x25, 0x61, 0xa4, 0xb6, 0x7b, 0xdb, 0x33, 0x94, 0xfb, 0xd7, 0x12, 0x6c,
0xd8, 0xd0, 0x6f, 0xf0, 0x63, 0xfd, 0xf4, 0xb4, 0xea, 0x7b, 0xb0, 0x7c, 0x4e, 0xb9, 0x88, 0x50, 0xe8, 0x37, 0xf8, 0xb1, 0x7e, 0x7a, 0x5a, 0xf5, 0x3d, 0x58, 0x3e, 0xa7, 0x5c, 0x44, 0x28, 0xc4,
0x88, 0x8d, 0xea, 0x94, 0x96, 0xf0, 0xf2, 0xcd, 0x5a, 0x56, 0xaf, 0x02, 0xf9, 0x59, 0x78, 0x18, 0x46, 0x75, 0x4a, 0x4b, 0x78, 0xf9, 0x66, 0x2d, 0xab, 0x57, 0x81, 0xfc, 0x2c, 0x3c, 0x8c, 0x2b,
0x57, 0x16, 0x3f, 0x8c, 0xa7, 0x9e, 0xbe, 0xd5, 0x19, 0x4f, 0xdf, 0xdb, 0x70, 0xeb, 0x39, 0xe6, 0x8b, 0x1f, 0xc6, 0x53, 0x4f, 0xdf, 0xea, 0xf4, 0xd3, 0xd7, 0xf9, 0x3e, 0x80, 0x15, 0x22, 0x81,
0x82, 0xd1, 0x71, 0xd1, 0x2c, 0x17, 0x41, 0xe3, 0xa8, 0xff, 0x2c, 0x08, 0x18, 0xe6, 0xdc, 0x79, 0xba, 0xf8, 0x1b, 0x5e, 0xc3, 0x70, 0x8e, 0x02, 0xf7, 0x36, 0xdc, 0x7a, 0x86, 0xb9, 0x60, 0x74,
0x00, 0xf5, 0x33, 0x14, 0x92, 0x91, 0x3e, 0x39, 0x2b, 0x36, 0xb1, 0x1c, 0xf5, 0x7f, 0xa6, 0xb8, 0x5c, 0xb4, 0xda, 0x45, 0xd0, 0x38, 0xea, 0x3f, 0x0d, 0x02, 0x86, 0x39, 0x77, 0xee, 0x43, 0xfd,
0x9e, 0x19, 0x95, 0xd9, 0x0a, 0xe9, 0x29, 0x26, 0x4e, 0x96, 0x94, 0x0b, 0x1c, 0x22, 0xfe, 0xd6, 0x0c, 0x85, 0x64, 0xa4, 0x0f, 0xd6, 0x8a, 0xcd, 0x3b, 0x47, 0xfd, 0x9f, 0x2b, 0xae, 0x67, 0x46,
0xdc, 0xc9, 0xea, 0x5b, 0x86, 0xa4, 0x71, 0x14, 0x09, 0xcc, 0xce, 0x90, 0xaf, 0x5e, 0x5b, 0xfa, 0x65, 0x32, 0x43, 0x7a, 0x8a, 0x09, 0xa3, 0x25, 0xe5, 0xfa, 0x87, 0x88, 0xbf, 0x31, 0x57, 0xb6,
0xf5, 0x6f, 0xa2, 0x60, 0x28, 0x39, 0x53, 0xc5, 0x46, 0x03, 0xaa, 0x6f, 0x99, 0x58, 0x52, 0xe3, 0xfa, 0x76, 0xff, 0x50, 0x82, 0xc6, 0x51, 0x24, 0x30, 0x3b, 0x43, 0xbe, 0x7a, 0x8c, 0xe9, 0xe6,
0xd2, 0x40, 0xac, 0x5a, 0xa3, 0xcc, 0x80, 0x97, 0x97, 0x91, 0xa1, 0x0c, 0x45, 0x62, 0x0a, 0x00, 0x80, 0x09, 0x92, 0xa1, 0xe4, 0x4c, 0x15, 0x3a, 0x0d, 0xa8, 0xbe, 0x65, 0xde, 0x49, 0x8d, 0x4b,
0xf9, 0x29, 0x15, 0x9e, 0x5f, 0x4a, 0x01, 0x55, 0xef, 0x34, 0x3c, 0x43, 0xb9, 0xdf, 0x41, 0xcd, 0xe3, 0xb4, 0x6a, 0x8d, 0x32, 0x03, 0x5e, 0x5e, 0x46, 0x46, 0x3a, 0x14, 0x89, 0xa9, 0x0f, 0xe4,
0xa3, 0x89, 0xd0, 0x9b, 0x12, 0x9b, 0xf7, 0x55, 0xc3, 0x53, 0xdf, 0xd2, 0xc3, 0x21, 0x12, 0xf8, 0xa7, 0x54, 0x78, 0x7e, 0x29, 0x05, 0x4c, 0x54, 0x0c, 0xe5, 0x7e, 0x0b, 0x35, 0x8f, 0x26, 0x42,
0x12, 0x8d, 0xad, 0x87, 0x86, 0xcc, 0xd9, 0x5f, 0x29, 0xd8, 0x2f, 0x5f, 0x91, 0xea, 0x91, 0xa4, 0xef, 0x59, 0x6c, 0x9e, 0x5f, 0x0d, 0x4f, 0x7d, 0x4b, 0x0f, 0x87, 0x48, 0xe0, 0x4b, 0x34, 0xb6,
0x74, 0x37, 0x3c, 0x43, 0xc9, 0xcb, 0x80, 0xfb, 0x34, 0xc6, 0x4a, 0x7b, 0xdb, 0xd3, 0x84, 0xfb, 0x1e, 0x1a, 0x32, 0x67, 0x7f, 0xa5, 0x60, 0xbf, 0x7c, 0x64, 0xaa, 0x37, 0x94, 0xd2, 0xdd, 0xf0,
0x10, 0xea, 0x4a, 0xb9, 0x5c, 0x3e, 0xf3, 0x65, 0x4a, 0x8f, 0xa6, 0x76, 0x4f, 0xf1, 0x3c, 0x33, 0x0c, 0x25, 0xef, 0x0a, 0xee, 0xd3, 0x18, 0x2b, 0xed, 0x6d, 0x4f, 0x13, 0xee, 0x03, 0xa8, 0x2b,
0xe4, 0x1e, 0xda, 0x77, 0x5e, 0x1a, 0x47, 0xbb, 0xad, 0x1e, 0x42, 0x83, 0x58, 0x9e, 0x49, 0x46, 0xe5, 0x72, 0x75, 0xcd, 0x97, 0xa9, 0x4c, 0x9a, 0xda, 0x3d, 0xc5, 0xf3, 0xcc, 0x90, 0x7b, 0x68,
0x36, 0x40, 0xa9, 0x68, 0x26, 0xe1, 0x3e, 0x87, 0xf5, 0x67, 0x41, 0xf0, 0x7d, 0x51, 0x0e, 0x6d, 0x9f, 0x81, 0x69, 0x1c, 0xed, 0xae, 0x7b, 0x00, 0x0d, 0x62, 0x79, 0x26, 0x57, 0xd9, 0x00, 0xa5,
0x33, 0xe4, 0xfb, 0x02, 0x3d, 0x85, 0x75, 0xed, 0x97, 0xf6, 0xd3, 0xa2, 0xfc, 0x00, 0xea, 0xcc, 0xa2, 0x99, 0x84, 0xfb, 0x0c, 0xd6, 0x9f, 0x06, 0xc1, 0x77, 0x45, 0x39, 0xb4, 0xbd, 0x92, 0xef,
0xc6, 0xa4, 0x94, 0x75, 0x8f, 0x8c, 0x90, 0x19, 0x73, 0xf7, 0x60, 0xfd, 0x55, 0x34, 0x22, 0x11, 0x0a, 0xf4, 0x04, 0xd6, 0xb5, 0x5f, 0xda, 0x4f, 0x8b, 0xf2, 0x43, 0xa8, 0x33, 0x1b, 0x93, 0x52,
0xde, 0xef, 0x9f, 0xbc, 0xc4, 0x69, 0x1e, 0x73, 0xa0, 0x2a, 0x8b, 0x14, 0x35, 0x75, 0xd9, 0x53, 0xd6, 0x5c, 0x32, 0x42, 0x66, 0xcc, 0xdd, 0x83, 0xf5, 0x97, 0xd1, 0x88, 0x44, 0x78, 0xbf, 0x7f,
0xdf, 0xf2, 0x60, 0x47, 0xa7, 0x03, 0x3f, 0x4e, 0xb8, 0x69, 0xc0, 0xd4, 0xa3, 0xd3, 0xfd, 0x38, 0xf2, 0x02, 0xa7, 0x69, 0xce, 0x81, 0xaa, 0xac, 0x61, 0xd4, 0xd4, 0x65, 0x4f, 0x7d, 0xcb, 0x73,
0xe1, 0xee, 0x5f, 0x4a, 0xb0, 0x64, 0x8e, 0x94, 0x5a, 0x59, 0x46, 0x2e, 0x30, 0x4b, 0x77, 0xa6, 0x1f, 0x9d, 0x0e, 0xfc, 0x38, 0xe1, 0xa6, 0x3f, 0x53, 0x8f, 0x4e, 0xf7, 0xe3, 0x84, 0xcb, 0xd3,
0xa2, 0xe4, 0xc3, 0x49, 0x7f, 0x0d, 0x68, 0x2c, 0x08, 0x4d, 0x0f, 0x6a, 0x5b, 0x73, 0x5f, 0x69, 0xbc, 0x64, 0x4e, 0x9c, 0x5a, 0x59, 0x46, 0x2e, 0x30, 0x4b, 0x77, 0xa6, 0xa2, 0xe4, 0xbb, 0x4a,
0x66, 0x6e, 0x03, 0x54, 0x0a, 0x1b, 0x60, 0x13, 0xea, 0x67, 0x5c, 0x8c, 0xe3, 0x74, 0x63, 0x68, 0x7f, 0x0d, 0x68, 0x2c, 0x08, 0x4d, 0xcf, 0x71, 0x5b, 0x73, 0x5f, 0x6a, 0x66, 0x6e, 0x03, 0x54,
0x4a, 0x6e, 0x31, 0x8b, 0x57, 0x53, 0x78, 0x96, 0x94, 0x4f, 0xd4, 0x90, 0x26, 0x91, 0x18, 0xc4, 0x0a, 0x1b, 0x60, 0x13, 0xea, 0x67, 0x5c, 0x8c, 0xe3, 0x74, 0x63, 0x68, 0x4a, 0x6e, 0x31, 0x8b,
0x94, 0x44, 0x42, 0xb5, 0xbc, 0x1a, 0x1e, 0x28, 0x56, 0x5f, 0x72, 0xdc, 0xdf, 0x95, 0xa0, 0xae, 0x57, 0x53, 0x78, 0x96, 0x94, 0x2f, 0xd8, 0x90, 0x26, 0x91, 0x18, 0xc4, 0x94, 0x44, 0x42, 0x75,
0x5b, 0x69, 0xb2, 0x04, 0x4e, 0x73, 0x59, 0x99, 0xa8, 0x7b, 0x41, 0xe9, 0x32, 0xc7, 0x48, 0x69, 0xc4, 0x1a, 0x1e, 0x28, 0x56, 0x5f, 0x72, 0xdc, 0xdf, 0x97, 0xa0, 0xae, 0x3b, 0x6d, 0xb2, 0x42,
0xba, 0x0d, 0x4b, 0x17, 0xe1, 0x20, 0x46, 0xe2, 0xdc, 0x9a, 0x76, 0x11, 0xf6, 0x91, 0x38, 0x97, 0x4e, 0x53, 0x5d, 0x99, 0xa8, 0x6b, 0x43, 0xe9, 0x32, 0xc7, 0x48, 0x69, 0xba, 0x0d, 0x4b, 0x17,
0x9e, 0x65, 0x29, 0x51, 0x8d, 0x6b, 0x13, 0xdb, 0x29, 0x57, 0x89, 0xcd, 0xb5, 0xd4, 0xfd, 0x95, 0xe1, 0x20, 0x46, 0xe2, 0xdc, 0x9a, 0x76, 0x11, 0xf6, 0x91, 0x38, 0x97, 0x9e, 0x65, 0x19, 0x53,
0xac, 0xfc, 0xd3, 0x36, 0xd2, 0x1a, 0x54, 0x92, 0xd4, 0x18, 0xf9, 0x29, 0x39, 0xc3, 0x34, 0x99, 0x8d, 0x6b, 0x13, 0xdb, 0x29, 0x57, 0x89, 0xcd, 0xb5, 0xd4, 0xfd, 0xb5, 0x7c, 0x18, 0xa4, 0x5d,
0xca, 0x4f, 0xe7, 0x01, 0xac, 0xa0, 0x20, 0x20, 0x72, 0x3a, 0x1a, 0x1d, 0x92, 0xc0, 0xf6, 0x42, 0xa6, 0x35, 0xa8, 0x24, 0xa9, 0x31, 0xf2, 0x53, 0x72, 0x86, 0x69, 0xae, 0x95, 0x9f, 0xce, 0x7d,
0x26, 0xb8, 0x1f, 0xf7, 0x60, 0xd9, 0xa6, 0x1d, 0xa7, 0x0e, 0xe5, 0x8b, 0xc7, 0x6b, 0xff, 0xa7, 0x58, 0x41, 0x41, 0x40, 0xe4, 0x74, 0x34, 0x3a, 0x24, 0x81, 0x6d, 0x95, 0x4c, 0x70, 0x3f, 0xea,
0xfe, 0x7f, 0xbc, 0x56, 0xda, 0xfd, 0x73, 0x0b, 0x5a, 0xcf, 0x86, 0x38, 0x12, 0xa6, 0x4e, 0x75, 0xc1, 0xb2, 0x4d, 0x3b, 0x4e, 0x1d, 0xca, 0x17, 0x8f, 0xd6, 0xbe, 0xa7, 0xfe, 0x7f, 0xb2, 0x56,
0x0e, 0x61, 0x75, 0xa2, 0xef, 0xe9, 0x98, 0x87, 0xcb, 0xec, 0x76, 0x68, 0x6f, 0x73, 0x47, 0xf7, 0xda, 0xfd, 0x4b, 0x0b, 0x5a, 0x4f, 0x87, 0x38, 0x12, 0xa6, 0x8c, 0x75, 0x0e, 0x61, 0x75, 0xa2,
0x51, 0x77, 0x6c, 0x1f, 0x75, 0xe7, 0x20, 0x8c, 0xc5, 0xd8, 0x39, 0x80, 0x95, 0x62, 0x87, 0xd0, 0x2d, 0xea, 0x98, 0x77, 0xcd, 0xec, 0x6e, 0x69, 0x6f, 0x73, 0x47, 0xb7, 0x59, 0x77, 0x6c, 0x9b,
0xb9, 0x63, 0xd3, 0xee, 0x8c, 0xbe, 0xe1, 0x5c, 0x98, 0x43, 0x58, 0x9d, 0x68, 0x16, 0x5a, 0x7b, 0x75, 0xe7, 0x20, 0x8c, 0xc5, 0xd8, 0x39, 0x80, 0x95, 0x62, 0x03, 0xd1, 0xb9, 0x63, 0xb3, 0xf2,
0x66, 0xf7, 0x10, 0xe7, 0x02, 0x7d, 0x09, 0xcd, 0x5c, 0x77, 0xd0, 0xe9, 0x6a, 0x90, 0xe9, 0x86, 0x8c, 0xb6, 0xe2, 0x5c, 0x98, 0x43, 0x58, 0x9d, 0xe8, 0x25, 0x5a, 0x7b, 0x66, 0xb7, 0x18, 0xe7,
0xe1, 0x5c, 0x80, 0x7d, 0x68, 0x17, 0x1a, 0x76, 0x4e, 0xcf, 0xf8, 0x33, 0xa3, 0x8b, 0x37, 0x17, 0x02, 0x7d, 0x01, 0xcd, 0x5c, 0xf3, 0xd0, 0xe9, 0x6a, 0x90, 0xe9, 0x7e, 0xe2, 0x5c, 0x80, 0x7d,
0x64, 0x0f, 0x9a, 0xb9, 0xbe, 0x99, 0xb5, 0x62, 0xba, 0x39, 0xd7, 0xfb, 0x60, 0xc6, 0x88, 0xb9, 0x68, 0x17, 0xfa, 0x79, 0x4e, 0xcf, 0xf8, 0x33, 0xa3, 0xc9, 0x37, 0x17, 0x64, 0x0f, 0x9a, 0xb9,
0xf9, 0x5f, 0x40, 0xbb, 0xd0, 0xe5, 0xb2, 0x86, 0xcc, 0xea, 0xb0, 0xf5, 0xee, 0xcc, 0x1c, 0x33, 0xb6, 0x9a, 0xb5, 0x62, 0xba, 0x77, 0xd7, 0x7b, 0x6f, 0xc6, 0x88, 0x29, 0x0c, 0x9e, 0x43, 0xbb,
0x48, 0x87, 0xb0, 0x3a, 0xd1, 0xf3, 0xb2, 0xc1, 0x9d, 0xdd, 0x0a, 0x9b, 0xeb, 0xd6, 0x57, 0x6a, 0xd0, 0x04, 0xb3, 0x86, 0xcc, 0x6a, 0xc0, 0xf5, 0xee, 0xcc, 0x1c, 0x33, 0x48, 0x87, 0xb0, 0x3a,
0xb1, 0x73, 0x45, 0x5e, 0x6e, 0xb1, 0xa7, 0x3b, 0x5c, 0xbd, 0xbb, 0xb3, 0x07, 0x8d, 0x55, 0x07, 0xd1, 0x12, 0xb3, 0xc1, 0x9d, 0xdd, 0x29, 0x9b, 0xeb, 0xd6, 0x97, 0x6a, 0xb1, 0x73, 0x35, 0x60,
0xb0, 0x52, 0x6c, 0x6e, 0x59, 0xb0, 0x99, 0x2d, 0xaf, 0xc5, 0x3b, 0xa7, 0xd0, 0xe7, 0xca, 0x76, 0x6e, 0xb1, 0xa7, 0x1b, 0x60, 0xbd, 0xf7, 0x67, 0x0f, 0x1a, 0xab, 0x0e, 0x60, 0xa5, 0xd8, 0xfb,
0xce, 0xac, 0xf6, 0xd7, 0x5c, 0xa0, 0x67, 0x00, 0xa6, 0x16, 0x0c, 0x48, 0x94, 0x2e, 0xd9, 0x54, 0xb2, 0x60, 0x33, 0x3b, 0x62, 0x8b, 0x77, 0x4e, 0xa1, 0x0d, 0x96, 0xed, 0x9c, 0x59, 0xdd, 0xb1,
0x0d, 0x9a, 0x2e, 0xd9, 0x8c, 0xba, 0xf1, 0x4b, 0x00, 0x5d, 0xc2, 0x05, 0x34, 0x11, 0xce, 0x6d, 0xb9, 0x40, 0x4f, 0x01, 0x4c, 0xa9, 0x18, 0x90, 0x28, 0x5d, 0xb2, 0xa9, 0x12, 0x35, 0x5d, 0xb2,
0x6b, 0xc6, 0x44, 0xdd, 0xd8, 0xeb, 0x4e, 0x0f, 0x4c, 0x01, 0x60, 0xc6, 0xae, 0x03, 0xf0, 0x05, 0x19, 0x65, 0xe5, 0x17, 0x00, 0xba, 0xc2, 0x0b, 0x68, 0x22, 0x9c, 0xdb, 0xd6, 0x8c, 0x89, 0xb2,
0x40, 0x56, 0x1a, 0x5a, 0x80, 0xa9, 0x62, 0x71, 0x41, 0x0c, 0x5a, 0xf9, 0x42, 0xd0, 0x31, 0xbe, 0xb2, 0xd7, 0x9d, 0x1e, 0x98, 0x02, 0xc0, 0x8c, 0x5d, 0x07, 0xe0, 0x73, 0x80, 0xac, 0x72, 0xb4,
0xce, 0x28, 0x0e, 0xe7, 0x42, 0x3c, 0x81, 0x56, 0xfe, 0xbe, 0xb4, 0x10, 0x33, 0xee, 0xd0, 0xde, 0x00, 0x53, 0xb5, 0xe4, 0x82, 0x18, 0xb4, 0xf2, 0x75, 0xa2, 0x63, 0x7c, 0x9d, 0x51, 0x3b, 0xce,
0xe4, 0x3d, 0xe7, 0xfc, 0xd4, 0x6e, 0xd4, 0x8c, 0x55, 0xd8, 0xa8, 0xff, 0x11, 0xc2, 0xc4, 0x3d, 0x85, 0x78, 0x0c, 0xad, 0xfc, 0x7d, 0x69, 0x21, 0x66, 0xdc, 0xa1, 0xbd, 0xc9, 0x7b, 0xce, 0xf9,
0x5b, 0xcc, 0x23, 0xef, 0x47, 0xf8, 0x09, 0xb4, 0xf2, 0x17, 0xac, 0xb5, 0x7f, 0xc6, 0xa5, 0xdb, 0x99, 0xdd, 0xa8, 0x19, 0xab, 0xb0, 0x51, 0xff, 0x2b, 0x84, 0x89, 0x7b, 0xb6, 0x98, 0x47, 0xde,
0x2b, 0x5c, 0xb2, 0x32, 0x71, 0x14, 0xca, 0x58, 0x7b, 0x5e, 0x67, 0xd5, 0xb6, 0x8b, 0xd2, 0x69, 0x8d, 0xf0, 0x53, 0x68, 0xe5, 0x2f, 0x58, 0x6b, 0xff, 0x8c, 0x4b, 0xb7, 0x57, 0xb8, 0x64, 0x65,
0xb1, 0xea, 0xb4, 0x87, 0x62, 0x66, 0x2d, 0xba, 0x68, 0x1d, 0xf3, 0x17, 0xbd, 0x75, 0x62, 0xc6, 0xe2, 0x28, 0x54, 0xb9, 0xf6, 0xbc, 0xce, 0x2a, 0x7d, 0x17, 0xa5, 0xd3, 0x62, 0xd5, 0x69, 0x0f,
0xe5, 0x3f, 0x0f, 0x62, 0xaf, 0xf5, 0xb7, 0x77, 0xf7, 0x4a, 0x7f, 0x7f, 0x77, 0xaf, 0xf4, 0xcf, 0xc5, 0xcc, 0x5a, 0x74, 0xd1, 0x3a, 0xe6, 0x2f, 0x7a, 0xeb, 0xc4, 0x8c, 0xcb, 0x7f, 0x1e, 0xc4,
0x77, 0xf7, 0x4a, 0xa7, 0x75, 0x35, 0xfa, 0xd9, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0x48, 0x4a, 0x5e, 0xeb, 0xef, 0x6f, 0xef, 0x96, 0xfe, 0xf1, 0xf6, 0x6e, 0xe9, 0x5f, 0x6f, 0xef, 0x96, 0x4e,
0x6a, 0xab, 0x6c, 0x1b, 0x00, 0x00, 0xeb, 0x6a, 0xf4, 0xd3, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xc0, 0xbf, 0x6f, 0x42, 0x8b, 0x1b,
0x00, 0x00,
} }