diff --git a/vendor/github.com/gorilla/mux/.editorconfig b/vendor/github.com/gorilla/mux/.editorconfig
new file mode 100644
index 0000000..c6b74c3
--- /dev/null
+++ b/vendor/github.com/gorilla/mux/.editorconfig
@@ -0,0 +1,20 @@
+; https://editorconfig.org/
+
+root = true
+
+[*]
+insert_final_newline = true
+charset = utf-8
+trim_trailing_whitespace = true
+indent_style = space
+indent_size = 2
+
+[{Makefile,go.mod,go.sum,*.go,.gitmodules}]
+indent_style = tab
+indent_size = 4
+
+[*.md]
+indent_size = 4
+trim_trailing_whitespace = false
+
+eclint_indent_style = unset
\ No newline at end of file
diff --git a/vendor/github.com/gorilla/mux/.gitignore b/vendor/github.com/gorilla/mux/.gitignore
new file mode 100644
index 0000000..84039fe
--- /dev/null
+++ b/vendor/github.com/gorilla/mux/.gitignore
@@ -0,0 +1 @@
+coverage.coverprofile
diff --git a/vendor/github.com/gorilla/mux/AUTHORS b/vendor/github.com/gorilla/mux/AUTHORS
deleted file mode 100644
index b722392..0000000
--- a/vendor/github.com/gorilla/mux/AUTHORS
+++ /dev/null
@@ -1,8 +0,0 @@
-# This is the official list of gorilla/mux authors for copyright purposes.
-#
-# Please keep the list sorted.
-
-Google LLC (https://opensource.google.com/)
-Kamil Kisielk <kamil@kamilkisiel.net>
-Matt Silverlock <matt@eatsleeprepeat.net>
-Rodrigo Moraes (https://github.com/moraes)
diff --git a/vendor/github.com/gorilla/mux/LICENSE b/vendor/github.com/gorilla/mux/LICENSE
index 6903df6..bb9d80b 100644
--- a/vendor/github.com/gorilla/mux/LICENSE
+++ b/vendor/github.com/gorilla/mux/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2012-2018 The Gorilla Authors. All rights reserved.
+Copyright (c) 2023 The Gorilla Authors. All rights reserved.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are
diff --git a/vendor/github.com/gorilla/mux/Makefile b/vendor/github.com/gorilla/mux/Makefile
new file mode 100644
index 0000000..98f5ab7
--- /dev/null
+++ b/vendor/github.com/gorilla/mux/Makefile
@@ -0,0 +1,34 @@
+GO_LINT=$(shell which golangci-lint 2> /dev/null || echo '')
+GO_LINT_URI=github.com/golangci/golangci-lint/cmd/golangci-lint@latest
+
+GO_SEC=$(shell which gosec 2> /dev/null || echo '')
+GO_SEC_URI=github.com/securego/gosec/v2/cmd/gosec@latest
+
+GO_VULNCHECK=$(shell which govulncheck 2> /dev/null || echo '')
+GO_VULNCHECK_URI=golang.org/x/vuln/cmd/govulncheck@latest
+
+.PHONY: golangci-lint
+golangci-lint:
+	$(if $(GO_LINT), ,go install $(GO_LINT_URI))
+	@echo "##### Running golangci-lint"
+	golangci-lint run -v
+	
+.PHONY: gosec
+gosec:
+	$(if $(GO_SEC), ,go install $(GO_SEC_URI))
+	@echo "##### Running gosec"
+	gosec ./...
+
+.PHONY: govulncheck
+govulncheck:
+	$(if $(GO_VULNCHECK), ,go install $(GO_VULNCHECK_URI))
+	@echo "##### Running govulncheck"
+	govulncheck ./...
+
+.PHONY: verify
+verify: golangci-lint gosec govulncheck
+
+.PHONY: test
+test:
+	@echo "##### Running tests"
+	go test -race -cover -coverprofile=coverage.coverprofile -covermode=atomic -v ./...
\ No newline at end of file
diff --git a/vendor/github.com/gorilla/mux/README.md b/vendor/github.com/gorilla/mux/README.md
index 35eea9f..382513d 100644
--- a/vendor/github.com/gorilla/mux/README.md
+++ b/vendor/github.com/gorilla/mux/README.md
@@ -1,12 +1,12 @@
 # gorilla/mux
 
-[![GoDoc](https://godoc.org/github.com/gorilla/mux?status.svg)](https://godoc.org/github.com/gorilla/mux)
-[![CircleCI](https://circleci.com/gh/gorilla/mux.svg?style=svg)](https://circleci.com/gh/gorilla/mux)
-[![Sourcegraph](https://sourcegraph.com/github.com/gorilla/mux/-/badge.svg)](https://sourcegraph.com/github.com/gorilla/mux?badge)
+![testing](https://github.com/gorilla/mux/actions/workflows/test.yml/badge.svg)
+[![codecov](https://codecov.io/github/gorilla/mux/branch/main/graph/badge.svg)](https://codecov.io/github/gorilla/mux)
+[![godoc](https://godoc.org/github.com/gorilla/mux?status.svg)](https://godoc.org/github.com/gorilla/mux)
+[![sourcegraph](https://sourcegraph.com/github.com/gorilla/mux/-/badge.svg)](https://sourcegraph.com/github.com/gorilla/mux?badge)
 
-![Gorilla Logo](https://cloud-cdn.questionable.services/gorilla-icon-64.png)
 
-https://www.gorillatoolkit.org/pkg/mux
+![Gorilla Logo](https://github.com/gorilla/.github/assets/53367916/d92caabf-98e0-473e-bfbf-ab554ba435e5)
 
 Package `gorilla/mux` implements a request router and dispatcher for matching incoming requests to
 their respective handler.
@@ -247,32 +247,25 @@
 // file located at the index path on the SPA handler will be served. This
 // is suitable behavior for serving an SPA (single page application).
 func (h spaHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
-    // get the absolute path to prevent directory traversal
-	path, err := filepath.Abs(r.URL.Path)
-	if err != nil {
-        // if we failed to get the absolute path respond with a 400 bad request
-        // and stop
-		http.Error(w, err.Error(), http.StatusBadRequest)
-		return
-	}
+	// Join internally call path.Clean to prevent directory traversal
+	path := filepath.Join(h.staticPath, r.URL.Path)
 
-    // prepend the path with the path to the static directory
-	path = filepath.Join(h.staticPath, path)
-
-    // check whether a file exists at the given path
-	_, err = os.Stat(path)
-	if os.IsNotExist(err) {
-		// file does not exist, serve index.html
+	// check whether a file exists or is a directory at the given path
+	fi, err := os.Stat(path)
+	if os.IsNotExist(err) || fi.IsDir() {
+		// file does not exist or path is a directory, serve index.html
 		http.ServeFile(w, r, filepath.Join(h.staticPath, h.indexPath))
 		return
-	} else if err != nil {
-        // if we got an error (that wasn't that the file doesn't exist) stating the
-        // file, return a 500 internal server error and stop
-		http.Error(w, err.Error(), http.StatusInternalServerError)
-		return
 	}
 
-    // otherwise, use http.FileServer to serve the static dir
+	if err != nil {
+		// if we got an error (that wasn't that the file doesn't exist) stating the
+		// file, return a 500 internal server error and stop
+		http.Error(w, err.Error(), http.StatusInternalServerError)
+        return
+	}
+
+	// otherwise, use http.FileServer to serve the static file
 	http.FileServer(http.Dir(h.staticPath)).ServeHTTP(w, r)
 }
 
@@ -375,6 +368,19 @@
                                  "id", "42")
 ```
 
+To find all the required variables for a given route when calling `URL()`, the method `GetVarNames()` is available:
+```go
+r := mux.NewRouter()
+r.Host("{domain}").
+    Path("/{group}/{item_id}").
+    Queries("some_data1", "{some_data1}").
+    Queries("some_data2", "{some_data2}").
+    Name("article")
+
+// Will print [domain group item_id some_data1 some_data2] <nil>
+fmt.Println(r.Get("article").GetVarNames())
+
+```
 ### Walking Routes
 
 The `Walk` function on `mux.Router` can be used to visit all of the routes that are registered on a router. For example,
@@ -572,7 +578,7 @@
 r := mux.NewRouter()
 r.HandleFunc("/", handler)
 
-amw := authenticationMiddleware{}
+amw := authenticationMiddleware{tokenUsers: make(map[string]string)}
 amw.Populate()
 
 r.Use(amw.Middleware)
@@ -758,7 +764,8 @@
 
         rr := httptest.NewRecorder()
 	
-	// Need to create a router that we can pass the request through so that the vars will be added to the context
+	// To add the vars to the context, 
+	// we need to create a router through which we can pass the request.
 	router := mux.NewRouter()
         router.HandleFunc("/metrics/{type}", MetricsHandler)
         router.ServeHTTP(rr, req)
diff --git a/vendor/github.com/gorilla/mux/doc.go b/vendor/github.com/gorilla/mux/doc.go
index bd5a38b..8060135 100644
--- a/vendor/github.com/gorilla/mux/doc.go
+++ b/vendor/github.com/gorilla/mux/doc.go
@@ -10,18 +10,18 @@
 registered routes and calls a handler for the route that matches the URL
 or other conditions. The main features are:
 
-	* Requests can be matched based on URL host, path, path prefix, schemes,
-	  header and query values, HTTP methods or using custom matchers.
-	* URL hosts, paths and query values can have variables with an optional
-	  regular expression.
-	* Registered URLs can be built, or "reversed", which helps maintaining
-	  references to resources.
-	* Routes can be used as subrouters: nested routes are only tested if the
-	  parent route matches. This is useful to define groups of routes that
-	  share common conditions like a host, a path prefix or other repeated
-	  attributes. As a bonus, this optimizes request matching.
-	* It implements the http.Handler interface so it is compatible with the
-	  standard http.ServeMux.
+  - Requests can be matched based on URL host, path, path prefix, schemes,
+    header and query values, HTTP methods or using custom matchers.
+  - URL hosts, paths and query values can have variables with an optional
+    regular expression.
+  - Registered URLs can be built, or "reversed", which helps maintaining
+    references to resources.
+  - Routes can be used as subrouters: nested routes are only tested if the
+    parent route matches. This is useful to define groups of routes that
+    share common conditions like a host, a path prefix or other repeated
+    attributes. As a bonus, this optimizes request matching.
+  - It implements the http.Handler interface so it is compatible with the
+    standard http.ServeMux.
 
 Let's start registering a couple of URL paths and handlers:
 
@@ -301,6 +301,5 @@
 	r.Use(amw.Middleware)
 
 Note: The handler chain will be stopped if your middleware doesn't call `next.ServeHTTP()` with the corresponding parameters. This can be used to abort a request if the middleware writer wants to.
-
 */
 package mux
diff --git a/vendor/github.com/gorilla/mux/go.mod b/vendor/github.com/gorilla/mux/go.mod
index df170a3..7c6f375 100644
--- a/vendor/github.com/gorilla/mux/go.mod
+++ b/vendor/github.com/gorilla/mux/go.mod
@@ -1,3 +1,3 @@
 module github.com/gorilla/mux
 
-go 1.12
+go 1.20
diff --git a/vendor/github.com/gorilla/mux/mux.go b/vendor/github.com/gorilla/mux/mux.go
index 782a34b..1e08990 100644
--- a/vendor/github.com/gorilla/mux/mux.go
+++ b/vendor/github.com/gorilla/mux/mux.go
@@ -31,24 +31,26 @@
 // It implements the http.Handler interface, so it can be registered to serve
 // requests:
 //
-//     var router = mux.NewRouter()
+//	var router = mux.NewRouter()
 //
-//     func main() {
-//         http.Handle("/", router)
-//     }
+//	func main() {
+//	    http.Handle("/", router)
+//	}
 //
 // Or, for Google App Engine, register it in a init() function:
 //
-//     func init() {
-//         http.Handle("/", router)
-//     }
+//	func init() {
+//	    http.Handle("/", router)
+//	}
 //
 // This will send all incoming requests to the router.
 type Router struct {
 	// Configurable Handler to be used when no route matches.
+	// This can be used to render your own 404 Not Found errors.
 	NotFoundHandler http.Handler
 
 	// Configurable Handler to be used when the request method does not match the route.
+	// This can be used to render your own 405 Method Not Allowed errors.
 	MethodNotAllowedHandler http.Handler
 
 	// Routes to be matched, in order.
diff --git a/vendor/github.com/gorilla/mux/regexp.go b/vendor/github.com/gorilla/mux/regexp.go
index 0144842..5d05cfa 100644
--- a/vendor/github.com/gorilla/mux/regexp.go
+++ b/vendor/github.com/gorilla/mux/regexp.go
@@ -22,10 +22,10 @@
 type regexpType int
 
 const (
-	regexpTypePath   regexpType = 0
-	regexpTypeHost   regexpType = 1
-	regexpTypePrefix regexpType = 2
-	regexpTypeQuery  regexpType = 3
+	regexpTypePath regexpType = iota
+	regexpTypeHost
+	regexpTypePrefix
+	regexpTypeQuery
 )
 
 // newRouteRegexp parses a route template and returns a routeRegexp,
@@ -195,7 +195,7 @@
 
 // url builds a URL part using the given values.
 func (r *routeRegexp) url(values map[string]string) (string, error) {
-	urlValues := make([]interface{}, len(r.varsN), len(r.varsN))
+	urlValues := make([]interface{}, len(r.varsN))
 	for k, v := range r.varsN {
 		value, ok := values[v]
 		if !ok {
diff --git a/vendor/github.com/gorilla/mux/route.go b/vendor/github.com/gorilla/mux/route.go
index 750afe5..e8f11df 100644
--- a/vendor/github.com/gorilla/mux/route.go
+++ b/vendor/github.com/gorilla/mux/route.go
@@ -64,8 +64,18 @@
 				match.MatchErr = nil
 			}
 
-			matchErr = nil
+			matchErr = nil // nolint:ineffassign
 			return false
+		} else {
+			// Multiple routes may share the same path but use different HTTP methods. For instance:
+			// Route 1: POST "/users/{id}".
+			// Route 2: GET "/users/{id}", parameters: "id": "[0-9]+".
+			//
+			// The router must handle these cases correctly. For a GET request to "/users/abc" with "id" as "-2",
+			// The router should return a "Not Found" error as no route fully matches this request.
+			if match.MatchErr == ErrMethodMismatch {
+				match.MatchErr = nil
+			}
 		}
 	}
 
@@ -230,9 +240,9 @@
 // Headers adds a matcher for request header values.
 // It accepts a sequence of key/value pairs to be matched. For example:
 //
-//     r := mux.NewRouter()
-//     r.Headers("Content-Type", "application/json",
-//               "X-Requested-With", "XMLHttpRequest")
+//	r := mux.NewRouter().NewRoute()
+//	r.Headers("Content-Type", "application/json",
+//	          "X-Requested-With", "XMLHttpRequest")
 //
 // The above route will only match if both request header values match.
 // If the value is an empty string, it will match any value if the key is set.
@@ -255,9 +265,9 @@
 // HeadersRegexp accepts a sequence of key/value pairs, where the value has regex
 // support. For example:
 //
-//     r := mux.NewRouter()
-//     r.HeadersRegexp("Content-Type", "application/(text|json)",
-//               "X-Requested-With", "XMLHttpRequest")
+//	r := mux.NewRouter().NewRoute()
+//	r.HeadersRegexp("Content-Type", "application/(text|json)",
+//	          "X-Requested-With", "XMLHttpRequest")
 //
 // The above route will only match if both the request header matches both regular expressions.
 // If the value is an empty string, it will match any value if the key is set.
@@ -283,10 +293,10 @@
 //
 // For example:
 //
-//     r := mux.NewRouter()
-//     r.Host("www.example.com")
-//     r.Host("{subdomain}.domain.com")
-//     r.Host("{subdomain:[a-z]+}.domain.com")
+//	r := mux.NewRouter().NewRoute()
+//	r.Host("www.example.com")
+//	r.Host("{subdomain}.domain.com")
+//	r.Host("{subdomain:[a-z]+}.domain.com")
 //
 // Variable names must be unique in a given route. They can be retrieved
 // calling mux.Vars(request).
@@ -342,11 +352,11 @@
 //
 // For example:
 //
-//     r := mux.NewRouter()
-//     r.Path("/products/").Handler(ProductsHandler)
-//     r.Path("/products/{key}").Handler(ProductsHandler)
-//     r.Path("/articles/{category}/{id:[0-9]+}").
-//       Handler(ArticleHandler)
+//	r := mux.NewRouter().NewRoute()
+//	r.Path("/products/").Handler(ProductsHandler)
+//	r.Path("/products/{key}").Handler(ProductsHandler)
+//	r.Path("/articles/{category}/{id:[0-9]+}").
+//	  Handler(ArticleHandler)
 //
 // Variable names must be unique in a given route. They can be retrieved
 // calling mux.Vars(request).
@@ -377,8 +387,8 @@
 // It accepts a sequence of key/value pairs. Values may define variables.
 // For example:
 //
-//     r := mux.NewRouter()
-//     r.Queries("foo", "bar", "id", "{id:[0-9]+}")
+//	r := mux.NewRouter().NewRoute()
+//	r.Queries("foo", "bar", "id", "{id:[0-9]+}")
 //
 // The above route will only match if the URL contains the defined queries
 // values, e.g.: ?foo=bar&id=42.
@@ -473,11 +483,11 @@
 //
 // It will test the inner routes only if the parent route matched. For example:
 //
-//     r := mux.NewRouter()
-//     s := r.Host("www.example.com").Subrouter()
-//     s.HandleFunc("/products/", ProductsHandler)
-//     s.HandleFunc("/products/{key}", ProductHandler)
-//     s.HandleFunc("/articles/{category}/{id:[0-9]+}"), ArticleHandler)
+//	r := mux.NewRouter().NewRoute()
+//	s := r.Host("www.example.com").Subrouter()
+//	s.HandleFunc("/products/", ProductsHandler)
+//	s.HandleFunc("/products/{key}", ProductHandler)
+//	s.HandleFunc("/articles/{category}/{id:[0-9]+}"), ArticleHandler)
 //
 // Here, the routes registered in the subrouter won't be tested if the host
 // doesn't match.
@@ -497,36 +507,36 @@
 // It accepts a sequence of key/value pairs for the route variables. For
 // example, given this route:
 //
-//     r := mux.NewRouter()
-//     r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticleHandler).
-//       Name("article")
+//	r := mux.NewRouter()
+//	r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticleHandler).
+//	  Name("article")
 //
 // ...a URL for it can be built using:
 //
-//     url, err := r.Get("article").URL("category", "technology", "id", "42")
+//	url, err := r.Get("article").URL("category", "technology", "id", "42")
 //
 // ...which will return an url.URL with the following path:
 //
-//     "/articles/technology/42"
+//	"/articles/technology/42"
 //
 // This also works for host variables:
 //
-//     r := mux.NewRouter()
-//     r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticleHandler).
-//       Host("{subdomain}.domain.com").
-//       Name("article")
+//	r := mux.NewRouter()
+//	r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticleHandler).
+//	  Host("{subdomain}.domain.com").
+//	  Name("article")
 //
-//     // url.String() will be "http://news.domain.com/articles/technology/42"
-//     url, err := r.Get("article").URL("subdomain", "news",
-//                                      "category", "technology",
-//                                      "id", "42")
+//	// url.String() will be "http://news.domain.com/articles/technology/42"
+//	url, err := r.Get("article").URL("subdomain", "news",
+//	                                 "category", "technology",
+//	                                 "id", "42")
 //
 // The scheme of the resulting url will be the first argument that was passed to Schemes:
 //
-//     // url.String() will be "https://example.com"
-//     r := mux.NewRouter()
-//     url, err := r.Host("example.com")
-//                  .Schemes("https", "http").URL()
+//	// url.String() will be "https://example.com"
+//	r := mux.NewRouter().NewRoute()
+//	url, err := r.Host("example.com")
+//	             .Schemes("https", "http").URL()
 //
 // All variables defined in the route are required, and their values must
 // conform to the corresponding patterns.
@@ -718,6 +728,25 @@
 	return r.regexp.host.template, nil
 }
 
+// GetVarNames returns the names of all variables added by regexp matchers
+// These can be used to know which route variables should be passed into r.URL()
+func (r *Route) GetVarNames() ([]string, error) {
+	if r.err != nil {
+		return nil, r.err
+	}
+	var varNames []string
+	if r.regexp.host != nil {
+		varNames = append(varNames, r.regexp.host.varsN...)
+	}
+	if r.regexp.path != nil {
+		varNames = append(varNames, r.regexp.path.varsN...)
+	}
+	for _, regx := range r.regexp.queries {
+		varNames = append(varNames, regx.varsN...)
+	}
+	return varNames, nil
+}
+
 // prepareVars converts the route variable pairs into a map. If the route has a
 // BuildVarsFunc, it is invoked.
 func (r *Route) prepareVars(pairs ...string) (map[string]string, error) {
diff --git a/vendor/github.com/opencord/voltha-protos/v5/LICENSE b/vendor/github.com/opencord/voltha-protos/v5/LICENSE
new file mode 100644
index 0000000..72f817f
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v5/LICENSE
@@ -0,0 +1,201 @@
+  Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
\ No newline at end of file
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go
index 87d3dca..f7472d5 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go
@@ -80,7 +80,7 @@
 }
 
 func (AdminState_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{3, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{4, 0}
 }
 
 // Operational Status
@@ -103,6 +103,8 @@
 	OperStatus_RECONCILING OperStatus_Types = 6
 	// The device is in reconciling failed
 	OperStatus_RECONCILING_FAILED OperStatus_Types = 7
+	// The device has rebooted
+	OperStatus_REBOOTED OperStatus_Types = 8
 )
 
 var OperStatus_Types_name = map[int32]string{
@@ -114,6 +116,7 @@
 	5: "FAILED",
 	6: "RECONCILING",
 	7: "RECONCILING_FAILED",
+	8: "REBOOTED",
 }
 
 var OperStatus_Types_value = map[string]int32{
@@ -125,6 +128,7 @@
 	"FAILED":             5,
 	"RECONCILING":        6,
 	"RECONCILING_FAILED": 7,
+	"REBOOTED":           8,
 }
 
 func (x OperStatus_Types) String() string {
@@ -132,7 +136,7 @@
 }
 
 func (OperStatus_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{4, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{5, 0}
 }
 
 // Connectivity Status
@@ -164,7 +168,7 @@
 }
 
 func (ConnectStatus_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{5, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{6, 0}
 }
 
 type OperationResp_OperationReturnCode int32
@@ -195,7 +199,47 @@
 }
 
 func (OperationResp_OperationReturnCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{6, 0}
+	return fileDescriptor_c2e3fd231961e826, []int{7, 0}
+}
+
+// Full path for KV store
+type Key struct {
+	Key                  string   `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *Key) Reset()         { *m = Key{} }
+func (m *Key) String() string { return proto.CompactTextString(m) }
+func (*Key) ProtoMessage()    {}
+func (*Key) Descriptor() ([]byte, []int) {
+	return fileDescriptor_c2e3fd231961e826, []int{0}
+}
+
+func (m *Key) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Key.Unmarshal(m, b)
+}
+func (m *Key) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Key.Marshal(b, m, deterministic)
+}
+func (m *Key) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Key.Merge(m, src)
+}
+func (m *Key) XXX_Size() int {
+	return xxx_messageInfo_Key.Size(m)
+}
+func (m *Key) XXX_DiscardUnknown() {
+	xxx_messageInfo_Key.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Key proto.InternalMessageInfo
+
+func (m *Key) GetKey() string {
+	if m != nil {
+		return m.Key
+	}
+	return ""
 }
 
 // Convey a resource identifier
@@ -210,7 +254,7 @@
 func (m *ID) String() string { return proto.CompactTextString(m) }
 func (*ID) ProtoMessage()    {}
 func (*ID) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{0}
+	return fileDescriptor_c2e3fd231961e826, []int{1}
 }
 
 func (m *ID) XXX_Unmarshal(b []byte) error {
@@ -250,7 +294,7 @@
 func (m *IDs) String() string { return proto.CompactTextString(m) }
 func (*IDs) ProtoMessage()    {}
 func (*IDs) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{1}
+	return fileDescriptor_c2e3fd231961e826, []int{2}
 }
 
 func (m *IDs) XXX_Unmarshal(b []byte) error {
@@ -295,7 +339,7 @@
 func (m *Connection) String() string { return proto.CompactTextString(m) }
 func (*Connection) ProtoMessage()    {}
 func (*Connection) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{2}
+	return fileDescriptor_c2e3fd231961e826, []int{3}
 }
 
 func (m *Connection) XXX_Unmarshal(b []byte) error {
@@ -347,7 +391,7 @@
 func (m *AdminState) String() string { return proto.CompactTextString(m) }
 func (*AdminState) ProtoMessage()    {}
 func (*AdminState) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{3}
+	return fileDescriptor_c2e3fd231961e826, []int{4}
 }
 
 func (m *AdminState) XXX_Unmarshal(b []byte) error {
@@ -378,7 +422,7 @@
 func (m *OperStatus) String() string { return proto.CompactTextString(m) }
 func (*OperStatus) ProtoMessage()    {}
 func (*OperStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{4}
+	return fileDescriptor_c2e3fd231961e826, []int{5}
 }
 
 func (m *OperStatus) XXX_Unmarshal(b []byte) error {
@@ -409,7 +453,7 @@
 func (m *ConnectStatus) String() string { return proto.CompactTextString(m) }
 func (*ConnectStatus) ProtoMessage()    {}
 func (*ConnectStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{5}
+	return fileDescriptor_c2e3fd231961e826, []int{6}
 }
 
 func (m *ConnectStatus) XXX_Unmarshal(b []byte) error {
@@ -444,7 +488,7 @@
 func (m *OperationResp) String() string { return proto.CompactTextString(m) }
 func (*OperationResp) ProtoMessage()    {}
 func (*OperationResp) Descriptor() ([]byte, []int) {
-	return fileDescriptor_c2e3fd231961e826, []int{6}
+	return fileDescriptor_c2e3fd231961e826, []int{7}
 }
 
 func (m *OperationResp) XXX_Unmarshal(b []byte) error {
@@ -485,6 +529,7 @@
 	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((*Key)(nil), "common.Key")
 	proto.RegisterType((*ID)(nil), "common.ID")
 	proto.RegisterType((*IDs)(nil), "common.IDs")
 	proto.RegisterType((*Connection)(nil), "common.Connection")
@@ -497,41 +542,43 @@
 func init() { proto.RegisterFile("voltha_protos/common.proto", fileDescriptor_c2e3fd231961e826) }
 
 var fileDescriptor_c2e3fd231961e826 = []byte{
-	// 570 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x53, 0x5d, 0x4f, 0xdb, 0x30,
-	0x14, 0x25, 0x09, 0x14, 0xb8, 0x85, 0x12, 0xcc, 0x98, 0x3a, 0xb4, 0x87, 0x2a, 0x2f, 0xb0, 0x49,
-	0x6b, 0x25, 0xb6, 0x3d, 0xee, 0x21, 0x24, 0x5e, 0x67, 0x01, 0x4e, 0xe5, 0xa4, 0x20, 0xf1, 0x12,
-	0x85, 0xc6, 0x03, 0x6b, 0xad, 0x1d, 0x25, 0xa6, 0x1a, 0x7b, 0xdc, 0x3f, 0xd8, 0x5f, 0xdd, 0x2f,
-	0x98, 0x9c, 0x86, 0x15, 0xa4, 0xbe, 0xe5, 0x9c, 0x73, 0x73, 0xbf, 0x8e, 0x2f, 0x1c, 0xcd, 0xd5,
-	0x54, 0xdf, 0x67, 0x69, 0x51, 0x2a, 0xad, 0xaa, 0xc1, 0x44, 0xcd, 0x66, 0x4a, 0xf6, 0x6b, 0x84,
-	0x5a, 0x0b, 0xe4, 0xbd, 0x02, 0x9b, 0x84, 0xa8, 0x03, 0xb6, 0xc8, 0xbb, 0x56, 0xcf, 0x3a, 0xd9,
-	0x66, 0xb6, 0xc8, 0xbd, 0x63, 0x70, 0x48, 0x58, 0xa1, 0x1e, 0x6c, 0x08, 0xcd, 0x67, 0x55, 0xd7,
-	0xea, 0x39, 0x27, 0xed, 0x53, 0xe8, 0x37, 0x29, 0x48, 0xc8, 0x16, 0x82, 0xf7, 0x0b, 0x20, 0x50,
-	0x52, 0xf2, 0x89, 0x16, 0x4a, 0xa2, 0x23, 0xd8, 0xe2, 0x32, 0x2f, 0x94, 0x90, 0xba, 0x49, 0xf6,
-	0x1f, 0xa3, 0x1e, 0xb4, 0x27, 0x4a, 0x6a, 0xfe, 0x53, 0x13, 0xf9, 0x5d, 0x75, 0xed, 0x5a, 0x7e,
-	0x4e, 0xa1, 0x3e, 0x1c, 0xfc, 0xe0, 0xbc, 0x48, 0xb3, 0xa9, 0x98, 0xf3, 0x54, 0x48, 0xcd, 0xcb,
-	0x79, 0x36, 0xed, 0x3a, 0x3d, 0xeb, 0xc4, 0x61, 0xfb, 0x46, 0xf2, 0x8d, 0x42, 0x1a, 0xc1, 0xbb,
-	0x07, 0xf0, 0xf3, 0x99, 0x90, 0xb1, 0xce, 0x34, 0xf7, 0x6e, 0x60, 0x23, 0x79, 0x2c, 0x78, 0x85,
-	0xda, 0xb0, 0x39, 0xa6, 0xe7, 0x34, 0xba, 0xa6, 0xee, 0x1a, 0x42, 0xd0, 0x19, 0x31, 0x3c, 0x62,
-	0xd1, 0x15, 0x89, 0x49, 0x44, 0x71, 0xe8, 0x5a, 0x26, 0x00, 0x53, 0xff, 0xec, 0x02, 0x87, 0xae,
-	0x8d, 0x76, 0x60, 0x2b, 0x24, 0xf1, 0x02, 0x39, 0xe8, 0x10, 0xf6, 0xc3, 0xe8, 0x9a, 0x5e, 0x44,
-	0x7e, 0x48, 0xe8, 0x30, 0x25, 0x97, 0xfe, 0x10, 0xbb, 0xeb, 0xde, 0x1f, 0x0b, 0x20, 0x2a, 0x78,
-	0x69, 0x2a, 0x3d, 0x54, 0xde, 0x6f, 0x6b, 0x65, 0xad, 0x0e, 0x40, 0x48, 0xe2, 0x20, 0xba, 0xc2,
-	0xac, 0xae, 0xd3, 0x01, 0xf0, 0x83, 0x84, 0x5c, 0xf9, 0x09, 0xa1, 0x43, 0xd7, 0x36, 0xc1, 0x09,
-	0x8e, 0x6b, 0xe0, 0x20, 0x80, 0x56, 0x2d, 0x62, 0x77, 0xdd, 0x7c, 0x7f, 0xf5, 0x89, 0xe9, 0x60,
-	0x03, 0xed, 0x41, 0x9b, 0xe1, 0x20, 0xa2, 0x01, 0xb9, 0x30, 0x81, 0x2d, 0xf4, 0x1a, 0xd0, 0x33,
-	0x22, 0x6d, 0x02, 0x37, 0x3d, 0x0c, 0xbb, 0xcd, 0xe6, 0x9b, 0xae, 0x3e, 0xad, 0x6c, 0x6a, 0x0f,
-	0xda, 0x63, 0xca, 0xb0, 0x1f, 0x7c, 0x33, 0x33, 0xba, 0x16, 0xda, 0x85, 0xed, 0x25, 0xb4, 0xbd,
-	0xbf, 0x16, 0xec, 0x9a, 0xd1, 0x32, 0x63, 0x20, 0xe3, 0x55, 0x81, 0xbe, 0xc0, 0xfa, 0x44, 0xe5,
-	0xbc, 0x36, 0xb0, 0x73, 0xfa, 0xee, 0xc9, 0xf3, 0x17, 0x41, 0xcf, 0x91, 0x7e, 0x28, 0x65, 0xa0,
-	0x72, 0xce, 0xea, 0xdf, 0xd0, 0x31, 0xec, 0x65, 0x79, 0x2e, 0x8c, 0x96, 0x4d, 0x53, 0xb1, 0xf4,
-	0xba, 0xb3, 0xa4, 0x8d, 0xdd, 0xde, 0x23, 0x1c, 0xac, 0xc8, 0x62, 0x2c, 0x88, 0x46, 0x98, 0xf9,
-	0x09, 0x89, 0x68, 0x1a, 0x8f, 0x83, 0x00, 0xc7, 0xb1, 0xbb, 0xf6, 0x92, 0x36, 0x4b, 0x18, 0x33,
-	0x33, 0xcd, 0x1b, 0x38, 0x5c, 0xd2, 0x63, 0x1a, 0x8f, 0x47, 0xa3, 0x88, 0x25, 0xb5, 0xb3, 0x2f,
-	0x24, 0x42, 0xd3, 0x11, 0x8b, 0x86, 0xcc, 0x24, 0x73, 0xde, 0xbf, 0x85, 0x9d, 0x84, 0x57, 0xfa,
-	0x52, 0xe5, 0xfc, 0x9c, 0x3f, 0x56, 0xe6, 0x11, 0x64, 0x85, 0x48, 0x35, 0xaf, 0xb4, 0xbb, 0x76,
-	0x86, 0xe1, 0x40, 0x95, 0x77, 0x7d, 0x55, 0x70, 0x39, 0x51, 0x65, 0xde, 0x5f, 0x5c, 0xd1, 0x4d,
-	0xff, 0x4e, 0xe8, 0xfb, 0x87, 0x5b, 0xb3, 0x8f, 0xc1, 0x93, 0x36, 0x58, 0x68, 0x1f, 0x9a, 0x0b,
-	0x9b, 0x7f, 0x1e, 0xdc, 0xa9, 0xe6, 0xce, 0x6e, 0x5b, 0x35, 0xf9, 0xf1, 0x5f, 0x00, 0x00, 0x00,
-	0xff, 0xff, 0x62, 0x34, 0x9d, 0xbf, 0x86, 0x03, 0x00, 0x00,
+	// 593 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x53, 0xdd, 0x4e, 0xdb, 0x30,
+	0x14, 0x26, 0x09, 0x14, 0x38, 0x85, 0x12, 0xcc, 0xd8, 0x3a, 0xb4, 0x8b, 0x2a, 0x37, 0xb0, 0x49,
+	0x6b, 0x25, 0xb6, 0x5d, 0xee, 0x22, 0x24, 0x5e, 0x67, 0x01, 0x76, 0xe5, 0xa4, 0x20, 0x71, 0x13,
+	0x85, 0xc6, 0x83, 0x88, 0xd6, 0x8e, 0x1a, 0x53, 0xad, 0x7b, 0x8a, 0xbd, 0xc1, 0xde, 0x71, 0x4f,
+	0x30, 0x39, 0x0d, 0x2b, 0x48, 0xbd, 0xf3, 0xf7, 0x7d, 0x27, 0xe7, 0xef, 0xcb, 0x81, 0xa3, 0x99,
+	0x1a, 0xeb, 0xfb, 0x34, 0x29, 0xa6, 0x4a, 0xab, 0xb2, 0x37, 0x52, 0x93, 0x89, 0x92, 0xdd, 0x0a,
+	0xa1, 0xc6, 0x02, 0x79, 0x6f, 0xc0, 0x39, 0x17, 0x73, 0xe4, 0x82, 0xf3, 0x20, 0xe6, 0x6d, 0xab,
+	0x63, 0x9d, 0x6c, 0x73, 0xf3, 0xf4, 0x5e, 0x81, 0x4d, 0x42, 0xd4, 0x02, 0x3b, 0xcf, 0x6a, 0xda,
+	0xce, 0x33, 0xef, 0x18, 0x1c, 0x12, 0x96, 0xa8, 0x03, 0x1b, 0xb9, 0x16, 0x93, 0xb2, 0x6d, 0x75,
+	0x9c, 0x93, 0xe6, 0x29, 0x74, 0xeb, 0xdc, 0x24, 0xe4, 0x0b, 0xc1, 0xfb, 0x05, 0x10, 0x28, 0x29,
+	0xc5, 0x48, 0xe7, 0x4a, 0xa2, 0x23, 0xd8, 0x12, 0x32, 0x2b, 0x54, 0x2e, 0x75, 0x9d, 0xec, 0x3f,
+	0x46, 0x1d, 0x68, 0x8e, 0x94, 0xd4, 0xe2, 0xa7, 0x26, 0xf2, 0x87, 0x6a, 0xdb, 0x95, 0xfc, 0x9c,
+	0x42, 0x5d, 0x38, 0x78, 0x10, 0xa2, 0x48, 0xd2, 0x71, 0x3e, 0x13, 0x49, 0x2e, 0xb5, 0x98, 0xce,
+	0xd2, 0x71, 0xdb, 0xe9, 0x58, 0x27, 0x0e, 0xdf, 0x37, 0x92, 0x6f, 0x14, 0x52, 0x0b, 0xde, 0x3d,
+	0x80, 0x9f, 0x4d, 0x72, 0x19, 0xe9, 0x54, 0x0b, 0xef, 0x06, 0x36, 0xe2, 0x79, 0x21, 0x4a, 0xd4,
+	0x84, 0xcd, 0x21, 0x3d, 0xa7, 0xec, 0x9a, 0xba, 0x6b, 0x08, 0x41, 0x6b, 0xc0, 0xf1, 0x80, 0xb3,
+	0x2b, 0x12, 0x11, 0x46, 0x71, 0xe8, 0x5a, 0x26, 0x00, 0x53, 0xff, 0xec, 0x02, 0x87, 0xae, 0x8d,
+	0x76, 0x60, 0x2b, 0x24, 0xd1, 0x02, 0x39, 0xe8, 0x10, 0xf6, 0x43, 0x76, 0x4d, 0x2f, 0x98, 0x1f,
+	0x12, 0xda, 0x4f, 0xc8, 0xa5, 0xdf, 0xc7, 0xee, 0xba, 0xf7, 0xc7, 0x02, 0x60, 0x85, 0x98, 0x9a,
+	0x4a, 0x8f, 0xa5, 0xf7, 0xdb, 0x5a, 0x59, 0xab, 0x05, 0x10, 0x92, 0x28, 0x60, 0x57, 0x98, 0x57,
+	0x75, 0x5a, 0x00, 0x7e, 0x10, 0x93, 0x2b, 0x3f, 0x26, 0xb4, 0xef, 0xda, 0x26, 0x38, 0xc6, 0x51,
+	0x05, 0x1c, 0x04, 0xd0, 0xa8, 0x44, 0xec, 0xae, 0x9b, 0xf7, 0x37, 0x9f, 0x98, 0x0e, 0x36, 0xd0,
+	0x1e, 0x34, 0x39, 0x0e, 0x18, 0x0d, 0xc8, 0x85, 0x09, 0x6c, 0xa0, 0xd7, 0x80, 0x9e, 0x11, 0x49,
+	0x1d, 0xb8, 0x69, 0x1a, 0xe7, 0xf8, 0x8c, 0xb1, 0x18, 0x87, 0xee, 0x96, 0x87, 0x61, 0xb7, 0xf6,
+	0xa1, 0xee, 0xf1, 0xf3, 0xca, 0x16, 0xf7, 0xa0, 0x39, 0xa4, 0x1c, 0xfb, 0xc1, 0x77, 0x33, 0xb1,
+	0x6b, 0xa1, 0x5d, 0xd8, 0x5e, 0x42, 0xdb, 0xfb, 0x6b, 0xc1, 0xae, 0x19, 0x34, 0x35, 0x76, 0x72,
+	0x51, 0x16, 0xe8, 0x2b, 0xac, 0x8f, 0x54, 0x26, 0x2a, 0x3b, 0x5b, 0xa7, 0xef, 0x9f, 0xfe, 0x80,
+	0x17, 0x41, 0xcf, 0x91, 0x7e, 0x9c, 0xca, 0x40, 0x65, 0x82, 0x57, 0x9f, 0xa1, 0x63, 0xd8, 0x4b,
+	0xb3, 0x2c, 0x37, 0x5a, 0x3a, 0x4e, 0xf2, 0xa5, 0xf3, 0xad, 0x25, 0x6d, 0xcc, 0xf7, 0xe6, 0x70,
+	0xb0, 0x22, 0x8b, 0x31, 0x84, 0x0d, 0x30, 0xf7, 0x63, 0xc2, 0x68, 0x12, 0x0d, 0x83, 0x00, 0x47,
+	0x91, 0xbb, 0xf6, 0x92, 0x36, 0x2b, 0x19, 0x72, 0x33, 0xcd, 0x5b, 0x38, 0x5c, 0xd2, 0x43, 0x1a,
+	0x0d, 0x07, 0x03, 0xc6, 0xe3, 0xca, 0xe7, 0x17, 0x12, 0xa1, 0xc9, 0x80, 0xb3, 0x3e, 0x37, 0xc9,
+	0x9c, 0x0f, 0xef, 0x60, 0x27, 0x16, 0xa5, 0xbe, 0x54, 0x99, 0x38, 0x17, 0xf3, 0xd2, 0x6c, 0x36,
+	0x2d, 0xf2, 0x44, 0x8b, 0x52, 0xbb, 0x6b, 0x67, 0x18, 0x0e, 0xd4, 0xf4, 0xae, 0xab, 0x0a, 0x21,
+	0x47, 0x6a, 0x9a, 0x75, 0x17, 0xc7, 0x76, 0xd3, 0xbd, 0xcb, 0xf5, 0xfd, 0xe3, 0xad, 0xd9, 0x47,
+	0xef, 0x49, 0xeb, 0x2d, 0xb4, 0x8f, 0xf5, 0x21, 0xce, 0xbe, 0xf4, 0xee, 0x54, 0x7d, 0x8e, 0xb7,
+	0x8d, 0x8a, 0xfc, 0xf4, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x78, 0x80, 0xdb, 0x29, 0xad, 0x03, 0x00,
+	0x00,
 }
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions.pb.go
index e6105b6..c4e91d3 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/extension/extensions.pb.go
@@ -228,7 +228,7 @@
 }
 
 func (GetOmciEthernetFrameExtendedPmResponse_Format) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{21, 0}
+	return fileDescriptor_7ecf6e9799a9202d, []int{22, 0}
 }
 
 type GetValueResponse_Status int32
@@ -256,7 +256,7 @@
 }
 
 func (GetValueResponse_Status) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{24, 0}
+	return fileDescriptor_7ecf6e9799a9202d, []int{32, 0}
 }
 
 type GetValueResponse_ErrorReason int32
@@ -299,7 +299,7 @@
 }
 
 func (GetValueResponse_ErrorReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{24, 1}
+	return fileDescriptor_7ecf6e9799a9202d, []int{32, 1}
 }
 
 type SetValueResponse_Status int32
@@ -327,7 +327,7 @@
 }
 
 func (SetValueResponse_Status) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{26, 0}
+	return fileDescriptor_7ecf6e9799a9202d, []int{34, 0}
 }
 
 type SetValueResponse_ErrorReason int32
@@ -352,7 +352,7 @@
 }
 
 func (SetValueResponse_ErrorReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{26, 1}
+	return fileDescriptor_7ecf6e9799a9202d, []int{34, 1}
 }
 
 type ValueSet struct {
@@ -1450,6 +1450,7 @@
 	}
 }
 
+// DEPRECATED
 type GetRxPowerRequest struct {
 	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
 	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
@@ -1497,6 +1498,57 @@
 	return 0
 }
 
+type GetOltRxPowerRequest struct {
+	PortLabel string `protobuf:"bytes,1,opt,name=port_label,json=portLabel,proto3" json:"port_label,omitempty"`
+	// onu_sn is optional and if onu_sn is an empty string and the label is
+	// of a PON port then it means that the Rx Power corresponding to all
+	// the ONUs on that PON port is requested. In case the port_label is not
+	// of a PON port, the onu_sn does not have any significance
+	OnuSn                string   `protobuf:"bytes,2,opt,name=onu_sn,json=onuSn,proto3" json:"onu_sn,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *GetOltRxPowerRequest) Reset()         { *m = GetOltRxPowerRequest{} }
+func (m *GetOltRxPowerRequest) String() string { return proto.CompactTextString(m) }
+func (*GetOltRxPowerRequest) ProtoMessage()    {}
+func (*GetOltRxPowerRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7ecf6e9799a9202d, []int{19}
+}
+
+func (m *GetOltRxPowerRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetOltRxPowerRequest.Unmarshal(m, b)
+}
+func (m *GetOltRxPowerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetOltRxPowerRequest.Marshal(b, m, deterministic)
+}
+func (m *GetOltRxPowerRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetOltRxPowerRequest.Merge(m, src)
+}
+func (m *GetOltRxPowerRequest) XXX_Size() int {
+	return xxx_messageInfo_GetOltRxPowerRequest.Size(m)
+}
+func (m *GetOltRxPowerRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetOltRxPowerRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetOltRxPowerRequest proto.InternalMessageInfo
+
+func (m *GetOltRxPowerRequest) GetPortLabel() string {
+	if m != nil {
+		return m.PortLabel
+	}
+	return ""
+}
+
+func (m *GetOltRxPowerRequest) GetOnuSn() string {
+	if m != nil {
+		return m.OnuSn
+	}
+	return ""
+}
+
 type GetOnuCountersResponse struct {
 	// Types that are valid to be assigned to IsIntfId:
 	//	*GetOnuCountersResponse_IntfId
@@ -1588,7 +1640,7 @@
 func (m *GetOnuCountersResponse) String() string { return proto.CompactTextString(m) }
 func (*GetOnuCountersResponse) ProtoMessage()    {}
 func (*GetOnuCountersResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{19}
+	return fileDescriptor_7ecf6e9799a9202d, []int{20}
 }
 
 func (m *GetOnuCountersResponse) XXX_Unmarshal(b []byte) error {
@@ -2318,7 +2370,7 @@
 func (m *OmciEthernetFrameExtendedPm) String() string { return proto.CompactTextString(m) }
 func (*OmciEthernetFrameExtendedPm) ProtoMessage()    {}
 func (*OmciEthernetFrameExtendedPm) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{20}
+	return fileDescriptor_7ecf6e9799a9202d, []int{21}
 }
 
 func (m *OmciEthernetFrameExtendedPm) XXX_Unmarshal(b []byte) error {
@@ -2452,7 +2504,7 @@
 func (m *GetOmciEthernetFrameExtendedPmResponse) String() string { return proto.CompactTextString(m) }
 func (*GetOmciEthernetFrameExtendedPmResponse) ProtoMessage()    {}
 func (*GetOmciEthernetFrameExtendedPmResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{21}
+	return fileDescriptor_7ecf6e9799a9202d, []int{22}
 }
 
 func (m *GetOmciEthernetFrameExtendedPmResponse) XXX_Unmarshal(b []byte) error {
@@ -2494,6 +2546,117 @@
 	return GetOmciEthernetFrameExtendedPmResponse_THIRTY_TWO_BIT
 }
 
+type RxPower struct {
+	OnuSn                string   `protobuf:"bytes,1,opt,name=onu_sn,json=onuSn,proto3" json:"onu_sn,omitempty"`
+	Status               string   `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"`
+	FailReason           string   `protobuf:"bytes,3,opt,name=fail_reason,json=failReason,proto3" json:"fail_reason,omitempty"`
+	RxPower              float64  `protobuf:"fixed64,4,opt,name=rx_power,json=rxPower,proto3" json:"rx_power,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *RxPower) Reset()         { *m = RxPower{} }
+func (m *RxPower) String() string { return proto.CompactTextString(m) }
+func (*RxPower) ProtoMessage()    {}
+func (*RxPower) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7ecf6e9799a9202d, []int{23}
+}
+
+func (m *RxPower) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_RxPower.Unmarshal(m, b)
+}
+func (m *RxPower) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_RxPower.Marshal(b, m, deterministic)
+}
+func (m *RxPower) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RxPower.Merge(m, src)
+}
+func (m *RxPower) XXX_Size() int {
+	return xxx_messageInfo_RxPower.Size(m)
+}
+func (m *RxPower) XXX_DiscardUnknown() {
+	xxx_messageInfo_RxPower.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RxPower proto.InternalMessageInfo
+
+func (m *RxPower) GetOnuSn() string {
+	if m != nil {
+		return m.OnuSn
+	}
+	return ""
+}
+
+func (m *RxPower) GetStatus() string {
+	if m != nil {
+		return m.Status
+	}
+	return ""
+}
+
+func (m *RxPower) GetFailReason() string {
+	if m != nil {
+		return m.FailReason
+	}
+	return ""
+}
+
+func (m *RxPower) GetRxPower() float64 {
+	if m != nil {
+		return m.RxPower
+	}
+	return 0
+}
+
+type GetOltRxPowerResponse struct {
+	PortLabel            string     `protobuf:"bytes,1,opt,name=port_label,json=portLabel,proto3" json:"port_label,omitempty"`
+	RxPower              []*RxPower `protobuf:"bytes,2,rep,name=rx_power,json=rxPower,proto3" json:"rx_power,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
+	XXX_unrecognized     []byte     `json:"-"`
+	XXX_sizecache        int32      `json:"-"`
+}
+
+func (m *GetOltRxPowerResponse) Reset()         { *m = GetOltRxPowerResponse{} }
+func (m *GetOltRxPowerResponse) String() string { return proto.CompactTextString(m) }
+func (*GetOltRxPowerResponse) ProtoMessage()    {}
+func (*GetOltRxPowerResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7ecf6e9799a9202d, []int{24}
+}
+
+func (m *GetOltRxPowerResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetOltRxPowerResponse.Unmarshal(m, b)
+}
+func (m *GetOltRxPowerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetOltRxPowerResponse.Marshal(b, m, deterministic)
+}
+func (m *GetOltRxPowerResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetOltRxPowerResponse.Merge(m, src)
+}
+func (m *GetOltRxPowerResponse) XXX_Size() int {
+	return xxx_messageInfo_GetOltRxPowerResponse.Size(m)
+}
+func (m *GetOltRxPowerResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetOltRxPowerResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetOltRxPowerResponse proto.InternalMessageInfo
+
+func (m *GetOltRxPowerResponse) GetPortLabel() string {
+	if m != nil {
+		return m.PortLabel
+	}
+	return ""
+}
+
+func (m *GetOltRxPowerResponse) GetRxPower() []*RxPower {
+	if m != nil {
+		return m.RxPower
+	}
+	return nil
+}
+
+// DEPRECATED
 type GetRxPowerResponse struct {
 	IntfId               uint32   `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
 	OnuId                uint32   `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
@@ -2509,7 +2672,7 @@
 func (m *GetRxPowerResponse) String() string { return proto.CompactTextString(m) }
 func (*GetRxPowerResponse) ProtoMessage()    {}
 func (*GetRxPowerResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{22}
+	return fileDescriptor_7ecf6e9799a9202d, []int{25}
 }
 
 func (m *GetRxPowerResponse) XXX_Unmarshal(b []byte) error {
@@ -2565,6 +2728,308 @@
 	return 0
 }
 
+type GetOnuOmciTxRxStatsRequest struct {
+	Empty                *empty.Empty `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *GetOnuOmciTxRxStatsRequest) Reset()         { *m = GetOnuOmciTxRxStatsRequest{} }
+func (m *GetOnuOmciTxRxStatsRequest) String() string { return proto.CompactTextString(m) }
+func (*GetOnuOmciTxRxStatsRequest) ProtoMessage()    {}
+func (*GetOnuOmciTxRxStatsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7ecf6e9799a9202d, []int{26}
+}
+
+func (m *GetOnuOmciTxRxStatsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetOnuOmciTxRxStatsRequest.Unmarshal(m, b)
+}
+func (m *GetOnuOmciTxRxStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetOnuOmciTxRxStatsRequest.Marshal(b, m, deterministic)
+}
+func (m *GetOnuOmciTxRxStatsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetOnuOmciTxRxStatsRequest.Merge(m, src)
+}
+func (m *GetOnuOmciTxRxStatsRequest) XXX_Size() int {
+	return xxx_messageInfo_GetOnuOmciTxRxStatsRequest.Size(m)
+}
+func (m *GetOnuOmciTxRxStatsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetOnuOmciTxRxStatsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetOnuOmciTxRxStatsRequest proto.InternalMessageInfo
+
+func (m *GetOnuOmciTxRxStatsRequest) GetEmpty() *empty.Empty {
+	if m != nil {
+		return m.Empty
+	}
+	return nil
+}
+
+// see ITU-T G.988 clause 11.2.2
+type GetOnuOmciTxRxStatsResponse struct {
+	// OMCI baseline Tx frames with AR bit set
+	BaseTxArFrames uint32 `protobuf:"varint,1,opt,name=base_tx_ar_frames,json=baseTxArFrames,proto3" json:"base_tx_ar_frames,omitempty"`
+	// OMCI baseline Rx frames with AK bit set
+	BaseRxAkFrames uint32 `protobuf:"varint,2,opt,name=base_rx_ak_frames,json=baseRxAkFrames,proto3" json:"base_rx_ak_frames,omitempty"`
+	// OMCI baseline Tx frames with AR bit unset
+	BaseTxNoArFrames uint32 `protobuf:"varint,3,opt,name=base_tx_no_ar_frames,json=baseTxNoArFrames,proto3" json:"base_tx_no_ar_frames,omitempty"`
+	// OMCI baseline Rx frames with AK bit unset
+	BaseRxNoAkFrames uint32 `protobuf:"varint,4,opt,name=base_rx_no_ak_frames,json=baseRxNoAkFrames,proto3" json:"base_rx_no_ak_frames,omitempty"`
+	// OMCI extended Tx frames with AR bit set
+	ExtTxArFrames uint32 `protobuf:"varint,5,opt,name=ext_tx_ar_frames,json=extTxArFrames,proto3" json:"ext_tx_ar_frames,omitempty"`
+	// OMCI extended Rx frames with AK bit set
+	ExtRxAkFrames uint32 `protobuf:"varint,6,opt,name=ext_rx_ak_frames,json=extRxAkFrames,proto3" json:"ext_rx_ak_frames,omitempty"`
+	// OMCI extended Tx frames with AR bit unset
+	ExtTxNoArFrames uint32 `protobuf:"varint,7,opt,name=ext_tx_no_ar_frames,json=extTxNoArFrames,proto3" json:"ext_tx_no_ar_frames,omitempty"`
+	// OMCI extended Rx frames with AK bit unset
+	ExtRxNoAkFrames uint32 `protobuf:"varint,8,opt,name=ext_rx_no_ak_frames,json=extRxNoAkFrames,proto3" json:"ext_rx_no_ak_frames,omitempty"`
+	// Number of retries of requests (tx) due to not received responses (Rx)
+	TxOmciCounterRetries uint32 `protobuf:"varint,9,opt,name=tx_omci_counter_retries,json=txOmciCounterRetries,proto3" json:"tx_omci_counter_retries,omitempty"`
+	// Number of timeouts of requests (tx) due to not received responses (Rx) after configured number of retries
+	TxOmciCounterTimeouts uint32   `protobuf:"varint,10,opt,name=tx_omci_counter_timeouts,json=txOmciCounterTimeouts,proto3" json:"tx_omci_counter_timeouts,omitempty"`
+	XXX_NoUnkeyedLiteral  struct{} `json:"-"`
+	XXX_unrecognized      []byte   `json:"-"`
+	XXX_sizecache         int32    `json:"-"`
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) Reset()         { *m = GetOnuOmciTxRxStatsResponse{} }
+func (m *GetOnuOmciTxRxStatsResponse) String() string { return proto.CompactTextString(m) }
+func (*GetOnuOmciTxRxStatsResponse) ProtoMessage()    {}
+func (*GetOnuOmciTxRxStatsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7ecf6e9799a9202d, []int{27}
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetOnuOmciTxRxStatsResponse.Unmarshal(m, b)
+}
+func (m *GetOnuOmciTxRxStatsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetOnuOmciTxRxStatsResponse.Marshal(b, m, deterministic)
+}
+func (m *GetOnuOmciTxRxStatsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetOnuOmciTxRxStatsResponse.Merge(m, src)
+}
+func (m *GetOnuOmciTxRxStatsResponse) XXX_Size() int {
+	return xxx_messageInfo_GetOnuOmciTxRxStatsResponse.Size(m)
+}
+func (m *GetOnuOmciTxRxStatsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetOnuOmciTxRxStatsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetOnuOmciTxRxStatsResponse proto.InternalMessageInfo
+
+func (m *GetOnuOmciTxRxStatsResponse) GetBaseTxArFrames() uint32 {
+	if m != nil {
+		return m.BaseTxArFrames
+	}
+	return 0
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) GetBaseRxAkFrames() uint32 {
+	if m != nil {
+		return m.BaseRxAkFrames
+	}
+	return 0
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) GetBaseTxNoArFrames() uint32 {
+	if m != nil {
+		return m.BaseTxNoArFrames
+	}
+	return 0
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) GetBaseRxNoAkFrames() uint32 {
+	if m != nil {
+		return m.BaseRxNoAkFrames
+	}
+	return 0
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) GetExtTxArFrames() uint32 {
+	if m != nil {
+		return m.ExtTxArFrames
+	}
+	return 0
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) GetExtRxAkFrames() uint32 {
+	if m != nil {
+		return m.ExtRxAkFrames
+	}
+	return 0
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) GetExtTxNoArFrames() uint32 {
+	if m != nil {
+		return m.ExtTxNoArFrames
+	}
+	return 0
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) GetExtRxNoAkFrames() uint32 {
+	if m != nil {
+		return m.ExtRxNoAkFrames
+	}
+	return 0
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) GetTxOmciCounterRetries() uint32 {
+	if m != nil {
+		return m.TxOmciCounterRetries
+	}
+	return 0
+}
+
+func (m *GetOnuOmciTxRxStatsResponse) GetTxOmciCounterTimeouts() uint32 {
+	if m != nil {
+		return m.TxOmciCounterTimeouts
+	}
+	return 0
+}
+
+type GetOnuOmciActiveAlarmsRequest struct {
+	Empty                *empty.Empty `protobuf:"bytes,1,opt,name=empty,proto3" json:"empty,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *GetOnuOmciActiveAlarmsRequest) Reset()         { *m = GetOnuOmciActiveAlarmsRequest{} }
+func (m *GetOnuOmciActiveAlarmsRequest) String() string { return proto.CompactTextString(m) }
+func (*GetOnuOmciActiveAlarmsRequest) ProtoMessage()    {}
+func (*GetOnuOmciActiveAlarmsRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7ecf6e9799a9202d, []int{28}
+}
+
+func (m *GetOnuOmciActiveAlarmsRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.Unmarshal(m, b)
+}
+func (m *GetOnuOmciActiveAlarmsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.Marshal(b, m, deterministic)
+}
+func (m *GetOnuOmciActiveAlarmsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.Merge(m, src)
+}
+func (m *GetOnuOmciActiveAlarmsRequest) XXX_Size() int {
+	return xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.Size(m)
+}
+func (m *GetOnuOmciActiveAlarmsRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetOnuOmciActiveAlarmsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetOnuOmciActiveAlarmsRequest proto.InternalMessageInfo
+
+func (m *GetOnuOmciActiveAlarmsRequest) GetEmpty() *empty.Empty {
+	if m != nil {
+		return m.Empty
+	}
+	return nil
+}
+
+type AlarmData struct {
+	ClassId              uint32   `protobuf:"varint,1,opt,name=class_id,json=classId,proto3" json:"class_id,omitempty"`
+	InstanceId           uint32   `protobuf:"varint,2,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"`
+	Name                 string   `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+	Description          string   `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *AlarmData) Reset()         { *m = AlarmData{} }
+func (m *AlarmData) String() string { return proto.CompactTextString(m) }
+func (*AlarmData) ProtoMessage()    {}
+func (*AlarmData) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7ecf6e9799a9202d, []int{29}
+}
+
+func (m *AlarmData) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_AlarmData.Unmarshal(m, b)
+}
+func (m *AlarmData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_AlarmData.Marshal(b, m, deterministic)
+}
+func (m *AlarmData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_AlarmData.Merge(m, src)
+}
+func (m *AlarmData) XXX_Size() int {
+	return xxx_messageInfo_AlarmData.Size(m)
+}
+func (m *AlarmData) XXX_DiscardUnknown() {
+	xxx_messageInfo_AlarmData.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_AlarmData proto.InternalMessageInfo
+
+func (m *AlarmData) GetClassId() uint32 {
+	if m != nil {
+		return m.ClassId
+	}
+	return 0
+}
+
+func (m *AlarmData) GetInstanceId() uint32 {
+	if m != nil {
+		return m.InstanceId
+	}
+	return 0
+}
+
+func (m *AlarmData) GetName() string {
+	if m != nil {
+		return m.Name
+	}
+	return ""
+}
+
+func (m *AlarmData) GetDescription() string {
+	if m != nil {
+		return m.Description
+	}
+	return ""
+}
+
+type GetOnuOmciActiveAlarmsResponse struct {
+	ActiveAlarms         []*AlarmData `protobuf:"bytes,1,rep,name=active_alarms,json=activeAlarms,proto3" json:"active_alarms,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
+}
+
+func (m *GetOnuOmciActiveAlarmsResponse) Reset()         { *m = GetOnuOmciActiveAlarmsResponse{} }
+func (m *GetOnuOmciActiveAlarmsResponse) String() string { return proto.CompactTextString(m) }
+func (*GetOnuOmciActiveAlarmsResponse) ProtoMessage()    {}
+func (*GetOnuOmciActiveAlarmsResponse) Descriptor() ([]byte, []int) {
+	return fileDescriptor_7ecf6e9799a9202d, []int{30}
+}
+
+func (m *GetOnuOmciActiveAlarmsResponse) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.Unmarshal(m, b)
+}
+func (m *GetOnuOmciActiveAlarmsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.Marshal(b, m, deterministic)
+}
+func (m *GetOnuOmciActiveAlarmsResponse) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.Merge(m, src)
+}
+func (m *GetOnuOmciActiveAlarmsResponse) XXX_Size() int {
+	return xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.Size(m)
+}
+func (m *GetOnuOmciActiveAlarmsResponse) XXX_DiscardUnknown() {
+	xxx_messageInfo_GetOnuOmciActiveAlarmsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetOnuOmciActiveAlarmsResponse proto.InternalMessageInfo
+
+func (m *GetOnuOmciActiveAlarmsResponse) GetActiveAlarms() []*AlarmData {
+	if m != nil {
+		return m.ActiveAlarms
+	}
+	return nil
+}
+
 type GetValueRequest struct {
 	// Types that are valid to be assigned to Request:
 	//	*GetValueRequest_Distance
@@ -2576,6 +3041,9 @@
 	//	*GetValueRequest_OnuPonInfo
 	//	*GetValueRequest_OnuInfo
 	//	*GetValueRequest_RxPower
+	//	*GetValueRequest_OnuOmciStats
+	//	*GetValueRequest_OltRxPower
+	//	*GetValueRequest_OnuActiveAlarms
 	Request              isGetValueRequest_Request `protobuf_oneof:"request"`
 	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
 	XXX_unrecognized     []byte                    `json:"-"`
@@ -2586,7 +3054,7 @@
 func (m *GetValueRequest) String() string { return proto.CompactTextString(m) }
 func (*GetValueRequest) ProtoMessage()    {}
 func (*GetValueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{23}
+	return fileDescriptor_7ecf6e9799a9202d, []int{31}
 }
 
 func (m *GetValueRequest) XXX_Unmarshal(b []byte) error {
@@ -2647,6 +3115,18 @@
 	RxPower *GetRxPowerRequest `protobuf:"bytes,9,opt,name=rxPower,proto3,oneof"`
 }
 
+type GetValueRequest_OnuOmciStats struct {
+	OnuOmciStats *GetOnuOmciTxRxStatsRequest `protobuf:"bytes,10,opt,name=onuOmciStats,proto3,oneof"`
+}
+
+type GetValueRequest_OltRxPower struct {
+	OltRxPower *GetOltRxPowerRequest `protobuf:"bytes,11,opt,name=oltRxPower,proto3,oneof"`
+}
+
+type GetValueRequest_OnuActiveAlarms struct {
+	OnuActiveAlarms *GetOnuOmciActiveAlarmsRequest `protobuf:"bytes,12,opt,name=onuActiveAlarms,proto3,oneof"`
+}
+
 func (*GetValueRequest_Distance) isGetValueRequest_Request() {}
 
 func (*GetValueRequest_UniInfo) isGetValueRequest_Request() {}
@@ -2665,6 +3145,12 @@
 
 func (*GetValueRequest_RxPower) isGetValueRequest_Request() {}
 
+func (*GetValueRequest_OnuOmciStats) isGetValueRequest_Request() {}
+
+func (*GetValueRequest_OltRxPower) isGetValueRequest_Request() {}
+
+func (*GetValueRequest_OnuActiveAlarms) isGetValueRequest_Request() {}
+
 func (m *GetValueRequest) GetRequest() isGetValueRequest_Request {
 	if m != nil {
 		return m.Request
@@ -2735,6 +3221,27 @@
 	return nil
 }
 
+func (m *GetValueRequest) GetOnuOmciStats() *GetOnuOmciTxRxStatsRequest {
+	if x, ok := m.GetRequest().(*GetValueRequest_OnuOmciStats); ok {
+		return x.OnuOmciStats
+	}
+	return nil
+}
+
+func (m *GetValueRequest) GetOltRxPower() *GetOltRxPowerRequest {
+	if x, ok := m.GetRequest().(*GetValueRequest_OltRxPower); ok {
+		return x.OltRxPower
+	}
+	return nil
+}
+
+func (m *GetValueRequest) GetOnuActiveAlarms() *GetOnuOmciActiveAlarmsRequest {
+	if x, ok := m.GetRequest().(*GetValueRequest_OnuActiveAlarms); ok {
+		return x.OnuActiveAlarms
+	}
+	return nil
+}
+
 // XXX_OneofWrappers is for the internal use of the proto package.
 func (*GetValueRequest) XXX_OneofWrappers() []interface{} {
 	return []interface{}{
@@ -2747,6 +3254,9 @@
 		(*GetValueRequest_OnuPonInfo)(nil),
 		(*GetValueRequest_OnuInfo)(nil),
 		(*GetValueRequest_RxPower)(nil),
+		(*GetValueRequest_OnuOmciStats)(nil),
+		(*GetValueRequest_OltRxPower)(nil),
+		(*GetValueRequest_OnuActiveAlarms)(nil),
 	}
 }
 
@@ -2763,6 +3273,9 @@
 	//	*GetValueResponse_OnuPonCounters
 	//	*GetValueResponse_OnuCounters
 	//	*GetValueResponse_RxPower
+	//	*GetValueResponse_OnuOmciStats
+	//	*GetValueResponse_OltRxPower
+	//	*GetValueResponse_OnuActiveAlarms
 	Response             isGetValueResponse_Response `protobuf_oneof:"response"`
 	XXX_NoUnkeyedLiteral struct{}                    `json:"-"`
 	XXX_unrecognized     []byte                      `json:"-"`
@@ -2773,7 +3286,7 @@
 func (m *GetValueResponse) String() string { return proto.CompactTextString(m) }
 func (*GetValueResponse) ProtoMessage()    {}
 func (*GetValueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{24}
+	return fileDescriptor_7ecf6e9799a9202d, []int{32}
 }
 
 func (m *GetValueResponse) XXX_Unmarshal(b []byte) error {
@@ -2848,6 +3361,18 @@
 	RxPower *GetRxPowerResponse `protobuf:"bytes,11,opt,name=rxPower,proto3,oneof"`
 }
 
+type GetValueResponse_OnuOmciStats struct {
+	OnuOmciStats *GetOnuOmciTxRxStatsResponse `protobuf:"bytes,12,opt,name=onuOmciStats,proto3,oneof"`
+}
+
+type GetValueResponse_OltRxPower struct {
+	OltRxPower *GetOltRxPowerResponse `protobuf:"bytes,13,opt,name=oltRxPower,proto3,oneof"`
+}
+
+type GetValueResponse_OnuActiveAlarms struct {
+	OnuActiveAlarms *GetOnuOmciActiveAlarmsResponse `protobuf:"bytes,14,opt,name=onuActiveAlarms,proto3,oneof"`
+}
+
 func (*GetValueResponse_Distance) isGetValueResponse_Response() {}
 
 func (*GetValueResponse_UniInfo) isGetValueResponse_Response() {}
@@ -2866,6 +3391,12 @@
 
 func (*GetValueResponse_RxPower) isGetValueResponse_Response() {}
 
+func (*GetValueResponse_OnuOmciStats) isGetValueResponse_Response() {}
+
+func (*GetValueResponse_OltRxPower) isGetValueResponse_Response() {}
+
+func (*GetValueResponse_OnuActiveAlarms) isGetValueResponse_Response() {}
+
 func (m *GetValueResponse) GetResponse() isGetValueResponse_Response {
 	if m != nil {
 		return m.Response
@@ -2936,6 +3467,27 @@
 	return nil
 }
 
+func (m *GetValueResponse) GetOnuOmciStats() *GetOnuOmciTxRxStatsResponse {
+	if x, ok := m.GetResponse().(*GetValueResponse_OnuOmciStats); ok {
+		return x.OnuOmciStats
+	}
+	return nil
+}
+
+func (m *GetValueResponse) GetOltRxPower() *GetOltRxPowerResponse {
+	if x, ok := m.GetResponse().(*GetValueResponse_OltRxPower); ok {
+		return x.OltRxPower
+	}
+	return nil
+}
+
+func (m *GetValueResponse) GetOnuActiveAlarms() *GetOnuOmciActiveAlarmsResponse {
+	if x, ok := m.GetResponse().(*GetValueResponse_OnuActiveAlarms); ok {
+		return x.OnuActiveAlarms
+	}
+	return nil
+}
+
 // XXX_OneofWrappers is for the internal use of the proto package.
 func (*GetValueResponse) XXX_OneofWrappers() []interface{} {
 	return []interface{}{
@@ -2948,6 +3500,9 @@
 		(*GetValueResponse_OnuPonCounters)(nil),
 		(*GetValueResponse_OnuCounters)(nil),
 		(*GetValueResponse_RxPower)(nil),
+		(*GetValueResponse_OnuOmciStats)(nil),
+		(*GetValueResponse_OltRxPower)(nil),
+		(*GetValueResponse_OnuActiveAlarms)(nil),
 	}
 }
 
@@ -2964,7 +3519,7 @@
 func (m *SetValueRequest) String() string { return proto.CompactTextString(m) }
 func (*SetValueRequest) ProtoMessage()    {}
 func (*SetValueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{25}
+	return fileDescriptor_7ecf6e9799a9202d, []int{33}
 }
 
 func (m *SetValueRequest) XXX_Unmarshal(b []byte) error {
@@ -3028,7 +3583,7 @@
 func (m *SetValueResponse) String() string { return proto.CompactTextString(m) }
 func (*SetValueResponse) ProtoMessage()    {}
 func (*SetValueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{26}
+	return fileDescriptor_7ecf6e9799a9202d, []int{34}
 }
 
 func (m *SetValueResponse) XXX_Unmarshal(b []byte) error {
@@ -3075,7 +3630,7 @@
 func (m *SingleGetValueRequest) String() string { return proto.CompactTextString(m) }
 func (*SingleGetValueRequest) ProtoMessage()    {}
 func (*SingleGetValueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{27}
+	return fileDescriptor_7ecf6e9799a9202d, []int{35}
 }
 
 func (m *SingleGetValueRequest) XXX_Unmarshal(b []byte) error {
@@ -3121,7 +3676,7 @@
 func (m *SingleGetValueResponse) String() string { return proto.CompactTextString(m) }
 func (*SingleGetValueResponse) ProtoMessage()    {}
 func (*SingleGetValueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{28}
+	return fileDescriptor_7ecf6e9799a9202d, []int{36}
 }
 
 func (m *SingleGetValueResponse) XXX_Unmarshal(b []byte) error {
@@ -3161,7 +3716,7 @@
 func (m *SingleSetValueRequest) String() string { return proto.CompactTextString(m) }
 func (*SingleSetValueRequest) ProtoMessage()    {}
 func (*SingleSetValueRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{29}
+	return fileDescriptor_7ecf6e9799a9202d, []int{37}
 }
 
 func (m *SingleSetValueRequest) XXX_Unmarshal(b []byte) error {
@@ -3207,7 +3762,7 @@
 func (m *SingleSetValueResponse) String() string { return proto.CompactTextString(m) }
 func (*SingleSetValueResponse) ProtoMessage()    {}
 func (*SingleSetValueResponse) Descriptor() ([]byte, []int) {
-	return fileDescriptor_7ecf6e9799a9202d, []int{30}
+	return fileDescriptor_7ecf6e9799a9202d, []int{38}
 }
 
 func (m *SingleSetValueResponse) XXX_Unmarshal(b []byte) error {
@@ -3266,10 +3821,18 @@
 	proto.RegisterType((*GetOnuCountersRequest)(nil), "extension.GetOnuCountersRequest")
 	proto.RegisterType((*GetOmciEthernetFrameExtendedPmRequest)(nil), "extension.GetOmciEthernetFrameExtendedPmRequest")
 	proto.RegisterType((*GetRxPowerRequest)(nil), "extension.GetRxPowerRequest")
+	proto.RegisterType((*GetOltRxPowerRequest)(nil), "extension.GetOltRxPowerRequest")
 	proto.RegisterType((*GetOnuCountersResponse)(nil), "extension.GetOnuCountersResponse")
 	proto.RegisterType((*OmciEthernetFrameExtendedPm)(nil), "extension.OmciEthernetFrameExtendedPm")
 	proto.RegisterType((*GetOmciEthernetFrameExtendedPmResponse)(nil), "extension.GetOmciEthernetFrameExtendedPmResponse")
+	proto.RegisterType((*RxPower)(nil), "extension.RxPower")
+	proto.RegisterType((*GetOltRxPowerResponse)(nil), "extension.GetOltRxPowerResponse")
 	proto.RegisterType((*GetRxPowerResponse)(nil), "extension.GetRxPowerResponse")
+	proto.RegisterType((*GetOnuOmciTxRxStatsRequest)(nil), "extension.GetOnuOmciTxRxStatsRequest")
+	proto.RegisterType((*GetOnuOmciTxRxStatsResponse)(nil), "extension.GetOnuOmciTxRxStatsResponse")
+	proto.RegisterType((*GetOnuOmciActiveAlarmsRequest)(nil), "extension.GetOnuOmciActiveAlarmsRequest")
+	proto.RegisterType((*AlarmData)(nil), "extension.AlarmData")
+	proto.RegisterType((*GetOnuOmciActiveAlarmsResponse)(nil), "extension.GetOnuOmciActiveAlarmsResponse")
 	proto.RegisterType((*GetValueRequest)(nil), "extension.GetValueRequest")
 	proto.RegisterType((*GetValueResponse)(nil), "extension.GetValueResponse")
 	proto.RegisterType((*SetValueRequest)(nil), "extension.SetValueRequest")
@@ -3283,209 +3846,239 @@
 func init() { proto.RegisterFile("voltha_protos/extensions.proto", fileDescriptor_7ecf6e9799a9202d) }
 
 var fileDescriptor_7ecf6e9799a9202d = []byte{
-	// 3230 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x5a, 0xcd, 0x6f, 0x1b, 0xc9,
-	0xb1, 0x17, 0x29, 0x89, 0x22, 0x8b, 0x22, 0x45, 0xb5, 0xbe, 0x28, 0xc9, 0x9f, 0xb3, 0x58, 0xdb,
-	0x6f, 0xe1, 0xa5, 0x4d, 0xae, 0xe4, 0xd5, 0xf3, 0xee, 0x03, 0x56, 0x23, 0x8e, 0x44, 0xc2, 0x32,
-	0x49, 0x37, 0x49, 0x7b, 0xfd, 0x80, 0x87, 0xc1, 0x88, 0xd3, 0x92, 0x07, 0x4b, 0xce, 0xf0, 0xcd,
-	0x34, 0xb5, 0x72, 0xae, 0xc9, 0x2d, 0xc9, 0x29, 0x97, 0xfc, 0x0d, 0x01, 0x82, 0x1c, 0x72, 0xc8,
-	0x3d, 0xe7, 0xfc, 0x13, 0x01, 0xf2, 0x17, 0x04, 0x39, 0x07, 0x41, 0x7f, 0xcc, 0x27, 0x29, 0xd9,
-	0xde, 0xe4, 0x62, 0xb3, 0xab, 0x7e, 0xf5, 0xeb, 0x9e, 0xea, 0xaa, 0xea, 0x9a, 0x1e, 0xc1, 0x9d,
-	0x4b, 0x67, 0x48, 0xdf, 0x19, 0xfa, 0xd8, 0x75, 0xa8, 0xe3, 0x3d, 0x21, 0x57, 0x94, 0xd8, 0x9e,
-	0xe5, 0xd8, 0x5e, 0x85, 0x4b, 0x50, 0x2e, 0x90, 0xec, 0x4c, 0x43, 0xf5, 0x81, 0x63, 0x9f, 0x5b,
-	0x17, 0x02, 0xba, 0xb3, 0x7b, 0xe1, 0x38, 0x17, 0x43, 0xf2, 0x84, 0x8f, 0xce, 0x26, 0xe7, 0x4f,
-	0xc8, 0x68, 0x4c, 0xdf, 0x0b, 0xa5, 0xf2, 0x7f, 0x90, 0x7d, 0x6d, 0x0c, 0x27, 0xa4, 0x4b, 0x28,
-	0x2a, 0x42, 0xda, 0x32, 0xcb, 0xa9, 0x7b, 0xa9, 0x47, 0x39, 0x9c, 0xb6, 0x4c, 0x74, 0x00, 0xcb,
-	0xc6, 0xd0, 0x70, 0x47, 0x92, 0xae, 0x9c, 0xbe, 0x97, 0x7a, 0x94, 0xaf, 0xad, 0x55, 0x24, 0xfb,
-	0x21, 0xd3, 0x1d, 0xf1, 0xdf, 0x8d, 0x39, 0x9c, 0x37, 0xc2, 0xa1, 0xba, 0x04, 0x8b, 0x97, 0x8c,
-	0x55, 0x79, 0x0c, 0x39, 0x4e, 0xdf, 0x7b, 0x3f, 0x26, 0xca, 0x5d, 0x58, 0x60, 0xff, 0xa3, 0x1c,
-	0x2c, 0x6a, 0x2f, 0x3b, 0xbd, 0xb7, 0xa5, 0x39, 0xb4, 0x0c, 0xd9, 0x7a, 0xb3, 0xdb, 0x3b, 0x6c,
-	0x1d, 0x69, 0xa5, 0x94, 0xf2, 0x0a, 0x8a, 0x62, 0x31, 0x63, 0x32, 0xb0, 0xce, 0x2d, 0xe2, 0x4e,
-	0x2d, 0xe9, 0x89, 0x24, 0xe6, 0x6b, 0x29, 0xd6, 0xb6, 0x2b, 0x81, 0x1b, 0x2a, 0xc1, 0x3c, 0x15,
-	0xf6, 0x0f, 0x96, 0x0b, 0xa0, 0xb0, 0x8c, 0x09, 0x9d, 0xb8, 0x36, 0x57, 0x7b, 0xa8, 0x04, 0xf3,
-	0x5d, 0x42, 0x39, 0x63, 0x01, 0xb3, 0x9f, 0xe8, 0x1e, 0xe4, 0xfb, 0xb6, 0x37, 0x19, 0x8f, 0x1d,
-	0x97, 0x12, 0x93, 0x13, 0x17, 0x70, 0x54, 0x84, 0xd6, 0x61, 0x51, 0x73, 0x5d, 0xc7, 0x2d, 0xcf,
-	0x73, 0x9d, 0x18, 0xa0, 0x1d, 0xc8, 0xd6, 0x2d, 0x8f, 0x1a, 0xf6, 0x80, 0x94, 0x17, 0xb8, 0x22,
-	0x18, 0x2b, 0xcf, 0x00, 0x9d, 0x10, 0xea, 0x0f, 0x31, 0xf9, 0xff, 0x09, 0xf1, 0xf8, 0x4c, 0x8e,
-	0x3d, 0xa9, 0x93, 0x4b, 0x6b, 0x40, 0x9a, 0xfe, 0x53, 0x45, 0x45, 0x4a, 0x15, 0xd6, 0x62, 0x76,
-	0xde, 0xd8, 0xb1, 0x3d, 0xc2, 0xa6, 0x32, 0xfd, 0xa9, 0xc4, 0xca, 0x83, 0xb1, 0x52, 0x83, 0xf5,
-	0x13, 0x42, 0xdb, 0xf6, 0xa4, 0x6f, 0x5b, 0x4d, 0xfb, 0xdc, 0xf1, 0x27, 0xdb, 0x81, 0xec, 0x84,
-	0x49, 0x4c, 0x72, 0xe5, 0xdb, 0xf8, 0x63, 0xe5, 0xaf, 0x0b, 0xb0, 0x91, 0x30, 0x92, 0x33, 0x75,
-	0x20, 0x6b, 0x98, 0xa3, 0x2e, 0x35, 0xa8, 0x98, 0xa9, 0x58, 0xdb, 0x8b, 0xb8, 0x78, 0xa6, 0x4d,
-	0xe5, 0xd0, 0x1c, 0x59, 0xb6, 0xe5, 0x51, 0xd7, 0xa0, 0xd6, 0x25, 0xe1, 0xb6, 0x38, 0x60, 0x41,
-	0x6d, 0xc8, 0x39, 0x63, 0xe2, 0x0a, 0x4a, 0xb1, 0x6b, 0xd5, 0x0f, 0x52, 0xb6, 0xc7, 0x84, 0xb1,
-	0x39, 0xb6, 0x31, 0x14, 0x7c, 0x21, 0x07, 0x23, 0x14, 0x01, 0xd8, 0xb4, 0x4d, 0xbe, 0x23, 0x1f,
-	0x43, 0x28, 0xe2, 0x72, 0x22, 0x48, 0x9b, 0xb6, 0x89, 0x43, 0x0e, 0xe5, 0xcf, 0x29, 0x28, 0x25,
-	0xf5, 0x08, 0x20, 0xd3, 0x6f, 0xbd, 0x68, 0xbf, 0x69, 0x95, 0xe6, 0x10, 0x82, 0x62, 0x4f, 0x6b,
-	0xe9, 0xea, 0x61, 0x57, 0xd3, 0x7b, 0xfa, 0x71, 0xfd, 0xfb, 0x52, 0x0a, 0x6d, 0x02, 0x6a, 0xf4,
-	0x5b, 0x75, 0xac, 0xd5, 0xa3, 0xf2, 0x34, 0x2a, 0xc3, 0xfa, 0x49, 0xf3, 0xe4, 0x50, 0x6d, 0xf6,
-	0x74, 0xad, 0xd7, 0xd0, 0x70, 0x4b, 0x13, 0x9a, 0x79, 0x66, 0xc1, 0x58, 0x4e, 0xe2, 0xf2, 0x85,
-	0x04, 0x7b, 0xa3, 0xfe, 0x7d, 0x69, 0x71, 0x06, 0x3b, 0x93, 0x67, 0x66, 0xb2, 0x33, 0xcd, 0x92,
-	0x72, 0x02, 0x6b, 0x33, 0xf6, 0x81, 0x11, 0x1d, 0xd6, 0x5f, 0x76, 0x7b, 0x87, 0x3d, 0x4d, 0xef,
-	0xb7, 0xea, 0xda, 0x71, 0xb3, 0xa5, 0xd5, 0x4b, 0x73, 0xec, 0xf1, 0x4e, 0xdb, 0x47, 0x2f, 0xb4,
-	0x7a, 0x29, 0xc5, 0x72, 0xb0, 0xdf, 0x92, 0xa3, 0xb4, 0x72, 0x0c, 0xa5, 0xa4, 0xf7, 0xd1, 0x16,
-	0xac, 0xb5, 0x3b, 0x1a, 0x9e, 0xa6, 0xc9, 0xc3, 0x92, 0xd6, 0x3a, 0x54, 0x4f, 0x7d, 0x9e, 0x7a,
-	0xb3, 0x2b, 0x46, 0x69, 0xe5, 0x4f, 0x29, 0x9e, 0x03, 0xed, 0x21, 0xed, 0x38, 0x2e, 0x3d, 0x72,
-	0x26, 0x36, 0x25, 0xae, 0x87, 0x36, 0x21, 0xc3, 0xb2, 0xaa, 0xe5, 0xc8, 0xa0, 0x94, 0x23, 0xa4,
-	0x42, 0x96, 0xfd, 0x62, 0xa9, 0x2b, 0xa3, 0xe4, 0x41, 0x62, 0x53, 0xe3, 0x44, 0x95, 0x8e, 0x44,
-	0xe3, 0xc0, 0x4e, 0xd1, 0x20, 0xeb, 0x4b, 0x51, 0x09, 0x96, 0xd9, 0x6f, 0xbd, 0xdf, 0x7a, 0xd1,
-	0x12, 0xbb, 0xb8, 0x01, 0xab, 0x5c, 0x12, 0x38, 0xae, 0xd5, 0x6a, 0x96, 0x52, 0x01, 0xb0, 0xd3,
-	0x6e, 0xe9, 0xed, 0xd3, 0x5e, 0x29, 0xad, 0xfc, 0x65, 0x1e, 0x76, 0xa6, 0x27, 0x0c, 0x52, 0xa4,
-	0x0c, 0x4b, 0xf4, 0x4a, 0x7d, 0x4f, 0x89, 0xc7, 0x1f, 0x61, 0x01, 0xfb, 0x43, 0xa6, 0x71, 0xa5,
-	0x26, 0x2d, 0x34, 0x72, 0x88, 0x6e, 0x41, 0x8e, 0x5e, 0x75, 0x8c, 0xc1, 0x0f, 0x84, 0x7a, 0x3c,
-	0x66, 0x17, 0x70, 0x28, 0x60, 0x5a, 0x37, 0xd0, 0x2e, 0x08, 0x6d, 0x20, 0x40, 0x0f, 0xa0, 0x48,
-	0xaf, 0x78, 0xc9, 0xf1, 0x21, 0x8b, 0x1c, 0x92, 0x90, 0x32, 0x9c, 0x1b, 0xc7, 0x65, 0x04, 0xce,
-	0x9d, 0xc2, 0xd1, 0x2b, 0x75, 0x60, 0x78, 0xd4, 0xc7, 0x2d, 0xf9, 0x7c, 0x51, 0xa9, 0xe0, 0x8b,
-	0xe1, 0xb2, 0x3e, 0x5f, 0x12, 0x47, 0xaf, 0xfa, 0x51, 0x5c, 0xce, 0xe7, 0xeb, 0x4f, 0xf1, 0xc5,
-	0x70, 0xe0, 0xf3, 0xf5, 0xa7, 0xf8, 0x5e, 0x46, 0x71, 0x79, 0x9f, 0xef, 0xe5, 0x14, 0x5f, 0x0c,
-	0xb7, 0xec, 0xf3, 0x45, 0xa5, 0x4a, 0xdd, 0x2f, 0x90, 0x1d, 0xc7, 0x6e, 0x8f, 0xa9, 0x35, 0x30,
-	0x86, 0xac, 0x34, 0xa0, 0xc7, 0xb0, 0xc8, 0x0f, 0x42, 0xbe, 0x8b, 0xf9, 0xda, 0x66, 0x45, 0x1c,
-	0x93, 0x15, 0xff, 0x98, 0xac, 0x68, 0x4c, 0x8b, 0x05, 0x48, 0xf9, 0x45, 0x1a, 0x6e, 0xcd, 0xa2,
-	0x09, 0xc2, 0xe2, 0x0b, 0x28, 0x8d, 0x9d, 0x1f, 0x89, 0x7b, 0x4c, 0x88, 0xf9, 0xda, 0x19, 0x52,
-	0xe3, 0x42, 0x54, 0xd0, 0x34, 0x9e, 0x92, 0xa3, 0x1a, 0xac, 0xbb, 0x64, 0x40, 0xac, 0x4b, 0x62,
-	0x4a, 0xaa, 0x0e, 0x83, 0xf0, 0xa8, 0x49, 0xe3, 0x99, 0x3a, 0xf4, 0x0c, 0x36, 0x47, 0xc4, 0xf0,
-	0xa7, 0x3e, 0x35, 0x26, 0xf6, 0xe0, 0x9d, 0xb0, 0x9a, 0xe7, 0x56, 0xd7, 0x68, 0xd9, 0xba, 0x86,
-	0x86, 0x47, 0x5c, 0xd5, 0x32, 0xbc, 0xa3, 0x89, 0xeb, 0x12, 0x9b, 0xf2, 0x18, 0x4b, 0xe3, 0x29,
-	0x39, 0x3b, 0xa0, 0x28, 0x19, 0xf1, 0xec, 0x9f, 0xb8, 0x84, 0xc7, 0x59, 0x1a, 0x47, 0x45, 0xca,
-	0x1f, 0x52, 0x70, 0x57, 0xb8, 0x41, 0xa3, 0xef, 0x88, 0x6b, 0x13, 0xaa, 0xba, 0x96, 0x79, 0x41,
-	0x58, 0xa6, 0x34, 0x2c, 0x8f, 0x3a, 0xee, 0x7b, 0x84, 0x21, 0x67, 0x5a, 0x2e, 0x19, 0xb0, 0x0a,
-	0x72, 0xed, 0x21, 0x72, 0xad, 0x79, 0xa5, 0xee, 0xdb, 0xe2, 0x90, 0x46, 0x39, 0x80, 0x5c, 0x20,
-	0x47, 0x05, 0xc8, 0x45, 0x8b, 0x10, 0xab, 0x5f, 0x9d, 0x6e, 0x0f, 0x6b, 0x87, 0x2f, 0x4b, 0x29,
-	0x54, 0x04, 0xa8, 0xb7, 0xdf, 0xb4, 0xe4, 0x38, 0xad, 0xfc, 0x66, 0x11, 0x1e, 0x7e, 0x60, 0xca,
-	0x60, 0x0f, 0xef, 0x00, 0x98, 0xae, 0x33, 0xd6, 0x2e, 0x89, 0x4d, 0x3d, 0x59, 0xa0, 0x22, 0x12,
-	0x56, 0xbc, 0x9c, 0x01, 0x65, 0xa1, 0x26, 0xba, 0x04, 0x39, 0x62, 0x89, 0x3f, 0x8e, 0x24, 0x77,
-	0x01, 0xfb, 0x43, 0xe6, 0xfd, 0x33, 0xd7, 0x31, 0xcc, 0x68, 0x98, 0x8a, 0x66, 0x61, 0x4a, 0xce,
-	0xb0, 0xa3, 0xc9, 0x90, 0x6d, 0x60, 0x88, 0x5d, 0x14, 0xd8, 0xa4, 0x1c, 0x3d, 0x86, 0xd5, 0x81,
-	0x3b, 0xe0, 0x79, 0x4d, 0xcc, 0x68, 0xbe, 0x17, 0xf0, 0xb4, 0x82, 0x31, 0x4f, 0x6c, 0x93, 0xb8,
-	0x9e, 0xf5, 0x33, 0x12, 0x4d, 0xfa, 0x02, 0x9e, 0x92, 0xa3, 0x47, 0xb0, 0xe2, 0x5c, 0xc6, 0xa1,
-	0x59, 0x0e, 0x4d, 0x8a, 0x19, 0x52, 0x3e, 0xe6, 0xb3, 0x3d, 0xe9, 0x96, 0x9c, 0x40, 0x26, 0xc4,
-	0x2c, 0xde, 0x7d, 0xd1, 0x7e, 0xcf, 0xa9, 0xd6, 0xbe, 0x96, 0x70, 0xe0, 0xf0, 0x99, 0x3a, 0xb4,
-	0x07, 0x1b, 0x52, 0x5e, 0xad, 0x1d, 0xf4, 0x9c, 0xda, 0xfe, 0x7e, 0x5b, 0x18, 0xe5, 0xb9, 0xd1,
-	0x6c, 0x65, 0xc4, 0xaa, 0xb6, 0xff, 0xac, 0xe7, 0xec, 0x57, 0xab, 0x72, 0xaa, 0xe5, 0x98, 0x55,
-	0x5c, 0xc9, 0x72, 0x4b, 0x2a, 0xf6, 0xab, 0xb5, 0x9e, 0x53, 0x7d, 0x5a, 0xfb, 0x4a, 0x9a, 0x15,
-	0xb8, 0xd9, 0x35, 0x5a, 0x74, 0x00, 0x5b, 0xfe, 0x32, 0x9e, 0xd6, 0xf6, 0x7a, 0x4e, 0x75, 0xbf,
-	0x7a, 0x20, 0x0d, 0x8b, 0xdc, 0xf0, 0x3a, 0xb5, 0xf2, 0x1d, 0x94, 0x44, 0x50, 0x1e, 0x93, 0x81,
-	0x9f, 0x37, 0x9f, 0x56, 0x90, 0xfe, 0x9e, 0x82, 0x72, 0x92, 0x22, 0x08, 0xe4, 0x07, 0x50, 0x1c,
-	0x38, 0x2e, 0xcb, 0x17, 0x62, 0x86, 0x47, 0x55, 0x01, 0x27, 0xa4, 0xa8, 0x02, 0x28, 0x90, 0x1c,
-	0x39, 0x26, 0x79, 0xe3, 0xb8, 0xa6, 0x1f, 0xdc, 0x33, 0x34, 0x2c, 0x41, 0xce, 0xc9, 0xa0, 0x4b,
-	0x06, 0x8e, 0x6d, 0xfa, 0xb1, 0x1e, 0x91, 0xf0, 0xda, 0xed, 0x50, 0x63, 0x18, 0x72, 0x89, 0x60,
-	0x4f, 0x48, 0x99, 0xc3, 0x27, 0xb6, 0xe4, 0x37, 0xce, 0x86, 0x24, 0xc4, 0x8b, 0x80, 0xbf, 0x46,
-	0xab, 0x9c, 0xf8, 0x7d, 0x6b, 0x78, 0x2a, 0x8b, 0x6e, 0x77, 0x0b, 0x96, 0x2c, 0x9b, 0x9e, 0xeb,
-	0xf2, 0x65, 0x61, 0x09, 0x67, 0xd8, 0xb0, 0x69, 0xa2, 0x0d, 0xc8, 0x38, 0xf6, 0x84, 0xc9, 0xd3,
-	0x5c, 0xbe, 0xe8, 0xd8, 0x93, 0xa6, 0xa9, 0xfc, 0x3a, 0x05, 0x9f, 0x33, 0xa6, 0xd1, 0xc0, 0xf2,
-	0xcb, 0xc2, 0xb1, 0x6b, 0x8c, 0x88, 0xc6, 0xca, 0x94, 0x49, 0xcc, 0xce, 0xe8, 0xa3, 0x9b, 0x76,
-	0x74, 0x2b, 0xd2, 0x69, 0x73, 0xd7, 0x35, 0xe6, 0xc2, 0x5e, 0x9b, 0xbd, 0x3c, 0xb8, 0xc4, 0x23,
-	0x94, 0x7b, 0x2b, 0x8b, 0xc5, 0x40, 0x2d, 0xc2, 0xb2, 0xe5, 0xe9, 0x13, 0xdb, 0xd2, 0x2d, 0xde,
-	0x91, 0x1f, 0xc1, 0xea, 0x09, 0xa1, 0xf8, 0x8a, 0xd7, 0xec, 0x9f, 0xfa, 0x50, 0x7f, 0x5b, 0x86,
-	0xcd, 0xa4, 0x7b, 0x64, 0x40, 0x6c, 0x27, 0xa8, 0x1a, 0x73, 0x01, 0xd9, 0x56, 0x9c, 0xac, 0x91,
-	0x92, 0x74, 0xe8, 0x21, 0x14, 0xc7, 0x8e, 0x67, 0xb1, 0x66, 0x52, 0x37, 0x5d, 0xeb, 0x5c, 0x3c,
-	0x42, 0xa6, 0x91, 0xc6, 0x05, 0x5f, 0x5e, 0x67, 0x62, 0x06, 0xb4, 0xc9, 0x85, 0x11, 0x01, 0x2e,
-	0x70, 0xe0, 0x3c, 0x2e, 0xf8, 0x72, 0x01, 0x7c, 0x0e, 0x65, 0x93, 0x0c, 0xad, 0x91, 0x45, 0x89,
-	0xab, 0x8f, 0x2c, 0xcf, 0xd3, 0x4d, 0x42, 0xe5, 0x41, 0xb1, 0xc8, 0x4d, 0x16, 0xf0, 0x66, 0x80,
-	0x78, 0x69, 0x79, 0x5e, 0xdd, 0xd7, 0xa3, 0xbb, 0x00, 0x67, 0xd6, 0x58, 0x27, 0xac, 0xb2, 0x89,
-	0x52, 0x97, 0x69, 0x2c, 0xe2, 0xdc, 0x99, 0x35, 0xe6, 0xc5, 0xce, 0x43, 0xb7, 0x81, 0x0d, 0x98,
-	0x4f, 0x65, 0x75, 0xcb, 0x34, 0x32, 0x38, 0x7b, 0x66, 0x8d, 0xfb, 0x4c, 0xc2, 0x2a, 0xc3, 0x39,
-	0x19, 0xe8, 0x41, 0x50, 0xeb, 0xde, 0xfb, 0xd1, 0x99, 0x33, 0x14, 0xd5, 0x2d, 0xd3, 0x58, 0xc2,
-	0x6b, 0xe7, 0x64, 0x70, 0xe4, 0x6b, 0xbb, 0x42, 0xc9, 0x32, 0x5c, 0x58, 0x99, 0xe4, 0x47, 0x16,
-	0x81, 0xa1, 0x3d, 0xaf, 0x75, 0x99, 0x46, 0x16, 0x6f, 0x70, 0x3b, 0xa9, 0x0f, 0x08, 0xd0, 0x77,
-	0xb0, 0x1b, 0xb7, 0x8c, 0x85, 0x34, 0x2f, 0x7d, 0x99, 0x46, 0x0e, 0x6f, 0x47, 0xad, 0xfb, 0x51,
-	0x08, 0xfa, 0x1c, 0x0a, 0x31, 0x06, 0x5e, 0xf9, 0x32, 0x0d, 0xc0, 0xcb, 0x51, 0x1b, 0xf4, 0x14,
-	0xd6, 0xe2, 0x0f, 0x26, 0x3c, 0xb0, 0xcc, 0xc1, 0x79, 0xbc, 0x1a, 0x7d, 0x2c, 0xe1, 0x8a, 0x47,
-	0xb0, 0x72, 0x75, 0x41, 0x46, 0xfa, 0x0f, 0xe4, 0xbd, 0xef, 0xcf, 0x02, 0x47, 0x2f, 0xe3, 0x02,
-	0x53, 0xbc, 0x20, 0xef, 0x43, 0x9f, 0x72, 0xe4, 0xd0, 0xf1, 0x44, 0x49, 0xcb, 0x34, 0x0a, 0x38,
-	0xcb, 0x44, 0xa7, 0x8e, 0xc7, 0x89, 0xdc, 0x2b, 0x7d, 0x3c, 0x74, 0x8c, 0x91, 0x27, 0x98, 0xca,
-	0x2b, 0x1c, 0x54, 0xc4, 0x05, 0xf7, 0xaa, 0xc3, 0xe5, 0xe2, 0x65, 0xf9, 0x4b, 0x40, 0x21, 0xd2,
-	0x76, 0x6c, 0xdd, 0x32, 0x87, 0xa4, 0x5c, 0xe2, 0xe0, 0x15, 0xbc, 0xe2, 0x83, 0x5b, 0x8e, 0xdd,
-	0x34, 0x87, 0x3c, 0x5c, 0xdd, 0x2b, 0xdd, 0x19, 0x0d, 0xac, 0xf2, 0x2a, 0xc7, 0x94, 0x70, 0xc6,
-	0xbd, 0x62, 0xd9, 0xca, 0x54, 0x54, 0xaa, 0x10, 0x57, 0xad, 0xe2, 0x0c, 0x15, 0xaa, 0xe7, 0xb0,
-	0x2d, 0xad, 0x74, 0x59, 0x77, 0xf5, 0x81, 0x3b, 0x90, 0x0b, 0x5b, 0xe3, 0x60, 0x84, 0x37, 0x04,
-	0x8f, 0x3c, 0xc4, 0x8e, 0xe4, 0x59, 0x89, 0x76, 0x21, 0xeb, 0x5e, 0xe9, 0x67, 0xbc, 0x56, 0xae,
-	0x73, 0xe8, 0x5a, 0xd8, 0xbe, 0xdf, 0x05, 0x60, 0xab, 0x97, 0xc7, 0xe1, 0x06, 0x57, 0xaf, 0x47,
-	0x7b, 0xf4, 0x5d, 0xc8, 0x52, 0xdf, 0x7a, 0x93, 0xab, 0x37, 0xc2, 0xd7, 0x82, 0xbb, 0x00, 0x34,
-	0xb4, 0xde, 0xe2, 0xea, 0xcd, 0x68, 0xff, 0xff, 0x19, 0x2c, 0x9f, 0x11, 0x57, 0x77, 0x89, 0xbc,
-	0x82, 0x28, 0x73, 0xc8, 0x16, 0xce, 0x9f, 0xb1, 0x5a, 0x20, 0x2f, 0x21, 0xee, 0x43, 0x7e, 0x38,
-	0x30, 0x2f, 0xfc, 0x0d, 0xdb, 0xe6, 0x98, 0x32, 0x06, 0x26, 0x94, 0xbb, 0xc5, 0x96, 0x69, 0x5a,
-	0x3e, 0x62, 0x87, 0x23, 0xb6, 0x71, 0xce, 0x35, 0x2d, 0x09, 0xb8, 0x03, 0x39, 0x6a, 0x8d, 0x88,
-	0x47, 0x8d, 0xd1, 0xb8, 0xbc, 0xcb, 0xb3, 0x7d, 0x07, 0x87, 0x22, 0x75, 0x19, 0xc0, 0xf2, 0x74,
-	0x59, 0x28, 0xd4, 0x3c, 0xe4, 0x2c, 0x4f, 0x17, 0xb5, 0x41, 0x5d, 0x83, 0x55, 0xcb, 0xd3, 0xe3,
-	0xf5, 0x40, 0x0a, 0xe3, 0xb9, 0xaf, 0xde, 0x86, 0x5d, 0x8b, 0x25, 0xf6, 0xec, 0x3c, 0x57, 0x57,
-	0xa0, 0x60, 0x79, 0x7a, 0x98, 0xca, 0xb2, 0x14, 0x06, 0xa9, 0xab, 0xee, 0x40, 0xd9, 0xf2, 0xf4,
-	0x99, 0xb9, 0xaa, 0xde, 0x82, 0x9d, 0x40, 0x37, 0x95, 0x91, 0xea, 0x3d, 0xb8, 0x33, 0xa5, 0x8d,
-	0x65, 0x9d, 0x8a, 0xa0, 0x94, 0x44, 0xa8, 0x65, 0xd8, 0x9c, 0x9a, 0x4f, 0xac, 0x64, 0x1d, 0x90,
-	0xe5, 0xe9, 0x89, 0x54, 0x91, 0xeb, 0x0d, 0xd2, 0x42, 0xa2, 0x12, 0x79, 0xa0, 0x6e, 0xc1, 0x46,
-	0x4c, 0xea, 0xc7, 0xbc, 0xf4, 0xb1, 0x8c, 0x53, 0x39, 0x92, 0x01, 0xad, 0xde, 0x81, 0x5b, 0xa1,
-	0x6e, 0x3a, 0x86, 0xd5, 0x02, 0xe4, 0x85, 0x9e, 0x47, 0x9a, 0x74, 0x65, 0x18, 0x99, 0x52, 0x4f,
-	0xe3, 0xfa, 0x30, 0xf6, 0xd4, 0x55, 0x58, 0x61, 0xae, 0x8e, 0xc4, 0x9a, 0x5a, 0x82, 0xa2, 0xe5,
-	0xe9, 0x91, 0xc8, 0xf2, 0x59, 0x83, 0x40, 0x92, 0x0f, 0x1c, 0x44, 0x89, 0xf2, 0xab, 0x45, 0xd8,
-	0xbd, 0xe1, 0xe0, 0x44, 0x77, 0x21, 0xcf, 0x7a, 0x66, 0x9d, 0x84, 0x6d, 0x74, 0xe6, 0x86, 0x36,
-	0x3a, 0x13, 0xb4, 0xd1, 0x9b, 0x90, 0x39, 0x67, 0x5c, 0xa2, 0xb3, 0xc8, 0x60, 0x39, 0x42, 0xff,
-	0x15, 0x69, 0xa2, 0x75, 0x89, 0xe0, 0x27, 0x0c, 0x5e, 0x09, 0xe4, 0xc7, 0x01, 0x34, 0xe8, 0x95,
-	0x7d, 0xe8, 0xa2, 0x80, 0x06, 0x72, 0x09, 0x7d, 0x0c, 0x28, 0xf0, 0x2c, 0x31, 0x7d, 0x30, 0x3f,
-	0x58, 0x70, 0x29, 0xec, 0xa1, 0x43, 0xe2, 0xa0, 0x55, 0xf6, 0xb1, 0x4b, 0x82, 0x38, 0x90, 0x4b,
-	0xe8, 0xc3, 0xb0, 0x83, 0xf6, 0x91, 0xfc, 0x8c, 0xc1, 0x45, 0x5f, 0x2c, 0x81, 0x8f, 0xa0, 0x24,
-	0xf4, 0xfa, 0xb3, 0x3d, 0x3d, 0xd2, 0x41, 0x67, 0x70, 0x51, 0xc8, 0x9f, 0xed, 0x05, 0x6d, 0xed,
-	0x96, 0x8f, 0xdc, 0xd7, 0xa9, 0xa3, 0x57, 0x6b, 0x5f, 0xeb, 0x91, 0x1e, 0x3a, 0x83, 0xd7, 0xa4,
-	0x81, 0x68, 0xa1, 0xdb, 0x7e, 0x5b, 0x5b, 0x96, 0x56, 0xd5, 0xda, 0x01, 0x33, 0xab, 0xed, 0xef,
-	0xfb, 0x66, 0xfc, 0x2c, 0xc1, 0xeb, 0x42, 0x9f, 0x68, 0xa2, 0x43, 0xbb, 0xda, 0xfe, 0x33, 0x66,
-	0xb7, 0x5f, 0xad, 0xea, 0x91, 0x3e, 0x3a, 0xb0, 0xf3, 0xdb, 0xe8, 0xb6, 0xdf, 0x0e, 0x6f, 0x4b,
-	0xbb, 0xfd, 0x6a, 0x8d, 0x2f, 0xf3, 0x69, 0xed, 0x2b, 0x3d, 0xd2, 0x49, 0x67, 0xf0, 0x86, 0x00,
-	0x04, 0x8d, 0xb4, 0xb4, 0x7c, 0x0e, 0x3b, 0xfe, 0x4a, 0x9f, 0xd6, 0xf6, 0xb8, 0xe9, 0x7e, 0xf5,
-	0x40, 0x8f, 0xf4, 0xd2, 0x19, 0xbc, 0x29, 0xd7, 0x1a, 0xb4, 0xd2, 0xc2, 0x56, 0xf9, 0x47, 0x1a,
-	0x1e, 0x7c, 0xa8, 0x95, 0x93, 0x5d, 0x90, 0x0a, 0xd9, 0xc9, 0xd8, 0xa3, 0x2e, 0x31, 0x46, 0xb2,
-	0xc9, 0x8e, 0x5e, 0x32, 0xdd, 0xc4, 0x10, 0xd8, 0xa1, 0x63, 0x00, 0xd3, 0xf9, 0xd1, 0x96, 0x2c,
-	0xe9, 0x4f, 0x62, 0x89, 0x58, 0xa2, 0x5f, 0xa6, 0xe0, 0x01, 0x4f, 0x73, 0x22, 0xc1, 0x22, 0x56,
-	0x74, 0x22, 0xe1, 0xfa, 0x78, 0xa4, 0x9f, 0x3b, 0xee, 0xc8, 0xa0, 0xf2, 0x92, 0xf3, 0x20, 0xf1,
-	0x0e, 0xfd, 0xe1, 0xe7, 0xad, 0x1c, 0x73, 0x7b, 0x7c, 0xdf, 0xb9, 0x1e, 0x2b, 0x20, 0xca, 0x53,
-	0xc8, 0x88, 0x5f, 0xfc, 0x3a, 0xb2, 0xd1, 0xc4, 0xbd, 0xb7, 0x7a, 0xef, 0x4d, 0x5b, 0x57, 0x9b,
-	0x3d, 0x71, 0x01, 0xda, 0x6d, 0x7e, 0xdf, 0x7b, 0xab, 0x1f, 0xb7, 0xfb, 0x98, 0xcb, 0x52, 0xca,
-	0x6f, 0xc5, 0xfd, 0x5e, 0xd0, 0xb2, 0x4a, 0x17, 0x7f, 0x62, 0xcf, 0xca, 0x72, 0xde, 0xa3, 0x06,
-	0x9d, 0x88, 0x9c, 0xcf, 0x61, 0x39, 0x62, 0x45, 0xe4, 0xdc, 0xb0, 0x86, 0xba, 0x4b, 0x0c, 0xcf,
-	0xb1, 0x79, 0xba, 0xe7, 0x30, 0x30, 0x11, 0xe6, 0x12, 0xb4, 0xcd, 0x0f, 0x6c, 0x7e, 0xb5, 0xc2,
-	0x33, 0x3c, 0xc5, 0x8e, 0x6b, 0xbe, 0x16, 0xe5, 0xe7, 0x8b, 0xb0, 0x72, 0x42, 0x28, 0xbf, 0xf1,
-	0xf7, 0x7b, 0xe9, 0x6f, 0x12, 0x57, 0xe8, 0xf9, 0xda, 0xed, 0xb8, 0x3f, 0x13, 0x97, 0xf5, 0xac,
-	0x87, 0xf7, 0x0d, 0xd0, 0x37, 0xb0, 0x34, 0x11, 0x17, 0xca, 0x72, 0xc3, 0xef, 0x5e, 0x7f, 0xe1,
-	0xec, 0x5b, 0xfb, 0x16, 0xe8, 0x10, 0xf2, 0x8e, 0xb8, 0x4a, 0xe4, 0x04, 0xf3, 0xb3, 0x26, 0x4f,
-	0xdc, 0x35, 0x36, 0xe6, 0x70, 0xd4, 0x06, 0x35, 0xa1, 0xe8, 0xd8, 0x93, 0xc8, 0xad, 0x13, 0xf7,
-	0xc7, 0xac, 0x65, 0xc4, 0x2f, 0xa7, 0x1a, 0x73, 0x38, 0x61, 0x88, 0x30, 0x14, 0x08, 0x7d, 0x17,
-	0x5e, 0x81, 0x70, 0xdf, 0xe5, 0x6b, 0x5f, 0x7c, 0xfc, 0x05, 0x4d, 0x63, 0x0e, 0xc7, 0x29, 0xd0,
-	0xff, 0xf0, 0xb7, 0x42, 0xa9, 0xe6, 0x15, 0x34, 0x5f, 0xdb, 0x9d, 0x22, 0x0c, 0x5f, 0x53, 0x1b,
-	0x73, 0x38, 0x62, 0x80, 0x54, 0x00, 0x87, 0xaf, 0x9c, 0x3f, 0xd9, 0x12, 0x37, 0xbf, 0x37, 0x65,
-	0x9e, 0x78, 0xe3, 0x63, 0x1c, 0xa1, 0x15, 0x3a, 0x85, 0x25, 0x16, 0x4f, 0x8c, 0x20, 0xcb, 0x09,
-	0x9e, 0x7e, 0x42, 0xb6, 0x04, 0x5b, 0x26, 0x29, 0xd0, 0x01, 0xf8, 0xb1, 0xc4, 0xeb, 0x71, 0xbe,
-	0x76, 0x2b, 0xce, 0x16, 0x7f, 0x4f, 0x63, 0x96, 0x12, 0xae, 0xe6, 0x60, 0xc9, 0x15, 0x52, 0xe5,
-	0x77, 0x59, 0xfe, 0x8e, 0x2f, 0xa3, 0x50, 0xa6, 0xc7, 0xf3, 0x20, 0xdc, 0xc5, 0xc5, 0x98, 0x12,
-	0x27, 0x8e, 0x81, 0x2b, 0x5d, 0x8e, 0x0c, 0x52, 0x42, 0x83, 0x1c, 0x71, 0x5d, 0x11, 0xfe, 0xf2,
-	0x8e, 0xfc, 0xe1, 0x4d, 0xe6, 0xfc, 0x00, 0x13, 0x70, 0x1c, 0x5a, 0xa2, 0x6f, 0x23, 0x99, 0x20,
-	0x82, 0xf1, 0xce, 0x75, 0x99, 0x20, 0x88, 0x62, 0xa9, 0xf0, 0x6d, 0x98, 0x0a, 0x0b, 0xd7, 0xec,
-	0x54, 0xe2, 0xdb, 0x4b, 0x34, 0x17, 0x5e, 0xc0, 0xf2, 0x58, 0xc4, 0x39, 0xb5, 0x89, 0xeb, 0xc9,
-	0xe0, 0xfb, 0xfc, 0xc6, 0x64, 0x88, 0xf0, 0xc4, 0x8c, 0xd1, 0xab, 0xa9, 0xac, 0x10, 0xa1, 0xf7,
-	0xf0, 0x03, 0x59, 0x11, 0x21, 0x4c, 0x66, 0xc7, 0x19, 0xac, 0xc6, 0x42, 0x3b, 0x12, 0x91, 0xb5,
-	0x8f, 0xcf, 0x90, 0xc8, 0x04, 0xd3, 0x74, 0x48, 0x8b, 0x65, 0x8b, 0x88, 0xd6, 0xcf, 0x6e, 0xc8,
-	0x96, 0x08, 0x5b, 0x34, 0x6b, 0x5e, 0xf0, 0xa7, 0xef, 0x38, 0xb6, 0xef, 0x27, 0x19, 0xaa, 0xf7,
-	0x6f, 0xc8, 0x9c, 0xd8, 0x73, 0x47, 0x4c, 0x51, 0x9f, 0x5f, 0x72, 0x04, 0x4c, 0xc0, 0x99, 0xaa,
-	0x9f, 0x7c, 0xe0, 0xf0, 0xba, 0x15, 0xf2, 0xa0, 0xff, 0x0e, 0xf3, 0x28, 0x3f, 0xab, 0xec, 0x25,
-	0x0e, 0x8f, 0x48, 0x22, 0x29, 0x55, 0xc8, 0x88, 0xf0, 0x47, 0xeb, 0x50, 0xea, 0xf6, 0x0e, 0x7b,
-	0xfd, 0x6e, 0xec, 0xcb, 0x53, 0x06, 0xd2, 0xed, 0x17, 0xa5, 0x14, 0xff, 0x96, 0x8c, 0x71, 0x1b,
-	0x97, 0xd2, 0xca, 0xef, 0x53, 0x90, 0x8f, 0xc4, 0x3c, 0x33, 0xc4, 0xda, 0x61, 0xb7, 0xdd, 0x8a,
-	0x19, 0xae, 0x40, 0xbe, 0xdf, 0xea, 0xf6, 0x3b, 0x9d, 0x36, 0xee, 0xf1, 0xcf, 0x56, 0x1b, 0xb0,
-	0xda, 0x6c, 0xbd, 0x3e, 0x3c, 0x6d, 0xd6, 0xf5, 0xba, 0xf6, 0xba, 0x79, 0xa4, 0xe9, 0xcd, 0x7a,
-	0x29, 0x1d, 0x15, 0x33, 0xa8, 0xde, 0x7b, 0xdb, 0xd1, 0x4a, 0xf3, 0x28, 0x0f, 0x4b, 0xbd, 0xe6,
-	0x4b, 0xad, 0xdd, 0xef, 0x95, 0x16, 0xd8, 0x0c, 0x3e, 0x06, 0x6b, 0xaf, 0x04, 0x64, 0x91, 0x9d,
-	0x96, 0xcd, 0x56, 0x4f, 0xc3, 0xad, 0xc3, 0x53, 0x5d, 0xac, 0x2d, 0x23, 0x64, 0xd1, 0x49, 0x4a,
-	0x4b, 0x2a, 0x40, 0xd6, 0x95, 0x4f, 0xae, 0xbc, 0x86, 0x95, 0x6e, 0xe2, 0xc4, 0x4a, 0x7e, 0x7d,
-	0x4f, 0x7d, 0xf4, 0xd7, 0xf7, 0x48, 0x11, 0xfa, 0x67, 0x0a, 0x4a, 0xdd, 0x4f, 0x29, 0x42, 0xdd,
-	0x7f, 0xaf, 0x08, 0x75, 0x3f, 0xae, 0x08, 0xfd, 0x94, 0xed, 0xdd, 0xfb, 0x29, 0xbb, 0xab, 0x58,
-	0xb0, 0xd1, 0xb5, 0xec, 0x8b, 0x21, 0x49, 0x36, 0x04, 0x3b, 0x90, 0xa5, 0x86, 0x7b, 0x41, 0x68,
-	0x70, 0xa9, 0x17, 0x8c, 0xd1, 0x5e, 0xe0, 0x40, 0x79, 0xde, 0xef, 0xcc, 0xac, 0xb3, 0x1c, 0x81,
-	0x03, 0x5f, 0xbf, 0x82, 0xcd, 0xe4, 0x54, 0xd2, 0xe1, 0x5f, 0x87, 0x3b, 0x2d, 0xb7, 0x71, 0xf7,
-	0x86, 0xc2, 0x8d, 0xc3, 0xb0, 0x08, 0x56, 0xdf, 0xfd, 0x4f, 0xad, 0xbe, 0xfb, 0xc1, 0xd5, 0x77,
-	0x3f, 0x6d, 0xf5, 0xdd, 0x6b, 0x57, 0x5f, 0xfb, 0x63, 0x0a, 0x72, 0x9a, 0x0f, 0x44, 0x18, 0xf2,
-	0x27, 0x84, 0x6a, 0x57, 0x02, 0x8e, 0xa2, 0xe7, 0xc6, 0xcc, 0x1d, 0xda, 0xb9, 0x7f, 0x03, 0x42,
-	0x2e, 0x0d, 0x43, 0xbe, 0x7b, 0x23, 0x67, 0xf7, 0x83, 0x9c, 0xc9, 0xf5, 0xab, 0x18, 0x6e, 0x3b,
-	0xee, 0x45, 0xc5, 0x19, 0x13, 0x7b, 0xe0, 0xb8, 0x66, 0x45, 0xfc, 0x75, 0x4d, 0x68, 0xf7, 0xbf,
-	0xd5, 0x0b, 0x8b, 0xbe, 0x9b, 0x9c, 0x55, 0x06, 0xce, 0xe8, 0x89, 0x8f, 0x7a, 0x22, 0x50, 0x5f,
-	0xca, 0xbf, 0xc1, 0xb9, 0xdc, 0x7f, 0x72, 0xe1, 0x84, 0x7f, 0xb4, 0x73, 0x96, 0xe1, 0xf2, 0xaf,
-	0xfe, 0x15, 0x00, 0x00, 0xff, 0xff, 0x86, 0xb9, 0xfc, 0x29, 0xd6, 0x23, 0x00, 0x00,
+	// 3710 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x5a, 0xcd, 0x73, 0xdb, 0xc8,
+	0x72, 0x17, 0x29, 0x89, 0x22, 0x9b, 0xa2, 0x44, 0x8d, 0x3e, 0x4c, 0x4b, 0xfe, 0x5a, 0xbc, 0x5a,
+	0xdb, 0xfb, 0xca, 0x4b, 0x9b, 0x5c, 0xc9, 0xab, 0xb7, 0xef, 0xa5, 0xea, 0x91, 0x22, 0x25, 0x32,
+	0x96, 0x49, 0xed, 0x90, 0xf4, 0xee, 0x26, 0x95, 0x42, 0x41, 0xc4, 0x48, 0x46, 0x99, 0x04, 0x18,
+	0x60, 0xe8, 0xa5, 0x53, 0x95, 0x5b, 0x6e, 0x49, 0x4e, 0xef, 0x92, 0x7f, 0x22, 0x95, 0x43, 0x0e,
+	0xb9, 0xe7, 0x9c, 0x7f, 0x22, 0x55, 0xb9, 0xe4, 0x98, 0x54, 0xce, 0xa9, 0xd4, 0x7c, 0x01, 0x03,
+	0x90, 0x92, 0xed, 0xcd, 0xbb, 0xd8, 0x9a, 0xee, 0x5f, 0xff, 0xa6, 0x31, 0xd3, 0xdd, 0xd3, 0x18,
+	0x10, 0x1e, 0xbc, 0xf7, 0x46, 0xf4, 0xad, 0x65, 0x4e, 0x7c, 0x8f, 0x7a, 0xc1, 0x73, 0x32, 0xa3,
+	0xc4, 0x0d, 0x1c, 0xcf, 0x0d, 0xca, 0x5c, 0x82, 0x72, 0xa1, 0x64, 0x7f, 0x1e, 0x6a, 0x0e, 0x3d,
+	0xf7, 0xca, 0xb9, 0x16, 0xd0, 0xfd, 0x83, 0x6b, 0xcf, 0xbb, 0x1e, 0x91, 0xe7, 0x7c, 0x74, 0x39,
+	0xbd, 0x7a, 0x4e, 0xc6, 0x13, 0xfa, 0x41, 0x28, 0x8d, 0xbf, 0x80, 0xec, 0x1b, 0x6b, 0x34, 0x25,
+	0x3d, 0x42, 0xd1, 0x06, 0xa4, 0x1d, 0xbb, 0x94, 0x7a, 0x94, 0x7a, 0x9a, 0xc3, 0x69, 0xc7, 0x46,
+	0xc7, 0xb0, 0x6e, 0x8d, 0x2c, 0x7f, 0x2c, 0xe9, 0x4a, 0xe9, 0x47, 0xa9, 0xa7, 0xf9, 0xea, 0x76,
+	0x59, 0xb2, 0xd7, 0x98, 0xee, 0x84, 0xff, 0xdd, 0x5a, 0xc2, 0x79, 0x2b, 0x1a, 0xd6, 0xd7, 0x60,
+	0xf5, 0x3d, 0x63, 0x35, 0x9e, 0x41, 0x8e, 0xd3, 0xf7, 0x3f, 0x4c, 0x88, 0xf1, 0x10, 0x56, 0xd8,
+	0xff, 0x28, 0x07, 0xab, 0xcd, 0xd7, 0x17, 0xfd, 0x9f, 0x8a, 0x4b, 0x68, 0x1d, 0xb2, 0x8d, 0x76,
+	0xaf, 0x5f, 0xeb, 0x9c, 0x34, 0x8b, 0x29, 0xe3, 0x7b, 0xd8, 0x10, 0xce, 0x4c, 0xc8, 0xd0, 0xb9,
+	0x72, 0x88, 0x3f, 0xe7, 0xd2, 0x73, 0x49, 0xcc, 0x7d, 0xd9, 0xa8, 0xde, 0x2d, 0x87, 0xcb, 0x50,
+	0x0e, 0xe7, 0x29, 0xb3, 0x7f, 0xb0, 0x74, 0x80, 0xc2, 0x3a, 0x26, 0x74, 0xea, 0xbb, 0x5c, 0x1d,
+	0xa0, 0x22, 0x2c, 0xf7, 0x08, 0xe5, 0x8c, 0x05, 0xcc, 0xfe, 0x44, 0x8f, 0x20, 0x3f, 0x70, 0x83,
+	0xe9, 0x64, 0xe2, 0xf9, 0x94, 0xd8, 0x9c, 0xb8, 0x80, 0x75, 0x11, 0xda, 0x81, 0xd5, 0xa6, 0xef,
+	0x7b, 0x7e, 0x69, 0x99, 0xeb, 0xc4, 0x00, 0xed, 0x43, 0xb6, 0xe1, 0x04, 0xd4, 0x72, 0x87, 0xa4,
+	0xb4, 0xc2, 0x15, 0xe1, 0xd8, 0x78, 0x09, 0xe8, 0x8c, 0x50, 0x35, 0xc4, 0xe4, 0x2f, 0xa7, 0x24,
+	0xe0, 0x33, 0x79, 0xee, 0xb4, 0x41, 0xde, 0x3b, 0x43, 0xd2, 0x56, 0x4f, 0xa5, 0x8b, 0x8c, 0x0a,
+	0x6c, 0xc7, 0xec, 0x82, 0x89, 0xe7, 0x06, 0x84, 0x4d, 0x65, 0xab, 0xa9, 0x84, 0xe7, 0xe1, 0xd8,
+	0xa8, 0xc2, 0xce, 0x19, 0xa1, 0x5d, 0x77, 0x3a, 0x70, 0x9d, 0xb6, 0x7b, 0xe5, 0xa9, 0xc9, 0xf6,
+	0x21, 0x3b, 0x65, 0x12, 0x9b, 0xcc, 0x94, 0x8d, 0x1a, 0x1b, 0xff, 0xbe, 0x02, 0xbb, 0x09, 0x23,
+	0x39, 0xd3, 0x05, 0x64, 0x2d, 0x7b, 0xdc, 0xa3, 0x16, 0x15, 0x33, 0x6d, 0x54, 0x0f, 0xb5, 0x25,
+	0x5e, 0x68, 0x53, 0xae, 0xd9, 0x63, 0xc7, 0x75, 0x02, 0xea, 0x5b, 0xd4, 0x79, 0x4f, 0xb8, 0x2d,
+	0x0e, 0x59, 0x50, 0x17, 0x72, 0xde, 0x84, 0xf8, 0x82, 0x52, 0xec, 0x5a, 0xe5, 0xa3, 0x94, 0xdd,
+	0x09, 0x61, 0x6c, 0x9e, 0x6b, 0x8d, 0x04, 0x5f, 0xc4, 0xc1, 0x08, 0x45, 0x00, 0xb6, 0x5d, 0x9b,
+	0xef, 0xc8, 0xa7, 0x10, 0x8a, 0xb8, 0x9c, 0x0a, 0xd2, 0xb6, 0x6b, 0xe3, 0x88, 0xc3, 0xf8, 0xd7,
+	0x14, 0x14, 0x93, 0x7a, 0x04, 0x90, 0x19, 0x74, 0x5e, 0x75, 0x7f, 0xe8, 0x14, 0x97, 0x10, 0x82,
+	0x8d, 0x7e, 0xb3, 0x63, 0xd6, 0x6b, 0xbd, 0xa6, 0xd9, 0x37, 0x4f, 0x1b, 0x3f, 0x16, 0x53, 0x68,
+	0x0f, 0x50, 0x6b, 0xd0, 0x69, 0xe0, 0x66, 0x43, 0x97, 0xa7, 0x51, 0x09, 0x76, 0xce, 0xda, 0x67,
+	0xb5, 0x7a, 0xbb, 0x6f, 0x36, 0xfb, 0xad, 0x26, 0xee, 0x34, 0x85, 0x66, 0x99, 0x59, 0x30, 0x96,
+	0xb3, 0xb8, 0x7c, 0x25, 0xc1, 0xde, 0x6a, 0xfc, 0x58, 0x5c, 0x5d, 0xc0, 0xce, 0xe4, 0x99, 0x85,
+	0xec, 0x4c, 0xb3, 0x66, 0x9c, 0xc1, 0xf6, 0x82, 0x7d, 0x60, 0x44, 0xb5, 0xc6, 0xeb, 0x5e, 0xbf,
+	0xd6, 0x6f, 0x9a, 0x83, 0x4e, 0xa3, 0x79, 0xda, 0xee, 0x34, 0x1b, 0xc5, 0x25, 0xf6, 0x78, 0xe7,
+	0xdd, 0x93, 0x57, 0xcd, 0x46, 0x31, 0xc5, 0x72, 0x70, 0xd0, 0x91, 0xa3, 0xb4, 0x71, 0x0a, 0xc5,
+	0xe4, 0xea, 0xa3, 0x3b, 0xb0, 0xdd, 0xbd, 0x68, 0xe2, 0x79, 0x9a, 0x3c, 0xac, 0x35, 0x3b, 0xb5,
+	0xfa, 0xb9, 0xe2, 0x69, 0xb4, 0x7b, 0x62, 0x94, 0x36, 0xfe, 0x25, 0xc5, 0x73, 0xa0, 0x3b, 0xa2,
+	0x17, 0x9e, 0x4f, 0x4f, 0xbc, 0xa9, 0x4b, 0x89, 0x1f, 0xa0, 0x3d, 0xc8, 0xb0, 0xac, 0xea, 0x78,
+	0x32, 0x28, 0xe5, 0x08, 0xd5, 0x21, 0xcb, 0xfe, 0x62, 0xa9, 0x2b, 0xa3, 0xe4, 0x71, 0x62, 0x53,
+	0xe3, 0x44, 0xe5, 0x0b, 0x89, 0xc6, 0xa1, 0x9d, 0xd1, 0x84, 0xac, 0x92, 0xa2, 0x22, 0xac, 0xb3,
+	0xbf, 0xcd, 0x41, 0xe7, 0x55, 0x47, 0xec, 0xe2, 0x2e, 0x6c, 0x71, 0x49, 0xb8, 0x70, 0x9d, 0x4e,
+	0xbb, 0x98, 0x0a, 0x81, 0x17, 0xdd, 0x8e, 0xd9, 0x3d, 0xef, 0x17, 0xd3, 0xc6, 0xbf, 0x2d, 0xc3,
+	0xfe, 0xfc, 0x84, 0x61, 0x8a, 0x94, 0x60, 0x8d, 0xce, 0xea, 0x1f, 0x28, 0x09, 0xf8, 0x23, 0xac,
+	0x60, 0x35, 0x64, 0x1a, 0x5f, 0x6a, 0xd2, 0x42, 0x23, 0x87, 0xe8, 0x1e, 0xe4, 0xe8, 0xec, 0xc2,
+	0x1a, 0xbe, 0x23, 0x34, 0xe0, 0x31, 0xbb, 0x82, 0x23, 0x01, 0xd3, 0xfa, 0xa1, 0x76, 0x45, 0x68,
+	0x43, 0x01, 0x7a, 0x0c, 0x1b, 0x74, 0xc6, 0x4b, 0x8e, 0x82, 0xac, 0x72, 0x48, 0x42, 0xca, 0x70,
+	0x7e, 0x1c, 0x97, 0x11, 0x38, 0x7f, 0x0e, 0x47, 0x67, 0xf5, 0xa1, 0x15, 0x50, 0x85, 0x5b, 0x53,
+	0x7c, 0xba, 0x54, 0xf0, 0xc5, 0x70, 0x59, 0xc5, 0x97, 0xc4, 0xd1, 0xd9, 0x40, 0xc7, 0xe5, 0x14,
+	0xdf, 0x60, 0x8e, 0x2f, 0x86, 0x03, 0xc5, 0x37, 0x98, 0xe3, 0x7b, 0xad, 0xe3, 0xf2, 0x8a, 0xef,
+	0xf5, 0x1c, 0x5f, 0x0c, 0xb7, 0xae, 0xf8, 0x74, 0xa9, 0xd1, 0x50, 0x05, 0xf2, 0xc2, 0x73, 0xbb,
+	0x13, 0xea, 0x0c, 0xad, 0x11, 0x2b, 0x0d, 0xe8, 0x19, 0xac, 0xf2, 0x83, 0x90, 0xef, 0x62, 0xbe,
+	0xba, 0x57, 0x16, 0xc7, 0x64, 0x59, 0x1d, 0x93, 0xe5, 0x26, 0xd3, 0x62, 0x01, 0x32, 0xfe, 0x26,
+	0x0d, 0xf7, 0x16, 0xd1, 0x84, 0x61, 0xf1, 0x6b, 0x28, 0x4e, 0xbc, 0x9f, 0x89, 0x7f, 0x4a, 0x88,
+	0xfd, 0xc6, 0x1b, 0x51, 0xeb, 0x5a, 0x54, 0xd0, 0x34, 0x9e, 0x93, 0xa3, 0x2a, 0xec, 0xf8, 0x64,
+	0x48, 0x9c, 0xf7, 0xc4, 0x96, 0x54, 0x17, 0x0c, 0xc2, 0xa3, 0x26, 0x8d, 0x17, 0xea, 0xd0, 0x4b,
+	0xd8, 0x1b, 0x13, 0x4b, 0x4d, 0x7d, 0x6e, 0x4d, 0xdd, 0xe1, 0x5b, 0x61, 0xb5, 0xcc, 0xad, 0x6e,
+	0xd0, 0x32, 0xbf, 0x46, 0x56, 0x40, 0xfc, 0xba, 0x63, 0x05, 0x27, 0x53, 0xdf, 0x27, 0x2e, 0xe5,
+	0x31, 0x96, 0xc6, 0x73, 0x72, 0x76, 0x40, 0x51, 0x32, 0xe6, 0xd9, 0x3f, 0xf5, 0x09, 0x8f, 0xb3,
+	0x34, 0xd6, 0x45, 0xc6, 0x3f, 0xa5, 0xe0, 0xa1, 0x58, 0x86, 0x26, 0x7d, 0x4b, 0x7c, 0x97, 0xd0,
+	0xba, 0xef, 0xd8, 0xd7, 0x84, 0x65, 0x4a, 0xcb, 0x09, 0xa8, 0xe7, 0x7f, 0x40, 0x18, 0x72, 0xb6,
+	0xe3, 0x93, 0x21, 0xab, 0x20, 0x37, 0x1e, 0x22, 0x37, 0x9a, 0x97, 0x1b, 0xca, 0x16, 0x47, 0x34,
+	0xc6, 0x31, 0xe4, 0x42, 0x39, 0x2a, 0x40, 0x4e, 0x2f, 0x42, 0xac, 0x7e, 0x5d, 0xf4, 0xfa, 0xb8,
+	0x59, 0x7b, 0x5d, 0x4c, 0xa1, 0x0d, 0x80, 0x46, 0xf7, 0x87, 0x8e, 0x1c, 0xa7, 0x8d, 0x3f, 0xac,
+	0xc2, 0x93, 0x8f, 0x4c, 0x19, 0xee, 0xe1, 0x03, 0x00, 0xdb, 0xf7, 0x26, 0xcd, 0xf7, 0xc4, 0xa5,
+	0x81, 0x2c, 0x50, 0x9a, 0x84, 0x15, 0x2f, 0x6f, 0x48, 0x59, 0xa8, 0x89, 0x2e, 0x41, 0x8e, 0x58,
+	0xe2, 0x4f, 0xb4, 0xe4, 0x2e, 0x60, 0x35, 0x64, 0xab, 0x7f, 0xe9, 0x7b, 0x96, 0xad, 0x87, 0xa9,
+	0x68, 0x16, 0xe6, 0xe4, 0x0c, 0x3b, 0x9e, 0x8e, 0xd8, 0x06, 0x46, 0xd8, 0x55, 0x81, 0x4d, 0xca,
+	0xd1, 0x33, 0xd8, 0x1a, 0xfa, 0x43, 0x9e, 0xd7, 0xc4, 0xd6, 0xf3, 0xbd, 0x80, 0xe7, 0x15, 0x8c,
+	0x79, 0xea, 0xda, 0xc4, 0x0f, 0x9c, 0xbf, 0x22, 0x7a, 0xd2, 0x17, 0xf0, 0x9c, 0x1c, 0x3d, 0x85,
+	0x4d, 0xef, 0x7d, 0x1c, 0x9a, 0xe5, 0xd0, 0xa4, 0x98, 0x21, 0xe5, 0x63, 0xbe, 0x3c, 0x94, 0xcb,
+	0x92, 0x13, 0xc8, 0x84, 0x98, 0xc5, 0xbb, 0x12, 0x1d, 0xf5, 0xbd, 0x4a, 0xf5, 0x5b, 0x09, 0x07,
+	0x0e, 0x5f, 0xa8, 0x43, 0x87, 0xb0, 0x2b, 0xe5, 0x95, 0xea, 0x71, 0xdf, 0xab, 0x1e, 0x1d, 0x75,
+	0x85, 0x51, 0x9e, 0x1b, 0x2d, 0x56, 0x6a, 0x56, 0xd5, 0xa3, 0x97, 0x7d, 0xef, 0xa8, 0x52, 0x91,
+	0x53, 0xad, 0xc7, 0xac, 0xe2, 0x4a, 0x96, 0x5b, 0x52, 0x71, 0x54, 0xa9, 0xf6, 0xbd, 0xca, 0x8b,
+	0xea, 0x37, 0xd2, 0xac, 0xc0, 0xcd, 0x6e, 0xd0, 0xa2, 0x63, 0xb8, 0xa3, 0xdc, 0x78, 0x51, 0x3d,
+	0xec, 0x7b, 0x95, 0xa3, 0xca, 0xb1, 0x34, 0xdc, 0xe0, 0x86, 0x37, 0xa9, 0x8d, 0xdf, 0x43, 0x51,
+	0x04, 0xe5, 0x29, 0x19, 0xaa, 0xbc, 0xf9, 0xbc, 0x82, 0xf4, 0xdf, 0x29, 0x28, 0x25, 0x29, 0xc2,
+	0x40, 0x7e, 0x0c, 0x1b, 0x43, 0xcf, 0x67, 0xf9, 0x42, 0xec, 0xe8, 0xa8, 0x2a, 0xe0, 0x84, 0x14,
+	0x95, 0x01, 0x85, 0x92, 0x13, 0xcf, 0x26, 0x3f, 0x78, 0xbe, 0xad, 0x82, 0x7b, 0x81, 0x86, 0x25,
+	0xc8, 0x15, 0x19, 0xf6, 0xc8, 0xd0, 0x73, 0x6d, 0x15, 0xeb, 0x9a, 0x84, 0xd7, 0x6e, 0x8f, 0x5a,
+	0xa3, 0x88, 0x4b, 0x04, 0x7b, 0x42, 0xca, 0x16, 0x7c, 0xea, 0x4a, 0x7e, 0xeb, 0x72, 0x44, 0x22,
+	0xbc, 0x08, 0xf8, 0x1b, 0xb4, 0xc6, 0x99, 0xea, 0x5b, 0xa3, 0x53, 0x59, 0x74, 0xbb, 0x77, 0x60,
+	0xcd, 0x71, 0xe9, 0x95, 0x29, 0x5f, 0x16, 0xd6, 0x70, 0x86, 0x0d, 0xdb, 0x36, 0xda, 0x85, 0x8c,
+	0xe7, 0x4e, 0x99, 0x3c, 0xcd, 0xe5, 0xab, 0x9e, 0x3b, 0x6d, 0xdb, 0xc6, 0xdf, 0xa7, 0xe0, 0x4b,
+	0xc6, 0x34, 0x1e, 0x3a, 0xaa, 0x2c, 0x9c, 0xfa, 0xd6, 0x98, 0x34, 0x59, 0x99, 0xb2, 0x89, 0x7d,
+	0x31, 0xfe, 0xe4, 0xa6, 0x1d, 0xdd, 0xd3, 0x3a, 0x6d, 0xbe, 0x74, 0xad, 0xa5, 0xa8, 0xd7, 0x66,
+	0x2f, 0x0f, 0x3e, 0x09, 0x08, 0xe5, 0xab, 0x95, 0xc5, 0x62, 0x50, 0xdf, 0x80, 0x75, 0x27, 0x30,
+	0xa7, 0xae, 0x63, 0x3a, 0xbc, 0x23, 0x3f, 0x81, 0xad, 0x33, 0x42, 0xf1, 0x8c, 0xd7, 0xec, 0x5f,
+	0xfa, 0x50, 0xe7, 0xe2, 0xa4, 0x1b, 0x25, 0x79, 0xee, 0x03, 0xb0, 0x1e, 0xc9, 0x1c, 0x59, 0x97,
+	0x64, 0x24, 0x9f, 0x20, 0xc7, 0x24, 0xe7, 0x4c, 0xa0, 0xd8, 0x02, 0x97, 0xb3, 0xe5, 0x38, 0x5b,
+	0xcf, 0x35, 0xfe, 0x63, 0x1d, 0xf6, 0x92, 0x8b, 0x2d, 0xc3, 0xeb, 0x6e, 0xc2, 0xb1, 0xd6, 0x52,
+	0xe8, 0xda, 0x9d, 0xb8, 0x6b, 0xad, 0x94, 0x74, 0x0e, 0x3d, 0x81, 0x8d, 0x89, 0x17, 0x38, 0xac,
+	0x35, 0x35, 0x6d, 0xdf, 0xb9, 0x12, 0x0b, 0x92, 0x69, 0xa5, 0x71, 0x41, 0xc9, 0x1b, 0x4c, 0xcc,
+	0x80, 0x2e, 0xb9, 0xb6, 0x34, 0xe0, 0x0a, 0x07, 0x2e, 0xe3, 0x82, 0x92, 0x0b, 0xe0, 0x77, 0x50,
+	0xb2, 0xc9, 0xc8, 0x19, 0x3b, 0x94, 0xf8, 0xe6, 0xd8, 0x09, 0x02, 0xd3, 0x26, 0x54, 0x1e, 0x3b,
+	0xab, 0xdc, 0x64, 0x05, 0xef, 0x85, 0x88, 0xd7, 0x4e, 0x10, 0x34, 0x94, 0x1e, 0x3d, 0x04, 0xb8,
+	0x74, 0x26, 0x26, 0x61, 0x75, 0x52, 0x14, 0xce, 0x4c, 0x6b, 0x15, 0xe7, 0x2e, 0x9d, 0x09, 0x2f,
+	0x9d, 0x01, 0xba, 0x0f, 0x6c, 0xc0, 0x76, 0x48, 0xd6, 0xca, 0x4c, 0x2b, 0x83, 0xb3, 0x97, 0xce,
+	0x64, 0xc0, 0x24, 0xac, 0xce, 0x5c, 0x91, 0xa1, 0x19, 0xa6, 0x88, 0x19, 0x7c, 0x18, 0x5f, 0x7a,
+	0x23, 0x51, 0x2b, 0x33, 0xad, 0x35, 0xbc, 0x7d, 0x45, 0x86, 0x27, 0x4a, 0xdb, 0x13, 0x4a, 0x56,
+	0x2f, 0x84, 0x95, 0x4d, 0x7e, 0x66, 0xf1, 0x1c, 0xd9, 0xf3, 0xca, 0x99, 0x69, 0x65, 0xf1, 0x2e,
+	0xb7, 0x93, 0xfa, 0x90, 0x00, 0xfd, 0x1e, 0x0e, 0xe2, 0x96, 0xb1, 0x04, 0xe1, 0x85, 0x34, 0xd3,
+	0xca, 0xe1, 0xbb, 0xba, 0xf5, 0x40, 0x87, 0xa0, 0x2f, 0xa1, 0x10, 0x63, 0xe0, 0x75, 0x34, 0xd3,
+	0x02, 0xbc, 0xae, 0xdb, 0xa0, 0x17, 0xb0, 0x1d, 0x7f, 0x30, 0xb1, 0x02, 0xeb, 0x1c, 0x9c, 0xc7,
+	0x5b, 0xfa, 0x63, 0x89, 0xa5, 0x78, 0x0a, 0x9b, 0xb3, 0x6b, 0x32, 0x36, 0xdf, 0x91, 0x0f, 0x6a,
+	0x3d, 0x0b, 0x1c, 0xbd, 0x8e, 0x0b, 0x4c, 0xf1, 0x8a, 0x7c, 0x88, 0xd6, 0x94, 0x23, 0x47, 0x5e,
+	0x20, 0x0a, 0x64, 0xa6, 0x55, 0xc0, 0x59, 0x26, 0x3a, 0xf7, 0x02, 0x4e, 0xe4, 0xcf, 0xcc, 0xc9,
+	0xc8, 0xb3, 0xc6, 0x81, 0x60, 0x2a, 0x6d, 0x72, 0xd0, 0x06, 0x2e, 0xf8, 0xb3, 0x0b, 0x2e, 0x17,
+	0xaf, 0xde, 0x5f, 0x03, 0x8a, 0x90, 0xae, 0xe7, 0x9a, 0x8e, 0x3d, 0x22, 0xa5, 0x22, 0x07, 0x6f,
+	0xe2, 0x4d, 0x05, 0xee, 0x78, 0x6e, 0xdb, 0x1e, 0xf1, 0x70, 0xf5, 0x67, 0xa6, 0x37, 0x1e, 0x3a,
+	0xa5, 0x2d, 0x8e, 0x29, 0xe2, 0x8c, 0x3f, 0x63, 0xb9, 0xcf, 0x54, 0x54, 0xaa, 0x10, 0x57, 0x6d,
+	0xe1, 0x0c, 0x15, 0xaa, 0xef, 0xe0, 0xae, 0xb4, 0x32, 0x65, 0x15, 0x37, 0x87, 0xfe, 0x50, 0x3a,
+	0xb6, 0xcd, 0xc1, 0x08, 0xef, 0x0a, 0x1e, 0x79, 0x24, 0x9e, 0xc8, 0x93, 0x17, 0x1d, 0x40, 0xd6,
+	0x9f, 0x99, 0x97, 0xbc, 0xf2, 0xee, 0x70, 0xe8, 0x76, 0xf4, 0x32, 0xf0, 0x10, 0x80, 0x79, 0x2f,
+	0x0f, 0xd7, 0x5d, 0xae, 0xde, 0xd1, 0x3b, 0xfe, 0x03, 0xc8, 0x52, 0x65, 0xbd, 0xc7, 0xd5, 0xbb,
+	0xd1, 0x4b, 0xc6, 0x43, 0x00, 0x1a, 0x59, 0xdf, 0xe1, 0xea, 0x3d, 0xfd, 0x6d, 0xe2, 0x57, 0xb0,
+	0x7e, 0x49, 0x7c, 0xd3, 0x27, 0xf2, 0x42, 0xa3, 0xc4, 0x21, 0x77, 0x70, 0xfe, 0x92, 0x55, 0x04,
+	0x79, 0xa5, 0xf1, 0x05, 0xe4, 0x47, 0x43, 0xfb, 0x5a, 0x6d, 0xd8, 0x5d, 0x8e, 0x29, 0x61, 0x60,
+	0x42, 0xb9, 0x5b, 0xcc, 0x4d, 0xdb, 0x51, 0x88, 0x7d, 0x8e, 0xb8, 0x8b, 0x73, 0xbe, 0xed, 0x48,
+	0xc0, 0x03, 0xc8, 0x51, 0x67, 0x4c, 0x02, 0x6a, 0x8d, 0x27, 0xa5, 0x03, 0x9e, 0xed, 0xfb, 0x38,
+	0x12, 0xd5, 0xd7, 0x01, 0x9c, 0xc0, 0x94, 0x85, 0xa2, 0x9e, 0x87, 0x9c, 0x13, 0x98, 0xa2, 0x36,
+	0xd4, 0xb7, 0x61, 0xcb, 0x09, 0xcc, 0x78, 0x3d, 0x90, 0xc2, 0x78, 0xee, 0xd7, 0xef, 0xc3, 0x81,
+	0xc3, 0x12, 0x7b, 0x71, 0x9e, 0xd7, 0x37, 0xa1, 0xe0, 0x04, 0x66, 0x94, 0xca, 0xb2, 0xb0, 0x86,
+	0xa9, 0x5b, 0xdf, 0x87, 0x92, 0x13, 0x98, 0x0b, 0x73, 0xb5, 0x7e, 0x0f, 0xf6, 0x43, 0xdd, 0x5c,
+	0x46, 0xd6, 0x1f, 0xc1, 0x83, 0x39, 0x6d, 0x2c, 0xeb, 0xea, 0x08, 0x8a, 0x49, 0x44, 0xbd, 0x04,
+	0x7b, 0x73, 0xf3, 0x09, 0x4f, 0x76, 0x00, 0x39, 0x81, 0x99, 0x48, 0x15, 0xe9, 0x6f, 0x98, 0x16,
+	0x12, 0x95, 0xc8, 0x83, 0xfa, 0x1d, 0xd8, 0x8d, 0x49, 0x55, 0xcc, 0xcb, 0x35, 0x96, 0x71, 0x2a,
+	0x47, 0x32, 0xa0, 0xeb, 0x0f, 0xe0, 0x5e, 0xa4, 0x9b, 0x8f, 0xe1, 0x7a, 0x01, 0xf2, 0x42, 0xcf,
+	0x23, 0x4d, 0x2e, 0x65, 0x14, 0x99, 0x52, 0x4f, 0xe3, 0xfa, 0x28, 0xf6, 0xea, 0x5b, 0xb0, 0xc9,
+	0x96, 0x5a, 0x8b, 0xb5, 0x7a, 0x11, 0x36, 0x9c, 0xc0, 0xd4, 0x22, 0x4b, 0xb1, 0x86, 0x81, 0x24,
+	0x1f, 0x38, 0x8c, 0x12, 0xe3, 0xef, 0x56, 0xe1, 0xe0, 0x96, 0x63, 0x18, 0x3d, 0x84, 0x3c, 0xeb,
+	0xc0, 0x4d, 0x12, 0x35, 0xe5, 0x99, 0x5b, 0x9a, 0xf2, 0x4c, 0xd8, 0x94, 0xef, 0x41, 0xe6, 0x8a,
+	0x71, 0x89, 0x3e, 0x25, 0x83, 0xe5, 0x08, 0x7d, 0xa5, 0xb5, 0xe4, 0xa6, 0x44, 0xf0, 0x13, 0x06,
+	0x6f, 0x86, 0xf2, 0xd3, 0x10, 0x1a, 0x76, 0xde, 0x0a, 0xba, 0x2a, 0xa0, 0xa1, 0x5c, 0x42, 0x9f,
+	0x01, 0x0a, 0x57, 0x96, 0xd8, 0x0a, 0xcc, 0x0f, 0x16, 0x5c, 0x8c, 0x3a, 0xf2, 0x88, 0x38, 0x6c,
+	0xbc, 0x15, 0x76, 0x4d, 0x10, 0x87, 0x72, 0x09, 0x7d, 0x12, 0xf5, 0xe3, 0x0a, 0xc9, 0xcf, 0x18,
+	0xbc, 0xa1, 0xc4, 0x12, 0xf8, 0x14, 0x8a, 0x42, 0x6f, 0xbe, 0x3c, 0x34, 0xb5, 0x7e, 0x3c, 0x83,
+	0x37, 0x84, 0xfc, 0xe5, 0x61, 0xd8, 0x24, 0xdf, 0x51, 0xc8, 0x23, 0x93, 0x7a, 0x66, 0xa5, 0xfa,
+	0xad, 0xa9, 0x75, 0xe4, 0x19, 0xbc, 0x2d, 0x0d, 0x44, 0x43, 0xde, 0x55, 0x4d, 0x72, 0x49, 0x5a,
+	0x55, 0xaa, 0xc7, 0xcc, 0xac, 0x7a, 0x74, 0xa4, 0xcc, 0xf8, 0x59, 0x82, 0x77, 0x84, 0x3e, 0xd1,
+	0x92, 0x47, 0x76, 0xd5, 0xa3, 0x97, 0xcc, 0xee, 0xa8, 0x52, 0x31, 0xb5, 0xae, 0x3c, 0xb4, 0x53,
+	0x4d, 0x79, 0x57, 0x35, 0xd7, 0x77, 0xa5, 0xdd, 0x51, 0xa5, 0xca, 0xdd, 0x7c, 0x51, 0xfd, 0xc6,
+	0xd4, 0xfa, 0xf2, 0x0c, 0xde, 0x15, 0x80, 0xb0, 0x2d, 0x97, 0x96, 0xdf, 0xc1, 0xbe, 0xf2, 0xf4,
+	0x45, 0xf5, 0x90, 0x9b, 0x1e, 0x55, 0x8e, 0x4d, 0xad, 0x33, 0xcf, 0xe0, 0x3d, 0xe9, 0x6b, 0xd8,
+	0x98, 0x0b, 0x5b, 0xe3, 0x7f, 0xd2, 0xf0, 0xf8, 0x63, 0x8d, 0xa1, 0xec, 0x82, 0xea, 0x90, 0x9d,
+	0x4e, 0x02, 0xea, 0x13, 0x6b, 0x2c, 0x5b, 0x76, 0xfd, 0xca, 0xea, 0x36, 0x86, 0xd0, 0x0e, 0x9d,
+	0x02, 0xd8, 0xde, 0xcf, 0xae, 0x64, 0x49, 0x7f, 0x16, 0x8b, 0x66, 0x89, 0xfe, 0x36, 0x05, 0x8f,
+	0x79, 0x9a, 0x13, 0x09, 0x16, 0xb1, 0x62, 0x12, 0x09, 0x37, 0x27, 0x63, 0xf3, 0xca, 0xf3, 0xc7,
+	0x16, 0x95, 0x57, 0xa6, 0xc7, 0x89, 0x37, 0xf2, 0x8f, 0x3f, 0x6f, 0xf9, 0x94, 0xdb, 0xe3, 0x2f,
+	0xbc, 0x9b, 0xb1, 0x02, 0x62, 0xbc, 0x80, 0x8c, 0xf8, 0x8b, 0x5f, 0x6e, 0xb6, 0xda, 0xb8, 0xff,
+	0x93, 0xd9, 0xff, 0xa1, 0x6b, 0xd6, 0xdb, 0x7d, 0x71, 0x9d, 0xda, 0x6b, 0xff, 0xd8, 0xff, 0xc9,
+	0x3c, 0xed, 0x0e, 0x30, 0x97, 0xa5, 0x0c, 0x0a, 0x6b, 0xb2, 0x69, 0xd5, 0xda, 0xd1, 0x94, 0xd6,
+	0x8e, 0xb2, 0x74, 0x0e, 0xa8, 0x45, 0xa7, 0x81, 0xec, 0x52, 0xe5, 0x88, 0xd5, 0x87, 0x2b, 0xcb,
+	0x19, 0x99, 0x3e, 0xb1, 0x02, 0xcf, 0xe5, 0x4f, 0x97, 0xc3, 0xc0, 0x44, 0x98, 0x4b, 0xd0, 0x5d,
+	0x7e, 0x16, 0xf3, 0x3b, 0x18, 0x9e, 0xe7, 0x29, 0x76, 0x12, 0xf3, 0xa9, 0x0c, 0x22, 0x5e, 0x27,
+	0xb4, 0x86, 0x59, 0x6e, 0xed, 0x47, 0x3a, 0xe6, 0xaf, 0x35, 0xca, 0xf4, 0xa3, 0xe5, 0xa7, 0xf9,
+	0x2a, 0xd2, 0x96, 0x53, 0x91, 0x85, 0xd3, 0xfc, 0x83, 0xb8, 0x0a, 0x4d, 0x4e, 0xf2, 0x99, 0xed,
+	0xbd, 0xb6, 0x02, 0xcb, 0xb7, 0xad, 0xc0, 0xca, 0xad, 0x2b, 0xb0, 0x1a, 0x5f, 0x81, 0x3f, 0x15,
+	0x57, 0x9d, 0xee, 0x94, 0x05, 0x40, 0x7f, 0x86, 0x67, 0x3d, 0x6a, 0xd1, 0xf0, 0xad, 0xea, 0xf3,
+	0xde, 0x48, 0xff, 0x6b, 0x19, 0x0e, 0x16, 0x92, 0xc9, 0xe7, 0xfd, 0x0a, 0xb6, 0x2e, 0xad, 0x80,
+	0xb0, 0x23, 0xc4, 0xf2, 0x55, 0x2d, 0x93, 0xef, 0xa5, 0x4c, 0xd1, 0x9f, 0xd5, 0xfc, 0xb0, 0x3e,
+	0x0a, 0xa8, 0x3f, 0x33, 0xad, 0x77, 0x0a, 0x9a, 0x8e, 0xa0, 0x78, 0x56, 0x7b, 0x27, 0xa1, 0x65,
+	0xd8, 0x51, 0xac, 0xae, 0xa7, 0x11, 0x2f, 0xcb, 0x5b, 0x16, 0x4e, 0xdc, 0xf1, 0x42, 0x6a, 0x85,
+	0xf7, 0x05, 0xfe, 0x9d, 0x7e, 0x04, 0x48, 0x3c, 0x66, 0xf8, 0x77, 0x61, 0xfd, 0x2d, 0x92, 0x19,
+	0x8d, 0x3b, 0x2d, 0x5e, 0x52, 0x0b, 0x64, 0x46, 0x35, 0x9f, 0x25, 0x30, 0xe6, 0x72, 0x26, 0x04,
+	0x6a, 0x1e, 0x3f, 0x83, 0x6d, 0xc9, 0x18, 0x73, 0x58, 0x5c, 0xc8, 0x6c, 0x72, 0x52, 0xcd, 0x5f,
+	0x89, 0x4e, 0xba, 0x9b, 0x0d, 0xd1, 0x31, 0x6f, 0x8f, 0xe0, 0x8e, 0x3c, 0xfe, 0xcd, 0xa1, 0x78,
+	0x6b, 0x33, 0x7d, 0x42, 0x7d, 0x87, 0xa8, 0xbb, 0x99, 0x1d, 0xd1, 0xdd, 0xca, 0x57, 0x3a, 0x2c,
+	0x74, 0xe8, 0x5b, 0x28, 0x25, 0xcd, 0xd8, 0x09, 0xed, 0x4d, 0xc3, 0x4b, 0x9a, 0xdd, 0x98, 0x5d,
+	0x5f, 0x2a, 0x8d, 0xd7, 0x70, 0x3f, 0xda, 0xf2, 0xda, 0x90, 0x35, 0x6e, 0xfc, 0xb3, 0xe0, 0x2f,
+	0x0c, 0xa1, 0xbf, 0x86, 0x1c, 0x37, 0x6f, 0x58, 0xd4, 0x62, 0x61, 0x3b, 0x1c, 0x59, 0x41, 0xa0,
+	0x12, 0xa4, 0x80, 0xd7, 0xf8, 0xb8, 0x6d, 0xb3, 0x90, 0x77, 0x5c, 0xf1, 0x01, 0x4c, 0xa5, 0x49,
+	0x01, 0x83, 0x12, 0xb5, 0x6d, 0x84, 0x60, 0xc5, 0xb5, 0xc6, 0x44, 0x66, 0x0a, 0xff, 0x9b, 0xbd,
+	0xc9, 0xdb, 0x24, 0x18, 0xfa, 0xce, 0x84, 0xbf, 0x22, 0x8a, 0x3c, 0xd1, 0x45, 0xc6, 0x9f, 0xc3,
+	0x83, 0x9b, 0x9e, 0x46, 0xc6, 0xf0, 0x6f, 0xa0, 0x60, 0x71, 0xb9, 0xc9, 0x3f, 0x77, 0xb2, 0xf8,
+	0x65, 0xe9, 0xbf, 0xa3, 0xa5, 0x7f, 0xf8, 0x00, 0x78, 0xdd, 0xd2, 0x28, 0x8c, 0xff, 0xcc, 0xc0,
+	0xe6, 0x19, 0xa1, 0xfc, 0x3b, 0xa4, 0x5a, 0x9d, 0xdf, 0x26, 0x3e, 0xec, 0xe5, 0xab, 0xf7, 0xe3,
+	0x75, 0x39, 0xf1, 0x09, 0xb1, 0xb5, 0x14, 0x7d, 0xf9, 0x43, 0xbf, 0x85, 0xb5, 0xa9, 0xf8, 0xcc,
+	0x25, 0x0f, 0x8e, 0x87, 0x37, 0x7f, 0x06, 0x53, 0xd6, 0xca, 0x02, 0xd5, 0x20, 0xef, 0x89, 0x0f,
+	0x1c, 0x9c, 0x60, 0x79, 0xd1, 0xe4, 0x89, 0x2f, 0x20, 0xad, 0x25, 0xac, 0xdb, 0xa0, 0x36, 0x6c,
+	0x78, 0xee, 0x54, 0xbb, 0x0b, 0xe7, 0x4b, 0xba, 0xc8, 0x8d, 0xf8, 0x95, 0x79, 0x6b, 0x09, 0x27,
+	0x0c, 0x11, 0x86, 0x02, 0xa1, 0x6f, 0xa3, 0x8b, 0x59, 0x9e, 0x61, 0xf9, 0xea, 0xaf, 0x3f, 0xfd,
+	0xda, 0xb8, 0xb5, 0x84, 0xe3, 0x14, 0xe8, 0x4f, 0xf8, 0x5d, 0x95, 0x54, 0xf3, 0x4c, 0xcc, 0x57,
+	0x0f, 0xe6, 0x08, 0xa3, 0xcb, 0xb3, 0xd6, 0x12, 0xd6, 0x0c, 0x50, 0x1d, 0xc0, 0xe3, 0x9e, 0xf3,
+	0x27, 0x5b, 0xe3, 0xe6, 0x8f, 0xe6, 0xcc, 0x13, 0xf7, 0x50, 0x8c, 0x23, 0xb2, 0x42, 0xe7, 0xb0,
+	0xc6, 0x4a, 0x37, 0x23, 0xc8, 0x72, 0x82, 0x17, 0x9f, 0x71, 0xea, 0x86, 0x5b, 0x26, 0x29, 0xd0,
+	0x31, 0xa8, 0xb2, 0xcd, 0x73, 0x39, 0x5f, 0xbd, 0x17, 0x67, 0x8b, 0xdf, 0xfa, 0x30, 0x4b, 0x09,
+	0x47, 0xaf, 0x60, 0xdd, 0x13, 0x41, 0xcd, 0x2b, 0x32, 0x4f, 0xe9, 0x7c, 0xf5, 0xcb, 0xb9, 0xa7,
+	0x59, 0x74, 0x08, 0xb4, 0x96, 0x70, 0xcc, 0x18, 0xd5, 0x00, 0xbc, 0xf0, 0xc4, 0xe4, 0x9d, 0xdf,
+	0xfc, 0x96, 0x8f, 0xe6, 0x9d, 0xd1, 0x8c, 0x50, 0x1f, 0x36, 0x3d, 0x77, 0xaa, 0x27, 0x18, 0xef,
+	0x04, 0xf3, 0xd5, 0xa7, 0x0b, 0x5d, 0x5a, 0x50, 0x57, 0x5a, 0x4b, 0x38, 0x49, 0x51, 0xcf, 0xc1,
+	0x9a, 0x2f, 0xb4, 0xc6, 0x1f, 0x80, 0xdf, 0xaf, 0xca, 0x5c, 0x93, 0xb9, 0xfb, 0x5d, 0x78, 0x7e,
+	0x8a, 0x8f, 0x12, 0x46, 0x7c, 0xb2, 0x18, 0xb8, 0xdc, 0xe3, 0xc8, 0xf0, 0x8c, 0x6d, 0x42, 0x8e,
+	0xf8, 0xbe, 0x38, 0x4f, 0xe5, 0xf7, 0xc9, 0x27, 0xb7, 0x99, 0xf3, 0x76, 0x5f, 0xc0, 0x71, 0x64,
+	0x89, 0x7e, 0xa7, 0xe5, 0xbb, 0x48, 0xb9, 0x07, 0x37, 0xe5, 0xbb, 0x20, 0x8a, 0x25, 0xfc, 0xef,
+	0xa2, 0x84, 0x5f, 0xb9, 0x21, 0x1e, 0x13, 0xdf, 0xbd, 0xf5, 0x8c, 0x7f, 0x05, 0xeb, 0x13, 0x91,
+	0xcd, 0xd4, 0x25, 0x7e, 0x20, 0x53, 0xec, 0xcb, 0x5b, 0x53, 0x5e, 0xe3, 0x89, 0x19, 0xa3, 0xef,
+	0xe7, 0x72, 0x5f, 0x24, 0xd8, 0x93, 0x8f, 0xe4, 0xbe, 0x46, 0x98, 0xac, 0x01, 0x97, 0xb0, 0x15,
+	0x4b, 0x60, 0x2d, 0xef, 0xaa, 0x9f, 0x5e, 0x07, 0xb4, 0x09, 0xe6, 0xe9, 0x50, 0x33, 0x56, 0x13,
+	0x44, 0x4e, 0xfe, 0xea, 0x96, 0x9a, 0xa0, 0xb1, 0xe9, 0xb5, 0xe1, 0x15, 0x7f, 0xfa, 0x0b, 0xcf,
+	0x55, 0xeb, 0x24, 0x13, 0xf2, 0x8b, 0x5b, 0xea, 0x43, 0xec, 0xb9, 0x35, 0x53, 0x34, 0xe0, 0x17,
+	0xcc, 0x21, 0x93, 0xc8, 0xcd, 0xca, 0x67, 0xb7, 0xe7, 0xbc, 0x3a, 0x47, 0x3c, 0xe8, 0x37, 0x51,
+	0xb5, 0xc8, 0x2f, 0x2a, 0xee, 0x89, 0x6e, 0x54, 0x2f, 0x17, 0xe7, 0x89, 0x72, 0xb1, 0x3e, 0xf7,
+	0x5a, 0x72, 0x4b, 0x9b, 0x37, 0x57, 0x2f, 0xea, 0xb1, 0x7a, 0x51, 0x58, 0x18, 0xb8, 0xa3, 0x05,
+	0xee, 0xe8, 0x05, 0x63, 0x30, 0x5f, 0x30, 0x36, 0x38, 0xd1, 0x57, 0x9f, 0x50, 0x30, 0x42, 0xc6,
+	0x24, 0x87, 0x51, 0x81, 0x8c, 0xc8, 0x73, 0xb4, 0x03, 0xc5, 0x5e, 0xbf, 0xd6, 0x1f, 0xf4, 0x62,
+	0x3f, 0x6f, 0xc8, 0x40, 0xba, 0xfb, 0xaa, 0x98, 0xe2, 0x3f, 0x58, 0xc2, 0xb8, 0x8b, 0x8b, 0x69,
+	0xe3, 0x1f, 0x53, 0x90, 0xd7, 0x92, 0x9b, 0x19, 0xe2, 0x66, 0xad, 0xd7, 0xed, 0xc4, 0x0c, 0x37,
+	0x21, 0x3f, 0xe8, 0xf4, 0x06, 0x17, 0x17, 0x5d, 0xdc, 0xe7, 0xbf, 0x8d, 0xd8, 0x85, 0xad, 0x76,
+	0xe7, 0x4d, 0xed, 0xbc, 0xdd, 0x30, 0x1b, 0xcd, 0x37, 0xed, 0x93, 0xa6, 0xd9, 0x6e, 0x14, 0xd3,
+	0xba, 0x98, 0x41, 0xcd, 0xfe, 0x4f, 0x17, 0xcd, 0xe2, 0x32, 0xca, 0xc3, 0x5a, 0xbf, 0xfd, 0xba,
+	0xd9, 0x1d, 0xf4, 0x8b, 0x2b, 0x6c, 0x06, 0x85, 0xc1, 0xcd, 0xef, 0x05, 0x64, 0x95, 0xbd, 0x44,
+	0xb5, 0x3b, 0xfd, 0x26, 0xee, 0xd4, 0xce, 0x4d, 0xe1, 0x5b, 0x46, 0xc8, 0xf4, 0x49, 0x8a, 0x6b,
+	0x75, 0x80, 0xac, 0x2f, 0x57, 0xc0, 0x78, 0x03, 0x9b, 0xbd, 0x44, 0x03, 0x92, 0xfc, 0x89, 0x57,
+	0xea, 0x93, 0x7f, 0xe2, 0xa5, 0x55, 0xdb, 0xff, 0x4d, 0x41, 0xb1, 0xf7, 0x39, 0xd5, 0xb6, 0xf7,
+	0xff, 0xab, 0xb6, 0xbd, 0x4f, 0xab, 0xb6, 0xbf, 0x64, 0x7b, 0x0f, 0x7f, 0xc9, 0xee, 0x1a, 0x0e,
+	0xec, 0xf6, 0x1c, 0xf7, 0x7a, 0x44, 0x92, 0xfd, 0xdd, 0x3e, 0x64, 0xa9, 0xe5, 0x5f, 0x13, 0x1a,
+	0x7e, 0x39, 0x0a, 0xc7, 0xe8, 0x30, 0x5c, 0x40, 0xd9, 0xbe, 0xed, 0x2f, 0x3c, 0x50, 0x38, 0x02,
+	0x87, 0x6b, 0xfd, 0x3d, 0xec, 0x25, 0xa7, 0x92, 0x0b, 0xfe, 0x6d, 0xb4, 0xd3, 0x72, 0x1b, 0x0f,
+	0x6e, 0x39, 0xa1, 0x70, 0x14, 0x16, 0xa1, 0xf7, 0xbd, 0x3f, 0x96, 0xf7, 0xbd, 0x8f, 0x7a, 0xdf,
+	0xfb, 0x3c, 0xef, 0x7b, 0x37, 0x7a, 0x5f, 0xfd, 0xe7, 0x14, 0xe4, 0x9a, 0x0a, 0x88, 0x30, 0xe4,
+	0xcf, 0x08, 0x6d, 0xce, 0x04, 0x1c, 0xe9, 0x75, 0x66, 0xe1, 0x0e, 0xed, 0x7f, 0x71, 0x0b, 0x42,
+	0xba, 0x86, 0x21, 0xdf, 0xbb, 0x95, 0xb3, 0xf7, 0x51, 0xce, 0xa4, 0xff, 0x75, 0x0c, 0xf7, 0x3d,
+	0xff, 0xba, 0xec, 0x4d, 0x88, 0x3b, 0xf4, 0x7c, 0xbb, 0x2c, 0x7e, 0xc2, 0x19, 0xd9, 0xfd, 0x59,
+	0xe5, 0xda, 0xa1, 0x6f, 0xa7, 0x97, 0xe5, 0xa1, 0x37, 0x7e, 0xae, 0x50, 0xcf, 0x05, 0xea, 0x6b,
+	0xf9, 0x43, 0xcf, 0xf7, 0x47, 0xcf, 0xaf, 0xbd, 0xe8, 0x97, 0xa1, 0x97, 0x19, 0x2e, 0xff, 0xe6,
+	0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x1c, 0x44, 0x89, 0x74, 0x3b, 0x2a, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voip_system_profile/voip_system_profile.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voip_system_profile/voip_system_profile.pb.go
new file mode 100644
index 0000000..b0aeb8e
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voip_system_profile/voip_system_profile.pb.go
@@ -0,0 +1,1694 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/voip_system_profile.proto
+
+package voip_system_profile
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	_ "google.golang.org/genproto/googleapis/api/annotations"
+	math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+type VoipSystemProfileRequest struct {
+	Key                  string             `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	VoipSystemProfile    *VoipSystemProfile `protobuf:"bytes,2,opt,name=voipSystemProfile,proto3" json:"voipSystemProfile,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
+	XXX_unrecognized     []byte             `json:"-"`
+	XXX_sizecache        int32              `json:"-"`
+}
+
+func (m *VoipSystemProfileRequest) Reset()         { *m = VoipSystemProfileRequest{} }
+func (m *VoipSystemProfileRequest) String() string { return proto.CompactTextString(m) }
+func (*VoipSystemProfileRequest) ProtoMessage()    {}
+func (*VoipSystemProfileRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{0}
+}
+
+func (m *VoipSystemProfileRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoipSystemProfileRequest.Unmarshal(m, b)
+}
+func (m *VoipSystemProfileRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoipSystemProfileRequest.Marshal(b, m, deterministic)
+}
+func (m *VoipSystemProfileRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoipSystemProfileRequest.Merge(m, src)
+}
+func (m *VoipSystemProfileRequest) XXX_Size() int {
+	return xxx_messageInfo_VoipSystemProfileRequest.Size(m)
+}
+func (m *VoipSystemProfileRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoipSystemProfileRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoipSystemProfileRequest proto.InternalMessageInfo
+
+func (m *VoipSystemProfileRequest) GetKey() string {
+	if m != nil {
+		return m.Key
+	}
+	return ""
+}
+
+func (m *VoipSystemProfileRequest) GetVoipSystemProfile() *VoipSystemProfile {
+	if m != nil {
+		return m.VoipSystemProfile
+	}
+	return nil
+}
+
+// A system wide profile for voip service that can be stored into voltha KV anytime.
+// Designed based on G988-2017 (also designed flexible to be able to be modified later on)
+type VoipSystemProfile struct {
+	SipConfig            *SipConfig  `protobuf:"bytes,1,opt,name=sipConfig,proto3" json:"sipConfig,omitempty"`
+	VoipConfig           *VoipConfig `protobuf:"bytes,2,opt,name=voipConfig,proto3" json:"voipConfig,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
+	XXX_unrecognized     []byte      `json:"-"`
+	XXX_sizecache        int32       `json:"-"`
+}
+
+func (m *VoipSystemProfile) Reset()         { *m = VoipSystemProfile{} }
+func (m *VoipSystemProfile) String() string { return proto.CompactTextString(m) }
+func (*VoipSystemProfile) ProtoMessage()    {}
+func (*VoipSystemProfile) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{1}
+}
+
+func (m *VoipSystemProfile) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoipSystemProfile.Unmarshal(m, b)
+}
+func (m *VoipSystemProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoipSystemProfile.Marshal(b, m, deterministic)
+}
+func (m *VoipSystemProfile) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoipSystemProfile.Merge(m, src)
+}
+func (m *VoipSystemProfile) XXX_Size() int {
+	return xxx_messageInfo_VoipSystemProfile.Size(m)
+}
+func (m *VoipSystemProfile) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoipSystemProfile.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoipSystemProfile proto.InternalMessageInfo
+
+func (m *VoipSystemProfile) GetSipConfig() *SipConfig {
+	if m != nil {
+		return m.SipConfig
+	}
+	return nil
+}
+
+func (m *VoipSystemProfile) GetVoipConfig() *VoipConfig {
+	if m != nil {
+		return m.VoipConfig
+	}
+	return nil
+}
+
+// Common voip fields are grouped here
+type VoipConfig struct {
+	IpHostConfig         *IpHostConfig        `protobuf:"bytes,1,opt,name=ipHostConfig,proto3" json:"ipHostConfig,omitempty"`
+	TcpUdpConfig         *TcpUdpConfig        `protobuf:"bytes,2,opt,name=tcpUdpConfig,proto3" json:"tcpUdpConfig,omitempty"`
+	VoipVoiceCtp         *VoipVoiceCtp        `protobuf:"bytes,3,opt,name=voipVoiceCtp,proto3" json:"voipVoiceCtp,omitempty"`
+	VoipMediaProfile     *VoipMediaProfile    `protobuf:"bytes,4,opt,name=voipMediaProfile,proto3" json:"voipMediaProfile,omitempty"`
+	VoiceServiceProfile  *VoiceServiceProfile `protobuf:"bytes,5,opt,name=voiceServiceProfile,proto3" json:"voiceServiceProfile,omitempty"`
+	RtpProfile           *RtpProfile          `protobuf:"bytes,6,opt,name=rtpProfile,proto3" json:"rtpProfile,omitempty"`
+	PptpPotsUni          *PptpPotsUni         `protobuf:"bytes,7,opt,name=pptpPotsUni,proto3" json:"pptpPotsUni,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
+	XXX_unrecognized     []byte               `json:"-"`
+	XXX_sizecache        int32                `json:"-"`
+}
+
+func (m *VoipConfig) Reset()         { *m = VoipConfig{} }
+func (m *VoipConfig) String() string { return proto.CompactTextString(m) }
+func (*VoipConfig) ProtoMessage()    {}
+func (*VoipConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{2}
+}
+
+func (m *VoipConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoipConfig.Unmarshal(m, b)
+}
+func (m *VoipConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoipConfig.Marshal(b, m, deterministic)
+}
+func (m *VoipConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoipConfig.Merge(m, src)
+}
+func (m *VoipConfig) XXX_Size() int {
+	return xxx_messageInfo_VoipConfig.Size(m)
+}
+func (m *VoipConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoipConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoipConfig proto.InternalMessageInfo
+
+func (m *VoipConfig) GetIpHostConfig() *IpHostConfig {
+	if m != nil {
+		return m.IpHostConfig
+	}
+	return nil
+}
+
+func (m *VoipConfig) GetTcpUdpConfig() *TcpUdpConfig {
+	if m != nil {
+		return m.TcpUdpConfig
+	}
+	return nil
+}
+
+func (m *VoipConfig) GetVoipVoiceCtp() *VoipVoiceCtp {
+	if m != nil {
+		return m.VoipVoiceCtp
+	}
+	return nil
+}
+
+func (m *VoipConfig) GetVoipMediaProfile() *VoipMediaProfile {
+	if m != nil {
+		return m.VoipMediaProfile
+	}
+	return nil
+}
+
+func (m *VoipConfig) GetVoiceServiceProfile() *VoiceServiceProfile {
+	if m != nil {
+		return m.VoiceServiceProfile
+	}
+	return nil
+}
+
+func (m *VoipConfig) GetRtpProfile() *RtpProfile {
+	if m != nil {
+		return m.RtpProfile
+	}
+	return nil
+}
+
+func (m *VoipConfig) GetPptpPotsUni() *PptpPotsUni {
+	if m != nil {
+		return m.PptpPotsUni
+	}
+	return nil
+}
+
+type IpHostConfig struct {
+	IpOptions            uint32   `protobuf:"varint,1,opt,name=ipOptions,proto3" json:"ipOptions,omitempty"`
+	OnuIdentifier        string   `protobuf:"bytes,2,opt,name=onuIdentifier,proto3" json:"onuIdentifier,omitempty"`
+	IpAddress            string   `protobuf:"bytes,3,opt,name=ipAddress,proto3" json:"ipAddress,omitempty"`
+	Mask                 string   `protobuf:"bytes,4,opt,name=mask,proto3" json:"mask,omitempty"`
+	Gateway              string   `protobuf:"bytes,5,opt,name=gateway,proto3" json:"gateway,omitempty"`
+	PrimaryDns           string   `protobuf:"bytes,6,opt,name=primaryDns,proto3" json:"primaryDns,omitempty"`
+	SecondaryDns         string   `protobuf:"bytes,7,opt,name=secondaryDns,proto3" json:"secondaryDns,omitempty"`
+	RelayAgentOptions    string   `protobuf:"bytes,8,opt,name=relayAgentOptions,proto3" json:"relayAgentOptions,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *IpHostConfig) Reset()         { *m = IpHostConfig{} }
+func (m *IpHostConfig) String() string { return proto.CompactTextString(m) }
+func (*IpHostConfig) ProtoMessage()    {}
+func (*IpHostConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{3}
+}
+
+func (m *IpHostConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_IpHostConfig.Unmarshal(m, b)
+}
+func (m *IpHostConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_IpHostConfig.Marshal(b, m, deterministic)
+}
+func (m *IpHostConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_IpHostConfig.Merge(m, src)
+}
+func (m *IpHostConfig) XXX_Size() int {
+	return xxx_messageInfo_IpHostConfig.Size(m)
+}
+func (m *IpHostConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_IpHostConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_IpHostConfig proto.InternalMessageInfo
+
+func (m *IpHostConfig) GetIpOptions() uint32 {
+	if m != nil {
+		return m.IpOptions
+	}
+	return 0
+}
+
+func (m *IpHostConfig) GetOnuIdentifier() string {
+	if m != nil {
+		return m.OnuIdentifier
+	}
+	return ""
+}
+
+func (m *IpHostConfig) GetIpAddress() string {
+	if m != nil {
+		return m.IpAddress
+	}
+	return ""
+}
+
+func (m *IpHostConfig) GetMask() string {
+	if m != nil {
+		return m.Mask
+	}
+	return ""
+}
+
+func (m *IpHostConfig) GetGateway() string {
+	if m != nil {
+		return m.Gateway
+	}
+	return ""
+}
+
+func (m *IpHostConfig) GetPrimaryDns() string {
+	if m != nil {
+		return m.PrimaryDns
+	}
+	return ""
+}
+
+func (m *IpHostConfig) GetSecondaryDns() string {
+	if m != nil {
+		return m.SecondaryDns
+	}
+	return ""
+}
+
+func (m *IpHostConfig) GetRelayAgentOptions() string {
+	if m != nil {
+		return m.RelayAgentOptions
+	}
+	return ""
+}
+
+type TcpUdpConfig struct {
+	Protocol             uint32   `protobuf:"varint,1,opt,name=protocol,proto3" json:"protocol,omitempty"`
+	TosField             string   `protobuf:"bytes,2,opt,name=tosField,proto3" json:"tosField,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *TcpUdpConfig) Reset()         { *m = TcpUdpConfig{} }
+func (m *TcpUdpConfig) String() string { return proto.CompactTextString(m) }
+func (*TcpUdpConfig) ProtoMessage()    {}
+func (*TcpUdpConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{4}
+}
+
+func (m *TcpUdpConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_TcpUdpConfig.Unmarshal(m, b)
+}
+func (m *TcpUdpConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_TcpUdpConfig.Marshal(b, m, deterministic)
+}
+func (m *TcpUdpConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_TcpUdpConfig.Merge(m, src)
+}
+func (m *TcpUdpConfig) XXX_Size() int {
+	return xxx_messageInfo_TcpUdpConfig.Size(m)
+}
+func (m *TcpUdpConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_TcpUdpConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TcpUdpConfig proto.InternalMessageInfo
+
+func (m *TcpUdpConfig) GetProtocol() uint32 {
+	if m != nil {
+		return m.Protocol
+	}
+	return 0
+}
+
+func (m *TcpUdpConfig) GetTosField() string {
+	if m != nil {
+		return m.TosField
+	}
+	return ""
+}
+
+type VoipVoiceCtp struct {
+	SignallingCode       uint32   `protobuf:"varint,1,opt,name=signallingCode,proto3" json:"signallingCode,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *VoipVoiceCtp) Reset()         { *m = VoipVoiceCtp{} }
+func (m *VoipVoiceCtp) String() string { return proto.CompactTextString(m) }
+func (*VoipVoiceCtp) ProtoMessage()    {}
+func (*VoipVoiceCtp) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{5}
+}
+
+func (m *VoipVoiceCtp) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoipVoiceCtp.Unmarshal(m, b)
+}
+func (m *VoipVoiceCtp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoipVoiceCtp.Marshal(b, m, deterministic)
+}
+func (m *VoipVoiceCtp) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoipVoiceCtp.Merge(m, src)
+}
+func (m *VoipVoiceCtp) XXX_Size() int {
+	return xxx_messageInfo_VoipVoiceCtp.Size(m)
+}
+func (m *VoipVoiceCtp) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoipVoiceCtp.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoipVoiceCtp proto.InternalMessageInfo
+
+func (m *VoipVoiceCtp) GetSignallingCode() uint32 {
+	if m != nil {
+		return m.SignallingCode
+	}
+	return 0
+}
+
+type VoipMediaProfile struct {
+	FaxMode                uint32   `protobuf:"varint,1,opt,name=faxMode,proto3" json:"faxMode,omitempty"`
+	CodecSelection1        uint32   `protobuf:"varint,2,opt,name=codecSelection1,proto3" json:"codecSelection1,omitempty"`
+	PacketPeriodSelection1 uint32   `protobuf:"varint,3,opt,name=packetPeriodSelection1,proto3" json:"packetPeriodSelection1,omitempty"`
+	SilenceSuppression1    uint32   `protobuf:"varint,4,opt,name=silenceSuppression1,proto3" json:"silenceSuppression1,omitempty"`
+	CodecSelection2        uint32   `protobuf:"varint,5,opt,name=codecSelection2,proto3" json:"codecSelection2,omitempty"`
+	PacketPeriodSelection2 uint32   `protobuf:"varint,6,opt,name=packetPeriodSelection2,proto3" json:"packetPeriodSelection2,omitempty"`
+	SilenceSuppression2    uint32   `protobuf:"varint,7,opt,name=silenceSuppression2,proto3" json:"silenceSuppression2,omitempty"`
+	CodecSelection3        uint32   `protobuf:"varint,8,opt,name=codecSelection3,proto3" json:"codecSelection3,omitempty"`
+	PacketPeriodSelection3 uint32   `protobuf:"varint,9,opt,name=packetPeriodSelection3,proto3" json:"packetPeriodSelection3,omitempty"`
+	SilenceSuppression3    uint32   `protobuf:"varint,10,opt,name=silenceSuppression3,proto3" json:"silenceSuppression3,omitempty"`
+	CodecSelection4        uint32   `protobuf:"varint,11,opt,name=codecSelection4,proto3" json:"codecSelection4,omitempty"`
+	PacketPeriodSelection4 uint32   `protobuf:"varint,12,opt,name=packetPeriodSelection4,proto3" json:"packetPeriodSelection4,omitempty"`
+	SilenceSuppression4    uint32   `protobuf:"varint,13,opt,name=silenceSuppression4,proto3" json:"silenceSuppression4,omitempty"`
+	OobDtmf                uint32   `protobuf:"varint,14,opt,name=oobDtmf,proto3" json:"oobDtmf,omitempty"`
+	XXX_NoUnkeyedLiteral   struct{} `json:"-"`
+	XXX_unrecognized       []byte   `json:"-"`
+	XXX_sizecache          int32    `json:"-"`
+}
+
+func (m *VoipMediaProfile) Reset()         { *m = VoipMediaProfile{} }
+func (m *VoipMediaProfile) String() string { return proto.CompactTextString(m) }
+func (*VoipMediaProfile) ProtoMessage()    {}
+func (*VoipMediaProfile) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{6}
+}
+
+func (m *VoipMediaProfile) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoipMediaProfile.Unmarshal(m, b)
+}
+func (m *VoipMediaProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoipMediaProfile.Marshal(b, m, deterministic)
+}
+func (m *VoipMediaProfile) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoipMediaProfile.Merge(m, src)
+}
+func (m *VoipMediaProfile) XXX_Size() int {
+	return xxx_messageInfo_VoipMediaProfile.Size(m)
+}
+func (m *VoipMediaProfile) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoipMediaProfile.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoipMediaProfile proto.InternalMessageInfo
+
+func (m *VoipMediaProfile) GetFaxMode() uint32 {
+	if m != nil {
+		return m.FaxMode
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetCodecSelection1() uint32 {
+	if m != nil {
+		return m.CodecSelection1
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetPacketPeriodSelection1() uint32 {
+	if m != nil {
+		return m.PacketPeriodSelection1
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetSilenceSuppression1() uint32 {
+	if m != nil {
+		return m.SilenceSuppression1
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetCodecSelection2() uint32 {
+	if m != nil {
+		return m.CodecSelection2
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetPacketPeriodSelection2() uint32 {
+	if m != nil {
+		return m.PacketPeriodSelection2
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetSilenceSuppression2() uint32 {
+	if m != nil {
+		return m.SilenceSuppression2
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetCodecSelection3() uint32 {
+	if m != nil {
+		return m.CodecSelection3
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetPacketPeriodSelection3() uint32 {
+	if m != nil {
+		return m.PacketPeriodSelection3
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetSilenceSuppression3() uint32 {
+	if m != nil {
+		return m.SilenceSuppression3
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetCodecSelection4() uint32 {
+	if m != nil {
+		return m.CodecSelection4
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetPacketPeriodSelection4() uint32 {
+	if m != nil {
+		return m.PacketPeriodSelection4
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetSilenceSuppression4() uint32 {
+	if m != nil {
+		return m.SilenceSuppression4
+	}
+	return 0
+}
+
+func (m *VoipMediaProfile) GetOobDtmf() uint32 {
+	if m != nil {
+		return m.OobDtmf
+	}
+	return 0
+}
+
+type VoiceServiceProfile struct {
+	AnnouncementType     uint32   `protobuf:"varint,1,opt,name=announcementType,proto3" json:"announcementType,omitempty"`
+	JitterTarget         uint32   `protobuf:"varint,2,opt,name=jitterTarget,proto3" json:"jitterTarget,omitempty"`
+	JitterBufferMax      uint32   `protobuf:"varint,3,opt,name=jitterBufferMax,proto3" json:"jitterBufferMax,omitempty"`
+	EchoCancelInd        bool     `protobuf:"varint,4,opt,name=echoCancelInd,proto3" json:"echoCancelInd,omitempty"`
+	PstnProtocolVariant  uint32   `protobuf:"varint,5,opt,name=pstnProtocolVariant,proto3" json:"pstnProtocolVariant,omitempty"`
+	DtmfDigitLevels      uint32   `protobuf:"varint,6,opt,name=dtmfDigitLevels,proto3" json:"dtmfDigitLevels,omitempty"`
+	DtmfDigitDuration    uint32   `protobuf:"varint,7,opt,name=dtmfDigitDuration,proto3" json:"dtmfDigitDuration,omitempty"`
+	HookFlashMinimumTime uint32   `protobuf:"varint,8,opt,name=hookFlashMinimumTime,proto3" json:"hookFlashMinimumTime,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *VoiceServiceProfile) Reset()         { *m = VoiceServiceProfile{} }
+func (m *VoiceServiceProfile) String() string { return proto.CompactTextString(m) }
+func (*VoiceServiceProfile) ProtoMessage()    {}
+func (*VoiceServiceProfile) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{7}
+}
+
+func (m *VoiceServiceProfile) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoiceServiceProfile.Unmarshal(m, b)
+}
+func (m *VoiceServiceProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoiceServiceProfile.Marshal(b, m, deterministic)
+}
+func (m *VoiceServiceProfile) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoiceServiceProfile.Merge(m, src)
+}
+func (m *VoiceServiceProfile) XXX_Size() int {
+	return xxx_messageInfo_VoiceServiceProfile.Size(m)
+}
+func (m *VoiceServiceProfile) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoiceServiceProfile.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoiceServiceProfile proto.InternalMessageInfo
+
+func (m *VoiceServiceProfile) GetAnnouncementType() uint32 {
+	if m != nil {
+		return m.AnnouncementType
+	}
+	return 0
+}
+
+func (m *VoiceServiceProfile) GetJitterTarget() uint32 {
+	if m != nil {
+		return m.JitterTarget
+	}
+	return 0
+}
+
+func (m *VoiceServiceProfile) GetJitterBufferMax() uint32 {
+	if m != nil {
+		return m.JitterBufferMax
+	}
+	return 0
+}
+
+func (m *VoiceServiceProfile) GetEchoCancelInd() bool {
+	if m != nil {
+		return m.EchoCancelInd
+	}
+	return false
+}
+
+func (m *VoiceServiceProfile) GetPstnProtocolVariant() uint32 {
+	if m != nil {
+		return m.PstnProtocolVariant
+	}
+	return 0
+}
+
+func (m *VoiceServiceProfile) GetDtmfDigitLevels() uint32 {
+	if m != nil {
+		return m.DtmfDigitLevels
+	}
+	return 0
+}
+
+func (m *VoiceServiceProfile) GetDtmfDigitDuration() uint32 {
+	if m != nil {
+		return m.DtmfDigitDuration
+	}
+	return 0
+}
+
+func (m *VoiceServiceProfile) GetHookFlashMinimumTime() uint32 {
+	if m != nil {
+		return m.HookFlashMinimumTime
+	}
+	return 0
+}
+
+type RtpProfile struct {
+	LocalPortMin         uint32   `protobuf:"varint,1,opt,name=localPortMin,proto3" json:"localPortMin,omitempty"`
+	LocalPortMax         uint32   `protobuf:"varint,2,opt,name=localPortMax,proto3" json:"localPortMax,omitempty"`
+	DscpMark             string   `protobuf:"bytes,3,opt,name=dscpMark,proto3" json:"dscpMark,omitempty"`
+	PiggyBackEvents      uint32   `protobuf:"varint,4,opt,name=piggyBackEvents,proto3" json:"piggyBackEvents,omitempty"`
+	ToneEvents           uint32   `protobuf:"varint,5,opt,name=toneEvents,proto3" json:"toneEvents,omitempty"`
+	DtmfEvents           uint32   `protobuf:"varint,6,opt,name=dtmfEvents,proto3" json:"dtmfEvents,omitempty"`
+	CasEvents            uint32   `protobuf:"varint,7,opt,name=casEvents,proto3" json:"casEvents,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *RtpProfile) Reset()         { *m = RtpProfile{} }
+func (m *RtpProfile) String() string { return proto.CompactTextString(m) }
+func (*RtpProfile) ProtoMessage()    {}
+func (*RtpProfile) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{8}
+}
+
+func (m *RtpProfile) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_RtpProfile.Unmarshal(m, b)
+}
+func (m *RtpProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_RtpProfile.Marshal(b, m, deterministic)
+}
+func (m *RtpProfile) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_RtpProfile.Merge(m, src)
+}
+func (m *RtpProfile) XXX_Size() int {
+	return xxx_messageInfo_RtpProfile.Size(m)
+}
+func (m *RtpProfile) XXX_DiscardUnknown() {
+	xxx_messageInfo_RtpProfile.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RtpProfile proto.InternalMessageInfo
+
+func (m *RtpProfile) GetLocalPortMin() uint32 {
+	if m != nil {
+		return m.LocalPortMin
+	}
+	return 0
+}
+
+func (m *RtpProfile) GetLocalPortMax() uint32 {
+	if m != nil {
+		return m.LocalPortMax
+	}
+	return 0
+}
+
+func (m *RtpProfile) GetDscpMark() string {
+	if m != nil {
+		return m.DscpMark
+	}
+	return ""
+}
+
+func (m *RtpProfile) GetPiggyBackEvents() uint32 {
+	if m != nil {
+		return m.PiggyBackEvents
+	}
+	return 0
+}
+
+func (m *RtpProfile) GetToneEvents() uint32 {
+	if m != nil {
+		return m.ToneEvents
+	}
+	return 0
+}
+
+func (m *RtpProfile) GetDtmfEvents() uint32 {
+	if m != nil {
+		return m.DtmfEvents
+	}
+	return 0
+}
+
+func (m *RtpProfile) GetCasEvents() uint32 {
+	if m != nil {
+		return m.CasEvents
+	}
+	return 0
+}
+
+type PptpPotsUni struct {
+	Arc                  string   `protobuf:"bytes,1,opt,name=arc,proto3" json:"arc,omitempty"`
+	ArcInterval          string   `protobuf:"bytes,2,opt,name=arcInterval,proto3" json:"arcInterval,omitempty"`
+	Impedance            uint32   `protobuf:"varint,3,opt,name=impedance,proto3" json:"impedance,omitempty"`
+	TransmissionPath     uint32   `protobuf:"varint,4,opt,name=transmissionPath,proto3" json:"transmissionPath,omitempty"`
+	RxGain               int32    `protobuf:"zigzag32,5,opt,name=rxGain,proto3" json:"rxGain,omitempty"`
+	TxGain               int32    `protobuf:"zigzag32,6,opt,name=txGain,proto3" json:"txGain,omitempty"`
+	PotsHoldOverTime     uint32   `protobuf:"varint,7,opt,name=potsHoldOverTime,proto3" json:"potsHoldOverTime,omitempty"`
+	NominalFeedVoltage   uint32   `protobuf:"varint,8,opt,name=nominalFeedVoltage,proto3" json:"nominalFeedVoltage,omitempty"`
+	LossOfSoftSwitch     uint32   `protobuf:"varint,9,opt,name=lossOfSoftSwitch,proto3" json:"lossOfSoftSwitch,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *PptpPotsUni) Reset()         { *m = PptpPotsUni{} }
+func (m *PptpPotsUni) String() string { return proto.CompactTextString(m) }
+func (*PptpPotsUni) ProtoMessage()    {}
+func (*PptpPotsUni) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{9}
+}
+
+func (m *PptpPotsUni) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_PptpPotsUni.Unmarshal(m, b)
+}
+func (m *PptpPotsUni) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_PptpPotsUni.Marshal(b, m, deterministic)
+}
+func (m *PptpPotsUni) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PptpPotsUni.Merge(m, src)
+}
+func (m *PptpPotsUni) XXX_Size() int {
+	return xxx_messageInfo_PptpPotsUni.Size(m)
+}
+func (m *PptpPotsUni) XXX_DiscardUnknown() {
+	xxx_messageInfo_PptpPotsUni.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PptpPotsUni proto.InternalMessageInfo
+
+func (m *PptpPotsUni) GetArc() string {
+	if m != nil {
+		return m.Arc
+	}
+	return ""
+}
+
+func (m *PptpPotsUni) GetArcInterval() string {
+	if m != nil {
+		return m.ArcInterval
+	}
+	return ""
+}
+
+func (m *PptpPotsUni) GetImpedance() uint32 {
+	if m != nil {
+		return m.Impedance
+	}
+	return 0
+}
+
+func (m *PptpPotsUni) GetTransmissionPath() uint32 {
+	if m != nil {
+		return m.TransmissionPath
+	}
+	return 0
+}
+
+func (m *PptpPotsUni) GetRxGain() int32 {
+	if m != nil {
+		return m.RxGain
+	}
+	return 0
+}
+
+func (m *PptpPotsUni) GetTxGain() int32 {
+	if m != nil {
+		return m.TxGain
+	}
+	return 0
+}
+
+func (m *PptpPotsUni) GetPotsHoldOverTime() uint32 {
+	if m != nil {
+		return m.PotsHoldOverTime
+	}
+	return 0
+}
+
+func (m *PptpPotsUni) GetNominalFeedVoltage() uint32 {
+	if m != nil {
+		return m.NominalFeedVoltage
+	}
+	return 0
+}
+
+func (m *PptpPotsUni) GetLossOfSoftSwitch() uint32 {
+	if m != nil {
+		return m.LossOfSoftSwitch
+	}
+	return 0
+}
+
+// Sip specific fields are grouped here
+type SipConfig struct {
+	SipUserData                   *SipUserData                   `protobuf:"bytes,1,opt,name=sipUserData,proto3" json:"sipUserData,omitempty"`
+	SipAgentConfig                *SipAgentConfig                `protobuf:"bytes,2,opt,name=sipAgentConfig,proto3" json:"sipAgentConfig,omitempty"`
+	NetworkDialPlan               *NetworkDialPlan               `protobuf:"bytes,3,opt,name=networkDialPlan,proto3" json:"networkDialPlan,omitempty"`
+	VoipFeatureAccessCodes        *VoipFeatureAccessCodes        `protobuf:"bytes,4,opt,name=voipFeatureAccessCodes,proto3" json:"voipFeatureAccessCodes,omitempty"`
+	VoipApplicationServiceProfile *VoipApplicationServiceProfile `protobuf:"bytes,5,opt,name=voipApplicationServiceProfile,proto3" json:"voipApplicationServiceProfile,omitempty"`
+	XXX_NoUnkeyedLiteral          struct{}                       `json:"-"`
+	XXX_unrecognized              []byte                         `json:"-"`
+	XXX_sizecache                 int32                          `json:"-"`
+}
+
+func (m *SipConfig) Reset()         { *m = SipConfig{} }
+func (m *SipConfig) String() string { return proto.CompactTextString(m) }
+func (*SipConfig) ProtoMessage()    {}
+func (*SipConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{10}
+}
+
+func (m *SipConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SipConfig.Unmarshal(m, b)
+}
+func (m *SipConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SipConfig.Marshal(b, m, deterministic)
+}
+func (m *SipConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SipConfig.Merge(m, src)
+}
+func (m *SipConfig) XXX_Size() int {
+	return xxx_messageInfo_SipConfig.Size(m)
+}
+func (m *SipConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_SipConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SipConfig proto.InternalMessageInfo
+
+func (m *SipConfig) GetSipUserData() *SipUserData {
+	if m != nil {
+		return m.SipUserData
+	}
+	return nil
+}
+
+func (m *SipConfig) GetSipAgentConfig() *SipAgentConfig {
+	if m != nil {
+		return m.SipAgentConfig
+	}
+	return nil
+}
+
+func (m *SipConfig) GetNetworkDialPlan() *NetworkDialPlan {
+	if m != nil {
+		return m.NetworkDialPlan
+	}
+	return nil
+}
+
+func (m *SipConfig) GetVoipFeatureAccessCodes() *VoipFeatureAccessCodes {
+	if m != nil {
+		return m.VoipFeatureAccessCodes
+	}
+	return nil
+}
+
+func (m *SipConfig) GetVoipApplicationServiceProfile() *VoipApplicationServiceProfile {
+	if m != nil {
+		return m.VoipApplicationServiceProfile
+	}
+	return nil
+}
+
+type SipUserData struct {
+	UserPartAor                         string               `protobuf:"bytes,1,opt,name=userPartAor,proto3" json:"userPartAor,omitempty"`
+	UsernameAndPassword                 *UsernameAndPassword `protobuf:"bytes,2,opt,name=usernameAndPassword,proto3" json:"usernameAndPassword,omitempty"`
+	VoicemailServerSipUri               string               `protobuf:"bytes,3,opt,name=voicemailServerSipUri,proto3" json:"voicemailServerSipUri,omitempty"`
+	VoicemailSubscriptionExpirationTime int32                `protobuf:"varint,4,opt,name=voicemailSubscriptionExpirationTime,proto3" json:"voicemailSubscriptionExpirationTime,omitempty"`
+	ReleaseTimer                        int32                `protobuf:"varint,5,opt,name=releaseTimer,proto3" json:"releaseTimer,omitempty"`
+	RohTimer                            int32                `protobuf:"varint,6,opt,name=rohTimer,proto3" json:"rohTimer,omitempty"`
+	XXX_NoUnkeyedLiteral                struct{}             `json:"-"`
+	XXX_unrecognized                    []byte               `json:"-"`
+	XXX_sizecache                       int32                `json:"-"`
+}
+
+func (m *SipUserData) Reset()         { *m = SipUserData{} }
+func (m *SipUserData) String() string { return proto.CompactTextString(m) }
+func (*SipUserData) ProtoMessage()    {}
+func (*SipUserData) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{11}
+}
+
+func (m *SipUserData) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SipUserData.Unmarshal(m, b)
+}
+func (m *SipUserData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SipUserData.Marshal(b, m, deterministic)
+}
+func (m *SipUserData) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SipUserData.Merge(m, src)
+}
+func (m *SipUserData) XXX_Size() int {
+	return xxx_messageInfo_SipUserData.Size(m)
+}
+func (m *SipUserData) XXX_DiscardUnknown() {
+	xxx_messageInfo_SipUserData.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SipUserData proto.InternalMessageInfo
+
+func (m *SipUserData) GetUserPartAor() string {
+	if m != nil {
+		return m.UserPartAor
+	}
+	return ""
+}
+
+func (m *SipUserData) GetUsernameAndPassword() *UsernameAndPassword {
+	if m != nil {
+		return m.UsernameAndPassword
+	}
+	return nil
+}
+
+func (m *SipUserData) GetVoicemailServerSipUri() string {
+	if m != nil {
+		return m.VoicemailServerSipUri
+	}
+	return ""
+}
+
+func (m *SipUserData) GetVoicemailSubscriptionExpirationTime() int32 {
+	if m != nil {
+		return m.VoicemailSubscriptionExpirationTime
+	}
+	return 0
+}
+
+func (m *SipUserData) GetReleaseTimer() int32 {
+	if m != nil {
+		return m.ReleaseTimer
+	}
+	return 0
+}
+
+func (m *SipUserData) GetRohTimer() int32 {
+	if m != nil {
+		return m.RohTimer
+	}
+	return 0
+}
+
+type SipAgentConfig struct {
+	OutboundProxyAddress     string            `protobuf:"bytes,1,opt,name=outboundProxyAddress,proto3" json:"outboundProxyAddress,omitempty"`
+	PrimarySipDns            string            `protobuf:"bytes,2,opt,name=primarySipDns,proto3" json:"primarySipDns,omitempty"`
+	SecondarySipDns          string            `protobuf:"bytes,3,opt,name=secondarySipDns,proto3" json:"secondarySipDns,omitempty"`
+	SipRegExpTime            int32             `protobuf:"varint,4,opt,name=sipRegExpTime,proto3" json:"sipRegExpTime,omitempty"`
+	SipReregHeadStartTime    int32             `protobuf:"varint,5,opt,name=sipReregHeadStartTime,proto3" json:"sipReregHeadStartTime,omitempty"`
+	SipRegistrar             string            `protobuf:"bytes,6,opt,name=SipRegistrar,proto3" json:"SipRegistrar,omitempty"`
+	SoftSwitch               string            `protobuf:"bytes,7,opt,name=softSwitch,proto3" json:"softSwitch,omitempty"`
+	SipResponseTable         *SipResponseTable `protobuf:"bytes,8,opt,name=sipResponseTable,proto3" json:"sipResponseTable,omitempty"`
+	SipOptionTransmitControl bool              `protobuf:"varint,9,opt,name=sipOptionTransmitControl,proto3" json:"sipOptionTransmitControl,omitempty"`
+	SipUriFormat             string            `protobuf:"bytes,10,opt,name=sipUriFormat,proto3" json:"sipUriFormat,omitempty"`
+	RedundantSipAgentPointer string            `protobuf:"bytes,11,opt,name=redundantSipAgentPointer,proto3" json:"redundantSipAgentPointer,omitempty"`
+	XXX_NoUnkeyedLiteral     struct{}          `json:"-"`
+	XXX_unrecognized         []byte            `json:"-"`
+	XXX_sizecache            int32             `json:"-"`
+}
+
+func (m *SipAgentConfig) Reset()         { *m = SipAgentConfig{} }
+func (m *SipAgentConfig) String() string { return proto.CompactTextString(m) }
+func (*SipAgentConfig) ProtoMessage()    {}
+func (*SipAgentConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{12}
+}
+
+func (m *SipAgentConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SipAgentConfig.Unmarshal(m, b)
+}
+func (m *SipAgentConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SipAgentConfig.Marshal(b, m, deterministic)
+}
+func (m *SipAgentConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SipAgentConfig.Merge(m, src)
+}
+func (m *SipAgentConfig) XXX_Size() int {
+	return xxx_messageInfo_SipAgentConfig.Size(m)
+}
+func (m *SipAgentConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_SipAgentConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SipAgentConfig proto.InternalMessageInfo
+
+func (m *SipAgentConfig) GetOutboundProxyAddress() string {
+	if m != nil {
+		return m.OutboundProxyAddress
+	}
+	return ""
+}
+
+func (m *SipAgentConfig) GetPrimarySipDns() string {
+	if m != nil {
+		return m.PrimarySipDns
+	}
+	return ""
+}
+
+func (m *SipAgentConfig) GetSecondarySipDns() string {
+	if m != nil {
+		return m.SecondarySipDns
+	}
+	return ""
+}
+
+func (m *SipAgentConfig) GetSipRegExpTime() int32 {
+	if m != nil {
+		return m.SipRegExpTime
+	}
+	return 0
+}
+
+func (m *SipAgentConfig) GetSipReregHeadStartTime() int32 {
+	if m != nil {
+		return m.SipReregHeadStartTime
+	}
+	return 0
+}
+
+func (m *SipAgentConfig) GetSipRegistrar() string {
+	if m != nil {
+		return m.SipRegistrar
+	}
+	return ""
+}
+
+func (m *SipAgentConfig) GetSoftSwitch() string {
+	if m != nil {
+		return m.SoftSwitch
+	}
+	return ""
+}
+
+func (m *SipAgentConfig) GetSipResponseTable() *SipResponseTable {
+	if m != nil {
+		return m.SipResponseTable
+	}
+	return nil
+}
+
+func (m *SipAgentConfig) GetSipOptionTransmitControl() bool {
+	if m != nil {
+		return m.SipOptionTransmitControl
+	}
+	return false
+}
+
+func (m *SipAgentConfig) GetSipUriFormat() string {
+	if m != nil {
+		return m.SipUriFormat
+	}
+	return ""
+}
+
+func (m *SipAgentConfig) GetRedundantSipAgentPointer() string {
+	if m != nil {
+		return m.RedundantSipAgentPointer
+	}
+	return ""
+}
+
+type NetworkDialPlan struct {
+	CriticalDialTimeout  uint32         `protobuf:"varint,1,opt,name=criticalDialTimeout,proto3" json:"criticalDialTimeout,omitempty"`
+	PartialDialTimeout   uint32         `protobuf:"varint,2,opt,name=partialDialTimeout,proto3" json:"partialDialTimeout,omitempty"`
+	DialPlanFormat       uint32         `protobuf:"varint,3,opt,name=dialPlanFormat,proto3" json:"dialPlanFormat,omitempty"`
+	DialPlanTable        *DialPlanTable `protobuf:"bytes,4,opt,name=dialPlanTable,proto3" json:"dialPlanTable,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
+	XXX_unrecognized     []byte         `json:"-"`
+	XXX_sizecache        int32          `json:"-"`
+}
+
+func (m *NetworkDialPlan) Reset()         { *m = NetworkDialPlan{} }
+func (m *NetworkDialPlan) String() string { return proto.CompactTextString(m) }
+func (*NetworkDialPlan) ProtoMessage()    {}
+func (*NetworkDialPlan) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{13}
+}
+
+func (m *NetworkDialPlan) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_NetworkDialPlan.Unmarshal(m, b)
+}
+func (m *NetworkDialPlan) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_NetworkDialPlan.Marshal(b, m, deterministic)
+}
+func (m *NetworkDialPlan) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_NetworkDialPlan.Merge(m, src)
+}
+func (m *NetworkDialPlan) XXX_Size() int {
+	return xxx_messageInfo_NetworkDialPlan.Size(m)
+}
+func (m *NetworkDialPlan) XXX_DiscardUnknown() {
+	xxx_messageInfo_NetworkDialPlan.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_NetworkDialPlan proto.InternalMessageInfo
+
+func (m *NetworkDialPlan) GetCriticalDialTimeout() uint32 {
+	if m != nil {
+		return m.CriticalDialTimeout
+	}
+	return 0
+}
+
+func (m *NetworkDialPlan) GetPartialDialTimeout() uint32 {
+	if m != nil {
+		return m.PartialDialTimeout
+	}
+	return 0
+}
+
+func (m *NetworkDialPlan) GetDialPlanFormat() uint32 {
+	if m != nil {
+		return m.DialPlanFormat
+	}
+	return 0
+}
+
+func (m *NetworkDialPlan) GetDialPlanTable() *DialPlanTable {
+	if m != nil {
+		return m.DialPlanTable
+	}
+	return nil
+}
+
+type UsernameAndPassword struct {
+	ValidationScheme     int32    `protobuf:"varint,1,opt,name=validationScheme,proto3" json:"validationScheme,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *UsernameAndPassword) Reset()         { *m = UsernameAndPassword{} }
+func (m *UsernameAndPassword) String() string { return proto.CompactTextString(m) }
+func (*UsernameAndPassword) ProtoMessage()    {}
+func (*UsernameAndPassword) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{14}
+}
+
+func (m *UsernameAndPassword) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_UsernameAndPassword.Unmarshal(m, b)
+}
+func (m *UsernameAndPassword) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_UsernameAndPassword.Marshal(b, m, deterministic)
+}
+func (m *UsernameAndPassword) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_UsernameAndPassword.Merge(m, src)
+}
+func (m *UsernameAndPassword) XXX_Size() int {
+	return xxx_messageInfo_UsernameAndPassword.Size(m)
+}
+func (m *UsernameAndPassword) XXX_DiscardUnknown() {
+	xxx_messageInfo_UsernameAndPassword.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_UsernameAndPassword proto.InternalMessageInfo
+
+func (m *UsernameAndPassword) GetValidationScheme() int32 {
+	if m != nil {
+		return m.ValidationScheme
+	}
+	return 0
+}
+
+type SipResponseTable struct {
+	SipResponseCode      string   `protobuf:"bytes,1,opt,name=sipResponseCode,proto3" json:"sipResponseCode,omitempty"`
+	Tone                 string   `protobuf:"bytes,2,opt,name=tone,proto3" json:"tone,omitempty"`
+	TextMessage          string   `protobuf:"bytes,3,opt,name=textMessage,proto3" json:"textMessage,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *SipResponseTable) Reset()         { *m = SipResponseTable{} }
+func (m *SipResponseTable) String() string { return proto.CompactTextString(m) }
+func (*SipResponseTable) ProtoMessage()    {}
+func (*SipResponseTable) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{15}
+}
+
+func (m *SipResponseTable) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_SipResponseTable.Unmarshal(m, b)
+}
+func (m *SipResponseTable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_SipResponseTable.Marshal(b, m, deterministic)
+}
+func (m *SipResponseTable) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_SipResponseTable.Merge(m, src)
+}
+func (m *SipResponseTable) XXX_Size() int {
+	return xxx_messageInfo_SipResponseTable.Size(m)
+}
+func (m *SipResponseTable) XXX_DiscardUnknown() {
+	xxx_messageInfo_SipResponseTable.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_SipResponseTable proto.InternalMessageInfo
+
+func (m *SipResponseTable) GetSipResponseCode() string {
+	if m != nil {
+		return m.SipResponseCode
+	}
+	return ""
+}
+
+func (m *SipResponseTable) GetTone() string {
+	if m != nil {
+		return m.Tone
+	}
+	return ""
+}
+
+func (m *SipResponseTable) GetTextMessage() string {
+	if m != nil {
+		return m.TextMessage
+	}
+	return ""
+}
+
+type DialPlanTable struct {
+	DialPlanId           uint32   `protobuf:"varint,1,opt,name=dialPlanId,proto3" json:"dialPlanId,omitempty"`
+	Action               uint32   `protobuf:"varint,2,opt,name=action,proto3" json:"action,omitempty"`
+	DialPlanToken        string   `protobuf:"bytes,3,opt,name=dialPlanToken,proto3" json:"dialPlanToken,omitempty"`
+	DialPlanTableMaxSize uint32   `protobuf:"varint,4,opt,name=dialPlanTableMaxSize,proto3" json:"dialPlanTableMaxSize,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *DialPlanTable) Reset()         { *m = DialPlanTable{} }
+func (m *DialPlanTable) String() string { return proto.CompactTextString(m) }
+func (*DialPlanTable) ProtoMessage()    {}
+func (*DialPlanTable) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{16}
+}
+
+func (m *DialPlanTable) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_DialPlanTable.Unmarshal(m, b)
+}
+func (m *DialPlanTable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_DialPlanTable.Marshal(b, m, deterministic)
+}
+func (m *DialPlanTable) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_DialPlanTable.Merge(m, src)
+}
+func (m *DialPlanTable) XXX_Size() int {
+	return xxx_messageInfo_DialPlanTable.Size(m)
+}
+func (m *DialPlanTable) XXX_DiscardUnknown() {
+	xxx_messageInfo_DialPlanTable.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DialPlanTable proto.InternalMessageInfo
+
+func (m *DialPlanTable) GetDialPlanId() uint32 {
+	if m != nil {
+		return m.DialPlanId
+	}
+	return 0
+}
+
+func (m *DialPlanTable) GetAction() uint32 {
+	if m != nil {
+		return m.Action
+	}
+	return 0
+}
+
+func (m *DialPlanTable) GetDialPlanToken() string {
+	if m != nil {
+		return m.DialPlanToken
+	}
+	return ""
+}
+
+func (m *DialPlanTable) GetDialPlanTableMaxSize() uint32 {
+	if m != nil {
+		return m.DialPlanTableMaxSize
+	}
+	return 0
+}
+
+type VoipFeatureAccessCodes struct {
+	CancelCallWaiting        string   `protobuf:"bytes,1,opt,name=cancelCallWaiting,proto3" json:"cancelCallWaiting,omitempty"`
+	CallHold                 string   `protobuf:"bytes,2,opt,name=callHold,proto3" json:"callHold,omitempty"`
+	CallPark                 string   `protobuf:"bytes,3,opt,name=callPark,proto3" json:"callPark,omitempty"`
+	CallerIdActivate         string   `protobuf:"bytes,4,opt,name=callerIdActivate,proto3" json:"callerIdActivate,omitempty"`
+	CallerIdDeactivate       string   `protobuf:"bytes,5,opt,name=callerIdDeactivate,proto3" json:"callerIdDeactivate,omitempty"`
+	DoNotDisturbActivation   string   `protobuf:"bytes,6,opt,name=doNotDisturbActivation,proto3" json:"doNotDisturbActivation,omitempty"`
+	DoNotDisturbDeactivation string   `protobuf:"bytes,7,opt,name=doNotDisturbDeactivation,proto3" json:"doNotDisturbDeactivation,omitempty"`
+	DoNotDisturbPinChange    string   `protobuf:"bytes,8,opt,name=doNotDisturbPinChange,proto3" json:"doNotDisturbPinChange,omitempty"`
+	EmergencyServiceNumber   string   `protobuf:"bytes,9,opt,name=emergencyServiceNumber,proto3" json:"emergencyServiceNumber,omitempty"`
+	IntercomService          string   `protobuf:"bytes,10,opt,name=intercomService,proto3" json:"intercomService,omitempty"`
+	UnattendedCallTransfer   string   `protobuf:"bytes,11,opt,name=unattendedCallTransfer,proto3" json:"unattendedCallTransfer,omitempty"`
+	AttendedCallTransfer     string   `protobuf:"bytes,12,opt,name=attendedCallTransfer,proto3" json:"attendedCallTransfer,omitempty"`
+	XXX_NoUnkeyedLiteral     struct{} `json:"-"`
+	XXX_unrecognized         []byte   `json:"-"`
+	XXX_sizecache            int32    `json:"-"`
+}
+
+func (m *VoipFeatureAccessCodes) Reset()         { *m = VoipFeatureAccessCodes{} }
+func (m *VoipFeatureAccessCodes) String() string { return proto.CompactTextString(m) }
+func (*VoipFeatureAccessCodes) ProtoMessage()    {}
+func (*VoipFeatureAccessCodes) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{17}
+}
+
+func (m *VoipFeatureAccessCodes) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoipFeatureAccessCodes.Unmarshal(m, b)
+}
+func (m *VoipFeatureAccessCodes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoipFeatureAccessCodes.Marshal(b, m, deterministic)
+}
+func (m *VoipFeatureAccessCodes) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoipFeatureAccessCodes.Merge(m, src)
+}
+func (m *VoipFeatureAccessCodes) XXX_Size() int {
+	return xxx_messageInfo_VoipFeatureAccessCodes.Size(m)
+}
+func (m *VoipFeatureAccessCodes) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoipFeatureAccessCodes.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoipFeatureAccessCodes proto.InternalMessageInfo
+
+func (m *VoipFeatureAccessCodes) GetCancelCallWaiting() string {
+	if m != nil {
+		return m.CancelCallWaiting
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetCallHold() string {
+	if m != nil {
+		return m.CallHold
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetCallPark() string {
+	if m != nil {
+		return m.CallPark
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetCallerIdActivate() string {
+	if m != nil {
+		return m.CallerIdActivate
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetCallerIdDeactivate() string {
+	if m != nil {
+		return m.CallerIdDeactivate
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetDoNotDisturbActivation() string {
+	if m != nil {
+		return m.DoNotDisturbActivation
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetDoNotDisturbDeactivation() string {
+	if m != nil {
+		return m.DoNotDisturbDeactivation
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetDoNotDisturbPinChange() string {
+	if m != nil {
+		return m.DoNotDisturbPinChange
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetEmergencyServiceNumber() string {
+	if m != nil {
+		return m.EmergencyServiceNumber
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetIntercomService() string {
+	if m != nil {
+		return m.IntercomService
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetUnattendedCallTransfer() string {
+	if m != nil {
+		return m.UnattendedCallTransfer
+	}
+	return ""
+}
+
+func (m *VoipFeatureAccessCodes) GetAttendedCallTransfer() string {
+	if m != nil {
+		return m.AttendedCallTransfer
+	}
+	return ""
+}
+
+type VoipApplicationServiceProfile struct {
+	CidFeatures                    uint32   `protobuf:"varint,1,opt,name=cidFeatures,proto3" json:"cidFeatures,omitempty"`
+	CallWaitingFeatures            uint32   `protobuf:"varint,2,opt,name=callWaitingFeatures,proto3" json:"callWaitingFeatures,omitempty"`
+	CallProgressOrTransferFeatures uint32   `protobuf:"varint,3,opt,name=callProgressOrTransferFeatures,proto3" json:"callProgressOrTransferFeatures,omitempty"`
+	CallPresentationFeatures       uint32   `protobuf:"varint,4,opt,name=callPresentationFeatures,proto3" json:"callPresentationFeatures,omitempty"`
+	DirectConnectFeature           uint32   `protobuf:"varint,5,opt,name=directConnectFeature,proto3" json:"directConnectFeature,omitempty"`
+	DirectConnectUriPointer        string   `protobuf:"bytes,6,opt,name=directConnectUriPointer,proto3" json:"directConnectUriPointer,omitempty"`
+	BridgedLineAgentUriPointer     string   `protobuf:"bytes,7,opt,name=bridgedLineAgentUriPointer,proto3" json:"bridgedLineAgentUriPointer,omitempty"`
+	ConferenceFactoryUriPointer    string   `protobuf:"bytes,8,opt,name=conferenceFactoryUriPointer,proto3" json:"conferenceFactoryUriPointer,omitempty"`
+	DialToneDelayTimer             uint32   `protobuf:"varint,9,opt,name=dialToneDelayTimer,proto3" json:"dialToneDelayTimer,omitempty"`
+	XXX_NoUnkeyedLiteral           struct{} `json:"-"`
+	XXX_unrecognized               []byte   `json:"-"`
+	XXX_sizecache                  int32    `json:"-"`
+}
+
+func (m *VoipApplicationServiceProfile) Reset()         { *m = VoipApplicationServiceProfile{} }
+func (m *VoipApplicationServiceProfile) String() string { return proto.CompactTextString(m) }
+func (*VoipApplicationServiceProfile) ProtoMessage()    {}
+func (*VoipApplicationServiceProfile) Descriptor() ([]byte, []int) {
+	return fileDescriptor_02a00a136081bca5, []int{18}
+}
+
+func (m *VoipApplicationServiceProfile) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoipApplicationServiceProfile.Unmarshal(m, b)
+}
+func (m *VoipApplicationServiceProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoipApplicationServiceProfile.Marshal(b, m, deterministic)
+}
+func (m *VoipApplicationServiceProfile) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoipApplicationServiceProfile.Merge(m, src)
+}
+func (m *VoipApplicationServiceProfile) XXX_Size() int {
+	return xxx_messageInfo_VoipApplicationServiceProfile.Size(m)
+}
+func (m *VoipApplicationServiceProfile) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoipApplicationServiceProfile.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoipApplicationServiceProfile proto.InternalMessageInfo
+
+func (m *VoipApplicationServiceProfile) GetCidFeatures() uint32 {
+	if m != nil {
+		return m.CidFeatures
+	}
+	return 0
+}
+
+func (m *VoipApplicationServiceProfile) GetCallWaitingFeatures() uint32 {
+	if m != nil {
+		return m.CallWaitingFeatures
+	}
+	return 0
+}
+
+func (m *VoipApplicationServiceProfile) GetCallProgressOrTransferFeatures() uint32 {
+	if m != nil {
+		return m.CallProgressOrTransferFeatures
+	}
+	return 0
+}
+
+func (m *VoipApplicationServiceProfile) GetCallPresentationFeatures() uint32 {
+	if m != nil {
+		return m.CallPresentationFeatures
+	}
+	return 0
+}
+
+func (m *VoipApplicationServiceProfile) GetDirectConnectFeature() uint32 {
+	if m != nil {
+		return m.DirectConnectFeature
+	}
+	return 0
+}
+
+func (m *VoipApplicationServiceProfile) GetDirectConnectUriPointer() string {
+	if m != nil {
+		return m.DirectConnectUriPointer
+	}
+	return ""
+}
+
+func (m *VoipApplicationServiceProfile) GetBridgedLineAgentUriPointer() string {
+	if m != nil {
+		return m.BridgedLineAgentUriPointer
+	}
+	return ""
+}
+
+func (m *VoipApplicationServiceProfile) GetConferenceFactoryUriPointer() string {
+	if m != nil {
+		return m.ConferenceFactoryUriPointer
+	}
+	return ""
+}
+
+func (m *VoipApplicationServiceProfile) GetDialToneDelayTimer() uint32 {
+	if m != nil {
+		return m.DialToneDelayTimer
+	}
+	return 0
+}
+
+func init() {
+	proto.RegisterType((*VoipSystemProfileRequest)(nil), "voip_system_profile.VoipSystemProfileRequest")
+	proto.RegisterType((*VoipSystemProfile)(nil), "voip_system_profile.VoipSystemProfile")
+	proto.RegisterType((*VoipConfig)(nil), "voip_system_profile.VoipConfig")
+	proto.RegisterType((*IpHostConfig)(nil), "voip_system_profile.IpHostConfig")
+	proto.RegisterType((*TcpUdpConfig)(nil), "voip_system_profile.TcpUdpConfig")
+	proto.RegisterType((*VoipVoiceCtp)(nil), "voip_system_profile.VoipVoiceCtp")
+	proto.RegisterType((*VoipMediaProfile)(nil), "voip_system_profile.VoipMediaProfile")
+	proto.RegisterType((*VoiceServiceProfile)(nil), "voip_system_profile.VoiceServiceProfile")
+	proto.RegisterType((*RtpProfile)(nil), "voip_system_profile.RtpProfile")
+	proto.RegisterType((*PptpPotsUni)(nil), "voip_system_profile.PptpPotsUni")
+	proto.RegisterType((*SipConfig)(nil), "voip_system_profile.SipConfig")
+	proto.RegisterType((*SipUserData)(nil), "voip_system_profile.SipUserData")
+	proto.RegisterType((*SipAgentConfig)(nil), "voip_system_profile.SipAgentConfig")
+	proto.RegisterType((*NetworkDialPlan)(nil), "voip_system_profile.NetworkDialPlan")
+	proto.RegisterType((*UsernameAndPassword)(nil), "voip_system_profile.UsernameAndPassword")
+	proto.RegisterType((*SipResponseTable)(nil), "voip_system_profile.SipResponseTable")
+	proto.RegisterType((*DialPlanTable)(nil), "voip_system_profile.DialPlanTable")
+	proto.RegisterType((*VoipFeatureAccessCodes)(nil), "voip_system_profile.VoipFeatureAccessCodes")
+	proto.RegisterType((*VoipApplicationServiceProfile)(nil), "voip_system_profile.VoipApplicationServiceProfile")
+}
+
+func init() {
+	proto.RegisterFile("voltha_protos/voip_system_profile.proto", fileDescriptor_02a00a136081bca5)
+}
+
+var fileDescriptor_02a00a136081bca5 = []byte{
+	// 2057 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x58, 0x5f, 0x73, 0x1b, 0x49,
+	0x11, 0x2f, 0x3b, 0x4e, 0x2e, 0x1a, 0xdb, 0xf9, 0x33, 0x81, 0xa0, 0x0a, 0x77, 0x21, 0xec, 0x1d,
+	0x77, 0x29, 0xfe, 0xd8, 0x60, 0x9b, 0x2b, 0x0a, 0x28, 0xc0, 0xb1, 0x62, 0xe2, 0xe2, 0x9c, 0x88,
+	0x95, 0x63, 0xaa, 0xee, 0xe5, 0x6a, 0x3c, 0xdb, 0x5a, 0x0d, 0xde, 0x9d, 0x59, 0x66, 0x46, 0x8a,
+	0xc4, 0x23, 0x9f, 0x80, 0xa2, 0x0a, 0x78, 0xa6, 0xf8, 0x28, 0x3c, 0xf2, 0x06, 0x9f, 0x81, 0x4f,
+	0xc0, 0x0b, 0x8f, 0x54, 0xcf, 0xcc, 0x4a, 0xbb, 0xda, 0x5d, 0xc3, 0x9b, 0xe6, 0xf7, 0xeb, 0x6e,
+	0xb5, 0xba, 0x7b, 0xba, 0x7b, 0x44, 0x3e, 0x99, 0xa9, 0xcc, 0x4e, 0xd8, 0x17, 0x85, 0x56, 0x56,
+	0x99, 0xfd, 0x99, 0x12, 0xc5, 0x17, 0x66, 0x61, 0x2c, 0xe4, 0x08, 0x8d, 0x45, 0x06, 0x7b, 0x8e,
+	0xa2, 0x8f, 0x5a, 0xa8, 0x27, 0xef, 0xa7, 0x4a, 0xa5, 0x19, 0xec, 0xb3, 0x42, 0xec, 0x33, 0x29,
+	0x95, 0x65, 0x56, 0x28, 0x69, 0xbc, 0x4a, 0xf4, 0xbb, 0x0d, 0xd2, 0xbf, 0x54, 0xa2, 0x18, 0x39,
+	0xa5, 0xa1, 0xd7, 0x89, 0xe1, 0x37, 0x53, 0x30, 0x96, 0x3e, 0x20, 0xb7, 0xae, 0x61, 0xd1, 0xdf,
+	0x78, 0xb6, 0xf1, 0xbc, 0x17, 0xe3, 0x47, 0x7a, 0x41, 0x1e, 0xce, 0xd6, 0xa5, 0xfb, 0x9b, 0xcf,
+	0x36, 0x9e, 0x6f, 0x1f, 0x7c, 0xbc, 0xd7, 0xe6, 0x58, 0xd3, 0x76, 0xd3, 0x40, 0xf4, 0x87, 0x0d,
+	0xf2, 0xb0, 0x21, 0x48, 0x7f, 0x4c, 0x7a, 0x46, 0x14, 0x27, 0x4a, 0x8e, 0x45, 0xea, 0x7c, 0xd8,
+	0x3e, 0x78, 0xda, 0xfa, 0x1d, 0xa3, 0x52, 0x2a, 0x5e, 0x29, 0xd0, 0x9f, 0x12, 0x82, 0xb2, 0x41,
+	0xdd, 0xbb, 0xf8, 0xb5, 0x4e, 0x17, 0x83, 0x7e, 0x45, 0x25, 0xfa, 0xe3, 0x16, 0x21, 0x2b, 0x8a,
+	0xbe, 0x24, 0x3b, 0xa2, 0x78, 0xa5, 0x8c, 0xad, 0x39, 0xf4, 0xf5, 0x56, 0x8b, 0x67, 0x15, 0xc1,
+	0xb8, 0xa6, 0x86, 0x66, 0x2c, 0x2f, 0xde, 0x26, 0x75, 0xc7, 0xda, 0xcd, 0x5c, 0x54, 0x04, 0xe3,
+	0x9a, 0x1a, 0x9a, 0x41, 0x8d, 0x4b, 0x25, 0x38, 0x9c, 0xd8, 0xa2, 0x7f, 0xeb, 0x06, 0x33, 0x97,
+	0x15, 0xc1, 0xb8, 0xa6, 0x46, 0x7f, 0x49, 0x1e, 0xe0, 0xf9, 0x1c, 0x12, 0xc1, 0xca, 0x6c, 0x6e,
+	0x39, 0x53, 0xdf, 0xe8, 0x34, 0x55, 0x15, 0x8e, 0x1b, 0xea, 0xf4, 0x73, 0x82, 0x55, 0xc8, 0x61,
+	0x04, 0x7a, 0x26, 0x38, 0x94, 0x56, 0x6f, 0x3b, 0xab, 0xcf, 0xbb, 0xac, 0xae, 0xcb, 0xc7, 0x6d,
+	0x46, 0x30, 0xa7, 0xda, 0x16, 0xa5, 0xc9, 0x3b, 0x37, 0xe4, 0x34, 0x5e, 0x8a, 0xc5, 0x15, 0x15,
+	0xfa, 0x82, 0x6c, 0x17, 0x85, 0x2d, 0x86, 0xca, 0x9a, 0xb7, 0x52, 0xf4, 0xdf, 0x73, 0x16, 0x9e,
+	0xb5, 0x5a, 0x18, 0xae, 0xe4, 0xe2, 0xaa, 0x52, 0xf4, 0xfb, 0x4d, 0xb2, 0x53, 0x4d, 0x30, 0x7d,
+	0x9f, 0xf4, 0x44, 0xf1, 0xa6, 0x70, 0xb7, 0xca, 0x95, 0xc5, 0x6e, 0xbc, 0x02, 0xe8, 0x47, 0x64,
+	0x57, 0xc9, 0xe9, 0x59, 0x02, 0xd2, 0x8a, 0xb1, 0x00, 0xed, 0x32, 0xde, 0x8b, 0xeb, 0xa0, 0xb7,
+	0x71, 0x9c, 0x24, 0x1a, 0x8c, 0x71, 0xc9, 0xec, 0xc5, 0x2b, 0x80, 0x52, 0xb2, 0x95, 0x33, 0x73,
+	0xed, 0x52, 0xd3, 0x8b, 0xdd, 0x67, 0xda, 0x27, 0xef, 0xa5, 0xcc, 0xc2, 0x3b, 0xb6, 0x70, 0xb1,
+	0xed, 0xc5, 0xe5, 0x91, 0x3e, 0x25, 0xa4, 0xd0, 0x22, 0x67, 0x7a, 0x31, 0x90, 0xc6, 0x45, 0xa9,
+	0x17, 0x57, 0x10, 0x1a, 0x91, 0x1d, 0x03, 0x5c, 0xc9, 0x24, 0x48, 0xbc, 0xe7, 0x24, 0x6a, 0x18,
+	0xfd, 0x36, 0x79, 0xa8, 0x21, 0x63, 0x8b, 0xe3, 0x14, 0xa4, 0x2d, 0x7f, 0xdb, 0x5d, 0x27, 0xd8,
+	0x24, 0xa2, 0x53, 0xb2, 0x53, 0xad, 0x55, 0xfa, 0x84, 0xdc, 0x75, 0xdd, 0x85, 0xab, 0x2c, 0x04,
+	0x64, 0x79, 0x46, 0xce, 0x2a, 0x73, 0x2a, 0x20, 0x4b, 0x42, 0x28, 0x96, 0xe7, 0xe8, 0x53, 0xb2,
+	0x53, 0x2d, 0x56, 0xfa, 0x31, 0xb9, 0x67, 0x44, 0x2a, 0x59, 0x96, 0x09, 0x99, 0x9e, 0xa8, 0x04,
+	0x82, 0xb5, 0x35, 0x34, 0xfa, 0xd3, 0x6d, 0xf2, 0x60, 0xbd, 0x34, 0x31, 0x40, 0x63, 0x36, 0x3f,
+	0x5f, 0x69, 0x95, 0x47, 0xfa, 0x9c, 0xdc, 0xe7, 0x2a, 0x01, 0x3e, 0x82, 0x0c, 0x38, 0xfe, 0x82,
+	0xef, 0x39, 0x4f, 0x76, 0xe3, 0x75, 0x98, 0x7e, 0x4a, 0x1e, 0x17, 0x8c, 0x5f, 0x83, 0x1d, 0x82,
+	0x16, 0x2a, 0xa9, 0x28, 0xdc, 0x72, 0x0a, 0x1d, 0x2c, 0xfd, 0x2e, 0x79, 0x64, 0x44, 0x06, 0x92,
+	0xc3, 0x68, 0x5a, 0x14, 0x98, 0x43, 0xa7, 0xb4, 0xe5, 0x94, 0xda, 0xa8, 0xa6, 0x4f, 0x07, 0x2e,
+	0xad, 0x0d, 0x9f, 0x0e, 0x3a, 0x7d, 0x3a, 0x70, 0xa9, 0xee, 0xf2, 0xe9, 0xa0, 0xdd, 0xa7, 0x03,
+	0x97, 0xfd, 0x56, 0x9f, 0x0e, 0x9a, 0x3e, 0x1d, 0xba, 0x12, 0x68, 0xf8, 0x74, 0xd8, 0xe9, 0xd3,
+	0x61, 0xbf, 0x77, 0x83, 0x4f, 0x87, 0xed, 0x3e, 0x1d, 0xf6, 0x49, 0x97, 0x4f, 0x87, 0x4d, 0x9f,
+	0x8e, 0xfa, 0xdb, 0x6d, 0x3e, 0x1d, 0x75, 0xfa, 0x74, 0xd4, 0xdf, 0xb9, 0xc1, 0xa7, 0xa3, 0x76,
+	0x9f, 0x8e, 0xfa, 0xbb, 0x5d, 0x3e, 0x1d, 0x61, 0xa5, 0x29, 0x75, 0x35, 0xb0, 0xf9, 0xb8, 0x7f,
+	0xcf, 0x57, 0x5a, 0x38, 0x46, 0xff, 0xde, 0x24, 0x8f, 0x5a, 0xba, 0x1b, 0xfd, 0x26, 0x79, 0x80,
+	0xa3, 0x78, 0x2a, 0x39, 0xe4, 0x20, 0xed, 0xc5, 0xa2, 0x28, 0x8b, 0xb4, 0x81, 0xe3, 0x75, 0xfd,
+	0xb5, 0xb0, 0x16, 0xf4, 0x05, 0xd3, 0x29, 0xd8, 0x50, 0xaa, 0x35, 0x0c, 0xa3, 0xe2, 0xcf, 0x2f,
+	0xa6, 0xe3, 0x31, 0xe8, 0x73, 0x36, 0x0f, 0x05, 0xba, 0x0e, 0x63, 0x3b, 0x02, 0x3e, 0x51, 0x27,
+	0x4c, 0x72, 0xc8, 0xce, 0x64, 0xe2, 0x6a, 0xf2, 0x6e, 0x5c, 0x07, 0x31, 0x06, 0x85, 0xb1, 0x72,
+	0x18, 0x2e, 0xed, 0x25, 0xd3, 0x82, 0x49, 0x1b, 0x2a, 0xb2, 0x8d, 0x42, 0x0f, 0x12, 0x9b, 0x8f,
+	0x07, 0x22, 0x15, 0xf6, 0x33, 0x98, 0x41, 0x66, 0x42, 0x39, 0xae, 0xc3, 0xd8, 0x5a, 0x96, 0xd0,
+	0x60, 0xaa, 0xdd, 0x36, 0x12, 0xaa, 0xb0, 0x49, 0xd0, 0x03, 0xf2, 0xa5, 0x89, 0x52, 0xd7, 0xa7,
+	0x19, 0x33, 0x93, 0x73, 0x21, 0x45, 0x3e, 0xcd, 0x2f, 0x44, 0x0e, 0xa1, 0x10, 0x5b, 0xb9, 0xe8,
+	0x3f, 0x1b, 0x84, 0xac, 0x06, 0x00, 0x06, 0x30, 0x53, 0x9c, 0x65, 0x43, 0xa5, 0xed, 0xb9, 0x90,
+	0x21, 0xd0, 0x35, 0xac, 0x2e, 0xc3, 0xe6, 0x65, 0x90, 0xab, 0x18, 0x76, 0xae, 0xc4, 0xf0, 0xe2,
+	0x9c, 0xe9, 0xeb, 0xd0, 0xa2, 0x97, 0x67, 0xfc, 0xf9, 0x85, 0x48, 0xd3, 0xc5, 0x0b, 0xc6, 0xaf,
+	0x5f, 0xce, 0x40, 0x5a, 0x13, 0x2e, 0xfb, 0x3a, 0x8c, 0xdd, 0xd9, 0x2a, 0x09, 0x41, 0xc8, 0x47,
+	0xb4, 0x82, 0x20, 0x8f, 0x51, 0x08, 0xbc, 0x8f, 0x61, 0x05, 0xc1, 0x49, 0xc1, 0x99, 0x09, 0xb4,
+	0x0f, 0xdb, 0x0a, 0x88, 0xfe, 0xb6, 0x49, 0xb6, 0x2b, 0x93, 0x0b, 0x37, 0x38, 0xa6, 0x79, 0xb9,
+	0xc1, 0x31, 0xcd, 0xe9, 0x33, 0xb2, 0xcd, 0x34, 0x3f, 0x93, 0x16, 0xf4, 0x8c, 0x65, 0xa1, 0x05,
+	0x57, 0x21, 0x37, 0x8b, 0xf2, 0x02, 0x12, 0xac, 0x86, 0x50, 0x46, 0x2b, 0x00, 0x4b, 0xd7, 0x6a,
+	0x26, 0x4d, 0x2e, 0x5c, 0xf5, 0x0f, 0x99, 0x9d, 0x84, 0x9f, 0xda, 0xc0, 0xe9, 0x63, 0x72, 0x47,
+	0xcf, 0x7f, 0xce, 0x84, 0x74, 0xbf, 0xf3, 0x61, 0x1c, 0x4e, 0x88, 0x5b, 0x8f, 0xdf, 0xf1, 0xb8,
+	0x3f, 0xa1, 0xed, 0x42, 0x59, 0xf3, 0x4a, 0x65, 0xc9, 0x9b, 0x19, 0x68, 0x97, 0x68, 0xff, 0x13,
+	0x1b, 0x38, 0xdd, 0x23, 0x54, 0xaa, 0x5c, 0x48, 0x96, 0x9d, 0x02, 0x24, 0x97, 0x2a, 0xb3, 0x2c,
+	0x2d, 0xcb, 0xa2, 0x85, 0x41, 0xdb, 0x99, 0x32, 0xe6, 0xcd, 0x78, 0xa4, 0xc6, 0x76, 0xf4, 0x4e,
+	0x58, 0x3e, 0x09, 0xcd, 0xa9, 0x81, 0x47, 0x7f, 0xbf, 0x45, 0x7a, 0xcb, 0xa5, 0x12, 0x97, 0x06,
+	0x23, 0x8a, 0xb7, 0x06, 0xf4, 0x80, 0x59, 0x16, 0x16, 0xbf, 0x67, 0x5d, 0x9b, 0x68, 0x29, 0x17,
+	0x57, 0x95, 0xe8, 0x2f, 0x70, 0x92, 0x15, 0x6e, 0x68, 0xd6, 0x16, 0xbf, 0x0f, 0xbb, 0xcc, 0x54,
+	0x44, 0xe3, 0x35, 0x55, 0xfa, 0x9a, 0xdc, 0x97, 0x60, 0xdf, 0x29, 0x7d, 0x3d, 0x10, 0x2c, 0x1b,
+	0x66, 0x4c, 0x86, 0xfd, 0xef, 0xa3, 0x56, 0x6b, 0xaf, 0xeb, 0xb2, 0xf1, 0xba, 0x32, 0xe5, 0xe4,
+	0x31, 0xea, 0x9d, 0x02, 0xb3, 0x53, 0x0d, 0xc7, 0x9c, 0x83, 0x31, 0x38, 0x57, 0x4d, 0xd8, 0x05,
+	0xbf, 0xd5, 0xb9, 0x0b, 0x36, 0x55, 0xe2, 0x0e, 0x53, 0x74, 0x4e, 0x3e, 0x40, 0xe6, 0xb8, 0x28,
+	0x32, 0xc1, 0xdd, 0xdd, 0x6e, 0xdd, 0x10, 0x0f, 0x3a, 0xbf, 0xab, 0x53, 0x33, 0xbe, 0xd9, 0x70,
+	0xf4, 0xcf, 0x4d, 0xb2, 0x5d, 0x49, 0x0c, 0xde, 0x80, 0xa9, 0x01, 0x3d, 0x64, 0xda, 0x1e, 0x2b,
+	0x1d, 0xee, 0x46, 0x15, 0xc2, 0x1d, 0x16, 0x8f, 0x92, 0xe5, 0x70, 0x2c, 0x93, 0x21, 0x33, 0xe6,
+	0x9d, 0xd2, 0x49, 0x48, 0x59, 0xfb, 0x0e, 0xfb, 0xb6, 0x29, 0x1f, 0xb7, 0x19, 0xa1, 0x47, 0xe4,
+	0xcb, 0x6e, 0xb5, 0xcd, 0x99, 0xc8, 0xd0, 0x51, 0xd0, 0xe8, 0x9b, 0x16, 0xa1, 0xa5, 0xb4, 0x93,
+	0x74, 0x48, 0x3e, 0x5c, 0x11, 0xd3, 0x2b, 0xc3, 0xb5, 0x70, 0xbb, 0xd7, 0xcb, 0x79, 0x21, 0x7c,
+	0xa7, 0x74, 0x97, 0x05, 0xf3, 0x75, 0x3b, 0xfe, 0x7f, 0x44, 0xb1, 0xe3, 0x69, 0xc8, 0x80, 0x19,
+	0xc0, 0xa3, 0x76, 0xe1, 0xbf, 0x1d, 0xd7, 0x30, 0xec, 0x78, 0x5a, 0x4d, 0x3c, 0x7f, 0xc7, 0xf1,
+	0xcb, 0x73, 0xf4, 0xd7, 0x2d, 0x72, 0xaf, 0x5e, 0xa7, 0xd8, 0xab, 0xd5, 0xd4, 0x5e, 0xa9, 0xa9,
+	0x4c, 0x86, 0x5a, 0xcd, 0x17, 0xe5, 0x3e, 0xeb, 0x23, 0xdc, 0xca, 0xe1, 0x3c, 0x0a, 0xab, 0xe9,
+	0x48, 0x14, 0xb8, 0x8d, 0x86, 0xf5, 0xb8, 0x06, 0x62, 0x7b, 0x5d, 0xae, 0xa7, 0x41, 0xce, 0x87,
+	0x6b, 0x1d, 0x46, 0x7b, 0x46, 0x14, 0x31, 0xa4, 0x2f, 0xe7, 0x45, 0x25, 0x24, 0x75, 0x10, 0x93,
+	0xe0, 0x00, 0x0d, 0xe9, 0x2b, 0x60, 0xc9, 0xc8, 0x32, 0x6d, 0x9d, 0xb4, 0x8f, 0x42, 0x3b, 0x89,
+	0x21, 0x1b, 0x39, 0x33, 0xc2, 0x58, 0xcd, 0x74, 0x58, 0xad, 0x6b, 0x18, 0xb6, 0x6f, 0xb3, 0x6a,
+	0x30, 0x7e, 0xb5, 0xae, 0x20, 0xf8, 0xe2, 0x72, 0xc6, 0x4d, 0xa1, 0xa4, 0x81, 0x0b, 0x76, 0x95,
+	0xf9, 0xa6, 0xd5, 0xf5, 0xe2, 0x1a, 0xad, 0x09, 0xc7, 0x0d, 0x75, 0xfa, 0x43, 0xd2, 0x37, 0xe5,
+	0x7b, 0xe3, 0xc2, 0xb7, 0x60, 0xcc, 0x88, 0xd5, 0x2a, 0x73, 0x1d, 0xee, 0x6e, 0xdc, 0xc9, 0xbb,
+	0xb7, 0x80, 0xab, 0xb0, 0x53, 0xa5, 0x73, 0x66, 0xdd, 0xe6, 0x85, 0x6f, 0x81, 0x0a, 0x86, 0xf6,
+	0x35, 0x24, 0x53, 0x99, 0x30, 0x69, 0xcb, 0x8c, 0x0f, 0x95, 0xc0, 0x71, 0xe1, 0x76, 0xaf, 0x5e,
+	0xdc, 0xc9, 0x47, 0xff, 0xda, 0x20, 0xf7, 0xd7, 0xfa, 0x0f, 0x2e, 0x17, 0x5c, 0x0b, 0x2b, 0x38,
+	0xcb, 0x10, 0xc3, 0xd0, 0xaa, 0xa9, 0x0d, 0x63, 0xb9, 0x8d, 0xc2, 0x5e, 0x5f, 0x30, 0x6d, 0x45,
+	0x5d, 0xc1, 0xcf, 0xe8, 0x16, 0x06, 0xdf, 0x0d, 0x49, 0xf8, 0xb6, 0xf0, 0xbb, 0xfc, 0x18, 0x5b,
+	0x43, 0xe9, 0x2b, 0xb2, 0x5b, 0x22, 0x3e, 0x13, 0xbe, 0xdf, 0x45, 0xad, 0x99, 0x18, 0x54, 0x25,
+	0xe3, 0xba, 0x62, 0x74, 0x4c, 0x1e, 0xb5, 0x74, 0x00, 0x1c, 0x3a, 0x33, 0x96, 0x89, 0xc4, 0xb7,
+	0x25, 0x3e, 0x81, 0xdc, 0xef, 0x79, 0xb7, 0xe3, 0x06, 0x1e, 0x69, 0xf2, 0x60, 0x3d, 0xd9, 0xae,
+	0xee, 0x57, 0xd8, 0xf2, 0x05, 0x84, 0x75, 0x5f, 0x87, 0xf1, 0x89, 0x88, 0x4b, 0x44, 0xb8, 0x3e,
+	0xee, 0x33, 0x36, 0x3a, 0x0b, 0x73, 0x7b, 0x0e, 0xc6, 0xe0, 0x6c, 0xf4, 0x37, 0xa6, 0x0a, 0x45,
+	0x7f, 0xd9, 0x20, 0xbb, 0xb5, 0xdf, 0xe5, 0xd6, 0x8f, 0x00, 0x9c, 0x25, 0x21, 0x27, 0x15, 0x04,
+	0x47, 0x37, 0x73, 0x8b, 0x72, 0x08, 0x7f, 0x38, 0xe1, 0xbd, 0x5b, 0x46, 0x44, 0x5d, 0x83, 0x0c,
+	0xdf, 0x56, 0x07, 0xb1, 0x43, 0xd4, 0xe2, 0x76, 0xce, 0xe6, 0x23, 0xf1, 0x5b, 0x08, 0x0b, 0x44,
+	0x2b, 0x17, 0xfd, 0x63, 0x8b, 0x3c, 0x6e, 0x9f, 0x35, 0xb8, 0x4a, 0x72, 0xb7, 0xb3, 0x9e, 0xb0,
+	0x2c, 0xfb, 0x15, 0x13, 0x56, 0xc8, 0x34, 0x04, 0xa8, 0x49, 0x60, 0x37, 0xe3, 0x2c, 0xcb, 0x70,
+	0x8b, 0x28, 0x5f, 0x9e, 0xe5, 0xb9, 0xe4, 0x86, 0x95, 0xdd, 0xae, 0x3c, 0x63, 0x12, 0xf1, 0x33,
+	0xe8, 0xb3, 0xe4, 0x98, 0x5b, 0x31, 0x63, 0x16, 0xc2, 0x4b, 0xbc, 0x81, 0x63, 0xa5, 0x96, 0xd8,
+	0x00, 0x58, 0x29, 0xed, 0x1f, 0xe8, 0x2d, 0x0c, 0x3e, 0x52, 0x12, 0xf5, 0x5a, 0xd9, 0x81, 0x30,
+	0x76, 0xaa, 0xaf, 0x82, 0x1d, 0x0c, 0xaf, 0x6f, 0x2e, 0x1d, 0x2c, 0xde, 0xc9, 0x2a, 0xb3, 0xb4,
+	0x58, 0xee, 0xd2, 0xbd, 0xb8, 0x93, 0xc7, 0xe6, 0x57, 0xe5, 0x86, 0x42, 0x9e, 0x4c, 0x98, 0x0c,
+	0xcb, 0x53, 0x2f, 0x6e, 0x27, 0xd1, 0x53, 0xc8, 0x41, 0xa7, 0x20, 0xf9, 0x22, 0x0c, 0xd8, 0xd7,
+	0xd3, 0xfc, 0x0a, 0xb4, 0xeb, 0x31, 0xbd, 0xb8, 0x83, 0xc5, 0x12, 0x76, 0xad, 0x80, 0xab, 0x3c,
+	0x10, 0xa1, 0xc9, 0xac, 0xc3, 0xf8, 0x0d, 0x53, 0xc9, 0xac, 0x05, 0x99, 0x40, 0x82, 0x89, 0x73,
+	0xcd, 0x6a, 0xbc, 0xec, 0x32, 0x1d, 0x2c, 0x16, 0x55, 0xab, 0xd6, 0x8e, 0x1f, 0x3b, 0x6d, 0x5c,
+	0xf4, 0xe7, 0x2d, 0xf2, 0xc1, 0x8d, 0x4b, 0x05, 0x5e, 0x1e, 0x2e, 0x92, 0x50, 0x74, 0xe5, 0xff,
+	0x3a, 0x55, 0xc8, 0xf5, 0xb1, 0x55, 0x79, 0x2d, 0x25, 0x37, 0x43, 0x1f, 0x6b, 0x52, 0xf4, 0x94,
+	0x3c, 0x75, 0x55, 0xa5, 0x55, 0x8a, 0xc3, 0xef, 0x8d, 0x2e, 0xfd, 0x59, 0x2a, 0xfb, 0x3e, 0xf5,
+	0x3f, 0xa4, 0x30, 0xfb, 0x5e, 0x02, 0x0c, 0x48, 0xff, 0x7f, 0xee, 0xd2, 0x82, 0xbf, 0x4a, 0x9d,
+	0xbc, 0xbf, 0x82, 0x1a, 0x38, 0x8e, 0x00, 0x09, 0xdc, 0x06, 0x22, 0xbc, 0x44, 0x5a, 0x39, 0xfa,
+	0x03, 0xf2, 0x95, 0x1a, 0xfe, 0x56, 0x8b, 0x72, 0x00, 0xf8, 0x32, 0xed, 0xa2, 0xe9, 0x4f, 0xc8,
+	0x93, 0x2b, 0x2d, 0x92, 0x14, 0x92, 0xcf, 0x84, 0x04, 0x37, 0x1a, 0x2a, 0xca, 0xbe, 0x52, 0x6f,
+	0x90, 0xa0, 0x3f, 0x23, 0x5f, 0xe5, 0x4a, 0x8e, 0x41, 0xe3, 0xa3, 0xfb, 0x94, 0x71, 0xab, 0xf4,
+	0xa2, 0x62, 0xc0, 0x57, 0xec, 0x4d, 0x22, 0x78, 0x23, 0xb1, 0xad, 0x5c, 0x28, 0x09, 0x03, 0xc8,
+	0xd8, 0xc2, 0x6f, 0x33, 0x7e, 0xf3, 0x6f, 0x61, 0x5e, 0x8c, 0xc9, 0x27, 0x4a, 0xa7, 0x7b, 0xaa,
+	0x00, 0xc9, 0x95, 0x4e, 0xf6, 0xfc, 0x7f, 0xef, 0x6d, 0x13, 0xe1, 0xf3, 0x1f, 0xa5, 0xc2, 0x4e,
+	0xa6, 0x57, 0x7b, 0x5c, 0xe5, 0xfb, 0xa5, 0xfc, 0xbe, 0x97, 0xff, 0x4e, 0xf9, 0x5f, 0xfd, 0xf7,
+	0xf7, 0x53, 0xd5, 0xf6, 0x8f, 0xfd, 0xd5, 0x1d, 0x27, 0x71, 0xf8, 0xdf, 0x00, 0x00, 0x00, 0xff,
+	0xff, 0xac, 0x32, 0x52, 0x2e, 0xdd, 0x17, 0x00, 0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voip_user_profile/voip_user_profile.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voip_user_profile/voip_user_profile.pb.go
new file mode 100644
index 0000000..a4f90f7
--- /dev/null
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voip_user_profile/voip_user_profile.pb.go
@@ -0,0 +1,200 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: voltha_protos/voip_user_profile.proto
+
+package voip_user_profile
+
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	_ "google.golang.org/genproto/googleapis/api/annotations"
+	math "math"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
+
+// A user specific profile for voip service
+type VoipUserProfileRequest struct {
+	// for the path in KV store
+	Key                  string           `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	VoipUserProfile      *VoipUserProfile `protobuf:"bytes,2,opt,name=voipUserProfile,proto3" json:"voipUserProfile,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
+	XXX_unrecognized     []byte           `json:"-"`
+	XXX_sizecache        int32            `json:"-"`
+}
+
+func (m *VoipUserProfileRequest) Reset()         { *m = VoipUserProfileRequest{} }
+func (m *VoipUserProfileRequest) String() string { return proto.CompactTextString(m) }
+func (*VoipUserProfileRequest) ProtoMessage()    {}
+func (*VoipUserProfileRequest) Descriptor() ([]byte, []int) {
+	return fileDescriptor_0ecf0ef501fce1bc, []int{0}
+}
+
+func (m *VoipUserProfileRequest) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoipUserProfileRequest.Unmarshal(m, b)
+}
+func (m *VoipUserProfileRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoipUserProfileRequest.Marshal(b, m, deterministic)
+}
+func (m *VoipUserProfileRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoipUserProfileRequest.Merge(m, src)
+}
+func (m *VoipUserProfileRequest) XXX_Size() int {
+	return xxx_messageInfo_VoipUserProfileRequest.Size(m)
+}
+func (m *VoipUserProfileRequest) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoipUserProfileRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoipUserProfileRequest proto.InternalMessageInfo
+
+func (m *VoipUserProfileRequest) GetKey() string {
+	if m != nil {
+		return m.Key
+	}
+	return ""
+}
+
+func (m *VoipUserProfileRequest) GetVoipUserProfile() *VoipUserProfile {
+	if m != nil {
+		return m.VoipUserProfile
+	}
+	return nil
+}
+
+type VoipUserProfile struct {
+	VoipSystemProfileKey string   `protobuf:"bytes,1,opt,name=voipSystemProfileKey,proto3" json:"voipSystemProfileKey,omitempty"`
+	Username             string   `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
+	Password             string   `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"`
+	Domain               string   `protobuf:"bytes,4,opt,name=domain,proto3" json:"domain,omitempty"`
+	Proxy                string   `protobuf:"bytes,5,opt,name=proxy,proto3" json:"proxy,omitempty"`
+	Port                 uint32   `protobuf:"varint,6,opt,name=port,proto3" json:"port,omitempty"`
+	SipDisplayName       string   `protobuf:"bytes,7,opt,name=sipDisplayName,proto3" json:"sipDisplayName,omitempty"`
+	Realm                string   `protobuf:"bytes,8,opt,name=realm,proto3" json:"realm,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *VoipUserProfile) Reset()         { *m = VoipUserProfile{} }
+func (m *VoipUserProfile) String() string { return proto.CompactTextString(m) }
+func (*VoipUserProfile) ProtoMessage()    {}
+func (*VoipUserProfile) Descriptor() ([]byte, []int) {
+	return fileDescriptor_0ecf0ef501fce1bc, []int{1}
+}
+
+func (m *VoipUserProfile) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_VoipUserProfile.Unmarshal(m, b)
+}
+func (m *VoipUserProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_VoipUserProfile.Marshal(b, m, deterministic)
+}
+func (m *VoipUserProfile) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_VoipUserProfile.Merge(m, src)
+}
+func (m *VoipUserProfile) XXX_Size() int {
+	return xxx_messageInfo_VoipUserProfile.Size(m)
+}
+func (m *VoipUserProfile) XXX_DiscardUnknown() {
+	xxx_messageInfo_VoipUserProfile.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VoipUserProfile proto.InternalMessageInfo
+
+func (m *VoipUserProfile) GetVoipSystemProfileKey() string {
+	if m != nil {
+		return m.VoipSystemProfileKey
+	}
+	return ""
+}
+
+func (m *VoipUserProfile) GetUsername() string {
+	if m != nil {
+		return m.Username
+	}
+	return ""
+}
+
+func (m *VoipUserProfile) GetPassword() string {
+	if m != nil {
+		return m.Password
+	}
+	return ""
+}
+
+func (m *VoipUserProfile) GetDomain() string {
+	if m != nil {
+		return m.Domain
+	}
+	return ""
+}
+
+func (m *VoipUserProfile) GetProxy() string {
+	if m != nil {
+		return m.Proxy
+	}
+	return ""
+}
+
+func (m *VoipUserProfile) GetPort() uint32 {
+	if m != nil {
+		return m.Port
+	}
+	return 0
+}
+
+func (m *VoipUserProfile) GetSipDisplayName() string {
+	if m != nil {
+		return m.SipDisplayName
+	}
+	return ""
+}
+
+func (m *VoipUserProfile) GetRealm() string {
+	if m != nil {
+		return m.Realm
+	}
+	return ""
+}
+
+func init() {
+	proto.RegisterType((*VoipUserProfileRequest)(nil), "voip_user_profile.VoipUserProfileRequest")
+	proto.RegisterType((*VoipUserProfile)(nil), "voip_user_profile.VoipUserProfile")
+}
+
+func init() {
+	proto.RegisterFile("voltha_protos/voip_user_profile.proto", fileDescriptor_0ecf0ef501fce1bc)
+}
+
+var fileDescriptor_0ecf0ef501fce1bc = []byte{
+	// 322 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x52, 0xcb, 0x4b, 0x33, 0x31,
+	0x10, 0x67, 0xbf, 0x3e, 0xbe, 0x76, 0x44, 0xab, 0xa1, 0x94, 0x50, 0x3c, 0x94, 0x42, 0xa5, 0x17,
+	0x77, 0xa1, 0xe2, 0xc1, 0xab, 0x78, 0x53, 0x44, 0x56, 0xf4, 0xe0, 0xa5, 0xa4, 0x6d, 0xdc, 0x06,
+	0x77, 0x77, 0x62, 0x92, 0xd6, 0xee, 0x1f, 0x2f, 0x48, 0x92, 0x6e, 0xc1, 0x5d, 0x6f, 0xf3, 0x7b,
+	0xcd, 0x0c, 0xc9, 0xc0, 0x64, 0x8b, 0xa9, 0x59, 0xb3, 0xb9, 0x54, 0x68, 0x50, 0x47, 0x5b, 0x14,
+	0x72, 0xbe, 0xd1, 0x5c, 0x59, 0xe2, 0x5d, 0xa4, 0x3c, 0x74, 0x02, 0x39, 0xab, 0x09, 0xc3, 0xf3,
+	0x04, 0x31, 0x49, 0x79, 0xc4, 0xa4, 0x88, 0x58, 0x9e, 0xa3, 0x61, 0x46, 0x60, 0xae, 0x7d, 0x60,
+	0xbc, 0x83, 0xc1, 0x2b, 0x0a, 0xf9, 0xa2, 0xb9, 0x7a, 0xf2, 0x81, 0x98, 0x7f, 0x6e, 0xb8, 0x36,
+	0xe4, 0x14, 0x1a, 0x1f, 0xbc, 0xa0, 0xc1, 0x28, 0x98, 0x76, 0x63, 0x5b, 0x92, 0x07, 0xe8, 0x6d,
+	0x7f, 0x7b, 0xe9, 0xbf, 0x51, 0x30, 0x3d, 0x9a, 0x8d, 0xc3, 0xfa, 0x3e, 0xd5, 0xae, 0xd5, 0xe8,
+	0xf8, 0x3b, 0x80, 0x5e, 0xc5, 0x44, 0x66, 0xd0, 0xb7, 0xb6, 0xe7, 0x42, 0x1b, 0x9e, 0xed, 0xc9,
+	0xfb, 0xc3, 0x12, 0x7f, 0x6a, 0x64, 0x08, 0x1d, 0x3b, 0x38, 0x67, 0x99, 0x5f, 0xa7, 0x1b, 0x1f,
+	0xb0, 0xd5, 0x24, 0xd3, 0xfa, 0x0b, 0xd5, 0x8a, 0x36, 0xbc, 0x56, 0x62, 0x32, 0x80, 0xf6, 0x0a,
+	0x33, 0x26, 0x72, 0xda, 0x74, 0xca, 0x1e, 0x91, 0x3e, 0xb4, 0xa4, 0xc2, 0x5d, 0x41, 0x5b, 0x8e,
+	0xf6, 0x80, 0x10, 0x68, 0x4a, 0x54, 0x86, 0xb6, 0x47, 0xc1, 0xf4, 0x38, 0x76, 0x35, 0xb9, 0x80,
+	0x13, 0x2d, 0xe4, 0x9d, 0xd0, 0x32, 0x65, 0xc5, 0xa3, 0x9d, 0xff, 0xdf, 0x45, 0x2a, 0xac, 0xed,
+	0xa8, 0x38, 0x4b, 0x33, 0xda, 0xf1, 0x1d, 0x1d, 0xb8, 0x5d, 0xc0, 0x04, 0x55, 0x12, 0xa2, 0xe4,
+	0xf9, 0x12, 0xd5, 0x2a, 0xf4, 0x1f, 0x5c, 0x7f, 0xc9, 0xb7, 0x9b, 0x44, 0x98, 0xf5, 0x66, 0x11,
+	0x2e, 0x31, 0x8b, 0x4a, 0x77, 0xe4, 0xdd, 0x97, 0xe5, 0x39, 0x5c, 0x47, 0x09, 0xd6, 0x8f, 0x62,
+	0xd1, 0x76, 0xfa, 0xd5, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x84, 0x23, 0x54, 0x5a, 0x3e, 0x02,
+	0x00, 0x00,
+}
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go
index 217a597..acd0402 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go
@@ -13,6 +13,8 @@
 	health "github.com/opencord/voltha-protos/v5/go/health"
 	omci "github.com/opencord/voltha-protos/v5/go/omci"
 	openflow_13 "github.com/opencord/voltha-protos/v5/go/openflow_13"
+	voip_system_profile "github.com/opencord/voltha-protos/v5/go/voip_system_profile"
+	voip_user_profile "github.com/opencord/voltha-protos/v5/go/voip_user_profile"
 	_ "google.golang.org/genproto/googleapis/api/annotations"
 	grpc "google.golang.org/grpc"
 	codes "google.golang.org/grpc/codes"
@@ -31,6 +33,9 @@
 // proto package needs to be updated.
 const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
+// Key from public import voltha_protos/common.proto
+type Key = common.Key
+
 // ID from public import voltha_protos/common.proto
 type ID = common.ID
 
@@ -86,6 +91,7 @@
 const OperStatus_FAILED = OperStatus_Types(common.OperStatus_FAILED)
 const OperStatus_RECONCILING = OperStatus_Types(common.OperStatus_RECONCILING)
 const OperStatus_RECONCILING_FAILED = OperStatus_Types(common.OperStatus_RECONCILING_FAILED)
+const OperStatus_REBOOTED = OperStatus_Types(common.OperStatus_REBOOTED)
 
 // ConnectStatus_Types from public import voltha_protos/common.proto
 type ConnectStatus_Types = common.ConnectStatus_Types
@@ -303,141 +309,149 @@
 func init() { proto.RegisterFile("voltha_protos/voltha.proto", fileDescriptor_e084f1a60ce7016c) }
 
 var fileDescriptor_e084f1a60ce7016c = []byte{
-	// 2130 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0xeb, 0x6e, 0x1b, 0xb9,
-	0x15, 0xde, 0x71, 0x76, 0x73, 0xa1, 0x25, 0xdb, 0xa2, 0x7c, 0x91, 0x25, 0xf9, 0xc6, 0x64, 0xb3,
-	0x5e, 0x25, 0x91, 0x92, 0x38, 0xd9, 0xb6, 0xd9, 0x2e, 0x0a, 0xaf, 0x6f, 0xf5, 0x36, 0x81, 0x0d,
-	0x29, 0x71, 0xda, 0x62, 0xb3, 0xc2, 0x48, 0x43, 0xcb, 0x83, 0x8e, 0x66, 0xd4, 0x21, 0x65, 0x27,
-	0x30, 0xf6, 0x4f, 0x2f, 0x40, 0x8a, 0xa2, 0xe8, 0x8f, 0x7d, 0x8b, 0x3e, 0x45, 0xff, 0xf5, 0x01,
-	0xfa, 0x0a, 0x7d, 0x90, 0x82, 0x87, 0xa4, 0x3c, 0xd4, 0xcc, 0xc8, 0x56, 0xba, 0x40, 0xff, 0x58,
-	0x26, 0x0f, 0xf9, 0x7d, 0x1f, 0xcf, 0x39, 0xbc, 0x0e, 0x2a, 0x9e, 0x06, 0x1e, 0x3f, 0xb1, 0x9b,
-	0xbd, 0x30, 0xe0, 0x01, 0xab, 0xc9, 0x52, 0x15, 0x4a, 0xf8, 0xba, 0x2c, 0x15, 0xcb, 0x9d, 0x20,
-	0xe8, 0x78, 0xb4, 0x66, 0xf7, 0xdc, 0x9a, 0xed, 0xfb, 0x01, 0xb7, 0xb9, 0x1b, 0xf8, 0x4c, 0xb6,
-	0x2a, 0x96, 0x94, 0x15, 0x4a, 0xad, 0xfe, 0x71, 0x8d, 0x76, 0x7b, 0xfc, 0x9d, 0x32, 0x0e, 0xc1,
-	0xb7, 0x83, 0x6e, 0x37, 0xf0, 0x93, 0x6d, 0x27, 0xd4, 0xf6, 0xf8, 0x89, 0xb2, 0x11, 0xd3, 0xe6,
-	0x05, 0x1d, 0xb7, 0x6d, 0x7b, 0x4d, 0x87, 0x9e, 0xba, 0x6d, 0x9a, 0xdc, 0xdf, 0xb0, 0x95, 0x4c,
-	0x9b, 0xed, 0xd8, 0x3d, 0x4e, 0x43, 0x65, 0x5c, 0x31, 0x8d, 0x41, 0x8f, 0xfa, 0xc7, 0x5e, 0x70,
-	0xd6, 0x7c, 0xb4, 0x91, 0x8c, 0x4c, 0x4f, 0xa9, 0xcf, 0xf5, 0x70, 0x97, 0x87, 0x6c, 0x6f, 0x39,
-	0xf5, 0x59, 0xc4, 0x1d, 0xc3, 0xe0, 0xdd, 0xb6, 0xdb, 0xec, 0xba, 0xad, 0xa6, 0xd3, 0x52, 0x0d,
-	0xd6, 0x12, 0x1a, 0xd8, 0x9e, 0x1d, 0x76, 0x2f, 0x9a, 0x2c, 0x25, 0x34, 0xe1, 0x94, 0x71, 0x69,
-	0x26, 0x6f, 0x50, 0x66, 0x2b, 0x08, 0xe9, 0xbe, 0xcf, 0xb8, 0xed, 0xb7, 0x29, 0x5e, 0x41, 0x93,
-	0xae, 0xfa, 0xbf, 0xe9, 0x3a, 0x05, 0x6b, 0xd5, 0x5a, 0xbf, 0x55, 0x47, 0xba, 0x6a, 0xdf, 0xc1,
-	0xf7, 0xd1, 0x75, 0xe9, 0xdd, 0xc2, 0xc4, 0xaa, 0xb5, 0x3e, 0xf9, 0x78, 0xb6, 0xaa, 0x9c, 0xfd,
-	0x4b, 0xf8, 0x69, 0x70, 0x9b, 0xf7, 0x59, 0x5d, 0xb5, 0x21, 0x5f, 0xa2, 0x6c, 0x14, 0x9e, 0xe1,
-	0x0a, 0xfa, 0xc4, 0xe5, 0xb4, 0xcb, 0x0a, 0xd6, 0xea, 0x35, 0xe8, 0xad, 0xb2, 0x24, 0xda, 0xaa,
-	0x2e, 0x9b, 0x90, 0x7f, 0x5e, 0x43, 0xd7, 0x8f, 0xc0, 0x8c, 0x0b, 0xe8, 0xc6, 0x29, 0x0d, 0x85,
-	0x6f, 0x94, 0x24, 0x5d, 0xc4, 0xf7, 0xd1, 0x4d, 0x15, 0x11, 0x56, 0x98, 0x00, 0xcc, 0x99, 0xaa,
-	0x0e, 0xd1, 0xa6, 0xfc, 0xad, 0x0f, 0x5a, 0xe0, 0x5d, 0x34, 0x6d, 0xc6, 0x9f, 0x15, 0xae, 0x41,
-	0xa7, 0xa5, 0xea, 0x50, 0x5e, 0x3c, 0x97, 0xc5, 0x6d, 0x28, 0xd5, 0xa7, 0xbc, 0x68, 0x91, 0xe1,
-	0x75, 0x74, 0x43, 0xf7, 0xff, 0x18, 0xfa, 0x4f, 0x55, 0x55, 0x3f, 0xd5, 0x41, 0x9b, 0xf1, 0x53,
-	0x94, 0x91, 0xff, 0x36, 0xf9, 0xbb, 0x1e, 0x65, 0x85, 0x4f, 0xa0, 0x39, 0x36, 0x9b, 0xbf, 0x7c,
-	0xd7, 0xa3, 0xf5, 0x49, 0x67, 0xf0, 0x3f, 0xc3, 0x3f, 0x41, 0x59, 0x48, 0x95, 0xe6, 0xb1, 0xeb,
-	0xc1, 0xd8, 0x6e, 0xa8, 0x7e, 0x50, 0x5b, 0xdd, 0x11, 0x7f, 0x77, 0xc1, 0x54, 0xcf, 0xd0, 0x8b,
-	0x02, 0xc3, 0xbf, 0x40, 0xb9, 0x8b, 0x3c, 0xb1, 0xb9, 0xdd, 0xb2, 0x19, 0x2d, 0x94, 0xa1, 0x73,
-	0xbe, 0x2a, 0x2c, 0xd5, 0x17, 0x6e, 0x4b, 0xb2, 0x6e, 0xdb, 0xdc, 0xae, 0x4f, 0x8b, 0x3a, 0x51,
-	0xa5, 0xda, 0xe2, 0x1d, 0x94, 0x8f, 0xe6, 0x91, 0x86, 0x58, 0x02, 0x88, 0x39, 0x09, 0xb1, 0x29,
-	0x6c, 0x11, 0x10, 0xa0, 0x94, 0x95, 0xaa, 0xfd, 0x37, 0x1f, 0xdf, 0xbc, 0x3e, 0x73, 0xe3, 0xf1,
-	0xbf, 0x36, 0x50, 0x56, 0x86, 0xb0, 0x41, 0x43, 0xd1, 0x1c, 0x6f, 0xa3, 0x5b, 0x7b, 0x94, 0xab,
-	0xb0, 0xce, 0x57, 0xe5, 0x84, 0xaf, 0xea, 0x09, 0x5f, 0xdd, 0x11, 0x13, 0xbe, 0x38, 0xa5, 0xd3,
-	0x42, 0xb6, 0x23, 0xd3, 0x7f, 0xf8, 0xf7, 0x7f, 0x7e, 0x98, 0xb8, 0x85, 0x6f, 0xc0, 0xba, 0x71,
-	0xfa, 0x08, 0xbf, 0x41, 0xb9, 0xe7, 0x2e, 0xe3, 0x66, 0x6e, 0xa5, 0xa1, 0xcd, 0x25, 0x25, 0x19,
-	0x23, 0x8b, 0x00, 0x9a, 0xc7, 0x39, 0x05, 0x5a, 0x73, 0x07, 0x48, 0x0d, 0x34, 0xbd, 0x47, 0x0d,
-	0x74, 0x8c, 0xaa, 0x6a, 0xc1, 0xd9, 0xdf, 0x2e, 0x26, 0x66, 0x2d, 0x59, 0x06, 0xbc, 0x02, 0x9e,
-	0x8f, 0xe1, 0xd5, 0xce, 0x5d, 0xe7, 0x7b, 0xdc, 0x40, 0x19, 0xa1, 0x79, 0x53, 0xe7, 0x62, 0x9a,
-	0xdc, 0xdc, 0x70, 0xfe, 0x32, 0x52, 0x00, 0x68, 0x8c, 0x67, 0x34, 0xf4, 0x20, 0xa1, 0xbb, 0x08,
-	0x0b, 0xd0, 0xe7, 0x66, 0x7a, 0xa6, 0x41, 0x2f, 0x8f, 0xcc, 0x72, 0x46, 0x56, 0x80, 0x67, 0x11,
-	0x2f, 0x68, 0x9e, 0xa1, 0xc9, 0x82, 0xdb, 0x68, 0x66, 0x8f, 0x9a, 0x6c, 0x86, 0x67, 0x46, 0x4f,
-	0x23, 0x72, 0x07, 0xf0, 0x97, 0x71, 0x39, 0x05, 0x5f, 0x3a, 0xca, 0x47, 0xf3, 0xb1, 0x31, 0x1d,
-	0x06, 0x21, 0x67, 0x06, 0x55, 0x39, 0x85, 0x0a, 0x5a, 0x92, 0x0a, 0x30, 0xdd, 0xc1, 0x64, 0x14,
-	0x53, 0xad, 0x07, 0xa8, 0xef, 0x2d, 0x34, 0x3b, 0x3c, 0x2a, 0x81, 0x82, 0x97, 0x46, 0x50, 0xec,
-	0x3b, 0xc5, 0xd2, 0x08, 0x33, 0x79, 0x02, 0x02, 0xaa, 0xf8, 0xfe, 0xe5, 0x02, 0x6a, 0xe7, 0xe2,
-	0xa7, 0x29, 0x86, 0xfe, 0x37, 0x0b, 0x2d, 0xec, 0xf8, 0x76, 0xcb, 0xa3, 0x63, 0xab, 0x49, 0x89,
-	0x39, 0xf9, 0x12, 0x84, 0x3c, 0x25, 0x1b, 0xe3, 0x08, 0xa9, 0x51, 0x10, 0x81, 0xff, 0x6e, 0xa1,
-	0xc2, 0xb6, 0xcb, 0x7e, 0x54, 0x41, 0x3f, 0x07, 0x41, 0x5f, 0x90, 0x27, 0x63, 0x09, 0x72, 0xa4,
-	0x0a, 0xec, 0x24, 0x24, 0xc7, 0xae, 0x17, 0x9c, 0x99, 0xc9, 0x81, 0xab, 0xd1, 0x9d, 0x18, 0xec,
-	0x57, 0x4c, 0x89, 0x63, 0xc0, 0xfa, 0xa3, 0x85, 0xca, 0xaf, 0x7a, 0x8e, 0xcd, 0x69, 0x8c, 0xe8,
-	0x25, 0xc8, 0x28, 0xc7, 0x08, 0xa0, 0x5e, 0xf6, 0x49, 0x1d, 0xfa, 0x03, 0x90, 0xf0, 0x19, 0xb9,
-	0x82, 0x84, 0x67, 0x56, 0x05, 0xff, 0xc9, 0x42, 0x4b, 0x09, 0x2a, 0x5e, 0x50, 0x4e, 0x43, 0x29,
-	0xa3, 0x64, 0xc8, 0x00, 0xc3, 0x8b, 0xc0, 0xb9, 0x44, 0x45, 0x15, 0x54, 0xac, 0x93, 0xdb, 0x23,
-	0x55, 0x74, 0x05, 0x18, 0xc8, 0xe8, 0xa0, 0x85, 0x98, 0xcb, 0x81, 0xca, 0xf4, 0x79, 0x3e, 0xae,
-	0x85, 0x91, 0x7b, 0xc0, 0xf5, 0x29, 0xbe, 0x0a, 0x17, 0xe6, 0xa8, 0x94, 0x18, 0xdb, 0xbd, 0x30,
-	0xe8, 0xf7, 0x4c, 0xb2, 0x85, 0x98, 0xff, 0x65, 0x23, 0xf2, 0x10, 0x08, 0x2b, 0x78, 0xfd, 0x52,
-	0x17, 0x37, 0x3b, 0x12, 0xf6, 0x07, 0x0b, 0xad, 0xa5, 0xc4, 0x1a, 0x30, 0xa5, 0xa7, 0xd7, 0x92,
-	0x09, 0xaf, 0x12, 0xf5, 0x0d, 0x90, 0xf4, 0x80, 0x5c, 0x59, 0x92, 0x70, 0xfa, 0x01, 0x9a, 0x14,
-	0xbe, 0xb8, 0x6c, 0x45, 0x9f, 0x36, 0x0f, 0x12, 0x8c, 0x2c, 0x00, 0x59, 0x0e, 0x4f, 0x6b, 0x32,
-	0xbd, 0x74, 0x1f, 0xa0, 0xec, 0x05, 0xe0, 0xbe, 0x93, 0x0e, 0x39, 0x79, 0xe1, 0xe6, 0x84, 0x4d,
-	0x52, 0xc2, 0xb9, 0x0e, 0xc3, 0xaf, 0xd0, 0x4c, 0x9d, 0xb6, 0x03, 0xbf, 0xed, 0x7a, 0x54, 0xcb,
-	0x8c, 0xf6, 0x4d, 0xf5, 0x47, 0x19, 0x30, 0xe7, 0x49, 0x1c, 0x53, 0x0c, 0x7c, 0x07, 0x0e, 0x08,
-	0x09, 0x7b, 0xcb, 0xd0, 0x11, 0x4b, 0xc3, 0xe0, 0xd9, 0xa1, 0x91, 0xca, 0x4d, 0xe4, 0x1b, 0x94,
-	0xd9, 0x0a, 0xa9, 0xcd, 0x95, 0x34, 0x3c, 0xd4, 0x3b, 0x86, 0x56, 0x04, 0xb4, 0x59, 0x32, 0xec,
-	0x37, 0x21, 0xe9, 0x35, 0xca, 0xc8, 0x45, 0x39, 0x41, 0x55, 0xda, 0x20, 0x6f, 0x03, 0xde, 0x12,
-	0x29, 0x25, 0xa9, 0xd3, 0xcb, 0xeb, 0x6f, 0x50, 0x56, 0xad, 0xae, 0x63, 0x20, 0xab, 0x4d, 0x94,
-	0x94, 0x13, 0x91, 0xf5, 0x3a, 0xf9, 0x1a, 0x65, 0xea, 0xb4, 0x15, 0x04, 0xfc, 0x47, 0xd3, 0x1c,
-	0x02, 0x9c, 0x00, 0xde, 0xa6, 0x1e, 0xe5, 0x1f, 0xe0, 0x8c, 0x4a, 0x32, 0xb0, 0x03, 0x70, 0xb8,
-	0x85, 0x72, 0xbb, 0x41, 0xd8, 0xa6, 0x63, 0xa3, 0x7f, 0x0e, 0xe8, 0xb7, 0x2b, 0x6b, 0x89, 0xe8,
-	0xc7, 0x02, 0xb3, 0xa9, 0x38, 0xde, 0xa2, 0xec, 0x76, 0x70, 0xe6, 0x7b, 0x81, 0xed, 0xec, 0x77,
-	0xed, 0x0e, 0xc5, 0x73, 0x3a, 0x0d, 0xa0, 0xa8, 0x6d, 0xc5, 0x39, 0x4d, 0x7b, 0xd0, 0xa3, 0x21,
-	0x5c, 0x51, 0xeb, 0x94, 0xf5, 0xc8, 0xcf, 0x80, 0xe9, 0x21, 0xb9, 0x97, 0xc8, 0xe4, 0x0a, 0x88,
-	0xa6, 0xa3, 0x30, 0x58, 0xed, 0xdc, 0xb7, 0xbb, 0xf4, 0xfb, 0x67, 0x56, 0xe5, 0xfd, 0x84, 0x85,
-	0xff, 0x6c, 0xa1, 0xf9, 0x3d, 0xca, 0x0d, 0x1a, 0x79, 0x59, 0x4a, 0xd7, 0x90, 0x54, 0x4d, 0xbe,
-	0x02, 0x0d, 0x4f, 0xf0, 0xe3, 0x31, 0x34, 0xd4, 0x18, 0x30, 0x09, 0x1d, 0x6f, 0xe1, 0x04, 0x67,
-	0x40, 0x8e, 0x29, 0xe0, 0x0b, 0xb9, 0x9c, 0xe1, 0x71, 0x9c, 0x20, 0x98, 0x5d, 0x79, 0x54, 0x35,
-	0xc0, 0xd8, 0x50, 0x80, 0x93, 0x08, 0x19, 0xa9, 0x01, 0xe3, 0x5d, 0x7c, 0xe7, 0x2a, 0x8c, 0x82,
-	0xea, 0x1c, 0xe5, 0xb7, 0xc4, 0xc9, 0xdb, 0xbb, 0xe2, 0x38, 0x13, 0x83, 0xad, 0xc6, 0x59, 0x19,
-	0x77, 0x9c, 0x7f, 0xb5, 0x50, 0x7e, 0xb3, 0xcd, 0xdd, 0x53, 0x9b, 0x53, 0x20, 0x92, 0xdb, 0xc3,
-	0x98, 0xec, 0xbb, 0xc0, 0xfe, 0x15, 0xf9, 0xe9, 0x38, 0x61, 0x96, 0xd5, 0x7d, 0xe0, 0x53, 0x79,
-	0xf7, 0x17, 0x0b, 0xe5, 0xea, 0xf4, 0x94, 0x86, 0xfc, 0xff, 0xa2, 0x25, 0x04, 0x6a, 0xa5, 0xe5,
-	0xbd, 0x85, 0xe6, 0x8c, 0xe9, 0xf7, 0x32, 0x50, 0xd3, 0x9c, 0x98, 0xab, 0xb1, 0xa1, 0xaa, 0x4e,
-	0x7f, 0xdf, 0xa7, 0x8c, 0x17, 0x4b, 0x09, 0x6d, 0x84, 0xbc, 0xc0, 0x67, 0x54, 0x9f, 0x69, 0xf0,
-	0xdd, 0x61, 0x89, 0x20, 0x83, 0xd5, 0xb4, 0xbc, 0xa6, 0x2c, 0xe3, 0x33, 0x34, 0xa5, 0xa7, 0x81,
-	0x9a, 0x85, 0xc5, 0x44, 0xf8, 0x2b, 0x50, 0xdf, 0x4f, 0xcb, 0x4e, 0x45, 0x2d, 0x7f, 0x9a, 0x72,
-	0x0a, 0x8a, 0x78, 0x2c, 0x6e, 0xb6, 0x82, 0x41, 0x38, 0x3a, 0xa1, 0xed, 0x5c, 0xf8, 0xe1, 0x83,
-	0x45, 0x6c, 0xa4, 0x4d, 0x4a, 0x25, 0xc2, 0x16, 0x94, 0xcd, 0xbe, 0xa4, 0xd3, 0x4e, 0x38, 0x42,
-	0x99, 0x3d, 0xca, 0x0f, 0xfc, 0xfe, 0xbe, 0x2c, 0x47, 0xe7, 0x62, 0x4e, 0xb3, 0x0d, 0xcc, 0xe4,
-	0x33, 0xe0, 0x58, 0xc3, 0x2b, 0x89, 0x69, 0x10, 0xf8, 0x7d, 0x8d, 0x7b, 0x8e, 0xb2, 0xc6, 0x04,
-	0xf8, 0xf0, 0x61, 0x3d, 0x02, 0xca, 0x7b, 0x24, 0x2d, 0xac, 0xb6, 0xa2, 0x51, 0xcc, 0x62, 0xb3,
-	0x3e, 0x43, 0x93, 0x5b, 0x41, 0xb7, 0xeb, 0xf2, 0xff, 0x91, 0x5a, 0x2e, 0x3a, 0x9f, 0x93, 0xb4,
-	0xb0, 0xb6, 0x81, 0x24, 0x42, 0x7c, 0x88, 0xa6, 0x2f, 0x0e, 0x58, 0xf1, 0xfb, 0x6a, 0x56, 0x93,
-	0xc9, 0x0b, 0x2a, 0x01, 0xf8, 0x32, 0x2e, 0x26, 0x3a, 0x53, 0x5e, 0x4c, 0xdf, 0xa0, 0x7c, 0x04,
-	0xb1, 0xbb, 0x15, 0xf8, 0xc7, 0x6e, 0x27, 0x25, 0x4c, 0x03, 0xf3, 0x25, 0x61, 0xea, 0x75, 0x9b,
-	0x6d, 0x85, 0xe3, 0xa3, 0x39, 0xb9, 0x1c, 0x0c, 0x13, 0xc4, 0x41, 0x53, 0xf7, 0x5e, 0x75, 0xa9,
-	0x22, 0x97, 0x91, 0x09, 0x07, 0xbd, 0x8a, 0x3a, 0xe8, 0x6a, 0x77, 0xb6, 0xd1, 0x5e, 0x92, 0x77,
-	0x35, 0x8a, 0x66, 0x4d, 0xd8, 0x71, 0xae, 0x0b, 0xeb, 0x40, 0x40, 0xf0, 0x6a, 0x2a, 0x81, 0xbe,
-	0x26, 0x7c, 0x1b, 0x55, 0x2f, 0x1f, 0xe9, 0xd2, 0x4e, 0xd0, 0xf9, 0xf8, 0xeb, 0x1e, 0x4b, 0x3b,
-	0xae, 0xca, 0x67, 0x41, 0x5c, 0x47, 0xd9, 0xc1, 0xa9, 0x57, 0xb4, 0x1f, 0xf2, 0x4c, 0x0c, 0x8f,
-	0xac, 0x01, 0x5c, 0x09, 0x2f, 0x26, 0xc1, 0xc9, 0x23, 0xf0, 0x2e, 0x9a, 0x69, 0xf0, 0x90, 0xda,
-	0xdd, 0x43, 0xbb, 0xfd, 0x3b, 0xca, 0xd9, 0x41, 0x9f, 0xe3, 0x79, 0xc3, 0x11, 0xd2, 0x70, 0xd0,
-	0xe7, 0xa9, 0xf1, 0xfd, 0x68, 0xdd, 0xc2, 0x3b, 0x70, 0xd0, 0xa7, 0xee, 0x29, 0x55, 0x40, 0xfb,
-	0xfe, 0x88, 0xb7, 0xb6, 0x38, 0xfe, 0xbe, 0x4f, 0x3e, 0x7a, 0x68, 0xe1, 0x5f, 0xa1, 0xbc, 0x82,
-	0xd9, 0x3a, 0xb1, 0xfd, 0x0e, 0x85, 0x37, 0xcc, 0x74, 0x27, 0x16, 0x0c, 0xa4, 0x48, 0x17, 0x00,
-	0x7b, 0x83, 0x72, 0xf2, 0x78, 0x1f, 0x79, 0x09, 0xc5, 0x09, 0xaf, 0xa3, 0xc5, 0x84, 0x3a, 0xb2,
-	0x0a, 0xbe, 0x2b, 0x92, 0x39, 0xed, 0x3b, 0xe3, 0xa9, 0x55, 0xa6, 0xaa, 0xd8, 0x1e, 0xa2, 0xd8,
-	0xe6, 0x4d, 0x37, 0x86, 0x99, 0x90, 0xaa, 0x06, 0xa8, 0x8c, 0x48, 0x0b, 0xe5, 0xe4, 0x8c, 0xfb,
-	0x10, 0xd5, 0x9f, 0x02, 0xc1, 0x4a, 0x71, 0x04, 0x81, 0x90, 0xde, 0x46, 0x39, 0x79, 0x82, 0xbe,
-	0x8c, 0x23, 0x2d, 0xe4, 0x6a, 0x20, 0x95, 0x51, 0x03, 0xf9, 0x0e, 0xcd, 0x88, 0xc9, 0x10, 0x75,
-	0xc0, 0x88, 0xd9, 0x90, 0xe0, 0xad, 0x25, 0x20, 0x59, 0xc0, 0xc9, 0x21, 0xc0, 0xcf, 0xe1, 0x12,
-	0x98, 0xb0, 0x2d, 0x4d, 0x19, 0x07, 0x17, 0xa6, 0x6f, 0x16, 0xb8, 0x94, 0x7e, 0x34, 0x61, 0xf8,
-	0xd7, 0xe8, 0x66, 0x83, 0x7a, 0xc7, 0x2f, 0x29, 0xe3, 0x06, 0x58, 0x41, 0x83, 0x69, 0xeb, 0x60,
-	0xf1, 0xbf, 0x0b, 0xb0, 0xab, 0x64, 0x39, 0x11, 0x96, 0x51, 0xef, 0x18, 0x3e, 0xa2, 0xe0, 0x23,
-	0x38, 0x4d, 0x1b, 0x2f, 0xea, 0xc3, 0x6f, 0x22, 0xb1, 0x27, 0xf7, 0xf8, 0xd4, 0x15, 0x89, 0x2e,
-	0xda, 0xa9, 0xc7, 0x10, 0xb7, 0x85, 0xbf, 0x45, 0x78, 0x8f, 0xf2, 0xa1, 0x67, 0x76, 0x03, 0x39,
-	0xf9, 0x25, 0x3e, 0xee, 0x0f, 0x13, 0x1b, 0x1e, 0xf5, 0x31, 0x43, 0xd9, 0x86, 0xdb, 0xed, 0x7b,
-	0x36, 0xa7, 0xd0, 0x1f, 0x97, 0x07, 0x8e, 0x88, 0x56, 0xeb, 0x6d, 0x32, 0xe5, 0x54, 0x18, 0x7b,
-	0xcc, 0x32, 0x7d, 0xa4, 0x90, 0x9a, 0x02, 0x49, 0xe4, 0xe5, 0x0b, 0x84, 0xe4, 0x25, 0x1a, 0xde,
-	0x0e, 0x33, 0xd1, 0xdd, 0x30, 0x35, 0x15, 0xd5, 0xeb, 0x03, 0x99, 0x12, 0xf0, 0x17, 0xbd, 0xd5,
-	0xfb, 0x88, 0xba, 0x3a, 0x8f, 0x81, 0x77, 0x71, 0xc9, 0x3f, 0x7d, 0x54, 0x8b, 0x74, 0x17, 0x80,
-	0xdf, 0xa1, 0x49, 0x31, 0xe5, 0xdf, 0xf2, 0x23, 0xdb, 0xeb, 0x53, 0xbc, 0x58, 0x1d, 0x7c, 0x8e,
-	0xab, 0x42, 0x4d, 0xa3, 0x47, 0xdb, 0xee, 0xb1, 0x4b, 0xc3, 0xe2, 0x42, 0xc4, 0x54, 0xa7, 0xbc,
-	0x1f, 0xfa, 0xd0, 0x80, 0x91, 0x12, 0xc0, 0xcf, 0xe1, 0xbc, 0xf6, 0x48, 0x14, 0xf0, 0x35, 0x9a,
-	0x6c, 0x44, 0x8a, 0xf9, 0x18, 0x3e, 0x4d, 0xd7, 0x1d, 0x03, 0x8e, 0x22, 0x39, 0x28, 0xdf, 0xe0,
-	0x76, 0xc8, 0x0f, 0xba, 0x6d, 0x57, 0x24, 0xb1, 0x38, 0x7a, 0x05, 0x3e, 0x56, 0x09, 0xa2, 0x6b,
-	0x75, 0x30, 0xb1, 0xac, 0x36, 0xb2, 0x5d, 0xcd, 0x78, 0x32, 0x78, 0xf6, 0x67, 0x02, 0xaf, 0x39,
-	0xf8, 0x56, 0xf8, 0xcc, 0xaa, 0x7c, 0xed, 0xa1, 0x7c, 0x10, 0x76, 0x60, 0x4d, 0x6e, 0x07, 0xa1,
-	0xa3, 0xbe, 0x80, 0x7c, 0x9d, 0x91, 0x5f, 0x68, 0x0e, 0xe1, 0xeb, 0xe2, 0x6f, 0xab, 0x1d, 0x97,
-	0x9f, 0xf4, 0x5b, 0x22, 0x5f, 0x6a, 0xba, 0xa5, 0xfa, 0x0e, 0xfc, 0x40, 0x7f, 0x15, 0x7e, 0x5a,
-	0xeb, 0x04, 0xaa, 0xee, 0x1f, 0x13, 0xf3, 0x07, 0x1a, 0xef, 0x28, 0xfa, 0xc1, 0xe7, 0x70, 0xa2,
-	0x75, 0x1d, 0xda, 0x6f, 0xfc, 0x37, 0x00, 0x00, 0xff, 0xff, 0x37, 0x95, 0xcc, 0x79, 0x55, 0x1e,
-	0x00, 0x00,
+	// 2265 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xeb, 0x6e, 0x1b, 0xc7,
+	0x15, 0xce, 0x2a, 0x89, 0x2f, 0xa3, 0x2b, 0x87, 0xba, 0x50, 0x24, 0x65, 0x4b, 0xe3, 0x9b, 0x4c,
+	0xdb, 0x4b, 0x5f, 0x93, 0x36, 0x69, 0x50, 0x38, 0xba, 0x55, 0x89, 0x0d, 0x09, 0xa4, 0x2d, 0xb7,
+	0x45, 0x1c, 0x62, 0xc9, 0x1d, 0xd2, 0x8b, 0x2c, 0x77, 0xd9, 0x9d, 0xa1, 0x64, 0x41, 0xf0, 0x9f,
+	0xb6, 0x01, 0x5c, 0x14, 0x45, 0x7f, 0xe4, 0x2d, 0xfa, 0xa3, 0xcf, 0xd0, 0x77, 0xe8, 0x2b, 0xf4,
+	0x41, 0x8a, 0x39, 0x33, 0x43, 0xee, 0x95, 0x22, 0xdd, 0x00, 0xfd, 0x63, 0x6a, 0xe6, 0x9c, 0xf9,
+	0xbe, 0x6f, 0xce, 0x9c, 0xb9, 0xae, 0x51, 0xf1, 0xd8, 0x77, 0xf9, 0x1b, 0xab, 0xd1, 0x0b, 0x7c,
+	0xee, 0xb3, 0xaa, 0x2c, 0x99, 0x50, 0xc2, 0x17, 0x64, 0xa9, 0x58, 0xee, 0xf8, 0x7e, 0xc7, 0xa5,
+	0x55, 0xab, 0xe7, 0x54, 0x2d, 0xcf, 0xf3, 0xb9, 0xc5, 0x1d, 0xdf, 0x63, 0xd2, 0xab, 0x58, 0x52,
+	0x56, 0x28, 0x35, 0xfb, 0xed, 0x2a, 0xed, 0xf6, 0xf8, 0xa9, 0x32, 0xc6, 0xe0, 0x5b, 0x7e, 0xb7,
+	0xeb, 0x7b, 0xe9, 0xb6, 0x37, 0xd4, 0x72, 0xf9, 0x1b, 0x65, 0x23, 0x51, 0x9b, 0xeb, 0x77, 0x9c,
+	0x96, 0xe5, 0x36, 0x6c, 0x7a, 0xec, 0xb4, 0x68, 0x7a, 0xfb, 0x88, 0xad, 0x14, 0xb5, 0x59, 0xb6,
+	0xd5, 0xe3, 0x34, 0x50, 0xc6, 0xab, 0x51, 0xa3, 0xdf, 0xa3, 0x5e, 0xdb, 0xf5, 0x4f, 0x1a, 0x0f,
+	0x1e, 0xa5, 0x23, 0xd3, 0x63, 0xea, 0x71, 0xdd, 0xdd, 0x2b, 0x31, 0xdb, 0x5b, 0x4e, 0x3d, 0x16,
+	0x0a, 0xc7, 0xad, 0x78, 0x40, 0x9d, 0x5e, 0x83, 0x9d, 0x32, 0x4e, 0xbb, 0xa2, 0xaa, 0xed, 0xb8,
+	0x5a, 0xe2, 0x8d, 0x14, 0xc7, 0x3e, 0xa3, 0x41, 0xcc, 0x2d, 0x2e, 0xb6, 0xdb, 0x72, 0x1a, 0x5d,
+	0xa7, 0xd9, 0xb0, 0x9b, 0xca, 0x61, 0x23, 0xc5, 0xc1, 0x72, 0xad, 0xa0, 0x3b, 0x74, 0x59, 0x4b,
+	0x71, 0xe1, 0x94, 0x71, 0x69, 0x26, 0xaf, 0xd1, 0xcc, 0x96, 0x1f, 0xd0, 0x7d, 0x8f, 0x71, 0xcb,
+	0x6b, 0x51, 0x7c, 0x15, 0x4d, 0x3b, 0xea, 0xef, 0x86, 0x63, 0x17, 0x8c, 0x75, 0x63, 0xf3, 0x72,
+	0x0d, 0xe9, 0xaa, 0x7d, 0x1b, 0xdf, 0x45, 0x17, 0xe4, 0x68, 0x15, 0xa6, 0xd6, 0x8d, 0xcd, 0xe9,
+	0x87, 0x8b, 0xa6, 0x1a, 0xbc, 0xdf, 0xc0, 0x4f, 0x9d, 0x5b, 0xbc, 0xcf, 0x6a, 0xca, 0x87, 0x7c,
+	0x89, 0x66, 0xc3, 0xf0, 0x0c, 0x57, 0xd0, 0xa7, 0x0e, 0xa7, 0x5d, 0x56, 0x30, 0xd6, 0x3f, 0x86,
+	0xd6, 0x2a, 0xeb, 0xc2, 0x5e, 0x35, 0xe9, 0x42, 0xfe, 0xf5, 0x31, 0xba, 0x70, 0x04, 0x66, 0x5c,
+	0x40, 0x17, 0x8f, 0x69, 0x20, 0x62, 0xad, 0x24, 0xe9, 0x22, 0xbe, 0x8b, 0x2e, 0xa9, 0x11, 0x66,
+	0x85, 0x29, 0xc0, 0x5c, 0x30, 0xf5, 0x90, 0x3f, 0x95, 0xbf, 0xb5, 0x81, 0x07, 0xde, 0x45, 0xf3,
+	0xd1, 0x7c, 0x62, 0x85, 0x8f, 0xa1, 0xd1, 0x9a, 0x19, 0xcb, 0xb3, 0x67, 0xb2, 0xb8, 0x0d, 0xa5,
+	0xda, 0x9c, 0x1b, 0x2e, 0x32, 0xbc, 0x89, 0x2e, 0xea, 0xf6, 0x9f, 0x40, 0xfb, 0x39, 0x53, 0xb5,
+	0x53, 0x0d, 0xb4, 0x19, 0x3f, 0x41, 0x33, 0xf2, 0xcf, 0x06, 0x3f, 0xed, 0x51, 0x56, 0xf8, 0x14,
+	0xdc, 0x71, 0xd4, 0xfd, 0xc5, 0x69, 0x8f, 0xd6, 0xa6, 0xed, 0xc1, 0xdf, 0x0c, 0x7f, 0x8e, 0x66,
+	0x21, 0xf5, 0x1a, 0x6d, 0xc7, 0x85, 0xbe, 0x5d, 0x54, 0xed, 0xa0, 0xd6, 0xdc, 0x11, 0xff, 0xee,
+	0x82, 0xa9, 0x36, 0x43, 0x87, 0x05, 0x86, 0x7f, 0x8d, 0x72, 0xc3, 0x3c, 0xb1, 0xb8, 0xd5, 0xb4,
+	0x18, 0x2d, 0x94, 0xa1, 0x71, 0xde, 0x14, 0x16, 0xf3, 0xb9, 0xd3, 0x94, 0xac, 0xdb, 0x16, 0xb7,
+	0x6a, 0xf3, 0xa2, 0x4e, 0x54, 0x29, 0x5f, 0xbc, 0x83, 0xf2, 0xe1, 0x3c, 0xd2, 0x10, 0x6b, 0x00,
+	0xb1, 0x24, 0x21, 0x9e, 0x0a, 0x5b, 0x08, 0x04, 0x28, 0x65, 0xa5, 0xf2, 0xff, 0xe6, 0x93, 0x4b,
+	0x17, 0x16, 0x2e, 0x3e, 0xfc, 0xe7, 0xe7, 0x68, 0x56, 0x0e, 0x61, 0x9d, 0x06, 0xc2, 0x1d, 0x6f,
+	0xa3, 0xcb, 0x7b, 0x94, 0xab, 0x61, 0x5d, 0x36, 0xe5, 0x02, 0x62, 0xea, 0x05, 0xc4, 0xdc, 0x11,
+	0x0b, 0x48, 0x71, 0x4e, 0xa7, 0x85, 0xf4, 0x23, 0xf3, 0x7f, 0xfc, 0xf7, 0x7f, 0x7e, 0x9a, 0xba,
+	0x8c, 0x2f, 0xc2, 0x3a, 0x74, 0xfc, 0x00, 0xbf, 0x46, 0xb9, 0x67, 0x0e, 0xe3, 0xd1, 0xdc, 0xca,
+	0x42, 0x5b, 0x4a, 0x4b, 0x32, 0x46, 0x56, 0x01, 0x34, 0x8f, 0x73, 0x0a, 0xb4, 0xea, 0x0c, 0x90,
+	0xea, 0x68, 0x7e, 0x8f, 0x46, 0xd0, 0x31, 0x32, 0xd5, 0x02, 0xb6, 0xbf, 0x5d, 0x4c, 0xcd, 0x5a,
+	0x72, 0x05, 0xf0, 0x0a, 0x78, 0x39, 0x81, 0x57, 0x3d, 0x73, 0xec, 0x77, 0xb8, 0x8e, 0x66, 0x84,
+	0xe6, 0xa7, 0x3a, 0x17, 0xb3, 0xe4, 0xe6, 0xe2, 0xf9, 0xcb, 0x48, 0x01, 0xa0, 0x31, 0x5e, 0xd0,
+	0xd0, 0x83, 0x84, 0xee, 0x22, 0x2c, 0x40, 0x9f, 0x45, 0xd3, 0x33, 0x0b, 0xfa, 0xca, 0xc8, 0x2c,
+	0x67, 0xe4, 0x2a, 0xf0, 0xac, 0xe2, 0x15, 0xcd, 0x13, 0x9b, 0x2c, 0xb8, 0x85, 0x16, 0xf6, 0x68,
+	0x94, 0x2d, 0x12, 0x99, 0xd1, 0xd3, 0x88, 0x5c, 0x07, 0xfc, 0x2b, 0xb8, 0x9c, 0x81, 0x2f, 0x03,
+	0xe5, 0xa1, 0xe5, 0x44, 0x9f, 0x0e, 0xfd, 0x80, 0xb3, 0x08, 0x55, 0x39, 0x83, 0x0a, 0x3c, 0x49,
+	0x05, 0x98, 0xae, 0x63, 0x32, 0x8a, 0xa9, 0xda, 0x03, 0xd4, 0xf7, 0x06, 0x5a, 0x8c, 0xf7, 0x4a,
+	0xa0, 0xe0, 0xb5, 0x11, 0x14, 0xfb, 0x76, 0xb1, 0x34, 0xc2, 0x4c, 0x1e, 0x83, 0x00, 0x13, 0xdf,
+	0x3d, 0x5f, 0x40, 0xf5, 0x4c, 0xfc, 0x34, 0x44, 0xd7, 0xff, 0x66, 0xa0, 0x95, 0x1d, 0xcf, 0x6a,
+	0xba, 0x74, 0x62, 0x35, 0x19, 0x63, 0x4e, 0xbe, 0x04, 0x21, 0x4f, 0xc8, 0xa3, 0x49, 0x84, 0x54,
+	0x29, 0x88, 0xc0, 0x7f, 0x37, 0x50, 0x61, 0xdb, 0x61, 0x3f, 0xab, 0xa0, 0x5f, 0x81, 0xa0, 0xcf,
+	0xc8, 0xe3, 0x89, 0x04, 0xd9, 0x52, 0x05, 0xb6, 0x53, 0x92, 0x63, 0xd7, 0xf5, 0x4f, 0xa2, 0xc9,
+	0x81, 0xcd, 0xf0, 0xce, 0x0e, 0xf6, 0x31, 0x53, 0xa2, 0x0d, 0x58, 0x7f, 0x32, 0x50, 0xf9, 0x65,
+	0xcf, 0xb6, 0x38, 0x4d, 0x10, 0xbd, 0x00, 0x19, 0xe5, 0x04, 0x01, 0xd4, 0xcb, 0x36, 0x99, 0x5d,
+	0xbf, 0x07, 0x12, 0x6e, 0x91, 0x31, 0x24, 0x7c, 0x61, 0x54, 0xf0, 0x9f, 0x0d, 0xb4, 0x96, 0xa2,
+	0xe2, 0x39, 0xe5, 0x34, 0x90, 0x32, 0x4a, 0x11, 0x19, 0x60, 0x78, 0xee, 0xdb, 0xe7, 0xa8, 0x30,
+	0x41, 0xc5, 0x26, 0xb9, 0x36, 0x52, 0x45, 0x57, 0x80, 0x81, 0x8c, 0x0e, 0x5a, 0x49, 0x84, 0x1c,
+	0xa8, 0xa2, 0x31, 0xcf, 0x27, 0xb5, 0x30, 0x72, 0x07, 0xb8, 0x6e, 0xe0, 0x71, 0xb8, 0x30, 0x47,
+	0xa5, 0xd4, 0xb1, 0xdd, 0x0b, 0xfc, 0x7e, 0x2f, 0x4a, 0xb6, 0x92, 0x88, 0xbf, 0x74, 0x22, 0xf7,
+	0x81, 0xb0, 0x82, 0x37, 0xcf, 0x0d, 0x71, 0xa3, 0x23, 0x61, 0x7f, 0x32, 0xd0, 0x46, 0xc6, 0x58,
+	0x03, 0xa6, 0x8c, 0xf4, 0x46, 0x3a, 0xe1, 0x38, 0xa3, 0xfe, 0x08, 0x24, 0xdd, 0x23, 0x63, 0x4b,
+	0x12, 0x41, 0x3f, 0x40, 0xd3, 0x22, 0x16, 0xe7, 0xad, 0xe8, 0xf3, 0xd1, 0x83, 0x04, 0x23, 0x2b,
+	0x40, 0x96, 0xc3, 0xf3, 0x9a, 0x4c, 0x2f, 0xdd, 0x07, 0x68, 0x76, 0x08, 0xb8, 0x6f, 0x67, 0x43,
+	0x4e, 0x0f, 0xc3, 0x9c, 0xb2, 0x49, 0x4a, 0x38, 0xc7, 0x66, 0xf8, 0x25, 0x5a, 0xa8, 0xd1, 0x96,
+	0xef, 0xb5, 0x1c, 0x97, 0x6a, 0x99, 0xe1, 0xb6, 0x99, 0xf1, 0x28, 0x03, 0xe6, 0x32, 0x49, 0x62,
+	0x8a, 0x8e, 0xef, 0xc0, 0x01, 0x21, 0x65, 0x6f, 0x89, 0x1d, 0xb1, 0x34, 0x0c, 0x5e, 0x8c, 0xf5,
+	0x54, 0x6e, 0x22, 0xdf, 0xa0, 0x99, 0xad, 0x80, 0x5a, 0x5c, 0x49, 0xc3, 0xb1, 0xd6, 0x09, 0xb4,
+	0x22, 0xa0, 0x2d, 0x92, 0x78, 0xdc, 0x84, 0xa4, 0x57, 0x68, 0x46, 0x2e, 0xca, 0x29, 0xaa, 0xb2,
+	0x3a, 0x79, 0x0d, 0xf0, 0xd6, 0x48, 0x29, 0x4d, 0x9d, 0x5e, 0x5e, 0x7f, 0x87, 0x66, 0xd5, 0xea,
+	0x3a, 0x01, 0xb2, 0xda, 0x44, 0x49, 0x39, 0x15, 0x59, 0xaf, 0x93, 0xaf, 0xd0, 0x4c, 0x8d, 0x36,
+	0x7d, 0x9f, 0xff, 0x6c, 0x9a, 0x03, 0x80, 0x13, 0xc0, 0xdb, 0xd4, 0xa5, 0xfc, 0x03, 0x82, 0x51,
+	0x49, 0x07, 0xb6, 0x01, 0x0e, 0x37, 0x51, 0x6e, 0xd7, 0x0f, 0x5a, 0x74, 0x62, 0xf4, 0xdb, 0x80,
+	0x7e, 0xad, 0xb2, 0x91, 0x8a, 0xde, 0x16, 0x98, 0x0d, 0xc5, 0xf1, 0x16, 0xcd, 0x6e, 0xfb, 0x27,
+	0x9e, 0xeb, 0x5b, 0xf6, 0x7e, 0xd7, 0xea, 0x50, 0xbc, 0xa4, 0xd3, 0x00, 0x8a, 0xda, 0x56, 0x5c,
+	0xd2, 0xb4, 0x07, 0x3d, 0x1a, 0xc0, 0x95, 0xb7, 0x46, 0x59, 0x8f, 0xfc, 0x12, 0x98, 0xee, 0x93,
+	0x3b, 0xa9, 0x4c, 0x8e, 0x80, 0x68, 0xd8, 0x0a, 0x83, 0x55, 0xcf, 0x3c, 0xab, 0x4b, 0xdf, 0x7d,
+	0x61, 0x54, 0xde, 0x4f, 0x19, 0xf8, 0x47, 0x03, 0x2d, 0xef, 0x51, 0x1e, 0xa1, 0x91, 0x97, 0xa5,
+	0x6c, 0x0d, 0x69, 0xd5, 0xe4, 0x2b, 0xd0, 0xf0, 0x18, 0x3f, 0x9c, 0x40, 0x43, 0x95, 0x01, 0x93,
+	0xd0, 0xf1, 0x16, 0x4e, 0x70, 0x11, 0xc8, 0x09, 0x05, 0x7c, 0x26, 0x97, 0x33, 0x3c, 0x49, 0x10,
+	0x04, 0xb3, 0x23, 0x8f, 0xaa, 0x11, 0x30, 0x16, 0x1b, 0xe0, 0x34, 0x42, 0x46, 0xaa, 0xc0, 0x78,
+	0x13, 0x5f, 0x1f, 0x87, 0x51, 0x50, 0x9d, 0xa1, 0xfc, 0x96, 0x38, 0x79, 0xbb, 0x63, 0xf6, 0x33,
+	0x75, 0xb0, 0x55, 0x3f, 0x2b, 0x93, 0xf6, 0xf3, 0xaf, 0x06, 0xca, 0x3f, 0x6d, 0x71, 0xe7, 0xd8,
+	0xe2, 0x14, 0x88, 0xe4, 0xf6, 0x30, 0x21, 0xfb, 0x2e, 0xb0, 0x7f, 0x45, 0x7e, 0x31, 0xc9, 0x30,
+	0xcb, 0xea, 0x3e, 0xf0, 0xa9, 0xbc, 0xfb, 0x8b, 0x81, 0x72, 0x35, 0x7a, 0x4c, 0x03, 0xfe, 0x7f,
+	0xd1, 0x12, 0x00, 0xb5, 0xd2, 0xf2, 0xde, 0x40, 0x4b, 0x91, 0xe9, 0xf7, 0xc2, 0x57, 0xd3, 0x9c,
+	0x44, 0x57, 0xe3, 0x88, 0xaa, 0x1a, 0xfd, 0x43, 0x9f, 0x32, 0x5e, 0x2c, 0xa5, 0xf8, 0x08, 0x79,
+	0xbe, 0xc7, 0xa8, 0x3e, 0xd3, 0xe0, 0x9b, 0x71, 0x89, 0x20, 0x83, 0x55, 0xb5, 0xbc, 0x86, 0x2c,
+	0xe3, 0x13, 0x34, 0xa7, 0xa7, 0x81, 0x9a, 0x85, 0xc5, 0x54, 0xf8, 0x31, 0xa8, 0xef, 0x66, 0x65,
+	0xa7, 0xa2, 0x96, 0x3f, 0x0d, 0x39, 0x05, 0xc5, 0x78, 0xac, 0x3e, 0x6d, 0xfa, 0x83, 0xe1, 0xe8,
+	0x04, 0x96, 0x3d, 0x8c, 0xc3, 0x07, 0x8b, 0x78, 0x94, 0x35, 0x29, 0x95, 0x08, 0x4b, 0x50, 0x36,
+	0xfa, 0x92, 0x4e, 0x07, 0xe1, 0x08, 0xcd, 0xec, 0x51, 0x7e, 0xe0, 0xf5, 0xf7, 0x65, 0x39, 0x3c,
+	0x17, 0x73, 0x9a, 0x6d, 0x60, 0x26, 0xb7, 0x80, 0x63, 0x03, 0x5f, 0x4d, 0x4d, 0x03, 0xdf, 0xeb,
+	0x6b, 0xdc, 0x33, 0x34, 0x1b, 0x99, 0x00, 0x1f, 0xde, 0xad, 0x07, 0x40, 0x79, 0x87, 0x64, 0x0d,
+	0xab, 0xa5, 0x68, 0x14, 0xb3, 0xd8, 0xac, 0x4f, 0xd0, 0xf4, 0x96, 0xdf, 0xed, 0x3a, 0xfc, 0x7f,
+	0xa4, 0x96, 0x8b, 0xce, 0x6d, 0x92, 0x35, 0xac, 0x2d, 0x20, 0x09, 0x11, 0x1f, 0xa2, 0xf9, 0xe1,
+	0x01, 0x2b, 0x79, 0x5f, 0x9d, 0xd5, 0x64, 0xf2, 0x82, 0x4a, 0x00, 0xbe, 0x8c, 0x8b, 0xa9, 0xc1,
+	0x94, 0x17, 0xd3, 0xd7, 0x28, 0x1f, 0x42, 0xec, 0x6e, 0xf9, 0x5e, 0xdb, 0xe9, 0x64, 0x0c, 0xd3,
+	0xc0, 0x7c, 0xce, 0x30, 0xf5, 0xba, 0x8d, 0x96, 0xc2, 0xf1, 0xd0, 0x92, 0x5c, 0x0e, 0xe2, 0x04,
+	0x49, 0xd0, 0xcc, 0xbd, 0x57, 0x5d, 0xaa, 0xc8, 0x79, 0x64, 0x22, 0x40, 0x2f, 0xc3, 0x01, 0x1a,
+	0xef, 0xce, 0x36, 0x3a, 0x4a, 0xf2, 0xae, 0x46, 0xd1, 0x62, 0x14, 0x76, 0x92, 0xeb, 0xc2, 0x26,
+	0x10, 0x10, 0xbc, 0x9e, 0x49, 0xa0, 0xaf, 0x09, 0xdf, 0x85, 0xd5, 0xcb, 0x47, 0xba, 0xac, 0x13,
+	0x74, 0x3e, 0xf9, 0xba, 0xc7, 0xb2, 0x8e, 0xab, 0xf2, 0x59, 0x10, 0xd7, 0xd0, 0xec, 0xe0, 0xd4,
+	0x2b, 0xfc, 0x63, 0x91, 0x49, 0xe0, 0x91, 0x0d, 0x80, 0x2b, 0xe1, 0xd5, 0x34, 0x38, 0x79, 0x04,
+	0xde, 0x45, 0x0b, 0x75, 0x1e, 0x50, 0xab, 0x7b, 0x68, 0xb5, 0x7e, 0xa0, 0x9c, 0x1d, 0xf4, 0x39,
+	0x5e, 0x8e, 0x04, 0x42, 0x1a, 0x0e, 0xfa, 0x3c, 0x73, 0x7c, 0x3f, 0xda, 0x34, 0xf0, 0x0e, 0x1c,
+	0xf4, 0xa9, 0x73, 0x4c, 0x15, 0xd0, 0xbe, 0x37, 0xe2, 0xad, 0x2d, 0x89, 0xbf, 0xef, 0x91, 0x8f,
+	0xee, 0x1b, 0xf8, 0x5b, 0x94, 0x57, 0x30, 0x5b, 0x6f, 0x2c, 0xaf, 0x43, 0xe1, 0x0d, 0x33, 0x3b,
+	0x88, 0x85, 0x08, 0x52, 0xa8, 0x09, 0x80, 0xbd, 0x46, 0x39, 0x79, 0xbc, 0x0f, 0xbd, 0x84, 0xe2,
+	0x94, 0xd7, 0xd1, 0x62, 0x4a, 0x1d, 0x59, 0x87, 0xd8, 0x15, 0xc9, 0x92, 0x8e, 0x5d, 0xe4, 0xa9,
+	0x55, 0xa6, 0xaa, 0xd8, 0x1e, 0xc2, 0xd8, 0xd1, 0x9b, 0x6e, 0x02, 0x33, 0x25, 0x55, 0x23, 0xa0,
+	0x72, 0x44, 0x9a, 0x28, 0x27, 0x67, 0xdc, 0x87, 0xa8, 0xbe, 0x01, 0x04, 0x57, 0x8b, 0x23, 0x08,
+	0x84, 0xf4, 0x16, 0xca, 0xc9, 0x13, 0xf4, 0x79, 0x1c, 0x59, 0x43, 0xae, 0x3a, 0x52, 0x19, 0xd5,
+	0x91, 0xef, 0xd1, 0x82, 0x98, 0x0c, 0xe1, 0x00, 0x8c, 0x98, 0x0d, 0x29, 0xd1, 0x5a, 0x03, 0x92,
+	0x15, 0x9c, 0x3e, 0x04, 0xf8, 0x19, 0x5c, 0x02, 0x53, 0xb6, 0xa5, 0xb9, 0xc8, 0xc1, 0x85, 0xe9,
+	0x9b, 0x05, 0x2e, 0x65, 0x1f, 0x4d, 0x18, 0xfe, 0x2d, 0xba, 0x54, 0xa7, 0x6e, 0xfb, 0x05, 0x65,
+	0x3c, 0x02, 0x56, 0xd0, 0x60, 0xda, 0x3a, 0x58, 0xfc, 0x6f, 0x02, 0xec, 0x3a, 0xb9, 0x92, 0x0a,
+	0xcb, 0xa8, 0xdb, 0x86, 0x8f, 0x28, 0xf8, 0x08, 0x4e, 0xd3, 0x91, 0x17, 0xf5, 0xf8, 0x9b, 0x48,
+	0xe2, 0xc9, 0x3d, 0x39, 0x75, 0x45, 0xa2, 0x0b, 0x3f, 0xf5, 0x18, 0xe2, 0x34, 0xf1, 0x77, 0x08,
+	0xef, 0x51, 0x1e, 0x7b, 0x66, 0x8f, 0x20, 0xa7, 0xbf, 0xc4, 0x27, 0xe3, 0x11, 0xc5, 0x86, 0x47,
+	0x7d, 0xcc, 0xd0, 0x6c, 0xdd, 0xe9, 0xf6, 0x5d, 0x8b, 0x53, 0x68, 0x8f, 0xcb, 0x83, 0x40, 0x84,
+	0xab, 0xf5, 0x36, 0x99, 0x71, 0x2a, 0x4c, 0x3c, 0x66, 0x45, 0x63, 0xa4, 0x90, 0x1a, 0x02, 0x49,
+	0xe4, 0xe5, 0x73, 0x84, 0xe4, 0x25, 0x1a, 0xde, 0x0e, 0x67, 0xc2, 0xbb, 0x61, 0x66, 0x2a, 0xaa,
+	0xd7, 0x07, 0x32, 0x27, 0xe0, 0x87, 0xad, 0xd5, 0xfb, 0x88, 0xba, 0x3a, 0x4f, 0x80, 0x37, 0xbc,
+	0xe4, 0x1f, 0x3f, 0xa8, 0x86, 0x9a, 0x0b, 0xc0, 0xef, 0xd1, 0xb4, 0x98, 0xf2, 0x6f, 0xf9, 0x91,
+	0xe5, 0xf6, 0x29, 0x5e, 0x35, 0x07, 0x9f, 0xf7, 0x4c, 0xa8, 0xa9, 0xf7, 0x68, 0xcb, 0x69, 0x3b,
+	0x34, 0x28, 0xae, 0x84, 0x4c, 0x35, 0xca, 0xfb, 0x81, 0x07, 0x0e, 0x8c, 0x94, 0x00, 0x7e, 0x09,
+	0xe7, 0x75, 0x44, 0xc2, 0x80, 0xaf, 0xd0, 0x74, 0x3d, 0x54, 0xcc, 0x27, 0xf0, 0x69, 0xb6, 0xee,
+	0x04, 0x70, 0x18, 0xc9, 0x46, 0xf9, 0x3a, 0xb7, 0x02, 0x7e, 0xd0, 0x6d, 0x39, 0x22, 0x89, 0xc5,
+	0xd1, 0xcb, 0xf7, 0xb0, 0x4a, 0x10, 0x5d, 0xab, 0x07, 0x13, 0xcb, 0xea, 0x48, 0xb6, 0xab, 0x19,
+	0x4f, 0x06, 0xcf, 0xfe, 0x4c, 0xe0, 0x35, 0x06, 0xdf, 0x0a, 0x45, 0x78, 0x7e, 0x34, 0xd0, 0xe2,
+	0x61, 0x9f, 0x1f, 0xf9, 0x4e, 0xaf, 0x0e, 0x9f, 0x34, 0x0f, 0xe5, 0xa7, 0x4a, 0x7c, 0xcf, 0x4c,
+	0xfb, 0xce, 0x99, 0xf0, 0xd3, 0xfc, 0x59, 0x5d, 0xd4, 0x33, 0x6e, 0x90, 0xb8, 0x29, 0xa8, 0x42,
+	0x47, 0x0f, 0xad, 0xc8, 0xe5, 0x2d, 0xa9, 0x64, 0xf0, 0xf8, 0xf4, 0x2d, 0x3d, 0xcd, 0xe4, 0x51,
+	0xef, 0x83, 0x95, 0xcd, 0x11, 0x3c, 0xd5, 0xb3, 0x1f, 0xe8, 0xe9, 0xe0, 0x5d, 0xe2, 0x1d, 0xc2,
+	0xaa, 0xe3, 0x2f, 0x19, 0x0d, 0x34, 0xd9, 0x6d, 0x33, 0xf9, 0xd5, 0x36, 0xe6, 0x73, 0x5e, 0x97,
+	0xf5, 0x43, 0xce, 0x6a, 0x44, 0x4a, 0x18, 0x51, 0x74, 0xd8, 0x45, 0x4b, 0xc3, 0x0e, 0x87, 0x15,
+	0x8c, 0xd5, 0x5d, 0x75, 0x2f, 0xaa, 0xdc, 0xcc, 0xe4, 0x88, 0x74, 0xf6, 0x6b, 0x17, 0xe5, 0xfd,
+	0xa0, 0x03, 0x5b, 0x6f, 0xcb, 0x0f, 0x6c, 0xf5, 0xa1, 0xeb, 0xeb, 0x19, 0xf9, 0x21, 0xee, 0x10,
+	0x3e, 0x22, 0xff, 0xde, 0xec, 0x38, 0xfc, 0x4d, 0xbf, 0x29, 0xf8, 0xab, 0xda, 0x53, 0xfd, 0xf7,
+	0x81, 0x7b, 0xfa, 0x93, 0xf6, 0x93, 0x6a, 0xc7, 0x57, 0x75, 0xff, 0x98, 0x5a, 0x3e, 0xd0, 0x78,
+	0x47, 0xe1, 0xef, 0x7a, 0x87, 0x53, 0xcd, 0x0b, 0xe0, 0xff, 0xe8, 0xbf, 0x01, 0x00, 0x00, 0xff,
+	0xff, 0xda, 0x32, 0x13, 0xef, 0x8c, 0x20, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -609,6 +623,14 @@
 	SetExtValue(ctx context.Context, in *extension.ValueSet, opts ...grpc.CallOption) (*empty.Empty, error)
 	// omci start and stop cli implementation
 	StartOmciTestAction(ctx context.Context, in *omci.OmciTestRequest, opts ...grpc.CallOption) (*omci.TestResponse, error)
+	// Saves or updates system wide configuration into voltha KV
+	PutVoipSystemProfile(ctx context.Context, in *voip_system_profile.VoipSystemProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipSystemProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error)
+	// Saves or updates a profile (VOIP) into voltha KV
+	PutVoipUserProfile(ctx context.Context, in *voip_user_profile.VoipUserProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipUserProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error)
 }
 
 type volthaServiceClient struct {
@@ -1273,6 +1295,42 @@
 	return out, nil
 }
 
+func (c *volthaServiceClient) PutVoipSystemProfile(ctx context.Context, in *voip_system_profile.VoipSystemProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
+	out := new(empty.Empty)
+	err := c.cc.Invoke(ctx, "/voltha.VolthaService/PutVoipSystemProfile", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DeleteVoipSystemProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error) {
+	out := new(empty.Empty)
+	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DeleteVoipSystemProfile", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) PutVoipUserProfile(ctx context.Context, in *voip_user_profile.VoipUserProfileRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
+	out := new(empty.Empty)
+	err := c.cc.Invoke(ctx, "/voltha.VolthaService/PutVoipUserProfile", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *volthaServiceClient) DeleteVoipUserProfile(ctx context.Context, in *common.Key, opts ...grpc.CallOption) (*empty.Empty, error) {
+	out := new(empty.Empty)
+	err := c.cc.Invoke(ctx, "/voltha.VolthaService/DeleteVoipUserProfile", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // VolthaServiceServer is the server API for VolthaService service.
 type VolthaServiceServer interface {
 	// Get high level information on the Voltha cluster
@@ -1432,6 +1490,14 @@
 	SetExtValue(context.Context, *extension.ValueSet) (*empty.Empty, error)
 	// omci start and stop cli implementation
 	StartOmciTestAction(context.Context, *omci.OmciTestRequest) (*omci.TestResponse, error)
+	// Saves or updates system wide configuration into voltha KV
+	PutVoipSystemProfile(context.Context, *voip_system_profile.VoipSystemProfileRequest) (*empty.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipSystemProfile(context.Context, *common.Key) (*empty.Empty, error)
+	// Saves or updates a profile (VOIP) into voltha KV
+	PutVoipUserProfile(context.Context, *voip_user_profile.VoipUserProfileRequest) (*empty.Empty, error)
+	// Deletes the given profile from voltha KV
+	DeleteVoipUserProfile(context.Context, *common.Key) (*empty.Empty, error)
 }
 
 // UnimplementedVolthaServiceServer can be embedded to have forward compatible implementations.
@@ -1630,6 +1696,18 @@
 func (*UnimplementedVolthaServiceServer) StartOmciTestAction(ctx context.Context, req *omci.OmciTestRequest) (*omci.TestResponse, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method StartOmciTestAction not implemented")
 }
+func (*UnimplementedVolthaServiceServer) PutVoipSystemProfile(ctx context.Context, req *voip_system_profile.VoipSystemProfileRequest) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method PutVoipSystemProfile not implemented")
+}
+func (*UnimplementedVolthaServiceServer) DeleteVoipSystemProfile(ctx context.Context, req *common.Key) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method DeleteVoipSystemProfile not implemented")
+}
+func (*UnimplementedVolthaServiceServer) PutVoipUserProfile(ctx context.Context, req *voip_user_profile.VoipUserProfileRequest) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method PutVoipUserProfile not implemented")
+}
+func (*UnimplementedVolthaServiceServer) DeleteVoipUserProfile(ctx context.Context, req *common.Key) (*empty.Empty, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method DeleteVoipUserProfile not implemented")
+}
 
 func RegisterVolthaServiceServer(s *grpc.Server, srv VolthaServiceServer) {
 	s.RegisterService(&_VolthaService_serviceDesc, srv)
@@ -2801,6 +2879,78 @@
 	return interceptor(ctx, in, info, handler)
 }
 
+func _VolthaService_PutVoipSystemProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voip_system_profile.VoipSystemProfileRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).PutVoipSystemProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/voltha.VolthaService/PutVoipSystemProfile",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).PutVoipSystemProfile(ctx, req.(*voip_system_profile.VoipSystemProfileRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DeleteVoipSystemProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.Key)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DeleteVoipSystemProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/voltha.VolthaService/DeleteVoipSystemProfile",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DeleteVoipSystemProfile(ctx, req.(*common.Key))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_PutVoipUserProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(voip_user_profile.VoipUserProfileRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).PutVoipUserProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/voltha.VolthaService/PutVoipUserProfile",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).PutVoipUserProfile(ctx, req.(*voip_user_profile.VoipUserProfileRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _VolthaService_DeleteVoipUserProfile_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(common.Key)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(VolthaServiceServer).DeleteVoipUserProfile(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/voltha.VolthaService/DeleteVoipUserProfile",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(VolthaServiceServer).DeleteVoipUserProfile(ctx, req.(*common.Key))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 var _VolthaService_serviceDesc = grpc.ServiceDesc{
 	ServiceName: "voltha.VolthaService",
 	HandlerType: (*VolthaServiceServer)(nil),
@@ -3049,6 +3199,22 @@
 			MethodName: "StartOmciTestAction",
 			Handler:    _VolthaService_StartOmciTestAction_Handler,
 		},
+		{
+			MethodName: "PutVoipSystemProfile",
+			Handler:    _VolthaService_PutVoipSystemProfile_Handler,
+		},
+		{
+			MethodName: "DeleteVoipSystemProfile",
+			Handler:    _VolthaService_DeleteVoipSystemProfile_Handler,
+		},
+		{
+			MethodName: "PutVoipUserProfile",
+			Handler:    _VolthaService_PutVoipUserProfile_Handler,
+		},
+		{
+			MethodName: "DeleteVoipUserProfile",
+			Handler:    _VolthaService_DeleteVoipUserProfile_Handler,
+		},
 	},
 	Streams: []grpc.StreamDesc{
 		{
diff --git a/vendor/modules.txt b/vendor/modules.txt
index c574fba..86a0269 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -59,7 +59,7 @@
 github.com/google/gopacket/layers
 # github.com/google/uuid v1.3.0
 github.com/google/uuid
-# github.com/gorilla/mux v1.8.0
+# github.com/gorilla/mux v1.8.1
 ## explicit
 github.com/gorilla/mux
 # github.com/guumaster/tablewriter v0.0.10
@@ -76,7 +76,7 @@
 github.com/opencord/voltha-lib-go/v7/pkg/flows
 github.com/opencord/voltha-lib-go/v7/pkg/log
 github.com/opencord/voltha-lib-go/v7/pkg/probe
-# github.com/opencord/voltha-protos/v5 v5.2.4
+# github.com/opencord/voltha-protos/v5 v5.5.0
 ## explicit
 github.com/opencord/voltha-protos/v5/go/common
 github.com/opencord/voltha-protos/v5/go/ext/config
@@ -84,6 +84,8 @@
 github.com/opencord/voltha-protos/v5/go/health
 github.com/opencord/voltha-protos/v5/go/omci
 github.com/opencord/voltha-protos/v5/go/openflow_13
+github.com/opencord/voltha-protos/v5/go/voip_system_profile
+github.com/opencord/voltha-protos/v5/go/voip_user_profile
 github.com/opencord/voltha-protos/v5/go/voltha
 # github.com/opentracing/opentracing-go v1.2.0
 github.com/opentracing/opentracing-go
