[VOL-2738]Enable configuration of ectd v3 client options

Change-Id: Iec0b623f93f5873241f41b42c9328dcc88e42cad
diff --git a/cmd/ofagent/main.go b/cmd/ofagent/main.go
index d2f1fc4..991a221 100644
--- a/cmd/ofagent/main.go
+++ b/cmd/ofagent/main.go
@@ -45,7 +45,7 @@
 }
 
 func setLogConfig(ctx context.Context, kvStoreHost, kvStoreType string, kvStorePort, kvStoreTimeout int) (kvstore.Client, error) {
-	client, err := kvstore.NewEtcdClient(kvStoreHost+":"+strconv.Itoa(kvStorePort), kvStoreTimeout)
+	client, err := kvstore.NewEtcdClient(kvStoreHost+":"+strconv.Itoa(kvStorePort), kvStoreTimeout, log.WarnLevel)
 	if err != nil {
 		return nil, err
 	}
diff --git a/go.mod b/go.mod
index f695b36..37db7dc 100644
--- a/go.mod
+++ b/go.mod
@@ -5,8 +5,8 @@
 require (
 	github.com/donNewtonAlpha/goloxi v1.0.0
 	github.com/golang/protobuf v1.3.2
-	github.com/opencord/voltha-lib-go/v3 v3.0.23
-	github.com/opencord/voltha-protos/v3 v3.2.3
+	github.com/opencord/voltha-lib-go/v3 v3.1.5
+	github.com/opencord/voltha-protos/v3 v3.3.0
 	github.com/stretchr/testify v1.4.0
 	golang.org/x/net v0.0.0-20191112182307-2180aed22343
 	google.golang.org/grpc v1.25.1
diff --git a/go.sum b/go.sum
index 699d612..062ffc7 100644
--- a/go.sum
+++ b/go.sum
@@ -4,6 +4,7 @@
 github.com/DataDog/zstd v1.3.6-0.20190409195224-796139022798/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
 github.com/DataDog/zstd v1.4.1 h1:3oxKN3wbHibqx897utPC2LTQU4J+IHWWJO+glkAkpFM=
 github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
+github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
 github.com/Shopify/sarama v1.23.1 h1:XxJBCZEoWJtoWjf/xRbmGUpAmTZGnuuF0ON0EvxxBrs=
 github.com/Shopify/sarama v1.23.1/go.mod h1:XLH1GYJnLVE0XCr6KdJGVJRTwY30moWNJ4sERjXX6fs=
 github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc=
@@ -22,7 +23,9 @@
 github.com/boljen/go-bitmap v0.0.0-20151001105940-23cd2fb0ce7d/go.mod h1:f1iKL6ZhUWvbk7PdWVmOaak10o86cqMUYEmn1CZNGEI=
 github.com/bsm/sarama-cluster v2.1.15+incompatible h1:RkV6WiNRnqEEbp81druK8zYhmnIgdOjqSVi0+9Cnl2A=
 github.com/bsm/sarama-cluster v2.1.15+incompatible/go.mod h1:r7ao+4tTNXvWm+VRpRJchr2kQhqxgmAp2iEX5W96gMM=
+github.com/buraksezer/consistent v0.0.0-20191006190839-693edf70fd72/go.mod h1:OEE5igu/CDjGegM1Jn6ZMo7R6LlV/JChAkjfQQIRLpg=
 github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
+github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
 github.com/cevaris/ordered_map v0.0.0-20190319150403-3adeae072e73/go.mod h1:507vXsotcZop7NZfBWdhPmVeOse4ko2R7AagJYrpoEg=
 github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=
 github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
@@ -191,10 +194,10 @@
 github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
 github.com/onsi/gomega v1.4.2 h1:3mYCb7aPxS/RU7TI1y4rkEn1oKmPRjNJLNEXgw7MH2I=
 github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
-github.com/opencord/voltha-lib-go/v3 v3.0.23 h1:QJkosPdVm85AaLzVEk4umzcL7p2MmwukU9f83rZTIOU=
-github.com/opencord/voltha-lib-go/v3 v3.0.23/go.mod h1:QuAohPQ+InSw+8XgCFxnp4cpHWcxO2efVTtiBFUmuOY=
-github.com/opencord/voltha-protos/v3 v3.2.3 h1:Wv73mw1Ye0bCfyhOk5svgrlE2tLizHq6tQluoDq9Vg8=
-github.com/opencord/voltha-protos/v3 v3.2.3/go.mod h1:RIGHt7b80BHpHh3ceodknh0DxUjUHCWSbYbZqRx7Og0=
+github.com/opencord/voltha-lib-go/v3 v3.1.5 h1:Hci6ODHha76i+8jePcfV+W6moCakNA7sFsPSOG7EyIk=
+github.com/opencord/voltha-lib-go/v3 v3.1.5/go.mod h1:ad7C/5/09RcYvGQrxUH4AuOiO8OSQqGmCgEJNEpaag8=
+github.com/opencord/voltha-protos/v3 v3.3.0 h1:1Q1C6nWSkjaJY87GQgc7hWU6kqjkWdM+rzqSXBKb0cQ=
+github.com/opencord/voltha-protos/v3 v3.3.0/go.mod h1:nl1ETp5Iw3avxOaKD8BJlYY5wYI4KeV95aT1pL63nto=
 github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
 github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY=
 github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
@@ -236,6 +239,7 @@
 github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
 github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E=
 github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
+github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
 github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
 github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
 github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg=
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/common.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/common.go
new file mode 100644
index 0000000..37e05fd
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/common.go
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2020-present Open Networking Foundation
+ *
+ * Licensed 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 config
+
+import (
+	"github.com/opencord/voltha-lib-go/v3/pkg/log"
+)
+
+var logger log.Logger
+
+func init() {
+	// Setup this package so that it's log level can be modified at run time
+	var err error
+	logger, err = log.AddPackage(log.JSON, log.ErrorLevel, log.Fields{"pkg": "config"})
+	if err != nil {
+		panic(err)
+	}
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/configmanager.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/configmanager.go
index 441c488..0dafc7a 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/configmanager.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/configmanager.go
@@ -24,13 +24,6 @@
 	"strings"
 )
 
-func init() {
-	_, err := log.AddPackage(log.JSON, log.FatalLevel, nil)
-	if err != nil {
-		log.Errorw("unable-to-register-package-to-the-log-map", log.Fields{"error": err})
-	}
-}
-
 const (
 	defaultkvStoreConfigPath = "config"
 	kvStoreDataPathPrefix    = "service/voltha"
@@ -43,11 +36,12 @@
 
 const (
 	ConfigTypeLogLevel ConfigType = iota
+	ConfigTypeMetadata
 	ConfigTypeKafka
 )
 
 func (c ConfigType) String() string {
-	return [...]string{"loglevel", "kafka"}[c]
+	return [...]string{"loglevel", "metadata", "kafka"}[c]
 }
 
 // ChangeEvent represents the event recieved from watch
@@ -70,10 +64,10 @@
 	ConfigAttribute string
 }
 
-// ConfigManager is a wrapper over backend to maintain Configuration of voltha components
+// ConfigManager is a wrapper over Backend to maintain Configuration of voltha components
 // in kvstore based persistent storage
 type ConfigManager struct {
-	backend             *db.Backend
+	Backend             *db.Backend
 	KvStoreConfigPrefix string
 }
 
@@ -102,7 +96,7 @@
 
 	return &ConfigManager{
 		KvStoreConfigPrefix: defaultkvStoreConfigPath,
-		backend: &db.Backend{
+		Backend: &db.Backend{
 			Client:     kvClient,
 			StoreType:  kvStoreType,
 			Host:       kvStoreHost,
@@ -115,12 +109,12 @@
 
 // RetrieveComponentList list the component Names for which loglevel is stored in kvstore
 func (c *ConfigManager) RetrieveComponentList(ctx context.Context, configType ConfigType) ([]string, error) {
-	data, err := c.backend.List(ctx, c.KvStoreConfigPrefix)
+	data, err := c.Backend.List(ctx, c.KvStoreConfigPrefix)
 	if err != nil {
 		return nil, err
 	}
 
-	// Looping through the data recieved from the backend for config
+	// Looping through the data recieved from the Backend for config
 	// Trimming and Splitting the required key and value from data and  storing as componentName,PackageName and Level
 	// For Example, recieved key would be <Backend Prefix Path>/<Config Prefix>/<Component Name>/<Config Type>/default and value \"DEBUG\"
 	// Then in default will be stored as PackageName,componentName as <Component Name> and DEBUG will be stored as value in List struct
@@ -171,31 +165,31 @@
 func (c *ComponentConfig) MonitorForConfigChange(ctx context.Context) chan *ConfigChangeEvent {
 	key := c.makeConfigPath()
 
-	log.Debugw("monitoring-for-config-change", log.Fields{"key": key})
+	logger.Debugw("monitoring-for-config-change", log.Fields{"key": key})
 
 	c.changeEventChan = make(chan *ConfigChangeEvent, 1)
 
-	c.kvStoreEventChan = c.cManager.backend.CreateWatch(ctx, key, true)
+	c.kvStoreEventChan = c.cManager.Backend.CreateWatch(ctx, key, true)
 
 	go c.processKVStoreWatchEvents()
 
 	return c.changeEventChan
 }
 
-// processKVStoreWatchEvents process event channel recieved from the backend for any ChangeType
+// processKVStoreWatchEvents process event channel recieved from the Backend for any ChangeType
 // It checks for the EventType is valid or not.For the valid EventTypes creates ConfigChangeEvent and send it on channel
 func (c *ComponentConfig) processKVStoreWatchEvents() {
 
 	ccKeyPrefix := c.makeConfigPath()
 
-	log.Debugw("processing-kvstore-event-change", log.Fields{"key-prefix": ccKeyPrefix})
+	logger.Debugw("processing-kvstore-event-change", log.Fields{"key-prefix": ccKeyPrefix})
 
-	ccPathPrefix := c.cManager.backend.PathPrefix + ccKeyPrefix + kvStorePathSeparator
+	ccPathPrefix := c.cManager.Backend.PathPrefix + ccKeyPrefix + kvStorePathSeparator
 
 	for watchResp := range c.kvStoreEventChan {
 
 		if watchResp.EventType == kvstore.CONNECTIONDOWN || watchResp.EventType == kvstore.UNKNOWN {
-			log.Warnw("received-invalid-change-type-in-watch-channel-from-kvstore", log.Fields{"change-type": watchResp.EventType})
+			logger.Warnw("received-invalid-change-type-in-watch-channel-from-kvstore", log.Fields{"change-type": watchResp.EventType})
 			continue
 		}
 
@@ -215,9 +209,9 @@
 func (c *ComponentConfig) Retrieve(ctx context.Context, configKey string) (string, error) {
 	key := c.makeConfigPath() + "/" + configKey
 
-	log.Debugw("retrieving-config", log.Fields{"key": key})
+	logger.Debugw("retrieving-config", log.Fields{"key": key})
 
-	if kvpair, err := c.cManager.backend.Get(ctx, key); err != nil {
+	if kvpair, err := c.cManager.Backend.Get(ctx, key); err != nil {
 		return "", err
 	} else {
 		if kvpair == nil {
@@ -225,7 +219,7 @@
 		}
 
 		value := strings.Trim(fmt.Sprintf("%s", kvpair.Value), "\"")
-		log.Debugw("retrieved-config", log.Fields{"key": key, "value": value})
+		logger.Debugw("retrieved-config", log.Fields{"key": key, "value": value})
 		return value, nil
 	}
 }
@@ -233,19 +227,19 @@
 func (c *ComponentConfig) RetrieveAll(ctx context.Context) (map[string]string, error) {
 	key := c.makeConfigPath()
 
-	log.Debugw("retreiving-list", log.Fields{"key": key})
+	logger.Debugw("retreiving-list", log.Fields{"key": key})
 
-	data, err := c.cManager.backend.List(ctx, key)
+	data, err := c.cManager.Backend.List(ctx, key)
 	if err != nil {
 		return nil, err
 	}
 
-	// Looping through the data recieved from the backend for the given key
+	// Looping through the data recieved from the Backend for the given key
 	// Trimming the required key and value from data and  storing as key/value pair
 	// For Example, recieved key would be <Backend Prefix Path>/<Config Prefix>/<Component Name>/<Config Type>/default and value \"DEBUG\"
 	// Then in default will be stored as key and DEBUG will be stored as value in map[string]string
 	res := make(map[string]string)
-	ccPathPrefix := c.cManager.backend.PathPrefix + kvStorePathSeparator + key + kvStorePathSeparator
+	ccPathPrefix := c.cManager.Backend.PathPrefix + kvStorePathSeparator + key + kvStorePathSeparator
 	for attr, val := range data {
 		res[strings.TrimPrefix(attr, ccPathPrefix)] = strings.Trim(fmt.Sprintf("%s", val.Value), "\"")
 	}
@@ -256,10 +250,10 @@
 func (c *ComponentConfig) Save(ctx context.Context, configKey string, configValue string) error {
 	key := c.makeConfigPath() + "/" + configKey
 
-	log.Debugw("saving-config", log.Fields{"key": key, "value": configValue})
+	logger.Debugw("saving-config", log.Fields{"key": key, "value": configValue})
 
 	//save the data for update config
-	if err := c.cManager.backend.Put(ctx, key, configValue); err != nil {
+	if err := c.cManager.Backend.Put(ctx, key, configValue); err != nil {
 		return err
 	}
 	return nil
@@ -269,9 +263,9 @@
 	//construct key using makeConfigPath
 	key := c.makeConfigPath() + "/" + configKey
 
-	log.Debugw("deleting-config", log.Fields{"key": key})
+	logger.Debugw("deleting-config", log.Fields{"key": key})
 	//delete the config
-	if err := c.cManager.backend.Delete(ctx, key); err != nil {
+	if err := c.cManager.Backend.Delete(ctx, key); err != nil {
 		return err
 	}
 	return nil
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/logcontroller.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/logcontroller.go
index 65927e6..b00569f 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/logcontroller.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/logcontroller.go
@@ -15,7 +15,7 @@
  */
 
 // Package Config provides dynamic logging configuration for specific Voltha component with loglevel lookup
-// from etcd kvstore implemented using backend.
+// from etcd kvstore implemented using Backend.
 // Any Voltha component can start utilizing dynamic logging by starting goroutine of StartLogLevelConfigProcessing after
 // starting kvClient for the component.
 
@@ -28,13 +28,15 @@
 	"errors"
 	"github.com/opencord/voltha-lib-go/v3/pkg/log"
 	"os"
+	"sort"
 	"strings"
 )
 
 const (
-	defaultLogLevelKey                = "default" // kvstore key containing default loglevel
-	globalConfigRootNode              = "global"  // Root Node in kvstore containing global config
-	initialGlobalDefaultLogLevelValue = "WARN"    // Hard-coded Global Default loglevel pushed at PoD startup
+	defaultLogLevelKey                = "default"          // kvstore key containing default loglevel
+	globalConfigRootNode              = "global"           // Root Node in kvstore containing global config
+	initialGlobalDefaultLogLevelValue = "WARN"             // Hard-coded Global Default loglevel pushed at PoD startup
+	logPackagesListKey                = "log_package_list" // kvstore key containing list of allowed log packages
 )
 
 // ComponentLogController represents a Configuration for Logging Config of specific Voltha component type
@@ -51,7 +53,7 @@
 
 func NewComponentLogController(cm *ConfigManager) (*ComponentLogController, error) {
 
-	log.Debug("creating-new-component-log-controller")
+	logger.Debug("creating-new-component-log-controller")
 	componentName := os.Getenv("COMPONENT_NAME")
 	if componentName == "" {
 		return nil, errors.New("Unable to retrieve PoD Component Name from Runtime env")
@@ -80,18 +82,20 @@
 func StartLogLevelConfigProcessing(cm *ConfigManager, ctx context.Context) {
 	cc, err := NewComponentLogController(cm)
 	if err != nil {
-		log.Errorw("unable-to-construct-component-log-controller-instance-for-log-config-monitoring", log.Fields{"error": err})
+		logger.Errorw("unable-to-construct-component-log-controller-instance-for-log-config-monitoring", log.Fields{"error": err})
 		return
 	}
 
 	cc.GlobalConfig = cm.InitComponentConfig(globalConfigRootNode, ConfigTypeLogLevel)
-	log.Debugw("global-log-config", log.Fields{"cc-global-config": cc.GlobalConfig})
+	logger.Debugw("global-log-config", log.Fields{"cc-global-config": cc.GlobalConfig})
 
 	cc.componentNameConfig = cm.InitComponentConfig(cc.ComponentName, ConfigTypeLogLevel)
-	log.Debugw("component-log-config", log.Fields{"cc-component-name-config": cc.componentNameConfig})
+	logger.Debugw("component-log-config", log.Fields{"cc-component-name-config": cc.componentNameConfig})
 
 	cc.persistInitialDefaultLogConfigs(ctx)
 
+	cc.persistRegisteredLogPackageList(ctx)
+
 	cc.processLogConfig(ctx)
 }
 
@@ -101,38 +105,60 @@
 
 	_, err := c.GlobalConfig.Retrieve(ctx, defaultLogLevelKey)
 	if err != nil {
-		log.Debugw("failed-to-retrieve-global-default-log-config-at-startup", log.Fields{"error": err})
+		logger.Debugw("failed-to-retrieve-global-default-log-config-at-startup", log.Fields{"error": err})
 
 		err = c.GlobalConfig.Save(ctx, defaultLogLevelKey, initialGlobalDefaultLogLevelValue)
 		if err != nil {
-			log.Errorw("failed-to-persist-global-default-log-config-at-startup", log.Fields{"error": err, "loglevel": initialGlobalDefaultLogLevelValue})
+			logger.Errorw("failed-to-persist-global-default-log-config-at-startup", log.Fields{"error": err, "loglevel": initialGlobalDefaultLogLevelValue})
 		}
 	}
 
 	_, err = c.componentNameConfig.Retrieve(ctx, defaultLogLevelKey)
 	if err != nil {
-		log.Debugw("failed-to-retrieve-component-default-log-config-at-startup", log.Fields{"error": err})
+		logger.Debugw("failed-to-retrieve-component-default-log-config-at-startup", log.Fields{"error": err})
 
 		err = c.componentNameConfig.Save(ctx, defaultLogLevelKey, c.initialLogLevel)
 		if err != nil {
-			log.Errorw("failed-to-persist-component-default-log-config-at-startup", log.Fields{"error": err, "loglevel": c.initialLogLevel})
+			logger.Errorw("failed-to-persist-component-default-log-config-at-startup", log.Fields{"error": err, "loglevel": c.initialLogLevel})
 		}
 	}
 }
 
+// Method to save list of all registered packages for component into config kvstore. A single string
+// is constructed with comma-separated package names in sorted order and persisted
+func (c *ComponentLogController) persistRegisteredLogPackageList(ctx context.Context) {
+
+	componentMetadataConfig := c.configManager.InitComponentConfig(c.ComponentName, ConfigTypeMetadata)
+	logger.Debugw("component-metadata-config", log.Fields{"component-metadata-config": componentMetadataConfig})
+
+	packageList := log.GetPackageNames()
+	packageList = append(packageList, defaultLogLevelKey)
+	sort.Strings(packageList)
+
+	packageNames, err := json.Marshal(packageList)
+	if err != nil {
+		logger.Errorw("failed-to-marshal-log-package-list-for-storage", log.Fields{"error": err, "packageList": packageList})
+		return
+	}
+
+	if err := componentMetadataConfig.Save(ctx, logPackagesListKey, string(packageNames)); err != nil {
+		logger.Errorw("failed-to-persist-component-registered-log-package-list-at-startup", log.Fields{"error": err, "packageNames": packageNames})
+	}
+}
+
 // ProcessLogConfig will first load and apply log config and then start waiting on component config and global config
-// channels for any changes. Event channel will be recieved from backend for valid change type
-// Then data for componentn log config and global log config will be retrieved from backend and stored in updatedLogConfig in precedence order
+// channels for any changes. Event channel will be recieved from Backend for valid change type
+// Then data for componentn log config and global log config will be retrieved from Backend and stored in updatedLogConfig in precedence order
 // If any changes in updatedLogConfig will be applied on component
 func (c *ComponentLogController) processLogConfig(ctx context.Context) {
 
 	// Load and apply Log Config for first time
 	initialLogConfig, err := c.buildUpdatedLogConfig(ctx)
 	if err != nil {
-		log.Warnw("unable-to-load-log-config-at-startup", log.Fields{"error": err})
+		logger.Warnw("unable-to-load-log-config-at-startup", log.Fields{"error": err})
 	} else {
 		if err := c.loadAndApplyLogConfig(initialLogConfig); err != nil {
-			log.Warnw("unable-to-apply-log-config-at-startup", log.Fields{"error": err})
+			logger.Warnw("unable-to-apply-log-config-at-startup", log.Fields{"error": err})
 		}
 	}
 
@@ -148,18 +174,18 @@
 		case configEvent = <-componentConfigEventChan:
 
 		}
-		log.Debugw("processing-log-config-change", log.Fields{"ChangeType": configEvent.ChangeType, "Package": configEvent.ConfigAttribute})
+		logger.Debugw("processing-log-config-change", log.Fields{"ChangeType": configEvent.ChangeType, "Package": configEvent.ConfigAttribute})
 
 		updatedLogConfig, err := c.buildUpdatedLogConfig(ctx)
 		if err != nil {
-			log.Warnw("unable-to-fetch-updated-log-config", log.Fields{"error": err})
+			logger.Warnw("unable-to-fetch-updated-log-config", log.Fields{"error": err})
 			continue
 		}
 
-		log.Debugw("applying-updated-log-config", log.Fields{"updated-log-config": updatedLogConfig})
+		logger.Debugw("applying-updated-log-config", log.Fields{"updated-log-config": updatedLogConfig})
 
 		if err := c.loadAndApplyLogConfig(updatedLogConfig); err != nil {
-			log.Warnw("unable-to-load-and-apply-log-config", log.Fields{"error": err})
+			logger.Warnw("unable-to-load-and-apply-log-config", log.Fields{"error": err})
 		}
 	}
 
@@ -178,7 +204,7 @@
 	for _, packageName := range log.GetPackageNames() {
 		level, err := log.GetPackageLogLevel(packageName)
 		if err != nil {
-			log.Warnw("unable-to-fetch-current-active-loglevel-for-package-name", log.Fields{"package-name": packageName, "error": err})
+			logger.Warnw("unable-to-fetch-current-active-loglevel-for-package-name", log.Fields{"package-name": packageName, "error": err})
 			continue
 		}
 
@@ -187,7 +213,7 @@
 		}
 	}
 
-	log.Debugw("retreived-log-levels-from-zap-logger", log.Fields{"loglevels": loglevels})
+	logger.Debugw("retreived-log-levels-from-zap-logger", log.Fields{"loglevels": loglevels})
 
 	return loglevels
 }
@@ -202,16 +228,16 @@
 	// Handle edge cases when global default loglevel is deleted directly from etcd or set to a invalid value
 	// We should use hard-coded initial default value in such cases
 	if globalDefaultLogLevel == "" {
-		log.Warn("global-default-loglevel-not-found-in-config-store")
+		logger.Warn("global-default-loglevel-not-found-in-config-store")
 		globalDefaultLogLevel = initialGlobalDefaultLogLevelValue
 	}
 
 	if _, err := log.StringToLogLevel(globalDefaultLogLevel); err != nil {
-		log.Warnw("unsupported-loglevel-config-defined-at-global-default", log.Fields{"log-level": globalDefaultLogLevel})
+		logger.Warnw("unsupported-loglevel-config-defined-at-global-default", log.Fields{"log-level": globalDefaultLogLevel})
 		globalDefaultLogLevel = initialGlobalDefaultLogLevelValue
 	}
 
-	log.Debugw("retrieved-global-default-loglevel", log.Fields{"level": globalDefaultLogLevel})
+	logger.Debugw("retrieved-global-default-loglevel", log.Fields{"level": globalDefaultLogLevel})
 
 	return globalDefaultLogLevel, nil
 }
@@ -225,7 +251,7 @@
 	effectiveDefaultLogLevel := ""
 	for logConfigKey, logConfigValue := range componentLogConfig {
 		if _, err := log.StringToLogLevel(logConfigValue); err != nil || logConfigKey == "" {
-			log.Warnw("unsupported-loglevel-config-defined-at-component-context", log.Fields{"package-name": logConfigKey, "log-level": logConfigValue})
+			logger.Warnw("unsupported-loglevel-config-defined-at-component-context", log.Fields{"package-name": logConfigKey, "log-level": logConfigValue})
 			delete(componentLogConfig, logConfigKey)
 		} else {
 			if logConfigKey == defaultLogLevelKey {
@@ -242,12 +268,12 @@
 
 	componentLogConfig[defaultLogLevelKey] = effectiveDefaultLogLevel
 
-	log.Debugw("retrieved-component-log-config", log.Fields{"component-log-level": componentLogConfig})
+	logger.Debugw("retrieved-component-log-config", log.Fields{"component-log-level": componentLogConfig})
 
 	return componentLogConfig, nil
 }
 
-// buildUpdatedLogConfig retrieve the global logConfig and component logConfig  from backend
+// buildUpdatedLogConfig retrieve the global logConfig and component logConfig  from Backend
 // component logConfig stores the log config with precedence order
 // For example, If the global logConfig is set and component logConfig is set only for specific package then
 // component logConfig is stored with global logConfig  and component logConfig of specific package
@@ -256,7 +282,7 @@
 func (c *ComponentLogController) buildUpdatedLogConfig(ctx context.Context) (map[string]string, error) {
 	globalLogLevel, err := c.getGlobalLogConfig(ctx)
 	if err != nil {
-		log.Errorw("unable-to-retrieve-global-log-config", log.Fields{"err": err})
+		logger.Errorw("unable-to-retrieve-global-log-config", log.Fields{"err": err})
 	}
 
 	componentLogConfig, err := c.getComponentLogConfig(ctx, globalLogLevel)
@@ -286,7 +312,7 @@
 		UpdateLogLevels(logConfig)
 		c.logHash = currentLogHash
 	} else {
-		log.Debug("effective-loglevel-config-same-as-currently-active")
+		logger.Debug("effective-loglevel-config-same-as-currently-active")
 	}
 
 	return nil
@@ -313,7 +339,7 @@
 	// Log warnings for all invalid packages for which log config has been set
 	for key, value := range updatedLogLevels {
 		if _, exist := activeLogLevels[key]; !exist {
-			log.Warnw("ignoring-loglevel-set-for-invalid-package", log.Fields{"package": key, "log-level": value})
+			logger.Warnw("ignoring-loglevel-set-for-invalid-package", log.Fields{"package": key, "log-level": value})
 		}
 	}
 
@@ -330,11 +356,11 @@
 
 	// If no changed log levels are found, just return. It may happen on configuration of a invalid package
 	if len(changedLogLevels) == 0 {
-		log.Debug("no-change-in-effective-loglevel-config")
+		logger.Debug("no-change-in-effective-loglevel-config")
 		return
 	}
 
-	log.Debugw("applying-log-level-for-modified-packages", log.Fields{"changed-log-levels": changedLogLevels})
+	logger.Debugw("applying-log-level-for-modified-packages", log.Fields{"changed-log-levels": changedLogLevels})
 	for key, level := range changedLogLevels {
 		if key == defaultLogLevelKey {
 			if l, err := log.StringToLogLevel(level); err == nil {
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/backend.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/backend.go
index faa86ed..55fda64 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/backend.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/backend.go
@@ -82,7 +82,7 @@
 	case "consul":
 		return kvstore.NewConsulClient(address, timeout)
 	case "etcd":
-		return kvstore.NewEtcdClient(address, timeout)
+		return kvstore.NewEtcdClient(address, timeout, log.WarnLevel)
 	}
 	return nil, errors.New("unsupported-kv-store")
 }
@@ -222,7 +222,7 @@
 	defer b.Unlock()
 
 	formattedPath := b.makePath(key)
-	logger.Debugw("putting-key", log.Fields{"key": key, "value": value, "path": formattedPath})
+	logger.Debugw("putting-key", log.Fields{"key": key, "path": formattedPath})
 
 	err := b.Client.Put(ctx, formattedPath, value)
 
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/common.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/common.go
index a5a79ae..1cf2e1c 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/common.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/common.go
@@ -19,16 +19,12 @@
 	"github.com/opencord/voltha-lib-go/v3/pkg/log"
 )
 
-const (
-	logLevel = log.ErrorLevel
-)
-
 var logger log.Logger
 
 func init() {
 	// Setup this package so that it's log level can be modified at run time
 	var err error
-	logger, err = log.AddPackage(log.JSON, logLevel, log.Fields{"pkg": "db"})
+	logger, err = log.AddPackage(log.JSON, log.ErrorLevel, log.Fields{"pkg": "db"})
 	if err != nil {
 		panic(err)
 	}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/common.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/common.go
index 2d2a6a6..aa7aeb0 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/common.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/common.go
@@ -19,16 +19,12 @@
 	"github.com/opencord/voltha-lib-go/v3/pkg/log"
 )
 
-const (
-	logLevel = log.ErrorLevel
-)
-
 var logger log.Logger
 
 func init() {
 	// Setup this package so that it's log level can be modified at run time
 	var err error
-	logger, err = log.AddPackage(log.JSON, logLevel, log.Fields{"pkg": "kvstore"})
+	logger, err = log.AddPackage(log.JSON, log.ErrorLevel, log.Fields{"pkg": "kvstore"})
 	if err != nil {
 		panic(err)
 	}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/etcdclient.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/etcdclient.go
index d38f0f6..90158bc 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/etcdclient.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/etcdclient.go
@@ -39,12 +39,14 @@
 }
 
 // NewEtcdClient returns a new client for the Etcd KV store
-func NewEtcdClient(addr string, timeout int) (*EtcdClient, error) {
+func NewEtcdClient(addr string, timeout int, level log.LogLevel) (*EtcdClient, error) {
 	duration := GetDuration(timeout)
+	logconfig := log.ConstructZapConfig(log.JSON, level, log.Fields{})
 
 	c, err := v3Client.New(v3Client.Config{
 		Endpoints:   []string{addr},
 		DialTimeout: duration,
+		LogConfig:   &logconfig,
 	})
 	if err != nil {
 		logger.Error(err)
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/log/log.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/log/log.go
index 47fa3fb..6b7087f 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/log/log.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/log/log.go
@@ -232,6 +232,10 @@
 	}
 }
 
+func ConstructZapConfig(outputType string, level LogLevel, fields Fields) zp.Config {
+	return getDefaultConfig(outputType, level, fields)
+}
+
 // SetLogger needs to be invoked before the logger API can be invoked.  This function
 // initialize the default logger (zap's sugaredlogger)
 func SetDefaultLogger(outputType string, level LogLevel, defaultFields Fields) (Logger, error) {
@@ -499,11 +503,11 @@
 }
 
 func getPackageLevelSugaredLogger() *zp.SugaredLogger {
-	pkgName, fileName, funcName, line := getCallerInfo()
+	pkgName, _, _, _ := getCallerInfo()
 	if _, exist := loggers[pkgName]; exist {
-		return loggers[pkgName].log.With("caller", fmt.Sprintf("%s.%s:%d", fileName, funcName, line))
+		return loggers[pkgName].log
 	}
-	return defaultLogger.log.With("caller", fmt.Sprintf("%s.%s:%d", fileName, funcName, line))
+	return defaultLogger.log
 }
 
 func getPackageLevelLogger() Logger {
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/probe/common.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/probe/common.go
new file mode 100644
index 0000000..211419d
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/probe/common.go
@@ -0,0 +1,31 @@
+/*
+ * Copyright 2020-present Open Networking Foundation
+ *
+ * Licensed 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 probe
+
+import (
+	"github.com/opencord/voltha-lib-go/v3/pkg/log"
+)
+
+var logger log.Logger
+
+func init() {
+	// Setup this package so that it's log level can be modified at run time
+	var err error
+	logger, err = log.AddPackage(log.JSON, log.ErrorLevel, log.Fields{"pkg": "probe"})
+	if err != nil {
+		panic(err)
+	}
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/probe/probe.go b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/probe/probe.go
index 932c287..e89d5bc 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/probe/probe.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v3/pkg/probe/probe.go
@@ -118,7 +118,7 @@
 	for _, name := range names {
 		if _, ok := p.status[name]; !ok {
 			p.status[name] = ServiceStatusUnknown
-			log.Debugw("probe-service-registered", log.Fields{"service-name": name})
+			logger.Debugw("probe-service-registered", log.Fields{"service-name": name})
 		}
 	}
 
@@ -161,7 +161,7 @@
 	} else {
 		p.isHealthy = defaultHealthFunc(p.status)
 	}
-	log.Debugw("probe-service-status-updated",
+	logger.Debugw("probe-service-status-updated",
 		log.Fields{
 			"service-name": name,
 			"status":       status.String(),
@@ -232,21 +232,21 @@
 	defer p.mutex.RUnlock()
 	w.Header().Set("Content-Type", "application/json")
 	if _, err := w.Write([]byte("{")); err != nil {
-		log.Errorw("write-response", log.Fields{"error": err})
+		logger.Errorw("write-response", log.Fields{"error": err})
 		w.WriteHeader(http.StatusInternalServerError)
 		return
 	}
 	comma := ""
 	for c, s := range p.status {
 		if _, err := w.Write([]byte(fmt.Sprintf("%s\"%s\": \"%s\"", comma, c, s.String()))); err != nil {
-			log.Errorw("write-response", log.Fields{"error": err})
+			logger.Errorw("write-response", log.Fields{"error": err})
 			w.WriteHeader(http.StatusInternalServerError)
 			return
 		}
 		comma = ", "
 	}
 	if _, err := w.Write([]byte("}")); err != nil {
-		log.Errorw("write-response", log.Fields{"error": err})
+		logger.Errorw("write-response", log.Fields{"error": err})
 		w.WriteHeader(http.StatusInternalServerError)
 		return
 	}
@@ -269,7 +269,7 @@
 		Addr:    address,
 		Handler: mux,
 	}
-	log.Fatal(s.ListenAndServe())
+	logger.Fatal(s.ListenAndServe())
 }
 
 func (p *Probe) IsReady() bool {
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go
index 96d2f34..c4b9028 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go
@@ -42,44 +42,6 @@
 	return fileDescriptor_c2e3fd231961e826, []int{0}
 }
 
-// Logging verbosity level
-type LogLevel_Types int32
-
-const (
-	LogLevel_DEBUG    LogLevel_Types = 0
-	LogLevel_INFO     LogLevel_Types = 1
-	LogLevel_WARNING  LogLevel_Types = 2
-	LogLevel_ERROR    LogLevel_Types = 3
-	LogLevel_CRITICAL LogLevel_Types = 4
-	LogLevel_FATAL    LogLevel_Types = 5
-)
-
-var LogLevel_Types_name = map[int32]string{
-	0: "DEBUG",
-	1: "INFO",
-	2: "WARNING",
-	3: "ERROR",
-	4: "CRITICAL",
-	5: "FATAL",
-}
-
-var LogLevel_Types_value = map[string]int32{
-	"DEBUG":    0,
-	"INFO":     1,
-	"WARNING":  2,
-	"ERROR":    3,
-	"CRITICAL": 4,
-	"FATAL":    5,
-}
-
-func (x LogLevel_Types) String() string {
-	return proto.EnumName(LogLevel_Types_name, int32(x))
-}
-
-func (LogLevel_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{2, 0}
-}
-
 // Administrative State
 type AdminState_Types int32
 
@@ -122,7 +84,7 @@
 }
 
 func (AdminState_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{6, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{2, 0}
 }
 
 // Operational Status
@@ -166,7 +128,7 @@
 }
 
 func (OperStatus_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{7, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{3, 0}
 }
 
 // Connectivity Status
@@ -198,7 +160,7 @@
 }
 
 func (ConnectStatus_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{8, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{4, 0}
 }
 
 type OperationResp_OperationReturnCode int32
@@ -226,7 +188,7 @@
 }
 
 func (OperationResp_OperationReturnCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{9, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{5, 0}
 }
 
 // Convey a resource identifier
@@ -309,172 +271,6 @@
 	return nil
 }
 
-type LogLevel struct {
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *LogLevel) Reset()         { *m = LogLevel{} }
-func (m *LogLevel) String() string { return proto.CompactTextString(m) }
-func (*LogLevel) ProtoMessage()    {}
-func (*LogLevel) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{2}
-}
-
-func (m *LogLevel) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LogLevel.Unmarshal(m, b)
-}
-func (m *LogLevel) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LogLevel.Marshal(b, m, deterministic)
-}
-func (m *LogLevel) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LogLevel.Merge(m, src)
-}
-func (m *LogLevel) XXX_Size() int {
-	return xxx_messageInfo_LogLevel.Size(m)
-}
-func (m *LogLevel) XXX_DiscardUnknown() {
-	xxx_messageInfo_LogLevel.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LogLevel proto.InternalMessageInfo
-
-type Logging struct {
-	Level                LogLevel_Types `protobuf:"varint,1,opt,name=level,proto3,enum=common.LogLevel_Types" json:"level,omitempty"`
-	PackageName          string         `protobuf:"bytes,2,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"`
-	ComponentName        string         `protobuf:"bytes,3,opt,name=component_name,json=componentName,proto3" json:"component_name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
-	XXX_unrecognized     []byte         `json:"-"`
-	XXX_sizecache        int32          `json:"-"`
-}
-
-func (m *Logging) Reset()         { *m = Logging{} }
-func (m *Logging) String() string { return proto.CompactTextString(m) }
-func (*Logging) ProtoMessage()    {}
-func (*Logging) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{3}
-}
-
-func (m *Logging) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Logging.Unmarshal(m, b)
-}
-func (m *Logging) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Logging.Marshal(b, m, deterministic)
-}
-func (m *Logging) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Logging.Merge(m, src)
-}
-func (m *Logging) XXX_Size() int {
-	return xxx_messageInfo_Logging.Size(m)
-}
-func (m *Logging) XXX_DiscardUnknown() {
-	xxx_messageInfo_Logging.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Logging proto.InternalMessageInfo
-
-func (m *Logging) GetLevel() LogLevel_Types {
-	if m != nil {
-		return m.Level
-	}
-	return LogLevel_DEBUG
-}
-
-func (m *Logging) GetPackageName() string {
-	if m != nil {
-		return m.PackageName
-	}
-	return ""
-}
-
-func (m *Logging) GetComponentName() string {
-	if m != nil {
-		return m.ComponentName
-	}
-	return ""
-}
-
-// For GetLogLevels(), select component to query
-type LoggingComponent struct {
-	ComponentName        string   `protobuf:"bytes,1,opt,name=component_name,json=componentName,proto3" json:"component_name,omitempty"`
-	XXX_NoUnkeyedLiteral struct{} `json:"-"`
-	XXX_unrecognized     []byte   `json:"-"`
-	XXX_sizecache        int32    `json:"-"`
-}
-
-func (m *LoggingComponent) Reset()         { *m = LoggingComponent{} }
-func (m *LoggingComponent) String() string { return proto.CompactTextString(m) }
-func (*LoggingComponent) ProtoMessage()    {}
-func (*LoggingComponent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{4}
-}
-
-func (m *LoggingComponent) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_LoggingComponent.Unmarshal(m, b)
-}
-func (m *LoggingComponent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_LoggingComponent.Marshal(b, m, deterministic)
-}
-func (m *LoggingComponent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_LoggingComponent.Merge(m, src)
-}
-func (m *LoggingComponent) XXX_Size() int {
-	return xxx_messageInfo_LoggingComponent.Size(m)
-}
-func (m *LoggingComponent) XXX_DiscardUnknown() {
-	xxx_messageInfo_LoggingComponent.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_LoggingComponent proto.InternalMessageInfo
-
-func (m *LoggingComponent) GetComponentName() string {
-	if m != nil {
-		return m.ComponentName
-	}
-	return ""
-}
-
-// For returning multiple log levels
-type Loggings struct {
-	Items                []*Logging `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
-	XXX_unrecognized     []byte     `json:"-"`
-	XXX_sizecache        int32      `json:"-"`
-}
-
-func (m *Loggings) Reset()         { *m = Loggings{} }
-func (m *Loggings) String() string { return proto.CompactTextString(m) }
-func (*Loggings) ProtoMessage()    {}
-func (*Loggings) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{5}
-}
-
-func (m *Loggings) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Loggings.Unmarshal(m, b)
-}
-func (m *Loggings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Loggings.Marshal(b, m, deterministic)
-}
-func (m *Loggings) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Loggings.Merge(m, src)
-}
-func (m *Loggings) XXX_Size() int {
-	return xxx_messageInfo_Loggings.Size(m)
-}
-func (m *Loggings) XXX_DiscardUnknown() {
-	xxx_messageInfo_Loggings.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Loggings proto.InternalMessageInfo
-
-func (m *Loggings) GetItems() []*Logging {
-	if m != nil {
-		return m.Items
-	}
-	return nil
-}
-
 type AdminState struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -485,7 +281,7 @@
 func (m *AdminState) String() string { return proto.CompactTextString(m) }
 func (*AdminState) ProtoMessage()    {}
 func (*AdminState) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{6}
+	return fileDescriptor_c2e3fd231961e826, []int{2}
 }
 
 func (m *AdminState) XXX_Unmarshal(b []byte) error {
@@ -516,7 +312,7 @@
 func (m *OperStatus) String() string { return proto.CompactTextString(m) }
 func (*OperStatus) ProtoMessage()    {}
 func (*OperStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{7}
+	return fileDescriptor_c2e3fd231961e826, []int{3}
 }
 
 func (m *OperStatus) XXX_Unmarshal(b []byte) error {
@@ -547,7 +343,7 @@
 func (m *ConnectStatus) String() string { return proto.CompactTextString(m) }
 func (*ConnectStatus) ProtoMessage()    {}
 func (*ConnectStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{8}
+	return fileDescriptor_c2e3fd231961e826, []int{4}
 }
 
 func (m *ConnectStatus) XXX_Unmarshal(b []byte) error {
@@ -582,7 +378,7 @@
 func (m *OperationResp) String() string { return proto.CompactTextString(m) }
 func (*OperationResp) ProtoMessage()    {}
 func (*OperationResp) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{9}
+	return fileDescriptor_c2e3fd231961e826, []int{5}
 }
 
 func (m *OperationResp) XXX_Unmarshal(b []byte) error {
@@ -619,17 +415,12 @@
 
 func init() {
 	proto.RegisterEnum("common.TestModeKeys", TestModeKeys_name, TestModeKeys_value)
-	proto.RegisterEnum("common.LogLevel_Types", LogLevel_Types_name, LogLevel_Types_value)
 	proto.RegisterEnum("common.AdminState_Types", AdminState_Types_name, AdminState_Types_value)
 	proto.RegisterEnum("common.OperStatus_Types", OperStatus_Types_name, OperStatus_Types_value)
 	proto.RegisterEnum("common.ConnectStatus_Types", ConnectStatus_Types_name, ConnectStatus_Types_value)
 	proto.RegisterEnum("common.OperationResp_OperationReturnCode", OperationResp_OperationReturnCode_name, OperationResp_OperationReturnCode_value)
 	proto.RegisterType((*ID)(nil), "common.ID")
 	proto.RegisterType((*IDs)(nil), "common.IDs")
-	proto.RegisterType((*LogLevel)(nil), "common.LogLevel")
-	proto.RegisterType((*Logging)(nil), "common.Logging")
-	proto.RegisterType((*LoggingComponent)(nil), "common.LoggingComponent")
-	proto.RegisterType((*Loggings)(nil), "common.Loggings")
 	proto.RegisterType((*AdminState)(nil), "common.AdminState")
 	proto.RegisterType((*OperStatus)(nil), "common.OperStatus")
 	proto.RegisterType((*ConnectStatus)(nil), "common.ConnectStatus")
@@ -639,45 +430,35 @@
 func init() { proto.RegisterFile("voltha_protos/common.proto", fileDescriptor_c2e3fd231961e826) }
 
 var fileDescriptor_c2e3fd231961e826 = []byte{
-	// 640 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x53, 0x5d, 0x4f, 0xdb, 0x4a,
-	0x10, 0x8d, 0x9d, 0x2f, 0x98, 0x90, 0xb0, 0x77, 0xb9, 0x5c, 0x71, 0xab, 0x3e, 0x50, 0x4b, 0x08,
-	0x5a, 0xb5, 0x89, 0x0a, 0x7d, 0xe9, 0x43, 0x1f, 0x8c, 0xbd, 0xa4, 0x2b, 0xcc, 0x3a, 0x5a, 0x3b,
-	0xa0, 0xf6, 0xa1, 0x91, 0x89, 0x17, 0x63, 0x35, 0xf1, 0x5a, 0xb1, 0x83, 0xc4, 0x63, 0x7f, 0x65,
-	0xff, 0x4e, 0xb5, 0xfe, 0x28, 0x20, 0xe5, 0x71, 0xce, 0x9c, 0xd9, 0x33, 0x73, 0x66, 0x07, 0x5e,
-	0x3d, 0xc8, 0x45, 0x7e, 0x1f, 0xcc, 0xd2, 0x95, 0xcc, 0x65, 0x36, 0x9a, 0xcb, 0xe5, 0x52, 0x26,
-	0xc3, 0x22, 0xc2, 0x9d, 0x32, 0x32, 0xfe, 0x05, 0x9d, 0xda, 0x78, 0x00, 0x7a, 0x1c, 0x1e, 0x68,
-	0x87, 0xda, 0xc9, 0x36, 0xd7, 0xe3, 0xd0, 0x38, 0x86, 0x26, 0xb5, 0x33, 0x7c, 0x08, 0xed, 0x38,
-	0x17, 0xcb, 0xec, 0x40, 0x3b, 0x6c, 0x9e, 0xf4, 0x4e, 0x61, 0x58, 0x3d, 0x41, 0x6d, 0x5e, 0x26,
-	0x8c, 0x6f, 0xb0, 0xe5, 0xc8, 0xc8, 0x11, 0x0f, 0x62, 0x61, 0x5c, 0x41, 0xdb, 0x7f, 0x4c, 0x45,
-	0x86, 0xb7, 0xa1, 0x6d, 0x93, 0xf3, 0xe9, 0x18, 0x35, 0xf0, 0x16, 0xb4, 0x28, 0xbb, 0x70, 0x91,
-	0x86, 0x7b, 0xd0, 0xbd, 0x31, 0x39, 0xa3, 0x6c, 0x8c, 0x74, 0xc5, 0x20, 0x9c, 0xbb, 0x1c, 0x35,
-	0xf1, 0x0e, 0x6c, 0x59, 0x9c, 0xfa, 0xd4, 0x32, 0x1d, 0xd4, 0x52, 0x89, 0x0b, 0xd3, 0x37, 0x1d,
-	0xd4, 0x36, 0x7e, 0x69, 0xd0, 0x75, 0x64, 0x14, 0xc5, 0x49, 0x84, 0xdf, 0x43, 0x7b, 0xa1, 0x34,
-	0x8a, 0x16, 0x07, 0xa7, 0xff, 0xd5, 0x8d, 0xd4, 0xda, 0xc3, 0x42, 0x98, 0x97, 0x24, 0xfc, 0x06,
-	0x76, 0xd2, 0x60, 0xfe, 0x33, 0x88, 0xc4, 0x2c, 0x09, 0x96, 0xe2, 0x40, 0x2f, 0xe6, 0xea, 0x55,
-	0x18, 0x0b, 0x96, 0x02, 0x1f, 0xc1, 0x60, 0x2e, 0x97, 0xa9, 0x4c, 0x44, 0x92, 0x97, 0xa4, 0x66,
-	0x41, 0xea, 0xff, 0x45, 0x15, 0xcd, 0xf8, 0x0c, 0xa8, 0x6a, 0xc1, 0xaa, 0xf1, 0x0d, 0xa5, 0xda,
-	0xa6, 0xd2, 0x8f, 0x85, 0x33, 0xaa, 0x34, 0xc3, 0x47, 0x2f, 0x7d, 0xdc, 0x7d, 0xd6, 0xbe, 0x22,
-	0xd4, 0x66, 0xae, 0x01, 0xcc, 0x70, 0x19, 0x27, 0x5e, 0x1e, 0xe4, 0xc2, 0x88, 0x6a, 0x3b, 0x7b,
-	0xd0, 0x9d, 0xb2, 0x4b, 0xe6, 0xde, 0x30, 0xd4, 0xc0, 0x18, 0x06, 0x13, 0x4e, 0x26, 0xdc, 0xbd,
-	0xa6, 0x1e, 0x75, 0x19, 0xb1, 0x4b, 0x6b, 0x09, 0x33, 0xcf, 0x1d, 0x62, 0x23, 0x5d, 0xf9, 0x69,
-	0x53, 0xaf, 0x8c, 0x9a, 0x78, 0x1f, 0xfe, 0xb1, 0xdd, 0x1b, 0xe6, 0xb8, 0xa6, 0x4d, 0xd9, 0x78,
-	0x46, 0xaf, 0xcc, 0x31, 0x41, 0x2d, 0x55, 0x61, 0x13, 0x87, 0xf8, 0xc4, 0x46, 0x6d, 0x23, 0x02,
-	0x70, 0x53, 0xb1, 0x52, 0xaa, 0x6b, 0xb5, 0xd1, 0x4d, 0xb2, 0x03, 0x00, 0x9b, 0x7a, 0x96, 0x7b,
-	0x4d, 0x78, 0x21, 0x39, 0x00, 0x30, 0x2d, 0x9f, 0x5e, 0x9b, 0x7e, 0xb9, 0xd0, 0x1e, 0x74, 0x7d,
-	0xe2, 0x15, 0x41, 0x13, 0x03, 0x74, 0x8a, 0xa4, 0x52, 0x02, 0xe8, 0x5c, 0x98, 0xd4, 0x29, 0x84,
-	0x08, 0xf4, 0x2d, 0x99, 0x24, 0x62, 0x9e, 0x57, 0x5a, 0x9f, 0x36, 0x6a, 0xed, 0x42, 0x6f, 0xca,
-	0x38, 0x31, 0xad, 0xaf, 0x6a, 0x0a, 0xa4, 0xe1, 0x3e, 0x6c, 0x3f, 0x85, 0xba, 0xf1, 0x5b, 0x83,
-	0xbe, 0x6a, 0x38, 0xc8, 0x63, 0x99, 0x70, 0x91, 0xa5, 0xf8, 0x0b, 0xb4, 0xe6, 0x32, 0x14, 0xd5,
-	0xef, 0x78, 0x5b, 0xdb, 0xfb, 0x82, 0xf4, 0x3c, 0xca, 0xd7, 0xab, 0xc4, 0x92, 0xa1, 0xe0, 0x45,
-	0x19, 0x3e, 0x86, 0xdd, 0x20, 0x0c, 0x63, 0x95, 0x0b, 0x16, 0xb3, 0x38, 0xb9, 0x93, 0xd5, 0x97,
-	0x19, 0x3c, 0xc1, 0x34, 0xb9, 0x93, 0xc6, 0x0f, 0xd8, 0xdb, 0xf0, 0x8a, 0x32, 0xd9, 0x9d, 0x10,
-	0x6e, 0xfa, 0xd4, 0x65, 0x33, 0x6f, 0x6a, 0x59, 0xc4, 0xf3, 0x50, 0xe3, 0x25, 0xac, 0x4c, 0x98,
-	0x72, 0x35, 0xcd, 0xff, 0xb0, 0xff, 0x04, 0x4f, 0x99, 0x37, 0x9d, 0x4c, 0x5c, 0xae, 0x36, 0xa1,
-	0xbf, 0x7b, 0x0d, 0x3b, 0xbe, 0xc8, 0xf2, 0x2b, 0x19, 0x8a, 0x4b, 0xf1, 0x98, 0xa9, 0x5d, 0x06,
-	0x69, 0x3c, 0xcb, 0x45, 0x96, 0xa3, 0xc6, 0x39, 0x81, 0x3d, 0xb9, 0x8a, 0x86, 0x32, 0x15, 0xc9,
-	0x5c, 0xae, 0xc2, 0x61, 0x79, 0xdd, 0xdf, 0x87, 0x51, 0x9c, 0xdf, 0xaf, 0x6f, 0xd5, 0xd0, 0xa3,
-	0x3a, 0x37, 0x2a, 0x73, 0x1f, 0xaa, 0xcb, 0x7f, 0x38, 0x1b, 0x45, 0xb2, 0xba, 0xff, 0xdb, 0x4e,
-	0x01, 0x9e, 0xfd, 0x09, 0x00, 0x00, 0xff, 0xff, 0x80, 0xbf, 0xca, 0x42, 0x1e, 0x04, 0x00, 0x00,
+	// 480 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x52, 0xd1, 0x4e, 0xdb, 0x30,
+	0x14, 0x6d, 0x52, 0xda, 0x8d, 0x5b, 0x1a, 0x32, 0x33, 0xa4, 0x6e, 0xda, 0x43, 0x95, 0x17, 0xd8,
+	0xa4, 0xb5, 0x12, 0xec, 0x75, 0x0f, 0x21, 0xf6, 0x3a, 0x8b, 0x62, 0x57, 0x4e, 0x52, 0xb4, 0x3d,
+	0xac, 0x0a, 0x8d, 0x29, 0x91, 0x68, 0x1c, 0x25, 0x2e, 0x12, 0x5f, 0xba, 0xdf, 0x99, 0x9c, 0x14,
+	0x75, 0x48, 0x7d, 0x3c, 0xe7, 0x5c, 0xdf, 0xe3, 0x7b, 0xee, 0x85, 0x8f, 0x4f, 0xea, 0x51, 0x3f,
+	0x24, 0x8b, 0xa2, 0x54, 0x5a, 0x55, 0xe3, 0xa5, 0x5a, 0xaf, 0x55, 0x3e, 0xaa, 0x11, 0xea, 0x36,
+	0xc8, 0x7b, 0x0f, 0x36, 0xc5, 0xc8, 0x01, 0x3b, 0x4b, 0x07, 0xd6, 0xd0, 0x3a, 0x3f, 0x14, 0x76,
+	0x96, 0x7a, 0x67, 0xd0, 0xa6, 0xb8, 0x42, 0x43, 0xe8, 0x64, 0x5a, 0xae, 0xab, 0x81, 0x35, 0x6c,
+	0x9f, 0xf7, 0x2e, 0x60, 0xb4, 0x6d, 0x41, 0xb1, 0x68, 0x04, 0x6f, 0x03, 0xe0, 0xa7, 0xeb, 0x2c,
+	0x0f, 0x75, 0xa2, 0xa5, 0xb7, 0x82, 0x4e, 0xf4, 0x5c, 0xc8, 0x0a, 0xf5, 0xe0, 0x4d, 0xcc, 0xae,
+	0x19, 0xbf, 0x65, 0x6e, 0x0b, 0x21, 0x70, 0x66, 0x82, 0xcc, 0x04, 0x9f, 0xd3, 0x90, 0x72, 0x46,
+	0xb0, 0x6b, 0x99, 0x02, 0xc2, 0xfc, 0xab, 0x29, 0xc1, 0xae, 0x8d, 0x8e, 0xe0, 0x2d, 0xa6, 0x61,
+	0x83, 0xda, 0xe8, 0x14, 0xde, 0x61, 0x7e, 0xcb, 0xa6, 0xdc, 0xc7, 0x94, 0x4d, 0x16, 0xf4, 0xc6,
+	0x9f, 0x10, 0xf7, 0xc0, 0xbc, 0xc0, 0x64, 0x4a, 0x22, 0x82, 0xdd, 0x8e, 0xb7, 0x02, 0xe0, 0x85,
+	0x2c, 0x8d, 0xeb, 0xa6, 0xf2, 0x7e, 0xed, 0xb5, 0x75, 0x00, 0x30, 0x0d, 0x03, 0x3e, 0x27, 0xa2,
+	0xb6, 0x74, 0x00, 0xfc, 0x20, 0xa2, 0x73, 0x3f, 0xa2, 0x6c, 0xe2, 0xda, 0xa6, 0x38, 0x22, 0x61,
+	0x0d, 0xda, 0x08, 0xa0, 0x5b, 0x8b, 0xc6, 0x09, 0xa0, 0xfb, 0xc3, 0xa7, 0xd3, 0xda, 0x88, 0x40,
+	0x3f, 0x50, 0x79, 0x2e, 0x97, 0x7a, 0xeb, 0xf5, 0x6d, 0xaf, 0xd7, 0x31, 0xf4, 0x62, 0x26, 0x88,
+	0x1f, 0xfc, 0x34, 0x53, 0xb8, 0x16, 0xea, 0xc3, 0xe1, 0x0e, 0xda, 0xde, 0x5f, 0x0b, 0xfa, 0xe6,
+	0xc3, 0x89, 0xce, 0x54, 0x2e, 0x64, 0x55, 0xa0, 0xef, 0x70, 0xb0, 0x54, 0xa9, 0xac, 0x33, 0x77,
+	0x2e, 0x3e, 0xbf, 0x24, 0xfb, 0xaa, 0xe8, 0x7f, 0xa4, 0x37, 0x65, 0x1e, 0xa8, 0x54, 0x8a, 0xfa,
+	0x19, 0x3a, 0x83, 0xe3, 0x24, 0x4d, 0x33, 0xa3, 0x25, 0x8f, 0x8b, 0x2c, 0xbf, 0x57, 0x03, 0xbb,
+	0xde, 0x9e, 0xb3, 0xa3, 0x69, 0x7e, 0xaf, 0xbc, 0x3f, 0x70, 0xb2, 0xa7, 0x8b, 0x09, 0x99, 0xcf,
+	0x88, 0xf0, 0x23, 0xca, 0xd9, 0x22, 0x8c, 0x83, 0x80, 0x84, 0xa1, 0xdb, 0x7a, 0x4d, 0x9b, 0x10,
+	0x62, 0x61, 0xa6, 0xf9, 0x00, 0xa7, 0x3b, 0x3a, 0x66, 0x61, 0x3c, 0x9b, 0x71, 0x61, 0x36, 0x61,
+	0x7f, 0xf9, 0x04, 0x47, 0x91, 0xac, 0xf4, 0x8d, 0x4a, 0xe5, 0xb5, 0x7c, 0xae, 0xcc, 0x2e, 0x93,
+	0x22, 0x5b, 0x68, 0x59, 0x69, 0xb7, 0x75, 0x45, 0xe0, 0x44, 0x95, 0xab, 0x91, 0x2a, 0x64, 0xbe,
+	0x54, 0x65, 0x3a, 0x6a, 0x0e, 0xf2, 0xf7, 0x68, 0x95, 0xe9, 0x87, 0xcd, 0x9d, 0x19, 0x7a, 0xfc,
+	0xa2, 0x8d, 0x1b, 0xed, 0xeb, 0xf6, 0x58, 0x9f, 0x2e, 0xc7, 0x2b, 0xb5, 0x3d, 0xd9, 0xbb, 0x6e,
+	0x4d, 0x5e, 0xfe, 0x0b, 0x00, 0x00, 0xff, 0xff, 0xd2, 0x21, 0x5c, 0x35, 0xd1, 0x02, 0x00, 0x00,
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/adapter.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/adapter.pb.go
index 1f24221..9359dc1 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/adapter.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/adapter.pb.go
@@ -8,7 +8,7 @@
 	proto "github.com/golang/protobuf/proto"
 	any "github.com/golang/protobuf/ptypes/any"
 	timestamp "github.com/golang/protobuf/ptypes/timestamp"
-	common "github.com/opencord/voltha-protos/v3/go/common"
+	_ "github.com/opencord/voltha-protos/v3/go/common"
 	math "math"
 )
 
@@ -24,8 +24,6 @@
 const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type AdapterConfig struct {
-	// Common adapter config attributes here
-	LogLevel common.LogLevel_Types `protobuf:"varint,1,opt,name=log_level,json=logLevel,proto3,enum=common.LogLevel_Types" json:"log_level,omitempty"`
 	// Custom (vendor-specific) configuration attributes
 	AdditionalConfig     *any.Any `protobuf:"bytes,64,opt,name=additional_config,json=additionalConfig,proto3" json:"additional_config,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -58,13 +56,6 @@
 
 var xxx_messageInfo_AdapterConfig proto.InternalMessageInfo
 
-func (m *AdapterConfig) GetLogLevel() common.LogLevel_Types {
-	if m != nil {
-		return m.LogLevel
-	}
-	return common.LogLevel_DEBUG
-}
-
 func (m *AdapterConfig) GetAdditionalConfig() *any.Any {
 	if m != nil {
 		return m.AdditionalConfig
@@ -74,8 +65,8 @@
 
 // Adapter (software plugin)
 type Adapter struct {
-	// Unique name of adapter, matching the python package name under
-	// voltha/adapters.
+	// the adapter ID has to be unique,
+	// it will be generated as Type + CurrentReplica
 	Id      string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
 	Vendor  string `protobuf:"bytes,2,opt,name=vendor,proto3" json:"vendor,omitempty"`
 	Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
@@ -85,10 +76,16 @@
 	AdditionalDescription *any.Any `protobuf:"bytes,64,opt,name=additional_description,json=additionalDescription,proto3" json:"additional_description,omitempty"`
 	LogicalDeviceIds      []string `protobuf:"bytes,4,rep,name=logical_device_ids,json=logicalDeviceIds,proto3" json:"logical_device_ids,omitempty"`
 	// timestamp when the adapter last sent a message to the core
-	LastCommunication    *timestamp.Timestamp `protobuf:"bytes,5,opt,name=last_communication,json=lastCommunication,proto3" json:"last_communication,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	LastCommunication *timestamp.Timestamp `protobuf:"bytes,5,opt,name=last_communication,json=lastCommunication,proto3" json:"last_communication,omitempty"`
+	CurrentReplica    int32                `protobuf:"varint,6,opt,name=currentReplica,proto3" json:"currentReplica,omitempty"`
+	TotalReplicas     int32                `protobuf:"varint,7,opt,name=totalReplicas,proto3" json:"totalReplicas,omitempty"`
+	Endpoint          string               `protobuf:"bytes,8,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
+	// all replicas of the same adapter will have the same type
+	// it is used to associate a device to an adapter
+	Type                 string   `protobuf:"bytes,9,opt,name=type,proto3" json:"type,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
 }
 
 func (m *Adapter) Reset()         { *m = Adapter{} }
@@ -165,6 +162,34 @@
 	return nil
 }
 
+func (m *Adapter) GetCurrentReplica() int32 {
+	if m != nil {
+		return m.CurrentReplica
+	}
+	return 0
+}
+
+func (m *Adapter) GetTotalReplicas() int32 {
+	if m != nil {
+		return m.TotalReplicas
+	}
+	return 0
+}
+
+func (m *Adapter) GetEndpoint() string {
+	if m != nil {
+		return m.Endpoint
+	}
+	return ""
+}
+
+func (m *Adapter) GetType() string {
+	if m != nil {
+		return m.Type
+	}
+	return ""
+}
+
 type Adapters struct {
 	Items                []*Adapter `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
@@ -213,33 +238,34 @@
 func init() { proto.RegisterFile("voltha_protos/adapter.proto", fileDescriptor_7e998ce153307274) }
 
 var fileDescriptor_7e998ce153307274 = []byte{
-	// 439 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x52, 0xdd, 0x6a, 0xdb, 0x30,
-	0x14, 0xc6, 0xc9, 0x92, 0x36, 0x2a, 0xdd, 0x52, 0x6d, 0x29, 0x5e, 0x46, 0x69, 0x08, 0x0c, 0x72,
-	0xb1, 0xca, 0x2c, 0x79, 0x81, 0x25, 0xed, 0x4d, 0xa1, 0x57, 0x26, 0xec, 0x62, 0x37, 0x46, 0xb1,
-	0x54, 0x55, 0x20, 0xeb, 0x18, 0x4b, 0x31, 0xe4, 0x09, 0xf6, 0x74, 0x7b, 0x83, 0x3d, 0xc0, 0x9e,
-	0x60, 0xd7, 0xc3, 0x92, 0x4c, 0x7e, 0x06, 0xbd, 0x32, 0xe7, 0xfb, 0xbe, 0x73, 0xbe, 0xef, 0x1c,
-	0x0b, 0x7d, 0xaa, 0x41, 0xd9, 0x17, 0x9a, 0x95, 0x15, 0x58, 0x30, 0x09, 0x65, 0xb4, 0xb4, 0xbc,
-	0x22, 0xae, 0xc4, 0x7d, 0x4f, 0x8e, 0x3f, 0x0a, 0x00, 0xa1, 0x78, 0xe2, 0xd0, 0xcd, 0xf6, 0x39,
-	0xa1, 0x7a, 0xe7, 0x25, 0xe3, 0xf1, 0x71, 0x7f, 0x0e, 0x45, 0x01, 0x3a, 0x70, 0xf1, 0x31, 0x57,
-	0x70, 0x4b, 0x03, 0x73, 0x7b, 0x3a, 0xd0, 0xca, 0x82, 0x1b, 0x4b, 0x8b, 0xd2, 0x0b, 0xa6, 0x3f,
-	0x23, 0x74, 0xb9, 0xf4, 0x59, 0xee, 0x41, 0x3f, 0x4b, 0x81, 0x17, 0x68, 0xa0, 0x40, 0x64, 0x8a,
-	0xd7, 0x5c, 0xc5, 0xd1, 0x24, 0x9a, 0xbd, 0x9d, 0x5f, 0x93, 0x60, 0xf7, 0x04, 0xe2, 0xa9, 0xc1,
-	0xc9, 0x7a, 0x57, 0x72, 0x93, 0x9e, 0xab, 0x50, 0xe3, 0x25, 0xba, 0xa2, 0x8c, 0x49, 0x2b, 0x41,
-	0x53, 0x95, 0xe5, 0x6e, 0x52, 0xfc, 0x6d, 0x12, 0xcd, 0x2e, 0xe6, 0x1f, 0x88, 0xcf, 0x40, 0xda,
-	0x0c, 0x64, 0xa9, 0x77, 0xe9, 0x70, 0x2f, 0xf7, 0xbe, 0xd3, 0xdf, 0x1d, 0x74, 0x16, 0x92, 0xe0,
-	0x11, 0xea, 0x48, 0xe6, 0xcc, 0x07, 0xab, 0xde, 0x9f, 0xbf, 0xbf, 0x6e, 0xa2, 0xb4, 0x23, 0x19,
-	0xbe, 0x41, 0xfd, 0x9a, 0x6b, 0x06, 0x55, 0xdc, 0x39, 0xa4, 0x02, 0x88, 0x6f, 0xd1, 0x59, 0xcd,
-	0x2b, 0x23, 0x41, 0xc7, 0xdd, 0x43, 0xbe, 0x45, 0xf1, 0x1d, 0xea, 0x87, 0x68, 0x43, 0x17, 0x6d,
-	0x44, 0xfc, 0xe1, 0xc8, 0xd1, 0x05, 0xd2, 0x20, 0xc2, 0x29, 0xba, 0x3e, 0x58, 0x8a, 0x71, 0x93,
-	0x57, 0xb2, 0x6c, 0xaa, 0xd7, 0x36, 0x6b, 0x4d, 0x47, 0xfb, 0xd6, 0x87, 0x7d, 0x27, 0xfe, 0x82,
-	0xb0, 0x02, 0x21, 0x73, 0x37, 0xb0, 0x96, 0x39, 0xcf, 0x24, 0x33, 0xf1, 0x9b, 0x49, 0x77, 0x36,
-	0x48, 0x87, 0x81, 0x79, 0x70, 0xc4, 0x23, 0x33, 0xf8, 0x11, 0x61, 0x45, 0x8d, 0xcd, 0x9a, 0xf3,
-	0x6f, 0xb5, 0xcc, 0xa9, 0x73, 0xef, 0x39, 0xf7, 0xf1, 0x7f, 0xee, 0xeb, 0xf6, 0xdf, 0xa6, 0x57,
-	0x4d, 0xd7, 0xfd, 0x61, 0xd3, 0xf4, 0x2b, 0x3a, 0x0f, 0x5b, 0x1a, 0xfc, 0x19, 0xf5, 0xa4, 0xe5,
-	0x85, 0x89, 0xa3, 0x49, 0x77, 0x76, 0x31, 0x7f, 0x77, 0x72, 0x86, 0xd4, 0xb3, 0xab, 0x35, 0x7a,
-	0x0f, 0x95, 0x20, 0x50, 0x72, 0x9d, 0x43, 0xc5, 0x82, 0x6a, 0x75, 0xf9, 0xdd, 0x7d, 0x83, 0xf8,
-	0x07, 0x11, 0xd2, 0xbe, 0x6c, 0x37, 0xcd, 0x13, 0x49, 0x5a, 0x69, 0xe2, 0xa5, 0x77, 0xe1, 0x41,
-	0xd6, 0x8b, 0x44, 0x40, 0xc0, 0x36, 0x7d, 0x07, 0x2e, 0xfe, 0x05, 0x00, 0x00, 0xff, 0xff, 0x4d,
-	0xb1, 0x4a, 0xa8, 0x11, 0x03, 0x00, 0x00,
+	// 463 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x52, 0xdd, 0x6e, 0xd3, 0x30,
+	0x14, 0x56, 0xda, 0x35, 0x6d, 0x3d, 0x15, 0x3a, 0x43, 0x91, 0x09, 0x9a, 0x16, 0x55, 0x80, 0x72,
+	0xc1, 0x12, 0xb1, 0xbd, 0x00, 0xed, 0x76, 0xb3, 0x5b, 0x6b, 0xe2, 0x82, 0x9b, 0xca, 0xb5, 0xbd,
+	0xcc, 0x52, 0xe2, 0x13, 0xc5, 0x6e, 0xa4, 0x3e, 0x24, 0x2f, 0xc0, 0x13, 0xf0, 0x04, 0x5c, 0xa3,
+	0x3a, 0x0e, 0xfd, 0x41, 0xda, 0x55, 0x72, 0xbe, 0xef, 0x3b, 0xdf, 0xf9, 0x33, 0xfa, 0xd0, 0x40,
+	0x61, 0x9f, 0xd9, 0xaa, 0xaa, 0xc1, 0x82, 0xc9, 0x98, 0x60, 0x95, 0x95, 0x75, 0xea, 0x42, 0x1c,
+	0xb6, 0x64, 0xf4, 0x3e, 0x07, 0xc8, 0x0b, 0x99, 0x39, 0x74, 0xbd, 0x79, 0xca, 0x98, 0xde, 0xb6,
+	0x92, 0x28, 0x3a, 0xce, 0xe7, 0x50, 0x96, 0xa0, 0x3d, 0x47, 0x8e, 0xb9, 0x52, 0x5a, 0xe6, 0x99,
+	0xab, 0x53, 0x43, 0xab, 0x4a, 0x69, 0x2c, 0x2b, 0xab, 0x56, 0x30, 0xa7, 0x68, 0xb2, 0x68, 0x5b,
+	0xb9, 0x03, 0xfd, 0xa4, 0x72, 0xbc, 0x40, 0x17, 0x4c, 0x08, 0x65, 0x15, 0x68, 0x56, 0xac, 0xb8,
+	0x03, 0xc9, 0xb7, 0x38, 0x48, 0xce, 0x6f, 0xde, 0xa6, 0xad, 0x5b, 0xda, 0xb9, 0xa5, 0x0b, 0xbd,
+	0xa5, 0xd3, 0xbd, 0xbc, 0xb5, 0x98, 0xff, 0xea, 0xa3, 0xa1, 0x37, 0xc5, 0x33, 0xd4, 0x53, 0x82,
+	0x04, 0x71, 0x90, 0x8c, 0x97, 0x83, 0xdf, 0x7f, 0x7e, 0x5e, 0x06, 0xb4, 0xa7, 0x04, 0xbe, 0x44,
+	0x61, 0x23, 0xb5, 0x80, 0x9a, 0xf4, 0x0e, 0x29, 0x0f, 0xe2, 0x2b, 0x34, 0x6c, 0x64, 0x6d, 0x14,
+	0x68, 0xd2, 0x3f, 0xe4, 0x3b, 0x14, 0x5f, 0xa3, 0xd0, 0xb7, 0x36, 0x75, 0xad, 0xcd, 0xd2, 0x76,
+	0x05, 0xe9, 0xd1, 0x30, 0xd4, 0x8b, 0x30, 0x45, 0xef, 0x0e, 0x86, 0x12, 0xd2, 0xf0, 0x5a, 0x55,
+	0xbb, 0xe8, 0xa5, 0xc9, 0xba, 0xa2, 0xb3, 0x7d, 0xea, 0xfd, 0x3e, 0x13, 0x7f, 0x41, 0xb8, 0x80,
+	0x5c, 0x71, 0x67, 0xd8, 0x28, 0x2e, 0x57, 0x4a, 0x18, 0x72, 0x16, 0xf7, 0x93, 0x31, 0x9d, 0x7a,
+	0xe6, 0xde, 0x11, 0x0f, 0xc2, 0xe0, 0x07, 0x84, 0x0b, 0x66, 0xec, 0x6a, 0x77, 0xb7, 0x8d, 0x56,
+	0x9c, 0xb9, 0xea, 0x03, 0x57, 0x3d, 0xfa, 0xaf, 0xfa, 0x63, 0x77, 0x25, 0x7a, 0xb1, 0xcb, 0xba,
+	0x3b, 0x4c, 0xc2, 0x9f, 0xd1, 0x2b, 0xbe, 0xa9, 0x6b, 0xa9, 0x2d, 0x95, 0x55, 0xa1, 0x38, 0x23,
+	0x61, 0x1c, 0x24, 0x03, 0x7a, 0x82, 0xe2, 0x8f, 0x68, 0x62, 0xc1, 0xb2, 0xc2, 0xc7, 0x86, 0x0c,
+	0x9d, 0xec, 0x18, 0xc4, 0x11, 0x1a, 0x49, 0x2d, 0x2a, 0x50, 0xda, 0x92, 0xd1, 0x6e, 0xd7, 0xf4,
+	0x5f, 0x8c, 0x31, 0x3a, 0xb3, 0xdb, 0x4a, 0x92, 0xb1, 0xc3, 0xdd, 0xff, 0xfc, 0x2b, 0x1a, 0xf9,
+	0x1d, 0x1b, 0xfc, 0x09, 0x0d, 0x94, 0x95, 0xa5, 0x21, 0x41, 0xdc, 0x4f, 0xce, 0x6f, 0x5e, 0x9f,
+	0x1c, 0x81, 0xb6, 0xec, 0xf2, 0x11, 0xbd, 0x81, 0x3a, 0x4f, 0xa1, 0x92, 0x9a, 0x43, 0x2d, 0xbc,
+	0x6a, 0x39, 0xf9, 0xee, 0xbe, 0x5e, 0xfc, 0x23, 0xcd, 0x95, 0x7d, 0xde, 0xac, 0x53, 0x0e, 0x65,
+	0xd6, 0x49, 0xb3, 0x56, 0x7a, 0xed, 0x1f, 0x76, 0x73, 0x9b, 0xe5, 0xe0, 0xb1, 0x75, 0xe8, 0xc0,
+	0xdb, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xef, 0x64, 0x5e, 0x10, 0x59, 0x03, 0x00, 0x00,
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/events.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/events.pb.go
index 7f6a921..fd6eba6 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/events.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/events.pb.go
@@ -437,6 +437,7 @@
 	SerialNo             string            `protobuf:"bytes,4,opt,name=serial_no,json=serialNo,proto3" json:"serial_no,omitempty"`
 	DeviceId             string            `protobuf:"bytes,5,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
 	Context              map[string]string `protobuf:"bytes,6,rep,name=context,proto3" json:"context,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+	Uuid                 string            `protobuf:"bytes,7,opt,name=uuid,proto3" json:"uuid,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
 	XXX_unrecognized     []byte            `json:"-"`
 	XXX_sizecache        int32             `json:"-"`
@@ -509,6 +510,13 @@
 	return nil
 }
 
+func (m *MetricMetaData) GetUuid() string {
+	if m != nil {
+		return m.Uuid
+	}
+	return ""
+}
+
 //
 // Struct to convey a dictionary of metric->value pairs. Typically used in
 // pure shared-timestamp or shared-timestamp + shared object prefix situations.
@@ -1453,91 +1461,92 @@
 func init() { proto.RegisterFile("voltha_protos/events.proto", fileDescriptor_e63e6c07044fd2c4) }
 
 var fileDescriptor_e63e6c07044fd2c4 = []byte{
-	// 1374 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0x5f, 0x73, 0xdb, 0x44,
-	0x10, 0xb7, 0xe4, 0x3f, 0xb1, 0x57, 0x4e, 0xa2, 0x5c, 0x19, 0x30, 0x6e, 0x69, 0x83, 0x18, 0x3a,
-	0x99, 0x76, 0xb0, 0xc1, 0x61, 0xa6, 0x69, 0x0a, 0x03, 0xae, 0x23, 0x1a, 0xb5, 0xb5, 0x1c, 0x64,
-	0x27, 0x1d, 0x78, 0xf1, 0x5c, 0xac, 0x8b, 0xad, 0x89, 0x6d, 0x79, 0xa4, 0xb3, 0x69, 0x3e, 0x00,
-	0xcf, 0x3c, 0xf2, 0xc0, 0x77, 0xe1, 0x8d, 0x8f, 0xc1, 0xf0, 0x25, 0xf8, 0x00, 0xcc, 0xfd, 0x91,
-	0x25, 0x39, 0x2e, 0x7d, 0xc8, 0x14, 0x9e, 0x7c, 0xda, 0xdb, 0xdf, 0xee, 0x6f, 0x77, 0x6f, 0xf7,
-	0xce, 0x50, 0x5d, 0xf8, 0x63, 0x3a, 0xc2, 0xfd, 0x59, 0xe0, 0x53, 0x3f, 0xac, 0x93, 0x05, 0x99,
-	0xd2, 0xb0, 0xc6, 0xbf, 0x50, 0x41, 0xec, 0x55, 0x2b, 0x69, 0x9d, 0x09, 0xa1, 0x58, 0x68, 0x54,
-	0xef, 0x0c, 0x7d, 0x7f, 0x38, 0x26, 0x75, 0x3c, 0xf3, 0xea, 0x78, 0x3a, 0xf5, 0x29, 0xa6, 0x9e,
-	0x3f, 0x95, 0xf8, 0xea, 0x3d, 0xb9, 0xcb, 0xbf, 0xce, 0xe7, 0x17, 0x75, 0xea, 0x4d, 0x48, 0x48,
-	0xf1, 0x64, 0x26, 0x14, 0x8c, 0x27, 0xb0, 0xdd, 0xf2, 0xa7, 0x17, 0xde, 0xd0, 0x64, 0x6e, 0x7b,
-	0x57, 0x33, 0x62, 0xec, 0x41, 0x9e, 0xfd, 0x86, 0x68, 0x03, 0xb2, 0xd8, 0x75, 0xf5, 0x0c, 0x02,
-	0x28, 0x04, 0x64, 0xe2, 0x2f, 0x88, 0xae, 0xb0, 0xf5, 0x7c, 0xe6, 0x62, 0x4a, 0x74, 0xd5, 0x18,
-	0x81, 0x96, 0x00, 0xa3, 0x2f, 0x20, 0x47, 0xaf, 0x66, 0xa4, 0xa2, 0xec, 0x2a, 0x7b, 0x5b, 0x8d,
-	0x8f, 0x6a, 0x82, 0x73, 0x6d, 0xc5, 0x7e, 0x8d, 0x1b, 0x77, 0xb8, 0x2a, 0x42, 0x90, 0x1b, 0xe1,
-	0x70, 0x54, 0x51, 0x77, 0x95, 0xbd, 0x92, 0xc3, 0xd7, 0x4c, 0xe6, 0x62, 0x8a, 0x2b, 0x59, 0x21,
-	0x63, 0x6b, 0xe3, 0x01, 0x94, 0x5f, 0xcc, 0xbc, 0x98, 0x63, 0x35, 0xe2, 0x58, 0x82, 0x7c, 0x38,
-	0xf6, 0x06, 0x44, 0xcf, 0xa0, 0x02, 0xa8, 0x34, 0xd4, 0x15, 0xe3, 0x57, 0x15, 0xb6, 0xda, 0x84,
-	0x06, 0xde, 0xa0, 0x4d, 0x28, 0x3e, 0xc2, 0x14, 0xa3, 0xf7, 0x20, 0x4f, 0x3d, 0x3a, 0x16, 0xd4,
-	0x4a, 0x8e, 0xf8, 0x40, 0x5b, 0x0c, 0xc0, 0x5d, 0x2b, 0x8e, 0x4a, 0x43, 0xf4, 0x00, 0x76, 0xc6,
-	0xfe, 0xd0, 0x1b, 0xe0, 0x71, 0xdf, 0x25, 0x0b, 0x6f, 0x40, 0xfa, 0x9e, 0x2b, 0x59, 0x6c, 0xcb,
-	0x8d, 0x23, 0x2e, 0xb7, 0x5c, 0x74, 0x1b, 0x4a, 0x21, 0x09, 0x3c, 0x3c, 0xee, 0x4f, 0xfd, 0x4a,
-	0x8e, 0xeb, 0x14, 0x85, 0xc0, 0xf6, 0xd9, 0x66, 0x6c, 0x20, 0x2f, 0x36, 0xdd, 0x08, 0xf9, 0x35,
-	0x6c, 0x0c, 0xfc, 0x29, 0x25, 0xaf, 0x69, 0xa5, 0xb0, 0x9b, 0xdd, 0xd3, 0x1a, 0x9f, 0x44, 0x89,
-	0x4a, 0x93, 0x66, 0x79, 0x63, 0x5a, 0xe6, 0x94, 0x06, 0x57, 0x4e, 0x84, 0xa9, 0x1e, 0x42, 0x39,
-	0xb9, 0x81, 0x74, 0xc8, 0x5e, 0x92, 0x2b, 0x19, 0x18, 0x5b, 0xb2, 0x60, 0x17, 0x78, 0x3c, 0x27,
-	0x32, 0xa9, 0xe2, 0xe3, 0x50, 0x3d, 0x50, 0x8c, 0x5f, 0x14, 0xd0, 0x85, 0x93, 0x33, 0x26, 0x3b,
-	0xc1, 0x5e, 0x10, 0xa2, 0x6f, 0x60, 0x63, 0xc2, 0x65, 0x61, 0x45, 0xe1, 0x7c, 0x3e, 0x4d, 0xf3,
-	0x89, 0x55, 0xa5, 0x20, 0x94, 0x8c, 0x24, 0x8a, 0x31, 0x4a, 0x6e, 0xbc, 0x8d, 0x91, 0x9a, 0x64,
-	0xf4, 0x87, 0x02, 0x3b, 0x02, 0x6c, 0x4d, 0x2f, 0xfc, 0x60, 0xc2, 0x0f, 0x2f, 0x6a, 0x40, 0x91,
-	0x9d, 0x70, 0x7e, 0x0a, 0x98, 0x19, 0xad, 0xf1, 0xfe, 0xfa, 0x1c, 0x39, 0x4b, 0x3d, 0xf4, 0x6d,
-	0x1c, 0x86, 0xca, 0xc3, 0xb8, 0x9f, 0x86, 0x24, 0xec, 0xbf, 0x83, 0x38, 0xfe, 0x54, 0xa0, 0x18,
-	0x1d, 0x50, 0x54, 0x4b, 0xf5, 0x41, 0x35, 0xe2, 0x91, 0x3c, 0xc0, 0xa9, 0x26, 0x88, 0xcf, 0xa1,
-	0xca, 0xcf, 0xe1, 0x21, 0x14, 0x67, 0x01, 0xb9, 0xf0, 0x5e, 0x93, 0xb0, 0x92, 0xe5, 0xb1, 0xdc,
-	0x5d, 0xb5, 0x51, 0x3b, 0x91, 0x0a, 0x22, 0x86, 0xa5, 0x7e, 0xf5, 0x14, 0x36, 0x53, 0x5b, 0x6b,
-	0xa2, 0xa8, 0x25, 0xa3, 0xd0, 0x1a, 0x95, 0x37, 0x95, 0x3b, 0x19, 0xdf, 0xcf, 0x0a, 0x94, 0x22,
-	0xdf, 0x8d, 0x1b, 0x04, 0x28, 0x1a, 0xed, 0x00, 0x80, 0x37, 0x6d, 0x5f, 0xf6, 0x39, 0x0b, 0xf1,
-	0xc3, 0x37, 0x96, 0xcb, 0x29, 0x71, 0x65, 0x56, 0x6f, 0xe3, 0x27, 0xd8, 0x6a, 0x8e, 0x71, 0x30,
-	0x89, 0x27, 0x01, 0x89, 0x26, 0xc1, 0x0e, 0x6c, 0xb6, 0x3a, 0xed, 0xf6, 0xa9, 0x6d, 0xb5, 0x9a,
-	0x3d, 0xab, 0x63, 0xeb, 0x19, 0xb4, 0x0d, 0x9a, 0x69, 0x9f, 0x59, 0x4e, 0xc7, 0x6e, 0x9b, 0x76,
-	0x4f, 0x57, 0xd0, 0x26, 0x94, 0xcc, 0xef, 0x4f, 0xad, 0x13, 0xfe, 0xa9, 0x22, 0x0d, 0x36, 0xba,
-	0xa6, 0x73, 0x66, 0xb5, 0x4c, 0x3d, 0x8b, 0xb6, 0x00, 0x4e, 0x9c, 0x4e, 0xcb, 0xec, 0x76, 0x2d,
-	0xfb, 0x99, 0x9e, 0x43, 0x65, 0x28, 0x76, 0xcd, 0xd6, 0xa9, 0x63, 0xf5, 0x7e, 0xd0, 0xf3, 0xc6,
-	0x73, 0x40, 0xb1, 0xe3, 0x16, 0xa6, 0x64, 0xe8, 0x07, 0x57, 0xc6, 0x97, 0x89, 0x51, 0x79, 0xc2,
-	0x5d, 0x6e, 0x40, 0xb6, 0xf3, 0x92, 0xb9, 0x62, 0x0b, 0xee, 0x84, 0x2f, 0x4e, 0xf5, 0x2c, 0x5b,
-	0xd8, 0xb6, 0xa5, 0xe7, 0x8c, 0x7d, 0xd8, 0x8e, 0x6d, 0x75, 0x29, 0xa6, 0xc4, 0xd8, 0x8d, 0x0c,
-	0x01, 0x14, 0x9c, 0xa6, 0xd5, 0x35, 0x8f, 0xf4, 0x0c, 0xa3, 0xd7, 0x7a, 0x69, 0x36, 0x1d, 0xf3,
-	0x48, 0x57, 0x0c, 0x9c, 0x24, 0xd0, 0x25, 0x0b, 0x12, 0x78, 0xf4, 0xca, 0x78, 0x91, 0x88, 0xde,
-	0xb2, 0x8f, 0xcc, 0x9e, 0xe9, 0xb4, 0x2d, 0xbb, 0xd9, 0x33, 0x05, 0xfc, 0x55, 0xd3, 0xb1, 0x59,
-	0x34, 0x0a, 0x9b, 0x93, 0x6d, 0xcb, 0xee, 0x38, 0xba, 0xca, 0x97, 0xcd, 0xe7, 0x1d, 0x47, 0xcf,
-	0xb2, 0x18, 0x5b, 0x8e, 0xd5, 0xb3, 0x5a, 0xcd, 0x97, 0x7a, 0xce, 0xf8, 0x3d, 0x0f, 0x10, 0xfb,
-	0x60, 0x55, 0xf3, 0x5c, 0x79, 0x70, 0x54, 0xcf, 0x45, 0x9f, 0xcb, 0xaa, 0xab, 0xbc, 0xea, 0x77,
-	0xa2, 0x7a, 0xa5, 0xeb, 0x91, 0xaa, 0xfb, 0x57, 0x50, 0x1c, 0xc8, 0x54, 0xf1, 0x39, 0xba, 0xd5,
-	0xd8, 0xbd, 0x8e, 0x8a, 0x92, 0x29, 0x91, 0x4b, 0x04, 0xda, 0x87, 0x7c, 0xc8, 0x92, 0xc3, 0xc7,
-	0x6b, 0xe2, 0x3e, 0x59, 0xc9, 0x9d, 0xc4, 0x09, 0x5d, 0xe6, 0x32, 0x94, 0xc9, 0xe1, 0x93, 0x77,
-	0xad, 0xcb, 0x28, 0x7d, 0x91, 0xcb, 0x08, 0x81, 0x1e, 0x41, 0x29, 0xc0, 0x5e, 0x48, 0xdc, 0x3e,
-	0x0d, 0x2b, 0x05, 0xde, 0x1e, 0xd5, 0x9a, 0xb8, 0x42, 0x6b, 0xd1, 0x15, 0x5a, 0xeb, 0x45, 0x57,
-	0xa8, 0x53, 0x14, 0xca, 0xbd, 0x10, 0x3d, 0x01, 0x2d, 0x20, 0x33, 0x3f, 0xa0, 0x02, 0xba, 0xf1,
-	0x56, 0x28, 0x44, 0xea, 0xbd, 0x10, 0x3d, 0x06, 0x18, 0x8c, 0xf0, 0x74, 0x28, 0xb0, 0xc5, 0xb7,
-	0x62, 0x4b, 0x52, 0xbb, 0x17, 0xa2, 0x7b, 0xcc, 0x6f, 0xe8, 0xcf, 0x03, 0x71, 0xd7, 0x94, 0x78,
-	0xb1, 0x20, 0x12, 0x59, 0x2e, 0xda, 0x05, 0xcd, 0x25, 0xe1, 0x20, 0xf0, 0x66, 0xac, 0x95, 0x2a,
-	0xc0, 0x15, 0x92, 0x22, 0xf4, 0x38, 0xbe, 0x8f, 0x34, 0xde, 0x89, 0xf7, 0xae, 0x27, 0x6c, 0xfd,
-	0x5d, 0xb4, 0xfe, 0xc2, 0x2c, 0xaf, 0xbf, 0x30, 0xef, 0xc3, 0x36, 0x66, 0xf6, 0xfa, 0xec, 0x64,
-	0xf4, 0xa7, 0x78, 0x42, 0x2a, 0x9b, 0x5c, 0x73, 0x93, 0x8b, 0x59, 0x25, 0x6c, 0x3c, 0x21, 0x37,
-	0xba, 0xdf, 0xfe, 0x56, 0x40, 0x13, 0x0e, 0xc5, 0x09, 0x5e, 0xc9, 0x8e, 0x72, 0x2d, 0x3b, 0x0f,
-	0x60, 0x47, 0x12, 0xe7, 0xaf, 0x2e, 0x41, 0x4b, 0x98, 0xdd, 0x76, 0x63, 0x43, 0x8c, 0xd8, 0x6a,
-	0x26, 0xb3, 0xd7, 0x33, 0x79, 0x18, 0x67, 0x32, 0xc7, 0x33, 0xb9, 0x3c, 0x7a, 0x09, 0x52, 0xef,
-	0xe0, 0x5a, 0x5f, 0xc0, 0x66, 0x7a, 0x2c, 0xfd, 0x47, 0x33, 0xf1, 0x18, 0x74, 0xd1, 0x4e, 0xf3,
-	0xf3, 0x1b, 0x4e, 0xc4, 0x57, 0x50, 0x8a, 0x27, 0xfa, 0xf3, 0xc8, 0x84, 0x0e, 0xe5, 0x56, 0xc7,
-	0xfe, 0xce, 0x7a, 0xd6, 0x37, 0xcf, 0x18, 0xb9, 0x0c, 0xe3, 0xfa, 0xe2, 0xc4, 0x92, 0x9f, 0x0a,
-	0xa3, 0xb7, 0xfc, 0x6c, 0xe8, 0x2a, 0x03, 0x1c, 0x99, 0x8c, 0xba, 0xd4, 0xc8, 0x1a, 0x7f, 0xa9,
-	0xa0, 0x71, 0xcb, 0xc7, 0x04, 0xbb, 0x24, 0xb8, 0x36, 0xd3, 0x1e, 0x25, 0x26, 0x94, 0x98, 0x6b,
-	0xb7, 0xa3, 0x9a, 0xfd, 0xfb, 0x70, 0x6a, 0x42, 0x39, 0x9c, 0x9f, 0xf7, 0x57, 0xc6, 0xdb, 0xdd,
-	0x14, 0x38, 0x91, 0x17, 0x89, 0xd7, 0xc2, 0x58, 0x84, 0x1e, 0xca, 0x79, 0x2a, 0xc6, 0xdb, 0x07,
-	0x29, 0xe8, 0xb5, 0x51, 0xfa, 0x31, 0x94, 0x79, 0xe3, 0x2c, 0x48, 0x10, 0xb2, 0xe3, 0x27, 0x5e,
-	0x95, 0x1a, 0x93, 0x9d, 0x09, 0xd1, 0xff, 0x33, 0xbc, 0x8c, 0xdf, 0x54, 0xc8, 0x8b, 0x6e, 0x7b,
-	0x08, 0x85, 0x11, 0xcf, 0xb2, 0x7c, 0xb3, 0xdd, 0x4a, 0x45, 0x24, 0x0a, 0xe0, 0x48, 0x15, 0x74,
-	0x00, 0xe5, 0x01, 0xff, 0x5f, 0x20, 0x3a, 0x4f, 0xbe, 0x45, 0x6e, 0xad, 0xf9, 0xcf, 0x70, 0x9c,
-	0x71, 0xb4, 0x41, 0xe2, 0x5f, 0x46, 0x1d, 0x4a, 0x97, 0x33, 0x4f, 0xc2, 0xb2, 0x1c, 0xa6, 0xaf,
-	0xbe, 0x40, 0x8e, 0x33, 0x4e, 0xf1, 0x32, 0x7a, 0x8e, 0x35, 0x00, 0x96, 0x80, 0x06, 0xcf, 0xb6,
-	0xd6, 0xd8, 0x59, 0x45, 0x34, 0x8e, 0x33, 0x4e, 0xe9, 0x72, 0xf9, 0xc2, 0x39, 0x80, 0x72, 0x72,
-	0x30, 0xf0, 0x74, 0x27, 0xe8, 0x25, 0xfa, 0x99, 0xd1, 0x4b, 0x8c, 0x8a, 0xa7, 0x65, 0x00, 0x31,
-	0x4b, 0x58, 0x69, 0x9e, 0x9a, 0x70, 0xcb, 0x0f, 0x86, 0x35, 0x7f, 0x46, 0xa6, 0x03, 0x3f, 0x70,
-	0x25, 0xfe, 0xc7, 0xda, 0xd0, 0xa3, 0xa3, 0xf9, 0x79, 0x6d, 0xe0, 0x4f, 0xea, 0xd1, 0x5e, 0x5d,
-	0xec, 0x7d, 0x26, 0xff, 0xe2, 0x2d, 0xf6, 0xeb, 0x43, 0x5f, 0xca, 0xce, 0x0b, 0x5c, 0xb8, 0xff,
-	0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x08, 0xad, 0xf2, 0x6f, 0x2b, 0x0e, 0x00, 0x00,
+	// 1388 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x57, 0x5d, 0x6e, 0xdb, 0xc6,
+	0x16, 0x16, 0xa9, 0xff, 0x43, 0xd9, 0xa6, 0x27, 0x17, 0xf7, 0xea, 0x2a, 0xb9, 0x89, 0x2f, 0x8b,
+	0x06, 0x46, 0x82, 0x4a, 0xad, 0x5c, 0x20, 0x8e, 0xd3, 0xa2, 0x55, 0x64, 0x36, 0x66, 0x12, 0x51,
+	0x2e, 0x25, 0x3b, 0x68, 0x5f, 0x84, 0xb1, 0x38, 0x96, 0x08, 0x4b, 0xa2, 0x40, 0x8e, 0xd4, 0x78,
+	0x01, 0x7d, 0xee, 0x02, 0xba, 0x84, 0xee, 0xa1, 0x6f, 0x5d, 0x46, 0xd1, 0x4d, 0x74, 0x01, 0xc5,
+	0xfc, 0x50, 0x24, 0x65, 0xa5, 0x79, 0x30, 0xda, 0x3e, 0x69, 0x78, 0xe6, 0x7c, 0xe7, 0xe7, 0x3b,
+	0x73, 0xce, 0x8c, 0xa0, 0xb6, 0xf4, 0x27, 0x74, 0x8c, 0x07, 0xf3, 0xc0, 0xa7, 0x7e, 0xd8, 0x20,
+	0x4b, 0x32, 0xa3, 0x61, 0x9d, 0x7f, 0xa1, 0x82, 0xd8, 0xab, 0x55, 0xd3, 0x3a, 0x53, 0x42, 0xb1,
+	0xd0, 0xa8, 0xdd, 0x1b, 0xf9, 0xfe, 0x68, 0x42, 0x1a, 0x78, 0xee, 0x35, 0xf0, 0x6c, 0xe6, 0x53,
+	0x4c, 0x3d, 0x7f, 0x26, 0xf1, 0xb5, 0x07, 0x72, 0x97, 0x7f, 0x5d, 0x2c, 0x2e, 0x1b, 0xd4, 0x9b,
+	0x92, 0x90, 0xe2, 0xe9, 0x5c, 0x28, 0x18, 0xcf, 0x60, 0xa7, 0xed, 0xcf, 0x2e, 0xbd, 0x91, 0xc9,
+	0xdc, 0xf6, 0xaf, 0xe7, 0xc4, 0xd8, 0x87, 0x3c, 0xfb, 0x0d, 0x51, 0x11, 0xb2, 0xd8, 0x75, 0xf5,
+	0x0c, 0x02, 0x28, 0x04, 0x64, 0xea, 0x2f, 0x89, 0xae, 0xb0, 0xf5, 0x62, 0xee, 0x62, 0x4a, 0x74,
+	0xd5, 0x18, 0x83, 0x96, 0x00, 0xa3, 0x4f, 0x20, 0x47, 0xaf, 0xe7, 0xa4, 0xaa, 0xec, 0x29, 0xfb,
+	0xdb, 0xcd, 0xff, 0xd5, 0x45, 0xcc, 0xf5, 0x35, 0xfb, 0x75, 0x6e, 0xdc, 0xe1, 0xaa, 0x08, 0x41,
+	0x6e, 0x8c, 0xc3, 0x71, 0x55, 0xdd, 0x53, 0xf6, 0xcb, 0x0e, 0x5f, 0x33, 0x99, 0x8b, 0x29, 0xae,
+	0x66, 0x85, 0x8c, 0xad, 0x8d, 0x47, 0x50, 0x79, 0x35, 0xf7, 0xe2, 0x18, 0x6b, 0x51, 0x8c, 0x65,
+	0xc8, 0x87, 0x13, 0x6f, 0x48, 0xf4, 0x0c, 0x2a, 0x80, 0x4a, 0x43, 0x5d, 0x31, 0x7e, 0x52, 0x61,
+	0xbb, 0x43, 0x68, 0xe0, 0x0d, 0x3b, 0x84, 0xe2, 0x63, 0x4c, 0x31, 0xfa, 0x17, 0xe4, 0xa9, 0x47,
+	0x27, 0x22, 0xb4, 0xb2, 0x23, 0x3e, 0xd0, 0x36, 0x03, 0x70, 0xd7, 0x8a, 0xa3, 0xd2, 0x10, 0x3d,
+	0x82, 0xdd, 0x89, 0x3f, 0xf2, 0x86, 0x78, 0x32, 0x70, 0xc9, 0xd2, 0x1b, 0x92, 0x81, 0xe7, 0xca,
+	0x28, 0x76, 0xe4, 0xc6, 0x31, 0x97, 0x5b, 0x2e, 0xba, 0x0b, 0xe5, 0x90, 0x04, 0x1e, 0x9e, 0x0c,
+	0x66, 0x7e, 0x35, 0xc7, 0x75, 0x4a, 0x42, 0x60, 0xfb, 0x6c, 0x33, 0x36, 0x90, 0x17, 0x9b, 0x6e,
+	0x84, 0xfc, 0x1c, 0x8a, 0x43, 0x7f, 0x46, 0xc9, 0x5b, 0x5a, 0x2d, 0xec, 0x65, 0xf7, 0xb5, 0xe6,
+	0x07, 0x11, 0x51, 0xe9, 0xa0, 0x19, 0x6f, 0x4c, 0xcb, 0x9c, 0xd1, 0xe0, 0xda, 0x89, 0x30, 0x8c,
+	0x9d, 0xc5, 0xc2, 0x73, 0xab, 0x45, 0xc1, 0x0e, 0x5b, 0xd7, 0x8e, 0xa0, 0x92, 0x54, 0x46, 0x3a,
+	0x64, 0xaf, 0xc8, 0xb5, 0x4c, 0x96, 0x2d, 0x19, 0x01, 0x4b, 0x3c, 0x59, 0x10, 0x49, 0xb4, 0xf8,
+	0x38, 0x52, 0x0f, 0x15, 0xe3, 0x07, 0x05, 0x74, 0xe1, 0xf8, 0x9c, 0xc9, 0x4e, 0xb1, 0x17, 0x84,
+	0xe8, 0x0b, 0x28, 0x4e, 0xb9, 0x2c, 0xac, 0x2a, 0x3c, 0xc6, 0x0f, 0xd3, 0x31, 0xc6, 0xaa, 0x52,
+	0x10, 0xca, 0x28, 0x25, 0x8a, 0x45, 0x94, 0xdc, 0x78, 0x5f, 0x44, 0x6a, 0x32, 0xa2, 0x5f, 0x14,
+	0xd8, 0x15, 0x60, 0x6b, 0x76, 0xe9, 0x07, 0x53, 0x7e, 0xa0, 0x51, 0x13, 0x4a, 0xec, 0xd4, 0xf3,
+	0x93, 0xc1, 0xcc, 0x68, 0xcd, 0x7f, 0x6f, 0xe6, 0xcd, 0x59, 0xe9, 0xa1, 0x2f, 0xe3, 0x34, 0x54,
+	0x9e, 0xc6, 0xc3, 0x34, 0x24, 0x61, 0xff, 0x2f, 0xc8, 0xe3, 0x57, 0x05, 0x4a, 0xd1, 0xa1, 0x45,
+	0xf5, 0x54, 0x6f, 0xd4, 0xa2, 0x38, 0x92, 0x87, 0x3a, 0xd5, 0x18, 0xf1, 0xd9, 0x54, 0xf9, 0xd9,
+	0x3c, 0x82, 0xd2, 0x3c, 0x20, 0x97, 0xde, 0x5b, 0x12, 0x56, 0xb3, 0x3c, 0x97, 0xfb, 0xeb, 0x36,
+	0xea, 0xa7, 0x52, 0x41, 0xe4, 0xb0, 0xd2, 0xaf, 0x9d, 0xc1, 0x56, 0x6a, 0x6b, 0x43, 0x16, 0xf5,
+	0x64, 0x16, 0x5a, 0xb3, 0xfa, 0xae, 0x72, 0x27, 0xf3, 0xfb, 0x5e, 0x81, 0x72, 0xe4, 0xbb, 0x79,
+	0x8b, 0x04, 0x45, 0xf3, 0x1d, 0x02, 0xf0, 0x46, 0x1e, 0xc8, 0xde, 0x67, 0x29, 0xfe, 0xf7, 0x9d,
+	0xe5, 0x72, 0xca, 0x5c, 0x99, 0xd5, 0xdb, 0xf8, 0x0e, 0xb6, 0x5b, 0x13, 0x1c, 0x4c, 0xe3, 0xe9,
+	0x40, 0xa2, 0xe9, 0xb0, 0x0b, 0x5b, 0xed, 0x6e, 0xa7, 0x73, 0x66, 0x5b, 0xed, 0x56, 0xdf, 0xea,
+	0xda, 0x7a, 0x06, 0xed, 0x80, 0x66, 0xda, 0xe7, 0x96, 0xd3, 0xb5, 0x3b, 0xa6, 0xdd, 0xd7, 0x15,
+	0xb4, 0x05, 0x65, 0xf3, 0xeb, 0x33, 0xeb, 0x94, 0x7f, 0xaa, 0x48, 0x83, 0x62, 0xcf, 0x74, 0xce,
+	0xad, 0xb6, 0xa9, 0x67, 0xd1, 0x36, 0xc0, 0xa9, 0xd3, 0x6d, 0x9b, 0xbd, 0x9e, 0x65, 0xbf, 0xd0,
+	0x73, 0xa8, 0x02, 0xa5, 0x9e, 0xd9, 0x3e, 0x73, 0xac, 0xfe, 0x37, 0x7a, 0xde, 0x78, 0x09, 0x28,
+	0x76, 0xdc, 0xc6, 0x94, 0x8c, 0xfc, 0xe0, 0xda, 0xf8, 0x34, 0x31, 0x3e, 0x4f, 0xb9, 0xcb, 0x22,
+	0x64, 0xbb, 0xaf, 0x99, 0x2b, 0xb6, 0xe0, 0x4e, 0xf8, 0xe2, 0x4c, 0xcf, 0xb2, 0x85, 0x6d, 0x5b,
+	0x7a, 0xce, 0x38, 0x80, 0x9d, 0xd8, 0x56, 0x8f, 0x62, 0x4a, 0x8c, 0xbd, 0xc8, 0x10, 0x40, 0xc1,
+	0x69, 0x59, 0x3d, 0xf3, 0x58, 0xcf, 0xb0, 0xf0, 0xda, 0xaf, 0xcd, 0x96, 0x63, 0x1e, 0xeb, 0x8a,
+	0x81, 0x93, 0x01, 0xf4, 0xc8, 0x92, 0x04, 0x1e, 0xbd, 0x36, 0x5e, 0x25, 0xb2, 0xb7, 0xec, 0x63,
+	0xb3, 0x6f, 0x3a, 0x1d, 0xcb, 0x6e, 0xf5, 0x4d, 0x01, 0x7f, 0xd3, 0x72, 0x6c, 0x96, 0x8d, 0xc2,
+	0x66, 0x67, 0xc7, 0xb2, 0xbb, 0x8e, 0xae, 0xf2, 0x65, 0xeb, 0x65, 0xd7, 0xd1, 0xb3, 0x2c, 0xc7,
+	0xb6, 0x63, 0xf5, 0xad, 0x76, 0xeb, 0xb5, 0x9e, 0x33, 0x7e, 0xce, 0x03, 0xc4, 0x3e, 0x58, 0xd5,
+	0x3c, 0x57, 0x1e, 0x1c, 0xd5, 0x73, 0xd1, 0xc7, 0xb2, 0xea, 0x2a, 0xaf, 0xfa, 0xbd, 0xa8, 0x5e,
+	0xe9, 0x7a, 0xa4, 0xea, 0xfe, 0x19, 0x94, 0x86, 0x92, 0x2a, 0x3e, 0x5b, 0xb7, 0x9b, 0x7b, 0x37,
+	0x51, 0x11, 0x99, 0x12, 0xb9, 0x42, 0xa0, 0x03, 0xc8, 0x87, 0x8c, 0x1c, 0x3e, 0x72, 0x13, 0x77,
+	0xcc, 0x1a, 0x77, 0x12, 0x27, 0x74, 0x99, 0xcb, 0x50, 0x92, 0xc3, 0xa7, 0xf1, 0x46, 0x97, 0x11,
+	0x7d, 0x91, 0xcb, 0x08, 0x81, 0x9e, 0x40, 0x39, 0xc0, 0x5e, 0x48, 0xdc, 0x01, 0x0d, 0xab, 0x05,
+	0xde, 0x1e, 0xb5, 0xba, 0xb8, 0x56, 0xeb, 0xd1, 0xb5, 0x5a, 0xef, 0x47, 0xd7, 0xaa, 0x53, 0x12,
+	0xca, 0xfd, 0x10, 0x3d, 0x03, 0x2d, 0x20, 0x73, 0x3f, 0xa0, 0x02, 0x5a, 0x7c, 0x2f, 0x14, 0x22,
+	0xf5, 0x7e, 0x88, 0x9e, 0x02, 0x0c, 0xc7, 0x78, 0x36, 0x12, 0xd8, 0xd2, 0x7b, 0xb1, 0x65, 0xa9,
+	0xdd, 0x0f, 0xd1, 0x03, 0xe6, 0x37, 0xf4, 0x17, 0x81, 0xb8, 0x7f, 0xca, 0xbc, 0x58, 0x10, 0x89,
+	0x2c, 0x17, 0xed, 0x81, 0xe6, 0x92, 0x70, 0x18, 0x78, 0x73, 0xd6, 0x4a, 0x55, 0xe0, 0x0a, 0x49,
+	0x11, 0x7a, 0x1a, 0xdf, 0x51, 0x1a, 0xef, 0xc4, 0x07, 0x37, 0x09, 0x7b, 0xc7, 0xfd, 0xb4, 0xf1,
+	0x12, 0xad, 0x6c, 0xbe, 0x44, 0x1f, 0xc2, 0x0e, 0x66, 0xf6, 0x06, 0xec, 0x64, 0x0c, 0x66, 0x78,
+	0x4a, 0xaa, 0x5b, 0x5c, 0x73, 0x8b, 0x8b, 0x59, 0x25, 0x6c, 0x3c, 0x25, 0xb7, 0xba, 0xdf, 0x7e,
+	0x57, 0x40, 0x13, 0x0e, 0xc5, 0x09, 0x5e, 0x63, 0x47, 0xb9, 0xc1, 0xce, 0x23, 0xd8, 0x95, 0x81,
+	0xf3, 0x97, 0x98, 0x08, 0x4b, 0x98, 0xdd, 0x71, 0x63, 0x43, 0x2c, 0xb0, 0x75, 0x26, 0xb3, 0x37,
+	0x99, 0x3c, 0x8a, 0x99, 0xcc, 0x71, 0x26, 0x57, 0x47, 0x2f, 0x11, 0xd4, 0x66, 0x2a, 0x6f, 0x95,
+	0xf6, 0x12, 0xb6, 0xd2, 0x63, 0xe9, 0x6f, 0x9a, 0x89, 0x27, 0xa0, 0x8b, 0x76, 0x5a, 0x5c, 0xdc,
+	0x72, 0x22, 0xbe, 0x81, 0x72, 0x3c, 0xd1, 0x5f, 0x46, 0x26, 0x74, 0xa8, 0xb4, 0xbb, 0xf6, 0x57,
+	0xd6, 0x8b, 0x81, 0x79, 0xce, 0x82, 0xcb, 0xb0, 0x58, 0x5f, 0x9d, 0x5a, 0xf2, 0x53, 0x61, 0xe1,
+	0xad, 0x3e, 0x9b, 0xba, 0xca, 0x00, 0xc7, 0x26, 0x0b, 0x5d, 0x6a, 0x64, 0x8d, 0xdf, 0x54, 0xd0,
+	0xb8, 0xe5, 0x13, 0x82, 0x5d, 0x12, 0xdc, 0x98, 0x69, 0x4f, 0x12, 0x13, 0x4a, 0xcc, 0xb5, 0xbb,
+	0x51, 0xcd, 0xfe, 0x7c, 0x38, 0xb5, 0xa0, 0x12, 0x2e, 0x2e, 0x06, 0x6b, 0xe3, 0xed, 0x7e, 0x0a,
+	0x9c, 0xe0, 0x45, 0xe2, 0xb5, 0x30, 0x16, 0xa1, 0xc7, 0x72, 0x9e, 0x8a, 0xf1, 0xf6, 0x9f, 0x14,
+	0xf4, 0xc6, 0x28, 0xfd, 0x3f, 0x54, 0x78, 0xe3, 0x2c, 0x49, 0x10, 0xb2, 0xe3, 0x27, 0x5e, 0x9a,
+	0x1a, 0x93, 0x9d, 0x0b, 0xd1, 0x3f, 0x33, 0xbc, 0x8c, 0x1f, 0x55, 0xc8, 0x8b, 0x6e, 0x7b, 0x0c,
+	0x85, 0x31, 0x67, 0x59, 0xbe, 0xd9, 0xee, 0xa4, 0x32, 0x12, 0x05, 0x70, 0xa4, 0x0a, 0x3a, 0x84,
+	0xca, 0x90, 0xff, 0x57, 0x10, 0x9d, 0x27, 0xdf, 0x22, 0x77, 0x36, 0xfc, 0x8f, 0x38, 0xc9, 0x38,
+	0xda, 0x30, 0xf1, 0xcf, 0xa3, 0x01, 0xe5, 0xab, 0xb9, 0x27, 0x61, 0x59, 0x0e, 0xd3, 0xd7, 0x5f,
+	0x20, 0x27, 0x19, 0xa7, 0x74, 0x15, 0x3d, 0xc7, 0x9a, 0x00, 0x2b, 0x40, 0x93, 0xb3, 0xad, 0x35,
+	0x77, 0xd7, 0x11, 0xcd, 0x93, 0x8c, 0x53, 0xbe, 0x5a, 0xbd, 0x70, 0x0e, 0xa1, 0x92, 0x1c, 0x0c,
+	0x9c, 0xee, 0x44, 0x78, 0x89, 0x7e, 0x66, 0xe1, 0x25, 0x46, 0xc5, 0xf3, 0x0a, 0x80, 0x98, 0x25,
+	0xac, 0x34, 0xcf, 0x4d, 0xb8, 0xe3, 0x07, 0xa3, 0xba, 0x3f, 0x27, 0xb3, 0xa1, 0x1f, 0xb8, 0x12,
+	0xff, 0x6d, 0x7d, 0xe4, 0xd1, 0xf1, 0xe2, 0xa2, 0x3e, 0xf4, 0xa7, 0x8d, 0x68, 0xaf, 0x21, 0xf6,
+	0x3e, 0x92, 0x7f, 0xfb, 0x96, 0x07, 0x8d, 0x91, 0x2f, 0x65, 0x17, 0x05, 0x2e, 0x3c, 0xf8, 0x23,
+	0x00, 0x00, 0xff, 0xff, 0xe5, 0xa6, 0xf9, 0x0e, 0x3f, 0x0e, 0x00, 0x00,
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/voltha.pb.go b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/voltha.pb.go
index f6512d6..83fb298 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/voltha.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v3/go/voltha/voltha.pb.go
@@ -50,18 +50,6 @@
 // IDs from public import voltha_protos/common.proto
 type IDs = common.IDs
 
-// LogLevel from public import voltha_protos/common.proto
-type LogLevel = common.LogLevel
-
-// Logging from public import voltha_protos/common.proto
-type Logging = common.Logging
-
-// LoggingComponent from public import voltha_protos/common.proto
-type LoggingComponent = common.LoggingComponent
-
-// Loggings from public import voltha_protos/common.proto
-type Loggings = common.Loggings
-
 // AdminState from public import voltha_protos/common.proto
 type AdminState = common.AdminState
 
@@ -82,19 +70,6 @@
 
 const TestModeKeys_api_test = TestModeKeys(common.TestModeKeys_api_test)
 
-// LogLevel_Types from public import voltha_protos/common.proto
-type LogLevel_Types = common.LogLevel_Types
-
-var LogLevel_Types_name = common.LogLevel_Types_name
-var LogLevel_Types_value = common.LogLevel_Types_value
-
-const LogLevel_DEBUG = LogLevel_Types(common.LogLevel_DEBUG)
-const LogLevel_INFO = LogLevel_Types(common.LogLevel_INFO)
-const LogLevel_WARNING = LogLevel_Types(common.LogLevel_WARNING)
-const LogLevel_ERROR = LogLevel_Types(common.LogLevel_ERROR)
-const LogLevel_CRITICAL = LogLevel_Types(common.LogLevel_CRITICAL)
-const LogLevel_FATAL = LogLevel_Types(common.LogLevel_FATAL)
-
 // AdminState_Types from public import voltha_protos/common.proto
 type AdminState_Types = common.AdminState_Types
 
@@ -1307,6 +1282,31 @@
 	return fileDescriptor_e084f1a60ce7016c, []int{2, 0}
 }
 
+type TestResponse_TestResponseResult int32
+
+const (
+	TestResponse_SUCCESS TestResponse_TestResponseResult = 0
+	TestResponse_FAILURE TestResponse_TestResponseResult = 1
+)
+
+var TestResponse_TestResponseResult_name = map[int32]string{
+	0: "SUCCESS",
+	1: "FAILURE",
+}
+
+var TestResponse_TestResponseResult_value = map[string]int32{
+	"SUCCESS": 0,
+	"FAILURE": 1,
+}
+
+func (x TestResponse_TestResponseResult) String() string {
+	return proto.EnumName(TestResponse_TestResponseResult_name, int32(x))
+}
+
+func (TestResponse_TestResponseResult) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_e084f1a60ce7016c, []int{9, 0}
+}
+
 type SelfTestResponse_SelfTestResult int32
 
 const (
@@ -1335,7 +1335,7 @@
 }
 
 func (SelfTestResponse_SelfTestResult) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_e084f1a60ce7016c, []int{9, 0}
+	return fileDescriptor_e084f1a60ce7016c, []int{11, 0}
 }
 
 type DeviceGroup struct {
@@ -1708,6 +1708,92 @@
 	return nil
 }
 
+type OmciTestRequest struct {
+	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	Uuid                 string   `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *OmciTestRequest) Reset()         { *m = OmciTestRequest{} }
+func (m *OmciTestRequest) String() string { return proto.CompactTextString(m) }
+func (*OmciTestRequest) ProtoMessage()    {}
+func (*OmciTestRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e084f1a60ce7016c, []int{8}
+}
+
+func (m *OmciTestRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_OmciTestRequest.Unmarshal(m, b)
+}
+func (m *OmciTestRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_OmciTestRequest.Marshal(b, m, deterministic)
+}
+func (m *OmciTestRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OmciTestRequest.Merge(m, src)
+}
+func (m *OmciTestRequest) XXX_Size() int {
+	return xxx_messageInfo_OmciTestRequest.Size(m)
+}
+func (m *OmciTestRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_OmciTestRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_OmciTestRequest proto.InternalMessageInfo
+
+func (m *OmciTestRequest) GetId() string {
+	if m != nil {
+		return m.Id
+	}
+	return ""
+}
+
+func (m *OmciTestRequest) GetUuid() string {
+	if m != nil {
+		return m.Uuid
+	}
+	return ""
+}
+
+type TestResponse struct {
+	Result               TestResponse_TestResponseResult `protobuf:"varint,1,opt,name=result,proto3,enum=voltha.TestResponse_TestResponseResult" json:"result,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                        `json:"-"`
+	XXX_unrecognized     []byte                          `json:"-"`
+	XXX_sizecache        int32                           `json:"-"`
+}
+
+func (m *TestResponse) Reset()         { *m = TestResponse{} }
+func (m *TestResponse) String() string { return proto.CompactTextString(m) }
+func (*TestResponse) ProtoMessage()    {}
+func (*TestResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_e084f1a60ce7016c, []int{9}
+}
+
+func (m *TestResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TestResponse.Unmarshal(m, b)
+}
+func (m *TestResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TestResponse.Marshal(b, m, deterministic)
+}
+func (m *TestResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TestResponse.Merge(m, src)
+}
+func (m *TestResponse) XXX_Size() int {
+	return xxx_messageInfo_TestResponse.Size(m)
+}
+func (m *TestResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_TestResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TestResponse proto.InternalMessageInfo
+
+func (m *TestResponse) GetResult() TestResponse_TestResponseResult {
+	if m != nil {
+		return m.Result
+	}
+	return TestResponse_SUCCESS
+}
+
 // Voltha represents the Voltha cluster data.  Each Core instance will hold a subset of
 // the entire cluster. However, some items (e.g. adapters) will be held by all cores
 // for better performance
@@ -1730,7 +1816,7 @@
 func (m *Voltha) String() string { return proto.CompactTextString(m) }
 func (*Voltha) ProtoMessage()    {}
 func (*Voltha) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e084f1a60ce7016c, []int{8}
+	return fileDescriptor_e084f1a60ce7016c, []int{10}
 }
 
 func (m *Voltha) XXX_Unmarshal(b []byte) error {
@@ -1826,7 +1912,7 @@
 func (m *SelfTestResponse) String() string { return proto.CompactTextString(m) }
 func (*SelfTestResponse) ProtoMessage()    {}
 func (*SelfTestResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e084f1a60ce7016c, []int{9}
+	return fileDescriptor_e084f1a60ce7016c, []int{11}
 }
 
 func (m *SelfTestResponse) XXX_Unmarshal(b []byte) error {
@@ -1868,7 +1954,7 @@
 func (m *OfAgentSubscriber) String() string { return proto.CompactTextString(m) }
 func (*OfAgentSubscriber) ProtoMessage()    {}
 func (*OfAgentSubscriber) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e084f1a60ce7016c, []int{10}
+	return fileDescriptor_e084f1a60ce7016c, []int{12}
 }
 
 func (m *OfAgentSubscriber) XXX_Unmarshal(b []byte) error {
@@ -1918,7 +2004,7 @@
 func (m *Membership) String() string { return proto.CompactTextString(m) }
 func (*Membership) ProtoMessage()    {}
 func (*Membership) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e084f1a60ce7016c, []int{11}
+	return fileDescriptor_e084f1a60ce7016c, []int{13}
 }
 
 func (m *Membership) XXX_Unmarshal(b []byte) error {
@@ -1966,7 +2052,7 @@
 func (m *FlowMetadata) String() string { return proto.CompactTextString(m) }
 func (*FlowMetadata) ProtoMessage()    {}
 func (*FlowMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_e084f1a60ce7016c, []int{12}
+	return fileDescriptor_e084f1a60ce7016c, []int{14}
 }
 
 func (m *FlowMetadata) XXX_Unmarshal(b []byte) error {
@@ -1996,6 +2082,7 @@
 
 func init() {
 	proto.RegisterEnum("voltha.EventFilterRuleKey_EventFilterRuleType", EventFilterRuleKey_EventFilterRuleType_name, EventFilterRuleKey_EventFilterRuleType_value)
+	proto.RegisterEnum("voltha.TestResponse_TestResponseResult", TestResponse_TestResponseResult_name, TestResponse_TestResponseResult_value)
 	proto.RegisterEnum("voltha.SelfTestResponse_SelfTestResult", SelfTestResponse_SelfTestResult_name, SelfTestResponse_SelfTestResult_value)
 	proto.RegisterType((*DeviceGroup)(nil), "voltha.DeviceGroup")
 	proto.RegisterType((*DeviceGroups)(nil), "voltha.DeviceGroups")
@@ -2005,6 +2092,8 @@
 	proto.RegisterType((*EventFilters)(nil), "voltha.EventFilters")
 	proto.RegisterType((*CoreInstance)(nil), "voltha.CoreInstance")
 	proto.RegisterType((*CoreInstances)(nil), "voltha.CoreInstances")
+	proto.RegisterType((*OmciTestRequest)(nil), "voltha.OmciTestRequest")
+	proto.RegisterType((*TestResponse)(nil), "voltha.TestResponse")
 	proto.RegisterType((*Voltha)(nil), "voltha.Voltha")
 	proto.RegisterType((*SelfTestResponse)(nil), "voltha.SelfTestResponse")
 	proto.RegisterType((*OfAgentSubscriber)(nil), "voltha.OfAgentSubscriber")
@@ -2015,162 +2104,163 @@
 func init() { proto.RegisterFile("voltha_protos/voltha.proto", fileDescriptor_e084f1a60ce7016c) }
 
 var fileDescriptor_e084f1a60ce7016c = []byte{
-	// 2467 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x9a, 0xcd, 0x73, 0xdb, 0xc6,
-	0x15, 0xc0, 0x05, 0x7d, 0xeb, 0x89, 0x92, 0xc8, 0xa5, 0x3e, 0x68, 0x4a, 0x8a, 0xed, 0x8d, 0x63,
-	0xab, 0x4a, 0x4c, 0xda, 0x96, 0xe3, 0x69, 0xed, 0x66, 0x1a, 0x89, 0x92, 0x55, 0xd6, 0x92, 0xc9,
-	0x42, 0x96, 0xdd, 0x8f, 0x78, 0x38, 0x20, 0xb1, 0xa4, 0x30, 0x06, 0x01, 0x16, 0xbb, 0xa4, 0xa3,
-	0xf1, 0xe4, 0x92, 0x7e, 0xa4, 0xf7, 0xdc, 0x7b, 0x6a, 0xa7, 0x33, 0xfd, 0x5f, 0x72, 0xea, 0xa9,
-	0xd7, 0x4e, 0x0f, 0xfd, 0x0b, 0x32, 0xd3, 0x5b, 0x67, 0x3f, 0x40, 0x02, 0x04, 0x20, 0x89, 0x69,
-	0x66, 0x7a, 0xb2, 0xb1, 0x6f, 0xf7, 0xf7, 0xde, 0xbe, 0xdd, 0x7d, 0xfb, 0xf6, 0x51, 0x90, 0xef,
-	0xb9, 0x36, 0x3b, 0x33, 0x6a, 0x1d, 0xcf, 0x65, 0x2e, 0x2d, 0xca, 0xaf, 0x82, 0xf8, 0x42, 0xd3,
-	0xf2, 0x2b, 0xbf, 0xd1, 0x72, 0xdd, 0x96, 0x4d, 0x8a, 0x46, 0xc7, 0x2a, 0x1a, 0x8e, 0xe3, 0x32,
-	0x83, 0x59, 0xae, 0x43, 0x65, 0xaf, 0xfc, 0xba, 0x92, 0x8a, 0xaf, 0x7a, 0xb7, 0x59, 0x24, 0xed,
-	0x0e, 0x3b, 0x57, 0xc2, 0x5c, 0x18, 0xdf, 0x26, 0x4c, 0xc1, 0xf3, 0x43, 0x8a, 0x1b, 0x6e, 0xbb,
-	0xed, 0x3a, 0xf1, 0xb2, 0x33, 0x62, 0xd8, 0xec, 0x4c, 0xc9, 0x70, 0x58, 0x66, 0xbb, 0x2d, 0xab,
-	0x61, 0xd8, 0x35, 0x93, 0xf4, 0xac, 0x06, 0x89, 0x1f, 0x1f, 0x92, 0xad, 0x87, 0x65, 0x86, 0x69,
-	0x74, 0x18, 0xf1, 0x94, 0xf0, 0x7a, 0x58, 0xe8, 0x76, 0x88, 0xd3, 0xb4, 0xdd, 0xb7, 0xb5, 0xfb,
-	0x3b, 0x09, 0x1d, 0xda, 0x0d, 0xab, 0xd6, 0xb6, 0xea, 0x35, 0xb3, 0xae, 0x3a, 0xdc, 0x8c, 0xe9,
-	0x60, 0xd8, 0x86, 0xd7, 0xee, 0x77, 0xc1, 0x7f, 0xd6, 0x60, 0x7e, 0x5f, 0x98, 0x74, 0xe8, 0xb9,
-	0xdd, 0x0e, 0x5a, 0x81, 0x71, 0xcb, 0xcc, 0x69, 0x37, 0xb4, 0xad, 0xb9, 0xbd, 0xa9, 0x7f, 0x7f,
-	0xfb, 0xcd, 0xa6, 0xa6, 0x8f, 0x5b, 0x26, 0x2a, 0xc3, 0x52, 0x78, 0x72, 0x34, 0x37, 0x7e, 0x63,
-	0x62, 0x6b, 0xfe, 0xc1, 0x4a, 0x41, 0xad, 0xd2, 0x91, 0x14, 0x4b, 0xd6, 0xde, 0xdc, 0x3f, 0xbf,
-	0xfd, 0x66, 0x73, 0x92, 0xb3, 0xf4, 0x45, 0x3b, 0x28, 0xa1, 0x68, 0x07, 0x66, 0x7c, 0xc4, 0x84,
-	0x40, 0x2c, 0xfa, 0x88, 0xe8, 0x58, 0xbf, 0x27, 0xfe, 0x11, 0xa4, 0x02, 0x56, 0x52, 0xf4, 0x03,
-	0x98, 0xb2, 0x18, 0x69, 0xd3, 0x9c, 0x26, 0x10, 0xd9, 0x30, 0x42, 0x74, 0xd2, 0x65, 0x0f, 0xfc,
-	0x27, 0x0d, 0xd0, 0x41, 0x8f, 0x38, 0xec, 0xa9, 0x65, 0x33, 0xe2, 0xe9, 0x5d, 0x9b, 0x3c, 0x23,
-	0xe7, 0xf8, 0x2b, 0x0d, 0xb2, 0x43, 0xcd, 0x2f, 0xce, 0x3b, 0x04, 0x2d, 0x02, 0x34, 0x45, 0x4b,
-	0xcd, 0xb0, 0xed, 0xf4, 0x18, 0x4a, 0xc1, 0x6c, 0xc3, 0x60, 0xa4, 0xe5, 0x7a, 0xe7, 0x69, 0x0d,
-	0xa5, 0x21, 0x45, 0xbb, 0xf5, 0x5a, 0xbf, 0x65, 0x1c, 0x21, 0x58, 0x7c, 0xd3, 0xb1, 0x6a, 0x84,
-	0xa3, 0x6a, 0xec, 0xbc, 0x43, 0xd2, 0x13, 0x68, 0x05, 0x32, 0x0d, 0xd7, 0x69, 0x5a, 0xad, 0x60,
-	0xf3, 0x24, 0x6f, 0x96, 0xf3, 0x09, 0x36, 0x4f, 0x61, 0x0b, 0x96, 0x86, 0x0c, 0x41, 0x9f, 0xc2,
-	0xc4, 0x1b, 0x72, 0x2e, 0x96, 0x61, 0xf1, 0x41, 0xc1, 0x9f, 0x5c, 0x74, 0x16, 0x85, 0x98, 0x19,
-	0xe8, 0x7c, 0x28, 0x5a, 0x86, 0xa9, 0x9e, 0x61, 0x77, 0x49, 0x6e, 0x9c, 0x2f, 0xa5, 0x2e, 0x3f,
-	0xf0, 0x5f, 0x35, 0x98, 0x0f, 0x0c, 0x49, 0x5a, 0xed, 0x55, 0x98, 0x26, 0x8e, 0x51, 0xb7, 0xe5,
-	0xe8, 0x59, 0x5d, 0x7d, 0xa1, 0x75, 0x98, 0x53, 0x13, 0xb0, 0xcc, 0xdc, 0x84, 0x00, 0xcf, 0xca,
-	0x86, 0xb2, 0x89, 0x36, 0x01, 0x06, 0xd3, 0xca, 0x4d, 0x0a, 0xe9, 0x9c, 0x68, 0x11, 0x7e, 0xbd,
-	0x0b, 0x53, 0x5e, 0xd7, 0x26, 0x34, 0x37, 0x25, 0x56, 0x6c, 0x2d, 0x61, 0x52, 0xba, 0xec, 0x85,
-	0x3f, 0x81, 0x54, 0x40, 0x42, 0xd1, 0x5d, 0x98, 0x91, 0xcb, 0x12, 0x59, 0xf2, 0x20, 0xc0, 0xef,
-	0x83, 0xdf, 0x40, 0xaa, 0xe4, 0x7a, 0xa4, 0xec, 0x50, 0x66, 0x38, 0x0d, 0x82, 0x6e, 0xc3, 0xbc,
-	0xa5, 0xfe, 0x5f, 0x1b, 0x9e, 0x31, 0xf8, 0x92, 0xb2, 0x89, 0x76, 0x60, 0x5a, 0x1e, 0x70, 0x31,
-	0xf3, 0xf9, 0x07, 0xcb, 0xbe, 0x96, 0x9f, 0x8a, 0xd6, 0x13, 0x66, 0xb0, 0x2e, 0xdd, 0x9b, 0xe2,
-	0x3b, 0x74, 0x4c, 0x57, 0x5d, 0xf1, 0x13, 0x58, 0x08, 0x2a, 0xa3, 0x68, 0x3b, 0xbc, 0x3b, 0xfb,
-	0x90, 0x60, 0x2f, 0x7f, 0x7b, 0xfe, 0x63, 0x12, 0xa6, 0x5f, 0x0a, 0x31, 0xba, 0x0e, 0x33, 0x3d,
-	0xe2, 0x51, 0xcb, 0x75, 0xc2, 0x06, 0xfa, 0xad, 0xe8, 0x11, 0xcc, 0xaa, 0x10, 0xe1, 0x1f, 0xbf,
-	0x25, 0x1f, 0xbd, 0x2b, 0xdb, 0x83, 0x87, 0xa7, 0xdf, 0x37, 0xee, 0xf4, 0x4e, 0xfc, 0xef, 0xa7,
-	0x77, 0xf2, 0xaa, 0xa7, 0x17, 0x7d, 0x0a, 0x29, 0xb5, 0x6f, 0xf8, 0xde, 0xf0, 0xb7, 0x00, 0x0a,
-	0x8f, 0xe4, 0xbb, 0x24, 0x38, 0x7a, 0xde, 0xec, 0x37, 0x53, 0x54, 0x82, 0x05, 0x45, 0x68, 0x89,
-	0x00, 0x90, 0x9b, 0x4e, 0x3c, 0xf7, 0x41, 0x86, 0x52, 0xab, 0x82, 0x46, 0x09, 0x16, 0xe4, 0x0e,
-	0xf5, 0x77, 0xd2, 0x4c, 0xe2, 0x4e, 0x0a, 0x41, 0x48, 0x70, 0x23, 0xfe, 0x1c, 0x32, 0x83, 0x40,
-	0x6b, 0x30, 0xa3, 0x6e, 0x50, 0x92, 0xdb, 0x50, 0x20, 0x2e, 0x29, 0x1c, 0x5b, 0x75, 0x69, 0xce,
-	0xbe, 0xc1, 0x8c, 0xbd, 0x34, 0x07, 0xcd, 0x07, 0x0e, 0x8e, 0xbe, 0xc4, 0x7b, 0xf1, 0x4e, 0x6a,
-	0x34, 0x7a, 0x05, 0xd9, 0x60, 0x68, 0xf6, 0xa1, 0x9b, 0x6a, 0x89, 0x04, 0x74, 0x97, 0xcb, 0x2e,
-	0xc4, 0x0a, 0xb3, 0x64, 0x37, 0x45, 0xc0, 0x7f, 0xd1, 0x20, 0x7d, 0x42, 0xec, 0xe6, 0x0b, 0x42,
-	0x99, 0x4e, 0x68, 0xc7, 0x75, 0x28, 0x41, 0x3f, 0x81, 0x69, 0x8f, 0xd0, 0xae, 0xcd, 0x54, 0x78,
-	0xb9, 0xe3, 0x4f, 0x7f, 0xb8, 0x67, 0xb0, 0xa1, 0x6b, 0x33, 0x5d, 0x0d, 0xc3, 0x55, 0x58, 0x0c,
-	0x4b, 0xd0, 0x3c, 0xcc, 0x9c, 0x9c, 0x96, 0x4a, 0x07, 0x27, 0x27, 0xe9, 0x31, 0xfe, 0xf1, 0x74,
-	0xb7, 0x7c, 0x74, 0xaa, 0x1f, 0xa4, 0x35, 0x94, 0x81, 0x85, 0xe7, 0x95, 0x17, 0xb5, 0x93, 0xd3,
-	0x6a, 0xb5, 0xa2, 0xbf, 0x38, 0xd8, 0x4f, 0x8f, 0xf3, 0xa6, 0xd3, 0xe7, 0xcf, 0x9e, 0x57, 0x5e,
-	0x3d, 0xaf, 0x1d, 0xe8, 0x7a, 0x45, 0x4f, 0x4f, 0xe0, 0x0a, 0x64, 0x2a, 0xcd, 0xdd, 0x16, 0x71,
-	0xd8, 0x49, 0xb7, 0x4e, 0x1b, 0x9e, 0x55, 0x27, 0x1e, 0x8f, 0x27, 0x6e, 0xd3, 0xe0, 0x8d, 0xfd,
-	0x13, 0xab, 0xcf, 0xa9, 0x96, 0xb2, 0xc9, 0x63, 0x91, 0xba, 0xdd, 0x2c, 0x53, 0x05, 0xb9, 0x59,
-	0xd9, 0x50, 0x36, 0xf1, 0x13, 0x80, 0x63, 0xd2, 0xae, 0x13, 0x8f, 0x9e, 0x59, 0x1d, 0x4e, 0x12,
-	0xbb, 0xa6, 0xe6, 0x18, 0x6d, 0xe2, 0x93, 0x44, 0xcb, 0x73, 0xa3, 0xcd, 0x23, 0xfe, 0x78, 0x1f,
-	0x31, 0x6e, 0x99, 0xf8, 0x00, 0x52, 0x4f, 0x6d, 0xf7, 0xed, 0x31, 0x61, 0x06, 0x5f, 0x0b, 0xf4,
-	0x31, 0x4c, 0xb7, 0x49, 0x20, 0xf2, 0x6c, 0x16, 0x82, 0x57, 0xb1, 0xdb, 0xec, 0xd4, 0x84, 0xb8,
-	0x26, 0x43, 0xbe, 0xae, 0x3a, 0x3f, 0xf8, 0x4f, 0x01, 0x16, 0xe4, 0xc1, 0x3e, 0x21, 0x1e, 0x5f,
-	0x24, 0xa4, 0xc3, 0xe2, 0x69, 0xc7, 0x34, 0x18, 0x39, 0x72, 0x5b, 0x47, 0xa4, 0x47, 0x6c, 0xb4,
-	0x54, 0x50, 0xa9, 0xc6, 0x91, 0xdb, 0x6a, 0x59, 0x4e, 0x2b, 0xbf, 0x5a, 0x90, 0x09, 0x4c, 0xc1,
-	0x4f, 0x60, 0x0a, 0x07, 0x3c, 0x81, 0xc1, 0x6b, 0x5f, 0xfe, 0xfd, 0x5f, 0x5f, 0x8f, 0x67, 0x70,
-	0x4a, 0xe4, 0x3d, 0xbd, 0xfb, 0x3c, 0xd5, 0xa0, 0x8f, 0xb5, 0x6d, 0x54, 0x85, 0xd4, 0x21, 0x61,
-	0x3e, 0x90, 0xa2, 0xdc, 0x10, 0xb1, 0xe4, 0xb6, 0x3b, 0xae, 0x43, 0x1c, 0x96, 0x4f, 0x0f, 0x49,
-	0x28, 0x5e, 0x16, 0xd0, 0x45, 0x14, 0x82, 0xa2, 0x57, 0xb0, 0x70, 0x48, 0x58, 0xc0, 0x7d, 0x09,
-	0x36, 0xe5, 0xfb, 0xe7, 0x77, 0xd0, 0x17, 0xe7, 0x05, 0x72, 0x19, 0x21, 0x1f, 0xd9, 0x1e, 0x70,
-	0x5e, 0x43, 0x5a, 0x4e, 0x3f, 0xc0, 0x8e, 0x61, 0x24, 0xfa, 0x60, 0x53, 0xb0, 0xd7, 0x70, 0x0c,
-	0x9b, 0x7b, 0x62, 0x1f, 0xe6, 0x0e, 0x09, 0x53, 0xa1, 0x34, 0xc9, 0xe6, 0x7e, 0xb4, 0x92, 0xfd,
-	0xf0, 0x92, 0x60, 0xce, 0xa1, 0x19, 0xc5, 0x44, 0xaf, 0x21, 0x73, 0x64, 0x51, 0x16, 0x8e, 0xe7,
-	0x49, 0xb4, 0x95, 0xb8, 0xc0, 0x4e, 0xf1, 0x35, 0x01, 0xcd, 0xa2, 0x8c, 0x6f, 0xa8, 0xd5, 0x27,
-	0x9d, 0xc0, 0xd2, 0x21, 0x09, 0xd1, 0x11, 0xf8, 0xeb, 0x52, 0xde, 0xcf, 0xc7, 0xde, 0x14, 0xf8,
-	0x3d, 0xc1, 0xcb, 0xa1, 0xd5, 0x08, 0xaf, 0xf8, 0xce, 0x32, 0xbf, 0x40, 0x3a, 0xa4, 0xb8, 0xcd,
-	0xbb, 0x7e, 0xb8, 0x4f, 0x32, 0x37, 0x3d, 0x74, 0x59, 0x50, 0x9c, 0x13, 0x64, 0x84, 0xd2, 0x3e,
-	0xb9, 0x7f, 0x65, 0x10, 0x40, 0x9c, 0x79, 0x14, 0x8e, 0xfe, 0x49, 0xe4, 0xd5, 0xd8, 0x7b, 0x84,
-	0xe2, 0xeb, 0x82, 0x7f, 0x0d, 0xad, 0x05, 0x76, 0x58, 0xf0, 0x1a, 0x42, 0xbf, 0x86, 0xb4, 0xdc,
-	0xbe, 0x83, 0x51, 0x21, 0x87, 0xc4, 0x5f, 0x50, 0xf8, 0x96, 0xe0, 0xbe, 0x87, 0x36, 0x12, 0xb8,
-	0xd2, 0x2f, 0x4d, 0x58, 0x8d, 0xcc, 0xa1, 0xea, 0x7a, 0x8c, 0xc6, 0xfb, 0x5c, 0xf5, 0x13, 0x3d,
-	0xf0, 0xb6, 0xd0, 0x70, 0x0b, 0xe1, 0x8b, 0x34, 0x14, 0x3b, 0x82, 0xf6, 0x39, 0x2c, 0x0f, 0x4f,
-	0x82, 0x43, 0xd0, 0x4a, 0x0c, 0xb9, 0x6c, 0xe6, 0xb3, 0x31, 0xcd, 0xf8, 0xa1, 0xd0, 0x57, 0x40,
-	0x1f, 0x5d, 0xae, 0xaf, 0xf8, 0x8e, 0xff, 0x53, 0xe3, 0x33, 0xfc, 0xbd, 0x06, 0x6b, 0x07, 0x22,
-	0x37, 0xbb, 0xb2, 0xf6, 0xa4, 0xd3, 0xf5, 0x44, 0x18, 0xf0, 0x31, 0xde, 0x19, 0xc5, 0x80, 0xa2,
-	0x4a, 0x0c, 0xbf, 0xd2, 0x20, 0xb7, 0x6f, 0xd1, 0xef, 0xc5, 0x90, 0x1f, 0x0b, 0x43, 0x1e, 0xe1,
-	0x87, 0x23, 0x19, 0x62, 0x4a, 0xed, 0xc8, 0x8c, 0x59, 0x73, 0x1e, 0xcd, 0xc3, 0x6b, 0x8e, 0x42,
-	0x21, 0x5c, 0xc8, 0xaf, 0xb8, 0xe2, 0x4d, 0xc1, 0xfa, 0xad, 0x06, 0x1b, 0xfd, 0x50, 0x1e, 0x56,
-	0xf4, 0x42, 0x98, 0xb1, 0x11, 0x51, 0x20, 0xda, 0xe5, 0x98, 0xc4, 0xa9, 0xdf, 0x15, 0x26, 0xdc,
-	0xc1, 0x57, 0x30, 0x81, 0x47, 0xbc, 0xdf, 0x69, 0xb0, 0x19, 0x63, 0xc5, 0x31, 0xbf, 0x7f, 0xa4,
-	0x19, 0xeb, 0x21, 0x33, 0x84, 0xe0, 0xd8, 0x35, 0x2f, 0xb1, 0xa2, 0x20, 0xac, 0xd8, 0xc2, 0xef,
-	0x5f, 0x68, 0x85, 0xbc, 0xe5, 0xb8, 0x19, 0x2d, 0x58, 0x8b, 0xb8, 0x5c, 0xa8, 0x0a, 0xfb, 0x3c,
-	0x1b, 0xb5, 0x85, 0xe2, 0x0f, 0x85, 0xae, 0x0f, 0xd0, 0x55, 0x74, 0x21, 0x06, 0xeb, 0xb1, 0x6b,
-	0xab, 0xd2, 0xbb, 0xa0, 0xb2, 0xb5, 0x88, 0xff, 0x65, 0x27, 0x7c, 0x4f, 0x28, 0xdc, 0x46, 0x5b,
-	0x97, 0xba, 0x58, 0x65, 0x9a, 0xe8, 0x6b, 0x0d, 0x6e, 0x26, 0xac, 0xb5, 0x60, 0x4a, 0x4f, 0xdf,
-	0x8c, 0x57, 0x78, 0x95, 0x55, 0xdf, 0x11, 0x26, 0xdd, 0xc5, 0x57, 0x36, 0x89, 0x3b, 0xbd, 0x02,
-	0xf3, 0xdc, 0x17, 0x97, 0x05, 0xe6, 0xa5, 0x70, 0x82, 0x4c, 0xfd, 0x44, 0x02, 0x2d, 0xf9, 0xca,
-	0xfc, 0x48, 0x5c, 0x81, 0x85, 0x01, 0xb0, 0x6c, 0x26, 0x23, 0xe7, 0x07, 0x6e, 0x8e, 0xb9, 0xea,
-	0x24, 0xce, 0x32, 0x29, 0x3a, 0x85, 0xb4, 0x4e, 0x1a, 0xae, 0xd3, 0xb0, 0x6c, 0xe2, 0x9b, 0x19,
-	0x1c, 0x9b, 0xe8, 0x8f, 0x0d, 0xc1, 0x5c, 0xc5, 0x51, 0x26, 0x9f, 0xf8, 0x81, 0xb8, 0xe6, 0x63,
-	0xae, 0x8a, 0xa1, 0x87, 0x88, 0x8f, 0x41, 0xcb, 0x43, 0x33, 0x95, 0x77, 0xc3, 0xcf, 0x20, 0x55,
-	0xf2, 0x88, 0xc1, 0x94, 0x69, 0x68, 0x68, 0x74, 0x84, 0xa6, 0x12, 0x1b, 0x3c, 0xec, 0x37, 0x6e,
-	0xd2, 0x2b, 0x48, 0xc9, 0x20, 0x1c, 0x63, 0x55, 0xd2, 0x24, 0xdf, 0x17, 0xbc, 0x4d, 0xbc, 0x1e,
-	0x67, 0x9d, 0x1f, 0x56, 0x7f, 0x09, 0x0b, 0x2a, 0xaa, 0x8e, 0x40, 0x56, 0x77, 0x23, 0xde, 0x88,
-	0x25, 0xfb, 0x71, 0xf2, 0x15, 0xa4, 0x74, 0x52, 0x77, 0x5d, 0xf6, 0xbd, 0xd9, 0xec, 0x09, 0x1c,
-	0x07, 0xef, 0x13, 0x9b, 0xb0, 0xef, 0xe0, 0x8c, 0xed, 0x78, 0xb0, 0x29, 0x70, 0xa8, 0x0b, 0x0b,
-	0xfb, 0xee, 0x5b, 0xc7, 0x76, 0x0d, 0xb3, 0xdc, 0x36, 0x5a, 0x64, 0x70, 0xaf, 0x88, 0x4f, 0x5f,
-	0x96, 0x5f, 0xf1, 0x15, 0x56, 0x3a, 0xc4, 0x13, 0xc5, 0x41, 0xfe, 0xa0, 0xc1, 0x8f, 0x84, 0x8e,
-	0x7b, 0xf8, 0xc3, 0x58, 0x1d, 0x16, 0x47, 0xd4, 0x4c, 0xc5, 0xa0, 0xc5, 0x77, 0xfc, 0xa9, 0xf0,
-	0x05, 0x5f, 0xdc, 0x2f, 0x35, 0x58, 0x3d, 0x24, 0x2c, 0xa4, 0x43, 0x96, 0x01, 0x92, 0x0d, 0x88,
-	0x6b, 0xc6, 0x8f, 0x85, 0x01, 0x0f, 0xd1, 0x83, 0x11, 0x0c, 0x28, 0x52, 0xa9, 0xa9, 0x2b, 0xd2,
-	0xa4, 0x10, 0x6f, 0x44, 0xed, 0x2a, 0xc8, 0xa0, 0x51, 0xa6, 0x8f, 0x9a, 0x32, 0x09, 0x0c, 0x91,
-	0xe8, 0xd0, 0x8a, 0xc6, 0x69, 0xa3, 0xf8, 0x23, 0xa1, 0xee, 0x36, 0xba, 0x75, 0x15, 0x75, 0xe8,
-	0x73, 0xc8, 0x96, 0x78, 0x3e, 0x6b, 0x5f, 0x71, 0x86, 0xb1, 0x0b, 0xac, 0x66, 0xb8, 0x3d, 0xd2,
-	0x0c, 0xff, 0xa8, 0x41, 0x76, 0xb7, 0xc1, 0xac, 0x9e, 0xc1, 0x88, 0xd0, 0x22, 0x63, 0xf5, 0x88,
-	0xaa, 0x4b, 0x42, 0xf5, 0x27, 0xf8, 0x87, 0xa3, 0x2c, 0xad, 0x6c, 0xee, 0x0a, 0x7d, 0x7c, 0xa3,
-	0xfd, 0x41, 0x83, 0x8c, 0x4e, 0x7a, 0xc4, 0x63, 0xff, 0x17, 0x43, 0x3c, 0xa1, 0x5a, 0x3e, 0x29,
-	0x97, 0x06, 0x37, 0x41, 0x34, 0x5f, 0x5e, 0xf0, 0x2d, 0x92, 0x89, 0x32, 0x16, 0x2a, 0x37, 0x50,
-	0x3e, 0x56, 0xa5, 0x4c, 0x90, 0x5f, 0x43, 0x36, 0x40, 0x6c, 0x97, 0xc4, 0x43, 0x39, 0x4c, 0xcd,
-	0xf4, 0xa9, 0xbe, 0x18, 0xdf, 0x11, 0xe4, 0x9b, 0xe8, 0x7a, 0x3c, 0xb9, 0xad, 0x1e, 0xdc, 0x14,
-	0x39, 0xb0, 0x22, 0xbd, 0x35, 0xac, 0x20, 0x0a, 0x4d, 0x0c, 0x41, 0x2a, 0xfb, 0xc3, 0x97, 0x29,
-	0xe3, 0x0e, 0x3a, 0x0d, 0x3a, 0xe8, 0x6a, 0xc9, 0xe5, 0xc5, 0x5e, 0x92, 0x49, 0x25, 0x81, 0xe5,
-	0x30, 0x76, 0x94, 0xbc, 0x66, 0x4b, 0x28, 0xc0, 0xe8, 0x46, 0xa2, 0x02, 0x3f, 0x9f, 0xf9, 0x2c,
-	0x68, 0xbd, 0xac, 0xae, 0x25, 0x5d, 0xf5, 0xd9, 0x68, 0x85, 0x8e, 0x26, 0xdd, 0xab, 0xb2, 0xb4,
-	0x87, 0x74, 0x51, 0x3d, 0x18, 0xf4, 0x1f, 0xf2, 0x4c, 0x84, 0x87, 0x6f, 0x0a, 0xdc, 0x3a, 0xba,
-	0x16, 0x87, 0x93, 0x77, 0x75, 0x0d, 0xd2, 0x03, 0x8b, 0x95, 0x53, 0x92, 0x4c, 0x5e, 0x8e, 0xa9,
-	0x08, 0x52, 0xbf, 0x74, 0x80, 0x56, 0x86, 0x94, 0x28, 0x97, 0x3c, 0x85, 0xf4, 0x09, 0xf3, 0x88,
-	0xd1, 0xae, 0x1a, 0x8d, 0x37, 0x84, 0xd1, 0x4a, 0x97, 0xa1, 0xd5, 0x90, 0xa7, 0xa5, 0xa0, 0xd2,
-	0x65, 0x89, 0x1b, 0x68, 0x6c, 0x4b, 0x43, 0x07, 0x22, 0xe5, 0x21, 0x56, 0x8f, 0x28, 0x50, 0xd9,
-	0xb9, 0xa0, 0x76, 0x10, 0xe5, 0x97, 0x1d, 0x3c, 0x76, 0x4f, 0x43, 0xcf, 0x20, 0xab, 0x30, 0xa5,
-	0x33, 0xc3, 0x69, 0x11, 0x51, 0x97, 0x4c, 0x9e, 0x72, 0x2e, 0x44, 0x0a, 0x0c, 0x11, 0xb0, 0x53,
-	0x58, 0xec, 0x2f, 0x88, 0xfc, 0x89, 0x27, 0x9c, 0x94, 0x47, 0xdd, 0x95, 0xb4, 0x59, 0x95, 0xb7,
-	0xfc, 0x35, 0xc9, 0xc8, 0xfc, 0x29, 0xf8, 0x73, 0x42, 0x5c, 0x25, 0x35, 0x1f, 0xd7, 0x88, 0x6f,
-	0x08, 0x15, 0x79, 0xdc, 0x5f, 0x90, 0x50, 0x61, 0x96, 0x1f, 0xb2, 0x97, 0xc2, 0xee, 0x20, 0x3d,
-	0xf6, 0xd1, 0x1e, 0xfc, 0x91, 0x20, 0x6a, 0x78, 0x88, 0x2a, 0x0d, 0x37, 0x21, 0x23, 0x83, 0xc5,
-	0x77, 0x33, 0xfc, 0x03, 0xa1, 0xe2, 0x7a, 0xfe, 0x02, 0x15, 0xdc, 0x7a, 0x13, 0x32, 0x32, 0x0b,
-	0xba, 0x54, 0x4b, 0xd2, 0x7e, 0x52, 0x73, 0xd9, 0xbe, 0x68, 0x2e, 0xea, 0x60, 0x84, 0x7e, 0x28,
-	0xb9, 0xf4, 0x60, 0x84, 0x3c, 0x16, 0x39, 0x18, 0x21, 0x2d, 0xe8, 0x48, 0x24, 0xdb, 0xe2, 0xea,
-	0xa1, 0xf1, 0xc9, 0xb6, 0x94, 0xf9, 0x19, 0x1c, 0x5a, 0x4f, 0xbe, 0x78, 0x28, 0xfa, 0x05, 0xcc,
-	0xfa, 0x85, 0xe3, 0x10, 0x2c, 0x97, 0x54, 0x81, 0xc6, 0xb7, 0x05, 0xf6, 0x06, 0x7e, 0x2f, 0x16,
-	0x4b, 0x89, 0xdd, 0xac, 0x31, 0x4e, 0x7b, 0x29, 0xf2, 0xa3, 0x50, 0xe1, 0x7d, 0xf8, 0xed, 0x19,
-	0xa9, 0xcc, 0x47, 0x23, 0x0f, 0x3f, 0x46, 0xbc, 0x9f, 0x7a, 0x74, 0x5a, 0x75, 0xf4, 0x19, 0xa0,
-	0x43, 0xc2, 0x86, 0x6a, 0xef, 0x43, 0x05, 0xaa, 0xb8, 0xf2, 0x7c, 0xd4, 0x1f, 0x61, 0xb6, 0xa8,
-	0xf4, 0x23, 0x0a, 0x0b, 0x27, 0x56, 0xbb, 0x6b, 0x1b, 0x8c, 0x88, 0xf1, 0x68, 0xa3, 0xef, 0x88,
-	0x60, 0xb3, 0x4e, 0x7e, 0xd3, 0x25, 0x94, 0x25, 0xdd, 0xf9, 0x91, 0xa2, 0x41, 0xd8, 0x47, 0x8a,
-	0x54, 0xe3, 0x24, 0xbe, 0x33, 0x4b, 0x30, 0xd7, 0x2f, 0xb2, 0xa3, 0x6b, 0xbe, 0xc2, 0x48, 0xf9,
-	0x3d, 0x9f, 0x2c, 0xc2, 0x63, 0xe8, 0x18, 0x40, 0xbe, 0x78, 0x44, 0x81, 0x27, 0x15, 0xcc, 0x08,
-	0x12, 0x37, 0xb4, 0x7a, 0x2a, 0xe2, 0x45, 0x6e, 0xe3, 0x60, 0xb4, 0x7a, 0xcc, 0xaa, 0x77, 0xce,
-	0x08, 0xbc, 0xc1, 0x8b, 0xac, 0x77, 0xbf, 0x18, 0x18, 0xfe, 0x58, 0xdb, 0xde, 0xb3, 0x21, 0xeb,
-	0x7a, 0x2d, 0x11, 0x17, 0x1b, 0xae, 0x67, 0x2a, 0xde, 0x5e, 0x4a, 0x56, 0x7d, 0xab, 0xe2, 0xe7,
-	0xf0, 0x5f, 0x15, 0x5a, 0x16, 0x3b, 0xeb, 0xd6, 0xb9, 0x57, 0x8b, 0x7e, 0x4f, 0xf5, 0x37, 0x07,
-	0x77, 0xfd, 0xbf, 0x40, 0xd8, 0x29, 0xb6, 0x5c, 0xd5, 0xf6, 0xb7, 0xf1, 0xd5, 0x8a, 0xcf, 0x7b,
-	0x19, 0x2c, 0x22, 0x57, 0xc7, 0xab, 0x13, 0xd5, 0xc9, 0xea, 0x54, 0x75, 0xba, 0x3a, 0x53, 0x9d,
-	0xad, 0x4f, 0x8b, 0xb1, 0x3b, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x70, 0x28, 0xbe, 0x4c, 0xcd,
-	0x20, 0x00, 0x00,
+	// 2488 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x4b, 0x73, 0xdb, 0xc8,
+	0xf1, 0x17, 0xf4, 0x56, 0x8b, 0x92, 0xc8, 0xa1, 0x1e, 0x34, 0x25, 0xf9, 0x31, 0xeb, 0xb5, 0xf5,
+	0xd7, 0xae, 0x49, 0xdb, 0xb2, 0x5d, 0xff, 0xd8, 0xd9, 0xca, 0xea, 0x65, 0x85, 0xb1, 0x65, 0x32,
+	0xa0, 0x65, 0xe7, 0xb1, 0x2e, 0x16, 0x48, 0x0c, 0x29, 0x94, 0x41, 0x82, 0x01, 0x86, 0xf2, 0xaa,
+	0x5c, 0x5b, 0xa9, 0xda, 0x3c, 0x36, 0xf7, 0xbd, 0xe7, 0x94, 0x54, 0xaa, 0xf2, 0x1d, 0xf2, 0x11,
+	0xf6, 0x94, 0x53, 0xae, 0xa9, 0x1c, 0xf2, 0x09, 0xf6, 0x9c, 0x9a, 0x9e, 0x01, 0x09, 0x10, 0x80,
+	0x1e, 0x9b, 0xad, 0xca, 0x49, 0xc2, 0x74, 0xcf, 0xef, 0xd7, 0xd3, 0x3d, 0xd3, 0xd3, 0x68, 0x10,
+	0xf2, 0x27, 0x8e, 0xcd, 0x8f, 0x8d, 0x5a, 0xd7, 0x75, 0xb8, 0xe3, 0x15, 0xe5, 0x53, 0x01, 0x9f,
+	0xc8, 0xa4, 0x7c, 0xca, 0xaf, 0xb5, 0x1c, 0xa7, 0x65, 0xb3, 0xa2, 0xd1, 0xb5, 0x8a, 0x46, 0xa7,
+	0xe3, 0x70, 0x83, 0x5b, 0x4e, 0xc7, 0x93, 0x5a, 0xf9, 0x55, 0x25, 0xc5, 0xa7, 0x7a, 0xaf, 0x59,
+	0x64, 0xed, 0x2e, 0x3f, 0x55, 0xc2, 0x5c, 0x18, 0xbe, 0xcd, 0xb8, 0x02, 0xcf, 0x0f, 0x11, 0x37,
+	0x9c, 0x76, 0xdb, 0xe9, 0xc4, 0xcb, 0x8e, 0x99, 0x61, 0xf3, 0x63, 0x25, 0xa3, 0x61, 0x99, 0xed,
+	0xb4, 0xac, 0x86, 0x61, 0xd7, 0x4c, 0x76, 0x62, 0x35, 0x58, 0xfc, 0xfc, 0x90, 0x6c, 0x35, 0x2c,
+	0x33, 0x4c, 0xa3, 0xcb, 0x99, 0xab, 0x84, 0xd7, 0xc2, 0x42, 0xa7, 0xcb, 0x3a, 0x4d, 0xdb, 0x79,
+	0x57, 0xbb, 0xb7, 0x95, 0xa0, 0xd0, 0x6e, 0x58, 0xb5, 0xb6, 0x55, 0xaf, 0x99, 0x75, 0xa5, 0x70,
+	0x23, 0x46, 0xc1, 0xb0, 0x0d, 0xb7, 0xdd, 0x57, 0xa1, 0x7f, 0xd2, 0x60, 0x76, 0x0f, 0x4d, 0x3a,
+	0x70, 0x9d, 0x5e, 0x97, 0x2c, 0xc1, 0xa8, 0x65, 0xe6, 0xb4, 0xeb, 0xda, 0xc6, 0xcc, 0xce, 0xc4,
+	0xbf, 0xbf, 0xfd, 0x66, 0x5d, 0xd3, 0x47, 0x2d, 0x93, 0x94, 0x60, 0x21, 0xbc, 0x38, 0x2f, 0x37,
+	0x7a, 0x7d, 0x6c, 0x63, 0xf6, 0xfe, 0x52, 0x41, 0x45, 0xe9, 0xb9, 0x14, 0x4b, 0xac, 0x9d, 0x99,
+	0x7f, 0x7e, 0xfb, 0xcd, 0xfa, 0xb8, 0xc0, 0xd2, 0xe7, 0xed, 0xa0, 0xc4, 0x23, 0x5b, 0x30, 0xe5,
+	0x43, 0x8c, 0x21, 0xc4, 0xbc, 0x0f, 0x11, 0x9d, 0xeb, 0x6b, 0xd2, 0x1f, 0x40, 0x2a, 0x60, 0xa5,
+	0x47, 0xfe, 0x0f, 0x26, 0x2c, 0xce, 0xda, 0x5e, 0x4e, 0x43, 0x88, 0x6c, 0x18, 0x02, 0x95, 0x74,
+	0xa9, 0x41, 0xff, 0xa8, 0x01, 0xd9, 0x3f, 0x61, 0x1d, 0xfe, 0xd4, 0xb2, 0x39, 0x73, 0xf5, 0x9e,
+	0xcd, 0x9e, 0xb1, 0x53, 0xfa, 0x95, 0x06, 0xd9, 0xa1, 0xe1, 0x97, 0xa7, 0x5d, 0x46, 0xe6, 0x01,
+	0x9a, 0x38, 0x52, 0x33, 0x6c, 0x3b, 0x3d, 0x42, 0x52, 0x30, 0xdd, 0x30, 0x38, 0x6b, 0x39, 0xee,
+	0x69, 0x5a, 0x23, 0x69, 0x48, 0x79, 0xbd, 0x7a, 0xad, 0x3f, 0x32, 0x4a, 0x08, 0xcc, 0xbf, 0xed,
+	0x5a, 0x35, 0x26, 0xa0, 0x6a, 0xfc, 0xb4, 0xcb, 0xd2, 0x63, 0x64, 0x09, 0x32, 0x0d, 0xa7, 0xd3,
+	0xb4, 0x5a, 0xc1, 0xe1, 0x71, 0x31, 0x2c, 0xd7, 0x13, 0x1c, 0x9e, 0xa0, 0x16, 0x2c, 0x0c, 0x19,
+	0x42, 0x3e, 0x85, 0xb1, 0xb7, 0xec, 0x14, 0xc3, 0x30, 0x7f, 0xbf, 0xe0, 0x2f, 0x2e, 0xba, 0x8a,
+	0x42, 0xcc, 0x0a, 0x74, 0x31, 0x95, 0x2c, 0xc2, 0xc4, 0x89, 0x61, 0xf7, 0x58, 0x6e, 0x54, 0x84,
+	0x52, 0x97, 0x0f, 0xf4, 0x2f, 0x1a, 0xcc, 0x06, 0xa6, 0x24, 0x45, 0x7b, 0x19, 0x26, 0x59, 0xc7,
+	0xa8, 0xdb, 0x72, 0xf6, 0xb4, 0xae, 0x9e, 0xc8, 0x2a, 0xcc, 0xa8, 0x05, 0x58, 0x66, 0x6e, 0x0c,
+	0x81, 0xa7, 0xe5, 0x40, 0xc9, 0x24, 0xeb, 0x00, 0x83, 0x65, 0xe5, 0xc6, 0x51, 0x3a, 0x83, 0x23,
+	0xe8, 0xd7, 0x3b, 0x30, 0xe1, 0xf6, 0x6c, 0xe6, 0xe5, 0x26, 0x30, 0x62, 0x2b, 0x09, 0x8b, 0xd2,
+	0xa5, 0x16, 0xfd, 0x04, 0x52, 0x01, 0x89, 0x47, 0xee, 0xc0, 0x94, 0x0c, 0x4b, 0x24, 0xe4, 0x41,
+	0x00, 0x5f, 0x87, 0xbe, 0x85, 0xd4, 0xae, 0xe3, 0xb2, 0x52, 0xc7, 0xe3, 0x46, 0xa7, 0xc1, 0xc8,
+	0x2d, 0x98, 0xb5, 0xd4, 0xff, 0xb5, 0xe1, 0x15, 0x83, 0x2f, 0x29, 0x99, 0x64, 0x0b, 0x26, 0xe5,
+	0x01, 0xc7, 0x95, 0xcf, 0xde, 0x5f, 0xf4, 0x59, 0x7e, 0x8c, 0xa3, 0x55, 0x6e, 0xf0, 0x9e, 0xb7,
+	0x33, 0x21, 0x76, 0xe8, 0x88, 0xae, 0x54, 0xe9, 0x13, 0x98, 0x0b, 0x92, 0x79, 0x64, 0x33, 0xbc,
+	0x3b, 0xfb, 0x20, 0x41, 0x2d, 0x7f, 0x7b, 0x3e, 0x84, 0x85, 0x72, 0xbb, 0x61, 0xbd, 0x64, 0x1e,
+	0xd7, 0xd9, 0xaf, 0x7a, 0xcc, 0xe3, 0x64, 0x7e, 0x10, 0x15, 0x0c, 0x07, 0x81, 0xf1, 0x5e, 0xcf,
+	0x32, 0x55, 0x28, 0xf1, 0x7f, 0xfa, 0x6b, 0x48, 0xc9, 0x29, 0x5e, 0xd7, 0xe9, 0x78, 0x8c, 0xfc,
+	0x08, 0x26, 0x5d, 0xe6, 0xf5, 0x6c, 0xae, 0x36, 0xcd, 0x6d, 0x9f, 0x33, 0xa8, 0x15, 0x7a, 0xd0,
+	0x51, 0x5d, 0x57, 0xd3, 0x68, 0x01, 0x48, 0x54, 0x4a, 0x66, 0x61, 0xaa, 0x7a, 0xb4, 0xbb, 0xbb,
+	0x5f, 0xad, 0xa6, 0x47, 0xc4, 0xc3, 0xd3, 0xed, 0xd2, 0xf3, 0x23, 0x7d, 0x3f, 0xad, 0xd1, 0x7f,
+	0x8c, 0xc3, 0xe4, 0x2b, 0xa4, 0x20, 0xd7, 0x60, 0xea, 0x84, 0xb9, 0x9e, 0xe5, 0x74, 0xc2, 0x8e,
+	0xf5, 0x47, 0xc9, 0x23, 0x98, 0x56, 0xa9, 0xcd, 0x4f, 0x1b, 0x0b, 0xbe, 0x79, 0xdb, 0x72, 0x3c,
+	0x78, 0xe8, 0xfb, 0xba, 0x71, 0x59, 0x67, 0xec, 0xbf, 0xcf, 0x3a, 0xe3, 0x17, 0xcd, 0x3a, 0xe4,
+	0x53, 0x48, 0xa9, 0xfd, 0x2e, 0xf6, 0xb4, 0xbf, 0x75, 0x49, 0x78, 0xa6, 0xd8, 0xdd, 0xc1, 0xd9,
+	0xb3, 0x66, 0x7f, 0xd8, 0x23, 0xbb, 0x30, 0xa7, 0x10, 0x5a, 0x98, 0xb8, 0x72, 0x93, 0x89, 0xf9,
+	0x2a, 0x88, 0xa1, 0x68, 0x55, 0xb2, 0xdb, 0x85, 0x39, 0x79, 0xb2, 0xfc, 0x13, 0x30, 0x95, 0x78,
+	0x02, 0x42, 0x20, 0x2c, 0x78, 0x80, 0x7e, 0x0a, 0x99, 0xc1, 0x05, 0x61, 0x70, 0xa3, 0x6e, 0x78,
+	0x2c, 0xb7, 0xa6, 0x80, 0x84, 0xa4, 0x70, 0x68, 0xd5, 0xa5, 0x39, 0x7b, 0x06, 0x37, 0x76, 0xd2,
+	0x02, 0x68, 0x36, 0x70, 0xe0, 0xf5, 0x05, 0xa1, 0x25, 0x94, 0xd4, 0x6c, 0xf2, 0x1a, 0xb2, 0xc1,
+	0x2b, 0xc5, 0x07, 0x5d, 0x57, 0x21, 0x42, 0xd0, 0x6d, 0x21, 0x3b, 0x13, 0x16, 0xcd, 0x92, 0x6a,
+	0x0a, 0x81, 0xfe, 0x59, 0x83, 0x74, 0x95, 0xd9, 0xcd, 0x8b, 0xed, 0xf0, 0x61, 0xcd, 0xe0, 0x40,
+	0x70, 0x87, 0x57, 0x60, 0x3e, 0x2c, 0x49, 0xde, 0xdd, 0x24, 0x03, 0x73, 0x2f, 0xca, 0x2f, 0x6b,
+	0xd5, 0xa3, 0x4a, 0xa5, 0xac, 0xbf, 0xdc, 0xdf, 0x4b, 0x8f, 0x8a, 0xa1, 0xa3, 0x17, 0xcf, 0x5e,
+	0x94, 0x5f, 0xbf, 0xa8, 0xed, 0xeb, 0x7a, 0x59, 0x4f, 0x8f, 0xd1, 0x32, 0x64, 0xca, 0xcd, 0xed,
+	0x16, 0xeb, 0xf0, 0x6a, 0xaf, 0xee, 0x35, 0x5c, 0xab, 0xce, 0x5c, 0x91, 0x07, 0x9d, 0xa6, 0x21,
+	0x06, 0xfb, 0x99, 0x46, 0x9f, 0x51, 0x23, 0x25, 0x53, 0xe4, 0x50, 0x75, 0x2b, 0xf7, 0x4f, 0xf4,
+	0xb4, 0x1c, 0x28, 0x99, 0xf4, 0x09, 0xc0, 0x21, 0x6b, 0xd7, 0x99, 0xeb, 0x1d, 0x5b, 0x5d, 0x81,
+	0x84, 0xbb, 0xa6, 0xd6, 0x31, 0xda, 0xcc, 0x47, 0xc2, 0x91, 0x17, 0x46, 0x9b, 0xa9, 0x34, 0x31,
+	0xea, 0xa7, 0x09, 0xba, 0x0f, 0xa9, 0xa7, 0xb6, 0xf3, 0xee, 0x90, 0x71, 0x43, 0xc4, 0x82, 0x3c,
+	0x84, 0xc9, 0x36, 0x0b, 0x64, 0xcc, 0xf5, 0x42, 0xb0, 0x84, 0x70, 0x9a, 0xdd, 0x1a, 0x8a, 0x6b,
+	0xf2, 0xaa, 0xd2, 0x95, 0xf2, 0xfd, 0xbf, 0x15, 0x60, 0x4e, 0x1e, 0xec, 0x2a, 0x73, 0x45, 0x90,
+	0xc8, 0x6b, 0x98, 0x3b, 0x60, 0x3c, 0x60, 0xd8, 0x72, 0x41, 0x96, 0x59, 0x05, 0xbf, 0xcc, 0x2a,
+	0xec, 0x8b, 0x32, 0x2b, 0xdf, 0x3f, 0x19, 0x03, 0x5d, 0x9a, 0xff, 0xf2, 0xef, 0xff, 0xfa, 0x7a,
+	0x74, 0x91, 0x10, 0xac, 0xd8, 0x4e, 0xee, 0x15, 0xdb, 0x03, 0x9c, 0x37, 0x90, 0x3e, 0xea, 0x9a,
+	0x06, 0x67, 0x01, 0xec, 0x18, 0x8c, 0x7c, 0x02, 0x1f, 0x5d, 0x47, 0xec, 0x15, 0x1a, 0x83, 0xfd,
+	0x58, 0xdb, 0x24, 0x7b, 0x30, 0x73, 0xc0, 0xb8, 0x4a, 0x52, 0x49, 0x36, 0xf7, 0xf3, 0x80, 0xd4,
+	0xa3, 0x0b, 0x88, 0x39, 0x43, 0xa6, 0x14, 0x26, 0x79, 0x03, 0x99, 0xe7, 0x96, 0xc7, 0xc3, 0x19,
+	0x3e, 0x09, 0x6d, 0x29, 0x2e, 0xd5, 0x7b, 0xf4, 0x0a, 0x82, 0x66, 0x49, 0xc6, 0x37, 0xd4, 0xea,
+	0x23, 0x55, 0x61, 0xe1, 0x80, 0x85, 0xd0, 0x09, 0x14, 0x54, 0x01, 0x5a, 0xda, 0xcb, 0xc7, 0xde,
+	0x1d, 0xf4, 0x2a, 0xe2, 0xe5, 0xc8, 0x72, 0x04, 0xaf, 0xf8, 0xde, 0x32, 0xbf, 0x20, 0x3a, 0xa4,
+	0x84, 0xcd, 0xdb, 0x7e, 0x22, 0x4d, 0x32, 0x37, 0x3d, 0x94, 0x86, 0x3d, 0x9a, 0x43, 0x64, 0x42,
+	0xd2, 0x3e, 0x72, 0x3f, 0x19, 0x33, 0x20, 0x02, 0xf3, 0x79, 0x38, 0xaf, 0x26, 0x21, 0x2f, 0xc7,
+	0x66, 0x68, 0x8f, 0x5e, 0x43, 0xfc, 0x2b, 0x64, 0xc5, 0xc7, 0x1f, 0x4a, 0xf0, 0xe4, 0x97, 0x90,
+	0x3e, 0x60, 0x61, 0x96, 0x90, 0x43, 0xe2, 0x53, 0x3f, 0xbd, 0x89, 0xb8, 0x57, 0xc9, 0x5a, 0x02,
+	0xae, 0xf4, 0x4b, 0x13, 0x96, 0x23, 0x6b, 0xa8, 0x38, 0x2e, 0xf7, 0xe2, 0x7d, 0xae, 0xf4, 0x50,
+	0x83, 0x6e, 0x22, 0xc3, 0x4d, 0x42, 0xcf, 0x62, 0x28, 0x76, 0x11, 0xed, 0x73, 0x58, 0x1c, 0x5e,
+	0x84, 0x00, 0x21, 0x4b, 0x31, 0xc8, 0x25, 0x33, 0x9f, 0x8d, 0x19, 0xa6, 0x0f, 0x90, 0xaf, 0x40,
+	0x3e, 0x3e, 0x9f, 0xaf, 0xf8, 0x5e, 0xfc, 0xa9, 0x89, 0x15, 0xfe, 0x4e, 0x83, 0x95, 0x7d, 0xac,
+	0xd6, 0x2e, 0xcc, 0x9e, 0x74, 0xba, 0x9e, 0xa0, 0x01, 0x0f, 0xe9, 0xd6, 0x65, 0x0c, 0x28, 0xaa,
+	0x52, 0xf1, 0x2b, 0x0d, 0x72, 0x7b, 0x96, 0xf7, 0xbd, 0x18, 0xf2, 0x43, 0x34, 0xe4, 0x11, 0x7d,
+	0x70, 0x29, 0x43, 0x4c, 0xc9, 0x4e, 0xcc, 0x98, 0x98, 0x8b, 0x3c, 0x19, 0x8e, 0x39, 0x09, 0x25,
+	0x47, 0x94, 0x5f, 0x30, 0xe2, 0x4d, 0xc4, 0xfa, 0x8d, 0x06, 0x6b, 0x32, 0x97, 0x45, 0x88, 0x5e,
+	0xa2, 0x19, 0x6b, 0x11, 0x02, 0x1c, 0x97, 0x73, 0x12, 0x97, 0x7e, 0x07, 0x4d, 0xb8, 0x4d, 0x2f,
+	0x60, 0x82, 0xc8, 0x78, 0xbf, 0xd5, 0x60, 0x3d, 0xc6, 0x8a, 0x43, 0x91, 0xd9, 0xa5, 0x19, 0xab,
+	0x21, 0x33, 0x50, 0x70, 0xe8, 0x98, 0xe7, 0x58, 0x51, 0x40, 0x2b, 0x36, 0xe8, 0x07, 0x67, 0x5a,
+	0x21, 0xef, 0x0f, 0x61, 0x46, 0x0b, 0x56, 0x22, 0x2e, 0x47, 0xaa, 0xb0, 0xcf, 0xb3, 0x51, 0x5b,
+	0x3c, 0xfa, 0x11, 0x72, 0x7d, 0x48, 0x2e, 0xc2, 0x45, 0x38, 0xac, 0xc6, 0xc6, 0x56, 0x15, 0x4e,
+	0x41, 0xb2, 0x95, 0x88, 0xff, 0xa5, 0x12, 0xbd, 0x8b, 0x84, 0x9b, 0x64, 0xe3, 0x5c, 0x17, 0xab,
+	0x1a, 0x8e, 0x7c, 0xad, 0xc1, 0x8d, 0x84, 0x58, 0x23, 0xa6, 0xf4, 0xf4, 0x8d, 0x78, 0xc2, 0x8b,
+	0x44, 0x7d, 0x0b, 0x4d, 0xba, 0x43, 0x2f, 0x6c, 0x92, 0x70, 0x7a, 0x19, 0x66, 0x85, 0x2f, 0xce,
+	0x4b, 0xcc, 0x0b, 0xe1, 0xd2, 0xd3, 0xa3, 0x2b, 0x48, 0x96, 0x21, 0x0b, 0x3e, 0x99, 0x9f, 0x89,
+	0xcb, 0x30, 0x37, 0x00, 0x2c, 0x99, 0xc9, 0x90, 0xb3, 0x03, 0x37, 0xc7, 0x5c, 0x75, 0x12, 0xce,
+	0x32, 0x3d, 0x72, 0x04, 0x69, 0x9d, 0x35, 0x9c, 0x4e, 0xc3, 0xb2, 0x99, 0x6f, 0x66, 0x70, 0x6e,
+	0xa2, 0x3f, 0xd6, 0x10, 0x73, 0x99, 0x46, 0x31, 0xc5, 0xc2, 0xf7, 0xf1, 0x9a, 0x8f, 0xb9, 0x2a,
+	0x86, 0x4a, 0x7c, 0x1f, 0x86, 0x2c, 0x0e, 0xad, 0x54, 0xde, 0x0d, 0x3f, 0x81, 0xd4, 0xae, 0xcb,
+	0x0c, 0xae, 0x4c, 0x23, 0x43, 0xb3, 0x23, 0x68, 0xaa, 0xb0, 0xa1, 0xc3, 0x7e, 0x13, 0x26, 0xbd,
+	0x86, 0x94, 0x4c, 0xc2, 0x31, 0x56, 0x25, 0x2d, 0xf2, 0x03, 0xc4, 0x5b, 0xa7, 0xab, 0x71, 0xd6,
+	0xf9, 0x69, 0xf5, 0xe7, 0x30, 0xa7, 0xb2, 0xea, 0x25, 0x90, 0xd5, 0xdd, 0x48, 0xd7, 0x62, 0x91,
+	0xfd, 0x3c, 0xf9, 0x1a, 0x52, 0x3a, 0xab, 0x3b, 0x0e, 0xff, 0xde, 0x6c, 0x76, 0x11, 0x4e, 0x00,
+	0xef, 0x31, 0x9b, 0xf1, 0xef, 0xe0, 0x8c, 0xcd, 0x78, 0x60, 0x13, 0xe1, 0x48, 0x0f, 0xe6, 0xf6,
+	0x9c, 0x77, 0x1d, 0xdb, 0x31, 0xcc, 0x52, 0xdb, 0x68, 0xb1, 0xc1, 0xbd, 0x82, 0x8f, 0xbe, 0x2c,
+	0xbf, 0xe4, 0x13, 0x96, 0xbb, 0xcc, 0xc5, 0x76, 0xa1, 0x78, 0x55, 0xa0, 0x8f, 0x90, 0xe3, 0x2e,
+	0xfd, 0x28, 0x96, 0xc3, 0x12, 0x10, 0x35, 0x53, 0x61, 0x78, 0xc5, 0xf7, 0xa2, 0x08, 0xff, 0x42,
+	0x04, 0xf7, 0x4b, 0x0d, 0x96, 0x0f, 0x18, 0x0f, 0x71, 0xc8, 0xc6, 0x40, 0xb2, 0x01, 0x71, 0xc3,
+	0xf4, 0x31, 0x1a, 0xf0, 0x80, 0xdc, 0xbf, 0x84, 0x01, 0x45, 0x4f, 0x32, 0xf5, 0xb0, 0x4c, 0x0a,
+	0xe1, 0x5d, 0x92, 0x5d, 0x25, 0x19, 0x72, 0x99, 0xe5, 0x93, 0xa6, 0x2c, 0x02, 0x43, 0x48, 0xde,
+	0x50, 0x44, 0xe3, 0xd8, 0x3c, 0xfa, 0x31, 0xd2, 0xdd, 0x22, 0x37, 0x2f, 0x42, 0x47, 0x3e, 0x87,
+	0xec, 0xae, 0xa8, 0x67, 0xed, 0x0b, 0xae, 0x30, 0x36, 0xc0, 0x6a, 0x85, 0x9b, 0x97, 0x5a, 0xe1,
+	0x1f, 0x34, 0xc8, 0x6e, 0x37, 0xb8, 0x75, 0x62, 0x70, 0x86, 0x2c, 0x32, 0x57, 0x5f, 0x92, 0x7a,
+	0x17, 0xa9, 0x3f, 0xa1, 0xff, 0x7f, 0x99, 0xd0, 0xca, 0xe1, 0x1e, 0xf2, 0x89, 0x8d, 0xf6, 0x7b,
+	0x0d, 0x32, 0x3a, 0x3b, 0x61, 0x2e, 0xff, 0x9f, 0x18, 0xe2, 0x22, 0xb5, 0x30, 0xa4, 0x02, 0x0b,
+	0x83, 0x9b, 0x20, 0x5a, 0x2f, 0xcf, 0xf9, 0x16, 0xc9, 0x42, 0x99, 0x22, 0xe5, 0x1a, 0xc9, 0xc7,
+	0x52, 0xca, 0x02, 0xf9, 0x0d, 0x64, 0x03, 0x88, 0xed, 0x5d, 0x7c, 0x05, 0x0d, 0xa3, 0x66, 0xfa,
+	0xa8, 0xbe, 0x98, 0xde, 0x46, 0xe4, 0x1b, 0xe4, 0x5a, 0x3c, 0x72, 0x5b, 0xbd, 0xca, 0x7a, 0xa4,
+	0x03, 0x4b, 0xd2, 0x5b, 0xc3, 0x04, 0x51, 0xd0, 0xc4, 0x14, 0xa4, 0xaa, 0x3f, 0x7a, 0x1e, 0x99,
+	0x70, 0xd0, 0x51, 0xd0, 0x41, 0x17, 0x2b, 0x2e, 0xcf, 0xf6, 0x92, 0x2c, 0x2a, 0x19, 0x2c, 0x86,
+	0x61, 0x2f, 0x53, 0xd7, 0x6c, 0x20, 0x01, 0x25, 0xd7, 0x13, 0x09, 0xfc, 0x7a, 0xe6, 0xb3, 0xa0,
+	0xf5, 0xb2, 0x6f, 0x95, 0x74, 0xd5, 0x67, 0xa3, 0xbd, 0x2f, 0x2f, 0xe9, 0x5e, 0x95, 0x4d, 0x33,
+	0xa2, 0x63, 0xf7, 0x60, 0xa0, 0x3f, 0xe4, 0x99, 0x08, 0x1e, 0xbd, 0x81, 0x70, 0xab, 0xe4, 0x4a,
+	0x1c, 0x9c, 0xbc, 0xab, 0x6b, 0x90, 0x1e, 0x58, 0xac, 0x9c, 0x92, 0x64, 0xf2, 0x62, 0x4c, 0xaf,
+	0xcd, 0xf3, 0x5b, 0x07, 0x64, 0x69, 0x88, 0x44, 0xb9, 0xe4, 0x29, 0xa4, 0xab, 0xdc, 0x65, 0x46,
+	0xbb, 0x62, 0x34, 0xde, 0x32, 0xee, 0x95, 0x7b, 0x9c, 0x2c, 0x87, 0x3c, 0x2d, 0x05, 0xe5, 0x1e,
+	0x4f, 0xdc, 0x40, 0x23, 0x1b, 0x1a, 0xd9, 0xc7, 0x92, 0x87, 0x59, 0x27, 0x4c, 0x01, 0x95, 0x3a,
+	0x67, 0xf4, 0x0e, 0xa2, 0xf8, 0xa5, 0x0e, 0x1d, 0xb9, 0xab, 0x91, 0x67, 0x90, 0x55, 0x30, 0xbb,
+	0xc7, 0x46, 0xa7, 0xc5, 0xb0, 0xe3, 0x97, 0xbc, 0xe4, 0x5c, 0x08, 0x29, 0x30, 0x05, 0xc1, 0x8e,
+	0x60, 0xbe, 0x1f, 0x10, 0xf9, 0xd1, 0x27, 0x5c, 0x94, 0x47, 0xdd, 0x95, 0xb4, 0x59, 0x95, 0xb7,
+	0xfc, 0x98, 0x64, 0x64, 0xfd, 0x14, 0xfc, 0xc0, 0x10, 0xd7, 0xa3, 0xcc, 0xc7, 0x0d, 0xd2, 0xeb,
+	0x48, 0x91, 0xa7, 0xfd, 0x80, 0x84, 0x5a, 0x9e, 0xe2, 0x90, 0xbd, 0x42, 0xbb, 0x83, 0xe8, 0xb1,
+	0x2f, 0xed, 0xc1, 0xcf, 0x06, 0x51, 0xc3, 0x43, 0xa8, 0xd2, 0x70, 0x13, 0x32, 0x32, 0x59, 0x7c,
+	0x37, 0xc3, 0x3f, 0x44, 0x8a, 0x6b, 0xf9, 0x33, 0x28, 0x84, 0xf5, 0x26, 0x64, 0x64, 0x15, 0x74,
+	0x2e, 0x4b, 0xd2, 0x7e, 0x52, 0x6b, 0xd9, 0x3c, 0x6b, 0x2d, 0xea, 0x60, 0x84, 0x3e, 0x9d, 0x9c,
+	0x7b, 0x30, 0x42, 0x1e, 0x8b, 0x1c, 0x8c, 0x10, 0x0b, 0x79, 0x8e, 0xc5, 0x36, 0x5e, 0x3d, 0x5e,
+	0x7c, 0xb1, 0x2d, 0x65, 0x7e, 0x05, 0x47, 0x56, 0x93, 0x2f, 0x1e, 0x8f, 0xfc, 0x0c, 0xa6, 0xfd,
+	0x96, 0x6c, 0x08, 0x2c, 0x97, 0xd4, 0xdb, 0xa5, 0xb7, 0x10, 0xf6, 0x3a, 0xbd, 0x1a, 0x0b, 0xeb,
+	0x31, 0xbb, 0x59, 0xe3, 0x02, 0xed, 0x15, 0xd6, 0x47, 0xa1, 0x96, 0xf6, 0xf0, 0xbb, 0x67, 0xa4,
+	0xe7, 0x1d, 0xcd, 0x3c, 0xe2, 0x18, 0x09, 0x3d, 0xf5, 0xd2, 0x69, 0xd5, 0xc9, 0x67, 0x40, 0x0e,
+	0x18, 0x1f, 0xea, 0x6a, 0x0f, 0x35, 0xa8, 0xe2, 0x1a, 0xdf, 0x51, 0x7f, 0x84, 0xb1, 0xb1, 0x87,
+	0x4e, 0x3c, 0x98, 0xab, 0x5a, 0xed, 0x9e, 0x6d, 0x70, 0x86, 0xf3, 0xc9, 0x5a, 0xdf, 0x11, 0xc1,
+	0x61, 0xf5, 0xa1, 0x28, 0xe9, 0xce, 0x8f, 0x34, 0x0d, 0xc2, 0x3e, 0x52, 0x48, 0x35, 0x81, 0x24,
+	0x76, 0xe6, 0x2e, 0xcc, 0xf4, 0xdb, 0xd7, 0xe4, 0x8a, 0x4f, 0x18, 0x69, 0x6c, 0xe7, 0x93, 0x45,
+	0x74, 0x84, 0x1c, 0x02, 0xc8, 0x37, 0x1e, 0x6c, 0xf0, 0xa4, 0x82, 0x15, 0x41, 0xe2, 0x86, 0x56,
+	0xaf, 0x8a, 0x74, 0x5e, 0xd8, 0x38, 0x98, 0xad, 0x5e, 0x66, 0xd5, 0x7b, 0xce, 0x25, 0xf0, 0x06,
+	0x6f, 0x64, 0x27, 0xf7, 0x8a, 0x81, 0xe9, 0x02, 0xf0, 0x18, 0xb2, 0x55, 0x6e, 0xb8, 0xdc, 0xff,
+	0xd6, 0x26, 0x4a, 0x3c, 0xa7, 0x43, 0xfa, 0x9f, 0x21, 0x87, 0xbe, 0xc1, 0x0d, 0x0e, 0x47, 0x68,
+	0xf7, 0xa9, 0x23, 0x48, 0xfb, 0xdd, 0x4b, 0x4f, 0x60, 0xd6, 0xf0, 0x2b, 0x88, 0xd8, 0x76, 0x8f,
+	0xb5, 0xcd, 0x1d, 0x1b, 0xb2, 0x8e, 0xdb, 0xc2, 0x0c, 0xdc, 0x70, 0x5c, 0x53, 0xe1, 0xec, 0xa4,
+	0x64, 0x7f, 0xb9, 0x82, 0x9f, 0xe2, 0x7f, 0x51, 0x68, 0x59, 0xfc, 0xb8, 0x57, 0x17, 0xf1, 0x2b,
+	0xfa, 0x9a, 0xea, 0xf7, 0x0e, 0x77, 0xfc, 0x5f, 0x3f, 0x6c, 0x15, 0x5b, 0x8e, 0x1a, 0xfb, 0xeb,
+	0xe8, 0x72, 0xd9, 0xc7, 0x7b, 0x15, 0x6c, 0x57, 0x57, 0x46, 0x2b, 0x63, 0x95, 0xf1, 0xca, 0x44,
+	0x65, 0xb2, 0x32, 0x55, 0x99, 0xae, 0x4f, 0xe2, 0xdc, 0xad, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff,
+	0x68, 0xe5, 0x85, 0x3e, 0x49, 0x21, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -2185,9 +2275,6 @@
 //
 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
 type VolthaServiceClient interface {
-	// Get more information on a given physical device
-	UpdateLogLevel(ctx context.Context, in *common.Logging, opts ...grpc.CallOption) (*empty.Empty, error)
-	GetLogLevels(ctx context.Context, in *common.LoggingComponent, opts ...grpc.CallOption) (*common.Loggings, error)
 	// Get the membership group of a Voltha Core
 	GetMembership(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Membership, error)
 	// Set the membership group of a Voltha Core
@@ -2314,6 +2401,8 @@
 	Subscribe(ctx context.Context, in *OfAgentSubscriber, opts ...grpc.CallOption) (*OfAgentSubscriber, error)
 	EnablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*empty.Empty, error)
 	DisablePort(ctx context.Context, in *Port, opts ...grpc.CallOption) (*empty.Empty, error)
+	// omci start and stop cli implementation
+	StartOmciTestAction(ctx context.Context, in *OmciTestRequest, opts ...grpc.CallOption) (*TestResponse, error)
 }
 
 type volthaServiceClient struct {
@@ -2324,24 +2413,6 @@
 	return &volthaServiceClient{cc}
 }
 
-func (c *volthaServiceClient) UpdateLogLevel(ctx context.Context, in *common.Logging, opts ...grpc.CallOption) (*empty.Empty, error) {
-	out := new(empty.Empty)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/UpdateLogLevel", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
-func (c *volthaServiceClient) GetLogLevels(ctx context.Context, in *common.LoggingComponent, opts ...grpc.CallOption) (*common.Loggings, error) {
-	out := new(common.Loggings)
-	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetLogLevels", in, out, opts...)
-	if err != nil {
-		return nil, err
-	}
-	return out, nil
-}
-
 func (c *volthaServiceClient) GetMembership(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (*Membership, error) {
 	out := new(Membership)
 	err := c.cc.Invoke(ctx, "/voltha.VolthaService/GetMembership", in, out, opts...)
@@ -2944,11 +3015,17 @@
 	return out, nil
 }
 
+func (c *volthaServiceClient) StartOmciTestAction(ctx context.Context, in *OmciTestRequest, opts ...grpc.CallOption) (*TestResponse, error) {
+	out := new(TestResponse)
+	err := c.cc.Invoke(ctx, "/voltha.VolthaService/StartOmciTestAction", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // VolthaServiceServer is the server API for VolthaService service.
 type VolthaServiceServer interface {
-	// Get more information on a given physical device
-	UpdateLogLevel(context.Context, *common.Logging) (*empty.Empty, error)
-	GetLogLevels(context.Context, *common.LoggingComponent) (*common.Loggings, error)
 	// Get the membership group of a Voltha Core
 	GetMembership(context.Context, *empty.Empty) (*Membership, error)
 	// Set the membership group of a Voltha Core
@@ -3075,48 +3152,14 @@
 	Subscribe(context.Context, *OfAgentSubscriber) (*OfAgentSubscriber, error)
 	EnablePort(context.Context, *Port) (*empty.Empty, error)
 	DisablePort(context.Context, *Port) (*empty.Empty, error)
+	// omci start and stop cli implementation
+	StartOmciTestAction(context.Context, *OmciTestRequest) (*TestResponse, error)
 }
 
 func RegisterVolthaServiceServer(s *grpc.Server, srv VolthaServiceServer) {
 	s.RegisterService(&_VolthaService_serviceDesc, srv)
 }
 
-func _VolthaService_UpdateLogLevel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.Logging)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).UpdateLogLevel(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/UpdateLogLevel",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).UpdateLogLevel(ctx, req.(*common.Logging))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
-func _VolthaService_GetLogLevels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
-	in := new(common.LoggingComponent)
-	if err := dec(in); err != nil {
-		return nil, err
-	}
-	if interceptor == nil {
-		return srv.(VolthaServiceServer).GetLogLevels(ctx, in)
-	}
-	info := &grpc.UnaryServerInfo{
-		Server:     srv,
-		FullMethod: "/voltha.VolthaService/GetLogLevels",
-	}
-	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
-		return srv.(VolthaServiceServer).GetLogLevels(ctx, req.(*common.LoggingComponent))
-	}
-	return interceptor(ctx, in, info, handler)
-}
-
 func _VolthaService_GetMembership_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
 	in := new(empty.Empty)
 	if err := dec(in); err != nil {
@@ -4193,19 +4236,29 @@
 	return interceptor(ctx, in, info, handler)
 }
 
+func _VolthaService_StartOmciTestAction_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(OmciTestRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).StartOmciTestAction(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/voltha.VolthaService/StartOmciTestAction",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).StartOmciTestAction(ctx, req.(*OmciTestRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 var _VolthaService_serviceDesc = grpc.ServiceDesc{
 	ServiceName: "voltha.VolthaService",
 	HandlerType: (*VolthaServiceServer)(nil),
 	Methods: []grpc.MethodDesc{
 		{
-			MethodName: "UpdateLogLevel",
-			Handler:    _VolthaService_UpdateLogLevel_Handler,
-		},
-		{
-			MethodName: "GetLogLevels",
-			Handler:    _VolthaService_GetLogLevels_Handler,
-		},
-		{
 			MethodName: "GetMembership",
 			Handler:    _VolthaService_GetMembership_Handler,
 		},
@@ -4429,6 +4482,10 @@
 			MethodName: "DisablePort",
 			Handler:    _VolthaService_DisablePort_Handler,
 		},
+		{
+			MethodName: "StartOmciTestAction",
+			Handler:    _VolthaService_StartOmciTestAction_Handler,
+		},
 	},
 	Streams: []grpc.StreamDesc{
 		{
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 6aa4a79..c8c15c6 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -39,14 +39,14 @@
 github.com/mitchellh/go-homedir
 # github.com/mitchellh/mapstructure v1.1.2
 github.com/mitchellh/mapstructure
-# github.com/opencord/voltha-lib-go/v3 v3.0.23
+# github.com/opencord/voltha-lib-go/v3 v3.1.5
 github.com/opencord/voltha-lib-go/v3/pkg/config
 github.com/opencord/voltha-lib-go/v3/pkg/db
 github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore
 github.com/opencord/voltha-lib-go/v3/pkg/log
 github.com/opencord/voltha-lib-go/v3/pkg/probe
 github.com/opencord/voltha-lib-go/v3/pkg/version
-# github.com/opencord/voltha-protos/v3 v3.2.3
+# github.com/opencord/voltha-protos/v3 v3.3.0
 github.com/opencord/voltha-protos/v3/go/common
 github.com/opencord/voltha-protos/v3/go/omci
 github.com/opencord/voltha-protos/v3/go/openflow_13