mirror of https://github.com/docker/docs.git
				
				
				
			vendor: update swarmkit to 6478bc19
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com> (cherry picked from commit 4d12e64cd4893cbd9f7a6078851f4e3c9c6fd3a5) Signed-off-by: Tibor Vass <tibor@docker.com>
This commit is contained in:
		
							parent
							
								
									9b5d507804
								
							
						
					
					
						commit
						0450069179
					
				|  | @ -139,7 +139,7 @@ clone git github.com/docker/docker-credential-helpers v0.3.0 | |||
| clone git github.com/docker/containerd 1b3a81545ca79456086dc2aa424357be98b962ee | ||||
| 
 | ||||
| # cluster | ||||
| clone git github.com/docker/swarmkit 16fa595d3b6fec012830179dc8e9b2d90335527d | ||||
| clone git github.com/docker/swarmkit 6478bc19cf4bc1d7ba2d6f04ccaacf099508f4a0 | ||||
| clone git github.com/golang/mock bd3c8e81be01eef76d4b503f5e687d2d1354d2d9 | ||||
| clone git github.com/gogo/protobuf 43a2e0b1c32252bfbbdf81f7faa7a88fb3fa4028 | ||||
| clone git github.com/cloudflare/cfssl b895b0549c0ff676f92cf09ba971ae02bb41367b | ||||
|  |  | |||
|  | @ -197,6 +197,11 @@ func (a *Agent) run(ctx context.Context) { | |||
| 			sessionq = nil | ||||
| 			// if we're here before <-registered, do nothing for that event
 | ||||
| 			registered = nil | ||||
| 
 | ||||
| 			// Bounce the connection.
 | ||||
| 			if a.config.Picker != nil { | ||||
| 				a.config.Picker.Reset() | ||||
| 			} | ||||
| 		case <-session.closed: | ||||
| 			log.G(ctx).Debugf("agent: rebuild session") | ||||
| 
 | ||||
|  |  | |||
|  | @ -19,9 +19,15 @@ type Config struct { | |||
| 	// updated with managers weights as observed by the agent.
 | ||||
| 	Managers picker.Remotes | ||||
| 
 | ||||
| 	// Conn specifies the client connection Agent will use
 | ||||
| 	// Conn specifies the client connection Agent will use.
 | ||||
| 	Conn *grpc.ClientConn | ||||
| 
 | ||||
| 	// Picker is the picker used by Conn.
 | ||||
| 	// TODO(aaronl): This is only part of the config to allow resetting the
 | ||||
| 	// GRPC connection. This should be refactored to address the coupling
 | ||||
| 	// between Conn and Picker.
 | ||||
| 	Picker *picker.Picker | ||||
| 
 | ||||
| 	// Executor specifies the executor to use for the agent.
 | ||||
| 	Executor exec.Executor | ||||
| 
 | ||||
|  |  | |||
|  | @ -375,8 +375,9 @@ func (n *Node) runAgent(ctx context.Context, db *bolt.DB, creds credentials.Tran | |||
| 	if ctx.Err() != nil { | ||||
| 		return ctx.Err() | ||||
| 	} | ||||
| 	picker := picker.NewPicker(n.remotes, manager.Addr) | ||||
| 	conn, err := grpc.Dial(manager.Addr, | ||||
| 		grpc.WithPicker(picker.NewPicker(n.remotes, manager.Addr)), | ||||
| 		grpc.WithPicker(picker), | ||||
| 		grpc.WithTransportCredentials(creds), | ||||
| 		grpc.WithBackoffMaxDelay(maxSessionFailureBackoff)) | ||||
| 	if err != nil { | ||||
|  | @ -389,6 +390,7 @@ func (n *Node) runAgent(ctx context.Context, db *bolt.DB, creds credentials.Tran | |||
| 		Executor:         n.config.Executor, | ||||
| 		DB:               db, | ||||
| 		Conn:             conn, | ||||
| 		Picker:           picker, | ||||
| 		NotifyRoleChange: n.roleChangeReq, | ||||
| 	}) | ||||
| 	if err != nil { | ||||
|  |  | |||
|  | @ -12,6 +12,8 @@ import ( | |||
| 	"google.golang.org/grpc/codes" | ||||
| ) | ||||
| 
 | ||||
| const dispatcherRPCTimeout = 5 * time.Second | ||||
| 
 | ||||
| var ( | ||||
| 	errSessionDisconnect = errors.New("agent: session disconnect") // instructed to disconnect
 | ||||
| 	errSessionClosed     = errors.New("agent: session closed") | ||||
|  | @ -88,16 +90,39 @@ func (s *session) start(ctx context.Context) error { | |||
| 		description.Hostname = s.agent.config.Hostname | ||||
| 	} | ||||
| 
 | ||||
| 	stream, err := client.Session(ctx, &api.SessionRequest{ | ||||
| 		Description: description, | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	errChan := make(chan error, 1) | ||||
| 	var ( | ||||
| 		msg    *api.SessionMessage | ||||
| 		stream api.Dispatcher_SessionClient | ||||
| 	) | ||||
| 	// 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.
 | ||||
| 	sessionCtx, cancelSession := context.WithCancel(ctx) | ||||
| 
 | ||||
| 	msg, err := stream.Recv() | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	// Need to run Session in a goroutine since there's no way to set a
 | ||||
| 	// timeout for an individual Recv call in a stream.
 | ||||
| 	go func() { | ||||
| 		stream, err = client.Session(sessionCtx, &api.SessionRequest{ | ||||
| 			Description: description, | ||||
| 		}) | ||||
| 		if err != nil { | ||||
| 			errChan <- err | ||||
| 			return | ||||
| 		} | ||||
| 
 | ||||
| 		msg, err = stream.Recv() | ||||
| 		errChan <- err | ||||
| 	}() | ||||
| 
 | ||||
| 	select { | ||||
| 	case err := <-errChan: | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 	case <-time.After(dispatcherRPCTimeout): | ||||
| 		cancelSession() | ||||
| 		return errors.New("session initiation timed out") | ||||
| 	} | ||||
| 
 | ||||
| 	s.sessionID = msg.SessionID | ||||
|  | @ -115,9 +140,11 @@ func (s *session) heartbeat(ctx context.Context) error { | |||
| 	for { | ||||
| 		select { | ||||
| 		case <-heartbeat.C: | ||||
| 			resp, err := client.Heartbeat(ctx, &api.HeartbeatRequest{ | ||||
| 			heartbeatCtx, cancel := context.WithTimeout(ctx, dispatcherRPCTimeout) | ||||
| 			resp, err := client.Heartbeat(heartbeatCtx, &api.HeartbeatRequest{ | ||||
| 				SessionID: s.sessionID, | ||||
| 			}) | ||||
| 			cancel() | ||||
| 			if err != nil { | ||||
| 				if grpc.Code(err) == codes.NotFound { | ||||
| 					err = errNodeNotRegistered | ||||
|  |  | |||
|  | @ -159,6 +159,15 @@ type Task struct { | |||
| 	// A copy of runtime state of service endpoint from Service
 | ||||
| 	// object to be distributed to agents as part of the task.
 | ||||
| 	Endpoint *Endpoint `protobuf:"bytes,12,opt,name=endpoint" json:"endpoint,omitempty"` | ||||
| 	// LogDriver specifies the selected log driver to use for the task. Agent
 | ||||
| 	// processes should always favor the value in this field.
 | ||||
| 	//
 | ||||
| 	// If present in the TaskSpec, this will be a copy of that value. The
 | ||||
| 	// orchestrator may choose to insert a value here, which should be honored,
 | ||||
| 	// such a cluster default or policy-based value.
 | ||||
| 	//
 | ||||
| 	// If not present, the daemon's default will be used.
 | ||||
| 	LogDriver *Driver `protobuf:"bytes,13,opt,name=log_driver,json=logDriver" json:"log_driver,omitempty"` | ||||
| } | ||||
| 
 | ||||
| func (m *Task) Reset()                    { *m = Task{} } | ||||
|  | @ -334,6 +343,7 @@ func (m *Task) Copy() *Task { | |||
| 		Status:             *m.Status.Copy(), | ||||
| 		DesiredState:       m.DesiredState, | ||||
| 		Endpoint:           m.Endpoint.Copy(), | ||||
| 		LogDriver:          m.LogDriver.Copy(), | ||||
| 	} | ||||
| 
 | ||||
| 	if m.Networks != nil { | ||||
|  | @ -498,7 +508,7 @@ func (this *Task) GoString() string { | |||
| 	if this == nil { | ||||
| 		return "nil" | ||||
| 	} | ||||
| 	s := make([]string, 0, 16) | ||||
| 	s := make([]string, 0, 17) | ||||
| 	s = append(s, "&api.Task{") | ||||
| 	s = append(s, "ID: "+fmt.Sprintf("%#v", this.ID)+",\n") | ||||
| 	s = append(s, "Meta: "+strings.Replace(this.Meta.GoString(), `&`, ``, 1)+",\n") | ||||
|  | @ -516,6 +526,9 @@ func (this *Task) GoString() string { | |||
| 	if this.Endpoint != nil { | ||||
| 		s = append(s, "Endpoint: "+fmt.Sprintf("%#v", this.Endpoint)+",\n") | ||||
| 	} | ||||
| 	if this.LogDriver != nil { | ||||
| 		s = append(s, "LogDriver: "+fmt.Sprintf("%#v", this.LogDriver)+",\n") | ||||
| 	} | ||||
| 	s = append(s, "}") | ||||
| 	return strings.Join(s, "") | ||||
| } | ||||
|  | @ -962,6 +975,16 @@ func (m *Task) MarshalTo(data []byte) (int, error) { | |||
| 		} | ||||
| 		i += n20 | ||||
| 	} | ||||
| 	if m.LogDriver != nil { | ||||
| 		data[i] = 0x6a | ||||
| 		i++ | ||||
| 		i = encodeVarintObjects(data, i, uint64(m.LogDriver.Size())) | ||||
| 		n21, err := m.LogDriver.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n21 | ||||
| 	} | ||||
| 	return i, nil | ||||
| } | ||||
| 
 | ||||
|  | @ -984,11 +1007,11 @@ func (m *NetworkAttachment) MarshalTo(data []byte) (int, error) { | |||
| 		data[i] = 0xa | ||||
| 		i++ | ||||
| 		i = encodeVarintObjects(data, i, uint64(m.Network.Size())) | ||||
| 		n21, err := m.Network.MarshalTo(data[i:]) | ||||
| 		n22, err := m.Network.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n21 | ||||
| 		i += n22 | ||||
| 	} | ||||
| 	if len(m.Addresses) > 0 { | ||||
| 		for _, s := range m.Addresses { | ||||
|  | @ -1047,38 +1070,38 @@ func (m *Network) MarshalTo(data []byte) (int, error) { | |||
| 	data[i] = 0x12 | ||||
| 	i++ | ||||
| 	i = encodeVarintObjects(data, i, uint64(m.Meta.Size())) | ||||
| 	n22, err := m.Meta.MarshalTo(data[i:]) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	i += n22 | ||||
| 	data[i] = 0x1a | ||||
| 	i++ | ||||
| 	i = encodeVarintObjects(data, i, uint64(m.Spec.Size())) | ||||
| 	n23, err := m.Spec.MarshalTo(data[i:]) | ||||
| 	n23, err := m.Meta.MarshalTo(data[i:]) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	i += n23 | ||||
| 	data[i] = 0x1a | ||||
| 	i++ | ||||
| 	i = encodeVarintObjects(data, i, uint64(m.Spec.Size())) | ||||
| 	n24, err := m.Spec.MarshalTo(data[i:]) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	i += n24 | ||||
| 	if m.DriverState != nil { | ||||
| 		data[i] = 0x22 | ||||
| 		i++ | ||||
| 		i = encodeVarintObjects(data, i, uint64(m.DriverState.Size())) | ||||
| 		n24, err := m.DriverState.MarshalTo(data[i:]) | ||||
| 		n25, err := m.DriverState.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n24 | ||||
| 		i += n25 | ||||
| 	} | ||||
| 	if m.IPAM != nil { | ||||
| 		data[i] = 0x2a | ||||
| 		i++ | ||||
| 		i = encodeVarintObjects(data, i, uint64(m.IPAM.Size())) | ||||
| 		n25, err := m.IPAM.MarshalTo(data[i:]) | ||||
| 		n26, err := m.IPAM.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n25 | ||||
| 		i += n26 | ||||
| 	} | ||||
| 	return i, nil | ||||
| } | ||||
|  | @ -1107,27 +1130,27 @@ func (m *Cluster) MarshalTo(data []byte) (int, error) { | |||
| 	data[i] = 0x12 | ||||
| 	i++ | ||||
| 	i = encodeVarintObjects(data, i, uint64(m.Meta.Size())) | ||||
| 	n26, err := m.Meta.MarshalTo(data[i:]) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	i += n26 | ||||
| 	data[i] = 0x1a | ||||
| 	i++ | ||||
| 	i = encodeVarintObjects(data, i, uint64(m.Spec.Size())) | ||||
| 	n27, err := m.Spec.MarshalTo(data[i:]) | ||||
| 	n27, err := m.Meta.MarshalTo(data[i:]) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	i += n27 | ||||
| 	data[i] = 0x22 | ||||
| 	data[i] = 0x1a | ||||
| 	i++ | ||||
| 	i = encodeVarintObjects(data, i, uint64(m.RootCA.Size())) | ||||
| 	n28, err := m.RootCA.MarshalTo(data[i:]) | ||||
| 	i = encodeVarintObjects(data, i, uint64(m.Spec.Size())) | ||||
| 	n28, err := m.Spec.MarshalTo(data[i:]) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	i += n28 | ||||
| 	data[i] = 0x22 | ||||
| 	i++ | ||||
| 	i = encodeVarintObjects(data, i, uint64(m.RootCA.Size())) | ||||
| 	n29, err := m.RootCA.MarshalTo(data[i:]) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	i += n29 | ||||
| 	if len(m.NetworkBootstrapKeys) > 0 { | ||||
| 		for _, msg := range m.NetworkBootstrapKeys { | ||||
| 			data[i] = 0x2a | ||||
|  | @ -1317,6 +1340,10 @@ func (m *Task) Size() (n int) { | |||
| 		l = m.Endpoint.Size() | ||||
| 		n += 1 + l + sovObjects(uint64(l)) | ||||
| 	} | ||||
| 	if m.LogDriver != nil { | ||||
| 		l = m.LogDriver.Size() | ||||
| 		n += 1 + l + sovObjects(uint64(l)) | ||||
| 	} | ||||
| 	return n | ||||
| } | ||||
| 
 | ||||
|  | @ -1484,6 +1511,7 @@ func (this *Task) String() string { | |||
| 		`DesiredState:` + fmt.Sprintf("%v", this.DesiredState) + `,`, | ||||
| 		`Networks:` + strings.Replace(fmt.Sprintf("%v", this.Networks), "NetworkAttachment", "NetworkAttachment", 1) + `,`, | ||||
| 		`Endpoint:` + strings.Replace(fmt.Sprintf("%v", this.Endpoint), "Endpoint", "Endpoint", 1) + `,`, | ||||
| 		`LogDriver:` + strings.Replace(fmt.Sprintf("%v", this.LogDriver), "Driver", "Driver", 1) + `,`, | ||||
| 		`}`, | ||||
| 	}, "") | ||||
| 	return s | ||||
|  | @ -2774,6 +2802,39 @@ func (m *Task) Unmarshal(data []byte) error { | |||
| 				return err | ||||
| 			} | ||||
| 			iNdEx = postIndex | ||||
| 		case 13: | ||||
| 			if wireType != 2 { | ||||
| 				return fmt.Errorf("proto: wrong wireType = %d for field LogDriver", wireType) | ||||
| 			} | ||||
| 			var msglen int | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return ErrIntOverflowObjects | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				b := data[iNdEx] | ||||
| 				iNdEx++ | ||||
| 				msglen |= (int(b) & 0x7F) << shift | ||||
| 				if b < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 			if msglen < 0 { | ||||
| 				return ErrInvalidLengthObjects | ||||
| 			} | ||||
| 			postIndex := iNdEx + msglen | ||||
| 			if postIndex > l { | ||||
| 				return io.ErrUnexpectedEOF | ||||
| 			} | ||||
| 			if m.LogDriver == nil { | ||||
| 				m.LogDriver = &Driver{} | ||||
| 			} | ||||
| 			if err := m.LogDriver.Unmarshal(data[iNdEx:postIndex]); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			iNdEx = postIndex | ||||
| 		default: | ||||
| 			iNdEx = preIndex | ||||
| 			skippy, err := skipObjects(data[iNdEx:]) | ||||
|  | @ -3466,66 +3527,67 @@ var ( | |||
| ) | ||||
| 
 | ||||
| var fileDescriptorObjects = []byte{ | ||||
| 	// 965 bytes of a gzipped FileDescriptorProto
 | ||||
| 	// 981 bytes of a gzipped FileDescriptorProto
 | ||||
| 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xbc, 0x56, 0x4f, 0x6f, 0x1b, 0x45, | ||||
| 	0x14, 0xaf, 0xed, 0xad, 0xed, 0x7d, 0x4e, 0x22, 0x31, 0x54, 0xd5, 0x36, 0x84, 0xa4, 0xb8, 0x02, | ||||
| 	0x14, 0xaf, 0xed, 0x8d, 0xed, 0x7d, 0x8e, 0x23, 0x31, 0x54, 0xd5, 0x36, 0x84, 0xa4, 0xb8, 0x02, | ||||
| 	0x71, 0x40, 0xae, 0x28, 0x05, 0x81, 0xa0, 0x42, 0xb6, 0x13, 0x81, 0x05, 0x81, 0x68, 0x5a, 0x85, | ||||
| 	0xa3, 0x35, 0xd9, 0x9d, 0x86, 0xc5, 0xf6, 0xee, 0x6a, 0x66, 0xe2, 0x2a, 0x37, 0xc4, 0x07, 0x40, | ||||
| 	0xe2, 0x0b, 0xf0, 0x55, 0xb8, 0x46, 0x9c, 0x38, 0x72, 0xaa, 0x68, 0x6f, 0x9c, 0xe0, 0x23, 0xf0, | ||||
| 	0x66, 0xf6, 0xad, 0xbd, 0x95, 0xd7, 0x51, 0x2b, 0xa1, 0x1c, 0x56, 0x9e, 0x3f, 0xbf, 0xdf, 0x6f, | ||||
| 	0xde, 0x7b, 0xf3, 0xde, 0x1b, 0xc3, 0x66, 0x7a, 0xf2, 0x83, 0x0c, 0x8d, 0xee, 0x65, 0x2a, 0x35, | ||||
| 	0x29, 0x63, 0x51, 0x1a, 0x4e, 0xa4, 0xea, 0xe9, 0x27, 0x42, 0xcd, 0x26, 0xb1, 0xe9, 0xcd, 0xdf, | ||||
| 	0xdf, 0xee, 0x98, 0xf3, 0x4c, 0x12, 0x60, 0xbb, 0xa3, 0x33, 0x19, 0x16, 0x93, 0x5b, 0x26, 0x9e, | ||||
| 	0x49, 0x6d, 0xc4, 0x2c, 0xbb, 0xbb, 0x18, 0xd1, 0xd6, 0x8d, 0xd3, 0xf4, 0x34, 0x75, 0xc3, 0xbb, | ||||
| 	0x76, 0x94, 0xaf, 0x76, 0x7f, 0xab, 0x81, 0x77, 0x28, 0x8d, 0x60, 0x9f, 0x42, 0x6b, 0x2e, 0x95, | ||||
| 	0x8e, 0xd3, 0x24, 0xa8, 0xdd, 0xae, 0xbd, 0xdb, 0xb9, 0xf7, 0x46, 0x6f, 0xf5, 0xe4, 0xde, 0x71, | ||||
| 	0x0e, 0x19, 0x78, 0x17, 0x4f, 0xf7, 0xae, 0xf1, 0x82, 0xc1, 0x3e, 0x03, 0x08, 0x95, 0x14, 0x46, | ||||
| 	0x46, 0x63, 0x61, 0x82, 0xba, 0xe3, 0xbf, 0x59, 0xc5, 0x7f, 0x54, 0x18, 0xc5, 0x7d, 0x22, 0xf4, | ||||
| 	0x8d, 0x65, 0x9f, 0x65, 0x51, 0xc1, 0x6e, 0xbc, 0x14, 0x9b, 0x08, 0x7d, 0xd3, 0xfd, 0xbb, 0x01, | ||||
| 	0xde, 0x37, 0x69, 0x24, 0xd9, 0x4d, 0xa8, 0xc7, 0x91, 0x33, 0xde, 0x1f, 0x34, 0x9f, 0x3f, 0xdd, | ||||
| 	0xab, 0x8f, 0xf6, 0x39, 0xae, 0xb0, 0x7b, 0xe0, 0xcd, 0xd0, 0x43, 0x32, 0x2b, 0xa8, 0x12, 0xb6, | ||||
| 	0x11, 0x20, 0x9f, 0x1c, 0x96, 0x7d, 0x04, 0x9e, 0x0d, 0x2b, 0x19, 0xb3, 0x53, 0xc5, 0xb1, 0x67, | ||||
| 	0x3e, 0x44, 0x4c, 0xc1, 0xb3, 0x78, 0x76, 0x00, 0x9d, 0x48, 0xea, 0x50, 0xc5, 0x99, 0xb1, 0x91, | ||||
| 	0xf4, 0x1c, 0xfd, 0xce, 0x3a, 0xfa, 0xfe, 0x12, 0xca, 0xcb, 0x3c, 0x8c, 0x48, 0x13, 0xfd, 0x34, | ||||
| 	0x67, 0x3a, 0xb8, 0xee, 0x14, 0x76, 0xd7, 0x1a, 0xe0, 0x50, 0x64, 0x02, 0x71, 0xd8, 0x97, 0xb0, | ||||
| 	0x35, 0x13, 0x89, 0x38, 0x95, 0x6a, 0x4c, 0x2a, 0x4d, 0xa7, 0xf2, 0x56, 0xa5, 0xeb, 0x39, 0x32, | ||||
| 	0x17, 0xe2, 0x9b, 0xb3, 0xf2, 0x14, 0xdd, 0x01, 0x61, 0x8c, 0x08, 0xbf, 0x9f, 0xc9, 0xc4, 0x04, | ||||
| 	0x2d, 0xa7, 0xf2, 0x76, 0xa5, 0x2d, 0xd2, 0x3c, 0x49, 0xd5, 0xa4, 0xbf, 0x00, 0xf3, 0x12, 0x91, | ||||
| 	0x7d, 0x01, 0x9d, 0x50, 0x2a, 0x13, 0x3f, 0x8e, 0x43, 0xbc, 0xb4, 0xa0, 0xed, 0x74, 0xf6, 0xaa, | ||||
| 	0x74, 0x86, 0x4b, 0x18, 0x39, 0x55, 0x66, 0x76, 0x7f, 0xaf, 0x41, 0xeb, 0xa1, 0x54, 0xf3, 0x38, | ||||
| 	0xfc, 0x7f, 0xaf, 0xfb, 0x93, 0x17, 0xae, 0xbb, 0xd2, 0x32, 0x3a, 0x76, 0xe5, 0xc6, 0x3f, 0x86, | ||||
| 	0xb6, 0x4c, 0xa2, 0x2c, 0x8d, 0x31, 0x40, 0xde, 0xfa, 0x6c, 0x39, 0x20, 0x0c, 0x5f, 0xa0, 0xbb, | ||||
| 	0xbf, 0xd6, 0xa1, 0x5d, 0x2c, 0xb3, 0xfb, 0x64, 0x41, 0x5e, 0x7b, 0xb7, 0x2f, 0x93, 0xb0, 0x26, | ||||
| 	0xd0, 0xe1, 0xf7, 0xe1, 0x7a, 0x96, 0x2a, 0xa3, 0xd1, 0xd9, 0xc6, 0xba, 0x34, 0x39, 0x42, 0xc0, | ||||
| 	0x30, 0x4d, 0x1e, 0xc7, 0xa7, 0x3c, 0x07, 0xb3, 0xef, 0xa0, 0x33, 0x8f, 0x95, 0x39, 0x13, 0xd3, | ||||
| 	0x71, 0x9c, 0x69, 0x74, 0xda, 0x72, 0xdf, 0xb9, 0xec, 0xc8, 0xde, 0x71, 0x8e, 0x1f, 0x1d, 0x0d, | ||||
| 	0xb6, 0x30, 0xd4, 0xb0, 0x98, 0x6a, 0x0e, 0x24, 0x35, 0xca, 0xf4, 0xf6, 0x21, 0xf8, 0x8b, 0x1d, | ||||
| 	0xf6, 0x1e, 0x40, 0x92, 0x67, 0xc5, 0x78, 0x71, 0x4f, 0x9b, 0x48, 0xf6, 0x29, 0x57, 0xf0, 0xba, | ||||
| 	0x7c, 0x02, 0x8c, 0x22, 0xc6, 0xc0, 0x13, 0x51, 0xa4, 0xdc, 0xad, 0xf9, 0xdc, 0x8d, 0xbb, 0xbf, | ||||
| 	0x5c, 0x07, 0xef, 0x91, 0xd0, 0x93, 0xab, 0xae, 0x6c, 0x7b, 0xe6, 0xca, 0x3d, 0xa3, 0x3b, 0x3a, | ||||
| 	0x4f, 0x01, 0xeb, 0x8e, 0xb7, 0x74, 0x87, 0x12, 0xc3, 0xba, 0x43, 0x80, 0xdc, 0x1d, 0x3d, 0x4d, | ||||
| 	0x8d, 0x2b, 0x5f, 0x8f, 0xbb, 0x31, 0xbb, 0x03, 0xad, 0x04, 0x4b, 0xd6, 0xd2, 0x9b, 0x8e, 0x0e, | ||||
| 	0x48, 0x6f, 0xda, 0x2a, 0x46, 0x6e, 0xd3, 0x6e, 0x21, 0x11, 0x4b, 0x45, 0x24, 0x49, 0x8a, 0xe5, | ||||
| 	0x87, 0x7d, 0x40, 0x53, 0xc9, 0x55, 0x26, 0x64, 0x7f, 0x09, 0x2b, 0x4a, 0xa5, 0xc4, 0x64, 0xc7, | ||||
| 	0xf0, 0x7a, 0x61, 0x6f, 0x59, 0xb0, 0xfd, 0x2a, 0x82, 0x8c, 0x14, 0x4a, 0x3b, 0xa5, 0xd6, 0xe4, | ||||
| 	0xaf, 0x6f, 0x4d, 0x2e, 0x82, 0x55, 0xad, 0x69, 0x00, 0x9b, 0xd8, 0xe7, 0x62, 0x85, 0xad, 0xde, | ||||
| 	0xae, 0xc8, 0x00, 0x50, 0x64, 0x6b, 0x4d, 0xb7, 0x27, 0x11, 0xc9, 0x37, 0x88, 0xe3, 0x66, 0xac, | ||||
| 	0x0f, 0x6d, 0xca, 0x1b, 0x1d, 0x74, 0x5c, 0xee, 0xbe, 0x64, 0x4b, 0x5a, 0xd0, 0x5e, 0x28, 0xda, | ||||
| 	0x8d, 0x57, 0x2a, 0xda, 0x9f, 0x6a, 0xf0, 0xda, 0x8a, 0x32, 0xfb, 0x10, 0xaf, 0x36, 0x5f, 0xbc, | ||||
| 	0xec, 0xf1, 0x24, 0x1e, 0x2f, 0xb0, 0x6c, 0x07, 0x7c, 0x9b, 0xe8, 0x52, 0x6b, 0x99, 0x97, 0xb0, | ||||
| 	0xcf, 0x97, 0x0b, 0x2c, 0x80, 0x96, 0x98, 0xc6, 0xc2, 0xee, 0x35, 0xdc, 0x5e, 0x31, 0xed, 0xfe, | ||||
| 	0x5c, 0x87, 0x16, 0x89, 0x5d, 0x75, 0x1b, 0xa4, 0x63, 0x57, 0xca, 0xe3, 0x01, 0x6c, 0x44, 0x2a, | ||||
| 	0x9e, 0xd3, 0x93, 0x23, 0xa9, 0x15, 0x6e, 0x57, 0x49, 0xec, 0x3b, 0x1c, 0x3e, 0x78, 0xee, 0x37, | ||||
| 	0xbf, 0xd3, 0x07, 0xe0, 0xc5, 0x99, 0x98, 0xd1, 0x73, 0x57, 0x79, 0xf2, 0xe8, 0xa8, 0x7f, 0xf8, | ||||
| 	0x6d, 0x96, 0xa7, 0x67, 0x1b, 0x1d, 0xf5, 0xec, 0x02, 0x77, 0xb4, 0xee, 0x3f, 0x18, 0x90, 0xe1, | ||||
| 	0xf4, 0x4c, 0x1b, 0xa9, 0xae, 0x3a, 0x20, 0x74, 0xec, 0x4a, 0x40, 0x86, 0xd0, 0x52, 0x69, 0x6a, | ||||
| 	0xc6, 0xa1, 0xb8, 0x2c, 0x16, 0x1c, 0x21, 0xc3, 0xfe, 0x60, 0xcb, 0x12, 0x6d, 0x37, 0xc8, 0xe7, | ||||
| 	0xbc, 0x69, 0xa9, 0x43, 0x81, 0x9d, 0xfa, 0x66, 0xd1, 0x43, 0x4f, 0x70, 0x45, 0x1b, 0x25, 0xb2, | ||||
| 	0xf1, 0x44, 0x9e, 0xdb, 0xff, 0x05, 0x8d, 0x75, 0x2f, 0xfa, 0x41, 0x12, 0xaa, 0x73, 0x17, 0xa8, | ||||
| 	0xaf, 0xe4, 0x39, 0xbf, 0x41, 0x02, 0x83, 0x82, 0x8f, 0x8b, 0x9a, 0x7d, 0x0e, 0x3b, 0x72, 0x01, | ||||
| 	0xb3, 0x8a, 0xe3, 0x29, 0xfe, 0xad, 0xc2, 0xd7, 0x61, 0x1c, 0x4e, 0x51, 0xd1, 0x35, 0x28, 0x8f, | ||||
| 	0xdf, 0x92, 0x65, 0xa9, 0xaf, 0x73, 0xc4, 0xd0, 0x02, 0x06, 0x3b, 0x17, 0xcf, 0x76, 0xaf, 0xfd, | ||||
| 	0x89, 0xdf, 0xbf, 0xcf, 0x76, 0x6b, 0x3f, 0x3e, 0xdf, 0xad, 0x5d, 0xe0, 0xf7, 0x07, 0x7e, 0x7f, | ||||
| 	0xe1, 0x77, 0xd2, 0x74, 0x7f, 0x2e, 0x3f, 0xf8, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x1f, 0x55, 0xec, | ||||
| 	0x86, 0xcc, 0x0a, 0x00, 0x00, | ||||
| 	0xe3, 0x6a, 0xb2, 0x3b, 0x35, 0x8b, 0xed, 0xdd, 0xd5, 0xcc, 0x24, 0x55, 0x6e, 0x88, 0x0f, 0xc0, | ||||
| 	0x47, 0xe0, 0xab, 0x70, 0x8d, 0x10, 0x07, 0x8e, 0x9c, 0x2a, 0xda, 0x1b, 0x27, 0xf8, 0x08, 0xbc, | ||||
| 	0xf9, 0xb3, 0xf6, 0x56, 0x5e, 0x87, 0x56, 0xaa, 0x72, 0x58, 0x69, 0xfe, 0xfc, 0x7e, 0xbf, 0x79, | ||||
| 	0xef, 0xcd, 0x7b, 0x6f, 0x07, 0xba, 0xd9, 0xc9, 0x0f, 0x3c, 0x52, 0xb2, 0x9f, 0x8b, 0x4c, 0x65, | ||||
| 	0x84, 0xc4, 0x59, 0x34, 0xe5, 0xa2, 0x2f, 0x1f, 0x33, 0x31, 0x9f, 0x26, 0xaa, 0x7f, 0xf6, 0xfe, | ||||
| 	0x76, 0x47, 0x9d, 0xe7, 0xdc, 0x01, 0xb6, 0x3b, 0x32, 0xe7, 0x51, 0x31, 0xb9, 0xa9, 0x92, 0x39, | ||||
| 	0x97, 0x8a, 0xcd, 0xf3, 0x3b, 0x8b, 0x91, 0xdb, 0xba, 0x3e, 0xc9, 0x26, 0x99, 0x19, 0xde, 0xd1, | ||||
| 	0x23, 0xbb, 0xda, 0xfb, 0xb5, 0x06, 0xde, 0x21, 0x57, 0x8c, 0x7c, 0x0a, 0xad, 0x33, 0x2e, 0x64, | ||||
| 	0x92, 0xa5, 0x41, 0xed, 0x56, 0xed, 0xdd, 0xce, 0xdd, 0x37, 0xfa, 0xab, 0x27, 0xf7, 0x8f, 0x2d, | ||||
| 	0x64, 0xe8, 0x5d, 0x3c, 0xd9, 0xbb, 0x46, 0x0b, 0x06, 0xf9, 0x0c, 0x20, 0x12, 0x9c, 0x29, 0x1e, | ||||
| 	0x87, 0x4c, 0x05, 0x75, 0xc3, 0x7f, 0xb3, 0x8a, 0xff, 0xb0, 0x30, 0x8a, 0xfa, 0x8e, 0x30, 0x50, | ||||
| 	0x9a, 0x7d, 0x9a, 0xc7, 0x05, 0xbb, 0xf1, 0x42, 0x6c, 0x47, 0x18, 0xa8, 0xde, 0xdf, 0x0d, 0xf0, | ||||
| 	0xbe, 0xc9, 0x62, 0x4e, 0x6e, 0x40, 0x3d, 0x89, 0x8d, 0xf1, 0xfe, 0xb0, 0xf9, 0xec, 0xc9, 0x5e, | ||||
| 	0x7d, 0xbc, 0x4f, 0x71, 0x85, 0xdc, 0x05, 0x6f, 0x8e, 0x1e, 0x3a, 0xb3, 0x82, 0x2a, 0x61, 0x1d, | ||||
| 	0x01, 0xe7, 0x93, 0xc1, 0x92, 0x8f, 0xc0, 0xd3, 0x61, 0x75, 0xc6, 0xec, 0x54, 0x71, 0xf4, 0x99, | ||||
| 	0x0f, 0x10, 0x53, 0xf0, 0x34, 0x9e, 0x1c, 0x40, 0x27, 0xe6, 0x32, 0x12, 0x49, 0xae, 0x74, 0x24, | ||||
| 	0x3d, 0x43, 0xbf, 0xbd, 0x8e, 0xbe, 0xbf, 0x84, 0xd2, 0x32, 0x0f, 0x23, 0xd2, 0x44, 0x3f, 0xd5, | ||||
| 	0xa9, 0x0c, 0x36, 0x8c, 0xc2, 0xee, 0x5a, 0x03, 0x0c, 0xca, 0x99, 0xe0, 0x38, 0xe4, 0x4b, 0xd8, | ||||
| 	0x9a, 0xb3, 0x94, 0x4d, 0xb8, 0x08, 0x9d, 0x4a, 0xd3, 0xa8, 0xbc, 0x55, 0xe9, 0xba, 0x45, 0x5a, | ||||
| 	0x21, 0xda, 0x9d, 0x97, 0xa7, 0xe8, 0x0e, 0x30, 0xa5, 0x58, 0xf4, 0xfd, 0x9c, 0xa7, 0x2a, 0x68, | ||||
| 	0x19, 0x95, 0xb7, 0x2b, 0x6d, 0xe1, 0xea, 0x71, 0x26, 0xa6, 0x83, 0x05, 0x98, 0x96, 0x88, 0xe4, | ||||
| 	0x0b, 0xe8, 0x44, 0x5c, 0xa8, 0xe4, 0x51, 0x12, 0xe1, 0xa5, 0x05, 0x6d, 0xa3, 0xb3, 0x57, 0xa5, | ||||
| 	0x33, 0x5a, 0xc2, 0x9c, 0x53, 0x65, 0x66, 0xef, 0xb7, 0x1a, 0xb4, 0x1e, 0x70, 0x71, 0x96, 0x44, | ||||
| 	0xaf, 0xf6, 0xba, 0x3f, 0x79, 0xee, 0xba, 0x2b, 0x2d, 0x73, 0xc7, 0xae, 0xdc, 0xf8, 0xc7, 0xd0, | ||||
| 	0xe6, 0x69, 0x9c, 0x67, 0x09, 0x06, 0xc8, 0x5b, 0x9f, 0x2d, 0x07, 0x0e, 0x43, 0x17, 0xe8, 0xde, | ||||
| 	0x2f, 0x75, 0x68, 0x17, 0xcb, 0xe4, 0x9e, 0xb3, 0xc0, 0xd6, 0xde, 0xad, 0xcb, 0x24, 0xb4, 0x09, | ||||
| 	0xee, 0xf0, 0x7b, 0xb0, 0x91, 0x67, 0x42, 0x49, 0x74, 0xb6, 0xb1, 0x2e, 0x4d, 0x8e, 0x10, 0x30, | ||||
| 	0xca, 0xd2, 0x47, 0xc9, 0x84, 0x5a, 0x30, 0xf9, 0x0e, 0x3a, 0x67, 0x89, 0x50, 0xa7, 0x6c, 0x16, | ||||
| 	0x26, 0xb9, 0x44, 0xa7, 0x35, 0xf7, 0x9d, 0xcb, 0x8e, 0xec, 0x1f, 0x5b, 0xfc, 0xf8, 0x68, 0xb8, | ||||
| 	0x85, 0xa1, 0x86, 0xc5, 0x54, 0x52, 0x70, 0x52, 0xe3, 0x5c, 0x6e, 0x1f, 0x82, 0xbf, 0xd8, 0x21, | ||||
| 	0xef, 0x01, 0xa4, 0x36, 0x2b, 0xc2, 0xc5, 0x3d, 0x75, 0x91, 0xec, 0xbb, 0x5c, 0xc1, 0xeb, 0xf2, | ||||
| 	0x1d, 0x60, 0x1c, 0x13, 0x02, 0x1e, 0x8b, 0x63, 0x61, 0x6e, 0xcd, 0xa7, 0x66, 0xdc, 0xfb, 0x7d, | ||||
| 	0x03, 0xbc, 0x87, 0x4c, 0x4e, 0xaf, 0xba, 0xb2, 0xf5, 0x99, 0x2b, 0xf7, 0x8c, 0xee, 0x48, 0x9b, | ||||
| 	0x02, 0xda, 0x1d, 0x6f, 0xe9, 0x8e, 0x4b, 0x0c, 0xed, 0x8e, 0x03, 0x58, 0x77, 0xe4, 0x2c, 0x53, | ||||
| 	0xa6, 0x7c, 0x3d, 0x6a, 0xc6, 0xe4, 0x36, 0xb4, 0x52, 0x2c, 0x59, 0x4d, 0x6f, 0x1a, 0x3a, 0x20, | ||||
| 	0xbd, 0xa9, 0xab, 0x18, 0xb9, 0x4d, 0xbd, 0x85, 0x44, 0x2c, 0x15, 0x96, 0xa6, 0x19, 0x96, 0x1f, | ||||
| 	0xf6, 0x01, 0xe9, 0x4a, 0xae, 0x32, 0x21, 0x07, 0x4b, 0x58, 0x51, 0x2a, 0x25, 0x26, 0x39, 0x86, | ||||
| 	0xd7, 0x0b, 0x7b, 0xcb, 0x82, 0xed, 0x97, 0x11, 0x24, 0x4e, 0xa1, 0xb4, 0x53, 0x6a, 0x4d, 0xfe, | ||||
| 	0xfa, 0xd6, 0x64, 0x22, 0x58, 0xd5, 0x9a, 0x86, 0xd0, 0xc5, 0x3e, 0x97, 0x08, 0x6c, 0xf5, 0x7a, | ||||
| 	0x85, 0x07, 0x80, 0x22, 0x5b, 0x6b, 0xba, 0xbd, 0x13, 0xe1, 0x74, 0xd3, 0x71, 0xcc, 0x8c, 0x0c, | ||||
| 	0xa0, 0xed, 0xf2, 0x46, 0x06, 0x1d, 0x93, 0xbb, 0x2f, 0xd8, 0x92, 0x16, 0xb4, 0xe7, 0x8a, 0x76, | ||||
| 	0xf3, 0x65, 0x8a, 0x16, 0x3b, 0x05, 0xcc, 0xb2, 0x49, 0x18, 0x8b, 0x04, 0xff, 0x7d, 0x41, 0xd7, | ||||
| 	0x70, 0xb7, 0xab, 0xb8, 0xfb, 0x06, 0x41, 0x7d, 0x44, 0xdb, 0x61, 0xef, 0xa7, 0x1a, 0xbc, 0xb6, | ||||
| 	0x62, 0x14, 0xf9, 0x10, 0xb3, 0xc2, 0x2e, 0x5e, 0xf6, 0xdf, 0x75, 0x3c, 0x5a, 0x60, 0xc9, 0x0e, | ||||
| 	0xf8, 0xba, 0x46, 0xb8, 0x94, 0xdc, 0x56, 0xbf, 0x4f, 0x97, 0x0b, 0x24, 0x80, 0x16, 0x9b, 0x25, | ||||
| 	0x4c, 0xef, 0x35, 0xcc, 0x5e, 0x31, 0xed, 0xfd, 0x5c, 0x87, 0x96, 0x13, 0xbb, 0xea, 0x0e, 0xea, | ||||
| 	0x8e, 0x5d, 0xa9, 0xac, 0xfb, 0xb0, 0x69, 0xc3, 0xe9, 0x52, 0xc2, 0xfb, 0xdf, 0xa0, 0x76, 0x2c, | ||||
| 	0xde, 0xa6, 0xc3, 0x7d, 0xf0, 0x92, 0x9c, 0xcd, 0xdd, 0x9f, 0xb2, 0xf2, 0xe4, 0xf1, 0xd1, 0xe0, | ||||
| 	0xf0, 0xdb, 0xdc, 0x66, 0x76, 0x1b, 0x1d, 0xf5, 0xf4, 0x02, 0x35, 0xb4, 0xde, 0x3f, 0x18, 0x90, | ||||
| 	0xd1, 0xec, 0x54, 0x2a, 0x2e, 0xae, 0x3a, 0x20, 0xee, 0xd8, 0x95, 0x80, 0x8c, 0xa0, 0x25, 0xb2, | ||||
| 	0x4c, 0x85, 0x11, 0xbb, 0x2c, 0x16, 0x14, 0x21, 0xa3, 0xc1, 0x70, 0x4b, 0x13, 0x75, 0x23, 0xb1, | ||||
| 	0x73, 0xda, 0xd4, 0xd4, 0x11, 0xc3, 0x26, 0x7f, 0xa3, 0x68, 0xbf, 0x27, 0xb8, 0x22, 0x95, 0x60, | ||||
| 	0x79, 0x38, 0xe5, 0xe7, 0xfa, 0x49, 0xd1, 0x58, 0xf7, 0x18, 0x38, 0x48, 0x23, 0x71, 0x6e, 0x02, | ||||
| 	0xf5, 0x15, 0x3f, 0xa7, 0xd7, 0x9d, 0xc0, 0xb0, 0xe0, 0xe3, 0xa2, 0x24, 0x9f, 0xc3, 0x0e, 0x5f, | ||||
| 	0xc0, 0xb4, 0x62, 0x38, 0xc3, 0x17, 0x19, 0xfe, 0x58, 0xc2, 0x68, 0x86, 0x8a, 0xa6, 0xb7, 0x79, | ||||
| 	0xf4, 0x26, 0x2f, 0x4b, 0x7d, 0x6d, 0x11, 0x23, 0x0d, 0x18, 0xee, 0x5c, 0x3c, 0xdd, 0xbd, 0xf6, | ||||
| 	0x27, 0x7e, 0xff, 0x3e, 0xdd, 0xad, 0xfd, 0xf8, 0x6c, 0xb7, 0x76, 0x81, 0xdf, 0x1f, 0xf8, 0xfd, | ||||
| 	0x85, 0xdf, 0x49, 0xd3, 0xbc, 0x4b, 0x3f, 0xf8, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xb9, 0x27, 0xf6, | ||||
| 	0x9e, 0x07, 0x0b, 0x00, 0x00, | ||||
| } | ||||
|  |  | |||
|  | @ -155,6 +155,16 @@ message Task { | |||
| 	// A copy of runtime state of service endpoint from Service | ||||
| 	// object to be distributed to agents as part of the task. | ||||
| 	Endpoint endpoint = 12; | ||||
| 
 | ||||
| 	// LogDriver specifies the selected log driver to use for the task. Agent | ||||
| 	// processes should always favor the value in this field. | ||||
| 	// | ||||
| 	// If present in the TaskSpec, this will be a copy of that value. The | ||||
| 	// orchestrator may choose to insert a value here, which should be honored, | ||||
| 	// such a cluster default or policy-based value. | ||||
| 	// | ||||
| 	// If not present, the daemon's default will be used. | ||||
| 	Driver log_driver = 13; | ||||
| } | ||||
| 
 | ||||
| // NetworkAttachment specifies the network parameters of attachment to | ||||
|  |  | |||
|  | @ -308,6 +308,9 @@ type TaskSpec struct { | |||
| 	Restart *RestartPolicy `protobuf:"bytes,4,opt,name=restart" json:"restart,omitempty"` | ||||
| 	// Placement specifies node selection constraints
 | ||||
| 	Placement *Placement `protobuf:"bytes,5,opt,name=placement" json:"placement,omitempty"` | ||||
| 	// LogDriver specifies the log driver to use for the task. Any runtime will
 | ||||
| 	// direct logs into the specified driver for the duration of the task.
 | ||||
| 	LogDriver *Driver `protobuf:"bytes,6,opt,name=log_driver,json=logDriver" json:"log_driver,omitempty"` | ||||
| } | ||||
| 
 | ||||
| func (m *TaskSpec) Reset()                    { *m = TaskSpec{} } | ||||
|  | @ -500,6 +503,12 @@ type ClusterSpec struct { | |||
| 	Dispatcher DispatcherConfig `protobuf:"bytes,5,opt,name=dispatcher" json:"dispatcher"` | ||||
| 	// CAConfig defines cluster-level certificate authority settings.
 | ||||
| 	CAConfig CAConfig `protobuf:"bytes,6,opt,name=ca_config,json=caConfig" json:"ca_config"` | ||||
| 	// DefaultLogDriver specifies the log driver to use for the cluster if not
 | ||||
| 	// specified for each task.
 | ||||
| 	//
 | ||||
| 	// If this is changed, only new tasks will pick up the new log driver.
 | ||||
| 	// Existing tasks will continue to use the previous default until rescheduled.
 | ||||
| 	DefaultLogDriver *Driver `protobuf:"bytes,7,opt,name=default_log_driver,json=defaultLogDriver" json:"default_log_driver,omitempty"` | ||||
| } | ||||
| 
 | ||||
| func (m *ClusterSpec) Reset()                    { *m = ClusterSpec{} } | ||||
|  | @ -625,6 +634,7 @@ func (m *TaskSpec) Copy() *TaskSpec { | |||
| 		Resources: m.Resources.Copy(), | ||||
| 		Restart:   m.Restart.Copy(), | ||||
| 		Placement: m.Placement.Copy(), | ||||
| 		LogDriver: m.LogDriver.Copy(), | ||||
| 	} | ||||
| 
 | ||||
| 	switch m.Runtime.(type) { | ||||
|  | @ -749,6 +759,7 @@ func (m *ClusterSpec) Copy() *ClusterSpec { | |||
| 		Raft:             *m.Raft.Copy(), | ||||
| 		Dispatcher:       *m.Dispatcher.Copy(), | ||||
| 		CAConfig:         *m.CAConfig.Copy(), | ||||
| 		DefaultLogDriver: m.DefaultLogDriver.Copy(), | ||||
| 	} | ||||
| 
 | ||||
| 	return o | ||||
|  | @ -840,7 +851,7 @@ func (this *TaskSpec) GoString() string { | |||
| 	if this == nil { | ||||
| 		return "nil" | ||||
| 	} | ||||
| 	s := make([]string, 0, 8) | ||||
| 	s := make([]string, 0, 9) | ||||
| 	s = append(s, "&api.TaskSpec{") | ||||
| 	if this.Runtime != nil { | ||||
| 		s = append(s, "Runtime: "+fmt.Sprintf("%#v", this.Runtime)+",\n") | ||||
|  | @ -854,6 +865,9 @@ func (this *TaskSpec) GoString() string { | |||
| 	if this.Placement != nil { | ||||
| 		s = append(s, "Placement: "+fmt.Sprintf("%#v", this.Placement)+",\n") | ||||
| 	} | ||||
| 	if this.LogDriver != nil { | ||||
| 		s = append(s, "LogDriver: "+fmt.Sprintf("%#v", this.LogDriver)+",\n") | ||||
| 	} | ||||
| 	s = append(s, "}") | ||||
| 	return strings.Join(s, "") | ||||
| } | ||||
|  | @ -947,7 +961,7 @@ func (this *ClusterSpec) GoString() string { | |||
| 	if this == nil { | ||||
| 		return "nil" | ||||
| 	} | ||||
| 	s := make([]string, 0, 10) | ||||
| 	s := make([]string, 0, 11) | ||||
| 	s = append(s, "&api.ClusterSpec{") | ||||
| 	s = append(s, "Annotations: "+strings.Replace(this.Annotations.GoString(), `&`, ``, 1)+",\n") | ||||
| 	s = append(s, "AcceptancePolicy: "+strings.Replace(this.AcceptancePolicy.GoString(), `&`, ``, 1)+",\n") | ||||
|  | @ -955,6 +969,9 @@ func (this *ClusterSpec) GoString() string { | |||
| 	s = append(s, "Raft: "+strings.Replace(this.Raft.GoString(), `&`, ``, 1)+",\n") | ||||
| 	s = append(s, "Dispatcher: "+strings.Replace(this.Dispatcher.GoString(), `&`, ``, 1)+",\n") | ||||
| 	s = append(s, "CAConfig: "+strings.Replace(this.CAConfig.GoString(), `&`, ``, 1)+",\n") | ||||
| 	if this.DefaultLogDriver != nil { | ||||
| 		s = append(s, "DefaultLogDriver: "+fmt.Sprintf("%#v", this.DefaultLogDriver)+",\n") | ||||
| 	} | ||||
| 	s = append(s, "}") | ||||
| 	return strings.Join(s, "") | ||||
| } | ||||
|  | @ -1257,6 +1274,16 @@ func (m *TaskSpec) MarshalTo(data []byte) (int, error) { | |||
| 		} | ||||
| 		i += n12 | ||||
| 	} | ||||
| 	if m.LogDriver != nil { | ||||
| 		data[i] = 0x32 | ||||
| 		i++ | ||||
| 		i = encodeVarintSpecs(data, i, uint64(m.LogDriver.Size())) | ||||
| 		n13, err := m.LogDriver.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n13 | ||||
| 	} | ||||
| 	return i, nil | ||||
| } | ||||
| 
 | ||||
|  | @ -1266,11 +1293,11 @@ func (m *TaskSpec_Container) MarshalTo(data []byte) (int, error) { | |||
| 		data[i] = 0xa | ||||
| 		i++ | ||||
| 		i = encodeVarintSpecs(data, i, uint64(m.Container.Size())) | ||||
| 		n13, err := m.Container.MarshalTo(data[i:]) | ||||
| 		n14, err := m.Container.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n13 | ||||
| 		i += n14 | ||||
| 	} | ||||
| 	return i, nil | ||||
| } | ||||
|  | @ -1385,21 +1412,21 @@ func (m *ContainerSpec) MarshalTo(data []byte) (int, error) { | |||
| 		data[i] = 0x4a | ||||
| 		i++ | ||||
| 		i = encodeVarintSpecs(data, i, uint64(m.StopGracePeriod.Size())) | ||||
| 		n14, err := m.StopGracePeriod.MarshalTo(data[i:]) | ||||
| 		n15, err := m.StopGracePeriod.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n14 | ||||
| 		i += n15 | ||||
| 	} | ||||
| 	if m.PullOptions != nil { | ||||
| 		data[i] = 0x52 | ||||
| 		i++ | ||||
| 		i = encodeVarintSpecs(data, i, uint64(m.PullOptions.Size())) | ||||
| 		n15, err := m.PullOptions.MarshalTo(data[i:]) | ||||
| 		n16, err := m.PullOptions.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n15 | ||||
| 		i += n16 | ||||
| 	} | ||||
| 	return i, nil | ||||
| } | ||||
|  | @ -1483,20 +1510,20 @@ func (m *NetworkSpec) MarshalTo(data []byte) (int, error) { | |||
| 	data[i] = 0xa | ||||
| 	i++ | ||||
| 	i = encodeVarintSpecs(data, i, uint64(m.Annotations.Size())) | ||||
| 	n16, err := m.Annotations.MarshalTo(data[i:]) | ||||
| 	n17, err := m.Annotations.MarshalTo(data[i:]) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	i += n16 | ||||
| 	i += n17 | ||||
| 	if m.DriverConfig != nil { | ||||
| 		data[i] = 0x12 | ||||
| 		i++ | ||||
| 		i = encodeVarintSpecs(data, i, uint64(m.DriverConfig.Size())) | ||||
| 		n17, err := m.DriverConfig.MarshalTo(data[i:]) | ||||
| 		n18, err := m.DriverConfig.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n17 | ||||
| 		i += n18 | ||||
| 	} | ||||
| 	if m.Ipv6Enabled { | ||||
| 		data[i] = 0x18 | ||||
|  | @ -1522,11 +1549,11 @@ func (m *NetworkSpec) MarshalTo(data []byte) (int, error) { | |||
| 		data[i] = 0x2a | ||||
| 		i++ | ||||
| 		i = encodeVarintSpecs(data, i, uint64(m.IPAM.Size())) | ||||
| 		n18, err := m.IPAM.MarshalTo(data[i:]) | ||||
| 		n19, err := m.IPAM.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n18 | ||||
| 		i += n19 | ||||
| 	} | ||||
| 	return i, nil | ||||
| } | ||||
|  | @ -1549,51 +1576,61 @@ func (m *ClusterSpec) MarshalTo(data []byte) (int, error) { | |||
| 	data[i] = 0xa | ||||
| 	i++ | ||||
| 	i = encodeVarintSpecs(data, i, uint64(m.Annotations.Size())) | ||||
| 	n19, err := m.Annotations.MarshalTo(data[i:]) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	i += n19 | ||||
| 	data[i] = 0x12 | ||||
| 	i++ | ||||
| 	i = encodeVarintSpecs(data, i, uint64(m.AcceptancePolicy.Size())) | ||||
| 	n20, err := m.AcceptancePolicy.MarshalTo(data[i:]) | ||||
| 	n20, err := m.Annotations.MarshalTo(data[i:]) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	i += n20 | ||||
| 	data[i] = 0x1a | ||||
| 	data[i] = 0x12 | ||||
| 	i++ | ||||
| 	i = encodeVarintSpecs(data, i, uint64(m.Orchestration.Size())) | ||||
| 	n21, err := m.Orchestration.MarshalTo(data[i:]) | ||||
| 	i = encodeVarintSpecs(data, i, uint64(m.AcceptancePolicy.Size())) | ||||
| 	n21, err := m.AcceptancePolicy.MarshalTo(data[i:]) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	i += n21 | ||||
| 	data[i] = 0x22 | ||||
| 	data[i] = 0x1a | ||||
| 	i++ | ||||
| 	i = encodeVarintSpecs(data, i, uint64(m.Raft.Size())) | ||||
| 	n22, err := m.Raft.MarshalTo(data[i:]) | ||||
| 	i = encodeVarintSpecs(data, i, uint64(m.Orchestration.Size())) | ||||
| 	n22, err := m.Orchestration.MarshalTo(data[i:]) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	i += n22 | ||||
| 	data[i] = 0x2a | ||||
| 	data[i] = 0x22 | ||||
| 	i++ | ||||
| 	i = encodeVarintSpecs(data, i, uint64(m.Dispatcher.Size())) | ||||
| 	n23, err := m.Dispatcher.MarshalTo(data[i:]) | ||||
| 	i = encodeVarintSpecs(data, i, uint64(m.Raft.Size())) | ||||
| 	n23, err := m.Raft.MarshalTo(data[i:]) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	i += n23 | ||||
| 	data[i] = 0x32 | ||||
| 	data[i] = 0x2a | ||||
| 	i++ | ||||
| 	i = encodeVarintSpecs(data, i, uint64(m.CAConfig.Size())) | ||||
| 	n24, err := m.CAConfig.MarshalTo(data[i:]) | ||||
| 	i = encodeVarintSpecs(data, i, uint64(m.Dispatcher.Size())) | ||||
| 	n24, err := m.Dispatcher.MarshalTo(data[i:]) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	i += n24 | ||||
| 	data[i] = 0x32 | ||||
| 	i++ | ||||
| 	i = encodeVarintSpecs(data, i, uint64(m.CAConfig.Size())) | ||||
| 	n25, err := m.CAConfig.MarshalTo(data[i:]) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	i += n25 | ||||
| 	if m.DefaultLogDriver != nil { | ||||
| 		data[i] = 0x3a | ||||
| 		i++ | ||||
| 		i = encodeVarintSpecs(data, i, uint64(m.DefaultLogDriver.Size())) | ||||
| 		n26, err := m.DefaultLogDriver.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n26 | ||||
| 	} | ||||
| 	return i, nil | ||||
| } | ||||
| 
 | ||||
|  | @ -1736,6 +1773,10 @@ func (m *TaskSpec) Size() (n int) { | |||
| 		l = m.Placement.Size() | ||||
| 		n += 1 + l + sovSpecs(uint64(l)) | ||||
| 	} | ||||
| 	if m.LogDriver != nil { | ||||
| 		l = m.LogDriver.Size() | ||||
| 		n += 1 + l + sovSpecs(uint64(l)) | ||||
| 	} | ||||
| 	return n | ||||
| } | ||||
| 
 | ||||
|  | @ -1868,6 +1909,10 @@ func (m *ClusterSpec) Size() (n int) { | |||
| 	n += 1 + l + sovSpecs(uint64(l)) | ||||
| 	l = m.CAConfig.Size() | ||||
| 	n += 1 + l + sovSpecs(uint64(l)) | ||||
| 	if m.DefaultLogDriver != nil { | ||||
| 		l = m.DefaultLogDriver.Size() | ||||
| 		n += 1 + l + sovSpecs(uint64(l)) | ||||
| 	} | ||||
| 	return n | ||||
| } | ||||
| 
 | ||||
|  | @ -1971,6 +2016,7 @@ func (this *TaskSpec) String() string { | |||
| 		`Resources:` + strings.Replace(fmt.Sprintf("%v", this.Resources), "ResourceRequirements", "ResourceRequirements", 1) + `,`, | ||||
| 		`Restart:` + strings.Replace(fmt.Sprintf("%v", this.Restart), "RestartPolicy", "RestartPolicy", 1) + `,`, | ||||
| 		`Placement:` + strings.Replace(fmt.Sprintf("%v", this.Placement), "Placement", "Placement", 1) + `,`, | ||||
| 		`LogDriver:` + strings.Replace(fmt.Sprintf("%v", this.LogDriver), "Driver", "Driver", 1) + `,`, | ||||
| 		`}`, | ||||
| 	}, "") | ||||
| 	return s | ||||
|  | @ -2060,6 +2106,7 @@ func (this *ClusterSpec) String() string { | |||
| 		`Raft:` + strings.Replace(strings.Replace(this.Raft.String(), "RaftConfig", "RaftConfig", 1), `&`, ``, 1) + `,`, | ||||
| 		`Dispatcher:` + strings.Replace(strings.Replace(this.Dispatcher.String(), "DispatcherConfig", "DispatcherConfig", 1), `&`, ``, 1) + `,`, | ||||
| 		`CAConfig:` + strings.Replace(strings.Replace(this.CAConfig.String(), "CAConfig", "CAConfig", 1), `&`, ``, 1) + `,`, | ||||
| 		`DefaultLogDriver:` + strings.Replace(fmt.Sprintf("%v", this.DefaultLogDriver), "Driver", "Driver", 1) + `,`, | ||||
| 		`}`, | ||||
| 	}, "") | ||||
| 	return s | ||||
|  | @ -2867,6 +2914,39 @@ func (m *TaskSpec) Unmarshal(data []byte) error { | |||
| 				return err | ||||
| 			} | ||||
| 			iNdEx = postIndex | ||||
| 		case 6: | ||||
| 			if wireType != 2 { | ||||
| 				return fmt.Errorf("proto: wrong wireType = %d for field LogDriver", wireType) | ||||
| 			} | ||||
| 			var msglen int | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return ErrIntOverflowSpecs | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				b := data[iNdEx] | ||||
| 				iNdEx++ | ||||
| 				msglen |= (int(b) & 0x7F) << shift | ||||
| 				if b < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 			if msglen < 0 { | ||||
| 				return ErrInvalidLengthSpecs | ||||
| 			} | ||||
| 			postIndex := iNdEx + msglen | ||||
| 			if postIndex > l { | ||||
| 				return io.ErrUnexpectedEOF | ||||
| 			} | ||||
| 			if m.LogDriver == nil { | ||||
| 				m.LogDriver = &Driver{} | ||||
| 			} | ||||
| 			if err := m.LogDriver.Unmarshal(data[iNdEx:postIndex]); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			iNdEx = postIndex | ||||
| 		default: | ||||
| 			iNdEx = preIndex | ||||
| 			skippy, err := skipSpecs(data[iNdEx:]) | ||||
|  | @ -3894,6 +3974,39 @@ func (m *ClusterSpec) Unmarshal(data []byte) error { | |||
| 				return err | ||||
| 			} | ||||
| 			iNdEx = postIndex | ||||
| 		case 7: | ||||
| 			if wireType != 2 { | ||||
| 				return fmt.Errorf("proto: wrong wireType = %d for field DefaultLogDriver", wireType) | ||||
| 			} | ||||
| 			var msglen int | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return ErrIntOverflowSpecs | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				b := data[iNdEx] | ||||
| 				iNdEx++ | ||||
| 				msglen |= (int(b) & 0x7F) << shift | ||||
| 				if b < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 			if msglen < 0 { | ||||
| 				return ErrInvalidLengthSpecs | ||||
| 			} | ||||
| 			postIndex := iNdEx + msglen | ||||
| 			if postIndex > l { | ||||
| 				return io.ErrUnexpectedEOF | ||||
| 			} | ||||
| 			if m.DefaultLogDriver == nil { | ||||
| 				m.DefaultLogDriver = &Driver{} | ||||
| 			} | ||||
| 			if err := m.DefaultLogDriver.Unmarshal(data[iNdEx:postIndex]); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			iNdEx = postIndex | ||||
| 		default: | ||||
| 			iNdEx = preIndex | ||||
| 			skippy, err := skipSpecs(data[iNdEx:]) | ||||
|  | @ -4021,85 +4134,88 @@ var ( | |||
| ) | ||||
| 
 | ||||
| var fileDescriptorSpecs = []byte{ | ||||
| 	// 1279 bytes of a gzipped FileDescriptorProto
 | ||||
| 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x56, 0xcf, 0x72, 0x1b, 0xc5, | ||||
| 	0x13, 0xb6, 0xec, 0xb5, 0x2c, 0xf7, 0xda, 0x89, 0x33, 0x95, 0x5f, 0xa2, 0x28, 0xf9, 0xd9, 0x8e, | ||||
| 	0x08, 0x10, 0xa8, 0x42, 0x06, 0x41, 0x25, 0xe1, 0x5f, 0xc1, 0x5a, 0x16, 0x8e, 0x09, 0x76, 0xb6, | ||||
| 	0xc6, 0x49, 0x38, 0xba, 0x46, 0xab, 0x89, 0xbc, 0xe5, 0xd5, 0xce, 0x32, 0x3b, 0x52, 0xca, 0x37, | ||||
| 	0x8e, 0x29, 0x0e, 0xdc, 0xe0, 0x40, 0x15, 0x27, 0xde, 0x81, 0x67, 0xc8, 0x91, 0x1b, 0x9c, 0x52, | ||||
| 	0x24, 0x4f, 0x40, 0x15, 0x2f, 0x40, 0xcf, 0xec, 0x48, 0x5a, 0x91, 0x75, 0xc2, 0xc1, 0x87, 0xad, | ||||
| 	0x9a, 0x3f, 0xdf, 0xf7, 0xf5, 0x4c, 0x77, 0x4f, 0xf7, 0x82, 0x9b, 0x26, 0x3c, 0x48, 0x1b, 0x89, | ||||
| 	0x14, 0x4a, 0x10, 0xd2, 0x15, 0xc1, 0x11, 0x97, 0x8d, 0xf4, 0x11, 0x93, 0xfd, 0xa3, 0x50, 0x35, | ||||
| 	0x86, 0xef, 0xd5, 0x5c, 0x75, 0x9c, 0x70, 0x0b, 0xa8, 0x9d, 0xef, 0x89, 0x9e, 0x30, 0xc3, 0x0d, | ||||
| 	0x3d, 0xb2, 0xab, 0x17, 0xbb, 0x03, 0xc9, 0x54, 0x28, 0xe2, 0x8d, 0xd1, 0x20, 0xdb, 0xa8, 0x7f, | ||||
| 	0xef, 0x40, 0x65, 0x4f, 0x74, 0xf9, 0x3e, 0xda, 0x20, 0xdb, 0xe0, 0xb2, 0x38, 0x16, 0xca, 0x00, | ||||
| 	0xd2, 0x6a, 0x69, 0xbd, 0x74, 0xdd, 0x6d, 0xae, 0x35, 0x5e, 0x34, 0xd9, 0xf0, 0x26, 0xb0, 0x4d, | ||||
| 	0xe7, 0xc9, 0xd3, 0xb5, 0x19, 0x9a, 0x67, 0x92, 0x77, 0xc1, 0x91, 0x22, 0xe2, 0xd5, 0x59, 0x54, | ||||
| 	0x38, 0xd3, 0xbc, 0x52, 0xa4, 0xa0, 0x8d, 0x52, 0xc4, 0x50, 0x83, 0x44, 0xd3, 0xd0, 0xe7, 0xfd, | ||||
| 	0x0e, 0x97, 0xe9, 0x61, 0x98, 0x54, 0xe7, 0x0c, 0xef, 0xcd, 0x93, 0x78, 0xfa, 0xb0, 0x8d, 0xdd, | ||||
| 	0x31, 0x9c, 0xe6, 0xa8, 0x64, 0x17, 0x96, 0xd8, 0x90, 0x85, 0x11, 0xeb, 0x84, 0x51, 0xa8, 0x8e, | ||||
| 	0xab, 0x8e, 0x91, 0x7a, 0xeb, 0xa5, 0x52, 0x5e, 0x8e, 0x40, 0xa7, 0xe8, 0xf5, 0x2e, 0xc0, 0xc4, | ||||
| 	0x10, 0x79, 0x03, 0x16, 0xfc, 0xf6, 0xde, 0xd6, 0xce, 0xde, 0xf6, 0xca, 0x4c, 0xed, 0xd2, 0x77, | ||||
| 	0x3f, 0xaf, 0xff, 0x4f, 0x6b, 0x4c, 0x00, 0x3e, 0x8f, 0xbb, 0x61, 0xdc, 0x23, 0xd7, 0xa1, 0xe2, | ||||
| 	0xb5, 0x5a, 0x6d, 0xff, 0x5e, 0x7b, 0x6b, 0xa5, 0x54, 0xab, 0x21, 0xf0, 0xc2, 0x34, 0xd0, 0x0b, | ||||
| 	0x02, 0x9e, 0x28, 0xde, 0xad, 0x39, 0x8f, 0x7f, 0x59, 0x9d, 0xa9, 0x3f, 0x2e, 0xc1, 0x52, 0xfe, | ||||
| 	0x10, 0x68, 0xa8, 0xec, 0xb5, 0xee, 0xed, 0x3c, 0x68, 0xa3, 0x9d, 0x31, 0x3d, 0x8f, 0xf0, 0x02, | ||||
| 	0x15, 0x0e, 0x39, 0xb9, 0x06, 0xf3, 0xbe, 0x77, 0x7f, 0xbf, 0x8d, 0x56, 0xc6, 0xc7, 0xc9, 0xc3, | ||||
| 	0x7c, 0x36, 0x48, 0x0d, 0x6a, 0x8b, 0x7a, 0x3b, 0x7b, 0x2b, 0xb3, 0xc5, 0xa8, 0x2d, 0xc9, 0xc2, | ||||
| 	0xd8, 0x1e, 0xe5, 0x57, 0x07, 0xdc, 0x7d, 0x2e, 0x87, 0x61, 0x70, 0xca, 0x39, 0x71, 0x03, 0x1c, | ||||
| 	0xc5, 0xd2, 0x23, 0x93, 0x13, 0x6e, 0x71, 0x4e, 0xdc, 0xc3, 0x7d, 0x6d, 0xd4, 0xd2, 0x0d, 0x5e, | ||||
| 	0x67, 0x86, 0xe4, 0x49, 0x14, 0x06, 0x0c, 0xfd, 0x65, 0x32, 0xc3, 0x6d, 0xbe, 0x5e, 0xc4, 0xa6, | ||||
| 	0x63, 0x94, 0x3d, 0xff, 0xed, 0x19, 0x9a, 0xa3, 0x92, 0x8f, 0xa1, 0xdc, 0x8b, 0x44, 0x87, 0x45, | ||||
| 	0x26, 0x27, 0xdc, 0xe6, 0xd5, 0x22, 0x91, 0x6d, 0x83, 0x98, 0x08, 0x58, 0x0a, 0xb9, 0x05, 0xe5, | ||||
| 	0x41, 0xd2, 0x45, 0x9d, 0x6a, 0xd9, 0x90, 0xd7, 0x8b, 0xc8, 0xf7, 0x0d, 0xa2, 0x25, 0xe2, 0x87, | ||||
| 	0x61, 0x8f, 0x5a, 0x3c, 0xd9, 0x87, 0x4a, 0xcc, 0xd5, 0x23, 0x21, 0x8f, 0xd2, 0xea, 0xc2, 0xfa, | ||||
| 	0x1c, 0x72, 0x6f, 0x16, 0x71, 0x73, 0x3e, 0x6f, 0xec, 0x65, 0x78, 0x4f, 0x29, 0x16, 0x1c, 0xf6, | ||||
| 	0x79, 0xac, 0xac, 0xe4, 0x58, 0x88, 0x7c, 0x02, 0x15, 0x4c, 0xb5, 0x44, 0x84, 0xb1, 0xaa, 0x56, | ||||
| 	0x4e, 0x3e, 0x50, 0xdb, 0x62, 0xb4, 0x2a, 0x1d, 0x33, 0x6a, 0x77, 0xe0, 0xe2, 0x09, 0x26, 0xc8, | ||||
| 	0x05, 0x28, 0x2b, 0x26, 0x7b, 0x5c, 0x99, 0x48, 0x2f, 0x52, 0x3b, 0x23, 0x55, 0x58, 0x60, 0x51, | ||||
| 	0xc8, 0x52, 0x9e, 0x62, 0x00, 0xe7, 0x70, 0x63, 0x34, 0xdd, 0x2c, 0x83, 0xd3, 0xc7, 0x7c, 0xaa, | ||||
| 	0x6f, 0xc0, 0xb9, 0x17, 0x22, 0x40, 0x6a, 0x50, 0xb1, 0x11, 0xc8, 0x52, 0xc7, 0xa1, 0xe3, 0x79, | ||||
| 	0xfd, 0x2c, 0x2c, 0x4f, 0x79, 0xbb, 0xfe, 0xd3, 0x2c, 0x54, 0x46, 0x29, 0x40, 0x3c, 0x58, 0x0c, | ||||
| 	0x44, 0xac, 0x30, 0x31, 0xb9, 0xb4, 0x59, 0x57, 0x18, 0xb0, 0xd6, 0x08, 0xa4, 0x59, 0x18, 0xb0, | ||||
| 	0x09, 0x8b, 0x7c, 0x01, 0x8b, 0x92, 0xa7, 0x62, 0x20, 0x03, 0x73, 0x6a, 0x2d, 0x71, 0xbd, 0x38, | ||||
| 	0x71, 0x32, 0x10, 0xe5, 0xdf, 0x0c, 0x42, 0xc9, 0xb5, 0x37, 0x52, 0x3a, 0xa1, 0x62, 0xe2, 0x2c, | ||||
| 	0xe0, 0x04, 0x1d, 0xa1, 0x5e, 0x96, 0x39, 0x34, 0x83, 0xf8, 0x02, 0x6f, 0x77, 0x4c, 0x47, 0x0c, | ||||
| 	0x24, 0x2f, 0x26, 0x11, 0x0b, 0x8c, 0x6a, 0x75, 0xde, 0xd0, 0xff, 0x5f, 0x44, 0xf7, 0x47, 0x20, | ||||
| 	0x3a, 0xc1, 0x6f, 0x2e, 0xa2, 0xe5, 0x41, 0xac, 0xc2, 0x3e, 0xaf, 0xff, 0xe8, 0xc0, 0xf2, 0xd4, | ||||
| 	0x5d, 0xc9, 0x79, 0x98, 0x0f, 0xfb, 0xac, 0xc7, 0x6d, 0xa4, 0xb2, 0x09, 0x69, 0x43, 0x19, 0x9f, | ||||
| 	0x35, 0x8f, 0xb2, 0x38, 0xb9, 0xcd, 0x77, 0x5e, 0xe9, 0xb4, 0xc6, 0x57, 0x06, 0xdf, 0x8e, 0x95, | ||||
| 	0x3c, 0xa6, 0x96, 0xac, 0xe3, 0x1d, 0x88, 0x7e, 0x9f, 0xc5, 0xfa, 0xc9, 0x99, 0x78, 0xdb, 0x29, | ||||
| 	0x21, 0xe0, 0x60, 0x4a, 0xa4, 0xe8, 0x0a, 0xbd, 0x6c, 0xc6, 0x64, 0x05, 0xe6, 0x78, 0x3c, 0xc4, | ||||
| 	0xeb, 0xe9, 0x25, 0x3d, 0xd4, 0x2b, 0xdd, 0x50, 0x9a, 0xc7, 0x82, 0x2b, 0x38, 0xd4, 0x3c, 0xac, | ||||
| 	0x45, 0x12, 0xdf, 0x80, 0x5e, 0x32, 0x63, 0x72, 0x13, 0xca, 0x7d, 0x81, 0x17, 0x4c, 0x31, 0x89, | ||||
| 	0xf5, 0x61, 0x2f, 0x15, 0x1d, 0x76, 0x57, 0x23, 0x6c, 0x49, 0xb0, 0x70, 0x72, 0x1b, 0xce, 0xa5, | ||||
| 	0x4a, 0x24, 0x07, 0x3d, 0x89, 0xae, 0x3a, 0x48, 0xb8, 0x0c, 0x45, 0xb7, 0xba, 0x78, 0x72, 0x65, | ||||
| 	0xd9, 0xb2, 0x5d, 0x8f, 0x9e, 0xd5, 0xb4, 0x6d, 0xcd, 0xf2, 0x0d, 0x89, 0xf8, 0xb0, 0x94, 0x0c, | ||||
| 	0xa2, 0xe8, 0x40, 0x24, 0x59, 0x81, 0x03, 0x23, 0xf2, 0x1f, 0xbc, 0xe6, 0x23, 0xeb, 0x6e, 0x46, | ||||
| 	0xa2, 0x6e, 0x32, 0x99, 0xd4, 0x3e, 0x04, 0x37, 0xe7, 0x51, 0xed, 0x89, 0x23, 0x7e, 0x6c, 0x83, | ||||
| 	0xa4, 0x87, 0x3a, 0x70, 0x43, 0x16, 0x0d, 0xb2, 0xf6, 0x88, 0x81, 0x33, 0x93, 0x8f, 0x66, 0x6f, | ||||
| 	0x95, 0x6a, 0x4d, 0x70, 0x73, 0xb2, 0xe4, 0x35, 0x58, 0x96, 0xbc, 0x17, 0xa6, 0x28, 0x73, 0xc0, | ||||
| 	0x06, 0xea, 0xb0, 0xfa, 0xb9, 0x21, 0x2c, 0x8d, 0x16, 0x3d, 0x5c, 0xab, 0xff, 0x8d, 0xbd, 0x23, | ||||
| 	0xff, 0xce, 0x49, 0x2b, 0x7b, 0x90, 0xc6, 0xe2, 0x99, 0xe6, 0xc6, 0xab, 0xea, 0x82, 0x49, 0xff, | ||||
| 	0x68, 0xa0, 0x2d, 0xee, 0xea, 0x9e, 0x6c, 0xc8, 0xe4, 0x03, 0x98, 0x4f, 0x84, 0x54, 0xa3, 0x2c, | ||||
| 	0x5a, 0x2d, 0x4c, 0x59, 0x04, 0xd8, 0xca, 0x94, 0x81, 0xeb, 0x87, 0x70, 0x66, 0x5a, 0x0d, 0x5b, | ||||
| 	0xcf, 0xdc, 0x83, 0x1d, 0x1f, 0xbb, 0xd8, 0x65, 0x6c, 0x3c, 0x17, 0xa7, 0x37, 0x1f, 0x84, 0x52, | ||||
| 	0x0d, 0x58, 0xb4, 0xe3, 0x93, 0xb7, 0xb1, 0x41, 0xed, 0xed, 0x53, 0x8a, 0x6d, 0x6c, 0x0d, 0x71, | ||||
| 	0x97, 0xa7, 0x71, 0x7a, 0x0b, 0xc3, 0xde, 0xa5, 0xa2, 0x33, 0x6e, 0x53, 0x3f, 0xcc, 0x82, 0x6b, | ||||
| 	0x6b, 0xd8, 0xe9, 0xb6, 0xa9, 0xcf, 0x60, 0xb9, 0x2b, 0xb1, 0xb5, 0xca, 0x83, 0xc0, 0x5c, 0xcd, | ||||
| 	0x16, 0x8e, 0x5a, 0x61, 0x56, 0x19, 0x20, 0x5d, 0xca, 0x08, 0xb6, 0x82, 0x5e, 0x85, 0xa5, 0x30, | ||||
| 	0x19, 0xde, 0x38, 0xe0, 0x31, 0xeb, 0x44, 0xb6, 0x63, 0x55, 0xa8, 0xab, 0xd7, 0xda, 0xd9, 0x92, | ||||
| 	0xae, 0x8a, 0xe8, 0x7c, 0x2e, 0x63, 0xdb, 0x8b, 0x2a, 0x74, 0x3c, 0x27, 0x9f, 0x82, 0x13, 0x26, | ||||
| 	0xac, 0x6f, 0x4b, 0x45, 0xe1, 0x0d, 0x76, 0x7c, 0x6f, 0xd7, 0xa6, 0xc8, 0x66, 0xe5, 0xf9, 0xd3, | ||||
| 	0x35, 0x47, 0x2f, 0x50, 0x43, 0xab, 0xff, 0x3e, 0x07, 0x6e, 0x2b, 0x1a, 0xa4, 0xca, 0x16, 0x89, | ||||
| 	0x53, 0xf3, 0xcb, 0xd7, 0x70, 0x8e, 0x99, 0x9f, 0x16, 0x16, 0xeb, 0x17, 0x67, 0xaa, 0x9c, 0xf5, | ||||
| 	0xcd, 0xb5, 0x42, 0xb9, 0x31, 0x38, 0xab, 0x88, 0x56, 0x73, 0x85, 0xfd, 0x6b, 0x1d, 0xfb, 0xe3, | ||||
| 	0xb2, 0x90, 0xc1, 0x21, 0x96, 0xcb, 0xec, 0x89, 0xda, 0x16, 0x5f, 0xf8, 0xf3, 0x77, 0x37, 0x0f, | ||||
| 	0xcc, 0xfc, 0x6d, 0x75, 0xa7, 0x35, 0xb0, 0x5d, 0x3b, 0x92, 0x3d, 0x1c, 0xd5, 0xeb, 0xc2, 0xec, | ||||
| 	0xa5, 0xb8, 0x3f, 0x25, 0x61, 0x18, 0xe4, 0x4b, 0x80, 0x6e, 0x98, 0x26, 0x4c, 0xa1, 0x9c, 0xb4, | ||||
| 	0x51, 0x28, 0xbc, 0xe0, 0xd6, 0x18, 0x35, 0xa5, 0x92, 0x63, 0x93, 0x3b, 0xd8, 0xc3, 0xd8, 0x28, | ||||
| 	0x8f, 0xca, 0x27, 0x57, 0xa7, 0x96, 0x67, 0x25, 0x56, 0xb4, 0x04, 0x46, 0xb4, 0x32, 0x5a, 0xa1, | ||||
| 	0x95, 0x80, 0xd9, 0xbd, 0x2b, 0x4f, 0x9e, 0xad, 0xce, 0xfc, 0x81, 0xdf, 0x5f, 0xcf, 0x56, 0x4b, | ||||
| 	0xdf, 0x3e, 0x5f, 0x2d, 0x3d, 0xc1, 0xef, 0x37, 0xfc, 0xfe, 0xc4, 0xaf, 0x53, 0x36, 0xbf, 0xf3, | ||||
| 	0xef, 0xff, 0x13, 0x00, 0x00, 0xff, 0xff, 0x3b, 0x66, 0xa6, 0x7e, 0x2d, 0x0c, 0x00, 0x00, | ||||
| 	// 1320 bytes of a gzipped FileDescriptorProto
 | ||||
| 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0xcd, 0x72, 0x1b, 0x45, | ||||
| 	0x17, 0xf5, 0xcf, 0x58, 0x96, 0xee, 0xd8, 0x89, 0xd2, 0x95, 0x2f, 0x51, 0x94, 0x7c, 0xb6, 0x23, | ||||
| 	0x02, 0x04, 0xaa, 0x90, 0x41, 0x50, 0xf9, 0xe1, 0xa7, 0x40, 0x96, 0x84, 0x63, 0x12, 0x3b, 0x53, | ||||
| 	0xed, 0x24, 0x2c, 0x55, 0xed, 0x99, 0x8e, 0x3c, 0xe5, 0xd1, 0xcc, 0xd0, 0xd3, 0xa3, 0x94, 0x77, | ||||
| 	0x2c, 0x53, 0x2c, 0xd8, 0xc1, 0x8e, 0x05, 0xc5, 0x3b, 0xf0, 0x0c, 0x59, 0xb2, 0xa1, 0x8a, 0x55, | ||||
| 	0x8a, 0xe4, 0x09, 0xa8, 0xe2, 0x05, 0xb8, 0xdd, 0xd3, 0x92, 0x46, 0x64, 0x9c, 0xb0, 0xc8, 0x62, | ||||
| 	0xaa, 0xba, 0x7b, 0xce, 0x39, 0xdd, 0x73, 0xef, 0xe9, 0x7b, 0x25, 0xb0, 0x93, 0x98, 0xbb, 0x49, | ||||
| 	0x33, 0x16, 0x91, 0x8c, 0x08, 0xf1, 0x22, 0xf7, 0x88, 0x8b, 0x66, 0xf2, 0x88, 0x89, 0xe1, 0x91, | ||||
| 	0x2f, 0x9b, 0xa3, 0x0f, 0xea, 0xb6, 0x3c, 0x8e, 0xb9, 0x01, 0xd4, 0xcf, 0x0e, 0xa2, 0x41, 0xa4, | ||||
| 	0x87, 0x9b, 0x6a, 0x64, 0x56, 0xcf, 0x7b, 0xa9, 0x60, 0xd2, 0x8f, 0xc2, 0xcd, 0xf1, 0x20, 0x7b, | ||||
| 	0xd1, 0xf8, 0xde, 0x82, 0xf2, 0x5e, 0xe4, 0xf1, 0x7d, 0xdc, 0x83, 0x6c, 0x83, 0xcd, 0xc2, 0x30, | ||||
| 	0x92, 0x1a, 0x90, 0xd4, 0xe6, 0x37, 0xe6, 0xaf, 0xda, 0xad, 0xf5, 0xe6, 0x8b, 0x5b, 0x36, 0xdb, | ||||
| 	0x53, 0xd8, 0x96, 0xf5, 0xe4, 0xe9, 0xfa, 0x1c, 0xcd, 0x33, 0xc9, 0xfb, 0x60, 0x89, 0x28, 0xe0, | ||||
| 	0xb5, 0x05, 0x54, 0x38, 0xd5, 0xba, 0x54, 0xa4, 0xa0, 0x36, 0xa5, 0x88, 0xa1, 0x1a, 0x89, 0x5b, | ||||
| 	0xc3, 0x90, 0x0f, 0x0f, 0xb8, 0x48, 0x0e, 0xfd, 0xb8, 0xb6, 0xa8, 0x79, 0x6f, 0x9f, 0xc4, 0x53, | ||||
| 	0x87, 0x6d, 0xee, 0x4e, 0xe0, 0x34, 0x47, 0x25, 0xbb, 0xb0, 0xc2, 0x46, 0xcc, 0x0f, 0xd8, 0x81, | ||||
| 	0x1f, 0xf8, 0xf2, 0xb8, 0x66, 0x69, 0xa9, 0x77, 0x5e, 0x2a, 0xd5, 0xce, 0x11, 0xe8, 0x0c, 0xbd, | ||||
| 	0xe1, 0x01, 0x4c, 0x37, 0x22, 0x6f, 0xc1, 0xb2, 0xd3, 0xdb, 0xeb, 0xee, 0xec, 0x6d, 0x57, 0xe7, | ||||
| 	0xea, 0x17, 0xbe, 0xfb, 0x69, 0xe3, 0x7f, 0x4a, 0x63, 0x0a, 0x70, 0x78, 0xe8, 0xf9, 0xe1, 0x80, | ||||
| 	0x5c, 0x85, 0x72, 0xbb, 0xd3, 0xe9, 0x39, 0xf7, 0x7a, 0xdd, 0xea, 0x7c, 0xbd, 0x8e, 0xc0, 0x73, | ||||
| 	0xb3, 0xc0, 0xb6, 0xeb, 0xf2, 0x58, 0x72, 0xaf, 0x6e, 0x3d, 0xfe, 0x65, 0x6d, 0xae, 0xf1, 0x78, | ||||
| 	0x1e, 0x56, 0xf2, 0x87, 0xc0, 0x8d, 0x4a, 0xed, 0xce, 0xbd, 0x9d, 0x07, 0x3d, 0xdc, 0x67, 0x42, | ||||
| 	0xcf, 0x23, 0xda, 0xae, 0xf4, 0x47, 0x9c, 0x5c, 0x81, 0x25, 0xa7, 0x7d, 0x7f, 0xbf, 0x87, 0xbb, | ||||
| 	0x4c, 0x8e, 0x93, 0x87, 0x39, 0x2c, 0x4d, 0x34, 0xaa, 0x4b, 0xdb, 0x3b, 0x7b, 0xd5, 0x85, 0x62, | ||||
| 	0x54, 0x57, 0x30, 0x3f, 0x34, 0x47, 0xf9, 0xd5, 0x02, 0x7b, 0x9f, 0x8b, 0x91, 0xef, 0xbe, 0x66, | ||||
| 	0x4f, 0x5c, 0x03, 0x4b, 0xb2, 0xe4, 0x48, 0x7b, 0xc2, 0x2e, 0xf6, 0xc4, 0x3d, 0x7c, 0xaf, 0x36, | ||||
| 	0x35, 0x74, 0x8d, 0x57, 0xce, 0x10, 0x3c, 0x0e, 0x7c, 0x97, 0x61, 0xbc, 0xb4, 0x33, 0xec, 0xd6, | ||||
| 	0x9b, 0x45, 0x6c, 0x3a, 0x41, 0x99, 0xf3, 0xdf, 0x9a, 0xa3, 0x39, 0x2a, 0xf9, 0x04, 0x4a, 0x83, | ||||
| 	0x20, 0x3a, 0x60, 0x81, 0xf6, 0x84, 0xdd, 0xba, 0x5c, 0x24, 0xb2, 0xad, 0x11, 0x53, 0x01, 0x43, | ||||
| 	0x21, 0x37, 0xa0, 0x94, 0xc6, 0x1e, 0xea, 0xd4, 0x4a, 0x9a, 0xbc, 0x51, 0x44, 0xbe, 0xaf, 0x11, | ||||
| 	0x9d, 0x28, 0x7c, 0xe8, 0x0f, 0xa8, 0xc1, 0x93, 0x7d, 0x28, 0x87, 0x5c, 0x3e, 0x8a, 0xc4, 0x51, | ||||
| 	0x52, 0x5b, 0xde, 0x58, 0x44, 0xee, 0xf5, 0x22, 0x6e, 0x2e, 0xe6, 0xcd, 0xbd, 0x0c, 0xdf, 0x96, | ||||
| 	0x92, 0xb9, 0x87, 0x43, 0x1e, 0x4a, 0x23, 0x39, 0x11, 0x22, 0x9f, 0x42, 0x19, 0xad, 0x16, 0x47, | ||||
| 	0x7e, 0x28, 0x6b, 0xe5, 0x93, 0x0f, 0xd4, 0x33, 0x18, 0xa5, 0x4a, 0x27, 0x8c, 0xfa, 0x6d, 0x38, | ||||
| 	0x7f, 0xc2, 0x16, 0xe4, 0x1c, 0x94, 0x24, 0x13, 0x03, 0x2e, 0x75, 0xa6, 0x2b, 0xd4, 0xcc, 0x48, | ||||
| 	0x0d, 0x96, 0x59, 0xe0, 0xb3, 0x84, 0x27, 0x98, 0xc0, 0x45, 0x7c, 0x31, 0x9e, 0x6e, 0x95, 0xc0, | ||||
| 	0x1a, 0xa2, 0x9f, 0x1a, 0x9b, 0x70, 0xe6, 0x85, 0x0c, 0x90, 0x3a, 0x94, 0x4d, 0x06, 0x32, 0xeb, | ||||
| 	0x58, 0x74, 0x32, 0x6f, 0x9c, 0x86, 0xd5, 0x99, 0x68, 0x37, 0x7e, 0x5f, 0x80, 0xf2, 0xd8, 0x02, | ||||
| 	0xa4, 0x0d, 0x15, 0x37, 0x0a, 0x25, 0x1a, 0x93, 0x0b, 0xe3, 0xba, 0xc2, 0x84, 0x75, 0xc6, 0x20, | ||||
| 	0xc5, 0xc2, 0x84, 0x4d, 0x59, 0xe4, 0x4b, 0xa8, 0x08, 0x9e, 0x44, 0xa9, 0x70, 0xf5, 0xa9, 0x95, | ||||
| 	0xc4, 0xd5, 0x62, 0xe3, 0x64, 0x20, 0xca, 0xbf, 0x49, 0x7d, 0xc1, 0x55, 0x34, 0x12, 0x3a, 0xa5, | ||||
| 	0xa2, 0x71, 0x96, 0x71, 0x82, 0x81, 0x90, 0x2f, 0x73, 0x0e, 0xcd, 0x20, 0x4e, 0x84, 0x5f, 0x77, | ||||
| 	0x4c, 0xc7, 0x0c, 0x24, 0x57, 0xe2, 0x80, 0xb9, 0x5a, 0xb5, 0xb6, 0xa4, 0xe9, 0xff, 0x2f, 0xa2, | ||||
| 	0x3b, 0x63, 0x10, 0x9d, 0xe2, 0xc9, 0x4d, 0x80, 0x20, 0x1a, 0xf4, 0x3d, 0x81, 0x77, 0x5d, 0x18, | ||||
| 	0xe7, 0xd5, 0x8b, 0xd8, 0x5d, 0x8d, 0xa0, 0x15, 0x44, 0x67, 0xc3, 0xad, 0x0a, 0x1e, 0x3a, 0x0d, | ||||
| 	0xa5, 0x3f, 0xe4, 0x8d, 0x1f, 0x2d, 0x58, 0x9d, 0x09, 0x13, 0x39, 0x0b, 0x4b, 0xfe, 0x90, 0x0d, | ||||
| 	0xb8, 0x49, 0x72, 0x36, 0x21, 0x3d, 0x28, 0x61, 0x45, 0xe0, 0x41, 0x96, 0x62, 0xbb, 0xf5, 0xde, | ||||
| 	0x2b, 0xe3, 0xdd, 0xbc, 0xa3, 0xf1, 0xbd, 0x50, 0x8a, 0x63, 0x6a, 0xc8, 0xca, 0x2a, 0x6e, 0x34, | ||||
| 	0x1c, 0xb2, 0x50, 0xdd, 0x56, 0x6d, 0x15, 0x33, 0x25, 0x04, 0x2c, 0x74, 0x53, 0x82, 0x51, 0x54, | ||||
| 	0xcb, 0x7a, 0x4c, 0xaa, 0xb0, 0xc8, 0xc3, 0x11, 0x46, 0x46, 0x2d, 0xa9, 0xa1, 0x5a, 0xf1, 0xfc, | ||||
| 	0xec, 0x6b, 0x71, 0x05, 0x87, 0x8a, 0x87, 0x65, 0x4c, 0xe0, 0xf5, 0x51, 0x4b, 0x7a, 0x4c, 0xae, | ||||
| 	0x43, 0x69, 0x18, 0xe1, 0x07, 0x26, 0xe8, 0x7f, 0x75, 0xd8, 0x0b, 0x45, 0x87, 0xdd, 0x55, 0x08, | ||||
| 	0x53, 0x4d, 0x0c, 0x9c, 0xdc, 0x82, 0x33, 0x89, 0x8c, 0xe2, 0xfe, 0x40, 0x60, 0x94, 0xfb, 0x31, | ||||
| 	0x17, 0x7e, 0xe4, 0xd5, 0x2a, 0x27, 0x17, 0xa5, 0xae, 0x69, 0x98, 0xf4, 0xb4, 0xa2, 0x6d, 0x2b, | ||||
| 	0x96, 0xa3, 0x49, 0xc4, 0x81, 0x95, 0x38, 0x0d, 0x82, 0x7e, 0x14, 0x67, 0xb5, 0x11, 0xb4, 0xc8, | ||||
| 	0x7f, 0x88, 0x9a, 0x83, 0xac, 0xbb, 0x19, 0x89, 0xda, 0xf1, 0x74, 0x52, 0xbf, 0x09, 0x76, 0x2e, | ||||
| 	0xa2, 0x2a, 0x12, 0x47, 0xfc, 0xd8, 0x24, 0x49, 0x0d, 0x55, 0xe2, 0x46, 0x2c, 0x48, 0xb3, 0xce, | ||||
| 	0x8a, 0x89, 0xd3, 0x93, 0x8f, 0x17, 0x6e, 0xcc, 0xd7, 0x5b, 0x60, 0xe7, 0x64, 0xc9, 0x1b, 0xb0, | ||||
| 	0x2a, 0xf8, 0xc0, 0x4f, 0x50, 0xa6, 0xcf, 0x52, 0x79, 0x58, 0xfb, 0x42, 0x13, 0x56, 0xc6, 0x8b, | ||||
| 	0x6d, 0x5c, 0x6b, 0xfc, 0x8d, 0x6d, 0x27, 0x5f, 0x22, 0x48, 0x27, 0xbb, 0xcb, 0x7a, 0xc7, 0x53, | ||||
| 	0xad, 0xcd, 0x57, 0x95, 0x14, 0x7d, 0x73, 0x82, 0x54, 0xed, 0xb8, 0xab, 0xda, 0xb9, 0x26, 0x93, | ||||
| 	0x8f, 0x60, 0x29, 0x8e, 0x84, 0x1c, 0xbb, 0x68, 0xad, 0xd0, 0xed, 0x08, 0x30, 0x45, 0x2d, 0x03, | ||||
| 	0x37, 0x0e, 0xe1, 0xd4, 0xac, 0x1a, 0x76, 0xad, 0xc5, 0x07, 0x3b, 0x0e, 0x36, 0xc0, 0x8b, 0xd8, | ||||
| 	0xb3, 0xce, 0xcf, 0xbe, 0x7c, 0xe0, 0x0b, 0x99, 0xb2, 0x60, 0xc7, 0x21, 0xef, 0x62, 0x6f, 0xdb, | ||||
| 	0xdb, 0xa7, 0x14, 0x3b, 0xe0, 0x3a, 0xe2, 0x2e, 0xce, 0xe2, 0xd4, 0x2b, 0x4c, 0xbb, 0x47, 0xa3, | ||||
| 	0x83, 0x49, 0x87, 0xfb, 0x61, 0x01, 0x6c, 0x53, 0xfe, 0x5e, 0x6f, 0x87, 0xfb, 0x1c, 0x56, 0xb3, | ||||
| 	0x9b, 0xda, 0x77, 0xf5, 0xa7, 0x99, 0x9a, 0xf3, 0xb2, 0x0b, 0xbb, 0x92, 0x11, 0x4c, 0xf1, 0xbd, | ||||
| 	0x0c, 0x2b, 0x7e, 0x3c, 0xba, 0xd6, 0xe7, 0x21, 0x3b, 0x08, 0x4c, 0xb3, 0x2b, 0x53, 0x5b, 0xad, | ||||
| 	0xf5, 0xb2, 0x25, 0x55, 0x50, 0x31, 0xf8, 0x5c, 0x84, 0xa6, 0x8d, 0x95, 0xe9, 0x64, 0x4e, 0x3e, | ||||
| 	0x03, 0xcb, 0x8f, 0xd9, 0xd0, 0x54, 0x99, 0xc2, 0x2f, 0xd8, 0x71, 0xda, 0xbb, 0xc6, 0x22, 0x5b, | ||||
| 	0xe5, 0xe7, 0x4f, 0xd7, 0x2d, 0xb5, 0x40, 0x35, 0xad, 0xf1, 0x33, 0x76, 0xfe, 0x4e, 0x90, 0x26, | ||||
| 	0xd2, 0x14, 0x89, 0xd7, 0x16, 0x97, 0xaf, 0xe1, 0x0c, 0xd3, 0xbf, 0x77, 0x58, 0xa8, 0x6e, 0x9c, | ||||
| 	0x2e, 0x90, 0x26, 0x36, 0x57, 0x0a, 0xe5, 0x26, 0xe0, 0xac, 0x98, 0x1a, 0xcd, 0x2a, 0xfb, 0xd7, | ||||
| 	0x3a, 0xb6, 0xd6, 0xd5, 0x48, 0xb8, 0x87, 0x58, 0x69, 0xb3, 0x2b, 0x6a, 0x7e, 0x1d, 0x14, 0xfe, | ||||
| 	0x6e, 0xbc, 0x9b, 0x07, 0x66, 0xf1, 0x36, 0xba, 0xb3, 0x1a, 0xd8, 0xe9, 0x2d, 0xc1, 0x1e, 0x8e, | ||||
| 	0x4b, 0x7d, 0xa1, 0x7b, 0x29, 0xbe, 0x9f, 0x91, 0xd0, 0x0c, 0xf2, 0x15, 0x80, 0xe7, 0x27, 0x31, | ||||
| 	0x93, 0x28, 0x27, 0x4c, 0x16, 0x0a, 0x3f, 0xb0, 0x3b, 0x41, 0xcd, 0xa8, 0xe4, 0xd8, 0xe4, 0x36, | ||||
| 	0xb6, 0x3f, 0x36, 0xf6, 0x51, 0xe9, 0xe4, 0xea, 0xd4, 0x69, 0x1b, 0x89, 0xaa, 0x92, 0xc0, 0x8c, | ||||
| 	0x96, 0xc7, 0x2b, 0xb4, 0xec, 0x32, 0xe3, 0xab, 0x5b, 0x40, 0x3c, 0xfe, 0x90, 0xa5, 0x81, 0xec, | ||||
| 	0xe7, 0xda, 0xc9, 0xf2, 0x2b, 0xdd, 0x59, 0x35, 0xac, 0x3b, 0x93, 0xae, 0x72, 0xe9, 0xc9, 0xb3, | ||||
| 	0xb5, 0xb9, 0x3f, 0xf0, 0xf9, 0xeb, 0xd9, 0xda, 0xfc, 0xb7, 0xcf, 0xd7, 0xe6, 0x9f, 0xe0, 0xf3, | ||||
| 	0x1b, 0x3e, 0x7f, 0xe2, 0x73, 0x50, 0xd2, 0xff, 0x29, 0x3e, 0xfc, 0x27, 0x00, 0x00, 0xff, 0xff, | ||||
| 	0xde, 0xdd, 0x4d, 0x58, 0xb2, 0x0c, 0x00, 0x00, | ||||
| } | ||||
|  |  | |||
|  | @ -114,6 +114,10 @@ message TaskSpec { | |||
| 
 | ||||
| 	// Placement specifies node selection constraints | ||||
| 	Placement placement = 5; | ||||
| 
 | ||||
| 	// LogDriver specifies the log driver to use for the task. Any runtime will | ||||
| 	// direct logs into the specified driver for the duration of the task. | ||||
| 	Driver log_driver = 6; | ||||
| } | ||||
| 
 | ||||
| // Container specifies runtime parameters for a container. | ||||
|  | @ -243,4 +247,11 @@ message ClusterSpec { | |||
| 
 | ||||
| 	// CAConfig defines cluster-level certificate authority settings. | ||||
| 	CAConfig ca_config = 6 [(gogoproto.nullable) = false, (gogoproto.customname) = "CAConfig"]; | ||||
| 
 | ||||
| 	// DefaultLogDriver specifies the log driver to use for the cluster if not | ||||
| 	// specified for each task. | ||||
| 	// | ||||
| 	// If this is changed, only new tasks will pick up the new log driver. | ||||
| 	// Existing tasks will continue to use the previous default until rescheduled. | ||||
| 	Driver default_log_driver = 7; | ||||
| } | ||||
|  |  | |||
|  | @ -146,6 +146,8 @@ import docker_swarmkit_v1 "github.com/docker/swarmkit/api/timestamp" | |||
| import docker_swarmkit_v11 "github.com/docker/swarmkit/api/duration" | ||||
| import _ "github.com/gogo/protobuf/gogoproto" | ||||
| 
 | ||||
| import os "os" | ||||
| 
 | ||||
| import strings "strings" | ||||
| import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto" | ||||
| import sort "sort" | ||||
|  | @ -310,15 +312,18 @@ type Mount_MountType int32 | |||
| const ( | ||||
| 	MountTypeBind   Mount_MountType = 0 | ||||
| 	MountTypeVolume Mount_MountType = 1 | ||||
| 	MountTypeTmpfs  Mount_MountType = 2 | ||||
| ) | ||||
| 
 | ||||
| var Mount_MountType_name = map[int32]string{ | ||||
| 	0: "BIND", | ||||
| 	1: "VOLUME", | ||||
| 	2: "TMPFS", | ||||
| } | ||||
| var Mount_MountType_value = map[string]int32{ | ||||
| 	"BIND":   0, | ||||
| 	"VOLUME": 1, | ||||
| 	"TMPFS":  2, | ||||
| } | ||||
| 
 | ||||
| func (x Mount_MountType) String() string { | ||||
|  | @ -640,16 +645,26 @@ func (*Image) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{1 | |||
| type Mount struct { | ||||
| 	// Type defines the nature of the mount.
 | ||||
| 	Type Mount_MountType `protobuf:"varint,1,opt,name=type,proto3,enum=docker.swarmkit.v1.Mount_MountType" json:"type,omitempty"` | ||||
| 	// Source path to mount
 | ||||
| 	// Source specifies the name of the mount. Depending on mount type, this
 | ||||
| 	// may be a volume name or a host path, or even ignored.
 | ||||
| 	Source string `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"` | ||||
| 	// Target path in container
 | ||||
| 	Target string `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` | ||||
| 	// ReadOnly should be set to true if the mount should not be writable.
 | ||||
| 	ReadOnly bool `protobuf:"varint,4,opt,name=readonly,proto3" json:"readonly,omitempty"` | ||||
| 	// BindOptions configures properties of a bind mount type.
 | ||||
| 	//
 | ||||
| 	// For mounts of type bind, the source must be an absolute host path.
 | ||||
| 	BindOptions *Mount_BindOptions `protobuf:"bytes,5,opt,name=bind_options,json=bindOptions" json:"bind_options,omitempty"` | ||||
| 	// VolumeOptions configures the properties specific to a volume mount type.
 | ||||
| 	//
 | ||||
| 	// For mounts of type volume, the source will be used as the volume name.
 | ||||
| 	VolumeOptions *Mount_VolumeOptions `protobuf:"bytes,6,opt,name=volume_options,json=volumeOptions" json:"volume_options,omitempty"` | ||||
| 	// TmpfsOptions allows one to set options for mounting a temporary
 | ||||
| 	// filesystem.
 | ||||
| 	//
 | ||||
| 	// The source field will be ignored when using mounts of type tmpfs.
 | ||||
| 	TmpfsOptions *Mount_TmpfsOptions `protobuf:"bytes,7,opt,name=tmpfs_options,json=tmpfsOptions" json:"tmpfs_options,omitempty"` | ||||
| } | ||||
| 
 | ||||
| func (m *Mount) Reset()                    { *m = Mount{} } | ||||
|  | @ -683,6 +698,24 @@ func (m *Mount_VolumeOptions) Reset()                    { *m = Mount_VolumeOpti | |||
| func (*Mount_VolumeOptions) ProtoMessage()               {} | ||||
| func (*Mount_VolumeOptions) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{11, 1} } | ||||
| 
 | ||||
| type Mount_TmpfsOptions struct { | ||||
| 	// Size sets the size of the tmpfs, in bytes.
 | ||||
| 	//
 | ||||
| 	// This will be converted to an operating system specific value
 | ||||
| 	// depending on the host. For example, on linux, it will be convered to
 | ||||
| 	// use a 'k', 'm' or 'g' syntax. BSD, though not widely supported with
 | ||||
| 	// docker, uses a straight byte value.
 | ||||
| 	//
 | ||||
| 	// Percentages are not supported.
 | ||||
| 	SizeBytes int64 `protobuf:"varint,1,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"` | ||||
| 	// Mode of the tmpfs upon creation
 | ||||
| 	Mode os.FileMode `protobuf:"varint,2,opt,name=mode,proto3,customtype=os.FileMode" json:"mode"` | ||||
| } | ||||
| 
 | ||||
| func (m *Mount_TmpfsOptions) Reset()                    { *m = Mount_TmpfsOptions{} } | ||||
| func (*Mount_TmpfsOptions) ProtoMessage()               {} | ||||
| func (*Mount_TmpfsOptions) Descriptor() ([]byte, []int) { return fileDescriptorTypes, []int{11, 2} } | ||||
| 
 | ||||
| type RestartPolicy struct { | ||||
| 	Condition RestartPolicy_RestartCondition `protobuf:"varint,1,opt,name=condition,proto3,enum=docker.swarmkit.v1.RestartPolicy_RestartCondition" json:"condition,omitempty"` | ||||
| 	// Delay between restart attempts
 | ||||
|  | @ -1132,6 +1165,7 @@ func init() { | |||
| 	proto.RegisterType((*Mount)(nil), "docker.swarmkit.v1.Mount") | ||||
| 	proto.RegisterType((*Mount_BindOptions)(nil), "docker.swarmkit.v1.Mount.BindOptions") | ||||
| 	proto.RegisterType((*Mount_VolumeOptions)(nil), "docker.swarmkit.v1.Mount.VolumeOptions") | ||||
| 	proto.RegisterType((*Mount_TmpfsOptions)(nil), "docker.swarmkit.v1.Mount.TmpfsOptions") | ||||
| 	proto.RegisterType((*RestartPolicy)(nil), "docker.swarmkit.v1.RestartPolicy") | ||||
| 	proto.RegisterType((*UpdateConfig)(nil), "docker.swarmkit.v1.UpdateConfig") | ||||
| 	proto.RegisterType((*ContainerStatus)(nil), "docker.swarmkit.v1.ContainerStatus") | ||||
|  | @ -1345,6 +1379,7 @@ func (m *Mount) Copy() *Mount { | |||
| 		ReadOnly:      m.ReadOnly, | ||||
| 		BindOptions:   m.BindOptions.Copy(), | ||||
| 		VolumeOptions: m.VolumeOptions.Copy(), | ||||
| 		TmpfsOptions:  m.TmpfsOptions.Copy(), | ||||
| 	} | ||||
| 
 | ||||
| 	return o | ||||
|  | @ -1382,6 +1417,19 @@ func (m *Mount_VolumeOptions) Copy() *Mount_VolumeOptions { | |||
| 	return o | ||||
| } | ||||
| 
 | ||||
| func (m *Mount_TmpfsOptions) Copy() *Mount_TmpfsOptions { | ||||
| 	if m == nil { | ||||
| 		return nil | ||||
| 	} | ||||
| 
 | ||||
| 	o := &Mount_TmpfsOptions{ | ||||
| 		SizeBytes: m.SizeBytes, | ||||
| 		Mode:      m.Mode, | ||||
| 	} | ||||
| 
 | ||||
| 	return o | ||||
| } | ||||
| 
 | ||||
| func (m *RestartPolicy) Copy() *RestartPolicy { | ||||
| 	if m == nil { | ||||
| 		return nil | ||||
|  | @ -1925,7 +1973,7 @@ func (this *Mount) GoString() string { | |||
| 	if this == nil { | ||||
| 		return "nil" | ||||
| 	} | ||||
| 	s := make([]string, 0, 10) | ||||
| 	s := make([]string, 0, 11) | ||||
| 	s = append(s, "&api.Mount{") | ||||
| 	s = append(s, "Type: "+fmt.Sprintf("%#v", this.Type)+",\n") | ||||
| 	s = append(s, "Source: "+fmt.Sprintf("%#v", this.Source)+",\n") | ||||
|  | @ -1937,6 +1985,9 @@ func (this *Mount) GoString() string { | |||
| 	if this.VolumeOptions != nil { | ||||
| 		s = append(s, "VolumeOptions: "+fmt.Sprintf("%#v", this.VolumeOptions)+",\n") | ||||
| 	} | ||||
| 	if this.TmpfsOptions != nil { | ||||
| 		s = append(s, "TmpfsOptions: "+fmt.Sprintf("%#v", this.TmpfsOptions)+",\n") | ||||
| 	} | ||||
| 	s = append(s, "}") | ||||
| 	return strings.Join(s, "") | ||||
| } | ||||
|  | @ -1976,6 +2027,17 @@ func (this *Mount_VolumeOptions) GoString() string { | |||
| 	s = append(s, "}") | ||||
| 	return strings.Join(s, "") | ||||
| } | ||||
| func (this *Mount_TmpfsOptions) GoString() string { | ||||
| 	if this == nil { | ||||
| 		return "nil" | ||||
| 	} | ||||
| 	s := make([]string, 0, 6) | ||||
| 	s = append(s, "&api.Mount_TmpfsOptions{") | ||||
| 	s = append(s, "SizeBytes: "+fmt.Sprintf("%#v", this.SizeBytes)+",\n") | ||||
| 	s = append(s, "Mode: "+fmt.Sprintf("%#v", this.Mode)+",\n") | ||||
| 	s = append(s, "}") | ||||
| 	return strings.Join(s, "") | ||||
| } | ||||
| func (this *RestartPolicy) GoString() string { | ||||
| 	if this == nil { | ||||
| 		return "nil" | ||||
|  | @ -2804,6 +2866,16 @@ func (m *Mount) MarshalTo(data []byte) (int, error) { | |||
| 		} | ||||
| 		i += n7 | ||||
| 	} | ||||
| 	if m.TmpfsOptions != nil { | ||||
| 		data[i] = 0x3a | ||||
| 		i++ | ||||
| 		i = encodeVarintTypes(data, i, uint64(m.TmpfsOptions.Size())) | ||||
| 		n8, err := m.TmpfsOptions.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n8 | ||||
| 	} | ||||
| 	return i, nil | ||||
| } | ||||
| 
 | ||||
|  | @ -2876,11 +2948,39 @@ func (m *Mount_VolumeOptions) MarshalTo(data []byte) (int, error) { | |||
| 		data[i] = 0x1a | ||||
| 		i++ | ||||
| 		i = encodeVarintTypes(data, i, uint64(m.DriverConfig.Size())) | ||||
| 		n8, err := m.DriverConfig.MarshalTo(data[i:]) | ||||
| 		n9, err := m.DriverConfig.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n8 | ||||
| 		i += n9 | ||||
| 	} | ||||
| 	return i, nil | ||||
| } | ||||
| 
 | ||||
| func (m *Mount_TmpfsOptions) 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 *Mount_TmpfsOptions) MarshalTo(data []byte) (int, error) { | ||||
| 	var i int | ||||
| 	_ = i | ||||
| 	var l int | ||||
| 	_ = l | ||||
| 	if m.SizeBytes != 0 { | ||||
| 		data[i] = 0x8 | ||||
| 		i++ | ||||
| 		i = encodeVarintTypes(data, i, uint64(m.SizeBytes)) | ||||
| 	} | ||||
| 	if m.Mode != 0 { | ||||
| 		data[i] = 0x10 | ||||
| 		i++ | ||||
| 		i = encodeVarintTypes(data, i, uint64(m.Mode)) | ||||
| 	} | ||||
| 	return i, nil | ||||
| } | ||||
|  | @ -2909,11 +3009,11 @@ func (m *RestartPolicy) MarshalTo(data []byte) (int, error) { | |||
| 		data[i] = 0x12 | ||||
| 		i++ | ||||
| 		i = encodeVarintTypes(data, i, uint64(m.Delay.Size())) | ||||
| 		n9, err := m.Delay.MarshalTo(data[i:]) | ||||
| 		n10, err := m.Delay.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n9 | ||||
| 		i += n10 | ||||
| 	} | ||||
| 	if m.MaxAttempts != 0 { | ||||
| 		data[i] = 0x18 | ||||
|  | @ -2924,11 +3024,11 @@ func (m *RestartPolicy) MarshalTo(data []byte) (int, error) { | |||
| 		data[i] = 0x22 | ||||
| 		i++ | ||||
| 		i = encodeVarintTypes(data, i, uint64(m.Window.Size())) | ||||
| 		n10, err := m.Window.MarshalTo(data[i:]) | ||||
| 		n11, err := m.Window.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n10 | ||||
| 		i += n11 | ||||
| 	} | ||||
| 	return i, nil | ||||
| } | ||||
|  | @ -2956,11 +3056,11 @@ func (m *UpdateConfig) MarshalTo(data []byte) (int, error) { | |||
| 	data[i] = 0x12 | ||||
| 	i++ | ||||
| 	i = encodeVarintTypes(data, i, uint64(m.Delay.Size())) | ||||
| 	n11, err := m.Delay.MarshalTo(data[i:]) | ||||
| 	n12, err := m.Delay.MarshalTo(data[i:]) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	i += n11 | ||||
| 	i += n12 | ||||
| 	return i, nil | ||||
| } | ||||
| 
 | ||||
|  | @ -3017,11 +3117,11 @@ func (m *TaskStatus) MarshalTo(data []byte) (int, error) { | |||
| 		data[i] = 0xa | ||||
| 		i++ | ||||
| 		i = encodeVarintTypes(data, i, uint64(m.Timestamp.Size())) | ||||
| 		n12, err := m.Timestamp.MarshalTo(data[i:]) | ||||
| 		n13, err := m.Timestamp.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n12 | ||||
| 		i += n13 | ||||
| 	} | ||||
| 	if m.State != 0 { | ||||
| 		data[i] = 0x10 | ||||
|  | @ -3041,11 +3141,11 @@ func (m *TaskStatus) MarshalTo(data []byte) (int, error) { | |||
| 		i += copy(data[i:], m.Err) | ||||
| 	} | ||||
| 	if m.RuntimeStatus != nil { | ||||
| 		nn13, err := m.RuntimeStatus.MarshalTo(data[i:]) | ||||
| 		nn14, err := m.RuntimeStatus.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += nn13 | ||||
| 		i += nn14 | ||||
| 	} | ||||
| 	return i, nil | ||||
| } | ||||
|  | @ -3056,11 +3156,11 @@ func (m *TaskStatus_Container) MarshalTo(data []byte) (int, error) { | |||
| 		data[i] = 0x2a | ||||
| 		i++ | ||||
| 		i = encodeVarintTypes(data, i, uint64(m.Container.Size())) | ||||
| 		n14, err := m.Container.MarshalTo(data[i:]) | ||||
| 		n15, err := m.Container.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n14 | ||||
| 		i += n15 | ||||
| 	} | ||||
| 	return i, nil | ||||
| } | ||||
|  | @ -3221,11 +3321,11 @@ func (m *IPAMOptions) MarshalTo(data []byte) (int, error) { | |||
| 		data[i] = 0xa | ||||
| 		i++ | ||||
| 		i = encodeVarintTypes(data, i, uint64(m.Driver.Size())) | ||||
| 		n15, err := m.Driver.MarshalTo(data[i:]) | ||||
| 		n16, err := m.Driver.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n15 | ||||
| 		i += n16 | ||||
| 	} | ||||
| 	if len(m.Configs) > 0 { | ||||
| 		for _, msg := range m.Configs { | ||||
|  | @ -3291,11 +3391,11 @@ func (m *WeightedPeer) MarshalTo(data []byte) (int, error) { | |||
| 		data[i] = 0xa | ||||
| 		i++ | ||||
| 		i = encodeVarintTypes(data, i, uint64(m.Peer.Size())) | ||||
| 		n16, err := m.Peer.MarshalTo(data[i:]) | ||||
| 		n17, err := m.Peer.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n16 | ||||
| 		i += n17 | ||||
| 	} | ||||
| 	if m.Weight != 0 { | ||||
| 		data[i] = 0x10 | ||||
|  | @ -3398,11 +3498,11 @@ func (m *AcceptancePolicy_RoleAdmissionPolicy) MarshalTo(data []byte) (int, erro | |||
| 		data[i] = 0x1a | ||||
| 		i++ | ||||
| 		i = encodeVarintTypes(data, i, uint64(m.Secret.Size())) | ||||
| 		n17, err := m.Secret.MarshalTo(data[i:]) | ||||
| 		n18, err := m.Secret.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n17 | ||||
| 		i += n18 | ||||
| 	} | ||||
| 	return i, nil | ||||
| } | ||||
|  | @ -3502,11 +3602,11 @@ func (m *CAConfig) MarshalTo(data []byte) (int, error) { | |||
| 		data[i] = 0xa | ||||
| 		i++ | ||||
| 		i = encodeVarintTypes(data, i, uint64(m.NodeCertExpiry.Size())) | ||||
| 		n18, err := m.NodeCertExpiry.MarshalTo(data[i:]) | ||||
| 		n19, err := m.NodeCertExpiry.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n18 | ||||
| 		i += n19 | ||||
| 	} | ||||
| 	if len(m.ExternalCAs) > 0 { | ||||
| 		for _, msg := range m.ExternalCAs { | ||||
|  | @ -3565,11 +3665,11 @@ func (m *DispatcherConfig) MarshalTo(data []byte) (int, error) { | |||
| 		data[i] = 0xa | ||||
| 		i++ | ||||
| 		i = encodeVarintTypes(data, i, uint64(m.HeartbeatPeriod.Size())) | ||||
| 		n19, err := m.HeartbeatPeriod.MarshalTo(data[i:]) | ||||
| 		n20, err := m.HeartbeatPeriod.MarshalTo(data[i:]) | ||||
| 		if err != nil { | ||||
| 			return 0, err | ||||
| 		} | ||||
| 		i += n19 | ||||
| 		i += n20 | ||||
| 	} | ||||
| 	return i, nil | ||||
| } | ||||
|  | @ -3715,11 +3815,11 @@ func (m *Certificate) MarshalTo(data []byte) (int, error) { | |||
| 	data[i] = 0x1a | ||||
| 	i++ | ||||
| 	i = encodeVarintTypes(data, i, uint64(m.Status.Size())) | ||||
| 	n20, err := m.Status.MarshalTo(data[i:]) | ||||
| 	n21, err := m.Status.MarshalTo(data[i:]) | ||||
| 	if err != nil { | ||||
| 		return 0, err | ||||
| 	} | ||||
| 	i += n20 | ||||
| 	i += n21 | ||||
| 	if len(m.Certificate) > 0 { | ||||
| 		data[i] = 0x22 | ||||
| 		i++ | ||||
|  | @ -4038,6 +4138,10 @@ func (m *Mount) Size() (n int) { | |||
| 		l = m.VolumeOptions.Size() | ||||
| 		n += 1 + l + sovTypes(uint64(l)) | ||||
| 	} | ||||
| 	if m.TmpfsOptions != nil { | ||||
| 		l = m.TmpfsOptions.Size() | ||||
| 		n += 1 + l + sovTypes(uint64(l)) | ||||
| 	} | ||||
| 	return n | ||||
| } | ||||
| 
 | ||||
|  | @ -4071,6 +4175,18 @@ func (m *Mount_VolumeOptions) Size() (n int) { | |||
| 	return n | ||||
| } | ||||
| 
 | ||||
| func (m *Mount_TmpfsOptions) Size() (n int) { | ||||
| 	var l int | ||||
| 	_ = l | ||||
| 	if m.SizeBytes != 0 { | ||||
| 		n += 1 + sovTypes(uint64(m.SizeBytes)) | ||||
| 	} | ||||
| 	if m.Mode != 0 { | ||||
| 		n += 1 + sovTypes(uint64(m.Mode)) | ||||
| 	} | ||||
| 	return n | ||||
| } | ||||
| 
 | ||||
| func (m *RestartPolicy) Size() (n int) { | ||||
| 	var l int | ||||
| 	_ = l | ||||
|  | @ -4651,6 +4767,7 @@ func (this *Mount) String() string { | |||
| 		`ReadOnly:` + fmt.Sprintf("%v", this.ReadOnly) + `,`, | ||||
| 		`BindOptions:` + strings.Replace(fmt.Sprintf("%v", this.BindOptions), "Mount_BindOptions", "Mount_BindOptions", 1) + `,`, | ||||
| 		`VolumeOptions:` + strings.Replace(fmt.Sprintf("%v", this.VolumeOptions), "Mount_VolumeOptions", "Mount_VolumeOptions", 1) + `,`, | ||||
| 		`TmpfsOptions:` + strings.Replace(fmt.Sprintf("%v", this.TmpfsOptions), "Mount_TmpfsOptions", "Mount_TmpfsOptions", 1) + `,`, | ||||
| 		`}`, | ||||
| 	}, "") | ||||
| 	return s | ||||
|  | @ -4687,6 +4804,17 @@ func (this *Mount_VolumeOptions) String() string { | |||
| 	}, "") | ||||
| 	return s | ||||
| } | ||||
| func (this *Mount_TmpfsOptions) String() string { | ||||
| 	if this == nil { | ||||
| 		return "nil" | ||||
| 	} | ||||
| 	s := strings.Join([]string{`&Mount_TmpfsOptions{`, | ||||
| 		`SizeBytes:` + fmt.Sprintf("%v", this.SizeBytes) + `,`, | ||||
| 		`Mode:` + fmt.Sprintf("%v", this.Mode) + `,`, | ||||
| 		`}`, | ||||
| 	}, "") | ||||
| 	return s | ||||
| } | ||||
| func (this *RestartPolicy) String() string { | ||||
| 	if this == nil { | ||||
| 		return "nil" | ||||
|  | @ -6584,6 +6712,39 @@ func (m *Mount) Unmarshal(data []byte) error { | |||
| 				return err | ||||
| 			} | ||||
| 			iNdEx = postIndex | ||||
| 		case 7: | ||||
| 			if wireType != 2 { | ||||
| 				return fmt.Errorf("proto: wrong wireType = %d for field TmpfsOptions", 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 | ||||
| 			} | ||||
| 			if m.TmpfsOptions == nil { | ||||
| 				m.TmpfsOptions = &Mount_TmpfsOptions{} | ||||
| 			} | ||||
| 			if err := m.TmpfsOptions.Unmarshal(data[iNdEx:postIndex]); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			iNdEx = postIndex | ||||
| 		default: | ||||
| 			iNdEx = preIndex | ||||
| 			skippy, err := skipTypes(data[iNdEx:]) | ||||
|  | @ -6888,6 +7049,94 @@ func (m *Mount_VolumeOptions) Unmarshal(data []byte) error { | |||
| 	} | ||||
| 	return nil | ||||
| } | ||||
| func (m *Mount_TmpfsOptions) 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 ErrIntOverflowTypes | ||||
| 			} | ||||
| 			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: TmpfsOptions: wiretype end group for non-group") | ||||
| 		} | ||||
| 		if fieldNum <= 0 { | ||||
| 			return fmt.Errorf("proto: TmpfsOptions: illegal tag %d (wire type %d)", fieldNum, wire) | ||||
| 		} | ||||
| 		switch fieldNum { | ||||
| 		case 1: | ||||
| 			if wireType != 0 { | ||||
| 				return fmt.Errorf("proto: wrong wireType = %d for field SizeBytes", wireType) | ||||
| 			} | ||||
| 			m.SizeBytes = 0 | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return ErrIntOverflowTypes | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				b := data[iNdEx] | ||||
| 				iNdEx++ | ||||
| 				m.SizeBytes |= (int64(b) & 0x7F) << shift | ||||
| 				if b < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 		case 2: | ||||
| 			if wireType != 0 { | ||||
| 				return fmt.Errorf("proto: wrong wireType = %d for field Mode", wireType) | ||||
| 			} | ||||
| 			m.Mode = 0 | ||||
| 			for shift := uint(0); ; shift += 7 { | ||||
| 				if shift >= 64 { | ||||
| 					return ErrIntOverflowTypes | ||||
| 				} | ||||
| 				if iNdEx >= l { | ||||
| 					return io.ErrUnexpectedEOF | ||||
| 				} | ||||
| 				b := data[iNdEx] | ||||
| 				iNdEx++ | ||||
| 				m.Mode |= (os.FileMode(b) & 0x7F) << shift | ||||
| 				if b < 0x80 { | ||||
| 					break | ||||
| 				} | ||||
| 			} | ||||
| 		default: | ||||
| 			iNdEx = preIndex | ||||
| 			skippy, err := skipTypes(data[iNdEx:]) | ||||
| 			if err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 			if skippy < 0 { | ||||
| 				return ErrInvalidLengthTypes | ||||
| 			} | ||||
| 			if (iNdEx + skippy) > l { | ||||
| 				return io.ErrUnexpectedEOF | ||||
| 			} | ||||
| 			iNdEx += skippy | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if iNdEx > l { | ||||
| 		return io.ErrUnexpectedEOF | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
| func (m *RestartPolicy) Unmarshal(data []byte) error { | ||||
| 	l := len(data) | ||||
| 	iNdEx := 0 | ||||
|  | @ -10199,196 +10448,201 @@ var ( | |||
| ) | ||||
| 
 | ||||
| var fileDescriptorTypes = []byte{ | ||||
| 	// 3042 bytes of a gzipped FileDescriptorProto
 | ||||
| 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x58, 0xcd, 0x6f, 0x1b, 0xc7, | ||||
| 	0x15, 0x17, 0x3f, 0x45, 0x3e, 0x52, 0x12, 0xbd, 0x76, 0x1c, 0x99, 0x51, 0x65, 0x77, 0x13, 0x37, | ||||
| 	0xce, 0x47, 0x99, 0x58, 0x49, 0x0b, 0x37, 0x41, 0xeb, 0x2c, 0x3f, 0x64, 0xb1, 0x96, 0x48, 0x62, | ||||
| 	0xa8, 0x0f, 0x04, 0x05, 0x4a, 0xac, 0x96, 0x23, 0x71, 0xa3, 0xe5, 0x2e, 0xbb, 0xbb, 0x94, 0x4c, | ||||
| 	0x14, 0x05, 0x9c, 0x5e, 0x5a, 0x04, 0x3d, 0xf4, 0x5e, 0x04, 0x41, 0xd1, 0xa2, 0xb7, 0x9e, 0x0b, | ||||
| 	0xf4, 0xe4, 0xa3, 0x8f, 0x2d, 0x0a, 0x14, 0x01, 0x0a, 0x04, 0x4d, 0xfa, 0x0f, 0x04, 0xe8, 0x21, | ||||
| 	0x87, 0xf6, 0xd0, 0x37, 0x1f, 0xbb, 0x4b, 0xd2, 0x6b, 0xc5, 0x6e, 0x72, 0x20, 0xb8, 0xf3, 0xde, | ||||
| 	0xef, 0xbd, 0x99, 0x37, 0xf3, 0xe6, 0x7d, 0x0c, 0x14, 0xfc, 0xc9, 0x88, 0x7a, 0x95, 0x91, 0xeb, | ||||
| 	0xf8, 0x8e, 0xa2, 0xf4, 0x1d, 0xe3, 0x84, 0xba, 0x15, 0xef, 0x4c, 0x77, 0x87, 0x27, 0xa6, 0x5f, | ||||
| 	0x39, 0xbd, 0x59, 0xbe, 0xe2, 0x9b, 0x43, 0xea, 0xf9, 0xfa, 0x70, 0xf4, 0x5a, 0xf8, 0x25, 0xe0, | ||||
| 	0xe5, 0x67, 0xfb, 0x63, 0x57, 0xf7, 0x4d, 0xc7, 0x7e, 0x2d, 0xf8, 0x90, 0x8c, 0x4b, 0xc7, 0xce, | ||||
| 	0xb1, 0xc3, 0x3f, 0x5f, 0x63, 0x5f, 0x82, 0xaa, 0x5e, 0x85, 0xc5, 0x7d, 0xea, 0x7a, 0x08, 0x53, | ||||
| 	0x2e, 0x41, 0xc6, 0xb4, 0xfb, 0xf4, 0xde, 0x6a, 0xe2, 0x5a, 0xe2, 0x46, 0x9a, 0x88, 0x81, 0xfa, | ||||
| 	0xdb, 0x04, 0x14, 0x34, 0xdb, 0x76, 0x7c, 0xae, 0xcb, 0x53, 0x14, 0x48, 0xdb, 0xfa, 0x90, 0x72, | ||||
| 	0x50, 0x9e, 0xf0, 0x6f, 0xa5, 0x06, 0x59, 0x4b, 0x3f, 0xa4, 0x96, 0xb7, 0x9a, 0xbc, 0x96, 0xba, | ||||
| 	0x51, 0xd8, 0x78, 0xa5, 0xf2, 0xe8, 0x9a, 0x2b, 0x53, 0x4a, 0x2a, 0xdb, 0x1c, 0xdd, 0xb0, 0x7d, | ||||
| 	0x77, 0x42, 0xa4, 0x68, 0xf9, 0x7b, 0x50, 0x98, 0x22, 0x2b, 0x25, 0x48, 0x9d, 0xd0, 0x89, 0x9c, | ||||
| 	0x86, 0x7d, 0xb2, 0xf5, 0x9d, 0xea, 0xd6, 0x98, 0xe2, 0x24, 0x8c, 0x26, 0x06, 0x6f, 0x25, 0x6f, | ||||
| 	0x25, 0xd4, 0x77, 0x21, 0x4f, 0xa8, 0xe7, 0x8c, 0x5d, 0x83, 0x7a, 0xca, 0x4b, 0x90, 0xb7, 0x75, | ||||
| 	0xdb, 0xe9, 0x19, 0xa3, 0xb1, 0xc7, 0xc5, 0x53, 0xd5, 0xe2, 0x67, 0x9f, 0x5c, 0xcd, 0xb5, 0x90, | ||||
| 	0x58, 0xeb, 0xec, 0x79, 0x24, 0xc7, 0xd8, 0x35, 0xe4, 0x2a, 0xdf, 0x84, 0xe2, 0x90, 0x0e, 0x1d, | ||||
| 	0x77, 0xd2, 0x3b, 0x9c, 0xf8, 0xd4, 0xe3, 0x8a, 0x53, 0xa4, 0x20, 0x68, 0x55, 0x46, 0x52, 0x7f, | ||||
| 	0x9d, 0x80, 0x4b, 0x81, 0x6e, 0x42, 0x7f, 0x32, 0x36, 0x5d, 0x3a, 0xa4, 0xb6, 0xef, 0x29, 0xdf, | ||||
| 	0x41, 0x9b, 0xcd, 0xa1, 0xe9, 0x8b, 0x39, 0x0a, 0x1b, 0xdf, 0x88, 0xb3, 0x39, 0x5c, 0x15, 0x91, | ||||
| 	0x60, 0x45, 0x83, 0xa2, 0x4b, 0x3d, 0xea, 0x9e, 0x8a, 0x9d, 0xe0, 0x53, 0x7e, 0xa9, 0xf0, 0x8c, | ||||
| 	0x88, 0xba, 0x09, 0xb9, 0x8e, 0xa5, 0xfb, 0x47, 0x8e, 0x3b, 0x54, 0x54, 0x28, 0xea, 0xae, 0x31, | ||||
| 	0x30, 0x7d, 0x6a, 0xf8, 0x63, 0x37, 0x38, 0x95, 0x19, 0x9a, 0x72, 0x19, 0x92, 0x8e, 0x98, 0x28, | ||||
| 	0x5f, 0xcd, 0xe2, 0x4e, 0x24, 0xdb, 0x5d, 0x82, 0x14, 0xf5, 0x6d, 0xb8, 0xd0, 0xb1, 0xc6, 0xc7, | ||||
| 	0xa6, 0x5d, 0xa7, 0x9e, 0xe1, 0x9a, 0x23, 0xa6, 0x9d, 0x1d, 0x2f, 0x73, 0xbe, 0xe0, 0x78, 0xd9, | ||||
| 	0x77, 0x78, 0xe4, 0xc9, 0xe8, 0xc8, 0xd5, 0x5f, 0x24, 0xe1, 0x42, 0xc3, 0x46, 0x61, 0x3a, 0x2d, | ||||
| 	0x7d, 0x1d, 0x96, 0x29, 0x27, 0xf6, 0x4e, 0x85, 0x53, 0x49, 0x3d, 0x4b, 0x82, 0x1a, 0x78, 0x5a, | ||||
| 	0x73, 0xce, 0x5f, 0x6e, 0xc6, 0x99, 0xff, 0x88, 0xf6, 0x38, 0xaf, 0x51, 0x1a, 0xb0, 0x38, 0xe2, | ||||
| 	0x46, 0x78, 0xab, 0x29, 0xae, 0xeb, 0x7a, 0x9c, 0xae, 0x47, 0xec, 0xac, 0xa6, 0x1f, 0x7e, 0x72, | ||||
| 	0x75, 0x81, 0x04, 0xb2, 0x5f, 0xc5, 0xf9, 0xfe, 0x95, 0x80, 0x95, 0x96, 0xd3, 0x9f, 0xd9, 0x87, | ||||
| 	0x32, 0xe4, 0x06, 0x8e, 0xe7, 0x4f, 0x5d, 0x94, 0x70, 0xac, 0xdc, 0x82, 0xdc, 0x48, 0x1e, 0x9f, | ||||
| 	0x3c, 0xfd, 0xb5, 0xf8, 0x25, 0x0b, 0x0c, 0x09, 0xd1, 0xca, 0xdb, 0x90, 0x77, 0x03, 0x9f, 0x40, | ||||
| 	0x6b, 0x9f, 0xc0, 0x71, 0x22, 0xbc, 0xf2, 0x7d, 0xc8, 0x8a, 0x43, 0x58, 0x4d, 0x73, 0xc9, 0xeb, | ||||
| 	0x4f, 0xb4, 0xe7, 0x44, 0x0a, 0xa9, 0x1f, 0x27, 0xa0, 0x44, 0xf4, 0x23, 0x7f, 0x87, 0x0e, 0x0f, | ||||
| 	0xa9, 0xdb, 0xc5, 0x8b, 0x8c, 0xf7, 0xe7, 0x32, 0x9e, 0x23, 0xd5, 0xfb, 0xd4, 0xe5, 0x46, 0xe6, | ||||
| 	0x88, 0x1c, 0x29, 0x7b, 0xcc, 0xc9, 0x75, 0x63, 0xa0, 0x1f, 0x9a, 0x96, 0xe9, 0x4f, 0xb8, 0x99, | ||||
| 	0xcb, 0xf1, 0xa7, 0x3c, 0xaf, 0x13, 0x17, 0x1f, 0x09, 0x92, 0x19, 0x35, 0xca, 0x2a, 0x2c, 0x62, | ||||
| 	0xac, 0xf3, 0xf4, 0x63, 0xca, 0xad, 0xcf, 0x93, 0x60, 0x88, 0xae, 0x5c, 0x9c, 0x96, 0x53, 0x0a, | ||||
| 	0xb0, 0xb8, 0xd7, 0xba, 0xdb, 0x6a, 0x1f, 0xb4, 0x4a, 0x0b, 0xca, 0x0a, 0x14, 0xf6, 0x5a, 0xa4, | ||||
| 	0xa1, 0xd5, 0xb6, 0xb4, 0xea, 0x76, 0xa3, 0x94, 0x50, 0x96, 0x30, 0x5c, 0x84, 0xc3, 0xa4, 0xfa, | ||||
| 	0x51, 0x02, 0x80, 0x1d, 0xa0, 0x34, 0xea, 0x2d, 0xc8, 0x60, 0x3c, 0xf5, 0xc5, 0xc1, 0x2d, 0x6f, | ||||
| 	0xbc, 0x10, 0xb7, 0xea, 0x08, 0x5e, 0x61, 0x7f, 0x94, 0x08, 0x91, 0xe9, 0x15, 0x26, 0xe7, 0x57, | ||||
| 	0x98, 0xe1, 0xc8, 0xd9, 0xa5, 0xe5, 0x20, 0x5d, 0x67, 0x5f, 0x09, 0x25, 0x0f, 0x19, 0x5c, 0x53, | ||||
| 	0xfd, 0xdd, 0x52, 0x12, 0x9d, 0xaf, 0x58, 0x6f, 0x76, 0x6b, 0xed, 0x56, 0xab, 0x51, 0xdb, 0x6d, | ||||
| 	0xd4, 0x4b, 0x29, 0xf5, 0x3a, 0x64, 0x9a, 0x43, 0xd4, 0xa2, 0xac, 0x31, 0x0f, 0x38, 0xa2, 0x2e, | ||||
| 	0xb5, 0x8d, 0xc0, 0xb1, 0x22, 0x82, 0xfa, 0xab, 0x1c, 0x64, 0x76, 0x9c, 0xb1, 0xed, 0x2b, 0x1b, | ||||
| 	0x53, 0xb7, 0x78, 0x79, 0x63, 0x3d, 0xce, 0x04, 0x0e, 0xac, 0xec, 0x22, 0x4a, 0xde, 0x72, 0x3c, | ||||
| 	0x4c, 0xe1, 0x2b, 0x72, 0xe9, 0x72, 0xc4, 0xe8, 0xbe, 0xee, 0x1e, 0x53, 0x5f, 0x6e, 0xba, 0x1c, | ||||
| 	0x29, 0x37, 0x20, 0x87, 0xa7, 0xd3, 0x77, 0x6c, 0x6b, 0xc2, 0x5d, 0x2a, 0x27, 0xc2, 0x2c, 0x9e, | ||||
| 	0x43, 0xbf, 0x8d, 0x34, 0x12, 0x72, 0x95, 0x2d, 0x28, 0x1e, 0x62, 0x32, 0xe9, 0x39, 0x23, 0x11, | ||||
| 	0xf3, 0x32, 0x8f, 0x77, 0x40, 0xb1, 0xaa, 0x2a, 0xa2, 0xdb, 0x02, 0x4c, 0x0a, 0x87, 0xd1, 0x40, | ||||
| 	0x69, 0xc1, 0xf2, 0xa9, 0x63, 0x8d, 0x87, 0x34, 0xd4, 0x95, 0xe5, 0xba, 0x5e, 0x7c, 0xbc, 0xae, | ||||
| 	0x7d, 0x8e, 0x0f, 0xb4, 0x2d, 0x9d, 0x4e, 0x0f, 0xcb, 0x3f, 0x4f, 0x41, 0x61, 0x6a, 0x32, 0xa5, | ||||
| 	0x0b, 0x05, 0x4c, 0x8b, 0x23, 0xfd, 0x98, 0x87, 0x5a, 0xb9, 0x7d, 0x37, 0x9f, 0x68, 0xa1, 0x95, | ||||
| 	0x4e, 0x24, 0x48, 0xa6, 0xb5, 0xa8, 0x1f, 0x26, 0xa1, 0x30, 0xc5, 0x54, 0x5e, 0x86, 0x1c, 0xe9, | ||||
| 	0x90, 0xe6, 0xbe, 0xb6, 0xdb, 0x28, 0x2d, 0x94, 0xd7, 0x3e, 0xf8, 0xf0, 0xda, 0x2a, 0xd7, 0x36, | ||||
| 	0xad, 0xa0, 0xe3, 0x9a, 0xa7, 0xcc, 0x5b, 0x6e, 0xc0, 0x62, 0x00, 0x4d, 0x94, 0x9f, 0x43, 0xe8, | ||||
| 	0xb3, 0xf3, 0xd0, 0x29, 0x24, 0xe9, 0x6e, 0x69, 0x04, 0x1d, 0x26, 0x19, 0x8f, 0x24, 0xdd, 0x81, | ||||
| 	0xee, 0xd2, 0xbe, 0xf2, 0x2d, 0xc8, 0x4a, 0x60, 0xaa, 0x5c, 0x46, 0xe0, 0xe5, 0x79, 0x60, 0x84, | ||||
| 	0x23, 0xdd, 0x6d, 0x6d, 0xbf, 0x51, 0x4a, 0xc7, 0xe3, 0x48, 0xd7, 0xd2, 0x4f, 0xa9, 0xf2, 0x02, | ||||
| 	0xba, 0x36, 0x87, 0x65, 0xca, 0x57, 0x10, 0xf6, 0xcc, 0x23, 0xea, 0x18, 0xaa, 0xbc, 0xfa, 0xcb, | ||||
| 	0xdf, 0xad, 0x2f, 0xfc, 0xf9, 0xf7, 0xeb, 0xa5, 0x79, 0x76, 0xf9, 0xbf, 0x09, 0x58, 0x9a, 0x39, | ||||
| 	0x25, 0xcc, 0x6a, 0x59, 0xdb, 0x31, 0x9c, 0x91, 0x88, 0xc0, 0xb9, 0x2a, 0xa0, 0x63, 0x65, 0x5b, | ||||
| 	0x4e, 0x0d, 0x29, 0x44, 0x72, 0x94, 0xbb, 0x73, 0x39, 0xe4, 0x8d, 0x27, 0x74, 0x81, 0xd8, 0x2c, | ||||
| 	0x72, 0x1b, 0x96, 0xfa, 0xb8, 0x8f, 0xd4, 0xed, 0x19, 0x8e, 0x7d, 0x64, 0x1e, 0xcb, 0xe8, 0x5a, | ||||
| 	0x8e, 0xd3, 0x59, 0xe7, 0x40, 0x52, 0x14, 0x02, 0x35, 0x8e, 0xff, 0x2a, 0xf9, 0xe3, 0x00, 0xd2, | ||||
| 	0xec, 0x16, 0x2a, 0xcf, 0x41, 0xba, 0xda, 0x6c, 0xd5, 0xd1, 0x25, 0x2e, 0xe0, 0x2e, 0x2e, 0xf1, | ||||
| 	0xa5, 0x33, 0x06, 0xf3, 0x31, 0xe5, 0x2a, 0x64, 0xf7, 0xdb, 0xdb, 0x7b, 0x3b, 0xcc, 0x0d, 0x2e, | ||||
| 	0x22, 0x7b, 0x25, 0x64, 0x0b, 0xe3, 0xca, 0x17, 0xe4, 0xf6, 0xe6, 0x43, 0x86, 0xfa, 0x9f, 0x24, | ||||
| 	0x2c, 0x11, 0x56, 0x1b, 0xba, 0x7e, 0xc7, 0xb1, 0x4c, 0x63, 0xa2, 0x74, 0x20, 0x8f, 0xf6, 0xf5, | ||||
| 	0xcd, 0x29, 0xe7, 0xde, 0x78, 0x4c, 0x02, 0x89, 0xa4, 0x82, 0x51, 0x2d, 0x90, 0x24, 0x91, 0x12, | ||||
| 	0x0c, 0x34, 0x99, 0x3e, 0xb5, 0xf4, 0xc9, 0x79, 0x99, 0xac, 0x2e, 0xeb, 0x50, 0x22, 0xa0, 0xbc, | ||||
| 	0xea, 0xd2, 0xef, 0xf5, 0x74, 0xdf, 0xa7, 0xc3, 0x91, 0x2f, 0x32, 0x59, 0x1a, 0xab, 0x2e, 0xfd, | ||||
| 	0x9e, 0x26, 0x49, 0xca, 0x9b, 0x90, 0x3d, 0x43, 0xb3, 0x9d, 0x33, 0x99, 0xac, 0xce, 0xd7, 0x2b, | ||||
| 	0xb1, 0xea, 0x07, 0x2c, 0x47, 0xcd, 0x2d, 0x96, 0x6d, 0x6b, 0xab, 0xdd, 0x6a, 0x04, 0xdb, 0x2a, | ||||
| 	0xf9, 0x6d, 0xbb, 0xe5, 0xd8, 0xcc, 0x75, 0xa1, 0xdd, 0xea, 0x6d, 0x6a, 0xcd, 0xed, 0x3d, 0xc2, | ||||
| 	0xb6, 0xf6, 0x12, 0x42, 0x4a, 0x21, 0x64, 0x53, 0x37, 0x2d, 0x56, 0x40, 0x5d, 0x81, 0x94, 0xd6, | ||||
| 	0xc2, 0xc8, 0x5c, 0x2e, 0x21, 0xbb, 0x18, 0xb2, 0x35, 0x7b, 0x12, 0x79, 0xf5, 0xfc, 0xbc, 0xea, | ||||
| 	0x7b, 0x50, 0xdc, 0x1b, 0xf5, 0xf1, 0x66, 0x0a, 0x0f, 0x51, 0xae, 0x61, 0x68, 0xd1, 0x5d, 0xdd, | ||||
| 	0xb2, 0xa8, 0x65, 0x7a, 0x43, 0x59, 0x63, 0x4f, 0x93, 0xb0, 0x30, 0x78, 0xf2, 0xbd, 0x94, 0xf5, | ||||
| 	0x8b, 0x10, 0x50, 0x7f, 0x06, 0x2b, 0x38, 0x8b, 0xaf, 0x63, 0xa2, 0x0e, 0x52, 0xf3, 0x06, 0x14, | ||||
| 	0x8d, 0x80, 0xd4, 0x33, 0xfb, 0xc2, 0x15, 0xab, 0x2b, 0x78, 0x91, 0x0a, 0x21, 0xb4, 0x59, 0x27, | ||||
| 	0x85, 0x10, 0xd4, 0xec, 0x33, 0x3b, 0x47, 0x08, 0x65, 0xd3, 0x67, 0xaa, 0x8b, 0x08, 0x4d, 0x75, | ||||
| 	0x10, 0xc2, 0x68, 0xb8, 0x8b, 0x79, 0x7a, 0xcf, 0xf4, 0xf1, 0x7a, 0xf4, 0x45, 0xf2, 0xcd, 0x90, | ||||
| 	0x1c, 0x23, 0xd4, 0x70, 0xac, 0xbe, 0x9f, 0x04, 0xd8, 0xd5, 0xbd, 0x13, 0x39, 0x35, 0x96, 0x29, | ||||
| 	0x61, 0x53, 0x72, 0x5e, 0x71, 0xbc, 0x1b, 0x80, 0x48, 0x84, 0x57, 0xde, 0x08, 0xb2, 0xaf, 0xa8, | ||||
| 	0x19, 0xe2, 0x05, 0xe5, 0x5c, 0x71, 0x69, 0x77, 0xb6, 0x30, 0x60, 0x17, 0x91, 0xba, 0x2e, 0xf7, | ||||
| 	0x22, 0xbc, 0x88, 0xf8, 0x89, 0xbd, 0x4a, 0x3e, 0xb4, 0x59, 0x66, 0xa2, 0xe7, 0xe3, 0x26, 0x99, | ||||
| 	0xdb, 0xd0, 0xad, 0x05, 0x12, 0xc9, 0x55, 0x4b, 0xb0, 0xec, 0xe2, 0x35, 0xc3, 0x55, 0xf7, 0x3c, | ||||
| 	0xce, 0x56, 0xff, 0x86, 0x7b, 0xd0, 0xec, 0x68, 0x3b, 0xf2, 0xb4, 0xeb, 0x90, 0x3d, 0xd2, 0x87, | ||||
| 	0xa6, 0x35, 0x91, 0xd7, 0xec, 0xd5, 0xb8, 0x29, 0x22, 0x7c, 0x45, 0xeb, 0xf7, 0xb1, 0x54, 0xf3, | ||||
| 	0x36, 0xb9, 0x0c, 0x91, 0xb2, 0x3c, 0x25, 0x8f, 0x0f, 0x6d, 0x4c, 0xbd, 0x41, 0x4a, 0xe6, 0x23, | ||||
| 	0x16, 0x4c, 0x5c, 0xdd, 0x0e, 0xad, 0x15, 0x03, 0xb6, 0x0b, 0x18, 0x51, 0xe9, 0x99, 0x3e, 0x91, | ||||
| 	0xf6, 0x06, 0x43, 0x4c, 0xc0, 0x39, 0xd1, 0x41, 0xd0, 0x3e, 0x9a, 0xcc, 0xa2, 0xe5, 0x97, 0xad, | ||||
| 	0x87, 0x48, 0xb8, 0x08, 0x93, 0xa1, 0x74, 0xf9, 0x6d, 0x1e, 0x52, 0x22, 0xd6, 0x53, 0x45, 0xba, | ||||
| 	0xd7, 0x61, 0x69, 0xc6, 0xce, 0x47, 0x6a, 0xa1, 0x66, 0x67, 0xff, 0xcd, 0x52, 0x5a, 0x7e, 0x7d, | ||||
| 	0xb7, 0x94, 0x55, 0xff, 0x8d, 0xa5, 0x59, 0xc7, 0xe1, 0xd7, 0x8a, 0xed, 0x6a, 0x7c, 0xef, 0x99, | ||||
| 	0xe3, 0x9d, 0xac, 0xe1, 0x58, 0xd2, 0x67, 0x62, 0x8b, 0x81, 0x48, 0x0b, 0x4b, 0xd4, 0x1c, 0x4e, | ||||
| 	0x42, 0x41, 0x0c, 0xaf, 0x05, 0x51, 0xd5, 0xf4, 0x46, 0x88, 0xe3, 0xdb, 0xba, 0x44, 0x40, 0x90, | ||||
| 	0x98, 0x24, 0x6b, 0x6c, 0x46, 0xe3, 0x43, 0xbc, 0xa6, 0x03, 0xda, 0x17, 0x98, 0x34, 0xc7, 0x2c, | ||||
| 	0x85, 0x54, 0x06, 0x53, 0xeb, 0xd8, 0x9a, 0x05, 0x3a, 0x57, 0x21, 0xb5, 0x5b, 0xeb, 0x60, 0xdc, | ||||
| 	0x59, 0xc1, 0xa8, 0x51, 0x08, 0xc8, 0x48, 0x62, 0x9c, 0xbd, 0x7a, 0x07, 0xc3, 0xcd, 0x0c, 0x07, | ||||
| 	0x49, 0xe5, 0x34, 0x0b, 0x27, 0xea, 0x6f, 0x12, 0x90, 0x15, 0x59, 0x26, 0xd6, 0x62, 0x0d, 0x16, | ||||
| 	0x83, 0xea, 0x47, 0xa4, 0xbe, 0x17, 0x1f, 0x9f, 0xa6, 0x2a, 0x32, 0xeb, 0x89, 0x73, 0x0c, 0xe4, | ||||
| 	0xca, 0x6f, 0x41, 0x71, 0x9a, 0xf1, 0x54, 0xa7, 0xf8, 0x53, 0x28, 0x30, 0x47, 0x09, 0x72, 0xf5, | ||||
| 	0x06, 0x64, 0x45, 0x26, 0x94, 0x57, 0xfd, 0xbc, 0x9c, 0x29, 0x91, 0x18, 0xe9, 0x16, 0x45, 0x9e, | ||||
| 	0x0d, 0x9a, 0xb6, 0xf5, 0xf3, 0xdd, 0x91, 0x04, 0x70, 0xf5, 0x36, 0xa4, 0x3b, 0x14, 0x35, 0x3c, | ||||
| 	0x0f, 0x8b, 0x36, 0x86, 0x9e, 0x28, 0xb2, 0xc9, 0x12, 0xa1, 0x4f, 0x31, 0x62, 0x65, 0x19, 0x0b, | ||||
| 	0xe3, 0x19, 0x6e, 0x9e, 0x8e, 0xfe, 0x16, 0xf4, 0xad, 0xec, 0x5b, 0xdd, 0x85, 0xe2, 0x01, 0x35, | ||||
| 	0x8f, 0x07, 0x3e, 0x9e, 0x18, 0x53, 0xf4, 0x2a, 0xa4, 0x47, 0x34, 0x5c, 0xfc, 0x6a, 0xac, 0xeb, | ||||
| 	0x20, 0x9f, 0x70, 0x14, 0xbb, 0x90, 0x67, 0x5c, 0x5a, 0x3e, 0x15, 0xc8, 0x91, 0xfa, 0xc7, 0x24, | ||||
| 	0x2c, 0x37, 0x3d, 0x6f, 0xac, 0x63, 0x19, 0x2e, 0xa3, 0xe0, 0x0f, 0x66, 0xdb, 0x88, 0x1b, 0xb1, | ||||
| 	0x16, 0xce, 0x88, 0xcc, 0xb6, 0x12, 0x32, 0x72, 0x25, 0xc3, 0xc8, 0xa5, 0x3e, 0x4c, 0x04, 0x3d, | ||||
| 	0xc4, 0xf5, 0xa9, 0x7b, 0x53, 0x5e, 0x45, 0x27, 0xba, 0x34, 0xad, 0x89, 0xee, 0xd9, 0x27, 0xb6, | ||||
| 	0x73, 0x66, 0x63, 0xa2, 0xc5, 0x9e, 0xa2, 0xd5, 0x38, 0x40, 0x4f, 0xbb, 0x8c, 0x20, 0x65, 0x06, | ||||
| 	0x44, 0xa8, 0x4d, 0xcf, 0x98, 0xa6, 0x4e, 0xa3, 0x55, 0x6f, 0xb6, 0xee, 0x60, 0x7a, 0x7b, 0x54, | ||||
| 	0x53, 0x87, 0x62, 0x3a, 0xb3, 0x8f, 0x71, 0xbb, 0xb3, 0xcd, 0x6e, 0x77, 0x8f, 0x97, 0x8c, 0xcf, | ||||
| 	0x22, 0xea, 0xe2, 0x0c, 0x8a, 0x0d, 0xb0, 0x5e, 0x44, 0x10, 0xcb, 0xa4, 0x08, 0x4a, 0xc7, 0x80, | ||||
| 	0x58, 0x32, 0xc5, 0x00, 0x22, 0x3c, 0xfc, 0x1f, 0x49, 0x28, 0x69, 0x86, 0x41, 0x47, 0x3e, 0xe3, | ||||
| 	0xcb, 0xea, 0x64, 0x17, 0x6f, 0x32, 0xfb, 0x32, 0x29, 0x7b, 0x53, 0x61, 0x6e, 0x71, 0x2b, 0xf6, | ||||
| 	0x1d, 0x69, 0x4e, 0xae, 0x42, 0x1c, 0x8b, 0x6a, 0xfd, 0xa1, 0xe9, 0xb1, 0xb7, 0x05, 0x41, 0x23, | ||||
| 	0xa1, 0xa6, 0xf2, 0xe7, 0x09, 0xb8, 0x18, 0x83, 0x50, 0x5e, 0x87, 0xb4, 0x8b, 0x64, 0x79, 0x3c, | ||||
| 	0x6b, 0x8f, 0xeb, 0xf2, 0x98, 0x28, 0xe1, 0x48, 0x65, 0x1d, 0x40, 0x1f, 0xfb, 0x8e, 0xce, 0xe7, | ||||
| 	0xe7, 0x07, 0x93, 0x23, 0x53, 0x14, 0xe5, 0x00, 0xa3, 0x35, 0x35, 0x5c, 0xd9, 0x28, 0x15, 0x36, | ||||
| 	0x6e, 0xff, 0xbf, 0xab, 0xaf, 0x74, 0xb9, 0x1a, 0x22, 0xd5, 0x95, 0x2b, 0x58, 0xb0, 0xf3, 0x2f, | ||||
| 	0xe6, 0xd1, 0x58, 0x52, 0xe8, 0x7c, 0xd1, 0x45, 0xc2, 0xbf, 0x99, 0xa3, 0xe8, 0xd6, 0x71, 0xe0, | ||||
| 	0x28, 0xf8, 0xa9, 0x7e, 0x84, 0xb9, 0xa8, 0x71, 0xcf, 0xa7, 0xae, 0xad, 0x5b, 0x35, 0x4d, 0x69, | ||||
| 	0x4c, 0x45, 0x48, 0x61, 0xed, 0x4b, 0xb1, 0xbd, 0x7f, 0x28, 0x51, 0xa9, 0x69, 0x31, 0x31, 0x12, | ||||
| 	0xab, 0x83, 0xb1, 0x6b, 0xc9, 0x77, 0x24, 0x5e, 0x1d, 0xec, 0x91, 0x6d, 0xc2, 0x68, 0xec, 0x11, | ||||
| 	0x26, 0x88, 0x48, 0xa9, 0xc7, 0x3f, 0x00, 0x4e, 0x4d, 0xf0, 0xf5, 0x47, 0xa5, 0x57, 0x01, 0xa2, | ||||
| 	0x55, 0xe3, 0x51, 0x65, 0x6a, 0x9b, 0xdd, 0xee, 0x36, 0x5e, 0x0f, 0x5e, 0x2d, 0x47, 0x2c, 0x4e, | ||||
| 	0x56, 0xff, 0x90, 0x80, 0x5c, 0x4d, 0x93, 0x59, 0x65, 0x13, 0x4a, 0x3c, 0x96, 0x18, 0xd4, 0xf5, | ||||
| 	0x7b, 0xf4, 0xde, 0xc8, 0x74, 0x27, 0x32, 0x1c, 0x9c, 0x5f, 0x76, 0x2e, 0x33, 0xa9, 0x1a, 0x0a, | ||||
| 	0x35, 0xb8, 0x8c, 0x42, 0xa0, 0x48, 0xa5, 0x89, 0x3d, 0x43, 0x0f, 0x82, 0xf3, 0xfa, 0xf9, 0x5b, | ||||
| 	0x21, 0x4a, 0xb2, 0x68, 0x8c, 0x0d, 0x6f, 0xa0, 0xa4, 0xa6, 0x7b, 0xea, 0x3e, 0x5c, 0x6c, 0xbb, | ||||
| 	0xc6, 0x00, 0x8b, 0x23, 0x31, 0xa9, 0x5c, 0xf2, 0x6d, 0x58, 0xf3, 0xb1, 0x08, 0xea, 0x0d, 0x4c, | ||||
| 	0xcf, 0x67, 0xcf, 0x97, 0xe8, 0x1b, 0xd4, 0x66, 0xfc, 0x1e, 0x7f, 0x66, 0x14, 0xcf, 0x9e, 0xe4, | ||||
| 	0x0a, 0xc3, 0x6c, 0x09, 0x08, 0x09, 0x10, 0xdb, 0x0c, 0xa0, 0xfe, 0x08, 0x4a, 0x75, 0xd3, 0x1b, | ||||
| 	0xe9, 0x3e, 0xea, 0x96, 0x3d, 0x8c, 0x72, 0x07, 0x4a, 0x03, 0x8a, 0x35, 0xec, 0x21, 0xd5, 0x31, | ||||
| 	0x0f, 0x52, 0xd7, 0x74, 0xfa, 0x4f, 0xb4, 0x0f, 0x2b, 0xa1, 0x54, 0x87, 0x0b, 0xa9, 0x5f, 0x60, | ||||
| 	0xd6, 0x66, 0xef, 0x3a, 0x52, 0xef, 0x2b, 0x70, 0xc1, 0xb3, 0xf5, 0x91, 0x37, 0x70, 0xfc, 0x9e, | ||||
| 	0x69, 0xfb, 0xec, 0x21, 0xd3, 0x92, 0xf5, 0x6f, 0x29, 0x60, 0x34, 0x25, 0x1d, 0xe3, 0xb1, 0x72, | ||||
| 	0x42, 0xe9, 0xa8, 0xe7, 0x58, 0xfd, 0x5e, 0xc0, 0x14, 0x8f, 0x97, 0x88, 0x66, 0x9c, 0xb6, 0xd5, | ||||
| 	0xef, 0x06, 0x74, 0xa5, 0x0a, 0xeb, 0x96, 0x73, 0xdc, 0x43, 0xcb, 0x5c, 0xbc, 0xeb, 0xbd, 0x23, | ||||
| 	0xc7, 0xed, 0x79, 0x96, 0x73, 0x86, 0x1f, 0x16, 0xfe, 0x51, 0x37, 0x68, 0x2e, 0xca, 0x88, 0x6a, | ||||
| 	0x08, 0xd0, 0xa6, 0xe3, 0x76, 0x91, 0xb7, 0x19, 0x20, 0x58, 0x6a, 0x8f, 0xcc, 0xf6, 0x4d, 0xe3, | ||||
| 	0x24, 0x48, 0xed, 0x21, 0x75, 0x17, 0x89, 0x18, 0xdd, 0x96, 0xa8, 0x45, 0x0d, 0xbe, 0xc9, 0x1c, | ||||
| 	0x95, 0xe1, 0xa8, 0x62, 0x40, 0x64, 0x20, 0xf5, 0xdb, 0x90, 0xef, 0x58, 0xba, 0xc1, 0x9f, 0x88, | ||||
| 	0x59, 0xc5, 0x8f, 0x69, 0x8b, 0x9d, 0x1c, 0x5a, 0x2d, 0x42, 0x5a, 0x9e, 0x4c, 0x93, 0xd4, 0xf7, | ||||
| 	0x31, 0xd1, 0x13, 0xc7, 0xf1, 0xf1, 0x92, 0x5e, 0x83, 0xac, 0xa1, 0xf7, 0x02, 0x77, 0x2f, 0x56, | ||||
| 	0xf3, 0xe8, 0x16, 0x99, 0x9a, 0x76, 0x97, 0x4e, 0x48, 0xc6, 0xd0, 0xf1, 0x8f, 0xa5, 0x3c, 0x44, | ||||
| 	0x30, 0x27, 0xe5, 0xdb, 0x51, 0x14, 0x29, 0x0f, 0xbd, 0x18, 0x29, 0x04, 0x85, 0xd9, 0x3f, 0x46, | ||||
| 	0xb5, 0xa2, 0x04, 0xf5, 0x06, 0xba, 0x37, 0x10, 0x05, 0x62, 0x75, 0x19, 0x91, 0x20, 0x90, 0x5b, | ||||
| 	0x48, 0x25, 0x20, 0xd0, 0xec, 0x5b, 0xfd, 0x7b, 0x02, 0x0a, 0x6c, 0x60, 0x1e, 0x99, 0x06, 0xcb, | ||||
| 	0x2d, 0x4f, 0x1f, 0x17, 0x31, 0x30, 0x18, 0x9e, 0x2b, 0x17, 0xc5, 0x03, 0x43, 0xad, 0x4b, 0x08, | ||||
| 	0xa3, 0x29, 0xef, 0x60, 0x48, 0xe4, 0xb9, 0x4d, 0x86, 0x44, 0xf5, 0xcb, 0xb3, 0xa0, 0xec, 0x6c, | ||||
| 	0xa4, 0x1c, 0xdf, 0xc4, 0x68, 0x75, 0xfc, 0x68, 0x8a, 0x64, 0x9a, 0xc4, 0x9e, 0xb7, 0x0d, 0x9b, | ||||
| 	0x9f, 0x86, 0x7c, 0xde, 0xae, 0xb5, 0x08, 0x52, 0xd4, 0xbf, 0x26, 0x60, 0xa9, 0x61, 0x1b, 0xee, | ||||
| 	0x84, 0x87, 0x14, 0xb6, 0x83, 0x6b, 0x90, 0xc7, 0x02, 0xda, 0x9b, 0x78, 0xd8, 0x65, 0x06, 0xaf, | ||||
| 	0x67, 0x21, 0x41, 0x69, 0x42, 0x1e, 0x83, 0xa7, 0xe3, 0x9a, 0xfe, 0x60, 0x28, 0x2b, 0xc9, 0xf8, | ||||
| 	0x30, 0x36, 0xad, 0xb3, 0xa2, 0x05, 0x22, 0x24, 0x92, 0x0e, 0x02, 0x57, 0x8a, 0x2f, 0x96, 0x07, | ||||
| 	0x2e, 0xec, 0x79, 0x2d, 0x6c, 0x6f, 0xb0, 0x46, 0xec, 0xb1, 0xae, 0x81, 0xdb, 0x81, 0xed, 0x9f, | ||||
| 	0xa4, 0xb1, 0x4e, 0x48, 0x55, 0x21, 0x1f, 0x2a, 0x63, 0x6f, 0x96, 0x5a, 0xa3, 0xdb, 0xbb, 0xb9, | ||||
| 	0x71, 0xab, 0x77, 0xa7, 0xb6, 0x83, 0x61, 0x4c, 0xe4, 0xcd, 0x3f, 0xa1, 0x4d, 0x3b, 0xba, 0x8d, | ||||
| 	0x9d, 0x4d, 0xd0, 0xe7, 0xa1, 0x57, 0xb8, 0x78, 0xd5, 0x82, 0x42, 0x28, 0x2d, 0xbc, 0x82, 0xdd, | ||||
| 	0x3e, 0x56, 0x08, 0x31, 0x56, 0x7c, 0x21, 0x34, 0xf5, 0x76, 0x9b, 0x3a, 0xf7, 0xed, 0x36, 0xfd, | ||||
| 	0xb5, 0xbc, 0xdd, 0xbe, 0xfc, 0x45, 0x0a, 0xf2, 0x61, 0xdf, 0xc6, 0x5c, 0x86, 0xd5, 0x25, 0x0b, | ||||
| 	0xa2, 0xa3, 0x0e, 0xe9, 0x2d, 0x5e, 0x91, 0xe4, 0xb5, 0xed, 0xed, 0x76, 0x4d, 0x63, 0x4f, 0x9f, | ||||
| 	0xef, 0x88, 0xc2, 0x25, 0x04, 0x68, 0x78, 0x69, 0xd9, 0xa1, 0xf7, 0x15, 0x35, 0x2a, 0x5c, 0xee, | ||||
| 	0xcb, 0xbe, 0x3d, 0x44, 0x05, 0x55, 0xcb, 0x0b, 0x90, 0xd3, 0xba, 0xdd, 0xe6, 0x9d, 0x16, 0x6a, | ||||
| 	0x7a, 0x90, 0x28, 0x3f, 0x83, 0xa0, 0x0b, 0x91, 0x2a, 0x4c, 0xb8, 0xc7, 0x36, 0x6a, 0x62, 0xa8, | ||||
| 	0x5a, 0xad, 0xd1, 0x61, 0xf3, 0xdd, 0x4f, 0xce, 0xa3, 0x78, 0xba, 0xe6, 0x8f, 0x61, 0xf9, 0x0e, | ||||
| 	0x69, 0x74, 0x34, 0xc2, 0x66, 0x7c, 0x90, 0x9c, 0x5b, 0x57, 0xc7, 0xa5, 0xd8, 0xc9, 0xb3, 0x39, | ||||
| 	0xd7, 0x83, 0x77, 0xdc, 0xfb, 0xa9, 0xb2, 0x82, 0x98, 0xe5, 0xa8, 0x59, 0xc5, 0xfd, 0x9d, 0xb0, | ||||
| 	0xd9, 0xba, 0xbb, 0x1a, 0xd9, 0xe5, 0x6a, 0x52, 0x73, 0xb3, 0x75, 0xd9, 0x13, 0x02, 0xd3, 0x82, | ||||
| 	0xd6, 0x91, 0xbd, 0x56, 0x8b, 0x5b, 0x97, 0x9e, 0xb3, 0x8e, 0x8c, 0x6d, 0x9b, 0x61, 0xae, 0x63, | ||||
| 	0x0a, 0x6b, 0xef, 0x74, 0xb6, 0x1b, 0xbb, 0x8d, 0xd2, 0x83, 0xf4, 0xdc, 0x82, 0x6a, 0xce, 0x70, | ||||
| 	0x64, 0x51, 0x5f, 0x98, 0xd7, 0xdd, 0xda, 0xdb, 0xe5, 0xcf, 0xcc, 0xf7, 0x33, 0xf3, 0x13, 0x0e, | ||||
| 	0xc6, 0x7e, 0x9f, 0x95, 0x8a, 0xd7, 0xc2, 0xda, 0xed, 0x41, 0x46, 0xa4, 0xcc, 0x10, 0x23, 0x0a, | ||||
| 	0x37, 0xa6, 0x87, 0x34, 0x7e, 0x28, 0x5e, 0xa4, 0xef, 0x67, 0xe7, 0xf4, 0x10, 0xfa, 0x1e, 0x46, | ||||
| 	0x41, 0x2c, 0xef, 0xc2, 0x67, 0xa8, 0x90, 0xf5, 0xf2, 0x8f, 0x21, 0x17, 0x04, 0x0c, 0xdc, 0x9d, | ||||
| 	0xec, 0x41, 0x9b, 0xdc, 0x6d, 0x10, 0x3c, 0x7a, 0xbe, 0x3b, 0x01, 0xe7, 0xc0, 0x71, 0xd1, 0xbb, | ||||
| 	0x70, 0x19, 0x8b, 0x3b, 0x5a, 0x4b, 0xbb, 0x83, 0x00, 0xf9, 0xce, 0x15, 0x00, 0xa4, 0xd7, 0x97, | ||||
| 	0x4b, 0x72, 0x82, 0x50, 0x67, 0x75, 0xed, 0xe1, 0xa7, 0xeb, 0x0b, 0x1f, 0xe3, 0xef, 0xf3, 0x4f, | ||||
| 	0xd7, 0x13, 0xf7, 0x3f, 0x5b, 0x4f, 0x3c, 0xc4, 0xdf, 0x5f, 0xf0, 0xf7, 0x4f, 0xfc, 0x1d, 0x66, | ||||
| 	0x79, 0xfd, 0xf2, 0xc6, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x79, 0xcb, 0x88, 0x96, 0x53, 0x1d, | ||||
| 	0x00, 0x00, | ||||
| 	// 3132 bytes of a gzipped FileDescriptorProto
 | ||||
| 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x58, 0xcb, 0x6f, 0x1b, 0xd7, | ||||
| 	0xd5, 0x37, 0x9f, 0x22, 0x0f, 0x29, 0x89, 0x1e, 0x3b, 0x8e, 0xcc, 0x28, 0xb2, 0xbf, 0x49, 0x9c, | ||||
| 	0x38, 0x8f, 0x8f, 0x89, 0x95, 0x7c, 0x1f, 0xdc, 0x04, 0xad, 0x33, 0x7c, 0xc8, 0x62, 0x2d, 0x91, | ||||
| 	0xc4, 0x25, 0x25, 0x23, 0x28, 0x50, 0x62, 0x34, 0xbc, 0x12, 0x27, 0x1a, 0xce, 0xb0, 0x33, 0x43, | ||||
| 	0xc9, 0x6c, 0x51, 0xc0, 0xe9, 0xa6, 0x45, 0x56, 0xdd, 0x17, 0x41, 0x50, 0xb4, 0xe8, 0xae, 0xeb, | ||||
| 	0x02, 0x5d, 0x79, 0xe9, 0x65, 0x8a, 0x02, 0x45, 0xd0, 0x02, 0x41, 0x93, 0xfe, 0x03, 0x01, 0xba, | ||||
| 	0xc8, 0xa2, 0x5d, 0xf4, 0xdc, 0xc7, 0x0c, 0x87, 0xf4, 0x58, 0x71, 0x9a, 0x2c, 0x08, 0xce, 0x3d, | ||||
| 	0xe7, 0x77, 0xce, 0xbd, 0xf7, 0xdc, 0x73, 0xcf, 0xe3, 0x42, 0xc1, 0x9f, 0x8e, 0xa9, 0x57, 0x19, | ||||
| 	0xbb, 0x8e, 0xef, 0x28, 0xca, 0xc0, 0x31, 0x8e, 0xa9, 0x5b, 0xf1, 0x4e, 0x75, 0x77, 0x74, 0x6c, | ||||
| 	0xfa, 0x95, 0x93, 0x1b, 0xe5, 0xcb, 0xbe, 0x39, 0xa2, 0x9e, 0xaf, 0x8f, 0xc6, 0xaf, 0x85, 0x5f, | ||||
| 	0x02, 0x5e, 0x7e, 0x7a, 0x30, 0x71, 0x75, 0xdf, 0x74, 0xec, 0xd7, 0x82, 0x0f, 0xc9, 0xb8, 0x78, | ||||
| 	0xe4, 0x1c, 0x39, 0xfc, 0xf3, 0x35, 0xf6, 0x25, 0xa8, 0xea, 0x15, 0x58, 0xda, 0xa7, 0xae, 0x87, | ||||
| 	0x30, 0xe5, 0x22, 0x64, 0x4c, 0x7b, 0x40, 0xef, 0xad, 0x25, 0xae, 0x26, 0xae, 0xa7, 0x89, 0x18, | ||||
| 	0xa8, 0xbf, 0x4e, 0x40, 0x41, 0xb3, 0x6d, 0xc7, 0xe7, 0xba, 0x3c, 0x45, 0x81, 0xb4, 0xad, 0x8f, | ||||
| 	0x28, 0x07, 0xe5, 0x09, 0xff, 0x56, 0x6a, 0x90, 0xb5, 0xf4, 0x03, 0x6a, 0x79, 0x6b, 0xc9, 0xab, | ||||
| 	0xa9, 0xeb, 0x85, 0xcd, 0x57, 0x2a, 0x8f, 0xae, 0xb9, 0x12, 0x51, 0x52, 0xd9, 0xe1, 0xe8, 0x86, | ||||
| 	0xed, 0xbb, 0x53, 0x22, 0x45, 0xcb, 0xdf, 0x81, 0x42, 0x84, 0xac, 0x94, 0x20, 0x75, 0x4c, 0xa7, | ||||
| 	0x72, 0x1a, 0xf6, 0xc9, 0xd6, 0x77, 0xa2, 0x5b, 0x13, 0x8a, 0x93, 0x30, 0x9a, 0x18, 0xbc, 0x95, | ||||
| 	0xbc, 0x99, 0x50, 0xdf, 0x85, 0x3c, 0xa1, 0x9e, 0x33, 0x71, 0x0d, 0xea, 0x29, 0x2f, 0x41, 0xde, | ||||
| 	0xd6, 0x6d, 0xa7, 0x6f, 0x8c, 0x27, 0x1e, 0x17, 0x4f, 0x55, 0x8b, 0x9f, 0x7f, 0x7a, 0x25, 0xd7, | ||||
| 	0x42, 0x62, 0xad, 0xb3, 0xe7, 0x91, 0x1c, 0x63, 0xd7, 0x90, 0xab, 0xfc, 0x0f, 0x14, 0x47, 0x74, | ||||
| 	0xe4, 0xb8, 0xd3, 0xfe, 0xc1, 0xd4, 0xa7, 0x1e, 0x57, 0x9c, 0x22, 0x05, 0x41, 0xab, 0x32, 0x92, | ||||
| 	0xfa, 0xcb, 0x04, 0x5c, 0x0c, 0x74, 0x13, 0xfa, 0xa3, 0x89, 0xe9, 0xd2, 0x11, 0xb5, 0x7d, 0x4f, | ||||
| 	0xf9, 0x3f, 0xdc, 0xb3, 0x39, 0x32, 0x7d, 0x31, 0x47, 0x61, 0xf3, 0xd9, 0xb8, 0x3d, 0x87, 0xab, | ||||
| 	0x22, 0x12, 0xac, 0x68, 0x50, 0x74, 0xa9, 0x47, 0xdd, 0x13, 0x61, 0x09, 0x3e, 0xe5, 0x57, 0x0a, | ||||
| 	0xcf, 0x89, 0xa8, 0x5b, 0x90, 0xeb, 0x58, 0xba, 0x7f, 0xe8, 0xb8, 0x23, 0x45, 0x85, 0xa2, 0xee, | ||||
| 	0x1a, 0x43, 0xd3, 0xa7, 0x86, 0x3f, 0x71, 0x83, 0x53, 0x99, 0xa3, 0x29, 0x97, 0x20, 0xe9, 0x88, | ||||
| 	0x89, 0xf2, 0xd5, 0x2c, 0x5a, 0x22, 0xd9, 0xee, 0x12, 0xa4, 0xa8, 0x6f, 0xc3, 0xf9, 0x8e, 0x35, | ||||
| 	0x39, 0x32, 0xed, 0x3a, 0xf5, 0x0c, 0xd7, 0x1c, 0x33, 0xed, 0xec, 0x78, 0x99, 0xf3, 0x05, 0xc7, | ||||
| 	0xcb, 0xbe, 0xc3, 0x23, 0x4f, 0xce, 0x8e, 0x5c, 0xfd, 0x79, 0x12, 0xce, 0x37, 0x6c, 0x14, 0xa6, | ||||
| 	0x51, 0xe9, 0x6b, 0xb0, 0x42, 0x39, 0xb1, 0x7f, 0x22, 0x9c, 0x4a, 0xea, 0x59, 0x16, 0xd4, 0xc0, | ||||
| 	0xd3, 0x9a, 0x0b, 0xfe, 0x72, 0x23, 0x6e, 0xfb, 0x8f, 0x68, 0x8f, 0xf3, 0x1a, 0xa5, 0x01, 0x4b, | ||||
| 	0x63, 0xbe, 0x09, 0x6f, 0x2d, 0xc5, 0x75, 0x5d, 0x8b, 0xd3, 0xf5, 0xc8, 0x3e, 0xab, 0xe9, 0x87, | ||||
| 	0x9f, 0x5e, 0x39, 0x47, 0x02, 0xd9, 0x6f, 0xe2, 0x7c, 0xff, 0x48, 0xc0, 0x6a, 0xcb, 0x19, 0xcc, | ||||
| 	0xd9, 0xa1, 0x0c, 0xb9, 0xa1, 0xe3, 0xf9, 0x91, 0x8b, 0x12, 0x8e, 0x95, 0x9b, 0x90, 0x1b, 0xcb, | ||||
| 	0xe3, 0x93, 0xa7, 0xbf, 0x1e, 0xbf, 0x64, 0x81, 0x21, 0x21, 0x5a, 0x79, 0x1b, 0xf2, 0x6e, 0xe0, | ||||
| 	0x13, 0xb8, 0xdb, 0x27, 0x70, 0x9c, 0x19, 0x5e, 0xf9, 0x2e, 0x64, 0xc5, 0x21, 0xac, 0xa5, 0xb9, | ||||
| 	0xe4, 0xb5, 0x27, 0xb2, 0x39, 0x91, 0x42, 0xea, 0x27, 0x09, 0x28, 0x11, 0xfd, 0xd0, 0xdf, 0xa5, | ||||
| 	0xa3, 0x03, 0xea, 0x76, 0xf1, 0x22, 0xe3, 0xfd, 0xb9, 0x84, 0xe7, 0x48, 0xf5, 0x01, 0x75, 0xf9, | ||||
| 	0x26, 0x73, 0x44, 0x8e, 0x94, 0x3d, 0xe6, 0xe4, 0xba, 0x31, 0xd4, 0x0f, 0x4c, 0xcb, 0xf4, 0xa7, | ||||
| 	0x7c, 0x9b, 0x2b, 0xf1, 0xa7, 0xbc, 0xa8, 0x13, 0x17, 0x3f, 0x13, 0x24, 0x73, 0x6a, 0x94, 0x35, | ||||
| 	0x58, 0xc2, 0x58, 0xe7, 0xe9, 0x47, 0x94, 0xef, 0x3e, 0x4f, 0x82, 0x21, 0xba, 0x72, 0x31, 0x2a, | ||||
| 	0xa7, 0x14, 0x60, 0x69, 0xaf, 0x75, 0xa7, 0xd5, 0xbe, 0xdb, 0x2a, 0x9d, 0x53, 0x56, 0xa1, 0xb0, | ||||
| 	0xd7, 0x22, 0x0d, 0xad, 0xb6, 0xad, 0x55, 0x77, 0x1a, 0xa5, 0x84, 0xb2, 0x8c, 0xe1, 0x22, 0x1c, | ||||
| 	0x26, 0xd5, 0x8f, 0x12, 0x00, 0xec, 0x00, 0xe5, 0xa6, 0xde, 0x82, 0x0c, 0xc6, 0x53, 0x5f, 0x1c, | ||||
| 	0xdc, 0xca, 0xe6, 0xf3, 0x71, 0xab, 0x9e, 0xc1, 0x2b, 0xec, 0x8f, 0x12, 0x21, 0x12, 0x5d, 0x61, | ||||
| 	0x72, 0x71, 0x85, 0x19, 0x8e, 0x9c, 0x5f, 0x5a, 0x0e, 0xd2, 0x75, 0xf6, 0x95, 0x50, 0xf2, 0x90, | ||||
| 	0xc1, 0x35, 0xd5, 0xdf, 0x2d, 0x25, 0xd1, 0xf9, 0x8a, 0xf5, 0x66, 0xb7, 0xd6, 0x6e, 0xb5, 0x1a, | ||||
| 	0xb5, 0x5e, 0xa3, 0x5e, 0x4a, 0xa9, 0xd7, 0x20, 0xd3, 0x1c, 0xa1, 0x16, 0x65, 0x9d, 0x79, 0xc0, | ||||
| 	0x21, 0x75, 0xa9, 0x6d, 0x04, 0x8e, 0x35, 0x23, 0xa8, 0x1f, 0xa3, 0x92, 0x5d, 0x67, 0x62, 0xfb, | ||||
| 	0xca, 0x66, 0xe4, 0x16, 0xaf, 0x6c, 0x6e, 0xc4, 0x6d, 0x81, 0x03, 0x2b, 0x3d, 0x44, 0xc9, 0x5b, | ||||
| 	0x8e, 0x87, 0x29, 0x7c, 0x45, 0x2e, 0x5d, 0x8e, 0x18, 0xdd, 0xd7, 0xdd, 0x23, 0xea, 0x4b, 0xa3, | ||||
| 	0xcb, 0x91, 0x72, 0x1d, 0x72, 0x78, 0x3a, 0x03, 0xc7, 0xb6, 0xa6, 0xdc, 0xa5, 0x72, 0x22, 0xcc, | ||||
| 	0xe2, 0x39, 0x0c, 0xda, 0x48, 0x23, 0x21, 0x57, 0xd9, 0x86, 0xe2, 0x01, 0x26, 0x93, 0xbe, 0x33, | ||||
| 	0x16, 0x31, 0x2f, 0xf3, 0x78, 0x07, 0x14, 0xab, 0xaa, 0x22, 0xba, 0x2d, 0xc0, 0xa4, 0x70, 0x30, | ||||
| 	0x1b, 0x28, 0x2d, 0x58, 0x39, 0x71, 0xac, 0xc9, 0x88, 0x86, 0xba, 0xb2, 0x5c, 0xd7, 0x8b, 0x8f, | ||||
| 	0xd7, 0xb5, 0xcf, 0xf1, 0x81, 0xb6, 0xe5, 0x93, 0xe8, 0x50, 0xb9, 0x03, 0xcb, 0xfe, 0x68, 0x7c, | ||||
| 	0xe8, 0x85, 0xea, 0x96, 0xb8, 0xba, 0x17, 0xce, 0x30, 0x18, 0x83, 0x07, 0xda, 0x8a, 0x7e, 0x64, | ||||
| 	0x54, 0xfe, 0x59, 0x0a, 0x0a, 0x91, 0x95, 0x2b, 0x5d, 0x28, 0x60, 0x8e, 0x1d, 0xeb, 0x47, 0x3c, | ||||
| 	0x6e, 0xcb, 0xb3, 0xb8, 0xf1, 0x44, 0xbb, 0xae, 0x74, 0x66, 0x82, 0x24, 0xaa, 0x45, 0xfd, 0x30, | ||||
| 	0x09, 0x85, 0x08, 0x53, 0x79, 0x19, 0x72, 0xa4, 0x43, 0x9a, 0xfb, 0x5a, 0xaf, 0x51, 0x3a, 0x57, | ||||
| 	0x5e, 0xff, 0xe0, 0xc3, 0xab, 0x6b, 0x5c, 0x5b, 0x54, 0x41, 0xc7, 0x35, 0x4f, 0x98, 0xeb, 0x5d, | ||||
| 	0x87, 0xa5, 0x00, 0x9a, 0x28, 0x3f, 0x83, 0xd0, 0xa7, 0x17, 0xa1, 0x11, 0x24, 0xe9, 0x6e, 0x6b, | ||||
| 	0x04, 0xbd, 0x2f, 0x19, 0x8f, 0x24, 0xdd, 0xa1, 0xee, 0xd2, 0x81, 0xf2, 0x02, 0x64, 0x25, 0x30, | ||||
| 	0x55, 0x2e, 0x23, 0xf0, 0xd2, 0x22, 0x70, 0x86, 0x23, 0xdd, 0x1d, 0x6d, 0xbf, 0x51, 0x4a, 0xc7, | ||||
| 	0xe3, 0x48, 0xd7, 0xd2, 0x4f, 0xa8, 0xf2, 0x3c, 0xde, 0x13, 0x0e, 0xcb, 0x94, 0x2f, 0x23, 0xec, | ||||
| 	0xa9, 0x47, 0xd4, 0x31, 0x54, 0x79, 0xed, 0x17, 0xbf, 0xd9, 0x38, 0xf7, 0xc7, 0xdf, 0x6e, 0x94, | ||||
| 	0x16, 0xd9, 0xe5, 0x7f, 0x27, 0x60, 0x79, 0xee, 0xc8, 0x31, 0x45, 0x66, 0x6d, 0xc7, 0x70, 0xc6, | ||||
| 	0x22, 0x9c, 0xe7, 0xaa, 0x80, 0x5e, 0x9a, 0x6d, 0x39, 0x35, 0xa4, 0x10, 0xc9, 0x41, 0x3f, 0x98, | ||||
| 	0x4f, 0x48, 0x6f, 0x3c, 0xa1, 0x3f, 0xc5, 0xa6, 0xa4, 0x5b, 0xb0, 0x3c, 0x40, 0x3b, 0x52, 0xb7, | ||||
| 	0x6f, 0x38, 0xf6, 0xa1, 0x79, 0x24, 0x43, 0x75, 0x39, 0x4e, 0x67, 0x9d, 0x03, 0x49, 0x51, 0x08, | ||||
| 	0xd4, 0x38, 0xfe, 0x1b, 0x24, 0xa3, 0xf2, 0x3e, 0x14, 0xa3, 0x1e, 0xaa, 0x3c, 0x0b, 0xe0, 0x99, | ||||
| 	0x3f, 0xa6, 0xb2, 0xbe, 0xe1, 0xd5, 0x10, 0xc9, 0x33, 0x0a, 0xaf, 0x6e, 0x94, 0x17, 0x21, 0x3d, | ||||
| 	0xc2, 0x50, 0xc6, 0xf5, 0x64, 0xaa, 0x17, 0x58, 0x4e, 0xfc, 0xeb, 0xa7, 0x57, 0x0a, 0x8e, 0x57, | ||||
| 	0xd9, 0x32, 0x2d, 0xba, 0x8b, 0x2c, 0xc2, 0x01, 0xea, 0x09, 0xa4, 0x59, 0xa8, 0x50, 0x9e, 0x81, | ||||
| 	0x74, 0xb5, 0xd9, 0xaa, 0xa3, 0xab, 0x9d, 0xc7, 0xd3, 0x59, 0xe6, 0x26, 0x61, 0x0c, 0xe6, 0xbb, | ||||
| 	0xca, 0x15, 0xc8, 0xee, 0xb7, 0x77, 0xf6, 0x76, 0x99, 0x7b, 0x5d, 0x40, 0xf6, 0x6a, 0xc8, 0x16, | ||||
| 	0x46, 0xc3, 0xd5, 0x64, 0x7a, 0xbb, 0x9d, 0xad, 0x2e, 0x3a, 0x95, 0x82, 0xfc, 0x95, 0x90, 0xcf, | ||||
| 	0xd7, 0x5c, 0x3e, 0x2f, 0x4f, 0x35, 0x1f, 0xd2, 0xd5, 0x7f, 0x25, 0x61, 0x99, 0xb0, 0xfa, 0xd6, | ||||
| 	0xf5, 0x3b, 0x8e, 0x65, 0x1a, 0x53, 0xa5, 0x03, 0x79, 0x34, 0xeb, 0xc0, 0x8c, 0xdc, 0xa9, 0xcd, | ||||
| 	0xc7, 0x24, 0xc1, 0x99, 0x54, 0x30, 0xaa, 0x05, 0x92, 0x64, 0xa6, 0x04, 0x83, 0x65, 0x66, 0x40, | ||||
| 	0x2d, 0x7d, 0x7a, 0x56, 0x36, 0xae, 0xcb, 0x5a, 0x9a, 0x08, 0x28, 0xaf, 0x1c, 0xf5, 0x7b, 0x7d, | ||||
| 	0xdd, 0xf7, 0xe9, 0x68, 0xec, 0x8b, 0x6c, 0x9c, 0xc6, 0xca, 0x51, 0xbf, 0xa7, 0x49, 0x92, 0xf2, | ||||
| 	0x26, 0x64, 0x4f, 0xd1, 0x2a, 0xce, 0xa9, 0x4c, 0xb8, 0x67, 0xeb, 0x95, 0x58, 0xf5, 0x03, 0x96, | ||||
| 	0x67, 0x17, 0x16, 0xcb, 0xac, 0xde, 0x6a, 0xb7, 0x1a, 0x81, 0xd5, 0x25, 0xbf, 0x6d, 0xb7, 0x1c, | ||||
| 	0x9b, 0xdd, 0x18, 0x68, 0xb7, 0xfa, 0x5b, 0x5a, 0x73, 0x67, 0x8f, 0x30, 0xcb, 0x5f, 0x44, 0x48, | ||||
| 	0x29, 0x84, 0x6c, 0xe9, 0xa6, 0xc5, 0x8a, 0xc0, 0xcb, 0x90, 0xd2, 0x5a, 0x98, 0x5d, 0xca, 0x25, | ||||
| 	0x64, 0x17, 0x43, 0xb6, 0x66, 0x4f, 0x67, 0x97, 0x69, 0x71, 0x5e, 0xf5, 0x3d, 0x28, 0xee, 0x8d, | ||||
| 	0x07, 0x18, 0x10, 0x84, 0x63, 0x2a, 0x57, 0x31, 0xa2, 0xe9, 0xae, 0x6e, 0x59, 0xd4, 0x32, 0xbd, | ||||
| 	0x91, 0xec, 0x13, 0xa2, 0x24, 0x2c, 0x6e, 0x9e, 0xdc, 0x96, 0xb2, 0x06, 0x13, 0x02, 0xea, 0x4f, | ||||
| 	0x61, 0x15, 0x67, 0xf1, 0x75, 0x2c, 0x36, 0x82, 0xf2, 0x62, 0x13, 0x8a, 0x46, 0x40, 0xea, 0x9b, | ||||
| 	0x03, 0x71, 0x03, 0xaa, 0xab, 0x78, 0x7f, 0x0b, 0x21, 0xb4, 0x59, 0x27, 0x85, 0x10, 0xd4, 0x1c, | ||||
| 	0xb0, 0x7d, 0x8e, 0x11, 0x2a, 0x1c, 0x7a, 0x09, 0xa1, 0xa9, 0x0e, 0x42, 0x18, 0x0d, 0xad, 0x98, | ||||
| 	0xa7, 0xf7, 0x4c, 0x1f, 0x6f, 0xe5, 0x40, 0x14, 0x10, 0x19, 0x92, 0x63, 0x84, 0x1a, 0x73, 0xf0, | ||||
| 	0xf7, 0x93, 0x00, 0x3d, 0xdd, 0x3b, 0x96, 0x53, 0x63, 0xa9, 0x15, 0x36, 0x56, 0x67, 0x15, 0xf8, | ||||
| 	0xbd, 0x00, 0x44, 0x66, 0x78, 0xe5, 0x8d, 0xa0, 0x82, 0x10, 0x75, 0x4f, 0xbc, 0xa0, 0x9c, 0x2b, | ||||
| 	0xae, 0x74, 0x98, 0x2f, 0x6e, 0xd8, 0xfd, 0xa7, 0xae, 0xcb, 0xbd, 0x08, 0xef, 0x3f, 0x7e, 0x62, | ||||
| 	0xbf, 0x95, 0x0f, 0xf7, 0x2c, 0xb3, 0xe9, 0x73, 0x71, 0x93, 0x2c, 0x18, 0x74, 0xfb, 0x1c, 0x99, | ||||
| 	0xc9, 0x55, 0x4b, 0xb0, 0xe2, 0xe2, 0x35, 0xc3, 0x55, 0xf7, 0x3d, 0xce, 0x56, 0xff, 0x8c, 0x36, | ||||
| 	0x68, 0x76, 0xb4, 0x5d, 0x79, 0xda, 0x75, 0xc8, 0x1e, 0xea, 0x23, 0xd3, 0x9a, 0xca, 0x6b, 0xf6, | ||||
| 	0x6a, 0xdc, 0x14, 0x33, 0x7c, 0x45, 0x1b, 0x0c, 0xb0, 0xdc, 0xf4, 0xb6, 0xb8, 0x0c, 0x91, 0xb2, | ||||
| 	0xbc, 0xac, 0x98, 0x1c, 0xd8, 0x58, 0x3e, 0x04, 0x65, 0x05, 0x1f, 0xb1, 0x18, 0xe6, 0xea, 0x76, | ||||
| 	0xb8, 0x5b, 0x31, 0x60, 0x56, 0xc0, 0x40, 0x4e, 0x4f, 0xf5, 0xa9, 0xdc, 0x6f, 0x30, 0xc4, 0x22, | ||||
| 	0x22, 0x27, 0xba, 0x20, 0x3a, 0xc0, 0x2d, 0xb3, 0x20, 0xfd, 0x55, 0xeb, 0x21, 0x12, 0x2e, 0xa2, | ||||
| 	0x73, 0x28, 0x5d, 0x7e, 0x9b, 0x87, 0x94, 0x19, 0xeb, 0x6b, 0x55, 0xfb, 0xaf, 0xc3, 0xf2, 0xdc, | ||||
| 	0x3e, 0x1f, 0xa9, 0xe7, 0x9a, 0x9d, 0xfd, 0x37, 0x4b, 0x69, 0xf9, 0xf5, 0xff, 0xa5, 0xac, 0xfa, | ||||
| 	0x4f, 0x2c, 0x2f, 0x3b, 0x0e, 0xbf, 0x56, 0xcc, 0xaa, 0xf1, 0xfd, 0x73, 0x8e, 0x77, 0xe3, 0x86, | ||||
| 	0x63, 0x49, 0x9f, 0x89, 0x2d, 0x68, 0x66, 0x5a, 0x58, 0x7d, 0xc0, 0xe1, 0x24, 0x14, 0xc4, 0xe8, | ||||
| 	0x5b, 0x10, 0x95, 0x59, 0x7f, 0x8c, 0x38, 0x6e, 0xd6, 0x65, 0x02, 0x82, 0xc4, 0x24, 0x59, 0x73, | ||||
| 	0x36, 0x9e, 0x1c, 0xe0, 0x35, 0x1d, 0xd2, 0x81, 0xc0, 0xa4, 0x39, 0x66, 0x39, 0xa4, 0x32, 0x98, | ||||
| 	0x5a, 0xc7, 0xf6, 0x32, 0xd0, 0xb9, 0x06, 0xa9, 0x5e, 0xad, 0x83, 0x71, 0x67, 0x15, 0xa3, 0x46, | ||||
| 	0x21, 0x20, 0x23, 0x89, 0x71, 0xf6, 0xea, 0x1d, 0x0c, 0x37, 0x73, 0x1c, 0x24, 0x95, 0xd3, 0x2c, | ||||
| 	0x9c, 0xa8, 0xbf, 0x4a, 0x40, 0x56, 0x24, 0xb7, 0xd8, 0x1d, 0x6b, 0xb0, 0x14, 0x94, 0x5c, 0x22, | ||||
| 	0xe3, 0xbe, 0xf8, 0xf8, 0xec, 0x58, 0x91, 0xc9, 0x4c, 0x9c, 0x63, 0x20, 0x57, 0x7e, 0x0b, 0x8a, | ||||
| 	0x51, 0xc6, 0xd7, 0x3a, 0xc5, 0x9f, 0x40, 0x81, 0x39, 0x4a, 0x90, 0x25, 0x37, 0x21, 0x2b, 0x12, | ||||
| 	0xb0, 0xbc, 0xea, 0x67, 0xa5, 0x6a, 0x89, 0xc4, 0x48, 0xb7, 0x24, 0xd2, 0x7b, 0xd0, 0x78, 0x6e, | ||||
| 	0x9c, 0xed, 0x8e, 0x24, 0x80, 0xab, 0xb7, 0x20, 0xdd, 0xa1, 0xa8, 0xe1, 0x39, 0x58, 0xb2, 0x31, | ||||
| 	0xf4, 0xcc, 0x22, 0x9b, 0xac, 0x4c, 0x06, 0x14, 0x23, 0x56, 0x96, 0xb1, 0x30, 0x9e, 0xa1, 0xf1, | ||||
| 	0x74, 0xf4, 0xb7, 0xa0, 0xf7, 0x66, 0xdf, 0x6a, 0x0f, 0x8a, 0x77, 0xa9, 0x79, 0x34, 0xf4, 0xf1, | ||||
| 	0xc4, 0x98, 0xa2, 0x57, 0x21, 0x3d, 0xa6, 0xe1, 0xe2, 0xd7, 0x62, 0x5d, 0x07, 0xf9, 0x84, 0xa3, | ||||
| 	0xd8, 0x85, 0x3c, 0xe5, 0xd2, 0xf2, 0xb9, 0x43, 0x8e, 0xd4, 0xdf, 0x27, 0x61, 0xa5, 0xe9, 0x79, | ||||
| 	0x13, 0x1d, 0x5b, 0x09, 0x19, 0x05, 0xbf, 0x37, 0xdf, 0x0a, 0x5d, 0x8f, 0xdd, 0xe1, 0x9c, 0xc8, | ||||
| 	0x7c, 0x3b, 0x24, 0x23, 0x57, 0x32, 0x8c, 0x5c, 0xea, 0xc3, 0x44, 0xd0, 0x07, 0x5d, 0x8b, 0xdc, | ||||
| 	0x9b, 0xf2, 0x1a, 0x3a, 0xd1, 0xc5, 0xa8, 0x26, 0xba, 0x67, 0x1f, 0xdb, 0xce, 0xa9, 0x8d, 0x89, | ||||
| 	0x16, 0xfb, 0xa2, 0x56, 0xe3, 0x2e, 0x7a, 0xda, 0x25, 0x04, 0x29, 0x73, 0x20, 0x42, 0x6d, 0x7a, | ||||
| 	0xca, 0x34, 0x75, 0x1a, 0xad, 0x7a, 0xb3, 0x75, 0x1b, 0xd3, 0xdb, 0xa3, 0x9a, 0x3a, 0x14, 0xd3, | ||||
| 	0x99, 0x7d, 0x84, 0xe6, 0xce, 0x36, 0xbb, 0xdd, 0x3d, 0x5e, 0xa9, 0x3e, 0x8d, 0xa8, 0x0b, 0x73, | ||||
| 	0x28, 0x36, 0xc0, 0x32, 0x15, 0x41, 0x2c, 0x93, 0x22, 0x28, 0x1d, 0x03, 0x62, 0xc9, 0x14, 0x03, | ||||
| 	0x88, 0xf0, 0xf0, 0xbf, 0x25, 0xa1, 0xa4, 0x19, 0x06, 0x1d, 0xfb, 0x8c, 0x2f, 0xab, 0x93, 0x1e, | ||||
| 	0xde, 0x64, 0xf6, 0x65, 0xf2, 0x6a, 0x8b, 0xb9, 0xc5, 0xcd, 0xd8, 0xb7, 0xb0, 0x05, 0xb9, 0x0a, | ||||
| 	0x71, 0x2c, 0xaa, 0x0d, 0x46, 0xa6, 0xc7, 0xde, 0x47, 0x04, 0x8d, 0x84, 0x9a, 0xca, 0x5f, 0x24, | ||||
| 	0xe0, 0x42, 0x0c, 0x42, 0x79, 0x1d, 0xd2, 0x2e, 0x92, 0xe5, 0xf1, 0xac, 0x3f, 0xae, 0x53, 0x65, | ||||
| 	0xa2, 0x84, 0x23, 0x95, 0x0d, 0x00, 0x7d, 0xe2, 0x3b, 0x3a, 0x9f, 0x9f, 0x1f, 0x4c, 0x8e, 0x44, | ||||
| 	0x28, 0xca, 0x5d, 0x8c, 0xd6, 0xd4, 0x70, 0x65, 0xb3, 0x57, 0xd8, 0xbc, 0xf5, 0xdf, 0xae, 0xbe, | ||||
| 	0xd2, 0xe5, 0x6a, 0x88, 0x54, 0x57, 0xae, 0x60, 0x9f, 0xc0, 0xbf, 0x98, 0x47, 0x63, 0x49, 0xa1, | ||||
| 	0xf3, 0x45, 0x17, 0x09, 0xff, 0x66, 0x8e, 0xa2, 0x5b, 0x47, 0x81, 0xa3, 0xe0, 0xa7, 0xfa, 0x11, | ||||
| 	0xe6, 0xa2, 0xc6, 0x3d, 0x9f, 0xba, 0xb6, 0x6e, 0xd5, 0x34, 0xa5, 0x11, 0x89, 0x90, 0x62, 0xb7, | ||||
| 	0x2f, 0xc5, 0xbe, 0x5f, 0x84, 0x12, 0x95, 0x9a, 0x16, 0x13, 0x23, 0xb1, 0x3a, 0x98, 0xb8, 0x96, | ||||
| 	0x7c, 0x0b, 0xe3, 0xd5, 0xc1, 0x1e, 0xd9, 0x21, 0x8c, 0xc6, 0x1e, 0x92, 0x82, 0x88, 0x94, 0x7a, | ||||
| 	0xfc, 0x23, 0x66, 0x64, 0x82, 0x6f, 0x3f, 0x2a, 0xbd, 0x0a, 0x30, 0x5b, 0x35, 0x1e, 0x55, 0xa6, | ||||
| 	0xb6, 0xd5, 0xed, 0xee, 0xe0, 0xf5, 0xe0, 0xc5, 0xf4, 0x8c, 0xc5, 0xc9, 0xea, 0xef, 0x12, 0x90, | ||||
| 	0xab, 0x69, 0x32, 0xab, 0x6c, 0x41, 0x89, 0xc7, 0x12, 0x83, 0xba, 0x7e, 0x9f, 0xde, 0x1b, 0x9b, | ||||
| 	0xee, 0x54, 0x86, 0x83, 0xb3, 0xcb, 0xce, 0x15, 0x26, 0x55, 0x43, 0xa1, 0x06, 0x97, 0x51, 0x08, | ||||
| 	0x14, 0xa9, 0xdc, 0x62, 0xdf, 0xd0, 0x83, 0xe0, 0xbc, 0x71, 0xb6, 0x29, 0x44, 0x49, 0x36, 0x1b, | ||||
| 	0x63, 0xd3, 0x1e, 0x28, 0xa9, 0xe9, 0x9e, 0xba, 0x0f, 0x17, 0xda, 0xae, 0x31, 0xc4, 0xe2, 0x48, | ||||
| 	0x4c, 0x2a, 0x97, 0x7c, 0x0b, 0xd6, 0x7d, 0x2c, 0x82, 0xfa, 0x43, 0xd3, 0xf3, 0xd9, 0x13, 0x2c, | ||||
| 	0xfa, 0x06, 0xb5, 0x19, 0xbf, 0xcf, 0x9f, 0x4a, 0x65, 0xb3, 0x72, 0x99, 0x61, 0xb6, 0x05, 0x84, | ||||
| 	0x04, 0x88, 0x1d, 0x06, 0x50, 0x7f, 0x00, 0xa5, 0xba, 0xe9, 0x8d, 0x75, 0x1f, 0x75, 0xcb, 0xd6, | ||||
| 	0x49, 0xb9, 0x0d, 0xa5, 0x21, 0xc5, 0x1a, 0xf6, 0x80, 0xea, 0x98, 0x07, 0xa9, 0x6b, 0x3a, 0x83, | ||||
| 	0x27, 0xb2, 0xc3, 0x6a, 0x28, 0xd5, 0xe1, 0x42, 0xea, 0x97, 0x98, 0xb5, 0xd9, 0xdb, 0x94, 0xd4, | ||||
| 	0xfb, 0x0a, 0x9c, 0xf7, 0x6c, 0x7d, 0xec, 0x0d, 0x1d, 0xbf, 0x6f, 0xda, 0x3e, 0x7b, 0x8c, 0xb5, | ||||
| 	0x64, 0xfd, 0x5b, 0x0a, 0x18, 0x4d, 0x49, 0xc7, 0x78, 0xac, 0x1c, 0x53, 0x3a, 0xee, 0x3b, 0xd6, | ||||
| 	0xa0, 0x1f, 0x30, 0xc5, 0x03, 0x2c, 0xa2, 0x19, 0xa7, 0x6d, 0x0d, 0xba, 0x01, 0x5d, 0xa9, 0xc2, | ||||
| 	0x86, 0xe5, 0x1c, 0xf5, 0x71, 0x67, 0x2e, 0xde, 0xf5, 0xfe, 0xa1, 0xe3, 0xf6, 0x3d, 0xcb, 0x39, | ||||
| 	0xc5, 0x0f, 0x0b, 0xff, 0xa8, 0x1b, 0x34, 0x17, 0x65, 0x44, 0x35, 0x04, 0x68, 0xcb, 0x71, 0xbb, | ||||
| 	0xc8, 0xdb, 0x0a, 0x10, 0x2c, 0xb5, 0xcf, 0xb6, 0xed, 0x9b, 0xc6, 0x71, 0x90, 0xda, 0x43, 0x6a, | ||||
| 	0x0f, 0x89, 0x18, 0xdd, 0x96, 0xa9, 0x45, 0x0d, 0x6e, 0x64, 0x8e, 0xca, 0x70, 0x54, 0x31, 0x20, | ||||
| 	0x32, 0x90, 0xfa, 0xbf, 0x90, 0xef, 0x58, 0xba, 0xc1, 0x9f, 0xb9, 0x59, 0xc5, 0x8f, 0x69, 0x8b, | ||||
| 	0x9d, 0x1c, 0xee, 0x5a, 0x84, 0xb4, 0x3c, 0x89, 0x92, 0xd4, 0xf7, 0x31, 0xd1, 0x13, 0xc7, 0xf1, | ||||
| 	0xf1, 0x92, 0x5e, 0x85, 0xac, 0xa1, 0xf7, 0x03, 0x77, 0x2f, 0x56, 0xf3, 0xe8, 0x16, 0x99, 0x9a, | ||||
| 	0x76, 0x87, 0x4e, 0x49, 0xc6, 0xd0, 0xf1, 0x8f, 0xa5, 0x3c, 0x44, 0x30, 0x27, 0xe5, 0xe6, 0x28, | ||||
| 	0x8a, 0x94, 0x87, 0x5e, 0x8c, 0x14, 0x82, 0xc2, 0xec, 0x1f, 0xa3, 0x5a, 0x51, 0x82, 0xfa, 0x43, | ||||
| 	0xdd, 0x1b, 0x8a, 0x02, 0xb1, 0xba, 0x82, 0x48, 0x10, 0xc8, 0x6d, 0xa4, 0x12, 0x10, 0x68, 0xf6, | ||||
| 	0xad, 0xfe, 0x25, 0x01, 0x05, 0x36, 0x30, 0x0f, 0x4d, 0x83, 0xe5, 0x96, 0xaf, 0x1f, 0x17, 0x31, | ||||
| 	0x30, 0x18, 0x9e, 0x2b, 0x17, 0xc5, 0x03, 0x43, 0xad, 0x4b, 0x08, 0xa3, 0x29, 0xef, 0x60, 0x48, | ||||
| 	0xe4, 0xb9, 0x4d, 0x86, 0x44, 0xf5, 0xab, 0xb3, 0xa0, 0xec, 0x6c, 0xa4, 0x1c, 0x37, 0xe2, 0x6c, | ||||
| 	0x75, 0xfc, 0x68, 0x8a, 0x24, 0x4a, 0x62, 0x4f, 0xf4, 0x86, 0xcd, 0x4f, 0x43, 0x3e, 0xd1, 0xd7, | ||||
| 	0x5a, 0x04, 0x29, 0xea, 0x9f, 0x12, 0xb0, 0xdc, 0xb0, 0x0d, 0x77, 0xca, 0x43, 0x0a, 0xb3, 0xe0, | ||||
| 	0x3a, 0xe4, 0xb1, 0x80, 0xf6, 0xa6, 0x1e, 0x76, 0x99, 0xc1, 0x0b, 0x60, 0x48, 0x50, 0x9a, 0x90, | ||||
| 	0xc7, 0xe0, 0xe9, 0xb8, 0xa6, 0x3f, 0x1c, 0xc9, 0x4a, 0x32, 0x3e, 0x8c, 0x45, 0x75, 0x56, 0xb4, | ||||
| 	0x40, 0x84, 0xcc, 0xa4, 0x83, 0xc0, 0x95, 0xe2, 0x8b, 0xe5, 0x81, 0x0b, 0x7b, 0x5e, 0x0b, 0xdb, | ||||
| 	0x1b, 0xac, 0x11, 0xfb, 0xac, 0x6b, 0xe0, 0xfb, 0xc0, 0xf6, 0x4f, 0xd2, 0x58, 0x27, 0xa4, 0xaa, | ||||
| 	0x90, 0x0f, 0x95, 0xb1, 0x77, 0x57, 0xad, 0xd1, 0xed, 0xdf, 0xd8, 0xbc, 0xd9, 0xbf, 0x5d, 0xdb, | ||||
| 	0xc5, 0x30, 0x26, 0xf2, 0xe6, 0x1f, 0x70, 0x4f, 0xbb, 0xba, 0x8d, 0x9d, 0x4d, 0xd0, 0xe7, 0xa1, | ||||
| 	0x57, 0xb8, 0x78, 0xd5, 0x82, 0x42, 0x28, 0x2d, 0xbc, 0x82, 0xdd, 0x3e, 0x56, 0x08, 0x31, 0x56, | ||||
| 	0x7c, 0x21, 0x14, 0x79, 0x7f, 0x4e, 0x9d, 0xf9, 0xfe, 0x9c, 0xfe, 0x56, 0xde, 0x9f, 0x5f, 0xfe, | ||||
| 	0x32, 0x05, 0xf9, 0xb0, 0x6f, 0x63, 0x2e, 0xc3, 0xea, 0x92, 0x73, 0xa2, 0xa3, 0x0e, 0xe9, 0x2d, | ||||
| 	0x5e, 0x91, 0xe4, 0xb5, 0x9d, 0x9d, 0x76, 0x4d, 0x63, 0xcf, 0xb7, 0xef, 0x88, 0xc2, 0x25, 0x04, | ||||
| 	0x68, 0x78, 0x69, 0xd9, 0xa1, 0x0f, 0x14, 0x75, 0x56, 0xb8, 0xdc, 0x97, 0x7d, 0x7b, 0x88, 0x0a, | ||||
| 	0xaa, 0x96, 0xe7, 0x21, 0xa7, 0x75, 0xbb, 0xcd, 0xdb, 0x2d, 0xd4, 0xf4, 0x20, 0x51, 0x7e, 0x0a, | ||||
| 	0x41, 0xe7, 0x67, 0xaa, 0x30, 0xe1, 0x1e, 0xd9, 0xa8, 0x89, 0xa1, 0x6a, 0xb5, 0x46, 0x87, 0xcd, | ||||
| 	0x77, 0x3f, 0xb9, 0x88, 0xe2, 0xe9, 0x9a, 0xbf, 0xc1, 0xe5, 0x3b, 0xa4, 0xd1, 0xd1, 0x08, 0x9b, | ||||
| 	0xf1, 0x41, 0x72, 0x61, 0x5d, 0x1d, 0x97, 0x62, 0x27, 0xcf, 0xe6, 0xdc, 0x08, 0xde, 0xa2, 0xef, | ||||
| 	0xa7, 0xc4, 0x3b, 0xcd, 0xac, 0x59, 0x45, 0xfb, 0x4e, 0xd9, 0x6c, 0xdd, 0x9e, 0x46, 0x7a, 0x5c, | ||||
| 	0x4d, 0x6a, 0x61, 0xb6, 0x2e, 0x7b, 0x42, 0x60, 0x5a, 0x70, 0x77, 0x64, 0xaf, 0xd5, 0xe2, 0xbb, | ||||
| 	0x4b, 0x2f, 0xec, 0x8e, 0x4c, 0x6c, 0x9b, 0x61, 0xae, 0x61, 0x0a, 0x6b, 0xef, 0x76, 0x76, 0x1a, | ||||
| 	0xbd, 0x46, 0xe9, 0x41, 0x7a, 0x61, 0x41, 0x35, 0x67, 0x34, 0xb6, 0xa8, 0x2f, 0xb6, 0xd7, 0xdd, | ||||
| 	0xde, 0xeb, 0xf1, 0xa7, 0xf2, 0xfb, 0x99, 0xc5, 0x09, 0x87, 0x13, 0x7f, 0xc0, 0x4a, 0xc5, 0xab, | ||||
| 	0x61, 0xed, 0xf6, 0x20, 0x23, 0x52, 0x66, 0x88, 0x11, 0x85, 0x1b, 0xd3, 0x43, 0x1a, 0xdf, 0x17, | ||||
| 	0xaf, 0xea, 0xf7, 0xb3, 0x0b, 0x7a, 0x08, 0x7d, 0x0f, 0xa3, 0x20, 0x96, 0x77, 0xe1, 0x33, 0x54, | ||||
| 	0xc8, 0x7a, 0xf9, 0x87, 0x90, 0x0b, 0x02, 0x06, 0x5a, 0x27, 0x7b, 0xb7, 0x4d, 0xee, 0x34, 0x08, | ||||
| 	0x1e, 0x3d, 0xb7, 0x4e, 0xc0, 0xb9, 0xeb, 0xb8, 0xe8, 0x5d, 0xb8, 0x8c, 0xa5, 0x5d, 0xad, 0xa5, | ||||
| 	0xdd, 0x46, 0x80, 0x7c, 0x06, 0x0b, 0x00, 0xd2, 0xeb, 0xcb, 0x25, 0x39, 0x41, 0xa8, 0xb3, 0xba, | ||||
| 	0xfe, 0xf0, 0xb3, 0x8d, 0x73, 0x9f, 0xe0, 0xef, 0x8b, 0xcf, 0x36, 0x12, 0xf7, 0x3f, 0xdf, 0x48, | ||||
| 	0x3c, 0xc4, 0xdf, 0xc7, 0xf8, 0xfb, 0x3b, 0xfe, 0x0e, 0xb2, 0xbc, 0x7e, 0x79, 0xe3, 0x3f, 0x01, | ||||
| 	0x00, 0x00, 0xff, 0xff, 0x24, 0xa1, 0x77, 0xb8, 0x17, 0x1e, 0x00, 0x00, | ||||
| } | ||||
|  |  | |||
|  | @ -139,12 +139,14 @@ message Mount { | |||
| 
 | ||||
| 		BIND = 0 [(gogoproto.enumvalue_customname) = "MountTypeBind"]; // Bind mount host dir | ||||
| 		VOLUME = 1 [(gogoproto.enumvalue_customname) = "MountTypeVolume"];  // Remote storage volumes | ||||
| 		TMPFS = 2 [(gogoproto.enumvalue_customname) = "MountTypeTmpfs"]; // Mount a tmpfs | ||||
| 	} | ||||
| 
 | ||||
| 	// Type defines the nature of the mount. | ||||
| 	Type type = 1; | ||||
| 
 | ||||
| 	// Source path to mount | ||||
| 	// Source specifies the name of the mount. Depending on mount type, this | ||||
| 	// may be a volume name or a host path, or even ignored. | ||||
| 	string source = 2; | ||||
| 
 | ||||
| 	// Target path in container | ||||
|  | @ -186,14 +188,58 @@ message Mount { | |||
| 		Driver driver_config = 3; | ||||
| 	} | ||||
| 
 | ||||
| 	message TmpfsOptions { | ||||
| 		// Size sets the size of the tmpfs, in bytes. | ||||
| 		// | ||||
| 		// This will be converted to an operating system specific value | ||||
| 		// depending on the host. For example, on linux, it will be convered to | ||||
| 		// use a 'k', 'm' or 'g' syntax. BSD, though not widely supported with | ||||
| 		// docker, uses a straight byte value. | ||||
| 		// | ||||
| 		// Percentages are not supported. | ||||
| 		int64 size_bytes = 1; | ||||
| 
 | ||||
| 		// Mode of the tmpfs upon creation | ||||
| 		int32 mode = 2 [(gogoproto.customtype) = "os.FileMode", (gogoproto.nullable) = false]; | ||||
| 
 | ||||
| 		// TODO(stevvooe): There are several more tmpfs flags, specified in the | ||||
| 		// daemon, that are accepted. Only the most basic are added for now. | ||||
| 		// | ||||
| 		// From docker/docker/pkg/mount/flags.go: | ||||
| 		// | ||||
| 		// var validFlags = map[string]bool{ | ||||
| 		// 	"":          true, | ||||
| 		// 	"size":      true, X | ||||
| 		// 	"mode":      true, X | ||||
| 		// 	"uid":       true, | ||||
| 		// 	"gid":       true, | ||||
| 		// 	"nr_inodes": true, | ||||
| 		// 	"nr_blocks": true, | ||||
| 		// 	"mpol":      true, | ||||
| 		// } | ||||
| 		// | ||||
| 		// Some of these may be straightforward to add, but others, such as | ||||
| 		// uid/gid have implications in a clustered system. | ||||
| 	} | ||||
| 
 | ||||
| 	// Depending on type, one of bind_options or volumes_options will be set. | ||||
| 
 | ||||
| 	// BindOptions configures properties of a bind mount type. | ||||
| 	// | ||||
| 	// For mounts of type bind, the source must be an absolute host path. | ||||
| 	BindOptions bind_options = 5; | ||||
| 
 | ||||
| 	// VolumeOptions configures the properties specific to a volume mount type. | ||||
| 	// | ||||
| 	// For mounts of type volume, the source will be used as the volume name. | ||||
| 	VolumeOptions volume_options = 6; | ||||
| 
 | ||||
| 	// TmpfsOptions allows one to set options for mounting a temporary | ||||
| 	// filesystem. | ||||
| 	// | ||||
| 	// The source field will be ignored when using mounts of type tmpfs. | ||||
| 	TmpfsOptions tmpfs_options = 7; | ||||
| 
 | ||||
| 	// TODO(stevvooe): It be better to use a oneof field above, although the | ||||
| 	// type is enough to make the decision, while being primary to the | ||||
| 	// datastructure. | ||||
|  |  | |||
|  | @ -24,6 +24,8 @@ type GlobalOrchestrator struct { | |||
| 
 | ||||
| 	updater  *UpdateSupervisor | ||||
| 	restarts *RestartSupervisor | ||||
| 
 | ||||
| 	cluster *api.Cluster // local instance of the cluster
 | ||||
| } | ||||
| 
 | ||||
| // NewGlobalOrchestrator creates a new GlobalOrchestrator
 | ||||
|  | @ -50,11 +52,23 @@ func (g *GlobalOrchestrator) Run(ctx context.Context) error { | |||
| 	watcher, cancel := queue.Watch() | ||||
| 	defer cancel() | ||||
| 
 | ||||
| 	// lookup the cluster
 | ||||
| 	var err error | ||||
| 	g.store.View(func(readTx store.ReadTx) { | ||||
| 		var clusters []*api.Cluster | ||||
| 		clusters, err = store.FindClusters(readTx, store.ByName("default")) | ||||
| 
 | ||||
| 		if len(clusters) != 1 { | ||||
| 			return // just pick up the cluster when it is created.
 | ||||
| 		} | ||||
| 		g.cluster = clusters[0] | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	// Get list of nodes
 | ||||
| 	var ( | ||||
| 		nodes []*api.Node | ||||
| 		err   error | ||||
| 	) | ||||
| 	var nodes []*api.Node | ||||
| 	g.store.View(func(readTx store.ReadTx) { | ||||
| 		nodes, err = store.FindNodes(readTx, store.All) | ||||
| 	}) | ||||
|  | @ -88,6 +102,8 @@ func (g *GlobalOrchestrator) Run(ctx context.Context) error { | |||
| 		case event := <-watcher: | ||||
| 			// TODO(stevvooe): Use ctx to limit running time of operation.
 | ||||
| 			switch v := event.(type) { | ||||
| 			case state.EventUpdateCluster: | ||||
| 				g.cluster = v.Cluster | ||||
| 			case state.EventCreateService: | ||||
| 				if !isGlobalService(v.Service) { | ||||
| 					continue | ||||
|  | @ -228,7 +244,7 @@ func (g *GlobalOrchestrator) reconcileOneService(ctx context.Context, service *a | |||
| 			} | ||||
| 		} | ||||
| 		if len(updateTasks) > 0 { | ||||
| 			g.updater.Update(ctx, service, updateTasks) | ||||
| 			g.updater.Update(ctx, g.cluster, service, updateTasks) | ||||
| 		} | ||||
| 		return nil | ||||
| 	}) | ||||
|  | @ -325,7 +341,7 @@ func (g *GlobalOrchestrator) reconcileServiceOneNode(ctx context.Context, servic | |||
| } | ||||
| 
 | ||||
| // restartTask calls the restart supervisor's Restart function, which
 | ||||
| // sets a task's desired state to dead and restarts it if the restart
 | ||||
| // sets a task's desired state to shutdown and restarts it if the restart
 | ||||
| // policy calls for it to be restarted.
 | ||||
| func (g *GlobalOrchestrator) restartTask(ctx context.Context, taskID string, serviceID string) { | ||||
| 	err := g.store.Update(func(tx store.Tx) error { | ||||
|  | @ -337,7 +353,7 @@ func (g *GlobalOrchestrator) restartTask(ctx context.Context, taskID string, ser | |||
| 		if service == nil { | ||||
| 			return nil | ||||
| 		} | ||||
| 		return g.restarts.Restart(ctx, tx, service, *t) | ||||
| 		return g.restarts.Restart(ctx, tx, g.cluster, service, *t) | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		log.G(ctx).WithError(err).Errorf("global orchestrator: restartTask transaction failed") | ||||
|  | @ -361,7 +377,7 @@ func (g *GlobalOrchestrator) removeTask(ctx context.Context, batch *store.Batch, | |||
| } | ||||
| 
 | ||||
| func (g *GlobalOrchestrator) addTask(ctx context.Context, batch *store.Batch, service *api.Service, nodeID string) { | ||||
| 	task := newTask(service, 0) | ||||
| 	task := newTask(g.cluster, service, 0) | ||||
| 	task.NodeID = nodeID | ||||
| 
 | ||||
| 	err := batch.Update(func(tx store.Tx) error { | ||||
|  |  | |||
|  | @ -27,6 +27,8 @@ type ReplicatedOrchestrator struct { | |||
| 
 | ||||
| 	updater  *UpdateSupervisor | ||||
| 	restarts *RestartSupervisor | ||||
| 
 | ||||
| 	cluster *api.Cluster // local cluster instance
 | ||||
| } | ||||
| 
 | ||||
| // NewReplicatedOrchestrator creates a new ReplicatedOrchestrator.
 | ||||
|  | @ -61,6 +63,7 @@ func (r *ReplicatedOrchestrator) Run(ctx context.Context) error { | |||
| 			return | ||||
| 		} | ||||
| 		err = r.initServices(readTx) | ||||
| 		err = r.initCluster(readTx) | ||||
| 	}) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
|  | @ -74,9 +77,11 @@ func (r *ReplicatedOrchestrator) Run(ctx context.Context) error { | |||
| 			// TODO(stevvooe): Use ctx to limit running time of operation.
 | ||||
| 			r.handleTaskEvent(ctx, event) | ||||
| 			r.handleServiceEvent(ctx, event) | ||||
| 			switch event.(type) { | ||||
| 			switch v := event.(type) { | ||||
| 			case state.EventCommit: | ||||
| 				r.tick(ctx) | ||||
| 			case state.EventUpdateCluster: | ||||
| 				r.cluster = v.Cluster | ||||
| 			} | ||||
| 		case <-r.stopChan: | ||||
| 			return nil | ||||
|  | @ -99,7 +104,16 @@ func (r *ReplicatedOrchestrator) tick(ctx context.Context) { | |||
| 	r.tickServices(ctx) | ||||
| } | ||||
| 
 | ||||
| func newTask(service *api.Service, instance uint64) *api.Task { | ||||
| func newTask(cluster *api.Cluster, service *api.Service, instance uint64) *api.Task { | ||||
| 	var logDriver *api.Driver | ||||
| 	if service.Spec.Task.LogDriver != nil { | ||||
| 		// use the log driver specific to the task, if we have it.
 | ||||
| 		logDriver = service.Spec.Task.LogDriver | ||||
| 	} else if cluster != nil { | ||||
| 		// pick up the cluster default, if available.
 | ||||
| 		logDriver = cluster.Spec.DefaultLogDriver // nil is okay here.
 | ||||
| 	} | ||||
| 
 | ||||
| 	// NOTE(stevvooe): For now, we don't override the container naming and
 | ||||
| 	// labeling scheme in the agent. If we decide to do this in the future,
 | ||||
| 	// they should be overridden here.
 | ||||
|  | @ -118,6 +132,7 @@ func newTask(service *api.Service, instance uint64) *api.Task { | |||
| 			Spec: service.Spec.Endpoint.Copy(), | ||||
| 		}, | ||||
| 		DesiredState: api.TaskStateRunning, | ||||
| 		LogDriver:    logDriver, | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -59,7 +59,7 @@ func NewRestartSupervisor(store *store.MemoryStore) *RestartSupervisor { | |||
| 
 | ||||
| // Restart initiates a new task to replace t if appropriate under the service's
 | ||||
| // restart policy.
 | ||||
| func (r *RestartSupervisor) Restart(ctx context.Context, tx store.Tx, service *api.Service, t api.Task) error { | ||||
| func (r *RestartSupervisor) Restart(ctx context.Context, tx store.Tx, cluster *api.Cluster, service *api.Service, t api.Task) error { | ||||
| 	// TODO(aluzzardi): This function should not depend on `service`.
 | ||||
| 
 | ||||
| 	t.DesiredState = api.TaskStateShutdown | ||||
|  | @ -76,9 +76,9 @@ func (r *RestartSupervisor) Restart(ctx context.Context, tx store.Tx, service *a | |||
| 	var restartTask *api.Task | ||||
| 
 | ||||
| 	if isReplicatedService(service) { | ||||
| 		restartTask = newTask(service, t.Slot) | ||||
| 		restartTask = newTask(cluster, service, t.Slot) | ||||
| 	} else if isGlobalService(service) { | ||||
| 		restartTask = newTask(service, 0) | ||||
| 		restartTask = newTask(cluster, service, 0) | ||||
| 		restartTask.NodeID = t.NodeID | ||||
| 	} else { | ||||
| 		log.G(ctx).Error("service not supported by restart supervisor") | ||||
|  |  | |||
|  | @ -16,6 +16,21 @@ import ( | |||
| // specifications. This is different from task-level orchestration, which
 | ||||
| // responds to changes in individual tasks (or nodes which run them).
 | ||||
| 
 | ||||
| func (r *ReplicatedOrchestrator) initCluster(readTx store.ReadTx) error { | ||||
| 	clusters, err := store.FindClusters(readTx, store.ByName("default")) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	if len(clusters) != 1 { | ||||
| 		// we'll just pick it when it is created.
 | ||||
| 		return nil | ||||
| 	} | ||||
| 
 | ||||
| 	r.cluster = clusters[0] | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| func (r *ReplicatedOrchestrator) initServices(readTx store.ReadTx) error { | ||||
| 	services, err := store.FindServices(readTx, store.All) | ||||
| 	if err != nil { | ||||
|  | @ -133,7 +148,7 @@ func (r *ReplicatedOrchestrator) reconcile(ctx context.Context, service *api.Ser | |||
| 	case specifiedInstances > numTasks: | ||||
| 		log.G(ctx).Debugf("Service %s was scaled up from %d to %d instances", service.ID, numTasks, specifiedInstances) | ||||
| 		// Update all current tasks then add missing tasks
 | ||||
| 		r.updater.Update(ctx, service, runningTasks) | ||||
| 		r.updater.Update(ctx, r.cluster, service, runningTasks) | ||||
| 		_, err = r.store.Batch(func(batch *store.Batch) error { | ||||
| 			r.addTasks(ctx, batch, service, runningInstances, specifiedInstances-numTasks) | ||||
| 			return nil | ||||
|  | @ -179,7 +194,7 @@ func (r *ReplicatedOrchestrator) reconcile(ctx context.Context, service *api.Ser | |||
| 			sortedTasks = append(sortedTasks, t.task) | ||||
| 		} | ||||
| 
 | ||||
| 		r.updater.Update(ctx, service, sortedTasks[:specifiedInstances]) | ||||
| 		r.updater.Update(ctx, r.cluster, service, sortedTasks[:specifiedInstances]) | ||||
| 		_, err = r.store.Batch(func(batch *store.Batch) error { | ||||
| 			r.removeTasks(ctx, batch, service, sortedTasks[specifiedInstances:]) | ||||
| 			return nil | ||||
|  | @ -190,7 +205,7 @@ func (r *ReplicatedOrchestrator) reconcile(ctx context.Context, service *api.Ser | |||
| 
 | ||||
| 	case specifiedInstances == numTasks: | ||||
| 		// Simple update, no scaling - update all tasks.
 | ||||
| 		r.updater.Update(ctx, service, runningTasks) | ||||
| 		r.updater.Update(ctx, r.cluster, service, runningTasks) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -206,7 +221,7 @@ func (r *ReplicatedOrchestrator) addTasks(ctx context.Context, batch *store.Batc | |||
| 		} | ||||
| 
 | ||||
| 		err := batch.Update(func(tx store.Tx) error { | ||||
| 			return store.CreateTask(tx, newTask(service, instance)) | ||||
| 			return store.CreateTask(tx, newTask(r.cluster, service, instance)) | ||||
| 		}) | ||||
| 		if err != nil { | ||||
| 			log.G(ctx).Errorf("Failed to create task: %v", err) | ||||
|  |  | |||
|  | @ -149,7 +149,7 @@ func (r *ReplicatedOrchestrator) tickTasks(ctx context.Context) { | |||
| 						} | ||||
| 
 | ||||
| 						// Restart task if applicable
 | ||||
| 						if err := r.restarts.Restart(ctx, tx, service, *t); err != nil { | ||||
| 						if err := r.restarts.Restart(ctx, tx, r.cluster, service, *t); err != nil { | ||||
| 							return err | ||||
| 						} | ||||
| 					} | ||||
|  |  | |||
|  | @ -36,7 +36,7 @@ func NewUpdateSupervisor(store *store.MemoryStore, restartSupervisor *RestartSup | |||
| 
 | ||||
| // Update starts an Update of `tasks` belonging to `service` in the background and returns immediately.
 | ||||
| // If an update for that service was already in progress, it will be cancelled before the new one starts.
 | ||||
| func (u *UpdateSupervisor) Update(ctx context.Context, service *api.Service, tasks []*api.Task) { | ||||
| func (u *UpdateSupervisor) Update(ctx context.Context, cluster *api.Cluster, service *api.Service, tasks []*api.Task) { | ||||
| 	u.l.Lock() | ||||
| 	defer u.l.Unlock() | ||||
| 
 | ||||
|  | @ -49,7 +49,7 @@ func (u *UpdateSupervisor) Update(ctx context.Context, service *api.Service, tas | |||
| 	update := NewUpdater(u.store, u.restarts) | ||||
| 	u.updates[id] = update | ||||
| 	go func() { | ||||
| 		update.Run(ctx, service, tasks) | ||||
| 		update.Run(ctx, cluster, service, tasks) | ||||
| 		u.l.Lock() | ||||
| 		if u.updates[id] == update { | ||||
| 			delete(u.updates, id) | ||||
|  | @ -98,7 +98,7 @@ func (u *Updater) Cancel() { | |||
| } | ||||
| 
 | ||||
| // Run starts the update and returns only once its complete or cancelled.
 | ||||
| func (u *Updater) Run(ctx context.Context, service *api.Service, tasks []*api.Task) { | ||||
| func (u *Updater) Run(ctx context.Context, cluster *api.Cluster, service *api.Service, tasks []*api.Task) { | ||||
| 	defer close(u.doneChan) | ||||
| 
 | ||||
| 	dirtyTasks := []*api.Task{} | ||||
|  | @ -130,7 +130,7 @@ func (u *Updater) Run(ctx context.Context, service *api.Service, tasks []*api.Ta | |||
| 	wg.Add(parallelism) | ||||
| 	for i := 0; i < parallelism; i++ { | ||||
| 		go func() { | ||||
| 			u.worker(ctx, service, taskQueue) | ||||
| 			u.worker(ctx, cluster, service, taskQueue) | ||||
| 			wg.Done() | ||||
| 		}() | ||||
| 	} | ||||
|  | @ -149,9 +149,9 @@ func (u *Updater) Run(ctx context.Context, service *api.Service, tasks []*api.Ta | |||
| 	wg.Wait() | ||||
| } | ||||
| 
 | ||||
| func (u *Updater) worker(ctx context.Context, service *api.Service, queue <-chan *api.Task) { | ||||
| func (u *Updater) worker(ctx context.Context, cluster *api.Cluster, service *api.Service, queue <-chan *api.Task) { | ||||
| 	for t := range queue { | ||||
| 		updated := newTask(service, t.Slot) | ||||
| 		updated := newTask(cluster, service, t.Slot) | ||||
| 		updated.DesiredState = api.TaskStateReady | ||||
| 		if isGlobalService(service) { | ||||
| 			updated.NodeID = t.NodeID | ||||
|  |  | |||
|  | @ -113,6 +113,28 @@ func (c *Cluster) RemoveMember(id uint64) error { | |||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // ReplaceMemberConnection replaces the member's GRPC connection and GRPC
 | ||||
| // client.
 | ||||
| func (c *Cluster) ReplaceMemberConnection(id uint64, newConn *Member) error { | ||||
| 	c.mu.Lock() | ||||
| 	defer c.mu.Unlock() | ||||
| 
 | ||||
| 	oldMember, ok := c.members[id] | ||||
| 	if !ok { | ||||
| 		return ErrIDNotFound | ||||
| 	} | ||||
| 
 | ||||
| 	oldMember.Conn.Close() | ||||
| 
 | ||||
| 	newMember := *oldMember | ||||
| 	newMember.Conn = newConn.Conn | ||||
| 	newMember.RaftClient = newConn.RaftClient | ||||
| 
 | ||||
| 	c.members[id] = &newMember | ||||
| 
 | ||||
| 	return nil | ||||
| } | ||||
| 
 | ||||
| // IsIDRemoved checks if a Member is in the remove set.
 | ||||
| func (c *Cluster) IsIDRemoved(id uint64) bool { | ||||
| 	c.mu.RLock() | ||||
|  |  | |||
|  | @ -1000,6 +1000,14 @@ func (n *Node) sendToMember(members map[uint64]*membership.Member, m raftpb.Mess | |||
| 			panic("node is nil") | ||||
| 		} | ||||
| 		n.ReportUnreachable(m.To) | ||||
| 
 | ||||
| 		// Bounce the connection
 | ||||
| 		newConn, err := n.ConnectToMember(conn.Addr, 0) | ||||
| 		if err != nil { | ||||
| 			n.Config.Logger.Errorf("could connect to member ID %x at %s: %v", m.To, conn.Addr, err) | ||||
| 		} else { | ||||
| 			n.cluster.ReplaceMemberConnection(m.To, newConn) | ||||
| 		} | ||||
| 	} else if m.Type == raftpb.MsgSnap { | ||||
| 		n.ReportSnapshot(m.To, raft.SnapshotFinish) | ||||
| 	} | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue