diff --git a/docs/openapiv2/apidocs.swagger.json b/docs/openapiv2/apidocs.swagger.json index a4b8304b..a964dac4 100644 --- a/docs/openapiv2/apidocs.swagger.json +++ b/docs/openapiv2/apidocs.swagger.json @@ -975,10 +975,16 @@ "type": "object", "properties": { "writes": { - "$ref": "#/definitions/TupleKeys" + "type": "array", + "items": { + "$ref": "#/definitions/WriteRequestTupleKey" + } }, "deletes": { - "$ref": "#/definitions/TupleKeys" + "type": "array", + "items": { + "$ref": "#/definitions/WriteRequestTupleKey" + } }, "authorization_model_id": { "type": "string", @@ -1373,6 +1379,14 @@ ], "default": "no_not_found_error" }, + "NullValue": { + "type": "string", + "enum": [ + "NULL_VALUE" + ], + "default": "NULL_VALUE", + "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\n The JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value." + }, "ObjectRelation": { "type": "object", "properties": { @@ -1501,6 +1515,24 @@ "type" ] }, + "RelationshipCondition": { + "type": "object", + "properties": { + "conditionName": { + "type": "string", + "example": "condition1", + "description": "A reference (by name) of the relationship condition defined in the authorization model.", + "maxLength": 256 + }, + "context": { + "type": "object", + "description": "Additional context/data to persist along with the condition.\nThe keys must match the parameters defined by the condition, and the value types must\nmatch the parameter type definitions." + } + }, + "required": [ + "conditionName" + ] + }, "Status": { "type": "object", "properties": { @@ -1599,21 +1631,6 @@ } } }, - "TupleKeys": { - "type": "object", - "properties": { - "tuple_keys": { - "type": "array", - "items": { - "$ref": "#/definitions/TupleKey", - "minimum": 1 - } - } - }, - "required": [ - "tuple_keys" - ] - }, "TupleOperation": { "type": "string", "enum": [ @@ -1774,6 +1791,29 @@ } } }, + "WriteRequestTupleKey": { + "type": "object", + "properties": { + "user": { + "type": "string", + "example": "user:anne", + "maxLength": 512 + }, + "relation": { + "type": "string", + "example": "reader", + "maxLength": 50 + }, + "object": { + "type": "string", + "example": "document:2021-budget", + "maxLength": 256 + }, + "condition": { + "$ref": "#/definitions/RelationshipCondition" + } + } + }, "WriteResponse": { "type": "object" }, diff --git a/openfga/v1/openfga.proto b/openfga/v1/openfga.proto index 70d0de0f..468a291e 100644 --- a/openfga/v1/openfga.proto +++ b/openfga/v1/openfga.proto @@ -3,6 +3,7 @@ syntax = "proto3"; package openfga.v1; import "google/api/field_behavior.proto"; +import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; import "validate/validate.proto"; @@ -25,6 +26,24 @@ message Object { ]; } +message RelationshipCondition { + + // A reference (by name) of the relationship condition defined in the authorization model. + string condition_name = 1 [ + (validate.rules).string = {pattern: "^[^\\s]{2,256}$"}, + (google.api.field_behavior) = REQUIRED, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + max_length: 256, + example: "\"condition1\"" + } + ]; + + // Additional context/data to persist along with the condition. + // The keys must match the parameters defined by the condition, and the value types must + // match the parameter type definitions. + google.protobuf.Struct context = 2; +} + message TupleKey { string object = 1 [ (validate.rules).string = { diff --git a/openfga/v1/openfga_service.proto b/openfga/v1/openfga_service.proto index c3ee025e..7fdc0cfd 100644 --- a/openfga/v1/openfga_service.proto +++ b/openfga/v1/openfga_service.proto @@ -5,6 +5,7 @@ package openfga.v1; import "google/api/annotations.proto"; import "google/api/field_behavior.proto"; import "google/api/visibility.proto"; +import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; import "openfga/v1/authzmodel.proto"; @@ -816,6 +817,40 @@ message ReadResponse { ]; } +message WriteRequestTupleKey { + string user = 1 [ + (validate.rules).string = {max_bytes: 512}, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + max_length: 512, + example: "\"user:anne\"" + } + ]; + + string relation = 2 [ + (validate.rules).string = { + pattern: "^[^:#@\\s]{1,50}$", + ignore_empty: true + }, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + max_length: 50, + example: "\"reader\"" + } + ]; + + string object = 3 [ + (validate.rules).string = { + pattern: "^[^\\s]{2,256}$", + ignore_empty: true + }, + (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = { + max_length: 256, + example: "\"document:2021-budget\"" + } + ]; + + RelationshipCondition condition = 4; +} + message WriteRequest { string store_id = 1 [ json_name = "store_id", @@ -824,9 +859,9 @@ message WriteRequest { (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {example: "\"01YCP46JKYM8FJCQ37NMBYHE5X\""} ]; - openfga.v1.TupleKeys writes = 2; + repeated WriteRequestTupleKey writes = 2; - openfga.v1.TupleKeys deletes = 3; + repeated WriteRequestTupleKey deletes = 3; string authorization_model_id = 4 [ json_name = "authorization_model_id", diff --git a/proto/openfga/v1/openfga.pb.go b/proto/openfga/v1/openfga.pb.go index 3baf2a3e..52b40262 100644 --- a/proto/openfga/v1/openfga.pb.go +++ b/proto/openfga/v1/openfga.pb.go @@ -12,6 +12,7 @@ import ( _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" reflect "reflect" sync "sync" @@ -131,6 +132,65 @@ func (x *Object) GetId() string { return "" } +type RelationshipCondition struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // A reference (by name) of the relationship condition defined in the authorization model. + ConditionName string `protobuf:"bytes,1,opt,name=condition_name,json=conditionName,proto3" json:"condition_name,omitempty"` + // Additional context/data to persist along with the condition. + // The keys must match the parameters defined by the condition, and the value types must + // match the parameter type definitions. + Context *structpb.Struct `protobuf:"bytes,2,opt,name=context,proto3" json:"context,omitempty"` +} + +func (x *RelationshipCondition) Reset() { + *x = RelationshipCondition{} + if protoimpl.UnsafeEnabled { + mi := &file_openfga_v1_openfga_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RelationshipCondition) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RelationshipCondition) ProtoMessage() {} + +func (x *RelationshipCondition) ProtoReflect() protoreflect.Message { + mi := &file_openfga_v1_openfga_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RelationshipCondition.ProtoReflect.Descriptor instead. +func (*RelationshipCondition) Descriptor() ([]byte, []int) { + return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{1} +} + +func (x *RelationshipCondition) GetConditionName() string { + if x != nil { + return x.ConditionName + } + return "" +} + +func (x *RelationshipCondition) GetContext() *structpb.Struct { + if x != nil { + return x.Context + } + return nil +} + type TupleKey struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -144,7 +204,7 @@ type TupleKey struct { func (x *TupleKey) Reset() { *x = TupleKey{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_proto_msgTypes[1] + mi := &file_openfga_v1_openfga_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -157,7 +217,7 @@ func (x *TupleKey) String() string { func (*TupleKey) ProtoMessage() {} func (x *TupleKey) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_proto_msgTypes[1] + mi := &file_openfga_v1_openfga_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -170,7 +230,7 @@ func (x *TupleKey) ProtoReflect() protoreflect.Message { // Deprecated: Use TupleKey.ProtoReflect.Descriptor instead. func (*TupleKey) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{1} + return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{2} } func (x *TupleKey) GetObject() string { @@ -206,7 +266,7 @@ type Tuple struct { func (x *Tuple) Reset() { *x = Tuple{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_proto_msgTypes[2] + mi := &file_openfga_v1_openfga_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -219,7 +279,7 @@ func (x *Tuple) String() string { func (*Tuple) ProtoMessage() {} func (x *Tuple) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_proto_msgTypes[2] + mi := &file_openfga_v1_openfga_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -232,7 +292,7 @@ func (x *Tuple) ProtoReflect() protoreflect.Message { // Deprecated: Use Tuple.ProtoReflect.Descriptor instead. func (*Tuple) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{2} + return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{3} } func (x *Tuple) GetKey() *TupleKey { @@ -260,7 +320,7 @@ type TupleKeys struct { func (x *TupleKeys) Reset() { *x = TupleKeys{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_proto_msgTypes[3] + mi := &file_openfga_v1_openfga_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -273,7 +333,7 @@ func (x *TupleKeys) String() string { func (*TupleKeys) ProtoMessage() {} func (x *TupleKeys) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_proto_msgTypes[3] + mi := &file_openfga_v1_openfga_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -286,7 +346,7 @@ func (x *TupleKeys) ProtoReflect() protoreflect.Message { // Deprecated: Use TupleKeys.ProtoReflect.Descriptor instead. func (*TupleKeys) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{3} + return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{4} } func (x *TupleKeys) GetTupleKeys() []*TupleKey { @@ -307,7 +367,7 @@ type ContextualTupleKeys struct { func (x *ContextualTupleKeys) Reset() { *x = ContextualTupleKeys{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_proto_msgTypes[4] + mi := &file_openfga_v1_openfga_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -320,7 +380,7 @@ func (x *ContextualTupleKeys) String() string { func (*ContextualTupleKeys) ProtoMessage() {} func (x *ContextualTupleKeys) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_proto_msgTypes[4] + mi := &file_openfga_v1_openfga_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -333,7 +393,7 @@ func (x *ContextualTupleKeys) ProtoReflect() protoreflect.Message { // Deprecated: Use ContextualTupleKeys.ProtoReflect.Descriptor instead. func (*ContextualTupleKeys) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{4} + return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{5} } func (x *ContextualTupleKeys) GetTupleKeys() []*TupleKey { @@ -355,7 +415,7 @@ type UsersetTree struct { func (x *UsersetTree) Reset() { *x = UsersetTree{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_proto_msgTypes[5] + mi := &file_openfga_v1_openfga_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -368,7 +428,7 @@ func (x *UsersetTree) String() string { func (*UsersetTree) ProtoMessage() {} func (x *UsersetTree) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_proto_msgTypes[5] + mi := &file_openfga_v1_openfga_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -381,7 +441,7 @@ func (x *UsersetTree) ProtoReflect() protoreflect.Message { // Deprecated: Use UsersetTree.ProtoReflect.Descriptor instead. func (*UsersetTree) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{5} + return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{6} } func (x *UsersetTree) GetRoot() *UsersetTree_Node { @@ -403,7 +463,7 @@ type Assertion struct { func (x *Assertion) Reset() { *x = Assertion{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_proto_msgTypes[6] + mi := &file_openfga_v1_openfga_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -416,7 +476,7 @@ func (x *Assertion) String() string { func (*Assertion) ProtoMessage() {} func (x *Assertion) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_proto_msgTypes[6] + mi := &file_openfga_v1_openfga_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -429,7 +489,7 @@ func (x *Assertion) ProtoReflect() protoreflect.Message { // Deprecated: Use Assertion.ProtoReflect.Descriptor instead. func (*Assertion) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{6} + return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{7} } func (x *Assertion) GetTupleKey() *TupleKey { @@ -457,7 +517,7 @@ type Assertions struct { func (x *Assertions) Reset() { *x = Assertions{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_proto_msgTypes[7] + mi := &file_openfga_v1_openfga_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -470,7 +530,7 @@ func (x *Assertions) String() string { func (*Assertions) ProtoMessage() {} func (x *Assertions) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_proto_msgTypes[7] + mi := &file_openfga_v1_openfga_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -483,7 +543,7 @@ func (x *Assertions) ProtoReflect() protoreflect.Message { // Deprecated: Use Assertions.ProtoReflect.Descriptor instead. func (*Assertions) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{7} + return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{8} } func (x *Assertions) GetAssertions() []*Assertion { @@ -506,7 +566,7 @@ type TupleChange struct { func (x *TupleChange) Reset() { *x = TupleChange{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_proto_msgTypes[8] + mi := &file_openfga_v1_openfga_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -519,7 +579,7 @@ func (x *TupleChange) String() string { func (*TupleChange) ProtoMessage() {} func (x *TupleChange) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_proto_msgTypes[8] + mi := &file_openfga_v1_openfga_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -532,7 +592,7 @@ func (x *TupleChange) ProtoReflect() protoreflect.Message { // Deprecated: Use TupleChange.ProtoReflect.Descriptor instead. func (*TupleChange) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{8} + return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{9} } func (x *TupleChange) GetTupleKey() *TupleKey { @@ -571,7 +631,7 @@ type Store struct { func (x *Store) Reset() { *x = Store{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_proto_msgTypes[9] + mi := &file_openfga_v1_openfga_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -584,7 +644,7 @@ func (x *Store) String() string { func (*Store) ProtoMessage() {} func (x *Store) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_proto_msgTypes[9] + mi := &file_openfga_v1_openfga_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -597,7 +657,7 @@ func (x *Store) ProtoReflect() protoreflect.Message { // Deprecated: Use Store.ProtoReflect.Descriptor instead. func (*Store) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{9} + return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{10} } func (x *Store) GetId() string { @@ -658,7 +718,7 @@ type UsersetTree_Leaf struct { func (x *UsersetTree_Leaf) Reset() { *x = UsersetTree_Leaf{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_proto_msgTypes[10] + mi := &file_openfga_v1_openfga_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -671,7 +731,7 @@ func (x *UsersetTree_Leaf) String() string { func (*UsersetTree_Leaf) ProtoMessage() {} func (x *UsersetTree_Leaf) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_proto_msgTypes[10] + mi := &file_openfga_v1_openfga_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -684,7 +744,7 @@ func (x *UsersetTree_Leaf) ProtoReflect() protoreflect.Message { // Deprecated: Use UsersetTree_Leaf.ProtoReflect.Descriptor instead. func (*UsersetTree_Leaf) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{5, 0} + return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{6, 0} } func (m *UsersetTree_Leaf) GetValue() isUsersetTree_Leaf_Value { @@ -748,7 +808,7 @@ type UsersetTree_Nodes struct { func (x *UsersetTree_Nodes) Reset() { *x = UsersetTree_Nodes{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_proto_msgTypes[11] + mi := &file_openfga_v1_openfga_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -761,7 +821,7 @@ func (x *UsersetTree_Nodes) String() string { func (*UsersetTree_Nodes) ProtoMessage() {} func (x *UsersetTree_Nodes) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_proto_msgTypes[11] + mi := &file_openfga_v1_openfga_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -774,7 +834,7 @@ func (x *UsersetTree_Nodes) ProtoReflect() protoreflect.Message { // Deprecated: Use UsersetTree_Nodes.ProtoReflect.Descriptor instead. func (*UsersetTree_Nodes) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{5, 1} + return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{6, 1} } func (x *UsersetTree_Nodes) GetNodes() []*UsersetTree_Node { @@ -795,7 +855,7 @@ type UsersetTree_Users struct { func (x *UsersetTree_Users) Reset() { *x = UsersetTree_Users{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_proto_msgTypes[12] + mi := &file_openfga_v1_openfga_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -808,7 +868,7 @@ func (x *UsersetTree_Users) String() string { func (*UsersetTree_Users) ProtoMessage() {} func (x *UsersetTree_Users) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_proto_msgTypes[12] + mi := &file_openfga_v1_openfga_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -821,7 +881,7 @@ func (x *UsersetTree_Users) ProtoReflect() protoreflect.Message { // Deprecated: Use UsersetTree_Users.ProtoReflect.Descriptor instead. func (*UsersetTree_Users) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{5, 2} + return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{6, 2} } func (x *UsersetTree_Users) GetUsers() []string { @@ -842,7 +902,7 @@ type UsersetTree_Computed struct { func (x *UsersetTree_Computed) Reset() { *x = UsersetTree_Computed{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_proto_msgTypes[13] + mi := &file_openfga_v1_openfga_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -855,7 +915,7 @@ func (x *UsersetTree_Computed) String() string { func (*UsersetTree_Computed) ProtoMessage() {} func (x *UsersetTree_Computed) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_proto_msgTypes[13] + mi := &file_openfga_v1_openfga_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -868,7 +928,7 @@ func (x *UsersetTree_Computed) ProtoReflect() protoreflect.Message { // Deprecated: Use UsersetTree_Computed.ProtoReflect.Descriptor instead. func (*UsersetTree_Computed) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{5, 3} + return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{6, 3} } func (x *UsersetTree_Computed) GetUserset() string { @@ -890,7 +950,7 @@ type UsersetTree_TupleToUserset struct { func (x *UsersetTree_TupleToUserset) Reset() { *x = UsersetTree_TupleToUserset{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_proto_msgTypes[14] + mi := &file_openfga_v1_openfga_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -903,7 +963,7 @@ func (x *UsersetTree_TupleToUserset) String() string { func (*UsersetTree_TupleToUserset) ProtoMessage() {} func (x *UsersetTree_TupleToUserset) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_proto_msgTypes[14] + mi := &file_openfga_v1_openfga_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -916,7 +976,7 @@ func (x *UsersetTree_TupleToUserset) ProtoReflect() protoreflect.Message { // Deprecated: Use UsersetTree_TupleToUserset.ProtoReflect.Descriptor instead. func (*UsersetTree_TupleToUserset) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{5, 4} + return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{6, 4} } func (x *UsersetTree_TupleToUserset) GetTupleset() string { @@ -945,7 +1005,7 @@ type UsersetTree_Difference struct { func (x *UsersetTree_Difference) Reset() { *x = UsersetTree_Difference{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_proto_msgTypes[15] + mi := &file_openfga_v1_openfga_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -958,7 +1018,7 @@ func (x *UsersetTree_Difference) String() string { func (*UsersetTree_Difference) ProtoMessage() {} func (x *UsersetTree_Difference) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_proto_msgTypes[15] + mi := &file_openfga_v1_openfga_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -971,7 +1031,7 @@ func (x *UsersetTree_Difference) ProtoReflect() protoreflect.Message { // Deprecated: Use UsersetTree_Difference.ProtoReflect.Descriptor instead. func (*UsersetTree_Difference) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{5, 5} + return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{6, 5} } func (x *UsersetTree_Difference) GetBase() *UsersetTree_Node { @@ -1006,7 +1066,7 @@ type UsersetTree_Node struct { func (x *UsersetTree_Node) Reset() { *x = UsersetTree_Node{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_proto_msgTypes[16] + mi := &file_openfga_v1_openfga_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1019,7 +1079,7 @@ func (x *UsersetTree_Node) String() string { func (*UsersetTree_Node) ProtoMessage() {} func (x *UsersetTree_Node) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_proto_msgTypes[16] + mi := &file_openfga_v1_openfga_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1032,7 +1092,7 @@ func (x *UsersetTree_Node) ProtoReflect() protoreflect.Message { // Deprecated: Use UsersetTree_Node.ProtoReflect.Descriptor instead. func (*UsersetTree_Node) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{5, 6} + return file_openfga_v1_openfga_proto_rawDescGZIP(), []int{6, 6} } func (x *UsersetTree_Node) GetName() string { @@ -1112,20 +1172,32 @@ var file_openfga_v1_openfga_proto_rawDesc = []byte{ 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, - 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x6d, 0x0a, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0x92, 0x41, 0x0c, 0x4a, 0x0a, - 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x15, - 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5e, 0x3a, 0x23, 0x40, 0x5c, 0x73, 0x5d, 0x7b, 0x31, 0x2c, - 0x32, 0x35, 0x34, 0x7d, 0x24, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x13, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x0d, 0x72, - 0x0b, 0x32, 0x09, 0x5b, 0x5e, 0x23, 0x3a, 0x5c, 0x73, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, + 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, + 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, + 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x6d, 0x0a, 0x06, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0x92, 0x41, 0x0c, 0x4a, 0x0a, 0x22, 0x64, + 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x15, 0x72, 0x13, + 0x32, 0x11, 0x5e, 0x5b, 0x5e, 0x3a, 0x23, 0x40, 0x5c, 0x73, 0x5d, 0x7b, 0x31, 0x2c, 0x32, 0x35, + 0x34, 0x7d, 0x24, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x13, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x0d, 0x72, 0x0b, 0x32, + 0x09, 0x5b, 0x5e, 0x23, 0x3a, 0x5c, 0x73, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x22, 0x9f, + 0x01, 0x0a, 0x15, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x53, 0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x2c, 0x92, 0x41, 0x11, 0x4a, 0x0c, 0x22, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x31, 0x22, 0x78, 0x80, 0x02, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x12, 0x72, 0x10, 0x32, 0x0e, + 0x5e, 0x5b, 0x5e, 0x5c, 0x73, 0x5d, 0x7b, 0x32, 0x2c, 0x32, 0x35, 0x36, 0x7d, 0x24, 0x52, 0x0d, + 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x31, 0x0a, + 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0xd2, 0x01, 0x0a, 0x08, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x4e, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x36, 0x92, 0x41, 0x1b, 0x4a, 0x16, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, @@ -1285,58 +1357,61 @@ func file_openfga_v1_openfga_proto_rawDescGZIP() []byte { } var file_openfga_v1_openfga_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_openfga_v1_openfga_proto_msgTypes = make([]protoimpl.MessageInfo, 17) +var file_openfga_v1_openfga_proto_msgTypes = make([]protoimpl.MessageInfo, 18) var file_openfga_v1_openfga_proto_goTypes = []interface{}{ (TupleOperation)(0), // 0: openfga.v1.TupleOperation (*Object)(nil), // 1: openfga.v1.Object - (*TupleKey)(nil), // 2: openfga.v1.TupleKey - (*Tuple)(nil), // 3: openfga.v1.Tuple - (*TupleKeys)(nil), // 4: openfga.v1.TupleKeys - (*ContextualTupleKeys)(nil), // 5: openfga.v1.ContextualTupleKeys - (*UsersetTree)(nil), // 6: openfga.v1.UsersetTree - (*Assertion)(nil), // 7: openfga.v1.Assertion - (*Assertions)(nil), // 8: openfga.v1.Assertions - (*TupleChange)(nil), // 9: openfga.v1.TupleChange - (*Store)(nil), // 10: openfga.v1.Store - (*UsersetTree_Leaf)(nil), // 11: openfga.v1.UsersetTree.Leaf - (*UsersetTree_Nodes)(nil), // 12: openfga.v1.UsersetTree.Nodes - (*UsersetTree_Users)(nil), // 13: openfga.v1.UsersetTree.Users - (*UsersetTree_Computed)(nil), // 14: openfga.v1.UsersetTree.Computed - (*UsersetTree_TupleToUserset)(nil), // 15: openfga.v1.UsersetTree.TupleToUserset - (*UsersetTree_Difference)(nil), // 16: openfga.v1.UsersetTree.Difference - (*UsersetTree_Node)(nil), // 17: openfga.v1.UsersetTree.Node - (*timestamppb.Timestamp)(nil), // 18: google.protobuf.Timestamp + (*RelationshipCondition)(nil), // 2: openfga.v1.RelationshipCondition + (*TupleKey)(nil), // 3: openfga.v1.TupleKey + (*Tuple)(nil), // 4: openfga.v1.Tuple + (*TupleKeys)(nil), // 5: openfga.v1.TupleKeys + (*ContextualTupleKeys)(nil), // 6: openfga.v1.ContextualTupleKeys + (*UsersetTree)(nil), // 7: openfga.v1.UsersetTree + (*Assertion)(nil), // 8: openfga.v1.Assertion + (*Assertions)(nil), // 9: openfga.v1.Assertions + (*TupleChange)(nil), // 10: openfga.v1.TupleChange + (*Store)(nil), // 11: openfga.v1.Store + (*UsersetTree_Leaf)(nil), // 12: openfga.v1.UsersetTree.Leaf + (*UsersetTree_Nodes)(nil), // 13: openfga.v1.UsersetTree.Nodes + (*UsersetTree_Users)(nil), // 14: openfga.v1.UsersetTree.Users + (*UsersetTree_Computed)(nil), // 15: openfga.v1.UsersetTree.Computed + (*UsersetTree_TupleToUserset)(nil), // 16: openfga.v1.UsersetTree.TupleToUserset + (*UsersetTree_Difference)(nil), // 17: openfga.v1.UsersetTree.Difference + (*UsersetTree_Node)(nil), // 18: openfga.v1.UsersetTree.Node + (*structpb.Struct)(nil), // 19: google.protobuf.Struct + (*timestamppb.Timestamp)(nil), // 20: google.protobuf.Timestamp } var file_openfga_v1_openfga_proto_depIdxs = []int32{ - 2, // 0: openfga.v1.Tuple.key:type_name -> openfga.v1.TupleKey - 18, // 1: openfga.v1.Tuple.timestamp:type_name -> google.protobuf.Timestamp - 2, // 2: openfga.v1.TupleKeys.tuple_keys:type_name -> openfga.v1.TupleKey - 2, // 3: openfga.v1.ContextualTupleKeys.tuple_keys:type_name -> openfga.v1.TupleKey - 17, // 4: openfga.v1.UsersetTree.root:type_name -> openfga.v1.UsersetTree.Node - 2, // 5: openfga.v1.Assertion.tuple_key:type_name -> openfga.v1.TupleKey - 7, // 6: openfga.v1.Assertions.assertions:type_name -> openfga.v1.Assertion - 2, // 7: openfga.v1.TupleChange.tuple_key:type_name -> openfga.v1.TupleKey - 0, // 8: openfga.v1.TupleChange.operation:type_name -> openfga.v1.TupleOperation - 18, // 9: openfga.v1.TupleChange.timestamp:type_name -> google.protobuf.Timestamp - 18, // 10: openfga.v1.Store.created_at:type_name -> google.protobuf.Timestamp - 18, // 11: openfga.v1.Store.updated_at:type_name -> google.protobuf.Timestamp - 18, // 12: openfga.v1.Store.deleted_at:type_name -> google.protobuf.Timestamp - 13, // 13: openfga.v1.UsersetTree.Leaf.users:type_name -> openfga.v1.UsersetTree.Users - 14, // 14: openfga.v1.UsersetTree.Leaf.computed:type_name -> openfga.v1.UsersetTree.Computed - 15, // 15: openfga.v1.UsersetTree.Leaf.tuple_to_userset:type_name -> openfga.v1.UsersetTree.TupleToUserset - 17, // 16: openfga.v1.UsersetTree.Nodes.nodes:type_name -> openfga.v1.UsersetTree.Node - 14, // 17: openfga.v1.UsersetTree.TupleToUserset.computed:type_name -> openfga.v1.UsersetTree.Computed - 17, // 18: openfga.v1.UsersetTree.Difference.base:type_name -> openfga.v1.UsersetTree.Node - 17, // 19: openfga.v1.UsersetTree.Difference.subtract:type_name -> openfga.v1.UsersetTree.Node - 11, // 20: openfga.v1.UsersetTree.Node.leaf:type_name -> openfga.v1.UsersetTree.Leaf - 16, // 21: openfga.v1.UsersetTree.Node.difference:type_name -> openfga.v1.UsersetTree.Difference - 12, // 22: openfga.v1.UsersetTree.Node.union:type_name -> openfga.v1.UsersetTree.Nodes - 12, // 23: openfga.v1.UsersetTree.Node.intersection:type_name -> openfga.v1.UsersetTree.Nodes - 24, // [24:24] is the sub-list for method output_type - 24, // [24:24] is the sub-list for method input_type - 24, // [24:24] is the sub-list for extension type_name - 24, // [24:24] is the sub-list for extension extendee - 0, // [0:24] is the sub-list for field type_name + 19, // 0: openfga.v1.RelationshipCondition.context:type_name -> google.protobuf.Struct + 3, // 1: openfga.v1.Tuple.key:type_name -> openfga.v1.TupleKey + 20, // 2: openfga.v1.Tuple.timestamp:type_name -> google.protobuf.Timestamp + 3, // 3: openfga.v1.TupleKeys.tuple_keys:type_name -> openfga.v1.TupleKey + 3, // 4: openfga.v1.ContextualTupleKeys.tuple_keys:type_name -> openfga.v1.TupleKey + 18, // 5: openfga.v1.UsersetTree.root:type_name -> openfga.v1.UsersetTree.Node + 3, // 6: openfga.v1.Assertion.tuple_key:type_name -> openfga.v1.TupleKey + 8, // 7: openfga.v1.Assertions.assertions:type_name -> openfga.v1.Assertion + 3, // 8: openfga.v1.TupleChange.tuple_key:type_name -> openfga.v1.TupleKey + 0, // 9: openfga.v1.TupleChange.operation:type_name -> openfga.v1.TupleOperation + 20, // 10: openfga.v1.TupleChange.timestamp:type_name -> google.protobuf.Timestamp + 20, // 11: openfga.v1.Store.created_at:type_name -> google.protobuf.Timestamp + 20, // 12: openfga.v1.Store.updated_at:type_name -> google.protobuf.Timestamp + 20, // 13: openfga.v1.Store.deleted_at:type_name -> google.protobuf.Timestamp + 14, // 14: openfga.v1.UsersetTree.Leaf.users:type_name -> openfga.v1.UsersetTree.Users + 15, // 15: openfga.v1.UsersetTree.Leaf.computed:type_name -> openfga.v1.UsersetTree.Computed + 16, // 16: openfga.v1.UsersetTree.Leaf.tuple_to_userset:type_name -> openfga.v1.UsersetTree.TupleToUserset + 18, // 17: openfga.v1.UsersetTree.Nodes.nodes:type_name -> openfga.v1.UsersetTree.Node + 15, // 18: openfga.v1.UsersetTree.TupleToUserset.computed:type_name -> openfga.v1.UsersetTree.Computed + 18, // 19: openfga.v1.UsersetTree.Difference.base:type_name -> openfga.v1.UsersetTree.Node + 18, // 20: openfga.v1.UsersetTree.Difference.subtract:type_name -> openfga.v1.UsersetTree.Node + 12, // 21: openfga.v1.UsersetTree.Node.leaf:type_name -> openfga.v1.UsersetTree.Leaf + 17, // 22: openfga.v1.UsersetTree.Node.difference:type_name -> openfga.v1.UsersetTree.Difference + 13, // 23: openfga.v1.UsersetTree.Node.union:type_name -> openfga.v1.UsersetTree.Nodes + 13, // 24: openfga.v1.UsersetTree.Node.intersection:type_name -> openfga.v1.UsersetTree.Nodes + 25, // [25:25] is the sub-list for method output_type + 25, // [25:25] is the sub-list for method input_type + 25, // [25:25] is the sub-list for extension type_name + 25, // [25:25] is the sub-list for extension extendee + 0, // [0:25] is the sub-list for field type_name } func init() { file_openfga_v1_openfga_proto_init() } @@ -1358,7 +1433,7 @@ func file_openfga_v1_openfga_proto_init() { } } file_openfga_v1_openfga_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TupleKey); i { + switch v := v.(*RelationshipCondition); i { case 0: return &v.state case 1: @@ -1370,7 +1445,7 @@ func file_openfga_v1_openfga_proto_init() { } } file_openfga_v1_openfga_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Tuple); i { + switch v := v.(*TupleKey); i { case 0: return &v.state case 1: @@ -1382,7 +1457,7 @@ func file_openfga_v1_openfga_proto_init() { } } file_openfga_v1_openfga_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TupleKeys); i { + switch v := v.(*Tuple); i { case 0: return &v.state case 1: @@ -1394,7 +1469,7 @@ func file_openfga_v1_openfga_proto_init() { } } file_openfga_v1_openfga_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ContextualTupleKeys); i { + switch v := v.(*TupleKeys); i { case 0: return &v.state case 1: @@ -1406,7 +1481,7 @@ func file_openfga_v1_openfga_proto_init() { } } file_openfga_v1_openfga_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UsersetTree); i { + switch v := v.(*ContextualTupleKeys); i { case 0: return &v.state case 1: @@ -1418,7 +1493,7 @@ func file_openfga_v1_openfga_proto_init() { } } file_openfga_v1_openfga_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Assertion); i { + switch v := v.(*UsersetTree); i { case 0: return &v.state case 1: @@ -1430,7 +1505,7 @@ func file_openfga_v1_openfga_proto_init() { } } file_openfga_v1_openfga_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Assertions); i { + switch v := v.(*Assertion); i { case 0: return &v.state case 1: @@ -1442,7 +1517,7 @@ func file_openfga_v1_openfga_proto_init() { } } file_openfga_v1_openfga_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TupleChange); i { + switch v := v.(*Assertions); i { case 0: return &v.state case 1: @@ -1454,7 +1529,7 @@ func file_openfga_v1_openfga_proto_init() { } } file_openfga_v1_openfga_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Store); i { + switch v := v.(*TupleChange); i { case 0: return &v.state case 1: @@ -1466,7 +1541,7 @@ func file_openfga_v1_openfga_proto_init() { } } file_openfga_v1_openfga_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UsersetTree_Leaf); i { + switch v := v.(*Store); i { case 0: return &v.state case 1: @@ -1478,7 +1553,7 @@ func file_openfga_v1_openfga_proto_init() { } } file_openfga_v1_openfga_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UsersetTree_Nodes); i { + switch v := v.(*UsersetTree_Leaf); i { case 0: return &v.state case 1: @@ -1490,7 +1565,7 @@ func file_openfga_v1_openfga_proto_init() { } } file_openfga_v1_openfga_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UsersetTree_Users); i { + switch v := v.(*UsersetTree_Nodes); i { case 0: return &v.state case 1: @@ -1502,7 +1577,7 @@ func file_openfga_v1_openfga_proto_init() { } } file_openfga_v1_openfga_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UsersetTree_Computed); i { + switch v := v.(*UsersetTree_Users); i { case 0: return &v.state case 1: @@ -1514,7 +1589,7 @@ func file_openfga_v1_openfga_proto_init() { } } file_openfga_v1_openfga_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UsersetTree_TupleToUserset); i { + switch v := v.(*UsersetTree_Computed); i { case 0: return &v.state case 1: @@ -1526,7 +1601,7 @@ func file_openfga_v1_openfga_proto_init() { } } file_openfga_v1_openfga_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UsersetTree_Difference); i { + switch v := v.(*UsersetTree_TupleToUserset); i { case 0: return &v.state case 1: @@ -1538,6 +1613,18 @@ func file_openfga_v1_openfga_proto_init() { } } file_openfga_v1_openfga_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UsersetTree_Difference); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openfga_v1_openfga_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UsersetTree_Node); i { case 0: return &v.state @@ -1550,12 +1637,12 @@ func file_openfga_v1_openfga_proto_init() { } } } - file_openfga_v1_openfga_proto_msgTypes[10].OneofWrappers = []interface{}{ + file_openfga_v1_openfga_proto_msgTypes[11].OneofWrappers = []interface{}{ (*UsersetTree_Leaf_Users)(nil), (*UsersetTree_Leaf_Computed)(nil), (*UsersetTree_Leaf_TupleToUserset)(nil), } - file_openfga_v1_openfga_proto_msgTypes[16].OneofWrappers = []interface{}{ + file_openfga_v1_openfga_proto_msgTypes[17].OneofWrappers = []interface{}{ (*UsersetTree_Node_Leaf)(nil), (*UsersetTree_Node_Difference)(nil), (*UsersetTree_Node_Union)(nil), @@ -1567,7 +1654,7 @@ func file_openfga_v1_openfga_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_openfga_v1_openfga_proto_rawDesc, NumEnums: 1, - NumMessages: 17, + NumMessages: 18, NumExtensions: 0, NumServices: 0, }, diff --git a/proto/openfga/v1/openfga.pb.validate.go b/proto/openfga/v1/openfga.pb.validate.go index 412a5736..c0b39c8c 100644 --- a/proto/openfga/v1/openfga.pb.validate.go +++ b/proto/openfga/v1/openfga.pb.validate.go @@ -159,6 +159,150 @@ var _Object_Type_Pattern = regexp.MustCompile("^[^:#@\\s]{1,254}$") var _Object_Id_Pattern = regexp.MustCompile("[^#:\\s]+$") +// Validate checks the field values on RelationshipCondition with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *RelationshipCondition) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on RelationshipCondition with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// RelationshipConditionMultiError, or nil if none found. +func (m *RelationshipCondition) ValidateAll() error { + return m.validate(true) +} + +func (m *RelationshipCondition) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if !_RelationshipCondition_ConditionName_Pattern.MatchString(m.GetConditionName()) { + err := RelationshipConditionValidationError{ + field: "ConditionName", + reason: "value does not match regex pattern \"^[^\\\\s]{2,256}$\"", + } + if !all { + return err + } + errors = append(errors, err) + } + + if all { + switch v := interface{}(m.GetContext()).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, RelationshipConditionValidationError{ + field: "Context", + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, RelationshipConditionValidationError{ + field: "Context", + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(m.GetContext()).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return RelationshipConditionValidationError{ + field: "Context", + reason: "embedded message failed validation", + cause: err, + } + } + } + + if len(errors) > 0 { + return RelationshipConditionMultiError(errors) + } + + return nil +} + +// RelationshipConditionMultiError is an error wrapping multiple validation +// errors returned by RelationshipCondition.ValidateAll() if the designated +// constraints aren't met. +type RelationshipConditionMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m RelationshipConditionMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m RelationshipConditionMultiError) AllErrors() []error { return m } + +// RelationshipConditionValidationError is the validation error returned by +// RelationshipCondition.Validate if the designated constraints aren't met. +type RelationshipConditionValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e RelationshipConditionValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e RelationshipConditionValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e RelationshipConditionValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e RelationshipConditionValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e RelationshipConditionValidationError) ErrorName() string { + return "RelationshipConditionValidationError" +} + +// Error satisfies the builtin error interface +func (e RelationshipConditionValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sRelationshipCondition.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = RelationshipConditionValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = RelationshipConditionValidationError{} + +var _RelationshipCondition_ConditionName_Pattern = regexp.MustCompile("^[^\\s]{2,256}$") + // Validate checks the field values on TupleKey with the rules defined in the // proto definition for this message. If any rules are violated, the first // error encountered is returned, or nil if there are no violations. diff --git a/proto/openfga/v1/openfga_service.pb.go b/proto/openfga/v1/openfga_service.pb.go index 41743f90..d0bfb58d 100644 --- a/proto/openfga/v1/openfga_service.pb.go +++ b/proto/openfga/v1/openfga_service.pb.go @@ -13,6 +13,7 @@ import ( _ "google.golang.org/genproto/googleapis/api/visibility" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/known/structpb" timestamppb "google.golang.org/protobuf/types/known/timestamppb" wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" @@ -421,21 +422,92 @@ func (x *ReadResponse) GetContinuationToken() string { return "" } +type WriteRequestTupleKey struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` + Relation string `protobuf:"bytes,2,opt,name=relation,proto3" json:"relation,omitempty"` + Object string `protobuf:"bytes,3,opt,name=object,proto3" json:"object,omitempty"` + Condition *RelationshipCondition `protobuf:"bytes,4,opt,name=condition,proto3" json:"condition,omitempty"` +} + +func (x *WriteRequestTupleKey) Reset() { + *x = WriteRequestTupleKey{} + if protoimpl.UnsafeEnabled { + mi := &file_openfga_v1_openfga_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WriteRequestTupleKey) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WriteRequestTupleKey) ProtoMessage() {} + +func (x *WriteRequestTupleKey) ProtoReflect() protoreflect.Message { + mi := &file_openfga_v1_openfga_service_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WriteRequestTupleKey.ProtoReflect.Descriptor instead. +func (*WriteRequestTupleKey) Descriptor() ([]byte, []int) { + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{6} +} + +func (x *WriteRequestTupleKey) GetUser() string { + if x != nil { + return x.User + } + return "" +} + +func (x *WriteRequestTupleKey) GetRelation() string { + if x != nil { + return x.Relation + } + return "" +} + +func (x *WriteRequestTupleKey) GetObject() string { + if x != nil { + return x.Object + } + return "" +} + +func (x *WriteRequestTupleKey) GetCondition() *RelationshipCondition { + if x != nil { + return x.Condition + } + return nil +} + type WriteRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - StoreId string `protobuf:"bytes,1,opt,name=store_id,proto3" json:"store_id,omitempty"` - Writes *TupleKeys `protobuf:"bytes,2,opt,name=writes,proto3" json:"writes,omitempty"` - Deletes *TupleKeys `protobuf:"bytes,3,opt,name=deletes,proto3" json:"deletes,omitempty"` - AuthorizationModelId string `protobuf:"bytes,4,opt,name=authorization_model_id,proto3" json:"authorization_model_id,omitempty"` + StoreId string `protobuf:"bytes,1,opt,name=store_id,proto3" json:"store_id,omitempty"` + Writes []*WriteRequestTupleKey `protobuf:"bytes,2,rep,name=writes,proto3" json:"writes,omitempty"` + Deletes []*WriteRequestTupleKey `protobuf:"bytes,3,rep,name=deletes,proto3" json:"deletes,omitempty"` + AuthorizationModelId string `protobuf:"bytes,4,opt,name=authorization_model_id,proto3" json:"authorization_model_id,omitempty"` } func (x *WriteRequest) Reset() { *x = WriteRequest{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[6] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -448,7 +520,7 @@ func (x *WriteRequest) String() string { func (*WriteRequest) ProtoMessage() {} func (x *WriteRequest) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[6] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -461,7 +533,7 @@ func (x *WriteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteRequest.ProtoReflect.Descriptor instead. func (*WriteRequest) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{6} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{7} } func (x *WriteRequest) GetStoreId() string { @@ -471,14 +543,14 @@ func (x *WriteRequest) GetStoreId() string { return "" } -func (x *WriteRequest) GetWrites() *TupleKeys { +func (x *WriteRequest) GetWrites() []*WriteRequestTupleKey { if x != nil { return x.Writes } return nil } -func (x *WriteRequest) GetDeletes() *TupleKeys { +func (x *WriteRequest) GetDeletes() []*WriteRequestTupleKey { if x != nil { return x.Deletes } @@ -501,7 +573,7 @@ type WriteResponse struct { func (x *WriteResponse) Reset() { *x = WriteResponse{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[7] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -514,7 +586,7 @@ func (x *WriteResponse) String() string { func (*WriteResponse) ProtoMessage() {} func (x *WriteResponse) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[7] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -527,7 +599,7 @@ func (x *WriteResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteResponse.ProtoReflect.Descriptor instead. func (*WriteResponse) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{7} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{8} } type CheckRequest struct { @@ -546,7 +618,7 @@ type CheckRequest struct { func (x *CheckRequest) Reset() { *x = CheckRequest{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[8] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -559,7 +631,7 @@ func (x *CheckRequest) String() string { func (*CheckRequest) ProtoMessage() {} func (x *CheckRequest) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[8] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -572,7 +644,7 @@ func (x *CheckRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckRequest.ProtoReflect.Descriptor instead. func (*CheckRequest) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{8} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{9} } func (x *CheckRequest) GetStoreId() string { @@ -623,7 +695,7 @@ type CheckResponse struct { func (x *CheckResponse) Reset() { *x = CheckResponse{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[9] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -636,7 +708,7 @@ func (x *CheckResponse) String() string { func (*CheckResponse) ProtoMessage() {} func (x *CheckResponse) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[9] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -649,7 +721,7 @@ func (x *CheckResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckResponse.ProtoReflect.Descriptor instead. func (*CheckResponse) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{9} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{10} } func (x *CheckResponse) GetAllowed() bool { @@ -679,7 +751,7 @@ type ExpandRequest struct { func (x *ExpandRequest) Reset() { *x = ExpandRequest{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[10] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -692,7 +764,7 @@ func (x *ExpandRequest) String() string { func (*ExpandRequest) ProtoMessage() {} func (x *ExpandRequest) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[10] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -705,7 +777,7 @@ func (x *ExpandRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ExpandRequest.ProtoReflect.Descriptor instead. func (*ExpandRequest) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{10} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{11} } func (x *ExpandRequest) GetStoreId() string { @@ -740,7 +812,7 @@ type ExpandResponse struct { func (x *ExpandResponse) Reset() { *x = ExpandResponse{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[11] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -753,7 +825,7 @@ func (x *ExpandResponse) String() string { func (*ExpandResponse) ProtoMessage() {} func (x *ExpandResponse) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[11] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -766,7 +838,7 @@ func (x *ExpandResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ExpandResponse.ProtoReflect.Descriptor instead. func (*ExpandResponse) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{11} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{12} } func (x *ExpandResponse) GetTree() *UsersetTree { @@ -788,7 +860,7 @@ type ReadAuthorizationModelRequest struct { func (x *ReadAuthorizationModelRequest) Reset() { *x = ReadAuthorizationModelRequest{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[12] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -801,7 +873,7 @@ func (x *ReadAuthorizationModelRequest) String() string { func (*ReadAuthorizationModelRequest) ProtoMessage() {} func (x *ReadAuthorizationModelRequest) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[12] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -814,7 +886,7 @@ func (x *ReadAuthorizationModelRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadAuthorizationModelRequest.ProtoReflect.Descriptor instead. func (*ReadAuthorizationModelRequest) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{12} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{13} } func (x *ReadAuthorizationModelRequest) GetStoreId() string { @@ -842,7 +914,7 @@ type ReadAuthorizationModelResponse struct { func (x *ReadAuthorizationModelResponse) Reset() { *x = ReadAuthorizationModelResponse{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[13] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -855,7 +927,7 @@ func (x *ReadAuthorizationModelResponse) String() string { func (*ReadAuthorizationModelResponse) ProtoMessage() {} func (x *ReadAuthorizationModelResponse) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[13] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -868,7 +940,7 @@ func (x *ReadAuthorizationModelResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadAuthorizationModelResponse.ProtoReflect.Descriptor instead. func (*ReadAuthorizationModelResponse) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{13} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{14} } func (x *ReadAuthorizationModelResponse) GetAuthorizationModel() *AuthorizationModel { @@ -891,7 +963,7 @@ type WriteAuthorizationModelRequest struct { func (x *WriteAuthorizationModelRequest) Reset() { *x = WriteAuthorizationModelRequest{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[14] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -904,7 +976,7 @@ func (x *WriteAuthorizationModelRequest) String() string { func (*WriteAuthorizationModelRequest) ProtoMessage() {} func (x *WriteAuthorizationModelRequest) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[14] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -917,7 +989,7 @@ func (x *WriteAuthorizationModelRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteAuthorizationModelRequest.ProtoReflect.Descriptor instead. func (*WriteAuthorizationModelRequest) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{14} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{15} } func (x *WriteAuthorizationModelRequest) GetStoreId() string { @@ -952,7 +1024,7 @@ type WriteAuthorizationModelResponse struct { func (x *WriteAuthorizationModelResponse) Reset() { *x = WriteAuthorizationModelResponse{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[15] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -965,7 +1037,7 @@ func (x *WriteAuthorizationModelResponse) String() string { func (*WriteAuthorizationModelResponse) ProtoMessage() {} func (x *WriteAuthorizationModelResponse) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[15] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -978,7 +1050,7 @@ func (x *WriteAuthorizationModelResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteAuthorizationModelResponse.ProtoReflect.Descriptor instead. func (*WriteAuthorizationModelResponse) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{15} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{16} } func (x *WriteAuthorizationModelResponse) GetAuthorizationModelId() string { @@ -1001,7 +1073,7 @@ type ReadAuthorizationModelsRequest struct { func (x *ReadAuthorizationModelsRequest) Reset() { *x = ReadAuthorizationModelsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[16] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1014,7 +1086,7 @@ func (x *ReadAuthorizationModelsRequest) String() string { func (*ReadAuthorizationModelsRequest) ProtoMessage() {} func (x *ReadAuthorizationModelsRequest) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[16] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1027,7 +1099,7 @@ func (x *ReadAuthorizationModelsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadAuthorizationModelsRequest.ProtoReflect.Descriptor instead. func (*ReadAuthorizationModelsRequest) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{16} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{17} } func (x *ReadAuthorizationModelsRequest) GetStoreId() string { @@ -1063,7 +1135,7 @@ type ReadAuthorizationModelsResponse struct { func (x *ReadAuthorizationModelsResponse) Reset() { *x = ReadAuthorizationModelsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[17] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1076,7 +1148,7 @@ func (x *ReadAuthorizationModelsResponse) String() string { func (*ReadAuthorizationModelsResponse) ProtoMessage() {} func (x *ReadAuthorizationModelsResponse) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[17] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1089,7 +1161,7 @@ func (x *ReadAuthorizationModelsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadAuthorizationModelsResponse.ProtoReflect.Descriptor instead. func (*ReadAuthorizationModelsResponse) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{17} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{18} } func (x *ReadAuthorizationModelsResponse) GetAuthorizationModels() []*AuthorizationModel { @@ -1119,7 +1191,7 @@ type WriteAssertionsRequest struct { func (x *WriteAssertionsRequest) Reset() { *x = WriteAssertionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[18] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1132,7 +1204,7 @@ func (x *WriteAssertionsRequest) String() string { func (*WriteAssertionsRequest) ProtoMessage() {} func (x *WriteAssertionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[18] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1145,7 +1217,7 @@ func (x *WriteAssertionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteAssertionsRequest.ProtoReflect.Descriptor instead. func (*WriteAssertionsRequest) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{18} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{19} } func (x *WriteAssertionsRequest) GetStoreId() string { @@ -1178,7 +1250,7 @@ type WriteAssertionsResponse struct { func (x *WriteAssertionsResponse) Reset() { *x = WriteAssertionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[19] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1191,7 +1263,7 @@ func (x *WriteAssertionsResponse) String() string { func (*WriteAssertionsResponse) ProtoMessage() {} func (x *WriteAssertionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[19] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1204,7 +1276,7 @@ func (x *WriteAssertionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use WriteAssertionsResponse.ProtoReflect.Descriptor instead. func (*WriteAssertionsResponse) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{19} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{20} } type ReadAssertionsRequest struct { @@ -1219,7 +1291,7 @@ type ReadAssertionsRequest struct { func (x *ReadAssertionsRequest) Reset() { *x = ReadAssertionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[20] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1232,7 +1304,7 @@ func (x *ReadAssertionsRequest) String() string { func (*ReadAssertionsRequest) ProtoMessage() {} func (x *ReadAssertionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[20] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1245,7 +1317,7 @@ func (x *ReadAssertionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadAssertionsRequest.ProtoReflect.Descriptor instead. func (*ReadAssertionsRequest) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{20} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{21} } func (x *ReadAssertionsRequest) GetStoreId() string { @@ -1274,7 +1346,7 @@ type ReadAssertionsResponse struct { func (x *ReadAssertionsResponse) Reset() { *x = ReadAssertionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[21] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1287,7 +1359,7 @@ func (x *ReadAssertionsResponse) String() string { func (*ReadAssertionsResponse) ProtoMessage() {} func (x *ReadAssertionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[21] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1300,7 +1372,7 @@ func (x *ReadAssertionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadAssertionsResponse.ProtoReflect.Descriptor instead. func (*ReadAssertionsResponse) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{21} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{22} } func (x *ReadAssertionsResponse) GetAuthorizationModelId() string { @@ -1331,7 +1403,7 @@ type ReadChangesRequest struct { func (x *ReadChangesRequest) Reset() { *x = ReadChangesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[22] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1344,7 +1416,7 @@ func (x *ReadChangesRequest) String() string { func (*ReadChangesRequest) ProtoMessage() {} func (x *ReadChangesRequest) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[22] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1357,7 +1429,7 @@ func (x *ReadChangesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadChangesRequest.ProtoReflect.Descriptor instead. func (*ReadChangesRequest) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{22} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{23} } func (x *ReadChangesRequest) GetStoreId() string { @@ -1400,7 +1472,7 @@ type ReadChangesResponse struct { func (x *ReadChangesResponse) Reset() { *x = ReadChangesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[23] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1413,7 +1485,7 @@ func (x *ReadChangesResponse) String() string { func (*ReadChangesResponse) ProtoMessage() {} func (x *ReadChangesResponse) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[23] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1426,7 +1498,7 @@ func (x *ReadChangesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadChangesResponse.ProtoReflect.Descriptor instead. func (*ReadChangesResponse) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{23} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{24} } func (x *ReadChangesResponse) GetChanges() []*TupleChange { @@ -1454,7 +1526,7 @@ type CreateStoreRequest struct { func (x *CreateStoreRequest) Reset() { *x = CreateStoreRequest{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[24] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1467,7 +1539,7 @@ func (x *CreateStoreRequest) String() string { func (*CreateStoreRequest) ProtoMessage() {} func (x *CreateStoreRequest) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[24] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1480,7 +1552,7 @@ func (x *CreateStoreRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateStoreRequest.ProtoReflect.Descriptor instead. func (*CreateStoreRequest) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{24} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{25} } func (x *CreateStoreRequest) GetName() string { @@ -1504,7 +1576,7 @@ type CreateStoreResponse struct { func (x *CreateStoreResponse) Reset() { *x = CreateStoreResponse{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[25] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1517,7 +1589,7 @@ func (x *CreateStoreResponse) String() string { func (*CreateStoreResponse) ProtoMessage() {} func (x *CreateStoreResponse) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[25] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1530,7 +1602,7 @@ func (x *CreateStoreResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateStoreResponse.ProtoReflect.Descriptor instead. func (*CreateStoreResponse) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{25} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{26} } func (x *CreateStoreResponse) GetId() string { @@ -1573,7 +1645,7 @@ type UpdateStoreRequest struct { func (x *UpdateStoreRequest) Reset() { *x = UpdateStoreRequest{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[26] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1586,7 +1658,7 @@ func (x *UpdateStoreRequest) String() string { func (*UpdateStoreRequest) ProtoMessage() {} func (x *UpdateStoreRequest) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[26] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1599,7 +1671,7 @@ func (x *UpdateStoreRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateStoreRequest.ProtoReflect.Descriptor instead. func (*UpdateStoreRequest) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{26} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{27} } func (x *UpdateStoreRequest) GetStoreId() string { @@ -1630,7 +1702,7 @@ type UpdateStoreResponse struct { func (x *UpdateStoreResponse) Reset() { *x = UpdateStoreResponse{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[27] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1643,7 +1715,7 @@ func (x *UpdateStoreResponse) String() string { func (*UpdateStoreResponse) ProtoMessage() {} func (x *UpdateStoreResponse) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[27] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1656,7 +1728,7 @@ func (x *UpdateStoreResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateStoreResponse.ProtoReflect.Descriptor instead. func (*UpdateStoreResponse) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{27} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{28} } func (x *UpdateStoreResponse) GetId() string { @@ -1698,7 +1770,7 @@ type DeleteStoreRequest struct { func (x *DeleteStoreRequest) Reset() { *x = DeleteStoreRequest{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[28] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1711,7 +1783,7 @@ func (x *DeleteStoreRequest) String() string { func (*DeleteStoreRequest) ProtoMessage() {} func (x *DeleteStoreRequest) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[28] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1724,7 +1796,7 @@ func (x *DeleteStoreRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteStoreRequest.ProtoReflect.Descriptor instead. func (*DeleteStoreRequest) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{28} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{29} } func (x *DeleteStoreRequest) GetStoreId() string { @@ -1743,7 +1815,7 @@ type DeleteStoreResponse struct { func (x *DeleteStoreResponse) Reset() { *x = DeleteStoreResponse{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[29] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1756,7 +1828,7 @@ func (x *DeleteStoreResponse) String() string { func (*DeleteStoreResponse) ProtoMessage() {} func (x *DeleteStoreResponse) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[29] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1769,7 +1841,7 @@ func (x *DeleteStoreResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteStoreResponse.ProtoReflect.Descriptor instead. func (*DeleteStoreResponse) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{29} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{30} } type GetStoreRequest struct { @@ -1783,7 +1855,7 @@ type GetStoreRequest struct { func (x *GetStoreRequest) Reset() { *x = GetStoreRequest{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[30] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1796,7 +1868,7 @@ func (x *GetStoreRequest) String() string { func (*GetStoreRequest) ProtoMessage() {} func (x *GetStoreRequest) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[30] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1809,7 +1881,7 @@ func (x *GetStoreRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStoreRequest.ProtoReflect.Descriptor instead. func (*GetStoreRequest) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{30} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{31} } func (x *GetStoreRequest) GetStoreId() string { @@ -1833,7 +1905,7 @@ type GetStoreResponse struct { func (x *GetStoreResponse) Reset() { *x = GetStoreResponse{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[31] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1846,7 +1918,7 @@ func (x *GetStoreResponse) String() string { func (*GetStoreResponse) ProtoMessage() {} func (x *GetStoreResponse) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[31] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1859,7 +1931,7 @@ func (x *GetStoreResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetStoreResponse.ProtoReflect.Descriptor instead. func (*GetStoreResponse) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{31} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{32} } func (x *GetStoreResponse) GetId() string { @@ -1902,7 +1974,7 @@ type ListStoresRequest struct { func (x *ListStoresRequest) Reset() { *x = ListStoresRequest{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[32] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1915,7 +1987,7 @@ func (x *ListStoresRequest) String() string { func (*ListStoresRequest) ProtoMessage() {} func (x *ListStoresRequest) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[32] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1928,7 +2000,7 @@ func (x *ListStoresRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListStoresRequest.ProtoReflect.Descriptor instead. func (*ListStoresRequest) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{32} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{33} } func (x *ListStoresRequest) GetPageSize() *wrapperspb.Int32Value { @@ -1957,7 +2029,7 @@ type ListStoresResponse struct { func (x *ListStoresResponse) Reset() { *x = ListStoresResponse{} if protoimpl.UnsafeEnabled { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[33] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1970,7 +2042,7 @@ func (x *ListStoresResponse) String() string { func (*ListStoresResponse) ProtoMessage() {} func (x *ListStoresResponse) ProtoReflect() protoreflect.Message { - mi := &file_openfga_v1_openfga_service_proto_msgTypes[33] + mi := &file_openfga_v1_openfga_service_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1983,7 +2055,7 @@ func (x *ListStoresResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListStoresResponse.ProtoReflect.Descriptor instead. func (*ListStoresResponse) Descriptor() ([]byte, []int) { - return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{33} + return file_openfga_v1_openfga_service_proto_rawDescGZIP(), []int{34} } func (x *ListStoresResponse) GetStores() []*Store { @@ -2011,141 +2083,161 @@ var file_openfga_v1_openfga_service_proto_rawDesc = []byte{ 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, - 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x6f, 0x70, 0x65, - 0x6e, 0x66, 0x67, 0x61, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, - 0x61, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, - 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8f, 0x04, 0x0a, 0x12, - 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x65, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x49, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, - 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, - 0x42, 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, - 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, - 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, - 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x12, 0x84, 0x01, 0x0a, 0x16, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, - 0x1c, 0x22, 0x30, 0x31, 0x47, 0x35, 0x4a, 0x41, 0x56, 0x4a, 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, - 0x39, 0x54, 0x54, 0x33, 0x53, 0x4b, 0x56, 0x53, 0x37, 0x58, 0x31, 0x4a, 0x22, 0xfa, 0x42, 0x28, - 0x72, 0x26, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, - 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, - 0x7b, 0x32, 0x36, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, - 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, - 0x92, 0x41, 0x0c, 0x4a, 0x0a, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xe0, - 0x41, 0x02, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5e, 0x3a, 0x23, 0x40, 0x5c, - 0x73, 0x5d, 0x7b, 0x31, 0x2c, 0x32, 0x35, 0x34, 0x7d, 0x24, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x43, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x27, 0x92, 0x41, 0x0a, 0x4a, 0x08, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x14, 0x72, 0x12, 0x32, 0x10, 0x5e, 0x5b, 0x5e, 0x3a, 0x23, - 0x40, 0x5c, 0x73, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x30, 0x7d, 0x24, 0x52, 0x08, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x23, 0x92, 0x41, 0x13, 0x4a, 0x0b, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, - 0x61, 0x6e, 0x6e, 0x65, 0x22, 0x78, 0x80, 0x04, 0x80, 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, - 0x07, 0x72, 0x05, 0x20, 0x01, 0x28, 0x80, 0x04, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x4d, - 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x74, 0x75, 0x70, - 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, - 0x6c, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x22, 0x5e, 0x0a, - 0x13, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x2d, 0x92, 0x41, 0x2a, 0x4a, 0x28, 0x5b, 0x22, 0x64, 0x6f, - 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x72, 0x6f, 0x61, 0x64, 0x6d, 0x61, 0x70, 0x22, 0x2c, - 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x70, 0x6c, 0x61, 0x6e, 0x6e, 0x69, - 0x6e, 0x67, 0x22, 0x5d, 0x52, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x22, 0x97, 0x04, - 0x0a, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x65, 0x0a, 0x08, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x49, - 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, - 0x4d, 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, 0x48, 0x45, 0x35, 0x58, - 0x22, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, - 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, - 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x5f, 0x69, 0x64, 0x12, 0x84, 0x01, 0x0a, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x47, 0x35, - 0x4a, 0x41, 0x56, 0x4a, 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, 0x39, 0x54, 0x54, 0x33, 0x53, 0x4b, - 0x56, 0x53, 0x37, 0x58, 0x31, 0x4a, 0x22, 0xfa, 0x42, 0x28, 0x72, 0x26, 0x32, 0x21, 0x5e, 0x5b, - 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, - 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0xd0, - 0x01, 0x01, 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0x92, 0x41, 0x0c, 0x4a, 0x0a, 0x22, - 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x15, 0x72, - 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5e, 0x3a, 0x23, 0x40, 0x5c, 0x73, 0x5d, 0x7b, 0x31, 0x2c, 0x32, - 0x35, 0x34, 0x7d, 0x24, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0x92, 0x41, - 0x0a, 0x4a, 0x08, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, - 0x14, 0x72, 0x12, 0x32, 0x10, 0x5e, 0x5b, 0x5e, 0x3a, 0x23, 0x40, 0x5c, 0x73, 0x5d, 0x7b, 0x31, - 0x2c, 0x35, 0x30, 0x7d, 0x24, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x37, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x23, 0x92, - 0x41, 0x13, 0x4a, 0x0b, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x61, 0x6e, 0x6e, 0x65, 0x22, 0x78, - 0x80, 0x04, 0x80, 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x20, 0x01, 0x28, - 0x80, 0x04, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x54, 0x75, 0x70, 0x6c, 0x65, - 0x4b, 0x65, 0x79, 0x73, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, - 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x22, 0x4e, 0x0a, 0x1b, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0x92, 0x41, 0x14, 0x4a, 0x12, 0x22, 0x64, 0x6f, - 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x72, 0x6f, 0x61, 0x64, 0x6d, 0x61, 0x70, 0x22, 0x52, - 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x9a, 0x03, 0x0a, 0x0b, 0x52, 0x65, 0x61, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, - 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, - 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, 0xe0, 0x41, 0x02, 0xfa, + 0x6c, 0x69, 0x74, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, + 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x6f, 0x70, 0x65, 0x6e, 0x66, + 0x67, 0x61, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x7a, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2f, + 0x76, 0x31, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, + 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x1a, 0x17, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8f, 0x04, 0x0a, 0x12, 0x4c, 0x69, + 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x65, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x49, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, + 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, + 0x48, 0x45, 0x35, 0x58, 0x22, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, + 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, + 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x08, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x12, 0x84, 0x01, 0x0a, 0x16, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, + 0x30, 0x31, 0x47, 0x35, 0x4a, 0x41, 0x56, 0x4a, 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, 0x39, 0x54, + 0x54, 0x33, 0x53, 0x4b, 0x56, 0x53, 0x37, 0x58, 0x31, 0x4a, 0x22, 0xfa, 0x42, 0x28, 0x72, 0x26, + 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, + 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, + 0x36, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x12, 0x3e, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0x92, 0x41, + 0x0c, 0x4a, 0x0a, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xe0, 0x41, 0x02, + 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x11, 0x5e, 0x5b, 0x5e, 0x3a, 0x23, 0x40, 0x5c, 0x73, 0x5d, + 0x7b, 0x31, 0x2c, 0x32, 0x35, 0x34, 0x7d, 0x24, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x43, + 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x27, 0x92, 0x41, 0x0a, 0x4a, 0x08, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0xe0, + 0x41, 0x02, 0xfa, 0x42, 0x14, 0x72, 0x12, 0x32, 0x10, 0x5e, 0x5b, 0x5e, 0x3a, 0x23, 0x40, 0x5c, + 0x73, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x30, 0x7d, 0x24, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x23, 0x92, 0x41, 0x13, 0x4a, 0x0b, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x61, 0x6e, + 0x6e, 0x65, 0x22, 0x78, 0x80, 0x04, 0x80, 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x07, 0x72, + 0x05, 0x20, 0x01, 0x28, 0x80, 0x04, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x11, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, + 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, + 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x54, + 0x75, 0x70, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x22, 0x5e, 0x0a, 0x13, 0x4c, + 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x42, 0x2d, 0x92, 0x41, 0x2a, 0x4a, 0x28, 0x5b, 0x22, 0x64, 0x6f, 0x63, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x72, 0x6f, 0x61, 0x64, 0x6d, 0x61, 0x70, 0x22, 0x2c, 0x22, 0x64, + 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x70, 0x6c, 0x61, 0x6e, 0x6e, 0x69, 0x6e, 0x67, + 0x22, 0x5d, 0x52, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x22, 0x97, 0x04, 0x0a, 0x1a, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x65, 0x0a, 0x08, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x49, 0x92, 0x41, + 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, + 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, - 0x64, 0x12, 0x32, 0x0a, 0x09, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x74, 0x75, 0x70, 0x6c, - 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x12, 0x4b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x10, 0x92, 0x41, 0x04, 0x4a, 0x02, 0x35, 0x30, 0xfa, 0x42, - 0x06, 0x1a, 0x04, 0x18, 0x64, 0x28, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x12, 0x9f, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x6f, 0x92, 0x41, 0x64, 0x4a, 0x62, 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, 0x49, 0x36, 0x49, - 0x6b, 0x78, 0x42, 0x56, 0x45, 0x56, 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, 0x30, 0x4e, 0x50, 0x54, - 0x6b, 0x5a, 0x4a, 0x52, 0x31, 0x39, 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, 0x48, 0x4e, 0x30, 0x62, - 0x33, 0x4a, 0x6c, 0x49, 0x69, 0x77, 0x69, 0x63, 0x32, 0x73, 0x69, 0x4f, 0x69, 0x49, 0x78, 0x65, - 0x6d, 0x31, 0x71, 0x62, 0x58, 0x46, 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, 0x45, 0x78, 0x54, 0x63, - 0x55, 0x6f, 0x79, 0x4e, 0x30, 0x31, 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, 0x68, 0x30, 0x63, - 0x57, 0x67, 0x69, 0x66, 0x51, 0x3d, 0x3d, 0x22, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, 0x28, - 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa0, 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, - 0x76, 0x31, 0x2e, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x06, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, - 0x12, 0xe4, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0xb3, 0x01, - 0x92, 0x41, 0xa7, 0x01, 0x32, 0x41, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, - 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x77, 0x69, 0x6c, - 0x6c, 0x20, 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, - 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, - 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x4a, 0x62, 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, - 0x49, 0x36, 0x49, 0x6b, 0x78, 0x42, 0x56, 0x45, 0x56, 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, 0x30, - 0x4e, 0x50, 0x54, 0x6b, 0x5a, 0x4a, 0x52, 0x31, 0x39, 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, 0x48, - 0x4e, 0x30, 0x62, 0x33, 0x4a, 0x6c, 0x49, 0x69, 0x77, 0x69, 0x63, 0x32, 0x73, 0x69, 0x4f, 0x69, - 0x49, 0x78, 0x65, 0x6d, 0x31, 0x71, 0x62, 0x58, 0x46, 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, 0x45, - 0x78, 0x54, 0x63, 0x55, 0x6f, 0x79, 0x4e, 0x30, 0x31, 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, - 0x68, 0x30, 0x63, 0x57, 0x67, 0x69, 0x66, 0x51, 0x3d, 0x3d, 0x22, 0xfa, 0x42, 0x05, 0x72, 0x03, - 0x28, 0x80, 0x28, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xdf, 0x02, 0x0a, 0x0c, 0x57, 0x72, 0x69, 0x74, + 0x64, 0x12, 0x84, 0x01, 0x0a, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x47, 0x35, 0x4a, 0x41, + 0x56, 0x4a, 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, 0x39, 0x54, 0x54, 0x33, 0x53, 0x4b, 0x56, 0x53, + 0x37, 0x58, 0x31, 0x4a, 0x22, 0xfa, 0x42, 0x28, 0x72, 0x26, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, + 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, + 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0xd0, 0x01, 0x01, + 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x12, 0x3e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x2a, 0x92, 0x41, 0x0c, 0x4a, 0x0a, 0x22, 0x64, 0x6f, + 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, + 0x11, 0x5e, 0x5b, 0x5e, 0x3a, 0x23, 0x40, 0x5c, 0x73, 0x5d, 0x7b, 0x31, 0x2c, 0x32, 0x35, 0x34, + 0x7d, 0x24, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x27, 0x92, 0x41, 0x0a, 0x4a, + 0x08, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x14, 0x72, + 0x12, 0x32, 0x10, 0x5e, 0x5b, 0x5e, 0x3a, 0x23, 0x40, 0x5c, 0x73, 0x5d, 0x7b, 0x31, 0x2c, 0x35, + 0x30, 0x7d, 0x24, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x0a, + 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x23, 0x92, 0x41, 0x13, + 0x4a, 0x0b, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x61, 0x6e, 0x6e, 0x65, 0x22, 0x78, 0x80, 0x04, + 0x80, 0x01, 0x01, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x07, 0x72, 0x05, 0x20, 0x01, 0x28, 0x80, 0x04, + 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x4d, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x4b, 0x65, + 0x79, 0x73, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x74, + 0x75, 0x70, 0x6c, 0x65, 0x73, 0x22, 0x4e, 0x0a, 0x1b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x65, + 0x64, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x17, 0x92, 0x41, 0x14, 0x4a, 0x12, 0x22, 0x64, 0x6f, 0x63, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x72, 0x6f, 0x61, 0x64, 0x6d, 0x61, 0x70, 0x22, 0x52, 0x06, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x9a, 0x03, 0x0a, 0x0b, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, + 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, + 0x37, 0x4e, 0x4d, 0x42, 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x25, + 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, + 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, + 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x12, + 0x32, 0x0a, 0x09, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, + 0x54, 0x75, 0x70, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, + 0x6b, 0x65, 0x79, 0x12, 0x4b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x10, 0x92, 0x41, 0x04, 0x4a, 0x02, 0x35, 0x30, 0xfa, 0x42, 0x06, 0x1a, + 0x04, 0x18, 0x64, 0x28, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, + 0x12, 0x9f, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x6f, 0x92, + 0x41, 0x64, 0x4a, 0x62, 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, 0x49, 0x36, 0x49, 0x6b, 0x78, + 0x42, 0x56, 0x45, 0x56, 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, 0x30, 0x4e, 0x50, 0x54, 0x6b, 0x5a, + 0x4a, 0x52, 0x31, 0x39, 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, 0x48, 0x4e, 0x30, 0x62, 0x33, 0x4a, + 0x6c, 0x49, 0x69, 0x77, 0x69, 0x63, 0x32, 0x73, 0x69, 0x4f, 0x69, 0x49, 0x78, 0x65, 0x6d, 0x31, + 0x71, 0x62, 0x58, 0x46, 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, 0x45, 0x78, 0x54, 0x63, 0x55, 0x6f, + 0x79, 0x4e, 0x30, 0x31, 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, 0x68, 0x30, 0x63, 0x57, 0x67, + 0x69, 0x66, 0x51, 0x3d, 0x3d, 0x22, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, 0x28, 0x52, 0x12, + 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x22, 0xa0, 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, + 0x2e, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x06, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x12, 0xe4, + 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0xb3, 0x01, 0x92, 0x41, + 0xa7, 0x01, 0x32, 0x41, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, + 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, + 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x75, + 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x4a, 0x62, 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, 0x49, 0x36, + 0x49, 0x6b, 0x78, 0x42, 0x56, 0x45, 0x56, 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, 0x30, 0x4e, 0x50, + 0x54, 0x6b, 0x5a, 0x4a, 0x52, 0x31, 0x39, 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, 0x48, 0x4e, 0x30, + 0x62, 0x33, 0x4a, 0x6c, 0x49, 0x69, 0x77, 0x69, 0x63, 0x32, 0x73, 0x69, 0x4f, 0x69, 0x49, 0x78, + 0x65, 0x6d, 0x31, 0x71, 0x62, 0x58, 0x46, 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, 0x45, 0x78, 0x54, + 0x63, 0x55, 0x6f, 0x79, 0x4e, 0x30, 0x31, 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, 0x68, 0x30, + 0x63, 0x57, 0x67, 0x69, 0x66, 0x51, 0x3d, 0x3d, 0x22, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, + 0x28, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x9f, 0x02, 0x0a, 0x14, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x2f, + 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0x92, 0x41, + 0x10, 0x4a, 0x0b, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x61, 0x6e, 0x6e, 0x65, 0x22, 0x78, 0x80, + 0x04, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, 0x04, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, + 0x45, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x29, 0x92, 0x41, 0x0c, 0x4a, 0x08, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, + 0x78, 0x32, 0xfa, 0x42, 0x17, 0x72, 0x15, 0x32, 0x10, 0x5e, 0x5b, 0x5e, 0x3a, 0x23, 0x40, 0x5c, + 0x73, 0x5d, 0x7b, 0x31, 0x2c, 0x35, 0x30, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x08, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4e, 0x0a, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x36, 0x92, 0x41, 0x1b, 0x4a, 0x16, 0x22, 0x64, 0x6f, + 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, + 0x65, 0x74, 0x22, 0x78, 0x80, 0x02, 0xfa, 0x42, 0x15, 0x72, 0x13, 0x32, 0x0e, 0x5e, 0x5b, 0x5e, + 0x5c, 0x73, 0x5d, 0x7b, 0x32, 0x2c, 0x32, 0x35, 0x36, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x06, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x3f, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x68, 0x69, 0x70, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x63, 0x6f, + 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xf5, 0x02, 0x0a, 0x0c, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, @@ -2153,80 +2245,99 @@ var file_openfga_v1_openfga_service_proto_rawDesc = []byte{ 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, - 0x69, 0x64, 0x12, 0x2d, 0x0a, 0x06, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x75, 0x70, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x06, 0x77, 0x72, 0x69, 0x74, 0x65, - 0x73, 0x12, 0x2f, 0x0a, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, - 0x54, 0x75, 0x70, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x47, 0x35, 0x4a, - 0x41, 0x56, 0x4a, 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, 0x39, 0x54, 0x54, 0x33, 0x53, 0x4b, 0x56, - 0x53, 0x37, 0x58, 0x31, 0x4a, 0x22, 0xfa, 0x42, 0x28, 0x72, 0x26, 0x32, 0x21, 0x5e, 0x5b, 0x41, + 0x69, 0x64, 0x12, 0x38, 0x0a, 0x06, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x75, 0x70, 0x6c, + 0x65, 0x4b, 0x65, 0x79, 0x52, 0x06, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x07, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x52, + 0x07, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x16, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, + 0x22, 0x30, 0x31, 0x47, 0x35, 0x4a, 0x41, 0x56, 0x4a, 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, 0x39, + 0x54, 0x54, 0x33, 0x53, 0x4b, 0x56, 0x53, 0x37, 0x58, 0x31, 0x4a, 0x22, 0xfa, 0x42, 0x28, 0x72, + 0x26, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, + 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, + 0x32, 0x36, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x22, + 0x0f, 0x0a, 0x0d, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xb3, 0x03, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x68, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, + 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, + 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, + 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, + 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, + 0x24, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x09, 0x74, + 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x75, 0x70, 0x6c, + 0x65, 0x4b, 0x65, 0x79, 0x42, 0x0b, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x09, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x11, + 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, + 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x54, + 0x75, 0x70, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, + 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x16, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, + 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x47, 0x35, 0x4a, 0x41, 0x56, 0x4a, 0x34, 0x31, 0x54, 0x34, + 0x39, 0x45, 0x39, 0x54, 0x54, 0x33, 0x53, 0x4b, 0x56, 0x53, 0x37, 0x58, 0x31, 0x4a, 0x22, 0xfa, + 0x42, 0x28, 0x72, 0x26, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, + 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, + 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, + 0x69, 0x64, 0x12, 0x22, 0x0a, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x42, 0x0c, 0x92, 0x41, 0x09, 0x40, 0x01, 0x4a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, + 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, 0x22, 0x54, 0x0a, 0x0d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x07, 0x61, 0x6c, 0x6c, 0x6f, 0x77, + 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x42, 0x09, 0x92, 0x41, 0x06, 0x4a, 0x04, 0x74, + 0x72, 0x75, 0x65, 0x52, 0x07, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, + 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc1, 0x02, 0x0a, + 0x0d, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, + 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, + 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, 0x48, 0x45, + 0x35, 0x58, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, - 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0xd0, 0x01, - 0x01, 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x22, 0x0f, 0x0a, 0x0d, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb3, 0x03, 0x0a, 0x0c, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x08, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, - 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, - 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, - 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, - 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, - 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x08, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x5f, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x09, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, - 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, - 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x42, 0x0b, - 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x74, 0x75, 0x70, - 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x12, 0x4d, 0x0a, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, - 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x4b, 0x65, - 0x79, 0x73, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x74, - 0x75, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x84, 0x01, 0x0a, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x08, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x09, 0x74, 0x75, 0x70, 0x6c, + 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x4b, 0x65, + 0x79, 0x42, 0x0b, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, + 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x12, 0x84, 0x01, 0x0a, 0x16, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, + 0x1c, 0x22, 0x30, 0x31, 0x47, 0x35, 0x4a, 0x41, 0x56, 0x4a, 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, + 0x39, 0x54, 0x54, 0x33, 0x53, 0x4b, 0x56, 0x53, 0x37, 0x58, 0x31, 0x4a, 0x22, 0xfa, 0x42, 0x28, + 0x72, 0x26, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, + 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, + 0x7b, 0x32, 0x36, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, - 0x47, 0x35, 0x4a, 0x41, 0x56, 0x4a, 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, 0x39, 0x54, 0x54, 0x33, - 0x53, 0x4b, 0x56, 0x53, 0x37, 0x58, 0x31, 0x4a, 0x22, 0xfa, 0x42, 0x28, 0x72, 0x26, 0x32, 0x21, + 0x22, 0x3d, 0x0a, 0x0e, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x74, 0x72, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x73, 0x65, 0x74, 0x54, 0x72, 0x65, 0x65, 0x52, 0x04, 0x74, 0x72, 0x65, 0x65, 0x22, + 0xa2, 0x01, 0x0a, 0x1d, 0x52, 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x68, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, + 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, + 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, - 0x24, 0xd0, 0x01, 0x01, 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x05, - 0x74, 0x72, 0x61, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x42, 0x0c, 0x92, 0x41, 0x09, - 0x40, 0x01, 0x4a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x05, 0x74, 0x72, 0x61, 0x63, 0x65, - 0x22, 0x54, 0x0a, 0x0d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x23, 0x0a, 0x07, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x42, 0x09, 0x92, 0x41, 0x06, 0x4a, 0x04, 0x74, 0x72, 0x75, 0x65, 0x52, 0x07, 0x61, - 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, - 0x6c, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc1, 0x02, 0x0a, 0x0d, 0x45, 0x78, 0x70, 0x61, 0x6e, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, - 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, - 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, 0xe0, 0x41, 0x02, - 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, - 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, - 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, - 0x69, 0x64, 0x12, 0x3f, 0x0a, 0x09, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, - 0x76, 0x31, 0x2e, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x42, 0x0b, 0xe0, 0x41, 0x02, - 0xfa, 0x42, 0x05, 0x8a, 0x01, 0x02, 0x10, 0x01, 0x52, 0x09, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, - 0x6b, 0x65, 0x79, 0x12, 0x84, 0x01, 0x0a, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x47, 0x35, - 0x4a, 0x41, 0x56, 0x4a, 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, 0x39, 0x54, 0x54, 0x33, 0x53, 0x4b, - 0x56, 0x53, 0x37, 0x58, 0x31, 0x4a, 0x22, 0xfa, 0x42, 0x28, 0x72, 0x26, 0x32, 0x21, 0x5e, 0x5b, - 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, - 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0xd0, - 0x01, 0x01, 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x22, 0x3d, 0x0a, 0x0e, 0x45, 0x78, - 0x70, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, - 0x74, 0x72, 0x65, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x65, 0x74, 0x54, - 0x72, 0x65, 0x65, 0x52, 0x04, 0x74, 0x72, 0x65, 0x65, 0x22, 0xa2, 0x01, 0x0a, 0x1d, 0x52, 0x65, - 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, + 0x24, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x1a, + 0x52, 0x02, 0x69, 0x64, 0x22, 0x72, 0x0a, 0x1e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x13, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, + 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x52, 0x13, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0xa7, 0x02, 0x0a, 0x1e, 0x57, 0x72, 0x69, + 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, @@ -2234,17 +2345,97 @@ var file_openfga_v1_openfga_service_proto_rawDesc = []byte{ 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x08, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x5f, 0x69, 0x64, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xfa, 0x42, 0x04, 0x72, 0x02, 0x18, 0x1a, 0x52, 0x02, 0x69, 0x64, 0x22, 0x72, - 0x0a, 0x1e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x50, 0x0a, 0x13, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x13, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x22, 0xa7, 0x02, 0x0a, 0x1e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, + 0x72, 0x65, 0x5f, 0x69, 0x64, 0x12, 0x5f, 0x0a, 0x10, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x79, 0x70, + 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x17, 0x92, 0x41, 0x09, + 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x3f, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, 0x92, + 0x01, 0x02, 0x08, 0x01, 0x52, 0x10, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x12, + 0xfa, 0x42, 0x0f, 0x72, 0x0d, 0x52, 0x03, 0x31, 0x2e, 0x30, 0x52, 0x03, 0x31, 0x2e, 0x31, 0xd0, + 0x01, 0x00, 0x52, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x22, 0xa5, 0x01, 0x0a, 0x1f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x81, 0x01, 0x0a, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x49, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, + 0x31, 0x47, 0x35, 0x4a, 0x41, 0x56, 0x4a, 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, 0x39, 0x54, 0x54, + 0x33, 0x53, 0x4b, 0x56, 0x53, 0x37, 0x58, 0x31, 0x4a, 0x22, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, + 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, + 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, + 0x7d, 0x24, 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x22, 0xf9, 0x02, 0x0a, 0x1e, 0x52, + 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, + 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, + 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, 0x48, 0x45, 0x35, + 0x58, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, + 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, + 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x08, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x12, 0x4b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, + 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x10, 0x92, 0x41, 0x04, 0x4a, 0x02, 0x35, 0x30, + 0xfa, 0x42, 0x06, 0x1a, 0x04, 0x18, 0x64, 0x28, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, + 0x73, 0x69, 0x7a, 0x65, 0x12, 0x9f, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x6f, 0x92, 0x41, 0x64, 0x4a, 0x62, 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, 0x49, + 0x36, 0x49, 0x6b, 0x78, 0x42, 0x56, 0x45, 0x56, 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, 0x30, 0x4e, + 0x50, 0x54, 0x6b, 0x5a, 0x4a, 0x52, 0x31, 0x39, 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, 0x48, 0x4e, + 0x30, 0x62, 0x33, 0x4a, 0x6c, 0x49, 0x69, 0x77, 0x69, 0x63, 0x32, 0x73, 0x69, 0x4f, 0x69, 0x49, + 0x78, 0x65, 0x6d, 0x31, 0x71, 0x62, 0x58, 0x46, 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, 0x45, 0x78, + 0x54, 0x63, 0x55, 0x6f, 0x79, 0x4e, 0x30, 0x31, 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, 0x68, + 0x30, 0x63, 0x57, 0x67, 0x69, 0x66, 0x51, 0x3d, 0x3d, 0x22, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, + 0x80, 0x28, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xdc, 0x02, 0x0a, 0x1f, 0x52, 0x65, 0x61, 0x64, 0x41, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, + 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x14, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, + 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x14, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0xe4, + 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0xb3, 0x01, 0x92, 0x41, + 0xa7, 0x01, 0x32, 0x41, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, + 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, + 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x4a, 0x62, 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, 0x49, 0x36, + 0x49, 0x6b, 0x78, 0x42, 0x56, 0x45, 0x56, 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, 0x30, 0x4e, 0x50, + 0x54, 0x6b, 0x5a, 0x4a, 0x52, 0x31, 0x39, 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, 0x48, 0x4e, 0x30, + 0x62, 0x33, 0x4a, 0x6c, 0x49, 0x69, 0x77, 0x69, 0x63, 0x32, 0x73, 0x69, 0x4f, 0x69, 0x49, 0x78, + 0x65, 0x6d, 0x31, 0x71, 0x62, 0x58, 0x46, 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, 0x45, 0x78, 0x54, + 0x63, 0x55, 0x6f, 0x79, 0x4e, 0x30, 0x31, 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, 0x68, 0x30, + 0x63, 0x57, 0x67, 0x69, 0x66, 0x51, 0x3d, 0x3d, 0x22, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, + 0x28, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xd8, 0x02, 0x0a, 0x16, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, + 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x68, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, + 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, + 0x48, 0x45, 0x35, 0x58, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, + 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, + 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, + 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x12, 0x81, 0x01, 0x0a, 0x16, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x49, 0x92, 0x41, 0x1e, + 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x47, 0x35, 0x4a, 0x41, 0x56, 0x4a, 0x34, 0x31, 0x54, 0x34, 0x39, + 0x45, 0x39, 0x54, 0x54, 0x33, 0x53, 0x4b, 0x56, 0x53, 0x37, 0x58, 0x31, 0x4a, 0x22, 0xfa, 0x42, + 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, + 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, + 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x12, 0x50, + 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x19, 0x92, 0x41, 0x09, 0x59, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x40, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x07, 0x92, 0x01, 0x04, + 0x08, 0x00, 0x10, 0x64, 0x52, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x22, 0x19, 0x0a, 0x17, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x85, 0x02, 0x0a, 0x15, + 0x52, 0x65, 0x61, 0x64, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, @@ -2252,163 +2443,46 @@ var file_openfga_v1_openfga_service_proto_rawDesc = []byte{ 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x12, - 0x5f, 0x0a, 0x10, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, - 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x17, 0x92, 0x41, 0x09, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xf0, 0x3f, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x10, - 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x3a, 0x0a, 0x0e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x12, 0xfa, 0x42, 0x0f, 0x72, 0x0d, 0x52, - 0x03, 0x31, 0x2e, 0x30, 0x52, 0x03, 0x31, 0x2e, 0x31, 0xd0, 0x01, 0x00, 0x52, 0x0e, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa5, 0x01, 0x0a, - 0x1f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x81, 0x01, 0x0a, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x49, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x47, 0x35, 0x4a, 0x41, 0x56, - 0x4a, 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, 0x39, 0x54, 0x54, 0x33, 0x53, 0x4b, 0x56, 0x53, 0x37, - 0x58, 0x31, 0x4a, 0x22, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, - 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, - 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x16, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x5f, 0x69, 0x64, 0x22, 0xf9, 0x02, 0x0a, 0x1e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, - 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, - 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, 0xe0, 0x41, 0x02, 0xfa, - 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, - 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, - 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, - 0x64, 0x12, 0x4b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x42, 0x10, 0x92, 0x41, 0x04, 0x4a, 0x02, 0x35, 0x30, 0xfa, 0x42, 0x06, 0x1a, 0x04, 0x18, - 0x64, 0x28, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x9f, - 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x6f, 0x92, 0x41, 0x64, - 0x4a, 0x62, 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, 0x49, 0x36, 0x49, 0x6b, 0x78, 0x42, 0x56, - 0x45, 0x56, 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, 0x30, 0x4e, 0x50, 0x54, 0x6b, 0x5a, 0x4a, 0x52, - 0x31, 0x39, 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, 0x48, 0x4e, 0x30, 0x62, 0x33, 0x4a, 0x6c, 0x49, - 0x69, 0x77, 0x69, 0x63, 0x32, 0x73, 0x69, 0x4f, 0x69, 0x49, 0x78, 0x65, 0x6d, 0x31, 0x71, 0x62, - 0x58, 0x46, 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, 0x45, 0x78, 0x54, 0x63, 0x55, 0x6f, 0x79, 0x4e, - 0x30, 0x31, 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, 0x68, 0x30, 0x63, 0x57, 0x67, 0x69, 0x66, - 0x51, 0x3d, 0x3d, 0x22, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, 0x28, 0x52, 0x12, 0x63, 0x6f, - 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x22, 0xdc, 0x02, 0x0a, 0x1f, 0x52, 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x14, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x52, 0x14, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0xe4, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6e, - 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0xb3, 0x01, 0x92, 0x41, 0xa7, 0x01, 0x32, 0x41, 0x54, 0x68, - 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, - 0x74, 0x79, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, - 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x4a, - 0x62, 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, 0x49, 0x36, 0x49, 0x6b, 0x78, 0x42, 0x56, 0x45, - 0x56, 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, 0x30, 0x4e, 0x50, 0x54, 0x6b, 0x5a, 0x4a, 0x52, 0x31, - 0x39, 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, 0x48, 0x4e, 0x30, 0x62, 0x33, 0x4a, 0x6c, 0x49, 0x69, - 0x77, 0x69, 0x63, 0x32, 0x73, 0x69, 0x4f, 0x69, 0x49, 0x78, 0x65, 0x6d, 0x31, 0x71, 0x62, 0x58, - 0x46, 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, 0x45, 0x78, 0x54, 0x63, 0x55, 0x6f, 0x79, 0x4e, 0x30, - 0x31, 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, 0x68, 0x30, 0x63, 0x57, 0x67, 0x69, 0x66, 0x51, - 0x3d, 0x3d, 0x22, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, 0x28, 0x52, 0x12, 0x63, 0x6f, 0x6e, - 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, - 0xd8, 0x02, 0x0a, 0x16, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x08, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, - 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, - 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, 0xe0, - 0x41, 0x02, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, + 0x81, 0x01, 0x0a, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x49, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x47, 0x35, 0x4a, 0x41, 0x56, 0x4a, + 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, 0x39, 0x54, 0x54, 0x33, 0x53, 0x4b, 0x56, 0x53, 0x37, 0x58, + 0x31, 0x4a, 0x22, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, + 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, + 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x16, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x5f, 0x69, 0x64, 0x22, 0xd3, 0x01, 0x0a, 0x16, 0x52, 0x65, 0x61, 0x64, 0x41, 0x73, 0x73, 0x65, + 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x81, + 0x01, 0x0a, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x49, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x47, 0x35, 0x4a, 0x41, 0x56, 0x4a, 0x34, + 0x31, 0x54, 0x34, 0x39, 0x45, 0x39, 0x54, 0x54, 0x33, 0x53, 0x4b, 0x56, 0x53, 0x37, 0x58, 0x31, + 0x4a, 0x22, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x5f, 0x69, 0x64, 0x12, 0x81, 0x01, 0x0a, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x49, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x47, - 0x35, 0x4a, 0x41, 0x56, 0x4a, 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, 0x39, 0x54, 0x54, 0x33, 0x53, - 0x4b, 0x56, 0x53, 0x37, 0x58, 0x31, 0x4a, 0x22, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, + 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, + 0x69, 0x64, 0x12, 0x35, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, + 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x61, + 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x9d, 0x03, 0x0a, 0x12, 0x52, 0x65, + 0x61, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x68, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, + 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, + 0x48, 0x45, 0x35, 0x58, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, - 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x12, 0x50, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, - 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, - 0x69, 0x6f, 0x6e, 0x42, 0x19, 0x92, 0x41, 0x09, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, - 0x40, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x07, 0x92, 0x01, 0x04, 0x08, 0x00, 0x10, 0x64, 0x52, 0x0a, - 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x19, 0x0a, 0x17, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x85, 0x02, 0x0a, 0x15, 0x52, 0x65, 0x61, 0x64, 0x41, 0x73, - 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x68, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, - 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, 0x48, - 0x45, 0x35, 0x58, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, - 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, - 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, - 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x12, 0x81, 0x01, 0x0a, 0x16, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x49, 0x92, 0x41, 0x1e, 0x4a, - 0x1c, 0x22, 0x30, 0x31, 0x47, 0x35, 0x4a, 0x41, 0x56, 0x4a, 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, - 0x39, 0x54, 0x54, 0x33, 0x53, 0x4b, 0x56, 0x53, 0x37, 0x58, 0x31, 0x4a, 0x22, 0xfa, 0x42, 0x25, - 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, - 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, - 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x22, 0xd3, 0x01, - 0x0a, 0x16, 0x52, 0x65, 0x61, 0x64, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x81, 0x01, 0x0a, 0x16, 0x61, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x49, 0x92, 0x41, 0x1e, 0x4a, 0x1c, - 0x22, 0x30, 0x31, 0x47, 0x35, 0x4a, 0x41, 0x56, 0x4a, 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, 0x39, - 0x54, 0x54, 0x33, 0x53, 0x4b, 0x56, 0x53, 0x37, 0x58, 0x31, 0x4a, 0x22, 0xfa, 0x42, 0x25, 0x72, - 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, - 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, - 0x32, 0x36, 0x7d, 0x24, 0x52, 0x16, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x12, 0x35, 0x0a, 0x0a, - 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x15, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, - 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x22, 0x9d, 0x03, 0x0a, 0x12, 0x52, 0x65, 0x61, 0x64, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x08, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, - 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, - 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, 0xe0, - 0x41, 0x02, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, - 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, - 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x5f, 0x69, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x1a, 0xfa, 0x42, 0x17, 0x72, 0x15, 0x32, 0x10, 0x5e, 0x5b, 0x5e, 0x3a, 0x23, - 0x5c, 0x73, 0x5d, 0x7b, 0x31, 0x2c, 0x32, 0x35, 0x34, 0x7d, 0x24, 0xd0, 0x01, 0x01, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x4b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x42, 0x10, 0x92, 0x41, 0x04, 0x4a, 0x02, 0x35, 0x30, 0xfa, 0x42, 0x06, - 0x1a, 0x04, 0x18, 0x64, 0x28, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, - 0x65, 0x12, 0x9f, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x6f, - 0x92, 0x41, 0x64, 0x4a, 0x62, 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, 0x49, 0x36, 0x49, 0x6b, - 0x78, 0x42, 0x56, 0x45, 0x56, 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, 0x30, 0x4e, 0x50, 0x54, 0x6b, - 0x5a, 0x4a, 0x52, 0x31, 0x39, 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, 0x48, 0x4e, 0x30, 0x62, 0x33, - 0x4a, 0x6c, 0x49, 0x69, 0x77, 0x69, 0x63, 0x32, 0x73, 0x69, 0x4f, 0x69, 0x49, 0x78, 0x65, 0x6d, - 0x31, 0x71, 0x62, 0x58, 0x46, 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, 0x45, 0x78, 0x54, 0x63, 0x55, - 0x6f, 0x79, 0x4e, 0x30, 0x31, 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, 0x68, 0x30, 0x63, 0x57, - 0x67, 0x69, 0x66, 0x51, 0x3d, 0x3d, 0x22, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, 0x28, 0x52, - 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x22, 0xb3, 0x02, 0x0a, 0x13, 0x52, 0x65, 0x61, 0x64, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x07, 0x63, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0xe8, - 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0xb7, 0x01, 0x92, 0x41, - 0xab, 0x01, 0x32, 0x45, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, - 0x62, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x69, 0x66, 0x20, - 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x20, 0x6e, 0x65, 0x77, - 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2e, 0x4a, 0x62, 0x22, 0x65, 0x79, 0x4a, 0x77, + 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xfa, 0x42, 0x17, 0x72, 0x15, 0x32, + 0x10, 0x5e, 0x5b, 0x5e, 0x3a, 0x23, 0x5c, 0x73, 0x5d, 0x7b, 0x31, 0x2c, 0x32, 0x35, 0x34, 0x7d, + 0x24, 0xd0, 0x01, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x4b, 0x0a, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x10, 0x92, 0x41, 0x04, 0x4a, + 0x02, 0x35, 0x30, 0xfa, 0x42, 0x06, 0x1a, 0x04, 0x18, 0x64, 0x28, 0x01, 0x52, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x9f, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, + 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x6f, 0x92, 0x41, 0x64, 0x4a, 0x62, 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, 0x49, 0x36, 0x49, 0x6b, 0x78, 0x42, 0x56, 0x45, 0x56, 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, 0x30, 0x4e, 0x50, 0x54, 0x6b, 0x5a, 0x4a, 0x52, 0x31, 0x39, 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, 0x48, 0x4e, 0x30, 0x62, 0x33, 0x4a, 0x6c, 0x49, 0x69, 0x77, 0x69, 0x63, 0x32, 0x73, 0x69, @@ -2416,714 +2490,351 @@ var file_openfga_v1_openfga_service_proto_rawDesc = []byte{ 0x5a, 0x45, 0x78, 0x54, 0x63, 0x55, 0x6f, 0x79, 0x4e, 0x30, 0x31, 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, 0x68, 0x30, 0x63, 0x57, 0x67, 0x69, 0x66, 0x51, 0x3d, 0x3d, 0x22, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, 0x28, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x67, 0x0a, 0x12, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x51, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x3d, 0x92, - 0x41, 0x11, 0x4a, 0x0f, 0x22, 0x6d, 0x79, 0x2d, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2d, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x23, 0x72, 0x21, 0x32, 0x1f, 0x5e, 0x5b, 0x61, - 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x73, 0x5c, 0x2e, 0x5c, 0x2d, 0x5c, 0x2f, - 0x5e, 0x5f, 0x26, 0x40, 0x5d, 0x7b, 0x33, 0x2c, 0x36, 0x34, 0x7d, 0x24, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0xd4, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, - 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xb3, 0x02, 0x0a, 0x13, 0x52, 0x65, + 0x61, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x31, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, + 0x54, 0x75, 0x70, 0x6c, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x07, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x73, 0x12, 0xe8, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0xb7, 0x01, 0x92, 0x41, 0xab, 0x01, 0x32, 0x45, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6f, + 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x63, + 0x61, 0x6c, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, + 0x6e, 0x6f, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2e, 0x4a, + 0x62, 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, 0x49, 0x36, 0x49, 0x6b, 0x78, 0x42, 0x56, 0x45, + 0x56, 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, 0x30, 0x4e, 0x50, 0x54, 0x6b, 0x5a, 0x4a, 0x52, 0x31, + 0x39, 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, 0x48, 0x4e, 0x30, 0x62, 0x33, 0x4a, 0x6c, 0x49, 0x69, + 0x77, 0x69, 0x63, 0x32, 0x73, 0x69, 0x4f, 0x69, 0x49, 0x78, 0x65, 0x6d, 0x31, 0x71, 0x62, 0x58, + 0x46, 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, 0x45, 0x78, 0x54, 0x63, 0x55, 0x6f, 0x79, 0x4e, 0x30, + 0x31, 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, 0x68, 0x30, 0x63, 0x57, 0x67, 0x69, 0x66, 0x51, + 0x3d, 0x3d, 0x22, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, 0x28, 0x52, 0x12, 0x63, 0x6f, 0x6e, + 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, + 0x67, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x51, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x3d, 0x92, 0x41, 0x11, 0x4a, 0x0f, 0x22, 0x6d, 0x79, 0x2d, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x23, 0x72, + 0x21, 0x32, 0x1f, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x73, + 0x5c, 0x2e, 0x5c, 0x2d, 0x5c, 0x2f, 0x5e, 0x5f, 0x26, 0x40, 0x5d, 0x7b, 0x33, 0x2c, 0x36, 0x34, + 0x7d, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd4, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x31, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0x92, 0x41, + 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, + 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x61, 0x74, 0x12, 0x3a, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, + 0xd5, 0x01, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, + 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, 0x51, + 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, + 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, + 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, + 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, + 0x12, 0x55, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x41, + 0x92, 0x41, 0x15, 0x4a, 0x13, 0x22, 0x6d, 0x79, 0x2d, 0x6e, 0x65, 0x77, 0x2d, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x2d, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x23, 0x72, 0x21, + 0x32, 0x1f, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x73, 0x5c, + 0x2e, 0x5c, 0x2d, 0x5c, 0x2f, 0x5e, 0x5f, 0x26, 0x40, 0x5d, 0x7b, 0x33, 0x2c, 0x36, 0x34, 0x7d, + 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xd4, 0x01, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x31, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0x92, 0x41, 0x1e, + 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, + 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x12, 0x3a, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x7e, + 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, - 0x4e, 0x4d, 0x42, 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x12, 0x3a, 0x0a, - 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0xd5, 0x01, 0x0a, 0x12, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x68, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, - 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, - 0x48, 0x45, 0x35, 0x58, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, - 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, - 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, - 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x12, 0x55, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x41, 0x92, 0x41, 0x15, 0x4a, 0x13, 0x22, - 0x6d, 0x79, 0x2d, 0x6e, 0x65, 0x77, 0x2d, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2d, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x23, 0x72, 0x21, 0x32, 0x1f, 0x5e, 0x5b, 0x61, 0x2d, - 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x73, 0x5c, 0x2e, 0x5c, 0x2d, 0x5c, 0x2f, 0x5e, - 0x5f, 0x26, 0x40, 0x5d, 0x7b, 0x33, 0x2c, 0x36, 0x34, 0x7d, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x22, 0xd4, 0x01, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, - 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, - 0x4d, 0x42, 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x12, 0x3a, 0x0a, 0x0a, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0x7e, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, - 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, - 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, 0x48, 0x45, - 0x35, 0x58, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, - 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, - 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x08, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x7b, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x68, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, - 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, - 0x42, 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, - 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, - 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, - 0x7d, 0x24, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x22, 0xd1, 0x01, 0x0a, - 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x31, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x21, 0x92, - 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, - 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x61, 0x74, 0x12, 0x3a, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, - 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x22, 0xfb, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, - 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, - 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x09, 0xfa, 0x42, 0x06, 0x1a, 0x04, 0x18, 0x64, 0x28, - 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x9f, 0x01, 0x0a, - 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x6f, 0x92, 0x41, 0x64, 0x4a, 0x62, - 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, 0x49, 0x36, 0x49, 0x6b, 0x78, 0x42, 0x56, 0x45, 0x56, - 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, 0x30, 0x4e, 0x50, 0x54, 0x6b, 0x5a, 0x4a, 0x52, 0x31, 0x39, - 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, 0x48, 0x4e, 0x30, 0x62, 0x33, 0x4a, 0x6c, 0x49, 0x69, 0x77, - 0x69, 0x63, 0x32, 0x73, 0x69, 0x4f, 0x69, 0x49, 0x78, 0x65, 0x6d, 0x31, 0x71, 0x62, 0x58, 0x46, - 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, 0x45, 0x78, 0x54, 0x63, 0x55, 0x6f, 0x79, 0x4e, 0x30, 0x31, - 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, 0x68, 0x30, 0x63, 0x57, 0x67, 0x69, 0x66, 0x51, 0x3d, - 0x3d, 0x22, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, 0x28, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, - 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa6, - 0x02, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x06, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, - 0x12, 0xe4, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0xb3, 0x01, - 0x92, 0x41, 0xa7, 0x01, 0x32, 0x41, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, - 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x77, 0x69, 0x6c, - 0x6c, 0x20, 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, - 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2e, 0x4a, 0x62, 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, - 0x49, 0x36, 0x49, 0x6b, 0x78, 0x42, 0x56, 0x45, 0x56, 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, 0x30, - 0x4e, 0x50, 0x54, 0x6b, 0x5a, 0x4a, 0x52, 0x31, 0x39, 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, 0x48, - 0x4e, 0x30, 0x62, 0x33, 0x4a, 0x6c, 0x49, 0x69, 0x77, 0x69, 0x63, 0x32, 0x73, 0x69, 0x4f, 0x69, - 0x49, 0x78, 0x65, 0x6d, 0x31, 0x71, 0x62, 0x58, 0x46, 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, 0x45, - 0x78, 0x54, 0x63, 0x55, 0x6f, 0x79, 0x4e, 0x30, 0x31, 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, - 0x68, 0x30, 0x63, 0x57, 0x67, 0x69, 0x66, 0x51, 0x3d, 0x3d, 0x22, 0xfa, 0x42, 0x05, 0x72, 0x03, - 0x28, 0x80, 0x28, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x32, 0x9f, 0x8c, 0x01, 0x0a, 0x0e, 0x4f, 0x70, 0x65, - 0x6e, 0x46, 0x47, 0x41, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xca, 0x1c, 0x0a, 0x04, - 0x52, 0x65, 0x61, 0x64, 0x12, 0x17, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x1c, 0x92, 0x41, 0xe8, 0x1b, 0x0a, 0x13, - 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x54, 0x75, 0x70, - 0x6c, 0x65, 0x73, 0x12, 0x57, 0x47, 0x65, 0x74, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, - 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x20, 0x74, - 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x61, 0x20, 0x71, 0x75, - 0x65, 0x72, 0x79, 0x2c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x66, 0x6f, 0x6c, - 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x65, 0x74, 0x20, 0x72, - 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x1a, 0xf1, 0x1a, 0x54, - 0x68, 0x65, 0x20, 0x52, 0x65, 0x61, 0x64, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6c, - 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, - 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x20, 0x61, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, - 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x20, 0x49, 0x74, 0x20, 0x69, 0x73, 0x20, 0x64, 0x69, 0x66, - 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x60, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x60, 0x20, 0x41, 0x50, 0x49, 0x20, - 0x69, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x74, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x68, 0x69, 0x70, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, - 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x61, - 0x74, 0x69, 0x73, 0x66, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, - 0x20, 0x0a, 0x49, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6f, 0x64, 0x79, 0x3a, 0x0a, 0x31, - 0x2e, 0x20, 0x60, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x60, 0x20, 0x69, 0x73, - 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x6e, 0x6f, - 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2c, 0x20, 0x69, 0x74, 0x20, - 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x6c, 0x6c, 0x20, - 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x2e, 0x0a, 0x32, 0x2e, 0x20, 0x60, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, - 0x65, 0x79, 0x2e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6d, 0x61, - 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x20, 0x69, 0x66, 0x20, 0x60, 0x74, 0x75, 0x70, 0x6c, - 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x60, 0x20, 0x69, 0x73, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, - 0x69, 0x65, 0x64, 0x2e, 0x20, 0x49, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x61, - 0x20, 0x66, 0x75, 0x6c, 0x6c, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x28, 0x65, 0x2e, - 0x67, 0x2e, 0x2c, 0x20, 0x60, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x5f, 0x69, 0x64, 0x60, 0x29, 0x20, 0x6f, 0x72, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6f, 0x6e, - 0x6c, 0x79, 0x20, 0x28, 0x65, 0x2e, 0x67, 0x2e, 0x2c, 0x20, 0x60, 0x74, 0x79, 0x70, 0x65, 0x3a, - 0x60, 0x29, 0x2e, 0x0a, 0x33, 0x2e, 0x20, 0x60, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, - 0x79, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6d, 0x61, 0x6e, 0x64, 0x61, - 0x74, 0x6f, 0x72, 0x79, 0x20, 0x69, 0x66, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, - 0x79, 0x20, 0x69, 0x73, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, - 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, - 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x2e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, - 0x2e, 0x0a, 0x23, 0x23, 0x20, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x73, 0x0a, 0x23, 0x23, - 0x23, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x74, 0x79, 0x70, - 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x54, 0x6f, 0x20, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x60, 0x75, 0x73, 0x65, 0x72, - 0x3a, 0x62, 0x6f, 0x62, 0x60, 0x20, 0x68, 0x61, 0x73, 0x20, 0x60, 0x72, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x60, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, - 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, - 0x60, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x2c, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x41, 0x50, 0x49, - 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x6f, 0x66, 0x0a, 0x60, 0x60, - 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x22, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, - 0x6b, 0x65, 0x79, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, - 0x65, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x62, 0x6f, 0x62, 0x22, 0x2c, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x3a, 0x20, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x64, 0x6f, 0x63, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x22, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, - 0x0a, 0x54, 0x68, 0x65, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, - 0x61, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x2c, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, - 0x6c, 0x69, 0x6b, 0x65, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, - 0x20, 0x22, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6b, 0x65, 0x79, 0x22, 0x3a, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, - 0x3a, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x62, 0x6f, 0x62, 0x22, 0x2c, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x3a, 0x20, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x64, - 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, - 0x67, 0x65, 0x74, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x3a, - 0x20, 0x22, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x31, 0x30, 0x2d, 0x30, 0x36, 0x54, 0x31, 0x35, 0x3a, - 0x33, 0x32, 0x3a, 0x31, 0x31, 0x2e, 0x31, 0x32, 0x38, 0x5a, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x7d, 0x0a, 0x20, 0x20, 0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, - 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3a, 0x20, 0x22, + 0x4e, 0x4d, 0x42, 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, 0xe0, 0x41, 0x02, 0xfa, 0x42, 0x25, 0x72, + 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x4a, 0x4b, 0x4d, + 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x7b, + 0x32, 0x36, 0x7d, 0x24, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x22, 0x15, + 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x7b, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x68, 0x0a, 0x08, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x4c, 0x92, 0x41, 0x1e, 0x4a, + 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, + 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, 0xe0, 0x41, 0x02, + 0xfa, 0x42, 0x25, 0x72, 0x23, 0x32, 0x21, 0x5e, 0x5b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x4a, 0x4b, 0x4d, 0x4e, 0x50, 0x51, 0x52, 0x53, 0x54, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, + 0x2d, 0x39, 0x5d, 0x7b, 0x32, 0x36, 0x7d, 0x24, 0x52, 0x08, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, + 0x69, 0x64, 0x22, 0xd1, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x31, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x21, 0x92, 0x41, 0x1e, 0x4a, 0x1c, 0x22, 0x30, 0x31, 0x59, 0x43, 0x50, + 0x34, 0x36, 0x4a, 0x4b, 0x59, 0x4d, 0x38, 0x46, 0x4a, 0x43, 0x51, 0x33, 0x37, 0x4e, 0x4d, 0x42, + 0x59, 0x48, 0x45, 0x35, 0x58, 0x22, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a, + 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x12, 0x3a, 0x0a, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0xfb, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x44, 0x0a, 0x09, + 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x09, 0xfa, 0x42, + 0x06, 0x1a, 0x04, 0x18, 0x64, 0x28, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x12, 0x9f, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x6f, 0x92, 0x41, 0x64, 0x4a, 0x62, 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, 0x49, 0x36, 0x49, + 0x6b, 0x78, 0x42, 0x56, 0x45, 0x56, 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, 0x30, 0x4e, 0x50, 0x54, + 0x6b, 0x5a, 0x4a, 0x52, 0x31, 0x39, 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, 0x48, 0x4e, 0x30, 0x62, + 0x33, 0x4a, 0x6c, 0x49, 0x69, 0x77, 0x69, 0x63, 0x32, 0x73, 0x69, 0x4f, 0x69, 0x49, 0x78, 0x65, + 0x6d, 0x31, 0x71, 0x62, 0x58, 0x46, 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, 0x45, 0x78, 0x54, 0x63, + 0x55, 0x6f, 0x79, 0x4e, 0x30, 0x31, 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, 0x68, 0x30, 0x63, + 0x57, 0x67, 0x69, 0x66, 0x51, 0x3d, 0x3d, 0x22, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, 0x28, + 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa6, 0x02, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, + 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x06, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0xe4, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, + 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0xb3, 0x01, 0x92, 0x41, 0xa7, 0x01, 0x32, 0x41, 0x54, 0x68, 0x65, 0x20, + 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, + 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, + 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2e, 0x4a, 0x62, 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, 0x49, 0x36, 0x49, 0x6b, 0x78, 0x42, 0x56, 0x45, 0x56, 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, 0x30, 0x4e, 0x50, 0x54, 0x6b, 0x5a, 0x4a, 0x52, 0x31, 0x39, 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, 0x48, 0x4e, 0x30, 0x62, 0x33, 0x4a, 0x6c, 0x49, 0x69, 0x77, 0x69, 0x63, 0x32, 0x73, 0x69, 0x4f, 0x69, 0x49, 0x78, 0x65, 0x6d, 0x31, 0x71, 0x62, 0x58, 0x46, 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, 0x45, 0x78, 0x54, 0x63, 0x55, 0x6f, 0x79, 0x4e, 0x30, 0x31, 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, 0x68, 0x30, 0x63, 0x57, 0x67, 0x69, 0x66, 0x51, 0x3d, 0x3d, - 0x22, 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6d, 0x65, 0x61, - 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x60, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x62, 0x6f, - 0x62, 0x60, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x20, 0x60, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x60, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x77, - 0x69, 0x74, 0x68, 0x20, 0x31, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x60, - 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, - 0x64, 0x67, 0x65, 0x74, 0x60, 0x2e, 0x20, 0x4e, 0x6f, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, - 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x41, 0x50, 0x49, 0x2c, 0x20, 0x75, 0x6e, 0x6c, 0x69, 0x6b, - 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x20, 0x41, 0x50, 0x49, 0x2c, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, - 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x75, - 0x70, 0x6c, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, - 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, - 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x75, 0x70, - 0x6c, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x23, 0x23, 0x23, - 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, - 0x69, 0x70, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, - 0x61, 0x76, 0x65, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, - 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x0a, 0x54, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, - 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x60, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x60, 0x20, 0x72, - 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x77, 0x69, 0x74, 0x68, - 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, - 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x60, 0x2c, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x72, 0x65, + 0x22, 0xfa, 0x42, 0x05, 0x72, 0x03, 0x28, 0x80, 0x28, 0x52, 0x12, 0x63, 0x6f, 0x6e, 0x74, 0x69, + 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x32, 0x9f, 0x8c, + 0x01, 0x0a, 0x0e, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x47, 0x41, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0xca, 0x1c, 0x0a, 0x04, 0x52, 0x65, 0x61, 0x64, 0x12, 0x17, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8e, 0x1c, + 0x92, 0x41, 0xe8, 0x1b, 0x0a, 0x13, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, + 0x69, 0x70, 0x20, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x57, 0x47, 0x65, 0x74, 0x20, 0x74, + 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x73, 0x20, 0x61, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, + 0x75, 0x74, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x73, 0x65, + 0x72, 0x73, 0x65, 0x74, 0x20, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x72, 0x75, 0x6c, + 0x65, 0x73, 0x1a, 0xf1, 0x1a, 0x54, 0x68, 0x65, 0x20, 0x52, 0x65, 0x61, 0x64, 0x20, 0x41, 0x50, + 0x49, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x63, + 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x61, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x20, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x6f, 0x66, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x20, 0x49, 0x74, 0x20, + 0x69, 0x73, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x66, 0x72, 0x6f, + 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, + 0x60, 0x20, 0x41, 0x50, 0x49, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x74, + 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, + 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, + 0x61, 0x6e, 0x64, 0x20, 0x73, 0x61, 0x74, 0x69, 0x73, 0x66, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x20, 0x0a, 0x49, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, + 0x6f, 0x64, 0x79, 0x3a, 0x0a, 0x31, 0x2e, 0x20, 0x60, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, + 0x65, 0x79, 0x60, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x2e, + 0x20, 0x49, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, + 0x64, 0x2c, 0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x0a, 0x32, 0x2e, 0x20, 0x60, 0x74, + 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x2e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x60, + 0x20, 0x69, 0x73, 0x20, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x20, 0x69, 0x66, + 0x20, 0x60, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x60, 0x20, 0x69, 0x73, 0x20, + 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2e, 0x20, 0x49, 0x74, 0x20, 0x63, 0x61, + 0x6e, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x66, 0x75, 0x6c, 0x6c, 0x20, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x20, 0x28, 0x65, 0x2e, 0x67, 0x2e, 0x2c, 0x20, 0x60, 0x74, 0x79, 0x70, 0x65, 0x3a, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x60, 0x29, 0x20, 0x6f, 0x72, 0x20, 0x74, + 0x79, 0x70, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x28, 0x65, 0x2e, 0x67, 0x2e, 0x2c, 0x20, + 0x60, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x60, 0x29, 0x2e, 0x0a, 0x33, 0x2e, 0x20, 0x60, 0x74, 0x75, + 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x2e, 0x75, 0x73, 0x65, 0x72, 0x60, 0x20, 0x69, 0x73, + 0x20, 0x6d, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x20, 0x69, 0x66, 0x20, 0x74, 0x75, + 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x20, 0x69, 0x73, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x61, 0x73, 0x65, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x2e, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x60, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x79, 0x70, + 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x2e, 0x0a, 0x23, 0x23, 0x20, 0x45, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x73, 0x0a, 0x23, 0x23, 0x23, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x69, 0x6e, + 0x20, 0x61, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, + 0x6f, 0x6e, 0x0a, 0x54, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, + 0x20, 0x60, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x62, 0x6f, 0x62, 0x60, 0x20, 0x68, 0x61, 0x73, 0x20, + 0x60, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x60, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x64, 0x6f, + 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x60, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x65, 0x66, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x62, 0x6f, 0x64, 0x79, - 0x20, 0x6f, 0x66, 0x20, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, - 0x20, 0x22, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0x3a, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, - 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, - 0x64, 0x67, 0x65, 0x74, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, + 0x20, 0x6f, 0x66, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x22, + 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, + 0x3a, 0x62, 0x6f, 0x62, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, - 0x0a, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x54, 0x68, 0x65, 0x20, - 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, - 0x73, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x0a, - 0x60, 0x60, 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x22, 0x74, 0x75, 0x70, - 0x6c, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x22, 0x6b, 0x65, 0x79, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x75, 0x73, - 0x65, 0x72, 0x3a, 0x62, 0x6f, 0x62, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x22, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x3a, 0x20, 0x22, 0x32, 0x30, 0x32, - 0x31, 0x2d, 0x31, 0x30, 0x2d, 0x30, 0x36, 0x54, 0x31, 0x35, 0x3a, 0x33, 0x32, 0x3a, 0x31, 0x31, - 0x2e, 0x31, 0x32, 0x38, 0x5a, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x5d, - 0x2c, 0x0a, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, - 0x79, 0x49, 0x36, 0x49, 0x6b, 0x78, 0x42, 0x56, 0x45, 0x56, 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, - 0x30, 0x4e, 0x50, 0x54, 0x6b, 0x5a, 0x4a, 0x52, 0x31, 0x39, 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, - 0x48, 0x4e, 0x30, 0x62, 0x33, 0x4a, 0x6c, 0x49, 0x69, 0x77, 0x69, 0x63, 0x32, 0x73, 0x69, 0x4f, - 0x69, 0x49, 0x78, 0x65, 0x6d, 0x31, 0x71, 0x62, 0x58, 0x46, 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, - 0x45, 0x78, 0x54, 0x63, 0x55, 0x6f, 0x79, 0x4e, 0x30, 0x31, 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, - 0x6a, 0x68, 0x30, 0x63, 0x57, 0x67, 0x69, 0x66, 0x51, 0x3d, 0x3d, 0x22, 0x0a, 0x7d, 0x0a, 0x60, - 0x60, 0x60, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x74, 0x68, - 0x61, 0x74, 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, - 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x60, 0x20, 0x68, 0x61, 0x73, 0x20, 0x31, 0x20, - 0x60, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x60, 0x20, 0x28, 0x60, 0x75, 0x73, 0x65, 0x72, 0x3a, - 0x62, 0x6f, 0x62, 0x60, 0x29, 0x2e, 0x20, 0x20, 0x4e, 0x6f, 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, - 0x74, 0x2c, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x73, 0x61, 0x69, 0x64, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, - 0x6c, 0x6c, 0x20, 0x60, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x73, 0x60, 0x20, 0x61, 0x72, 0x65, - 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x60, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x60, 0x2c, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x6e, 0x6f, - 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x73, - 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 0x60, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x61, - 0x6e, 0x6e, 0x65, 0x60, 0x20, 0x62, 0x65, 0x63, 0x61, 0x75, 0x73, 0x65, 0x20, 0x69, 0x74, 0x20, - 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x74, 0x75, 0x70, - 0x6c, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, - 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x2e, 0x0a, - 0x23, 0x23, 0x23, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, - 0x6c, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x6c, 0x6c, - 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, - 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x0a, 0x54, 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x20, - 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, - 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, - 0x75, 0x64, 0x67, 0x65, 0x74, 0x60, 0x2c, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x61, - 0x64, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x62, 0x6f, 0x64, 0x79, 0x20, - 0x6f, 0x66, 0x20, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, - 0x22, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, - 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, - 0x64, 0x67, 0x65, 0x74, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, - 0x0a, 0x54, 0x68, 0x65, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x6c, - 0x69, 0x6b, 0x65, 0x20, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, - 0x20, 0x22, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6b, 0x65, 0x79, 0x22, 0x3a, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, - 0x3a, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x61, 0x6e, 0x6e, 0x65, 0x22, 0x2c, 0x0a, 0x20, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, + 0x20, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x22, 0x0a, 0x20, 0x20, 0x7d, + 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, + 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, + 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2c, 0x20, 0x73, 0x6f, 0x6d, 0x65, + 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, + 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x22, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x22, 0x3a, + 0x20, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, + 0x6b, 0x65, 0x79, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x62, 0x6f, + 0x62, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x22, 0x3a, 0x20, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, + 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x22, 0x3a, 0x20, 0x22, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x31, 0x30, 0x2d, + 0x30, 0x36, 0x54, 0x31, 0x35, 0x3a, 0x33, 0x32, 0x3a, 0x31, 0x31, 0x2e, 0x31, 0x32, 0x38, 0x5a, + 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x22, + 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, 0x49, 0x36, 0x49, 0x6b, + 0x78, 0x42, 0x56, 0x45, 0x56, 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, 0x30, 0x4e, 0x50, 0x54, 0x6b, + 0x5a, 0x4a, 0x52, 0x31, 0x39, 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, 0x48, 0x4e, 0x30, 0x62, 0x33, + 0x4a, 0x6c, 0x49, 0x69, 0x77, 0x69, 0x63, 0x32, 0x73, 0x69, 0x4f, 0x69, 0x49, 0x78, 0x65, 0x6d, + 0x31, 0x71, 0x62, 0x58, 0x46, 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, 0x45, 0x78, 0x54, 0x63, 0x55, + 0x6f, 0x79, 0x4e, 0x30, 0x31, 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, 0x68, 0x30, 0x63, 0x57, + 0x67, 0x69, 0x66, 0x51, 0x3d, 0x3d, 0x22, 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x54, 0x68, + 0x69, 0x73, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x60, 0x75, + 0x73, 0x65, 0x72, 0x3a, 0x62, 0x6f, 0x62, 0x60, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x20, 0x60, + 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x60, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x68, 0x69, 0x70, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x31, 0x20, 0x64, 0x6f, 0x63, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, + 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x60, 0x2e, 0x20, 0x4e, 0x6f, 0x74, + 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x41, 0x50, 0x49, 0x2c, + 0x20, 0x75, 0x6e, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, 0x69, 0x73, 0x74, + 0x20, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x41, 0x50, 0x49, 0x2c, 0x20, 0x64, 0x6f, + 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, + 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, + 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x69, 0x66, + 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, + 0x72, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x71, 0x75, 0x65, + 0x72, 0x79, 0x2e, 0x23, 0x23, 0x23, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, + 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x74, + 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x61, 0x6e, 0x64, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x0a, 0x54, 0x6f, 0x20, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x60, 0x72, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x60, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, + 0x70, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x60, 0x2c, 0x20, 0x63, + 0x61, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x74, + 0x68, 0x20, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, + 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x22, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, + 0x79, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, + 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x72, + 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x60, 0x60, + 0x60, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, + 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, + 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, + 0x20, 0x20, 0x22, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6b, 0x65, 0x79, 0x22, 0x3a, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, + 0x22, 0x3a, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x62, 0x6f, 0x62, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x3a, 0x20, 0x22, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, + 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, - 0x3a, 0x20, 0x22, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x31, 0x30, 0x2d, 0x30, 0x35, 0x54, 0x31, 0x33, - 0x3a, 0x34, 0x32, 0x3a, 0x31, 0x32, 0x2e, 0x33, 0x35, 0x36, 0x5a, 0x22, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x22, 0x6b, 0x65, 0x79, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x62, - 0x6f, 0x62, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, + 0x3a, 0x20, 0x22, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x31, 0x30, 0x2d, 0x30, 0x36, 0x54, 0x31, 0x35, + 0x3a, 0x33, 0x32, 0x3a, 0x31, 0x31, 0x2e, 0x31, 0x32, 0x38, 0x5a, 0x22, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x69, + 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3a, 0x20, + 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, 0x49, 0x36, 0x49, 0x6b, 0x78, 0x42, 0x56, 0x45, 0x56, + 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, 0x30, 0x4e, 0x50, 0x54, 0x6b, 0x5a, 0x4a, 0x52, 0x31, 0x39, + 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, 0x48, 0x4e, 0x30, 0x62, 0x33, 0x4a, 0x6c, 0x49, 0x69, 0x77, + 0x69, 0x63, 0x32, 0x73, 0x69, 0x4f, 0x69, 0x49, 0x78, 0x65, 0x6d, 0x31, 0x71, 0x62, 0x58, 0x46, + 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, 0x45, 0x78, 0x54, 0x63, 0x55, 0x6f, 0x79, 0x4e, 0x30, 0x31, + 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, 0x68, 0x30, 0x63, 0x57, 0x67, 0x69, 0x66, 0x51, 0x3d, + 0x3d, 0x22, 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6d, 0x65, + 0x61, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x60, 0x20, + 0x68, 0x61, 0x73, 0x20, 0x31, 0x20, 0x60, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x60, 0x20, 0x28, + 0x60, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x62, 0x6f, 0x62, 0x60, 0x29, 0x2e, 0x20, 0x20, 0x4e, 0x6f, + 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x2c, 0x20, 0x65, 0x76, 0x65, 0x6e, 0x20, 0x69, 0x66, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x73, 0x61, 0x69, 0x64, 0x20, + 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x60, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, + 0x73, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x60, 0x72, 0x65, 0x61, + 0x64, 0x65, 0x72, 0x73, 0x60, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, + 0x69, 0x6c, 0x6c, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x72, 0x73, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x20, 0x60, + 0x75, 0x73, 0x65, 0x72, 0x3a, 0x61, 0x6e, 0x6e, 0x65, 0x60, 0x20, 0x62, 0x65, 0x63, 0x61, 0x75, + 0x73, 0x65, 0x20, 0x69, 0x74, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x73, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x6f, + 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x76, 0x61, 0x6c, 0x75, 0x61, 0x74, 0x65, 0x20, + 0x74, 0x68, 0x65, 0x6d, 0x2e, 0x0a, 0x23, 0x23, 0x23, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x20, 0x77, 0x69, + 0x74, 0x68, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x68, 0x69, 0x70, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, + 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x0a, 0x54, + 0x6f, 0x20, 0x71, 0x75, 0x65, 0x72, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20, + 0x75, 0x73, 0x65, 0x72, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, + 0x61, 0x6e, 0x79, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, + 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, + 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x60, 0x2c, 0x20, 0x63, 0x61, + 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x20, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, 0x6f, + 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x22, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, + 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, + 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x7d, + 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, + 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x74, + 0x68, 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, + 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x22, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x22, 0x3a, + 0x20, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, + 0x6b, 0x65, 0x79, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x61, 0x6e, + 0x6e, 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x3a, 0x20, 0x22, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x31, 0x30, - 0x2d, 0x30, 0x36, 0x54, 0x31, 0x35, 0x3a, 0x33, 0x32, 0x3a, 0x31, 0x31, 0x2e, 0x31, 0x32, 0x38, - 0x5a, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x5d, 0x2c, 0x0a, 0x20, 0x20, - 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, 0x49, 0x36, 0x49, - 0x6b, 0x78, 0x42, 0x56, 0x45, 0x56, 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, 0x30, 0x4e, 0x50, 0x54, - 0x6b, 0x5a, 0x4a, 0x52, 0x31, 0x39, 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, 0x48, 0x4e, 0x30, 0x62, - 0x33, 0x4a, 0x6c, 0x49, 0x69, 0x77, 0x69, 0x63, 0x32, 0x73, 0x69, 0x4f, 0x69, 0x49, 0x78, 0x65, - 0x6d, 0x31, 0x71, 0x62, 0x58, 0x46, 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, 0x45, 0x78, 0x54, 0x63, - 0x55, 0x6f, 0x79, 0x4e, 0x30, 0x31, 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, 0x68, 0x30, 0x63, - 0x57, 0x67, 0x69, 0x66, 0x51, 0x3d, 0x3d, 0x22, 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x54, - 0x68, 0x69, 0x73, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x60, - 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, - 0x64, 0x67, 0x65, 0x74, 0x60, 0x20, 0x68, 0x61, 0x73, 0x20, 0x31, 0x20, 0x60, 0x72, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x60, 0x20, 0x28, 0x60, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x62, 0x6f, 0x62, 0x60, - 0x29, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x31, 0x20, 0x60, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x60, - 0x20, 0x28, 0x60, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x61, 0x6e, 0x6e, 0x65, 0x60, 0x29, 0x2e, 0x0a, - 0x2a, 0x04, 0x52, 0x65, 0x61, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, - 0x17, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x61, 0x64, 0x12, 0xbe, 0x0b, 0x0a, 0x05, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x12, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, - 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xff, 0x0a, 0x92, 0x41, 0xd8, 0x0a, 0x0a, 0x13, - 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x54, 0x75, 0x70, - 0x6c, 0x65, 0x73, 0x12, 0x23, 0x41, 0x64, 0x64, 0x20, 0x6f, 0x72, 0x20, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x94, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x2e, 0x20, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x20, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x47, 0x41, 0x20, 0x74, - 0x6f, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x20, 0x77, 0x68, 0x65, 0x74, - 0x68, 0x65, 0x72, 0x20, 0x61, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, - 0x69, 0x70, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, - 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, - 0x61, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x0a, 0x49, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x62, 0x6f, 0x64, 0x79, 0x2c, 0x20, 0x60, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x60, 0x20, 0x61, - 0x64, 0x64, 0x73, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x77, - 0x68, 0x69, 0x6c, 0x65, 0x20, 0x60, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x60, 0x20, 0x72, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x73, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, - 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x41, 0x50, 0x49, 0x20, - 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, 0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, - 0x74, 0x3a, 0x20, 0x69, 0x66, 0x2c, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x72, 0x20, 0x6f, 0x6e, 0x2c, - 0x20, 0x79, 0x6f, 0x75, 0x20, 0x74, 0x72, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x64, 0x64, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x2c, 0x20, - 0x6f, 0x72, 0x20, 0x69, 0x66, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x74, 0x72, 0x79, 0x20, 0x74, 0x6f, - 0x20, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x65, 0x78, - 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x2c, 0x20, 0x69, 0x74, - 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x72, 0x6f, 0x77, 0x20, 0x61, 0x6e, 0x20, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x0a, 0x41, 0x6e, 0x20, 0x60, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, - 0x60, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6f, 0x64, 0x79, 0x2e, 0x20, - 0x49, 0x66, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x2c, 0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 0x6c, - 0x6c, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x73, 0x73, - 0x65, 0x72, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x77, 0x72, - 0x69, 0x74, 0x74, 0x65, 0x6e, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x28, 0x6e, 0x6f, 0x74, - 0x20, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x29, 0x20, 0x69, 0x73, 0x20, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x69, - 0x74, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x20, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x20, 0x49, 0x44, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, - 0x65, 0x64, 0x2e, 0x0a, 0x23, 0x23, 0x20, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x0a, 0x23, - 0x23, 0x23, 0x20, 0x41, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x0a, 0x54, 0x6f, 0x20, 0x61, 0x64, 0x64, 0x20, 0x60, - 0x75, 0x73, 0x65, 0x72, 0x3a, 0x61, 0x6e, 0x6e, 0x65, 0x60, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, - 0x60, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x60, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x60, 0x64, 0x6f, - 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, - 0x65, 0x74, 0x60, 0x2c, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, - 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c, - 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, - 0x7b, 0x0a, 0x20, 0x20, 0x22, 0x77, 0x72, 0x69, 0x74, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x22, - 0x3a, 0x20, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x75, 0x73, 0x65, - 0x72, 0x3a, 0x61, 0x6e, 0x6e, 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x77, 0x72, - 0x69, 0x74, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, - 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, - 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x22, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x0a, 0x20, 0x20, - 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x22, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x22, 0x3a, 0x20, 0x22, - 0x30, 0x31, 0x47, 0x35, 0x30, 0x51, 0x56, 0x56, 0x31, 0x37, 0x50, 0x45, 0x43, 0x4e, 0x56, 0x41, - 0x48, 0x58, 0x31, 0x47, 0x47, 0x34, 0x59, 0x35, 0x4e, 0x43, 0x22, 0x0a, 0x7d, 0x0a, 0x60, 0x60, - 0x60, 0x0a, 0x23, 0x23, 0x23, 0x20, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x69, 0x6e, 0x67, 0x20, 0x72, - 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x0a, 0x54, 0x6f, 0x20, - 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x20, 0x60, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x62, 0x6f, 0x62, - 0x60, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x60, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x60, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, - 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x60, 0x2c, 0x20, 0x63, 0x61, 0x6c, 0x6c, - 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x0a, 0x60, - 0x60, 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x22, 0x64, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x75, 0x70, - 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, - 0x72, 0x22, 0x3a, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x62, 0x6f, 0x62, 0x22, 0x2c, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x20, - 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, - 0x75, 0x64, 0x67, 0x65, 0x74, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x5d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x2a, - 0x05, 0x57, 0x72, 0x69, 0x74, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x22, - 0x18, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, 0xfc, 0x0c, 0x0a, 0x05, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x12, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbd, 0x0c, 0x92, 0x41, 0x96, 0x0c, 0x0a, - 0x14, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x51, 0x75, - 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x36, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x77, 0x68, 0x65, - 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x1a, 0xbe, 0x0b, - 0x54, 0x68, 0x65, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x41, 0x50, 0x49, 0x20, 0x71, 0x75, - 0x65, 0x72, 0x69, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x69, - 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, - 0x20, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x6e, 0x20, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, - 0x6e, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x0a, 0x41, 0x20, 0x60, 0x63, 0x6f, 0x6e, 0x74, - 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x60, 0x20, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x62, - 0x65, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x6f, 0x6e, 0x65, 0x20, - 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x60, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, - 0x73, 0x60, 0x2c, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6e, 0x20, - 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x6b, - 0x65, 0x79, 0x73, 0x2e, 0x0a, 0x59, 0x6f, 0x75, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x61, 0x6c, 0x73, - 0x6f, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x60, 0x61, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, - 0x6c, 0x5f, 0x69, 0x64, 0x60, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6f, 0x64, - 0x79, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, - 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x20, 0x74, - 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x60, 0x74, - 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x60, 0x20, 0x69, 0x73, 0x20, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x6e, - 0x6f, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2c, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x62, 0x65, 0x20, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x61, 0x67, 0x61, 0x69, 0x6e, 0x73, 0x74, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x20, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x49, 0x44, 0x2e, 0x20, 0x49, 0x74, 0x20, 0x69, 0x73, 0x20, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, - 0x6c, 0x79, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x74, - 0x6f, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x79, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x69, 0x64, - 0x20, 0x66, 0x6f, 0x72, 0x20, 0x62, 0x65, 0x74, 0x74, 0x65, 0x72, 0x20, 0x70, 0x65, 0x72, 0x66, - 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, - 0x6e, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, - 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x60, - 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x60, 0x2e, 0x0a, 0x0a, 0x23, 0x23, 0x20, 0x45, 0x78, - 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x0a, 0x49, 0x6e, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x20, 0x74, - 0x6f, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x69, 0x66, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, - 0x60, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x61, 0x6e, 0x6e, 0x65, 0x60, 0x20, 0x6f, 0x66, 0x20, 0x74, - 0x79, 0x70, 0x65, 0x20, 0x60, 0x75, 0x73, 0x65, 0x72, 0x60, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, - 0x20, 0x60, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x60, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, - 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x60, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x0a, 0x60, - 0x60, 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, - 0x22, 0x3a, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x61, 0x6e, 0x6e, 0x65, 0x22, 0x2c, 0x0a, - 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x22, 0x3a, 0x20, 0x22, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x3a, 0x6f, - 0x66, 0x66, 0x69, 0x63, 0x65, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x73, 0x22, 0x0a, 0x7d, 0x0a, 0x60, - 0x60, 0x60, 0x0a, 0x74, 0x68, 0x65, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x41, 0x50, 0x49, - 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, - 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x62, 0x6f, 0x64, 0x79, 0x3a, 0x0a, 0x60, 0x60, - 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x22, 0x74, 0x75, 0x70, 0x6c, 0x65, - 0x5f, 0x6b, 0x65, 0x79, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, - 0x65, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x61, 0x6e, 0x6e, 0x65, 0x22, - 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x3a, 0x20, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, - 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x22, - 0x0a, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, - 0x75, 0x61, 0x6c, 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x22, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x3a, - 0x20, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, - 0x3a, 0x61, 0x6e, 0x6e, 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x6d, 0x65, 0x6d, - 0x62, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x6c, - 0x6f, 0x74, 0x3a, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x65, 0x5f, 0x68, 0x6f, 0x75, 0x72, 0x73, 0x22, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x0a, 0x20, - 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x22, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x22, 0x3a, 0x20, - 0x22, 0x30, 0x31, 0x47, 0x35, 0x30, 0x51, 0x56, 0x56, 0x31, 0x37, 0x50, 0x45, 0x43, 0x4e, 0x56, - 0x41, 0x48, 0x58, 0x31, 0x47, 0x47, 0x34, 0x59, 0x35, 0x4e, 0x43, 0x22, 0x0a, 0x7d, 0x0a, 0x60, - 0x60, 0x60, 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x47, 0x41, 0x27, 0x73, 0x20, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, - 0x64, 0x65, 0x20, 0x60, 0x7b, 0x20, 0x22, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x22, 0x3a, - 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x7d, 0x60, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, - 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x68, 0x69, 0x70, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x60, 0x7b, 0x20, 0x22, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x65, 0x64, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x20, 0x7d, 0x60, 0x20, 0x69, - 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x6e, 0x27, 0x74, 0x2e, 0x2a, 0x05, - 0x43, 0x68, 0x65, 0x63, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x22, 0x18, - 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x12, 0xb9, 0x0e, 0x0a, 0x06, 0x45, 0x78, 0x70, - 0x61, 0x6e, 0x64, 0x12, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, - 0x2e, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x61, - 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xf7, 0x0d, 0x92, 0x41, 0xcf, - 0x0d, 0x0a, 0x14, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, - 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x8e, 0x01, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, - 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, - 0x70, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x65, 0x74, 0x20, 0x74, 0x72, - 0x65, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, - 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x65, 0x74, - 0x20, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x20, - 0x20, 0x55, 0x73, 0x65, 0x66, 0x75, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x65, 0x62, 0x75, - 0x67, 0x20, 0x61, 0x20, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x1a, 0x9d, 0x0c, 0x54, 0x68, 0x65, 0x20, 0x45, - 0x78, 0x70, 0x61, 0x6e, 0x64, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x20, - 0x61, 0x6e, 0x64, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, - 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x72, - 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x77, 0x69, 0x74, 0x68, - 0x20, 0x61, 0x6e, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, - 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x0a, 0x54, - 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, - 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x2f, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, - 0x61, 0x64, 0x60, 0x20, 0x41, 0x50, 0x49, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, - 0x62, 0x6f, 0x74, 0x68, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, - 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x65, 0x74, 0x73, - 0x20, 0x61, 0x72, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x2e, 0x0a, 0x42, - 0x6f, 0x64, 0x79, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x20, 0x60, - 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x2e, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x60, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x60, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, - 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x60, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, - 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, 0x64, 0x2e, 0x0a, 0x54, 0x68, 0x65, - 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, - 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x20, 0x74, 0x72, 0x65, 0x65, 0x20, 0x77, 0x68, 0x6f, - 0x73, 0x65, 0x20, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, - 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x65, 0x74, 0x73, 0x2e, 0x20, 0x55, - 0x6e, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, - 0x65, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6c, - 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x73, - 0x2e, 0x0a, 0x0a, 0x23, 0x23, 0x20, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x0a, 0x54, 0x6f, - 0x20, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x75, 0x73, 0x65, 0x72, - 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x60, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x60, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, - 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x60, 0x2c, 0x20, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x74, - 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, - 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x62, 0x6f, 0x64, 0x79, 0x0a, 0x60, 0x60, 0x60, - 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x22, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, - 0x6b, 0x65, 0x79, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, - 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x22, 0x2c, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x72, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x0a, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x22, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x30, 0x31, 0x47, 0x35, 0x30, 0x51, 0x56, - 0x56, 0x31, 0x37, 0x50, 0x45, 0x43, 0x4e, 0x56, 0x41, 0x48, 0x58, 0x31, 0x47, 0x47, 0x34, 0x59, - 0x35, 0x4e, 0x43, 0x22, 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x46, - 0x47, 0x41, 0x27, 0x73, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x65, 0x74, 0x20, - 0x74, 0x72, 0x65, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, - 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x65, 0x74, 0x73, 0x20, 0x74, - 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x72, 0x65, 0x61, 0x64, 0x20, 0x61, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, - 0x20, 0x20, 0x22, 0x74, 0x72, 0x65, 0x65, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, - 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, - 0x79, 0x70, 0x65, 0x22, 0x3a, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, - 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x23, 0x72, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x6e, 0x69, 0x6f, 0x6e, - 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6e, 0x6f, 0x64, - 0x65, 0x73, 0x22, 0x3a, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, - 0x79, 0x70, 0x65, 0x22, 0x3a, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, - 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x23, 0x72, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x22, 0x6c, 0x65, 0x61, 0x66, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x3a, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x3a, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, - 0x65, 0x72, 0x3a, 0x62, 0x6f, 0x62, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, - 0x70, 0x65, 0x22, 0x3a, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, - 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x23, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, - 0x6c, 0x65, 0x61, 0x66, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x22, - 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x73, 0x65, 0x74, 0x22, 0x3a, 0x22, 0x64, 0x6f, - 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, - 0x65, 0x74, 0x23, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, - 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x65, - 0x72, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, - 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x20, 0x41, 0x50, 0x49, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x60, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x60, 0x20, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, - 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x60, 0x2e, 0x2a, 0x06, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x22, 0x19, 0x2f, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x65, 0x78, - 0x70, 0x61, 0x6e, 0x64, 0x12, 0x82, 0x0b, 0x0a, 0x17, 0x52, 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, - 0x12, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x8d, 0x0a, 0x92, 0x41, 0xda, 0x09, - 0x0a, 0x14, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0x3a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, - 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, - 0x61, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x1a, 0xec, 0x08, 0x54, 0x68, 0x65, 0x20, 0x52, 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, - 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, - 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x66, 0x6f, - 0x72, 0x20, 0x61, 0x20, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x2e, 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x47, 0x41, 0x27, 0x73, 0x20, 0x72, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, - 0x69, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x61, - 0x6c, 0x6c, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2c, 0x20, 0x73, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, - 0x69, 0x6e, 0x20, 0x64, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x72, - 0x64, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x0a, 0x0a, 0x23, 0x23, 0x20, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x0a, 0x41, 0x73, 0x73, - 0x75, 0x6d, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x27, 0x73, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x68, 0x61, 0x73, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x20, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, 0x20, 0x74, 0x77, 0x69, 0x63, 0x65, - 0x2e, 0x20, 0x54, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, - 0x62, 0x65, 0x65, 0x6e, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, - 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2c, 0x20, 0x63, 0x61, 0x6c, 0x6c, - 0x20, 0x47, 0x45, 0x54, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2d, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x41, - 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, - 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6c, - 0x6f, 0x6f, 0x6b, 0x73, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x3a, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, - 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x22, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x5b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x64, - 0x22, 0x3a, 0x20, 0x22, 0x30, 0x31, 0x47, 0x35, 0x30, 0x51, 0x56, 0x56, 0x31, 0x37, 0x50, 0x45, - 0x43, 0x4e, 0x56, 0x41, 0x48, 0x58, 0x31, 0x47, 0x47, 0x34, 0x59, 0x35, 0x4e, 0x43, 0x22, 0x2c, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x66, - 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x2e, 0x2e, 0x2e, 0x5d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x30, 0x31, 0x47, 0x34, 0x5a, - 0x57, 0x38, 0x46, 0x34, 0x41, 0x30, 0x37, 0x41, 0x4b, 0x51, 0x38, 0x52, 0x48, 0x53, 0x56, 0x47, - 0x39, 0x52, 0x57, 0x30, 0x34, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, - 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, - 0x3a, 0x20, 0x5b, 0x2e, 0x2e, 0x2e, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, + 0x2d, 0x30, 0x35, 0x54, 0x31, 0x33, 0x3a, 0x34, 0x32, 0x3a, 0x31, 0x32, 0x2e, 0x33, 0x35, 0x36, + 0x5a, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6b, 0x65, 0x79, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3a, 0x20, 0x22, + 0x75, 0x73, 0x65, 0x72, 0x3a, 0x62, 0x6f, 0x62, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, + 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x64, 0x6f, 0x63, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, + 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x22, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x3a, 0x20, 0x22, 0x32, + 0x30, 0x32, 0x31, 0x2d, 0x31, 0x30, 0x2d, 0x30, 0x36, 0x54, 0x31, 0x35, 0x3a, 0x33, 0x32, 0x3a, + 0x31, 0x31, 0x2e, 0x31, 0x32, 0x38, 0x5a, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, 0x49, 0x36, 0x49, 0x6b, 0x78, 0x42, 0x56, 0x45, 0x56, 0x54, 0x56, 0x46, 0x39, @@ -3132,536 +2843,918 @@ var file_openfga_v1_openfga_service_proto_rawDesc = []byte{ 0x69, 0x4f, 0x69, 0x49, 0x78, 0x65, 0x6d, 0x31, 0x71, 0x62, 0x58, 0x46, 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, 0x45, 0x78, 0x54, 0x63, 0x55, 0x6f, 0x79, 0x4e, 0x30, 0x31, 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, 0x68, 0x30, 0x63, 0x57, 0x67, 0x69, 0x66, 0x51, 0x3d, 0x3d, 0x22, 0x0a, 0x7d, - 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, - 0x65, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x61, - 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x63, - 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x60, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, - 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, - 0x0a, 0x20, 0x20, 0x22, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x64, 0x22, 0x3a, 0x20, 0x22, - 0x30, 0x31, 0x47, 0x35, 0x30, 0x51, 0x56, 0x56, 0x31, 0x37, 0x50, 0x45, 0x43, 0x4e, 0x56, 0x41, - 0x48, 0x58, 0x31, 0x47, 0x47, 0x34, 0x59, 0x35, 0x4e, 0x43, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x2e, 0x2e, 0x2e, 0x5d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x22, 0x69, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x30, 0x31, 0x47, 0x34, 0x5a, 0x57, 0x38, 0x46, 0x34, - 0x41, 0x30, 0x37, 0x41, 0x4b, 0x51, 0x38, 0x52, 0x48, 0x53, 0x56, 0x47, 0x39, 0x52, 0x57, 0x30, - 0x34, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x5f, - 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x2e, - 0x2e, 0x2e, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x5d, 0x2c, 0x0a, - 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x22, 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, - 0x0a, 0x2a, 0x17, 0x52, 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, - 0x12, 0x27, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x2d, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0x84, 0x0b, 0x0a, 0x16, 0x52, 0x65, - 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x29, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, - 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, - 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x92, 0x0a, 0x92, 0x41, - 0xda, 0x09, 0x0a, 0x14, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x20, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0x35, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, - 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x1a, - 0xf2, 0x08, 0x54, 0x68, 0x65, 0x20, 0x52, 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x41, 0x50, 0x49, - 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x62, 0x79, 0x20, 0x69, 0x74, 0x73, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, - 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, + 0x74, 0x68, 0x61, 0x74, 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, + 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x60, 0x20, 0x68, 0x61, 0x73, 0x20, + 0x31, 0x20, 0x60, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x60, 0x20, 0x28, 0x60, 0x75, 0x73, 0x65, + 0x72, 0x3a, 0x62, 0x6f, 0x62, 0x60, 0x29, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x31, 0x20, 0x60, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x72, 0x60, 0x20, 0x28, 0x60, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x61, 0x6e, + 0x6e, 0x65, 0x60, 0x29, 0x2e, 0x0a, 0x2a, 0x04, 0x52, 0x65, 0x61, 0x64, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x61, 0x64, 0x12, 0xbe, + 0x0b, 0x0a, 0x05, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, + 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xff, 0x0a, + 0x92, 0x41, 0xd8, 0x0a, 0x0a, 0x13, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, + 0x69, 0x70, 0x20, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x23, 0x41, 0x64, 0x64, 0x20, 0x6f, + 0x72, 0x20, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, + 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x94, + 0x0a, 0x54, 0x68, 0x65, 0x20, 0x57, 0x72, 0x69, 0x74, 0x65, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, + 0x69, 0x6c, 0x6c, 0x20, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, + 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x63, 0x65, 0x72, 0x74, + 0x61, 0x69, 0x6e, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x20, 0x54, 0x75, 0x70, 0x6c, 0x65, + 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x20, 0x4f, 0x70, 0x65, + 0x6e, 0x46, 0x47, 0x41, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, + 0x65, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x20, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x20, + 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x0a, 0x49, + 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6f, 0x64, 0x79, 0x2c, 0x20, 0x60, 0x77, 0x72, 0x69, + 0x74, 0x65, 0x73, 0x60, 0x20, 0x61, 0x64, 0x64, 0x73, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x74, 0x75, + 0x70, 0x6c, 0x65, 0x73, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x60, 0x64, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x73, 0x60, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x73, 0x20, 0x65, 0x78, 0x69, + 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x20, 0x54, 0x68, + 0x65, 0x20, 0x41, 0x50, 0x49, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, 0x64, 0x65, + 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x69, 0x66, 0x2c, 0x20, 0x6c, 0x61, 0x74, + 0x65, 0x72, 0x20, 0x6f, 0x6e, 0x2c, 0x20, 0x79, 0x6f, 0x75, 0x20, 0x74, 0x72, 0x79, 0x20, 0x74, + 0x6f, 0x20, 0x61, 0x64, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6d, 0x65, 0x20, 0x74, + 0x75, 0x70, 0x6c, 0x65, 0x2c, 0x20, 0x6f, 0x72, 0x20, 0x69, 0x66, 0x20, 0x79, 0x6f, 0x75, 0x20, + 0x74, 0x72, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x20, + 0x6e, 0x6f, 0x6e, 0x2d, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x75, 0x70, + 0x6c, 0x65, 0x2c, 0x20, 0x69, 0x74, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x72, 0x6f, + 0x77, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x0a, 0x41, 0x6e, 0x20, 0x60, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x60, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x62, 0x6f, 0x64, 0x79, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x2c, 0x20, + 0x69, 0x74, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, + 0x74, 0x6f, 0x20, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x65, + 0x61, 0x63, 0x68, 0x20, 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x20, 0x74, 0x75, 0x70, 0x6c, + 0x65, 0x20, 0x28, 0x6e, 0x6f, 0x74, 0x20, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x29, 0x20, + 0x69, 0x73, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x2e, 0x20, 0x49, 0x66, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, + 0x74, 0x65, 0x73, 0x74, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x49, 0x44, 0x20, 0x77, 0x69, 0x6c, 0x6c, + 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x2e, 0x0a, 0x23, 0x23, 0x20, 0x45, 0x78, 0x61, + 0x6d, 0x70, 0x6c, 0x65, 0x0a, 0x23, 0x23, 0x23, 0x20, 0x41, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x20, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x0a, 0x54, 0x6f, + 0x20, 0x61, 0x64, 0x64, 0x20, 0x60, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x61, 0x6e, 0x6e, 0x65, 0x60, + 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x60, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x60, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, + 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x60, 0x2c, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, + 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x0a, 0x60, 0x60, + 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x22, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x73, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x75, 0x70, 0x6c, 0x65, + 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, + 0x3a, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x61, 0x6e, 0x6e, 0x65, 0x22, 0x2c, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x22, 0x3a, 0x20, 0x22, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, + 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, + 0x64, 0x67, 0x65, 0x74, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x5d, 0x0a, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x22, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, + 0x69, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x30, 0x31, 0x47, 0x35, 0x30, 0x51, 0x56, 0x56, 0x31, 0x37, + 0x50, 0x45, 0x43, 0x4e, 0x56, 0x41, 0x48, 0x58, 0x31, 0x47, 0x47, 0x34, 0x59, 0x35, 0x4e, 0x43, + 0x22, 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x23, 0x23, 0x23, 0x20, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, + 0x70, 0x73, 0x0a, 0x54, 0x6f, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x20, 0x60, 0x75, 0x73, + 0x65, 0x72, 0x3a, 0x62, 0x6f, 0x62, 0x60, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x60, 0x72, 0x65, + 0x61, 0x64, 0x65, 0x72, 0x60, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x60, + 0x2c, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x41, 0x50, 0x49, + 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, + 0x69, 0x6e, 0x67, 0x20, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, + 0x20, 0x22, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x73, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x22, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x22, 0x3a, 0x20, + 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, + 0x62, 0x6f, 0x62, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, + 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x22, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, + 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x2a, 0x05, 0x57, 0x72, 0x69, 0x74, 0x65, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x22, 0x18, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x12, + 0xfc, 0x0c, 0x0a, 0x05, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x18, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbd, + 0x0c, 0x92, 0x41, 0x96, 0x0c, 0x0a, 0x14, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x68, 0x69, 0x70, 0x20, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x36, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x20, 0x75, 0x73, 0x65, + 0x72, 0x20, 0x69, 0x73, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, + 0x74, 0x6f, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x1a, 0xbe, 0x0b, 0x54, 0x68, 0x65, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, + 0x41, 0x50, 0x49, 0x20, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, + 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x20, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x20, 0x61, 0x6e, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, + 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x0a, 0x41, + 0x20, 0x60, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x74, 0x75, 0x70, + 0x6c, 0x65, 0x73, 0x60, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x6d, 0x61, 0x79, 0x20, + 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, + 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6f, 0x64, 0x79, 0x20, 0x6f, 0x66, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x20, 0x54, 0x68, 0x69, + 0x73, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x73, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x60, 0x74, 0x75, 0x70, + 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x60, 0x2c, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, + 0x69, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x74, + 0x75, 0x70, 0x6c, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x2e, 0x0a, 0x59, 0x6f, 0x75, 0x20, 0x6d, + 0x61, 0x79, 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x20, + 0x61, 0x6e, 0x20, 0x60, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x60, 0x20, 0x69, 0x6e, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x62, 0x6f, 0x64, 0x79, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x77, 0x69, + 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x73, + 0x73, 0x65, 0x72, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x20, 0x60, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x60, 0x20, + 0x69, 0x73, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x2e, 0x20, 0x49, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x61, + 0x67, 0x61, 0x69, 0x6e, 0x73, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x73, + 0x74, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x49, 0x44, 0x2e, 0x20, 0x49, 0x74, 0x20, 0x69, 0x73, 0x20, + 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x79, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x61, 0x72, 0x74, - 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, - 0x0a, 0x23, 0x23, 0x20, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x0a, 0x54, 0x6f, 0x20, 0x72, - 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x77, 0x69, 0x74, 0x68, 0x20, 0x49, 0x44, 0x20, 0x60, 0x30, 0x31, 0x47, 0x35, 0x4a, 0x41, 0x56, - 0x4a, 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, 0x39, 0x54, 0x54, 0x33, 0x53, 0x4b, 0x56, 0x53, 0x37, - 0x58, 0x31, 0x4a, 0x60, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x2c, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x47, 0x45, 0x54, - 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x62, 0x79, 0x20, 0x49, 0x44, 0x20, 0x41, 0x50, 0x49, 0x20, - 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x30, 0x31, 0x47, 0x35, 0x4a, 0x41, 0x56, 0x4a, 0x34, 0x31, - 0x54, 0x34, 0x39, 0x45, 0x39, 0x54, 0x54, 0x33, 0x53, 0x4b, 0x56, 0x53, 0x37, 0x58, 0x31, 0x4a, - 0x60, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x69, 0x64, 0x60, 0x20, 0x70, 0x61, - 0x74, 0x68, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x20, 0x54, - 0x68, 0x65, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, - 0x72, 0x6e, 0x3a, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, - 0x22, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x64, 0x22, - 0x3a, 0x22, 0x30, 0x31, 0x47, 0x35, 0x4a, 0x41, 0x56, 0x4a, 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, - 0x39, 0x54, 0x54, 0x33, 0x53, 0x4b, 0x56, 0x53, 0x37, 0x58, 0x31, 0x4a, 0x22, 0x2c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x22, - 0x75, 0x73, 0x65, 0x72, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, - 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x22, - 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x22, - 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x22, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x22, 0x3a, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, - 0x74, 0x68, 0x69, 0x73, 0x22, 0x3a, 0x7b, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x22, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x65, 0x74, - 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, - 0x3a, 0x22, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x22, 0x3a, 0x22, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x22, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x64, 0x65, 0x6c, 0x20, 0x69, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x62, 0x65, 0x74, 0x74, 0x65, + 0x72, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x0a, 0x54, + 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, + 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, + 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x20, 0x60, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x60, 0x2e, 0x0a, + 0x0a, 0x23, 0x23, 0x20, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x0a, 0x49, 0x6e, 0x20, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x69, 0x66, + 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x60, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x61, 0x6e, 0x6e, 0x65, + 0x60, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x60, 0x75, 0x73, 0x65, 0x72, 0x60, + 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x20, 0x60, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x60, 0x20, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x77, 0x69, 0x74, + 0x68, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x60, 0x20, + 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, + 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x20, 0x74, + 0x75, 0x70, 0x6c, 0x65, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, + 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x61, + 0x6e, 0x6e, 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, + 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x74, 0x69, 0x6d, 0x65, 0x5f, + 0x73, 0x6c, 0x6f, 0x74, 0x3a, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x65, 0x5f, 0x68, 0x6f, 0x75, 0x72, + 0x73, 0x22, 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x74, 0x68, 0x65, 0x20, 0x43, 0x68, 0x65, + 0x63, 0x6b, 0x20, 0x41, 0x50, 0x49, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, + 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c, 0x6c, + 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x62, 0x6f, + 0x64, 0x79, 0x3a, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, + 0x22, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3a, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, + 0x3a, 0x61, 0x6e, 0x6e, 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, + 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x20, + 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, + 0x75, 0x64, 0x67, 0x65, 0x74, 0x22, 0x0a, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x22, 0x63, + 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, + 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, + 0x6b, 0x65, 0x79, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x3a, + 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x61, 0x6e, 0x6e, 0x65, 0x22, 0x2c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x3a, 0x20, 0x22, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x74, + 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x3a, 0x6f, 0x66, 0x66, 0x69, 0x63, 0x65, 0x5f, + 0x68, 0x6f, 0x75, 0x72, 0x73, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x5d, 0x0a, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x22, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x5f, 0x69, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x30, 0x31, 0x47, 0x35, 0x30, 0x51, 0x56, 0x56, 0x31, + 0x37, 0x50, 0x45, 0x43, 0x4e, 0x56, 0x41, 0x48, 0x58, 0x31, 0x47, 0x47, 0x34, 0x59, 0x35, 0x4e, + 0x43, 0x22, 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x47, 0x41, + 0x27, 0x73, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, + 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x60, 0x7b, 0x20, 0x22, 0x61, 0x6c, 0x6c, + 0x6f, 0x77, 0x65, 0x64, 0x22, 0x3a, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x7d, 0x60, 0x20, 0x69, + 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x72, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x60, 0x7b, + 0x20, 0x22, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x22, 0x3a, 0x20, 0x66, 0x61, 0x6c, 0x73, + 0x65, 0x20, 0x7d, 0x60, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x69, 0x73, + 0x6e, 0x27, 0x74, 0x2e, 0x2a, 0x05, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1d, 0x3a, 0x01, 0x2a, 0x22, 0x18, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x12, 0xb9, + 0x0e, 0x0a, 0x06, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x12, 0x19, 0x2e, 0x6f, 0x70, 0x65, 0x6e, + 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, + 0x31, 0x2e, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xf7, 0x0d, 0x92, 0x41, 0xcf, 0x0d, 0x0a, 0x14, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x8e, 0x01, + 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x65, 0x74, 0x20, 0x74, 0x72, 0x65, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x2c, + 0x20, 0x61, 0x6e, 0x64, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x75, + 0x73, 0x65, 0x72, 0x73, 0x65, 0x74, 0x20, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x72, + 0x75, 0x6c, 0x65, 0x73, 0x2e, 0x20, 0x20, 0x55, 0x73, 0x65, 0x66, 0x75, 0x6c, 0x20, 0x74, 0x6f, + 0x20, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x61, 0x6e, + 0x64, 0x20, 0x64, 0x65, 0x62, 0x75, 0x67, 0x20, 0x61, 0x20, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, + 0x6e, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x1a, 0x9d, + 0x0c, 0x54, 0x68, 0x65, 0x20, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x20, 0x41, 0x50, 0x49, 0x20, + 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x6c, 0x6c, 0x20, + 0x75, 0x73, 0x65, 0x72, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x65, + 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x63, 0x65, 0x72, + 0x74, 0x61, 0x69, 0x6e, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, + 0x70, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x6e, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x64, 0x69, 0x66, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x60, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x65, 0x61, 0x64, 0x60, 0x20, 0x41, 0x50, 0x49, 0x20, 0x69, 0x6e, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x62, 0x6f, 0x74, 0x68, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x20, 0x75, 0x73, + 0x65, 0x72, 0x73, 0x65, 0x74, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x65, 0x64, 0x2e, 0x0a, 0x42, 0x6f, 0x64, 0x79, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, + 0x74, 0x65, 0x72, 0x73, 0x20, 0x60, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x2e, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x60, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x60, 0x74, 0x75, 0x70, + 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x60, + 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x71, 0x75, 0x69, 0x72, 0x65, + 0x64, 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, + 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x20, 0x74, 0x72, + 0x65, 0x65, 0x20, 0x77, 0x68, 0x6f, 0x73, 0x65, 0x20, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x73, 0x20, + 0x61, 0x72, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, + 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, + 0x65, 0x74, 0x73, 0x2e, 0x20, 0x55, 0x6e, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x73, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x69, 0x66, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, + 0x20, 0x61, 0x72, 0x65, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x74, 0x65, + 0x20, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x2e, 0x0a, 0x0a, 0x23, 0x23, 0x20, 0x45, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x0a, 0x54, 0x6f, 0x20, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x6c, + 0x6c, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x76, + 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x60, 0x20, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, + 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x60, 0x2c, 0x20, + 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x20, 0x41, + 0x50, 0x49, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c, 0x6c, + 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x62, 0x6f, + 0x64, 0x79, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x22, + 0x74, 0x75, 0x70, 0x6c, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0x3a, 0x20, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x20, 0x22, 0x64, 0x6f, 0x63, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, + 0x74, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x0a, 0x20, 0x20, 0x7d, + 0x2c, 0x0a, 0x20, 0x20, 0x22, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x30, + 0x31, 0x47, 0x35, 0x30, 0x51, 0x56, 0x56, 0x31, 0x37, 0x50, 0x45, 0x43, 0x4e, 0x56, 0x41, 0x48, + 0x58, 0x31, 0x47, 0x47, 0x34, 0x59, 0x35, 0x4e, 0x43, 0x22, 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, + 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x47, 0x41, 0x27, 0x73, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x75, 0x73, + 0x65, 0x72, 0x73, 0x65, 0x74, 0x20, 0x74, 0x72, 0x65, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x65, 0x74, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x72, + 0x65, 0x61, 0x64, 0x20, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x0a, 0x60, 0x60, 0x60, 0x6a, + 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x22, 0x74, 0x72, 0x65, 0x65, 0x22, 0x3a, 0x7b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x6f, 0x6f, 0x74, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x22, 0x64, 0x6f, 0x63, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, + 0x23, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x22, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x22, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x3a, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x22, 0x64, 0x6f, 0x63, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, + 0x23, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6c, 0x65, 0x61, 0x66, 0x22, 0x3a, 0x7b, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, + 0x65, 0x72, 0x73, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x3a, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x22, - 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, - 0x74, 0x68, 0x69, 0x73, 0x22, 0x3a, 0x7b, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x0a, 0x20, 0x20, 0x7d, - 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x49, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x62, - 0x6f, 0x76, 0x65, 0x20, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x2c, 0x20, 0x74, 0x68, 0x65, - 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x32, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x20, 0x28, - 0x60, 0x75, 0x73, 0x65, 0x72, 0x60, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, - 0x6d, 0x65, 0x6e, 0x74, 0x60, 0x29, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x60, 0x64, 0x6f, 0x63, - 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x60, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x68, 0x61, 0x73, 0x20, - 0x32, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x28, 0x60, 0x77, 0x72, - 0x69, 0x74, 0x65, 0x72, 0x60, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x60, 0x72, 0x65, 0x61, 0x64, 0x65, - 0x72, 0x60, 0x29, 0x2e, 0x2a, 0x16, 0x52, 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, - 0x12, 0xf9, 0x0a, 0x0a, 0x17, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x2a, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, - 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x84, 0x0a, 0x92, 0x41, 0xce, 0x09, 0x0a, 0x14, 0x41, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4d, 0x6f, 0x64, 0x65, - 0x6c, 0x73, 0x12, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, - 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x1a, 0xa8, 0x08, 0x54, 0x68, 0x65, 0x20, 0x57, 0x72, 0x69, 0x74, 0x65, - 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x61, 0x64, 0x64, 0x20, - 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x0a, 0x45, 0x61, 0x63, 0x68, 0x20, 0x69, 0x74, 0x65, 0x6d, 0x20, - 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x66, - 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x60, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, - 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x60, - 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x60, - 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x77, - 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x27, 0x73, 0x20, 0x49, 0x44, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, - 0x69, 0x64, 0x60, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x2e, 0x0a, 0x0a, 0x23, 0x23, 0x20, 0x45, - 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x0a, 0x54, 0x6f, 0x20, 0x61, 0x64, 0x64, 0x20, 0x61, 0x6e, - 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x75, 0x73, 0x65, 0x72, 0x60, - 0x20, 0x61, 0x6e, 0x64, 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x60, 0x20, - 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x2c, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x50, 0x4f, 0x53, 0x54, 0x20, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, - 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6f, - 0x64, 0x79, 0x3a, 0x20, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, - 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x22, 0x3a, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x0a, - 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, - 0x65, 0x6e, 0x74, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x7b, - 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x68, - 0x69, 0x6c, 0x64, 0x22, 0x3a, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x3a, 0x62, 0x6f, 0x62, 0x22, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x68, 0x69, 0x73, 0x22, 0x3a, 0x7b, 0x7d, + 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, + 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x23, + 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6c, 0x65, 0x61, 0x66, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6d, + 0x70, 0x75, 0x74, 0x65, 0x64, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x73, 0x65, 0x72, 0x73, 0x65, + 0x74, 0x22, 0x3a, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x32, 0x30, 0x32, + 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x23, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x54, 0x68, 0x65, + 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x6e, + 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x20, 0x41, 0x50, 0x49, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, + 0x60, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x3a, 0x32, 0x30, 0x32, 0x31, 0x2d, 0x62, 0x75, 0x64, 0x67, 0x65, 0x74, 0x60, 0x2e, 0x2a, 0x06, + 0x45, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x22, + 0x19, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x65, 0x78, 0x70, 0x61, 0x6e, 0x64, 0x12, 0x82, 0x0b, 0x0a, 0x17, 0x52, + 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x8d, 0x0a, 0x92, 0x41, 0xda, 0x09, 0x0a, 0x14, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0x3a, 0x52, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, 0x6c, + 0x61, 0x72, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0xec, 0x08, 0x54, 0x68, 0x65, 0x20, 0x52, + 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, + 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, + 0x6e, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x47, 0x41, + 0x27, 0x73, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, + 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x72, 0x72, 0x61, + 0x79, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2c, 0x20, 0x73, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x64, 0x65, 0x73, 0x63, 0x65, 0x6e, 0x64, + 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x23, 0x23, 0x20, 0x45, 0x78, 0x61, 0x6d, 0x70, + 0x6c, 0x65, 0x0a, 0x41, 0x73, 0x73, 0x75, 0x6d, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, + 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x27, 0x73, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x68, 0x61, 0x73, + 0x20, 0x62, 0x65, 0x65, 0x6e, 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x64, + 0x20, 0x74, 0x77, 0x69, 0x63, 0x65, 0x2e, 0x20, 0x54, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x61, + 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, + 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x2c, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x47, 0x45, 0x54, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, + 0x20, 0x54, 0x68, 0x65, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, + 0x74, 0x68, 0x61, 0x74, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x73, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x3a, + 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x22, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x22, 0x69, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x30, 0x31, 0x47, 0x35, 0x30, 0x51, + 0x56, 0x56, 0x31, 0x37, 0x50, 0x45, 0x43, 0x4e, 0x56, 0x41, 0x48, 0x58, 0x31, 0x47, 0x47, 0x34, + 0x59, 0x35, 0x4e, 0x43, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, + 0x70, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, + 0x20, 0x5b, 0x2e, 0x2e, 0x2e, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x64, 0x22, 0x3a, 0x20, + 0x22, 0x30, 0x31, 0x47, 0x34, 0x5a, 0x57, 0x38, 0x46, 0x34, 0x41, 0x30, 0x37, 0x41, 0x4b, 0x51, + 0x38, 0x52, 0x48, 0x53, 0x56, 0x47, 0x39, 0x52, 0x57, 0x30, 0x34, 0x22, 0x2c, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x2e, 0x2e, 0x2e, 0x5d, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, + 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, + 0x3a, 0x20, 0x22, 0x65, 0x79, 0x4a, 0x77, 0x61, 0x79, 0x49, 0x36, 0x49, 0x6b, 0x78, 0x42, 0x56, + 0x45, 0x56, 0x54, 0x56, 0x46, 0x39, 0x4f, 0x55, 0x30, 0x4e, 0x50, 0x54, 0x6b, 0x5a, 0x4a, 0x52, + 0x31, 0x39, 0x68, 0x64, 0x58, 0x52, 0x6f, 0x4d, 0x48, 0x4e, 0x30, 0x62, 0x33, 0x4a, 0x6c, 0x49, + 0x69, 0x77, 0x69, 0x63, 0x32, 0x73, 0x69, 0x4f, 0x69, 0x49, 0x78, 0x65, 0x6d, 0x31, 0x71, 0x62, + 0x58, 0x46, 0x33, 0x4d, 0x57, 0x5a, 0x4c, 0x5a, 0x45, 0x78, 0x54, 0x63, 0x55, 0x6f, 0x79, 0x4e, + 0x30, 0x31, 0x4d, 0x64, 0x54, 0x64, 0x71, 0x54, 0x6a, 0x68, 0x30, 0x63, 0x57, 0x67, 0x69, 0x66, + 0x51, 0x3d, 0x3d, 0x22, 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x49, 0x66, 0x20, 0x74, 0x68, + 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x73, 0x20, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2c, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x60, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x60, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x77, + 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x0a, 0x60, 0x60, 0x60, + 0x6a, 0x73, 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x22, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x22, 0x3a, + 0x20, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, + 0x69, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x30, 0x31, 0x47, 0x35, 0x30, 0x51, 0x56, 0x56, 0x31, 0x37, + 0x50, 0x45, 0x43, 0x4e, 0x56, 0x41, 0x48, 0x58, 0x31, 0x47, 0x47, 0x34, 0x59, 0x35, 0x4e, 0x43, + 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, + 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x2e, 0x2e, + 0x2e, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x69, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x30, 0x31, 0x47, + 0x34, 0x5a, 0x57, 0x38, 0x46, 0x34, 0x41, 0x30, 0x37, 0x41, 0x4b, 0x51, 0x38, 0x52, 0x48, 0x53, + 0x56, 0x47, 0x39, 0x52, 0x57, 0x30, 0x34, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x22, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x22, 0x3a, 0x20, 0x5b, 0x2e, 0x2e, 0x2e, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, + 0x0a, 0x20, 0x20, 0x5d, 0x2c, 0x0a, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x3a, 0x20, 0x22, 0x22, + 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x2a, 0x17, 0x52, 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, + 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, + 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, + 0x84, 0x0b, 0x0a, 0x16, 0x52, 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x29, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x92, 0x0a, 0x92, 0x41, 0xda, 0x09, 0x0a, 0x14, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0x35, + 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, + 0x6c, 0x61, 0x72, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x61, + 0x6e, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x1a, 0xf2, 0x08, 0x54, 0x68, 0x65, 0x20, 0x52, 0x65, 0x61, 0x64, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x20, 0x41, 0x50, 0x49, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, + 0x6e, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x62, 0x79, 0x20, 0x69, 0x74, 0x73, 0x20, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x0a, 0x23, 0x23, 0x20, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x0a, 0x54, 0x6f, 0x20, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x49, 0x44, 0x20, 0x60, 0x30, + 0x31, 0x47, 0x35, 0x4a, 0x41, 0x56, 0x4a, 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, 0x39, 0x54, 0x54, + 0x33, 0x53, 0x4b, 0x56, 0x53, 0x37, 0x58, 0x31, 0x4a, 0x60, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2c, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x47, 0x45, 0x54, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x62, 0x79, 0x20, 0x49, + 0x44, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x60, 0x30, 0x31, 0x47, 0x35, + 0x4a, 0x41, 0x56, 0x4a, 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, 0x39, 0x54, 0x54, 0x33, 0x53, 0x4b, + 0x56, 0x53, 0x37, 0x58, 0x31, 0x4a, 0x60, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, + 0x69, 0x64, 0x60, 0x20, 0x70, 0x61, 0x74, 0x68, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x2e, 0x20, 0x20, 0x54, 0x68, 0x65, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, + 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x3a, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, 0x6f, + 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x22, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x22, 0x69, 0x64, 0x22, 0x3a, 0x22, 0x30, 0x31, 0x47, 0x35, 0x4a, 0x41, 0x56, 0x4a, + 0x34, 0x31, 0x54, 0x34, 0x39, 0x45, 0x39, 0x54, 0x54, 0x33, 0x53, 0x4b, 0x56, 0x53, 0x37, 0x58, + 0x31, 0x4a, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, + 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x5b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, + 0x79, 0x70, 0x65, 0x22, 0x3a, 0x22, 0x75, 0x73, 0x65, 0x72, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x22, 0x64, 0x6f, 0x63, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, + 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, + 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x22, 0x3a, 0x5b, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x68, 0x69, 0x73, 0x22, 0x3a, 0x7b, 0x7d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, - 0x65, 0x74, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, - 0x3a, 0x22, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x22, 0x3a, 0x22, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x77, 0x72, 0x69, 0x74, 0x65, - 0x72, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, - 0x74, 0x68, 0x69, 0x73, 0x22, 0x3a, 0x7b, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, - 0x0a, 0x20, 0x20, 0x5d, 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x46, - 0x47, 0x41, 0x27, 0x73, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, - 0x69, 0x73, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2c, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x0a, 0x60, 0x60, - 0x60, 0x0a, 0x7b, 0x22, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x22, 0x3a, 0x20, 0x22, 0x30, 0x31, - 0x47, 0x35, 0x30, 0x51, 0x56, 0x56, 0x31, 0x37, 0x50, 0x45, 0x43, 0x4e, 0x56, 0x41, 0x48, 0x58, - 0x31, 0x47, 0x47, 0x34, 0x59, 0x35, 0x4e, 0x43, 0x22, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x2a, - 0x17, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4a, 0x50, 0x0a, 0x03, 0x32, 0x30, 0x31, 0x12, - 0x49, 0x0a, 0x16, 0x41, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x20, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x12, 0x2f, 0x0a, 0x2d, 0x1a, 0x2b, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x64, 0x55, + 0x73, 0x65, 0x72, 0x73, 0x65, 0x74, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x22, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x22, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x72, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x72, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x68, 0x69, 0x73, 0x22, 0x3a, 0x7b, 0x7d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x5d, 0x0a, 0x20, 0x20, 0x7d, 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x49, 0x6e, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x61, 0x62, 0x6f, 0x76, 0x65, 0x20, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c, + 0x65, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x32, 0x20, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x20, 0x28, 0x60, 0x75, 0x73, 0x65, 0x72, 0x60, 0x20, 0x61, 0x6e, 0x64, + 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x60, 0x29, 0x2e, 0x20, 0x54, 0x68, + 0x65, 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x60, 0x20, 0x74, 0x79, 0x70, + 0x65, 0x20, 0x68, 0x61, 0x73, 0x20, 0x32, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x20, 0x28, 0x60, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x60, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x60, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x60, 0x29, 0x2e, 0x2a, 0x16, 0x52, 0x65, 0x61, 0x64, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, - 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, - 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0xc8, 0x04, 0x0a, - 0x0f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, - 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xeb, 0x03, 0x92, 0x41, 0xa6, 0x03, - 0x0a, 0x0a, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2f, 0x55, 0x70, - 0x73, 0x65, 0x72, 0x74, 0x20, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, - 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x49, 0x44, 0x1a, 0x8b, 0x02, - 0x54, 0x68, 0x65, 0x20, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x75, 0x70, 0x73, - 0x65, 0x72, 0x74, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x69, 0x64, - 0x2c, 0x20, 0x6f, 0x72, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x6e, 0x65, 0x73, - 0x2e, 0x20, 0x41, 0x6e, 0x20, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, - 0x73, 0x20, 0x61, 0x6e, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, - 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6c, - 0x65, 0x20, 0x6b, 0x65, 0x79, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, - 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x77, 0x68, - 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x6f, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x41, 0x50, 0x49, 0x20, 0x6f, 0x66, - 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, - 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x72, 0x75, 0x65, - 0x20, 0x6f, 0x72, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2e, 0x20, 0x2a, 0x0f, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x4a, 0x48, 0x0a, 0x03, - 0x32, 0x30, 0x34, 0x12, 0x41, 0x0a, 0x16, 0x41, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x66, 0x75, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x12, 0x27, 0x0a, - 0x25, 0x1a, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, 0x01, 0x2a, 0x1a, - 0x36, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xed, 0x03, 0x0a, 0x0e, 0x52, 0x65, 0x61, 0x64, - 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x21, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x73, 0x73, 0x65, - 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, - 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x41, - 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x93, 0x03, 0x92, 0x41, 0xd1, 0x02, 0x0a, 0x0a, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x52, 0x65, 0x61, 0x64, 0x20, 0x61, 0x73, 0x73, 0x65, 0x72, + 0x65, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xf9, 0x0a, 0x0a, 0x17, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, + 0x65, 0x6c, 0x12, 0x2a, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, + 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, + 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x84, 0x0a, 0x92, 0x41, + 0xce, 0x09, 0x0a, 0x14, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0x20, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x1a, 0xa8, 0x08, 0x54, 0x68, 0x65, + 0x20, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, + 0x6c, 0x20, 0x61, 0x64, 0x64, 0x20, 0x61, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, + 0x74, 0x6f, 0x20, 0x61, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x0a, 0x45, 0x61, 0x63, 0x68, + 0x20, 0x69, 0x74, 0x65, 0x6d, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x74, 0x79, + 0x70, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x60, 0x20, + 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, + 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, + 0x69, 0x65, 0x6c, 0x64, 0x20, 0x60, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x60, 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x27, 0x73, 0x20, 0x49, 0x44, 0x20, 0x69, 0x6e, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x69, 0x64, 0x60, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x2e, + 0x0a, 0x0a, 0x23, 0x23, 0x20, 0x45, 0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x0a, 0x54, 0x6f, 0x20, + 0x61, 0x64, 0x64, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, + 0x60, 0x75, 0x73, 0x65, 0x72, 0x60, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x60, 0x64, 0x6f, 0x63, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x60, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x64, 0x65, 0x66, 0x69, 0x6e, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x50, 0x4f, 0x53, + 0x54, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x62, 0x6f, 0x64, 0x79, 0x3a, 0x20, 0x0a, 0x60, 0x60, 0x60, 0x6a, 0x73, + 0x6f, 0x6e, 0x0a, 0x7b, 0x0a, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x64, 0x65, 0x66, + 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x5b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, 0x22, + 0x75, 0x73, 0x65, 0x72, 0x22, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3a, + 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x22, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3a, 0x7b, 0x0a, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, 0x61, 0x64, 0x65, 0x72, 0x22, + 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x75, 0x6e, + 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x22, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x22, 0x3a, 0x5b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x68, + 0x69, 0x73, 0x22, 0x3a, 0x7b, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, + 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x65, 0x74, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x22, 0x3a, 0x22, 0x22, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3a, 0x22, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x22, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x5d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x2c, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x22, 0x77, 0x72, 0x69, 0x74, 0x65, 0x72, 0x22, 0x3a, 0x7b, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x74, 0x68, 0x69, 0x73, 0x22, 0x3a, 0x7b, 0x7d, 0x0a, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x7d, + 0x0a, 0x20, 0x20, 0x20, 0x20, 0x7d, 0x0a, 0x20, 0x20, 0x5d, 0x0a, 0x7d, 0x0a, 0x60, 0x60, 0x60, + 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x47, 0x41, 0x27, 0x73, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x64, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x2c, 0x20, 0x77, 0x68, + 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x20, 0x6c, 0x69, + 0x6b, 0x65, 0x20, 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x7b, 0x22, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, + 0x22, 0x3a, 0x20, 0x22, 0x30, 0x31, 0x47, 0x35, 0x30, 0x51, 0x56, 0x56, 0x31, 0x37, 0x50, 0x45, + 0x43, 0x4e, 0x56, 0x41, 0x48, 0x58, 0x31, 0x47, 0x47, 0x34, 0x59, 0x35, 0x4e, 0x43, 0x22, 0x7d, + 0x0a, 0x60, 0x60, 0x60, 0x0a, 0x2a, 0x17, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x4a, 0x50, + 0x0a, 0x03, 0x32, 0x30, 0x31, 0x12, 0x49, 0x0a, 0x16, 0x41, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x66, 0x75, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x12, + 0x2f, 0x0a, 0x2d, 0x1a, 0x2b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, + 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x3a, 0x01, 0x2a, 0x22, 0x27, 0x2f, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2d, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x73, 0x12, 0xc8, 0x04, 0x0a, 0x0f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, + 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, + 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x73, 0x73, + 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0xeb, 0x03, 0x92, 0x41, 0xa6, 0x03, 0x0a, 0x0a, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x12, 0x2f, 0x55, 0x70, 0x73, 0x65, 0x72, 0x74, 0x20, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x20, 0x49, 0x44, 0x1a, 0x83, 0x02, 0x54, 0x68, 0x65, 0x20, 0x52, 0x65, 0x61, 0x64, 0x41, 0x73, - 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, - 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x2c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, - 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x69, 0x64, 0x2c, 0x20, 0x61, 0x6c, - 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x74, 0x2e, 0x20, - 0x41, 0x6e, 0x20, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, - 0x61, 0x6e, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, - 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x61, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x20, - 0x6b, 0x65, 0x79, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x70, - 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x77, 0x68, 0x65, 0x74, - 0x68, 0x65, 0x72, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, - 0x65, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x41, 0x50, 0x49, 0x20, 0x6f, 0x66, 0x20, 0x74, - 0x68, 0x61, 0x74, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x77, 0x69, - 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x6f, - 0x72, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2e, 0x20, 0x2a, 0x0e, 0x52, 0x65, 0x61, 0x64, 0x41, - 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, - 0x36, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, - 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x86, 0x06, 0x0a, 0x0b, 0x52, 0x65, 0x61, 0x64, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, - 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, - 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb5, 0x05, 0x92, 0x41, 0x8f, 0x05, 0x0a, - 0x13, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x54, 0x75, - 0x70, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x20, 0x6c, - 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, - 0x75, 0x70, 0x6c, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x1a, 0xc2, 0x04, 0x54, - 0x68, 0x65, 0x20, 0x52, 0x65, 0x61, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x41, - 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, - 0x20, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, - 0x6f, 0x66, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, - 0x20, 0x28, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x29, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, - 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x20, 0x67, 0x69, - 0x76, 0x65, 0x6e, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2c, 0x20, 0x73, 0x6f, 0x72, 0x74, 0x65, - 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x61, - 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, - 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, - 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, - 0x20, 0x73, 0x65, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2e, - 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, - 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x20, 0x63, 0x6f, 0x6e, 0x74, - 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x2c, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6d, 0x65, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x77, - 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, - 0x69, 0x6e, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x74, 0x20, - 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, - 0x6e, 0x65, 0x77, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, - 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x65, 0x64, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x20, 0x6e, 0x65, 0x76, 0x65, 0x72, 0x20, 0x68, 0x61, 0x64, - 0x20, 0x61, 0x6e, 0x79, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x61, 0x64, 0x64, 0x65, - 0x64, 0x20, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x2c, 0x20, 0x74, 0x68, - 0x69, 0x73, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, - 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x0a, 0x59, 0x6f, 0x75, 0x20, 0x63, 0x61, 0x6e, 0x20, - 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x74, 0x79, 0x70, 0x65, 0x60, 0x20, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x6f, 0x6e, 0x6c, 0x79, - 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, - 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x74, - 0x68, 0x61, 0x74, 0x20, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x79, 0x70, 0x65, 0x2e, - 0x0a, 0x2a, 0x0b, 0x52, 0x65, 0x61, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, - 0x12, 0xbb, 0x02, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, - 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0xea, 0x01, 0x92, 0x41, 0xd4, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, - 0x12, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x1a, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, - 0x65, 0x20, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x47, 0x41, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x20, - 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, - 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, - 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, - 0x70, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x2a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x4a, 0x44, 0x0a, 0x03, 0x32, 0x30, 0x31, 0x12, 0x3d, 0x0a, - 0x16, 0x41, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x20, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x12, 0x23, 0x0a, 0x21, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, - 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, - 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x0c, 0x3a, 0x01, 0x2a, 0x22, 0x07, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x8e, - 0x02, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x1e, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xbd, 0x01, 0x92, 0x41, 0x87, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x0e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x1a, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, - 0x69, 0x6e, 0x67, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x2a, 0x0b, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x4a, 0x44, 0x0a, 0x03, 0x32, 0x30, 0x30, 0x12, 0x3d, - 0x0a, 0x16, 0x41, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x20, 0x72, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x12, 0x23, 0x0a, 0x21, 0x1a, 0x1f, 0x2e, 0x6f, - 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0xfa, 0xd2, 0xe4, - 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x55, 0x4e, 0x49, 0x4d, 0x50, 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, - 0x45, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x3a, 0x01, 0x2a, 0x32, 0x12, 0x2f, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, - 0xd2, 0x02, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, - 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x20, 0x49, 0x44, 0x1a, 0x8b, 0x02, 0x54, 0x68, 0x65, 0x20, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, + 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, + 0x6c, 0x6c, 0x20, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x61, 0x73, + 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6e, 0x20, + 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x20, 0x69, 0x64, 0x2c, 0x20, 0x6f, 0x72, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, + 0x67, 0x20, 0x6f, 0x6e, 0x65, 0x73, 0x2e, 0x20, 0x41, 0x6e, 0x20, 0x61, 0x73, 0x73, 0x65, 0x72, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, + 0x61, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x2c, 0x20, 0x61, 0x6e, 0x64, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x6f, 0x66, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x20, 0x63, 0x61, + 0x6c, 0x6c, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, + 0x41, 0x50, 0x49, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x75, 0x70, 0x6c, + 0x65, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x20, 0x74, 0x72, 0x75, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2e, + 0x20, 0x2a, 0x0f, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x4a, 0x48, 0x0a, 0x03, 0x32, 0x30, 0x34, 0x12, 0x41, 0x0a, 0x16, 0x41, 0x20, 0x73, + 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x12, 0x27, 0x0a, 0x25, 0x1a, 0x23, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, + 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x3b, 0x3a, 0x01, 0x2a, 0x1a, 0x36, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xed, 0x03, + 0x0a, 0x0e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x12, 0x21, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, + 0x61, 0x64, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x93, 0x03, 0x92, 0x41, 0xd1, 0x02, 0x0a, 0x0a, + 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x52, 0x65, 0x61, 0x64, + 0x20, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x72, 0x20, + 0x61, 0x6e, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x49, 0x44, 0x1a, 0x83, 0x02, 0x54, 0x68, 0x65, 0x20, + 0x52, 0x65, 0x61, 0x64, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x41, + 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x2c, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x61, 0x75, 0x74, 0x68, + 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, + 0x69, 0x64, 0x2c, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x73, 0x73, 0x65, + 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x69, 0x74, 0x2e, 0x20, 0x41, 0x6e, 0x20, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, + 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 0x61, 0x20, + 0x74, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x6b, 0x65, 0x79, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6f, + 0x66, 0x20, 0x77, 0x68, 0x65, 0x74, 0x68, 0x65, 0x72, 0x20, 0x61, 0x20, 0x63, 0x61, 0x6c, 0x6c, + 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x20, 0x41, 0x50, + 0x49, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x20, + 0x6b, 0x65, 0x79, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, + 0x74, 0x72, 0x75, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x2e, 0x20, 0x2a, + 0x0e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x73, 0x73, 0x65, 0x72, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x38, 0x12, 0x36, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x73, 0x73, 0x65, 0x72, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x7b, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x86, 0x06, + 0x0a, 0x0b, 0x52, 0x65, 0x61, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x1e, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x43, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb5, + 0x05, 0x92, 0x41, 0x8f, 0x05, 0x0a, 0x13, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x68, 0x69, 0x70, 0x20, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x52, 0x65, 0x74, 0x75, + 0x72, 0x6e, 0x20, 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6c, 0x6c, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x73, 0x1a, 0xc2, 0x04, 0x54, 0x68, 0x65, 0x20, 0x52, 0x65, 0x61, 0x64, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x73, 0x20, 0x41, 0x50, 0x49, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x72, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x20, 0x61, 0x20, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, + 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x28, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x29, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x20, 0x69, + 0x6e, 0x20, 0x61, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2c, + 0x20, 0x73, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x73, 0x63, 0x65, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x72, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x69, 0x6e, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x69, + 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x73, 0x65, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x73, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, + 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x61, + 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x64, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x61, 0x6d, 0x65, 0x20, 0x74, + 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x72, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x20, 0x66, + 0x6f, 0x72, 0x20, 0x69, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, + 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x65, 0x64, 0x2e, 0x20, + 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x20, 0x6e, 0x65, 0x76, + 0x65, 0x72, 0x20, 0x68, 0x61, 0x64, 0x20, 0x61, 0x6e, 0x79, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, + 0x73, 0x20, 0x61, 0x64, 0x64, 0x65, 0x64, 0x20, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x64, 0x2c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x77, + 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x2e, 0x0a, 0x59, 0x6f, + 0x75, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x74, + 0x79, 0x70, 0x65, 0x60, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x20, 0x74, + 0x6f, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x67, 0x65, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, + 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x20, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, + 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x61, 0x74, + 0x20, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x0a, 0x2a, 0x0b, 0x52, 0x65, 0x61, 0x64, 0x43, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x73, 0x74, 0x6f, + 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0xbb, 0x02, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xea, 0x01, 0x92, 0x41, 0xd4, 0x01, 0x0a, 0x06, + 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, + 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, + 0x20, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x20, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x47, 0x41, 0x20, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x69, 0x6c, 0x6c, + 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x2a, + 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x4a, 0x44, 0x0a, 0x03, + 0x32, 0x30, 0x31, 0x12, 0x3d, 0x0a, 0x16, 0x41, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x66, 0x75, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x12, 0x23, 0x0a, + 0x21, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x3a, 0x01, 0x2a, 0x22, 0x07, 0x2f, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x73, 0x12, 0x8e, 0x02, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbd, 0x01, 0x92, 0x41, 0x87, 0x01, 0x0a, 0x06, 0x53, 0x74, + 0x6f, 0x72, 0x65, 0x73, 0x12, 0x0e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, + 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x6e, + 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, + 0x2a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x4a, 0x44, 0x0a, + 0x03, 0x32, 0x30, 0x30, 0x12, 0x3d, 0x0a, 0x16, 0x41, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x66, 0x75, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x12, 0x23, + 0x0a, 0x21, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0xfa, 0xd2, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x55, 0x4e, 0x49, 0x4d, 0x50, + 0x4c, 0x45, 0x4d, 0x45, 0x4e, 0x54, 0x45, 0x44, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x3a, 0x01, + 0x2a, 0x32, 0x12, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xd2, 0x02, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x81, 0x02, 0x92, 0x41, 0xe3, 0x01, 0x0a, 0x06, 0x53, + 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x20, + 0x73, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x76, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x6e, + 0x20, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x47, 0x41, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x20, + 0x54, 0x68, 0x69, 0x73, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x73, + 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2c, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x74, 0x75, + 0x70, 0x6c, 0x65, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x2a, 0x0b, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x4a, 0x44, 0x0a, 0x03, 0x32, 0x30, + 0x34, 0x12, 0x3d, 0x0a, 0x16, 0x41, 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, + 0x6c, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x12, 0x23, 0x0a, 0x21, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x81, 0x02, 0x92, 0x41, 0xe3, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, - 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x1a, - 0x76, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x4f, 0x70, 0x65, 0x6e, 0x46, - 0x47, 0x41, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, 0x20, 0x64, - 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x61, 0x73, 0x73, 0x6f, 0x63, 0x69, 0x61, 0x74, - 0x65, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x2c, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x6f, - 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x2a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, - 0x74, 0x6f, 0x72, 0x65, 0x4a, 0x44, 0x0a, 0x03, 0x32, 0x30, 0x34, 0x12, 0x3d, 0x0a, 0x16, 0x41, - 0x20, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x66, 0x75, 0x6c, 0x20, 0x72, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x12, 0x23, 0x0a, 0x21, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, - 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x74, 0x6f, - 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, - 0x2a, 0x12, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xaf, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, - 0x65, 0x12, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, - 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, - 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x68, 0x92, 0x41, - 0x4b, 0x0a, 0x06, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x0b, 0x47, 0x65, 0x74, 0x20, 0x61, - 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x2a, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, - 0x61, 0x6e, 0x20, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x47, 0x41, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x20, 0x62, 0x79, 0x20, 0x69, 0x74, 0x73, 0x20, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, - 0x65, 0x72, 0x2a, 0x08, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x14, 0x12, 0x12, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa9, 0x02, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, - 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, - 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdb, 0x01, 0x92, 0x41, 0xc8, 0x01, 0x0a, 0x06, 0x53, 0x74, 0x6f, - 0x72, 0x65, 0x73, 0x12, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x73, 0x1a, 0xa0, 0x01, 0x52, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, - 0x20, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, - 0x6f, 0x66, 0x20, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x47, 0x41, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, - 0x74, 0x20, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x73, 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, - 0x20, 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, - 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2e, 0x0a, 0x2a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, - 0x72, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x09, 0x12, 0x07, 0x2f, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x73, 0x12, 0x80, 0x05, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x65, 0x64, 0x4c, - 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x65, 0x64, - 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x95, 0x04, 0x92, 0x41, - 0xde, 0x03, 0x0a, 0x14, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, - 0x20, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x55, 0x5b, 0x45, 0x58, 0x50, 0x45, 0x52, - 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x4c, 0x5d, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, - 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x68, - 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, - 0x61, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x69, 0x74, 0x68, 0x1a, - 0xd9, 0x02, 0x54, 0x68, 0x65, 0x20, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x65, 0x64, 0x20, 0x4c, - 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x41, 0x50, 0x49, 0x20, 0x69, - 0x73, 0x20, 0x76, 0x65, 0x72, 0x79, 0x20, 0x73, 0x69, 0x6d, 0x69, 0x6c, 0x61, 0x72, 0x20, 0x74, - 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x41, 0x50, 0x49, 0x2c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, - 0x74, 0x77, 0x6f, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x73, 0x3a, - 0x20, 0x0a, 0x31, 0x2e, 0x20, 0x49, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6f, 0x66, 0x20, - 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6f, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x72, 0x65, - 0x74, 0x75, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x2c, 0x20, 0x69, 0x74, 0x20, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x73, 0x20, 0x74, - 0x68, 0x65, 0x6d, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x61, 0x72, 0x65, 0x20, 0x63, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, 0x20, 0x0a, 0x32, 0x2e, 0x20, 0x54, 0x68, 0x65, - 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x73, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, 0x64, 0x20, 0x69, 0x73, 0x20, 0x6f, - 0x6e, 0x6c, 0x79, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, - 0x68, 0x65, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x69, 0x6d, - 0x65, 0x6f, 0x75, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, - 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6c, 0x61, 0x67, 0x20, 0x4f, 0x50, 0x45, 0x4e, 0x46, - 0x47, 0x41, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x53, 0x5f, - 0x44, 0x45, 0x41, 0x44, 0x4c, 0x49, 0x4e, 0x45, 0x2e, 0x20, 0x0a, 0x2a, 0x13, 0x53, 0x74, 0x72, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x2a, 0x12, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, + 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xaf, 0x01, 0x0a, 0x08, 0x47, + 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x1b, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, + 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x68, 0x92, 0x41, 0x4b, 0x0a, 0x06, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, + 0x0b, 0x47, 0x65, 0x74, 0x20, 0x61, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x1a, 0x2a, 0x52, 0x65, + 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x47, 0x41, + 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x20, 0x62, 0x79, 0x20, 0x69, 0x74, 0x73, 0x20, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x2a, 0x08, 0x47, 0x65, 0x74, 0x53, 0x74, 0x6f, + 0x72, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, + 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa9, 0x02, 0x0a, + 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x1d, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, + 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6f, 0x70, 0x65, + 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdb, 0x01, 0x92, 0x41, 0xc8, + 0x01, 0x0a, 0x06, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x20, + 0x61, 0x6c, 0x6c, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x1a, 0xa0, 0x01, 0x52, 0x65, 0x74, + 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x20, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x65, 0x64, + 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x4f, 0x70, 0x65, 0x6e, 0x46, 0x47, 0x41, + 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20, 0x63, 0x6f, + 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x20, 0x74, 0x6f, 0x20, 0x67, 0x65, 0x74, 0x20, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x63, + 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x20, + 0x69, 0x66, 0x20, 0x74, 0x68, 0x65, 0x72, 0x65, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6e, 0x6f, 0x20, + 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2e, 0x0a, 0x2a, 0x0a, 0x4c, + 0x69, 0x73, 0x74, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x09, 0x12, + 0x07, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x80, 0x05, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x3a, 0x01, 0x2a, 0x22, 0x28, 0x2f, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x65, 0x64, 0x2d, 0x6c, 0x69, 0x73, 0x74, 0x2d, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x30, 0x01, 0x12, 0xf2, 0x08, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x1e, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa1, 0x08, 0x92, 0x41, 0xf3, 0x07, 0x0a, 0x14, 0x52, - 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x51, 0x75, 0x65, 0x72, - 0x69, 0x65, 0x73, 0x12, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, - 0x65, 0x6e, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x20, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x69, 0x74, 0x68, 0x1a, 0x87, 0x07, 0x54, 0x68, 0x65, 0x20, - 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x41, 0x50, 0x49, 0x20, - 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, - 0x66, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x12, 0x26, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, + 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x69, + 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x95, 0x04, 0x92, 0x41, 0xde, 0x03, 0x0a, 0x14, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x20, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x55, + 0x5b, 0x45, 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x41, 0x4c, 0x5d, 0x20, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x77, 0x69, 0x74, 0x68, 0x2e, 0x20, 0x54, 0x6f, 0x20, 0x61, 0x63, 0x68, 0x69, 0x65, 0x76, - 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2c, 0x20, 0x62, 0x6f, 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x61, 0x72, 0x65, 0x20, 0x75, 0x73, - 0x65, 0x64, 0x2e, 0x0a, 0x41, 0x6e, 0x20, 0x60, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x60, 0x20, - 0x6d, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6f, 0x64, 0x79, 0x2e, 0x20, 0x49, 0x66, - 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, - 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, - 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x49, 0x44, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, - 0x75, 0x73, 0x65, 0x64, 0x2e, 0x20, 0x49, 0x74, 0x20, 0x69, 0x73, 0x20, 0x73, 0x74, 0x72, 0x6f, - 0x6e, 0x67, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, - 0x20, 0x74, 0x6f, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x79, 0x20, 0x61, 0x75, 0x74, 0x68, + 0x20, 0x77, 0x69, 0x74, 0x68, 0x1a, 0xd9, 0x02, 0x54, 0x68, 0x65, 0x20, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x65, 0x64, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x20, 0x41, 0x50, 0x49, 0x20, 0x69, 0x73, 0x20, 0x76, 0x65, 0x72, 0x79, 0x20, 0x73, 0x69, 0x6d, + 0x69, 0x6c, 0x61, 0x72, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x41, 0x50, 0x49, 0x2c, + 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x74, 0x77, 0x6f, 0x20, 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, + 0x65, 0x6e, 0x63, 0x65, 0x73, 0x3a, 0x20, 0x0a, 0x31, 0x2e, 0x20, 0x49, 0x6e, 0x73, 0x74, 0x65, + 0x61, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6e, 0x67, + 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x62, 0x65, 0x66, + 0x6f, 0x72, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, + 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2c, 0x20, 0x69, 0x74, 0x20, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x73, 0x20, 0x74, 0x68, 0x65, 0x6d, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, + 0x61, 0x72, 0x65, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x2e, 0x20, 0x0a, + 0x32, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, + 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x65, + 0x64, 0x20, 0x69, 0x73, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, + 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, + 0x6f, 0x6e, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6c, 0x61, 0x67, + 0x20, 0x4f, 0x50, 0x45, 0x4e, 0x46, 0x47, 0x41, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x4f, 0x42, + 0x4a, 0x45, 0x43, 0x54, 0x53, 0x5f, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x49, 0x4e, 0x45, 0x2e, 0x20, + 0x0a, 0x2a, 0x13, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x65, 0x64, 0x4c, 0x69, 0x73, 0x74, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x3a, 0x01, 0x2a, 0x22, + 0x28, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x65, 0x64, 0x2d, 0x6c, 0x69, 0x73, + 0x74, 0x2d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x30, 0x01, 0x12, 0xf2, 0x08, 0x0a, 0x0b, + 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x1e, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa1, 0x08, 0x92, + 0x41, 0xf3, 0x07, 0x0a, 0x14, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, + 0x70, 0x20, 0x51, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x44, 0x4c, 0x69, 0x73, 0x74, 0x20, + 0x61, 0x6c, 0x6c, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, + 0x61, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x69, 0x74, 0x68, 0x1a, + 0x87, 0x07, 0x54, 0x68, 0x65, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x20, 0x41, 0x50, 0x49, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x20, 0x61, 0x20, + 0x6c, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, + 0x69, 0x76, 0x65, 0x6e, 0x20, 0x74, 0x79, 0x70, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x75, 0x73, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x20, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x69, 0x74, 0x68, 0x2e, 0x20, 0x54, 0x6f, 0x20, + 0x61, 0x63, 0x68, 0x69, 0x65, 0x76, 0x65, 0x20, 0x74, 0x68, 0x69, 0x73, 0x2c, 0x20, 0x62, 0x6f, + 0x74, 0x68, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x20, 0x74, 0x75, 0x70, + 0x6c, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, - 0x69, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x62, 0x65, 0x74, 0x74, 0x65, 0x72, 0x20, 0x70, 0x65, - 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x2e, 0x0a, 0x59, 0x6f, 0x75, 0x20, 0x6d, - 0x61, 0x79, 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x79, 0x20, - 0x60, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x74, 0x75, 0x70, 0x6c, - 0x65, 0x73, 0x60, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, - 0x20, 0x74, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x72, 0x65, 0x67, 0x75, - 0x6c, 0x61, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, - 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, - 0x64, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x61, 0x6e, 0x20, - 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x22, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x22, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x20, 0x6f, 0x66, 0x20, - 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x61, 0x6e, 0x64, - 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x73, 0x74, - 0x72, 0x69, 0x6e, 0x67, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x60, 0x3c, 0x74, 0x79, 0x70, - 0x65, 0x3e, 0x3a, 0x3c, 0x69, 0x64, 0x3e, 0x60, 0x20, 0x28, 0x65, 0x2e, 0x67, 0x2e, 0x20, 0x22, - 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x72, 0x6f, 0x61, 0x64, 0x6d, 0x61, 0x70, - 0x22, 0x29, 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, - 0x66, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, - 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, - 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x20, - 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, - 0x20, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6c, 0x61, 0x67, 0x20, 0x4f, - 0x50, 0x45, 0x4e, 0x46, 0x47, 0x41, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x4f, 0x42, 0x4a, 0x45, - 0x43, 0x54, 0x53, 0x5f, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x49, 0x4e, 0x45, 0x20, 0x61, 0x6e, 0x64, - 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, 0x70, 0x65, 0x72, 0x20, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, - 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6c, 0x61, 0x67, 0x20, 0x4f, 0x50, 0x45, 0x4e, 0x46, 0x47, - 0x41, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x53, 0x5f, 0x4d, - 0x41, 0x58, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, 0x2c, 0x20, 0x77, 0x68, 0x69, 0x63, - 0x68, 0x65, 0x76, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x68, 0x69, 0x74, 0x20, 0x66, 0x69, 0x72, - 0x73, 0x74, 0x2e, 0x2a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x3a, 0x01, 0x2a, 0x22, 0x1f, 0x2f, 0x73, 0x74, 0x6f, 0x72, - 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x69, - 0x73, 0x74, 0x2d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x42, 0xa1, 0x01, 0x0a, 0x0e, 0x63, - 0x6f, 0x6d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x76, 0x31, 0x42, 0x13, 0x4f, - 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2f, 0x76, 0x31, 0x3b, 0x6f, 0x70, - 0x65, 0x6e, 0x66, 0x67, 0x61, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4f, 0x58, 0x58, 0xaa, 0x02, 0x0a, - 0x4f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0a, 0x4f, 0x70, 0x65, - 0x6e, 0x66, 0x67, 0x61, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x16, 0x4f, 0x70, 0x65, 0x6e, 0x66, 0x67, - 0x61, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x0b, 0x4f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x72, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x2e, 0x0a, 0x41, 0x6e, 0x20, 0x60, 0x61, 0x75, + 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x5f, 0x69, 0x64, 0x60, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x6f, + 0x64, 0x79, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x69, 0x74, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, + 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x6c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x49, 0x44, 0x20, 0x77, 0x69, + 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x2e, 0x20, 0x49, 0x74, 0x20, 0x69, + 0x73, 0x20, 0x73, 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x6c, 0x79, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x6d, + 0x6d, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x79, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x20, 0x69, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x62, 0x65, 0x74, + 0x74, 0x65, 0x72, 0x20, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x2e, + 0x0a, 0x59, 0x6f, 0x75, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x79, 0x20, 0x60, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, + 0x6c, 0x5f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x60, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x77, + 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x74, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x20, 0x61, + 0x73, 0x20, 0x72, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, + 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, 0x77, + 0x69, 0x6c, 0x6c, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, + 0x69, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x69, 0x6e, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x22, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x22, 0x20, 0x66, 0x69, 0x65, + 0x6c, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x79, 0x20, 0x77, 0x69, 0x6c, 0x6c, + 0x20, 0x62, 0x65, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x73, 0x20, 0x69, 0x6e, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, + 0x20, 0x60, 0x3c, 0x74, 0x79, 0x70, 0x65, 0x3e, 0x3a, 0x3c, 0x69, 0x64, 0x3e, 0x60, 0x20, 0x28, + 0x65, 0x2e, 0x67, 0x2e, 0x20, 0x22, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x3a, 0x72, + 0x6f, 0x61, 0x64, 0x6d, 0x61, 0x70, 0x22, 0x29, 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x20, 0x6f, 0x66, 0x20, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x20, + 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x20, + 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x20, 0x73, + 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x66, 0x6c, 0x61, 0x67, 0x20, 0x4f, 0x50, 0x45, 0x4e, 0x46, 0x47, 0x41, 0x5f, 0x4c, 0x49, 0x53, + 0x54, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x53, 0x5f, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x49, + 0x4e, 0x45, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, 0x20, 0x75, 0x70, + 0x70, 0x65, 0x72, 0x20, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x6c, 0x61, 0x67, 0x20, + 0x4f, 0x50, 0x45, 0x4e, 0x46, 0x47, 0x41, 0x5f, 0x4c, 0x49, 0x53, 0x54, 0x5f, 0x4f, 0x42, 0x4a, + 0x45, 0x43, 0x54, 0x53, 0x5f, 0x4d, 0x41, 0x58, 0x5f, 0x52, 0x45, 0x53, 0x55, 0x4c, 0x54, 0x53, + 0x2c, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x65, 0x76, 0x65, 0x72, 0x20, 0x69, 0x73, 0x20, 0x68, + 0x69, 0x74, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x2e, 0x2a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, 0x3a, 0x01, 0x2a, 0x22, + 0x1f, 0x2f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x73, 0x2f, 0x7b, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x6c, 0x69, 0x73, 0x74, 0x2d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x42, 0xa1, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, + 0x2e, 0x76, 0x31, 0x42, 0x13, 0x4f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, + 0x2f, 0x76, 0x31, 0x3b, 0x6f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x76, 0x31, 0xa2, 0x02, 0x03, + 0x4f, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x2e, 0x56, 0x31, + 0xca, 0x02, 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x16, + 0x4f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, 0x4f, 0x70, 0x65, 0x6e, 0x66, 0x67, 0x61, + 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3676,7 +3769,7 @@ func file_openfga_v1_openfga_service_proto_rawDescGZIP() []byte { return file_openfga_v1_openfga_service_proto_rawDescData } -var file_openfga_v1_openfga_service_proto_msgTypes = make([]protoimpl.MessageInfo, 34) +var file_openfga_v1_openfga_service_proto_msgTypes = make([]protoimpl.MessageInfo, 35) var file_openfga_v1_openfga_service_proto_goTypes = []interface{}{ (*ListObjectsRequest)(nil), // 0: openfga.v1.ListObjectsRequest (*ListObjectsResponse)(nil), // 1: openfga.v1.ListObjectsResponse @@ -3684,114 +3777,116 @@ var file_openfga_v1_openfga_service_proto_goTypes = []interface{}{ (*StreamedListObjectsResponse)(nil), // 3: openfga.v1.StreamedListObjectsResponse (*ReadRequest)(nil), // 4: openfga.v1.ReadRequest (*ReadResponse)(nil), // 5: openfga.v1.ReadResponse - (*WriteRequest)(nil), // 6: openfga.v1.WriteRequest - (*WriteResponse)(nil), // 7: openfga.v1.WriteResponse - (*CheckRequest)(nil), // 8: openfga.v1.CheckRequest - (*CheckResponse)(nil), // 9: openfga.v1.CheckResponse - (*ExpandRequest)(nil), // 10: openfga.v1.ExpandRequest - (*ExpandResponse)(nil), // 11: openfga.v1.ExpandResponse - (*ReadAuthorizationModelRequest)(nil), // 12: openfga.v1.ReadAuthorizationModelRequest - (*ReadAuthorizationModelResponse)(nil), // 13: openfga.v1.ReadAuthorizationModelResponse - (*WriteAuthorizationModelRequest)(nil), // 14: openfga.v1.WriteAuthorizationModelRequest - (*WriteAuthorizationModelResponse)(nil), // 15: openfga.v1.WriteAuthorizationModelResponse - (*ReadAuthorizationModelsRequest)(nil), // 16: openfga.v1.ReadAuthorizationModelsRequest - (*ReadAuthorizationModelsResponse)(nil), // 17: openfga.v1.ReadAuthorizationModelsResponse - (*WriteAssertionsRequest)(nil), // 18: openfga.v1.WriteAssertionsRequest - (*WriteAssertionsResponse)(nil), // 19: openfga.v1.WriteAssertionsResponse - (*ReadAssertionsRequest)(nil), // 20: openfga.v1.ReadAssertionsRequest - (*ReadAssertionsResponse)(nil), // 21: openfga.v1.ReadAssertionsResponse - (*ReadChangesRequest)(nil), // 22: openfga.v1.ReadChangesRequest - (*ReadChangesResponse)(nil), // 23: openfga.v1.ReadChangesResponse - (*CreateStoreRequest)(nil), // 24: openfga.v1.CreateStoreRequest - (*CreateStoreResponse)(nil), // 25: openfga.v1.CreateStoreResponse - (*UpdateStoreRequest)(nil), // 26: openfga.v1.UpdateStoreRequest - (*UpdateStoreResponse)(nil), // 27: openfga.v1.UpdateStoreResponse - (*DeleteStoreRequest)(nil), // 28: openfga.v1.DeleteStoreRequest - (*DeleteStoreResponse)(nil), // 29: openfga.v1.DeleteStoreResponse - (*GetStoreRequest)(nil), // 30: openfga.v1.GetStoreRequest - (*GetStoreResponse)(nil), // 31: openfga.v1.GetStoreResponse - (*ListStoresRequest)(nil), // 32: openfga.v1.ListStoresRequest - (*ListStoresResponse)(nil), // 33: openfga.v1.ListStoresResponse - (*ContextualTupleKeys)(nil), // 34: openfga.v1.ContextualTupleKeys - (*TupleKey)(nil), // 35: openfga.v1.TupleKey - (*wrapperspb.Int32Value)(nil), // 36: google.protobuf.Int32Value - (*Tuple)(nil), // 37: openfga.v1.Tuple - (*TupleKeys)(nil), // 38: openfga.v1.TupleKeys - (*UsersetTree)(nil), // 39: openfga.v1.UsersetTree - (*AuthorizationModel)(nil), // 40: openfga.v1.AuthorizationModel - (*TypeDefinition)(nil), // 41: openfga.v1.TypeDefinition - (*Assertion)(nil), // 42: openfga.v1.Assertion - (*TupleChange)(nil), // 43: openfga.v1.TupleChange - (*timestamppb.Timestamp)(nil), // 44: google.protobuf.Timestamp - (*Store)(nil), // 45: openfga.v1.Store + (*WriteRequestTupleKey)(nil), // 6: openfga.v1.WriteRequestTupleKey + (*WriteRequest)(nil), // 7: openfga.v1.WriteRequest + (*WriteResponse)(nil), // 8: openfga.v1.WriteResponse + (*CheckRequest)(nil), // 9: openfga.v1.CheckRequest + (*CheckResponse)(nil), // 10: openfga.v1.CheckResponse + (*ExpandRequest)(nil), // 11: openfga.v1.ExpandRequest + (*ExpandResponse)(nil), // 12: openfga.v1.ExpandResponse + (*ReadAuthorizationModelRequest)(nil), // 13: openfga.v1.ReadAuthorizationModelRequest + (*ReadAuthorizationModelResponse)(nil), // 14: openfga.v1.ReadAuthorizationModelResponse + (*WriteAuthorizationModelRequest)(nil), // 15: openfga.v1.WriteAuthorizationModelRequest + (*WriteAuthorizationModelResponse)(nil), // 16: openfga.v1.WriteAuthorizationModelResponse + (*ReadAuthorizationModelsRequest)(nil), // 17: openfga.v1.ReadAuthorizationModelsRequest + (*ReadAuthorizationModelsResponse)(nil), // 18: openfga.v1.ReadAuthorizationModelsResponse + (*WriteAssertionsRequest)(nil), // 19: openfga.v1.WriteAssertionsRequest + (*WriteAssertionsResponse)(nil), // 20: openfga.v1.WriteAssertionsResponse + (*ReadAssertionsRequest)(nil), // 21: openfga.v1.ReadAssertionsRequest + (*ReadAssertionsResponse)(nil), // 22: openfga.v1.ReadAssertionsResponse + (*ReadChangesRequest)(nil), // 23: openfga.v1.ReadChangesRequest + (*ReadChangesResponse)(nil), // 24: openfga.v1.ReadChangesResponse + (*CreateStoreRequest)(nil), // 25: openfga.v1.CreateStoreRequest + (*CreateStoreResponse)(nil), // 26: openfga.v1.CreateStoreResponse + (*UpdateStoreRequest)(nil), // 27: openfga.v1.UpdateStoreRequest + (*UpdateStoreResponse)(nil), // 28: openfga.v1.UpdateStoreResponse + (*DeleteStoreRequest)(nil), // 29: openfga.v1.DeleteStoreRequest + (*DeleteStoreResponse)(nil), // 30: openfga.v1.DeleteStoreResponse + (*GetStoreRequest)(nil), // 31: openfga.v1.GetStoreRequest + (*GetStoreResponse)(nil), // 32: openfga.v1.GetStoreResponse + (*ListStoresRequest)(nil), // 33: openfga.v1.ListStoresRequest + (*ListStoresResponse)(nil), // 34: openfga.v1.ListStoresResponse + (*ContextualTupleKeys)(nil), // 35: openfga.v1.ContextualTupleKeys + (*TupleKey)(nil), // 36: openfga.v1.TupleKey + (*wrapperspb.Int32Value)(nil), // 37: google.protobuf.Int32Value + (*Tuple)(nil), // 38: openfga.v1.Tuple + (*RelationshipCondition)(nil), // 39: openfga.v1.RelationshipCondition + (*UsersetTree)(nil), // 40: openfga.v1.UsersetTree + (*AuthorizationModel)(nil), // 41: openfga.v1.AuthorizationModel + (*TypeDefinition)(nil), // 42: openfga.v1.TypeDefinition + (*Assertion)(nil), // 43: openfga.v1.Assertion + (*TupleChange)(nil), // 44: openfga.v1.TupleChange + (*timestamppb.Timestamp)(nil), // 45: google.protobuf.Timestamp + (*Store)(nil), // 46: openfga.v1.Store } var file_openfga_v1_openfga_service_proto_depIdxs = []int32{ - 34, // 0: openfga.v1.ListObjectsRequest.contextual_tuples:type_name -> openfga.v1.ContextualTupleKeys - 34, // 1: openfga.v1.StreamedListObjectsRequest.contextual_tuples:type_name -> openfga.v1.ContextualTupleKeys - 35, // 2: openfga.v1.ReadRequest.tuple_key:type_name -> openfga.v1.TupleKey - 36, // 3: openfga.v1.ReadRequest.page_size:type_name -> google.protobuf.Int32Value - 37, // 4: openfga.v1.ReadResponse.tuples:type_name -> openfga.v1.Tuple - 38, // 5: openfga.v1.WriteRequest.writes:type_name -> openfga.v1.TupleKeys - 38, // 6: openfga.v1.WriteRequest.deletes:type_name -> openfga.v1.TupleKeys - 35, // 7: openfga.v1.CheckRequest.tuple_key:type_name -> openfga.v1.TupleKey - 34, // 8: openfga.v1.CheckRequest.contextual_tuples:type_name -> openfga.v1.ContextualTupleKeys - 35, // 9: openfga.v1.ExpandRequest.tuple_key:type_name -> openfga.v1.TupleKey - 39, // 10: openfga.v1.ExpandResponse.tree:type_name -> openfga.v1.UsersetTree - 40, // 11: openfga.v1.ReadAuthorizationModelResponse.authorization_model:type_name -> openfga.v1.AuthorizationModel - 41, // 12: openfga.v1.WriteAuthorizationModelRequest.type_definitions:type_name -> openfga.v1.TypeDefinition - 36, // 13: openfga.v1.ReadAuthorizationModelsRequest.page_size:type_name -> google.protobuf.Int32Value - 40, // 14: openfga.v1.ReadAuthorizationModelsResponse.authorization_models:type_name -> openfga.v1.AuthorizationModel - 42, // 15: openfga.v1.WriteAssertionsRequest.assertions:type_name -> openfga.v1.Assertion - 42, // 16: openfga.v1.ReadAssertionsResponse.assertions:type_name -> openfga.v1.Assertion - 36, // 17: openfga.v1.ReadChangesRequest.page_size:type_name -> google.protobuf.Int32Value - 43, // 18: openfga.v1.ReadChangesResponse.changes:type_name -> openfga.v1.TupleChange - 44, // 19: openfga.v1.CreateStoreResponse.created_at:type_name -> google.protobuf.Timestamp - 44, // 20: openfga.v1.CreateStoreResponse.updated_at:type_name -> google.protobuf.Timestamp - 44, // 21: openfga.v1.UpdateStoreResponse.created_at:type_name -> google.protobuf.Timestamp - 44, // 22: openfga.v1.UpdateStoreResponse.updated_at:type_name -> google.protobuf.Timestamp - 44, // 23: openfga.v1.GetStoreResponse.created_at:type_name -> google.protobuf.Timestamp - 44, // 24: openfga.v1.GetStoreResponse.updated_at:type_name -> google.protobuf.Timestamp - 36, // 25: openfga.v1.ListStoresRequest.page_size:type_name -> google.protobuf.Int32Value - 45, // 26: openfga.v1.ListStoresResponse.stores:type_name -> openfga.v1.Store - 4, // 27: openfga.v1.OpenFGAService.Read:input_type -> openfga.v1.ReadRequest - 6, // 28: openfga.v1.OpenFGAService.Write:input_type -> openfga.v1.WriteRequest - 8, // 29: openfga.v1.OpenFGAService.Check:input_type -> openfga.v1.CheckRequest - 10, // 30: openfga.v1.OpenFGAService.Expand:input_type -> openfga.v1.ExpandRequest - 16, // 31: openfga.v1.OpenFGAService.ReadAuthorizationModels:input_type -> openfga.v1.ReadAuthorizationModelsRequest - 12, // 32: openfga.v1.OpenFGAService.ReadAuthorizationModel:input_type -> openfga.v1.ReadAuthorizationModelRequest - 14, // 33: openfga.v1.OpenFGAService.WriteAuthorizationModel:input_type -> openfga.v1.WriteAuthorizationModelRequest - 18, // 34: openfga.v1.OpenFGAService.WriteAssertions:input_type -> openfga.v1.WriteAssertionsRequest - 20, // 35: openfga.v1.OpenFGAService.ReadAssertions:input_type -> openfga.v1.ReadAssertionsRequest - 22, // 36: openfga.v1.OpenFGAService.ReadChanges:input_type -> openfga.v1.ReadChangesRequest - 24, // 37: openfga.v1.OpenFGAService.CreateStore:input_type -> openfga.v1.CreateStoreRequest - 26, // 38: openfga.v1.OpenFGAService.UpdateStore:input_type -> openfga.v1.UpdateStoreRequest - 28, // 39: openfga.v1.OpenFGAService.DeleteStore:input_type -> openfga.v1.DeleteStoreRequest - 30, // 40: openfga.v1.OpenFGAService.GetStore:input_type -> openfga.v1.GetStoreRequest - 32, // 41: openfga.v1.OpenFGAService.ListStores:input_type -> openfga.v1.ListStoresRequest - 2, // 42: openfga.v1.OpenFGAService.StreamedListObjects:input_type -> openfga.v1.StreamedListObjectsRequest - 0, // 43: openfga.v1.OpenFGAService.ListObjects:input_type -> openfga.v1.ListObjectsRequest - 5, // 44: openfga.v1.OpenFGAService.Read:output_type -> openfga.v1.ReadResponse - 7, // 45: openfga.v1.OpenFGAService.Write:output_type -> openfga.v1.WriteResponse - 9, // 46: openfga.v1.OpenFGAService.Check:output_type -> openfga.v1.CheckResponse - 11, // 47: openfga.v1.OpenFGAService.Expand:output_type -> openfga.v1.ExpandResponse - 17, // 48: openfga.v1.OpenFGAService.ReadAuthorizationModels:output_type -> openfga.v1.ReadAuthorizationModelsResponse - 13, // 49: openfga.v1.OpenFGAService.ReadAuthorizationModel:output_type -> openfga.v1.ReadAuthorizationModelResponse - 15, // 50: openfga.v1.OpenFGAService.WriteAuthorizationModel:output_type -> openfga.v1.WriteAuthorizationModelResponse - 19, // 51: openfga.v1.OpenFGAService.WriteAssertions:output_type -> openfga.v1.WriteAssertionsResponse - 21, // 52: openfga.v1.OpenFGAService.ReadAssertions:output_type -> openfga.v1.ReadAssertionsResponse - 23, // 53: openfga.v1.OpenFGAService.ReadChanges:output_type -> openfga.v1.ReadChangesResponse - 25, // 54: openfga.v1.OpenFGAService.CreateStore:output_type -> openfga.v1.CreateStoreResponse - 27, // 55: openfga.v1.OpenFGAService.UpdateStore:output_type -> openfga.v1.UpdateStoreResponse - 29, // 56: openfga.v1.OpenFGAService.DeleteStore:output_type -> openfga.v1.DeleteStoreResponse - 31, // 57: openfga.v1.OpenFGAService.GetStore:output_type -> openfga.v1.GetStoreResponse - 33, // 58: openfga.v1.OpenFGAService.ListStores:output_type -> openfga.v1.ListStoresResponse - 3, // 59: openfga.v1.OpenFGAService.StreamedListObjects:output_type -> openfga.v1.StreamedListObjectsResponse - 1, // 60: openfga.v1.OpenFGAService.ListObjects:output_type -> openfga.v1.ListObjectsResponse - 44, // [44:61] is the sub-list for method output_type - 27, // [27:44] is the sub-list for method input_type - 27, // [27:27] is the sub-list for extension type_name - 27, // [27:27] is the sub-list for extension extendee - 0, // [0:27] is the sub-list for field type_name + 35, // 0: openfga.v1.ListObjectsRequest.contextual_tuples:type_name -> openfga.v1.ContextualTupleKeys + 35, // 1: openfga.v1.StreamedListObjectsRequest.contextual_tuples:type_name -> openfga.v1.ContextualTupleKeys + 36, // 2: openfga.v1.ReadRequest.tuple_key:type_name -> openfga.v1.TupleKey + 37, // 3: openfga.v1.ReadRequest.page_size:type_name -> google.protobuf.Int32Value + 38, // 4: openfga.v1.ReadResponse.tuples:type_name -> openfga.v1.Tuple + 39, // 5: openfga.v1.WriteRequestTupleKey.condition:type_name -> openfga.v1.RelationshipCondition + 6, // 6: openfga.v1.WriteRequest.writes:type_name -> openfga.v1.WriteRequestTupleKey + 6, // 7: openfga.v1.WriteRequest.deletes:type_name -> openfga.v1.WriteRequestTupleKey + 36, // 8: openfga.v1.CheckRequest.tuple_key:type_name -> openfga.v1.TupleKey + 35, // 9: openfga.v1.CheckRequest.contextual_tuples:type_name -> openfga.v1.ContextualTupleKeys + 36, // 10: openfga.v1.ExpandRequest.tuple_key:type_name -> openfga.v1.TupleKey + 40, // 11: openfga.v1.ExpandResponse.tree:type_name -> openfga.v1.UsersetTree + 41, // 12: openfga.v1.ReadAuthorizationModelResponse.authorization_model:type_name -> openfga.v1.AuthorizationModel + 42, // 13: openfga.v1.WriteAuthorizationModelRequest.type_definitions:type_name -> openfga.v1.TypeDefinition + 37, // 14: openfga.v1.ReadAuthorizationModelsRequest.page_size:type_name -> google.protobuf.Int32Value + 41, // 15: openfga.v1.ReadAuthorizationModelsResponse.authorization_models:type_name -> openfga.v1.AuthorizationModel + 43, // 16: openfga.v1.WriteAssertionsRequest.assertions:type_name -> openfga.v1.Assertion + 43, // 17: openfga.v1.ReadAssertionsResponse.assertions:type_name -> openfga.v1.Assertion + 37, // 18: openfga.v1.ReadChangesRequest.page_size:type_name -> google.protobuf.Int32Value + 44, // 19: openfga.v1.ReadChangesResponse.changes:type_name -> openfga.v1.TupleChange + 45, // 20: openfga.v1.CreateStoreResponse.created_at:type_name -> google.protobuf.Timestamp + 45, // 21: openfga.v1.CreateStoreResponse.updated_at:type_name -> google.protobuf.Timestamp + 45, // 22: openfga.v1.UpdateStoreResponse.created_at:type_name -> google.protobuf.Timestamp + 45, // 23: openfga.v1.UpdateStoreResponse.updated_at:type_name -> google.protobuf.Timestamp + 45, // 24: openfga.v1.GetStoreResponse.created_at:type_name -> google.protobuf.Timestamp + 45, // 25: openfga.v1.GetStoreResponse.updated_at:type_name -> google.protobuf.Timestamp + 37, // 26: openfga.v1.ListStoresRequest.page_size:type_name -> google.protobuf.Int32Value + 46, // 27: openfga.v1.ListStoresResponse.stores:type_name -> openfga.v1.Store + 4, // 28: openfga.v1.OpenFGAService.Read:input_type -> openfga.v1.ReadRequest + 7, // 29: openfga.v1.OpenFGAService.Write:input_type -> openfga.v1.WriteRequest + 9, // 30: openfga.v1.OpenFGAService.Check:input_type -> openfga.v1.CheckRequest + 11, // 31: openfga.v1.OpenFGAService.Expand:input_type -> openfga.v1.ExpandRequest + 17, // 32: openfga.v1.OpenFGAService.ReadAuthorizationModels:input_type -> openfga.v1.ReadAuthorizationModelsRequest + 13, // 33: openfga.v1.OpenFGAService.ReadAuthorizationModel:input_type -> openfga.v1.ReadAuthorizationModelRequest + 15, // 34: openfga.v1.OpenFGAService.WriteAuthorizationModel:input_type -> openfga.v1.WriteAuthorizationModelRequest + 19, // 35: openfga.v1.OpenFGAService.WriteAssertions:input_type -> openfga.v1.WriteAssertionsRequest + 21, // 36: openfga.v1.OpenFGAService.ReadAssertions:input_type -> openfga.v1.ReadAssertionsRequest + 23, // 37: openfga.v1.OpenFGAService.ReadChanges:input_type -> openfga.v1.ReadChangesRequest + 25, // 38: openfga.v1.OpenFGAService.CreateStore:input_type -> openfga.v1.CreateStoreRequest + 27, // 39: openfga.v1.OpenFGAService.UpdateStore:input_type -> openfga.v1.UpdateStoreRequest + 29, // 40: openfga.v1.OpenFGAService.DeleteStore:input_type -> openfga.v1.DeleteStoreRequest + 31, // 41: openfga.v1.OpenFGAService.GetStore:input_type -> openfga.v1.GetStoreRequest + 33, // 42: openfga.v1.OpenFGAService.ListStores:input_type -> openfga.v1.ListStoresRequest + 2, // 43: openfga.v1.OpenFGAService.StreamedListObjects:input_type -> openfga.v1.StreamedListObjectsRequest + 0, // 44: openfga.v1.OpenFGAService.ListObjects:input_type -> openfga.v1.ListObjectsRequest + 5, // 45: openfga.v1.OpenFGAService.Read:output_type -> openfga.v1.ReadResponse + 8, // 46: openfga.v1.OpenFGAService.Write:output_type -> openfga.v1.WriteResponse + 10, // 47: openfga.v1.OpenFGAService.Check:output_type -> openfga.v1.CheckResponse + 12, // 48: openfga.v1.OpenFGAService.Expand:output_type -> openfga.v1.ExpandResponse + 18, // 49: openfga.v1.OpenFGAService.ReadAuthorizationModels:output_type -> openfga.v1.ReadAuthorizationModelsResponse + 14, // 50: openfga.v1.OpenFGAService.ReadAuthorizationModel:output_type -> openfga.v1.ReadAuthorizationModelResponse + 16, // 51: openfga.v1.OpenFGAService.WriteAuthorizationModel:output_type -> openfga.v1.WriteAuthorizationModelResponse + 20, // 52: openfga.v1.OpenFGAService.WriteAssertions:output_type -> openfga.v1.WriteAssertionsResponse + 22, // 53: openfga.v1.OpenFGAService.ReadAssertions:output_type -> openfga.v1.ReadAssertionsResponse + 24, // 54: openfga.v1.OpenFGAService.ReadChanges:output_type -> openfga.v1.ReadChangesResponse + 26, // 55: openfga.v1.OpenFGAService.CreateStore:output_type -> openfga.v1.CreateStoreResponse + 28, // 56: openfga.v1.OpenFGAService.UpdateStore:output_type -> openfga.v1.UpdateStoreResponse + 30, // 57: openfga.v1.OpenFGAService.DeleteStore:output_type -> openfga.v1.DeleteStoreResponse + 32, // 58: openfga.v1.OpenFGAService.GetStore:output_type -> openfga.v1.GetStoreResponse + 34, // 59: openfga.v1.OpenFGAService.ListStores:output_type -> openfga.v1.ListStoresResponse + 3, // 60: openfga.v1.OpenFGAService.StreamedListObjects:output_type -> openfga.v1.StreamedListObjectsResponse + 1, // 61: openfga.v1.OpenFGAService.ListObjects:output_type -> openfga.v1.ListObjectsResponse + 45, // [45:62] is the sub-list for method output_type + 28, // [28:45] is the sub-list for method input_type + 28, // [28:28] is the sub-list for extension type_name + 28, // [28:28] is the sub-list for extension extendee + 0, // [0:28] is the sub-list for field type_name } func init() { file_openfga_v1_openfga_service_proto_init() } @@ -3875,7 +3970,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WriteRequest); i { + switch v := v.(*WriteRequestTupleKey); i { case 0: return &v.state case 1: @@ -3887,7 +3982,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WriteResponse); i { + switch v := v.(*WriteRequest); i { case 0: return &v.state case 1: @@ -3899,7 +3994,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CheckRequest); i { + switch v := v.(*WriteResponse); i { case 0: return &v.state case 1: @@ -3911,7 +4006,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CheckResponse); i { + switch v := v.(*CheckRequest); i { case 0: return &v.state case 1: @@ -3923,7 +4018,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExpandRequest); i { + switch v := v.(*CheckResponse); i { case 0: return &v.state case 1: @@ -3935,7 +4030,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ExpandResponse); i { + switch v := v.(*ExpandRequest); i { case 0: return &v.state case 1: @@ -3947,7 +4042,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReadAuthorizationModelRequest); i { + switch v := v.(*ExpandResponse); i { case 0: return &v.state case 1: @@ -3959,7 +4054,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReadAuthorizationModelResponse); i { + switch v := v.(*ReadAuthorizationModelRequest); i { case 0: return &v.state case 1: @@ -3971,7 +4066,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WriteAuthorizationModelRequest); i { + switch v := v.(*ReadAuthorizationModelResponse); i { case 0: return &v.state case 1: @@ -3983,7 +4078,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WriteAuthorizationModelResponse); i { + switch v := v.(*WriteAuthorizationModelRequest); i { case 0: return &v.state case 1: @@ -3995,7 +4090,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReadAuthorizationModelsRequest); i { + switch v := v.(*WriteAuthorizationModelResponse); i { case 0: return &v.state case 1: @@ -4007,7 +4102,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReadAuthorizationModelsResponse); i { + switch v := v.(*ReadAuthorizationModelsRequest); i { case 0: return &v.state case 1: @@ -4019,7 +4114,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WriteAssertionsRequest); i { + switch v := v.(*ReadAuthorizationModelsResponse); i { case 0: return &v.state case 1: @@ -4031,7 +4126,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WriteAssertionsResponse); i { + switch v := v.(*WriteAssertionsRequest); i { case 0: return &v.state case 1: @@ -4043,7 +4138,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReadAssertionsRequest); i { + switch v := v.(*WriteAssertionsResponse); i { case 0: return &v.state case 1: @@ -4055,7 +4150,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReadAssertionsResponse); i { + switch v := v.(*ReadAssertionsRequest); i { case 0: return &v.state case 1: @@ -4067,7 +4162,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReadChangesRequest); i { + switch v := v.(*ReadAssertionsResponse); i { case 0: return &v.state case 1: @@ -4079,7 +4174,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReadChangesResponse); i { + switch v := v.(*ReadChangesRequest); i { case 0: return &v.state case 1: @@ -4091,7 +4186,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateStoreRequest); i { + switch v := v.(*ReadChangesResponse); i { case 0: return &v.state case 1: @@ -4103,7 +4198,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateStoreResponse); i { + switch v := v.(*CreateStoreRequest); i { case 0: return &v.state case 1: @@ -4115,7 +4210,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateStoreRequest); i { + switch v := v.(*CreateStoreResponse); i { case 0: return &v.state case 1: @@ -4127,7 +4222,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateStoreResponse); i { + switch v := v.(*UpdateStoreRequest); i { case 0: return &v.state case 1: @@ -4139,7 +4234,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteStoreRequest); i { + switch v := v.(*UpdateStoreResponse); i { case 0: return &v.state case 1: @@ -4151,7 +4246,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteStoreResponse); i { + switch v := v.(*DeleteStoreRequest); i { case 0: return &v.state case 1: @@ -4163,7 +4258,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetStoreRequest); i { + switch v := v.(*DeleteStoreResponse); i { case 0: return &v.state case 1: @@ -4175,7 +4270,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetStoreResponse); i { + switch v := v.(*GetStoreRequest); i { case 0: return &v.state case 1: @@ -4187,7 +4282,7 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ListStoresRequest); i { + switch v := v.(*GetStoreResponse); i { case 0: return &v.state case 1: @@ -4199,6 +4294,18 @@ func file_openfga_v1_openfga_service_proto_init() { } } file_openfga_v1_openfga_service_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListStoresRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_openfga_v1_openfga_service_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListStoresResponse); i { case 0: return &v.state @@ -4217,7 +4324,7 @@ func file_openfga_v1_openfga_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_openfga_v1_openfga_service_proto_rawDesc, NumEnums: 0, - NumMessages: 34, + NumMessages: 35, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/openfga/v1/openfga_service.pb.validate.go b/proto/openfga/v1/openfga_service.pb.validate.go index 7f69a8da..df13ca3f 100644 --- a/proto/openfga/v1/openfga_service.pb.validate.go +++ b/proto/openfga/v1/openfga_service.pb.validate.go @@ -949,32 +949,32 @@ var _ interface { ErrorName() string } = ReadResponseValidationError{} -// Validate checks the field values on WriteRequest with the rules defined in -// the proto definition for this message. If any rules are violated, the first -// error encountered is returned, or nil if there are no violations. -func (m *WriteRequest) Validate() error { +// Validate checks the field values on WriteRequestTupleKey with the rules +// defined in the proto definition for this message. If any rules are +// violated, the first error encountered is returned, or nil if there are no violations. +func (m *WriteRequestTupleKey) Validate() error { return m.validate(false) } -// ValidateAll checks the field values on WriteRequest with the rules defined -// in the proto definition for this message. If any rules are violated, the -// result is a list of violation errors wrapped in WriteRequestMultiError, or -// nil if none found. -func (m *WriteRequest) ValidateAll() error { +// ValidateAll checks the field values on WriteRequestTupleKey with the rules +// defined in the proto definition for this message. If any rules are +// violated, the result is a list of violation errors wrapped in +// WriteRequestTupleKeyMultiError, or nil if none found. +func (m *WriteRequestTupleKey) ValidateAll() error { return m.validate(true) } -func (m *WriteRequest) validate(all bool) error { +func (m *WriteRequestTupleKey) validate(all bool) error { if m == nil { return nil } var errors []error - if !_WriteRequest_StoreId_Pattern.MatchString(m.GetStoreId()) { - err := WriteRequestValidationError{ - field: "StoreId", - reason: "value does not match regex pattern \"^[ABCDEFGHJKMNPQRSTVWXYZ0-9]{26}$\"", + if len(m.GetUser()) > 512 { + err := WriteRequestTupleKeyValidationError{ + field: "User", + reason: "value length must be at most 512 bytes", } if !all { return err @@ -982,62 +982,248 @@ func (m *WriteRequest) validate(all bool) error { errors = append(errors, err) } + if m.GetRelation() != "" { + + if !_WriteRequestTupleKey_Relation_Pattern.MatchString(m.GetRelation()) { + err := WriteRequestTupleKeyValidationError{ + field: "Relation", + reason: "value does not match regex pattern \"^[^:#@\\\\s]{1,50}$\"", + } + if !all { + return err + } + errors = append(errors, err) + } + + } + + if m.GetObject() != "" { + + if !_WriteRequestTupleKey_Object_Pattern.MatchString(m.GetObject()) { + err := WriteRequestTupleKeyValidationError{ + field: "Object", + reason: "value does not match regex pattern \"^[^\\\\s]{2,256}$\"", + } + if !all { + return err + } + errors = append(errors, err) + } + + } + if all { - switch v := interface{}(m.GetWrites()).(type) { + switch v := interface{}(m.GetCondition()).(type) { case interface{ ValidateAll() error }: if err := v.ValidateAll(); err != nil { - errors = append(errors, WriteRequestValidationError{ - field: "Writes", + errors = append(errors, WriteRequestTupleKeyValidationError{ + field: "Condition", reason: "embedded message failed validation", cause: err, }) } case interface{ Validate() error }: if err := v.Validate(); err != nil { - errors = append(errors, WriteRequestValidationError{ - field: "Writes", + errors = append(errors, WriteRequestTupleKeyValidationError{ + field: "Condition", reason: "embedded message failed validation", cause: err, }) } } - } else if v, ok := interface{}(m.GetWrites()).(interface{ Validate() error }); ok { + } else if v, ok := interface{}(m.GetCondition()).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - return WriteRequestValidationError{ - field: "Writes", + return WriteRequestTupleKeyValidationError{ + field: "Condition", reason: "embedded message failed validation", cause: err, } } } - if all { - switch v := interface{}(m.GetDeletes()).(type) { - case interface{ ValidateAll() error }: - if err := v.ValidateAll(); err != nil { - errors = append(errors, WriteRequestValidationError{ - field: "Deletes", - reason: "embedded message failed validation", - cause: err, - }) + if len(errors) > 0 { + return WriteRequestTupleKeyMultiError(errors) + } + + return nil +} + +// WriteRequestTupleKeyMultiError is an error wrapping multiple validation +// errors returned by WriteRequestTupleKey.ValidateAll() if the designated +// constraints aren't met. +type WriteRequestTupleKeyMultiError []error + +// Error returns a concatenation of all the error messages it wraps. +func (m WriteRequestTupleKeyMultiError) Error() string { + var msgs []string + for _, err := range m { + msgs = append(msgs, err.Error()) + } + return strings.Join(msgs, "; ") +} + +// AllErrors returns a list of validation violation errors. +func (m WriteRequestTupleKeyMultiError) AllErrors() []error { return m } + +// WriteRequestTupleKeyValidationError is the validation error returned by +// WriteRequestTupleKey.Validate if the designated constraints aren't met. +type WriteRequestTupleKeyValidationError struct { + field string + reason string + cause error + key bool +} + +// Field function returns field value. +func (e WriteRequestTupleKeyValidationError) Field() string { return e.field } + +// Reason function returns reason value. +func (e WriteRequestTupleKeyValidationError) Reason() string { return e.reason } + +// Cause function returns cause value. +func (e WriteRequestTupleKeyValidationError) Cause() error { return e.cause } + +// Key function returns key value. +func (e WriteRequestTupleKeyValidationError) Key() bool { return e.key } + +// ErrorName returns error name. +func (e WriteRequestTupleKeyValidationError) ErrorName() string { + return "WriteRequestTupleKeyValidationError" +} + +// Error satisfies the builtin error interface +func (e WriteRequestTupleKeyValidationError) Error() string { + cause := "" + if e.cause != nil { + cause = fmt.Sprintf(" | caused by: %v", e.cause) + } + + key := "" + if e.key { + key = "key for " + } + + return fmt.Sprintf( + "invalid %sWriteRequestTupleKey.%s: %s%s", + key, + e.field, + e.reason, + cause) +} + +var _ error = WriteRequestTupleKeyValidationError{} + +var _ interface { + Field() string + Reason() string + Key() bool + Cause() error + ErrorName() string +} = WriteRequestTupleKeyValidationError{} + +var _WriteRequestTupleKey_Relation_Pattern = regexp.MustCompile("^[^:#@\\s]{1,50}$") + +var _WriteRequestTupleKey_Object_Pattern = regexp.MustCompile("^[^\\s]{2,256}$") + +// Validate checks the field values on WriteRequest with the rules defined in +// the proto definition for this message. If any rules are violated, the first +// error encountered is returned, or nil if there are no violations. +func (m *WriteRequest) Validate() error { + return m.validate(false) +} + +// ValidateAll checks the field values on WriteRequest with the rules defined +// in the proto definition for this message. If any rules are violated, the +// result is a list of violation errors wrapped in WriteRequestMultiError, or +// nil if none found. +func (m *WriteRequest) ValidateAll() error { + return m.validate(true) +} + +func (m *WriteRequest) validate(all bool) error { + if m == nil { + return nil + } + + var errors []error + + if !_WriteRequest_StoreId_Pattern.MatchString(m.GetStoreId()) { + err := WriteRequestValidationError{ + field: "StoreId", + reason: "value does not match regex pattern \"^[ABCDEFGHJKMNPQRSTVWXYZ0-9]{26}$\"", + } + if !all { + return err + } + errors = append(errors, err) + } + + for idx, item := range m.GetWrites() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, WriteRequestValidationError{ + field: fmt.Sprintf("Writes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, WriteRequestValidationError{ + field: fmt.Sprintf("Writes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } } - case interface{ Validate() error }: + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { if err := v.Validate(); err != nil { - errors = append(errors, WriteRequestValidationError{ - field: "Deletes", + return WriteRequestValidationError{ + field: fmt.Sprintf("Writes[%v]", idx), reason: "embedded message failed validation", cause: err, - }) + } } } - } else if v, ok := interface{}(m.GetDeletes()).(interface{ Validate() error }); ok { - if err := v.Validate(); err != nil { - return WriteRequestValidationError{ - field: "Deletes", - reason: "embedded message failed validation", - cause: err, + + } + + for idx, item := range m.GetDeletes() { + _, _ = idx, item + + if all { + switch v := interface{}(item).(type) { + case interface{ ValidateAll() error }: + if err := v.ValidateAll(); err != nil { + errors = append(errors, WriteRequestValidationError{ + field: fmt.Sprintf("Deletes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + case interface{ Validate() error }: + if err := v.Validate(); err != nil { + errors = append(errors, WriteRequestValidationError{ + field: fmt.Sprintf("Deletes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + }) + } + } + } else if v, ok := interface{}(item).(interface{ Validate() error }); ok { + if err := v.Validate(); err != nil { + return WriteRequestValidationError{ + field: fmt.Sprintf("Deletes[%v]", idx), + reason: "embedded message failed validation", + cause: err, + } } } + } if m.GetAuthorizationModelId() != "" {