...

Source file src/google.golang.org/genproto/googleapis/devtools/testing/v1/test_environment_discovery.pb.go

Documentation: google.golang.org/genproto/googleapis/devtools/testing/v1

     1  // Copyright 2023 Google LLC
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  // Code generated by protoc-gen-go. DO NOT EDIT.
    16  // versions:
    17  // 	protoc-gen-go v1.26.0
    18  // 	protoc        v3.21.9
    19  // source: google/devtools/testing/v1/test_environment_discovery.proto
    20  
    21  package testing
    22  
    23  import (
    24  	context "context"
    25  	reflect "reflect"
    26  	sync "sync"
    27  
    28  	_ "google.golang.org/genproto/googleapis/api/annotations"
    29  	date "google.golang.org/genproto/googleapis/type/date"
    30  	grpc "google.golang.org/grpc"
    31  	codes "google.golang.org/grpc/codes"
    32  	status "google.golang.org/grpc/status"
    33  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    34  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    35  	durationpb "google.golang.org/protobuf/types/known/durationpb"
    36  	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
    37  )
    38  
    39  const (
    40  	// Verify that this generated code is sufficiently up-to-date.
    41  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    42  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    43  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    44  )
    45  
    46  // Whether the device is physical or virtual.
    47  type DeviceForm int32
    48  
    49  const (
    50  	// Do not use.  For proto versioning only.
    51  	DeviceForm_DEVICE_FORM_UNSPECIFIED DeviceForm = 0
    52  	// Android virtual device using Compute Engine native virtualization. Firebase
    53  	// Test Lab only.
    54  	DeviceForm_VIRTUAL DeviceForm = 1
    55  	// Actual hardware.
    56  	DeviceForm_PHYSICAL DeviceForm = 2
    57  	// Android virtual device using emulator in nested virtualization. Equivalent
    58  	// to Android Studio.
    59  	DeviceForm_EMULATOR DeviceForm = 3
    60  )
    61  
    62  // Enum value maps for DeviceForm.
    63  var (
    64  	DeviceForm_name = map[int32]string{
    65  		0: "DEVICE_FORM_UNSPECIFIED",
    66  		1: "VIRTUAL",
    67  		2: "PHYSICAL",
    68  		3: "EMULATOR",
    69  	}
    70  	DeviceForm_value = map[string]int32{
    71  		"DEVICE_FORM_UNSPECIFIED": 0,
    72  		"VIRTUAL":                 1,
    73  		"PHYSICAL":                2,
    74  		"EMULATOR":                3,
    75  	}
    76  )
    77  
    78  func (x DeviceForm) Enum() *DeviceForm {
    79  	p := new(DeviceForm)
    80  	*p = x
    81  	return p
    82  }
    83  
    84  func (x DeviceForm) String() string {
    85  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    86  }
    87  
    88  func (DeviceForm) Descriptor() protoreflect.EnumDescriptor {
    89  	return file_google_devtools_testing_v1_test_environment_discovery_proto_enumTypes[0].Descriptor()
    90  }
    91  
    92  func (DeviceForm) Type() protoreflect.EnumType {
    93  	return &file_google_devtools_testing_v1_test_environment_discovery_proto_enumTypes[0]
    94  }
    95  
    96  func (x DeviceForm) Number() protoreflect.EnumNumber {
    97  	return protoreflect.EnumNumber(x)
    98  }
    99  
   100  // Deprecated: Use DeviceForm.Descriptor instead.
   101  func (DeviceForm) EnumDescriptor() ([]byte, []int) {
   102  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{0}
   103  }
   104  
   105  // The form factor of a device.
   106  type DeviceFormFactor int32
   107  
   108  const (
   109  	// Do not use. For proto versioning only.
   110  	DeviceFormFactor_DEVICE_FORM_FACTOR_UNSPECIFIED DeviceFormFactor = 0
   111  	// This device has the shape of a phone.
   112  	DeviceFormFactor_PHONE DeviceFormFactor = 1
   113  	// This device has the shape of a tablet.
   114  	DeviceFormFactor_TABLET DeviceFormFactor = 2
   115  	// This device has the shape of a watch or other wearable.
   116  	DeviceFormFactor_WEARABLE DeviceFormFactor = 3
   117  )
   118  
   119  // Enum value maps for DeviceFormFactor.
   120  var (
   121  	DeviceFormFactor_name = map[int32]string{
   122  		0: "DEVICE_FORM_FACTOR_UNSPECIFIED",
   123  		1: "PHONE",
   124  		2: "TABLET",
   125  		3: "WEARABLE",
   126  	}
   127  	DeviceFormFactor_value = map[string]int32{
   128  		"DEVICE_FORM_FACTOR_UNSPECIFIED": 0,
   129  		"PHONE":                          1,
   130  		"TABLET":                         2,
   131  		"WEARABLE":                       3,
   132  	}
   133  )
   134  
   135  func (x DeviceFormFactor) Enum() *DeviceFormFactor {
   136  	p := new(DeviceFormFactor)
   137  	*p = x
   138  	return p
   139  }
   140  
   141  func (x DeviceFormFactor) String() string {
   142  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   143  }
   144  
   145  func (DeviceFormFactor) Descriptor() protoreflect.EnumDescriptor {
   146  	return file_google_devtools_testing_v1_test_environment_discovery_proto_enumTypes[1].Descriptor()
   147  }
   148  
   149  func (DeviceFormFactor) Type() protoreflect.EnumType {
   150  	return &file_google_devtools_testing_v1_test_environment_discovery_proto_enumTypes[1]
   151  }
   152  
   153  func (x DeviceFormFactor) Number() protoreflect.EnumNumber {
   154  	return protoreflect.EnumNumber(x)
   155  }
   156  
   157  // Deprecated: Use DeviceFormFactor.Descriptor instead.
   158  func (DeviceFormFactor) EnumDescriptor() ([]byte, []int) {
   159  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{1}
   160  }
   161  
   162  // Capacity based on the number of online devices in the lab.
   163  //
   164  // Important: device capacity does not directly reflect the length of the
   165  // queue at a moment in time. It does not take into account current traffic or
   166  // the state of the devices.
   167  //
   168  // For physical devices, the number is the average of online devices in the last
   169  // 30 days.
   170  type DeviceCapacity int32
   171  
   172  const (
   173  	// The value of device capacity is unknown or unset.
   174  	DeviceCapacity_DEVICE_CAPACITY_UNSPECIFIED DeviceCapacity = 0
   175  	// Devices that are high in capacity (The lab has a large number of these
   176  	// devices).
   177  	//
   178  	// These devices are generally suggested for running a large number of
   179  	// simultaneous tests (e.g. more than 100 tests).
   180  	//
   181  	// Please note that high capacity devices do not guarantee short wait times
   182  	// due to several factors:
   183  	// 1. Traffic (how heavily they are used at any given moment)
   184  	// 2. High capacity devices are prioritized for certain usages, which may
   185  	// cause user tests to be slower than selecting other similar device types.
   186  	DeviceCapacity_DEVICE_CAPACITY_HIGH DeviceCapacity = 1
   187  	// Devices that are medium in capacity (The lab has a decent number of these
   188  	// devices, though not as many as high capacity devices).
   189  	//
   190  	// These devices are suitable for fewer test runs (e.g. fewer than 100 tests)
   191  	// and only for low shard counts (e.g. less than 10 shards).
   192  	DeviceCapacity_DEVICE_CAPACITY_MEDIUM DeviceCapacity = 2
   193  	// Devices that are low in capacity (The lab has a small number of these
   194  	// devices).
   195  	//
   196  	// These devices may be used if users need to test on this specific device
   197  	// model and version. Please note that due to low capacity, the tests may take
   198  	// much longer to finish, especially if a large number of tests are invoked at
   199  	// once. These devices are not suitable for test sharding.
   200  	DeviceCapacity_DEVICE_CAPACITY_LOW DeviceCapacity = 3
   201  	// Devices that are completely missing from the lab.
   202  	//
   203  	// These devices are unavailable either temporarily or permanently and should
   204  	// not be requested. If the device is also marked as deprecated, this state
   205  	// is very likely permanent.
   206  	DeviceCapacity_DEVICE_CAPACITY_NONE DeviceCapacity = 4
   207  )
   208  
   209  // Enum value maps for DeviceCapacity.
   210  var (
   211  	DeviceCapacity_name = map[int32]string{
   212  		0: "DEVICE_CAPACITY_UNSPECIFIED",
   213  		1: "DEVICE_CAPACITY_HIGH",
   214  		2: "DEVICE_CAPACITY_MEDIUM",
   215  		3: "DEVICE_CAPACITY_LOW",
   216  		4: "DEVICE_CAPACITY_NONE",
   217  	}
   218  	DeviceCapacity_value = map[string]int32{
   219  		"DEVICE_CAPACITY_UNSPECIFIED": 0,
   220  		"DEVICE_CAPACITY_HIGH":        1,
   221  		"DEVICE_CAPACITY_MEDIUM":      2,
   222  		"DEVICE_CAPACITY_LOW":         3,
   223  		"DEVICE_CAPACITY_NONE":        4,
   224  	}
   225  )
   226  
   227  func (x DeviceCapacity) Enum() *DeviceCapacity {
   228  	p := new(DeviceCapacity)
   229  	*p = x
   230  	return p
   231  }
   232  
   233  func (x DeviceCapacity) String() string {
   234  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   235  }
   236  
   237  func (DeviceCapacity) Descriptor() protoreflect.EnumDescriptor {
   238  	return file_google_devtools_testing_v1_test_environment_discovery_proto_enumTypes[2].Descriptor()
   239  }
   240  
   241  func (DeviceCapacity) Type() protoreflect.EnumType {
   242  	return &file_google_devtools_testing_v1_test_environment_discovery_proto_enumTypes[2]
   243  }
   244  
   245  func (x DeviceCapacity) Number() protoreflect.EnumNumber {
   246  	return protoreflect.EnumNumber(x)
   247  }
   248  
   249  // Deprecated: Use DeviceCapacity.Descriptor instead.
   250  func (DeviceCapacity) EnumDescriptor() ([]byte, []int) {
   251  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{2}
   252  }
   253  
   254  // Types of environments the Test API supports.
   255  type GetTestEnvironmentCatalogRequest_EnvironmentType int32
   256  
   257  const (
   258  	// Do not use.  For proto versioning only.
   259  	GetTestEnvironmentCatalogRequest_ENVIRONMENT_TYPE_UNSPECIFIED GetTestEnvironmentCatalogRequest_EnvironmentType = 0
   260  	// A device running a version of the Android OS.
   261  	GetTestEnvironmentCatalogRequest_ANDROID GetTestEnvironmentCatalogRequest_EnvironmentType = 1
   262  	// A device running a version of iOS.
   263  	GetTestEnvironmentCatalogRequest_IOS GetTestEnvironmentCatalogRequest_EnvironmentType = 3
   264  	// A network configuration to use when running a test.
   265  	GetTestEnvironmentCatalogRequest_NETWORK_CONFIGURATION GetTestEnvironmentCatalogRequest_EnvironmentType = 4
   266  	// The software environment provided by TestExecutionService.
   267  	GetTestEnvironmentCatalogRequest_PROVIDED_SOFTWARE GetTestEnvironmentCatalogRequest_EnvironmentType = 5
   268  	// The IP blocks used by devices in the test environment.
   269  	GetTestEnvironmentCatalogRequest_DEVICE_IP_BLOCKS GetTestEnvironmentCatalogRequest_EnvironmentType = 6
   270  )
   271  
   272  // Enum value maps for GetTestEnvironmentCatalogRequest_EnvironmentType.
   273  var (
   274  	GetTestEnvironmentCatalogRequest_EnvironmentType_name = map[int32]string{
   275  		0: "ENVIRONMENT_TYPE_UNSPECIFIED",
   276  		1: "ANDROID",
   277  		3: "IOS",
   278  		4: "NETWORK_CONFIGURATION",
   279  		5: "PROVIDED_SOFTWARE",
   280  		6: "DEVICE_IP_BLOCKS",
   281  	}
   282  	GetTestEnvironmentCatalogRequest_EnvironmentType_value = map[string]int32{
   283  		"ENVIRONMENT_TYPE_UNSPECIFIED": 0,
   284  		"ANDROID":                      1,
   285  		"IOS":                          3,
   286  		"NETWORK_CONFIGURATION":        4,
   287  		"PROVIDED_SOFTWARE":            5,
   288  		"DEVICE_IP_BLOCKS":             6,
   289  	}
   290  )
   291  
   292  func (x GetTestEnvironmentCatalogRequest_EnvironmentType) Enum() *GetTestEnvironmentCatalogRequest_EnvironmentType {
   293  	p := new(GetTestEnvironmentCatalogRequest_EnvironmentType)
   294  	*p = x
   295  	return p
   296  }
   297  
   298  func (x GetTestEnvironmentCatalogRequest_EnvironmentType) String() string {
   299  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   300  }
   301  
   302  func (GetTestEnvironmentCatalogRequest_EnvironmentType) Descriptor() protoreflect.EnumDescriptor {
   303  	return file_google_devtools_testing_v1_test_environment_discovery_proto_enumTypes[3].Descriptor()
   304  }
   305  
   306  func (GetTestEnvironmentCatalogRequest_EnvironmentType) Type() protoreflect.EnumType {
   307  	return &file_google_devtools_testing_v1_test_environment_discovery_proto_enumTypes[3]
   308  }
   309  
   310  func (x GetTestEnvironmentCatalogRequest_EnvironmentType) Number() protoreflect.EnumNumber {
   311  	return protoreflect.EnumNumber(x)
   312  }
   313  
   314  // Deprecated: Use GetTestEnvironmentCatalogRequest_EnvironmentType.Descriptor instead.
   315  func (GetTestEnvironmentCatalogRequest_EnvironmentType) EnumDescriptor() ([]byte, []int) {
   316  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{1, 0}
   317  }
   318  
   319  // A single device IP block
   320  type DeviceIpBlock struct {
   321  	state         protoimpl.MessageState
   322  	sizeCache     protoimpl.SizeCache
   323  	unknownFields protoimpl.UnknownFields
   324  
   325  	// An IP address block in CIDR notation eg: 34.68.194.64/29
   326  	Block string `protobuf:"bytes,1,opt,name=block,proto3" json:"block,omitempty"`
   327  	// Whether this block is used by physical or virtual devices
   328  	Form DeviceForm `protobuf:"varint,2,opt,name=form,proto3,enum=google.devtools.testing.v1.DeviceForm" json:"form,omitempty"`
   329  	// The date this block was added to Firebase Test Lab
   330  	AddedDate *date.Date `protobuf:"bytes,3,opt,name=added_date,json=addedDate,proto3" json:"added_date,omitempty"`
   331  }
   332  
   333  func (x *DeviceIpBlock) Reset() {
   334  	*x = DeviceIpBlock{}
   335  	if protoimpl.UnsafeEnabled {
   336  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[0]
   337  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   338  		ms.StoreMessageInfo(mi)
   339  	}
   340  }
   341  
   342  func (x *DeviceIpBlock) String() string {
   343  	return protoimpl.X.MessageStringOf(x)
   344  }
   345  
   346  func (*DeviceIpBlock) ProtoMessage() {}
   347  
   348  func (x *DeviceIpBlock) ProtoReflect() protoreflect.Message {
   349  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[0]
   350  	if protoimpl.UnsafeEnabled && x != nil {
   351  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   352  		if ms.LoadMessageInfo() == nil {
   353  			ms.StoreMessageInfo(mi)
   354  		}
   355  		return ms
   356  	}
   357  	return mi.MessageOf(x)
   358  }
   359  
   360  // Deprecated: Use DeviceIpBlock.ProtoReflect.Descriptor instead.
   361  func (*DeviceIpBlock) Descriptor() ([]byte, []int) {
   362  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{0}
   363  }
   364  
   365  func (x *DeviceIpBlock) GetBlock() string {
   366  	if x != nil {
   367  		return x.Block
   368  	}
   369  	return ""
   370  }
   371  
   372  func (x *DeviceIpBlock) GetForm() DeviceForm {
   373  	if x != nil {
   374  		return x.Form
   375  	}
   376  	return DeviceForm_DEVICE_FORM_UNSPECIFIED
   377  }
   378  
   379  func (x *DeviceIpBlock) GetAddedDate() *date.Date {
   380  	if x != nil {
   381  		return x.AddedDate
   382  	}
   383  	return nil
   384  }
   385  
   386  // Request to list the currently supported values for an environment type.
   387  type GetTestEnvironmentCatalogRequest struct {
   388  	state         protoimpl.MessageState
   389  	sizeCache     protoimpl.SizeCache
   390  	unknownFields protoimpl.UnknownFields
   391  
   392  	// Required. The type of environment that should be listed.
   393  	EnvironmentType GetTestEnvironmentCatalogRequest_EnvironmentType `protobuf:"varint,1,opt,name=environment_type,json=environmentType,proto3,enum=google.devtools.testing.v1.GetTestEnvironmentCatalogRequest_EnvironmentType" json:"environment_type,omitempty"`
   394  	// For authorization, the cloud project requesting the TestEnvironmentCatalog.
   395  	ProjectId string `protobuf:"bytes,2,opt,name=project_id,json=projectId,proto3" json:"project_id,omitempty"`
   396  }
   397  
   398  func (x *GetTestEnvironmentCatalogRequest) Reset() {
   399  	*x = GetTestEnvironmentCatalogRequest{}
   400  	if protoimpl.UnsafeEnabled {
   401  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[1]
   402  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   403  		ms.StoreMessageInfo(mi)
   404  	}
   405  }
   406  
   407  func (x *GetTestEnvironmentCatalogRequest) String() string {
   408  	return protoimpl.X.MessageStringOf(x)
   409  }
   410  
   411  func (*GetTestEnvironmentCatalogRequest) ProtoMessage() {}
   412  
   413  func (x *GetTestEnvironmentCatalogRequest) ProtoReflect() protoreflect.Message {
   414  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[1]
   415  	if protoimpl.UnsafeEnabled && x != nil {
   416  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   417  		if ms.LoadMessageInfo() == nil {
   418  			ms.StoreMessageInfo(mi)
   419  		}
   420  		return ms
   421  	}
   422  	return mi.MessageOf(x)
   423  }
   424  
   425  // Deprecated: Use GetTestEnvironmentCatalogRequest.ProtoReflect.Descriptor instead.
   426  func (*GetTestEnvironmentCatalogRequest) Descriptor() ([]byte, []int) {
   427  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{1}
   428  }
   429  
   430  func (x *GetTestEnvironmentCatalogRequest) GetEnvironmentType() GetTestEnvironmentCatalogRequest_EnvironmentType {
   431  	if x != nil {
   432  		return x.EnvironmentType
   433  	}
   434  	return GetTestEnvironmentCatalogRequest_ENVIRONMENT_TYPE_UNSPECIFIED
   435  }
   436  
   437  func (x *GetTestEnvironmentCatalogRequest) GetProjectId() string {
   438  	if x != nil {
   439  		return x.ProjectId
   440  	}
   441  	return ""
   442  }
   443  
   444  // A description of a test environment.
   445  type TestEnvironmentCatalog struct {
   446  	state         protoimpl.MessageState
   447  	sizeCache     protoimpl.SizeCache
   448  	unknownFields protoimpl.UnknownFields
   449  
   450  	// Output only.
   451  	//
   452  	// Types that are assignable to EnvironmentCatalog:
   453  	//
   454  	//	*TestEnvironmentCatalog_AndroidDeviceCatalog
   455  	//	*TestEnvironmentCatalog_IosDeviceCatalog
   456  	//	*TestEnvironmentCatalog_NetworkConfigurationCatalog
   457  	//	*TestEnvironmentCatalog_SoftwareCatalog
   458  	//	*TestEnvironmentCatalog_DeviceIpBlockCatalog
   459  	EnvironmentCatalog isTestEnvironmentCatalog_EnvironmentCatalog `protobuf_oneof:"environment_catalog"`
   460  }
   461  
   462  func (x *TestEnvironmentCatalog) Reset() {
   463  	*x = TestEnvironmentCatalog{}
   464  	if protoimpl.UnsafeEnabled {
   465  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[2]
   466  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   467  		ms.StoreMessageInfo(mi)
   468  	}
   469  }
   470  
   471  func (x *TestEnvironmentCatalog) String() string {
   472  	return protoimpl.X.MessageStringOf(x)
   473  }
   474  
   475  func (*TestEnvironmentCatalog) ProtoMessage() {}
   476  
   477  func (x *TestEnvironmentCatalog) ProtoReflect() protoreflect.Message {
   478  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[2]
   479  	if protoimpl.UnsafeEnabled && x != nil {
   480  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   481  		if ms.LoadMessageInfo() == nil {
   482  			ms.StoreMessageInfo(mi)
   483  		}
   484  		return ms
   485  	}
   486  	return mi.MessageOf(x)
   487  }
   488  
   489  // Deprecated: Use TestEnvironmentCatalog.ProtoReflect.Descriptor instead.
   490  func (*TestEnvironmentCatalog) Descriptor() ([]byte, []int) {
   491  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{2}
   492  }
   493  
   494  func (m *TestEnvironmentCatalog) GetEnvironmentCatalog() isTestEnvironmentCatalog_EnvironmentCatalog {
   495  	if m != nil {
   496  		return m.EnvironmentCatalog
   497  	}
   498  	return nil
   499  }
   500  
   501  func (x *TestEnvironmentCatalog) GetAndroidDeviceCatalog() *AndroidDeviceCatalog {
   502  	if x, ok := x.GetEnvironmentCatalog().(*TestEnvironmentCatalog_AndroidDeviceCatalog); ok {
   503  		return x.AndroidDeviceCatalog
   504  	}
   505  	return nil
   506  }
   507  
   508  func (x *TestEnvironmentCatalog) GetIosDeviceCatalog() *IosDeviceCatalog {
   509  	if x, ok := x.GetEnvironmentCatalog().(*TestEnvironmentCatalog_IosDeviceCatalog); ok {
   510  		return x.IosDeviceCatalog
   511  	}
   512  	return nil
   513  }
   514  
   515  func (x *TestEnvironmentCatalog) GetNetworkConfigurationCatalog() *NetworkConfigurationCatalog {
   516  	if x, ok := x.GetEnvironmentCatalog().(*TestEnvironmentCatalog_NetworkConfigurationCatalog); ok {
   517  		return x.NetworkConfigurationCatalog
   518  	}
   519  	return nil
   520  }
   521  
   522  func (x *TestEnvironmentCatalog) GetSoftwareCatalog() *ProvidedSoftwareCatalog {
   523  	if x, ok := x.GetEnvironmentCatalog().(*TestEnvironmentCatalog_SoftwareCatalog); ok {
   524  		return x.SoftwareCatalog
   525  	}
   526  	return nil
   527  }
   528  
   529  func (x *TestEnvironmentCatalog) GetDeviceIpBlockCatalog() *DeviceIpBlockCatalog {
   530  	if x, ok := x.GetEnvironmentCatalog().(*TestEnvironmentCatalog_DeviceIpBlockCatalog); ok {
   531  		return x.DeviceIpBlockCatalog
   532  	}
   533  	return nil
   534  }
   535  
   536  type isTestEnvironmentCatalog_EnvironmentCatalog interface {
   537  	isTestEnvironmentCatalog_EnvironmentCatalog()
   538  }
   539  
   540  type TestEnvironmentCatalog_AndroidDeviceCatalog struct {
   541  	// Supported Android devices.
   542  	AndroidDeviceCatalog *AndroidDeviceCatalog `protobuf:"bytes,1,opt,name=android_device_catalog,json=androidDeviceCatalog,proto3,oneof"`
   543  }
   544  
   545  type TestEnvironmentCatalog_IosDeviceCatalog struct {
   546  	// Supported iOS devices.
   547  	IosDeviceCatalog *IosDeviceCatalog `protobuf:"bytes,3,opt,name=ios_device_catalog,json=iosDeviceCatalog,proto3,oneof"`
   548  }
   549  
   550  type TestEnvironmentCatalog_NetworkConfigurationCatalog struct {
   551  	// Supported network configurations.
   552  	NetworkConfigurationCatalog *NetworkConfigurationCatalog `protobuf:"bytes,4,opt,name=network_configuration_catalog,json=networkConfigurationCatalog,proto3,oneof"`
   553  }
   554  
   555  type TestEnvironmentCatalog_SoftwareCatalog struct {
   556  	// The software test environment provided by TestExecutionService.
   557  	SoftwareCatalog *ProvidedSoftwareCatalog `protobuf:"bytes,5,opt,name=software_catalog,json=softwareCatalog,proto3,oneof"`
   558  }
   559  
   560  type TestEnvironmentCatalog_DeviceIpBlockCatalog struct {
   561  	// The IP blocks used by devices in the test environment.
   562  	DeviceIpBlockCatalog *DeviceIpBlockCatalog `protobuf:"bytes,6,opt,name=device_ip_block_catalog,json=deviceIpBlockCatalog,proto3,oneof"`
   563  }
   564  
   565  func (*TestEnvironmentCatalog_AndroidDeviceCatalog) isTestEnvironmentCatalog_EnvironmentCatalog() {}
   566  
   567  func (*TestEnvironmentCatalog_IosDeviceCatalog) isTestEnvironmentCatalog_EnvironmentCatalog() {}
   568  
   569  func (*TestEnvironmentCatalog_NetworkConfigurationCatalog) isTestEnvironmentCatalog_EnvironmentCatalog() {
   570  }
   571  
   572  func (*TestEnvironmentCatalog_SoftwareCatalog) isTestEnvironmentCatalog_EnvironmentCatalog() {}
   573  
   574  func (*TestEnvironmentCatalog_DeviceIpBlockCatalog) isTestEnvironmentCatalog_EnvironmentCatalog() {}
   575  
   576  // List of IP blocks used by the Firebase Test Lab
   577  type DeviceIpBlockCatalog struct {
   578  	state         protoimpl.MessageState
   579  	sizeCache     protoimpl.SizeCache
   580  	unknownFields protoimpl.UnknownFields
   581  
   582  	// The device IP blocks used by Firebase Test Lab
   583  	IpBlocks []*DeviceIpBlock `protobuf:"bytes,1,rep,name=ip_blocks,json=ipBlocks,proto3" json:"ip_blocks,omitempty"`
   584  }
   585  
   586  func (x *DeviceIpBlockCatalog) Reset() {
   587  	*x = DeviceIpBlockCatalog{}
   588  	if protoimpl.UnsafeEnabled {
   589  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[3]
   590  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   591  		ms.StoreMessageInfo(mi)
   592  	}
   593  }
   594  
   595  func (x *DeviceIpBlockCatalog) String() string {
   596  	return protoimpl.X.MessageStringOf(x)
   597  }
   598  
   599  func (*DeviceIpBlockCatalog) ProtoMessage() {}
   600  
   601  func (x *DeviceIpBlockCatalog) ProtoReflect() protoreflect.Message {
   602  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[3]
   603  	if protoimpl.UnsafeEnabled && x != nil {
   604  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   605  		if ms.LoadMessageInfo() == nil {
   606  			ms.StoreMessageInfo(mi)
   607  		}
   608  		return ms
   609  	}
   610  	return mi.MessageOf(x)
   611  }
   612  
   613  // Deprecated: Use DeviceIpBlockCatalog.ProtoReflect.Descriptor instead.
   614  func (*DeviceIpBlockCatalog) Descriptor() ([]byte, []int) {
   615  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{3}
   616  }
   617  
   618  func (x *DeviceIpBlockCatalog) GetIpBlocks() []*DeviceIpBlock {
   619  	if x != nil {
   620  		return x.IpBlocks
   621  	}
   622  	return nil
   623  }
   624  
   625  // The currently supported Android devices.
   626  type AndroidDeviceCatalog struct {
   627  	state         protoimpl.MessageState
   628  	sizeCache     protoimpl.SizeCache
   629  	unknownFields protoimpl.UnknownFields
   630  
   631  	// The set of supported Android device models.
   632  	Models []*AndroidModel `protobuf:"bytes,1,rep,name=models,proto3" json:"models,omitempty"`
   633  	// The set of supported Android OS versions.
   634  	Versions []*AndroidVersion `protobuf:"bytes,2,rep,name=versions,proto3" json:"versions,omitempty"`
   635  	// The set of supported runtime configurations.
   636  	RuntimeConfiguration *AndroidRuntimeConfiguration `protobuf:"bytes,3,opt,name=runtime_configuration,json=runtimeConfiguration,proto3" json:"runtime_configuration,omitempty"`
   637  }
   638  
   639  func (x *AndroidDeviceCatalog) Reset() {
   640  	*x = AndroidDeviceCatalog{}
   641  	if protoimpl.UnsafeEnabled {
   642  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[4]
   643  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   644  		ms.StoreMessageInfo(mi)
   645  	}
   646  }
   647  
   648  func (x *AndroidDeviceCatalog) String() string {
   649  	return protoimpl.X.MessageStringOf(x)
   650  }
   651  
   652  func (*AndroidDeviceCatalog) ProtoMessage() {}
   653  
   654  func (x *AndroidDeviceCatalog) ProtoReflect() protoreflect.Message {
   655  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[4]
   656  	if protoimpl.UnsafeEnabled && x != nil {
   657  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   658  		if ms.LoadMessageInfo() == nil {
   659  			ms.StoreMessageInfo(mi)
   660  		}
   661  		return ms
   662  	}
   663  	return mi.MessageOf(x)
   664  }
   665  
   666  // Deprecated: Use AndroidDeviceCatalog.ProtoReflect.Descriptor instead.
   667  func (*AndroidDeviceCatalog) Descriptor() ([]byte, []int) {
   668  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{4}
   669  }
   670  
   671  func (x *AndroidDeviceCatalog) GetModels() []*AndroidModel {
   672  	if x != nil {
   673  		return x.Models
   674  	}
   675  	return nil
   676  }
   677  
   678  func (x *AndroidDeviceCatalog) GetVersions() []*AndroidVersion {
   679  	if x != nil {
   680  		return x.Versions
   681  	}
   682  	return nil
   683  }
   684  
   685  func (x *AndroidDeviceCatalog) GetRuntimeConfiguration() *AndroidRuntimeConfiguration {
   686  	if x != nil {
   687  		return x.RuntimeConfiguration
   688  	}
   689  	return nil
   690  }
   691  
   692  // Android configuration that can be selected at the time a test is run.
   693  type AndroidRuntimeConfiguration struct {
   694  	state         protoimpl.MessageState
   695  	sizeCache     protoimpl.SizeCache
   696  	unknownFields protoimpl.UnknownFields
   697  
   698  	// The set of available locales.
   699  	Locales []*Locale `protobuf:"bytes,1,rep,name=locales,proto3" json:"locales,omitempty"`
   700  	// The set of available orientations.
   701  	Orientations []*Orientation `protobuf:"bytes,2,rep,name=orientations,proto3" json:"orientations,omitempty"`
   702  }
   703  
   704  func (x *AndroidRuntimeConfiguration) Reset() {
   705  	*x = AndroidRuntimeConfiguration{}
   706  	if protoimpl.UnsafeEnabled {
   707  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[5]
   708  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   709  		ms.StoreMessageInfo(mi)
   710  	}
   711  }
   712  
   713  func (x *AndroidRuntimeConfiguration) String() string {
   714  	return protoimpl.X.MessageStringOf(x)
   715  }
   716  
   717  func (*AndroidRuntimeConfiguration) ProtoMessage() {}
   718  
   719  func (x *AndroidRuntimeConfiguration) ProtoReflect() protoreflect.Message {
   720  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[5]
   721  	if protoimpl.UnsafeEnabled && x != nil {
   722  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   723  		if ms.LoadMessageInfo() == nil {
   724  			ms.StoreMessageInfo(mi)
   725  		}
   726  		return ms
   727  	}
   728  	return mi.MessageOf(x)
   729  }
   730  
   731  // Deprecated: Use AndroidRuntimeConfiguration.ProtoReflect.Descriptor instead.
   732  func (*AndroidRuntimeConfiguration) Descriptor() ([]byte, []int) {
   733  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{5}
   734  }
   735  
   736  func (x *AndroidRuntimeConfiguration) GetLocales() []*Locale {
   737  	if x != nil {
   738  		return x.Locales
   739  	}
   740  	return nil
   741  }
   742  
   743  func (x *AndroidRuntimeConfiguration) GetOrientations() []*Orientation {
   744  	if x != nil {
   745  		return x.Orientations
   746  	}
   747  	return nil
   748  }
   749  
   750  // A description of an Android device tests may be run on.
   751  type AndroidModel struct {
   752  	state         protoimpl.MessageState
   753  	sizeCache     protoimpl.SizeCache
   754  	unknownFields protoimpl.UnknownFields
   755  
   756  	// The unique opaque id for this model.
   757  	// Use this for invoking the TestExecutionService.
   758  	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
   759  	// The human-readable marketing name for this device model.
   760  	// Examples: "Nexus 5", "Galaxy S5".
   761  	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
   762  	// The manufacturer of this device.
   763  	Manufacturer string `protobuf:"bytes,3,opt,name=manufacturer,proto3" json:"manufacturer,omitempty"`
   764  	// The company that this device is branded with.
   765  	// Example: "Google", "Samsung".
   766  	Brand string `protobuf:"bytes,9,opt,name=brand,proto3" json:"brand,omitempty"`
   767  	// The name of the industrial design.
   768  	// This corresponds to android.os.Build.DEVICE.
   769  	Codename string `protobuf:"bytes,10,opt,name=codename,proto3" json:"codename,omitempty"`
   770  	// Whether this device is virtual or physical.
   771  	Form DeviceForm `protobuf:"varint,4,opt,name=form,proto3,enum=google.devtools.testing.v1.DeviceForm" json:"form,omitempty"`
   772  	// Whether this device is a phone, tablet, wearable, etc.
   773  	FormFactor DeviceFormFactor `protobuf:"varint,16,opt,name=form_factor,json=formFactor,proto3,enum=google.devtools.testing.v1.DeviceFormFactor" json:"form_factor,omitempty"`
   774  	// Version-specific information of an Android model.
   775  	PerVersionInfo []*PerAndroidVersionInfo `protobuf:"bytes,21,rep,name=per_version_info,json=perVersionInfo,proto3" json:"per_version_info,omitempty"`
   776  	// Screen size in the horizontal (X) dimension measured in pixels.
   777  	ScreenX int32 `protobuf:"varint,5,opt,name=screen_x,json=screenX,proto3" json:"screen_x,omitempty"`
   778  	// Screen size in the vertical (Y) dimension measured in pixels.
   779  	ScreenY int32 `protobuf:"varint,6,opt,name=screen_y,json=screenY,proto3" json:"screen_y,omitempty"`
   780  	// Screen density in DPI.
   781  	// This corresponds to ro.sf.lcd_density
   782  	ScreenDensity int32 `protobuf:"varint,12,opt,name=screen_density,json=screenDensity,proto3" json:"screen_density,omitempty"`
   783  	// True if and only if tests with this model are recorded by stitching
   784  	// together screenshots. See use_low_spec_video_recording in device config.
   785  	LowFpsVideoRecording bool `protobuf:"varint,17,opt,name=low_fps_video_recording,json=lowFpsVideoRecording,proto3" json:"low_fps_video_recording,omitempty"`
   786  	// The set of Android versions this device supports.
   787  	SupportedVersionIds []string `protobuf:"bytes,7,rep,name=supported_version_ids,json=supportedVersionIds,proto3" json:"supported_version_ids,omitempty"`
   788  	// The list of supported ABIs for this device.
   789  	// This corresponds to either android.os.Build.SUPPORTED_ABIS (for API level
   790  	// 21 and above) or android.os.Build.CPU_ABI/CPU_ABI2.
   791  	// The most preferred ABI is the first element in the list.
   792  	//
   793  	// Elements are optionally prefixed by "version_id:" (where version_id is
   794  	// the id of an AndroidVersion), denoting an ABI that is supported only on
   795  	// a particular version.
   796  	SupportedAbis []string `protobuf:"bytes,11,rep,name=supported_abis,json=supportedAbis,proto3" json:"supported_abis,omitempty"`
   797  	// Tags for this dimension.
   798  	// Examples: "default", "preview", "deprecated".
   799  	Tags []string `protobuf:"bytes,8,rep,name=tags,proto3" json:"tags,omitempty"`
   800  	// URL of a thumbnail image (photo) of the device.
   801  	ThumbnailUrl string `protobuf:"bytes,19,opt,name=thumbnail_url,json=thumbnailUrl,proto3" json:"thumbnail_url,omitempty"`
   802  }
   803  
   804  func (x *AndroidModel) Reset() {
   805  	*x = AndroidModel{}
   806  	if protoimpl.UnsafeEnabled {
   807  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[6]
   808  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   809  		ms.StoreMessageInfo(mi)
   810  	}
   811  }
   812  
   813  func (x *AndroidModel) String() string {
   814  	return protoimpl.X.MessageStringOf(x)
   815  }
   816  
   817  func (*AndroidModel) ProtoMessage() {}
   818  
   819  func (x *AndroidModel) ProtoReflect() protoreflect.Message {
   820  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[6]
   821  	if protoimpl.UnsafeEnabled && x != nil {
   822  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   823  		if ms.LoadMessageInfo() == nil {
   824  			ms.StoreMessageInfo(mi)
   825  		}
   826  		return ms
   827  	}
   828  	return mi.MessageOf(x)
   829  }
   830  
   831  // Deprecated: Use AndroidModel.ProtoReflect.Descriptor instead.
   832  func (*AndroidModel) Descriptor() ([]byte, []int) {
   833  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{6}
   834  }
   835  
   836  func (x *AndroidModel) GetId() string {
   837  	if x != nil {
   838  		return x.Id
   839  	}
   840  	return ""
   841  }
   842  
   843  func (x *AndroidModel) GetName() string {
   844  	if x != nil {
   845  		return x.Name
   846  	}
   847  	return ""
   848  }
   849  
   850  func (x *AndroidModel) GetManufacturer() string {
   851  	if x != nil {
   852  		return x.Manufacturer
   853  	}
   854  	return ""
   855  }
   856  
   857  func (x *AndroidModel) GetBrand() string {
   858  	if x != nil {
   859  		return x.Brand
   860  	}
   861  	return ""
   862  }
   863  
   864  func (x *AndroidModel) GetCodename() string {
   865  	if x != nil {
   866  		return x.Codename
   867  	}
   868  	return ""
   869  }
   870  
   871  func (x *AndroidModel) GetForm() DeviceForm {
   872  	if x != nil {
   873  		return x.Form
   874  	}
   875  	return DeviceForm_DEVICE_FORM_UNSPECIFIED
   876  }
   877  
   878  func (x *AndroidModel) GetFormFactor() DeviceFormFactor {
   879  	if x != nil {
   880  		return x.FormFactor
   881  	}
   882  	return DeviceFormFactor_DEVICE_FORM_FACTOR_UNSPECIFIED
   883  }
   884  
   885  func (x *AndroidModel) GetPerVersionInfo() []*PerAndroidVersionInfo {
   886  	if x != nil {
   887  		return x.PerVersionInfo
   888  	}
   889  	return nil
   890  }
   891  
   892  func (x *AndroidModel) GetScreenX() int32 {
   893  	if x != nil {
   894  		return x.ScreenX
   895  	}
   896  	return 0
   897  }
   898  
   899  func (x *AndroidModel) GetScreenY() int32 {
   900  	if x != nil {
   901  		return x.ScreenY
   902  	}
   903  	return 0
   904  }
   905  
   906  func (x *AndroidModel) GetScreenDensity() int32 {
   907  	if x != nil {
   908  		return x.ScreenDensity
   909  	}
   910  	return 0
   911  }
   912  
   913  func (x *AndroidModel) GetLowFpsVideoRecording() bool {
   914  	if x != nil {
   915  		return x.LowFpsVideoRecording
   916  	}
   917  	return false
   918  }
   919  
   920  func (x *AndroidModel) GetSupportedVersionIds() []string {
   921  	if x != nil {
   922  		return x.SupportedVersionIds
   923  	}
   924  	return nil
   925  }
   926  
   927  func (x *AndroidModel) GetSupportedAbis() []string {
   928  	if x != nil {
   929  		return x.SupportedAbis
   930  	}
   931  	return nil
   932  }
   933  
   934  func (x *AndroidModel) GetTags() []string {
   935  	if x != nil {
   936  		return x.Tags
   937  	}
   938  	return nil
   939  }
   940  
   941  func (x *AndroidModel) GetThumbnailUrl() string {
   942  	if x != nil {
   943  		return x.ThumbnailUrl
   944  	}
   945  	return ""
   946  }
   947  
   948  // A version of the Android OS.
   949  type AndroidVersion struct {
   950  	state         protoimpl.MessageState
   951  	sizeCache     protoimpl.SizeCache
   952  	unknownFields protoimpl.UnknownFields
   953  
   954  	// An opaque id for this Android version.
   955  	// Use this id to invoke the TestExecutionService.
   956  	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
   957  	// A string representing this version of the Android OS.
   958  	// Examples: "4.3", "4.4".
   959  	VersionString string `protobuf:"bytes,2,opt,name=version_string,json=versionString,proto3" json:"version_string,omitempty"`
   960  	// The API level for this Android version.
   961  	// Examples: 18, 19.
   962  	ApiLevel int32 `protobuf:"varint,3,opt,name=api_level,json=apiLevel,proto3" json:"api_level,omitempty"`
   963  	// The code name for this Android version.
   964  	// Examples: "JellyBean", "KitKat".
   965  	CodeName string `protobuf:"bytes,4,opt,name=code_name,json=codeName,proto3" json:"code_name,omitempty"`
   966  	// The date this Android version became available in the market.
   967  	ReleaseDate *date.Date `protobuf:"bytes,5,opt,name=release_date,json=releaseDate,proto3" json:"release_date,omitempty"`
   968  	// Market share for this version.
   969  	Distribution *Distribution `protobuf:"bytes,6,opt,name=distribution,proto3" json:"distribution,omitempty"`
   970  	// Tags for this dimension.
   971  	// Examples: "default", "preview", "deprecated".
   972  	Tags []string `protobuf:"bytes,7,rep,name=tags,proto3" json:"tags,omitempty"`
   973  }
   974  
   975  func (x *AndroidVersion) Reset() {
   976  	*x = AndroidVersion{}
   977  	if protoimpl.UnsafeEnabled {
   978  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[7]
   979  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   980  		ms.StoreMessageInfo(mi)
   981  	}
   982  }
   983  
   984  func (x *AndroidVersion) String() string {
   985  	return protoimpl.X.MessageStringOf(x)
   986  }
   987  
   988  func (*AndroidVersion) ProtoMessage() {}
   989  
   990  func (x *AndroidVersion) ProtoReflect() protoreflect.Message {
   991  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[7]
   992  	if protoimpl.UnsafeEnabled && x != nil {
   993  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   994  		if ms.LoadMessageInfo() == nil {
   995  			ms.StoreMessageInfo(mi)
   996  		}
   997  		return ms
   998  	}
   999  	return mi.MessageOf(x)
  1000  }
  1001  
  1002  // Deprecated: Use AndroidVersion.ProtoReflect.Descriptor instead.
  1003  func (*AndroidVersion) Descriptor() ([]byte, []int) {
  1004  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{7}
  1005  }
  1006  
  1007  func (x *AndroidVersion) GetId() string {
  1008  	if x != nil {
  1009  		return x.Id
  1010  	}
  1011  	return ""
  1012  }
  1013  
  1014  func (x *AndroidVersion) GetVersionString() string {
  1015  	if x != nil {
  1016  		return x.VersionString
  1017  	}
  1018  	return ""
  1019  }
  1020  
  1021  func (x *AndroidVersion) GetApiLevel() int32 {
  1022  	if x != nil {
  1023  		return x.ApiLevel
  1024  	}
  1025  	return 0
  1026  }
  1027  
  1028  func (x *AndroidVersion) GetCodeName() string {
  1029  	if x != nil {
  1030  		return x.CodeName
  1031  	}
  1032  	return ""
  1033  }
  1034  
  1035  func (x *AndroidVersion) GetReleaseDate() *date.Date {
  1036  	if x != nil {
  1037  		return x.ReleaseDate
  1038  	}
  1039  	return nil
  1040  }
  1041  
  1042  func (x *AndroidVersion) GetDistribution() *Distribution {
  1043  	if x != nil {
  1044  		return x.Distribution
  1045  	}
  1046  	return nil
  1047  }
  1048  
  1049  func (x *AndroidVersion) GetTags() []string {
  1050  	if x != nil {
  1051  		return x.Tags
  1052  	}
  1053  	return nil
  1054  }
  1055  
  1056  // A version-specific information of an Android model.
  1057  type PerAndroidVersionInfo struct {
  1058  	state         protoimpl.MessageState
  1059  	sizeCache     protoimpl.SizeCache
  1060  	unknownFields protoimpl.UnknownFields
  1061  
  1062  	// An Android version.
  1063  	VersionId string `protobuf:"bytes,1,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"`
  1064  	// The number of online devices for an Android version.
  1065  	DeviceCapacity DeviceCapacity `protobuf:"varint,2,opt,name=device_capacity,json=deviceCapacity,proto3,enum=google.devtools.testing.v1.DeviceCapacity" json:"device_capacity,omitempty"`
  1066  }
  1067  
  1068  func (x *PerAndroidVersionInfo) Reset() {
  1069  	*x = PerAndroidVersionInfo{}
  1070  	if protoimpl.UnsafeEnabled {
  1071  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[8]
  1072  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1073  		ms.StoreMessageInfo(mi)
  1074  	}
  1075  }
  1076  
  1077  func (x *PerAndroidVersionInfo) String() string {
  1078  	return protoimpl.X.MessageStringOf(x)
  1079  }
  1080  
  1081  func (*PerAndroidVersionInfo) ProtoMessage() {}
  1082  
  1083  func (x *PerAndroidVersionInfo) ProtoReflect() protoreflect.Message {
  1084  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[8]
  1085  	if protoimpl.UnsafeEnabled && x != nil {
  1086  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1087  		if ms.LoadMessageInfo() == nil {
  1088  			ms.StoreMessageInfo(mi)
  1089  		}
  1090  		return ms
  1091  	}
  1092  	return mi.MessageOf(x)
  1093  }
  1094  
  1095  // Deprecated: Use PerAndroidVersionInfo.ProtoReflect.Descriptor instead.
  1096  func (*PerAndroidVersionInfo) Descriptor() ([]byte, []int) {
  1097  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{8}
  1098  }
  1099  
  1100  func (x *PerAndroidVersionInfo) GetVersionId() string {
  1101  	if x != nil {
  1102  		return x.VersionId
  1103  	}
  1104  	return ""
  1105  }
  1106  
  1107  func (x *PerAndroidVersionInfo) GetDeviceCapacity() DeviceCapacity {
  1108  	if x != nil {
  1109  		return x.DeviceCapacity
  1110  	}
  1111  	return DeviceCapacity_DEVICE_CAPACITY_UNSPECIFIED
  1112  }
  1113  
  1114  // Data about the relative number of devices running a
  1115  // given configuration of the Android platform.
  1116  type Distribution struct {
  1117  	state         protoimpl.MessageState
  1118  	sizeCache     protoimpl.SizeCache
  1119  	unknownFields protoimpl.UnknownFields
  1120  
  1121  	// Output only. The time this distribution was measured.
  1122  	MeasurementTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=measurement_time,json=measurementTime,proto3" json:"measurement_time,omitempty"`
  1123  	// Output only. The estimated fraction (0-1) of the total market with this
  1124  	// configuration.
  1125  	MarketShare float64 `protobuf:"fixed64,2,opt,name=market_share,json=marketShare,proto3" json:"market_share,omitempty"`
  1126  }
  1127  
  1128  func (x *Distribution) Reset() {
  1129  	*x = Distribution{}
  1130  	if protoimpl.UnsafeEnabled {
  1131  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[9]
  1132  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1133  		ms.StoreMessageInfo(mi)
  1134  	}
  1135  }
  1136  
  1137  func (x *Distribution) String() string {
  1138  	return protoimpl.X.MessageStringOf(x)
  1139  }
  1140  
  1141  func (*Distribution) ProtoMessage() {}
  1142  
  1143  func (x *Distribution) ProtoReflect() protoreflect.Message {
  1144  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[9]
  1145  	if protoimpl.UnsafeEnabled && x != nil {
  1146  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1147  		if ms.LoadMessageInfo() == nil {
  1148  			ms.StoreMessageInfo(mi)
  1149  		}
  1150  		return ms
  1151  	}
  1152  	return mi.MessageOf(x)
  1153  }
  1154  
  1155  // Deprecated: Use Distribution.ProtoReflect.Descriptor instead.
  1156  func (*Distribution) Descriptor() ([]byte, []int) {
  1157  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{9}
  1158  }
  1159  
  1160  func (x *Distribution) GetMeasurementTime() *timestamppb.Timestamp {
  1161  	if x != nil {
  1162  		return x.MeasurementTime
  1163  	}
  1164  	return nil
  1165  }
  1166  
  1167  func (x *Distribution) GetMarketShare() float64 {
  1168  	if x != nil {
  1169  		return x.MarketShare
  1170  	}
  1171  	return 0
  1172  }
  1173  
  1174  // The currently supported iOS devices.
  1175  type IosDeviceCatalog struct {
  1176  	state         protoimpl.MessageState
  1177  	sizeCache     protoimpl.SizeCache
  1178  	unknownFields protoimpl.UnknownFields
  1179  
  1180  	// The set of supported iOS device models.
  1181  	Models []*IosModel `protobuf:"bytes,1,rep,name=models,proto3" json:"models,omitempty"`
  1182  	// The set of supported iOS software versions.
  1183  	Versions []*IosVersion `protobuf:"bytes,2,rep,name=versions,proto3" json:"versions,omitempty"`
  1184  	// The set of supported Xcode versions.
  1185  	XcodeVersions []*XcodeVersion `protobuf:"bytes,4,rep,name=xcode_versions,json=xcodeVersions,proto3" json:"xcode_versions,omitempty"`
  1186  	// The set of supported runtime configurations.
  1187  	RuntimeConfiguration *IosRuntimeConfiguration `protobuf:"bytes,3,opt,name=runtime_configuration,json=runtimeConfiguration,proto3" json:"runtime_configuration,omitempty"`
  1188  }
  1189  
  1190  func (x *IosDeviceCatalog) Reset() {
  1191  	*x = IosDeviceCatalog{}
  1192  	if protoimpl.UnsafeEnabled {
  1193  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[10]
  1194  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1195  		ms.StoreMessageInfo(mi)
  1196  	}
  1197  }
  1198  
  1199  func (x *IosDeviceCatalog) String() string {
  1200  	return protoimpl.X.MessageStringOf(x)
  1201  }
  1202  
  1203  func (*IosDeviceCatalog) ProtoMessage() {}
  1204  
  1205  func (x *IosDeviceCatalog) ProtoReflect() protoreflect.Message {
  1206  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[10]
  1207  	if protoimpl.UnsafeEnabled && x != nil {
  1208  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1209  		if ms.LoadMessageInfo() == nil {
  1210  			ms.StoreMessageInfo(mi)
  1211  		}
  1212  		return ms
  1213  	}
  1214  	return mi.MessageOf(x)
  1215  }
  1216  
  1217  // Deprecated: Use IosDeviceCatalog.ProtoReflect.Descriptor instead.
  1218  func (*IosDeviceCatalog) Descriptor() ([]byte, []int) {
  1219  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{10}
  1220  }
  1221  
  1222  func (x *IosDeviceCatalog) GetModels() []*IosModel {
  1223  	if x != nil {
  1224  		return x.Models
  1225  	}
  1226  	return nil
  1227  }
  1228  
  1229  func (x *IosDeviceCatalog) GetVersions() []*IosVersion {
  1230  	if x != nil {
  1231  		return x.Versions
  1232  	}
  1233  	return nil
  1234  }
  1235  
  1236  func (x *IosDeviceCatalog) GetXcodeVersions() []*XcodeVersion {
  1237  	if x != nil {
  1238  		return x.XcodeVersions
  1239  	}
  1240  	return nil
  1241  }
  1242  
  1243  func (x *IosDeviceCatalog) GetRuntimeConfiguration() *IosRuntimeConfiguration {
  1244  	if x != nil {
  1245  		return x.RuntimeConfiguration
  1246  	}
  1247  	return nil
  1248  }
  1249  
  1250  // iOS configuration that can be selected at the time a test is run.
  1251  type IosRuntimeConfiguration struct {
  1252  	state         protoimpl.MessageState
  1253  	sizeCache     protoimpl.SizeCache
  1254  	unknownFields protoimpl.UnknownFields
  1255  
  1256  	// The set of available locales.
  1257  	Locales []*Locale `protobuf:"bytes,1,rep,name=locales,proto3" json:"locales,omitempty"`
  1258  	// The set of available orientations.
  1259  	Orientations []*Orientation `protobuf:"bytes,2,rep,name=orientations,proto3" json:"orientations,omitempty"`
  1260  }
  1261  
  1262  func (x *IosRuntimeConfiguration) Reset() {
  1263  	*x = IosRuntimeConfiguration{}
  1264  	if protoimpl.UnsafeEnabled {
  1265  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[11]
  1266  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1267  		ms.StoreMessageInfo(mi)
  1268  	}
  1269  }
  1270  
  1271  func (x *IosRuntimeConfiguration) String() string {
  1272  	return protoimpl.X.MessageStringOf(x)
  1273  }
  1274  
  1275  func (*IosRuntimeConfiguration) ProtoMessage() {}
  1276  
  1277  func (x *IosRuntimeConfiguration) ProtoReflect() protoreflect.Message {
  1278  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[11]
  1279  	if protoimpl.UnsafeEnabled && x != nil {
  1280  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1281  		if ms.LoadMessageInfo() == nil {
  1282  			ms.StoreMessageInfo(mi)
  1283  		}
  1284  		return ms
  1285  	}
  1286  	return mi.MessageOf(x)
  1287  }
  1288  
  1289  // Deprecated: Use IosRuntimeConfiguration.ProtoReflect.Descriptor instead.
  1290  func (*IosRuntimeConfiguration) Descriptor() ([]byte, []int) {
  1291  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{11}
  1292  }
  1293  
  1294  func (x *IosRuntimeConfiguration) GetLocales() []*Locale {
  1295  	if x != nil {
  1296  		return x.Locales
  1297  	}
  1298  	return nil
  1299  }
  1300  
  1301  func (x *IosRuntimeConfiguration) GetOrientations() []*Orientation {
  1302  	if x != nil {
  1303  		return x.Orientations
  1304  	}
  1305  	return nil
  1306  }
  1307  
  1308  // A description of an iOS device tests may be run on.
  1309  type IosModel struct {
  1310  	state         protoimpl.MessageState
  1311  	sizeCache     protoimpl.SizeCache
  1312  	unknownFields protoimpl.UnknownFields
  1313  
  1314  	// The unique opaque id for this model.
  1315  	// Use this for invoking the TestExecutionService.
  1316  	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
  1317  	// The human-readable name for this device model.
  1318  	// Examples: "iPhone 4s", "iPad Mini 2".
  1319  	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
  1320  	// The set of iOS major software versions this device supports.
  1321  	SupportedVersionIds []string `protobuf:"bytes,3,rep,name=supported_version_ids,json=supportedVersionIds,proto3" json:"supported_version_ids,omitempty"`
  1322  	// Tags for this dimension.
  1323  	// Examples: "default", "preview", "deprecated".
  1324  	Tags []string `protobuf:"bytes,4,rep,name=tags,proto3" json:"tags,omitempty"`
  1325  	// Device capabilities.
  1326  	// Copied from
  1327  	// https://developer.apple.com/library/archive/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html
  1328  	DeviceCapabilities []string `protobuf:"bytes,5,rep,name=device_capabilities,json=deviceCapabilities,proto3" json:"device_capabilities,omitempty"`
  1329  	// Screen size in the horizontal (X) dimension measured in pixels.
  1330  	ScreenX int32 `protobuf:"varint,7,opt,name=screen_x,json=screenX,proto3" json:"screen_x,omitempty"`
  1331  	// Screen size in the vertical (Y) dimension measured in pixels.
  1332  	ScreenY int32 `protobuf:"varint,8,opt,name=screen_y,json=screenY,proto3" json:"screen_y,omitempty"`
  1333  	// Screen density in DPI.
  1334  	ScreenDensity int32 `protobuf:"varint,9,opt,name=screen_density,json=screenDensity,proto3" json:"screen_density,omitempty"`
  1335  	// Whether this device is a phone, tablet, wearable, etc.
  1336  	FormFactor DeviceFormFactor `protobuf:"varint,6,opt,name=form_factor,json=formFactor,proto3,enum=google.devtools.testing.v1.DeviceFormFactor" json:"form_factor,omitempty"`
  1337  	// Version-specific information of an iOS model.
  1338  	PerVersionInfo []*PerIosVersionInfo `protobuf:"bytes,14,rep,name=per_version_info,json=perVersionInfo,proto3" json:"per_version_info,omitempty"`
  1339  }
  1340  
  1341  func (x *IosModel) Reset() {
  1342  	*x = IosModel{}
  1343  	if protoimpl.UnsafeEnabled {
  1344  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[12]
  1345  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1346  		ms.StoreMessageInfo(mi)
  1347  	}
  1348  }
  1349  
  1350  func (x *IosModel) String() string {
  1351  	return protoimpl.X.MessageStringOf(x)
  1352  }
  1353  
  1354  func (*IosModel) ProtoMessage() {}
  1355  
  1356  func (x *IosModel) ProtoReflect() protoreflect.Message {
  1357  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[12]
  1358  	if protoimpl.UnsafeEnabled && x != nil {
  1359  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1360  		if ms.LoadMessageInfo() == nil {
  1361  			ms.StoreMessageInfo(mi)
  1362  		}
  1363  		return ms
  1364  	}
  1365  	return mi.MessageOf(x)
  1366  }
  1367  
  1368  // Deprecated: Use IosModel.ProtoReflect.Descriptor instead.
  1369  func (*IosModel) Descriptor() ([]byte, []int) {
  1370  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{12}
  1371  }
  1372  
  1373  func (x *IosModel) GetId() string {
  1374  	if x != nil {
  1375  		return x.Id
  1376  	}
  1377  	return ""
  1378  }
  1379  
  1380  func (x *IosModel) GetName() string {
  1381  	if x != nil {
  1382  		return x.Name
  1383  	}
  1384  	return ""
  1385  }
  1386  
  1387  func (x *IosModel) GetSupportedVersionIds() []string {
  1388  	if x != nil {
  1389  		return x.SupportedVersionIds
  1390  	}
  1391  	return nil
  1392  }
  1393  
  1394  func (x *IosModel) GetTags() []string {
  1395  	if x != nil {
  1396  		return x.Tags
  1397  	}
  1398  	return nil
  1399  }
  1400  
  1401  func (x *IosModel) GetDeviceCapabilities() []string {
  1402  	if x != nil {
  1403  		return x.DeviceCapabilities
  1404  	}
  1405  	return nil
  1406  }
  1407  
  1408  func (x *IosModel) GetScreenX() int32 {
  1409  	if x != nil {
  1410  		return x.ScreenX
  1411  	}
  1412  	return 0
  1413  }
  1414  
  1415  func (x *IosModel) GetScreenY() int32 {
  1416  	if x != nil {
  1417  		return x.ScreenY
  1418  	}
  1419  	return 0
  1420  }
  1421  
  1422  func (x *IosModel) GetScreenDensity() int32 {
  1423  	if x != nil {
  1424  		return x.ScreenDensity
  1425  	}
  1426  	return 0
  1427  }
  1428  
  1429  func (x *IosModel) GetFormFactor() DeviceFormFactor {
  1430  	if x != nil {
  1431  		return x.FormFactor
  1432  	}
  1433  	return DeviceFormFactor_DEVICE_FORM_FACTOR_UNSPECIFIED
  1434  }
  1435  
  1436  func (x *IosModel) GetPerVersionInfo() []*PerIosVersionInfo {
  1437  	if x != nil {
  1438  		return x.PerVersionInfo
  1439  	}
  1440  	return nil
  1441  }
  1442  
  1443  // An iOS version.
  1444  type IosVersion struct {
  1445  	state         protoimpl.MessageState
  1446  	sizeCache     protoimpl.SizeCache
  1447  	unknownFields protoimpl.UnknownFields
  1448  
  1449  	// An opaque id for this iOS version.
  1450  	// Use this id to invoke the TestExecutionService.
  1451  	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
  1452  	// An integer representing the major iOS version.
  1453  	// Examples: "8", "9".
  1454  	MajorVersion int32 `protobuf:"varint,2,opt,name=major_version,json=majorVersion,proto3" json:"major_version,omitempty"`
  1455  	// An integer representing the minor iOS version.
  1456  	// Examples: "1", "2".
  1457  	MinorVersion int32 `protobuf:"varint,4,opt,name=minor_version,json=minorVersion,proto3" json:"minor_version,omitempty"`
  1458  	// Tags for this dimension.
  1459  	// Examples: "default", "preview", "deprecated".
  1460  	Tags []string `protobuf:"bytes,3,rep,name=tags,proto3" json:"tags,omitempty"`
  1461  	// The available Xcode versions for this version.
  1462  	SupportedXcodeVersionIds []string `protobuf:"bytes,5,rep,name=supported_xcode_version_ids,json=supportedXcodeVersionIds,proto3" json:"supported_xcode_version_ids,omitempty"`
  1463  }
  1464  
  1465  func (x *IosVersion) Reset() {
  1466  	*x = IosVersion{}
  1467  	if protoimpl.UnsafeEnabled {
  1468  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[13]
  1469  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1470  		ms.StoreMessageInfo(mi)
  1471  	}
  1472  }
  1473  
  1474  func (x *IosVersion) String() string {
  1475  	return protoimpl.X.MessageStringOf(x)
  1476  }
  1477  
  1478  func (*IosVersion) ProtoMessage() {}
  1479  
  1480  func (x *IosVersion) ProtoReflect() protoreflect.Message {
  1481  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[13]
  1482  	if protoimpl.UnsafeEnabled && x != nil {
  1483  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1484  		if ms.LoadMessageInfo() == nil {
  1485  			ms.StoreMessageInfo(mi)
  1486  		}
  1487  		return ms
  1488  	}
  1489  	return mi.MessageOf(x)
  1490  }
  1491  
  1492  // Deprecated: Use IosVersion.ProtoReflect.Descriptor instead.
  1493  func (*IosVersion) Descriptor() ([]byte, []int) {
  1494  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{13}
  1495  }
  1496  
  1497  func (x *IosVersion) GetId() string {
  1498  	if x != nil {
  1499  		return x.Id
  1500  	}
  1501  	return ""
  1502  }
  1503  
  1504  func (x *IosVersion) GetMajorVersion() int32 {
  1505  	if x != nil {
  1506  		return x.MajorVersion
  1507  	}
  1508  	return 0
  1509  }
  1510  
  1511  func (x *IosVersion) GetMinorVersion() int32 {
  1512  	if x != nil {
  1513  		return x.MinorVersion
  1514  	}
  1515  	return 0
  1516  }
  1517  
  1518  func (x *IosVersion) GetTags() []string {
  1519  	if x != nil {
  1520  		return x.Tags
  1521  	}
  1522  	return nil
  1523  }
  1524  
  1525  func (x *IosVersion) GetSupportedXcodeVersionIds() []string {
  1526  	if x != nil {
  1527  		return x.SupportedXcodeVersionIds
  1528  	}
  1529  	return nil
  1530  }
  1531  
  1532  // A version-specific information of an iOS model.
  1533  type PerIosVersionInfo struct {
  1534  	state         protoimpl.MessageState
  1535  	sizeCache     protoimpl.SizeCache
  1536  	unknownFields protoimpl.UnknownFields
  1537  
  1538  	// An iOS version.
  1539  	VersionId string `protobuf:"bytes,1,opt,name=version_id,json=versionId,proto3" json:"version_id,omitempty"`
  1540  	// The number of online devices for an iOS version.
  1541  	DeviceCapacity DeviceCapacity `protobuf:"varint,2,opt,name=device_capacity,json=deviceCapacity,proto3,enum=google.devtools.testing.v1.DeviceCapacity" json:"device_capacity,omitempty"`
  1542  }
  1543  
  1544  func (x *PerIosVersionInfo) Reset() {
  1545  	*x = PerIosVersionInfo{}
  1546  	if protoimpl.UnsafeEnabled {
  1547  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[14]
  1548  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1549  		ms.StoreMessageInfo(mi)
  1550  	}
  1551  }
  1552  
  1553  func (x *PerIosVersionInfo) String() string {
  1554  	return protoimpl.X.MessageStringOf(x)
  1555  }
  1556  
  1557  func (*PerIosVersionInfo) ProtoMessage() {}
  1558  
  1559  func (x *PerIosVersionInfo) ProtoReflect() protoreflect.Message {
  1560  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[14]
  1561  	if protoimpl.UnsafeEnabled && x != nil {
  1562  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1563  		if ms.LoadMessageInfo() == nil {
  1564  			ms.StoreMessageInfo(mi)
  1565  		}
  1566  		return ms
  1567  	}
  1568  	return mi.MessageOf(x)
  1569  }
  1570  
  1571  // Deprecated: Use PerIosVersionInfo.ProtoReflect.Descriptor instead.
  1572  func (*PerIosVersionInfo) Descriptor() ([]byte, []int) {
  1573  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{14}
  1574  }
  1575  
  1576  func (x *PerIosVersionInfo) GetVersionId() string {
  1577  	if x != nil {
  1578  		return x.VersionId
  1579  	}
  1580  	return ""
  1581  }
  1582  
  1583  func (x *PerIosVersionInfo) GetDeviceCapacity() DeviceCapacity {
  1584  	if x != nil {
  1585  		return x.DeviceCapacity
  1586  	}
  1587  	return DeviceCapacity_DEVICE_CAPACITY_UNSPECIFIED
  1588  }
  1589  
  1590  // A location/region designation for language.
  1591  type Locale struct {
  1592  	state         protoimpl.MessageState
  1593  	sizeCache     protoimpl.SizeCache
  1594  	unknownFields protoimpl.UnknownFields
  1595  
  1596  	// The id for this locale.
  1597  	// Example: "en_US".
  1598  	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
  1599  	// A human-friendly name for this language/locale.
  1600  	// Example: "English".
  1601  	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
  1602  	// A human-friendly string representing the region for this
  1603  	// locale. Example: "United States". Not present for every locale.
  1604  	Region string `protobuf:"bytes,3,opt,name=region,proto3" json:"region,omitempty"`
  1605  	// Tags for this dimension.
  1606  	// Example: "default".
  1607  	Tags []string `protobuf:"bytes,4,rep,name=tags,proto3" json:"tags,omitempty"`
  1608  }
  1609  
  1610  func (x *Locale) Reset() {
  1611  	*x = Locale{}
  1612  	if protoimpl.UnsafeEnabled {
  1613  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[15]
  1614  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1615  		ms.StoreMessageInfo(mi)
  1616  	}
  1617  }
  1618  
  1619  func (x *Locale) String() string {
  1620  	return protoimpl.X.MessageStringOf(x)
  1621  }
  1622  
  1623  func (*Locale) ProtoMessage() {}
  1624  
  1625  func (x *Locale) ProtoReflect() protoreflect.Message {
  1626  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[15]
  1627  	if protoimpl.UnsafeEnabled && x != nil {
  1628  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1629  		if ms.LoadMessageInfo() == nil {
  1630  			ms.StoreMessageInfo(mi)
  1631  		}
  1632  		return ms
  1633  	}
  1634  	return mi.MessageOf(x)
  1635  }
  1636  
  1637  // Deprecated: Use Locale.ProtoReflect.Descriptor instead.
  1638  func (*Locale) Descriptor() ([]byte, []int) {
  1639  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{15}
  1640  }
  1641  
  1642  func (x *Locale) GetId() string {
  1643  	if x != nil {
  1644  		return x.Id
  1645  	}
  1646  	return ""
  1647  }
  1648  
  1649  func (x *Locale) GetName() string {
  1650  	if x != nil {
  1651  		return x.Name
  1652  	}
  1653  	return ""
  1654  }
  1655  
  1656  func (x *Locale) GetRegion() string {
  1657  	if x != nil {
  1658  		return x.Region
  1659  	}
  1660  	return ""
  1661  }
  1662  
  1663  func (x *Locale) GetTags() []string {
  1664  	if x != nil {
  1665  		return x.Tags
  1666  	}
  1667  	return nil
  1668  }
  1669  
  1670  // Screen orientation of the device.
  1671  type Orientation struct {
  1672  	state         protoimpl.MessageState
  1673  	sizeCache     protoimpl.SizeCache
  1674  	unknownFields protoimpl.UnknownFields
  1675  
  1676  	// The id for this orientation.
  1677  	// Example: "portrait".
  1678  	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
  1679  	// A human-friendly name for this orientation.
  1680  	// Example: "portrait".
  1681  	Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
  1682  	// Tags for this dimension.
  1683  	// Example: "default".
  1684  	Tags []string `protobuf:"bytes,3,rep,name=tags,proto3" json:"tags,omitempty"`
  1685  }
  1686  
  1687  func (x *Orientation) Reset() {
  1688  	*x = Orientation{}
  1689  	if protoimpl.UnsafeEnabled {
  1690  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[16]
  1691  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1692  		ms.StoreMessageInfo(mi)
  1693  	}
  1694  }
  1695  
  1696  func (x *Orientation) String() string {
  1697  	return protoimpl.X.MessageStringOf(x)
  1698  }
  1699  
  1700  func (*Orientation) ProtoMessage() {}
  1701  
  1702  func (x *Orientation) ProtoReflect() protoreflect.Message {
  1703  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[16]
  1704  	if protoimpl.UnsafeEnabled && x != nil {
  1705  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1706  		if ms.LoadMessageInfo() == nil {
  1707  			ms.StoreMessageInfo(mi)
  1708  		}
  1709  		return ms
  1710  	}
  1711  	return mi.MessageOf(x)
  1712  }
  1713  
  1714  // Deprecated: Use Orientation.ProtoReflect.Descriptor instead.
  1715  func (*Orientation) Descriptor() ([]byte, []int) {
  1716  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{16}
  1717  }
  1718  
  1719  func (x *Orientation) GetId() string {
  1720  	if x != nil {
  1721  		return x.Id
  1722  	}
  1723  	return ""
  1724  }
  1725  
  1726  func (x *Orientation) GetName() string {
  1727  	if x != nil {
  1728  		return x.Name
  1729  	}
  1730  	return ""
  1731  }
  1732  
  1733  func (x *Orientation) GetTags() []string {
  1734  	if x != nil {
  1735  		return x.Tags
  1736  	}
  1737  	return nil
  1738  }
  1739  
  1740  // An Xcode version that an iOS version is compatible with.
  1741  type XcodeVersion struct {
  1742  	state         protoimpl.MessageState
  1743  	sizeCache     protoimpl.SizeCache
  1744  	unknownFields protoimpl.UnknownFields
  1745  
  1746  	// The id for this version.
  1747  	// Example: "9.2".
  1748  	Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"`
  1749  	// Tags for this Xcode version.
  1750  	// Example: "default".
  1751  	Tags []string `protobuf:"bytes,2,rep,name=tags,proto3" json:"tags,omitempty"`
  1752  }
  1753  
  1754  func (x *XcodeVersion) Reset() {
  1755  	*x = XcodeVersion{}
  1756  	if protoimpl.UnsafeEnabled {
  1757  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[17]
  1758  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1759  		ms.StoreMessageInfo(mi)
  1760  	}
  1761  }
  1762  
  1763  func (x *XcodeVersion) String() string {
  1764  	return protoimpl.X.MessageStringOf(x)
  1765  }
  1766  
  1767  func (*XcodeVersion) ProtoMessage() {}
  1768  
  1769  func (x *XcodeVersion) ProtoReflect() protoreflect.Message {
  1770  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[17]
  1771  	if protoimpl.UnsafeEnabled && x != nil {
  1772  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1773  		if ms.LoadMessageInfo() == nil {
  1774  			ms.StoreMessageInfo(mi)
  1775  		}
  1776  		return ms
  1777  	}
  1778  	return mi.MessageOf(x)
  1779  }
  1780  
  1781  // Deprecated: Use XcodeVersion.ProtoReflect.Descriptor instead.
  1782  func (*XcodeVersion) Descriptor() ([]byte, []int) {
  1783  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{17}
  1784  }
  1785  
  1786  func (x *XcodeVersion) GetVersion() string {
  1787  	if x != nil {
  1788  		return x.Version
  1789  	}
  1790  	return ""
  1791  }
  1792  
  1793  func (x *XcodeVersion) GetTags() []string {
  1794  	if x != nil {
  1795  		return x.Tags
  1796  	}
  1797  	return nil
  1798  }
  1799  
  1800  type NetworkConfigurationCatalog struct {
  1801  	state         protoimpl.MessageState
  1802  	sizeCache     protoimpl.SizeCache
  1803  	unknownFields protoimpl.UnknownFields
  1804  
  1805  	Configurations []*NetworkConfiguration `protobuf:"bytes,1,rep,name=configurations,proto3" json:"configurations,omitempty"`
  1806  }
  1807  
  1808  func (x *NetworkConfigurationCatalog) Reset() {
  1809  	*x = NetworkConfigurationCatalog{}
  1810  	if protoimpl.UnsafeEnabled {
  1811  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[18]
  1812  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1813  		ms.StoreMessageInfo(mi)
  1814  	}
  1815  }
  1816  
  1817  func (x *NetworkConfigurationCatalog) String() string {
  1818  	return protoimpl.X.MessageStringOf(x)
  1819  }
  1820  
  1821  func (*NetworkConfigurationCatalog) ProtoMessage() {}
  1822  
  1823  func (x *NetworkConfigurationCatalog) ProtoReflect() protoreflect.Message {
  1824  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[18]
  1825  	if protoimpl.UnsafeEnabled && x != nil {
  1826  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1827  		if ms.LoadMessageInfo() == nil {
  1828  			ms.StoreMessageInfo(mi)
  1829  		}
  1830  		return ms
  1831  	}
  1832  	return mi.MessageOf(x)
  1833  }
  1834  
  1835  // Deprecated: Use NetworkConfigurationCatalog.ProtoReflect.Descriptor instead.
  1836  func (*NetworkConfigurationCatalog) Descriptor() ([]byte, []int) {
  1837  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{18}
  1838  }
  1839  
  1840  func (x *NetworkConfigurationCatalog) GetConfigurations() []*NetworkConfiguration {
  1841  	if x != nil {
  1842  		return x.Configurations
  1843  	}
  1844  	return nil
  1845  }
  1846  
  1847  type NetworkConfiguration struct {
  1848  	state         protoimpl.MessageState
  1849  	sizeCache     protoimpl.SizeCache
  1850  	unknownFields protoimpl.UnknownFields
  1851  
  1852  	// The unique opaque id for this network traffic configuration.
  1853  	Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
  1854  	// The emulation rule applying to the upload traffic.
  1855  	UpRule *TrafficRule `protobuf:"bytes,2,opt,name=up_rule,json=upRule,proto3" json:"up_rule,omitempty"`
  1856  	// The emulation rule applying to the download traffic.
  1857  	DownRule *TrafficRule `protobuf:"bytes,3,opt,name=down_rule,json=downRule,proto3" json:"down_rule,omitempty"`
  1858  }
  1859  
  1860  func (x *NetworkConfiguration) Reset() {
  1861  	*x = NetworkConfiguration{}
  1862  	if protoimpl.UnsafeEnabled {
  1863  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[19]
  1864  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1865  		ms.StoreMessageInfo(mi)
  1866  	}
  1867  }
  1868  
  1869  func (x *NetworkConfiguration) String() string {
  1870  	return protoimpl.X.MessageStringOf(x)
  1871  }
  1872  
  1873  func (*NetworkConfiguration) ProtoMessage() {}
  1874  
  1875  func (x *NetworkConfiguration) ProtoReflect() protoreflect.Message {
  1876  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[19]
  1877  	if protoimpl.UnsafeEnabled && x != nil {
  1878  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1879  		if ms.LoadMessageInfo() == nil {
  1880  			ms.StoreMessageInfo(mi)
  1881  		}
  1882  		return ms
  1883  	}
  1884  	return mi.MessageOf(x)
  1885  }
  1886  
  1887  // Deprecated: Use NetworkConfiguration.ProtoReflect.Descriptor instead.
  1888  func (*NetworkConfiguration) Descriptor() ([]byte, []int) {
  1889  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{19}
  1890  }
  1891  
  1892  func (x *NetworkConfiguration) GetId() string {
  1893  	if x != nil {
  1894  		return x.Id
  1895  	}
  1896  	return ""
  1897  }
  1898  
  1899  func (x *NetworkConfiguration) GetUpRule() *TrafficRule {
  1900  	if x != nil {
  1901  		return x.UpRule
  1902  	}
  1903  	return nil
  1904  }
  1905  
  1906  func (x *NetworkConfiguration) GetDownRule() *TrafficRule {
  1907  	if x != nil {
  1908  		return x.DownRule
  1909  	}
  1910  	return nil
  1911  }
  1912  
  1913  // Network emulation parameters.
  1914  type TrafficRule struct {
  1915  	state         protoimpl.MessageState
  1916  	sizeCache     protoimpl.SizeCache
  1917  	unknownFields protoimpl.UnknownFields
  1918  
  1919  	// Packet delay, must be >= 0.
  1920  	Delay *durationpb.Duration `protobuf:"bytes,1,opt,name=delay,proto3" json:"delay,omitempty"`
  1921  	// Packet loss ratio (0.0 - 1.0).
  1922  	PacketLossRatio float32 `protobuf:"fixed32,2,opt,name=packet_loss_ratio,json=packetLossRatio,proto3" json:"packet_loss_ratio,omitempty"`
  1923  	// Packet duplication ratio (0.0 - 1.0).
  1924  	PacketDuplicationRatio float32 `protobuf:"fixed32,3,opt,name=packet_duplication_ratio,json=packetDuplicationRatio,proto3" json:"packet_duplication_ratio,omitempty"`
  1925  	// Bandwidth in kbits/second.
  1926  	Bandwidth float32 `protobuf:"fixed32,4,opt,name=bandwidth,proto3" json:"bandwidth,omitempty"`
  1927  	// Burst size in kbits.
  1928  	Burst float32 `protobuf:"fixed32,5,opt,name=burst,proto3" json:"burst,omitempty"`
  1929  }
  1930  
  1931  func (x *TrafficRule) Reset() {
  1932  	*x = TrafficRule{}
  1933  	if protoimpl.UnsafeEnabled {
  1934  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[20]
  1935  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1936  		ms.StoreMessageInfo(mi)
  1937  	}
  1938  }
  1939  
  1940  func (x *TrafficRule) String() string {
  1941  	return protoimpl.X.MessageStringOf(x)
  1942  }
  1943  
  1944  func (*TrafficRule) ProtoMessage() {}
  1945  
  1946  func (x *TrafficRule) ProtoReflect() protoreflect.Message {
  1947  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[20]
  1948  	if protoimpl.UnsafeEnabled && x != nil {
  1949  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1950  		if ms.LoadMessageInfo() == nil {
  1951  			ms.StoreMessageInfo(mi)
  1952  		}
  1953  		return ms
  1954  	}
  1955  	return mi.MessageOf(x)
  1956  }
  1957  
  1958  // Deprecated: Use TrafficRule.ProtoReflect.Descriptor instead.
  1959  func (*TrafficRule) Descriptor() ([]byte, []int) {
  1960  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{20}
  1961  }
  1962  
  1963  func (x *TrafficRule) GetDelay() *durationpb.Duration {
  1964  	if x != nil {
  1965  		return x.Delay
  1966  	}
  1967  	return nil
  1968  }
  1969  
  1970  func (x *TrafficRule) GetPacketLossRatio() float32 {
  1971  	if x != nil {
  1972  		return x.PacketLossRatio
  1973  	}
  1974  	return 0
  1975  }
  1976  
  1977  func (x *TrafficRule) GetPacketDuplicationRatio() float32 {
  1978  	if x != nil {
  1979  		return x.PacketDuplicationRatio
  1980  	}
  1981  	return 0
  1982  }
  1983  
  1984  func (x *TrafficRule) GetBandwidth() float32 {
  1985  	if x != nil {
  1986  		return x.Bandwidth
  1987  	}
  1988  	return 0
  1989  }
  1990  
  1991  func (x *TrafficRule) GetBurst() float32 {
  1992  	if x != nil {
  1993  		return x.Burst
  1994  	}
  1995  	return 0
  1996  }
  1997  
  1998  // The currently provided software environment on the devices under test.
  1999  type ProvidedSoftwareCatalog struct {
  2000  	state         protoimpl.MessageState
  2001  	sizeCache     protoimpl.SizeCache
  2002  	unknownFields protoimpl.UnknownFields
  2003  
  2004  	// Deprecated: Use AndroidX Test Orchestrator going forward.
  2005  	//
  2006  	// A string representing the current version of Android Test Orchestrator
  2007  	// that is used in the environment. The package is available at
  2008  	// https://maven.google.com/web/index.html#com.android.support.test:orchestrator.
  2009  	//
  2010  	// Deprecated: Do not use.
  2011  	OrchestratorVersion string `protobuf:"bytes,1,opt,name=orchestrator_version,json=orchestratorVersion,proto3" json:"orchestrator_version,omitempty"`
  2012  	// A string representing the current version of AndroidX Test Orchestrator
  2013  	// that is used in the environment. The package is available at
  2014  	// https://maven.google.com/web/index.html#androidx.test:orchestrator.
  2015  	AndroidxOrchestratorVersion string `protobuf:"bytes,2,opt,name=androidx_orchestrator_version,json=androidxOrchestratorVersion,proto3" json:"androidx_orchestrator_version,omitempty"`
  2016  }
  2017  
  2018  func (x *ProvidedSoftwareCatalog) Reset() {
  2019  	*x = ProvidedSoftwareCatalog{}
  2020  	if protoimpl.UnsafeEnabled {
  2021  		mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[21]
  2022  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2023  		ms.StoreMessageInfo(mi)
  2024  	}
  2025  }
  2026  
  2027  func (x *ProvidedSoftwareCatalog) String() string {
  2028  	return protoimpl.X.MessageStringOf(x)
  2029  }
  2030  
  2031  func (*ProvidedSoftwareCatalog) ProtoMessage() {}
  2032  
  2033  func (x *ProvidedSoftwareCatalog) ProtoReflect() protoreflect.Message {
  2034  	mi := &file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[21]
  2035  	if protoimpl.UnsafeEnabled && x != nil {
  2036  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2037  		if ms.LoadMessageInfo() == nil {
  2038  			ms.StoreMessageInfo(mi)
  2039  		}
  2040  		return ms
  2041  	}
  2042  	return mi.MessageOf(x)
  2043  }
  2044  
  2045  // Deprecated: Use ProvidedSoftwareCatalog.ProtoReflect.Descriptor instead.
  2046  func (*ProvidedSoftwareCatalog) Descriptor() ([]byte, []int) {
  2047  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP(), []int{21}
  2048  }
  2049  
  2050  // Deprecated: Do not use.
  2051  func (x *ProvidedSoftwareCatalog) GetOrchestratorVersion() string {
  2052  	if x != nil {
  2053  		return x.OrchestratorVersion
  2054  	}
  2055  	return ""
  2056  }
  2057  
  2058  func (x *ProvidedSoftwareCatalog) GetAndroidxOrchestratorVersion() string {
  2059  	if x != nil {
  2060  		return x.AndroidxOrchestratorVersion
  2061  	}
  2062  	return ""
  2063  }
  2064  
  2065  var File_google_devtools_testing_v1_test_environment_discovery_proto protoreflect.FileDescriptor
  2066  
  2067  var file_google_devtools_testing_v1_test_environment_discovery_proto_rawDesc = []byte{
  2068  	0x0a, 0x3b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c,
  2069  	0x73, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x73,
  2070  	0x74, 0x5f, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x69,
  2071  	0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1a, 0x67,
  2072  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74,
  2073  	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2074  	0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  2075  	0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f,
  2076  	0x61, 0x70, 0x69, 0x2f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  2077  	0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65,
  2078  	0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74,
  2079  	0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
  2080  	0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74,
  2081  	0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
  2082  	0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f,
  2083  	0x74, 0x6f, 0x1a, 0x16, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x2f,
  2084  	0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x93, 0x01, 0x0a, 0x0d, 0x44,
  2085  	0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x12, 0x14, 0x0a, 0x05,
  2086  	0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x6c, 0x6f,
  2087  	0x63, 0x6b, 0x12, 0x3a, 0x0a, 0x04, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
  2088  	0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f,
  2089  	0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65,
  2090  	0x76, 0x69, 0x63, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x52, 0x04, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x30,
  2091  	0x0a, 0x0a, 0x61, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01,
  2092  	0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x74, 0x79, 0x70, 0x65,
  2093  	0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, 0x61, 0x64, 0x64, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65,
  2094  	0x22, 0xce, 0x02, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x76, 0x69,
  2095  	0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65,
  2096  	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x77, 0x0a, 0x10, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e,
  2097  	0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32,
  2098  	0x4c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c,
  2099  	0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74,
  2100  	0x54, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x43,
  2101  	0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x45, 0x6e,
  2102  	0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x65,
  2103  	0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d,
  2104  	0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
  2105  	0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x22, 0x91, 0x01,
  2106  	0x0a, 0x0f, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70,
  2107  	0x65, 0x12, 0x20, 0x0a, 0x1c, 0x45, 0x4e, 0x56, 0x49, 0x52, 0x4f, 0x4e, 0x4d, 0x45, 0x4e, 0x54,
  2108  	0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
  2109  	0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x41, 0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44, 0x10, 0x01,
  2110  	0x12, 0x07, 0x0a, 0x03, 0x49, 0x4f, 0x53, 0x10, 0x03, 0x12, 0x19, 0x0a, 0x15, 0x4e, 0x45, 0x54,
  2111  	0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x55, 0x52, 0x41, 0x54, 0x49,
  2112  	0x4f, 0x4e, 0x10, 0x04, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x44,
  2113  	0x5f, 0x53, 0x4f, 0x46, 0x54, 0x57, 0x41, 0x52, 0x45, 0x10, 0x05, 0x12, 0x14, 0x0a, 0x10, 0x44,
  2114  	0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x53, 0x10,
  2115  	0x06, 0x22, 0xc3, 0x04, 0x0a, 0x16, 0x54, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f,
  2116  	0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x68, 0x0a, 0x16,
  2117  	0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63,
  2118  	0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67,
  2119  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74,
  2120  	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69,
  2121  	0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x48, 0x00,
  2122  	0x52, 0x14, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43,
  2123  	0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x5c, 0x0a, 0x12, 0x69, 0x6f, 0x73, 0x5f, 0x64, 0x65,
  2124  	0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x18, 0x03, 0x20, 0x01,
  2125  	0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74,
  2126  	0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e,
  2127  	0x49, 0x6f, 0x73, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67,
  2128  	0x48, 0x00, 0x52, 0x10, 0x69, 0x6f, 0x73, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x74,
  2129  	0x61, 0x6c, 0x6f, 0x67, 0x12, 0x7d, 0x0a, 0x1d, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f,
  2130  	0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x61,
  2131  	0x74, 0x61, 0x6c, 0x6f, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f,
  2132  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65,
  2133  	0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
  2134  	0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x74,
  2135  	0x61, 0x6c, 0x6f, 0x67, 0x48, 0x00, 0x52, 0x1b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43,
  2136  	0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x74, 0x61,
  2137  	0x6c, 0x6f, 0x67, 0x12, 0x60, 0x0a, 0x10, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x5f,
  2138  	0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e,
  2139  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e,
  2140  	0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69,
  2141  	0x64, 0x65, 0x64, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c,
  2142  	0x6f, 0x67, 0x48, 0x00, 0x52, 0x0f, 0x73, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x43, 0x61,
  2143  	0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x69, 0x0a, 0x17, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f,
  2144  	0x69, 0x70, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67,
  2145  	0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  2146  	0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
  2147  	0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x42, 0x6c, 0x6f, 0x63,
  2148  	0x6b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x48, 0x00, 0x52, 0x14, 0x64, 0x65, 0x76, 0x69,
  2149  	0x63, 0x65, 0x49, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67,
  2150  	0x42, 0x15, 0x0a, 0x13, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f,
  2151  	0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x22, 0x5e, 0x0a, 0x14, 0x44, 0x65, 0x76, 0x69, 0x63,
  2152  	0x65, 0x49, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12,
  2153  	0x46, 0x0a, 0x09, 0x69, 0x70, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03,
  2154  	0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74,
  2155  	0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e,
  2156  	0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x08, 0x69,
  2157  	0x70, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x8e, 0x02, 0x0a, 0x14, 0x41, 0x6e, 0x64, 0x72,
  2158  	0x6f, 0x69, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67,
  2159  	0x12, 0x40, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
  2160  	0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f,
  2161  	0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e,
  2162  	0x64, 0x72, 0x6f, 0x69, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x06, 0x6d, 0x6f, 0x64, 0x65,
  2163  	0x6c, 0x73, 0x12, 0x46, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02,
  2164  	0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65,
  2165  	0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76,
  2166  	0x31, 0x2e, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
  2167  	0x52, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x6c, 0x0a, 0x15, 0x72, 0x75,
  2168  	0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74,
  2169  	0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2170  	0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74,
  2171  	0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x52, 0x75,
  2172  	0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69,
  2173  	0x6f, 0x6e, 0x52, 0x14, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
  2174  	0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa8, 0x01, 0x0a, 0x1b, 0x41, 0x6e, 0x64,
  2175  	0x72, 0x6f, 0x69, 0x64, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69,
  2176  	0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x07, 0x6c, 0x6f, 0x63, 0x61,
  2177  	0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2178  	0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74,
  2179  	0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x52, 0x07, 0x6c,
  2180  	0x6f, 0x63, 0x61, 0x6c, 0x65, 0x73, 0x12, 0x4b, 0x0a, 0x0c, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74,
  2181  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67,
  2182  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74,
  2183  	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74,
  2184  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69,
  2185  	0x6f, 0x6e, 0x73, 0x22, 0x98, 0x05, 0x0a, 0x0c, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x4d,
  2186  	0x6f, 0x64, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
  2187  	0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
  2188  	0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x61, 0x6e, 0x75,
  2189  	0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
  2190  	0x6d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05,
  2191  	0x62, 0x72, 0x61, 0x6e, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x72, 0x61,
  2192  	0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a,
  2193  	0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3a,
  2194  	0x0a, 0x04, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x67,
  2195  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74,
  2196  	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
  2197  	0x46, 0x6f, 0x72, 0x6d, 0x52, 0x04, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x4d, 0x0a, 0x0b, 0x66, 0x6f,
  2198  	0x72, 0x6d, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32,
  2199  	0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c,
  2200  	0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76,
  2201  	0x69, 0x63, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x66,
  2202  	0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x5b, 0x0a, 0x10, 0x70, 0x65, 0x72,
  2203  	0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x15, 0x20,
  2204  	0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76,
  2205  	0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31,
  2206  	0x2e, 0x50, 0x65, 0x72, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69,
  2207  	0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x70, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69,
  2208  	0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e,
  2209  	0x5f, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e,
  2210  	0x58, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x79, 0x18, 0x06, 0x20,
  2211  	0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x59, 0x12, 0x25, 0x0a, 0x0e,
  2212  	0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x64, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x18, 0x0c,
  2213  	0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x44, 0x65, 0x6e, 0x73,
  2214  	0x69, 0x74, 0x79, 0x12, 0x35, 0x0a, 0x17, 0x6c, 0x6f, 0x77, 0x5f, 0x66, 0x70, 0x73, 0x5f, 0x76,
  2215  	0x69, 0x64, 0x65, 0x6f, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x11,
  2216  	0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x6c, 0x6f, 0x77, 0x46, 0x70, 0x73, 0x56, 0x69, 0x64, 0x65,
  2217  	0x6f, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x75,
  2218  	0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f,
  2219  	0x69, 0x64, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x73, 0x75, 0x70, 0x70, 0x6f,
  2220  	0x72, 0x74, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x12, 0x25,
  2221  	0x0a, 0x0e, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x62, 0x69, 0x73,
  2222  	0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65,
  2223  	0x64, 0x41, 0x62, 0x69, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x08, 0x20,
  2224  	0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x68, 0x75,
  2225  	0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09,
  2226  	0x52, 0x0c, 0x74, 0x68, 0x75, 0x6d, 0x62, 0x6e, 0x61, 0x69, 0x6c, 0x55, 0x72, 0x6c, 0x22, 0x99,
  2227  	0x02, 0x0a, 0x0e, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
  2228  	0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
  2229  	0x64, 0x12, 0x25, 0x0a, 0x0e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72,
  2230  	0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x76, 0x65, 0x72, 0x73, 0x69,
  2231  	0x6f, 0x6e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x70, 0x69, 0x5f,
  2232  	0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x61, 0x70, 0x69,
  2233  	0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x6e, 0x61,
  2234  	0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x64, 0x65, 0x4e, 0x61,
  2235  	0x6d, 0x65, 0x12, 0x34, 0x0a, 0x0c, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x5f, 0x64, 0x61,
  2236  	0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2237  	0x65, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x72, 0x65, 0x6c,
  2238  	0x65, 0x61, 0x73, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x4c, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x74,
  2239  	0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28,
  2240  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73,
  2241  	0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x69, 0x73, 0x74,
  2242  	0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x74, 0x72, 0x69,
  2243  	0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x07,
  2244  	0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x8b, 0x01, 0x0a, 0x15, 0x50,
  2245  	0x65, 0x72, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
  2246  	0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f,
  2247  	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
  2248  	0x6e, 0x49, 0x64, 0x12, 0x53, 0x0a, 0x0f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x61,
  2249  	0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67,
  2250  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74,
  2251  	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
  2252  	0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x0e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65,
  2253  	0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x22, 0x78, 0x0a, 0x0c, 0x44, 0x69, 0x73, 0x74,
  2254  	0x72, 0x69, 0x62, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x45, 0x0a, 0x10, 0x6d, 0x65, 0x61, 0x73,
  2255  	0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
  2256  	0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
  2257  	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f,
  2258  	0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12,
  2259  	0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18,
  2260  	0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x74, 0x53, 0x68, 0x61,
  2261  	0x72, 0x65, 0x22, 0xcf, 0x02, 0x0a, 0x10, 0x49, 0x6f, 0x73, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65,
  2262  	0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x3c, 0x0a, 0x06, 0x6d, 0x6f, 0x64, 0x65, 0x6c,
  2263  	0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2264  	0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
  2265  	0x67, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6f, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x06, 0x6d,
  2266  	0x6f, 0x64, 0x65, 0x6c, 0x73, 0x12, 0x42, 0x0a, 0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
  2267  	0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2268  	0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
  2269  	0x67, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52,
  2270  	0x08, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x0e, 0x78, 0x63, 0x6f,
  2271  	0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28,
  2272  	0x0b, 0x32, 0x28, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f,
  2273  	0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x58,
  2274  	0x63, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x78, 0x63, 0x6f,
  2275  	0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x68, 0x0a, 0x15, 0x72, 0x75,
  2276  	0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74,
  2277  	0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2278  	0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74,
  2279  	0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6f, 0x73, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d,
  2280  	0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x14,
  2281  	0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61,
  2282  	0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa4, 0x01, 0x0a, 0x17, 0x49, 0x6f, 0x73, 0x52, 0x75, 0x6e, 0x74,
  2283  	0x69, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  2284  	0x12, 0x3c, 0x0a, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
  2285  	0x0b, 0x32, 0x22, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f,
  2286  	0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4c,
  2287  	0x6f, 0x63, 0x61, 0x6c, 0x65, 0x52, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x73, 0x12, 0x4b,
  2288  	0x0a, 0x0c, 0x6f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02,
  2289  	0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65,
  2290  	0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76,
  2291  	0x31, 0x2e, 0x4f, 0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x6f,
  2292  	0x72, 0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xac, 0x03, 0x0a, 0x08,
  2293  	0x49, 0x6f, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01,
  2294  	0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
  2295  	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x32, 0x0a, 0x15,
  2296  	0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
  2297  	0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x73, 0x75, 0x70,
  2298  	0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73,
  2299  	0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04,
  2300  	0x74, 0x61, 0x67, 0x73, 0x12, 0x2f, 0x0a, 0x13, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63,
  2301  	0x61, 0x70, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28,
  2302  	0x09, 0x52, 0x12, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x62, 0x69, 0x6c,
  2303  	0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f,
  2304  	0x78, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x58,
  2305  	0x12, 0x19, 0x0a, 0x08, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x79, 0x18, 0x08, 0x20, 0x01,
  2306  	0x28, 0x05, 0x52, 0x07, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x59, 0x12, 0x25, 0x0a, 0x0e, 0x73,
  2307  	0x63, 0x72, 0x65, 0x65, 0x6e, 0x5f, 0x64, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x18, 0x09, 0x20,
  2308  	0x01, 0x28, 0x05, 0x52, 0x0d, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x44, 0x65, 0x6e, 0x73, 0x69,
  2309  	0x74, 0x79, 0x12, 0x4d, 0x0a, 0x0b, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x66, 0x61, 0x63, 0x74, 0x6f,
  2310  	0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  2311  	0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
  2312  	0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x46,
  2313  	0x61, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63, 0x74, 0x6f,
  2314  	0x72, 0x12, 0x57, 0x0a, 0x10, 0x70, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
  2315  	0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x6f,
  2316  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65,
  2317  	0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x65, 0x72, 0x49, 0x6f, 0x73, 0x56,
  2318  	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x70, 0x65, 0x72, 0x56,
  2319  	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xb9, 0x01, 0x0a, 0x0a, 0x49,
  2320  	0x6f, 0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
  2321  	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x6a,
  2322  	0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
  2323  	0x52, 0x0c, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23,
  2324  	0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
  2325  	0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73,
  2326  	0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
  2327  	0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x3d, 0x0a, 0x1b, 0x73, 0x75, 0x70, 0x70, 0x6f,
  2328  	0x72, 0x74, 0x65, 0x64, 0x5f, 0x78, 0x63, 0x6f, 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69,
  2329  	0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x18, 0x73, 0x75,
  2330  	0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x58, 0x63, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73,
  2331  	0x69, 0x6f, 0x6e, 0x49, 0x64, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x11, 0x50, 0x65, 0x72, 0x49, 0x6f,
  2332  	0x73, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x0a, 0x0a,
  2333  	0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
  2334  	0x52, 0x09, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x53, 0x0a, 0x0f, 0x64,
  2335  	0x65, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x02,
  2336  	0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65,
  2337  	0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76,
  2338  	0x31, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79,
  2339  	0x52, 0x0e, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79,
  2340  	0x22, 0x58, 0x0a, 0x06, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64,
  2341  	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
  2342  	0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16,
  2343  	0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06,
  2344  	0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x04,
  2345  	0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22, 0x45, 0x0a, 0x0b, 0x4f, 0x72,
  2346  	0x69, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
  2347  	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
  2348  	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a,
  2349  	0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67,
  2350  	0x73, 0x22, 0x3c, 0x0a, 0x0c, 0x58, 0x63, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
  2351  	0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01,
  2352  	0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x74,
  2353  	0x61, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x22,
  2354  	0x77, 0x0a, 0x1b, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
  2355  	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x58,
  2356  	0x0a, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73,
  2357  	0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  2358  	0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
  2359  	0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69,
  2360  	0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67,
  2361  	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xae, 0x01, 0x0a, 0x14, 0x4e, 0x65, 0x74,
  2362  	0x77, 0x6f, 0x72, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
  2363  	0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
  2364  	0x64, 0x12, 0x40, 0x0a, 0x07, 0x75, 0x70, 0x5f, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01,
  2365  	0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74,
  2366  	0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e,
  2367  	0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x06, 0x75, 0x70, 0x52,
  2368  	0x75, 0x6c, 0x65, 0x12, 0x44, 0x0a, 0x09, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x72, 0x75, 0x6c, 0x65,
  2369  	0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
  2370  	0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67,
  2371  	0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x52, 0x75, 0x6c, 0x65, 0x52,
  2372  	0x08, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x75, 0x6c, 0x65, 0x22, 0xd8, 0x01, 0x0a, 0x0b, 0x54, 0x72,
  2373  	0x61, 0x66, 0x66, 0x69, 0x63, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x2f, 0x0a, 0x05, 0x64, 0x65, 0x6c,
  2374  	0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2375  	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74,
  2376  	0x69, 0x6f, 0x6e, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x61,
  2377  	0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6c, 0x6f, 0x73, 0x73, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18,
  2378  	0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x4c, 0x6f, 0x73,
  2379  	0x73, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x38, 0x0a, 0x18, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74,
  2380  	0x5f, 0x64, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x61, 0x74,
  2381  	0x69, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x16, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74,
  2382  	0x44, 0x75, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x61, 0x74, 0x69, 0x6f,
  2383  	0x12, 0x1c, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x04, 0x20,
  2384  	0x01, 0x28, 0x02, 0x52, 0x09, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x14,
  2385  	0x0a, 0x05, 0x62, 0x75, 0x72, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x62,
  2386  	0x75, 0x72, 0x73, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x17, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65,
  2387  	0x64, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67,
  2388  	0x12, 0x35, 0x0a, 0x14, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72,
  2389  	0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x02,
  2390  	0x18, 0x01, 0x52, 0x13, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72,
  2391  	0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x42, 0x0a, 0x1d, 0x61, 0x6e, 0x64, 0x72, 0x6f,
  2392  	0x69, 0x64, 0x78, 0x5f, 0x6f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72, 0x61, 0x74, 0x6f, 0x72,
  2393  	0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1b,
  2394  	0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x78, 0x4f, 0x72, 0x63, 0x68, 0x65, 0x73, 0x74, 0x72,
  2395  	0x61, 0x74, 0x6f, 0x72, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2a, 0x52, 0x0a, 0x0a, 0x44,
  2396  	0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x45, 0x56,
  2397  	0x49, 0x43, 0x45, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
  2398  	0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x56, 0x49, 0x52, 0x54, 0x55, 0x41,
  2399  	0x4c, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x48, 0x59, 0x53, 0x49, 0x43, 0x41, 0x4c, 0x10,
  2400  	0x02, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x4d, 0x55, 0x4c, 0x41, 0x54, 0x4f, 0x52, 0x10, 0x03, 0x2a,
  2401  	0x5b, 0x0a, 0x10, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x46, 0x61, 0x63,
  2402  	0x74, 0x6f, 0x72, 0x12, 0x22, 0x0a, 0x1e, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x46, 0x4f,
  2403  	0x52, 0x4d, 0x5f, 0x46, 0x41, 0x43, 0x54, 0x4f, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
  2404  	0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x48, 0x4f, 0x4e, 0x45,
  2405  	0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x54, 0x10, 0x02, 0x12, 0x0c,
  2406  	0x0a, 0x08, 0x57, 0x45, 0x41, 0x52, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x03, 0x2a, 0x9a, 0x01, 0x0a,
  2407  	0x0e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12,
  2408  	0x1f, 0x0a, 0x1b, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x43, 0x49,
  2409  	0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00,
  2410  	0x12, 0x18, 0x0a, 0x14, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x43,
  2411  	0x49, 0x54, 0x59, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x45,
  2412  	0x56, 0x49, 0x43, 0x45, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x43, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45,
  2413  	0x44, 0x49, 0x55, 0x4d, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45,
  2414  	0x5f, 0x43, 0x41, 0x50, 0x41, 0x43, 0x49, 0x54, 0x59, 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x03, 0x12,
  2415  	0x18, 0x0a, 0x14, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x43, 0x41, 0x50, 0x41, 0x43, 0x49,
  2416  	0x54, 0x59, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x04, 0x32, 0xee, 0x02, 0x0a, 0x1f, 0x54, 0x65,
  2417  	0x73, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x69, 0x73,
  2418  	0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xc4, 0x01,
  2419  	0x0a, 0x19, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e,
  2420  	0x6d, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x3c, 0x2e, 0x67, 0x6f,
  2421  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65,
  2422  	0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x65, 0x73, 0x74,
  2423  	0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c,
  2424  	0x6f, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  2425  	0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74,
  2426  	0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72,
  2427  	0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x22, 0x35, 0x82,
  2428  	0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x45,
  2429  	0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f,
  2430  	0x67, 0x2f, 0x7b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74,
  2431  	0x79, 0x70, 0x65, 0x7d, 0x1a, 0x83, 0x01, 0xca, 0x41, 0x16, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
  2432  	0x67, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
  2433  	0xd2, 0x41, 0x67, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67,
  2434  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75,
  2435  	0x74, 0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72,
  2436  	0x6d, 0x2c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x67, 0x6f,
  2437  	0x6f, 0x67, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x61, 0x75, 0x74,
  2438  	0x68, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d,
  2439  	0x2e, 0x72, 0x65, 0x61, 0x64, 0x2d, 0x6f, 0x6e, 0x6c, 0x79, 0x42, 0x84, 0x01, 0x0a, 0x1e, 0x63,
  2440  	0x6f, 0x6d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f,
  2441  	0x6c, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x1d, 0x54,
  2442  	0x65, 0x73, 0x74, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x69,
  2443  	0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x41,
  2444  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72,
  2445  	0x67, 0x2f, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  2446  	0x65, 0x61, 0x70, 0x69, 0x73, 0x2f, 0x64, 0x65, 0x76, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x74,
  2447  	0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x2f, 0x76, 0x31, 0x3b, 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e,
  2448  	0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
  2449  }
  2450  
  2451  var (
  2452  	file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescOnce sync.Once
  2453  	file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescData = file_google_devtools_testing_v1_test_environment_discovery_proto_rawDesc
  2454  )
  2455  
  2456  func file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescGZIP() []byte {
  2457  	file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescOnce.Do(func() {
  2458  		file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescData = protoimpl.X.CompressGZIP(file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescData)
  2459  	})
  2460  	return file_google_devtools_testing_v1_test_environment_discovery_proto_rawDescData
  2461  }
  2462  
  2463  var file_google_devtools_testing_v1_test_environment_discovery_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
  2464  var file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes = make([]protoimpl.MessageInfo, 22)
  2465  var file_google_devtools_testing_v1_test_environment_discovery_proto_goTypes = []interface{}{
  2466  	(DeviceForm)(0),       // 0: google.devtools.testing.v1.DeviceForm
  2467  	(DeviceFormFactor)(0), // 1: google.devtools.testing.v1.DeviceFormFactor
  2468  	(DeviceCapacity)(0),   // 2: google.devtools.testing.v1.DeviceCapacity
  2469  	(GetTestEnvironmentCatalogRequest_EnvironmentType)(0), // 3: google.devtools.testing.v1.GetTestEnvironmentCatalogRequest.EnvironmentType
  2470  	(*DeviceIpBlock)(nil),                    // 4: google.devtools.testing.v1.DeviceIpBlock
  2471  	(*GetTestEnvironmentCatalogRequest)(nil), // 5: google.devtools.testing.v1.GetTestEnvironmentCatalogRequest
  2472  	(*TestEnvironmentCatalog)(nil),           // 6: google.devtools.testing.v1.TestEnvironmentCatalog
  2473  	(*DeviceIpBlockCatalog)(nil),             // 7: google.devtools.testing.v1.DeviceIpBlockCatalog
  2474  	(*AndroidDeviceCatalog)(nil),             // 8: google.devtools.testing.v1.AndroidDeviceCatalog
  2475  	(*AndroidRuntimeConfiguration)(nil),      // 9: google.devtools.testing.v1.AndroidRuntimeConfiguration
  2476  	(*AndroidModel)(nil),                     // 10: google.devtools.testing.v1.AndroidModel
  2477  	(*AndroidVersion)(nil),                   // 11: google.devtools.testing.v1.AndroidVersion
  2478  	(*PerAndroidVersionInfo)(nil),            // 12: google.devtools.testing.v1.PerAndroidVersionInfo
  2479  	(*Distribution)(nil),                     // 13: google.devtools.testing.v1.Distribution
  2480  	(*IosDeviceCatalog)(nil),                 // 14: google.devtools.testing.v1.IosDeviceCatalog
  2481  	(*IosRuntimeConfiguration)(nil),          // 15: google.devtools.testing.v1.IosRuntimeConfiguration
  2482  	(*IosModel)(nil),                         // 16: google.devtools.testing.v1.IosModel
  2483  	(*IosVersion)(nil),                       // 17: google.devtools.testing.v1.IosVersion
  2484  	(*PerIosVersionInfo)(nil),                // 18: google.devtools.testing.v1.PerIosVersionInfo
  2485  	(*Locale)(nil),                           // 19: google.devtools.testing.v1.Locale
  2486  	(*Orientation)(nil),                      // 20: google.devtools.testing.v1.Orientation
  2487  	(*XcodeVersion)(nil),                     // 21: google.devtools.testing.v1.XcodeVersion
  2488  	(*NetworkConfigurationCatalog)(nil),      // 22: google.devtools.testing.v1.NetworkConfigurationCatalog
  2489  	(*NetworkConfiguration)(nil),             // 23: google.devtools.testing.v1.NetworkConfiguration
  2490  	(*TrafficRule)(nil),                      // 24: google.devtools.testing.v1.TrafficRule
  2491  	(*ProvidedSoftwareCatalog)(nil),          // 25: google.devtools.testing.v1.ProvidedSoftwareCatalog
  2492  	(*date.Date)(nil),                        // 26: google.type.Date
  2493  	(*timestamppb.Timestamp)(nil),            // 27: google.protobuf.Timestamp
  2494  	(*durationpb.Duration)(nil),              // 28: google.protobuf.Duration
  2495  }
  2496  var file_google_devtools_testing_v1_test_environment_discovery_proto_depIdxs = []int32{
  2497  	0,  // 0: google.devtools.testing.v1.DeviceIpBlock.form:type_name -> google.devtools.testing.v1.DeviceForm
  2498  	26, // 1: google.devtools.testing.v1.DeviceIpBlock.added_date:type_name -> google.type.Date
  2499  	3,  // 2: google.devtools.testing.v1.GetTestEnvironmentCatalogRequest.environment_type:type_name -> google.devtools.testing.v1.GetTestEnvironmentCatalogRequest.EnvironmentType
  2500  	8,  // 3: google.devtools.testing.v1.TestEnvironmentCatalog.android_device_catalog:type_name -> google.devtools.testing.v1.AndroidDeviceCatalog
  2501  	14, // 4: google.devtools.testing.v1.TestEnvironmentCatalog.ios_device_catalog:type_name -> google.devtools.testing.v1.IosDeviceCatalog
  2502  	22, // 5: google.devtools.testing.v1.TestEnvironmentCatalog.network_configuration_catalog:type_name -> google.devtools.testing.v1.NetworkConfigurationCatalog
  2503  	25, // 6: google.devtools.testing.v1.TestEnvironmentCatalog.software_catalog:type_name -> google.devtools.testing.v1.ProvidedSoftwareCatalog
  2504  	7,  // 7: google.devtools.testing.v1.TestEnvironmentCatalog.device_ip_block_catalog:type_name -> google.devtools.testing.v1.DeviceIpBlockCatalog
  2505  	4,  // 8: google.devtools.testing.v1.DeviceIpBlockCatalog.ip_blocks:type_name -> google.devtools.testing.v1.DeviceIpBlock
  2506  	10, // 9: google.devtools.testing.v1.AndroidDeviceCatalog.models:type_name -> google.devtools.testing.v1.AndroidModel
  2507  	11, // 10: google.devtools.testing.v1.AndroidDeviceCatalog.versions:type_name -> google.devtools.testing.v1.AndroidVersion
  2508  	9,  // 11: google.devtools.testing.v1.AndroidDeviceCatalog.runtime_configuration:type_name -> google.devtools.testing.v1.AndroidRuntimeConfiguration
  2509  	19, // 12: google.devtools.testing.v1.AndroidRuntimeConfiguration.locales:type_name -> google.devtools.testing.v1.Locale
  2510  	20, // 13: google.devtools.testing.v1.AndroidRuntimeConfiguration.orientations:type_name -> google.devtools.testing.v1.Orientation
  2511  	0,  // 14: google.devtools.testing.v1.AndroidModel.form:type_name -> google.devtools.testing.v1.DeviceForm
  2512  	1,  // 15: google.devtools.testing.v1.AndroidModel.form_factor:type_name -> google.devtools.testing.v1.DeviceFormFactor
  2513  	12, // 16: google.devtools.testing.v1.AndroidModel.per_version_info:type_name -> google.devtools.testing.v1.PerAndroidVersionInfo
  2514  	26, // 17: google.devtools.testing.v1.AndroidVersion.release_date:type_name -> google.type.Date
  2515  	13, // 18: google.devtools.testing.v1.AndroidVersion.distribution:type_name -> google.devtools.testing.v1.Distribution
  2516  	2,  // 19: google.devtools.testing.v1.PerAndroidVersionInfo.device_capacity:type_name -> google.devtools.testing.v1.DeviceCapacity
  2517  	27, // 20: google.devtools.testing.v1.Distribution.measurement_time:type_name -> google.protobuf.Timestamp
  2518  	16, // 21: google.devtools.testing.v1.IosDeviceCatalog.models:type_name -> google.devtools.testing.v1.IosModel
  2519  	17, // 22: google.devtools.testing.v1.IosDeviceCatalog.versions:type_name -> google.devtools.testing.v1.IosVersion
  2520  	21, // 23: google.devtools.testing.v1.IosDeviceCatalog.xcode_versions:type_name -> google.devtools.testing.v1.XcodeVersion
  2521  	15, // 24: google.devtools.testing.v1.IosDeviceCatalog.runtime_configuration:type_name -> google.devtools.testing.v1.IosRuntimeConfiguration
  2522  	19, // 25: google.devtools.testing.v1.IosRuntimeConfiguration.locales:type_name -> google.devtools.testing.v1.Locale
  2523  	20, // 26: google.devtools.testing.v1.IosRuntimeConfiguration.orientations:type_name -> google.devtools.testing.v1.Orientation
  2524  	1,  // 27: google.devtools.testing.v1.IosModel.form_factor:type_name -> google.devtools.testing.v1.DeviceFormFactor
  2525  	18, // 28: google.devtools.testing.v1.IosModel.per_version_info:type_name -> google.devtools.testing.v1.PerIosVersionInfo
  2526  	2,  // 29: google.devtools.testing.v1.PerIosVersionInfo.device_capacity:type_name -> google.devtools.testing.v1.DeviceCapacity
  2527  	23, // 30: google.devtools.testing.v1.NetworkConfigurationCatalog.configurations:type_name -> google.devtools.testing.v1.NetworkConfiguration
  2528  	24, // 31: google.devtools.testing.v1.NetworkConfiguration.up_rule:type_name -> google.devtools.testing.v1.TrafficRule
  2529  	24, // 32: google.devtools.testing.v1.NetworkConfiguration.down_rule:type_name -> google.devtools.testing.v1.TrafficRule
  2530  	28, // 33: google.devtools.testing.v1.TrafficRule.delay:type_name -> google.protobuf.Duration
  2531  	5,  // 34: google.devtools.testing.v1.TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog:input_type -> google.devtools.testing.v1.GetTestEnvironmentCatalogRequest
  2532  	6,  // 35: google.devtools.testing.v1.TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog:output_type -> google.devtools.testing.v1.TestEnvironmentCatalog
  2533  	35, // [35:36] is the sub-list for method output_type
  2534  	34, // [34:35] is the sub-list for method input_type
  2535  	34, // [34:34] is the sub-list for extension type_name
  2536  	34, // [34:34] is the sub-list for extension extendee
  2537  	0,  // [0:34] is the sub-list for field type_name
  2538  }
  2539  
  2540  func init() { file_google_devtools_testing_v1_test_environment_discovery_proto_init() }
  2541  func file_google_devtools_testing_v1_test_environment_discovery_proto_init() {
  2542  	if File_google_devtools_testing_v1_test_environment_discovery_proto != nil {
  2543  		return
  2544  	}
  2545  	if !protoimpl.UnsafeEnabled {
  2546  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
  2547  			switch v := v.(*DeviceIpBlock); i {
  2548  			case 0:
  2549  				return &v.state
  2550  			case 1:
  2551  				return &v.sizeCache
  2552  			case 2:
  2553  				return &v.unknownFields
  2554  			default:
  2555  				return nil
  2556  			}
  2557  		}
  2558  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
  2559  			switch v := v.(*GetTestEnvironmentCatalogRequest); i {
  2560  			case 0:
  2561  				return &v.state
  2562  			case 1:
  2563  				return &v.sizeCache
  2564  			case 2:
  2565  				return &v.unknownFields
  2566  			default:
  2567  				return nil
  2568  			}
  2569  		}
  2570  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
  2571  			switch v := v.(*TestEnvironmentCatalog); i {
  2572  			case 0:
  2573  				return &v.state
  2574  			case 1:
  2575  				return &v.sizeCache
  2576  			case 2:
  2577  				return &v.unknownFields
  2578  			default:
  2579  				return nil
  2580  			}
  2581  		}
  2582  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
  2583  			switch v := v.(*DeviceIpBlockCatalog); i {
  2584  			case 0:
  2585  				return &v.state
  2586  			case 1:
  2587  				return &v.sizeCache
  2588  			case 2:
  2589  				return &v.unknownFields
  2590  			default:
  2591  				return nil
  2592  			}
  2593  		}
  2594  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
  2595  			switch v := v.(*AndroidDeviceCatalog); i {
  2596  			case 0:
  2597  				return &v.state
  2598  			case 1:
  2599  				return &v.sizeCache
  2600  			case 2:
  2601  				return &v.unknownFields
  2602  			default:
  2603  				return nil
  2604  			}
  2605  		}
  2606  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
  2607  			switch v := v.(*AndroidRuntimeConfiguration); i {
  2608  			case 0:
  2609  				return &v.state
  2610  			case 1:
  2611  				return &v.sizeCache
  2612  			case 2:
  2613  				return &v.unknownFields
  2614  			default:
  2615  				return nil
  2616  			}
  2617  		}
  2618  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
  2619  			switch v := v.(*AndroidModel); i {
  2620  			case 0:
  2621  				return &v.state
  2622  			case 1:
  2623  				return &v.sizeCache
  2624  			case 2:
  2625  				return &v.unknownFields
  2626  			default:
  2627  				return nil
  2628  			}
  2629  		}
  2630  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
  2631  			switch v := v.(*AndroidVersion); i {
  2632  			case 0:
  2633  				return &v.state
  2634  			case 1:
  2635  				return &v.sizeCache
  2636  			case 2:
  2637  				return &v.unknownFields
  2638  			default:
  2639  				return nil
  2640  			}
  2641  		}
  2642  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
  2643  			switch v := v.(*PerAndroidVersionInfo); i {
  2644  			case 0:
  2645  				return &v.state
  2646  			case 1:
  2647  				return &v.sizeCache
  2648  			case 2:
  2649  				return &v.unknownFields
  2650  			default:
  2651  				return nil
  2652  			}
  2653  		}
  2654  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
  2655  			switch v := v.(*Distribution); i {
  2656  			case 0:
  2657  				return &v.state
  2658  			case 1:
  2659  				return &v.sizeCache
  2660  			case 2:
  2661  				return &v.unknownFields
  2662  			default:
  2663  				return nil
  2664  			}
  2665  		}
  2666  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
  2667  			switch v := v.(*IosDeviceCatalog); i {
  2668  			case 0:
  2669  				return &v.state
  2670  			case 1:
  2671  				return &v.sizeCache
  2672  			case 2:
  2673  				return &v.unknownFields
  2674  			default:
  2675  				return nil
  2676  			}
  2677  		}
  2678  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
  2679  			switch v := v.(*IosRuntimeConfiguration); i {
  2680  			case 0:
  2681  				return &v.state
  2682  			case 1:
  2683  				return &v.sizeCache
  2684  			case 2:
  2685  				return &v.unknownFields
  2686  			default:
  2687  				return nil
  2688  			}
  2689  		}
  2690  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
  2691  			switch v := v.(*IosModel); i {
  2692  			case 0:
  2693  				return &v.state
  2694  			case 1:
  2695  				return &v.sizeCache
  2696  			case 2:
  2697  				return &v.unknownFields
  2698  			default:
  2699  				return nil
  2700  			}
  2701  		}
  2702  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
  2703  			switch v := v.(*IosVersion); i {
  2704  			case 0:
  2705  				return &v.state
  2706  			case 1:
  2707  				return &v.sizeCache
  2708  			case 2:
  2709  				return &v.unknownFields
  2710  			default:
  2711  				return nil
  2712  			}
  2713  		}
  2714  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
  2715  			switch v := v.(*PerIosVersionInfo); i {
  2716  			case 0:
  2717  				return &v.state
  2718  			case 1:
  2719  				return &v.sizeCache
  2720  			case 2:
  2721  				return &v.unknownFields
  2722  			default:
  2723  				return nil
  2724  			}
  2725  		}
  2726  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
  2727  			switch v := v.(*Locale); i {
  2728  			case 0:
  2729  				return &v.state
  2730  			case 1:
  2731  				return &v.sizeCache
  2732  			case 2:
  2733  				return &v.unknownFields
  2734  			default:
  2735  				return nil
  2736  			}
  2737  		}
  2738  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
  2739  			switch v := v.(*Orientation); i {
  2740  			case 0:
  2741  				return &v.state
  2742  			case 1:
  2743  				return &v.sizeCache
  2744  			case 2:
  2745  				return &v.unknownFields
  2746  			default:
  2747  				return nil
  2748  			}
  2749  		}
  2750  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
  2751  			switch v := v.(*XcodeVersion); i {
  2752  			case 0:
  2753  				return &v.state
  2754  			case 1:
  2755  				return &v.sizeCache
  2756  			case 2:
  2757  				return &v.unknownFields
  2758  			default:
  2759  				return nil
  2760  			}
  2761  		}
  2762  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
  2763  			switch v := v.(*NetworkConfigurationCatalog); i {
  2764  			case 0:
  2765  				return &v.state
  2766  			case 1:
  2767  				return &v.sizeCache
  2768  			case 2:
  2769  				return &v.unknownFields
  2770  			default:
  2771  				return nil
  2772  			}
  2773  		}
  2774  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
  2775  			switch v := v.(*NetworkConfiguration); i {
  2776  			case 0:
  2777  				return &v.state
  2778  			case 1:
  2779  				return &v.sizeCache
  2780  			case 2:
  2781  				return &v.unknownFields
  2782  			default:
  2783  				return nil
  2784  			}
  2785  		}
  2786  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
  2787  			switch v := v.(*TrafficRule); i {
  2788  			case 0:
  2789  				return &v.state
  2790  			case 1:
  2791  				return &v.sizeCache
  2792  			case 2:
  2793  				return &v.unknownFields
  2794  			default:
  2795  				return nil
  2796  			}
  2797  		}
  2798  		file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
  2799  			switch v := v.(*ProvidedSoftwareCatalog); i {
  2800  			case 0:
  2801  				return &v.state
  2802  			case 1:
  2803  				return &v.sizeCache
  2804  			case 2:
  2805  				return &v.unknownFields
  2806  			default:
  2807  				return nil
  2808  			}
  2809  		}
  2810  	}
  2811  	file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes[2].OneofWrappers = []interface{}{
  2812  		(*TestEnvironmentCatalog_AndroidDeviceCatalog)(nil),
  2813  		(*TestEnvironmentCatalog_IosDeviceCatalog)(nil),
  2814  		(*TestEnvironmentCatalog_NetworkConfigurationCatalog)(nil),
  2815  		(*TestEnvironmentCatalog_SoftwareCatalog)(nil),
  2816  		(*TestEnvironmentCatalog_DeviceIpBlockCatalog)(nil),
  2817  	}
  2818  	type x struct{}
  2819  	out := protoimpl.TypeBuilder{
  2820  		File: protoimpl.DescBuilder{
  2821  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  2822  			RawDescriptor: file_google_devtools_testing_v1_test_environment_discovery_proto_rawDesc,
  2823  			NumEnums:      4,
  2824  			NumMessages:   22,
  2825  			NumExtensions: 0,
  2826  			NumServices:   1,
  2827  		},
  2828  		GoTypes:           file_google_devtools_testing_v1_test_environment_discovery_proto_goTypes,
  2829  		DependencyIndexes: file_google_devtools_testing_v1_test_environment_discovery_proto_depIdxs,
  2830  		EnumInfos:         file_google_devtools_testing_v1_test_environment_discovery_proto_enumTypes,
  2831  		MessageInfos:      file_google_devtools_testing_v1_test_environment_discovery_proto_msgTypes,
  2832  	}.Build()
  2833  	File_google_devtools_testing_v1_test_environment_discovery_proto = out.File
  2834  	file_google_devtools_testing_v1_test_environment_discovery_proto_rawDesc = nil
  2835  	file_google_devtools_testing_v1_test_environment_discovery_proto_goTypes = nil
  2836  	file_google_devtools_testing_v1_test_environment_discovery_proto_depIdxs = nil
  2837  }
  2838  
  2839  // Reference imports to suppress errors if they are not otherwise used.
  2840  var _ context.Context
  2841  var _ grpc.ClientConnInterface
  2842  
  2843  // This is a compile-time assertion to ensure that this generated file
  2844  // is compatible with the grpc package it is being compiled against.
  2845  const _ = grpc.SupportPackageIsVersion6
  2846  
  2847  // TestEnvironmentDiscoveryServiceClient is the client API for TestEnvironmentDiscoveryService service.
  2848  //
  2849  // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
  2850  type TestEnvironmentDiscoveryServiceClient interface {
  2851  	// Gets the catalog of supported test environments.
  2852  	//
  2853  	// May return any of the following canonical error codes:
  2854  	//
  2855  	// - INVALID_ARGUMENT - if the request is malformed
  2856  	// - NOT_FOUND - if the environment type does not exist
  2857  	// - INTERNAL - if an internal error occurred
  2858  	GetTestEnvironmentCatalog(ctx context.Context, in *GetTestEnvironmentCatalogRequest, opts ...grpc.CallOption) (*TestEnvironmentCatalog, error)
  2859  }
  2860  
  2861  type testEnvironmentDiscoveryServiceClient struct {
  2862  	cc grpc.ClientConnInterface
  2863  }
  2864  
  2865  func NewTestEnvironmentDiscoveryServiceClient(cc grpc.ClientConnInterface) TestEnvironmentDiscoveryServiceClient {
  2866  	return &testEnvironmentDiscoveryServiceClient{cc}
  2867  }
  2868  
  2869  func (c *testEnvironmentDiscoveryServiceClient) GetTestEnvironmentCatalog(ctx context.Context, in *GetTestEnvironmentCatalogRequest, opts ...grpc.CallOption) (*TestEnvironmentCatalog, error) {
  2870  	out := new(TestEnvironmentCatalog)
  2871  	err := c.cc.Invoke(ctx, "/google.devtools.testing.v1.TestEnvironmentDiscoveryService/GetTestEnvironmentCatalog", in, out, opts...)
  2872  	if err != nil {
  2873  		return nil, err
  2874  	}
  2875  	return out, nil
  2876  }
  2877  
  2878  // TestEnvironmentDiscoveryServiceServer is the server API for TestEnvironmentDiscoveryService service.
  2879  type TestEnvironmentDiscoveryServiceServer interface {
  2880  	// Gets the catalog of supported test environments.
  2881  	//
  2882  	// May return any of the following canonical error codes:
  2883  	//
  2884  	// - INVALID_ARGUMENT - if the request is malformed
  2885  	// - NOT_FOUND - if the environment type does not exist
  2886  	// - INTERNAL - if an internal error occurred
  2887  	GetTestEnvironmentCatalog(context.Context, *GetTestEnvironmentCatalogRequest) (*TestEnvironmentCatalog, error)
  2888  }
  2889  
  2890  // UnimplementedTestEnvironmentDiscoveryServiceServer can be embedded to have forward compatible implementations.
  2891  type UnimplementedTestEnvironmentDiscoveryServiceServer struct {
  2892  }
  2893  
  2894  func (*UnimplementedTestEnvironmentDiscoveryServiceServer) GetTestEnvironmentCatalog(context.Context, *GetTestEnvironmentCatalogRequest) (*TestEnvironmentCatalog, error) {
  2895  	return nil, status.Errorf(codes.Unimplemented, "method GetTestEnvironmentCatalog not implemented")
  2896  }
  2897  
  2898  func RegisterTestEnvironmentDiscoveryServiceServer(s *grpc.Server, srv TestEnvironmentDiscoveryServiceServer) {
  2899  	s.RegisterService(&_TestEnvironmentDiscoveryService_serviceDesc, srv)
  2900  }
  2901  
  2902  func _TestEnvironmentDiscoveryService_GetTestEnvironmentCatalog_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  2903  	in := new(GetTestEnvironmentCatalogRequest)
  2904  	if err := dec(in); err != nil {
  2905  		return nil, err
  2906  	}
  2907  	if interceptor == nil {
  2908  		return srv.(TestEnvironmentDiscoveryServiceServer).GetTestEnvironmentCatalog(ctx, in)
  2909  	}
  2910  	info := &grpc.UnaryServerInfo{
  2911  		Server:     srv,
  2912  		FullMethod: "/google.devtools.testing.v1.TestEnvironmentDiscoveryService/GetTestEnvironmentCatalog",
  2913  	}
  2914  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  2915  		return srv.(TestEnvironmentDiscoveryServiceServer).GetTestEnvironmentCatalog(ctx, req.(*GetTestEnvironmentCatalogRequest))
  2916  	}
  2917  	return interceptor(ctx, in, info, handler)
  2918  }
  2919  
  2920  var _TestEnvironmentDiscoveryService_serviceDesc = grpc.ServiceDesc{
  2921  	ServiceName: "google.devtools.testing.v1.TestEnvironmentDiscoveryService",
  2922  	HandlerType: (*TestEnvironmentDiscoveryServiceServer)(nil),
  2923  	Methods: []grpc.MethodDesc{
  2924  		{
  2925  			MethodName: "GetTestEnvironmentCatalog",
  2926  			Handler:    _TestEnvironmentDiscoveryService_GetTestEnvironmentCatalog_Handler,
  2927  		},
  2928  	},
  2929  	Streams:  []grpc.StreamDesc{},
  2930  	Metadata: "google/devtools/testing/v1/test_environment_discovery.proto",
  2931  }
  2932  

View as plain text