diff --git a/vendor.conf b/vendor.conf index 23512ce23d..7e279edd88 100644 --- a/vendor.conf +++ b/vendor.conf @@ -108,7 +108,7 @@ github.com/docker/containerd 9048e5e50717ea4497b757314bad98ea3763c145 github.com/tonistiigi/fifo 1405643975692217d6720f8b54aeee1bf2cd5cf4 # cluster -github.com/docker/swarmkit 8f053c2030ebfc90f19f241fb7880e95b9761b7a +github.com/docker/swarmkit f420c4b9e1535170fc229db97ee8ac32374020b1 github.com/gogo/protobuf 8d70fb3182befc465c4a1eac8ad4d38ff49778e2 github.com/cloudflare/cfssl 7fb22c8cba7ecaf98e4082d22d65800cf45e042a github.com/google/certificate-transparency d90e65c3a07988180c5b1ece71791c0b6506826e diff --git a/vendor/github.com/docker/swarmkit/agent/agent.go b/vendor/github.com/docker/swarmkit/agent/agent.go index abe06735d7..841048ffe0 100644 --- a/vendor/github.com/docker/swarmkit/agent/agent.go +++ b/vendor/github.com/docker/swarmkit/agent/agent.go @@ -245,7 +245,12 @@ func (a *Agent) run(ctx context.Context) { nodeDescription = newNodeDescription // close the session log.G(ctx).Info("agent: found node update") - session.sendError(nil) + + if err := session.close(); err != nil { + log.G(ctx).WithError(err).Error("agent: closing session failed") + } + sessionq = nil + registered = nil } } @@ -315,8 +320,8 @@ func (a *Agent) run(ctx context.Context) { sessionq = a.sessionq case err := <-session.errs: // TODO(stevvooe): This may actually block if a session is closed - // but no error was sent. Session.close must only be called here - // for this to work. + // but no error was sent. This must be the only place + // session.close is called in response to errors, for this to work. if err != nil { log.G(ctx).WithError(err).Error("agent: session failed") backoff = initialSessionFailureBackoff + 2*backoff diff --git a/vendor/github.com/docker/swarmkit/agent/session.go b/vendor/github.com/docker/swarmkit/agent/session.go index e15714a705..36a3a375cb 100644 --- a/vendor/github.com/docker/swarmkit/agent/session.go +++ b/vendor/github.com/docker/swarmkit/agent/session.go @@ -14,9 +14,8 @@ import ( "google.golang.org/grpc/codes" ) -const dispatcherRPCTimeout = 5 * time.Second - var ( + dispatcherRPCTimeout = 5 * time.Second errSessionDisconnect = errors.New("agent: session disconnect") // instructed to disconnect errSessionClosed = errors.New("agent: session closed") ) @@ -39,12 +38,14 @@ type session struct { assignments chan *api.AssignmentsMessage subscriptions chan *api.SubscriptionMessage + cancel func() // this is assumed to be never nil, and set whenever a session is created registered chan struct{} // closed registration closed chan struct{} closeOnce sync.Once } func newSession(ctx context.Context, agent *Agent, delay time.Duration, sessionID string, description *api.NodeDescription) *session { + sessionCtx, sessionCancel := context.WithCancel(ctx) s := &session{ agent: agent, sessionID: sessionID, @@ -54,6 +55,7 @@ func newSession(ctx context.Context, agent *Agent, delay time.Duration, sessionI subscriptions: make(chan *api.SubscriptionMessage), registered: make(chan struct{}), closed: make(chan struct{}), + cancel: sessionCancel, } // TODO(stevvooe): Need to move connection management up a level or create @@ -69,7 +71,7 @@ func newSession(ctx context.Context, agent *Agent, delay time.Duration, sessionI } s.conn = cc - go s.run(ctx, delay, description) + go s.run(sessionCtx, delay, description) return s } @@ -114,6 +116,14 @@ func (s *session) start(ctx context.Context, description *api.NodeDescription) e // Note: we don't defer cancellation of this context, because the // streaming RPC is used after this function returned. We only cancel // it in the timeout case to make sure the goroutine completes. + + // We also fork this context again from the `run` context, because on + // `dispatcherRPCTimeout`, we want to cancel establishing a session and + // return an error. If we cancel the `run` context instead of forking, + // then in `run` it's possible that we just terminate the function because + // `ctx` is done and hence fail to propagate the timeout error to the agent. + // If the error is not propogated to the agent, the agent will not close + // the session or rebuild a new sesssion. sessionCtx, cancelSession := context.WithCancel(ctx) // Need to run Session in a goroutine since there's no way to set a @@ -402,10 +412,10 @@ func (s *session) sendError(err error) { // of event loop. func (s *session) close() error { s.closeOnce.Do(func() { + s.cancel() if s.conn != nil { s.conn.Close(false) } - close(s.closed) }) diff --git a/vendor/github.com/docker/swarmkit/api/gen.go b/vendor/github.com/docker/swarmkit/api/gen.go index 00a8d5d9e2..5a0bd33069 100644 --- a/vendor/github.com/docker/swarmkit/api/gen.go +++ b/vendor/github.com/docker/swarmkit/api/gen.go @@ -1,3 +1,3 @@ package api -//go:generate protoc -I.:../protobuf:../vendor:../vendor/github.com/gogo/protobuf --gogoswarm_out=plugins=grpc+deepcopy+storeobject+raftproxy+authenticatedwrapper,import_path=github.com/docker/swarmkit/api,Mgogoproto/gogo.proto=github.com/gogo/protobuf/gogoproto,Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor,Mplugin/plugin.proto=github.com/docker/swarmkit/protobuf/plugin,Mgoogle/protobuf/duration.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/timestamp.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/any.proto=github.com/gogo/protobuf/types:. types.proto specs.proto objects.proto control.proto dispatcher.proto ca.proto snapshot.proto raft.proto health.proto resource.proto logbroker.proto store.proto +//go:generate protoc -I.:../protobuf:../vendor:../vendor/github.com/gogo/protobuf --gogoswarm_out=plugins=grpc+deepcopy+storeobject+raftproxy+authenticatedwrapper,import_path=github.com/docker/swarmkit/api,Mgogoproto/gogo.proto=github.com/gogo/protobuf/gogoproto,Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor,Mplugin/plugin.proto=github.com/docker/swarmkit/protobuf/plugin,Mgoogle/protobuf/duration.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/timestamp.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/any.proto=github.com/gogo/protobuf/types:. types.proto specs.proto objects.proto control.proto dispatcher.proto ca.proto snapshot.proto raft.proto health.proto resource.proto logbroker.proto watch.proto diff --git a/vendor/github.com/docker/swarmkit/api/logbroker.pb.go b/vendor/github.com/docker/swarmkit/api/logbroker.pb.go index 48a4db56c1..bb4619b390 100644 --- a/vendor/github.com/docker/swarmkit/api/logbroker.pb.go +++ b/vendor/github.com/docker/swarmkit/api/logbroker.pb.go @@ -118,6 +118,16 @@ func (m *LogContext) Reset() { *m = LogContext{} } func (*LogContext) ProtoMessage() {} func (*LogContext) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{2} } +// LogAttr is an extra key/value pair that may be have been set by users +type LogAttr struct { + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (m *LogAttr) Reset() { *m = LogAttr{} } +func (*LogAttr) ProtoMessage() {} +func (*LogAttr) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{3} } + // LogMessage type LogMessage struct { // Context identifies the source of the log message. @@ -129,11 +139,14 @@ type LogMessage struct { Stream LogStream `protobuf:"varint,3,opt,name=stream,proto3,enum=docker.swarmkit.v1.LogStream" json:"stream,omitempty"` // Data is the raw log message, as generated by the application. Data []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` + // Attrs is a list of key value pairs representing additional log details + // that may have been returned from the logger + Attrs []LogAttr `protobuf:"bytes,5,rep,name=attrs" json:"attrs"` } func (m *LogMessage) Reset() { *m = LogMessage{} } func (*LogMessage) ProtoMessage() {} -func (*LogMessage) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{3} } +func (*LogMessage) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{4} } type SubscribeLogsRequest struct { // LogSelector describes the logs to which the subscriber is @@ -143,7 +156,7 @@ type SubscribeLogsRequest struct { func (m *SubscribeLogsRequest) Reset() { *m = SubscribeLogsRequest{} } func (*SubscribeLogsRequest) ProtoMessage() {} -func (*SubscribeLogsRequest) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{4} } +func (*SubscribeLogsRequest) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{5} } type SubscribeLogsMessage struct { Messages []LogMessage `protobuf:"bytes,1,rep,name=messages" json:"messages"` @@ -151,7 +164,7 @@ type SubscribeLogsMessage struct { func (m *SubscribeLogsMessage) Reset() { *m = SubscribeLogsMessage{} } func (*SubscribeLogsMessage) ProtoMessage() {} -func (*SubscribeLogsMessage) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{5} } +func (*SubscribeLogsMessage) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{6} } // ListenSubscriptionsRequest is a placeholder to begin listening for // subscriptions. @@ -161,7 +174,7 @@ type ListenSubscriptionsRequest struct { func (m *ListenSubscriptionsRequest) Reset() { *m = ListenSubscriptionsRequest{} } func (*ListenSubscriptionsRequest) ProtoMessage() {} func (*ListenSubscriptionsRequest) Descriptor() ([]byte, []int) { - return fileDescriptorLogbroker, []int{6} + return fileDescriptorLogbroker, []int{7} } // SubscriptionMessage instructs the listener to start publishing messages for @@ -182,7 +195,7 @@ type SubscriptionMessage struct { func (m *SubscriptionMessage) Reset() { *m = SubscriptionMessage{} } func (*SubscriptionMessage) ProtoMessage() {} -func (*SubscriptionMessage) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{7} } +func (*SubscriptionMessage) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{8} } type PublishLogsMessage struct { // SubscriptionID identifies which subscription the set of messages should @@ -199,19 +212,20 @@ type PublishLogsMessage struct { func (m *PublishLogsMessage) Reset() { *m = PublishLogsMessage{} } func (*PublishLogsMessage) ProtoMessage() {} -func (*PublishLogsMessage) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{8} } +func (*PublishLogsMessage) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{9} } type PublishLogsResponse struct { } func (m *PublishLogsResponse) Reset() { *m = PublishLogsResponse{} } func (*PublishLogsResponse) ProtoMessage() {} -func (*PublishLogsResponse) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{9} } +func (*PublishLogsResponse) Descriptor() ([]byte, []int) { return fileDescriptorLogbroker, []int{10} } func init() { proto.RegisterType((*LogSubscriptionOptions)(nil), "docker.swarmkit.v1.LogSubscriptionOptions") proto.RegisterType((*LogSelector)(nil), "docker.swarmkit.v1.LogSelector") proto.RegisterType((*LogContext)(nil), "docker.swarmkit.v1.LogContext") + proto.RegisterType((*LogAttr)(nil), "docker.swarmkit.v1.LogAttr") proto.RegisterType((*LogMessage)(nil), "docker.swarmkit.v1.LogMessage") proto.RegisterType((*SubscribeLogsRequest)(nil), "docker.swarmkit.v1.SubscribeLogsRequest") proto.RegisterType((*SubscribeLogsMessage)(nil), "docker.swarmkit.v1.SubscribeLogsMessage") @@ -339,6 +353,21 @@ func (m *LogContext) CopyFrom(src interface{}) { *m = *o } +func (m *LogAttr) Copy() *LogAttr { + if m == nil { + return nil + } + o := &LogAttr{} + o.CopyFrom(m) + return o +} + +func (m *LogAttr) CopyFrom(src interface{}) { + + o := src.(*LogAttr) + *m = *o +} + func (m *LogMessage) Copy() *LogMessage { if m == nil { return nil @@ -361,6 +390,13 @@ func (m *LogMessage) CopyFrom(src interface{}) { m.Data = make([]byte, len(o.Data)) copy(m.Data, o.Data) } + if o.Attrs != nil { + m.Attrs = make([]LogAttr, len(o.Attrs)) + for i := range m.Attrs { + github_com_docker_swarmkit_api_deepcopy.Copy(&m.Attrs[i], &o.Attrs[i]) + } + } + } func (m *SubscribeLogsRequest) Copy() *SubscribeLogsRequest { @@ -916,6 +952,36 @@ func (m *LogContext) MarshalTo(dAtA []byte) (int, error) { return i, nil } +func (m *LogAttr) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalTo(dAtA) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LogAttr) MarshalTo(dAtA []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Key) > 0 { + dAtA[i] = 0xa + i++ + i = encodeVarintLogbroker(dAtA, i, uint64(len(m.Key))) + i += copy(dAtA[i:], m.Key) + } + if len(m.Value) > 0 { + dAtA[i] = 0x12 + i++ + i = encodeVarintLogbroker(dAtA, i, uint64(len(m.Value))) + i += copy(dAtA[i:], m.Value) + } + return i, nil +} + func (m *LogMessage) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -960,6 +1026,18 @@ func (m *LogMessage) MarshalTo(dAtA []byte) (int, error) { i = encodeVarintLogbroker(dAtA, i, uint64(len(m.Data))) i += copy(dAtA[i:], m.Data) } + if len(m.Attrs) > 0 { + for _, msg := range m.Attrs { + dAtA[i] = 0x2a + i++ + i = encodeVarintLogbroker(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } return i, nil } @@ -1563,6 +1641,20 @@ func (m *LogContext) Size() (n int) { return n } +func (m *LogAttr) Size() (n int) { + var l int + _ = l + l = len(m.Key) + if l > 0 { + n += 1 + l + sovLogbroker(uint64(l)) + } + l = len(m.Value) + if l > 0 { + n += 1 + l + sovLogbroker(uint64(l)) + } + return n +} + func (m *LogMessage) Size() (n int) { var l int _ = l @@ -1579,6 +1671,12 @@ func (m *LogMessage) Size() (n int) { if l > 0 { n += 1 + l + sovLogbroker(uint64(l)) } + if len(m.Attrs) > 0 { + for _, e := range m.Attrs { + l = e.Size() + n += 1 + l + sovLogbroker(uint64(l)) + } + } return n } @@ -1710,6 +1808,17 @@ func (this *LogContext) String() string { }, "") return s } +func (this *LogAttr) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LogAttr{`, + `Key:` + fmt.Sprintf("%v", this.Key) + `,`, + `Value:` + fmt.Sprintf("%v", this.Value) + `,`, + `}`, + }, "") + return s +} func (this *LogMessage) String() string { if this == nil { return "nil" @@ -1719,6 +1828,7 @@ func (this *LogMessage) String() string { `Timestamp:` + strings.Replace(fmt.Sprintf("%v", this.Timestamp), "Timestamp", "google_protobuf.Timestamp", 1) + `,`, `Stream:` + fmt.Sprintf("%v", this.Stream) + `,`, `Data:` + fmt.Sprintf("%v", this.Data) + `,`, + `Attrs:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Attrs), "LogAttr", "LogAttr", 1), `&`, ``, 1) + `,`, `}`, }, "") return s @@ -2253,6 +2363,114 @@ func (m *LogContext) Unmarshal(dAtA []byte) error { } return nil } +func (m *LogAttr) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLogbroker + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LogAttr: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LogAttr: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLogbroker + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLogbroker + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Key = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLogbroker + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLogbroker + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipLogbroker(dAtA[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthLogbroker + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *LogMessage) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -2395,6 +2613,37 @@ func (m *LogMessage) Unmarshal(dAtA []byte) error { m.Data = []byte{} } iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Attrs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLogbroker + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthLogbroker + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Attrs = append(m.Attrs, LogAttr{}) + if err := m.Attrs[len(m.Attrs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipLogbroker(dAtA[iNdEx:]) @@ -3116,61 +3365,64 @@ var ( func init() { proto.RegisterFile("logbroker.proto", fileDescriptorLogbroker) } var fileDescriptorLogbroker = []byte{ - // 886 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x95, 0x4f, 0x8f, 0xdb, 0x44, - 0x18, 0xc6, 0x33, 0xce, 0x36, 0x7f, 0xde, 0x74, 0xff, 0x74, 0xb2, 0x5d, 0x45, 0x11, 0xb5, 0x23, - 0x57, 0x2a, 0xd1, 0xaa, 0x24, 0x25, 0x08, 0x81, 0x54, 0x09, 0x41, 0x48, 0x85, 0x22, 0xd2, 0x5d, - 0x34, 0xc9, 0x0a, 0x6e, 0x2b, 0x27, 0x9e, 0x1a, 0x2b, 0x8e, 0x27, 0x78, 0x9c, 0x2e, 0x07, 0x0e, - 0x1c, 0x8a, 0x84, 0x7a, 0xe0, 0x86, 0x04, 0x87, 0x9e, 0xe8, 0x05, 0x21, 0xc1, 0x9d, 0x0f, 0x80, - 0x56, 0x9c, 0xe0, 0xc6, 0x29, 0xa2, 0xfe, 0x00, 0x7c, 0x06, 0xe4, 0x99, 0x89, 0xe3, 0x25, 0x49, - 0x8b, 0xb6, 0x97, 0x64, 0xc6, 0xf3, 0xbc, 0x9e, 0xdf, 0x3c, 0xf3, 0xbc, 0x09, 0xec, 0x7a, 0xcc, - 0x19, 0x06, 0x6c, 0x4c, 0x83, 0xc6, 0x34, 0x60, 0x21, 0xc3, 0xd8, 0x66, 0xa3, 0x78, 0xc6, 0xcf, - 0xac, 0x60, 0x32, 0x76, 0xc3, 0xc6, 0xc3, 0xd7, 0xab, 0xfb, 0x0e, 0x73, 0x98, 0x58, 0x6e, 0xc6, - 0x23, 0xa9, 0xac, 0x1a, 0x0e, 0x63, 0x8e, 0x47, 0x9b, 0x62, 0x36, 0x9c, 0x3d, 0x68, 0x86, 0xee, - 0x84, 0xf2, 0xd0, 0x9a, 0x4c, 0x95, 0xa0, 0x3c, 0xf5, 0x66, 0x8e, 0xeb, 0x37, 0xe5, 0x97, 0x7c, - 0x68, 0xfe, 0x82, 0xe0, 0xa0, 0xc7, 0x9c, 0xfe, 0x6c, 0xc8, 0x47, 0x81, 0x3b, 0x0d, 0x5d, 0xe6, - 0x1f, 0x8b, 0x4f, 0x8e, 0xdf, 0x82, 0x3c, 0x0f, 0x03, 0x6a, 0x4d, 0x78, 0x05, 0xd5, 0xb2, 0xf5, - 0x9d, 0xd6, 0x8d, 0xc6, 0x2a, 0x4c, 0x23, 0x2e, 0x16, 0x2a, 0xb2, 0x50, 0xe3, 0x03, 0xc8, 0x3d, - 0x60, 0x9e, 0xc7, 0xce, 0x2a, 0x5a, 0x0d, 0xd5, 0x0b, 0x44, 0xcd, 0x30, 0x86, 0xad, 0xd0, 0x72, - 0xbd, 0x4a, 0xb6, 0x86, 0xea, 0x59, 0x22, 0xc6, 0xf8, 0x0e, 0x5c, 0xe1, 0xae, 0x3f, 0xa2, 0x95, - 0xad, 0x1a, 0xaa, 0x97, 0x5a, 0xd5, 0x86, 0x3c, 0x45, 0x63, 0x71, 0x8a, 0xc6, 0x60, 0x71, 0x0a, - 0x22, 0x85, 0xe6, 0x37, 0x08, 0x4a, 0xf1, 0xa6, 0xd4, 0xa3, 0xa3, 0x90, 0x05, 0xb8, 0x09, 0x25, - 0x4e, 0x83, 0x87, 0xee, 0x88, 0x9e, 0xba, 0xb6, 0x44, 0x2d, 0xb6, 0x77, 0xa2, 0xb9, 0x01, 0x7d, - 0xf9, 0xb8, 0xdb, 0xe1, 0x04, 0x94, 0xa4, 0x6b, 0x73, 0x7c, 0x0b, 0x0a, 0x3e, 0xb3, 0xa5, 0x5a, - 0x13, 0xea, 0x52, 0x34, 0x37, 0xf2, 0x47, 0xcc, 0x16, 0xd2, 0x7c, 0xbc, 0xa8, 0x74, 0xa1, 0xc5, - 0xc7, 0x42, 0x97, 0x5d, 0xea, 0x06, 0x16, 0x1f, 0x0b, 0x5d, 0xbc, 0xd8, 0xb5, 0xb9, 0xf9, 0x08, - 0x01, 0xf4, 0x98, 0xf3, 0x3e, 0xf3, 0x43, 0xfa, 0x79, 0x88, 0x6f, 0x03, 0x2c, 0x79, 0x2a, 0xa8, - 0x86, 0xea, 0xc5, 0xf6, 0x76, 0x34, 0x37, 0x8a, 0x09, 0x0e, 0x29, 0x26, 0x34, 0xf8, 0x26, 0xe4, - 0x15, 0x8c, 0x30, 0xab, 0xd8, 0x86, 0x68, 0x6e, 0xe4, 0x24, 0x0b, 0xc9, 0x49, 0x94, 0x58, 0xa4, - 0x48, 0x84, 0x77, 0x4a, 0x24, 0x41, 0x48, 0x4e, 0x72, 0x98, 0x7f, 0x4a, 0x8c, 0xfb, 0x94, 0x73, - 0xcb, 0xa1, 0xf8, 0x1d, 0xc8, 0x8f, 0x24, 0x91, 0x60, 0x28, 0xb5, 0xf4, 0x0d, 0xb7, 0xa7, 0xb8, - 0xdb, 0x5b, 0xe7, 0x73, 0x23, 0x43, 0x16, 0x45, 0xf8, 0x6d, 0x28, 0x26, 0x01, 0x12, 0x68, 0xcf, - 0xbf, 0x9c, 0xa5, 0x18, 0xbf, 0x09, 0x39, 0x99, 0x04, 0x01, 0xfb, 0xc2, 0xd8, 0x28, 0x71, 0x9c, - 0x0e, 0xdb, 0x0a, 0x2d, 0x11, 0x84, 0xab, 0x44, 0x8c, 0xcd, 0xef, 0x11, 0xec, 0xab, 0x68, 0x0e, - 0x69, 0x8f, 0x39, 0x9c, 0xd0, 0xcf, 0x66, 0x94, 0x87, 0xf8, 0x2e, 0x14, 0xb8, 0x0a, 0x80, 0x3a, - 0x9e, 0xb1, 0x69, 0x17, 0x25, 0x23, 0x49, 0x01, 0xee, 0x40, 0x9e, 0xc9, 0x8c, 0xab, 0x83, 0x1d, - 0x6e, 0xaa, 0x5d, 0xed, 0x0a, 0xb2, 0x28, 0x35, 0x3f, 0xf9, 0x0f, 0xda, 0xc2, 0xf8, 0x77, 0xa1, - 0x30, 0x91, 0x43, 0x19, 0xc6, 0xcd, 0xce, 0xab, 0x0a, 0xe5, 0x7c, 0x52, 0x65, 0xbe, 0x02, 0xd5, - 0x9e, 0xcb, 0x43, 0xea, 0xa7, 0xf7, 0x5f, 0x1c, 0xdd, 0xfc, 0x0d, 0x41, 0x39, 0xbd, 0xb0, 0xd8, - 0xf7, 0x00, 0xb4, 0x24, 0x6f, 0xb9, 0x68, 0x6e, 0x68, 0xdd, 0x0e, 0xd1, 0x5c, 0xfb, 0x82, 0x55, - 0xda, 0x4b, 0x58, 0x95, 0xbd, 0xb4, 0x55, 0x78, 0x1f, 0xae, 0x8c, 0x3c, 0xc6, 0x65, 0x93, 0x17, - 0x88, 0x9c, 0x98, 0x3f, 0x22, 0xc0, 0x1f, 0xcd, 0x86, 0x9e, 0xcb, 0x3f, 0x4d, 0xfb, 0x77, 0x17, - 0x76, 0x79, 0xea, 0x65, 0xcb, 0x26, 0xc2, 0xd1, 0xdc, 0xd8, 0x49, 0xef, 0xd3, 0xed, 0x90, 0x9d, - 0xb4, 0xb4, 0x6b, 0x5f, 0x30, 0x5f, 0xbb, 0x8c, 0xf9, 0x4b, 0xd6, 0x6c, 0x9a, 0xf5, 0x3a, 0x94, - 0x53, 0xa8, 0x84, 0xf2, 0x29, 0xf3, 0x39, 0x3d, 0x7c, 0x8a, 0xa0, 0x98, 0x24, 0x19, 0xdf, 0x06, - 0xdc, 0x3b, 0xfe, 0xe0, 0xb4, 0x3f, 0x20, 0xf7, 0xde, 0xbb, 0x7f, 0x7a, 0x72, 0xf4, 0xe1, 0xd1, - 0xf1, 0xc7, 0x47, 0x7b, 0x99, 0xea, 0xfe, 0xe3, 0x27, 0xb5, 0xbd, 0x44, 0x76, 0xe2, 0x8f, 0x7d, - 0x76, 0xe6, 0xe3, 0x43, 0xb8, 0x96, 0x52, 0xf7, 0x07, 0x9d, 0xe3, 0x93, 0xc1, 0x1e, 0xaa, 0x96, - 0x1f, 0x3f, 0xa9, 0xed, 0x26, 0xe2, 0x7e, 0x68, 0xb3, 0x59, 0xb8, 0xaa, 0xbd, 0x47, 0xc8, 0x9e, - 0xb6, 0xaa, 0xa5, 0x41, 0x50, 0xbd, 0xf6, 0xf5, 0x0f, 0x7a, 0xe6, 0xd7, 0xa7, 0xfa, 0x12, 0xac, - 0xf5, 0x08, 0xc1, 0x56, 0xcc, 0x8d, 0xbf, 0x80, 0xed, 0x0b, 0x99, 0xc5, 0xf5, 0x75, 0xee, 0xac, - 0xeb, 0xb8, 0xea, 0x8b, 0x95, 0xca, 0x51, 0xf3, 0xfa, 0xef, 0x3f, 0xff, 0xf3, 0x9d, 0xb6, 0x0b, - 0xdb, 0x42, 0xf9, 0xda, 0xc4, 0xf2, 0x2d, 0x87, 0x06, 0x77, 0x50, 0xeb, 0x27, 0x4d, 0xb8, 0xd5, - 0x16, 0xff, 0x6f, 0xf8, 0x5b, 0x04, 0xe5, 0x35, 0x31, 0xc7, 0x8d, 0xb5, 0x17, 0xb6, 0xb1, 0x1f, - 0xaa, 0xaf, 0x3e, 0x07, 0x2c, 0xdd, 0x20, 0xe6, 0x4d, 0xc1, 0x75, 0x03, 0xae, 0x4a, 0xae, 0x33, - 0x16, 0x8c, 0x69, 0xb0, 0x42, 0x89, 0xbf, 0x42, 0x50, 0x4a, 0xdd, 0x35, 0xbe, 0xb5, 0xee, 0xfd, - 0xab, 0xb9, 0x5d, 0xcf, 0xb1, 0x26, 0x34, 0xff, 0x8b, 0xa3, 0x8e, 0xda, 0x95, 0xf3, 0x67, 0x7a, - 0xe6, 0xaf, 0x67, 0x7a, 0xe6, 0xcb, 0x48, 0x47, 0xe7, 0x91, 0x8e, 0xfe, 0x88, 0x74, 0xf4, 0x77, - 0xa4, 0xa3, 0x61, 0x4e, 0xfc, 0xfe, 0xbe, 0xf1, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa3, 0x37, - 0x34, 0x6f, 0x2d, 0x08, 0x00, 0x00, + // 940 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x95, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xc7, 0x33, 0xeb, 0xc4, 0x3f, 0x9e, 0x9b, 0xc4, 0x1d, 0xa7, 0x91, 0x65, 0xa8, 0x6d, 0x6d, + 0xa5, 0x62, 0x45, 0xc5, 0x6e, 0x8d, 0x50, 0x91, 0x2a, 0x21, 0x6a, 0x5c, 0x21, 0x0b, 0x37, 0x41, + 0x63, 0x47, 0x70, 0x8b, 0xd6, 0xde, 0xe9, 0xb2, 0xf2, 0x7a, 0xc7, 0xec, 0x8c, 0x13, 0x90, 0x38, + 0x70, 0x28, 0x12, 0xca, 0x81, 0x1b, 0x12, 0x1c, 0x7a, 0xa2, 0x17, 0x84, 0x04, 0x77, 0xfe, 0x00, + 0x14, 0x71, 0xe2, 0xc8, 0xc9, 0xa2, 0xfb, 0x07, 0xf0, 0x37, 0xa0, 0x9d, 0x19, 0xdb, 0x1b, 0x6c, + 0xb7, 0xa8, 0xbd, 0x24, 0x33, 0x3b, 0x9f, 0xb7, 0xef, 0xfb, 0xbe, 0xf3, 0xde, 0x1a, 0x76, 0x3d, + 0xe6, 0xf4, 0x03, 0x36, 0xa4, 0x41, 0x6d, 0x1c, 0x30, 0xc1, 0x30, 0xb6, 0xd9, 0x20, 0xda, 0xf1, + 0x33, 0x2b, 0x18, 0x0d, 0x5d, 0x51, 0x3b, 0xbd, 0x53, 0xdc, 0x73, 0x98, 0xc3, 0xe4, 0x71, 0x3d, + 0x5a, 0x29, 0xb2, 0x58, 0x76, 0x18, 0x73, 0x3c, 0x5a, 0x97, 0xbb, 0xfe, 0xe4, 0x51, 0x5d, 0xb8, + 0x23, 0xca, 0x85, 0x35, 0x1a, 0x6b, 0x20, 0x3f, 0xf6, 0x26, 0x8e, 0xeb, 0xd7, 0xd5, 0x3f, 0xf5, + 0xd0, 0xfc, 0x15, 0xc1, 0x7e, 0x87, 0x39, 0xdd, 0x49, 0x9f, 0x0f, 0x02, 0x77, 0x2c, 0x5c, 0xe6, + 0x1f, 0xc9, 0xbf, 0x1c, 0xdf, 0x85, 0x14, 0x17, 0x01, 0xb5, 0x46, 0xbc, 0x80, 0x2a, 0x89, 0xea, + 0x4e, 0xe3, 0x7a, 0x6d, 0x59, 0x4c, 0x2d, 0x0a, 0x96, 0x14, 0x99, 0xd1, 0x78, 0x1f, 0x92, 0x8f, + 0x98, 0xe7, 0xb1, 0xb3, 0x82, 0x51, 0x41, 0xd5, 0x34, 0xd1, 0x3b, 0x8c, 0x61, 0x53, 0x58, 0xae, + 0x57, 0x48, 0x54, 0x50, 0x35, 0x41, 0xe4, 0x1a, 0xdf, 0x86, 0x2d, 0xee, 0xfa, 0x03, 0x5a, 0xd8, + 0xac, 0xa0, 0x6a, 0xb6, 0x51, 0xac, 0xa9, 0x2a, 0x6a, 0xb3, 0x2a, 0x6a, 0xbd, 0x59, 0x15, 0x44, + 0x81, 0xe6, 0xb7, 0x08, 0xb2, 0x51, 0x52, 0xea, 0xd1, 0x81, 0x60, 0x01, 0xae, 0x43, 0x96, 0xd3, + 0xe0, 0xd4, 0x1d, 0xd0, 0x13, 0xd7, 0x56, 0x52, 0x33, 0xcd, 0x9d, 0x70, 0x5a, 0x86, 0xae, 0x7a, + 0xdc, 0x6e, 0x71, 0x02, 0x1a, 0x69, 0xdb, 0x1c, 0xdf, 0x84, 0xb4, 0xcf, 0x6c, 0x45, 0x1b, 0x92, + 0xce, 0x86, 0xd3, 0x72, 0xea, 0x90, 0xd9, 0x12, 0x4d, 0x45, 0x87, 0x9a, 0x13, 0x16, 0x1f, 0x4a, + 0x2e, 0xb1, 0xe0, 0x7a, 0x16, 0x1f, 0x4a, 0x2e, 0x3a, 0x6c, 0xdb, 0xdc, 0x7c, 0x8c, 0x00, 0x3a, + 0xcc, 0x79, 0x9f, 0xf9, 0x82, 0x7e, 0x2e, 0xf0, 0x2d, 0x80, 0x85, 0x9e, 0x02, 0xaa, 0xa0, 0x6a, + 0xa6, 0xb9, 0x1d, 0x4e, 0xcb, 0x99, 0xb9, 0x1c, 0x92, 0x99, 0xab, 0xc1, 0x37, 0x20, 0xa5, 0xc5, + 0x48, 0xb3, 0x32, 0x4d, 0x08, 0xa7, 0xe5, 0xa4, 0xd2, 0x42, 0x92, 0x4a, 0x4a, 0x04, 0x69, 0x25, + 0xd2, 0x3b, 0x0d, 0x29, 0x21, 0x24, 0xa9, 0x74, 0x98, 0x77, 0x20, 0xd5, 0x61, 0xce, 0x7d, 0x21, + 0x02, 0x9c, 0x83, 0xc4, 0x90, 0x7e, 0xa1, 0x72, 0x93, 0x68, 0x89, 0xf7, 0x60, 0xeb, 0xd4, 0xf2, + 0x26, 0x54, 0x25, 0x21, 0x6a, 0x63, 0x9e, 0x1b, 0x52, 0xf9, 0x43, 0xca, 0xb9, 0xe5, 0x50, 0xfc, + 0x2e, 0xa4, 0x06, 0xaa, 0x08, 0x19, 0x9a, 0x6d, 0x94, 0xd6, 0x5c, 0xb8, 0x2e, 0xb5, 0xb9, 0x79, + 0x31, 0x2d, 0x6f, 0x90, 0x59, 0x10, 0x7e, 0x07, 0x32, 0xf3, 0x9e, 0x93, 0x89, 0x9e, 0x7f, 0x9f, + 0x0b, 0x18, 0xbf, 0x0d, 0x49, 0xd5, 0x3c, 0xb2, 0xbe, 0x17, 0x76, 0x9a, 0x86, 0xa3, 0x86, 0xb2, + 0x2d, 0x61, 0xc9, 0xde, 0xb9, 0x42, 0xe4, 0x1a, 0xdf, 0x85, 0x2d, 0x4b, 0x88, 0x80, 0x17, 0xb6, + 0x2a, 0x89, 0x6a, 0xb6, 0xf1, 0xda, 0x9a, 0x37, 0x45, 0x3e, 0x69, 0xfd, 0x8a, 0x37, 0x7f, 0x40, + 0xb0, 0xa7, 0xc7, 0xa0, 0x4f, 0x3b, 0xcc, 0xe1, 0x84, 0x7e, 0x36, 0xa1, 0x5c, 0xe0, 0x7b, 0x90, + 0xe6, 0xba, 0xd9, 0xb4, 0x2f, 0xe5, 0x75, 0xf2, 0x34, 0x46, 0xe6, 0x01, 0xb8, 0x05, 0x29, 0xa6, + 0xe6, 0x49, 0x3b, 0x72, 0xb0, 0x2e, 0x76, 0x79, 0x02, 0xc9, 0x2c, 0xd4, 0xfc, 0xe4, 0x3f, 0xd2, + 0x66, 0x37, 0xf6, 0x1e, 0xa4, 0x47, 0x6a, 0xa9, 0x1a, 0x7f, 0xfd, 0x95, 0xe9, 0x08, 0x5d, 0xf2, + 0x3c, 0xca, 0x7c, 0x1d, 0x8a, 0x1d, 0x97, 0x0b, 0xea, 0xc7, 0xf3, 0xcf, 0x4a, 0x37, 0x7f, 0x47, + 0x90, 0x8f, 0x1f, 0xcc, 0xf2, 0xee, 0x83, 0x31, 0xef, 0xed, 0x64, 0x38, 0x2d, 0x1b, 0xed, 0x16, + 0x31, 0x5c, 0xfb, 0x92, 0x55, 0xc6, 0x2b, 0x58, 0x95, 0x78, 0x69, 0xab, 0xa2, 0x4e, 0x1f, 0x78, + 0x8c, 0xab, 0x0f, 0x4a, 0x9a, 0xa8, 0x8d, 0xf9, 0x13, 0x02, 0xfc, 0xd1, 0xa4, 0xef, 0xb9, 0xfc, + 0xd3, 0xb8, 0x7f, 0xf7, 0x60, 0x97, 0xc7, 0x5e, 0xb6, 0x18, 0x58, 0x1c, 0x4e, 0xcb, 0x3b, 0xf1, + 0x3c, 0xed, 0x16, 0xd9, 0x89, 0xa3, 0x6d, 0xfb, 0x92, 0xf9, 0xc6, 0xcb, 0x98, 0xbf, 0xd0, 0x9a, + 0x88, 0x6b, 0xbd, 0x06, 0xf9, 0x98, 0x54, 0x42, 0xf9, 0x98, 0xf9, 0x9c, 0x1e, 0x3c, 0x45, 0x90, + 0x99, 0x8f, 0x00, 0xbe, 0x05, 0xb8, 0x73, 0xf4, 0xc1, 0x49, 0xb7, 0x47, 0x1e, 0xdc, 0x7f, 0x78, + 0x72, 0x7c, 0xf8, 0xe1, 0xe1, 0xd1, 0xc7, 0x87, 0xb9, 0x8d, 0xe2, 0xde, 0xf9, 0x93, 0x4a, 0x6e, + 0x8e, 0x1d, 0xfb, 0x43, 0x9f, 0x9d, 0xf9, 0xf8, 0x00, 0xae, 0xc6, 0xe8, 0x6e, 0xaf, 0x75, 0x74, + 0xdc, 0xcb, 0xa1, 0x62, 0xfe, 0xfc, 0x49, 0x65, 0x77, 0x0e, 0x77, 0x85, 0xcd, 0x26, 0x62, 0x99, + 0x7d, 0x40, 0x48, 0xce, 0x58, 0x66, 0x69, 0x10, 0x14, 0xaf, 0x7e, 0xf3, 0x63, 0x69, 0xe3, 0xb7, + 0xa7, 0xa5, 0x85, 0xb0, 0xc6, 0x63, 0x04, 0x9b, 0x91, 0x6e, 0xfc, 0x25, 0x6c, 0x5f, 0xea, 0x59, + 0x5c, 0x5d, 0xe5, 0xce, 0xaa, 0x89, 0x2b, 0xbe, 0x98, 0xd4, 0x8e, 0x9a, 0xd7, 0xfe, 0xf8, 0xe5, + 0x9f, 0xef, 0x8d, 0x5d, 0xd8, 0x96, 0xe4, 0x9b, 0x23, 0xcb, 0xb7, 0x1c, 0x1a, 0xdc, 0x46, 0x8d, + 0x9f, 0x0d, 0xe9, 0x56, 0x53, 0xfe, 0x96, 0xe2, 0xef, 0x10, 0xe4, 0x57, 0xb4, 0x39, 0xae, 0xad, + 0xbc, 0xb0, 0xb5, 0xf3, 0x50, 0x7c, 0xe3, 0x39, 0xc2, 0xe2, 0x03, 0x62, 0xde, 0x90, 0xba, 0xae, + 0xc3, 0x15, 0xa5, 0xeb, 0x8c, 0x05, 0x43, 0x1a, 0x2c, 0xa9, 0xc4, 0x5f, 0x23, 0xc8, 0xc6, 0xee, + 0x1a, 0xdf, 0x5c, 0xf5, 0xfe, 0xe5, 0xbe, 0x5d, 0xad, 0x63, 0x45, 0xd3, 0xfc, 0x2f, 0x1d, 0x55, + 0xd4, 0x2c, 0x5c, 0x3c, 0x2b, 0x6d, 0xfc, 0xf5, 0xac, 0xb4, 0xf1, 0x55, 0x58, 0x42, 0x17, 0x61, + 0x09, 0xfd, 0x19, 0x96, 0xd0, 0xdf, 0x61, 0x09, 0xf5, 0x93, 0xf2, 0xc3, 0xfd, 0xd6, 0xbf, 0x01, + 0x00, 0x00, 0xff, 0xff, 0xf8, 0x4f, 0xdd, 0x74, 0x99, 0x08, 0x00, 0x00, } diff --git a/vendor/github.com/docker/swarmkit/api/logbroker.proto b/vendor/github.com/docker/swarmkit/api/logbroker.proto index cedf6d118f..c820a96aba 100644 --- a/vendor/github.com/docker/swarmkit/api/logbroker.proto +++ b/vendor/github.com/docker/swarmkit/api/logbroker.proto @@ -66,6 +66,12 @@ message LogContext { string task_id = 3; } +// LogAttr is an extra key/value pair that may be have been set by users +message LogAttr { + string key = 1; + string value = 2; +} + // LogMessage message LogMessage { // Context identifies the source of the log message. @@ -80,6 +86,10 @@ message LogMessage { // Data is the raw log message, as generated by the application. bytes data = 4; + + // Attrs is a list of key value pairs representing additional log details + // that may have been returned from the logger + repeated LogAttr attrs = 5 [(gogoproto.nullable) = false]; } // Logs defines the methods for retrieving task logs messages from a cluster. diff --git a/vendor/github.com/docker/swarmkit/api/types.pb.go b/vendor/github.com/docker/swarmkit/api/types.pb.go index bbf1b87602..53a39aed08 100644 --- a/vendor/github.com/docker/swarmkit/api/types.pb.go +++ b/vendor/github.com/docker/swarmkit/api/types.pb.go @@ -17,7 +17,7 @@ health.proto resource.proto logbroker.proto - store.proto + watch.proto It has these top-level messages: Version @@ -199,6 +199,7 @@ LogSubscriptionOptions LogSelector LogContext + LogAttr LogMessage SubscribeLogsRequest SubscribeLogsMessage @@ -1577,6 +1578,10 @@ type Placement struct { // such as topology. They are provided in order from highest to lowest // precedence. Preferences []*PlacementPreference `protobuf:"bytes,2,rep,name=preferences" json:"preferences,omitempty"` + // Platforms stores all the platforms that the image can run on. + // This field is used in the platform filter for scheduling. If empty, + // then the platform filter is off, meaning there are no scheduling restrictions. + Platforms []*Platform `protobuf:"bytes,3,rep,name=platforms" json:"platforms,omitempty"` } func (m *Placement) Reset() { *m = Placement{} } @@ -3076,6 +3081,14 @@ func (m *Placement) CopyFrom(src interface{}) { } } + if o.Platforms != nil { + m.Platforms = make([]*Platform, len(o.Platforms)) + for i := range m.Platforms { + m.Platforms[i] = &Platform{} + github_com_docker_swarmkit_api_deepcopy.Copy(m.Platforms[i], o.Platforms[i]) + } + } + } func (m *JoinTokens) Copy() *JoinTokens { @@ -5168,6 +5181,18 @@ func (m *Placement) MarshalTo(dAtA []byte) (int, error) { i += n } } + if len(m.Platforms) > 0 { + for _, msg := range m.Platforms { + dAtA[i] = 0x1a + i++ + i = encodeVarintTypes(dAtA, i, uint64(msg.Size())) + n, err := msg.MarshalTo(dAtA[i:]) + if err != nil { + return 0, err + } + i += n + } + } return i, nil } @@ -6621,6 +6646,12 @@ func (m *Placement) Size() (n int) { n += 1 + l + sovTypes(uint64(l)) } } + if len(m.Platforms) > 0 { + for _, e := range m.Platforms { + l = e.Size() + n += 1 + l + sovTypes(uint64(l)) + } + } return n } @@ -7539,6 +7570,7 @@ func (this *Placement) String() string { s := strings.Join([]string{`&Placement{`, `Constraints:` + fmt.Sprintf("%v", this.Constraints) + `,`, `Preferences:` + strings.Replace(fmt.Sprintf("%v", this.Preferences), "PlacementPreference", "PlacementPreference", 1) + `,`, + `Platforms:` + strings.Replace(fmt.Sprintf("%v", this.Platforms), "Platform", "Platform", 1) + `,`, `}`, }, "") return s @@ -13685,6 +13717,37 @@ func (m *Placement) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Platforms", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTypes + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTypes + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Platforms = append(m.Platforms, &Platform{}) + if err := m.Platforms[len(m.Platforms)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTypes(dAtA[iNdEx:]) @@ -16020,296 +16083,297 @@ var ( func init() { proto.RegisterFile("types.proto", fileDescriptorTypes) } var fileDescriptorTypes = []byte{ - // 4643 bytes of a gzipped FileDescriptorProto + // 4658 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x5a, 0x4d, 0x6c, 0x23, 0x47, - 0x76, 0x16, 0x7f, 0x45, 0x3e, 0x52, 0x52, 0x4f, 0x8d, 0x76, 0x56, 0xc3, 0x1d, 0x4b, 0x74, 0xdb, - 0xb3, 0xf6, 0x7a, 0x1d, 0x7a, 0x7e, 0x76, 0x17, 0x63, 0x3b, 0x6b, 0x9b, 0x7f, 0x1a, 0x71, 0x47, - 0x22, 0x89, 0x22, 0x35, 0xb3, 0x3e, 0x24, 0x8d, 0x56, 0x77, 0x89, 0x6a, 0xab, 0xd9, 0xc5, 0x74, - 0x17, 0xa5, 0x61, 0x7e, 0x90, 0x41, 0x0e, 0x49, 0xa0, 0x53, 0x72, 0x0b, 0x10, 0x28, 0x97, 0xe4, - 0x14, 0xe4, 0x96, 0x43, 0x90, 0x5c, 0xe2, 0x00, 0x39, 0xf8, 0x96, 0x4d, 0x02, 0x04, 0x8b, 0x04, - 0x50, 0x62, 0x1d, 0x72, 0x0b, 0x92, 0xcb, 0x22, 0x97, 0x04, 0x08, 0xea, 0xa7, 0x9b, 0x4d, 0x0d, - 0x25, 0x8d, 0xe3, 0xbd, 0x48, 0x5d, 0xef, 0x7d, 0xef, 0xd5, 0xab, 0x57, 0xaf, 0xaa, 0xde, 0xab, - 0x22, 0x14, 0xd8, 0x64, 0x44, 0x82, 0xca, 0xc8, 0xa7, 0x8c, 0x22, 0x64, 0x53, 0xeb, 0x90, 0xf8, - 0x95, 0xe0, 0xd8, 0xf4, 0x87, 0x87, 0x0e, 0xab, 0x1c, 0xdd, 0x2f, 0x6d, 0x0c, 0x28, 0x1d, 0xb8, - 0xe4, 0x3d, 0x81, 0xd8, 0x1b, 0xef, 0xbf, 0xc7, 0x9c, 0x21, 0x09, 0x98, 0x39, 0x1c, 0x49, 0xa1, - 0xd2, 0xfa, 0x45, 0x80, 0x3d, 0xf6, 0x4d, 0xe6, 0x50, 0x4f, 0xf1, 0x57, 0x07, 0x74, 0x40, 0xc5, - 0xe7, 0x7b, 0xfc, 0x4b, 0x52, 0xf5, 0x0d, 0x58, 0x7c, 0x4a, 0xfc, 0xc0, 0xa1, 0x1e, 0x5a, 0x85, - 0x8c, 0xe3, 0xd9, 0xe4, 0xf9, 0x5a, 0xa2, 0x9c, 0x78, 0x3b, 0x8d, 0x65, 0x43, 0xbf, 0x07, 0xd0, - 0xe2, 0x1f, 0x4d, 0x8f, 0xf9, 0x13, 0xa4, 0x41, 0xea, 0x90, 0x4c, 0x04, 0x22, 0x8f, 0xf9, 0x27, - 0xa7, 0x1c, 0x99, 0xee, 0x5a, 0x52, 0x52, 0x8e, 0x4c, 0x57, 0xff, 0x32, 0x01, 0x85, 0xaa, 0xe7, - 0x51, 0x26, 0x7a, 0x0f, 0x10, 0x82, 0xb4, 0x67, 0x0e, 0x89, 0x12, 0x12, 0xdf, 0xa8, 0x0e, 0x59, - 0xd7, 0xdc, 0x23, 0x6e, 0xb0, 0x96, 0x2c, 0xa7, 0xde, 0x2e, 0x3c, 0xf8, 0x6e, 0xe5, 0xe5, 0x21, - 0x57, 0x62, 0x4a, 0x2a, 0xdb, 0x02, 0x2d, 0x8c, 0xc0, 0x4a, 0x14, 0x7d, 0x04, 0x8b, 0x8e, 0x67, - 0x3b, 0x16, 0x09, 0xd6, 0xd2, 0x42, 0xcb, 0xfa, 0x3c, 0x2d, 0x53, 0xeb, 0x6b, 0xe9, 0x2f, 0xce, - 0x36, 0x16, 0x70, 0x28, 0x54, 0x7a, 0x1f, 0x0a, 0x31, 0xb5, 0x73, 0xc6, 0xb6, 0x0a, 0x99, 0x23, - 0xd3, 0x1d, 0x13, 0x35, 0x3a, 0xd9, 0xf8, 0x20, 0xf9, 0x28, 0xa1, 0x7f, 0x0a, 0x79, 0x4c, 0x02, - 0x3a, 0xf6, 0x2d, 0x12, 0xa0, 0xef, 0x40, 0xde, 0x33, 0x3d, 0x6a, 0x58, 0xa3, 0x71, 0x20, 0xc4, - 0x53, 0xb5, 0xe2, 0xf9, 0xd9, 0x46, 0xae, 0x6d, 0x7a, 0xb4, 0xde, 0xdd, 0x0d, 0x70, 0x8e, 0xb3, - 0xeb, 0xa3, 0x71, 0x80, 0x5e, 0x87, 0xe2, 0x90, 0x0c, 0xa9, 0x3f, 0x31, 0xf6, 0x26, 0x8c, 0x04, - 0x42, 0x71, 0x0a, 0x17, 0x24, 0xad, 0xc6, 0x49, 0xfa, 0xef, 0x25, 0x60, 0x35, 0xd4, 0x8d, 0xc9, - 0xaf, 0x8c, 0x1d, 0x9f, 0x0c, 0x89, 0xc7, 0x02, 0xf4, 0x7d, 0xc8, 0xba, 0xce, 0xd0, 0x61, 0xb2, - 0x8f, 0xc2, 0x83, 0xd7, 0xe6, 0x8d, 0x36, 0xb2, 0x0a, 0x2b, 0x30, 0xaa, 0x42, 0xd1, 0x27, 0x01, - 0xf1, 0x8f, 0xa4, 0x27, 0x45, 0x97, 0xd7, 0x0a, 0xcf, 0x88, 0xe8, 0x9b, 0x90, 0xeb, 0xba, 0x26, - 0xdb, 0xa7, 0xfe, 0x10, 0xe9, 0x50, 0x34, 0x7d, 0xeb, 0xc0, 0x61, 0xc4, 0x62, 0x63, 0x3f, 0x9c, - 0xd5, 0x19, 0x1a, 0xba, 0x05, 0x49, 0x2a, 0x3b, 0xca, 0xd7, 0xb2, 0xe7, 0x67, 0x1b, 0xc9, 0x4e, - 0x0f, 0x27, 0x69, 0xa0, 0x7f, 0x08, 0x37, 0xba, 0xee, 0x78, 0xe0, 0x78, 0x0d, 0x12, 0x58, 0xbe, - 0x33, 0xe2, 0xda, 0x79, 0x78, 0xf0, 0xd8, 0x0f, 0xc3, 0x83, 0x7f, 0x47, 0x21, 0x93, 0x9c, 0x86, - 0x8c, 0xfe, 0x3b, 0x49, 0xb8, 0xd1, 0xf4, 0x06, 0x8e, 0x47, 0xe2, 0xd2, 0x77, 0x61, 0x99, 0x08, - 0xa2, 0x71, 0x24, 0xc3, 0x58, 0xe9, 0x59, 0x92, 0xd4, 0x30, 0xb6, 0x5b, 0x17, 0xe2, 0xed, 0xfe, - 0xbc, 0xe1, 0xbf, 0xa4, 0x7d, 0x6e, 0xd4, 0x35, 0x61, 0x71, 0x24, 0x06, 0x11, 0xac, 0xa5, 0x84, - 0xae, 0xbb, 0xf3, 0x74, 0xbd, 0x34, 0xce, 0x30, 0xf8, 0x94, 0xec, 0xd7, 0x09, 0xbe, 0x3f, 0x4b, - 0xc2, 0x4a, 0x9b, 0xda, 0x33, 0x7e, 0x28, 0x41, 0xee, 0x80, 0x06, 0x2c, 0xb6, 0xd0, 0xa2, 0x36, - 0x7a, 0x04, 0xb9, 0x91, 0x9a, 0x3e, 0x35, 0xfb, 0x77, 0xe6, 0x9b, 0x2c, 0x31, 0x38, 0x42, 0xa3, - 0x0f, 0x21, 0xef, 0x87, 0x31, 0xb1, 0x96, 0x7a, 0x95, 0xc0, 0x99, 0xe2, 0xd1, 0x0f, 0x21, 0x2b, - 0x27, 0x61, 0x2d, 0x2d, 0x24, 0xef, 0xbe, 0x92, 0xcf, 0xb1, 0x12, 0x42, 0x8f, 0x21, 0xc7, 0xdc, - 0xc0, 0x70, 0xbc, 0x7d, 0xba, 0x96, 0x11, 0x0a, 0x36, 0xe6, 0x29, 0xe0, 0x8e, 0xe8, 0x6f, 0xf7, - 0x5a, 0xde, 0x3e, 0xad, 0x15, 0xce, 0xcf, 0x36, 0x16, 0x55, 0x03, 0x2f, 0x32, 0x37, 0xe0, 0x1f, - 0xfa, 0xef, 0x27, 0xa0, 0x10, 0x43, 0xa1, 0xd7, 0x00, 0x98, 0x3f, 0x0e, 0x98, 0xe1, 0x53, 0xca, - 0x84, 0xb3, 0x8a, 0x38, 0x2f, 0x28, 0x98, 0x52, 0x86, 0x2a, 0x70, 0xd3, 0x22, 0x3e, 0x33, 0x9c, - 0x20, 0x18, 0x13, 0xdf, 0x08, 0xc6, 0x7b, 0x9f, 0x11, 0x8b, 0x09, 0xc7, 0x15, 0xf1, 0x0d, 0xce, - 0x6a, 0x09, 0x4e, 0x4f, 0x32, 0xd0, 0x43, 0xb8, 0x15, 0xc7, 0x8f, 0xc6, 0x7b, 0xae, 0x63, 0x19, - 0x7c, 0x32, 0x53, 0x42, 0xe4, 0xe6, 0x54, 0xa4, 0x2b, 0x78, 0x4f, 0xc8, 0x44, 0xff, 0x69, 0x02, - 0x34, 0x6c, 0xee, 0xb3, 0x1d, 0x32, 0xdc, 0x23, 0x7e, 0x8f, 0x99, 0x6c, 0x1c, 0xa0, 0x5b, 0x90, - 0x75, 0x89, 0x69, 0x13, 0x5f, 0x18, 0x95, 0xc3, 0xaa, 0x85, 0x76, 0xf9, 0x0a, 0x36, 0xad, 0x03, - 0x73, 0xcf, 0x71, 0x1d, 0x36, 0x11, 0xa6, 0x2c, 0xcf, 0x0f, 0xe1, 0x8b, 0x3a, 0x2b, 0x38, 0x26, - 0x88, 0x67, 0xd4, 0xa0, 0x35, 0x58, 0x1c, 0x92, 0x20, 0x30, 0x07, 0x44, 0x58, 0x9a, 0xc7, 0x61, - 0x53, 0xff, 0x10, 0x8a, 0x71, 0x39, 0x54, 0x80, 0xc5, 0xdd, 0xf6, 0x93, 0x76, 0xe7, 0x59, 0x5b, - 0x5b, 0x40, 0x2b, 0x50, 0xd8, 0x6d, 0xe3, 0x66, 0xb5, 0xbe, 0x55, 0xad, 0x6d, 0x37, 0xb5, 0x04, - 0x5a, 0x82, 0xfc, 0xb4, 0x99, 0xd4, 0xff, 0x3c, 0x01, 0xc0, 0xdd, 0xad, 0x06, 0xf5, 0x01, 0x64, - 0x02, 0x66, 0x32, 0x19, 0x95, 0xcb, 0x0f, 0xde, 0xbc, 0x6c, 0x0e, 0x95, 0xbd, 0xfc, 0x1f, 0xc1, - 0x52, 0x24, 0x6e, 0x61, 0x72, 0xc6, 0x42, 0xbe, 0x41, 0x98, 0xb6, 0xed, 0x2b, 0xc3, 0xc5, 0xb7, - 0xfe, 0x21, 0x64, 0x84, 0xf4, 0xac, 0xb9, 0x39, 0x48, 0x37, 0xf8, 0x57, 0x02, 0xe5, 0x21, 0x83, - 0x9b, 0xd5, 0xc6, 0xa7, 0x5a, 0x12, 0x69, 0x50, 0x6c, 0xb4, 0x7a, 0xf5, 0x4e, 0xbb, 0xdd, 0xac, - 0xf7, 0x9b, 0x0d, 0x2d, 0xa5, 0xdf, 0x85, 0x4c, 0x6b, 0xc8, 0x35, 0xdf, 0xe1, 0x21, 0xbf, 0x4f, - 0x7c, 0xe2, 0x59, 0xe1, 0x4a, 0x9a, 0x12, 0xf4, 0x9f, 0xe4, 0x21, 0xb3, 0x43, 0xc7, 0x1e, 0x43, - 0x0f, 0x62, 0xdb, 0xd6, 0xf2, 0xfc, 0x93, 0x47, 0x00, 0x2b, 0xfd, 0xc9, 0x88, 0xa8, 0x6d, 0xed, - 0x16, 0x64, 0xe5, 0xe2, 0x50, 0xc3, 0x51, 0x2d, 0x4e, 0x67, 0xa6, 0x3f, 0x20, 0x4c, 0x8d, 0x47, - 0xb5, 0xd0, 0xdb, 0x90, 0xf3, 0x89, 0x69, 0x53, 0xcf, 0x9d, 0x88, 0x35, 0x94, 0x93, 0xe7, 0x0a, - 0x26, 0xa6, 0xdd, 0xf1, 0xdc, 0x09, 0x8e, 0xb8, 0x68, 0x0b, 0x8a, 0x7b, 0x8e, 0x67, 0x1b, 0x74, - 0x24, 0x37, 0xf9, 0xcc, 0xe5, 0x2b, 0x4e, 0x5a, 0x55, 0x73, 0x3c, 0xbb, 0x23, 0xc1, 0xb8, 0xb0, - 0x37, 0x6d, 0xa0, 0x36, 0x2c, 0x1f, 0x51, 0x77, 0x3c, 0x24, 0x91, 0xae, 0xac, 0xd0, 0xf5, 0xd6, - 0xe5, 0xba, 0x9e, 0x0a, 0x7c, 0xa8, 0x6d, 0xe9, 0x28, 0xde, 0x44, 0x4f, 0x60, 0x89, 0x0d, 0x47, - 0xfb, 0x41, 0xa4, 0x6e, 0x51, 0xa8, 0xfb, 0xf6, 0x15, 0x0e, 0xe3, 0xf0, 0x50, 0x5b, 0x91, 0xc5, - 0x5a, 0xa5, 0xdf, 0x4a, 0x41, 0x21, 0x66, 0x39, 0xea, 0x41, 0x61, 0xe4, 0xd3, 0x91, 0x39, 0x10, - 0x07, 0x95, 0x9a, 0x8b, 0xfb, 0xaf, 0x34, 0xea, 0x4a, 0x77, 0x2a, 0x88, 0xe3, 0x5a, 0xf4, 0xd3, - 0x24, 0x14, 0x62, 0x4c, 0xf4, 0x0e, 0xe4, 0x70, 0x17, 0xb7, 0x9e, 0x56, 0xfb, 0x4d, 0x6d, 0xa1, - 0x74, 0xe7, 0xe4, 0xb4, 0xbc, 0x26, 0xb4, 0xc5, 0x15, 0x74, 0x7d, 0xe7, 0x88, 0x87, 0xde, 0xdb, - 0xb0, 0x18, 0x42, 0x13, 0xa5, 0x6f, 0x9d, 0x9c, 0x96, 0xbf, 0x79, 0x11, 0x1a, 0x43, 0xe2, 0xde, - 0x56, 0x15, 0x37, 0x1b, 0x5a, 0x72, 0x3e, 0x12, 0xf7, 0x0e, 0x4c, 0x9f, 0xd8, 0xe8, 0xdb, 0x90, - 0x55, 0xc0, 0x54, 0xa9, 0x74, 0x72, 0x5a, 0xbe, 0x75, 0x11, 0x38, 0xc5, 0xe1, 0xde, 0x76, 0xf5, - 0x69, 0x53, 0x4b, 0xcf, 0xc7, 0xe1, 0x9e, 0x6b, 0x1e, 0x11, 0xf4, 0x26, 0x64, 0x24, 0x2c, 0x53, - 0xba, 0x7d, 0x72, 0x5a, 0xfe, 0xc6, 0x4b, 0xea, 0x38, 0xaa, 0xb4, 0xf6, 0xbb, 0x7f, 0xbc, 0xbe, - 0xf0, 0x57, 0x7f, 0xb2, 0xae, 0x5d, 0x64, 0x97, 0xfe, 0x27, 0x01, 0x4b, 0x33, 0x53, 0x8e, 0x74, - 0xc8, 0x7a, 0xd4, 0xa2, 0x23, 0x79, 0x7e, 0xe5, 0x6a, 0x70, 0x7e, 0xb6, 0x91, 0x6d, 0xd3, 0x3a, - 0x1d, 0x4d, 0xb0, 0xe2, 0xa0, 0x27, 0x17, 0x4e, 0xe0, 0x87, 0xaf, 0x18, 0x4f, 0x73, 0xcf, 0xe0, - 0x8f, 0x61, 0xc9, 0xf6, 0x9d, 0x23, 0xe2, 0x1b, 0x16, 0xf5, 0xf6, 0x9d, 0x81, 0x3a, 0x9b, 0x4a, - 0xf3, 0x74, 0x36, 0x04, 0x10, 0x17, 0xa5, 0x40, 0x5d, 0xe0, 0xbf, 0xc6, 0xe9, 0x5b, 0x7a, 0x0a, - 0xc5, 0x78, 0x84, 0xf2, 0xe3, 0x24, 0x70, 0x7e, 0x95, 0xa8, 0x84, 0x4e, 0xa4, 0x7f, 0x38, 0xcf, - 0x29, 0x22, 0x9d, 0x43, 0x6f, 0x41, 0x7a, 0x48, 0x6d, 0xa9, 0x67, 0xa9, 0x76, 0x93, 0x27, 0x01, - 0xff, 0x7c, 0xb6, 0x51, 0xa0, 0x41, 0x65, 0xd3, 0x71, 0xc9, 0x0e, 0xb5, 0x09, 0x16, 0x00, 0xfd, - 0x08, 0xd2, 0x7c, 0xab, 0x40, 0xdf, 0x82, 0x74, 0xad, 0xd5, 0x6e, 0x68, 0x0b, 0xa5, 0x1b, 0x27, - 0xa7, 0xe5, 0x25, 0xe1, 0x12, 0xce, 0xe0, 0xb1, 0x8b, 0x36, 0x20, 0xfb, 0xb4, 0xb3, 0xbd, 0xbb, - 0xc3, 0xc3, 0xeb, 0xe6, 0xc9, 0x69, 0x79, 0x25, 0x62, 0x4b, 0xa7, 0xa1, 0xd7, 0x20, 0xd3, 0xdf, - 0xe9, 0x6e, 0xf6, 0xb4, 0x64, 0x09, 0x9d, 0x9c, 0x96, 0x97, 0x23, 0xbe, 0xb0, 0xb9, 0x74, 0x43, - 0xcd, 0x6a, 0x3e, 0xa2, 0xeb, 0x3f, 0x4b, 0xc2, 0x12, 0xe6, 0x95, 0x84, 0xcf, 0xba, 0xd4, 0x75, - 0xac, 0x09, 0xea, 0x42, 0xde, 0xa2, 0x9e, 0xed, 0xc4, 0xd6, 0xd4, 0x83, 0x4b, 0x4e, 0xfd, 0xa9, - 0x54, 0xd8, 0xaa, 0x87, 0x92, 0x78, 0xaa, 0x04, 0xbd, 0x07, 0x19, 0x9b, 0xb8, 0xe6, 0x44, 0xa5, - 0x1f, 0xb7, 0x2b, 0xb2, 0x56, 0xa9, 0x84, 0xb5, 0x4a, 0xa5, 0xa1, 0x6a, 0x15, 0x2c, 0x71, 0x22, - 0x4f, 0x36, 0x9f, 0x1b, 0x26, 0x63, 0x64, 0x38, 0x62, 0x32, 0xf7, 0x48, 0xe3, 0xc2, 0xd0, 0x7c, - 0x5e, 0x55, 0x24, 0x74, 0x1f, 0xb2, 0xc7, 0x8e, 0x67, 0xd3, 0x63, 0x95, 0x5e, 0x5c, 0xa1, 0x54, - 0x01, 0xf5, 0x13, 0x7e, 0xea, 0x5e, 0x30, 0x93, 0xfb, 0xbb, 0xdd, 0x69, 0x37, 0x43, 0x7f, 0x2b, - 0x7e, 0xc7, 0x6b, 0x53, 0x8f, 0xaf, 0x15, 0xe8, 0xb4, 0x8d, 0xcd, 0x6a, 0x6b, 0x7b, 0x17, 0x73, - 0x9f, 0xaf, 0x9e, 0x9c, 0x96, 0xb5, 0x08, 0xb2, 0x69, 0x3a, 0x2e, 0xcf, 0x77, 0x6f, 0x43, 0xaa, - 0xda, 0xfe, 0x54, 0x4b, 0x96, 0xb4, 0x93, 0xd3, 0x72, 0x31, 0x62, 0x57, 0xbd, 0xc9, 0x74, 0x19, - 0x5d, 0xec, 0x57, 0xff, 0xbb, 0x14, 0x14, 0x77, 0x47, 0xb6, 0xc9, 0x88, 0x8c, 0x49, 0x54, 0x86, - 0xc2, 0xc8, 0xf4, 0x4d, 0xd7, 0x25, 0xae, 0x13, 0x0c, 0x55, 0x15, 0x16, 0x27, 0xa1, 0xf7, 0x5f, - 0xd5, 0x8d, 0xb5, 0x1c, 0x8f, 0xb3, 0x3f, 0xf8, 0xd7, 0x8d, 0x44, 0xe8, 0xd0, 0x5d, 0x58, 0xde, - 0x97, 0xd6, 0x1a, 0xa6, 0x25, 0x26, 0x36, 0x25, 0x26, 0xb6, 0x32, 0x6f, 0x62, 0xe3, 0x66, 0x55, - 0xd4, 0x20, 0xab, 0x42, 0x0a, 0x2f, 0xed, 0xc7, 0x9b, 0xe8, 0x21, 0x2c, 0x0e, 0xa9, 0xe7, 0x30, - 0xea, 0x5f, 0x3f, 0x0b, 0x21, 0x12, 0xbd, 0x03, 0x37, 0xf8, 0xe4, 0x86, 0xf6, 0x08, 0xb6, 0x38, - 0xb1, 0x92, 0x78, 0x65, 0x68, 0x3e, 0x57, 0x1d, 0x62, 0x4e, 0x46, 0x35, 0xc8, 0x50, 0x9f, 0xa7, - 0x44, 0x59, 0x61, 0xee, 0xbb, 0xd7, 0x9a, 0x2b, 0x1b, 0x1d, 0x2e, 0x83, 0xa5, 0xa8, 0xfe, 0x03, - 0x58, 0x9a, 0x19, 0x04, 0xcf, 0x04, 0xba, 0xd5, 0xdd, 0x5e, 0x53, 0x5b, 0x40, 0x45, 0xc8, 0xd5, - 0x3b, 0xed, 0x7e, 0xab, 0xbd, 0xcb, 0x53, 0x99, 0x22, 0xe4, 0x70, 0x67, 0x7b, 0xbb, 0x56, 0xad, - 0x3f, 0xd1, 0x92, 0x7a, 0x05, 0x0a, 0x31, 0x6d, 0x68, 0x19, 0xa0, 0xd7, 0xef, 0x74, 0x8d, 0xcd, - 0x16, 0xee, 0xf5, 0x65, 0x22, 0xd4, 0xeb, 0x57, 0x71, 0x5f, 0x11, 0x12, 0xfa, 0x7f, 0x26, 0xc3, - 0x19, 0x55, 0xb9, 0x4f, 0x6d, 0x36, 0xf7, 0xb9, 0xc2, 0x78, 0x95, 0xfd, 0x4c, 0x1b, 0x51, 0x0e, - 0xf4, 0x3e, 0x80, 0x08, 0x1c, 0x62, 0x1b, 0x26, 0x53, 0x13, 0x5f, 0x7a, 0xc9, 0xc9, 0xfd, 0xf0, - 0x32, 0x00, 0xe7, 0x15, 0xba, 0xca, 0xd0, 0x0f, 0xa1, 0x68, 0xd1, 0xe1, 0xc8, 0x25, 0x4a, 0x38, - 0x75, 0xad, 0x70, 0x21, 0xc2, 0x57, 0x59, 0x3c, 0xfb, 0x4a, 0xcf, 0xe6, 0x87, 0xbf, 0x9d, 0x08, - 0x3d, 0x33, 0x27, 0xe1, 0x2a, 0x42, 0x6e, 0xb7, 0xdb, 0xa8, 0xf6, 0x5b, 0xed, 0xc7, 0x5a, 0x02, - 0x01, 0x64, 0x85, 0xab, 0x1b, 0x5a, 0x92, 0x27, 0x8a, 0xf5, 0xce, 0x4e, 0x77, 0xbb, 0x29, 0x52, - 0x2e, 0xb4, 0x0a, 0x5a, 0xe8, 0x6c, 0x43, 0x38, 0xb2, 0xd9, 0xd0, 0xd2, 0xe8, 0x26, 0xac, 0x44, - 0x54, 0x25, 0x99, 0x41, 0xb7, 0x00, 0x45, 0xc4, 0xa9, 0x8a, 0xac, 0xfe, 0x1b, 0xb0, 0x52, 0xa7, - 0x1e, 0x33, 0x1d, 0x2f, 0x4a, 0xa2, 0x1f, 0xf0, 0x41, 0x2b, 0x92, 0xe1, 0xd8, 0x72, 0x4f, 0xaf, - 0xad, 0x9c, 0x9f, 0x6d, 0x14, 0x22, 0x68, 0xab, 0xc1, 0x47, 0x1a, 0x36, 0x6c, 0xbe, 0x7e, 0x47, - 0x8e, 0x2d, 0x9c, 0x9b, 0xa9, 0x2d, 0x9e, 0x9f, 0x6d, 0xa4, 0xba, 0xad, 0x06, 0xe6, 0x34, 0xf4, - 0x2d, 0xc8, 0x93, 0xe7, 0x0e, 0x33, 0x2c, 0xbe, 0x87, 0x73, 0x07, 0x66, 0x70, 0x8e, 0x13, 0xea, - 0x7c, 0xcb, 0xae, 0x01, 0x74, 0xa9, 0xcf, 0x54, 0xcf, 0xdf, 0x83, 0xcc, 0x88, 0xfa, 0xa2, 0x3c, - 0xbf, 0xf4, 0x32, 0x82, 0xc3, 0x65, 0xa0, 0x62, 0x09, 0xd6, 0xff, 0x3a, 0x09, 0xd0, 0x37, 0x83, - 0x43, 0xa5, 0xe4, 0x11, 0xe4, 0xa3, 0x8b, 0x1d, 0x55, 0xe7, 0x5f, 0x39, 0xdb, 0x11, 0x18, 0x3d, - 0x0c, 0x83, 0x4d, 0x96, 0x07, 0x73, 0xeb, 0xb4, 0xb0, 0xa3, 0x79, 0x19, 0xf6, 0x6c, 0x0d, 0xc0, - 0x8f, 0x44, 0xe2, 0xfb, 0x6a, 0xe6, 0xf9, 0x27, 0xaa, 0x8b, 0x63, 0x41, 0x3a, 0x4d, 0x25, 0x98, - 0x6f, 0xcc, 0xeb, 0xe4, 0xc2, 0x8c, 0x6c, 0x2d, 0xe0, 0xa9, 0x1c, 0xfa, 0x18, 0x0a, 0x7c, 0xdc, - 0x46, 0x20, 0x78, 0x2a, 0xb7, 0xbc, 0xd4, 0x55, 0x52, 0x03, 0x86, 0x51, 0xf4, 0x5d, 0xd3, 0x60, - 0xd9, 0x1f, 0x7b, 0x7c, 0xd8, 0x4a, 0x87, 0xee, 0xc0, 0x37, 0xdb, 0x84, 0x1d, 0x53, 0xff, 0xb0, - 0xca, 0x98, 0x69, 0x1d, 0x0c, 0x89, 0xa7, 0x7c, 0x1c, 0x4b, 0xac, 0x13, 0x33, 0x89, 0xf5, 0x1a, - 0x2c, 0x9a, 0xae, 0x63, 0x06, 0x44, 0x66, 0x23, 0x79, 0x1c, 0x36, 0x79, 0xfa, 0xcf, 0x8b, 0x09, - 0x12, 0x04, 0x44, 0xd6, 0xf7, 0x79, 0x3c, 0x25, 0xe8, 0xff, 0x98, 0x04, 0x68, 0x75, 0xab, 0x3b, - 0x4a, 0x7d, 0x03, 0xb2, 0xfb, 0xe6, 0xd0, 0x71, 0x27, 0x57, 0x2d, 0xf0, 0x29, 0xbe, 0x52, 0x95, - 0x8a, 0x36, 0x85, 0x0c, 0x56, 0xb2, 0xa2, 0x2a, 0x18, 0xef, 0x79, 0x84, 0x45, 0x55, 0x81, 0x68, - 0xf1, 0x14, 0xc4, 0x37, 0xbd, 0x68, 0x66, 0x64, 0x83, 0x9b, 0x3e, 0x30, 0x19, 0x39, 0x36, 0x27, - 0xe1, 0xaa, 0x54, 0x4d, 0xb4, 0xc5, 0xab, 0x85, 0x80, 0xf8, 0x47, 0xc4, 0x5e, 0xcb, 0x88, 0x10, - 0xbc, 0xce, 0x1e, 0xac, 0xe0, 0x32, 0xb9, 0x8a, 0xa4, 0x4b, 0x1f, 0x8a, 0x8c, 0x60, 0xca, 0xfa, - 0x4a, 0xb7, 0x13, 0xf7, 0x60, 0x69, 0x66, 0x9c, 0x2f, 0x95, 0x63, 0xad, 0xee, 0xd3, 0xef, 0x69, - 0x69, 0xf5, 0xf5, 0x03, 0x2d, 0xab, 0xff, 0x69, 0x4a, 0xae, 0x23, 0xe5, 0xd5, 0xf9, 0xf7, 0x85, - 0x39, 0x11, 0xfd, 0x16, 0x75, 0x55, 0x7c, 0xbf, 0x75, 0xf5, 0xf2, 0xe2, 0xe9, 0xbd, 0x80, 0xe3, - 0x48, 0x10, 0x6d, 0x40, 0x41, 0xce, 0xbf, 0xc1, 0xe3, 0x49, 0xb8, 0x75, 0x09, 0x83, 0x24, 0x71, - 0x49, 0x74, 0x17, 0x96, 0x45, 0xf9, 0x1e, 0x1c, 0x10, 0x5b, 0x62, 0xd2, 0x02, 0xb3, 0x14, 0x51, - 0x05, 0x6c, 0x07, 0x8a, 0x8a, 0x60, 0x88, 0xd4, 0x2e, 0x23, 0x0c, 0x7a, 0xe7, 0x3a, 0x83, 0xa4, - 0x88, 0xc8, 0xf8, 0x0a, 0xa3, 0x69, 0x43, 0x6f, 0x40, 0x2e, 0x34, 0x16, 0xad, 0x41, 0xaa, 0x5f, - 0xef, 0x6a, 0x0b, 0xa5, 0x95, 0x93, 0xd3, 0x72, 0x21, 0x24, 0xf7, 0xeb, 0x5d, 0xce, 0xd9, 0x6d, - 0x74, 0xb5, 0xc4, 0x2c, 0x67, 0xb7, 0xd1, 0x2d, 0xa5, 0x79, 0x8a, 0xa1, 0xef, 0x43, 0x21, 0xd6, - 0x03, 0x7a, 0x03, 0x16, 0x5b, 0xed, 0xc7, 0xb8, 0xd9, 0xeb, 0x69, 0x0b, 0xa5, 0x5b, 0x27, 0xa7, - 0x65, 0x14, 0xe3, 0xb6, 0xbc, 0x01, 0x9f, 0x1f, 0xf4, 0x1a, 0xa4, 0xb7, 0x3a, 0xfc, 0xe8, 0x92, - 0xb9, 0x64, 0x0c, 0xb1, 0x45, 0x03, 0x56, 0xba, 0xa9, 0x72, 0x97, 0xb8, 0x62, 0xfd, 0x0f, 0x13, - 0x90, 0x95, 0x29, 0xf5, 0xdc, 0x89, 0xaa, 0xc2, 0x62, 0x58, 0xe8, 0xc9, 0x3c, 0xff, 0xad, 0xcb, - 0x73, 0xf2, 0x8a, 0x4a, 0xa1, 0x65, 0xf8, 0x85, 0x72, 0xa5, 0x0f, 0xa0, 0x18, 0x67, 0x7c, 0xa5, - 0xe0, 0xfb, 0x35, 0x28, 0xf0, 0xf8, 0x0e, 0x73, 0xf3, 0x07, 0x90, 0x95, 0x69, 0x7f, 0xb4, 0x95, - 0x5e, 0x5e, 0x20, 0x28, 0x24, 0x7a, 0x04, 0x8b, 0xb2, 0xa8, 0x08, 0xef, 0xf7, 0xd6, 0xaf, 0x5e, - 0x45, 0x38, 0x84, 0xeb, 0x1f, 0x43, 0xba, 0x4b, 0x88, 0xcf, 0x7d, 0xef, 0x51, 0x9b, 0x4c, 0x4f, - 0x1f, 0x55, 0x0f, 0xd9, 0xa4, 0xd5, 0xe0, 0xf5, 0x90, 0x4d, 0x5a, 0x76, 0x74, 0x83, 0x91, 0x8c, - 0xdd, 0x60, 0xf4, 0xa1, 0xf8, 0x8c, 0x38, 0x83, 0x03, 0x46, 0x6c, 0xa1, 0xe8, 0x5d, 0x48, 0x8f, - 0x48, 0x64, 0xfc, 0xda, 0xdc, 0x00, 0x23, 0xc4, 0xc7, 0x02, 0xc5, 0xf7, 0x91, 0x63, 0x21, 0xad, - 0x6e, 0x95, 0x55, 0x4b, 0xff, 0x87, 0x24, 0x2c, 0xb7, 0x82, 0x60, 0x6c, 0x7a, 0x56, 0x98, 0x98, - 0x7c, 0x34, 0x9b, 0x98, 0xbc, 0x3d, 0x77, 0x84, 0x33, 0x22, 0xb3, 0x17, 0x33, 0xea, 0x70, 0x48, - 0x46, 0x87, 0x83, 0xfe, 0x1f, 0x89, 0xf0, 0xf6, 0xe5, 0x6e, 0x6c, 0xb9, 0x97, 0xd6, 0x4e, 0x4e, - 0xcb, 0xab, 0x71, 0x4d, 0x64, 0xd7, 0x3b, 0xf4, 0xe8, 0xb1, 0x87, 0x5e, 0x87, 0x0c, 0x6e, 0xb6, - 0x9b, 0xcf, 0xb4, 0x84, 0x0c, 0xcf, 0x19, 0x10, 0x26, 0x1e, 0x39, 0xe6, 0x9a, 0xba, 0xcd, 0x76, - 0x83, 0x27, 0x12, 0xc9, 0x39, 0x9a, 0xba, 0xc4, 0xb3, 0x1d, 0x6f, 0x80, 0xde, 0x80, 0x6c, 0xab, - 0xd7, 0xdb, 0x15, 0xf5, 0xf1, 0x37, 0x4f, 0x4e, 0xcb, 0x37, 0x67, 0x50, 0xe2, 0xe6, 0xcd, 0xe6, - 0x20, 0x9e, 0xc5, 0xf3, 0x14, 0x63, 0x0e, 0x88, 0xa7, 0x87, 0x12, 0x84, 0x3b, 0x7d, 0x5e, 0xbc, - 0x67, 0xe6, 0x80, 0x30, 0xe5, 0x7f, 0xd5, 0x72, 0xfb, 0x97, 0x24, 0x68, 0x55, 0xcb, 0x22, 0x23, - 0xc6, 0xf9, 0xaa, 0x70, 0xea, 0x43, 0x6e, 0xc4, 0xbf, 0x1c, 0x12, 0x26, 0x01, 0x8f, 0xe6, 0xbe, - 0x6b, 0x5c, 0x90, 0xab, 0x60, 0xea, 0x92, 0xaa, 0x3d, 0x74, 0x82, 0xc0, 0xa1, 0x9e, 0xa4, 0xe1, - 0x48, 0x53, 0xe9, 0xbf, 0x12, 0x70, 0x73, 0x0e, 0x02, 0xdd, 0x83, 0xb4, 0x4f, 0xdd, 0x70, 0x0e, - 0xef, 0x5c, 0x76, 0xb1, 0xc6, 0x45, 0xb1, 0x40, 0xa2, 0x75, 0x00, 0x73, 0xcc, 0xa8, 0x29, 0xfa, - 0x17, 0xb3, 0x97, 0xc3, 0x31, 0x0a, 0x7a, 0x06, 0xd9, 0x80, 0x58, 0x3e, 0x09, 0x53, 0xc5, 0x8f, - 0xff, 0xbf, 0xd6, 0x57, 0x7a, 0x42, 0x0d, 0x56, 0xea, 0x4a, 0x15, 0xc8, 0x4a, 0x0a, 0x0f, 0x7b, - 0xdb, 0x64, 0xa6, 0xba, 0x76, 0x15, 0xdf, 0x3c, 0x9a, 0x4c, 0x77, 0x10, 0x46, 0x93, 0xe9, 0x0e, - 0xf4, 0xbf, 0x4d, 0x02, 0x34, 0x9f, 0x33, 0xe2, 0x7b, 0xa6, 0x5b, 0xaf, 0xa2, 0x66, 0x6c, 0xf7, - 0x97, 0xa3, 0xfd, 0xce, 0xdc, 0xbb, 0xe4, 0x48, 0xa2, 0x52, 0xaf, 0xce, 0xd9, 0xff, 0x6f, 0x43, - 0x6a, 0xec, 0xab, 0xa7, 0x2a, 0x99, 0xe6, 0xed, 0xe2, 0x6d, 0xcc, 0x69, 0xa8, 0x39, 0xdd, 0xb6, - 0x52, 0x97, 0x3f, 0x48, 0xc5, 0x3a, 0x98, 0xbb, 0x75, 0xf1, 0x95, 0x6f, 0x99, 0x86, 0x45, 0xd4, - 0xc9, 0x51, 0x94, 0x2b, 0xbf, 0x5e, 0xad, 0x13, 0x9f, 0xe1, 0xac, 0x65, 0xf2, 0xff, 0x5f, 0x6b, - 0x7f, 0x7b, 0x17, 0x60, 0x3a, 0x34, 0xb4, 0x0e, 0x99, 0xfa, 0x66, 0xaf, 0xb7, 0xad, 0x2d, 0xc8, - 0x0d, 0x7c, 0xca, 0x12, 0x64, 0xfd, 0x2f, 0x93, 0x90, 0xab, 0x57, 0xd5, 0xb1, 0x5a, 0x07, 0x4d, - 0xec, 0x4a, 0xe2, 0xb2, 0x9a, 0x3c, 0x1f, 0x39, 0xfe, 0x44, 0x6d, 0x2c, 0x57, 0xd4, 0x6c, 0xcb, - 0x5c, 0x84, 0x5b, 0xdd, 0x14, 0x02, 0x08, 0x43, 0x91, 0x28, 0x27, 0x18, 0x96, 0x19, 0xee, 0xf1, - 0xeb, 0x57, 0x3b, 0x4b, 0x66, 0xdf, 0xd3, 0x76, 0x80, 0x0b, 0xa1, 0x92, 0xba, 0x19, 0xa0, 0xf7, - 0x61, 0x25, 0x70, 0x06, 0x9e, 0xe3, 0x0d, 0x8c, 0xd0, 0x79, 0xe2, 0xe6, 0xbc, 0x76, 0xe3, 0xfc, - 0x6c, 0x63, 0xa9, 0x27, 0x59, 0xca, 0x87, 0x4b, 0x0a, 0x59, 0x17, 0xae, 0x44, 0x3f, 0x80, 0xe5, - 0x98, 0x28, 0xf7, 0xa2, 0x74, 0xbb, 0x76, 0x7e, 0xb6, 0x51, 0x8c, 0x24, 0x9f, 0x90, 0x09, 0x2e, - 0x46, 0x82, 0x4f, 0x88, 0xb8, 0x5e, 0xd8, 0xa7, 0xbe, 0x45, 0x0c, 0x5f, 0xac, 0x69, 0x71, 0x82, - 0xa7, 0x71, 0x41, 0xd0, 0xe4, 0x32, 0xd7, 0x9f, 0xc2, 0xcd, 0x8e, 0x6f, 0x1d, 0x90, 0x80, 0x49, - 0x57, 0x28, 0x2f, 0x7e, 0x0c, 0x77, 0x98, 0x19, 0x1c, 0x1a, 0x07, 0x4e, 0xc0, 0xa8, 0x3f, 0x31, - 0x7c, 0xc2, 0x88, 0xc7, 0xf9, 0x86, 0x78, 0x6e, 0x53, 0xf7, 0x3f, 0xb7, 0x39, 0x66, 0x4b, 0x42, - 0x70, 0x88, 0xd8, 0xe6, 0x00, 0xbd, 0x05, 0x45, 0x9e, 0x85, 0x37, 0xc8, 0xbe, 0x39, 0x76, 0x19, - 0x1f, 0x3d, 0xb8, 0x74, 0x60, 0xbc, 0xf2, 0x31, 0x95, 0x77, 0xe9, 0x40, 0x7e, 0xea, 0x3f, 0x06, - 0xad, 0xe1, 0x04, 0x23, 0x93, 0x59, 0x07, 0xe1, 0xc5, 0x16, 0x6a, 0x80, 0x76, 0x40, 0x4c, 0x9f, - 0xed, 0x11, 0x93, 0x19, 0x23, 0xe2, 0x3b, 0xd4, 0xbe, 0x7e, 0x96, 0x57, 0x22, 0x91, 0xae, 0x90, - 0xd0, 0xff, 0x3b, 0x01, 0x80, 0xcd, 0xfd, 0x30, 0x23, 0xfb, 0x2e, 0xdc, 0x08, 0x3c, 0x73, 0x14, - 0x1c, 0x50, 0x66, 0x38, 0x1e, 0x23, 0xfe, 0x91, 0xe9, 0xaa, 0xfb, 0x09, 0x2d, 0x64, 0xb4, 0x14, - 0x1d, 0xbd, 0x0b, 0xe8, 0x90, 0x90, 0x91, 0x41, 0x5d, 0xdb, 0x08, 0x99, 0xf2, 0x31, 0x30, 0x8d, - 0x35, 0xce, 0xe9, 0xb8, 0x76, 0x2f, 0xa4, 0xa3, 0x1a, 0xac, 0xf3, 0xe1, 0x13, 0x8f, 0xf9, 0x0e, - 0x09, 0x8c, 0x7d, 0xea, 0x1b, 0x81, 0x4b, 0x8f, 0x8d, 0x7d, 0xea, 0xba, 0xf4, 0x98, 0xf8, 0xe1, - 0xd5, 0x4f, 0xc9, 0xa5, 0x83, 0xa6, 0x04, 0x6d, 0x52, 0xbf, 0xe7, 0xd2, 0xe3, 0xcd, 0x10, 0xc1, - 0xd3, 0xb6, 0xe9, 0x98, 0x99, 0x63, 0x1d, 0x86, 0x69, 0x5b, 0x44, 0xed, 0x3b, 0xd6, 0x21, 0x7a, - 0x03, 0x96, 0x88, 0x4b, 0xc4, 0x0d, 0x80, 0x44, 0x65, 0x04, 0xaa, 0x18, 0x12, 0x39, 0x48, 0xff, - 0x04, 0xb4, 0xa6, 0x67, 0xf9, 0x93, 0x51, 0x6c, 0xce, 0xdf, 0x05, 0xc4, 0x37, 0x49, 0xc3, 0xa5, - 0xd6, 0xa1, 0x31, 0x34, 0x3d, 0x73, 0xc0, 0xed, 0x92, 0x6f, 0x34, 0x1a, 0xe7, 0x6c, 0x53, 0xeb, - 0x70, 0x47, 0xd1, 0xf5, 0xf7, 0x01, 0x7a, 0x23, 0x9f, 0x98, 0x76, 0x87, 0x67, 0x13, 0xdc, 0x75, - 0xa2, 0x65, 0xd8, 0xea, 0x8d, 0x8b, 0xfa, 0x6a, 0xa9, 0x6b, 0x92, 0xd1, 0x88, 0xe8, 0xfa, 0x2f, - 0xc1, 0xcd, 0xae, 0x6b, 0x5a, 0xe2, 0xbd, 0xb7, 0x1b, 0x3d, 0x3a, 0xa0, 0x47, 0x90, 0x95, 0x50, - 0x35, 0x93, 0x73, 0x97, 0xdb, 0xb4, 0xcf, 0xad, 0x05, 0xac, 0xf0, 0xb5, 0x22, 0xc0, 0x54, 0x8f, - 0xfe, 0x1c, 0xf2, 0x91, 0x7a, 0x54, 0x06, 0x5e, 0x02, 0xf3, 0xe8, 0x76, 0x3c, 0x55, 0xb3, 0xe6, - 0x71, 0x9c, 0x84, 0x5a, 0x50, 0x18, 0x45, 0xc2, 0x57, 0xa6, 0x73, 0x73, 0x8c, 0xc6, 0x71, 0x59, - 0xfd, 0x23, 0x80, 0x1f, 0x51, 0xc7, 0xeb, 0xd3, 0x43, 0xe2, 0x89, 0x77, 0x2e, 0x5e, 0xad, 0x91, - 0xd0, 0x11, 0xaa, 0x25, 0x8a, 0x51, 0xe9, 0xc5, 0xe8, 0xb9, 0x47, 0x36, 0xf5, 0xbf, 0x49, 0x42, - 0x16, 0x53, 0xca, 0xea, 0x55, 0x54, 0x86, 0xac, 0x5a, 0xea, 0xe2, 0x08, 0xa9, 0xe5, 0xcf, 0xcf, - 0x36, 0x32, 0x72, 0x8d, 0x67, 0x2c, 0xb1, 0xb8, 0x63, 0x9b, 0x70, 0xf2, 0xb2, 0x4d, 0x18, 0xdd, - 0x83, 0xa2, 0x02, 0x19, 0x07, 0x66, 0x70, 0x20, 0x6b, 0xac, 0xda, 0xf2, 0xf9, 0xd9, 0x06, 0x48, - 0xe4, 0x96, 0x19, 0x1c, 0x60, 0x90, 0x68, 0xfe, 0x8d, 0x9a, 0x50, 0xf8, 0x8c, 0x3a, 0x9e, 0xc1, - 0xc4, 0x20, 0xd4, 0x75, 0xd7, 0xdc, 0xa9, 0x98, 0x0e, 0x55, 0x3d, 0xfa, 0xc2, 0x67, 0xd3, 0xc1, - 0x37, 0x61, 0xc9, 0xa7, 0x94, 0xc9, 0x9d, 0xc7, 0xa1, 0x9e, 0xaa, 0xa4, 0xcb, 0x73, 0x2f, 0x58, - 0x29, 0x65, 0x58, 0xe1, 0x70, 0xd1, 0x8f, 0xb5, 0xd0, 0x3d, 0x58, 0x75, 0xcd, 0x80, 0x19, 0x62, - 0xcb, 0xb2, 0xa7, 0xda, 0xb2, 0x62, 0xb5, 0x20, 0xce, 0xdb, 0x14, 0xac, 0x50, 0x42, 0xff, 0xa7, - 0x04, 0x14, 0xf8, 0x60, 0x9c, 0x7d, 0xc7, 0xe2, 0x79, 0xda, 0x57, 0x4f, 0x1f, 0x6e, 0x43, 0xca, - 0x0a, 0x7c, 0xe5, 0x54, 0x71, 0x7e, 0xd6, 0x7b, 0x18, 0x73, 0x1a, 0xfa, 0x04, 0xb2, 0xaa, 0xa2, - 0x97, 0x99, 0x83, 0x7e, 0x7d, 0x46, 0xa9, 0x7c, 0xa3, 0xe4, 0x44, 0x3c, 0x4e, 0xad, 0x93, 0xfb, - 0x38, 0x8e, 0x93, 0xd0, 0x2d, 0x48, 0x5a, 0xd2, 0x5d, 0xea, 0x57, 0x05, 0xf5, 0x36, 0x4e, 0x5a, - 0x9e, 0xfe, 0xf7, 0x09, 0x58, 0x9a, 0xae, 0x59, 0x1e, 0x01, 0x77, 0x20, 0x1f, 0x8c, 0xf7, 0x82, - 0x49, 0xc0, 0xc8, 0x30, 0x7c, 0xc3, 0x8b, 0x08, 0xa8, 0x05, 0x79, 0xd3, 0x1d, 0x50, 0xdf, 0x61, - 0x07, 0x43, 0x55, 0x4c, 0xce, 0x3f, 0xed, 0xe3, 0x3a, 0x2b, 0xd5, 0x50, 0x04, 0x4f, 0xa5, 0xc3, - 0xa3, 0x5b, 0x3e, 0xf4, 0x8a, 0xa3, 0xfb, 0x75, 0x28, 0xba, 0xe6, 0x50, 0x5c, 0x71, 0x30, 0x67, - 0x28, 0xc7, 0x91, 0xc6, 0x05, 0x45, 0xeb, 0x3b, 0x43, 0xa2, 0xeb, 0x90, 0x8f, 0x94, 0xa1, 0x15, - 0x28, 0x54, 0x9b, 0x3d, 0xe3, 0xfe, 0x83, 0x47, 0xc6, 0xe3, 0xfa, 0x8e, 0xb6, 0xa0, 0xd2, 0xcb, - 0xbf, 0x48, 0xc0, 0x92, 0xda, 0x51, 0x54, 0xca, 0xfe, 0x06, 0x2c, 0xfa, 0xe6, 0x3e, 0x0b, 0x8b, - 0x8a, 0xb4, 0x8c, 0x6a, 0xbe, 0x49, 0xf3, 0xa2, 0x82, 0xb3, 0xe6, 0x17, 0x15, 0xb1, 0x57, 0xe5, - 0xd4, 0x95, 0xaf, 0xca, 0xe9, 0x9f, 0xcb, 0xab, 0xb2, 0xfe, 0x9b, 0x00, 0x9b, 0x8e, 0x4b, 0xfa, - 0xf2, 0xa2, 0x65, 0x5e, 0x89, 0xc8, 0xd3, 0x30, 0x75, 0xdb, 0x16, 0xa6, 0x61, 0xad, 0x06, 0xe6, - 0x34, 0xce, 0x1a, 0x38, 0xb6, 0x5a, 0x8c, 0x82, 0xf5, 0x98, 0xb3, 0x06, 0x8e, 0x1d, 0xbd, 0xa3, - 0xa4, 0xaf, 0x7b, 0x47, 0x39, 0x4d, 0xc0, 0x8a, 0x4a, 0x3f, 0xa3, 0x1d, 0xf4, 0x3b, 0x90, 0x97, - 0x99, 0xe8, 0xb4, 0x26, 0x13, 0x2f, 0xa9, 0x12, 0xd7, 0x6a, 0xe0, 0x9c, 0x64, 0xb7, 0x6c, 0xb4, - 0x01, 0x05, 0x05, 0x8d, 0xfd, 0x02, 0x05, 0x24, 0xa9, 0xcd, 0xcd, 0xff, 0x1e, 0xa4, 0xf7, 0x1d, - 0x97, 0xa8, 0x40, 0x9f, 0xbb, 0x01, 0x4c, 0x1d, 0xb0, 0xb5, 0x80, 0x05, 0xba, 0x96, 0x0b, 0x6f, - 0xa2, 0x84, 0x7d, 0xaa, 0x72, 0x8c, 0xdb, 0x27, 0x8b, 0xc8, 0x0b, 0xf6, 0x49, 0x1c, 0xb7, 0x4f, - 0xb2, 0xa5, 0x7d, 0x0a, 0x1a, 0xb7, 0x4f, 0x92, 0x7e, 0x2e, 0xf6, 0x6d, 0xc3, 0xad, 0x9a, 0x6b, - 0x5a, 0x87, 0xae, 0x13, 0x30, 0x62, 0xc7, 0x77, 0x8c, 0x07, 0x90, 0x9d, 0xc9, 0x1b, 0xaf, 0xba, - 0x98, 0x54, 0x48, 0xfd, 0xdf, 0x13, 0x50, 0xdc, 0x22, 0xa6, 0xcb, 0x0e, 0xa6, 0xb7, 0x3b, 0x8c, - 0x04, 0x4c, 0x1d, 0x38, 0xe2, 0x1b, 0x7d, 0x1f, 0x72, 0x51, 0x5a, 0x71, 0xed, 0x0b, 0x51, 0x04, - 0x45, 0x0f, 0x61, 0x91, 0xaf, 0x31, 0x3a, 0x0e, 0xeb, 0x95, 0xab, 0x1e, 0x1f, 0x14, 0x92, 0x1f, - 0x32, 0x3e, 0x11, 0x79, 0x84, 0x08, 0xa5, 0x0c, 0x0e, 0x9b, 0xe8, 0x17, 0xa1, 0x28, 0xee, 0xce, - 0xc3, 0xb4, 0x29, 0x73, 0x9d, 0xce, 0x82, 0x7c, 0xfe, 0x92, 0x29, 0xd3, 0xff, 0x26, 0x60, 0x75, - 0xc7, 0x9c, 0xec, 0x11, 0xb5, 0x6d, 0x10, 0x1b, 0x13, 0x8b, 0xfa, 0x36, 0xea, 0xc6, 0xb7, 0x9b, - 0x2b, 0x5e, 0xd3, 0xe6, 0x09, 0xcf, 0xdf, 0x75, 0xc2, 0x1a, 0x2a, 0x19, 0xab, 0xa1, 0x56, 0x21, - 0xe3, 0x51, 0xcf, 0x22, 0x6a, 0x2f, 0x92, 0x0d, 0xdd, 0x89, 0x6f, 0x35, 0xa5, 0xe8, 0xa1, 0x4b, - 0x3c, 0x53, 0xb5, 0x29, 0x8b, 0x7a, 0x43, 0x9f, 0x40, 0xa9, 0xd7, 0xac, 0xe3, 0x66, 0xbf, 0xd6, - 0xf9, 0xb1, 0xd1, 0xab, 0x6e, 0xf7, 0xaa, 0x0f, 0xee, 0x19, 0xdd, 0xce, 0xf6, 0xa7, 0xf7, 0x1f, - 0xde, 0xfb, 0xbe, 0x96, 0x28, 0x95, 0x4f, 0x4e, 0xcb, 0x77, 0xda, 0xd5, 0xfa, 0xb6, 0x5c, 0x31, - 0x7b, 0xf4, 0x79, 0xcf, 0x74, 0x03, 0xf3, 0xc1, 0xbd, 0x2e, 0x75, 0x27, 0x1c, 0xc3, 0xc3, 0xba, - 0x18, 0x3f, 0xaf, 0xe2, 0xc7, 0x70, 0xe2, 0xd2, 0x63, 0x78, 0x7a, 0x9a, 0x27, 0x2f, 0x39, 0xcd, - 0x37, 0x61, 0xd5, 0xf2, 0x69, 0x10, 0x18, 0x3c, 0x81, 0x27, 0xf6, 0x85, 0x12, 0xe1, 0x1b, 0xe7, - 0x67, 0x1b, 0x37, 0xea, 0x9c, 0xdf, 0x13, 0x6c, 0xa5, 0xfe, 0x86, 0x15, 0x23, 0x89, 0x9e, 0xf4, - 0x3f, 0x4a, 0xf1, 0x5c, 0xc8, 0x39, 0x72, 0x5c, 0x32, 0x20, 0x01, 0x7a, 0x0a, 0x2b, 0x96, 0x4f, - 0x6c, 0x9e, 0x99, 0x9b, 0xae, 0x11, 0x8c, 0x88, 0xa5, 0x82, 0xfa, 0x17, 0xe6, 0x26, 0x38, 0x91, - 0x60, 0xa5, 0x1e, 0x49, 0xf5, 0x46, 0xc4, 0xc2, 0xcb, 0xd6, 0x4c, 0x1b, 0x7d, 0x06, 0x2b, 0x01, - 0x71, 0x1d, 0x6f, 0xfc, 0xdc, 0xb0, 0xa8, 0xc7, 0xc8, 0xf3, 0xf0, 0xcd, 0xe6, 0x3a, 0xbd, 0xbd, - 0xe6, 0x36, 0x97, 0xaa, 0x4b, 0xa1, 0x1a, 0x3a, 0x3f, 0xdb, 0x58, 0x9e, 0xa5, 0xe1, 0x65, 0xa5, - 0x59, 0xb5, 0x4b, 0x6d, 0x58, 0x9e, 0xb5, 0x06, 0xad, 0xaa, 0xb5, 0x2f, 0xb6, 0x90, 0x70, 0x6d, - 0xa3, 0x3b, 0x90, 0xf3, 0xc9, 0xc0, 0x09, 0x98, 0x2f, 0xdd, 0xcc, 0x39, 0x11, 0x85, 0xaf, 0x7c, - 0xf9, 0x33, 0x94, 0xd2, 0xaf, 0xc3, 0x85, 0x1e, 0xf9, 0x62, 0xb1, 0x9d, 0xc0, 0xdc, 0x53, 0x2a, - 0x73, 0x38, 0x6c, 0xf2, 0x18, 0x1c, 0x07, 0x51, 0xa2, 0x26, 0xbe, 0x39, 0x4d, 0x64, 0x14, 0xea, - 0x47, 0x39, 0x22, 0x67, 0x08, 0x7f, 0xdd, 0x97, 0x8e, 0xfd, 0xba, 0x6f, 0x15, 0x32, 0x2e, 0x39, - 0x22, 0xae, 0x3c, 0xcb, 0xb1, 0x6c, 0xbc, 0xf3, 0xb3, 0x14, 0xe4, 0xa3, 0xf7, 0x09, 0x7e, 0x12, - 0xb4, 0x9b, 0xcf, 0xc2, 0x58, 0x8d, 0xe8, 0x6d, 0x72, 0x8c, 0x5e, 0x9f, 0x5e, 0x0b, 0x7d, 0x22, - 0x1f, 0x64, 0x23, 0x76, 0x78, 0x25, 0xf4, 0x26, 0xe4, 0xaa, 0xbd, 0x5e, 0xeb, 0x71, 0xbb, 0xd9, - 0xd0, 0x3e, 0x4f, 0x94, 0xbe, 0x71, 0x72, 0x5a, 0xbe, 0x11, 0x81, 0xaa, 0x81, 0x0c, 0x25, 0x81, - 0xaa, 0xd7, 0x9b, 0xdd, 0x7e, 0xb3, 0xa1, 0xbd, 0x48, 0x5e, 0x44, 0x89, 0x6b, 0x0e, 0xf1, 0xb3, - 0x8a, 0x7c, 0x17, 0x37, 0xbb, 0x55, 0xcc, 0x3b, 0xfc, 0x3c, 0x29, 0x6f, 0xab, 0xa6, 0x3d, 0xfa, - 0x64, 0x64, 0xfa, 0xbc, 0xcf, 0xf5, 0xf0, 0xe7, 0x45, 0x2f, 0x52, 0xf2, 0xe9, 0x7d, 0xfa, 0xd8, - 0x42, 0x4c, 0x7b, 0xc2, 0x7b, 0x13, 0xaf, 0x5c, 0x42, 0x4d, 0xea, 0x42, 0x6f, 0x3d, 0xbe, 0x93, - 0x70, 0x2d, 0x3a, 0x2c, 0xe2, 0xdd, 0x76, 0x9b, 0x83, 0x5e, 0xa4, 0x2f, 0x8c, 0x0e, 0x8f, 0x3d, - 0x5e, 0xc2, 0xa2, 0xbb, 0x90, 0x0b, 0x1f, 0xc1, 0xb4, 0xcf, 0xd3, 0x17, 0x0c, 0xaa, 0x87, 0x2f, - 0x78, 0xa2, 0xc3, 0xad, 0xdd, 0xbe, 0xf8, 0xf5, 0xd3, 0x8b, 0xcc, 0xc5, 0x0e, 0x0f, 0xc6, 0xcc, - 0xa6, 0xc7, 0x1e, 0x5f, 0x81, 0xea, 0x62, 0xec, 0xf3, 0x8c, 0xbc, 0x45, 0x88, 0x30, 0xea, 0x56, - 0xec, 0x4d, 0xc8, 0xe1, 0xe6, 0x8f, 0xe4, 0x0f, 0xa5, 0x5e, 0x64, 0x2f, 0xe8, 0xc1, 0xe4, 0x33, - 0x62, 0xa9, 0xde, 0x3a, 0xb8, 0xbb, 0x55, 0x15, 0x2e, 0xbf, 0x88, 0xea, 0xf8, 0xa3, 0x03, 0xd3, - 0x23, 0xf6, 0xf4, 0xf7, 0x07, 0x11, 0xeb, 0x9d, 0x5f, 0x86, 0x5c, 0x98, 0x67, 0xa2, 0x75, 0xc8, - 0x3e, 0xeb, 0xe0, 0x27, 0x4d, 0xac, 0x2d, 0x48, 0x1f, 0x86, 0x9c, 0x67, 0xb2, 0x42, 0x28, 0xc3, - 0xe2, 0x4e, 0xb5, 0x5d, 0x7d, 0xdc, 0xc4, 0xe1, 0x9d, 0x75, 0x08, 0x50, 0xc9, 0x52, 0x49, 0x53, - 0x1d, 0x44, 0x3a, 0x6b, 0x6b, 0x5f, 0x7c, 0xb9, 0xbe, 0xf0, 0xd3, 0x2f, 0xd7, 0x17, 0x5e, 0x9c, - 0xaf, 0x27, 0xbe, 0x38, 0x5f, 0x4f, 0xfc, 0xe4, 0x7c, 0x3d, 0xf1, 0x6f, 0xe7, 0xeb, 0x89, 0xbd, - 0xac, 0xd8, 0xd2, 0x1f, 0xfe, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb2, 0xf3, 0xe4, 0x8f, 0x7c, - 0x2d, 0x00, 0x00, + 0x76, 0x16, 0x7f, 0x45, 0x3e, 0x52, 0x52, 0x4f, 0x8d, 0x3c, 0xd6, 0xd0, 0x63, 0x49, 0x6e, 0x7b, + 0xd6, 0x3f, 0xeb, 0xd0, 0xf3, 0x63, 0x1b, 0x63, 0x3b, 0x6b, 0x9b, 0x7f, 0x1a, 0x71, 0x47, 0x22, + 0x89, 0x22, 0x35, 0xb3, 0x3e, 0x24, 0x8d, 0x56, 0x77, 0x89, 0x6a, 0xab, 0xd9, 0xc5, 0x74, 0x17, + 0xa5, 0x61, 0x7e, 0x90, 0x41, 0x0e, 0x49, 0xa0, 0x53, 0x72, 0x0b, 0x10, 0x28, 0x97, 0xe4, 0x14, + 0xe4, 0x96, 0x00, 0x41, 0x72, 0x89, 0x03, 0xe4, 0xe0, 0x5b, 0x36, 0x09, 0x10, 0x2c, 0x12, 0x40, + 0x89, 0x75, 0xc8, 0x2d, 0x48, 0x2e, 0x8b, 0x5c, 0x12, 0x20, 0xa8, 0x9f, 0x6e, 0x36, 0x35, 0x94, + 0x34, 0x5e, 0xef, 0x45, 0xea, 0x7a, 0xef, 0x7b, 0xaf, 0x5e, 0xbd, 0x7a, 0x55, 0xf5, 0x5e, 0x15, + 0xa1, 0xc0, 0xc6, 0x43, 0x12, 0x94, 0x87, 0x3e, 0x65, 0x14, 0x21, 0x9b, 0x5a, 0x07, 0xc4, 0x2f, + 0x07, 0x47, 0xa6, 0x3f, 0x38, 0x70, 0x58, 0xf9, 0xf0, 0x6e, 0x69, 0xad, 0x4f, 0x69, 0xdf, 0x25, + 0xef, 0x09, 0xc4, 0xee, 0x68, 0xef, 0x3d, 0xe6, 0x0c, 0x48, 0xc0, 0xcc, 0xc1, 0x50, 0x0a, 0x95, + 0x56, 0xcf, 0x03, 0xec, 0x91, 0x6f, 0x32, 0x87, 0x7a, 0x8a, 0xbf, 0xdc, 0xa7, 0x7d, 0x2a, 0x3e, + 0xdf, 0xe3, 0x5f, 0x92, 0xaa, 0xaf, 0xc1, 0xfc, 0x63, 0xe2, 0x07, 0x0e, 0xf5, 0xd0, 0x32, 0x64, + 0x1c, 0xcf, 0x26, 0x4f, 0x57, 0x12, 0xeb, 0x89, 0xb7, 0xd2, 0x58, 0x36, 0xf4, 0x3b, 0x00, 0x4d, + 0xfe, 0xd1, 0xf0, 0x98, 0x3f, 0x46, 0x1a, 0xa4, 0x0e, 0xc8, 0x58, 0x20, 0xf2, 0x98, 0x7f, 0x72, + 0xca, 0xa1, 0xe9, 0xae, 0x24, 0x25, 0xe5, 0xd0, 0x74, 0xf5, 0x6f, 0x12, 0x50, 0xa8, 0x78, 0x1e, + 0x65, 0xa2, 0xf7, 0x00, 0x21, 0x48, 0x7b, 0xe6, 0x80, 0x28, 0x21, 0xf1, 0x8d, 0x6a, 0x90, 0x75, + 0xcd, 0x5d, 0xe2, 0x06, 0x2b, 0xc9, 0xf5, 0xd4, 0x5b, 0x85, 0x7b, 0xdf, 0x2f, 0x3f, 0x3f, 0xe4, + 0x72, 0x4c, 0x49, 0x79, 0x4b, 0xa0, 0x85, 0x11, 0x58, 0x89, 0xa2, 0x4f, 0x61, 0xde, 0xf1, 0x6c, + 0xc7, 0x22, 0xc1, 0x4a, 0x5a, 0x68, 0x59, 0x9d, 0xa5, 0x65, 0x62, 0x7d, 0x35, 0xfd, 0xf5, 0xe9, + 0xda, 0x1c, 0x0e, 0x85, 0x4a, 0x1f, 0x41, 0x21, 0xa6, 0x76, 0xc6, 0xd8, 0x96, 0x21, 0x73, 0x68, + 0xba, 0x23, 0xa2, 0x46, 0x27, 0x1b, 0x1f, 0x27, 0x1f, 0x24, 0xf4, 0x2f, 0x20, 0x8f, 0x49, 0x40, + 0x47, 0xbe, 0x45, 0x02, 0xf4, 0x36, 0xe4, 0x3d, 0xd3, 0xa3, 0x86, 0x35, 0x1c, 0x05, 0x42, 0x3c, + 0x55, 0x2d, 0x9e, 0x9d, 0xae, 0xe5, 0x5a, 0xa6, 0x47, 0x6b, 0x9d, 0x9d, 0x00, 0xe7, 0x38, 0xbb, + 0x36, 0x1c, 0x05, 0xe8, 0x35, 0x28, 0x0e, 0xc8, 0x80, 0xfa, 0x63, 0x63, 0x77, 0xcc, 0x48, 0x20, + 0x14, 0xa7, 0x70, 0x41, 0xd2, 0xaa, 0x9c, 0xa4, 0xff, 0x5e, 0x02, 0x96, 0x43, 0xdd, 0x98, 0xfc, + 0xca, 0xc8, 0xf1, 0xc9, 0x80, 0x78, 0x2c, 0x40, 0x1f, 0x40, 0xd6, 0x75, 0x06, 0x0e, 0x93, 0x7d, + 0x14, 0xee, 0xbd, 0x3a, 0x6b, 0xb4, 0x91, 0x55, 0x58, 0x81, 0x51, 0x05, 0x8a, 0x3e, 0x09, 0x88, + 0x7f, 0x28, 0x3d, 0x29, 0xba, 0xbc, 0x52, 0x78, 0x4a, 0x44, 0xdf, 0x80, 0x5c, 0xc7, 0x35, 0xd9, + 0x1e, 0xf5, 0x07, 0x48, 0x87, 0xa2, 0xe9, 0x5b, 0xfb, 0x0e, 0x23, 0x16, 0x1b, 0xf9, 0xe1, 0xac, + 0x4e, 0xd1, 0xd0, 0x0d, 0x48, 0x52, 0xd9, 0x51, 0xbe, 0x9a, 0x3d, 0x3b, 0x5d, 0x4b, 0xb6, 0xbb, + 0x38, 0x49, 0x03, 0xfd, 0x13, 0xb8, 0xd6, 0x71, 0x47, 0x7d, 0xc7, 0xab, 0x93, 0xc0, 0xf2, 0x9d, + 0x21, 0xd7, 0xce, 0xc3, 0x83, 0xc7, 0x7e, 0x18, 0x1e, 0xfc, 0x3b, 0x0a, 0x99, 0xe4, 0x24, 0x64, + 0xf4, 0xdf, 0x49, 0xc2, 0xb5, 0x86, 0xd7, 0x77, 0x3c, 0x12, 0x97, 0xbe, 0x0d, 0x8b, 0x44, 0x10, + 0x8d, 0x43, 0x19, 0xc6, 0x4a, 0xcf, 0x82, 0xa4, 0x86, 0xb1, 0xdd, 0x3c, 0x17, 0x6f, 0x77, 0x67, + 0x0d, 0xff, 0x39, 0xed, 0x33, 0xa3, 0xae, 0x01, 0xf3, 0x43, 0x31, 0x88, 0x60, 0x25, 0x25, 0x74, + 0xdd, 0x9e, 0xa5, 0xeb, 0xb9, 0x71, 0x86, 0xc1, 0xa7, 0x64, 0xbf, 0x4b, 0xf0, 0xfd, 0x59, 0x12, + 0x96, 0x5a, 0xd4, 0x9e, 0xf2, 0x43, 0x09, 0x72, 0xfb, 0x34, 0x60, 0xb1, 0x85, 0x16, 0xb5, 0xd1, + 0x03, 0xc8, 0x0d, 0xd5, 0xf4, 0xa9, 0xd9, 0xbf, 0x35, 0xdb, 0x64, 0x89, 0xc1, 0x11, 0x1a, 0x7d, + 0x02, 0x79, 0x3f, 0x8c, 0x89, 0x95, 0xd4, 0x8b, 0x04, 0xce, 0x04, 0x8f, 0x7e, 0x00, 0x59, 0x39, + 0x09, 0x2b, 0x69, 0x21, 0x79, 0xfb, 0x85, 0x7c, 0x8e, 0x95, 0x10, 0x7a, 0x08, 0x39, 0xe6, 0x06, + 0x86, 0xe3, 0xed, 0xd1, 0x95, 0x8c, 0x50, 0xb0, 0x36, 0x4b, 0x01, 0x77, 0x44, 0x6f, 0xab, 0xdb, + 0xf4, 0xf6, 0x68, 0xb5, 0x70, 0x76, 0xba, 0x36, 0xaf, 0x1a, 0x78, 0x9e, 0xb9, 0x01, 0xff, 0xd0, + 0x7f, 0x3f, 0x01, 0x85, 0x18, 0x0a, 0xbd, 0x0a, 0xc0, 0xfc, 0x51, 0xc0, 0x0c, 0x9f, 0x52, 0x26, + 0x9c, 0x55, 0xc4, 0x79, 0x41, 0xc1, 0x94, 0x32, 0x54, 0x86, 0xeb, 0x16, 0xf1, 0x99, 0xe1, 0x04, + 0xc1, 0x88, 0xf8, 0x46, 0x30, 0xda, 0xfd, 0x92, 0x58, 0x4c, 0x38, 0xae, 0x88, 0xaf, 0x71, 0x56, + 0x53, 0x70, 0xba, 0x92, 0x81, 0xee, 0xc3, 0x8d, 0x38, 0x7e, 0x38, 0xda, 0x75, 0x1d, 0xcb, 0xe0, + 0x93, 0x99, 0x12, 0x22, 0xd7, 0x27, 0x22, 0x1d, 0xc1, 0x7b, 0x44, 0xc6, 0xfa, 0x4f, 0x12, 0xa0, + 0x61, 0x73, 0x8f, 0x6d, 0x93, 0xc1, 0x2e, 0xf1, 0xbb, 0xcc, 0x64, 0xa3, 0x00, 0xdd, 0x80, 0xac, + 0x4b, 0x4c, 0x9b, 0xf8, 0xc2, 0xa8, 0x1c, 0x56, 0x2d, 0xb4, 0xc3, 0x57, 0xb0, 0x69, 0xed, 0x9b, + 0xbb, 0x8e, 0xeb, 0xb0, 0xb1, 0x30, 0x65, 0x71, 0x76, 0x08, 0x9f, 0xd7, 0x59, 0xc6, 0x31, 0x41, + 0x3c, 0xa5, 0x06, 0xad, 0xc0, 0xfc, 0x80, 0x04, 0x81, 0xd9, 0x27, 0xc2, 0xd2, 0x3c, 0x0e, 0x9b, + 0xfa, 0x27, 0x50, 0x8c, 0xcb, 0xa1, 0x02, 0xcc, 0xef, 0xb4, 0x1e, 0xb5, 0xda, 0x4f, 0x5a, 0xda, + 0x1c, 0x5a, 0x82, 0xc2, 0x4e, 0x0b, 0x37, 0x2a, 0xb5, 0xcd, 0x4a, 0x75, 0xab, 0xa1, 0x25, 0xd0, + 0x02, 0xe4, 0x27, 0xcd, 0xa4, 0xfe, 0xe7, 0x09, 0x00, 0xee, 0x6e, 0x35, 0xa8, 0x8f, 0x21, 0x13, + 0x30, 0x93, 0xc9, 0xa8, 0x5c, 0xbc, 0xf7, 0xc6, 0x45, 0x73, 0xa8, 0xec, 0xe5, 0xff, 0x08, 0x96, + 0x22, 0x71, 0x0b, 0x93, 0x53, 0x16, 0xf2, 0x0d, 0xc2, 0xb4, 0x6d, 0x5f, 0x19, 0x2e, 0xbe, 0xf5, + 0x4f, 0x20, 0x23, 0xa4, 0xa7, 0xcd, 0xcd, 0x41, 0xba, 0xce, 0xbf, 0x12, 0x28, 0x0f, 0x19, 0xdc, + 0xa8, 0xd4, 0xbf, 0xd0, 0x92, 0x48, 0x83, 0x62, 0xbd, 0xd9, 0xad, 0xb5, 0x5b, 0xad, 0x46, 0xad, + 0xd7, 0xa8, 0x6b, 0x29, 0xfd, 0x36, 0x64, 0x9a, 0x03, 0xae, 0xf9, 0x16, 0x0f, 0xf9, 0x3d, 0xe2, + 0x13, 0xcf, 0x0a, 0x57, 0xd2, 0x84, 0xa0, 0xff, 0x38, 0x0f, 0x99, 0x6d, 0x3a, 0xf2, 0x18, 0xba, + 0x17, 0xdb, 0xb6, 0x16, 0x67, 0x9f, 0x3c, 0x02, 0x58, 0xee, 0x8d, 0x87, 0x44, 0x6d, 0x6b, 0x37, + 0x20, 0x2b, 0x17, 0x87, 0x1a, 0x8e, 0x6a, 0x71, 0x3a, 0x33, 0xfd, 0x3e, 0x61, 0x6a, 0x3c, 0xaa, + 0x85, 0xde, 0x82, 0x9c, 0x4f, 0x4c, 0x9b, 0x7a, 0xee, 0x58, 0xac, 0xa1, 0x9c, 0x3c, 0x57, 0x30, + 0x31, 0xed, 0xb6, 0xe7, 0x8e, 0x71, 0xc4, 0x45, 0x9b, 0x50, 0xdc, 0x75, 0x3c, 0xdb, 0xa0, 0x43, + 0xb9, 0xc9, 0x67, 0x2e, 0x5e, 0x71, 0xd2, 0xaa, 0xaa, 0xe3, 0xd9, 0x6d, 0x09, 0xc6, 0x85, 0xdd, + 0x49, 0x03, 0xb5, 0x60, 0xf1, 0x90, 0xba, 0xa3, 0x01, 0x89, 0x74, 0x65, 0x85, 0xae, 0x37, 0x2f, + 0xd6, 0xf5, 0x58, 0xe0, 0x43, 0x6d, 0x0b, 0x87, 0xf1, 0x26, 0x7a, 0x04, 0x0b, 0x6c, 0x30, 0xdc, + 0x0b, 0x22, 0x75, 0xf3, 0x42, 0xdd, 0xf7, 0x2e, 0x71, 0x18, 0x87, 0x87, 0xda, 0x8a, 0x2c, 0xd6, + 0x2a, 0xfd, 0x56, 0x0a, 0x0a, 0x31, 0xcb, 0x51, 0x17, 0x0a, 0x43, 0x9f, 0x0e, 0xcd, 0xbe, 0x38, + 0xa8, 0xd4, 0x5c, 0xdc, 0x7d, 0xa1, 0x51, 0x97, 0x3b, 0x13, 0x41, 0x1c, 0xd7, 0xa2, 0x9f, 0x24, + 0xa1, 0x10, 0x63, 0xa2, 0x77, 0x20, 0x87, 0x3b, 0xb8, 0xf9, 0xb8, 0xd2, 0x6b, 0x68, 0x73, 0xa5, + 0x5b, 0xc7, 0x27, 0xeb, 0x2b, 0x42, 0x5b, 0x5c, 0x41, 0xc7, 0x77, 0x0e, 0x79, 0xe8, 0xbd, 0x05, + 0xf3, 0x21, 0x34, 0x51, 0x7a, 0xe5, 0xf8, 0x64, 0xfd, 0xe5, 0xf3, 0xd0, 0x18, 0x12, 0x77, 0x37, + 0x2b, 0xb8, 0x51, 0xd7, 0x92, 0xb3, 0x91, 0xb8, 0xbb, 0x6f, 0xfa, 0xc4, 0x46, 0xdf, 0x83, 0xac, + 0x02, 0xa6, 0x4a, 0xa5, 0xe3, 0x93, 0xf5, 0x1b, 0xe7, 0x81, 0x13, 0x1c, 0xee, 0x6e, 0x55, 0x1e, + 0x37, 0xb4, 0xf4, 0x6c, 0x1c, 0xee, 0xba, 0xe6, 0x21, 0x41, 0x6f, 0x40, 0x46, 0xc2, 0x32, 0xa5, + 0x9b, 0xc7, 0x27, 0xeb, 0x2f, 0x3d, 0xa7, 0x8e, 0xa3, 0x4a, 0x2b, 0xbf, 0xfb, 0xc7, 0xab, 0x73, + 0x7f, 0xfd, 0x27, 0xab, 0xda, 0x79, 0x76, 0xe9, 0x7f, 0x13, 0xb0, 0x30, 0x35, 0xe5, 0x48, 0x87, + 0xac, 0x47, 0x2d, 0x3a, 0x94, 0xe7, 0x57, 0xae, 0x0a, 0x67, 0xa7, 0x6b, 0xd9, 0x16, 0xad, 0xd1, + 0xe1, 0x18, 0x2b, 0x0e, 0x7a, 0x74, 0xee, 0x04, 0xbe, 0xff, 0x82, 0xf1, 0x34, 0xf3, 0x0c, 0xfe, + 0x0c, 0x16, 0x6c, 0xdf, 0x39, 0x24, 0xbe, 0x61, 0x51, 0x6f, 0xcf, 0xe9, 0xab, 0xb3, 0xa9, 0x34, + 0x4b, 0x67, 0x5d, 0x00, 0x71, 0x51, 0x0a, 0xd4, 0x04, 0xfe, 0x3b, 0x9c, 0xbe, 0xa5, 0xc7, 0x50, + 0x8c, 0x47, 0x28, 0x3f, 0x4e, 0x02, 0xe7, 0x57, 0x89, 0x4a, 0xe8, 0x44, 0xfa, 0x87, 0xf3, 0x9c, + 0x22, 0xd2, 0x39, 0xf4, 0x26, 0xa4, 0x07, 0xd4, 0x96, 0x7a, 0x16, 0xaa, 0xd7, 0x79, 0x12, 0xf0, + 0x2f, 0xa7, 0x6b, 0x05, 0x1a, 0x94, 0x37, 0x1c, 0x97, 0x6c, 0x53, 0x9b, 0x60, 0x01, 0xd0, 0x0f, + 0x21, 0xcd, 0xb7, 0x0a, 0xf4, 0x0a, 0xa4, 0xab, 0xcd, 0x56, 0x5d, 0x9b, 0x2b, 0x5d, 0x3b, 0x3e, + 0x59, 0x5f, 0x10, 0x2e, 0xe1, 0x0c, 0x1e, 0xbb, 0x68, 0x0d, 0xb2, 0x8f, 0xdb, 0x5b, 0x3b, 0xdb, + 0x3c, 0xbc, 0xae, 0x1f, 0x9f, 0xac, 0x2f, 0x45, 0x6c, 0xe9, 0x34, 0xf4, 0x2a, 0x64, 0x7a, 0xdb, + 0x9d, 0x8d, 0xae, 0x96, 0x2c, 0xa1, 0xe3, 0x93, 0xf5, 0xc5, 0x88, 0x2f, 0x6c, 0x2e, 0x5d, 0x53, + 0xb3, 0x9a, 0x8f, 0xe8, 0xfa, 0x4f, 0x93, 0xb0, 0x80, 0x79, 0x25, 0xe1, 0xb3, 0x0e, 0x75, 0x1d, + 0x6b, 0x8c, 0x3a, 0x90, 0xb7, 0xa8, 0x67, 0x3b, 0xb1, 0x35, 0x75, 0xef, 0x82, 0x53, 0x7f, 0x22, + 0x15, 0xb6, 0x6a, 0xa1, 0x24, 0x9e, 0x28, 0x41, 0xef, 0x41, 0xc6, 0x26, 0xae, 0x39, 0x56, 0xe9, + 0xc7, 0xcd, 0xb2, 0xac, 0x55, 0xca, 0x61, 0xad, 0x52, 0xae, 0xab, 0x5a, 0x05, 0x4b, 0x9c, 0xc8, + 0x93, 0xcd, 0xa7, 0x86, 0xc9, 0x18, 0x19, 0x0c, 0x99, 0xcc, 0x3d, 0xd2, 0xb8, 0x30, 0x30, 0x9f, + 0x56, 0x14, 0x09, 0xdd, 0x85, 0xec, 0x91, 0xe3, 0xd9, 0xf4, 0x48, 0xa5, 0x17, 0x97, 0x28, 0x55, + 0x40, 0xfd, 0x98, 0x9f, 0xba, 0xe7, 0xcc, 0xe4, 0xfe, 0x6e, 0xb5, 0x5b, 0x8d, 0xd0, 0xdf, 0x8a, + 0xdf, 0xf6, 0x5a, 0xd4, 0xe3, 0x6b, 0x05, 0xda, 0x2d, 0x63, 0xa3, 0xd2, 0xdc, 0xda, 0xc1, 0xdc, + 0xe7, 0xcb, 0xc7, 0x27, 0xeb, 0x5a, 0x04, 0xd9, 0x30, 0x1d, 0x97, 0xe7, 0xbb, 0x37, 0x21, 0x55, + 0x69, 0x7d, 0xa1, 0x25, 0x4b, 0xda, 0xf1, 0xc9, 0x7a, 0x31, 0x62, 0x57, 0xbc, 0xf1, 0x64, 0x19, + 0x9d, 0xef, 0x57, 0xff, 0xfb, 0x14, 0x14, 0x77, 0x86, 0xb6, 0xc9, 0x88, 0x8c, 0x49, 0xb4, 0x0e, + 0x85, 0xa1, 0xe9, 0x9b, 0xae, 0x4b, 0x5c, 0x27, 0x18, 0xa8, 0x2a, 0x2c, 0x4e, 0x42, 0x1f, 0xbd, + 0xa8, 0x1b, 0xab, 0x39, 0x1e, 0x67, 0x7f, 0xf0, 0x6f, 0x6b, 0x89, 0xd0, 0xa1, 0x3b, 0xb0, 0xb8, + 0x27, 0xad, 0x35, 0x4c, 0x4b, 0x4c, 0x6c, 0x4a, 0x4c, 0x6c, 0x79, 0xd6, 0xc4, 0xc6, 0xcd, 0x2a, + 0xab, 0x41, 0x56, 0x84, 0x14, 0x5e, 0xd8, 0x8b, 0x37, 0xd1, 0x7d, 0x98, 0x1f, 0x50, 0xcf, 0x61, + 0xd4, 0xbf, 0x7a, 0x16, 0x42, 0x24, 0x7a, 0x07, 0xae, 0xf1, 0xc9, 0x0d, 0xed, 0x11, 0x6c, 0x71, + 0x62, 0x25, 0xf1, 0xd2, 0xc0, 0x7c, 0xaa, 0x3a, 0xc4, 0x9c, 0x8c, 0xaa, 0x90, 0xa1, 0x3e, 0x4f, + 0x89, 0xb2, 0xc2, 0xdc, 0x77, 0xaf, 0x34, 0x57, 0x36, 0xda, 0x5c, 0x06, 0x4b, 0x51, 0xfd, 0x43, + 0x58, 0x98, 0x1a, 0x04, 0xcf, 0x04, 0x3a, 0x95, 0x9d, 0x6e, 0x43, 0x9b, 0x43, 0x45, 0xc8, 0xd5, + 0xda, 0xad, 0x5e, 0xb3, 0xb5, 0xc3, 0x53, 0x99, 0x22, 0xe4, 0x70, 0x7b, 0x6b, 0xab, 0x5a, 0xa9, + 0x3d, 0xd2, 0x92, 0x7a, 0x19, 0x0a, 0x31, 0x6d, 0x68, 0x11, 0xa0, 0xdb, 0x6b, 0x77, 0x8c, 0x8d, + 0x26, 0xee, 0xf6, 0x64, 0x22, 0xd4, 0xed, 0x55, 0x70, 0x4f, 0x11, 0x12, 0xfa, 0x7f, 0x25, 0xc3, + 0x19, 0x55, 0xb9, 0x4f, 0x75, 0x3a, 0xf7, 0xb9, 0xc4, 0x78, 0x95, 0xfd, 0x4c, 0x1a, 0x51, 0x0e, + 0xf4, 0x11, 0x80, 0x08, 0x1c, 0x62, 0x1b, 0x26, 0x53, 0x13, 0x5f, 0x7a, 0xce, 0xc9, 0xbd, 0xf0, + 0x32, 0x00, 0xe7, 0x15, 0xba, 0xc2, 0xd0, 0x0f, 0xa0, 0x68, 0xd1, 0xc1, 0xd0, 0x25, 0x4a, 0x38, + 0x75, 0xa5, 0x70, 0x21, 0xc2, 0x57, 0x58, 0x3c, 0xfb, 0x4a, 0x4f, 0xe7, 0x87, 0xbf, 0x9d, 0x08, + 0x3d, 0x33, 0x23, 0xe1, 0x2a, 0x42, 0x6e, 0xa7, 0x53, 0xaf, 0xf4, 0x9a, 0xad, 0x87, 0x5a, 0x02, + 0x01, 0x64, 0x85, 0xab, 0xeb, 0x5a, 0x92, 0x27, 0x8a, 0xb5, 0xf6, 0x76, 0x67, 0xab, 0x21, 0x52, + 0x2e, 0xb4, 0x0c, 0x5a, 0xe8, 0x6c, 0x43, 0x38, 0xb2, 0x51, 0xd7, 0xd2, 0xe8, 0x3a, 0x2c, 0x45, + 0x54, 0x25, 0x99, 0x41, 0x37, 0x00, 0x45, 0xc4, 0x89, 0x8a, 0xac, 0xfe, 0x1b, 0xb0, 0x54, 0xa3, + 0x1e, 0x33, 0x1d, 0x2f, 0x4a, 0xa2, 0xef, 0xf1, 0x41, 0x2b, 0x92, 0xe1, 0xd8, 0x72, 0x4f, 0xaf, + 0x2e, 0x9d, 0x9d, 0xae, 0x15, 0x22, 0x68, 0xb3, 0xce, 0x47, 0x1a, 0x36, 0x6c, 0xbe, 0x7e, 0x87, + 0x8e, 0x2d, 0x9c, 0x9b, 0xa9, 0xce, 0x9f, 0x9d, 0xae, 0xa5, 0x3a, 0xcd, 0x3a, 0xe6, 0x34, 0xf4, + 0x0a, 0xe4, 0xc9, 0x53, 0x87, 0x19, 0x16, 0xdf, 0xc3, 0xb9, 0x03, 0x33, 0x38, 0xc7, 0x09, 0x35, + 0xbe, 0x65, 0x57, 0x01, 0x3a, 0xd4, 0x67, 0xaa, 0xe7, 0xf7, 0x21, 0x33, 0xa4, 0xbe, 0x28, 0xcf, + 0x2f, 0xbc, 0x8c, 0xe0, 0x70, 0x19, 0xa8, 0x58, 0x82, 0xf5, 0xbf, 0x49, 0x02, 0xf4, 0xcc, 0xe0, + 0x40, 0x29, 0x79, 0x00, 0xf9, 0xe8, 0x62, 0x47, 0xd5, 0xf9, 0x97, 0xce, 0x76, 0x04, 0x46, 0xf7, + 0xc3, 0x60, 0x93, 0xe5, 0xc1, 0xcc, 0x3a, 0x2d, 0xec, 0x68, 0x56, 0x86, 0x3d, 0x5d, 0x03, 0xf0, + 0x23, 0x91, 0xf8, 0xbe, 0x9a, 0x79, 0xfe, 0x89, 0x6a, 0xe2, 0x58, 0x90, 0x4e, 0x53, 0x09, 0xe6, + 0xeb, 0xb3, 0x3a, 0x39, 0x37, 0x23, 0x9b, 0x73, 0x78, 0x22, 0x87, 0x3e, 0x83, 0x02, 0x1f, 0xb7, + 0x11, 0x08, 0x9e, 0xca, 0x2d, 0x2f, 0x74, 0x95, 0xd4, 0x80, 0x61, 0x18, 0x7d, 0x57, 0x35, 0x58, + 0xf4, 0x47, 0x1e, 0x1f, 0xb6, 0xd2, 0xa1, 0x3b, 0xf0, 0x72, 0x8b, 0xb0, 0x23, 0xea, 0x1f, 0x54, + 0x18, 0x33, 0xad, 0xfd, 0x01, 0xf1, 0x94, 0x8f, 0x63, 0x89, 0x75, 0x62, 0x2a, 0xb1, 0x5e, 0x81, + 0x79, 0xd3, 0x75, 0xcc, 0x80, 0xc8, 0x6c, 0x24, 0x8f, 0xc3, 0x26, 0x4f, 0xff, 0x79, 0x31, 0x41, + 0x82, 0x80, 0xc8, 0xfa, 0x3e, 0x8f, 0x27, 0x04, 0xfd, 0x9f, 0x92, 0x00, 0xcd, 0x4e, 0x65, 0x5b, + 0xa9, 0xaf, 0x43, 0x76, 0xcf, 0x1c, 0x38, 0xee, 0xf8, 0xb2, 0x05, 0x3e, 0xc1, 0x97, 0x2b, 0x52, + 0xd1, 0x86, 0x90, 0xc1, 0x4a, 0x56, 0x54, 0x05, 0xa3, 0x5d, 0x8f, 0xb0, 0xa8, 0x2a, 0x10, 0x2d, + 0x9e, 0x82, 0xf8, 0xa6, 0x17, 0xcd, 0x8c, 0x6c, 0x70, 0xd3, 0xfb, 0x26, 0x23, 0x47, 0xe6, 0x38, + 0x5c, 0x95, 0xaa, 0x89, 0x36, 0x79, 0xb5, 0x10, 0x10, 0xff, 0x90, 0xd8, 0x2b, 0x19, 0x11, 0x82, + 0x57, 0xd9, 0x83, 0x15, 0x5c, 0x26, 0x57, 0x91, 0x74, 0xe9, 0x13, 0x91, 0x11, 0x4c, 0x58, 0xdf, + 0xea, 0x76, 0xe2, 0x0e, 0x2c, 0x4c, 0x8d, 0xf3, 0xb9, 0x72, 0xac, 0xd9, 0x79, 0xfc, 0xbe, 0x96, + 0x56, 0x5f, 0x1f, 0x6a, 0x59, 0xfd, 0x4f, 0x53, 0x72, 0x1d, 0x29, 0xaf, 0xce, 0xbe, 0x2f, 0xcc, + 0x89, 0xe8, 0xb7, 0xa8, 0xab, 0xe2, 0xfb, 0xcd, 0xcb, 0x97, 0x17, 0x4f, 0xef, 0x05, 0x1c, 0x47, + 0x82, 0x68, 0x0d, 0x0a, 0x72, 0xfe, 0x0d, 0x1e, 0x4f, 0xc2, 0xad, 0x0b, 0x18, 0x24, 0x89, 0x4b, + 0xa2, 0xdb, 0xb0, 0x28, 0xca, 0xf7, 0x60, 0x9f, 0xd8, 0x12, 0x93, 0x16, 0x98, 0x85, 0x88, 0x2a, + 0x60, 0xdb, 0x50, 0x54, 0x04, 0x43, 0xa4, 0x76, 0x19, 0x61, 0xd0, 0x3b, 0x57, 0x19, 0x24, 0x45, + 0x44, 0xc6, 0x57, 0x18, 0x4e, 0x1a, 0x7a, 0x1d, 0x72, 0xa1, 0xb1, 0x68, 0x05, 0x52, 0xbd, 0x5a, + 0x47, 0x9b, 0x2b, 0x2d, 0x1d, 0x9f, 0xac, 0x17, 0x42, 0x72, 0xaf, 0xd6, 0xe1, 0x9c, 0x9d, 0x7a, + 0x47, 0x4b, 0x4c, 0x73, 0x76, 0xea, 0x9d, 0x52, 0x9a, 0xa7, 0x18, 0xfa, 0x1e, 0x14, 0x62, 0x3d, + 0xa0, 0xd7, 0x61, 0xbe, 0xd9, 0x7a, 0x88, 0x1b, 0xdd, 0xae, 0x36, 0x57, 0xba, 0x71, 0x7c, 0xb2, + 0x8e, 0x62, 0xdc, 0xa6, 0xd7, 0xe7, 0xf3, 0x83, 0x5e, 0x85, 0xf4, 0x66, 0x9b, 0x1f, 0x5d, 0x32, + 0x97, 0x8c, 0x21, 0x36, 0x69, 0xc0, 0x4a, 0xd7, 0x55, 0xee, 0x12, 0x57, 0xac, 0xff, 0x61, 0x02, + 0xb2, 0x32, 0xa5, 0x9e, 0x39, 0x51, 0x15, 0x98, 0x0f, 0x0b, 0x3d, 0x99, 0xe7, 0xbf, 0x79, 0x71, + 0x4e, 0x5e, 0x56, 0x29, 0xb4, 0x0c, 0xbf, 0x50, 0xae, 0xf4, 0x31, 0x14, 0xe3, 0x8c, 0x6f, 0x15, + 0x7c, 0xbf, 0x06, 0x05, 0x1e, 0xdf, 0x61, 0x6e, 0x7e, 0x0f, 0xb2, 0x32, 0xed, 0x8f, 0xb6, 0xd2, + 0x8b, 0x0b, 0x04, 0x85, 0x44, 0x0f, 0x60, 0x5e, 0x16, 0x15, 0xe1, 0xfd, 0xde, 0xea, 0xe5, 0xab, + 0x08, 0x87, 0x70, 0xfd, 0x33, 0x48, 0x77, 0x08, 0xf1, 0xb9, 0xef, 0x3d, 0x6a, 0x93, 0xc9, 0xe9, + 0xa3, 0xea, 0x21, 0x9b, 0x34, 0xeb, 0xbc, 0x1e, 0xb2, 0x49, 0xd3, 0x8e, 0x6e, 0x30, 0x92, 0xb1, + 0x1b, 0x8c, 0x1e, 0x14, 0x9f, 0x10, 0xa7, 0xbf, 0xcf, 0x88, 0x2d, 0x14, 0xbd, 0x0b, 0xe9, 0x21, + 0x89, 0x8c, 0x5f, 0x99, 0x19, 0x60, 0x84, 0xf8, 0x58, 0xa0, 0xf8, 0x3e, 0x72, 0x24, 0xa4, 0xd5, + 0xad, 0xb2, 0x6a, 0xe9, 0xff, 0x98, 0x84, 0xc5, 0x66, 0x10, 0x8c, 0x4c, 0xcf, 0x0a, 0x13, 0x93, + 0x4f, 0xa7, 0x13, 0x93, 0xb7, 0x66, 0x8e, 0x70, 0x4a, 0x64, 0xfa, 0x62, 0x46, 0x1d, 0x0e, 0xc9, + 0xe8, 0x70, 0xd0, 0xff, 0x33, 0x11, 0xde, 0xbe, 0xdc, 0x8e, 0x2d, 0xf7, 0xd2, 0xca, 0xf1, 0xc9, + 0xfa, 0x72, 0x5c, 0x13, 0xd9, 0xf1, 0x0e, 0x3c, 0x7a, 0xe4, 0xa1, 0xd7, 0x20, 0x83, 0x1b, 0xad, + 0xc6, 0x13, 0x2d, 0x21, 0xc3, 0x73, 0x0a, 0x84, 0x89, 0x47, 0x8e, 0xb8, 0xa6, 0x4e, 0xa3, 0x55, + 0xe7, 0x89, 0x44, 0x72, 0x86, 0xa6, 0x0e, 0xf1, 0x6c, 0xc7, 0xeb, 0xa3, 0xd7, 0x21, 0xdb, 0xec, + 0x76, 0x77, 0x44, 0x7d, 0xfc, 0xf2, 0xf1, 0xc9, 0xfa, 0xf5, 0x29, 0x94, 0xb8, 0x79, 0xb3, 0x39, + 0x88, 0x67, 0xf1, 0x3c, 0xc5, 0x98, 0x01, 0xe2, 0xe9, 0xa1, 0x04, 0xe1, 0x76, 0x8f, 0x17, 0xef, + 0x99, 0x19, 0x20, 0x4c, 0xf9, 0x5f, 0xb5, 0xdc, 0xfe, 0x35, 0x09, 0x5a, 0xc5, 0xb2, 0xc8, 0x90, + 0x71, 0xbe, 0x2a, 0x9c, 0x7a, 0x90, 0x1b, 0xf2, 0x2f, 0x87, 0x84, 0x49, 0xc0, 0x83, 0x99, 0xef, + 0x1a, 0xe7, 0xe4, 0xca, 0x98, 0xba, 0xa4, 0x62, 0x0f, 0x9c, 0x20, 0x70, 0xa8, 0x27, 0x69, 0x38, + 0xd2, 0x54, 0xfa, 0xef, 0x04, 0x5c, 0x9f, 0x81, 0x40, 0x77, 0x20, 0xed, 0x53, 0x37, 0x9c, 0xc3, + 0x5b, 0x17, 0x5d, 0xac, 0x71, 0x51, 0x2c, 0x90, 0x68, 0x15, 0xc0, 0x1c, 0x31, 0x6a, 0x8a, 0xfe, + 0xc5, 0xec, 0xe5, 0x70, 0x8c, 0x82, 0x9e, 0x40, 0x36, 0x20, 0x96, 0x4f, 0xc2, 0x54, 0xf1, 0xb3, + 0x9f, 0xd5, 0xfa, 0x72, 0x57, 0xa8, 0xc1, 0x4a, 0x5d, 0xa9, 0x0c, 0x59, 0x49, 0xe1, 0x61, 0x6f, + 0x9b, 0xcc, 0x54, 0xd7, 0xae, 0xe2, 0x9b, 0x47, 0x93, 0xe9, 0xf6, 0xc3, 0x68, 0x32, 0xdd, 0xbe, + 0xfe, 0x77, 0x49, 0x80, 0xc6, 0x53, 0x46, 0x7c, 0xcf, 0x74, 0x6b, 0x15, 0xd4, 0x88, 0xed, 0xfe, + 0x72, 0xb4, 0x6f, 0xcf, 0xbc, 0x4b, 0x8e, 0x24, 0xca, 0xb5, 0xca, 0x8c, 0xfd, 0xff, 0x26, 0xa4, + 0x46, 0xbe, 0x7a, 0xaa, 0x92, 0x69, 0xde, 0x0e, 0xde, 0xc2, 0x9c, 0x86, 0x1a, 0x93, 0x6d, 0x2b, + 0x75, 0xf1, 0x83, 0x54, 0xac, 0x83, 0x99, 0x5b, 0x17, 0x5f, 0xf9, 0x96, 0x69, 0x58, 0x44, 0x9d, + 0x1c, 0x45, 0xb9, 0xf2, 0x6b, 0x95, 0x1a, 0xf1, 0x19, 0xce, 0x5a, 0x26, 0xff, 0xff, 0x9d, 0xf6, + 0xb7, 0x77, 0x01, 0x26, 0x43, 0x43, 0xab, 0x90, 0xa9, 0x6d, 0x74, 0xbb, 0x5b, 0xda, 0x9c, 0xdc, + 0xc0, 0x27, 0x2c, 0x41, 0xd6, 0xff, 0x2a, 0x09, 0xb9, 0x5a, 0x45, 0x1d, 0xab, 0x35, 0xd0, 0xc4, + 0xae, 0x24, 0x2e, 0xab, 0xc9, 0xd3, 0xa1, 0xe3, 0x8f, 0xd5, 0xc6, 0x72, 0x49, 0xcd, 0xb6, 0xc8, + 0x45, 0xb8, 0xd5, 0x0d, 0x21, 0x80, 0x30, 0x14, 0x89, 0x72, 0x82, 0x61, 0x99, 0xe1, 0x1e, 0xbf, + 0x7a, 0xb9, 0xb3, 0x64, 0xf6, 0x3d, 0x69, 0x07, 0xb8, 0x10, 0x2a, 0xa9, 0x99, 0x01, 0xfa, 0x08, + 0x96, 0x02, 0xa7, 0xef, 0x39, 0x5e, 0xdf, 0x08, 0x9d, 0x27, 0x6e, 0xce, 0xab, 0xd7, 0xce, 0x4e, + 0xd7, 0x16, 0xba, 0x92, 0xa5, 0x7c, 0xb8, 0xa0, 0x90, 0x35, 0xe1, 0x4a, 0xf4, 0x21, 0x2c, 0xc6, + 0x44, 0xb9, 0x17, 0xa5, 0xdb, 0xb5, 0xb3, 0xd3, 0xb5, 0x62, 0x24, 0xf9, 0x88, 0x8c, 0x71, 0x31, + 0x12, 0x7c, 0x44, 0xc4, 0xf5, 0xc2, 0x1e, 0xf5, 0x2d, 0x62, 0xf8, 0x62, 0x4d, 0x8b, 0x13, 0x3c, + 0x8d, 0x0b, 0x82, 0x26, 0x97, 0xb9, 0xfe, 0x18, 0xae, 0xb7, 0x7d, 0x6b, 0x9f, 0x04, 0x4c, 0xba, + 0x42, 0x79, 0xf1, 0x33, 0xb8, 0xc5, 0xcc, 0xe0, 0xc0, 0xd8, 0x77, 0x02, 0x46, 0xfd, 0xb1, 0xe1, + 0x13, 0x46, 0x3c, 0xce, 0x37, 0xc4, 0x73, 0x9b, 0xba, 0xff, 0xb9, 0xc9, 0x31, 0x9b, 0x12, 0x82, + 0x43, 0xc4, 0x16, 0x07, 0xe8, 0x4d, 0x28, 0xf2, 0x2c, 0xbc, 0x4e, 0xf6, 0xcc, 0x91, 0xcb, 0xf8, + 0xe8, 0xc1, 0xa5, 0x7d, 0xe3, 0x85, 0x8f, 0xa9, 0xbc, 0x4b, 0xfb, 0xf2, 0x53, 0xff, 0x11, 0x68, + 0x75, 0x27, 0x18, 0x9a, 0xcc, 0xda, 0x0f, 0x2f, 0xb6, 0x50, 0x1d, 0xb4, 0x7d, 0x62, 0xfa, 0x6c, + 0x97, 0x98, 0xcc, 0x18, 0x12, 0xdf, 0xa1, 0xf6, 0xd5, 0xb3, 0xbc, 0x14, 0x89, 0x74, 0x84, 0x84, + 0xfe, 0x3f, 0x09, 0x00, 0x6c, 0xee, 0x85, 0x19, 0xd9, 0xf7, 0xe1, 0x5a, 0xe0, 0x99, 0xc3, 0x60, + 0x9f, 0x32, 0xc3, 0xf1, 0x18, 0xf1, 0x0f, 0x4d, 0x57, 0xdd, 0x4f, 0x68, 0x21, 0xa3, 0xa9, 0xe8, + 0xe8, 0x5d, 0x40, 0x07, 0x84, 0x0c, 0x0d, 0xea, 0xda, 0x46, 0xc8, 0x94, 0x8f, 0x81, 0x69, 0xac, + 0x71, 0x4e, 0xdb, 0xb5, 0xbb, 0x21, 0x1d, 0x55, 0x61, 0x95, 0x0f, 0x9f, 0x78, 0xcc, 0x77, 0x48, + 0x60, 0xec, 0x51, 0xdf, 0x08, 0x5c, 0x7a, 0x64, 0xec, 0x51, 0xd7, 0xa5, 0x47, 0xc4, 0x0f, 0xaf, + 0x7e, 0x4a, 0x2e, 0xed, 0x37, 0x24, 0x68, 0x83, 0xfa, 0x5d, 0x97, 0x1e, 0x6d, 0x84, 0x08, 0x9e, + 0xb6, 0x4d, 0xc6, 0xcc, 0x1c, 0xeb, 0x20, 0x4c, 0xdb, 0x22, 0x6a, 0xcf, 0xb1, 0x0e, 0xd0, 0xeb, + 0xb0, 0x40, 0x5c, 0x22, 0x6e, 0x00, 0x24, 0x2a, 0x23, 0x50, 0xc5, 0x90, 0xc8, 0x41, 0xfa, 0xe7, + 0xa0, 0x35, 0x3c, 0xcb, 0x1f, 0x0f, 0x63, 0x73, 0xfe, 0x2e, 0x20, 0xbe, 0x49, 0x1a, 0x2e, 0xb5, + 0x0e, 0x8c, 0x81, 0xe9, 0x99, 0x7d, 0x6e, 0x97, 0x7c, 0xa3, 0xd1, 0x38, 0x67, 0x8b, 0x5a, 0x07, + 0xdb, 0x8a, 0xae, 0x7f, 0x04, 0xd0, 0x1d, 0xfa, 0xc4, 0xb4, 0xdb, 0x3c, 0x9b, 0xe0, 0xae, 0x13, + 0x2d, 0xc3, 0x56, 0x6f, 0x5c, 0xd4, 0x57, 0x4b, 0x5d, 0x93, 0x8c, 0x7a, 0x44, 0xd7, 0x7f, 0x09, + 0xae, 0x77, 0x5c, 0xd3, 0x12, 0xef, 0xbd, 0x9d, 0xe8, 0xd1, 0x01, 0x3d, 0x80, 0xac, 0x84, 0xaa, + 0x99, 0x9c, 0xb9, 0xdc, 0x26, 0x7d, 0x6e, 0xce, 0x61, 0x85, 0xaf, 0x16, 0x01, 0x26, 0x7a, 0xf4, + 0xbf, 0x48, 0x40, 0x3e, 0xd2, 0x8f, 0xd6, 0x81, 0xd7, 0xc0, 0x3c, 0xbc, 0x1d, 0x4f, 0x15, 0xad, + 0x79, 0x1c, 0x27, 0xa1, 0x26, 0x14, 0x86, 0x91, 0xf4, 0xa5, 0xf9, 0xdc, 0x0c, 0xab, 0x71, 0x5c, + 0x16, 0x7d, 0x0c, 0xf9, 0xf0, 0x51, 0x31, 0xdc, 0x61, 0x2f, 0x7f, 0x83, 0x9c, 0xc0, 0xf5, 0x4f, + 0x01, 0x7e, 0x48, 0x1d, 0xaf, 0x47, 0x0f, 0x88, 0x27, 0x1e, 0xc9, 0x78, 0xa9, 0x47, 0x42, 0x2f, + 0xaa, 0x96, 0xa8, 0x64, 0xe5, 0x14, 0x44, 0x6f, 0x45, 0xb2, 0xa9, 0xff, 0x6d, 0x12, 0xb2, 0x98, + 0x52, 0x56, 0xab, 0xa0, 0x75, 0xc8, 0xaa, 0x7d, 0x42, 0x9c, 0x3f, 0xd5, 0xfc, 0xd9, 0xe9, 0x5a, + 0x46, 0x6e, 0x10, 0x19, 0x4b, 0xec, 0x0c, 0xb1, 0x1d, 0x3c, 0x79, 0xd1, 0x0e, 0x8e, 0xee, 0x40, + 0x51, 0x81, 0x8c, 0x7d, 0x33, 0xd8, 0x97, 0x05, 0x5a, 0x75, 0xf1, 0xec, 0x74, 0x0d, 0x24, 0x72, + 0xd3, 0x0c, 0xf6, 0x31, 0x48, 0x34, 0xff, 0x46, 0x0d, 0x28, 0x7c, 0x49, 0x1d, 0xcf, 0x60, 0x62, + 0x10, 0xea, 0xae, 0x6c, 0xe6, 0x3c, 0x4e, 0x86, 0xaa, 0x5e, 0x8c, 0xe1, 0xcb, 0xc9, 0xe0, 0x1b, + 0xb0, 0xe0, 0x53, 0xca, 0xe4, 0xb6, 0xe5, 0x50, 0x4f, 0x95, 0xe1, 0xeb, 0x33, 0x6f, 0x67, 0x29, + 0x65, 0x58, 0xe1, 0x70, 0xd1, 0x8f, 0xb5, 0xd0, 0x1d, 0x58, 0x76, 0xcd, 0x80, 0x19, 0x62, 0xbf, + 0xb3, 0x27, 0xda, 0xb2, 0x62, 0xa9, 0x21, 0xce, 0xdb, 0x10, 0xac, 0x50, 0x42, 0xff, 0xe7, 0x04, + 0x14, 0xf8, 0x60, 0x9c, 0x3d, 0xc7, 0xe2, 0x49, 0xde, 0xb7, 0xcf, 0x3d, 0x6e, 0x42, 0xca, 0x0a, + 0x7c, 0xe5, 0x54, 0x71, 0xf8, 0xd6, 0xba, 0x18, 0x73, 0x1a, 0xfa, 0x1c, 0xb2, 0xea, 0x3a, 0x40, + 0xa6, 0x1d, 0xfa, 0xd5, 0xe9, 0xa8, 0xf2, 0x8d, 0x92, 0x13, 0xb1, 0x3c, 0xb1, 0x4e, 0x1e, 0x02, + 0x38, 0x4e, 0x42, 0x37, 0x20, 0x69, 0x49, 0x77, 0xa9, 0x9f, 0x24, 0xd4, 0x5a, 0x38, 0x69, 0x79, + 0xfa, 0x3f, 0x24, 0x60, 0x61, 0xb2, 0xe0, 0x79, 0x04, 0xdc, 0x82, 0x7c, 0x30, 0xda, 0x0d, 0xc6, + 0x01, 0x23, 0x83, 0xf0, 0x01, 0x30, 0x22, 0xa0, 0x26, 0xe4, 0x4d, 0xb7, 0x4f, 0x7d, 0x87, 0xed, + 0x0f, 0x54, 0x25, 0x3a, 0x3b, 0x55, 0x88, 0xeb, 0x2c, 0x57, 0x42, 0x11, 0x3c, 0x91, 0x0e, 0xcf, + 0x7d, 0xf9, 0x4a, 0x2c, 0xce, 0xfd, 0xd7, 0xa0, 0xe8, 0x9a, 0x03, 0x71, 0x3f, 0xc2, 0x9c, 0x81, + 0x1c, 0x47, 0x1a, 0x17, 0x14, 0xad, 0xe7, 0x0c, 0x88, 0xae, 0x43, 0x3e, 0x52, 0x86, 0x96, 0xa0, + 0x50, 0x69, 0x74, 0x8d, 0xbb, 0xf7, 0x1e, 0x18, 0x0f, 0x6b, 0xdb, 0xda, 0x9c, 0xca, 0x4d, 0xff, + 0x32, 0x01, 0x0b, 0x6a, 0x3b, 0x52, 0xf9, 0xfe, 0xeb, 0x30, 0xef, 0x9b, 0x7b, 0x2c, 0xac, 0x48, + 0xd2, 0x32, 0xaa, 0xf9, 0x0e, 0xcf, 0x2b, 0x12, 0xce, 0x9a, 0x5d, 0x91, 0xc4, 0x9e, 0xa4, 0x53, + 0x97, 0x3e, 0x49, 0xa7, 0x7f, 0x2e, 0x4f, 0xd2, 0xfa, 0x6f, 0x02, 0x6c, 0x38, 0x2e, 0xe9, 0xc9, + 0x5b, 0x9a, 0x59, 0xf5, 0x25, 0xcf, 0xe1, 0xd4, 0x55, 0x5d, 0x98, 0xc3, 0x35, 0xeb, 0x98, 0xd3, + 0x38, 0xab, 0xef, 0xd8, 0x6a, 0x31, 0x0a, 0xd6, 0x43, 0xce, 0xea, 0x3b, 0x76, 0xf4, 0x08, 0x93, + 0xbe, 0xea, 0x11, 0xe6, 0x24, 0x01, 0x4b, 0x2a, 0x77, 0x8d, 0xb6, 0xdf, 0xb7, 0x21, 0x2f, 0xd3, + 0xd8, 0x49, 0x41, 0x27, 0x9e, 0x61, 0x25, 0xae, 0x59, 0xc7, 0x39, 0xc9, 0x6e, 0xda, 0x68, 0x0d, + 0x0a, 0x0a, 0x1a, 0xfb, 0xf9, 0x0a, 0x48, 0x52, 0x8b, 0x9b, 0xff, 0x3e, 0xa4, 0xf7, 0x1c, 0x97, + 0xa8, 0x40, 0x9f, 0xb9, 0x01, 0x4c, 0x1c, 0xb0, 0x39, 0x87, 0x05, 0xba, 0x9a, 0x0b, 0xaf, 0xb1, + 0x84, 0x7d, 0xaa, 0xec, 0x8c, 0xdb, 0x27, 0x2b, 0xd0, 0x73, 0xf6, 0x49, 0x1c, 0xb7, 0x4f, 0xb2, + 0xa5, 0x7d, 0x0a, 0x1a, 0xb7, 0x4f, 0x92, 0x7e, 0x2e, 0xf6, 0x6d, 0xc1, 0x8d, 0xaa, 0x6b, 0x5a, + 0x07, 0xae, 0x13, 0x30, 0x62, 0xc7, 0x77, 0x8c, 0x7b, 0x90, 0x9d, 0x4a, 0x3a, 0x2f, 0xbb, 0xd5, + 0x54, 0x48, 0xfd, 0x3f, 0x12, 0x50, 0xdc, 0x24, 0xa6, 0xcb, 0xf6, 0x27, 0x57, 0x43, 0x8c, 0x04, + 0x4c, 0x1d, 0x56, 0xe2, 0x1b, 0x7d, 0x00, 0xb9, 0x28, 0x27, 0xb9, 0xf2, 0x79, 0x29, 0x82, 0xa2, + 0xfb, 0x30, 0xcf, 0xd7, 0x18, 0x1d, 0x85, 0xc5, 0xce, 0x65, 0x2f, 0x17, 0x0a, 0xc9, 0x0f, 0x19, + 0x9f, 0x88, 0x24, 0x44, 0x84, 0x52, 0x06, 0x87, 0x4d, 0xf4, 0x8b, 0x50, 0x14, 0x17, 0xef, 0x61, + 0xce, 0x95, 0xb9, 0x4a, 0x67, 0x41, 0xbe, 0x9d, 0xc9, 0x7c, 0xeb, 0xff, 0x12, 0xb0, 0xbc, 0x6d, + 0x8e, 0x77, 0x89, 0xda, 0x36, 0x88, 0x8d, 0x89, 0x45, 0x7d, 0x1b, 0x75, 0xe2, 0xdb, 0xcd, 0x25, + 0x4f, 0x71, 0xb3, 0x84, 0x67, 0xef, 0x3a, 0x61, 0x01, 0x96, 0x8c, 0x15, 0x60, 0xcb, 0x90, 0xf1, + 0xa8, 0x67, 0x11, 0xb5, 0x17, 0xc9, 0x86, 0xee, 0xc4, 0xb7, 0x9a, 0x52, 0xf4, 0x4a, 0x26, 0xde, + 0xb8, 0x5a, 0x94, 0x45, 0xbd, 0xa1, 0xcf, 0xa1, 0xd4, 0x6d, 0xd4, 0x70, 0xa3, 0x57, 0x6d, 0xff, + 0xc8, 0xe8, 0x56, 0xb6, 0xba, 0x95, 0x7b, 0x77, 0x8c, 0x4e, 0x7b, 0xeb, 0x8b, 0xbb, 0xf7, 0xef, + 0x7c, 0xa0, 0x25, 0x4a, 0xeb, 0xc7, 0x27, 0xeb, 0xb7, 0x5a, 0x95, 0xda, 0x96, 0x5c, 0x31, 0xbb, + 0xf4, 0x69, 0xd7, 0x74, 0x03, 0xf3, 0xde, 0x9d, 0x0e, 0x75, 0xc7, 0x1c, 0xc3, 0xc3, 0xba, 0x18, + 0x3f, 0xaf, 0xe2, 0xc7, 0x70, 0xe2, 0xc2, 0x63, 0x78, 0x72, 0x9a, 0x27, 0x2f, 0x38, 0xcd, 0x37, + 0x60, 0xd9, 0xf2, 0x69, 0x10, 0x18, 0x3c, 0xfb, 0x27, 0xf6, 0xb9, 0xfa, 0xe2, 0xa5, 0xb3, 0xd3, + 0xb5, 0x6b, 0x35, 0xce, 0xef, 0x0a, 0xb6, 0x52, 0x7f, 0xcd, 0x8a, 0x91, 0x44, 0x4f, 0xfa, 0x1f, + 0xa5, 0x78, 0x22, 0xe5, 0x1c, 0x3a, 0x2e, 0xe9, 0x93, 0x00, 0x3d, 0x86, 0x25, 0xcb, 0x27, 0x36, + 0x4f, 0xeb, 0x4d, 0xd7, 0x08, 0x86, 0xc4, 0x52, 0x41, 0xfd, 0x0b, 0x33, 0x73, 0x9a, 0x48, 0xb0, + 0x5c, 0x8b, 0xa4, 0xba, 0x43, 0x62, 0xe1, 0x45, 0x6b, 0xaa, 0x8d, 0xbe, 0x84, 0xa5, 0x80, 0xb8, + 0x8e, 0x37, 0x7a, 0x6a, 0x58, 0xd4, 0x63, 0xe4, 0x69, 0xf8, 0xe0, 0x73, 0x95, 0xde, 0x6e, 0x63, + 0x8b, 0x4b, 0xd5, 0xa4, 0x50, 0x15, 0x9d, 0x9d, 0xae, 0x2d, 0x4e, 0xd3, 0xf0, 0xa2, 0xd2, 0xac, + 0xda, 0xa5, 0x16, 0x2c, 0x4e, 0x5b, 0x83, 0x96, 0xd5, 0xda, 0x17, 0x5b, 0x48, 0xb8, 0xb6, 0xd1, + 0x2d, 0xc8, 0xf9, 0xa4, 0xef, 0x04, 0xcc, 0x97, 0x6e, 0xe6, 0x9c, 0x88, 0xc2, 0x57, 0xbe, 0xfc, + 0x0d, 0x4b, 0xe9, 0xd7, 0xe1, 0x5c, 0x8f, 0x7c, 0xb1, 0xd8, 0x4e, 0x60, 0xee, 0x2a, 0x95, 0x39, + 0x1c, 0x36, 0x79, 0x0c, 0x8e, 0x82, 0x28, 0x51, 0x13, 0xdf, 0x9c, 0x26, 0x32, 0x0a, 0xf5, 0x8b, + 0x1e, 0x91, 0x33, 0x84, 0x3f, 0x0d, 0x4c, 0xc7, 0x7e, 0x1a, 0xb8, 0x0c, 0x19, 0x97, 0x1c, 0x12, + 0x57, 0x9e, 0xe5, 0x58, 0x36, 0xde, 0xf9, 0x69, 0x0a, 0xf2, 0xd1, 0xe3, 0x06, 0x3f, 0x09, 0x5a, + 0x8d, 0x27, 0x61, 0xac, 0x46, 0xf4, 0x16, 0x39, 0x42, 0xaf, 0x4d, 0xee, 0x94, 0x3e, 0x97, 0xaf, + 0xb9, 0x11, 0x3b, 0xbc, 0x4f, 0x7a, 0x03, 0x72, 0x95, 0x6e, 0xb7, 0xf9, 0xb0, 0xd5, 0xa8, 0x6b, + 0x5f, 0x25, 0x4a, 0x2f, 0x1d, 0x9f, 0xac, 0x5f, 0x8b, 0x40, 0x95, 0x40, 0x86, 0x92, 0x40, 0xd5, + 0x6a, 0x8d, 0x4e, 0xaf, 0x51, 0xd7, 0x9e, 0x25, 0xcf, 0xa3, 0xc4, 0x1d, 0x89, 0xf8, 0x4d, 0x46, + 0xbe, 0x83, 0x1b, 0x9d, 0x0a, 0xe6, 0x1d, 0x7e, 0x95, 0x94, 0x57, 0x5d, 0x93, 0x1e, 0x7d, 0x32, + 0x34, 0x7d, 0xde, 0xe7, 0x6a, 0xf8, 0xdb, 0xa4, 0x67, 0x29, 0xf9, 0x6e, 0x3f, 0x79, 0xa9, 0x21, + 0xa6, 0x3d, 0xe6, 0xbd, 0x89, 0x27, 0x32, 0xa1, 0x26, 0x75, 0xae, 0xb7, 0x2e, 0xdf, 0x49, 0xb8, + 0x16, 0x1d, 0xe6, 0xf1, 0x4e, 0xab, 0xc5, 0x41, 0xcf, 0xd2, 0xe7, 0x46, 0x87, 0x47, 0x1e, 0xaf, + 0x7f, 0xd1, 0x6d, 0xc8, 0x85, 0x2f, 0x68, 0xda, 0x57, 0xe9, 0x73, 0x06, 0xd5, 0xc2, 0xe7, 0x3f, + 0xd1, 0xe1, 0xe6, 0x4e, 0x4f, 0xfc, 0x74, 0xea, 0x59, 0xe6, 0x7c, 0x87, 0xfb, 0x23, 0x66, 0xd3, + 0x23, 0x8f, 0xaf, 0x40, 0x75, 0xab, 0xf6, 0x55, 0x46, 0x5e, 0x41, 0x44, 0x18, 0x75, 0xa5, 0xf6, + 0x06, 0xe4, 0x70, 0xe3, 0x87, 0xf2, 0x57, 0x56, 0xcf, 0xb2, 0xe7, 0xf4, 0x60, 0xf2, 0x25, 0xb1, + 0x54, 0x6f, 0x6d, 0xdc, 0xd9, 0xac, 0x08, 0x97, 0x9f, 0x47, 0xb5, 0xfd, 0xe1, 0xbe, 0xe9, 0x11, + 0x7b, 0xf2, 0xe3, 0x85, 0x88, 0xf5, 0xce, 0x2f, 0x43, 0x2e, 0xcc, 0x33, 0xd1, 0x2a, 0x64, 0x9f, + 0xb4, 0xf1, 0xa3, 0x06, 0xd6, 0xe6, 0xa4, 0x0f, 0x43, 0xce, 0x13, 0x59, 0x21, 0xac, 0xc3, 0xfc, + 0x76, 0xa5, 0x55, 0x79, 0xd8, 0xc0, 0xe1, 0x85, 0x77, 0x08, 0x50, 0xc9, 0x52, 0x49, 0x53, 0x1d, + 0x44, 0x3a, 0xab, 0x2b, 0x5f, 0x7f, 0xb3, 0x3a, 0xf7, 0x93, 0x6f, 0x56, 0xe7, 0x9e, 0x9d, 0xad, + 0x26, 0xbe, 0x3e, 0x5b, 0x4d, 0xfc, 0xf8, 0x6c, 0x35, 0xf1, 0xef, 0x67, 0xab, 0x89, 0xdd, 0xac, + 0xd8, 0xd2, 0xef, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa9, 0x00, 0x24, 0x61, 0xb9, 0x2d, + 0x00, 0x00, } diff --git a/vendor/github.com/docker/swarmkit/api/types.proto b/vendor/github.com/docker/swarmkit/api/types.proto index ef580a9729..6aeb28263f 100644 --- a/vendor/github.com/docker/swarmkit/api/types.proto +++ b/vendor/github.com/docker/swarmkit/api/types.proto @@ -771,6 +771,11 @@ message Placement { // such as topology. They are provided in order from highest to lowest // precedence. repeated PlacementPreference preferences = 2; + + // Platforms stores all the platforms that the image can run on. + // This field is used in the platform filter for scheduling. If empty, + // then the platform filter is off, meaning there are no scheduling restrictions. + repeated Platform platforms = 3; } // JoinToken contains the join tokens for workers and managers. diff --git a/vendor/github.com/docker/swarmkit/api/store.pb.go b/vendor/github.com/docker/swarmkit/api/watch.pb.go similarity index 84% rename from vendor/github.com/docker/swarmkit/api/store.pb.go rename to vendor/github.com/docker/swarmkit/api/watch.pb.go index 6a69774c46..3286aee43c 100644 --- a/vendor/github.com/docker/swarmkit/api/store.pb.go +++ b/vendor/github.com/docker/swarmkit/api/watch.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-gogo. -// source: store.proto +// source: watch.proto // DO NOT EDIT! package api @@ -61,7 +61,7 @@ var WatchActionKind_value = map[string]int32{ func (x WatchActionKind) String() string { return proto.EnumName(WatchActionKind_name, int32(x)) } -func (WatchActionKind) EnumDescriptor() ([]byte, []int) { return fileDescriptorStore, []int{0} } +func (WatchActionKind) EnumDescriptor() ([]byte, []int) { return fileDescriptorWatch, []int{0} } type Object struct { // Types that are valid to be assigned to Object: @@ -79,7 +79,7 @@ type Object struct { func (m *Object) Reset() { *m = Object{} } func (*Object) ProtoMessage() {} -func (*Object) Descriptor() ([]byte, []int) { return fileDescriptorStore, []int{0} } +func (*Object) Descriptor() ([]byte, []int) { return fileDescriptorWatch, []int{0} } type isObject_Object interface { isObject_Object() @@ -411,7 +411,7 @@ type SelectBySlot struct { func (m *SelectBySlot) Reset() { *m = SelectBySlot{} } func (*SelectBySlot) ProtoMessage() {} -func (*SelectBySlot) Descriptor() ([]byte, []int) { return fileDescriptorStore, []int{1} } +func (*SelectBySlot) Descriptor() ([]byte, []int) { return fileDescriptorWatch, []int{1} } type SelectByCustom struct { Kind string `protobuf:"bytes,1,opt,name=kind,proto3" json:"kind,omitempty"` @@ -421,7 +421,7 @@ type SelectByCustom struct { func (m *SelectByCustom) Reset() { *m = SelectByCustom{} } func (*SelectByCustom) ProtoMessage() {} -func (*SelectByCustom) Descriptor() ([]byte, []int) { return fileDescriptorStore, []int{2} } +func (*SelectByCustom) Descriptor() ([]byte, []int) { return fileDescriptorWatch, []int{2} } type SelectBy struct { // TODO(aaronl): Are all of these things we want to expose in @@ -450,7 +450,7 @@ type SelectBy struct { func (m *SelectBy) Reset() { *m = SelectBy{} } func (*SelectBy) ProtoMessage() {} -func (*SelectBy) Descriptor() ([]byte, []int) { return fileDescriptorStore, []int{3} } +func (*SelectBy) Descriptor() ([]byte, []int) { return fileDescriptorWatch, []int{3} } type isSelectBy_By interface { isSelectBy_By() @@ -948,7 +948,7 @@ type WatchRequest struct { func (m *WatchRequest) Reset() { *m = WatchRequest{} } func (*WatchRequest) ProtoMessage() {} -func (*WatchRequest) Descriptor() ([]byte, []int) { return fileDescriptorStore, []int{4} } +func (*WatchRequest) Descriptor() ([]byte, []int) { return fileDescriptorWatch, []int{4} } type WatchRequest_WatchEntry struct { // Kind can contain a builtin type such as "node", "secret", etc. or @@ -964,7 +964,7 @@ type WatchRequest_WatchEntry struct { func (m *WatchRequest_WatchEntry) Reset() { *m = WatchRequest_WatchEntry{} } func (*WatchRequest_WatchEntry) ProtoMessage() {} -func (*WatchRequest_WatchEntry) Descriptor() ([]byte, []int) { return fileDescriptorStore, []int{4, 0} } +func (*WatchRequest_WatchEntry) Descriptor() ([]byte, []int) { return fileDescriptorWatch, []int{4, 0} } // WatchMessage is the type of the stream that's returned to the client by // Watch. Note that the first item of this stream will always be a WatchMessage @@ -978,7 +978,7 @@ type WatchMessage struct { func (m *WatchMessage) Reset() { *m = WatchMessage{} } func (*WatchMessage) ProtoMessage() {} -func (*WatchMessage) Descriptor() ([]byte, []int) { return fileDescriptorStore, []int{5} } +func (*WatchMessage) Descriptor() ([]byte, []int) { return fileDescriptorWatch, []int{5} } type WatchMessage_Event struct { // Action (create/update/delete) @@ -995,7 +995,7 @@ type WatchMessage_Event struct { func (m *WatchMessage_Event) Reset() { *m = WatchMessage_Event{} } func (*WatchMessage_Event) ProtoMessage() {} -func (*WatchMessage_Event) Descriptor() ([]byte, []int) { return fileDescriptorStore, []int{5, 0} } +func (*WatchMessage_Event) Descriptor() ([]byte, []int) { return fileDescriptorWatch, []int{5, 0} } func init() { proto.RegisterType((*Object)(nil), "docker.swarmkit.v1.Object") @@ -1009,19 +1009,19 @@ func init() { proto.RegisterEnum("docker.swarmkit.v1.WatchActionKind", WatchActionKind_name, WatchActionKind_value) } -type authenticatedWrapperStoreServer struct { - local StoreServer +type authenticatedWrapperWatchServer struct { + local WatchServer authorize func(context.Context, []string) error } -func NewAuthenticatedWrapperStoreServer(local StoreServer, authorize func(context.Context, []string) error) StoreServer { - return &authenticatedWrapperStoreServer{ +func NewAuthenticatedWrapperWatchServer(local WatchServer, authorize func(context.Context, []string) error) WatchServer { + return &authenticatedWrapperWatchServer{ local: local, authorize: authorize, } } -func (p *authenticatedWrapperStoreServer) Watch(r *WatchRequest, stream Store_WatchServer) error { +func (p *authenticatedWrapperWatchServer) Watch(r *WatchRequest, stream Watch_WatchServer) error { if err := p.authorize(stream.Context(), []string{"swarm-manager"}); err != nil { return err @@ -1344,31 +1344,31 @@ var _ grpc.ClientConn // is compatible with the grpc package it is being compiled against. const _ = grpc.SupportPackageIsVersion4 -// Client API for Store service +// Client API for Watch service -type StoreClient interface { +type WatchClient interface { // Watch starts a stream that returns any changes to objects that match // the specified selectors. When the stream begins, it immediately sends // an empty message back to the client. It is important to wait for // this message before taking any actions that depend on an established // stream of changes for consistency. - Watch(ctx context.Context, in *WatchRequest, opts ...grpc.CallOption) (Store_WatchClient, error) + Watch(ctx context.Context, in *WatchRequest, opts ...grpc.CallOption) (Watch_WatchClient, error) } -type storeClient struct { +type watchClient struct { cc *grpc.ClientConn } -func NewStoreClient(cc *grpc.ClientConn) StoreClient { - return &storeClient{cc} +func NewWatchClient(cc *grpc.ClientConn) WatchClient { + return &watchClient{cc} } -func (c *storeClient) Watch(ctx context.Context, in *WatchRequest, opts ...grpc.CallOption) (Store_WatchClient, error) { - stream, err := grpc.NewClientStream(ctx, &_Store_serviceDesc.Streams[0], c.cc, "/docker.swarmkit.v1.Store/Watch", opts...) +func (c *watchClient) Watch(ctx context.Context, in *WatchRequest, opts ...grpc.CallOption) (Watch_WatchClient, error) { + stream, err := grpc.NewClientStream(ctx, &_Watch_serviceDesc.Streams[0], c.cc, "/docker.swarmkit.v1.Watch/Watch", opts...) if err != nil { return nil, err } - x := &storeWatchClient{stream} + x := &watchWatchClient{stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } @@ -1378,16 +1378,16 @@ func (c *storeClient) Watch(ctx context.Context, in *WatchRequest, opts ...grpc. return x, nil } -type Store_WatchClient interface { +type Watch_WatchClient interface { Recv() (*WatchMessage, error) grpc.ClientStream } -type storeWatchClient struct { +type watchWatchClient struct { grpc.ClientStream } -func (x *storeWatchClient) Recv() (*WatchMessage, error) { +func (x *watchWatchClient) Recv() (*WatchMessage, error) { m := new(WatchMessage) if err := x.ClientStream.RecvMsg(m); err != nil { return nil, err @@ -1395,54 +1395,54 @@ func (x *storeWatchClient) Recv() (*WatchMessage, error) { return m, nil } -// Server API for Store service +// Server API for Watch service -type StoreServer interface { +type WatchServer interface { // Watch starts a stream that returns any changes to objects that match // the specified selectors. When the stream begins, it immediately sends // an empty message back to the client. It is important to wait for // this message before taking any actions that depend on an established // stream of changes for consistency. - Watch(*WatchRequest, Store_WatchServer) error + Watch(*WatchRequest, Watch_WatchServer) error } -func RegisterStoreServer(s *grpc.Server, srv StoreServer) { - s.RegisterService(&_Store_serviceDesc, srv) +func RegisterWatchServer(s *grpc.Server, srv WatchServer) { + s.RegisterService(&_Watch_serviceDesc, srv) } -func _Store_Watch_Handler(srv interface{}, stream grpc.ServerStream) error { +func _Watch_Watch_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(WatchRequest) if err := stream.RecvMsg(m); err != nil { return err } - return srv.(StoreServer).Watch(m, &storeWatchServer{stream}) + return srv.(WatchServer).Watch(m, &watchWatchServer{stream}) } -type Store_WatchServer interface { +type Watch_WatchServer interface { Send(*WatchMessage) error grpc.ServerStream } -type storeWatchServer struct { +type watchWatchServer struct { grpc.ServerStream } -func (x *storeWatchServer) Send(m *WatchMessage) error { +func (x *watchWatchServer) Send(m *WatchMessage) error { return x.ServerStream.SendMsg(m) } -var _Store_serviceDesc = grpc.ServiceDesc{ - ServiceName: "docker.swarmkit.v1.Store", - HandlerType: (*StoreServer)(nil), +var _Watch_serviceDesc = grpc.ServiceDesc{ + ServiceName: "docker.swarmkit.v1.Watch", + HandlerType: (*WatchServer)(nil), Methods: []grpc.MethodDesc{}, Streams: []grpc.StreamDesc{ { StreamName: "Watch", - Handler: _Store_Watch_Handler, + Handler: _Watch_Watch_Handler, ServerStreams: true, }, }, - Metadata: "store.proto", + Metadata: "watch.proto", } func (m *Object) Marshal() (dAtA []byte, err error) { @@ -1475,7 +1475,7 @@ func (m *Object_Node) MarshalTo(dAtA []byte) (int, error) { if m.Node != nil { dAtA[i] = 0xa i++ - i = encodeVarintStore(dAtA, i, uint64(m.Node.Size())) + i = encodeVarintWatch(dAtA, i, uint64(m.Node.Size())) n2, err := m.Node.MarshalTo(dAtA[i:]) if err != nil { return 0, err @@ -1489,7 +1489,7 @@ func (m *Object_Service) MarshalTo(dAtA []byte) (int, error) { if m.Service != nil { dAtA[i] = 0x12 i++ - i = encodeVarintStore(dAtA, i, uint64(m.Service.Size())) + i = encodeVarintWatch(dAtA, i, uint64(m.Service.Size())) n3, err := m.Service.MarshalTo(dAtA[i:]) if err != nil { return 0, err @@ -1503,7 +1503,7 @@ func (m *Object_Network) MarshalTo(dAtA []byte) (int, error) { if m.Network != nil { dAtA[i] = 0x1a i++ - i = encodeVarintStore(dAtA, i, uint64(m.Network.Size())) + i = encodeVarintWatch(dAtA, i, uint64(m.Network.Size())) n4, err := m.Network.MarshalTo(dAtA[i:]) if err != nil { return 0, err @@ -1517,7 +1517,7 @@ func (m *Object_Task) MarshalTo(dAtA []byte) (int, error) { if m.Task != nil { dAtA[i] = 0x22 i++ - i = encodeVarintStore(dAtA, i, uint64(m.Task.Size())) + i = encodeVarintWatch(dAtA, i, uint64(m.Task.Size())) n5, err := m.Task.MarshalTo(dAtA[i:]) if err != nil { return 0, err @@ -1531,7 +1531,7 @@ func (m *Object_Cluster) MarshalTo(dAtA []byte) (int, error) { if m.Cluster != nil { dAtA[i] = 0x2a i++ - i = encodeVarintStore(dAtA, i, uint64(m.Cluster.Size())) + i = encodeVarintWatch(dAtA, i, uint64(m.Cluster.Size())) n6, err := m.Cluster.MarshalTo(dAtA[i:]) if err != nil { return 0, err @@ -1545,7 +1545,7 @@ func (m *Object_Secret) MarshalTo(dAtA []byte) (int, error) { if m.Secret != nil { dAtA[i] = 0x32 i++ - i = encodeVarintStore(dAtA, i, uint64(m.Secret.Size())) + i = encodeVarintWatch(dAtA, i, uint64(m.Secret.Size())) n7, err := m.Secret.MarshalTo(dAtA[i:]) if err != nil { return 0, err @@ -1559,7 +1559,7 @@ func (m *Object_Resource) MarshalTo(dAtA []byte) (int, error) { if m.Resource != nil { dAtA[i] = 0x3a i++ - i = encodeVarintStore(dAtA, i, uint64(m.Resource.Size())) + i = encodeVarintWatch(dAtA, i, uint64(m.Resource.Size())) n8, err := m.Resource.MarshalTo(dAtA[i:]) if err != nil { return 0, err @@ -1573,7 +1573,7 @@ func (m *Object_Extension) MarshalTo(dAtA []byte) (int, error) { if m.Extension != nil { dAtA[i] = 0x42 i++ - i = encodeVarintStore(dAtA, i, uint64(m.Extension.Size())) + i = encodeVarintWatch(dAtA, i, uint64(m.Extension.Size())) n9, err := m.Extension.MarshalTo(dAtA[i:]) if err != nil { return 0, err @@ -1587,7 +1587,7 @@ func (m *Object_Config) MarshalTo(dAtA []byte) (int, error) { if m.Config != nil { dAtA[i] = 0x4a i++ - i = encodeVarintStore(dAtA, i, uint64(m.Config.Size())) + i = encodeVarintWatch(dAtA, i, uint64(m.Config.Size())) n10, err := m.Config.MarshalTo(dAtA[i:]) if err != nil { return 0, err @@ -1614,13 +1614,13 @@ func (m *SelectBySlot) MarshalTo(dAtA []byte) (int, error) { if len(m.ServiceID) > 0 { dAtA[i] = 0xa i++ - i = encodeVarintStore(dAtA, i, uint64(len(m.ServiceID))) + i = encodeVarintWatch(dAtA, i, uint64(len(m.ServiceID))) i += copy(dAtA[i:], m.ServiceID) } if m.Slot != 0 { dAtA[i] = 0x10 i++ - i = encodeVarintStore(dAtA, i, uint64(m.Slot)) + i = encodeVarintWatch(dAtA, i, uint64(m.Slot)) } return i, nil } @@ -1643,19 +1643,19 @@ func (m *SelectByCustom) MarshalTo(dAtA []byte) (int, error) { if len(m.Kind) > 0 { dAtA[i] = 0xa i++ - i = encodeVarintStore(dAtA, i, uint64(len(m.Kind))) + i = encodeVarintWatch(dAtA, i, uint64(len(m.Kind))) i += copy(dAtA[i:], m.Kind) } if len(m.Index) > 0 { dAtA[i] = 0x12 i++ - i = encodeVarintStore(dAtA, i, uint64(len(m.Index))) + i = encodeVarintWatch(dAtA, i, uint64(len(m.Index))) i += copy(dAtA[i:], m.Index) } if len(m.Value) > 0 { dAtA[i] = 0x1a i++ - i = encodeVarintStore(dAtA, i, uint64(len(m.Value))) + i = encodeVarintWatch(dAtA, i, uint64(len(m.Value))) i += copy(dAtA[i:], m.Value) } return i, nil @@ -1690,7 +1690,7 @@ func (m *SelectBy_ID) MarshalTo(dAtA []byte) (int, error) { i := 0 dAtA[i] = 0xa i++ - i = encodeVarintStore(dAtA, i, uint64(len(m.ID))) + i = encodeVarintWatch(dAtA, i, uint64(len(m.ID))) i += copy(dAtA[i:], m.ID) return i, nil } @@ -1698,7 +1698,7 @@ func (m *SelectBy_IDPrefix) MarshalTo(dAtA []byte) (int, error) { i := 0 dAtA[i] = 0x12 i++ - i = encodeVarintStore(dAtA, i, uint64(len(m.IDPrefix))) + i = encodeVarintWatch(dAtA, i, uint64(len(m.IDPrefix))) i += copy(dAtA[i:], m.IDPrefix) return i, nil } @@ -1706,7 +1706,7 @@ func (m *SelectBy_Name) MarshalTo(dAtA []byte) (int, error) { i := 0 dAtA[i] = 0x1a i++ - i = encodeVarintStore(dAtA, i, uint64(len(m.Name))) + i = encodeVarintWatch(dAtA, i, uint64(len(m.Name))) i += copy(dAtA[i:], m.Name) return i, nil } @@ -1714,7 +1714,7 @@ func (m *SelectBy_NamePrefix) MarshalTo(dAtA []byte) (int, error) { i := 0 dAtA[i] = 0x22 i++ - i = encodeVarintStore(dAtA, i, uint64(len(m.NamePrefix))) + i = encodeVarintWatch(dAtA, i, uint64(len(m.NamePrefix))) i += copy(dAtA[i:], m.NamePrefix) return i, nil } @@ -1723,7 +1723,7 @@ func (m *SelectBy_Custom) MarshalTo(dAtA []byte) (int, error) { if m.Custom != nil { dAtA[i] = 0x2a i++ - i = encodeVarintStore(dAtA, i, uint64(m.Custom.Size())) + i = encodeVarintWatch(dAtA, i, uint64(m.Custom.Size())) n12, err := m.Custom.MarshalTo(dAtA[i:]) if err != nil { return 0, err @@ -1737,7 +1737,7 @@ func (m *SelectBy_CustomPrefix) MarshalTo(dAtA []byte) (int, error) { if m.CustomPrefix != nil { dAtA[i] = 0x32 i++ - i = encodeVarintStore(dAtA, i, uint64(m.CustomPrefix.Size())) + i = encodeVarintWatch(dAtA, i, uint64(m.CustomPrefix.Size())) n13, err := m.CustomPrefix.MarshalTo(dAtA[i:]) if err != nil { return 0, err @@ -1750,7 +1750,7 @@ func (m *SelectBy_ServiceID) MarshalTo(dAtA []byte) (int, error) { i := 0 dAtA[i] = 0x3a i++ - i = encodeVarintStore(dAtA, i, uint64(len(m.ServiceID))) + i = encodeVarintWatch(dAtA, i, uint64(len(m.ServiceID))) i += copy(dAtA[i:], m.ServiceID) return i, nil } @@ -1758,7 +1758,7 @@ func (m *SelectBy_NodeID) MarshalTo(dAtA []byte) (int, error) { i := 0 dAtA[i] = 0x42 i++ - i = encodeVarintStore(dAtA, i, uint64(len(m.NodeID))) + i = encodeVarintWatch(dAtA, i, uint64(len(m.NodeID))) i += copy(dAtA[i:], m.NodeID) return i, nil } @@ -1767,7 +1767,7 @@ func (m *SelectBy_Slot) MarshalTo(dAtA []byte) (int, error) { if m.Slot != nil { dAtA[i] = 0x4a i++ - i = encodeVarintStore(dAtA, i, uint64(m.Slot.Size())) + i = encodeVarintWatch(dAtA, i, uint64(m.Slot.Size())) n14, err := m.Slot.MarshalTo(dAtA[i:]) if err != nil { return 0, err @@ -1780,28 +1780,28 @@ func (m *SelectBy_DesiredState) MarshalTo(dAtA []byte) (int, error) { i := 0 dAtA[i] = 0x50 i++ - i = encodeVarintStore(dAtA, i, uint64(m.DesiredState)) + i = encodeVarintWatch(dAtA, i, uint64(m.DesiredState)) return i, nil } func (m *SelectBy_Role) MarshalTo(dAtA []byte) (int, error) { i := 0 dAtA[i] = 0x58 i++ - i = encodeVarintStore(dAtA, i, uint64(m.Role)) + i = encodeVarintWatch(dAtA, i, uint64(m.Role)) return i, nil } func (m *SelectBy_Membership) MarshalTo(dAtA []byte) (int, error) { i := 0 dAtA[i] = 0x60 i++ - i = encodeVarintStore(dAtA, i, uint64(m.Membership)) + i = encodeVarintWatch(dAtA, i, uint64(m.Membership)) return i, nil } func (m *SelectBy_ReferencedNetworkID) MarshalTo(dAtA []byte) (int, error) { i := 0 dAtA[i] = 0x6a i++ - i = encodeVarintStore(dAtA, i, uint64(len(m.ReferencedNetworkID))) + i = encodeVarintWatch(dAtA, i, uint64(len(m.ReferencedNetworkID))) i += copy(dAtA[i:], m.ReferencedNetworkID) return i, nil } @@ -1809,7 +1809,7 @@ func (m *SelectBy_ReferencedSecretID) MarshalTo(dAtA []byte) (int, error) { i := 0 dAtA[i] = 0x72 i++ - i = encodeVarintStore(dAtA, i, uint64(len(m.ReferencedSecretID))) + i = encodeVarintWatch(dAtA, i, uint64(len(m.ReferencedSecretID))) i += copy(dAtA[i:], m.ReferencedSecretID) return i, nil } @@ -1817,7 +1817,7 @@ func (m *SelectBy_Kind) MarshalTo(dAtA []byte) (int, error) { i := 0 dAtA[i] = 0x7a i++ - i = encodeVarintStore(dAtA, i, uint64(len(m.Kind))) + i = encodeVarintWatch(dAtA, i, uint64(len(m.Kind))) i += copy(dAtA[i:], m.Kind) return i, nil } @@ -1827,7 +1827,7 @@ func (m *SelectBy_ReferencedConfigID) MarshalTo(dAtA []byte) (int, error) { i++ dAtA[i] = 0x1 i++ - i = encodeVarintStore(dAtA, i, uint64(len(m.ReferencedConfigID))) + i = encodeVarintWatch(dAtA, i, uint64(len(m.ReferencedConfigID))) i += copy(dAtA[i:], m.ReferencedConfigID) return i, nil } @@ -1850,7 +1850,7 @@ func (m *WatchRequest) MarshalTo(dAtA []byte) (int, error) { for _, msg := range m.Entries { dAtA[i] = 0xa i++ - i = encodeVarintStore(dAtA, i, uint64(msg.Size())) + i = encodeVarintWatch(dAtA, i, uint64(msg.Size())) n, err := msg.MarshalTo(dAtA[i:]) if err != nil { return 0, err @@ -1861,7 +1861,7 @@ func (m *WatchRequest) MarshalTo(dAtA []byte) (int, error) { if m.ResumeFrom != nil { dAtA[i] = 0x12 i++ - i = encodeVarintStore(dAtA, i, uint64(m.ResumeFrom.Size())) + i = encodeVarintWatch(dAtA, i, uint64(m.ResumeFrom.Size())) n15, err := m.ResumeFrom.MarshalTo(dAtA[i:]) if err != nil { return 0, err @@ -1899,19 +1899,19 @@ func (m *WatchRequest_WatchEntry) MarshalTo(dAtA []byte) (int, error) { if len(m.Kind) > 0 { dAtA[i] = 0xa i++ - i = encodeVarintStore(dAtA, i, uint64(len(m.Kind))) + i = encodeVarintWatch(dAtA, i, uint64(len(m.Kind))) i += copy(dAtA[i:], m.Kind) } if m.Action != 0 { dAtA[i] = 0x10 i++ - i = encodeVarintStore(dAtA, i, uint64(m.Action)) + i = encodeVarintWatch(dAtA, i, uint64(m.Action)) } if len(m.Filters) > 0 { for _, msg := range m.Filters { dAtA[i] = 0x1a i++ - i = encodeVarintStore(dAtA, i, uint64(msg.Size())) + i = encodeVarintWatch(dAtA, i, uint64(msg.Size())) n, err := msg.MarshalTo(dAtA[i:]) if err != nil { return 0, err @@ -1941,7 +1941,7 @@ func (m *WatchMessage) MarshalTo(dAtA []byte) (int, error) { for _, msg := range m.Events { dAtA[i] = 0xa i++ - i = encodeVarintStore(dAtA, i, uint64(msg.Size())) + i = encodeVarintWatch(dAtA, i, uint64(msg.Size())) n, err := msg.MarshalTo(dAtA[i:]) if err != nil { return 0, err @@ -1952,7 +1952,7 @@ func (m *WatchMessage) MarshalTo(dAtA []byte) (int, error) { if m.Version != nil { dAtA[i] = 0x12 i++ - i = encodeVarintStore(dAtA, i, uint64(m.Version.Size())) + i = encodeVarintWatch(dAtA, i, uint64(m.Version.Size())) n16, err := m.Version.MarshalTo(dAtA[i:]) if err != nil { return 0, err @@ -1980,12 +1980,12 @@ func (m *WatchMessage_Event) MarshalTo(dAtA []byte) (int, error) { if m.Action != 0 { dAtA[i] = 0x8 i++ - i = encodeVarintStore(dAtA, i, uint64(m.Action)) + i = encodeVarintWatch(dAtA, i, uint64(m.Action)) } if m.Object != nil { dAtA[i] = 0x12 i++ - i = encodeVarintStore(dAtA, i, uint64(m.Object.Size())) + i = encodeVarintWatch(dAtA, i, uint64(m.Object.Size())) n17, err := m.Object.MarshalTo(dAtA[i:]) if err != nil { return 0, err @@ -1995,7 +1995,7 @@ func (m *WatchMessage_Event) MarshalTo(dAtA []byte) (int, error) { if m.OldObject != nil { dAtA[i] = 0x1a i++ - i = encodeVarintStore(dAtA, i, uint64(m.OldObject.Size())) + i = encodeVarintWatch(dAtA, i, uint64(m.OldObject.Size())) n18, err := m.OldObject.MarshalTo(dAtA[i:]) if err != nil { return 0, err @@ -2005,7 +2005,7 @@ func (m *WatchMessage_Event) MarshalTo(dAtA []byte) (int, error) { return i, nil } -func encodeFixed64Store(dAtA []byte, offset int, v uint64) int { +func encodeFixed64Watch(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) dAtA[offset+1] = uint8(v >> 8) dAtA[offset+2] = uint8(v >> 16) @@ -2016,14 +2016,14 @@ func encodeFixed64Store(dAtA []byte, offset int, v uint64) int { dAtA[offset+7] = uint8(v >> 56) return offset + 8 } -func encodeFixed32Store(dAtA []byte, offset int, v uint32) int { +func encodeFixed32Watch(dAtA []byte, offset int, v uint32) int { dAtA[offset] = uint8(v) dAtA[offset+1] = uint8(v >> 8) dAtA[offset+2] = uint8(v >> 16) dAtA[offset+3] = uint8(v >> 24) return offset + 4 } -func encodeVarintStore(dAtA []byte, offset int, v uint64) int { +func encodeVarintWatch(dAtA []byte, offset int, v uint64) int { for v >= 1<<7 { dAtA[offset] = uint8(v&0x7f | 0x80) v >>= 7 @@ -2033,13 +2033,13 @@ func encodeVarintStore(dAtA []byte, offset int, v uint64) int { return offset + 1 } -type raftProxyStoreServer struct { - local StoreServer +type raftProxyWatchServer struct { + local WatchServer connSelector raftselector.ConnProvider localCtxMods, remoteCtxMods []func(context.Context) (context.Context, error) } -func NewRaftProxyStoreServer(local StoreServer, connSelector raftselector.ConnProvider, localCtxMod, remoteCtxMod func(context.Context) (context.Context, error)) StoreServer { +func NewRaftProxyWatchServer(local WatchServer, connSelector raftselector.ConnProvider, localCtxMod, remoteCtxMod func(context.Context) (context.Context, error)) WatchServer { redirectChecker := func(ctx context.Context) (context.Context, error) { s, ok := transport.StreamFromContext(ctx) if !ok { @@ -2064,14 +2064,14 @@ func NewRaftProxyStoreServer(local StoreServer, connSelector raftselector.ConnPr localMods = []func(context.Context) (context.Context, error){localCtxMod} } - return &raftProxyStoreServer{ + return &raftProxyWatchServer{ local: local, connSelector: connSelector, localCtxMods: localMods, remoteCtxMods: remoteMods, } } -func (p *raftProxyStoreServer) runCtxMods(ctx context.Context, ctxMods []func(context.Context) (context.Context, error)) (context.Context, error) { +func (p *raftProxyWatchServer) runCtxMods(ctx context.Context, ctxMods []func(context.Context) (context.Context, error)) (context.Context, error) { var err error for _, mod := range ctxMods { ctx, err = mod(ctx) @@ -2081,7 +2081,7 @@ func (p *raftProxyStoreServer) runCtxMods(ctx context.Context, ctxMods []func(co } return ctx, nil } -func (p *raftProxyStoreServer) pollNewLeaderConn(ctx context.Context) (*grpc.ClientConn, error) { +func (p *raftProxyWatchServer) pollNewLeaderConn(ctx context.Context) (*grpc.ClientConn, error) { ticker := rafttime.NewTicker(500 * rafttime.Millisecond) defer ticker.Stop() for { @@ -2105,16 +2105,16 @@ func (p *raftProxyStoreServer) pollNewLeaderConn(ctx context.Context) (*grpc.Cli } } -type Store_WatchServerWrapper struct { - Store_WatchServer +type Watch_WatchServerWrapper struct { + Watch_WatchServer ctx context.Context } -func (s Store_WatchServerWrapper) Context() context.Context { +func (s Watch_WatchServerWrapper) Context() context.Context { return s.ctx } -func (p *raftProxyStoreServer) Watch(r *WatchRequest, stream Store_WatchServer) error { +func (p *raftProxyWatchServer) Watch(r *WatchRequest, stream Watch_WatchServer) error { ctx := stream.Context() conn, err := p.connSelector.LeaderConn(ctx) if err != nil { @@ -2123,8 +2123,8 @@ func (p *raftProxyStoreServer) Watch(r *WatchRequest, stream Store_WatchServer) if err != nil { return err } - streamWrapper := Store_WatchServerWrapper{ - Store_WatchServer: stream, + streamWrapper := Watch_WatchServerWrapper{ + Watch_WatchServer: stream, ctx: ctx, } return p.local.Watch(r, streamWrapper) @@ -2135,7 +2135,7 @@ func (p *raftProxyStoreServer) Watch(r *WatchRequest, stream Store_WatchServer) if err != nil { return err } - clientStream, err := NewStoreClient(conn).Watch(ctx, r) + clientStream, err := NewWatchClient(conn).Watch(ctx, r) if err != nil { return err @@ -2170,7 +2170,7 @@ func (m *Object_Node) Size() (n int) { _ = l if m.Node != nil { l = m.Node.Size() - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } return n } @@ -2179,7 +2179,7 @@ func (m *Object_Service) Size() (n int) { _ = l if m.Service != nil { l = m.Service.Size() - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } return n } @@ -2188,7 +2188,7 @@ func (m *Object_Network) Size() (n int) { _ = l if m.Network != nil { l = m.Network.Size() - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } return n } @@ -2197,7 +2197,7 @@ func (m *Object_Task) Size() (n int) { _ = l if m.Task != nil { l = m.Task.Size() - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } return n } @@ -2206,7 +2206,7 @@ func (m *Object_Cluster) Size() (n int) { _ = l if m.Cluster != nil { l = m.Cluster.Size() - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } return n } @@ -2215,7 +2215,7 @@ func (m *Object_Secret) Size() (n int) { _ = l if m.Secret != nil { l = m.Secret.Size() - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } return n } @@ -2224,7 +2224,7 @@ func (m *Object_Resource) Size() (n int) { _ = l if m.Resource != nil { l = m.Resource.Size() - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } return n } @@ -2233,7 +2233,7 @@ func (m *Object_Extension) Size() (n int) { _ = l if m.Extension != nil { l = m.Extension.Size() - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } return n } @@ -2242,7 +2242,7 @@ func (m *Object_Config) Size() (n int) { _ = l if m.Config != nil { l = m.Config.Size() - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } return n } @@ -2251,10 +2251,10 @@ func (m *SelectBySlot) Size() (n int) { _ = l l = len(m.ServiceID) if l > 0 { - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } if m.Slot != 0 { - n += 1 + sovStore(uint64(m.Slot)) + n += 1 + sovWatch(uint64(m.Slot)) } return n } @@ -2264,15 +2264,15 @@ func (m *SelectByCustom) Size() (n int) { _ = l l = len(m.Kind) if l > 0 { - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } l = len(m.Index) if l > 0 { - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } l = len(m.Value) if l > 0 { - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } return n } @@ -2290,28 +2290,28 @@ func (m *SelectBy_ID) Size() (n int) { var l int _ = l l = len(m.ID) - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) return n } func (m *SelectBy_IDPrefix) Size() (n int) { var l int _ = l l = len(m.IDPrefix) - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) return n } func (m *SelectBy_Name) Size() (n int) { var l int _ = l l = len(m.Name) - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) return n } func (m *SelectBy_NamePrefix) Size() (n int) { var l int _ = l l = len(m.NamePrefix) - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) return n } func (m *SelectBy_Custom) Size() (n int) { @@ -2319,7 +2319,7 @@ func (m *SelectBy_Custom) Size() (n int) { _ = l if m.Custom != nil { l = m.Custom.Size() - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } return n } @@ -2328,7 +2328,7 @@ func (m *SelectBy_CustomPrefix) Size() (n int) { _ = l if m.CustomPrefix != nil { l = m.CustomPrefix.Size() - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } return n } @@ -2336,14 +2336,14 @@ func (m *SelectBy_ServiceID) Size() (n int) { var l int _ = l l = len(m.ServiceID) - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) return n } func (m *SelectBy_NodeID) Size() (n int) { var l int _ = l l = len(m.NodeID) - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) return n } func (m *SelectBy_Slot) Size() (n int) { @@ -2351,54 +2351,54 @@ func (m *SelectBy_Slot) Size() (n int) { _ = l if m.Slot != nil { l = m.Slot.Size() - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } return n } func (m *SelectBy_DesiredState) Size() (n int) { var l int _ = l - n += 1 + sovStore(uint64(m.DesiredState)) + n += 1 + sovWatch(uint64(m.DesiredState)) return n } func (m *SelectBy_Role) Size() (n int) { var l int _ = l - n += 1 + sovStore(uint64(m.Role)) + n += 1 + sovWatch(uint64(m.Role)) return n } func (m *SelectBy_Membership) Size() (n int) { var l int _ = l - n += 1 + sovStore(uint64(m.Membership)) + n += 1 + sovWatch(uint64(m.Membership)) return n } func (m *SelectBy_ReferencedNetworkID) Size() (n int) { var l int _ = l l = len(m.ReferencedNetworkID) - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) return n } func (m *SelectBy_ReferencedSecretID) Size() (n int) { var l int _ = l l = len(m.ReferencedSecretID) - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) return n } func (m *SelectBy_Kind) Size() (n int) { var l int _ = l l = len(m.Kind) - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) return n } func (m *SelectBy_ReferencedConfigID) Size() (n int) { var l int _ = l l = len(m.ReferencedConfigID) - n += 2 + l + sovStore(uint64(l)) + n += 2 + l + sovWatch(uint64(l)) return n } func (m *WatchRequest) Size() (n int) { @@ -2407,12 +2407,12 @@ func (m *WatchRequest) Size() (n int) { if len(m.Entries) > 0 { for _, e := range m.Entries { l = e.Size() - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } } if m.ResumeFrom != nil { l = m.ResumeFrom.Size() - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } if m.IncludeOldObject { n += 2 @@ -2425,15 +2425,15 @@ func (m *WatchRequest_WatchEntry) Size() (n int) { _ = l l = len(m.Kind) if l > 0 { - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } if m.Action != 0 { - n += 1 + sovStore(uint64(m.Action)) + n += 1 + sovWatch(uint64(m.Action)) } if len(m.Filters) > 0 { for _, e := range m.Filters { l = e.Size() - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } } return n @@ -2445,12 +2445,12 @@ func (m *WatchMessage) Size() (n int) { if len(m.Events) > 0 { for _, e := range m.Events { l = e.Size() - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } } if m.Version != nil { l = m.Version.Size() - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } return n } @@ -2459,20 +2459,20 @@ func (m *WatchMessage_Event) Size() (n int) { var l int _ = l if m.Action != 0 { - n += 1 + sovStore(uint64(m.Action)) + n += 1 + sovWatch(uint64(m.Action)) } if m.Object != nil { l = m.Object.Size() - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } if m.OldObject != nil { l = m.OldObject.Size() - n += 1 + l + sovStore(uint64(l)) + n += 1 + l + sovWatch(uint64(l)) } return n } -func sovStore(x uint64) (n int) { +func sovWatch(x uint64) (n int) { for { n++ x >>= 7 @@ -2482,8 +2482,8 @@ func sovStore(x uint64) (n int) { } return n } -func sozStore(x uint64) (n int) { - return sovStore(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +func sozWatch(x uint64) (n int) { + return sovWatch(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } func (this *Object) String() string { if this == nil { @@ -2825,7 +2825,7 @@ func (this *WatchMessage_Event) String() string { }, "") return s } -func valueToStringStore(v interface{}) string { +func valueToStringWatch(v interface{}) string { rv := reflect.ValueOf(v) if rv.IsNil() { return "nil" @@ -2841,7 +2841,7 @@ func (m *Object) Unmarshal(dAtA []byte) error { var wire uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -2869,7 +2869,7 @@ func (m *Object) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -2882,7 +2882,7 @@ func (m *Object) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + msglen if postIndex > l { @@ -2901,7 +2901,7 @@ func (m *Object) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -2914,7 +2914,7 @@ func (m *Object) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + msglen if postIndex > l { @@ -2933,7 +2933,7 @@ func (m *Object) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -2946,7 +2946,7 @@ func (m *Object) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + msglen if postIndex > l { @@ -2965,7 +2965,7 @@ func (m *Object) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -2978,7 +2978,7 @@ func (m *Object) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + msglen if postIndex > l { @@ -2997,7 +2997,7 @@ func (m *Object) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3010,7 +3010,7 @@ func (m *Object) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + msglen if postIndex > l { @@ -3029,7 +3029,7 @@ func (m *Object) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3042,7 +3042,7 @@ func (m *Object) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + msglen if postIndex > l { @@ -3061,7 +3061,7 @@ func (m *Object) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3074,7 +3074,7 @@ func (m *Object) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + msglen if postIndex > l { @@ -3093,7 +3093,7 @@ func (m *Object) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3106,7 +3106,7 @@ func (m *Object) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + msglen if postIndex > l { @@ -3125,7 +3125,7 @@ func (m *Object) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3138,7 +3138,7 @@ func (m *Object) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + msglen if postIndex > l { @@ -3152,12 +3152,12 @@ func (m *Object) Unmarshal(dAtA []byte) error { iNdEx = postIndex default: iNdEx = preIndex - skippy, err := skipStore(dAtA[iNdEx:]) + skippy, err := skipWatch(dAtA[iNdEx:]) if err != nil { return err } if skippy < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF @@ -3179,7 +3179,7 @@ func (m *SelectBySlot) Unmarshal(dAtA []byte) error { var wire uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3207,7 +3207,7 @@ func (m *SelectBySlot) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3221,7 +3221,7 @@ func (m *SelectBySlot) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + intStringLen if postIndex > l { @@ -3236,7 +3236,7 @@ func (m *SelectBySlot) Unmarshal(dAtA []byte) error { m.Slot = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3250,12 +3250,12 @@ func (m *SelectBySlot) Unmarshal(dAtA []byte) error { } default: iNdEx = preIndex - skippy, err := skipStore(dAtA[iNdEx:]) + skippy, err := skipWatch(dAtA[iNdEx:]) if err != nil { return err } if skippy < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF @@ -3277,7 +3277,7 @@ func (m *SelectByCustom) Unmarshal(dAtA []byte) error { var wire uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3305,7 +3305,7 @@ func (m *SelectByCustom) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3319,7 +3319,7 @@ func (m *SelectByCustom) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + intStringLen if postIndex > l { @@ -3334,7 +3334,7 @@ func (m *SelectByCustom) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3348,7 +3348,7 @@ func (m *SelectByCustom) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + intStringLen if postIndex > l { @@ -3363,7 +3363,7 @@ func (m *SelectByCustom) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3377,7 +3377,7 @@ func (m *SelectByCustom) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + intStringLen if postIndex > l { @@ -3387,12 +3387,12 @@ func (m *SelectByCustom) Unmarshal(dAtA []byte) error { iNdEx = postIndex default: iNdEx = preIndex - skippy, err := skipStore(dAtA[iNdEx:]) + skippy, err := skipWatch(dAtA[iNdEx:]) if err != nil { return err } if skippy < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF @@ -3414,7 +3414,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { var wire uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3442,7 +3442,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3456,7 +3456,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + intStringLen if postIndex > l { @@ -3471,7 +3471,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3485,7 +3485,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + intStringLen if postIndex > l { @@ -3500,7 +3500,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3514,7 +3514,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + intStringLen if postIndex > l { @@ -3529,7 +3529,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3543,7 +3543,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + intStringLen if postIndex > l { @@ -3558,7 +3558,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3571,7 +3571,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + msglen if postIndex > l { @@ -3590,7 +3590,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3603,7 +3603,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + msglen if postIndex > l { @@ -3622,7 +3622,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3636,7 +3636,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + intStringLen if postIndex > l { @@ -3651,7 +3651,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3665,7 +3665,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + intStringLen if postIndex > l { @@ -3680,7 +3680,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3693,7 +3693,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + msglen if postIndex > l { @@ -3712,7 +3712,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { var v TaskState for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3732,7 +3732,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { var v NodeRole for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3752,7 +3752,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { var v NodeSpec_Membership for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3772,7 +3772,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3786,7 +3786,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + intStringLen if postIndex > l { @@ -3801,7 +3801,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3815,7 +3815,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + intStringLen if postIndex > l { @@ -3830,7 +3830,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3844,7 +3844,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + intStringLen if postIndex > l { @@ -3859,7 +3859,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3873,7 +3873,7 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + intStringLen if postIndex > l { @@ -3883,12 +3883,12 @@ func (m *SelectBy) Unmarshal(dAtA []byte) error { iNdEx = postIndex default: iNdEx = preIndex - skippy, err := skipStore(dAtA[iNdEx:]) + skippy, err := skipWatch(dAtA[iNdEx:]) if err != nil { return err } if skippy < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF @@ -3910,7 +3910,7 @@ func (m *WatchRequest) Unmarshal(dAtA []byte) error { var wire uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3938,7 +3938,7 @@ func (m *WatchRequest) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3951,7 +3951,7 @@ func (m *WatchRequest) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + msglen if postIndex > l { @@ -3969,7 +3969,7 @@ func (m *WatchRequest) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -3982,7 +3982,7 @@ func (m *WatchRequest) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + msglen if postIndex > l { @@ -4002,7 +4002,7 @@ func (m *WatchRequest) Unmarshal(dAtA []byte) error { var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -4017,12 +4017,12 @@ func (m *WatchRequest) Unmarshal(dAtA []byte) error { m.IncludeOldObject = bool(v != 0) default: iNdEx = preIndex - skippy, err := skipStore(dAtA[iNdEx:]) + skippy, err := skipWatch(dAtA[iNdEx:]) if err != nil { return err } if skippy < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF @@ -4044,7 +4044,7 @@ func (m *WatchRequest_WatchEntry) Unmarshal(dAtA []byte) error { var wire uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -4072,7 +4072,7 @@ func (m *WatchRequest_WatchEntry) Unmarshal(dAtA []byte) error { var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -4086,7 +4086,7 @@ func (m *WatchRequest_WatchEntry) Unmarshal(dAtA []byte) error { } intStringLen := int(stringLen) if intStringLen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + intStringLen if postIndex > l { @@ -4101,7 +4101,7 @@ func (m *WatchRequest_WatchEntry) Unmarshal(dAtA []byte) error { m.Action = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -4120,7 +4120,7 @@ func (m *WatchRequest_WatchEntry) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -4133,7 +4133,7 @@ func (m *WatchRequest_WatchEntry) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + msglen if postIndex > l { @@ -4146,12 +4146,12 @@ func (m *WatchRequest_WatchEntry) Unmarshal(dAtA []byte) error { iNdEx = postIndex default: iNdEx = preIndex - skippy, err := skipStore(dAtA[iNdEx:]) + skippy, err := skipWatch(dAtA[iNdEx:]) if err != nil { return err } if skippy < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF @@ -4173,7 +4173,7 @@ func (m *WatchMessage) Unmarshal(dAtA []byte) error { var wire uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -4201,7 +4201,7 @@ func (m *WatchMessage) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -4214,7 +4214,7 @@ func (m *WatchMessage) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + msglen if postIndex > l { @@ -4232,7 +4232,7 @@ func (m *WatchMessage) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -4245,7 +4245,7 @@ func (m *WatchMessage) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + msglen if postIndex > l { @@ -4260,12 +4260,12 @@ func (m *WatchMessage) Unmarshal(dAtA []byte) error { iNdEx = postIndex default: iNdEx = preIndex - skippy, err := skipStore(dAtA[iNdEx:]) + skippy, err := skipWatch(dAtA[iNdEx:]) if err != nil { return err } if skippy < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF @@ -4287,7 +4287,7 @@ func (m *WatchMessage_Event) Unmarshal(dAtA []byte) error { var wire uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -4315,7 +4315,7 @@ func (m *WatchMessage_Event) Unmarshal(dAtA []byte) error { m.Action = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -4334,7 +4334,7 @@ func (m *WatchMessage_Event) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -4347,7 +4347,7 @@ func (m *WatchMessage_Event) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + msglen if postIndex > l { @@ -4367,7 +4367,7 @@ func (m *WatchMessage_Event) Unmarshal(dAtA []byte) error { var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return ErrIntOverflowStore + return ErrIntOverflowWatch } if iNdEx >= l { return io.ErrUnexpectedEOF @@ -4380,7 +4380,7 @@ func (m *WatchMessage_Event) Unmarshal(dAtA []byte) error { } } if msglen < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } postIndex := iNdEx + msglen if postIndex > l { @@ -4395,12 +4395,12 @@ func (m *WatchMessage_Event) Unmarshal(dAtA []byte) error { iNdEx = postIndex default: iNdEx = preIndex - skippy, err := skipStore(dAtA[iNdEx:]) + skippy, err := skipWatch(dAtA[iNdEx:]) if err != nil { return err } if skippy < 0 { - return ErrInvalidLengthStore + return ErrInvalidLengthWatch } if (iNdEx + skippy) > l { return io.ErrUnexpectedEOF @@ -4414,14 +4414,14 @@ func (m *WatchMessage_Event) Unmarshal(dAtA []byte) error { } return nil } -func skipStore(dAtA []byte) (n int, err error) { +func skipWatch(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 for iNdEx < l { var wire uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { - return 0, ErrIntOverflowStore + return 0, ErrIntOverflowWatch } if iNdEx >= l { return 0, io.ErrUnexpectedEOF @@ -4438,7 +4438,7 @@ func skipStore(dAtA []byte) (n int, err error) { case 0: for shift := uint(0); ; shift += 7 { if shift >= 64 { - return 0, ErrIntOverflowStore + return 0, ErrIntOverflowWatch } if iNdEx >= l { return 0, io.ErrUnexpectedEOF @@ -4456,7 +4456,7 @@ func skipStore(dAtA []byte) (n int, err error) { var length int for shift := uint(0); ; shift += 7 { if shift >= 64 { - return 0, ErrIntOverflowStore + return 0, ErrIntOverflowWatch } if iNdEx >= l { return 0, io.ErrUnexpectedEOF @@ -4470,7 +4470,7 @@ func skipStore(dAtA []byte) (n int, err error) { } iNdEx += length if length < 0 { - return 0, ErrInvalidLengthStore + return 0, ErrInvalidLengthWatch } return iNdEx, nil case 3: @@ -4479,7 +4479,7 @@ func skipStore(dAtA []byte) (n int, err error) { var start int = iNdEx for shift := uint(0); ; shift += 7 { if shift >= 64 { - return 0, ErrIntOverflowStore + return 0, ErrIntOverflowWatch } if iNdEx >= l { return 0, io.ErrUnexpectedEOF @@ -4495,7 +4495,7 @@ func skipStore(dAtA []byte) (n int, err error) { if innerWireType == 4 { break } - next, err := skipStore(dAtA[start:]) + next, err := skipWatch(dAtA[start:]) if err != nil { return 0, err } @@ -4515,85 +4515,85 @@ func skipStore(dAtA []byte) (n int, err error) { } var ( - ErrInvalidLengthStore = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowStore = fmt.Errorf("proto: integer overflow") + ErrInvalidLengthWatch = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowWatch = fmt.Errorf("proto: integer overflow") ) -func init() { proto.RegisterFile("store.proto", fileDescriptorStore) } +func init() { proto.RegisterFile("watch.proto", fileDescriptorWatch) } -var fileDescriptorStore = []byte{ - // 1160 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x96, 0xbd, 0x73, 0x1b, 0xc5, - 0x1b, 0xc7, 0x75, 0x8a, 0x7c, 0x92, 0x1e, 0xd9, 0x89, 0x67, 0xed, 0x24, 0xf7, 0xd3, 0x2f, 0xc8, - 0x42, 0x0c, 0x90, 0x21, 0x41, 0x01, 0x13, 0xc2, 0x00, 0x81, 0x19, 0x4b, 0x16, 0x23, 0x91, 0xf1, - 0xcb, 0xac, 0xec, 0xa4, 0xd4, 0x5c, 0xee, 0x1e, 0x2b, 0x87, 0xee, 0x6e, 0xc5, 0xde, 0x49, 0x89, - 0x3b, 0x0a, 0x0a, 0x26, 0x3d, 0x33, 0x34, 0xa9, 0xa0, 0xa6, 0xa1, 0x83, 0x7f, 0x20, 0x43, 0x45, - 0x09, 0x8d, 0x86, 0xa8, 0xa4, 0xe0, 0x2f, 0xa0, 0x60, 0xf6, 0xe5, 0xfc, 0xa2, 0x9c, 0x1c, 0x52, - 0x69, 0x77, 0xef, 0xf3, 0x7d, 0xf6, 0xb9, 0xe7, 0xed, 0x04, 0xa5, 0x28, 0x66, 0x1c, 0xeb, 0x43, - 0xce, 0x62, 0x46, 0x88, 0xcb, 0x9c, 0x01, 0xf2, 0x7a, 0xf4, 0xd0, 0xe6, 0xc1, 0xc0, 0x8b, 0xeb, - 0xe3, 0x77, 0xcb, 0xa5, 0x68, 0x88, 0x4e, 0xa4, 0x80, 0xf2, 0x12, 0xbb, 0xff, 0x05, 0x3a, 0x71, - 0xb2, 0x2d, 0xc5, 0x87, 0x43, 0x4c, 0x36, 0xab, 0x7d, 0xd6, 0x67, 0x72, 0x79, 0x43, 0xac, 0xf4, - 0xe9, 0xca, 0xd0, 0x1f, 0xf5, 0xbd, 0xf0, 0x86, 0xfa, 0x51, 0x87, 0xb5, 0xaf, 0x73, 0x60, 0xee, - 0x48, 0x4b, 0xa4, 0x0e, 0xb9, 0x90, 0xb9, 0x68, 0x19, 0x55, 0xe3, 0x6a, 0x69, 0xdd, 0xaa, 0x3f, - 0xef, 0x41, 0x7d, 0x9b, 0xb9, 0xd8, 0xce, 0x50, 0xc9, 0x91, 0x0f, 0x20, 0x1f, 0x21, 0x1f, 0x7b, - 0x0e, 0x5a, 0x59, 0x29, 0xf9, 0x7f, 0x9a, 0xa4, 0xab, 0x90, 0x76, 0x86, 0x26, 0xb4, 0x10, 0x86, - 0x18, 0x3f, 0x64, 0x7c, 0x60, 0x9d, 0x9b, 0x2f, 0xdc, 0x56, 0x88, 0x10, 0x6a, 0x5a, 0x78, 0x18, - 0xdb, 0xd1, 0xc0, 0xca, 0xcd, 0xf7, 0x70, 0xcf, 0x8e, 0x84, 0x44, 0x72, 0xe2, 0x22, 0xc7, 0x1f, - 0x45, 0x31, 0x72, 0x6b, 0x61, 0xfe, 0x45, 0x4d, 0x85, 0x88, 0x8b, 0x34, 0x4d, 0x6e, 0x82, 0x19, - 0xa1, 0xc3, 0x31, 0xb6, 0x4c, 0xa9, 0x2b, 0xa7, 0xbf, 0x99, 0x20, 0xda, 0x19, 0xaa, 0x59, 0xf2, - 0x11, 0x14, 0x38, 0x46, 0x6c, 0xc4, 0x1d, 0xb4, 0xf2, 0x52, 0x77, 0x25, 0x4d, 0x47, 0x35, 0xd3, - 0xce, 0xd0, 0x23, 0x9e, 0x7c, 0x02, 0x45, 0x7c, 0x14, 0x63, 0x18, 0x79, 0x2c, 0xb4, 0x0a, 0x52, - 0xfc, 0x4a, 0x9a, 0xb8, 0x95, 0x40, 0xed, 0x0c, 0x3d, 0x56, 0x08, 0x87, 0x1d, 0x16, 0x1e, 0x78, - 0x7d, 0xab, 0x38, 0xdf, 0xe1, 0xa6, 0x24, 0x84, 0xc3, 0x8a, 0x6d, 0x14, 0x92, 0xdc, 0xd7, 0x76, - 0x61, 0xb1, 0x8b, 0x3e, 0x3a, 0x71, 0xe3, 0xb0, 0xeb, 0xb3, 0x98, 0x5c, 0x07, 0xd0, 0xd9, 0xea, - 0x79, 0xae, 0xac, 0x88, 0x62, 0x63, 0x69, 0x3a, 0x59, 0x2b, 0xea, 0x74, 0x76, 0x36, 0x69, 0x51, - 0x03, 0x1d, 0x97, 0x10, 0xc8, 0x45, 0x3e, 0x8b, 0x65, 0x19, 0xe4, 0xa8, 0x5c, 0xd7, 0x76, 0xe1, - 0x7c, 0x62, 0xb1, 0x39, 0x8a, 0x62, 0x16, 0x08, 0x6a, 0xe0, 0x85, 0xda, 0x1a, 0x95, 0x6b, 0xb2, - 0x0a, 0x0b, 0x5e, 0xe8, 0xe2, 0x23, 0x29, 0x2d, 0x52, 0xb5, 0x11, 0xa7, 0x63, 0xdb, 0x1f, 0xa1, - 0x2c, 0x8f, 0x22, 0x55, 0x9b, 0xda, 0x5f, 0x26, 0x14, 0x12, 0x93, 0xc4, 0x82, 0xec, 0x91, 0x63, - 0xe6, 0x74, 0xb2, 0x96, 0xed, 0x6c, 0xb6, 0x33, 0x34, 0xeb, 0xb9, 0xe4, 0x1a, 0x14, 0x3d, 0xb7, - 0x37, 0xe4, 0x78, 0xe0, 0x69, 0xb3, 0x8d, 0xc5, 0xe9, 0x64, 0xad, 0xd0, 0xd9, 0xdc, 0x95, 0x67, - 0x22, 0xec, 0x9e, 0xab, 0xd6, 0x64, 0x15, 0x72, 0xa1, 0x1d, 0xe8, 0x8b, 0x64, 0x65, 0xdb, 0x01, - 0x92, 0x57, 0xa1, 0x24, 0x7e, 0x13, 0x23, 0x39, 0xfd, 0x10, 0xc4, 0xa1, 0x16, 0xde, 0x06, 0xd3, - 0x91, 0xaf, 0xa5, 0x2b, 0xab, 0x96, 0x5e, 0x21, 0x27, 0x03, 0x20, 0x03, 0xaf, 0x42, 0xd1, 0x81, - 0x25, 0xb5, 0x4a, 0xae, 0x30, 0x5f, 0xc2, 0xc8, 0xa2, 0x92, 0x6a, 0x47, 0xea, 0xa7, 0x32, 0x95, - 0x4f, 0xc9, 0x94, 0xa8, 0x94, 0xe3, 0x5c, 0xbd, 0x0e, 0x79, 0xd1, 0xbd, 0x02, 0x2e, 0x48, 0x18, - 0xa6, 0x93, 0x35, 0x53, 0x34, 0xb6, 0x24, 0x4d, 0xf1, 0xb0, 0xe3, 0x92, 0x5b, 0x3a, 0xa5, 0xaa, - 0x9c, 0xaa, 0x67, 0x39, 0x26, 0x0a, 0x46, 0x84, 0x4e, 0xf0, 0x64, 0x13, 0x96, 0x5c, 0x8c, 0x3c, - 0x8e, 0x6e, 0x2f, 0x8a, 0xed, 0x18, 0x2d, 0xa8, 0x1a, 0x57, 0xcf, 0xa7, 0xd7, 0xb2, 0xe8, 0xd5, - 0xae, 0x80, 0xc4, 0x4b, 0x69, 0x95, 0xdc, 0x93, 0x75, 0xc8, 0x71, 0xe6, 0xa3, 0x55, 0x92, 0xe2, - 0x2b, 0xf3, 0x46, 0x11, 0x65, 0xbe, 0x1c, 0x47, 0x82, 0x25, 0x1d, 0x80, 0x00, 0x83, 0xfb, 0xc8, - 0xa3, 0x07, 0xde, 0xd0, 0x5a, 0x94, 0xca, 0x37, 0xe7, 0x29, 0xbb, 0x43, 0x74, 0xea, 0x5b, 0x47, - 0xb8, 0x48, 0xee, 0xb1, 0x98, 0x6c, 0xc1, 0x45, 0x8e, 0x07, 0xc8, 0x31, 0x74, 0xd0, 0xed, 0xe9, - 0xe9, 0x23, 0x22, 0xb6, 0x24, 0x23, 0x76, 0x79, 0x3a, 0x59, 0x5b, 0xa1, 0x47, 0x80, 0x1e, 0x54, - 0x32, 0x7c, 0x2b, 0xfc, 0xb9, 0x63, 0x97, 0x7c, 0x0e, 0xab, 0x27, 0xcc, 0xa9, 0x61, 0x21, 0xac, - 0x9d, 0x97, 0xd6, 0x2e, 0x4d, 0x27, 0x6b, 0xe4, 0xd8, 0x9a, 0x9a, 0x2a, 0xd2, 0x18, 0xe1, 0xb3, - 0xa7, 0xa2, 0x61, 0x54, 0x13, 0x5d, 0x48, 0x0a, 0x56, 0xb6, 0xd1, 0xe9, 0x1b, 0x54, 0x77, 0x8b, - 0x1b, 0x96, 0xd3, 0x6e, 0x50, 0x63, 0x60, 0xf6, 0x06, 0x7d, 0xea, 0x36, 0x72, 0x90, 0x6d, 0x1c, - 0xd6, 0xfe, 0xc8, 0xc2, 0xe2, 0x3d, 0x3b, 0x76, 0x1e, 0x50, 0xfc, 0x72, 0x84, 0x51, 0x4c, 0x5a, - 0x90, 0xc7, 0x30, 0xe6, 0x1e, 0x46, 0x96, 0x51, 0x3d, 0x77, 0xb5, 0xb4, 0x7e, 0x2d, 0x2d, 0xb6, - 0x27, 0x25, 0x6a, 0xd3, 0x0a, 0x63, 0x7e, 0x48, 0x13, 0x2d, 0xb9, 0x0d, 0x25, 0x8e, 0xd1, 0x28, - 0xc0, 0xde, 0x01, 0x67, 0xc1, 0x59, 0x1f, 0x8e, 0xbb, 0xc8, 0xc5, 0x68, 0xa3, 0xa0, 0xf8, 0xcf, - 0x38, 0x0b, 0xc8, 0x75, 0x20, 0x5e, 0xe8, 0xf8, 0x23, 0x17, 0x7b, 0xcc, 0x77, 0x7b, 0xea, 0x13, - 0x28, 0x9b, 0xb7, 0x40, 0x97, 0xf5, 0x93, 0x1d, 0xdf, 0x55, 0x43, 0xad, 0xfc, 0xad, 0x01, 0x70, - 0xec, 0x43, 0xea, 0xfc, 0xf9, 0x18, 0x4c, 0xdb, 0x89, 0xc5, 0xcc, 0xcd, 0xca, 0x82, 0x79, 0x6d, - 0xee, 0x4b, 0x6d, 0x48, 0xec, 0x8e, 0x17, 0xba, 0x54, 0x4b, 0xc8, 0x2d, 0xc8, 0x1f, 0x78, 0x7e, - 0x8c, 0x3c, 0xb2, 0xce, 0xc9, 0x90, 0x5c, 0x39, 0xab, 0x4d, 0x68, 0x02, 0xd7, 0x7e, 0x49, 0x62, - 0xbb, 0x85, 0x51, 0x64, 0xf7, 0x91, 0x7c, 0x0a, 0x26, 0x8e, 0x31, 0x8c, 0x93, 0xd0, 0xbe, 0x31, - 0xd7, 0x0b, 0xad, 0xa8, 0xb7, 0x04, 0x4e, 0xb5, 0x8a, 0xbc, 0x0f, 0xf9, 0xb1, 0x8a, 0xd6, 0x7f, - 0x09, 0x68, 0xc2, 0x96, 0x7f, 0x32, 0x60, 0x41, 0x1a, 0x3a, 0x11, 0x06, 0xe3, 0xe5, 0xc3, 0xb0, - 0x0e, 0xa6, 0x4e, 0x44, 0x76, 0xfe, 0xb7, 0x47, 0xa5, 0x84, 0x6a, 0x92, 0x7c, 0x08, 0x30, 0x93, - 0xc0, 0xb3, 0x75, 0x45, 0x96, 0x64, 0xf5, 0xad, 0x7f, 0x0c, 0xb8, 0x30, 0xe3, 0x0a, 0xb9, 0x09, - 0xab, 0xf7, 0x36, 0xf6, 0x9a, 0xed, 0xde, 0x46, 0x73, 0xaf, 0xb3, 0xb3, 0xdd, 0xdb, 0xdf, 0xbe, - 0xb3, 0xbd, 0x73, 0x6f, 0x7b, 0x39, 0x53, 0x2e, 0x3f, 0x7e, 0x52, 0xbd, 0x34, 0x83, 0xef, 0x87, - 0x83, 0x90, 0x3d, 0x14, 0x8e, 0xaf, 0x9c, 0x52, 0x35, 0x69, 0x6b, 0x63, 0xaf, 0xb5, 0x6c, 0x94, - 0xff, 0xf7, 0xf8, 0x49, 0xf5, 0xe2, 0x8c, 0xa8, 0xc9, 0x51, 0x4d, 0xa6, 0xd3, 0x9a, 0xfd, 0xdd, - 0x4d, 0xa1, 0xc9, 0xa6, 0x6a, 0xf6, 0x87, 0x6e, 0x9a, 0x86, 0xb6, 0xb6, 0x76, 0xee, 0xb6, 0x96, - 0x73, 0xa9, 0x1a, 0x8a, 0x01, 0x1b, 0x63, 0xf9, 0xf2, 0x37, 0xdf, 0x57, 0x32, 0x3f, 0xff, 0x50, - 0x99, 0x7d, 0xd5, 0xf5, 0x00, 0x16, 0xba, 0xe2, 0x7f, 0x22, 0x71, 0x61, 0x41, 0x3e, 0x23, 0xd5, - 0x17, 0x35, 0x62, 0xb9, 0xfa, 0xa2, 0x7a, 0xaa, 0x5d, 0xfc, 0xf5, 0xc7, 0xbf, 0xbf, 0xcb, 0x5e, - 0x80, 0x25, 0x49, 0xbc, 0x1d, 0xd8, 0xa1, 0xdd, 0x47, 0xfe, 0x8e, 0xd1, 0xb0, 0x9e, 0x3e, 0xab, - 0x64, 0x7e, 0x7f, 0x56, 0xc9, 0x7c, 0x35, 0xad, 0x18, 0x4f, 0xa7, 0x15, 0xe3, 0xb7, 0x69, 0xc5, - 0xf8, 0x73, 0x5a, 0x31, 0xee, 0x9b, 0xf2, 0x0f, 0xe4, 0x7b, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, - 0x9d, 0xb1, 0x59, 0x21, 0xb7, 0x0a, 0x00, 0x00, +var fileDescriptorWatch = []byte{ + // 1155 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x96, 0xbb, 0x73, 0x1b, 0xd5, + 0x17, 0xc7, 0xb5, 0x8a, 0xbc, 0x92, 0x8e, 0xac, 0xc4, 0x73, 0xed, 0x24, 0xfb, 0xd3, 0x2f, 0x48, + 0x42, 0x0c, 0xe0, 0x21, 0x41, 0x01, 0x13, 0xc2, 0x00, 0x81, 0x19, 0x4b, 0x16, 0x23, 0x91, 0xb1, + 0xec, 0xb9, 0xb6, 0xe3, 0x52, 0xb3, 0xde, 0x3d, 0x56, 0x16, 0xed, 0x43, 0xdc, 0x5d, 0xc9, 0x71, + 0x47, 0x41, 0xc1, 0xa4, 0x67, 0x86, 0x26, 0x15, 0xd4, 0x34, 0x74, 0xf0, 0x0f, 0x64, 0xa8, 0x28, + 0xa1, 0xd1, 0x10, 0x95, 0x14, 0xfc, 0x05, 0x14, 0xcc, 0x7d, 0xac, 0x1f, 0xca, 0xca, 0x21, 0x95, + 0xee, 0xbd, 0xfb, 0xf9, 0x9e, 0x7b, 0xf6, 0xbc, 0x56, 0x50, 0x38, 0x32, 0x23, 0xeb, 0x61, 0x7d, + 0xc8, 0x82, 0x28, 0x20, 0xc4, 0x0e, 0xac, 0x01, 0xb2, 0x7a, 0x78, 0x64, 0x32, 0x6f, 0xe0, 0x44, + 0xf5, 0xf1, 0xbb, 0xa5, 0x42, 0x38, 0x44, 0x2b, 0x94, 0x40, 0xa9, 0x18, 0x1c, 0x7c, 0x81, 0x56, + 0x14, 0x6f, 0x0b, 0xd1, 0xf1, 0x10, 0xe3, 0xcd, 0x4a, 0x3f, 0xe8, 0x07, 0x62, 0x79, 0x9b, 0xaf, + 0xd4, 0xe9, 0xf2, 0xd0, 0x1d, 0xf5, 0x1d, 0xff, 0xb6, 0xfc, 0x91, 0x87, 0xb5, 0xaf, 0x33, 0xa0, + 0x6f, 0x09, 0x4b, 0xa4, 0x0e, 0x19, 0x3f, 0xb0, 0xd1, 0xd0, 0xaa, 0xda, 0x6a, 0x61, 0xcd, 0xa8, + 0x3f, 0xef, 0x41, 0xbd, 0x1b, 0xd8, 0xd8, 0x4e, 0x51, 0xc1, 0x91, 0x0f, 0x20, 0x1b, 0x22, 0x1b, + 0x3b, 0x16, 0x1a, 0x69, 0x21, 0xf9, 0x7f, 0x92, 0x64, 0x47, 0x22, 0xed, 0x14, 0x8d, 0x69, 0x2e, + 0xf4, 0x31, 0x3a, 0x0a, 0xd8, 0xc0, 0xb8, 0x34, 0x5f, 0xd8, 0x95, 0x08, 0x17, 0x2a, 0x9a, 0x7b, + 0x18, 0x99, 0xe1, 0xc0, 0xc8, 0xcc, 0xf7, 0x70, 0xd7, 0x0c, 0xb9, 0x44, 0x70, 0xfc, 0x22, 0xcb, + 0x1d, 0x85, 0x11, 0x32, 0x63, 0x61, 0xfe, 0x45, 0x4d, 0x89, 0xf0, 0x8b, 0x14, 0x4d, 0xee, 0x80, + 0x1e, 0xa2, 0xc5, 0x30, 0x32, 0x74, 0xa1, 0x2b, 0x25, 0xbf, 0x19, 0x27, 0xda, 0x29, 0xaa, 0x58, + 0xf2, 0x11, 0xe4, 0x18, 0x86, 0xc1, 0x88, 0x59, 0x68, 0x64, 0x85, 0xee, 0x46, 0x92, 0x8e, 0x2a, + 0xa6, 0x9d, 0xa2, 0x27, 0x3c, 0xf9, 0x04, 0xf2, 0xf8, 0x28, 0x42, 0x3f, 0x74, 0x02, 0xdf, 0xc8, + 0x09, 0xf1, 0x2b, 0x49, 0xe2, 0x56, 0x0c, 0xb5, 0x53, 0xf4, 0x54, 0xc1, 0x1d, 0xb6, 0x02, 0xff, + 0xd0, 0xe9, 0x1b, 0xf9, 0xf9, 0x0e, 0x37, 0x05, 0xc1, 0x1d, 0x96, 0x6c, 0x23, 0x17, 0xe7, 0xbe, + 0xb6, 0x0d, 0x8b, 0x3b, 0xe8, 0xa2, 0x15, 0x35, 0x8e, 0x77, 0xdc, 0x20, 0x22, 0xb7, 0x00, 0x54, + 0xb6, 0x7a, 0x8e, 0x2d, 0x2a, 0x22, 0xdf, 0x28, 0x4e, 0x27, 0x95, 0xbc, 0x4a, 0x67, 0x67, 0x83, + 0xe6, 0x15, 0xd0, 0xb1, 0x09, 0x81, 0x4c, 0xe8, 0x06, 0x91, 0x28, 0x83, 0x0c, 0x15, 0xeb, 0xda, + 0x36, 0x5c, 0x8e, 0x2d, 0x36, 0x47, 0x61, 0x14, 0x78, 0x9c, 0x1a, 0x38, 0xbe, 0xb2, 0x46, 0xc5, + 0x9a, 0xac, 0xc0, 0x82, 0xe3, 0xdb, 0xf8, 0x48, 0x48, 0xf3, 0x54, 0x6e, 0xf8, 0xe9, 0xd8, 0x74, + 0x47, 0x28, 0xca, 0x23, 0x4f, 0xe5, 0xa6, 0xf6, 0x97, 0x0e, 0xb9, 0xd8, 0x24, 0x31, 0x20, 0x7d, + 0xe2, 0x98, 0x3e, 0x9d, 0x54, 0xd2, 0x9d, 0x8d, 0x76, 0x8a, 0xa6, 0x1d, 0x9b, 0xdc, 0x84, 0xbc, + 0x63, 0xf7, 0x86, 0x0c, 0x0f, 0x1d, 0x65, 0xb6, 0xb1, 0x38, 0x9d, 0x54, 0x72, 0x9d, 0x8d, 0x6d, + 0x71, 0xc6, 0xc3, 0xee, 0xd8, 0x72, 0x4d, 0x56, 0x20, 0xe3, 0x9b, 0x9e, 0xba, 0x48, 0x54, 0xb6, + 0xe9, 0x21, 0x79, 0x15, 0x0a, 0xfc, 0x37, 0x36, 0x92, 0x51, 0x0f, 0x81, 0x1f, 0x2a, 0xe1, 0x3d, + 0xd0, 0x2d, 0xf1, 0x5a, 0xaa, 0xb2, 0x6a, 0xc9, 0x15, 0x72, 0x36, 0x00, 0x22, 0xf0, 0x32, 0x14, + 0x1d, 0x28, 0xca, 0x55, 0x7c, 0x85, 0xfe, 0x12, 0x46, 0x16, 0xa5, 0x54, 0x39, 0x52, 0x3f, 0x97, + 0xa9, 0x6c, 0x42, 0xa6, 0x78, 0xa5, 0x9c, 0xe6, 0xea, 0x75, 0xc8, 0xf2, 0xee, 0xe5, 0x70, 0x4e, + 0xc0, 0x30, 0x9d, 0x54, 0x74, 0xde, 0xd8, 0x82, 0xd4, 0xf9, 0xc3, 0x8e, 0x4d, 0xee, 0xaa, 0x94, + 0xca, 0x72, 0xaa, 0x5e, 0xe4, 0x18, 0x2f, 0x18, 0x1e, 0x3a, 0xce, 0x93, 0x0d, 0x28, 0xda, 0x18, + 0x3a, 0x0c, 0xed, 0x5e, 0x18, 0x99, 0x11, 0x1a, 0x50, 0xd5, 0x56, 0x2f, 0x27, 0xd7, 0x32, 0xef, + 0xd5, 0x1d, 0x0e, 0xf1, 0x97, 0x52, 0x2a, 0xb1, 0x27, 0x6b, 0x90, 0x61, 0x81, 0x8b, 0x46, 0x41, + 0x88, 0x6f, 0xcc, 0x1b, 0x45, 0x34, 0x70, 0xc5, 0x38, 0xe2, 0x2c, 0xe9, 0x00, 0x78, 0xe8, 0x1d, + 0x20, 0x0b, 0x1f, 0x3a, 0x43, 0x63, 0x51, 0x28, 0xdf, 0x9c, 0xa7, 0xdc, 0x19, 0xa2, 0x55, 0xdf, + 0x3c, 0xc1, 0x79, 0x72, 0x4f, 0xc5, 0x64, 0x13, 0xae, 0x32, 0x3c, 0x44, 0x86, 0xbe, 0x85, 0x76, + 0x4f, 0x4d, 0x1f, 0x1e, 0xb1, 0xa2, 0x88, 0xd8, 0xf5, 0xe9, 0xa4, 0xb2, 0x4c, 0x4f, 0x00, 0x35, + 0xa8, 0x44, 0xf8, 0x96, 0xd9, 0x73, 0xc7, 0x36, 0xf9, 0x1c, 0x56, 0xce, 0x98, 0x93, 0xc3, 0x82, + 0x5b, 0xbb, 0x2c, 0xac, 0x5d, 0x9b, 0x4e, 0x2a, 0xe4, 0xd4, 0x9a, 0x9c, 0x2a, 0xc2, 0x18, 0x61, + 0xb3, 0xa7, 0xbc, 0x61, 0x64, 0x13, 0x5d, 0x89, 0x0b, 0x56, 0xb4, 0xd1, 0xf9, 0x1b, 0x64, 0x77, + 0xf3, 0x1b, 0x96, 0x92, 0x6e, 0x90, 0x63, 0x60, 0xf6, 0x06, 0x75, 0x6a, 0x37, 0x32, 0x90, 0x6e, + 0x1c, 0xd7, 0xfe, 0x48, 0xc3, 0xe2, 0x3e, 0xff, 0x1e, 0x51, 0xfc, 0x72, 0x84, 0x61, 0x44, 0x5a, + 0x90, 0x45, 0x3f, 0x62, 0x0e, 0x86, 0x86, 0x56, 0xbd, 0xb4, 0x5a, 0x58, 0xbb, 0x99, 0x14, 0xdb, + 0xb3, 0x12, 0xb9, 0x69, 0xf9, 0x11, 0x3b, 0xa6, 0xb1, 0x96, 0xdc, 0x83, 0x02, 0xc3, 0x70, 0xe4, + 0x61, 0xef, 0x90, 0x05, 0xde, 0x45, 0x1f, 0x8e, 0x07, 0xc8, 0xf8, 0x68, 0xa3, 0x20, 0xf9, 0xcf, + 0x58, 0xe0, 0x91, 0x5b, 0x40, 0x1c, 0xdf, 0x72, 0x47, 0x36, 0xf6, 0x02, 0xd7, 0xee, 0xc9, 0x4f, + 0xa0, 0x68, 0xde, 0x1c, 0x5d, 0x52, 0x4f, 0xb6, 0x5c, 0x5b, 0x0e, 0xb5, 0xd2, 0xb7, 0x1a, 0xc0, + 0xa9, 0x0f, 0x89, 0xf3, 0xe7, 0x63, 0xd0, 0x4d, 0x2b, 0xe2, 0x33, 0x37, 0x2d, 0x0a, 0xe6, 0xb5, + 0xb9, 0x2f, 0xb5, 0x2e, 0xb0, 0xfb, 0x8e, 0x6f, 0x53, 0x25, 0x21, 0x77, 0x21, 0x7b, 0xe8, 0xb8, + 0x11, 0xb2, 0xd0, 0xb8, 0x24, 0x42, 0x72, 0xe3, 0xa2, 0x36, 0xa1, 0x31, 0x5c, 0xfb, 0x25, 0x8e, + 0xed, 0x26, 0x86, 0xa1, 0xd9, 0x47, 0xf2, 0x29, 0xe8, 0x38, 0x46, 0x3f, 0x8a, 0x43, 0xfb, 0xc6, + 0x5c, 0x2f, 0x94, 0xa2, 0xde, 0xe2, 0x38, 0x55, 0x2a, 0xf2, 0x3e, 0x64, 0xc7, 0x32, 0x5a, 0xff, + 0x25, 0xa0, 0x31, 0x5b, 0xfa, 0x49, 0x83, 0x05, 0x61, 0xe8, 0x4c, 0x18, 0xb4, 0x97, 0x0f, 0xc3, + 0x1a, 0xe8, 0x2a, 0x11, 0xe9, 0xf9, 0xdf, 0x1e, 0x99, 0x12, 0xaa, 0x48, 0xf2, 0x21, 0xc0, 0x4c, + 0x02, 0x2f, 0xd6, 0xe5, 0x83, 0x38, 0xab, 0x6f, 0xfd, 0xa3, 0xc1, 0x95, 0x19, 0x57, 0xc8, 0x1d, + 0x58, 0xd9, 0x5f, 0xdf, 0x6d, 0xb6, 0x7b, 0xeb, 0xcd, 0xdd, 0xce, 0x56, 0xb7, 0xb7, 0xd7, 0xbd, + 0xdf, 0xdd, 0xda, 0xef, 0x2e, 0xa5, 0x4a, 0xa5, 0xc7, 0x4f, 0xaa, 0xd7, 0x66, 0xf0, 0x3d, 0x7f, + 0xe0, 0x07, 0x47, 0xdc, 0xf1, 0xe5, 0x73, 0xaa, 0x26, 0x6d, 0xad, 0xef, 0xb6, 0x96, 0xb4, 0xd2, + 0xff, 0x1e, 0x3f, 0xa9, 0x5e, 0x9d, 0x11, 0x35, 0x19, 0xca, 0xc9, 0x74, 0x5e, 0xb3, 0xb7, 0xbd, + 0xc1, 0x35, 0xe9, 0x44, 0xcd, 0xde, 0xd0, 0x4e, 0xd2, 0xd0, 0xd6, 0xe6, 0xd6, 0x83, 0xd6, 0x52, + 0x26, 0x51, 0x43, 0xd1, 0x0b, 0xc6, 0x58, 0xba, 0xfe, 0xcd, 0xf7, 0xe5, 0xd4, 0xcf, 0x3f, 0x94, + 0x67, 0x5f, 0x75, 0xcd, 0x83, 0x05, 0x71, 0x44, 0xec, 0x78, 0x51, 0x7d, 0x51, 0x23, 0x96, 0xaa, + 0x2f, 0xaa, 0xa7, 0xda, 0xd5, 0x5f, 0x7f, 0xfc, 0xfb, 0xbb, 0xf4, 0x15, 0x28, 0x0a, 0xe2, 0x6d, + 0xcf, 0xf4, 0xcd, 0x3e, 0xb2, 0x77, 0xb4, 0x86, 0xf1, 0xf4, 0x59, 0x39, 0xf5, 0xfb, 0xb3, 0x72, + 0xea, 0xab, 0x69, 0x59, 0x7b, 0x3a, 0x2d, 0x6b, 0xbf, 0x4d, 0xcb, 0xda, 0x9f, 0xd3, 0xb2, 0x76, + 0xa0, 0x8b, 0x3f, 0x90, 0xef, 0xfd, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xf8, 0x53, 0xd9, 0x73, 0xb7, + 0x0a, 0x00, 0x00, } diff --git a/vendor/github.com/docker/swarmkit/api/store.proto b/vendor/github.com/docker/swarmkit/api/watch.proto similarity index 98% rename from vendor/github.com/docker/swarmkit/api/store.proto rename to vendor/github.com/docker/swarmkit/api/watch.proto index b95c31cd5c..f84fd9ef77 100644 --- a/vendor/github.com/docker/swarmkit/api/store.proto +++ b/vendor/github.com/docker/swarmkit/api/watch.proto @@ -69,8 +69,8 @@ message SelectBy { } -// Store defines the RPC methods for interacting with the data store. -service Store { +// Watch defines the RPC methods for monitoring data store change. +service Watch { // Watch starts a stream that returns any changes to objects that match // the specified selectors. When the stream begins, it immediately sends // an empty message back to the client. It is important to wait for diff --git a/vendor/github.com/docker/swarmkit/ca/certificates.go b/vendor/github.com/docker/swarmkit/ca/certificates.go index 8f03640e98..37c8a172de 100644 --- a/vendor/github.com/docker/swarmkit/ca/certificates.go +++ b/vendor/github.com/docker/swarmkit/ca/certificates.go @@ -258,6 +258,13 @@ func (rca *RootCA) RequestAndSaveNewCertificates(ctx context.Context, kw KeyWrit // the local connection will not be returned by the connection // broker anymore. config.ForceRemote = true + + // Wait a moment, in case a leader election was taking place. + select { + case <-time.After(config.RetryInterval): + case <-ctx.Done(): + return nil, nil, ctx.Err() + } } if err != nil { return nil, nil, err @@ -286,10 +293,19 @@ func (rca *RootCA) RequestAndSaveNewCertificates(ctx context.Context, kw KeyWrit var kekUpdate *KEKData for i := 0; i < 5; i++ { // ValidateCertChain will always return at least 1 cert, so indexing at 0 is safe - kekUpdate, err = rca.getKEKUpdate(ctx, leafCert, tlsKeyPair, config.ConnBroker) + kekUpdate, err = rca.getKEKUpdate(ctx, leafCert, tlsKeyPair, config) if err == nil { break } + + config.ForceRemote = true + + // Wait a moment, in case a leader election was taking place. + select { + case <-time.After(config.RetryInterval): + case <-ctx.Done(): + return nil, nil, ctx.Err() + } } if err != nil { return nil, nil, err @@ -305,7 +321,7 @@ func (rca *RootCA) RequestAndSaveNewCertificates(ctx context.Context, kw KeyWrit }, nil } -func (rca *RootCA) getKEKUpdate(ctx context.Context, leafCert *x509.Certificate, keypair tls.Certificate, connBroker *connectionbroker.Broker) (*KEKData, error) { +func (rca *RootCA) getKEKUpdate(ctx context.Context, leafCert *x509.Certificate, keypair tls.Certificate, config CertificateRequestConfig) (*KEKData, error) { var managerRole bool for _, ou := range leafCert.Subject.OrganizationalUnit { if ou == ManagerRole { @@ -316,7 +332,7 @@ func (rca *RootCA) getKEKUpdate(ctx context.Context, leafCert *x509.Certificate, if managerRole { mtlsCreds := credentials.NewTLS(&tls.Config{ServerName: CARole, RootCAs: rca.Pool, Certificates: []tls.Certificate{keypair}}) - conn, err := getGRPCConnection(mtlsCreds, connBroker, false) + conn, err := getGRPCConnection(mtlsCreds, config.ConnBroker, config.ForceRemote) if err != nil { return nil, err } @@ -386,16 +402,17 @@ func (rca *RootCA) CrossSignCACertificate(otherCAPEM []byte) ([]byte, error) { } // create a new cert with exactly the same parameters, including the public key and exact NotBefore and NotAfter - newCert, err := helpers.ParseCertificatePEM(otherCAPEM) + template, err := helpers.ParseCertificatePEM(otherCAPEM) if err != nil { return nil, errors.New("could not parse new CA certificate") } - if !newCert.IsCA { + if !template.IsCA { return nil, errors.New("certificate not a CA") } - derBytes, err := x509.CreateCertificate(cryptorand.Reader, newCert, signer.parsedCert, newCert.PublicKey, signer.cryptoSigner) + template.SignatureAlgorithm = signer.parsedCert.SignatureAlgorithm // make sure we can sign with the signer key + derBytes, err := x509.CreateCertificate(cryptorand.Reader, template, signer.parsedCert, template.PublicKey, signer.cryptoSigner) if err != nil { return nil, errors.Wrap(err, "could not cross-sign new CA certificate using old CA material") } diff --git a/vendor/github.com/docker/swarmkit/ca/config.go b/vendor/github.com/docker/swarmkit/ca/config.go index 758d15799d..2aaaf78aba 100644 --- a/vendor/github.com/docker/swarmkit/ca/config.go +++ b/vendor/github.com/docker/swarmkit/ca/config.go @@ -50,6 +50,12 @@ const ( base36DigestLen = 50 ) +var ( + // GetCertRetryInterval is how long to wait before retrying a node + // certificate or root certificate request. + GetCertRetryInterval = 2 * time.Second +) + // SecurityConfig is used to represent a node's security configuration. It includes information about // the RootCA and ServerTLSCreds/ClientTLSCreds transport authenticators to be used for MTLS type SecurityConfig struct { @@ -307,6 +313,12 @@ func DownloadRootCA(ctx context.Context, paths CertPaths, token string, connBrok break } log.G(ctx).WithError(err).Errorf("failed to retrieve remote root CA certificate") + + select { + case <-time.After(GetCertRetryInterval): + case <-ctx.Done(): + return RootCA{}, ctx.Err() + } } if err != nil { return RootCA{}, err @@ -385,6 +397,8 @@ type CertificateRequestConfig struct { // NodeCertificateStatusRequestTimeout determines how long to wait for a node // status RPC result. If not provided (zero value), will default to 5 seconds. NodeCertificateStatusRequestTimeout time.Duration + // RetryInterval specifies how long to delay between retries, if non-zero. + RetryInterval time.Duration } // CreateSecurityConfig creates a new key and cert for this node, either locally @@ -400,11 +414,12 @@ func (rootCA RootCA) CreateSecurityConfig(ctx context.Context, krw *KeyReadWrite tlsKeyPair, issuerInfo, err := rootCA.IssueAndSaveNewCertificates(krw, cn, proposedRole, org) switch errors.Cause(err) { case ErrNoValidSigner: + config.RetryInterval = GetCertRetryInterval // Request certificate issuance from a remote CA. // Last argument is nil because at this point we don't have any valid TLS creds tlsKeyPair, issuerInfo, err = rootCA.RequestAndSaveNewCertificates(ctx, krw, config) if err != nil { - log.G(ctx).WithError(err).Error("failed to request save new certificate") + log.G(ctx).WithError(err).Error("failed to request and save new certificate") return nil, err } case nil: diff --git a/vendor/github.com/docker/swarmkit/manager/allocator/network.go b/vendor/github.com/docker/swarmkit/manager/allocator/network.go index 4e9e5c55a7..4638eb6f60 100644 --- a/vendor/github.com/docker/swarmkit/manager/allocator/network.go +++ b/vendor/github.com/docker/swarmkit/manager/allocator/network.go @@ -562,25 +562,7 @@ func taskUpdateEndpoint(t *api.Task, endpoint *api.Endpoint) { // IsIngressNetworkNeeded checks whether the service requires the routing-mesh func IsIngressNetworkNeeded(s *api.Service) bool { - if s == nil { - return false - } - - if s.Spec.Endpoint == nil { - return false - } - - for _, p := range s.Spec.Endpoint.Ports { - // The service to which this task belongs is trying to - // expose ports with PublishMode as Ingress to the - // external world. Automatically attach the task to - // the ingress network. - if p.PublishMode == api.PublishModeIngress { - return true - } - } - - return false + return networkallocator.IsIngressNetworkNeeded(s) } func (a *Allocator) taskCreateNetworkAttachments(t *api.Task, s *api.Service) { diff --git a/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/networkallocator.go b/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/networkallocator.go index b7e83cbec7..0b47d3549f 100644 --- a/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/networkallocator.go +++ b/vendor/github.com/docker/swarmkit/manager/allocator/networkallocator/networkallocator.go @@ -191,7 +191,7 @@ func (na *NetworkAllocator) ServiceAllocate(s *api.Service) (err error) { vipLoop: for _, eAttach := range s.Endpoint.VirtualIPs { - if na.IsVIPOnIngressNetwork(eAttach) { + if na.IsVIPOnIngressNetwork(eAttach) && IsIngressNetworkNeeded(s) { if err = na.allocateVIP(eAttach); err != nil { return err } @@ -362,7 +362,7 @@ func (na *NetworkAllocator) ServiceNeedsAllocation(s *api.Service, flags ...func if s.Endpoint != nil { vipLoop: for _, vip := range s.Endpoint.VirtualIPs { - if na.IsVIPOnIngressNetwork(vip) { + if na.IsVIPOnIngressNetwork(vip) && IsIngressNetworkNeeded(s) { continue vipLoop } for _, net := range specNetworks { @@ -802,17 +802,15 @@ func (na *NetworkAllocator) allocatePools(n *api.Network) (map[string]string, er pools := make(map[string]string) - if n.Spec.IPAM == nil { - n.Spec.IPAM = &api.IPAMOptions{} - } - - ipamConfigs := make([]*api.IPAMConfig, len(n.Spec.IPAM.Configs)) - copy(ipamConfigs, n.Spec.IPAM.Configs) + var ipamConfigs []*api.IPAMConfig // If there is non-nil IPAM state always prefer those subnet // configs over Spec configs. if n.IPAM != nil { ipamConfigs = n.IPAM.Configs + } else if n.Spec.IPAM != nil { + ipamConfigs = make([]*api.IPAMConfig, len(n.Spec.IPAM.Configs)) + copy(ipamConfigs, n.Spec.IPAM.Configs) } // Append an empty slot for subnet allocation if there are no @@ -913,3 +911,26 @@ func IsIngressNetwork(nw *api.Network) bool { _, ok := nw.Spec.Annotations.Labels["com.docker.swarm.internal"] return ok && nw.Spec.Annotations.Name == "ingress" } + +// IsIngressNetworkNeeded checks whether the service requires the routing-mesh +func IsIngressNetworkNeeded(s *api.Service) bool { + if s == nil { + return false + } + + if s.Spec.Endpoint == nil { + return false + } + + for _, p := range s.Spec.Endpoint.Ports { + // The service to which this task belongs is trying to + // expose ports with PublishMode as Ingress to the + // external world. Automatically attach the task to + // the ingress network. + if p.PublishMode == api.PublishModeIngress { + return true + } + } + + return false +} diff --git a/vendor/github.com/docker/swarmkit/manager/manager.go b/vendor/github.com/docker/swarmkit/manager/manager.go index 026be7df25..212f9e4574 100644 --- a/vendor/github.com/docker/swarmkit/manager/manager.go +++ b/vendor/github.com/docker/swarmkit/manager/manager.go @@ -36,7 +36,7 @@ import ( "github.com/docker/swarmkit/manager/scheduler" "github.com/docker/swarmkit/manager/state/raft" "github.com/docker/swarmkit/manager/state/store" - "github.com/docker/swarmkit/manager/storeapi" + "github.com/docker/swarmkit/manager/watchapi" "github.com/docker/swarmkit/remotes" "github.com/docker/swarmkit/xnet" gogotypes "github.com/gogo/protobuf/types" @@ -394,13 +394,13 @@ func (m *Manager) Run(parent context.Context) error { } baseControlAPI := controlapi.NewServer(m.raftNode.MemoryStore(), m.raftNode, m.config.SecurityConfig, m.caserver, m.config.PluginGetter) - baseStoreAPI := storeapi.NewServer(m.raftNode.MemoryStore()) + baseWatchAPI := watchapi.NewServer(m.raftNode.MemoryStore()) baseResourceAPI := resourceapi.New(m.raftNode.MemoryStore()) healthServer := health.NewHealthServer() localHealthServer := health.NewHealthServer() authenticatedControlAPI := api.NewAuthenticatedWrapperControlServer(baseControlAPI, authorize) - authenticatedStoreAPI := api.NewAuthenticatedWrapperStoreServer(baseStoreAPI, authorize) + authenticatedWatchAPI := api.NewAuthenticatedWrapperWatchServer(baseWatchAPI, authorize) authenticatedResourceAPI := api.NewAuthenticatedWrapperResourceAllocatorServer(baseResourceAPI, authorize) authenticatedLogsServerAPI := api.NewAuthenticatedWrapperLogsServer(m.logbroker, authorize) authenticatedLogBrokerAPI := api.NewAuthenticatedWrapperLogBrokerServer(m.logbroker, authorize) @@ -450,7 +450,6 @@ func (m *Manager) Run(parent context.Context) error { return context.WithValue(ctx, ca.LocalRequestKey, nodeInfo), nil } localProxyControlAPI := api.NewRaftProxyControlServer(baseControlAPI, m.raftNode, handleRequestLocally, forwardAsOwnRequest) - localProxyStoreAPI := api.NewRaftProxyStoreServer(baseStoreAPI, m.raftNode, handleRequestLocally, forwardAsOwnRequest) localProxyLogsAPI := api.NewRaftProxyLogsServer(m.logbroker, m.raftNode, handleRequestLocally, forwardAsOwnRequest) localProxyDispatcherAPI := api.NewRaftProxyDispatcherServer(m.dispatcher, m.raftNode, handleRequestLocally, forwardAsOwnRequest) localProxyCAAPI := api.NewRaftProxyCAServer(m.caserver, m.raftNode, handleRequestLocally, forwardAsOwnRequest) @@ -466,7 +465,7 @@ func (m *Manager) Run(parent context.Context) error { api.RegisterHealthServer(m.server, authenticatedHealthAPI) api.RegisterRaftMembershipServer(m.server, proxyRaftMembershipAPI) api.RegisterControlServer(m.server, authenticatedControlAPI) - api.RegisterStoreServer(m.server, authenticatedStoreAPI) + api.RegisterWatchServer(m.server, authenticatedWatchAPI) api.RegisterLogsServer(m.server, authenticatedLogsServerAPI) api.RegisterLogBrokerServer(m.server, proxyLogBrokerAPI) api.RegisterResourceAllocatorServer(m.server, proxyResourceAPI) @@ -474,7 +473,7 @@ func (m *Manager) Run(parent context.Context) error { grpc_prometheus.Register(m.server) api.RegisterControlServer(m.localserver, localProxyControlAPI) - api.RegisterStoreServer(m.localserver, localProxyStoreAPI) + api.RegisterWatchServer(m.localserver, baseWatchAPI) api.RegisterLogsServer(m.localserver, localProxyLogsAPI) api.RegisterHealthServer(m.localserver, localHealthServer) api.RegisterDispatcherServer(m.localserver, localProxyDispatcherAPI) diff --git a/vendor/github.com/docker/swarmkit/manager/scheduler/filter.go b/vendor/github.com/docker/swarmkit/manager/scheduler/filter.go index b2b64578b4..ae5b6930bf 100644 --- a/vendor/github.com/docker/swarmkit/manager/scheduler/filter.go +++ b/vendor/github.com/docker/swarmkit/manager/scheduler/filter.go @@ -217,3 +217,46 @@ func (f *ConstraintFilter) Explain(nodes int) string { } return fmt.Sprintf("scheduling constraints not satisfied on %d nodes", nodes) } + +// PlatformFilter selects only nodes that run the required platform. +type PlatformFilter struct { + supportedPlatforms []*api.Platform +} + +// SetTask returns true when the filter is enabled for a given task. +func (f *PlatformFilter) SetTask(t *api.Task) bool { + placement := t.Spec.Placement + if placement != nil { + // copy the platform information + f.supportedPlatforms = placement.Platforms + if len(placement.Platforms) > 0 { + return true + } + } + return false +} + +// Check returns true if the task can be scheduled into the given node. +func (f *PlatformFilter) Check(n *NodeInfo) bool { + // if the supportedPlatforms field is empty, then either it wasn't + // provided or there are no constraints + if len(f.supportedPlatforms) == 0 { + return true + } + // check if the platform for the node is supported + nodePlatform := n.Description.Platform + for _, p := range f.supportedPlatforms { + if (p.Architecture == "" || p.Architecture == nodePlatform.Architecture) && (p.OS == "" || p.OS == nodePlatform.OS) { + return true + } + } + return false +} + +// Explain returns an explanation of a failure. +func (f *PlatformFilter) Explain(nodes int) string { + if nodes == 1 { + return "unsupported platform on 1 node" + } + return fmt.Sprintf("unsupported platform on %d nodes", nodes) +} diff --git a/vendor/github.com/docker/swarmkit/manager/scheduler/pipeline.go b/vendor/github.com/docker/swarmkit/manager/scheduler/pipeline.go index 00fd36c5c7..31df45d83a 100644 --- a/vendor/github.com/docker/swarmkit/manager/scheduler/pipeline.go +++ b/vendor/github.com/docker/swarmkit/manager/scheduler/pipeline.go @@ -13,6 +13,7 @@ var ( &ResourceFilter{}, &PluginFilter{}, &ConstraintFilter{}, + &PlatformFilter{}, } ) diff --git a/vendor/github.com/docker/swarmkit/manager/scheduler/scheduler.go b/vendor/github.com/docker/swarmkit/manager/scheduler/scheduler.go index b06217e171..a6479b8834 100644 --- a/vendor/github.com/docker/swarmkit/manager/scheduler/scheduler.go +++ b/vendor/github.com/docker/swarmkit/manager/scheduler/scheduler.go @@ -125,15 +125,15 @@ func (s *Scheduler) Run(ctx context.Context) error { commitDebounceTimeout <-chan time.Time ) - pendingChanges := 0 + tickRequired := false schedule := func() { if len(s.preassignedTasks) > 0 { s.processPreassignedTasks(ctx) } - if pendingChanges > 0 { + if tickRequired { s.tick(ctx) - pendingChanges = 0 + tickRequired = false } } @@ -143,17 +143,24 @@ func (s *Scheduler) Run(ctx context.Context) error { case event := <-updates: switch v := event.(type) { case api.EventCreateTask: - pendingChanges += s.createTask(ctx, v.Task) + if s.createTask(ctx, v.Task) { + tickRequired = true + } case api.EventUpdateTask: - pendingChanges += s.updateTask(ctx, v.Task) + if s.updateTask(ctx, v.Task) { + tickRequired = true + } case api.EventDeleteTask: - s.deleteTask(ctx, v.Task) + if s.deleteTask(ctx, v.Task) { + // deleting tasks may free up node resource, pending tasks should be re-evaluated. + tickRequired = true + } case api.EventCreateNode: s.createOrUpdateNode(v.Node) - pendingChanges++ + tickRequired = true case api.EventUpdateNode: s.createOrUpdateNode(v.Node) - pendingChanges++ + tickRequired = true case api.EventDeleteNode: s.nodeSet.remove(v.Node.ID) case state.EventCommit: @@ -193,24 +200,24 @@ func (s *Scheduler) enqueue(t *api.Task) { s.unassignedTasks[t.ID] = t } -func (s *Scheduler) createTask(ctx context.Context, t *api.Task) int { +func (s *Scheduler) createTask(ctx context.Context, t *api.Task) bool { // Ignore all tasks that have not reached PENDING // state, and tasks that no longer consume resources. if t.Status.State < api.TaskStatePending || t.Status.State > api.TaskStateRunning { - return 0 + return false } s.allTasks[t.ID] = t if t.NodeID == "" { // unassigned task s.enqueue(t) - return 1 + return true } if t.Status.State == api.TaskStatePending { s.preassignedTasks[t.ID] = t // preassigned tasks do not contribute to running tasks count - return 0 + return false } nodeInfo, err := s.nodeSet.nodeInfo(t.NodeID) @@ -218,23 +225,23 @@ func (s *Scheduler) createTask(ctx context.Context, t *api.Task) int { s.nodeSet.updateNode(nodeInfo) } - return 0 + return false } -func (s *Scheduler) updateTask(ctx context.Context, t *api.Task) int { +func (s *Scheduler) updateTask(ctx context.Context, t *api.Task) bool { // Ignore all tasks that have not reached PENDING // state. if t.Status.State < api.TaskStatePending { - return 0 + return false } oldTask := s.allTasks[t.ID] - // Ignore all tasks that have not reached ALLOCATED + // Ignore all tasks that have not reached Pending // state, and tasks that no longer consume resources. if t.Status.State > api.TaskStateRunning { if oldTask == nil { - return 1 + return false } s.deleteTask(ctx, oldTask) if t.Status.State != oldTask.Status.State && @@ -245,7 +252,7 @@ func (s *Scheduler) updateTask(ctx context.Context, t *api.Task) int { s.nodeSet.updateNode(nodeInfo) } } - return 1 + return true } if t.NodeID == "" { @@ -255,7 +262,7 @@ func (s *Scheduler) updateTask(ctx context.Context, t *api.Task) int { } s.allTasks[t.ID] = t s.enqueue(t) - return 1 + return true } if t.Status.State == api.TaskStatePending { @@ -265,7 +272,7 @@ func (s *Scheduler) updateTask(ctx context.Context, t *api.Task) int { s.allTasks[t.ID] = t s.preassignedTasks[t.ID] = t // preassigned tasks do not contribute to running tasks count - return 0 + return false } s.allTasks[t.ID] = t @@ -274,16 +281,18 @@ func (s *Scheduler) updateTask(ctx context.Context, t *api.Task) int { s.nodeSet.updateNode(nodeInfo) } - return 0 + return false } -func (s *Scheduler) deleteTask(ctx context.Context, t *api.Task) { +func (s *Scheduler) deleteTask(ctx context.Context, t *api.Task) bool { delete(s.allTasks, t.ID) delete(s.preassignedTasks, t.ID) nodeInfo, err := s.nodeSet.nodeInfo(t.NodeID) if err == nil && nodeInfo.removeTask(t) { s.nodeSet.updateNode(nodeInfo) + return true } + return false } func (s *Scheduler) createOrUpdateNode(n *api.Node) { diff --git a/vendor/github.com/docker/swarmkit/manager/storeapi/server.go b/vendor/github.com/docker/swarmkit/manager/watchapi/server.go similarity index 94% rename from vendor/github.com/docker/swarmkit/manager/storeapi/server.go rename to vendor/github.com/docker/swarmkit/manager/watchapi/server.go index b7396ba59a..07cdedbb36 100644 --- a/vendor/github.com/docker/swarmkit/manager/storeapi/server.go +++ b/vendor/github.com/docker/swarmkit/manager/watchapi/server.go @@ -1,4 +1,4 @@ -package storeapi +package watchapi import ( "github.com/docker/swarmkit/manager/state/store" diff --git a/vendor/github.com/docker/swarmkit/manager/storeapi/watch.go b/vendor/github.com/docker/swarmkit/manager/watchapi/watch.go similarity index 93% rename from vendor/github.com/docker/swarmkit/manager/storeapi/watch.go rename to vendor/github.com/docker/swarmkit/manager/watchapi/watch.go index d833bbacbe..555b899743 100644 --- a/vendor/github.com/docker/swarmkit/manager/storeapi/watch.go +++ b/vendor/github.com/docker/swarmkit/manager/watchapi/watch.go @@ -1,4 +1,4 @@ -package storeapi +package watchapi import ( "google.golang.org/grpc" @@ -14,7 +14,7 @@ import ( // an empty message back to the client. It is important to wait for // this message before taking any actions that depend on an established // stream of changes for consistency. -func (s *Server) Watch(request *api.WatchRequest, stream api.Store_WatchServer) error { +func (s *Server) Watch(request *api.WatchRequest, stream api.Watch_WatchServer) error { ctx := stream.Context() watchArgs, err := api.ConvertWatchArgs(request.Entries)