You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ozone.apache.org by el...@apache.org on 2021/04/09 17:16:52 UTC

[ozone-go] branch master updated: HDDS-5085. revert initial import (#3)

This is an automated email from the ASF dual-hosted git repository.

elek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone-go.git


The following commit(s) were added to refs/heads/master by this push:
     new 60b205b  HDDS-5085. revert initial import (#3)
60b205b is described below

commit 60b205b28607c7e4ee6ff034c36d4388df61ce2d
Author: Elek, Márton <el...@users.noreply.github.com>
AuthorDate: Fri Apr 9 19:16:43 2021 +0200

    HDDS-5085. revert initial import (#3)
---
 .gitignore                                      |     8 -
 README.md                                       |    59 -
 api/bucket.go                                   |    31 -
 api/common/types.go                             |    41 -
 api/datanode/datanode.go                        |   261 -
 api/datanode/ratis.go                           |   103 -
 api/datanode/standalone.go                      |    45 -
 api/go.mod                                      |    32 -
 api/go.sum                                      |   112 -
 api/key.go                                      |   204 -
 api/om/bucket.go                                |   105 -
 api/om/om.go                                    |   215 -
 api/om/volume.go                                |    99 -
 api/ozone.go                                    |    31 -
 api/ozone_test.go                               |    68 -
 api/proto/common/Security.pb.go                 |   745 --
 api/proto/datanode/DatanodeClientProtocol.pb.go |  4876 ---------
 api/proto/hdds/hdds.pb.go                       |  2452 -----
 api/proto/ozone/OmClientProtocol.pb.go          | 12561 ----------------------
 api/proto/ratis/raft.pb.go                      |  4733 --------
 api/proto/ratis/ratis-grpc.pb.go                |   766 --
 api/volume.go                                   |    30 -
 cli/build.sh                                    |     7 +-
 cli/go.mod                                      |    26 -
 cli/go.sum                                      |   113 -
 cli/main.go                                     |   238 -
 codegen.sh                                      |    51 -
 fuse/build.sh                                   |     8 +-
 fuse/go.mod                                     |    28 -
 fuse/go.sum                                     |   128 -
 fuse/ozone-fuse/file.go                         |   147 -
 fuse/ozone-fuse/main.go                         |   156 -
 lib/build.sh                                    |     8 +-
 lib/go.mod                                      |    22 -
 lib/go.sum                                      |    96 -
 lib/lib.go                                      |    71 -
 license-check.sh                                |    27 -
 python/test.py                                  |    27 -
 38 files changed, 3 insertions(+), 28727 deletions(-)

diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 6cadd37..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-.idea
-vendor
-ozone.so
-ozone.h
-lib/lib
-lib/lib.h
-cli/ozone-go
-fuse/ozone-fuse/ozone-fuse
diff --git a/README.md b/README.md
deleted file mode 100644
index 6394f20..0000000
--- a/README.md
+++ /dev/null
@@ -1,59 +0,0 @@
-# Go client for Apache Ozone
-
-This repository contains an experimental, **proof-of-concept** Golang client for Apache Ozone.
-
-It's not ready yet for using in production / non-production.
-
-The repository contains the following sub-modules
-
- * api: the location for the generic golang api for Apache Ozone
- * cli: standalone executable tool for main operations (similar to the original `ozone sh`)
- * lib: proof-of-concept shared C library
- * python: example python script uses the shared C library
- * HA failovoer is missing
-
-Status:
-
- * api
-   * main OM metadata operations worked well, but not all the fields are implemented
-   * data read / write are implemented on some level but needs further work
-   * security can be supported by the used Hadoop RPC implementation, but not tested
- * fuse
-   * first working POC, files are successfully listed and files can be read
-   * write is not implemented at all
-   * requires major work
-  * shared lib / python: very basic example, poc
-
-## Testing with cli:
-
-```
-cd cli
-./build.sh
-./ozone-go --om localhost volume create vol1
-```
-
-Or you can install it:
-
-```
-cd cli
-go install
-ozone -om 127.0.0.1 volume create vol1
-```
-
-## Testing Fuse file system
-
-```
-cd fuse
-./build.sh
-./ozone-fuse/ozone-fuse --om localhost --volume vol1 --bucket bucket1 /tmp/bucket1
-```
-
-## Testing the python binding
-
-Create the shared library:
-
-```
-go build -o ozone.so -buildmode=c-shared lib/lib.go
-```
-
-Modify parameters of `python/test.py` (om address) and run it.
diff --git a/api/bucket.go b/api/bucket.go
deleted file mode 100644
index 1a08370..0000000
--- a/api/bucket.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package api
-
-import "github.com/apache/ozone-go/api/common"
-
-func (ozoneClient *OzoneClient) CreateBucket(volume string, bucket string) error {
-	return ozoneClient.OmClient.CreateBucket(volume, bucket)
-}
-
-func (ozoneClient *OzoneClient) GetBucket(volume string, bucket string) (common.Bucket, error) {
-	return ozoneClient.OmClient.GetBucket(volume, bucket)
-}
-
-func (ozoneClient *OzoneClient) ListBucket(volume string) ([]common.Bucket, error) {
-	return ozoneClient.OmClient.ListBucket(volume)
-
-}
\ No newline at end of file
diff --git a/api/common/types.go b/api/common/types.go
deleted file mode 100644
index 5d6bc28..0000000
--- a/api/common/types.go
+++ /dev/null
@@ -1,41 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package common
-
-type ReplicationType int
-
-const (
-	RATIS      ReplicationType = 1
-	STANDALONE ReplicationType = 2
-)
-
-type Volume struct {
-	Name  string
-	Owner string
-}
-
-type Key struct {
-	Name        string
-	BucketName  string
-	VolumeName  string
-	Replication ReplicationType
-	Size        uint64
-}
-
-type Bucket struct {
-	Name       string
-	VolumeName string
-}
diff --git a/api/datanode/datanode.go b/api/datanode/datanode.go
deleted file mode 100644
index 24746a2..0000000
--- a/api/datanode/datanode.go
+++ /dev/null
@@ -1,261 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package datanode
-
-import (
-	"context"
-	"errors"
-	"fmt"
-	dnapi "github.com/apache/ozone-go/api/proto/datanode"
-	"github.com/apache/ozone-go/api/proto/hdds"
-	"github.com/apache/ozone-go/api/proto/ratis"
-	"google.golang.org/grpc"
-	"io"
-	"strconv"
-)
-
-type ChunkInfo struct {
-	Name   string
-	Offset uint64
-	Len    uint64
-}
-
-type DatanodeClient struct {
-	ratisClient        *ratis.RaftClientProtocolService_UnorderedClient
-	ratisReceiver      chan ratis.RaftClientReplyProto
-	standaloneClient   *dnapi.XceiverClientProtocolService_SendClient
-	standaloneReceiver chan dnapi.ContainerCommandResponseProto
-
-	ctx             context.Context
-	datanodes       []*hdds.DatanodeDetailsProto
-	currentDatanode hdds.DatanodeDetailsProto
-	grpcConnection  *grpc.ClientConn
-	pipelineId      *hdds.PipelineID
-	memberIndex     int
-}
-
-func (dn *DatanodeClient) GetCurrentDnUUid() *string {
-	uid := dn.currentDatanode.GetUuid()
-	return &uid
-}
-
-func (dnClient *DatanodeClient) connectToNext() error {
-	if dnClient.grpcConnection != nil {
-		dnClient.grpcConnection.Close()
-	}
-	dnClient.memberIndex = dnClient.memberIndex + 1
-	if dnClient.memberIndex == len(dnClient.datanodes) {
-		dnClient.memberIndex = 0
-	}
-	selectedDatanode := dnClient.datanodes[dnClient.memberIndex]
-	dnClient.currentDatanode = *selectedDatanode
-
-	standalonePort := 0
-	for _, port := range dnClient.currentDatanode.Ports {
-		if *port.Name == "STANDALONE" {
-			standalonePort = int(*port.Value)
-		}
-	}
-
-	address := *dnClient.currentDatanode.IpAddress + ":" + strconv.Itoa(standalonePort)
-	println("Connecting to the " + address)
-	conn, err := grpc.Dial(address, grpc.WithInsecure(), grpc.WithBlock())
-	if err != nil {
-		return err
-	}
-
-	dnClient.ratisReceiver = make(chan ratis.RaftClientReplyProto)
-	dnClient.standaloneReceiver = make(chan dnapi.ContainerCommandResponseProto)
-
-	client, err := dnapi.NewXceiverClientProtocolServiceClient(conn).Send(dnClient.ctx)
-	dnClient.standaloneClient = &client
-	//
-	//client, err := ratis.NewRaftClientProtocolServiceClient(conn).Unordered(dnClient.ctx)
-	//if err != nil {
-	//	panic(err)
-	//}
-	//dnClient.ratisClient = &client
-	//go dnClient.RaftReceiver()
-	go dnClient.StandaloneReceive()
-	return nil
-}
-
-func CreateDatanodeClient(pipeline *hdds.Pipeline) (*DatanodeClient, error) {
-	dnClient := &DatanodeClient{
-		ctx:         context.Background(),
-		pipelineId:  pipeline.Id,
-		datanodes:   pipeline.Members,
-		memberIndex: -1,
-	}
-	err := dnClient.connectToNext()
-	if err != nil {
-		return nil, err
-	}
-	return dnClient, nil
-}
-func (dnClient *DatanodeClient) RaftReceiver() {
-	for {
-		proto, err := (*dnClient.ratisClient).Recv()
-		if err == io.EOF {
-			return
-		}
-		if err != nil {
-			fmt.Println(err)
-			return
-		}
-		dnClient.ratisReceiver <- *proto
-	}
-}
-
-func (dnClient *DatanodeClient) CreateAndWriteChunk(id *dnapi.DatanodeBlockID, blockOffset uint64, buffer []byte, length uint64) (dnapi.ChunkInfo, error) {
-	bpc := uint32(12)
-	checksumType := dnapi.ChecksumType_NONE
-	checksumDataProto := dnapi.ChecksumData{
-		Type:             &checksumType,
-		BytesPerChecksum: &bpc,
-	}
-	chunkName := fmt.Sprintf("chunk_%d", blockOffset)
-	chunkInfoProto := dnapi.ChunkInfo{
-		ChunkName:    &chunkName,
-		Offset:       &blockOffset,
-		Len:          &length,
-		ChecksumData: &checksumDataProto,
-	}
-	return dnClient.WriteChunk(id, chunkInfoProto, buffer[0:length])
-}
-
-func (dnClient *DatanodeClient) WriteChunk(id *dnapi.DatanodeBlockID, info dnapi.ChunkInfo, data []byte) (dnapi.ChunkInfo, error) {
-
-	req := dnapi.WriteChunkRequestProto{
-		BlockID:   id,
-		ChunkData: &info,
-		Data:      data,
-	}
-	commandType := dnapi.Type_WriteChunk
-	uuid := dnClient.currentDatanode.GetUuid()
-	proto := dnapi.ContainerCommandRequestProto{
-		CmdType:      &commandType,
-		WriteChunk:   &req,
-		ContainerID:  id.ContainerID,
-		DatanodeUuid: &uuid,
-	}
-
-	_, err := dnClient.sendDatanodeCommand(proto)
-	if err != nil {
-		return info, err
-	}
-	return info, nil
-}
-
-func (dnClient *DatanodeClient) ReadChunk(id *dnapi.DatanodeBlockID, info ChunkInfo) ([]byte, error) {
-	result := make([]byte, 0)
-
-	bpc := uint32(12)
-	checksumType := dnapi.ChecksumType_NONE
-	checksumDataProto := dnapi.ChecksumData{
-		Type:             &checksumType,
-		BytesPerChecksum: &bpc,
-	}
-	chunkInfoProto := dnapi.ChunkInfo{
-		ChunkName:    &info.Name,
-		Offset:       &info.Offset,
-		Len:          &info.Len,
-		ChecksumData: &checksumDataProto,
-	}
-	req := dnapi.ReadChunkRequestProto{
-		BlockID:   id,
-		ChunkData: &chunkInfoProto,
-	}
-	commandType := dnapi.Type_ReadChunk
-	uuid := dnClient.currentDatanode.GetUuid()
-	proto := dnapi.ContainerCommandRequestProto{
-		CmdType:      &commandType,
-		ReadChunk:    &req,
-		ContainerID:  id.ContainerID,
-		DatanodeUuid: &uuid,
-	}
-
-	resp, err := dnClient.sendDatanodeCommand(proto)
-	if err != nil {
-		return result, err
-	}
-	if resp.GetResult() != dnapi.Result_SUCCESS {
-		return nil, errors.New(resp.GetResult().String() + " " + resp.GetMessage())
-	}
-	return resp.GetReadChunk().Data, nil
-}
-
-func (dnClient *DatanodeClient) PutBlock(id *dnapi.DatanodeBlockID, chunks []*dnapi.ChunkInfo) error {
-
-	flags := int64(0)
-	req := dnapi.PutBlockRequestProto{
-		BlockData: &dnapi.BlockData{
-			BlockID:  id,
-			Flags:    &flags,
-			Metadata: make([]*dnapi.KeyValue, 0),
-			Chunks:   chunks,
-		},
-	}
-	commandType := dnapi.Type_PutBlock
-	proto := dnapi.ContainerCommandRequestProto{
-		CmdType:      &commandType,
-		PutBlock:     &req,
-		ContainerID:  id.ContainerID,
-		DatanodeUuid: dnClient.GetCurrentDnUUid(),
-	}
-
-	_, err := dnClient.sendDatanodeCommand(proto)
-	if err != nil {
-		return err
-	}
-	return nil
-}
-
-func (dnClient *DatanodeClient) GetBlock(id *dnapi.DatanodeBlockID) ([]ChunkInfo, error) {
-	result := make([]ChunkInfo, 0)
-
-	req := dnapi.GetBlockRequestProto{
-		BlockID: id,
-	}
-	commandType := dnapi.Type_GetBlock
-	proto := dnapi.ContainerCommandRequestProto{
-		CmdType:      &commandType,
-		GetBlock:     &req,
-		ContainerID:  id.ContainerID,
-		DatanodeUuid: dnClient.GetCurrentDnUUid(),
-	}
-
-	resp, err := dnClient.sendDatanodeCommand(proto)
-	if err != nil {
-		return result, err
-	}
-	for _, chunkInfo := range resp.GetGetBlock().GetBlockData().Chunks {
-		result = append(result, ChunkInfo{
-			Name:   chunkInfo.GetChunkName(),
-			Offset: chunkInfo.GetOffset(),
-			Len:    chunkInfo.GetLen(),
-		})
-	}
-	return result, nil
-}
-
-func (dnClient *DatanodeClient) sendDatanodeCommand(proto dnapi.ContainerCommandRequestProto) (dnapi.ContainerCommandResponseProto, error) {
-	return dnClient.sendStandaloneDatanodeCommand(proto)
-}
-
-func (dn *DatanodeClient) Close() {
-	(*dn.standaloneClient).CloseSend()
-}
diff --git a/api/datanode/ratis.go b/api/datanode/ratis.go
deleted file mode 100644
index 2c626eb..0000000
--- a/api/datanode/ratis.go
+++ /dev/null
@@ -1,103 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package datanode
-
-import (
-	"encoding/binary"
-	"github.com/apache/ozone-go/api/proto/datanode"
-	"github.com/apache/ozone-go/api/proto/ratis"
-	protobuf "github.com/golang/protobuf/proto"
-)
-
-func (dnClient *DatanodeClient) sendRatisDatanodeCommand(proto datanode.ContainerCommandRequestProto) (datanode.ContainerCommandResponseProto, error) {
-	group := ratis.RaftGroupIdProto{
-		Id: make([]byte, 0), //TODO
-	}
-	request := ratis.RaftRpcRequestProto{
-		RequestorId: []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5},
-		ReplyId:     []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5},
-		RaftGroupId: &group,
-		CallId:      12,
-	}
-	bytes, err := protobuf.Marshal(&proto)
-	if err != nil {
-		return datanode.ContainerCommandResponseProto{}, err
-	}
-
-	lengthHeader := make([]byte, 4)
-	binary.BigEndian.PutUint32(lengthHeader, uint32(len(bytes)))
-
-	message := ratis.ClientMessageEntryProto{
-		Content: append(lengthHeader, bytes...),
-	}
-	readRequestType := ratis.ReadRequestTypeProto{}
-	readType := ratis.RaftClientRequestProto_Read{
-		Read: &readRequestType,
-	}
-	raft := ratis.RaftClientRequestProto{
-		RpcRequest: &request,
-		Message:    &message,
-		Type:       &readType,
-	}
-	resp, err := dnClient.sendRatisMessage(raft)
-	if err != nil {
-		return datanode.ContainerCommandResponseProto{}, err
-	}
-
-	containerResponse := datanode.ContainerCommandResponseProto{}
-	err = protobuf.Unmarshal(resp.Message.Content, &containerResponse)
-	if err != nil {
-		return containerResponse, err
-	}
-	return containerResponse, nil
-}
-func (dnClient *DatanodeClient) sendRatisMessage(request ratis.RaftClientRequestProto) (ratis.RaftClientReplyProto, error) {
-	resp, err := dnClient.sendRatisMessageToServer(request)
-	if err != nil {
-		return ratis.RaftClientReplyProto{}, err
-	}
-	if resp.GetNotLeaderException() != nil {
-		err = dnClient.connectToNext()
-		if err != nil {
-			return ratis.RaftClientReplyProto{}, err
-		}
-		resp, err = dnClient.sendRatisMessageToServer(request)
-		if err != nil {
-			return ratis.RaftClientReplyProto{}, err
-		}
-	}
-	if resp.GetNotLeaderException() != nil {
-		err = dnClient.connectToNext()
-		if err != nil {
-			return ratis.RaftClientReplyProto{}, err
-		}
-		resp, err = dnClient.sendRatisMessageToServer(request)
-		if err != nil {
-			return ratis.RaftClientReplyProto{}, err
-		}
-	}
-	return resp, nil
-}
-
-func (dnClient *DatanodeClient) sendRatisMessageToServer(request ratis.RaftClientRequestProto) (ratis.RaftClientReplyProto, error) {
-
-	err := (*dnClient.ratisClient).Send(&request)
-	if err != nil {
-		return ratis.RaftClientReplyProto{}, err
-	}
-	resp := <-dnClient.ratisReceiver
-	return resp, err
-}
diff --git a/api/datanode/standalone.go b/api/datanode/standalone.go
deleted file mode 100644
index b9feb69..0000000
--- a/api/datanode/standalone.go
+++ /dev/null
@@ -1,45 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package datanode
-
-import (
-	"fmt"
-	dnapi "github.com/apache/ozone-go/api/proto/datanode"
-	"io"
-)
-
-func (dnClient *DatanodeClient) sendStandaloneDatanodeCommand(proto dnapi.ContainerCommandRequestProto) (dnapi.ContainerCommandResponseProto, error) {
-	err := (*dnClient.standaloneClient).Send(&proto)
-	if err != nil {
-		return dnapi.ContainerCommandResponseProto{}, err
-	}
-	resp := <-dnClient.standaloneReceiver
-	return resp, err
-}
-
-func (dnClient *DatanodeClient) StandaloneReceive() {
-	for {
-		proto, err := (*dnClient.standaloneClient).Recv()
-		if err == io.EOF {
-			return
-		}
-		if err != nil {
-			fmt.Println(err)
-			return
-		}
-		dnClient.standaloneReceiver <- *proto
-	}
-}
diff --git a/api/go.mod b/api/go.mod
deleted file mode 100644
index 5d6e1ec..0000000
--- a/api/go.mod
+++ /dev/null
@@ -1,32 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-module github.com/apache/ozone-go/api
-
-go 1.13
-
-require (
-	github.com/golang/protobuf v1.4.3
-	github.com/hortonworks/gohadoop v0.0.0-20180913181356-4e92e1475b38
-	github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d
-	github.com/stretchr/testify v1.7.0
-	golang.org/x/net v0.0.0-20210226172049-e18ecbb05110
-	golang.org/x/sys v0.0.0-20210313202042-bd2e13477e9c // indirect
-	golang.org/x/text v0.3.5 // indirect
-	google.golang.org/genproto v0.0.0-20210312152112-fc591d9ea70f // indirect
-	google.golang.org/grpc v1.36.0
-	google.golang.org/protobuf v1.25.0
-)
diff --git a/api/go.sum b/api/go.sum
deleted file mode 100644
index b3fbbb1..0000000
--- a/api/go.sum
+++ /dev/null
@@ -1,112 +0,0 @@
-cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
-github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
-github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk=
-github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
-github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
-github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
-github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk=
-github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
-github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
-github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
-github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
-github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
-github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
-github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
-github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
-github.com/golang/protobuf v1.4.1 h1:ZFgWrT+bLgsYPirOnRfKLYJLvssAegOj/hgyMFdJZe0=
-github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
-github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM=
-github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
-github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
-github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w=
-github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/hortonworks/gohadoop v0.0.0-20180913181356-4e92e1475b38 h1:Fksvn6jtn0B8nE74Y/6hqcX1DJC3/1jPQQhb61EmWsw=
-github.com/hortonworks/gohadoop v0.0.0-20180913181356-4e92e1475b38/go.mod h1:Vs/bWYFXkega47bl5bp3dkBRDEv3s2kvJaNUoONM86c=
-github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ=
-github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U=
-github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
-github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
-github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
-github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
-golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
-golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=
-golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110 h1:qWPm9rbaAMKs8Bq/9LRpbMqxWRVUAQwMI9fVrssnTfw=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
-golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210313202042-bd2e13477e9c h1:coiPEfMv+ThsjULRDygLrJVlNE1gDdL2g65s0LhV2os=
-golang.org/x/sys v0.0.0-20210313202042-bd2e13477e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
-golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ=
-golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
-golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
-google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
-google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
-google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY=
-google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/genproto v0.0.0-20210312152112-fc591d9ea70f h1:YRBxgxUW6GFi+AKsn8WGA9k1SZohK+gGuEqdeT5aoNQ=
-google.golang.org/genproto v0.0.0-20210312152112-fc591d9ea70f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
-google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
-google.golang.org/grpc v1.27.0 h1:rRYRFMVgRv6E0D70Skyfsr28tDXIuuPZyWGMPdMcnXg=
-google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.36.0 h1:o1bcQ6imQMIOpdrO3SWf2z5RV72WbDwdXuK0MDlc8As=
-google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
-google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
-google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
-google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
-google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
-google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
-google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4=
-google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c=
-google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
-gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
-gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
-gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
diff --git a/api/key.go b/api/key.go
deleted file mode 100644
index a6c7399..0000000
--- a/api/key.go
+++ /dev/null
@@ -1,204 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package api
-
-import (
-	"errors"
-	"github.com/apache/ozone-go/api/common"
-	"github.com/apache/ozone-go/api/datanode"
-	dnproto "github.com/apache/ozone-go/api/proto/datanode"
-	"github.com/apache/ozone-go/api/proto/hdds"
-	omproto "github.com/apache/ozone-go/api/proto/ozone"
-	"io"
-)
-
-func (ozoneClient *OzoneClient) ListKeys(volume string, bucket string) ([]common.Key, error) {
-
-	keys, err := ozoneClient.OmClient.ListKeys(volume, bucket)
-	if err != nil {
-		return make([]common.Key, 0), err
-	}
-
-	ret := make([]common.Key, 0)
-	for _, r := range keys {
-		ret = append(ret, KeyFromProto(r))
-	}
-	return ret, nil
-
-}
-
-func (ozoneClient *OzoneClient) ListKeysPrefix(volume string, bucket string, prefix string) ([]common.Key, error) {
-	keys, err := ozoneClient.OmClient.ListKeysPrefix(volume, bucket, prefix)
-	if err != nil {
-		return make([]common.Key, 0), err
-	}
-
-	ret := make([]common.Key, 0)
-	for _, r := range keys {
-		ret = append(ret, KeyFromProto(r))
-	}
-	return ret, nil
-
-}
-
-func (ozoneClient *OzoneClient) InfoKey(volume string, bucket string, key string) (common.Key, error) {
-	k, err := ozoneClient.OmClient.GetKey(volume, bucket, key)
-	return KeyFromProto(k), err
-}
-
-func (ozoneClient *OzoneClient) GetKey(volume string, bucket string, key string, destination io.Writer) (common.Key, error) {
-	keyInfo, err := ozoneClient.OmClient.GetKey(volume, bucket, key)
-
-	if err != nil {
-		return common.Key{}, err
-	}
-
-	if len(keyInfo.KeyLocationList) == 0 {
-		return common.Key{}, errors.New("Get key returned with zero key location version " + volume + "/" + bucket + "/" + key)
-	}
-
-	if len(keyInfo.KeyLocationList[0].KeyLocations) == 0 {
-		return common.Key{}, errors.New("Key location doesn't have any datanode for key " + volume + "/" + bucket + "/" + key)
-	}
-	for _, location := range keyInfo.KeyLocationList[0].KeyLocations {
-		pipeline := location.Pipeline
-
-		dnBlockId := ConvertBlockId(location.BlockID)
-		dnClient, err := datanode.CreateDatanodeClient(pipeline)
-		chunks, err := dnClient.GetBlock(dnBlockId)
-		if err != nil {
-			return common.Key{}, err
-		}
-		for _, chunk := range chunks {
-			data, err := dnClient.ReadChunk(dnBlockId, chunk)
-			if err != nil {
-				return common.Key{}, err
-			}
-			destination.Write(data)
-		}
-		dnClient.Close()
-	}
-	return common.Key{}, nil
-}
-
-func ConvertBlockId(bid *hdds.BlockID) *dnproto.DatanodeBlockID {
-	id := dnproto.DatanodeBlockID{
-		ContainerID: bid.ContainerBlockID.ContainerID,
-		LocalID:     bid.ContainerBlockID.LocalID,
-	}
-	return &id
-}
-
-func (ozoneClient *OzoneClient) PutKey(volume string, bucket string, key string, source io.Reader) (common.Key, error) {
-	createKey, err := ozoneClient.OmClient.CreateKey(volume, bucket, key)
-	if err != nil {
-		return common.Key{}, err
-	}
-
-	keyInfo := createKey.KeyInfo
-	location := keyInfo.KeyLocationList[0].KeyLocations[0]
-	pipeline := location.Pipeline
-
-	dnClient, err := datanode.CreateDatanodeClient(pipeline)
-	if err != nil {
-		return common.Key{}, err
-	}
-
-	chunkSize := 4096
-	buffer := make([]byte, chunkSize)
-
-	chunks := make([]*dnproto.ChunkInfo, 0)
-	keySize := uint64(0)
-
-	locations := make([]*omproto.KeyLocation, 0)
-
-	blockId := ConvertBlockId(location.BlockID)
-	eof := false
-
-	for ; ; {
-		blockOffset := uint64(0)
-		for i := 0; i < 64; i++ {
-			count, err := source.Read(buffer)
-			if err == io.EOF {
-				eof = true
-			} else if err != nil {
-				return common.Key{}, err
-			}
-			if count > 0 {
-				chunk, err := dnClient.CreateAndWriteChunk(blockId, blockOffset, buffer[0:count], uint64(count))
-				if err != nil {
-					return common.Key{}, err
-				}
-				blockOffset += uint64(count)
-				keySize += uint64(count)
-				chunks = append(chunks, &chunk)
-			}
-			if eof {
-				break
-			}
-		}
-
-		err = dnClient.PutBlock(blockId, chunks)
-		if err != nil {
-			return common.Key{}, err
-		}
-		if eof {
-			break
-		}
-
-		//get new block and reset counters
-
-		nextBlockResponse, err := ozoneClient.OmClient.AllocateBlock(volume, bucket, key, createKey.ID)
-		if err != nil {
-			return common.Key{}, err
-		}
-
-		dnClient.Close()
-		location = nextBlockResponse.KeyLocation
-		pipeline = location.Pipeline
-		dnClient, err = datanode.CreateDatanodeClient(pipeline)
-		if err != nil {
-			return common.Key{}, err
-		}
-		blockId = ConvertBlockId(location.BlockID)
-		blockOffset = 0
-		chunks = make([]*dnproto.ChunkInfo, 0)
-
-	}
-	zero := uint64(0)
-	locations = append(locations, &omproto.KeyLocation{
-		BlockID:  location.BlockID,
-		Pipeline: location.Pipeline,
-		Length:   &keySize,
-		Offset:   &zero,
-	})
-
-	ozoneClient.OmClient.CommitKey(volume, bucket, key, createKey.ID, locations, keySize)
-	return common.Key{}, nil
-}
-
-func KeyFromProto(keyProto *omproto.KeyInfo) common.Key {
-	replicationType := common.ReplicationType(*keyProto.Type)
-
-	result := common.Key{
-		Name:        *keyProto.KeyName,
-		Replication: replicationType,
-		VolumeName:  *keyProto.VolumeName,
-		BucketName:  *keyProto.BucketName,
-		Size:        *keyProto.DataSize,
-	}
-	return result
-}
diff --git a/api/om/bucket.go b/api/om/bucket.go
deleted file mode 100644
index fb6b843..0000000
--- a/api/om/bucket.go
+++ /dev/null
@@ -1,105 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package om
-
-import (
-	"github.com/apache/ozone-go/api/common"
-	ozone_proto "github.com/apache/ozone-go/api/proto/ozone"
-)
-
-func (om *OmClient) CreateBucket(volume string, bucket string) error {
-	isVersionEnabled := false
-	storageType := ozone_proto.StorageTypeProto_DISK
-	bucketInfo := ozone_proto.BucketInfo{
-		BucketName:       &bucket,
-		VolumeName:       &volume,
-		IsVersionEnabled: &isVersionEnabled,
-		StorageType:      &storageType,
-
-	}
-	req := ozone_proto.CreateBucketRequest{
-		BucketInfo: &bucketInfo,
-	}
-
-	cmdType := ozone_proto.Type_CreateBucket
-	wrapperRequest := ozone_proto.OMRequest{
-		CmdType:             &cmdType,
-		CreateBucketRequest: &req,
-		ClientId:            &om.clientId,
-	}
-
-	_, err := om.submitRequest(&wrapperRequest)
-	if err != nil {
-		return err
-	}
-	return nil
-}
-
-func (om *OmClient) GetBucket(volume string, bucket string) (common.Bucket, error) {
-	req := ozone_proto.InfoBucketRequest{
-		VolumeName: &volume,
-		BucketName: &bucket,
-	}
-
-	cmdType := ozone_proto.Type_InfoBucket
-	wrapperRequest := ozone_proto.OMRequest{
-		CmdType:           &cmdType,
-		InfoBucketRequest: &req,
-		ClientId:          &om.clientId,
-	}
-
-	resp, err := om.submitRequest(&wrapperRequest)
-	if err != nil {
-		return common.Bucket{}, err
-	}
-	b := common.Bucket{
-		Name:       *resp.InfoBucketResponse.BucketInfo.BucketName,
-		VolumeName: *resp.InfoBucketResponse.BucketInfo.VolumeName,
-	}
-	return b, nil
-}
-
-func (om *OmClient) ListBucket(volume string) ([]common.Bucket, error) {
-	res := make([]common.Bucket, 0)
-
-	req := ozone_proto.ListBucketsRequest{
-		VolumeName: &volume,
-		StartKey:   ptr(""),
-		Count:      ptri(100),
-	}
-
-	cmdType := ozone_proto.Type_ListBuckets
-	wrapperRequest := ozone_proto.OMRequest{
-		CmdType:            &cmdType,
-		ListBucketsRequest: &req,
-		ClientId:           &om.clientId,
-	}
-
-	resp, err := om.submitRequest(&wrapperRequest)
-	if err != nil {
-		return res, err
-	}
-	for _, b := range resp.ListBucketsResponse.BucketInfo {
-		cb := common.Bucket{
-			Name:       *b.BucketName,
-			VolumeName: *b.VolumeName,
-		}
-		res = append(res, cb)
-	}
-	return res, nil
-}
-
-
diff --git a/api/om/om.go b/api/om/om.go
deleted file mode 100644
index 41ce98e..0000000
--- a/api/om/om.go
+++ /dev/null
@@ -1,215 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package om
-
-import (
-	"errors"
-	"github.com/apache/ozone-go/api/common"
-	"github.com/apache/ozone-go/api/proto/hdds"
-	ozone_proto "github.com/apache/ozone-go/api/proto/ozone"
-	"github.com/hortonworks/gohadoop"
-	hadoop_ipc_client "github.com/hortonworks/gohadoop/hadoop_common/ipc/client"
-	uuid "github.com/nu7hatch/gouuid"
-	"net"
-	"strconv"
-	"sync"
-)
-
-var OM_PROTOCOL = "org.apache.hadoop.ozone.om.protocol.OzoneManagerProtocol"
-
-type OmClient struct {
-	OmHost   string
-	client   *hadoop_ipc_client.Client
-	clientId string
-	mu       sync.Mutex
-}
-
-func CreateOmClient(omhost string) OmClient {
-	clientId, _ := uuid.NewV4()
-	ugi, _ := gohadoop.CreateSimpleUGIProto()
-	c := &hadoop_ipc_client.Client{
-		ClientId:      clientId,
-		Ugi:           ugi,
-		ServerAddress: net.JoinHostPort(omhost, strconv.Itoa(9862))}
-
-	return OmClient{
-		OmHost: omhost,
-		client: c,
-	}
-}
-
-func (om *OmClient) GetKey(volume string, bucket string, key string) (*ozone_proto.KeyInfo, error) {
-
-	keyArgs := &ozone_proto.KeyArgs{
-		VolumeName: &volume,
-		BucketName: &bucket,
-		KeyName:    &key,
-	}
-	req := ozone_proto.LookupKeyRequest{
-		KeyArgs: keyArgs,
-	}
-
-	requestType := ozone_proto.Type_LookupKey
-	wrapperRequest := ozone_proto.OMRequest{
-		CmdType:          &requestType,
-		LookupKeyRequest: &req,
-		ClientId:         &om.clientId,
-	}
-
-	resp, err := om.submitRequest(&wrapperRequest)
-	if err != nil {
-		return nil, err
-	}
-	keyProto := resp.GetLookupKeyResponse().GetKeyInfo()
-	println(keyProto)
-	return keyProto, nil
-}
-
-func (om *OmClient) ListKeys(volume string, bucket string) ([]*ozone_proto.KeyInfo, error) {
-	return om.ListKeysPrefix(volume, bucket, "")
-
-}
-
-func (om *OmClient) AllocateBlock(volume string, bucket string, key string, clientID *uint64) (*ozone_proto.AllocateBlockResponse,error) {
-	req := ozone_proto.AllocateBlockRequest{
-		KeyArgs: &ozone_proto.KeyArgs{
-			VolumeName: &volume,
-			BucketName: &bucket,
-			KeyName:    &key,
-		},
-		ClientID: clientID,
-	}
-
-	msgType := ozone_proto.Type_AllocateBlock
-	wrapperRequest := ozone_proto.OMRequest{
-		CmdType:              &msgType,
-		AllocateBlockRequest: &req,
-		ClientId:             &om.clientId,
-	}
-	resp, err := om.submitRequest(&wrapperRequest)
-	if err != nil {
-		return nil, err
-	}
-	return resp.AllocateBlockResponse, nil
-}
-
-func (om *OmClient) CreateKey(volume string, bucket string, key string) (*ozone_proto.CreateKeyResponse, error) {
-	req := ozone_proto.CreateKeyRequest{
-		KeyArgs: &ozone_proto.KeyArgs{
-			VolumeName: &volume,
-			BucketName: &bucket,
-			KeyName:    &key,
-		},
-	}
-
-	createKeys := ozone_proto.Type_CreateKey
-	wrapperRequest := ozone_proto.OMRequest{
-		CmdType:          &createKeys,
-		CreateKeyRequest: &req,
-		ClientId:         &om.clientId,
-	}
-	resp, err := om.submitRequest(&wrapperRequest)
-	if err != nil {
-		return nil, err
-	}
-	return resp.CreateKeyResponse, nil
-}
-
-func (om *OmClient) CommitKey(volume string, bucket string, key string, id *uint64, keyLocations []*ozone_proto.KeyLocation, size uint64) (common.Key, error) {
-	one := hdds.ReplicationFactor_ONE
-	standalone := hdds.ReplicationType_STAND_ALONE
-	req := ozone_proto.CommitKeyRequest{
-		KeyArgs: &ozone_proto.KeyArgs{
-			VolumeName:   &volume,
-			BucketName:   &bucket,
-			KeyName:      &key,
-			KeyLocations: keyLocations,
-			DataSize:     &size,
-			Factor:       &one,
-			Type:         &standalone,
-		},
-		ClientID: id,
-	}
-
-	messageType := ozone_proto.Type_CommitKey
-	wrapperRequest := ozone_proto.OMRequest{
-		CmdType:          &messageType,
-		CommitKeyRequest: &req,
-		ClientId:         &om.clientId,
-	}
-	_, err := om.submitRequest(&wrapperRequest)
-	if err != nil {
-		return common.Key{}, err
-	}
-
-	return common.Key{}, nil
-}
-
-func (om *OmClient) ListKeysPrefix(volume string, bucket string, prefix string) ([]*ozone_proto.KeyInfo, error) {
-
-	req := ozone_proto.ListKeysRequest{
-		VolumeName: &volume,
-		BucketName: &bucket,
-		Prefix:     ptr(prefix),
-		Count:      ptri(1000),
-	}
-
-	listKeys := ozone_proto.Type_ListKeys
-	wrapperRequest := ozone_proto.OMRequest{
-		CmdType:         &listKeys,
-		ListKeysRequest: &req,
-		ClientId:        &om.clientId,
-	}
-
-	resp, err := om.submitRequest(&wrapperRequest)
-	if err != nil {
-		return nil, err
-	}
-
-	return resp.GetListKeysResponse().GetKeyInfo(), nil
-}
-
-func getRpcPort(ports []*hdds.Port) uint32 {
-	for _, port := range ports {
-		if port.GetName() == "RATIS" {
-			return port.GetValue()
-		}
-	}
-	return 0
-}
-
-func ptri(i int32) *int32 {
-	return &i
-}
-
-func ptr(s string) *string {
-	return &s
-}
-
-func (om *OmClient) submitRequest(request *ozone_proto.OMRequest, ) (*ozone_proto.OMResponse, error) {
-	wrapperResponse := ozone_proto.OMResponse{}
-	om.mu.Lock()
-	err := om.client.Call(gohadoop.GetCalleeRPCRequestHeaderProto(&OM_PROTOCOL), request, &wrapperResponse)
-	om.mu.Unlock()
-	if err != nil {
-		return nil, err
-	}
-	if *wrapperResponse.Status != ozone_proto.Status_OK {
-		return nil, errors.New("Error on calling OM " + wrapperResponse.Status.String() + " " + *wrapperResponse.Message)
-	}
-	return &wrapperResponse, nil
-}
-
diff --git a/api/om/volume.go b/api/om/volume.go
deleted file mode 100644
index 43fa85d..0000000
--- a/api/om/volume.go
+++ /dev/null
@@ -1,99 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package om
-
-import (
-	"github.com/apache/ozone-go/api/common"
-	ozone_proto "github.com/apache/ozone-go/api/proto/ozone"
-)
-
-func (om *OmClient) ListVolumes() ([]common.Volume, error) {
-	scope := ozone_proto.ListVolumeRequest_VOLUMES_BY_USER
-	req := ozone_proto.ListVolumeRequest{
-		Scope:    &scope,
-		UserName: ptr("hadoop"),
-		Prefix:   ptr(""),
-	}
-
-	listKeys := ozone_proto.Type_ListVolume
-	clientId := "goClient"
-	wrapperRequest := ozone_proto.OMRequest{
-		CmdType:           &listKeys,
-		ListVolumeRequest: &req,
-		ClientId:          &clientId,
-	}
-
-	volumes := make([]common.Volume, 0)
-	resp, err := om.submitRequest(&wrapperRequest)
-	if err != nil {
-		return nil, err
-	}
-	for _, volProto := range resp.GetListVolumeResponse().GetVolumeInfo() {
-		volumes = append(volumes, common.Volume{Name: *volProto.Volume})
-	}
-	return volumes, nil
-}
-
-func (om *OmClient) CreateVolume(name string) error {
-	onegig := uint64(1024 * 1024 * 1024)
-	volumeInfo := ozone_proto.VolumeInfo{
-		AdminName:    ptr("hadoop"),
-		OwnerName:    ptr("hadoop"),
-		Volume:       ptr(name),
-		QuotaInBytes: &onegig,
-	}
-	req := ozone_proto.CreateVolumeRequest{
-		VolumeInfo: &volumeInfo,
-	}
-
-	cmdType := ozone_proto.Type_CreateVolume
-	clientId := "goClient"
-	wrapperRequest := ozone_proto.OMRequest{
-		CmdType:             &cmdType,
-		CreateVolumeRequest: &req,
-		ClientId:            &clientId,
-	}
-
-	_, err := om.submitRequest(&wrapperRequest)
-	if err != nil {
-		return err
-	}
-	return nil
-}
-
-func (om *OmClient) GetVolume(name string) (common.Volume, error) {
-	req := ozone_proto.InfoVolumeRequest{
-		VolumeName: &name,
-	}
-
-	cmdType := ozone_proto.Type_InfoVolume
-	wrapperRequest := ozone_proto.OMRequest{
-		CmdType:           &cmdType,
-		InfoVolumeRequest: &req,
-		ClientId:          &om.clientId,
-	}
-
-	resp, err := om.submitRequest(&wrapperRequest)
-	if err != nil {
-		return common.Volume{}, err
-	}
-
-	vol := common.Volume{}
-	vol.Name = *resp.InfoVolumeResponse.VolumeInfo.Volume
-	vol.Owner = *resp.InfoVolumeResponse.VolumeInfo.OwnerName
-
-	return vol, nil
-}
diff --git a/api/ozone.go b/api/ozone.go
deleted file mode 100644
index 937e644..0000000
--- a/api/ozone.go
+++ /dev/null
@@ -1,31 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package api
-
-import (
-	"github.com/apache/ozone-go/api/om"
-)
-
-type OzoneClient struct {
-	OmClient *om.OmClient
-}
-
-func CreateOzoneClient(omhost string) *OzoneClient {
-	client := om.CreateOmClient(omhost)
-	return &OzoneClient{
-		OmClient: &client,
-	}
-}
diff --git a/api/ozone_test.go b/api/ozone_test.go
deleted file mode 100644
index 17d1688..0000000
--- a/api/ozone_test.go
+++ /dev/null
@@ -1,68 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package api
-
-import (
-	"fmt"
-	"math/rand"
-	"testing"
-	"time"
-)
-import "github.com/stretchr/testify/assert"
-
-func randomName(prefix string) string {
-	seq := rand.New(rand.NewSource(time.Now().Unix())).Int31()
-	return prefix + fmt.Sprintf("%d", seq)
-}
-
-func TestOzoneClientVolumeCreateGet(t *testing.T) {
-	client := CreateOzoneClient("localhost")
-
-	volumeName := randomName("vol")
-	err := client.CreateVolume(volumeName)
-	assert.Nil(t, err)
-
-	vol, err := client.GetVolume(volumeName)
-	assert.Nil(t, err)
-
-	assert.Equal(t, volumeName, vol.Name)
-}
-
-func TestOzoneClientBucketCreateGet(t *testing.T) {
-
-	client := CreateOzoneClient("localhost")
-
-	//volumeName := "vol1"
-	volumeName := randomName("vol")
-	bucketName := randomName("bucket")
-
-	err := client.CreateVolume(volumeName)
-	assert.Nil(t, err)
-
-	time.Sleep(4 * time.Second)
-
-
-
-
-	err = client.CreateBucket(volumeName, bucketName)
-	assert.Nil(t, err)
-
-	bucket, err := client.GetBucket(volumeName, bucketName)
-	assert.Nil(t, err)
-
-	assert.Equal(t, bucketName, bucket.Name)
-	assert.Equal(t, volumeName, bucket.VolumeName)
-}
diff --git a/api/proto/common/Security.pb.go b/api/proto/common/Security.pb.go
deleted file mode 100644
index f907fa2..0000000
--- a/api/proto/common/Security.pb.go
+++ /dev/null
@@ -1,745 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// 	protoc-gen-go v1.24.0
-// 	protoc        v3.15.6
-// source: Security.proto
-
-package common
-
-import (
-	proto "github.com/golang/protobuf/proto"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-const (
-	// Verify that this generated code is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
-	// Verify that runtime/protoimpl is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// This is a compile-time assertion that a sufficiently up-to-date version
-// of the legacy proto package is being used.
-const _ = proto.ProtoPackageIsVersion4
-
-//*
-// Security token identifier
-type TokenProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Identifier []byte  `protobuf:"bytes,1,req,name=identifier" json:"identifier,omitempty"`
-	Password   []byte  `protobuf:"bytes,2,req,name=password" json:"password,omitempty"`
-	Kind       *string `protobuf:"bytes,3,req,name=kind" json:"kind,omitempty"`
-	Service    *string `protobuf:"bytes,4,req,name=service" json:"service,omitempty"`
-}
-
-func (x *TokenProto) Reset() {
-	*x = TokenProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_Security_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *TokenProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*TokenProto) ProtoMessage() {}
-
-func (x *TokenProto) ProtoReflect() protoreflect.Message {
-	mi := &file_Security_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use TokenProto.ProtoReflect.Descriptor instead.
-func (*TokenProto) Descriptor() ([]byte, []int) {
-	return file_Security_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *TokenProto) GetIdentifier() []byte {
-	if x != nil {
-		return x.Identifier
-	}
-	return nil
-}
-
-func (x *TokenProto) GetPassword() []byte {
-	if x != nil {
-		return x.Password
-	}
-	return nil
-}
-
-func (x *TokenProto) GetKind() string {
-	if x != nil && x.Kind != nil {
-		return *x.Kind
-	}
-	return ""
-}
-
-func (x *TokenProto) GetService() string {
-	if x != nil && x.Service != nil {
-		return *x.Service
-	}
-	return ""
-}
-
-type CredentialsKVProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Alias  *string     `protobuf:"bytes,1,req,name=alias" json:"alias,omitempty"`
-	Token  *TokenProto `protobuf:"bytes,2,opt,name=token" json:"token,omitempty"`
-	Secret []byte      `protobuf:"bytes,3,opt,name=secret" json:"secret,omitempty"`
-}
-
-func (x *CredentialsKVProto) Reset() {
-	*x = CredentialsKVProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_Security_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CredentialsKVProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CredentialsKVProto) ProtoMessage() {}
-
-func (x *CredentialsKVProto) ProtoReflect() protoreflect.Message {
-	mi := &file_Security_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CredentialsKVProto.ProtoReflect.Descriptor instead.
-func (*CredentialsKVProto) Descriptor() ([]byte, []int) {
-	return file_Security_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *CredentialsKVProto) GetAlias() string {
-	if x != nil && x.Alias != nil {
-		return *x.Alias
-	}
-	return ""
-}
-
-func (x *CredentialsKVProto) GetToken() *TokenProto {
-	if x != nil {
-		return x.Token
-	}
-	return nil
-}
-
-func (x *CredentialsKVProto) GetSecret() []byte {
-	if x != nil {
-		return x.Secret
-	}
-	return nil
-}
-
-type CredentialsProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Tokens  []*CredentialsKVProto `protobuf:"bytes,1,rep,name=tokens" json:"tokens,omitempty"`
-	Secrets []*CredentialsKVProto `protobuf:"bytes,2,rep,name=secrets" json:"secrets,omitempty"`
-}
-
-func (x *CredentialsProto) Reset() {
-	*x = CredentialsProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_Security_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CredentialsProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CredentialsProto) ProtoMessage() {}
-
-func (x *CredentialsProto) ProtoReflect() protoreflect.Message {
-	mi := &file_Security_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CredentialsProto.ProtoReflect.Descriptor instead.
-func (*CredentialsProto) Descriptor() ([]byte, []int) {
-	return file_Security_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *CredentialsProto) GetTokens() []*CredentialsKVProto {
-	if x != nil {
-		return x.Tokens
-	}
-	return nil
-}
-
-func (x *CredentialsProto) GetSecrets() []*CredentialsKVProto {
-	if x != nil {
-		return x.Secrets
-	}
-	return nil
-}
-
-type GetDelegationTokenRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Renewer *string `protobuf:"bytes,1,req,name=renewer" json:"renewer,omitempty"`
-}
-
-func (x *GetDelegationTokenRequestProto) Reset() {
-	*x = GetDelegationTokenRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_Security_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GetDelegationTokenRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetDelegationTokenRequestProto) ProtoMessage() {}
-
-func (x *GetDelegationTokenRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_Security_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetDelegationTokenRequestProto.ProtoReflect.Descriptor instead.
-func (*GetDelegationTokenRequestProto) Descriptor() ([]byte, []int) {
-	return file_Security_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *GetDelegationTokenRequestProto) GetRenewer() string {
-	if x != nil && x.Renewer != nil {
-		return *x.Renewer
-	}
-	return ""
-}
-
-type GetDelegationTokenResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Token *TokenProto `protobuf:"bytes,1,opt,name=token" json:"token,omitempty"`
-}
-
-func (x *GetDelegationTokenResponseProto) Reset() {
-	*x = GetDelegationTokenResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_Security_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GetDelegationTokenResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetDelegationTokenResponseProto) ProtoMessage() {}
-
-func (x *GetDelegationTokenResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_Security_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetDelegationTokenResponseProto.ProtoReflect.Descriptor instead.
-func (*GetDelegationTokenResponseProto) Descriptor() ([]byte, []int) {
-	return file_Security_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *GetDelegationTokenResponseProto) GetToken() *TokenProto {
-	if x != nil {
-		return x.Token
-	}
-	return nil
-}
-
-type RenewDelegationTokenRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Token *TokenProto `protobuf:"bytes,1,req,name=token" json:"token,omitempty"`
-}
-
-func (x *RenewDelegationTokenRequestProto) Reset() {
-	*x = RenewDelegationTokenRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_Security_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *RenewDelegationTokenRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RenewDelegationTokenRequestProto) ProtoMessage() {}
-
-func (x *RenewDelegationTokenRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_Security_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use RenewDelegationTokenRequestProto.ProtoReflect.Descriptor instead.
-func (*RenewDelegationTokenRequestProto) Descriptor() ([]byte, []int) {
-	return file_Security_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *RenewDelegationTokenRequestProto) GetToken() *TokenProto {
-	if x != nil {
-		return x.Token
-	}
-	return nil
-}
-
-type RenewDelegationTokenResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	NewExpiryTime *uint64 `protobuf:"varint,1,req,name=newExpiryTime" json:"newExpiryTime,omitempty"`
-}
-
-func (x *RenewDelegationTokenResponseProto) Reset() {
-	*x = RenewDelegationTokenResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_Security_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *RenewDelegationTokenResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*RenewDelegationTokenResponseProto) ProtoMessage() {}
-
-func (x *RenewDelegationTokenResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_Security_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use RenewDelegationTokenResponseProto.ProtoReflect.Descriptor instead.
-func (*RenewDelegationTokenResponseProto) Descriptor() ([]byte, []int) {
-	return file_Security_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *RenewDelegationTokenResponseProto) GetNewExpiryTime() uint64 {
-	if x != nil && x.NewExpiryTime != nil {
-		return *x.NewExpiryTime
-	}
-	return 0
-}
-
-type CancelDelegationTokenRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Token *TokenProto `protobuf:"bytes,1,req,name=token" json:"token,omitempty"`
-}
-
-func (x *CancelDelegationTokenRequestProto) Reset() {
-	*x = CancelDelegationTokenRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_Security_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CancelDelegationTokenRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CancelDelegationTokenRequestProto) ProtoMessage() {}
-
-func (x *CancelDelegationTokenRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_Security_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CancelDelegationTokenRequestProto.ProtoReflect.Descriptor instead.
-func (*CancelDelegationTokenRequestProto) Descriptor() ([]byte, []int) {
-	return file_Security_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *CancelDelegationTokenRequestProto) GetToken() *TokenProto {
-	if x != nil {
-		return x.Token
-	}
-	return nil
-}
-
-type CancelDelegationTokenResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *CancelDelegationTokenResponseProto) Reset() {
-	*x = CancelDelegationTokenResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_Security_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CancelDelegationTokenResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CancelDelegationTokenResponseProto) ProtoMessage() {}
-
-func (x *CancelDelegationTokenResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_Security_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CancelDelegationTokenResponseProto.ProtoReflect.Descriptor instead.
-func (*CancelDelegationTokenResponseProto) Descriptor() ([]byte, []int) {
-	return file_Security_proto_rawDescGZIP(), []int{8}
-}
-
-var File_Security_proto protoreflect.FileDescriptor
-
-var file_Security_proto_rawDesc = []byte{
-	0x0a, 0x0e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x12, 0x0d, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x22,
-	0x76, 0x0a, 0x0a, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1e, 0x0a,
-	0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x01, 0x20, 0x02, 0x28,
-	0x0c, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x1a, 0x0a,
-	0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0c, 0x52,
-	0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6b, 0x69, 0x6e,
-	0x64, 0x18, 0x03, 0x20, 0x02, 0x28, 0x09, 0x52, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x12, 0x18, 0x0a,
-	0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x02, 0x28, 0x09, 0x52, 0x07,
-	0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x73, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x64, 0x65,
-	0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x4b, 0x56, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x0a,
-	0x05, 0x61, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x05, 0x61, 0x6c,
-	0x69, 0x61, 0x73, 0x12, 0x2f, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x19, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
-	0x6f, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x74,
-	0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x22, 0x8a, 0x01, 0x0a,
-	0x10, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74,
-	0x6f, 0x12, 0x39, 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x21, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
-	0x6e, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x4b, 0x56, 0x50,
-	0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x3b, 0x0a, 0x07,
-	0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e,
-	0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x43, 0x72,
-	0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x73, 0x4b, 0x56, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x52, 0x07, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x73, 0x22, 0x3a, 0x0a, 0x1e, 0x47, 0x65, 0x74,
-	0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x72,
-	0x65, 0x6e, 0x65, 0x77, 0x65, 0x72, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x07, 0x72, 0x65,
-	0x6e, 0x65, 0x77, 0x65, 0x72, 0x22, 0x52, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x6c, 0x65,
-	0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x2f, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65,
-	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70,
-	0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x50, 0x72, 0x6f,
-	0x74, 0x6f, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x53, 0x0a, 0x20, 0x52, 0x65, 0x6e,
-	0x65, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65,
-	0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x2f, 0x0a,
-	0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x68,
-	0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x6f, 0x6b,
-	0x65, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x49,
-	0x0a, 0x21, 0x52, 0x65, 0x6e, 0x65, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72,
-	0x6f, 0x74, 0x6f, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x65, 0x77, 0x45, 0x78, 0x70, 0x69, 0x72, 0x79,
-	0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x04, 0x52, 0x0d, 0x6e, 0x65, 0x77, 0x45,
-	0x78, 0x70, 0x69, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x54, 0x0a, 0x21, 0x43, 0x61, 0x6e,
-	0x63, 0x65, 0x6c, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b,
-	0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x2f,
-	0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x19, 0x2e,
-	0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x6f,
-	0x6b, 0x65, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22,
-	0x24, 0x0a, 0x22, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x44, 0x65, 0x6c, 0x65, 0x67, 0x61, 0x74,
-	0x69, 0x6f, 0x6e, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x6b, 0x0a, 0x26, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61,
-	0x63, 0x68, 0x65, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x6f, 0x7a, 0x6f, 0x6e, 0x65,
-	0x2e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42,
-	0x0e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x5a,
-	0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x61, 0x63,
-	0x68, 0x65, 0x2f, 0x6f, 0x7a, 0x6f, 0x6e, 0x65, 0x2d, 0x67, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0xa0,
-	0x01, 0x01,
-}
-
-var (
-	file_Security_proto_rawDescOnce sync.Once
-	file_Security_proto_rawDescData = file_Security_proto_rawDesc
-)
-
-func file_Security_proto_rawDescGZIP() []byte {
-	file_Security_proto_rawDescOnce.Do(func() {
-		file_Security_proto_rawDescData = protoimpl.X.CompressGZIP(file_Security_proto_rawDescData)
-	})
-	return file_Security_proto_rawDescData
-}
-
-var file_Security_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
-var file_Security_proto_goTypes = []interface{}{
-	(*TokenProto)(nil),                         // 0: hadoop.common.TokenProto
-	(*CredentialsKVProto)(nil),                 // 1: hadoop.common.CredentialsKVProto
-	(*CredentialsProto)(nil),                   // 2: hadoop.common.CredentialsProto
-	(*GetDelegationTokenRequestProto)(nil),     // 3: hadoop.common.GetDelegationTokenRequestProto
-	(*GetDelegationTokenResponseProto)(nil),    // 4: hadoop.common.GetDelegationTokenResponseProto
-	(*RenewDelegationTokenRequestProto)(nil),   // 5: hadoop.common.RenewDelegationTokenRequestProto
-	(*RenewDelegationTokenResponseProto)(nil),  // 6: hadoop.common.RenewDelegationTokenResponseProto
-	(*CancelDelegationTokenRequestProto)(nil),  // 7: hadoop.common.CancelDelegationTokenRequestProto
-	(*CancelDelegationTokenResponseProto)(nil), // 8: hadoop.common.CancelDelegationTokenResponseProto
-}
-var file_Security_proto_depIdxs = []int32{
-	0, // 0: hadoop.common.CredentialsKVProto.token:type_name -> hadoop.common.TokenProto
-	1, // 1: hadoop.common.CredentialsProto.tokens:type_name -> hadoop.common.CredentialsKVProto
-	1, // 2: hadoop.common.CredentialsProto.secrets:type_name -> hadoop.common.CredentialsKVProto
-	0, // 3: hadoop.common.GetDelegationTokenResponseProto.token:type_name -> hadoop.common.TokenProto
-	0, // 4: hadoop.common.RenewDelegationTokenRequestProto.token:type_name -> hadoop.common.TokenProto
-	0, // 5: hadoop.common.CancelDelegationTokenRequestProto.token:type_name -> hadoop.common.TokenProto
-	6, // [6:6] is the sub-list for method output_type
-	6, // [6:6] is the sub-list for method input_type
-	6, // [6:6] is the sub-list for extension type_name
-	6, // [6:6] is the sub-list for extension extendee
-	0, // [0:6] is the sub-list for field type_name
-}
-
-func init() { file_Security_proto_init() }
-func file_Security_proto_init() {
-	if File_Security_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_Security_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TokenProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_Security_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CredentialsKVProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_Security_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CredentialsProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_Security_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetDelegationTokenRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_Security_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetDelegationTokenResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_Security_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*RenewDelegationTokenRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_Security_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*RenewDelegationTokenResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_Security_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CancelDelegationTokenRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_Security_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CancelDelegationTokenResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_Security_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   9,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_Security_proto_goTypes,
-		DependencyIndexes: file_Security_proto_depIdxs,
-		MessageInfos:      file_Security_proto_msgTypes,
-	}.Build()
-	File_Security_proto = out.File
-	file_Security_proto_rawDesc = nil
-	file_Security_proto_goTypes = nil
-	file_Security_proto_depIdxs = nil
-}
diff --git a/api/proto/datanode/DatanodeClientProtocol.pb.go b/api/proto/datanode/DatanodeClientProtocol.pb.go
deleted file mode 100644
index 7008fd5..0000000
--- a/api/proto/datanode/DatanodeClientProtocol.pb.go
+++ /dev/null
@@ -1,4876 +0,0 @@
-//*
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//*
-// These .proto interfaces are private and Unstable.
-// Please see http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/InterfaceClassification.html
-// for what changes are allowed for a *Unstable* .proto interface.
-
-// This file contains protocol buffers that are used to transfer data
-// to and from the datanode.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// 	protoc-gen-go v1.24.0
-// 	protoc        v3.15.6
-// source: DatanodeClientProtocol.proto
-
-package datanode
-
-import (
-	context "context"
-	proto "github.com/golang/protobuf/proto"
-	grpc "google.golang.org/grpc"
-	codes "google.golang.org/grpc/codes"
-	status "google.golang.org/grpc/status"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-const (
-	// Verify that this generated code is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
-	// Verify that runtime/protoimpl is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// This is a compile-time assertion that a sufficiently up-to-date version
-// of the legacy proto package is being used.
-const _ = proto.ProtoPackageIsVersion4
-
-type Type int32
-
-const (
-	Type_CreateContainer Type = 1
-	Type_ReadContainer   Type = 2
-	Type_UpdateContainer Type = 3
-	Type_DeleteContainer Type = 4
-	Type_ListContainer   Type = 5
-	Type_PutBlock        Type = 6
-	Type_GetBlock        Type = 7
-	Type_DeleteBlock     Type = 8
-	Type_ListBlock       Type = 9
-	Type_ReadChunk       Type = 10
-	Type_DeleteChunk     Type = 11
-	Type_WriteChunk      Type = 12
-	Type_ListChunk       Type = 13
-	Type_CompactChunk    Type = 14
-	//* Combines Block and Chunk Operation into Single RPC.
-	Type_PutSmallFile            Type = 15
-	Type_GetSmallFile            Type = 16
-	Type_CloseContainer          Type = 17
-	Type_GetCommittedBlockLength Type = 18
-)
-
-// Enum value maps for Type.
-var (
-	Type_name = map[int32]string{
-		1:  "CreateContainer",
-		2:  "ReadContainer",
-		3:  "UpdateContainer",
-		4:  "DeleteContainer",
-		5:  "ListContainer",
-		6:  "PutBlock",
-		7:  "GetBlock",
-		8:  "DeleteBlock",
-		9:  "ListBlock",
-		10: "ReadChunk",
-		11: "DeleteChunk",
-		12: "WriteChunk",
-		13: "ListChunk",
-		14: "CompactChunk",
-		15: "PutSmallFile",
-		16: "GetSmallFile",
-		17: "CloseContainer",
-		18: "GetCommittedBlockLength",
-	}
-	Type_value = map[string]int32{
-		"CreateContainer":         1,
-		"ReadContainer":           2,
-		"UpdateContainer":         3,
-		"DeleteContainer":         4,
-		"ListContainer":           5,
-		"PutBlock":                6,
-		"GetBlock":                7,
-		"DeleteBlock":             8,
-		"ListBlock":               9,
-		"ReadChunk":               10,
-		"DeleteChunk":             11,
-		"WriteChunk":              12,
-		"ListChunk":               13,
-		"CompactChunk":            14,
-		"PutSmallFile":            15,
-		"GetSmallFile":            16,
-		"CloseContainer":          17,
-		"GetCommittedBlockLength": 18,
-	}
-)
-
-func (x Type) Enum() *Type {
-	p := new(Type)
-	*p = x
-	return p
-}
-
-func (x Type) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Type) Descriptor() protoreflect.EnumDescriptor {
-	return file_DatanodeClientProtocol_proto_enumTypes[0].Descriptor()
-}
-
-func (Type) Type() protoreflect.EnumType {
-	return &file_DatanodeClientProtocol_proto_enumTypes[0]
-}
-
-func (x Type) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Type) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Type(num)
-	return nil
-}
-
-// Deprecated: Use Type.Descriptor instead.
-func (Type) EnumDescriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{0}
-}
-
-type Result int32
-
-const (
-	Result_SUCCESS                         Result = 1
-	Result_UNSUPPORTED_REQUEST             Result = 2
-	Result_MALFORMED_REQUEST               Result = 3
-	Result_CONTAINER_INTERNAL_ERROR        Result = 4
-	Result_INVALID_CONFIG                  Result = 5
-	Result_INVALID_FILE_HASH_FOUND         Result = 6
-	Result_CONTAINER_EXISTS                Result = 7
-	Result_NO_SUCH_ALGORITHM               Result = 8
-	Result_CONTAINER_NOT_FOUND             Result = 9
-	Result_IO_EXCEPTION                    Result = 10
-	Result_UNABLE_TO_READ_METADATA_DB      Result = 11
-	Result_NO_SUCH_BLOCK                   Result = 12
-	Result_OVERWRITE_FLAG_REQUIRED         Result = 13
-	Result_UNABLE_TO_FIND_DATA_DIR         Result = 14
-	Result_INVALID_WRITE_SIZE              Result = 15
-	Result_CHECKSUM_MISMATCH               Result = 16
-	Result_UNABLE_TO_FIND_CHUNK            Result = 17
-	Result_PROTOC_DECODING_ERROR           Result = 18
-	Result_INVALID_ARGUMENT                Result = 19
-	Result_PUT_SMALL_FILE_ERROR            Result = 20
-	Result_GET_SMALL_FILE_ERROR            Result = 21
-	Result_CLOSED_CONTAINER_IO             Result = 22
-	Result_ERROR_IN_COMPACT_DB             Result = 24
-	Result_UNCLOSED_CONTAINER_IO           Result = 25
-	Result_DELETE_ON_OPEN_CONTAINER        Result = 26
-	Result_CLOSED_CONTAINER_RETRY          Result = 27
-	Result_INVALID_CONTAINER_STATE         Result = 28
-	Result_DISK_OUT_OF_SPACE               Result = 29
-	Result_CONTAINER_ALREADY_EXISTS        Result = 30
-	Result_CONTAINER_METADATA_ERROR        Result = 31
-	Result_CONTAINER_FILES_CREATE_ERROR    Result = 32
-	Result_CONTAINER_CHECKSUM_ERROR        Result = 33
-	Result_UNKNOWN_CONTAINER_TYPE          Result = 34
-	Result_BLOCK_NOT_COMMITTED             Result = 35
-	Result_CONTAINER_UNHEALTHY             Result = 36
-	Result_UNKNOWN_BCSID                   Result = 37
-	Result_BCSID_MISMATCH                  Result = 38
-	Result_CONTAINER_NOT_OPEN              Result = 39
-	Result_CONTAINER_MISSING               Result = 40
-	Result_BLOCK_TOKEN_VERIFICATION_FAILED Result = 41
-	Result_ERROR_IN_DB_SYNC                Result = 42
-)
-
-// Enum value maps for Result.
-var (
-	Result_name = map[int32]string{
-		1:  "SUCCESS",
-		2:  "UNSUPPORTED_REQUEST",
-		3:  "MALFORMED_REQUEST",
-		4:  "CONTAINER_INTERNAL_ERROR",
-		5:  "INVALID_CONFIG",
-		6:  "INVALID_FILE_HASH_FOUND",
-		7:  "CONTAINER_EXISTS",
-		8:  "NO_SUCH_ALGORITHM",
-		9:  "CONTAINER_NOT_FOUND",
-		10: "IO_EXCEPTION",
-		11: "UNABLE_TO_READ_METADATA_DB",
-		12: "NO_SUCH_BLOCK",
-		13: "OVERWRITE_FLAG_REQUIRED",
-		14: "UNABLE_TO_FIND_DATA_DIR",
-		15: "INVALID_WRITE_SIZE",
-		16: "CHECKSUM_MISMATCH",
-		17: "UNABLE_TO_FIND_CHUNK",
-		18: "PROTOC_DECODING_ERROR",
-		19: "INVALID_ARGUMENT",
-		20: "PUT_SMALL_FILE_ERROR",
-		21: "GET_SMALL_FILE_ERROR",
-		22: "CLOSED_CONTAINER_IO",
-		24: "ERROR_IN_COMPACT_DB",
-		25: "UNCLOSED_CONTAINER_IO",
-		26: "DELETE_ON_OPEN_CONTAINER",
-		27: "CLOSED_CONTAINER_RETRY",
-		28: "INVALID_CONTAINER_STATE",
-		29: "DISK_OUT_OF_SPACE",
-		30: "CONTAINER_ALREADY_EXISTS",
-		31: "CONTAINER_METADATA_ERROR",
-		32: "CONTAINER_FILES_CREATE_ERROR",
-		33: "CONTAINER_CHECKSUM_ERROR",
-		34: "UNKNOWN_CONTAINER_TYPE",
-		35: "BLOCK_NOT_COMMITTED",
-		36: "CONTAINER_UNHEALTHY",
-		37: "UNKNOWN_BCSID",
-		38: "BCSID_MISMATCH",
-		39: "CONTAINER_NOT_OPEN",
-		40: "CONTAINER_MISSING",
-		41: "BLOCK_TOKEN_VERIFICATION_FAILED",
-		42: "ERROR_IN_DB_SYNC",
-	}
-	Result_value = map[string]int32{
-		"SUCCESS":                         1,
-		"UNSUPPORTED_REQUEST":             2,
-		"MALFORMED_REQUEST":               3,
-		"CONTAINER_INTERNAL_ERROR":        4,
-		"INVALID_CONFIG":                  5,
-		"INVALID_FILE_HASH_FOUND":         6,
-		"CONTAINER_EXISTS":                7,
-		"NO_SUCH_ALGORITHM":               8,
-		"CONTAINER_NOT_FOUND":             9,
-		"IO_EXCEPTION":                    10,
-		"UNABLE_TO_READ_METADATA_DB":      11,
-		"NO_SUCH_BLOCK":                   12,
-		"OVERWRITE_FLAG_REQUIRED":         13,
-		"UNABLE_TO_FIND_DATA_DIR":         14,
-		"INVALID_WRITE_SIZE":              15,
-		"CHECKSUM_MISMATCH":               16,
-		"UNABLE_TO_FIND_CHUNK":            17,
-		"PROTOC_DECODING_ERROR":           18,
-		"INVALID_ARGUMENT":                19,
-		"PUT_SMALL_FILE_ERROR":            20,
-		"GET_SMALL_FILE_ERROR":            21,
-		"CLOSED_CONTAINER_IO":             22,
-		"ERROR_IN_COMPACT_DB":             24,
-		"UNCLOSED_CONTAINER_IO":           25,
-		"DELETE_ON_OPEN_CONTAINER":        26,
-		"CLOSED_CONTAINER_RETRY":          27,
-		"INVALID_CONTAINER_STATE":         28,
-		"DISK_OUT_OF_SPACE":               29,
-		"CONTAINER_ALREADY_EXISTS":        30,
-		"CONTAINER_METADATA_ERROR":        31,
-		"CONTAINER_FILES_CREATE_ERROR":    32,
-		"CONTAINER_CHECKSUM_ERROR":        33,
-		"UNKNOWN_CONTAINER_TYPE":          34,
-		"BLOCK_NOT_COMMITTED":             35,
-		"CONTAINER_UNHEALTHY":             36,
-		"UNKNOWN_BCSID":                   37,
-		"BCSID_MISMATCH":                  38,
-		"CONTAINER_NOT_OPEN":              39,
-		"CONTAINER_MISSING":               40,
-		"BLOCK_TOKEN_VERIFICATION_FAILED": 41,
-		"ERROR_IN_DB_SYNC":                42,
-	}
-)
-
-func (x Result) Enum() *Result {
-	p := new(Result)
-	*p = x
-	return p
-}
-
-func (x Result) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Result) Descriptor() protoreflect.EnumDescriptor {
-	return file_DatanodeClientProtocol_proto_enumTypes[1].Descriptor()
-}
-
-func (Result) Type() protoreflect.EnumType {
-	return &file_DatanodeClientProtocol_proto_enumTypes[1]
-}
-
-func (x Result) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Result) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Result(num)
-	return nil
-}
-
-// Deprecated: Use Result.Descriptor instead.
-func (Result) EnumDescriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{1}
-}
-
-type ContainerType int32
-
-const (
-	ContainerType_KeyValueContainer ContainerType = 1
-)
-
-// Enum value maps for ContainerType.
-var (
-	ContainerType_name = map[int32]string{
-		1: "KeyValueContainer",
-	}
-	ContainerType_value = map[string]int32{
-		"KeyValueContainer": 1,
-	}
-)
-
-func (x ContainerType) Enum() *ContainerType {
-	p := new(ContainerType)
-	*p = x
-	return p
-}
-
-func (x ContainerType) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ContainerType) Descriptor() protoreflect.EnumDescriptor {
-	return file_DatanodeClientProtocol_proto_enumTypes[2].Descriptor()
-}
-
-func (ContainerType) Type() protoreflect.EnumType {
-	return &file_DatanodeClientProtocol_proto_enumTypes[2]
-}
-
-func (x ContainerType) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *ContainerType) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = ContainerType(num)
-	return nil
-}
-
-// Deprecated: Use ContainerType.Descriptor instead.
-func (ContainerType) EnumDescriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{2}
-}
-
-type ChecksumType int32
-
-const (
-	ChecksumType_NONE   ChecksumType = 1
-	ChecksumType_CRC32  ChecksumType = 2
-	ChecksumType_CRC32C ChecksumType = 3
-	ChecksumType_SHA256 ChecksumType = 4
-	ChecksumType_MD5    ChecksumType = 5
-)
-
-// Enum value maps for ChecksumType.
-var (
-	ChecksumType_name = map[int32]string{
-		1: "NONE",
-		2: "CRC32",
-		3: "CRC32C",
-		4: "SHA256",
-		5: "MD5",
-	}
-	ChecksumType_value = map[string]int32{
-		"NONE":   1,
-		"CRC32":  2,
-		"CRC32C": 3,
-		"SHA256": 4,
-		"MD5":    5,
-	}
-)
-
-func (x ChecksumType) Enum() *ChecksumType {
-	p := new(ChecksumType)
-	*p = x
-	return p
-}
-
-func (x ChecksumType) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ChecksumType) Descriptor() protoreflect.EnumDescriptor {
-	return file_DatanodeClientProtocol_proto_enumTypes[3].Descriptor()
-}
-
-func (ChecksumType) Type() protoreflect.EnumType {
-	return &file_DatanodeClientProtocol_proto_enumTypes[3]
-}
-
-func (x ChecksumType) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *ChecksumType) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = ChecksumType(num)
-	return nil
-}
-
-// Deprecated: Use ChecksumType.Descriptor instead.
-func (ChecksumType) EnumDescriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{3}
-}
-
-type ContainerDataProto_State int32
-
-const (
-	ContainerDataProto_OPEN         ContainerDataProto_State = 1
-	ContainerDataProto_CLOSING      ContainerDataProto_State = 2
-	ContainerDataProto_QUASI_CLOSED ContainerDataProto_State = 3
-	ContainerDataProto_CLOSED       ContainerDataProto_State = 4
-	ContainerDataProto_UNHEALTHY    ContainerDataProto_State = 5
-	ContainerDataProto_INVALID      ContainerDataProto_State = 6
-	ContainerDataProto_DELETED      ContainerDataProto_State = 7
-)
-
-// Enum value maps for ContainerDataProto_State.
-var (
-	ContainerDataProto_State_name = map[int32]string{
-		1: "OPEN",
-		2: "CLOSING",
-		3: "QUASI_CLOSED",
-		4: "CLOSED",
-		5: "UNHEALTHY",
-		6: "INVALID",
-		7: "DELETED",
-	}
-	ContainerDataProto_State_value = map[string]int32{
-		"OPEN":         1,
-		"CLOSING":      2,
-		"QUASI_CLOSED": 3,
-		"CLOSED":       4,
-		"UNHEALTHY":    5,
-		"INVALID":      6,
-		"DELETED":      7,
-	}
-)
-
-func (x ContainerDataProto_State) Enum() *ContainerDataProto_State {
-	p := new(ContainerDataProto_State)
-	*p = x
-	return p
-}
-
-func (x ContainerDataProto_State) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ContainerDataProto_State) Descriptor() protoreflect.EnumDescriptor {
-	return file_DatanodeClientProtocol_proto_enumTypes[4].Descriptor()
-}
-
-func (ContainerDataProto_State) Type() protoreflect.EnumType {
-	return &file_DatanodeClientProtocol_proto_enumTypes[4]
-}
-
-func (x ContainerDataProto_State) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *ContainerDataProto_State) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = ContainerDataProto_State(num)
-	return nil
-}
-
-// Deprecated: Use ContainerDataProto_State.Descriptor instead.
-func (ContainerDataProto_State) EnumDescriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{4, 0}
-}
-
-//*
-// Block ID that uniquely identify a block in Datanode.
-type DatanodeBlockID struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ContainerID           *int64  `protobuf:"varint,1,req,name=containerID" json:"containerID,omitempty"`
-	LocalID               *int64  `protobuf:"varint,2,req,name=localID" json:"localID,omitempty"`
-	BlockCommitSequenceId *uint64 `protobuf:"varint,3,opt,name=blockCommitSequenceId,def=0" json:"blockCommitSequenceId,omitempty"`
-}
-
-// Default values for DatanodeBlockID fields.
-const (
-	Default_DatanodeBlockID_BlockCommitSequenceId = uint64(0)
-)
-
-func (x *DatanodeBlockID) Reset() {
-	*x = DatanodeBlockID{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *DatanodeBlockID) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DatanodeBlockID) ProtoMessage() {}
-
-func (x *DatanodeBlockID) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use DatanodeBlockID.ProtoReflect.Descriptor instead.
-func (*DatanodeBlockID) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *DatanodeBlockID) GetContainerID() int64 {
-	if x != nil && x.ContainerID != nil {
-		return *x.ContainerID
-	}
-	return 0
-}
-
-func (x *DatanodeBlockID) GetLocalID() int64 {
-	if x != nil && x.LocalID != nil {
-		return *x.LocalID
-	}
-	return 0
-}
-
-func (x *DatanodeBlockID) GetBlockCommitSequenceId() uint64 {
-	if x != nil && x.BlockCommitSequenceId != nil {
-		return *x.BlockCommitSequenceId
-	}
-	return Default_DatanodeBlockID_BlockCommitSequenceId
-}
-
-type KeyValue struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Key   *string `protobuf:"bytes,1,req,name=key" json:"key,omitempty"`
-	Value *string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
-}
-
-func (x *KeyValue) Reset() {
-	*x = KeyValue{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *KeyValue) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*KeyValue) ProtoMessage() {}
-
-func (x *KeyValue) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use KeyValue.ProtoReflect.Descriptor instead.
-func (*KeyValue) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *KeyValue) GetKey() string {
-	if x != nil && x.Key != nil {
-		return *x.Key
-	}
-	return ""
-}
-
-func (x *KeyValue) GetValue() string {
-	if x != nil && x.Value != nil {
-		return *x.Value
-	}
-	return ""
-}
-
-type ContainerCommandRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	CmdType *Type `protobuf:"varint,1,req,name=cmdType,enum=hadoop.hdds.datanode.Type" json:"cmdType,omitempty"` // Type of the command
-	// A string that identifies this command, we generate  Trace ID in Ozone
-	// frontend and this allows us to trace that command all over ozone.
-	TraceID      *string `protobuf:"bytes,2,opt,name=traceID" json:"traceID,omitempty"`
-	ContainerID  *int64  `protobuf:"varint,3,req,name=containerID" json:"containerID,omitempty"`
-	DatanodeUuid *string `protobuf:"bytes,4,req,name=datanodeUuid" json:"datanodeUuid,omitempty"`
-	PipelineID   *string `protobuf:"bytes,5,opt,name=pipelineID" json:"pipelineID,omitempty"`
-	// One of the following command is available when the corresponding
-	// cmdType is set. At the protocol level we allow only
-	// one command in each packet.
-	// TODO : Upgrade to Protobuf 2.6 or later.
-	CreateContainer         *CreateContainerRequestProto         `protobuf:"bytes,6,opt,name=createContainer" json:"createContainer,omitempty"`
-	ReadContainer           *ReadContainerRequestProto           `protobuf:"bytes,7,opt,name=readContainer" json:"readContainer,omitempty"`
-	UpdateContainer         *UpdateContainerRequestProto         `protobuf:"bytes,8,opt,name=updateContainer" json:"updateContainer,omitempty"`
-	DeleteContainer         *DeleteContainerRequestProto         `protobuf:"bytes,9,opt,name=deleteContainer" json:"deleteContainer,omitempty"`
-	ListContainer           *ListContainerRequestProto           `protobuf:"bytes,10,opt,name=listContainer" json:"listContainer,omitempty"`
-	CloseContainer          *CloseContainerRequestProto          `protobuf:"bytes,11,opt,name=closeContainer" json:"closeContainer,omitempty"`
-	PutBlock                *PutBlockRequestProto                `protobuf:"bytes,12,opt,name=putBlock" json:"putBlock,omitempty"`
-	GetBlock                *GetBlockRequestProto                `protobuf:"bytes,13,opt,name=getBlock" json:"getBlock,omitempty"`
-	DeleteBlock             *DeleteBlockRequestProto             `protobuf:"bytes,14,opt,name=deleteBlock" json:"deleteBlock,omitempty"`
-	ListBlock               *ListBlockRequestProto               `protobuf:"bytes,15,opt,name=listBlock" json:"listBlock,omitempty"`
-	ReadChunk               *ReadChunkRequestProto               `protobuf:"bytes,16,opt,name=readChunk" json:"readChunk,omitempty"`
-	WriteChunk              *WriteChunkRequestProto              `protobuf:"bytes,17,opt,name=writeChunk" json:"writeChunk,omitempty"`
-	DeleteChunk             *DeleteChunkRequestProto             `protobuf:"bytes,18,opt,name=deleteChunk" json:"deleteChunk,omitempty"`
-	ListChunk               *ListChunkRequestProto               `protobuf:"bytes,19,opt,name=listChunk" json:"listChunk,omitempty"`
-	PutSmallFile            *PutSmallFileRequestProto            `protobuf:"bytes,20,opt,name=putSmallFile" json:"putSmallFile,omitempty"`
-	GetSmallFile            *GetSmallFileRequestProto            `protobuf:"bytes,21,opt,name=getSmallFile" json:"getSmallFile,omitempty"`
-	GetCommittedBlockLength *GetCommittedBlockLengthRequestProto `protobuf:"bytes,22,opt,name=getCommittedBlockLength" json:"getCommittedBlockLength,omitempty"`
-	EncodedToken            *string                              `protobuf:"bytes,23,opt,name=encodedToken" json:"encodedToken,omitempty"`
-}
-
-func (x *ContainerCommandRequestProto) Reset() {
-	*x = ContainerCommandRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ContainerCommandRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ContainerCommandRequestProto) ProtoMessage() {}
-
-func (x *ContainerCommandRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ContainerCommandRequestProto.ProtoReflect.Descriptor instead.
-func (*ContainerCommandRequestProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *ContainerCommandRequestProto) GetCmdType() Type {
-	if x != nil && x.CmdType != nil {
-		return *x.CmdType
-	}
-	return Type_CreateContainer
-}
-
-func (x *ContainerCommandRequestProto) GetTraceID() string {
-	if x != nil && x.TraceID != nil {
-		return *x.TraceID
-	}
-	return ""
-}
-
-func (x *ContainerCommandRequestProto) GetContainerID() int64 {
-	if x != nil && x.ContainerID != nil {
-		return *x.ContainerID
-	}
-	return 0
-}
-
-func (x *ContainerCommandRequestProto) GetDatanodeUuid() string {
-	if x != nil && x.DatanodeUuid != nil {
-		return *x.DatanodeUuid
-	}
-	return ""
-}
-
-func (x *ContainerCommandRequestProto) GetPipelineID() string {
-	if x != nil && x.PipelineID != nil {
-		return *x.PipelineID
-	}
-	return ""
-}
-
-func (x *ContainerCommandRequestProto) GetCreateContainer() *CreateContainerRequestProto {
-	if x != nil {
-		return x.CreateContainer
-	}
-	return nil
-}
-
-func (x *ContainerCommandRequestProto) GetReadContainer() *ReadContainerRequestProto {
-	if x != nil {
-		return x.ReadContainer
-	}
-	return nil
-}
-
-func (x *ContainerCommandRequestProto) GetUpdateContainer() *UpdateContainerRequestProto {
-	if x != nil {
-		return x.UpdateContainer
-	}
-	return nil
-}
-
-func (x *ContainerCommandRequestProto) GetDeleteContainer() *DeleteContainerRequestProto {
-	if x != nil {
-		return x.DeleteContainer
-	}
-	return nil
-}
-
-func (x *ContainerCommandRequestProto) GetListContainer() *ListContainerRequestProto {
-	if x != nil {
-		return x.ListContainer
-	}
-	return nil
-}
-
-func (x *ContainerCommandRequestProto) GetCloseContainer() *CloseContainerRequestProto {
-	if x != nil {
-		return x.CloseContainer
-	}
-	return nil
-}
-
-func (x *ContainerCommandRequestProto) GetPutBlock() *PutBlockRequestProto {
-	if x != nil {
-		return x.PutBlock
-	}
-	return nil
-}
-
-func (x *ContainerCommandRequestProto) GetGetBlock() *GetBlockRequestProto {
-	if x != nil {
-		return x.GetBlock
-	}
-	return nil
-}
-
-func (x *ContainerCommandRequestProto) GetDeleteBlock() *DeleteBlockRequestProto {
-	if x != nil {
-		return x.DeleteBlock
-	}
-	return nil
-}
-
-func (x *ContainerCommandRequestProto) GetListBlock() *ListBlockRequestProto {
-	if x != nil {
-		return x.ListBlock
-	}
-	return nil
-}
-
-func (x *ContainerCommandRequestProto) GetReadChunk() *ReadChunkRequestProto {
-	if x != nil {
-		return x.ReadChunk
-	}
-	return nil
-}
-
-func (x *ContainerCommandRequestProto) GetWriteChunk() *WriteChunkRequestProto {
-	if x != nil {
-		return x.WriteChunk
-	}
-	return nil
-}
-
-func (x *ContainerCommandRequestProto) GetDeleteChunk() *DeleteChunkRequestProto {
-	if x != nil {
-		return x.DeleteChunk
-	}
-	return nil
-}
-
-func (x *ContainerCommandRequestProto) GetListChunk() *ListChunkRequestProto {
-	if x != nil {
-		return x.ListChunk
-	}
-	return nil
-}
-
-func (x *ContainerCommandRequestProto) GetPutSmallFile() *PutSmallFileRequestProto {
-	if x != nil {
-		return x.PutSmallFile
-	}
-	return nil
-}
-
-func (x *ContainerCommandRequestProto) GetGetSmallFile() *GetSmallFileRequestProto {
-	if x != nil {
-		return x.GetSmallFile
-	}
-	return nil
-}
-
-func (x *ContainerCommandRequestProto) GetGetCommittedBlockLength() *GetCommittedBlockLengthRequestProto {
-	if x != nil {
-		return x.GetCommittedBlockLength
-	}
-	return nil
-}
-
-func (x *ContainerCommandRequestProto) GetEncodedToken() string {
-	if x != nil && x.EncodedToken != nil {
-		return *x.EncodedToken
-	}
-	return ""
-}
-
-type ContainerCommandResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	CmdType                 *Type                                 `protobuf:"varint,1,req,name=cmdType,enum=hadoop.hdds.datanode.Type" json:"cmdType,omitempty"`
-	TraceID                 *string                               `protobuf:"bytes,2,opt,name=traceID" json:"traceID,omitempty"`
-	Result                  *Result                               `protobuf:"varint,3,req,name=result,enum=hadoop.hdds.datanode.Result" json:"result,omitempty"`
-	Message                 *string                               `protobuf:"bytes,4,opt,name=message" json:"message,omitempty"`
-	CreateContainer         *CreateContainerResponseProto         `protobuf:"bytes,5,opt,name=createContainer" json:"createContainer,omitempty"`
-	ReadContainer           *ReadContainerResponseProto           `protobuf:"bytes,6,opt,name=readContainer" json:"readContainer,omitempty"`
-	UpdateContainer         *UpdateContainerResponseProto         `protobuf:"bytes,7,opt,name=updateContainer" json:"updateContainer,omitempty"`
-	DeleteContainer         *DeleteContainerResponseProto         `protobuf:"bytes,8,opt,name=deleteContainer" json:"deleteContainer,omitempty"`
-	ListContainer           *ListContainerResponseProto           `protobuf:"bytes,9,opt,name=listContainer" json:"listContainer,omitempty"`
-	CloseContainer          *CloseContainerResponseProto          `protobuf:"bytes,10,opt,name=closeContainer" json:"closeContainer,omitempty"`
-	PutBlock                *PutBlockResponseProto                `protobuf:"bytes,11,opt,name=putBlock" json:"putBlock,omitempty"`
-	GetBlock                *GetBlockResponseProto                `protobuf:"bytes,12,opt,name=getBlock" json:"getBlock,omitempty"`
-	DeleteBlock             *DeleteBlockResponseProto             `protobuf:"bytes,13,opt,name=deleteBlock" json:"deleteBlock,omitempty"`
-	ListBlock               *ListBlockResponseProto               `protobuf:"bytes,14,opt,name=listBlock" json:"listBlock,omitempty"`
-	WriteChunk              *WriteChunkResponseProto              `protobuf:"bytes,15,opt,name=writeChunk" json:"writeChunk,omitempty"`
-	ReadChunk               *ReadChunkResponseProto               `protobuf:"bytes,16,opt,name=readChunk" json:"readChunk,omitempty"`
-	DeleteChunk             *DeleteChunkResponseProto             `protobuf:"bytes,17,opt,name=deleteChunk" json:"deleteChunk,omitempty"`
-	ListChunk               *ListChunkResponseProto               `protobuf:"bytes,18,opt,name=listChunk" json:"listChunk,omitempty"`
-	PutSmallFile            *PutSmallFileResponseProto            `protobuf:"bytes,19,opt,name=putSmallFile" json:"putSmallFile,omitempty"`
-	GetSmallFile            *GetSmallFileResponseProto            `protobuf:"bytes,20,opt,name=getSmallFile" json:"getSmallFile,omitempty"`
-	GetCommittedBlockLength *GetCommittedBlockLengthResponseProto `protobuf:"bytes,21,opt,name=getCommittedBlockLength" json:"getCommittedBlockLength,omitempty"`
-}
-
-func (x *ContainerCommandResponseProto) Reset() {
-	*x = ContainerCommandResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ContainerCommandResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ContainerCommandResponseProto) ProtoMessage() {}
-
-func (x *ContainerCommandResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ContainerCommandResponseProto.ProtoReflect.Descriptor instead.
-func (*ContainerCommandResponseProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *ContainerCommandResponseProto) GetCmdType() Type {
-	if x != nil && x.CmdType != nil {
-		return *x.CmdType
-	}
-	return Type_CreateContainer
-}
-
-func (x *ContainerCommandResponseProto) GetTraceID() string {
-	if x != nil && x.TraceID != nil {
-		return *x.TraceID
-	}
-	return ""
-}
-
-func (x *ContainerCommandResponseProto) GetResult() Result {
-	if x != nil && x.Result != nil {
-		return *x.Result
-	}
-	return Result_SUCCESS
-}
-
-func (x *ContainerCommandResponseProto) GetMessage() string {
-	if x != nil && x.Message != nil {
-		return *x.Message
-	}
-	return ""
-}
-
-func (x *ContainerCommandResponseProto) GetCreateContainer() *CreateContainerResponseProto {
-	if x != nil {
-		return x.CreateContainer
-	}
-	return nil
-}
-
-func (x *ContainerCommandResponseProto) GetReadContainer() *ReadContainerResponseProto {
-	if x != nil {
-		return x.ReadContainer
-	}
-	return nil
-}
-
-func (x *ContainerCommandResponseProto) GetUpdateContainer() *UpdateContainerResponseProto {
-	if x != nil {
-		return x.UpdateContainer
-	}
-	return nil
-}
-
-func (x *ContainerCommandResponseProto) GetDeleteContainer() *DeleteContainerResponseProto {
-	if x != nil {
-		return x.DeleteContainer
-	}
-	return nil
-}
-
-func (x *ContainerCommandResponseProto) GetListContainer() *ListContainerResponseProto {
-	if x != nil {
-		return x.ListContainer
-	}
-	return nil
-}
-
-func (x *ContainerCommandResponseProto) GetCloseContainer() *CloseContainerResponseProto {
-	if x != nil {
-		return x.CloseContainer
-	}
-	return nil
-}
-
-func (x *ContainerCommandResponseProto) GetPutBlock() *PutBlockResponseProto {
-	if x != nil {
-		return x.PutBlock
-	}
-	return nil
-}
-
-func (x *ContainerCommandResponseProto) GetGetBlock() *GetBlockResponseProto {
-	if x != nil {
-		return x.GetBlock
-	}
-	return nil
-}
-
-func (x *ContainerCommandResponseProto) GetDeleteBlock() *DeleteBlockResponseProto {
-	if x != nil {
-		return x.DeleteBlock
-	}
-	return nil
-}
-
-func (x *ContainerCommandResponseProto) GetListBlock() *ListBlockResponseProto {
-	if x != nil {
-		return x.ListBlock
-	}
-	return nil
-}
-
-func (x *ContainerCommandResponseProto) GetWriteChunk() *WriteChunkResponseProto {
-	if x != nil {
-		return x.WriteChunk
-	}
-	return nil
-}
-
-func (x *ContainerCommandResponseProto) GetReadChunk() *ReadChunkResponseProto {
-	if x != nil {
-		return x.ReadChunk
-	}
-	return nil
-}
-
-func (x *ContainerCommandResponseProto) GetDeleteChunk() *DeleteChunkResponseProto {
-	if x != nil {
-		return x.DeleteChunk
-	}
-	return nil
-}
-
-func (x *ContainerCommandResponseProto) GetListChunk() *ListChunkResponseProto {
-	if x != nil {
-		return x.ListChunk
-	}
-	return nil
-}
-
-func (x *ContainerCommandResponseProto) GetPutSmallFile() *PutSmallFileResponseProto {
-	if x != nil {
-		return x.PutSmallFile
-	}
-	return nil
-}
-
-func (x *ContainerCommandResponseProto) GetGetSmallFile() *GetSmallFileResponseProto {
-	if x != nil {
-		return x.GetSmallFile
-	}
-	return nil
-}
-
-func (x *ContainerCommandResponseProto) GetGetCommittedBlockLength() *GetCommittedBlockLengthResponseProto {
-	if x != nil {
-		return x.GetCommittedBlockLength
-	}
-	return nil
-}
-
-type ContainerDataProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ContainerID   *int64                    `protobuf:"varint,1,req,name=containerID" json:"containerID,omitempty"`
-	Metadata      []*KeyValue               `protobuf:"bytes,2,rep,name=metadata" json:"metadata,omitempty"`
-	ContainerPath *string                   `protobuf:"bytes,4,opt,name=containerPath" json:"containerPath,omitempty"`
-	BytesUsed     *int64                    `protobuf:"varint,6,opt,name=bytesUsed" json:"bytesUsed,omitempty"`
-	Size          *int64                    `protobuf:"varint,7,opt,name=size" json:"size,omitempty"`
-	BlockCount    *int64                    `protobuf:"varint,8,opt,name=blockCount" json:"blockCount,omitempty"`
-	State         *ContainerDataProto_State `protobuf:"varint,9,opt,name=state,enum=hadoop.hdds.datanode.ContainerDataProto_State,def=1" json:"state,omitempty"`
-	ContainerType *ContainerType            `protobuf:"varint,10,opt,name=containerType,enum=hadoop.hdds.datanode.ContainerType,def=1" json:"containerType,omitempty"`
-}
-
-// Default values for ContainerDataProto fields.
-const (
-	Default_ContainerDataProto_State         = ContainerDataProto_OPEN
-	Default_ContainerDataProto_ContainerType = ContainerType_KeyValueContainer
-)
-
-func (x *ContainerDataProto) Reset() {
-	*x = ContainerDataProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ContainerDataProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ContainerDataProto) ProtoMessage() {}
-
-func (x *ContainerDataProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ContainerDataProto.ProtoReflect.Descriptor instead.
-func (*ContainerDataProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *ContainerDataProto) GetContainerID() int64 {
-	if x != nil && x.ContainerID != nil {
-		return *x.ContainerID
-	}
-	return 0
-}
-
-func (x *ContainerDataProto) GetMetadata() []*KeyValue {
-	if x != nil {
-		return x.Metadata
-	}
-	return nil
-}
-
-func (x *ContainerDataProto) GetContainerPath() string {
-	if x != nil && x.ContainerPath != nil {
-		return *x.ContainerPath
-	}
-	return ""
-}
-
-func (x *ContainerDataProto) GetBytesUsed() int64 {
-	if x != nil && x.BytesUsed != nil {
-		return *x.BytesUsed
-	}
-	return 0
-}
-
-func (x *ContainerDataProto) GetSize() int64 {
-	if x != nil && x.Size != nil {
-		return *x.Size
-	}
-	return 0
-}
-
-func (x *ContainerDataProto) GetBlockCount() int64 {
-	if x != nil && x.BlockCount != nil {
-		return *x.BlockCount
-	}
-	return 0
-}
-
-func (x *ContainerDataProto) GetState() ContainerDataProto_State {
-	if x != nil && x.State != nil {
-		return *x.State
-	}
-	return Default_ContainerDataProto_State
-}
-
-func (x *ContainerDataProto) GetContainerType() ContainerType {
-	if x != nil && x.ContainerType != nil {
-		return *x.ContainerType
-	}
-	return Default_ContainerDataProto_ContainerType
-}
-
-type Container2BCSIDMapProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// repeated Container2BCSIDMapEntryProto container2BCSID = 1;
-	Container2BCSID map[int64]int64 `protobuf:"bytes,1,rep,name=container2BCSID" json:"container2BCSID,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
-}
-
-func (x *Container2BCSIDMapProto) Reset() {
-	*x = Container2BCSIDMapProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Container2BCSIDMapProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Container2BCSIDMapProto) ProtoMessage() {}
-
-func (x *Container2BCSIDMapProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Container2BCSIDMapProto.ProtoReflect.Descriptor instead.
-func (*Container2BCSIDMapProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Container2BCSIDMapProto) GetContainer2BCSID() map[int64]int64 {
-	if x != nil {
-		return x.Container2BCSID
-	}
-	return nil
-}
-
-// Container Messages.
-type CreateContainerRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Metadata      []*KeyValue    `protobuf:"bytes,2,rep,name=metadata" json:"metadata,omitempty"`
-	ContainerType *ContainerType `protobuf:"varint,3,opt,name=containerType,enum=hadoop.hdds.datanode.ContainerType,def=1" json:"containerType,omitempty"`
-}
-
-// Default values for CreateContainerRequestProto fields.
-const (
-	Default_CreateContainerRequestProto_ContainerType = ContainerType_KeyValueContainer
-)
-
-func (x *CreateContainerRequestProto) Reset() {
-	*x = CreateContainerRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CreateContainerRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CreateContainerRequestProto) ProtoMessage() {}
-
-func (x *CreateContainerRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CreateContainerRequestProto.ProtoReflect.Descriptor instead.
-func (*CreateContainerRequestProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *CreateContainerRequestProto) GetMetadata() []*KeyValue {
-	if x != nil {
-		return x.Metadata
-	}
-	return nil
-}
-
-func (x *CreateContainerRequestProto) GetContainerType() ContainerType {
-	if x != nil && x.ContainerType != nil {
-		return *x.ContainerType
-	}
-	return Default_CreateContainerRequestProto_ContainerType
-}
-
-type CreateContainerResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *CreateContainerResponseProto) Reset() {
-	*x = CreateContainerResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CreateContainerResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CreateContainerResponseProto) ProtoMessage() {}
-
-func (x *CreateContainerResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CreateContainerResponseProto.ProtoReflect.Descriptor instead.
-func (*CreateContainerResponseProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{7}
-}
-
-type ReadContainerRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *ReadContainerRequestProto) Reset() {
-	*x = ReadContainerRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ReadContainerRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ReadContainerRequestProto) ProtoMessage() {}
-
-func (x *ReadContainerRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ReadContainerRequestProto.ProtoReflect.Descriptor instead.
-func (*ReadContainerRequestProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{8}
-}
-
-type ReadContainerResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ContainerData *ContainerDataProto `protobuf:"bytes,1,opt,name=containerData" json:"containerData,omitempty"`
-}
-
-func (x *ReadContainerResponseProto) Reset() {
-	*x = ReadContainerResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ReadContainerResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ReadContainerResponseProto) ProtoMessage() {}
-
-func (x *ReadContainerResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[9]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ReadContainerResponseProto.ProtoReflect.Descriptor instead.
-func (*ReadContainerResponseProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *ReadContainerResponseProto) GetContainerData() *ContainerDataProto {
-	if x != nil {
-		return x.ContainerData
-	}
-	return nil
-}
-
-type UpdateContainerRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Metadata    []*KeyValue `protobuf:"bytes,2,rep,name=metadata" json:"metadata,omitempty"`
-	ForceUpdate *bool       `protobuf:"varint,3,opt,name=forceUpdate,def=0" json:"forceUpdate,omitempty"`
-}
-
-// Default values for UpdateContainerRequestProto fields.
-const (
-	Default_UpdateContainerRequestProto_ForceUpdate = bool(false)
-)
-
-func (x *UpdateContainerRequestProto) Reset() {
-	*x = UpdateContainerRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[10]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *UpdateContainerRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UpdateContainerRequestProto) ProtoMessage() {}
-
-func (x *UpdateContainerRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[10]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use UpdateContainerRequestProto.ProtoReflect.Descriptor instead.
-func (*UpdateContainerRequestProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *UpdateContainerRequestProto) GetMetadata() []*KeyValue {
-	if x != nil {
-		return x.Metadata
-	}
-	return nil
-}
-
-func (x *UpdateContainerRequestProto) GetForceUpdate() bool {
-	if x != nil && x.ForceUpdate != nil {
-		return *x.ForceUpdate
-	}
-	return Default_UpdateContainerRequestProto_ForceUpdate
-}
-
-type UpdateContainerResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *UpdateContainerResponseProto) Reset() {
-	*x = UpdateContainerResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[11]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *UpdateContainerResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UpdateContainerResponseProto) ProtoMessage() {}
-
-func (x *UpdateContainerResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[11]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use UpdateContainerResponseProto.ProtoReflect.Descriptor instead.
-func (*UpdateContainerResponseProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{11}
-}
-
-type DeleteContainerRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ForceDelete *bool `protobuf:"varint,2,opt,name=forceDelete,def=0" json:"forceDelete,omitempty"`
-}
-
-// Default values for DeleteContainerRequestProto fields.
-const (
-	Default_DeleteContainerRequestProto_ForceDelete = bool(false)
-)
-
-func (x *DeleteContainerRequestProto) Reset() {
-	*x = DeleteContainerRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[12]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *DeleteContainerRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteContainerRequestProto) ProtoMessage() {}
-
-func (x *DeleteContainerRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[12]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteContainerRequestProto.ProtoReflect.Descriptor instead.
-func (*DeleteContainerRequestProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *DeleteContainerRequestProto) GetForceDelete() bool {
-	if x != nil && x.ForceDelete != nil {
-		return *x.ForceDelete
-	}
-	return Default_DeleteContainerRequestProto_ForceDelete
-}
-
-type DeleteContainerResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *DeleteContainerResponseProto) Reset() {
-	*x = DeleteContainerResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *DeleteContainerResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteContainerResponseProto) ProtoMessage() {}
-
-func (x *DeleteContainerResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[13]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteContainerResponseProto.ProtoReflect.Descriptor instead.
-func (*DeleteContainerResponseProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{13}
-}
-
-type ListContainerRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Count *uint32 `protobuf:"varint,2,opt,name=count" json:"count,omitempty"` // Max Results to return
-}
-
-func (x *ListContainerRequestProto) Reset() {
-	*x = ListContainerRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ListContainerRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListContainerRequestProto) ProtoMessage() {}
-
-func (x *ListContainerRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[14]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListContainerRequestProto.ProtoReflect.Descriptor instead.
-func (*ListContainerRequestProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *ListContainerRequestProto) GetCount() uint32 {
-	if x != nil && x.Count != nil {
-		return *x.Count
-	}
-	return 0
-}
-
-type ListContainerResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ContainerData []*ContainerDataProto `protobuf:"bytes,1,rep,name=containerData" json:"containerData,omitempty"`
-}
-
-func (x *ListContainerResponseProto) Reset() {
-	*x = ListContainerResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[15]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ListContainerResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListContainerResponseProto) ProtoMessage() {}
-
-func (x *ListContainerResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[15]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListContainerResponseProto.ProtoReflect.Descriptor instead.
-func (*ListContainerResponseProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *ListContainerResponseProto) GetContainerData() []*ContainerDataProto {
-	if x != nil {
-		return x.ContainerData
-	}
-	return nil
-}
-
-type CloseContainerRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *CloseContainerRequestProto) Reset() {
-	*x = CloseContainerRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[16]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CloseContainerRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CloseContainerRequestProto) ProtoMessage() {}
-
-func (x *CloseContainerRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[16]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CloseContainerRequestProto.ProtoReflect.Descriptor instead.
-func (*CloseContainerRequestProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{16}
-}
-
-type CloseContainerResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Hash        *string `protobuf:"bytes,1,opt,name=hash" json:"hash,omitempty"`
-	ContainerID *int64  `protobuf:"varint,2,opt,name=containerID" json:"containerID,omitempty"`
-}
-
-func (x *CloseContainerResponseProto) Reset() {
-	*x = CloseContainerResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[17]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CloseContainerResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CloseContainerResponseProto) ProtoMessage() {}
-
-func (x *CloseContainerResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[17]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CloseContainerResponseProto.ProtoReflect.Descriptor instead.
-func (*CloseContainerResponseProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{17}
-}
-
-func (x *CloseContainerResponseProto) GetHash() string {
-	if x != nil && x.Hash != nil {
-		return *x.Hash
-	}
-	return ""
-}
-
-func (x *CloseContainerResponseProto) GetContainerID() int64 {
-	if x != nil && x.ContainerID != nil {
-		return *x.ContainerID
-	}
-	return 0
-}
-
-type BlockData struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	BlockID  *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
-	Flags    *int64           `protobuf:"varint,2,opt,name=flags" json:"flags,omitempty"` // for future use.
-	Metadata []*KeyValue      `protobuf:"bytes,3,rep,name=metadata" json:"metadata,omitempty"`
-	Chunks   []*ChunkInfo     `protobuf:"bytes,4,rep,name=chunks" json:"chunks,omitempty"`
-	Size     *int64           `protobuf:"varint,5,opt,name=size" json:"size,omitempty"`
-}
-
-func (x *BlockData) Reset() {
-	*x = BlockData{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[18]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *BlockData) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*BlockData) ProtoMessage() {}
-
-func (x *BlockData) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[18]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use BlockData.ProtoReflect.Descriptor instead.
-func (*BlockData) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *BlockData) GetBlockID() *DatanodeBlockID {
-	if x != nil {
-		return x.BlockID
-	}
-	return nil
-}
-
-func (x *BlockData) GetFlags() int64 {
-	if x != nil && x.Flags != nil {
-		return *x.Flags
-	}
-	return 0
-}
-
-func (x *BlockData) GetMetadata() []*KeyValue {
-	if x != nil {
-		return x.Metadata
-	}
-	return nil
-}
-
-func (x *BlockData) GetChunks() []*ChunkInfo {
-	if x != nil {
-		return x.Chunks
-	}
-	return nil
-}
-
-func (x *BlockData) GetSize() int64 {
-	if x != nil && x.Size != nil {
-		return *x.Size
-	}
-	return 0
-}
-
-// Block Messages.
-type PutBlockRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	BlockData *BlockData `protobuf:"bytes,1,req,name=blockData" json:"blockData,omitempty"`
-	Eof       *bool      `protobuf:"varint,2,opt,name=eof" json:"eof,omitempty"`
-}
-
-func (x *PutBlockRequestProto) Reset() {
-	*x = PutBlockRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[19]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *PutBlockRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PutBlockRequestProto) ProtoMessage() {}
-
-func (x *PutBlockRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[19]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use PutBlockRequestProto.ProtoReflect.Descriptor instead.
-func (*PutBlockRequestProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *PutBlockRequestProto) GetBlockData() *BlockData {
-	if x != nil {
-		return x.BlockData
-	}
-	return nil
-}
-
-func (x *PutBlockRequestProto) GetEof() bool {
-	if x != nil && x.Eof != nil {
-		return *x.Eof
-	}
-	return false
-}
-
-type PutBlockResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	CommittedBlockLength *GetCommittedBlockLengthResponseProto `protobuf:"bytes,1,req,name=committedBlockLength" json:"committedBlockLength,omitempty"`
-}
-
-func (x *PutBlockResponseProto) Reset() {
-	*x = PutBlockResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[20]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *PutBlockResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PutBlockResponseProto) ProtoMessage() {}
-
-func (x *PutBlockResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[20]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use PutBlockResponseProto.ProtoReflect.Descriptor instead.
-func (*PutBlockResponseProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *PutBlockResponseProto) GetCommittedBlockLength() *GetCommittedBlockLengthResponseProto {
-	if x != nil {
-		return x.CommittedBlockLength
-	}
-	return nil
-}
-
-type GetBlockRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	BlockID *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
-}
-
-func (x *GetBlockRequestProto) Reset() {
-	*x = GetBlockRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[21]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GetBlockRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetBlockRequestProto) ProtoMessage() {}
-
-func (x *GetBlockRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[21]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetBlockRequestProto.ProtoReflect.Descriptor instead.
-func (*GetBlockRequestProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{21}
-}
-
-func (x *GetBlockRequestProto) GetBlockID() *DatanodeBlockID {
-	if x != nil {
-		return x.BlockID
-	}
-	return nil
-}
-
-type GetBlockResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	BlockData *BlockData `protobuf:"bytes,1,req,name=blockData" json:"blockData,omitempty"`
-}
-
-func (x *GetBlockResponseProto) Reset() {
-	*x = GetBlockResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[22]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GetBlockResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetBlockResponseProto) ProtoMessage() {}
-
-func (x *GetBlockResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[22]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetBlockResponseProto.ProtoReflect.Descriptor instead.
-func (*GetBlockResponseProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{22}
-}
-
-func (x *GetBlockResponseProto) GetBlockData() *BlockData {
-	if x != nil {
-		return x.BlockData
-	}
-	return nil
-}
-
-type DeleteBlockRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	BlockID *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
-}
-
-func (x *DeleteBlockRequestProto) Reset() {
-	*x = DeleteBlockRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[23]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *DeleteBlockRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteBlockRequestProto) ProtoMessage() {}
-
-func (x *DeleteBlockRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[23]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteBlockRequestProto.ProtoReflect.Descriptor instead.
-func (*DeleteBlockRequestProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{23}
-}
-
-func (x *DeleteBlockRequestProto) GetBlockID() *DatanodeBlockID {
-	if x != nil {
-		return x.BlockID
-	}
-	return nil
-}
-
-type GetCommittedBlockLengthRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	BlockID *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
-}
-
-func (x *GetCommittedBlockLengthRequestProto) Reset() {
-	*x = GetCommittedBlockLengthRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[24]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GetCommittedBlockLengthRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetCommittedBlockLengthRequestProto) ProtoMessage() {}
-
-func (x *GetCommittedBlockLengthRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[24]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetCommittedBlockLengthRequestProto.ProtoReflect.Descriptor instead.
-func (*GetCommittedBlockLengthRequestProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{24}
-}
-
-func (x *GetCommittedBlockLengthRequestProto) GetBlockID() *DatanodeBlockID {
-	if x != nil {
-		return x.BlockID
-	}
-	return nil
-}
-
-type GetCommittedBlockLengthResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	BlockID     *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
-	BlockLength *int64           `protobuf:"varint,2,req,name=blockLength" json:"blockLength,omitempty"`
-}
-
-func (x *GetCommittedBlockLengthResponseProto) Reset() {
-	*x = GetCommittedBlockLengthResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[25]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GetCommittedBlockLengthResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetCommittedBlockLengthResponseProto) ProtoMessage() {}
-
-func (x *GetCommittedBlockLengthResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[25]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetCommittedBlockLengthResponseProto.ProtoReflect.Descriptor instead.
-func (*GetCommittedBlockLengthResponseProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{25}
-}
-
-func (x *GetCommittedBlockLengthResponseProto) GetBlockID() *DatanodeBlockID {
-	if x != nil {
-		return x.BlockID
-	}
-	return nil
-}
-
-func (x *GetCommittedBlockLengthResponseProto) GetBlockLength() int64 {
-	if x != nil && x.BlockLength != nil {
-		return *x.BlockLength
-	}
-	return 0
-}
-
-type DeleteBlockResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *DeleteBlockResponseProto) Reset() {
-	*x = DeleteBlockResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[26]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *DeleteBlockResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteBlockResponseProto) ProtoMessage() {}
-
-func (x *DeleteBlockResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[26]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteBlockResponseProto.ProtoReflect.Descriptor instead.
-func (*DeleteBlockResponseProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{26}
-}
-
-type ListBlockRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	StartLocalID *int64  `protobuf:"varint,2,opt,name=startLocalID" json:"startLocalID,omitempty"`
-	Count        *uint32 `protobuf:"varint,3,req,name=count" json:"count,omitempty"`
-}
-
-func (x *ListBlockRequestProto) Reset() {
-	*x = ListBlockRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[27]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ListBlockRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListBlockRequestProto) ProtoMessage() {}
-
-func (x *ListBlockRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[27]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListBlockRequestProto.ProtoReflect.Descriptor instead.
-func (*ListBlockRequestProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{27}
-}
-
-func (x *ListBlockRequestProto) GetStartLocalID() int64 {
-	if x != nil && x.StartLocalID != nil {
-		return *x.StartLocalID
-	}
-	return 0
-}
-
-func (x *ListBlockRequestProto) GetCount() uint32 {
-	if x != nil && x.Count != nil {
-		return *x.Count
-	}
-	return 0
-}
-
-type ListBlockResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	BlockData []*BlockData `protobuf:"bytes,1,rep,name=blockData" json:"blockData,omitempty"`
-}
-
-func (x *ListBlockResponseProto) Reset() {
-	*x = ListBlockResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[28]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ListBlockResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListBlockResponseProto) ProtoMessage() {}
-
-func (x *ListBlockResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[28]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListBlockResponseProto.ProtoReflect.Descriptor instead.
-func (*ListBlockResponseProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{28}
-}
-
-func (x *ListBlockResponseProto) GetBlockData() []*BlockData {
-	if x != nil {
-		return x.BlockData
-	}
-	return nil
-}
-
-type ChunkInfo struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ChunkName    *string       `protobuf:"bytes,1,req,name=chunkName" json:"chunkName,omitempty"`
-	Offset       *uint64       `protobuf:"varint,2,req,name=offset" json:"offset,omitempty"`
-	Len          *uint64       `protobuf:"varint,3,req,name=len" json:"len,omitempty"`
-	Metadata     []*KeyValue   `protobuf:"bytes,4,rep,name=metadata" json:"metadata,omitempty"`
-	ChecksumData *ChecksumData `protobuf:"bytes,5,req,name=checksumData" json:"checksumData,omitempty"`
-}
-
-func (x *ChunkInfo) Reset() {
-	*x = ChunkInfo{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[29]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ChunkInfo) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ChunkInfo) ProtoMessage() {}
-
-func (x *ChunkInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[29]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ChunkInfo.ProtoReflect.Descriptor instead.
-func (*ChunkInfo) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{29}
-}
-
-func (x *ChunkInfo) GetChunkName() string {
-	if x != nil && x.ChunkName != nil {
-		return *x.ChunkName
-	}
-	return ""
-}
-
-func (x *ChunkInfo) GetOffset() uint64 {
-	if x != nil && x.Offset != nil {
-		return *x.Offset
-	}
-	return 0
-}
-
-func (x *ChunkInfo) GetLen() uint64 {
-	if x != nil && x.Len != nil {
-		return *x.Len
-	}
-	return 0
-}
-
-func (x *ChunkInfo) GetMetadata() []*KeyValue {
-	if x != nil {
-		return x.Metadata
-	}
-	return nil
-}
-
-func (x *ChunkInfo) GetChecksumData() *ChecksumData {
-	if x != nil {
-		return x.ChecksumData
-	}
-	return nil
-}
-
-type ChecksumData struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Type             *ChecksumType `protobuf:"varint,1,req,name=type,enum=hadoop.hdds.datanode.ChecksumType" json:"type,omitempty"`
-	BytesPerChecksum *uint32       `protobuf:"varint,2,req,name=bytesPerChecksum" json:"bytesPerChecksum,omitempty"`
-	Checksums        [][]byte      `protobuf:"bytes,3,rep,name=checksums" json:"checksums,omitempty"`
-}
-
-func (x *ChecksumData) Reset() {
-	*x = ChecksumData{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[30]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ChecksumData) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ChecksumData) ProtoMessage() {}
-
-func (x *ChecksumData) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[30]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ChecksumData.ProtoReflect.Descriptor instead.
-func (*ChecksumData) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{30}
-}
-
-func (x *ChecksumData) GetType() ChecksumType {
-	if x != nil && x.Type != nil {
-		return *x.Type
-	}
-	return ChecksumType_NONE
-}
-
-func (x *ChecksumData) GetBytesPerChecksum() uint32 {
-	if x != nil && x.BytesPerChecksum != nil {
-		return *x.BytesPerChecksum
-	}
-	return 0
-}
-
-func (x *ChecksumData) GetChecksums() [][]byte {
-	if x != nil {
-		return x.Checksums
-	}
-	return nil
-}
-
-type WriteChunkRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	BlockID   *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
-	ChunkData *ChunkInfo       `protobuf:"bytes,2,req,name=chunkData" json:"chunkData,omitempty"`
-	Data      []byte           `protobuf:"bytes,3,opt,name=data" json:"data,omitempty"`
-}
-
-func (x *WriteChunkRequestProto) Reset() {
-	*x = WriteChunkRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[31]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *WriteChunkRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WriteChunkRequestProto) ProtoMessage() {}
-
-func (x *WriteChunkRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[31]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use WriteChunkRequestProto.ProtoReflect.Descriptor instead.
-func (*WriteChunkRequestProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{31}
-}
-
-func (x *WriteChunkRequestProto) GetBlockID() *DatanodeBlockID {
-	if x != nil {
-		return x.BlockID
-	}
-	return nil
-}
-
-func (x *WriteChunkRequestProto) GetChunkData() *ChunkInfo {
-	if x != nil {
-		return x.ChunkData
-	}
-	return nil
-}
-
-func (x *WriteChunkRequestProto) GetData() []byte {
-	if x != nil {
-		return x.Data
-	}
-	return nil
-}
-
-type WriteChunkResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *WriteChunkResponseProto) Reset() {
-	*x = WriteChunkResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[32]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *WriteChunkResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*WriteChunkResponseProto) ProtoMessage() {}
-
-func (x *WriteChunkResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[32]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use WriteChunkResponseProto.ProtoReflect.Descriptor instead.
-func (*WriteChunkResponseProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{32}
-}
-
-type ReadChunkRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	BlockID   *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
-	ChunkData *ChunkInfo       `protobuf:"bytes,2,req,name=chunkData" json:"chunkData,omitempty"`
-}
-
-func (x *ReadChunkRequestProto) Reset() {
-	*x = ReadChunkRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[33]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ReadChunkRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ReadChunkRequestProto) ProtoMessage() {}
-
-func (x *ReadChunkRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[33]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ReadChunkRequestProto.ProtoReflect.Descriptor instead.
-func (*ReadChunkRequestProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{33}
-}
-
-func (x *ReadChunkRequestProto) GetBlockID() *DatanodeBlockID {
-	if x != nil {
-		return x.BlockID
-	}
-	return nil
-}
-
-func (x *ReadChunkRequestProto) GetChunkData() *ChunkInfo {
-	if x != nil {
-		return x.ChunkData
-	}
-	return nil
-}
-
-type ReadChunkResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	BlockID   *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
-	ChunkData *ChunkInfo       `protobuf:"bytes,2,req,name=chunkData" json:"chunkData,omitempty"`
-	Data      []byte           `protobuf:"bytes,3,req,name=data" json:"data,omitempty"`
-}
-
-func (x *ReadChunkResponseProto) Reset() {
-	*x = ReadChunkResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[34]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ReadChunkResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ReadChunkResponseProto) ProtoMessage() {}
-
-func (x *ReadChunkResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[34]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ReadChunkResponseProto.ProtoReflect.Descriptor instead.
-func (*ReadChunkResponseProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{34}
-}
-
-func (x *ReadChunkResponseProto) GetBlockID() *DatanodeBlockID {
-	if x != nil {
-		return x.BlockID
-	}
-	return nil
-}
-
-func (x *ReadChunkResponseProto) GetChunkData() *ChunkInfo {
-	if x != nil {
-		return x.ChunkData
-	}
-	return nil
-}
-
-func (x *ReadChunkResponseProto) GetData() []byte {
-	if x != nil {
-		return x.Data
-	}
-	return nil
-}
-
-type DeleteChunkRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	BlockID   *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
-	ChunkData *ChunkInfo       `protobuf:"bytes,2,req,name=chunkData" json:"chunkData,omitempty"`
-}
-
-func (x *DeleteChunkRequestProto) Reset() {
-	*x = DeleteChunkRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[35]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *DeleteChunkRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteChunkRequestProto) ProtoMessage() {}
-
-func (x *DeleteChunkRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[35]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteChunkRequestProto.ProtoReflect.Descriptor instead.
-func (*DeleteChunkRequestProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{35}
-}
-
-func (x *DeleteChunkRequestProto) GetBlockID() *DatanodeBlockID {
-	if x != nil {
-		return x.BlockID
-	}
-	return nil
-}
-
-func (x *DeleteChunkRequestProto) GetChunkData() *ChunkInfo {
-	if x != nil {
-		return x.ChunkData
-	}
-	return nil
-}
-
-type DeleteChunkResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *DeleteChunkResponseProto) Reset() {
-	*x = DeleteChunkResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[36]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *DeleteChunkResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DeleteChunkResponseProto) ProtoMessage() {}
-
-func (x *DeleteChunkResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[36]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use DeleteChunkResponseProto.ProtoReflect.Descriptor instead.
-func (*DeleteChunkResponseProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{36}
-}
-
-type ListChunkRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	BlockID       *DatanodeBlockID `protobuf:"bytes,1,req,name=blockID" json:"blockID,omitempty"`
-	PrevChunkName *string          `protobuf:"bytes,2,req,name=prevChunkName" json:"prevChunkName,omitempty"`
-	Count         *uint32          `protobuf:"varint,3,req,name=count" json:"count,omitempty"`
-}
-
-func (x *ListChunkRequestProto) Reset() {
-	*x = ListChunkRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[37]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ListChunkRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListChunkRequestProto) ProtoMessage() {}
-
-func (x *ListChunkRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[37]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListChunkRequestProto.ProtoReflect.Descriptor instead.
-func (*ListChunkRequestProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{37}
-}
-
-func (x *ListChunkRequestProto) GetBlockID() *DatanodeBlockID {
-	if x != nil {
-		return x.BlockID
-	}
-	return nil
-}
-
-func (x *ListChunkRequestProto) GetPrevChunkName() string {
-	if x != nil && x.PrevChunkName != nil {
-		return *x.PrevChunkName
-	}
-	return ""
-}
-
-func (x *ListChunkRequestProto) GetCount() uint32 {
-	if x != nil && x.Count != nil {
-		return *x.Count
-	}
-	return 0
-}
-
-type ListChunkResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ChunkData []*ChunkInfo `protobuf:"bytes,1,rep,name=chunkData" json:"chunkData,omitempty"`
-}
-
-func (x *ListChunkResponseProto) Reset() {
-	*x = ListChunkResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[38]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ListChunkResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ListChunkResponseProto) ProtoMessage() {}
-
-func (x *ListChunkResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[38]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ListChunkResponseProto.ProtoReflect.Descriptor instead.
-func (*ListChunkResponseProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{38}
-}
-
-func (x *ListChunkResponseProto) GetChunkData() []*ChunkInfo {
-	if x != nil {
-		return x.ChunkData
-	}
-	return nil
-}
-
-type PutSmallFileRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Block     *PutBlockRequestProto `protobuf:"bytes,1,req,name=block" json:"block,omitempty"`
-	ChunkInfo *ChunkInfo            `protobuf:"bytes,2,req,name=chunkInfo" json:"chunkInfo,omitempty"`
-	Data      []byte                `protobuf:"bytes,3,req,name=data" json:"data,omitempty"`
-}
-
-func (x *PutSmallFileRequestProto) Reset() {
-	*x = PutSmallFileRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[39]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *PutSmallFileRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PutSmallFileRequestProto) ProtoMessage() {}
-
-func (x *PutSmallFileRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[39]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use PutSmallFileRequestProto.ProtoReflect.Descriptor instead.
-func (*PutSmallFileRequestProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{39}
-}
-
-func (x *PutSmallFileRequestProto) GetBlock() *PutBlockRequestProto {
-	if x != nil {
-		return x.Block
-	}
-	return nil
-}
-
-func (x *PutSmallFileRequestProto) GetChunkInfo() *ChunkInfo {
-	if x != nil {
-		return x.ChunkInfo
-	}
-	return nil
-}
-
-func (x *PutSmallFileRequestProto) GetData() []byte {
-	if x != nil {
-		return x.Data
-	}
-	return nil
-}
-
-type PutSmallFileResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	CommittedBlockLength *GetCommittedBlockLengthResponseProto `protobuf:"bytes,1,req,name=committedBlockLength" json:"committedBlockLength,omitempty"`
-}
-
-func (x *PutSmallFileResponseProto) Reset() {
-	*x = PutSmallFileResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[40]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *PutSmallFileResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PutSmallFileResponseProto) ProtoMessage() {}
-
-func (x *PutSmallFileResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[40]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use PutSmallFileResponseProto.ProtoReflect.Descriptor instead.
-func (*PutSmallFileResponseProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{40}
-}
-
-func (x *PutSmallFileResponseProto) GetCommittedBlockLength() *GetCommittedBlockLengthResponseProto {
-	if x != nil {
-		return x.CommittedBlockLength
-	}
-	return nil
-}
-
-type GetSmallFileRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Block *GetBlockRequestProto `protobuf:"bytes,1,req,name=block" json:"block,omitempty"`
-}
-
-func (x *GetSmallFileRequestProto) Reset() {
-	*x = GetSmallFileRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[41]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GetSmallFileRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetSmallFileRequestProto) ProtoMessage() {}
-
-func (x *GetSmallFileRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[41]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetSmallFileRequestProto.ProtoReflect.Descriptor instead.
-func (*GetSmallFileRequestProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{41}
-}
-
-func (x *GetSmallFileRequestProto) GetBlock() *GetBlockRequestProto {
-	if x != nil {
-		return x.Block
-	}
-	return nil
-}
-
-type GetSmallFileResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Data *ReadChunkResponseProto `protobuf:"bytes,1,req,name=data" json:"data,omitempty"`
-}
-
-func (x *GetSmallFileResponseProto) Reset() {
-	*x = GetSmallFileResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[42]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GetSmallFileResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetSmallFileResponseProto) ProtoMessage() {}
-
-func (x *GetSmallFileResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[42]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetSmallFileResponseProto.ProtoReflect.Descriptor instead.
-func (*GetSmallFileResponseProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{42}
-}
-
-func (x *GetSmallFileResponseProto) GetData() *ReadChunkResponseProto {
-	if x != nil {
-		return x.Data
-	}
-	return nil
-}
-
-type CopyContainerRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ContainerID *int64  `protobuf:"varint,1,req,name=containerID" json:"containerID,omitempty"`
-	ReadOffset  *uint64 `protobuf:"varint,2,req,name=readOffset" json:"readOffset,omitempty"`
-	Len         *uint64 `protobuf:"varint,3,opt,name=len" json:"len,omitempty"`
-}
-
-func (x *CopyContainerRequestProto) Reset() {
-	*x = CopyContainerRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[43]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CopyContainerRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CopyContainerRequestProto) ProtoMessage() {}
-
-func (x *CopyContainerRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[43]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CopyContainerRequestProto.ProtoReflect.Descriptor instead.
-func (*CopyContainerRequestProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{43}
-}
-
-func (x *CopyContainerRequestProto) GetContainerID() int64 {
-	if x != nil && x.ContainerID != nil {
-		return *x.ContainerID
-	}
-	return 0
-}
-
-func (x *CopyContainerRequestProto) GetReadOffset() uint64 {
-	if x != nil && x.ReadOffset != nil {
-		return *x.ReadOffset
-	}
-	return 0
-}
-
-func (x *CopyContainerRequestProto) GetLen() uint64 {
-	if x != nil && x.Len != nil {
-		return *x.Len
-	}
-	return 0
-}
-
-type CopyContainerResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ContainerID *int64  `protobuf:"varint,1,req,name=containerID" json:"containerID,omitempty"`
-	ReadOffset  *uint64 `protobuf:"varint,2,req,name=readOffset" json:"readOffset,omitempty"`
-	Len         *uint64 `protobuf:"varint,3,req,name=len" json:"len,omitempty"`
-	Eof         *bool   `protobuf:"varint,4,req,name=eof" json:"eof,omitempty"`
-	Data        []byte  `protobuf:"bytes,5,req,name=data" json:"data,omitempty"`
-	Checksum    *int64  `protobuf:"varint,6,opt,name=checksum" json:"checksum,omitempty"`
-}
-
-func (x *CopyContainerResponseProto) Reset() {
-	*x = CopyContainerResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_DatanodeClientProtocol_proto_msgTypes[44]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CopyContainerResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CopyContainerResponseProto) ProtoMessage() {}
-
-func (x *CopyContainerResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_DatanodeClientProtocol_proto_msgTypes[44]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CopyContainerResponseProto.ProtoReflect.Descriptor instead.
-func (*CopyContainerResponseProto) Descriptor() ([]byte, []int) {
-	return file_DatanodeClientProtocol_proto_rawDescGZIP(), []int{44}
-}
-
-func (x *CopyContainerResponseProto) GetContainerID() int64 {
-	if x != nil && x.ContainerID != nil {
-		return *x.ContainerID
-	}
-	return 0
-}
-
-func (x *CopyContainerResponseProto) GetReadOffset() uint64 {
-	if x != nil && x.ReadOffset != nil {
-		return *x.ReadOffset
-	}
-	return 0
-}
-
-func (x *CopyContainerResponseProto) GetLen() uint64 {
-	if x != nil && x.Len != nil {
-		return *x.Len
-	}
-	return 0
-}
-
-func (x *CopyContainerResponseProto) GetEof() bool {
-	if x != nil && x.Eof != nil {
-		return *x.Eof
-	}
-	return false
-}
-
-func (x *CopyContainerResponseProto) GetData() []byte {
-	if x != nil {
-		return x.Data
-	}
-	return nil
-}
-
-func (x *CopyContainerResponseProto) GetChecksum() int64 {
-	if x != nil && x.Checksum != nil {
-		return *x.Checksum
-	}
-	return 0
-}
-
-var File_DatanodeClientProtocol_proto protoreflect.FileDescriptor
-
-var file_DatanodeClientProtocol_proto_rawDesc = []byte{
-	0x0a, 0x1c, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14,
-	0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61,
-	0x6e, 0x6f, 0x64, 0x65, 0x22, 0x86, 0x01, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64,
-	0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74,
-	0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x03, 0x52, 0x0b, 0x63,
-	0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x6f,
-	0x63, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x02, 0x20, 0x02, 0x28, 0x03, 0x52, 0x07, 0x6c, 0x6f, 0x63,
-	0x61, 0x6c, 0x49, 0x44, 0x12, 0x37, 0x0a, 0x15, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6d,
-	0x6d, 0x69, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x04, 0x3a, 0x01, 0x30, 0x52, 0x15, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6d,
-	0x6d, 0x69, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x32, 0x0a,
-	0x08, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
-	0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x22, 0x95, 0x0d, 0x0a, 0x1c, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43,
-	0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f,
-	0x74, 0x6f, 0x12, 0x34, 0x0a, 0x07, 0x63, 0x6d, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20,
-	0x02, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64,
-	0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52,
-	0x07, 0x63, 0x6d, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63,
-	0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65,
-	0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49,
-	0x44, 0x18, 0x03, 0x20, 0x02, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
-	0x65, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65,
-	0x55, 0x75, 0x69, 0x64, 0x18, 0x04, 0x20, 0x02, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61,
-	0x6e, 0x6f, 0x64, 0x65, 0x55, 0x75, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x69, 0x70, 0x65,
-	0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x69,
-	0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x5b, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x61,
-	0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x31, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
-	0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43,
-	0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50,
-	0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74,
-	0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x55, 0x0a, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e,
-	0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68,
-	0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e,
-	0x6f, 0x64, 0x65, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
-	0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0d, 0x72,
-	0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x5b, 0x0a, 0x0f,
-	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18,
-	0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68,
-	0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x55, 0x70, 0x64,
-	0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65,
-	0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x5b, 0x0a, 0x0f, 0x64, 0x65, 0x6c,
-	0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x31, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73,
-	0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
-	0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e,
-	0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x55, 0x0a, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x6f,
-	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e,
-	0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61,
-	0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
-	0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0d,
-	0x6c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x58, 0x0a,
-	0x0e, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18,
-	0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68,
-	0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x6c, 0x6f,
-	0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f,
-	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x46, 0x0a, 0x08, 0x70, 0x75, 0x74, 0x42, 0x6c,
-	0x6f, 0x63, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x68, 0x61, 0x64, 0x6f,
-	0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65,
-	0x2e, 0x50, 0x75, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x70, 0x75, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12,
-	0x46, 0x0a, 0x08, 0x67, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2a, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
-	0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63,
-	0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x67,
-	0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x4f, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74,
-	0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x68,
-	0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e,
-	0x6f, 0x64, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0b, 0x64, 0x65, 0x6c,
-	0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x49, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74,
-	0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x68, 0x61,
-	0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f,
-	0x64, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x6c,
-	0x6f, 0x63, 0x6b, 0x12, 0x49, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x43, 0x68, 0x75, 0x6e, 0x6b,
-	0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e,
-	0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x52, 0x65,
-	0x61, 0x64, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72,
-	0x6f, 0x74, 0x6f, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x4c,
-	0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x11, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73,
-	0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x43,
-	0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x52, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x4f, 0x0a, 0x0b,
-	0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x12, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x2d, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
-	0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43,
-	0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x49, 0x0a,
-	0x09, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2b, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64,
-	0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e,
-	0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x09, 0x6c,
-	0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x52, 0x0a, 0x0c, 0x70, 0x75, 0x74, 0x53,
-	0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e,
-	0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74,
-	0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69,
-	0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0c,
-	0x70, 0x75, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x52, 0x0a, 0x0c,
-	0x67, 0x65, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x15, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73,
-	0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x6d, 0x61,
-	0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f,
-	0x74, 0x6f, 0x52, 0x0c, 0x67, 0x65, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65,
-	0x12, 0x73, 0x0a, 0x17, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64,
-	0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x16, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x39, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
-	0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d,
-	0x69, 0x74, 0x74, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68,
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x17, 0x67, 0x65,
-	0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c,
-	0x65, 0x6e, 0x67, 0x74, 0x68, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64,
-	0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x17, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x63,
-	0x6f, 0x64, 0x65, 0x64, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xed, 0x0c, 0x0a, 0x1d, 0x43, 0x6f,
-	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x34, 0x0a, 0x07, 0x63,
-	0x6d, 0x64, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x68,
-	0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e,
-	0x6f, 0x64, 0x65, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x63, 0x6d, 0x64, 0x54, 0x79, 0x70,
-	0x65, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x12, 0x34, 0x0a, 0x06, 0x72,
-	0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x68, 0x61,
-	0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f,
-	0x64, 0x65, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c,
-	0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x5c, 0x0a, 0x0f, 0x63,
-	0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64,
-	0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x72, 0x65, 0x61,
-	0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65,
-	0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x56, 0x0a, 0x0d, 0x72, 0x65, 0x61,
-	0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x30, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64,
-	0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74,
-	0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f,
-	0x74, 0x6f, 0x52, 0x0d, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
-	0x72, 0x12, 0x5c, 0x0a, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61,
-	0x69, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x68, 0x61, 0x64,
-	0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64,
-	0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
-	0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0f,
-	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12,
-	0x5c, 0x0a, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
-	0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f,
-	0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e,
-	0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0f, 0x64, 0x65,
-	0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x56, 0x0a,
-	0x0d, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x09,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64,
-	0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74,
-	0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74,
-	0x61, 0x69, 0x6e, 0x65, 0x72, 0x12, 0x59, 0x0a, 0x0e, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f,
-	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e,
-	0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61,
-	0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,
-	0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x52, 0x0e, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
-	0x12, 0x47, 0x0a, 0x08, 0x70, 0x75, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0b, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73,
-	0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x42, 0x6c, 0x6f,
-	0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52,
-	0x08, 0x70, 0x75, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x47, 0x0a, 0x08, 0x67, 0x65, 0x74,
-	0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x68, 0x61,
-	0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f,
-	0x64, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x08, 0x67, 0x65, 0x74, 0x42, 0x6c, 0x6f,
-	0x63, 0x6b, 0x12, 0x50, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63,
-	0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70,
-	0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44,
-	0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42,
-	0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x4a, 0x0a, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63,
-	0x6b, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70,
-	0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x4c,
-	0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x09, 0x6c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
-	0x12, 0x4d, 0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x0f,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64,
-	0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x57, 0x72, 0x69, 0x74,
-	0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72,
-	0x6f, 0x74, 0x6f, 0x52, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12,
-	0x4a, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x10, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73,
-	0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x68,
-	0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x50, 0x0a, 0x0b, 0x64,
-	0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2e, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64,
-	0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68,
-	0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x4a, 0x0a,
-	0x09, 0x6c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b,
-	0x32, 0x2c, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64,
-	0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e,
-	0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x09,
-	0x6c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x12, 0x53, 0x0a, 0x0c, 0x70, 0x75, 0x74,
-	0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x2f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61,
-	0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x50, 0x75, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46,
-	0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x52, 0x0c, 0x70, 0x75, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x53,
-	0x0a, 0x0c, 0x67, 0x65, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x14,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64,
-	0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x53,
-	0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0c, 0x67, 0x65, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46,
-	0x69, 0x6c, 0x65, 0x12, 0x74, 0x0a, 0x17, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
-	0x74, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x15,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64,
-	0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43,
-	0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e,
-	0x67, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x52, 0x17, 0x67, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x42, 0x6c,
-	0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0xfb, 0x03, 0x0a, 0x12, 0x43, 0x6f,
-	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x18,
-	0x01, 0x20, 0x02, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
-	0x49, 0x44, 0x12, 0x3a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02,
-	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64,
-	0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x56,
-	0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x24,
-	0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x61, 0x74, 0x68, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
-	0x50, 0x61, 0x74, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x79, 0x74, 0x65, 0x73, 0x55, 0x73, 0x65,
-	0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x62, 0x79, 0x74, 0x65, 0x73, 0x55, 0x73,
-	0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03,
-	0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x43,
-	0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x6c, 0x6f, 0x63,
-	0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x4a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18,
-	0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68,
-	0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x6f, 0x6e,
-	0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
-	0x53, 0x74, 0x61, 0x74, 0x65, 0x3a, 0x04, 0x4f, 0x50, 0x45, 0x4e, 0x52, 0x05, 0x73, 0x74, 0x61,
-	0x74, 0x65, 0x12, 0x5c, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54,
-	0x79, 0x70, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x68, 0x61, 0x64, 0x6f,
-	0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65,
-	0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x11,
-	0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
-	0x72, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65,
-	0x22, 0x65, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4f, 0x50, 0x45,
-	0x4e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x02,
-	0x12, 0x10, 0x0a, 0x0c, 0x51, 0x55, 0x41, 0x53, 0x49, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44,
-	0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0d,
-	0x0a, 0x09, 0x55, 0x4e, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x59, 0x10, 0x05, 0x12, 0x0b, 0x0a,
-	0x07, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45,
-	0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x07, 0x22, 0xcb, 0x01, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x74,
-	0x61, 0x69, 0x6e, 0x65, 0x72, 0x32, 0x42, 0x43, 0x53, 0x49, 0x44, 0x4d, 0x61, 0x70, 0x50, 0x72,
-	0x6f, 0x74, 0x6f, 0x12, 0x6c, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
-	0x32, 0x42, 0x43, 0x53, 0x49, 0x44, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x68,
-	0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e,
-	0x6f, 0x64, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x32, 0x42, 0x43,
-	0x53, 0x49, 0x44, 0x4d, 0x61, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x74,
-	0x61, 0x69, 0x6e, 0x65, 0x72, 0x32, 0x42, 0x43, 0x53, 0x49, 0x44, 0x45, 0x6e, 0x74, 0x72, 0x79,
-	0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x32, 0x42, 0x43, 0x53, 0x49,
-	0x44, 0x1a, 0x42, 0x0a, 0x14, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x32, 0x42,
-	0x43, 0x53, 0x49, 0x44, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
-	0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xb7, 0x01, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
-	0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
-	0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70,
-	0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x4b,
-	0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74,
-	0x61, 0x12, 0x5c, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x79,
-	0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f,
-	0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e,
-	0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x11, 0x4b,
-	0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
-	0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22,
-	0x1e, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
-	0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22,
-	0x1b, 0x0a, 0x19, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6c, 0x0a, 0x1a,
-	0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x4e, 0x0a, 0x0d, 0x63, 0x6f,
-	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x0b, 0x32, 0x28, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
-	0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
-	0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0d, 0x63, 0x6f, 0x6e,
-	0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x82, 0x01, 0x0a, 0x1b, 0x55,
-	0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3a, 0x0a, 0x08, 0x6d, 0x65,
-	0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x68,
-	0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e,
-	0x6f, 0x64, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6d, 0x65,
-	0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x27, 0x0a, 0x0b, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x55,
-	0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c,
-	0x73, 0x65, 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22,
-	0x1e, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
-	0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22,
-	0x46, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
-	0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x27,
-	0x0a, 0x0b, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x0b, 0x66, 0x6f, 0x72, 0x63,
-	0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74,
-	0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x31, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43,
-	0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50,
-	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x6c, 0x0a, 0x1a, 0x4c, 0x69,
-	0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x4e, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74,
-	0x61, 0x69, 0x6e, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
-	0x28, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61,
-	0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72,
-	0x44, 0x61, 0x74, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61,
-	0x69, 0x6e, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x22, 0x1c, 0x0a, 0x1a, 0x43, 0x6c, 0x6f, 0x73,
-	0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x53, 0x0a, 0x1b, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43,
-	0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e,
-	0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b,
-	0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x22, 0xeb, 0x01, 0x0a, 0x09,
-	0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3f, 0x0a, 0x07, 0x62, 0x6c, 0x6f,
-	0x63, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x61, 0x64,
-	0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64,
-	0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49,
-	0x44, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c,
-	0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73,
-	0x12, 0x3a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73,
-	0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c,
-	0x75, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x37, 0x0a, 0x06,
-	0x63, 0x68, 0x75, 0x6e, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x68,
-	0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e,
-	0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x63,
-	0x68, 0x75, 0x6e, 0x6b, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20,
-	0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x67, 0x0a, 0x14, 0x50, 0x75, 0x74,
-	0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74,
-	0x6f, 0x12, 0x3d, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01,
-	0x20, 0x02, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64,
-	0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63,
-	0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61,
-	0x12, 0x10, 0x0a, 0x03, 0x65, 0x6f, 0x66, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x65,
-	0x6f, 0x66, 0x22, 0x87, 0x01, 0x0a, 0x15, 0x50, 0x75, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x6e, 0x0a, 0x14,
-	0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65,
-	0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x68, 0x61, 0x64,
-	0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64,
-	0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x42, 0x6c,
-	0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65,
-	0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x57, 0x0a, 0x14,
-	0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50,
-	0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3f, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x18,
-	0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68,
-	0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x61, 0x74,
-	0x61, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x52, 0x07, 0x62, 0x6c,
-	0x6f, 0x63, 0x6b, 0x49, 0x44, 0x22, 0x56, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63,
-	0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3d,
-	0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x02, 0x28,
-	0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
-	0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61,
-	0x74, 0x61, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x22, 0x5a, 0x0a,
-	0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3f, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63,
-	0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x61, 0x64, 0x6f,
-	0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65,
-	0x2e, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44,
-	0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x22, 0x66, 0x0a, 0x23, 0x47, 0x65, 0x74,
-	0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65,
-	0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x12, 0x3f, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28,
-	0x0b, 0x32, 0x25, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
-	0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64,
-	0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49,
-	0x44, 0x22, 0x89, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74,
-	0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3f, 0x0a, 0x07, 0x62, 0x6c,
-	0x6f, 0x63, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x61,
-	0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f,
-	0x64, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
-	0x49, 0x44, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x62,
-	0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x02, 0x20, 0x02, 0x28, 0x03,
-	0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x1a, 0x0a,
-	0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x51, 0x0a, 0x15, 0x4c, 0x69, 0x73,
-	0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f,
-	0x74, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c,
-	0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4c,
-	0x6f, 0x63, 0x61, 0x6c, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18,
-	0x03, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x57, 0x0a, 0x16,
-	0x4c, 0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3d, 0x0a, 0x09, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x44,
-	0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x61, 0x64, 0x6f,
-	0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65,
-	0x2e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x09, 0x62, 0x6c, 0x6f, 0x63,
-	0x6b, 0x44, 0x61, 0x74, 0x61, 0x22, 0xd7, 0x01, 0x0a, 0x09, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x49,
-	0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65,
-	0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x4e, 0x61, 0x6d,
-	0x65, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x02, 0x28,
-	0x04, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x65, 0x6e,
-	0x18, 0x03, 0x20, 0x02, 0x28, 0x04, 0x52, 0x03, 0x6c, 0x65, 0x6e, 0x12, 0x3a, 0x0a, 0x08, 0x6d,
-	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e,
-	0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61,
-	0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x6d,
-	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x46, 0x0a, 0x0c, 0x63, 0x68, 0x65, 0x63, 0x6b,
-	0x73, 0x75, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x22, 0x2e,
-	0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61,
-	0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x44, 0x61, 0x74,
-	0x61, 0x52, 0x0c, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x44, 0x61, 0x74, 0x61, 0x22,
-	0x90, 0x01, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x44, 0x61, 0x74, 0x61,
-	0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x22,
-	0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74,
-	0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x54, 0x79,
-	0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x62, 0x79, 0x74, 0x65,
-	0x73, 0x50, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x02,
-	0x28, 0x0d, 0x52, 0x10, 0x62, 0x79, 0x74, 0x65, 0x73, 0x50, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63,
-	0x6b, 0x73, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d,
-	0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75,
-	0x6d, 0x73, 0x22, 0xac, 0x01, 0x0a, 0x16, 0x57, 0x72, 0x69, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e,
-	0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3f, 0x0a,
-	0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x25,
-	0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74,
-	0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x6c,
-	0x6f, 0x63, 0x6b, 0x49, 0x44, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x12, 0x3d,
-	0x0a, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x02, 0x28,
-	0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
-	0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e,
-	0x66, 0x6f, 0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a,
-	0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74,
-	0x61, 0x22, 0x19, 0x0a, 0x17, 0x57, 0x72, 0x69, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52,
-	0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x97, 0x01, 0x0a,
-	0x15, 0x52, 0x65, 0x61, 0x64, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
-	0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3f, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49,
-	0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70,
-	0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44,
-	0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x52, 0x07,
-	0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x12, 0x3d, 0x0a, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b,
-	0x44, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x61, 0x64,
-	0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64,
-	0x65, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x63, 0x68, 0x75,
-	0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x22, 0xac, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x61, 0x64, 0x43,
-	0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74,
-	0x6f, 0x12, 0x3f, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02,
-	0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73,
-	0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f,
-	0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
-	0x49, 0x44, 0x12, 0x3d, 0x0a, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18,
-	0x02, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68,
-	0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x75,
-	0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74,
-	0x61, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0c, 0x52,
-	0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x99, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
-	0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74,
-	0x6f, 0x12, 0x3f, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02,
-	0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73,
-	0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f,
-	0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x52, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
-	0x49, 0x44, 0x12, 0x3d, 0x0a, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18,
-	0x02, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68,
-	0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x75,
-	0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74,
-	0x61, 0x22, 0x1a, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x94, 0x01,
-	0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3f, 0x0a, 0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
-	0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f,
-	0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e,
-	0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x52,
-	0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x12, 0x24, 0x0a, 0x0d, 0x70, 0x72, 0x65, 0x76,
-	0x43, 0x68, 0x75, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52,
-	0x0d, 0x70, 0x72, 0x65, 0x76, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14,
-	0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x05, 0x63,
-	0x6f, 0x75, 0x6e, 0x74, 0x22, 0x57, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x68, 0x75, 0x6e,
-	0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x3d,
-	0x0a, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
-	0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e,
-	0x66, 0x6f, 0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x22, 0xaf, 0x01,
-	0x0a, 0x18, 0x50, 0x75, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x40, 0x0a, 0x05, 0x62, 0x6c,
-	0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x68, 0x61, 0x64, 0x6f,
-	0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65,
-	0x2e, 0x50, 0x75, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x3d, 0x0a, 0x09,
-	0x63, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0b, 0x32,
-	0x1f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61,
-	0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f,
-	0x52, 0x09, 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x64,
-	0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22,
-	0x8b, 0x01, 0x0a, 0x19, 0x50, 0x75, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x6e, 0x0a,
-	0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c,
-	0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x68, 0x61,
-	0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f,
-	0x64, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x42,
-	0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
-	0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74,
-	0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x5c, 0x0a,
-	0x18, 0x47, 0x65, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71,
-	0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x40, 0x0a, 0x05, 0x62, 0x6c, 0x6f,
-	0x63, 0x6b, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f,
-	0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e,
-	0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50,
-	0x72, 0x6f, 0x74, 0x6f, 0x52, 0x05, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x22, 0x5d, 0x0a, 0x19, 0x47,
-	0x65, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
-	0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x40, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61,
-	0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e,
-	0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x52, 0x65,
-	0x61, 0x64, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50,
-	0x72, 0x6f, 0x74, 0x6f, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x6f, 0x0a, 0x19, 0x43, 0x6f,
-	0x70, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65,
-	0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61,
-	0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f,
-	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x61,
-	0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x02, 0x28, 0x04, 0x52, 0x0a, 0x72,
-	0x65, 0x61, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x65, 0x6e,
-	0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x6c, 0x65, 0x6e, 0x22, 0xb2, 0x01, 0x0a, 0x1a,
-	0x43, 0x6f, 0x70, 0x79, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73,
-	0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f,
-	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x03, 0x52,
-	0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a,
-	0x72, 0x65, 0x61, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x02, 0x28, 0x04,
-	0x52, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x4f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03,
-	0x6c, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x02, 0x28, 0x04, 0x52, 0x03, 0x6c, 0x65, 0x6e, 0x12, 0x10,
-	0x0a, 0x03, 0x65, 0x6f, 0x66, 0x18, 0x04, 0x20, 0x02, 0x28, 0x08, 0x52, 0x03, 0x65, 0x6f, 0x66,
-	0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x02, 0x28, 0x0c, 0x52, 0x04,
-	0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d,
-	0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d,
-	0x2a, 0xcd, 0x02, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x72, 0x65,
-	0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x10, 0x01, 0x12, 0x11,
-	0x0a, 0x0d, 0x52, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x10,
-	0x02, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61,
-	0x69, 0x6e, 0x65, 0x72, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
-	0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x4c,
-	0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x10, 0x05, 0x12, 0x0c,
-	0x0a, 0x08, 0x50, 0x75, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08,
-	0x47, 0x65, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x65,
-	0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x10, 0x08, 0x12, 0x0d, 0x0a, 0x09, 0x4c,
-	0x69, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x10, 0x09, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x65,
-	0x61, 0x64, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x65, 0x6c,
-	0x65, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x57, 0x72,
-	0x69, 0x74, 0x65, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x10, 0x0c, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x69,
-	0x73, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x10, 0x0d, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x6f, 0x6d,
-	0x70, 0x61, 0x63, 0x74, 0x43, 0x68, 0x75, 0x6e, 0x6b, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x50,
-	0x75, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x10, 0x0f, 0x12, 0x10, 0x0a,
-	0x0c, 0x47, 0x65, 0x74, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x46, 0x69, 0x6c, 0x65, 0x10, 0x10, 0x12,
-	0x12, 0x0a, 0x0e, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
-	0x72, 0x10, 0x11, 0x12, 0x1b, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74,
-	0x74, 0x65, 0x64, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x10, 0x12,
-	0x2a, 0x9d, 0x08, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x0b, 0x0a, 0x07, 0x53,
-	0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x4e, 0x53, 0x55,
-	0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10,
-	0x02, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x41, 0x4c, 0x46, 0x4f, 0x52, 0x4d, 0x45, 0x44, 0x5f, 0x52,
-	0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x4e, 0x54,
-	0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x45,
-	0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49,
-	0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x4e,
-	0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x48, 0x41, 0x53, 0x48, 0x5f,
-	0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x06, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x4e, 0x54, 0x41,
-	0x49, 0x4e, 0x45, 0x52, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x53, 0x10, 0x07, 0x12, 0x15, 0x0a,
-	0x11, 0x4e, 0x4f, 0x5f, 0x53, 0x55, 0x43, 0x48, 0x5f, 0x41, 0x4c, 0x47, 0x4f, 0x52, 0x49, 0x54,
-	0x48, 0x4d, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45,
-	0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x09, 0x12, 0x10, 0x0a,
-	0x0c, 0x49, 0x4f, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x0a, 0x12,
-	0x1e, 0x0a, 0x1a, 0x55, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x52, 0x45, 0x41,
-	0x44, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x44, 0x42, 0x10, 0x0b, 0x12,
-	0x11, 0x0a, 0x0d, 0x4e, 0x4f, 0x5f, 0x53, 0x55, 0x43, 0x48, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b,
-	0x10, 0x0c, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x56, 0x45, 0x52, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f,
-	0x46, 0x4c, 0x41, 0x47, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x49, 0x52, 0x45, 0x44, 0x10, 0x0d, 0x12,
-	0x1b, 0x0a, 0x17, 0x55, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x46, 0x49, 0x4e,
-	0x44, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x44, 0x49, 0x52, 0x10, 0x0e, 0x12, 0x16, 0x0a, 0x12,
-	0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x57, 0x52, 0x49, 0x54, 0x45, 0x5f, 0x53, 0x49,
-	0x5a, 0x45, 0x10, 0x0f, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d,
-	0x5f, 0x4d, 0x49, 0x53, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x10, 0x12, 0x18, 0x0a, 0x14, 0x55,
-	0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x46, 0x49, 0x4e, 0x44, 0x5f, 0x43, 0x48,
-	0x55, 0x4e, 0x4b, 0x10, 0x11, 0x12, 0x19, 0x0a, 0x15, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x5f,
-	0x44, 0x45, 0x43, 0x4f, 0x44, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x12,
-	0x12, 0x14, 0x0a, 0x10, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x41, 0x52, 0x47, 0x55,
-	0x4d, 0x45, 0x4e, 0x54, 0x10, 0x13, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x55, 0x54, 0x5f, 0x53, 0x4d,
-	0x41, 0x4c, 0x4c, 0x5f, 0x46, 0x49, 0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x14,
-	0x12, 0x18, 0x0a, 0x14, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x4d, 0x41, 0x4c, 0x4c, 0x5f, 0x46, 0x49,
-	0x4c, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x15, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4c,
-	0x4f, 0x53, 0x45, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x49,
-	0x4f, 0x10, 0x16, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x5f,
-	0x43, 0x4f, 0x4d, 0x50, 0x41, 0x43, 0x54, 0x5f, 0x44, 0x42, 0x10, 0x18, 0x12, 0x19, 0x0a, 0x15,
-	0x55, 0x4e, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e,
-	0x45, 0x52, 0x5f, 0x49, 0x4f, 0x10, 0x19, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x45, 0x4c, 0x45, 0x54,
-	0x45, 0x5f, 0x4f, 0x4e, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49,
-	0x4e, 0x45, 0x52, 0x10, 0x1a, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x5f,
-	0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x54, 0x52, 0x59, 0x10,
-	0x1b, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x5f, 0x43, 0x4f, 0x4e,
-	0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0x1c, 0x12, 0x15,
-	0x0a, 0x11, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x53, 0x50,
-	0x41, 0x43, 0x45, 0x10, 0x1d, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e,
-	0x45, 0x52, 0x5f, 0x41, 0x4c, 0x52, 0x45, 0x41, 0x44, 0x59, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54,
-	0x53, 0x10, 0x1e, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52,
-	0x5f, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10,
-	0x1f, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x46,
-	0x49, 0x4c, 0x45, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f,
-	0x52, 0x10, 0x20, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52,
-	0x5f, 0x43, 0x48, 0x45, 0x43, 0x4b, 0x53, 0x55, 0x4d, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10,
-	0x21, 0x12, 0x1a, 0x0a, 0x16, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x43, 0x4f, 0x4e,
-	0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x22, 0x12, 0x17, 0x0a,
-	0x13, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x43, 0x4f, 0x4d, 0x4d, 0x49,
-	0x54, 0x54, 0x45, 0x44, 0x10, 0x23, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49,
-	0x4e, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x59, 0x10, 0x24, 0x12,
-	0x11, 0x0a, 0x0d, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f, 0x42, 0x43, 0x53, 0x49, 0x44,
-	0x10, 0x25, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x43, 0x53, 0x49, 0x44, 0x5f, 0x4d, 0x49, 0x53, 0x4d,
-	0x41, 0x54, 0x43, 0x48, 0x10, 0x26, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49,
-	0x4e, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x10, 0x27, 0x12, 0x15,
-	0x0a, 0x11, 0x43, 0x4f, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x45, 0x52, 0x5f, 0x4d, 0x49, 0x53, 0x53,
-	0x49, 0x4e, 0x47, 0x10, 0x28, 0x12, 0x23, 0x0a, 0x1f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x5f, 0x54,
-	0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f,
-	0x4e, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x29, 0x12, 0x14, 0x0a, 0x10, 0x45, 0x52,
-	0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x5f, 0x44, 0x42, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x10, 0x2a,
-	0x2a, 0x26, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x54, 0x79, 0x70,
-	0x65, 0x12, 0x15, 0x0a, 0x11, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6e,
-	0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x10, 0x01, 0x2a, 0x44, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63,
-	0x6b, 0x73, 0x75, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45,
-	0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x52, 0x43, 0x33, 0x32, 0x10, 0x02, 0x12, 0x0a, 0x0a,
-	0x06, 0x43, 0x52, 0x43, 0x33, 0x32, 0x43, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x48, 0x41,
-	0x32, 0x35, 0x36, 0x10, 0x04, 0x12, 0x07, 0x0a, 0x03, 0x4d, 0x44, 0x35, 0x10, 0x05, 0x32, 0x95,
-	0x01, 0x0a, 0x1c, 0x58, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
-	0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12,
-	0x75, 0x0a, 0x04, 0x73, 0x65, 0x6e, 0x64, 0x12, 0x32, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70,
-	0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43,
-	0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52,
-	0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x33, 0x2e, 0x68, 0x61,
-	0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f,
-	0x64, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x43, 0x6f, 0x6d, 0x6d,
-	0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x22, 0x00, 0x28, 0x01, 0x30, 0x01, 0x32, 0x8f, 0x01, 0x0a, 0x1c, 0x49, 0x6e, 0x74, 0x72, 0x61,
-	0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
-	0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6f, 0x0a, 0x08, 0x64, 0x6f, 0x77, 0x6e, 0x6c,
-	0x6f, 0x61, 0x64, 0x12, 0x2f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64,
-	0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x6f, 0x70, 0x79, 0x43,
-	0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50,
-	0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x30, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64,
-	0x64, 0x73, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x43, 0x6f, 0x70, 0x79,
-	0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x30, 0x01, 0x42, 0x73, 0x0a, 0x2e, 0x6f, 0x72, 0x67, 0x2e,
-	0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64,
-	0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x64, 0x61, 0x74, 0x61,
-	0x6e, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x0f, 0x43, 0x6f, 0x6e, 0x74,
-	0x61, 0x69, 0x6e, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x5a, 0x2d, 0x67, 0x69, 0x74,
-	0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x6f,
-	0x7a, 0x6f, 0x6e, 0x65, 0x2d, 0x67, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74,
-	0x6f, 0x2f, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0xa0, 0x01, 0x01,
-}
-
-var (
-	file_DatanodeClientProtocol_proto_rawDescOnce sync.Once
-	file_DatanodeClientProtocol_proto_rawDescData = file_DatanodeClientProtocol_proto_rawDesc
-)
-
-func file_DatanodeClientProtocol_proto_rawDescGZIP() []byte {
-	file_DatanodeClientProtocol_proto_rawDescOnce.Do(func() {
-		file_DatanodeClientProtocol_proto_rawDescData = protoimpl.X.CompressGZIP(file_DatanodeClientProtocol_proto_rawDescData)
-	})
-	return file_DatanodeClientProtocol_proto_rawDescData
-}
-
-var file_DatanodeClientProtocol_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
-var file_DatanodeClientProtocol_proto_msgTypes = make([]protoimpl.MessageInfo, 46)
-var file_DatanodeClientProtocol_proto_goTypes = []interface{}{
-	(Type)(0),                                    // 0: hadoop.hdds.datanode.Type
-	(Result)(0),                                  // 1: hadoop.hdds.datanode.Result
-	(ContainerType)(0),                           // 2: hadoop.hdds.datanode.ContainerType
-	(ChecksumType)(0),                            // 3: hadoop.hdds.datanode.ChecksumType
-	(ContainerDataProto_State)(0),                // 4: hadoop.hdds.datanode.ContainerDataProto.State
-	(*DatanodeBlockID)(nil),                      // 5: hadoop.hdds.datanode.DatanodeBlockID
-	(*KeyValue)(nil),                             // 6: hadoop.hdds.datanode.KeyValue
-	(*ContainerCommandRequestProto)(nil),         // 7: hadoop.hdds.datanode.ContainerCommandRequestProto
-	(*ContainerCommandResponseProto)(nil),        // 8: hadoop.hdds.datanode.ContainerCommandResponseProto
-	(*ContainerDataProto)(nil),                   // 9: hadoop.hdds.datanode.ContainerDataProto
-	(*Container2BCSIDMapProto)(nil),              // 10: hadoop.hdds.datanode.Container2BCSIDMapProto
-	(*CreateContainerRequestProto)(nil),          // 11: hadoop.hdds.datanode.CreateContainerRequestProto
-	(*CreateContainerResponseProto)(nil),         // 12: hadoop.hdds.datanode.CreateContainerResponseProto
-	(*ReadContainerRequestProto)(nil),            // 13: hadoop.hdds.datanode.ReadContainerRequestProto
-	(*ReadContainerResponseProto)(nil),           // 14: hadoop.hdds.datanode.ReadContainerResponseProto
-	(*UpdateContainerRequestProto)(nil),          // 15: hadoop.hdds.datanode.UpdateContainerRequestProto
-	(*UpdateContainerResponseProto)(nil),         // 16: hadoop.hdds.datanode.UpdateContainerResponseProto
-	(*DeleteContainerRequestProto)(nil),          // 17: hadoop.hdds.datanode.DeleteContainerRequestProto
-	(*DeleteContainerResponseProto)(nil),         // 18: hadoop.hdds.datanode.DeleteContainerResponseProto
-	(*ListContainerRequestProto)(nil),            // 19: hadoop.hdds.datanode.ListContainerRequestProto
-	(*ListContainerResponseProto)(nil),           // 20: hadoop.hdds.datanode.ListContainerResponseProto
-	(*CloseContainerRequestProto)(nil),           // 21: hadoop.hdds.datanode.CloseContainerRequestProto
-	(*CloseContainerResponseProto)(nil),          // 22: hadoop.hdds.datanode.CloseContainerResponseProto
-	(*BlockData)(nil),                            // 23: hadoop.hdds.datanode.BlockData
-	(*PutBlockRequestProto)(nil),                 // 24: hadoop.hdds.datanode.PutBlockRequestProto
-	(*PutBlockResponseProto)(nil),                // 25: hadoop.hdds.datanode.PutBlockResponseProto
-	(*GetBlockRequestProto)(nil),                 // 26: hadoop.hdds.datanode.GetBlockRequestProto
-	(*GetBlockResponseProto)(nil),                // 27: hadoop.hdds.datanode.GetBlockResponseProto
-	(*DeleteBlockRequestProto)(nil),              // 28: hadoop.hdds.datanode.DeleteBlockRequestProto
-	(*GetCommittedBlockLengthRequestProto)(nil),  // 29: hadoop.hdds.datanode.GetCommittedBlockLengthRequestProto
-	(*GetCommittedBlockLengthResponseProto)(nil), // 30: hadoop.hdds.datanode.GetCommittedBlockLengthResponseProto
-	(*DeleteBlockResponseProto)(nil),             // 31: hadoop.hdds.datanode.DeleteBlockResponseProto
-	(*ListBlockRequestProto)(nil),                // 32: hadoop.hdds.datanode.ListBlockRequestProto
-	(*ListBlockResponseProto)(nil),               // 33: hadoop.hdds.datanode.ListBlockResponseProto
-	(*ChunkInfo)(nil),                            // 34: hadoop.hdds.datanode.ChunkInfo
-	(*ChecksumData)(nil),                         // 35: hadoop.hdds.datanode.ChecksumData
-	(*WriteChunkRequestProto)(nil),               // 36: hadoop.hdds.datanode.WriteChunkRequestProto
-	(*WriteChunkResponseProto)(nil),              // 37: hadoop.hdds.datanode.WriteChunkResponseProto
-	(*ReadChunkRequestProto)(nil),                // 38: hadoop.hdds.datanode.ReadChunkRequestProto
-	(*ReadChunkResponseProto)(nil),               // 39: hadoop.hdds.datanode.ReadChunkResponseProto
-	(*DeleteChunkRequestProto)(nil),              // 40: hadoop.hdds.datanode.DeleteChunkRequestProto
-	(*DeleteChunkResponseProto)(nil),             // 41: hadoop.hdds.datanode.DeleteChunkResponseProto
-	(*ListChunkRequestProto)(nil),                // 42: hadoop.hdds.datanode.ListChunkRequestProto
-	(*ListChunkResponseProto)(nil),               // 43: hadoop.hdds.datanode.ListChunkResponseProto
-	(*PutSmallFileRequestProto)(nil),             // 44: hadoop.hdds.datanode.PutSmallFileRequestProto
-	(*PutSmallFileResponseProto)(nil),            // 45: hadoop.hdds.datanode.PutSmallFileResponseProto
-	(*GetSmallFileRequestProto)(nil),             // 46: hadoop.hdds.datanode.GetSmallFileRequestProto
-	(*GetSmallFileResponseProto)(nil),            // 47: hadoop.hdds.datanode.GetSmallFileResponseProto
-	(*CopyContainerRequestProto)(nil),            // 48: hadoop.hdds.datanode.CopyContainerRequestProto
-	(*CopyContainerResponseProto)(nil),           // 49: hadoop.hdds.datanode.CopyContainerResponseProto
-	nil,                                          // 50: hadoop.hdds.datanode.Container2BCSIDMapProto.Container2BCSIDEntry
-}
-var file_DatanodeClientProtocol_proto_depIdxs = []int32{
-	0,  // 0: hadoop.hdds.datanode.ContainerCommandRequestProto.cmdType:type_name -> hadoop.hdds.datanode.Type
-	11, // 1: hadoop.hdds.datanode.ContainerCommandRequestProto.createContainer:type_name -> hadoop.hdds.datanode.CreateContainerRequestProto
-	13, // 2: hadoop.hdds.datanode.ContainerCommandRequestProto.readContainer:type_name -> hadoop.hdds.datanode.ReadContainerRequestProto
-	15, // 3: hadoop.hdds.datanode.ContainerCommandRequestProto.updateContainer:type_name -> hadoop.hdds.datanode.UpdateContainerRequestProto
-	17, // 4: hadoop.hdds.datanode.ContainerCommandRequestProto.deleteContainer:type_name -> hadoop.hdds.datanode.DeleteContainerRequestProto
-	19, // 5: hadoop.hdds.datanode.ContainerCommandRequestProto.listContainer:type_name -> hadoop.hdds.datanode.ListContainerRequestProto
-	21, // 6: hadoop.hdds.datanode.ContainerCommandRequestProto.closeContainer:type_name -> hadoop.hdds.datanode.CloseContainerRequestProto
-	24, // 7: hadoop.hdds.datanode.ContainerCommandRequestProto.putBlock:type_name -> hadoop.hdds.datanode.PutBlockRequestProto
-	26, // 8: hadoop.hdds.datanode.ContainerCommandRequestProto.getBlock:type_name -> hadoop.hdds.datanode.GetBlockRequestProto
-	28, // 9: hadoop.hdds.datanode.ContainerCommandRequestProto.deleteBlock:type_name -> hadoop.hdds.datanode.DeleteBlockRequestProto
-	32, // 10: hadoop.hdds.datanode.ContainerCommandRequestProto.listBlock:type_name -> hadoop.hdds.datanode.ListBlockRequestProto
-	38, // 11: hadoop.hdds.datanode.ContainerCommandRequestProto.readChunk:type_name -> hadoop.hdds.datanode.ReadChunkRequestProto
-	36, // 12: hadoop.hdds.datanode.ContainerCommandRequestProto.writeChunk:type_name -> hadoop.hdds.datanode.WriteChunkRequestProto
-	40, // 13: hadoop.hdds.datanode.ContainerCommandRequestProto.deleteChunk:type_name -> hadoop.hdds.datanode.DeleteChunkRequestProto
-	42, // 14: hadoop.hdds.datanode.ContainerCommandRequestProto.listChunk:type_name -> hadoop.hdds.datanode.ListChunkRequestProto
-	44, // 15: hadoop.hdds.datanode.ContainerCommandRequestProto.putSmallFile:type_name -> hadoop.hdds.datanode.PutSmallFileRequestProto
-	46, // 16: hadoop.hdds.datanode.ContainerCommandRequestProto.getSmallFile:type_name -> hadoop.hdds.datanode.GetSmallFileRequestProto
-	29, // 17: hadoop.hdds.datanode.ContainerCommandRequestProto.getCommittedBlockLength:type_name -> hadoop.hdds.datanode.GetCommittedBlockLengthRequestProto
-	0,  // 18: hadoop.hdds.datanode.ContainerCommandResponseProto.cmdType:type_name -> hadoop.hdds.datanode.Type
-	1,  // 19: hadoop.hdds.datanode.ContainerCommandResponseProto.result:type_name -> hadoop.hdds.datanode.Result
-	12, // 20: hadoop.hdds.datanode.ContainerCommandResponseProto.createContainer:type_name -> hadoop.hdds.datanode.CreateContainerResponseProto
-	14, // 21: hadoop.hdds.datanode.ContainerCommandResponseProto.readContainer:type_name -> hadoop.hdds.datanode.ReadContainerResponseProto
-	16, // 22: hadoop.hdds.datanode.ContainerCommandResponseProto.updateContainer:type_name -> hadoop.hdds.datanode.UpdateContainerResponseProto
-	18, // 23: hadoop.hdds.datanode.ContainerCommandResponseProto.deleteContainer:type_name -> hadoop.hdds.datanode.DeleteContainerResponseProto
-	20, // 24: hadoop.hdds.datanode.ContainerCommandResponseProto.listContainer:type_name -> hadoop.hdds.datanode.ListContainerResponseProto
-	22, // 25: hadoop.hdds.datanode.ContainerCommandResponseProto.closeContainer:type_name -> hadoop.hdds.datanode.CloseContainerResponseProto
-	25, // 26: hadoop.hdds.datanode.ContainerCommandResponseProto.putBlock:type_name -> hadoop.hdds.datanode.PutBlockResponseProto
-	27, // 27: hadoop.hdds.datanode.ContainerCommandResponseProto.getBlock:type_name -> hadoop.hdds.datanode.GetBlockResponseProto
-	31, // 28: hadoop.hdds.datanode.ContainerCommandResponseProto.deleteBlock:type_name -> hadoop.hdds.datanode.DeleteBlockResponseProto
-	33, // 29: hadoop.hdds.datanode.ContainerCommandResponseProto.listBlock:type_name -> hadoop.hdds.datanode.ListBlockResponseProto
-	37, // 30: hadoop.hdds.datanode.ContainerCommandResponseProto.writeChunk:type_name -> hadoop.hdds.datanode.WriteChunkResponseProto
-	39, // 31: hadoop.hdds.datanode.ContainerCommandResponseProto.readChunk:type_name -> hadoop.hdds.datanode.ReadChunkResponseProto
-	41, // 32: hadoop.hdds.datanode.ContainerCommandResponseProto.deleteChunk:type_name -> hadoop.hdds.datanode.DeleteChunkResponseProto
-	43, // 33: hadoop.hdds.datanode.ContainerCommandResponseProto.listChunk:type_name -> hadoop.hdds.datanode.ListChunkResponseProto
-	45, // 34: hadoop.hdds.datanode.ContainerCommandResponseProto.putSmallFile:type_name -> hadoop.hdds.datanode.PutSmallFileResponseProto
-	47, // 35: hadoop.hdds.datanode.ContainerCommandResponseProto.getSmallFile:type_name -> hadoop.hdds.datanode.GetSmallFileResponseProto
-	30, // 36: hadoop.hdds.datanode.ContainerCommandResponseProto.getCommittedBlockLength:type_name -> hadoop.hdds.datanode.GetCommittedBlockLengthResponseProto
-	6,  // 37: hadoop.hdds.datanode.ContainerDataProto.metadata:type_name -> hadoop.hdds.datanode.KeyValue
-	4,  // 38: hadoop.hdds.datanode.ContainerDataProto.state:type_name -> hadoop.hdds.datanode.ContainerDataProto.State
-	2,  // 39: hadoop.hdds.datanode.ContainerDataProto.containerType:type_name -> hadoop.hdds.datanode.ContainerType
-	50, // 40: hadoop.hdds.datanode.Container2BCSIDMapProto.container2BCSID:type_name -> hadoop.hdds.datanode.Container2BCSIDMapProto.Container2BCSIDEntry
-	6,  // 41: hadoop.hdds.datanode.CreateContainerRequestProto.metadata:type_name -> hadoop.hdds.datanode.KeyValue
-	2,  // 42: hadoop.hdds.datanode.CreateContainerRequestProto.containerType:type_name -> hadoop.hdds.datanode.ContainerType
-	9,  // 43: hadoop.hdds.datanode.ReadContainerResponseProto.containerData:type_name -> hadoop.hdds.datanode.ContainerDataProto
-	6,  // 44: hadoop.hdds.datanode.UpdateContainerRequestProto.metadata:type_name -> hadoop.hdds.datanode.KeyValue
-	9,  // 45: hadoop.hdds.datanode.ListContainerResponseProto.containerData:type_name -> hadoop.hdds.datanode.ContainerDataProto
-	5,  // 46: hadoop.hdds.datanode.BlockData.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
-	6,  // 47: hadoop.hdds.datanode.BlockData.metadata:type_name -> hadoop.hdds.datanode.KeyValue
-	34, // 48: hadoop.hdds.datanode.BlockData.chunks:type_name -> hadoop.hdds.datanode.ChunkInfo
-	23, // 49: hadoop.hdds.datanode.PutBlockRequestProto.blockData:type_name -> hadoop.hdds.datanode.BlockData
-	30, // 50: hadoop.hdds.datanode.PutBlockResponseProto.committedBlockLength:type_name -> hadoop.hdds.datanode.GetCommittedBlockLengthResponseProto
-	5,  // 51: hadoop.hdds.datanode.GetBlockRequestProto.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
-	23, // 52: hadoop.hdds.datanode.GetBlockResponseProto.blockData:type_name -> hadoop.hdds.datanode.BlockData
-	5,  // 53: hadoop.hdds.datanode.DeleteBlockRequestProto.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
-	5,  // 54: hadoop.hdds.datanode.GetCommittedBlockLengthRequestProto.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
-	5,  // 55: hadoop.hdds.datanode.GetCommittedBlockLengthResponseProto.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
-	23, // 56: hadoop.hdds.datanode.ListBlockResponseProto.blockData:type_name -> hadoop.hdds.datanode.BlockData
-	6,  // 57: hadoop.hdds.datanode.ChunkInfo.metadata:type_name -> hadoop.hdds.datanode.KeyValue
-	35, // 58: hadoop.hdds.datanode.ChunkInfo.checksumData:type_name -> hadoop.hdds.datanode.ChecksumData
-	3,  // 59: hadoop.hdds.datanode.ChecksumData.type:type_name -> hadoop.hdds.datanode.ChecksumType
-	5,  // 60: hadoop.hdds.datanode.WriteChunkRequestProto.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
-	34, // 61: hadoop.hdds.datanode.WriteChunkRequestProto.chunkData:type_name -> hadoop.hdds.datanode.ChunkInfo
-	5,  // 62: hadoop.hdds.datanode.ReadChunkRequestProto.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
-	34, // 63: hadoop.hdds.datanode.ReadChunkRequestProto.chunkData:type_name -> hadoop.hdds.datanode.ChunkInfo
-	5,  // 64: hadoop.hdds.datanode.ReadChunkResponseProto.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
-	34, // 65: hadoop.hdds.datanode.ReadChunkResponseProto.chunkData:type_name -> hadoop.hdds.datanode.ChunkInfo
-	5,  // 66: hadoop.hdds.datanode.DeleteChunkRequestProto.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
-	34, // 67: hadoop.hdds.datanode.DeleteChunkRequestProto.chunkData:type_name -> hadoop.hdds.datanode.ChunkInfo
-	5,  // 68: hadoop.hdds.datanode.ListChunkRequestProto.blockID:type_name -> hadoop.hdds.datanode.DatanodeBlockID
-	34, // 69: hadoop.hdds.datanode.ListChunkResponseProto.chunkData:type_name -> hadoop.hdds.datanode.ChunkInfo
-	24, // 70: hadoop.hdds.datanode.PutSmallFileRequestProto.block:type_name -> hadoop.hdds.datanode.PutBlockRequestProto
-	34, // 71: hadoop.hdds.datanode.PutSmallFileRequestProto.chunkInfo:type_name -> hadoop.hdds.datanode.ChunkInfo
-	30, // 72: hadoop.hdds.datanode.PutSmallFileResponseProto.committedBlockLength:type_name -> hadoop.hdds.datanode.GetCommittedBlockLengthResponseProto
-	26, // 73: hadoop.hdds.datanode.GetSmallFileRequestProto.block:type_name -> hadoop.hdds.datanode.GetBlockRequestProto
-	39, // 74: hadoop.hdds.datanode.GetSmallFileResponseProto.data:type_name -> hadoop.hdds.datanode.ReadChunkResponseProto
-	7,  // 75: hadoop.hdds.datanode.XceiverClientProtocolService.send:input_type -> hadoop.hdds.datanode.ContainerCommandRequestProto
-	48, // 76: hadoop.hdds.datanode.IntraDatanodeProtocolService.download:input_type -> hadoop.hdds.datanode.CopyContainerRequestProto
-	8,  // 77: hadoop.hdds.datanode.XceiverClientProtocolService.send:output_type -> hadoop.hdds.datanode.ContainerCommandResponseProto
-	49, // 78: hadoop.hdds.datanode.IntraDatanodeProtocolService.download:output_type -> hadoop.hdds.datanode.CopyContainerResponseProto
-	77, // [77:79] is the sub-list for method output_type
-	75, // [75:77] is the sub-list for method input_type
-	75, // [75:75] is the sub-list for extension type_name
-	75, // [75:75] is the sub-list for extension extendee
-	0,  // [0:75] is the sub-list for field type_name
-}
-
-func init() { file_DatanodeClientProtocol_proto_init() }
-func file_DatanodeClientProtocol_proto_init() {
-	if File_DatanodeClientProtocol_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_DatanodeClientProtocol_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DatanodeBlockID); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*KeyValue); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ContainerCommandRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ContainerCommandResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ContainerDataProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Container2BCSIDMapProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CreateContainerRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CreateContainerResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ReadContainerRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ReadContainerResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UpdateContainerRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UpdateContainerResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteContainerRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteContainerResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListContainerRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListContainerResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CloseContainerRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CloseContainerResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*BlockData); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PutBlockRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PutBlockResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetBlockRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetBlockResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteBlockRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetCommittedBlockLengthRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetCommittedBlockLengthResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteBlockResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListBlockRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListBlockResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ChunkInfo); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ChecksumData); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*WriteChunkRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*WriteChunkResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ReadChunkRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ReadChunkResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteChunkRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DeleteChunkResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListChunkRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ListChunkResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PutSmallFileRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PutSmallFileResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetSmallFileRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetSmallFileResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CopyContainerRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_DatanodeClientProtocol_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CopyContainerResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_DatanodeClientProtocol_proto_rawDesc,
-			NumEnums:      5,
-			NumMessages:   46,
-			NumExtensions: 0,
-			NumServices:   2,
-		},
-		GoTypes:           file_DatanodeClientProtocol_proto_goTypes,
-		DependencyIndexes: file_DatanodeClientProtocol_proto_depIdxs,
-		EnumInfos:         file_DatanodeClientProtocol_proto_enumTypes,
-		MessageInfos:      file_DatanodeClientProtocol_proto_msgTypes,
-	}.Build()
-	File_DatanodeClientProtocol_proto = out.File
-	file_DatanodeClientProtocol_proto_rawDesc = nil
-	file_DatanodeClientProtocol_proto_goTypes = nil
-	file_DatanodeClientProtocol_proto_depIdxs = nil
-}
-
-// Reference imports to suppress errors if they are not otherwise used.
-var _ context.Context
-var _ grpc.ClientConnInterface
-
-// This is a compile-time assertion to ensure that this generated file
-// is compatible with the grpc package it is being compiled against.
-const _ = grpc.SupportPackageIsVersion6
-
-// XceiverClientProtocolServiceClient is the client API for XceiverClientProtocolService service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
-type XceiverClientProtocolServiceClient interface {
-	// A client-to-datanode RPC to send container commands
-	Send(ctx context.Context, opts ...grpc.CallOption) (XceiverClientProtocolService_SendClient, error)
-}
-
-type xceiverClientProtocolServiceClient struct {
-	cc grpc.ClientConnInterface
-}
-
-func NewXceiverClientProtocolServiceClient(cc grpc.ClientConnInterface) XceiverClientProtocolServiceClient {
-	return &xceiverClientProtocolServiceClient{cc}
-}
-
-func (c *xceiverClientProtocolServiceClient) Send(ctx context.Context, opts ...grpc.CallOption) (XceiverClientProtocolService_SendClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_XceiverClientProtocolService_serviceDesc.Streams[0], "/hadoop.hdds.datanode.XceiverClientProtocolService/send", opts...)
-	if err != nil {
-		return nil, err
-	}
-	x := &xceiverClientProtocolServiceSendClient{stream}
-	return x, nil
-}
-
-type XceiverClientProtocolService_SendClient interface {
-	Send(*ContainerCommandRequestProto) error
-	Recv() (*ContainerCommandResponseProto, error)
-	grpc.ClientStream
-}
-
-type xceiverClientProtocolServiceSendClient struct {
-	grpc.ClientStream
-}
-
-func (x *xceiverClientProtocolServiceSendClient) Send(m *ContainerCommandRequestProto) error {
-	return x.ClientStream.SendMsg(m)
-}
-
-func (x *xceiverClientProtocolServiceSendClient) Recv() (*ContainerCommandResponseProto, error) {
-	m := new(ContainerCommandResponseProto)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-// XceiverClientProtocolServiceServer is the server API for XceiverClientProtocolService service.
-type XceiverClientProtocolServiceServer interface {
-	// A client-to-datanode RPC to send container commands
-	Send(XceiverClientProtocolService_SendServer) error
-}
-
-// UnimplementedXceiverClientProtocolServiceServer can be embedded to have forward compatible implementations.
-type UnimplementedXceiverClientProtocolServiceServer struct {
-}
-
-func (*UnimplementedXceiverClientProtocolServiceServer) Send(XceiverClientProtocolService_SendServer) error {
-	return status.Errorf(codes.Unimplemented, "method Send not implemented")
-}
-
-func RegisterXceiverClientProtocolServiceServer(s *grpc.Server, srv XceiverClientProtocolServiceServer) {
-	s.RegisterService(&_XceiverClientProtocolService_serviceDesc, srv)
-}
-
-func _XceiverClientProtocolService_Send_Handler(srv interface{}, stream grpc.ServerStream) error {
-	return srv.(XceiverClientProtocolServiceServer).Send(&xceiverClientProtocolServiceSendServer{stream})
-}
-
-type XceiverClientProtocolService_SendServer interface {
-	Send(*ContainerCommandResponseProto) error
-	Recv() (*ContainerCommandRequestProto, error)
-	grpc.ServerStream
-}
-
-type xceiverClientProtocolServiceSendServer struct {
-	grpc.ServerStream
-}
-
-func (x *xceiverClientProtocolServiceSendServer) Send(m *ContainerCommandResponseProto) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-func (x *xceiverClientProtocolServiceSendServer) Recv() (*ContainerCommandRequestProto, error) {
-	m := new(ContainerCommandRequestProto)
-	if err := x.ServerStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-var _XceiverClientProtocolService_serviceDesc = grpc.ServiceDesc{
-	ServiceName: "hadoop.hdds.datanode.XceiverClientProtocolService",
-	HandlerType: (*XceiverClientProtocolServiceServer)(nil),
-	Methods:     []grpc.MethodDesc{},
-	Streams: []grpc.StreamDesc{
-		{
-			StreamName:    "send",
-			Handler:       _XceiverClientProtocolService_Send_Handler,
-			ServerStreams: true,
-			ClientStreams: true,
-		},
-	},
-	Metadata: "DatanodeClientProtocol.proto",
-}
-
-// IntraDatanodeProtocolServiceClient is the client API for IntraDatanodeProtocolService service.
-//
-// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
-type IntraDatanodeProtocolServiceClient interface {
-	// An intradatanode service to copy the raw container data between nodes
-	Download(ctx context.Context, in *CopyContainerRequestProto, opts ...grpc.CallOption) (IntraDatanodeProtocolService_DownloadClient, error)
-}
-
-type intraDatanodeProtocolServiceClient struct {
-	cc grpc.ClientConnInterface
-}
-
-func NewIntraDatanodeProtocolServiceClient(cc grpc.ClientConnInterface) IntraDatanodeProtocolServiceClient {
-	return &intraDatanodeProtocolServiceClient{cc}
-}
-
-func (c *intraDatanodeProtocolServiceClient) Download(ctx context.Context, in *CopyContainerRequestProto, opts ...grpc.CallOption) (IntraDatanodeProtocolService_DownloadClient, error) {
-	stream, err := c.cc.NewStream(ctx, &_IntraDatanodeProtocolService_serviceDesc.Streams[0], "/hadoop.hdds.datanode.IntraDatanodeProtocolService/download", opts...)
-	if err != nil {
-		return nil, err
-	}
-	x := &intraDatanodeProtocolServiceDownloadClient{stream}
-	if err := x.ClientStream.SendMsg(in); err != nil {
-		return nil, err
-	}
-	if err := x.ClientStream.CloseSend(); err != nil {
-		return nil, err
-	}
-	return x, nil
-}
-
-type IntraDatanodeProtocolService_DownloadClient interface {
-	Recv() (*CopyContainerResponseProto, error)
-	grpc.ClientStream
-}
-
-type intraDatanodeProtocolServiceDownloadClient struct {
-	grpc.ClientStream
-}
-
-func (x *intraDatanodeProtocolServiceDownloadClient) Recv() (*CopyContainerResponseProto, error) {
-	m := new(CopyContainerResponseProto)
-	if err := x.ClientStream.RecvMsg(m); err != nil {
-		return nil, err
-	}
-	return m, nil
-}
-
-// IntraDatanodeProtocolServiceServer is the server API for IntraDatanodeProtocolService service.
-type IntraDatanodeProtocolServiceServer interface {
-	// An intradatanode service to copy the raw container data between nodes
-	Download(*CopyContainerRequestProto, IntraDatanodeProtocolService_DownloadServer) error
-}
-
-// UnimplementedIntraDatanodeProtocolServiceServer can be embedded to have forward compatible implementations.
-type UnimplementedIntraDatanodeProtocolServiceServer struct {
-}
-
-func (*UnimplementedIntraDatanodeProtocolServiceServer) Download(*CopyContainerRequestProto, IntraDatanodeProtocolService_DownloadServer) error {
-	return status.Errorf(codes.Unimplemented, "method Download not implemented")
-}
-
-func RegisterIntraDatanodeProtocolServiceServer(s *grpc.Server, srv IntraDatanodeProtocolServiceServer) {
-	s.RegisterService(&_IntraDatanodeProtocolService_serviceDesc, srv)
-}
-
-func _IntraDatanodeProtocolService_Download_Handler(srv interface{}, stream grpc.ServerStream) error {
-	m := new(CopyContainerRequestProto)
-	if err := stream.RecvMsg(m); err != nil {
-		return err
-	}
-	return srv.(IntraDatanodeProtocolServiceServer).Download(m, &intraDatanodeProtocolServiceDownloadServer{stream})
-}
-
-type IntraDatanodeProtocolService_DownloadServer interface {
-	Send(*CopyContainerResponseProto) error
-	grpc.ServerStream
-}
-
-type intraDatanodeProtocolServiceDownloadServer struct {
-	grpc.ServerStream
-}
-
-func (x *intraDatanodeProtocolServiceDownloadServer) Send(m *CopyContainerResponseProto) error {
-	return x.ServerStream.SendMsg(m)
-}
-
-var _IntraDatanodeProtocolService_serviceDesc = grpc.ServiceDesc{
-	ServiceName: "hadoop.hdds.datanode.IntraDatanodeProtocolService",
-	HandlerType: (*IntraDatanodeProtocolServiceServer)(nil),
-	Methods:     []grpc.MethodDesc{},
-	Streams: []grpc.StreamDesc{
-		{
-			StreamName:    "download",
-			Handler:       _IntraDatanodeProtocolService_Download_Handler,
-			ServerStreams: true,
-		},
-	},
-	Metadata: "DatanodeClientProtocol.proto",
-}
diff --git a/api/proto/hdds/hdds.pb.go b/api/proto/hdds/hdds.pb.go
deleted file mode 100644
index 32d9eb4..0000000
--- a/api/proto/hdds/hdds.pb.go
+++ /dev/null
@@ -1,2452 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package hdds
-
-import (
-	proto "github.com/golang/protobuf/proto"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-const (
-	// Verify that this generated code is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
-	// Verify that runtime/protoimpl is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// This is a compile-time assertion that a sufficiently up-to-date version
-// of the legacy proto package is being used.
-const _ = proto.ProtoPackageIsVersion4
-
-type PipelineState int32
-
-const (
-	PipelineState_PIPELINE_ALLOCATED PipelineState = 1
-	PipelineState_PIPELINE_OPEN      PipelineState = 2
-	PipelineState_PIPELINE_DORMANT   PipelineState = 3
-	PipelineState_PIPELINE_CLOSED    PipelineState = 4
-)
-
-// Enum value maps for PipelineState.
-var (
-	PipelineState_name = map[int32]string{
-		1: "PIPELINE_ALLOCATED",
-		2: "PIPELINE_OPEN",
-		3: "PIPELINE_DORMANT",
-		4: "PIPELINE_CLOSED",
-	}
-	PipelineState_value = map[string]int32{
-		"PIPELINE_ALLOCATED": 1,
-		"PIPELINE_OPEN":      2,
-		"PIPELINE_DORMANT":   3,
-		"PIPELINE_CLOSED":    4,
-	}
-)
-
-func (x PipelineState) Enum() *PipelineState {
-	p := new(PipelineState)
-	*p = x
-	return p
-}
-
-func (x PipelineState) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (PipelineState) Descriptor() protoreflect.EnumDescriptor {
-	return file_hdds_proto_enumTypes[0].Descriptor()
-}
-
-func (PipelineState) Type() protoreflect.EnumType {
-	return &file_hdds_proto_enumTypes[0]
-}
-
-func (x PipelineState) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *PipelineState) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = PipelineState(num)
-	return nil
-}
-
-// Deprecated: Use PipelineState.Descriptor instead.
-func (PipelineState) EnumDescriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{0}
-}
-
-//*
-// Type of the node.
-type NodeType int32
-
-const (
-	NodeType_OM       NodeType = 1 // Ozone Manager
-	NodeType_SCM      NodeType = 2 // Storage Container Manager
-	NodeType_DATANODE NodeType = 3 // DataNode
-	NodeType_RECON    NodeType = 4 // Recon
-)
-
-// Enum value maps for NodeType.
-var (
-	NodeType_name = map[int32]string{
-		1: "OM",
-		2: "SCM",
-		3: "DATANODE",
-		4: "RECON",
-	}
-	NodeType_value = map[string]int32{
-		"OM":       1,
-		"SCM":      2,
-		"DATANODE": 3,
-		"RECON":    4,
-	}
-)
-
-func (x NodeType) Enum() *NodeType {
-	p := new(NodeType)
-	*p = x
-	return p
-}
-
-func (x NodeType) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (NodeType) Descriptor() protoreflect.EnumDescriptor {
-	return file_hdds_proto_enumTypes[1].Descriptor()
-}
-
-func (NodeType) Type() protoreflect.EnumType {
-	return &file_hdds_proto_enumTypes[1]
-}
-
-func (x NodeType) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *NodeType) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = NodeType(num)
-	return nil
-}
-
-// Deprecated: Use NodeType.Descriptor instead.
-func (NodeType) EnumDescriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{1}
-}
-
-//*
-// Enum that represents the Node State. This is used in calls to getNodeList
-// and getNodeCount.
-type NodeState int32
-
-const (
-	NodeState_HEALTHY         NodeState = 1
-	NodeState_STALE           NodeState = 2
-	NodeState_DEAD            NodeState = 3
-	NodeState_DECOMMISSIONING NodeState = 4
-	NodeState_DECOMMISSIONED  NodeState = 5
-)
-
-// Enum value maps for NodeState.
-var (
-	NodeState_name = map[int32]string{
-		1: "HEALTHY",
-		2: "STALE",
-		3: "DEAD",
-		4: "DECOMMISSIONING",
-		5: "DECOMMISSIONED",
-	}
-	NodeState_value = map[string]int32{
-		"HEALTHY":         1,
-		"STALE":           2,
-		"DEAD":            3,
-		"DECOMMISSIONING": 4,
-		"DECOMMISSIONED":  5,
-	}
-)
-
-func (x NodeState) Enum() *NodeState {
-	p := new(NodeState)
-	*p = x
-	return p
-}
-
-func (x NodeState) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (NodeState) Descriptor() protoreflect.EnumDescriptor {
-	return file_hdds_proto_enumTypes[2].Descriptor()
-}
-
-func (NodeState) Type() protoreflect.EnumType {
-	return &file_hdds_proto_enumTypes[2]
-}
-
-func (x NodeState) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *NodeState) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = NodeState(num)
-	return nil
-}
-
-// Deprecated: Use NodeState.Descriptor instead.
-func (NodeState) EnumDescriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{2}
-}
-
-type QueryScope int32
-
-const (
-	QueryScope_CLUSTER QueryScope = 1
-	QueryScope_POOL    QueryScope = 2
-)
-
-// Enum value maps for QueryScope.
-var (
-	QueryScope_name = map[int32]string{
-		1: "CLUSTER",
-		2: "POOL",
-	}
-	QueryScope_value = map[string]int32{
-		"CLUSTER": 1,
-		"POOL":    2,
-	}
-)
-
-func (x QueryScope) Enum() *QueryScope {
-	p := new(QueryScope)
-	*p = x
-	return p
-}
-
-func (x QueryScope) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (QueryScope) Descriptor() protoreflect.EnumDescriptor {
-	return file_hdds_proto_enumTypes[3].Descriptor()
-}
-
-func (QueryScope) Type() protoreflect.EnumType {
-	return &file_hdds_proto_enumTypes[3]
-}
-
-func (x QueryScope) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *QueryScope) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = QueryScope(num)
-	return nil
-}
-
-// Deprecated: Use QueryScope.Descriptor instead.
-func (QueryScope) EnumDescriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{3}
-}
-
-type LifeCycleState int32
-
-const (
-	LifeCycleState_OPEN         LifeCycleState = 1
-	LifeCycleState_CLOSING      LifeCycleState = 2
-	LifeCycleState_QUASI_CLOSED LifeCycleState = 3
-	LifeCycleState_CLOSED       LifeCycleState = 4
-	LifeCycleState_DELETING     LifeCycleState = 5
-	LifeCycleState_DELETED      LifeCycleState = 6 // object is deleted.
-)
-
-// Enum value maps for LifeCycleState.
-var (
-	LifeCycleState_name = map[int32]string{
-		1: "OPEN",
-		2: "CLOSING",
-		3: "QUASI_CLOSED",
-		4: "CLOSED",
-		5: "DELETING",
-		6: "DELETED",
-	}
-	LifeCycleState_value = map[string]int32{
-		"OPEN":         1,
-		"CLOSING":      2,
-		"QUASI_CLOSED": 3,
-		"CLOSED":       4,
-		"DELETING":     5,
-		"DELETED":      6,
-	}
-)
-
-func (x LifeCycleState) Enum() *LifeCycleState {
-	p := new(LifeCycleState)
-	*p = x
-	return p
-}
-
-func (x LifeCycleState) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (LifeCycleState) Descriptor() protoreflect.EnumDescriptor {
-	return file_hdds_proto_enumTypes[4].Descriptor()
-}
-
-func (LifeCycleState) Type() protoreflect.EnumType {
-	return &file_hdds_proto_enumTypes[4]
-}
-
-func (x LifeCycleState) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *LifeCycleState) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = LifeCycleState(num)
-	return nil
-}
-
-// Deprecated: Use LifeCycleState.Descriptor instead.
-func (LifeCycleState) EnumDescriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{4}
-}
-
-type LifeCycleEvent int32
-
-const (
-	LifeCycleEvent_FINALIZE    LifeCycleEvent = 1
-	LifeCycleEvent_QUASI_CLOSE LifeCycleEvent = 2
-	LifeCycleEvent_CLOSE       LifeCycleEvent = 3 // !!Event after this has not been used yet.
-	LifeCycleEvent_FORCE_CLOSE LifeCycleEvent = 4
-	LifeCycleEvent_DELETE      LifeCycleEvent = 5
-	LifeCycleEvent_CLEANUP     LifeCycleEvent = 6
-)
-
-// Enum value maps for LifeCycleEvent.
-var (
-	LifeCycleEvent_name = map[int32]string{
-		1: "FINALIZE",
-		2: "QUASI_CLOSE",
-		3: "CLOSE",
-		4: "FORCE_CLOSE",
-		5: "DELETE",
-		6: "CLEANUP",
-	}
-	LifeCycleEvent_value = map[string]int32{
-		"FINALIZE":    1,
-		"QUASI_CLOSE": 2,
-		"CLOSE":       3,
-		"FORCE_CLOSE": 4,
-		"DELETE":      5,
-		"CLEANUP":     6,
-	}
-)
-
-func (x LifeCycleEvent) Enum() *LifeCycleEvent {
-	p := new(LifeCycleEvent)
-	*p = x
-	return p
-}
-
-func (x LifeCycleEvent) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (LifeCycleEvent) Descriptor() protoreflect.EnumDescriptor {
-	return file_hdds_proto_enumTypes[5].Descriptor()
-}
-
-func (LifeCycleEvent) Type() protoreflect.EnumType {
-	return &file_hdds_proto_enumTypes[5]
-}
-
-func (x LifeCycleEvent) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *LifeCycleEvent) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = LifeCycleEvent(num)
-	return nil
-}
-
-// Deprecated: Use LifeCycleEvent.Descriptor instead.
-func (LifeCycleEvent) EnumDescriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{5}
-}
-
-type ReplicationType int32
-
-const (
-	ReplicationType_RATIS       ReplicationType = 1
-	ReplicationType_STAND_ALONE ReplicationType = 2
-	ReplicationType_CHAINED     ReplicationType = 3
-)
-
-// Enum value maps for ReplicationType.
-var (
-	ReplicationType_name = map[int32]string{
-		1: "RATIS",
-		2: "STAND_ALONE",
-		3: "CHAINED",
-	}
-	ReplicationType_value = map[string]int32{
-		"RATIS":       1,
-		"STAND_ALONE": 2,
-		"CHAINED":     3,
-	}
-)
-
-func (x ReplicationType) Enum() *ReplicationType {
-	p := new(ReplicationType)
-	*p = x
-	return p
-}
-
-func (x ReplicationType) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ReplicationType) Descriptor() protoreflect.EnumDescriptor {
-	return file_hdds_proto_enumTypes[6].Descriptor()
-}
-
-func (ReplicationType) Type() protoreflect.EnumType {
-	return &file_hdds_proto_enumTypes[6]
-}
-
-func (x ReplicationType) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *ReplicationType) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = ReplicationType(num)
-	return nil
-}
-
-// Deprecated: Use ReplicationType.Descriptor instead.
-func (ReplicationType) EnumDescriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{6}
-}
-
-type ReplicationFactor int32
-
-const (
-	ReplicationFactor_ONE   ReplicationFactor = 1
-	ReplicationFactor_THREE ReplicationFactor = 3
-)
-
-// Enum value maps for ReplicationFactor.
-var (
-	ReplicationFactor_name = map[int32]string{
-		1: "ONE",
-		3: "THREE",
-	}
-	ReplicationFactor_value = map[string]int32{
-		"ONE":   1,
-		"THREE": 3,
-	}
-)
-
-func (x ReplicationFactor) Enum() *ReplicationFactor {
-	p := new(ReplicationFactor)
-	*p = x
-	return p
-}
-
-func (x ReplicationFactor) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ReplicationFactor) Descriptor() protoreflect.EnumDescriptor {
-	return file_hdds_proto_enumTypes[7].Descriptor()
-}
-
-func (ReplicationFactor) Type() protoreflect.EnumType {
-	return &file_hdds_proto_enumTypes[7]
-}
-
-func (x ReplicationFactor) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *ReplicationFactor) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = ReplicationFactor(num)
-	return nil
-}
-
-// Deprecated: Use ReplicationFactor.Descriptor instead.
-func (ReplicationFactor) EnumDescriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{7}
-}
-
-type ScmOps int32
-
-const (
-	ScmOps_allocateBlock             ScmOps = 1
-	ScmOps_keyBlocksInfoList         ScmOps = 2
-	ScmOps_getScmInfo                ScmOps = 3
-	ScmOps_deleteBlock               ScmOps = 4
-	ScmOps_createReplicationPipeline ScmOps = 5
-	ScmOps_allocateContainer         ScmOps = 6
-	ScmOps_getContainer              ScmOps = 7
-	ScmOps_getContainerWithPipeline  ScmOps = 8
-	ScmOps_listContainer             ScmOps = 9
-	ScmOps_deleteContainer           ScmOps = 10
-	ScmOps_queryNode                 ScmOps = 11
-)
-
-// Enum value maps for ScmOps.
-var (
-	ScmOps_name = map[int32]string{
-		1:  "allocateBlock",
-		2:  "keyBlocksInfoList",
-		3:  "getScmInfo",
-		4:  "deleteBlock",
-		5:  "createReplicationPipeline",
-		6:  "allocateContainer",
-		7:  "getContainer",
-		8:  "getContainerWithPipeline",
-		9:  "listContainer",
-		10: "deleteContainer",
-		11: "queryNode",
-	}
-	ScmOps_value = map[string]int32{
-		"allocateBlock":             1,
-		"keyBlocksInfoList":         2,
-		"getScmInfo":                3,
-		"deleteBlock":               4,
-		"createReplicationPipeline": 5,
-		"allocateContainer":         6,
-		"getContainer":              7,
-		"getContainerWithPipeline":  8,
-		"listContainer":             9,
-		"deleteContainer":           10,
-		"queryNode":                 11,
-	}
-)
-
-func (x ScmOps) Enum() *ScmOps {
-	p := new(ScmOps)
-	*p = x
-	return p
-}
-
-func (x ScmOps) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ScmOps) Descriptor() protoreflect.EnumDescriptor {
-	return file_hdds_proto_enumTypes[8].Descriptor()
-}
-
-func (ScmOps) Type() protoreflect.EnumType {
-	return &file_hdds_proto_enumTypes[8]
-}
-
-func (x ScmOps) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *ScmOps) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = ScmOps(num)
-	return nil
-}
-
-// Deprecated: Use ScmOps.Descriptor instead.
-func (ScmOps) EnumDescriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{8}
-}
-
-//*
-// File access permissions mode.
-type BlockTokenSecretProto_AccessModeProto int32
-
-const (
-	BlockTokenSecretProto_READ   BlockTokenSecretProto_AccessModeProto = 1
-	BlockTokenSecretProto_WRITE  BlockTokenSecretProto_AccessModeProto = 2
-	BlockTokenSecretProto_COPY   BlockTokenSecretProto_AccessModeProto = 3
-	BlockTokenSecretProto_DELETE BlockTokenSecretProto_AccessModeProto = 4
-)
-
-// Enum value maps for BlockTokenSecretProto_AccessModeProto.
-var (
-	BlockTokenSecretProto_AccessModeProto_name = map[int32]string{
-		1: "READ",
-		2: "WRITE",
-		3: "COPY",
-		4: "DELETE",
-	}
-	BlockTokenSecretProto_AccessModeProto_value = map[string]int32{
-		"READ":   1,
-		"WRITE":  2,
-		"COPY":   3,
-		"DELETE": 4,
-	}
-)
-
-func (x BlockTokenSecretProto_AccessModeProto) Enum() *BlockTokenSecretProto_AccessModeProto {
-	p := new(BlockTokenSecretProto_AccessModeProto)
-	*p = x
-	return p
-}
-
-func (x BlockTokenSecretProto_AccessModeProto) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (BlockTokenSecretProto_AccessModeProto) Descriptor() protoreflect.EnumDescriptor {
-	return file_hdds_proto_enumTypes[9].Descriptor()
-}
-
-func (BlockTokenSecretProto_AccessModeProto) Type() protoreflect.EnumType {
-	return &file_hdds_proto_enumTypes[9]
-}
-
-func (x BlockTokenSecretProto_AccessModeProto) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *BlockTokenSecretProto_AccessModeProto) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = BlockTokenSecretProto_AccessModeProto(num)
-	return nil
-}
-
-// Deprecated: Use BlockTokenSecretProto_AccessModeProto.Descriptor instead.
-func (BlockTokenSecretProto_AccessModeProto) EnumDescriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{15, 0}
-}
-
-type UUID struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	MostSigBits  *int64 `protobuf:"varint,1,req,name=mostSigBits" json:"mostSigBits,omitempty"`
-	LeastSigBits *int64 `protobuf:"varint,2,req,name=leastSigBits" json:"leastSigBits,omitempty"`
-}
-
-func (x *UUID) Reset() {
-	*x = UUID{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_hdds_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *UUID) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*UUID) ProtoMessage() {}
-
-func (x *UUID) ProtoReflect() protoreflect.Message {
-	mi := &file_hdds_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use UUID.ProtoReflect.Descriptor instead.
-func (*UUID) Descriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *UUID) GetMostSigBits() int64 {
-	if x != nil && x.MostSigBits != nil {
-		return *x.MostSigBits
-	}
-	return 0
-}
-
-func (x *UUID) GetLeastSigBits() int64 {
-	if x != nil && x.LeastSigBits != nil {
-		return *x.LeastSigBits
-	}
-	return 0
-}
-
-type DatanodeDetailsProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// deprecated, please use uuid128 instead
-	Uuid         *string `protobuf:"bytes,1,opt,name=uuid" json:"uuid,omitempty"`           // UUID assigned to the Datanode.
-	IpAddress    *string `protobuf:"bytes,2,req,name=ipAddress" json:"ipAddress,omitempty"` // IP address
-	HostName     *string `protobuf:"bytes,3,req,name=hostName" json:"hostName,omitempty"`   // hostname
-	Ports        []*Port `protobuf:"bytes,4,rep,name=ports" json:"ports,omitempty"`
-	CertSerialId *string `protobuf:"bytes,5,opt,name=certSerialId" json:"certSerialId,omitempty"` // Certificate serial id.
-	// network name, can be Ip address or host name, depends
-	NetworkName     *string `protobuf:"bytes,6,opt,name=networkName" json:"networkName,omitempty"`
-	NetworkLocation *string `protobuf:"bytes,7,opt,name=networkLocation" json:"networkLocation,omitempty"` // Network topology location
-	Version         *string `protobuf:"bytes,8,opt,name=version" json:"version,omitempty"`                 // Datanode version
-	SetupTime       *int64  `protobuf:"varint,9,opt,name=setupTime" json:"setupTime,omitempty"`
-	Revision        *string `protobuf:"bytes,10,opt,name=revision" json:"revision,omitempty"`
-	BuildDate       *string `protobuf:"bytes,11,opt,name=buildDate" json:"buildDate,omitempty"`
-	// TODO(runzhiwang): when uuid is gone, specify 1 as the index of uuid128 and mark as required
-	Uuid128 *UUID `protobuf:"bytes,100,opt,name=uuid128" json:"uuid128,omitempty"` // UUID with 128 bits assigned to the Datanode.
-}
-
-func (x *DatanodeDetailsProto) Reset() {
-	*x = DatanodeDetailsProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_hdds_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *DatanodeDetailsProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*DatanodeDetailsProto) ProtoMessage() {}
-
-func (x *DatanodeDetailsProto) ProtoReflect() protoreflect.Message {
-	mi := &file_hdds_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use DatanodeDetailsProto.ProtoReflect.Descriptor instead.
-func (*DatanodeDetailsProto) Descriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *DatanodeDetailsProto) GetUuid() string {
-	if x != nil && x.Uuid != nil {
-		return *x.Uuid
-	}
-	return ""
-}
-
-func (x *DatanodeDetailsProto) GetIpAddress() string {
-	if x != nil && x.IpAddress != nil {
-		return *x.IpAddress
-	}
-	return ""
-}
-
-func (x *DatanodeDetailsProto) GetHostName() string {
-	if x != nil && x.HostName != nil {
-		return *x.HostName
-	}
-	return ""
-}
-
-func (x *DatanodeDetailsProto) GetPorts() []*Port {
-	if x != nil {
-		return x.Ports
-	}
-	return nil
-}
-
-func (x *DatanodeDetailsProto) GetCertSerialId() string {
-	if x != nil && x.CertSerialId != nil {
-		return *x.CertSerialId
-	}
-	return ""
-}
-
-func (x *DatanodeDetailsProto) GetNetworkName() string {
-	if x != nil && x.NetworkName != nil {
-		return *x.NetworkName
-	}
-	return ""
-}
-
-func (x *DatanodeDetailsProto) GetNetworkLocation() string {
-	if x != nil && x.NetworkLocation != nil {
-		return *x.NetworkLocation
-	}
-	return ""
-}
-
-func (x *DatanodeDetailsProto) GetVersion() string {
-	if x != nil && x.Version != nil {
-		return *x.Version
-	}
-	return ""
-}
-
-func (x *DatanodeDetailsProto) GetSetupTime() int64 {
-	if x != nil && x.SetupTime != nil {
-		return *x.SetupTime
-	}
-	return 0
-}
-
-func (x *DatanodeDetailsProto) GetRevision() string {
-	if x != nil && x.Revision != nil {
-		return *x.Revision
-	}
-	return ""
-}
-
-func (x *DatanodeDetailsProto) GetBuildDate() string {
-	if x != nil && x.BuildDate != nil {
-		return *x.BuildDate
-	}
-	return ""
-}
-
-func (x *DatanodeDetailsProto) GetUuid128() *UUID {
-	if x != nil {
-		return x.Uuid128
-	}
-	return nil
-}
-
-//*
-//Proto message encapsulating information required to uniquely identify a
-//OzoneManager.
-type OzoneManagerDetailsProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Uuid      *string `protobuf:"bytes,1,req,name=uuid" json:"uuid,omitempty"`           // UUID assigned to the OzoneManager.
-	IpAddress *string `protobuf:"bytes,2,req,name=ipAddress" json:"ipAddress,omitempty"` // IP address of OM.
-	HostName  *string `protobuf:"bytes,3,req,name=hostName" json:"hostName,omitempty"`   // Hostname of OM.
-	Ports     []*Port `protobuf:"bytes,4,rep,name=ports" json:"ports,omitempty"`
-}
-
-func (x *OzoneManagerDetailsProto) Reset() {
-	*x = OzoneManagerDetailsProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_hdds_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *OzoneManagerDetailsProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*OzoneManagerDetailsProto) ProtoMessage() {}
-
-func (x *OzoneManagerDetailsProto) ProtoReflect() protoreflect.Message {
-	mi := &file_hdds_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use OzoneManagerDetailsProto.ProtoReflect.Descriptor instead.
-func (*OzoneManagerDetailsProto) Descriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *OzoneManagerDetailsProto) GetUuid() string {
-	if x != nil && x.Uuid != nil {
-		return *x.Uuid
-	}
-	return ""
-}
-
-func (x *OzoneManagerDetailsProto) GetIpAddress() string {
-	if x != nil && x.IpAddress != nil {
-		return *x.IpAddress
-	}
-	return ""
-}
-
-func (x *OzoneManagerDetailsProto) GetHostName() string {
-	if x != nil && x.HostName != nil {
-		return *x.HostName
-	}
-	return ""
-}
-
-func (x *OzoneManagerDetailsProto) GetPorts() []*Port {
-	if x != nil {
-		return x.Ports
-	}
-	return nil
-}
-
-type Port struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Name  *string `protobuf:"bytes,1,req,name=name" json:"name,omitempty"`
-	Value *uint32 `protobuf:"varint,2,req,name=value" json:"value,omitempty"`
-}
-
-func (x *Port) Reset() {
-	*x = Port{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_hdds_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Port) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Port) ProtoMessage() {}
-
-func (x *Port) ProtoReflect() protoreflect.Message {
-	mi := &file_hdds_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Port.ProtoReflect.Descriptor instead.
-func (*Port) Descriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *Port) GetName() string {
-	if x != nil && x.Name != nil {
-		return *x.Name
-	}
-	return ""
-}
-
-func (x *Port) GetValue() uint32 {
-	if x != nil && x.Value != nil {
-		return *x.Value
-	}
-	return 0
-}
-
-type PipelineID struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// deprecated, please use uuid128 instead
-	Id *string `protobuf:"bytes,1,opt,name=id" json:"id,omitempty"`
-	// TODO(runzhiwang): when id is gone, specify 1 as the index of uuid128 and mark as required
-	Uuid128 *UUID `protobuf:"bytes,100,opt,name=uuid128" json:"uuid128,omitempty"`
-}
-
-func (x *PipelineID) Reset() {
-	*x = PipelineID{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_hdds_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *PipelineID) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*PipelineID) ProtoMessage() {}
-
-func (x *PipelineID) ProtoReflect() protoreflect.Message {
-	mi := &file_hdds_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use PipelineID.ProtoReflect.Descriptor instead.
-func (*PipelineID) Descriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *PipelineID) GetId() string {
-	if x != nil && x.Id != nil {
-		return *x.Id
-	}
-	return ""
-}
-
-func (x *PipelineID) GetUuid128() *UUID {
-	if x != nil {
-		return x.Uuid128
-	}
-	return nil
-}
-
-type Pipeline struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Members []*DatanodeDetailsProto `protobuf:"bytes,1,rep,name=members" json:"members,omitempty"`
-	// TODO: remove the state and leaderID from this class
-	State             *PipelineState     `protobuf:"varint,2,opt,name=state,enum=hadoop.hdds.PipelineState,def=1" json:"state,omitempty"`
-	Type              *ReplicationType   `protobuf:"varint,3,opt,name=type,enum=hadoop.hdds.ReplicationType,def=2" json:"type,omitempty"`
-	Factor            *ReplicationFactor `protobuf:"varint,4,opt,name=factor,enum=hadoop.hdds.ReplicationFactor,def=1" json:"factor,omitempty"`
-	Id                *PipelineID        `protobuf:"bytes,5,req,name=id" json:"id,omitempty"`
-	LeaderID          *string            `protobuf:"bytes,6,opt,name=leaderID" json:"leaderID,omitempty"`
-	MemberOrders      []uint32           `protobuf:"varint,7,rep,name=memberOrders" json:"memberOrders,omitempty"`
-	CreationTimeStamp *uint64            `protobuf:"varint,8,opt,name=creationTimeStamp" json:"creationTimeStamp,omitempty"`
-	// TODO(runzhiwang): when leaderID is gone, specify 6 as the index of leaderID128
-	LeaderID128 *UUID `protobuf:"bytes,100,opt,name=leaderID128" json:"leaderID128,omitempty"`
-}
-
-// Default values for Pipeline fields.
-const (
-	Default_Pipeline_State  = PipelineState_PIPELINE_ALLOCATED
-	Default_Pipeline_Type   = ReplicationType_STAND_ALONE
-	Default_Pipeline_Factor = ReplicationFactor_ONE
-)
-
-func (x *Pipeline) Reset() {
-	*x = Pipeline{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_hdds_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Pipeline) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Pipeline) ProtoMessage() {}
-
-func (x *Pipeline) ProtoReflect() protoreflect.Message {
-	mi := &file_hdds_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Pipeline.ProtoReflect.Descriptor instead.
-func (*Pipeline) Descriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *Pipeline) GetMembers() []*DatanodeDetailsProto {
-	if x != nil {
-		return x.Members
-	}
-	return nil
-}
-
-func (x *Pipeline) GetState() PipelineState {
-	if x != nil && x.State != nil {
-		return *x.State
-	}
-	return Default_Pipeline_State
-}
-
-func (x *Pipeline) GetType() ReplicationType {
-	if x != nil && x.Type != nil {
-		return *x.Type
-	}
-	return Default_Pipeline_Type
-}
-
-func (x *Pipeline) GetFactor() ReplicationFactor {
-	if x != nil && x.Factor != nil {
-		return *x.Factor
-	}
-	return Default_Pipeline_Factor
-}
-
-func (x *Pipeline) GetId() *PipelineID {
-	if x != nil {
-		return x.Id
-	}
-	return nil
-}
-
-func (x *Pipeline) GetLeaderID() string {
-	if x != nil && x.LeaderID != nil {
-		return *x.LeaderID
-	}
-	return ""
-}
-
-func (x *Pipeline) GetMemberOrders() []uint32 {
-	if x != nil {
-		return x.MemberOrders
-	}
-	return nil
-}
-
-func (x *Pipeline) GetCreationTimeStamp() uint64 {
-	if x != nil && x.CreationTimeStamp != nil {
-		return *x.CreationTimeStamp
-	}
-	return 0
-}
-
-func (x *Pipeline) GetLeaderID128() *UUID {
-	if x != nil {
-		return x.LeaderID128
-	}
-	return nil
-}
-
-type KeyValue struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Key   *string `protobuf:"bytes,1,req,name=key" json:"key,omitempty"`
-	Value *string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
-}
-
-func (x *KeyValue) Reset() {
-	*x = KeyValue{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_hdds_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *KeyValue) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*KeyValue) ProtoMessage() {}
-
-func (x *KeyValue) ProtoReflect() protoreflect.Message {
-	mi := &file_hdds_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use KeyValue.ProtoReflect.Descriptor instead.
-func (*KeyValue) Descriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *KeyValue) GetKey() string {
-	if x != nil && x.Key != nil {
-		return *x.Key
-	}
-	return ""
-}
-
-func (x *KeyValue) GetValue() string {
-	if x != nil && x.Value != nil {
-		return *x.Value
-	}
-	return ""
-}
-
-type Node struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	NodeID     *DatanodeDetailsProto `protobuf:"bytes,1,req,name=nodeID" json:"nodeID,omitempty"`
-	NodeStates []NodeState           `protobuf:"varint,2,rep,name=nodeStates,enum=hadoop.hdds.NodeState" json:"nodeStates,omitempty"`
-}
-
-func (x *Node) Reset() {
-	*x = Node{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_hdds_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *Node) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*Node) ProtoMessage() {}
-
-func (x *Node) ProtoReflect() protoreflect.Message {
-	mi := &file_hdds_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use Node.ProtoReflect.Descriptor instead.
-func (*Node) Descriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *Node) GetNodeID() *DatanodeDetailsProto {
-	if x != nil {
-		return x.NodeID
-	}
-	return nil
-}
-
-func (x *Node) GetNodeStates() []NodeState {
-	if x != nil {
-		return x.NodeStates
-	}
-	return nil
-}
-
-type NodePool struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Nodes []*Node `protobuf:"bytes,1,rep,name=nodes" json:"nodes,omitempty"`
-}
-
-func (x *NodePool) Reset() {
-	*x = NodePool{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_hdds_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *NodePool) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*NodePool) ProtoMessage() {}
-
-func (x *NodePool) ProtoReflect() protoreflect.Message {
-	mi := &file_hdds_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use NodePool.ProtoReflect.Descriptor instead.
-func (*NodePool) Descriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *NodePool) GetNodes() []*Node {
-	if x != nil {
-		return x.Nodes
-	}
-	return nil
-}
-
-type ContainerInfoProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ContainerID         *int64             `protobuf:"varint,1,req,name=containerID" json:"containerID,omitempty"`
-	State               *LifeCycleState    `protobuf:"varint,2,req,name=state,enum=hadoop.hdds.LifeCycleState" json:"state,omitempty"`
-	PipelineID          *PipelineID        `protobuf:"bytes,3,opt,name=pipelineID" json:"pipelineID,omitempty"`
-	UsedBytes           *uint64            `protobuf:"varint,4,req,name=usedBytes" json:"usedBytes,omitempty"`
-	NumberOfKeys        *uint64            `protobuf:"varint,5,req,name=numberOfKeys" json:"numberOfKeys,omitempty"`
-	StateEnterTime      *int64             `protobuf:"varint,6,opt,name=stateEnterTime" json:"stateEnterTime,omitempty"`
-	Owner               *string            `protobuf:"bytes,7,req,name=owner" json:"owner,omitempty"`
-	DeleteTransactionId *int64             `protobuf:"varint,8,opt,name=deleteTransactionId" json:"deleteTransactionId,omitempty"`
-	SequenceId          *int64             `protobuf:"varint,9,opt,name=sequenceId" json:"sequenceId,omitempty"`
-	ReplicationFactor   *ReplicationFactor `protobuf:"varint,10,req,name=replicationFactor,enum=hadoop.hdds.ReplicationFactor" json:"replicationFactor,omitempty"`
-	ReplicationType     *ReplicationType   `protobuf:"varint,11,req,name=replicationType,enum=hadoop.hdds.ReplicationType" json:"replicationType,omitempty"`
-}
-
-func (x *ContainerInfoProto) Reset() {
-	*x = ContainerInfoProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_hdds_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ContainerInfoProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ContainerInfoProto) ProtoMessage() {}
-
-func (x *ContainerInfoProto) ProtoReflect() protoreflect.Message {
-	mi := &file_hdds_proto_msgTypes[9]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ContainerInfoProto.ProtoReflect.Descriptor instead.
-func (*ContainerInfoProto) Descriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *ContainerInfoProto) GetContainerID() int64 {
-	if x != nil && x.ContainerID != nil {
-		return *x.ContainerID
-	}
-	return 0
-}
-
-func (x *ContainerInfoProto) GetState() LifeCycleState {
-	if x != nil && x.State != nil {
-		return *x.State
-	}
-	return LifeCycleState_OPEN
-}
-
-func (x *ContainerInfoProto) GetPipelineID() *PipelineID {
-	if x != nil {
-		return x.PipelineID
-	}
-	return nil
-}
-
-func (x *ContainerInfoProto) GetUsedBytes() uint64 {
-	if x != nil && x.UsedBytes != nil {
-		return *x.UsedBytes
-	}
-	return 0
-}
-
-func (x *ContainerInfoProto) GetNumberOfKeys() uint64 {
-	if x != nil && x.NumberOfKeys != nil {
-		return *x.NumberOfKeys
-	}
-	return 0
-}
-
-func (x *ContainerInfoProto) GetStateEnterTime() int64 {
-	if x != nil && x.StateEnterTime != nil {
-		return *x.StateEnterTime
-	}
-	return 0
-}
-
-func (x *ContainerInfoProto) GetOwner() string {
-	if x != nil && x.Owner != nil {
-		return *x.Owner
-	}
-	return ""
-}
-
-func (x *ContainerInfoProto) GetDeleteTransactionId() int64 {
-	if x != nil && x.DeleteTransactionId != nil {
-		return *x.DeleteTransactionId
-	}
-	return 0
-}
-
-func (x *ContainerInfoProto) GetSequenceId() int64 {
-	if x != nil && x.SequenceId != nil {
-		return *x.SequenceId
-	}
-	return 0
-}
-
-func (x *ContainerInfoProto) GetReplicationFactor() ReplicationFactor {
-	if x != nil && x.ReplicationFactor != nil {
-		return *x.ReplicationFactor
-	}
-	return ReplicationFactor_ONE
-}
-
-func (x *ContainerInfoProto) GetReplicationType() ReplicationType {
-	if x != nil && x.ReplicationType != nil {
-		return *x.ReplicationType
-	}
-	return ReplicationType_RATIS
-}
-
-type ContainerWithPipeline struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ContainerInfo *ContainerInfoProto `protobuf:"bytes,1,req,name=containerInfo" json:"containerInfo,omitempty"`
-	Pipeline      *Pipeline           `protobuf:"bytes,2,req,name=pipeline" json:"pipeline,omitempty"`
-}
-
-func (x *ContainerWithPipeline) Reset() {
-	*x = ContainerWithPipeline{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_hdds_proto_msgTypes[10]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ContainerWithPipeline) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ContainerWithPipeline) ProtoMessage() {}
-
-func (x *ContainerWithPipeline) ProtoReflect() protoreflect.Message {
-	mi := &file_hdds_proto_msgTypes[10]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ContainerWithPipeline.ProtoReflect.Descriptor instead.
-func (*ContainerWithPipeline) Descriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *ContainerWithPipeline) GetContainerInfo() *ContainerInfoProto {
-	if x != nil {
-		return x.ContainerInfo
-	}
-	return nil
-}
-
-func (x *ContainerWithPipeline) GetPipeline() *Pipeline {
-	if x != nil {
-		return x.Pipeline
-	}
-	return nil
-}
-
-type GetScmInfoRequestProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	TraceID *string `protobuf:"bytes,1,opt,name=traceID" json:"traceID,omitempty"`
-}
-
-func (x *GetScmInfoRequestProto) Reset() {
-	*x = GetScmInfoRequestProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_hdds_proto_msgTypes[11]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GetScmInfoRequestProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetScmInfoRequestProto) ProtoMessage() {}
-
-func (x *GetScmInfoRequestProto) ProtoReflect() protoreflect.Message {
-	mi := &file_hdds_proto_msgTypes[11]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetScmInfoRequestProto.ProtoReflect.Descriptor instead.
-func (*GetScmInfoRequestProto) Descriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *GetScmInfoRequestProto) GetTraceID() string {
-	if x != nil && x.TraceID != nil {
-		return *x.TraceID
-	}
-	return ""
-}
-
-type GetScmInfoResponseProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ClusterId *string `protobuf:"bytes,1,req,name=clusterId" json:"clusterId,omitempty"`
-	ScmId     *string `protobuf:"bytes,2,req,name=scmId" json:"scmId,omitempty"`
-}
-
-func (x *GetScmInfoResponseProto) Reset() {
-	*x = GetScmInfoResponseProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_hdds_proto_msgTypes[12]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *GetScmInfoResponseProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*GetScmInfoResponseProto) ProtoMessage() {}
-
-func (x *GetScmInfoResponseProto) ProtoReflect() protoreflect.Message {
-	mi := &file_hdds_proto_msgTypes[12]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use GetScmInfoResponseProto.ProtoReflect.Descriptor instead.
-func (*GetScmInfoResponseProto) Descriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{12}
-}
-
-func (x *GetScmInfoResponseProto) GetClusterId() string {
-	if x != nil && x.ClusterId != nil {
-		return *x.ClusterId
-	}
-	return ""
-}
-
-func (x *GetScmInfoResponseProto) GetScmId() string {
-	if x != nil && x.ScmId != nil {
-		return *x.ScmId
-	}
-	return ""
-}
-
-type ExcludeListProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Datanodes    []string      `protobuf:"bytes,1,rep,name=datanodes" json:"datanodes,omitempty"`
-	ContainerIds []int64       `protobuf:"varint,2,rep,name=containerIds" json:"containerIds,omitempty"`
-	PipelineIds  []*PipelineID `protobuf:"bytes,3,rep,name=pipelineIds" json:"pipelineIds,omitempty"`
-}
-
-func (x *ExcludeListProto) Reset() {
-	*x = ExcludeListProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_hdds_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ExcludeListProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ExcludeListProto) ProtoMessage() {}
-
-func (x *ExcludeListProto) ProtoReflect() protoreflect.Message {
-	mi := &file_hdds_proto_msgTypes[13]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ExcludeListProto.ProtoReflect.Descriptor instead.
-func (*ExcludeListProto) Descriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *ExcludeListProto) GetDatanodes() []string {
-	if x != nil {
-		return x.Datanodes
-	}
-	return nil
-}
-
-func (x *ExcludeListProto) GetContainerIds() []int64 {
-	if x != nil {
-		return x.ContainerIds
-	}
-	return nil
-}
-
-func (x *ExcludeListProto) GetPipelineIds() []*PipelineID {
-	if x != nil {
-		return x.PipelineIds
-	}
-	return nil
-}
-
-//*
-// Block ID that uniquely identify a block by SCM.
-type ContainerBlockID struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ContainerID *int64 `protobuf:"varint,1,req,name=containerID" json:"containerID,omitempty"`
-	LocalID     *int64 `protobuf:"varint,2,req,name=localID" json:"localID,omitempty"`
-}
-
-func (x *ContainerBlockID) Reset() {
-	*x = ContainerBlockID{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_hdds_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *ContainerBlockID) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*ContainerBlockID) ProtoMessage() {}
-
-func (x *ContainerBlockID) ProtoReflect() protoreflect.Message {
-	mi := &file_hdds_proto_msgTypes[14]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use ContainerBlockID.ProtoReflect.Descriptor instead.
-func (*ContainerBlockID) Descriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *ContainerBlockID) GetContainerID() int64 {
-	if x != nil && x.ContainerID != nil {
-		return *x.ContainerID
-	}
-	return 0
-}
-
-func (x *ContainerBlockID) GetLocalID() int64 {
-	if x != nil && x.LocalID != nil {
-		return *x.LocalID
-	}
-	return 0
-}
-
-//*
-// Information for the Hdds block token.
-// When adding further fields, make sure they are optional as they would
-// otherwise not be backwards compatible.
-type BlockTokenSecretProto struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	OwnerId        *string                                 `protobuf:"bytes,1,req,name=ownerId" json:"ownerId,omitempty"`
-	BlockId        *string                                 `protobuf:"bytes,2,req,name=blockId" json:"blockId,omitempty"`
-	ExpiryDate     *uint64                                 `protobuf:"varint,3,req,name=expiryDate" json:"expiryDate,omitempty"`
-	OmCertSerialId *string                                 `protobuf:"bytes,4,req,name=omCertSerialId" json:"omCertSerialId,omitempty"`
-	Modes          []BlockTokenSecretProto_AccessModeProto `protobuf:"varint,5,rep,name=modes,enum=hadoop.hdds.BlockTokenSecretProto_AccessModeProto" json:"modes,omitempty"`
-	MaxLength      *uint64                                 `protobuf:"varint,6,req,name=maxLength" json:"maxLength,omitempty"`
-}
-
-func (x *BlockTokenSecretProto) Reset() {
-	*x = BlockTokenSecretProto{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_hdds_proto_msgTypes[15]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *BlockTokenSecretProto) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*BlockTokenSecretProto) ProtoMessage() {}
-
-func (x *BlockTokenSecretProto) ProtoReflect() protoreflect.Message {
-	mi := &file_hdds_proto_msgTypes[15]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use BlockTokenSecretProto.ProtoReflect.Descriptor instead.
-func (*BlockTokenSecretProto) Descriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *BlockTokenSecretProto) GetOwnerId() string {
-	if x != nil && x.OwnerId != nil {
-		return *x.OwnerId
-	}
-	return ""
-}
-
-func (x *BlockTokenSecretProto) GetBlockId() string {
-	if x != nil && x.BlockId != nil {
-		return *x.BlockId
-	}
-	return ""
-}
-
-func (x *BlockTokenSecretProto) GetExpiryDate() uint64 {
-	if x != nil && x.ExpiryDate != nil {
-		return *x.ExpiryDate
-	}
-	return 0
-}
-
-func (x *BlockTokenSecretProto) GetOmCertSerialId() string {
-	if x != nil && x.OmCertSerialId != nil {
-		return *x.OmCertSerialId
-	}
-	return ""
-}
-
-func (x *BlockTokenSecretProto) GetModes() []BlockTokenSecretProto_AccessModeProto {
-	if x != nil {
-		return x.Modes
-	}
-	return nil
-}
-
-func (x *BlockTokenSecretProto) GetMaxLength() uint64 {
-	if x != nil && x.MaxLength != nil {
-		return *x.MaxLength
-	}
-	return 0
-}
-
-type BlockID struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ContainerBlockID      *ContainerBlockID `protobuf:"bytes,1,req,name=containerBlockID" json:"containerBlockID,omitempty"`
-	BlockCommitSequenceId *uint64           `protobuf:"varint,2,opt,name=blockCommitSequenceId,def=0" json:"blockCommitSequenceId,omitempty"`
-}
-
-// Default values for BlockID fields.
-const (
-	Default_BlockID_BlockCommitSequenceId = uint64(0)
-)
-
-func (x *BlockID) Reset() {
-	*x = BlockID{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_hdds_proto_msgTypes[16]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *BlockID) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*BlockID) ProtoMessage() {}
-
-func (x *BlockID) ProtoReflect() protoreflect.Message {
-	mi := &file_hdds_proto_msgTypes[16]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use BlockID.ProtoReflect.Descriptor instead.
-func (*BlockID) Descriptor() ([]byte, []int) {
-	return file_hdds_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *BlockID) GetContainerBlockID() *ContainerBlockID {
-	if x != nil {
-		return x.ContainerBlockID
-	}
-	return nil
-}
-
-func (x *BlockID) GetBlockCommitSequenceId() uint64 {
-	if x != nil && x.BlockCommitSequenceId != nil {
-		return *x.BlockCommitSequenceId
-	}
-	return Default_BlockID_BlockCommitSequenceId
-}
-
-var File_hdds_proto protoreflect.FileDescriptor
-
-var file_hdds_proto_rawDesc = []byte{
-	0x0a, 0x0a, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x68, 0x61,
-	0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x22, 0x4c, 0x0a, 0x04, 0x55, 0x55, 0x49,
-	0x44, 0x12, 0x20, 0x0a, 0x0b, 0x6d, 0x6f, 0x73, 0x74, 0x53, 0x69, 0x67, 0x42, 0x69, 0x74, 0x73,
-	0x18, 0x01, 0x20, 0x02, 0x28, 0x03, 0x52, 0x0b, 0x6d, 0x6f, 0x73, 0x74, 0x53, 0x69, 0x67, 0x42,
-	0x69, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x53, 0x69, 0x67, 0x42,
-	0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x02, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x65, 0x61, 0x73, 0x74,
-	0x53, 0x69, 0x67, 0x42, 0x69, 0x74, 0x73, 0x22, 0x9c, 0x03, 0x0a, 0x14, 0x44, 0x61, 0x74, 0x61,
-	0x6e, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f,
-	0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
-	0x75, 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
-	0x73, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x69, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65,
-	0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03,
-	0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x27,
-	0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e,
-	0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x50, 0x6f, 0x72, 0x74,
-	0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x65, 0x72, 0x74, 0x53,
-	0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63,
-	0x65, 0x72, 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x6e,
-	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a,
-	0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c,
-	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69,
-	0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
-	0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x74, 0x75, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09,
-	0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x74, 0x75, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12,
-	0x1a, 0x0a, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x08, 0x72, 0x65, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x62,
-	0x75, 0x69, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
-	0x62, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x75, 0x75, 0x69,
-	0x64, 0x31, 0x32, 0x38, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x68, 0x61, 0x64,
-	0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x52, 0x07, 0x75,
-	0x75, 0x69, 0x64, 0x31, 0x32, 0x38, 0x22, 0x91, 0x01, 0x0a, 0x18, 0x4f, 0x7a, 0x6f, 0x6e, 0x65,
-	0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x50, 0x72,
-	0x6f, 0x74, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x02, 0x28,
-	0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x70, 0x41, 0x64, 0x64,
-	0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x69, 0x70, 0x41, 0x64,
-	0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d,
-	0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x4e, 0x61, 0x6d,
-	0x65, 0x12, 0x27, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
-	0x32, 0x11, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x50,
-	0x6f, 0x72, 0x74, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x22, 0x30, 0x0a, 0x04, 0x50, 0x6f,
-	0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09,
-	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
-	0x02, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x49, 0x0a, 0x0a,
-	0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x07, 0x75, 0x75,
-	0x69, 0x64, 0x31, 0x32, 0x38, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x68, 0x61,
-	0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x52, 0x07,
-	0x75, 0x75, 0x69, 0x64, 0x31, 0x32, 0x38, 0x22, 0xd5, 0x03, 0x0a, 0x08, 0x50, 0x69, 0x70, 0x65,
-	0x6c, 0x69, 0x6e, 0x65, 0x12, 0x3b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18,
-	0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68,
-	0x64, 0x64, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x44, 0x65, 0x74, 0x61,
-	0x69, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72,
-	0x73, 0x12, 0x44, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
-	0x32, 0x1a, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x50,
-	0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x3a, 0x12, 0x50, 0x49,
-	0x50, 0x45, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x45, 0x44,
-	0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68,
-	0x64, 0x64, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54,
-	0x79, 0x70, 0x65, 0x3a, 0x0b, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x5f, 0x41, 0x4c, 0x4f, 0x4e, 0x45,
-	0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x3b, 0x0a, 0x06, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e,
-	0x68, 0x64, 0x64, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x3a, 0x03, 0x4f, 0x4e, 0x45, 0x52, 0x06, 0x66, 0x61, 0x63,
-	0x74, 0x6f, 0x72, 0x12, 0x27, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05, 0x20, 0x02, 0x28, 0x0b, 0x32,
-	0x17, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x50, 0x69,
-	0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08,
-	0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
-	0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x65, 0x6d, 0x62,
-	0x65, 0x72, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0c,
-	0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x2c, 0x0a, 0x11,
-	0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d,
-	0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x33, 0x0a, 0x0b, 0x6c, 0x65,
-	0x61, 0x64, 0x65, 0x72, 0x49, 0x44, 0x31, 0x32, 0x38, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32,
-	0x11, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x55, 0x55,
-	0x49, 0x44, 0x52, 0x0b, 0x6c, 0x65, 0x61, 0x64, 0x65, 0x72, 0x49, 0x44, 0x31, 0x32, 0x38, 0x22,
-	0x32, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b,
-	0x65, 0x79, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a,
-	0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x22, 0x79, 0x0a, 0x04, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x6e,
-	0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x68, 0x61,
-	0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x6e, 0x6f,
-	0x64, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x52, 0x06,
-	0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x12, 0x36, 0x0a, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x53, 0x74,
-	0x61, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x68, 0x61, 0x64,
-	0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61,
-	0x74, 0x65, 0x52, 0x0a, 0x6e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0x33,
-	0x0a, 0x08, 0x4e, 0x6f, 0x64, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x27, 0x0a, 0x05, 0x6e, 0x6f,
-	0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x68, 0x61, 0x64, 0x6f,
-	0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x4e, 0x6f, 0x64, 0x65, 0x52, 0x05, 0x6e, 0x6f,
-	0x64, 0x65, 0x73, 0x22, 0x8a, 0x04, 0x0a, 0x12, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65,
-	0x72, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f,
-	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x03, 0x52,
-	0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x12, 0x31, 0x0a, 0x05,
-	0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x68, 0x61,
-	0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x4c, 0x69, 0x66, 0x65, 0x43, 0x79,
-	0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12,
-	0x37, 0x0a, 0x0a, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64,
-	0x73, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x52, 0x0a, 0x70, 0x69,
-	0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x64,
-	0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x02, 0x28, 0x04, 0x52, 0x09, 0x75, 0x73, 0x65,
-	0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72,
-	0x4f, 0x66, 0x4b, 0x65, 0x79, 0x73, 0x18, 0x05, 0x20, 0x02, 0x28, 0x04, 0x52, 0x0c, 0x6e, 0x75,
-	0x6d, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x26, 0x0a, 0x0e, 0x73, 0x74,
-	0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01,
-	0x28, 0x03, 0x52, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x54, 0x69,
-	0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x18, 0x07, 0x20, 0x02, 0x28,
-	0x09, 0x52, 0x05, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x13, 0x64, 0x65, 0x6c, 0x65,
-	0x74, 0x65, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x18,
-	0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x13, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x72, 0x61,
-	0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x65,
-	0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
-	0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x4c, 0x0a, 0x11, 0x72, 0x65,
-	0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18,
-	0x0a, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68,
-	0x64, 0x64, 0x73, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46,
-	0x61, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x46, 0x0a, 0x0f, 0x72, 0x65, 0x70, 0x6c,
-	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x02, 0x28,
-	0x0e, 0x32, 0x1c, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
-	0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52,
-	0x0f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65,
-	0x22, 0x91, 0x01, 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x57, 0x69,
-	0x74, 0x68, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x45, 0x0a, 0x0d, 0x63, 0x6f,
-	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20, 0x02, 0x28,
-	0x0b, 0x32, 0x1f, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e,
-	0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x72, 0x6f,
-	0x74, 0x6f, 0x52, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x6e, 0x66,
-	0x6f, 0x12, 0x31, 0x0a, 0x08, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20,
-	0x02, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64,
-	0x73, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x52, 0x08, 0x70, 0x69, 0x70, 0x65,
-	0x6c, 0x69, 0x6e, 0x65, 0x22, 0x32, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x63, 0x6d, 0x49, 0x6e,
-	0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18,
-	0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x07, 0x74, 0x72, 0x61, 0x63, 0x65, 0x49, 0x44, 0x22, 0x4d, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x53,
-	0x63, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x72,
-	0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64,
-	0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
-	0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09,
-	0x52, 0x05, 0x73, 0x63, 0x6d, 0x49, 0x64, 0x22, 0x8f, 0x01, 0x0a, 0x10, 0x45, 0x78, 0x63, 0x6c,
-	0x75, 0x64, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x0a, 0x09,
-	0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
-	0x09, 0x64, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f,
-	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03,
-	0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x39,
-	0x0a, 0x0b, 0x70, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x18, 0x03, 0x20,
-	0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64,
-	0x73, 0x2e, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x52, 0x0b, 0x70, 0x69,
-	0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x73, 0x22, 0x4e, 0x0a, 0x10, 0x43, 0x6f, 0x6e,
-	0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x12, 0x20, 0x0a,
-	0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02,
-	0x28, 0x03, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x49, 0x44, 0x12,
-	0x18, 0x0a, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x44, 0x18, 0x02, 0x20, 0x02, 0x28, 0x03,
-	0x52, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x49, 0x44, 0x22, 0xb9, 0x02, 0x0a, 0x15, 0x42, 0x6c,
-	0x6f, 0x63, 0x6b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x50, 0x72,
-	0x6f, 0x74, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01,
-	0x20, 0x02, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a,
-	0x07, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x07,
-	0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72,
-	0x79, 0x44, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x02, 0x28, 0x04, 0x52, 0x0a, 0x65, 0x78, 0x70,
-	0x69, 0x72, 0x79, 0x44, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x6f, 0x6d, 0x43, 0x65, 0x72,
-	0x74, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x18, 0x04, 0x20, 0x02, 0x28, 0x09, 0x52,
-	0x0e, 0x6f, 0x6d, 0x43, 0x65, 0x72, 0x74, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x49, 0x64, 0x12,
-	0x48, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x32,
-	0x2e, 0x68, 0x61, 0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x42, 0x6c, 0x6f,
-	0x63, 0x6b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x50, 0x72, 0x6f,
-	0x74, 0x6f, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x50, 0x72, 0x6f,
-	0x74, 0x6f, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x6d, 0x61, 0x78,
-	0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x06, 0x20, 0x02, 0x28, 0x04, 0x52, 0x09, 0x6d, 0x61,
-	0x78, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x3c, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x65, 0x73,
-	0x73, 0x4d, 0x6f, 0x64, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x45,
-	0x41, 0x44, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x57, 0x52, 0x49, 0x54, 0x45, 0x10, 0x02, 0x12,
-	0x08, 0x0a, 0x04, 0x43, 0x4f, 0x50, 0x59, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x45, 0x4c,
-	0x45, 0x54, 0x45, 0x10, 0x04, 0x22, 0x8d, 0x01, 0x0a, 0x07, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49,
-	0x44, 0x12, 0x49, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x42, 0x6c,
-	0x6f, 0x63, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x68, 0x61,
-	0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69,
-	0x6e, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x52, 0x10, 0x63, 0x6f, 0x6e, 0x74,
-	0x61, 0x69, 0x6e, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x49, 0x44, 0x12, 0x37, 0x0a, 0x15,
-	0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65,
-	0x6e, 0x63, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x3a, 0x01, 0x30, 0x52, 0x15,
-	0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x53, 0x65, 0x71, 0x75, 0x65,
-	0x6e, 0x63, 0x65, 0x49, 0x64, 0x2a, 0x65, 0x0a, 0x0d, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e,
-	0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x49, 0x50, 0x45, 0x4c, 0x49,
-	0x4e, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x41, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x11,
-	0x0a, 0x0d, 0x50, 0x49, 0x50, 0x45, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x10,
-	0x02, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x49, 0x50, 0x45, 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x44, 0x4f,
-	0x52, 0x4d, 0x41, 0x4e, 0x54, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x49, 0x50, 0x45, 0x4c,
-	0x49, 0x4e, 0x45, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x04, 0x2a, 0x34, 0x0a, 0x08,
-	0x4e, 0x6f, 0x64, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4d, 0x10, 0x01,
-	0x12, 0x07, 0x0a, 0x03, 0x53, 0x43, 0x4d, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x41, 0x54,
-	0x41, 0x4e, 0x4f, 0x44, 0x45, 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x45, 0x43, 0x4f, 0x4e,
-	0x10, 0x04, 0x2a, 0x56, 0x0a, 0x09, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12,
-	0x0b, 0x0a, 0x07, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, 0x59, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05,
-	0x53, 0x54, 0x41, 0x4c, 0x45, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x45, 0x41, 0x44, 0x10,
-	0x03, 0x12, 0x13, 0x0a, 0x0f, 0x44, 0x45, 0x43, 0x4f, 0x4d, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f,
-	0x4e, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x45, 0x43, 0x4f, 0x4d, 0x4d,
-	0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x45, 0x44, 0x10, 0x05, 0x2a, 0x23, 0x0a, 0x0a, 0x51, 0x75,
-	0x65, 0x72, 0x79, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4c, 0x55, 0x53,
-	0x54, 0x45, 0x52, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x4f, 0x4f, 0x4c, 0x10, 0x02, 0x2a,
-	0x60, 0x0a, 0x0e, 0x4c, 0x69, 0x66, 0x65, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74,
-	0x65, 0x12, 0x08, 0x0a, 0x04, 0x4f, 0x50, 0x45, 0x4e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43,
-	0x4c, 0x4f, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x51, 0x55, 0x41, 0x53,
-	0x49, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c,
-	0x4f, 0x53, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x49,
-	0x4e, 0x47, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10,
-	0x06, 0x2a, 0x64, 0x0a, 0x0e, 0x4c, 0x69, 0x66, 0x65, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x45, 0x76,
-	0x65, 0x6e, 0x74, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x49, 0x4e, 0x41, 0x4c, 0x49, 0x5a, 0x45, 0x10,
-	0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x51, 0x55, 0x41, 0x53, 0x49, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45,
-	0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x10, 0x03, 0x12, 0x0f, 0x0a,
-	0x0b, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x10, 0x04, 0x12, 0x0a,
-	0x0a, 0x06, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x4c,
-	0x45, 0x41, 0x4e, 0x55, 0x50, 0x10, 0x06, 0x2a, 0x3a, 0x0a, 0x0f, 0x52, 0x65, 0x70, 0x6c, 0x69,
-	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x41,
-	0x54, 0x49, 0x53, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x5f, 0x41,
-	0x4c, 0x4f, 0x4e, 0x45, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x48, 0x41, 0x49, 0x4e, 0x45,
-	0x44, 0x10, 0x03, 0x2a, 0x27, 0x0a, 0x11, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4e, 0x45, 0x10,
-	0x01, 0x12, 0x09, 0x0a, 0x05, 0x54, 0x48, 0x52, 0x45, 0x45, 0x10, 0x03, 0x2a, 0xf0, 0x01, 0x0a,
-	0x06, 0x53, 0x63, 0x6d, 0x4f, 0x70, 0x73, 0x12, 0x11, 0x0a, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, 0x63,
-	0x61, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x6b, 0x65,
-	0x79, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x69, 0x73, 0x74, 0x10,
-	0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x67, 0x65, 0x74, 0x53, 0x63, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x10,
-	0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x6c, 0x6f, 0x63, 0x6b,
-	0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6c,
-	0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x69, 0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x10,
-	0x05, 0x12, 0x15, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e,
-	0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x10, 0x06, 0x12, 0x10, 0x0a, 0x0c, 0x67, 0x65, 0x74, 0x43,
-	0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x10, 0x07, 0x12, 0x1c, 0x0a, 0x18, 0x67, 0x65,
-	0x74, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x57, 0x69, 0x74, 0x68, 0x50, 0x69,
-	0x70, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x6c, 0x69, 0x73, 0x74,
-	0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x64,
-	0x65, 0x6c, 0x65, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x10, 0x0a,
-	0x12, 0x0d, 0x0a, 0x09, 0x71, 0x75, 0x65, 0x72, 0x79, 0x4e, 0x6f, 0x64, 0x65, 0x10, 0x0b, 0x42,
-	0x64, 0x0a, 0x25, 0x6f, 0x72, 0x67, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x68, 0x61,
-	0x64, 0x6f, 0x6f, 0x70, 0x2e, 0x68, 0x64, 0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63,
-	0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x42, 0x0a, 0x48, 0x64, 0x64, 0x73, 0x50, 0x72,
-	0x6f, 0x74, 0x6f, 0x73, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
-	0x2f, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2f, 0x6f, 0x7a, 0x6f, 0x6e, 0x65, 0x2d, 0x67, 0x6f,
-	0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x68, 0x64, 0x64, 0x73, 0x88,
-	0x01, 0x01, 0xa0, 0x01, 0x01,
-}
-
-var (
-	file_hdds_proto_rawDescOnce sync.Once
-	file_hdds_proto_rawDescData = file_hdds_proto_rawDesc
-)
-
-func file_hdds_proto_rawDescGZIP() []byte {
-	file_hdds_proto_rawDescOnce.Do(func() {
-		file_hdds_proto_rawDescData = protoimpl.X.CompressGZIP(file_hdds_proto_rawDescData)
-	})
-	return file_hdds_proto_rawDescData
-}
-
-var file_hdds_proto_enumTypes = make([]protoimpl.EnumInfo, 10)
-var file_hdds_proto_msgTypes = make([]protoimpl.MessageInfo, 17)
-var file_hdds_proto_goTypes = []interface{}{
-	(PipelineState)(0),     // 0: hadoop.hdds.PipelineState
-	(NodeType)(0),          // 1: hadoop.hdds.NodeType
-	(NodeState)(0),         // 2: hadoop.hdds.NodeState
-	(QueryScope)(0),        // 3: hadoop.hdds.QueryScope
-	(LifeCycleState)(0),    // 4: hadoop.hdds.LifeCycleState
-	(LifeCycleEvent)(0),    // 5: hadoop.hdds.LifeCycleEvent
-	(ReplicationType)(0),   // 6: hadoop.hdds.ReplicationType
-	(ReplicationFactor)(0), // 7: hadoop.hdds.ReplicationFactor
-	(ScmOps)(0),            // 8: hadoop.hdds.ScmOps
-	(BlockTokenSecretProto_AccessModeProto)(0), // 9: hadoop.hdds.BlockTokenSecretProto.AccessModeProto
-	(*UUID)(nil),                     // 10: hadoop.hdds.UUID
-	(*DatanodeDetailsProto)(nil),     // 11: hadoop.hdds.DatanodeDetailsProto
-	(*OzoneManagerDetailsProto)(nil), // 12: hadoop.hdds.OzoneManagerDetailsProto
-	(*Port)(nil),                     // 13: hadoop.hdds.Port
-	(*PipelineID)(nil),               // 14: hadoop.hdds.PipelineID
-	(*Pipeline)(nil),                 // 15: hadoop.hdds.Pipeline
-	(*KeyValue)(nil),                 // 16: hadoop.hdds.KeyValue
-	(*Node)(nil),                     // 17: hadoop.hdds.Node
-	(*NodePool)(nil),                 // 18: hadoop.hdds.NodePool
-	(*ContainerInfoProto)(nil),       // 19: hadoop.hdds.ContainerInfoProto
-	(*ContainerWithPipeline)(nil),    // 20: hadoop.hdds.ContainerWithPipeline
-	(*GetScmInfoRequestProto)(nil),   // 21: hadoop.hdds.GetScmInfoRequestProto
-	(*GetScmInfoResponseProto)(nil),  // 22: hadoop.hdds.GetScmInfoResponseProto
-	(*ExcludeListProto)(nil),         // 23: hadoop.hdds.ExcludeListProto
-	(*ContainerBlockID)(nil),         // 24: hadoop.hdds.ContainerBlockID
-	(*BlockTokenSecretProto)(nil),    // 25: hadoop.hdds.BlockTokenSecretProto
-	(*BlockID)(nil),                  // 26: hadoop.hdds.BlockID
-}
-var file_hdds_proto_depIdxs = []int32{
-	13, // 0: hadoop.hdds.DatanodeDetailsProto.ports:type_name -> hadoop.hdds.Port
-	10, // 1: hadoop.hdds.DatanodeDetailsProto.uuid128:type_name -> hadoop.hdds.UUID
-	13, // 2: hadoop.hdds.OzoneManagerDetailsProto.ports:type_name -> hadoop.hdds.Port
-	10, // 3: hadoop.hdds.PipelineID.uuid128:type_name -> hadoop.hdds.UUID
-	11, // 4: hadoop.hdds.Pipeline.members:type_name -> hadoop.hdds.DatanodeDetailsProto
-	0,  // 5: hadoop.hdds.Pipeline.state:type_name -> hadoop.hdds.PipelineState
-	6,  // 6: hadoop.hdds.Pipeline.type:type_name -> hadoop.hdds.ReplicationType
-	7,  // 7: hadoop.hdds.Pipeline.factor:type_name -> hadoop.hdds.ReplicationFactor
-	14, // 8: hadoop.hdds.Pipeline.id:type_name -> hadoop.hdds.PipelineID
-	10, // 9: hadoop.hdds.Pipeline.leaderID128:type_name -> hadoop.hdds.UUID
-	11, // 10: hadoop.hdds.Node.nodeID:type_name -> hadoop.hdds.DatanodeDetailsProto
-	2,  // 11: hadoop.hdds.Node.nodeStates:type_name -> hadoop.hdds.NodeState
-	17, // 12: hadoop.hdds.NodePool.nodes:type_name -> hadoop.hdds.Node
-	4,  // 13: hadoop.hdds.ContainerInfoProto.state:type_name -> hadoop.hdds.LifeCycleState
-	14, // 14: hadoop.hdds.ContainerInfoProto.pipelineID:type_name -> hadoop.hdds.PipelineID
-	7,  // 15: hadoop.hdds.ContainerInfoProto.replicationFactor:type_name -> hadoop.hdds.ReplicationFactor
-	6,  // 16: hadoop.hdds.ContainerInfoProto.replicationType:type_name -> hadoop.hdds.ReplicationType
-	19, // 17: hadoop.hdds.ContainerWithPipeline.containerInfo:type_name -> hadoop.hdds.ContainerInfoProto
-	15, // 18: hadoop.hdds.ContainerWithPipeline.pipeline:type_name -> hadoop.hdds.Pipeline
-	14, // 19: hadoop.hdds.ExcludeListProto.pipelineIds:type_name -> hadoop.hdds.PipelineID
-	9,  // 20: hadoop.hdds.BlockTokenSecretProto.modes:type_name -> hadoop.hdds.BlockTokenSecretProto.AccessModeProto
-	24, // 21: hadoop.hdds.BlockID.containerBlockID:type_name -> hadoop.hdds.ContainerBlockID
-	22, // [22:22] is the sub-list for method output_type
-	22, // [22:22] is the sub-list for method input_type
-	22, // [22:22] is the sub-list for extension type_name
-	22, // [22:22] is the sub-list for extension extendee
-	0,  // [0:22] is the sub-list for field type_name
-}
-
-func init() { file_hdds_proto_init() }
-func file_hdds_proto_init() {
-	if File_hdds_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_hdds_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*UUID); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_hdds_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DatanodeDetailsProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_hdds_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*OzoneManagerDetailsProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_hdds_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Port); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_hdds_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*PipelineID); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_hdds_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Pipeline); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_hdds_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*KeyValue); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_hdds_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*Node); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_hdds_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*NodePool); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_hdds_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ContainerInfoProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_hdds_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ContainerWithPipeline); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_hdds_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetScmInfoRequestProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_hdds_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*GetScmInfoResponseProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_hdds_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ExcludeListProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_hdds_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ContainerBlockID); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_hdds_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*BlockTokenSecretProto); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_hdds_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*BlockID); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_hdds_proto_rawDesc,
-			NumEnums:      10,
-			NumMessages:   17,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_hdds_proto_goTypes,
-		DependencyIndexes: file_hdds_proto_depIdxs,
-		EnumInfos:         file_hdds_proto_enumTypes,
-		MessageInfos:      file_hdds_proto_msgTypes,
-	}.Build()
-	File_hdds_proto = out.File
-	file_hdds_proto_rawDesc = nil
-	file_hdds_proto_goTypes = nil
-	file_hdds_proto_depIdxs = nil
-}
diff --git a/api/proto/ozone/OmClientProtocol.pb.go b/api/proto/ozone/OmClientProtocol.pb.go
deleted file mode 100644
index b94db63..0000000
--- a/api/proto/ozone/OmClientProtocol.pb.go
+++ /dev/null
@@ -1,12561 +0,0 @@
-//*
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-//*
-// These .proto interfaces are private and unstable.
-// Please see http://wiki.apache.org/hadoop/Compatibility
-// for what changes are allowed for a *unstable* .proto interface.
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// 	protoc-gen-go v1.24.0
-// 	protoc        v3.15.6
-// source: OmClientProtocol.proto
-
-package ozone
-
-import (
-	common "github.com/apache/ozone-go/api/proto/common"
-	hdds "github.com/apache/ozone-go/api/proto/hdds"
-	proto "github.com/golang/protobuf/proto"
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-const (
-	// Verify that this generated code is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
-	// Verify that runtime/protoimpl is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// This is a compile-time assertion that a sufficiently up-to-date version
-// of the legacy proto package is being used.
-const _ = proto.ProtoPackageIsVersion4
-
-type Type int32
-
-const (
-	Type_CreateVolume             Type = 11
-	Type_SetVolumeProperty        Type = 12
-	Type_CheckVolumeAccess        Type = 13
-	Type_InfoVolume               Type = 14
-	Type_DeleteVolume             Type = 15
-	Type_ListVolume               Type = 16
-	Type_CreateBucket             Type = 21
-	Type_InfoBucket               Type = 22
-	Type_SetBucketProperty        Type = 23
-	Type_DeleteBucket             Type = 24
-	Type_ListBuckets              Type = 25
-	Type_CreateKey                Type = 31
-	Type_LookupKey                Type = 32
-	Type_RenameKey                Type = 33
-	Type_DeleteKey                Type = 34
-	Type_ListKeys                 Type = 35
-	Type_CommitKey                Type = 36
-	Type_AllocateBlock            Type = 37
-	Type_DeleteKeys               Type = 38
-	Type_InitiateMultiPartUpload  Type = 45
-	Type_CommitMultiPartUpload    Type = 46
-	Type_CompleteMultiPartUpload  Type = 47
-	Type_AbortMultiPartUpload     Type = 48
-	Type_GetS3Secret              Type = 49
-	Type_ListMultiPartUploadParts Type = 50
-	Type_ServiceList              Type = 51
-	Type_DBUpdates                Type = 53
-	Type_GetDelegationToken       Type = 61
-	Type_RenewDelegationToken     Type = 62
-	Type_CancelDelegationToken    Type = 63
-	Type_GetFileStatus            Type = 70
-	Type_CreateDirectory          Type = 71
-	Type_CreateFile               Type = 72
-	Type_LookupFile               Type = 73
-	Type_ListStatus               Type = 74
-	Type_AddAcl                   Type = 75
-	Type_RemoveAcl                Type = 76
-	Type_SetAcl                   Type = 77
-	Type_GetAcl                   Type = 78
-	Type_PurgeKeys                Type = 81
-	Type_ListMultipartUploads     Type = 82
-	Type_ListTrash                Type = 91
-	Type_RecoverTrash             Type = 92
-)
-
-// Enum value maps for Type.
-var (
-	Type_name = map[int32]string{
-		11: "CreateVolume",
-		12: "SetVolumeProperty",
-		13: "CheckVolumeAccess",
-		14: "InfoVolume",
-		15: "DeleteVolume",
-		16: "ListVolume",
-		21: "CreateBucket",
-		22: "InfoBucket",
-		23: "SetBucketProperty",
-		24: "DeleteBucket",
-		25: "ListBuckets",
-		31: "CreateKey",
-		32: "LookupKey",
-		33: "RenameKey",
-		34: "DeleteKey",
-		35: "ListKeys",
-		36: "CommitKey",
-		37: "AllocateBlock",
-		38: "DeleteKeys",
-		45: "InitiateMultiPartUpload",
-		46: "CommitMultiPartUpload",
-		47: "CompleteMultiPartUpload",
-		48: "AbortMultiPartUpload",
-		49: "GetS3Secret",
-		50: "ListMultiPartUploadParts",
-		51: "ServiceList",
-		53: "DBUpdates",
-		61: "GetDelegationToken",
-		62: "RenewDelegationToken",
-		63: "CancelDelegationToken",
-		70: "GetFileStatus",
-		71: "CreateDirectory",
-		72: "CreateFile",
-		73: "LookupFile",
-		74: "ListStatus",
-		75: "AddAcl",
-		76: "RemoveAcl",
-		77: "SetAcl",
-		78: "GetAcl",
-		81: "PurgeKeys",
-		82: "ListMultipartUploads",
-		91: "ListTrash",
-		92: "RecoverTrash",
-	}
-	Type_value = map[string]int32{
-		"CreateVolume":             11,
-		"SetVolumeProperty":        12,
-		"CheckVolumeAccess":        13,
-		"InfoVolume":               14,
-		"DeleteVolume":             15,
-		"ListVolume":               16,
-		"CreateBucket":             21,
-		"InfoBucket":               22,
-		"SetBucketProperty":        23,
-		"DeleteBucket":             24,
-		"ListBuckets":              25,
-		"CreateKey":                31,
-		"LookupKey":                32,
-		"RenameKey":                33,
-		"DeleteKey":                34,
-		"ListKeys":                 35,
-		"CommitKey":                36,
-		"AllocateBlock":            37,
-		"DeleteKeys":               38,
-		"InitiateMultiPartUpload":  45,
-		"CommitMultiPartUpload":    46,
-		"CompleteMultiPartUpload":  47,
-		"AbortMultiPartUpload":     48,
-		"GetS3Secret":              49,
-		"ListMultiPartUploadParts": 50,
-		"ServiceList":              51,
-		"DBUpdates":                53,
-		"GetDelegationToken":       61,
-		"RenewDelegationToken":     62,
-		"CancelDelegationToken":    63,
-		"GetFileStatus":            70,
-		"CreateDirectory":          71,
-		"CreateFile":               72,
-		"LookupFile":               73,
-		"ListStatus":               74,
-		"AddAcl":                   75,
-		"RemoveAcl":                76,
-		"SetAcl":                   77,
-		"GetAcl":                   78,
-		"PurgeKeys":                81,
-		"ListMultipartUploads":     82,
-		"ListTrash":                91,
-		"RecoverTrash":             92,
-	}
-)
-
-func (x Type) Enum() *Type {
-	p := new(Type)
-	*p = x
-	return p
-}
-
-func (x Type) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (Type) Descriptor() protoreflect.EnumDescriptor {
-	return file_OmClientProtocol_proto_enumTypes[0].Descriptor()
-}
-
-func (Type) Type() protoreflect.EnumType {
-	return &file_OmClientProtocol_proto_enumTypes[0]
-}
-
-func (x Type) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Do not use.
-func (x *Type) UnmarshalJSON(b []byte) error {
-	num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b)
-	if err != nil {
-		return err
-	}
-	*x = Type(num)
-	return nil
-}
-
-// Deprecated: Use Type.Descriptor instead.
-func (Type) EnumDescriptor() ([]byte, []int) {
-	return file_OmClientProtocol_proto_rawDescGZIP(), []int{0}
-}
-
-type Status int32
-
-const (
-	Status_OK                                 Status = 1
-	Status_VOLUME_NOT_UNIQUE                  Status = 2
-	Status_VOLUME_NOT_FOUND                   Status = 3
-	Status_VOLUME_NOT_EMPTY                   Status = 4
-	Status_VOLUME_ALREADY_EXISTS              Status = 5
-	Status_USER_NOT_FOUND                     Status = 6
-	Status_USER_TOO_MANY_VOLUMES              Status = 7
-	Status_BUCKET_NOT_FOUND                   Status = 8
-	Status_BUCKET_NOT_EMPTY                   Status = 9
-	Status_BUCKET_ALREADY_EXISTS              Status = 10
-	Status_KEY_ALREADY_EXISTS                 Status = 11
-	Status_KEY_NOT_FOUND                      Status = 12
-	Status_INVALID_KEY_NAME                   Status = 13
-	Status_ACCESS_DENIED                      Status = 14
-	Status_INTERNAL_ERROR                     Status = 15
-	Status_KEY_ALLOCATION_ERROR               Status = 16
-	Status_KEY_DELETION_ERROR                 Status = 17
-	Status_KEY_RENAME_ERROR                   Status = 18
-	Status_METADATA_ERROR                     Status = 19
-	Status_OM_NOT_INITIALIZED                 Status = 20
-	Status_SCM_VERSION_MISMATCH_ERROR         Status = 21
-	Status_INITIATE_MULTIPART_UPLOAD_ERROR    Status = 24
-	Status_MULTIPART_UPLOAD_PARTFILE_ERROR    Status = 25
-	Status_NO_SUCH_MULTIPART_UPLOAD_ERROR     Status = 26
-	Status_MISMATCH_MULTIPART_LIST            Status = 27
-	Status_MISSING_UPLOAD_PARTS               Status = 28
-	Status_COMPLETE_MULTIPART_UPLOAD_ERROR    Status = 29
-	Status_ENTITY_TOO_SMALL                   Status = 30
-	Status_ABORT_MULTIPART_UPLOAD_FAILED      Status = 31
-	Status_S3_SECRET_NOT_FOUND                Status = 32
-	Status_INVALID_AUTH_METHOD                Status = 33
-	Status_INVALID_TOKEN                      Status = 34
-	Status_TOKEN_EXPIRED                      Status = 35
-	Status_TOKEN_ERROR_OTHER                  Status = 36
-	Status_LIST_MULTIPART_UPLOAD_PARTS_FAILED Status = 37
-	Status_SCM_IN_SAFE_MODE                   Status = 38
-	Status_INVALID_REQUEST                    Status = 39
-	Status_BUCKET_ENCRYPTION_KEY_NOT_FOUND    Status = 40
-	Status_UNKNOWN_CIPHER_SUITE               Status = 41
-	Status_INVALID_KMS_PROVIDER               Status = 42
-	Status_TOKEN_CREATION_ERROR               Status = 43
-	Status_FILE_NOT_FOUND                     Status = 44
-	Status_DIRECTORY_NOT_FOUND                Status = 45
-	Status_FILE_ALREADY_EXISTS                Status = 46
-	Status_NOT_A_FILE                         Status = 47
-	Status_PERMISSION_DENIED                  Status = 48
-	Status_TIMEOUT                            Status = 49
-	Status_PREFIX_NOT_FOUND                   Status = 50
-	Status_RATIS_ERROR                        Status = 52
-	Status_INVALID_PATH_IN_ACL_REQUEST        Status = 53 // Invalid path name in acl request.
-	Status_USER_MISMATCH                      Status = 54 // Error code when requested user name passed is
-	Status_INVALID_PART                       Status = 55
-	Status_INVALID_PART_ORDER                 Status = 56
-	Status_SCM_GET_PIPELINE_EXCEPTION         Status = 57
-	Status_INVALID_BUCKET_NAME                Status = 58
-	Status_CANNOT_CREATE_DIRECTORY_AT_ROOT    Status = 59
-	Status_DIRECTORY_ALREADY_EXISTS           Status = 60
-	Status_INVALID_VOLUME_NAME                Status = 61
-	Status_PARTIAL_DELETE                     Status = 62
-	Status_DETECTED_LOOP_IN_BUCKET_LINKS      Status = 63
-	Status_NOT_SUPPORTED_OPERATION            Status = 64
-)
-
-// Enum value maps for Status.
-var (
-	Status_name = map[int32]string{
-		1:  "OK",
-		2:  "VOLUME_NOT_UNIQUE",
-		3:  "VOLUME_NOT_FOUND",
-		4:  "VOLUME_NOT_EMPTY",
-		5:  "VOLUME_ALREADY_EXISTS",
-		6:  "USER_NOT_FOUND",
-		7:  "USER_TOO_MANY_VOLUMES",
-		8:  "BUCKET_NOT_FOUND",
-		9:  "BUCKET_NOT_EMPTY",
-		10: "BUCKET_ALREADY_EXISTS",
-		11: "KEY_ALREADY_EXISTS",
-		12: "KEY_NOT_FOUND",
-		13: "INVALID_KEY_NAME",
-		14: "ACCESS_DENIED",
-		15: "INTERNAL_ERROR",
-		16: "KEY_ALLOCATION_ERROR",
-		17: "KEY_DELETION_ERROR",
-		18: "KEY_RENAME_ERROR",
-		19: "METADATA_ERROR",
-		20: "OM_NOT_INITIALIZED",
-		21: "SCM_VERSION_MISMATCH_ERROR",
-		24: "INITIATE_MULTIPART_UPLOAD_ERROR",
-		25: "MULTIPART_UPLOAD_PARTFILE_ERROR",
-		26: "NO_SUCH_MULTIPART_UPLOAD_ERROR",
-		27: "MISMATCH_MULTIPART_LIST",
-		28: "MISSING_UPLOAD_PARTS",
-		29: "COMPLETE_MULTIPART_UPLOAD_ERROR",
-		30: "ENTITY_TOO_SMALL",
-		31: "ABORT_MULTIPART_UPLOAD_FAILED",
-		32: "S3_SECRET_NOT_FOUND",
-		33: "INVALID_AUTH_METHOD",
-		34: "INVALID_TOKEN",
-		35: "TOKEN_EXPIRED",
-		36: "TOKEN_ERROR_OTHER",
-		37: "LIST_MULTIPART_UPLOAD_PARTS_FAILED",
-		38: "SCM_IN_SAFE_MODE",
-		39: "INVALID_REQUEST",
-		40: "BUCKET_ENCRYPTION_KEY_NOT_FOUND",
-		41: "UNKNOWN_CIPHER_SUITE",
-		42: "INVALID_KMS_PROVIDER",
-		43: "TOKEN_CREATION_ERROR",
-		44: "FILE_NOT_FOUND",
-		45: "DIRECTORY_NOT_FOUND",
-		46: "FILE_ALREADY_EXISTS",
-		47: "NOT_A_FILE",
-		48: "PERMISSION_DENIED",
-		49: "TIMEOUT",
-		50: "PREFIX_NOT_FOUND",
-		52: "RATIS_ERROR",
... 19019 lines suppressed ...

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ozone.apache.org
For additional commands, e-mail: commits-help@ozone.apache.org