From 45b92b0ffb23db9dee600e7239f1e993bb833130 Mon Sep 17 00:00:00 2001
From: Diego <74568547+dsm20@users.noreply.github.com>
Date: Thu, 9 Apr 2026 13:56:31 -0400
Subject: [PATCH 01/18] added enum, obligationssort message, and sort field to
list request
has buf.validate as per usual and comments for docs. regen protos as
well
---
docs/grpc/index.html | 91 +-
.../obligations/obligations.openapi.yaml | 38 +-
.../go/policy/obligations/obligations.pb.go | 1517 +++++++++--------
service/policy/obligations/obligations.proto | 19 +
4 files changed, 987 insertions(+), 678 deletions(-)
diff --git a/docs/grpc/index.html b/docs/grpc/index.html
index 818a98e7d6..dbbd6a25fb 100644
--- a/docs/grpc/index.html
+++ b/docs/grpc/index.html
@@ -1548,6 +1548,10 @@
Table of Contents
MListObligationsResponse
+
+ MObligationsSort
+
+
MRemoveObligationTriggerRequest
@@ -1577,6 +1581,10 @@ Table of Contents
+
+ ESortObligationsType
+
+
@@ -13195,7 +13203,7 @@ DeleteObligationValueR
GetObligationRequest
-
Definitions
+
@@ -13562,6 +13570,15 @@ ListObligationsRequest
Optional |
+
+ | sort |
+ ObligationsSort |
+ repeated |
+ Optional - CONSTRAINT: max 1 item
+Default ordering when omitted or when the first entry's field is UNSPECIFIED:
+created_at DESC, then id ASC (tie-breaker). |
+
+
@@ -13600,6 +13617,37 @@ ListObligationsResponse
+ ObligationsSort
+
+
+
+
+
+
+
+
+
RemoveObligationTriggerRequest
@@ -13835,6 +13883,47 @@ ValueTriggerRequest
+ SortObligationsType
+
+
+
+ | Name | Number | Description |
+
+
+
+
+ | SORT_OBLIGATIONS_TYPE_UNSPECIFIED |
+ 0 |
+ |
+
+
+
+ | SORT_OBLIGATIONS_TYPE_NAME |
+ 1 |
+ |
+
+
+
+ | SORT_OBLIGATIONS_TYPE_FQN |
+ 2 |
+ |
+
+
+
+ | SORT_OBLIGATIONS_TYPE_CREATED_AT |
+ 3 |
+ |
+
+
+
+ | SORT_OBLIGATIONS_TYPE_UPDATED_AT |
+ 4 |
+ |
+
+
+
+
+
diff --git a/docs/openapi/policy/obligations/obligations.openapi.yaml b/docs/openapi/policy/obligations/obligations.openapi.yaml
index dbe62f43ca..859f98f7fd 100644
--- a/docs/openapi/policy/obligations/obligations.openapi.yaml
+++ b/docs/openapi/policy/obligations/obligations.openapi.yaml
@@ -544,6 +544,13 @@ components:
- KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP256R1
- KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP384R1
- KAS_PUBLIC_KEY_ALG_ENUM_EC_SECP521R1
+ policy.SortDirection:
+ type: string
+ title: SortDirection
+ enum:
+ - SORT_DIRECTION_UNSPECIFIED
+ - SORT_DIRECTION_ASC
+ - SORT_DIRECTION_DESC
policy.SourceType:
type: string
title: SourceType
@@ -563,6 +570,15 @@ components:
- SUBJECT_MAPPING_OPERATOR_ENUM_IN
- SUBJECT_MAPPING_OPERATOR_ENUM_NOT_IN
- SUBJECT_MAPPING_OPERATOR_ENUM_IN_CONTAINS
+ policy.obligations.SortObligationsType:
+ type: string
+ title: SortObligationsType
+ enum:
+ - SORT_OBLIGATIONS_TYPE_UNSPECIFIED
+ - SORT_OBLIGATIONS_TYPE_NAME
+ - SORT_OBLIGATIONS_TYPE_FQN
+ - SORT_OBLIGATIONS_TYPE_CREATED_AT
+ - SORT_OBLIGATIONS_TYPE_UPDATED_AT
common.IdFqnIdentifier:
type: object
properties:
@@ -1604,7 +1620,6 @@ components:
format: uri
title: GetObligationRequest
additionalProperties: false
- description: Definitions
policy.obligations.GetObligationResponse:
type: object
properties:
@@ -1763,6 +1778,16 @@ components:
title: pagination
description: Optional
$ref: '#/components/schemas/policy.PageRequest'
+ sort:
+ type: array
+ items:
+ $ref: '#/components/schemas/policy.obligations.ObligationsSort'
+ title: sort
+ maxItems: 1
+ description: |-
+ Optional - CONSTRAINT: max 1 item
+ Default ordering when omitted or when the first entry's field is UNSPECIFIED:
+ created_at DESC, then id ASC (tie-breaker).
title: ListObligationsRequest
additionalProperties: false
policy.obligations.ListObligationsResponse:
@@ -1778,6 +1803,17 @@ components:
$ref: '#/components/schemas/policy.PageResponse'
title: ListObligationsResponse
additionalProperties: false
+ policy.obligations.ObligationsSort:
+ type: object
+ properties:
+ field:
+ title: field
+ $ref: '#/components/schemas/policy.obligations.SortObligationsType'
+ direction:
+ title: direction
+ $ref: '#/components/schemas/policy.SortDirection'
+ title: ObligationsSort
+ additionalProperties: false
policy.obligations.RemoveObligationTriggerRequest:
type: object
properties:
diff --git a/protocol/go/policy/obligations/obligations.pb.go b/protocol/go/policy/obligations/obligations.pb.go
index 0d25666cc2..ef179fc709 100644
--- a/protocol/go/policy/obligations/obligations.pb.go
+++ b/protocol/go/policy/obligations/obligations.pb.go
@@ -23,7 +23,116 @@ const (
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
-// Definitions
+type SortObligationsType int32
+
+const (
+ SortObligationsType_SORT_OBLIGATIONS_TYPE_UNSPECIFIED SortObligationsType = 0
+ SortObligationsType_SORT_OBLIGATIONS_TYPE_NAME SortObligationsType = 1
+ SortObligationsType_SORT_OBLIGATIONS_TYPE_FQN SortObligationsType = 2
+ SortObligationsType_SORT_OBLIGATIONS_TYPE_CREATED_AT SortObligationsType = 3
+ SortObligationsType_SORT_OBLIGATIONS_TYPE_UPDATED_AT SortObligationsType = 4
+)
+
+// Enum value maps for SortObligationsType.
+var (
+ SortObligationsType_name = map[int32]string{
+ 0: "SORT_OBLIGATIONS_TYPE_UNSPECIFIED",
+ 1: "SORT_OBLIGATIONS_TYPE_NAME",
+ 2: "SORT_OBLIGATIONS_TYPE_FQN",
+ 3: "SORT_OBLIGATIONS_TYPE_CREATED_AT",
+ 4: "SORT_OBLIGATIONS_TYPE_UPDATED_AT",
+ }
+ SortObligationsType_value = map[string]int32{
+ "SORT_OBLIGATIONS_TYPE_UNSPECIFIED": 0,
+ "SORT_OBLIGATIONS_TYPE_NAME": 1,
+ "SORT_OBLIGATIONS_TYPE_FQN": 2,
+ "SORT_OBLIGATIONS_TYPE_CREATED_AT": 3,
+ "SORT_OBLIGATIONS_TYPE_UPDATED_AT": 4,
+ }
+)
+
+func (x SortObligationsType) Enum() *SortObligationsType {
+ p := new(SortObligationsType)
+ *p = x
+ return p
+}
+
+func (x SortObligationsType) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (SortObligationsType) Descriptor() protoreflect.EnumDescriptor {
+ return file_policy_obligations_obligations_proto_enumTypes[0].Descriptor()
+}
+
+func (SortObligationsType) Type() protoreflect.EnumType {
+ return &file_policy_obligations_obligations_proto_enumTypes[0]
+}
+
+func (x SortObligationsType) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use SortObligationsType.Descriptor instead.
+func (SortObligationsType) EnumDescriptor() ([]byte, []int) {
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{0}
+}
+
+type ObligationsSort struct {
+ state protoimpl.MessageState
+ sizeCache protoimpl.SizeCache
+ unknownFields protoimpl.UnknownFields
+
+ Field SortObligationsType `protobuf:"varint,1,opt,name=field,proto3,enum=policy.obligations.SortObligationsType" json:"field,omitempty"`
+ Direction policy.SortDirection `protobuf:"varint,2,opt,name=direction,proto3,enum=policy.SortDirection" json:"direction,omitempty"`
+}
+
+func (x *ObligationsSort) Reset() {
+ *x = ObligationsSort{}
+ if protoimpl.UnsafeEnabled {
+ mi := &file_policy_obligations_obligations_proto_msgTypes[0]
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ ms.StoreMessageInfo(mi)
+ }
+}
+
+func (x *ObligationsSort) String() string {
+ return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ObligationsSort) ProtoMessage() {}
+
+func (x *ObligationsSort) ProtoReflect() protoreflect.Message {
+ mi := &file_policy_obligations_obligations_proto_msgTypes[0]
+ if protoimpl.UnsafeEnabled && x != nil {
+ ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+ if ms.LoadMessageInfo() == nil {
+ ms.StoreMessageInfo(mi)
+ }
+ return ms
+ }
+ return mi.MessageOf(x)
+}
+
+// Deprecated: Use ObligationsSort.ProtoReflect.Descriptor instead.
+func (*ObligationsSort) Descriptor() ([]byte, []int) {
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{0}
+}
+
+func (x *ObligationsSort) GetField() SortObligationsType {
+ if x != nil {
+ return x.Field
+ }
+ return SortObligationsType_SORT_OBLIGATIONS_TYPE_UNSPECIFIED
+}
+
+func (x *ObligationsSort) GetDirection() policy.SortDirection {
+ if x != nil {
+ return x.Direction
+ }
+ return policy.SortDirection(0)
+}
+
type GetObligationRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -36,7 +145,7 @@ type GetObligationRequest struct {
func (x *GetObligationRequest) Reset() {
*x = GetObligationRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[0]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -49,7 +158,7 @@ func (x *GetObligationRequest) String() string {
func (*GetObligationRequest) ProtoMessage() {}
func (x *GetObligationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[0]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -62,7 +171,7 @@ func (x *GetObligationRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetObligationRequest.ProtoReflect.Descriptor instead.
func (*GetObligationRequest) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{0}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{1}
}
func (x *GetObligationRequest) GetId() string {
@@ -95,7 +204,7 @@ type ValueTriggerRequest struct {
func (x *ValueTriggerRequest) Reset() {
*x = ValueTriggerRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[1]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -108,7 +217,7 @@ func (x *ValueTriggerRequest) String() string {
func (*ValueTriggerRequest) ProtoMessage() {}
func (x *ValueTriggerRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[1]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -121,7 +230,7 @@ func (x *ValueTriggerRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ValueTriggerRequest.ProtoReflect.Descriptor instead.
func (*ValueTriggerRequest) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{1}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{2}
}
func (x *ValueTriggerRequest) GetAction() *common.IdNameIdentifier {
@@ -156,7 +265,7 @@ type GetObligationResponse struct {
func (x *GetObligationResponse) Reset() {
*x = GetObligationResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[2]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -169,7 +278,7 @@ func (x *GetObligationResponse) String() string {
func (*GetObligationResponse) ProtoMessage() {}
func (x *GetObligationResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[2]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -182,7 +291,7 @@ func (x *GetObligationResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetObligationResponse.ProtoReflect.Descriptor instead.
func (*GetObligationResponse) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{2}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{3}
}
func (x *GetObligationResponse) GetObligation() *policy.Obligation {
@@ -203,7 +312,7 @@ type GetObligationsByFQNsRequest struct {
func (x *GetObligationsByFQNsRequest) Reset() {
*x = GetObligationsByFQNsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[3]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -216,7 +325,7 @@ func (x *GetObligationsByFQNsRequest) String() string {
func (*GetObligationsByFQNsRequest) ProtoMessage() {}
func (x *GetObligationsByFQNsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[3]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -229,7 +338,7 @@ func (x *GetObligationsByFQNsRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetObligationsByFQNsRequest.ProtoReflect.Descriptor instead.
func (*GetObligationsByFQNsRequest) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{3}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{4}
}
func (x *GetObligationsByFQNsRequest) GetFqns() []string {
@@ -250,7 +359,7 @@ type GetObligationsByFQNsResponse struct {
func (x *GetObligationsByFQNsResponse) Reset() {
*x = GetObligationsByFQNsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[4]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -263,7 +372,7 @@ func (x *GetObligationsByFQNsResponse) String() string {
func (*GetObligationsByFQNsResponse) ProtoMessage() {}
func (x *GetObligationsByFQNsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[4]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -276,7 +385,7 @@ func (x *GetObligationsByFQNsResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetObligationsByFQNsResponse.ProtoReflect.Descriptor instead.
func (*GetObligationsByFQNsResponse) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{4}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{5}
}
func (x *GetObligationsByFQNsResponse) GetFqnObligationMap() map[string]*policy.Obligation {
@@ -304,7 +413,7 @@ type CreateObligationRequest struct {
func (x *CreateObligationRequest) Reset() {
*x = CreateObligationRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[5]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -317,7 +426,7 @@ func (x *CreateObligationRequest) String() string {
func (*CreateObligationRequest) ProtoMessage() {}
func (x *CreateObligationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[5]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -330,7 +439,7 @@ func (x *CreateObligationRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use CreateObligationRequest.ProtoReflect.Descriptor instead.
func (*CreateObligationRequest) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{5}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{6}
}
func (x *CreateObligationRequest) GetNamespaceId() string {
@@ -379,7 +488,7 @@ type CreateObligationResponse struct {
func (x *CreateObligationResponse) Reset() {
*x = CreateObligationResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[6]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -392,7 +501,7 @@ func (x *CreateObligationResponse) String() string {
func (*CreateObligationResponse) ProtoMessage() {}
func (x *CreateObligationResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[6]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -405,7 +514,7 @@ func (x *CreateObligationResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use CreateObligationResponse.ProtoReflect.Descriptor instead.
func (*CreateObligationResponse) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{6}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{7}
}
func (x *CreateObligationResponse) GetObligation() *policy.Obligation {
@@ -431,7 +540,7 @@ type UpdateObligationRequest struct {
func (x *UpdateObligationRequest) Reset() {
*x = UpdateObligationRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[7]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -444,7 +553,7 @@ func (x *UpdateObligationRequest) String() string {
func (*UpdateObligationRequest) ProtoMessage() {}
func (x *UpdateObligationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[7]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -457,7 +566,7 @@ func (x *UpdateObligationRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use UpdateObligationRequest.ProtoReflect.Descriptor instead.
func (*UpdateObligationRequest) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{7}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{8}
}
func (x *UpdateObligationRequest) GetId() string {
@@ -499,7 +608,7 @@ type UpdateObligationResponse struct {
func (x *UpdateObligationResponse) Reset() {
*x = UpdateObligationResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[8]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -512,7 +621,7 @@ func (x *UpdateObligationResponse) String() string {
func (*UpdateObligationResponse) ProtoMessage() {}
func (x *UpdateObligationResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[8]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[9]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -525,7 +634,7 @@ func (x *UpdateObligationResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use UpdateObligationResponse.ProtoReflect.Descriptor instead.
func (*UpdateObligationResponse) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{8}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{9}
}
func (x *UpdateObligationResponse) GetObligation() *policy.Obligation {
@@ -547,7 +656,7 @@ type DeleteObligationRequest struct {
func (x *DeleteObligationRequest) Reset() {
*x = DeleteObligationRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[9]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -560,7 +669,7 @@ func (x *DeleteObligationRequest) String() string {
func (*DeleteObligationRequest) ProtoMessage() {}
func (x *DeleteObligationRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[9]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[10]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -573,7 +682,7 @@ func (x *DeleteObligationRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use DeleteObligationRequest.ProtoReflect.Descriptor instead.
func (*DeleteObligationRequest) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{9}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{10}
}
func (x *DeleteObligationRequest) GetId() string {
@@ -601,7 +710,7 @@ type DeleteObligationResponse struct {
func (x *DeleteObligationResponse) Reset() {
*x = DeleteObligationResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[10]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -614,7 +723,7 @@ func (x *DeleteObligationResponse) String() string {
func (*DeleteObligationResponse) ProtoMessage() {}
func (x *DeleteObligationResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[10]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[11]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -627,7 +736,7 @@ func (x *DeleteObligationResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use DeleteObligationResponse.ProtoReflect.Descriptor instead.
func (*DeleteObligationResponse) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{10}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{11}
}
func (x *DeleteObligationResponse) GetObligation() *policy.Obligation {
@@ -646,12 +755,16 @@ type ListObligationsRequest struct {
NamespaceFqn string `protobuf:"bytes,2,opt,name=namespace_fqn,json=namespaceFqn,proto3" json:"namespace_fqn,omitempty"`
// Optional
Pagination *policy.PageRequest `protobuf:"bytes,10,opt,name=pagination,proto3" json:"pagination,omitempty"`
+ // Optional - CONSTRAINT: max 1 item
+ // Default ordering when omitted or when the first entry's field is UNSPECIFIED:
+ // created_at DESC, then id ASC (tie-breaker).
+ Sort []*ObligationsSort `protobuf:"bytes,11,rep,name=sort,proto3" json:"sort,omitempty"`
}
func (x *ListObligationsRequest) Reset() {
*x = ListObligationsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[11]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -664,7 +777,7 @@ func (x *ListObligationsRequest) String() string {
func (*ListObligationsRequest) ProtoMessage() {}
func (x *ListObligationsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[11]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[12]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -677,7 +790,7 @@ func (x *ListObligationsRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListObligationsRequest.ProtoReflect.Descriptor instead.
func (*ListObligationsRequest) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{11}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{12}
}
func (x *ListObligationsRequest) GetNamespaceId() string {
@@ -701,6 +814,13 @@ func (x *ListObligationsRequest) GetPagination() *policy.PageRequest {
return nil
}
+func (x *ListObligationsRequest) GetSort() []*ObligationsSort {
+ if x != nil {
+ return x.Sort
+ }
+ return nil
+}
+
type ListObligationsResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -713,7 +833,7 @@ type ListObligationsResponse struct {
func (x *ListObligationsResponse) Reset() {
*x = ListObligationsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[12]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -726,7 +846,7 @@ func (x *ListObligationsResponse) String() string {
func (*ListObligationsResponse) ProtoMessage() {}
func (x *ListObligationsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[12]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[13]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -739,7 +859,7 @@ func (x *ListObligationsResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListObligationsResponse.ProtoReflect.Descriptor instead.
func (*ListObligationsResponse) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{12}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{13}
}
func (x *ListObligationsResponse) GetObligations() []*policy.Obligation {
@@ -769,7 +889,7 @@ type GetObligationValueRequest struct {
func (x *GetObligationValueRequest) Reset() {
*x = GetObligationValueRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[13]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[14]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -782,7 +902,7 @@ func (x *GetObligationValueRequest) String() string {
func (*GetObligationValueRequest) ProtoMessage() {}
func (x *GetObligationValueRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[13]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[14]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -795,7 +915,7 @@ func (x *GetObligationValueRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetObligationValueRequest.ProtoReflect.Descriptor instead.
func (*GetObligationValueRequest) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{13}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{14}
}
func (x *GetObligationValueRequest) GetId() string {
@@ -823,7 +943,7 @@ type GetObligationValueResponse struct {
func (x *GetObligationValueResponse) Reset() {
*x = GetObligationValueResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[14]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -836,7 +956,7 @@ func (x *GetObligationValueResponse) String() string {
func (*GetObligationValueResponse) ProtoMessage() {}
func (x *GetObligationValueResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[14]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[15]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -849,7 +969,7 @@ func (x *GetObligationValueResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetObligationValueResponse.ProtoReflect.Descriptor instead.
func (*GetObligationValueResponse) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{14}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{15}
}
func (x *GetObligationValueResponse) GetValue() *policy.ObligationValue {
@@ -870,7 +990,7 @@ type GetObligationValuesByFQNsRequest struct {
func (x *GetObligationValuesByFQNsRequest) Reset() {
*x = GetObligationValuesByFQNsRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[15]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -883,7 +1003,7 @@ func (x *GetObligationValuesByFQNsRequest) String() string {
func (*GetObligationValuesByFQNsRequest) ProtoMessage() {}
func (x *GetObligationValuesByFQNsRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[15]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[16]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -896,7 +1016,7 @@ func (x *GetObligationValuesByFQNsRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use GetObligationValuesByFQNsRequest.ProtoReflect.Descriptor instead.
func (*GetObligationValuesByFQNsRequest) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{15}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{16}
}
func (x *GetObligationValuesByFQNsRequest) GetFqns() []string {
@@ -917,7 +1037,7 @@ type GetObligationValuesByFQNsResponse struct {
func (x *GetObligationValuesByFQNsResponse) Reset() {
*x = GetObligationValuesByFQNsResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[16]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[17]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -930,7 +1050,7 @@ func (x *GetObligationValuesByFQNsResponse) String() string {
func (*GetObligationValuesByFQNsResponse) ProtoMessage() {}
func (x *GetObligationValuesByFQNsResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[16]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[17]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -943,7 +1063,7 @@ func (x *GetObligationValuesByFQNsResponse) ProtoReflect() protoreflect.Message
// Deprecated: Use GetObligationValuesByFQNsResponse.ProtoReflect.Descriptor instead.
func (*GetObligationValuesByFQNsResponse) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{16}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{17}
}
func (x *GetObligationValuesByFQNsResponse) GetFqnValueMap() map[string]*policy.ObligationValue {
@@ -972,7 +1092,7 @@ type CreateObligationValueRequest struct {
func (x *CreateObligationValueRequest) Reset() {
*x = CreateObligationValueRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[17]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[18]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -985,7 +1105,7 @@ func (x *CreateObligationValueRequest) String() string {
func (*CreateObligationValueRequest) ProtoMessage() {}
func (x *CreateObligationValueRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[17]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[18]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -998,7 +1118,7 @@ func (x *CreateObligationValueRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use CreateObligationValueRequest.ProtoReflect.Descriptor instead.
func (*CreateObligationValueRequest) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{17}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{18}
}
func (x *CreateObligationValueRequest) GetObligationId() string {
@@ -1047,7 +1167,7 @@ type CreateObligationValueResponse struct {
func (x *CreateObligationValueResponse) Reset() {
*x = CreateObligationValueResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[18]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[19]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1060,7 +1180,7 @@ func (x *CreateObligationValueResponse) String() string {
func (*CreateObligationValueResponse) ProtoMessage() {}
func (x *CreateObligationValueResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[18]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[19]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1073,7 +1193,7 @@ func (x *CreateObligationValueResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use CreateObligationValueResponse.ProtoReflect.Descriptor instead.
func (*CreateObligationValueResponse) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{18}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{19}
}
func (x *CreateObligationValueResponse) GetValue() *policy.ObligationValue {
@@ -1104,7 +1224,7 @@ type UpdateObligationValueRequest struct {
func (x *UpdateObligationValueRequest) Reset() {
*x = UpdateObligationValueRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[19]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[20]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1117,7 +1237,7 @@ func (x *UpdateObligationValueRequest) String() string {
func (*UpdateObligationValueRequest) ProtoMessage() {}
func (x *UpdateObligationValueRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[19]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[20]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1130,7 +1250,7 @@ func (x *UpdateObligationValueRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use UpdateObligationValueRequest.ProtoReflect.Descriptor instead.
func (*UpdateObligationValueRequest) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{19}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{20}
}
func (x *UpdateObligationValueRequest) GetId() string {
@@ -1179,7 +1299,7 @@ type UpdateObligationValueResponse struct {
func (x *UpdateObligationValueResponse) Reset() {
*x = UpdateObligationValueResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[20]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[21]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1192,7 +1312,7 @@ func (x *UpdateObligationValueResponse) String() string {
func (*UpdateObligationValueResponse) ProtoMessage() {}
func (x *UpdateObligationValueResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[20]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[21]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1205,7 +1325,7 @@ func (x *UpdateObligationValueResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use UpdateObligationValueResponse.ProtoReflect.Descriptor instead.
func (*UpdateObligationValueResponse) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{20}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{21}
}
func (x *UpdateObligationValueResponse) GetValue() *policy.ObligationValue {
@@ -1227,7 +1347,7 @@ type DeleteObligationValueRequest struct {
func (x *DeleteObligationValueRequest) Reset() {
*x = DeleteObligationValueRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[21]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[22]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1240,7 +1360,7 @@ func (x *DeleteObligationValueRequest) String() string {
func (*DeleteObligationValueRequest) ProtoMessage() {}
func (x *DeleteObligationValueRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[21]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[22]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1253,7 +1373,7 @@ func (x *DeleteObligationValueRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use DeleteObligationValueRequest.ProtoReflect.Descriptor instead.
func (*DeleteObligationValueRequest) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{21}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{22}
}
func (x *DeleteObligationValueRequest) GetId() string {
@@ -1281,7 +1401,7 @@ type DeleteObligationValueResponse struct {
func (x *DeleteObligationValueResponse) Reset() {
*x = DeleteObligationValueResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[22]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[23]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1294,7 +1414,7 @@ func (x *DeleteObligationValueResponse) String() string {
func (*DeleteObligationValueResponse) ProtoMessage() {}
func (x *DeleteObligationValueResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[22]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[23]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1307,7 +1427,7 @@ func (x *DeleteObligationValueResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use DeleteObligationValueResponse.ProtoReflect.Descriptor instead.
func (*DeleteObligationValueResponse) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{22}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{23}
}
func (x *DeleteObligationValueResponse) GetValue() *policy.ObligationValue {
@@ -1340,7 +1460,7 @@ type AddObligationTriggerRequest struct {
func (x *AddObligationTriggerRequest) Reset() {
*x = AddObligationTriggerRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[23]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[24]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1353,7 +1473,7 @@ func (x *AddObligationTriggerRequest) String() string {
func (*AddObligationTriggerRequest) ProtoMessage() {}
func (x *AddObligationTriggerRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[23]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[24]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1366,7 +1486,7 @@ func (x *AddObligationTriggerRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use AddObligationTriggerRequest.ProtoReflect.Descriptor instead.
func (*AddObligationTriggerRequest) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{23}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{24}
}
func (x *AddObligationTriggerRequest) GetObligationValue() *common.IdFqnIdentifier {
@@ -1415,7 +1535,7 @@ type AddObligationTriggerResponse struct {
func (x *AddObligationTriggerResponse) Reset() {
*x = AddObligationTriggerResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[24]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[25]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1428,7 +1548,7 @@ func (x *AddObligationTriggerResponse) String() string {
func (*AddObligationTriggerResponse) ProtoMessage() {}
func (x *AddObligationTriggerResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[24]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[25]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1441,7 +1561,7 @@ func (x *AddObligationTriggerResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use AddObligationTriggerResponse.ProtoReflect.Descriptor instead.
func (*AddObligationTriggerResponse) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{24}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{25}
}
func (x *AddObligationTriggerResponse) GetTrigger() *policy.ObligationTrigger {
@@ -1463,7 +1583,7 @@ type RemoveObligationTriggerRequest struct {
func (x *RemoveObligationTriggerRequest) Reset() {
*x = RemoveObligationTriggerRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[25]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1476,7 +1596,7 @@ func (x *RemoveObligationTriggerRequest) String() string {
func (*RemoveObligationTriggerRequest) ProtoMessage() {}
func (x *RemoveObligationTriggerRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[25]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[26]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1489,7 +1609,7 @@ func (x *RemoveObligationTriggerRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use RemoveObligationTriggerRequest.ProtoReflect.Descriptor instead.
func (*RemoveObligationTriggerRequest) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{25}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{26}
}
func (x *RemoveObligationTriggerRequest) GetId() string {
@@ -1510,7 +1630,7 @@ type RemoveObligationTriggerResponse struct {
func (x *RemoveObligationTriggerResponse) Reset() {
*x = RemoveObligationTriggerResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[26]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1523,7 +1643,7 @@ func (x *RemoveObligationTriggerResponse) String() string {
func (*RemoveObligationTriggerResponse) ProtoMessage() {}
func (x *RemoveObligationTriggerResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[26]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[27]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1536,7 +1656,7 @@ func (x *RemoveObligationTriggerResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use RemoveObligationTriggerResponse.ProtoReflect.Descriptor instead.
func (*RemoveObligationTriggerResponse) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{26}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{27}
}
func (x *RemoveObligationTriggerResponse) GetTrigger() *policy.ObligationTrigger {
@@ -1560,7 +1680,7 @@ type ListObligationTriggersRequest struct {
func (x *ListObligationTriggersRequest) Reset() {
*x = ListObligationTriggersRequest{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[27]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[28]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1573,7 +1693,7 @@ func (x *ListObligationTriggersRequest) String() string {
func (*ListObligationTriggersRequest) ProtoMessage() {}
func (x *ListObligationTriggersRequest) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[27]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[28]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1586,7 +1706,7 @@ func (x *ListObligationTriggersRequest) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListObligationTriggersRequest.ProtoReflect.Descriptor instead.
func (*ListObligationTriggersRequest) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{27}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{28}
}
func (x *ListObligationTriggersRequest) GetNamespaceId() string {
@@ -1622,7 +1742,7 @@ type ListObligationTriggersResponse struct {
func (x *ListObligationTriggersResponse) Reset() {
*x = ListObligationTriggersResponse{}
if protoimpl.UnsafeEnabled {
- mi := &file_policy_obligations_obligations_proto_msgTypes[28]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -1635,7 +1755,7 @@ func (x *ListObligationTriggersResponse) String() string {
func (*ListObligationTriggersResponse) ProtoMessage() {}
func (x *ListObligationTriggersResponse) ProtoReflect() protoreflect.Message {
- mi := &file_policy_obligations_obligations_proto_msgTypes[28]
+ mi := &file_policy_obligations_obligations_proto_msgTypes[29]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -1648,7 +1768,7 @@ func (x *ListObligationTriggersResponse) ProtoReflect() protoreflect.Message {
// Deprecated: Use ListObligationTriggersResponse.ProtoReflect.Descriptor instead.
func (*ListObligationTriggersResponse) Descriptor() ([]byte, []int) {
- return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{28}
+ return file_policy_obligations_obligations_proto_rawDescGZIP(), []int{29}
}
func (x *ListObligationTriggersResponse) GetTriggers() []*policy.ObligationTrigger {
@@ -1677,472 +1797,497 @@ var file_policy_obligations_obligations_proto_rawDesc = []byte{
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x73, 0x65,
0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x62,
0x75, 0x66, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69,
- 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x60, 0x0a, 0x14, 0x47, 0x65,
- 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08,
- 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x03,
- 0x66, 0x71, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05,
- 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x3a, 0x10, 0xba, 0x48, 0x0d, 0x22,
- 0x0b, 0x0a, 0x02, 0x69, 0x64, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x10, 0x01, 0x22, 0xcb, 0x01, 0x0a,
- 0x13, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71,
- 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x49, 0x64,
- 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06,
- 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48,
- 0x0a, 0x0f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
- 0x2e, 0x49, 0x64, 0x46, 0x71, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72,
- 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62,
- 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74,
- 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78,
- 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x4b, 0x0a, 0x15, 0x47, 0x65,
- 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x62, 0x6c,
- 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x49, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4f, 0x62,
- 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52,
- 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x04, 0x66, 0x71, 0x6e, 0x73, 0x18, 0x01,
- 0x20, 0x03, 0x28, 0x09, 0x42, 0x16, 0xba, 0x48, 0x13, 0x92, 0x01, 0x10, 0x08, 0x01, 0x10, 0xfa,
- 0x01, 0x18, 0x01, 0x22, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x04, 0x66, 0x71,
- 0x6e, 0x73, 0x22, 0xed, 0x01, 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x12, 0x66, 0x71, 0x6e, 0x5f, 0x6f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32,
- 0x46, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x2e, 0x46, 0x71, 0x6e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d,
- 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x66, 0x71, 0x6e, 0x4f, 0x62, 0x6c, 0x69,
- 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x1a, 0x57, 0x0a, 0x15, 0x46, 0x71, 0x6e,
- 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74,
- 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
- 0x03, 0x6b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c,
- 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
- 0x38, 0x01, 0x22, 0xd4, 0x04, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c,
- 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b,
- 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0b,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0d, 0x6e,
- 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x66, 0x71, 0x6e, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x0c,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x46, 0x71, 0x6e, 0x12, 0xa7, 0x02, 0x0a,
- 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x92, 0x02, 0xba, 0x48,
- 0x8e, 0x02, 0xba, 0x01, 0x82, 0x02, 0x0a, 0x16, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0xaa,
- 0x01, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65,
- 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x6c, 0x70, 0x68,
- 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2c,
- 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x79, 0x70, 0x68, 0x65, 0x6e,
- 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65,
- 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65,
- 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6f, 0x72, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x63,
- 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74,
- 0x6f, 0x72, 0x65, 0x64, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62,
- 0x65, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20,
- 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x1a, 0x3b, 0x74, 0x68, 0x69,
- 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x61, 0x2d, 0x7a,
- 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d,
- 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30,
- 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x72, 0x03, 0x18, 0xfd, 0x01,
- 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x56, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73,
- 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x3e, 0xba, 0x48, 0x3b, 0x92, 0x01, 0x38, 0x08, 0x00,
- 0x18, 0x01, 0x22, 0x32, 0x72, 0x30, 0x18, 0xfd, 0x01, 0x32, 0x2b, 0x5e, 0x5b, 0x61, 0x2d, 0x7a,
- 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d,
- 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30,
- 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x24, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x33,
- 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x3a, 0x24, 0xba, 0x48, 0x21, 0x22, 0x1f, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65,
- 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x5f, 0x66, 0x71, 0x6e, 0x10, 0x01, 0x22, 0x4e, 0x0a, 0x18, 0x43, 0x72, 0x65,
- 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,
+ 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x85, 0x01, 0x0a, 0x0f, 0x4f,
+ 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x3d,
+ 0x0a, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x33, 0x0a,
+ 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x15, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x6f, 0x72, 0x74, 0x44, 0x69,
+ 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69,
+ 0x6f, 0x6e, 0x22, 0x60, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64,
+ 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01,
+ 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x03, 0x66,
+ 0x71, 0x6e, 0x3a, 0x10, 0xba, 0x48, 0x0d, 0x22, 0x0b, 0x0a, 0x02, 0x69, 0x64, 0x0a, 0x03, 0x66,
+ 0x71, 0x6e, 0x10, 0x01, 0x22, 0xcb, 0x01, 0x0a, 0x13, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x72,
+ 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x06,
+ 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63,
+ 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x49, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x65, 0x6e,
+ 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x06,
+ 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x0f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62,
+ 0x75, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x49, 0x64, 0x46, 0x71, 0x6e, 0x49, 0x64,
+ 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01,
+ 0x52, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65,
+ 0x12, 0x30, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65,
+ 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
+ 0x78, 0x74, 0x22, 0x4b, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x6f,
+ 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x12, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22,
+ 0x49, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a,
+ 0x0a, 0x04, 0x66, 0x71, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x16, 0xba, 0x48,
+ 0x13, 0x92, 0x01, 0x10, 0x08, 0x01, 0x10, 0xfa, 0x01, 0x18, 0x01, 0x22, 0x07, 0x72, 0x05, 0x10,
+ 0x01, 0x88, 0x01, 0x01, 0x52, 0x04, 0x66, 0x71, 0x6e, 0x73, 0x22, 0xed, 0x01, 0x0a, 0x1c, 0x47,
+ 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x46,
+ 0x51, 0x4e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x74, 0x0a, 0x12, 0x66,
+ 0x71, 0x6e, 0x5f, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x61,
+ 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74,
+ 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e,
+ 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x71, 0x6e, 0x4f, 0x62, 0x6c,
+ 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
+ 0x10, 0x66, 0x71, 0x6e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61,
+ 0x70, 0x1a, 0x57, 0x0a, 0x15, 0x46, 0x71, 0x6e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
+ 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+ 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd4, 0x04, 0x0a, 0x17, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48,
+ 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65,
+ 0x5f, 0x66, 0x71, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72,
+ 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x46, 0x71, 0x6e, 0x12, 0xa7, 0x02, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20,
+ 0x01, 0x28, 0x09, 0x42, 0x92, 0x02, 0xba, 0x48, 0x8e, 0x02, 0xba, 0x01, 0x82, 0x02, 0x0a, 0x16,
+ 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f,
+ 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0xaa, 0x01, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65,
+ 0x20, 0x61, 0x6e, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63,
+ 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e,
+ 0x67, 0x20, 0x68, 0x79, 0x70, 0x68, 0x65, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x6e,
+ 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6e, 0x6f,
+ 0x74, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6f,
+ 0x72, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72,
+ 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x6e, 0x61, 0x6d,
+ 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c,
+ 0x69, 0x7a, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x63, 0x61,
+ 0x73, 0x65, 0x2e, 0x1a, 0x3b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65,
+ 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28,
+ 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2a,
+ 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x24, 0x27, 0x29,
+ 0xc8, 0x01, 0x01, 0x72, 0x03, 0x18, 0xfd, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x56,
+ 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x3e,
+ 0xba, 0x48, 0x3b, 0x92, 0x01, 0x38, 0x08, 0x00, 0x18, 0x01, 0x22, 0x32, 0x72, 0x30, 0x18, 0xfd,
+ 0x01, 0x32, 0x2b, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28,
+ 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2a,
+ 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x24, 0x52, 0x06,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
+ 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c,
+ 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x24, 0xba, 0x48, 0x21,
+ 0x22, 0x1f, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64,
+ 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x66, 0x71, 0x6e, 0x10,
+ 0x01, 0x22, 0x4e, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a,
+ 0x0a, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x22, 0x80, 0x04, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69,
+ 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a,
+ 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03,
+ 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0xbf, 0x02, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0xaa, 0x02, 0xba, 0x48, 0xa6, 0x02, 0xba, 0x01, 0x9a,
+ 0x02, 0x0a, 0x16, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61,
+ 0x6d, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0xaa, 0x01, 0x4f, 0x62, 0x6c, 0x69,
+ 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74,
+ 0x20, 0x62, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65,
+ 0x72, 0x69, 0x63, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x61, 0x6c, 0x6c, 0x6f,
+ 0x77, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x79, 0x70, 0x68, 0x65, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64,
+ 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x20, 0x62, 0x75, 0x74,
+ 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73,
+ 0x74, 0x20, 0x6f, 0x72, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63,
+ 0x74, 0x65, 0x72, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20,
+ 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x6e, 0x6f, 0x72,
+ 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72,
+ 0x20, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x1a, 0x53, 0x73, 0x69, 0x7a, 0x65, 0x28, 0x74, 0x68, 0x69,
+ 0x73, 0x29, 0x20, 0x3e, 0x20, 0x30, 0x20, 0x3f, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61,
+ 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30,
+ 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39,
+ 0x5f, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29,
+ 0x3f, 0x24, 0x27, 0x29, 0x20, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0xc8, 0x01, 0x00, 0x72, 0x03,
+ 0x18, 0xfd, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74,
+ 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x54,
+ 0x0a, 0x18, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0e,
+ 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
+ 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x16, 0x6d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x65, 0x68, 0x61,
+ 0x76, 0x69, 0x6f, 0x72, 0x22, 0x4e, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62,
+ 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x12, 0x32, 0x0a, 0x0a, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62,
+ 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62,
+ 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
+ 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05,
+ 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x03, 0x66, 0x71, 0x6e,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88,
+ 0x01, 0x01, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x3a, 0x10, 0xba, 0x48, 0x0d, 0x22, 0x0b, 0x0a, 0x02,
+ 0x69, 0x64, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x10, 0x01, 0x22, 0x4e, 0x0a, 0x18, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f,
- 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x80, 0x04, 0x0a, 0x17, 0x55, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+ 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x94, 0x02, 0x0a, 0x16, 0x4c, 0x69,
+ 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72,
+ 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49,
+ 0x64, 0x12, 0x2f, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x66,
+ 0x71, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10,
+ 0x01, 0x88, 0x01, 0x01, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x46,
+ 0x71, 0x6e, 0x12, 0x33, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
+ 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67,
+ 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x41, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18,
+ 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f,
+ 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x6f, 0x72, 0x74, 0x42, 0x08, 0xba, 0x48, 0x05, 0x92,
+ 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x3a, 0x24, 0xba, 0x48, 0x21, 0x22,
+ 0x1f, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x0a,
+ 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x66, 0x71, 0x6e, 0x10, 0x00,
+ 0x22, 0x85, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x0b,
+ 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+ 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
+ 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61,
+ 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x65, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4f,
+ 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12,
- 0xbf, 0x02, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0xaa,
- 0x02, 0xba, 0x48, 0xa6, 0x02, 0xba, 0x01, 0x9a, 0x02, 0x0a, 0x16, 0x6f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61,
- 0x74, 0x12, 0xaa, 0x01, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6e,
- 0x61, 0x6d, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x61,
- 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x73, 0x74, 0x72, 0x69,
- 0x6e, 0x67, 0x2c, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x79, 0x70,
- 0x68, 0x65, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63,
- 0x6f, 0x72, 0x65, 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x73, 0x20,
- 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6f, 0x72, 0x20, 0x6c, 0x61, 0x73,
- 0x74, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x54, 0x68, 0x65,
- 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x20, 0x77, 0x69, 0x6c,
- 0x6c, 0x20, 0x62, 0x65, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x20,
- 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x1a, 0x53,
- 0x73, 0x69, 0x7a, 0x65, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x20, 0x3e, 0x20, 0x30, 0x20, 0x3f,
- 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e,
- 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x61,
- 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a,
- 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x20, 0x3a, 0x20, 0x74,
- 0x72, 0x75, 0x65, 0xc8, 0x01, 0x00, 0x72, 0x03, 0x18, 0xfd, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d,
- 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20,
- 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74,
- 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65,
- 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x54, 0x0a, 0x18, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61,
- 0x74, 0x61, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69,
- 0x6f, 0x72, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
- 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55, 0x70,
- 0x64, 0x61, 0x74, 0x65, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x22, 0x4e, 0x0a, 0x18,
- 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a, 0x0a, 0x6f, 0x62, 0x6c, 0x69,
- 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x52, 0x0a, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x63, 0x0a, 0x17,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20,
- 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69,
- 0x64, 0x12, 0x1c, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a,
- 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x3a,
- 0x10, 0xba, 0x48, 0x0d, 0x22, 0x0b, 0x0a, 0x02, 0x69, 0x64, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x10,
- 0x01, 0x22, 0x4e, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x32, 0x0a,
- 0x0a, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x22, 0xd1, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0b, 0x6e, 0x61,
- 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0d, 0x6e, 0x61, 0x6d,
- 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x66, 0x71, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
- 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x0c, 0x6e, 0x61,
- 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x46, 0x71, 0x6e, 0x12, 0x33, 0x0a, 0x0a, 0x70, 0x61,
- 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13,
- 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75,
- 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a,
- 0x24, 0xba, 0x48, 0x21, 0x22, 0x1f, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x5f, 0x69, 0x64, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f,
- 0x66, 0x71, 0x6e, 0x10, 0x00, 0x22, 0x85, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62,
- 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x34, 0x0a, 0x0b, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
- 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x6f, 0x62, 0x6c, 0x69,
- 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x65, 0x0a,
- 0x19, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01,
- 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28,
- 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x03, 0x66,
- 0x71, 0x6e, 0x3a, 0x10, 0xba, 0x48, 0x0d, 0x22, 0x0b, 0x0a, 0x02, 0x69, 0x64, 0x0a, 0x03, 0x66,
- 0x71, 0x6e, 0x10, 0x01, 0x22, 0x4b, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
- 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
- 0x65, 0x22, 0x4e, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x04, 0x66, 0x71, 0x6e, 0x73, 0x18, 0x01, 0x20,
- 0x03, 0x28, 0x09, 0x42, 0x16, 0xba, 0x48, 0x13, 0x92, 0x01, 0x10, 0x08, 0x01, 0x10, 0xfa, 0x01,
- 0x18, 0x01, 0x22, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x04, 0x66, 0x71, 0x6e,
- 0x73, 0x22, 0xe8, 0x01, 0x0a, 0x21, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x0d, 0x66, 0x71, 0x6e, 0x5f, 0x76,
- 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46,
- 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x73,
- 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x71, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61,
- 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x66, 0x71, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65,
- 0x4d, 0x61, 0x70, 0x1a, 0x57, 0x0a, 0x10, 0x46, 0x71, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d,
- 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75,
- 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd1, 0x04, 0x0a,
- 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a,
- 0x0d, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0c,
- 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0e,
- 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x71, 0x6e, 0x18, 0x02,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01,
- 0x52, 0x0d, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x71, 0x6e, 0x12,
- 0xac, 0x02, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42,
- 0x95, 0x02, 0xba, 0x48, 0x91, 0x02, 0xba, 0x01, 0x85, 0x02, 0x0a, 0x17, 0x6f, 0x62, 0x6c, 0x69,
- 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x66, 0x6f, 0x72,
- 0x6d, 0x61, 0x74, 0x12, 0xac, 0x01, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61,
- 0x6e, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x73,
- 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20,
- 0x68, 0x79, 0x70, 0x68, 0x65, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x6e, 0x64, 0x65,
- 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20,
- 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6f, 0x72, 0x20,
- 0x6c, 0x61, 0x73, 0x74, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2e, 0x20,
- 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69,
- 0x7a, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x63, 0x61, 0x73,
- 0x65, 0x2e, 0x1a, 0x3b, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73,
- 0x28, 0x27, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f,
- 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2a, 0x5b,
- 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x24, 0x27, 0x29, 0xc8,
- 0x01, 0x01, 0x72, 0x03, 0x18, 0xfd, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x43,
- 0x0a, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
- 0x32, 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67,
- 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67,
- 0x65, 0x72, 0x73, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18,
- 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d,
- 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08,
- 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x26, 0xba, 0x48, 0x23, 0x22, 0x21, 0x0a,
- 0x0d, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x0a, 0x0e,
- 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x71, 0x6e, 0x10, 0x01,
- 0x22, 0x4e, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
- 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x17, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x22, 0xcf, 0x04, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba,
- 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0xc4, 0x02, 0x0a, 0x05,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0xad, 0x02, 0xba, 0x48,
- 0xa9, 0x02, 0xba, 0x01, 0x9d, 0x02, 0x0a, 0x17, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12,
- 0xac, 0x01, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x6c,
- 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e,
- 0x67, 0x2c, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x79, 0x70, 0x68,
- 0x65, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f,
- 0x72, 0x65, 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x73, 0x20, 0x74,
- 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6f, 0x72, 0x20, 0x6c, 0x61, 0x73, 0x74,
- 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20,
- 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x77, 0x69, 0x6c,
- 0x6c, 0x20, 0x62, 0x65, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x20,
- 0x74, 0x6f, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x1a, 0x53,
- 0x73, 0x69, 0x7a, 0x65, 0x28, 0x74, 0x68, 0x69, 0x73, 0x29, 0x20, 0x3e, 0x20, 0x30, 0x20, 0x3f,
- 0x20, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e,
- 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x61,
- 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a,
- 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x20, 0x3a, 0x20, 0x74,
- 0x72, 0x75, 0x65, 0xc8, 0x01, 0x00, 0x72, 0x03, 0x18, 0xfd, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x03,
- 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62,
- 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54,
- 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x74,
- 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
- 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62,
- 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x54, 0x0a, 0x18,
- 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f,
- 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a,
- 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61,
- 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x16, 0x6d, 0x65, 0x74, 0x61,
- 0x64, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69,
- 0x6f, 0x72, 0x22, 0x4e, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69,
- 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01,
- 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69,
- 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c,
- 0x75, 0x65, 0x22, 0x68, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69,
- 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08,
- 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x03,
- 0x66, 0x71, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05,
- 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x3a, 0x10, 0xba, 0x48, 0x0d, 0x22,
- 0x0b, 0x0a, 0x02, 0x69, 0x64, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x10, 0x01, 0x22, 0x4e, 0x0a, 0x1d,
- 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x1c, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48,
+ 0x07, 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x3a, 0x10, 0xba,
+ 0x48, 0x0d, 0x22, 0x0b, 0x0a, 0x02, 0x69, 0x64, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x10, 0x01, 0x22,
+ 0x4b, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70,
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xd4, 0x02, 0x0a,
- 0x1b, 0x41, 0x64, 0x64, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72,
- 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x10,
- 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
- 0x49, 0x64, 0x46, 0x71, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42,
- 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0f, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
- 0x6e, 0x2e, 0x49, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69,
- 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69,
- 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x0f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f,
- 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f,
- 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x49, 0x64, 0x46, 0x71, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69,
- 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x61, 0x74,
- 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x0a, 0x07,
- 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f,
- 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x33,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x4e, 0x0a, 0x20,
+ 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c,
+ 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x12, 0x2a, 0x0a, 0x04, 0x66, 0x71, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x16,
+ 0xba, 0x48, 0x13, 0x92, 0x01, 0x10, 0x08, 0x01, 0x10, 0xfa, 0x01, 0x18, 0x01, 0x22, 0x07, 0x72,
+ 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x04, 0x66, 0x71, 0x6e, 0x73, 0x22, 0xe8, 0x01, 0x0a,
+ 0x21, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x0d, 0x66, 0x71, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f,
+ 0x6d, 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47,
+ 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75,
+ 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
+ 0x2e, 0x46, 0x71, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72,
+ 0x79, 0x52, 0x0b, 0x66, 0x71, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x1a, 0x57,
+ 0x0a, 0x10, 0x46, 0x71, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74,
+ 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+ 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c,
+ 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd1, 0x04, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61,
+ 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75,
+ 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x0d, 0x6f, 0x62, 0x6c, 0x69,
+ 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
+ 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0c, 0x6f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x0e, 0x6f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x71, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42,
+ 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x0d, 0x6f, 0x62, 0x6c,
+ 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x71, 0x6e, 0x12, 0xac, 0x02, 0x0a, 0x05, 0x76,
+ 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x95, 0x02, 0xba, 0x48, 0x91,
+ 0x02, 0xba, 0x01, 0x85, 0x02, 0x0a, 0x17, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0xac,
+ 0x01, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x6c, 0x70,
+ 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
+ 0x2c, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x79, 0x70, 0x68, 0x65,
+ 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72,
+ 0x65, 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68,
+ 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6f, 0x72, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20,
+ 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73,
+ 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c,
+ 0x20, 0x62, 0x65, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x74,
+ 0x6f, 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x1a, 0x3b, 0x74,
+ 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x61,
+ 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a,
+ 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d,
+ 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x72, 0x03, 0x18,
+ 0xfd, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x74, 0x72, 0x69,
+ 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x33,
0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61,
0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0x22, 0x53, 0x0a, 0x1c, 0x41, 0x64, 0x64, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
- 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62,
- 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52,
- 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0x3a, 0x0a, 0x1e, 0x52, 0x65, 0x6d, 0x6f,
- 0x76, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67,
- 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64,
- 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01,
- 0x52, 0x02, 0x69, 0x64, 0x22, 0x56, 0x0a, 0x1f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x62,
- 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67,
- 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67,
- 0x67, 0x65, 0x72, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0xd8, 0x01, 0x0a,
- 0x1d, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54,
- 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b,
- 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01,
- 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0b,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0d, 0x6e,
- 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x66, 0x71, 0x6e, 0x18, 0x02, 0x20, 0x01,
- 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x0c,
- 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x46, 0x71, 0x6e, 0x12, 0x33, 0x0a, 0x0a,
- 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
- 0x32, 0x13, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x3a, 0x24, 0xba, 0x48, 0x21, 0x22, 0x1f, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
- 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
- 0x65, 0x5f, 0x66, 0x71, 0x6e, 0x10, 0x00, 0x22, 0x8d, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74,
+ 0x61, 0x74, 0x61, 0x3a, 0x26, 0xba, 0x48, 0x23, 0x22, 0x21, 0x0a, 0x0d, 0x6f, 0x62, 0x6c, 0x69,
+ 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x0a, 0x0e, 0x6f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x66, 0x71, 0x6e, 0x10, 0x01, 0x22, 0x4e, 0x0a, 0x1d, 0x43,
+ 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56,
+ 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x05,
+ 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56,
+ 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xcf, 0x04, 0x0a, 0x1c,
+ 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02,
+ 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0,
+ 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0xc4, 0x02, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0xad, 0x02, 0xba, 0x48, 0xa9, 0x02, 0xba, 0x01, 0x9d,
+ 0x02, 0x0a, 0x17, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61,
+ 0x6c, 0x75, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0xac, 0x01, 0x4f, 0x62, 0x6c,
+ 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x6d, 0x75,
+ 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75,
+ 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x61, 0x6c,
+ 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x79, 0x70, 0x68, 0x65, 0x6e, 0x73, 0x20, 0x61,
+ 0x6e, 0x64, 0x20, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x20, 0x62,
+ 0x75, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69,
+ 0x72, 0x73, 0x74, 0x20, 0x6f, 0x72, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x63, 0x68, 0x61, 0x72,
+ 0x61, 0x63, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65,
+ 0x64, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20,
+ 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x6c, 0x6f,
+ 0x77, 0x65, 0x72, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2e, 0x1a, 0x53, 0x73, 0x69, 0x7a, 0x65, 0x28,
+ 0x74, 0x68, 0x69, 0x73, 0x29, 0x20, 0x3e, 0x20, 0x30, 0x20, 0x3f, 0x20, 0x74, 0x68, 0x69, 0x73,
+ 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41,
+ 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x3f, 0x3a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a,
+ 0x30, 0x2d, 0x39, 0x5f, 0x2d, 0x5d, 0x2a, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d,
+ 0x39, 0x5d, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x20, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0xc8, 0x01,
+ 0x00, 0x72, 0x03, 0x18, 0xfd, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x43, 0x0a,
+ 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
+ 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65,
+ 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65,
+ 0x72, 0x73, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64,
+ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65,
+ 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d,
+ 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x54, 0x0a, 0x18, 0x6d, 0x65, 0x74, 0x61, 0x64,
+ 0x61, 0x74, 0x61, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76,
+ 0x69, 0x6f, 0x72, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
+ 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74,
+ 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x22, 0x4e, 0x0a,
+ 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d,
+ 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x68, 0x0a,
+ 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a,
+ 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03,
+ 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x18, 0x02,
+ 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01,
+ 0x52, 0x03, 0x66, 0x71, 0x6e, 0x3a, 0x10, 0xba, 0x48, 0x0d, 0x22, 0x0b, 0x0a, 0x02, 0x69, 0x64,
+ 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x10, 0x01, 0x22, 0x4e, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74,
+ 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65,
+ 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
+ 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65,
+ 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xd4, 0x02, 0x0a, 0x1b, 0x41, 0x64, 0x64, 0x4f,
+ 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4a, 0x0a, 0x10, 0x6f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x49, 0x64, 0x46, 0x71, 0x6e,
+ 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8,
+ 0x01, 0x01, 0x52, 0x0f, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61,
+ 0x6c, 0x75, 0x65, 0x12, 0x38, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x49, 0x64, 0x4e,
+ 0x61, 0x6d, 0x65, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x06, 0xba,
+ 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a,
+ 0x0f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65,
+ 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e,
+ 0x49, 0x64, 0x46, 0x71, 0x6e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42,
+ 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75,
+ 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65,
+ 0x78, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74,
+ 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74,
+ 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f,
+ 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74,
+ 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x53,
+ 0x0a, 0x1c, 0x41, 0x64, 0x64, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54,
+ 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33,
+ 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32,
+ 0x19, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x07, 0x74, 0x72, 0x69, 0x67,
+ 0x67, 0x65, 0x72, 0x22, 0x3a, 0x0a, 0x1e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6c,
+ 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
+ 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22,
+ 0x56, 0x0a, 0x1f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
+ 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20,
+ 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c,
+ 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x07,
+ 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x22, 0xd8, 0x01, 0x0a, 0x1d, 0x4c, 0x69, 0x73, 0x74,
0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65,
- 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x74, 0x72,
- 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70,
- 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
- 0x73, 0x12, 0x34, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
- 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50,
- 0x61, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67,
- 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0xcd, 0x0d, 0x0a, 0x07, 0x53, 0x65, 0x72, 0x76,
- 0x69, 0x63, 0x65, 0x12, 0x6f, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
- 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74,
- 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69,
- 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69,
- 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x03, 0x90, 0x02, 0x01, 0x12, 0x69, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f,
- 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62,
- 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
- 0x29, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12,
- 0x7e, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x12, 0x2f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74,
- 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e,
- 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65,
- 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x46, 0x51,
- 0x4e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12,
- 0x6f, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c,
- 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f,
- 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x2c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69,
- 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
- 0x12, 0x6f, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62,
- 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
- 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
- 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c,
+ 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x6e, 0x61, 0x6d,
+ 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
+ 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
+ 0x61, 0x63, 0x65, 0x5f, 0x66, 0x71, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba,
+ 0x48, 0x07, 0x72, 0x05, 0x10, 0x01, 0x88, 0x01, 0x01, 0x52, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73,
+ 0x70, 0x61, 0x63, 0x65, 0x46, 0x71, 0x6e, 0x12, 0x33, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
+ 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x24, 0xba, 0x48,
+ 0x21, 0x22, 0x1f, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69,
+ 0x64, 0x0a, 0x0d, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x66, 0x71, 0x6e,
+ 0x10, 0x00, 0x22, 0x8d, 0x01, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72,
+ 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67,
+ 0x65, 0x72, 0x52, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x34, 0x0a, 0x0a,
+ 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
+ 0x32, 0x14, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x52, 0x65,
+ 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x2a, 0xc7, 0x01, 0x0a, 0x13, 0x53, 0x6f, 0x72, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x25, 0x0a, 0x21, 0x53, 0x4f,
+ 0x52, 0x54, 0x5f, 0x4f, 0x42, 0x4c, 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x54,
+ 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10,
+ 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x42, 0x4c, 0x49, 0x47, 0x41,
+ 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10,
+ 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x42, 0x4c, 0x49, 0x47, 0x41,
+ 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x51, 0x4e, 0x10, 0x02,
+ 0x12, 0x24, 0x0a, 0x20, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x4f, 0x42, 0x4c, 0x49, 0x47, 0x41, 0x54,
+ 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45,
+ 0x44, 0x5f, 0x41, 0x54, 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x4f,
+ 0x42, 0x4c, 0x49, 0x47, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f,
+ 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x41, 0x54, 0x10, 0x04, 0x32, 0xcd, 0x0d, 0x0a,
+ 0x07, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6f, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74,
+ 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x2e, 0x70, 0x6f,
+ 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73,
+ 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x69, 0x0a, 0x0d, 0x47, 0x65, 0x74,
+ 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x28, 0x2e, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+ 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71,
+ 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62,
+ 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c,
0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
- 0x00, 0x12, 0x6f, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67,
- 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f,
- 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
- 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65,
- 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69,
- 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62,
- 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
- 0x22, 0x00, 0x12, 0x78, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65,
- 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74,
- 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x8d, 0x01, 0x0a,
- 0x19, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61,
- 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x12, 0x34, 0x2e, 0x70, 0x6f, 0x6c,
+ 0x03, 0x90, 0x02, 0x01, 0x12, 0x7e, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x12, 0x2f, 0x2e, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
+ 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x03, 0x90, 0x02, 0x01, 0x12, 0x6f, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62,
+ 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x72,
+ 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f,
+ 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
+ 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f,
+ 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x55,
+ 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+ 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e,
+ 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61,
+ 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70,
+ 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6f, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65,
+ 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+ 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x44, 0x65, 0x6c,
+ 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73,
+ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x78, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4f, 0x62,
+ 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2d, 0x2e,
+ 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56,
+ 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02,
+ 0x01, 0x12, 0x8d, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x12,
+ 0x34, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65,
+ 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f,
+ 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62,
+ 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79,
+ 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02,
+ 0x01, 0x12, 0x7e, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x2e, 0x70, 0x6f, 0x6c,
0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
- 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c,
- 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
- 0x1a, 0x35, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61,
- 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x79, 0x46, 0x51, 0x4e, 0x73, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x7e, 0x0a, 0x15,
0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f,
- 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
- 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x43, 0x72, 0x65,
- 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c,
- 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x15,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x00, 0x12, 0x7e, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x2e, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f,
- 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74,
- 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x55, 0x70, 0x64,
- 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c,
- 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x15,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x00, 0x12, 0x7e, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67,
+ 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x2e, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
- 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x30, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f,
- 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74,
- 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65,
- 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79,
- 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x44, 0x65, 0x6c,
- 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c,
- 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x14,
+ 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x70,
+ 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22,
+ 0x00, 0x12, 0x7b, 0x0a, 0x14, 0x41, 0x64, 0x64, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
+ 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x2f, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
+ 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41,
+ 0x64, 0x64, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67,
+ 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
0x41, 0x64, 0x64, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69,
- 0x67, 0x67, 0x65, 0x72, 0x12, 0x2f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62,
- 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x4f, 0x62, 0x6c,
- 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65,
- 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f,
- 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x4f, 0x62,
- 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52,
- 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x17, 0x52, 0x65,
- 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72,
- 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x32, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f,
- 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76,
- 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67,
- 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x70, 0x6f, 0x6c, 0x69,
- 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x52,
- 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54,
- 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
- 0x12, 0x84, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
- 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x31, 0x2e, 0x70, 0x6f,
- 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
- 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54,
- 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32,
+ 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84,
+ 0x01, 0x0a, 0x17, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x32, 0x2e, 0x70, 0x6f, 0x6c,
+ 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
+ 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e,
+ 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33,
0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69,
- 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e,
- 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xcf, 0x01, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0x42, 0x10, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x50,
- 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
- 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66,
- 0x6f, 0x72, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x67, 0x6f, 0x2f,
- 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0xa2, 0x02, 0x03, 0x50, 0x4f, 0x58, 0xaa, 0x02, 0x12, 0x50, 0x6f, 0x6c, 0x69, 0x63,
- 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xca, 0x02, 0x12,
- 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
- 0x6e, 0x73, 0xe2, 0x02, 0x1e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x4f, 0x62, 0x6c, 0x69,
- 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64,
- 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x3a, 0x3a, 0x4f, 0x62,
- 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
- 0x33,
+ 0x6f, 0x6e, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f,
+ 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x84, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62,
+ 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73,
+ 0x12, 0x31, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69, 0x67, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61,
+ 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75,
+ 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c,
+ 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6c,
+ 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x73, 0x52,
+ 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xcf, 0x01, 0x0a,
+ 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6f, 0x62, 0x6c, 0x69,
+ 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x10, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74,
+ 0x69, 0x6f, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3a, 0x67, 0x69, 0x74,
+ 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f,
+ 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
+ 0x6c, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x6f, 0x62, 0x6c, 0x69,
+ 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xa2, 0x02, 0x03, 0x50, 0x4f, 0x58, 0xaa, 0x02, 0x12,
+ 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f,
+ 0x6e, 0x73, 0xca, 0x02, 0x12, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x4f, 0x62, 0x6c, 0x69,
+ 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0xe2, 0x02, 0x1e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79,
+ 0x5c, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x5c, 0x47, 0x50, 0x42,
+ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x13, 0x50, 0x6f, 0x6c, 0x69, 0x63,
+ 0x79, 0x3a, 0x3a, 0x4f, 0x62, 0x6c, 0x69, 0x67, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x62, 0x06,
+ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -2157,120 +2302,127 @@ func file_policy_obligations_obligations_proto_rawDescGZIP() []byte {
return file_policy_obligations_obligations_proto_rawDescData
}
-var file_policy_obligations_obligations_proto_msgTypes = make([]protoimpl.MessageInfo, 31)
+var file_policy_obligations_obligations_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
+var file_policy_obligations_obligations_proto_msgTypes = make([]protoimpl.MessageInfo, 32)
var file_policy_obligations_obligations_proto_goTypes = []interface{}{
- (*GetObligationRequest)(nil), // 0: policy.obligations.GetObligationRequest
- (*ValueTriggerRequest)(nil), // 1: policy.obligations.ValueTriggerRequest
- (*GetObligationResponse)(nil), // 2: policy.obligations.GetObligationResponse
- (*GetObligationsByFQNsRequest)(nil), // 3: policy.obligations.GetObligationsByFQNsRequest
- (*GetObligationsByFQNsResponse)(nil), // 4: policy.obligations.GetObligationsByFQNsResponse
- (*CreateObligationRequest)(nil), // 5: policy.obligations.CreateObligationRequest
- (*CreateObligationResponse)(nil), // 6: policy.obligations.CreateObligationResponse
- (*UpdateObligationRequest)(nil), // 7: policy.obligations.UpdateObligationRequest
- (*UpdateObligationResponse)(nil), // 8: policy.obligations.UpdateObligationResponse
- (*DeleteObligationRequest)(nil), // 9: policy.obligations.DeleteObligationRequest
- (*DeleteObligationResponse)(nil), // 10: policy.obligations.DeleteObligationResponse
- (*ListObligationsRequest)(nil), // 11: policy.obligations.ListObligationsRequest
- (*ListObligationsResponse)(nil), // 12: policy.obligations.ListObligationsResponse
- (*GetObligationValueRequest)(nil), // 13: policy.obligations.GetObligationValueRequest
- (*GetObligationValueResponse)(nil), // 14: policy.obligations.GetObligationValueResponse
- (*GetObligationValuesByFQNsRequest)(nil), // 15: policy.obligations.GetObligationValuesByFQNsRequest
- (*GetObligationValuesByFQNsResponse)(nil), // 16: policy.obligations.GetObligationValuesByFQNsResponse
- (*CreateObligationValueRequest)(nil), // 17: policy.obligations.CreateObligationValueRequest
- (*CreateObligationValueResponse)(nil), // 18: policy.obligations.CreateObligationValueResponse
- (*UpdateObligationValueRequest)(nil), // 19: policy.obligations.UpdateObligationValueRequest
- (*UpdateObligationValueResponse)(nil), // 20: policy.obligations.UpdateObligationValueResponse
- (*DeleteObligationValueRequest)(nil), // 21: policy.obligations.DeleteObligationValueRequest
- (*DeleteObligationValueResponse)(nil), // 22: policy.obligations.DeleteObligationValueResponse
- (*AddObligationTriggerRequest)(nil), // 23: policy.obligations.AddObligationTriggerRequest
- (*AddObligationTriggerResponse)(nil), // 24: policy.obligations.AddObligationTriggerResponse
- (*RemoveObligationTriggerRequest)(nil), // 25: policy.obligations.RemoveObligationTriggerRequest
- (*RemoveObligationTriggerResponse)(nil), // 26: policy.obligations.RemoveObligationTriggerResponse
- (*ListObligationTriggersRequest)(nil), // 27: policy.obligations.ListObligationTriggersRequest
- (*ListObligationTriggersResponse)(nil), // 28: policy.obligations.ListObligationTriggersResponse
- nil, // 29: policy.obligations.GetObligationsByFQNsResponse.FqnObligationMapEntry
- nil, // 30: policy.obligations.GetObligationValuesByFQNsResponse.FqnValueMapEntry
- (*common.IdNameIdentifier)(nil), // 31: common.IdNameIdentifier
- (*common.IdFqnIdentifier)(nil), // 32: common.IdFqnIdentifier
- (*policy.RequestContext)(nil), // 33: policy.RequestContext
- (*policy.Obligation)(nil), // 34: policy.Obligation
- (*common.MetadataMutable)(nil), // 35: common.MetadataMutable
- (common.MetadataUpdateEnum)(0), // 36: common.MetadataUpdateEnum
- (*policy.PageRequest)(nil), // 37: policy.PageRequest
- (*policy.PageResponse)(nil), // 38: policy.PageResponse
- (*policy.ObligationValue)(nil), // 39: policy.ObligationValue
- (*policy.ObligationTrigger)(nil), // 40: policy.ObligationTrigger
+ (SortObligationsType)(0), // 0: policy.obligations.SortObligationsType
+ (*ObligationsSort)(nil), // 1: policy.obligations.ObligationsSort
+ (*GetObligationRequest)(nil), // 2: policy.obligations.GetObligationRequest
+ (*ValueTriggerRequest)(nil), // 3: policy.obligations.ValueTriggerRequest
+ (*GetObligationResponse)(nil), // 4: policy.obligations.GetObligationResponse
+ (*GetObligationsByFQNsRequest)(nil), // 5: policy.obligations.GetObligationsByFQNsRequest
+ (*GetObligationsByFQNsResponse)(nil), // 6: policy.obligations.GetObligationsByFQNsResponse
+ (*CreateObligationRequest)(nil), // 7: policy.obligations.CreateObligationRequest
+ (*CreateObligationResponse)(nil), // 8: policy.obligations.CreateObligationResponse
+ (*UpdateObligationRequest)(nil), // 9: policy.obligations.UpdateObligationRequest
+ (*UpdateObligationResponse)(nil), // 10: policy.obligations.UpdateObligationResponse
+ (*DeleteObligationRequest)(nil), // 11: policy.obligations.DeleteObligationRequest
+ (*DeleteObligationResponse)(nil), // 12: policy.obligations.DeleteObligationResponse
+ (*ListObligationsRequest)(nil), // 13: policy.obligations.ListObligationsRequest
+ (*ListObligationsResponse)(nil), // 14: policy.obligations.ListObligationsResponse
+ (*GetObligationValueRequest)(nil), // 15: policy.obligations.GetObligationValueRequest
+ (*GetObligationValueResponse)(nil), // 16: policy.obligations.GetObligationValueResponse
+ (*GetObligationValuesByFQNsRequest)(nil), // 17: policy.obligations.GetObligationValuesByFQNsRequest
+ (*GetObligationValuesByFQNsResponse)(nil), // 18: policy.obligations.GetObligationValuesByFQNsResponse
+ (*CreateObligationValueRequest)(nil), // 19: policy.obligations.CreateObligationValueRequest
+ (*CreateObligationValueResponse)(nil), // 20: policy.obligations.CreateObligationValueResponse
+ (*UpdateObligationValueRequest)(nil), // 21: policy.obligations.UpdateObligationValueRequest
+ (*UpdateObligationValueResponse)(nil), // 22: policy.obligations.UpdateObligationValueResponse
+ (*DeleteObligationValueRequest)(nil), // 23: policy.obligations.DeleteObligationValueRequest
+ (*DeleteObligationValueResponse)(nil), // 24: policy.obligations.DeleteObligationValueResponse
+ (*AddObligationTriggerRequest)(nil), // 25: policy.obligations.AddObligationTriggerRequest
+ (*AddObligationTriggerResponse)(nil), // 26: policy.obligations.AddObligationTriggerResponse
+ (*RemoveObligationTriggerRequest)(nil), // 27: policy.obligations.RemoveObligationTriggerRequest
+ (*RemoveObligationTriggerResponse)(nil), // 28: policy.obligations.RemoveObligationTriggerResponse
+ (*ListObligationTriggersRequest)(nil), // 29: policy.obligations.ListObligationTriggersRequest
+ (*ListObligationTriggersResponse)(nil), // 30: policy.obligations.ListObligationTriggersResponse
+ nil, // 31: policy.obligations.GetObligationsByFQNsResponse.FqnObligationMapEntry
+ nil, // 32: policy.obligations.GetObligationValuesByFQNsResponse.FqnValueMapEntry
+ (policy.SortDirection)(0), // 33: policy.SortDirection
+ (*common.IdNameIdentifier)(nil), // 34: common.IdNameIdentifier
+ (*common.IdFqnIdentifier)(nil), // 35: common.IdFqnIdentifier
+ (*policy.RequestContext)(nil), // 36: policy.RequestContext
+ (*policy.Obligation)(nil), // 37: policy.Obligation
+ (*common.MetadataMutable)(nil), // 38: common.MetadataMutable
+ (common.MetadataUpdateEnum)(0), // 39: common.MetadataUpdateEnum
+ (*policy.PageRequest)(nil), // 40: policy.PageRequest
+ (*policy.PageResponse)(nil), // 41: policy.PageResponse
+ (*policy.ObligationValue)(nil), // 42: policy.ObligationValue
+ (*policy.ObligationTrigger)(nil), // 43: policy.ObligationTrigger
}
var file_policy_obligations_obligations_proto_depIdxs = []int32{
- 31, // 0: policy.obligations.ValueTriggerRequest.action:type_name -> common.IdNameIdentifier
- 32, // 1: policy.obligations.ValueTriggerRequest.attribute_value:type_name -> common.IdFqnIdentifier
- 33, // 2: policy.obligations.ValueTriggerRequest.context:type_name -> policy.RequestContext
- 34, // 3: policy.obligations.GetObligationResponse.obligation:type_name -> policy.Obligation
- 29, // 4: policy.obligations.GetObligationsByFQNsResponse.fqn_obligation_map:type_name -> policy.obligations.GetObligationsByFQNsResponse.FqnObligationMapEntry
- 35, // 5: policy.obligations.CreateObligationRequest.metadata:type_name -> common.MetadataMutable
- 34, // 6: policy.obligations.CreateObligationResponse.obligation:type_name -> policy.Obligation
- 35, // 7: policy.obligations.UpdateObligationRequest.metadata:type_name -> common.MetadataMutable
- 36, // 8: policy.obligations.UpdateObligationRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum
- 34, // 9: policy.obligations.UpdateObligationResponse.obligation:type_name -> policy.Obligation
- 34, // 10: policy.obligations.DeleteObligationResponse.obligation:type_name -> policy.Obligation
- 37, // 11: policy.obligations.ListObligationsRequest.pagination:type_name -> policy.PageRequest
- 34, // 12: policy.obligations.ListObligationsResponse.obligations:type_name -> policy.Obligation
- 38, // 13: policy.obligations.ListObligationsResponse.pagination:type_name -> policy.PageResponse
- 39, // 14: policy.obligations.GetObligationValueResponse.value:type_name -> policy.ObligationValue
- 30, // 15: policy.obligations.GetObligationValuesByFQNsResponse.fqn_value_map:type_name -> policy.obligations.GetObligationValuesByFQNsResponse.FqnValueMapEntry
- 1, // 16: policy.obligations.CreateObligationValueRequest.triggers:type_name -> policy.obligations.ValueTriggerRequest
- 35, // 17: policy.obligations.CreateObligationValueRequest.metadata:type_name -> common.MetadataMutable
- 39, // 18: policy.obligations.CreateObligationValueResponse.value:type_name -> policy.ObligationValue
- 1, // 19: policy.obligations.UpdateObligationValueRequest.triggers:type_name -> policy.obligations.ValueTriggerRequest
- 35, // 20: policy.obligations.UpdateObligationValueRequest.metadata:type_name -> common.MetadataMutable
- 36, // 21: policy.obligations.UpdateObligationValueRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum
- 39, // 22: policy.obligations.UpdateObligationValueResponse.value:type_name -> policy.ObligationValue
- 39, // 23: policy.obligations.DeleteObligationValueResponse.value:type_name -> policy.ObligationValue
- 32, // 24: policy.obligations.AddObligationTriggerRequest.obligation_value:type_name -> common.IdFqnIdentifier
- 31, // 25: policy.obligations.AddObligationTriggerRequest.action:type_name -> common.IdNameIdentifier
- 32, // 26: policy.obligations.AddObligationTriggerRequest.attribute_value:type_name -> common.IdFqnIdentifier
- 33, // 27: policy.obligations.AddObligationTriggerRequest.context:type_name -> policy.RequestContext
- 35, // 28: policy.obligations.AddObligationTriggerRequest.metadata:type_name -> common.MetadataMutable
- 40, // 29: policy.obligations.AddObligationTriggerResponse.trigger:type_name -> policy.ObligationTrigger
- 40, // 30: policy.obligations.RemoveObligationTriggerResponse.trigger:type_name -> policy.ObligationTrigger
- 37, // 31: policy.obligations.ListObligationTriggersRequest.pagination:type_name -> policy.PageRequest
- 40, // 32: policy.obligations.ListObligationTriggersResponse.triggers:type_name -> policy.ObligationTrigger
- 38, // 33: policy.obligations.ListObligationTriggersResponse.pagination:type_name -> policy.PageResponse
- 34, // 34: policy.obligations.GetObligationsByFQNsResponse.FqnObligationMapEntry.value:type_name -> policy.Obligation
- 39, // 35: policy.obligations.GetObligationValuesByFQNsResponse.FqnValueMapEntry.value:type_name -> policy.ObligationValue
- 11, // 36: policy.obligations.Service.ListObligations:input_type -> policy.obligations.ListObligationsRequest
- 0, // 37: policy.obligations.Service.GetObligation:input_type -> policy.obligations.GetObligationRequest
- 3, // 38: policy.obligations.Service.GetObligationsByFQNs:input_type -> policy.obligations.GetObligationsByFQNsRequest
- 5, // 39: policy.obligations.Service.CreateObligation:input_type -> policy.obligations.CreateObligationRequest
- 7, // 40: policy.obligations.Service.UpdateObligation:input_type -> policy.obligations.UpdateObligationRequest
- 9, // 41: policy.obligations.Service.DeleteObligation:input_type -> policy.obligations.DeleteObligationRequest
- 13, // 42: policy.obligations.Service.GetObligationValue:input_type -> policy.obligations.GetObligationValueRequest
- 15, // 43: policy.obligations.Service.GetObligationValuesByFQNs:input_type -> policy.obligations.GetObligationValuesByFQNsRequest
- 17, // 44: policy.obligations.Service.CreateObligationValue:input_type -> policy.obligations.CreateObligationValueRequest
- 19, // 45: policy.obligations.Service.UpdateObligationValue:input_type -> policy.obligations.UpdateObligationValueRequest
- 21, // 46: policy.obligations.Service.DeleteObligationValue:input_type -> policy.obligations.DeleteObligationValueRequest
- 23, // 47: policy.obligations.Service.AddObligationTrigger:input_type -> policy.obligations.AddObligationTriggerRequest
- 25, // 48: policy.obligations.Service.RemoveObligationTrigger:input_type -> policy.obligations.RemoveObligationTriggerRequest
- 27, // 49: policy.obligations.Service.ListObligationTriggers:input_type -> policy.obligations.ListObligationTriggersRequest
- 12, // 50: policy.obligations.Service.ListObligations:output_type -> policy.obligations.ListObligationsResponse
- 2, // 51: policy.obligations.Service.GetObligation:output_type -> policy.obligations.GetObligationResponse
- 4, // 52: policy.obligations.Service.GetObligationsByFQNs:output_type -> policy.obligations.GetObligationsByFQNsResponse
- 6, // 53: policy.obligations.Service.CreateObligation:output_type -> policy.obligations.CreateObligationResponse
- 8, // 54: policy.obligations.Service.UpdateObligation:output_type -> policy.obligations.UpdateObligationResponse
- 10, // 55: policy.obligations.Service.DeleteObligation:output_type -> policy.obligations.DeleteObligationResponse
- 14, // 56: policy.obligations.Service.GetObligationValue:output_type -> policy.obligations.GetObligationValueResponse
- 16, // 57: policy.obligations.Service.GetObligationValuesByFQNs:output_type -> policy.obligations.GetObligationValuesByFQNsResponse
- 18, // 58: policy.obligations.Service.CreateObligationValue:output_type -> policy.obligations.CreateObligationValueResponse
- 20, // 59: policy.obligations.Service.UpdateObligationValue:output_type -> policy.obligations.UpdateObligationValueResponse
- 22, // 60: policy.obligations.Service.DeleteObligationValue:output_type -> policy.obligations.DeleteObligationValueResponse
- 24, // 61: policy.obligations.Service.AddObligationTrigger:output_type -> policy.obligations.AddObligationTriggerResponse
- 26, // 62: policy.obligations.Service.RemoveObligationTrigger:output_type -> policy.obligations.RemoveObligationTriggerResponse
- 28, // 63: policy.obligations.Service.ListObligationTriggers:output_type -> policy.obligations.ListObligationTriggersResponse
- 50, // [50:64] is the sub-list for method output_type
- 36, // [36:50] is the sub-list for method input_type
- 36, // [36:36] is the sub-list for extension type_name
- 36, // [36:36] is the sub-list for extension extendee
- 0, // [0:36] is the sub-list for field type_name
+ 0, // 0: policy.obligations.ObligationsSort.field:type_name -> policy.obligations.SortObligationsType
+ 33, // 1: policy.obligations.ObligationsSort.direction:type_name -> policy.SortDirection
+ 34, // 2: policy.obligations.ValueTriggerRequest.action:type_name -> common.IdNameIdentifier
+ 35, // 3: policy.obligations.ValueTriggerRequest.attribute_value:type_name -> common.IdFqnIdentifier
+ 36, // 4: policy.obligations.ValueTriggerRequest.context:type_name -> policy.RequestContext
+ 37, // 5: policy.obligations.GetObligationResponse.obligation:type_name -> policy.Obligation
+ 31, // 6: policy.obligations.GetObligationsByFQNsResponse.fqn_obligation_map:type_name -> policy.obligations.GetObligationsByFQNsResponse.FqnObligationMapEntry
+ 38, // 7: policy.obligations.CreateObligationRequest.metadata:type_name -> common.MetadataMutable
+ 37, // 8: policy.obligations.CreateObligationResponse.obligation:type_name -> policy.Obligation
+ 38, // 9: policy.obligations.UpdateObligationRequest.metadata:type_name -> common.MetadataMutable
+ 39, // 10: policy.obligations.UpdateObligationRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum
+ 37, // 11: policy.obligations.UpdateObligationResponse.obligation:type_name -> policy.Obligation
+ 37, // 12: policy.obligations.DeleteObligationResponse.obligation:type_name -> policy.Obligation
+ 40, // 13: policy.obligations.ListObligationsRequest.pagination:type_name -> policy.PageRequest
+ 1, // 14: policy.obligations.ListObligationsRequest.sort:type_name -> policy.obligations.ObligationsSort
+ 37, // 15: policy.obligations.ListObligationsResponse.obligations:type_name -> policy.Obligation
+ 41, // 16: policy.obligations.ListObligationsResponse.pagination:type_name -> policy.PageResponse
+ 42, // 17: policy.obligations.GetObligationValueResponse.value:type_name -> policy.ObligationValue
+ 32, // 18: policy.obligations.GetObligationValuesByFQNsResponse.fqn_value_map:type_name -> policy.obligations.GetObligationValuesByFQNsResponse.FqnValueMapEntry
+ 3, // 19: policy.obligations.CreateObligationValueRequest.triggers:type_name -> policy.obligations.ValueTriggerRequest
+ 38, // 20: policy.obligations.CreateObligationValueRequest.metadata:type_name -> common.MetadataMutable
+ 42, // 21: policy.obligations.CreateObligationValueResponse.value:type_name -> policy.ObligationValue
+ 3, // 22: policy.obligations.UpdateObligationValueRequest.triggers:type_name -> policy.obligations.ValueTriggerRequest
+ 38, // 23: policy.obligations.UpdateObligationValueRequest.metadata:type_name -> common.MetadataMutable
+ 39, // 24: policy.obligations.UpdateObligationValueRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum
+ 42, // 25: policy.obligations.UpdateObligationValueResponse.value:type_name -> policy.ObligationValue
+ 42, // 26: policy.obligations.DeleteObligationValueResponse.value:type_name -> policy.ObligationValue
+ 35, // 27: policy.obligations.AddObligationTriggerRequest.obligation_value:type_name -> common.IdFqnIdentifier
+ 34, // 28: policy.obligations.AddObligationTriggerRequest.action:type_name -> common.IdNameIdentifier
+ 35, // 29: policy.obligations.AddObligationTriggerRequest.attribute_value:type_name -> common.IdFqnIdentifier
+ 36, // 30: policy.obligations.AddObligationTriggerRequest.context:type_name -> policy.RequestContext
+ 38, // 31: policy.obligations.AddObligationTriggerRequest.metadata:type_name -> common.MetadataMutable
+ 43, // 32: policy.obligations.AddObligationTriggerResponse.trigger:type_name -> policy.ObligationTrigger
+ 43, // 33: policy.obligations.RemoveObligationTriggerResponse.trigger:type_name -> policy.ObligationTrigger
+ 40, // 34: policy.obligations.ListObligationTriggersRequest.pagination:type_name -> policy.PageRequest
+ 43, // 35: policy.obligations.ListObligationTriggersResponse.triggers:type_name -> policy.ObligationTrigger
+ 41, // 36: policy.obligations.ListObligationTriggersResponse.pagination:type_name -> policy.PageResponse
+ 37, // 37: policy.obligations.GetObligationsByFQNsResponse.FqnObligationMapEntry.value:type_name -> policy.Obligation
+ 42, // 38: policy.obligations.GetObligationValuesByFQNsResponse.FqnValueMapEntry.value:type_name -> policy.ObligationValue
+ 13, // 39: policy.obligations.Service.ListObligations:input_type -> policy.obligations.ListObligationsRequest
+ 2, // 40: policy.obligations.Service.GetObligation:input_type -> policy.obligations.GetObligationRequest
+ 5, // 41: policy.obligations.Service.GetObligationsByFQNs:input_type -> policy.obligations.GetObligationsByFQNsRequest
+ 7, // 42: policy.obligations.Service.CreateObligation:input_type -> policy.obligations.CreateObligationRequest
+ 9, // 43: policy.obligations.Service.UpdateObligation:input_type -> policy.obligations.UpdateObligationRequest
+ 11, // 44: policy.obligations.Service.DeleteObligation:input_type -> policy.obligations.DeleteObligationRequest
+ 15, // 45: policy.obligations.Service.GetObligationValue:input_type -> policy.obligations.GetObligationValueRequest
+ 17, // 46: policy.obligations.Service.GetObligationValuesByFQNs:input_type -> policy.obligations.GetObligationValuesByFQNsRequest
+ 19, // 47: policy.obligations.Service.CreateObligationValue:input_type -> policy.obligations.CreateObligationValueRequest
+ 21, // 48: policy.obligations.Service.UpdateObligationValue:input_type -> policy.obligations.UpdateObligationValueRequest
+ 23, // 49: policy.obligations.Service.DeleteObligationValue:input_type -> policy.obligations.DeleteObligationValueRequest
+ 25, // 50: policy.obligations.Service.AddObligationTrigger:input_type -> policy.obligations.AddObligationTriggerRequest
+ 27, // 51: policy.obligations.Service.RemoveObligationTrigger:input_type -> policy.obligations.RemoveObligationTriggerRequest
+ 29, // 52: policy.obligations.Service.ListObligationTriggers:input_type -> policy.obligations.ListObligationTriggersRequest
+ 14, // 53: policy.obligations.Service.ListObligations:output_type -> policy.obligations.ListObligationsResponse
+ 4, // 54: policy.obligations.Service.GetObligation:output_type -> policy.obligations.GetObligationResponse
+ 6, // 55: policy.obligations.Service.GetObligationsByFQNs:output_type -> policy.obligations.GetObligationsByFQNsResponse
+ 8, // 56: policy.obligations.Service.CreateObligation:output_type -> policy.obligations.CreateObligationResponse
+ 10, // 57: policy.obligations.Service.UpdateObligation:output_type -> policy.obligations.UpdateObligationResponse
+ 12, // 58: policy.obligations.Service.DeleteObligation:output_type -> policy.obligations.DeleteObligationResponse
+ 16, // 59: policy.obligations.Service.GetObligationValue:output_type -> policy.obligations.GetObligationValueResponse
+ 18, // 60: policy.obligations.Service.GetObligationValuesByFQNs:output_type -> policy.obligations.GetObligationValuesByFQNsResponse
+ 20, // 61: policy.obligations.Service.CreateObligationValue:output_type -> policy.obligations.CreateObligationValueResponse
+ 22, // 62: policy.obligations.Service.UpdateObligationValue:output_type -> policy.obligations.UpdateObligationValueResponse
+ 24, // 63: policy.obligations.Service.DeleteObligationValue:output_type -> policy.obligations.DeleteObligationValueResponse
+ 26, // 64: policy.obligations.Service.AddObligationTrigger:output_type -> policy.obligations.AddObligationTriggerResponse
+ 28, // 65: policy.obligations.Service.RemoveObligationTrigger:output_type -> policy.obligations.RemoveObligationTriggerResponse
+ 30, // 66: policy.obligations.Service.ListObligationTriggers:output_type -> policy.obligations.ListObligationTriggersResponse
+ 53, // [53:67] is the sub-list for method output_type
+ 39, // [39:53] is the sub-list for method input_type
+ 39, // [39:39] is the sub-list for extension type_name
+ 39, // [39:39] is the sub-list for extension extendee
+ 0, // [0:39] is the sub-list for field type_name
}
func init() { file_policy_obligations_obligations_proto_init() }
@@ -2280,7 +2432,7 @@ func file_policy_obligations_obligations_proto_init() {
}
if !protoimpl.UnsafeEnabled {
file_policy_obligations_obligations_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetObligationRequest); i {
+ switch v := v.(*ObligationsSort); i {
case 0:
return &v.state
case 1:
@@ -2292,7 +2444,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ValueTriggerRequest); i {
+ switch v := v.(*GetObligationRequest); i {
case 0:
return &v.state
case 1:
@@ -2304,7 +2456,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetObligationResponse); i {
+ switch v := v.(*ValueTriggerRequest); i {
case 0:
return &v.state
case 1:
@@ -2316,7 +2468,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetObligationsByFQNsRequest); i {
+ switch v := v.(*GetObligationResponse); i {
case 0:
return &v.state
case 1:
@@ -2328,7 +2480,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetObligationsByFQNsResponse); i {
+ switch v := v.(*GetObligationsByFQNsRequest); i {
case 0:
return &v.state
case 1:
@@ -2340,7 +2492,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateObligationRequest); i {
+ switch v := v.(*GetObligationsByFQNsResponse); i {
case 0:
return &v.state
case 1:
@@ -2352,7 +2504,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateObligationResponse); i {
+ switch v := v.(*CreateObligationRequest); i {
case 0:
return &v.state
case 1:
@@ -2364,7 +2516,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateObligationRequest); i {
+ switch v := v.(*CreateObligationResponse); i {
case 0:
return &v.state
case 1:
@@ -2376,7 +2528,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateObligationResponse); i {
+ switch v := v.(*UpdateObligationRequest); i {
case 0:
return &v.state
case 1:
@@ -2388,7 +2540,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteObligationRequest); i {
+ switch v := v.(*UpdateObligationResponse); i {
case 0:
return &v.state
case 1:
@@ -2400,7 +2552,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteObligationResponse); i {
+ switch v := v.(*DeleteObligationRequest); i {
case 0:
return &v.state
case 1:
@@ -2412,7 +2564,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListObligationsRequest); i {
+ switch v := v.(*DeleteObligationResponse); i {
case 0:
return &v.state
case 1:
@@ -2424,7 +2576,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListObligationsResponse); i {
+ switch v := v.(*ListObligationsRequest); i {
case 0:
return &v.state
case 1:
@@ -2436,7 +2588,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetObligationValueRequest); i {
+ switch v := v.(*ListObligationsResponse); i {
case 0:
return &v.state
case 1:
@@ -2448,7 +2600,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetObligationValueResponse); i {
+ switch v := v.(*GetObligationValueRequest); i {
case 0:
return &v.state
case 1:
@@ -2460,7 +2612,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetObligationValuesByFQNsRequest); i {
+ switch v := v.(*GetObligationValueResponse); i {
case 0:
return &v.state
case 1:
@@ -2472,7 +2624,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*GetObligationValuesByFQNsResponse); i {
+ switch v := v.(*GetObligationValuesByFQNsRequest); i {
case 0:
return &v.state
case 1:
@@ -2484,7 +2636,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateObligationValueRequest); i {
+ switch v := v.(*GetObligationValuesByFQNsResponse); i {
case 0:
return &v.state
case 1:
@@ -2496,7 +2648,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*CreateObligationValueResponse); i {
+ switch v := v.(*CreateObligationValueRequest); i {
case 0:
return &v.state
case 1:
@@ -2508,7 +2660,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateObligationValueRequest); i {
+ switch v := v.(*CreateObligationValueResponse); i {
case 0:
return &v.state
case 1:
@@ -2520,7 +2672,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*UpdateObligationValueResponse); i {
+ switch v := v.(*UpdateObligationValueRequest); i {
case 0:
return &v.state
case 1:
@@ -2532,7 +2684,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteObligationValueRequest); i {
+ switch v := v.(*UpdateObligationValueResponse); i {
case 0:
return &v.state
case 1:
@@ -2544,7 +2696,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*DeleteObligationValueResponse); i {
+ switch v := v.(*DeleteObligationValueRequest); i {
case 0:
return &v.state
case 1:
@@ -2556,7 +2708,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AddObligationTriggerRequest); i {
+ switch v := v.(*DeleteObligationValueResponse); i {
case 0:
return &v.state
case 1:
@@ -2568,7 +2720,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*AddObligationTriggerResponse); i {
+ switch v := v.(*AddObligationTriggerRequest); i {
case 0:
return &v.state
case 1:
@@ -2580,7 +2732,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RemoveObligationTriggerRequest); i {
+ switch v := v.(*AddObligationTriggerResponse); i {
case 0:
return &v.state
case 1:
@@ -2592,7 +2744,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*RemoveObligationTriggerResponse); i {
+ switch v := v.(*RemoveObligationTriggerRequest); i {
case 0:
return &v.state
case 1:
@@ -2604,7 +2756,7 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
- switch v := v.(*ListObligationTriggersRequest); i {
+ switch v := v.(*RemoveObligationTriggerResponse); i {
case 0:
return &v.state
case 1:
@@ -2616,6 +2768,18 @@ func file_policy_obligations_obligations_proto_init() {
}
}
file_policy_obligations_obligations_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
+ switch v := v.(*ListObligationTriggersRequest); i {
+ case 0:
+ return &v.state
+ case 1:
+ return &v.sizeCache
+ case 2:
+ return &v.unknownFields
+ default:
+ return nil
+ }
+ }
+ file_policy_obligations_obligations_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ListObligationTriggersResponse); i {
case 0:
return &v.state
@@ -2633,13 +2797,14 @@ func file_policy_obligations_obligations_proto_init() {
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_policy_obligations_obligations_proto_rawDesc,
- NumEnums: 0,
- NumMessages: 31,
+ NumEnums: 1,
+ NumMessages: 32,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_policy_obligations_obligations_proto_goTypes,
DependencyIndexes: file_policy_obligations_obligations_proto_depIdxs,
+ EnumInfos: file_policy_obligations_obligations_proto_enumTypes,
MessageInfos: file_policy_obligations_obligations_proto_msgTypes,
}.Build()
File_policy_obligations_obligations_proto = out.File
diff --git a/service/policy/obligations/obligations.proto b/service/policy/obligations/obligations.proto
index a2812b3d61..613f99dcb9 100644
--- a/service/policy/obligations/obligations.proto
+++ b/service/policy/obligations/obligations.proto
@@ -12,6 +12,20 @@ import "buf/validate/validate.proto";
///
// Definitions
+
+enum SortObligationsType {
+ SORT_OBLIGATIONS_TYPE_UNSPECIFIED = 0;
+ SORT_OBLIGATIONS_TYPE_NAME = 1;
+ SORT_OBLIGATIONS_TYPE_FQN = 2;
+ SORT_OBLIGATIONS_TYPE_CREATED_AT = 3;
+ SORT_OBLIGATIONS_TYPE_UPDATED_AT = 4;
+}
+
+message ObligationsSort {
+ SortObligationsType field = 1;
+ policy.SortDirection direction = 2;
+}
+
message GetObligationRequest {
option (buf.validate.message).oneof = { fields: ["id", "fqn"], required: true };
string id = 1 [(buf.validate.field).string.uuid = true];
@@ -150,6 +164,11 @@ message ListObligationsRequest {
// Optional
policy.PageRequest pagination = 10;
+
+ // Optional - CONSTRAINT: max 1 item
+ // Default ordering when omitted or when the first entry's field is UNSPECIFIED:
+ // created_at DESC, then id ASC (tie-breaker).
+ repeated ObligationsSort sort = 11 [(buf.validate.field).repeated.max_items = 1];
}
message ListObligationsResponse {
From a7d43f5d25fb8ea809774419352724541407749c Mon Sep 17 00:00:00 2001
From: Diego <74568547+dsm20@users.noreply.github.com>
Date: Mon, 13 Apr 2026 13:42:55 -0400
Subject: [PATCH 02/18] add protovalidate tests
api-level tests for no items, 1 item, and 2 items sort (pass pass fail)
---
.../policy/obligations/obligations_test.go | 36 +++++++++++++++++++
1 file changed, 36 insertions(+)
diff --git a/service/policy/obligations/obligations_test.go b/service/policy/obligations/obligations_test.go
index d37d4f3d3b..aa0eb9eec4 100644
--- a/service/policy/obligations/obligations_test.go
+++ b/service/policy/obligations/obligations_test.go
@@ -1246,3 +1246,39 @@ func Test_ListObligationTriggers_Request(t *testing.T) {
})
}
}
+
+func Test_ListObligationRequest_Sort(t *testing.T) {
+ v := getValidator()
+
+ // no sort (valid)
+ req := &obligations.ListObligationsRequest{}
+ require.NoError(t, v.Validate(req))
+
+ // one sorted item (valid)
+ req = &obligations.ListObligationsRequest{
+ Sort: []*obligations.ObligationsSort{
+ {
+ Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_CREATED_AT,
+ Direction: policy.SortDirection_SORT_DIRECTION_ASC,
+ },
+ },
+ }
+ require.NoError(t, v.Validate(req))
+
+ // two items sorted (invalid, exceeds max_items = 1)
+ req = &obligations.ListObligationsRequest{
+ Sort: []*obligations.ObligationsSort{
+ {
+ Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_CREATED_AT,
+ Direction: policy.SortDirection_SORT_DIRECTION_ASC,
+ },
+ {
+ Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_NAME,
+ Direction: policy.SortDirection_SORT_DIRECTION_DESC,
+ },
+ },
+ }
+ err := v.Validate(req)
+ require.Error(t, err)
+ require.Contains(t, err.Error(), "sort")
+}
From 47484a6f10803182339056705edd499f0e352a91 Mon Sep 17 00:00:00 2001
From: Diego <74568547+dsm20@users.noreply.github.com>
Date: Mon, 13 Apr 2026 13:48:36 -0400
Subject: [PATCH 03/18] rename test to regular convention
---
service/policy/obligations/obligations_test.go | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/service/policy/obligations/obligations_test.go b/service/policy/obligations/obligations_test.go
index aa0eb9eec4..d0f8cadb99 100644
--- a/service/policy/obligations/obligations_test.go
+++ b/service/policy/obligations/obligations_test.go
@@ -1247,7 +1247,7 @@ func Test_ListObligationTriggers_Request(t *testing.T) {
}
}
-func Test_ListObligationRequest_Sort(t *testing.T) {
+func Test_ListObligationsRequest_Sort(t *testing.T) {
v := getValidator()
// no sort (valid)
From 33b2cb676455a7060f857c58d8e418c9eeb9db3c Mon Sep 17 00:00:00 2001
From: Diego <74568547+dsm20@users.noreply.github.com>
Date: Mon, 13 Apr 2026 13:54:47 -0400
Subject: [PATCH 04/18] add constants
fqn and name in utils
---
service/policy/db/utils.go | 2 ++
1 file changed, 2 insertions(+)
diff --git a/service/policy/db/utils.go b/service/policy/db/utils.go
index 9030e19d71..e27608027a 100644
--- a/service/policy/db/utils.go
+++ b/service/policy/db/utils.go
@@ -20,6 +20,8 @@ import (
const (
sortFieldCreatedAt = "created_at"
sortFieldUpdatedAt = "updated_at"
+ sortFieldName = "name"
+ SortFieldFQN = "fqn"
)
// Gathers request pagination limit/offset or configured default
From 7a860f19346e840db26646593c47247fd80d9f91 Mon Sep 17 00:00:00 2001
From: Diego <74568547+dsm20@users.noreply.github.com>
Date: Mon, 13 Apr 2026 13:59:54 -0400
Subject: [PATCH 05/18] replace SQL with CASE WHEN
in listObligations query, remove ORDER BY replace with CASE WHEN block.
FQN is assembled here. also regenerated sqlc
---
service/policy/db/obligations.sql.go | 44 +++++++++++++++++------
service/policy/db/queries/obligations.sql | 12 ++++++-
2 files changed, 45 insertions(+), 11 deletions(-)
diff --git a/service/policy/db/obligations.sql.go b/service/policy/db/obligations.sql.go
index 2e51dc545b..f7a764a220 100644
--- a/service/policy/db/obligations.sql.go
+++ b/service/policy/db/obligations.sql.go
@@ -1522,16 +1522,28 @@ WHERE
($1::uuid IS NULL OR od.namespace_id = $1::uuid) AND
($2::text IS NULL OR fqns.fqn = $2::text)
GROUP BY od.id, n.id, fqns.fqn, counted.total
-ORDER BY od.created_at DESC
-LIMIT $4
-OFFSET $3
+ORDER BY
+ CASE WHEN $3::text = 'name' AND $4::text = 'ASC' THEN od.name END ASC,
+ CASE WHEN $3::text = 'name' AND $4::text = 'DESC' THEN od.name END DESC,
+ CASE WHEN $3::text = 'fqn' AND $4::text = 'ASC' THEN fqns.fqn || '/obl/' || LOWER(od.name) END ASC,
+ CASE WHEN $3::text = 'fqn' AND $4::text = 'DESC' THEN fqns.fqn || '/obl/' || LOWER(od.name) END DESC,
+ CASE WHEN $3::text = 'created_at' AND $4::text = 'ASC' THEN od.created_at END ASC,
+ CASE WHEN $3::text = 'created_at' AND $4::text = 'DESC' THEN od.created_at END DESC,
+ CASE WHEN $3::text = 'updated_at' AND $4::text = 'ASC' THEN od.updated_at END ASC,
+ CASE WHEN $3::text = 'updated_at' AND $4::text = 'DESC' THEN od.updated_at END DESC,
+ od.created_at DESC,
+ od.id ASC
+LIMIT $6
+OFFSET $5
`
type listObligationsParams struct {
- NamespaceID pgtype.UUID `json:"namespace_id"`
- NamespaceFqn pgtype.Text `json:"namespace_fqn"`
- Offset int32 `json:"offset_"`
- Limit int32 `json:"limit_"`
+ NamespaceID pgtype.UUID `json:"namespace_id"`
+ NamespaceFqn pgtype.Text `json:"namespace_fqn"`
+ SortField string `json:"sort_field"`
+ SortDirection string `json:"sort_direction"`
+ Offset int32 `json:"offset_"`
+ Limit int32 `json:"limit_"`
}
type listObligationsRow struct {
@@ -1614,13 +1626,25 @@ type listObligationsRow struct {
// ($1::uuid IS NULL OR od.namespace_id = $1::uuid) AND
// ($2::text IS NULL OR fqns.fqn = $2::text)
// GROUP BY od.id, n.id, fqns.fqn, counted.total
-// ORDER BY od.created_at DESC
-// LIMIT $4
-// OFFSET $3
+// ORDER BY
+// CASE WHEN $3::text = 'name' AND $4::text = 'ASC' THEN od.name END ASC,
+// CASE WHEN $3::text = 'name' AND $4::text = 'DESC' THEN od.name END DESC,
+// CASE WHEN $3::text = 'fqn' AND $4::text = 'ASC' THEN fqns.fqn || '/obl/' || LOWER(od.name) END ASC,
+// CASE WHEN $3::text = 'fqn' AND $4::text = 'DESC' THEN fqns.fqn || '/obl/' || LOWER(od.name) END DESC,
+// CASE WHEN $3::text = 'created_at' AND $4::text = 'ASC' THEN od.created_at END ASC,
+// CASE WHEN $3::text = 'created_at' AND $4::text = 'DESC' THEN od.created_at END DESC,
+// CASE WHEN $3::text = 'updated_at' AND $4::text = 'ASC' THEN od.updated_at END ASC,
+// CASE WHEN $3::text = 'updated_at' AND $4::text = 'DESC' THEN od.updated_at END DESC,
+// od.created_at DESC,
+// od.id ASC
+// LIMIT $6
+// OFFSET $5
func (q *Queries) listObligations(ctx context.Context, arg listObligationsParams) ([]listObligationsRow, error) {
rows, err := q.db.Query(ctx, listObligations,
arg.NamespaceID,
arg.NamespaceFqn,
+ arg.SortField,
+ arg.SortDirection,
arg.Offset,
arg.Limit,
)
diff --git a/service/policy/db/queries/obligations.sql b/service/policy/db/queries/obligations.sql
index 5b4c259f2b..fad2585cca 100644
--- a/service/policy/db/queries/obligations.sql
+++ b/service/policy/db/queries/obligations.sql
@@ -187,7 +187,17 @@ WHERE
(sqlc.narg('namespace_id')::uuid IS NULL OR od.namespace_id = sqlc.narg('namespace_id')::uuid) AND
(sqlc.narg('namespace_fqn')::text IS NULL OR fqns.fqn = sqlc.narg('namespace_fqn')::text)
GROUP BY od.id, n.id, fqns.fqn, counted.total
-ORDER BY od.created_at DESC
+ORDER BY
+ CASE WHEN @sort_field::text = 'name' AND @sort_direction::text = 'ASC' THEN od.name END ASC,
+ CASE WHEN @sort_field::text = 'name' AND @sort_direction::text = 'DESC' THEN od.name END DESC,
+ CASE WHEN @sort_field::text = 'fqn' AND @sort_direction::text = 'ASC' THEN fqns.fqn || '/obl/' || LOWER(od.name) END ASC,
+ CASE WHEN @sort_field::text = 'fqn' AND @sort_direction::text = 'DESC' THEN fqns.fqn || '/obl/' || LOWER(od.name) END DESC,
+ CASE WHEN @sort_field::text = 'created_at' AND @sort_direction::text = 'ASC' THEN od.created_at END ASC,
+ CASE WHEN @sort_field::text = 'created_at' AND @sort_direction::text = 'DESC' THEN od.created_at END DESC,
+ CASE WHEN @sort_field::text = 'updated_at' AND @sort_direction::text = 'ASC' THEN od.updated_at END ASC,
+ CASE WHEN @sort_field::text = 'updated_at' AND @sort_direction::text = 'DESC' THEN od.updated_at END DESC,
+ od.created_at DESC,
+ od.id ASC
LIMIT @limit_
OFFSET @offset_;
From ce925f2c20841d9bd4463503bb61452c57f358d2 Mon Sep 17 00:00:00 2001
From: Diego <74568547+dsm20@users.noreply.github.com>
Date: Mon, 13 Apr 2026 14:11:08 -0400
Subject: [PATCH 06/18] remove tie breaker
this is getting saved for a later PR since its inconsistent across
listAPIs
---
service/policy/db/queries/obligations.sql | 1 -
1 file changed, 1 deletion(-)
diff --git a/service/policy/db/queries/obligations.sql b/service/policy/db/queries/obligations.sql
index fad2585cca..88396ebf5c 100644
--- a/service/policy/db/queries/obligations.sql
+++ b/service/policy/db/queries/obligations.sql
@@ -197,7 +197,6 @@ ORDER BY
CASE WHEN @sort_field::text = 'updated_at' AND @sort_direction::text = 'ASC' THEN od.updated_at END ASC,
CASE WHEN @sort_field::text = 'updated_at' AND @sort_direction::text = 'DESC' THEN od.updated_at END DESC,
od.created_at DESC,
- od.id ASC
LIMIT @limit_
OFFSET @offset_;
From a5313b0588c5534dd2e8141eff5cb84b95d2e070 Mon Sep 17 00:00:00 2001
From: Diego <74568547+dsm20@users.noreply.github.com>
Date: Mon, 13 Apr 2026 14:13:16 -0400
Subject: [PATCH 07/18] regenerate sql
---
service/policy/db/obligations.sql.go | 6 ++----
service/policy/db/queries/obligations.sql | 2 +-
2 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/service/policy/db/obligations.sql.go b/service/policy/db/obligations.sql.go
index f7a764a220..f5d6db6ac3 100644
--- a/service/policy/db/obligations.sql.go
+++ b/service/policy/db/obligations.sql.go
@@ -1531,8 +1531,7 @@ ORDER BY
CASE WHEN $3::text = 'created_at' AND $4::text = 'DESC' THEN od.created_at END DESC,
CASE WHEN $3::text = 'updated_at' AND $4::text = 'ASC' THEN od.updated_at END ASC,
CASE WHEN $3::text = 'updated_at' AND $4::text = 'DESC' THEN od.updated_at END DESC,
- od.created_at DESC,
- od.id ASC
+ od.created_at DESC
LIMIT $6
OFFSET $5
`
@@ -1635,8 +1634,7 @@ type listObligationsRow struct {
// CASE WHEN $3::text = 'created_at' AND $4::text = 'DESC' THEN od.created_at END DESC,
// CASE WHEN $3::text = 'updated_at' AND $4::text = 'ASC' THEN od.updated_at END ASC,
// CASE WHEN $3::text = 'updated_at' AND $4::text = 'DESC' THEN od.updated_at END DESC,
-// od.created_at DESC,
-// od.id ASC
+// od.created_at DESC
// LIMIT $6
// OFFSET $5
func (q *Queries) listObligations(ctx context.Context, arg listObligationsParams) ([]listObligationsRow, error) {
diff --git a/service/policy/db/queries/obligations.sql b/service/policy/db/queries/obligations.sql
index 88396ebf5c..d0002e4a24 100644
--- a/service/policy/db/queries/obligations.sql
+++ b/service/policy/db/queries/obligations.sql
@@ -196,7 +196,7 @@ ORDER BY
CASE WHEN @sort_field::text = 'created_at' AND @sort_direction::text = 'DESC' THEN od.created_at END DESC,
CASE WHEN @sort_field::text = 'updated_at' AND @sort_direction::text = 'ASC' THEN od.updated_at END ASC,
CASE WHEN @sort_field::text = 'updated_at' AND @sort_direction::text = 'DESC' THEN od.updated_at END DESC,
- od.created_at DESC,
+ od.created_at DESC
LIMIT @limit_
OFFSET @offset_;
From b1d28f2a9a094c34dc008a462146eba060729422 Mon Sep 17 00:00:00 2001
From: Diego <74568547+dsm20@users.noreply.github.com>
Date: Mon, 13 Apr 2026 14:36:45 -0400
Subject: [PATCH 08/18] add getSortParams in utils and unit tests function
12 unit tests, full coverage) in utils_test.go
---
service/policy/db/utils.go | 30 +++++++++
service/policy/db/utils_test.go | 109 ++++++++++++++++++++++++++++++++
2 files changed, 139 insertions(+)
diff --git a/service/policy/db/utils.go b/service/policy/db/utils.go
index e27608027a..1f185070eb 100644
--- a/service/policy/db/utils.go
+++ b/service/policy/db/utils.go
@@ -11,6 +11,7 @@ import (
"github.com/opentdf/platform/protocol/go/policy"
"github.com/opentdf/platform/protocol/go/policy/attributes"
"github.com/opentdf/platform/protocol/go/policy/namespaces"
+ "github.com/opentdf/platform/protocol/go/policy/obligations"
"github.com/opentdf/platform/protocol/go/policy/subjectmapping"
"github.com/opentdf/platform/service/pkg/db"
"google.golang.org/protobuf/encoding/protojson"
@@ -101,6 +102,35 @@ func GetSubjectConditionSetsSortParams(sort []*subjectmapping.SubjectConditionSe
return field, getSortDirection(s.GetDirection())
}
+// GetObligationsSortParams maps the strongly-typed ObligationsSort enum to
+// SQL-compatible field name and direction strings.
+// Returns empty strings when sort is nil or empty (backward compatible —
+// callers fall back to default ORDER BY created_at DESC).
+func GetObligationsSortParams(sort []*obligations.ObligationsSort) (string, string) {
+ if len(sort) == 0 || sort[0] == nil {
+ return "", ""
+ }
+ s := sort[0]
+
+ var field string
+ switch s.GetField() {
+ case obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_NAME:
+ field = sortFieldName
+ case obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_FQN:
+ field = SortFieldFQN
+ case obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_CREATED_AT:
+ field = sortFieldCreatedAt
+ case obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_UPDATED_AT:
+ field = sortFieldUpdatedAt
+ case obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_UNSPECIFIED:
+ return "", ""
+ default:
+ return "", ""
+ }
+
+ return field, getSortDirection(s.GetDirection())
+}
+
// Returns next page's offset if has not yet reached total, or else returns 0
func getNextOffset(currentOffset, limit, total int32) int32 {
next := currentOffset + limit
diff --git a/service/policy/db/utils_test.go b/service/policy/db/utils_test.go
index 0e29a6c2ae..0eb99a9634 100644
--- a/service/policy/db/utils_test.go
+++ b/service/policy/db/utils_test.go
@@ -6,6 +6,7 @@ import (
"github.com/opentdf/platform/protocol/go/policy"
"github.com/opentdf/platform/protocol/go/policy/attributes"
"github.com/opentdf/platform/protocol/go/policy/namespaces"
+ "github.com/opentdf/platform/protocol/go/policy/obligations"
"github.com/opentdf/platform/protocol/go/policy/subjectmapping"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -599,3 +600,111 @@ func Test_GetSubjectConditionSetsSortParams(t *testing.T) {
})
}
}
+
+func Test_GetObligationsSortParams(t *testing.T) {
+ cases := []struct {
+ name string
+ sort []*obligations.ObligationsSort
+ expectedField string
+ expectedDir string
+ }{
+ {
+ name: "nil sort returns empty strings",
+ sort: nil,
+ expectedField: "",
+ expectedDir: "",
+ },
+ {
+ name: "empty slice returns empty strings",
+ sort: []*obligations.ObligationsSort{},
+ expectedField: "",
+ expectedDir: "",
+ },
+ {
+ name: "nil element returns empty strings",
+ sort: []*obligations.ObligationsSort{nil},
+ expectedField: "",
+ expectedDir: "",
+ },
+ {
+ name: "UNSPECIFIED returns empty strings",
+ sort: []*obligations.ObligationsSort{
+ {Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_UNSPECIFIED, Direction: policy.SortDirection_SORT_DIRECTION_ASC},
+ },
+ expectedField: "",
+ expectedDir: "",
+ },
+ {
+ name: "NAME with ASC",
+ sort: []*obligations.ObligationsSort{
+ {Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_NAME, Direction: policy.SortDirection_SORT_DIRECTION_ASC},
+ },
+ expectedField: "name",
+ expectedDir: "ASC",
+ },
+ {
+ name: "NAME with DESC",
+ sort: []*obligations.ObligationsSort{
+ {Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_NAME, Direction: policy.SortDirection_SORT_DIRECTION_DESC},
+ },
+ expectedField: "name",
+ expectedDir: "DESC",
+ },
+ {
+ name: "FQN with ASC",
+ sort: []*obligations.ObligationsSort{
+ {Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_FQN, Direction: policy.SortDirection_SORT_DIRECTION_ASC},
+ },
+ expectedField: "fqn",
+ expectedDir: "ASC",
+ },
+ {
+ name: "FQN with unspecified direction defaults to ASC",
+ sort: []*obligations.ObligationsSort{
+ {Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_FQN},
+ },
+ expectedField: "fqn",
+ expectedDir: "ASC",
+ },
+ {
+ name: "CREATED_AT with ASC",
+ sort: []*obligations.ObligationsSort{
+ {Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_CREATED_AT, Direction: policy.SortDirection_SORT_DIRECTION_ASC},
+ },
+ expectedField: "created_at",
+ expectedDir: "ASC",
+ },
+ {
+ name: "CREATED_AT with DESC",
+ sort: []*obligations.ObligationsSort{
+ {Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_CREATED_AT, Direction: policy.SortDirection_SORT_DIRECTION_DESC},
+ },
+ expectedField: "created_at",
+ expectedDir: "DESC",
+ },
+ {
+ name: "UPDATED_AT with ASC",
+ sort: []*obligations.ObligationsSort{
+ {Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_UPDATED_AT, Direction: policy.SortDirection_SORT_DIRECTION_ASC},
+ },
+ expectedField: "updated_at",
+ expectedDir: "ASC",
+ },
+ {
+ name: "UPDATED_AT with DESC",
+ sort: []*obligations.ObligationsSort{
+ {Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_UPDATED_AT, Direction: policy.SortDirection_SORT_DIRECTION_DESC},
+ },
+ expectedField: "updated_at",
+ expectedDir: "DESC",
+ },
+ }
+
+ for _, tc := range cases {
+ t.Run(tc.name, func(t *testing.T) {
+ field, dir := GetObligationsSortParams(tc.sort)
+ assert.Equal(t, tc.expectedField, field)
+ assert.Equal(t, tc.expectedDir, dir)
+ })
+ }
+}
From e932c828dee82fbf85a2c9aa8e63b68e68ccff89 Mon Sep 17 00:00:00 2001
From: Diego <74568547+dsm20@users.noreply.github.com>
Date: Mon, 13 Apr 2026 14:41:11 -0400
Subject: [PATCH 09/18] listObligations go gets GetSortParams
wire sort params into the go DB function in /db/obligations.go
---
service/policy/db/obligations.go | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/service/policy/db/obligations.go b/service/policy/db/obligations.go
index b790027436..dcb20c9bfe 100644
--- a/service/policy/db/obligations.go
+++ b/service/policy/db/obligations.go
@@ -200,6 +200,8 @@ func (c PolicyDBClient) ListObligations(ctx context.Context, r *obligations.List
parsedID := pgtypeUUID(namespaceID)
idIsValid := parsedID.Valid
+ sortField, sortDirection := GetObligationsSortParams(r.GetSort())
+
if useID && !idIsValid {
return nil, nil, db.ErrUUIDInvalid
}
@@ -212,10 +214,12 @@ func (c PolicyDBClient) ListObligations(ctx context.Context, r *obligations.List
}
rows, err := c.queries.listObligations(ctx, listObligationsParams{
- NamespaceID: parsedID,
- NamespaceFqn: pgtypeText(r.GetNamespaceFqn()),
- Limit: limit,
- Offset: offset,
+ NamespaceID: parsedID,
+ NamespaceFqn: pgtypeText(r.GetNamespaceFqn()),
+ Limit: limit,
+ Offset: offset,
+ SortField: sortField,
+ SortDirection: sortDirection,
})
if err != nil {
return nil, nil, db.WrapIfKnownInvalidQueryErr(err)
From 8c30b96a695e35051d5e2f5fbabf6718563e3ec0 Mon Sep 17 00:00:00 2001
From: Diego <74568547+dsm20@users.noreply.github.com>
Date: Mon, 13 Apr 2026 15:00:21 -0400
Subject: [PATCH 10/18] add integration tests
full coverage (created_at, updated_at, name, fqn. two helpers for time
based and name based sorting. uses assertIDsInOrder helper across each
integration test
---
service/integration/obligations_test.go | 200 ++++++++++++++++++++++++
1 file changed, 200 insertions(+)
diff --git a/service/integration/obligations_test.go b/service/integration/obligations_test.go
index c6d450cd06..4d363570d7 100644
--- a/service/integration/obligations_test.go
+++ b/service/integration/obligations_test.go
@@ -1965,3 +1965,203 @@ func (s *ObligationsSuite) assertObligationValuesSpecificTriggers(obl *policy.Ob
}
}
}
+
+// Sort test helpers
+
+// createSortTestObligations creates 3 obligations with 5ms gaps for distinct timestamps.
+// Returns the obligation IDs in creation order.
+func (s *ObligationsSuite) createSortTestObligations(label string) []string {
+ namespaceID, _, _ := s.getNamespaceData(nsExampleCom)
+ const count = 3
+ ids := make([]string, count)
+ for i := range count {
+ if i > 0 {
+ time.Sleep(5 * time.Millisecond)
+ }
+ name := fmt.Sprintf("%s-%d-%d", label, i, time.Now().UnixNano())
+ obl := s.createObligation(namespaceID, name, nil)
+ ids[i] = obl.GetId()
+ }
+ return ids
+}
+
+// createNamedSortTestObligations creates obligations with specific name prefixes for name/FQN sort testing.
+// Returns the obligation IDs in the same order as the prefixes.
+func (s *ObligationsSuite) createNamedSortTestObligations(prefixes []string) []string {
+ namespaceID, _, _ := s.getNamespaceData(nsExampleCom)
+ suffix := time.Now().UnixNano()
+ ids := make([]string, len(prefixes))
+ for i, prefix := range prefixes {
+ name := fmt.Sprintf("%s-%d", prefix, suffix)
+ obl := s.createObligation(namespaceID, name, nil)
+ ids[i] = obl.GetId()
+ }
+ return ids
+}
+
+// Sort by Name
+
+func (s *ObligationsSuite) Test_ListObligations_SortByName_ASC() {
+ ids := s.createNamedSortTestObligations([]string{"aaa-sort", "bbb-sort", "ccc-sort"})
+
+ listRsp, _, err := s.db.PolicyClient.ListObligations(s.ctx, &obligations.ListObligationsRequest{
+ Sort: []*obligations.ObligationsSort{
+ {Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_NAME, Direction: policy.SortDirection_SORT_DIRECTION_ASC},
+ },
+ })
+ s.Require().NoError(err)
+ s.NotNil(listRsp)
+
+ // aaa < bbb < ccc in ASC order
+ assertIDsInOrder(s.T(), listRsp, func(o *policy.Obligation) string { return o.GetId() }, ids[0], ids[1], ids[2])
+}
+
+func (s *ObligationsSuite) Test_ListObligations_SortByName_DESC() {
+ ids := s.createNamedSortTestObligations([]string{"aaa-sortdesc", "bbb-sortdesc", "ccc-sortdesc"})
+
+ listRsp, _, err := s.db.PolicyClient.ListObligations(s.ctx, &obligations.ListObligationsRequest{
+ Sort: []*obligations.ObligationsSort{
+ {Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_NAME, Direction: policy.SortDirection_SORT_DIRECTION_DESC},
+ },
+ })
+ s.Require().NoError(err)
+ s.NotNil(listRsp)
+
+ // ccc > bbb > aaa in DESC order
+ assertIDsInOrder(s.T(), listRsp, func(o *policy.Obligation) string { return o.GetId() }, ids[2], ids[1], ids[0])
+}
+
+// Sort by FQN
+
+func (s *ObligationsSuite) Test_ListObligations_SortByFqn_ASC() {
+ ids := s.createNamedSortTestObligations([]string{"aaa-fqnsort", "bbb-fqnsort", "ccc-fqnsort"})
+
+ listRsp, _, err := s.db.PolicyClient.ListObligations(s.ctx, &obligations.ListObligationsRequest{
+ Sort: []*obligations.ObligationsSort{
+ {Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_FQN, Direction: policy.SortDirection_SORT_DIRECTION_ASC},
+ },
+ })
+ s.Require().NoError(err)
+ s.NotNil(listRsp)
+
+ // FQN is namespace_fqn/obl/name, so aaa < bbb < ccc in ASC order
+ assertIDsInOrder(s.T(), listRsp, func(o *policy.Obligation) string { return o.GetId() }, ids[0], ids[1], ids[2])
+}
+
+func (s *ObligationsSuite) Test_ListObligations_SortByFqn_DESC() {
+ ids := s.createNamedSortTestObligations([]string{"aaa-fqnsortdesc", "bbb-fqnsortdesc", "ccc-fqnsortdesc"})
+
+ listRsp, _, err := s.db.PolicyClient.ListObligations(s.ctx, &obligations.ListObligationsRequest{
+ Sort: []*obligations.ObligationsSort{
+ {Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_FQN, Direction: policy.SortDirection_SORT_DIRECTION_DESC},
+ },
+ })
+ s.Require().NoError(err)
+ s.NotNil(listRsp)
+
+ // ccc > bbb > aaa in DESC order
+ assertIDsInOrder(s.T(), listRsp, func(o *policy.Obligation) string { return o.GetId() }, ids[2], ids[1], ids[0])
+}
+
+// Sort by CreatedAt
+
+func (s *ObligationsSuite) Test_ListObligations_SortByCreatedAt_ASC() {
+ ids := s.createSortTestObligations("createdasc-obl")
+
+ listRsp, _, err := s.db.PolicyClient.ListObligations(s.ctx, &obligations.ListObligationsRequest{
+ Sort: []*obligations.ObligationsSort{
+ {Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_CREATED_AT, Direction: policy.SortDirection_SORT_DIRECTION_ASC},
+ },
+ })
+ s.Require().NoError(err)
+ s.NotNil(listRsp)
+
+ // oldest first in ASC order
+ assertIDsInOrder(s.T(), listRsp, func(o *policy.Obligation) string { return o.GetId() }, ids[0], ids[1], ids[2])
+}
+
+func (s *ObligationsSuite) Test_ListObligations_SortByCreatedAt_DESC() {
+ ids := s.createSortTestObligations("createddesc-obl")
+
+ listRsp, _, err := s.db.PolicyClient.ListObligations(s.ctx, &obligations.ListObligationsRequest{
+ Sort: []*obligations.ObligationsSort{
+ {Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_CREATED_AT, Direction: policy.SortDirection_SORT_DIRECTION_DESC},
+ },
+ })
+ s.Require().NoError(err)
+ s.NotNil(listRsp)
+
+ // newest first in DESC order
+ assertIDsInOrder(s.T(), listRsp, func(o *policy.Obligation) string { return o.GetId() }, ids[2], ids[1], ids[0])
+}
+
+// Sort by UpdatedAt
+
+func (s *ObligationsSuite) Test_ListObligations_SortByUpdatedAt_DESC() {
+ ids := s.createSortTestObligations("upd-sort-obl")
+
+ // Update the first obligation so its updated_at is the most recent
+ time.Sleep(5 * time.Millisecond)
+ _, err := s.db.PolicyClient.UpdateObligation(s.ctx, &obligations.UpdateObligationRequest{
+ Id: ids[0],
+ Metadata: &common.MetadataMutable{
+ Labels: map[string]string{"updated": "true"},
+ },
+ MetadataUpdateBehavior: common.MetadataUpdateEnum_METADATA_UPDATE_ENUM_REPLACE,
+ })
+ s.Require().NoError(err)
+
+ listRsp, _, err := s.db.PolicyClient.ListObligations(s.ctx, &obligations.ListObligationsRequest{
+ Sort: []*obligations.ObligationsSort{
+ {Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_UPDATED_AT, Direction: policy.SortDirection_SORT_DIRECTION_DESC},
+ },
+ })
+ s.Require().NoError(err)
+ s.NotNil(listRsp)
+
+ // The updated obligation (ids[0]) should appear before the others
+ assertIDsInOrder(s.T(), listRsp, func(o *policy.Obligation) string { return o.GetId() }, ids[0], ids[2], ids[1])
+}
+
+func (s *ObligationsSuite) Test_ListObligations_SortByUpdatedAt_ASC() {
+ ids := s.createSortTestObligations("upd-sort-asc-obl")
+
+ // Update the last obligation so its updated_at is the most recent
+ time.Sleep(5 * time.Millisecond)
+ _, err := s.db.PolicyClient.UpdateObligation(s.ctx, &obligations.UpdateObligationRequest{
+ Id: ids[2],
+ Metadata: &common.MetadataMutable{
+ Labels: map[string]string{"updated": "true"},
+ },
+ MetadataUpdateBehavior: common.MetadataUpdateEnum_METADATA_UPDATE_ENUM_REPLACE,
+ })
+ s.Require().NoError(err)
+
+ listRsp, _, err := s.db.PolicyClient.ListObligations(s.ctx, &obligations.ListObligationsRequest{
+ Sort: []*obligations.ObligationsSort{
+ {Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_UPDATED_AT, Direction: policy.SortDirection_SORT_DIRECTION_ASC},
+ },
+ })
+ s.Require().NoError(err)
+ s.NotNil(listRsp)
+
+ // The updated obligation (ids[2]) should appear last in ASC order
+ assertIDsInOrder(s.T(), listRsp, func(o *policy.Obligation) string { return o.GetId() }, ids[0], ids[1], ids[2])
+}
+
+// Sort by Unspecified (fallback to default)
+
+func (s *ObligationsSuite) Test_ListObligations_SortByUnspecifiedField_FallsBackToDefault() {
+ ids := s.createSortTestObligations("unspecified-sort-obl")
+
+ listRsp, _, err := s.db.PolicyClient.ListObligations(s.ctx, &obligations.ListObligationsRequest{
+ Sort: []*obligations.ObligationsSort{
+ {Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_UNSPECIFIED, Direction: policy.SortDirection_SORT_DIRECTION_ASC},
+ },
+ })
+ s.Require().NoError(err)
+ s.NotNil(listRsp)
+
+ // Falls back to default created_at DESC ordering
+ assertIDsInOrder(s.T(), listRsp, func(o *policy.Obligation) string { return o.GetId() }, ids[2], ids[1], ids[0])
+}
From cb39c35b9d96c1da42ae22ec0943764e1cc7e973 Mon Sep 17 00:00:00 2001
From: Diego <74568547+dsm20@users.noreply.github.com>
Date: Mon, 13 Apr 2026 15:03:59 -0400
Subject: [PATCH 11/18] fix const name inconsistency
---
service/policy/db/utils.go | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/service/policy/db/utils.go b/service/policy/db/utils.go
index 1f185070eb..52ba4cb55b 100644
--- a/service/policy/db/utils.go
+++ b/service/policy/db/utils.go
@@ -22,7 +22,7 @@ const (
sortFieldCreatedAt = "created_at"
sortFieldUpdatedAt = "updated_at"
sortFieldName = "name"
- SortFieldFQN = "fqn"
+ sortFieldFQN = "fqn"
)
// Gathers request pagination limit/offset or configured default
@@ -117,7 +117,7 @@ func GetObligationsSortParams(sort []*obligations.ObligationsSort) (string, stri
case obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_NAME:
field = sortFieldName
case obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_FQN:
- field = SortFieldFQN
+ field = sortFieldFQN
case obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_CREATED_AT:
field = sortFieldCreatedAt
case obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_UPDATED_AT:
From 92edeeeb05b2508e82ade3257299291bea90845d Mon Sep 17 00:00:00 2001
From: Diego <74568547+dsm20@users.noreply.github.com>
Date: Tue, 14 Apr 2026 09:26:45 -0400
Subject: [PATCH 12/18] move integration test helpers around
linter was upset
---
service/integration/obligations_test.go | 66 ++++++++++++-------------
1 file changed, 33 insertions(+), 33 deletions(-)
diff --git a/service/integration/obligations_test.go b/service/integration/obligations_test.go
index 4d363570d7..d0e1acd656 100644
--- a/service/integration/obligations_test.go
+++ b/service/integration/obligations_test.go
@@ -1966,39 +1966,6 @@ func (s *ObligationsSuite) assertObligationValuesSpecificTriggers(obl *policy.Ob
}
}
-// Sort test helpers
-
-// createSortTestObligations creates 3 obligations with 5ms gaps for distinct timestamps.
-// Returns the obligation IDs in creation order.
-func (s *ObligationsSuite) createSortTestObligations(label string) []string {
- namespaceID, _, _ := s.getNamespaceData(nsExampleCom)
- const count = 3
- ids := make([]string, count)
- for i := range count {
- if i > 0 {
- time.Sleep(5 * time.Millisecond)
- }
- name := fmt.Sprintf("%s-%d-%d", label, i, time.Now().UnixNano())
- obl := s.createObligation(namespaceID, name, nil)
- ids[i] = obl.GetId()
- }
- return ids
-}
-
-// createNamedSortTestObligations creates obligations with specific name prefixes for name/FQN sort testing.
-// Returns the obligation IDs in the same order as the prefixes.
-func (s *ObligationsSuite) createNamedSortTestObligations(prefixes []string) []string {
- namespaceID, _, _ := s.getNamespaceData(nsExampleCom)
- suffix := time.Now().UnixNano()
- ids := make([]string, len(prefixes))
- for i, prefix := range prefixes {
- name := fmt.Sprintf("%s-%d", prefix, suffix)
- obl := s.createObligation(namespaceID, name, nil)
- ids[i] = obl.GetId()
- }
- return ids
-}
-
// Sort by Name
func (s *ObligationsSuite) Test_ListObligations_SortByName_ASC() {
@@ -2165,3 +2132,36 @@ func (s *ObligationsSuite) Test_ListObligations_SortByUnspecifiedField_FallsBack
// Falls back to default created_at DESC ordering
assertIDsInOrder(s.T(), listRsp, func(o *policy.Obligation) string { return o.GetId() }, ids[2], ids[1], ids[0])
}
+
+// Sort test helpers
+
+// createSortTestObligations creates 3 obligations with 5ms gaps for distinct timestamps.
+// Returns the obligation IDs in creation order.
+func (s *ObligationsSuite) createSortTestObligations(label string) []string {
+ namespaceID, _, _ := s.getNamespaceData(nsExampleCom)
+ const count = 3
+ ids := make([]string, count)
+ for i := range count {
+ if i > 0 {
+ time.Sleep(5 * time.Millisecond)
+ }
+ name := fmt.Sprintf("%s-%d-%d", label, i, time.Now().UnixNano())
+ obl := s.createObligation(namespaceID, name, nil)
+ ids[i] = obl.GetId()
+ }
+ return ids
+}
+
+// createNamedSortTestObligations creates obligations with specific name prefixes for name/FQN sort testing.
+// Returns the obligation IDs in the same order as the prefixes.
+func (s *ObligationsSuite) createNamedSortTestObligations(prefixes []string) []string {
+ namespaceID, _, _ := s.getNamespaceData(nsExampleCom)
+ suffix := time.Now().UnixNano()
+ ids := make([]string, len(prefixes))
+ for i, prefix := range prefixes {
+ name := fmt.Sprintf("%s-%d", prefix, suffix)
+ obl := s.createObligation(namespaceID, name, nil)
+ ids[i] = obl.GetId()
+ }
+ return ids
+}
From acab6a6bd41b4a581eac8cfe1d22136095d51153 Mon Sep 17 00:00:00 2001
From: Diego <74568547+dsm20@users.noreply.github.com>
Date: Tue, 14 Apr 2026 09:44:53 -0400
Subject: [PATCH 13/18] clean up obligation IDs per test
added deleteObligations to run after each test returns so that stale ID data is not left in the DB after a run (integration tests)
---
service/integration/obligations_test.go | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/service/integration/obligations_test.go b/service/integration/obligations_test.go
index d0e1acd656..fc420b597f 100644
--- a/service/integration/obligations_test.go
+++ b/service/integration/obligations_test.go
@@ -1970,6 +1970,7 @@ func (s *ObligationsSuite) assertObligationValuesSpecificTriggers(obl *policy.Ob
func (s *ObligationsSuite) Test_ListObligations_SortByName_ASC() {
ids := s.createNamedSortTestObligations([]string{"aaa-sort", "bbb-sort", "ccc-sort"})
+ defer s.deleteObligations(ids)
listRsp, _, err := s.db.PolicyClient.ListObligations(s.ctx, &obligations.ListObligationsRequest{
Sort: []*obligations.ObligationsSort{
@@ -1985,6 +1986,7 @@ func (s *ObligationsSuite) Test_ListObligations_SortByName_ASC() {
func (s *ObligationsSuite) Test_ListObligations_SortByName_DESC() {
ids := s.createNamedSortTestObligations([]string{"aaa-sortdesc", "bbb-sortdesc", "ccc-sortdesc"})
+ defer s.deleteObligations(ids)
listRsp, _, err := s.db.PolicyClient.ListObligations(s.ctx, &obligations.ListObligationsRequest{
Sort: []*obligations.ObligationsSort{
@@ -2002,6 +2004,7 @@ func (s *ObligationsSuite) Test_ListObligations_SortByName_DESC() {
func (s *ObligationsSuite) Test_ListObligations_SortByFqn_ASC() {
ids := s.createNamedSortTestObligations([]string{"aaa-fqnsort", "bbb-fqnsort", "ccc-fqnsort"})
+ defer s.deleteObligations(ids)
listRsp, _, err := s.db.PolicyClient.ListObligations(s.ctx, &obligations.ListObligationsRequest{
Sort: []*obligations.ObligationsSort{
@@ -2017,6 +2020,7 @@ func (s *ObligationsSuite) Test_ListObligations_SortByFqn_ASC() {
func (s *ObligationsSuite) Test_ListObligations_SortByFqn_DESC() {
ids := s.createNamedSortTestObligations([]string{"aaa-fqnsortdesc", "bbb-fqnsortdesc", "ccc-fqnsortdesc"})
+ defer s.deleteObligations(ids)
listRsp, _, err := s.db.PolicyClient.ListObligations(s.ctx, &obligations.ListObligationsRequest{
Sort: []*obligations.ObligationsSort{
@@ -2034,6 +2038,7 @@ func (s *ObligationsSuite) Test_ListObligations_SortByFqn_DESC() {
func (s *ObligationsSuite) Test_ListObligations_SortByCreatedAt_ASC() {
ids := s.createSortTestObligations("createdasc-obl")
+ defer s.deleteObligations(ids)
listRsp, _, err := s.db.PolicyClient.ListObligations(s.ctx, &obligations.ListObligationsRequest{
Sort: []*obligations.ObligationsSort{
@@ -2049,6 +2054,7 @@ func (s *ObligationsSuite) Test_ListObligations_SortByCreatedAt_ASC() {
func (s *ObligationsSuite) Test_ListObligations_SortByCreatedAt_DESC() {
ids := s.createSortTestObligations("createddesc-obl")
+ defer s.deleteObligations(ids)
listRsp, _, err := s.db.PolicyClient.ListObligations(s.ctx, &obligations.ListObligationsRequest{
Sort: []*obligations.ObligationsSort{
@@ -2066,6 +2072,7 @@ func (s *ObligationsSuite) Test_ListObligations_SortByCreatedAt_DESC() {
func (s *ObligationsSuite) Test_ListObligations_SortByUpdatedAt_DESC() {
ids := s.createSortTestObligations("upd-sort-obl")
+ defer s.deleteObligations(ids)
// Update the first obligation so its updated_at is the most recent
time.Sleep(5 * time.Millisecond)
@@ -2092,6 +2099,7 @@ func (s *ObligationsSuite) Test_ListObligations_SortByUpdatedAt_DESC() {
func (s *ObligationsSuite) Test_ListObligations_SortByUpdatedAt_ASC() {
ids := s.createSortTestObligations("upd-sort-asc-obl")
+ defer s.deleteObligations(ids)
// Update the last obligation so its updated_at is the most recent
time.Sleep(5 * time.Millisecond)
@@ -2120,6 +2128,7 @@ func (s *ObligationsSuite) Test_ListObligations_SortByUpdatedAt_ASC() {
func (s *ObligationsSuite) Test_ListObligations_SortByUnspecifiedField_FallsBackToDefault() {
ids := s.createSortTestObligations("unspecified-sort-obl")
+ defer s.deleteObligations(ids)
listRsp, _, err := s.db.PolicyClient.ListObligations(s.ctx, &obligations.ListObligationsRequest{
Sort: []*obligations.ObligationsSort{
From 3cd4a6308bc3a31007f1454bb3e0e3122b8e0c43 Mon Sep 17 00:00:00 2001
From: Diego <74568547+dsm20@users.noreply.github.com>
Date: Tue, 14 Apr 2026 12:32:27 -0400
Subject: [PATCH 14/18] improve fqn integration tests
now FQNs are built using multiple namespaces (example.net vs example.com) AND different obl names. this proves two things: the sorting properly sorts full FQNs, not just obl names (as before), and second, obl name properly works as a tiebreaker within the same namespace. since this sorting case is fully deterministic there is no need for sql level tiebreaker however that is still needed in other sort cases like time based.
---
service/integration/obligations_test.go | 32 ++++++++++++++++++-------
1 file changed, 24 insertions(+), 8 deletions(-)
diff --git a/service/integration/obligations_test.go b/service/integration/obligations_test.go
index fc420b597f..d2afecaee6 100644
--- a/service/integration/obligations_test.go
+++ b/service/integration/obligations_test.go
@@ -2003,8 +2003,18 @@ func (s *ObligationsSuite) Test_ListObligations_SortByName_DESC() {
// Sort by FQN
func (s *ObligationsSuite) Test_ListObligations_SortByFqn_ASC() {
- ids := s.createNamedSortTestObligations([]string{"aaa-fqnsort", "bbb-fqnsort", "ccc-fqnsort"})
- defer s.deleteObligations(ids)
+ // Create obligations across two namespaces to prove FQN sort uses the full
+ // constructed FQN (namespace_fqn/obl/name), not just the name.
+ // "example.com" < "example.net" lexicographically, so even zzz in example.com
+ // sorts before aaa in example.net. Within example.com, name breaks the tie.
+ comID, _, _ := s.getNamespaceData(nsExampleCom)
+ netID, _, _ := s.getNamespaceData(nsExampleNet)
+ suffix := fmt.Sprintf("fqnasc-%d", time.Now().UnixNano())
+
+ oblComAAA := s.createObligation(comID, "aaa-"+suffix, nil)
+ oblComZZZ := s.createObligation(comID, "zzz-"+suffix, nil)
+ oblNetAAA := s.createObligation(netID, "aaa-"+suffix, nil)
+ defer s.deleteObligations([]string{oblComAAA.GetId(), oblComZZZ.GetId(), oblNetAAA.GetId()})
listRsp, _, err := s.db.PolicyClient.ListObligations(s.ctx, &obligations.ListObligationsRequest{
Sort: []*obligations.ObligationsSort{
@@ -2014,13 +2024,19 @@ func (s *ObligationsSuite) Test_ListObligations_SortByFqn_ASC() {
s.Require().NoError(err)
s.NotNil(listRsp)
- // FQN is namespace_fqn/obl/name, so aaa < bbb < ccc in ASC order
- assertIDsInOrder(s.T(), listRsp, func(o *policy.Obligation) string { return o.GetId() }, ids[0], ids[1], ids[2])
+ // example.com/obl/aaa < example.com/obl/zzz < example.net/obl/aaa
+ assertIDsInOrder(s.T(), listRsp, func(o *policy.Obligation) string { return o.GetId() }, oblComAAA.GetId(), oblComZZZ.GetId(), oblNetAAA.GetId())
}
func (s *ObligationsSuite) Test_ListObligations_SortByFqn_DESC() {
- ids := s.createNamedSortTestObligations([]string{"aaa-fqnsortdesc", "bbb-fqnsortdesc", "ccc-fqnsortdesc"})
- defer s.deleteObligations(ids)
+ comID, _, _ := s.getNamespaceData(nsExampleCom)
+ netID, _, _ := s.getNamespaceData(nsExampleNet)
+ suffix := fmt.Sprintf("fqndesc-%d", time.Now().UnixNano())
+
+ oblComAAA := s.createObligation(comID, "aaa-"+suffix, nil)
+ oblComZZZ := s.createObligation(comID, "zzz-"+suffix, nil)
+ oblNetAAA := s.createObligation(netID, "aaa-"+suffix, nil)
+ defer s.deleteObligations([]string{oblComAAA.GetId(), oblComZZZ.GetId(), oblNetAAA.GetId()})
listRsp, _, err := s.db.PolicyClient.ListObligations(s.ctx, &obligations.ListObligationsRequest{
Sort: []*obligations.ObligationsSort{
@@ -2030,8 +2046,8 @@ func (s *ObligationsSuite) Test_ListObligations_SortByFqn_DESC() {
s.Require().NoError(err)
s.NotNil(listRsp)
- // ccc > bbb > aaa in DESC order
- assertIDsInOrder(s.T(), listRsp, func(o *policy.Obligation) string { return o.GetId() }, ids[2], ids[1], ids[0])
+ // example.net/obl/aaa > example.com/obl/zzz > example.com/obl/aaa
+ assertIDsInOrder(s.T(), listRsp, func(o *policy.Obligation) string { return o.GetId() }, oblNetAAA.GetId(), oblComZZZ.GetId(), oblComAAA.GetId())
}
// Sort by CreatedAt
From 29f62564030c0b367d4964655d4af8c68640b015 Mon Sep 17 00:00:00 2001
From: Diego <74568547+dsm20@users.noreply.github.com>
Date: Tue, 14 Apr 2026 13:00:38 -0400
Subject: [PATCH 15/18] fix: restore closing braces dropped during merge
conflict resolution
Signed-off-by: Diego <74568547+dsm20@users.noreply.github.com>
---
service/policy/db/utils_test.go | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/service/policy/db/utils_test.go b/service/policy/db/utils_test.go
index de3a2c7429..7f25e6a5e6 100644
--- a/service/policy/db/utils_test.go
+++ b/service/policy/db/utils_test.go
@@ -706,6 +706,10 @@ func Test_GetObligationsSortParams(t *testing.T) {
field, dir := GetObligationsSortParams(tc.sort)
assert.Equal(t, tc.expectedField, field)
assert.Equal(t, tc.expectedDir, dir)
+ })
+ }
+}
+
func Test_GetKeyAccessServersSortParams(t *testing.T) {
tests := []struct {
name string
From 72352507892f28e2a67ab49654d8163c28112d55 Mon Sep 17 00:00:00 2001
From: Diego <74568547+dsm20@users.noreply.github.com>
Date: Wed, 15 Apr 2026 10:44:29 -0400
Subject: [PATCH 16/18] add desc fqn test
---
service/policy/db/utils_test.go | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/service/policy/db/utils_test.go b/service/policy/db/utils_test.go
index 7f25e6a5e6..6d7c790d2f 100644
--- a/service/policy/db/utils_test.go
+++ b/service/policy/db/utils_test.go
@@ -659,6 +659,14 @@ func Test_GetObligationsSortParams(t *testing.T) {
expectedField: "fqn",
expectedDir: "ASC",
},
+ {
+ name: "FQN with DESC",
+ sort: []*obligations.ObligationsSort{
+ {Field: obligations.SortObligationsType_SORT_OBLIGATIONS_TYPE_FQN, Direction: policy.SortDirection_SORT_DIRECTION_DESC},
+ },
+ expectedField: "fqn",
+ expectedDir: "DESC",
+ },
{
name: "FQN with unspecified direction defaults to ASC",
sort: []*obligations.ObligationsSort{
From f9cbf883e200ab7dda7f1b9bc2a5337001cd7e93 Mon Sep 17 00:00:00 2001
From: Diego <74568547+dsm20@users.noreply.github.com>
Date: Wed, 15 Apr 2026 12:03:16 -0400
Subject: [PATCH 17/18] alter FQN building
now FQN is simply namespace + obligation name, instead of adding in the arbitrary "/obl/". this is for futureproofing in the event we decide to rename the FQN to some other structure where /obl/ becomes antiquated
---
service/policy/db/queries/obligations.sql | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/service/policy/db/queries/obligations.sql b/service/policy/db/queries/obligations.sql
index d0002e4a24..cab5731e68 100644
--- a/service/policy/db/queries/obligations.sql
+++ b/service/policy/db/queries/obligations.sql
@@ -190,8 +190,8 @@ GROUP BY od.id, n.id, fqns.fqn, counted.total
ORDER BY
CASE WHEN @sort_field::text = 'name' AND @sort_direction::text = 'ASC' THEN od.name END ASC,
CASE WHEN @sort_field::text = 'name' AND @sort_direction::text = 'DESC' THEN od.name END DESC,
- CASE WHEN @sort_field::text = 'fqn' AND @sort_direction::text = 'ASC' THEN fqns.fqn || '/obl/' || LOWER(od.name) END ASC,
- CASE WHEN @sort_field::text = 'fqn' AND @sort_direction::text = 'DESC' THEN fqns.fqn || '/obl/' || LOWER(od.name) END DESC,
+ CASE WHEN @sort_field::text = 'fqn' AND @sort_direction::text = 'ASC' THEN fqns.fqn || LOWER(od.name) END ASC,
+ CASE WHEN @sort_field::text = 'fqn' AND @sort_direction::text = 'DESC' THEN fqns.fqn || LOWER(od.name) END DESC,
CASE WHEN @sort_field::text = 'created_at' AND @sort_direction::text = 'ASC' THEN od.created_at END ASC,
CASE WHEN @sort_field::text = 'created_at' AND @sort_direction::text = 'DESC' THEN od.created_at END DESC,
CASE WHEN @sort_field::text = 'updated_at' AND @sort_direction::text = 'ASC' THEN od.updated_at END ASC,
From 0812edce83cb485de2b6316e79f2d4daff184919 Mon Sep 17 00:00:00 2001
From: Diego <74568547+dsm20@users.noreply.github.com>
Date: Wed, 15 Apr 2026 12:17:14 -0400
Subject: [PATCH 18/18] regeneraterated sequel
---
service/policy/db/obligations.sql.go | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/service/policy/db/obligations.sql.go b/service/policy/db/obligations.sql.go
index f5d6db6ac3..ee23b5f4da 100644
--- a/service/policy/db/obligations.sql.go
+++ b/service/policy/db/obligations.sql.go
@@ -1525,8 +1525,8 @@ GROUP BY od.id, n.id, fqns.fqn, counted.total
ORDER BY
CASE WHEN $3::text = 'name' AND $4::text = 'ASC' THEN od.name END ASC,
CASE WHEN $3::text = 'name' AND $4::text = 'DESC' THEN od.name END DESC,
- CASE WHEN $3::text = 'fqn' AND $4::text = 'ASC' THEN fqns.fqn || '/obl/' || LOWER(od.name) END ASC,
- CASE WHEN $3::text = 'fqn' AND $4::text = 'DESC' THEN fqns.fqn || '/obl/' || LOWER(od.name) END DESC,
+ CASE WHEN $3::text = 'fqn' AND $4::text = 'ASC' THEN fqns.fqn || LOWER(od.name) END ASC,
+ CASE WHEN $3::text = 'fqn' AND $4::text = 'DESC' THEN fqns.fqn || LOWER(od.name) END DESC,
CASE WHEN $3::text = 'created_at' AND $4::text = 'ASC' THEN od.created_at END ASC,
CASE WHEN $3::text = 'created_at' AND $4::text = 'DESC' THEN od.created_at END DESC,
CASE WHEN $3::text = 'updated_at' AND $4::text = 'ASC' THEN od.updated_at END ASC,
@@ -1628,8 +1628,8 @@ type listObligationsRow struct {
// ORDER BY
// CASE WHEN $3::text = 'name' AND $4::text = 'ASC' THEN od.name END ASC,
// CASE WHEN $3::text = 'name' AND $4::text = 'DESC' THEN od.name END DESC,
-// CASE WHEN $3::text = 'fqn' AND $4::text = 'ASC' THEN fqns.fqn || '/obl/' || LOWER(od.name) END ASC,
-// CASE WHEN $3::text = 'fqn' AND $4::text = 'DESC' THEN fqns.fqn || '/obl/' || LOWER(od.name) END DESC,
+// CASE WHEN $3::text = 'fqn' AND $4::text = 'ASC' THEN fqns.fqn || LOWER(od.name) END ASC,
+// CASE WHEN $3::text = 'fqn' AND $4::text = 'DESC' THEN fqns.fqn || LOWER(od.name) END DESC,
// CASE WHEN $3::text = 'created_at' AND $4::text = 'ASC' THEN od.created_at END ASC,
// CASE WHEN $3::text = 'created_at' AND $4::text = 'DESC' THEN od.created_at END DESC,
// CASE WHEN $3::text = 'updated_at' AND $4::text = 'ASC' THEN od.updated_at END ASC,