diff --git a/perxis-proto b/perxis-proto
index 606cf8070bc9a930cadd5117bf49cc119ff3a16e..dc83f92e5b9bb690c52486ee326a798365afd85f 160000
--- a/perxis-proto
+++ b/perxis-proto
@@ -1 +1 @@
-Subproject commit 606cf8070bc9a930cadd5117bf49cc119ff3a16e
+Subproject commit dc83f92e5b9bb690c52486ee326a798365afd85f
diff --git a/pkg/data/strings.go b/pkg/data/strings.go
index 36c3e6943526b17ed821476bc387382a4f72cb51..f393e989536fafe05cdc5be8ec3fec4596856cfe 100644
--- a/pkg/data/strings.go
+++ b/pkg/data/strings.go
@@ -89,3 +89,20 @@ func GlobToRegexp(s string) string {
 
 	return replacer.Replace(s)
 }
+
+func GetRegexMatches(s string, matches ...string) []string {
+	var res []string
+	for _, match := range matches {
+		if match == "" {
+			continue
+		}
+		if s == match || match == ".*" {
+			res = append(res, match)
+			continue
+		}
+		if ok, _ := regexp.MatchString(match, s); ok {
+			res = append(res, match)
+		}
+	}
+	return res
+}
diff --git a/pkg/extension/extension.go b/pkg/extension/extension.go
index e5362ac2c5864ef93262af93725272f3bf5a28d3..0e13061bd5a0256c073576c45ab8f41f40c8cd55 100644
--- a/pkg/extension/extension.go
+++ b/pkg/extension/extension.go
@@ -12,10 +12,11 @@ import (
 )
 
 const (
-	StatePending    = pb.State_PENDING
-	StateInstalled  = pb.State_INSTALLED
-	StateInProgress = pb.State_IN_PROGRESS
-	StateFail       = pb.State_FAIL
+	StateNotInstalled = pb.State_NOT_INSTALLED
+	StatePending      = pb.State_PENDING
+	StateInstalled    = pb.State_INSTALLED
+	StateInProgress   = pb.State_IN_PROGRESS
+	StateFail         = pb.State_FAIL
 
 	MetadataKey = "extension"
 )
@@ -71,7 +72,7 @@ func CheckInstalled(ctx context.Context, content *content.Content, spaceID, envI
 	if err != nil {
 		return false, err
 	}
-	return status.Installed, nil
+	return status.State == StateInstalled, nil
 }
 
 func isMetadataEqual(s1, s2 *schema.Schema) bool {
diff --git a/pkg/extension/manager.go b/pkg/extension/manager.go
index e8c0a0f76ed7e704bd6a58f4b2a0a80ad4c3025b..9de5dc4e71c1160a7277181a64085ebf6ab86032 100644
--- a/pkg/extension/manager.go
+++ b/pkg/extension/manager.go
@@ -13,37 +13,20 @@ type Manager interface {
 	Extension
 	RegisterExtensions(ctx context.Context, ext ...*ExtensionConnector) error
 	UnregisterExtensions(ctx context.Context, ext ...*ExtensionConnector) error
-	ListRegisteredExtensions(ctx context.Context, extensions []string) ([]*ExtensionConnector, error)
-	ListExtensions(ctx context.Context, space, env string, extensions []string, opts ...ListExtensionsOption) ([]*Info, error)
+	ListRegisteredExtensions(ctx context.Context, extensions ...string) ([]*ExtensionConnector, error)
+	ListExtensions(ctx context.Context, space, env string, filter *ListExtensionsFilter) ([]*Info, error)
 }
 
-type (
-	ListExtensionsOptions struct {
-		Installed    bool
-		NotInstalled bool
-	}
-
-	ListExtensionsOption func(o *ListExtensionsOptions)
-)
-
-func WithInstalled() ListExtensionsOption {
-	return func(o *ListExtensionsOptions) {
-		o.Installed = true
-	}
-}
-
-func WithNotInstalled() ListExtensionsOption {
-	return func(o *ListExtensionsOptions) {
-		o.NotInstalled = true
-	}
+type ListExtensionsFilter struct {
+	Extensions []string
+	States     []State
 }
 
-func NewListExtensionsOptions(options ...ListExtensionsOption) *ListExtensionsOptions {
-	opt := new(ListExtensionsOptions)
-	for _, o := range options {
-		o(opt)
+func NewListExtensionsFilter(extensions []string, states ...State) *ListExtensionsFilter {
+	return &ListExtensionsFilter{
+		Extensions: extensions,
+		States:     states,
 	}
-	return opt
 }
 
 type ExtensionConnector struct {
diff --git a/pkg/extension/manager_client.go b/pkg/extension/manager_client.go
index 80f808abbc31b3f67e63d22d374bdc8eaa1cda23..d15d0dd0dd9eb53c5183f1faacc655c01dd494a1 100644
--- a/pkg/extension/manager_client.go
+++ b/pkg/extension/manager_client.go
@@ -57,7 +57,7 @@ func (c *ManagerClient) UnregisterExtensions(ctx context.Context, exts ...*Exten
 	return err
 }
 
-func (c *ManagerClient) ListRegisteredExtensions(ctx context.Context, extensions []string) ([]*ExtensionConnector, error) {
+func (c *ManagerClient) ListRegisteredExtensions(ctx context.Context, extensions ...string) ([]*ExtensionConnector, error) {
 	resp, err := c.manager.ListRegisteredExtensions(ctx, &pb.ListRegisteredExtensionsRequest{Extension: extensions}, grpc.WaitForReady(true))
 	if err != nil {
 		return nil, err
@@ -71,14 +71,15 @@ func (c *ManagerClient) ListRegisteredExtensions(ctx context.Context, extensions
 	return exts, nil
 }
 
-func (c *ManagerClient) ListExtensions(ctx context.Context, space, env string, extensions []string, opts ...ListExtensionsOption) ([]*Info, error) {
-	options := NewListExtensionsOptions(opts...)
+func (c *ManagerClient) ListExtensions(ctx context.Context, space, env string, filter *ListExtensionsFilter) ([]*Info, error) {
+	if filter == nil {
+		filter = new(ListExtensionsFilter)
+	}
 	resp, err := c.manager.ListExtensions(ctx, &pb.ListExtensionsRequest{
-		Extensions:   extensions,
-		SpaceId:      space,
-		EnvId:        env,
-		Installed:    options.Installed,
-		NotInstalled: options.NotInstalled,
+		Extensions: filter.Extensions,
+		SpaceId:    space,
+		EnvId:      env,
+		State:      filter.States,
 	}, grpc.WaitForReady(true))
 	if err != nil {
 		return nil, err
diff --git a/pkg/extension/middleware/error_logging_middleware.go b/pkg/extension/middleware/error_logging_middleware.go
index fa2dc0500cd87a2a58b19bd581cb97293be14dea..e7dec72ba015ffe7e75a7bf0736f3a20cd7f4204 100644
--- a/pkg/extension/middleware/error_logging_middleware.go
+++ b/pkg/extension/middleware/error_logging_middleware.go
@@ -63,24 +63,24 @@ func (m *errorLoggingMiddleware) Install(ctx context.Context, in *extension.Inst
 	return m.next.Install(ctx, in)
 }
 
-func (m *errorLoggingMiddleware) ListExtensions(ctx context.Context, space string, env string, extensions []string, opts ...extension.ListExtensionsOption) (ipa1 []*extension.Info, err error) {
+func (m *errorLoggingMiddleware) ListExtensions(ctx context.Context, space string, env string, filter *extension.ListExtensionsFilter) (ipa1 []*extension.Info, err error) {
 	logger := m.logger
 	defer func() {
 		if err != nil {
 			logger.Warn("response error", zap.Error(err))
 		}
 	}()
-	return m.next.ListExtensions(ctx, space, env, extensions, opts...)
+	return m.next.ListExtensions(ctx, space, env, filter)
 }
 
-func (m *errorLoggingMiddleware) ListRegisteredExtensions(ctx context.Context, extensions []string) (epa1 []*extension.ExtensionConnector, err error) {
+func (m *errorLoggingMiddleware) ListRegisteredExtensions(ctx context.Context, extensions ...string) (epa1 []*extension.ExtensionConnector, err error) {
 	logger := m.logger
 	defer func() {
 		if err != nil {
 			logger.Warn("response error", zap.Error(err))
 		}
 	}()
-	return m.next.ListRegisteredExtensions(ctx, extensions)
+	return m.next.ListRegisteredExtensions(ctx, extensions...)
 }
 
 func (m *errorLoggingMiddleware) RegisterExtensions(ctx context.Context, ext ...*extension.ExtensionConnector) (err error) {
diff --git a/pkg/extension/middleware/logging_middleware.go b/pkg/extension/middleware/logging_middleware.go
index 9cccb48347e244d5504789656eeb83670d3334ba..8ae37929d26a9dbccf40ab1030d73b708d3d96ba 100644
--- a/pkg/extension/middleware/logging_middleware.go
+++ b/pkg/extension/middleware/logging_middleware.go
@@ -169,15 +169,14 @@ func (m *loggingMiddleware) Install(ctx context.Context, in *extension.InstallRe
 	return err
 }
 
-func (m *loggingMiddleware) ListExtensions(ctx context.Context, space string, env string, extensions []string, opts ...extension.ListExtensionsOption) (ipa1 []*extension.Info, err error) {
+func (m *loggingMiddleware) ListExtensions(ctx context.Context, space string, env string, filter *extension.ListExtensionsFilter) (ipa1 []*extension.Info, err error) {
 	begin := time.Now()
 	var fields []zapcore.Field
 	for k, v := range map[string]interface{}{
-		"ctx":        ctx,
-		"space":      space,
-		"env":        env,
-		"extensions": extensions,
-		"opts":       opts} {
+		"ctx":    ctx,
+		"space":  space,
+		"env":    env,
+		"filter": filter} {
 		if k == "ctx" {
 			fields = append(fields, zap.String("principal", fmt.Sprint(auth.GetPrincipal(ctx))))
 			continue
@@ -187,7 +186,7 @@ func (m *loggingMiddleware) ListExtensions(ctx context.Context, space string, en
 
 	m.logger.Debug("ListExtensions.Request", fields...)
 
-	ipa1, err = m.next.ListExtensions(ctx, space, env, extensions, opts...)
+	ipa1, err = m.next.ListExtensions(ctx, space, env, filter)
 
 	fields = []zapcore.Field{
 		zap.Duration("time", time.Since(begin)),
@@ -209,7 +208,7 @@ func (m *loggingMiddleware) ListExtensions(ctx context.Context, space string, en
 	return ipa1, err
 }
 
-func (m *loggingMiddleware) ListRegisteredExtensions(ctx context.Context, extensions []string) (epa1 []*extension.ExtensionConnector, err error) {
+func (m *loggingMiddleware) ListRegisteredExtensions(ctx context.Context, extensions ...string) (epa1 []*extension.ExtensionConnector, err error) {
 	begin := time.Now()
 	var fields []zapcore.Field
 	for k, v := range map[string]interface{}{
@@ -224,7 +223,7 @@ func (m *loggingMiddleware) ListRegisteredExtensions(ctx context.Context, extens
 
 	m.logger.Debug("ListRegisteredExtensions.Request", fields...)
 
-	epa1, err = m.next.ListRegisteredExtensions(ctx, extensions)
+	epa1, err = m.next.ListRegisteredExtensions(ctx, extensions...)
 
 	fields = []zapcore.Field{
 		zap.Duration("time", time.Since(begin)),
diff --git a/pkg/extension/middleware/recovering_middleware.go b/pkg/extension/middleware/recovering_middleware.go
index f0cf09fbf5eccf7ebb9f0a6e72548beb40c8aed4..d75af3364a31dd2e0961166a3a7dca573079f4e1 100644
--- a/pkg/extension/middleware/recovering_middleware.go
+++ b/pkg/extension/middleware/recovering_middleware.go
@@ -77,7 +77,7 @@ func (m *recoveringMiddleware) Install(ctx context.Context, in *extension.Instal
 	return m.next.Install(ctx, in)
 }
 
-func (m *recoveringMiddleware) ListExtensions(ctx context.Context, space string, env string, extensions []string, opts ...extension.ListExtensionsOption) (ipa1 []*extension.Info, err error) {
+func (m *recoveringMiddleware) ListExtensions(ctx context.Context, space string, env string, filter *extension.ListExtensionsFilter) (ipa1 []*extension.Info, err error) {
 	logger := m.logger
 	defer func() {
 		if r := recover(); r != nil {
@@ -86,10 +86,10 @@ func (m *recoveringMiddleware) ListExtensions(ctx context.Context, space string,
 		}
 	}()
 
-	return m.next.ListExtensions(ctx, space, env, extensions, opts...)
+	return m.next.ListExtensions(ctx, space, env, filter)
 }
 
-func (m *recoveringMiddleware) ListRegisteredExtensions(ctx context.Context, extensions []string) (epa1 []*extension.ExtensionConnector, err error) {
+func (m *recoveringMiddleware) ListRegisteredExtensions(ctx context.Context, extensions ...string) (epa1 []*extension.ExtensionConnector, err error) {
 	logger := m.logger
 	defer func() {
 		if r := recover(); r != nil {
@@ -98,7 +98,7 @@ func (m *recoveringMiddleware) ListRegisteredExtensions(ctx context.Context, ext
 		}
 	}()
 
-	return m.next.ListRegisteredExtensions(ctx, extensions)
+	return m.next.ListRegisteredExtensions(ctx, extensions...)
 }
 
 func (m *recoveringMiddleware) RegisterExtensions(ctx context.Context, ext ...*extension.ExtensionConnector) (err error) {
diff --git a/pkg/extension/mocks/Manager.go b/pkg/extension/mocks/Manager.go
index 4742f6dd7198a9f6bd54deffb064671c21cf8c3b..907e79be06246a240d05ed8f264d3354ab76cbbe 100644
--- a/pkg/extension/mocks/Manager.go
+++ b/pkg/extension/mocks/Manager.go
@@ -86,32 +86,25 @@ func (_m *Manager) Install(ctx context.Context, in *extensions.InstallRequest) e
 	return r0
 }
 
-// ListExtensions provides a mock function with given fields: ctx, space, env, _a3, opts
-func (_m *Manager) ListExtensions(ctx context.Context, space string, env string, _a3 []string, opts ...extension.ListExtensionsOption) ([]*extensions.ListExtensionsResponse_ExtensionInfo, error) {
-	_va := make([]interface{}, len(opts))
-	for _i := range opts {
-		_va[_i] = opts[_i]
-	}
-	var _ca []interface{}
-	_ca = append(_ca, ctx, space, env, _a3)
-	_ca = append(_ca, _va...)
-	ret := _m.Called(_ca...)
+// ListExtensions provides a mock function with given fields: ctx, space, env, filter
+func (_m *Manager) ListExtensions(ctx context.Context, space string, env string, filter *extension.ListExtensionsFilter) ([]*extensions.ListExtensionsResponse_ExtensionInfo, error) {
+	ret := _m.Called(ctx, space, env, filter)
 
 	var r0 []*extensions.ListExtensionsResponse_ExtensionInfo
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, string, string, []string, ...extension.ListExtensionsOption) ([]*extensions.ListExtensionsResponse_ExtensionInfo, error)); ok {
-		return rf(ctx, space, env, _a3, opts...)
+	if rf, ok := ret.Get(0).(func(context.Context, string, string, *extension.ListExtensionsFilter) ([]*extensions.ListExtensionsResponse_ExtensionInfo, error)); ok {
+		return rf(ctx, space, env, filter)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, string, string, []string, ...extension.ListExtensionsOption) []*extensions.ListExtensionsResponse_ExtensionInfo); ok {
-		r0 = rf(ctx, space, env, _a3, opts...)
+	if rf, ok := ret.Get(0).(func(context.Context, string, string, *extension.ListExtensionsFilter) []*extensions.ListExtensionsResponse_ExtensionInfo); ok {
+		r0 = rf(ctx, space, env, filter)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]*extensions.ListExtensionsResponse_ExtensionInfo)
 		}
 	}
 
-	if rf, ok := ret.Get(1).(func(context.Context, string, string, []string, ...extension.ListExtensionsOption) error); ok {
-		r1 = rf(ctx, space, env, _a3, opts...)
+	if rf, ok := ret.Get(1).(func(context.Context, string, string, *extension.ListExtensionsFilter) error); ok {
+		r1 = rf(ctx, space, env, filter)
 	} else {
 		r1 = ret.Error(1)
 	}
@@ -120,24 +113,31 @@ func (_m *Manager) ListExtensions(ctx context.Context, space string, env string,
 }
 
 // ListRegisteredExtensions provides a mock function with given fields: ctx, _a1
-func (_m *Manager) ListRegisteredExtensions(ctx context.Context, _a1 []string) ([]*extension.ExtensionConnector, error) {
-	ret := _m.Called(ctx, _a1)
+func (_m *Manager) ListRegisteredExtensions(ctx context.Context, _a1 ...string) ([]*extension.ExtensionConnector, error) {
+	_va := make([]interface{}, len(_a1))
+	for _i := range _a1 {
+		_va[_i] = _a1[_i]
+	}
+	var _ca []interface{}
+	_ca = append(_ca, ctx)
+	_ca = append(_ca, _va...)
+	ret := _m.Called(_ca...)
 
 	var r0 []*extension.ExtensionConnector
 	var r1 error
-	if rf, ok := ret.Get(0).(func(context.Context, []string) ([]*extension.ExtensionConnector, error)); ok {
-		return rf(ctx, _a1)
+	if rf, ok := ret.Get(0).(func(context.Context, ...string) ([]*extension.ExtensionConnector, error)); ok {
+		return rf(ctx, _a1...)
 	}
-	if rf, ok := ret.Get(0).(func(context.Context, []string) []*extension.ExtensionConnector); ok {
-		r0 = rf(ctx, _a1)
+	if rf, ok := ret.Get(0).(func(context.Context, ...string) []*extension.ExtensionConnector); ok {
+		r0 = rf(ctx, _a1...)
 	} else {
 		if ret.Get(0) != nil {
 			r0 = ret.Get(0).([]*extension.ExtensionConnector)
 		}
 	}
 
-	if rf, ok := ret.Get(1).(func(context.Context, []string) error); ok {
-		r1 = rf(ctx, _a1)
+	if rf, ok := ret.Get(1).(func(context.Context, ...string) error); ok {
+		r1 = rf(ctx, _a1...)
 	} else {
 		r1 = ret.Error(1)
 	}
diff --git a/pkg/extension/schema.go b/pkg/extension/schema.go
index 1e44488e0918776fbe770f52b333bba8828317e8..1c34b71eb34a9ddeea9f519add93b03e15959914 100644
--- a/pkg/extension/schema.go
+++ b/pkg/extension/schema.go
@@ -12,8 +12,8 @@ import (
 )
 
 const (
-	StatusCollectionID   = "space_extensions"
-	StatusCollectionName = "Настройки/Расширения"
+	ExtensionsCollectionID   = "space_extensions"
+	ExtensionsCollectionName = "Настройки/Расширения"
 
 	ActionsCollectionID   = "space_actions"
 	ActionsCollectionName = "Настройки/Действия"
@@ -141,10 +141,10 @@ func NewStatusCollection(spaceID, envID string) *collections.Collection {
 	sch.Field.UI.Options["collection_icon"] = "SettingOutlined/ApiOutlined"
 
 	return &collections.Collection{
-		ID:      StatusCollectionID,
+		ID:      ExtensionsCollectionID,
 		SpaceID: spaceID,
 		EnvID:   envID,
-		Name:    StatusCollectionName,
+		Name:    ExtensionsCollectionName,
 		Schema:  sch,
 		Hidden:  true,
 	}
diff --git a/pkg/extension/storage.go b/pkg/extension/storage.go
index cf5478135ecf0912f389fd4f757c9b7bc8f41b44..b3d2f5003d0bbbe5c5a2ecc4d50f50decf45b088 100644
--- a/pkg/extension/storage.go
+++ b/pkg/extension/storage.go
@@ -15,7 +15,9 @@ import (
 	"git.perx.ru/perxis/perxis-go/pkg/items"
 )
 
-type Info = pb.ListExtensionsResponse_ExtensionInfo
+type (
+	Info = pb.ListExtensionsResponse_ExtensionInfo
+)
 
 // Storage описывает интерфейс хранилища состояний расширений
 type Storage interface {
@@ -37,7 +39,7 @@ func infoFromItem(extension string, item *items.Item) *Info {
 	if item == nil {
 		return &Info{
 			Extension: extension,
-			Installed: false,
+			State:     StateNotInstalled,
 		}
 	}
 
@@ -55,52 +57,38 @@ func infoFromItem(extension string, item *items.Item) *Info {
 		State:            State(state),
 		Msg:              msg,
 		Error:            errmsg,
-		Installed:        State(state) == StateInstalled,
 		InstalledVersion: ver,
 	}
 }
 
 // GetExtension возвращает состояние расширения в пространстве
 func (s *storage) GetExtension(ctx context.Context, spaceID, envID string, extension string) (*Info, error) {
-	res, err := s.content.Items.Get(ctx, spaceID, envID, StatusCollectionID, extension)
+	res, err := s.content.Items.Get(ctx, spaceID, envID, ExtensionsCollectionID, extension)
 	if err != nil && !strings.Contains(err.Error(), "not found") {
 		return nil, err
 	}
 	return infoFromItem(extension, res), nil
 }
 
-// FindExtensions возвращает состояния расширений в пространстве. Если расширение не установлено,
-// возвращается статус с флагом `Installed: false`. Статусы возвращаются в том же порядке, что и
-// переданные расширения
+// FindExtensions возвращает состояния расширений в пространстве
 func (s *storage) FindExtensions(ctx context.Context, spaceID, envID string, extensions ...string) ([]*Info, error) {
-
-	q := make([]interface{}, len(extensions))
-	for _, e := range extensions {
-		q = append(q, fmt.Sprintf("id contains '%s'", e))
+	var itemsFilter *items.Filter
+	if len(extensions) != 0 {
+		q := make([]interface{}, 0, len(extensions)+1)
+		for _, e := range extensions {
+			q = append(q, fmt.Sprintf("id contains '%s'", e))
+		}
 	}
 
-	itms, _, err := s.content.Items.Find(ctx, spaceID, envID, StatusCollectionID, items.NewFilter(q...))
+	itms, _, err := s.content.Items.Find(ctx, spaceID, envID, ExtensionsCollectionID, itemsFilter)
 	if err != nil && !strings.Contains(err.Error(), collections.ErrNotFound.Error()) {
 		return nil, err
 	}
 
-	res := make([]*Info, 0, len(itms))
-
-	if len(extensions) == 0 {
-		for _, item := range itms {
-			res = append(res, infoFromItem(item.ID, item))
-		}
-		return res, nil
+	res := make([]*Info, len(itms))
+	for i, item := range itms {
+		res[i] = infoFromItem(item.ID, item)
 	}
-
-	extensionToItem := make(map[string]*items.Item, len(itms))
-	for _, item := range itms {
-		extensionToItem[item.ID] = item
-	}
-	for _, extension := range extensions {
-		res = append(res, infoFromItem(extension, extensionToItem[extension]))
-	}
-
 	return res, nil
 }
 
@@ -114,7 +102,7 @@ func (s *storage) SetExtension(ctx context.Context, spaceID, envID string, exten
 		ID:           extension,
 		SpaceID:      spaceID,
 		EnvID:        envID,
-		CollectionID: StatusCollectionID,
+		CollectionID: ExtensionsCollectionID,
 		Data:         make(map[string]interface{}),
 	}
 
@@ -125,7 +113,7 @@ func (s *storage) SetExtension(ctx context.Context, spaceID, envID string, exten
 	_ = item.Set("status_msg", status.Msg)
 	_ = item.Set("status_error", status.Error)
 
-	i, _ := s.content.Items.Get(ctx, spaceID, envID, StatusCollectionID, extension)
+	i, _ := s.content.Items.Get(ctx, spaceID, envID, ExtensionsCollectionID, extension)
 	if i == nil {
 		_, err := s.content.Items.Create(ctx, item)
 		return err
@@ -140,7 +128,7 @@ func (s *storage) DeleteExtension(ctx context.Context, spaceID, envID string, ex
 		ID:           extension,
 		SpaceID:      spaceID,
 		EnvID:        envID,
-		CollectionID: StatusCollectionID,
+		CollectionID: ExtensionsCollectionID,
 	}
 	return s.content.Items.Delete(ctx, item)
 }
diff --git a/pkg/files/middleware/error_logging_middleware.go b/pkg/files/middleware/error_logging_middleware.go
index 683a7bc06598eabd703239b37ebaa7b2553703cf..18e9b65a502b6cacc1913a9c14cfe5ff0aac8a1c 100644
--- a/pkg/files/middleware/error_logging_middleware.go
+++ b/pkg/files/middleware/error_logging_middleware.go
@@ -1,9 +1,9 @@
-package middleware
-
 // Code generated by gowrap. DO NOT EDIT.
 // template: ../../../assets/templates/middleware/error_log
 // gowrap: http://github.com/hexdigest/gowrap
 
+package middleware
+
 //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/files -i Files -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l ""
 
 import (
diff --git a/pkg/files/middleware/logging_middleware.go b/pkg/files/middleware/logging_middleware.go
index b8a4d536a5c2cd909471496dde0df4650d2de9de..b295fa68cc8367021d5fa5e00a0c850cc27c7cee 100644
--- a/pkg/files/middleware/logging_middleware.go
+++ b/pkg/files/middleware/logging_middleware.go
@@ -1,9 +1,9 @@
-package middleware
-
 // Code generated by gowrap. DO NOT EDIT.
 // template: ../../../assets/templates/middleware/access_log
 // gowrap: http://github.com/hexdigest/gowrap
 
+package middleware
+
 //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/files -i Files -t ../../../assets/templates/middleware/access_log -o logging_middleware.go -l ""
 
 import (
diff --git a/pkg/images/middleware/error_logging_middleware.go b/pkg/images/middleware/error_logging_middleware.go
index 92d19a547460d18e36c4e6e6cdedb8a42814b5ea..749db73b2ed5682c9725c920ae4b850eff5e67e1 100644
--- a/pkg/images/middleware/error_logging_middleware.go
+++ b/pkg/images/middleware/error_logging_middleware.go
@@ -1,9 +1,9 @@
-package middleware
-
 // Code generated by gowrap. DO NOT EDIT.
 // template: ../../../assets/templates/middleware/error_log
 // gowrap: http://github.com/hexdigest/gowrap
 
+package middleware
+
 //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/images -i Images -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l ""
 
 import (
diff --git a/pkg/images/middleware/logging_middleware.go b/pkg/images/middleware/logging_middleware.go
index dccfa14a41ee601927c5be95e34bcce01e9bcdb0..fb7d0af4faecfde621e295b0da8e6f2e098e56a1 100644
--- a/pkg/images/middleware/logging_middleware.go
+++ b/pkg/images/middleware/logging_middleware.go
@@ -1,9 +1,9 @@
-package middleware
-
 // Code generated by gowrap. DO NOT EDIT.
 // template: ../../../assets/templates/middleware/access_log
 // gowrap: http://github.com/hexdigest/gowrap
 
+package middleware
+
 //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/images -i Images -t ../../../assets/templates/middleware/access_log -o logging_middleware.go -l ""
 
 import (
diff --git a/pkg/items/middleware/error_logging_middleware.go b/pkg/items/middleware/error_logging_middleware.go
index 91177dec0eb441d23e485c2f4e39617e95e36b1d..345d22ca2727d1516e4a7176e885195ab38f1d20 100644
--- a/pkg/items/middleware/error_logging_middleware.go
+++ b/pkg/items/middleware/error_logging_middleware.go
@@ -1,9 +1,9 @@
-package middleware
-
 // Code generated by gowrap. DO NOT EDIT.
 // template: ../../../assets/templates/middleware/error_log
 // gowrap: http://github.com/hexdigest/gowrap
 
+package middleware
+
 //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/items -i Items -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l ""
 
 import (
diff --git a/pkg/items/middleware/logging_middleware.go b/pkg/items/middleware/logging_middleware.go
index a2bb73c94d771764453afd1c337d29ce544d6a46..6ed28f90053eab68a44b1e5ac79d5228d7bfe9be 100644
--- a/pkg/items/middleware/logging_middleware.go
+++ b/pkg/items/middleware/logging_middleware.go
@@ -1,9 +1,9 @@
-package middleware
-
 // Code generated by gowrap. DO NOT EDIT.
 // template: ../../../assets/templates/middleware/access_log
 // gowrap: http://github.com/hexdigest/gowrap
 
+package middleware
+
 //go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/items -i Items -t ../../../assets/templates/middleware/access_log -o logging_middleware.go -l ""
 
 import (
diff --git a/pkg/references/middleware/error_logging_middleware.go b/pkg/references/middleware/error_logging_middleware.go
index 0c6ecb64e6dba17c66bc24ca86063a8a41280871..0cfbf919e5acd70dc453494d15e9e8778afcca85 100644
--- a/pkg/references/middleware/error_logging_middleware.go
+++ b/pkg/references/middleware/error_logging_middleware.go
@@ -1,10 +1,10 @@
 package middleware
 
-// Code generated by gowrap. DO NOT EDIT.
-// template: ../../../assets/templates/middleware/error_log
-// gowrap: http://github.com/hexdigest/gowrap
+// DO NOT EDIT!
+// This code is generated with http://github.com/hexdigest/gowrap tool
+// using ../../../assets/templates/middleware/error_log template
 
-//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go -l ""
+//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/error_log -o error_logging_middleware.go
 
 import (
 	"context"
diff --git a/pkg/references/middleware/logging_middleware.go b/pkg/references/middleware/logging_middleware.go
index 6af2fecda59b2552d23ad5c55122335463bc7a38..a0f010ae99c2f9ce1eb726e5caba316379328a42 100644
--- a/pkg/references/middleware/logging_middleware.go
+++ b/pkg/references/middleware/logging_middleware.go
@@ -1,10 +1,10 @@
 package middleware
 
-// Code generated by gowrap. DO NOT EDIT.
-// template: ../../../assets/templates/middleware/access_log
-// gowrap: http://github.com/hexdigest/gowrap
+// DO NOT EDIT!
+// This code is generated with http://github.com/hexdigest/gowrap tool
+// using ../../../assets/templates/middleware/access_log template
 
-//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/access_log -o logging_middleware.go -l ""
+//go:generate gowrap gen -p git.perx.ru/perxis/perxis-go/pkg/references -i References -t ../../../assets/templates/middleware/access_log -o logging_middleware.go
 
 import (
 	"context"
diff --git a/proto/extensions/manager_service.pb.go b/proto/extensions/manager_service.pb.go
index dc690c8ff40d0e61226d316c90da8d6642e1cbbf..8f352f1870fab3a81edfed16a1b1282e4d9eee08 100644
--- a/proto/extensions/manager_service.pb.go
+++ b/proto/extensions/manager_service.pb.go
@@ -50,28 +50,28 @@ const (
 type State int32
 
 const (
-	State_UNKNOWN     State = 0
-	State_INSTALLED   State = 1
-	State_IN_PROGRESS State = 2
-	State_FAIL        State = 3
-	State_PENDING     State = 4
+	State_NOT_INSTALLED State = 0
+	State_INSTALLED     State = 1
+	State_IN_PROGRESS   State = 2
+	State_FAIL          State = 3
+	State_PENDING       State = 4
 )
 
 // Enum value maps for State.
 var (
 	State_name = map[int32]string{
-		0: "UNKNOWN",
+		0: "NOT_INSTALLED",
 		1: "INSTALLED",
 		2: "IN_PROGRESS",
 		3: "FAIL",
 		4: "PENDING",
 	}
 	State_value = map[string]int32{
-		"UNKNOWN":     0,
-		"INSTALLED":   1,
-		"IN_PROGRESS": 2,
-		"FAIL":        3,
-		"PENDING":     4,
+		"NOT_INSTALLED": 0,
+		"INSTALLED":     1,
+		"IN_PROGRESS":   2,
+		"FAIL":          3,
+		"PENDING":       4,
 	}
 )
 
@@ -102,26 +102,16 @@ func (State) EnumDescriptor() ([]byte, []int) {
 	return file_extensions_manager_service_proto_rawDescGZIP(), []int{0}
 }
 
-// ListExtensionsRequest - запрос на получение статуса расширений в пространстве и окружении.
-// Если список расширений в запросе не передан, возвращаются все установленные расширения
-//
-// Использование флагов `installed`/`uninstalled`:
-//   - если в ListExtensionsRequest.extensions передан список расширений, то флаги игнорируются
-//     и возвращается информация о переданных в запросе расширениях
-//   - `installed:false, uninstalled:false` (равноценно `installed:true, uninstalled:false`) -
-//     возвращается информация об установленных расширениях
-//   - `installed:false, uninstalled:true` - вернуть только зарегистрированные, но не установленные расширения
-//   - `installed:true, uninstalled:true` - вернуть информацию о всех зарегистрированных расширениях
+// ListExtensionsRequest - запрос на получение статуса расширений в пространстве и окружении
 type ListExtensionsRequest struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Extensions   []string `protobuf:"bytes,1,rep,name=extensions,proto3" json:"extensions,omitempty"`                          // Имя расширения (опционально), regexp
-	SpaceId      string   `protobuf:"bytes,2,opt,name=space_id,json=spaceId,proto3" json:"space_id,omitempty"`                 // Пространство имен расширения
-	EnvId        string   `protobuf:"bytes,3,opt,name=env_id,json=envId,proto3" json:"env_id,omitempty"`                       // Идентификатор окружения
-	Installed    bool     `protobuf:"varint,4,opt,name=installed,proto3" json:"installed,omitempty"`                           // Вернуть установленные расширения (по умолчанию)
-	NotInstalled bool     `protobuf:"varint,5,opt,name=not_installed,json=notInstalled,proto3" json:"not_installed,omitempty"` // Вернуть не установленные расширения
+	Extensions []string `protobuf:"bytes,1,rep,name=extensions,proto3" json:"extensions,omitempty"`          // Имя расширения (опционально), regexp
+	SpaceId    string   `protobuf:"bytes,2,opt,name=space_id,json=spaceId,proto3" json:"space_id,omitempty"` // Пространство имен расширения
+	EnvId      string   `protobuf:"bytes,3,opt,name=env_id,json=envId,proto3" json:"env_id,omitempty"`       // Идентификатор окружения
+	State      []State  `protobuf:"varint,4,rep,packed,name=state,proto3,enum=extensions.State" json:"state,omitempty"`
 }
 
 func (x *ListExtensionsRequest) Reset() {
@@ -177,21 +167,14 @@ func (x *ListExtensionsRequest) GetEnvId() string {
 	return ""
 }
 
-func (x *ListExtensionsRequest) GetInstalled() bool {
+func (x *ListExtensionsRequest) GetState() []State {
 	if x != nil {
-		return x.Installed
-	}
-	return false
-}
-
-func (x *ListExtensionsRequest) GetNotInstalled() bool {
-	if x != nil {
-		return x.NotInstalled
+		return x.State
 	}
-	return false
+	return nil
 }
 
-// GetExtensionResponse - описание расширения
+// ListExtensionsResponse - описание расширения
 type ListExtensionsResponse struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
@@ -685,7 +668,7 @@ func (x *SpaceExtensions) GetState() State {
 	if x != nil {
 		return x.State
 	}
-	return State_UNKNOWN
+	return State_NOT_INSTALLED
 }
 
 func (x *SpaceExtensions) GetStatusError() string {
@@ -713,7 +696,6 @@ type ListExtensionsResponse_ExtensionInfo struct {
 	Msg              string `protobuf:"bytes,10200,opt,name=msg,proto3" json:"msg,omitempty"`                                                   // Сообщение
 	Error            string `protobuf:"bytes,10300,opt,name=error,proto3" json:"error,omitempty"`                                               // Ошибка (state == ERROR)
 	NotFound         bool   `protobuf:"varint,10350,opt,name=not_found,json=notFound,proto3" json:"not_found,omitempty"`                        // Расширение не найдено
-	Installed        bool   `protobuf:"varint,10400,opt,name=installed,proto3" json:"installed,omitempty"`                                      // Расширение установлено
 	UpdateAvailable  bool   `protobuf:"varint,10500,opt,name=update_available,json=updateAvailable,proto3" json:"update_available,omitempty"`   // Доступно обновление
 	InstalledVersion string `protobuf:"bytes,10510,opt,name=installed_version,json=installedVersion,proto3" json:"installed_version,omitempty"` // Установленная версия расширения
 	AvailableVersion string `protobuf:"bytes,10520,opt,name=available_version,json=availableVersion,proto3" json:"available_version,omitempty"` // Доступная версия расширения
@@ -769,7 +751,7 @@ func (x *ListExtensionsResponse_ExtensionInfo) GetState() State {
 	if x != nil {
 		return x.State
 	}
-	return State_UNKNOWN
+	return State_NOT_INSTALLED
 }
 
 func (x *ListExtensionsResponse_ExtensionInfo) GetMsg() string {
@@ -793,13 +775,6 @@ func (x *ListExtensionsResponse_ExtensionInfo) GetNotFound() bool {
 	return false
 }
 
-func (x *ListExtensionsResponse_ExtensionInfo) GetInstalled() bool {
-	if x != nil {
-		return x.Installed
-	}
-	return false
-}
-
 func (x *ListExtensionsResponse_ExtensionInfo) GetUpdateAvailable() bool {
 	if x != nil {
 		return x.UpdateAvailable
@@ -826,148 +801,145 @@ var File_extensions_manager_service_proto protoreflect.FileDescriptor
 var file_extensions_manager_service_proto_rawDesc = []byte{
 	0x0a, 0x20, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x6d, 0x61, 0x6e,
 	0x61, 0x67, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x12, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xac,
+	0x74, 0x6f, 0x12, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x92,
 	0x01, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
 	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65,
 	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78,
 	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x61, 0x63,
 	0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x61, 0x63,
 	0x65, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06, 0x65, 0x6e, 0x76, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x6e,
-	0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69,
-	0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x6f, 0x74, 0x5f,
-	0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52,
-	0x0c, 0x6e, 0x6f, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x22, 0xcb, 0x03,
-	0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
-	0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a,
-	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xde, 0x02, 0x0a, 0x0d, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x09,
-	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xf4, 0x4e, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x05, 0x74,
-	0x69, 0x74, 0x6c, 0x65, 0x18, 0xfe, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74,
-	0x6c, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x88, 0x4f, 0x20, 0x01,
-	0x28, 0x0e, 0x32, 0x11, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
-	0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x11, 0x0a, 0x03,
-	0x6d, 0x73, 0x67, 0x18, 0xd8, 0x4f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x12,
-	0x15, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xbc, 0x50, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f,
-	0x75, 0x6e, 0x64, 0x18, 0xee, 0x50, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x6f, 0x74, 0x46,
-	0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1d, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65,
-	0x64, 0x18, 0xa0, 0x51, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c,
-	0x6c, 0x65, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x76,
-	0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x84, 0x52, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f,
-	0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12,
-	0x2c, 0x0a, 0x11, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72,
-	0x73, 0x69, 0x6f, 0x6e, 0x18, 0x8e, 0x52, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x73,
-	0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a,
-	0x11, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69,
-	0x6f, 0x6e, 0x18, 0x98, 0x52, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x61, 0x76, 0x61, 0x69, 0x6c,
-	0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xea, 0x02, 0x0a, 0x13,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
-	0x74, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x18, 0x90, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x9a, 0x4e, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0b, 0x64, 0x65, 0x73,
-	0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xa4, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x07,
-	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xf4, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
-	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x13, 0x76, 0x65, 0x72, 0x73, 0x69,
-	0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xfe,
-	0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65,
-	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x04, 0x64, 0x65, 0x70,
-	0x73, 0x18, 0xd8, 0x4f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x70, 0x73, 0x12, 0x10,
-	0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c,
-	0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70,
-	0x74, 0x6f, 0x72, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72,
-	0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d,
-	0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
-	0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
-	0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
-	0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x5c, 0x0a, 0x19, 0x52, 0x65, 0x67, 0x69,
-	0x73, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
-	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
-	0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x78, 0x74, 0x65,
+	0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6e, 0x76, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x05, 0x73, 0x74,
+	0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x65, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74,
+	0x61, 0x74, 0x65, 0x22, 0xac, 0x03, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50,
+	0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+	0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
+	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
+	0x1a, 0xbf, 0x02, 0x0a, 0x0d, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e,
+	0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18,
+	0xf4, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x12, 0x15, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0xfe, 0x4e, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74,
+	0x65, 0x18, 0x88, 0x4f, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61,
+	0x74, 0x65, 0x12, 0x11, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0xd8, 0x4f, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x03, 0x6d, 0x73, 0x67, 0x12, 0x15, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xbc,
+	0x50, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1c, 0x0a, 0x09,
+	0x6e, 0x6f, 0x74, 0x5f, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0xee, 0x50, 0x20, 0x01, 0x28, 0x08,
+	0x52, 0x08, 0x6e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x2a, 0x0a, 0x10, 0x75, 0x70,
+	0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x84,
+	0x52, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x76, 0x61,
+	0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2c, 0x0a, 0x11, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c,
+	0x6c, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x8e, 0x52, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x10, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x56, 0x65, 0x72,
+	0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c,
+	0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x98, 0x52, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x10, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69,
+	0x6f, 0x6e, 0x22, 0xea, 0x02, 0x0a, 0x13, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x12, 0x1d, 0x0a, 0x09, 0x65, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x90, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x05, 0x74, 0x69, 0x74,
+	0x6c, 0x65, 0x18, 0x9a, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65,
+	0x12, 0x21, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18,
+	0xa4, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xf4,
+	0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x30,
+	0x0a, 0x13, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69,
+	0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0xfe, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x76, 0x65,
+	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
+	0x12, 0x13, 0x0a, 0x04, 0x64, 0x65, 0x70, 0x73, 0x18, 0xd8, 0x4f, 0x20, 0x03, 0x28, 0x09, 0x52,
+	0x04, 0x64, 0x65, 0x70, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x05, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x49, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
+	0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x65, 0x78, 0x74, 0x65,
 	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x1c, 0x0a, 0x1a, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
-	0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5e, 0x0a, 0x1b, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
-	0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65,
-	0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
-	0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70,
-	0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69,
-	0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
-	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67,
-	0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3f, 0x0a, 0x0a, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e,
-	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x0a,
-	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xe5, 0x01, 0x0a, 0x0f, 0x53,
-	0x70, 0x61, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d,
-	0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x90, 0x4e, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a,
-	0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x9a, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74,
-	0x69, 0x74, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
-	0xf4, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
-	0x13, 0x0a, 0x04, 0x64, 0x65, 0x70, 0x73, 0x18, 0xd8, 0x4f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04,
-	0x64, 0x65, 0x70, 0x73, 0x12, 0x28, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0xbc, 0x50,
-	0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x22,
-	0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xa0,
-	0x51, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x72, 0x72,
-	0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d, 0x73, 0x67,
-	0x18, 0x84, 0x52, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d,
-	0x73, 0x67, 0x2a, 0x4b, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55,
-	0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x53, 0x54,
-	0x41, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x5f, 0x50, 0x52,
-	0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x41, 0x49, 0x4c,
-	0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x32,
-	0xc1, 0x03, 0x0a, 0x17, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e,
-	0x61, 0x67, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x65, 0x0a, 0x12, 0x52,
-	0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x73, 0x12, 0x25, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x52,
-	0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x78,
+	0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64,
+	0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
+	0x74, 0x61, 0x1a, 0x3b, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x45, 0x6e,
+	0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
+	0x5c, 0x0a, 0x19, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x0a,
+	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
+	0x32, 0x1f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f,
+	0x72, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x1c, 0x0a,
+	0x1a, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5e, 0x0a, 0x1b, 0x55,
+	0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x0a, 0x65, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f,
+	0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x45, 0x78, 0x74, 0x65,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x52,
+	0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x1e, 0x0a, 0x1c, 0x55,
+	0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x0a, 0x1f, 0x4c,
+	0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c,
+	0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x03, 0x28,
+	0x09, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x20,
+	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x45, 0x78,
 	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
-	0x22, 0x00, 0x12, 0x6b, 0x0a, 0x14, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x65, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74,
-	0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75,
-	0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
-	0x2e, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x12, 0x3f, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01,
+	0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72,
+	0x69, 0x70, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x22, 0xe5, 0x01, 0x0a, 0x0f, 0x53, 0x70, 0x61, 0x63, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1d, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x18, 0x90, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x12, 0x15, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x9a, 0x4e,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x07, 0x76,
+	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0xf4, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76,
+	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x13, 0x0a, 0x04, 0x64, 0x65, 0x70, 0x73, 0x18, 0xd8,
+	0x4f, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x70, 0x73, 0x12, 0x28, 0x0a, 0x05, 0x73,
+	0x74, 0x61, 0x74, 0x65, 0x18, 0xbc, 0x50, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x65, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05,
+	0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f,
+	0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0xa0, 0x51, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74,
+	0x61, 0x74, 0x75, 0x73, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61,
+	0x74, 0x75, 0x73, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x84, 0x52, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
+	0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x73, 0x67, 0x2a, 0x51, 0x0a, 0x05, 0x53, 0x74, 0x61,
+	0x74, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c,
+	0x4c, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c,
+	0x45, 0x44, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, 0x47, 0x52,
+	0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x03, 0x12,
+	0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x32, 0xc1, 0x03, 0x0a,
+	0x17, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65,
+	0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x65, 0x0a, 0x12, 0x52, 0x65, 0x67, 0x69,
+	0x73, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x25,
+	0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x67, 0x69,
+	0x73, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e,
 	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12,
-	0x77, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65,
-	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x2e, 0x65, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67,
-	0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
-	0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e,
+	0x6b, 0x0a, 0x14, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x55, 0x6e, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+	0x1a, 0x28, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x55, 0x6e,
+	0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x77, 0x0a, 0x18,
+	0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65, 0x64, 0x45, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e,
 	0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74,
 	0x65, 0x72, 0x65, 0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65,
-	0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74,
-	0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x2e, 0x65, 0x78, 0x74,
+	0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f,
+	0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x65, 0x72, 0x65,
+	0x64, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
+	0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x59, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
+	0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x65, 0x78, 0x74,
 	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x78, 0x74, 0x65,
-	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e,
-	0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
-	0x65, 0x22, 0x00, 0x42, 0x3a, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x2e, 0x70, 0x65, 0x72, 0x78, 0x2e,
-	0x72, 0x75, 0x2f, 0x70, 0x65, 0x72, 0x78, 0x69, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x78, 0x69, 0x73,
-	0x2d, 0x67, 0x6f, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x73, 0x3b, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x62,
-	0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
+	0x42, 0x3a, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x2e, 0x70, 0x65, 0x72, 0x78, 0x2e, 0x72, 0x75, 0x2f,
+	0x70, 0x65, 0x72, 0x78, 0x69, 0x73, 0x2f, 0x70, 0x65, 0x72, 0x78, 0x69, 0x73, 0x2d, 0x67, 0x6f,
+	0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e,
+	0x73, 0x3b, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -1000,26 +972,27 @@ var file_extensions_manager_service_proto_goTypes = []interface{}{
 	nil, // 12: extensions.ExtensionDescriptor.MetadataEntry
 }
 var file_extensions_manager_service_proto_depIdxs = []int32{
-	11, // 0: extensions.ListExtensionsResponse.extensions:type_name -> extensions.ListExtensionsResponse.ExtensionInfo
-	12, // 1: extensions.ExtensionDescriptor.metadata:type_name -> extensions.ExtensionDescriptor.MetadataEntry
-	3,  // 2: extensions.RegisterExtensionsRequest.extensions:type_name -> extensions.ExtensionDescriptor
-	3,  // 3: extensions.UnregisterExtensionsRequest.extensions:type_name -> extensions.ExtensionDescriptor
-	3,  // 4: extensions.ListRegisteredExtensionsResponse.extensions:type_name -> extensions.ExtensionDescriptor
-	0,  // 5: extensions.SpaceExtensions.state:type_name -> extensions.State
-	0,  // 6: extensions.ListExtensionsResponse.ExtensionInfo.state:type_name -> extensions.State
-	4,  // 7: extensions.ExtensionManagerService.RegisterExtensions:input_type -> extensions.RegisterExtensionsRequest
-	6,  // 8: extensions.ExtensionManagerService.UnregisterExtensions:input_type -> extensions.UnregisterExtensionsRequest
-	8,  // 9: extensions.ExtensionManagerService.ListRegisteredExtensions:input_type -> extensions.ListRegisteredExtensionsRequest
-	1,  // 10: extensions.ExtensionManagerService.ListExtensions:input_type -> extensions.ListExtensionsRequest
-	5,  // 11: extensions.ExtensionManagerService.RegisterExtensions:output_type -> extensions.RegisterExtensionsResponse
-	7,  // 12: extensions.ExtensionManagerService.UnregisterExtensions:output_type -> extensions.UnregisterExtensionsResponse
-	9,  // 13: extensions.ExtensionManagerService.ListRegisteredExtensions:output_type -> extensions.ListRegisteredExtensionsResponse
-	2,  // 14: extensions.ExtensionManagerService.ListExtensions:output_type -> extensions.ListExtensionsResponse
-	11, // [11:15] is the sub-list for method output_type
-	7,  // [7:11] is the sub-list for method input_type
-	7,  // [7:7] is the sub-list for extension type_name
-	7,  // [7:7] is the sub-list for extension extendee
-	0,  // [0:7] is the sub-list for field type_name
+	0,  // 0: extensions.ListExtensionsRequest.state:type_name -> extensions.State
+	11, // 1: extensions.ListExtensionsResponse.extensions:type_name -> extensions.ListExtensionsResponse.ExtensionInfo
+	12, // 2: extensions.ExtensionDescriptor.metadata:type_name -> extensions.ExtensionDescriptor.MetadataEntry
+	3,  // 3: extensions.RegisterExtensionsRequest.extensions:type_name -> extensions.ExtensionDescriptor
+	3,  // 4: extensions.UnregisterExtensionsRequest.extensions:type_name -> extensions.ExtensionDescriptor
+	3,  // 5: extensions.ListRegisteredExtensionsResponse.extensions:type_name -> extensions.ExtensionDescriptor
+	0,  // 6: extensions.SpaceExtensions.state:type_name -> extensions.State
+	0,  // 7: extensions.ListExtensionsResponse.ExtensionInfo.state:type_name -> extensions.State
+	4,  // 8: extensions.ExtensionManagerService.RegisterExtensions:input_type -> extensions.RegisterExtensionsRequest
+	6,  // 9: extensions.ExtensionManagerService.UnregisterExtensions:input_type -> extensions.UnregisterExtensionsRequest
+	8,  // 10: extensions.ExtensionManagerService.ListRegisteredExtensions:input_type -> extensions.ListRegisteredExtensionsRequest
+	1,  // 11: extensions.ExtensionManagerService.ListExtensions:input_type -> extensions.ListExtensionsRequest
+	5,  // 12: extensions.ExtensionManagerService.RegisterExtensions:output_type -> extensions.RegisterExtensionsResponse
+	7,  // 13: extensions.ExtensionManagerService.UnregisterExtensions:output_type -> extensions.UnregisterExtensionsResponse
+	9,  // 14: extensions.ExtensionManagerService.ListRegisteredExtensions:output_type -> extensions.ListRegisteredExtensionsResponse
+	2,  // 15: extensions.ExtensionManagerService.ListExtensions:output_type -> extensions.ListExtensionsResponse
+	12, // [12:16] is the sub-list for method output_type
+	8,  // [8:12] is the sub-list for method input_type
+	8,  // [8:8] is the sub-list for extension type_name
+	8,  // [8:8] is the sub-list for extension extendee
+	0,  // [0:8] is the sub-list for field type_name
 }
 
 func init() { file_extensions_manager_service_proto_init() }