From 9861dd069bf6d38ddbdf41e56d79a6a1ad4cf922 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Thu, 4 Aug 2022 00:15:19 +0200 Subject: [PATCH] vendor: github.com/moby/swarmkit/v2 v2.0.0-20220721174824-48dd89375d0a full diff: https://github.com/moby/swarmkit/compare/6068d1894d46...48dd89375d0a3e8a333c52bce1e6297e0b192d06 Finishes off the work to change references to cluster volumes in the API from using "csi" as the magic word to "cluster". This reflects that the volumes are "cluster volumes", not "csi volumes". Notably, there is no change to the plugin definitions being "csinode" and "csicontroller". This terminology is appropriate with regards to plugins because it accurates reflects what the plugin is. Signed-off-by: Drew Erny Signed-off-by: Sebastiaan van Stijn --- api/swagger.yaml | 4 + api/types/mount/mount.go | 2 +- api/types/volume/cluster_volume.go | 4 +- .../cluster/executor/container/container.go | 4 +- daemon/cluster/executor/container/validate.go | 2 +- docs/api/v1.42.yaml | 4 + docs/cluster_volumes.md | 6 +- vendor.mod | 2 +- vendor.sum | 4 +- .../moby/swarmkit/v2/agent/exec/errors.go | 12 +- .../moby/swarmkit/v2/agent/storage.go | 10 +- .../moby/swarmkit/v2/api/api.pb.txt | 4 +- .../moby/swarmkit/v2/api/defaults/service.go | 2 +- .../moby/swarmkit/v2/api/types.pb.go | 804 +++++++++--------- .../moby/swarmkit/v2/api/types.proto | 2 +- .../moby/swarmkit/v2/ca/certificates.go | 42 +- .../moby/swarmkit/v2/ca/pkcs8/pkcs8.go | 3 +- .../github.com/moby/swarmkit/v2/ca/server.go | 2 +- .../swarmkit/v2/connectionbroker/broker.go | 2 +- .../moby/swarmkit/v2/identity/doc.go | 4 +- .../v2/manager/controlapi/ca_rotation.go | 38 +- .../swarmkit/v2/manager/controlapi/cluster.go | 2 +- .../swarmkit/v2/manager/controlapi/config.go | 6 +- .../v2/manager/controlapi/extension.go | 6 +- .../swarmkit/v2/manager/controlapi/node.go | 2 +- .../v2/manager/controlapi/resource.go | 6 +- .../swarmkit/v2/manager/controlapi/secret.go | 6 +- .../swarmkit/v2/manager/controlapi/service.go | 2 +- .../moby/swarmkit/v2/manager/dirty.go | 3 +- .../v2/manager/dispatcher/dispatcher.go | 2 +- .../v2/manager/encryption/encryption.go | 2 +- .../moby/swarmkit/v2/manager/manager.go | 4 +- .../orchestrator/jobs/global/reconciler.go | 8 +- .../manager/orchestrator/restart/restart.go | 2 +- .../swarmkit/v2/manager/orchestrator/task.go | 2 +- .../v2/manager/orchestrator/taskinit/init.go | 2 +- .../v2/manager/orchestrator/update/updater.go | 2 +- .../swarmkit/v2/manager/scheduler/filter.go | 2 +- .../v2/manager/scheduler/scheduler.go | 40 +- .../swarmkit/v2/manager/scheduler/volumes.go | 2 +- .../manager/state/raft/membership/cluster.go | 2 +- .../swarmkit/v2/manager/state/raft/raft.go | 2 +- .../swarmkit/v2/manager/state/raft/util.go | 2 +- .../v2/manager/state/store/clusters.go | 2 +- .../v2/manager/state/store/configs.go | 2 +- .../v2/manager/state/store/extensions.go | 2 +- .../swarmkit/v2/manager/state/store/memory.go | 2 +- .../v2/manager/state/store/networks.go | 2 +- .../swarmkit/v2/manager/state/store/nodes.go | 2 +- .../swarmkit/v2/manager/state/store/object.go | 2 +- .../v2/manager/state/store/resources.go | 2 +- .../v2/manager/state/store/secrets.go | 2 +- .../v2/manager/state/store/services.go | 2 +- .../swarmkit/v2/manager/state/store/tasks.go | 2 +- .../v2/manager/state/store/volumes.go | 2 +- .../moby/swarmkit/v2/manager/state/watch.go | 41 +- .../github.com/moby/swarmkit/v2/node/node.go | 2 +- vendor/modules.txt | 2 +- 58 files changed, 570 insertions(+), 563 deletions(-) diff --git a/api/swagger.yaml b/api/swagger.yaml index fa2933fe70..a53130a92a 100644 --- a/api/swagger.yaml +++ b/api/swagger.yaml @@ -214,12 +214,14 @@ definitions: - `volume` a docker volume with the given `Name`. - `tmpfs` a `tmpfs`. - `npipe` a named pipe from the host into the container. + - `cluster` a Swarm cluster volume type: "string" enum: - "bind" - "volume" - "tmpfs" - "npipe" + - "cluster" example: "volume" Name: description: | @@ -350,12 +352,14 @@ definitions: - `volume` Creates a volume with the given name and options (or uses a pre-existing volume with the same name and options). These are **not** removed when the container is removed. - `tmpfs` Create a tmpfs with the given options. The mount source cannot be specified for tmpfs. - `npipe` Mounts a named pipe from the host into the container. Must exist prior to creating the container. + - `cluster` a Swarm cluster volume type: "string" enum: - "bind" - "volume" - "tmpfs" - "npipe" + - "cluster" ReadOnly: description: "Whether the mount should be read-only." type: "boolean" diff --git a/api/types/mount/mount.go b/api/types/mount/mount.go index 751dcbaeba..ac4ce62231 100644 --- a/api/types/mount/mount.go +++ b/api/types/mount/mount.go @@ -18,7 +18,7 @@ const ( // TypeNamedPipe is the type for mounting Windows named pipes TypeNamedPipe Type = "npipe" // TypeCluster is the type for Swarm Cluster Volumes. - TypeCluster = "csi" + TypeCluster Type = "cluster" ) // Mount represents a mount (volume). diff --git a/api/types/volume/cluster_volume.go b/api/types/volume/cluster_volume.go index 124fb8ca14..55fc5d3899 100644 --- a/api/types/volume/cluster_volume.go +++ b/api/types/volume/cluster_volume.go @@ -104,7 +104,7 @@ type AccessMode struct { BlockVolume *TypeBlock `json:",omitempty"` } -// Scope defines the Scope of a CSI Volume. This is how many nodes a +// Scope defines the Scope of a Cluster Volume. This is how many nodes a // Volume can be accessed simultaneously on. type Scope string @@ -118,7 +118,7 @@ const ( ScopeMultiNode Scope = "multi" ) -// SharingMode defines the Sharing of a CSI Volume. This is how Tasks using a +// SharingMode defines the Sharing of a Cluster Volume. This is how Tasks using a // Volume at the same time can use it. type SharingMode string diff --git a/daemon/cluster/executor/container/container.go b/daemon/cluster/executor/container/container.go index 77a38a714d..9fb28e0d94 100644 --- a/daemon/cluster/executor/container/container.go +++ b/daemon/cluster/executor/container/container.go @@ -257,7 +257,7 @@ func (c *containerConfig) labels() map[string]string { func (c *containerConfig) mounts(deps exec.VolumeGetter) []enginemount.Mount { var r []enginemount.Mount for _, mount := range c.spec().Mounts { - if mount.Type == api.MountTypeCSI { + if mount.Type == api.MountTypeCluster { r = append(r, c.convertCSIMount(mount, deps)) } else { r = append(r, convertMount(mount)) @@ -308,7 +308,7 @@ func convertMount(m api.Mount) enginemount.Mount { mount.Type = enginemount.TypeTmpfs case api.MountTypeNamedPipe: mount.Type = enginemount.TypeNamedPipe - case api.MountTypeCSI: + case api.MountTypeCluster: mount.Type = enginemount.TypeCluster } diff --git a/daemon/cluster/executor/container/validate.go b/daemon/cluster/executor/container/validate.go index 03cfded8b5..88752198b1 100644 --- a/daemon/cluster/executor/container/validate.go +++ b/daemon/cluster/executor/container/validate.go @@ -37,7 +37,7 @@ func validateMounts(mounts []api.Mount) error { if mount.Source == "" { return errors.New("invalid npipe source, source must not be empty") } - case api.MountTypeCSI: + case api.MountTypeCluster: // nothing to do here. default: return fmt.Errorf("invalid mount type: %s", mount.Type) diff --git a/docs/api/v1.42.yaml b/docs/api/v1.42.yaml index ac288e8dc0..183c2fb7a7 100644 --- a/docs/api/v1.42.yaml +++ b/docs/api/v1.42.yaml @@ -214,12 +214,14 @@ definitions: - `volume` a docker volume with the given `Name`. - `tmpfs` a `tmpfs`. - `npipe` a named pipe from the host into the container. + - `cluster` a Swarm cluster volume type: "string" enum: - "bind" - "volume" - "tmpfs" - "npipe" + - "cluster" example: "volume" Name: description: | @@ -350,12 +352,14 @@ definitions: - `volume` Creates a volume with the given name and options (or uses a pre-existing volume with the same name and options). These are **not** removed when the container is removed. - `tmpfs` Create a tmpfs with the given options. The mount source cannot be specified for tmpfs. - `npipe` Mounts a named pipe from the host into the container. Must exist prior to creating the container. + - `cluster` a Swarm cluster volume type: "string" enum: - "bind" - "volume" - "tmpfs" - "npipe" + - "cluster" ReadOnly: description: "Whether the mount should be read-only." type: "boolean" diff --git a/docs/cluster_volumes.md b/docs/cluster_volumes.md index c5216d8ea3..f1a3c58efb 100644 --- a/docs/cluster_volumes.md +++ b/docs/cluster_volumes.md @@ -239,13 +239,13 @@ Cluster Volumes are only compatible with Docker Services, not plain Docker Containers. In Docker Services, a Cluster Volume is used the same way any other volume -would be used. The `type` should be set to `csi`. For example, to create a +would be used. The `type` should be set to `cluster`. For example, to create a Service that uses `my-volume` created above, one would execute a command like: ```bash docker service create \ --name my-service \ - --mount type=csi,src=my-volume,dst=/srv/www \ + --mount type=cluster,src=my-volume,dst=/srv/www \ nginx:alpine ``` @@ -278,7 +278,7 @@ To use a Cluster Volume by Group instead of by Name, the mount `src` option is prefixed with `group:`, followed by the group name. For example: ``` ---mount type=csi,src=group:my-group,dst=/srv/www +--mount type=cluster,src=group:my-group,dst=/srv/www ``` This instructs Docker Swarm that any Volume with the Group `my-group` can be diff --git a/vendor.mod b/vendor.mod index f8a271f548..cd1c59bbb2 100644 --- a/vendor.mod +++ b/vendor.mod @@ -53,7 +53,7 @@ require ( github.com/moby/buildkit v0.10.4-0.20220719175648-8e2d9b9006ca // v0.10 branch github.com/moby/ipvs v1.0.2 github.com/moby/locker v1.0.1 - github.com/moby/swarmkit/v2 v2.0.0-20220420172245-6068d1894d46 + github.com/moby/swarmkit/v2 v2.0.0-20220721174824-48dd89375d0a github.com/moby/sys/mount v0.3.3 github.com/moby/sys/mountinfo v0.6.2 github.com/moby/sys/signal v0.7.0 diff --git a/vendor.sum b/vendor.sum index b89a6ebd5b..46cdfa2710 100644 --- a/vendor.sum +++ b/vendor.sum @@ -760,8 +760,8 @@ github.com/moby/ipvs v1.0.2/go.mod h1:2pngiyseZbIKXNv7hsKj3O9UEz30c53MT9005gt2hx github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/moby/swarmkit/v2 v2.0.0-20220420172245-6068d1894d46 h1:FVr9eatIpN7PlE2ZHP850rIJ6AQoZxoZvPSDR+WQY38= -github.com/moby/swarmkit/v2 v2.0.0-20220420172245-6068d1894d46/go.mod h1:/so6Lct4y1x14UprW/loFsOe6xoXVTlvh25V36ULXNQ= +github.com/moby/swarmkit/v2 v2.0.0-20220721174824-48dd89375d0a h1:gLcTxHH4egYVhMVFWRxvWsb79Ok4kfTt1/irZNyovUY= +github.com/moby/swarmkit/v2 v2.0.0-20220721174824-48dd89375d0a/go.mod h1:/so6Lct4y1x14UprW/loFsOe6xoXVTlvh25V36ULXNQ= github.com/moby/sys/mount v0.3.3 h1:fX1SVkXFJ47XWDoeFW4Sq7PdQJnV2QIDZAqjNqgEjUs= github.com/moby/sys/mount v0.3.3/go.mod h1:PBaEorSNTLG5t/+4EgukEQVlAvVEc6ZjTySwKdqp5K0= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= diff --git a/vendor/github.com/moby/swarmkit/v2/agent/exec/errors.go b/vendor/github.com/moby/swarmkit/v2/agent/exec/errors.go index a32a71a992..06d32707a2 100644 --- a/vendor/github.com/moby/swarmkit/v2/agent/exec/errors.go +++ b/vendor/github.com/moby/swarmkit/v2/agent/exec/errors.go @@ -70,15 +70,9 @@ func (t temporary) Temporary() bool { return true } // IsTemporary returns true if the error or a recursive cause returns true for // temporary. func IsTemporary(err error) bool { - if tmp, ok := err.(Temporary); ok && tmp.Temporary() { - return true + var tmp Temporary + if errors.As(err, &tmp) { + return tmp.Temporary() } - - cause := errors.Cause(err) - - if tmp, ok := cause.(Temporary); ok && tmp.Temporary() { - return true - } - return false } diff --git a/vendor/github.com/moby/swarmkit/v2/agent/storage.go b/vendor/github.com/moby/swarmkit/v2/agent/storage.go index 3be91e143b..55c46a06dc 100644 --- a/vendor/github.com/moby/swarmkit/v2/agent/storage.go +++ b/vendor/github.com/moby/swarmkit/v2/agent/storage.go @@ -1,17 +1,17 @@ package agent import ( - "github.com/moby/swarmkit/v2/api" "github.com/gogo/protobuf/proto" + "github.com/moby/swarmkit/v2/api" bolt "go.etcd.io/bbolt" ) // Layout: // -// bucket(v1.tasks.) -> -// data (task protobuf) -// status (task status protobuf) -// assigned (key present) +// bucket(v1.tasks.) -> +// data (task protobuf) +// status (task status protobuf) +// assigned (key present) var ( bucketKeyStorageVersion = []byte("v1") bucketKeyTasks = []byte("tasks") diff --git a/vendor/github.com/moby/swarmkit/v2/api/api.pb.txt b/vendor/github.com/moby/swarmkit/v2/api/api.pb.txt index e2ddb07d14..90ed599171 100644 --- a/vendor/github.com/moby/swarmkit/v2/api/api.pb.txt +++ b/vendor/github.com/moby/swarmkit/v2/api/api.pb.txt @@ -2779,10 +2779,10 @@ file { } } value { - name: "CSI" + name: "CLUSTER" number: 4 options { - 66001: "MountTypeCSI" + 66001: "MountTypeCluster" } } options { diff --git a/vendor/github.com/moby/swarmkit/v2/api/defaults/service.go b/vendor/github.com/moby/swarmkit/v2/api/defaults/service.go index 461378ffca..3e40c25e99 100644 --- a/vendor/github.com/moby/swarmkit/v2/api/defaults/service.go +++ b/vendor/github.com/moby/swarmkit/v2/api/defaults/service.go @@ -3,9 +3,9 @@ package defaults import ( "time" + gogotypes "github.com/gogo/protobuf/types" "github.com/moby/swarmkit/v2/api" "github.com/moby/swarmkit/v2/api/deepcopy" - gogotypes "github.com/gogo/protobuf/types" ) // Service is a ServiceSpec object with all fields filled in using default diff --git a/vendor/github.com/moby/swarmkit/v2/api/types.pb.go b/vendor/github.com/moby/swarmkit/v2/api/types.pb.go index 779e3e10c7..14b9827ec0 100644 --- a/vendor/github.com/moby/swarmkit/v2/api/types.pb.go +++ b/vendor/github.com/moby/swarmkit/v2/api/types.pb.go @@ -241,7 +241,7 @@ const ( MountTypeVolume Mount_MountType = 1 MountTypeTmpfs Mount_MountType = 2 MountTypeNamedPipe Mount_MountType = 3 - MountTypeCSI Mount_MountType = 4 + MountTypeCluster Mount_MountType = 4 ) var Mount_MountType_name = map[int32]string{ @@ -249,15 +249,15 @@ var Mount_MountType_name = map[int32]string{ 1: "VOLUME", 2: "TMPFS", 3: "NPIPE", - 4: "CSI", + 4: "CLUSTER", } var Mount_MountType_value = map[string]int32{ - "BIND": 0, - "VOLUME": 1, - "TMPFS": 2, - "NPIPE": 3, - "CSI": 4, + "BIND": 0, + "VOLUME": 1, + "TMPFS": 2, + "NPIPE": 3, + "CLUSTER": 4, } func (x Mount_MountType) String() string { @@ -5004,402 +5004,402 @@ func init() { } var fileDescriptor_0b5eafd0404ded3d = []byte{ - // 6309 bytes of a gzipped FileDescriptorProto + // 6316 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x7b, 0x5d, 0x6c, 0x24, 0xd9, - 0x55, 0xb0, 0xfb, 0xd7, 0xdd, 0xa7, 0xdb, 0x76, 0xcd, 0xb5, 0xd7, 0xeb, 0xe9, 0x9d, 0xb5, 0xbd, - 0xb5, 0x3b, 0xd9, 0xd9, 0xc9, 0xc6, 0x33, 0x3b, 0xbb, 0xd9, 0x6f, 0x76, 0x37, 0x9b, 0xdd, 0xfe, - 0xf3, 0xb8, 0x33, 0x76, 0x77, 0xeb, 0x76, 0x7b, 0x26, 0x1b, 0xe9, 0x4b, 0x51, 0xae, 0xba, 0x6e, - 0xd7, 0xb8, 0xba, 0xaa, 0xa9, 0xaa, 0xb6, 0xc7, 0x04, 0xc4, 0x3e, 0x01, 0xb2, 0x84, 0x00, 0x21, - 0x85, 0x20, 0x64, 0x81, 0x20, 0x3c, 0xf1, 0xc0, 0x03, 0x48, 0x04, 0x9e, 0x16, 0x09, 0xa1, 0xf0, - 0x44, 0x42, 0x10, 0x44, 0x01, 0x19, 0xe2, 0x48, 0xbc, 0x21, 0x78, 0x41, 0xf0, 0x90, 0x07, 0x74, - 0xff, 0xaa, 0xaa, 0x7b, 0xda, 0xf6, 0x4c, 0x36, 0xbc, 0xd8, 0x75, 0xcf, 0x3d, 0xe7, 0xdc, 0x7b, - 0xcf, 0x3d, 0xf7, 0xdc, 0x73, 0xce, 0x3d, 0x0d, 0x37, 0x7b, 0x56, 0xb0, 0x37, 0xdc, 0x59, 0x33, - 0xdc, 0xfe, 0x2d, 0xd3, 0x35, 0xf6, 0x89, 0x77, 0xcb, 0x3f, 0xd4, 0xbd, 0xfe, 0xbe, 0x15, 0xdc, - 0xd2, 0x07, 0xd6, 0xad, 0xe0, 0x68, 0x40, 0xfc, 0xb5, 0x81, 0xe7, 0x06, 0x2e, 0x42, 0x1c, 0x61, - 0x4d, 0x22, 0xac, 0x1d, 0xbc, 0x51, 0x5a, 0xe9, 0xb9, 0x6e, 0xcf, 0x26, 0xb7, 0x18, 0xc6, 0xce, - 0x70, 0xf7, 0x56, 0x60, 0xf5, 0x89, 0x1f, 0xe8, 0xfd, 0x01, 0x27, 0x2a, 0x2d, 0x8f, 0x23, 0x98, - 0x43, 0x4f, 0x0f, 0x2c, 0xd7, 0x39, 0xaf, 0xff, 0xd0, 0xd3, 0x07, 0x03, 0xe2, 0x89, 0x41, 0x4b, - 0x0b, 0x3d, 0xb7, 0xe7, 0xb2, 0xcf, 0x5b, 0xf4, 0x8b, 0x43, 0xd5, 0x15, 0x98, 0x7e, 0x40, 0x3c, - 0xdf, 0x72, 0x1d, 0xb4, 0x00, 0x19, 0xcb, 0x31, 0xc9, 0xe3, 0xa5, 0xc4, 0x6a, 0xe2, 0x46, 0x1a, - 0xf3, 0x86, 0x7a, 0x1b, 0xa0, 0x41, 0x3f, 0xea, 0x4e, 0xe0, 0x1d, 0x21, 0x05, 0x52, 0xfb, 0xe4, - 0x88, 0x61, 0xe4, 0x31, 0xfd, 0xa4, 0x90, 0x03, 0xdd, 0x5e, 0x4a, 0x72, 0xc8, 0x81, 0x6e, 0xab, - 0x3f, 0x4c, 0x40, 0xa1, 0xec, 0x38, 0x6e, 0xc0, 0x66, 0xe7, 0x23, 0x04, 0x69, 0x47, 0xef, 0x13, - 0x41, 0xc4, 0xbe, 0x51, 0x15, 0xb2, 0xb6, 0xbe, 0x43, 0x6c, 0x7f, 0x29, 0xb9, 0x9a, 0xba, 0x51, - 0xb8, 0xf3, 0xd9, 0xb5, 0x27, 0x45, 0xb2, 0x16, 0x63, 0xb2, 0xb6, 0xc9, 0xb0, 0xd9, 0x24, 0xb0, - 0x20, 0x45, 0x5f, 0x84, 0x69, 0xcb, 0x31, 0x2d, 0x83, 0xf8, 0x4b, 0x69, 0xc6, 0x65, 0x79, 0x12, - 0x97, 0x68, 0xf6, 0x95, 0xf4, 0xb7, 0x4f, 0x57, 0xa6, 0xb0, 0x24, 0x2a, 0xbd, 0x03, 0x85, 0x18, - 0xdb, 0x09, 0x6b, 0x5b, 0x80, 0xcc, 0x81, 0x6e, 0x0f, 0x89, 0x58, 0x1d, 0x6f, 0xbc, 0x9b, 0xbc, - 0x9b, 0x50, 0x3f, 0x84, 0x85, 0xa6, 0xde, 0x27, 0xe6, 0x3d, 0xe2, 0x10, 0xcf, 0x32, 0x30, 0xf1, - 0xdd, 0xa1, 0x67, 0x10, 0xba, 0xd6, 0x7d, 0xcb, 0x31, 0xe5, 0x5a, 0xe9, 0xf7, 0x64, 0x2e, 0x6a, - 0x15, 0x9e, 0xaf, 0x59, 0xbe, 0xe1, 0x91, 0x80, 0x3c, 0x33, 0x93, 0x94, 0x64, 0x72, 0x9a, 0x80, - 0xb9, 0x71, 0xea, 0xaf, 0xc0, 0x3c, 0x15, 0xb1, 0xa9, 0x79, 0x02, 0xa2, 0xf9, 0x03, 0x62, 0x30, - 0x66, 0x85, 0x3b, 0x37, 0x26, 0x49, 0x68, 0xd2, 0x4a, 0x36, 0xa6, 0xf0, 0x15, 0xc6, 0x46, 0x02, - 0x3a, 0x03, 0x62, 0x20, 0x03, 0x16, 0x4d, 0x31, 0xe9, 0x31, 0xf6, 0x49, 0xc6, 0x7e, 0xe2, 0x36, - 0x9e, 0xb3, 0xcc, 0x8d, 0x29, 0xbc, 0x20, 0x99, 0xc5, 0x07, 0xa9, 0x00, 0xe4, 0x24, 0x6f, 0xf5, - 0x1b, 0x09, 0xc8, 0xcb, 0x4e, 0x1f, 0xbd, 0x06, 0x79, 0x47, 0x77, 0x5c, 0xcd, 0x18, 0x0c, 0x7d, - 0xb6, 0xa0, 0x54, 0xa5, 0x78, 0x76, 0xba, 0x92, 0x6b, 0xea, 0x8e, 0x5b, 0x6d, 0x6f, 0xfb, 0x38, - 0x47, 0xbb, 0xab, 0x83, 0xa1, 0x8f, 0x5e, 0x82, 0x62, 0x9f, 0xf4, 0x5d, 0xef, 0x48, 0xdb, 0x39, - 0x0a, 0x88, 0x2f, 0xc4, 0x56, 0xe0, 0xb0, 0x0a, 0x05, 0xa1, 0xf7, 0x61, 0xba, 0xc7, 0xa7, 0xb4, - 0x94, 0x62, 0xea, 0xf3, 0xf2, 0xa4, 0xd9, 0x8f, 0xcd, 0x1a, 0x4b, 0x1a, 0xf5, 0xeb, 0x49, 0x58, - 0x08, 0xa1, 0xe4, 0x67, 0x87, 0x96, 0x47, 0xfa, 0xc4, 0x09, 0x7c, 0xf4, 0x79, 0xc8, 0xda, 0x56, - 0xdf, 0x0a, 0x7c, 0x21, 0xf3, 0x17, 0x27, 0xb1, 0x0d, 0x17, 0x85, 0x05, 0x32, 0x2a, 0x43, 0xd1, - 0x23, 0x3e, 0xf1, 0x0e, 0xb8, 0xc6, 0x0b, 0x89, 0x5e, 0x42, 0x3c, 0x42, 0x82, 0xde, 0x05, 0xf0, - 0x0f, 0xf5, 0x81, 0x58, 0x72, 0x8a, 0x31, 0x78, 0x61, 0x8d, 0xdb, 0x85, 0x35, 0x69, 0x17, 0xd6, - 0x1a, 0x4e, 0xf0, 0xf6, 0x5b, 0x0f, 0xa8, 0xfe, 0xe0, 0x3c, 0x45, 0xe7, 0xd2, 0xd8, 0x80, 0x2b, - 0x42, 0x60, 0x14, 0x36, 0xb0, 0x1c, 0xe2, 0xd3, 0x63, 0x75, 0x29, 0x0b, 0x85, 0x53, 0x75, 0x42, - 0x22, 0x75, 0x1d, 0x72, 0x6d, 0x5b, 0x0f, 0x76, 0x5d, 0xaf, 0x8f, 0x54, 0x28, 0xea, 0x9e, 0xb1, - 0x67, 0x05, 0xc4, 0x08, 0x86, 0x9e, 0xb4, 0x01, 0x23, 0x30, 0xb4, 0x08, 0x49, 0x97, 0x2f, 0x37, - 0x5f, 0xc9, 0x9e, 0x9d, 0xae, 0x24, 0x5b, 0x1d, 0x9c, 0x74, 0x7d, 0xf5, 0x3d, 0xb8, 0xd2, 0xb6, - 0x87, 0x3d, 0xcb, 0xa9, 0x11, 0xdf, 0xf0, 0xac, 0x01, 0x5d, 0x23, 0x3d, 0x1b, 0xd4, 0x92, 0xca, - 0xb3, 0x41, 0xbf, 0x43, 0x03, 0x93, 0x8c, 0x0c, 0x8c, 0xfa, 0xcb, 0x49, 0xb8, 0x52, 0x77, 0x7a, - 0x96, 0x43, 0xe2, 0xd4, 0xd7, 0x61, 0x96, 0x30, 0xa0, 0x76, 0xc0, 0x8d, 0x9e, 0xe0, 0x33, 0xc3, - 0xa1, 0xd2, 0x12, 0x36, 0xc6, 0xac, 0xd3, 0x1b, 0x93, 0x36, 0xe1, 0x09, 0xee, 0x13, 0x6d, 0x54, - 0x1d, 0xa6, 0x07, 0x6c, 0x11, 0xbe, 0x50, 0xb2, 0xeb, 0x93, 0x78, 0x3d, 0xb1, 0x4e, 0x69, 0xaa, - 0x04, 0xed, 0xa7, 0x31, 0x55, 0xbf, 0x99, 0x82, 0xb9, 0xa6, 0x6b, 0x8e, 0xc8, 0xa1, 0x04, 0xb9, - 0x3d, 0xd7, 0x0f, 0x62, 0x66, 0x39, 0x6c, 0xa3, 0xbb, 0x90, 0x1b, 0x88, 0xed, 0x13, 0x3a, 0x78, - 0x6d, 0xf2, 0x94, 0x39, 0x0e, 0x0e, 0xb1, 0xd1, 0x7b, 0x90, 0x97, 0x07, 0x57, 0x6a, 0xdf, 0x25, - 0xea, 0x1b, 0xe1, 0xa3, 0xf7, 0x21, 0xcb, 0x37, 0x41, 0x28, 0xdd, 0xf5, 0xa7, 0x92, 0x39, 0x16, - 0x44, 0xe8, 0x1e, 0xe4, 0x02, 0xdb, 0xd7, 0x2c, 0x67, 0xd7, 0x5d, 0xca, 0x30, 0x06, 0x2b, 0x13, - 0x4d, 0x9d, 0x6b, 0x92, 0xee, 0x66, 0xa7, 0xe1, 0xec, 0xba, 0x95, 0xc2, 0xd9, 0xe9, 0xca, 0xb4, - 0x68, 0xe0, 0xe9, 0xc0, 0xf6, 0xe9, 0x07, 0xba, 0x06, 0xe9, 0x5d, 0x6b, 0xe0, 0x2f, 0x65, 0x57, - 0x13, 0x37, 0x72, 0x95, 0xdc, 0xd9, 0xe9, 0x4a, 0x7a, 0xbd, 0xd1, 0xee, 0x60, 0x06, 0xa5, 0xc3, - 0x18, 0xbe, 0xc5, 0x87, 0x99, 0x66, 0xfb, 0x79, 0xee, 0x30, 0xd5, 0x4e, 0x23, 0x1a, 0x46, 0x34, - 0xf0, 0xb4, 0xe1, 0x5b, 0xf4, 0x43, 0xfd, 0x8d, 0x04, 0x14, 0x62, 0x93, 0x41, 0x2f, 0x02, 0x04, - 0xde, 0xd0, 0x0f, 0x34, 0xcf, 0x75, 0x03, 0xb6, 0x27, 0x45, 0x9c, 0x67, 0x10, 0xec, 0xba, 0x01, - 0x5a, 0x83, 0x79, 0x83, 0x78, 0x81, 0x66, 0xf9, 0xfe, 0x90, 0x78, 0x9a, 0x3f, 0xdc, 0x79, 0x44, - 0x8c, 0x80, 0xed, 0x4f, 0x11, 0x5f, 0xa1, 0x5d, 0x0d, 0xd6, 0xd3, 0xe1, 0x1d, 0xe8, 0x4d, 0x58, - 0x8c, 0xe3, 0x0f, 0x86, 0x3b, 0xb6, 0x65, 0x68, 0x54, 0x67, 0x52, 0x8c, 0x64, 0x3e, 0x22, 0x69, - 0xb3, 0xbe, 0xfb, 0xe4, 0x48, 0xfd, 0x9e, 0x98, 0x93, 0x98, 0x2c, 0x5a, 0x81, 0x02, 0xd7, 0x3f, - 0x2d, 0xa6, 0x28, 0xc0, 0x41, 0xf4, 0xce, 0x40, 0x2f, 0xc3, 0xb4, 0xe3, 0x9a, 0x44, 0xb3, 0x4c, - 0x71, 0x7c, 0xe1, 0xec, 0x74, 0x25, 0x4b, 0x59, 0x34, 0x6a, 0x38, 0x4b, 0xbb, 0x1a, 0x26, 0xba, - 0x05, 0x0b, 0x7d, 0xfd, 0xb1, 0x76, 0xe0, 0xda, 0xc3, 0x3e, 0xf1, 0xb5, 0x01, 0xf1, 0x34, 0xda, - 0xc3, 0x26, 0x92, 0xc2, 0x57, 0xfa, 0xfa, 0xe3, 0x07, 0xbc, 0xab, 0x4d, 0x3c, 0x4a, 0x8a, 0xb6, - 0x60, 0x5e, 0x37, 0x0c, 0xe2, 0xfb, 0xd6, 0x8e, 0x4d, 0xb4, 0xc0, 0x1d, 0xb8, 0xb6, 0xdb, 0x3b, - 0x12, 0x6a, 0x31, 0x51, 0x17, 0xbb, 0x02, 0x07, 0xa3, 0x88, 0x50, 0xc2, 0xd4, 0xef, 0x27, 0x40, - 0xc1, 0xfa, 0x6e, 0xb0, 0x45, 0xfa, 0x3b, 0xc4, 0xeb, 0x04, 0x7a, 0x30, 0xf4, 0xd1, 0x22, 0x64, - 0x6d, 0xa2, 0x9b, 0xc4, 0x63, 0xab, 0xca, 0x61, 0xd1, 0x42, 0xdb, 0xd4, 0x08, 0xeb, 0xc6, 0x9e, - 0xbe, 0x63, 0xd9, 0x56, 0x70, 0xc4, 0x96, 0x35, 0x3b, 0xf9, 0xfc, 0x8f, 0xf3, 0x5c, 0xc3, 0x31, - 0x42, 0x3c, 0xc2, 0x06, 0x2d, 0xc1, 0x74, 0x9f, 0xf8, 0xbe, 0xde, 0xe3, 0xcb, 0xce, 0x63, 0xd9, - 0x54, 0xdf, 0x83, 0x62, 0x9c, 0x0e, 0x15, 0x60, 0x7a, 0xbb, 0x79, 0xbf, 0xd9, 0x7a, 0xd8, 0x54, - 0xa6, 0xd0, 0x1c, 0x14, 0xb6, 0x9b, 0xb8, 0x5e, 0xae, 0x6e, 0x94, 0x2b, 0x9b, 0x75, 0x25, 0x81, - 0x66, 0x20, 0x1f, 0x35, 0x93, 0xea, 0x9f, 0x24, 0x00, 0xa8, 0xc8, 0xc4, 0xa2, 0xde, 0x85, 0x8c, - 0x1f, 0xe8, 0x01, 0xdf, 0xa9, 0xd9, 0x3b, 0xaf, 0x9c, 0xa7, 0x99, 0x62, 0xbe, 0xf4, 0x1f, 0xc1, - 0x9c, 0x24, 0x3e, 0xc3, 0xe4, 0xc8, 0x0c, 0xa9, 0x75, 0xd5, 0x4d, 0xd3, 0x13, 0x13, 0x67, 0xdf, - 0xea, 0x7b, 0x90, 0x61, 0xd4, 0xa3, 0xd3, 0xcd, 0x41, 0xba, 0x46, 0xbf, 0x12, 0x28, 0x0f, 0x19, - 0x5c, 0x2f, 0xd7, 0x3e, 0x52, 0x92, 0x48, 0x81, 0x62, 0xad, 0xd1, 0xa9, 0xb6, 0x9a, 0xcd, 0x7a, - 0xb5, 0x5b, 0xaf, 0x29, 0x29, 0xf5, 0x3a, 0x64, 0x1a, 0x7d, 0xca, 0xf9, 0x1a, 0xb5, 0x17, 0xbb, - 0xc4, 0x23, 0x8e, 0x21, 0xb5, 0x2b, 0x02, 0xa8, 0x3f, 0x2e, 0x42, 0x66, 0xcb, 0x1d, 0x3a, 0x01, - 0xba, 0x13, 0xb3, 0xf9, 0xb3, 0x93, 0x9d, 0x3c, 0x86, 0xb8, 0xd6, 0x3d, 0x1a, 0x10, 0x71, 0x27, - 0x2c, 0x42, 0x96, 0x5b, 0x16, 0xb1, 0x1c, 0xd1, 0xa2, 0xf0, 0x40, 0xf7, 0x7a, 0x24, 0x10, 0xeb, - 0x11, 0x2d, 0x74, 0x83, 0x3a, 0x1d, 0xba, 0xe9, 0x3a, 0x36, 0xd7, 0xb4, 0x1c, 0xf7, 0x2c, 0x30, - 0xd1, 0xcd, 0x96, 0x63, 0x1f, 0xe1, 0xb0, 0x17, 0xdd, 0x83, 0x82, 0xe1, 0x3a, 0xbe, 0xe5, 0x07, - 0xc4, 0x31, 0x8e, 0x96, 0x72, 0x6c, 0x52, 0xd7, 0xcf, 0x9f, 0x54, 0x35, 0x42, 0xc6, 0x71, 0x4a, - 0xb4, 0x01, 0xc5, 0x1d, 0xcb, 0x31, 0x35, 0x77, 0xc0, 0x2f, 0xfc, 0xcc, 0xf9, 0x76, 0x8f, 0x73, - 0xaa, 0x58, 0x8e, 0xd9, 0xe2, 0xc8, 0xb8, 0xb0, 0x13, 0x35, 0x50, 0x13, 0x66, 0xf9, 0xf1, 0x0a, - 0x79, 0x65, 0x19, 0xaf, 0x57, 0xcf, 0xe7, 0xc5, 0xcf, 0x9c, 0xe4, 0x36, 0x73, 0x10, 0x6f, 0xa2, - 0xfb, 0x30, 0x13, 0xf4, 0x07, 0xbb, 0x7e, 0xc8, 0x6e, 0x9a, 0xb1, 0xfb, 0xcc, 0x05, 0x92, 0xa7, - 0xe8, 0x92, 0x5b, 0x31, 0x88, 0xb5, 0x4a, 0xdf, 0x4a, 0x41, 0x21, 0x36, 0x73, 0xd4, 0x81, 0xc2, - 0xc0, 0x73, 0x07, 0x7a, 0x8f, 0x39, 0x2d, 0x62, 0x53, 0xdf, 0x78, 0xaa, 0x55, 0xaf, 0xb5, 0x23, - 0x42, 0x1c, 0xe7, 0x82, 0xde, 0x82, 0xa2, 0xe3, 0x3a, 0x1e, 0x31, 0x86, 0x9e, 0x6f, 0x1d, 0xf0, - 0x4d, 0xcf, 0x55, 0x94, 0xb3, 0xd3, 0x95, 0x62, 0xd3, 0x75, 0xb0, 0x84, 0xe3, 0x11, 0x2c, 0xf5, - 0x24, 0x09, 0x85, 0x18, 0x4b, 0x74, 0x13, 0x72, 0xb8, 0x8d, 0x1b, 0x0f, 0xca, 0xdd, 0xba, 0x32, - 0x55, 0xba, 0x76, 0x7c, 0xb2, 0xba, 0xc4, 0xe6, 0x10, 0x1f, 0xb6, 0xed, 0x59, 0x07, 0x54, 0xf3, - 0x6f, 0xc0, 0xb4, 0x44, 0x4d, 0x94, 0x5e, 0x38, 0x3e, 0x59, 0x7d, 0x7e, 0x1c, 0x35, 0x86, 0x89, - 0x3b, 0x1b, 0x65, 0x5c, 0xaf, 0x29, 0xc9, 0xc9, 0x98, 0xb8, 0xb3, 0xa7, 0x7b, 0xc4, 0x44, 0x9f, - 0x81, 0xac, 0x40, 0x4c, 0x95, 0x4a, 0xc7, 0x27, 0xab, 0x8b, 0xe3, 0x88, 0x11, 0x1e, 0xee, 0x6c, - 0x96, 0x1f, 0xd4, 0x95, 0xf4, 0x64, 0x3c, 0xdc, 0xb1, 0xf5, 0x03, 0x82, 0x5e, 0x81, 0x0c, 0x47, - 0xcb, 0x94, 0xae, 0x1e, 0x9f, 0xac, 0x3e, 0xf7, 0x04, 0x3b, 0x8a, 0x55, 0x5a, 0xfa, 0x95, 0x3f, - 0x58, 0x9e, 0xfa, 0x8b, 0x6f, 0x2e, 0x2b, 0xe3, 0xdd, 0xa5, 0x1f, 0x27, 0x60, 0x66, 0x44, 0x51, - 0x90, 0x0a, 0x59, 0xc7, 0x35, 0xdc, 0x01, 0xf7, 0x3d, 0x72, 0xd2, 0xe0, 0x57, 0xdd, 0xc1, 0x11, - 0x16, 0x3d, 0xe8, 0xfe, 0x98, 0xf7, 0xf4, 0xe6, 0x53, 0x6a, 0xe1, 0x44, 0xff, 0xe9, 0x03, 0x98, - 0x31, 0x3d, 0xeb, 0x80, 0x78, 0x9a, 0xe1, 0x3a, 0xbb, 0x56, 0x4f, 0xf8, 0x15, 0xa5, 0x89, 0x81, - 0x06, 0x43, 0xc4, 0x45, 0x4e, 0x50, 0x65, 0xf8, 0x9f, 0xc2, 0x73, 0x2a, 0x0d, 0xa0, 0x18, 0xd7, - 0x6b, 0x7a, 0x47, 0xfb, 0xd6, 0xcf, 0x11, 0xe1, 0x5e, 0xb3, 0xf8, 0x03, 0xe7, 0x29, 0x84, 0x7b, - 0xd0, 0xaf, 0x42, 0xba, 0x4f, 0x2f, 0x36, 0xca, 0x67, 0xa6, 0x32, 0x4f, 0x1d, 0xb8, 0x1f, 0x9c, - 0xae, 0x14, 0x5c, 0x7f, 0x6d, 0xdd, 0xb2, 0xc9, 0x96, 0x6b, 0x12, 0xcc, 0x10, 0xa8, 0xad, 0x95, - 0x07, 0x4b, 0xdc, 0x06, 0xa2, 0xa9, 0xfe, 0x69, 0x02, 0xd2, 0xd4, 0x88, 0xa1, 0x17, 0x20, 0x5d, - 0x69, 0x34, 0x6b, 0xca, 0x54, 0xe9, 0xca, 0xf1, 0xc9, 0xea, 0x0c, 0x93, 0x16, 0xed, 0xa0, 0x87, - 0x01, 0xad, 0x40, 0xf6, 0x41, 0x6b, 0x73, 0x7b, 0x8b, 0x6a, 0xde, 0xfc, 0xf1, 0xc9, 0xea, 0x5c, - 0xd8, 0xcd, 0xe5, 0x89, 0x5e, 0x84, 0x4c, 0x77, 0xab, 0xbd, 0xde, 0x51, 0x92, 0x25, 0x74, 0x7c, - 0xb2, 0x3a, 0x1b, 0xf6, 0xb3, 0xe5, 0xa0, 0x97, 0x20, 0xd3, 0x6c, 0x37, 0xda, 0x75, 0x25, 0x55, - 0x5a, 0x3c, 0x3e, 0x59, 0x45, 0x61, 0x37, 0x0b, 0x04, 0xdb, 0xd6, 0x80, 0xa0, 0xab, 0x90, 0xaa, - 0x76, 0x1a, 0x4a, 0xba, 0xa4, 0x1c, 0x9f, 0xac, 0x16, 0x43, 0x84, 0x6a, 0xa7, 0x51, 0xba, 0x22, - 0xd4, 0x25, 0x1f, 0x42, 0xd5, 0xef, 0x26, 0xa0, 0x10, 0x33, 0x73, 0x54, 0xe3, 0x6b, 0xf5, 0xf5, - 0xf2, 0xf6, 0x66, 0x57, 0x99, 0x8a, 0x69, 0x7c, 0x0c, 0xa5, 0x46, 0x76, 0xf5, 0xa1, 0x4d, 0xcd, - 0x2e, 0x54, 0x5b, 0xcd, 0x4e, 0xa3, 0xd3, 0xad, 0x37, 0xbb, 0x4a, 0xa2, 0xb4, 0x74, 0x7c, 0xb2, - 0xba, 0x30, 0x8e, 0xbc, 0x3e, 0xb4, 0x6d, 0xaa, 0xf3, 0xd5, 0x72, 0x75, 0x83, 0x1d, 0xa2, 0x48, - 0xe7, 0x63, 0x58, 0x55, 0xdd, 0xd8, 0x23, 0x26, 0x7a, 0x1d, 0xf2, 0xb5, 0xfa, 0x66, 0xfd, 0x5e, - 0x99, 0x5d, 0x36, 0xa5, 0x17, 0x8f, 0x4f, 0x56, 0xaf, 0x3e, 0x39, 0xba, 0x4d, 0x7a, 0x7a, 0x40, - 0xcc, 0x31, 0xdd, 0x8f, 0xa1, 0xa8, 0xff, 0x95, 0x84, 0x19, 0x4c, 0xfc, 0x40, 0xf7, 0x82, 0xb6, - 0x6b, 0x5b, 0xc6, 0x11, 0x6a, 0x43, 0xde, 0x70, 0x1d, 0xd3, 0x8a, 0x99, 0xad, 0x3b, 0xe7, 0xb8, - 0xb7, 0x11, 0x95, 0x6c, 0x55, 0x25, 0x25, 0x8e, 0x98, 0xa0, 0x5b, 0x90, 0x31, 0x89, 0xad, 0x1f, - 0x09, 0x3f, 0xfb, 0xea, 0x13, 0x71, 0x56, 0x4d, 0xa4, 0x78, 0x30, 0xc7, 0x63, 0x51, 0xad, 0xfe, - 0x58, 0xd3, 0x83, 0x80, 0xf4, 0x07, 0x01, 0x57, 0x9f, 0x34, 0x2e, 0xf4, 0xf5, 0xc7, 0x65, 0x01, - 0x42, 0x6f, 0x40, 0xf6, 0xd0, 0x72, 0x4c, 0xf7, 0x50, 0x38, 0x4c, 0x17, 0x30, 0x15, 0x88, 0xea, - 0x31, 0xf5, 0x90, 0xc6, 0xa6, 0x49, 0x35, 0xb0, 0xd9, 0x6a, 0xd6, 0xa5, 0x06, 0x8a, 0xfe, 0x96, - 0xd3, 0x74, 0x1d, 0x6a, 0x58, 0xa0, 0xd5, 0xd4, 0xd6, 0xcb, 0x8d, 0xcd, 0x6d, 0x4c, 0xb5, 0x70, - 0xe1, 0xf8, 0x64, 0x55, 0x09, 0x51, 0xd6, 0x75, 0xcb, 0xa6, 0x81, 0xdd, 0x55, 0x48, 0x95, 0x9b, - 0x1f, 0x29, 0x49, 0xae, 0x44, 0x61, 0x77, 0xd9, 0x39, 0x8a, 0xe4, 0x3e, 0x3e, 0xae, 0xfa, 0xb7, - 0x29, 0x28, 0x6e, 0x0f, 0x4c, 0x3d, 0x20, 0xfc, 0x00, 0xa3, 0x55, 0x28, 0x0c, 0x74, 0x4f, 0xb7, - 0x6d, 0x62, 0x5b, 0x7e, 0x5f, 0x24, 0xa7, 0xe2, 0x20, 0xf4, 0xce, 0xd3, 0x8a, 0xb1, 0x92, 0xa3, - 0x87, 0xf2, 0x1b, 0xff, 0xb2, 0x92, 0x90, 0x02, 0xdd, 0x86, 0xd9, 0x5d, 0x3e, 0x5b, 0x4d, 0x37, - 0xd8, 0xc6, 0xa6, 0xd8, 0xc6, 0xae, 0x4d, 0xda, 0xd8, 0xf8, 0xb4, 0xd6, 0xc4, 0x22, 0xcb, 0x8c, - 0x0a, 0xcf, 0xec, 0xc6, 0x9b, 0xe8, 0x4d, 0x98, 0xee, 0xbb, 0x8e, 0x15, 0xb8, 0xde, 0xe5, 0xbb, - 0x20, 0x31, 0xd1, 0x4d, 0xa0, 0xce, 0xb0, 0x26, 0xe7, 0xc3, 0xba, 0x99, 0x53, 0x90, 0xc4, 0x73, - 0x7d, 0xfd, 0xb1, 0x18, 0x10, 0x53, 0x30, 0xaa, 0x40, 0xc6, 0xf5, 0xa8, 0xfb, 0x9a, 0x65, 0xd3, - 0x7d, 0xfd, 0xd2, 0xe9, 0xf2, 0x46, 0x8b, 0xd2, 0x60, 0x4e, 0xaa, 0xbe, 0x0d, 0x33, 0x23, 0x8b, - 0xa0, 0x5e, 0x5b, 0xbb, 0xbc, 0xdd, 0xa9, 0x2b, 0x53, 0xa8, 0x08, 0xb9, 0x6a, 0xab, 0xd9, 0x6d, - 0x34, 0xb7, 0xa9, 0xdb, 0x59, 0x84, 0x1c, 0x6e, 0x6d, 0x6e, 0x56, 0xca, 0xd5, 0xfb, 0x4a, 0x52, - 0x5d, 0x83, 0x42, 0x8c, 0x1b, 0x9a, 0x05, 0xe8, 0x74, 0x5b, 0x6d, 0x6d, 0xbd, 0x81, 0x3b, 0x5d, - 0xee, 0xb4, 0x76, 0xba, 0x65, 0xdc, 0x15, 0x80, 0x84, 0xfa, 0x1f, 0x49, 0xb9, 0xa3, 0xc2, 0x4f, - 0xad, 0x8c, 0xfa, 0xa9, 0x17, 0x4c, 0x5e, 0x78, 0xaa, 0x51, 0x23, 0xf4, 0x57, 0xdf, 0x01, 0x60, - 0x8a, 0x43, 0x4c, 0x4d, 0x0f, 0xc4, 0xc6, 0x97, 0x9e, 0x10, 0x72, 0x57, 0xe6, 0x50, 0x71, 0x5e, - 0x60, 0x97, 0x03, 0xf4, 0x3e, 0x14, 0x0d, 0xb7, 0x3f, 0xb0, 0x89, 0x20, 0x4e, 0x5d, 0x4a, 0x5c, - 0x08, 0xf1, 0xcb, 0x41, 0xdc, 0x53, 0x4e, 0x8f, 0xfa, 0xf2, 0xbf, 0x94, 0x90, 0x92, 0x99, 0xe0, - 0x1c, 0x17, 0x21, 0xb7, 0xdd, 0xae, 0x95, 0xbb, 0x8d, 0xe6, 0x3d, 0x25, 0x81, 0x00, 0xb2, 0x4c, - 0xd4, 0x35, 0x25, 0x49, 0x9d, 0xfa, 0x6a, 0x6b, 0xab, 0xbd, 0x59, 0x67, 0x16, 0x0b, 0x2d, 0x80, - 0x22, 0x85, 0xad, 0x31, 0x41, 0xd6, 0x6b, 0x4a, 0x1a, 0xcd, 0xc3, 0x5c, 0x08, 0x15, 0x94, 0x19, - 0xb4, 0x08, 0x28, 0x04, 0x46, 0x2c, 0xb2, 0xea, 0x2f, 0xc0, 0x5c, 0xd5, 0x75, 0x02, 0xdd, 0x72, - 0xc2, 0x80, 0xe7, 0x0e, 0x5d, 0xb4, 0x00, 0xd1, 0x78, 0x8d, 0x5d, 0x80, 0x95, 0xb9, 0xb3, 0xd3, - 0x95, 0x42, 0x88, 0xda, 0xa8, 0x31, 0x07, 0x55, 0x34, 0x4c, 0x7a, 0x7e, 0x07, 0x22, 0xb4, 0xcb, - 0x54, 0xa6, 0xcf, 0x4e, 0x57, 0x52, 0xed, 0x46, 0x0d, 0x53, 0x18, 0x7a, 0x01, 0xf2, 0xe4, 0xb1, - 0x15, 0x68, 0x86, 0x8c, 0xe4, 0x32, 0x38, 0x47, 0x01, 0x55, 0xd7, 0x24, 0x6a, 0x05, 0xa0, 0xed, - 0x7a, 0x81, 0x18, 0xf9, 0x2d, 0xc8, 0x0c, 0x5c, 0x8f, 0x65, 0xc3, 0xce, 0xcd, 0xd1, 0x52, 0x74, - 0xae, 0xa8, 0x98, 0x23, 0xab, 0xbf, 0x9d, 0x02, 0xe8, 0xea, 0xfe, 0xbe, 0x60, 0x72, 0x17, 0xf2, - 0x61, 0x3e, 0x5c, 0xa4, 0xd5, 0x2e, 0xdc, 0xed, 0x10, 0x19, 0xbd, 0x29, 0x95, 0x8d, 0x87, 0x72, - 0x13, 0x13, 0x12, 0x72, 0xa0, 0x49, 0xd1, 0xd0, 0x68, 0xbc, 0x46, 0xfd, 0x07, 0xe2, 0x79, 0x62, - 0xe7, 0xe9, 0x27, 0xaa, 0xb2, 0x6b, 0x81, 0x0b, 0x4d, 0xf8, 0xf0, 0x13, 0x13, 0x89, 0x63, 0x3b, - 0xb2, 0x31, 0x85, 0x23, 0x3a, 0xf4, 0x01, 0x14, 0xe8, 0xba, 0x35, 0x9f, 0xf5, 0x09, 0xf7, 0xfd, - 0x5c, 0x51, 0x71, 0x0e, 0x18, 0x06, 0x91, 0x94, 0x5f, 0x04, 0xd0, 0x07, 0x03, 0xdb, 0x22, 0xa6, - 0xb6, 0x73, 0xc4, 0xfc, 0xf5, 0x3c, 0xce, 0x0b, 0x48, 0xe5, 0x88, 0x1e, 0x17, 0xd9, 0xad, 0x07, - 0x2c, 0x66, 0xb9, 0x44, 0x80, 0x02, 0xbb, 0x1c, 0x54, 0x14, 0x98, 0xf5, 0x86, 0x0e, 0x15, 0xa8, - 0x98, 0x9d, 0xfa, 0xc7, 0x49, 0x78, 0xbe, 0x49, 0x82, 0x43, 0xd7, 0xdb, 0x2f, 0x07, 0x81, 0x6e, - 0xec, 0xf5, 0x89, 0x23, 0xb6, 0x2f, 0x16, 0x5f, 0x25, 0x46, 0xe2, 0xab, 0x25, 0x98, 0xd6, 0x6d, - 0x4b, 0xf7, 0x09, 0xf7, 0x0a, 0xf3, 0x58, 0x36, 0x69, 0x14, 0x48, 0x63, 0x4a, 0xe2, 0xfb, 0x84, - 0xe7, 0xc8, 0xe8, 0xc4, 0x25, 0x00, 0x7d, 0x0d, 0x16, 0x85, 0xff, 0xa7, 0x87, 0x43, 0xd1, 0xb0, - 0x44, 0xa6, 0xfc, 0xeb, 0x13, 0x83, 0xdc, 0xc9, 0x93, 0x13, 0x0e, 0x62, 0x04, 0x6e, 0x0d, 0x02, - 0xe1, 0x6e, 0x2e, 0x98, 0x13, 0xba, 0x4a, 0xf7, 0xe0, 0xea, 0xb9, 0x24, 0xcf, 0x94, 0x83, 0xfb, - 0x5e, 0x12, 0xa0, 0xd1, 0x2e, 0x6f, 0x09, 0x21, 0xd5, 0x20, 0xbb, 0xab, 0xf7, 0x2d, 0xfb, 0xe8, - 0x22, 0x0b, 0x18, 0xe1, 0xaf, 0x95, 0xb9, 0x38, 0xd6, 0x19, 0x0d, 0x16, 0xb4, 0x2c, 0xc4, 0x1d, - 0xee, 0x38, 0x24, 0x08, 0x43, 0x5c, 0xd6, 0xa2, 0xd3, 0xf0, 0x74, 0x27, 0x54, 0x5d, 0xde, 0xa0, - 0x1b, 0x40, 0x5d, 0x9e, 0x43, 0xfd, 0x48, 0x9a, 0x2d, 0xd1, 0x44, 0x1b, 0x2c, 0xdf, 0x4e, 0xbc, - 0x03, 0x62, 0x2e, 0x65, 0x98, 0x50, 0x2f, 0x9b, 0x0f, 0x16, 0xe8, 0x5c, 0x76, 0x21, 0x75, 0xe9, - 0x3d, 0xe6, 0x32, 0x45, 0x5d, 0xcf, 0x24, 0xa3, 0xdb, 0x30, 0x33, 0xb2, 0xce, 0x27, 0x72, 0x0b, - 0x8d, 0xf6, 0x83, 0xb7, 0x94, 0xb4, 0xf8, 0x7a, 0x5b, 0xc9, 0xaa, 0x7f, 0x9d, 0xe2, 0x86, 0x46, - 0x48, 0x75, 0xf2, 0x3b, 0x53, 0x8e, 0x69, 0xb7, 0xe1, 0xda, 0xc2, 0x00, 0xbc, 0x7a, 0xb1, 0xfd, - 0xa1, 0x21, 0x26, 0x43, 0xc7, 0x21, 0x21, 0x5a, 0x81, 0x02, 0xd7, 0x62, 0x8d, 0x1e, 0x38, 0x26, - 0xd6, 0x19, 0x0c, 0x1c, 0x44, 0x29, 0xd1, 0x75, 0x98, 0x65, 0x19, 0x36, 0x7f, 0x8f, 0x98, 0x1c, - 0x27, 0xcd, 0x70, 0x66, 0x42, 0x28, 0x43, 0xdb, 0x82, 0xa2, 0x00, 0x68, 0x2c, 0x50, 0xc8, 0xb0, - 0x09, 0xdd, 0xbc, 0x6c, 0x42, 0x9c, 0x84, 0xc5, 0x0f, 0x85, 0x41, 0xd4, 0x50, 0x7f, 0x06, 0x72, - 0x72, 0xb2, 0x68, 0x09, 0x52, 0xdd, 0x6a, 0x5b, 0x99, 0x2a, 0xcd, 0x1d, 0x9f, 0xac, 0x16, 0x24, - 0xb8, 0x5b, 0x6d, 0xd3, 0x9e, 0xed, 0x5a, 0x5b, 0x49, 0x8c, 0xf6, 0x6c, 0xd7, 0xda, 0xa8, 0x04, - 0xe9, 0x4e, 0xb5, 0xdb, 0x96, 0xfe, 0x99, 0xec, 0xa2, 0xb0, 0x52, 0x9a, 0xfa, 0x67, 0xea, 0x2e, - 0x14, 0x62, 0xa3, 0xa3, 0x97, 0x61, 0xba, 0xd1, 0xbc, 0x87, 0xeb, 0x9d, 0x8e, 0x32, 0xc5, 0x23, - 0x87, 0x58, 0x6f, 0xc3, 0xe9, 0xd1, 0xbd, 0x43, 0x2f, 0x42, 0x7a, 0xa3, 0x45, 0xef, 0x7d, 0x1e, - 0x9a, 0xc4, 0x30, 0x36, 0x5c, 0x3f, 0x28, 0xcd, 0x0b, 0xc7, 0x2f, 0xce, 0x58, 0xfd, 0x9d, 0x04, - 0x64, 0xf9, 0x41, 0x9b, 0xb8, 0x89, 0xe5, 0x28, 0x5e, 0xe2, 0x11, 0xe5, 0xab, 0xe7, 0x47, 0x7f, - 0x6b, 0x22, 0x58, 0xe3, 0xaa, 0x29, 0xe9, 0x4a, 0xef, 0x42, 0x31, 0xde, 0xf1, 0x4c, 0x8a, 0xf9, - 0x35, 0x28, 0x50, 0xdd, 0x97, 0x51, 0xe0, 0x1d, 0xc8, 0x72, 0x63, 0x11, 0xde, 0x43, 0xe7, 0x87, - 0xa2, 0x02, 0x13, 0xdd, 0x85, 0x69, 0x1e, 0xbe, 0xca, 0x57, 0x80, 0xe5, 0x8b, 0x4f, 0x18, 0x96, - 0xe8, 0xea, 0x07, 0x90, 0x6e, 0x13, 0xe2, 0xc5, 0x53, 0xad, 0x89, 0x73, 0x53, 0xad, 0x32, 0x55, - 0x97, 0x8c, 0xa5, 0xea, 0xba, 0x50, 0x7c, 0x48, 0xac, 0xde, 0x5e, 0x40, 0x4c, 0xc6, 0xe8, 0x75, - 0x48, 0x0f, 0x48, 0x38, 0xf9, 0xa5, 0x89, 0xca, 0x47, 0x88, 0x87, 0x19, 0x16, 0xb5, 0x31, 0x87, - 0x8c, 0x5a, 0x3c, 0xa0, 0x89, 0x96, 0xfa, 0x77, 0x49, 0x98, 0x6d, 0xf8, 0xfe, 0x50, 0x77, 0x0c, - 0xe9, 0xd5, 0x7d, 0x71, 0xd4, 0xab, 0x9b, 0xf8, 0xd2, 0x38, 0x4a, 0x32, 0x9a, 0x81, 0x14, 0x37, - 0x6b, 0x32, 0xbc, 0x59, 0xd5, 0x7f, 0x4f, 0xc8, 0x34, 0xe3, 0xf5, 0x98, 0x29, 0xe0, 0x31, 0x62, - 0x9c, 0x13, 0xd9, 0x76, 0xf6, 0x1d, 0xf7, 0xd0, 0xa1, 0x81, 0x2d, 0xae, 0x37, 0xeb, 0x0f, 0x95, - 0x04, 0x57, 0xcf, 0x11, 0x24, 0x4c, 0x1c, 0x72, 0x48, 0x39, 0xb5, 0xeb, 0xcd, 0x1a, 0xf5, 0xc2, - 0x92, 0x13, 0x38, 0xb5, 0x89, 0x63, 0x5a, 0x4e, 0x0f, 0xbd, 0x0c, 0xd9, 0x46, 0xa7, 0xb3, 0xcd, - 0x42, 0xc8, 0xe7, 0x8f, 0x4f, 0x56, 0xe7, 0x47, 0xb0, 0x58, 0xe2, 0xdc, 0xa4, 0x48, 0x34, 0x04, - 0xa2, 0xfe, 0xd9, 0x04, 0x24, 0xea, 0x5b, 0x73, 0x24, 0xdc, 0xea, 0x96, 0xbb, 0x75, 0x25, 0x33, - 0x01, 0x09, 0xbb, 0xf4, 0xaf, 0x38, 0x6e, 0xff, 0x94, 0x04, 0xa5, 0x6c, 0x18, 0x64, 0x10, 0xd0, - 0x7e, 0x11, 0x75, 0x76, 0x21, 0x37, 0xa0, 0x5f, 0x16, 0x91, 0x1e, 0xd4, 0xdd, 0x89, 0x6f, 0xe5, - 0x63, 0x74, 0x6b, 0xd8, 0xb5, 0x49, 0xd9, 0xec, 0x5b, 0xbe, 0x6f, 0xb9, 0x0e, 0x87, 0xe1, 0x90, - 0x53, 0xe9, 0x3f, 0x13, 0x30, 0x3f, 0x01, 0x03, 0xdd, 0x86, 0xb4, 0xe7, 0xda, 0x72, 0x0f, 0xaf, - 0x9d, 0x97, 0x41, 0xa6, 0xa4, 0x98, 0x61, 0xa2, 0x65, 0x00, 0x7d, 0x18, 0xb8, 0x3a, 0x1b, 0x9f, - 0xe7, 0xdd, 0x70, 0x0c, 0x82, 0x1e, 0x42, 0xd6, 0x27, 0x86, 0x47, 0xa4, 0x9f, 0xfd, 0xc1, 0x4f, - 0x3a, 0xfb, 0xb5, 0x0e, 0x63, 0x83, 0x05, 0xbb, 0xd2, 0x1a, 0x64, 0x39, 0x84, 0xaa, 0xbd, 0xa9, - 0x07, 0xba, 0x78, 0x35, 0x61, 0xdf, 0x54, 0x9b, 0x74, 0xbb, 0x27, 0xb5, 0x49, 0xb7, 0x7b, 0xea, - 0x5f, 0x25, 0x01, 0xea, 0x8f, 0x03, 0xe2, 0x39, 0xba, 0x5d, 0x2d, 0xa3, 0x7a, 0xec, 0x66, 0xe0, - 0xab, 0x7d, 0x6d, 0xe2, 0x8b, 0x53, 0x48, 0xb1, 0x56, 0x2d, 0x4f, 0xb8, 0x1b, 0xae, 0x42, 0x6a, - 0xe8, 0x89, 0xf2, 0x07, 0xee, 0x23, 0x6f, 0xe3, 0x4d, 0x4c, 0x61, 0xa8, 0x1e, 0x4f, 0xf3, 0x9c, - 0x5b, 0xe4, 0x10, 0x1b, 0x60, 0xa2, 0xe9, 0xa2, 0x27, 0xdf, 0xd0, 0x35, 0x83, 0x88, 0x5b, 0xa5, - 0xc8, 0x4f, 0x7e, 0xb5, 0x5c, 0x25, 0x5e, 0x80, 0xb3, 0x86, 0x4e, 0xff, 0x7f, 0x2a, 0xfb, 0xf6, - 0x3a, 0x40, 0xb4, 0x34, 0xb4, 0x0c, 0x99, 0xea, 0x7a, 0xa7, 0xb3, 0xa9, 0x4c, 0x71, 0x03, 0x1e, - 0x75, 0x31, 0xb0, 0xfa, 0xe7, 0x49, 0xc8, 0x55, 0xcb, 0xe2, 0xca, 0xad, 0x82, 0xc2, 0xac, 0x12, - 0x7b, 0x6b, 0x22, 0x8f, 0x07, 0x96, 0x77, 0x24, 0x0c, 0xcb, 0x05, 0x01, 0xef, 0x2c, 0x25, 0xa1, - 0xb3, 0xae, 0x33, 0x02, 0x84, 0xa1, 0x48, 0x84, 0x10, 0x34, 0x43, 0x97, 0x36, 0x7e, 0xf9, 0x62, - 0x61, 0xf1, 0xd0, 0x25, 0x6a, 0xfb, 0xb8, 0x20, 0x99, 0x54, 0x75, 0x1f, 0xbd, 0x03, 0x73, 0xbe, - 0xd5, 0x73, 0x2c, 0xa7, 0xa7, 0x49, 0xe1, 0xb1, 0x87, 0xaf, 0xca, 0x95, 0xb3, 0xd3, 0x95, 0x99, - 0x0e, 0xef, 0x12, 0x32, 0x9c, 0x11, 0x98, 0x55, 0x26, 0x4a, 0xf4, 0x36, 0xcc, 0xc6, 0x48, 0xa9, - 0x14, 0xb9, 0xd8, 0x59, 0x32, 0x39, 0xa4, 0xbc, 0x4f, 0x8e, 0x70, 0x31, 0x24, 0xbc, 0x4f, 0x58, - 0x6e, 0x66, 0xd7, 0xf5, 0x0c, 0xa2, 0x79, 0xec, 0x4c, 0xb3, 0xdb, 0x3d, 0x8d, 0x0b, 0x0c, 0xc6, - 0x8f, 0xb9, 0xfa, 0x00, 0xe6, 0x5b, 0x9e, 0xb1, 0x47, 0xfc, 0x80, 0x8b, 0x42, 0x48, 0xf1, 0x03, - 0xb8, 0x16, 0xe8, 0xfe, 0xbe, 0xb6, 0x67, 0xf9, 0x81, 0xeb, 0x1d, 0x69, 0x1e, 0x09, 0x88, 0x43, - 0xfb, 0x35, 0x56, 0x1a, 0x20, 0x32, 0x8d, 0x57, 0x29, 0xce, 0x06, 0x47, 0xc1, 0x12, 0x63, 0x93, - 0x22, 0xa8, 0x0d, 0x28, 0xd2, 0x10, 0x46, 0x24, 0xd5, 0xe8, 0xea, 0xc1, 0x76, 0x7b, 0xda, 0x53, - 0x5f, 0x53, 0x79, 0xdb, 0xed, 0xf1, 0x4f, 0xf5, 0xcb, 0xa0, 0xd4, 0x2c, 0x7f, 0xa0, 0x07, 0xc6, - 0x9e, 0x4c, 0xa1, 0xa2, 0x1a, 0x28, 0x7b, 0x44, 0xf7, 0x82, 0x1d, 0xa2, 0x07, 0xda, 0x80, 0x78, - 0x96, 0x6b, 0x5e, 0xbe, 0xcb, 0x73, 0x21, 0x49, 0x9b, 0x51, 0xa8, 0xff, 0x9d, 0x00, 0xc0, 0xfa, - 0xae, 0xf4, 0xd6, 0x3e, 0x0b, 0x57, 0x7c, 0x47, 0x1f, 0xf8, 0x7b, 0x6e, 0xa0, 0x59, 0x4e, 0x40, - 0xbc, 0x03, 0xdd, 0x16, 0xc9, 0x1d, 0x45, 0x76, 0x34, 0x04, 0x1c, 0xbd, 0x0e, 0x68, 0x9f, 0x90, - 0x81, 0xe6, 0xda, 0xa6, 0x26, 0x3b, 0x79, 0xc9, 0x40, 0x1a, 0x2b, 0xb4, 0xa7, 0x65, 0x9b, 0x1d, - 0x09, 0x47, 0x15, 0x58, 0xa6, 0xcb, 0x27, 0x4e, 0xe0, 0x59, 0xc4, 0xd7, 0x76, 0x5d, 0x4f, 0xf3, - 0x6d, 0xf7, 0x50, 0xdb, 0x75, 0x6d, 0xdb, 0x3d, 0x24, 0x9e, 0xcc, 0x9b, 0x95, 0x6c, 0xb7, 0x57, - 0xe7, 0x48, 0xeb, 0xae, 0xd7, 0xb1, 0xdd, 0xc3, 0x75, 0x89, 0x41, 0x5d, 0xba, 0x68, 0xcd, 0x81, - 0x65, 0xec, 0x4b, 0x97, 0x2e, 0x84, 0x76, 0x2d, 0x63, 0x1f, 0xbd, 0x0c, 0x33, 0xc4, 0x26, 0x2c, - 0x7d, 0xc2, 0xb1, 0x32, 0x0c, 0xab, 0x28, 0x81, 0x14, 0x49, 0xfd, 0x10, 0x94, 0xba, 0x63, 0x78, - 0x47, 0x83, 0xd8, 0x9e, 0xbf, 0x0e, 0x88, 0x1a, 0x49, 0xcd, 0x76, 0x8d, 0x7d, 0xad, 0xaf, 0x3b, - 0x7a, 0x8f, 0xce, 0x8b, 0x3f, 0x46, 0x2a, 0xb4, 0x67, 0xd3, 0x35, 0xf6, 0xb7, 0x04, 0x5c, 0x7d, - 0x07, 0xa0, 0x33, 0xf0, 0x88, 0x6e, 0xb6, 0xa8, 0x37, 0x41, 0x45, 0xc7, 0x5a, 0x9a, 0x29, 0x5e, - 0xc2, 0x5d, 0x4f, 0x1c, 0x75, 0x85, 0x77, 0xd4, 0x42, 0xb8, 0xfa, 0xff, 0x61, 0xbe, 0x6d, 0xeb, - 0x06, 0xab, 0x4d, 0x69, 0x87, 0xaf, 0x6b, 0xe8, 0x2e, 0x64, 0x39, 0xaa, 0xd8, 0xc9, 0x89, 0xc7, - 0x2d, 0x1a, 0x73, 0x63, 0x0a, 0x0b, 0xfc, 0x4a, 0x11, 0x20, 0xe2, 0xa3, 0xfe, 0x63, 0x02, 0xf2, - 0x21, 0x7f, 0xb4, 0xca, 0xdf, 0xc6, 0x02, 0x4f, 0xb7, 0x1c, 0x11, 0xf1, 0xe7, 0x71, 0x1c, 0x84, - 0x1a, 0x50, 0x18, 0x84, 0xd4, 0x17, 0xfa, 0x73, 0x13, 0x66, 0x8d, 0xe3, 0xb4, 0xe8, 0x5d, 0xc8, - 0xcb, 0xd2, 0x03, 0x69, 0x61, 0x2f, 0xae, 0x54, 0x88, 0xd0, 0x65, 0x22, 0xd5, 0x23, 0x03, 0xdb, - 0xa2, 0x36, 0x27, 0x1d, 0x26, 0x52, 0xb1, 0x00, 0xa9, 0x5f, 0x04, 0xf8, 0x92, 0x6b, 0x39, 0x5d, - 0x77, 0x9f, 0x38, 0xec, 0xc1, 0x98, 0x86, 0x94, 0x44, 0x0a, 0x5a, 0xb4, 0x58, 0xa6, 0x80, 0xef, - 0x52, 0xf8, 0x6e, 0xca, 0x9b, 0xea, 0x5f, 0x26, 0x21, 0x8b, 0x5d, 0x37, 0xa8, 0x96, 0xd1, 0x2a, - 0x64, 0x85, 0x29, 0x61, 0x57, 0x54, 0x25, 0x7f, 0x76, 0xba, 0x92, 0xe1, 0x36, 0x24, 0x63, 0x30, - 0xe3, 0x11, 0x33, 0xf2, 0xc9, 0xf3, 0x8c, 0x3c, 0xba, 0x0d, 0x45, 0x81, 0xa4, 0xed, 0xe9, 0xfe, - 0x1e, 0x8f, 0xef, 0x2a, 0xb3, 0x67, 0xa7, 0x2b, 0xc0, 0x31, 0x37, 0x74, 0x7f, 0x0f, 0x03, 0xc7, - 0xa6, 0xdf, 0xa8, 0x0e, 0x85, 0x47, 0xae, 0xe5, 0x68, 0x01, 0x5b, 0x84, 0xc8, 0x45, 0x4e, 0xdc, - 0xea, 0x68, 0xa9, 0xa2, 0xf4, 0x04, 0x1e, 0x45, 0x8b, 0xaf, 0xc3, 0x8c, 0xe7, 0xba, 0x01, 0xb7, - 0x6c, 0x96, 0xeb, 0x88, 0x34, 0xc7, 0xea, 0xc4, 0xec, 0xb7, 0xeb, 0x06, 0x58, 0xe0, 0xe1, 0xa2, - 0x17, 0x6b, 0xa1, 0xdb, 0xb0, 0x60, 0xeb, 0x7e, 0xa0, 0x31, 0x93, 0x68, 0x46, 0xdc, 0xb2, 0x4c, - 0xf8, 0x88, 0xf6, 0xad, 0xb3, 0x2e, 0x49, 0xa1, 0xfe, 0x43, 0x02, 0x0a, 0x74, 0x31, 0xd6, 0xae, - 0x65, 0x50, 0x3f, 0xf0, 0xd9, 0xdd, 0x93, 0xab, 0x90, 0x32, 0x7c, 0x4f, 0x08, 0x95, 0xdd, 0xcf, - 0xd5, 0x0e, 0xc6, 0x14, 0x86, 0x3e, 0x84, 0xac, 0x48, 0xb7, 0x70, 0xcf, 0x44, 0xbd, 0xdc, 0x63, - 0x15, 0xb2, 0x11, 0x74, 0x4c, 0xdd, 0xa3, 0xd9, 0xf1, 0x7b, 0x02, 0xc7, 0x41, 0x68, 0x11, 0x92, - 0x06, 0x17, 0x97, 0xa8, 0x6d, 0xaa, 0x36, 0x71, 0xd2, 0x70, 0xd4, 0xef, 0x26, 0x60, 0x26, 0xb2, - 0x09, 0x54, 0x03, 0xae, 0x41, 0xde, 0x1f, 0xee, 0xf8, 0x47, 0x7e, 0x40, 0xfa, 0xf2, 0x31, 0x3c, - 0x04, 0xa0, 0x06, 0xe4, 0x75, 0xbb, 0xe7, 0x7a, 0x56, 0xb0, 0xd7, 0x17, 0x81, 0xec, 0x64, 0x6f, - 0x22, 0xce, 0x73, 0xad, 0x2c, 0x49, 0x70, 0x44, 0x2d, 0x5d, 0x03, 0x5e, 0x07, 0xc2, 0x5c, 0x83, - 0x97, 0xa0, 0x68, 0xeb, 0x7d, 0x96, 0x7f, 0x0a, 0xac, 0x3e, 0x91, 0x87, 0x41, 0xc0, 0xba, 0x56, - 0x9f, 0xa8, 0x2a, 0xe4, 0x43, 0x66, 0x68, 0x0e, 0x0a, 0xe5, 0x7a, 0x47, 0x7b, 0xe3, 0xce, 0x5d, - 0xed, 0x5e, 0x75, 0x4b, 0x99, 0x12, 0xee, 0xeb, 0x9f, 0x25, 0x60, 0x46, 0x58, 0x2c, 0x11, 0x12, - 0xbc, 0x0c, 0xd3, 0x9e, 0xbe, 0x1b, 0xc8, 0xa0, 0x25, 0xcd, 0xb5, 0x9a, 0x5e, 0x02, 0x34, 0x68, - 0xa1, 0x5d, 0x93, 0x83, 0x96, 0x58, 0x79, 0x46, 0xea, 0xc2, 0xf2, 0x8c, 0xf4, 0x4f, 0xa5, 0x3c, - 0x43, 0xfd, 0x45, 0x80, 0x75, 0xcb, 0x26, 0x5d, 0x9e, 0xaa, 0x9a, 0x14, 0x82, 0x52, 0x37, 0x2f, - 0xac, 0x72, 0xe1, 0x6e, 0x5e, 0xa3, 0x86, 0x29, 0x8c, 0x76, 0xf5, 0x2c, 0x53, 0x1c, 0x46, 0xd6, - 0x75, 0x8f, 0x76, 0xf5, 0x2c, 0x33, 0x7c, 0x11, 0x4c, 0x5f, 0xf2, 0x22, 0xa8, 0xce, 0xc1, 0x0c, - 0xe6, 0x39, 0x36, 0x3e, 0x07, 0xf5, 0x24, 0x01, 0x73, 0xc2, 0xdf, 0x0d, 0x4d, 0xf6, 0x6b, 0x90, - 0xe7, 0xae, 0x6f, 0x14, 0x04, 0xb2, 0x1a, 0x05, 0x8e, 0xd7, 0xa8, 0xe1, 0x1c, 0xef, 0x6e, 0x98, - 0x68, 0x05, 0x0a, 0x02, 0x35, 0x56, 0x18, 0x07, 0x1c, 0xc4, 0x2a, 0x77, 0xde, 0x82, 0xf4, 0xae, - 0x65, 0x13, 0xa1, 0xf9, 0x13, 0x2d, 0x42, 0x24, 0x91, 0x8d, 0x29, 0xcc, 0xb0, 0x2b, 0x39, 0x99, - 0xdc, 0x53, 0xff, 0x39, 0xc1, 0x52, 0xcc, 0x34, 0x54, 0x8d, 0xcf, 0x8f, 0x47, 0xad, 0x63, 0xf3, - 0xe3, 0x78, 0x74, 0x7e, 0xbc, 0x9b, 0xcf, 0x4f, 0xa0, 0xc6, 0xe7, 0xc7, 0x41, 0x3f, 0xf9, 0xfc, - 0xd0, 0xfb, 0x30, 0x2d, 0x52, 0x95, 0xc2, 0xd4, 0xbd, 0x34, 0x51, 0x33, 0xe2, 0x92, 0xde, 0x98, - 0xc2, 0x92, 0x26, 0xb6, 0xbc, 0x4d, 0x58, 0xac, 0xd8, 0xba, 0xb1, 0x6f, 0x5b, 0x7e, 0x40, 0xcc, - 0xb8, 0x05, 0xba, 0x03, 0xd9, 0x11, 0x3f, 0xf7, 0xa2, 0x24, 0xaa, 0xc0, 0x54, 0xff, 0x2d, 0x01, - 0xc5, 0x0d, 0xa2, 0xdb, 0xc1, 0x5e, 0x94, 0xa9, 0x0a, 0x88, 0x1f, 0x88, 0xfb, 0x91, 0x7d, 0xa3, - 0xcf, 0x43, 0x2e, 0x74, 0x83, 0x2e, 0x7d, 0x0e, 0x0c, 0x51, 0xd1, 0x9b, 0x30, 0x4d, 0xe7, 0xee, - 0x0e, 0x65, 0x7c, 0x75, 0xd1, 0x4b, 0x93, 0xc0, 0xa4, 0x97, 0x96, 0x47, 0x98, 0xdf, 0xc3, 0xe4, - 0x94, 0xc1, 0xb2, 0x89, 0xbe, 0x00, 0x45, 0xf6, 0x50, 0x22, 0xdd, 0xbc, 0xcc, 0x65, 0x3c, 0x0b, - 0xfc, 0xad, 0x93, 0xbb, 0x78, 0x7f, 0x94, 0x84, 0x85, 0x2d, 0xfd, 0x68, 0x87, 0x08, 0x33, 0x44, - 0x4c, 0x4c, 0x0c, 0xd7, 0x33, 0x51, 0x3b, 0x6e, 0xbe, 0x2e, 0x78, 0x3a, 0x9d, 0x44, 0x3c, 0xd9, - 0x8a, 0xc9, 0x98, 0x2f, 0x19, 0x8b, 0xf9, 0x16, 0x20, 0xe3, 0xb8, 0x8e, 0x41, 0x84, 0x6d, 0xe3, - 0x0d, 0xf5, 0xeb, 0x89, 0xb8, 0xed, 0x2a, 0x85, 0xcf, 0x9a, 0x2c, 0xe9, 0xd5, 0x74, 0x83, 0x70, - 0x38, 0xf4, 0x21, 0x94, 0x3a, 0xf5, 0x2a, 0xae, 0x77, 0x2b, 0xad, 0x2f, 0x6b, 0x9d, 0xf2, 0x66, - 0xa7, 0x7c, 0xe7, 0xb6, 0xd6, 0x6e, 0x6d, 0x7e, 0xf4, 0xc6, 0x9b, 0xb7, 0x3f, 0xaf, 0x24, 0x4a, - 0xab, 0xc7, 0x27, 0xab, 0xd7, 0x9a, 0xe5, 0xea, 0x26, 0x3f, 0x71, 0x3b, 0xee, 0xe3, 0x8e, 0x6e, - 0xfb, 0xfa, 0x9d, 0xdb, 0x6d, 0xd7, 0x3e, 0xa2, 0x38, 0xe8, 0xb3, 0x80, 0xd6, 0xeb, 0xb8, 0x59, - 0xef, 0x6a, 0xd2, 0x40, 0x56, 0x2b, 0x55, 0x25, 0xc9, 0x23, 0xa9, 0x75, 0xe2, 0x39, 0x24, 0x28, - 0xd7, 0x3b, 0x6f, 0xdc, 0xb9, 0x5b, 0xad, 0x54, 0xe9, 0x19, 0x2f, 0xc6, 0x6f, 0xcb, 0xb8, 0x13, - 0x90, 0x38, 0xd7, 0x09, 0x88, 0x7c, 0x89, 0xe4, 0x39, 0xbe, 0xc4, 0x3a, 0x2c, 0x18, 0x9e, 0xeb, - 0xfb, 0x1a, 0x0d, 0x4f, 0x88, 0x39, 0x16, 0x00, 0x3d, 0x77, 0x76, 0xba, 0x72, 0xa5, 0x4a, 0xfb, - 0x3b, 0xac, 0x5b, 0xb0, 0xbf, 0x62, 0xc4, 0x40, 0x6c, 0x24, 0xf5, 0x5b, 0x29, 0xea, 0xe9, 0x59, - 0x07, 0x96, 0x4d, 0x7a, 0xc4, 0x47, 0x0f, 0x60, 0xce, 0xf0, 0x88, 0x49, 0xe3, 0x0e, 0xdd, 0x8e, - 0xd7, 0x94, 0x7f, 0x6e, 0xa2, 0xd3, 0x15, 0x12, 0xae, 0x55, 0x43, 0xaa, 0xce, 0x80, 0x18, 0x78, - 0xd6, 0x18, 0x69, 0xa3, 0x47, 0x30, 0xe7, 0x13, 0xdb, 0x72, 0x86, 0x8f, 0x35, 0xc3, 0x75, 0x02, - 0xf2, 0x58, 0x3e, 0xe7, 0x5d, 0xc6, 0xb7, 0x53, 0xdf, 0xa4, 0x54, 0x55, 0x4e, 0x54, 0x41, 0x67, - 0xa7, 0x2b, 0xb3, 0xa3, 0x30, 0x3c, 0x2b, 0x38, 0x8b, 0x76, 0x69, 0x0f, 0x66, 0x47, 0x67, 0x83, - 0x16, 0x84, 0xa1, 0x61, 0xf6, 0x2a, 0x34, 0x24, 0xd7, 0x20, 0xe7, 0x91, 0x9e, 0xe5, 0x07, 0x1e, - 0x17, 0x33, 0xed, 0x09, 0x21, 0x68, 0x09, 0xb2, 0xb1, 0x62, 0x14, 0xda, 0x27, 0xda, 0xd4, 0x82, - 0xf0, 0x3a, 0xb3, 0xd2, 0xcf, 0xc3, 0xd8, 0x5c, 0xe8, 0xa1, 0x33, 0x2d, 0x5f, 0xdf, 0x11, 0x83, - 0xe5, 0xb0, 0x6c, 0x52, 0x5d, 0x1e, 0xfa, 0xa1, 0x03, 0xc9, 0xbe, 0x29, 0x8c, 0x79, 0x3a, 0xa2, - 0xea, 0x8e, 0xf9, 0x32, 0xb2, 0xf6, 0x39, 0x1d, 0xab, 0x7d, 0x5e, 0x80, 0x8c, 0x4d, 0x0e, 0x88, - 0xcd, 0x7d, 0x0c, 0xcc, 0x1b, 0x4c, 0xe7, 0xbf, 0xe4, 0xee, 0x88, 0x6b, 0x78, 0x1d, 0x66, 0x1e, - 0xb9, 0x3b, 0x9a, 0x15, 0x10, 0x2f, 0xaa, 0xb9, 0x2a, 0xdc, 0x79, 0x61, 0x92, 0x7c, 0x45, 0x09, - 0xb4, 0x70, 0x74, 0x8a, 0x8f, 0xdc, 0x9d, 0x86, 0x24, 0x43, 0x65, 0x98, 0x65, 0xfe, 0x1b, 0x79, - 0x4c, 0x8c, 0x21, 0x63, 0x74, 0xf9, 0xbb, 0xeb, 0x0c, 0xa5, 0xa8, 0x4b, 0x02, 0xf5, 0x9b, 0x19, - 0x50, 0x78, 0x91, 0x4a, 0x99, 0x55, 0x6a, 0xb2, 0xbc, 0xf2, 0x87, 0x90, 0xf1, 0x0d, 0x37, 0x2c, - 0xf0, 0x9b, 0x98, 0x10, 0x1f, 0x27, 0x5a, 0xeb, 0x50, 0x0a, 0xcc, 0x09, 0xd1, 0x3a, 0x4c, 0xfb, - 0x7b, 0xba, 0x67, 0x39, 0x3d, 0xe1, 0x1c, 0xbd, 0xfe, 0x74, 0x3c, 0x38, 0x0d, 0x96, 0xc4, 0x68, - 0x03, 0x32, 0x3b, 0x34, 0x22, 0x13, 0xb6, 0xf4, 0xf6, 0x53, 0x71, 0xa9, 0x50, 0x0a, 0x0e, 0xdd, - 0x98, 0xc2, 0x9c, 0x01, 0xe5, 0xd4, 0x77, 0x87, 0x4e, 0x20, 0x2e, 0xa2, 0xa7, 0xe3, 0xc4, 0x8a, - 0x50, 0x22, 0x4e, 0x8c, 0x41, 0x69, 0x06, 0x0a, 0xb1, 0x11, 0x4a, 0xf7, 0xa0, 0x10, 0x43, 0x43, - 0xcf, 0xc3, 0xf4, 0xae, 0xaf, 0xc5, 0x4a, 0xe2, 0xb3, 0xbb, 0x3e, 0xab, 0x20, 0x5a, 0x81, 0x02, - 0xa3, 0xd7, 0x76, 0x6d, 0xbd, 0x27, 0x1f, 0xdd, 0x80, 0x81, 0xd6, 0x29, 0x44, 0x35, 0x20, 0xc3, - 0x64, 0x88, 0x6e, 0x42, 0xa1, 0xd3, 0x68, 0xde, 0xdb, 0xac, 0x6b, 0xcd, 0x56, 0x8d, 0x5a, 0x46, - 0x56, 0x2b, 0xc6, 0xf9, 0x33, 0x8c, 0x8e, 0xe5, 0xf4, 0x6c, 0xc2, 0x6a, 0x73, 0x6f, 0x00, 0x6c, - 0x6d, 0x6f, 0x76, 0x1b, 0x1c, 0x55, 0xd4, 0xeb, 0xc4, 0x50, 0xb7, 0x86, 0x76, 0x60, 0x51, 0x4c, - 0xe1, 0x13, 0xfe, 0x61, 0x02, 0xa6, 0x85, 0x94, 0xd1, 0x4a, 0x68, 0x7a, 0x9f, 0x3b, 0x3e, 0x59, - 0xbd, 0x22, 0xa8, 0x78, 0x27, 0xab, 0x2a, 0xb9, 0xc1, 0xaa, 0x5b, 0x6b, 0x5a, 0xab, 0xb9, 0xf9, - 0x91, 0x92, 0x18, 0x99, 0x86, 0xd8, 0x28, 0x51, 0x8d, 0x89, 0x6e, 0x02, 0xb4, 0x9a, 0x75, 0xed, - 0x21, 0x6e, 0x74, 0xeb, 0x58, 0x16, 0x04, 0x8d, 0xa0, 0xb6, 0x1c, 0xf2, 0xd0, 0xa3, 0x1a, 0x8f, - 0x5e, 0x84, 0x54, 0x79, 0x73, 0x53, 0x49, 0xf1, 0x22, 0x95, 0x11, 0xa4, 0xb2, 0x6d, 0xf3, 0x79, - 0x56, 0x66, 0xa0, 0xc0, 0x4b, 0x87, 0x99, 0x28, 0xd5, 0xbb, 0x50, 0x14, 0x88, 0x3c, 0xc3, 0xf8, - 0x64, 0x3a, 0x6d, 0x31, 0x4c, 0x6b, 0xca, 0xc7, 0x37, 0xd6, 0x52, 0x7f, 0x3f, 0x05, 0xf3, 0x9c, - 0x54, 0x3c, 0x70, 0x44, 0xae, 0xf0, 0xe5, 0xf9, 0xfb, 0xea, 0xe8, 0x5b, 0xf5, 0xe7, 0xce, 0x57, - 0x9a, 0x11, 0xe6, 0xa3, 0x79, 0x74, 0x13, 0xe6, 0xe4, 0x2b, 0x93, 0xb4, 0xa7, 0x3c, 0x38, 0x7e, - 0xef, 0x69, 0xd9, 0x89, 0x96, 0x30, 0x5c, 0x3c, 0x1d, 0x29, 0x1f, 0xb8, 0x62, 0xd6, 0x4c, 0xbe, - 0x90, 0x67, 0x46, 0x5e, 0xc8, 0x4b, 0x65, 0x98, 0x9f, 0xc0, 0xe0, 0x99, 0x32, 0x92, 0x5f, 0x95, - 0x79, 0xff, 0x79, 0x98, 0x13, 0xd9, 0x7a, 0xad, 0xbd, 0x5d, 0xd9, 0x6c, 0x74, 0x36, 0x94, 0x29, - 0x34, 0x03, 0x79, 0xd1, 0xa8, 0xd7, 0x94, 0x04, 0x2a, 0xc1, 0xa2, 0xc4, 0xa1, 0x4a, 0xa9, 0x6d, - 0x37, 0x25, 0x6a, 0x12, 0x3d, 0x07, 0x57, 0x64, 0x5f, 0x04, 0x4e, 0xa9, 0x7f, 0x93, 0x04, 0xe0, - 0x0b, 0x67, 0x75, 0xee, 0xd7, 0x61, 0xd6, 0xd0, 0x07, 0xba, 0x61, 0x05, 0x47, 0x23, 0xb5, 0x7d, - 0x33, 0x12, 0xca, 0xeb, 0xfb, 0xbe, 0x1c, 0x56, 0xd9, 0x46, 0xf7, 0xd4, 0xb9, 0xbf, 0x0e, 0x89, - 0xd8, 0x8b, 0xcf, 0x11, 0x69, 0x8a, 0x7a, 0x5b, 0x29, 0xcc, 0xd7, 0x20, 0x2f, 0x38, 0x87, 0x81, - 0x04, 0xf3, 0x9c, 0x05, 0x93, 0x1a, 0xce, 0xf1, 0xee, 0x86, 0x79, 0x7e, 0x71, 0x7c, 0xea, 0x27, - 0x29, 0x8e, 0x2f, 0x7d, 0x08, 0xe8, 0xc9, 0xe9, 0x3d, 0xd3, 0x5e, 0x3d, 0x84, 0x99, 0xaa, 0x10, - 0x13, 0x66, 0x0f, 0xcd, 0xd7, 0x61, 0xd6, 0xe3, 0x3f, 0x87, 0x32, 0x47, 0xa5, 0x29, 0xa1, 0x5c, - 0x9a, 0x2b, 0x50, 0x60, 0xd9, 0xcd, 0x91, 0xdf, 0x67, 0x01, 0x03, 0x31, 0x04, 0xf5, 0xef, 0xd3, - 0xe1, 0x55, 0xe1, 0x53, 0x4f, 0x86, 0x25, 0x98, 0x16, 0x21, 0x19, 0x9e, 0x20, 0x16, 0x4f, 0x37, - 0x6a, 0x38, 0x69, 0x99, 0xa3, 0x12, 0x4c, 0x5e, 0x28, 0xc1, 0xe8, 0xfd, 0x2e, 0xf5, 0xd4, 0xef, - 0x77, 0x5f, 0x7d, 0x62, 0xeb, 0xb9, 0xc0, 0xff, 0xdf, 0x05, 0x66, 0x3d, 0x9c, 0xf4, 0x53, 0x28, - 0x80, 0xfe, 0xe4, 0x99, 0xcd, 0x9c, 0xff, 0xd6, 0xf3, 0xc4, 0x00, 0x4f, 0x73, 0x60, 0xeb, 0xa1, - 0x85, 0x63, 0x21, 0x29, 0xaf, 0x30, 0x79, 0xe5, 0x69, 0xae, 0x25, 0x0c, 0x7a, 0x74, 0x57, 0xbf, - 0x0b, 0xd3, 0xdc, 0xd2, 0xf9, 0xe2, 0xf7, 0x2f, 0xab, 0xe7, 0xb3, 0x10, 0x01, 0xac, 0x24, 0xf8, - 0xf4, 0xca, 0xf6, 0xd3, 0xb0, 0x2d, 0x5f, 0x09, 0xb5, 0x2a, 0xac, 0xe9, 0x38, 0x57, 0xab, 0x9e, - 0xf1, 0x47, 0x04, 0xea, 0xaf, 0x26, 0x60, 0x3e, 0x3c, 0x6e, 0xd1, 0x4f, 0x02, 0xd1, 0xbb, 0x90, - 0x67, 0xca, 0xef, 0x5b, 0xec, 0x79, 0xf4, 0xf2, 0xa3, 0x1a, 0xa1, 0xb3, 0x2c, 0x27, 0x4b, 0x7a, - 0x7a, 0xc4, 0x14, 0x06, 0xe7, 0x12, 0xda, 0x10, 0x5d, 0xfd, 0xb5, 0x04, 0xe4, 0x24, 0x1c, 0xad, - 0x43, 0xce, 0x27, 0x3d, 0xf6, 0x13, 0x45, 0x31, 0x87, 0x9b, 0x17, 0xf1, 0x59, 0xeb, 0x08, 0x64, - 0x51, 0xe4, 0x21, 0x69, 0x4b, 0xef, 0xc1, 0xcc, 0x48, 0xd7, 0x33, 0x49, 0xff, 0x07, 0xe1, 0xa1, - 0xa6, 0x46, 0x43, 0xfc, 0xe6, 0x25, 0xf4, 0xba, 0x12, 0x97, 0xf9, 0x4a, 0x11, 0xd1, 0x25, 0x5e, - 0x57, 0xf2, 0x19, 0x38, 0x4d, 0xf2, 0xba, 0x50, 0x7b, 0xf4, 0xb8, 0x70, 0x53, 0x71, 0xeb, 0xa9, - 0xf8, 0x4d, 0x3e, 0x39, 0xff, 0x57, 0x7e, 0x5c, 0xe9, 0x7f, 0x12, 0x00, 0x31, 0x67, 0x7a, 0x43, - 0xe4, 0x9c, 0xb8, 0x2f, 0xfd, 0xd6, 0x33, 0xce, 0x78, 0x2d, 0x96, 0x94, 0xfa, 0xdd, 0x04, 0xa4, - 0x19, 0xcb, 0x91, 0x42, 0x9c, 0x45, 0x40, 0x31, 0x6f, 0x51, 0xba, 0x60, 0x09, 0xf4, 0x02, 0x3c, - 0x1f, 0x87, 0x53, 0x47, 0xae, 0x8e, 0xb9, 0x2b, 0x97, 0xa4, 0x77, 0x74, 0xe4, 0x36, 0x8e, 0xf4, - 0xa5, 0xd0, 0x35, 0x58, 0x8a, 0xf5, 0x09, 0x1e, 0x82, 0x6d, 0x9a, 0xb2, 0x8d, 0xf5, 0xf2, 0x4f, - 0xd1, 0x99, 0x19, 0xf3, 0xda, 0x6e, 0x7e, 0x01, 0x8a, 0xf2, 0xa7, 0x85, 0x4c, 0x74, 0x39, 0x48, - 0x77, 0xcb, 0x9d, 0xfb, 0xca, 0x14, 0x02, 0xc8, 0xf2, 0xc8, 0x9e, 0x97, 0x5e, 0x56, 0x5b, 0xcd, - 0xf5, 0xc6, 0x3d, 0x25, 0x49, 0xbf, 0x45, 0x25, 0x7d, 0xea, 0xe6, 0x6f, 0xa5, 0x21, 0x1f, 0x16, - 0x02, 0xa2, 0xab, 0x90, 0x6a, 0xd6, 0x1f, 0xca, 0x34, 0x41, 0x08, 0x6f, 0x92, 0x43, 0xf4, 0x52, - 0x54, 0x42, 0xf0, 0x21, 0x77, 0x2a, 0xc3, 0x6e, 0x59, 0x3e, 0xf0, 0x0a, 0xe4, 0xca, 0x9d, 0x4e, - 0xe3, 0x5e, 0xb3, 0x5e, 0x53, 0x3e, 0x49, 0x70, 0x7f, 0x37, 0x44, 0xe2, 0x86, 0x9b, 0x98, 0x0c, - 0xab, 0x5a, 0xad, 0xb7, 0xbb, 0xf5, 0x9a, 0xf2, 0x71, 0x72, 0x1c, 0x8b, 0x3d, 0x89, 0xb3, 0x1f, - 0x7b, 0xe4, 0xdb, 0xb8, 0xde, 0x2e, 0x63, 0x3a, 0xe0, 0x27, 0x49, 0x5e, 0xd9, 0x10, 0x8d, 0xe8, - 0x91, 0x01, 0x77, 0xaf, 0x97, 0xe5, 0x6f, 0xae, 0x3e, 0x4e, 0xf1, 0xaa, 0xff, 0xa8, 0xaa, 0x91, - 0xe8, 0xe6, 0x11, 0x1d, 0x8d, 0x95, 0x93, 0x32, 0x36, 0xa9, 0xb1, 0xd1, 0x3a, 0x81, 0xee, 0x05, - 0x94, 0x8b, 0x0a, 0xd3, 0x78, 0xbb, 0xd9, 0xa4, 0x48, 0x1f, 0xa7, 0xc7, 0x56, 0x87, 0x87, 0x8e, - 0x43, 0x71, 0xae, 0x43, 0x4e, 0x56, 0x9b, 0x2a, 0x9f, 0xa4, 0xc7, 0x26, 0x54, 0x95, 0xa5, 0xb2, - 0x6c, 0xc0, 0x8d, 0xed, 0x2e, 0xfb, 0x49, 0xd8, 0xc7, 0x99, 0xf1, 0x01, 0xf7, 0x86, 0x81, 0xe9, - 0x1e, 0x3a, 0x68, 0x35, 0x2c, 0xa2, 0xf8, 0x24, 0xc3, 0xf3, 0x24, 0x21, 0x8e, 0xa8, 0xa0, 0x78, - 0x05, 0x72, 0xb8, 0xfe, 0x25, 0xfe, 0xeb, 0xb1, 0x8f, 0xb3, 0x63, 0x7c, 0x30, 0x79, 0x44, 0x0c, - 0x3a, 0xda, 0x2a, 0x64, 0x71, 0x7d, 0xab, 0xf5, 0xa0, 0xae, 0xfc, 0x5e, 0x76, 0x8c, 0x0f, 0x26, - 0x7d, 0x97, 0xfd, 0x1a, 0x26, 0xd7, 0xc2, 0xed, 0x8d, 0x32, 0xdb, 0x94, 0x71, 0x3e, 0x2d, 0x6f, - 0xb0, 0xa7, 0x3b, 0xc4, 0x8c, 0x7e, 0xde, 0x10, 0x76, 0xdd, 0xfc, 0x2a, 0xe4, 0xe4, 0xab, 0x02, - 0x5a, 0x86, 0xec, 0xc3, 0x16, 0xbe, 0x5f, 0xc7, 0xca, 0x14, 0x97, 0xb2, 0xec, 0x79, 0xc8, 0xdf, - 0x83, 0x56, 0x61, 0x7a, 0xab, 0xdc, 0x2c, 0xdf, 0xa3, 0x67, 0x82, 0x4f, 0x43, 0x22, 0x88, 0xd4, - 0x78, 0x49, 0x11, 0x03, 0x84, 0x3c, 0x2b, 0xaf, 0x7c, 0xfb, 0x87, 0xcb, 0x53, 0xdf, 0xff, 0xe1, - 0xf2, 0xd4, 0xc7, 0x67, 0xcb, 0x89, 0x6f, 0x9f, 0x2d, 0x27, 0xbe, 0x73, 0xb6, 0x9c, 0xf8, 0xd7, - 0xb3, 0xe5, 0xc4, 0xaf, 0xff, 0x68, 0x79, 0xea, 0x3b, 0x3f, 0x5a, 0x9e, 0xfa, 0xfe, 0x8f, 0x96, - 0xa7, 0x76, 0xb2, 0x2c, 0xba, 0x7e, 0xf3, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x88, 0xc7, 0xc1, - 0x44, 0x69, 0x42, 0x00, 0x00, + 0x55, 0xb0, 0xfb, 0xd7, 0xdd, 0xa7, 0xbb, 0xed, 0x9a, 0x6b, 0xaf, 0xd7, 0xd3, 0x3b, 0x6b, 0x7b, + 0x6b, 0x77, 0xb2, 0xb3, 0x93, 0x8d, 0x67, 0x76, 0x76, 0xb3, 0xdf, 0xec, 0x6e, 0x36, 0xbb, 0xfd, + 0xe7, 0x71, 0x67, 0xec, 0xee, 0xd6, 0xed, 0xf6, 0x4c, 0x36, 0xd2, 0x97, 0xa2, 0x5c, 0x75, 0xdd, + 0xae, 0x71, 0x75, 0x55, 0x53, 0x55, 0x6d, 0x8f, 0x09, 0x88, 0x7d, 0x40, 0x80, 0x2c, 0x21, 0x40, + 0x48, 0x21, 0x08, 0x59, 0x20, 0x08, 0x4f, 0x3c, 0xf0, 0xc0, 0x03, 0x01, 0xf1, 0xb0, 0x48, 0x08, + 0x85, 0x27, 0x12, 0x82, 0x20, 0x0a, 0xc8, 0x10, 0x47, 0xe2, 0x0d, 0xc1, 0x0b, 0x82, 0x07, 0x1e, + 0xd0, 0xfd, 0xab, 0xaa, 0xf6, 0xb4, 0xed, 0x99, 0x6c, 0x78, 0xb1, 0xeb, 0x9e, 0xbf, 0x7b, 0xef, + 0xb9, 0xf7, 0x9e, 0x7b, 0xce, 0xb9, 0xa7, 0xe1, 0x66, 0xdf, 0x0a, 0x76, 0x47, 0xdb, 0xab, 0x86, + 0x3b, 0xb8, 0x65, 0xba, 0xc6, 0x1e, 0xf1, 0x6e, 0xf9, 0x07, 0xba, 0x37, 0xd8, 0xb3, 0x82, 0x5b, + 0xfa, 0xd0, 0xba, 0x15, 0x1c, 0x0e, 0x89, 0xbf, 0x3a, 0xf4, 0xdc, 0xc0, 0x45, 0x88, 0x13, 0xac, + 0x4a, 0x82, 0xd5, 0xfd, 0x37, 0xca, 0xcb, 0x7d, 0xd7, 0xed, 0xdb, 0xe4, 0x16, 0xa3, 0xd8, 0x1e, + 0xed, 0xdc, 0x0a, 0xac, 0x01, 0xf1, 0x03, 0x7d, 0x30, 0xe4, 0x4c, 0xe5, 0xa5, 0xb3, 0x04, 0xe6, + 0xc8, 0xd3, 0x03, 0xcb, 0x75, 0xce, 0xc3, 0x1f, 0x78, 0xfa, 0x70, 0x48, 0x3c, 0xd1, 0x69, 0x79, + 0xbe, 0xef, 0xf6, 0x5d, 0xf6, 0x79, 0x8b, 0x7e, 0x71, 0xa8, 0xba, 0x0c, 0xd3, 0x0f, 0x88, 0xe7, + 0x5b, 0xae, 0x83, 0xe6, 0x21, 0x63, 0x39, 0x26, 0x79, 0xbc, 0x98, 0x58, 0x49, 0xdc, 0x48, 0x63, + 0xde, 0x50, 0x6f, 0x03, 0x34, 0xe9, 0x47, 0xc3, 0x09, 0xbc, 0x43, 0xa4, 0x40, 0x6a, 0x8f, 0x1c, + 0x32, 0x8a, 0x3c, 0xa6, 0x9f, 0x14, 0xb2, 0xaf, 0xdb, 0x8b, 0x49, 0x0e, 0xd9, 0xd7, 0x6d, 0xf5, + 0x87, 0x09, 0x28, 0x54, 0x1c, 0xc7, 0x0d, 0xd8, 0xe8, 0x7c, 0x84, 0x20, 0xed, 0xe8, 0x03, 0x22, + 0x98, 0xd8, 0x37, 0xaa, 0x41, 0xd6, 0xd6, 0xb7, 0x89, 0xed, 0x2f, 0x26, 0x57, 0x52, 0x37, 0x0a, + 0x77, 0x3e, 0xbb, 0xfa, 0xa4, 0x4a, 0x56, 0x63, 0x42, 0x56, 0x37, 0x18, 0x35, 0x1b, 0x04, 0x16, + 0xac, 0xe8, 0x8b, 0x30, 0x6d, 0x39, 0xa6, 0x65, 0x10, 0x7f, 0x31, 0xcd, 0xa4, 0x2c, 0x4d, 0x92, + 0x12, 0x8d, 0xbe, 0x9a, 0xfe, 0xf6, 0xc9, 0xf2, 0x14, 0x96, 0x4c, 0xe5, 0x77, 0xa0, 0x10, 0x13, + 0x3b, 0x61, 0x6e, 0xf3, 0x90, 0xd9, 0xd7, 0xed, 0x11, 0x11, 0xb3, 0xe3, 0x8d, 0x77, 0x93, 0x77, + 0x13, 0xea, 0x87, 0x30, 0xdf, 0xd2, 0x07, 0xc4, 0xbc, 0x47, 0x1c, 0xe2, 0x59, 0x06, 0x26, 0xbe, + 0x3b, 0xf2, 0x0c, 0x42, 0xe7, 0xba, 0x67, 0x39, 0xa6, 0x9c, 0x2b, 0xfd, 0x9e, 0x2c, 0x45, 0xad, + 0xc1, 0xf3, 0x75, 0xcb, 0x37, 0x3c, 0x12, 0x90, 0x67, 0x16, 0x92, 0x92, 0x42, 0x4e, 0x12, 0x30, + 0x7b, 0x96, 0xfb, 0x2b, 0x30, 0x47, 0x55, 0x6c, 0x6a, 0x9e, 0x80, 0x68, 0xfe, 0x90, 0x18, 0x4c, + 0x58, 0xe1, 0xce, 0x8d, 0x49, 0x1a, 0x9a, 0x34, 0x93, 0xf5, 0x29, 0x7c, 0x85, 0x89, 0x91, 0x80, + 0xee, 0x90, 0x18, 0xc8, 0x80, 0x05, 0x53, 0x0c, 0xfa, 0x8c, 0xf8, 0x24, 0x13, 0x3f, 0x71, 0x19, + 0xcf, 0x99, 0xe6, 0xfa, 0x14, 0x9e, 0x97, 0xc2, 0xe2, 0x9d, 0x54, 0x01, 0x72, 0x52, 0xb6, 0xfa, + 0x8d, 0x04, 0xe4, 0x25, 0xd2, 0x47, 0xaf, 0x41, 0xde, 0xd1, 0x1d, 0x57, 0x33, 0x86, 0x23, 0x9f, + 0x4d, 0x28, 0x55, 0x2d, 0x9e, 0x9e, 0x2c, 0xe7, 0x5a, 0xba, 0xe3, 0xd6, 0x3a, 0x5b, 0x3e, 0xce, + 0x51, 0x74, 0x6d, 0x38, 0xf2, 0xd1, 0x4b, 0x50, 0x1c, 0x90, 0x81, 0xeb, 0x1d, 0x6a, 0xdb, 0x87, + 0x01, 0xf1, 0x85, 0xda, 0x0a, 0x1c, 0x56, 0xa5, 0x20, 0xf4, 0x3e, 0x4c, 0xf7, 0xf9, 0x90, 0x16, + 0x53, 0x6c, 0xfb, 0xbc, 0x3c, 0x69, 0xf4, 0x67, 0x46, 0x8d, 0x25, 0x8f, 0xfa, 0xf5, 0x24, 0xcc, + 0x87, 0x50, 0xf2, 0xd3, 0x23, 0xcb, 0x23, 0x03, 0xe2, 0x04, 0x3e, 0xfa, 0x3c, 0x64, 0x6d, 0x6b, + 0x60, 0x05, 0xbe, 0xd0, 0xf9, 0x8b, 0x93, 0xc4, 0x86, 0x93, 0xc2, 0x82, 0x18, 0x55, 0xa0, 0xe8, + 0x11, 0x9f, 0x78, 0xfb, 0x7c, 0xc7, 0x0b, 0x8d, 0x5e, 0xc2, 0x3c, 0xc6, 0x82, 0xde, 0x05, 0xf0, + 0x0f, 0xf4, 0xa1, 0x98, 0x72, 0x8a, 0x09, 0x78, 0x61, 0x95, 0xdb, 0x85, 0x55, 0x69, 0x17, 0x56, + 0x9b, 0x4e, 0xf0, 0xf6, 0x5b, 0x0f, 0xe8, 0xfe, 0xc1, 0x79, 0x4a, 0xce, 0xb5, 0xb1, 0x0e, 0x57, + 0x84, 0xc2, 0x28, 0x6c, 0x68, 0x39, 0xc4, 0xa7, 0xc7, 0xea, 0x52, 0x11, 0x0a, 0xe7, 0xea, 0x86, + 0x4c, 0xea, 0x1a, 0xe4, 0x3a, 0xb6, 0x1e, 0xec, 0xb8, 0xde, 0x00, 0xa9, 0x50, 0xd4, 0x3d, 0x63, + 0xd7, 0x0a, 0x88, 0x11, 0x8c, 0x3c, 0x69, 0x03, 0xc6, 0x60, 0x68, 0x01, 0x92, 0x2e, 0x9f, 0x6e, + 0xbe, 0x9a, 0x3d, 0x3d, 0x59, 0x4e, 0xb6, 0xbb, 0x38, 0xe9, 0xfa, 0xea, 0x7b, 0x70, 0xa5, 0x63, + 0x8f, 0xfa, 0x96, 0x53, 0x27, 0xbe, 0xe1, 0x59, 0x43, 0x3a, 0x47, 0x7a, 0x36, 0xa8, 0x25, 0x95, + 0x67, 0x83, 0x7e, 0x87, 0x06, 0x26, 0x19, 0x19, 0x18, 0xf5, 0x97, 0x92, 0x70, 0xa5, 0xe1, 0xf4, + 0x2d, 0x87, 0xc4, 0xb9, 0xaf, 0xc3, 0x0c, 0x61, 0x40, 0x6d, 0x9f, 0x1b, 0x3d, 0x21, 0xa7, 0xc4, + 0xa1, 0xd2, 0x12, 0x36, 0xcf, 0x58, 0xa7, 0x37, 0x26, 0x2d, 0xc2, 0x13, 0xd2, 0x27, 0xda, 0xa8, + 0x06, 0x4c, 0x0f, 0xd9, 0x24, 0x7c, 0xb1, 0xc9, 0xae, 0x4f, 0x92, 0xf5, 0xc4, 0x3c, 0xa5, 0xa9, + 0x12, 0xbc, 0x9f, 0xc6, 0x54, 0xfd, 0x46, 0x0a, 0x66, 0x5b, 0xae, 0x39, 0xa6, 0x87, 0x32, 0xe4, + 0x76, 0x5d, 0x3f, 0x88, 0x99, 0xe5, 0xb0, 0x8d, 0xee, 0x42, 0x6e, 0x28, 0x96, 0x4f, 0xec, 0xc1, + 0x6b, 0x93, 0x87, 0xcc, 0x69, 0x70, 0x48, 0x8d, 0xde, 0x83, 0xbc, 0x3c, 0xb8, 0x72, 0xf7, 0x5d, + 0xb2, 0x7d, 0x23, 0x7a, 0xf4, 0x3e, 0x64, 0xf9, 0x22, 0x88, 0x4d, 0x77, 0xfd, 0xa9, 0x74, 0x8e, + 0x05, 0x13, 0xba, 0x07, 0xb9, 0xc0, 0xf6, 0x35, 0xcb, 0xd9, 0x71, 0x17, 0x33, 0x4c, 0xc0, 0xf2, + 0x44, 0x53, 0xe7, 0x9a, 0xa4, 0xb7, 0xd1, 0x6d, 0x3a, 0x3b, 0x6e, 0xb5, 0x70, 0x7a, 0xb2, 0x3c, + 0x2d, 0x1a, 0x78, 0x3a, 0xb0, 0x7d, 0xfa, 0x81, 0xae, 0x41, 0x7a, 0xc7, 0x1a, 0xfa, 0x8b, 0xd9, + 0x95, 0xc4, 0x8d, 0x5c, 0x35, 0x77, 0x7a, 0xb2, 0x9c, 0x5e, 0x6b, 0x76, 0xba, 0x98, 0x41, 0x69, + 0x37, 0x86, 0x6f, 0xf1, 0x6e, 0xa6, 0xd9, 0x7a, 0x9e, 0xdb, 0x4d, 0xad, 0xdb, 0x8c, 0xba, 0x11, + 0x0d, 0x3c, 0x6d, 0xf8, 0x16, 0xfd, 0x50, 0x7f, 0x3d, 0x01, 0x85, 0xd8, 0x60, 0xd0, 0x8b, 0x00, + 0x81, 0x37, 0xf2, 0x03, 0xcd, 0x73, 0xdd, 0x80, 0xad, 0x49, 0x11, 0xe7, 0x19, 0x04, 0xbb, 0x6e, + 0x80, 0x56, 0x61, 0xce, 0x20, 0x5e, 0xa0, 0x59, 0xbe, 0x3f, 0x22, 0x9e, 0xe6, 0x8f, 0xb6, 0x1f, + 0x11, 0x23, 0x60, 0xeb, 0x53, 0xc4, 0x57, 0x28, 0xaa, 0xc9, 0x30, 0x5d, 0x8e, 0x40, 0x6f, 0xc2, + 0x42, 0x9c, 0x7e, 0x38, 0xda, 0xb6, 0x2d, 0x43, 0xa3, 0x7b, 0x26, 0xc5, 0x58, 0xe6, 0x22, 0x96, + 0x0e, 0xc3, 0xdd, 0x27, 0x87, 0xea, 0xf7, 0xc4, 0x98, 0xc4, 0x60, 0xd1, 0x32, 0x14, 0xf8, 0xfe, + 0xd3, 0x62, 0x1b, 0x05, 0x38, 0x88, 0xde, 0x19, 0xe8, 0x65, 0x98, 0x76, 0x5c, 0x93, 0x68, 0x96, + 0x29, 0x8e, 0x2f, 0x9c, 0x9e, 0x2c, 0x67, 0xa9, 0x88, 0x66, 0x1d, 0x67, 0x29, 0xaa, 0x69, 0xa2, + 0x5b, 0x30, 0x3f, 0xd0, 0x1f, 0x6b, 0xfb, 0xae, 0x3d, 0x1a, 0x10, 0x5f, 0x1b, 0x12, 0x4f, 0xa3, + 0x18, 0x36, 0x90, 0x14, 0xbe, 0x32, 0xd0, 0x1f, 0x3f, 0xe0, 0xa8, 0x0e, 0xf1, 0x28, 0x2b, 0xda, + 0x84, 0x39, 0xdd, 0x30, 0x88, 0xef, 0x5b, 0xdb, 0x36, 0xd1, 0x02, 0x77, 0xe8, 0xda, 0x6e, 0xff, + 0x50, 0x6c, 0x8b, 0x89, 0x7b, 0xb1, 0x27, 0x68, 0x30, 0x8a, 0x18, 0x25, 0x4c, 0xfd, 0x7e, 0x02, + 0x14, 0xac, 0xef, 0x04, 0x9b, 0x64, 0xb0, 0x4d, 0xbc, 0x6e, 0xa0, 0x07, 0x23, 0x1f, 0x2d, 0x40, + 0xd6, 0x26, 0xba, 0x49, 0x3c, 0x36, 0xab, 0x1c, 0x16, 0x2d, 0xb4, 0x45, 0x8d, 0xb0, 0x6e, 0xec, + 0xea, 0xdb, 0x96, 0x6d, 0x05, 0x87, 0x6c, 0x5a, 0x33, 0x93, 0xcf, 0xff, 0x59, 0x99, 0xab, 0x38, + 0xc6, 0x88, 0xc7, 0xc4, 0xa0, 0x45, 0x98, 0x1e, 0x10, 0xdf, 0xd7, 0xfb, 0x7c, 0xda, 0x79, 0x2c, + 0x9b, 0xea, 0x7b, 0x50, 0x8c, 0xf3, 0xa1, 0x02, 0x4c, 0x6f, 0xb5, 0xee, 0xb7, 0xda, 0x0f, 0x5b, + 0xca, 0x14, 0x9a, 0x85, 0xc2, 0x56, 0x0b, 0x37, 0x2a, 0xb5, 0xf5, 0x4a, 0x75, 0xa3, 0xa1, 0x24, + 0x50, 0x09, 0xf2, 0x51, 0x33, 0xa9, 0xfe, 0x71, 0x02, 0x80, 0xaa, 0x4c, 0x4c, 0xea, 0x5d, 0xc8, + 0xf8, 0x81, 0x1e, 0xf0, 0x95, 0x9a, 0xb9, 0xf3, 0xca, 0x79, 0x3b, 0x53, 0x8c, 0x97, 0xfe, 0x23, + 0x98, 0xb3, 0xc4, 0x47, 0x98, 0x1c, 0x1b, 0x21, 0xb5, 0xae, 0xba, 0x69, 0x7a, 0x62, 0xe0, 0xec, + 0x5b, 0x7d, 0x0f, 0x32, 0x8c, 0x7b, 0x7c, 0xb8, 0x39, 0x48, 0xd7, 0xe9, 0x57, 0x02, 0xe5, 0x21, + 0x83, 0x1b, 0x95, 0xfa, 0x47, 0x4a, 0x12, 0x29, 0x50, 0xac, 0x37, 0xbb, 0xb5, 0x76, 0xab, 0xd5, + 0xa8, 0xf5, 0x1a, 0x75, 0x25, 0xa5, 0x5e, 0x87, 0x4c, 0x73, 0x40, 0x25, 0x5f, 0xa3, 0xf6, 0x62, + 0x87, 0x78, 0xc4, 0x31, 0xe4, 0xee, 0x8a, 0x00, 0xea, 0x2f, 0x94, 0x20, 0xb3, 0xe9, 0x8e, 0x9c, + 0x00, 0xdd, 0x89, 0xd9, 0xfc, 0x99, 0xc9, 0x4e, 0x1e, 0x23, 0x5c, 0xed, 0x1d, 0x0e, 0x89, 0xb8, + 0x13, 0x16, 0x20, 0xcb, 0x2d, 0x8b, 0x98, 0x8e, 0x68, 0x51, 0x78, 0xa0, 0x7b, 0x7d, 0x12, 0x88, + 0xf9, 0x88, 0x16, 0xba, 0x41, 0x9d, 0x0e, 0xdd, 0x74, 0x1d, 0x9b, 0xef, 0xb4, 0x1c, 0xf7, 0x2c, + 0x30, 0xd1, 0xcd, 0xb6, 0x63, 0x1f, 0xe2, 0x10, 0x8b, 0xee, 0x41, 0xc1, 0x70, 0x1d, 0xdf, 0xf2, + 0x03, 0xe2, 0x18, 0x87, 0x8b, 0x39, 0x36, 0xa8, 0xeb, 0xe7, 0x0f, 0xaa, 0x16, 0x11, 0xe3, 0x38, + 0x27, 0x5a, 0x87, 0xe2, 0xb6, 0xe5, 0x98, 0x9a, 0x3b, 0xe4, 0x17, 0x7e, 0xe6, 0x7c, 0xbb, 0xc7, + 0x25, 0x55, 0x2d, 0xc7, 0x6c, 0x73, 0x62, 0x5c, 0xd8, 0x8e, 0x1a, 0xa8, 0x05, 0x33, 0xfc, 0x78, + 0x85, 0xb2, 0xb2, 0x4c, 0xd6, 0xab, 0xe7, 0xcb, 0xe2, 0x67, 0x4e, 0x4a, 0x2b, 0xed, 0xc7, 0x9b, + 0xe8, 0x3e, 0x94, 0x82, 0xc1, 0x70, 0xc7, 0x0f, 0xc5, 0x4d, 0x33, 0x71, 0x9f, 0xb9, 0x40, 0xf3, + 0x94, 0x5c, 0x4a, 0x2b, 0x06, 0xb1, 0x56, 0xf9, 0x5b, 0x29, 0x28, 0xc4, 0x46, 0x8e, 0xba, 0x50, + 0x18, 0x7a, 0xee, 0x50, 0xef, 0x33, 0xa7, 0x45, 0x2c, 0xea, 0x1b, 0x4f, 0x35, 0xeb, 0xd5, 0x4e, + 0xc4, 0x88, 0xe3, 0x52, 0xd0, 0x5b, 0x50, 0x74, 0x5c, 0xc7, 0x23, 0xc6, 0xc8, 0xf3, 0xad, 0x7d, + 0xbe, 0xe8, 0xb9, 0xaa, 0x72, 0x7a, 0xb2, 0x5c, 0x6c, 0xb9, 0x0e, 0x96, 0x70, 0x3c, 0x46, 0xa5, + 0x1e, 0x27, 0xa1, 0x10, 0x13, 0x89, 0x6e, 0x42, 0x0e, 0x77, 0x70, 0xf3, 0x41, 0xa5, 0xd7, 0x50, + 0xa6, 0xca, 0xd7, 0x8e, 0x8e, 0x57, 0x16, 0xd9, 0x18, 0xe2, 0xdd, 0x76, 0x3c, 0x6b, 0x9f, 0xee, + 0xfc, 0x1b, 0x30, 0x2d, 0x49, 0x13, 0xe5, 0x17, 0x8e, 0x8e, 0x57, 0x9e, 0x3f, 0x4b, 0x1a, 0xa3, + 0xc4, 0xdd, 0xf5, 0x0a, 0x6e, 0xd4, 0x95, 0xe4, 0x64, 0x4a, 0xdc, 0xdd, 0xd5, 0x3d, 0x62, 0xa2, + 0xcf, 0x40, 0x56, 0x10, 0xa6, 0xca, 0xe5, 0xa3, 0xe3, 0x95, 0x85, 0xb3, 0x84, 0x11, 0x1d, 0xee, + 0x6e, 0x54, 0x1e, 0x34, 0x94, 0xf4, 0x64, 0x3a, 0xdc, 0xb5, 0xf5, 0x7d, 0x82, 0x5e, 0x81, 0x0c, + 0x27, 0xcb, 0x94, 0xaf, 0x1e, 0x1d, 0xaf, 0x3c, 0xf7, 0x84, 0x38, 0x4a, 0x55, 0x5e, 0xfc, 0xe5, + 0xdf, 0x5f, 0x9a, 0xfa, 0xb3, 0x6f, 0x2e, 0x29, 0x67, 0xd1, 0xe5, 0xff, 0x49, 0x40, 0x69, 0x6c, + 0xa3, 0x20, 0x15, 0xb2, 0x8e, 0x6b, 0xb8, 0x43, 0xee, 0x7b, 0xe4, 0xa4, 0xc1, 0xaf, 0xb9, 0xc3, + 0x43, 0x2c, 0x30, 0xe8, 0xfe, 0x19, 0xef, 0xe9, 0xcd, 0xa7, 0xdc, 0x85, 0x13, 0xfd, 0xa7, 0x0f, + 0xa0, 0x64, 0x7a, 0xd6, 0x3e, 0xf1, 0x34, 0xc3, 0x75, 0x76, 0xac, 0xbe, 0xf0, 0x2b, 0xca, 0x13, + 0x03, 0x0d, 0x46, 0x88, 0x8b, 0x9c, 0xa1, 0xc6, 0xe8, 0x3f, 0x85, 0xe7, 0x54, 0x1e, 0x42, 0x31, + 0xbe, 0xaf, 0xe9, 0x1d, 0xed, 0x5b, 0x3f, 0x43, 0x84, 0x7b, 0xcd, 0xe2, 0x0f, 0x9c, 0xa7, 0x10, + 0xee, 0x41, 0xbf, 0x0a, 0xe9, 0x01, 0xbd, 0xd8, 0xa8, 0x9c, 0x52, 0x75, 0x8e, 0x3a, 0x70, 0x3f, + 0x38, 0x59, 0x2e, 0xb8, 0xfe, 0xea, 0x9a, 0x65, 0x93, 0x4d, 0xd7, 0x24, 0x98, 0x11, 0x50, 0x5b, + 0x2b, 0x0f, 0x96, 0xb8, 0x0d, 0x44, 0x53, 0xfd, 0xf3, 0x04, 0xa4, 0xa9, 0x11, 0x43, 0x2f, 0x40, + 0xba, 0xda, 0x6c, 0xd5, 0x95, 0xa9, 0xf2, 0x95, 0xa3, 0xe3, 0x95, 0x12, 0xd3, 0x16, 0x45, 0xd0, + 0xc3, 0x80, 0x96, 0x21, 0xfb, 0xa0, 0xbd, 0xb1, 0xb5, 0x49, 0x77, 0xde, 0xdc, 0xd1, 0xf1, 0xca, + 0x6c, 0x88, 0xe6, 0xfa, 0x44, 0x2f, 0x42, 0xa6, 0xb7, 0xd9, 0x59, 0xeb, 0x2a, 0xc9, 0x32, 0x3a, + 0x3a, 0x5e, 0x99, 0x09, 0xf1, 0x6c, 0x3a, 0xe8, 0x25, 0xc8, 0xb4, 0x3a, 0xcd, 0x4e, 0x43, 0x49, + 0x95, 0x17, 0x8e, 0x8e, 0x57, 0x50, 0x88, 0x66, 0x81, 0x60, 0xc7, 0x1a, 0x12, 0xf4, 0x12, 0x4c, + 0xd7, 0x36, 0xb6, 0xba, 0xbd, 0x06, 0x56, 0xd2, 0xe5, 0xf9, 0xa3, 0xe3, 0x15, 0x25, 0x24, 0xaa, + 0xd9, 0x23, 0x3f, 0x20, 0x5e, 0xf9, 0x8a, 0xd8, 0x36, 0xf9, 0x10, 0xa3, 0x7e, 0x37, 0x01, 0x85, + 0x98, 0xb9, 0xa3, 0x3b, 0xbf, 0xde, 0x58, 0xab, 0x6c, 0x6d, 0xf4, 0x94, 0xa9, 0xd8, 0xce, 0x8f, + 0x91, 0xd4, 0xc9, 0x8e, 0x3e, 0xb2, 0xa9, 0xf9, 0x85, 0x5a, 0xbb, 0xd5, 0x6d, 0x76, 0x7b, 0x8d, + 0x56, 0x4f, 0x49, 0x94, 0x17, 0x8f, 0x8e, 0x57, 0xe6, 0xcf, 0x12, 0xaf, 0x8d, 0x6c, 0x9b, 0xee, + 0xfd, 0x5a, 0xa5, 0xb6, 0xce, 0x0e, 0x53, 0xb4, 0xf7, 0x63, 0x54, 0x35, 0xdd, 0xd8, 0x25, 0x26, + 0x7a, 0x1d, 0xf2, 0xf5, 0xc6, 0x46, 0xe3, 0x5e, 0x85, 0x5d, 0x3a, 0xe5, 0x17, 0x8f, 0x8e, 0x57, + 0xae, 0x3e, 0xd9, 0xbb, 0x4d, 0xfa, 0x7a, 0x40, 0xcc, 0x33, 0x67, 0x20, 0x46, 0xa2, 0xfe, 0x67, + 0x12, 0x4a, 0x98, 0xf8, 0x81, 0xee, 0x05, 0x1d, 0xd7, 0xb6, 0x8c, 0x43, 0xd4, 0x81, 0xbc, 0xe1, + 0x3a, 0xa6, 0x15, 0x33, 0x5f, 0x77, 0xce, 0x71, 0x73, 0x23, 0x2e, 0xd9, 0xaa, 0x49, 0x4e, 0x1c, + 0x09, 0x41, 0xb7, 0x20, 0x63, 0x12, 0x5b, 0x3f, 0x14, 0xfe, 0xf6, 0xd5, 0x27, 0xe2, 0xad, 0xba, + 0x48, 0xf5, 0x60, 0x4e, 0xc7, 0xa2, 0x5b, 0xfd, 0xb1, 0xa6, 0x07, 0x01, 0x19, 0x0c, 0x03, 0xbe, + 0x8d, 0xd2, 0xb8, 0x30, 0xd0, 0x1f, 0x57, 0x04, 0x08, 0xbd, 0x01, 0xd9, 0x03, 0xcb, 0x31, 0xdd, + 0x03, 0xe1, 0x38, 0x5d, 0x20, 0x54, 0x10, 0xaa, 0x47, 0xd4, 0x53, 0x3a, 0x33, 0x4c, 0xba, 0x13, + 0x5b, 0xed, 0x56, 0x43, 0xee, 0x44, 0x81, 0x6f, 0x3b, 0x2d, 0xd7, 0xa1, 0x06, 0x06, 0xda, 0x2d, + 0x6d, 0xad, 0xd2, 0xdc, 0xd8, 0xc2, 0x74, 0x37, 0xb2, 0x9d, 0x12, 0x92, 0xac, 0xe9, 0x96, 0x4d, + 0x03, 0xbc, 0xab, 0x90, 0xaa, 0xb4, 0x3e, 0x52, 0x92, 0x65, 0xe5, 0xe8, 0x78, 0xa5, 0x18, 0xa2, + 0x2b, 0xce, 0x61, 0xa4, 0xf7, 0xb3, 0xfd, 0xaa, 0x7f, 0x93, 0x82, 0xe2, 0xd6, 0xd0, 0xd4, 0x03, + 0xc2, 0x0f, 0x32, 0x5a, 0x81, 0xc2, 0x50, 0xf7, 0x74, 0xdb, 0x26, 0xb6, 0xe5, 0x0f, 0x44, 0x92, + 0x2a, 0x0e, 0x42, 0xef, 0x3c, 0xad, 0x1a, 0xab, 0x39, 0x7a, 0x38, 0xbf, 0xf1, 0xcf, 0xcb, 0x09, + 0xa9, 0xd0, 0x2d, 0x98, 0xd9, 0xe1, 0xa3, 0xd5, 0x74, 0x83, 0x2d, 0x6c, 0x8a, 0x2d, 0xec, 0xea, + 0xa4, 0x85, 0x8d, 0x0f, 0x6b, 0x55, 0x4c, 0xb2, 0xc2, 0xb8, 0x70, 0x69, 0x27, 0xde, 0x44, 0x6f, + 0xc2, 0xf4, 0xc0, 0x75, 0xac, 0xc0, 0xf5, 0x2e, 0x5f, 0x05, 0x49, 0x89, 0x6e, 0x02, 0x75, 0x8a, + 0x35, 0x39, 0x1e, 0x86, 0x66, 0xce, 0x41, 0x12, 0xcf, 0x0e, 0xf4, 0xc7, 0xa2, 0x43, 0x4c, 0xc1, + 0xa8, 0x0a, 0x19, 0xd7, 0xa3, 0x6e, 0x6c, 0x96, 0x0d, 0xf7, 0xf5, 0x4b, 0x87, 0xcb, 0x1b, 0x6d, + 0xca, 0x83, 0x39, 0xab, 0xfa, 0x36, 0x94, 0xc6, 0x26, 0x41, 0xbd, 0xb7, 0x4e, 0x65, 0xab, 0xdb, + 0x50, 0xa6, 0x50, 0x11, 0x72, 0xb5, 0x76, 0xab, 0xd7, 0x6c, 0x6d, 0x51, 0xf7, 0xb3, 0x08, 0x39, + 0xdc, 0xde, 0xd8, 0xa8, 0x56, 0x6a, 0xf7, 0x95, 0xa4, 0xba, 0x0a, 0x85, 0x98, 0x34, 0x34, 0x03, + 0xd0, 0xed, 0xb5, 0x3b, 0xda, 0x5a, 0x13, 0x77, 0x7b, 0xdc, 0x79, 0xed, 0xf6, 0x2a, 0xb8, 0x27, + 0x00, 0x09, 0xf5, 0xdf, 0x93, 0x72, 0x45, 0x85, 0xbf, 0x5a, 0x1d, 0xf7, 0x57, 0x2f, 0x18, 0xbc, + 0xf0, 0x58, 0xa3, 0x46, 0xe8, 0xb7, 0xbe, 0x03, 0xc0, 0x36, 0x0e, 0x31, 0x35, 0x3d, 0x10, 0x0b, + 0x5f, 0x7e, 0x42, 0xc9, 0x3d, 0x99, 0x4b, 0xc5, 0x79, 0x41, 0x5d, 0x09, 0xd0, 0xfb, 0x50, 0x34, + 0xdc, 0xc1, 0xd0, 0x26, 0x82, 0x39, 0x75, 0x29, 0x73, 0x21, 0xa4, 0xaf, 0x04, 0x71, 0x8f, 0x39, + 0x3d, 0xee, 0xd3, 0xff, 0x62, 0x42, 0x6a, 0x66, 0x82, 0x93, 0x5c, 0x84, 0xdc, 0x56, 0xa7, 0x5e, + 0xe9, 0x35, 0x5b, 0xf7, 0x94, 0x04, 0x02, 0xc8, 0x32, 0x55, 0xd7, 0x95, 0x24, 0x75, 0xee, 0x6b, + 0xed, 0xcd, 0xce, 0x46, 0x83, 0x59, 0x2c, 0x34, 0x0f, 0x8a, 0x54, 0xb6, 0xc6, 0x14, 0xd9, 0xa8, + 0x2b, 0x69, 0x34, 0x07, 0xb3, 0x21, 0x54, 0x70, 0x66, 0xd0, 0x02, 0xa0, 0x10, 0x18, 0x89, 0xc8, + 0xaa, 0x3f, 0x07, 0xb3, 0x35, 0xd7, 0x09, 0x74, 0xcb, 0x09, 0x03, 0x9f, 0x3b, 0x74, 0xd2, 0x02, + 0x44, 0xe3, 0x36, 0x76, 0x11, 0x56, 0x67, 0x4f, 0x4f, 0x96, 0x0b, 0x21, 0x69, 0xb3, 0xce, 0x1c, + 0x55, 0xd1, 0x30, 0xe9, 0xf9, 0x1d, 0x8a, 0x10, 0x2f, 0x53, 0x9d, 0x3e, 0x3d, 0x59, 0x4e, 0x75, + 0x9a, 0x75, 0x4c, 0x61, 0xe8, 0x05, 0xc8, 0x93, 0xc7, 0x56, 0xa0, 0x19, 0x32, 0xa2, 0xcb, 0xe0, + 0x1c, 0x05, 0xd4, 0x5c, 0x93, 0xa8, 0x55, 0x80, 0x8e, 0xeb, 0x05, 0xa2, 0xe7, 0xb7, 0x20, 0x33, + 0x74, 0x3d, 0x96, 0x15, 0x3b, 0x37, 0x57, 0x4b, 0xc9, 0xf9, 0x46, 0xc5, 0x9c, 0x58, 0xfd, 0xad, + 0x14, 0x40, 0x4f, 0xf7, 0xf7, 0x84, 0x90, 0xbb, 0x90, 0x0f, 0xf3, 0xe2, 0x22, 0xbd, 0x76, 0xe1, + 0x6a, 0x87, 0xc4, 0xe8, 0x4d, 0xb9, 0xd9, 0x78, 0x48, 0x37, 0x31, 0x31, 0x21, 0x3b, 0x9a, 0x14, + 0x15, 0x8d, 0xc7, 0x6d, 0xd4, 0x8f, 0x20, 0x9e, 0x27, 0x56, 0x9e, 0x7e, 0xa2, 0x1a, 0xbb, 0x16, + 0xb8, 0xd2, 0x84, 0x2f, 0x3f, 0x31, 0xa1, 0x78, 0x66, 0x45, 0xd6, 0xa7, 0x70, 0xc4, 0x87, 0x3e, + 0x80, 0x02, 0x9d, 0xb7, 0xe6, 0x33, 0x9c, 0x70, 0xe3, 0xcf, 0x55, 0x15, 0x97, 0x80, 0x61, 0x18, + 0x69, 0xf9, 0x45, 0x00, 0x7d, 0x38, 0xb4, 0x2d, 0x62, 0x6a, 0xdb, 0x87, 0xcc, 0x6f, 0xcf, 0xe3, + 0xbc, 0x80, 0x54, 0x0f, 0xe9, 0x71, 0x91, 0x68, 0x3d, 0x60, 0xb1, 0xcb, 0x25, 0x0a, 0x14, 0xd4, + 0x95, 0xa0, 0xaa, 0xc0, 0x8c, 0x37, 0x72, 0xa8, 0x42, 0xc5, 0xe8, 0xd4, 0x3f, 0x4a, 0xc2, 0xf3, + 0x2d, 0x12, 0x1c, 0xb8, 0xde, 0x5e, 0x25, 0x08, 0x74, 0x63, 0x77, 0x40, 0x1c, 0xb1, 0x7c, 0xb1, + 0x38, 0x2b, 0x31, 0x16, 0x67, 0x2d, 0xc2, 0xb4, 0x6e, 0x5b, 0xba, 0x4f, 0xb8, 0x77, 0x98, 0xc7, + 0xb2, 0x49, 0xa3, 0x41, 0x1a, 0x5b, 0x12, 0xdf, 0x27, 0x3c, 0x57, 0x46, 0x07, 0x2e, 0x01, 0xe8, + 0x6b, 0xb0, 0x20, 0xfc, 0x40, 0x3d, 0xec, 0x8a, 0x86, 0x27, 0x32, 0xf5, 0xdf, 0x98, 0x18, 0xec, + 0x4e, 0x1e, 0x9c, 0x70, 0x14, 0x23, 0x70, 0x7b, 0x18, 0x08, 0xb7, 0x73, 0xde, 0x9c, 0x80, 0x2a, + 0xdf, 0x83, 0xab, 0xe7, 0xb2, 0x3c, 0x53, 0x2e, 0xee, 0x7b, 0x49, 0x80, 0x66, 0xa7, 0xb2, 0x29, + 0x94, 0x54, 0x87, 0xec, 0x8e, 0x3e, 0xb0, 0xec, 0xc3, 0x8b, 0x2c, 0x60, 0x44, 0xbf, 0x5a, 0xe1, + 0xea, 0x58, 0x63, 0x3c, 0x58, 0xf0, 0xb2, 0x50, 0x77, 0xb4, 0xed, 0x90, 0x20, 0x0c, 0x75, 0x59, + 0x8b, 0x0e, 0xc3, 0xd3, 0x9d, 0x70, 0xeb, 0xf2, 0x06, 0x5d, 0x00, 0xea, 0xf2, 0x1c, 0xe8, 0x87, + 0xd2, 0x6c, 0x89, 0x26, 0x5a, 0x67, 0x79, 0x77, 0xe2, 0xed, 0x13, 0x73, 0x31, 0xc3, 0x94, 0x7a, + 0xd9, 0x78, 0xb0, 0x20, 0xe7, 0xba, 0x0b, 0xb9, 0xcb, 0xef, 0x31, 0x97, 0x29, 0x42, 0x3d, 0x93, + 0x8e, 0x6e, 0x43, 0x69, 0x6c, 0x9e, 0x4f, 0xe4, 0x18, 0x9a, 0x9d, 0x07, 0x6f, 0x29, 0x69, 0xf1, + 0xf5, 0xb6, 0x92, 0x55, 0xff, 0x2a, 0xc5, 0x0d, 0x8d, 0xd0, 0xea, 0xe4, 0xf7, 0xa6, 0x1c, 0xdb, + 0xdd, 0x86, 0x6b, 0x0b, 0x03, 0xf0, 0xea, 0xc5, 0xf6, 0x87, 0x86, 0x9a, 0x8c, 0x1c, 0x87, 0x8c, + 0x68, 0x19, 0x0a, 0x7c, 0x17, 0x6b, 0xf4, 0xc0, 0x31, 0xb5, 0x96, 0x30, 0x70, 0x10, 0xe5, 0x44, + 0xd7, 0x61, 0x86, 0x65, 0xda, 0xfc, 0x5d, 0x62, 0x72, 0x9a, 0x34, 0xa3, 0x29, 0x85, 0x50, 0x46, + 0xb6, 0x09, 0x45, 0x01, 0xd0, 0x58, 0xc0, 0x90, 0x61, 0x03, 0xba, 0x79, 0xd9, 0x80, 0x38, 0x0b, + 0x8b, 0x23, 0x0a, 0xc3, 0xa8, 0xa1, 0xfe, 0x14, 0xe4, 0xe4, 0x60, 0xd1, 0x22, 0xa4, 0x7a, 0xb5, + 0x8e, 0x32, 0x55, 0x9e, 0x3d, 0x3a, 0x5e, 0x29, 0x48, 0x70, 0xaf, 0xd6, 0xa1, 0x98, 0xad, 0x7a, + 0x47, 0x49, 0x8c, 0x63, 0xb6, 0xea, 0x1d, 0x54, 0x86, 0x74, 0xb7, 0xd6, 0xeb, 0x48, 0xff, 0x4c, + 0xa2, 0x28, 0xac, 0x9c, 0xa6, 0xfe, 0x99, 0xba, 0x03, 0x85, 0x58, 0xef, 0xe8, 0x65, 0x98, 0x6e, + 0xb6, 0xee, 0xe1, 0x46, 0xb7, 0xab, 0x4c, 0xf1, 0x08, 0x22, 0x86, 0x6d, 0x3a, 0x7d, 0xba, 0x76, + 0xe8, 0x45, 0x48, 0xaf, 0xb7, 0xe9, 0xbd, 0xcf, 0x43, 0x94, 0x18, 0xc5, 0xba, 0xeb, 0x07, 0xe5, + 0x39, 0xe1, 0xf8, 0xc5, 0x05, 0xab, 0xbf, 0x9d, 0x80, 0x2c, 0x3f, 0x68, 0x13, 0x17, 0xb1, 0x12, + 0xc5, 0x4d, 0x3c, 0xb2, 0x7c, 0xf5, 0xfc, 0x28, 0x70, 0x55, 0x04, 0x6d, 0x7c, 0x6b, 0x4a, 0xbe, + 0xf2, 0xbb, 0x50, 0x8c, 0x23, 0x9e, 0x69, 0x63, 0x7e, 0x0d, 0x0a, 0x74, 0xef, 0xcb, 0x68, 0xf0, + 0x0e, 0x64, 0xb9, 0xb1, 0x08, 0xef, 0xa1, 0xf3, 0x43, 0x52, 0x41, 0x89, 0xee, 0xc2, 0x34, 0x0f, + 0x63, 0xe5, 0x6b, 0xc0, 0xd2, 0xc5, 0x27, 0x0c, 0x4b, 0x72, 0xf5, 0x03, 0x48, 0x77, 0x08, 0xf1, + 0xe2, 0x29, 0xd7, 0xc4, 0xb9, 0x29, 0x57, 0x99, 0xb2, 0x4b, 0xc6, 0x52, 0x76, 0x3d, 0x28, 0x3e, + 0x24, 0x56, 0x7f, 0x37, 0x20, 0x26, 0x13, 0xf4, 0x3a, 0xa4, 0x87, 0x24, 0x1c, 0xfc, 0xe2, 0xc4, + 0xcd, 0x47, 0x88, 0x87, 0x19, 0x15, 0xb5, 0x31, 0x07, 0x8c, 0x5b, 0x3c, 0xa4, 0x89, 0x96, 0xfa, + 0xb7, 0x49, 0x98, 0x69, 0xfa, 0xfe, 0x48, 0x77, 0x0c, 0xe9, 0xd5, 0x7d, 0x71, 0xdc, 0xab, 0x9b, + 0xf8, 0xe2, 0x38, 0xce, 0x32, 0x9e, 0x89, 0x14, 0x37, 0x6b, 0x32, 0xbc, 0x59, 0xd5, 0x7f, 0x4b, + 0xc8, 0x74, 0xe3, 0xf5, 0x98, 0x29, 0xe0, 0x31, 0x62, 0x5c, 0x12, 0xd9, 0x72, 0xf6, 0x1c, 0xf7, + 0xc0, 0xa1, 0x01, 0x2e, 0x6e, 0xb4, 0x1a, 0x0f, 0x95, 0x04, 0xdf, 0x9e, 0x63, 0x44, 0x98, 0x38, + 0xe4, 0x80, 0x4a, 0xea, 0x34, 0x5a, 0x75, 0xea, 0x85, 0x25, 0x27, 0x48, 0xea, 0x10, 0xc7, 0xb4, + 0x9c, 0x3e, 0x7a, 0x19, 0xb2, 0xcd, 0x6e, 0x77, 0x8b, 0x85, 0x90, 0xcf, 0x1f, 0x1d, 0xaf, 0xcc, + 0x8d, 0x51, 0xb1, 0x04, 0xba, 0x49, 0x89, 0x68, 0x08, 0x44, 0xfd, 0xb3, 0x09, 0x44, 0xd4, 0xb7, + 0xe6, 0x44, 0xb8, 0xdd, 0xab, 0xf4, 0x1a, 0x4a, 0x66, 0x02, 0x11, 0x76, 0xe9, 0x5f, 0x71, 0xdc, + 0xfe, 0x31, 0x09, 0x4a, 0xc5, 0x30, 0xc8, 0x30, 0xa0, 0x78, 0x11, 0x75, 0xf6, 0x20, 0x37, 0xa4, + 0x5f, 0x16, 0x91, 0x1e, 0xd4, 0xdd, 0x89, 0x6f, 0xe6, 0x67, 0xf8, 0x56, 0xb1, 0x6b, 0x93, 0x8a, + 0x39, 0xb0, 0x7c, 0xdf, 0x72, 0x1d, 0x0e, 0xc3, 0xa1, 0xa4, 0xf2, 0x7f, 0x24, 0x60, 0x6e, 0x02, + 0x05, 0xba, 0x0d, 0x69, 0xcf, 0xb5, 0xe5, 0x1a, 0x5e, 0x3b, 0x2f, 0x93, 0x4c, 0x59, 0x31, 0xa3, + 0x44, 0x4b, 0x00, 0xfa, 0x28, 0x70, 0x75, 0xd6, 0x3f, 0xcf, 0xbf, 0xe1, 0x18, 0x04, 0x3d, 0x84, + 0xac, 0x4f, 0x0c, 0x8f, 0x48, 0x3f, 0xfb, 0x83, 0x1f, 0x77, 0xf4, 0xab, 0x5d, 0x26, 0x06, 0x0b, + 0x71, 0xe5, 0x55, 0xc8, 0x72, 0x08, 0xdd, 0xf6, 0xa6, 0x1e, 0xe8, 0xe2, 0xf5, 0x84, 0x7d, 0xd3, + 0xdd, 0xa4, 0xdb, 0x7d, 0xb9, 0x9b, 0x74, 0xbb, 0xaf, 0xfe, 0x65, 0x12, 0xa0, 0xf1, 0x38, 0x20, + 0x9e, 0xa3, 0xdb, 0xb5, 0x0a, 0x6a, 0xc4, 0x6e, 0x06, 0x3e, 0xdb, 0xd7, 0x26, 0xbe, 0x3c, 0x85, + 0x1c, 0xab, 0xb5, 0xca, 0x84, 0xbb, 0xe1, 0x2a, 0xa4, 0x46, 0x9e, 0x28, 0x83, 0xe0, 0x3e, 0xf2, + 0x16, 0xde, 0xc0, 0x14, 0x86, 0x1a, 0xf1, 0x74, 0xcf, 0xb9, 0xc5, 0x0e, 0xb1, 0x0e, 0x26, 0x9a, + 0x2e, 0x7a, 0xf2, 0x0d, 0x5d, 0x33, 0x88, 0xb8, 0x55, 0x8a, 0xfc, 0xe4, 0xd7, 0x2a, 0x35, 0xe2, + 0x05, 0x38, 0x6b, 0xe8, 0xf4, 0xff, 0xa7, 0xb2, 0x6f, 0xaf, 0x03, 0x44, 0x53, 0x43, 0x4b, 0x90, + 0xa9, 0xad, 0x75, 0xbb, 0x1b, 0xca, 0x14, 0x37, 0xe0, 0x11, 0x8a, 0x81, 0xd5, 0x3f, 0x4d, 0x42, + 0xae, 0x56, 0x11, 0x57, 0x6e, 0x0d, 0x14, 0x66, 0x95, 0xd8, 0x9b, 0x13, 0x79, 0x3c, 0xb4, 0xbc, + 0x43, 0x61, 0x58, 0x2e, 0x08, 0x78, 0x67, 0x28, 0x0b, 0x1d, 0x75, 0x83, 0x31, 0x20, 0x0c, 0x45, + 0x22, 0x94, 0xa0, 0x19, 0xba, 0xb4, 0xf1, 0x4b, 0x17, 0x2b, 0x8b, 0x87, 0x2e, 0x51, 0xdb, 0xc7, + 0x05, 0x29, 0xa4, 0xa6, 0xfb, 0xe8, 0x1d, 0x98, 0xf5, 0xad, 0xbe, 0x63, 0x39, 0x7d, 0x4d, 0x2a, + 0x8f, 0x3d, 0x80, 0x55, 0xaf, 0x9c, 0x9e, 0x2c, 0x97, 0xba, 0x1c, 0x25, 0x74, 0x58, 0x12, 0x94, + 0x35, 0xa6, 0x4a, 0xf4, 0x36, 0xcc, 0xc4, 0x58, 0xa9, 0x16, 0xb9, 0xda, 0x59, 0x52, 0x39, 0xe4, + 0xbc, 0x4f, 0x0e, 0x71, 0x31, 0x64, 0xbc, 0x4f, 0x58, 0x6e, 0x66, 0xc7, 0xf5, 0x0c, 0xa2, 0x79, + 0xec, 0x4c, 0xb3, 0xdb, 0x3d, 0x8d, 0x0b, 0x0c, 0xc6, 0x8f, 0xb9, 0xfa, 0x00, 0xe6, 0xda, 0x9e, + 0xb1, 0x4b, 0xfc, 0x80, 0xab, 0x42, 0x68, 0xf1, 0x03, 0xb8, 0x16, 0xe8, 0xfe, 0x9e, 0xb6, 0x6b, + 0xf9, 0x81, 0xeb, 0x1d, 0x6a, 0x1e, 0x09, 0x88, 0x43, 0xf1, 0x1a, 0x2b, 0x11, 0x10, 0x19, 0xc7, + 0xab, 0x94, 0x66, 0x9d, 0x93, 0x60, 0x49, 0xb1, 0x41, 0x09, 0xd4, 0x26, 0x14, 0x69, 0x08, 0x23, + 0x92, 0x6a, 0x74, 0xf6, 0x60, 0xbb, 0x7d, 0xed, 0xa9, 0xaf, 0xa9, 0xbc, 0xed, 0xf6, 0xf9, 0xa7, + 0xfa, 0x65, 0x50, 0xea, 0x96, 0x3f, 0xd4, 0x03, 0x63, 0x57, 0xa6, 0x52, 0x51, 0x1d, 0x94, 0x5d, + 0xa2, 0x7b, 0xc1, 0x36, 0xd1, 0x03, 0x6d, 0x48, 0x3c, 0xcb, 0x35, 0x2f, 0x5f, 0xe5, 0xd9, 0x90, + 0xa5, 0xc3, 0x38, 0xd4, 0xff, 0x4a, 0x00, 0x60, 0x7d, 0x47, 0x7a, 0x6b, 0x9f, 0x85, 0x2b, 0xbe, + 0xa3, 0x0f, 0xfd, 0x5d, 0x37, 0xd0, 0x2c, 0x27, 0x20, 0xde, 0xbe, 0x6e, 0x8b, 0xe4, 0x8e, 0x22, + 0x11, 0x4d, 0x01, 0x47, 0xaf, 0x03, 0xda, 0x23, 0x64, 0xa8, 0xb9, 0xb6, 0xa9, 0x49, 0x24, 0x2f, + 0x1d, 0x48, 0x63, 0x85, 0x62, 0xda, 0xb6, 0xd9, 0x95, 0x70, 0x54, 0x85, 0x25, 0x3a, 0x7d, 0xe2, + 0x04, 0x9e, 0x45, 0x7c, 0x6d, 0xc7, 0xf5, 0x34, 0xdf, 0x76, 0x0f, 0xb4, 0x1d, 0xd7, 0xb6, 0xdd, + 0x03, 0xe2, 0xc9, 0xbc, 0x59, 0xd9, 0x76, 0xfb, 0x0d, 0x4e, 0xb4, 0xe6, 0x7a, 0x5d, 0xdb, 0x3d, + 0x58, 0x93, 0x14, 0xd4, 0xa5, 0x8b, 0xe6, 0x1c, 0x58, 0xc6, 0x9e, 0x74, 0xe9, 0x42, 0x68, 0xcf, + 0x32, 0xf6, 0xd0, 0xcb, 0x50, 0x22, 0x36, 0x61, 0xe9, 0x13, 0x4e, 0x95, 0x61, 0x54, 0x45, 0x09, + 0xa4, 0x44, 0xea, 0x87, 0xa0, 0x34, 0x1c, 0xc3, 0x3b, 0x1c, 0xc6, 0xd6, 0xfc, 0x75, 0x40, 0xd4, + 0x48, 0x6a, 0xb6, 0x6b, 0xec, 0x69, 0x03, 0xdd, 0xd1, 0xfb, 0x74, 0x5c, 0xfc, 0x51, 0x52, 0xa1, + 0x98, 0x0d, 0xd7, 0xd8, 0xdb, 0x14, 0x70, 0xf5, 0x1d, 0x80, 0xee, 0xd0, 0x23, 0xba, 0xd9, 0xa6, + 0xde, 0x04, 0x55, 0x1d, 0x6b, 0x69, 0xa6, 0x78, 0x11, 0x77, 0x3d, 0x71, 0xd4, 0x15, 0x8e, 0xa8, + 0x87, 0x70, 0xf5, 0xff, 0xc3, 0x5c, 0xc7, 0xd6, 0x0d, 0x56, 0xa3, 0xd2, 0x09, 0x5f, 0xd9, 0xd0, + 0x5d, 0xc8, 0x72, 0x52, 0xb1, 0x92, 0x13, 0x8f, 0x5b, 0xd4, 0xe7, 0xfa, 0x14, 0x16, 0xf4, 0xd5, + 0x22, 0x40, 0x24, 0x47, 0xfd, 0x87, 0x04, 0xe4, 0x43, 0xf9, 0x68, 0x85, 0xbf, 0x91, 0x05, 0x9e, + 0x6e, 0x39, 0x22, 0xe2, 0xcf, 0xe3, 0x38, 0x08, 0x35, 0xa1, 0x30, 0x0c, 0xb9, 0x2f, 0xf4, 0xe7, + 0x26, 0x8c, 0x1a, 0xc7, 0x79, 0xd1, 0xbb, 0x90, 0x97, 0x25, 0x08, 0xd2, 0xc2, 0x5e, 0x5c, 0xb1, + 0x10, 0x91, 0xcb, 0x44, 0xaa, 0x47, 0x86, 0xb6, 0x45, 0x6d, 0x4e, 0x3a, 0x4c, 0xa4, 0x62, 0x01, + 0x52, 0xbf, 0x08, 0xf0, 0x25, 0xd7, 0x72, 0x7a, 0xee, 0x1e, 0x71, 0xd8, 0xc3, 0x31, 0x0d, 0x29, + 0x89, 0x54, 0xb4, 0x68, 0xb1, 0x4c, 0x01, 0x5f, 0xa5, 0xf0, 0xfd, 0x94, 0x37, 0xd5, 0xbf, 0x48, + 0x42, 0x16, 0xbb, 0x6e, 0x50, 0xab, 0xa0, 0x15, 0xc8, 0x0a, 0x53, 0xc2, 0xae, 0xa8, 0x6a, 0xfe, + 0xf4, 0x64, 0x39, 0xc3, 0x6d, 0x48, 0xc6, 0x60, 0xc6, 0x23, 0x66, 0xe4, 0x93, 0xe7, 0x19, 0x79, + 0x74, 0x1b, 0x8a, 0x82, 0x48, 0xdb, 0xd5, 0xfd, 0x5d, 0x1e, 0xdf, 0x55, 0x67, 0x4e, 0x4f, 0x96, + 0x81, 0x53, 0xae, 0xeb, 0xfe, 0x2e, 0x06, 0x4e, 0x4d, 0xbf, 0x51, 0x03, 0x0a, 0x8f, 0x5c, 0xcb, + 0xd1, 0x02, 0x36, 0x09, 0x91, 0x8b, 0x9c, 0xb8, 0xd4, 0xd1, 0x54, 0x45, 0x09, 0x0a, 0x3c, 0x8a, + 0x26, 0xdf, 0x80, 0x92, 0xe7, 0xba, 0x01, 0xb7, 0x6c, 0x96, 0xeb, 0x88, 0x34, 0xc7, 0xca, 0xc4, + 0xec, 0xb7, 0xeb, 0x06, 0x58, 0xd0, 0xe1, 0xa2, 0x17, 0x6b, 0xa1, 0xdb, 0x30, 0x6f, 0xeb, 0x7e, + 0xa0, 0x31, 0x93, 0x68, 0x46, 0xd2, 0xb2, 0x4c, 0xf9, 0x88, 0xe2, 0xd6, 0x18, 0x4a, 0x72, 0xa8, + 0x7f, 0x9f, 0x80, 0x02, 0x9d, 0x8c, 0xb5, 0x63, 0x19, 0xd4, 0x0f, 0x7c, 0x76, 0xf7, 0xe4, 0x2a, + 0xa4, 0x0c, 0xdf, 0x13, 0x4a, 0x65, 0xf7, 0x73, 0xad, 0x8b, 0x31, 0x85, 0xa1, 0x0f, 0x21, 0x2b, + 0xd2, 0x2d, 0xdc, 0x33, 0x51, 0x2f, 0xf7, 0x58, 0x85, 0x6e, 0x04, 0x1f, 0xdb, 0xee, 0xd1, 0xe8, + 0xf8, 0x3d, 0x81, 0xe3, 0x20, 0xb4, 0x00, 0x49, 0x83, 0xab, 0x4b, 0xd4, 0x38, 0xd5, 0x5a, 0x38, + 0x69, 0x38, 0xea, 0x77, 0x13, 0x50, 0x8a, 0x6c, 0x02, 0xdd, 0x01, 0xd7, 0x20, 0xef, 0x8f, 0xb6, + 0xfd, 0x43, 0x3f, 0x20, 0x03, 0xf9, 0x28, 0x1e, 0x02, 0x50, 0x13, 0xf2, 0xba, 0xdd, 0x77, 0x3d, + 0x2b, 0xd8, 0x1d, 0x88, 0x40, 0x76, 0xb2, 0x37, 0x11, 0x97, 0xb9, 0x5a, 0x91, 0x2c, 0x38, 0xe2, + 0x96, 0xae, 0x01, 0xaf, 0x07, 0x61, 0xae, 0xc1, 0x4b, 0x50, 0xb4, 0xf5, 0x01, 0xcb, 0x3f, 0x05, + 0xd6, 0x80, 0xc8, 0xc3, 0x20, 0x60, 0x3d, 0x6b, 0x40, 0x54, 0x15, 0xf2, 0xa1, 0x30, 0x34, 0x0b, + 0x85, 0x4a, 0xa3, 0xab, 0xbd, 0x71, 0xe7, 0xae, 0x76, 0xaf, 0xb6, 0xa9, 0x4c, 0x09, 0xf7, 0xf5, + 0x4f, 0x12, 0x50, 0x12, 0x16, 0x4b, 0x84, 0x04, 0x2f, 0xc3, 0xb4, 0xa7, 0xef, 0x04, 0x32, 0x68, + 0x49, 0xf3, 0x5d, 0x4d, 0x2f, 0x01, 0x1a, 0xb4, 0x50, 0xd4, 0xe4, 0xa0, 0x25, 0x56, 0xa6, 0x91, + 0xba, 0xb0, 0x4c, 0x23, 0xfd, 0x13, 0x29, 0xd3, 0x50, 0x7f, 0x1e, 0x60, 0xcd, 0xb2, 0x49, 0x8f, + 0xa7, 0xaa, 0x26, 0x85, 0xa0, 0xd4, 0xcd, 0x0b, 0xab, 0x5d, 0xb8, 0x9b, 0xd7, 0xac, 0x63, 0x0a, + 0xa3, 0xa8, 0xbe, 0x65, 0x8a, 0xc3, 0xc8, 0x50, 0xf7, 0x28, 0xaa, 0x6f, 0x99, 0xe1, 0xcb, 0x60, + 0xfa, 0x92, 0x97, 0x41, 0x75, 0x16, 0x4a, 0x98, 0xe7, 0xd8, 0xf8, 0x18, 0xd4, 0xe3, 0x04, 0xcc, + 0x0a, 0x7f, 0x37, 0x34, 0xd9, 0xaf, 0x41, 0x9e, 0xbb, 0xbe, 0x51, 0x10, 0xc8, 0x6a, 0x15, 0x38, + 0x5d, 0xb3, 0x8e, 0x73, 0x1c, 0xdd, 0x34, 0xd1, 0x32, 0x14, 0x04, 0x69, 0xac, 0x40, 0x0e, 0x38, + 0x88, 0x55, 0xf0, 0xbc, 0x05, 0xe9, 0x1d, 0xcb, 0x26, 0x62, 0xe7, 0x4f, 0xb4, 0x08, 0x91, 0x46, + 0xd6, 0xa7, 0x30, 0xa3, 0xae, 0xe6, 0x64, 0x72, 0x4f, 0xfd, 0xa7, 0x04, 0x4b, 0x31, 0xd3, 0x50, + 0x35, 0x3e, 0x3e, 0x1e, 0xb5, 0x9e, 0x19, 0x1f, 0xa7, 0xa3, 0xe3, 0xe3, 0x68, 0x3e, 0x3e, 0x41, + 0x1a, 0x1f, 0x1f, 0x07, 0xfd, 0xf8, 0xe3, 0x43, 0xef, 0xc3, 0xb4, 0x48, 0x55, 0x0a, 0x53, 0xf7, + 0xd2, 0xc4, 0x9d, 0x11, 0xd7, 0xf4, 0xfa, 0x14, 0x96, 0x3c, 0xb1, 0xe9, 0x6d, 0xc0, 0x42, 0xd5, + 0xd6, 0x8d, 0x3d, 0xdb, 0xf2, 0x03, 0x62, 0xc6, 0x2d, 0xd0, 0x1d, 0xc8, 0x8e, 0xf9, 0xb9, 0x17, + 0x25, 0x51, 0x05, 0xa5, 0xfa, 0xaf, 0x09, 0x28, 0xae, 0x13, 0xdd, 0x0e, 0x76, 0xa3, 0x4c, 0x55, + 0x40, 0xfc, 0x40, 0xdc, 0x8f, 0xec, 0x1b, 0x7d, 0x1e, 0x72, 0xa1, 0x1b, 0x74, 0xe9, 0x73, 0x60, + 0x48, 0x8a, 0xde, 0x84, 0x69, 0x3a, 0x76, 0x77, 0x24, 0xe3, 0xab, 0x8b, 0x5e, 0x9a, 0x04, 0x25, + 0xbd, 0xb4, 0x3c, 0xc2, 0xfc, 0x1e, 0xa6, 0xa7, 0x0c, 0x96, 0x4d, 0xf4, 0x05, 0x28, 0xb2, 0x87, + 0x12, 0xe9, 0xe6, 0x65, 0x2e, 0x93, 0x59, 0xe0, 0x6f, 0x9d, 0xdc, 0xc5, 0xfb, 0xc3, 0x24, 0xcc, + 0x6f, 0xea, 0x87, 0xdb, 0x44, 0x98, 0x21, 0x62, 0x62, 0x62, 0xb8, 0x9e, 0x89, 0x3a, 0x71, 0xf3, + 0x75, 0xc1, 0xd3, 0xe9, 0x24, 0xe6, 0xc9, 0x56, 0x4c, 0xc6, 0x7c, 0xc9, 0x58, 0xcc, 0x37, 0x0f, + 0x19, 0xc7, 0x75, 0x0c, 0x22, 0x6c, 0x1b, 0x6f, 0xa8, 0x5f, 0x4f, 0xc4, 0x6d, 0x57, 0x39, 0x7c, + 0xd6, 0x64, 0x49, 0xaf, 0x96, 0x1b, 0x84, 0xdd, 0xa1, 0x0f, 0xa1, 0xdc, 0x6d, 0xd4, 0x70, 0xa3, + 0x57, 0x6d, 0x7f, 0x59, 0xeb, 0x56, 0x36, 0xba, 0x95, 0x3b, 0xb7, 0xb5, 0x4e, 0x7b, 0xe3, 0xa3, + 0x37, 0xde, 0xbc, 0xfd, 0x79, 0x25, 0x51, 0x5e, 0x39, 0x3a, 0x5e, 0xb9, 0xd6, 0xaa, 0xd4, 0x36, + 0xf8, 0x89, 0xdb, 0x76, 0x1f, 0x77, 0x75, 0xdb, 0xd7, 0xef, 0xdc, 0xee, 0xb8, 0xf6, 0x21, 0xa5, + 0x41, 0x9f, 0x05, 0xb4, 0xd6, 0xc0, 0xad, 0x46, 0x4f, 0x93, 0x06, 0xb2, 0x56, 0xad, 0x29, 0x49, + 0x1e, 0x49, 0xad, 0x11, 0xcf, 0x21, 0x41, 0xa5, 0xd1, 0x7d, 0xe3, 0xce, 0xdd, 0x5a, 0xb5, 0x46, + 0xcf, 0x78, 0x31, 0x7e, 0x5b, 0xc6, 0x9d, 0x80, 0xc4, 0xb9, 0x4e, 0x40, 0xe4, 0x4b, 0x24, 0xcf, + 0xf1, 0x25, 0xd6, 0x60, 0xde, 0xf0, 0x5c, 0xdf, 0xd7, 0x68, 0x78, 0x42, 0xcc, 0x33, 0x01, 0xd0, + 0x73, 0xa7, 0x27, 0xcb, 0x57, 0x6a, 0x14, 0xdf, 0x65, 0x68, 0x21, 0xfe, 0x8a, 0x11, 0x03, 0xb1, + 0x9e, 0xd4, 0x6f, 0xa5, 0xa8, 0xa7, 0x67, 0xed, 0x5b, 0x36, 0xe9, 0x13, 0x1f, 0x3d, 0x80, 0x59, + 0xc3, 0x23, 0x26, 0x8d, 0x3b, 0x74, 0x3b, 0x5e, 0x5b, 0xfe, 0xb9, 0x89, 0x4e, 0x57, 0xc8, 0xb8, + 0x5a, 0x0b, 0xb9, 0xba, 0x43, 0x62, 0xe0, 0x19, 0x63, 0xac, 0x8d, 0x1e, 0xc1, 0xac, 0x4f, 0x6c, + 0xcb, 0x19, 0x3d, 0xd6, 0x0c, 0xd7, 0x09, 0xc8, 0x63, 0xf9, 0x9c, 0x77, 0x99, 0xdc, 0x6e, 0x63, + 0x83, 0x72, 0xd5, 0x38, 0x53, 0x15, 0x9d, 0x9e, 0x2c, 0xcf, 0x8c, 0xc3, 0xf0, 0x8c, 0x90, 0x2c, + 0xda, 0xe5, 0x5d, 0x98, 0x19, 0x1f, 0x0d, 0x9a, 0x17, 0x86, 0x86, 0xd9, 0xab, 0xd0, 0x90, 0x5c, + 0x83, 0x9c, 0x47, 0xfa, 0x96, 0x1f, 0x78, 0x5c, 0xcd, 0x14, 0x13, 0x42, 0xd0, 0x22, 0x64, 0x63, + 0x45, 0x29, 0x14, 0x27, 0xda, 0xd4, 0x82, 0xf0, 0x7a, 0xb3, 0xf2, 0xcf, 0xc2, 0x99, 0xb1, 0xd0, + 0x43, 0x67, 0x5a, 0xbe, 0xbe, 0x2d, 0x3a, 0xcb, 0x61, 0xd9, 0xa4, 0x7b, 0x79, 0xe4, 0x87, 0x0e, + 0x24, 0xfb, 0xa6, 0x30, 0xe6, 0xe9, 0x88, 0xea, 0x3b, 0xe6, 0xcb, 0xc8, 0x1a, 0xe8, 0x74, 0xac, + 0x06, 0x7a, 0x1e, 0x32, 0x36, 0xd9, 0x27, 0x36, 0xf7, 0x31, 0x30, 0x6f, 0xb0, 0x3d, 0xff, 0x25, + 0x77, 0x5b, 0x5c, 0xc3, 0x6b, 0x50, 0x7a, 0xe4, 0x6e, 0x6b, 0x56, 0x40, 0xbc, 0xa8, 0xf6, 0xaa, + 0x70, 0xe7, 0x85, 0x49, 0xfa, 0x15, 0xa5, 0xd0, 0xc2, 0xd1, 0x29, 0x3e, 0x72, 0xb7, 0x9b, 0x92, + 0x0d, 0x55, 0x60, 0x86, 0xf9, 0x6f, 0xe4, 0x31, 0x31, 0x46, 0x4c, 0xd0, 0xe5, 0xef, 0xae, 0x25, + 0xca, 0xd1, 0x90, 0x0c, 0xea, 0x37, 0x33, 0xa0, 0xf0, 0x62, 0x95, 0x0a, 0xab, 0xd8, 0x64, 0x79, + 0xe5, 0x0f, 0x21, 0xe3, 0x1b, 0x6e, 0x58, 0xe8, 0x37, 0x31, 0x21, 0x7e, 0x96, 0x69, 0xb5, 0x4b, + 0x39, 0x30, 0x67, 0x44, 0x6b, 0x30, 0xed, 0xef, 0xea, 0x9e, 0xe5, 0xf4, 0x85, 0x73, 0xf4, 0xfa, + 0xd3, 0xc9, 0xe0, 0x3c, 0x58, 0x32, 0xa3, 0x75, 0xc8, 0x6c, 0xd3, 0x88, 0x4c, 0xd8, 0xd2, 0xdb, + 0x4f, 0x25, 0xa5, 0x4a, 0x39, 0x38, 0x74, 0x7d, 0x0a, 0x73, 0x01, 0x54, 0xd2, 0xc0, 0x1d, 0x39, + 0x81, 0xb8, 0x88, 0x9e, 0x4e, 0x12, 0x2b, 0x42, 0x89, 0x24, 0x31, 0x01, 0xe5, 0x12, 0x14, 0x62, + 0x3d, 0x94, 0xef, 0x41, 0x21, 0x46, 0x86, 0x9e, 0x87, 0xe9, 0x1d, 0x5f, 0x8b, 0x95, 0xc6, 0x67, + 0x77, 0x7c, 0x56, 0x49, 0xb4, 0x0c, 0x05, 0xc6, 0xaf, 0xed, 0xd8, 0x7a, 0x5f, 0x3e, 0xba, 0x01, + 0x03, 0xad, 0x51, 0x88, 0x6a, 0x40, 0x86, 0xe9, 0x10, 0xdd, 0x84, 0x42, 0xb7, 0xd9, 0xba, 0xb7, + 0xd1, 0xd0, 0x5a, 0xed, 0x3a, 0xb5, 0x8c, 0xac, 0x66, 0x8c, 0xcb, 0x67, 0x14, 0x5d, 0xcb, 0xe9, + 0xdb, 0x84, 0xd5, 0xe8, 0xde, 0x00, 0xd8, 0xdc, 0xda, 0xe8, 0x35, 0x39, 0xa9, 0xa8, 0xd7, 0x89, + 0x91, 0x6e, 0x8e, 0xec, 0xc0, 0xa2, 0x94, 0xc2, 0x27, 0xfc, 0x83, 0x04, 0x4c, 0x0b, 0x2d, 0xa3, + 0xe5, 0xd0, 0xf4, 0x3e, 0x77, 0x74, 0xbc, 0x72, 0x45, 0x70, 0x71, 0x24, 0xab, 0x2a, 0xb9, 0xc1, + 0xaa, 0x5c, 0xeb, 0x5a, 0xbb, 0xb5, 0xf1, 0x91, 0x92, 0x18, 0x1b, 0x86, 0x58, 0x28, 0x51, 0x95, + 0x89, 0x6e, 0x02, 0xb4, 0x5b, 0x0d, 0xed, 0x21, 0x6e, 0xf6, 0x1a, 0x58, 0x16, 0x04, 0x8d, 0x91, + 0xb6, 0x1d, 0xf2, 0xd0, 0xa3, 0x3b, 0x1e, 0xbd, 0x08, 0xa9, 0xca, 0xc6, 0x86, 0x92, 0xe2, 0x45, + 0x2a, 0x63, 0x44, 0x15, 0xdb, 0xe6, 0xe3, 0xac, 0x96, 0xa0, 0xc0, 0x4b, 0x88, 0x99, 0x2a, 0xd5, + 0xbb, 0x50, 0x14, 0x84, 0x3c, 0xc3, 0xf8, 0x64, 0x3a, 0x6d, 0x21, 0x4c, 0x6b, 0xca, 0xc7, 0x37, + 0xd6, 0x52, 0x7f, 0x2f, 0x05, 0x73, 0x9c, 0x55, 0x3c, 0x70, 0x44, 0xae, 0xf0, 0xe5, 0xf9, 0xfb, + 0xda, 0xf8, 0x5b, 0xf5, 0xe7, 0xce, 0xdf, 0x34, 0x63, 0xc2, 0xc7, 0xf3, 0xe8, 0x26, 0xcc, 0xca, + 0x57, 0x26, 0x69, 0x4f, 0x79, 0x70, 0xfc, 0xde, 0xd3, 0x8a, 0x13, 0x2d, 0x61, 0xb8, 0x78, 0x3a, + 0x52, 0x3e, 0x70, 0xc5, 0xac, 0x99, 0x7c, 0x21, 0xcf, 0x8c, 0xbd, 0x90, 0x97, 0x2b, 0x30, 0x37, + 0x41, 0xc0, 0x33, 0x65, 0x24, 0xbf, 0x2a, 0xf3, 0xfe, 0x73, 0x30, 0x2b, 0xb2, 0xf5, 0x5a, 0x67, + 0xab, 0xba, 0xd1, 0xec, 0xae, 0x2b, 0x53, 0xa8, 0x04, 0x79, 0xd1, 0x68, 0xd4, 0x95, 0x04, 0x2a, + 0xc3, 0x82, 0xa4, 0xa1, 0x9b, 0x52, 0xdb, 0x6a, 0x49, 0xd2, 0x24, 0x7a, 0x0e, 0xae, 0x48, 0x5c, + 0x04, 0x4e, 0xa9, 0x7f, 0x9d, 0x04, 0xe0, 0x13, 0x67, 0xf5, 0xee, 0xd7, 0x61, 0xc6, 0xd0, 0x87, + 0xba, 0x61, 0x05, 0x87, 0x63, 0x35, 0x7e, 0x25, 0x09, 0xe5, 0x75, 0x7e, 0x5f, 0x0e, 0xab, 0x6d, + 0xa3, 0x7b, 0xea, 0xdc, 0x5f, 0x89, 0x44, 0xe2, 0xc5, 0xe7, 0x98, 0x36, 0x45, 0xdd, 0xad, 0x54, + 0xe6, 0x6b, 0x90, 0x17, 0x92, 0xc3, 0x40, 0x82, 0x79, 0xce, 0x42, 0x48, 0x1d, 0xe7, 0x38, 0xba, + 0x69, 0x9e, 0x5f, 0x24, 0x9f, 0xfa, 0x71, 0x8a, 0xe4, 0xcb, 0x1f, 0x02, 0x7a, 0x72, 0x78, 0xcf, + 0xb4, 0x56, 0x0f, 0xa1, 0x54, 0x13, 0x6a, 0xc2, 0xec, 0xa1, 0xf9, 0x3a, 0xcc, 0x78, 0xfc, 0x67, + 0x51, 0xe6, 0xb8, 0x36, 0x25, 0x94, 0x6b, 0x73, 0x19, 0x0a, 0x2c, 0xbb, 0x39, 0xf6, 0x3b, 0x2d, + 0x60, 0x20, 0x46, 0xa0, 0xfe, 0x5d, 0x3a, 0xbc, 0x2a, 0x7c, 0xea, 0xc9, 0xb0, 0x04, 0xd3, 0x02, + 0x24, 0xc3, 0x13, 0xc4, 0xe2, 0xe9, 0x66, 0x1d, 0x27, 0x2d, 0x73, 0x5c, 0x83, 0xc9, 0x0b, 0x35, + 0x18, 0xbd, 0xdf, 0xa5, 0x9e, 0xfa, 0xfd, 0xee, 0xab, 0x4f, 0x2c, 0x3d, 0x57, 0xf8, 0xff, 0xbb, + 0xc0, 0xac, 0x87, 0x83, 0x7e, 0x8a, 0x0d, 0xa0, 0x3f, 0x79, 0x66, 0x33, 0xe7, 0xbf, 0xf5, 0x3c, + 0xd1, 0xc1, 0xd3, 0x1c, 0xd8, 0x46, 0x68, 0xe1, 0x58, 0x48, 0xca, 0x2b, 0x4c, 0x5e, 0x79, 0x9a, + 0x6b, 0x09, 0x83, 0x1e, 0xdd, 0xd5, 0xef, 0xc2, 0x34, 0xb7, 0x74, 0xbe, 0xf8, 0x1d, 0xcc, 0xca, + 0xf9, 0x22, 0x44, 0x00, 0x2b, 0x19, 0x3e, 0xfd, 0x66, 0xfb, 0x49, 0xd8, 0x96, 0xaf, 0x84, 0xbb, + 0x2a, 0xac, 0xe9, 0x38, 0x77, 0x57, 0x3d, 0xe3, 0x8f, 0x09, 0xd4, 0x5f, 0x49, 0xc0, 0x5c, 0x78, + 0xdc, 0xa2, 0x9f, 0x06, 0xa2, 0x77, 0x21, 0xcf, 0x36, 0xbf, 0x6f, 0xb1, 0xe7, 0xd1, 0xcb, 0x8f, + 0x6a, 0x44, 0xce, 0xb2, 0x9c, 0x2c, 0xe9, 0xe9, 0x11, 0x53, 0x18, 0x9c, 0x4b, 0x78, 0x43, 0x72, + 0xf5, 0x57, 0x13, 0x90, 0x93, 0x70, 0xb4, 0x06, 0x39, 0x9f, 0xf4, 0xd9, 0x4f, 0x15, 0xc5, 0x18, + 0x6e, 0x5e, 0x24, 0x67, 0xb5, 0x2b, 0x88, 0x45, 0x91, 0x87, 0xe4, 0x2d, 0xbf, 0x07, 0xa5, 0x31, + 0xd4, 0x33, 0x69, 0xff, 0x07, 0xe1, 0xa1, 0xa6, 0x46, 0x43, 0xfc, 0xf6, 0x25, 0xf4, 0xba, 0x12, + 0x97, 0xf9, 0x4a, 0x11, 0xd3, 0x25, 0x5e, 0x57, 0xf2, 0x19, 0x24, 0x4d, 0xf2, 0xba, 0x50, 0x67, + 0xfc, 0xb8, 0x70, 0x53, 0x71, 0xeb, 0xa9, 0xe4, 0x4d, 0x3e, 0x39, 0xff, 0x57, 0x7e, 0x5c, 0xf9, + 0xbf, 0x13, 0x00, 0x31, 0x67, 0x7a, 0x5d, 0xe4, 0x9c, 0xb8, 0x2f, 0xfd, 0xd6, 0x33, 0x8e, 0x78, + 0x35, 0x96, 0x94, 0xfa, 0x9d, 0x04, 0xa4, 0x99, 0xc8, 0xb1, 0x42, 0x9c, 0x05, 0x40, 0x31, 0x6f, + 0x51, 0xba, 0x60, 0x09, 0xf4, 0x02, 0x3c, 0x1f, 0x87, 0x53, 0x47, 0xae, 0x81, 0xb9, 0x2b, 0x97, + 0xa4, 0x77, 0x74, 0xe4, 0x36, 0x8e, 0xe1, 0x52, 0xe8, 0x1a, 0x2c, 0xc6, 0x70, 0x42, 0x86, 0x10, + 0x9b, 0xa6, 0x62, 0x63, 0x58, 0xfe, 0x29, 0x90, 0x99, 0x33, 0x5e, 0xdb, 0xcd, 0x2f, 0x40, 0x51, + 0xfe, 0xc4, 0x90, 0xa9, 0x2e, 0x07, 0xe9, 0x5e, 0xa5, 0x7b, 0x5f, 0x99, 0x42, 0x00, 0x59, 0x1e, + 0xd9, 0xf3, 0xd2, 0xcb, 0x5a, 0xbb, 0xb5, 0xd6, 0xbc, 0xa7, 0x24, 0xe9, 0xb7, 0xa8, 0xa8, 0x4f, + 0xdd, 0xfc, 0xcd, 0x34, 0xe4, 0xc3, 0x42, 0x40, 0x74, 0x15, 0x52, 0xad, 0xc6, 0x43, 0x99, 0x26, + 0x08, 0xe1, 0x2d, 0x72, 0x80, 0x5e, 0x8a, 0x4a, 0x08, 0x3e, 0xe4, 0x4e, 0x65, 0x88, 0x96, 0xe5, + 0x03, 0xaf, 0x40, 0xae, 0xd2, 0xed, 0x36, 0xef, 0xb5, 0x1a, 0x75, 0xe5, 0x93, 0x04, 0xf7, 0x77, + 0x43, 0x22, 0x6e, 0xb8, 0x89, 0xc9, 0xa8, 0x6a, 0xb5, 0x46, 0xa7, 0xd7, 0xa8, 0x2b, 0x1f, 0x27, + 0xcf, 0x52, 0xb1, 0x27, 0x71, 0xf6, 0xa3, 0x8f, 0x7c, 0x07, 0x37, 0x3a, 0x15, 0x4c, 0x3b, 0xfc, + 0x24, 0xc9, 0x2b, 0x1b, 0xa2, 0x1e, 0x3d, 0x32, 0xe4, 0xee, 0xf5, 0x92, 0xfc, 0xed, 0xd5, 0xc7, + 0x29, 0x5e, 0xfd, 0x1f, 0x55, 0x35, 0x12, 0xdd, 0x3c, 0xa4, 0xbd, 0xb1, 0x72, 0x52, 0x26, 0x26, + 0x75, 0xa6, 0xb7, 0x6e, 0xa0, 0x7b, 0x01, 0x95, 0xa2, 0xc2, 0x34, 0xde, 0x6a, 0xb5, 0x28, 0xd1, + 0xc7, 0xe9, 0x33, 0xb3, 0xc3, 0x23, 0xc7, 0xa1, 0x34, 0xd7, 0x21, 0x27, 0xab, 0x4d, 0x95, 0x4f, + 0xd2, 0x67, 0x06, 0x54, 0x93, 0xa5, 0xb2, 0xac, 0xc3, 0xf5, 0xad, 0x1e, 0xfb, 0x69, 0xd8, 0xc7, + 0x99, 0xb3, 0x1d, 0xee, 0x8e, 0x02, 0xd3, 0x3d, 0x70, 0xd0, 0x4a, 0x58, 0x44, 0xf1, 0x49, 0x86, + 0xe7, 0x49, 0x42, 0x1a, 0x51, 0x41, 0xf1, 0x0a, 0xe4, 0x70, 0xe3, 0x4b, 0xfc, 0x57, 0x64, 0x1f, + 0x67, 0xcf, 0xc8, 0xc1, 0xe4, 0x11, 0x31, 0x68, 0x6f, 0x2b, 0x90, 0xc5, 0x8d, 0xcd, 0xf6, 0x83, + 0x86, 0xf2, 0xbb, 0xd9, 0x33, 0x72, 0x30, 0x19, 0xb8, 0xec, 0x57, 0x31, 0xb9, 0x36, 0xee, 0xac, + 0x57, 0xd8, 0xa2, 0x9c, 0x95, 0xd3, 0xf6, 0x86, 0xbb, 0xba, 0x43, 0xcc, 0xe8, 0xe7, 0x0d, 0x21, + 0xea, 0xe6, 0x57, 0x21, 0x27, 0x5f, 0x15, 0xd0, 0x12, 0x64, 0x1f, 0xb6, 0xf1, 0xfd, 0x06, 0x56, + 0xa6, 0xb8, 0x96, 0x25, 0xe6, 0x21, 0x7f, 0x0f, 0x5a, 0x81, 0xe9, 0xcd, 0x4a, 0xab, 0x72, 0x8f, + 0x9e, 0x09, 0x3e, 0x0c, 0x49, 0x20, 0x52, 0xe3, 0x65, 0x45, 0x74, 0x10, 0xca, 0xac, 0xbe, 0xf2, + 0xed, 0x1f, 0x2e, 0x4d, 0x7d, 0xff, 0x87, 0x4b, 0x53, 0x1f, 0x9f, 0x2e, 0x25, 0xbe, 0x7d, 0xba, + 0x94, 0xf8, 0xce, 0xe9, 0x52, 0xe2, 0x5f, 0x4e, 0x97, 0x12, 0xbf, 0xf6, 0xa3, 0xa5, 0xa9, 0xef, + 0xfc, 0x68, 0x69, 0xea, 0xfb, 0x3f, 0x5a, 0x9a, 0xda, 0xce, 0xb2, 0xe8, 0xfa, 0xcd, 0xff, 0x0d, + 0x00, 0x00, 0xff, 0xff, 0xa6, 0x20, 0x79, 0xea, 0x71, 0x42, 0x00, 0x00, } func (m *Version) Copy() *Version { diff --git a/vendor/github.com/moby/swarmkit/v2/api/types.proto b/vendor/github.com/moby/swarmkit/v2/api/types.proto index 527bc4e387..201838352d 100644 --- a/vendor/github.com/moby/swarmkit/v2/api/types.proto +++ b/vendor/github.com/moby/swarmkit/v2/api/types.proto @@ -239,7 +239,7 @@ message Mount { VOLUME = 1 [(gogoproto.enumvalue_customname) = "MountTypeVolume"]; // Remote storage volumes TMPFS = 2 [(gogoproto.enumvalue_customname) = "MountTypeTmpfs"]; // Mount a tmpfs NPIPE = 3 [(gogoproto.enumvalue_customname) = "MountTypeNamedPipe"]; // Windows named pipes - CSI = 4 [(gogoproto.enumvalue_customname) = "MountTypeCSI"]; // CSI volume + CLUSTER = 4 [(gogoproto.enumvalue_customname) = "MountTypeCluster"]; // CSI volume } // Type defines the nature of the mount. diff --git a/vendor/github.com/moby/swarmkit/v2/ca/certificates.go b/vendor/github.com/moby/swarmkit/v2/ca/certificates.go index e15cc93360..49ea63dd24 100644 --- a/vendor/github.com/moby/swarmkit/v2/ca/certificates.go +++ b/vendor/github.com/moby/swarmkit/v2/ca/certificates.go @@ -39,11 +39,11 @@ import ( const ( // Security Strength Equivalence - //----------------------------------- - //| ECC | DH/DSA/RSA | - //| 256 | 3072 | - //| 384 | 7680 | - //----------------------------------- + // + // | ECC | DH/DSA/RSA | + // |----------|---------------| + // | 256 | 3072 | + // | 384 | 7680 | // RootKeySize is the default size of the root CA key // It would be ideal for the root key to use P-384, but in P-384 is not optimized in go yet :( @@ -134,25 +134,24 @@ type x509UnknownAuthError struct { // // Requirements: // -// - [signing CA key] must be the private key for [signing CA cert], and either both or none must be provided -// -// - [intermediate CA1] must have the same public key and subject as [signing CA cert], because otherwise when -// appended to a leaf certificate, the intermediates will not form a chain (because [intermediate CA1] won't because -// the signer of the leaf certificate) -// - [intermediate CA1] must be signed by [intermediate CA2], which must be signed by [intermediate CA3] -// -// - When we issue a certificate, the intermediates will be appended so that the certificate looks like: -// [leaf signed by signing CA cert][intermediate CA1][intermediate CA2][intermediate CA3] -// - [leaf signed by signing CA cert][intermediate CA1][intermediate CA2][intermediate CA3] is guaranteed to form a -// valid chain from [leaf signed by signing CA cert] to one of the root certs ([signing CA cert], [CA cert1], [CA cert2]) -// using zero or more of the intermediate certs ([intermediate CA1][intermediate CA2][intermediate CA3]) as intermediates +// - [signing CA key] must be the private key for [signing CA cert], and either both or none must be provided +// - [intermediate CA1] must have the same public key and subject as [signing CA cert], because otherwise when +// appended to a leaf certificate, the intermediates will not form a chain (because [intermediate CA1] won't because +// the signer of the leaf certificate) +// - [intermediate CA1] must be signed by [intermediate CA2], which must be signed by [intermediate CA3] +// - When we issue a certificate, the intermediates will be appended so that the certificate looks like: +// [leaf signed by signing CA cert][intermediate CA1][intermediate CA2][intermediate CA3] +// - [leaf signed by signing CA cert][intermediate CA1][intermediate CA2][intermediate CA3] is guaranteed to form a +// valid chain from [leaf signed by signing CA cert] to one of the root certs ([signing CA cert], [CA cert1], [CA cert2]) +// using zero or more of the intermediate certs ([intermediate CA1][intermediate CA2][intermediate CA3]) as intermediates // // Example 1: Simple root rotation +// // - Initial state: -// - RootCA.Cert: [Root CA1 self-signed] -// - RootCA.Intermediates: [] -// - RootCA.signer.Cert: [Root CA1 self-signed] -// - Issued TLS cert: [leaf signed by Root CA1] +// - RootCA.Cert: [Root CA1 self-signed] +// - RootCA.Intermediates: [] +// - RootCA.signer.Cert: [Root CA1 self-signed] +// - Issued TLS cert: [leaf signed by Root CA1] // // - Intermediate state (during root rotation): // - RootCA.Cert: [Root CA1 self-signed] @@ -165,7 +164,6 @@ type x509UnknownAuthError struct { // - RootCA.Intermediates: [] // - RootCA.signer.Cert: [Root CA2 self-signed] // - Issued TLS cert: [leaf signed by Root CA2] -// type RootCA struct { // Certs contains a bundle of self-signed, PEM encoded certificates for the Root CA to be used // as the root of trust. diff --git a/vendor/github.com/moby/swarmkit/v2/ca/pkcs8/pkcs8.go b/vendor/github.com/moby/swarmkit/v2/ca/pkcs8/pkcs8.go index 223fc99d5d..12fce33c4c 100644 --- a/vendor/github.com/moby/swarmkit/v2/ca/pkcs8/pkcs8.go +++ b/vendor/github.com/moby/swarmkit/v2/ca/pkcs8/pkcs8.go @@ -3,7 +3,7 @@ // https://github.com/youmark/pkcs8 and modified function signatures to match // signatures of crypto/x509 and cloudflare/cfssl/helpers to simplify package // swapping. License for original package is as follow: -// + // The MIT License (MIT) // // Copyright (c) 2014 youmark @@ -25,6 +25,7 @@ // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. + package pkcs8 import ( diff --git a/vendor/github.com/moby/swarmkit/v2/ca/server.go b/vendor/github.com/moby/swarmkit/v2/ca/server.go index fc6aeff4d7..f5a5277553 100644 --- a/vendor/github.com/moby/swarmkit/v2/ca/server.go +++ b/vendor/github.com/moby/swarmkit/v2/ca/server.go @@ -8,12 +8,12 @@ import ( "sync" "time" + gogotypes "github.com/gogo/protobuf/types" "github.com/moby/swarmkit/v2/api" "github.com/moby/swarmkit/v2/api/equality" "github.com/moby/swarmkit/v2/identity" "github.com/moby/swarmkit/v2/log" "github.com/moby/swarmkit/v2/manager/state/store" - gogotypes "github.com/gogo/protobuf/types" "github.com/pkg/errors" "github.com/sirupsen/logrus" "google.golang.org/grpc/codes" diff --git a/vendor/github.com/moby/swarmkit/v2/connectionbroker/broker.go b/vendor/github.com/moby/swarmkit/v2/connectionbroker/broker.go index 81ea4fa3e1..93344d2380 100644 --- a/vendor/github.com/moby/swarmkit/v2/connectionbroker/broker.go +++ b/vendor/github.com/moby/swarmkit/v2/connectionbroker/broker.go @@ -8,9 +8,9 @@ import ( "sync" "time" + grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus" "github.com/moby/swarmkit/v2/api" "github.com/moby/swarmkit/v2/remotes" - grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus" "google.golang.org/grpc" ) diff --git a/vendor/github.com/moby/swarmkit/v2/identity/doc.go b/vendor/github.com/moby/swarmkit/v2/identity/doc.go index b91aca7ecf..2f3336d6c1 100644 --- a/vendor/github.com/moby/swarmkit/v2/identity/doc.go +++ b/vendor/github.com/moby/swarmkit/v2/identity/doc.go @@ -2,7 +2,7 @@ // identifiers within a swarm. This includes entity identification, such as for // Services, Tasks and Networks but also cryptographically-secure Node identities. // -// Random Identifiers +// # Random Identifiers // // Identifiers provided by this package are cryptographically-strong, random // 128 bit numbers encoded in Base36. This method is preferred over UUID4 since @@ -10,7 +10,7 @@ // // Generating an identifier is simple. Simply call the `NewID` function: // -// id := NewID() +// id := NewID() // // If an error occurs while generating the ID, it will panic. package identity diff --git a/vendor/github.com/moby/swarmkit/v2/manager/controlapi/ca_rotation.go b/vendor/github.com/moby/swarmkit/v2/manager/controlapi/ca_rotation.go index 7e95ee2b23..52802685cd 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/controlapi/ca_rotation.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/controlapi/ca_rotation.go @@ -168,25 +168,25 @@ func getNormalizedExtCAs(caConfig *api.CAConfig, normalizedCurrentRootCACert []b // validateAndUpdateCA validates a cluster's desired CA configuration spec, and returns a RootCA value on success representing // current RootCA as it should be. Validation logic and return values are as follows: -// 1. Validates that the contents are complete - e.g. a signing key is not provided without a signing cert, and that external -// CAs are not removed if they are needed. Otherwise, returns an error. -// 2. If no desired signing cert or key are provided, then either: -// - we are happy with the current CA configuration (force rotation value has not changed), and we return the current RootCA -// object as is -// - we want to generate a new internal CA cert and key (force rotation value has changed), and we return the updated RootCA -// object -// 3. Signing cert and key have been provided: validate that these match (the cert and key match). Otherwise, return an error. -// 4. Return the updated RootCA object according to the following criteria: -// - If the desired cert is the same as the current CA cert then abort any outstanding rotations. The current signing key -// is replaced with the desired signing key (this could lets us switch between external->internal or internal->external -// without an actual CA rotation, which is not needed because any leaf cert issued with one CA cert can be validated using -// the second CA certificate). -// - If the desired cert is the same as the current to-be-rotated-to CA cert then a new root rotation is not needed. The -// current to-be-rotated-to signing key is replaced with the desired signing key (this could lets us switch between -// external->internal or internal->external without an actual CA rotation, which is not needed because any leaf cert -// issued with one CA cert can be validated using the second CA certificate). -// - Otherwise, start a new root rotation using the desired signing cert and desired signing key as the root rotation -// signing cert and key. If a root rotation is already in progress, just replace it and start over. +// 1. Validates that the contents are complete - e.g. a signing key is not provided without a signing cert, and that external +// CAs are not removed if they are needed. Otherwise, returns an error. +// 2. If no desired signing cert or key are provided, then either: +// - we are happy with the current CA configuration (force rotation value has not changed), and we return the current RootCA +// object as is +// - we want to generate a new internal CA cert and key (force rotation value has changed), and we return the updated RootCA +// object +// 3. Signing cert and key have been provided: validate that these match (the cert and key match). Otherwise, return an error. +// 4. Return the updated RootCA object according to the following criteria: +// - If the desired cert is the same as the current CA cert then abort any outstanding rotations. The current signing key +// is replaced with the desired signing key (this could lets us switch between external->internal or internal->external +// without an actual CA rotation, which is not needed because any leaf cert issued with one CA cert can be validated using +// the second CA certificate). +// - If the desired cert is the same as the current to-be-rotated-to CA cert then a new root rotation is not needed. The +// current to-be-rotated-to signing key is replaced with the desired signing key (this could lets us switch between +// external->internal or internal->external without an actual CA rotation, which is not needed because any leaf cert +// issued with one CA cert can be validated using the second CA certificate). +// - Otherwise, start a new root rotation using the desired signing cert and desired signing key as the root rotation +// signing cert and key. If a root rotation is already in progress, just replace it and start over. func validateCAConfig(ctx context.Context, securityConfig *ca.SecurityConfig, cluster *api.Cluster) (*api.RootCA, error) { newConfig := cluster.Spec.CAConfig.Copy() newConfig.SigningCACert = ca.NormalizePEMs(newConfig.SigningCACert) // ensure this is normalized before we use it diff --git a/vendor/github.com/moby/swarmkit/v2/manager/controlapi/cluster.go b/vendor/github.com/moby/swarmkit/v2/manager/controlapi/cluster.go index b9e561937a..fbee6f5f96 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/controlapi/cluster.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/controlapi/cluster.go @@ -5,12 +5,12 @@ import ( "strings" "time" + gogotypes "github.com/gogo/protobuf/types" "github.com/moby/swarmkit/v2/api" "github.com/moby/swarmkit/v2/ca" "github.com/moby/swarmkit/v2/log" "github.com/moby/swarmkit/v2/manager/encryption" "github.com/moby/swarmkit/v2/manager/state/store" - gogotypes "github.com/gogo/protobuf/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) diff --git a/vendor/github.com/moby/swarmkit/v2/manager/controlapi/config.go b/vendor/github.com/moby/swarmkit/v2/manager/controlapi/config.go index be7463f441..f4d74a20b1 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/controlapi/config.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/controlapi/config.go @@ -149,9 +149,9 @@ func (s *Server) ListConfigs(ctx context.Context, request *api.ListConfigsReques // CreateConfig creates and returns a `CreateConfigResponse` with a `Config` based // on the provided `CreateConfigRequest.ConfigSpec`. -// - Returns `InvalidArgument` if the `CreateConfigRequest.ConfigSpec` is malformed, -// or if the config data is too long or contains invalid characters. -// - Returns an error if the creation fails. +// - Returns `InvalidArgument` if the `CreateConfigRequest.ConfigSpec` is malformed, +// or if the config data is too long or contains invalid characters. +// - Returns an error if the creation fails. func (s *Server) CreateConfig(ctx context.Context, request *api.CreateConfigRequest) (*api.CreateConfigResponse, error) { if err := validateConfigSpec(request.Spec); err != nil { return nil, err diff --git a/vendor/github.com/moby/swarmkit/v2/manager/controlapi/extension.go b/vendor/github.com/moby/swarmkit/v2/manager/controlapi/extension.go index dbe3a5a9ce..9296fb8f57 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/controlapi/extension.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/controlapi/extension.go @@ -15,9 +15,9 @@ import ( // CreateExtension creates an `Extension` based on the provided `CreateExtensionRequest.Extension` // and returns a `CreateExtensionResponse`. -// - Returns `InvalidArgument` if the `CreateExtensionRequest.Extension` is malformed, -// or fails validation. -// - Returns an error if the creation fails. +// - Returns `InvalidArgument` if the `CreateExtensionRequest.Extension` is malformed, +// or fails validation. +// - Returns an error if the creation fails. func (s *Server) CreateExtension(ctx context.Context, request *api.CreateExtensionRequest) (*api.CreateExtensionResponse, error) { if request.Annotations == nil || request.Annotations.Name == "" { return nil, status.Errorf(codes.InvalidArgument, "extension name must be provided") diff --git a/vendor/github.com/moby/swarmkit/v2/manager/controlapi/node.go b/vendor/github.com/moby/swarmkit/v2/manager/controlapi/node.go index 0ffa6e146d..f85d679b99 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/controlapi/node.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/controlapi/node.go @@ -5,10 +5,10 @@ import ( "crypto/x509" "encoding/pem" + gogotypes "github.com/gogo/protobuf/types" "github.com/moby/swarmkit/v2/api" "github.com/moby/swarmkit/v2/manager/state/raft/membership" "github.com/moby/swarmkit/v2/manager/state/store" - gogotypes "github.com/gogo/protobuf/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) diff --git a/vendor/github.com/moby/swarmkit/v2/manager/controlapi/resource.go b/vendor/github.com/moby/swarmkit/v2/manager/controlapi/resource.go index 618285343a..a2dfcaa522 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/controlapi/resource.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/controlapi/resource.go @@ -15,9 +15,9 @@ import ( // CreateResource returns a `CreateResourceResponse` after creating a `Resource` based // on the provided `CreateResourceRequest.Resource`. -// - Returns `InvalidArgument` if the `CreateResourceRequest.Resource` is malformed, -// or if the config data is too long or contains invalid characters. -// - Returns an error if the creation fails. +// - Returns `InvalidArgument` if the `CreateResourceRequest.Resource` is malformed, +// or if the config data is too long or contains invalid characters. +// - Returns an error if the creation fails. func (s *Server) CreateResource(ctx context.Context, request *api.CreateResourceRequest) (*api.CreateResourceResponse, error) { if request.Annotations == nil || request.Annotations.Name == "" { return nil, status.Errorf(codes.InvalidArgument, "Resource must have a name") diff --git a/vendor/github.com/moby/swarmkit/v2/manager/controlapi/secret.go b/vendor/github.com/moby/swarmkit/v2/manager/controlapi/secret.go index b7dbf80c48..dc5549eab3 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/controlapi/secret.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/controlapi/secret.go @@ -150,9 +150,9 @@ func (s *Server) ListSecrets(ctx context.Context, request *api.ListSecretsReques // CreateSecret creates and returns a `CreateSecretResponse` with a `Secret` based // on the provided `CreateSecretRequest.SecretSpec`. -// - Returns `InvalidArgument` if the `CreateSecretRequest.SecretSpec` is malformed, -// or if the secret data is too long or contains invalid characters. -// - Returns an error if the creation fails. +// - Returns `InvalidArgument` if the `CreateSecretRequest.SecretSpec` is malformed, +// or if the secret data is too long or contains invalid characters. +// - Returns an error if the creation fails. func (s *Server) CreateSecret(ctx context.Context, request *api.CreateSecretRequest) (*api.CreateSecretResponse, error) { if err := validateSecretSpec(request.Spec); err != nil { return nil, err diff --git a/vendor/github.com/moby/swarmkit/v2/manager/controlapi/service.go b/vendor/github.com/moby/swarmkit/v2/manager/controlapi/service.go index 86339ef76e..a58eae2f8f 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/controlapi/service.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/controlapi/service.go @@ -8,6 +8,7 @@ import ( "time" "github.com/docker/distribution/reference" + gogotypes "github.com/gogo/protobuf/types" "github.com/moby/swarmkit/v2/api" "github.com/moby/swarmkit/v2/api/defaults" "github.com/moby/swarmkit/v2/api/genericresource" @@ -18,7 +19,6 @@ import ( "github.com/moby/swarmkit/v2/manager/state/store" "github.com/moby/swarmkit/v2/protobuf/ptypes" "github.com/moby/swarmkit/v2/template" - gogotypes "github.com/gogo/protobuf/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) diff --git a/vendor/github.com/moby/swarmkit/v2/manager/dirty.go b/vendor/github.com/moby/swarmkit/v2/manager/dirty.go index 1e65513654..19540a6cdf 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/dirty.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/dirty.go @@ -1,6 +1,7 @@ package manager import ( + "fmt" "reflect" "github.com/moby/swarmkit/v2/api" @@ -45,7 +46,7 @@ func (m *Manager) IsStateDirty() (bool, error) { field := val.Field(i) structField := val.Type().Field(i) if structField.Type.Kind() != reflect.Slice { - panic("unexpected field type in StoreSnapshot") + panic(fmt.Sprintf("unexpected field type in StoreSnapshot: %s (type %v)", structField.Name, structField.Type.Kind())) } if structField.Name != "Nodes" && structField.Name != "Clusters" && structField.Name != "Networks" && field.Len() != 0 { // One of the other data types has an entry diff --git a/vendor/github.com/moby/swarmkit/v2/manager/dispatcher/dispatcher.go b/vendor/github.com/moby/swarmkit/v2/manager/dispatcher/dispatcher.go index e9b30f29ba..7d840303df 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/dispatcher/dispatcher.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/dispatcher/dispatcher.go @@ -10,6 +10,7 @@ import ( "github.com/docker/go-events" "github.com/docker/go-metrics" + gogotypes "github.com/gogo/protobuf/types" "github.com/moby/swarmkit/v2/api" "github.com/moby/swarmkit/v2/api/equality" "github.com/moby/swarmkit/v2/ca" @@ -19,7 +20,6 @@ import ( "github.com/moby/swarmkit/v2/protobuf/ptypes" "github.com/moby/swarmkit/v2/remotes" "github.com/moby/swarmkit/v2/watch" - gogotypes "github.com/gogo/protobuf/types" "github.com/pkg/errors" "github.com/sirupsen/logrus" "google.golang.org/grpc/codes" diff --git a/vendor/github.com/moby/swarmkit/v2/manager/encryption/encryption.go b/vendor/github.com/moby/swarmkit/v2/manager/encryption/encryption.go index b458a84d46..45d98cf6ef 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/encryption/encryption.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/encryption/encryption.go @@ -7,8 +7,8 @@ import ( "io" "strings" - "github.com/moby/swarmkit/v2/api" "github.com/gogo/protobuf/proto" + "github.com/moby/swarmkit/v2/api" "github.com/pkg/errors" ) diff --git a/vendor/github.com/moby/swarmkit/v2/manager/manager.go b/vendor/github.com/moby/swarmkit/v2/manager/manager.go index 4bf219d0e4..0aa1484da1 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/manager.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/manager.go @@ -16,6 +16,8 @@ import ( "github.com/docker/docker/pkg/plugingetter" "github.com/docker/go-events" gmetrics "github.com/docker/go-metrics" + gogotypes "github.com/gogo/protobuf/types" + grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus" "github.com/moby/swarmkit/v2/api" "github.com/moby/swarmkit/v2/ca" "github.com/moby/swarmkit/v2/connectionbroker" @@ -46,8 +48,6 @@ import ( "github.com/moby/swarmkit/v2/manager/watchapi" "github.com/moby/swarmkit/v2/remotes" "github.com/moby/swarmkit/v2/xnet" - gogotypes "github.com/gogo/protobuf/types" - grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus" "github.com/pkg/errors" "github.com/sirupsen/logrus" "google.golang.org/grpc" diff --git a/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/jobs/global/reconciler.go b/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/jobs/global/reconciler.go index 09e84b9f04..cf68368478 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/jobs/global/reconciler.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/jobs/global/reconciler.go @@ -262,10 +262,10 @@ func (r *Reconciler) IsRelatedService(service *api.Service) bool { // FixTask validates that a task is compliant with the rest of the cluster // state, and fixes it if it's not. This covers some main scenarios: // -// * The node that the task is running on is now paused or drained. we do not -// need to check if the node still meets constraints -- that is the purview -// of the constraint enforcer. -// * The task has failed and needs to be restarted. +// - The node that the task is running on is now paused or drained. we do not +// need to check if the node still meets constraints -- that is the purview +// of the constraint enforcer. +// - The task has failed and needs to be restarted. // // This implements the FixTask method of the taskinit.InitHandler interface. func (r *Reconciler) FixTask(ctx context.Context, batch *store.Batch, t *api.Task) { diff --git a/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/restart/restart.go b/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/restart/restart.go index d38a5bb33f..420cca1734 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/restart/restart.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/restart/restart.go @@ -8,13 +8,13 @@ import ( "time" "github.com/docker/go-events" + gogotypes "github.com/gogo/protobuf/types" "github.com/moby/swarmkit/v2/api" "github.com/moby/swarmkit/v2/api/defaults" "github.com/moby/swarmkit/v2/log" "github.com/moby/swarmkit/v2/manager/orchestrator" "github.com/moby/swarmkit/v2/manager/state" "github.com/moby/swarmkit/v2/manager/state/store" - gogotypes "github.com/gogo/protobuf/types" ) const defaultOldTaskTimeout = time.Minute diff --git a/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/task.go b/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/task.go index 0c0b54dcda..4f7bbdd33b 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/task.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/task.go @@ -4,12 +4,12 @@ import ( "reflect" "time" + google_protobuf "github.com/gogo/protobuf/types" "github.com/moby/swarmkit/v2/api" "github.com/moby/swarmkit/v2/api/defaults" "github.com/moby/swarmkit/v2/identity" "github.com/moby/swarmkit/v2/manager/constraint" "github.com/moby/swarmkit/v2/protobuf/ptypes" - google_protobuf "github.com/gogo/protobuf/types" ) // NewTask creates a new task. diff --git a/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/taskinit/init.go b/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/taskinit/init.go index 5098d70a8a..34331e6548 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/taskinit/init.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/taskinit/init.go @@ -5,13 +5,13 @@ import ( "sort" "time" + gogotypes "github.com/gogo/protobuf/types" "github.com/moby/swarmkit/v2/api" "github.com/moby/swarmkit/v2/api/defaults" "github.com/moby/swarmkit/v2/log" "github.com/moby/swarmkit/v2/manager/orchestrator" "github.com/moby/swarmkit/v2/manager/orchestrator/restart" "github.com/moby/swarmkit/v2/manager/state/store" - gogotypes "github.com/gogo/protobuf/types" ) // InitHandler defines orchestrator's action to fix tasks at start. diff --git a/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/update/updater.go b/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/update/updater.go index ba9a996212..11e1106d76 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/update/updater.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/orchestrator/update/updater.go @@ -9,6 +9,7 @@ import ( "time" "github.com/docker/go-events" + gogotypes "github.com/gogo/protobuf/types" "github.com/moby/swarmkit/v2/api" "github.com/moby/swarmkit/v2/api/defaults" "github.com/moby/swarmkit/v2/log" @@ -18,7 +19,6 @@ import ( "github.com/moby/swarmkit/v2/manager/state/store" "github.com/moby/swarmkit/v2/protobuf/ptypes" "github.com/moby/swarmkit/v2/watch" - gogotypes "github.com/gogo/protobuf/types" ) // Supervisor supervises a set of updates. It's responsible for keeping track of updates, diff --git a/vendor/github.com/moby/swarmkit/v2/manager/scheduler/filter.go b/vendor/github.com/moby/swarmkit/v2/manager/scheduler/filter.go index a7db0dbcdf..4e0bb9f02a 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/scheduler/filter.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/scheduler/filter.go @@ -419,7 +419,7 @@ func (f *VolumesFilter) SetTask(t *api.Task) bool { // hasCSI will be set true if one of the mounts is a CSI-type mount. hasCSI := false for _, mount := range c.Mounts { - if mount.Type == api.MountTypeCSI { + if mount.Type == api.MountTypeCluster { hasCSI = true f.requestedVolumes = append(f.requestedVolumes, &mount) } diff --git a/vendor/github.com/moby/swarmkit/v2/manager/scheduler/scheduler.go b/vendor/github.com/moby/swarmkit/v2/manager/scheduler/scheduler.go index 27995a5f49..208f271410 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/scheduler/scheduler.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/scheduler/scheduler.go @@ -748,17 +748,17 @@ func (s *Scheduler) scheduleTaskGroup(ctx context.Context, taskGroup map[string] // are at a leaf node, past which there are no subtrees, then we try to // schedule a proportional number of tasks to the nodes of that branch. // -// - n is the number of tasks being scheduled on this subtree -// - taskGroup is a set of tasks to schedule, taking the form of a map from the -// task ID to the task object. -// - tree is the decision tree we're scheduling on. this is, effectively, the -// set of nodes that meet scheduling constraints. these nodes are arranged -// into a tree so that placement preferences can be taken into account when -// spreading tasks across nodes. -// - schedulingDecisions is a set of the scheduling decisions already made for -// this tree -// - nodeLess is a comparator that chooses which of the two nodes is preferable -// to schedule on. +// - n is the number of tasks being scheduled on this subtree +// - taskGroup is a set of tasks to schedule, taking the form of a map from the +// task ID to the task object. +// - tree is the decision tree we're scheduling on. this is, effectively, the +// set of nodes that meet scheduling constraints. these nodes are arranged +// into a tree so that placement preferences can be taken into account when +// spreading tasks across nodes. +// - schedulingDecisions is a set of the scheduling decisions already made for +// this tree +// - nodeLess is a comparator that chooses which of the two nodes is preferable +// to schedule on. func (s *Scheduler) scheduleNTasksOnSubtree(ctx context.Context, n int, taskGroup map[string]*api.Task, tree *decisionTree, schedulingDecisions map[string]schedulingDecision, nodeLess func(a *NodeInfo, b *NodeInfo) bool) int { if tree.next == nil { nodes := tree.orderedNodes(s.pipeline.Process, nodeLess) @@ -819,15 +819,15 @@ func (s *Scheduler) scheduleNTasksOnSubtree(ctx context.Context, n int, taskGrou // fewer than the number of tasks desired to be scheduled, if there are // insufficient nodes to meet resource constraints. // -// - n is the number of tasks desired to be scheduled to this set of nodes -// - taskGroup is the tasks desired to be scheduled, in the form of a map from -// task ID to task object. this argument is mutated; tasks which have been -// scheduled are removed from the map. -// - nodes is the set of nodes to schedule to -// - schedulingDecisions is the set of scheduling decisions that have been made -// thus far, in the form of a map from task ID to the decision made. -// - nodeLess is a simple comparator that chooses which of two nodes would be -// preferable to schedule on. +// - n is the number of tasks desired to be scheduled to this set of nodes +// - taskGroup is the tasks desired to be scheduled, in the form of a map from +// task ID to task object. this argument is mutated; tasks which have been +// scheduled are removed from the map. +// - nodes is the set of nodes to schedule to +// - schedulingDecisions is the set of scheduling decisions that have been made +// thus far, in the form of a map from task ID to the decision made. +// - nodeLess is a simple comparator that chooses which of two nodes would be +// preferable to schedule on. func (s *Scheduler) scheduleNTasksOnNodes(ctx context.Context, n int, taskGroup map[string]*api.Task, nodes []NodeInfo, schedulingDecisions map[string]schedulingDecision, nodeLess func(a *NodeInfo, b *NodeInfo) bool) int { tasksScheduled := 0 failedConstraints := make(map[int]bool) // key is index in nodes slice diff --git a/vendor/github.com/moby/swarmkit/v2/manager/scheduler/volumes.go b/vendor/github.com/moby/swarmkit/v2/manager/scheduler/volumes.go index ee2137acbc..12383c98ef 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/scheduler/volumes.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/scheduler/volumes.go @@ -111,7 +111,7 @@ func (vs *volumeSet) chooseTaskVolumes(task *api.Task, nodeInfo *NodeInfo) ([]*a return nil, nil } for _, mount := range task.Spec.GetContainer().Mounts { - if mount.Type == api.MountTypeCSI { + if mount.Type == api.MountTypeCluster { candidate := vs.isVolumeAvailableOnNode(&mount, nodeInfo) if candidate == "" { // TODO(dperny): return structured error types, instead of diff --git a/vendor/github.com/moby/swarmkit/v2/manager/state/raft/membership/cluster.go b/vendor/github.com/moby/swarmkit/v2/manager/state/raft/membership/cluster.go index 062d8aa526..0733178a0f 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/state/raft/membership/cluster.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/state/raft/membership/cluster.go @@ -4,9 +4,9 @@ import ( "errors" "sync" + "github.com/gogo/protobuf/proto" "github.com/moby/swarmkit/v2/api" "github.com/moby/swarmkit/v2/watch" - "github.com/gogo/protobuf/proto" "go.etcd.io/etcd/raft/v3/raftpb" ) diff --git a/vendor/github.com/moby/swarmkit/v2/manager/state/raft/raft.go b/vendor/github.com/moby/swarmkit/v2/manager/state/raft/raft.go index 60407a8b2c..86e313958e 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/state/raft/raft.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/state/raft/raft.go @@ -16,6 +16,7 @@ import ( "code.cloudfoundry.org/clock" "github.com/docker/go-events" "github.com/docker/go-metrics" + "github.com/gogo/protobuf/proto" "github.com/moby/swarmkit/v2/api" "github.com/moby/swarmkit/v2/ca" "github.com/moby/swarmkit/v2/log" @@ -26,7 +27,6 @@ import ( "github.com/moby/swarmkit/v2/manager/state/raft/transport" "github.com/moby/swarmkit/v2/manager/state/store" "github.com/moby/swarmkit/v2/watch" - "github.com/gogo/protobuf/proto" "github.com/pkg/errors" "github.com/sirupsen/logrus" "go.etcd.io/etcd/pkg/v3/idutil" diff --git a/vendor/github.com/moby/swarmkit/v2/manager/state/raft/util.go b/vendor/github.com/moby/swarmkit/v2/manager/state/raft/util.go index 423831527c..985f307394 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/state/raft/util.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/state/raft/util.go @@ -5,10 +5,10 @@ import ( "net" "time" + grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus" "github.com/moby/swarmkit/v2/api" "github.com/moby/swarmkit/v2/manager/state" "github.com/moby/swarmkit/v2/manager/state/store" - grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus" "google.golang.org/grpc" "google.golang.org/grpc/credentials" ) diff --git a/vendor/github.com/moby/swarmkit/v2/manager/state/store/clusters.go b/vendor/github.com/moby/swarmkit/v2/manager/state/store/clusters.go index bf5f1da8f1..5b7234684a 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/state/store/clusters.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/state/store/clusters.go @@ -3,8 +3,8 @@ package store import ( "strings" - "github.com/moby/swarmkit/v2/api" memdb "github.com/hashicorp/go-memdb" + "github.com/moby/swarmkit/v2/api" ) const ( diff --git a/vendor/github.com/moby/swarmkit/v2/manager/state/store/configs.go b/vendor/github.com/moby/swarmkit/v2/manager/state/store/configs.go index 5805ca4579..7c81835b1c 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/state/store/configs.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/state/store/configs.go @@ -3,8 +3,8 @@ package store import ( "strings" - "github.com/moby/swarmkit/v2/api" memdb "github.com/hashicorp/go-memdb" + "github.com/moby/swarmkit/v2/api" ) const tableConfig = "config" diff --git a/vendor/github.com/moby/swarmkit/v2/manager/state/store/extensions.go b/vendor/github.com/moby/swarmkit/v2/manager/state/store/extensions.go index eb215852df..e5990dc705 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/state/store/extensions.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/state/store/extensions.go @@ -4,8 +4,8 @@ import ( "errors" "strings" - "github.com/moby/swarmkit/v2/api" memdb "github.com/hashicorp/go-memdb" + "github.com/moby/swarmkit/v2/api" ) const tableExtension = "extension" diff --git a/vendor/github.com/moby/swarmkit/v2/manager/state/store/memory.go b/vendor/github.com/moby/swarmkit/v2/manager/state/store/memory.go index e1b63508d2..1726ac1bee 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/state/store/memory.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/state/store/memory.go @@ -913,7 +913,7 @@ func ViewAndWatch(store *MemoryStore, cb func(ReadTx) error, specifiers ...api.E // from "version", and new events until the channel is closed. If "version" // is nil, this function is equivalent to // -// state.Watch(store.WatchQueue(), specifiers...). +// state.Watch(store.WatchQueue(), specifiers...). // // If the log has been compacted and it's not possible to produce the exact // set of events leading from "version" to the current state, this function diff --git a/vendor/github.com/moby/swarmkit/v2/manager/state/store/networks.go b/vendor/github.com/moby/swarmkit/v2/manager/state/store/networks.go index 4b3bcfb86a..c9ef4a4ccb 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/state/store/networks.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/state/store/networks.go @@ -3,8 +3,8 @@ package store import ( "strings" - "github.com/moby/swarmkit/v2/api" memdb "github.com/hashicorp/go-memdb" + "github.com/moby/swarmkit/v2/api" ) const tableNetwork = "network" diff --git a/vendor/github.com/moby/swarmkit/v2/manager/state/store/nodes.go b/vendor/github.com/moby/swarmkit/v2/manager/state/store/nodes.go index 1a81bb9ec1..0dcdfb4e62 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/state/store/nodes.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/state/store/nodes.go @@ -4,8 +4,8 @@ import ( "strconv" "strings" - "github.com/moby/swarmkit/v2/api" memdb "github.com/hashicorp/go-memdb" + "github.com/moby/swarmkit/v2/api" ) const tableNode = "node" diff --git a/vendor/github.com/moby/swarmkit/v2/manager/state/store/object.go b/vendor/github.com/moby/swarmkit/v2/manager/state/store/object.go index e951843c12..2c9faf8f63 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/state/store/object.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/state/store/object.go @@ -1,8 +1,8 @@ package store import ( - "github.com/moby/swarmkit/v2/api" memdb "github.com/hashicorp/go-memdb" + "github.com/moby/swarmkit/v2/api" ) // ObjectStoreConfig provides the necessary methods to store a particular object diff --git a/vendor/github.com/moby/swarmkit/v2/manager/state/store/resources.go b/vendor/github.com/moby/swarmkit/v2/manager/state/store/resources.go index 537d71261c..5ed12225e8 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/state/store/resources.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/state/store/resources.go @@ -3,8 +3,8 @@ package store import ( "strings" - "github.com/moby/swarmkit/v2/api" memdb "github.com/hashicorp/go-memdb" + "github.com/moby/swarmkit/v2/api" "github.com/pkg/errors" ) diff --git a/vendor/github.com/moby/swarmkit/v2/manager/state/store/secrets.go b/vendor/github.com/moby/swarmkit/v2/manager/state/store/secrets.go index 4271011882..fc2fae60c5 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/state/store/secrets.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/state/store/secrets.go @@ -3,8 +3,8 @@ package store import ( "strings" - "github.com/moby/swarmkit/v2/api" memdb "github.com/hashicorp/go-memdb" + "github.com/moby/swarmkit/v2/api" ) const tableSecret = "secret" diff --git a/vendor/github.com/moby/swarmkit/v2/manager/state/store/services.go b/vendor/github.com/moby/swarmkit/v2/manager/state/store/services.go index 6cd03b082c..1393ea1495 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/state/store/services.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/state/store/services.go @@ -3,9 +3,9 @@ package store import ( "strings" + memdb "github.com/hashicorp/go-memdb" "github.com/moby/swarmkit/v2/api" "github.com/moby/swarmkit/v2/api/naming" - memdb "github.com/hashicorp/go-memdb" ) const tableService = "service" diff --git a/vendor/github.com/moby/swarmkit/v2/manager/state/store/tasks.go b/vendor/github.com/moby/swarmkit/v2/manager/state/store/tasks.go index 3097b40c63..9cbda03990 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/state/store/tasks.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/state/store/tasks.go @@ -4,9 +4,9 @@ import ( "strconv" "strings" + memdb "github.com/hashicorp/go-memdb" "github.com/moby/swarmkit/v2/api" "github.com/moby/swarmkit/v2/api/naming" - memdb "github.com/hashicorp/go-memdb" ) const tableTask = "task" diff --git a/vendor/github.com/moby/swarmkit/v2/manager/state/store/volumes.go b/vendor/github.com/moby/swarmkit/v2/manager/state/store/volumes.go index 444d50cc0f..8dc6ee71c1 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/state/store/volumes.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/state/store/volumes.go @@ -3,8 +3,8 @@ package store import ( "strings" - "github.com/moby/swarmkit/v2/api" memdb "github.com/hashicorp/go-memdb" + "github.com/moby/swarmkit/v2/api" ) const tableVolume = "volume" diff --git a/vendor/github.com/moby/swarmkit/v2/manager/state/watch.go b/vendor/github.com/moby/swarmkit/v2/manager/state/watch.go index 183c8964ee..1c7678e586 100644 --- a/vendor/github.com/moby/swarmkit/v2/manager/state/watch.go +++ b/vendor/github.com/moby/swarmkit/v2/manager/state/watch.go @@ -32,28 +32,33 @@ func NodeCheckState(n1, n2 *api.Node) bool { // // Examples: // -// // subscribe to all events -// Watch(q) +// // subscribe to all events +// Watch(q) // -// // subscribe to all UpdateTask events -// Watch(q, EventUpdateTask{}) +// // subscribe to all UpdateTask events +// Watch(q, EventUpdateTask{}) // -// // subscribe to all task-related events -// Watch(q, EventUpdateTask{}, EventCreateTask{}, EventDeleteTask{}) +// // subscribe to all task-related events +// Watch(q, EventUpdateTask{}, EventCreateTask{}, EventDeleteTask{}) // -// // subscribe to UpdateTask for node 123 -// Watch(q, EventUpdateTask{Task: &api.Task{NodeID: 123}, -// Checks: []TaskCheckFunc{TaskCheckNodeID}}) +// // subscribe to UpdateTask for node 123 +// Watch(q, EventUpdateTask{ +// Task: &api.Task{NodeID: 123}, +// Checks: []TaskCheckFunc{TaskCheckNodeID}, +// }) // -// // subscribe to UpdateTask for node 123, as well as CreateTask -// // for node 123 that also has ServiceID set to "abc" -// Watch(q, EventUpdateTask{Task: &api.Task{NodeID: 123}, -// Checks: []TaskCheckFunc{TaskCheckNodeID}}, -// EventCreateTask{Task: &api.Task{NodeID: 123, ServiceID: "abc"}, -// Checks: []TaskCheckFunc{TaskCheckNodeID, -// func(t1, t2 *api.Task) bool { -// return t1.ServiceID == t2.ServiceID -// }}}) +// // subscribe to UpdateTask for node 123, as well as CreateTask +// // for node 123 that also has ServiceID set to "abc" +// Watch(q, EventUpdateTask{ +// Task: &api.Task{NodeID: 123}, +// Checks: []TaskCheckFunc{TaskCheckNodeID}}, +// EventCreateTask{ +// Task: &api.Task{NodeID: 123, ServiceID: "abc"}, +// Checks: []TaskCheckFunc{TaskCheckNodeID, func(t1, t2 *api.Task) bool { +// return t1.ServiceID == t2.ServiceID +// }, +// }, +// }) func Watch(queue *watch.Queue, specifiers ...api.Event) (eventq chan events.Event, cancel func()) { if len(specifiers) == 0 { return queue.Watch() diff --git a/vendor/github.com/moby/swarmkit/v2/node/node.go b/vendor/github.com/moby/swarmkit/v2/node/node.go index 439e8757ba..5e57ec32d0 100644 --- a/vendor/github.com/moby/swarmkit/v2/node/node.go +++ b/vendor/github.com/moby/swarmkit/v2/node/node.go @@ -21,6 +21,7 @@ import ( "github.com/docker/docker/libnetwork/drivers/overlay/overlayutils" "github.com/docker/docker/pkg/plugingetter" "github.com/docker/go-metrics" + grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus" "github.com/moby/swarmkit/v2/agent" "github.com/moby/swarmkit/v2/agent/exec" "github.com/moby/swarmkit/v2/api" @@ -33,7 +34,6 @@ import ( "github.com/moby/swarmkit/v2/manager/encryption" "github.com/moby/swarmkit/v2/remotes" "github.com/moby/swarmkit/v2/xnet" - grpc_prometheus "github.com/grpc-ecosystem/go-grpc-prometheus" "github.com/pkg/errors" "github.com/sirupsen/logrus" bolt "go.etcd.io/bbolt" diff --git a/vendor/modules.txt b/vendor/modules.txt index 63109dfc4d..821c3037ab 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -593,7 +593,7 @@ github.com/moby/ipvs # github.com/moby/locker v1.0.1 ## explicit; go 1.13 github.com/moby/locker -# github.com/moby/swarmkit/v2 v2.0.0-20220420172245-6068d1894d46 +# github.com/moby/swarmkit/v2 v2.0.0-20220721174824-48dd89375d0a ## explicit; go 1.17 github.com/moby/swarmkit/v2/agent github.com/moby/swarmkit/v2/agent/configs