diff --git a/go/config/devmodel.pb.go b/go/config/devmodel.pb.go index 8cac1242..33f2cfc2 100644 --- a/go/config/devmodel.pb.go +++ b/go/config/devmodel.pb.go @@ -217,12 +217,37 @@ type SystemAdapter struct { // ( physical interface), this should point to logicallabel of the // physicalIO. LowerLayerName string `protobuf:"bytes,8,opt,name=lowerLayerName,proto3" json:"lowerLayerName,omitempty"` - // cost of using a port for EVE management traffic (which is determined - // from PhysicalIO.usage) + // Cost of sending traffic over the port. + // Used to prioritize ports and give preference to lower-cost ports (e.g. eth over wwan). // 0 is the lowest cost (free); 255 the highest. - // Load spreading will apply when multiple adapters have the same cost. - // Higher cost adapters are only tried when none of the lower cost ones work. + // Can be set for management and app-shared ports. + // Cost is used for EVE management traffic and for local network instances with multiple + // ports. For any request towards the controller or for an image download, EVE tries ports + // in the order of increasing cost, starting with the free ports. Once it finds the lowest + // cost port with a working connectivity, it may spread the load if there are multiple + // connected ports of the same cost. + // For local networking instances with multiple ports, the cost may be used to decide + // which port to use for a particular destination network (incl. port selection for + // the default route). Unlike the management traffic, load-balancing is currently + // not supported for local network instances and the app traffic that is routed through + // them. Cost uint32 `protobuf:"varint,9,opt,name=cost,proto3" json:"cost,omitempty"` + // A set of user-defined "shared" labels attached to the adapter. + // There are no restrictions on the format of an adapter label, it can be any + // non-empty string. + // Unlike the logical label (aka port logical name), shared label is not a unique + // port identifier. Instead, the same shared label can be assigned to multiple ports. + // Note that EVE automatically assigns "all" label to every port, "uplink" label to every + // management port and "freeuplink" label to every management port with zero cost. + // ("automatically assigns" is meant here in imaginary sense, these labels are not supposed + // to be explicitly added by the controller to SystemAdapters inside EdgeDevConfig). + // Shared label can be used to: + // - designate a group of network adapters to be used by a network instances for external + // connectivity + // - limit port-forwarding firewall rule to only a subset of network adapters + // - create a multi-path static IP route (with multiple ports providing access to the routed + // destination network) + SharedLabels []string `protobuf:"bytes,10,rep,name=shared_labels,json=sharedLabels,proto3" json:"shared_labels,omitempty"` } func (x *SystemAdapter) Reset() { @@ -313,6 +338,13 @@ func (x *SystemAdapter) GetCost() uint32 { return 0 } +func (x *SystemAdapter) GetSharedLabels() []string { + if x != nil { + return x.SharedLabels + } + return nil +} + // Given additional details for EVE software to how to treat this // interface. Example policies could be limit use of LTE interface // or only use Eth1 only if Eth0 is not available etc @@ -982,7 +1014,7 @@ var file_config_devmodel_proto_rawDesc = []byte{ 0x65, 0x76, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x64, 0x65, 0x76, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x64, 0x65, 0x76, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe3, 0x01, 0x0a, 0x0d, 0x53, 0x79, 0x73, 0x74, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x88, 0x02, 0x0a, 0x0d, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x41, 0x64, 0x61, 0x70, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x72, 0x65, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, @@ -996,126 +1028,128 @@ var file_config_devmodel_proto_rawDesc = []byte{ 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, - 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x22, 0x32, 0x0a, 0x10, - 0x50, 0x68, 0x79, 0x49, 0x4f, 0x55, 0x73, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x72, 0x65, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x72, 0x65, 0x65, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, - 0x22, 0x99, 0x05, 0x0a, 0x0a, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x4f, 0x12, - 0x36, 0x0a, 0x05, 0x70, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, - 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x68, 0x79, 0x49, 0x6f, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x05, 0x70, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x68, 0x79, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x68, 0x79, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x12, 0x4b, 0x0a, 0x08, 0x70, 0x68, 0x79, 0x61, 0x64, 0x64, 0x72, 0x73, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, - 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x68, - 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x4f, 0x2e, 0x50, 0x68, 0x79, 0x61, 0x64, 0x64, 0x72, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x70, 0x68, 0x79, 0x61, 0x64, 0x64, 0x72, 0x73, - 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x61, 0x62, 0x65, 0x6c, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x67, 0x72, - 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x67, - 0x72, 0x70, 0x12, 0x3d, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, - 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x68, 0x79, 0x49, 0x6f, 0x4d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, - 0x65, 0x12, 0x49, 0x0a, 0x0b, 0x75, 0x73, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, - 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, - 0x68, 0x79, 0x49, 0x4f, 0x55, 0x73, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, - 0x0b, 0x75, 0x73, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x45, 0x0a, 0x06, - 0x63, 0x62, 0x61, 0x74, 0x74, 0x72, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, - 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x4f, 0x2e, - 0x43, 0x62, 0x61, 0x74, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x63, 0x62, 0x61, - 0x74, 0x74, 0x72, 0x12, 0x35, 0x0a, 0x06, 0x76, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, - 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x66, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x06, 0x76, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x70, 0x61, - 0x72, 0x65, 0x6e, 0x74, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x67, 0x72, 0x70, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x61, 0x73, 0x73, 0x69, 0x67, - 0x6e, 0x67, 0x72, 0x70, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x68, 0x79, 0x61, 0x64, 0x64, 0x72, 0x73, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, + 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x0a, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x22, 0x32, 0x0a, 0x10, 0x50, 0x68, 0x79, 0x49, 0x4f, 0x55, 0x73, 0x61, 0x67, 0x65, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x72, 0x65, 0x65, 0x55, 0x70, 0x6c, + 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x72, 0x65, 0x65, 0x55, + 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x22, 0x99, 0x05, 0x0a, 0x0a, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, + 0x61, 0x6c, 0x49, 0x4f, 0x12, 0x36, 0x0a, 0x05, 0x70, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, + 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x68, 0x79, 0x49, + 0x6f, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x70, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x68, 0x79, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x70, 0x68, 0x79, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x4b, 0x0a, 0x08, 0x70, 0x68, 0x79, 0x61, + 0x64, 0x64, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x6f, 0x72, 0x67, + 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x2e, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x49, 0x4f, 0x2e, 0x50, 0x68, + 0x79, 0x61, 0x64, 0x64, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x70, 0x68, 0x79, + 0x61, 0x64, 0x64, 0x72, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, + 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x6f, 0x67, + 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x73, + 0x69, 0x67, 0x6e, 0x67, 0x72, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, + 0x73, 0x69, 0x67, 0x6e, 0x67, 0x72, 0x70, 0x12, 0x3d, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, + 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, + 0x68, 0x79, 0x49, 0x6f, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, + 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x12, 0x49, 0x0a, 0x0b, 0x75, 0x73, 0x61, 0x67, 0x65, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, + 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x50, 0x68, 0x79, 0x49, 0x4f, 0x55, 0x73, 0x61, 0x67, 0x65, 0x50, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x52, 0x0b, 0x75, 0x73, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x62, 0x61, 0x74, 0x74, 0x72, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, + 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, + 0x61, 0x6c, 0x49, 0x4f, 0x2e, 0x43, 0x62, 0x61, 0x74, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x06, 0x63, 0x62, 0x61, 0x74, 0x74, 0x72, 0x12, 0x35, 0x0a, 0x06, 0x76, 0x66, 0x6c, 0x69, + 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, + 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x56, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x06, 0x76, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x12, + 0x28, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x67, + 0x72, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, + 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x67, 0x72, 0x70, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x68, 0x79, + 0x61, 0x64, 0x64, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x62, 0x61, 0x74, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x39, 0x0a, 0x0b, 0x43, 0x62, 0x61, 0x74, 0x74, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x55, 0x0a, 0x06, - 0x56, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x66, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, 0x66, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x74, 0x68, 0x56, 0x46, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x22, 0x9b, 0x01, 0x0a, 0x0b, 0x56, 0x6c, 0x61, 0x6e, 0x41, 0x64, 0x61, 0x70, - 0x74, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x61, - 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, - 0x61, 0x6c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x28, - 0x0a, 0x10, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x4c, - 0x61, 0x79, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x76, 0x6c, 0x61, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x6c, 0x61, 0x6e, 0x49, - 0x64, 0x22, 0xfc, 0x02, 0x0a, 0x0b, 0x42, 0x6f, 0x6e, 0x64, 0x41, 0x64, 0x61, 0x70, 0x74, 0x65, - 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, - 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, - 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x11, - 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x61, - 0x79, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x09, 0x62, 0x6f, 0x6e, 0x64, - 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6f, 0x72, - 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x42, 0x6f, 0x6e, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x08, 0x62, 0x6f, - 0x6e, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x03, 0x6d, 0x69, 0x69, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, - 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x49, 0x49, 0x4d, - 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x69, 0x69, 0x12, 0x35, 0x0a, - 0x03, 0x61, 0x72, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x72, 0x67, - 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x41, 0x72, 0x70, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, - 0x03, 0x61, 0x72, 0x70, 0x12, 0x3c, 0x0a, 0x09, 0x6c, 0x61, 0x63, 0x70, 0x5f, 0x72, 0x61, 0x74, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, - 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x4c, 0x61, 0x63, 0x70, 0x52, 0x61, 0x74, 0x65, 0x52, 0x08, 0x6c, 0x61, 0x63, 0x70, 0x52, 0x61, - 0x74, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, - 0x22, 0x60, 0x0a, 0x0a, 0x4d, 0x49, 0x49, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x1a, - 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x75, 0x70, - 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x75, 0x70, 0x64, - 0x65, 0x6c, 0x61, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x64, 0x65, 0x6c, 0x61, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x64, 0x65, 0x6c, - 0x61, 0x79, 0x22, 0x47, 0x0a, 0x0a, 0x41, 0x72, 0x70, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, - 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, - 0x69, 0x70, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x09, 0x69, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x2a, 0xdd, 0x01, 0x0a, 0x08, - 0x42, 0x6f, 0x6e, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x4f, 0x4e, 0x44, - 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, - 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x52, 0x52, 0x10, 0x01, 0x12, 0x1b, 0x0a, - 0x17, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, - 0x45, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x4f, + 0x01, 0x22, 0x55, 0x0a, 0x06, 0x56, 0x66, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x76, + 0x66, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, + 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, + 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x45, 0x74, 0x68, + 0x56, 0x46, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x9b, 0x01, 0x0a, 0x0b, 0x56, 0x6c, 0x61, + 0x6e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x69, + 0x63, 0x61, 0x6c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, + 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x25, 0x0a, 0x0e, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, + 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, + 0x07, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, + 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x64, 0x22, 0xfc, 0x02, 0x0a, 0x0b, 0x42, 0x6f, 0x6e, 0x64, 0x41, + 0x64, 0x61, 0x70, 0x74, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, + 0x6c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x6f, + 0x67, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, + 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x6f, + 0x77, 0x65, 0x72, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x3c, 0x0a, + 0x09, 0x62, 0x6f, 0x6e, 0x64, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1f, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, + 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x42, 0x6f, 0x6e, 0x64, 0x4d, 0x6f, 0x64, + 0x65, 0x52, 0x08, 0x62, 0x6f, 0x6e, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x35, 0x0a, 0x03, 0x6d, + 0x69, 0x69, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, + 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x4d, 0x49, 0x49, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x48, 0x00, 0x52, 0x03, 0x6d, + 0x69, 0x69, 0x12, 0x35, 0x0a, 0x03, 0x61, 0x72, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x21, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, + 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x72, 0x70, 0x4d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x72, 0x48, 0x00, 0x52, 0x03, 0x61, 0x72, 0x70, 0x12, 0x3c, 0x0a, 0x09, 0x6c, 0x61, 0x63, + 0x70, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6f, + 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x61, 0x63, 0x70, 0x52, 0x61, 0x74, 0x65, 0x52, 0x08, 0x6c, + 0x61, 0x63, 0x70, 0x52, 0x61, 0x74, 0x65, 0x42, 0x0c, 0x0a, 0x0a, 0x6d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x60, 0x0a, 0x0a, 0x4d, 0x49, 0x49, 0x4d, 0x6f, 0x6e, 0x69, + 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, + 0x18, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x07, 0x75, 0x70, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x6f, 0x77, + 0x6e, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x64, 0x6f, + 0x77, 0x6e, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x22, 0x47, 0x0a, 0x0a, 0x41, 0x72, 0x70, 0x4d, 0x6f, + 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x70, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x69, 0x70, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x73, + 0x2a, 0xdd, 0x01, 0x0a, 0x08, 0x42, 0x6f, 0x6e, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, + 0x15, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x4f, 0x4e, 0x44, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x52, 0x52, + 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, + 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x42, 0x41, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x02, 0x12, + 0x19, 0x0a, 0x15, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x41, 0x4c, + 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x58, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x4f, + 0x4e, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, + 0x54, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, + 0x5f, 0x38, 0x30, 0x32, 0x5f, 0x33, 0x41, 0x44, 0x10, 0x05, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x5f, - 0x58, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x42, 0x52, 0x4f, 0x41, 0x44, 0x43, 0x41, 0x53, 0x54, 0x10, 0x04, 0x12, 0x15, - 0x0a, 0x11, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x38, 0x30, 0x32, 0x5f, - 0x33, 0x41, 0x44, 0x10, 0x05, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x54, 0x4c, 0x42, 0x10, 0x06, - 0x12, 0x19, 0x0a, 0x15, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x41, - 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x41, 0x4c, 0x42, 0x10, 0x07, 0x2a, 0x4d, 0x0a, 0x08, 0x4c, - 0x61, 0x63, 0x70, 0x52, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4c, 0x41, 0x43, 0x50, 0x5f, - 0x52, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x43, 0x50, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, - 0x53, 0x4c, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x43, 0x50, 0x5f, 0x52, - 0x41, 0x54, 0x45, 0x5f, 0x46, 0x41, 0x53, 0x54, 0x10, 0x02, 0x42, 0x3d, 0x0a, 0x15, 0x6f, 0x72, - 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x5a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x6c, 0x66, 0x2d, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x65, 0x76, 0x65, 0x2d, 0x61, 0x70, 0x69, 0x2f, - 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x54, 0x4c, 0x42, 0x10, 0x06, 0x12, 0x19, 0x0a, 0x15, 0x42, 0x4f, 0x4e, 0x44, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x5f, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x41, 0x4c, 0x42, 0x10, 0x07, + 0x2a, 0x4d, 0x0a, 0x08, 0x4c, 0x61, 0x63, 0x70, 0x52, 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x15, + 0x4c, 0x41, 0x43, 0x50, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x41, 0x43, 0x50, 0x5f, + 0x52, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x4c, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4c, + 0x41, 0x43, 0x50, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x46, 0x41, 0x53, 0x54, 0x10, 0x02, 0x42, + 0x3d, 0x0a, 0x15, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, + 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x66, 0x2d, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x65, 0x76, 0x65, + 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/go/config/fw.pb.go b/go/config/fw.pb.go index 66128783..ed2258fe 100644 --- a/go/config/fw.pb.go +++ b/go/config/fw.pb.go @@ -77,7 +77,49 @@ type ACEMatch struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // FIXME: We should convert this to enum + // Supported ACE match types: + // - "ip": value should be an IP address of a remote endpoint. The match is satisfied + // for outbound and inbound flow if the destination and the source IP address + // matches the given value, respectively. Can be combined with any other match + // type to further narrow down the selection criteria. + // - "host": value should be a domain name of a remote endpoint. It can be either a fully + // qualified, or a partially qualified domain name (FQDN or PQDN). A packet is + // matched if it is destined to or originated from an IP address that was obtained + // by a DNS query for that exact domain or any of its subdomains. For example, + // match of type "host" with value "domain.com" will also apply to the endpoint + // "subdomain.domain.com". Can be combined with other match types except for "eidset". + // - "eidset": special match type for the overlay network. Matches IPs of all applications + // deployed in the same network as well as all IPs with statically configured + // DNS entries (under the config field NetworkInstanceConfig.Dns). For this type, + // value field is not used. Can be combined with other match types except for + // "host". + // - "protocol": value should specify the protocol to match. Protocol can be one of "tcp", + // "udp", "icmp", or "all", or it can be a numeric value, representing one + // of these protocols or a different one. A protocol name from /etc/protocols + // is also allowed. Protocol match can be combined with any other match type + // (often combined with port numbers). + // - "lport": value should be an application local port number. For filtering actions, + // this is the source port for outbound traffic and destination port for inbound + // traffic. For PORTMAP action, this represents application port as exposed + // to the external network (i.e., if :2222 is mapped to :22, + // lport refers to 2222). lport can be combined with any other match type. + // It is actually required to combine "lport" and "protocol" inside the same ACE. + // In other words, port without protocol is not valid. + // - "fport": value should be a remote endpoint port number (foreign port). Used for filtering + // actions, but not for PORTMAP (do not confuse with "lport", which is still used to + // represent the forwarded port - the forwarded port is still considered as local). + // "fport" can be combined with any other match type. It is actually required + // to combine "fport" with "protocol" inside the same ACE. In other words, port + // without protocol is not valid. + // - "adapter": value should be an adapter shared label (SystemAdapter.shared_labels). + // It can be used for an inbound ACE to apply the rule only to packets arriving + // via one of the matched network adapters. Typically used to activate a given + // port-forwarding rule (PORTMAP) for only a subset of network adapters. + // When not specified, the rule applies to every port attached to the network + // instance (i.e. equivalent to setting "adapter" to the pre-defined shared + // label "all"). + // Adapter label cannot be used for outbound ACE. This is because the EVE firewall + // is applied before routing, and the output network adapter is not yet known. Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` } @@ -235,6 +277,7 @@ type ACE struct { // for example // 1) host=www.example.com & port=http // 2) ip=8.8.8.8 & port=53 & proto=UDP + // 3) adapter=uplink && port=8080 && proto=TCP Matches []*ACEMatch `protobuf:"bytes,1,rep,name=matches,proto3" json:"matches,omitempty"` // Expect only single action...repeated here is // for future work. diff --git a/go/config/netcmn.pb.go b/go/config/netcmn.pb.go index 12c66062..1674aa72 100644 --- a/go/config/netcmn.pb.go +++ b/go/config/netcmn.pb.go @@ -298,6 +298,60 @@ func (WiFiKeyScheme) EnumDescriptor() ([]byte, []int) { return file_config_netcmn_proto_rawDescGZIP(), []int{4} } +// User-defined method to use to determine the connectivity status. +type ConnectivityProbeMethod int32 + +const ( + // Connectivity probing method is not specified and therefore will not be used. + ConnectivityProbeMethod_CONNECTIVITY_PROBE_METHOD_UNSPECIFIED ConnectivityProbeMethod = 0 + // Use ICMP ping against the probed endpoint to determine the connectivity status. + ConnectivityProbeMethod_CONNECTIVITY_PROBE_METHOD_ICMP ConnectivityProbeMethod = 1 + // Try to establish TCP connection with the probed endpoint to determine the connectivity + // status. + ConnectivityProbeMethod_CONNECTIVITY_PROBE_METHOD_TCP ConnectivityProbeMethod = 2 // TODO: Consider adding support for BFD probing. +) + +// Enum value maps for ConnectivityProbeMethod. +var ( + ConnectivityProbeMethod_name = map[int32]string{ + 0: "CONNECTIVITY_PROBE_METHOD_UNSPECIFIED", + 1: "CONNECTIVITY_PROBE_METHOD_ICMP", + 2: "CONNECTIVITY_PROBE_METHOD_TCP", + } + ConnectivityProbeMethod_value = map[string]int32{ + "CONNECTIVITY_PROBE_METHOD_UNSPECIFIED": 0, + "CONNECTIVITY_PROBE_METHOD_ICMP": 1, + "CONNECTIVITY_PROBE_METHOD_TCP": 2, + } +) + +func (x ConnectivityProbeMethod) Enum() *ConnectivityProbeMethod { + p := new(ConnectivityProbeMethod) + *p = x + return p +} + +func (x ConnectivityProbeMethod) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (ConnectivityProbeMethod) Descriptor() protoreflect.EnumDescriptor { + return file_config_netcmn_proto_enumTypes[5].Descriptor() +} + +func (ConnectivityProbeMethod) Type() protoreflect.EnumType { + return &file_config_netcmn_proto_enumTypes[5] +} + +func (x ConnectivityProbeMethod) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use ConnectivityProbeMethod.Descriptor instead. +func (ConnectivityProbeMethod) EnumDescriptor() ([]byte, []int) { + return file_config_netcmn_proto_rawDescGZIP(), []int{5} +} + type IpRange struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -723,6 +777,124 @@ func (x *Ipspec) GetDhcpRange() *IpRange { return nil } +// Address of a remote endpoint to probe in order to determine connectivity status. +type ProbeEndpoint struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // IP address or FQDN. + Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` + // TCP port required for CONNECTIVITY_PROBE_METHOD_TCP. + // Leave empty for CONNECTIVITY_PROBE_METHOD_ICMP. + Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` +} + +func (x *ProbeEndpoint) Reset() { + *x = ProbeEndpoint{} + if protoimpl.UnsafeEnabled { + mi := &file_config_netcmn_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ProbeEndpoint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ProbeEndpoint) ProtoMessage() {} + +func (x *ProbeEndpoint) ProtoReflect() protoreflect.Message { + mi := &file_config_netcmn_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 ProbeEndpoint.ProtoReflect.Descriptor instead. +func (*ProbeEndpoint) Descriptor() ([]byte, []int) { + return file_config_netcmn_proto_rawDescGZIP(), []int{6} +} + +func (x *ProbeEndpoint) GetHost() string { + if x != nil { + return x.Host + } + return "" +} + +func (x *ProbeEndpoint) GetPort() uint32 { + if x != nil { + return x.Port + } + return 0 +} + +// Configuration for user-defined connectivity-testing probe. +type ConnectivityProbe struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Method to use to determine the connectivity status. + ProbeMethod ConnectivityProbeMethod `protobuf:"varint,1,opt,name=probe_method,json=probeMethod,proto3,enum=org.lfedge.eve.config.ConnectivityProbeMethod" json:"probe_method,omitempty"` + // Endpoint to probe using the selected probing mechanism to determine + // the connectivity status. + ProbeEndpoint *ProbeEndpoint `protobuf:"bytes,2,opt,name=probe_endpoint,json=probeEndpoint,proto3" json:"probe_endpoint,omitempty"` +} + +func (x *ConnectivityProbe) Reset() { + *x = ConnectivityProbe{} + if protoimpl.UnsafeEnabled { + mi := &file_config_netcmn_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConnectivityProbe) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConnectivityProbe) ProtoMessage() {} + +func (x *ConnectivityProbe) ProtoReflect() protoreflect.Message { + mi := &file_config_netcmn_proto_msgTypes[7] + 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 ConnectivityProbe.ProtoReflect.Descriptor instead. +func (*ConnectivityProbe) Descriptor() ([]byte, []int) { + return file_config_netcmn_proto_rawDescGZIP(), []int{7} +} + +func (x *ConnectivityProbe) GetProbeMethod() ConnectivityProbeMethod { + if x != nil { + return x.ProbeMethod + } + return ConnectivityProbeMethod_CONNECTIVITY_PROBE_METHOD_UNSPECIFIED +} + +func (x *ConnectivityProbe) GetProbeEndpoint() *ProbeEndpoint { + if x != nil { + return x.ProbeEndpoint + } + return nil +} + var File_config_netcmn_proto protoreflect.FileDescriptor var file_config_netcmn_proto_rawDesc = []byte{ @@ -778,37 +950,61 @@ var file_config_netcmn_proto_rawDesc = []byte{ 0x0a, 0x09, 0x64, 0x68, 0x63, 0x70, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x69, 0x70, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x52, 0x09, 0x64, 0x68, 0x63, 0x70, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x2a, 0x5f, 0x0a, 0x0a, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x52, - 0x4f, 0x58, 0x59, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x52, - 0x4f, 0x58, 0x59, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x53, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x50, - 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x4f, 0x43, 0x4b, 0x53, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, - 0x50, 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x46, 0x54, 0x50, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0b, 0x50, - 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0xff, 0x01, 0x2a, 0x3e, 0x0a, - 0x08, 0x44, 0x48, 0x43, 0x50, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x48, 0x43, - 0x50, 0x4e, 0x6f, 0x6f, 0x70, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x69, - 0x63, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x48, 0x43, 0x50, 0x4e, 0x6f, 0x6e, 0x65, 0x10, - 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x2a, 0x83, 0x01, - 0x0a, 0x0b, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, - 0x0f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x54, 0x59, 0x50, 0x45, 0x4e, 0x4f, 0x4f, 0x50, - 0x10, 0x00, 0x12, 0x06, 0x0a, 0x02, 0x56, 0x34, 0x10, 0x04, 0x12, 0x06, 0x0a, 0x02, 0x56, 0x36, - 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x56, 0x34, 0x10, 0x18, - 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x56, 0x36, 0x10, 0x1a, 0x12, 0x0d, - 0x0a, 0x09, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x45, 0x49, 0x44, 0x10, 0x0e, 0x12, 0x0a, 0x0a, - 0x06, 0x56, 0x34, 0x4f, 0x6e, 0x6c, 0x79, 0x10, 0x07, 0x12, 0x0a, 0x0a, 0x06, 0x56, 0x36, 0x4f, - 0x6e, 0x6c, 0x79, 0x10, 0x08, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x75, 0x61, 0x6c, 0x56, 0x34, 0x56, - 0x36, 0x10, 0x09, 0x2a, 0x34, 0x0a, 0x0c, 0x57, 0x69, 0x72, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x4f, 0x4f, 0x50, 0x10, - 0x00, 0x12, 0x08, 0x0a, 0x04, 0x57, 0x69, 0x46, 0x69, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, - 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x10, 0x02, 0x2a, 0x37, 0x0a, 0x0d, 0x57, 0x69, 0x46, - 0x69, 0x4b, 0x65, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x65, 0x4e, 0x4f, 0x4f, 0x50, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x57, 0x50, - 0x41, 0x50, 0x53, 0x4b, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x57, 0x50, 0x41, 0x45, 0x41, 0x50, - 0x10, 0x02, 0x42, 0x3d, 0x0a, 0x15, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, - 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5a, 0x24, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x66, 0x2d, 0x65, 0x64, 0x67, 0x65, 0x2f, - 0x65, 0x76, 0x65, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x52, 0x09, 0x64, 0x68, 0x63, 0x70, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x37, 0x0a, 0x0d, + 0x50, 0x72, 0x6f, 0x62, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x04, 0x70, 0x6f, 0x72, 0x74, 0x22, 0xb3, 0x01, 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x12, 0x51, 0x0a, 0x0c, 0x70, + 0x72, 0x6f, 0x62, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, + 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, + 0x64, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x4b, + 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, + 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, + 0x72, 0x6f, 0x62, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0d, 0x70, 0x72, + 0x6f, 0x62, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x2a, 0x5f, 0x0a, 0x0a, 0x70, + 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x52, 0x4f, + 0x58, 0x59, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x52, 0x4f, + 0x58, 0x59, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x53, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x52, + 0x4f, 0x58, 0x59, 0x5f, 0x53, 0x4f, 0x43, 0x4b, 0x53, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x50, + 0x52, 0x4f, 0x58, 0x59, 0x5f, 0x46, 0x54, 0x50, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0b, 0x50, 0x52, + 0x4f, 0x58, 0x59, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0xff, 0x01, 0x2a, 0x3e, 0x0a, 0x08, + 0x44, 0x48, 0x43, 0x50, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x48, 0x43, 0x50, + 0x4e, 0x6f, 0x6f, 0x70, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, + 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x48, 0x43, 0x50, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x02, + 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x10, 0x04, 0x2a, 0x83, 0x01, 0x0a, + 0x0b, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, + 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x54, 0x59, 0x50, 0x45, 0x4e, 0x4f, 0x4f, 0x50, 0x10, + 0x00, 0x12, 0x06, 0x0a, 0x02, 0x56, 0x34, 0x10, 0x04, 0x12, 0x06, 0x0a, 0x02, 0x56, 0x36, 0x10, + 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x56, 0x34, 0x10, 0x18, 0x12, + 0x0c, 0x0a, 0x08, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x56, 0x36, 0x10, 0x1a, 0x12, 0x0d, 0x0a, + 0x09, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x45, 0x49, 0x44, 0x10, 0x0e, 0x12, 0x0a, 0x0a, 0x06, + 0x56, 0x34, 0x4f, 0x6e, 0x6c, 0x79, 0x10, 0x07, 0x12, 0x0a, 0x0a, 0x06, 0x56, 0x36, 0x4f, 0x6e, + 0x6c, 0x79, 0x10, 0x08, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x75, 0x61, 0x6c, 0x56, 0x34, 0x56, 0x36, + 0x10, 0x09, 0x2a, 0x34, 0x0a, 0x0c, 0x57, 0x69, 0x72, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x4f, 0x4f, 0x50, 0x10, 0x00, + 0x12, 0x08, 0x0a, 0x04, 0x57, 0x69, 0x46, 0x69, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x65, + 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x10, 0x02, 0x2a, 0x37, 0x0a, 0x0d, 0x57, 0x69, 0x46, 0x69, + 0x4b, 0x65, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x65, 0x4e, 0x4f, 0x4f, 0x50, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x57, 0x50, 0x41, + 0x50, 0x53, 0x4b, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x57, 0x50, 0x41, 0x45, 0x41, 0x50, 0x10, + 0x02, 0x2a, 0x8b, 0x01, 0x0a, 0x17, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x29, 0x0a, + 0x25, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, + 0x4f, 0x42, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x4f, 0x4e, 0x4e, + 0x45, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x4f, 0x42, 0x45, 0x5f, 0x4d, + 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x49, 0x43, 0x4d, 0x50, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, + 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x52, 0x4f, + 0x42, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x48, 0x4f, 0x44, 0x5f, 0x54, 0x43, 0x50, 0x10, 0x02, 0x42, + 0x3d, 0x0a, 0x15, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, + 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x66, 0x2d, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x65, 0x76, 0x65, + 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -823,31 +1019,36 @@ func file_config_netcmn_proto_rawDescGZIP() []byte { return file_config_netcmn_proto_rawDescData } -var file_config_netcmn_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_config_netcmn_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_config_netcmn_proto_enumTypes = make([]protoimpl.EnumInfo, 6) +var file_config_netcmn_proto_msgTypes = make([]protoimpl.MessageInfo, 8) var file_config_netcmn_proto_goTypes = []interface{}{ - (ProxyProto)(0), // 0: org.lfedge.eve.config.proxyProto - (DHCPType)(0), // 1: org.lfedge.eve.config.DHCPType - (NetworkType)(0), // 2: org.lfedge.eve.config.NetworkType - (WirelessType)(0), // 3: org.lfedge.eve.config.WirelessType - (WiFiKeyScheme)(0), // 4: org.lfedge.eve.config.WiFiKeyScheme - (*IpRange)(nil), // 5: org.lfedge.eve.config.ipRange - (*ProxyServer)(nil), // 6: org.lfedge.eve.config.ProxyServer - (*ProxyConfig)(nil), // 7: org.lfedge.eve.config.ProxyConfig - (*ZedServer)(nil), // 8: org.lfedge.eve.config.ZedServer - (*ZnetStaticDNSEntry)(nil), // 9: org.lfedge.eve.config.ZnetStaticDNSEntry - (*Ipspec)(nil), // 10: org.lfedge.eve.config.ipspec + (ProxyProto)(0), // 0: org.lfedge.eve.config.proxyProto + (DHCPType)(0), // 1: org.lfedge.eve.config.DHCPType + (NetworkType)(0), // 2: org.lfedge.eve.config.NetworkType + (WirelessType)(0), // 3: org.lfedge.eve.config.WirelessType + (WiFiKeyScheme)(0), // 4: org.lfedge.eve.config.WiFiKeyScheme + (ConnectivityProbeMethod)(0), // 5: org.lfedge.eve.config.ConnectivityProbeMethod + (*IpRange)(nil), // 6: org.lfedge.eve.config.ipRange + (*ProxyServer)(nil), // 7: org.lfedge.eve.config.ProxyServer + (*ProxyConfig)(nil), // 8: org.lfedge.eve.config.ProxyConfig + (*ZedServer)(nil), // 9: org.lfedge.eve.config.ZedServer + (*ZnetStaticDNSEntry)(nil), // 10: org.lfedge.eve.config.ZnetStaticDNSEntry + (*Ipspec)(nil), // 11: org.lfedge.eve.config.ipspec + (*ProbeEndpoint)(nil), // 12: org.lfedge.eve.config.ProbeEndpoint + (*ConnectivityProbe)(nil), // 13: org.lfedge.eve.config.ConnectivityProbe } var file_config_netcmn_proto_depIdxs = []int32{ - 0, // 0: org.lfedge.eve.config.ProxyServer.proto:type_name -> org.lfedge.eve.config.proxyProto - 6, // 1: org.lfedge.eve.config.ProxyConfig.proxies:type_name -> org.lfedge.eve.config.ProxyServer - 1, // 2: org.lfedge.eve.config.ipspec.dhcp:type_name -> org.lfedge.eve.config.DHCPType - 5, // 3: org.lfedge.eve.config.ipspec.dhcpRange:type_name -> org.lfedge.eve.config.ipRange - 4, // [4:4] is the sub-list for method output_type - 4, // [4:4] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 0, // 0: org.lfedge.eve.config.ProxyServer.proto:type_name -> org.lfedge.eve.config.proxyProto + 7, // 1: org.lfedge.eve.config.ProxyConfig.proxies:type_name -> org.lfedge.eve.config.ProxyServer + 1, // 2: org.lfedge.eve.config.ipspec.dhcp:type_name -> org.lfedge.eve.config.DHCPType + 6, // 3: org.lfedge.eve.config.ipspec.dhcpRange:type_name -> org.lfedge.eve.config.ipRange + 5, // 4: org.lfedge.eve.config.ConnectivityProbe.probe_method:type_name -> org.lfedge.eve.config.ConnectivityProbeMethod + 12, // 5: org.lfedge.eve.config.ConnectivityProbe.probe_endpoint:type_name -> org.lfedge.eve.config.ProbeEndpoint + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name } func init() { file_config_netcmn_proto_init() } @@ -928,14 +1129,38 @@ func file_config_netcmn_proto_init() { return nil } } + file_config_netcmn_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ProbeEndpoint); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_config_netcmn_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConnectivityProbe); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_config_netcmn_proto_rawDesc, - NumEnums: 5, - NumMessages: 6, + NumEnums: 6, + NumMessages: 8, NumExtensions: 0, NumServices: 0, }, diff --git a/go/config/netconfig.pb.go b/go/config/netconfig.pb.go index bb8f1c97..9aad8a10 100644 --- a/go/config/netconfig.pb.go +++ b/go/config/netconfig.pb.go @@ -504,17 +504,26 @@ type CellularConnectivityProbe struct { // If true, then probing is disabled. Disable bool `protobuf:"varint,1,opt,name=disable,proto3" json:"disable,omitempty"` // IP/FQDN to periodically probe using 3 pings per iteration to determine connectivity status. - // The default probing behavior (i.e. without user-defined probing endpoint), is more complex - // that just pinging a remote endpoint and the goal is to minimize generated traffic, - // probing time and false negatives (that would trigger undesired re-connect). + // This field is now deprecated and replaced with custom_probe (see below). + // To maintain backward-compatibility, EVE will check both probe_address and custom_probe + // and will use whichever has non-zero value (if any), but preferring custom_probe. + // + // Deprecated: Marked as deprecated in config/netconfig.proto. + ProbeAddress string `protobuf:"bytes,2,opt,name=probe_address,json=probeAddress,proto3" json:"probe_address,omitempty"` + // User-defined probe for cellular connectivity testing. + // Only IP address is allowed as ConnectivityProbe.probe_address (and port if needed), + // not hostname. + // The probing algorithm is more complex that just testing reachability of a remote + // endpoint and the goal is to minimize generated traffic, probing time and false negatives + // (that would trigger undesired re-connect). // EVE will periodically check the modem status, accessibility of DNS server(s) and potentially // also proxies in the local network, and only as the last resort (if connectivity state - // is still unclear) it will probe the default remote endpoint "8.8.8.8" (Google public DNS) - // using ICMP ping. - // It is recommended to use custom probe_address only for private LTE networks where - // public DNS servers are not allowed by the firewall (and hence ping would fail even with - // working connectivity). - ProbeAddress string `protobuf:"bytes,2,opt,name=probe_address,json=probeAddress,proto3" json:"probe_address,omitempty"` + // is still unclear) it will probe the remote endpoint. If custom_probe is not defined, + // EVE will try to ping "8.8.8.8" (Google public DNS). + // It is recommended to use custom probe for private LTE networks where public DNS servers + // might not be allowed by the firewall (and hence ping would fail even with a working + // connectivity). + CustomProbe *ConnectivityProbe `protobuf:"bytes,3,opt,name=custom_probe,json=customProbe,proto3" json:"custom_probe,omitempty"` } func (x *CellularConnectivityProbe) Reset() { @@ -556,6 +565,7 @@ func (x *CellularConnectivityProbe) GetDisable() bool { return false } +// Deprecated: Marked as deprecated in config/netconfig.proto. func (x *CellularConnectivityProbe) GetProbeAddress() string { if x != nil { return x.ProbeAddress @@ -563,6 +573,13 @@ func (x *CellularConnectivityProbe) GetProbeAddress() string { return "" } +func (x *CellularConnectivityProbe) GetCustomProbe() *ConnectivityProbe { + if x != nil { + return x.CustomProbe + } + return nil +} + // CellularAccessPoint contains config parameters for connecting to a cellular network. type CellularAccessPoint struct { state protoimpl.MessageState @@ -922,77 +939,82 @@ var file_config_netconfig_proto_rawDesc = []byte{ 0x6e, 0x74, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x6d, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6d, 0x53, 0x6c, 0x6f, 0x74, 0x22, 0x5a, - 0x0a, 0x19, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x64, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, 0x69, - 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, - 0x6f, 0x62, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0xfe, 0x02, 0x0a, 0x13, 0x43, - 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x6d, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x69, 0x6d, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x10, 0x0a, - 0x03, 0x61, 0x70, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, 0x6e, 0x12, - 0x50, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, - 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, - 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x41, 0x75, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x12, 0x43, 0x0a, 0x0b, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, - 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x43, - 0x69, 0x70, 0x68, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x0a, 0x63, 0x69, 0x70, 0x68, - 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x72, 0x65, 0x64, 0x5f, 0x70, 0x6c, 0x6d, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0e, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x50, 0x6c, 0x6d, 0x6e, 0x73, 0x12, - 0x25, 0x0a, 0x0e, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x5f, 0x72, 0x6f, 0x61, 0x6d, 0x69, 0x6e, - 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x52, - 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x53, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, - 0x72, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x2c, - 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x61, 0x64, 0x69, 0x6f, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x54, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x0d, 0x70, 0x72, - 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x52, 0x61, 0x74, 0x73, 0x22, 0x92, 0x03, 0x0a, 0x0a, - 0x57, 0x69, 0x66, 0x69, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x69, - 0x66, 0x69, 0x53, 0x53, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x69, - 0x66, 0x69, 0x53, 0x53, 0x49, 0x44, 0x12, 0x42, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, - 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x57, 0x69, 0x46, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x52, - 0x09, 0x6b, 0x65, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, + 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x53, 0x69, 0x6d, 0x53, 0x6c, 0x6f, 0x74, 0x22, 0xab, + 0x01, 0x0a, 0x19, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x64, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, + 0x01, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, + 0x4b, 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, + 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x52, + 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x22, 0xfe, 0x02, 0x0a, + 0x13, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x69, 0x6d, 0x5f, 0x73, 0x6c, 0x6f, 0x74, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x73, 0x69, 0x6d, 0x53, 0x6c, 0x6f, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x61, 0x70, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x61, 0x70, + 0x6e, 0x12, 0x50, 0x0a, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, + 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x41, 0x75, 0x74, 0x68, 0x50, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x0c, 0x61, 0x75, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x12, 0x43, 0x0a, 0x0b, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, + 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x2e, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x0a, 0x63, 0x69, + 0x70, 0x68, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x70, 0x6c, 0x6d, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x50, 0x6c, 0x6d, 0x6e, + 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x5f, 0x72, 0x6f, 0x61, 0x6d, + 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x66, 0x6f, 0x72, 0x62, 0x69, + 0x64, 0x52, 0x6f, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x12, 0x53, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x66, + 0x65, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x61, 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0e, + 0x32, 0x2c, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, + 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x52, 0x61, 0x64, 0x69, 0x6f, 0x41, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x54, 0x65, 0x63, 0x68, 0x6e, 0x6f, 0x6c, 0x6f, 0x67, 0x79, 0x52, 0x0d, + 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x52, 0x61, 0x74, 0x73, 0x22, 0x92, 0x03, + 0x0a, 0x0a, 0x57, 0x69, 0x66, 0x69, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, + 0x77, 0x69, 0x66, 0x69, 0x53, 0x53, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x77, 0x69, 0x66, 0x69, 0x53, 0x53, 0x49, 0x44, 0x12, 0x42, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x6f, 0x72, + 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x57, 0x69, 0x46, 0x69, 0x4b, 0x65, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, + 0x65, 0x52, 0x09, 0x6b, 0x65, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, + 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x57, 0x69, 0x66, + 0x69, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x62, 0x6c, + 0x6f, 0x63, 0x6b, 0x52, 0x06, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, + 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0a, 0x63, 0x69, 0x70, 0x68, 0x65, + 0x72, 0x44, 0x61, 0x74, 0x61, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x72, + 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, + 0x0a, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x45, 0x0a, 0x0b, 0x63, + 0x72, 0x79, 0x70, 0x74, 0x6f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, - 0x72, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, - 0x72, 0x64, 0x12, 0x45, 0x0a, 0x06, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x18, 0x14, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, - 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x57, 0x69, 0x66, 0x69, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x62, 0x6c, 0x6f, 0x63, - 0x6b, 0x52, 0x06, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x19, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x69, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x42, 0x0a, 0x0a, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x44, - 0x61, 0x74, 0x61, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x72, 0x67, 0x2e, - 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x0a, 0x63, - 0x69, 0x70, 0x68, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x1a, 0x45, 0x0a, 0x0b, 0x63, 0x72, 0x79, - 0x70, 0x74, 0x6f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x2a, 0xa1, 0x01, 0x0a, 0x14, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x41, 0x75, 0x74, - 0x68, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x45, 0x4c, - 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, - 0x43, 0x4f, 0x4c, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x45, - 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x50, 0x52, 0x4f, 0x54, - 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x50, 0x41, 0x50, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x45, - 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x50, 0x52, 0x4f, 0x54, - 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x43, 0x48, 0x41, 0x50, 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, 0x43, + 0x72, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x2a, 0xa1, 0x01, 0x0a, 0x14, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x41, + 0x75, 0x74, 0x68, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x50, 0x52, 0x4f, - 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x50, 0x41, 0x50, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x48, - 0x41, 0x50, 0x10, 0x03, 0x42, 0x3d, 0x0a, 0x15, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, - 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5a, 0x24, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x66, 0x2d, 0x65, 0x64, 0x67, - 0x65, 0x2f, 0x65, 0x76, 0x65, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, + 0x43, 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x50, 0x52, + 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x50, 0x41, 0x50, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, + 0x43, 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x50, 0x52, + 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x43, 0x48, 0x41, 0x50, 0x10, 0x02, 0x12, 0x27, 0x0a, + 0x23, 0x43, 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x5f, 0x50, + 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x50, 0x41, 0x50, 0x5f, 0x41, 0x4e, 0x44, 0x5f, + 0x43, 0x48, 0x41, 0x50, 0x10, 0x03, 0x42, 0x3d, 0x0a, 0x15, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, + 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5a, + 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x66, 0x2d, 0x65, + 0x64, 0x67, 0x65, 0x2f, 0x65, 0x76, 0x65, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1025,9 +1047,10 @@ var file_config_netconfig_proto_goTypes = []interface{}{ (*ProxyConfig)(nil), // 12: org.lfedge.eve.config.ProxyConfig (*ACE)(nil), // 13: org.lfedge.eve.config.ACE (WirelessType)(0), // 14: org.lfedge.eve.config.WirelessType - (*evecommon.CipherBlock)(nil), // 15: org.lfedge.eve.common.CipherBlock - (evecommon.RadioAccessTechnology)(0), // 16: org.lfedge.eve.common.RadioAccessTechnology - (WiFiKeyScheme)(0), // 17: org.lfedge.eve.config.WiFiKeyScheme + (*ConnectivityProbe)(nil), // 15: org.lfedge.eve.config.ConnectivityProbe + (*evecommon.CipherBlock)(nil), // 16: org.lfedge.eve.common.CipherBlock + (evecommon.RadioAccessTechnology)(0), // 17: org.lfedge.eve.common.RadioAccessTechnology + (WiFiKeyScheme)(0), // 18: org.lfedge.eve.config.WiFiKeyScheme } var file_config_netconfig_proto_depIdxs = []int32{ 9, // 0: org.lfedge.eve.config.NetworkConfig.type:type_name -> org.lfedge.eve.config.NetworkType @@ -1041,17 +1064,18 @@ var file_config_netconfig_proto_depIdxs = []int32{ 7, // 8: org.lfedge.eve.config.WirelessConfig.wifiCfg:type_name -> org.lfedge.eve.config.WifiConfig 5, // 9: org.lfedge.eve.config.CellularConfig.probe:type_name -> org.lfedge.eve.config.CellularConnectivityProbe 6, // 10: org.lfedge.eve.config.CellularConfig.access_points:type_name -> org.lfedge.eve.config.CellularAccessPoint - 0, // 11: org.lfedge.eve.config.CellularAccessPoint.auth_protocol:type_name -> org.lfedge.eve.config.CellularAuthProtocol - 15, // 12: org.lfedge.eve.config.CellularAccessPoint.cipher_data:type_name -> org.lfedge.eve.common.CipherBlock - 16, // 13: org.lfedge.eve.config.CellularAccessPoint.preferred_rats:type_name -> org.lfedge.eve.common.RadioAccessTechnology - 17, // 14: org.lfedge.eve.config.WifiConfig.keyScheme:type_name -> org.lfedge.eve.config.WiFiKeyScheme - 8, // 15: org.lfedge.eve.config.WifiConfig.crypto:type_name -> org.lfedge.eve.config.WifiConfig.cryptoblock - 15, // 16: org.lfedge.eve.config.WifiConfig.cipherData:type_name -> org.lfedge.eve.common.CipherBlock - 17, // [17:17] is the sub-list for method output_type - 17, // [17:17] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 15, // 11: org.lfedge.eve.config.CellularConnectivityProbe.custom_probe:type_name -> org.lfedge.eve.config.ConnectivityProbe + 0, // 12: org.lfedge.eve.config.CellularAccessPoint.auth_protocol:type_name -> org.lfedge.eve.config.CellularAuthProtocol + 16, // 13: org.lfedge.eve.config.CellularAccessPoint.cipher_data:type_name -> org.lfedge.eve.common.CipherBlock + 17, // 14: org.lfedge.eve.config.CellularAccessPoint.preferred_rats:type_name -> org.lfedge.eve.common.RadioAccessTechnology + 18, // 15: org.lfedge.eve.config.WifiConfig.keyScheme:type_name -> org.lfedge.eve.config.WiFiKeyScheme + 8, // 16: org.lfedge.eve.config.WifiConfig.crypto:type_name -> org.lfedge.eve.config.WifiConfig.cryptoblock + 16, // 17: org.lfedge.eve.config.WifiConfig.cipherData:type_name -> org.lfedge.eve.common.CipherBlock + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 18, // [18:18] is the sub-list for extension type_name + 18, // [18:18] is the sub-list for extension extendee + 0, // [0:18] is the sub-list for field type_name } func init() { file_config_netconfig_proto_init() } diff --git a/go/config/netinst.pb.go b/go/config/netinst.pb.go index 3b2bffe1..eceb69dc 100644 --- a/go/config/netinst.pb.go +++ b/go/config/netinst.pb.go @@ -481,7 +481,47 @@ type IPRoute struct { DestinationNetwork string `protobuf:"bytes,1,opt,name=destination_network,json=destinationNetwork,proto3" json:"destination_network,omitempty"` // Gateway IP address. // This must be a valid IP address and can not be all-zeroes. + // At least one of 'gateway' or 'port' (see below) must be defined (both can be set). + // This can be an external gateway IP or an IP address of one of the app instances + // connected to the network instance. Gateway string `protobuf:"bytes,2,opt,name=gateway,proto3" json:"gateway,omitempty"` + // Output device port for the routed traffic. + // Either a single NI port referenced by its name (SystemAdapter.Name, aka logical label) + // or an adapter shared-label matching zero or more NI ports (multipath routing). + // Can be used additionally to or instead of `gateway` to determine the next hop + // and the output network interface for the destination network. + // At least one of 'gateway' or 'port' must be defined. + // Since 'port' refers to one or more physical network adapters, it is not applicable + // to routes where gateway points to another application instance running on EVE. + // If shared label is used, EVE will pick (at most) one of the matched ports to be used + // for route at a given time. Port is selected based on connectivity status, port costs, + // wwan signal strength, etc. - see config options below. + // Note that load-balancing across multiple ports is not yet supported. + // Also please note that if `gateway` is defined, only ports with subnets containing + // the gateway IP will be considered. + Port string `protobuf:"bytes,3,opt,name=port,proto3" json:"port,omitempty"` + // Periodically probe remote endpoint to determine connectivity status of every port + // selected for the route (by the 'port' label, see above). One of the ports with + // a working connectivity is then picked for the route. If there are multiple connected + // ports, other port selection criteria are considered (port costs, wwan signal strength, + // etc., see other options of IPRoute). + // Probing effectively provides automatic fail-over between ports. + // If 'port' is not defined or references only a single port (e.g. directly by + // the logical label), probing is skipped (nothing to fail-over to anyway). + // If probing is not enabled, EVE picks the port based on other remaining criteria, + // such as cost, wwan network signal, etc. (and eventually possibly making a random + // choice). + Probe *PortProbe `protobuf:"bytes,4,opt,name=probe,proto3" json:"probe,omitempty"` + // When EVE is deciding which port to use for multipath route and multiple ports have + // working connectivity (or probing is disabled), port can be selected based on the cost + // (see SystemAdapter.cost). If this option is enabled, EVE will prefer ports with lower + // costs. + PreferLowerCost bool `protobuf:"varint,5,opt,name=prefer_lower_cost,json=preferLowerCost,proto3" json:"prefer_lower_cost,omitempty"` + // When EVE is deciding which port to use for multipath route and there are multiple + // candidates among cellular modems, it might make sense to consider the current cellular + // network signal strength. If this option is enabled, EVE will prefer cellular ports + // with better signal (only among cellular ports). + PreferStrongerWwanSignal bool `protobuf:"varint,6,opt,name=prefer_stronger_wwan_signal,json=preferStrongerWwanSignal,proto3" json:"prefer_stronger_wwan_signal,omitempty"` // TODO: config for multipath load-balancing } func (x *IPRoute) Reset() { @@ -530,6 +570,162 @@ func (x *IPRoute) GetGateway() string { return "" } +func (x *IPRoute) GetPort() string { + if x != nil { + return x.Port + } + return "" +} + +func (x *IPRoute) GetProbe() *PortProbe { + if x != nil { + return x.Probe + } + return nil +} + +func (x *IPRoute) GetPreferLowerCost() bool { + if x != nil { + return x.PreferLowerCost + } + return false +} + +func (x *IPRoute) GetPreferStrongerWwanSignal() bool { + if x != nil { + return x.PreferStrongerWwanSignal + } + return false +} + +// Configuration for port connectivity probe. +type PortProbe struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Use ICMP ping towards the port's gateway IP to determine connectivity status. + // This probing is performed much more frequently than the custom_probe and provides + // faster fail-over. On the other hand, it generates more traffic through the probed + // ports. Use gw_ping_max_cost (see below) to limit which ports it is enabled for + // based on the port cost. + // Avoid using this probe method if the gateway router is configured to drop/ignore + // ICMP pings and therefore this probe method would return false negatives. + EnableGwPing bool `protobuf:"varint,1,opt,name=enable_gw_ping,json=enableGwPing,proto3" json:"enable_gw_ping,omitempty"` + // Ports exceeding this cost will have the gateway probing disabled to reduce + // traffic generated by probing (only less-frequent custom_probe will be performed). + GwPingMaxCost uint32 `protobuf:"varint,2,opt,name=gw_ping_max_cost,json=gwPingMaxCost,proto3" json:"gw_ping_max_cost,omitempty"` + // User-defined method to use to determine the port connectivity status. + // Run additionally to gateway pings (if enabled). + CustomProbe *ConnectivityProbe `protobuf:"bytes,3,opt,name=custom_probe,json=customProbe,proto3" json:"custom_probe,omitempty"` +} + +func (x *PortProbe) Reset() { + *x = PortProbe{} + if protoimpl.UnsafeEnabled { + mi := &file_config_netinst_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PortProbe) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PortProbe) ProtoMessage() {} + +func (x *PortProbe) ProtoReflect() protoreflect.Message { + mi := &file_config_netinst_proto_msgTypes[4] + 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 PortProbe.ProtoReflect.Descriptor instead. +func (*PortProbe) Descriptor() ([]byte, []int) { + return file_config_netinst_proto_rawDescGZIP(), []int{4} +} + +func (x *PortProbe) GetEnableGwPing() bool { + if x != nil { + return x.EnableGwPing + } + return false +} + +func (x *PortProbe) GetGwPingMaxCost() uint32 { + if x != nil { + return x.GwPingMaxCost + } + return 0 +} + +func (x *PortProbe) GetCustomProbe() *ConnectivityProbe { + if x != nil { + return x.CustomProbe + } + return nil +} + +// Configuration for the Spanning Tree Protocol (STP), which is run for switch network +// instance when the port label matches multiple network ports. +type SpanningTreeProtocol struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Ports matched by this adapter label (logical or shared) will have the BPDU guard enabled. + // It makes sense to enable the guard on ports which are expected to be leafs + // and therefore not participate in STP, or where the downstream bridges are not fully + // trusted. + PortsWithBpduGuard string `protobuf:"bytes,1,opt,name=ports_with_bpdu_guard,json=portsWithBpduGuard,proto3" json:"ports_with_bpdu_guard,omitempty"` +} + +func (x *SpanningTreeProtocol) Reset() { + *x = SpanningTreeProtocol{} + if protoimpl.UnsafeEnabled { + mi := &file_config_netinst_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SpanningTreeProtocol) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SpanningTreeProtocol) ProtoMessage() {} + +func (x *SpanningTreeProtocol) ProtoReflect() protoreflect.Message { + mi := &file_config_netinst_proto_msgTypes[5] + 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 SpanningTreeProtocol.ProtoReflect.Descriptor instead. +func (*SpanningTreeProtocol) Descriptor() ([]byte, []int) { + return file_config_netinst_proto_rawDescGZIP(), []int{5} +} + +func (x *SpanningTreeProtocol) GetPortsWithBpduGuard() string { + if x != nil { + return x.PortsWithBpduGuard + } + return "" +} + type NetworkInstanceConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -544,14 +740,42 @@ type NetworkInstanceConfig struct { // configuration is downloaded to the device, but the network instance // itself is not created on the device. Activate bool `protobuf:"varint,5,opt,name=activate,proto3" json:"activate,omitempty"` - // port - Only a single port is supported. - // - // This is used as the external connection for the network instance. - // This can be a physical (eth0 ) or logical port (vlan 0). - // The port name comes from DeviceConfig ( When it is supported in future). - // If the user needs multiple physical ports, Device config should be - // used to create a label for multiple physical ports. + // Port(s) providing external connectivity for the network instance. + // Either a single port referenced by its name (SystemAdapter.Name, aka logical label) + // or an adapter shared-label matching zero or more network ports (ports containing this + // label in SystemAdapter.shared_labels). + // Note that apart from the user-defined adapter labels, EVE automatically assigns shared + // label "all" to every port, "uplink" to every management port and "freeuplink" to every + // management port with zero cost. + // Both physical (e.g. eth0) and logical (e.g. vlan0) ports are allowed. + // However, EVE may filter out some of the matched ports which are not compatible + // with the network instance type (e.g. wireless adapters cannot be used with switch NI + // and ports without IP addresses are not usable for local NIs). + // Network instance with no assigned port (empty port reference or label not matching + // any port) is air-gapped, i.e. completely isolated from external networks. + // With multiple ports assigned, the behaviour depends on the network instance type. + // Switch network instance will run Rapid Spanning Tree Protocol (RSTP) to avoid bridge + // loops and the broadcast storm that results from them. + // Local network instance will apply IP routes configured for the matched ports (either + // statically or via DHCP) to select the next hop and the output port for a given flow. + // Traffic not matching any connected, statically-configured, or DHCP-received route, + // will be routed according to the default route. Unless user configures a static default + // route with customized output port selection, EVE will pick one of the ports for + // the default route by periodic connectivity probing, performed for every selected port + // (skipped if NI has 1 or 0 ports). + // First, NI ports are filtered down to those with a known gateway IP. Then probing + // is used to determine connectivity status. For NIs with EVE-provided "uplink" or + // "freeuplink" labels, i.e. matching only mgmt ports, EVE checks port gateway IP + // reachability using ICMP ping and controller reachability with TCP connect to + // :443. For NIs with user-defined shared-labels, possibly also matching + // app-shared ports, only ICMP ping of the port gateway is performed. EVE then picks port + // with a working connectivity, preferring the currently used one. + // Add a static default route (see 'static_routes" below) to customize the output port + // selection algorithm. Port *Adapter `protobuf:"bytes,20,opt,name=port,proto3" json:"port,omitempty"` + // Configuration for the Spanning Tree Protocol (STP), which is run for switch network + // instance when the port label matches multiple network ports. + Stp *SpanningTreeProtocol `protobuf:"bytes,21,opt,name=stp,proto3" json:"stp,omitempty"` // cfg - Used to pass some feature-specific configuration to the // // network instance. For Ex: Lisp, StriongSwan etc @@ -561,13 +785,13 @@ type NetworkInstanceConfig struct { // network ip specification // Note that ip.gateway must be a valid IP address and can not be all-zeroes. // To suppress automatic propagation of the default route into apps, configure network - // instance as air-gapped (without uplink) or mark the uplink as app-shared - // (not for management) and ensure that it will not get a default route - // (e.g. set ip.gateway of the attached NetworkConfig to all-zeroes IP). + // instance as air-gapped (without port) or mark all NI ports as app-shared + // (not for management) and ensure that they will not get a default route + // (e.g. set ip.gateway of the attached NetworkConfig(s) to all-zeroes IP). Ip *Ipspec `protobuf:"bytes,40,opt,name=ip,proto3" json:"ip,omitempty"` // static DNS entry, if we are running DNS/DHCP service Dns []*ZnetStaticDNSEntry `protobuf:"bytes,41,rep,name=dns,proto3" json:"dns,omitempty"` - // Enable to use DHCP to automatically propagate routes for uplink subnets + // Enable to use DHCP to automatically propagate routes for port subnets // into applications connected to them indirectly through local network instances. // This option is only valid for local network instances. For other types // of network instances, it will be ignored. @@ -579,7 +803,10 @@ type NetworkInstanceConfig struct { // // IP route gateway may point to an external endpoint (provided that network // instance is not air-gapped), or to an IP address of one of the applications - // connected to the network instance. + // connected to the network instance. For an external gateway, user may specify + // output port label instead of the IP address. EVE will automatically determine + // the gateway IP address (based on the port config statically configured or received + // via DHCP). // // Static routes are handled independently from connected routes. While connected // routes are propagated to applications only if enabled by propagate_connected_routes, @@ -588,8 +815,8 @@ type NetworkInstanceConfig struct { // // Note that the default route (with the bridge IP as the gateway) is automatically // propagated to connected applications, unless network instance is air-gapped - // (without uplink) or the uplink is app-shared (not management) and does not have - // a default route of its own. In both cases, it is possible to enforce default + // (without port) or all NI ports are app-shared (not management) and neither + // of them has a default route. In both cases, it is possible to enforce default // route propagation by configuring a static default route for the network instance. // // For more info on static and connected routes please refer to: @@ -628,18 +855,23 @@ type NetworkInstanceConfig struct { // instances, the user can run his own external DHCP server in the network with the MTU // option configured. // Please note that application traffic leaving or entering the device via a network - // adapter associated with the network instance is additionally limited by the MTU - // value of the adapter, configured within the NetworkConfig object (refer to netconfig.proto). - // If the configured network instance MTU differs from the network adapter MTU, EVE will - // flag the network instance with an error and use the adapter's MTU for the network - // instance instead (to prevent traffic from being dropped or fragmented inside EVE). + // adapter associated with the network instance is additionally limited by MTU values + // of NI ports, configured within their NetworkConfig objects (refer to netconfig.proto). + // If the configured network instance MTU is higher than MTU of any of the NI ports, + // EVE will flag the network instance with an error and use the lowest MTU among + // all the NI ports for the network instance instead. This is to prevent apps from sending + // packets exceeding the path MTU. Packets entering NI via port with a higher MTU and with + // size exceeding the NI MTU will get fragmented inside EVE (if allowed by IP header). + // By default (if MTU is not configured by the user, i.e. 'mtu' is zero), EVE uses 1500 + // as MTU for air-gapped network instances and the lowest MTU among NI ports for NIs with + // external connectivity. Mtu uint32 `protobuf:"varint,44,opt,name=mtu,proto3" json:"mtu,omitempty"` } func (x *NetworkInstanceConfig) Reset() { *x = NetworkInstanceConfig{} if protoimpl.UnsafeEnabled { - mi := &file_config_netinst_proto_msgTypes[4] + mi := &file_config_netinst_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -652,7 +884,7 @@ func (x *NetworkInstanceConfig) String() string { func (*NetworkInstanceConfig) ProtoMessage() {} func (x *NetworkInstanceConfig) ProtoReflect() protoreflect.Message { - mi := &file_config_netinst_proto_msgTypes[4] + mi := &file_config_netinst_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -665,7 +897,7 @@ func (x *NetworkInstanceConfig) ProtoReflect() protoreflect.Message { // Deprecated: Use NetworkInstanceConfig.ProtoReflect.Descriptor instead. func (*NetworkInstanceConfig) Descriptor() ([]byte, []int) { - return file_config_netinst_proto_rawDescGZIP(), []int{4} + return file_config_netinst_proto_rawDescGZIP(), []int{6} } func (x *NetworkInstanceConfig) GetUuidandversion() *UUIDandVersion { @@ -703,6 +935,13 @@ func (x *NetworkInstanceConfig) GetPort() *Adapter { return nil } +func (x *NetworkInstanceConfig) GetStp() *SpanningTreeProtocol { + if x != nil { + return x.Stp + } + return nil +} + func (x *NetworkInstanceConfig) GetCfg() *NetworkInstanceOpaqueConfig { if x != nil { return x.Cfg @@ -803,84 +1042,115 @@ var file_config_netinst_proto_rawDesc = []byte{ 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x6c, 0x65, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, - 0x74, 0x61, 0x6c, 0x22, 0x54, 0x0a, 0x07, 0x49, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x2f, - 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, - 0x18, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x22, 0xa0, 0x05, 0x0a, 0x15, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x4d, 0x0a, 0x0e, 0x75, 0x75, 0x69, 0x64, 0x61, 0x6e, 0x64, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, + 0x74, 0x61, 0x6c, 0x22, 0x8b, 0x02, 0x0a, 0x07, 0x49, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, + 0x2f, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x64, 0x65, + 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x12, 0x18, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, + 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x36, + 0x0a, 0x05, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, + 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x52, + 0x05, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x5f, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x43, 0x6f, + 0x73, 0x74, 0x12, 0x3d, 0x0a, 0x1b, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x72, + 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x77, 0x77, 0x61, 0x6e, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x53, + 0x74, 0x72, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x57, 0x77, 0x61, 0x6e, 0x53, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x22, 0xa7, 0x01, 0x0a, 0x09, 0x50, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x12, + 0x24, 0x0a, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x77, 0x5f, 0x70, 0x69, 0x6e, + 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x47, + 0x77, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x27, 0x0a, 0x10, 0x67, 0x77, 0x5f, 0x70, 0x69, 0x6e, 0x67, + 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0d, 0x67, 0x77, 0x50, 0x69, 0x6e, 0x67, 0x4d, 0x61, 0x78, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x4b, + 0x0a, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, + 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x52, 0x0b, + 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x22, 0x49, 0x0a, 0x14, 0x53, + 0x70, 0x61, 0x6e, 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x65, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x12, 0x31, 0x0a, 0x15, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x5f, 0x77, 0x69, 0x74, + 0x68, 0x5f, 0x62, 0x70, 0x64, 0x75, 0x5f, 0x67, 0x75, 0x61, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x12, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x42, 0x70, 0x64, + 0x75, 0x47, 0x75, 0x61, 0x72, 0x64, 0x22, 0xdf, 0x05, 0x0a, 0x15, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x12, 0x4d, 0x0a, 0x0e, 0x75, 0x75, 0x69, 0x64, 0x61, 0x6e, 0x64, 0x76, 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, + 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x55, 0x55, 0x49, 0x44, 0x61, 0x6e, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, + 0x0e, 0x75, 0x75, 0x69, 0x64, 0x61, 0x6e, 0x64, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x43, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, + 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x5a, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x69, 0x6e, + 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, + 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x64, 0x61, 0x70, 0x74, 0x65, 0x72, + 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x3d, 0x0a, 0x03, 0x73, 0x74, 0x70, 0x18, 0x15, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, + 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x70, 0x61, 0x6e, + 0x6e, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x65, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x52, 0x03, 0x73, 0x74, 0x70, 0x12, 0x44, 0x0a, 0x03, 0x63, 0x66, 0x67, 0x18, 0x1e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, + 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4f, 0x70, 0x61, 0x71, 0x75, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x63, 0x66, 0x67, 0x12, 0x3a, 0x0a, 0x06, 0x69, + 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x55, 0x55, 0x49, 0x44, 0x61, 0x6e, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x52, 0x0e, 0x75, 0x75, 0x69, 0x64, 0x61, 0x6e, 0x64, 0x76, 0x65, 0x72, 0x73, 0x69, - 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, - 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x5a, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x08, 0x69, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x74, - 0x69, 0x76, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x63, 0x74, - 0x69, 0x76, 0x61, 0x74, 0x65, 0x12, 0x32, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x14, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, - 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x64, 0x61, 0x70, - 0x74, 0x65, 0x72, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x44, 0x0a, 0x03, 0x63, 0x66, 0x67, - 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, - 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x4f, 0x70, - 0x61, 0x71, 0x75, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x03, 0x63, 0x66, 0x67, 0x12, - 0x3a, 0x0a, 0x06, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x27, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x22, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x06, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2d, 0x0a, 0x02, 0x69, - 0x70, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, - 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x69, 0x70, 0x73, 0x70, 0x65, 0x63, 0x52, 0x02, 0x69, 0x70, 0x12, 0x3b, 0x0a, 0x03, 0x64, 0x6e, - 0x73, 0x18, 0x29, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, - 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x5a, 0x6e, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x44, 0x4e, 0x53, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x03, 0x64, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x70, 0x72, 0x6f, 0x70, 0x61, - 0x67, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x70, 0x72, 0x6f, - 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x43, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x2b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, - 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x49, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x0c, 0x73, 0x74, - 0x61, 0x74, 0x69, 0x63, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x74, - 0x75, 0x18, 0x2c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x2a, 0xb3, 0x01, 0x0a, - 0x10, 0x5a, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x5a, 0x4e, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x46, 0x69, 0x72, - 0x73, 0x74, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x5a, 0x6e, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x5a, 0x6e, 0x65, 0x74, - 0x49, 0x6e, 0x73, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x5a, - 0x6e, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x10, 0x03, 0x12, 0x10, - 0x0a, 0x0c, 0x5a, 0x6e, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x68, 0x10, 0x04, - 0x12, 0x14, 0x0a, 0x10, 0x5a, 0x6e, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x48, 0x6f, 0x6e, 0x65, - 0x79, 0x50, 0x6f, 0x74, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x5a, 0x6e, 0x65, 0x74, 0x49, 0x6e, - 0x73, 0x74, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x10, 0x06, 0x12, - 0x11, 0x0a, 0x0c, 0x5a, 0x4e, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x10, - 0xff, 0x01, 0x2a, 0x57, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x69, 0x72, 0x73, 0x74, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, - 0x49, 0x50, 0x56, 0x34, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x50, 0x56, 0x36, 0x10, 0x02, - 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x03, - 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x04, - 0x12, 0x09, 0x0a, 0x04, 0x4c, 0x61, 0x73, 0x74, 0x10, 0xff, 0x01, 0x2a, 0x43, 0x0a, 0x18, 0x5a, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x5a, 0x4e, 0x65, 0x74, 0x4f, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x56, 0x50, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x5a, - 0x4e, 0x65, 0x74, 0x4f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x69, 0x73, 0x70, 0x10, 0x01, - 0x2a, 0x47, 0x0a, 0x0d, 0x5a, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x14, 0x0a, 0x10, 0x7a, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x76, 0x61, 0x6c, - 0x69, 0x64, 0x53, 0x72, 0x76, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, - 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x10, 0x02, 0x42, 0x3d, 0x0a, 0x15, 0x6f, 0x72, 0x67, - 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x5a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, - 0x66, 0x2d, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x65, 0x76, 0x65, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, - 0x6f, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x66, 0x69, 0x67, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x06, 0x69, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2d, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x28, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, + 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x69, 0x70, 0x73, 0x70, + 0x65, 0x63, 0x52, 0x02, 0x69, 0x70, 0x12, 0x3b, 0x0a, 0x03, 0x64, 0x6e, 0x73, 0x18, 0x29, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, + 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x5a, 0x6e, 0x65, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x69, 0x63, 0x44, 0x4e, 0x53, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, + 0x64, 0x6e, 0x73, 0x12, 0x3c, 0x0a, 0x1a, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, 0x74, 0x65, + 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x72, 0x6f, 0x75, 0x74, 0x65, + 0x73, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x70, 0x72, 0x6f, 0x70, 0x61, 0x67, 0x61, + 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x73, 0x12, 0x43, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x5f, 0x72, 0x6f, 0x75, 0x74, + 0x65, 0x73, 0x18, 0x2b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, + 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x49, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x2c, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x2a, 0xb3, 0x01, 0x0a, 0x10, 0x5a, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x0a, + 0x0d, 0x5a, 0x4e, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x46, 0x69, 0x72, 0x73, 0x74, 0x10, 0x00, + 0x12, 0x12, 0x0a, 0x0e, 0x5a, 0x6e, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x5a, 0x6e, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, + 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x10, 0x02, 0x12, 0x11, 0x0a, 0x0d, 0x5a, 0x6e, 0x65, 0x74, 0x49, + 0x6e, 0x73, 0x74, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x5a, 0x6e, + 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x4d, 0x65, 0x73, 0x68, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, + 0x5a, 0x6e, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x48, 0x6f, 0x6e, 0x65, 0x79, 0x50, 0x6f, 0x74, + 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x5a, 0x6e, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x54, 0x72, + 0x61, 0x6e, 0x73, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0c, 0x5a, + 0x4e, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x4c, 0x61, 0x73, 0x74, 0x10, 0xff, 0x01, 0x2a, 0x57, + 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, + 0x05, 0x46, 0x69, 0x72, 0x73, 0x74, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x50, 0x56, 0x34, + 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x50, 0x56, 0x36, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, + 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x49, 0x50, 0x56, 0x34, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, + 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x49, 0x50, 0x56, 0x36, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x04, + 0x4c, 0x61, 0x73, 0x74, 0x10, 0xff, 0x01, 0x2a, 0x43, 0x0a, 0x18, 0x5a, 0x4e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x4f, 0x70, 0x61, 0x71, 0x75, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x5a, 0x4e, 0x65, 0x74, 0x4f, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x56, 0x50, 0x4e, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x5a, 0x4e, 0x65, 0x74, 0x4f, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4c, 0x69, 0x73, 0x70, 0x10, 0x01, 0x2a, 0x47, 0x0a, 0x0d, + 0x5a, 0x63, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, + 0x10, 0x7a, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x53, 0x72, + 0x76, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x6d, 0x61, 0x70, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x10, 0x02, 0x42, 0x3d, 0x0a, 0x15, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, + 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5a, 0x24, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x66, 0x2d, 0x65, 0x64, + 0x67, 0x65, 0x2f, 0x65, 0x76, 0x65, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -896,7 +1166,7 @@ func file_config_netinst_proto_rawDescGZIP() []byte { } var file_config_netinst_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_config_netinst_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_config_netinst_proto_msgTypes = make([]protoimpl.MessageInfo, 7) var file_config_netinst_proto_goTypes = []interface{}{ (ZNetworkInstType)(0), // 0: org.lfedge.eve.config.ZNetworkInstType (AddressType)(0), // 1: org.lfedge.eve.config.AddressType @@ -906,30 +1176,36 @@ var file_config_netinst_proto_goTypes = []interface{}{ (*ZcServicePoint)(nil), // 5: org.lfedge.eve.config.ZcServicePoint (*NetworkInstanceLispConfig)(nil), // 6: org.lfedge.eve.config.NetworkInstanceLispConfig (*IPRoute)(nil), // 7: org.lfedge.eve.config.IPRoute - (*NetworkInstanceConfig)(nil), // 8: org.lfedge.eve.config.NetworkInstanceConfig - (*UUIDandVersion)(nil), // 9: org.lfedge.eve.config.UUIDandVersion - (*Adapter)(nil), // 10: org.lfedge.eve.config.Adapter - (*Ipspec)(nil), // 11: org.lfedge.eve.config.ipspec - (*ZnetStaticDNSEntry)(nil), // 12: org.lfedge.eve.config.ZnetStaticDNSEntry + (*PortProbe)(nil), // 8: org.lfedge.eve.config.PortProbe + (*SpanningTreeProtocol)(nil), // 9: org.lfedge.eve.config.SpanningTreeProtocol + (*NetworkInstanceConfig)(nil), // 10: org.lfedge.eve.config.NetworkInstanceConfig + (*ConnectivityProbe)(nil), // 11: org.lfedge.eve.config.ConnectivityProbe + (*UUIDandVersion)(nil), // 12: org.lfedge.eve.config.UUIDandVersion + (*Adapter)(nil), // 13: org.lfedge.eve.config.Adapter + (*Ipspec)(nil), // 14: org.lfedge.eve.config.ipspec + (*ZnetStaticDNSEntry)(nil), // 15: org.lfedge.eve.config.ZnetStaticDNSEntry } var file_config_netinst_proto_depIdxs = []int32{ 6, // 0: org.lfedge.eve.config.NetworkInstanceOpaqueConfig.lispConfig:type_name -> org.lfedge.eve.config.NetworkInstanceLispConfig 2, // 1: org.lfedge.eve.config.NetworkInstanceOpaqueConfig.type:type_name -> org.lfedge.eve.config.ZNetworkOpaqueConfigType 3, // 2: org.lfedge.eve.config.ZcServicePoint.zsType:type_name -> org.lfedge.eve.config.ZcServiceType 5, // 3: org.lfedge.eve.config.NetworkInstanceLispConfig.LispMSs:type_name -> org.lfedge.eve.config.ZcServicePoint - 9, // 4: org.lfedge.eve.config.NetworkInstanceConfig.uuidandversion:type_name -> org.lfedge.eve.config.UUIDandVersion - 0, // 5: org.lfedge.eve.config.NetworkInstanceConfig.instType:type_name -> org.lfedge.eve.config.ZNetworkInstType - 10, // 6: org.lfedge.eve.config.NetworkInstanceConfig.port:type_name -> org.lfedge.eve.config.Adapter - 4, // 7: org.lfedge.eve.config.NetworkInstanceConfig.cfg:type_name -> org.lfedge.eve.config.NetworkInstanceOpaqueConfig - 1, // 8: org.lfedge.eve.config.NetworkInstanceConfig.ipType:type_name -> org.lfedge.eve.config.AddressType - 11, // 9: org.lfedge.eve.config.NetworkInstanceConfig.ip:type_name -> org.lfedge.eve.config.ipspec - 12, // 10: org.lfedge.eve.config.NetworkInstanceConfig.dns:type_name -> org.lfedge.eve.config.ZnetStaticDNSEntry - 7, // 11: org.lfedge.eve.config.NetworkInstanceConfig.static_routes:type_name -> org.lfedge.eve.config.IPRoute - 12, // [12:12] is the sub-list for method output_type - 12, // [12:12] is the sub-list for method input_type - 12, // [12:12] is the sub-list for extension type_name - 12, // [12:12] is the sub-list for extension extendee - 0, // [0:12] is the sub-list for field type_name + 8, // 4: org.lfedge.eve.config.IPRoute.probe:type_name -> org.lfedge.eve.config.PortProbe + 11, // 5: org.lfedge.eve.config.PortProbe.custom_probe:type_name -> org.lfedge.eve.config.ConnectivityProbe + 12, // 6: org.lfedge.eve.config.NetworkInstanceConfig.uuidandversion:type_name -> org.lfedge.eve.config.UUIDandVersion + 0, // 7: org.lfedge.eve.config.NetworkInstanceConfig.instType:type_name -> org.lfedge.eve.config.ZNetworkInstType + 13, // 8: org.lfedge.eve.config.NetworkInstanceConfig.port:type_name -> org.lfedge.eve.config.Adapter + 9, // 9: org.lfedge.eve.config.NetworkInstanceConfig.stp:type_name -> org.lfedge.eve.config.SpanningTreeProtocol + 4, // 10: org.lfedge.eve.config.NetworkInstanceConfig.cfg:type_name -> org.lfedge.eve.config.NetworkInstanceOpaqueConfig + 1, // 11: org.lfedge.eve.config.NetworkInstanceConfig.ipType:type_name -> org.lfedge.eve.config.AddressType + 14, // 12: org.lfedge.eve.config.NetworkInstanceConfig.ip:type_name -> org.lfedge.eve.config.ipspec + 15, // 13: org.lfedge.eve.config.NetworkInstanceConfig.dns:type_name -> org.lfedge.eve.config.ZnetStaticDNSEntry + 7, // 14: org.lfedge.eve.config.NetworkInstanceConfig.static_routes:type_name -> org.lfedge.eve.config.IPRoute + 15, // [15:15] is the sub-list for method output_type + 15, // [15:15] is the sub-list for method input_type + 15, // [15:15] is the sub-list for extension type_name + 15, // [15:15] is the sub-list for extension extendee + 0, // [0:15] is the sub-list for field type_name } func init() { file_config_netinst_proto_init() } @@ -989,6 +1265,30 @@ func file_config_netinst_proto_init() { } } file_config_netinst_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PortProbe); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_config_netinst_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SpanningTreeProtocol); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_config_netinst_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NetworkInstanceConfig); i { case 0: return &v.state @@ -1007,7 +1307,7 @@ func file_config_netinst_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_config_netinst_proto_rawDesc, NumEnums: 4, - NumMessages: 5, + NumMessages: 7, NumExtensions: 0, NumServices: 0, }, diff --git a/go/info/info.pb.go b/go/info/info.pb.go index c8c8031e..6a0f9e46 100644 --- a/go/info/info.pb.go +++ b/go/info/info.pb.go @@ -1023,6 +1023,7 @@ const ( APICapability_API_CAPABILITY_NETWORK_INSTANCE_ROUTING APICapability = 6 // routing config in NetworkInstanceConfig supported APICapability_API_CAPABILITY_BOOT_MODE APICapability = 7 // Support different boot modes for Edge Applications (VMs) APICapability_API_CAPABILITY_MTU APICapability = 8 // Allows to set MTU for network adapters and network instances + APICapability_API_CAPABILITY_ADAPTER_USER_LABELS APICapability = 9 // Supports user-defined shared network adapter labels ) // Enum value maps for APICapability. @@ -1037,6 +1038,7 @@ var ( 6: "API_CAPABILITY_NETWORK_INSTANCE_ROUTING", 7: "API_CAPABILITY_BOOT_MODE", 8: "API_CAPABILITY_MTU", + 9: "API_CAPABILITY_ADAPTER_USER_LABELS", } APICapability_value = map[string]int32{ "API_CAPABILITY_UNSPECIFIED": 0, @@ -1048,6 +1050,7 @@ var ( "API_CAPABILITY_NETWORK_INSTANCE_ROUTING": 6, "API_CAPABILITY_BOOT_MODE": 7, "API_CAPABILITY_MTU": 8, + "API_CAPABILITY_ADAPTER_USER_LABELS": 9, } ) @@ -6484,16 +6487,33 @@ type ZInfoNetworkInstance struct { Activated bool `protobuf:"varint,7,opt,name=activated,proto3" json:"activated,omitempty"` // Forwarding enabled UpTimeStamp *timestamppb.Timestamp `protobuf:"bytes,8,opt,name=upTimeStamp,proto3" json:"upTimeStamp,omitempty"` // OBSOLETE - No longer used. - SoftwareList *ZInfoSW `protobuf:"bytes,9,opt,name=softwareList,proto3" json:"softwareList,omitempty"` // E.g., VPN version; XXX to be deprecated? - CurrentUplinkIntf string `protobuf:"bytes,10,opt,name=CurrentUplinkIntf,proto3" json:"CurrentUplinkIntf,omitempty"` // current uplink interface in use by this NI - CurrentUplinkAlias string `protobuf:"bytes,11,opt,name=CurrentUplinkAlias,proto3" json:"CurrentUplinkAlias,omitempty"` // user defined namestring alias to this CurrentUplinkIntf, for future - BridgeNum uint32 `protobuf:"varint,20,opt,name=bridgeNum,proto3" json:"bridgeNum,omitempty"` - BridgeName string `protobuf:"bytes,21,opt,name=bridgeName,proto3" json:"bridgeName,omitempty"` - BridgeIPAddr string `protobuf:"bytes,22,opt,name=bridgeIPAddr,proto3" json:"bridgeIPAddr,omitempty"` - IpAssignments []*ZmetIPAssignmentEntry `protobuf:"bytes,23,rep,name=ipAssignments,proto3" json:"ipAssignments,omitempty"` - Vifs []*ZmetVifInfo `protobuf:"bytes,25,rep,name=vifs,proto3" json:"vifs,omitempty"` // Set of vifs on this bridge - Ipv4Eid bool `protobuf:"varint,26,opt,name=ipv4Eid,proto3" json:"ipv4Eid,omitempty"` // Track if this is a CryptoEid with IPv4 EIDs - AssignedAdapters []*ZioBundle `protobuf:"bytes,30,rep,name=assignedAdapters,proto3" json:"assignedAdapters,omitempty"` + SoftwareList *ZInfoSW `protobuf:"bytes,9,opt,name=softwareList,proto3" json:"softwareList,omitempty"` // E.g., VPN version; XXX to be deprecated? + // Current uplink interface in use by this NI. + // Deprecated - network instance can be associated with multiple device ports, + // not just one. To find out which ports are being used by network instance, + // read the reported field "ports" instead (see below). Additionally, "routes" + // informs about the routes configured for the NI and which ports are currently + // used to route the traffic out (this includes info for the default route). + // + // Deprecated: Marked as deprecated in info/info.proto. + CurrentUplinkIntf string `protobuf:"bytes,10,opt,name=CurrentUplinkIntf,proto3" json:"CurrentUplinkIntf,omitempty"` + // User defined namestring alias to this CurrentUplinkIntf. + // Deprecated for the same reason as CurrentUplinkIntf. Additionally, logical + // labels are preferred over aliases. + // + // Deprecated: Marked as deprecated in info/info.proto. + CurrentUplinkAlias string `protobuf:"bytes,11,opt,name=CurrentUplinkAlias,proto3" json:"CurrentUplinkAlias,omitempty"` + // List of device ports used for external connectivity. + // Ports are referenced by logical labels. + // Empty if network instance is air-gapped. + Ports []string `protobuf:"bytes,12,rep,name=ports,proto3" json:"ports,omitempty"` + BridgeNum uint32 `protobuf:"varint,20,opt,name=bridgeNum,proto3" json:"bridgeNum,omitempty"` + BridgeName string `protobuf:"bytes,21,opt,name=bridgeName,proto3" json:"bridgeName,omitempty"` + BridgeIPAddr string `protobuf:"bytes,22,opt,name=bridgeIPAddr,proto3" json:"bridgeIPAddr,omitempty"` + IpAssignments []*ZmetIPAssignmentEntry `protobuf:"bytes,23,rep,name=ipAssignments,proto3" json:"ipAssignments,omitempty"` + Vifs []*ZmetVifInfo `protobuf:"bytes,25,rep,name=vifs,proto3" json:"vifs,omitempty"` // Set of vifs on this bridge + Ipv4Eid bool `protobuf:"varint,26,opt,name=ipv4Eid,proto3" json:"ipv4Eid,omitempty"` // Track if this is a CryptoEid with IPv4 EIDs + AssignedAdapters []*ZioBundle `protobuf:"bytes,30,rep,name=assignedAdapters,proto3" json:"assignedAdapters,omitempty"` // Types that are assignable to InfoContent: // // *ZInfoNetworkInstance_Vinfo @@ -6507,8 +6527,18 @@ type ZInfoNetworkInstance struct { // on their guest side and cannot determine and report what their values are. // The MTU configured for the network instance by the user may differ from the actual MTU // used and reported here if the configured MTU is invalid or conflicts with the MTU - // of the associated device port (see NetworkInstanceConfig.mtu in netinst.proto). + // of the associated device port(s) (see NetworkInstanceConfig.mtu in netinst.proto). Mtu uint32 `protobuf:"varint,42,opt,name=mtu,proto3" json:"mtu,omitempty"` + // Routes configured for the network instance. + // This includes connected routes, DHCP-received routes, user-defined static routes + // (NetworkInstanceConfig.static_routes) and the default route (if any). + // Note that some user-defined static routes might not be applied (and thus not reported + // here) if they do not match IP config of currently used device ports. + // Additionally, static routes with shared port labels (matching multiple ports) + // are reported here each with the logical label of the (single) port, currently selected + // for the route (selected based on connectivity status, port costs, wwan signal strength, + // etc.). + IpRoutes []*IPRoute `protobuf:"bytes,43,rep,name=ip_routes,json=ipRoutes,proto3" json:"ip_routes,omitempty"` } func (x *ZInfoNetworkInstance) Reset() { @@ -6592,6 +6622,7 @@ func (x *ZInfoNetworkInstance) GetSoftwareList() *ZInfoSW { return nil } +// Deprecated: Marked as deprecated in info/info.proto. func (x *ZInfoNetworkInstance) GetCurrentUplinkIntf() string { if x != nil { return x.CurrentUplinkIntf @@ -6599,6 +6630,7 @@ func (x *ZInfoNetworkInstance) GetCurrentUplinkIntf() string { return "" } +// Deprecated: Marked as deprecated in info/info.proto. func (x *ZInfoNetworkInstance) GetCurrentUplinkAlias() string { if x != nil { return x.CurrentUplinkAlias @@ -6606,6 +6638,13 @@ func (x *ZInfoNetworkInstance) GetCurrentUplinkAlias() string { return "" } +func (x *ZInfoNetworkInstance) GetPorts() []string { + if x != nil { + return x.Ports + } + return nil +} + func (x *ZInfoNetworkInstance) GetBridgeNum() uint32 { if x != nil { return x.BridgeNum @@ -6690,6 +6729,13 @@ func (x *ZInfoNetworkInstance) GetMtu() uint32 { return 0 } +func (x *ZInfoNetworkInstance) GetIpRoutes() []*IPRoute { + if x != nil { + return x.IpRoutes + } + return nil +} + type isZInfoNetworkInstance_InfoContent interface { isZInfoNetworkInstance_InfoContent() } @@ -6700,6 +6746,94 @@ type ZInfoNetworkInstance_Vinfo struct { func (*ZInfoNetworkInstance_Vinfo) isZInfoNetworkInstance_InfoContent() {} +// Information about an IP route configured for a network instance. +// The next-hop for the IP route is specified by the "gateway" IP address +// (empty for a connected route) and the output "port". However, if the gateway +// is one of the applications running on the device, the port is actually a virtual +// interface with an EVE-generated interface name and no user-assigned logical label. +// Therefore, in such cases, it is more useful to leave "port" empty and instead use +// the "gateway_app" field to publish the UUID of the application used as the gateway. +type IPRoute struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Destination network address in the CIDR format: / + DestinationNetwork string `protobuf:"bytes,1,opt,name=destination_network,json=destinationNetwork,proto3" json:"destination_network,omitempty"` + // Gateway IP address. + // Empty for connected route. + Gateway string `protobuf:"bytes,2,opt,name=gateway,proto3" json:"gateway,omitempty"` + // Logical label of the output device port for the routed traffic. + // Empty if the gateway is IP address of one of the applications. In that case, + // 'gateway_app' is defined instead. + Port string `protobuf:"bytes,3,opt,name=port,proto3" json:"port,omitempty"` + // UUID of the application used as the gateway for the route. + // Empty if the gateway is external (not one of the apps but outside of the device) + // or this is a connected route for a port (thus gateway is empty). + // In that case, 'port' is defined instead. + GatewayApp string `protobuf:"bytes,4,opt,name=gateway_app,json=gatewayApp,proto3" json:"gateway_app,omitempty"` +} + +func (x *IPRoute) Reset() { + *x = IPRoute{} + if protoimpl.UnsafeEnabled { + mi := &file_info_info_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *IPRoute) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IPRoute) ProtoMessage() {} + +func (x *IPRoute) ProtoReflect() protoreflect.Message { + mi := &file_info_info_proto_msgTypes[51] + 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 IPRoute.ProtoReflect.Descriptor instead. +func (*IPRoute) Descriptor() ([]byte, []int) { + return file_info_info_proto_rawDescGZIP(), []int{51} +} + +func (x *IPRoute) GetDestinationNetwork() string { + if x != nil { + return x.DestinationNetwork + } + return "" +} + +func (x *IPRoute) GetGateway() string { + if x != nil { + return x.Gateway + } + return "" +} + +func (x *IPRoute) GetPort() string { + if x != nil { + return x.Port + } + return "" +} + +func (x *IPRoute) GetGatewayApp() string { + if x != nil { + return x.GatewayApp + } + return "" +} + type UsageInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -6713,7 +6847,7 @@ type UsageInfo struct { func (x *UsageInfo) Reset() { *x = UsageInfo{} if protoimpl.UnsafeEnabled { - mi := &file_info_info_proto_msgTypes[51] + mi := &file_info_info_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6726,7 +6860,7 @@ func (x *UsageInfo) String() string { func (*UsageInfo) ProtoMessage() {} func (x *UsageInfo) ProtoReflect() protoreflect.Message { - mi := &file_info_info_proto_msgTypes[51] + mi := &file_info_info_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6739,7 +6873,7 @@ func (x *UsageInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use UsageInfo.ProtoReflect.Descriptor instead. func (*UsageInfo) Descriptor() ([]byte, []int) { - return file_info_info_proto_rawDescGZIP(), []int{51} + return file_info_info_proto_rawDescGZIP(), []int{52} } func (x *UsageInfo) GetCreateTime() *timestamppb.Timestamp { @@ -6775,7 +6909,7 @@ type VolumeResources struct { func (x *VolumeResources) Reset() { *x = VolumeResources{} if protoimpl.UnsafeEnabled { - mi := &file_info_info_proto_msgTypes[52] + mi := &file_info_info_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6788,7 +6922,7 @@ func (x *VolumeResources) String() string { func (*VolumeResources) ProtoMessage() {} func (x *VolumeResources) ProtoReflect() protoreflect.Message { - mi := &file_info_info_proto_msgTypes[52] + mi := &file_info_info_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6801,7 +6935,7 @@ func (x *VolumeResources) ProtoReflect() protoreflect.Message { // Deprecated: Use VolumeResources.ProtoReflect.Descriptor instead. func (*VolumeResources) Descriptor() ([]byte, []int) { - return file_info_info_proto_rawDescGZIP(), []int{52} + return file_info_info_proto_rawDescGZIP(), []int{53} } func (x *VolumeResources) GetMaxSizeBytes() uint64 { @@ -6846,7 +6980,7 @@ type ZInfoVolume struct { func (x *ZInfoVolume) Reset() { *x = ZInfoVolume{} if protoimpl.UnsafeEnabled { - mi := &file_info_info_proto_msgTypes[53] + mi := &file_info_info_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6859,7 +6993,7 @@ func (x *ZInfoVolume) String() string { func (*ZInfoVolume) ProtoMessage() {} func (x *ZInfoVolume) ProtoReflect() protoreflect.Message { - mi := &file_info_info_proto_msgTypes[53] + mi := &file_info_info_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6872,7 +7006,7 @@ func (x *ZInfoVolume) ProtoReflect() protoreflect.Message { // Deprecated: Use ZInfoVolume.ProtoReflect.Descriptor instead. func (*ZInfoVolume) Descriptor() ([]byte, []int) { - return file_info_info_proto_rawDescGZIP(), []int{53} + return file_info_info_proto_rawDescGZIP(), []int{54} } func (x *ZInfoVolume) GetUuid() string { @@ -6942,7 +7076,7 @@ type ContentResources struct { func (x *ContentResources) Reset() { *x = ContentResources{} if protoimpl.UnsafeEnabled { - mi := &file_info_info_proto_msgTypes[54] + mi := &file_info_info_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6955,7 +7089,7 @@ func (x *ContentResources) String() string { func (*ContentResources) ProtoMessage() {} func (x *ContentResources) ProtoReflect() protoreflect.Message { - mi := &file_info_info_proto_msgTypes[54] + mi := &file_info_info_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6968,7 +7102,7 @@ func (x *ContentResources) ProtoReflect() protoreflect.Message { // Deprecated: Use ContentResources.ProtoReflect.Descriptor instead. func (*ContentResources) Descriptor() ([]byte, []int) { - return file_info_info_proto_rawDescGZIP(), []int{54} + return file_info_info_proto_rawDescGZIP(), []int{55} } func (x *ContentResources) GetCurSizeBytes() uint64 { @@ -7011,7 +7145,7 @@ type ZInfoContentTree struct { func (x *ZInfoContentTree) Reset() { *x = ZInfoContentTree{} if protoimpl.UnsafeEnabled { - mi := &file_info_info_proto_msgTypes[55] + mi := &file_info_info_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7024,7 +7158,7 @@ func (x *ZInfoContentTree) String() string { func (*ZInfoContentTree) ProtoMessage() {} func (x *ZInfoContentTree) ProtoReflect() protoreflect.Message { - mi := &file_info_info_proto_msgTypes[55] + mi := &file_info_info_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7037,7 +7171,7 @@ func (x *ZInfoContentTree) ProtoReflect() protoreflect.Message { // Deprecated: Use ZInfoContentTree.ProtoReflect.Descriptor instead. func (*ZInfoContentTree) Descriptor() ([]byte, []int) { - return file_info_info_proto_rawDescGZIP(), []int{55} + return file_info_info_proto_rawDescGZIP(), []int{56} } func (x *ZInfoContentTree) GetUuid() string { @@ -7135,7 +7269,7 @@ type ZInfoBlob struct { func (x *ZInfoBlob) Reset() { *x = ZInfoBlob{} if protoimpl.UnsafeEnabled { - mi := &file_info_info_proto_msgTypes[56] + mi := &file_info_info_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7148,7 +7282,7 @@ func (x *ZInfoBlob) String() string { func (*ZInfoBlob) ProtoMessage() {} func (x *ZInfoBlob) ProtoReflect() protoreflect.Message { - mi := &file_info_info_proto_msgTypes[56] + mi := &file_info_info_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7161,7 +7295,7 @@ func (x *ZInfoBlob) ProtoReflect() protoreflect.Message { // Deprecated: Use ZInfoBlob.ProtoReflect.Descriptor instead. func (*ZInfoBlob) Descriptor() ([]byte, []int) { - return file_info_info_proto_rawDescGZIP(), []int{56} + return file_info_info_proto_rawDescGZIP(), []int{57} } func (x *ZInfoBlob) GetSha256() string { @@ -7218,7 +7352,7 @@ type ZInfoBlobList struct { func (x *ZInfoBlobList) Reset() { *x = ZInfoBlobList{} if protoimpl.UnsafeEnabled { - mi := &file_info_info_proto_msgTypes[57] + mi := &file_info_info_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7231,7 +7365,7 @@ func (x *ZInfoBlobList) String() string { func (*ZInfoBlobList) ProtoMessage() {} func (x *ZInfoBlobList) ProtoReflect() protoreflect.Message { - mi := &file_info_info_proto_msgTypes[57] + mi := &file_info_info_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7244,7 +7378,7 @@ func (x *ZInfoBlobList) ProtoReflect() protoreflect.Message { // Deprecated: Use ZInfoBlobList.ProtoReflect.Descriptor instead. func (*ZInfoBlobList) Descriptor() ([]byte, []int) { - return file_info_info_proto_rawDescGZIP(), []int{57} + return file_info_info_proto_rawDescGZIP(), []int{58} } func (x *ZInfoBlobList) GetBlob() []*ZInfoBlob { @@ -7289,7 +7423,7 @@ type ZInfoMsg struct { func (x *ZInfoMsg) Reset() { *x = ZInfoMsg{} if protoimpl.UnsafeEnabled { - mi := &file_info_info_proto_msgTypes[58] + mi := &file_info_info_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7302,7 +7436,7 @@ func (x *ZInfoMsg) String() string { func (*ZInfoMsg) ProtoMessage() {} func (x *ZInfoMsg) ProtoReflect() protoreflect.Message { - mi := &file_info_info_proto_msgTypes[58] + mi := &file_info_info_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7315,7 +7449,7 @@ func (x *ZInfoMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use ZInfoMsg.ProtoReflect.Descriptor instead. func (*ZInfoMsg) Descriptor() ([]byte, []int) { - return file_info_info_proto_rawDescGZIP(), []int{58} + return file_info_info_proto_rawDescGZIP(), []int{59} } func (x *ZInfoMsg) GetZtype() ZInfoTypes { @@ -7538,7 +7672,7 @@ type Capabilities struct { func (x *Capabilities) Reset() { *x = Capabilities{} if protoimpl.UnsafeEnabled { - mi := &file_info_info_proto_msgTypes[59] + mi := &file_info_info_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7551,7 +7685,7 @@ func (x *Capabilities) String() string { func (*Capabilities) ProtoMessage() {} func (x *Capabilities) ProtoReflect() protoreflect.Message { - mi := &file_info_info_proto_msgTypes[59] + mi := &file_info_info_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7564,7 +7698,7 @@ func (x *Capabilities) ProtoReflect() protoreflect.Message { // Deprecated: Use Capabilities.ProtoReflect.Descriptor instead. func (*Capabilities) Descriptor() ([]byte, []int) { - return file_info_info_proto_rawDescGZIP(), []int{59} + return file_info_info_proto_rawDescGZIP(), []int{60} } func (x *Capabilities) GetHWAssistedVirtualization() bool { @@ -7597,7 +7731,7 @@ type ZInfoAppInstMetaData struct { func (x *ZInfoAppInstMetaData) Reset() { *x = ZInfoAppInstMetaData{} if protoimpl.UnsafeEnabled { - mi := &file_info_info_proto_msgTypes[60] + mi := &file_info_info_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7610,7 +7744,7 @@ func (x *ZInfoAppInstMetaData) String() string { func (*ZInfoAppInstMetaData) ProtoMessage() {} func (x *ZInfoAppInstMetaData) ProtoReflect() protoreflect.Message { - mi := &file_info_info_proto_msgTypes[60] + mi := &file_info_info_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7623,7 +7757,7 @@ func (x *ZInfoAppInstMetaData) ProtoReflect() protoreflect.Message { // Deprecated: Use ZInfoAppInstMetaData.ProtoReflect.Descriptor instead. func (*ZInfoAppInstMetaData) Descriptor() ([]byte, []int) { - return file_info_info_proto_rawDescGZIP(), []int{60} + return file_info_info_proto_rawDescGZIP(), []int{61} } func (x *ZInfoAppInstMetaData) GetUuid() string { @@ -7668,7 +7802,7 @@ type ZInfoEdgeview struct { func (x *ZInfoEdgeview) Reset() { *x = ZInfoEdgeview{} if protoimpl.UnsafeEnabled { - mi := &file_info_info_proto_msgTypes[61] + mi := &file_info_info_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7681,7 +7815,7 @@ func (x *ZInfoEdgeview) String() string { func (*ZInfoEdgeview) ProtoMessage() {} func (x *ZInfoEdgeview) ProtoReflect() protoreflect.Message { - mi := &file_info_info_proto_msgTypes[61] + mi := &file_info_info_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7694,7 +7828,7 @@ func (x *ZInfoEdgeview) ProtoReflect() protoreflect.Message { // Deprecated: Use ZInfoEdgeview.ProtoReflect.Descriptor instead. func (*ZInfoEdgeview) Descriptor() ([]byte, []int) { - return file_info_info_proto_rawDescGZIP(), []int{61} + return file_info_info_proto_rawDescGZIP(), []int{62} } func (x *ZInfoEdgeview) GetExpireTime() *timestamppb.Timestamp { @@ -7778,7 +7912,7 @@ type ZInfoLocation struct { func (x *ZInfoLocation) Reset() { *x = ZInfoLocation{} if protoimpl.UnsafeEnabled { - mi := &file_info_info_proto_msgTypes[62] + mi := &file_info_info_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7791,7 +7925,7 @@ func (x *ZInfoLocation) String() string { func (*ZInfoLocation) ProtoMessage() {} func (x *ZInfoLocation) ProtoReflect() protoreflect.Message { - mi := &file_info_info_proto_msgTypes[62] + mi := &file_info_info_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7804,7 +7938,7 @@ func (x *ZInfoLocation) ProtoReflect() protoreflect.Message { // Deprecated: Use ZInfoLocation.ProtoReflect.Descriptor instead. func (*ZInfoLocation) Descriptor() ([]byte, []int) { - return file_info_info_proto_rawDescGZIP(), []int{62} + return file_info_info_proto_rawDescGZIP(), []int{63} } func (x *ZInfoLocation) GetLatitude() float64 { @@ -8807,7 +8941,7 @@ var file_info_info_proto_rawDesc = []byte{ 0x0a, 0x04, 0x63, 0x6f, 0x6e, 0x6e, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x56, 0x70, 0x6e, 0x43, 0x6f, 0x6e, 0x6e, 0x52, - 0x04, 0x63, 0x6f, 0x6e, 0x6e, 0x22, 0xc6, 0x07, 0x0a, 0x14, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x4e, + 0x04, 0x63, 0x6f, 0x6e, 0x6e, 0x22, 0x9f, 0x08, 0x0a, 0x14, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, @@ -8827,611 +8961,628 @@ var file_info_info_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x53, 0x57, 0x52, 0x0c, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x2c, 0x0a, 0x11, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x6c, 0x69, 0x6e, - 0x6b, 0x49, 0x6e, 0x74, 0x66, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x43, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x49, 0x6e, 0x74, 0x66, 0x12, 0x2e, - 0x0a, 0x12, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x41, - 0x6c, 0x69, 0x61, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x43, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x1c, - 0x0a, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x14, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, - 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, - 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x50, 0x41, 0x64, 0x64, 0x72, 0x18, 0x16, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x50, 0x41, 0x64, 0x64, 0x72, - 0x12, 0x50, 0x0a, 0x0d, 0x69, 0x70, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, - 0x73, 0x18, 0x17, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, - 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x6d, - 0x65, 0x74, 0x49, 0x50, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x52, 0x0d, 0x69, 0x70, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x12, 0x34, 0x0a, 0x04, 0x76, 0x69, 0x66, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x20, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, - 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x6d, 0x65, 0x74, 0x56, 0x69, 0x66, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x04, 0x76, 0x69, 0x66, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x70, 0x76, 0x34, - 0x45, 0x69, 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x70, 0x76, 0x34, 0x45, - 0x69, 0x64, 0x12, 0x4a, 0x0a, 0x10, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x41, 0x64, - 0x61, 0x70, 0x74, 0x65, 0x72, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, - 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, - 0x66, 0x6f, 0x2e, 0x5a, 0x69, 0x6f, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x10, 0x61, 0x73, - 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x41, 0x64, 0x61, 0x70, 0x74, 0x65, 0x72, 0x73, 0x12, 0x35, - 0x0a, 0x05, 0x76, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x12, 0x30, 0x0a, 0x11, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x6c, 0x69, 0x6e, + 0x6b, 0x49, 0x6e, 0x74, 0x66, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, 0x18, 0x01, 0x52, + 0x11, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x49, 0x6e, + 0x74, 0x66, 0x12, 0x32, 0x0a, 0x12, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x6c, + 0x69, 0x6e, 0x6b, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02, + 0x18, 0x01, 0x52, 0x12, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x6c, 0x69, 0x6e, + 0x6b, 0x41, 0x6c, 0x69, 0x61, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, + 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, + 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x09, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x62, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x49, 0x50, 0x41, 0x64, 0x64, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0c, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x49, 0x50, 0x41, 0x64, 0x64, 0x72, 0x12, 0x50, + 0x0a, 0x0d, 0x69, 0x70, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, + 0x17, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, + 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x6d, 0x65, 0x74, + 0x49, 0x50, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0d, 0x69, 0x70, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, + 0x12, 0x34, 0x0a, 0x04, 0x76, 0x69, 0x66, 0x73, 0x18, 0x19, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, + 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, + 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x6d, 0x65, 0x74, 0x56, 0x69, 0x66, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x04, 0x76, 0x69, 0x66, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x70, 0x76, 0x34, 0x45, 0x69, + 0x64, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x70, 0x76, 0x34, 0x45, 0x69, 0x64, + 0x12, 0x4a, 0x0a, 0x10, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x41, 0x64, 0x61, 0x70, + 0x74, 0x65, 0x72, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x72, 0x67, + 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, + 0x2e, 0x5a, 0x69, 0x6f, 0x42, 0x75, 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x10, 0x61, 0x73, 0x73, 0x69, + 0x67, 0x6e, 0x65, 0x64, 0x41, 0x64, 0x61, 0x70, 0x74, 0x65, 0x72, 0x73, 0x12, 0x35, 0x0a, 0x05, + 0x76, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x72, + 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, + 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x56, 0x70, 0x6e, 0x48, 0x00, 0x52, 0x05, 0x76, 0x69, + 0x6e, 0x66, 0x6f, 0x12, 0x3e, 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x45, 0x72, + 0x72, 0x18, 0x28, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, + 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, + 0x45, 0x72, 0x72, 0x12, 0x40, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x29, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, + 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x2a, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x12, 0x39, 0x0a, 0x09, 0x69, 0x70, 0x5f, 0x72, 0x6f, + 0x75, 0x74, 0x65, 0x73, 0x18, 0x2b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6f, 0x72, 0x67, + 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, + 0x2e, 0x49, 0x50, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x08, 0x69, 0x70, 0x52, 0x6f, 0x75, 0x74, + 0x65, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x4a, 0x04, 0x08, 0x18, 0x10, 0x19, 0x22, 0x89, 0x01, 0x0a, 0x07, 0x49, 0x50, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x12, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x18, 0x0a, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x12, 0x12, + 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x6f, + 0x72, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x5f, 0x61, 0x70, + 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x41, 0x70, 0x70, 0x22, 0xb7, 0x01, 0x0a, 0x09, 0x55, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, + 0x01, 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, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, + 0x08, 0x72, 0x65, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x08, 0x72, 0x65, 0x66, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x16, 0x6c, 0x61, 0x73, + 0x74, 0x52, 0x65, 0x66, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, + 0x69, 0x6d, 0x65, 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, 0x16, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x66, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x59, 0x0a, + 0x0f, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x53, + 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0x8b, 0x03, 0x0a, 0x0b, 0x5a, 0x49, 0x6e, + 0x66, 0x6f, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x34, + 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, - 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x56, 0x70, 0x6e, 0x48, 0x00, 0x52, 0x05, - 0x76, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x3e, 0x0a, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x45, 0x72, 0x72, 0x18, 0x28, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, - 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x45, 0x72, 0x72, 0x12, 0x40, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x29, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, - 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x2a, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x42, 0x0d, 0x0a, 0x0b, 0x49, 0x6e, 0x66, - 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x18, 0x10, 0x19, 0x22, 0xb7, - 0x01, 0x0a, 0x09, 0x55, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, 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, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x66, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x72, 0x65, 0x66, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x16, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x66, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 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, 0x16, 0x6c, 0x61, 0x73, 0x74, 0x52, 0x65, 0x66, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x59, 0x0a, 0x0f, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x6d, - 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, - 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, - 0x74, 0x65, 0x73, 0x22, 0x8b, 0x03, 0x0a, 0x0b, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x6e, 0x66, 0x6f, 0x2e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, + 0x73, 0x61, 0x67, 0x65, 0x12, 0x42, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, + 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, + 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x53, + 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, + 0x12, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, + 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x67, 0x72, + 0x65, 0x73, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, + 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x72, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, + 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x45, 0x72, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x36, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, + 0x72, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0c, 0x63, 0x75, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xc9, + 0x03, 0x0a, 0x10, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, + 0x72, 0x65, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, - 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x75, 0x73, 0x61, - 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, - 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x55, - 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x42, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, - 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, - 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x53, 0x77, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x67, - 0x72, 0x65, 0x73, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x65, - 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x45, 0x72, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x72, + 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, + 0x32, 0x35, 0x36, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x61, 0x32, 0x35, + 0x36, 0x12, 0x43, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, + 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, + 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x55, 0x73, 0x61, 0x67, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, - 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x76, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x45, 0x72, 0x72, 0x12, 0x29, 0x0a, 0x10, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0x36, 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x53, 0x69, 0x7a, 0x65, - 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x63, 0x75, 0x72, - 0x53, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xc9, 0x03, 0x0a, 0x10, 0x5a, 0x49, - 0x6e, 0x66, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x65, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, - 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x12, 0x43, 0x0a, 0x09, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, - 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x73, 0x12, 0x34, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, - 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, - 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x53, 0x77, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x12, - 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, - 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, - 0x73, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x03, - 0x65, 0x72, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, - 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x03, 0x65, 0x72, 0x72, 0x12, 0x2a, - 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x4c, 0x69, - 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, - 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x10, 0x67, 0x65, - 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xb5, 0x02, 0x0a, 0x09, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x42, - 0x6c, 0x6f, 0x62, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x12, 0x43, 0x0a, 0x09, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, - 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, - 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x12, 0x34, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, - 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x55, 0x73, 0x61, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, - 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x53, 0x77, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x70, + 0x6f, 0x2e, 0x5a, 0x53, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x65, 0x72, + 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, - 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x03, 0x65, - 0x72, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, - 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x03, 0x65, 0x72, 0x72, 0x22, 0x43, 0x0a, - 0x0d, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x6c, 0x6f, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x32, - 0x0a, 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, - 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, - 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x6c, 0x6f, 0x62, 0x52, 0x04, 0x62, 0x6c, - 0x6f, 0x62, 0x22, 0xf6, 0x07, 0x0a, 0x08, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x4d, 0x73, 0x67, 0x12, - 0x35, 0x0a, 0x05, 0x7a, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, + 0x65, 0x12, 0x30, 0x0a, 0x03, 0x65, 0x72, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, - 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, - 0x05, 0x7a, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x76, 0x49, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x76, 0x49, 0x64, 0x12, 0x38, 0x0a, 0x05, - 0x64, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x72, - 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, - 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x48, 0x00, 0x52, - 0x05, 0x64, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x35, 0x0a, 0x05, 0x61, 0x69, 0x6e, 0x66, 0x6f, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, - 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, - 0x6f, 0x41, 0x70, 0x70, 0x48, 0x00, 0x52, 0x05, 0x61, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x43, 0x0a, - 0x06, 0x6e, 0x69, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, + 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x03, + 0x65, 0x72, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, + 0x53, 0x68, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x63, + 0x6f, 0x6d, 0x70, 0x6f, 0x6e, 0x65, 0x6e, 0x74, 0x53, 0x68, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x29, 0x0a, 0x10, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xb5, 0x02, 0x0a, 0x09, 0x5a, + 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x6c, 0x6f, 0x62, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x68, 0x61, 0x32, + 0x35, 0x36, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, + 0x12, 0x43, 0x0a, 0x09, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, + 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x52, 0x09, 0x72, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, + 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x55, 0x73, 0x61, 0x67, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x12, 0x33, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6f, 0x72, 0x67, + 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, + 0x2e, 0x5a, 0x53, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x12, 0x2e, 0x0a, 0x12, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x65, 0x72, 0x63, + 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x70, 0x72, + 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, + 0x12, 0x30, 0x0a, 0x03, 0x65, 0x72, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, - 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, 0x06, 0x6e, 0x69, 0x69, 0x6e, - 0x66, 0x6f, 0x12, 0x38, 0x0a, 0x05, 0x76, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, - 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x05, 0x76, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x3d, 0x0a, 0x05, - 0x63, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, - 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, - 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x72, - 0x65, 0x65, 0x48, 0x00, 0x52, 0x05, 0x63, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x3a, 0x0a, 0x05, 0x62, - 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x72, 0x67, + 0x6e, 0x66, 0x6f, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x03, 0x65, + 0x72, 0x72, 0x22, 0x43, 0x0a, 0x0d, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x6c, 0x6f, 0x62, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, + 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x6c, 0x6f, + 0x62, 0x52, 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x22, 0xf6, 0x07, 0x0a, 0x08, 0x5a, 0x49, 0x6e, 0x66, + 0x6f, 0x4d, 0x73, 0x67, 0x12, 0x35, 0x0a, 0x05, 0x7a, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, + 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x54, + 0x79, 0x70, 0x65, 0x73, 0x52, 0x05, 0x7a, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, + 0x65, 0x76, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x76, 0x49, + 0x64, 0x12, 0x38, 0x0a, 0x05, 0x64, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, + 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x48, 0x00, 0x52, 0x05, 0x64, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x35, 0x0a, 0x05, 0x61, + 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, - 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x6c, 0x6f, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x48, 0x00, - 0x52, 0x05, 0x62, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x45, 0x0a, 0x07, 0x61, 0x6d, 0x64, 0x69, 0x6e, - 0x66, 0x6f, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, - 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, - 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x44, - 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x07, 0x61, 0x6d, 0x64, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x3c, - 0x0a, 0x06, 0x65, 0x76, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, - 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x64, 0x67, 0x65, 0x76, 0x69, - 0x65, 0x77, 0x48, 0x00, 0x52, 0x06, 0x65, 0x76, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x3c, 0x0a, 0x06, - 0x68, 0x77, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, - 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, - 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, - 0x48, 0x00, 0x52, 0x06, 0x68, 0x77, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x3e, 0x0a, 0x07, 0x6c, 0x6f, - 0x63, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x72, - 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, - 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, - 0x00, 0x52, 0x07, 0x6c, 0x6f, 0x63, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x47, 0x0a, 0x09, 0x70, 0x61, - 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x70, 0x70, 0x48, 0x00, 0x52, 0x05, 0x61, 0x69, 0x6e, + 0x66, 0x6f, 0x12, 0x43, 0x0a, 0x06, 0x6e, 0x69, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, + 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x4e, 0x65, + 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x48, 0x00, 0x52, + 0x06, 0x6e, 0x69, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x38, 0x0a, 0x05, 0x76, 0x69, 0x6e, 0x66, 0x6f, + 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, + 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, + 0x66, 0x6f, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x48, 0x00, 0x52, 0x05, 0x76, 0x69, 0x6e, 0x66, + 0x6f, 0x12, 0x3d, 0x0a, 0x05, 0x63, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, + 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x6f, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x54, 0x72, 0x65, 0x65, 0x48, 0x00, 0x52, 0x05, 0x63, 0x69, 0x6e, 0x66, 0x6f, + 0x12, 0x3a, 0x0a, 0x05, 0x62, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x22, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, + 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x6c, 0x6f, 0x62, 0x4c, + 0x69, 0x73, 0x74, 0x48, 0x00, 0x52, 0x05, 0x62, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x45, 0x0a, 0x07, + 0x61, 0x6d, 0x64, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, - 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x74, 0x63, 0x68, 0x45, 0x6e, - 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x48, 0x00, 0x52, 0x09, 0x70, 0x61, 0x74, 0x63, 0x68, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6e, - 0x6f, 0x64, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, + 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x07, 0x61, 0x6d, 0x64, 0x69, + 0x6e, 0x66, 0x6f, 0x12, 0x3c, 0x0a, 0x06, 0x65, 0x76, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x11, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, + 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x45, + 0x64, 0x67, 0x65, 0x76, 0x69, 0x65, 0x77, 0x48, 0x00, 0x52, 0x06, 0x65, 0x76, 0x69, 0x6e, 0x66, + 0x6f, 0x12, 0x3c, 0x0a, 0x06, 0x68, 0x77, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x12, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, + 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x48, 0x61, 0x72, + 0x64, 0x77, 0x61, 0x72, 0x65, 0x48, 0x00, 0x52, 0x06, 0x68, 0x77, 0x69, 0x6e, 0x66, 0x6f, 0x12, + 0x3e, 0x0a, 0x07, 0x6c, 0x6f, 0x63, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x22, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, + 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x07, 0x6c, 0x6f, 0x63, 0x69, 0x6e, 0x66, 0x6f, 0x12, + 0x47, 0x0a, 0x09, 0x70, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x14, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, + 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, + 0x74, 0x63, 0x68, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x48, 0x00, 0x52, 0x09, 0x70, + 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x4a, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, + 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, + 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, + 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x47, 0x0a, 0x0b, 0x6e, 0x74, 0x70, 0x5f, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, - 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, - 0x48, 0x00, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x12, - 0x47, 0x0a, 0x0b, 0x6e, 0x74, 0x70, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x17, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, - 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x5a, 0x49, 0x6e, 0x66, 0x6f, - 0x4e, 0x54, 0x50, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x48, 0x00, 0x52, 0x0a, 0x6e, 0x74, - 0x70, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0b, 0x61, 0x74, 0x54, 0x69, - 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x4e, 0x54, 0x50, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x48, + 0x00, 0x52, 0x0a, 0x6e, 0x74, 0x70, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x3c, 0x0a, + 0x0b, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x06, 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, 0x0b, + 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0x0a, 0x0b, 0x49, + 0x6e, 0x66, 0x6f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x15, 0x10, 0x16, + 0x22, 0x76, 0x0a, 0x0c, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, + 0x12, 0x3a, 0x0a, 0x18, 0x48, 0x57, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x56, 0x69, + 0x72, 0x74, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x18, 0x48, 0x57, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x56, 0x69, + 0x72, 0x74, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x10, + 0x49, 0x4f, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x49, 0x4f, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, + 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7c, 0x0a, 0x14, 0x5a, 0x49, 0x6e, 0x66, + 0x6f, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x75, 0x75, 0x69, 0x64, 0x12, 0x3c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, + 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, + 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, + 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe2, 0x01, 0x0a, 0x0d, 0x5a, 0x49, 0x6e, 0x66, 0x6f, + 0x45, 0x64, 0x67, 0x65, 0x76, 0x69, 0x65, 0x77, 0x12, 0x3b, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, + 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 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, 0x0b, 0x61, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x0d, 0x0a, 0x0b, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x4a, 0x04, 0x08, 0x15, 0x10, 0x16, 0x22, 0x76, 0x0a, 0x0c, 0x43, - 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x18, 0x48, - 0x57, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x48, - 0x57, 0x41, 0x73, 0x73, 0x69, 0x73, 0x74, 0x65, 0x64, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x10, 0x49, 0x4f, 0x56, 0x69, 0x72, - 0x74, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x10, 0x49, 0x4f, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x69, 0x7a, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x7c, 0x0a, 0x14, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x70, 0x70, 0x49, - 0x6e, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x75, - 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, - 0x3c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, - 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, - 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x44, - 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x22, 0xe2, 0x01, 0x0a, 0x0d, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x45, 0x64, 0x67, 0x65, 0x76, - 0x69, 0x65, 0x77, 0x12, 0x3b, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x01, 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, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x12, 0x3d, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x02, 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, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, - 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x76, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x08, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, 0x76, 0x12, 0x1b, 0x0a, 0x09, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x08, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x70, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x22, 0xe8, 0x03, 0x0a, 0x0d, 0x5a, 0x49, 0x6e, 0x66, 0x6f, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x6c, 0x61, 0x74, 0x69, - 0x74, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x6c, 0x61, 0x74, 0x69, - 0x74, 0x75, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x6f, 0x6e, 0x67, 0x69, 0x74, 0x75, - 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6c, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x61, 0x6c, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x3f, - 0x0a, 0x0d, 0x75, 0x74, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 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, 0x0c, 0x75, 0x74, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, - 0x5a, 0x0a, 0x16, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x5f, 0x72, 0x65, - 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, - 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x52, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, - 0x6c, 0x69, 0x74, 0x79, 0x52, 0x15, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, - 0x52, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x56, 0x0a, 0x14, 0x76, - 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, - 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, - 0x4c, 0x6f, 0x63, 0x52, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x13, - 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x52, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, - 0x69, 0x74, 0x79, 0x12, 0x35, 0x0a, 0x16, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, - 0x6c, 0x5f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x79, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x15, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x55, - 0x6e, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x79, 0x12, 0x31, 0x0a, 0x14, 0x76, 0x65, - 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, - 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, - 0x61, 0x6c, 0x55, 0x6e, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x79, 0x12, 0x22, 0x0a, - 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x2a, 0x75, 0x0a, 0x11, 0x44, 0x65, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, - 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x65, 0x70, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x10, 0x00, 0x12, 0x16, - 0x0a, 0x12, 0x44, 0x65, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x47, - 0x61, 0x75, 0x67, 0x65, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x44, 0x65, 0x70, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x10, 0x02, - 0x12, 0x16, 0x0a, 0x12, 0x44, 0x65, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, - 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0x03, 0x2a, 0xfe, 0x01, 0x0a, 0x0a, 0x5a, 0x49, 0x6e, - 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x09, 0x0a, 0x05, 0x5a, 0x69, 0x4e, 0x6f, 0x70, - 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x5a, 0x69, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x10, 0x01, - 0x12, 0x09, 0x0a, 0x05, 0x5a, 0x69, 0x41, 0x70, 0x70, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x5a, - 0x69, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x5a, 0x69, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x10, 0x07, - 0x12, 0x11, 0x0a, 0x0d, 0x5a, 0x69, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x65, - 0x65, 0x10, 0x08, 0x12, 0x0e, 0x0a, 0x0a, 0x5a, 0x69, 0x42, 0x6c, 0x6f, 0x62, 0x4c, 0x69, 0x73, - 0x74, 0x10, 0x09, 0x12, 0x15, 0x0a, 0x11, 0x5a, 0x69, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, - 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x10, 0x0a, 0x12, 0x0e, 0x0a, 0x0a, 0x5a, 0x69, - 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x10, 0x0b, 0x12, 0x0e, 0x0a, 0x0a, 0x5a, 0x69, - 0x45, 0x64, 0x67, 0x65, 0x76, 0x69, 0x65, 0x77, 0x10, 0x0c, 0x12, 0x0e, 0x0a, 0x0a, 0x5a, 0x69, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x0d, 0x12, 0x13, 0x0a, 0x0f, 0x5a, 0x69, - 0x50, 0x61, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x10, 0x0e, 0x12, - 0x10, 0x0a, 0x0c, 0x5a, 0x69, 0x4e, 0x54, 0x50, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x10, - 0x10, 0x22, 0x04, 0x08, 0x02, 0x10, 0x02, 0x22, 0x04, 0x08, 0x04, 0x10, 0x04, 0x22, 0x04, 0x08, - 0x05, 0x10, 0x05, 0x22, 0x04, 0x08, 0x0f, 0x10, 0x0f, 0x2a, 0x91, 0x03, 0x0a, 0x08, 0x5a, 0x53, - 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, - 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x01, - 0x12, 0x14, 0x0a, 0x10, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x53, 0x54, 0x41, - 0x52, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x4f, - 0x41, 0x44, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x44, 0x45, 0x4c, 0x49, 0x56, 0x45, - 0x52, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, - 0x45, 0x44, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4f, 0x4f, 0x54, 0x49, 0x4e, 0x47, 0x10, - 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x07, 0x12, 0x0b, - 0x0a, 0x07, 0x48, 0x41, 0x4c, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x08, 0x12, 0x0a, 0x0a, 0x06, 0x48, - 0x41, 0x4c, 0x54, 0x45, 0x44, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x45, 0x53, 0x54, 0x41, - 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x0a, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x55, 0x52, 0x47, 0x49, - 0x4e, 0x47, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x4f, 0x4c, 0x56, 0x49, 0x4e, - 0x47, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0c, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x45, 0x53, 0x4f, 0x4c, - 0x56, 0x45, 0x44, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0d, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x52, 0x45, - 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x0e, 0x12, 0x12, - 0x0a, 0x0e, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, - 0x10, 0x0f, 0x12, 0x0d, 0x0a, 0x09, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, 0x49, 0x4e, 0x47, 0x10, - 0x10, 0x12, 0x0c, 0x0a, 0x08, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x11, 0x12, - 0x0b, 0x0a, 0x07, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x12, 0x12, 0x0a, 0x0a, 0x06, - 0x4c, 0x4f, 0x41, 0x44, 0x45, 0x44, 0x10, 0x13, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x57, 0x41, 0x49, - 0x54, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, - 0x10, 0x14, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x15, 0x12, 0x11, 0x0a, - 0x0d, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x45, 0x44, 0x10, 0x16, - 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x17, 0x12, 0x0e, 0x0a, - 0x0a, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x49, 0x4e, 0x47, 0x10, 0x18, 0x2a, 0x99, 0x02, - 0x0a, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x4e, 0x54, 0x49, - 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x5f, - 0x4f, 0x53, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x53, - 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x41, 0x44, 0x41, 0x50, 0x54, 0x45, 0x52, 0x10, 0x02, 0x12, - 0x10, 0x0a, 0x0c, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x56, 0x41, 0x55, 0x4c, 0x54, 0x10, - 0x03, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x41, 0x54, 0x54, 0x45, - 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x4e, 0x54, - 0x49, 0x54, 0x59, 0x5f, 0x41, 0x50, 0x50, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, - 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x4f, 0x52, - 0x54, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x4e, 0x45, - 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x07, 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x4e, 0x54, 0x49, 0x54, - 0x59, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, - 0x43, 0x45, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x43, - 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x45, 0x45, 0x10, 0x09, 0x12, 0x17, 0x0a, - 0x13, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x5f, - 0x42, 0x4c, 0x4f, 0x42, 0x10, 0x0a, 0x12, 0x11, 0x0a, 0x0d, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, - 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x0b, 0x2a, 0x63, 0x0a, 0x08, 0x53, 0x65, 0x76, - 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, - 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x13, 0x0a, 0x0f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x4e, 0x4f, 0x54, 0x49, - 0x43, 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, - 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x45, - 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x2a, 0x4e, - 0x0a, 0x16, 0x48, 0x77, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x4d, 0x6f, 0x64, 0x75, - 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, - 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x4f, 0x54, 0x46, 0x4f, 0x55, 0x4e, - 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, - 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x2a, 0x88, - 0x01, 0x0a, 0x13, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x63, 0x41, 0x74, 0x52, 0x65, 0x73, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x41, 0x54, 0x41, 0x53, 0x45, - 0x43, 0x5f, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, - 0x4e, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x41, 0x54, 0x41, 0x53, 0x45, 0x43, 0x5f, 0x41, - 0x54, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, - 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x41, 0x54, 0x41, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x5f, - 0x52, 0x45, 0x53, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x19, - 0x0a, 0x15, 0x44, 0x41, 0x54, 0x41, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x53, - 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x2a, 0x3f, 0x0a, 0x09, 0x50, 0x43, 0x52, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x43, 0x52, 0x5f, 0x55, 0x4e, - 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x50, 0x43, 0x52, 0x5f, 0x45, - 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x50, 0x43, 0x52, 0x5f, - 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x2a, 0x4d, 0x0a, 0x07, 0x53, 0x69, - 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x49, 0x4d, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x15, 0x0a, 0x11, 0x53, 0x49, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x48, 0x59, 0x53, - 0x49, 0x43, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x49, 0x4d, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x45, 0x53, 0x49, 0x4d, 0x10, 0x02, 0x2a, 0xa0, 0x02, 0x0a, 0x17, 0x5a, 0x43, - 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6e, 0x67, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x26, 0x5a, 0x5f, 0x43, 0x45, 0x4c, 0x4c, 0x55, - 0x4c, 0x41, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x26, 0x0a, 0x22, 0x5a, 0x5f, 0x43, 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, - 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, - 0x4f, 0x46, 0x46, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x28, 0x0a, 0x24, 0x5a, 0x5f, 0x43, - 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, - 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x41, 0x44, 0x49, 0x4f, 0x5f, 0x4f, 0x46, - 0x46, 0x10, 0x02, 0x12, 0x25, 0x0a, 0x21, 0x5a, 0x5f, 0x43, 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, - 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x03, 0x12, 0x33, 0x0a, 0x2f, 0x5a, 0x5f, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 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, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, + 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x64, 0x65, + 0x76, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x65, + 0x76, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x61, 0x70, 0x70, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x41, 0x70, 0x70, 0x12, 0x1b, + 0x0a, 0x09, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x78, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x08, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, 0x78, 0x74, 0x22, 0xe8, 0x03, 0x0a, 0x0d, + 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, + 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, + 0x08, 0x6c, 0x61, 0x74, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x6e, + 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x09, 0x6c, 0x6f, + 0x6e, 0x67, 0x69, 0x74, 0x75, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x6c, 0x74, 0x69, 0x74, + 0x75, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x61, 0x6c, 0x74, 0x69, 0x74, + 0x75, 0x64, 0x65, 0x12, 0x3f, 0x0a, 0x0d, 0x75, 0x74, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 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, 0x0c, 0x75, 0x74, 0x63, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x12, 0x5a, 0x0a, 0x16, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, 0x6e, 0x74, + 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, + 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x52, 0x65, + 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x15, 0x68, 0x6f, 0x72, 0x69, 0x7a, + 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x52, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x12, 0x56, 0x0a, 0x14, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x72, 0x65, 0x6c, + 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, + 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, + 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x4c, 0x6f, 0x63, 0x52, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x52, 0x13, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x52, 0x65, 0x6c, + 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x35, 0x0a, 0x16, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x6f, 0x6e, 0x74, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, + 0x74, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x15, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x6f, + 0x6e, 0x74, 0x61, 0x6c, 0x55, 0x6e, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x79, 0x12, + 0x31, 0x0a, 0x14, 0x76, 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x75, 0x6e, 0x63, 0x65, + 0x72, 0x74, 0x61, 0x69, 0x6e, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x76, + 0x65, 0x72, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x55, 0x6e, 0x63, 0x65, 0x72, 0x74, 0x61, 0x69, 0x6e, + 0x74, 0x79, 0x12, 0x22, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, + 0x6c, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2a, 0x75, 0x0a, 0x11, 0x44, 0x65, 0x70, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x12, 0x44, + 0x65, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x4f, 0x74, 0x68, 0x65, + 0x72, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x65, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x49, 0x74, 0x65, 0x6d, 0x47, 0x61, 0x75, 0x67, 0x65, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x44, + 0x65, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x65, 0x72, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x65, 0x70, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0x03, 0x2a, 0xfe, 0x01, + 0x0a, 0x0a, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x09, 0x0a, 0x05, + 0x5a, 0x69, 0x4e, 0x6f, 0x70, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x5a, 0x69, 0x44, 0x65, 0x76, + 0x69, 0x63, 0x65, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x5a, 0x69, 0x41, 0x70, 0x70, 0x10, 0x03, + 0x12, 0x15, 0x0a, 0x11, 0x5a, 0x69, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x10, 0x06, 0x12, 0x0c, 0x0a, 0x08, 0x5a, 0x69, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x5a, 0x69, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x54, 0x72, 0x65, 0x65, 0x10, 0x08, 0x12, 0x0e, 0x0a, 0x0a, 0x5a, 0x69, 0x42, 0x6c, + 0x6f, 0x62, 0x4c, 0x69, 0x73, 0x74, 0x10, 0x09, 0x12, 0x15, 0x0a, 0x11, 0x5a, 0x69, 0x41, 0x70, + 0x70, 0x49, 0x6e, 0x73, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x10, 0x0a, 0x12, + 0x0e, 0x0a, 0x0a, 0x5a, 0x69, 0x48, 0x61, 0x72, 0x64, 0x77, 0x61, 0x72, 0x65, 0x10, 0x0b, 0x12, + 0x0e, 0x0a, 0x0a, 0x5a, 0x69, 0x45, 0x64, 0x67, 0x65, 0x76, 0x69, 0x65, 0x77, 0x10, 0x0c, 0x12, + 0x0e, 0x0a, 0x0a, 0x5a, 0x69, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x0d, 0x12, + 0x13, 0x0a, 0x0f, 0x5a, 0x69, 0x50, 0x61, 0x74, 0x63, 0x68, 0x45, 0x6e, 0x76, 0x65, 0x6c, 0x6f, + 0x70, 0x65, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x5a, 0x69, 0x4e, 0x54, 0x50, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x73, 0x10, 0x10, 0x22, 0x04, 0x08, 0x02, 0x10, 0x02, 0x22, 0x04, 0x08, 0x04, + 0x10, 0x04, 0x22, 0x04, 0x08, 0x05, 0x10, 0x05, 0x22, 0x04, 0x08, 0x0f, 0x10, 0x0f, 0x2a, 0x91, + 0x03, 0x0a, 0x08, 0x5a, 0x53, 0x77, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x49, + 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x49, 0x4e, 0x49, 0x54, + 0x49, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x4f, 0x41, + 0x44, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x44, + 0x4f, 0x57, 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x45, 0x44, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x44, + 0x45, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x49, 0x4e, + 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4f, 0x4f, + 0x54, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, + 0x47, 0x10, 0x07, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x41, 0x4c, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x08, + 0x12, 0x0a, 0x0a, 0x06, 0x48, 0x41, 0x4c, 0x54, 0x45, 0x44, 0x10, 0x09, 0x12, 0x0e, 0x0a, 0x0a, + 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x0a, 0x12, 0x0b, 0x0a, 0x07, + 0x50, 0x55, 0x52, 0x47, 0x49, 0x4e, 0x47, 0x10, 0x0b, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, + 0x4f, 0x4c, 0x56, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0c, 0x12, 0x10, 0x0a, 0x0c, + 0x52, 0x45, 0x53, 0x4f, 0x4c, 0x56, 0x45, 0x44, 0x5f, 0x54, 0x41, 0x47, 0x10, 0x0d, 0x12, 0x13, + 0x0a, 0x0f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, + 0x45, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x56, + 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x0f, 0x12, 0x0d, 0x0a, 0x09, 0x56, 0x45, 0x52, 0x49, 0x46, + 0x59, 0x49, 0x4e, 0x47, 0x10, 0x10, 0x12, 0x0c, 0x0a, 0x08, 0x56, 0x45, 0x52, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x11, 0x12, 0x0b, 0x0a, 0x07, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, + 0x12, 0x12, 0x0a, 0x0a, 0x06, 0x4c, 0x4f, 0x41, 0x44, 0x45, 0x44, 0x10, 0x13, 0x12, 0x18, 0x0a, + 0x14, 0x41, 0x57, 0x41, 0x49, 0x54, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x49, 0x4e, 0x53, + 0x54, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x14, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x10, 0x15, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x41, + 0x59, 0x45, 0x44, 0x10, 0x16, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, + 0x10, 0x17, 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x43, 0x48, 0x45, 0x44, 0x55, 0x4c, 0x49, 0x4e, 0x47, + 0x10, 0x18, 0x2a, 0x99, 0x02, 0x0a, 0x06, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, + 0x12, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, + 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4f, 0x53, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x45, 0x4e, 0x54, + 0x49, 0x54, 0x59, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x5f, 0x41, 0x44, 0x41, 0x50, 0x54, + 0x45, 0x52, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x56, + 0x41, 0x55, 0x4c, 0x54, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, + 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x04, 0x12, 0x17, + 0x0a, 0x13, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x41, 0x50, 0x50, 0x5f, 0x49, 0x4e, 0x53, + 0x54, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x4e, 0x54, 0x49, 0x54, + 0x59, 0x5f, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x45, 0x4e, 0x54, 0x49, + 0x54, 0x59, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x07, 0x12, 0x1b, 0x0a, 0x17, + 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x49, + 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x08, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x4e, 0x54, + 0x49, 0x54, 0x59, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x52, 0x45, 0x45, + 0x10, 0x09, 0x12, 0x17, 0x0a, 0x13, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x4f, 0x4e, + 0x54, 0x45, 0x4e, 0x54, 0x5f, 0x42, 0x4c, 0x4f, 0x42, 0x10, 0x0a, 0x12, 0x11, 0x0a, 0x0d, 0x45, + 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x10, 0x0b, 0x2a, 0x63, + 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x45, + 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, + 0x5f, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x45, 0x56, + 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, + 0x12, 0x0a, 0x0e, 0x53, 0x45, 0x56, 0x45, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x45, 0x52, 0x52, 0x4f, + 0x52, 0x10, 0x03, 0x2a, 0x4e, 0x0a, 0x16, 0x48, 0x77, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, + 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x4e, 0x4f, + 0x54, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x49, 0x53, 0x41, + 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, + 0x44, 0x10, 0x03, 0x2a, 0x88, 0x01, 0x0a, 0x13, 0x44, 0x61, 0x74, 0x61, 0x53, 0x65, 0x63, 0x41, + 0x74, 0x52, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x17, 0x44, + 0x41, 0x54, 0x41, 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x5f, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x41, 0x54, 0x41, + 0x53, 0x45, 0x43, 0x5f, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x41, + 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x41, 0x54, 0x41, 0x53, 0x45, + 0x43, 0x5f, 0x41, 0x54, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, + 0x44, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x41, 0x54, 0x41, 0x53, 0x45, 0x43, 0x5f, 0x41, + 0x54, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x2a, 0x3f, + 0x0a, 0x09, 0x50, 0x43, 0x52, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0f, 0x0a, 0x0b, 0x50, + 0x43, 0x52, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, + 0x50, 0x43, 0x52, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x01, 0x12, 0x10, 0x0a, + 0x0c, 0x50, 0x43, 0x52, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x2a, + 0x4d, 0x0a, 0x07, 0x53, 0x69, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x49, + 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x49, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53, + 0x49, 0x4d, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x53, 0x49, 0x4d, 0x10, 0x02, 0x2a, 0xa0, + 0x02, 0x0a, 0x17, 0x5a, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x4f, 0x70, 0x65, 0x72, + 0x61, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x26, 0x5a, 0x5f, 0x43, 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, - 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x5f, - 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, - 0x2b, 0x0a, 0x27, 0x5a, 0x5f, 0x43, 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x4f, 0x50, - 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, - 0x52, 0x45, 0x43, 0x4f, 0x47, 0x4e, 0x49, 0x5a, 0x45, 0x44, 0x10, 0x05, 0x2a, 0x92, 0x01, 0x0a, - 0x18, 0x5a, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x2b, 0x0a, 0x27, 0x5a, 0x5f, 0x43, - 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, - 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x5a, 0x5f, 0x43, 0x45, 0x4c, 0x4c, - 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x50, 0x52, 0x4f, - 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x51, 0x4d, 0x49, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x5a, + 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x5a, 0x5f, 0x43, 0x45, 0x4c, 0x4c, + 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x46, 0x46, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x28, + 0x0a, 0x24, 0x5a, 0x5f, 0x43, 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x4f, 0x50, 0x45, + 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x41, 0x44, + 0x49, 0x4f, 0x5f, 0x4f, 0x46, 0x46, 0x10, 0x02, 0x12, 0x25, 0x0a, 0x21, 0x5a, 0x5f, 0x43, 0x45, + 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x03, 0x12, + 0x33, 0x0a, 0x2f, 0x5a, 0x5f, 0x43, 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x4f, 0x50, + 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x4e, + 0x4c, 0x49, 0x4e, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, + 0x45, 0x44, 0x10, 0x04, 0x12, 0x2b, 0x0a, 0x27, 0x5a, 0x5f, 0x43, 0x45, 0x4c, 0x4c, 0x55, 0x4c, + 0x41, 0x52, 0x5f, 0x4f, 0x50, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x52, 0x45, 0x43, 0x4f, 0x47, 0x4e, 0x49, 0x5a, 0x45, 0x44, 0x10, + 0x05, 0x2a, 0x92, 0x01, 0x0a, 0x18, 0x5a, 0x43, 0x65, 0x6c, 0x6c, 0x75, 0x6c, 0x61, 0x72, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x2b, + 0x0a, 0x27, 0x5a, 0x5f, 0x43, 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x43, 0x4f, 0x4e, + 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x5a, 0x5f, 0x43, 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, - 0x4c, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x4d, 0x42, 0x49, 0x4d, 0x10, - 0x02, 0x2a, 0xb1, 0x02, 0x0a, 0x0c, 0x5a, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x5a, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x18, 0x0a, 0x14, 0x5a, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x5a, - 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x42, - 0x4f, 0x4f, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x5a, 0x44, 0x45, 0x56, - 0x49, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, - 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, - 0x5a, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x42, 0x41, - 0x53, 0x45, 0x4f, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, - 0x19, 0x0a, 0x15, 0x5a, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, - 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, 0x24, 0x0a, 0x20, 0x5a, 0x44, - 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x50, - 0x41, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x4f, 0x46, 0x46, 0x10, 0x06, - 0x12, 0x1e, 0x0a, 0x1a, 0x5a, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x45, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x4f, 0x46, 0x46, 0x10, 0x07, - 0x12, 0x23, 0x0a, 0x1f, 0x5a, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x45, 0x5f, 0x50, 0x52, 0x45, 0x50, 0x41, 0x52, 0x45, 0x44, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, - 0x4f, 0x46, 0x46, 0x10, 0x08, 0x2a, 0xf5, 0x01, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x1a, 0x53, 0x54, 0x4f, 0x52, 0x41, - 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x4f, 0x52, 0x41, - 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x4e, 0x4c, 0x49, 0x4e, 0x45, - 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, - 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x47, 0x52, 0x41, 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, - 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1a, 0x0a, 0x16, 0x53, - 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, 0x46, - 0x46, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x4f, 0x52, 0x41, - 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x41, 0x56, 0x41, 0x49, - 0x4c, 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x53, - 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x44, 0x10, 0x06, 0x12, - 0x1c, 0x0a, 0x18, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x5f, 0x53, 0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x07, 0x2a, 0xe3, 0x01, - 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x61, 0x69, 0x64, 0x54, 0x79, 0x70, - 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x41, 0x49, - 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, - 0x52, 0x41, 0x49, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x41, 0x49, 0x44, 0x30, 0x10, - 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x41, 0x49, - 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x41, 0x49, 0x44, 0x31, 0x10, 0x02, 0x12, 0x1b, - 0x0a, 0x17, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x41, 0x49, 0x44, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x52, 0x41, 0x49, 0x44, 0x35, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x53, - 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x41, 0x49, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x52, 0x41, 0x49, 0x44, 0x36, 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x54, 0x4f, 0x52, - 0x41, 0x47, 0x45, 0x5f, 0x52, 0x41, 0x49, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x41, - 0x49, 0x44, 0x37, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, - 0x5f, 0x52, 0x41, 0x49, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x52, 0x41, 0x49, - 0x44, 0x10, 0x06, 0x2a, 0x6b, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, - 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x4f, - 0x52, 0x41, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x45, - 0x58, 0x54, 0x34, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x5a, 0x46, 0x53, 0x10, 0x02, - 0x2a, 0xbd, 0x02, 0x0a, 0x0d, 0x41, 0x50, 0x49, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, - 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x50, 0x49, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, - 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x50, 0x49, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, - 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x54, 0x52, 0x59, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, - 0x45, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x50, 0x49, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x42, - 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x48, 0x55, 0x54, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x02, - 0x12, 0x29, 0x0a, 0x25, 0x41, 0x50, 0x49, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, - 0x54, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x59, 0x5f, 0x49, - 0x4e, 0x5f, 0x53, 0x45, 0x43, 0x4f, 0x4e, 0x44, 0x53, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x41, - 0x50, 0x49, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x45, 0x44, - 0x47, 0x45, 0x56, 0x49, 0x45, 0x57, 0x10, 0x04, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x50, 0x49, 0x5f, - 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x56, 0x4f, 0x4c, 0x55, 0x4d, - 0x45, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x53, 0x10, 0x05, 0x12, 0x2b, 0x0a, - 0x27, 0x41, 0x50, 0x49, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, - 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4e, 0x43, 0x45, - 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x50, - 0x49, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x42, 0x4f, 0x4f, - 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x07, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x50, 0x49, 0x5f, - 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x54, 0x55, 0x10, 0x08, - 0x2a, 0xb9, 0x03, 0x0a, 0x0a, 0x42, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, - 0x1b, 0x0a, 0x17, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, - 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x46, 0x49, 0x52, 0x53, - 0x54, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, - 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x43, 0x4d, 0x44, 0x10, 0x02, 0x12, - 0x16, 0x0a, 0x12, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, - 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x4f, 0x4f, 0x54, 0x5f, - 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, - 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, - 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0x05, 0x12, 0x15, 0x0a, - 0x11, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x54, - 0x41, 0x4c, 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, - 0x53, 0x4f, 0x4e, 0x5f, 0x4f, 0x4f, 0x4d, 0x10, 0x07, 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x4f, 0x4f, - 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x57, 0x41, 0x54, 0x43, 0x48, 0x44, 0x4f, - 0x47, 0x5f, 0x48, 0x55, 0x4e, 0x47, 0x10, 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x42, 0x4f, 0x4f, 0x54, - 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x57, 0x41, 0x54, 0x43, 0x48, 0x44, 0x4f, 0x47, - 0x5f, 0x50, 0x49, 0x44, 0x10, 0x09, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, - 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4b, 0x45, 0x52, 0x4e, 0x45, 0x4c, 0x10, 0x0a, 0x12, 0x1a, - 0x0a, 0x16, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x50, 0x4f, - 0x57, 0x45, 0x52, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x0b, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x4f, - 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, - 0x4e, 0x10, 0x0c, 0x12, 0x1c, 0x0a, 0x18, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, - 0x4f, 0x4e, 0x5f, 0x56, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, - 0x0d, 0x12, 0x1c, 0x0a, 0x18, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, - 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x4f, 0x46, 0x46, 0x5f, 0x43, 0x4d, 0x44, 0x10, 0x0e, 0x12, - 0x1b, 0x0a, 0x16, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x50, - 0x41, 0x52, 0x53, 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x10, 0xff, 0x01, 0x2a, 0xbe, 0x01, 0x0a, - 0x15, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, - 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, - 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, - 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x2a, 0x0a, 0x26, 0x4d, 0x41, 0x49, 0x4e, - 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, - 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, - 0x45, 0x44, 0x10, 0x01, 0x12, 0x2b, 0x0a, 0x27, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, - 0x4e, 0x43, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, - 0x56, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x5f, 0x55, 0x50, 0x10, - 0x02, 0x12, 0x2a, 0x0a, 0x26, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, - 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x57, - 0x5f, 0x44, 0x49, 0x53, 0x4b, 0x5f, 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x03, 0x2a, 0xb5, 0x02, - 0x0a, 0x10, 0x41, 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, - 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x43, 0x45, - 0x5f, 0x57, 0x41, 0x49, 0x54, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x54, 0x54, 0x45, 0x53, - 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x50, 0x4d, - 0x5f, 0x51, 0x55, 0x4f, 0x54, 0x45, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x10, 0x02, 0x12, 0x25, 0x0a, - 0x21, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x5f, 0x54, 0x50, 0x4d, 0x5f, 0x45, 0x53, 0x43, 0x52, 0x4f, 0x57, 0x5f, 0x57, 0x41, - 0x49, 0x54, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, + 0x4c, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, 0x51, 0x4d, 0x49, 0x10, 0x01, + 0x12, 0x24, 0x0a, 0x20, 0x5a, 0x5f, 0x43, 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, 0x52, 0x5f, 0x43, + 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x5f, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x43, 0x4f, 0x4c, 0x5f, + 0x4d, 0x42, 0x49, 0x4d, 0x10, 0x02, 0x2a, 0xb1, 0x02, 0x0a, 0x0c, 0x5a, 0x44, 0x65, 0x76, 0x69, + 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x5a, 0x44, 0x45, 0x56, 0x49, + 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, + 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x5a, 0x44, 0x45, 0x56, 0x49, 0x43, + 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x01, + 0x12, 0x1b, 0x0a, 0x17, 0x5a, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x5f, 0x52, 0x45, 0x42, 0x4f, 0x4f, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x22, 0x0a, + 0x1e, 0x5a, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4d, + 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, + 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x5a, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x4f, 0x53, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x49, + 0x4e, 0x47, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x5a, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x05, 0x12, + 0x24, 0x0a, 0x20, 0x5a, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, + 0x5f, 0x50, 0x52, 0x45, 0x50, 0x41, 0x52, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, + 0x4f, 0x46, 0x46, 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x5a, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x49, 0x4e, 0x47, 0x5f, + 0x4f, 0x46, 0x46, 0x10, 0x07, 0x12, 0x23, 0x0a, 0x1f, 0x5a, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x50, 0x52, 0x45, 0x50, 0x41, 0x52, 0x45, 0x44, 0x5f, + 0x50, 0x4f, 0x57, 0x45, 0x52, 0x4f, 0x46, 0x46, 0x10, 0x08, 0x2a, 0xf5, 0x01, 0x0a, 0x0d, 0x53, + 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x1a, + 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, + 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4f, + 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x54, 0x4f, 0x52, 0x41, + 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x47, 0x52, 0x41, 0x44, + 0x45, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x45, 0x44, 0x10, 0x03, + 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x4f, 0x46, 0x46, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, + 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, + 0x4e, 0x41, 0x56, 0x41, 0x49, 0x4c, 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x4f, 0x52, + 0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, + 0x45, 0x44, 0x10, 0x06, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x53, 0x55, 0x53, 0x50, 0x45, 0x4e, 0x44, 0x45, 0x44, + 0x10, 0x07, 0x2a, 0xe3, 0x01, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x52, 0x61, + 0x69, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, + 0x45, 0x5f, 0x52, 0x41, 0x49, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x54, 0x4f, + 0x52, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x41, 0x49, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, + 0x41, 0x49, 0x44, 0x30, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, + 0x45, 0x5f, 0x52, 0x41, 0x49, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x41, 0x49, 0x44, + 0x31, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x52, + 0x41, 0x49, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x41, 0x49, 0x44, 0x35, 0x10, 0x03, + 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x41, 0x49, 0x44, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x41, 0x49, 0x44, 0x36, 0x10, 0x04, 0x12, 0x1b, 0x0a, + 0x17, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x41, 0x49, 0x44, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x52, 0x41, 0x49, 0x44, 0x37, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x54, + 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x41, 0x49, 0x44, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x4e, 0x4f, 0x52, 0x41, 0x49, 0x44, 0x10, 0x06, 0x2a, 0x6b, 0x0a, 0x0f, 0x53, 0x74, 0x6f, 0x72, + 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x21, 0x0a, 0x1d, 0x53, + 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, + 0x0a, 0x16, 0x53, 0x54, 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, + 0x4e, 0x46, 0x4f, 0x5f, 0x45, 0x58, 0x54, 0x34, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x54, + 0x4f, 0x52, 0x41, 0x47, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x5f, + 0x5a, 0x46, 0x53, 0x10, 0x02, 0x2a, 0xe5, 0x02, 0x0a, 0x0d, 0x41, 0x50, 0x49, 0x43, 0x61, 0x70, + 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x50, 0x49, 0x5f, 0x43, + 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x50, 0x49, 0x5f, 0x43, + 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x54, 0x52, 0x59, 0x5f, + 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x50, 0x49, 0x5f, + 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x48, 0x55, 0x54, 0x44, + 0x4f, 0x57, 0x4e, 0x10, 0x02, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x50, 0x49, 0x5f, 0x43, 0x41, 0x50, + 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x44, 0x45, + 0x4c, 0x41, 0x59, 0x5f, 0x49, 0x4e, 0x5f, 0x53, 0x45, 0x43, 0x4f, 0x4e, 0x44, 0x53, 0x10, 0x03, + 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x50, 0x49, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, + 0x54, 0x59, 0x5f, 0x45, 0x44, 0x47, 0x45, 0x56, 0x49, 0x45, 0x57, 0x10, 0x04, 0x12, 0x23, 0x0a, + 0x1f, 0x41, 0x50, 0x49, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, + 0x56, 0x4f, 0x4c, 0x55, 0x4d, 0x45, 0x5f, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x53, + 0x10, 0x05, 0x12, 0x2b, 0x0a, 0x27, 0x41, 0x50, 0x49, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, + 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x49, 0x4e, 0x53, + 0x54, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, + 0x1c, 0x0a, 0x18, 0x41, 0x50, 0x49, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, + 0x59, 0x5f, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x07, 0x12, 0x16, 0x0a, + 0x12, 0x41, 0x50, 0x49, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, + 0x4d, 0x54, 0x55, 0x10, 0x08, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x50, 0x49, 0x5f, 0x43, 0x41, 0x50, + 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x41, 0x44, 0x41, 0x50, 0x54, 0x45, 0x52, 0x5f, + 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4c, 0x41, 0x42, 0x45, 0x4c, 0x53, 0x10, 0x09, 0x2a, 0xb9, 0x03, + 0x0a, 0x0a, 0x42, 0x6f, 0x6f, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, + 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x42, 0x4f, 0x4f, + 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x01, + 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, + 0x52, 0x45, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x43, 0x4d, 0x44, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, + 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x50, 0x44, 0x41, + 0x54, 0x45, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, + 0x53, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x04, 0x12, 0x1a, + 0x0a, 0x16, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x44, 0x49, + 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0x05, 0x12, 0x15, 0x0a, 0x11, 0x42, 0x4f, + 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x54, 0x41, 0x4c, 0x10, + 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, + 0x5f, 0x4f, 0x4f, 0x4d, 0x10, 0x07, 0x12, 0x1d, 0x0a, 0x19, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, + 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x57, 0x41, 0x54, 0x43, 0x48, 0x44, 0x4f, 0x47, 0x5f, 0x48, + 0x55, 0x4e, 0x47, 0x10, 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, + 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x57, 0x41, 0x54, 0x43, 0x48, 0x44, 0x4f, 0x47, 0x5f, 0x50, 0x49, + 0x44, 0x10, 0x09, 0x12, 0x16, 0x0a, 0x12, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, + 0x4f, 0x4e, 0x5f, 0x4b, 0x45, 0x52, 0x4e, 0x45, 0x4c, 0x10, 0x0a, 0x12, 0x1a, 0x0a, 0x16, 0x42, + 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, + 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x10, 0x0b, 0x12, 0x17, 0x0a, 0x13, 0x42, 0x4f, 0x4f, 0x54, 0x5f, + 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x0c, + 0x12, 0x1c, 0x0a, 0x18, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, + 0x56, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x0d, 0x12, 0x1c, + 0x0a, 0x18, 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x50, 0x4f, + 0x57, 0x45, 0x52, 0x4f, 0x46, 0x46, 0x5f, 0x43, 0x4d, 0x44, 0x10, 0x0e, 0x12, 0x1b, 0x0a, 0x16, + 0x42, 0x4f, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x50, 0x41, 0x52, 0x53, + 0x45, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x10, 0xff, 0x01, 0x2a, 0xbe, 0x01, 0x0a, 0x15, 0x4d, 0x61, + 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x63, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x1c, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, + 0x43, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4e, + 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x2a, 0x0a, 0x26, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, + 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, + 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x45, 0x44, 0x10, + 0x01, 0x12, 0x2b, 0x0a, 0x27, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x56, 0x41, 0x55, + 0x4c, 0x54, 0x5f, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x5f, 0x55, 0x50, 0x10, 0x02, 0x12, 0x2a, + 0x0a, 0x26, 0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x4d, 0x4f, + 0x44, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x57, 0x5f, 0x44, 0x49, + 0x53, 0x4b, 0x5f, 0x53, 0x50, 0x41, 0x43, 0x45, 0x10, 0x03, 0x2a, 0xb5, 0x02, 0x0a, 0x10, 0x41, + 0x74, 0x74, 0x65, 0x73, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, + 0x21, 0x0a, 0x1d, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x43, 0x45, 0x5f, 0x57, 0x41, + 0x49, 0x54, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x50, 0x4d, 0x5f, 0x51, 0x55, + 0x4f, 0x54, 0x45, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x10, 0x02, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x54, + 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, + 0x54, 0x50, 0x4d, 0x5f, 0x45, 0x53, 0x43, 0x52, 0x4f, 0x57, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x10, + 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x57, 0x41, + 0x49, 0x54, 0x10, 0x04, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, - 0x5f, 0x57, 0x41, 0x49, 0x54, 0x10, 0x04, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x54, 0x54, 0x45, 0x53, - 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x41, 0x54, 0x54, - 0x45, 0x53, 0x54, 0x5f, 0x45, 0x53, 0x43, 0x52, 0x4f, 0x57, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x10, - 0x05, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x57, - 0x41, 0x49, 0x54, 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, - 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, - 0x45, 0x54, 0x45, 0x10, 0x07, 0x2a, 0x8b, 0x01, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, - 0x74, 0x4d, 0x65, 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, - 0x1c, 0x41, 0x50, 0x50, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, - 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, - 0x27, 0x0a, 0x23, 0x41, 0x50, 0x50, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x41, - 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, 0x55, 0x42, 0x45, 0x5f, - 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0x01, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x50, 0x50, 0x5f, - 0x49, 0x4e, 0x53, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, - 0x53, 0x10, 0x02, 0x2a, 0x61, 0x0a, 0x0c, 0x57, 0x69, 0x72, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x57, 0x49, 0x52, 0x45, 0x4c, 0x45, 0x53, 0x53, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, - 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x57, 0x49, 0x52, 0x45, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x57, 0x49, 0x46, 0x49, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x57, 0x49, - 0x52, 0x45, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x45, 0x4c, 0x4c, - 0x55, 0x4c, 0x41, 0x52, 0x10, 0x02, 0x2a, 0x71, 0x0a, 0x0c, 0x42, 0x61, 0x73, 0x65, 0x4f, 0x73, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, - 0x12, 0x0f, 0x0a, 0x0b, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, - 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x44, 0x4f, - 0x4e, 0x45, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x55, 0x50, 0x44, 0x41, 0x54, 0x49, 0x4e, 0x47, - 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, - 0x0c, 0x0a, 0x08, 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x05, 0x12, 0x0a, 0x0a, - 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x2a, 0xcb, 0x01, 0x0a, 0x0f, 0x42, 0x61, - 0x73, 0x65, 0x4f, 0x73, 0x53, 0x75, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, - 0x0e, 0x4e, 0x4f, 0x4e, 0x45, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, - 0x00, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x49, 0x4e, - 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x56, 0x45, - 0x52, 0x49, 0x46, 0x59, 0x5f, 0x49, 0x4e, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, - 0x02, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, - 0x49, 0x41, 0x4c, 0x49, 0x5a, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x50, - 0x44, 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x42, 0x4f, 0x4f, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x04, - 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x49, - 0x4e, 0x47, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x4e, - 0x45, 0x45, 0x44, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, - 0x10, 0x06, 0x12, 0x13, 0x0a, 0x0f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x45, 0x46, - 0x45, 0x52, 0x52, 0x45, 0x44, 0x10, 0x07, 0x2a, 0x4b, 0x0a, 0x0c, 0x53, 0x6e, 0x61, 0x70, 0x73, - 0x68, 0x6f, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x4e, 0x41, 0x50, 0x53, - 0x48, 0x4f, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, - 0x4f, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x5f, 0x55, 0x50, 0x44, 0x41, - 0x54, 0x45, 0x10, 0x01, 0x2a, 0xb8, 0x01, 0x0a, 0x16, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, - 0x2a, 0x0a, 0x26, 0x5a, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, - 0x52, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x5a, - 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4e, 0x4f, - 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, - 0x01, 0x12, 0x27, 0x0a, 0x23, 0x5a, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x43, 0x4c, 0x55, 0x53, - 0x54, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, - 0x4e, 0x4f, 0x54, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x5a, 0x5f, - 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x44, - 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x03, 0x2a, - 0x8f, 0x01, 0x0a, 0x0d, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x56, 0x70, 0x6e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x50, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, - 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x50, 0x4e, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, - 0x4c, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x56, 0x50, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, - 0x43, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x50, 0x4e, 0x5f, 0x45, - 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, - 0x56, 0x50, 0x4e, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, - 0x0f, 0x0a, 0x0b, 0x56, 0x50, 0x4e, 0x5f, 0x52, 0x45, 0x4b, 0x45, 0x59, 0x45, 0x44, 0x10, 0x05, - 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x50, 0x4e, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, - 0x0a, 0x2a, 0x85, 0x01, 0x0a, 0x15, 0x5a, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x5a, - 0x4e, 0x45, 0x54, 0x49, 0x4e, 0x53, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x5a, - 0x4e, 0x45, 0x54, 0x49, 0x4e, 0x53, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, - 0x49, 0x54, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x5a, 0x4e, 0x45, 0x54, 0x49, 0x4e, 0x53, 0x54, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x02, 0x12, - 0x18, 0x0a, 0x14, 0x5a, 0x4e, 0x45, 0x54, 0x49, 0x4e, 0x53, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, - 0x45, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x2a, 0x9e, 0x01, 0x0a, 0x0e, 0x4c, 0x6f, - 0x63, 0x52, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x1b, - 0x4c, 0x4f, 0x43, 0x5f, 0x52, 0x45, 0x4c, 0x49, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, - 0x18, 0x4c, 0x4f, 0x43, 0x5f, 0x52, 0x45, 0x4c, 0x49, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, - 0x5f, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4c, - 0x4f, 0x43, 0x5f, 0x52, 0x45, 0x4c, 0x49, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x4c, - 0x4f, 0x57, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x4c, 0x4f, 0x43, 0x5f, 0x52, 0x45, 0x4c, 0x49, - 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d, 0x10, 0x03, - 0x12, 0x18, 0x0a, 0x14, 0x4c, 0x4f, 0x43, 0x5f, 0x52, 0x45, 0x4c, 0x49, 0x41, 0x42, 0x49, 0x4c, - 0x49, 0x54, 0x59, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x10, 0x04, 0x42, 0x39, 0x0a, 0x13, 0x6f, 0x72, - 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, - 0x6f, 0x5a, 0x22, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x66, - 0x2d, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x65, 0x76, 0x65, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, - 0x2f, 0x69, 0x6e, 0x66, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x5f, 0x45, 0x53, 0x43, 0x52, 0x4f, 0x57, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x10, 0x05, 0x12, 0x22, + 0x0a, 0x1e, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x57, 0x41, 0x49, 0x54, + 0x10, 0x06, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x54, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, + 0x10, 0x07, 0x2a, 0x8b, 0x01, 0x0a, 0x13, 0x41, 0x70, 0x70, 0x49, 0x6e, 0x73, 0x74, 0x4d, 0x65, + 0x74, 0x61, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x50, + 0x50, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, + 0x41, 0x50, 0x50, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x41, + 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4b, 0x55, 0x42, 0x45, 0x5f, 0x43, 0x4f, 0x4e, + 0x46, 0x49, 0x47, 0x10, 0x01, 0x12, 0x29, 0x0a, 0x25, 0x41, 0x50, 0x50, 0x5f, 0x49, 0x4e, 0x53, + 0x54, 0x5f, 0x4d, 0x45, 0x54, 0x41, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x02, + 0x2a, 0x61, 0x0a, 0x0c, 0x57, 0x69, 0x72, 0x65, 0x6c, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x1d, 0x0a, 0x19, 0x57, 0x49, 0x52, 0x45, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x16, 0x0a, 0x12, 0x57, 0x49, 0x52, 0x45, 0x4c, 0x45, 0x53, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x57, 0x49, 0x46, 0x49, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x57, 0x49, 0x52, 0x45, 0x4c, + 0x45, 0x53, 0x53, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x45, 0x4c, 0x4c, 0x55, 0x4c, 0x41, + 0x52, 0x10, 0x02, 0x2a, 0x71, 0x0a, 0x0c, 0x42, 0x61, 0x73, 0x65, 0x4f, 0x73, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x0f, 0x0a, + 0x0b, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x11, + 0x0a, 0x0d, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x44, 0x4f, 0x4e, 0x45, 0x10, + 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x55, 0x50, 0x44, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, + 0x0b, 0x0a, 0x07, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, + 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, + 0x49, 0x4c, 0x45, 0x44, 0x10, 0x06, 0x2a, 0xcb, 0x01, 0x0a, 0x0f, 0x42, 0x61, 0x73, 0x65, 0x4f, + 0x73, 0x53, 0x75, 0x62, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x4f, + 0x4e, 0x45, 0x5f, 0x53, 0x55, 0x42, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x00, 0x12, 0x17, + 0x0a, 0x13, 0x44, 0x4f, 0x57, 0x4e, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x49, 0x4e, 0x50, 0x52, 0x4f, + 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x56, 0x45, 0x52, 0x49, 0x46, + 0x59, 0x5f, 0x49, 0x4e, 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x02, 0x12, 0x17, + 0x0a, 0x13, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, + 0x49, 0x5a, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x50, 0x44, 0x41, 0x54, + 0x45, 0x5f, 0x52, 0x45, 0x42, 0x4f, 0x4f, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x04, 0x12, 0x12, 0x0a, + 0x0e, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x45, 0x53, 0x54, 0x49, 0x4e, 0x47, 0x10, + 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x4e, 0x45, 0x45, 0x44, + 0x5f, 0x54, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x10, 0x06, 0x12, + 0x13, 0x0a, 0x0f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x44, 0x45, 0x46, 0x45, 0x52, 0x52, + 0x45, 0x44, 0x10, 0x07, 0x2a, 0x4b, 0x0a, 0x0c, 0x53, 0x6e, 0x61, 0x70, 0x73, 0x68, 0x6f, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x4e, 0x41, 0x50, 0x53, 0x48, 0x4f, 0x54, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x50, 0x50, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, + 0x01, 0x2a, 0xb8, 0x01, 0x0a, 0x16, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x26, + 0x5a, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4e, + 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x24, 0x0a, 0x20, 0x5a, 0x5f, 0x49, 0x4e, + 0x46, 0x4f, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x01, 0x12, 0x27, + 0x0a, 0x23, 0x5a, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, + 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x4e, 0x4f, 0x54, + 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x5a, 0x5f, 0x49, 0x4e, 0x46, + 0x4f, 0x5f, 0x43, 0x4c, 0x55, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x44, 0x45, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x03, 0x2a, 0x8f, 0x01, 0x0a, + 0x0d, 0x5a, 0x49, 0x6e, 0x66, 0x6f, 0x56, 0x70, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0f, + 0x0a, 0x0b, 0x56, 0x50, 0x4e, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, + 0x0f, 0x0a, 0x0b, 0x56, 0x50, 0x4e, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x49, 0x41, 0x4c, 0x10, 0x01, + 0x12, 0x12, 0x0a, 0x0e, 0x56, 0x50, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, + 0x4e, 0x47, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x50, 0x4e, 0x5f, 0x45, 0x53, 0x54, 0x41, + 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x44, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x56, 0x50, 0x4e, + 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, + 0x56, 0x50, 0x4e, 0x5f, 0x52, 0x45, 0x4b, 0x45, 0x59, 0x45, 0x44, 0x10, 0x05, 0x12, 0x0f, 0x0a, + 0x0b, 0x56, 0x50, 0x4e, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x0a, 0x2a, 0x85, + 0x01, 0x0a, 0x15, 0x5a, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x5a, 0x4e, 0x45, 0x54, + 0x49, 0x4e, 0x53, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x5a, 0x4e, 0x45, 0x54, + 0x49, 0x4e, 0x53, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e, 0x49, 0x54, 0x10, + 0x01, 0x12, 0x19, 0x0a, 0x15, 0x5a, 0x4e, 0x45, 0x54, 0x49, 0x4e, 0x53, 0x54, 0x5f, 0x53, 0x54, + 0x41, 0x54, 0x45, 0x5f, 0x4f, 0x4e, 0x4c, 0x49, 0x4e, 0x45, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, + 0x5a, 0x4e, 0x45, 0x54, 0x49, 0x4e, 0x53, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x2a, 0x9e, 0x01, 0x0a, 0x0e, 0x4c, 0x6f, 0x63, 0x52, 0x65, + 0x6c, 0x69, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1f, 0x0a, 0x1b, 0x4c, 0x4f, 0x43, + 0x5f, 0x52, 0x45, 0x4c, 0x49, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x4c, 0x4f, + 0x43, 0x5f, 0x52, 0x45, 0x4c, 0x49, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x56, 0x45, + 0x52, 0x59, 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4c, 0x4f, 0x43, 0x5f, + 0x52, 0x45, 0x4c, 0x49, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x4c, 0x4f, 0x57, 0x10, + 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x4c, 0x4f, 0x43, 0x5f, 0x52, 0x45, 0x4c, 0x49, 0x41, 0x42, 0x49, + 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x55, 0x4d, 0x10, 0x03, 0x12, 0x18, 0x0a, + 0x14, 0x4c, 0x4f, 0x43, 0x5f, 0x52, 0x45, 0x4c, 0x49, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, + 0x5f, 0x48, 0x49, 0x47, 0x48, 0x10, 0x04, 0x42, 0x39, 0x0a, 0x13, 0x6f, 0x72, 0x67, 0x2e, 0x6c, + 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x69, 0x6e, 0x66, 0x6f, 0x5a, 0x22, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x66, 0x2d, 0x65, 0x64, + 0x67, 0x65, 0x2f, 0x65, 0x76, 0x65, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x69, 0x6e, + 0x66, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -9447,7 +9598,7 @@ func file_info_info_proto_rawDescGZIP() []byte { } var file_info_info_proto_enumTypes = make([]protoimpl.EnumInfo, 28) -var file_info_info_proto_msgTypes = make([]protoimpl.MessageInfo, 65) +var file_info_info_proto_msgTypes = make([]protoimpl.MessageInfo, 66) var file_info_info_proto_goTypes = []interface{}{ (DepMetricItemType)(0), // 0: org.lfedge.eve.info.DepMetricItemType (ZInfoTypes)(0), // 1: org.lfedge.eve.info.ZInfoTypes @@ -9528,33 +9679,34 @@ var file_info_info_proto_goTypes = []interface{}{ (*ZInfoVpnConn)(nil), // 76: org.lfedge.eve.info.ZInfoVpnConn (*ZInfoVpn)(nil), // 77: org.lfedge.eve.info.ZInfoVpn (*ZInfoNetworkInstance)(nil), // 78: org.lfedge.eve.info.ZInfoNetworkInstance - (*UsageInfo)(nil), // 79: org.lfedge.eve.info.UsageInfo - (*VolumeResources)(nil), // 80: org.lfedge.eve.info.VolumeResources - (*ZInfoVolume)(nil), // 81: org.lfedge.eve.info.ZInfoVolume - (*ContentResources)(nil), // 82: org.lfedge.eve.info.ContentResources - (*ZInfoContentTree)(nil), // 83: org.lfedge.eve.info.ZInfoContentTree - (*ZInfoBlob)(nil), // 84: org.lfedge.eve.info.ZInfoBlob - (*ZInfoBlobList)(nil), // 85: org.lfedge.eve.info.ZInfoBlobList - (*ZInfoMsg)(nil), // 86: org.lfedge.eve.info.ZInfoMsg - (*Capabilities)(nil), // 87: org.lfedge.eve.info.Capabilities - (*ZInfoAppInstMetaData)(nil), // 88: org.lfedge.eve.info.ZInfoAppInstMetaData - (*ZInfoEdgeview)(nil), // 89: org.lfedge.eve.info.ZInfoEdgeview - (*ZInfoLocation)(nil), // 90: org.lfedge.eve.info.ZInfoLocation - nil, // 91: org.lfedge.eve.info.ZInfoConfigItemStatus.ConfigItemsEntry - nil, // 92: org.lfedge.eve.info.ZInfoConfigItemStatus.UnknownConfigItemsEntry - (evecommon.PhyIoType)(0), // 93: org.lfedge.eve.common.PhyIoType - (evecommon.PhyIoMemberUsage)(0), // 94: org.lfedge.eve.common.PhyIoMemberUsage - (*timestamppb.Timestamp)(nil), // 95: google.protobuf.Timestamp - (*evecommon.DiskDescription)(nil), // 96: org.lfedge.eve.common.DiskDescription - (evecommon.RadioAccessTechnology)(0), // 97: org.lfedge.eve.common.RadioAccessTechnology - (*ZInfoPatchEnvelope)(nil), // 98: org.lfedge.eve.info.ZInfoPatchEnvelope - (*ZInfoNTPSources)(nil), // 99: org.lfedge.eve.info.ZInfoNTPSources + (*IPRoute)(nil), // 79: org.lfedge.eve.info.IPRoute + (*UsageInfo)(nil), // 80: org.lfedge.eve.info.UsageInfo + (*VolumeResources)(nil), // 81: org.lfedge.eve.info.VolumeResources + (*ZInfoVolume)(nil), // 82: org.lfedge.eve.info.ZInfoVolume + (*ContentResources)(nil), // 83: org.lfedge.eve.info.ContentResources + (*ZInfoContentTree)(nil), // 84: org.lfedge.eve.info.ZInfoContentTree + (*ZInfoBlob)(nil), // 85: org.lfedge.eve.info.ZInfoBlob + (*ZInfoBlobList)(nil), // 86: org.lfedge.eve.info.ZInfoBlobList + (*ZInfoMsg)(nil), // 87: org.lfedge.eve.info.ZInfoMsg + (*Capabilities)(nil), // 88: org.lfedge.eve.info.Capabilities + (*ZInfoAppInstMetaData)(nil), // 89: org.lfedge.eve.info.ZInfoAppInstMetaData + (*ZInfoEdgeview)(nil), // 90: org.lfedge.eve.info.ZInfoEdgeview + (*ZInfoLocation)(nil), // 91: org.lfedge.eve.info.ZInfoLocation + nil, // 92: org.lfedge.eve.info.ZInfoConfigItemStatus.ConfigItemsEntry + nil, // 93: org.lfedge.eve.info.ZInfoConfigItemStatus.UnknownConfigItemsEntry + (evecommon.PhyIoType)(0), // 94: org.lfedge.eve.common.PhyIoType + (evecommon.PhyIoMemberUsage)(0), // 95: org.lfedge.eve.common.PhyIoMemberUsage + (*timestamppb.Timestamp)(nil), // 96: google.protobuf.Timestamp + (*evecommon.DiskDescription)(nil), // 97: org.lfedge.eve.common.DiskDescription + (evecommon.RadioAccessTechnology)(0), // 98: org.lfedge.eve.common.RadioAccessTechnology + (*ZInfoPatchEnvelope)(nil), // 99: org.lfedge.eve.info.ZInfoPatchEnvelope + (*ZInfoNTPSources)(nil), // 100: org.lfedge.eve.info.ZInfoNTPSources } var file_info_info_proto_depIdxs = []int32{ 0, // 0: org.lfedge.eve.info.deprecatedMetricItem.type:type_name -> org.lfedge.eve.info.DepMetricItemType - 93, // 1: org.lfedge.eve.info.ZioBundle.type:type_name -> org.lfedge.eve.common.PhyIoType + 94, // 1: org.lfedge.eve.info.ZioBundle.type:type_name -> org.lfedge.eve.common.PhyIoType 32, // 2: org.lfedge.eve.info.ZioBundle.ioAddressList:type_name -> org.lfedge.eve.info.IoAddresses - 94, // 3: org.lfedge.eve.info.ZioBundle.usage:type_name -> org.lfedge.eve.common.PhyIoMemberUsage + 95, // 3: org.lfedge.eve.info.ZioBundle.usage:type_name -> org.lfedge.eve.common.PhyIoMemberUsage 39, // 4: org.lfedge.eve.info.ZioBundle.err:type_name -> org.lfedge.eve.info.ErrorInfo 33, // 5: org.lfedge.eve.info.IoAddresses.vf_info:type_name -> org.lfedge.eve.info.VfPublishedInfo 37, // 6: org.lfedge.eve.info.ZInfoNetwork.dns:type_name -> org.lfedge.eve.info.ZInfoDNS @@ -9562,7 +9714,7 @@ var file_info_info_proto_depIdxs = []int32{ 39, // 8: org.lfedge.eve.info.ZInfoNetwork.networkErr:type_name -> org.lfedge.eve.info.ErrorInfo 64, // 9: org.lfedge.eve.info.ZInfoNetwork.proxy:type_name -> org.lfedge.eve.info.ProxyStatus 2, // 10: org.lfedge.eve.info.ZInfoSW.state:type_name -> org.lfedge.eve.info.ZSwState - 95, // 11: org.lfedge.eve.info.ErrorInfo.timestamp:type_name -> google.protobuf.Timestamp + 96, // 11: org.lfedge.eve.info.ErrorInfo.timestamp:type_name -> google.protobuf.Timestamp 4, // 12: org.lfedge.eve.info.ErrorInfo.severity:type_name -> org.lfedge.eve.info.Severity 40, // 13: org.lfedge.eve.info.ErrorInfo.entities:type_name -> org.lfedge.eve.info.DeviceEntity 3, // 14: org.lfedge.eve.info.DeviceEntity.entity:type_name -> org.lfedge.eve.info.Entity @@ -9571,12 +9723,12 @@ var file_info_info_proto_depIdxs = []int32{ 7, // 17: org.lfedge.eve.info.VaultInfo.pcrStatus:type_name -> org.lfedge.eve.info.PCRStatus 6, // 18: org.lfedge.eve.info.DataSecAtRest.status:type_name -> org.lfedge.eve.info.DataSecAtRestStatus 41, // 19: org.lfedge.eve.info.DataSecAtRest.vaultList:type_name -> org.lfedge.eve.info.VaultInfo - 91, // 20: org.lfedge.eve.info.ZInfoConfigItemStatus.configItems:type_name -> org.lfedge.eve.info.ZInfoConfigItemStatus.ConfigItemsEntry - 92, // 21: org.lfedge.eve.info.ZInfoConfigItemStatus.unknownConfigItems:type_name -> org.lfedge.eve.info.ZInfoConfigItemStatus.UnknownConfigItemsEntry + 92, // 20: org.lfedge.eve.info.ZInfoConfigItemStatus.configItems:type_name -> org.lfedge.eve.info.ZInfoConfigItemStatus.ConfigItemsEntry + 93, // 21: org.lfedge.eve.info.ZInfoConfigItemStatus.unknownConfigItems:type_name -> org.lfedge.eve.info.ZInfoConfigItemStatus.UnknownConfigItemsEntry 8, // 22: org.lfedge.eve.info.ZSimcardInfo.type:type_name -> org.lfedge.eve.info.SimType 9, // 23: org.lfedge.eve.info.ZCellularModuleInfo.operating_state:type_name -> org.lfedge.eve.info.ZCellularOperatingState 10, // 24: org.lfedge.eve.info.ZCellularModuleInfo.control_protocol:type_name -> org.lfedge.eve.info.ZCellularControlProtocol - 96, // 25: org.lfedge.eve.info.StorageDiskState.disk_name:type_name -> org.lfedge.eve.common.DiskDescription + 97, // 25: org.lfedge.eve.info.StorageDiskState.disk_name:type_name -> org.lfedge.eve.common.DiskDescription 12, // 26: org.lfedge.eve.info.StorageDiskState.status:type_name -> org.lfedge.eve.info.StorageStatus 52, // 27: org.lfedge.eve.info.SmartMetric.reallocated_sector_ct:type_name -> org.lfedge.eve.info.SmartAttr 52, // 28: org.lfedge.eve.info.SmartMetric.power_on_hours:type_name -> org.lfedge.eve.info.SmartAttr @@ -9599,10 +9751,10 @@ var file_info_info_proto_depIdxs = []int32{ 31, // 45: org.lfedge.eve.info.ZInfoDevice.assignableAdapters:type_name -> org.lfedge.eve.info.ZioBundle 37, // 46: org.lfedge.eve.info.ZInfoDevice.dns:type_name -> org.lfedge.eve.info.ZInfoDNS 69, // 47: org.lfedge.eve.info.ZInfoDevice.storageList:type_name -> org.lfedge.eve.info.ZInfoStorage - 95, // 48: org.lfedge.eve.info.ZInfoDevice.bootTime:type_name -> google.protobuf.Timestamp + 96, // 48: org.lfedge.eve.info.ZInfoDevice.bootTime:type_name -> google.protobuf.Timestamp 68, // 49: org.lfedge.eve.info.ZInfoDevice.swList:type_name -> org.lfedge.eve.info.ZInfoDevSW 28, // 50: org.lfedge.eve.info.ZInfoDevice.metricItems:type_name -> org.lfedge.eve.info.deprecatedMetricItem - 95, // 51: org.lfedge.eve.info.ZInfoDevice.lastRebootTime:type_name -> google.protobuf.Timestamp + 96, // 51: org.lfedge.eve.info.ZInfoDevice.lastRebootTime:type_name -> google.protobuf.Timestamp 61, // 52: org.lfedge.eve.info.ZInfoDevice.systemAdapter:type_name -> org.lfedge.eve.info.SystemAdapterInfo 5, // 53: org.lfedge.eve.info.ZInfoDevice.HSMStatus:type_name -> org.lfedge.eve.info.HwSecurityModuleStatus 42, // 54: org.lfedge.eve.info.ZInfoDevice.dataSecAtRestInfo:type_name -> org.lfedge.eve.info.DataSecAtRest @@ -9614,7 +9766,7 @@ var file_info_info_proto_depIdxs = []int32{ 48, // 60: org.lfedge.eve.info.ZInfoDevice.sims:type_name -> org.lfedge.eve.info.ZSimcardInfo 47, // 61: org.lfedge.eve.info.ZInfoDevice.tasks:type_name -> org.lfedge.eve.info.ZInfoDeviceTasks 17, // 62: org.lfedge.eve.info.ZInfoDevice.maintenance_mode_reason:type_name -> org.lfedge.eve.info.MaintenanceModeReason - 87, // 63: org.lfedge.eve.info.ZInfoDevice.capabilities:type_name -> org.lfedge.eve.info.Capabilities + 88, // 63: org.lfedge.eve.info.ZInfoDevice.capabilities:type_name -> org.lfedge.eve.info.Capabilities 11, // 64: org.lfedge.eve.info.ZInfoDevice.state:type_name -> org.lfedge.eve.info.ZDeviceState 17, // 65: org.lfedge.eve.info.ZInfoDevice.maintenance_mode_reasons:type_name -> org.lfedge.eve.info.MaintenanceModeReason 56, // 66: org.lfedge.eve.info.ZInfoDevice.storage_info:type_name -> org.lfedge.eve.info.StorageInfo @@ -9624,32 +9776,32 @@ var file_info_info_proto_depIdxs = []int32{ 18, // 70: org.lfedge.eve.info.AttestationInfo.state:type_name -> org.lfedge.eve.info.AttestationState 39, // 71: org.lfedge.eve.info.AttestationInfo.error:type_name -> org.lfedge.eve.info.ErrorInfo 62, // 72: org.lfedge.eve.info.SystemAdapterInfo.status:type_name -> org.lfedge.eve.info.DevicePortStatus - 95, // 73: org.lfedge.eve.info.DevicePortStatus.timePriority:type_name -> google.protobuf.Timestamp - 95, // 74: org.lfedge.eve.info.DevicePortStatus.lastFailed:type_name -> google.protobuf.Timestamp - 95, // 75: org.lfedge.eve.info.DevicePortStatus.lastSucceeded:type_name -> google.protobuf.Timestamp + 96, // 73: org.lfedge.eve.info.DevicePortStatus.timePriority:type_name -> google.protobuf.Timestamp + 96, // 74: org.lfedge.eve.info.DevicePortStatus.lastFailed:type_name -> google.protobuf.Timestamp + 96, // 75: org.lfedge.eve.info.DevicePortStatus.lastSucceeded:type_name -> google.protobuf.Timestamp 63, // 76: org.lfedge.eve.info.DevicePortStatus.ports:type_name -> org.lfedge.eve.info.DevicePort 64, // 77: org.lfedge.eve.info.DevicePort.proxy:type_name -> org.lfedge.eve.info.ProxyStatus 37, // 78: org.lfedge.eve.info.DevicePort.dns:type_name -> org.lfedge.eve.info.ZInfoDNS 36, // 79: org.lfedge.eve.info.DevicePort.location:type_name -> org.lfedge.eve.info.GeoLoc 39, // 80: org.lfedge.eve.info.DevicePort.err:type_name -> org.lfedge.eve.info.ErrorInfo - 94, // 81: org.lfedge.eve.info.DevicePort.usage:type_name -> org.lfedge.eve.common.PhyIoMemberUsage + 95, // 81: org.lfedge.eve.info.DevicePort.usage:type_name -> org.lfedge.eve.common.PhyIoMemberUsage 66, // 82: org.lfedge.eve.info.DevicePort.wireless_status:type_name -> org.lfedge.eve.info.WirelessStatus 65, // 83: org.lfedge.eve.info.ProxyStatus.proxies:type_name -> org.lfedge.eve.info.ProxyEntry 20, // 84: org.lfedge.eve.info.WirelessStatus.type:type_name -> org.lfedge.eve.info.WirelessType 67, // 85: org.lfedge.eve.info.WirelessStatus.cellular:type_name -> org.lfedge.eve.info.ZCellularStatus 50, // 86: org.lfedge.eve.info.ZCellularStatus.providers:type_name -> org.lfedge.eve.info.ZCellularProvider - 97, // 87: org.lfedge.eve.info.ZCellularStatus.current_rats:type_name -> org.lfedge.eve.common.RadioAccessTechnology - 95, // 88: org.lfedge.eve.info.ZCellularStatus.connected_at:type_name -> google.protobuf.Timestamp + 98, // 87: org.lfedge.eve.info.ZCellularStatus.current_rats:type_name -> org.lfedge.eve.common.RadioAccessTechnology + 96, // 88: org.lfedge.eve.info.ZCellularStatus.connected_at:type_name -> google.protobuf.Timestamp 2, // 89: org.lfedge.eve.info.ZInfoDevSW.status:type_name -> org.lfedge.eve.info.ZSwState 39, // 90: org.lfedge.eve.info.ZInfoDevSW.swErr:type_name -> org.lfedge.eve.info.ErrorInfo 21, // 91: org.lfedge.eve.info.ZInfoDevSW.userStatus:type_name -> org.lfedge.eve.info.BaseOsStatus 22, // 92: org.lfedge.eve.info.ZInfoDevSW.subStatus:type_name -> org.lfedge.eve.info.BaseOsSubStatus - 95, // 93: org.lfedge.eve.info.ZInfoSnapshot.create_time:type_name -> google.protobuf.Timestamp + 96, // 93: org.lfedge.eve.info.ZInfoSnapshot.create_time:type_name -> google.protobuf.Timestamp 23, // 94: org.lfedge.eve.info.ZInfoSnapshot.type:type_name -> org.lfedge.eve.info.SnapshotType 39, // 95: org.lfedge.eve.info.ZInfoSnapshot.snap_err:type_name -> org.lfedge.eve.info.ErrorInfo 24, // 96: org.lfedge.eve.info.ZInfoClusterNode.node_status:type_name -> org.lfedge.eve.info.ZInfoClusterNodeStatus 38, // 97: org.lfedge.eve.info.ZInfoApp.softwareList:type_name -> org.lfedge.eve.info.ZInfoSW - 95, // 98: org.lfedge.eve.info.ZInfoApp.bootTime:type_name -> google.protobuf.Timestamp + 96, // 98: org.lfedge.eve.info.ZInfoApp.bootTime:type_name -> google.protobuf.Timestamp 31, // 99: org.lfedge.eve.info.ZInfoApp.assignedAdapters:type_name -> org.lfedge.eve.info.ZioBundle 39, // 100: org.lfedge.eve.info.ZInfoApp.appErr:type_name -> org.lfedge.eve.info.ErrorInfo 2, // 101: org.lfedge.eve.info.ZInfoApp.state:type_name -> org.lfedge.eve.info.ZSwState @@ -9663,7 +9815,7 @@ var file_info_info_proto_depIdxs = []int32{ 75, // 109: org.lfedge.eve.info.ZInfoVpnConn.rInfo:type_name -> org.lfedge.eve.info.ZInfoVpnEndPoint 74, // 110: org.lfedge.eve.info.ZInfoVpnConn.links:type_name -> org.lfedge.eve.info.ZInfoVpnLink 76, // 111: org.lfedge.eve.info.ZInfoVpn.conn:type_name -> org.lfedge.eve.info.ZInfoVpnConn - 95, // 112: org.lfedge.eve.info.ZInfoNetworkInstance.upTimeStamp:type_name -> google.protobuf.Timestamp + 96, // 112: org.lfedge.eve.info.ZInfoNetworkInstance.upTimeStamp:type_name -> google.protobuf.Timestamp 38, // 113: org.lfedge.eve.info.ZInfoNetworkInstance.softwareList:type_name -> org.lfedge.eve.info.ZInfoSW 29, // 114: org.lfedge.eve.info.ZInfoNetworkInstance.ipAssignments:type_name -> org.lfedge.eve.info.ZmetIPAssignmentEntry 30, // 115: org.lfedge.eve.info.ZInfoNetworkInstance.vifs:type_name -> org.lfedge.eve.info.ZmetVifInfo @@ -9671,49 +9823,50 @@ var file_info_info_proto_depIdxs = []int32{ 77, // 117: org.lfedge.eve.info.ZInfoNetworkInstance.vinfo:type_name -> org.lfedge.eve.info.ZInfoVpn 39, // 118: org.lfedge.eve.info.ZInfoNetworkInstance.networkErr:type_name -> org.lfedge.eve.info.ErrorInfo 26, // 119: org.lfedge.eve.info.ZInfoNetworkInstance.state:type_name -> org.lfedge.eve.info.ZNetworkInstanceState - 95, // 120: org.lfedge.eve.info.UsageInfo.createTime:type_name -> google.protobuf.Timestamp - 95, // 121: org.lfedge.eve.info.UsageInfo.lastRefcountChangeTime:type_name -> google.protobuf.Timestamp - 79, // 122: org.lfedge.eve.info.ZInfoVolume.usage:type_name -> org.lfedge.eve.info.UsageInfo - 80, // 123: org.lfedge.eve.info.ZInfoVolume.resources:type_name -> org.lfedge.eve.info.VolumeResources - 2, // 124: org.lfedge.eve.info.ZInfoVolume.state:type_name -> org.lfedge.eve.info.ZSwState - 39, // 125: org.lfedge.eve.info.ZInfoVolume.volumeErr:type_name -> org.lfedge.eve.info.ErrorInfo - 82, // 126: org.lfedge.eve.info.ZInfoContentTree.resources:type_name -> org.lfedge.eve.info.ContentResources - 79, // 127: org.lfedge.eve.info.ZInfoContentTree.usage:type_name -> org.lfedge.eve.info.UsageInfo - 2, // 128: org.lfedge.eve.info.ZInfoContentTree.state:type_name -> org.lfedge.eve.info.ZSwState - 39, // 129: org.lfedge.eve.info.ZInfoContentTree.err:type_name -> org.lfedge.eve.info.ErrorInfo - 82, // 130: org.lfedge.eve.info.ZInfoBlob.resources:type_name -> org.lfedge.eve.info.ContentResources - 79, // 131: org.lfedge.eve.info.ZInfoBlob.usage:type_name -> org.lfedge.eve.info.UsageInfo - 2, // 132: org.lfedge.eve.info.ZInfoBlob.state:type_name -> org.lfedge.eve.info.ZSwState - 39, // 133: org.lfedge.eve.info.ZInfoBlob.err:type_name -> org.lfedge.eve.info.ErrorInfo - 84, // 134: org.lfedge.eve.info.ZInfoBlobList.blob:type_name -> org.lfedge.eve.info.ZInfoBlob - 1, // 135: org.lfedge.eve.info.ZInfoMsg.ztype:type_name -> org.lfedge.eve.info.ZInfoTypes - 58, // 136: org.lfedge.eve.info.ZInfoMsg.dinfo:type_name -> org.lfedge.eve.info.ZInfoDevice - 72, // 137: org.lfedge.eve.info.ZInfoMsg.ainfo:type_name -> org.lfedge.eve.info.ZInfoApp - 78, // 138: org.lfedge.eve.info.ZInfoMsg.niinfo:type_name -> org.lfedge.eve.info.ZInfoNetworkInstance - 81, // 139: org.lfedge.eve.info.ZInfoMsg.vinfo:type_name -> org.lfedge.eve.info.ZInfoVolume - 83, // 140: org.lfedge.eve.info.ZInfoMsg.cinfo:type_name -> org.lfedge.eve.info.ZInfoContentTree - 85, // 141: org.lfedge.eve.info.ZInfoMsg.binfo:type_name -> org.lfedge.eve.info.ZInfoBlobList - 88, // 142: org.lfedge.eve.info.ZInfoMsg.amdinfo:type_name -> org.lfedge.eve.info.ZInfoAppInstMetaData - 89, // 143: org.lfedge.eve.info.ZInfoMsg.evinfo:type_name -> org.lfedge.eve.info.ZInfoEdgeview - 57, // 144: org.lfedge.eve.info.ZInfoMsg.hwinfo:type_name -> org.lfedge.eve.info.ZInfoHardware - 90, // 145: org.lfedge.eve.info.ZInfoMsg.locinfo:type_name -> org.lfedge.eve.info.ZInfoLocation - 98, // 146: org.lfedge.eve.info.ZInfoMsg.patchInfo:type_name -> org.lfedge.eve.info.ZInfoPatchEnvelope - 71, // 147: org.lfedge.eve.info.ZInfoMsg.cluster_node:type_name -> org.lfedge.eve.info.ZInfoClusterNode - 99, // 148: org.lfedge.eve.info.ZInfoMsg.ntp_sources:type_name -> org.lfedge.eve.info.ZInfoNTPSources - 95, // 149: org.lfedge.eve.info.ZInfoMsg.atTimeStamp:type_name -> google.protobuf.Timestamp - 19, // 150: org.lfedge.eve.info.ZInfoAppInstMetaData.type:type_name -> org.lfedge.eve.info.AppInstMetaDataType - 95, // 151: org.lfedge.eve.info.ZInfoEdgeview.expire_time:type_name -> google.protobuf.Timestamp - 95, // 152: org.lfedge.eve.info.ZInfoEdgeview.started_time:type_name -> google.protobuf.Timestamp - 95, // 153: org.lfedge.eve.info.ZInfoLocation.utc_timestamp:type_name -> google.protobuf.Timestamp - 27, // 154: org.lfedge.eve.info.ZInfoLocation.horizontal_reliability:type_name -> org.lfedge.eve.info.LocReliability - 27, // 155: org.lfedge.eve.info.ZInfoLocation.vertical_reliability:type_name -> org.lfedge.eve.info.LocReliability - 44, // 156: org.lfedge.eve.info.ZInfoConfigItemStatus.ConfigItemsEntry.value:type_name -> org.lfedge.eve.info.ZInfoConfigItem - 44, // 157: org.lfedge.eve.info.ZInfoConfigItemStatus.UnknownConfigItemsEntry.value:type_name -> org.lfedge.eve.info.ZInfoConfigItem - 158, // [158:158] is the sub-list for method output_type - 158, // [158:158] is the sub-list for method input_type - 158, // [158:158] is the sub-list for extension type_name - 158, // [158:158] is the sub-list for extension extendee - 0, // [0:158] is the sub-list for field type_name + 79, // 120: org.lfedge.eve.info.ZInfoNetworkInstance.ip_routes:type_name -> org.lfedge.eve.info.IPRoute + 96, // 121: org.lfedge.eve.info.UsageInfo.createTime:type_name -> google.protobuf.Timestamp + 96, // 122: org.lfedge.eve.info.UsageInfo.lastRefcountChangeTime:type_name -> google.protobuf.Timestamp + 80, // 123: org.lfedge.eve.info.ZInfoVolume.usage:type_name -> org.lfedge.eve.info.UsageInfo + 81, // 124: org.lfedge.eve.info.ZInfoVolume.resources:type_name -> org.lfedge.eve.info.VolumeResources + 2, // 125: org.lfedge.eve.info.ZInfoVolume.state:type_name -> org.lfedge.eve.info.ZSwState + 39, // 126: org.lfedge.eve.info.ZInfoVolume.volumeErr:type_name -> org.lfedge.eve.info.ErrorInfo + 83, // 127: org.lfedge.eve.info.ZInfoContentTree.resources:type_name -> org.lfedge.eve.info.ContentResources + 80, // 128: org.lfedge.eve.info.ZInfoContentTree.usage:type_name -> org.lfedge.eve.info.UsageInfo + 2, // 129: org.lfedge.eve.info.ZInfoContentTree.state:type_name -> org.lfedge.eve.info.ZSwState + 39, // 130: org.lfedge.eve.info.ZInfoContentTree.err:type_name -> org.lfedge.eve.info.ErrorInfo + 83, // 131: org.lfedge.eve.info.ZInfoBlob.resources:type_name -> org.lfedge.eve.info.ContentResources + 80, // 132: org.lfedge.eve.info.ZInfoBlob.usage:type_name -> org.lfedge.eve.info.UsageInfo + 2, // 133: org.lfedge.eve.info.ZInfoBlob.state:type_name -> org.lfedge.eve.info.ZSwState + 39, // 134: org.lfedge.eve.info.ZInfoBlob.err:type_name -> org.lfedge.eve.info.ErrorInfo + 85, // 135: org.lfedge.eve.info.ZInfoBlobList.blob:type_name -> org.lfedge.eve.info.ZInfoBlob + 1, // 136: org.lfedge.eve.info.ZInfoMsg.ztype:type_name -> org.lfedge.eve.info.ZInfoTypes + 58, // 137: org.lfedge.eve.info.ZInfoMsg.dinfo:type_name -> org.lfedge.eve.info.ZInfoDevice + 72, // 138: org.lfedge.eve.info.ZInfoMsg.ainfo:type_name -> org.lfedge.eve.info.ZInfoApp + 78, // 139: org.lfedge.eve.info.ZInfoMsg.niinfo:type_name -> org.lfedge.eve.info.ZInfoNetworkInstance + 82, // 140: org.lfedge.eve.info.ZInfoMsg.vinfo:type_name -> org.lfedge.eve.info.ZInfoVolume + 84, // 141: org.lfedge.eve.info.ZInfoMsg.cinfo:type_name -> org.lfedge.eve.info.ZInfoContentTree + 86, // 142: org.lfedge.eve.info.ZInfoMsg.binfo:type_name -> org.lfedge.eve.info.ZInfoBlobList + 89, // 143: org.lfedge.eve.info.ZInfoMsg.amdinfo:type_name -> org.lfedge.eve.info.ZInfoAppInstMetaData + 90, // 144: org.lfedge.eve.info.ZInfoMsg.evinfo:type_name -> org.lfedge.eve.info.ZInfoEdgeview + 57, // 145: org.lfedge.eve.info.ZInfoMsg.hwinfo:type_name -> org.lfedge.eve.info.ZInfoHardware + 91, // 146: org.lfedge.eve.info.ZInfoMsg.locinfo:type_name -> org.lfedge.eve.info.ZInfoLocation + 99, // 147: org.lfedge.eve.info.ZInfoMsg.patchInfo:type_name -> org.lfedge.eve.info.ZInfoPatchEnvelope + 71, // 148: org.lfedge.eve.info.ZInfoMsg.cluster_node:type_name -> org.lfedge.eve.info.ZInfoClusterNode + 100, // 149: org.lfedge.eve.info.ZInfoMsg.ntp_sources:type_name -> org.lfedge.eve.info.ZInfoNTPSources + 96, // 150: org.lfedge.eve.info.ZInfoMsg.atTimeStamp:type_name -> google.protobuf.Timestamp + 19, // 151: org.lfedge.eve.info.ZInfoAppInstMetaData.type:type_name -> org.lfedge.eve.info.AppInstMetaDataType + 96, // 152: org.lfedge.eve.info.ZInfoEdgeview.expire_time:type_name -> google.protobuf.Timestamp + 96, // 153: org.lfedge.eve.info.ZInfoEdgeview.started_time:type_name -> google.protobuf.Timestamp + 96, // 154: org.lfedge.eve.info.ZInfoLocation.utc_timestamp:type_name -> google.protobuf.Timestamp + 27, // 155: org.lfedge.eve.info.ZInfoLocation.horizontal_reliability:type_name -> org.lfedge.eve.info.LocReliability + 27, // 156: org.lfedge.eve.info.ZInfoLocation.vertical_reliability:type_name -> org.lfedge.eve.info.LocReliability + 44, // 157: org.lfedge.eve.info.ZInfoConfigItemStatus.ConfigItemsEntry.value:type_name -> org.lfedge.eve.info.ZInfoConfigItem + 44, // 158: org.lfedge.eve.info.ZInfoConfigItemStatus.UnknownConfigItemsEntry.value:type_name -> org.lfedge.eve.info.ZInfoConfigItem + 159, // [159:159] is the sub-list for method output_type + 159, // [159:159] is the sub-list for method input_type + 159, // [159:159] is the sub-list for extension type_name + 159, // [159:159] is the sub-list for extension extendee + 0, // [0:159] is the sub-list for field type_name } func init() { file_info_info_proto_init() } @@ -10337,7 +10490,7 @@ func file_info_info_proto_init() { } } file_info_info_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UsageInfo); i { + switch v := v.(*IPRoute); i { case 0: return &v.state case 1: @@ -10349,7 +10502,7 @@ func file_info_info_proto_init() { } } file_info_info_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VolumeResources); i { + switch v := v.(*UsageInfo); i { case 0: return &v.state case 1: @@ -10361,7 +10514,7 @@ func file_info_info_proto_init() { } } file_info_info_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZInfoVolume); i { + switch v := v.(*VolumeResources); i { case 0: return &v.state case 1: @@ -10373,7 +10526,7 @@ func file_info_info_proto_init() { } } file_info_info_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ContentResources); i { + switch v := v.(*ZInfoVolume); i { case 0: return &v.state case 1: @@ -10385,7 +10538,7 @@ func file_info_info_proto_init() { } } file_info_info_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZInfoContentTree); i { + switch v := v.(*ContentResources); i { case 0: return &v.state case 1: @@ -10397,7 +10550,7 @@ func file_info_info_proto_init() { } } file_info_info_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZInfoBlob); i { + switch v := v.(*ZInfoContentTree); i { case 0: return &v.state case 1: @@ -10409,7 +10562,7 @@ func file_info_info_proto_init() { } } file_info_info_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZInfoBlobList); i { + switch v := v.(*ZInfoBlob); i { case 0: return &v.state case 1: @@ -10421,7 +10574,7 @@ func file_info_info_proto_init() { } } file_info_info_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZInfoMsg); i { + switch v := v.(*ZInfoBlobList); i { case 0: return &v.state case 1: @@ -10433,7 +10586,7 @@ func file_info_info_proto_init() { } } file_info_info_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Capabilities); i { + switch v := v.(*ZInfoMsg); i { case 0: return &v.state case 1: @@ -10445,7 +10598,7 @@ func file_info_info_proto_init() { } } file_info_info_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZInfoAppInstMetaData); i { + switch v := v.(*Capabilities); i { case 0: return &v.state case 1: @@ -10457,7 +10610,7 @@ func file_info_info_proto_init() { } } file_info_info_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ZInfoEdgeview); i { + switch v := v.(*ZInfoAppInstMetaData); i { case 0: return &v.state case 1: @@ -10469,6 +10622,18 @@ func file_info_info_proto_init() { } } file_info_info_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ZInfoEdgeview); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_info_info_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ZInfoLocation); i { case 0: return &v.state @@ -10491,7 +10656,7 @@ func file_info_info_proto_init() { file_info_info_proto_msgTypes[50].OneofWrappers = []interface{}{ (*ZInfoNetworkInstance_Vinfo)(nil), } - file_info_info_proto_msgTypes[58].OneofWrappers = []interface{}{ + file_info_info_proto_msgTypes[59].OneofWrappers = []interface{}{ (*ZInfoMsg_Dinfo)(nil), (*ZInfoMsg_Ainfo)(nil), (*ZInfoMsg_Niinfo)(nil), @@ -10512,7 +10677,7 @@ func file_info_info_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_info_info_proto_rawDesc, NumEnums: 28, - NumMessages: 65, + NumMessages: 66, NumExtensions: 0, NumServices: 0, }, diff --git a/go/metrics/metrics.pb.go b/go/metrics/metrics.pb.go index 675d34bc..68ac4150 100644 --- a/go/metrics/metrics.pb.go +++ b/go/metrics/metrics.pb.go @@ -3334,6 +3334,15 @@ func (x *ZMetricNetworkStats) GetTx() *NetworkStats { return nil } +// Metrics published for a NI multipath route with probing-based selection +// of the output port. +// The route is identified by dst_network. +// current_port (and currentIntf) indicate which port is currently selected. +// The rest are probing metrics and status info used to make the selection. +// In older EVE versions, probing was less flexible and it only allowed to select +// a single port for the entire network instance and all its routes. In that case +// dst_network is published empty and there is only one instance of ZProbeNIMetrics +// published for the network instance. type ZProbeNIMetrics struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3345,6 +3354,10 @@ type ZProbeNIMetrics struct { RemotePingIntv uint32 `protobuf:"varint,4,opt,name=remotePingIntv,proto3" json:"remotePingIntv,omitempty"` // remote probe interval in seconds UplinkCnt uint32 `protobuf:"varint,5,opt,name=uplinkCnt,proto3" json:"uplinkCnt,omitempty"` // total number of uplink intf in consideration IntfMetric []*ZProbeNIMetrics_ZProbeIntfMetric `protobuf:"bytes,10,rep,name=intfMetric,proto3" json:"intfMetric,omitempty"` // per uplink intf probing stats + DstNetwork string `protobuf:"bytes,20,opt,name=dst_network,json=dstNetwork,proto3" json:"dst_network,omitempty"` + // Logical label of the currently selected output port for the route. + // Note that currentIntf reports the interface name of this port. + CurrentPort string `protobuf:"bytes,21,opt,name=current_port,json=currentPort,proto3" json:"current_port,omitempty"` } func (x *ZProbeNIMetrics) Reset() { @@ -3421,6 +3434,20 @@ func (x *ZProbeNIMetrics) GetIntfMetric() []*ZProbeNIMetrics_ZProbeIntfMetric { return nil } +func (x *ZProbeNIMetrics) GetDstNetwork() string { + if x != nil { + return x.DstNetwork + } + return "" +} + +func (x *ZProbeNIMetrics) GetCurrentPort() string { + if x != nil { + return x.CurrentPort + } + return "" +} + type ZMetricNetworkInstance struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -3428,11 +3455,17 @@ type ZMetricNetworkInstance struct { NetworkID string `protobuf:"bytes,2,opt,name=networkID,proto3" json:"networkID,omitempty"` // UUID NetworkVersion string `protobuf:"bytes,3,opt,name=networkVersion,proto3" json:"networkVersion,omitempty"` - InstType uint32 `protobuf:"varint,5,opt,name=instType,proto3" json:"instType,omitempty"` // ZNetworkInstType - Displayname string `protobuf:"bytes,6,opt,name=displayname,proto3" json:"displayname,omitempty"` // From NetworkInstance config - Activated bool `protobuf:"varint,7,opt,name=activated,proto3" json:"activated,omitempty"` // Forwarding enabled - Network []*NetworkMetric `protobuf:"bytes,10,rep,name=network,proto3" json:"network,omitempty"` // Aggregate counters for bridge - ProbeMetric *ZProbeNIMetrics `protobuf:"bytes,12,opt,name=probeMetric,proto3" json:"probeMetric,omitempty"` // NI uplink probing stats + InstType uint32 `protobuf:"varint,5,opt,name=instType,proto3" json:"instType,omitempty"` // ZNetworkInstType + Displayname string `protobuf:"bytes,6,opt,name=displayname,proto3" json:"displayname,omitempty"` // From NetworkInstance config + Activated bool `protobuf:"varint,7,opt,name=activated,proto3" json:"activated,omitempty"` // Forwarding enabled + Network []*NetworkMetric `protobuf:"bytes,10,rep,name=network,proto3" json:"network,omitempty"` // Aggregate counters for bridge + // NI uplink probing stats + // Deprecated - newer EVE versions publish a list of probeMetrics (see below), + // with one entry for every multipath route with probing enabled. + // + // Deprecated: Marked as deprecated in metrics/metrics.proto. + ProbeMetric *ZProbeNIMetrics `protobuf:"bytes,12,opt,name=probeMetric,proto3" json:"probeMetric,omitempty"` + ProbeMetrics []*ZProbeNIMetrics `protobuf:"bytes,13,rep,name=probe_metrics,json=probeMetrics,proto3" json:"probe_metrics,omitempty"` // Types that are assignable to InstanceContent: // // *ZMetricNetworkInstance_Vpnm @@ -3517,6 +3550,7 @@ func (x *ZMetricNetworkInstance) GetNetwork() []*NetworkMetric { return nil } +// Deprecated: Marked as deprecated in metrics/metrics.proto. func (x *ZMetricNetworkInstance) GetProbeMetric() *ZProbeNIMetrics { if x != nil { return x.ProbeMetric @@ -3524,6 +3558,13 @@ func (x *ZMetricNetworkInstance) GetProbeMetric() *ZProbeNIMetrics { return nil } +func (x *ZMetricNetworkInstance) GetProbeMetrics() []*ZProbeNIMetrics { + if x != nil { + return x.ProbeMetrics + } + return nil +} + func (m *ZMetricNetworkInstance) GetInstanceContent() isZMetricNetworkInstance_InstanceContent { if m != nil { return m.InstanceContent @@ -5296,7 +5337,7 @@ var file_metrics_metrics_proto_rawDesc = []byte{ 0x12, 0x34, 0x0a, 0x02, 0x74, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x52, 0x02, 0x74, 0x78, 0x22, 0x86, 0x05, 0x0a, 0x0f, 0x5a, 0x50, 0x72, 0x6f, 0x62, + 0x74, 0x73, 0x52, 0x02, 0x74, 0x78, 0x22, 0xca, 0x05, 0x0a, 0x0f, 0x5a, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x4e, 0x49, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x74, 0x66, 0x12, 0x26, 0x0a, 0x0e, @@ -5314,314 +5355,324 @@ var file_metrics_metrics_proto_rawDesc = []byte{ 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x4e, 0x49, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x49, 0x6e, 0x74, 0x66, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x0a, 0x69, 0x6e, 0x74, 0x66, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x1a, 0xec, 0x02, 0x0a, 0x10, 0x5a, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x49, 0x6e, 0x74, 0x66, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x66, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x66, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4e, 0x65, 0x78, 0x68, - 0x74, 0x6f, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x67, 0x61, 0x74, 0x65, 0x77, - 0x61, 0x79, 0x4e, 0x65, 0x78, 0x68, 0x74, 0x6f, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x67, 0x61, 0x74, - 0x65, 0x77, 0x61, 0x79, 0x55, 0x50, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x67, 0x61, - 0x74, 0x65, 0x77, 0x61, 0x79, 0x55, 0x50, 0x12, 0x22, 0x0a, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x50, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x50, 0x12, 0x26, 0x0a, 0x0e, 0x6e, - 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x55, 0x70, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x44, 0x6f, - 0x77, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6e, - 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x44, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x55, 0x70, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x44, - 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, - 0x2e, 0x0a, 0x12, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x4c, 0x61, - 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x22, - 0xa3, 0x05, 0x0a, 0x16, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, - 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, - 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x09, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x12, 0x3f, 0x0a, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, - 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x49, 0x0a, - 0x0b, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x0c, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, - 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x50, 0x72, 0x6f, - 0x62, 0x65, 0x4e, 0x49, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0b, 0x70, 0x72, 0x6f, - 0x62, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x38, 0x0a, 0x04, 0x76, 0x70, 0x6e, 0x6d, - 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, + 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x73, 0x74, 0x5f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, + 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x73, 0x74, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, + 0x50, 0x6f, 0x72, 0x74, 0x1a, 0xec, 0x02, 0x0a, 0x10, 0x5a, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x49, + 0x6e, 0x74, 0x66, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, + 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x74, + 0x66, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, + 0x4e, 0x65, 0x78, 0x68, 0x74, 0x6f, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x67, + 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x4e, 0x65, 0x78, 0x68, 0x74, 0x6f, 0x70, 0x12, 0x1c, 0x0a, + 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x55, 0x50, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x67, 0x61, 0x74, 0x65, 0x77, 0x61, 0x79, 0x55, 0x50, 0x12, 0x22, 0x0a, 0x0c, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x50, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x48, 0x6f, 0x73, 0x74, 0x55, 0x50, 0x12, + 0x26, 0x0a, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, + 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x6e, 0x65, 0x78, 0x74, 0x68, + 0x6f, 0x70, 0x44, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x10, 0x6e, 0x65, 0x78, 0x74, 0x68, 0x6f, 0x70, 0x44, 0x6f, 0x77, 0x6e, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x24, 0x0a, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x55, 0x70, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x55, 0x70, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x72, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x12, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x0f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, 0x12, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x62, 0x65, 0x4c, 0x61, 0x74, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x12, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x4c, 0x61, 0x74, 0x65, + 0x6e, 0x63, 0x79, 0x22, 0xf5, 0x05, 0x0a, 0x16, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x44, 0x12, 0x26, 0x0a, 0x0e, + 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x64, + 0x12, 0x3f, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x0a, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, + 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, + 0x72, 0x6b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, + 0x6b, 0x12, 0x4d, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, - 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x70, 0x6e, 0x48, 0x00, 0x52, 0x04, 0x76, 0x70, - 0x6e, 0x6d, 0x12, 0x3b, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x65, 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, - 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x4e, 0x6f, 0x6e, 0x65, 0x48, 0x00, 0x52, 0x05, 0x6e, 0x6f, 0x6e, 0x65, 0x6d, 0x12, - 0x41, 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, 0x1e, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, - 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x09, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, + 0x5a, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x4e, 0x49, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, + 0x02, 0x18, 0x01, 0x52, 0x0b, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x12, 0x4c, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, + 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x2e, 0x5a, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x4e, 0x49, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x38, + 0x0a, 0x04, 0x76, 0x70, 0x6e, 0x6d, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6f, + 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x70, 0x6e, + 0x48, 0x00, 0x52, 0x04, 0x76, 0x70, 0x6e, 0x6d, 0x12, 0x3b, 0x0a, 0x05, 0x6e, 0x6f, 0x6e, 0x65, + 0x6d, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, + 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x6f, 0x6e, 0x65, 0x48, 0x00, 0x52, 0x05, + 0x6e, 0x6f, 0x6e, 0x65, 0x6d, 0x12, 0x41, 0x0a, 0x09, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x18, 0x1e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x12, 0x3d, 0x0a, 0x09, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, - 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, + 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x46, 0x6c, 0x6f, 0x77, 0x52, 0x09, 0x66, + 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, + 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, + 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, + 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x0c, 0x6e, 0x65, 0x74, + 0x77, 0x6f, 0x72, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x3d, 0x0a, 0x09, 0x76, 0x6c, 0x61, + 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6f, + 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, + 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x49, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x9d, 0x02, 0x0a, 0x0d, + 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, + 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, + 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x1e, 0x0a, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, + 0x1c, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x09, 0x75, 0x73, 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1c, 0x0a, + 0x09, 0x66, 0x72, 0x65, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x09, 0x66, 0x72, 0x65, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xbe, 0x03, 0x0a, 0x0e, + 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x10, + 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x70, 0x69, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, + 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, + 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, + 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x46, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, + 0x6d, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0a, 0x6e, 0x75, 0x6d, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x75, + 0x73, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x70, 0x75, + 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, + 0x63, 0x70, 0x75, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 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, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x6d, 0x5f, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x76, 0x6d, 0x42, 0x79, 0x74, + 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x73, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x72, 0x73, 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, + 0x25, 0x0a, 0x0e, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50, + 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, + 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x22, 0x8b, 0x03, 0x0a, + 0x0a, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4d, 0x73, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x64, + 0x65, 0x76, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x76, 0x49, + 0x44, 0x12, 0x3c, 0x0a, 0x0b, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, + 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, 0x0b, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x36, 0x0a, 0x02, 0x64, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, + 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x2e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x48, 0x00, 0x52, 0x02, 0x64, 0x6d, 0x12, 0x31, 0x0a, 0x02, 0x61, 0x6d, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, + 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x61, 0x70, 0x70, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x52, 0x02, 0x61, 0x6d, 0x12, 0x3e, 0x0a, 0x02, 0x6e, 0x6d, + 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, - 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x6e, - 0x66, 0x6f, 0x42, 0x11, 0x0a, 0x0f, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0x9d, 0x02, 0x0a, 0x0d, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, - 0x09, 0x72, 0x65, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x09, 0x72, 0x65, 0x61, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x77, - 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x72, - 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, - 0x72, 0x65, 0x61, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x77, 0x72, 0x69, - 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x77, - 0x72, 0x69, 0x74, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x73, 0x65, - 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x75, 0x73, - 0x65, 0x64, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x66, 0x72, 0x65, 0x65, 0x42, - 0x79, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x66, 0x72, 0x65, 0x65, - 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xbe, 0x03, 0x0a, 0x0e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, - 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, - 0x73, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x07, 0x77, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x6e, - 0x75, 0x6d, 0x5f, 0x66, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6e, 0x75, - 0x6d, 0x46, 0x64, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x68, 0x72, 0x65, - 0x61, 0x64, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6e, 0x75, 0x6d, 0x54, 0x68, - 0x72, 0x65, 0x61, 0x64, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x54, 0x69, - 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x70, 0x75, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, - 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x63, 0x70, 0x75, 0x50, 0x65, 0x72, - 0x63, 0x65, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x0a, 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, 0x54, 0x69, 0x6d, - 0x65, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x6d, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x07, 0x76, 0x6d, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, - 0x72, 0x73, 0x73, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x08, 0x72, 0x73, 0x73, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x65, 0x6d, - 0x6f, 0x72, 0x79, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x0d, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x22, 0x8b, 0x03, 0x0a, 0x0a, 0x5a, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x4d, 0x73, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x76, 0x49, 0x44, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x64, 0x65, 0x76, 0x49, 0x44, 0x12, 0x3c, 0x0a, 0x0b, 0x61, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 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, 0x0b, 0x61, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x36, 0x0a, 0x02, 0x64, 0x6d, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, - 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x64, - 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x48, 0x00, 0x52, 0x02, 0x64, - 0x6d, 0x12, 0x31, 0x0a, 0x02, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x02, 0x6e, 0x6d, 0x12, 0x35, 0x0a, 0x02, 0x76, 0x6d, + 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, + 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, + 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x02, 0x76, + 0x6d, 0x12, 0x36, 0x0a, 0x02, 0x70, 0x72, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x61, 0x70, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x52, 0x02, 0x61, 0x6d, 0x12, 0x3e, 0x0a, 0x02, 0x6e, 0x6d, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2e, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, - 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x52, 0x02, 0x6e, 0x6d, 0x12, 0x35, 0x0a, 0x02, 0x76, 0x6d, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x25, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, - 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x02, 0x76, 0x6d, 0x12, 0x36, 0x0a, 0x02, 0x70, - 0x72, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, - 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, - 0x02, 0x70, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x22, 0xa1, 0x09, 0x0a, 0x0c, 0x6e, 0x65, 0x77, 0x6c, 0x6f, 0x67, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x54, - 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x66, 0x61, 0x69, - 0x6c, 0x65, 0x64, 0x54, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x12, 0x48, 0x0a, 0x11, 0x66, 0x61, 0x69, - 0x6c, 0x53, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, - 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, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, - 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, - 0x73, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, - 0x28, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x34, 0x78, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x34, 0x78, 0x78, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x74, 0x76, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x74, 0x76, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x6f, 0x67, 0x66, 0x69, - 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0e, 0x6c, 0x6f, 0x67, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, - 0x28, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, - 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x47, 0x7a, 0x69, - 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x61, 0x76, 0x67, - 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0f, 0x61, 0x76, 0x67, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, - 0x69, 0x7a, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x69, 0x6d, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, - 0x4d, 0x73, 0x65, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6d, 0x69, 0x6d, 0x55, - 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x61, 0x78, - 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x12, - 0x24, 0x0a, 0x0d, 0x61, 0x76, 0x67, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x61, 0x76, 0x67, 0x55, 0x70, 0x6c, 0x6f, 0x61, - 0x64, 0x4d, 0x73, 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6c, - 0x61, 0x73, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x12, 0x2c, 0x0a, - 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x50, 0x55, 0x4c, 0x6f, 0x61, 0x64, 0x50, - 0x63, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x43, 0x50, 0x55, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x63, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x61, - 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x43, 0x50, 0x55, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x63, 0x74, - 0x18, 0x0e, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x43, - 0x50, 0x55, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x63, 0x74, 0x12, 0x30, 0x0a, 0x13, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, - 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, - 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x30, 0x0a, 0x13, 0x61, - 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x6c, - 0x61, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, - 0x65, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x4c, 0x0a, - 0x0d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x11, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, - 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6c, 0x6f, - 0x67, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0d, 0x64, 0x65, - 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x46, 0x0a, 0x0a, 0x61, - 0x70, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, - 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6c, 0x6f, 0x67, 0x66, 0x69, 0x6c, 0x65, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0a, 0x61, 0x70, 0x70, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x12, 0x6b, 0x0a, 0x13, 0x74, 0x6f, 0x70, 0x31, 0x30, 0x5f, 0x69, 0x6e, 0x70, - 0x75, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x3b, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, - 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6e, 0x65, 0x77, 0x6c, 0x6f, 0x67, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x54, 0x6f, 0x70, 0x31, 0x30, 0x49, 0x6e, 0x70, 0x75, - 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x11, 0x74, - 0x6f, 0x70, 0x31, 0x30, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, - 0x12, 0x2a, 0x0a, 0x10, 0x67, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x67, 0x7a, 0x69, 0x70, - 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0e, - 0x74, 0x6f, 0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x15, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x6f, 0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x6b, 0x69, 0x70, 0x55, 0x70, 0x6c, 0x6f, - 0x61, 0x64, 0x41, 0x70, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x11, 0x73, 0x6b, 0x69, 0x70, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x70, 0x70, 0x46, 0x69, - 0x6c, 0x65, 0x1a, 0x44, 0x0a, 0x16, 0x54, 0x6f, 0x70, 0x31, 0x30, 0x49, 0x6e, 0x70, 0x75, 0x74, - 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdc, 0x03, 0x0a, 0x0e, 0x6c, 0x6f, 0x67, - 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x6e, - 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, - 0x65, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, - 0x42, 0x79, 0x74, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x11, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x42, 0x79, 0x74, 0x65, 0x73, 0x57, 0x72, - 0x69, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x42, 0x79, 0x74, 0x65, 0x73, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x42, - 0x79, 0x74, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x6e, 0x75, 0x6d, - 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x44, 0x69, 0x72, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, - 0x49, 0x6e, 0x44, 0x69, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x49, 0x6e, 0x70, 0x75, - 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x6e, 0x75, - 0x6d, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x6e, - 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x74, 0x72, 0x79, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, - 0x6c, 0x65, 0x52, 0x65, 0x74, 0x72, 0x79, 0x12, 0x32, 0x0a, 0x14, 0x6e, 0x75, 0x6d, 0x47, 0x7a, - 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x70, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, - 0x6c, 0x65, 0x4b, 0x65, 0x70, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x12, 0x4a, 0x0a, 0x12, 0x72, - 0x65, 0x63, 0x65, 0x6e, 0x74, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x69, 0x6d, - 0x65, 0x18, 0x08, 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, 0x12, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x47, 0x7a, 0x69, 0x70, 0x46, - 0x69, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4e, 0x0a, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x47, - 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, - 0x09, 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, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, - 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x33, 0x0a, 0x0b, 0x7a, 0x65, 0x64, 0x62, 0x6f, - 0x78, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x47, 0x6f, 0x52, - 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6e, - 0x75, 0x6d, 0x47, 0x6f, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x73, 0x22, 0xc4, 0x01, 0x0a, - 0x08, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, - 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x54, 0x72, 0x75, 0x6e, 0x6b, 0x50, 0x6f, 0x72, 0x74, - 0x73, 0x12, 0x51, 0x0a, 0x0b, 0x76, 0x6c, 0x61, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x5a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x50, 0x72, + 0x6f, 0x63, 0x65, 0x73, 0x73, 0x52, 0x02, 0x70, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x22, 0xa1, 0x09, 0x0a, 0x0c, 0x6e, + 0x65, 0x77, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x22, 0x0a, 0x0c, 0x66, + 0x61, 0x69, 0x6c, 0x65, 0x64, 0x54, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x54, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x12, + 0x48, 0x0a, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 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, 0x11, 0x66, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x6e, 0x74, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x10, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x55, + 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x34, 0x78, 0x78, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, + 0x6e, 0x75, 0x6d, 0x34, 0x78, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x73, 0x12, + 0x2c, 0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, + 0x49, 0x6e, 0x74, 0x76, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x74, 0x76, 0x12, 0x26, 0x0a, + 0x0e, 0x6c, 0x6f, 0x67, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6c, 0x6f, 0x67, 0x66, 0x69, 0x6c, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x28, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x47, 0x7a, 0x69, 0x70, + 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, + 0x6d, 0x61, 0x78, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, + 0x28, 0x0a, 0x0f, 0x61, 0x76, 0x67, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x61, 0x76, 0x67, 0x47, 0x7a, 0x69, + 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x69, 0x6d, + 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x0d, 0x6d, 0x69, 0x6d, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x12, + 0x24, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x4d, 0x73, 0x65, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x76, 0x67, 0x55, 0x70, 0x6c, 0x6f, + 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x61, 0x76, + 0x67, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x12, 0x26, 0x0a, 0x0e, 0x6c, + 0x61, 0x73, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x73, 0x65, 0x63, 0x18, 0x0c, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x4d, + 0x73, 0x65, 0x63, 0x12, 0x2c, 0x0a, 0x11, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x50, + 0x55, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x63, 0x74, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x43, 0x50, 0x55, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x63, + 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x43, 0x50, 0x55, 0x4c, + 0x6f, 0x61, 0x64, 0x50, 0x63, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x61, 0x76, + 0x65, 0x72, 0x61, 0x67, 0x65, 0x43, 0x50, 0x55, 0x4c, 0x6f, 0x61, 0x64, 0x50, 0x63, 0x74, 0x12, + 0x30, 0x0a, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, + 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, 0x6c, 0x61, + 0x79, 0x12, 0x30, 0x0a, 0x13, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x63, + 0x65, 0x73, 0x73, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, + 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x44, 0x65, + 0x6c, 0x61, 0x79, 0x12, 0x4c, 0x0a, 0x0d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x72, 0x67, + 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x2e, 0x6c, 0x6f, 0x67, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x52, 0x0d, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x12, 0x46, 0x0a, 0x0a, 0x61, 0x70, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, + 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x6c, + 0x6f, 0x67, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x0a, 0x61, + 0x70, 0x70, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x6b, 0x0a, 0x13, 0x74, 0x6f, 0x70, + 0x31, 0x30, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, + 0x18, 0x13, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, - 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x56, 0x6c, 0x61, 0x6e, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x76, 0x6c, 0x61, 0x6e, 0x43, 0x6f, - 0x75, 0x6e, 0x74, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x56, 0x6c, 0x61, 0x6e, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x22, 0xdf, 0x01, 0x0a, 0x0d, 0x46, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x4d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x43, 0x0a, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, - 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, - 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x3d, 0x0a, 0x05, 0x66, 0x6c, - 0x6f, 0x77, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67, 0x2e, - 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, - 0x72, 0x73, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x12, 0x4a, 0x0a, 0x0c, 0x64, 0x6e, 0x73, - 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x6e, 0x65, 0x77, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x2e, 0x54, 0x6f, 0x70, + 0x31, 0x30, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x11, 0x74, 0x6f, 0x70, 0x31, 0x30, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x2a, 0x0a, 0x10, 0x67, 0x7a, 0x69, 0x70, 0x46, 0x69, + 0x6c, 0x65, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x10, 0x67, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x74, 0x6f, 0x6f, 0x4d, 0x61, 0x6e, 0x79, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x6f, 0x6f, 0x4d, + 0x61, 0x6e, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x73, 0x6b, + 0x69, 0x70, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x41, 0x70, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x18, + 0x16, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x73, 0x6b, 0x69, 0x70, 0x55, 0x70, 0x6c, 0x6f, 0x61, + 0x64, 0x41, 0x70, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x1a, 0x44, 0x0a, 0x16, 0x54, 0x6f, 0x70, 0x31, + 0x30, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdc, + 0x03, 0x0a, 0x0e, 0x6c, 0x6f, 0x67, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, + 0x53, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x47, + 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x6e, + 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x42, 0x79, 0x74, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x11, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x42, + 0x79, 0x74, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, + 0x42, 0x79, 0x74, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x42, 0x79, 0x74, 0x65, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, + 0x2a, 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, + 0x44, 0x69, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6e, 0x75, 0x6d, 0x47, 0x7a, + 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x6e, 0x44, 0x69, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6e, + 0x75, 0x6d, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x2a, 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, + 0x52, 0x65, 0x74, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x10, 0x6e, 0x75, 0x6d, + 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x74, 0x72, 0x79, 0x12, 0x32, 0x0a, + 0x14, 0x6e, 0x75, 0x6d, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x70, 0x74, + 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x6e, 0x75, 0x6d, + 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x70, 0x74, 0x4c, 0x6f, 0x63, 0x61, + 0x6c, 0x12, 0x4a, 0x0a, 0x12, 0x72, 0x65, 0x63, 0x65, 0x6e, 0x74, 0x47, 0x7a, 0x69, 0x70, 0x46, + 0x69, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x08, 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, 0x12, 0x72, 0x65, 0x63, 0x65, 0x6e, + 0x74, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4e, 0x0a, + 0x14, 0x6c, 0x61, 0x73, 0x74, 0x47, 0x7a, 0x69, 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x6e, + 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x09, 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, 0x14, 0x6c, 0x61, 0x73, 0x74, 0x47, 0x7a, 0x69, + 0x70, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x33, 0x0a, + 0x0b, 0x7a, 0x65, 0x64, 0x62, 0x6f, 0x78, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0d, + 0x6e, 0x75, 0x6d, 0x47, 0x6f, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x47, 0x6f, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, + 0x65, 0x73, 0x22, 0xc4, 0x01, 0x0a, 0x08, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, + 0x26, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x75, 0x6e, 0x6b, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x54, 0x72, 0x75, + 0x6e, 0x6b, 0x50, 0x6f, 0x72, 0x74, 0x73, 0x12, 0x51, 0x0a, 0x0b, 0x76, 0x6c, 0x61, 0x6e, 0x5f, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x6f, + 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x76, 0x6c, 0x61, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x56, + 0x6c, 0x61, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, + 0x76, 0x6c, 0x61, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x1a, 0x3d, 0x0a, 0x0f, 0x56, 0x6c, + 0x61, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdf, 0x01, 0x0a, 0x0d, 0x46, 0x6c, + 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x43, 0x0a, 0x08, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x52, 0x08, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, + 0x12, 0x3d, 0x0a, 0x05, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x46, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0b, 0x64, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0x6a, 0x0a, 0x0f, 0x46, 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x05, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x61, 0x69, 0x6c, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x41, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, - 0x73, 0x2a, 0x32, 0x0a, 0x0c, 0x5a, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, - 0x73, 0x12, 0x09, 0x0a, 0x05, 0x5a, 0x6d, 0x4e, 0x6f, 0x70, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, - 0x5a, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x5a, 0x6d, - 0x41, 0x70, 0x70, 0x10, 0x03, 0x2a, 0x85, 0x02, 0x0a, 0x0b, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, - 0x1a, 0x0a, 0x16, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, - 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x43, - 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x44, 0x45, 0x43, 0x52, - 0x59, 0x50, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, - 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x4d, - 0x41, 0x52, 0x53, 0x48, 0x41, 0x4c, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, - 0x23, 0x0a, 0x1f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, - 0x43, 0x4c, 0x45, 0x41, 0x52, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, - 0x43, 0x4b, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45, - 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x41, 0x4c, - 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x49, 0x50, 0x48, 0x45, - 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, - 0x52, 0x10, 0x06, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, - 0x52, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x10, 0x07, 0x2a, 0x66, 0x0a, - 0x0e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x13, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x4f, 0x74, 0x68, - 0x65, 0x72, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, - 0x65, 0x6d, 0x47, 0x61, 0x75, 0x67, 0x65, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x10, 0x02, - 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x10, 0x03, 0x42, 0x3f, 0x0a, 0x16, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, - 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5a, - 0x25, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x66, 0x2d, 0x65, - 0x64, 0x67, 0x65, 0x2f, 0x65, 0x76, 0x65, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x52, 0x05, 0x66, 0x6c, 0x6f, 0x77, 0x73, 0x12, + 0x4a, 0x0a, 0x0c, 0x64, 0x6e, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6f, 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, + 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x46, + 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x52, 0x0b, + 0x64, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x73, 0x22, 0x6a, 0x0a, 0x0f, 0x46, + 0x6c, 0x6f, 0x77, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x73, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x72, 0x6f, 0x70, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x64, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x27, + 0x0a, 0x0f, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x41, + 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x73, 0x2a, 0x32, 0x0a, 0x0c, 0x5a, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x09, 0x0a, 0x05, 0x5a, 0x6d, 0x4e, 0x6f, 0x70, + 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x5a, 0x6d, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x10, 0x01, + 0x12, 0x09, 0x0a, 0x05, 0x5a, 0x6d, 0x41, 0x70, 0x70, 0x10, 0x03, 0x2a, 0x85, 0x02, 0x0a, 0x0b, + 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x18, 0x0a, 0x14, 0x43, + 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x49, 0x4e, 0x56, 0x41, + 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, + 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, + 0x52, 0x5f, 0x44, 0x45, 0x43, 0x52, 0x59, 0x50, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, + 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, + 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x4d, 0x41, 0x52, 0x53, 0x48, 0x41, 0x4c, 0x5f, 0x46, 0x41, 0x49, + 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, + 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4c, 0x45, 0x41, 0x52, 0x54, 0x45, 0x58, 0x54, 0x5f, + 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x04, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x49, + 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x49, + 0x4e, 0x47, 0x5f, 0x46, 0x41, 0x4c, 0x4c, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x05, 0x12, 0x1a, 0x0a, + 0x16, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, + 0x5f, 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x10, 0x06, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x49, 0x50, + 0x48, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x4e, 0x4f, 0x5f, 0x44, 0x41, 0x54, + 0x41, 0x10, 0x07, 0x2a, 0x66, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, + 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, + 0x74, 0x65, 0x6d, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x47, 0x61, 0x75, 0x67, 0x65, 0x10, 0x01, 0x12, + 0x15, 0x0a, 0x11, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, + 0x6e, 0x74, 0x65, 0x72, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x49, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0x03, 0x42, 0x3f, 0x0a, 0x16, 0x6f, + 0x72, 0x67, 0x2e, 0x6c, 0x66, 0x65, 0x64, 0x67, 0x65, 0x2e, 0x65, 0x76, 0x65, 0x2e, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x5a, 0x25, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x6c, 0x66, 0x2d, 0x65, 0x64, 0x67, 0x65, 0x2f, 0x65, 0x76, 0x65, 0x2d, 0x61, 0x70, + 0x69, 0x2f, 0x67, 0x6f, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -5769,33 +5820,34 @@ var file_metrics_metrics_proto_depIdxs = []int32{ 49, // 71: org.lfedge.eve.metrics.ZProbeNIMetrics.intfMetric:type_name -> org.lfedge.eve.metrics.ZProbeNIMetrics.ZProbeIntfMetric 6, // 72: org.lfedge.eve.metrics.ZMetricNetworkInstance.network:type_name -> org.lfedge.eve.metrics.networkMetric 37, // 73: org.lfedge.eve.metrics.ZMetricNetworkInstance.probeMetric:type_name -> org.lfedge.eve.metrics.ZProbeNIMetrics - 30, // 74: org.lfedge.eve.metrics.ZMetricNetworkInstance.vpnm:type_name -> org.lfedge.eve.metrics.ZMetricVpn - 31, // 75: org.lfedge.eve.metrics.ZMetricNetworkInstance.nonem:type_name -> org.lfedge.eve.metrics.ZMetricNone - 34, // 76: org.lfedge.eve.metrics.ZMetricNetworkInstance.flowStats:type_name -> org.lfedge.eve.metrics.ZMetricFlow - 36, // 77: org.lfedge.eve.metrics.ZMetricNetworkInstance.networkStats:type_name -> org.lfedge.eve.metrics.ZMetricNetworkStats - 45, // 78: org.lfedge.eve.metrics.ZMetricNetworkInstance.vlan_info:type_name -> org.lfedge.eve.metrics.vlanInfo - 52, // 79: org.lfedge.eve.metrics.ZMetricProcess.create_time:type_name -> google.protobuf.Timestamp - 52, // 80: org.lfedge.eve.metrics.ZMetricMsg.atTimeStamp:type_name -> google.protobuf.Timestamp - 19, // 81: org.lfedge.eve.metrics.ZMetricMsg.dm:type_name -> org.lfedge.eve.metrics.deviceMetric - 25, // 82: org.lfedge.eve.metrics.ZMetricMsg.am:type_name -> org.lfedge.eve.metrics.appMetric - 38, // 83: org.lfedge.eve.metrics.ZMetricMsg.nm:type_name -> org.lfedge.eve.metrics.ZMetricNetworkInstance - 39, // 84: org.lfedge.eve.metrics.ZMetricMsg.vm:type_name -> org.lfedge.eve.metrics.ZMetricVolume - 40, // 85: org.lfedge.eve.metrics.ZMetricMsg.pr:type_name -> org.lfedge.eve.metrics.ZMetricProcess - 52, // 86: org.lfedge.eve.metrics.newlogMetric.failSentStartTime:type_name -> google.protobuf.Timestamp - 43, // 87: org.lfedge.eve.metrics.newlogMetric.deviceMetrics:type_name -> org.lfedge.eve.metrics.logfileMetrics - 43, // 88: org.lfedge.eve.metrics.newlogMetric.appMetrics:type_name -> org.lfedge.eve.metrics.logfileMetrics - 50, // 89: org.lfedge.eve.metrics.newlogMetric.top10_input_sources:type_name -> org.lfedge.eve.metrics.newlogMetric.Top10InputSourcesEntry - 52, // 90: org.lfedge.eve.metrics.logfileMetrics.recentGzipFileTime:type_name -> google.protobuf.Timestamp - 52, // 91: org.lfedge.eve.metrics.logfileMetrics.lastGzipFileSendTime:type_name -> google.protobuf.Timestamp - 51, // 92: org.lfedge.eve.metrics.vlanInfo.vlan_counts:type_name -> org.lfedge.eve.metrics.vlanInfo.VlanCountsEntry - 47, // 93: org.lfedge.eve.metrics.FlowlogMetric.messages:type_name -> org.lfedge.eve.metrics.FlowlogCounters - 47, // 94: org.lfedge.eve.metrics.FlowlogMetric.flows:type_name -> org.lfedge.eve.metrics.FlowlogCounters - 47, // 95: org.lfedge.eve.metrics.FlowlogMetric.dns_requests:type_name -> org.lfedge.eve.metrics.FlowlogCounters - 96, // [96:96] is the sub-list for method output_type - 96, // [96:96] is the sub-list for method input_type - 96, // [96:96] is the sub-list for extension type_name - 96, // [96:96] is the sub-list for extension extendee - 0, // [0:96] is the sub-list for field type_name + 37, // 74: org.lfedge.eve.metrics.ZMetricNetworkInstance.probe_metrics:type_name -> org.lfedge.eve.metrics.ZProbeNIMetrics + 30, // 75: org.lfedge.eve.metrics.ZMetricNetworkInstance.vpnm:type_name -> org.lfedge.eve.metrics.ZMetricVpn + 31, // 76: org.lfedge.eve.metrics.ZMetricNetworkInstance.nonem:type_name -> org.lfedge.eve.metrics.ZMetricNone + 34, // 77: org.lfedge.eve.metrics.ZMetricNetworkInstance.flowStats:type_name -> org.lfedge.eve.metrics.ZMetricFlow + 36, // 78: org.lfedge.eve.metrics.ZMetricNetworkInstance.networkStats:type_name -> org.lfedge.eve.metrics.ZMetricNetworkStats + 45, // 79: org.lfedge.eve.metrics.ZMetricNetworkInstance.vlan_info:type_name -> org.lfedge.eve.metrics.vlanInfo + 52, // 80: org.lfedge.eve.metrics.ZMetricProcess.create_time:type_name -> google.protobuf.Timestamp + 52, // 81: org.lfedge.eve.metrics.ZMetricMsg.atTimeStamp:type_name -> google.protobuf.Timestamp + 19, // 82: org.lfedge.eve.metrics.ZMetricMsg.dm:type_name -> org.lfedge.eve.metrics.deviceMetric + 25, // 83: org.lfedge.eve.metrics.ZMetricMsg.am:type_name -> org.lfedge.eve.metrics.appMetric + 38, // 84: org.lfedge.eve.metrics.ZMetricMsg.nm:type_name -> org.lfedge.eve.metrics.ZMetricNetworkInstance + 39, // 85: org.lfedge.eve.metrics.ZMetricMsg.vm:type_name -> org.lfedge.eve.metrics.ZMetricVolume + 40, // 86: org.lfedge.eve.metrics.ZMetricMsg.pr:type_name -> org.lfedge.eve.metrics.ZMetricProcess + 52, // 87: org.lfedge.eve.metrics.newlogMetric.failSentStartTime:type_name -> google.protobuf.Timestamp + 43, // 88: org.lfedge.eve.metrics.newlogMetric.deviceMetrics:type_name -> org.lfedge.eve.metrics.logfileMetrics + 43, // 89: org.lfedge.eve.metrics.newlogMetric.appMetrics:type_name -> org.lfedge.eve.metrics.logfileMetrics + 50, // 90: org.lfedge.eve.metrics.newlogMetric.top10_input_sources:type_name -> org.lfedge.eve.metrics.newlogMetric.Top10InputSourcesEntry + 52, // 91: org.lfedge.eve.metrics.logfileMetrics.recentGzipFileTime:type_name -> google.protobuf.Timestamp + 52, // 92: org.lfedge.eve.metrics.logfileMetrics.lastGzipFileSendTime:type_name -> google.protobuf.Timestamp + 51, // 93: org.lfedge.eve.metrics.vlanInfo.vlan_counts:type_name -> org.lfedge.eve.metrics.vlanInfo.VlanCountsEntry + 47, // 94: org.lfedge.eve.metrics.FlowlogMetric.messages:type_name -> org.lfedge.eve.metrics.FlowlogCounters + 47, // 95: org.lfedge.eve.metrics.FlowlogMetric.flows:type_name -> org.lfedge.eve.metrics.FlowlogCounters + 47, // 96: org.lfedge.eve.metrics.FlowlogMetric.dns_requests:type_name -> org.lfedge.eve.metrics.FlowlogCounters + 97, // [97:97] is the sub-list for method output_type + 97, // [97:97] is the sub-list for method input_type + 97, // [97:97] is the sub-list for extension type_name + 97, // [97:97] is the sub-list for extension extendee + 0, // [0:97] is the sub-list for field type_name } func init() { file_metrics_metrics_proto_init() } diff --git a/images/devconfig.svg b/images/devconfig.svg index 64d136e6..4cff910b 100644 --- a/images/devconfig.svg +++ b/images/devconfig.svg @@ -12,6 +12,30 @@ org.lfedge.eve.config + +cluster_c75e6f3a3956 + + +org.lfedge.eve.common + + + + +cluster_087a8b768833 + + +netconfig.proto + + + + +cluster_a1a638239bbb + + +edgeview.proto + + + cluster_ed03ba9919d5 @@ -60,38 +84,6 @@ - -cluster_c75e6f3a3956 - - -org.lfedge.eve.common - - - - -cluster_087a8b768833 - - -netconfig.proto - - - - -cluster_a1a638239bbb - - -edgeview.proto - - - - -cluster_f89bbdbe2429 - - -netinst.proto - - - cluster_0eca8c4caf24 @@ -124,6 +116,14 @@ + +cluster_f89bbdbe2429 + + +netinst.proto + + + cluster_c4848830929a diff --git a/proto/config/devmodel.proto b/proto/config/devmodel.proto index 04516021..b6ba6eae 100644 --- a/proto/config/devmodel.proto +++ b/proto/config/devmodel.proto @@ -69,12 +69,38 @@ message SystemAdapter { // physicalIO. string lowerLayerName = 8; - // cost of using a port for EVE management traffic (which is determined - // from PhysicalIO.usage) + // Cost of sending traffic over the port. + // Used to prioritize ports and give preference to lower-cost ports (e.g. eth over wwan). // 0 is the lowest cost (free); 255 the highest. - // Load spreading will apply when multiple adapters have the same cost. - // Higher cost adapters are only tried when none of the lower cost ones work. + // Can be set for management and app-shared ports. + // Cost is used for EVE management traffic and for local network instances with multiple + // ports. For any request towards the controller or for an image download, EVE tries ports + // in the order of increasing cost, starting with the free ports. Once it finds the lowest + // cost port with a working connectivity, it may spread the load if there are multiple + // connected ports of the same cost. + // For local networking instances with multiple ports, the cost may be used to decide + // which port to use for a particular destination network (incl. port selection for + // the default route). Unlike the management traffic, load-balancing is currently + // not supported for local network instances and the app traffic that is routed through + // them. uint32 cost = 9; + + // A set of user-defined "shared" labels attached to the adapter. + // There are no restrictions on the format of an adapter label, it can be any + // non-empty string. + // Unlike the logical label (aka port logical name), shared label is not a unique + // port identifier. Instead, the same shared label can be assigned to multiple ports. + // Note that EVE automatically assigns "all" label to every port, "uplink" label to every + // management port and "freeuplink" label to every management port with zero cost. + // ("automatically assigns" is meant here in imaginary sense, these labels are not supposed + // to be explicitly added by the controller to SystemAdapters inside EdgeDevConfig). + // Shared label can be used to: + // - designate a group of network adapters to be used by a network instances for external + // connectivity + // - limit port-forwarding firewall rule to only a subset of network adapters + // - create a multi-path static IP route (with multiple ports providing access to the routed + // destination network) + repeated string shared_labels = 10; } // Given additional details for EVE software to how to treat this diff --git a/proto/config/fw.proto b/proto/config/fw.proto index 4c5258d1..bd9b53aa 100644 --- a/proto/config/fw.proto +++ b/proto/config/fw.proto @@ -9,7 +9,49 @@ option java_package = "org.lfedge.eve.config"; message ACEMatch { - // FIXME: We should convert this to enum + // Supported ACE match types: + // * "ip": value should be an IP address of a remote endpoint. The match is satisfied + // for outbound and inbound flow if the destination and the source IP address + // matches the given value, respectively. Can be combined with any other match + // type to further narrow down the selection criteria. + // * "host": value should be a domain name of a remote endpoint. It can be either a fully + // qualified, or a partially qualified domain name (FQDN or PQDN). A packet is + // matched if it is destined to or originated from an IP address that was obtained + // by a DNS query for that exact domain or any of its subdomains. For example, + // match of type "host" with value "domain.com" will also apply to the endpoint + // "subdomain.domain.com". Can be combined with other match types except for "eidset". + // * "eidset": special match type for the overlay network. Matches IPs of all applications + // deployed in the same network as well as all IPs with statically configured + // DNS entries (under the config field NetworkInstanceConfig.Dns). For this type, + // value field is not used. Can be combined with other match types except for + // "host". + // * "protocol": value should specify the protocol to match. Protocol can be one of "tcp", + // "udp", "icmp", or "all", or it can be a numeric value, representing one + // of these protocols or a different one. A protocol name from /etc/protocols + // is also allowed. Protocol match can be combined with any other match type + // (often combined with port numbers). + // * "lport": value should be an application local port number. For filtering actions, + // this is the source port for outbound traffic and destination port for inbound + // traffic. For PORTMAP action, this represents application port as exposed + // to the external network (i.e., if :2222 is mapped to :22, + // lport refers to 2222). lport can be combined with any other match type. + // It is actually required to combine "lport" and "protocol" inside the same ACE. + // In other words, port without protocol is not valid. + // * "fport": value should be a remote endpoint port number (foreign port). Used for filtering + // actions, but not for PORTMAP (do not confuse with "lport", which is still used to + // represent the forwarded port - the forwarded port is still considered as local). + // "fport" can be combined with any other match type. It is actually required + // to combine "fport" with "protocol" inside the same ACE. In other words, port + // without protocol is not valid. + // * "adapter": value should be an adapter shared label (SystemAdapter.shared_labels). + // It can be used for an inbound ACE to apply the rule only to packets arriving + // via one of the matched network adapters. Typically used to activate a given + // port-forwarding rule (PORTMAP) for only a subset of network adapters. + // When not specified, the rule applies to every port attached to the network + // instance (i.e. equivalent to setting "adapter" to the pre-defined shared + // label "all"). + // Adapter label cannot be used for outbound ACE. This is because the EVE firewall + // is applied before routing, and the output network adapter is not yet known. string type = 1; string value = 2; } @@ -39,6 +81,7 @@ message ACE { // for example // 1) host=www.example.com & port=http // 2) ip=8.8.8.8 & port=53 & proto=UDP + // 3) adapter=uplink && port=8080 && proto=TCP repeated ACEMatch matches = 1; // Expect only single action...repeated here is diff --git a/proto/config/netcmn.proto b/proto/config/netcmn.proto index 0e4dbb6b..c8b4198a 100644 --- a/proto/config/netcmn.proto +++ b/proto/config/netcmn.proto @@ -114,3 +114,33 @@ enum WiFiKeyScheme { WPAPSK = 1; // WPA-PSK WPAEAP = 2; // WPA-EAP or WPA2 Enterprise } + +// User-defined method to use to determine the connectivity status. +enum ConnectivityProbeMethod { + // Connectivity probing method is not specified and therefore will not be used. + CONNECTIVITY_PROBE_METHOD_UNSPECIFIED = 0; + // Use ICMP ping against the probed endpoint to determine the connectivity status. + CONNECTIVITY_PROBE_METHOD_ICMP = 1; + // Try to establish TCP connection with the probed endpoint to determine the connectivity + // status. + CONNECTIVITY_PROBE_METHOD_TCP = 2; + // TODO: Consider adding support for BFD probing. +} + +// Address of a remote endpoint to probe in order to determine connectivity status. +message ProbeEndpoint { + // IP address or FQDN. + string host = 1; + // TCP port required for CONNECTIVITY_PROBE_METHOD_TCP. + // Leave empty for CONNECTIVITY_PROBE_METHOD_ICMP. + uint32 port = 2; +} + +// Configuration for user-defined connectivity-testing probe. +message ConnectivityProbe { + // Method to use to determine the connectivity status. + ConnectivityProbeMethod probe_method = 1; + // Endpoint to probe using the selected probing mechanism to determine + // the connectivity status. + ProbeEndpoint probe_endpoint = 2; +} \ No newline at end of file diff --git a/proto/config/netconfig.proto b/proto/config/netconfig.proto index 732e36b2..dab1e19d 100644 --- a/proto/config/netconfig.proto +++ b/proto/config/netconfig.proto @@ -112,17 +112,24 @@ message CellularConnectivityProbe { // If true, then probing is disabled. bool disable = 1; // IP/FQDN to periodically probe using 3 pings per iteration to determine connectivity status. - // The default probing behavior (i.e. without user-defined probing endpoint), is more complex - // that just pinging a remote endpoint and the goal is to minimize generated traffic, - // probing time and false negatives (that would trigger undesired re-connect). + // This field is now deprecated and replaced with custom_probe (see below). + // To maintain backward-compatibility, EVE will check both probe_address and custom_probe + // and will use whichever has non-zero value (if any), but preferring custom_probe. + string probe_address = 2 [deprecated=true]; + // User-defined probe for cellular connectivity testing. + // Only IP address is allowed as ConnectivityProbe.probe_address (and port if needed), + // not hostname. + // The probing algorithm is more complex that just testing reachability of a remote + // endpoint and the goal is to minimize generated traffic, probing time and false negatives + // (that would trigger undesired re-connect). // EVE will periodically check the modem status, accessibility of DNS server(s) and potentially // also proxies in the local network, and only as the last resort (if connectivity state - // is still unclear) it will probe the default remote endpoint "8.8.8.8" (Google public DNS) - // using ICMP ping. - // It is recommended to use custom probe_address only for private LTE networks where - // public DNS servers are not allowed by the firewall (and hence ping would fail even with - // working connectivity). - string probe_address = 2; + // is still unclear) it will probe the remote endpoint. If custom_probe is not defined, + // EVE will try to ping "8.8.8.8" (Google public DNS). + // It is recommended to use custom probe for private LTE networks where public DNS servers + // might not be allowed by the firewall (and hence ping would fail even with a working + // connectivity). + ConnectivityProbe custom_probe = 3; } // CellularAccessPoint contains config parameters for connecting to a cellular network. diff --git a/proto/config/netinst.proto b/proto/config/netinst.proto index 9cbe361c..15d6b756 100644 --- a/proto/config/netinst.proto +++ b/proto/config/netinst.proto @@ -82,7 +82,76 @@ message IPRoute { string destination_network = 1; // Gateway IP address. // This must be a valid IP address and can not be all-zeroes. + // At least one of 'gateway' or 'port' (see below) must be defined (both can be set). + // This can be an external gateway IP or an IP address of one of the app instances + // connected to the network instance. string gateway = 2; + // Output device port for the routed traffic. + // Either a single NI port referenced by its name (SystemAdapter.Name, aka logical label) + // or an adapter shared-label matching zero or more NI ports (multipath routing). + // Can be used additionally to or instead of `gateway` to determine the next hop + // and the output network interface for the destination network. + // At least one of 'gateway' or 'port' must be defined. + // Since 'port' refers to one or more physical network adapters, it is not applicable + // to routes where gateway points to another application instance running on EVE. + // If shared label is used, EVE will pick (at most) one of the matched ports to be used + // for route at a given time. Port is selected based on connectivity status, port costs, + // wwan signal strength, etc. - see config options below. + // Note that load-balancing across multiple ports is not yet supported. + // Also please note that if `gateway` is defined, only ports with subnets containing + // the gateway IP will be considered. + string port = 3; + // Periodically probe remote endpoint to determine connectivity status of every port + // selected for the route (by the 'port' label, see above). One of the ports with + // a working connectivity is then picked for the route. If there are multiple connected + // ports, other port selection criteria are considered (port costs, wwan signal strength, + // etc., see other options of IPRoute). + // Probing effectively provides automatic fail-over between ports. + // If 'port' is not defined or references only a single port (e.g. directly by + // the logical label), probing is skipped (nothing to fail-over to anyway). + // If probing is not enabled, EVE picks the port based on other remaining criteria, + // such as cost, wwan network signal, etc. (and eventually possibly making a random + // choice). + PortProbe probe = 4; + // When EVE is deciding which port to use for multipath route and multiple ports have + // working connectivity (or probing is disabled), port can be selected based on the cost + // (see SystemAdapter.cost). If this option is enabled, EVE will prefer ports with lower + // costs. + bool prefer_lower_cost = 5; + // When EVE is deciding which port to use for multipath route and there are multiple + // candidates among cellular modems, it might make sense to consider the current cellular + // network signal strength. If this option is enabled, EVE will prefer cellular ports + // with better signal (only among cellular ports). + bool prefer_stronger_wwan_signal = 6; + // TODO: config for multipath load-balancing +} + +// Configuration for port connectivity probe. +message PortProbe { + // Use ICMP ping towards the port's gateway IP to determine connectivity status. + // This probing is performed much more frequently than the custom_probe and provides + // faster fail-over. On the other hand, it generates more traffic through the probed + // ports. Use gw_ping_max_cost (see below) to limit which ports it is enabled for + // based on the port cost. + // Avoid using this probe method if the gateway router is configured to drop/ignore + // ICMP pings and therefore this probe method would return false negatives. + bool enable_gw_ping = 1; + // Ports exceeding this cost will have the gateway probing disabled to reduce + // traffic generated by probing (only less-frequent custom_probe will be performed). + uint32 gw_ping_max_cost = 2; + // User-defined method to use to determine the port connectivity status. + // Run additionally to gateway pings (if enabled). + ConnectivityProbe custom_probe = 3; +} + +// Configuration for the Spanning Tree Protocol (STP), which is run for switch network +// instance when the port label matches multiple network ports. +message SpanningTreeProtocol { + // Ports matched by this adapter label (logical or shared) will have the BPDU guard enabled. + // It makes sense to enable the guard on ports which are expected to be leafs + // and therefore not participate in STP, or where the downstream bridges are not fully + // trusted. + string ports_with_bpdu_guard = 1; } message NetworkInstanceConfig { @@ -97,14 +166,44 @@ message NetworkInstanceConfig { // itself is not created on the device. bool activate = 5; - // port - Only a single port is supported. - // This is used as the external connection for the network instance. - // This can be a physical (eth0 ) or logical port (vlan 0). - // The port name comes from DeviceConfig ( When it is supported in future). - // If the user needs multiple physical ports, Device config should be - // used to create a label for multiple physical ports. + // Port(s) providing external connectivity for the network instance. + // Either a single port referenced by its name (SystemAdapter.Name, aka logical label) + // or an adapter shared-label matching zero or more network ports (ports containing this + // label in SystemAdapter.shared_labels). + // Note that apart from the user-defined adapter labels, EVE automatically assigns shared + // label "all" to every port, "uplink" to every management port and "freeuplink" to every + // management port with zero cost. + // Both physical (e.g. eth0) and logical (e.g. vlan0) ports are allowed. + // However, EVE may filter out some of the matched ports which are not compatible + // with the network instance type (e.g. wireless adapters cannot be used with switch NI + // and ports without IP addresses are not usable for local NIs). + // Network instance with no assigned port (empty port reference or label not matching + // any port) is air-gapped, i.e. completely isolated from external networks. + // With multiple ports assigned, the behaviour depends on the network instance type. + // Switch network instance will run Rapid Spanning Tree Protocol (RSTP) to avoid bridge + // loops and the broadcast storm that results from them. + // Local network instance will apply IP routes configured for the matched ports (either + // statically or via DHCP) to select the next hop and the output port for a given flow. + // Traffic not matching any connected, statically-configured, or DHCP-received route, + // will be routed according to the default route. Unless user configures a static default + // route with customized output port selection, EVE will pick one of the ports for + // the default route by periodic connectivity probing, performed for every selected port + // (skipped if NI has 1 or 0 ports). + // First, NI ports are filtered down to those with a known gateway IP. Then probing + // is used to determine connectivity status. For NIs with EVE-provided "uplink" or + // "freeuplink" labels, i.e. matching only mgmt ports, EVE checks port gateway IP + // reachability using ICMP ping and controller reachability with TCP connect to + // :443. For NIs with user-defined shared-labels, possibly also matching + // app-shared ports, only ICMP ping of the port gateway is performed. EVE then picks port + // with a working connectivity, preferring the currently used one. + // Add a static default route (see 'static_routes" below) to customize the output port + // selection algorithm. Adapter port = 20; + // Configuration for the Spanning Tree Protocol (STP), which is run for switch network + // instance when the port label matches multiple network ports. + SpanningTreeProtocol stp = 21; + // cfg - Used to pass some feature-specific configuration to the // network instance. For Ex: Lisp, StriongSwan etc NetworkInstanceOpaqueConfig cfg = 30; @@ -115,14 +214,14 @@ message NetworkInstanceConfig { // network ip specification // Note that ip.gateway must be a valid IP address and can not be all-zeroes. // To suppress automatic propagation of the default route into apps, configure network - // instance as air-gapped (without uplink) or mark the uplink as app-shared - // (not for management) and ensure that it will not get a default route - // (e.g. set ip.gateway of the attached NetworkConfig to all-zeroes IP). + // instance as air-gapped (without port) or mark all NI ports as app-shared + // (not for management) and ensure that they will not get a default route + // (e.g. set ip.gateway of the attached NetworkConfig(s) to all-zeroes IP). ipspec ip = 40; // static DNS entry, if we are running DNS/DHCP service repeated ZnetStaticDNSEntry dns = 41; - // Enable to use DHCP to automatically propagate routes for uplink subnets + // Enable to use DHCP to automatically propagate routes for port subnets // into applications connected to them indirectly through local network instances. // This option is only valid for local network instances. For other types // of network instances, it will be ignored. @@ -134,7 +233,10 @@ message NetworkInstanceConfig { // // IP route gateway may point to an external endpoint (provided that network // instance is not air-gapped), or to an IP address of one of the applications - // connected to the network instance. + // connected to the network instance. For an external gateway, user may specify + // output port label instead of the IP address. EVE will automatically determine + // the gateway IP address (based on the port config statically configured or received + // via DHCP). // // Static routes are handled independently from connected routes. While connected // routes are propagated to applications only if enabled by propagate_connected_routes, @@ -143,8 +245,8 @@ message NetworkInstanceConfig { // // Note that the default route (with the bridge IP as the gateway) is automatically // propagated to connected applications, unless network instance is air-gapped - // (without uplink) or the uplink is app-shared (not management) and does not have - // a default route of its own. In both cases, it is possible to enforce default + // (without port) or all NI ports are app-shared (not management) and neither + // of them has a default route. In both cases, it is possible to enforce default // route propagation by configuring a static default route for the network instance. // // For more info on static and connected routes please refer to: @@ -184,10 +286,15 @@ message NetworkInstanceConfig { // instances, the user can run his own external DHCP server in the network with the MTU // option configured. // Please note that application traffic leaving or entering the device via a network - // adapter associated with the network instance is additionally limited by the MTU - // value of the adapter, configured within the NetworkConfig object (refer to netconfig.proto). - // If the configured network instance MTU differs from the network adapter MTU, EVE will - // flag the network instance with an error and use the adapter's MTU for the network - // instance instead (to prevent traffic from being dropped or fragmented inside EVE). + // adapter associated with the network instance is additionally limited by MTU values + // of NI ports, configured within their NetworkConfig objects (refer to netconfig.proto). + // If the configured network instance MTU is higher than MTU of any of the NI ports, + // EVE will flag the network instance with an error and use the lowest MTU among + // all the NI ports for the network instance instead. This is to prevent apps from sending + // packets exceeding the path MTU. Packets entering NI via port with a higher MTU and with + // size exceeding the NI MTU will get fragmented inside EVE (if allowed by IP header). + // By default (if MTU is not configured by the user, i.e. 'mtu' is zero), EVE uses 1500 + // as MTU for air-gapped network instances and the lowest MTU among NI ports for NIs with + // external connectivity. uint32 mtu = 44; } diff --git a/proto/info/info.proto b/proto/info/info.proto index 4d7888d8..2a0672e5 100644 --- a/proto/info/info.proto +++ b/proto/info/info.proto @@ -673,6 +673,7 @@ enum APICapability { API_CAPABILITY_NETWORK_INSTANCE_ROUTING = 6; // routing config in NetworkInstanceConfig supported API_CAPABILITY_BOOT_MODE = 7; // Support different boot modes for Edge Applications (VMs) API_CAPABILITY_MTU = 8; // Allows to set MTU for network adapters and network instances + API_CAPABILITY_ADAPTER_USER_LABELS = 9; // Supports user-defined shared network adapter labels // Add new values as new EdgeDevConfig API features are implemented } @@ -1040,8 +1041,21 @@ message ZInfoNetworkInstance { // OBSOLETE - No longer used. ZInfoSW softwareList = 9; // E.g., VPN version; XXX to be deprecated? - string CurrentUplinkIntf = 10; // current uplink interface in use by this NI - string CurrentUplinkAlias = 11; // user defined namestring alias to this CurrentUplinkIntf, for future + // Current uplink interface in use by this NI. + // Deprecated - network instance can be associated with multiple device ports, + // not just one. To find out which ports are being used by network instance, + // read the reported field "ports" instead (see below). Additionally, "routes" + // informs about the routes configured for the NI and which ports are currently + // used to route the traffic out (this includes info for the default route). + string CurrentUplinkIntf = 10 [deprecated = true]; + // User defined namestring alias to this CurrentUplinkIntf. + // Deprecated for the same reason as CurrentUplinkIntf. Additionally, logical + // labels are preferred over aliases. + string CurrentUplinkAlias = 11 [deprecated = true]; + // List of device ports used for external connectivity. + // Ports are referenced by logical labels. + // Empty if network instance is air-gapped. + repeated string ports = 12; uint32 bridgeNum = 20; string bridgeName = 21; string bridgeIPAddr = 22; @@ -1068,8 +1082,43 @@ message ZInfoNetworkInstance { // on their guest side and cannot determine and report what their values are. // The MTU configured for the network instance by the user may differ from the actual MTU // used and reported here if the configured MTU is invalid or conflicts with the MTU - // of the associated device port (see NetworkInstanceConfig.mtu in netinst.proto). + // of the associated device port(s) (see NetworkInstanceConfig.mtu in netinst.proto). uint32 mtu = 42; + + // Routes configured for the network instance. + // This includes connected routes, DHCP-received routes, user-defined static routes + // (NetworkInstanceConfig.static_routes) and the default route (if any). + // Note that some user-defined static routes might not be applied (and thus not reported + // here) if they do not match IP config of currently used device ports. + // Additionally, static routes with shared port labels (matching multiple ports) + // are reported here each with the logical label of the (single) port, currently selected + // for the route (selected based on connectivity status, port costs, wwan signal strength, + // etc.). + repeated IPRoute ip_routes = 43; +} + +// Information about an IP route configured for a network instance. +// The next-hop for the IP route is specified by the "gateway" IP address +// (empty for a connected route) and the output "port". However, if the gateway +// is one of the applications running on the device, the port is actually a virtual +// interface with an EVE-generated interface name and no user-assigned logical label. +// Therefore, in such cases, it is more useful to leave "port" empty and instead use +// the "gateway_app" field to publish the UUID of the application used as the gateway. +message IPRoute { + // Destination network address in the CIDR format: / + string destination_network = 1; + // Gateway IP address. + // Empty for connected route. + string gateway = 2; + // Logical label of the output device port for the routed traffic. + // Empty if the gateway is IP address of one of the applications. In that case, + // 'gateway_app' is defined instead. + string port = 3; + // UUID of the application used as the gateway for the route. + // Empty if the gateway is external (not one of the apps but outside of the device) + // or this is a connected route for a port (thus gateway is empty). + // In that case, 'port' is defined instead. + string gateway_app = 4; } message UsageInfo { diff --git a/proto/metrics/metrics.proto b/proto/metrics/metrics.proto index 5c884dae..2f910e54 100644 --- a/proto/metrics/metrics.proto +++ b/proto/metrics/metrics.proto @@ -498,6 +498,15 @@ message ZMetricNetworkStats { NetworkStats tx = 2; } +// Metrics published for a NI multipath route with probing-based selection +// of the output port. +// The route is identified by dst_network. +// current_port (and currentIntf) indicate which port is currently selected. +// The rest are probing metrics and status info used to make the selection. +// In older EVE versions, probing was less flexible and it only allowed to select +// a single port for the entire network instance and all its routes. In that case +// dst_network is published empty and there is only one instance of ZProbeNIMetrics +// published for the network instance. message ZProbeNIMetrics { // per NI probing stats string currentIntf = 1; // current picked uplink interface string remoteEndpoint = 2; // remote URL or IP address for probing @@ -516,6 +525,11 @@ message ZProbeNIMetrics { // per NI probing stats uint32 remoteProbeLatency = 19; // remote host probe latency in msec } repeated ZProbeIntfMetric intfMetric = 10; // per uplink intf probing stats + + string dst_network = 20; + // Logical label of the currently selected output port for the route. + // Note that currentIntf reports the interface name of this port. + string current_port = 21; } message ZMetricNetworkInstance { @@ -527,7 +541,12 @@ message ZMetricNetworkInstance { bool activated = 7; // Forwarding enabled repeated networkMetric network = 10; // Aggregate counters for bridge - ZProbeNIMetrics probeMetric = 12; // NI uplink probing stats + // NI uplink probing stats + // Deprecated - newer EVE versions publish a list of probeMetrics (see below), + // with one entry for every multipath route with probing enabled. + ZProbeNIMetrics probeMetric = 12 [deprecated = true]; + repeated ZProbeNIMetrics probe_metrics = 13; + oneof InstanceContent { ZMetricVpn vpnm = 20; // deprecated = 21; ZMetricLisp lispm = 21 diff --git a/python/config/devmodel_pb2.py b/python/config/devmodel_pb2.py index 89348515..9f8ed360 100644 --- a/python/config/devmodel_pb2.py +++ b/python/config/devmodel_pb2.py @@ -15,7 +15,7 @@ from config import devcommon_pb2 as config_dot_devcommon__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x63onfig/devmodel.proto\x12\x15org.lfedge.eve.config\x1a\x1e\x65vecommon/devmodelcommon.proto\x1a\x16\x63onfig/devcommon.proto\"\x99\x01\n\rSystemAdapter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\nfreeUplink\x18\x02 \x01(\x08\x12\x0e\n\x06uplink\x18\x03 \x01(\x08\x12\x13\n\x0bnetworkUUID\x18\x04 \x01(\t\x12\x0c\n\x04\x61\x64\x64r\x18\x05 \x01(\t\x12\r\n\x05\x61lias\x18\x07 \x01(\t\x12\x16\n\x0elowerLayerName\x18\x08 \x01(\t\x12\x0c\n\x04\x63ost\x18\t \x01(\r\"&\n\x10PhyIOUsagePolicy\x12\x12\n\nfreeUplink\x18\x01 \x01(\x08\"\x98\x04\n\nPhysicalIO\x12/\n\x05ptype\x18\x01 \x01(\x0e\x32 .org.lfedge.eve.common.PhyIoType\x12\x10\n\x08phylabel\x18\x02 \x01(\t\x12\x41\n\x08phyaddrs\x18\x03 \x03(\x0b\x32/.org.lfedge.eve.config.PhysicalIO.PhyaddrsEntry\x12\x14\n\x0clogicallabel\x18\x04 \x01(\t\x12\x11\n\tassigngrp\x18\x05 \x01(\t\x12\x36\n\x05usage\x18\x06 \x01(\x0e\x32\'.org.lfedge.eve.common.PhyIoMemberUsage\x12<\n\x0busagePolicy\x18\x07 \x01(\x0b\x32\'.org.lfedge.eve.config.PhyIOUsagePolicy\x12=\n\x06\x63\x62\x61ttr\x18\x08 \x03(\x0b\x32-.org.lfedge.eve.config.PhysicalIO.CbattrEntry\x12-\n\x06vflist\x18\t \x01(\x0b\x32\x1d.org.lfedge.eve.config.VfList\x12\x17\n\x0fparentassigngrp\x18\n \x01(\t\x1a/\n\rPhyaddrsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a-\n\x0b\x43\x62\x61ttrEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"F\n\x06VfList\x12\x10\n\x08vf_count\x18\x01 \x01(\r\x12*\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32\x1c.org.lfedge.eve.config.EthVF\"f\n\x0bVlanAdapter\x12\x14\n\x0clogicallabel\x18\x01 \x01(\t\x12\x16\n\x0einterface_name\x18\x02 \x01(\t\x12\x18\n\x10lower_layer_name\x18\x03 \x01(\t\x12\x0f\n\x07vlan_id\x18\x04 \x01(\r\"\xb0\x02\n\x0b\x42ondAdapter\x12\x14\n\x0clogicallabel\x18\x01 \x01(\t\x12\x16\n\x0einterface_name\x18\x02 \x01(\t\x12\x19\n\x11lower_layer_names\x18\x03 \x03(\t\x12\x32\n\tbond_mode\x18\x04 \x01(\x0e\x32\x1f.org.lfedge.eve.config.BondMode\x12\x30\n\x03mii\x18\x05 \x01(\x0b\x32!.org.lfedge.eve.config.MIIMonitorH\x00\x12\x30\n\x03\x61rp\x18\x06 \x01(\x0b\x32!.org.lfedge.eve.config.ArpMonitorH\x00\x12\x32\n\tlacp_rate\x18\x08 \x01(\x0e\x32\x1f.org.lfedge.eve.config.LacpRateB\x0c\n\nmonitoring\"B\n\nMIIMonitor\x12\x10\n\x08interval\x18\x01 \x01(\r\x12\x0f\n\x07updelay\x18\x02 \x01(\r\x12\x11\n\tdowndelay\x18\x03 \x01(\r\"2\n\nArpMonitor\x12\x10\n\x08interval\x18\x01 \x01(\r\x12\x12\n\nip_targets\x18\x02 \x03(\t*\xdd\x01\n\x08\x42ondMode\x12\x19\n\x15\x42OND_MODE_UNSPECIFIED\x10\x00\x12\x18\n\x14\x42OND_MODE_BALANCE_RR\x10\x01\x12\x1b\n\x17\x42OND_MODE_ACTIVE_BACKUP\x10\x02\x12\x19\n\x15\x42OND_MODE_BALANCE_XOR\x10\x03\x12\x17\n\x13\x42OND_MODE_BROADCAST\x10\x04\x12\x15\n\x11\x42OND_MODE_802_3AD\x10\x05\x12\x19\n\x15\x42OND_MODE_BALANCE_TLB\x10\x06\x12\x19\n\x15\x42OND_MODE_BALANCE_ALB\x10\x07*M\n\x08LacpRate\x12\x19\n\x15LACP_RATE_UNSPECIFIED\x10\x00\x12\x12\n\x0eLACP_RATE_SLOW\x10\x01\x12\x12\n\x0eLACP_RATE_FAST\x10\x02\x42=\n\x15org.lfedge.eve.configZ$github.com/lf-edge/eve-api/go/configb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15\x63onfig/devmodel.proto\x12\x15org.lfedge.eve.config\x1a\x1e\x65vecommon/devmodelcommon.proto\x1a\x16\x63onfig/devcommon.proto\"\xb0\x01\n\rSystemAdapter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x12\n\nfreeUplink\x18\x02 \x01(\x08\x12\x0e\n\x06uplink\x18\x03 \x01(\x08\x12\x13\n\x0bnetworkUUID\x18\x04 \x01(\t\x12\x0c\n\x04\x61\x64\x64r\x18\x05 \x01(\t\x12\r\n\x05\x61lias\x18\x07 \x01(\t\x12\x16\n\x0elowerLayerName\x18\x08 \x01(\t\x12\x0c\n\x04\x63ost\x18\t \x01(\r\x12\x15\n\rshared_labels\x18\n \x03(\t\"&\n\x10PhyIOUsagePolicy\x12\x12\n\nfreeUplink\x18\x01 \x01(\x08\"\x98\x04\n\nPhysicalIO\x12/\n\x05ptype\x18\x01 \x01(\x0e\x32 .org.lfedge.eve.common.PhyIoType\x12\x10\n\x08phylabel\x18\x02 \x01(\t\x12\x41\n\x08phyaddrs\x18\x03 \x03(\x0b\x32/.org.lfedge.eve.config.PhysicalIO.PhyaddrsEntry\x12\x14\n\x0clogicallabel\x18\x04 \x01(\t\x12\x11\n\tassigngrp\x18\x05 \x01(\t\x12\x36\n\x05usage\x18\x06 \x01(\x0e\x32\'.org.lfedge.eve.common.PhyIoMemberUsage\x12<\n\x0busagePolicy\x18\x07 \x01(\x0b\x32\'.org.lfedge.eve.config.PhyIOUsagePolicy\x12=\n\x06\x63\x62\x61ttr\x18\x08 \x03(\x0b\x32-.org.lfedge.eve.config.PhysicalIO.CbattrEntry\x12-\n\x06vflist\x18\t \x01(\x0b\x32\x1d.org.lfedge.eve.config.VfList\x12\x17\n\x0fparentassigngrp\x18\n \x01(\t\x1a/\n\rPhyaddrsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a-\n\x0b\x43\x62\x61ttrEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"F\n\x06VfList\x12\x10\n\x08vf_count\x18\x01 \x01(\r\x12*\n\x04\x64\x61ta\x18\x02 \x03(\x0b\x32\x1c.org.lfedge.eve.config.EthVF\"f\n\x0bVlanAdapter\x12\x14\n\x0clogicallabel\x18\x01 \x01(\t\x12\x16\n\x0einterface_name\x18\x02 \x01(\t\x12\x18\n\x10lower_layer_name\x18\x03 \x01(\t\x12\x0f\n\x07vlan_id\x18\x04 \x01(\r\"\xb0\x02\n\x0b\x42ondAdapter\x12\x14\n\x0clogicallabel\x18\x01 \x01(\t\x12\x16\n\x0einterface_name\x18\x02 \x01(\t\x12\x19\n\x11lower_layer_names\x18\x03 \x03(\t\x12\x32\n\tbond_mode\x18\x04 \x01(\x0e\x32\x1f.org.lfedge.eve.config.BondMode\x12\x30\n\x03mii\x18\x05 \x01(\x0b\x32!.org.lfedge.eve.config.MIIMonitorH\x00\x12\x30\n\x03\x61rp\x18\x06 \x01(\x0b\x32!.org.lfedge.eve.config.ArpMonitorH\x00\x12\x32\n\tlacp_rate\x18\x08 \x01(\x0e\x32\x1f.org.lfedge.eve.config.LacpRateB\x0c\n\nmonitoring\"B\n\nMIIMonitor\x12\x10\n\x08interval\x18\x01 \x01(\r\x12\x0f\n\x07updelay\x18\x02 \x01(\r\x12\x11\n\tdowndelay\x18\x03 \x01(\r\"2\n\nArpMonitor\x12\x10\n\x08interval\x18\x01 \x01(\r\x12\x12\n\nip_targets\x18\x02 \x03(\t*\xdd\x01\n\x08\x42ondMode\x12\x19\n\x15\x42OND_MODE_UNSPECIFIED\x10\x00\x12\x18\n\x14\x42OND_MODE_BALANCE_RR\x10\x01\x12\x1b\n\x17\x42OND_MODE_ACTIVE_BACKUP\x10\x02\x12\x19\n\x15\x42OND_MODE_BALANCE_XOR\x10\x03\x12\x17\n\x13\x42OND_MODE_BROADCAST\x10\x04\x12\x15\n\x11\x42OND_MODE_802_3AD\x10\x05\x12\x19\n\x15\x42OND_MODE_BALANCE_TLB\x10\x06\x12\x19\n\x15\x42OND_MODE_BALANCE_ALB\x10\x07*M\n\x08LacpRate\x12\x19\n\x15LACP_RATE_UNSPECIFIED\x10\x00\x12\x12\n\x0eLACP_RATE_SLOW\x10\x01\x12\x12\n\x0eLACP_RATE_FAST\x10\x02\x42=\n\x15org.lfedge.eve.configZ$github.com/lf-edge/eve-api/go/configb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -28,28 +28,28 @@ _PHYSICALIO_PHYADDRSENTRY._serialized_options = b'8\001' _PHYSICALIO_CBATTRENTRY._options = None _PHYSICALIO_CBATTRENTRY._serialized_options = b'8\001' - _globals['_BONDMODE']._serialized_start=1443 - _globals['_BONDMODE']._serialized_end=1664 - _globals['_LACPRATE']._serialized_start=1666 - _globals['_LACPRATE']._serialized_end=1743 + _globals['_BONDMODE']._serialized_start=1466 + _globals['_BONDMODE']._serialized_end=1687 + _globals['_LACPRATE']._serialized_start=1689 + _globals['_LACPRATE']._serialized_end=1766 _globals['_SYSTEMADAPTER']._serialized_start=105 - _globals['_SYSTEMADAPTER']._serialized_end=258 - _globals['_PHYIOUSAGEPOLICY']._serialized_start=260 - _globals['_PHYIOUSAGEPOLICY']._serialized_end=298 - _globals['_PHYSICALIO']._serialized_start=301 - _globals['_PHYSICALIO']._serialized_end=837 - _globals['_PHYSICALIO_PHYADDRSENTRY']._serialized_start=743 - _globals['_PHYSICALIO_PHYADDRSENTRY']._serialized_end=790 - _globals['_PHYSICALIO_CBATTRENTRY']._serialized_start=792 - _globals['_PHYSICALIO_CBATTRENTRY']._serialized_end=837 - _globals['_VFLIST']._serialized_start=839 - _globals['_VFLIST']._serialized_end=909 - _globals['_VLANADAPTER']._serialized_start=911 - _globals['_VLANADAPTER']._serialized_end=1013 - _globals['_BONDADAPTER']._serialized_start=1016 - _globals['_BONDADAPTER']._serialized_end=1320 - _globals['_MIIMONITOR']._serialized_start=1322 - _globals['_MIIMONITOR']._serialized_end=1388 - _globals['_ARPMONITOR']._serialized_start=1390 - _globals['_ARPMONITOR']._serialized_end=1440 + _globals['_SYSTEMADAPTER']._serialized_end=281 + _globals['_PHYIOUSAGEPOLICY']._serialized_start=283 + _globals['_PHYIOUSAGEPOLICY']._serialized_end=321 + _globals['_PHYSICALIO']._serialized_start=324 + _globals['_PHYSICALIO']._serialized_end=860 + _globals['_PHYSICALIO_PHYADDRSENTRY']._serialized_start=766 + _globals['_PHYSICALIO_PHYADDRSENTRY']._serialized_end=813 + _globals['_PHYSICALIO_CBATTRENTRY']._serialized_start=815 + _globals['_PHYSICALIO_CBATTRENTRY']._serialized_end=860 + _globals['_VFLIST']._serialized_start=862 + _globals['_VFLIST']._serialized_end=932 + _globals['_VLANADAPTER']._serialized_start=934 + _globals['_VLANADAPTER']._serialized_end=1036 + _globals['_BONDADAPTER']._serialized_start=1039 + _globals['_BONDADAPTER']._serialized_end=1343 + _globals['_MIIMONITOR']._serialized_start=1345 + _globals['_MIIMONITOR']._serialized_end=1411 + _globals['_ARPMONITOR']._serialized_start=1413 + _globals['_ARPMONITOR']._serialized_end=1463 # @@protoc_insertion_point(module_scope) diff --git a/python/config/netcmn_pb2.py b/python/config/netcmn_pb2.py index ecbf19e4..e8c0b2d3 100644 --- a/python/config/netcmn_pb2.py +++ b/python/config/netcmn_pb2.py @@ -13,7 +13,7 @@ -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13\x63onfig/netcmn.proto\x12\x15org.lfedge.eve.config\"%\n\x07ipRange\x12\r\n\x05start\x18\x01 \x01(\t\x12\x0b\n\x03\x65nd\x18\x02 \x01(\t\"]\n\x0bProxyServer\x12\x30\n\x05proto\x18\x01 \x01(\x0e\x32!.org.lfedge.eve.config.proxyProto\x12\x0e\n\x06server\x18\x02 \x01(\t\x12\x0c\n\x04port\x18\x03 \x01(\r\"\xb2\x01\n\x0bProxyConfig\x12\x1a\n\x12networkProxyEnable\x18\x01 \x01(\x08\x12\x33\n\x07proxies\x18\x02 \x03(\x0b\x32\".org.lfedge.eve.config.ProxyServer\x12\x12\n\nexceptions\x18\x03 \x01(\t\x12\x0f\n\x07pacfile\x18\x04 \x01(\t\x12\x17\n\x0fnetworkProxyURL\x18\x05 \x01(\t\x12\x14\n\x0cproxyCertPEM\x18\x06 \x03(\x0c\"*\n\tZedServer\x12\x10\n\x08HostName\x18\x01 \x01(\t\x12\x0b\n\x03\x45ID\x18\x02 \x03(\t\"7\n\x12ZnetStaticDNSEntry\x12\x10\n\x08HostName\x18\x01 \x01(\t\x12\x0f\n\x07\x41\x64\x64ress\x18\x02 \x03(\t\"\xb5\x01\n\x06ipspec\x12-\n\x04\x64hcp\x18\x02 \x01(\x0e\x32\x1f.org.lfedge.eve.config.DHCPType\x12\x0e\n\x06subnet\x18\x03 \x01(\t\x12\x0f\n\x07gateway\x18\x05 \x01(\t\x12\x0e\n\x06\x64omain\x18\x06 \x01(\t\x12\x0b\n\x03ntp\x18\x07 \x01(\t\x12\x0b\n\x03\x64ns\x18\x08 \x03(\t\x12\x31\n\tdhcpRange\x18\t \x01(\x0b\x32\x1e.org.lfedge.eve.config.ipRange*_\n\nproxyProto\x12\x0e\n\nPROXY_HTTP\x10\x00\x12\x0f\n\x0bPROXY_HTTPS\x10\x01\x12\x0f\n\x0bPROXY_SOCKS\x10\x02\x12\r\n\tPROXY_FTP\x10\x03\x12\x10\n\x0bPROXY_OTHER\x10\xff\x01*>\n\x08\x44HCPType\x12\x0c\n\x08\x44HCPNoop\x10\x00\x12\n\n\x06Static\x10\x01\x12\x0c\n\x08\x44HCPNone\x10\x02\x12\n\n\x06\x43lient\x10\x04*\x83\x01\n\x0bNetworkType\x12\x13\n\x0fNETWORKTYPENOOP\x10\x00\x12\x06\n\x02V4\x10\x04\x12\x06\n\x02V6\x10\x06\x12\x0c\n\x08\x43ryptoV4\x10\x18\x12\x0c\n\x08\x43ryptoV6\x10\x1a\x12\r\n\tCryptoEID\x10\x0e\x12\n\n\x06V4Only\x10\x07\x12\n\n\x06V6Only\x10\x08\x12\x0c\n\x08\x44ualV4V6\x10\t*4\n\x0cWirelessType\x12\x0c\n\x08TypeNOOP\x10\x00\x12\x08\n\x04WiFi\x10\x01\x12\x0c\n\x08\x43\x65llular\x10\x02*7\n\rWiFiKeyScheme\x12\x0e\n\nSchemeNOOP\x10\x00\x12\n\n\x06WPAPSK\x10\x01\x12\n\n\x06WPAEAP\x10\x02\x42=\n\x15org.lfedge.eve.configZ$github.com/lf-edge/eve-api/go/configb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x13\x63onfig/netcmn.proto\x12\x15org.lfedge.eve.config\"%\n\x07ipRange\x12\r\n\x05start\x18\x01 \x01(\t\x12\x0b\n\x03\x65nd\x18\x02 \x01(\t\"]\n\x0bProxyServer\x12\x30\n\x05proto\x18\x01 \x01(\x0e\x32!.org.lfedge.eve.config.proxyProto\x12\x0e\n\x06server\x18\x02 \x01(\t\x12\x0c\n\x04port\x18\x03 \x01(\r\"\xb2\x01\n\x0bProxyConfig\x12\x1a\n\x12networkProxyEnable\x18\x01 \x01(\x08\x12\x33\n\x07proxies\x18\x02 \x03(\x0b\x32\".org.lfedge.eve.config.ProxyServer\x12\x12\n\nexceptions\x18\x03 \x01(\t\x12\x0f\n\x07pacfile\x18\x04 \x01(\t\x12\x17\n\x0fnetworkProxyURL\x18\x05 \x01(\t\x12\x14\n\x0cproxyCertPEM\x18\x06 \x03(\x0c\"*\n\tZedServer\x12\x10\n\x08HostName\x18\x01 \x01(\t\x12\x0b\n\x03\x45ID\x18\x02 \x03(\t\"7\n\x12ZnetStaticDNSEntry\x12\x10\n\x08HostName\x18\x01 \x01(\t\x12\x0f\n\x07\x41\x64\x64ress\x18\x02 \x03(\t\"\xb5\x01\n\x06ipspec\x12-\n\x04\x64hcp\x18\x02 \x01(\x0e\x32\x1f.org.lfedge.eve.config.DHCPType\x12\x0e\n\x06subnet\x18\x03 \x01(\t\x12\x0f\n\x07gateway\x18\x05 \x01(\t\x12\x0e\n\x06\x64omain\x18\x06 \x01(\t\x12\x0b\n\x03ntp\x18\x07 \x01(\t\x12\x0b\n\x03\x64ns\x18\x08 \x03(\t\x12\x31\n\tdhcpRange\x18\t \x01(\x0b\x32\x1e.org.lfedge.eve.config.ipRange\"+\n\rProbeEndpoint\x12\x0c\n\x04host\x18\x01 \x01(\t\x12\x0c\n\x04port\x18\x02 \x01(\r\"\x97\x01\n\x11\x43onnectivityProbe\x12\x44\n\x0cprobe_method\x18\x01 \x01(\x0e\x32..org.lfedge.eve.config.ConnectivityProbeMethod\x12<\n\x0eprobe_endpoint\x18\x02 \x01(\x0b\x32$.org.lfedge.eve.config.ProbeEndpoint*_\n\nproxyProto\x12\x0e\n\nPROXY_HTTP\x10\x00\x12\x0f\n\x0bPROXY_HTTPS\x10\x01\x12\x0f\n\x0bPROXY_SOCKS\x10\x02\x12\r\n\tPROXY_FTP\x10\x03\x12\x10\n\x0bPROXY_OTHER\x10\xff\x01*>\n\x08\x44HCPType\x12\x0c\n\x08\x44HCPNoop\x10\x00\x12\n\n\x06Static\x10\x01\x12\x0c\n\x08\x44HCPNone\x10\x02\x12\n\n\x06\x43lient\x10\x04*\x83\x01\n\x0bNetworkType\x12\x13\n\x0fNETWORKTYPENOOP\x10\x00\x12\x06\n\x02V4\x10\x04\x12\x06\n\x02V6\x10\x06\x12\x0c\n\x08\x43ryptoV4\x10\x18\x12\x0c\n\x08\x43ryptoV6\x10\x1a\x12\r\n\tCryptoEID\x10\x0e\x12\n\n\x06V4Only\x10\x07\x12\n\n\x06V6Only\x10\x08\x12\x0c\n\x08\x44ualV4V6\x10\t*4\n\x0cWirelessType\x12\x0c\n\x08TypeNOOP\x10\x00\x12\x08\n\x04WiFi\x10\x01\x12\x0c\n\x08\x43\x65llular\x10\x02*7\n\rWiFiKeyScheme\x12\x0e\n\nSchemeNOOP\x10\x00\x12\n\n\x06WPAPSK\x10\x01\x12\n\n\x06WPAEAP\x10\x02*\x8b\x01\n\x17\x43onnectivityProbeMethod\x12)\n%CONNECTIVITY_PROBE_METHOD_UNSPECIFIED\x10\x00\x12\"\n\x1e\x43ONNECTIVITY_PROBE_METHOD_ICMP\x10\x01\x12!\n\x1d\x43ONNECTIVITY_PROBE_METHOD_TCP\x10\x02\x42=\n\x15org.lfedge.eve.configZ$github.com/lf-edge/eve-api/go/configb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -22,16 +22,18 @@ DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\025org.lfedge.eve.configZ$github.com/lf-edge/eve-api/go/config' - _globals['_PROXYPROTO']._serialized_start=646 - _globals['_PROXYPROTO']._serialized_end=741 - _globals['_DHCPTYPE']._serialized_start=743 - _globals['_DHCPTYPE']._serialized_end=805 - _globals['_NETWORKTYPE']._serialized_start=808 - _globals['_NETWORKTYPE']._serialized_end=939 - _globals['_WIRELESSTYPE']._serialized_start=941 - _globals['_WIRELESSTYPE']._serialized_end=993 - _globals['_WIFIKEYSCHEME']._serialized_start=995 - _globals['_WIFIKEYSCHEME']._serialized_end=1050 + _globals['_PROXYPROTO']._serialized_start=845 + _globals['_PROXYPROTO']._serialized_end=940 + _globals['_DHCPTYPE']._serialized_start=942 + _globals['_DHCPTYPE']._serialized_end=1004 + _globals['_NETWORKTYPE']._serialized_start=1007 + _globals['_NETWORKTYPE']._serialized_end=1138 + _globals['_WIRELESSTYPE']._serialized_start=1140 + _globals['_WIRELESSTYPE']._serialized_end=1192 + _globals['_WIFIKEYSCHEME']._serialized_start=1194 + _globals['_WIFIKEYSCHEME']._serialized_end=1249 + _globals['_CONNECTIVITYPROBEMETHOD']._serialized_start=1252 + _globals['_CONNECTIVITYPROBEMETHOD']._serialized_end=1391 _globals['_IPRANGE']._serialized_start=46 _globals['_IPRANGE']._serialized_end=83 _globals['_PROXYSERVER']._serialized_start=85 @@ -44,4 +46,8 @@ _globals['_ZNETSTATICDNSENTRY']._serialized_end=460 _globals['_IPSPEC']._serialized_start=463 _globals['_IPSPEC']._serialized_end=644 + _globals['_PROBEENDPOINT']._serialized_start=646 + _globals['_PROBEENDPOINT']._serialized_end=689 + _globals['_CONNECTIVITYPROBE']._serialized_start=692 + _globals['_CONNECTIVITYPROBE']._serialized_end=843 # @@protoc_insertion_point(module_scope) diff --git a/python/config/netconfig_pb2.py b/python/config/netconfig_pb2.py index be5783c0..ab706dd2 100644 --- a/python/config/netconfig_pb2.py +++ b/python/config/netconfig_pb2.py @@ -17,7 +17,7 @@ from evecommon import evecommon_pb2 as evecommon_dot_evecommon__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x63onfig/netconfig.proto\x12\x15org.lfedge.eve.config\x1a\x0f\x63onfig/fw.proto\x1a\x13\x63onfig/netcmn.proto\x1a\x1b\x65vecommon/acipherinfo.proto\x1a\x19\x65vecommon/evecommon.proto\"\xac\x02\n\rNetworkConfig\x12\n\n\x02id\x18\x01 \x01(\t\x12\x30\n\x04type\x18\x05 \x01(\x0e\x32\".org.lfedge.eve.config.NetworkType\x12)\n\x02ip\x18\x06 \x01(\x0b\x32\x1d.org.lfedge.eve.config.ipspec\x12\x36\n\x03\x64ns\x18\x07 \x03(\x0b\x32).org.lfedge.eve.config.ZnetStaticDNSEntry\x12\x34\n\x08\x65ntProxy\x18\x08 \x01(\x0b\x32\".org.lfedge.eve.config.ProxyConfig\x12\x37\n\x08wireless\x18\n \x01(\x0b\x32%.org.lfedge.eve.config.WirelessConfig\x12\x0b\n\x03mtu\x18\x0b \x01(\r\"\x94\x02\n\x0eNetworkAdapter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tnetworkId\x18\x03 \x01(\t\x12\x0c\n\x04\x61\x64\x64r\x18\x04 \x01(\t\x12\x10\n\x08hostname\x18\x05 \x01(\t\x12\x11\n\tcryptoEid\x18\n \x01(\t\x12\x15\n\rlispsignature\x18\x06 \x01(\t\x12\x0f\n\x07pemcert\x18\x07 \x01(\x0c\x12\x15\n\rpemprivatekey\x18\x08 \x01(\x0c\x12\x12\n\nmacAddress\x18\t \x01(\t\x12(\n\x04\x61\x63ls\x18( \x03(\x0b\x32\x1a.org.lfedge.eve.config.ACE\x12\x16\n\x0e\x61\x63\x63\x65ss_vlan_id\x18) \x01(\r\x12\x19\n\x11\x61llow_to_discover\x18* \x01(\x08\"\xb3\x01\n\x0eWirelessConfig\x12\x31\n\x04type\x18\x01 \x01(\x0e\x32#.org.lfedge.eve.config.WirelessType\x12:\n\x0b\x63\x65llularCfg\x18\x05 \x03(\x0b\x32%.org.lfedge.eve.config.CellularConfig\x12\x32\n\x07wifiCfg\x18\n \x03(\x0b\x32!.org.lfedge.eve.config.WifiConfig\"\xd8\x01\n\x0e\x43\x65llularConfig\x12\x0b\n\x03\x41PN\x18\x01 \x01(\t\x12?\n\x05probe\x18\x02 \x01(\x0b\x32\x30.org.lfedge.eve.config.CellularConnectivityProbe\x12\x19\n\x11location_tracking\x18\x03 \x01(\x08\x12\x41\n\raccess_points\x18\x04 \x03(\x0b\x32*.org.lfedge.eve.config.CellularAccessPoint\x12\x1a\n\x12\x61\x63tivated_sim_slot\x18\x05 \x01(\r\"C\n\x19\x43\x65llularConnectivityProbe\x12\x0f\n\x07\x64isable\x18\x01 \x01(\x08\x12\x15\n\rprobe_address\x18\x02 \x01(\t\"\xa8\x02\n\x13\x43\x65llularAccessPoint\x12\x10\n\x08sim_slot\x18\x01 \x01(\r\x12\x0b\n\x03\x61pn\x18\x02 \x01(\t\x12\x42\n\rauth_protocol\x18\x03 \x01(\x0e\x32+.org.lfedge.eve.config.CellularAuthProtocol\x12\x37\n\x0b\x63ipher_data\x18\x04 \x01(\x0b\x32\".org.lfedge.eve.common.CipherBlock\x12\x17\n\x0fpreferred_plmns\x18\x05 \x03(\t\x12\x16\n\x0e\x66orbid_roaming\x18\x06 \x01(\x08\x12\x44\n\x0epreferred_rats\x18\x07 \x03(\x0e\x32,.org.lfedge.eve.common.RadioAccessTechnology\"\xb7\x02\n\nWifiConfig\x12\x10\n\x08wifiSSID\x18\x01 \x01(\t\x12\x37\n\tkeyScheme\x18\x02 \x01(\x0e\x32$.org.lfedge.eve.config.WiFiKeyScheme\x12\x10\n\x08identity\x18\x05 \x01(\t\x12\x10\n\x08password\x18\n \x01(\t\x12=\n\x06\x63rypto\x18\x14 \x01(\x0b\x32-.org.lfedge.eve.config.WifiConfig.cryptoblock\x12\x10\n\x08priority\x18\x19 \x01(\x05\x12\x36\n\ncipherData\x18\x1e \x01(\x0b\x32\".org.lfedge.eve.common.CipherBlock\x1a\x31\n\x0b\x63ryptoblock\x12\x10\n\x08identity\x18\x0b \x01(\t\x12\x10\n\x08password\x18\x0c \x01(\t*\xa1\x01\n\x14\x43\x65llularAuthProtocol\x12\x1f\n\x1b\x43\x45LLULAR_AUTH_PROTOCOL_NONE\x10\x00\x12\x1e\n\x1a\x43\x45LLULAR_AUTH_PROTOCOL_PAP\x10\x01\x12\x1f\n\x1b\x43\x45LLULAR_AUTH_PROTOCOL_CHAP\x10\x02\x12\'\n#CELLULAR_AUTH_PROTOCOL_PAP_AND_CHAP\x10\x03\x42=\n\x15org.lfedge.eve.configZ$github.com/lf-edge/eve-api/go/configb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x16\x63onfig/netconfig.proto\x12\x15org.lfedge.eve.config\x1a\x0f\x63onfig/fw.proto\x1a\x13\x63onfig/netcmn.proto\x1a\x1b\x65vecommon/acipherinfo.proto\x1a\x19\x65vecommon/evecommon.proto\"\xac\x02\n\rNetworkConfig\x12\n\n\x02id\x18\x01 \x01(\t\x12\x30\n\x04type\x18\x05 \x01(\x0e\x32\".org.lfedge.eve.config.NetworkType\x12)\n\x02ip\x18\x06 \x01(\x0b\x32\x1d.org.lfedge.eve.config.ipspec\x12\x36\n\x03\x64ns\x18\x07 \x03(\x0b\x32).org.lfedge.eve.config.ZnetStaticDNSEntry\x12\x34\n\x08\x65ntProxy\x18\x08 \x01(\x0b\x32\".org.lfedge.eve.config.ProxyConfig\x12\x37\n\x08wireless\x18\n \x01(\x0b\x32%.org.lfedge.eve.config.WirelessConfig\x12\x0b\n\x03mtu\x18\x0b \x01(\r\"\x94\x02\n\x0eNetworkAdapter\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tnetworkId\x18\x03 \x01(\t\x12\x0c\n\x04\x61\x64\x64r\x18\x04 \x01(\t\x12\x10\n\x08hostname\x18\x05 \x01(\t\x12\x11\n\tcryptoEid\x18\n \x01(\t\x12\x15\n\rlispsignature\x18\x06 \x01(\t\x12\x0f\n\x07pemcert\x18\x07 \x01(\x0c\x12\x15\n\rpemprivatekey\x18\x08 \x01(\x0c\x12\x12\n\nmacAddress\x18\t \x01(\t\x12(\n\x04\x61\x63ls\x18( \x03(\x0b\x32\x1a.org.lfedge.eve.config.ACE\x12\x16\n\x0e\x61\x63\x63\x65ss_vlan_id\x18) \x01(\r\x12\x19\n\x11\x61llow_to_discover\x18* \x01(\x08\"\xb3\x01\n\x0eWirelessConfig\x12\x31\n\x04type\x18\x01 \x01(\x0e\x32#.org.lfedge.eve.config.WirelessType\x12:\n\x0b\x63\x65llularCfg\x18\x05 \x03(\x0b\x32%.org.lfedge.eve.config.CellularConfig\x12\x32\n\x07wifiCfg\x18\n \x03(\x0b\x32!.org.lfedge.eve.config.WifiConfig\"\xd8\x01\n\x0e\x43\x65llularConfig\x12\x0b\n\x03\x41PN\x18\x01 \x01(\t\x12?\n\x05probe\x18\x02 \x01(\x0b\x32\x30.org.lfedge.eve.config.CellularConnectivityProbe\x12\x19\n\x11location_tracking\x18\x03 \x01(\x08\x12\x41\n\raccess_points\x18\x04 \x03(\x0b\x32*.org.lfedge.eve.config.CellularAccessPoint\x12\x1a\n\x12\x61\x63tivated_sim_slot\x18\x05 \x01(\r\"\x87\x01\n\x19\x43\x65llularConnectivityProbe\x12\x0f\n\x07\x64isable\x18\x01 \x01(\x08\x12\x19\n\rprobe_address\x18\x02 \x01(\tB\x02\x18\x01\x12>\n\x0c\x63ustom_probe\x18\x03 \x01(\x0b\x32(.org.lfedge.eve.config.ConnectivityProbe\"\xa8\x02\n\x13\x43\x65llularAccessPoint\x12\x10\n\x08sim_slot\x18\x01 \x01(\r\x12\x0b\n\x03\x61pn\x18\x02 \x01(\t\x12\x42\n\rauth_protocol\x18\x03 \x01(\x0e\x32+.org.lfedge.eve.config.CellularAuthProtocol\x12\x37\n\x0b\x63ipher_data\x18\x04 \x01(\x0b\x32\".org.lfedge.eve.common.CipherBlock\x12\x17\n\x0fpreferred_plmns\x18\x05 \x03(\t\x12\x16\n\x0e\x66orbid_roaming\x18\x06 \x01(\x08\x12\x44\n\x0epreferred_rats\x18\x07 \x03(\x0e\x32,.org.lfedge.eve.common.RadioAccessTechnology\"\xb7\x02\n\nWifiConfig\x12\x10\n\x08wifiSSID\x18\x01 \x01(\t\x12\x37\n\tkeyScheme\x18\x02 \x01(\x0e\x32$.org.lfedge.eve.config.WiFiKeyScheme\x12\x10\n\x08identity\x18\x05 \x01(\t\x12\x10\n\x08password\x18\n \x01(\t\x12=\n\x06\x63rypto\x18\x14 \x01(\x0b\x32-.org.lfedge.eve.config.WifiConfig.cryptoblock\x12\x10\n\x08priority\x18\x19 \x01(\x05\x12\x36\n\ncipherData\x18\x1e \x01(\x0b\x32\".org.lfedge.eve.common.CipherBlock\x1a\x31\n\x0b\x63ryptoblock\x12\x10\n\x08identity\x18\x0b \x01(\t\x12\x10\n\x08password\x18\x0c \x01(\t*\xa1\x01\n\x14\x43\x65llularAuthProtocol\x12\x1f\n\x1b\x43\x45LLULAR_AUTH_PROTOCOL_NONE\x10\x00\x12\x1e\n\x1a\x43\x45LLULAR_AUTH_PROTOCOL_PAP\x10\x01\x12\x1f\n\x1b\x43\x45LLULAR_AUTH_PROTOCOL_CHAP\x10\x02\x12\'\n#CELLULAR_AUTH_PROTOCOL_PAP_AND_CHAP\x10\x03\x42=\n\x15org.lfedge.eve.configZ$github.com/lf-edge/eve-api/go/configb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -26,8 +26,10 @@ DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\025org.lfedge.eve.configZ$github.com/lf-edge/eve-api/go/config' - _globals['_CELLULARAUTHPROTOCOL']._serialized_start=1809 - _globals['_CELLULARAUTHPROTOCOL']._serialized_end=1970 + _CELLULARCONNECTIVITYPROBE.fields_by_name['probe_address']._options = None + _CELLULARCONNECTIVITYPROBE.fields_by_name['probe_address']._serialized_options = b'\030\001' + _globals['_CELLULARAUTHPROTOCOL']._serialized_start=1878 + _globals['_CELLULARAUTHPROTOCOL']._serialized_end=2039 _globals['_NETWORKCONFIG']._serialized_start=144 _globals['_NETWORKCONFIG']._serialized_end=444 _globals['_NETWORKADAPTER']._serialized_start=447 @@ -36,12 +38,12 @@ _globals['_WIRELESSCONFIG']._serialized_end=905 _globals['_CELLULARCONFIG']._serialized_start=908 _globals['_CELLULARCONFIG']._serialized_end=1124 - _globals['_CELLULARCONNECTIVITYPROBE']._serialized_start=1126 - _globals['_CELLULARCONNECTIVITYPROBE']._serialized_end=1193 - _globals['_CELLULARACCESSPOINT']._serialized_start=1196 - _globals['_CELLULARACCESSPOINT']._serialized_end=1492 - _globals['_WIFICONFIG']._serialized_start=1495 - _globals['_WIFICONFIG']._serialized_end=1806 - _globals['_WIFICONFIG_CRYPTOBLOCK']._serialized_start=1757 - _globals['_WIFICONFIG_CRYPTOBLOCK']._serialized_end=1806 + _globals['_CELLULARCONNECTIVITYPROBE']._serialized_start=1127 + _globals['_CELLULARCONNECTIVITYPROBE']._serialized_end=1262 + _globals['_CELLULARACCESSPOINT']._serialized_start=1265 + _globals['_CELLULARACCESSPOINT']._serialized_end=1561 + _globals['_WIFICONFIG']._serialized_start=1564 + _globals['_WIFICONFIG']._serialized_end=1875 + _globals['_WIFICONFIG_CRYPTOBLOCK']._serialized_start=1826 + _globals['_WIFICONFIG_CRYPTOBLOCK']._serialized_end=1875 # @@protoc_insertion_point(module_scope) diff --git a/python/config/netinst_pb2.py b/python/config/netinst_pb2.py index a9c2a88d..3af4dfcf 100644 --- a/python/config/netinst_pb2.py +++ b/python/config/netinst_pb2.py @@ -15,7 +15,7 @@ from config import netcmn_pb2 as config_dot_netcmn__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x63onfig/netinst.proto\x12\x15org.lfedge.eve.config\x1a\x16\x63onfig/devcommon.proto\x1a\x13\x63onfig/netcmn.proto\"\xb3\x01\n\x1bNetworkInstanceOpaqueConfig\x12\x0f\n\x07oconfig\x18\x01 \x01(\t\x12\x44\n\nlispConfig\x18\x02 \x01(\x0b\x32\x30.org.lfedge.eve.config.NetworkInstanceLispConfig\x12=\n\x04type\x18\x03 \x01(\x0e\x32/.org.lfedge.eve.config.ZNetworkOpaqueConfigType\"l\n\x0eZcServicePoint\x12\x34\n\x06zsType\x18\x03 \x01(\x0e\x32$.org.lfedge.eve.config.ZcServiceType\x12\x10\n\x08NameOrIp\x18\x01 \x01(\t\x12\x12\n\nCredential\x18\x02 \x01(\t\"\xe1\x01\n\x19NetworkInstanceLispConfig\x12\x36\n\x07LispMSs\x18\x01 \x03(\x0b\x32%.org.lfedge.eve.config.ZcServicePoint\x12\x16\n\x0eLispInstanceId\x18\x02 \x01(\r\x12\x10\n\x08\x61llocate\x18\x03 \x01(\x08\x12\x15\n\rexportprivate\x18\x04 \x01(\x08\x12\x18\n\x10\x61llocationprefix\x18\x05 \x01(\x0c\x12\x1b\n\x13\x61llocationprefixlen\x18\x06 \x01(\r\x12\x14\n\x0c\x65xperimental\x18\x14 \x01(\x08\"7\n\x07IPRoute\x12\x1b\n\x13\x64\x65stination_network\x18\x01 \x01(\t\x12\x0f\n\x07gateway\x18\x02 \x01(\t\"\xa6\x04\n\x15NetworkInstanceConfig\x12=\n\x0euuidandversion\x18\x01 \x01(\x0b\x32%.org.lfedge.eve.config.UUIDandVersion\x12\x13\n\x0b\x64isplayname\x18\x02 \x01(\t\x12\x39\n\x08instType\x18\x04 \x01(\x0e\x32\'.org.lfedge.eve.config.ZNetworkInstType\x12\x10\n\x08\x61\x63tivate\x18\x05 \x01(\x08\x12,\n\x04port\x18\x14 \x01(\x0b\x32\x1e.org.lfedge.eve.config.Adapter\x12?\n\x03\x63\x66g\x18\x1e \x01(\x0b\x32\x32.org.lfedge.eve.config.NetworkInstanceOpaqueConfig\x12\x32\n\x06ipType\x18\' \x01(\x0e\x32\".org.lfedge.eve.config.AddressType\x12)\n\x02ip\x18( \x01(\x0b\x32\x1d.org.lfedge.eve.config.ipspec\x12\x36\n\x03\x64ns\x18) \x03(\x0b\x32).org.lfedge.eve.config.ZnetStaticDNSEntry\x12\"\n\x1apropagate_connected_routes\x18* \x01(\x08\x12\x35\n\rstatic_routes\x18+ \x03(\x0b\x32\x1e.org.lfedge.eve.config.IPRoute\x12\x0b\n\x03mtu\x18, \x01(\r*\xb3\x01\n\x10ZNetworkInstType\x12\x11\n\rZNetInstFirst\x10\x00\x12\x12\n\x0eZnetInstSwitch\x10\x01\x12\x11\n\rZnetInstLocal\x10\x02\x12\x11\n\rZnetInstCloud\x10\x03\x12\x10\n\x0cZnetInstMesh\x10\x04\x12\x14\n\x10ZnetInstHoneyPot\x10\x05\x12\x17\n\x13ZnetInstTransparent\x10\x06\x12\x11\n\x0cZNetInstLast\x10\xff\x01*W\n\x0b\x41\x64\x64ressType\x12\t\n\x05\x46irst\x10\x00\x12\x08\n\x04IPV4\x10\x01\x12\x08\n\x04IPV6\x10\x02\x12\x0e\n\nCryptoIPV4\x10\x03\x12\x0e\n\nCryptoIPV6\x10\x04\x12\t\n\x04Last\x10\xff\x01*C\n\x18ZNetworkOpaqueConfigType\x12\x12\n\x0eZNetOConfigVPN\x10\x00\x12\x13\n\x0fZNetOConfigLisp\x10\x01*G\n\rZcServiceType\x12\x14\n\x10zcloudInvalidSrv\x10\x00\x12\r\n\tmapServer\x10\x01\x12\x11\n\rsupportServer\x10\x02\x42=\n\x15org.lfedge.eve.configZ$github.com/lf-edge/eve-api/go/configb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x14\x63onfig/netinst.proto\x12\x15org.lfedge.eve.config\x1a\x16\x63onfig/devcommon.proto\x1a\x13\x63onfig/netcmn.proto\"\xb3\x01\n\x1bNetworkInstanceOpaqueConfig\x12\x0f\n\x07oconfig\x18\x01 \x01(\t\x12\x44\n\nlispConfig\x18\x02 \x01(\x0b\x32\x30.org.lfedge.eve.config.NetworkInstanceLispConfig\x12=\n\x04type\x18\x03 \x01(\x0e\x32/.org.lfedge.eve.config.ZNetworkOpaqueConfigType\"l\n\x0eZcServicePoint\x12\x34\n\x06zsType\x18\x03 \x01(\x0e\x32$.org.lfedge.eve.config.ZcServiceType\x12\x10\n\x08NameOrIp\x18\x01 \x01(\t\x12\x12\n\nCredential\x18\x02 \x01(\t\"\xe1\x01\n\x19NetworkInstanceLispConfig\x12\x36\n\x07LispMSs\x18\x01 \x03(\x0b\x32%.org.lfedge.eve.config.ZcServicePoint\x12\x16\n\x0eLispInstanceId\x18\x02 \x01(\r\x12\x10\n\x08\x61llocate\x18\x03 \x01(\x08\x12\x15\n\rexportprivate\x18\x04 \x01(\x08\x12\x18\n\x10\x61llocationprefix\x18\x05 \x01(\x0c\x12\x1b\n\x13\x61llocationprefixlen\x18\x06 \x01(\r\x12\x14\n\x0c\x65xperimental\x18\x14 \x01(\x08\"\xb6\x01\n\x07IPRoute\x12\x1b\n\x13\x64\x65stination_network\x18\x01 \x01(\t\x12\x0f\n\x07gateway\x18\x02 \x01(\t\x12\x0c\n\x04port\x18\x03 \x01(\t\x12/\n\x05probe\x18\x04 \x01(\x0b\x32 .org.lfedge.eve.config.PortProbe\x12\x19\n\x11prefer_lower_cost\x18\x05 \x01(\x08\x12#\n\x1bprefer_stronger_wwan_signal\x18\x06 \x01(\x08\"}\n\tPortProbe\x12\x16\n\x0e\x65nable_gw_ping\x18\x01 \x01(\x08\x12\x18\n\x10gw_ping_max_cost\x18\x02 \x01(\r\x12>\n\x0c\x63ustom_probe\x18\x03 \x01(\x0b\x32(.org.lfedge.eve.config.ConnectivityProbe\"5\n\x14SpanningTreeProtocol\x12\x1d\n\x15ports_with_bpdu_guard\x18\x01 \x01(\t\"\xe0\x04\n\x15NetworkInstanceConfig\x12=\n\x0euuidandversion\x18\x01 \x01(\x0b\x32%.org.lfedge.eve.config.UUIDandVersion\x12\x13\n\x0b\x64isplayname\x18\x02 \x01(\t\x12\x39\n\x08instType\x18\x04 \x01(\x0e\x32\'.org.lfedge.eve.config.ZNetworkInstType\x12\x10\n\x08\x61\x63tivate\x18\x05 \x01(\x08\x12,\n\x04port\x18\x14 \x01(\x0b\x32\x1e.org.lfedge.eve.config.Adapter\x12\x38\n\x03stp\x18\x15 \x01(\x0b\x32+.org.lfedge.eve.config.SpanningTreeProtocol\x12?\n\x03\x63\x66g\x18\x1e \x01(\x0b\x32\x32.org.lfedge.eve.config.NetworkInstanceOpaqueConfig\x12\x32\n\x06ipType\x18\' \x01(\x0e\x32\".org.lfedge.eve.config.AddressType\x12)\n\x02ip\x18( \x01(\x0b\x32\x1d.org.lfedge.eve.config.ipspec\x12\x36\n\x03\x64ns\x18) \x03(\x0b\x32).org.lfedge.eve.config.ZnetStaticDNSEntry\x12\"\n\x1apropagate_connected_routes\x18* \x01(\x08\x12\x35\n\rstatic_routes\x18+ \x03(\x0b\x32\x1e.org.lfedge.eve.config.IPRoute\x12\x0b\n\x03mtu\x18, \x01(\r*\xb3\x01\n\x10ZNetworkInstType\x12\x11\n\rZNetInstFirst\x10\x00\x12\x12\n\x0eZnetInstSwitch\x10\x01\x12\x11\n\rZnetInstLocal\x10\x02\x12\x11\n\rZnetInstCloud\x10\x03\x12\x10\n\x0cZnetInstMesh\x10\x04\x12\x14\n\x10ZnetInstHoneyPot\x10\x05\x12\x17\n\x13ZnetInstTransparent\x10\x06\x12\x11\n\x0cZNetInstLast\x10\xff\x01*W\n\x0b\x41\x64\x64ressType\x12\t\n\x05\x46irst\x10\x00\x12\x08\n\x04IPV4\x10\x01\x12\x08\n\x04IPV6\x10\x02\x12\x0e\n\nCryptoIPV4\x10\x03\x12\x0e\n\nCryptoIPV6\x10\x04\x12\t\n\x04Last\x10\xff\x01*C\n\x18ZNetworkOpaqueConfigType\x12\x12\n\x0eZNetOConfigVPN\x10\x00\x12\x13\n\x0fZNetOConfigLisp\x10\x01*G\n\rZcServiceType\x12\x14\n\x10zcloudInvalidSrv\x10\x00\x12\r\n\tmapServer\x10\x01\x12\x11\n\rsupportServer\x10\x02\x42=\n\x15org.lfedge.eve.configZ$github.com/lf-edge/eve-api/go/configb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -24,22 +24,26 @@ DESCRIPTOR._options = None DESCRIPTOR._serialized_options = b'\n\025org.lfedge.eve.configZ$github.com/lf-edge/eve-api/go/config' - _globals['_ZNETWORKINSTTYPE']._serialized_start=1223 - _globals['_ZNETWORKINSTTYPE']._serialized_end=1402 - _globals['_ADDRESSTYPE']._serialized_start=1404 - _globals['_ADDRESSTYPE']._serialized_end=1491 - _globals['_ZNETWORKOPAQUECONFIGTYPE']._serialized_start=1493 - _globals['_ZNETWORKOPAQUECONFIGTYPE']._serialized_end=1560 - _globals['_ZCSERVICETYPE']._serialized_start=1562 - _globals['_ZCSERVICETYPE']._serialized_end=1633 + _globals['_ZNETWORKINSTTYPE']._serialized_start=1591 + _globals['_ZNETWORKINSTTYPE']._serialized_end=1770 + _globals['_ADDRESSTYPE']._serialized_start=1772 + _globals['_ADDRESSTYPE']._serialized_end=1859 + _globals['_ZNETWORKOPAQUECONFIGTYPE']._serialized_start=1861 + _globals['_ZNETWORKOPAQUECONFIGTYPE']._serialized_end=1928 + _globals['_ZCSERVICETYPE']._serialized_start=1930 + _globals['_ZCSERVICETYPE']._serialized_end=2001 _globals['_NETWORKINSTANCEOPAQUECONFIG']._serialized_start=93 _globals['_NETWORKINSTANCEOPAQUECONFIG']._serialized_end=272 _globals['_ZCSERVICEPOINT']._serialized_start=274 _globals['_ZCSERVICEPOINT']._serialized_end=382 _globals['_NETWORKINSTANCELISPCONFIG']._serialized_start=385 _globals['_NETWORKINSTANCELISPCONFIG']._serialized_end=610 - _globals['_IPROUTE']._serialized_start=612 - _globals['_IPROUTE']._serialized_end=667 - _globals['_NETWORKINSTANCECONFIG']._serialized_start=670 - _globals['_NETWORKINSTANCECONFIG']._serialized_end=1220 + _globals['_IPROUTE']._serialized_start=613 + _globals['_IPROUTE']._serialized_end=795 + _globals['_PORTPROBE']._serialized_start=797 + _globals['_PORTPROBE']._serialized_end=922 + _globals['_SPANNINGTREEPROTOCOL']._serialized_start=924 + _globals['_SPANNINGTREEPROTOCOL']._serialized_end=977 + _globals['_NETWORKINSTANCECONFIG']._serialized_start=980 + _globals['_NETWORKINSTANCECONFIG']._serialized_end=1588 # @@protoc_insertion_point(module_scope) diff --git a/python/info/info_pb2.py b/python/info/info_pb2.py index cd86a307..2bc0a386 100644 --- a/python/info/info_pb2.py +++ b/python/info/info_pb2.py @@ -18,7 +18,7 @@ from info import ntpsources_pb2 as info_dot_ntpsources__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0finfo/info.proto\x12\x13org.lfedge.eve.info\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1e\x65vecommon/devmodelcommon.proto\x1a\x19\x65vecommon/evecommon.proto\x1a\x19info/patch_envelope.proto\x1a\x15info/ntpsources.proto\"\xdc\x01\n\x14\x64\x65precatedMetricItem\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x04type\x18\x02 \x01(\x0e\x32&.org.lfedge.eve.info.DepMetricItemType\x12\x13\n\tboolValue\x18\x03 \x01(\x08H\x00\x12\x15\n\x0buint32Value\x18\x04 \x01(\rH\x00\x12\x15\n\x0buint64Value\x18\x05 \x01(\x04H\x00\x12\x14\n\nfloatValue\x18\x06 \x01(\x02H\x00\x12\x15\n\x0bstringValue\x18\x07 \x01(\tH\x00\x42\x11\n\x0fmetricItemValue\">\n\x15ZmetIPAssignmentEntry\x12\x12\n\nmacAddress\x18\x01 \x01(\t\x12\x11\n\tipAddress\x18\x02 \x03(\t\"A\n\x0bZmetVifInfo\x12\x0f\n\x07vifName\x18\x01 \x01(\t\x12\x12\n\nmacAddress\x18\x02 \x01(\t\x12\r\n\x05\x61ppID\x18\x03 \x01(\t\"\xa5\x02\n\tZioBundle\x12.\n\x04type\x18\x01 \x01(\x0e\x32 .org.lfedge.eve.common.PhyIoType\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07members\x18\x03 \x03(\t\x12\x15\n\rusedByAppUUID\x18\x04 \x01(\t\x12\x14\n\x0cusedByBaseOS\x18\x05 \x01(\x08\x12\x37\n\rioAddressList\x18\x06 \x03(\x0b\x32 .org.lfedge.eve.info.IoAddresses\x12\x36\n\x05usage\x18\x07 \x01(\x0e\x32\'.org.lfedge.eve.common.PhyIoMemberUsage\x12+\n\x03\x65rr\x18\x08 \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\"X\n\x0bIoAddresses\x12\x12\n\nmacAddress\x18\x01 \x01(\t\x12\x35\n\x07vf_info\x18\x02 \x01(\x0b\x32$.org.lfedge.eve.info.VfPublishedInfo\"1\n\x0fVfPublishedInfo\x12\r\n\x05index\x18\x01 \x01(\r\x12\x0f\n\x07vlan_id\x18\x02 \x01(\r\"\xc9\x01\n\x11ZInfoManufacturer\x12\x14\n\x0cmanufacturer\x18\x01 \x01(\t\x12\x13\n\x0bproductName\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x14\n\x0cserialNumber\x18\x04 \x01(\t\x12\x0c\n\x04UUID\x18\x05 \x01(\t\x12\x12\n\ncompatible\x18\x06 \x01(\t\x12\x12\n\nbiosVendor\x18\x07 \x01(\t\x12\x13\n\x0b\x62iosVersion\x18\x08 \x01(\t\x12\x17\n\x0f\x62iosReleaseDate\x18\t \x01(\t\"\x8c\x03\n\x0cZInfoNetwork\x12\x0f\n\x07macAddr\x18\x03 \x01(\t\x12\x0f\n\x07\x64\x65vName\x18\x04 \x01(\t\x12\r\n\x05\x61lias\x18( \x01(\t\x12\x0f\n\x07IPAddrs\x18\x05 \x03(\t\x12\x16\n\x0e\x64\x65\x66\x61ultRouters\x18\x06 \x03(\t\x12*\n\x03\x64ns\x18\x07 \x01(\x0b\x32\x1d.org.lfedge.eve.info.ZInfoDNS\x12\x0f\n\x07ipv4_up\x18\x08 \x01(\x08\x12-\n\x08location\x18\t \x01(\x0b\x32\x1b.org.lfedge.eve.info.GeoLoc\x12\x0e\n\x06uplink\x18\n \x01(\x08\x12\x32\n\nnetworkErr\x18\x0b \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\x12\x11\n\tlocalName\x18\x0c \x01(\t\x12/\n\x05proxy\x18\r \x01(\x0b\x32 .org.lfedge.eve.info.ProxyStatus\x12\x19\n\x11ip_addr_mis_match\x18\x0e \x01(\x08\x12\x13\n\x0bntp_servers\x18\x0f \x03(\t\"\x87\x01\n\x06GeoLoc\x12\x12\n\nUnderlayIP\x18\x01 \x01(\t\x12\x10\n\x08Hostname\x18\x02 \x01(\t\x12\x0c\n\x04\x43ity\x18\x03 \x01(\t\x12\x0e\n\x06Region\x18\x04 \x01(\t\x12\x0f\n\x07\x43ountry\x18\x05 \x01(\t\x12\x0b\n\x03Loc\x18\x06 \x01(\t\x12\x0b\n\x03Org\x18\x07 \x01(\t\x12\x0e\n\x06Postal\x18\x08 \x01(\t\"D\n\x08ZInfoDNS\x12\x12\n\nDNSservers\x18\x01 \x03(\t\x12\x11\n\tDNSdomain\x18\x02 \x01(\t\x12\x11\n\tDNSsearch\x18\x03 \x03(\t\"\xa5\x01\n\x07ZInfoSW\x12\x11\n\tswVersion\x18\x02 \x01(\t\x12\x0e\n\x06swHash\x18\x03 \x01(\t\x12,\n\x05state\x18\x04 \x01(\x0e\x32\x1d.org.lfedge.eve.info.ZSwState\x12\x0e\n\x06target\x18\x06 \x01(\t\x12\x0c\n\x04vdev\x18\x07 \x01(\t\x12\x18\n\x10\x64ownloadProgress\x18\x08 \x01(\r\x12\x11\n\timageName\x18\t \x01(\t\"\xce\x01\n\tErrorInfo\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\t\x12-\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x08severity\x18\x03 \x01(\x0e\x32\x1d.org.lfedge.eve.info.Severity\x12\x33\n\x08\x65ntities\x18\x04 \x03(\x0b\x32!.org.lfedge.eve.info.DeviceEntity\x12\x17\n\x0fretry_condition\x18\x05 \x01(\t\"c\n\x0c\x44\x65viceEntity\x12+\n\x06\x65ntity\x18\x01 \x01(\x0e\x32\x1b.org.lfedge.eve.info.Entity\x12\x11\n\tentity_id\x18\x02 \x01(\t\x12\x13\n\x0b\x65ntity_name\x18\x03 \x01(\t\"\xb8\x01\n\tVaultInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x38\n\x06status\x18\x02 \x01(\x0e\x32(.org.lfedge.eve.info.DataSecAtRestStatus\x12\x30\n\x08vaultErr\x18\x03 \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\x12\x31\n\tpcrStatus\x18\x04 \x01(\x0e\x32\x1e.org.lfedge.eve.info.PCRStatus\"\x8a\x01\n\rDataSecAtRest\x12\x38\n\x06status\x18\x01 \x01(\x0e\x32(.org.lfedge.eve.info.DataSecAtRestStatus\x12\x0c\n\x04info\x18\x02 \x01(\t\x12\x31\n\tvaultList\x18\x03 \x03(\x0b\x32\x1e.org.lfedge.eve.info.VaultInfo\"<\n\x0cSecurityInfo\x12\x13\n\x0bsha_root_ca\x18\x01 \x01(\x0c\x12\x17\n\x0fsha_tls_root_ca\x18\x02 \x01(\x0c\"/\n\x0fZInfoConfigItem\x12\r\n\x05value\x18\x01 \x01(\t\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\x84\x03\n\x15ZInfoConfigItemStatus\x12P\n\x0b\x63onfigItems\x18\x01 \x03(\x0b\x32;.org.lfedge.eve.info.ZInfoConfigItemStatus.ConfigItemsEntry\x12^\n\x12unknownConfigItems\x18\x02 \x03(\x0b\x32\x42.org.lfedge.eve.info.ZInfoConfigItemStatus.UnknownConfigItemsEntry\x1aX\n\x10\x43onfigItemsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x33\n\x05value\x18\x02 \x01(\x0b\x32$.org.lfedge.eve.info.ZInfoConfigItem:\x02\x38\x01\x1a_\n\x17UnknownConfigItemsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x33\n\x05value\x18\x02 \x01(\x0b\x32$.org.lfedge.eve.info.ZInfoConfigItem:\x02\x38\x01\"B\n\x10ZInfoAppInstance\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\ndomainName\x18\x03 \x01(\t\"3\n\x10ZInfoDeviceTasks\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tnamespace\x18\x02 \x01(\t\"\xc1\x01\n\x0cZSimcardInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x18\n\x10\x63\x65ll_module_name\x18\x02 \x01(\t\x12\x0c\n\x04imsi\x18\x03 \x01(\t\x12\r\n\x05iccid\x18\x04 \x01(\t\x12\r\n\x05state\x18\x06 \x01(\t\x12\x13\n\x0bslot_number\x18\x07 \x01(\r\x12\x16\n\x0eslot_activated\x18\x08 \x01(\x08\x12*\n\x04type\x18\t \x01(\x0e\x32\x1c.org.lfedge.eve.info.SimTypeJ\x04\x08\x05\x10\x06\"\x80\x02\n\x13ZCellularModuleInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04imei\x18\x02 \x01(\t\x12\x18\n\x10\x66irmware_version\x18\x03 \x01(\t\x12\r\n\x05model\x18\x04 \x01(\t\x12\x45\n\x0foperating_state\x18\x05 \x01(\x0e\x32,.org.lfedge.eve.info.ZCellularOperatingState\x12G\n\x10\x63ontrol_protocol\x18\x06 \x01(\x0e\x32-.org.lfedge.eve.info.ZCellularControlProtocol\x12\x14\n\x0cmanufacturer\x18\x07 \x01(\t\"s\n\x11ZCellularProvider\x12\x0c\n\x04plmn\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x17\n\x0f\x63urrent_serving\x18\x03 \x01(\x08\x12\x0f\n\x07roaming\x18\x04 \x01(\x08\x12\x11\n\tforbidden\x18\x05 \x01(\x08\"\x90\x01\n\x10StorageDiskState\x12\x39\n\tdisk_name\x18\x01 \x01(\x0b\x32&.org.lfedge.eve.common.DiskDescription\x12\x32\n\x06status\x18\x02 \x01(\x0e\x32\".org.lfedge.eve.info.StorageStatus\x12\r\n\x05state\x18\x03 \x01(\t\"m\n\tSmartAttr\x12\n\n\x02id\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\x04\x12\r\n\x05worst\x18\x03 \x01(\x04\x12\x0e\n\x06thresh\x18\x04 \x01(\x04\x12\x13\n\x0bwhen_failed\x18\x05 \x01(\t\x12\x11\n\traw_value\x18\x06 \x01(\x04\"\x8a\x03\n\x0bSmartMetric\x12=\n\x15reallocated_sector_ct\x18\x01 \x01(\x0b\x32\x1e.org.lfedge.eve.info.SmartAttr\x12\x36\n\x0epower_on_hours\x18\x02 \x01(\x0b\x32\x1e.org.lfedge.eve.info.SmartAttr\x12\x39\n\x11power_cycle_count\x18\x03 \x01(\x0b\x32\x1e.org.lfedge.eve.info.SmartAttr\x12?\n\x17reallocated_event_count\x18\x04 \x01(\x0b\x32\x1e.org.lfedge.eve.info.SmartAttr\x12>\n\x16\x63urrent_pending_sector\x18\x05 \x01(\x0b\x32\x1e.org.lfedge.eve.info.SmartAttr\x12\x13\n\x0bneed_update\x18\x06 \x01(\x08\x12\x33\n\x0btemperature\x18\x07 \x01(\x0b\x32\x1e.org.lfedge.eve.info.SmartAttr\"\xa7\x01\n\x0fStorageDiskInfo\x12\x11\n\tdisk_name\x18\x01 \x01(\t\x12\x34\n\nsmart_data\x18\x03 \x03(\x0b\x32 .org.lfedge.eve.info.SmartMetric\x12\x0b\n\x03wwn\x18\x04 \x01(\t\x12\x15\n\rserial_number\x18\x05 \x01(\t\x12\r\n\x05model\x18\x06 \x01(\t\x12\x18\n\x10\x63ollector_errors\x18\x07 \x01(\t\"\xe2\x01\n\x0fStorageChildren\x12:\n\x0c\x63urrent_raid\x18\x01 \x01(\x0e\x32$.org.lfedge.eve.info.StorageRaidType\x12\x34\n\x05\x64isks\x18\x02 \x03(\x0b\x32%.org.lfedge.eve.info.StorageDiskState\x12\x36\n\x08\x63hildren\x18\x03 \x03(\x0b\x32$.org.lfedge.eve.info.StorageChildren\x12\x14\n\x0c\x64isplay_name\x18\x04 \x01(\t\x12\x0f\n\x07g_u_i_d\x18\x05 \x01(\x04\"\xcd\x03\n\x0bStorageInfo\x12\x11\n\tpool_name\x18\x01 \x01(\t\x12:\n\x0cstorage_type\x18\x02 \x01(\x0e\x32$.org.lfedge.eve.info.StorageTypeInfo\x12\x13\n\x0bzfs_version\x18\x03 \x01(\t\x12:\n\x0c\x63urrent_raid\x18\x04 \x01(\x0e\x32$.org.lfedge.eve.info.StorageRaidType\x12\x19\n\x11\x63ompression_ratio\x18\x05 \x01(\x01\x12\x12\n\nzpool_size\x18\x06 \x01(\x04\x12\x13\n\x0b\x63ount_zvols\x18\x07 \x01(\r\x12\x39\n\rstorage_state\x18\x08 \x01(\x0e\x32\".org.lfedge.eve.info.StorageStatus\x12\x34\n\x05\x64isks\x18\t \x03(\x0b\x32%.org.lfedge.eve.info.StorageDiskState\x12\x18\n\x10\x63ollector_errors\x18\n \x01(\t\x12\x36\n\x08\x63hildren\x18\x0b \x03(\x0b\x32$.org.lfedge.eve.info.StorageChildren\x12\x17\n\x0fpool_status_msg\x18\x0c \x01(\t\"D\n\rZInfoHardware\x12\x33\n\x05\x64isks\x18\x01 \x03(\x0b\x32$.org.lfedge.eve.info.StorageDiskInfo\"\xbc\x10\n\x0bZInfoDevice\x12\x13\n\x0bmachineArch\x18\x04 \x01(\t\x12\x0f\n\x07\x63puArch\x18\x05 \x01(\t\x12\x10\n\x08platform\x18\x06 \x01(\t\x12\x0c\n\x04ncpu\x18\x07 \x01(\r\x12\x0e\n\x06memory\x18\x08 \x01(\x04\x12\x0f\n\x07storage\x18\t \x01(\x04\x12\x19\n\x11powerCycleCounter\x18\n \x01(\x03\x12\x35\n\x05minfo\x18\x0b \x01(\x0b\x32&.org.lfedge.eve.info.ZInfoManufacturer\x12\x32\n\x07network\x18\r \x03(\x0b\x32!.org.lfedge.eve.info.ZInfoNetwork\x12:\n\x12\x61ssignableAdapters\x18\x0f \x03(\x0b\x32\x1e.org.lfedge.eve.info.ZioBundle\x12*\n\x03\x64ns\x18\x10 \x01(\x0b\x32\x1d.org.lfedge.eve.info.ZInfoDNS\x12\x36\n\x0bstorageList\x18\x11 \x03(\x0b\x32!.org.lfedge.eve.info.ZInfoStorage\x12,\n\x08\x62ootTime\x18\x12 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x06swList\x18\x13 \x03(\x0b\x32\x1f.org.lfedge.eve.info.ZInfoDevSW\x12\x10\n\x08HostName\x18\x14 \x01(\t\x12>\n\x0bmetricItems\x18\x15 \x03(\x0b\x32).org.lfedge.eve.info.deprecatedMetricItem\x12\x18\n\x10lastRebootReason\x18\x16 \x01(\t\x12\x32\n\x0elastRebootTime\x18\x17 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12=\n\rsystemAdapter\x18\x18 \x01(\x0b\x32&.org.lfedge.eve.info.SystemAdapterInfo\x12\x16\n\x0erestartCounter\x18\x19 \x01(\r\x12>\n\tHSMStatus\x18\x1a \x01(\x0e\x32+.org.lfedge.eve.info.HwSecurityModuleStatus\x12\x0f\n\x07HSMInfo\x18\x1b \x01(\t\x12\x17\n\x0flastRebootStack\x18\x1c \x01(\t\x12=\n\x11\x64\x61taSecAtRestInfo\x18\x1d \x01(\x0b\x32\".org.lfedge.eve.info.DataSecAtRest\x12\x33\n\x08sec_info\x18\x1e \x01(\x0b\x32!.org.lfedge.eve.info.SecurityInfo\x12\x44\n\x10\x63onfigItemStatus\x18\x1f \x01(\x0b\x32*.org.lfedge.eve.info.ZInfoConfigItemStatus\x12;\n\x0c\x61ppInstances\x18 \x03(\x0b\x32%.org.lfedge.eve.info.ZInfoAppInstance\x12\x1b\n\x13rebootConfigCounter\x18! \x01(\r\x12\x39\n\x10last_boot_reason\x18\" \x01(\x0e\x32\x1f.org.lfedge.eve.info.BootReason\x12=\n\x0b\x63\x65ll_radios\x18# \x03(\x0b\x32(.org.lfedge.eve.info.ZCellularModuleInfo\x12/\n\x04sims\x18$ \x03(\x0b\x32!.org.lfedge.eve.info.ZSimcardInfo\x12\x34\n\x05tasks\x18% \x03(\x0b\x32%.org.lfedge.eve.info.ZInfoDeviceTasks\x12\x18\n\x10maintenance_mode\x18& \x01(\x08\x12K\n\x17maintenance_mode_reason\x18\' \x01(\x0e\x32*.org.lfedge.eve.info.MaintenanceModeReason\x12!\n\x19hardware_watchdog_present\x18( \x01(\x08\x12\x19\n\x11reboot_inprogress\x18) \x01(\x08\x12\x37\n\x0c\x63\x61pabilities\x18* \x01(\x0b\x32!.org.lfedge.eve.info.Capabilities\x12\x1d\n\x15\x62\x61seos_update_counter\x18+ \x01(\r\x12\x30\n\x05state\x18, \x01(\x0e\x32!.org.lfedge.eve.info.ZDeviceState\x12\x15\n\rlocal_profile\x18- \x01(\t\x12L\n\x18maintenance_mode_reasons\x18. \x03(\x0e\x32*.org.lfedge.eve.info.MaintenanceModeReason\x12\x18\n\x0c\x64ormant_time\x18/ \x01(\tB\x02\x18\x01\x12\x36\n\x0cstorage_info\x18\x30 \x03(\x0b\x32 .org.lfedge.eve.info.StorageInfo\x12\x1f\n\x17shutdown_config_counter\x18\x31 \x01(\r\x12>\n\x10\x61ttestation_info\x18\x32 \x01(\x0b\x32$.org.lfedge.eve.info.AttestationInfo\x12:\n\x0e\x61pi_capability\x18\x33 \x01(\x0e\x32\".org.lfedge.eve.info.APICapability\x12\x1e\n\x16remote_access_disabled\x18\x34 \x01(\x08\x12H\n\x15optional_capabilities\x18\x35 \x01(\x0b\x32).org.lfedge.eve.info.OptionalCapabilities\"0\n\x14OptionalCapabilities\x12\x18\n\x10hv_type_kubevirt\x18\x01 \x01(\x08\"v\n\x0f\x41ttestationInfo\x12\x34\n\x05state\x18\x01 \x01(\x0e\x32%.org.lfedge.eve.info.AttestationState\x12-\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\"`\n\x11SystemAdapterInfo\x12\x14\n\x0c\x63urrentIndex\x18\x01 \x01(\r\x12\x35\n\x06status\x18\x02 \x03(\x0b\x32%.org.lfedge.eve.info.DevicePortStatus\"\x88\x02\n\x10\x44\x65vicePortStatus\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\x30\n\x0ctimePriority\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nlastFailed\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\rlastSucceeded\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\x05ports\x18\x06 \x03(\x0b\x32\x1f.org.lfedge.eve.info.DevicePort\x12\x11\n\tlastError\x18\x07 \x01(\t\"\x88\x05\n\nDevicePort\x12\x0e\n\x06ifname\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06isMgmt\x18\x03 \x01(\x08\x12\x0c\n\x04\x66ree\x18\x04 \x01(\x08\x12\x10\n\x08\x64hcpType\x18\x0b \x01(\r\x12\x0e\n\x06subnet\x18\x0c \x01(\t\x12\x0f\n\x07gateway\x18\r \x01(\t\x12\x12\n\ndomainname\x18\x0e \x01(\t\x12\x11\n\tntpServer\x18\x0f \x01(\t\x12\x12\n\ndnsServers\x18\x10 \x03(\t\x12\x14\n\x0c\x64hcpRangeLow\x18\x11 \x01(\t\x12\x15\n\rdhcpRangeHigh\x18\x12 \x01(\t\x12/\n\x05proxy\x18\x15 \x01(\x0b\x32 .org.lfedge.eve.info.ProxyStatus\x12\x0f\n\x07macAddr\x18\x16 \x01(\t\x12\x0f\n\x07IPAddrs\x18\x17 \x03(\t\x12\x16\n\x0e\x64\x65\x66\x61ultRouters\x18\x18 \x03(\t\x12*\n\x03\x64ns\x18\x19 \x01(\x0b\x32\x1d.org.lfedge.eve.info.ZInfoDNS\x12\n\n\x02up\x18\x1a \x01(\x08\x12-\n\x08location\x18\x1b \x01(\x0b\x32\x1b.org.lfedge.eve.info.GeoLoc\x12+\n\x03\x65rr\x18\x1d \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\x12\x36\n\x05usage\x18\x1e \x01(\x0e\x32\'.org.lfedge.eve.common.PhyIoMemberUsage\x12\x13\n\x0bnetworkUUID\x18\x1f \x01(\t\x12\x0c\n\x04\x63ost\x18 \x01(\r\x12<\n\x0fwireless_status\x18! \x01(\x0b\x32#.org.lfedge.eve.info.WirelessStatus\x12\x0b\n\x03mtu\x18\" \x01(\r\"\xaa\x01\n\x0bProxyStatus\x12\x30\n\x07proxies\x18\x01 \x03(\x0b\x32\x1f.org.lfedge.eve.info.ProxyEntry\x12\x12\n\nexceptions\x18\x02 \x01(\t\x12\x0f\n\x07pacfile\x18\x03 \x01(\t\x12\x1a\n\x12networkProxyEnable\x18\x04 \x01(\x08\x12\x17\n\x0fnetworkProxyURL\x18\x05 \x01(\t\x12\x0f\n\x07wpadURL\x18\x06 \x01(\t\"8\n\nProxyEntry\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x0e\n\x06server\x18\x02 \x01(\t\x12\x0c\n\x04port\x18\x03 \x01(\r\"y\n\x0eWirelessStatus\x12/\n\x04type\x18\x01 \x01(\x0e\x32!.org.lfedge.eve.info.WirelessType\x12\x36\n\x08\x63\x65llular\x18\x02 \x01(\x0b\x32$.org.lfedge.eve.info.ZCellularStatus\"\x99\x02\n\x0fZCellularStatus\x12\x17\n\x0f\x63\x65llular_module\x18\x01 \x01(\t\x12\x11\n\tsim_cards\x18\x02 \x03(\t\x12\x39\n\tproviders\x18\x03 \x03(\x0b\x32&.org.lfedge.eve.info.ZCellularProvider\x12\x42\n\x0c\x63urrent_rats\x18\x04 \x03(\x0e\x32,.org.lfedge.eve.common.RadioAccessTechnology\x12\x30\n\x0c\x63onnected_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x0c\x63onfig_error\x18\n \x01(\t\x12\x13\n\x0bprobe_error\x18\x0b \x01(\t\"\xac\x03\n\nZInfoDevSW\x12\x11\n\tactivated\x18\x02 \x01(\x08\x12\x16\n\x0epartitionLabel\x18\x03 \x01(\t\x12\x17\n\x0fpartitionDevice\x18\x04 \x01(\t\x12\x16\n\x0epartitionState\x18\x05 \x01(\t\x12-\n\x06status\x18\x06 \x01(\x0e\x32\x1d.org.lfedge.eve.info.ZSwState\x12\x14\n\x0cshortVersion\x18\x07 \x01(\t\x12\x13\n\x0blongVersion\x18\x08 \x01(\t\x12-\n\x05swErr\x18\t \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\x12\x18\n\x10\x64ownloadProgress\x18\n \x01(\r\x12\x35\n\nuserStatus\x18\x0b \x01(\x0e\x32!.org.lfedge.eve.info.BaseOsStatus\x12\x14\n\x0csubStatusStr\x18\x0c \x01(\t\x12\x37\n\tsubStatus\x18\r \x01(\x0e\x32$.org.lfedge.eve.info.BaseOsSubStatus\x12\x19\n\x11subStatusProgress\x18\x0e \x01(\r\"Y\n\x0cZInfoStorage\x12\x0e\n\x06\x64\x65vice\x18\x01 \x01(\t\x12\x11\n\tmountPath\x18\x02 \x01(\t\x12\r\n\x05total\x18\x03 \x01(\x04\x12\x17\n\x0fstorageLocation\x18\x04 \x01(\x08\"\xda\x01\n\rZInfoSnapshot\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tconfig_id\x18\x02 \x01(\t\x12\x16\n\x0e\x63onfig_version\x18\x03 \x01(\t\x12/\n\x0b\x63reate_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x04type\x18\x05 \x01(\x0e\x32!.org.lfedge.eve.info.SnapshotType\x12\x30\n\x08snap_err\x18\x06 \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\"T\n\x10ZInfoClusterNode\x12@\n\x0bnode_status\x18\x01 \x01(\x0e\x32+.org.lfedge.eve.info.ZInfoClusterNodeStatus\"\xf3\x03\n\x08ZInfoApp\x12\r\n\x05\x41ppID\x18\x01 \x01(\t\x12\x12\n\nappVersion\x18\x02 \x01(\t\x12\x11\n\tsystemApp\x18\x06 \x01(\x08\x12\x0f\n\x07\x41ppName\x18\x07 \x01(\t\x12\x32\n\x0csoftwareList\x18\x08 \x03(\x0b\x32\x1c.org.lfedge.eve.info.ZInfoSW\x12,\n\x08\x62ootTime\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x38\n\x10\x61ssignedAdapters\x18\r \x03(\x0b\x32\x1e.org.lfedge.eve.info.ZioBundle\x12.\n\x06\x61ppErr\x18\x0e \x03(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\x12,\n\x05state\x18\x0f \x01(\x0e\x32\x1d.org.lfedge.eve.info.ZSwState\x12\x32\n\x07network\x18\x10 \x03(\x0b\x32!.org.lfedge.eve.info.ZInfoNetwork\x12\x12\n\nvolumeRefs\x18\x11 \x03(\t\x12\x35\n\tsnapshots\x18\x12 \x03(\x0b\x32\".org.lfedge.eve.info.ZInfoSnapshot\x12\x1b\n\x13\x63luster_app_running\x18\x14 \x01(\x08J\x04\x08\t\x10\x0cJ\x04\x08\x13\x10\x14\"D\n\x10ZInfoVpnLinkInfo\x12\r\n\x05spiId\x18\x01 \x01(\t\x12\x0e\n\x06subNet\x18\x02 \x01(\t\x12\x11\n\tdirection\x18\x03 \x01(\x08\"\xf9\x01\n\x0cZInfoVpnLink\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\r\n\x05reqId\x18\x03 \x01(\t\x12\x10\n\x08instTime\x18\x04 \x01(\x04\x12\x0f\n\x07\x65spInfo\x18\x05 \x01(\t\x12\x31\n\x05state\x18\x06 \x01(\x0e\x32\".org.lfedge.eve.info.ZInfoVpnState\x12\x34\n\x05lInfo\x18\n \x01(\x0b\x32%.org.lfedge.eve.info.ZInfoVpnLinkInfo\x12\x34\n\x05rInfo\x18\x0b \x01(\x0b\x32%.org.lfedge.eve.info.ZInfoVpnLinkInfo\"<\n\x10ZInfoVpnEndPoint\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0e\n\x06ipAddr\x18\x02 \x01(\t\x12\x0c\n\x04port\x18\x03 \x01(\r\"\xa9\x02\n\x0cZInfoVpnConn\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x0f\n\x07\x65stTime\x18\x04 \x01(\x04\x12\x0c\n\x04ikes\x18\x05 \x01(\t\x12\x31\n\x05state\x18\x06 \x01(\x0e\x32\".org.lfedge.eve.info.ZInfoVpnState\x12\x34\n\x05lInfo\x18\x07 \x01(\x0b\x32%.org.lfedge.eve.info.ZInfoVpnEndPoint\x12\x34\n\x05rInfo\x18\x08 \x01(\x0b\x32%.org.lfedge.eve.info.ZInfoVpnEndPoint\x12\x30\n\x05links\x18\n \x03(\x0b\x32!.org.lfedge.eve.info.ZInfoVpnLink\"z\n\x08ZInfoVpn\x12\x0e\n\x06upTime\x18\x01 \x01(\x04\x12\x13\n\x0bpolicyBased\x18\x02 \x01(\x08\x12\x18\n\x10listeningIpAddrs\x18\x03 \x03(\t\x12/\n\x04\x63onn\x18\n \x03(\x0b\x32!.org.lfedge.eve.info.ZInfoVpnConn\"\xd3\x05\n\x14ZInfoNetworkInstance\x12\x11\n\tnetworkID\x18\x02 \x01(\t\x12\x16\n\x0enetworkVersion\x18\x03 \x01(\t\x12\x10\n\x08instType\x18\x05 \x01(\r\x12\x13\n\x0b\x64isplayname\x18\x06 \x01(\t\x12\x11\n\tactivated\x18\x07 \x01(\x08\x12/\n\x0bupTimeStamp\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x32\n\x0csoftwareList\x18\t \x01(\x0b\x32\x1c.org.lfedge.eve.info.ZInfoSW\x12\x19\n\x11\x43urrentUplinkIntf\x18\n \x01(\t\x12\x1a\n\x12\x43urrentUplinkAlias\x18\x0b \x01(\t\x12\x11\n\tbridgeNum\x18\x14 \x01(\r\x12\x12\n\nbridgeName\x18\x15 \x01(\t\x12\x14\n\x0c\x62ridgeIPAddr\x18\x16 \x01(\t\x12\x41\n\ripAssignments\x18\x17 \x03(\x0b\x32*.org.lfedge.eve.info.ZmetIPAssignmentEntry\x12.\n\x04vifs\x18\x19 \x03(\x0b\x32 .org.lfedge.eve.info.ZmetVifInfo\x12\x0f\n\x07ipv4Eid\x18\x1a \x01(\x08\x12\x38\n\x10\x61ssignedAdapters\x18\x1e \x03(\x0b\x32\x1e.org.lfedge.eve.info.ZioBundle\x12.\n\x05vinfo\x18\x1f \x01(\x0b\x32\x1d.org.lfedge.eve.info.ZInfoVpnH\x00\x12\x32\n\nnetworkErr\x18( \x03(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\x12\x39\n\x05state\x18) \x01(\x0e\x32*.org.lfedge.eve.info.ZNetworkInstanceState\x12\x0b\n\x03mtu\x18* \x01(\rB\r\n\x0bInfoContentJ\x04\x08\x18\x10\x19\"\x89\x01\n\tUsageInfo\x12.\n\ncreateTime\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08refCount\x18\x02 \x01(\r\x12:\n\x16lastRefcountChangeTime\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"=\n\x0fVolumeResources\x12\x14\n\x0cmaxSizeBytes\x18\x01 \x01(\x04\x12\x14\n\x0c\x63urSizeBytes\x18\x02 \x01(\x04\"\xaf\x02\n\x0bZInfoVolume\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x13\n\x0b\x64isplayName\x18\x02 \x01(\t\x12-\n\x05usage\x18\x03 \x01(\x0b\x32\x1e.org.lfedge.eve.info.UsageInfo\x12\x37\n\tresources\x18\x04 \x01(\x0b\x32$.org.lfedge.eve.info.VolumeResources\x12,\n\x05state\x18\x05 \x01(\x0e\x32\x1d.org.lfedge.eve.info.ZSwState\x12\x1a\n\x12progressPercentage\x18\x06 \x01(\r\x12\x31\n\tvolumeErr\x18\x07 \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\x12\x18\n\x10generation_count\x18\x08 \x01(\x03\"(\n\x10\x43ontentResources\x12\x14\n\x0c\x63urSizeBytes\x18\x01 \x01(\x04\"\xd9\x02\n\x10ZInfoContentTree\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x13\n\x0b\x64isplayName\x18\x02 \x01(\t\x12\x0e\n\x06sha256\x18\x03 \x01(\t\x12\x38\n\tresources\x18\x04 \x01(\x0b\x32%.org.lfedge.eve.info.ContentResources\x12-\n\x05usage\x18\x05 \x01(\x0b\x32\x1e.org.lfedge.eve.info.UsageInfo\x12,\n\x05state\x18\x06 \x01(\x0e\x32\x1d.org.lfedge.eve.info.ZSwState\x12\x1a\n\x12progressPercentage\x18\x07 \x01(\r\x12+\n\x03\x65rr\x18\x08 \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\x12\x18\n\x10\x63omponentShaList\x18\t \x03(\t\x12\x18\n\x10generation_count\x18\n \x01(\x03\"\xfb\x01\n\tZInfoBlob\x12\x0e\n\x06sha256\x18\x01 \x01(\t\x12\x38\n\tresources\x18\x02 \x01(\x0b\x32%.org.lfedge.eve.info.ContentResources\x12-\n\x05usage\x18\x03 \x01(\x0b\x32\x1e.org.lfedge.eve.info.UsageInfo\x12,\n\x05state\x18\x04 \x01(\x0e\x32\x1d.org.lfedge.eve.info.ZSwState\x12\x1a\n\x12progressPercentage\x18\x05 \x01(\r\x12+\n\x03\x65rr\x18\x06 \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\"=\n\rZInfoBlobList\x12,\n\x04\x62lob\x18\x01 \x03(\x0b\x32\x1e.org.lfedge.eve.info.ZInfoBlob\"\xea\x06\n\x08ZInfoMsg\x12.\n\x05ztype\x18\x01 \x01(\x0e\x32\x1f.org.lfedge.eve.info.ZInfoTypes\x12\r\n\x05\x64\x65vId\x18\x02 \x01(\t\x12\x31\n\x05\x64info\x18\x03 \x01(\x0b\x32 .org.lfedge.eve.info.ZInfoDeviceH\x00\x12.\n\x05\x61info\x18\x05 \x01(\x0b\x32\x1d.org.lfedge.eve.info.ZInfoAppH\x00\x12;\n\x06niinfo\x18\x0c \x01(\x0b\x32).org.lfedge.eve.info.ZInfoNetworkInstanceH\x00\x12\x31\n\x05vinfo\x18\r \x01(\x0b\x32 .org.lfedge.eve.info.ZInfoVolumeH\x00\x12\x36\n\x05\x63info\x18\x0e \x01(\x0b\x32%.org.lfedge.eve.info.ZInfoContentTreeH\x00\x12\x33\n\x05\x62info\x18\x0f \x01(\x0b\x32\".org.lfedge.eve.info.ZInfoBlobListH\x00\x12<\n\x07\x61mdinfo\x18\x10 \x01(\x0b\x32).org.lfedge.eve.info.ZInfoAppInstMetaDataH\x00\x12\x34\n\x06\x65vinfo\x18\x11 \x01(\x0b\x32\".org.lfedge.eve.info.ZInfoEdgeviewH\x00\x12\x34\n\x06hwinfo\x18\x12 \x01(\x0b\x32\".org.lfedge.eve.info.ZInfoHardwareH\x00\x12\x35\n\x07locinfo\x18\x13 \x01(\x0b\x32\".org.lfedge.eve.info.ZInfoLocationH\x00\x12<\n\tpatchInfo\x18\x14 \x01(\x0b\x32\'.org.lfedge.eve.info.ZInfoPatchEnvelopeH\x00\x12=\n\x0c\x63luster_node\x18\x16 \x01(\x0b\x32%.org.lfedge.eve.info.ZInfoClusterNodeH\x00\x12;\n\x0bntp_sources\x18\x17 \x01(\x0b\x32$.org.lfedge.eve.info.ZInfoNTPSourcesH\x00\x12/\n\x0b\x61tTimeStamp\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\r\n\x0bInfoContentJ\x04\x08\x15\x10\x16\"J\n\x0c\x43\x61pabilities\x12 \n\x18HWAssistedVirtualization\x18\x02 \x01(\x08\x12\x18\n\x10IOVirtualization\x18\x03 \x01(\x08\"j\n\x14ZInfoAppInstMetaData\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x36\n\x04type\x18\x02 \x01(\x0e\x32(.org.lfedge.eve.info.AppInstMetaDataType\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\"\xab\x01\n\rZInfoEdgeview\x12/\n\x0b\x65xpire_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x30\n\x0cstarted_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x11\n\tcount_dev\x18\x03 \x01(\r\x12\x11\n\tcount_app\x18\x04 \x01(\r\x12\x11\n\tcount_ext\x18\x05 \x01(\r\"\xd5\x02\n\rZInfoLocation\x12\x10\n\x08latitude\x18\x01 \x01(\x01\x12\x11\n\tlongitude\x18\x02 \x01(\x01\x12\x10\n\x08\x61ltitude\x18\x03 \x01(\x01\x12\x31\n\rutc_timestamp\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x43\n\x16horizontal_reliability\x18\x05 \x01(\x0e\x32#.org.lfedge.eve.info.LocReliability\x12\x41\n\x14vertical_reliability\x18\x06 \x01(\x0e\x32#.org.lfedge.eve.info.LocReliability\x12\x1e\n\x16horizontal_uncertainty\x18\x07 \x01(\x02\x12\x1c\n\x14vertical_uncertainty\x18\x08 \x01(\x02\x12\x14\n\x0clogicallabel\x18\t \x01(\t*u\n\x11\x44\x65pMetricItemType\x12\x16\n\x12\x44\x65pMetricItemOther\x10\x00\x12\x16\n\x12\x44\x65pMetricItemGauge\x10\x01\x12\x18\n\x14\x44\x65pMetricItemCounter\x10\x02\x12\x16\n\x12\x44\x65pMetricItemState\x10\x03*\xfe\x01\n\nZInfoTypes\x12\t\n\x05ZiNop\x10\x00\x12\x0c\n\x08ZiDevice\x10\x01\x12\t\n\x05ZiApp\x10\x03\x12\x15\n\x11ZiNetworkInstance\x10\x06\x12\x0c\n\x08ZiVolume\x10\x07\x12\x11\n\rZiContentTree\x10\x08\x12\x0e\n\nZiBlobList\x10\t\x12\x15\n\x11ZiAppInstMetaData\x10\n\x12\x0e\n\nZiHardware\x10\x0b\x12\x0e\n\nZiEdgeview\x10\x0c\x12\x0e\n\nZiLocation\x10\r\x12\x13\n\x0fZiPatchEnvelope\x10\x0e\x12\x10\n\x0cZiNTPSources\x10\x10\"\x04\x08\x02\x10\x02\"\x04\x08\x04\x10\x04\"\x04\x08\x05\x10\x05\"\x04\x08\x0f\x10\x0f*\x91\x03\n\x08ZSwState\x12\x0b\n\x07INVALID\x10\x00\x12\x0b\n\x07INITIAL\x10\x01\x12\x14\n\x10\x44OWNLOAD_STARTED\x10\x02\x12\x0e\n\nDOWNLOADED\x10\x03\x12\r\n\tDELIVERED\x10\x04\x12\r\n\tINSTALLED\x10\x05\x12\x0b\n\x07\x42OOTING\x10\x06\x12\x0b\n\x07RUNNING\x10\x07\x12\x0b\n\x07HALTING\x10\x08\x12\n\n\x06HALTED\x10\t\x12\x0e\n\nRESTARTING\x10\n\x12\x0b\n\x07PURGING\x10\x0b\x12\x11\n\rRESOLVING_TAG\x10\x0c\x12\x10\n\x0cRESOLVED_TAG\x10\r\x12\x13\n\x0f\x43REATING_VOLUME\x10\x0e\x12\x12\n\x0e\x43REATED_VOLUME\x10\x0f\x12\r\n\tVERIFYING\x10\x10\x12\x0c\n\x08VERIFIED\x10\x11\x12\x0b\n\x07LOADING\x10\x12\x12\n\n\x06LOADED\x10\x13\x12\x18\n\x14\x41WAITNETWORKINSTANCE\x10\x14\x12\t\n\x05\x45RROR\x10\x15\x12\x11\n\rSTART_DELAYED\x10\x16\x12\x0b\n\x07PENDING\x10\x17\x12\x0e\n\nSCHEDULING\x10\x18*\x99\x02\n\x06\x45ntity\x12\x16\n\x12\x45NTITY_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x45NTITY_BASE_OS\x10\x01\x12\x19\n\x15\x45NTITY_SYSTEM_ADAPTER\x10\x02\x12\x10\n\x0c\x45NTITY_VAULT\x10\x03\x12\x16\n\x12\x45NTITY_ATTESTATION\x10\x04\x12\x17\n\x13\x45NTITY_APP_INSTANCE\x10\x05\x12\x0f\n\x0b\x45NTITY_PORT\x10\x06\x12\x12\n\x0e\x45NTITY_NETWORK\x10\x07\x12\x1b\n\x17\x45NTITY_NETWORK_INSTANCE\x10\x08\x12\x17\n\x13\x45NTITY_CONTENT_TREE\x10\t\x12\x17\n\x13\x45NTITY_CONTENT_BLOB\x10\n\x12\x11\n\rENTITY_VOLUME\x10\x0b*c\n\x08Severity\x12\x18\n\x14SEVERITY_UNSPECIFIED\x10\x00\x12\x13\n\x0fSEVERITY_NOTICE\x10\x01\x12\x14\n\x10SEVERITY_WARNING\x10\x02\x12\x12\n\x0eSEVERITY_ERROR\x10\x03*N\n\x16HwSecurityModuleStatus\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0c\n\x08NOTFOUND\x10\x01\x12\x0c\n\x08\x44ISABLED\x10\x02\x12\x0b\n\x07\x45NABLED\x10\x03*\x88\x01\n\x13\x44\x61taSecAtRestStatus\x12\x1b\n\x17\x44\x41TASEC_AT_REST_UNKNOWN\x10\x00\x12\x1c\n\x18\x44\x41TASEC_AT_REST_DISABLED\x10\x01\x12\x1b\n\x17\x44\x41TASEC_AT_REST_ENABLED\x10\x02\x12\x19\n\x15\x44\x41TASEC_AT_REST_ERROR\x10\x04*?\n\tPCRStatus\x12\x0f\n\x0bPCR_UNKNOWN\x10\x00\x12\x0f\n\x0bPCR_ENABLED\x10\x01\x12\x10\n\x0cPCR_DISABLED\x10\x02*M\n\x07SimType\x12\x18\n\x14SIM_TYPE_UNSPECIFIED\x10\x00\x12\x15\n\x11SIM_TYPE_PHYSICAL\x10\x01\x12\x11\n\rSIM_TYPE_ESIM\x10\x02*\xa0\x02\n\x17ZCellularOperatingState\x12*\n&Z_CELLULAR_OPERATING_STATE_UNSPECIFIED\x10\x00\x12&\n\"Z_CELLULAR_OPERATING_STATE_OFFLINE\x10\x01\x12(\n$Z_CELLULAR_OPERATING_STATE_RADIO_OFF\x10\x02\x12%\n!Z_CELLULAR_OPERATING_STATE_ONLINE\x10\x03\x12\x33\n/Z_CELLULAR_OPERATING_STATE_ONLINE_AND_CONNECTED\x10\x04\x12+\n\'Z_CELLULAR_OPERATING_STATE_UNRECOGNIZED\x10\x05*\x92\x01\n\x18ZCellularControlProtocol\x12+\n\'Z_CELLULAR_CONTROL_PROTOCOL_UNSPECIFIED\x10\x00\x12#\n\x1fZ_CELLULAR_CONTROL_PROTOCOL_QMI\x10\x01\x12$\n Z_CELLULAR_CONTROL_PROTOCOL_MBIM\x10\x02*\xb1\x02\n\x0cZDeviceState\x12\x1d\n\x19ZDEVICE_STATE_UNSPECIFIED\x10\x00\x12\x18\n\x14ZDEVICE_STATE_ONLINE\x10\x01\x12\x1b\n\x17ZDEVICE_STATE_REBOOTING\x10\x02\x12\"\n\x1eZDEVICE_STATE_MAINTENANCE_MODE\x10\x03\x12!\n\x1dZDEVICE_STATE_BASEOS_UPDATING\x10\x04\x12\x19\n\x15ZDEVICE_STATE_BOOTING\x10\x05\x12$\n ZDEVICE_STATE_PREPARING_POWEROFF\x10\x06\x12\x1e\n\x1aZDEVICE_STATE_POWERING_OFF\x10\x07\x12#\n\x1fZDEVICE_STATE_PREPARED_POWEROFF\x10\x08*\xf5\x01\n\rStorageStatus\x12\x1e\n\x1aSTORAGE_STATUS_UNSPECIFIED\x10\x00\x12\x19\n\x15STORAGE_STATUS_ONLINE\x10\x01\x12\x1b\n\x17STORAGE_STATUS_DEGRADED\x10\x02\x12\x1a\n\x16STORAGE_STATUS_FAULTED\x10\x03\x12\x1a\n\x16STORAGE_STATUS_OFFLINE\x10\x04\x12\x1a\n\x16STORAGE_STATUS_UNAVAIL\x10\x05\x12\x1a\n\x16STORAGE_STATUS_REMOVED\x10\x06\x12\x1c\n\x18STORAGE_STATUS_SUSPENDED\x10\x07*\xe3\x01\n\x0fStorageRaidType\x12!\n\x1dSTORAGE_RAID_TYPE_UNSPECIFIED\x10\x00\x12\x1b\n\x17STORAGE_RAID_TYPE_RAID0\x10\x01\x12\x1b\n\x17STORAGE_RAID_TYPE_RAID1\x10\x02\x12\x1b\n\x17STORAGE_RAID_TYPE_RAID5\x10\x03\x12\x1b\n\x17STORAGE_RAID_TYPE_RAID6\x10\x04\x12\x1b\n\x17STORAGE_RAID_TYPE_RAID7\x10\x05\x12\x1c\n\x18STORAGE_RAID_TYPE_NORAID\x10\x06*k\n\x0fStorageTypeInfo\x12!\n\x1dSTORAGE_TYPE_INFO_UNSPECIFIED\x10\x00\x12\x1a\n\x16STORAGE_TYPE_INFO_EXT4\x10\x01\x12\x19\n\x15STORAGE_TYPE_INFO_ZFS\x10\x02*\xbd\x02\n\rAPICapability\x12\x1e\n\x1a\x41PI_CAPABILITY_UNSPECIFIED\x10\x00\x12\x1f\n\x1b\x41PI_CAPABILITY_RETRY_UPDATE\x10\x01\x12\x1b\n\x17\x41PI_CAPABILITY_SHUTDOWN\x10\x02\x12)\n%API_CAPABILITY_START_DELAY_IN_SECONDS\x10\x03\x12\x1b\n\x17\x41PI_CAPABILITY_EDGEVIEW\x10\x04\x12#\n\x1f\x41PI_CAPABILITY_VOLUME_SNAPSHOTS\x10\x05\x12+\n\'API_CAPABILITY_NETWORK_INSTANCE_ROUTING\x10\x06\x12\x1c\n\x18\x41PI_CAPABILITY_BOOT_MODE\x10\x07\x12\x16\n\x12\x41PI_CAPABILITY_MTU\x10\x08*\xb9\x03\n\nBootReason\x12\x1b\n\x17\x42OOT_REASON_UNSPECIFIED\x10\x00\x12\x15\n\x11\x42OOT_REASON_FIRST\x10\x01\x12\x1a\n\x16\x42OOT_REASON_REBOOT_CMD\x10\x02\x12\x16\n\x12\x42OOT_REASON_UPDATE\x10\x03\x12\x18\n\x14\x42OOT_REASON_FALLBACK\x10\x04\x12\x1a\n\x16\x42OOT_REASON_DISCONNECT\x10\x05\x12\x15\n\x11\x42OOT_REASON_FATAL\x10\x06\x12\x13\n\x0f\x42OOT_REASON_OOM\x10\x07\x12\x1d\n\x19\x42OOT_REASON_WATCHDOG_HUNG\x10\x08\x12\x1c\n\x18\x42OOT_REASON_WATCHDOG_PID\x10\t\x12\x16\n\x12\x42OOT_REASON_KERNEL\x10\n\x12\x1a\n\x16\x42OOT_REASON_POWER_FAIL\x10\x0b\x12\x17\n\x13\x42OOT_REASON_UNKNOWN\x10\x0c\x12\x1c\n\x18\x42OOT_REASON_VAULT_FAILED\x10\r\x12\x1c\n\x18\x42OOT_REASON_POWEROFF_CMD\x10\x0e\x12\x1b\n\x16\x42OOT_REASON_PARSE_FAIL\x10\xff\x01*\xbe\x01\n\x15MaintenanceModeReason\x12 \n\x1cMAINTENANCE_MODE_REASON_NONE\x10\x00\x12*\n&MAINTENANCE_MODE_REASON_USER_REQUESTED\x10\x01\x12+\n\'MAINTENANCE_MODE_REASON_VAULT_LOCKED_UP\x10\x02\x12*\n&MAINTENANCE_MODE_REASON_LOW_DISK_SPACE\x10\x03*\xb5\x02\n\x10\x41ttestationState\x12!\n\x1d\x41TTESTATION_STATE_UNSPECIFIED\x10\x00\x12 \n\x1c\x41TTESTATION_STATE_NONCE_WAIT\x10\x01\x12$\n ATTESTATION_STATE_TPM_QUOTE_WAIT\x10\x02\x12%\n!ATTESTATION_STATE_TPM_ESCROW_WAIT\x10\x03\x12!\n\x1d\x41TTESTATION_STATE_ATTEST_WAIT\x10\x04\x12(\n$ATTESTATION_STATE_ATTEST_ESCROW_WAIT\x10\x05\x12\"\n\x1e\x41TTESTATION_STATE_RESTART_WAIT\x10\x06\x12\x1e\n\x1a\x41TTESTATION_STATE_COMPLETE\x10\x07*\x8b\x01\n\x13\x41ppInstMetaDataType\x12 \n\x1c\x41PP_INST_META_DATA_TYPE_NONE\x10\x00\x12\'\n#APP_INST_META_DATA_TYPE_KUBE_CONFIG\x10\x01\x12)\n%APP_INST_META_DATA_TYPE_CUSTOM_STATUS\x10\x02*a\n\x0cWirelessType\x12\x1d\n\x19WIRELESS_TYPE_UNSPECIFIED\x10\x00\x12\x16\n\x12WIRELESS_TYPE_WIFI\x10\x01\x12\x1a\n\x16WIRELESS_TYPE_CELLULAR\x10\x02*q\n\x0c\x42\x61seOsStatus\x12\x08\n\x04NONE\x10\x00\x12\x0f\n\x0b\x44OWNLOADING\x10\x01\x12\x11\n\rDOWNLOAD_DONE\x10\x02\x12\x0c\n\x08UPDATING\x10\x03\x12\x0b\n\x07UPDATED\x10\x04\x12\x0c\n\x08\x46\x41LLBACK\x10\x05\x12\n\n\x06\x46\x41ILED\x10\x06*\xcb\x01\n\x0f\x42\x61seOsSubStatus\x12\x12\n\x0eNONE_SUBSTATUS\x10\x00\x12\x17\n\x13\x44OWNLOAD_INPROGRESS\x10\x01\x12\x15\n\x11VERIFY_INPROGRESS\x10\x02\x12\x17\n\x13UPDATE_INITIALIZING\x10\x03\x12\x14\n\x10UPDATE_REBOOTING\x10\x04\x12\x12\n\x0eUPDATE_TESTING\x10\x05\x12\x1c\n\x18UPDATE_NEED_TEST_CONFIRM\x10\x06\x12\x13\n\x0fUPDATE_DEFERRED\x10\x07*K\n\x0cSnapshotType\x12\x1d\n\x19SNAPSHOT_TYPE_UNSPECIFIED\x10\x00\x12\x1c\n\x18SNAPSHOT_TYPE_APP_UPDATE\x10\x01*\xb8\x01\n\x16ZInfoClusterNodeStatus\x12*\n&Z_INFO_CLUSTER_NODE_STATUS_UNSPECIFIED\x10\x00\x12$\n Z_INFO_CLUSTER_NODE_STATUS_READY\x10\x01\x12\'\n#Z_INFO_CLUSTER_NODE_STATUS_NOTREADY\x10\x02\x12#\n\x1fZ_INFO_CLUSTER_NODE_STATUS_DOWN\x10\x03*\x8f\x01\n\rZInfoVpnState\x12\x0f\n\x0bVPN_INVALID\x10\x00\x12\x0f\n\x0bVPN_INITIAL\x10\x01\x12\x12\n\x0eVPN_CONNECTING\x10\x02\x12\x13\n\x0fVPN_ESTABLISHED\x10\x03\x12\x11\n\rVPN_INSTALLED\x10\x04\x12\x0f\n\x0bVPN_REKEYED\x10\x05\x12\x0f\n\x0bVPN_DELETED\x10\n*\x85\x01\n\x15ZNetworkInstanceState\x12\x1e\n\x1aZNETINST_STATE_UNSPECIFIED\x10\x00\x12\x17\n\x13ZNETINST_STATE_INIT\x10\x01\x12\x19\n\x15ZNETINST_STATE_ONLINE\x10\x02\x12\x18\n\x14ZNETINST_STATE_ERROR\x10\x03*\x9e\x01\n\x0eLocReliability\x12\x1f\n\x1bLOC_RELIABILITY_UNSPECIFIED\x10\x00\x12\x1c\n\x18LOC_RELIABILITY_VERY_LOW\x10\x01\x12\x17\n\x13LOC_RELIABILITY_LOW\x10\x02\x12\x1a\n\x16LOC_RELIABILITY_MEDIUM\x10\x03\x12\x18\n\x14LOC_RELIABILITY_HIGH\x10\x04\x42\x39\n\x13org.lfedge.eve.infoZ\"github.com/lf-edge/eve-api/go/infob\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0finfo/info.proto\x12\x13org.lfedge.eve.info\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1e\x65vecommon/devmodelcommon.proto\x1a\x19\x65vecommon/evecommon.proto\x1a\x19info/patch_envelope.proto\x1a\x15info/ntpsources.proto\"\xdc\x01\n\x14\x64\x65precatedMetricItem\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x04type\x18\x02 \x01(\x0e\x32&.org.lfedge.eve.info.DepMetricItemType\x12\x13\n\tboolValue\x18\x03 \x01(\x08H\x00\x12\x15\n\x0buint32Value\x18\x04 \x01(\rH\x00\x12\x15\n\x0buint64Value\x18\x05 \x01(\x04H\x00\x12\x14\n\nfloatValue\x18\x06 \x01(\x02H\x00\x12\x15\n\x0bstringValue\x18\x07 \x01(\tH\x00\x42\x11\n\x0fmetricItemValue\">\n\x15ZmetIPAssignmentEntry\x12\x12\n\nmacAddress\x18\x01 \x01(\t\x12\x11\n\tipAddress\x18\x02 \x03(\t\"A\n\x0bZmetVifInfo\x12\x0f\n\x07vifName\x18\x01 \x01(\t\x12\x12\n\nmacAddress\x18\x02 \x01(\t\x12\r\n\x05\x61ppID\x18\x03 \x01(\t\"\xa5\x02\n\tZioBundle\x12.\n\x04type\x18\x01 \x01(\x0e\x32 .org.lfedge.eve.common.PhyIoType\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07members\x18\x03 \x03(\t\x12\x15\n\rusedByAppUUID\x18\x04 \x01(\t\x12\x14\n\x0cusedByBaseOS\x18\x05 \x01(\x08\x12\x37\n\rioAddressList\x18\x06 \x03(\x0b\x32 .org.lfedge.eve.info.IoAddresses\x12\x36\n\x05usage\x18\x07 \x01(\x0e\x32\'.org.lfedge.eve.common.PhyIoMemberUsage\x12+\n\x03\x65rr\x18\x08 \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\"X\n\x0bIoAddresses\x12\x12\n\nmacAddress\x18\x01 \x01(\t\x12\x35\n\x07vf_info\x18\x02 \x01(\x0b\x32$.org.lfedge.eve.info.VfPublishedInfo\"1\n\x0fVfPublishedInfo\x12\r\n\x05index\x18\x01 \x01(\r\x12\x0f\n\x07vlan_id\x18\x02 \x01(\r\"\xc9\x01\n\x11ZInfoManufacturer\x12\x14\n\x0cmanufacturer\x18\x01 \x01(\t\x12\x13\n\x0bproductName\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x14\n\x0cserialNumber\x18\x04 \x01(\t\x12\x0c\n\x04UUID\x18\x05 \x01(\t\x12\x12\n\ncompatible\x18\x06 \x01(\t\x12\x12\n\nbiosVendor\x18\x07 \x01(\t\x12\x13\n\x0b\x62iosVersion\x18\x08 \x01(\t\x12\x17\n\x0f\x62iosReleaseDate\x18\t \x01(\t\"\x8c\x03\n\x0cZInfoNetwork\x12\x0f\n\x07macAddr\x18\x03 \x01(\t\x12\x0f\n\x07\x64\x65vName\x18\x04 \x01(\t\x12\r\n\x05\x61lias\x18( \x01(\t\x12\x0f\n\x07IPAddrs\x18\x05 \x03(\t\x12\x16\n\x0e\x64\x65\x66\x61ultRouters\x18\x06 \x03(\t\x12*\n\x03\x64ns\x18\x07 \x01(\x0b\x32\x1d.org.lfedge.eve.info.ZInfoDNS\x12\x0f\n\x07ipv4_up\x18\x08 \x01(\x08\x12-\n\x08location\x18\t \x01(\x0b\x32\x1b.org.lfedge.eve.info.GeoLoc\x12\x0e\n\x06uplink\x18\n \x01(\x08\x12\x32\n\nnetworkErr\x18\x0b \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\x12\x11\n\tlocalName\x18\x0c \x01(\t\x12/\n\x05proxy\x18\r \x01(\x0b\x32 .org.lfedge.eve.info.ProxyStatus\x12\x19\n\x11ip_addr_mis_match\x18\x0e \x01(\x08\x12\x13\n\x0bntp_servers\x18\x0f \x03(\t\"\x87\x01\n\x06GeoLoc\x12\x12\n\nUnderlayIP\x18\x01 \x01(\t\x12\x10\n\x08Hostname\x18\x02 \x01(\t\x12\x0c\n\x04\x43ity\x18\x03 \x01(\t\x12\x0e\n\x06Region\x18\x04 \x01(\t\x12\x0f\n\x07\x43ountry\x18\x05 \x01(\t\x12\x0b\n\x03Loc\x18\x06 \x01(\t\x12\x0b\n\x03Org\x18\x07 \x01(\t\x12\x0e\n\x06Postal\x18\x08 \x01(\t\"D\n\x08ZInfoDNS\x12\x12\n\nDNSservers\x18\x01 \x03(\t\x12\x11\n\tDNSdomain\x18\x02 \x01(\t\x12\x11\n\tDNSsearch\x18\x03 \x03(\t\"\xa5\x01\n\x07ZInfoSW\x12\x11\n\tswVersion\x18\x02 \x01(\t\x12\x0e\n\x06swHash\x18\x03 \x01(\t\x12,\n\x05state\x18\x04 \x01(\x0e\x32\x1d.org.lfedge.eve.info.ZSwState\x12\x0e\n\x06target\x18\x06 \x01(\t\x12\x0c\n\x04vdev\x18\x07 \x01(\t\x12\x18\n\x10\x64ownloadProgress\x18\x08 \x01(\r\x12\x11\n\timageName\x18\t \x01(\t\"\xce\x01\n\tErrorInfo\x12\x13\n\x0b\x64\x65scription\x18\x01 \x01(\t\x12-\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x08severity\x18\x03 \x01(\x0e\x32\x1d.org.lfedge.eve.info.Severity\x12\x33\n\x08\x65ntities\x18\x04 \x03(\x0b\x32!.org.lfedge.eve.info.DeviceEntity\x12\x17\n\x0fretry_condition\x18\x05 \x01(\t\"c\n\x0c\x44\x65viceEntity\x12+\n\x06\x65ntity\x18\x01 \x01(\x0e\x32\x1b.org.lfedge.eve.info.Entity\x12\x11\n\tentity_id\x18\x02 \x01(\t\x12\x13\n\x0b\x65ntity_name\x18\x03 \x01(\t\"\xb8\x01\n\tVaultInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x38\n\x06status\x18\x02 \x01(\x0e\x32(.org.lfedge.eve.info.DataSecAtRestStatus\x12\x30\n\x08vaultErr\x18\x03 \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\x12\x31\n\tpcrStatus\x18\x04 \x01(\x0e\x32\x1e.org.lfedge.eve.info.PCRStatus\"\x8a\x01\n\rDataSecAtRest\x12\x38\n\x06status\x18\x01 \x01(\x0e\x32(.org.lfedge.eve.info.DataSecAtRestStatus\x12\x0c\n\x04info\x18\x02 \x01(\t\x12\x31\n\tvaultList\x18\x03 \x03(\x0b\x32\x1e.org.lfedge.eve.info.VaultInfo\"<\n\x0cSecurityInfo\x12\x13\n\x0bsha_root_ca\x18\x01 \x01(\x0c\x12\x17\n\x0fsha_tls_root_ca\x18\x02 \x01(\x0c\"/\n\x0fZInfoConfigItem\x12\r\n\x05value\x18\x01 \x01(\t\x12\r\n\x05\x65rror\x18\x02 \x01(\t\"\x84\x03\n\x15ZInfoConfigItemStatus\x12P\n\x0b\x63onfigItems\x18\x01 \x03(\x0b\x32;.org.lfedge.eve.info.ZInfoConfigItemStatus.ConfigItemsEntry\x12^\n\x12unknownConfigItems\x18\x02 \x03(\x0b\x32\x42.org.lfedge.eve.info.ZInfoConfigItemStatus.UnknownConfigItemsEntry\x1aX\n\x10\x43onfigItemsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x33\n\x05value\x18\x02 \x01(\x0b\x32$.org.lfedge.eve.info.ZInfoConfigItem:\x02\x38\x01\x1a_\n\x17UnknownConfigItemsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x33\n\x05value\x18\x02 \x01(\x0b\x32$.org.lfedge.eve.info.ZInfoConfigItem:\x02\x38\x01\"B\n\x10ZInfoAppInstance\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x12\n\ndomainName\x18\x03 \x01(\t\"3\n\x10ZInfoDeviceTasks\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\tnamespace\x18\x02 \x01(\t\"\xc1\x01\n\x0cZSimcardInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x18\n\x10\x63\x65ll_module_name\x18\x02 \x01(\t\x12\x0c\n\x04imsi\x18\x03 \x01(\t\x12\r\n\x05iccid\x18\x04 \x01(\t\x12\r\n\x05state\x18\x06 \x01(\t\x12\x13\n\x0bslot_number\x18\x07 \x01(\r\x12\x16\n\x0eslot_activated\x18\x08 \x01(\x08\x12*\n\x04type\x18\t \x01(\x0e\x32\x1c.org.lfedge.eve.info.SimTypeJ\x04\x08\x05\x10\x06\"\x80\x02\n\x13ZCellularModuleInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0c\n\x04imei\x18\x02 \x01(\t\x12\x18\n\x10\x66irmware_version\x18\x03 \x01(\t\x12\r\n\x05model\x18\x04 \x01(\t\x12\x45\n\x0foperating_state\x18\x05 \x01(\x0e\x32,.org.lfedge.eve.info.ZCellularOperatingState\x12G\n\x10\x63ontrol_protocol\x18\x06 \x01(\x0e\x32-.org.lfedge.eve.info.ZCellularControlProtocol\x12\x14\n\x0cmanufacturer\x18\x07 \x01(\t\"s\n\x11ZCellularProvider\x12\x0c\n\x04plmn\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x17\n\x0f\x63urrent_serving\x18\x03 \x01(\x08\x12\x0f\n\x07roaming\x18\x04 \x01(\x08\x12\x11\n\tforbidden\x18\x05 \x01(\x08\"\x90\x01\n\x10StorageDiskState\x12\x39\n\tdisk_name\x18\x01 \x01(\x0b\x32&.org.lfedge.eve.common.DiskDescription\x12\x32\n\x06status\x18\x02 \x01(\x0e\x32\".org.lfedge.eve.info.StorageStatus\x12\r\n\x05state\x18\x03 \x01(\t\"m\n\tSmartAttr\x12\n\n\x02id\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\x04\x12\r\n\x05worst\x18\x03 \x01(\x04\x12\x0e\n\x06thresh\x18\x04 \x01(\x04\x12\x13\n\x0bwhen_failed\x18\x05 \x01(\t\x12\x11\n\traw_value\x18\x06 \x01(\x04\"\x8a\x03\n\x0bSmartMetric\x12=\n\x15reallocated_sector_ct\x18\x01 \x01(\x0b\x32\x1e.org.lfedge.eve.info.SmartAttr\x12\x36\n\x0epower_on_hours\x18\x02 \x01(\x0b\x32\x1e.org.lfedge.eve.info.SmartAttr\x12\x39\n\x11power_cycle_count\x18\x03 \x01(\x0b\x32\x1e.org.lfedge.eve.info.SmartAttr\x12?\n\x17reallocated_event_count\x18\x04 \x01(\x0b\x32\x1e.org.lfedge.eve.info.SmartAttr\x12>\n\x16\x63urrent_pending_sector\x18\x05 \x01(\x0b\x32\x1e.org.lfedge.eve.info.SmartAttr\x12\x13\n\x0bneed_update\x18\x06 \x01(\x08\x12\x33\n\x0btemperature\x18\x07 \x01(\x0b\x32\x1e.org.lfedge.eve.info.SmartAttr\"\xa7\x01\n\x0fStorageDiskInfo\x12\x11\n\tdisk_name\x18\x01 \x01(\t\x12\x34\n\nsmart_data\x18\x03 \x03(\x0b\x32 .org.lfedge.eve.info.SmartMetric\x12\x0b\n\x03wwn\x18\x04 \x01(\t\x12\x15\n\rserial_number\x18\x05 \x01(\t\x12\r\n\x05model\x18\x06 \x01(\t\x12\x18\n\x10\x63ollector_errors\x18\x07 \x01(\t\"\xe2\x01\n\x0fStorageChildren\x12:\n\x0c\x63urrent_raid\x18\x01 \x01(\x0e\x32$.org.lfedge.eve.info.StorageRaidType\x12\x34\n\x05\x64isks\x18\x02 \x03(\x0b\x32%.org.lfedge.eve.info.StorageDiskState\x12\x36\n\x08\x63hildren\x18\x03 \x03(\x0b\x32$.org.lfedge.eve.info.StorageChildren\x12\x14\n\x0c\x64isplay_name\x18\x04 \x01(\t\x12\x0f\n\x07g_u_i_d\x18\x05 \x01(\x04\"\xcd\x03\n\x0bStorageInfo\x12\x11\n\tpool_name\x18\x01 \x01(\t\x12:\n\x0cstorage_type\x18\x02 \x01(\x0e\x32$.org.lfedge.eve.info.StorageTypeInfo\x12\x13\n\x0bzfs_version\x18\x03 \x01(\t\x12:\n\x0c\x63urrent_raid\x18\x04 \x01(\x0e\x32$.org.lfedge.eve.info.StorageRaidType\x12\x19\n\x11\x63ompression_ratio\x18\x05 \x01(\x01\x12\x12\n\nzpool_size\x18\x06 \x01(\x04\x12\x13\n\x0b\x63ount_zvols\x18\x07 \x01(\r\x12\x39\n\rstorage_state\x18\x08 \x01(\x0e\x32\".org.lfedge.eve.info.StorageStatus\x12\x34\n\x05\x64isks\x18\t \x03(\x0b\x32%.org.lfedge.eve.info.StorageDiskState\x12\x18\n\x10\x63ollector_errors\x18\n \x01(\t\x12\x36\n\x08\x63hildren\x18\x0b \x03(\x0b\x32$.org.lfedge.eve.info.StorageChildren\x12\x17\n\x0fpool_status_msg\x18\x0c \x01(\t\"D\n\rZInfoHardware\x12\x33\n\x05\x64isks\x18\x01 \x03(\x0b\x32$.org.lfedge.eve.info.StorageDiskInfo\"\xbc\x10\n\x0bZInfoDevice\x12\x13\n\x0bmachineArch\x18\x04 \x01(\t\x12\x0f\n\x07\x63puArch\x18\x05 \x01(\t\x12\x10\n\x08platform\x18\x06 \x01(\t\x12\x0c\n\x04ncpu\x18\x07 \x01(\r\x12\x0e\n\x06memory\x18\x08 \x01(\x04\x12\x0f\n\x07storage\x18\t \x01(\x04\x12\x19\n\x11powerCycleCounter\x18\n \x01(\x03\x12\x35\n\x05minfo\x18\x0b \x01(\x0b\x32&.org.lfedge.eve.info.ZInfoManufacturer\x12\x32\n\x07network\x18\r \x03(\x0b\x32!.org.lfedge.eve.info.ZInfoNetwork\x12:\n\x12\x61ssignableAdapters\x18\x0f \x03(\x0b\x32\x1e.org.lfedge.eve.info.ZioBundle\x12*\n\x03\x64ns\x18\x10 \x01(\x0b\x32\x1d.org.lfedge.eve.info.ZInfoDNS\x12\x36\n\x0bstorageList\x18\x11 \x03(\x0b\x32!.org.lfedge.eve.info.ZInfoStorage\x12,\n\x08\x62ootTime\x18\x12 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x06swList\x18\x13 \x03(\x0b\x32\x1f.org.lfedge.eve.info.ZInfoDevSW\x12\x10\n\x08HostName\x18\x14 \x01(\t\x12>\n\x0bmetricItems\x18\x15 \x03(\x0b\x32).org.lfedge.eve.info.deprecatedMetricItem\x12\x18\n\x10lastRebootReason\x18\x16 \x01(\t\x12\x32\n\x0elastRebootTime\x18\x17 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12=\n\rsystemAdapter\x18\x18 \x01(\x0b\x32&.org.lfedge.eve.info.SystemAdapterInfo\x12\x16\n\x0erestartCounter\x18\x19 \x01(\r\x12>\n\tHSMStatus\x18\x1a \x01(\x0e\x32+.org.lfedge.eve.info.HwSecurityModuleStatus\x12\x0f\n\x07HSMInfo\x18\x1b \x01(\t\x12\x17\n\x0flastRebootStack\x18\x1c \x01(\t\x12=\n\x11\x64\x61taSecAtRestInfo\x18\x1d \x01(\x0b\x32\".org.lfedge.eve.info.DataSecAtRest\x12\x33\n\x08sec_info\x18\x1e \x01(\x0b\x32!.org.lfedge.eve.info.SecurityInfo\x12\x44\n\x10\x63onfigItemStatus\x18\x1f \x01(\x0b\x32*.org.lfedge.eve.info.ZInfoConfigItemStatus\x12;\n\x0c\x61ppInstances\x18 \x03(\x0b\x32%.org.lfedge.eve.info.ZInfoAppInstance\x12\x1b\n\x13rebootConfigCounter\x18! \x01(\r\x12\x39\n\x10last_boot_reason\x18\" \x01(\x0e\x32\x1f.org.lfedge.eve.info.BootReason\x12=\n\x0b\x63\x65ll_radios\x18# \x03(\x0b\x32(.org.lfedge.eve.info.ZCellularModuleInfo\x12/\n\x04sims\x18$ \x03(\x0b\x32!.org.lfedge.eve.info.ZSimcardInfo\x12\x34\n\x05tasks\x18% \x03(\x0b\x32%.org.lfedge.eve.info.ZInfoDeviceTasks\x12\x18\n\x10maintenance_mode\x18& \x01(\x08\x12K\n\x17maintenance_mode_reason\x18\' \x01(\x0e\x32*.org.lfedge.eve.info.MaintenanceModeReason\x12!\n\x19hardware_watchdog_present\x18( \x01(\x08\x12\x19\n\x11reboot_inprogress\x18) \x01(\x08\x12\x37\n\x0c\x63\x61pabilities\x18* \x01(\x0b\x32!.org.lfedge.eve.info.Capabilities\x12\x1d\n\x15\x62\x61seos_update_counter\x18+ \x01(\r\x12\x30\n\x05state\x18, \x01(\x0e\x32!.org.lfedge.eve.info.ZDeviceState\x12\x15\n\rlocal_profile\x18- \x01(\t\x12L\n\x18maintenance_mode_reasons\x18. \x03(\x0e\x32*.org.lfedge.eve.info.MaintenanceModeReason\x12\x18\n\x0c\x64ormant_time\x18/ \x01(\tB\x02\x18\x01\x12\x36\n\x0cstorage_info\x18\x30 \x03(\x0b\x32 .org.lfedge.eve.info.StorageInfo\x12\x1f\n\x17shutdown_config_counter\x18\x31 \x01(\r\x12>\n\x10\x61ttestation_info\x18\x32 \x01(\x0b\x32$.org.lfedge.eve.info.AttestationInfo\x12:\n\x0e\x61pi_capability\x18\x33 \x01(\x0e\x32\".org.lfedge.eve.info.APICapability\x12\x1e\n\x16remote_access_disabled\x18\x34 \x01(\x08\x12H\n\x15optional_capabilities\x18\x35 \x01(\x0b\x32).org.lfedge.eve.info.OptionalCapabilities\"0\n\x14OptionalCapabilities\x12\x18\n\x10hv_type_kubevirt\x18\x01 \x01(\x08\"v\n\x0f\x41ttestationInfo\x12\x34\n\x05state\x18\x01 \x01(\x0e\x32%.org.lfedge.eve.info.AttestationState\x12-\n\x05\x65rror\x18\x02 \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\"`\n\x11SystemAdapterInfo\x12\x14\n\x0c\x63urrentIndex\x18\x01 \x01(\r\x12\x35\n\x06status\x18\x02 \x03(\x0b\x32%.org.lfedge.eve.info.DevicePortStatus\"\x88\x02\n\x10\x44\x65vicePortStatus\x12\x0f\n\x07version\x18\x01 \x01(\r\x12\x0b\n\x03key\x18\x02 \x01(\t\x12\x30\n\x0ctimePriority\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\nlastFailed\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\rlastSucceeded\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12.\n\x05ports\x18\x06 \x03(\x0b\x32\x1f.org.lfedge.eve.info.DevicePort\x12\x11\n\tlastError\x18\x07 \x01(\t\"\x88\x05\n\nDevicePort\x12\x0e\n\x06ifname\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0e\n\x06isMgmt\x18\x03 \x01(\x08\x12\x0c\n\x04\x66ree\x18\x04 \x01(\x08\x12\x10\n\x08\x64hcpType\x18\x0b \x01(\r\x12\x0e\n\x06subnet\x18\x0c \x01(\t\x12\x0f\n\x07gateway\x18\r \x01(\t\x12\x12\n\ndomainname\x18\x0e \x01(\t\x12\x11\n\tntpServer\x18\x0f \x01(\t\x12\x12\n\ndnsServers\x18\x10 \x03(\t\x12\x14\n\x0c\x64hcpRangeLow\x18\x11 \x01(\t\x12\x15\n\rdhcpRangeHigh\x18\x12 \x01(\t\x12/\n\x05proxy\x18\x15 \x01(\x0b\x32 .org.lfedge.eve.info.ProxyStatus\x12\x0f\n\x07macAddr\x18\x16 \x01(\t\x12\x0f\n\x07IPAddrs\x18\x17 \x03(\t\x12\x16\n\x0e\x64\x65\x66\x61ultRouters\x18\x18 \x03(\t\x12*\n\x03\x64ns\x18\x19 \x01(\x0b\x32\x1d.org.lfedge.eve.info.ZInfoDNS\x12\n\n\x02up\x18\x1a \x01(\x08\x12-\n\x08location\x18\x1b \x01(\x0b\x32\x1b.org.lfedge.eve.info.GeoLoc\x12+\n\x03\x65rr\x18\x1d \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\x12\x36\n\x05usage\x18\x1e \x01(\x0e\x32\'.org.lfedge.eve.common.PhyIoMemberUsage\x12\x13\n\x0bnetworkUUID\x18\x1f \x01(\t\x12\x0c\n\x04\x63ost\x18 \x01(\r\x12<\n\x0fwireless_status\x18! \x01(\x0b\x32#.org.lfedge.eve.info.WirelessStatus\x12\x0b\n\x03mtu\x18\" \x01(\r\"\xaa\x01\n\x0bProxyStatus\x12\x30\n\x07proxies\x18\x01 \x03(\x0b\x32\x1f.org.lfedge.eve.info.ProxyEntry\x12\x12\n\nexceptions\x18\x02 \x01(\t\x12\x0f\n\x07pacfile\x18\x03 \x01(\t\x12\x1a\n\x12networkProxyEnable\x18\x04 \x01(\x08\x12\x17\n\x0fnetworkProxyURL\x18\x05 \x01(\t\x12\x0f\n\x07wpadURL\x18\x06 \x01(\t\"8\n\nProxyEntry\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x0e\n\x06server\x18\x02 \x01(\t\x12\x0c\n\x04port\x18\x03 \x01(\r\"y\n\x0eWirelessStatus\x12/\n\x04type\x18\x01 \x01(\x0e\x32!.org.lfedge.eve.info.WirelessType\x12\x36\n\x08\x63\x65llular\x18\x02 \x01(\x0b\x32$.org.lfedge.eve.info.ZCellularStatus\"\x99\x02\n\x0fZCellularStatus\x12\x17\n\x0f\x63\x65llular_module\x18\x01 \x01(\t\x12\x11\n\tsim_cards\x18\x02 \x03(\t\x12\x39\n\tproviders\x18\x03 \x03(\x0b\x32&.org.lfedge.eve.info.ZCellularProvider\x12\x42\n\x0c\x63urrent_rats\x18\x04 \x03(\x0e\x32,.org.lfedge.eve.common.RadioAccessTechnology\x12\x30\n\x0c\x63onnected_at\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x14\n\x0c\x63onfig_error\x18\n \x01(\t\x12\x13\n\x0bprobe_error\x18\x0b \x01(\t\"\xac\x03\n\nZInfoDevSW\x12\x11\n\tactivated\x18\x02 \x01(\x08\x12\x16\n\x0epartitionLabel\x18\x03 \x01(\t\x12\x17\n\x0fpartitionDevice\x18\x04 \x01(\t\x12\x16\n\x0epartitionState\x18\x05 \x01(\t\x12-\n\x06status\x18\x06 \x01(\x0e\x32\x1d.org.lfedge.eve.info.ZSwState\x12\x14\n\x0cshortVersion\x18\x07 \x01(\t\x12\x13\n\x0blongVersion\x18\x08 \x01(\t\x12-\n\x05swErr\x18\t \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\x12\x18\n\x10\x64ownloadProgress\x18\n \x01(\r\x12\x35\n\nuserStatus\x18\x0b \x01(\x0e\x32!.org.lfedge.eve.info.BaseOsStatus\x12\x14\n\x0csubStatusStr\x18\x0c \x01(\t\x12\x37\n\tsubStatus\x18\r \x01(\x0e\x32$.org.lfedge.eve.info.BaseOsSubStatus\x12\x19\n\x11subStatusProgress\x18\x0e \x01(\r\"Y\n\x0cZInfoStorage\x12\x0e\n\x06\x64\x65vice\x18\x01 \x01(\t\x12\x11\n\tmountPath\x18\x02 \x01(\t\x12\r\n\x05total\x18\x03 \x01(\x04\x12\x17\n\x0fstorageLocation\x18\x04 \x01(\x08\"\xda\x01\n\rZInfoSnapshot\x12\n\n\x02id\x18\x01 \x01(\t\x12\x11\n\tconfig_id\x18\x02 \x01(\t\x12\x16\n\x0e\x63onfig_version\x18\x03 \x01(\t\x12/\n\x0b\x63reate_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x04type\x18\x05 \x01(\x0e\x32!.org.lfedge.eve.info.SnapshotType\x12\x30\n\x08snap_err\x18\x06 \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\"T\n\x10ZInfoClusterNode\x12@\n\x0bnode_status\x18\x01 \x01(\x0e\x32+.org.lfedge.eve.info.ZInfoClusterNodeStatus\"\xf3\x03\n\x08ZInfoApp\x12\r\n\x05\x41ppID\x18\x01 \x01(\t\x12\x12\n\nappVersion\x18\x02 \x01(\t\x12\x11\n\tsystemApp\x18\x06 \x01(\x08\x12\x0f\n\x07\x41ppName\x18\x07 \x01(\t\x12\x32\n\x0csoftwareList\x18\x08 \x03(\x0b\x32\x1c.org.lfedge.eve.info.ZInfoSW\x12,\n\x08\x62ootTime\x18\x0c \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x38\n\x10\x61ssignedAdapters\x18\r \x03(\x0b\x32\x1e.org.lfedge.eve.info.ZioBundle\x12.\n\x06\x61ppErr\x18\x0e \x03(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\x12,\n\x05state\x18\x0f \x01(\x0e\x32\x1d.org.lfedge.eve.info.ZSwState\x12\x32\n\x07network\x18\x10 \x03(\x0b\x32!.org.lfedge.eve.info.ZInfoNetwork\x12\x12\n\nvolumeRefs\x18\x11 \x03(\t\x12\x35\n\tsnapshots\x18\x12 \x03(\x0b\x32\".org.lfedge.eve.info.ZInfoSnapshot\x12\x1b\n\x13\x63luster_app_running\x18\x14 \x01(\x08J\x04\x08\t\x10\x0cJ\x04\x08\x13\x10\x14\"D\n\x10ZInfoVpnLinkInfo\x12\r\n\x05spiId\x18\x01 \x01(\t\x12\x0e\n\x06subNet\x18\x02 \x01(\t\x12\x11\n\tdirection\x18\x03 \x01(\x08\"\xf9\x01\n\x0cZInfoVpnLink\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\r\n\x05reqId\x18\x03 \x01(\t\x12\x10\n\x08instTime\x18\x04 \x01(\x04\x12\x0f\n\x07\x65spInfo\x18\x05 \x01(\t\x12\x31\n\x05state\x18\x06 \x01(\x0e\x32\".org.lfedge.eve.info.ZInfoVpnState\x12\x34\n\x05lInfo\x18\n \x01(\x0b\x32%.org.lfedge.eve.info.ZInfoVpnLinkInfo\x12\x34\n\x05rInfo\x18\x0b \x01(\x0b\x32%.org.lfedge.eve.info.ZInfoVpnLinkInfo\"<\n\x10ZInfoVpnEndPoint\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0e\n\x06ipAddr\x18\x02 \x01(\t\x12\x0c\n\x04port\x18\x03 \x01(\r\"\xa9\x02\n\x0cZInfoVpnConn\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07version\x18\x03 \x01(\t\x12\x0f\n\x07\x65stTime\x18\x04 \x01(\x04\x12\x0c\n\x04ikes\x18\x05 \x01(\t\x12\x31\n\x05state\x18\x06 \x01(\x0e\x32\".org.lfedge.eve.info.ZInfoVpnState\x12\x34\n\x05lInfo\x18\x07 \x01(\x0b\x32%.org.lfedge.eve.info.ZInfoVpnEndPoint\x12\x34\n\x05rInfo\x18\x08 \x01(\x0b\x32%.org.lfedge.eve.info.ZInfoVpnEndPoint\x12\x30\n\x05links\x18\n \x03(\x0b\x32!.org.lfedge.eve.info.ZInfoVpnLink\"z\n\x08ZInfoVpn\x12\x0e\n\x06upTime\x18\x01 \x01(\x04\x12\x13\n\x0bpolicyBased\x18\x02 \x01(\x08\x12\x18\n\x10listeningIpAddrs\x18\x03 \x03(\t\x12/\n\x04\x63onn\x18\n \x03(\x0b\x32!.org.lfedge.eve.info.ZInfoVpnConn\"\x9b\x06\n\x14ZInfoNetworkInstance\x12\x11\n\tnetworkID\x18\x02 \x01(\t\x12\x16\n\x0enetworkVersion\x18\x03 \x01(\t\x12\x10\n\x08instType\x18\x05 \x01(\r\x12\x13\n\x0b\x64isplayname\x18\x06 \x01(\t\x12\x11\n\tactivated\x18\x07 \x01(\x08\x12/\n\x0bupTimeStamp\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x32\n\x0csoftwareList\x18\t \x01(\x0b\x32\x1c.org.lfedge.eve.info.ZInfoSW\x12\x1d\n\x11\x43urrentUplinkIntf\x18\n \x01(\tB\x02\x18\x01\x12\x1e\n\x12\x43urrentUplinkAlias\x18\x0b \x01(\tB\x02\x18\x01\x12\r\n\x05ports\x18\x0c \x03(\t\x12\x11\n\tbridgeNum\x18\x14 \x01(\r\x12\x12\n\nbridgeName\x18\x15 \x01(\t\x12\x14\n\x0c\x62ridgeIPAddr\x18\x16 \x01(\t\x12\x41\n\ripAssignments\x18\x17 \x03(\x0b\x32*.org.lfedge.eve.info.ZmetIPAssignmentEntry\x12.\n\x04vifs\x18\x19 \x03(\x0b\x32 .org.lfedge.eve.info.ZmetVifInfo\x12\x0f\n\x07ipv4Eid\x18\x1a \x01(\x08\x12\x38\n\x10\x61ssignedAdapters\x18\x1e \x03(\x0b\x32\x1e.org.lfedge.eve.info.ZioBundle\x12.\n\x05vinfo\x18\x1f \x01(\x0b\x32\x1d.org.lfedge.eve.info.ZInfoVpnH\x00\x12\x32\n\nnetworkErr\x18( \x03(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\x12\x39\n\x05state\x18) \x01(\x0e\x32*.org.lfedge.eve.info.ZNetworkInstanceState\x12\x0b\n\x03mtu\x18* \x01(\r\x12/\n\tip_routes\x18+ \x03(\x0b\x32\x1c.org.lfedge.eve.info.IPRouteB\r\n\x0bInfoContentJ\x04\x08\x18\x10\x19\"Z\n\x07IPRoute\x12\x1b\n\x13\x64\x65stination_network\x18\x01 \x01(\t\x12\x0f\n\x07gateway\x18\x02 \x01(\t\x12\x0c\n\x04port\x18\x03 \x01(\t\x12\x13\n\x0bgateway_app\x18\x04 \x01(\t\"\x89\x01\n\tUsageInfo\x12.\n\ncreateTime\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08refCount\x18\x02 \x01(\r\x12:\n\x16lastRefcountChangeTime\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"=\n\x0fVolumeResources\x12\x14\n\x0cmaxSizeBytes\x18\x01 \x01(\x04\x12\x14\n\x0c\x63urSizeBytes\x18\x02 \x01(\x04\"\xaf\x02\n\x0bZInfoVolume\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x13\n\x0b\x64isplayName\x18\x02 \x01(\t\x12-\n\x05usage\x18\x03 \x01(\x0b\x32\x1e.org.lfedge.eve.info.UsageInfo\x12\x37\n\tresources\x18\x04 \x01(\x0b\x32$.org.lfedge.eve.info.VolumeResources\x12,\n\x05state\x18\x05 \x01(\x0e\x32\x1d.org.lfedge.eve.info.ZSwState\x12\x1a\n\x12progressPercentage\x18\x06 \x01(\r\x12\x31\n\tvolumeErr\x18\x07 \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\x12\x18\n\x10generation_count\x18\x08 \x01(\x03\"(\n\x10\x43ontentResources\x12\x14\n\x0c\x63urSizeBytes\x18\x01 \x01(\x04\"\xd9\x02\n\x10ZInfoContentTree\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x13\n\x0b\x64isplayName\x18\x02 \x01(\t\x12\x0e\n\x06sha256\x18\x03 \x01(\t\x12\x38\n\tresources\x18\x04 \x01(\x0b\x32%.org.lfedge.eve.info.ContentResources\x12-\n\x05usage\x18\x05 \x01(\x0b\x32\x1e.org.lfedge.eve.info.UsageInfo\x12,\n\x05state\x18\x06 \x01(\x0e\x32\x1d.org.lfedge.eve.info.ZSwState\x12\x1a\n\x12progressPercentage\x18\x07 \x01(\r\x12+\n\x03\x65rr\x18\x08 \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\x12\x18\n\x10\x63omponentShaList\x18\t \x03(\t\x12\x18\n\x10generation_count\x18\n \x01(\x03\"\xfb\x01\n\tZInfoBlob\x12\x0e\n\x06sha256\x18\x01 \x01(\t\x12\x38\n\tresources\x18\x02 \x01(\x0b\x32%.org.lfedge.eve.info.ContentResources\x12-\n\x05usage\x18\x03 \x01(\x0b\x32\x1e.org.lfedge.eve.info.UsageInfo\x12,\n\x05state\x18\x04 \x01(\x0e\x32\x1d.org.lfedge.eve.info.ZSwState\x12\x1a\n\x12progressPercentage\x18\x05 \x01(\r\x12+\n\x03\x65rr\x18\x06 \x01(\x0b\x32\x1e.org.lfedge.eve.info.ErrorInfo\"=\n\rZInfoBlobList\x12,\n\x04\x62lob\x18\x01 \x03(\x0b\x32\x1e.org.lfedge.eve.info.ZInfoBlob\"\xea\x06\n\x08ZInfoMsg\x12.\n\x05ztype\x18\x01 \x01(\x0e\x32\x1f.org.lfedge.eve.info.ZInfoTypes\x12\r\n\x05\x64\x65vId\x18\x02 \x01(\t\x12\x31\n\x05\x64info\x18\x03 \x01(\x0b\x32 .org.lfedge.eve.info.ZInfoDeviceH\x00\x12.\n\x05\x61info\x18\x05 \x01(\x0b\x32\x1d.org.lfedge.eve.info.ZInfoAppH\x00\x12;\n\x06niinfo\x18\x0c \x01(\x0b\x32).org.lfedge.eve.info.ZInfoNetworkInstanceH\x00\x12\x31\n\x05vinfo\x18\r \x01(\x0b\x32 .org.lfedge.eve.info.ZInfoVolumeH\x00\x12\x36\n\x05\x63info\x18\x0e \x01(\x0b\x32%.org.lfedge.eve.info.ZInfoContentTreeH\x00\x12\x33\n\x05\x62info\x18\x0f \x01(\x0b\x32\".org.lfedge.eve.info.ZInfoBlobListH\x00\x12<\n\x07\x61mdinfo\x18\x10 \x01(\x0b\x32).org.lfedge.eve.info.ZInfoAppInstMetaDataH\x00\x12\x34\n\x06\x65vinfo\x18\x11 \x01(\x0b\x32\".org.lfedge.eve.info.ZInfoEdgeviewH\x00\x12\x34\n\x06hwinfo\x18\x12 \x01(\x0b\x32\".org.lfedge.eve.info.ZInfoHardwareH\x00\x12\x35\n\x07locinfo\x18\x13 \x01(\x0b\x32\".org.lfedge.eve.info.ZInfoLocationH\x00\x12<\n\tpatchInfo\x18\x14 \x01(\x0b\x32\'.org.lfedge.eve.info.ZInfoPatchEnvelopeH\x00\x12=\n\x0c\x63luster_node\x18\x16 \x01(\x0b\x32%.org.lfedge.eve.info.ZInfoClusterNodeH\x00\x12;\n\x0bntp_sources\x18\x17 \x01(\x0b\x32$.org.lfedge.eve.info.ZInfoNTPSourcesH\x00\x12/\n\x0b\x61tTimeStamp\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\r\n\x0bInfoContentJ\x04\x08\x15\x10\x16\"J\n\x0c\x43\x61pabilities\x12 \n\x18HWAssistedVirtualization\x18\x02 \x01(\x08\x12\x18\n\x10IOVirtualization\x18\x03 \x01(\x08\"j\n\x14ZInfoAppInstMetaData\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x36\n\x04type\x18\x02 \x01(\x0e\x32(.org.lfedge.eve.info.AppInstMetaDataType\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\"\xab\x01\n\rZInfoEdgeview\x12/\n\x0b\x65xpire_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x30\n\x0cstarted_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x11\n\tcount_dev\x18\x03 \x01(\r\x12\x11\n\tcount_app\x18\x04 \x01(\r\x12\x11\n\tcount_ext\x18\x05 \x01(\r\"\xd5\x02\n\rZInfoLocation\x12\x10\n\x08latitude\x18\x01 \x01(\x01\x12\x11\n\tlongitude\x18\x02 \x01(\x01\x12\x10\n\x08\x61ltitude\x18\x03 \x01(\x01\x12\x31\n\rutc_timestamp\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x43\n\x16horizontal_reliability\x18\x05 \x01(\x0e\x32#.org.lfedge.eve.info.LocReliability\x12\x41\n\x14vertical_reliability\x18\x06 \x01(\x0e\x32#.org.lfedge.eve.info.LocReliability\x12\x1e\n\x16horizontal_uncertainty\x18\x07 \x01(\x02\x12\x1c\n\x14vertical_uncertainty\x18\x08 \x01(\x02\x12\x14\n\x0clogicallabel\x18\t \x01(\t*u\n\x11\x44\x65pMetricItemType\x12\x16\n\x12\x44\x65pMetricItemOther\x10\x00\x12\x16\n\x12\x44\x65pMetricItemGauge\x10\x01\x12\x18\n\x14\x44\x65pMetricItemCounter\x10\x02\x12\x16\n\x12\x44\x65pMetricItemState\x10\x03*\xfe\x01\n\nZInfoTypes\x12\t\n\x05ZiNop\x10\x00\x12\x0c\n\x08ZiDevice\x10\x01\x12\t\n\x05ZiApp\x10\x03\x12\x15\n\x11ZiNetworkInstance\x10\x06\x12\x0c\n\x08ZiVolume\x10\x07\x12\x11\n\rZiContentTree\x10\x08\x12\x0e\n\nZiBlobList\x10\t\x12\x15\n\x11ZiAppInstMetaData\x10\n\x12\x0e\n\nZiHardware\x10\x0b\x12\x0e\n\nZiEdgeview\x10\x0c\x12\x0e\n\nZiLocation\x10\r\x12\x13\n\x0fZiPatchEnvelope\x10\x0e\x12\x10\n\x0cZiNTPSources\x10\x10\"\x04\x08\x02\x10\x02\"\x04\x08\x04\x10\x04\"\x04\x08\x05\x10\x05\"\x04\x08\x0f\x10\x0f*\x91\x03\n\x08ZSwState\x12\x0b\n\x07INVALID\x10\x00\x12\x0b\n\x07INITIAL\x10\x01\x12\x14\n\x10\x44OWNLOAD_STARTED\x10\x02\x12\x0e\n\nDOWNLOADED\x10\x03\x12\r\n\tDELIVERED\x10\x04\x12\r\n\tINSTALLED\x10\x05\x12\x0b\n\x07\x42OOTING\x10\x06\x12\x0b\n\x07RUNNING\x10\x07\x12\x0b\n\x07HALTING\x10\x08\x12\n\n\x06HALTED\x10\t\x12\x0e\n\nRESTARTING\x10\n\x12\x0b\n\x07PURGING\x10\x0b\x12\x11\n\rRESOLVING_TAG\x10\x0c\x12\x10\n\x0cRESOLVED_TAG\x10\r\x12\x13\n\x0f\x43REATING_VOLUME\x10\x0e\x12\x12\n\x0e\x43REATED_VOLUME\x10\x0f\x12\r\n\tVERIFYING\x10\x10\x12\x0c\n\x08VERIFIED\x10\x11\x12\x0b\n\x07LOADING\x10\x12\x12\n\n\x06LOADED\x10\x13\x12\x18\n\x14\x41WAITNETWORKINSTANCE\x10\x14\x12\t\n\x05\x45RROR\x10\x15\x12\x11\n\rSTART_DELAYED\x10\x16\x12\x0b\n\x07PENDING\x10\x17\x12\x0e\n\nSCHEDULING\x10\x18*\x99\x02\n\x06\x45ntity\x12\x16\n\x12\x45NTITY_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x45NTITY_BASE_OS\x10\x01\x12\x19\n\x15\x45NTITY_SYSTEM_ADAPTER\x10\x02\x12\x10\n\x0c\x45NTITY_VAULT\x10\x03\x12\x16\n\x12\x45NTITY_ATTESTATION\x10\x04\x12\x17\n\x13\x45NTITY_APP_INSTANCE\x10\x05\x12\x0f\n\x0b\x45NTITY_PORT\x10\x06\x12\x12\n\x0e\x45NTITY_NETWORK\x10\x07\x12\x1b\n\x17\x45NTITY_NETWORK_INSTANCE\x10\x08\x12\x17\n\x13\x45NTITY_CONTENT_TREE\x10\t\x12\x17\n\x13\x45NTITY_CONTENT_BLOB\x10\n\x12\x11\n\rENTITY_VOLUME\x10\x0b*c\n\x08Severity\x12\x18\n\x14SEVERITY_UNSPECIFIED\x10\x00\x12\x13\n\x0fSEVERITY_NOTICE\x10\x01\x12\x14\n\x10SEVERITY_WARNING\x10\x02\x12\x12\n\x0eSEVERITY_ERROR\x10\x03*N\n\x16HwSecurityModuleStatus\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x0c\n\x08NOTFOUND\x10\x01\x12\x0c\n\x08\x44ISABLED\x10\x02\x12\x0b\n\x07\x45NABLED\x10\x03*\x88\x01\n\x13\x44\x61taSecAtRestStatus\x12\x1b\n\x17\x44\x41TASEC_AT_REST_UNKNOWN\x10\x00\x12\x1c\n\x18\x44\x41TASEC_AT_REST_DISABLED\x10\x01\x12\x1b\n\x17\x44\x41TASEC_AT_REST_ENABLED\x10\x02\x12\x19\n\x15\x44\x41TASEC_AT_REST_ERROR\x10\x04*?\n\tPCRStatus\x12\x0f\n\x0bPCR_UNKNOWN\x10\x00\x12\x0f\n\x0bPCR_ENABLED\x10\x01\x12\x10\n\x0cPCR_DISABLED\x10\x02*M\n\x07SimType\x12\x18\n\x14SIM_TYPE_UNSPECIFIED\x10\x00\x12\x15\n\x11SIM_TYPE_PHYSICAL\x10\x01\x12\x11\n\rSIM_TYPE_ESIM\x10\x02*\xa0\x02\n\x17ZCellularOperatingState\x12*\n&Z_CELLULAR_OPERATING_STATE_UNSPECIFIED\x10\x00\x12&\n\"Z_CELLULAR_OPERATING_STATE_OFFLINE\x10\x01\x12(\n$Z_CELLULAR_OPERATING_STATE_RADIO_OFF\x10\x02\x12%\n!Z_CELLULAR_OPERATING_STATE_ONLINE\x10\x03\x12\x33\n/Z_CELLULAR_OPERATING_STATE_ONLINE_AND_CONNECTED\x10\x04\x12+\n\'Z_CELLULAR_OPERATING_STATE_UNRECOGNIZED\x10\x05*\x92\x01\n\x18ZCellularControlProtocol\x12+\n\'Z_CELLULAR_CONTROL_PROTOCOL_UNSPECIFIED\x10\x00\x12#\n\x1fZ_CELLULAR_CONTROL_PROTOCOL_QMI\x10\x01\x12$\n Z_CELLULAR_CONTROL_PROTOCOL_MBIM\x10\x02*\xb1\x02\n\x0cZDeviceState\x12\x1d\n\x19ZDEVICE_STATE_UNSPECIFIED\x10\x00\x12\x18\n\x14ZDEVICE_STATE_ONLINE\x10\x01\x12\x1b\n\x17ZDEVICE_STATE_REBOOTING\x10\x02\x12\"\n\x1eZDEVICE_STATE_MAINTENANCE_MODE\x10\x03\x12!\n\x1dZDEVICE_STATE_BASEOS_UPDATING\x10\x04\x12\x19\n\x15ZDEVICE_STATE_BOOTING\x10\x05\x12$\n ZDEVICE_STATE_PREPARING_POWEROFF\x10\x06\x12\x1e\n\x1aZDEVICE_STATE_POWERING_OFF\x10\x07\x12#\n\x1fZDEVICE_STATE_PREPARED_POWEROFF\x10\x08*\xf5\x01\n\rStorageStatus\x12\x1e\n\x1aSTORAGE_STATUS_UNSPECIFIED\x10\x00\x12\x19\n\x15STORAGE_STATUS_ONLINE\x10\x01\x12\x1b\n\x17STORAGE_STATUS_DEGRADED\x10\x02\x12\x1a\n\x16STORAGE_STATUS_FAULTED\x10\x03\x12\x1a\n\x16STORAGE_STATUS_OFFLINE\x10\x04\x12\x1a\n\x16STORAGE_STATUS_UNAVAIL\x10\x05\x12\x1a\n\x16STORAGE_STATUS_REMOVED\x10\x06\x12\x1c\n\x18STORAGE_STATUS_SUSPENDED\x10\x07*\xe3\x01\n\x0fStorageRaidType\x12!\n\x1dSTORAGE_RAID_TYPE_UNSPECIFIED\x10\x00\x12\x1b\n\x17STORAGE_RAID_TYPE_RAID0\x10\x01\x12\x1b\n\x17STORAGE_RAID_TYPE_RAID1\x10\x02\x12\x1b\n\x17STORAGE_RAID_TYPE_RAID5\x10\x03\x12\x1b\n\x17STORAGE_RAID_TYPE_RAID6\x10\x04\x12\x1b\n\x17STORAGE_RAID_TYPE_RAID7\x10\x05\x12\x1c\n\x18STORAGE_RAID_TYPE_NORAID\x10\x06*k\n\x0fStorageTypeInfo\x12!\n\x1dSTORAGE_TYPE_INFO_UNSPECIFIED\x10\x00\x12\x1a\n\x16STORAGE_TYPE_INFO_EXT4\x10\x01\x12\x19\n\x15STORAGE_TYPE_INFO_ZFS\x10\x02*\xe5\x02\n\rAPICapability\x12\x1e\n\x1a\x41PI_CAPABILITY_UNSPECIFIED\x10\x00\x12\x1f\n\x1b\x41PI_CAPABILITY_RETRY_UPDATE\x10\x01\x12\x1b\n\x17\x41PI_CAPABILITY_SHUTDOWN\x10\x02\x12)\n%API_CAPABILITY_START_DELAY_IN_SECONDS\x10\x03\x12\x1b\n\x17\x41PI_CAPABILITY_EDGEVIEW\x10\x04\x12#\n\x1f\x41PI_CAPABILITY_VOLUME_SNAPSHOTS\x10\x05\x12+\n\'API_CAPABILITY_NETWORK_INSTANCE_ROUTING\x10\x06\x12\x1c\n\x18\x41PI_CAPABILITY_BOOT_MODE\x10\x07\x12\x16\n\x12\x41PI_CAPABILITY_MTU\x10\x08\x12&\n\"API_CAPABILITY_ADAPTER_USER_LABELS\x10\t*\xb9\x03\n\nBootReason\x12\x1b\n\x17\x42OOT_REASON_UNSPECIFIED\x10\x00\x12\x15\n\x11\x42OOT_REASON_FIRST\x10\x01\x12\x1a\n\x16\x42OOT_REASON_REBOOT_CMD\x10\x02\x12\x16\n\x12\x42OOT_REASON_UPDATE\x10\x03\x12\x18\n\x14\x42OOT_REASON_FALLBACK\x10\x04\x12\x1a\n\x16\x42OOT_REASON_DISCONNECT\x10\x05\x12\x15\n\x11\x42OOT_REASON_FATAL\x10\x06\x12\x13\n\x0f\x42OOT_REASON_OOM\x10\x07\x12\x1d\n\x19\x42OOT_REASON_WATCHDOG_HUNG\x10\x08\x12\x1c\n\x18\x42OOT_REASON_WATCHDOG_PID\x10\t\x12\x16\n\x12\x42OOT_REASON_KERNEL\x10\n\x12\x1a\n\x16\x42OOT_REASON_POWER_FAIL\x10\x0b\x12\x17\n\x13\x42OOT_REASON_UNKNOWN\x10\x0c\x12\x1c\n\x18\x42OOT_REASON_VAULT_FAILED\x10\r\x12\x1c\n\x18\x42OOT_REASON_POWEROFF_CMD\x10\x0e\x12\x1b\n\x16\x42OOT_REASON_PARSE_FAIL\x10\xff\x01*\xbe\x01\n\x15MaintenanceModeReason\x12 \n\x1cMAINTENANCE_MODE_REASON_NONE\x10\x00\x12*\n&MAINTENANCE_MODE_REASON_USER_REQUESTED\x10\x01\x12+\n\'MAINTENANCE_MODE_REASON_VAULT_LOCKED_UP\x10\x02\x12*\n&MAINTENANCE_MODE_REASON_LOW_DISK_SPACE\x10\x03*\xb5\x02\n\x10\x41ttestationState\x12!\n\x1d\x41TTESTATION_STATE_UNSPECIFIED\x10\x00\x12 \n\x1c\x41TTESTATION_STATE_NONCE_WAIT\x10\x01\x12$\n ATTESTATION_STATE_TPM_QUOTE_WAIT\x10\x02\x12%\n!ATTESTATION_STATE_TPM_ESCROW_WAIT\x10\x03\x12!\n\x1d\x41TTESTATION_STATE_ATTEST_WAIT\x10\x04\x12(\n$ATTESTATION_STATE_ATTEST_ESCROW_WAIT\x10\x05\x12\"\n\x1e\x41TTESTATION_STATE_RESTART_WAIT\x10\x06\x12\x1e\n\x1a\x41TTESTATION_STATE_COMPLETE\x10\x07*\x8b\x01\n\x13\x41ppInstMetaDataType\x12 \n\x1c\x41PP_INST_META_DATA_TYPE_NONE\x10\x00\x12\'\n#APP_INST_META_DATA_TYPE_KUBE_CONFIG\x10\x01\x12)\n%APP_INST_META_DATA_TYPE_CUSTOM_STATUS\x10\x02*a\n\x0cWirelessType\x12\x1d\n\x19WIRELESS_TYPE_UNSPECIFIED\x10\x00\x12\x16\n\x12WIRELESS_TYPE_WIFI\x10\x01\x12\x1a\n\x16WIRELESS_TYPE_CELLULAR\x10\x02*q\n\x0c\x42\x61seOsStatus\x12\x08\n\x04NONE\x10\x00\x12\x0f\n\x0b\x44OWNLOADING\x10\x01\x12\x11\n\rDOWNLOAD_DONE\x10\x02\x12\x0c\n\x08UPDATING\x10\x03\x12\x0b\n\x07UPDATED\x10\x04\x12\x0c\n\x08\x46\x41LLBACK\x10\x05\x12\n\n\x06\x46\x41ILED\x10\x06*\xcb\x01\n\x0f\x42\x61seOsSubStatus\x12\x12\n\x0eNONE_SUBSTATUS\x10\x00\x12\x17\n\x13\x44OWNLOAD_INPROGRESS\x10\x01\x12\x15\n\x11VERIFY_INPROGRESS\x10\x02\x12\x17\n\x13UPDATE_INITIALIZING\x10\x03\x12\x14\n\x10UPDATE_REBOOTING\x10\x04\x12\x12\n\x0eUPDATE_TESTING\x10\x05\x12\x1c\n\x18UPDATE_NEED_TEST_CONFIRM\x10\x06\x12\x13\n\x0fUPDATE_DEFERRED\x10\x07*K\n\x0cSnapshotType\x12\x1d\n\x19SNAPSHOT_TYPE_UNSPECIFIED\x10\x00\x12\x1c\n\x18SNAPSHOT_TYPE_APP_UPDATE\x10\x01*\xb8\x01\n\x16ZInfoClusterNodeStatus\x12*\n&Z_INFO_CLUSTER_NODE_STATUS_UNSPECIFIED\x10\x00\x12$\n Z_INFO_CLUSTER_NODE_STATUS_READY\x10\x01\x12\'\n#Z_INFO_CLUSTER_NODE_STATUS_NOTREADY\x10\x02\x12#\n\x1fZ_INFO_CLUSTER_NODE_STATUS_DOWN\x10\x03*\x8f\x01\n\rZInfoVpnState\x12\x0f\n\x0bVPN_INVALID\x10\x00\x12\x0f\n\x0bVPN_INITIAL\x10\x01\x12\x12\n\x0eVPN_CONNECTING\x10\x02\x12\x13\n\x0fVPN_ESTABLISHED\x10\x03\x12\x11\n\rVPN_INSTALLED\x10\x04\x12\x0f\n\x0bVPN_REKEYED\x10\x05\x12\x0f\n\x0bVPN_DELETED\x10\n*\x85\x01\n\x15ZNetworkInstanceState\x12\x1e\n\x1aZNETINST_STATE_UNSPECIFIED\x10\x00\x12\x17\n\x13ZNETINST_STATE_INIT\x10\x01\x12\x19\n\x15ZNETINST_STATE_ONLINE\x10\x02\x12\x18\n\x14ZNETINST_STATE_ERROR\x10\x03*\x9e\x01\n\x0eLocReliability\x12\x1f\n\x1bLOC_RELIABILITY_UNSPECIFIED\x10\x00\x12\x1c\n\x18LOC_RELIABILITY_VERY_LOW\x10\x01\x12\x17\n\x13LOC_RELIABILITY_LOW\x10\x02\x12\x1a\n\x16LOC_RELIABILITY_MEDIUM\x10\x03\x12\x18\n\x14LOC_RELIABILITY_HIGH\x10\x04\x42\x39\n\x13org.lfedge.eve.infoZ\"github.com/lf-edge/eve-api/go/infob\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -33,62 +33,66 @@ _ZINFOCONFIGITEMSTATUS_UNKNOWNCONFIGITEMSENTRY._serialized_options = b'8\001' _ZINFODEVICE.fields_by_name['dormant_time']._options = None _ZINFODEVICE.fields_by_name['dormant_time']._serialized_options = b'\030\001' - _globals['_DEPMETRICITEMTYPE']._serialized_start=14968 - _globals['_DEPMETRICITEMTYPE']._serialized_end=15085 - _globals['_ZINFOTYPES']._serialized_start=15088 - _globals['_ZINFOTYPES']._serialized_end=15342 - _globals['_ZSWSTATE']._serialized_start=15345 - _globals['_ZSWSTATE']._serialized_end=15746 - _globals['_ENTITY']._serialized_start=15749 - _globals['_ENTITY']._serialized_end=16030 - _globals['_SEVERITY']._serialized_start=16032 - _globals['_SEVERITY']._serialized_end=16131 - _globals['_HWSECURITYMODULESTATUS']._serialized_start=16133 - _globals['_HWSECURITYMODULESTATUS']._serialized_end=16211 - _globals['_DATASECATRESTSTATUS']._serialized_start=16214 - _globals['_DATASECATRESTSTATUS']._serialized_end=16350 - _globals['_PCRSTATUS']._serialized_start=16352 - _globals['_PCRSTATUS']._serialized_end=16415 - _globals['_SIMTYPE']._serialized_start=16417 - _globals['_SIMTYPE']._serialized_end=16494 - _globals['_ZCELLULAROPERATINGSTATE']._serialized_start=16497 - _globals['_ZCELLULAROPERATINGSTATE']._serialized_end=16785 - _globals['_ZCELLULARCONTROLPROTOCOL']._serialized_start=16788 - _globals['_ZCELLULARCONTROLPROTOCOL']._serialized_end=16934 - _globals['_ZDEVICESTATE']._serialized_start=16937 - _globals['_ZDEVICESTATE']._serialized_end=17242 - _globals['_STORAGESTATUS']._serialized_start=17245 - _globals['_STORAGESTATUS']._serialized_end=17490 - _globals['_STORAGERAIDTYPE']._serialized_start=17493 - _globals['_STORAGERAIDTYPE']._serialized_end=17720 - _globals['_STORAGETYPEINFO']._serialized_start=17722 - _globals['_STORAGETYPEINFO']._serialized_end=17829 - _globals['_APICAPABILITY']._serialized_start=17832 - _globals['_APICAPABILITY']._serialized_end=18149 - _globals['_BOOTREASON']._serialized_start=18152 - _globals['_BOOTREASON']._serialized_end=18593 - _globals['_MAINTENANCEMODEREASON']._serialized_start=18596 - _globals['_MAINTENANCEMODEREASON']._serialized_end=18786 - _globals['_ATTESTATIONSTATE']._serialized_start=18789 - _globals['_ATTESTATIONSTATE']._serialized_end=19098 - _globals['_APPINSTMETADATATYPE']._serialized_start=19101 - _globals['_APPINSTMETADATATYPE']._serialized_end=19240 - _globals['_WIRELESSTYPE']._serialized_start=19242 - _globals['_WIRELESSTYPE']._serialized_end=19339 - _globals['_BASEOSSTATUS']._serialized_start=19341 - _globals['_BASEOSSTATUS']._serialized_end=19454 - _globals['_BASEOSSUBSTATUS']._serialized_start=19457 - _globals['_BASEOSSUBSTATUS']._serialized_end=19660 - _globals['_SNAPSHOTTYPE']._serialized_start=19662 - _globals['_SNAPSHOTTYPE']._serialized_end=19737 - _globals['_ZINFOCLUSTERNODESTATUS']._serialized_start=19740 - _globals['_ZINFOCLUSTERNODESTATUS']._serialized_end=19924 - _globals['_ZINFOVPNSTATE']._serialized_start=19927 - _globals['_ZINFOVPNSTATE']._serialized_end=20070 - _globals['_ZNETWORKINSTANCESTATE']._serialized_start=20073 - _globals['_ZNETWORKINSTANCESTATE']._serialized_end=20206 - _globals['_LOCRELIABILITY']._serialized_start=20209 - _globals['_LOCRELIABILITY']._serialized_end=20367 + _ZINFONETWORKINSTANCE.fields_by_name['CurrentUplinkIntf']._options = None + _ZINFONETWORKINSTANCE.fields_by_name['CurrentUplinkIntf']._serialized_options = b'\030\001' + _ZINFONETWORKINSTANCE.fields_by_name['CurrentUplinkAlias']._options = None + _ZINFONETWORKINSTANCE.fields_by_name['CurrentUplinkAlias']._serialized_options = b'\030\001' + _globals['_DEPMETRICITEMTYPE']._serialized_start=15132 + _globals['_DEPMETRICITEMTYPE']._serialized_end=15249 + _globals['_ZINFOTYPES']._serialized_start=15252 + _globals['_ZINFOTYPES']._serialized_end=15506 + _globals['_ZSWSTATE']._serialized_start=15509 + _globals['_ZSWSTATE']._serialized_end=15910 + _globals['_ENTITY']._serialized_start=15913 + _globals['_ENTITY']._serialized_end=16194 + _globals['_SEVERITY']._serialized_start=16196 + _globals['_SEVERITY']._serialized_end=16295 + _globals['_HWSECURITYMODULESTATUS']._serialized_start=16297 + _globals['_HWSECURITYMODULESTATUS']._serialized_end=16375 + _globals['_DATASECATRESTSTATUS']._serialized_start=16378 + _globals['_DATASECATRESTSTATUS']._serialized_end=16514 + _globals['_PCRSTATUS']._serialized_start=16516 + _globals['_PCRSTATUS']._serialized_end=16579 + _globals['_SIMTYPE']._serialized_start=16581 + _globals['_SIMTYPE']._serialized_end=16658 + _globals['_ZCELLULAROPERATINGSTATE']._serialized_start=16661 + _globals['_ZCELLULAROPERATINGSTATE']._serialized_end=16949 + _globals['_ZCELLULARCONTROLPROTOCOL']._serialized_start=16952 + _globals['_ZCELLULARCONTROLPROTOCOL']._serialized_end=17098 + _globals['_ZDEVICESTATE']._serialized_start=17101 + _globals['_ZDEVICESTATE']._serialized_end=17406 + _globals['_STORAGESTATUS']._serialized_start=17409 + _globals['_STORAGESTATUS']._serialized_end=17654 + _globals['_STORAGERAIDTYPE']._serialized_start=17657 + _globals['_STORAGERAIDTYPE']._serialized_end=17884 + _globals['_STORAGETYPEINFO']._serialized_start=17886 + _globals['_STORAGETYPEINFO']._serialized_end=17993 + _globals['_APICAPABILITY']._serialized_start=17996 + _globals['_APICAPABILITY']._serialized_end=18353 + _globals['_BOOTREASON']._serialized_start=18356 + _globals['_BOOTREASON']._serialized_end=18797 + _globals['_MAINTENANCEMODEREASON']._serialized_start=18800 + _globals['_MAINTENANCEMODEREASON']._serialized_end=18990 + _globals['_ATTESTATIONSTATE']._serialized_start=18993 + _globals['_ATTESTATIONSTATE']._serialized_end=19302 + _globals['_APPINSTMETADATATYPE']._serialized_start=19305 + _globals['_APPINSTMETADATATYPE']._serialized_end=19444 + _globals['_WIRELESSTYPE']._serialized_start=19446 + _globals['_WIRELESSTYPE']._serialized_end=19543 + _globals['_BASEOSSTATUS']._serialized_start=19545 + _globals['_BASEOSSTATUS']._serialized_end=19658 + _globals['_BASEOSSUBSTATUS']._serialized_start=19661 + _globals['_BASEOSSUBSTATUS']._serialized_end=19864 + _globals['_SNAPSHOTTYPE']._serialized_start=19866 + _globals['_SNAPSHOTTYPE']._serialized_end=19941 + _globals['_ZINFOCLUSTERNODESTATUS']._serialized_start=19944 + _globals['_ZINFOCLUSTERNODESTATUS']._serialized_end=20128 + _globals['_ZINFOVPNSTATE']._serialized_start=20131 + _globals['_ZINFOVPNSTATE']._serialized_end=20274 + _globals['_ZNETWORKINSTANCESTATE']._serialized_start=20277 + _globals['_ZNETWORKINSTANCESTATE']._serialized_end=20410 + _globals['_LOCRELIABILITY']._serialized_start=20413 + _globals['_LOCRELIABILITY']._serialized_end=20571 _globals['_DEPRECATEDMETRICITEM']._serialized_start=183 _globals['_DEPRECATEDMETRICITEM']._serialized_end=403 _globals['_ZMETIPASSIGNMENTENTRY']._serialized_start=405 @@ -194,29 +198,31 @@ _globals['_ZINFOVPN']._serialized_start=11323 _globals['_ZINFOVPN']._serialized_end=11445 _globals['_ZINFONETWORKINSTANCE']._serialized_start=11448 - _globals['_ZINFONETWORKINSTANCE']._serialized_end=12171 - _globals['_USAGEINFO']._serialized_start=12174 - _globals['_USAGEINFO']._serialized_end=12311 - _globals['_VOLUMERESOURCES']._serialized_start=12313 - _globals['_VOLUMERESOURCES']._serialized_end=12374 - _globals['_ZINFOVOLUME']._serialized_start=12377 - _globals['_ZINFOVOLUME']._serialized_end=12680 - _globals['_CONTENTRESOURCES']._serialized_start=12682 - _globals['_CONTENTRESOURCES']._serialized_end=12722 - _globals['_ZINFOCONTENTTREE']._serialized_start=12725 - _globals['_ZINFOCONTENTTREE']._serialized_end=13070 - _globals['_ZINFOBLOB']._serialized_start=13073 - _globals['_ZINFOBLOB']._serialized_end=13324 - _globals['_ZINFOBLOBLIST']._serialized_start=13326 - _globals['_ZINFOBLOBLIST']._serialized_end=13387 - _globals['_ZINFOMSG']._serialized_start=13390 - _globals['_ZINFOMSG']._serialized_end=14264 - _globals['_CAPABILITIES']._serialized_start=14266 - _globals['_CAPABILITIES']._serialized_end=14340 - _globals['_ZINFOAPPINSTMETADATA']._serialized_start=14342 - _globals['_ZINFOAPPINSTMETADATA']._serialized_end=14448 - _globals['_ZINFOEDGEVIEW']._serialized_start=14451 - _globals['_ZINFOEDGEVIEW']._serialized_end=14622 - _globals['_ZINFOLOCATION']._serialized_start=14625 - _globals['_ZINFOLOCATION']._serialized_end=14966 + _globals['_ZINFONETWORKINSTANCE']._serialized_end=12243 + _globals['_IPROUTE']._serialized_start=12245 + _globals['_IPROUTE']._serialized_end=12335 + _globals['_USAGEINFO']._serialized_start=12338 + _globals['_USAGEINFO']._serialized_end=12475 + _globals['_VOLUMERESOURCES']._serialized_start=12477 + _globals['_VOLUMERESOURCES']._serialized_end=12538 + _globals['_ZINFOVOLUME']._serialized_start=12541 + _globals['_ZINFOVOLUME']._serialized_end=12844 + _globals['_CONTENTRESOURCES']._serialized_start=12846 + _globals['_CONTENTRESOURCES']._serialized_end=12886 + _globals['_ZINFOCONTENTTREE']._serialized_start=12889 + _globals['_ZINFOCONTENTTREE']._serialized_end=13234 + _globals['_ZINFOBLOB']._serialized_start=13237 + _globals['_ZINFOBLOB']._serialized_end=13488 + _globals['_ZINFOBLOBLIST']._serialized_start=13490 + _globals['_ZINFOBLOBLIST']._serialized_end=13551 + _globals['_ZINFOMSG']._serialized_start=13554 + _globals['_ZINFOMSG']._serialized_end=14428 + _globals['_CAPABILITIES']._serialized_start=14430 + _globals['_CAPABILITIES']._serialized_end=14504 + _globals['_ZINFOAPPINSTMETADATA']._serialized_start=14506 + _globals['_ZINFOAPPINSTMETADATA']._serialized_end=14612 + _globals['_ZINFOEDGEVIEW']._serialized_start=14615 + _globals['_ZINFOEDGEVIEW']._serialized_end=14786 + _globals['_ZINFOLOCATION']._serialized_start=14789 + _globals['_ZINFOLOCATION']._serialized_end=15130 # @@protoc_insertion_point(module_scope) diff --git a/python/metrics/metrics_pb2.py b/python/metrics/metrics_pb2.py index d075d80f..40be1b56 100644 --- a/python/metrics/metrics_pb2.py +++ b/python/metrics/metrics_pb2.py @@ -15,7 +15,7 @@ from evecommon import evecommon_pb2 as evecommon_dot_evecommon__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15metrics/metrics.proto\x12\x16org.lfedge.eve.metrics\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x19\x65vecommon/evecommon.proto\"b\n\x0cmemoryMetric\x12\x0f\n\x07usedMem\x18\x02 \x01(\r\x12\x10\n\x08\x61vailMem\x18\x03 \x01(\r\x12\x16\n\x0eusedPercentage\x18\x04 \x01(\x01\x12\x17\n\x0f\x61vailPercentage\x18\x05 \x01(\x01\"6\n\x0f\x41ppMemoryMetric\x12\x13\n\x0b\x61llocatedMB\x18\x01 \x01(\r\x12\x0e\n\x06usedMB\x18\x02 \x01(\r\"m\n\x12\x44\x65viceMemoryMetric\x12\x10\n\x08memoryMB\x18\x01 \x01(\r\x12\x18\n\x10\x61llocated_appsMB\x18\x02 \x01(\r\x12\x17\n\x0f\x61llocated_eveMB\x18\x03 \x01(\r\x12\x12\n\nused_eveMB\x18\x04 \x01(\r\"\xaa\x02\n\rnetworkMetric\x12\r\n\x05iName\x18\x01 \x01(\t\x12\r\n\x05\x61lias\x18\x14 \x01(\t\x12\x0f\n\x07txBytes\x18\x02 \x01(\x04\x12\x0f\n\x07rxBytes\x18\x03 \x01(\x04\x12\x0f\n\x07txDrops\x18\x04 \x01(\x04\x12\x0f\n\x07rxDrops\x18\x05 \x01(\x04\x12\x0e\n\x06txPkts\x18\x08 \x01(\x04\x12\x0e\n\x06rxPkts\x18\t \x01(\x04\x12\x10\n\x08txErrors\x18\n \x01(\x04\x12\x10\n\x08rxErrors\x18\x0b \x01(\x04\x12\x12\n\ntxAclDrops\x18\x0c \x01(\x04\x12\x12\n\nrxAclDrops\x18\r \x01(\x04\x12\x1b\n\x13txAclRateLimitDrops\x18\x0e \x01(\x04\x12\x1b\n\x13rxAclRateLimitDrops\x18\x0f \x01(\x04\x12\x11\n\tlocalName\x18\x10 \x01(\t\"\xb2\x01\n\x0e\x43\x65llularMetric\x12\x14\n\x0clogicallabel\x18\x01 \x01(\t\x12G\n\x0fsignal_strength\x18\x02 \x01(\x0b\x32..org.lfedge.eve.metrics.CellularSignalStrength\x12\x41\n\x0cpacket_stats\x18\x03 \x01(\x0b\x32+.org.lfedge.eve.metrics.CellularPacketStats\"O\n\x16\x43\x65llularSignalStrength\x12\x0c\n\x04rssi\x18\x01 \x01(\x05\x12\x0c\n\x04rsrq\x18\x02 \x01(\x05\x12\x0c\n\x04rsrp\x18\x03 \x01(\x05\x12\x0b\n\x03snr\x18\x04 \x01(\x05\"y\n\x13\x43\x65llularPacketStats\x12\x30\n\x02rx\x18\x01 \x01(\x0b\x32$.org.lfedge.eve.metrics.NetworkStats\x12\x30\n\x02tx\x18\x02 \x01(\x0b\x32$.org.lfedge.eve.metrics.NetworkStats\"\xfc\x01\n\x0ezedcloudMetric\x12\x0e\n\x06ifName\x18\x01 \x01(\t\x12\x10\n\x08\x66\x61ilures\x18\x02 \x01(\x04\x12\x0f\n\x07success\x18\x03 \x01(\x04\x12/\n\x0blastFailure\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0blastSuccess\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12:\n\nurlMetrics\x18\x06 \x03(\x0b\x32&.org.lfedge.eve.metrics.urlcloudMetric\x12\x19\n\x11\x61uthVerifyFailure\x18\x07 \x01(\x04\"\xd7\x01\n\x0eurlcloudMetric\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x13\n\x0btryMsgCount\x18\x02 \x01(\x03\x12\x14\n\x0ctryByteCount\x18\x03 \x01(\x03\x12\x14\n\x0csentMsgCount\x18\x04 \x01(\x03\x12\x15\n\rsentByteCount\x18\x05 \x01(\x03\x12\x14\n\x0crecvMsgCount\x18\x06 \x01(\x03\x12\x15\n\rrecvByteCount\x18\x07 \x01(\x03\x12\x18\n\x10total_time_spent\x18\x08 \x01(\x03\x12\x19\n\x11sess_resume_count\x18\t \x01(\x03\"\xe5\x01\n\x0c\x43ipherMetric\x12\x12\n\nagent_name\x18\x01 \x01(\t\x12\x15\n\rfailure_count\x18\x02 \x01(\x04\x12\x15\n\rsuccess_count\x18\x03 \x01(\x04\x12\x30\n\x0clast_failure\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x30\n\x0clast_success\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x02tc\x18\x06 \x03(\x0b\x32#.org.lfedge.eve.metrics.TypeCounter\"U\n\x0bTypeCounter\x12\x37\n\nerror_code\x18\x01 \x01(\x0e\x32#.org.lfedge.eve.metrics.CipherError\x12\r\n\x05\x63ount\x18\x02 \x01(\x04\"p\n\x0c\x61ppCpuMetric\x12*\n\x06upTime\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\r\n\x05total\x18\x05 \x01(\x04\x12\x13\n\x0bsystemTotal\x18\x06 \x01(\x04\x12\x10\n\x08total_ns\x18\x07 \x01(\x04\"\xac\x03\n\x12StorageVDevMetrics\x12\x16\n\x0evolume_u_u_i_d\x18\x01 \x01(\t\x12\r\n\x05\x61lloc\x18\x02 \x01(\x04\x12\r\n\x05total\x18\x03 \x01(\x04\x12\x16\n\x0e\x64\x65\x66lated_space\x18\x04 \x01(\x04\x12\x18\n\x10replaceable_size\x18\x05 \x01(\x04\x12\x17\n\x0f\x65xpandable_size\x18\x06 \x01(\x04\x12\x13\n\x0bread_errors\x18\x07 \x01(\x04\x12\x14\n\x0cwrite_errors\x18\x08 \x01(\x04\x12\x17\n\x0f\x63hecksum_errors\x18\t \x01(\x04\x12\x12\n\nbytes_read\x18\n \x01(\x04\x12\x13\n\x0b\x62ytes_write\x18\x0b \x01(\x04\x12\x16\n\x0eops_count_read\x18\x0c \x01(\x04\x12\x17\n\x0fops_count_write\x18\r \x01(\x04\x12\x18\n\x10i_os_in_progress\x18\x0e \x01(\x04\x12\x12\n\nread_ticks\x18\x0f \x01(\x04\x12\x13\n\x0bwrite_ticks\x18\x10 \x01(\x04\x12\x18\n\x10i_os_total_ticks\x18\x11 \x01(\x04\x12\x1a\n\x12weighted_i_o_ticks\x18\x12 \x01(\x04\"\x8b\x01\n\x11StorageDiskMetric\x12\x39\n\tdisk_name\x18\x01 \x01(\x0b\x32&.org.lfedge.eve.common.DiskDescription\x12;\n\x07metrics\x18\x02 \x01(\x0b\x32*.org.lfedge.eve.metrics.StorageVDevMetrics\"\xe0\x01\n\x15StorageChildrenMetric\x12\x0f\n\x07g_u_i_d\x18\x01 \x01(\x04\x12\x38\n\x05\x64isks\x18\x02 \x03(\x0b\x32).org.lfedge.eve.metrics.StorageDiskMetric\x12?\n\x08\x63hildren\x18\x03 \x03(\x0b\x32-.org.lfedge.eve.metrics.StorageChildrenMetric\x12;\n\x07metrics\x18\x04 \x01(\x0b\x32*.org.lfedge.eve.metrics.StorageVDevMetrics\"\xd9\x02\n\rStorageMetric\x12\x11\n\tpool_name\x18\x01 \x01(\t\x12\x33\n\x0f\x63ollection_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x41\n\rzpool_metrics\x18\x06 \x01(\x0b\x32*.org.lfedge.eve.metrics.StorageVDevMetrics\x12H\n\x11\x63hildren_datasets\x18\x07 \x03(\x0b\x32-.org.lfedge.eve.metrics.StorageChildrenMetric\x12\x38\n\x05\x64isks\x18\x08 \x03(\x0b\x32).org.lfedge.eve.metrics.StorageDiskMetric\x12\x39\n\x05zvols\x18\t \x03(\x0b\x32*.org.lfedge.eve.metrics.StorageVDevMetrics\"\xea\x08\n\x0c\x64\x65viceMetric\x12\x34\n\x06memory\x18\x02 \x01(\x0b\x32$.org.lfedge.eve.metrics.memoryMetric\x12\x36\n\x07network\x18\x03 \x03(\x0b\x32%.org.lfedge.eve.metrics.networkMetric\x12\x38\n\x08zedcloud\x18\x04 \x03(\x0b\x32&.org.lfedge.eve.metrics.zedcloudMetric\x12\x30\n\x04\x64isk\x18\x06 \x03(\x0b\x32\".org.lfedge.eve.metrics.diskMetric\x12\x37\n\tcpuMetric\x18\x07 \x01(\x0b\x32$.org.lfedge.eve.metrics.appCpuMetric\x12\x37\n\x0bmetricItems\x18\x08 \x03(\x0b\x32\".org.lfedge.eve.metrics.MetricItem\x12 \n\x18runtimeStorageOverheadMB\x18\t \x01(\x04\x12\x1b\n\x13\x61ppRunTimeStorageMB\x18\n \x01(\x04\x12\x44\n\x16systemServicesMemoryMB\x18\x0b \x01(\x0b\x32$.org.lfedge.eve.metrics.memoryMetric\x12.\n\x03log\x18\x0c \x01(\x0b\x32!.org.lfedge.eve.metrics.logMetric\x12\x34\n\x06\x63ipher\x18\r \x03(\x0b\x32$.org.lfedge.eve.metrics.CipherMetric\x12.\n\x03\x61\x63l\x18\x0e \x01(\x0b\x32!.org.lfedge.eve.metrics.AclMetric\x12\x34\n\x06newlog\x18\x0f \x01(\x0b\x32$.org.lfedge.eve.metrics.newlogMetric\x12\x33\n\x06zedbox\x18\x10 \x01(\x0b\x32#.org.lfedge.eve.metrics.zedboxStats\x12@\n\x0c\x64\x65viceMemory\x18\x11 \x01(\x0b\x32*.org.lfedge.eve.metrics.DeviceMemoryMetric\x12\x38\n\x14last_received_config\x18\x12 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x39\n\x15last_processed_config\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x38\n\x08\x63\x65llular\x18\x14 \x03(\x0b\x32&.org.lfedge.eve.metrics.CellularMetric\x12\x36\n\x07\x66lowlog\x18\x15 \x01(\x0b\x32%.org.lfedge.eve.metrics.FlowlogMetric\x12\x1f\n\x17\x64ormant_time_in_seconds\x18\x16 \x01(\x04\x12>\n\x0fstorage_metrics\x18\x17 \x03(\x0b\x32%.org.lfedge.eve.metrics.StorageMetric\"%\n\tAclMetric\x12\x18\n\x10total_rule_count\x18\x01 \x01(\x04\"\xe4\x02\n\x12\x61ppContainerMetric\x12\x18\n\x10\x61ppContainerName\x18\x01 \x01(\t\x12\x0e\n\x06status\x18\x02 \x01(\t\x12\x0c\n\x04PIDs\x18\x03 \x01(\r\x12\x31\n\x03\x63pu\x18\x04 \x01(\x0b\x32$.org.lfedge.eve.metrics.appCpuMetric\x12\x34\n\x06memory\x18\x05 \x01(\x0b\x32$.org.lfedge.eve.metrics.memoryMetric\x12\x36\n\x07network\x18\x06 \x01(\x0b\x32%.org.lfedge.eve.metrics.networkMetric\x12\x30\n\x04\x64isk\x18\x07 \x01(\x0b\x32\".org.lfedge.eve.metrics.diskMetric\x12\x43\n\x12\x61ppContainerMemory\x18\x08 \x01(\x0b\x32\'.org.lfedge.eve.metrics.AppMemoryMetric\"\xd2\x01\n\nMetricItem\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x04type\x18\x02 \x01(\x0e\x32&.org.lfedge.eve.metrics.MetricItemType\x12\x13\n\tboolValue\x18\x03 \x01(\x08H\x00\x12\x15\n\x0buint32Value\x18\x04 \x01(\rH\x00\x12\x15\n\x0buint64Value\x18\x05 \x01(\x04H\x00\x12\x14\n\nfloatValue\x18\x06 \x01(\x02H\x00\x12\x15\n\x0bstringValue\x18\x07 \x01(\tH\x00\x42\x11\n\x0fmetricItemValue\"\xa6\x01\n\ndiskMetric\x12\x0c\n\x04\x64isk\x18\x01 \x01(\t\x12\x11\n\tmountPath\x18\x02 \x01(\t\x12\x11\n\treadBytes\x18\x03 \x01(\x04\x12\x12\n\nwriteBytes\x18\x04 \x01(\x04\x12\x11\n\treadCount\x18\x05 \x01(\x04\x12\x12\n\nwriteCount\x18\x06 \x01(\x04\x12\r\n\x05total\x18\x07 \x01(\x04\x12\x0c\n\x04used\x18\x08 \x01(\x04\x12\x0c\n\x04\x66ree\x18\t \x01(\x04\"a\n\rappDiskMetric\x12\x0c\n\x04\x64isk\x18\x01 \x01(\t\x12\x13\n\x0bprovisioned\x18\x02 \x01(\x04\x12\x0c\n\x04used\x18\x03 \x01(\x04\x12\x10\n\x08\x64iskType\x18\x04 \x01(\t\x12\r\n\x05\x64irty\x18\x05 \x01(\x08\"\xd8\x03\n\tappMetric\x12\r\n\x05\x41ppID\x18\x01 \x01(\t\x12\x12\n\nappVersion\x18\n \x01(\t\x12\x0f\n\x07\x41ppName\x18\x02 \x01(\t\x12\x31\n\x03\x63pu\x18\x03 \x01(\x0b\x32$.org.lfedge.eve.metrics.appCpuMetric\x12\x34\n\x06memory\x18\x04 \x01(\x0b\x32$.org.lfedge.eve.metrics.memoryMetric\x12\x36\n\x07network\x18\x05 \x03(\x0b\x32%.org.lfedge.eve.metrics.networkMetric\x12\x33\n\x04\x64isk\x18\x06 \x03(\x0b\x32%.org.lfedge.eve.metrics.appDiskMetric\x12=\n\tcontainer\x18\x07 \x03(\x0b\x32*.org.lfedge.eve.metrics.appContainerMetric\x12:\n\tappMemory\x18\x08 \x01(\x0b\x32\'.org.lfedge.eve.metrics.AppMemoryMetric\x12\x46\n\x0epatch_envelope\x18\t \x03(\x0b\x32..org.lfedge.eve.metrics.AppPatchEnvelopeMetric\"m\n\x16\x41ppPatchEnvelopeMetric\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x1c\n\x14patch_api_call_count\x18\x03 \x01(\x04\x12\x16\n\x0e\x64ownload_count\x18\x04 \x01(\x04\"\xba\x05\n\tlogMetric\x12\x1b\n\x13numDeviceEventsSent\x18\x01 \x01(\x04\x12\x1c\n\x14numDeviceBundlesSent\x18\x02 \x01(\x04\x12\x18\n\x10numAppEventsSent\x18\x03 \x01(\x04\x12\x19\n\x11numAppBundlesSent\x18\x04 \x01(\x04\x12\x17\n\x0fnum4xxResponses\x18\x05 \x01(\x04\x12<\n\x18lastDeviceBundleSendTime\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x39\n\x15lastAppBundleSendTime\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1f\n\x17isLogProcessingDeferred\x18\x08 \x01(\x08\x12\x18\n\x10numTimesDeferred\x18\t \x01(\x04\x12\x34\n\x10lastLogDeferTime\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1b\n\x13totalDeviceLogInput\x18\r \x01(\x04\x12\x18\n\x10totalAppLogInput\x18\x0e \x01(\x04\x12\x1c\n\x14numDeviceEventErrors\x18\x0f \x01(\x04\x12\x19\n\x11numAppEventErrors\x18\x10 \x01(\x04\x12%\n\x1dnumDeviceBundleProtoBytesSent\x18\x11 \x01(\x04\x12\"\n\x1anumAppBundleProtoBytesSent\x18\x12 \x01(\x04\x12J\n\rinput_sources\x18\x13 \x03(\x0b\x32\x33.org.lfedge.eve.metrics.logMetric.InputSourcesEntry\x1a\x33\n\x11InputSourcesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x04:\x02\x38\x01\")\n\x07PktStat\x12\x0f\n\x07Packets\x18\x01 \x01(\x04\x12\r\n\x05\x42ytes\x18\x02 \x01(\x04\"\xda\x01\n\x0bZMetricConn\x12/\n\x06InPkts\x18\x01 \x01(\x0b\x32\x1f.org.lfedge.eve.metrics.PktStat\x12\x30\n\x07OutPkts\x18\x02 \x01(\x0b\x32\x1f.org.lfedge.eve.metrics.PktStat\x12\x30\n\x07\x45rrPkts\x18\x03 \x01(\x0b\x32\x1f.org.lfedge.eve.metrics.PktStat\x12\x36\n\rCarierErrPkts\x18\x04 \x01(\x0b\x32\x1f.org.lfedge.eve.metrics.PktStat\"\xe6\x01\n\nZMetricVpn\x12\x35\n\x08\x43onnStat\x18\x01 \x01(\x0b\x32#.org.lfedge.eve.metrics.ZMetricConn\x12\x34\n\x07IkeStat\x18\x02 \x01(\x0b\x32#.org.lfedge.eve.metrics.ZMetricConn\x12\x35\n\x08NatTStat\x18\x03 \x01(\x0b\x32#.org.lfedge.eve.metrics.ZMetricConn\x12\x34\n\x07\x45spStat\x18\x04 \x01(\x0b\x32#.org.lfedge.eve.metrics.ZMetricConn\"\r\n\x0bZMetricNone\":\n\x0fZMetricFlowLink\x12\x10\n\x06subNet\x18\x01 \x01(\tH\x00\x12\r\n\x05spiId\x18\x03 \x01(\tB\x06\n\x04Link\"\x9a\x01\n\x13ZMetricFlowEndPoint\x12\x10\n\x06ipAddr\x18\x01 \x01(\tH\x00\x12\x35\n\x04link\x18\x05 \x03(\x0b\x32\'.org.lfedge.eve.metrics.ZMetricFlowLink\x12.\n\x05stats\x18\n \x01(\x0b\x32\x1f.org.lfedge.eve.metrics.PktStatB\n\n\x08\x45ndpoint\"\xc6\x01\n\x0bZMetricFlow\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04type\x18\x03 \x01(\r\x12\x0f\n\x07\x65stTime\x18\x05 \x01(\x04\x12>\n\tlEndPoint\x18\n \x01(\x0b\x32+.org.lfedge.eve.metrics.ZMetricFlowEndPoint\x12>\n\trEndPoint\x18\x0b \x03(\x0b\x32+.org.lfedge.eve.metrics.ZMetricFlowEndPoint\"W\n\x0cNetworkStats\x12\x14\n\x0ctotalPackets\x18\x01 \x01(\x04\x12\x0e\n\x06\x65rrors\x18\x02 \x01(\x04\x12\r\n\x05\x64rops\x18\x03 \x01(\x04\x12\x12\n\ntotalBytes\x18\x04 \x01(\x04\"y\n\x13ZMetricNetworkStats\x12\x30\n\x02rx\x18\x01 \x01(\x0b\x32$.org.lfedge.eve.metrics.NetworkStats\x12\x30\n\x02tx\x18\x02 \x01(\x0b\x32$.org.lfedge.eve.metrics.NetworkStats\"\xaf\x03\n\x0fZProbeNIMetrics\x12\x13\n\x0b\x63urrentIntf\x18\x01 \x01(\t\x12\x16\n\x0eremoteEndpoint\x18\x02 \x01(\t\x12\x10\n\x08pingIntv\x18\x03 \x01(\r\x12\x16\n\x0eremotePingIntv\x18\x04 \x01(\r\x12\x11\n\tuplinkCnt\x18\x05 \x01(\r\x12L\n\nintfMetric\x18\n \x03(\x0b\x32\x38.org.lfedge.eve.metrics.ZProbeNIMetrics.ZProbeIntfMetric\x1a\xe3\x01\n\x10ZProbeIntfMetric\x12\x10\n\x08intfName\x18\x0b \x01(\t\x12\x16\n\x0egatewayNexhtop\x18\x0c \x01(\t\x12\x11\n\tgatewayUP\x18\r \x01(\x08\x12\x14\n\x0cremoteHostUP\x18\x0e \x01(\x08\x12\x16\n\x0enexthopUpCount\x18\x0f \x01(\r\x12\x18\n\x10nexthopDownCount\x18\x10 \x01(\r\x12\x15\n\rremoteUpCount\x18\x11 \x01(\r\x12\x17\n\x0fremoteDownCount\x18\x12 \x01(\r\x12\x1a\n\x12remoteProbeLatency\x18\x13 \x01(\r\"\xa0\x04\n\x16ZMetricNetworkInstance\x12\x11\n\tnetworkID\x18\x02 \x01(\t\x12\x16\n\x0enetworkVersion\x18\x03 \x01(\t\x12\x10\n\x08instType\x18\x05 \x01(\r\x12\x13\n\x0b\x64isplayname\x18\x06 \x01(\t\x12\x11\n\tactivated\x18\x07 \x01(\x08\x12\x36\n\x07network\x18\n \x03(\x0b\x32%.org.lfedge.eve.metrics.networkMetric\x12<\n\x0bprobeMetric\x18\x0c \x01(\x0b\x32\'.org.lfedge.eve.metrics.ZProbeNIMetrics\x12\x32\n\x04vpnm\x18\x14 \x01(\x0b\x32\".org.lfedge.eve.metrics.ZMetricVpnH\x00\x12\x34\n\x05nonem\x18\x16 \x01(\x0b\x32#.org.lfedge.eve.metrics.ZMetricNoneH\x00\x12\x36\n\tflowStats\x18\x1e \x03(\x0b\x32#.org.lfedge.eve.metrics.ZMetricFlow\x12\x41\n\x0cnetworkStats\x18( \x01(\x0b\x32+.org.lfedge.eve.metrics.ZMetricNetworkStats\x12\x33\n\tvlan_info\x18) \x01(\x0b\x32 .org.lfedge.eve.metrics.vlanInfoB\x11\n\x0fInstanceContent\"\xba\x01\n\rZMetricVolume\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x13\n\x0b\x64isplayName\x18\x02 \x01(\t\x12\x11\n\treadBytes\x18\x03 \x01(\x04\x12\x12\n\nwriteBytes\x18\x04 \x01(\x04\x12\x11\n\treadCount\x18\x05 \x01(\x04\x12\x12\n\nwriteCount\x18\x06 \x01(\x04\x12\x12\n\ntotalBytes\x18\x07 \x01(\x04\x12\x11\n\tusedBytes\x18\x08 \x01(\x04\x12\x11\n\tfreeBytes\x18\t \x01(\x04\"\xb2\x02\n\x0eZMetricProcess\x12\x0b\n\x03pid\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x14\n\x0cuser_process\x18\x03 \x01(\x08\x12\x0f\n\x07watched\x18\x04 \x01(\x08\x12\x0f\n\x07num_fds\x18\x05 \x01(\x05\x12\x13\n\x0bnum_threads\x18\x06 \x01(\x05\x12\x11\n\tuser_time\x18\x07 \x01(\x01\x12\x13\n\x0bsystem_time\x18\x08 \x01(\x01\x12\x13\n\x0b\x63pu_percent\x18\t \x01(\x01\x12/\n\x0b\x63reate_time\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08vm_bytes\x18\x0b \x01(\x04\x12\x11\n\trss_bytes\x18\x0c \x01(\x04\x12\x16\n\x0ememory_percent\x18\r \x01(\x02\x12\r\n\x05stack\x18\x0e \x01(\t\"\xe3\x02\n\nZMetricMsg\x12\r\n\x05\x64\x65vID\x18\x01 \x01(\t\x12/\n\x0b\x61tTimeStamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x32\n\x02\x64m\x18\x04 \x01(\x0b\x32$.org.lfedge.eve.metrics.deviceMetricH\x00\x12-\n\x02\x61m\x18\x05 \x03(\x0b\x32!.org.lfedge.eve.metrics.appMetric\x12:\n\x02nm\x18\x07 \x03(\x0b\x32..org.lfedge.eve.metrics.ZMetricNetworkInstance\x12\x31\n\x02vm\x18\x08 \x03(\x0b\x32%.org.lfedge.eve.metrics.ZMetricVolume\x12\x32\n\x02pr\x18\t \x03(\x0b\x32&.org.lfedge.eve.metrics.ZMetricProcessB\x0f\n\rMetricContent\"\x9c\x06\n\x0cnewlogMetric\x12\x14\n\x0c\x66\x61iledToSend\x18\x01 \x01(\x08\x12\x35\n\x11\x66\x61ilSentStartTime\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x18\n\x10totalBytesUpload\x18\x03 \x01(\x04\x12\x17\n\x0fnum4xxResponses\x18\x04 \x01(\r\x12\x19\n\x11\x63urrentUploadIntv\x18\x05 \x01(\r\x12\x16\n\x0elogfileTimeout\x18\x06 \x01(\r\x12\x17\n\x0fmaxGzipFileSize\x18\x07 \x01(\r\x12\x17\n\x0f\x61vgGzipFileSize\x18\x08 \x01(\r\x12\x15\n\rmimUploadMsec\x18\t \x01(\r\x12\x15\n\rmaxUploadMsec\x18\n \x01(\r\x12\x15\n\ravgUploadMsec\x18\x0b \x01(\r\x12\x16\n\x0elastUploadMsec\x18\x0c \x01(\r\x12\x19\n\x11\x63urrentCPULoadPct\x18\r \x01(\x02\x12\x19\n\x11\x61verageCPULoadPct\x18\x0e \x01(\x02\x12\x1b\n\x13\x63urrentProcessDelay\x18\x0f \x01(\r\x12\x1b\n\x13\x61verageProcessDelay\x18\x10 \x01(\r\x12=\n\rdeviceMetrics\x18\x11 \x01(\x0b\x32&.org.lfedge.eve.metrics.logfileMetrics\x12:\n\nappMetrics\x18\x12 \x01(\x0b\x32&.org.lfedge.eve.metrics.logfileMetrics\x12X\n\x13top10_input_sources\x18\x13 \x03(\x0b\x32;.org.lfedge.eve.metrics.newlogMetric.Top10InputSourcesEntry\x12\x18\n\x10gzipFilesRemoved\x18\x14 \x01(\r\x12\x16\n\x0etooManyRequest\x18\x15 \x01(\r\x12\x19\n\x11skipUploadAppFile\x18\x16 \x01(\r\x1a\x38\n\x16Top10InputSourcesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\"\xb6\x02\n\x0elogfileMetrics\x12\x17\n\x0fnumGzipFileSent\x18\x01 \x01(\x04\x12\x19\n\x11numGzipBytesWrite\x18\x02 \x01(\x04\x12\x15\n\rnumBytesWrite\x18\x03 \x01(\x04\x12\x18\n\x10numGzipFileInDir\x18\x04 \x01(\r\x12\x15\n\rnumInputEvent\x18\x05 \x01(\x04\x12\x18\n\x10numGzipFileRetry\x18\x06 \x01(\x04\x12\x1c\n\x14numGzipFileKeptLocal\x18\x07 \x01(\r\x12\x36\n\x12recentGzipFileTime\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x38\n\x14lastGzipFileSendTime\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"$\n\x0bzedboxStats\x12\x15\n\rnumGoRoutines\x18\x01 \x01(\r\"\x9d\x01\n\x08vlanInfo\x12\x17\n\x0fnum_trunk_ports\x18\x01 \x01(\r\x12\x45\n\x0bvlan_counts\x18\x02 \x03(\x0b\x32\x30.org.lfedge.eve.metrics.vlanInfo.VlanCountsEntry\x1a\x31\n\x0fVlanCountsEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\"\xc1\x01\n\rFlowlogMetric\x12\x39\n\x08messages\x18\x01 \x01(\x0b\x32\'.org.lfedge.eve.metrics.FlowlogCounters\x12\x36\n\x05\x66lows\x18\x02 \x01(\x0b\x32\'.org.lfedge.eve.metrics.FlowlogCounters\x12=\n\x0c\x64ns_requests\x18\x03 \x01(\x0b\x32\'.org.lfedge.eve.metrics.FlowlogCounters\"J\n\x0f\x46lowlogCounters\x12\x0f\n\x07success\x18\x01 \x01(\x04\x12\r\n\x05\x64rops\x18\x02 \x01(\x04\x12\x17\n\x0f\x66\x61iled_attempts\x18\x03 \x01(\x04*2\n\x0cZmetricTypes\x12\t\n\x05ZmNop\x10\x00\x12\x0c\n\x08ZmDevice\x10\x01\x12\t\n\x05ZmApp\x10\x03*\x85\x02\n\x0b\x43ipherError\x12\x18\n\x14\x43IPHER_ERROR_INVALID\x10\x00\x12\x1a\n\x16\x43IPHER_ERROR_NOT_READY\x10\x01\x12\x1f\n\x1b\x43IPHER_ERROR_DECRYPT_FAILED\x10\x02\x12!\n\x1d\x43IPHER_ERROR_UNMARSHAL_FAILED\x10\x03\x12#\n\x1f\x43IPHER_ERROR_CLEARTEXT_FALLBACK\x10\x04\x12!\n\x1d\x43IPHER_ERROR_MISSING_FALLBACK\x10\x05\x12\x1a\n\x16\x43IPHER_ERROR_NO_CIPHER\x10\x06\x12\x18\n\x14\x43IPHER_ERROR_NO_DATA\x10\x07*f\n\x0eMetricItemType\x12\x13\n\x0fMetricItemOther\x10\x00\x12\x13\n\x0fMetricItemGauge\x10\x01\x12\x15\n\x11MetricItemCounter\x10\x02\x12\x13\n\x0fMetricItemState\x10\x03\x42?\n\x16org.lfedge.eve.metricsZ%github.com/lf-edge/eve-api/go/metricsb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x15metrics/metrics.proto\x12\x16org.lfedge.eve.metrics\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x19\x65vecommon/evecommon.proto\"b\n\x0cmemoryMetric\x12\x0f\n\x07usedMem\x18\x02 \x01(\r\x12\x10\n\x08\x61vailMem\x18\x03 \x01(\r\x12\x16\n\x0eusedPercentage\x18\x04 \x01(\x01\x12\x17\n\x0f\x61vailPercentage\x18\x05 \x01(\x01\"6\n\x0f\x41ppMemoryMetric\x12\x13\n\x0b\x61llocatedMB\x18\x01 \x01(\r\x12\x0e\n\x06usedMB\x18\x02 \x01(\r\"m\n\x12\x44\x65viceMemoryMetric\x12\x10\n\x08memoryMB\x18\x01 \x01(\r\x12\x18\n\x10\x61llocated_appsMB\x18\x02 \x01(\r\x12\x17\n\x0f\x61llocated_eveMB\x18\x03 \x01(\r\x12\x12\n\nused_eveMB\x18\x04 \x01(\r\"\xaa\x02\n\rnetworkMetric\x12\r\n\x05iName\x18\x01 \x01(\t\x12\r\n\x05\x61lias\x18\x14 \x01(\t\x12\x0f\n\x07txBytes\x18\x02 \x01(\x04\x12\x0f\n\x07rxBytes\x18\x03 \x01(\x04\x12\x0f\n\x07txDrops\x18\x04 \x01(\x04\x12\x0f\n\x07rxDrops\x18\x05 \x01(\x04\x12\x0e\n\x06txPkts\x18\x08 \x01(\x04\x12\x0e\n\x06rxPkts\x18\t \x01(\x04\x12\x10\n\x08txErrors\x18\n \x01(\x04\x12\x10\n\x08rxErrors\x18\x0b \x01(\x04\x12\x12\n\ntxAclDrops\x18\x0c \x01(\x04\x12\x12\n\nrxAclDrops\x18\r \x01(\x04\x12\x1b\n\x13txAclRateLimitDrops\x18\x0e \x01(\x04\x12\x1b\n\x13rxAclRateLimitDrops\x18\x0f \x01(\x04\x12\x11\n\tlocalName\x18\x10 \x01(\t\"\xb2\x01\n\x0e\x43\x65llularMetric\x12\x14\n\x0clogicallabel\x18\x01 \x01(\t\x12G\n\x0fsignal_strength\x18\x02 \x01(\x0b\x32..org.lfedge.eve.metrics.CellularSignalStrength\x12\x41\n\x0cpacket_stats\x18\x03 \x01(\x0b\x32+.org.lfedge.eve.metrics.CellularPacketStats\"O\n\x16\x43\x65llularSignalStrength\x12\x0c\n\x04rssi\x18\x01 \x01(\x05\x12\x0c\n\x04rsrq\x18\x02 \x01(\x05\x12\x0c\n\x04rsrp\x18\x03 \x01(\x05\x12\x0b\n\x03snr\x18\x04 \x01(\x05\"y\n\x13\x43\x65llularPacketStats\x12\x30\n\x02rx\x18\x01 \x01(\x0b\x32$.org.lfedge.eve.metrics.NetworkStats\x12\x30\n\x02tx\x18\x02 \x01(\x0b\x32$.org.lfedge.eve.metrics.NetworkStats\"\xfc\x01\n\x0ezedcloudMetric\x12\x0e\n\x06ifName\x18\x01 \x01(\t\x12\x10\n\x08\x66\x61ilures\x18\x02 \x01(\x04\x12\x0f\n\x07success\x18\x03 \x01(\x04\x12/\n\x0blastFailure\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x0blastSuccess\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12:\n\nurlMetrics\x18\x06 \x03(\x0b\x32&.org.lfedge.eve.metrics.urlcloudMetric\x12\x19\n\x11\x61uthVerifyFailure\x18\x07 \x01(\x04\"\xd7\x01\n\x0eurlcloudMetric\x12\x0b\n\x03url\x18\x01 \x01(\t\x12\x13\n\x0btryMsgCount\x18\x02 \x01(\x03\x12\x14\n\x0ctryByteCount\x18\x03 \x01(\x03\x12\x14\n\x0csentMsgCount\x18\x04 \x01(\x03\x12\x15\n\rsentByteCount\x18\x05 \x01(\x03\x12\x14\n\x0crecvMsgCount\x18\x06 \x01(\x03\x12\x15\n\rrecvByteCount\x18\x07 \x01(\x03\x12\x18\n\x10total_time_spent\x18\x08 \x01(\x03\x12\x19\n\x11sess_resume_count\x18\t \x01(\x03\"\xe5\x01\n\x0c\x43ipherMetric\x12\x12\n\nagent_name\x18\x01 \x01(\t\x12\x15\n\rfailure_count\x18\x02 \x01(\x04\x12\x15\n\rsuccess_count\x18\x03 \x01(\x04\x12\x30\n\x0clast_failure\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x30\n\x0clast_success\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12/\n\x02tc\x18\x06 \x03(\x0b\x32#.org.lfedge.eve.metrics.TypeCounter\"U\n\x0bTypeCounter\x12\x37\n\nerror_code\x18\x01 \x01(\x0e\x32#.org.lfedge.eve.metrics.CipherError\x12\r\n\x05\x63ount\x18\x02 \x01(\x04\"p\n\x0c\x61ppCpuMetric\x12*\n\x06upTime\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\r\n\x05total\x18\x05 \x01(\x04\x12\x13\n\x0bsystemTotal\x18\x06 \x01(\x04\x12\x10\n\x08total_ns\x18\x07 \x01(\x04\"\xac\x03\n\x12StorageVDevMetrics\x12\x16\n\x0evolume_u_u_i_d\x18\x01 \x01(\t\x12\r\n\x05\x61lloc\x18\x02 \x01(\x04\x12\r\n\x05total\x18\x03 \x01(\x04\x12\x16\n\x0e\x64\x65\x66lated_space\x18\x04 \x01(\x04\x12\x18\n\x10replaceable_size\x18\x05 \x01(\x04\x12\x17\n\x0f\x65xpandable_size\x18\x06 \x01(\x04\x12\x13\n\x0bread_errors\x18\x07 \x01(\x04\x12\x14\n\x0cwrite_errors\x18\x08 \x01(\x04\x12\x17\n\x0f\x63hecksum_errors\x18\t \x01(\x04\x12\x12\n\nbytes_read\x18\n \x01(\x04\x12\x13\n\x0b\x62ytes_write\x18\x0b \x01(\x04\x12\x16\n\x0eops_count_read\x18\x0c \x01(\x04\x12\x17\n\x0fops_count_write\x18\r \x01(\x04\x12\x18\n\x10i_os_in_progress\x18\x0e \x01(\x04\x12\x12\n\nread_ticks\x18\x0f \x01(\x04\x12\x13\n\x0bwrite_ticks\x18\x10 \x01(\x04\x12\x18\n\x10i_os_total_ticks\x18\x11 \x01(\x04\x12\x1a\n\x12weighted_i_o_ticks\x18\x12 \x01(\x04\"\x8b\x01\n\x11StorageDiskMetric\x12\x39\n\tdisk_name\x18\x01 \x01(\x0b\x32&.org.lfedge.eve.common.DiskDescription\x12;\n\x07metrics\x18\x02 \x01(\x0b\x32*.org.lfedge.eve.metrics.StorageVDevMetrics\"\xe0\x01\n\x15StorageChildrenMetric\x12\x0f\n\x07g_u_i_d\x18\x01 \x01(\x04\x12\x38\n\x05\x64isks\x18\x02 \x03(\x0b\x32).org.lfedge.eve.metrics.StorageDiskMetric\x12?\n\x08\x63hildren\x18\x03 \x03(\x0b\x32-.org.lfedge.eve.metrics.StorageChildrenMetric\x12;\n\x07metrics\x18\x04 \x01(\x0b\x32*.org.lfedge.eve.metrics.StorageVDevMetrics\"\xd9\x02\n\rStorageMetric\x12\x11\n\tpool_name\x18\x01 \x01(\t\x12\x33\n\x0f\x63ollection_time\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x41\n\rzpool_metrics\x18\x06 \x01(\x0b\x32*.org.lfedge.eve.metrics.StorageVDevMetrics\x12H\n\x11\x63hildren_datasets\x18\x07 \x03(\x0b\x32-.org.lfedge.eve.metrics.StorageChildrenMetric\x12\x38\n\x05\x64isks\x18\x08 \x03(\x0b\x32).org.lfedge.eve.metrics.StorageDiskMetric\x12\x39\n\x05zvols\x18\t \x03(\x0b\x32*.org.lfedge.eve.metrics.StorageVDevMetrics\"\xea\x08\n\x0c\x64\x65viceMetric\x12\x34\n\x06memory\x18\x02 \x01(\x0b\x32$.org.lfedge.eve.metrics.memoryMetric\x12\x36\n\x07network\x18\x03 \x03(\x0b\x32%.org.lfedge.eve.metrics.networkMetric\x12\x38\n\x08zedcloud\x18\x04 \x03(\x0b\x32&.org.lfedge.eve.metrics.zedcloudMetric\x12\x30\n\x04\x64isk\x18\x06 \x03(\x0b\x32\".org.lfedge.eve.metrics.diskMetric\x12\x37\n\tcpuMetric\x18\x07 \x01(\x0b\x32$.org.lfedge.eve.metrics.appCpuMetric\x12\x37\n\x0bmetricItems\x18\x08 \x03(\x0b\x32\".org.lfedge.eve.metrics.MetricItem\x12 \n\x18runtimeStorageOverheadMB\x18\t \x01(\x04\x12\x1b\n\x13\x61ppRunTimeStorageMB\x18\n \x01(\x04\x12\x44\n\x16systemServicesMemoryMB\x18\x0b \x01(\x0b\x32$.org.lfedge.eve.metrics.memoryMetric\x12.\n\x03log\x18\x0c \x01(\x0b\x32!.org.lfedge.eve.metrics.logMetric\x12\x34\n\x06\x63ipher\x18\r \x03(\x0b\x32$.org.lfedge.eve.metrics.CipherMetric\x12.\n\x03\x61\x63l\x18\x0e \x01(\x0b\x32!.org.lfedge.eve.metrics.AclMetric\x12\x34\n\x06newlog\x18\x0f \x01(\x0b\x32$.org.lfedge.eve.metrics.newlogMetric\x12\x33\n\x06zedbox\x18\x10 \x01(\x0b\x32#.org.lfedge.eve.metrics.zedboxStats\x12@\n\x0c\x64\x65viceMemory\x18\x11 \x01(\x0b\x32*.org.lfedge.eve.metrics.DeviceMemoryMetric\x12\x38\n\x14last_received_config\x18\x12 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x39\n\x15last_processed_config\x18\x13 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x38\n\x08\x63\x65llular\x18\x14 \x03(\x0b\x32&.org.lfedge.eve.metrics.CellularMetric\x12\x36\n\x07\x66lowlog\x18\x15 \x01(\x0b\x32%.org.lfedge.eve.metrics.FlowlogMetric\x12\x1f\n\x17\x64ormant_time_in_seconds\x18\x16 \x01(\x04\x12>\n\x0fstorage_metrics\x18\x17 \x03(\x0b\x32%.org.lfedge.eve.metrics.StorageMetric\"%\n\tAclMetric\x12\x18\n\x10total_rule_count\x18\x01 \x01(\x04\"\xe4\x02\n\x12\x61ppContainerMetric\x12\x18\n\x10\x61ppContainerName\x18\x01 \x01(\t\x12\x0e\n\x06status\x18\x02 \x01(\t\x12\x0c\n\x04PIDs\x18\x03 \x01(\r\x12\x31\n\x03\x63pu\x18\x04 \x01(\x0b\x32$.org.lfedge.eve.metrics.appCpuMetric\x12\x34\n\x06memory\x18\x05 \x01(\x0b\x32$.org.lfedge.eve.metrics.memoryMetric\x12\x36\n\x07network\x18\x06 \x01(\x0b\x32%.org.lfedge.eve.metrics.networkMetric\x12\x30\n\x04\x64isk\x18\x07 \x01(\x0b\x32\".org.lfedge.eve.metrics.diskMetric\x12\x43\n\x12\x61ppContainerMemory\x18\x08 \x01(\x0b\x32\'.org.lfedge.eve.metrics.AppMemoryMetric\"\xd2\x01\n\nMetricItem\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x04type\x18\x02 \x01(\x0e\x32&.org.lfedge.eve.metrics.MetricItemType\x12\x13\n\tboolValue\x18\x03 \x01(\x08H\x00\x12\x15\n\x0buint32Value\x18\x04 \x01(\rH\x00\x12\x15\n\x0buint64Value\x18\x05 \x01(\x04H\x00\x12\x14\n\nfloatValue\x18\x06 \x01(\x02H\x00\x12\x15\n\x0bstringValue\x18\x07 \x01(\tH\x00\x42\x11\n\x0fmetricItemValue\"\xa6\x01\n\ndiskMetric\x12\x0c\n\x04\x64isk\x18\x01 \x01(\t\x12\x11\n\tmountPath\x18\x02 \x01(\t\x12\x11\n\treadBytes\x18\x03 \x01(\x04\x12\x12\n\nwriteBytes\x18\x04 \x01(\x04\x12\x11\n\treadCount\x18\x05 \x01(\x04\x12\x12\n\nwriteCount\x18\x06 \x01(\x04\x12\r\n\x05total\x18\x07 \x01(\x04\x12\x0c\n\x04used\x18\x08 \x01(\x04\x12\x0c\n\x04\x66ree\x18\t \x01(\x04\"a\n\rappDiskMetric\x12\x0c\n\x04\x64isk\x18\x01 \x01(\t\x12\x13\n\x0bprovisioned\x18\x02 \x01(\x04\x12\x0c\n\x04used\x18\x03 \x01(\x04\x12\x10\n\x08\x64iskType\x18\x04 \x01(\t\x12\r\n\x05\x64irty\x18\x05 \x01(\x08\"\xd8\x03\n\tappMetric\x12\r\n\x05\x41ppID\x18\x01 \x01(\t\x12\x12\n\nappVersion\x18\n \x01(\t\x12\x0f\n\x07\x41ppName\x18\x02 \x01(\t\x12\x31\n\x03\x63pu\x18\x03 \x01(\x0b\x32$.org.lfedge.eve.metrics.appCpuMetric\x12\x34\n\x06memory\x18\x04 \x01(\x0b\x32$.org.lfedge.eve.metrics.memoryMetric\x12\x36\n\x07network\x18\x05 \x03(\x0b\x32%.org.lfedge.eve.metrics.networkMetric\x12\x33\n\x04\x64isk\x18\x06 \x03(\x0b\x32%.org.lfedge.eve.metrics.appDiskMetric\x12=\n\tcontainer\x18\x07 \x03(\x0b\x32*.org.lfedge.eve.metrics.appContainerMetric\x12:\n\tappMemory\x18\x08 \x01(\x0b\x32\'.org.lfedge.eve.metrics.AppMemoryMetric\x12\x46\n\x0epatch_envelope\x18\t \x03(\x0b\x32..org.lfedge.eve.metrics.AppPatchEnvelopeMetric\"m\n\x16\x41ppPatchEnvelopeMetric\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x0f\n\x07version\x18\x02 \x01(\t\x12\x1c\n\x14patch_api_call_count\x18\x03 \x01(\x04\x12\x16\n\x0e\x64ownload_count\x18\x04 \x01(\x04\"\xba\x05\n\tlogMetric\x12\x1b\n\x13numDeviceEventsSent\x18\x01 \x01(\x04\x12\x1c\n\x14numDeviceBundlesSent\x18\x02 \x01(\x04\x12\x18\n\x10numAppEventsSent\x18\x03 \x01(\x04\x12\x19\n\x11numAppBundlesSent\x18\x04 \x01(\x04\x12\x17\n\x0fnum4xxResponses\x18\x05 \x01(\x04\x12<\n\x18lastDeviceBundleSendTime\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x39\n\x15lastAppBundleSendTime\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1f\n\x17isLogProcessingDeferred\x18\x08 \x01(\x08\x12\x18\n\x10numTimesDeferred\x18\t \x01(\x04\x12\x34\n\x10lastLogDeferTime\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x1b\n\x13totalDeviceLogInput\x18\r \x01(\x04\x12\x18\n\x10totalAppLogInput\x18\x0e \x01(\x04\x12\x1c\n\x14numDeviceEventErrors\x18\x0f \x01(\x04\x12\x19\n\x11numAppEventErrors\x18\x10 \x01(\x04\x12%\n\x1dnumDeviceBundleProtoBytesSent\x18\x11 \x01(\x04\x12\"\n\x1anumAppBundleProtoBytesSent\x18\x12 \x01(\x04\x12J\n\rinput_sources\x18\x13 \x03(\x0b\x32\x33.org.lfedge.eve.metrics.logMetric.InputSourcesEntry\x1a\x33\n\x11InputSourcesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x04:\x02\x38\x01\")\n\x07PktStat\x12\x0f\n\x07Packets\x18\x01 \x01(\x04\x12\r\n\x05\x42ytes\x18\x02 \x01(\x04\"\xda\x01\n\x0bZMetricConn\x12/\n\x06InPkts\x18\x01 \x01(\x0b\x32\x1f.org.lfedge.eve.metrics.PktStat\x12\x30\n\x07OutPkts\x18\x02 \x01(\x0b\x32\x1f.org.lfedge.eve.metrics.PktStat\x12\x30\n\x07\x45rrPkts\x18\x03 \x01(\x0b\x32\x1f.org.lfedge.eve.metrics.PktStat\x12\x36\n\rCarierErrPkts\x18\x04 \x01(\x0b\x32\x1f.org.lfedge.eve.metrics.PktStat\"\xe6\x01\n\nZMetricVpn\x12\x35\n\x08\x43onnStat\x18\x01 \x01(\x0b\x32#.org.lfedge.eve.metrics.ZMetricConn\x12\x34\n\x07IkeStat\x18\x02 \x01(\x0b\x32#.org.lfedge.eve.metrics.ZMetricConn\x12\x35\n\x08NatTStat\x18\x03 \x01(\x0b\x32#.org.lfedge.eve.metrics.ZMetricConn\x12\x34\n\x07\x45spStat\x18\x04 \x01(\x0b\x32#.org.lfedge.eve.metrics.ZMetricConn\"\r\n\x0bZMetricNone\":\n\x0fZMetricFlowLink\x12\x10\n\x06subNet\x18\x01 \x01(\tH\x00\x12\r\n\x05spiId\x18\x03 \x01(\tB\x06\n\x04Link\"\x9a\x01\n\x13ZMetricFlowEndPoint\x12\x10\n\x06ipAddr\x18\x01 \x01(\tH\x00\x12\x35\n\x04link\x18\x05 \x03(\x0b\x32\'.org.lfedge.eve.metrics.ZMetricFlowLink\x12.\n\x05stats\x18\n \x01(\x0b\x32\x1f.org.lfedge.eve.metrics.PktStatB\n\n\x08\x45ndpoint\"\xc6\x01\n\x0bZMetricFlow\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0c\n\x04type\x18\x03 \x01(\r\x12\x0f\n\x07\x65stTime\x18\x05 \x01(\x04\x12>\n\tlEndPoint\x18\n \x01(\x0b\x32+.org.lfedge.eve.metrics.ZMetricFlowEndPoint\x12>\n\trEndPoint\x18\x0b \x03(\x0b\x32+.org.lfedge.eve.metrics.ZMetricFlowEndPoint\"W\n\x0cNetworkStats\x12\x14\n\x0ctotalPackets\x18\x01 \x01(\x04\x12\x0e\n\x06\x65rrors\x18\x02 \x01(\x04\x12\r\n\x05\x64rops\x18\x03 \x01(\x04\x12\x12\n\ntotalBytes\x18\x04 \x01(\x04\"y\n\x13ZMetricNetworkStats\x12\x30\n\x02rx\x18\x01 \x01(\x0b\x32$.org.lfedge.eve.metrics.NetworkStats\x12\x30\n\x02tx\x18\x02 \x01(\x0b\x32$.org.lfedge.eve.metrics.NetworkStats\"\xda\x03\n\x0fZProbeNIMetrics\x12\x13\n\x0b\x63urrentIntf\x18\x01 \x01(\t\x12\x16\n\x0eremoteEndpoint\x18\x02 \x01(\t\x12\x10\n\x08pingIntv\x18\x03 \x01(\r\x12\x16\n\x0eremotePingIntv\x18\x04 \x01(\r\x12\x11\n\tuplinkCnt\x18\x05 \x01(\r\x12L\n\nintfMetric\x18\n \x03(\x0b\x32\x38.org.lfedge.eve.metrics.ZProbeNIMetrics.ZProbeIntfMetric\x12\x13\n\x0b\x64st_network\x18\x14 \x01(\t\x12\x14\n\x0c\x63urrent_port\x18\x15 \x01(\t\x1a\xe3\x01\n\x10ZProbeIntfMetric\x12\x10\n\x08intfName\x18\x0b \x01(\t\x12\x16\n\x0egatewayNexhtop\x18\x0c \x01(\t\x12\x11\n\tgatewayUP\x18\r \x01(\x08\x12\x14\n\x0cremoteHostUP\x18\x0e \x01(\x08\x12\x16\n\x0enexthopUpCount\x18\x0f \x01(\r\x12\x18\n\x10nexthopDownCount\x18\x10 \x01(\r\x12\x15\n\rremoteUpCount\x18\x11 \x01(\r\x12\x17\n\x0fremoteDownCount\x18\x12 \x01(\r\x12\x1a\n\x12remoteProbeLatency\x18\x13 \x01(\r\"\xe4\x04\n\x16ZMetricNetworkInstance\x12\x11\n\tnetworkID\x18\x02 \x01(\t\x12\x16\n\x0enetworkVersion\x18\x03 \x01(\t\x12\x10\n\x08instType\x18\x05 \x01(\r\x12\x13\n\x0b\x64isplayname\x18\x06 \x01(\t\x12\x11\n\tactivated\x18\x07 \x01(\x08\x12\x36\n\x07network\x18\n \x03(\x0b\x32%.org.lfedge.eve.metrics.networkMetric\x12@\n\x0bprobeMetric\x18\x0c \x01(\x0b\x32\'.org.lfedge.eve.metrics.ZProbeNIMetricsB\x02\x18\x01\x12>\n\rprobe_metrics\x18\r \x03(\x0b\x32\'.org.lfedge.eve.metrics.ZProbeNIMetrics\x12\x32\n\x04vpnm\x18\x14 \x01(\x0b\x32\".org.lfedge.eve.metrics.ZMetricVpnH\x00\x12\x34\n\x05nonem\x18\x16 \x01(\x0b\x32#.org.lfedge.eve.metrics.ZMetricNoneH\x00\x12\x36\n\tflowStats\x18\x1e \x03(\x0b\x32#.org.lfedge.eve.metrics.ZMetricFlow\x12\x41\n\x0cnetworkStats\x18( \x01(\x0b\x32+.org.lfedge.eve.metrics.ZMetricNetworkStats\x12\x33\n\tvlan_info\x18) \x01(\x0b\x32 .org.lfedge.eve.metrics.vlanInfoB\x11\n\x0fInstanceContent\"\xba\x01\n\rZMetricVolume\x12\x0c\n\x04uuid\x18\x01 \x01(\t\x12\x13\n\x0b\x64isplayName\x18\x02 \x01(\t\x12\x11\n\treadBytes\x18\x03 \x01(\x04\x12\x12\n\nwriteBytes\x18\x04 \x01(\x04\x12\x11\n\treadCount\x18\x05 \x01(\x04\x12\x12\n\nwriteCount\x18\x06 \x01(\x04\x12\x12\n\ntotalBytes\x18\x07 \x01(\x04\x12\x11\n\tusedBytes\x18\x08 \x01(\x04\x12\x11\n\tfreeBytes\x18\t \x01(\x04\"\xb2\x02\n\x0eZMetricProcess\x12\x0b\n\x03pid\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x14\n\x0cuser_process\x18\x03 \x01(\x08\x12\x0f\n\x07watched\x18\x04 \x01(\x08\x12\x0f\n\x07num_fds\x18\x05 \x01(\x05\x12\x13\n\x0bnum_threads\x18\x06 \x01(\x05\x12\x11\n\tuser_time\x18\x07 \x01(\x01\x12\x13\n\x0bsystem_time\x18\x08 \x01(\x01\x12\x13\n\x0b\x63pu_percent\x18\t \x01(\x01\x12/\n\x0b\x63reate_time\x18\n \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x10\n\x08vm_bytes\x18\x0b \x01(\x04\x12\x11\n\trss_bytes\x18\x0c \x01(\x04\x12\x16\n\x0ememory_percent\x18\r \x01(\x02\x12\r\n\x05stack\x18\x0e \x01(\t\"\xe3\x02\n\nZMetricMsg\x12\r\n\x05\x64\x65vID\x18\x01 \x01(\t\x12/\n\x0b\x61tTimeStamp\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x32\n\x02\x64m\x18\x04 \x01(\x0b\x32$.org.lfedge.eve.metrics.deviceMetricH\x00\x12-\n\x02\x61m\x18\x05 \x03(\x0b\x32!.org.lfedge.eve.metrics.appMetric\x12:\n\x02nm\x18\x07 \x03(\x0b\x32..org.lfedge.eve.metrics.ZMetricNetworkInstance\x12\x31\n\x02vm\x18\x08 \x03(\x0b\x32%.org.lfedge.eve.metrics.ZMetricVolume\x12\x32\n\x02pr\x18\t \x03(\x0b\x32&.org.lfedge.eve.metrics.ZMetricProcessB\x0f\n\rMetricContent\"\x9c\x06\n\x0cnewlogMetric\x12\x14\n\x0c\x66\x61iledToSend\x18\x01 \x01(\x08\x12\x35\n\x11\x66\x61ilSentStartTime\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x18\n\x10totalBytesUpload\x18\x03 \x01(\x04\x12\x17\n\x0fnum4xxResponses\x18\x04 \x01(\r\x12\x19\n\x11\x63urrentUploadIntv\x18\x05 \x01(\r\x12\x16\n\x0elogfileTimeout\x18\x06 \x01(\r\x12\x17\n\x0fmaxGzipFileSize\x18\x07 \x01(\r\x12\x17\n\x0f\x61vgGzipFileSize\x18\x08 \x01(\r\x12\x15\n\rmimUploadMsec\x18\t \x01(\r\x12\x15\n\rmaxUploadMsec\x18\n \x01(\r\x12\x15\n\ravgUploadMsec\x18\x0b \x01(\r\x12\x16\n\x0elastUploadMsec\x18\x0c \x01(\r\x12\x19\n\x11\x63urrentCPULoadPct\x18\r \x01(\x02\x12\x19\n\x11\x61verageCPULoadPct\x18\x0e \x01(\x02\x12\x1b\n\x13\x63urrentProcessDelay\x18\x0f \x01(\r\x12\x1b\n\x13\x61verageProcessDelay\x18\x10 \x01(\r\x12=\n\rdeviceMetrics\x18\x11 \x01(\x0b\x32&.org.lfedge.eve.metrics.logfileMetrics\x12:\n\nappMetrics\x18\x12 \x01(\x0b\x32&.org.lfedge.eve.metrics.logfileMetrics\x12X\n\x13top10_input_sources\x18\x13 \x03(\x0b\x32;.org.lfedge.eve.metrics.newlogMetric.Top10InputSourcesEntry\x12\x18\n\x10gzipFilesRemoved\x18\x14 \x01(\r\x12\x16\n\x0etooManyRequest\x18\x15 \x01(\r\x12\x19\n\x11skipUploadAppFile\x18\x16 \x01(\r\x1a\x38\n\x16Top10InputSourcesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\"\xb6\x02\n\x0elogfileMetrics\x12\x17\n\x0fnumGzipFileSent\x18\x01 \x01(\x04\x12\x19\n\x11numGzipBytesWrite\x18\x02 \x01(\x04\x12\x15\n\rnumBytesWrite\x18\x03 \x01(\x04\x12\x18\n\x10numGzipFileInDir\x18\x04 \x01(\r\x12\x15\n\rnumInputEvent\x18\x05 \x01(\x04\x12\x18\n\x10numGzipFileRetry\x18\x06 \x01(\x04\x12\x1c\n\x14numGzipFileKeptLocal\x18\x07 \x01(\r\x12\x36\n\x12recentGzipFileTime\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x38\n\x14lastGzipFileSendTime\x18\t \x01(\x0b\x32\x1a.google.protobuf.Timestamp\"$\n\x0bzedboxStats\x12\x15\n\rnumGoRoutines\x18\x01 \x01(\r\"\x9d\x01\n\x08vlanInfo\x12\x17\n\x0fnum_trunk_ports\x18\x01 \x01(\r\x12\x45\n\x0bvlan_counts\x18\x02 \x03(\x0b\x32\x30.org.lfedge.eve.metrics.vlanInfo.VlanCountsEntry\x1a\x31\n\x0fVlanCountsEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12\r\n\x05value\x18\x02 \x01(\r:\x02\x38\x01\"\xc1\x01\n\rFlowlogMetric\x12\x39\n\x08messages\x18\x01 \x01(\x0b\x32\'.org.lfedge.eve.metrics.FlowlogCounters\x12\x36\n\x05\x66lows\x18\x02 \x01(\x0b\x32\'.org.lfedge.eve.metrics.FlowlogCounters\x12=\n\x0c\x64ns_requests\x18\x03 \x01(\x0b\x32\'.org.lfedge.eve.metrics.FlowlogCounters\"J\n\x0f\x46lowlogCounters\x12\x0f\n\x07success\x18\x01 \x01(\x04\x12\r\n\x05\x64rops\x18\x02 \x01(\x04\x12\x17\n\x0f\x66\x61iled_attempts\x18\x03 \x01(\x04*2\n\x0cZmetricTypes\x12\t\n\x05ZmNop\x10\x00\x12\x0c\n\x08ZmDevice\x10\x01\x12\t\n\x05ZmApp\x10\x03*\x85\x02\n\x0b\x43ipherError\x12\x18\n\x14\x43IPHER_ERROR_INVALID\x10\x00\x12\x1a\n\x16\x43IPHER_ERROR_NOT_READY\x10\x01\x12\x1f\n\x1b\x43IPHER_ERROR_DECRYPT_FAILED\x10\x02\x12!\n\x1d\x43IPHER_ERROR_UNMARSHAL_FAILED\x10\x03\x12#\n\x1f\x43IPHER_ERROR_CLEARTEXT_FALLBACK\x10\x04\x12!\n\x1d\x43IPHER_ERROR_MISSING_FALLBACK\x10\x05\x12\x1a\n\x16\x43IPHER_ERROR_NO_CIPHER\x10\x06\x12\x18\n\x14\x43IPHER_ERROR_NO_DATA\x10\x07*f\n\x0eMetricItemType\x12\x13\n\x0fMetricItemOther\x10\x00\x12\x13\n\x0fMetricItemGauge\x10\x01\x12\x15\n\x11MetricItemCounter\x10\x02\x12\x13\n\x0fMetricItemState\x10\x03\x42?\n\x16org.lfedge.eve.metricsZ%github.com/lf-edge/eve-api/go/metricsb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -26,16 +26,18 @@ DESCRIPTOR._serialized_options = b'\n\026org.lfedge.eve.metricsZ%github.com/lf-edge/eve-api/go/metrics' _LOGMETRIC_INPUTSOURCESENTRY._options = None _LOGMETRIC_INPUTSOURCESENTRY._serialized_options = b'8\001' + _ZMETRICNETWORKINSTANCE.fields_by_name['probeMetric']._options = None + _ZMETRICNETWORKINSTANCE.fields_by_name['probeMetric']._serialized_options = b'\030\001' _NEWLOGMETRIC_TOP10INPUTSOURCESENTRY._options = None _NEWLOGMETRIC_TOP10INPUTSOURCESENTRY._serialized_options = b'8\001' _VLANINFO_VLANCOUNTSENTRY._options = None _VLANINFO_VLANCOUNTSENTRY._serialized_options = b'8\001' - _globals['_ZMETRICTYPES']._serialized_start=10976 - _globals['_ZMETRICTYPES']._serialized_end=11026 - _globals['_CIPHERERROR']._serialized_start=11029 - _globals['_CIPHERERROR']._serialized_end=11290 - _globals['_METRICITEMTYPE']._serialized_start=11292 - _globals['_METRICITEMTYPE']._serialized_end=11394 + _globals['_ZMETRICTYPES']._serialized_start=11087 + _globals['_ZMETRICTYPES']._serialized_end=11137 + _globals['_CIPHERERROR']._serialized_start=11140 + _globals['_CIPHERERROR']._serialized_end=11401 + _globals['_METRICITEMTYPE']._serialized_start=11403 + _globals['_METRICITEMTYPE']._serialized_end=11505 _globals['_MEMORYMETRIC']._serialized_start=109 _globals['_MEMORYMETRIC']._serialized_end=207 _globals['_APPMEMORYMETRIC']._serialized_start=209 @@ -107,31 +109,31 @@ _globals['_ZMETRICNETWORKSTATS']._serialized_start=7434 _globals['_ZMETRICNETWORKSTATS']._serialized_end=7555 _globals['_ZPROBENIMETRICS']._serialized_start=7558 - _globals['_ZPROBENIMETRICS']._serialized_end=7989 - _globals['_ZPROBENIMETRICS_ZPROBEINTFMETRIC']._serialized_start=7762 - _globals['_ZPROBENIMETRICS_ZPROBEINTFMETRIC']._serialized_end=7989 - _globals['_ZMETRICNETWORKINSTANCE']._serialized_start=7992 - _globals['_ZMETRICNETWORKINSTANCE']._serialized_end=8536 - _globals['_ZMETRICVOLUME']._serialized_start=8539 - _globals['_ZMETRICVOLUME']._serialized_end=8725 - _globals['_ZMETRICPROCESS']._serialized_start=8728 - _globals['_ZMETRICPROCESS']._serialized_end=9034 - _globals['_ZMETRICMSG']._serialized_start=9037 - _globals['_ZMETRICMSG']._serialized_end=9392 - _globals['_NEWLOGMETRIC']._serialized_start=9395 - _globals['_NEWLOGMETRIC']._serialized_end=10191 - _globals['_NEWLOGMETRIC_TOP10INPUTSOURCESENTRY']._serialized_start=10135 - _globals['_NEWLOGMETRIC_TOP10INPUTSOURCESENTRY']._serialized_end=10191 - _globals['_LOGFILEMETRICS']._serialized_start=10194 - _globals['_LOGFILEMETRICS']._serialized_end=10504 - _globals['_ZEDBOXSTATS']._serialized_start=10506 - _globals['_ZEDBOXSTATS']._serialized_end=10542 - _globals['_VLANINFO']._serialized_start=10545 - _globals['_VLANINFO']._serialized_end=10702 - _globals['_VLANINFO_VLANCOUNTSENTRY']._serialized_start=10653 - _globals['_VLANINFO_VLANCOUNTSENTRY']._serialized_end=10702 - _globals['_FLOWLOGMETRIC']._serialized_start=10705 - _globals['_FLOWLOGMETRIC']._serialized_end=10898 - _globals['_FLOWLOGCOUNTERS']._serialized_start=10900 - _globals['_FLOWLOGCOUNTERS']._serialized_end=10974 + _globals['_ZPROBENIMETRICS']._serialized_end=8032 + _globals['_ZPROBENIMETRICS_ZPROBEINTFMETRIC']._serialized_start=7805 + _globals['_ZPROBENIMETRICS_ZPROBEINTFMETRIC']._serialized_end=8032 + _globals['_ZMETRICNETWORKINSTANCE']._serialized_start=8035 + _globals['_ZMETRICNETWORKINSTANCE']._serialized_end=8647 + _globals['_ZMETRICVOLUME']._serialized_start=8650 + _globals['_ZMETRICVOLUME']._serialized_end=8836 + _globals['_ZMETRICPROCESS']._serialized_start=8839 + _globals['_ZMETRICPROCESS']._serialized_end=9145 + _globals['_ZMETRICMSG']._serialized_start=9148 + _globals['_ZMETRICMSG']._serialized_end=9503 + _globals['_NEWLOGMETRIC']._serialized_start=9506 + _globals['_NEWLOGMETRIC']._serialized_end=10302 + _globals['_NEWLOGMETRIC_TOP10INPUTSOURCESENTRY']._serialized_start=10246 + _globals['_NEWLOGMETRIC_TOP10INPUTSOURCESENTRY']._serialized_end=10302 + _globals['_LOGFILEMETRICS']._serialized_start=10305 + _globals['_LOGFILEMETRICS']._serialized_end=10615 + _globals['_ZEDBOXSTATS']._serialized_start=10617 + _globals['_ZEDBOXSTATS']._serialized_end=10653 + _globals['_VLANINFO']._serialized_start=10656 + _globals['_VLANINFO']._serialized_end=10813 + _globals['_VLANINFO_VLANCOUNTSENTRY']._serialized_start=10764 + _globals['_VLANINFO_VLANCOUNTSENTRY']._serialized_end=10813 + _globals['_FLOWLOGMETRIC']._serialized_start=10816 + _globals['_FLOWLOGMETRIC']._serialized_end=11009 + _globals['_FLOWLOGCOUNTERS']._serialized_start=11011 + _globals['_FLOWLOGCOUNTERS']._serialized_end=11085 # @@protoc_insertion_point(module_scope)