go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/swarming/proto/api/swarming.pb.go (about)

     1  // Copyright 2018 The LUCI Authors. All rights reserved.
     2  // Use of this source code is governed under the Apache License, Version 2.0
     3  // that can be found in the LICENSE file.
     4  
     5  // This proto tries to converge with
     6  // https://github.com/googleapis/googleapis/blob/master/google/devtools/remoteworkers/v1test2/
     7  // as much as it is sensible to (not much). It has several inherent divergences
     8  // as Swarming has a much wider use case and has a different fundamental model
     9  // for bot state. Swarming has the limitation of not supporting children
    10  // devices: as a single bot is a single execution unit, unlike RBE.
    11  
    12  // Code generated by protoc-gen-go. DO NOT EDIT.
    13  // versions:
    14  // 	protoc-gen-go v1.31.0
    15  // 	protoc        v3.21.7
    16  // source: go.chromium.org/luci/swarming/proto/api/swarming.proto
    17  
    18  package apipb
    19  
    20  import prpc "go.chromium.org/luci/grpc/prpc"
    21  
    22  import (
    23  	context "context"
    24  	grpc "google.golang.org/grpc"
    25  	codes "google.golang.org/grpc/codes"
    26  	status "google.golang.org/grpc/status"
    27  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    28  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    29  	durationpb "google.golang.org/protobuf/types/known/durationpb"
    30  	structpb "google.golang.org/protobuf/types/known/structpb"
    31  	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
    32  	reflect "reflect"
    33  	sync "sync"
    34  )
    35  
    36  const (
    37  	// Verify that this generated code is sufficiently up-to-date.
    38  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    39  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    40  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    41  )
    42  
    43  // BotStatusType is one of the states the bot can be in.
    44  //
    45  // A bot status implies being in this status for a certain amount of time, for
    46  // example a hook running for N seconds, contrary to BotEventType which is about
    47  // an event that doesn't have an inherent duration.
    48  //
    49  // Some values are more important than others. For example if a bot is now
    50  // MISSING but used to be QUARANTINED, the value is still MISSING.
    51  type BotStatusType int32
    52  
    53  const (
    54  	// Invalid bot status, do not use.
    55  	BotStatusType_BOT_STATUS_UNSPECIFIED BotStatusType = 0
    56  	// The server detected that the bot is not pinging the server anymore. Unlike
    57  	// other statuses, this value is set after a timeout.
    58  	//
    59  	// Bot.status_msg shall not be set.
    60  	BotStatusType_MISSING BotStatusType = 1
    61  	// Bot was quarantined by the server.
    62  	//
    63  	// Bot.status_msg shall include the server provided rationale.
    64  	BotStatusType_QUARANTINED_BY_SERVER BotStatusType = 2 // Not used yet. https://crbug.com/757931
    65  	// Bot self-reported as unhealthy.
    66  	//
    67  	// What is currently called as 'quarantined' in the old API.
    68  	//
    69  	// Bot.status_msg shall include the bot provided rationale.
    70  	BotStatusType_QUARANTINED_BY_BOT BotStatusType = 3
    71  	// Bot self-reported as unable to run tasks due to externally induced
    72  	// overhead.
    73  	//
    74  	// Examples include:
    75  	//   - The temperature of the DUT (Device Under Test) is too high, and the bot
    76  	//     is waiting for cool down
    77  	//   - host is doing self-cleaning work out of the bot's control (puppet is
    78  	//     running), etc.
    79  	//
    80  	// Bot.status_msg shall include the bot provided rationale.
    81  	BotStatusType_OVERHEAD_MAINTENANCE_EXTERNAL BotStatusType = 4
    82  	// Bot self-reported as unable to run tasks due to doing internal overhead.
    83  	//
    84  	// Examples include:
    85  	// - Running hooks
    86  	// - Cleaning up or verifying its local cache
    87  	// - Bot is starting for a version upgrade
    88  	//
    89  	// Bot.status_msg shall disambiguate the type of work item done.
    90  	BotStatusType_OVERHEAD_BOT_INTERNAL BotStatusType = 5 // Not used yet. https://crbug.com/870723
    91  	// Bot is down as its host is rebooting and contact was lost.
    92  	//
    93  	// If the bot doesn't contact back soon enough, it will be considered MISSING.
    94  	//
    95  	// Bot.status_msg shall not be set.
    96  	BotStatusType_HOST_REBOOTING BotStatusType = 6 // Not used yet. https://crbug.com/870723
    97  	// Running a task.
    98  	//
    99  	// Bot.status_msg shall not be set.
   100  	BotStatusType_BUSY BotStatusType = 7
   101  	// Bot is 'reserved' for operations outside of normal operations. This can be
   102  	// relevant for SUT (System Under Test).
   103  	//
   104  	// Bot.status_msg shall not be set.
   105  	BotStatusType_RESERVED BotStatusType = 8 // Not used yet. https://crbug.com/913978
   106  	// Bot is healthy and waiting for tasks.
   107  	//
   108  	// Bot.status_msg shall not be set.
   109  	BotStatusType_IDLE BotStatusType = 9
   110  )
   111  
   112  // Enum value maps for BotStatusType.
   113  var (
   114  	BotStatusType_name = map[int32]string{
   115  		0: "BOT_STATUS_UNSPECIFIED",
   116  		1: "MISSING",
   117  		2: "QUARANTINED_BY_SERVER",
   118  		3: "QUARANTINED_BY_BOT",
   119  		4: "OVERHEAD_MAINTENANCE_EXTERNAL",
   120  		5: "OVERHEAD_BOT_INTERNAL",
   121  		6: "HOST_REBOOTING",
   122  		7: "BUSY",
   123  		8: "RESERVED",
   124  		9: "IDLE",
   125  	}
   126  	BotStatusType_value = map[string]int32{
   127  		"BOT_STATUS_UNSPECIFIED":        0,
   128  		"MISSING":                       1,
   129  		"QUARANTINED_BY_SERVER":         2,
   130  		"QUARANTINED_BY_BOT":            3,
   131  		"OVERHEAD_MAINTENANCE_EXTERNAL": 4,
   132  		"OVERHEAD_BOT_INTERNAL":         5,
   133  		"HOST_REBOOTING":                6,
   134  		"BUSY":                          7,
   135  		"RESERVED":                      8,
   136  		"IDLE":                          9,
   137  	}
   138  )
   139  
   140  func (x BotStatusType) Enum() *BotStatusType {
   141  	p := new(BotStatusType)
   142  	*p = x
   143  	return p
   144  }
   145  
   146  func (x BotStatusType) String() string {
   147  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   148  }
   149  
   150  func (BotStatusType) Descriptor() protoreflect.EnumDescriptor {
   151  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_enumTypes[0].Descriptor()
   152  }
   153  
   154  func (BotStatusType) Type() protoreflect.EnumType {
   155  	return &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_enumTypes[0]
   156  }
   157  
   158  func (x BotStatusType) Number() protoreflect.EnumNumber {
   159  	return protoreflect.EnumNumber(x)
   160  }
   161  
   162  // Deprecated: Use BotStatusType.Descriptor instead.
   163  func (BotStatusType) EnumDescriptor() ([]byte, []int) {
   164  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{0}
   165  }
   166  
   167  // BotEventType defines the reason why BotEvent was created.
   168  type BotEventType int32
   169  
   170  const (
   171  	// Invalid bot event type, do not use.
   172  	BotEventType_BOT_EVENT_TYPE_UNSPECIFIED BotEventType = 0
   173  	// Bot connected and started a new session.
   174  	//
   175  	// BotEvent.event_msg shall not be set.
   176  	BotEventType_BOT_NEW_SESSION BotEventType = 1
   177  	// Currently unused.
   178  	BotEventType_BOT_INTERNAL_FAILURE BotEventType = 2
   179  	// Bot had an hook error to report to the server. This shall send a report to
   180  	// the administrator of the instance.
   181  	//
   182  	// BotEvent.event_msg shall contain the error message.
   183  	BotEventType_BOT_HOOK_ERROR BotEventType = 3
   184  	// Bot hook logged information. The bot hooks can log locally to the local log
   185  	// file, which itself can be streamed out of band. For special notifications
   186  	// that are worth notifying the administrator, this event can be used to raise
   187  	// these. Due to the cost of doing an RPC just for this, this should be used
   188  	// sparingly; vs local logging.
   189  	//
   190  	// BotEvent.event_msg shall contain the log entry.
   191  	BotEventType_BOT_HOOK_LOG BotEventType = 4
   192  	// Bot initiated a host reboot. An example is a bot hook requesting to reboot
   193  	// the host after a task failure.
   194  	//
   195  	// BotEvent.event_msg shall contain the reason for rebooting the host, if any.
   196  	BotEventType_BOT_REBOOTING_HOST BotEventType = 5
   197  	// Bot is shutting down. It may be restarting for an update.
   198  	//
   199  	// BotEvent.event_msg shall contain the reason.
   200  	BotEventType_BOT_SHUTDOWN BotEventType = 6
   201  	// Currently unused.
   202  	BotEventType_BOT_DELETED BotEventType = 7
   203  	// Bot is missing. There have been no communication from the bot for longer
   204  	// than deadline configured on server side.
   205  	BotEventType_BOT_MISSING BotEventType = 8
   206  	// The server instructs the bot to stay idle. This is when there is no task
   207  	// pending for this bot. Will only be stored when there are other state
   208  	// changes.
   209  	//
   210  	// BotEvent.event_msg shall not be set.
   211  	BotEventType_INSTRUCT_IDLE BotEventType = 10
   212  	// The server instructs the bot to start a task.
   213  	//
   214  	// BotEvent.event_msg shall not be set. BotEvent.bot.current_task_id shall
   215  	// contain the task ID.
   216  	BotEventType_INSTRUCT_START_TASK BotEventType = 11
   217  	// The server instructs the bot to restart without self-updating. This is to
   218  	// initiate a new bot session, with potentially new bot hooks.
   219  	//
   220  	// BotEvent.event_msg can be set to the rationale, if any.
   221  	BotEventType_INSTRUCT_RESTART_BOT BotEventType = 12
   222  	// The server instructs the bot to self-update.
   223  	//
   224  	// BotEvent.event_msg shall be set to the version to update to.
   225  	// BotEvent.bot.info.version contains the bot's previous version.
   226  	BotEventType_INSTRUCT_UPDATE_BOT_CODE BotEventType = 13
   227  	// The server instructs the bot to stop its process.
   228  	//
   229  	// BotEvent.event_msg shall not be set. BotEvent.bot.current_task_id shall
   230  	// contain the task ID.
   231  	BotEventType_INSTRUCT_TERMINATE_BOT BotEventType = 14
   232  	// Bot completed a task.
   233  	//
   234  	// BotEvent.event_msg shall not be set. BotEvent.bot.current_task_id shall
   235  	// contain the task ID.
   236  	BotEventType_TASK_COMPLETED BotEventType = 20
   237  	// Bot had an internal failure (RAN_INTERNAL_FAILURE) to report to the server
   238  	// while processing a task. This shall send a report to the administrator of
   239  	// the instance and service author.
   240  	//
   241  	// This event shall not be filed in case of a MISSING_INPUTS.
   242  	//
   243  	// BotEvent.event_msg shall contain the error message.
   244  	// BotEvent.bot.current_task_id shall contain the task ID.
   245  	BotEventType_TASK_INTERNAL_FAILURE BotEventType = 21
   246  	// Bot is forcibly killing the task.
   247  	//
   248  	// This can be induced by a server side request (KILLED, PREEMPTED) or by a
   249  	// bot side decision (TIMED_OUT, TIMED_OUT_SILENCE).
   250  	//
   251  	// BotEvent.event_msg shall not be set. BotEvent.bot.current_task_id shall
   252  	// contain the task ID.
   253  	BotEventType_TASK_KILLED BotEventType = 22
   254  )
   255  
   256  // Enum value maps for BotEventType.
   257  var (
   258  	BotEventType_name = map[int32]string{
   259  		0:  "BOT_EVENT_TYPE_UNSPECIFIED",
   260  		1:  "BOT_NEW_SESSION",
   261  		2:  "BOT_INTERNAL_FAILURE",
   262  		3:  "BOT_HOOK_ERROR",
   263  		4:  "BOT_HOOK_LOG",
   264  		5:  "BOT_REBOOTING_HOST",
   265  		6:  "BOT_SHUTDOWN",
   266  		7:  "BOT_DELETED",
   267  		8:  "BOT_MISSING",
   268  		10: "INSTRUCT_IDLE",
   269  		11: "INSTRUCT_START_TASK",
   270  		12: "INSTRUCT_RESTART_BOT",
   271  		13: "INSTRUCT_UPDATE_BOT_CODE",
   272  		14: "INSTRUCT_TERMINATE_BOT",
   273  		20: "TASK_COMPLETED",
   274  		21: "TASK_INTERNAL_FAILURE",
   275  		22: "TASK_KILLED",
   276  	}
   277  	BotEventType_value = map[string]int32{
   278  		"BOT_EVENT_TYPE_UNSPECIFIED": 0,
   279  		"BOT_NEW_SESSION":            1,
   280  		"BOT_INTERNAL_FAILURE":       2,
   281  		"BOT_HOOK_ERROR":             3,
   282  		"BOT_HOOK_LOG":               4,
   283  		"BOT_REBOOTING_HOST":         5,
   284  		"BOT_SHUTDOWN":               6,
   285  		"BOT_DELETED":                7,
   286  		"BOT_MISSING":                8,
   287  		"INSTRUCT_IDLE":              10,
   288  		"INSTRUCT_START_TASK":        11,
   289  		"INSTRUCT_RESTART_BOT":       12,
   290  		"INSTRUCT_UPDATE_BOT_CODE":   13,
   291  		"INSTRUCT_TERMINATE_BOT":     14,
   292  		"TASK_COMPLETED":             20,
   293  		"TASK_INTERNAL_FAILURE":      21,
   294  		"TASK_KILLED":                22,
   295  	}
   296  )
   297  
   298  func (x BotEventType) Enum() *BotEventType {
   299  	p := new(BotEventType)
   300  	*p = x
   301  	return p
   302  }
   303  
   304  func (x BotEventType) String() string {
   305  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   306  }
   307  
   308  func (BotEventType) Descriptor() protoreflect.EnumDescriptor {
   309  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_enumTypes[1].Descriptor()
   310  }
   311  
   312  func (BotEventType) Type() protoreflect.EnumType {
   313  	return &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_enumTypes[1]
   314  }
   315  
   316  func (x BotEventType) Number() protoreflect.EnumNumber {
   317  	return protoreflect.EnumNumber(x)
   318  }
   319  
   320  // Deprecated: Use BotEventType.Descriptor instead.
   321  func (BotEventType) EnumDescriptor() ([]byte, []int) {
   322  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{1}
   323  }
   324  
   325  // The user to run the task.
   326  type User int32
   327  
   328  const (
   329  	// Unspecified; will default to pool-level defaults.
   330  	User_USER_UNSPECIFIED User = 0
   331  	// Historical value; tasks currently run as the same user that Swarming ran
   332  	// as.
   333  	User_USER_SWARMING User = 1
   334  	// Using the new, unprivileged user to run the task.
   335  	User_USER_TEMPORARY User = 2
   336  )
   337  
   338  // Enum value maps for User.
   339  var (
   340  	User_name = map[int32]string{
   341  		0: "USER_UNSPECIFIED",
   342  		1: "USER_SWARMING",
   343  		2: "USER_TEMPORARY",
   344  	}
   345  	User_value = map[string]int32{
   346  		"USER_UNSPECIFIED": 0,
   347  		"USER_SWARMING":    1,
   348  		"USER_TEMPORARY":   2,
   349  	}
   350  )
   351  
   352  func (x User) Enum() *User {
   353  	p := new(User)
   354  	*p = x
   355  	return p
   356  }
   357  
   358  func (x User) String() string {
   359  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   360  }
   361  
   362  func (User) Descriptor() protoreflect.EnumDescriptor {
   363  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_enumTypes[2].Descriptor()
   364  }
   365  
   366  func (User) Type() protoreflect.EnumType {
   367  	return &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_enumTypes[2]
   368  }
   369  
   370  func (x User) Number() protoreflect.EnumNumber {
   371  	return protoreflect.EnumNumber(x)
   372  }
   373  
   374  // Deprecated: Use User.Descriptor instead.
   375  func (User) EnumDescriptor() ([]byte, []int) {
   376  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{2}
   377  }
   378  
   379  // TaskStateCategory represents the 5 different categories of task state.
   380  //
   381  // For active state categories (RUNNING_MASK and TRANSIENT_DONE_MASK), it is
   382  // possible to go 'back' to PENDING_MASK category; for example, a task has an
   383  // internal error, and the server reenqueues the task for a second try.
   384  type TaskStateCategory int32
   385  
   386  const (
   387  	// Invalid value.
   388  	TaskStateCategory_TASK_STATE_CATEGORY_UNSPECIFIED TaskStateCategory = 0
   389  	// Bit mask for the TaskState inside each category.
   390  	TaskStateCategory_TASK_STATE_MASK TaskStateCategory = 15
   391  	// The task is enqueued and pending bot availability.
   392  	TaskStateCategory_CATEGORY_PENDING TaskStateCategory = 16
   393  	// The task is running.
   394  	TaskStateCategory_CATEGORY_RUNNING TaskStateCategory = 32
   395  	// Transient done states are uncertain states; something ran but the result
   396  	// was inconclusive.
   397  	//
   398  	// They can trigger the Swarming internal retry mechanism. In this case, the
   399  	// "task try" will have this state, but the task summary will become PENDING.
   400  	// In case the task cannot be retried, when idempotent is false, then this
   401  	// becomes a final state.
   402  	TaskStateCategory_CATEGORY_TRANSIENT_DONE TaskStateCategory = 48
   403  	// The task ran, and it is done.
   404  	TaskStateCategory_CATEGORY_EXECUTION_DONE TaskStateCategory = 64
   405  	// The task did not run, and won't.
   406  	TaskStateCategory_CATEGORY_NEVER_RAN_DONE TaskStateCategory = 80
   407  )
   408  
   409  // Enum value maps for TaskStateCategory.
   410  var (
   411  	TaskStateCategory_name = map[int32]string{
   412  		0:  "TASK_STATE_CATEGORY_UNSPECIFIED",
   413  		15: "TASK_STATE_MASK",
   414  		16: "CATEGORY_PENDING",
   415  		32: "CATEGORY_RUNNING",
   416  		48: "CATEGORY_TRANSIENT_DONE",
   417  		64: "CATEGORY_EXECUTION_DONE",
   418  		80: "CATEGORY_NEVER_RAN_DONE",
   419  	}
   420  	TaskStateCategory_value = map[string]int32{
   421  		"TASK_STATE_CATEGORY_UNSPECIFIED": 0,
   422  		"TASK_STATE_MASK":                 15,
   423  		"CATEGORY_PENDING":                16,
   424  		"CATEGORY_RUNNING":                32,
   425  		"CATEGORY_TRANSIENT_DONE":         48,
   426  		"CATEGORY_EXECUTION_DONE":         64,
   427  		"CATEGORY_NEVER_RAN_DONE":         80,
   428  	}
   429  )
   430  
   431  func (x TaskStateCategory) Enum() *TaskStateCategory {
   432  	p := new(TaskStateCategory)
   433  	*p = x
   434  	return p
   435  }
   436  
   437  func (x TaskStateCategory) String() string {
   438  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   439  }
   440  
   441  func (TaskStateCategory) Descriptor() protoreflect.EnumDescriptor {
   442  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_enumTypes[3].Descriptor()
   443  }
   444  
   445  func (TaskStateCategory) Type() protoreflect.EnumType {
   446  	return &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_enumTypes[3]
   447  }
   448  
   449  func (x TaskStateCategory) Number() protoreflect.EnumNumber {
   450  	return protoreflect.EnumNumber(x)
   451  }
   452  
   453  // Deprecated: Use TaskStateCategory.Descriptor instead.
   454  func (TaskStateCategory) EnumDescriptor() ([]byte, []int) {
   455  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{3}
   456  }
   457  
   458  // TaskState represents the different possible states for a Task.
   459  //
   460  // Each state is in one of the bitmask in TaskStateCategory.
   461  type TaskState int32
   462  
   463  const (
   464  	// Invalid task state.
   465  	TaskState_TASK_STATE_INVALID TaskState = 0
   466  	// The task is currently pending.
   467  	//
   468  	// This means that no bot reaped the task yet. It will stay in this state
   469  	// until either a bot reaps the task, or the expiration elapsed or all bots
   470  	// become MISSING, leading to a NO_RESOURCE. The task pending expiration is
   471  	// specified as TaskSlice.expiration, one per task slice.
   472  	//
   473  	// The task may go through multiple pending TaskSlice as they expire or are
   474  	// skipped due to NO_RESOURCE (see definition below). In this situation the
   475  	// task state still stays in PENDING state as long as there's a chance for a
   476  	// bot to reap the task.
   477  	TaskState_PENDING TaskState = 16
   478  	// The task is currently pending, but another previously scheduled task was
   479  	// identified to be deduped against, but the previously scheduled task hasn't
   480  	// completed yet.
   481  	//
   482  	// In this case, the task may go back into PENDING if the previous identical
   483  	// task failed, or immediately into DEDUPED if it succeeded.
   484  	TaskState_PENDING_DEDUPING TaskState = 17 // Not used yet, https://crbug.com/915342
   485  	// The task is currently running.
   486  	//
   487  	// For new tasks, this is only the actual tasks runtime. For old tasks, this
   488  	// includes RUNNING_OVERHEAD_START and RUNNING_OVERHEAD_END.
   489  	TaskState_RUNNING TaskState = 32
   490  	// The task is assigned to a bot. The bot is fetching input files and setting
   491  	// up the runtime environment.
   492  	TaskState_RUNNING_OVERHEAD_SETUP TaskState = 33 // Not used yet, https://crbug.com/796757
   493  	// Task completed and result metadata is available. Outputs and other
   494  	// associated logs are still being uploaded and the environment is being
   495  	// teared down.
   496  	//
   497  	// A client that only needs the exit code may chose to stop waiting for the
   498  	// task, as the task will end with COMPLETED, unless there's a failure during
   499  	// outputs upload, which would result in INTERNAL_FAILURE.
   500  	TaskState_RUNNING_OVERHEAD_TEARDOWN TaskState = 34 // Not used yet, https://crbug.com/813412
   501  	// The task is being forcibly terminated. This can be due to either a kill
   502  	// request, preemption or time out.
   503  	//
   504  	// See
   505  	// https://chromium.googlesource.com/infra/luci/luci-py.git/+/master/appengine/swarming/doc/Bot.md#graceful-termination_aka-the-sigterm-and-sigkill-dance
   506  	TaskState_TERMINATING TaskState = 35 // Not used yet. https://crbug.com/916560
   507  	// Task completed, result metadata and task outputs are available. There's
   508  	// still some overhead being finished like attaching relevant bot logs to the
   509  	// task.
   510  	//
   511  	// The client can return right away unless infrastructure issue debugging is
   512  	// needed.
   513  	TaskState_COMPLETING TaskState = 47 // Not used yet, https://crbug.com/813412
   514  	// The task ran but the bot had an internal failure, unrelated to the task
   515  	// itself. It can be due to disk or network I/O issues.
   516  	TaskState_RAN_INTERNAL_FAILURE TaskState = 48
   517  	// The task ran and completed normally, but returned an exit code that was
   518  	// provided in the TaskProperties as signaling an hardware failure of the DUT
   519  	// (Device Under Test).
   520  	//
   521  	// As such, the task may need to be retried.
   522  	TaskState_DUT_FAILURE TaskState = 49 // Not used yet, https://crbug.com/902807
   523  	// The task started but the bot failed to keep the connection to the server
   524  	// alive. This can be due to the bot's host crashing, or network connectivity
   525  	// issues.
   526  	TaskState_BOT_DISAPPEARED TaskState = 50 // Not used yet. https://crbug.com/916553
   527  	// The task ran but was killed by the client or an external scheduler in a way
   528  	// that it should still be retried as another task try.
   529  	//
   530  	// This can happen via the external scheduler or an API yet to be defined. The
   531  	// rationale is to kill slow running low priority task, without disrupting the
   532  	// client and simply postponing the task for later.
   533  	TaskState_PREEMPTED TaskState = 51 // Not used yet. https://crbug.com/916559
   534  	// The task ran and completed normally. The task process exit code may be 0 or
   535  	// another value.
   536  	//
   537  	// This value is also used when the task is deduped against a previous task.
   538  	TaskState_COMPLETED TaskState = 64
   539  	// The task ran for longer than the allowed time in
   540  	// TaskProperties.execution_timeout.
   541  	//
   542  	// This means the bot forcefully killed the task process as described in the
   543  	// graceful termination dance in the documentation.
   544  	TaskState_TIMED_OUT TaskState = 65
   545  	// The task timed out due to not sending updates to stdout or stderr within
   546  	// the period specified in TaskProperties.io_timeout.
   547  	//
   548  	// This means the bot forcefully killed the task process as described in the
   549  	// graceful termination dance in the documentation.
   550  	TaskState_TIMED_OUT_SILENCE TaskState = 66 // Not used yet. https://crbug.com/916556
   551  	// The task ran but was manually killed via the 'cancel' API.
   552  	//
   553  	// This means the bot forcefully killed the task process as described in the
   554  	// graceful termination dance in the documentation.
   555  	TaskState_KILLED TaskState = 67
   556  	// The task had specified invalid inputs. This is found out by the bot while
   557  	// RUNNING_OVERHEAD_SETUP.
   558  	//
   559  	// For example, the cas_inputs or cipd_inputs refers to missing items,
   560  	// or the requested containment cannot be achieved.
   561  	TaskState_MISSING_INPUTS TaskState = 68 // Not used yet. https://crbug.com/916553
   562  	// The task didn't have to run, because a previous task had results. It is
   563  	// functionally equivalent to COMPLETED, except that previous results were
   564  	// returned as-is.
   565  	TaskState_DEDUPED TaskState = 80
   566  	// The task is not pending anymore; it never ran due to lack of capacity.
   567  	//
   568  	// This means that other higher priority tasks ran instead and that not enough
   569  	// bots were available to run this task for TaskSlice.expiration.
   570  	TaskState_EXPIRED TaskState = 81
   571  	// The task never ran, and was manually cancelled via the 'cancel' API before
   572  	// it was reaped.
   573  	TaskState_CANCELED TaskState = 82
   574  	// The task was never set to PENDING and was immediately refused, as the
   575  	// server determined that there is no bot capacity to run this task. This
   576  	// happens because no bot exposes a superset of the requested task dimensions.
   577  	//
   578  	// There can be a situation where a task goes from PENDING to NO_RESOURCE if
   579  	// capacity (bots) is removed.
   580  	//
   581  	// Set TaskSlice.wait_for_capacity to True to force the server to keep the
   582  	// task slice pending even in this case. Generally speaking, the task will
   583  	// eventually switch to EXPIRED, as there's no bot to run it. That said, there
   584  	// are situations where it is known that in some not-too-distant future a wild
   585  	// bot will appear that will be able to run this task.
   586  	TaskState_NO_RESOURCE TaskState = 83
   587  	// The task was valid but was denied due to a temporary capacity surcharge.
   588  	// The user should try again after a delay, or surface the lack of capacity to
   589  	// the user.
   590  	TaskState_LOAD_SHED TaskState = 84 // Not used yet. https://crbug.com/916562
   591  	// The task is valid but was denied due to insufficient quota.
   592  	TaskState_RESOURCE_EXHAUSTED TaskState = 85 // Not used yet. https://crbug.com/916557
   593  	// The task never ran, the server had an internal failure, unrelated to the
   594  	// task itself. It can be due to a server bug or network I/O issues.
   595  	TaskState_SKIPPED_INTERNAL_FAILURE TaskState = 86 // Not used yet. https://crbug.com/916553
   596  	// The task encounted an error caused by the client. This means that
   597  	// rerunning the task with the same parameters will not change the result
   598  	TaskState_CLIENT_ERROR TaskState = 87
   599  )
   600  
   601  // Enum value maps for TaskState.
   602  var (
   603  	TaskState_name = map[int32]string{
   604  		0:  "TASK_STATE_INVALID",
   605  		16: "PENDING",
   606  		17: "PENDING_DEDUPING",
   607  		32: "RUNNING",
   608  		33: "RUNNING_OVERHEAD_SETUP",
   609  		34: "RUNNING_OVERHEAD_TEARDOWN",
   610  		35: "TERMINATING",
   611  		47: "COMPLETING",
   612  		48: "RAN_INTERNAL_FAILURE",
   613  		49: "DUT_FAILURE",
   614  		50: "BOT_DISAPPEARED",
   615  		51: "PREEMPTED",
   616  		64: "COMPLETED",
   617  		65: "TIMED_OUT",
   618  		66: "TIMED_OUT_SILENCE",
   619  		67: "KILLED",
   620  		68: "MISSING_INPUTS",
   621  		80: "DEDUPED",
   622  		81: "EXPIRED",
   623  		82: "CANCELED",
   624  		83: "NO_RESOURCE",
   625  		84: "LOAD_SHED",
   626  		85: "RESOURCE_EXHAUSTED",
   627  		86: "SKIPPED_INTERNAL_FAILURE",
   628  		87: "CLIENT_ERROR",
   629  	}
   630  	TaskState_value = map[string]int32{
   631  		"TASK_STATE_INVALID":        0,
   632  		"PENDING":                   16,
   633  		"PENDING_DEDUPING":          17,
   634  		"RUNNING":                   32,
   635  		"RUNNING_OVERHEAD_SETUP":    33,
   636  		"RUNNING_OVERHEAD_TEARDOWN": 34,
   637  		"TERMINATING":               35,
   638  		"COMPLETING":                47,
   639  		"RAN_INTERNAL_FAILURE":      48,
   640  		"DUT_FAILURE":               49,
   641  		"BOT_DISAPPEARED":           50,
   642  		"PREEMPTED":                 51,
   643  		"COMPLETED":                 64,
   644  		"TIMED_OUT":                 65,
   645  		"TIMED_OUT_SILENCE":         66,
   646  		"KILLED":                    67,
   647  		"MISSING_INPUTS":            68,
   648  		"DEDUPED":                   80,
   649  		"EXPIRED":                   81,
   650  		"CANCELED":                  82,
   651  		"NO_RESOURCE":               83,
   652  		"LOAD_SHED":                 84,
   653  		"RESOURCE_EXHAUSTED":        85,
   654  		"SKIPPED_INTERNAL_FAILURE":  86,
   655  		"CLIENT_ERROR":              87,
   656  	}
   657  )
   658  
   659  func (x TaskState) Enum() *TaskState {
   660  	p := new(TaskState)
   661  	*p = x
   662  	return p
   663  }
   664  
   665  func (x TaskState) String() string {
   666  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   667  }
   668  
   669  func (TaskState) Descriptor() protoreflect.EnumDescriptor {
   670  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_enumTypes[4].Descriptor()
   671  }
   672  
   673  func (TaskState) Type() protoreflect.EnumType {
   674  	return &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_enumTypes[4]
   675  }
   676  
   677  func (x TaskState) Number() protoreflect.EnumNumber {
   678  	return protoreflect.EnumNumber(x)
   679  }
   680  
   681  // Deprecated: Use TaskState.Descriptor instead.
   682  func (TaskState) EnumDescriptor() ([]byte, []int) {
   683  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{4}
   684  }
   685  
   686  type Containment_ContainmentType int32
   687  
   688  const (
   689  	// Historical value, not specified. Containment may or may not be used.
   690  	Containment_NOT_SPECIFIED Containment_ContainmentType = 0
   691  	// No containment, the default for now.
   692  	Containment_NONE Containment_ContainmentType = 1
   693  	// Use the containment appropriate on the platform.
   694  	Containment_AUTO Containment_ContainmentType = 2
   695  	// Use Job Object on Windows. Will fail if used on other platforms.
   696  	Containment_JOB_OBJECT Containment_ContainmentType = 3
   697  )
   698  
   699  // Enum value maps for Containment_ContainmentType.
   700  var (
   701  	Containment_ContainmentType_name = map[int32]string{
   702  		0: "NOT_SPECIFIED",
   703  		1: "NONE",
   704  		2: "AUTO",
   705  		3: "JOB_OBJECT",
   706  	}
   707  	Containment_ContainmentType_value = map[string]int32{
   708  		"NOT_SPECIFIED": 0,
   709  		"NONE":          1,
   710  		"AUTO":          2,
   711  		"JOB_OBJECT":    3,
   712  	}
   713  )
   714  
   715  func (x Containment_ContainmentType) Enum() *Containment_ContainmentType {
   716  	p := new(Containment_ContainmentType)
   717  	*p = x
   718  	return p
   719  }
   720  
   721  func (x Containment_ContainmentType) String() string {
   722  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
   723  }
   724  
   725  func (Containment_ContainmentType) Descriptor() protoreflect.EnumDescriptor {
   726  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_enumTypes[5].Descriptor()
   727  }
   728  
   729  func (Containment_ContainmentType) Type() protoreflect.EnumType {
   730  	return &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_enumTypes[5]
   731  }
   732  
   733  func (x Containment_ContainmentType) Number() protoreflect.EnumNumber {
   734  	return protoreflect.EnumNumber(x)
   735  }
   736  
   737  // Deprecated: Use Containment_ContainmentType.Descriptor instead.
   738  func (Containment_ContainmentType) EnumDescriptor() ([]byte, []int) {
   739  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{16, 0}
   740  }
   741  
   742  // Request for BotAPI.Events.
   743  type BotEventsRequest struct {
   744  	state         protoimpl.MessageState
   745  	sizeCache     protoimpl.SizeCache
   746  	unknownFields protoimpl.UnknownFields
   747  
   748  	// Required. Bot ID to retrieve results from.
   749  	BotId string `protobuf:"bytes,1,opt,name=bot_id,json=botId,proto3" json:"bot_id,omitempty"`
   750  	// Optional. Use this field to specify the maximum number of results to be
   751  	// returned by the server.
   752  	//
   753  	// The server may further constrain the maximum number of results returned in
   754  	// a single page. If the page_size is 0, the server will decide the number of
   755  	// results to be returned.
   756  	PageSize int32 `protobuf:"varint,2,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"`
   757  	// Optional. Use this field to request a specific page of the list results,
   758  	// following a previous call.
   759  	//
   760  	// When specified, page_size, start_time and end_time must match exactly the
   761  	// previous call's argument.
   762  	PageToken string `protobuf:"bytes,3,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"`
   763  	// Optional. Earliest time to return bot event. Inclusive.
   764  	//
   765  	// If not specified, pagination is done until all events are returned.
   766  	StartTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
   767  	// Optional. Most recent time to return bot event. Exclusive.
   768  	//
   769  	// If not specified, defaults to the current time.
   770  	EndTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
   771  }
   772  
   773  func (x *BotEventsRequest) Reset() {
   774  	*x = BotEventsRequest{}
   775  	if protoimpl.UnsafeEnabled {
   776  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[0]
   777  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   778  		ms.StoreMessageInfo(mi)
   779  	}
   780  }
   781  
   782  func (x *BotEventsRequest) String() string {
   783  	return protoimpl.X.MessageStringOf(x)
   784  }
   785  
   786  func (*BotEventsRequest) ProtoMessage() {}
   787  
   788  func (x *BotEventsRequest) ProtoReflect() protoreflect.Message {
   789  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[0]
   790  	if protoimpl.UnsafeEnabled && x != nil {
   791  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   792  		if ms.LoadMessageInfo() == nil {
   793  			ms.StoreMessageInfo(mi)
   794  		}
   795  		return ms
   796  	}
   797  	return mi.MessageOf(x)
   798  }
   799  
   800  // Deprecated: Use BotEventsRequest.ProtoReflect.Descriptor instead.
   801  func (*BotEventsRequest) Descriptor() ([]byte, []int) {
   802  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{0}
   803  }
   804  
   805  func (x *BotEventsRequest) GetBotId() string {
   806  	if x != nil {
   807  		return x.BotId
   808  	}
   809  	return ""
   810  }
   811  
   812  func (x *BotEventsRequest) GetPageSize() int32 {
   813  	if x != nil {
   814  		return x.PageSize
   815  	}
   816  	return 0
   817  }
   818  
   819  func (x *BotEventsRequest) GetPageToken() string {
   820  	if x != nil {
   821  		return x.PageToken
   822  	}
   823  	return ""
   824  }
   825  
   826  func (x *BotEventsRequest) GetStartTime() *timestamppb.Timestamp {
   827  	if x != nil {
   828  		return x.StartTime
   829  	}
   830  	return nil
   831  }
   832  
   833  func (x *BotEventsRequest) GetEndTime() *timestamppb.Timestamp {
   834  	if x != nil {
   835  		return x.EndTime
   836  	}
   837  	return nil
   838  }
   839  
   840  // Response of BotAPI.Events.
   841  type BotEventsResponse struct {
   842  	state         protoimpl.MessageState
   843  	sizeCache     protoimpl.SizeCache
   844  	unknownFields protoimpl.UnknownFields
   845  
   846  	// Events are in reverse chronological order, most recents first and going
   847  	// down to older events.
   848  	Events []*BotEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
   849  	// This field represents the pagination token to retrieve the next page of
   850  	// results. If the value is "", it means no further results for the request.
   851  	NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"`
   852  }
   853  
   854  func (x *BotEventsResponse) Reset() {
   855  	*x = BotEventsResponse{}
   856  	if protoimpl.UnsafeEnabled {
   857  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[1]
   858  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   859  		ms.StoreMessageInfo(mi)
   860  	}
   861  }
   862  
   863  func (x *BotEventsResponse) String() string {
   864  	return protoimpl.X.MessageStringOf(x)
   865  }
   866  
   867  func (*BotEventsResponse) ProtoMessage() {}
   868  
   869  func (x *BotEventsResponse) ProtoReflect() protoreflect.Message {
   870  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[1]
   871  	if protoimpl.UnsafeEnabled && x != nil {
   872  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   873  		if ms.LoadMessageInfo() == nil {
   874  			ms.StoreMessageInfo(mi)
   875  		}
   876  		return ms
   877  	}
   878  	return mi.MessageOf(x)
   879  }
   880  
   881  // Deprecated: Use BotEventsResponse.ProtoReflect.Descriptor instead.
   882  func (*BotEventsResponse) Descriptor() ([]byte, []int) {
   883  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{1}
   884  }
   885  
   886  func (x *BotEventsResponse) GetEvents() []*BotEvent {
   887  	if x != nil {
   888  		return x.Events
   889  	}
   890  	return nil
   891  }
   892  
   893  func (x *BotEventsResponse) GetNextPageToken() string {
   894  	if x != nil {
   895  		return x.NextPageToken
   896  	}
   897  	return ""
   898  }
   899  
   900  // Represents a mapping of string to a string.
   901  //
   902  // The same as a map<key, value>, except that the encoding is deterministic.
   903  //
   904  // If the StringPair is itself repeated inside another message, the list
   905  // must be sorted by key and the keys must be unique.
   906  type StringPair struct {
   907  	state         protoimpl.MessageState
   908  	sizeCache     protoimpl.SizeCache
   909  	unknownFields protoimpl.UnknownFields
   910  
   911  	Key   string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
   912  	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
   913  }
   914  
   915  func (x *StringPair) Reset() {
   916  	*x = StringPair{}
   917  	if protoimpl.UnsafeEnabled {
   918  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[2]
   919  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   920  		ms.StoreMessageInfo(mi)
   921  	}
   922  }
   923  
   924  func (x *StringPair) String() string {
   925  	return protoimpl.X.MessageStringOf(x)
   926  }
   927  
   928  func (*StringPair) ProtoMessage() {}
   929  
   930  func (x *StringPair) ProtoReflect() protoreflect.Message {
   931  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[2]
   932  	if protoimpl.UnsafeEnabled && x != nil {
   933  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   934  		if ms.LoadMessageInfo() == nil {
   935  			ms.StoreMessageInfo(mi)
   936  		}
   937  		return ms
   938  	}
   939  	return mi.MessageOf(x)
   940  }
   941  
   942  // Deprecated: Use StringPair.ProtoReflect.Descriptor instead.
   943  func (*StringPair) Descriptor() ([]byte, []int) {
   944  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{2}
   945  }
   946  
   947  func (x *StringPair) GetKey() string {
   948  	if x != nil {
   949  		return x.Key
   950  	}
   951  	return ""
   952  }
   953  
   954  func (x *StringPair) GetValue() string {
   955  	if x != nil {
   956  		return x.Value
   957  	}
   958  	return ""
   959  }
   960  
   961  // Represents a mapping of string to a list of strings.
   962  //
   963  // The same as a map<key, repeated values>, except that the encoding is
   964  // deterministic.
   965  //
   966  // If the StringListPair is itself repeated inside another message, the list
   967  // must be sorted by key and the keys must be unique.
   968  type StringListPair struct {
   969  	state         protoimpl.MessageState
   970  	sizeCache     protoimpl.SizeCache
   971  	unknownFields protoimpl.UnknownFields
   972  
   973  	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
   974  	// All the values for this key. values must be sorted. Human readable.
   975  	//
   976  	// This string should make sense to a user in the context of 'key'.
   977  	Values []string `protobuf:"bytes,2,rep,name=values,proto3" json:"values,omitempty"`
   978  }
   979  
   980  func (x *StringListPair) Reset() {
   981  	*x = StringListPair{}
   982  	if protoimpl.UnsafeEnabled {
   983  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[3]
   984  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   985  		ms.StoreMessageInfo(mi)
   986  	}
   987  }
   988  
   989  func (x *StringListPair) String() string {
   990  	return protoimpl.X.MessageStringOf(x)
   991  }
   992  
   993  func (*StringListPair) ProtoMessage() {}
   994  
   995  func (x *StringListPair) ProtoReflect() protoreflect.Message {
   996  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[3]
   997  	if protoimpl.UnsafeEnabled && x != nil {
   998  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   999  		if ms.LoadMessageInfo() == nil {
  1000  			ms.StoreMessageInfo(mi)
  1001  		}
  1002  		return ms
  1003  	}
  1004  	return mi.MessageOf(x)
  1005  }
  1006  
  1007  // Deprecated: Use StringListPair.ProtoReflect.Descriptor instead.
  1008  func (*StringListPair) Descriptor() ([]byte, []int) {
  1009  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{3}
  1010  }
  1011  
  1012  func (x *StringListPair) GetKey() string {
  1013  	if x != nil {
  1014  		return x.Key
  1015  	}
  1016  	return ""
  1017  }
  1018  
  1019  func (x *StringListPair) GetValues() []string {
  1020  	if x != nil {
  1021  		return x.Values
  1022  	}
  1023  	return nil
  1024  }
  1025  
  1026  // Bot describes a Swarming bot.
  1027  //
  1028  // Because a Swarming bot is a single execution unit unlike RBE, it doesn't have
  1029  // a concept of owned device at the moment. This may change later.
  1030  type Bot struct {
  1031  	state         protoimpl.MessageState
  1032  	sizeCache     protoimpl.SizeCache
  1033  	unknownFields protoimpl.UnknownFields
  1034  
  1035  	// Bot ID. It must be unique across the Swarming fleet. Generally based on the
  1036  	// hostname where the bot runs, but that's not a requirement. Must be
  1037  	// predefined in bots.cfg.
  1038  	//
  1039  	// This value is also included in dimensions for the key 'id'.
  1040  	BotId string `protobuf:"bytes,1,opt,name=bot_id,json=botId,proto3" json:"bot_id,omitempty"`
  1041  	// Bot session ID. An opaque value.
  1042  	//
  1043  	// There is one bot session ID per bot process ID on the host. When the bot
  1044  	// self-upgrades, it creates a new bot session ID.
  1045  	SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // Not used yet. https://crbug.com/786735
  1046  	// Pools that this bot belongs to. Normally assigned via bots.cfg. The
  1047  	// pools must be defined in pools.cfg.
  1048  	//
  1049  	// Normally a bot shall belong to a single pool, but belonging to multiple
  1050  	// pool is allowed. This is generally helpful for transitioning bots.
  1051  	//
  1052  	// This value is also included in dimensions for the key 'pool'.
  1053  	Pools []string `protobuf:"bytes,3,rep,name=pools,proto3" json:"pools,omitempty"`
  1054  	// Current bot status. A bot status is a state in which the bot is for a
  1055  	// certain amount of time.
  1056  	Status BotStatusType `protobuf:"varint,4,opt,name=status,proto3,enum=swarming.v1.BotStatusType" json:"status,omitempty"`
  1057  	// Supplemental information to describe the bot status. Human readable.
  1058  	//
  1059  	// See BotStatusType for the meaning of this string for each status.
  1060  	StatusMsg string `protobuf:"bytes,5,opt,name=status_msg,json=statusMsg,proto3" json:"status_msg,omitempty"`
  1061  	// Current task being handled by the bot, if there is one.
  1062  	//
  1063  	// In Swarming, only a single task can be assigned to a bot at any given time.
  1064  	CurrentTaskId string `protobuf:"bytes,6,opt,name=current_task_id,json=currentTaskId,proto3" json:"current_task_id,omitempty"`
  1065  	// Bot reported dimensions. dimensions is a {key: [values]} dictionary. This
  1066  	// can be used to declare the properties of the host or for the DUT (Device
  1067  	// Under Test) under control. This is used for task selection.
  1068  	//
  1069  	// In RBE, this is called Property. The difference is that RBE's Property is a
  1070  	// string:string flat dictionary, it doesn't allow repeated values.
  1071  	//
  1072  	// https://chromium.googlesource.com/infra/luci/luci-py.git/+/master/appengine/swarming/doc/Detailed-Design.md#bot-dimensions
  1073  	//
  1074  	// dimensions MUST be sorted by keys, and each values list must be sorted.
  1075  	// Each dimension key must be unique.
  1076  	//
  1077  	// The values are effectively an OR, a task may match any of the value.
  1078  	//
  1079  	// Human readable.
  1080  	Dimensions []*StringListPair `protobuf:"bytes,7,rep,name=dimensions,proto3" json:"dimensions,omitempty"`
  1081  	// Bot reported informational state. This can be used to describe the host,
  1082  	// the bot itself and the DUT (Device Under Test) under control as applicable.
  1083  	//
  1084  	// This is NOT used for task selection.
  1085  	Info *BotInfo `protobuf:"bytes,8,opt,name=info,proto3" json:"info,omitempty"`
  1086  }
  1087  
  1088  func (x *Bot) Reset() {
  1089  	*x = Bot{}
  1090  	if protoimpl.UnsafeEnabled {
  1091  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[4]
  1092  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1093  		ms.StoreMessageInfo(mi)
  1094  	}
  1095  }
  1096  
  1097  func (x *Bot) String() string {
  1098  	return protoimpl.X.MessageStringOf(x)
  1099  }
  1100  
  1101  func (*Bot) ProtoMessage() {}
  1102  
  1103  func (x *Bot) ProtoReflect() protoreflect.Message {
  1104  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[4]
  1105  	if protoimpl.UnsafeEnabled && x != nil {
  1106  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1107  		if ms.LoadMessageInfo() == nil {
  1108  			ms.StoreMessageInfo(mi)
  1109  		}
  1110  		return ms
  1111  	}
  1112  	return mi.MessageOf(x)
  1113  }
  1114  
  1115  // Deprecated: Use Bot.ProtoReflect.Descriptor instead.
  1116  func (*Bot) Descriptor() ([]byte, []int) {
  1117  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{4}
  1118  }
  1119  
  1120  func (x *Bot) GetBotId() string {
  1121  	if x != nil {
  1122  		return x.BotId
  1123  	}
  1124  	return ""
  1125  }
  1126  
  1127  func (x *Bot) GetSessionId() string {
  1128  	if x != nil {
  1129  		return x.SessionId
  1130  	}
  1131  	return ""
  1132  }
  1133  
  1134  func (x *Bot) GetPools() []string {
  1135  	if x != nil {
  1136  		return x.Pools
  1137  	}
  1138  	return nil
  1139  }
  1140  
  1141  func (x *Bot) GetStatus() BotStatusType {
  1142  	if x != nil {
  1143  		return x.Status
  1144  	}
  1145  	return BotStatusType_BOT_STATUS_UNSPECIFIED
  1146  }
  1147  
  1148  func (x *Bot) GetStatusMsg() string {
  1149  	if x != nil {
  1150  		return x.StatusMsg
  1151  	}
  1152  	return ""
  1153  }
  1154  
  1155  func (x *Bot) GetCurrentTaskId() string {
  1156  	if x != nil {
  1157  		return x.CurrentTaskId
  1158  	}
  1159  	return ""
  1160  }
  1161  
  1162  func (x *Bot) GetDimensions() []*StringListPair {
  1163  	if x != nil {
  1164  		return x.Dimensions
  1165  	}
  1166  	return nil
  1167  }
  1168  
  1169  func (x *Bot) GetInfo() *BotInfo {
  1170  	if x != nil {
  1171  		return x.Info
  1172  	}
  1173  	return nil
  1174  }
  1175  
  1176  // Bot reported informational state. This can be used to describe the host,
  1177  // the bot itself and the DUT (Device Under Test) under control as applicable.
  1178  //
  1179  // This is NOT used for task selection.
  1180  type BotInfo struct {
  1181  	state         protoimpl.MessageState
  1182  	sizeCache     protoimpl.SizeCache
  1183  	unknownFields protoimpl.UnknownFields
  1184  
  1185  	// supplemental contains the free form JSON data that includes interesting
  1186  	// information about the bot that doesn't fit in any of the fields below.
  1187  	//
  1188  	// Anything that is usable by multiple customers should eventually be moved to
  1189  	// a new field below.
  1190  	Supplemental *structpb.Struct `protobuf:"bytes,1,opt,name=supplemental,proto3" json:"supplemental,omitempty"`
  1191  	// Bot's version. An opaque value.
  1192  	//
  1193  	// This value is Swarming instance and configuration dependent. Bot are
  1194  	// updated through the process described at
  1195  	// https://chromium.googlesource.com/infra/luci/luci-py.git/+/master/appengine/swarming/doc/Bot.md#update
  1196  	Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
  1197  	// External IP address as visible by the server.
  1198  	//
  1199  	// This could be a NAT'ing router external IP.
  1200  	//
  1201  	// Can be either IPv4 or IPv6.
  1202  	ExternalIp string `protobuf:"bytes,3,opt,name=external_ip,json=externalIp,proto3" json:"external_ip,omitempty"`
  1203  	// Authentication identity that the bot identified as. An opaque value.
  1204  	AuthenticatedAs string `protobuf:"bytes,4,opt,name=authenticated_as,json=authenticatedAs,proto3" json:"authenticated_as,omitempty"`
  1205  	// State of the content addressed cache on the bot. This is used for inputs
  1206  	// files.
  1207  	CasStats *CASStats `protobuf:"bytes,5,opt,name=cas_stats,json=casStats,proto3" json:"cas_stats,omitempty"`
  1208  	// State of the named caches (used by incremental tasks) on the bot. This is
  1209  	// used for task that benefits from incrementality, like builds.
  1210  	//
  1211  	// Should be sorted by name.
  1212  	NamedCachesStats []*NamedCacheStats `protobuf:"bytes,6,rep,name=named_caches_stats,json=namedCachesStats,proto3" json:"named_caches_stats,omitempty"`
  1213  	// State of the CIPD packages cache on the bot. This is use for installable,
  1214  	// versioned packages.
  1215  	//
  1216  	// Should be sorted by package name, then version.
  1217  	CipdPackagesCacheStats []*CIPDPackageCacheStats `protobuf:"bytes,7,rep,name=cipd_packages_cache_stats,json=cipdPackagesCacheStats,proto3" json:"cipd_packages_cache_stats,omitempty"`
  1218  	// Information about the host.
  1219  	Host *PhysicalEntity `protobuf:"bytes,8,opt,name=host,proto3" json:"host,omitempty"`
  1220  	// Information about the devices connected to the host.
  1221  	//
  1222  	// This can be the DUT (Device Under Test) or other peripherals.
  1223  	Devices []*PhysicalEntity `protobuf:"bytes,9,rep,name=devices,proto3" json:"devices,omitempty"`
  1224  	// This field is used in BOT_MISSING event to know the timestamp of the last activity.
  1225  	LastSeenTs *timestamppb.Timestamp `protobuf:"bytes,10,opt,name=last_seen_ts,json=lastSeenTs,proto3" json:"last_seen_ts,omitempty"`
  1226  	// The time when the bot became idle.
  1227  	IdleSinceTs *timestamppb.Timestamp `protobuf:"bytes,11,opt,name=idle_since_ts,json=idleSinceTs,proto3" json:"idle_since_ts,omitempty"`
  1228  }
  1229  
  1230  func (x *BotInfo) Reset() {
  1231  	*x = BotInfo{}
  1232  	if protoimpl.UnsafeEnabled {
  1233  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[5]
  1234  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1235  		ms.StoreMessageInfo(mi)
  1236  	}
  1237  }
  1238  
  1239  func (x *BotInfo) String() string {
  1240  	return protoimpl.X.MessageStringOf(x)
  1241  }
  1242  
  1243  func (*BotInfo) ProtoMessage() {}
  1244  
  1245  func (x *BotInfo) ProtoReflect() protoreflect.Message {
  1246  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[5]
  1247  	if protoimpl.UnsafeEnabled && x != nil {
  1248  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1249  		if ms.LoadMessageInfo() == nil {
  1250  			ms.StoreMessageInfo(mi)
  1251  		}
  1252  		return ms
  1253  	}
  1254  	return mi.MessageOf(x)
  1255  }
  1256  
  1257  // Deprecated: Use BotInfo.ProtoReflect.Descriptor instead.
  1258  func (*BotInfo) Descriptor() ([]byte, []int) {
  1259  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{5}
  1260  }
  1261  
  1262  func (x *BotInfo) GetSupplemental() *structpb.Struct {
  1263  	if x != nil {
  1264  		return x.Supplemental
  1265  	}
  1266  	return nil
  1267  }
  1268  
  1269  func (x *BotInfo) GetVersion() string {
  1270  	if x != nil {
  1271  		return x.Version
  1272  	}
  1273  	return ""
  1274  }
  1275  
  1276  func (x *BotInfo) GetExternalIp() string {
  1277  	if x != nil {
  1278  		return x.ExternalIp
  1279  	}
  1280  	return ""
  1281  }
  1282  
  1283  func (x *BotInfo) GetAuthenticatedAs() string {
  1284  	if x != nil {
  1285  		return x.AuthenticatedAs
  1286  	}
  1287  	return ""
  1288  }
  1289  
  1290  func (x *BotInfo) GetCasStats() *CASStats {
  1291  	if x != nil {
  1292  		return x.CasStats
  1293  	}
  1294  	return nil
  1295  }
  1296  
  1297  func (x *BotInfo) GetNamedCachesStats() []*NamedCacheStats {
  1298  	if x != nil {
  1299  		return x.NamedCachesStats
  1300  	}
  1301  	return nil
  1302  }
  1303  
  1304  func (x *BotInfo) GetCipdPackagesCacheStats() []*CIPDPackageCacheStats {
  1305  	if x != nil {
  1306  		return x.CipdPackagesCacheStats
  1307  	}
  1308  	return nil
  1309  }
  1310  
  1311  func (x *BotInfo) GetHost() *PhysicalEntity {
  1312  	if x != nil {
  1313  		return x.Host
  1314  	}
  1315  	return nil
  1316  }
  1317  
  1318  func (x *BotInfo) GetDevices() []*PhysicalEntity {
  1319  	if x != nil {
  1320  		return x.Devices
  1321  	}
  1322  	return nil
  1323  }
  1324  
  1325  func (x *BotInfo) GetLastSeenTs() *timestamppb.Timestamp {
  1326  	if x != nil {
  1327  		return x.LastSeenTs
  1328  	}
  1329  	return nil
  1330  }
  1331  
  1332  func (x *BotInfo) GetIdleSinceTs() *timestamppb.Timestamp {
  1333  	if x != nil {
  1334  		return x.IdleSinceTs
  1335  	}
  1336  	return nil
  1337  }
  1338  
  1339  // PhysicalEntity includes information about an host or device.
  1340  //
  1341  // This can be the host where the bot runs, or a device under control of the
  1342  // bot.
  1343  //
  1344  // If the bot runs inside a docker container, this information is about the
  1345  // container, or whatever the bot can observe from its vantage point.
  1346  type PhysicalEntity struct {
  1347  	state         protoimpl.MessageState
  1348  	sizeCache     protoimpl.SizeCache
  1349  	unknownFields protoimpl.UnknownFields
  1350  
  1351  	// Name that represents this physical entity.
  1352  	//
  1353  	// For a host, it shall be the hostname. For a device, it should be the device
  1354  	// hostname, if any. Failing that, something that makes sense to the users.
  1355  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1356  	// supplemental contains the free form JSON data that includes interesting
  1357  	// information about the device that doesn't fit in any of the fields below.
  1358  	//
  1359  	// Anything that is usable by multiple customers should eventually be moved to
  1360  	// a new field below.
  1361  	Supplemental *structpb.Struct `protobuf:"bytes,2,opt,name=supplemental,proto3" json:"supplemental,omitempty"`
  1362  	// IP address as visible by the bot process (bot_main) itself.
  1363  	//
  1364  	// In the case of the host, it will be one of the IP addresses assigned to it.
  1365  	// In the case of the host where the bot is running inside docker, it will be
  1366  	// the IP address assigned to the docker container.
  1367  	// In the case of a device, it is the IP address of the device, if any.
  1368  	//
  1369  	// Can be either IPv4 or IPv6.
  1370  	Ip string `protobuf:"bytes,3,opt,name=ip,proto3" json:"ip,omitempty"`
  1371  }
  1372  
  1373  func (x *PhysicalEntity) Reset() {
  1374  	*x = PhysicalEntity{}
  1375  	if protoimpl.UnsafeEnabled {
  1376  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[6]
  1377  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1378  		ms.StoreMessageInfo(mi)
  1379  	}
  1380  }
  1381  
  1382  func (x *PhysicalEntity) String() string {
  1383  	return protoimpl.X.MessageStringOf(x)
  1384  }
  1385  
  1386  func (*PhysicalEntity) ProtoMessage() {}
  1387  
  1388  func (x *PhysicalEntity) ProtoReflect() protoreflect.Message {
  1389  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[6]
  1390  	if protoimpl.UnsafeEnabled && x != nil {
  1391  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1392  		if ms.LoadMessageInfo() == nil {
  1393  			ms.StoreMessageInfo(mi)
  1394  		}
  1395  		return ms
  1396  	}
  1397  	return mi.MessageOf(x)
  1398  }
  1399  
  1400  // Deprecated: Use PhysicalEntity.ProtoReflect.Descriptor instead.
  1401  func (*PhysicalEntity) Descriptor() ([]byte, []int) {
  1402  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{6}
  1403  }
  1404  
  1405  func (x *PhysicalEntity) GetName() string {
  1406  	if x != nil {
  1407  		return x.Name
  1408  	}
  1409  	return ""
  1410  }
  1411  
  1412  func (x *PhysicalEntity) GetSupplemental() *structpb.Struct {
  1413  	if x != nil {
  1414  		return x.Supplemental
  1415  	}
  1416  	return nil
  1417  }
  1418  
  1419  func (x *PhysicalEntity) GetIp() string {
  1420  	if x != nil {
  1421  		return x.Ip
  1422  	}
  1423  	return ""
  1424  }
  1425  
  1426  // Bot local content addressed cache information.
  1427  type CASStats struct {
  1428  	state         protoimpl.MessageState
  1429  	sizeCache     protoimpl.SizeCache
  1430  	unknownFields protoimpl.UnknownFields
  1431  
  1432  	NumberItems int64                  `protobuf:"varint,1,opt,name=number_items,json=numberItems,proto3" json:"number_items,omitempty"`
  1433  	Size        int64                  `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"`
  1434  	OldestTime  *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=oldest_time,json=oldestTime,proto3" json:"oldest_time,omitempty"`
  1435  }
  1436  
  1437  func (x *CASStats) Reset() {
  1438  	*x = CASStats{}
  1439  	if protoimpl.UnsafeEnabled {
  1440  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[7]
  1441  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1442  		ms.StoreMessageInfo(mi)
  1443  	}
  1444  }
  1445  
  1446  func (x *CASStats) String() string {
  1447  	return protoimpl.X.MessageStringOf(x)
  1448  }
  1449  
  1450  func (*CASStats) ProtoMessage() {}
  1451  
  1452  func (x *CASStats) ProtoReflect() protoreflect.Message {
  1453  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[7]
  1454  	if protoimpl.UnsafeEnabled && x != nil {
  1455  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1456  		if ms.LoadMessageInfo() == nil {
  1457  			ms.StoreMessageInfo(mi)
  1458  		}
  1459  		return ms
  1460  	}
  1461  	return mi.MessageOf(x)
  1462  }
  1463  
  1464  // Deprecated: Use CASStats.ProtoReflect.Descriptor instead.
  1465  func (*CASStats) Descriptor() ([]byte, []int) {
  1466  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{7}
  1467  }
  1468  
  1469  func (x *CASStats) GetNumberItems() int64 {
  1470  	if x != nil {
  1471  		return x.NumberItems
  1472  	}
  1473  	return 0
  1474  }
  1475  
  1476  func (x *CASStats) GetSize() int64 {
  1477  	if x != nil {
  1478  		return x.Size
  1479  	}
  1480  	return 0
  1481  }
  1482  
  1483  func (x *CASStats) GetOldestTime() *timestamppb.Timestamp {
  1484  	if x != nil {
  1485  		return x.OldestTime
  1486  	}
  1487  	return nil
  1488  }
  1489  
  1490  // Bot local named cache information.
  1491  type NamedCacheStats struct {
  1492  	state         protoimpl.MessageState
  1493  	sizeCache     protoimpl.SizeCache
  1494  	unknownFields protoimpl.UnknownFields
  1495  
  1496  	Name        string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1497  	Size        int64                  `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"`
  1498  	LastUseTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=last_use_time,json=lastUseTime,proto3" json:"last_use_time,omitempty"`
  1499  }
  1500  
  1501  func (x *NamedCacheStats) Reset() {
  1502  	*x = NamedCacheStats{}
  1503  	if protoimpl.UnsafeEnabled {
  1504  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[8]
  1505  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1506  		ms.StoreMessageInfo(mi)
  1507  	}
  1508  }
  1509  
  1510  func (x *NamedCacheStats) String() string {
  1511  	return protoimpl.X.MessageStringOf(x)
  1512  }
  1513  
  1514  func (*NamedCacheStats) ProtoMessage() {}
  1515  
  1516  func (x *NamedCacheStats) ProtoReflect() protoreflect.Message {
  1517  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[8]
  1518  	if protoimpl.UnsafeEnabled && x != nil {
  1519  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1520  		if ms.LoadMessageInfo() == nil {
  1521  			ms.StoreMessageInfo(mi)
  1522  		}
  1523  		return ms
  1524  	}
  1525  	return mi.MessageOf(x)
  1526  }
  1527  
  1528  // Deprecated: Use NamedCacheStats.ProtoReflect.Descriptor instead.
  1529  func (*NamedCacheStats) Descriptor() ([]byte, []int) {
  1530  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{8}
  1531  }
  1532  
  1533  func (x *NamedCacheStats) GetName() string {
  1534  	if x != nil {
  1535  		return x.Name
  1536  	}
  1537  	return ""
  1538  }
  1539  
  1540  func (x *NamedCacheStats) GetSize() int64 {
  1541  	if x != nil {
  1542  		return x.Size
  1543  	}
  1544  	return 0
  1545  }
  1546  
  1547  func (x *NamedCacheStats) GetLastUseTime() *timestamppb.Timestamp {
  1548  	if x != nil {
  1549  		return x.LastUseTime
  1550  	}
  1551  	return nil
  1552  }
  1553  
  1554  // Bot local CIPD package cache information.
  1555  type CIPDPackageCacheStats struct {
  1556  	state         protoimpl.MessageState
  1557  	sizeCache     protoimpl.SizeCache
  1558  	unknownFields protoimpl.UnknownFields
  1559  
  1560  	Name        string                 `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  1561  	Version     string                 `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
  1562  	Size        int64                  `protobuf:"varint,3,opt,name=size,proto3" json:"size,omitempty"`
  1563  	LastUseTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=last_use_time,json=lastUseTime,proto3" json:"last_use_time,omitempty"`
  1564  }
  1565  
  1566  func (x *CIPDPackageCacheStats) Reset() {
  1567  	*x = CIPDPackageCacheStats{}
  1568  	if protoimpl.UnsafeEnabled {
  1569  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[9]
  1570  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1571  		ms.StoreMessageInfo(mi)
  1572  	}
  1573  }
  1574  
  1575  func (x *CIPDPackageCacheStats) String() string {
  1576  	return protoimpl.X.MessageStringOf(x)
  1577  }
  1578  
  1579  func (*CIPDPackageCacheStats) ProtoMessage() {}
  1580  
  1581  func (x *CIPDPackageCacheStats) ProtoReflect() protoreflect.Message {
  1582  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[9]
  1583  	if protoimpl.UnsafeEnabled && x != nil {
  1584  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1585  		if ms.LoadMessageInfo() == nil {
  1586  			ms.StoreMessageInfo(mi)
  1587  		}
  1588  		return ms
  1589  	}
  1590  	return mi.MessageOf(x)
  1591  }
  1592  
  1593  // Deprecated: Use CIPDPackageCacheStats.ProtoReflect.Descriptor instead.
  1594  func (*CIPDPackageCacheStats) Descriptor() ([]byte, []int) {
  1595  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{9}
  1596  }
  1597  
  1598  func (x *CIPDPackageCacheStats) GetName() string {
  1599  	if x != nil {
  1600  		return x.Name
  1601  	}
  1602  	return ""
  1603  }
  1604  
  1605  func (x *CIPDPackageCacheStats) GetVersion() string {
  1606  	if x != nil {
  1607  		return x.Version
  1608  	}
  1609  	return ""
  1610  }
  1611  
  1612  func (x *CIPDPackageCacheStats) GetSize() int64 {
  1613  	if x != nil {
  1614  		return x.Size
  1615  	}
  1616  	return 0
  1617  }
  1618  
  1619  func (x *CIPDPackageCacheStats) GetLastUseTime() *timestamppb.Timestamp {
  1620  	if x != nil {
  1621  		return x.LastUseTime
  1622  	}
  1623  	return nil
  1624  }
  1625  
  1626  // BotEvent represents an event on the bot.
  1627  //
  1628  // This message is used both in the API and as a BigQuery table description for
  1629  // the table 'bot_events' in dataset 'swarming'.
  1630  type BotEvent struct {
  1631  	state         protoimpl.MessageState
  1632  	sizeCache     protoimpl.SizeCache
  1633  	unknownFields protoimpl.UnknownFields
  1634  
  1635  	EventTime *timestamppb.Timestamp `protobuf:"bytes,1,opt,name=event_time,json=eventTime,proto3" json:"event_time,omitempty"`
  1636  	// Snapshot of the Bot that had this event.
  1637  	//
  1638  	// Eventually we'd want to only snapshot the difference from the previous
  1639  	// event, but this would make the SQL queries much more complicated.
  1640  	Bot *Bot `protobuf:"bytes,2,opt,name=bot,proto3" json:"bot,omitempty"`
  1641  	// Type of state change (event) that trigger this message.
  1642  	Event BotEventType `protobuf:"varint,3,opt,name=event,proto3,enum=swarming.v1.BotEventType" json:"event,omitempty"`
  1643  	// Supplementation information to describe the bot event. Human readable.
  1644  	//
  1645  	// See BotEventType for the meaning of this string for each status.
  1646  	EventMsg string `protobuf:"bytes,4,opt,name=event_msg,json=eventMsg,proto3" json:"event_msg,omitempty"`
  1647  }
  1648  
  1649  func (x *BotEvent) Reset() {
  1650  	*x = BotEvent{}
  1651  	if protoimpl.UnsafeEnabled {
  1652  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[10]
  1653  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1654  		ms.StoreMessageInfo(mi)
  1655  	}
  1656  }
  1657  
  1658  func (x *BotEvent) String() string {
  1659  	return protoimpl.X.MessageStringOf(x)
  1660  }
  1661  
  1662  func (*BotEvent) ProtoMessage() {}
  1663  
  1664  func (x *BotEvent) ProtoReflect() protoreflect.Message {
  1665  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[10]
  1666  	if protoimpl.UnsafeEnabled && x != nil {
  1667  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1668  		if ms.LoadMessageInfo() == nil {
  1669  			ms.StoreMessageInfo(mi)
  1670  		}
  1671  		return ms
  1672  	}
  1673  	return mi.MessageOf(x)
  1674  }
  1675  
  1676  // Deprecated: Use BotEvent.ProtoReflect.Descriptor instead.
  1677  func (*BotEvent) Descriptor() ([]byte, []int) {
  1678  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{10}
  1679  }
  1680  
  1681  func (x *BotEvent) GetEventTime() *timestamppb.Timestamp {
  1682  	if x != nil {
  1683  		return x.EventTime
  1684  	}
  1685  	return nil
  1686  }
  1687  
  1688  func (x *BotEvent) GetBot() *Bot {
  1689  	if x != nil {
  1690  		return x.Bot
  1691  	}
  1692  	return nil
  1693  }
  1694  
  1695  func (x *BotEvent) GetEvent() BotEventType {
  1696  	if x != nil {
  1697  		return x.Event
  1698  	}
  1699  	return BotEventType_BOT_EVENT_TYPE_UNSPECIFIED
  1700  }
  1701  
  1702  func (x *BotEvent) GetEventMsg() string {
  1703  	if x != nil {
  1704  		return x.EventMsg
  1705  	}
  1706  	return ""
  1707  }
  1708  
  1709  // Defines a Content Addressed Storage (a cache in practice) data tree
  1710  // reference, normally a reference to a .isolated file.
  1711  //
  1712  // Deprecated: Isoalte server is being migrated to RBE-CAS. Use `CASReference`
  1713  // for the digest on RBE-CAS.
  1714  //
  1715  // This can be used to refer to either a task's inputs or a task's outputs.
  1716  //
  1717  // The .isolated file format is defined at
  1718  // https://chromium.googlesource.com/infra/luci/luci-py.git/+/master/appengine/isolate/doc/Design.md#file-format
  1719  // It is a JSON file listing all the inputs.
  1720  //
  1721  // It is very different RBE's CAS format, which uses a merkel tree of protobuf
  1722  // files.
  1723  type CASTree struct {
  1724  	state         protoimpl.MessageState
  1725  	sizeCache     protoimpl.SizeCache
  1726  	unknownFields protoimpl.UnknownFields
  1727  
  1728  	// server is one of:
  1729  	//   - The isolated server to fetch (or push) content from. Must contain
  1730  	//     "https://" or "http://" prefix.
  1731  	//   - The Google Cloud Project name hosting the RBE CAS.
  1732  	Server string `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"`
  1733  	// The hex encoded hash of an isolated archive. It is expected to be a SHA-1
  1734  	// (40 characters) or SHA-256 (64 characters), based on the namespace value
  1735  	// below.
  1736  	Digest string `protobuf:"bytes,2,opt,name=digest,proto3" json:"digest,omitempty"`
  1737  	// Namespace on the isolate server. This currently defines the hashing
  1738  	// algorithm and compression algorithm but is currently loosely defined.
  1739  	//
  1740  	// A prefix "sha256-" defines a SHA-256 hashing. Defaults to SHA-1.
  1741  	// A suffix "-deflate" or "-gzip" defines a deflate algorithm.
  1742  	//
  1743  	// When referring to a RBE CAS instance, the namespace must be set to
  1744  	// "sha256-GCP". The GCP RBE CAS requires SHA-256 and doesn't support
  1745  	// precompressed data.
  1746  	Namespace string `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"`
  1747  }
  1748  
  1749  func (x *CASTree) Reset() {
  1750  	*x = CASTree{}
  1751  	if protoimpl.UnsafeEnabled {
  1752  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[11]
  1753  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1754  		ms.StoreMessageInfo(mi)
  1755  	}
  1756  }
  1757  
  1758  func (x *CASTree) String() string {
  1759  	return protoimpl.X.MessageStringOf(x)
  1760  }
  1761  
  1762  func (*CASTree) ProtoMessage() {}
  1763  
  1764  func (x *CASTree) ProtoReflect() protoreflect.Message {
  1765  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[11]
  1766  	if protoimpl.UnsafeEnabled && x != nil {
  1767  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1768  		if ms.LoadMessageInfo() == nil {
  1769  			ms.StoreMessageInfo(mi)
  1770  		}
  1771  		return ms
  1772  	}
  1773  	return mi.MessageOf(x)
  1774  }
  1775  
  1776  // Deprecated: Use CASTree.ProtoReflect.Descriptor instead.
  1777  func (*CASTree) Descriptor() ([]byte, []int) {
  1778  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{11}
  1779  }
  1780  
  1781  func (x *CASTree) GetServer() string {
  1782  	if x != nil {
  1783  		return x.Server
  1784  	}
  1785  	return ""
  1786  }
  1787  
  1788  func (x *CASTree) GetDigest() string {
  1789  	if x != nil {
  1790  		return x.Digest
  1791  	}
  1792  	return ""
  1793  }
  1794  
  1795  func (x *CASTree) GetNamespace() string {
  1796  	if x != nil {
  1797  		return x.Namespace
  1798  	}
  1799  	return ""
  1800  }
  1801  
  1802  type Digest struct {
  1803  	state         protoimpl.MessageState
  1804  	sizeCache     protoimpl.SizeCache
  1805  	unknownFields protoimpl.UnknownFields
  1806  
  1807  	// This is a [Digest][build.bazel.remote.execution.v2.Digest] of a blob on
  1808  	// RBE-CAS. See the explanations at the original definition.
  1809  	// https://github.com/bazelbuild/remote-apis/blob/77cfb44a88577a7ade5dd2400425f6d50469ec6d/build/bazel/remote/execution/v2/remote_execution.proto#L753-L791
  1810  	Hash      string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"`
  1811  	SizeBytes int64  `protobuf:"varint,2,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"`
  1812  }
  1813  
  1814  func (x *Digest) Reset() {
  1815  	*x = Digest{}
  1816  	if protoimpl.UnsafeEnabled {
  1817  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[12]
  1818  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1819  		ms.StoreMessageInfo(mi)
  1820  	}
  1821  }
  1822  
  1823  func (x *Digest) String() string {
  1824  	return protoimpl.X.MessageStringOf(x)
  1825  }
  1826  
  1827  func (*Digest) ProtoMessage() {}
  1828  
  1829  func (x *Digest) ProtoReflect() protoreflect.Message {
  1830  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[12]
  1831  	if protoimpl.UnsafeEnabled && x != nil {
  1832  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1833  		if ms.LoadMessageInfo() == nil {
  1834  			ms.StoreMessageInfo(mi)
  1835  		}
  1836  		return ms
  1837  	}
  1838  	return mi.MessageOf(x)
  1839  }
  1840  
  1841  // Deprecated: Use Digest.ProtoReflect.Descriptor instead.
  1842  func (*Digest) Descriptor() ([]byte, []int) {
  1843  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{12}
  1844  }
  1845  
  1846  func (x *Digest) GetHash() string {
  1847  	if x != nil {
  1848  		return x.Hash
  1849  	}
  1850  	return ""
  1851  }
  1852  
  1853  func (x *Digest) GetSizeBytes() int64 {
  1854  	if x != nil {
  1855  		return x.SizeBytes
  1856  	}
  1857  	return 0
  1858  }
  1859  
  1860  type CASReference struct {
  1861  	state         protoimpl.MessageState
  1862  	sizeCache     protoimpl.SizeCache
  1863  	unknownFields protoimpl.UnknownFields
  1864  
  1865  	// Full name of RBE-CAS instance. `projects/{project_id}/instances/{instance}`.
  1866  	// e.g. projects/chromium-swarm/instances/default_instance
  1867  	CasInstance string `protobuf:"bytes,1,opt,name=cas_instance,json=casInstance,proto3" json:"cas_instance,omitempty"`
  1868  	// CAS Digest consists of hash and size bytes.
  1869  	Digest *Digest `protobuf:"bytes,2,opt,name=digest,proto3" json:"digest,omitempty"`
  1870  }
  1871  
  1872  func (x *CASReference) Reset() {
  1873  	*x = CASReference{}
  1874  	if protoimpl.UnsafeEnabled {
  1875  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[13]
  1876  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1877  		ms.StoreMessageInfo(mi)
  1878  	}
  1879  }
  1880  
  1881  func (x *CASReference) String() string {
  1882  	return protoimpl.X.MessageStringOf(x)
  1883  }
  1884  
  1885  func (*CASReference) ProtoMessage() {}
  1886  
  1887  func (x *CASReference) ProtoReflect() protoreflect.Message {
  1888  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[13]
  1889  	if protoimpl.UnsafeEnabled && x != nil {
  1890  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1891  		if ms.LoadMessageInfo() == nil {
  1892  			ms.StoreMessageInfo(mi)
  1893  		}
  1894  		return ms
  1895  	}
  1896  	return mi.MessageOf(x)
  1897  }
  1898  
  1899  // Deprecated: Use CASReference.ProtoReflect.Descriptor instead.
  1900  func (*CASReference) Descriptor() ([]byte, []int) {
  1901  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{13}
  1902  }
  1903  
  1904  func (x *CASReference) GetCasInstance() string {
  1905  	if x != nil {
  1906  		return x.CasInstance
  1907  	}
  1908  	return ""
  1909  }
  1910  
  1911  func (x *CASReference) GetDigest() *Digest {
  1912  	if x != nil {
  1913  		return x.Digest
  1914  	}
  1915  	return nil
  1916  }
  1917  
  1918  // Defines one CIPD package to install prior to running the task.
  1919  //
  1920  // CIPD packages are versioned and ACL'ed packages that are meant for tools that
  1921  // are kept for a long time.
  1922  type CIPDPackage struct {
  1923  	state         protoimpl.MessageState
  1924  	sizeCache     protoimpl.SizeCache
  1925  	unknownFields protoimpl.UnknownFields
  1926  
  1927  	// The template for the CIPD package name that will have its variables
  1928  	// evaluated, e.g. "infra/tools/authutil/${platform}".
  1929  	//
  1930  	// TODO(vadimsh): Link to documentation of the variable usable.
  1931  	PackageName string `protobuf:"bytes,1,opt,name=package_name,json=packageName,proto3" json:"package_name,omitempty"`
  1932  	// Valid package version for the requested package.
  1933  	Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"`
  1934  	// Path to directory relative to the task's root dir, where the package is to
  1935  	// be installed.
  1936  	//
  1937  	// If empty, the package will be installed at the root of the mapped
  1938  	// directory. If file names in the package and in the isolate clash, it will
  1939  	// cause a failure.
  1940  	DestPath string `protobuf:"bytes,3,opt,name=dest_path,json=destPath,proto3" json:"dest_path,omitempty"`
  1941  }
  1942  
  1943  func (x *CIPDPackage) Reset() {
  1944  	*x = CIPDPackage{}
  1945  	if protoimpl.UnsafeEnabled {
  1946  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[14]
  1947  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1948  		ms.StoreMessageInfo(mi)
  1949  	}
  1950  }
  1951  
  1952  func (x *CIPDPackage) String() string {
  1953  	return protoimpl.X.MessageStringOf(x)
  1954  }
  1955  
  1956  func (*CIPDPackage) ProtoMessage() {}
  1957  
  1958  func (x *CIPDPackage) ProtoReflect() protoreflect.Message {
  1959  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[14]
  1960  	if protoimpl.UnsafeEnabled && x != nil {
  1961  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  1962  		if ms.LoadMessageInfo() == nil {
  1963  			ms.StoreMessageInfo(mi)
  1964  		}
  1965  		return ms
  1966  	}
  1967  	return mi.MessageOf(x)
  1968  }
  1969  
  1970  // Deprecated: Use CIPDPackage.ProtoReflect.Descriptor instead.
  1971  func (*CIPDPackage) Descriptor() ([]byte, []int) {
  1972  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{14}
  1973  }
  1974  
  1975  func (x *CIPDPackage) GetPackageName() string {
  1976  	if x != nil {
  1977  		return x.PackageName
  1978  	}
  1979  	return ""
  1980  }
  1981  
  1982  func (x *CIPDPackage) GetVersion() string {
  1983  	if x != nil {
  1984  		return x.Version
  1985  	}
  1986  	return ""
  1987  }
  1988  
  1989  func (x *CIPDPackage) GetDestPath() string {
  1990  	if x != nil {
  1991  		return x.DestPath
  1992  	}
  1993  	return ""
  1994  }
  1995  
  1996  // Describes a named cache that should be reused on the bot.
  1997  //
  1998  // A NamedCacheEntry in a task specifies that the task wants a directory to be
  1999  // persisted on the bot across tasks.
  2000  //
  2001  // The cache directory is created at <run_dir>/|path|. If the cache was not
  2002  // present on the bot prior the task's execution, the directory is empty when
  2003  // the task starts. Any change done in the directory by the task is persisted on
  2004  // the bot after the task completes.
  2005  //
  2006  // If another task runs on the same bot and requests the same named cache, even
  2007  // if mapped to a different path, it will get the updated content.
  2008  type NamedCacheEntry struct {
  2009  	state         protoimpl.MessageState
  2010  	sizeCache     protoimpl.SizeCache
  2011  	unknownFields protoimpl.UnknownFields
  2012  
  2013  	// Unique name of the cache. Required. Length is limited to 4096.
  2014  	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
  2015  	// Path to directory relative to the task's root dir, where the named cache is
  2016  	// to be installed.
  2017  	//
  2018  	// A path cannot be shared among multiple caches or CIPD installations.
  2019  	// A task will fail if a file/dir with the same name already exists.
  2020  	DestPath string `protobuf:"bytes,2,opt,name=dest_path,json=destPath,proto3" json:"dest_path,omitempty"`
  2021  }
  2022  
  2023  func (x *NamedCacheEntry) Reset() {
  2024  	*x = NamedCacheEntry{}
  2025  	if protoimpl.UnsafeEnabled {
  2026  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[15]
  2027  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2028  		ms.StoreMessageInfo(mi)
  2029  	}
  2030  }
  2031  
  2032  func (x *NamedCacheEntry) String() string {
  2033  	return protoimpl.X.MessageStringOf(x)
  2034  }
  2035  
  2036  func (*NamedCacheEntry) ProtoMessage() {}
  2037  
  2038  func (x *NamedCacheEntry) ProtoReflect() protoreflect.Message {
  2039  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[15]
  2040  	if protoimpl.UnsafeEnabled && x != nil {
  2041  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2042  		if ms.LoadMessageInfo() == nil {
  2043  			ms.StoreMessageInfo(mi)
  2044  		}
  2045  		return ms
  2046  	}
  2047  	return mi.MessageOf(x)
  2048  }
  2049  
  2050  // Deprecated: Use NamedCacheEntry.ProtoReflect.Descriptor instead.
  2051  func (*NamedCacheEntry) Descriptor() ([]byte, []int) {
  2052  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{15}
  2053  }
  2054  
  2055  func (x *NamedCacheEntry) GetName() string {
  2056  	if x != nil {
  2057  		return x.Name
  2058  	}
  2059  	return ""
  2060  }
  2061  
  2062  func (x *NamedCacheEntry) GetDestPath() string {
  2063  	if x != nil {
  2064  		return x.DestPath
  2065  	}
  2066  	return ""
  2067  }
  2068  
  2069  // Defines the type of containment to use to put the task primary process
  2070  // inside.
  2071  //
  2072  // TODO(maruel): https://crbug.com/808836
  2073  //
  2074  // This is highly OS specific:
  2075  //   - Lower the integrity level on Windows. https://crbug.com/916586
  2076  //   - Job Object on Windows. https://crbug.com/732818
  2077  //   - Docker on Linux or Windows. https://crbug.com/916584
  2078  //   - cgroup on Linux. https://crbug.com/764493
  2079  //   - Creating a temporary user on Windows and macOS. https://crbug.com/916585
  2080  //   - Lightweight home directory override on Windows, Linux and macOS.
  2081  //     https://crbug.com/811411
  2082  type Containment struct {
  2083  	state         protoimpl.MessageState
  2084  	sizeCache     protoimpl.SizeCache
  2085  	unknownFields protoimpl.UnknownFields
  2086  
  2087  	// Lowers the priority of the task process when started. Doesn't require
  2088  	// containment. This gives the bot a chance to survive when the task starts an
  2089  	// overwhelming number of children processes.
  2090  	LowerPriority bool `protobuf:"varint,1,opt,name=lower_priority,json=lowerPriority,proto3" json:"lower_priority,omitempty"`
  2091  	// Defines the type of containment used.
  2092  	ContainmentType Containment_ContainmentType `protobuf:"varint,2,opt,name=containment_type,json=containmentType,proto3,enum=swarming.v1.Containment_ContainmentType" json:"containment_type,omitempty"`
  2093  	// Limits the number of concurrent active processes.
  2094  	LimitProcesses int64 `protobuf:"varint,3,opt,name=limit_processes,json=limitProcesses,proto3" json:"limit_processes,omitempty"`
  2095  	// Limits the total amount of memory allocated by processes.
  2096  	LimitTotalCommittedMemory int64 `protobuf:"varint,4,opt,name=limit_total_committed_memory,json=limitTotalCommittedMemory,proto3" json:"limit_total_committed_memory,omitempty"`
  2097  }
  2098  
  2099  func (x *Containment) Reset() {
  2100  	*x = Containment{}
  2101  	if protoimpl.UnsafeEnabled {
  2102  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[16]
  2103  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2104  		ms.StoreMessageInfo(mi)
  2105  	}
  2106  }
  2107  
  2108  func (x *Containment) String() string {
  2109  	return protoimpl.X.MessageStringOf(x)
  2110  }
  2111  
  2112  func (*Containment) ProtoMessage() {}
  2113  
  2114  func (x *Containment) ProtoReflect() protoreflect.Message {
  2115  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[16]
  2116  	if protoimpl.UnsafeEnabled && x != nil {
  2117  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2118  		if ms.LoadMessageInfo() == nil {
  2119  			ms.StoreMessageInfo(mi)
  2120  		}
  2121  		return ms
  2122  	}
  2123  	return mi.MessageOf(x)
  2124  }
  2125  
  2126  // Deprecated: Use Containment.ProtoReflect.Descriptor instead.
  2127  func (*Containment) Descriptor() ([]byte, []int) {
  2128  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{16}
  2129  }
  2130  
  2131  func (x *Containment) GetLowerPriority() bool {
  2132  	if x != nil {
  2133  		return x.LowerPriority
  2134  	}
  2135  	return false
  2136  }
  2137  
  2138  func (x *Containment) GetContainmentType() Containment_ContainmentType {
  2139  	if x != nil {
  2140  		return x.ContainmentType
  2141  	}
  2142  	return Containment_NOT_SPECIFIED
  2143  }
  2144  
  2145  func (x *Containment) GetLimitProcesses() int64 {
  2146  	if x != nil {
  2147  		return x.LimitProcesses
  2148  	}
  2149  	return 0
  2150  }
  2151  
  2152  func (x *Containment) GetLimitTotalCommittedMemory() int64 {
  2153  	if x != nil {
  2154  		return x.LimitTotalCommittedMemory
  2155  	}
  2156  	return 0
  2157  }
  2158  
  2159  // Defines the 'what' to run.
  2160  //
  2161  // A serialization of this message is hashed and this hash is what is used for
  2162  // task deduping.
  2163  // NEXT_ID: 20
  2164  type TaskProperties struct {
  2165  	state         protoimpl.MessageState
  2166  	sizeCache     protoimpl.SizeCache
  2167  	unknownFields protoimpl.UnknownFields
  2168  
  2169  	// Isolated inputs to map in the working directory.
  2170  	//
  2171  	// Deprecated: Isolate server is being migrated to RBE-CAS. `cas_input_root`
  2172  	// will be used to reference to the input root on RBE-CAS.
  2173  	// Deprecated: the isolated file may optionally specify a command to run.
  2174  	// Otherwise, 'command' must be specified.
  2175  	CasInputs *CASTree `protobuf:"bytes,1,opt,name=cas_inputs,json=casInputs,proto3" json:"cas_inputs,omitempty"`
  2176  	// Digest of the input root on RBE-CAS.
  2177  	// cas_input_root.digest MUST be digest of [build.bazel.remote.execution.v2.Directory].
  2178  	CasInputRoot *CASReference `protobuf:"bytes,18,opt,name=cas_input_root,json=casInputRoot,proto3" json:"cas_input_root,omitempty"`
  2179  	// Defines the set of CIPD packages to install prior to running the task.
  2180  	//
  2181  	// These packages are meant to be software that is needed (a dependency) by
  2182  	// the task being run. Unlike isolated files from cas_inputs, the CIPD
  2183  	// packages do not expire from the server.
  2184  	//
  2185  	// Items must be sorted per the CIPD package name.
  2186  	CipdInputs []*CIPDPackage `protobuf:"bytes,2,rep,name=cipd_inputs,json=cipdInputs,proto3" json:"cipd_inputs,omitempty"`
  2187  	// Specifies named caches to map into the working directory. These caches
  2188  	// outlive the task, which can then be reused by tasks later used on this bot
  2189  	// that request the same named cache.
  2190  	//
  2191  	// Items must be sorted per the named cache name.
  2192  	NamedCaches []*NamedCacheEntry `protobuf:"bytes,3,rep,name=named_caches,json=namedCaches,proto3" json:"named_caches,omitempty"`
  2193  	// Command to run. This has priority over a command specified in the isolated
  2194  	// files.
  2195  	Command []string `protobuf:"bytes,4,rep,name=command,proto3" json:"command,omitempty"`
  2196  	// Relative working directory to start the 'command' in, defaults to the root
  2197  	// mapped directory or what is provided in the isolated file, if any.
  2198  	RelativeCwd string `protobuf:"bytes,5,opt,name=relative_cwd,json=relativeCwd,proto3" json:"relative_cwd,omitempty"`
  2199  	// Extraneous arguments to append to the command specified in the isolated
  2200  	// file. Can only be used when an isolated file specifies a command.
  2201  	//
  2202  	// Deprecated.
  2203  	ExtraArgs []string `protobuf:"bytes,6,rep,name=extra_args,json=extraArgs,proto3" json:"extra_args,omitempty"`
  2204  	// Secret bytes to provide to the task. Write only, cannot be retrieved back.
  2205  	SecretBytes []byte `protobuf:"bytes,7,opt,name=secret_bytes,json=secretBytes,proto3" json:"secret_bytes,omitempty"`
  2206  	// When retrieved back, has_secret_bytes is set to true.
  2207  	HasSecretBytes bool `protobuf:"varint,8,opt,name=has_secret_bytes,json=hasSecretBytes,proto3" json:"has_secret_bytes,omitempty"`
  2208  	// Dimensions are what is used to determine which bot can run the task.
  2209  	//
  2210  	// The values are effectively an AND, a bot must match all dimensions to be
  2211  	// selected to run the task.
  2212  	//
  2213  	// Items must be sorted.
  2214  	Dimensions []*StringListPair `protobuf:"bytes,9,rep,name=dimensions,proto3" json:"dimensions,omitempty"`
  2215  	// Environment variables to set when running the task.
  2216  	//
  2217  	// Items must be sorted.
  2218  	Env []*StringPair `protobuf:"bytes,10,rep,name=env,proto3" json:"env,omitempty"`
  2219  	// Task root relative paths to prepend to a given environment variable.
  2220  	//
  2221  	// This allows one to safely modify variables like PATH, PYTHONPATH, or other
  2222  	// PATH-like environment variables. The order of operations is:
  2223  	//   - Turn slashes into native-platform slashes
  2224  	//   - Make the path absolute
  2225  	//   - Prepend it to the current value of the envvar using the os-native list
  2226  	//     separator (`;` on Windows, `:` on POSIX)
  2227  	//
  2228  	// Each key can have multiple paths to prepend. They will be prepended in
  2229  	// the order seen here.
  2230  	//
  2231  	// For example, if env_paths is:
  2232  	//
  2233  	//	[ (key="PATH", values=["foo", "bar"]),
  2234  	//	  (key="CUSTOMPATH", values=["custom"]), ]
  2235  	//
  2236  	// The task would see:
  2237  	//
  2238  	//	PATH=/path/to/swarming/rundir/foo:/path/to/swarming/rundir/bar:$PATH
  2239  	//	CUSTOMPATH=/path/to/swarming/rundir/custom
  2240  	//
  2241  	// Paths must always be specified here with forward-slashes, and must not
  2242  	// attempt to escape the task's root (i.e. must not contain `..`).
  2243  	//
  2244  	// This is applied AFTER evaluating `env`.
  2245  	//
  2246  	// Items must be sorted by key, but exceptionally not by values.
  2247  	EnvPaths []*StringListPair `protobuf:"bytes,11,rep,name=env_paths,json=envPaths,proto3" json:"env_paths,omitempty"`
  2248  	// Declare what kind of containment shall be used to run the task process
  2249  	// in.
  2250  	Containment *Containment `protobuf:"bytes,12,opt,name=containment,proto3" json:"containment,omitempty"` // Not used yet. https://crbug.com/808836
  2251  	// Maximum number of seconds the task can run before its process is forcibly
  2252  	// terminated and the task results in TIMED_OUT.
  2253  	ExecutionTimeout *durationpb.Duration `protobuf:"bytes,13,opt,name=execution_timeout,json=executionTimeout,proto3" json:"execution_timeout,omitempty"`
  2254  	// Maximum number of seconds the task may be silent (no output to stdout nor
  2255  	// stderr) before it is considered hung and it forcibly terminated early and
  2256  	// the task results in TIMED_OUT_SILENCE.
  2257  	IoTimeout *durationpb.Duration `protobuf:"bytes,14,opt,name=io_timeout,json=ioTimeout,proto3" json:"io_timeout,omitempty"`
  2258  	// Number of second to give the child process after a SIGTERM before sending a
  2259  	// SIGKILL. See ../../doc/Bot.md#timeout-handling
  2260  	GracePeriod *durationpb.Duration `protobuf:"bytes,15,opt,name=grace_period,json=gracePeriod,proto3" json:"grace_period,omitempty"`
  2261  	// True if the task does not access any service through the network and is
  2262  	// believed to be certain to produce the same output given the same input. In
  2263  	// the case of a successful task, previous results will be reused if possible,
  2264  	// leading to DEDUPED task result for the tasks that could reuse previous
  2265  	// task's outcome.
  2266  	Idempotent bool `protobuf:"varint,16,opt,name=idempotent,proto3" json:"idempotent,omitempty"`
  2267  	// Paths in the working directory to archive back and store as
  2268  	// TaskResult.outputs.
  2269  	//
  2270  	// Items must be sorted.
  2271  	Outputs []string `protobuf:"bytes,17,rep,name=outputs,proto3" json:"outputs,omitempty"`
  2272  	// User to run the task as.
  2273  	User User `protobuf:"varint,19,opt,name=user,proto3,enum=swarming.v1.User" json:"user,omitempty"`
  2274  }
  2275  
  2276  func (x *TaskProperties) Reset() {
  2277  	*x = TaskProperties{}
  2278  	if protoimpl.UnsafeEnabled {
  2279  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[17]
  2280  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2281  		ms.StoreMessageInfo(mi)
  2282  	}
  2283  }
  2284  
  2285  func (x *TaskProperties) String() string {
  2286  	return protoimpl.X.MessageStringOf(x)
  2287  }
  2288  
  2289  func (*TaskProperties) ProtoMessage() {}
  2290  
  2291  func (x *TaskProperties) ProtoReflect() protoreflect.Message {
  2292  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[17]
  2293  	if protoimpl.UnsafeEnabled && x != nil {
  2294  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2295  		if ms.LoadMessageInfo() == nil {
  2296  			ms.StoreMessageInfo(mi)
  2297  		}
  2298  		return ms
  2299  	}
  2300  	return mi.MessageOf(x)
  2301  }
  2302  
  2303  // Deprecated: Use TaskProperties.ProtoReflect.Descriptor instead.
  2304  func (*TaskProperties) Descriptor() ([]byte, []int) {
  2305  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{17}
  2306  }
  2307  
  2308  func (x *TaskProperties) GetCasInputs() *CASTree {
  2309  	if x != nil {
  2310  		return x.CasInputs
  2311  	}
  2312  	return nil
  2313  }
  2314  
  2315  func (x *TaskProperties) GetCasInputRoot() *CASReference {
  2316  	if x != nil {
  2317  		return x.CasInputRoot
  2318  	}
  2319  	return nil
  2320  }
  2321  
  2322  func (x *TaskProperties) GetCipdInputs() []*CIPDPackage {
  2323  	if x != nil {
  2324  		return x.CipdInputs
  2325  	}
  2326  	return nil
  2327  }
  2328  
  2329  func (x *TaskProperties) GetNamedCaches() []*NamedCacheEntry {
  2330  	if x != nil {
  2331  		return x.NamedCaches
  2332  	}
  2333  	return nil
  2334  }
  2335  
  2336  func (x *TaskProperties) GetCommand() []string {
  2337  	if x != nil {
  2338  		return x.Command
  2339  	}
  2340  	return nil
  2341  }
  2342  
  2343  func (x *TaskProperties) GetRelativeCwd() string {
  2344  	if x != nil {
  2345  		return x.RelativeCwd
  2346  	}
  2347  	return ""
  2348  }
  2349  
  2350  func (x *TaskProperties) GetExtraArgs() []string {
  2351  	if x != nil {
  2352  		return x.ExtraArgs
  2353  	}
  2354  	return nil
  2355  }
  2356  
  2357  func (x *TaskProperties) GetSecretBytes() []byte {
  2358  	if x != nil {
  2359  		return x.SecretBytes
  2360  	}
  2361  	return nil
  2362  }
  2363  
  2364  func (x *TaskProperties) GetHasSecretBytes() bool {
  2365  	if x != nil {
  2366  		return x.HasSecretBytes
  2367  	}
  2368  	return false
  2369  }
  2370  
  2371  func (x *TaskProperties) GetDimensions() []*StringListPair {
  2372  	if x != nil {
  2373  		return x.Dimensions
  2374  	}
  2375  	return nil
  2376  }
  2377  
  2378  func (x *TaskProperties) GetEnv() []*StringPair {
  2379  	if x != nil {
  2380  		return x.Env
  2381  	}
  2382  	return nil
  2383  }
  2384  
  2385  func (x *TaskProperties) GetEnvPaths() []*StringListPair {
  2386  	if x != nil {
  2387  		return x.EnvPaths
  2388  	}
  2389  	return nil
  2390  }
  2391  
  2392  func (x *TaskProperties) GetContainment() *Containment {
  2393  	if x != nil {
  2394  		return x.Containment
  2395  	}
  2396  	return nil
  2397  }
  2398  
  2399  func (x *TaskProperties) GetExecutionTimeout() *durationpb.Duration {
  2400  	if x != nil {
  2401  		return x.ExecutionTimeout
  2402  	}
  2403  	return nil
  2404  }
  2405  
  2406  func (x *TaskProperties) GetIoTimeout() *durationpb.Duration {
  2407  	if x != nil {
  2408  		return x.IoTimeout
  2409  	}
  2410  	return nil
  2411  }
  2412  
  2413  func (x *TaskProperties) GetGracePeriod() *durationpb.Duration {
  2414  	if x != nil {
  2415  		return x.GracePeriod
  2416  	}
  2417  	return nil
  2418  }
  2419  
  2420  func (x *TaskProperties) GetIdempotent() bool {
  2421  	if x != nil {
  2422  		return x.Idempotent
  2423  	}
  2424  	return false
  2425  }
  2426  
  2427  func (x *TaskProperties) GetOutputs() []string {
  2428  	if x != nil {
  2429  		return x.Outputs
  2430  	}
  2431  	return nil
  2432  }
  2433  
  2434  func (x *TaskProperties) GetUser() User {
  2435  	if x != nil {
  2436  		return x.User
  2437  	}
  2438  	return User_USER_UNSPECIFIED
  2439  }
  2440  
  2441  // Defines a possible task execution for a task request to be run on the
  2442  // Swarming infrastructure.
  2443  //
  2444  // When there is more than TaskSlice specified in TaskRequest, the second
  2445  // TaskSlice onwards represent possible fallbacks.
  2446  type TaskSlice struct {
  2447  	state         protoimpl.MessageState
  2448  	sizeCache     protoimpl.SizeCache
  2449  	unknownFields protoimpl.UnknownFields
  2450  
  2451  	// The property of the task to try to run.
  2452  	//
  2453  	// If there is no bot that can serve this properties.dimensions when this task
  2454  	// slice is enqueued, it is immediately denied. This can trigger if:
  2455  	// - There is no bot with these dimensions currently known (NO_RESOURCE).
  2456  	// - Bots that could run this task are either all missing or quarantined.
  2457  	Properties *TaskProperties `protobuf:"bytes,1,opt,name=properties,proto3" json:"properties,omitempty"`
  2458  	// If this task slice is not scheduled after waiting this long, the next one
  2459  	// will be processed.
  2460  	Expiration *durationpb.Duration `protobuf:"bytes,2,opt,name=expiration,proto3" json:"expiration,omitempty"`
  2461  	// When a task is scheduled and there are currently no bots available to run
  2462  	// the task, the TaskSlice can either be PENDING, or be denied immediately.
  2463  	// When denied, the next TaskSlice is enqueued, and if there's no following
  2464  	// TaskSlice, the task state is set to NO_RESOURCE. This should normally be
  2465  	// set to False to avoid unnecessary waiting.
  2466  	WaitForCapacity bool `protobuf:"varint,3,opt,name=wait_for_capacity,json=waitForCapacity,proto3" json:"wait_for_capacity,omitempty"`
  2467  	// Digest of a serialized form of TaskProperties.
  2468  	//
  2469  	// This is used for DEDUPED and PENDING_DEDUPING when idempotent is true.
  2470  	// Consider this value as opaque string, only use to check equality.
  2471  	//
  2472  	// It is set even if idempotent is false.
  2473  	PropertiesHash string `protobuf:"bytes,4,opt,name=properties_hash,json=propertiesHash,proto3" json:"properties_hash,omitempty"`
  2474  }
  2475  
  2476  func (x *TaskSlice) Reset() {
  2477  	*x = TaskSlice{}
  2478  	if protoimpl.UnsafeEnabled {
  2479  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[18]
  2480  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2481  		ms.StoreMessageInfo(mi)
  2482  	}
  2483  }
  2484  
  2485  func (x *TaskSlice) String() string {
  2486  	return protoimpl.X.MessageStringOf(x)
  2487  }
  2488  
  2489  func (*TaskSlice) ProtoMessage() {}
  2490  
  2491  func (x *TaskSlice) ProtoReflect() protoreflect.Message {
  2492  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[18]
  2493  	if protoimpl.UnsafeEnabled && x != nil {
  2494  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2495  		if ms.LoadMessageInfo() == nil {
  2496  			ms.StoreMessageInfo(mi)
  2497  		}
  2498  		return ms
  2499  	}
  2500  	return mi.MessageOf(x)
  2501  }
  2502  
  2503  // Deprecated: Use TaskSlice.ProtoReflect.Descriptor instead.
  2504  func (*TaskSlice) Descriptor() ([]byte, []int) {
  2505  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{18}
  2506  }
  2507  
  2508  func (x *TaskSlice) GetProperties() *TaskProperties {
  2509  	if x != nil {
  2510  		return x.Properties
  2511  	}
  2512  	return nil
  2513  }
  2514  
  2515  func (x *TaskSlice) GetExpiration() *durationpb.Duration {
  2516  	if x != nil {
  2517  		return x.Expiration
  2518  	}
  2519  	return nil
  2520  }
  2521  
  2522  func (x *TaskSlice) GetWaitForCapacity() bool {
  2523  	if x != nil {
  2524  		return x.WaitForCapacity
  2525  	}
  2526  	return false
  2527  }
  2528  
  2529  func (x *TaskSlice) GetPropertiesHash() string {
  2530  	if x != nil {
  2531  		return x.PropertiesHash
  2532  	}
  2533  	return ""
  2534  }
  2535  
  2536  // This message is used to create a new task and can be retrieved back, except
  2537  // for a few write-only fields.
  2538  //
  2539  // A TaskRequest is immutable, it cannot be updated once created.
  2540  type TaskRequest struct {
  2541  	state         protoimpl.MessageState
  2542  	sizeCache     protoimpl.SizeCache
  2543  	unknownFields protoimpl.UnknownFields
  2544  
  2545  	// List of TaskSlice, along with their scheduling parameters.
  2546  	//
  2547  	// This defines all the various possible task execution for a task request to
  2548  	// be run on the Swarming infrastructure. They are processed in order, and it
  2549  	// is guaranteed that at most one of these will be processed.
  2550  	//
  2551  	// At least one must be specified, and a maximum number of 8 can be included.
  2552  	TaskSlices []*TaskSlice `protobuf:"bytes,1,rep,name=task_slices,json=taskSlices,proto3" json:"task_slices,omitempty"`
  2553  	// Task priority, the lower the more important.
  2554  	//
  2555  	// Valid values are between 1 and 255.
  2556  	Priority int32 `protobuf:"varint,2,opt,name=priority,proto3" json:"priority,omitempty"`
  2557  	// Defines what OAuth2 credentials the task uses when calling other services.
  2558  	//
  2559  	// Possible values are:
  2560  	//   - 'none': do not use a task service account at all, this is the default.
  2561  	//   - 'bot': use bot's own account, works only if bots authenticate with
  2562  	//     OAuth2.
  2563  	//   - <some email>: use this specific service account if it is allowed in the
  2564  	//     pool (via 'allowed_service_account' pools.cfg setting) and configured
  2565  	//     in the token server's service_accounts.cfg.
  2566  	//
  2567  	// Note that the service account name is specified outside of task properties,
  2568  	// and thus it is possible to have two tasks with different service accounts,
  2569  	// but identical properties hash (so one can be deduped). If this is
  2570  	// unsuitable use 'idempotent=False' or include a service account name in
  2571  	// properties separately.
  2572  	ServiceAccount string `protobuf:"bytes,3,opt,name=service_account,json=serviceAccount,proto3" json:"service_account,omitempty"`
  2573  	// When the task was created.
  2574  	CreateTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
  2575  	// Task name for display purpose.
  2576  	//
  2577  	// Note: this value is not indexed. If you want to be able to query for tasks
  2578  	// based on names, use tags below.
  2579  	Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"`
  2580  	// Tags are 'key:value' strings that describes what the task is about (it's
  2581  	// semantic meaning).
  2582  	//
  2583  	// It is fine to reuse the same 'key' multiple times. It is not fine to use a
  2584  	// key that is also used as a dimension.
  2585  	//
  2586  	// The tags are indexed, thus can be used for search with exact matches.
  2587  	//
  2588  	// Items must be sorted.
  2589  	Tags []string `protobuf:"bytes,6,rep,name=tags,proto3" json:"tags,omitempty"`
  2590  	// User for this task is run, if relevant. Not validated.
  2591  	User string `protobuf:"bytes,7,opt,name=user,proto3" json:"user,omitempty"`
  2592  	// Authenticated client that triggered this task.
  2593  	Authenticated string `protobuf:"bytes,13,opt,name=authenticated,proto3" json:"authenticated,omitempty"`
  2594  	// Task realm is used to control who can interact with the task e.g. get,
  2595  	// cancel etc, and which task service accounts can be used in the realm.
  2596  	Realm string `protobuf:"bytes,14,opt,name=realm,proto3" json:"realm,omitempty"`
  2597  	// Swarming:ResultDB integration configuration for a task.
  2598  	Resultdb *ResultDBCfg `protobuf:"bytes,15,opt,name=resultdb,proto3" json:"resultdb,omitempty"`
  2599  	// The task request ID.
  2600  	//
  2601  	// The request wasn't "run" so it is the same ID as the summary (ending with
  2602  	// '0').
  2603  	TaskId string `protobuf:"bytes,8,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
  2604  	// Parent Swarming task summary ID of the process requesting this task.
  2605  	//
  2606  	// This points to the TaskResult.task_id (ending with '0'). Note that an
  2607  	// idempotent task can be automatically retried by Swarming, which may result
  2608  	// in two TaskResult with the same task_id but different run_id.
  2609  	//
  2610  	// This field is read-only and derived from parent_run_id. It cannot be
  2611  	// specified at task creation.
  2612  	ParentTaskId string `protobuf:"bytes,9,opt,name=parent_task_id,json=parentTaskId,proto3" json:"parent_task_id,omitempty"`
  2613  	// Parent Swarming task run ID of the process requesting this task.
  2614  	//
  2615  	// This field is set on the children tasks when a Swarming task creates
  2616  	// children Swarming tasks.
  2617  	//
  2618  	// This points to the TaskResult.run_id (ending with '1', '2' or more).
  2619  	ParentRunId string `protobuf:"bytes,11,opt,name=parent_run_id,json=parentRunId,proto3" json:"parent_run_id,omitempty"`
  2620  	// Root task id, independent of the depth of recursive tasks.
  2621  	RootTaskId string `protobuf:"bytes,16,opt,name=root_task_id,json=rootTaskId,proto3" json:"root_task_id,omitempty"`
  2622  	// Root task run id, independent of the depth of recursive tasks.
  2623  	RootRunId string `protobuf:"bytes,17,opt,name=root_run_id,json=rootRunId,proto3" json:"root_run_id,omitempty"`
  2624  	// Send notification to this pubsub topic for updates of this task.
  2625  	PubsubNotification *PubSub `protobuf:"bytes,10,opt,name=pubsub_notification,json=pubsubNotification,proto3" json:"pubsub_notification,omitempty"`
  2626  	// Maximum delay between bot pings before the bot is considered dead
  2627  	// while running a task.
  2628  	//
  2629  	// When a task is running, the bot sends update to the server every
  2630  	// few seconds. In some cases, like when the system is overloaded,
  2631  	// the bot may be preempted and delayed in sending its updates.
  2632  	// After the delay specified here, the server will claim the bot to
  2633  	// be dead and will forcibly abort the task as BOT_DIED. This is to
  2634  	// catch system wide issues like a BSOD.
  2635  	BotPingTolerance *durationpb.Duration `protobuf:"bytes,12,opt,name=bot_ping_tolerance,json=botPingTolerance,proto3" json:"bot_ping_tolerance,omitempty"`
  2636  }
  2637  
  2638  func (x *TaskRequest) Reset() {
  2639  	*x = TaskRequest{}
  2640  	if protoimpl.UnsafeEnabled {
  2641  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[19]
  2642  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2643  		ms.StoreMessageInfo(mi)
  2644  	}
  2645  }
  2646  
  2647  func (x *TaskRequest) String() string {
  2648  	return protoimpl.X.MessageStringOf(x)
  2649  }
  2650  
  2651  func (*TaskRequest) ProtoMessage() {}
  2652  
  2653  func (x *TaskRequest) ProtoReflect() protoreflect.Message {
  2654  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[19]
  2655  	if protoimpl.UnsafeEnabled && x != nil {
  2656  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2657  		if ms.LoadMessageInfo() == nil {
  2658  			ms.StoreMessageInfo(mi)
  2659  		}
  2660  		return ms
  2661  	}
  2662  	return mi.MessageOf(x)
  2663  }
  2664  
  2665  // Deprecated: Use TaskRequest.ProtoReflect.Descriptor instead.
  2666  func (*TaskRequest) Descriptor() ([]byte, []int) {
  2667  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{19}
  2668  }
  2669  
  2670  func (x *TaskRequest) GetTaskSlices() []*TaskSlice {
  2671  	if x != nil {
  2672  		return x.TaskSlices
  2673  	}
  2674  	return nil
  2675  }
  2676  
  2677  func (x *TaskRequest) GetPriority() int32 {
  2678  	if x != nil {
  2679  		return x.Priority
  2680  	}
  2681  	return 0
  2682  }
  2683  
  2684  func (x *TaskRequest) GetServiceAccount() string {
  2685  	if x != nil {
  2686  		return x.ServiceAccount
  2687  	}
  2688  	return ""
  2689  }
  2690  
  2691  func (x *TaskRequest) GetCreateTime() *timestamppb.Timestamp {
  2692  	if x != nil {
  2693  		return x.CreateTime
  2694  	}
  2695  	return nil
  2696  }
  2697  
  2698  func (x *TaskRequest) GetName() string {
  2699  	if x != nil {
  2700  		return x.Name
  2701  	}
  2702  	return ""
  2703  }
  2704  
  2705  func (x *TaskRequest) GetTags() []string {
  2706  	if x != nil {
  2707  		return x.Tags
  2708  	}
  2709  	return nil
  2710  }
  2711  
  2712  func (x *TaskRequest) GetUser() string {
  2713  	if x != nil {
  2714  		return x.User
  2715  	}
  2716  	return ""
  2717  }
  2718  
  2719  func (x *TaskRequest) GetAuthenticated() string {
  2720  	if x != nil {
  2721  		return x.Authenticated
  2722  	}
  2723  	return ""
  2724  }
  2725  
  2726  func (x *TaskRequest) GetRealm() string {
  2727  	if x != nil {
  2728  		return x.Realm
  2729  	}
  2730  	return ""
  2731  }
  2732  
  2733  func (x *TaskRequest) GetResultdb() *ResultDBCfg {
  2734  	if x != nil {
  2735  		return x.Resultdb
  2736  	}
  2737  	return nil
  2738  }
  2739  
  2740  func (x *TaskRequest) GetTaskId() string {
  2741  	if x != nil {
  2742  		return x.TaskId
  2743  	}
  2744  	return ""
  2745  }
  2746  
  2747  func (x *TaskRequest) GetParentTaskId() string {
  2748  	if x != nil {
  2749  		return x.ParentTaskId
  2750  	}
  2751  	return ""
  2752  }
  2753  
  2754  func (x *TaskRequest) GetParentRunId() string {
  2755  	if x != nil {
  2756  		return x.ParentRunId
  2757  	}
  2758  	return ""
  2759  }
  2760  
  2761  func (x *TaskRequest) GetRootTaskId() string {
  2762  	if x != nil {
  2763  		return x.RootTaskId
  2764  	}
  2765  	return ""
  2766  }
  2767  
  2768  func (x *TaskRequest) GetRootRunId() string {
  2769  	if x != nil {
  2770  		return x.RootRunId
  2771  	}
  2772  	return ""
  2773  }
  2774  
  2775  func (x *TaskRequest) GetPubsubNotification() *PubSub {
  2776  	if x != nil {
  2777  		return x.PubsubNotification
  2778  	}
  2779  	return nil
  2780  }
  2781  
  2782  func (x *TaskRequest) GetBotPingTolerance() *durationpb.Duration {
  2783  	if x != nil {
  2784  		return x.BotPingTolerance
  2785  	}
  2786  	return nil
  2787  }
  2788  
  2789  // PubSub is a Cloud Pub/Sub topic to send task updates to.
  2790  //
  2791  // For this to work, the Swarming's AppEngine service account must have
  2792  // roles/pubsub.publisher role on the Cloud Pub/Sub topic.
  2793  //
  2794  // For a Swarming instance "FOOBAR.appspot.com", the service account to grant
  2795  // publisher right is "FOOBAR@@appspot.gserviceaccount.com".
  2796  //
  2797  // This is described at https://cloud.google.com/pubsub/docs/access-control.
  2798  //
  2799  // To grant Swarming instance FOOBAR.appspot.com publisher rights to topic
  2800  // projects/PROJ/topics/TOP, use:
  2801  //
  2802  //	gcloud beta pubsub topics add-iam-policy-binding \
  2803  //	    TOP \
  2804  //	    --project PROJ \
  2805  //	    --member serviceAccount:FOOBAR@appspot.gserviceaccount.com \
  2806  //	    --role roles/pubsub.publisher
  2807  //
  2808  // See https://cloud.google.com/pubsub/docs/authentication for more
  2809  // information.
  2810  type PubSub struct {
  2811  	state         protoimpl.MessageState
  2812  	sizeCache     protoimpl.SizeCache
  2813  	unknownFields protoimpl.UnknownFields
  2814  
  2815  	// Full topic name to post task state updates to, e.g.
  2816  	// "projects/<id>/topics/<id>".
  2817  	Topic string `protobuf:"bytes,1,opt,name=topic,proto3" json:"topic,omitempty"`
  2818  	// Secret string to put into "auth_token" attribute of PubSub messages.
  2819  	//
  2820  	// This value is write only, it cannot be retrieved back.
  2821  	AuthToken string `protobuf:"bytes,2,opt,name=auth_token,json=authToken,proto3" json:"auth_token,omitempty"`
  2822  	// String to put into "userdata" attribute of PubSub messages.
  2823  	Userdata string `protobuf:"bytes,3,opt,name=userdata,proto3" json:"userdata,omitempty"`
  2824  }
  2825  
  2826  func (x *PubSub) Reset() {
  2827  	*x = PubSub{}
  2828  	if protoimpl.UnsafeEnabled {
  2829  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[20]
  2830  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2831  		ms.StoreMessageInfo(mi)
  2832  	}
  2833  }
  2834  
  2835  func (x *PubSub) String() string {
  2836  	return protoimpl.X.MessageStringOf(x)
  2837  }
  2838  
  2839  func (*PubSub) ProtoMessage() {}
  2840  
  2841  func (x *PubSub) ProtoReflect() protoreflect.Message {
  2842  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[20]
  2843  	if protoimpl.UnsafeEnabled && x != nil {
  2844  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  2845  		if ms.LoadMessageInfo() == nil {
  2846  			ms.StoreMessageInfo(mi)
  2847  		}
  2848  		return ms
  2849  	}
  2850  	return mi.MessageOf(x)
  2851  }
  2852  
  2853  // Deprecated: Use PubSub.ProtoReflect.Descriptor instead.
  2854  func (*PubSub) Descriptor() ([]byte, []int) {
  2855  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{20}
  2856  }
  2857  
  2858  func (x *PubSub) GetTopic() string {
  2859  	if x != nil {
  2860  		return x.Topic
  2861  	}
  2862  	return ""
  2863  }
  2864  
  2865  func (x *PubSub) GetAuthToken() string {
  2866  	if x != nil {
  2867  		return x.AuthToken
  2868  	}
  2869  	return ""
  2870  }
  2871  
  2872  func (x *PubSub) GetUserdata() string {
  2873  	if x != nil {
  2874  		return x.Userdata
  2875  	}
  2876  	return ""
  2877  }
  2878  
  2879  // TaskResult is the result of a TaskRequest as it is processed by Swarming.
  2880  //
  2881  // The TaskResult represents one attempt (run on a bot) and/or the final result
  2882  // (summary). When the task never ran (for example EXPIRED), there's one summary
  2883  // but no run.
  2884  //
  2885  // An idempotent task can be automatically retried by Swarming, which may result
  2886  // in two TaskResult with the same task_id but different run_id; two runs, one
  2887  // summary.
  2888  //
  2889  // A retry is done when a task fails with a retriable error (for example with
  2890  // RAN_INTERNAL_FAILURE). For the client's perspective when looking at the
  2891  // summary (ID ending with '0'), the task went from PENDING to RUNNING and then
  2892  // back to PENDING.
  2893  //
  2894  // When stored in BigQuery in table task_result_run and task_results_summary,
  2895  // on-going tasks are in the __NULL__ partition since end_time is unset.
  2896  //
  2897  // There's a risk of duplicate rows because BigQuery is eventually consistent
  2898  // with regards to duplicate rows. Set your filter to ignore the __NULL__
  2899  // partition to enforce strong consistency and ignore on-going tasks. See
  2900  // https://cloud.google.com/bigquery/streaming-data-into-bigquery#dataconsistency
  2901  // for more information.
  2902  // NEXT_ID: 23
  2903  type TaskResult struct {
  2904  	state         protoimpl.MessageState
  2905  	sizeCache     protoimpl.SizeCache
  2906  	unknownFields protoimpl.UnknownFields
  2907  
  2908  	Request *TaskRequest `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"`
  2909  	// Time the task was requested.
  2910  	CreateTime *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
  2911  	// Time the task started being run by a bot, before RUNNING_OVERHEAD_SETUP.
  2912  	//
  2913  	// Doing "start_time - create_time" gives the task pending time.
  2914  	StartTime *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
  2915  	// Time when the task was abandoned instead of normal completion.
  2916  	//
  2917  	// This happens for example when a task was KILLED, this then represents the
  2918  	// time a client requested the task to be killed, which is before end_time.
  2919  	// Same for TIMED_OUT state, this then represents the time when the bot
  2920  	// decided to abort the task.
  2921  	AbandonTime *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=abandon_time,json=abandonTime,proto3" json:"abandon_time,omitempty"`
  2922  	// Time the task completed and teared down, after RUNNING_OVERHEAD_TEARDOWN.
  2923  	//
  2924  	// Doing "end_time - start_time" will not lead to the exact task duration,
  2925  	// since this time frame includes overheads.
  2926  	EndTime *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
  2927  	// Duration of the task. This excludes overheads.
  2928  	Duration *durationpb.Duration `protobuf:"bytes,6,opt,name=duration,proto3" json:"duration,omitempty"`
  2929  	// Current state of the task (e.g. PENDING, RUNNING, COMPLETED, EXPIRED, etc).
  2930  	State TaskState `protobuf:"varint,7,opt,name=state,proto3,enum=swarming.v1.TaskState" json:"state,omitempty"`
  2931  	// The category of the current task state. This is primarily useful to
  2932  	// simplify BigQuery queries. This can be used to determine if a task is done
  2933  	// or if still considered for execution.
  2934  	StateCategory TaskStateCategory `protobuf:"varint,8,opt,name=state_category,json=stateCategory,proto3,enum=swarming.v1.TaskStateCategory" json:"state_category,omitempty"`
  2935  	// The task try number.
  2936  	//
  2937  	// It is 0 for a deduped task, since nothing ran. It is 0 if the task is still
  2938  	// PENDING.
  2939  	//
  2940  	// It is normally 1 for a task that started running and runs a normal flow.
  2941  	//
  2942  	// A number above 1 means that the the task was tried multiple times. It can
  2943  	// be due to a previous try resulting in a task state in the category
  2944  	// CATEGORY_TRANSIENT_DONE.
  2945  	TryNumber int32 `protobuf:"varint,9,opt,name=try_number,json=tryNumber,proto3" json:"try_number,omitempty"`
  2946  	// Index in the TaskRequest.task_slices (TaskSlice instance) that this result
  2947  	// represents. This is updated when a TaskSlice is enqueued to run. It can be
  2948  	// updated until the task state is in either category CATEGORY_EXECUTION_DONE
  2949  	// or CATEGORY_NEVER_RAN_DONE.
  2950  	//
  2951  	// The TaskSlice contains a TaskProperties, which defines what is run.
  2952  	CurrentTaskSlice int32 `protobuf:"varint,10,opt,name=current_task_slice,json=currentTaskSlice,proto3" json:"current_task_slice,omitempty"`
  2953  	// Snapshot of the bot that was assigned to this task at the start of the
  2954  	// task. This includes bot local cache information.
  2955  	Bot *Bot `protobuf:"bytes,11,opt,name=bot,proto3" json:"bot,omitempty"`
  2956  	// Server versions that touched this task.
  2957  	//
  2958  	// A different version of the server may get the request and hand it to the
  2959  	// bot. This is primarily useful to detect if a new server version introduced
  2960  	// a bug and for canarying purpose.
  2961  	ServerVersions []string `protobuf:"bytes,12,rep,name=server_versions,json=serverVersions,proto3" json:"server_versions,omitempty"`
  2962  	// List of children task IDs that this task triggered, if any.
  2963  	//
  2964  	// This happens only in the case of reentrant tasks, a Swarming task that
  2965  	// itself triggers more Swarming task. Each of these task will have 'run_id'
  2966  	// set as their 'TaskRequest.parent_task_id'.
  2967  	ChildrenTaskIds []string `protobuf:"bytes,13,rep,name=children_task_ids,json=childrenTaskIds,proto3" json:"children_task_ids,omitempty"`
  2968  	// Task ID which results was reused for state DEDUPED.
  2969  	//
  2970  	// This is the run_id (ending with '1', '2' or more).
  2971  	DedupedFrom string `protobuf:"bytes,14,opt,name=deduped_from,json=dedupedFrom,proto3" json:"deduped_from,omitempty"`
  2972  	// Summary task ID (ending with '0') when creating a new task.
  2973  	TaskId string `protobuf:"bytes,15,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
  2974  	// Actual executed task id that this task represents.
  2975  	//
  2976  	// This value is only set if it ran, that is, the task went through one of the
  2977  	// state in CATEGORY_RUNNING.
  2978  	//
  2979  	// A task_id can have multiple run_id associated to it, they will have the
  2980  	// corresponding try_number incremented starting at 1.
  2981  	RunId string `protobuf:"bytes,16,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
  2982  	// Listing of the actual pinned CIPDPackages that the task used.
  2983  	//
  2984  	// These can vary from the input packages if the inputs included non-identity
  2985  	// versions (e.g. a ref like "latest"). This can be available once task setup
  2986  	// is completed.
  2987  	CipdPins *CIPDPins `protobuf:"bytes,17,opt,name=cipd_pins,json=cipdPins,proto3" json:"cipd_pins,omitempty"`
  2988  	// Statistics about overhead for an isolated task. This is populated as the
  2989  	// task goes through setup, execution and teardown.
  2990  	Performance *TaskPerformance `protobuf:"bytes,18,opt,name=performance,proto3" json:"performance,omitempty"`
  2991  	// Process exit code if relevant. May be forcibly set to -1 in exceptional
  2992  	// cases.
  2993  	ExitCode int64 `protobuf:"zigzag64,19,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"`
  2994  	// Isolated outputs, if any.
  2995  	// Deprecated: `cas_output_root` will be used.
  2996  	Outputs *CASTree `protobuf:"bytes,20,opt,name=outputs,proto3" json:"outputs,omitempty"`
  2997  	// RBE-CAS output, if any.
  2998  	CasOutputRoot *CASReference `protobuf:"bytes,21,opt,name=cas_output_root,json=casOutputRoot,proto3" json:"cas_output_root,omitempty"`
  2999  	// ResultDB related properties for this task.
  3000  	ResultdbInfo *ResultDBInfo `protobuf:"bytes,22,opt,name=resultdb_info,json=resultdbInfo,proto3" json:"resultdb_info,omitempty"`
  3001  }
  3002  
  3003  func (x *TaskResult) Reset() {
  3004  	*x = TaskResult{}
  3005  	if protoimpl.UnsafeEnabled {
  3006  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[21]
  3007  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3008  		ms.StoreMessageInfo(mi)
  3009  	}
  3010  }
  3011  
  3012  func (x *TaskResult) String() string {
  3013  	return protoimpl.X.MessageStringOf(x)
  3014  }
  3015  
  3016  func (*TaskResult) ProtoMessage() {}
  3017  
  3018  func (x *TaskResult) ProtoReflect() protoreflect.Message {
  3019  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[21]
  3020  	if protoimpl.UnsafeEnabled && x != nil {
  3021  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3022  		if ms.LoadMessageInfo() == nil {
  3023  			ms.StoreMessageInfo(mi)
  3024  		}
  3025  		return ms
  3026  	}
  3027  	return mi.MessageOf(x)
  3028  }
  3029  
  3030  // Deprecated: Use TaskResult.ProtoReflect.Descriptor instead.
  3031  func (*TaskResult) Descriptor() ([]byte, []int) {
  3032  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{21}
  3033  }
  3034  
  3035  func (x *TaskResult) GetRequest() *TaskRequest {
  3036  	if x != nil {
  3037  		return x.Request
  3038  	}
  3039  	return nil
  3040  }
  3041  
  3042  func (x *TaskResult) GetCreateTime() *timestamppb.Timestamp {
  3043  	if x != nil {
  3044  		return x.CreateTime
  3045  	}
  3046  	return nil
  3047  }
  3048  
  3049  func (x *TaskResult) GetStartTime() *timestamppb.Timestamp {
  3050  	if x != nil {
  3051  		return x.StartTime
  3052  	}
  3053  	return nil
  3054  }
  3055  
  3056  func (x *TaskResult) GetAbandonTime() *timestamppb.Timestamp {
  3057  	if x != nil {
  3058  		return x.AbandonTime
  3059  	}
  3060  	return nil
  3061  }
  3062  
  3063  func (x *TaskResult) GetEndTime() *timestamppb.Timestamp {
  3064  	if x != nil {
  3065  		return x.EndTime
  3066  	}
  3067  	return nil
  3068  }
  3069  
  3070  func (x *TaskResult) GetDuration() *durationpb.Duration {
  3071  	if x != nil {
  3072  		return x.Duration
  3073  	}
  3074  	return nil
  3075  }
  3076  
  3077  func (x *TaskResult) GetState() TaskState {
  3078  	if x != nil {
  3079  		return x.State
  3080  	}
  3081  	return TaskState_TASK_STATE_INVALID
  3082  }
  3083  
  3084  func (x *TaskResult) GetStateCategory() TaskStateCategory {
  3085  	if x != nil {
  3086  		return x.StateCategory
  3087  	}
  3088  	return TaskStateCategory_TASK_STATE_CATEGORY_UNSPECIFIED
  3089  }
  3090  
  3091  func (x *TaskResult) GetTryNumber() int32 {
  3092  	if x != nil {
  3093  		return x.TryNumber
  3094  	}
  3095  	return 0
  3096  }
  3097  
  3098  func (x *TaskResult) GetCurrentTaskSlice() int32 {
  3099  	if x != nil {
  3100  		return x.CurrentTaskSlice
  3101  	}
  3102  	return 0
  3103  }
  3104  
  3105  func (x *TaskResult) GetBot() *Bot {
  3106  	if x != nil {
  3107  		return x.Bot
  3108  	}
  3109  	return nil
  3110  }
  3111  
  3112  func (x *TaskResult) GetServerVersions() []string {
  3113  	if x != nil {
  3114  		return x.ServerVersions
  3115  	}
  3116  	return nil
  3117  }
  3118  
  3119  func (x *TaskResult) GetChildrenTaskIds() []string {
  3120  	if x != nil {
  3121  		return x.ChildrenTaskIds
  3122  	}
  3123  	return nil
  3124  }
  3125  
  3126  func (x *TaskResult) GetDedupedFrom() string {
  3127  	if x != nil {
  3128  		return x.DedupedFrom
  3129  	}
  3130  	return ""
  3131  }
  3132  
  3133  func (x *TaskResult) GetTaskId() string {
  3134  	if x != nil {
  3135  		return x.TaskId
  3136  	}
  3137  	return ""
  3138  }
  3139  
  3140  func (x *TaskResult) GetRunId() string {
  3141  	if x != nil {
  3142  		return x.RunId
  3143  	}
  3144  	return ""
  3145  }
  3146  
  3147  func (x *TaskResult) GetCipdPins() *CIPDPins {
  3148  	if x != nil {
  3149  		return x.CipdPins
  3150  	}
  3151  	return nil
  3152  }
  3153  
  3154  func (x *TaskResult) GetPerformance() *TaskPerformance {
  3155  	if x != nil {
  3156  		return x.Performance
  3157  	}
  3158  	return nil
  3159  }
  3160  
  3161  func (x *TaskResult) GetExitCode() int64 {
  3162  	if x != nil {
  3163  		return x.ExitCode
  3164  	}
  3165  	return 0
  3166  }
  3167  
  3168  func (x *TaskResult) GetOutputs() *CASTree {
  3169  	if x != nil {
  3170  		return x.Outputs
  3171  	}
  3172  	return nil
  3173  }
  3174  
  3175  func (x *TaskResult) GetCasOutputRoot() *CASReference {
  3176  	if x != nil {
  3177  		return x.CasOutputRoot
  3178  	}
  3179  	return nil
  3180  }
  3181  
  3182  func (x *TaskResult) GetResultdbInfo() *ResultDBInfo {
  3183  	if x != nil {
  3184  		return x.ResultdbInfo
  3185  	}
  3186  	return nil
  3187  }
  3188  
  3189  // Defines pinned CIPD packages that were installed during the task.
  3190  type CIPDPins struct {
  3191  	state         protoimpl.MessageState
  3192  	sizeCache     protoimpl.SizeCache
  3193  	unknownFields protoimpl.UnknownFields
  3194  
  3195  	// The CIPD server where the CIPD packages were fetched from. Must contain
  3196  	// "https://" or "http://" prefix.
  3197  	//
  3198  	// This field or its subfields are optional if default CIPD client is defined
  3199  	// in the server config.
  3200  	Server string `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"`
  3201  	// The pinned package + version of the CIPD client that was actually used.
  3202  	ClientPackage *CIPDPackage `protobuf:"bytes,2,opt,name=client_package,json=clientPackage,proto3" json:"client_package,omitempty"`
  3203  	// List of CIPD packages that were installed in the task with fully resolved
  3204  	// package names and versions.
  3205  	Packages []*CIPDPackage `protobuf:"bytes,3,rep,name=packages,proto3" json:"packages,omitempty"`
  3206  }
  3207  
  3208  func (x *CIPDPins) Reset() {
  3209  	*x = CIPDPins{}
  3210  	if protoimpl.UnsafeEnabled {
  3211  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[22]
  3212  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3213  		ms.StoreMessageInfo(mi)
  3214  	}
  3215  }
  3216  
  3217  func (x *CIPDPins) String() string {
  3218  	return protoimpl.X.MessageStringOf(x)
  3219  }
  3220  
  3221  func (*CIPDPins) ProtoMessage() {}
  3222  
  3223  func (x *CIPDPins) ProtoReflect() protoreflect.Message {
  3224  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[22]
  3225  	if protoimpl.UnsafeEnabled && x != nil {
  3226  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3227  		if ms.LoadMessageInfo() == nil {
  3228  			ms.StoreMessageInfo(mi)
  3229  		}
  3230  		return ms
  3231  	}
  3232  	return mi.MessageOf(x)
  3233  }
  3234  
  3235  // Deprecated: Use CIPDPins.ProtoReflect.Descriptor instead.
  3236  func (*CIPDPins) Descriptor() ([]byte, []int) {
  3237  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{22}
  3238  }
  3239  
  3240  func (x *CIPDPins) GetServer() string {
  3241  	if x != nil {
  3242  		return x.Server
  3243  	}
  3244  	return ""
  3245  }
  3246  
  3247  func (x *CIPDPins) GetClientPackage() *CIPDPackage {
  3248  	if x != nil {
  3249  		return x.ClientPackage
  3250  	}
  3251  	return nil
  3252  }
  3253  
  3254  func (x *CIPDPins) GetPackages() []*CIPDPackage {
  3255  	if x != nil {
  3256  		return x.Packages
  3257  	}
  3258  	return nil
  3259  }
  3260  
  3261  // Information about the task's performance.
  3262  type TaskPerformance struct {
  3263  	state         protoimpl.MessageState
  3264  	sizeCache     protoimpl.SizeCache
  3265  	unknownFields protoimpl.UnknownFields
  3266  
  3267  	// Total cost of running this task in $USD. In the case of DEDUPED task, this
  3268  	// represents the amount saved.
  3269  	CostUsd float32 `protobuf:"fixed32,1,opt,name=cost_usd,json=costUsd,proto3" json:"cost_usd,omitempty"`
  3270  	// Total overhead caused by the bot.
  3271  	// This is calculated by subtracting the command duration measured in
  3272  	// run_isolated.py from the total duration in task_runner.run_command().
  3273  	// https://source.chromium.org/chromium/infra/infra/+/master:luci/appengine/swarming/swarming_bot/bot_code/task_runner.py;l=811;drc=dfa14c6863d14a5969bb4fea08846985d89aed76
  3274  	TotalOverhead *durationpb.Duration `protobuf:"bytes,5,opt,name=total_overhead,json=totalOverhead,proto3" json:"total_overhead,omitempty"`
  3275  	// Overhead that is caused by the bot server that is not accounted for by the
  3276  	// other overheads.
  3277  	OtherOverhead *durationpb.Duration `protobuf:"bytes,2,opt,name=other_overhead,json=otherOverhead,proto3" json:"other_overhead,omitempty"`
  3278  	// Deprecated: use setup_overhead instead.
  3279  	// Task environment setup overhead. This is the task state
  3280  	// RUNNING_OVERHEAD_SETUP.
  3281  	Setup *TaskOverheadStats `protobuf:"bytes,3,opt,name=setup,proto3" json:"setup,omitempty"`
  3282  	// Deprecated: use teardown_overhead instead.
  3283  	// Task environment teardown overhead. This is the task state
  3284  	// RUNNING_OVERHEAD_TEARDOWN.
  3285  	Teardown *TaskOverheadStats `protobuf:"bytes,4,opt,name=teardown,proto3" json:"teardown,omitempty"`
  3286  	// Task environment setup overhead. This is the task state
  3287  	// RUNNING_OVERHEAD_SETUP.
  3288  	SetupOverhead *TaskSetupOverhead `protobuf:"bytes,6,opt,name=setup_overhead,json=setupOverhead,proto3" json:"setup_overhead,omitempty"`
  3289  	// Task environment teardown overhead. This is the task state
  3290  	// RUNNING_OVERHEAD_TEARDOWN.
  3291  	TeardownOverhead *TaskTeardownOverhead `protobuf:"bytes,7,opt,name=teardown_overhead,json=teardownOverhead,proto3" json:"teardown_overhead,omitempty"`
  3292  }
  3293  
  3294  func (x *TaskPerformance) Reset() {
  3295  	*x = TaskPerformance{}
  3296  	if protoimpl.UnsafeEnabled {
  3297  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[23]
  3298  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3299  		ms.StoreMessageInfo(mi)
  3300  	}
  3301  }
  3302  
  3303  func (x *TaskPerformance) String() string {
  3304  	return protoimpl.X.MessageStringOf(x)
  3305  }
  3306  
  3307  func (*TaskPerformance) ProtoMessage() {}
  3308  
  3309  func (x *TaskPerformance) ProtoReflect() protoreflect.Message {
  3310  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[23]
  3311  	if protoimpl.UnsafeEnabled && x != nil {
  3312  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3313  		if ms.LoadMessageInfo() == nil {
  3314  			ms.StoreMessageInfo(mi)
  3315  		}
  3316  		return ms
  3317  	}
  3318  	return mi.MessageOf(x)
  3319  }
  3320  
  3321  // Deprecated: Use TaskPerformance.ProtoReflect.Descriptor instead.
  3322  func (*TaskPerformance) Descriptor() ([]byte, []int) {
  3323  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{23}
  3324  }
  3325  
  3326  func (x *TaskPerformance) GetCostUsd() float32 {
  3327  	if x != nil {
  3328  		return x.CostUsd
  3329  	}
  3330  	return 0
  3331  }
  3332  
  3333  func (x *TaskPerformance) GetTotalOverhead() *durationpb.Duration {
  3334  	if x != nil {
  3335  		return x.TotalOverhead
  3336  	}
  3337  	return nil
  3338  }
  3339  
  3340  func (x *TaskPerformance) GetOtherOverhead() *durationpb.Duration {
  3341  	if x != nil {
  3342  		return x.OtherOverhead
  3343  	}
  3344  	return nil
  3345  }
  3346  
  3347  func (x *TaskPerformance) GetSetup() *TaskOverheadStats {
  3348  	if x != nil {
  3349  		return x.Setup
  3350  	}
  3351  	return nil
  3352  }
  3353  
  3354  func (x *TaskPerformance) GetTeardown() *TaskOverheadStats {
  3355  	if x != nil {
  3356  		return x.Teardown
  3357  	}
  3358  	return nil
  3359  }
  3360  
  3361  func (x *TaskPerformance) GetSetupOverhead() *TaskSetupOverhead {
  3362  	if x != nil {
  3363  		return x.SetupOverhead
  3364  	}
  3365  	return nil
  3366  }
  3367  
  3368  func (x *TaskPerformance) GetTeardownOverhead() *TaskTeardownOverhead {
  3369  	if x != nil {
  3370  		return x.TeardownOverhead
  3371  	}
  3372  	return nil
  3373  }
  3374  
  3375  // Overhead information about setup.
  3376  type TaskSetupOverhead struct {
  3377  	state         protoimpl.MessageState
  3378  	sizeCache     protoimpl.SizeCache
  3379  	unknownFields protoimpl.UnknownFields
  3380  
  3381  	// Duration of this overhead.
  3382  	Duration *durationpb.Duration `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"`
  3383  	// Cache trimming overhead.
  3384  	CacheTrim *CacheTrimOverhead `protobuf:"bytes,2,opt,name=cache_trim,json=cacheTrim,proto3" json:"cache_trim,omitempty"`
  3385  	// CIPD packge installation overhead.
  3386  	Cipd *CIPDOverhead `protobuf:"bytes,3,opt,name=cipd,proto3" json:"cipd,omitempty"`
  3387  	// Named cache install overhead.
  3388  	NamedCache *NamedCacheOverhead `protobuf:"bytes,4,opt,name=named_cache,json=namedCache,proto3" json:"named_cache,omitempty"`
  3389  	// CAS download overhead.
  3390  	Cas *CASOverhead `protobuf:"bytes,5,opt,name=cas,proto3" json:"cas,omitempty"`
  3391  }
  3392  
  3393  func (x *TaskSetupOverhead) Reset() {
  3394  	*x = TaskSetupOverhead{}
  3395  	if protoimpl.UnsafeEnabled {
  3396  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[24]
  3397  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3398  		ms.StoreMessageInfo(mi)
  3399  	}
  3400  }
  3401  
  3402  func (x *TaskSetupOverhead) String() string {
  3403  	return protoimpl.X.MessageStringOf(x)
  3404  }
  3405  
  3406  func (*TaskSetupOverhead) ProtoMessage() {}
  3407  
  3408  func (x *TaskSetupOverhead) ProtoReflect() protoreflect.Message {
  3409  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[24]
  3410  	if protoimpl.UnsafeEnabled && x != nil {
  3411  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3412  		if ms.LoadMessageInfo() == nil {
  3413  			ms.StoreMessageInfo(mi)
  3414  		}
  3415  		return ms
  3416  	}
  3417  	return mi.MessageOf(x)
  3418  }
  3419  
  3420  // Deprecated: Use TaskSetupOverhead.ProtoReflect.Descriptor instead.
  3421  func (*TaskSetupOverhead) Descriptor() ([]byte, []int) {
  3422  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{24}
  3423  }
  3424  
  3425  func (x *TaskSetupOverhead) GetDuration() *durationpb.Duration {
  3426  	if x != nil {
  3427  		return x.Duration
  3428  	}
  3429  	return nil
  3430  }
  3431  
  3432  func (x *TaskSetupOverhead) GetCacheTrim() *CacheTrimOverhead {
  3433  	if x != nil {
  3434  		return x.CacheTrim
  3435  	}
  3436  	return nil
  3437  }
  3438  
  3439  func (x *TaskSetupOverhead) GetCipd() *CIPDOverhead {
  3440  	if x != nil {
  3441  		return x.Cipd
  3442  	}
  3443  	return nil
  3444  }
  3445  
  3446  func (x *TaskSetupOverhead) GetNamedCache() *NamedCacheOverhead {
  3447  	if x != nil {
  3448  		return x.NamedCache
  3449  	}
  3450  	return nil
  3451  }
  3452  
  3453  func (x *TaskSetupOverhead) GetCas() *CASOverhead {
  3454  	if x != nil {
  3455  		return x.Cas
  3456  	}
  3457  	return nil
  3458  }
  3459  
  3460  // Overhead information about teardown.
  3461  type TaskTeardownOverhead struct {
  3462  	state         protoimpl.MessageState
  3463  	sizeCache     protoimpl.SizeCache
  3464  	unknownFields protoimpl.UnknownFields
  3465  
  3466  	// Duration of this overhead.
  3467  	Duration *durationpb.Duration `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"`
  3468  	// CAS upload overhead.
  3469  	Cas *CASOverhead `protobuf:"bytes,2,opt,name=cas,proto3" json:"cas,omitempty"`
  3470  	// Named cache uninstall overhead.
  3471  	NamedCache *NamedCacheOverhead `protobuf:"bytes,3,opt,name=named_cache,json=namedCache,proto3" json:"named_cache,omitempty"`
  3472  	// Directory cleanup overhead.
  3473  	Cleanup *CleanupOverhead `protobuf:"bytes,4,opt,name=cleanup,proto3" json:"cleanup,omitempty"`
  3474  }
  3475  
  3476  func (x *TaskTeardownOverhead) Reset() {
  3477  	*x = TaskTeardownOverhead{}
  3478  	if protoimpl.UnsafeEnabled {
  3479  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[25]
  3480  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3481  		ms.StoreMessageInfo(mi)
  3482  	}
  3483  }
  3484  
  3485  func (x *TaskTeardownOverhead) String() string {
  3486  	return protoimpl.X.MessageStringOf(x)
  3487  }
  3488  
  3489  func (*TaskTeardownOverhead) ProtoMessage() {}
  3490  
  3491  func (x *TaskTeardownOverhead) ProtoReflect() protoreflect.Message {
  3492  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[25]
  3493  	if protoimpl.UnsafeEnabled && x != nil {
  3494  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3495  		if ms.LoadMessageInfo() == nil {
  3496  			ms.StoreMessageInfo(mi)
  3497  		}
  3498  		return ms
  3499  	}
  3500  	return mi.MessageOf(x)
  3501  }
  3502  
  3503  // Deprecated: Use TaskTeardownOverhead.ProtoReflect.Descriptor instead.
  3504  func (*TaskTeardownOverhead) Descriptor() ([]byte, []int) {
  3505  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{25}
  3506  }
  3507  
  3508  func (x *TaskTeardownOverhead) GetDuration() *durationpb.Duration {
  3509  	if x != nil {
  3510  		return x.Duration
  3511  	}
  3512  	return nil
  3513  }
  3514  
  3515  func (x *TaskTeardownOverhead) GetCas() *CASOverhead {
  3516  	if x != nil {
  3517  		return x.Cas
  3518  	}
  3519  	return nil
  3520  }
  3521  
  3522  func (x *TaskTeardownOverhead) GetNamedCache() *NamedCacheOverhead {
  3523  	if x != nil {
  3524  		return x.NamedCache
  3525  	}
  3526  	return nil
  3527  }
  3528  
  3529  func (x *TaskTeardownOverhead) GetCleanup() *CleanupOverhead {
  3530  	if x != nil {
  3531  		return x.Cleanup
  3532  	}
  3533  	return nil
  3534  }
  3535  
  3536  // Overhead information about cache trimming.
  3537  type CacheTrimOverhead struct {
  3538  	state         protoimpl.MessageState
  3539  	sizeCache     protoimpl.SizeCache
  3540  	unknownFields protoimpl.UnknownFields
  3541  
  3542  	Duration *durationpb.Duration `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"`
  3543  }
  3544  
  3545  func (x *CacheTrimOverhead) Reset() {
  3546  	*x = CacheTrimOverhead{}
  3547  	if protoimpl.UnsafeEnabled {
  3548  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[26]
  3549  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3550  		ms.StoreMessageInfo(mi)
  3551  	}
  3552  }
  3553  
  3554  func (x *CacheTrimOverhead) String() string {
  3555  	return protoimpl.X.MessageStringOf(x)
  3556  }
  3557  
  3558  func (*CacheTrimOverhead) ProtoMessage() {}
  3559  
  3560  func (x *CacheTrimOverhead) ProtoReflect() protoreflect.Message {
  3561  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[26]
  3562  	if protoimpl.UnsafeEnabled && x != nil {
  3563  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3564  		if ms.LoadMessageInfo() == nil {
  3565  			ms.StoreMessageInfo(mi)
  3566  		}
  3567  		return ms
  3568  	}
  3569  	return mi.MessageOf(x)
  3570  }
  3571  
  3572  // Deprecated: Use CacheTrimOverhead.ProtoReflect.Descriptor instead.
  3573  func (*CacheTrimOverhead) Descriptor() ([]byte, []int) {
  3574  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{26}
  3575  }
  3576  
  3577  func (x *CacheTrimOverhead) GetDuration() *durationpb.Duration {
  3578  	if x != nil {
  3579  		return x.Duration
  3580  	}
  3581  	return nil
  3582  }
  3583  
  3584  // Overhead information about CIPD packge installation.
  3585  type CIPDOverhead struct {
  3586  	state         protoimpl.MessageState
  3587  	sizeCache     protoimpl.SizeCache
  3588  	unknownFields protoimpl.UnknownFields
  3589  
  3590  	// Duration of this overhead.
  3591  	Duration *durationpb.Duration `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"`
  3592  }
  3593  
  3594  func (x *CIPDOverhead) Reset() {
  3595  	*x = CIPDOverhead{}
  3596  	if protoimpl.UnsafeEnabled {
  3597  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[27]
  3598  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3599  		ms.StoreMessageInfo(mi)
  3600  	}
  3601  }
  3602  
  3603  func (x *CIPDOverhead) String() string {
  3604  	return protoimpl.X.MessageStringOf(x)
  3605  }
  3606  
  3607  func (*CIPDOverhead) ProtoMessage() {}
  3608  
  3609  func (x *CIPDOverhead) ProtoReflect() protoreflect.Message {
  3610  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[27]
  3611  	if protoimpl.UnsafeEnabled && x != nil {
  3612  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3613  		if ms.LoadMessageInfo() == nil {
  3614  			ms.StoreMessageInfo(mi)
  3615  		}
  3616  		return ms
  3617  	}
  3618  	return mi.MessageOf(x)
  3619  }
  3620  
  3621  // Deprecated: Use CIPDOverhead.ProtoReflect.Descriptor instead.
  3622  func (*CIPDOverhead) Descriptor() ([]byte, []int) {
  3623  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{27}
  3624  }
  3625  
  3626  func (x *CIPDOverhead) GetDuration() *durationpb.Duration {
  3627  	if x != nil {
  3628  		return x.Duration
  3629  	}
  3630  	return nil
  3631  }
  3632  
  3633  // Overhead information about Named Caches install or uninstall.
  3634  type NamedCacheOverhead struct {
  3635  	state         protoimpl.MessageState
  3636  	sizeCache     protoimpl.SizeCache
  3637  	unknownFields protoimpl.UnknownFields
  3638  
  3639  	// Duration of this overhead.
  3640  	Duration *durationpb.Duration `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"`
  3641  }
  3642  
  3643  func (x *NamedCacheOverhead) Reset() {
  3644  	*x = NamedCacheOverhead{}
  3645  	if protoimpl.UnsafeEnabled {
  3646  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[28]
  3647  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3648  		ms.StoreMessageInfo(mi)
  3649  	}
  3650  }
  3651  
  3652  func (x *NamedCacheOverhead) String() string {
  3653  	return protoimpl.X.MessageStringOf(x)
  3654  }
  3655  
  3656  func (*NamedCacheOverhead) ProtoMessage() {}
  3657  
  3658  func (x *NamedCacheOverhead) ProtoReflect() protoreflect.Message {
  3659  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[28]
  3660  	if protoimpl.UnsafeEnabled && x != nil {
  3661  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3662  		if ms.LoadMessageInfo() == nil {
  3663  			ms.StoreMessageInfo(mi)
  3664  		}
  3665  		return ms
  3666  	}
  3667  	return mi.MessageOf(x)
  3668  }
  3669  
  3670  // Deprecated: Use NamedCacheOverhead.ProtoReflect.Descriptor instead.
  3671  func (*NamedCacheOverhead) Descriptor() ([]byte, []int) {
  3672  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{28}
  3673  }
  3674  
  3675  func (x *NamedCacheOverhead) GetDuration() *durationpb.Duration {
  3676  	if x != nil {
  3677  		return x.Duration
  3678  	}
  3679  	return nil
  3680  }
  3681  
  3682  // Overhead information about CAS download or upload.
  3683  type CASOverhead struct {
  3684  	state         protoimpl.MessageState
  3685  	sizeCache     protoimpl.SizeCache
  3686  	unknownFields protoimpl.UnknownFields
  3687  
  3688  	// Duration of this overhead.
  3689  	Duration *durationpb.Duration `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"`
  3690  	// CAS entries that were not present in the local or remote cache and had to
  3691  	// be sent across the network.
  3692  	Cold *CASEntriesStats `protobuf:"bytes,2,opt,name=cold,proto3" json:"cold,omitempty"`
  3693  	// CAS entries that were in the cache and thus didn't have to be transferred.
  3694  	Hot *CASEntriesStats `protobuf:"bytes,3,opt,name=hot,proto3" json:"hot,omitempty"`
  3695  }
  3696  
  3697  func (x *CASOverhead) Reset() {
  3698  	*x = CASOverhead{}
  3699  	if protoimpl.UnsafeEnabled {
  3700  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[29]
  3701  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3702  		ms.StoreMessageInfo(mi)
  3703  	}
  3704  }
  3705  
  3706  func (x *CASOverhead) String() string {
  3707  	return protoimpl.X.MessageStringOf(x)
  3708  }
  3709  
  3710  func (*CASOverhead) ProtoMessage() {}
  3711  
  3712  func (x *CASOverhead) ProtoReflect() protoreflect.Message {
  3713  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[29]
  3714  	if protoimpl.UnsafeEnabled && x != nil {
  3715  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3716  		if ms.LoadMessageInfo() == nil {
  3717  			ms.StoreMessageInfo(mi)
  3718  		}
  3719  		return ms
  3720  	}
  3721  	return mi.MessageOf(x)
  3722  }
  3723  
  3724  // Deprecated: Use CASOverhead.ProtoReflect.Descriptor instead.
  3725  func (*CASOverhead) Descriptor() ([]byte, []int) {
  3726  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{29}
  3727  }
  3728  
  3729  func (x *CASOverhead) GetDuration() *durationpb.Duration {
  3730  	if x != nil {
  3731  		return x.Duration
  3732  	}
  3733  	return nil
  3734  }
  3735  
  3736  func (x *CASOverhead) GetCold() *CASEntriesStats {
  3737  	if x != nil {
  3738  		return x.Cold
  3739  	}
  3740  	return nil
  3741  }
  3742  
  3743  func (x *CASOverhead) GetHot() *CASEntriesStats {
  3744  	if x != nil {
  3745  		return x.Hot
  3746  	}
  3747  	return nil
  3748  }
  3749  
  3750  // Overhead information about cleanup step.
  3751  type CleanupOverhead struct {
  3752  	state         protoimpl.MessageState
  3753  	sizeCache     protoimpl.SizeCache
  3754  	unknownFields protoimpl.UnknownFields
  3755  
  3756  	// Duration of this overhead.
  3757  	Duration *durationpb.Duration `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"`
  3758  }
  3759  
  3760  func (x *CleanupOverhead) Reset() {
  3761  	*x = CleanupOverhead{}
  3762  	if protoimpl.UnsafeEnabled {
  3763  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[30]
  3764  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3765  		ms.StoreMessageInfo(mi)
  3766  	}
  3767  }
  3768  
  3769  func (x *CleanupOverhead) String() string {
  3770  	return protoimpl.X.MessageStringOf(x)
  3771  }
  3772  
  3773  func (*CleanupOverhead) ProtoMessage() {}
  3774  
  3775  func (x *CleanupOverhead) ProtoReflect() protoreflect.Message {
  3776  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[30]
  3777  	if protoimpl.UnsafeEnabled && x != nil {
  3778  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3779  		if ms.LoadMessageInfo() == nil {
  3780  			ms.StoreMessageInfo(mi)
  3781  		}
  3782  		return ms
  3783  	}
  3784  	return mi.MessageOf(x)
  3785  }
  3786  
  3787  // Deprecated: Use CleanupOverhead.ProtoReflect.Descriptor instead.
  3788  func (*CleanupOverhead) Descriptor() ([]byte, []int) {
  3789  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{30}
  3790  }
  3791  
  3792  func (x *CleanupOverhead) GetDuration() *durationpb.Duration {
  3793  	if x != nil {
  3794  		return x.Duration
  3795  	}
  3796  	return nil
  3797  }
  3798  
  3799  // Deprecated: Use TaskSetupOverheadStats or TaskTeardownOverheadStats instead.
  3800  // Information about setup or teardown.
  3801  type TaskOverheadStats struct {
  3802  	state         protoimpl.MessageState
  3803  	sizeCache     protoimpl.SizeCache
  3804  	unknownFields protoimpl.UnknownFields
  3805  
  3806  	// Duration of this overhead.
  3807  	Duration *durationpb.Duration `protobuf:"bytes,1,opt,name=duration,proto3" json:"duration,omitempty"`
  3808  	// CAS entries that were not present in the local or remote cache and had to
  3809  	// be sent across the network.
  3810  	Cold *CASEntriesStats `protobuf:"bytes,2,opt,name=cold,proto3" json:"cold,omitempty"`
  3811  	// CAS entries that were in the cache and thus didn't have to be transferred.
  3812  	Hot *CASEntriesStats `protobuf:"bytes,3,opt,name=hot,proto3" json:"hot,omitempty"`
  3813  }
  3814  
  3815  func (x *TaskOverheadStats) Reset() {
  3816  	*x = TaskOverheadStats{}
  3817  	if protoimpl.UnsafeEnabled {
  3818  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[31]
  3819  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3820  		ms.StoreMessageInfo(mi)
  3821  	}
  3822  }
  3823  
  3824  func (x *TaskOverheadStats) String() string {
  3825  	return protoimpl.X.MessageStringOf(x)
  3826  }
  3827  
  3828  func (*TaskOverheadStats) ProtoMessage() {}
  3829  
  3830  func (x *TaskOverheadStats) ProtoReflect() protoreflect.Message {
  3831  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[31]
  3832  	if protoimpl.UnsafeEnabled && x != nil {
  3833  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3834  		if ms.LoadMessageInfo() == nil {
  3835  			ms.StoreMessageInfo(mi)
  3836  		}
  3837  		return ms
  3838  	}
  3839  	return mi.MessageOf(x)
  3840  }
  3841  
  3842  // Deprecated: Use TaskOverheadStats.ProtoReflect.Descriptor instead.
  3843  func (*TaskOverheadStats) Descriptor() ([]byte, []int) {
  3844  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{31}
  3845  }
  3846  
  3847  func (x *TaskOverheadStats) GetDuration() *durationpb.Duration {
  3848  	if x != nil {
  3849  		return x.Duration
  3850  	}
  3851  	return nil
  3852  }
  3853  
  3854  func (x *TaskOverheadStats) GetCold() *CASEntriesStats {
  3855  	if x != nil {
  3856  		return x.Cold
  3857  	}
  3858  	return nil
  3859  }
  3860  
  3861  func (x *TaskOverheadStats) GetHot() *CASEntriesStats {
  3862  	if x != nil {
  3863  		return x.Hot
  3864  	}
  3865  	return nil
  3866  }
  3867  
  3868  // Statistics for differential CAS entries in the context of I/O for a task.
  3869  type CASEntriesStats struct {
  3870  	state         protoimpl.MessageState
  3871  	sizeCache     protoimpl.SizeCache
  3872  	unknownFields protoimpl.UnknownFields
  3873  
  3874  	NumItems        int64 `protobuf:"varint,1,opt,name=num_items,json=numItems,proto3" json:"num_items,omitempty"`
  3875  	TotalBytesItems int64 `protobuf:"varint,2,opt,name=total_bytes_items,json=totalBytesItems,proto3" json:"total_bytes_items,omitempty"`
  3876  	// This buffer is compressed as deflate'd delta-encoded varints. This is the
  3877  	// list of all the item size for an I/O operation, which can scale in the 100k
  3878  	// range. So this can be large! See //client/utils/large.py for the code to
  3879  	// handle these.
  3880  	Items []byte `protobuf:"bytes,6,opt,name=items,proto3" json:"items,omitempty"`
  3881  }
  3882  
  3883  func (x *CASEntriesStats) Reset() {
  3884  	*x = CASEntriesStats{}
  3885  	if protoimpl.UnsafeEnabled {
  3886  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[32]
  3887  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3888  		ms.StoreMessageInfo(mi)
  3889  	}
  3890  }
  3891  
  3892  func (x *CASEntriesStats) String() string {
  3893  	return protoimpl.X.MessageStringOf(x)
  3894  }
  3895  
  3896  func (*CASEntriesStats) ProtoMessage() {}
  3897  
  3898  func (x *CASEntriesStats) ProtoReflect() protoreflect.Message {
  3899  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[32]
  3900  	if protoimpl.UnsafeEnabled && x != nil {
  3901  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3902  		if ms.LoadMessageInfo() == nil {
  3903  			ms.StoreMessageInfo(mi)
  3904  		}
  3905  		return ms
  3906  	}
  3907  	return mi.MessageOf(x)
  3908  }
  3909  
  3910  // Deprecated: Use CASEntriesStats.ProtoReflect.Descriptor instead.
  3911  func (*CASEntriesStats) Descriptor() ([]byte, []int) {
  3912  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{32}
  3913  }
  3914  
  3915  func (x *CASEntriesStats) GetNumItems() int64 {
  3916  	if x != nil {
  3917  		return x.NumItems
  3918  	}
  3919  	return 0
  3920  }
  3921  
  3922  func (x *CASEntriesStats) GetTotalBytesItems() int64 {
  3923  	if x != nil {
  3924  		return x.TotalBytesItems
  3925  	}
  3926  	return 0
  3927  }
  3928  
  3929  func (x *CASEntriesStats) GetItems() []byte {
  3930  	if x != nil {
  3931  		return x.Items
  3932  	}
  3933  	return nil
  3934  }
  3935  
  3936  // Swarming:ResultDB integration configuration for a task.
  3937  // This is a copy of SwarmingRpcsResultDBCfg.
  3938  type ResultDBCfg struct {
  3939  	state         protoimpl.MessageState
  3940  	sizeCache     protoimpl.SizeCache
  3941  	unknownFields protoimpl.UnknownFields
  3942  
  3943  	// Flag to indicates the integration is enabled.
  3944  	Enable bool `protobuf:"varint,1,opt,name=enable,proto3" json:"enable,omitempty"`
  3945  }
  3946  
  3947  func (x *ResultDBCfg) Reset() {
  3948  	*x = ResultDBCfg{}
  3949  	if protoimpl.UnsafeEnabled {
  3950  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[33]
  3951  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3952  		ms.StoreMessageInfo(mi)
  3953  	}
  3954  }
  3955  
  3956  func (x *ResultDBCfg) String() string {
  3957  	return protoimpl.X.MessageStringOf(x)
  3958  }
  3959  
  3960  func (*ResultDBCfg) ProtoMessage() {}
  3961  
  3962  func (x *ResultDBCfg) ProtoReflect() protoreflect.Message {
  3963  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[33]
  3964  	if protoimpl.UnsafeEnabled && x != nil {
  3965  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  3966  		if ms.LoadMessageInfo() == nil {
  3967  			ms.StoreMessageInfo(mi)
  3968  		}
  3969  		return ms
  3970  	}
  3971  	return mi.MessageOf(x)
  3972  }
  3973  
  3974  // Deprecated: Use ResultDBCfg.ProtoReflect.Descriptor instead.
  3975  func (*ResultDBCfg) Descriptor() ([]byte, []int) {
  3976  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{33}
  3977  }
  3978  
  3979  func (x *ResultDBCfg) GetEnable() bool {
  3980  	if x != nil {
  3981  		return x.Enable
  3982  	}
  3983  	return false
  3984  }
  3985  
  3986  // ResultDB Related properties.
  3987  type ResultDBInfo struct {
  3988  	state         protoimpl.MessageState
  3989  	sizeCache     protoimpl.SizeCache
  3990  	unknownFields protoimpl.UnknownFields
  3991  
  3992  	// ResultDB hostname, e.g. "results.api.cr.dev"
  3993  	Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
  3994  	// Name of the task's ResultDB invocation.
  3995  	//
  3996  	// e.g. "invocations/task-chromium-swarm.appspot.com-deadbeef1"
  3997  	// None if Swarming:ResultDB integration was not enabled for this task.
  3998  	//
  3999  	// If the task was deduplicated, this equals invocation name of the original
  4000  	// task.
  4001  	Invocation string `protobuf:"bytes,2,opt,name=invocation,proto3" json:"invocation,omitempty"`
  4002  }
  4003  
  4004  func (x *ResultDBInfo) Reset() {
  4005  	*x = ResultDBInfo{}
  4006  	if protoimpl.UnsafeEnabled {
  4007  		mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[34]
  4008  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4009  		ms.StoreMessageInfo(mi)
  4010  	}
  4011  }
  4012  
  4013  func (x *ResultDBInfo) String() string {
  4014  	return protoimpl.X.MessageStringOf(x)
  4015  }
  4016  
  4017  func (*ResultDBInfo) ProtoMessage() {}
  4018  
  4019  func (x *ResultDBInfo) ProtoReflect() protoreflect.Message {
  4020  	mi := &file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[34]
  4021  	if protoimpl.UnsafeEnabled && x != nil {
  4022  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
  4023  		if ms.LoadMessageInfo() == nil {
  4024  			ms.StoreMessageInfo(mi)
  4025  		}
  4026  		return ms
  4027  	}
  4028  	return mi.MessageOf(x)
  4029  }
  4030  
  4031  // Deprecated: Use ResultDBInfo.ProtoReflect.Descriptor instead.
  4032  func (*ResultDBInfo) Descriptor() ([]byte, []int) {
  4033  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP(), []int{34}
  4034  }
  4035  
  4036  func (x *ResultDBInfo) GetHostname() string {
  4037  	if x != nil {
  4038  		return x.Hostname
  4039  	}
  4040  	return ""
  4041  }
  4042  
  4043  func (x *ResultDBInfo) GetInvocation() string {
  4044  	if x != nil {
  4045  		return x.Invocation
  4046  	}
  4047  	return ""
  4048  }
  4049  
  4050  var File_go_chromium_org_luci_swarming_proto_api_swarming_proto protoreflect.FileDescriptor
  4051  
  4052  var file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDesc = []byte{
  4053  	0x0a, 0x36, 0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72,
  4054  	0x67, 0x2f, 0x6c, 0x75, 0x63, 0x69, 0x2f, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2f,
  4055  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69,
  4056  	0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69,
  4057  	0x6e, 0x67, 0x2e, 0x76, 0x31, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
  4058  	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e,
  4059  	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72,
  4060  	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72,
  4061  	0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74,
  4062  	0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70,
  4063  	0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd7, 0x01, 0x0a, 0x10, 0x42, 0x6f, 0x74, 0x45, 0x76, 0x65, 0x6e,
  4064  	0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x6f, 0x74,
  4065  	0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x6f, 0x74, 0x49, 0x64,
  4066  	0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20,
  4067  	0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a,
  4068  	0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
  4069  	0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x0a,
  4070  	0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
  4071  	0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
  4072  	0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73, 0x74,
  4073  	0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74,
  4074  	0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  4075  	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
  4076  	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x6a,
  4077  	0x0a, 0x11, 0x42, 0x6f, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f,
  4078  	0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20,
  4079  	0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76,
  4080  	0x31, 0x2e, 0x42, 0x6f, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e,
  4081  	0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f,
  4082  	0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78,
  4083  	0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x34, 0x0a, 0x0a, 0x53, 0x74,
  4084  	0x72, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
  4085  	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
  4086  	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
  4087  	0x22, 0x3a, 0x0a, 0x0e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61,
  4088  	0x69, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
  4089  	0x03, 0x6b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x02,
  4090  	0x20, 0x03, 0x28, 0x09, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0xb3, 0x02, 0x0a,
  4091  	0x03, 0x42, 0x6f, 0x74, 0x12, 0x15, 0x0a, 0x06, 0x62, 0x6f, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01,
  4092  	0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x62, 0x6f, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73,
  4093  	0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
  4094  	0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x6f,
  4095  	0x6f, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x6f, 0x6f, 0x6c, 0x73,
  4096  	0x12, 0x32, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e,
  4097  	0x32, 0x1a, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x42,
  4098  	0x6f, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x73, 0x74,
  4099  	0x61, 0x74, 0x75, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x6d,
  4100  	0x73, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
  4101  	0x4d, 0x73, 0x67, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74,
  4102  	0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x75,
  4103  	0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x0a, 0x64,
  4104  	0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32,
  4105  	0x1b, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74,
  4106  	0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0a, 0x64, 0x69,
  4107  	0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x28, 0x0a, 0x04, 0x69, 0x6e, 0x66, 0x6f,
  4108  	0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e,
  4109  	0x67, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x69, 0x6e,
  4110  	0x66, 0x6f, 0x22, 0xf1, 0x04, 0x0a, 0x07, 0x42, 0x6f, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x3b,
  4111  	0x0a, 0x0c, 0x73, 0x75, 0x70, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x18, 0x01,
  4112  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
  4113  	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0c, 0x73,
  4114  	0x75, 0x70, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x76,
  4115  	0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65,
  4116  	0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61,
  4117  	0x6c, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65,
  4118  	0x72, 0x6e, 0x61, 0x6c, 0x49, 0x70, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e,
  4119  	0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
  4120  	0x52, 0x0f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x41,
  4121  	0x73, 0x12, 0x32, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x05,
  4122  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e,
  4123  	0x76, 0x31, 0x2e, 0x43, 0x41, 0x53, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x08, 0x63, 0x61, 0x73,
  4124  	0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x4a, 0x0a, 0x12, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x63,
  4125  	0x61, 0x63, 0x68, 0x65, 0x73, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28,
  4126  	0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e,
  4127  	0x4e, 0x61, 0x6d, 0x65, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52,
  4128  	0x10, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74,
  4129  	0x73, 0x12, 0x5d, 0x0a, 0x19, 0x63, 0x69, 0x70, 0x64, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67,
  4130  	0x65, 0x73, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x07,
  4131  	0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e,
  4132  	0x76, 0x31, 0x2e, 0x43, 0x49, 0x50, 0x44, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x43, 0x61,
  4133  	0x63, 0x68, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x16, 0x63, 0x69, 0x70, 0x64, 0x50, 0x61,
  4134  	0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73,
  4135  	0x12, 0x2f, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b,
  4136  	0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x68, 0x79,
  4137  	0x73, 0x69, 0x63, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52, 0x04, 0x68, 0x6f, 0x73,
  4138  	0x74, 0x12, 0x35, 0x0a, 0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03,
  4139  	0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31,
  4140  	0x2e, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x52,
  4141  	0x07, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x3c, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74,
  4142  	0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
  4143  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
  4144  	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x6c, 0x61, 0x73, 0x74,
  4145  	0x53, 0x65, 0x65, 0x6e, 0x54, 0x73, 0x12, 0x3e, 0x0a, 0x0d, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x73,
  4146  	0x69, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
  4147  	0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e,
  4148  	0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x69, 0x64, 0x6c, 0x65, 0x53,
  4149  	0x69, 0x6e, 0x63, 0x65, 0x54, 0x73, 0x22, 0x71, 0x0a, 0x0e, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63,
  4150  	0x61, 0x6c, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65,
  4151  	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0c,
  4152  	0x73, 0x75, 0x70, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01,
  4153  	0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74,
  4154  	0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0c, 0x73, 0x75, 0x70,
  4155  	0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18,
  4156  	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, 0x22, 0x7e, 0x0a, 0x08, 0x43, 0x41, 0x53,
  4157  	0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x5f,
  4158  	0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6e, 0x75, 0x6d,
  4159  	0x62, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65,
  4160  	0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x3b, 0x0a, 0x0b,
  4161  	0x6f, 0x6c, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
  4162  	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  4163  	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x6f,
  4164  	0x6c, 0x64, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x79, 0x0a, 0x0f, 0x4e, 0x61, 0x6d,
  4165  	0x65, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x12, 0x0a, 0x04,
  4166  	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
  4167  	0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04,
  4168  	0x73, 0x69, 0x7a, 0x65, 0x12, 0x3e, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65,
  4169  	0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
  4170  	0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69,
  4171  	0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65,
  4172  	0x54, 0x69, 0x6d, 0x65, 0x22, 0x99, 0x01, 0x0a, 0x15, 0x43, 0x49, 0x50, 0x44, 0x50, 0x61, 0x63,
  4173  	0x6b, 0x61, 0x67, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x12,
  4174  	0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61,
  4175  	0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
  4176  	0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04,
  4177  	0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65,
  4178  	0x12, 0x3e, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x74, 0x69, 0x6d,
  4179  	0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  4180  	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74,
  4181  	0x61, 0x6d, 0x70, 0x52, 0x0b, 0x6c, 0x61, 0x73, 0x74, 0x55, 0x73, 0x65, 0x54, 0x69, 0x6d, 0x65,
  4182  	0x22, 0xb7, 0x01, 0x0a, 0x08, 0x42, 0x6f, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x39, 0x0a,
  4183  	0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
  4184  	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  4185  	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65,
  4186  	0x76, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x03, 0x62, 0x6f, 0x74, 0x18,
  4187  	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67,
  4188  	0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x74, 0x52, 0x03, 0x62, 0x6f, 0x74, 0x12, 0x2f, 0x0a, 0x05,
  4189  	0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x73, 0x77,
  4190  	0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x74, 0x45, 0x76, 0x65,
  4191  	0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a,
  4192  	0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
  4193  	0x52, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4d, 0x73, 0x67, 0x22, 0x57, 0x0a, 0x07, 0x43, 0x41,
  4194  	0x53, 0x54, 0x72, 0x65, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18,
  4195  	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a,
  4196  	0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64,
  4197  	0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61,
  4198  	0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70,
  4199  	0x61, 0x63, 0x65, 0x22, 0x3b, 0x0a, 0x06, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a,
  4200  	0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x61, 0x73,
  4201  	0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x69, 0x7a, 0x65, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18,
  4202  	0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x69, 0x7a, 0x65, 0x42, 0x79, 0x74, 0x65, 0x73,
  4203  	0x22, 0x5e, 0x0a, 0x0c, 0x43, 0x41, 0x53, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65,
  4204  	0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x73, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65,
  4205  	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61,
  4206  	0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20,
  4207  	0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76,
  4208  	0x31, 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x52, 0x06, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74,
  4209  	0x22, 0x67, 0x0a, 0x0b, 0x43, 0x49, 0x50, 0x44, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12,
  4210  	0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
  4211  	0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x4e, 0x61,
  4212  	0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20,
  4213  	0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09,
  4214  	0x64, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
  4215  	0x08, 0x64, 0x65, 0x73, 0x74, 0x50, 0x61, 0x74, 0x68, 0x22, 0x42, 0x0a, 0x0f, 0x4e, 0x61, 0x6d,
  4216  	0x65, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x12, 0x0a, 0x04,
  4217  	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65,
  4218  	0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20,
  4219  	0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x73, 0x74, 0x50, 0x61, 0x74, 0x68, 0x22, 0xbd, 0x02,
  4220  	0x0a, 0x0b, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a,
  4221  	0x0e, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18,
  4222  	0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x50, 0x72, 0x69, 0x6f,
  4223  	0x72, 0x69, 0x74, 0x79, 0x12, 0x53, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x6d,
  4224  	0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28,
  4225  	0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e,
  4226  	0x74, 0x61, 0x69, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e,
  4227  	0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69,
  4228  	0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x6c, 0x69, 0x6d,
  4229  	0x69, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01,
  4230  	0x28, 0x03, 0x52, 0x0e, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73,
  4231  	0x65, 0x73, 0x12, 0x3f, 0x0a, 0x1c, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x6f, 0x74, 0x61,
  4232  	0x6c, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x6d, 0x6f,
  4233  	0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x54,
  4234  	0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x6d,
  4235  	0x6f, 0x72, 0x79, 0x22, 0x48, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x6d, 0x65,
  4236  	0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x4f, 0x54, 0x5f, 0x53, 0x50,
  4237  	0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e,
  4238  	0x45, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x55, 0x54, 0x4f, 0x10, 0x02, 0x12, 0x0e, 0x0a,
  4239  	0x0a, 0x4a, 0x4f, 0x42, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x10, 0x03, 0x22, 0xaa, 0x07,
  4240  	0x0a, 0x0e, 0x54, 0x61, 0x73, 0x6b, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73,
  4241  	0x12, 0x33, 0x0a, 0x0a, 0x63, 0x61, 0x73, 0x5f, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x01,
  4242  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e,
  4243  	0x76, 0x31, 0x2e, 0x43, 0x41, 0x53, 0x54, 0x72, 0x65, 0x65, 0x52, 0x09, 0x63, 0x61, 0x73, 0x49,
  4244  	0x6e, 0x70, 0x75, 0x74, 0x73, 0x12, 0x3f, 0x0a, 0x0e, 0x63, 0x61, 0x73, 0x5f, 0x69, 0x6e, 0x70,
  4245  	0x75, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
  4246  	0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x41, 0x53, 0x52,
  4247  	0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0c, 0x63, 0x61, 0x73, 0x49, 0x6e, 0x70,
  4248  	0x75, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x63, 0x69, 0x70, 0x64, 0x5f, 0x69,
  4249  	0x6e, 0x70, 0x75, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x77,
  4250  	0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x49, 0x50, 0x44, 0x50, 0x61,
  4251  	0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x0a, 0x63, 0x69, 0x70, 0x64, 0x49, 0x6e, 0x70, 0x75, 0x74,
  4252  	0x73, 0x12, 0x3f, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65,
  4253  	0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69,
  4254  	0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65,
  4255  	0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x43, 0x61, 0x63, 0x68,
  4256  	0x65, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x18, 0x04, 0x20,
  4257  	0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x21, 0x0a, 0x0c,
  4258  	0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x77, 0x64, 0x18, 0x05, 0x20, 0x01,
  4259  	0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x43, 0x77, 0x64, 0x12,
  4260  	0x1d, 0x0a, 0x0a, 0x65, 0x78, 0x74, 0x72, 0x61, 0x5f, 0x61, 0x72, 0x67, 0x73, 0x18, 0x06, 0x20,
  4261  	0x03, 0x28, 0x09, 0x52, 0x09, 0x65, 0x78, 0x74, 0x72, 0x61, 0x41, 0x72, 0x67, 0x73, 0x12, 0x21,
  4262  	0x0a, 0x0c, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x07,
  4263  	0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65,
  4264  	0x73, 0x12, 0x28, 0x0a, 0x10, 0x68, 0x61, 0x73, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f,
  4265  	0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x68, 0x61, 0x73,
  4266  	0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3b, 0x0a, 0x0a, 0x64,
  4267  	0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32,
  4268  	0x1b, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74,
  4269  	0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0a, 0x64, 0x69,
  4270  	0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x29, 0x0a, 0x03, 0x65, 0x6e, 0x76, 0x18,
  4271  	0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67,
  4272  	0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x69, 0x72, 0x52, 0x03,
  4273  	0x65, 0x6e, 0x76, 0x12, 0x38, 0x0a, 0x09, 0x65, 0x6e, 0x76, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73,
  4274  	0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e,
  4275  	0x67, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x50,
  4276  	0x61, 0x69, 0x72, 0x52, 0x08, 0x65, 0x6e, 0x76, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x3a, 0x0a,
  4277  	0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0c, 0x20, 0x01,
  4278  	0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31,
  4279  	0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x63, 0x6f,
  4280  	0x6e, 0x74, 0x61, 0x69, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x46, 0x0a, 0x11, 0x65, 0x78, 0x65,
  4281  	0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x0d,
  4282  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
  4283  	0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
  4284  	0x10, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75,
  4285  	0x74, 0x12, 0x38, 0x0a, 0x0a, 0x69, 0x6f, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18,
  4286  	0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
  4287  	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  4288  	0x52, 0x09, 0x69, 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x3c, 0x0a, 0x0c, 0x67,
  4289  	0x72, 0x61, 0x63, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x0f, 0x20, 0x01, 0x28,
  4290  	0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  4291  	0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x67, 0x72,
  4292  	0x61, 0x63, 0x65, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65,
  4293  	0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69,
  4294  	0x64, 0x65, 0x6d, 0x70, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6f, 0x75, 0x74,
  4295  	0x70, 0x75, 0x74, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x75, 0x74, 0x70,
  4296  	0x75, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x13, 0x20, 0x01, 0x28,
  4297  	0x0e, 0x32, 0x11, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e,
  4298  	0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0xd8, 0x01, 0x0a, 0x09, 0x54,
  4299  	0x61, 0x73, 0x6b, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x12, 0x3b, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70,
  4300  	0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73,
  4301  	0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x50,
  4302  	0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65,
  4303  	0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74,
  4304  	0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  4305  	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61,
  4306  	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  4307  	0x12, 0x2a, 0x0a, 0x11, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x63, 0x61, 0x70,
  4308  	0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x77, 0x61, 0x69,
  4309  	0x74, 0x46, 0x6f, 0x72, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0f,
  4310  	0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x5f, 0x68, 0x61, 0x73, 0x68, 0x18,
  4311  	0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65,
  4312  	0x73, 0x48, 0x61, 0x73, 0x68, 0x22, 0xaa, 0x05, 0x0a, 0x0b, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65,
  4313  	0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x37, 0x0a, 0x0b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x6c,
  4314  	0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x77, 0x61,
  4315  	0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x6c, 0x69,
  4316  	0x63, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x73, 0x12, 0x1a,
  4317  	0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
  4318  	0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65,
  4319  	0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20,
  4320  	0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f,
  4321  	0x75, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69,
  4322  	0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
  4323  	0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73,
  4324  	0x74, 0x61, 0x6d, 0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65,
  4325  	0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
  4326  	0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x06, 0x20, 0x03,
  4327  	0x28, 0x09, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72,
  4328  	0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d,
  4329  	0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x18, 0x0d, 0x20,
  4330  	0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74,
  4331  	0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x18, 0x0e, 0x20, 0x01, 0x28,
  4332  	0x09, 0x52, 0x05, 0x72, 0x65, 0x61, 0x6c, 0x6d, 0x12, 0x34, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x75,
  4333  	0x6c, 0x74, 0x64, 0x62, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x77, 0x61,
  4334  	0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x44,
  4335  	0x42, 0x43, 0x66, 0x67, 0x52, 0x08, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x64, 0x62, 0x12, 0x17,
  4336  	0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
  4337  	0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x65, 0x6e,
  4338  	0x74, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52,
  4339  	0x0c, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x22, 0x0a,
  4340  	0x0d, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x0b,
  4341  	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x52, 0x75, 0x6e, 0x49,
  4342  	0x64, 0x12, 0x20, 0x0a, 0x0c, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69,
  4343  	0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f, 0x6f, 0x74, 0x54, 0x61, 0x73,
  4344  	0x6b, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x72, 0x75, 0x6e, 0x5f,
  4345  	0x69, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x6f, 0x6f, 0x74, 0x52, 0x75,
  4346  	0x6e, 0x49, 0x64, 0x12, 0x44, 0x0a, 0x13, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x5f, 0x6e, 0x6f,
  4347  	0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
  4348  	0x32, 0x13, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x50,
  4349  	0x75, 0x62, 0x53, 0x75, 0x62, 0x52, 0x12, 0x70, 0x75, 0x62, 0x73, 0x75, 0x62, 0x4e, 0x6f, 0x74,
  4350  	0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x47, 0x0a, 0x12, 0x62, 0x6f, 0x74,
  4351  	0x5f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x18,
  4352  	0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
  4353  	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  4354  	0x52, 0x10, 0x62, 0x6f, 0x74, 0x50, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e,
  4355  	0x63, 0x65, 0x22, 0x59, 0x0a, 0x06, 0x50, 0x75, 0x62, 0x53, 0x75, 0x62, 0x12, 0x14, 0x0a, 0x05,
  4356  	0x74, 0x6f, 0x70, 0x69, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x70,
  4357  	0x69, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e,
  4358  	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, 0x68, 0x54, 0x6f, 0x6b, 0x65,
  4359  	0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20,
  4360  	0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb7, 0x08,
  4361  	0x0a, 0x0a, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x32, 0x0a, 0x07,
  4362  	0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e,
  4363  	0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b,
  4364  	0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
  4365  	0x12, 0x3b, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18,
  4366  	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
  4367  	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d,
  4368  	0x70, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x39, 0x0a,
  4369  	0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
  4370  	0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
  4371  	0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x73,
  4372  	0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x3d, 0x0a, 0x0c, 0x61, 0x62, 0x61, 0x6e,
  4373  	0x64, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
  4374  	0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66,
  4375  	0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x61, 0x62, 0x61, 0x6e,
  4376  	0x64, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74,
  4377  	0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  4378  	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65,
  4379  	0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35,
  4380  	0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
  4381  	0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
  4382  	0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72,
  4383  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07,
  4384  	0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e,
  4385  	0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74,
  4386  	0x61, 0x74, 0x65, 0x12, 0x45, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x74,
  4387  	0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x73, 0x77,
  4388  	0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74,
  4389  	0x61, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x52, 0x0d, 0x73, 0x74, 0x61,
  4390  	0x74, 0x65, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x72,
  4391  	0x79, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
  4392  	0x74, 0x72, 0x79, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x75, 0x72,
  4393  	0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x18,
  4394  	0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x61,
  4395  	0x73, 0x6b, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x03, 0x62, 0x6f, 0x74, 0x18, 0x0b,
  4396  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e,
  4397  	0x76, 0x31, 0x2e, 0x42, 0x6f, 0x74, 0x52, 0x03, 0x62, 0x6f, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73,
  4398  	0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x0c,
  4399  	0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x56, 0x65, 0x72, 0x73,
  4400  	0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e,
  4401  	0x5f, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52,
  4402  	0x0f, 0x63, 0x68, 0x69, 0x6c, 0x64, 0x72, 0x65, 0x6e, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73,
  4403  	0x12, 0x21, 0x0a, 0x0c, 0x64, 0x65, 0x64, 0x75, 0x70, 0x65, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6d,
  4404  	0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x64, 0x75, 0x70, 0x65, 0x64, 0x46,
  4405  	0x72, 0x6f, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x0f,
  4406  	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x15, 0x0a, 0x06,
  4407  	0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x72, 0x75,
  4408  	0x6e, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x09, 0x63, 0x69, 0x70, 0x64, 0x5f, 0x70, 0x69, 0x6e, 0x73,
  4409  	0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e,
  4410  	0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x49, 0x50, 0x44, 0x50, 0x69, 0x6e, 0x73, 0x52, 0x08, 0x63,
  4411  	0x69, 0x70, 0x64, 0x50, 0x69, 0x6e, 0x73, 0x12, 0x3e, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x66, 0x6f,
  4412  	0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73,
  4413  	0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x50,
  4414  	0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x66,
  4415  	0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x78, 0x69, 0x74, 0x5f,
  4416  	0x63, 0x6f, 0x64, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x12, 0x52, 0x08, 0x65, 0x78, 0x69, 0x74,
  4417  	0x43, 0x6f, 0x64, 0x65, 0x12, 0x2e, 0x0a, 0x07, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x73, 0x18,
  4418  	0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67,
  4419  	0x2e, 0x76, 0x31, 0x2e, 0x43, 0x41, 0x53, 0x54, 0x72, 0x65, 0x65, 0x52, 0x07, 0x6f, 0x75, 0x74,
  4420  	0x70, 0x75, 0x74, 0x73, 0x12, 0x41, 0x0a, 0x0f, 0x63, 0x61, 0x73, 0x5f, 0x6f, 0x75, 0x74, 0x70,
  4421  	0x75, 0x74, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e,
  4422  	0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x41, 0x53, 0x52,
  4423  	0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x0d, 0x63, 0x61, 0x73, 0x4f, 0x75, 0x74,
  4424  	0x70, 0x75, 0x74, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x75, 0x6c,
  4425  	0x74, 0x64, 0x62, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19,
  4426  	0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73,
  4427  	0x75, 0x6c, 0x74, 0x44, 0x42, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x72, 0x65, 0x73, 0x75, 0x6c,
  4428  	0x74, 0x64, 0x62, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x99, 0x01, 0x0a, 0x08, 0x43, 0x49, 0x50, 0x44,
  4429  	0x50, 0x69, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01,
  4430  	0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0e,
  4431  	0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x18, 0x02,
  4432  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e,
  4433  	0x76, 0x31, 0x2e, 0x43, 0x49, 0x50, 0x44, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x0d,
  4434  	0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x34, 0x0a,
  4435  	0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
  4436  	0x18, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x49,
  4437  	0x50, 0x44, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61,
  4438  	0x67, 0x65, 0x73, 0x22, 0xb9, 0x03, 0x0a, 0x0f, 0x54, 0x61, 0x73, 0x6b, 0x50, 0x65, 0x72, 0x66,
  4439  	0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x5f,
  4440  	0x75, 0x73, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x63, 0x6f, 0x73, 0x74, 0x55,
  4441  	0x73, 0x64, 0x12, 0x40, 0x0a, 0x0e, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6f, 0x76, 0x65, 0x72,
  4442  	0x68, 0x65, 0x61, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f,
  4443  	0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72,
  4444  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x76, 0x65, 0x72,
  4445  	0x68, 0x65, 0x61, 0x64, 0x12, 0x40, 0x0a, 0x0e, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x6f, 0x76,
  4446  	0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
  4447  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,
  4448  	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x4f, 0x76,
  4449  	0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x12, 0x34, 0x0a, 0x05, 0x73, 0x65, 0x74, 0x75, 0x70, 0x18,
  4450  	0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67,
  4451  	0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64,
  4452  	0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x65, 0x74, 0x75, 0x70, 0x12, 0x3a, 0x0a, 0x08,
  4453  	0x74, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e,
  4454  	0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73,
  4455  	0x6b, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x08,
  4456  	0x74, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x45, 0x0a, 0x0e, 0x73, 0x65, 0x74, 0x75,
  4457  	0x70, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b,
  4458  	0x32, 0x1e, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54,
  4459  	0x61, 0x73, 0x6b, 0x53, 0x65, 0x74, 0x75, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64,
  4460  	0x52, 0x0d, 0x73, 0x65, 0x74, 0x75, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x12,
  4461  	0x4e, 0x0a, 0x11, 0x74, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x6f, 0x76, 0x65, 0x72,
  4462  	0x68, 0x65, 0x61, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x77, 0x61,
  4463  	0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x54, 0x65, 0x61,
  4464  	0x72, 0x64, 0x6f, 0x77, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x52, 0x10, 0x74,
  4465  	0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x22,
  4466  	0xa6, 0x02, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x65, 0x74, 0x75, 0x70, 0x4f, 0x76, 0x65,
  4467  	0x72, 0x68, 0x65, 0x61, 0x64, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
  4468  	0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
  4469  	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69,
  4470  	0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x0a,
  4471  	0x63, 0x61, 0x63, 0x68, 0x65, 0x5f, 0x74, 0x72, 0x69, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
  4472  	0x32, 0x1e, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43,
  4473  	0x61, 0x63, 0x68, 0x65, 0x54, 0x72, 0x69, 0x6d, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64,
  4474  	0x52, 0x09, 0x63, 0x61, 0x63, 0x68, 0x65, 0x54, 0x72, 0x69, 0x6d, 0x12, 0x2d, 0x0a, 0x04, 0x63,
  4475  	0x69, 0x70, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x77, 0x61, 0x72,
  4476  	0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x49, 0x50, 0x44, 0x4f, 0x76, 0x65, 0x72,
  4477  	0x68, 0x65, 0x61, 0x64, 0x52, 0x04, 0x63, 0x69, 0x70, 0x64, 0x12, 0x40, 0x0a, 0x0b, 0x6e, 0x61,
  4478  	0x6d, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x63, 0x68, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
  4479  	0x1f, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61,
  4480  	0x6d, 0x65, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64,
  4481  	0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x2a, 0x0a, 0x03,
  4482  	0x63, 0x61, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x77, 0x61, 0x72,
  4483  	0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x41, 0x53, 0x4f, 0x76, 0x65, 0x72, 0x68,
  4484  	0x65, 0x61, 0x64, 0x52, 0x03, 0x63, 0x61, 0x73, 0x22, 0xf3, 0x01, 0x0a, 0x14, 0x54, 0x61, 0x73,
  4485  	0x6b, 0x54, 0x65, 0x61, 0x72, 0x64, 0x6f, 0x77, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61,
  4486  	0x64, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
  4487  	0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f,
  4488  	0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08,
  4489  	0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2a, 0x0a, 0x03, 0x63, 0x61, 0x73, 0x18,
  4490  	0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67,
  4491  	0x2e, 0x76, 0x31, 0x2e, 0x43, 0x41, 0x53, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x52,
  4492  	0x03, 0x63, 0x61, 0x73, 0x12, 0x40, 0x0a, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x64, 0x5f, 0x63, 0x61,
  4493  	0x63, 0x68, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x77, 0x61, 0x72,
  4494  	0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x43, 0x61, 0x63,
  4495  	0x68, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65,
  4496  	0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x75,
  4497  	0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69,
  4498  	0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x4f, 0x76, 0x65,
  4499  	0x72, 0x68, 0x65, 0x61, 0x64, 0x52, 0x07, 0x63, 0x6c, 0x65, 0x61, 0x6e, 0x75, 0x70, 0x22, 0x4a,
  4500  	0x0a, 0x11, 0x43, 0x61, 0x63, 0x68, 0x65, 0x54, 0x72, 0x69, 0x6d, 0x4f, 0x76, 0x65, 0x72, 0x68,
  4501  	0x65, 0x61, 0x64, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18,
  4502  	0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70,
  4503  	0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e,
  4504  	0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x45, 0x0a, 0x0c, 0x43, 0x49,
  4505  	0x50, 0x44, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75,
  4506  	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
  4507  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,
  4508  	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
  4509  	0x6e, 0x22, 0x4b, 0x0a, 0x12, 0x4e, 0x61, 0x6d, 0x65, 0x64, 0x43, 0x61, 0x63, 0x68, 0x65, 0x4f,
  4510  	0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74,
  4511  	0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  4512  	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61,
  4513  	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa6,
  4514  	0x01, 0x0a, 0x0b, 0x43, 0x41, 0x53, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x12, 0x35,
  4515  	0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
  4516  	0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
  4517  	0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72,
  4518  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x04, 0x63, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20,
  4519  	0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76,
  4520  	0x31, 0x2e, 0x43, 0x41, 0x53, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74,
  4521  	0x73, 0x52, 0x04, 0x63, 0x6f, 0x6c, 0x64, 0x12, 0x2e, 0x0a, 0x03, 0x68, 0x6f, 0x74, 0x18, 0x03,
  4522  	0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e,
  4523  	0x76, 0x31, 0x2e, 0x43, 0x41, 0x53, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x53, 0x74, 0x61,
  4524  	0x74, 0x73, 0x52, 0x03, 0x68, 0x6f, 0x74, 0x22, 0x48, 0x0a, 0x0f, 0x43, 0x6c, 0x65, 0x61, 0x6e,
  4525  	0x75, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75,
  4526  	0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
  4527  	0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44,
  4528  	0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
  4529  	0x6e, 0x22, 0xac, 0x01, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65,
  4530  	0x61, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74,
  4531  	0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67,
  4532  	0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61,
  4533  	0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30,
  4534  	0x0a, 0x04, 0x63, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73,
  4535  	0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x41, 0x53, 0x45, 0x6e,
  4536  	0x74, 0x72, 0x69, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x04, 0x63, 0x6f, 0x6c, 0x64,
  4537  	0x12, 0x2e, 0x0a, 0x03, 0x68, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e,
  4538  	0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x41, 0x53, 0x45,
  4539  	0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x03, 0x68, 0x6f, 0x74,
  4540  	0x22, 0x70, 0x0a, 0x0f, 0x43, 0x41, 0x53, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x53, 0x74,
  4541  	0x61, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73,
  4542  	0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x49, 0x74, 0x65, 0x6d, 0x73,
  4543  	0x12, 0x2a, 0x0a, 0x11, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x5f,
  4544  	0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x74, 0x6f, 0x74,
  4545  	0x61, 0x6c, 0x42, 0x79, 0x74, 0x65, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x14, 0x0a, 0x05,
  4546  	0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x69, 0x74, 0x65,
  4547  	0x6d, 0x73, 0x22, 0x25, 0x0a, 0x0b, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x44, 0x42, 0x43, 0x66,
  4548  	0x67, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
  4549  	0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x4a, 0x0a, 0x0c, 0x52, 0x65, 0x73,
  4550  	0x75, 0x6c, 0x74, 0x44, 0x42, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73,
  4551  	0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73,
  4552  	0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63, 0x61, 0x74,
  4553  	0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x76, 0x6f, 0x63,
  4554  	0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0xdf, 0x01, 0x0a, 0x0d, 0x42, 0x6f, 0x74, 0x53, 0x74, 0x61,
  4555  	0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x42, 0x4f, 0x54, 0x5f, 0x53,
  4556  	0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45,
  4557  	0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x01,
  4558  	0x12, 0x19, 0x0a, 0x15, 0x51, 0x55, 0x41, 0x52, 0x41, 0x4e, 0x54, 0x49, 0x4e, 0x45, 0x44, 0x5f,
  4559  	0x42, 0x59, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x51,
  4560  	0x55, 0x41, 0x52, 0x41, 0x4e, 0x54, 0x49, 0x4e, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x5f, 0x42, 0x4f,
  4561  	0x54, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f,
  4562  	0x4d, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x4e, 0x41, 0x4e, 0x43, 0x45, 0x5f, 0x45, 0x58, 0x54, 0x45,
  4563  	0x52, 0x4e, 0x41, 0x4c, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45,
  4564  	0x41, 0x44, 0x5f, 0x42, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x10,
  4565  	0x05, 0x12, 0x12, 0x0a, 0x0e, 0x48, 0x4f, 0x53, 0x54, 0x5f, 0x52, 0x45, 0x42, 0x4f, 0x4f, 0x54,
  4566  	0x49, 0x4e, 0x47, 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, 0x42, 0x55, 0x53, 0x59, 0x10, 0x07, 0x12,
  4567  	0x0c, 0x0a, 0x08, 0x52, 0x45, 0x53, 0x45, 0x52, 0x56, 0x45, 0x44, 0x10, 0x08, 0x12, 0x08, 0x0a,
  4568  	0x04, 0x49, 0x44, 0x4c, 0x45, 0x10, 0x09, 0x2a, 0x8f, 0x03, 0x0a, 0x0c, 0x42, 0x6f, 0x74, 0x45,
  4569  	0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x1a, 0x42, 0x4f, 0x54, 0x5f,
  4570  	0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45,
  4571  	0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x42, 0x4f, 0x54, 0x5f,
  4572  	0x4e, 0x45, 0x57, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x01, 0x12, 0x18, 0x0a,
  4573  	0x14, 0x42, 0x4f, 0x54, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x46, 0x41,
  4574  	0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x4f, 0x54, 0x5f, 0x48,
  4575  	0x4f, 0x4f, 0x4b, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x42,
  4576  	0x4f, 0x54, 0x5f, 0x48, 0x4f, 0x4f, 0x4b, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x04, 0x12, 0x16, 0x0a,
  4577  	0x12, 0x42, 0x4f, 0x54, 0x5f, 0x52, 0x45, 0x42, 0x4f, 0x4f, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x48,
  4578  	0x4f, 0x53, 0x54, 0x10, 0x05, 0x12, 0x10, 0x0a, 0x0c, 0x42, 0x4f, 0x54, 0x5f, 0x53, 0x48, 0x55,
  4579  	0x54, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x06, 0x12, 0x0f, 0x0a, 0x0b, 0x42, 0x4f, 0x54, 0x5f, 0x44,
  4580  	0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x42, 0x4f, 0x54, 0x5f,
  4581  	0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x10, 0x08, 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x4e, 0x53,
  4582  	0x54, 0x52, 0x55, 0x43, 0x54, 0x5f, 0x49, 0x44, 0x4c, 0x45, 0x10, 0x0a, 0x12, 0x17, 0x0a, 0x13,
  4583  	0x49, 0x4e, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x54,
  4584  	0x41, 0x53, 0x4b, 0x10, 0x0b, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x53, 0x54, 0x52, 0x55, 0x43,
  4585  	0x54, 0x5f, 0x52, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x5f, 0x42, 0x4f, 0x54, 0x10, 0x0c, 0x12,
  4586  	0x1c, 0x0a, 0x18, 0x49, 0x4e, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x5f, 0x55, 0x50, 0x44, 0x41,
  4587  	0x54, 0x45, 0x5f, 0x42, 0x4f, 0x54, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x10, 0x0d, 0x12, 0x1a, 0x0a,
  4588  	0x16, 0x49, 0x4e, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x5f, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e,
  4589  	0x41, 0x54, 0x45, 0x5f, 0x42, 0x4f, 0x54, 0x10, 0x0e, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x41, 0x53,
  4590  	0x4b, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x14, 0x12, 0x19, 0x0a,
  4591  	0x15, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x46,
  4592  	0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x15, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x41, 0x53, 0x4b,
  4593  	0x5f, 0x4b, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x16, 0x2a, 0x43, 0x0a, 0x04, 0x55, 0x73, 0x65,
  4594  	0x72, 0x12, 0x14, 0x0a, 0x10, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43,
  4595  	0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x55, 0x53, 0x45, 0x52, 0x5f,
  4596  	0x53, 0x57, 0x41, 0x52, 0x4d, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x55, 0x53,
  4597  	0x45, 0x52, 0x5f, 0x54, 0x45, 0x4d, 0x50, 0x4f, 0x52, 0x41, 0x52, 0x59, 0x10, 0x02, 0x2a, 0xd0,
  4598  	0x01, 0x0a, 0x11, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x61, 0x74, 0x65,
  4599  	0x67, 0x6f, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x1f, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x53, 0x54, 0x41,
  4600  	0x54, 0x45, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50,
  4601  	0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x41, 0x53,
  4602  	0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4d, 0x41, 0x53, 0x4b, 0x10, 0x0f, 0x12, 0x14,
  4603  	0x0a, 0x10, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49,
  4604  	0x4e, 0x47, 0x10, 0x10, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59,
  4605  	0x5f, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x20, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x41,
  4606  	0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x49, 0x45, 0x4e, 0x54,
  4607  	0x5f, 0x44, 0x4f, 0x4e, 0x45, 0x10, 0x30, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x41, 0x54, 0x45, 0x47,
  4608  	0x4f, 0x52, 0x59, 0x5f, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x4f,
  4609  	0x4e, 0x45, 0x10, 0x40, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59,
  4610  	0x5f, 0x4e, 0x45, 0x56, 0x45, 0x52, 0x5f, 0x52, 0x41, 0x4e, 0x5f, 0x44, 0x4f, 0x4e, 0x45, 0x10,
  4611  	0x50, 0x2a, 0xe3, 0x03, 0x0a, 0x09, 0x54, 0x61, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12,
  4612  	0x16, 0x0a, 0x12, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x49, 0x4e,
  4613  	0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x50, 0x45, 0x4e, 0x44, 0x49,
  4614  	0x4e, 0x47, 0x10, 0x10, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x5f,
  4615  	0x44, 0x45, 0x44, 0x55, 0x50, 0x49, 0x4e, 0x47, 0x10, 0x11, 0x12, 0x0b, 0x0a, 0x07, 0x52, 0x55,
  4616  	0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x20, 0x12, 0x1a, 0x0a, 0x16, 0x52, 0x55, 0x4e, 0x4e, 0x49,
  4617  	0x4e, 0x47, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x53, 0x45, 0x54, 0x55,
  4618  	0x50, 0x10, 0x21, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x55, 0x4e, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x4f,
  4619  	0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x54, 0x45, 0x41, 0x52, 0x44, 0x4f, 0x57, 0x4e,
  4620  	0x10, 0x22, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x45, 0x52, 0x4d, 0x49, 0x4e, 0x41, 0x54, 0x49, 0x4e,
  4621  	0x47, 0x10, 0x23, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x49, 0x4e,
  4622  	0x47, 0x10, 0x2f, 0x12, 0x18, 0x0a, 0x14, 0x52, 0x41, 0x4e, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52,
  4623  	0x4e, 0x41, 0x4c, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x30, 0x12, 0x0f, 0x0a,
  4624  	0x0b, 0x44, 0x55, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0x31, 0x12, 0x13,
  4625  	0x0a, 0x0f, 0x42, 0x4f, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x50, 0x50, 0x45, 0x41, 0x52, 0x45,
  4626  	0x44, 0x10, 0x32, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x52, 0x45, 0x45, 0x4d, 0x50, 0x54, 0x45, 0x44,
  4627  	0x10, 0x33, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10,
  4628  	0x40, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x49, 0x4d, 0x45, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x10, 0x41,
  4629  	0x12, 0x15, 0x0a, 0x11, 0x54, 0x49, 0x4d, 0x45, 0x44, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x53, 0x49,
  4630  	0x4c, 0x45, 0x4e, 0x43, 0x45, 0x10, 0x42, 0x12, 0x0a, 0x0a, 0x06, 0x4b, 0x49, 0x4c, 0x4c, 0x45,
  4631  	0x44, 0x10, 0x43, 0x12, 0x12, 0x0a, 0x0e, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4e, 0x47, 0x5f, 0x49,
  4632  	0x4e, 0x50, 0x55, 0x54, 0x53, 0x10, 0x44, 0x12, 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x44, 0x55, 0x50,
  4633  	0x45, 0x44, 0x10, 0x50, 0x12, 0x0b, 0x0a, 0x07, 0x45, 0x58, 0x50, 0x49, 0x52, 0x45, 0x44, 0x10,
  4634  	0x51, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x45, 0x44, 0x10, 0x52, 0x12,
  4635  	0x0f, 0x0a, 0x0b, 0x4e, 0x4f, 0x5f, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x53,
  4636  	0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x4f, 0x41, 0x44, 0x5f, 0x53, 0x48, 0x45, 0x44, 0x10, 0x54, 0x12,
  4637  	0x16, 0x0a, 0x12, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x45, 0x58, 0x48, 0x41,
  4638  	0x55, 0x53, 0x54, 0x45, 0x44, 0x10, 0x55, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x4b, 0x49, 0x50, 0x50,
  4639  	0x45, 0x44, 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x46, 0x41, 0x49, 0x4c,
  4640  	0x55, 0x52, 0x45, 0x10, 0x56, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f,
  4641  	0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x57, 0x32, 0x53, 0x0a, 0x06, 0x42, 0x6f, 0x74, 0x41, 0x50,
  4642  	0x49, 0x12, 0x49, 0x0a, 0x06, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1d, 0x2e, 0x73, 0x77,
  4643  	0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x74, 0x45, 0x76, 0x65,
  4644  	0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x77, 0x61,
  4645  	0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x6f, 0x74, 0x45, 0x76, 0x65, 0x6e,
  4646  	0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x2f, 0x5a, 0x2d,
  4647  	0x67, 0x6f, 0x2e, 0x63, 0x68, 0x72, 0x6f, 0x6d, 0x69, 0x75, 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x2f,
  4648  	0x6c, 0x75, 0x63, 0x69, 0x2f, 0x73, 0x77, 0x61, 0x72, 0x6d, 0x69, 0x6e, 0x67, 0x2f, 0x70, 0x72,
  4649  	0x6f, 0x74, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x3b, 0x61, 0x70, 0x69, 0x70, 0x62, 0x62, 0x06, 0x70,
  4650  	0x72, 0x6f, 0x74, 0x6f, 0x33,
  4651  }
  4652  
  4653  var (
  4654  	file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescOnce sync.Once
  4655  	file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescData = file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDesc
  4656  )
  4657  
  4658  func file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescGZIP() []byte {
  4659  	file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescOnce.Do(func() {
  4660  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescData = protoimpl.X.CompressGZIP(file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescData)
  4661  	})
  4662  	return file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDescData
  4663  }
  4664  
  4665  var file_go_chromium_org_luci_swarming_proto_api_swarming_proto_enumTypes = make([]protoimpl.EnumInfo, 6)
  4666  var file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes = make([]protoimpl.MessageInfo, 35)
  4667  var file_go_chromium_org_luci_swarming_proto_api_swarming_proto_goTypes = []interface{}{
  4668  	(BotStatusType)(0),               // 0: swarming.v1.BotStatusType
  4669  	(BotEventType)(0),                // 1: swarming.v1.BotEventType
  4670  	(User)(0),                        // 2: swarming.v1.User
  4671  	(TaskStateCategory)(0),           // 3: swarming.v1.TaskStateCategory
  4672  	(TaskState)(0),                   // 4: swarming.v1.TaskState
  4673  	(Containment_ContainmentType)(0), // 5: swarming.v1.Containment.ContainmentType
  4674  	(*BotEventsRequest)(nil),         // 6: swarming.v1.BotEventsRequest
  4675  	(*BotEventsResponse)(nil),        // 7: swarming.v1.BotEventsResponse
  4676  	(*StringPair)(nil),               // 8: swarming.v1.StringPair
  4677  	(*StringListPair)(nil),           // 9: swarming.v1.StringListPair
  4678  	(*Bot)(nil),                      // 10: swarming.v1.Bot
  4679  	(*BotInfo)(nil),                  // 11: swarming.v1.BotInfo
  4680  	(*PhysicalEntity)(nil),           // 12: swarming.v1.PhysicalEntity
  4681  	(*CASStats)(nil),                 // 13: swarming.v1.CASStats
  4682  	(*NamedCacheStats)(nil),          // 14: swarming.v1.NamedCacheStats
  4683  	(*CIPDPackageCacheStats)(nil),    // 15: swarming.v1.CIPDPackageCacheStats
  4684  	(*BotEvent)(nil),                 // 16: swarming.v1.BotEvent
  4685  	(*CASTree)(nil),                  // 17: swarming.v1.CASTree
  4686  	(*Digest)(nil),                   // 18: swarming.v1.Digest
  4687  	(*CASReference)(nil),             // 19: swarming.v1.CASReference
  4688  	(*CIPDPackage)(nil),              // 20: swarming.v1.CIPDPackage
  4689  	(*NamedCacheEntry)(nil),          // 21: swarming.v1.NamedCacheEntry
  4690  	(*Containment)(nil),              // 22: swarming.v1.Containment
  4691  	(*TaskProperties)(nil),           // 23: swarming.v1.TaskProperties
  4692  	(*TaskSlice)(nil),                // 24: swarming.v1.TaskSlice
  4693  	(*TaskRequest)(nil),              // 25: swarming.v1.TaskRequest
  4694  	(*PubSub)(nil),                   // 26: swarming.v1.PubSub
  4695  	(*TaskResult)(nil),               // 27: swarming.v1.TaskResult
  4696  	(*CIPDPins)(nil),                 // 28: swarming.v1.CIPDPins
  4697  	(*TaskPerformance)(nil),          // 29: swarming.v1.TaskPerformance
  4698  	(*TaskSetupOverhead)(nil),        // 30: swarming.v1.TaskSetupOverhead
  4699  	(*TaskTeardownOverhead)(nil),     // 31: swarming.v1.TaskTeardownOverhead
  4700  	(*CacheTrimOverhead)(nil),        // 32: swarming.v1.CacheTrimOverhead
  4701  	(*CIPDOverhead)(nil),             // 33: swarming.v1.CIPDOverhead
  4702  	(*NamedCacheOverhead)(nil),       // 34: swarming.v1.NamedCacheOverhead
  4703  	(*CASOverhead)(nil),              // 35: swarming.v1.CASOverhead
  4704  	(*CleanupOverhead)(nil),          // 36: swarming.v1.CleanupOverhead
  4705  	(*TaskOverheadStats)(nil),        // 37: swarming.v1.TaskOverheadStats
  4706  	(*CASEntriesStats)(nil),          // 38: swarming.v1.CASEntriesStats
  4707  	(*ResultDBCfg)(nil),              // 39: swarming.v1.ResultDBCfg
  4708  	(*ResultDBInfo)(nil),             // 40: swarming.v1.ResultDBInfo
  4709  	(*timestamppb.Timestamp)(nil),    // 41: google.protobuf.Timestamp
  4710  	(*structpb.Struct)(nil),          // 42: google.protobuf.Struct
  4711  	(*durationpb.Duration)(nil),      // 43: google.protobuf.Duration
  4712  }
  4713  var file_go_chromium_org_luci_swarming_proto_api_swarming_proto_depIdxs = []int32{
  4714  	41, // 0: swarming.v1.BotEventsRequest.start_time:type_name -> google.protobuf.Timestamp
  4715  	41, // 1: swarming.v1.BotEventsRequest.end_time:type_name -> google.protobuf.Timestamp
  4716  	16, // 2: swarming.v1.BotEventsResponse.events:type_name -> swarming.v1.BotEvent
  4717  	0,  // 3: swarming.v1.Bot.status:type_name -> swarming.v1.BotStatusType
  4718  	9,  // 4: swarming.v1.Bot.dimensions:type_name -> swarming.v1.StringListPair
  4719  	11, // 5: swarming.v1.Bot.info:type_name -> swarming.v1.BotInfo
  4720  	42, // 6: swarming.v1.BotInfo.supplemental:type_name -> google.protobuf.Struct
  4721  	13, // 7: swarming.v1.BotInfo.cas_stats:type_name -> swarming.v1.CASStats
  4722  	14, // 8: swarming.v1.BotInfo.named_caches_stats:type_name -> swarming.v1.NamedCacheStats
  4723  	15, // 9: swarming.v1.BotInfo.cipd_packages_cache_stats:type_name -> swarming.v1.CIPDPackageCacheStats
  4724  	12, // 10: swarming.v1.BotInfo.host:type_name -> swarming.v1.PhysicalEntity
  4725  	12, // 11: swarming.v1.BotInfo.devices:type_name -> swarming.v1.PhysicalEntity
  4726  	41, // 12: swarming.v1.BotInfo.last_seen_ts:type_name -> google.protobuf.Timestamp
  4727  	41, // 13: swarming.v1.BotInfo.idle_since_ts:type_name -> google.protobuf.Timestamp
  4728  	42, // 14: swarming.v1.PhysicalEntity.supplemental:type_name -> google.protobuf.Struct
  4729  	41, // 15: swarming.v1.CASStats.oldest_time:type_name -> google.protobuf.Timestamp
  4730  	41, // 16: swarming.v1.NamedCacheStats.last_use_time:type_name -> google.protobuf.Timestamp
  4731  	41, // 17: swarming.v1.CIPDPackageCacheStats.last_use_time:type_name -> google.protobuf.Timestamp
  4732  	41, // 18: swarming.v1.BotEvent.event_time:type_name -> google.protobuf.Timestamp
  4733  	10, // 19: swarming.v1.BotEvent.bot:type_name -> swarming.v1.Bot
  4734  	1,  // 20: swarming.v1.BotEvent.event:type_name -> swarming.v1.BotEventType
  4735  	18, // 21: swarming.v1.CASReference.digest:type_name -> swarming.v1.Digest
  4736  	5,  // 22: swarming.v1.Containment.containment_type:type_name -> swarming.v1.Containment.ContainmentType
  4737  	17, // 23: swarming.v1.TaskProperties.cas_inputs:type_name -> swarming.v1.CASTree
  4738  	19, // 24: swarming.v1.TaskProperties.cas_input_root:type_name -> swarming.v1.CASReference
  4739  	20, // 25: swarming.v1.TaskProperties.cipd_inputs:type_name -> swarming.v1.CIPDPackage
  4740  	21, // 26: swarming.v1.TaskProperties.named_caches:type_name -> swarming.v1.NamedCacheEntry
  4741  	9,  // 27: swarming.v1.TaskProperties.dimensions:type_name -> swarming.v1.StringListPair
  4742  	8,  // 28: swarming.v1.TaskProperties.env:type_name -> swarming.v1.StringPair
  4743  	9,  // 29: swarming.v1.TaskProperties.env_paths:type_name -> swarming.v1.StringListPair
  4744  	22, // 30: swarming.v1.TaskProperties.containment:type_name -> swarming.v1.Containment
  4745  	43, // 31: swarming.v1.TaskProperties.execution_timeout:type_name -> google.protobuf.Duration
  4746  	43, // 32: swarming.v1.TaskProperties.io_timeout:type_name -> google.protobuf.Duration
  4747  	43, // 33: swarming.v1.TaskProperties.grace_period:type_name -> google.protobuf.Duration
  4748  	2,  // 34: swarming.v1.TaskProperties.user:type_name -> swarming.v1.User
  4749  	23, // 35: swarming.v1.TaskSlice.properties:type_name -> swarming.v1.TaskProperties
  4750  	43, // 36: swarming.v1.TaskSlice.expiration:type_name -> google.protobuf.Duration
  4751  	24, // 37: swarming.v1.TaskRequest.task_slices:type_name -> swarming.v1.TaskSlice
  4752  	41, // 38: swarming.v1.TaskRequest.create_time:type_name -> google.protobuf.Timestamp
  4753  	39, // 39: swarming.v1.TaskRequest.resultdb:type_name -> swarming.v1.ResultDBCfg
  4754  	26, // 40: swarming.v1.TaskRequest.pubsub_notification:type_name -> swarming.v1.PubSub
  4755  	43, // 41: swarming.v1.TaskRequest.bot_ping_tolerance:type_name -> google.protobuf.Duration
  4756  	25, // 42: swarming.v1.TaskResult.request:type_name -> swarming.v1.TaskRequest
  4757  	41, // 43: swarming.v1.TaskResult.create_time:type_name -> google.protobuf.Timestamp
  4758  	41, // 44: swarming.v1.TaskResult.start_time:type_name -> google.protobuf.Timestamp
  4759  	41, // 45: swarming.v1.TaskResult.abandon_time:type_name -> google.protobuf.Timestamp
  4760  	41, // 46: swarming.v1.TaskResult.end_time:type_name -> google.protobuf.Timestamp
  4761  	43, // 47: swarming.v1.TaskResult.duration:type_name -> google.protobuf.Duration
  4762  	4,  // 48: swarming.v1.TaskResult.state:type_name -> swarming.v1.TaskState
  4763  	3,  // 49: swarming.v1.TaskResult.state_category:type_name -> swarming.v1.TaskStateCategory
  4764  	10, // 50: swarming.v1.TaskResult.bot:type_name -> swarming.v1.Bot
  4765  	28, // 51: swarming.v1.TaskResult.cipd_pins:type_name -> swarming.v1.CIPDPins
  4766  	29, // 52: swarming.v1.TaskResult.performance:type_name -> swarming.v1.TaskPerformance
  4767  	17, // 53: swarming.v1.TaskResult.outputs:type_name -> swarming.v1.CASTree
  4768  	19, // 54: swarming.v1.TaskResult.cas_output_root:type_name -> swarming.v1.CASReference
  4769  	40, // 55: swarming.v1.TaskResult.resultdb_info:type_name -> swarming.v1.ResultDBInfo
  4770  	20, // 56: swarming.v1.CIPDPins.client_package:type_name -> swarming.v1.CIPDPackage
  4771  	20, // 57: swarming.v1.CIPDPins.packages:type_name -> swarming.v1.CIPDPackage
  4772  	43, // 58: swarming.v1.TaskPerformance.total_overhead:type_name -> google.protobuf.Duration
  4773  	43, // 59: swarming.v1.TaskPerformance.other_overhead:type_name -> google.protobuf.Duration
  4774  	37, // 60: swarming.v1.TaskPerformance.setup:type_name -> swarming.v1.TaskOverheadStats
  4775  	37, // 61: swarming.v1.TaskPerformance.teardown:type_name -> swarming.v1.TaskOverheadStats
  4776  	30, // 62: swarming.v1.TaskPerformance.setup_overhead:type_name -> swarming.v1.TaskSetupOverhead
  4777  	31, // 63: swarming.v1.TaskPerformance.teardown_overhead:type_name -> swarming.v1.TaskTeardownOverhead
  4778  	43, // 64: swarming.v1.TaskSetupOverhead.duration:type_name -> google.protobuf.Duration
  4779  	32, // 65: swarming.v1.TaskSetupOverhead.cache_trim:type_name -> swarming.v1.CacheTrimOverhead
  4780  	33, // 66: swarming.v1.TaskSetupOverhead.cipd:type_name -> swarming.v1.CIPDOverhead
  4781  	34, // 67: swarming.v1.TaskSetupOverhead.named_cache:type_name -> swarming.v1.NamedCacheOverhead
  4782  	35, // 68: swarming.v1.TaskSetupOverhead.cas:type_name -> swarming.v1.CASOverhead
  4783  	43, // 69: swarming.v1.TaskTeardownOverhead.duration:type_name -> google.protobuf.Duration
  4784  	35, // 70: swarming.v1.TaskTeardownOverhead.cas:type_name -> swarming.v1.CASOverhead
  4785  	34, // 71: swarming.v1.TaskTeardownOverhead.named_cache:type_name -> swarming.v1.NamedCacheOverhead
  4786  	36, // 72: swarming.v1.TaskTeardownOverhead.cleanup:type_name -> swarming.v1.CleanupOverhead
  4787  	43, // 73: swarming.v1.CacheTrimOverhead.duration:type_name -> google.protobuf.Duration
  4788  	43, // 74: swarming.v1.CIPDOverhead.duration:type_name -> google.protobuf.Duration
  4789  	43, // 75: swarming.v1.NamedCacheOverhead.duration:type_name -> google.protobuf.Duration
  4790  	43, // 76: swarming.v1.CASOverhead.duration:type_name -> google.protobuf.Duration
  4791  	38, // 77: swarming.v1.CASOverhead.cold:type_name -> swarming.v1.CASEntriesStats
  4792  	38, // 78: swarming.v1.CASOverhead.hot:type_name -> swarming.v1.CASEntriesStats
  4793  	43, // 79: swarming.v1.CleanupOverhead.duration:type_name -> google.protobuf.Duration
  4794  	43, // 80: swarming.v1.TaskOverheadStats.duration:type_name -> google.protobuf.Duration
  4795  	38, // 81: swarming.v1.TaskOverheadStats.cold:type_name -> swarming.v1.CASEntriesStats
  4796  	38, // 82: swarming.v1.TaskOverheadStats.hot:type_name -> swarming.v1.CASEntriesStats
  4797  	6,  // 83: swarming.v1.BotAPI.Events:input_type -> swarming.v1.BotEventsRequest
  4798  	7,  // 84: swarming.v1.BotAPI.Events:output_type -> swarming.v1.BotEventsResponse
  4799  	84, // [84:85] is the sub-list for method output_type
  4800  	83, // [83:84] is the sub-list for method input_type
  4801  	83, // [83:83] is the sub-list for extension type_name
  4802  	83, // [83:83] is the sub-list for extension extendee
  4803  	0,  // [0:83] is the sub-list for field type_name
  4804  }
  4805  
  4806  func init() { file_go_chromium_org_luci_swarming_proto_api_swarming_proto_init() }
  4807  func file_go_chromium_org_luci_swarming_proto_api_swarming_proto_init() {
  4808  	if File_go_chromium_org_luci_swarming_proto_api_swarming_proto != nil {
  4809  		return
  4810  	}
  4811  	if !protoimpl.UnsafeEnabled {
  4812  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
  4813  			switch v := v.(*BotEventsRequest); i {
  4814  			case 0:
  4815  				return &v.state
  4816  			case 1:
  4817  				return &v.sizeCache
  4818  			case 2:
  4819  				return &v.unknownFields
  4820  			default:
  4821  				return nil
  4822  			}
  4823  		}
  4824  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
  4825  			switch v := v.(*BotEventsResponse); i {
  4826  			case 0:
  4827  				return &v.state
  4828  			case 1:
  4829  				return &v.sizeCache
  4830  			case 2:
  4831  				return &v.unknownFields
  4832  			default:
  4833  				return nil
  4834  			}
  4835  		}
  4836  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
  4837  			switch v := v.(*StringPair); i {
  4838  			case 0:
  4839  				return &v.state
  4840  			case 1:
  4841  				return &v.sizeCache
  4842  			case 2:
  4843  				return &v.unknownFields
  4844  			default:
  4845  				return nil
  4846  			}
  4847  		}
  4848  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
  4849  			switch v := v.(*StringListPair); i {
  4850  			case 0:
  4851  				return &v.state
  4852  			case 1:
  4853  				return &v.sizeCache
  4854  			case 2:
  4855  				return &v.unknownFields
  4856  			default:
  4857  				return nil
  4858  			}
  4859  		}
  4860  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
  4861  			switch v := v.(*Bot); i {
  4862  			case 0:
  4863  				return &v.state
  4864  			case 1:
  4865  				return &v.sizeCache
  4866  			case 2:
  4867  				return &v.unknownFields
  4868  			default:
  4869  				return nil
  4870  			}
  4871  		}
  4872  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
  4873  			switch v := v.(*BotInfo); i {
  4874  			case 0:
  4875  				return &v.state
  4876  			case 1:
  4877  				return &v.sizeCache
  4878  			case 2:
  4879  				return &v.unknownFields
  4880  			default:
  4881  				return nil
  4882  			}
  4883  		}
  4884  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
  4885  			switch v := v.(*PhysicalEntity); i {
  4886  			case 0:
  4887  				return &v.state
  4888  			case 1:
  4889  				return &v.sizeCache
  4890  			case 2:
  4891  				return &v.unknownFields
  4892  			default:
  4893  				return nil
  4894  			}
  4895  		}
  4896  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
  4897  			switch v := v.(*CASStats); i {
  4898  			case 0:
  4899  				return &v.state
  4900  			case 1:
  4901  				return &v.sizeCache
  4902  			case 2:
  4903  				return &v.unknownFields
  4904  			default:
  4905  				return nil
  4906  			}
  4907  		}
  4908  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
  4909  			switch v := v.(*NamedCacheStats); i {
  4910  			case 0:
  4911  				return &v.state
  4912  			case 1:
  4913  				return &v.sizeCache
  4914  			case 2:
  4915  				return &v.unknownFields
  4916  			default:
  4917  				return nil
  4918  			}
  4919  		}
  4920  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
  4921  			switch v := v.(*CIPDPackageCacheStats); i {
  4922  			case 0:
  4923  				return &v.state
  4924  			case 1:
  4925  				return &v.sizeCache
  4926  			case 2:
  4927  				return &v.unknownFields
  4928  			default:
  4929  				return nil
  4930  			}
  4931  		}
  4932  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
  4933  			switch v := v.(*BotEvent); i {
  4934  			case 0:
  4935  				return &v.state
  4936  			case 1:
  4937  				return &v.sizeCache
  4938  			case 2:
  4939  				return &v.unknownFields
  4940  			default:
  4941  				return nil
  4942  			}
  4943  		}
  4944  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
  4945  			switch v := v.(*CASTree); i {
  4946  			case 0:
  4947  				return &v.state
  4948  			case 1:
  4949  				return &v.sizeCache
  4950  			case 2:
  4951  				return &v.unknownFields
  4952  			default:
  4953  				return nil
  4954  			}
  4955  		}
  4956  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
  4957  			switch v := v.(*Digest); i {
  4958  			case 0:
  4959  				return &v.state
  4960  			case 1:
  4961  				return &v.sizeCache
  4962  			case 2:
  4963  				return &v.unknownFields
  4964  			default:
  4965  				return nil
  4966  			}
  4967  		}
  4968  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
  4969  			switch v := v.(*CASReference); i {
  4970  			case 0:
  4971  				return &v.state
  4972  			case 1:
  4973  				return &v.sizeCache
  4974  			case 2:
  4975  				return &v.unknownFields
  4976  			default:
  4977  				return nil
  4978  			}
  4979  		}
  4980  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
  4981  			switch v := v.(*CIPDPackage); i {
  4982  			case 0:
  4983  				return &v.state
  4984  			case 1:
  4985  				return &v.sizeCache
  4986  			case 2:
  4987  				return &v.unknownFields
  4988  			default:
  4989  				return nil
  4990  			}
  4991  		}
  4992  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
  4993  			switch v := v.(*NamedCacheEntry); i {
  4994  			case 0:
  4995  				return &v.state
  4996  			case 1:
  4997  				return &v.sizeCache
  4998  			case 2:
  4999  				return &v.unknownFields
  5000  			default:
  5001  				return nil
  5002  			}
  5003  		}
  5004  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
  5005  			switch v := v.(*Containment); i {
  5006  			case 0:
  5007  				return &v.state
  5008  			case 1:
  5009  				return &v.sizeCache
  5010  			case 2:
  5011  				return &v.unknownFields
  5012  			default:
  5013  				return nil
  5014  			}
  5015  		}
  5016  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
  5017  			switch v := v.(*TaskProperties); i {
  5018  			case 0:
  5019  				return &v.state
  5020  			case 1:
  5021  				return &v.sizeCache
  5022  			case 2:
  5023  				return &v.unknownFields
  5024  			default:
  5025  				return nil
  5026  			}
  5027  		}
  5028  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
  5029  			switch v := v.(*TaskSlice); i {
  5030  			case 0:
  5031  				return &v.state
  5032  			case 1:
  5033  				return &v.sizeCache
  5034  			case 2:
  5035  				return &v.unknownFields
  5036  			default:
  5037  				return nil
  5038  			}
  5039  		}
  5040  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
  5041  			switch v := v.(*TaskRequest); i {
  5042  			case 0:
  5043  				return &v.state
  5044  			case 1:
  5045  				return &v.sizeCache
  5046  			case 2:
  5047  				return &v.unknownFields
  5048  			default:
  5049  				return nil
  5050  			}
  5051  		}
  5052  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
  5053  			switch v := v.(*PubSub); i {
  5054  			case 0:
  5055  				return &v.state
  5056  			case 1:
  5057  				return &v.sizeCache
  5058  			case 2:
  5059  				return &v.unknownFields
  5060  			default:
  5061  				return nil
  5062  			}
  5063  		}
  5064  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
  5065  			switch v := v.(*TaskResult); i {
  5066  			case 0:
  5067  				return &v.state
  5068  			case 1:
  5069  				return &v.sizeCache
  5070  			case 2:
  5071  				return &v.unknownFields
  5072  			default:
  5073  				return nil
  5074  			}
  5075  		}
  5076  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
  5077  			switch v := v.(*CIPDPins); i {
  5078  			case 0:
  5079  				return &v.state
  5080  			case 1:
  5081  				return &v.sizeCache
  5082  			case 2:
  5083  				return &v.unknownFields
  5084  			default:
  5085  				return nil
  5086  			}
  5087  		}
  5088  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
  5089  			switch v := v.(*TaskPerformance); i {
  5090  			case 0:
  5091  				return &v.state
  5092  			case 1:
  5093  				return &v.sizeCache
  5094  			case 2:
  5095  				return &v.unknownFields
  5096  			default:
  5097  				return nil
  5098  			}
  5099  		}
  5100  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
  5101  			switch v := v.(*TaskSetupOverhead); i {
  5102  			case 0:
  5103  				return &v.state
  5104  			case 1:
  5105  				return &v.sizeCache
  5106  			case 2:
  5107  				return &v.unknownFields
  5108  			default:
  5109  				return nil
  5110  			}
  5111  		}
  5112  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
  5113  			switch v := v.(*TaskTeardownOverhead); i {
  5114  			case 0:
  5115  				return &v.state
  5116  			case 1:
  5117  				return &v.sizeCache
  5118  			case 2:
  5119  				return &v.unknownFields
  5120  			default:
  5121  				return nil
  5122  			}
  5123  		}
  5124  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
  5125  			switch v := v.(*CacheTrimOverhead); i {
  5126  			case 0:
  5127  				return &v.state
  5128  			case 1:
  5129  				return &v.sizeCache
  5130  			case 2:
  5131  				return &v.unknownFields
  5132  			default:
  5133  				return nil
  5134  			}
  5135  		}
  5136  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
  5137  			switch v := v.(*CIPDOverhead); i {
  5138  			case 0:
  5139  				return &v.state
  5140  			case 1:
  5141  				return &v.sizeCache
  5142  			case 2:
  5143  				return &v.unknownFields
  5144  			default:
  5145  				return nil
  5146  			}
  5147  		}
  5148  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
  5149  			switch v := v.(*NamedCacheOverhead); i {
  5150  			case 0:
  5151  				return &v.state
  5152  			case 1:
  5153  				return &v.sizeCache
  5154  			case 2:
  5155  				return &v.unknownFields
  5156  			default:
  5157  				return nil
  5158  			}
  5159  		}
  5160  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
  5161  			switch v := v.(*CASOverhead); i {
  5162  			case 0:
  5163  				return &v.state
  5164  			case 1:
  5165  				return &v.sizeCache
  5166  			case 2:
  5167  				return &v.unknownFields
  5168  			default:
  5169  				return nil
  5170  			}
  5171  		}
  5172  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
  5173  			switch v := v.(*CleanupOverhead); i {
  5174  			case 0:
  5175  				return &v.state
  5176  			case 1:
  5177  				return &v.sizeCache
  5178  			case 2:
  5179  				return &v.unknownFields
  5180  			default:
  5181  				return nil
  5182  			}
  5183  		}
  5184  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
  5185  			switch v := v.(*TaskOverheadStats); i {
  5186  			case 0:
  5187  				return &v.state
  5188  			case 1:
  5189  				return &v.sizeCache
  5190  			case 2:
  5191  				return &v.unknownFields
  5192  			default:
  5193  				return nil
  5194  			}
  5195  		}
  5196  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
  5197  			switch v := v.(*CASEntriesStats); i {
  5198  			case 0:
  5199  				return &v.state
  5200  			case 1:
  5201  				return &v.sizeCache
  5202  			case 2:
  5203  				return &v.unknownFields
  5204  			default:
  5205  				return nil
  5206  			}
  5207  		}
  5208  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
  5209  			switch v := v.(*ResultDBCfg); i {
  5210  			case 0:
  5211  				return &v.state
  5212  			case 1:
  5213  				return &v.sizeCache
  5214  			case 2:
  5215  				return &v.unknownFields
  5216  			default:
  5217  				return nil
  5218  			}
  5219  		}
  5220  		file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
  5221  			switch v := v.(*ResultDBInfo); i {
  5222  			case 0:
  5223  				return &v.state
  5224  			case 1:
  5225  				return &v.sizeCache
  5226  			case 2:
  5227  				return &v.unknownFields
  5228  			default:
  5229  				return nil
  5230  			}
  5231  		}
  5232  	}
  5233  	type x struct{}
  5234  	out := protoimpl.TypeBuilder{
  5235  		File: protoimpl.DescBuilder{
  5236  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  5237  			RawDescriptor: file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDesc,
  5238  			NumEnums:      6,
  5239  			NumMessages:   35,
  5240  			NumExtensions: 0,
  5241  			NumServices:   1,
  5242  		},
  5243  		GoTypes:           file_go_chromium_org_luci_swarming_proto_api_swarming_proto_goTypes,
  5244  		DependencyIndexes: file_go_chromium_org_luci_swarming_proto_api_swarming_proto_depIdxs,
  5245  		EnumInfos:         file_go_chromium_org_luci_swarming_proto_api_swarming_proto_enumTypes,
  5246  		MessageInfos:      file_go_chromium_org_luci_swarming_proto_api_swarming_proto_msgTypes,
  5247  	}.Build()
  5248  	File_go_chromium_org_luci_swarming_proto_api_swarming_proto = out.File
  5249  	file_go_chromium_org_luci_swarming_proto_api_swarming_proto_rawDesc = nil
  5250  	file_go_chromium_org_luci_swarming_proto_api_swarming_proto_goTypes = nil
  5251  	file_go_chromium_org_luci_swarming_proto_api_swarming_proto_depIdxs = nil
  5252  }
  5253  
  5254  // Reference imports to suppress errors if they are not otherwise used.
  5255  var _ context.Context
  5256  var _ grpc.ClientConnInterface
  5257  
  5258  // This is a compile-time assertion to ensure that this generated file
  5259  // is compatible with the grpc package it is being compiled against.
  5260  const _ = grpc.SupportPackageIsVersion6
  5261  
  5262  // BotAPIClient is the client API for BotAPI service.
  5263  //
  5264  // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
  5265  type BotAPIClient interface {
  5266  	// Events returns events relating to one bot.
  5267  	Events(ctx context.Context, in *BotEventsRequest, opts ...grpc.CallOption) (*BotEventsResponse, error)
  5268  }
  5269  type botAPIPRPCClient struct {
  5270  	client *prpc.Client
  5271  }
  5272  
  5273  func NewBotAPIPRPCClient(client *prpc.Client) BotAPIClient {
  5274  	return &botAPIPRPCClient{client}
  5275  }
  5276  
  5277  func (c *botAPIPRPCClient) Events(ctx context.Context, in *BotEventsRequest, opts ...grpc.CallOption) (*BotEventsResponse, error) {
  5278  	out := new(BotEventsResponse)
  5279  	err := c.client.Call(ctx, "swarming.v1.BotAPI", "Events", in, out, opts...)
  5280  	if err != nil {
  5281  		return nil, err
  5282  	}
  5283  	return out, nil
  5284  }
  5285  
  5286  type botAPIClient struct {
  5287  	cc grpc.ClientConnInterface
  5288  }
  5289  
  5290  func NewBotAPIClient(cc grpc.ClientConnInterface) BotAPIClient {
  5291  	return &botAPIClient{cc}
  5292  }
  5293  
  5294  func (c *botAPIClient) Events(ctx context.Context, in *BotEventsRequest, opts ...grpc.CallOption) (*BotEventsResponse, error) {
  5295  	out := new(BotEventsResponse)
  5296  	err := c.cc.Invoke(ctx, "/swarming.v1.BotAPI/Events", in, out, opts...)
  5297  	if err != nil {
  5298  		return nil, err
  5299  	}
  5300  	return out, nil
  5301  }
  5302  
  5303  // BotAPIServer is the server API for BotAPI service.
  5304  type BotAPIServer interface {
  5305  	// Events returns events relating to one bot.
  5306  	Events(context.Context, *BotEventsRequest) (*BotEventsResponse, error)
  5307  }
  5308  
  5309  // UnimplementedBotAPIServer can be embedded to have forward compatible implementations.
  5310  type UnimplementedBotAPIServer struct {
  5311  }
  5312  
  5313  func (*UnimplementedBotAPIServer) Events(context.Context, *BotEventsRequest) (*BotEventsResponse, error) {
  5314  	return nil, status.Errorf(codes.Unimplemented, "method Events not implemented")
  5315  }
  5316  
  5317  func RegisterBotAPIServer(s prpc.Registrar, srv BotAPIServer) {
  5318  	s.RegisterService(&_BotAPI_serviceDesc, srv)
  5319  }
  5320  
  5321  func _BotAPI_Events_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
  5322  	in := new(BotEventsRequest)
  5323  	if err := dec(in); err != nil {
  5324  		return nil, err
  5325  	}
  5326  	if interceptor == nil {
  5327  		return srv.(BotAPIServer).Events(ctx, in)
  5328  	}
  5329  	info := &grpc.UnaryServerInfo{
  5330  		Server:     srv,
  5331  		FullMethod: "/swarming.v1.BotAPI/Events",
  5332  	}
  5333  	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
  5334  		return srv.(BotAPIServer).Events(ctx, req.(*BotEventsRequest))
  5335  	}
  5336  	return interceptor(ctx, in, info, handler)
  5337  }
  5338  
  5339  var _BotAPI_serviceDesc = grpc.ServiceDesc{
  5340  	ServiceName: "swarming.v1.BotAPI",
  5341  	HandlerType: (*BotAPIServer)(nil),
  5342  	Methods: []grpc.MethodDesc{
  5343  		{
  5344  			MethodName: "Events",
  5345  			Handler:    _BotAPI_Events_Handler,
  5346  		},
  5347  	},
  5348  	Streams:  []grpc.StreamDesc{},
  5349  	Metadata: "go.chromium.org/luci/swarming/proto/api/swarming.proto",
  5350  }