OSDN Git Service

new repo
[bytom/vapor.git] / vendor / google.golang.org / genproto / googleapis / devtools / remoteexecution / v1test / remote_execution.pb.go
1 // Code generated by protoc-gen-go. DO NOT EDIT.
2 // source: google/devtools/remoteexecution/v1test/remote_execution.proto
3
4 /*
5 Package remoteexecution is a generated protocol buffer package.
6
7 It is generated from these files:
8         google/devtools/remoteexecution/v1test/remote_execution.proto
9
10 It has these top-level messages:
11         Action
12         Command
13         Platform
14         Directory
15         FileNode
16         DirectoryNode
17         Digest
18         ActionResult
19         OutputFile
20         OutputDirectory
21         ExecuteRequest
22         ExecuteResponse
23         ExecuteOperationMetadata
24         GetActionResultRequest
25         UpdateActionResultRequest
26         FindMissingBlobsRequest
27         FindMissingBlobsResponse
28         UpdateBlobRequest
29         BatchUpdateBlobsRequest
30         BatchUpdateBlobsResponse
31         GetTreeRequest
32         GetTreeResponse
33 */
34 package remoteexecution
35
36 import proto "github.com/golang/protobuf/proto"
37 import fmt "fmt"
38 import math "math"
39 import _ "google.golang.org/genproto/googleapis/api/annotations"
40 import google_longrunning "google.golang.org/genproto/googleapis/longrunning"
41 import google_protobuf3 "github.com/golang/protobuf/ptypes/duration"
42 import google_rpc "google.golang.org/genproto/googleapis/rpc/status"
43
44 import (
45         context "golang.org/x/net/context"
46         grpc "google.golang.org/grpc"
47 )
48
49 // Reference imports to suppress errors if they are not otherwise used.
50 var _ = proto.Marshal
51 var _ = fmt.Errorf
52 var _ = math.Inf
53
54 // This is a compile-time assertion to ensure that this generated file
55 // is compatible with the proto package it is being compiled against.
56 // A compilation error at this line likely means your copy of the
57 // proto package needs to be updated.
58 const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
59
60 // The current stage of execution.
61 type ExecuteOperationMetadata_Stage int32
62
63 const (
64         ExecuteOperationMetadata_UNKNOWN ExecuteOperationMetadata_Stage = 0
65         // Checking the result against the cache.
66         ExecuteOperationMetadata_CACHE_CHECK ExecuteOperationMetadata_Stage = 1
67         // Currently idle, awaiting a free machine to execute.
68         ExecuteOperationMetadata_QUEUED ExecuteOperationMetadata_Stage = 2
69         // Currently being executed by a worker.
70         ExecuteOperationMetadata_EXECUTING ExecuteOperationMetadata_Stage = 3
71         // Finished execution.
72         ExecuteOperationMetadata_COMPLETED ExecuteOperationMetadata_Stage = 4
73 )
74
75 var ExecuteOperationMetadata_Stage_name = map[int32]string{
76         0: "UNKNOWN",
77         1: "CACHE_CHECK",
78         2: "QUEUED",
79         3: "EXECUTING",
80         4: "COMPLETED",
81 }
82 var ExecuteOperationMetadata_Stage_value = map[string]int32{
83         "UNKNOWN":     0,
84         "CACHE_CHECK": 1,
85         "QUEUED":      2,
86         "EXECUTING":   3,
87         "COMPLETED":   4,
88 }
89
90 func (x ExecuteOperationMetadata_Stage) String() string {
91         return proto.EnumName(ExecuteOperationMetadata_Stage_name, int32(x))
92 }
93 func (ExecuteOperationMetadata_Stage) EnumDescriptor() ([]byte, []int) {
94         return fileDescriptor0, []int{12, 0}
95 }
96
97 // An `Action` captures all the information about an execution which is required
98 // to reproduce it.
99 //
100 // `Action`s are the core component of the [Execution] service. A single
101 // `Action` represents a repeatable action that can be performed by the
102 // execution service. `Action`s can be succinctly identified by the digest of
103 // their wire format encoding and, once an `Action` has been executed, will be
104 // cached in the action cache. Future requests can then use the cached result
105 // rather than needing to run afresh.
106 //
107 // When a server completes execution of an [Action][google.devtools.remoteexecution.v1test.Action],
108 // it MAY choose to cache the [result][google.devtools.remoteexecution.v1test.ActionResult]
109 // in the [ActionCache][google.devtools.remoteexecution.v1test.ActionCache]
110 // unless `do_not_cache` is `true`. Clients SHOULD expect the server to do so.
111 // By default, future calls to [Execute][] the same `Action` will also serve
112 // their results from the cache. Clients must take care to understand the
113 // caching behaviour. Ideally, all `Action`s will be reproducible so that
114 // serving a result from cache is always desirable and correct.
115 type Action struct {
116         // The digest of the [Command][google.devtools.remoteexecution.v1test.Command]
117         // to run, which MUST be present in the
118         // [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage].
119         CommandDigest *Digest `protobuf:"bytes,1,opt,name=command_digest,json=commandDigest" json:"command_digest,omitempty"`
120         // The digest of the root [Directory][google.devtools.remoteexecution.v1test.Directory]
121         // for the input files. The files in the directory tree are available in the
122         // correct location on the build machine before the command is executed. The
123         // root directory, as well as every subdirectory and content blob referred to,
124         // MUST be in the [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage].
125         InputRootDigest *Digest `protobuf:"bytes,2,opt,name=input_root_digest,json=inputRootDigest" json:"input_root_digest,omitempty"`
126         // A list of the output files that the client expects to retrieve from the
127         // action. Only the listed files, as well as directories listed in
128         // `output_directories`, will be returned to the client as output.
129         // Other files that may be created during command execution are discarded.
130         //
131         // The paths are specified using forward slashes (`/`) as path separators,
132         // even if the execution platform natively uses a different separator. The
133         // path MUST NOT include a trailing slash.
134         //
135         // In order to ensure consistent hashing of the same Action, the output paths
136         // MUST be sorted lexicographically by code point (or, equivalently, by UTF-8
137         // bytes).
138         OutputFiles []string `protobuf:"bytes,3,rep,name=output_files,json=outputFiles" json:"output_files,omitempty"`
139         // A list of the output directories that the client expects to retrieve from
140         // the action. Only the contents of the indicated directories (recursively
141         // including the contents of their subdirectories) will be
142         // returned, as well as files listed in `output_files`. Other files that may
143         // be created during command execution are discarded.
144         //
145         // The paths are specified using forward slashes (`/`) as path separators,
146         // even if the execution platform natively uses a different separator. The
147         // path MUST NOT include a trailing slash, unless the path is `"/"` (which,
148         // although not recommended, can be used to capture the entire working
149         // directory tree, including inputs).
150         //
151         // In order to ensure consistent hashing of the same Action, the output paths
152         // MUST be sorted lexicographically by code point (or, equivalently, by UTF-8
153         // bytes).
154         OutputDirectories []string `protobuf:"bytes,4,rep,name=output_directories,json=outputDirectories" json:"output_directories,omitempty"`
155         // The platform requirements for the execution environment. The server MAY
156         // choose to execute the action on any worker satisfying the requirements, so
157         // the client SHOULD ensure that running the action on any such worker will
158         // have the same result.
159         Platform *Platform `protobuf:"bytes,5,opt,name=platform" json:"platform,omitempty"`
160         // A timeout after which the execution should be killed. If the timeout is
161         // absent, then the client is specifying that the execution should continue
162         // as long as the server will let it. The server SHOULD impose a timeout if
163         // the client does not specify one, however, if the client does specify a
164         // timeout that is longer than the server's maximum timeout, the server MUST
165         // reject the request.
166         //
167         // The timeout is a part of the
168         // [Action][google.devtools.remoteexecution.v1test.Action] message, and
169         // therefore two `Actions` with different timeouts are different, even if they
170         // are otherwise identical. This is because, if they were not, running an
171         // `Action` with a lower timeout than is required might result in a cache hit
172         // from an execution run with a longer timeout, hiding the fact that the
173         // timeout is too short. By encoding it directly in the `Action`, a lower
174         // timeout will result in a cache miss and the execution timeout will fail
175         // immediately, rather than whenever the cache entry gets evicted.
176         Timeout *google_protobuf3.Duration `protobuf:"bytes,6,opt,name=timeout" json:"timeout,omitempty"`
177         // If true, then the `Action`'s result cannot be cached.
178         DoNotCache bool `protobuf:"varint,7,opt,name=do_not_cache,json=doNotCache" json:"do_not_cache,omitempty"`
179 }
180
181 func (m *Action) Reset()                    { *m = Action{} }
182 func (m *Action) String() string            { return proto.CompactTextString(m) }
183 func (*Action) ProtoMessage()               {}
184 func (*Action) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
185
186 func (m *Action) GetCommandDigest() *Digest {
187         if m != nil {
188                 return m.CommandDigest
189         }
190         return nil
191 }
192
193 func (m *Action) GetInputRootDigest() *Digest {
194         if m != nil {
195                 return m.InputRootDigest
196         }
197         return nil
198 }
199
200 func (m *Action) GetOutputFiles() []string {
201         if m != nil {
202                 return m.OutputFiles
203         }
204         return nil
205 }
206
207 func (m *Action) GetOutputDirectories() []string {
208         if m != nil {
209                 return m.OutputDirectories
210         }
211         return nil
212 }
213
214 func (m *Action) GetPlatform() *Platform {
215         if m != nil {
216                 return m.Platform
217         }
218         return nil
219 }
220
221 func (m *Action) GetTimeout() *google_protobuf3.Duration {
222         if m != nil {
223                 return m.Timeout
224         }
225         return nil
226 }
227
228 func (m *Action) GetDoNotCache() bool {
229         if m != nil {
230                 return m.DoNotCache
231         }
232         return false
233 }
234
235 // A `Command` is the actual command executed by a worker running an
236 // [Action][google.devtools.remoteexecution.v1test.Action].
237 //
238 // Except as otherwise required, the environment (such as which system
239 // libraries or binaries are available, and what filesystems are mounted where)
240 // is defined by and specific to the implementation of the remote execution API.
241 type Command struct {
242         // The arguments to the command. The first argument must be the path to the
243         // executable, which must be either a relative path, in which case it is
244         // evaluated with respect to the input root, or an absolute path. The `PATH`
245         // environment variable, or similar functionality on other systems, is not
246         // used to determine which executable to run.
247         //
248         // The working directory will always be the input root.
249         Arguments []string `protobuf:"bytes,1,rep,name=arguments" json:"arguments,omitempty"`
250         // The environment variables to set when running the program. The worker may
251         // provide its own default environment variables; these defaults can be
252         // overridden using this field. Additional variables can also be specified.
253         //
254         // In order to ensure that equivalent `Command`s always hash to the same
255         // value, the environment variables MUST be lexicographically sorted by name.
256         // Sorting of strings is done by code point, equivalently, by the UTF-8 bytes.
257         EnvironmentVariables []*Command_EnvironmentVariable `protobuf:"bytes,2,rep,name=environment_variables,json=environmentVariables" json:"environment_variables,omitempty"`
258 }
259
260 func (m *Command) Reset()                    { *m = Command{} }
261 func (m *Command) String() string            { return proto.CompactTextString(m) }
262 func (*Command) ProtoMessage()               {}
263 func (*Command) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
264
265 func (m *Command) GetArguments() []string {
266         if m != nil {
267                 return m.Arguments
268         }
269         return nil
270 }
271
272 func (m *Command) GetEnvironmentVariables() []*Command_EnvironmentVariable {
273         if m != nil {
274                 return m.EnvironmentVariables
275         }
276         return nil
277 }
278
279 // An `EnvironmentVariable` is one variable to set in the running program's
280 // environment.
281 type Command_EnvironmentVariable struct {
282         // The variable name.
283         Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
284         // The variable value.
285         Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
286 }
287
288 func (m *Command_EnvironmentVariable) Reset()                    { *m = Command_EnvironmentVariable{} }
289 func (m *Command_EnvironmentVariable) String() string            { return proto.CompactTextString(m) }
290 func (*Command_EnvironmentVariable) ProtoMessage()               {}
291 func (*Command_EnvironmentVariable) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
292
293 func (m *Command_EnvironmentVariable) GetName() string {
294         if m != nil {
295                 return m.Name
296         }
297         return ""
298 }
299
300 func (m *Command_EnvironmentVariable) GetValue() string {
301         if m != nil {
302                 return m.Value
303         }
304         return ""
305 }
306
307 // A `Platform` is a set of requirements, such as hardware, operation system, or
308 // compiler toolchain, for an
309 // [Action][google.devtools.remoteexecution.v1test.Action]'s execution
310 // environment. A `Platform` is represented as a series of key-value pairs
311 // representing the properties that are required of the platform.
312 //
313 // This message is currently being redeveloped since it is an overly simplistic
314 // model of platforms.
315 type Platform struct {
316         // The properties that make up this platform. In order to ensure that
317         // equivalent `Platform`s always hash to the same value, the properties MUST
318         // be lexicographically sorted by name, and then by value. Sorting of strings
319         // is done by code point, equivalently, by the UTF-8 bytes.
320         Properties []*Platform_Property `protobuf:"bytes,1,rep,name=properties" json:"properties,omitempty"`
321 }
322
323 func (m *Platform) Reset()                    { *m = Platform{} }
324 func (m *Platform) String() string            { return proto.CompactTextString(m) }
325 func (*Platform) ProtoMessage()               {}
326 func (*Platform) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
327
328 func (m *Platform) GetProperties() []*Platform_Property {
329         if m != nil {
330                 return m.Properties
331         }
332         return nil
333 }
334
335 // A single property for the environment. The server is responsible for
336 // specifying the property `name`s that it accepts. If an unknown `name` is
337 // provided in the requirements for an
338 // [Action][google.devtools.remoteexecution.v1test.Action], the server SHOULD
339 // reject the execution request. If permitted by the server, the same `name`
340 // may occur multiple times.
341 //
342 // The server is also responsible for specifying the interpretation of
343 // property `value`s. For instance, a property describing how much RAM must be
344 // available may be interpreted as allowing a worker with 16GB to fulfill a
345 // request for 8GB, while a property describing the OS environment on which
346 // the action must be performed may require an exact match with the worker's
347 // OS.
348 //
349 // The server MAY use the `value` of one or more properties to determine how
350 // it sets up the execution environment, such as by making specific system
351 // files available to the worker.
352 type Platform_Property struct {
353         // The property name.
354         Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
355         // The property value.
356         Value string `protobuf:"bytes,2,opt,name=value" json:"value,omitempty"`
357 }
358
359 func (m *Platform_Property) Reset()                    { *m = Platform_Property{} }
360 func (m *Platform_Property) String() string            { return proto.CompactTextString(m) }
361 func (*Platform_Property) ProtoMessage()               {}
362 func (*Platform_Property) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} }
363
364 func (m *Platform_Property) GetName() string {
365         if m != nil {
366                 return m.Name
367         }
368         return ""
369 }
370
371 func (m *Platform_Property) GetValue() string {
372         if m != nil {
373                 return m.Value
374         }
375         return ""
376 }
377
378 // A `Directory` represents a directory node in a file tree, containing zero or
379 // more children [FileNodes][google.devtools.remoteexecution.v1test.FileNode] and
380 // [DirectoryNodes][google.devtools.remoteexecution.v1test.DirectoryNode].
381 // Each `Node` contains its name in the directory, the digest of its content
382 // (either a file blob or a `Directory` proto), as well as possibly some
383 // metadata about the file or directory.
384 //
385 // In order to ensure that two equivalent directory trees hash to the same
386 // value, the following restrictions MUST be obeyed when constructing a
387 // a `Directory`:
388 //   - Every child in the directory must have a path of exactly one segment.
389 //     Multiple levels of directory hierarchy may not be collapsed.
390 //   - Each child in the directory must have a unique path segment (file name).
391 //   - The files and directories in the directory must each be sorted in
392 //     lexicographical order by path. The path strings must be sorted by code
393 //     point, equivalently, by UTF-8 bytes.
394 //
395 // A `Directory` that obeys the restrictions is said to be in canonical form.
396 //
397 // As an example, the following could be used for a file named `bar` and a
398 // directory named `foo` with an executable file named `baz` (hashes shortened
399 // for readability):
400 //
401 // ```json
402 // // (Directory proto)
403 // {
404 //   files: [
405 //     {
406 //       name: "bar",
407 //       digest: {
408 //         hash: "4a73bc9d03...",
409 //         size: 65534
410 //       }
411 //     }
412 //   ],
413 //   directories: [
414 //     {
415 //       name: "foo",
416 //       digest: {
417 //         hash: "4cf2eda940...",
418 //         size: 43
419 //       }
420 //     }
421 //   ]
422 // }
423 //
424 // // (Directory proto with hash "4cf2eda940..." and size 43)
425 // {
426 //   files: [
427 //     {
428 //       name: "baz",
429 //       digest: {
430 //         hash: "b2c941073e...",
431 //         size: 1294,
432 //       },
433 //       is_executable: true
434 //     }
435 //   ]
436 // }
437 // ```
438 type Directory struct {
439         // The files in the directory.
440         Files []*FileNode `protobuf:"bytes,1,rep,name=files" json:"files,omitempty"`
441         // The subdirectories in the directory.
442         Directories []*DirectoryNode `protobuf:"bytes,2,rep,name=directories" json:"directories,omitempty"`
443 }
444
445 func (m *Directory) Reset()                    { *m = Directory{} }
446 func (m *Directory) String() string            { return proto.CompactTextString(m) }
447 func (*Directory) ProtoMessage()               {}
448 func (*Directory) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
449
450 func (m *Directory) GetFiles() []*FileNode {
451         if m != nil {
452                 return m.Files
453         }
454         return nil
455 }
456
457 func (m *Directory) GetDirectories() []*DirectoryNode {
458         if m != nil {
459                 return m.Directories
460         }
461         return nil
462 }
463
464 // A `FileNode` represents a single file and associated metadata.
465 type FileNode struct {
466         // The name of the file.
467         Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
468         // The digest of the file's content.
469         Digest *Digest `protobuf:"bytes,2,opt,name=digest" json:"digest,omitempty"`
470         // True if file is executable, false otherwise.
471         IsExecutable bool `protobuf:"varint,4,opt,name=is_executable,json=isExecutable" json:"is_executable,omitempty"`
472 }
473
474 func (m *FileNode) Reset()                    { *m = FileNode{} }
475 func (m *FileNode) String() string            { return proto.CompactTextString(m) }
476 func (*FileNode) ProtoMessage()               {}
477 func (*FileNode) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
478
479 func (m *FileNode) GetName() string {
480         if m != nil {
481                 return m.Name
482         }
483         return ""
484 }
485
486 func (m *FileNode) GetDigest() *Digest {
487         if m != nil {
488                 return m.Digest
489         }
490         return nil
491 }
492
493 func (m *FileNode) GetIsExecutable() bool {
494         if m != nil {
495                 return m.IsExecutable
496         }
497         return false
498 }
499
500 // A `DirectoryNode` represents a child of a
501 // [Directory][google.devtools.remoteexecution.v1test.Directory] which is itself
502 // a `Directory` and its associated metadata.
503 type DirectoryNode struct {
504         // The name of the directory.
505         Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
506         // The digest of the [Directory][google.devtools.remoteexecution.v1test.Directory]
507         // object represented. See [Digest][google.devtools.remoteexecution.v1test.Digest]
508         // for information about how to take the digest of a proto message.
509         Digest *Digest `protobuf:"bytes,2,opt,name=digest" json:"digest,omitempty"`
510 }
511
512 func (m *DirectoryNode) Reset()                    { *m = DirectoryNode{} }
513 func (m *DirectoryNode) String() string            { return proto.CompactTextString(m) }
514 func (*DirectoryNode) ProtoMessage()               {}
515 func (*DirectoryNode) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
516
517 func (m *DirectoryNode) GetName() string {
518         if m != nil {
519                 return m.Name
520         }
521         return ""
522 }
523
524 func (m *DirectoryNode) GetDigest() *Digest {
525         if m != nil {
526                 return m.Digest
527         }
528         return nil
529 }
530
531 // A content digest. A digest for a given blob consists of the size of the blob
532 // and its hash. The hash algorithm to use is defined by the server, but servers
533 // SHOULD use SHA-256.
534 //
535 // The size is considered to be an integral part of the digest and cannot be
536 // separated. That is, even if the `hash` field is correctly specified but
537 // `size_bytes` is not, the server MUST reject the request.
538 //
539 // The reason for including the size in the digest is as follows: in a great
540 // many cases, the server needs to know the size of the blob it is about to work
541 // with prior to starting an operation with it, such as flattening Merkle tree
542 // structures or streaming it to a worker. Technically, the server could
543 // implement a separate metadata store, but this results in a significantly more
544 // complicated implementation as opposed to having the client specify the size
545 // up-front (or storing the size along with the digest in every message where
546 // digests are embedded). This does mean that the API leaks some implementation
547 // details of (what we consider to be) a reasonable server implementation, but
548 // we consider this to be a worthwhile tradeoff.
549 //
550 // When a `Digest` is used to refer to a proto message, it always refers to the
551 // message in binary encoded form. To ensure consistent hashing, clients and
552 // servers MUST ensure that they serialize messages according to the following
553 // rules, even if there are alternate valid encodings for the same message.
554 // - Fields are serialized in tag order.
555 // - There are no unknown fields.
556 // - There are no duplicate fields.
557 // - Fields are serialized according to the default semantics for their type.
558 //
559 // Most protocol buffer implementations will always follow these rules when
560 // serializing, but care should be taken to avoid shortcuts. For instance,
561 // concatenating two messages to merge them may produce duplicate fields.
562 type Digest struct {
563         // The hash. In the case of SHA-256, it will always be a lowercase hex string
564         // exactly 64 characters long.
565         Hash string `protobuf:"bytes,1,opt,name=hash" json:"hash,omitempty"`
566         // The size of the blob, in bytes.
567         SizeBytes int64 `protobuf:"varint,2,opt,name=size_bytes,json=sizeBytes" json:"size_bytes,omitempty"`
568 }
569
570 func (m *Digest) Reset()                    { *m = Digest{} }
571 func (m *Digest) String() string            { return proto.CompactTextString(m) }
572 func (*Digest) ProtoMessage()               {}
573 func (*Digest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
574
575 func (m *Digest) GetHash() string {
576         if m != nil {
577                 return m.Hash
578         }
579         return ""
580 }
581
582 func (m *Digest) GetSizeBytes() int64 {
583         if m != nil {
584                 return m.SizeBytes
585         }
586         return 0
587 }
588
589 // An ActionResult represents the result of an
590 // [Action][google.devtools.remoteexecution.v1test.Action] being run.
591 type ActionResult struct {
592         // The output files of the action. For each output file requested, if the
593         // corresponding file existed after the action completed, a single entry will
594         // be present in the output list.
595         //
596         // If the action does not produce the requested output, or produces a
597         // directory where a regular file is expected or vice versa, then that output
598         // will be omitted from the list. The server is free to arrange the output
599         // list as desired; clients MUST NOT assume that the output list is sorted.
600         OutputFiles []*OutputFile `protobuf:"bytes,2,rep,name=output_files,json=outputFiles" json:"output_files,omitempty"`
601         // The output directories of the action. For each output directory requested,
602         // if the corresponding directory existed after the action completed, a single
603         // entry will be present in the output list. The client can retrieve the full
604         // [Directory][google.devtools.remoteexecution.v1test.Directory] structure
605         // using [ContentAddressableStorage.GetTree][google.devtools.remoteexecution.v1test.ContentAddressableStorage.GetTree].
606         //
607         // If the action does not produce the requested output, or produces a
608         // directory where a regular file is expected or vice versa, then that output
609         // will be omitted from the list. The server is free to arrange the output
610         // list as desired; clients MUST NOT assume that the output list is sorted.
611         OutputDirectories []*OutputDirectory `protobuf:"bytes,3,rep,name=output_directories,json=outputDirectories" json:"output_directories,omitempty"`
612         // The exit code of the command.
613         ExitCode int32 `protobuf:"varint,4,opt,name=exit_code,json=exitCode" json:"exit_code,omitempty"`
614         // The standard output buffer of the action. The server will determine, based
615         // on the size of the buffer, whether to return it in raw form or to return
616         // a digest in `stdout_digest` that points to the buffer. If neither is set,
617         // then the buffer is empty. The client SHOULD NOT assume it will get one of
618         // the raw buffer or a digest on any given request and should be prepared to
619         // handle either.
620         StdoutRaw []byte `protobuf:"bytes,5,opt,name=stdout_raw,json=stdoutRaw,proto3" json:"stdout_raw,omitempty"`
621         // The digest for a blob containing the standard output of the action, which
622         // can be retrieved from the
623         // [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage].
624         // See `stdout_raw` for when this will be set.
625         StdoutDigest *Digest `protobuf:"bytes,6,opt,name=stdout_digest,json=stdoutDigest" json:"stdout_digest,omitempty"`
626         // The standard error buffer of the action. The server will determine, based
627         // on the size of the buffer, whether to return it in raw form or to return
628         // a digest in `stderr_digest` that points to the buffer. If neither is set,
629         // then the buffer is empty. The client SHOULD NOT assume it will get one of
630         // the raw buffer or a digest on any given request and should be prepared to
631         // handle either.
632         StderrRaw []byte `protobuf:"bytes,7,opt,name=stderr_raw,json=stderrRaw,proto3" json:"stderr_raw,omitempty"`
633         // The digest for a blob containing the standard error of the action, which
634         // can be retrieved from the
635         // [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage].
636         // See `stderr_raw` for when this will be set.
637         StderrDigest *Digest `protobuf:"bytes,8,opt,name=stderr_digest,json=stderrDigest" json:"stderr_digest,omitempty"`
638 }
639
640 func (m *ActionResult) Reset()                    { *m = ActionResult{} }
641 func (m *ActionResult) String() string            { return proto.CompactTextString(m) }
642 func (*ActionResult) ProtoMessage()               {}
643 func (*ActionResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
644
645 func (m *ActionResult) GetOutputFiles() []*OutputFile {
646         if m != nil {
647                 return m.OutputFiles
648         }
649         return nil
650 }
651
652 func (m *ActionResult) GetOutputDirectories() []*OutputDirectory {
653         if m != nil {
654                 return m.OutputDirectories
655         }
656         return nil
657 }
658
659 func (m *ActionResult) GetExitCode() int32 {
660         if m != nil {
661                 return m.ExitCode
662         }
663         return 0
664 }
665
666 func (m *ActionResult) GetStdoutRaw() []byte {
667         if m != nil {
668                 return m.StdoutRaw
669         }
670         return nil
671 }
672
673 func (m *ActionResult) GetStdoutDigest() *Digest {
674         if m != nil {
675                 return m.StdoutDigest
676         }
677         return nil
678 }
679
680 func (m *ActionResult) GetStderrRaw() []byte {
681         if m != nil {
682                 return m.StderrRaw
683         }
684         return nil
685 }
686
687 func (m *ActionResult) GetStderrDigest() *Digest {
688         if m != nil {
689                 return m.StderrDigest
690         }
691         return nil
692 }
693
694 // An `OutputFile` is similar to a
695 // [FileNode][google.devtools.remoteexecution.v1test.FileNode], but it is
696 // tailored for output as part of an `ActionResult`. It allows a full file path
697 // rather than only a name, and allows the server to include content inline.
698 //
699 // `OutputFile` is binary-compatible with `FileNode`.
700 type OutputFile struct {
701         // The full path of the file relative to the input root, including the
702         // filename. The path separator is a forward slash `/`.
703         Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"`
704         // The digest of the file's content.
705         Digest *Digest `protobuf:"bytes,2,opt,name=digest" json:"digest,omitempty"`
706         // The raw content of the file.
707         //
708         // This field may be used by the server to provide the content of a file
709         // inline in an [ActionResult][google.devtools.remoteexecution.v1test.ActionResult]
710         // and avoid requiring that the client make a separate call to
711         // [ContentAddressableStorage.GetBlob] to retrieve it.
712         //
713         // The client SHOULD NOT assume that it will get raw content with any request,
714         // and always be prepared to retrieve it via `digest`.
715         Content []byte `protobuf:"bytes,3,opt,name=content,proto3" json:"content,omitempty"`
716         // True if file is executable, false otherwise.
717         IsExecutable bool `protobuf:"varint,4,opt,name=is_executable,json=isExecutable" json:"is_executable,omitempty"`
718 }
719
720 func (m *OutputFile) Reset()                    { *m = OutputFile{} }
721 func (m *OutputFile) String() string            { return proto.CompactTextString(m) }
722 func (*OutputFile) ProtoMessage()               {}
723 func (*OutputFile) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
724
725 func (m *OutputFile) GetPath() string {
726         if m != nil {
727                 return m.Path
728         }
729         return ""
730 }
731
732 func (m *OutputFile) GetDigest() *Digest {
733         if m != nil {
734                 return m.Digest
735         }
736         return nil
737 }
738
739 func (m *OutputFile) GetContent() []byte {
740         if m != nil {
741                 return m.Content
742         }
743         return nil
744 }
745
746 func (m *OutputFile) GetIsExecutable() bool {
747         if m != nil {
748                 return m.IsExecutable
749         }
750         return false
751 }
752
753 // An `OutputDirectory` is similar to a
754 // [DirectoryNode][google.devtools.remoteexecution.v1test.DirectoryNode],
755 // but it is tailored for output as part of an `ActionResult`. It allows a full
756 // file path rather than only a name. It contains the digest of a
757 // [Directory][google.devtools.remoteexecution.v1test.Directory] which will meet
758 // all the usual requirements for a `Directory`.
759 //
760 // `OutputDirectory` is binary-compatible with `DirectoryNode`.
761 type OutputDirectory struct {
762         // The full path of the directory relative to the input root, including the
763         // filename. The path separator is a forward slash `/`.
764         Path string `protobuf:"bytes,1,opt,name=path" json:"path,omitempty"`
765         // The digest of the [Directory][google.devtools.remoteexecution.v1test.Directory]
766         // proto describing the directory's contents.
767         Digest *Digest `protobuf:"bytes,2,opt,name=digest" json:"digest,omitempty"`
768 }
769
770 func (m *OutputDirectory) Reset()                    { *m = OutputDirectory{} }
771 func (m *OutputDirectory) String() string            { return proto.CompactTextString(m) }
772 func (*OutputDirectory) ProtoMessage()               {}
773 func (*OutputDirectory) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
774
775 func (m *OutputDirectory) GetPath() string {
776         if m != nil {
777                 return m.Path
778         }
779         return ""
780 }
781
782 func (m *OutputDirectory) GetDigest() *Digest {
783         if m != nil {
784                 return m.Digest
785         }
786         return nil
787 }
788
789 // A request message for
790 // [Execution.Execute][google.devtools.remoteexecution.v1test.Execution.Execute].
791 type ExecuteRequest struct {
792         // The instance of the execution system to operate against. A server may
793         // support multiple instances of the execution system (with their own workers,
794         // storage, caches, etc.). The server MAY require use of this field to select
795         // between them in an implementation-defined fashion, otherwise it can be
796         // omitted.
797         InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName" json:"instance_name,omitempty"`
798         // The action to be performed.
799         Action *Action `protobuf:"bytes,2,opt,name=action" json:"action,omitempty"`
800         // If true, the action will be executed anew even if its result was already
801         // present in the cache. If false, the result may be served from the
802         // [ActionCache][google.devtools.remoteexecution.v1test.ActionCache].
803         SkipCacheLookup bool `protobuf:"varint,3,opt,name=skip_cache_lookup,json=skipCacheLookup" json:"skip_cache_lookup,omitempty"`
804         // The total count of input files, not counting directories. This must be
805         // provided so that the server can do resource allocation and, on servers with
806         // quotas, quota checking. It is also used as a safety check: servers MUST
807         // return an error if the total number of input files described in the
808         // `action` is different.
809         TotalInputFileCount int32 `protobuf:"varint,4,opt,name=total_input_file_count,json=totalInputFileCount" json:"total_input_file_count,omitempty"`
810         // The total size of input file content, provided as a hint and check. This
811         // must be provided so that the server can do resource allocation and, on
812         // servers with quotas, quota checking. It is also used as a safety check:
813         // servers MUST return an error if the total size of input files described in
814         // the `action` is different.
815         TotalInputFileBytes int64 `protobuf:"varint,5,opt,name=total_input_file_bytes,json=totalInputFileBytes" json:"total_input_file_bytes,omitempty"`
816 }
817
818 func (m *ExecuteRequest) Reset()                    { *m = ExecuteRequest{} }
819 func (m *ExecuteRequest) String() string            { return proto.CompactTextString(m) }
820 func (*ExecuteRequest) ProtoMessage()               {}
821 func (*ExecuteRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
822
823 func (m *ExecuteRequest) GetInstanceName() string {
824         if m != nil {
825                 return m.InstanceName
826         }
827         return ""
828 }
829
830 func (m *ExecuteRequest) GetAction() *Action {
831         if m != nil {
832                 return m.Action
833         }
834         return nil
835 }
836
837 func (m *ExecuteRequest) GetSkipCacheLookup() bool {
838         if m != nil {
839                 return m.SkipCacheLookup
840         }
841         return false
842 }
843
844 func (m *ExecuteRequest) GetTotalInputFileCount() int32 {
845         if m != nil {
846                 return m.TotalInputFileCount
847         }
848         return 0
849 }
850
851 func (m *ExecuteRequest) GetTotalInputFileBytes() int64 {
852         if m != nil {
853                 return m.TotalInputFileBytes
854         }
855         return 0
856 }
857
858 // The response message for
859 // [Execution.Execute][google.devtools.remoteexecution.v1test.Execution.Execute],
860 // which will be contained in the [response field][google.longrunning.Operation.response] of the
861 // [Operation][google.longrunning.Operation].
862 type ExecuteResponse struct {
863         // The result of the action.
864         Result *ActionResult `protobuf:"bytes,1,opt,name=result" json:"result,omitempty"`
865         // True if the result was served from cache, false if it was executed.
866         CachedResult bool `protobuf:"varint,2,opt,name=cached_result,json=cachedResult" json:"cached_result,omitempty"`
867 }
868
869 func (m *ExecuteResponse) Reset()                    { *m = ExecuteResponse{} }
870 func (m *ExecuteResponse) String() string            { return proto.CompactTextString(m) }
871 func (*ExecuteResponse) ProtoMessage()               {}
872 func (*ExecuteResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
873
874 func (m *ExecuteResponse) GetResult() *ActionResult {
875         if m != nil {
876                 return m.Result
877         }
878         return nil
879 }
880
881 func (m *ExecuteResponse) GetCachedResult() bool {
882         if m != nil {
883                 return m.CachedResult
884         }
885         return false
886 }
887
888 // Metadata about an ongoing [execution][google.devtools.remoteexecution.v1test.Execution.Execute],
889 // which will be
890 // contained in the [metadata field][google.longrunning.Operation.response] of
891 // the [Operation][google.longrunning.Operation].
892 type ExecuteOperationMetadata struct {
893         Stage ExecuteOperationMetadata_Stage `protobuf:"varint,1,opt,name=stage,enum=google.devtools.remoteexecution.v1test.ExecuteOperationMetadata_Stage" json:"stage,omitempty"`
894         // The digest of the [Action][google.devtools.remoteexecution.v1test.Action]
895         // being executed.
896         ActionDigest *Digest `protobuf:"bytes,2,opt,name=action_digest,json=actionDigest" json:"action_digest,omitempty"`
897         // If set, the client can use this name with
898         // [ByteStream.Read][google.bytestream.ByteStream.Read] to stream the
899         // standard output.
900         StdoutStreamName string `protobuf:"bytes,3,opt,name=stdout_stream_name,json=stdoutStreamName" json:"stdout_stream_name,omitempty"`
901         // If set, the client can use this name with
902         // [ByteStream.Read][google.bytestream.ByteStream.Read] to stream the
903         // standard error.
904         StderrStreamName string `protobuf:"bytes,4,opt,name=stderr_stream_name,json=stderrStreamName" json:"stderr_stream_name,omitempty"`
905 }
906
907 func (m *ExecuteOperationMetadata) Reset()                    { *m = ExecuteOperationMetadata{} }
908 func (m *ExecuteOperationMetadata) String() string            { return proto.CompactTextString(m) }
909 func (*ExecuteOperationMetadata) ProtoMessage()               {}
910 func (*ExecuteOperationMetadata) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
911
912 func (m *ExecuteOperationMetadata) GetStage() ExecuteOperationMetadata_Stage {
913         if m != nil {
914                 return m.Stage
915         }
916         return ExecuteOperationMetadata_UNKNOWN
917 }
918
919 func (m *ExecuteOperationMetadata) GetActionDigest() *Digest {
920         if m != nil {
921                 return m.ActionDigest
922         }
923         return nil
924 }
925
926 func (m *ExecuteOperationMetadata) GetStdoutStreamName() string {
927         if m != nil {
928                 return m.StdoutStreamName
929         }
930         return ""
931 }
932
933 func (m *ExecuteOperationMetadata) GetStderrStreamName() string {
934         if m != nil {
935                 return m.StderrStreamName
936         }
937         return ""
938 }
939
940 // A request message for
941 // [ActionCache.GetActionResult][google.devtools.remoteexecution.v1test.ActionCache.GetActionResult].
942 type GetActionResultRequest struct {
943         // The instance of the execution system to operate against. A server may
944         // support multiple instances of the execution system (with their own workers,
945         // storage, caches, etc.). The server MAY require use of this field to select
946         // between them in an implementation-defined fashion, otherwise it can be
947         // omitted.
948         InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName" json:"instance_name,omitempty"`
949         // The digest of the [Action][google.devtools.remoteexecution.v1test.Action]
950         // whose result is requested.
951         ActionDigest *Digest `protobuf:"bytes,2,opt,name=action_digest,json=actionDigest" json:"action_digest,omitempty"`
952 }
953
954 func (m *GetActionResultRequest) Reset()                    { *m = GetActionResultRequest{} }
955 func (m *GetActionResultRequest) String() string            { return proto.CompactTextString(m) }
956 func (*GetActionResultRequest) ProtoMessage()               {}
957 func (*GetActionResultRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
958
959 func (m *GetActionResultRequest) GetInstanceName() string {
960         if m != nil {
961                 return m.InstanceName
962         }
963         return ""
964 }
965
966 func (m *GetActionResultRequest) GetActionDigest() *Digest {
967         if m != nil {
968                 return m.ActionDigest
969         }
970         return nil
971 }
972
973 // A request message for
974 // [ActionCache.UpdateActionResult][google.devtools.remoteexecution.v1test.ActionCache.UpdateActionResult].
975 type UpdateActionResultRequest struct {
976         // The instance of the execution system to operate against. A server may
977         // support multiple instances of the execution system (with their own workers,
978         // storage, caches, etc.). The server MAY require use of this field to select
979         // between them in an implementation-defined fashion, otherwise it can be
980         // omitted.
981         InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName" json:"instance_name,omitempty"`
982         // The digest of the [Action][google.devtools.remoteexecution.v1test.Action]
983         // whose result is being uploaded.
984         ActionDigest *Digest `protobuf:"bytes,2,opt,name=action_digest,json=actionDigest" json:"action_digest,omitempty"`
985         // The [ActionResult][google.devtools.remoteexecution.v1test.ActionResult]
986         // to store in the cache.
987         ActionResult *ActionResult `protobuf:"bytes,3,opt,name=action_result,json=actionResult" json:"action_result,omitempty"`
988 }
989
990 func (m *UpdateActionResultRequest) Reset()                    { *m = UpdateActionResultRequest{} }
991 func (m *UpdateActionResultRequest) String() string            { return proto.CompactTextString(m) }
992 func (*UpdateActionResultRequest) ProtoMessage()               {}
993 func (*UpdateActionResultRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
994
995 func (m *UpdateActionResultRequest) GetInstanceName() string {
996         if m != nil {
997                 return m.InstanceName
998         }
999         return ""
1000 }
1001
1002 func (m *UpdateActionResultRequest) GetActionDigest() *Digest {
1003         if m != nil {
1004                 return m.ActionDigest
1005         }
1006         return nil
1007 }
1008
1009 func (m *UpdateActionResultRequest) GetActionResult() *ActionResult {
1010         if m != nil {
1011                 return m.ActionResult
1012         }
1013         return nil
1014 }
1015
1016 // A request message for
1017 // [ContentAddressableStorage.FindMissingBlobs][google.devtools.remoteexecution.v1test.ContentAddressableStorage.FindMissingBlobs].
1018 type FindMissingBlobsRequest struct {
1019         // The instance of the execution system to operate against. A server may
1020         // support multiple instances of the execution system (with their own workers,
1021         // storage, caches, etc.). The server MAY require use of this field to select
1022         // between them in an implementation-defined fashion, otherwise it can be
1023         // omitted.
1024         InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName" json:"instance_name,omitempty"`
1025         // A list of the blobs to check.
1026         BlobDigests []*Digest `protobuf:"bytes,2,rep,name=blob_digests,json=blobDigests" json:"blob_digests,omitempty"`
1027 }
1028
1029 func (m *FindMissingBlobsRequest) Reset()                    { *m = FindMissingBlobsRequest{} }
1030 func (m *FindMissingBlobsRequest) String() string            { return proto.CompactTextString(m) }
1031 func (*FindMissingBlobsRequest) ProtoMessage()               {}
1032 func (*FindMissingBlobsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
1033
1034 func (m *FindMissingBlobsRequest) GetInstanceName() string {
1035         if m != nil {
1036                 return m.InstanceName
1037         }
1038         return ""
1039 }
1040
1041 func (m *FindMissingBlobsRequest) GetBlobDigests() []*Digest {
1042         if m != nil {
1043                 return m.BlobDigests
1044         }
1045         return nil
1046 }
1047
1048 // A response message for
1049 // [ContentAddressableStorage.FindMissingBlobs][google.devtools.remoteexecution.v1test.ContentAddressableStorage.FindMissingBlobs].
1050 type FindMissingBlobsResponse struct {
1051         // A list of the blobs requested *not* present in the storage.
1052         MissingBlobDigests []*Digest `protobuf:"bytes,2,rep,name=missing_blob_digests,json=missingBlobDigests" json:"missing_blob_digests,omitempty"`
1053 }
1054
1055 func (m *FindMissingBlobsResponse) Reset()                    { *m = FindMissingBlobsResponse{} }
1056 func (m *FindMissingBlobsResponse) String() string            { return proto.CompactTextString(m) }
1057 func (*FindMissingBlobsResponse) ProtoMessage()               {}
1058 func (*FindMissingBlobsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
1059
1060 func (m *FindMissingBlobsResponse) GetMissingBlobDigests() []*Digest {
1061         if m != nil {
1062                 return m.MissingBlobDigests
1063         }
1064         return nil
1065 }
1066
1067 // A single request message for
1068 // [ContentAddressableStorage.BatchUpdateBlobs][google.devtools.remoteexecution.v1test.ContentAddressableStorage.BatchUpdateBlobs].
1069 type UpdateBlobRequest struct {
1070         // The digest of the blob. This MUST be the digest of `data`.
1071         ContentDigest *Digest `protobuf:"bytes,1,opt,name=content_digest,json=contentDigest" json:"content_digest,omitempty"`
1072         // The raw binary data.
1073         Data []byte `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"`
1074 }
1075
1076 func (m *UpdateBlobRequest) Reset()                    { *m = UpdateBlobRequest{} }
1077 func (m *UpdateBlobRequest) String() string            { return proto.CompactTextString(m) }
1078 func (*UpdateBlobRequest) ProtoMessage()               {}
1079 func (*UpdateBlobRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
1080
1081 func (m *UpdateBlobRequest) GetContentDigest() *Digest {
1082         if m != nil {
1083                 return m.ContentDigest
1084         }
1085         return nil
1086 }
1087
1088 func (m *UpdateBlobRequest) GetData() []byte {
1089         if m != nil {
1090                 return m.Data
1091         }
1092         return nil
1093 }
1094
1095 // A request message for
1096 // [ContentAddressableStorage.BatchUpdateBlobs][google.devtools.remoteexecution.v1test.ContentAddressableStorage.BatchUpdateBlobs].
1097 type BatchUpdateBlobsRequest struct {
1098         // The instance of the execution system to operate against. A server may
1099         // support multiple instances of the execution system (with their own workers,
1100         // storage, caches, etc.). The server MAY require use of this field to select
1101         // between them in an implementation-defined fashion, otherwise it can be
1102         // omitted.
1103         InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName" json:"instance_name,omitempty"`
1104         // The individual upload requests.
1105         Requests []*UpdateBlobRequest `protobuf:"bytes,2,rep,name=requests" json:"requests,omitempty"`
1106 }
1107
1108 func (m *BatchUpdateBlobsRequest) Reset()                    { *m = BatchUpdateBlobsRequest{} }
1109 func (m *BatchUpdateBlobsRequest) String() string            { return proto.CompactTextString(m) }
1110 func (*BatchUpdateBlobsRequest) ProtoMessage()               {}
1111 func (*BatchUpdateBlobsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
1112
1113 func (m *BatchUpdateBlobsRequest) GetInstanceName() string {
1114         if m != nil {
1115                 return m.InstanceName
1116         }
1117         return ""
1118 }
1119
1120 func (m *BatchUpdateBlobsRequest) GetRequests() []*UpdateBlobRequest {
1121         if m != nil {
1122                 return m.Requests
1123         }
1124         return nil
1125 }
1126
1127 // A response message for
1128 // [ContentAddressableStorage.BatchUpdateBlobs][google.devtools.remoteexecution.v1test.ContentAddressableStorage.BatchUpdateBlobs].
1129 type BatchUpdateBlobsResponse struct {
1130         // The responses to the requests.
1131         Responses []*BatchUpdateBlobsResponse_Response `protobuf:"bytes,1,rep,name=responses" json:"responses,omitempty"`
1132 }
1133
1134 func (m *BatchUpdateBlobsResponse) Reset()                    { *m = BatchUpdateBlobsResponse{} }
1135 func (m *BatchUpdateBlobsResponse) String() string            { return proto.CompactTextString(m) }
1136 func (*BatchUpdateBlobsResponse) ProtoMessage()               {}
1137 func (*BatchUpdateBlobsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
1138
1139 func (m *BatchUpdateBlobsResponse) GetResponses() []*BatchUpdateBlobsResponse_Response {
1140         if m != nil {
1141                 return m.Responses
1142         }
1143         return nil
1144 }
1145
1146 // A response corresponding to a single blob that the client tried to upload.
1147 type BatchUpdateBlobsResponse_Response struct {
1148         // The digest to which this response corresponds.
1149         BlobDigest *Digest `protobuf:"bytes,1,opt,name=blob_digest,json=blobDigest" json:"blob_digest,omitempty"`
1150         // The result of attempting to upload that blob.
1151         Status *google_rpc.Status `protobuf:"bytes,2,opt,name=status" json:"status,omitempty"`
1152 }
1153
1154 func (m *BatchUpdateBlobsResponse_Response) Reset()         { *m = BatchUpdateBlobsResponse_Response{} }
1155 func (m *BatchUpdateBlobsResponse_Response) String() string { return proto.CompactTextString(m) }
1156 func (*BatchUpdateBlobsResponse_Response) ProtoMessage()    {}
1157 func (*BatchUpdateBlobsResponse_Response) Descriptor() ([]byte, []int) {
1158         return fileDescriptor0, []int{19, 0}
1159 }
1160
1161 func (m *BatchUpdateBlobsResponse_Response) GetBlobDigest() *Digest {
1162         if m != nil {
1163                 return m.BlobDigest
1164         }
1165         return nil
1166 }
1167
1168 func (m *BatchUpdateBlobsResponse_Response) GetStatus() *google_rpc.Status {
1169         if m != nil {
1170                 return m.Status
1171         }
1172         return nil
1173 }
1174
1175 // A request message for
1176 // [ContentAddressableStorage.GetTree][google.devtools.remoteexecution.v1test.ContentAddressableStorage.GetTree].
1177 type GetTreeRequest struct {
1178         // The instance of the execution system to operate against. A server may
1179         // support multiple instances of the execution system (with their own workers,
1180         // storage, caches, etc.). The server MAY require use of this field to select
1181         // between them in an implementation-defined fashion, otherwise it can be
1182         // omitted.
1183         InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName" json:"instance_name,omitempty"`
1184         // The digest of the root, which must be an encoded
1185         // [Directory][google.devtools.remoteexecution.v1test.Directory] message
1186         // stored in the [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage].
1187         RootDigest *Digest `protobuf:"bytes,2,opt,name=root_digest,json=rootDigest" json:"root_digest,omitempty"`
1188         // A maximum page size to request. If present, the server will request no more
1189         // than this many items. Regardless of whether a page size is specified, the
1190         // server may place its own limit on the number of items to be returned and
1191         // require the client to retrieve more items using a subsequent request.
1192         PageSize int32 `protobuf:"varint,3,opt,name=page_size,json=pageSize" json:"page_size,omitempty"`
1193         // A page token, which must be a value received in a previous
1194         // [GetTreeResponse][google.devtools.remoteexecution.v1test.GetTreeResponse].
1195         // If present, the server will use it to return the following page of results.
1196         PageToken string `protobuf:"bytes,4,opt,name=page_token,json=pageToken" json:"page_token,omitempty"`
1197 }
1198
1199 func (m *GetTreeRequest) Reset()                    { *m = GetTreeRequest{} }
1200 func (m *GetTreeRequest) String() string            { return proto.CompactTextString(m) }
1201 func (*GetTreeRequest) ProtoMessage()               {}
1202 func (*GetTreeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
1203
1204 func (m *GetTreeRequest) GetInstanceName() string {
1205         if m != nil {
1206                 return m.InstanceName
1207         }
1208         return ""
1209 }
1210
1211 func (m *GetTreeRequest) GetRootDigest() *Digest {
1212         if m != nil {
1213                 return m.RootDigest
1214         }
1215         return nil
1216 }
1217
1218 func (m *GetTreeRequest) GetPageSize() int32 {
1219         if m != nil {
1220                 return m.PageSize
1221         }
1222         return 0
1223 }
1224
1225 func (m *GetTreeRequest) GetPageToken() string {
1226         if m != nil {
1227                 return m.PageToken
1228         }
1229         return ""
1230 }
1231
1232 // A response message for
1233 // [ContentAddressableStorage.GetTree][google.devtools.remoteexecution.v1test.ContentAddressableStorage.GetTree].
1234 type GetTreeResponse struct {
1235         // The directories descended from the requested root.
1236         Directories []*Directory `protobuf:"bytes,1,rep,name=directories" json:"directories,omitempty"`
1237         // If present, signifies that there are more results which the client can
1238         // retrieve by passing this as the page_token in a subsequent
1239         // [request][google.devtools.remoteexecution.v1test.GetTreeRequest].
1240         // If empty, signifies that this is the last page of results.
1241         NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken" json:"next_page_token,omitempty"`
1242 }
1243
1244 func (m *GetTreeResponse) Reset()                    { *m = GetTreeResponse{} }
1245 func (m *GetTreeResponse) String() string            { return proto.CompactTextString(m) }
1246 func (*GetTreeResponse) ProtoMessage()               {}
1247 func (*GetTreeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
1248
1249 func (m *GetTreeResponse) GetDirectories() []*Directory {
1250         if m != nil {
1251                 return m.Directories
1252         }
1253         return nil
1254 }
1255
1256 func (m *GetTreeResponse) GetNextPageToken() string {
1257         if m != nil {
1258                 return m.NextPageToken
1259         }
1260         return ""
1261 }
1262
1263 func init() {
1264         proto.RegisterType((*Action)(nil), "google.devtools.remoteexecution.v1test.Action")
1265         proto.RegisterType((*Command)(nil), "google.devtools.remoteexecution.v1test.Command")
1266         proto.RegisterType((*Command_EnvironmentVariable)(nil), "google.devtools.remoteexecution.v1test.Command.EnvironmentVariable")
1267         proto.RegisterType((*Platform)(nil), "google.devtools.remoteexecution.v1test.Platform")
1268         proto.RegisterType((*Platform_Property)(nil), "google.devtools.remoteexecution.v1test.Platform.Property")
1269         proto.RegisterType((*Directory)(nil), "google.devtools.remoteexecution.v1test.Directory")
1270         proto.RegisterType((*FileNode)(nil), "google.devtools.remoteexecution.v1test.FileNode")
1271         proto.RegisterType((*DirectoryNode)(nil), "google.devtools.remoteexecution.v1test.DirectoryNode")
1272         proto.RegisterType((*Digest)(nil), "google.devtools.remoteexecution.v1test.Digest")
1273         proto.RegisterType((*ActionResult)(nil), "google.devtools.remoteexecution.v1test.ActionResult")
1274         proto.RegisterType((*OutputFile)(nil), "google.devtools.remoteexecution.v1test.OutputFile")
1275         proto.RegisterType((*OutputDirectory)(nil), "google.devtools.remoteexecution.v1test.OutputDirectory")
1276         proto.RegisterType((*ExecuteRequest)(nil), "google.devtools.remoteexecution.v1test.ExecuteRequest")
1277         proto.RegisterType((*ExecuteResponse)(nil), "google.devtools.remoteexecution.v1test.ExecuteResponse")
1278         proto.RegisterType((*ExecuteOperationMetadata)(nil), "google.devtools.remoteexecution.v1test.ExecuteOperationMetadata")
1279         proto.RegisterType((*GetActionResultRequest)(nil), "google.devtools.remoteexecution.v1test.GetActionResultRequest")
1280         proto.RegisterType((*UpdateActionResultRequest)(nil), "google.devtools.remoteexecution.v1test.UpdateActionResultRequest")
1281         proto.RegisterType((*FindMissingBlobsRequest)(nil), "google.devtools.remoteexecution.v1test.FindMissingBlobsRequest")
1282         proto.RegisterType((*FindMissingBlobsResponse)(nil), "google.devtools.remoteexecution.v1test.FindMissingBlobsResponse")
1283         proto.RegisterType((*UpdateBlobRequest)(nil), "google.devtools.remoteexecution.v1test.UpdateBlobRequest")
1284         proto.RegisterType((*BatchUpdateBlobsRequest)(nil), "google.devtools.remoteexecution.v1test.BatchUpdateBlobsRequest")
1285         proto.RegisterType((*BatchUpdateBlobsResponse)(nil), "google.devtools.remoteexecution.v1test.BatchUpdateBlobsResponse")
1286         proto.RegisterType((*BatchUpdateBlobsResponse_Response)(nil), "google.devtools.remoteexecution.v1test.BatchUpdateBlobsResponse.Response")
1287         proto.RegisterType((*GetTreeRequest)(nil), "google.devtools.remoteexecution.v1test.GetTreeRequest")
1288         proto.RegisterType((*GetTreeResponse)(nil), "google.devtools.remoteexecution.v1test.GetTreeResponse")
1289         proto.RegisterEnum("google.devtools.remoteexecution.v1test.ExecuteOperationMetadata_Stage", ExecuteOperationMetadata_Stage_name, ExecuteOperationMetadata_Stage_value)
1290 }
1291
1292 // Reference imports to suppress errors if they are not otherwise used.
1293 var _ context.Context
1294 var _ grpc.ClientConn
1295
1296 // This is a compile-time assertion to ensure that this generated file
1297 // is compatible with the grpc package it is being compiled against.
1298 const _ = grpc.SupportPackageIsVersion4
1299
1300 // Client API for Execution service
1301
1302 type ExecutionClient interface {
1303         // Execute an action remotely.
1304         //
1305         // In order to execute an action, the client must first upload all of the
1306         // inputs, as well as the [Command][google.devtools.remoteexecution.v1test.Command]
1307         // to run, into the [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage].
1308         // It then calls `Execute` with an [Action][google.devtools.remoteexecution.v1test.Action]
1309         // referring to them. The server will run the action and eventually return the
1310         // result.
1311         //
1312         // The input `Action`'s fields MUST meet the various canonicalization
1313         // requirements specified in the documentation for their types so that it has
1314         // the same digest as other logically equivalent `Action`s. The server MAY
1315         // enforce the requirements and return errors if a non-canonical input is
1316         // received. It MAY also proceed without verifying some or all of the
1317         // requirements, such as for performance reasons. If the server does not
1318         // verify the requirement, then it will treat the `Action` as distinct from
1319         // another logically equivalent action if they hash differently.
1320         //
1321         // Returns a [google.longrunning.Operation][google.longrunning.Operation]
1322         // describing the resulting execution, with eventual `response`
1323         // [ExecuteResponse][google.devtools.remoteexecution.v1test.ExecuteResponse].
1324         // The `metadata` on the operation is of type
1325         // [ExecuteOperationMetadata][google.devtools.remoteexecution.v1test.ExecuteOperationMetadata].
1326         //
1327         // To query the operation, you can use the
1328         // [Operations API][google.longrunning.Operations.GetOperation]. If you wish
1329         // to allow the server to stream operations updates, rather than requiring
1330         // client polling, you can use the
1331         // [Watcher API][google.watcher.v1.Watcher.Watch] with the Operation's `name`
1332         // as the `target`.
1333         //
1334         // When using the Watcher API, the initial `data` will be the `Operation` at
1335         // the time of the request. Updates will be provided periodically by the
1336         // server until the `Operation` completes, at which point the response message
1337         // will (assuming no error) be at `data.response`.
1338         //
1339         // The server NEED NOT implement other methods or functionality of the
1340         // Operation and Watcher APIs.
1341         //
1342         // Errors discovered during creation of the `Operation` will be reported
1343         // as gRPC Status errors, while errors that occurred while running the
1344         // `Operation` will be reported in the `Operation` error field.
1345         // The possible errors include:
1346         // * `INVALID_ARGUMENT`: One or more arguments are invalid.
1347         // * `FAILED_PRECONDITION`: One or more errors occurred in setting up the
1348         //   action requested, such as a missing input or no worker being available.
1349         //   The client may be able to fix the errors and retry.
1350         // * `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to run
1351         //   the action.
1352         // * `UNAVAILABLE`: Due to a transient condition, such as all workers being
1353         //   occupied (and the server does not support a queue), the action could not
1354         //   be started. The client should retry.
1355         // * `INTERNAL`: An internal error occurred in the execution engine or the
1356         //   worker.
1357         // * `DEADLINE_EXCEEDED`: The execution timed out.
1358         Execute(ctx context.Context, in *ExecuteRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error)
1359 }
1360
1361 type executionClient struct {
1362         cc *grpc.ClientConn
1363 }
1364
1365 func NewExecutionClient(cc *grpc.ClientConn) ExecutionClient {
1366         return &executionClient{cc}
1367 }
1368
1369 func (c *executionClient) Execute(ctx context.Context, in *ExecuteRequest, opts ...grpc.CallOption) (*google_longrunning.Operation, error) {
1370         out := new(google_longrunning.Operation)
1371         err := grpc.Invoke(ctx, "/google.devtools.remoteexecution.v1test.Execution/Execute", in, out, c.cc, opts...)
1372         if err != nil {
1373                 return nil, err
1374         }
1375         return out, nil
1376 }
1377
1378 // Server API for Execution service
1379
1380 type ExecutionServer interface {
1381         // Execute an action remotely.
1382         //
1383         // In order to execute an action, the client must first upload all of the
1384         // inputs, as well as the [Command][google.devtools.remoteexecution.v1test.Command]
1385         // to run, into the [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage].
1386         // It then calls `Execute` with an [Action][google.devtools.remoteexecution.v1test.Action]
1387         // referring to them. The server will run the action and eventually return the
1388         // result.
1389         //
1390         // The input `Action`'s fields MUST meet the various canonicalization
1391         // requirements specified in the documentation for their types so that it has
1392         // the same digest as other logically equivalent `Action`s. The server MAY
1393         // enforce the requirements and return errors if a non-canonical input is
1394         // received. It MAY also proceed without verifying some or all of the
1395         // requirements, such as for performance reasons. If the server does not
1396         // verify the requirement, then it will treat the `Action` as distinct from
1397         // another logically equivalent action if they hash differently.
1398         //
1399         // Returns a [google.longrunning.Operation][google.longrunning.Operation]
1400         // describing the resulting execution, with eventual `response`
1401         // [ExecuteResponse][google.devtools.remoteexecution.v1test.ExecuteResponse].
1402         // The `metadata` on the operation is of type
1403         // [ExecuteOperationMetadata][google.devtools.remoteexecution.v1test.ExecuteOperationMetadata].
1404         //
1405         // To query the operation, you can use the
1406         // [Operations API][google.longrunning.Operations.GetOperation]. If you wish
1407         // to allow the server to stream operations updates, rather than requiring
1408         // client polling, you can use the
1409         // [Watcher API][google.watcher.v1.Watcher.Watch] with the Operation's `name`
1410         // as the `target`.
1411         //
1412         // When using the Watcher API, the initial `data` will be the `Operation` at
1413         // the time of the request. Updates will be provided periodically by the
1414         // server until the `Operation` completes, at which point the response message
1415         // will (assuming no error) be at `data.response`.
1416         //
1417         // The server NEED NOT implement other methods or functionality of the
1418         // Operation and Watcher APIs.
1419         //
1420         // Errors discovered during creation of the `Operation` will be reported
1421         // as gRPC Status errors, while errors that occurred while running the
1422         // `Operation` will be reported in the `Operation` error field.
1423         // The possible errors include:
1424         // * `INVALID_ARGUMENT`: One or more arguments are invalid.
1425         // * `FAILED_PRECONDITION`: One or more errors occurred in setting up the
1426         //   action requested, such as a missing input or no worker being available.
1427         //   The client may be able to fix the errors and retry.
1428         // * `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to run
1429         //   the action.
1430         // * `UNAVAILABLE`: Due to a transient condition, such as all workers being
1431         //   occupied (and the server does not support a queue), the action could not
1432         //   be started. The client should retry.
1433         // * `INTERNAL`: An internal error occurred in the execution engine or the
1434         //   worker.
1435         // * `DEADLINE_EXCEEDED`: The execution timed out.
1436         Execute(context.Context, *ExecuteRequest) (*google_longrunning.Operation, error)
1437 }
1438
1439 func RegisterExecutionServer(s *grpc.Server, srv ExecutionServer) {
1440         s.RegisterService(&_Execution_serviceDesc, srv)
1441 }
1442
1443 func _Execution_Execute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
1444         in := new(ExecuteRequest)
1445         if err := dec(in); err != nil {
1446                 return nil, err
1447         }
1448         if interceptor == nil {
1449                 return srv.(ExecutionServer).Execute(ctx, in)
1450         }
1451         info := &grpc.UnaryServerInfo{
1452                 Server:     srv,
1453                 FullMethod: "/google.devtools.remoteexecution.v1test.Execution/Execute",
1454         }
1455         handler := func(ctx context.Context, req interface{}) (interface{}, error) {
1456                 return srv.(ExecutionServer).Execute(ctx, req.(*ExecuteRequest))
1457         }
1458         return interceptor(ctx, in, info, handler)
1459 }
1460
1461 var _Execution_serviceDesc = grpc.ServiceDesc{
1462         ServiceName: "google.devtools.remoteexecution.v1test.Execution",
1463         HandlerType: (*ExecutionServer)(nil),
1464         Methods: []grpc.MethodDesc{
1465                 {
1466                         MethodName: "Execute",
1467                         Handler:    _Execution_Execute_Handler,
1468                 },
1469         },
1470         Streams:  []grpc.StreamDesc{},
1471         Metadata: "google/devtools/remoteexecution/v1test/remote_execution.proto",
1472 }
1473
1474 // Client API for ActionCache service
1475
1476 type ActionCacheClient interface {
1477         // Retrieve a cached execution result.
1478         //
1479         // Errors:
1480         // * `NOT_FOUND`: The requested `ActionResult` is not in the cache.
1481         GetActionResult(ctx context.Context, in *GetActionResultRequest, opts ...grpc.CallOption) (*ActionResult, error)
1482         // Upload a new execution result.
1483         //
1484         // This method is intended for servers which implement the distributed cache
1485         // independently of the [Execution][google.devtools.remoteexecution.v1test.Execution]
1486         // API. As a result, it is OPTIONAL for servers to implement.
1487         //
1488         // Errors:
1489         // * `NOT_IMPLEMENTED`: This method is not supported by the server.
1490         // * `RESOURCE_EXHAUSTED`: There is insufficient storage space to add the
1491         //   entry to the cache.
1492         UpdateActionResult(ctx context.Context, in *UpdateActionResultRequest, opts ...grpc.CallOption) (*ActionResult, error)
1493 }
1494
1495 type actionCacheClient struct {
1496         cc *grpc.ClientConn
1497 }
1498
1499 func NewActionCacheClient(cc *grpc.ClientConn) ActionCacheClient {
1500         return &actionCacheClient{cc}
1501 }
1502
1503 func (c *actionCacheClient) GetActionResult(ctx context.Context, in *GetActionResultRequest, opts ...grpc.CallOption) (*ActionResult, error) {
1504         out := new(ActionResult)
1505         err := grpc.Invoke(ctx, "/google.devtools.remoteexecution.v1test.ActionCache/GetActionResult", in, out, c.cc, opts...)
1506         if err != nil {
1507                 return nil, err
1508         }
1509         return out, nil
1510 }
1511
1512 func (c *actionCacheClient) UpdateActionResult(ctx context.Context, in *UpdateActionResultRequest, opts ...grpc.CallOption) (*ActionResult, error) {
1513         out := new(ActionResult)
1514         err := grpc.Invoke(ctx, "/google.devtools.remoteexecution.v1test.ActionCache/UpdateActionResult", in, out, c.cc, opts...)
1515         if err != nil {
1516                 return nil, err
1517         }
1518         return out, nil
1519 }
1520
1521 // Server API for ActionCache service
1522
1523 type ActionCacheServer interface {
1524         // Retrieve a cached execution result.
1525         //
1526         // Errors:
1527         // * `NOT_FOUND`: The requested `ActionResult` is not in the cache.
1528         GetActionResult(context.Context, *GetActionResultRequest) (*ActionResult, error)
1529         // Upload a new execution result.
1530         //
1531         // This method is intended for servers which implement the distributed cache
1532         // independently of the [Execution][google.devtools.remoteexecution.v1test.Execution]
1533         // API. As a result, it is OPTIONAL for servers to implement.
1534         //
1535         // Errors:
1536         // * `NOT_IMPLEMENTED`: This method is not supported by the server.
1537         // * `RESOURCE_EXHAUSTED`: There is insufficient storage space to add the
1538         //   entry to the cache.
1539         UpdateActionResult(context.Context, *UpdateActionResultRequest) (*ActionResult, error)
1540 }
1541
1542 func RegisterActionCacheServer(s *grpc.Server, srv ActionCacheServer) {
1543         s.RegisterService(&_ActionCache_serviceDesc, srv)
1544 }
1545
1546 func _ActionCache_GetActionResult_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
1547         in := new(GetActionResultRequest)
1548         if err := dec(in); err != nil {
1549                 return nil, err
1550         }
1551         if interceptor == nil {
1552                 return srv.(ActionCacheServer).GetActionResult(ctx, in)
1553         }
1554         info := &grpc.UnaryServerInfo{
1555                 Server:     srv,
1556                 FullMethod: "/google.devtools.remoteexecution.v1test.ActionCache/GetActionResult",
1557         }
1558         handler := func(ctx context.Context, req interface{}) (interface{}, error) {
1559                 return srv.(ActionCacheServer).GetActionResult(ctx, req.(*GetActionResultRequest))
1560         }
1561         return interceptor(ctx, in, info, handler)
1562 }
1563
1564 func _ActionCache_UpdateActionResult_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
1565         in := new(UpdateActionResultRequest)
1566         if err := dec(in); err != nil {
1567                 return nil, err
1568         }
1569         if interceptor == nil {
1570                 return srv.(ActionCacheServer).UpdateActionResult(ctx, in)
1571         }
1572         info := &grpc.UnaryServerInfo{
1573                 Server:     srv,
1574                 FullMethod: "/google.devtools.remoteexecution.v1test.ActionCache/UpdateActionResult",
1575         }
1576         handler := func(ctx context.Context, req interface{}) (interface{}, error) {
1577                 return srv.(ActionCacheServer).UpdateActionResult(ctx, req.(*UpdateActionResultRequest))
1578         }
1579         return interceptor(ctx, in, info, handler)
1580 }
1581
1582 var _ActionCache_serviceDesc = grpc.ServiceDesc{
1583         ServiceName: "google.devtools.remoteexecution.v1test.ActionCache",
1584         HandlerType: (*ActionCacheServer)(nil),
1585         Methods: []grpc.MethodDesc{
1586                 {
1587                         MethodName: "GetActionResult",
1588                         Handler:    _ActionCache_GetActionResult_Handler,
1589                 },
1590                 {
1591                         MethodName: "UpdateActionResult",
1592                         Handler:    _ActionCache_UpdateActionResult_Handler,
1593                 },
1594         },
1595         Streams:  []grpc.StreamDesc{},
1596         Metadata: "google/devtools/remoteexecution/v1test/remote_execution.proto",
1597 }
1598
1599 // Client API for ContentAddressableStorage service
1600
1601 type ContentAddressableStorageClient interface {
1602         // Determine if blobs are present in the CAS.
1603         //
1604         // Clients can use this API before uploading blobs to determine which ones are
1605         // already present in the CAS and do not need to be uploaded again.
1606         //
1607         // There are no method-specific errors.
1608         FindMissingBlobs(ctx context.Context, in *FindMissingBlobsRequest, opts ...grpc.CallOption) (*FindMissingBlobsResponse, error)
1609         // Upload many blobs at once.
1610         //
1611         // The client MUST NOT upload blobs with a combined total size of more than 10
1612         // MiB using this API. Such requests should either be split into smaller
1613         // chunks or uploaded using the
1614         // [ByteStream API][google.bytestream.ByteStream], as appropriate.
1615         //
1616         // This request is equivalent to calling [UpdateBlob][] on each individual
1617         // blob, in parallel. The requests may succeed or fail independently.
1618         //
1619         // Errors:
1620         // * `INVALID_ARGUMENT`: The client attempted to upload more than 10 MiB of
1621         //   data.
1622         //
1623         // Individual requests may return the following errors, additionally:
1624         // * `RESOURCE_EXHAUSTED`: There is insufficient disk quota to store the blob.
1625         // * `INVALID_ARGUMENT`: The [Digest][google.devtools.remoteexecution.v1test.Digest]
1626         // does not match the provided data.
1627         BatchUpdateBlobs(ctx context.Context, in *BatchUpdateBlobsRequest, opts ...grpc.CallOption) (*BatchUpdateBlobsResponse, error)
1628         // Fetch the entire directory tree rooted at a node.
1629         //
1630         // This request must be targeted at a
1631         // [Directory][google.devtools.remoteexecution.v1test.Directory] stored in the
1632         // [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage]
1633         // (CAS). The server will enumerate the `Directory` tree recursively and
1634         // return every node descended from the root.
1635         // The exact traversal order is unspecified and, unless retrieving subsequent
1636         // pages from an earlier request, is not guaranteed to be stable across
1637         // multiple invocations of `GetTree`.
1638         //
1639         // If part of the tree is missing from the CAS, the server will return the
1640         // portion present and omit the rest.
1641         //
1642         // * `NOT_FOUND`: The requested tree root is not present in the CAS.
1643         GetTree(ctx context.Context, in *GetTreeRequest, opts ...grpc.CallOption) (*GetTreeResponse, error)
1644 }
1645
1646 type contentAddressableStorageClient struct {
1647         cc *grpc.ClientConn
1648 }
1649
1650 func NewContentAddressableStorageClient(cc *grpc.ClientConn) ContentAddressableStorageClient {
1651         return &contentAddressableStorageClient{cc}
1652 }
1653
1654 func (c *contentAddressableStorageClient) FindMissingBlobs(ctx context.Context, in *FindMissingBlobsRequest, opts ...grpc.CallOption) (*FindMissingBlobsResponse, error) {
1655         out := new(FindMissingBlobsResponse)
1656         err := grpc.Invoke(ctx, "/google.devtools.remoteexecution.v1test.ContentAddressableStorage/FindMissingBlobs", in, out, c.cc, opts...)
1657         if err != nil {
1658                 return nil, err
1659         }
1660         return out, nil
1661 }
1662
1663 func (c *contentAddressableStorageClient) BatchUpdateBlobs(ctx context.Context, in *BatchUpdateBlobsRequest, opts ...grpc.CallOption) (*BatchUpdateBlobsResponse, error) {
1664         out := new(BatchUpdateBlobsResponse)
1665         err := grpc.Invoke(ctx, "/google.devtools.remoteexecution.v1test.ContentAddressableStorage/BatchUpdateBlobs", in, out, c.cc, opts...)
1666         if err != nil {
1667                 return nil, err
1668         }
1669         return out, nil
1670 }
1671
1672 func (c *contentAddressableStorageClient) GetTree(ctx context.Context, in *GetTreeRequest, opts ...grpc.CallOption) (*GetTreeResponse, error) {
1673         out := new(GetTreeResponse)
1674         err := grpc.Invoke(ctx, "/google.devtools.remoteexecution.v1test.ContentAddressableStorage/GetTree", in, out, c.cc, opts...)
1675         if err != nil {
1676                 return nil, err
1677         }
1678         return out, nil
1679 }
1680
1681 // Server API for ContentAddressableStorage service
1682
1683 type ContentAddressableStorageServer interface {
1684         // Determine if blobs are present in the CAS.
1685         //
1686         // Clients can use this API before uploading blobs to determine which ones are
1687         // already present in the CAS and do not need to be uploaded again.
1688         //
1689         // There are no method-specific errors.
1690         FindMissingBlobs(context.Context, *FindMissingBlobsRequest) (*FindMissingBlobsResponse, error)
1691         // Upload many blobs at once.
1692         //
1693         // The client MUST NOT upload blobs with a combined total size of more than 10
1694         // MiB using this API. Such requests should either be split into smaller
1695         // chunks or uploaded using the
1696         // [ByteStream API][google.bytestream.ByteStream], as appropriate.
1697         //
1698         // This request is equivalent to calling [UpdateBlob][] on each individual
1699         // blob, in parallel. The requests may succeed or fail independently.
1700         //
1701         // Errors:
1702         // * `INVALID_ARGUMENT`: The client attempted to upload more than 10 MiB of
1703         //   data.
1704         //
1705         // Individual requests may return the following errors, additionally:
1706         // * `RESOURCE_EXHAUSTED`: There is insufficient disk quota to store the blob.
1707         // * `INVALID_ARGUMENT`: The [Digest][google.devtools.remoteexecution.v1test.Digest]
1708         // does not match the provided data.
1709         BatchUpdateBlobs(context.Context, *BatchUpdateBlobsRequest) (*BatchUpdateBlobsResponse, error)
1710         // Fetch the entire directory tree rooted at a node.
1711         //
1712         // This request must be targeted at a
1713         // [Directory][google.devtools.remoteexecution.v1test.Directory] stored in the
1714         // [ContentAddressableStorage][google.devtools.remoteexecution.v1test.ContentAddressableStorage]
1715         // (CAS). The server will enumerate the `Directory` tree recursively and
1716         // return every node descended from the root.
1717         // The exact traversal order is unspecified and, unless retrieving subsequent
1718         // pages from an earlier request, is not guaranteed to be stable across
1719         // multiple invocations of `GetTree`.
1720         //
1721         // If part of the tree is missing from the CAS, the server will return the
1722         // portion present and omit the rest.
1723         //
1724         // * `NOT_FOUND`: The requested tree root is not present in the CAS.
1725         GetTree(context.Context, *GetTreeRequest) (*GetTreeResponse, error)
1726 }
1727
1728 func RegisterContentAddressableStorageServer(s *grpc.Server, srv ContentAddressableStorageServer) {
1729         s.RegisterService(&_ContentAddressableStorage_serviceDesc, srv)
1730 }
1731
1732 func _ContentAddressableStorage_FindMissingBlobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
1733         in := new(FindMissingBlobsRequest)
1734         if err := dec(in); err != nil {
1735                 return nil, err
1736         }
1737         if interceptor == nil {
1738                 return srv.(ContentAddressableStorageServer).FindMissingBlobs(ctx, in)
1739         }
1740         info := &grpc.UnaryServerInfo{
1741                 Server:     srv,
1742                 FullMethod: "/google.devtools.remoteexecution.v1test.ContentAddressableStorage/FindMissingBlobs",
1743         }
1744         handler := func(ctx context.Context, req interface{}) (interface{}, error) {
1745                 return srv.(ContentAddressableStorageServer).FindMissingBlobs(ctx, req.(*FindMissingBlobsRequest))
1746         }
1747         return interceptor(ctx, in, info, handler)
1748 }
1749
1750 func _ContentAddressableStorage_BatchUpdateBlobs_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
1751         in := new(BatchUpdateBlobsRequest)
1752         if err := dec(in); err != nil {
1753                 return nil, err
1754         }
1755         if interceptor == nil {
1756                 return srv.(ContentAddressableStorageServer).BatchUpdateBlobs(ctx, in)
1757         }
1758         info := &grpc.UnaryServerInfo{
1759                 Server:     srv,
1760                 FullMethod: "/google.devtools.remoteexecution.v1test.ContentAddressableStorage/BatchUpdateBlobs",
1761         }
1762         handler := func(ctx context.Context, req interface{}) (interface{}, error) {
1763                 return srv.(ContentAddressableStorageServer).BatchUpdateBlobs(ctx, req.(*BatchUpdateBlobsRequest))
1764         }
1765         return interceptor(ctx, in, info, handler)
1766 }
1767
1768 func _ContentAddressableStorage_GetTree_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
1769         in := new(GetTreeRequest)
1770         if err := dec(in); err != nil {
1771                 return nil, err
1772         }
1773         if interceptor == nil {
1774                 return srv.(ContentAddressableStorageServer).GetTree(ctx, in)
1775         }
1776         info := &grpc.UnaryServerInfo{
1777                 Server:     srv,
1778                 FullMethod: "/google.devtools.remoteexecution.v1test.ContentAddressableStorage/GetTree",
1779         }
1780         handler := func(ctx context.Context, req interface{}) (interface{}, error) {
1781                 return srv.(ContentAddressableStorageServer).GetTree(ctx, req.(*GetTreeRequest))
1782         }
1783         return interceptor(ctx, in, info, handler)
1784 }
1785
1786 var _ContentAddressableStorage_serviceDesc = grpc.ServiceDesc{
1787         ServiceName: "google.devtools.remoteexecution.v1test.ContentAddressableStorage",
1788         HandlerType: (*ContentAddressableStorageServer)(nil),
1789         Methods: []grpc.MethodDesc{
1790                 {
1791                         MethodName: "FindMissingBlobs",
1792                         Handler:    _ContentAddressableStorage_FindMissingBlobs_Handler,
1793                 },
1794                 {
1795                         MethodName: "BatchUpdateBlobs",
1796                         Handler:    _ContentAddressableStorage_BatchUpdateBlobs_Handler,
1797                 },
1798                 {
1799                         MethodName: "GetTree",
1800                         Handler:    _ContentAddressableStorage_GetTree_Handler,
1801                 },
1802         },
1803         Streams:  []grpc.StreamDesc{},
1804         Metadata: "google/devtools/remoteexecution/v1test/remote_execution.proto",
1805 }
1806
1807 func init() {
1808         proto.RegisterFile("google/devtools/remoteexecution/v1test/remote_execution.proto", fileDescriptor0)
1809 }
1810
1811 var fileDescriptor0 = []byte{
1812         // 1747 bytes of a gzipped FileDescriptorProto
1813         0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xcb, 0x6f, 0x1c, 0x49,
1814         0x19, 0xa7, 0x67, 0x3c, 0xaf, 0x6f, 0xc6, 0xaf, 0x5a, 0xb3, 0x99, 0xcc, 0x6e, 0x90, 0xe9, 0x95,
1815         0x56, 0xd6, 0x68, 0xb7, 0x07, 0x3b, 0xbb, 0x44, 0x78, 0x15, 0x82, 0x3d, 0x1e, 0x3b, 0x51, 0x1c,
1816         0xdb, 0x69, 0x7b, 0xf2, 0x22, 0x52, 0xd3, 0x33, 0x5d, 0x1e, 0x37, 0x9e, 0xe9, 0x6a, 0xaa, 0x6a,
1817         0x1c, 0x27, 0x21, 0x1c, 0x10, 0x12, 0x07, 0x04, 0x12, 0x44, 0x08, 0x24, 0x6e, 0x48, 0x08, 0x09,
1818         0x71, 0xe2, 0x3f, 0x80, 0x3f, 0x80, 0x03, 0x5c, 0x38, 0x23, 0x4e, 0x9c, 0x38, 0x23, 0x24, 0x50,
1819         0x3d, 0x7a, 0x5e, 0xb6, 0x49, 0x8f, 0x1d, 0x4b, 0x7b, 0xeb, 0xfa, 0xaa, 0xbe, 0xdf, 0xf7, 0xfe,
1820         0xbe, 0xaa, 0x86, 0x9b, 0x2d, 0x42, 0x5a, 0x6d, 0x5c, 0xf1, 0xf0, 0x11, 0x27, 0xa4, 0xcd, 0x2a,
1821         0x14, 0x77, 0x08, 0xc7, 0xf8, 0x18, 0x37, 0xbb, 0xdc, 0x27, 0x41, 0xe5, 0x68, 0x91, 0x63, 0xc6,
1822         0x35, 0xd9, 0xe9, 0xd1, 0xad, 0x90, 0x12, 0x4e, 0xd0, 0x87, 0x8a, 0xdd, 0x8a, 0xd8, 0xad, 0x11,
1823         0x76, 0x4b, 0xb1, 0x97, 0xde, 0xd7, 0x62, 0xdc, 0xd0, 0xaf, 0xb8, 0x41, 0x40, 0xb8, 0x2b, 0x76,
1824         0x99, 0x42, 0x29, 0x7d, 0xa0, 0x77, 0xdb, 0x24, 0x68, 0xd1, 0x6e, 0x10, 0xf8, 0x41, 0xab, 0x42,
1825         0x42, 0x4c, 0x87, 0x0e, 0x7d, 0x49, 0x1f, 0x92, 0xab, 0x46, 0x77, 0xbf, 0xe2, 0x75, 0xd5, 0x01,
1826         0xbd, 0x7f, 0x45, 0xef, 0xd3, 0xb0, 0x59, 0x61, 0xdc, 0xe5, 0x5d, 0xcd, 0x68, 0xfe, 0x21, 0x09,
1827         0xe9, 0x95, 0xa6, 0x38, 0x89, 0xea, 0x30, 0xd5, 0x24, 0x9d, 0x8e, 0x1b, 0x78, 0x8e, 0xe7, 0xb7,
1828         0x30, 0xe3, 0x45, 0x63, 0xde, 0x58, 0xc8, 0x2f, 0x59, 0x56, 0x3c, 0x3b, 0xac, 0x35, 0xc9, 0x65,
1829         0x4f, 0x6a, 0x14, 0xb5, 0x44, 0x4f, 0x60, 0xd6, 0x0f, 0xc2, 0x2e, 0x77, 0x28, 0x21, 0x3c, 0x42,
1830         0x4e, 0x9c, 0x0b, 0x79, 0x5a, 0x02, 0xd9, 0x84, 0x70, 0x8d, 0xfd, 0x65, 0x28, 0x90, 0x2e, 0x17,
1831         0xe0, 0xfb, 0x7e, 0x1b, 0xb3, 0x62, 0x72, 0x3e, 0xb9, 0x90, 0xb3, 0xf3, 0x8a, 0xb6, 0x2e, 0x48,
1832         0xe8, 0x63, 0x40, 0xfa, 0x88, 0xe7, 0x53, 0xdc, 0xe4, 0x84, 0xfa, 0x98, 0x15, 0x27, 0xe4, 0xc1,
1833         0x59, 0xb5, 0xb3, 0xd6, 0xdf, 0x40, 0x9b, 0x90, 0x0d, 0xdb, 0x2e, 0xdf, 0x27, 0xb4, 0x53, 0x4c,
1834         0x49, 0x25, 0xbf, 0x12, 0x57, 0xc9, 0x1d, 0xcd, 0x67, 0xf7, 0x10, 0xd0, 0x75, 0xc8, 0x70, 0xbf,
1835         0x83, 0x49, 0x97, 0x17, 0xd3, 0x12, 0xec, 0x6a, 0x04, 0x16, 0x05, 0xca, 0x5a, 0xd3, 0x81, 0xb2,
1836         0xa3, 0x93, 0x68, 0x1e, 0x0a, 0x1e, 0x71, 0x02, 0xc2, 0x9d, 0xa6, 0xdb, 0x3c, 0xc0, 0xc5, 0xcc,
1837         0xbc, 0xb1, 0x90, 0xb5, 0xc1, 0x23, 0x5b, 0x84, 0x57, 0x05, 0xc5, 0xfc, 0xbb, 0x01, 0x99, 0xaa,
1838         0x72, 0x32, 0x7a, 0x1f, 0x72, 0x2e, 0x6d, 0x75, 0x3b, 0x38, 0xe0, 0xac, 0x68, 0x48, 0xb3, 0xfa,
1839         0x04, 0x74, 0x0c, 0x5f, 0xc4, 0xc1, 0x91, 0x4f, 0x49, 0x20, 0xd6, 0xce, 0x91, 0x4b, 0x7d, 0xb7,
1840         0x21, 0x3c, 0x95, 0x98, 0x4f, 0x2e, 0xe4, 0x97, 0xaa, 0x71, 0x6d, 0xd3, 0xd2, 0xac, 0x5a, 0x1f,
1841         0xec, 0x81, 0xc6, 0xb2, 0xe7, 0xf0, 0x49, 0x22, 0x2b, 0xdd, 0x82, 0x77, 0x4e, 0x39, 0x8c, 0x10,
1842         0x4c, 0x04, 0x6e, 0x07, 0xcb, 0xd4, 0xca, 0xd9, 0xf2, 0x1b, 0xcd, 0x41, 0xea, 0xc8, 0x6d, 0x77,
1843         0xb1, 0xcc, 0x8a, 0x9c, 0xad, 0x16, 0xe6, 0xaf, 0x0c, 0xc8, 0x46, 0x2e, 0x45, 0x8f, 0x01, 0x42,
1844         0x2a, 0xb2, 0x9e, 0x8b, 0xe8, 0x19, 0x52, 0xf9, 0xaf, 0x8d, 0x1b, 0x18, 0x6b, 0x47, 0x41, 0x3c,
1845         0xb7, 0x07, 0xc0, 0x4a, 0x9f, 0x40, 0x36, 0xa2, 0x8f, 0xa1, 0xdd, 0xef, 0x0d, 0xc8, 0x45, 0x79,
1846         0xf3, 0x1c, 0xad, 0x43, 0x4a, 0x25, 0xa0, 0xd2, 0x2c, 0x76, 0xca, 0x88, 0x14, 0xdd, 0x22, 0x1e,
1847         0xb6, 0x15, 0x3b, 0x7a, 0x08, 0xf9, 0xc1, 0x2c, 0x55, 0x41, 0xfa, 0x34, 0x7e, 0x95, 0x68, 0x7d,
1848         0x24, 0xe4, 0x20, 0x92, 0xf9, 0x23, 0x03, 0xb2, 0x91, 0xb0, 0x53, 0xad, 0x5c, 0x87, 0xf4, 0x85,
1849         0x4a, 0x53, 0x73, 0xa3, 0x0f, 0x60, 0xd2, 0x67, 0xba, 0x13, 0x8a, 0x80, 0x17, 0x27, 0x64, 0xf6,
1850         0x16, 0x7c, 0x56, 0xeb, 0xd1, 0xcc, 0x43, 0x98, 0x1c, 0xd2, 0xf5, 0x32, 0x35, 0x32, 0x3f, 0x83,
1851         0xb4, 0xee, 0x16, 0x08, 0x26, 0x0e, 0x5c, 0x76, 0x10, 0x49, 0x11, 0xdf, 0xe8, 0x1a, 0x00, 0xf3,
1852         0x5f, 0x60, 0xa7, 0xf1, 0x9c, 0x4b, 0x87, 0x1b, 0x0b, 0x49, 0x3b, 0x27, 0x28, 0xab, 0x82, 0x60,
1853         0xfe, 0x25, 0x09, 0x05, 0xd5, 0x1e, 0x6d, 0xcc, 0xba, 0x6d, 0x8e, 0xea, 0x23, 0x1d, 0x47, 0x85,
1854         0x68, 0x29, 0xae, 0x6e, 0xdb, 0xbd, 0xce, 0x34, 0xdc, 0xa5, 0xf6, 0x4f, 0xed, 0x52, 0x49, 0x09,
1855         0x7e, 0x63, 0x3c, 0xf0, 0x9e, 0x67, 0x4f, 0x6b, 0x6f, 0xef, 0x41, 0x0e, 0x1f, 0xfb, 0xdc, 0x69,
1856         0x12, 0x4f, 0x85, 0x26, 0x65, 0x67, 0x05, 0xa1, 0x2a, 0xa2, 0x20, 0x7c, 0xc1, 0x3d, 0x22, 0x5a,
1857         0xb5, 0xfb, 0x4c, 0x76, 0xbf, 0x82, 0x9d, 0x53, 0x14, 0xdb, 0x7d, 0x86, 0x76, 0x61, 0x52, 0x6f,
1858         0xeb, 0xb8, 0xa4, 0xcf, 0x15, 0x97, 0x82, 0x02, 0xd1, 0x31, 0x51, 0x32, 0x31, 0xa5, 0x52, 0x66,
1859         0xa6, 0x27, 0x13, 0x53, 0xda, 0x97, 0x29, 0xb6, 0xb5, 0xcc, 0xec, 0xb9, 0x65, 0x62, 0x4a, 0xd5,
1860         0xca, 0xfc, 0xad, 0x01, 0xd0, 0x0f, 0x84, 0x48, 0x8b, 0xd0, 0xe5, 0xbd, 0xb4, 0x10, 0xdf, 0x6f,
1861         0xad, 0x1c, 0x8a, 0x90, 0x69, 0x92, 0x80, 0xe3, 0x80, 0x17, 0x93, 0xd2, 0xb6, 0x68, 0x19, 0xaf,
1862         0x50, 0x3a, 0x30, 0x3d, 0x12, 0xd4, 0xcb, 0xd4, 0xd6, 0x7c, 0x9d, 0x80, 0x29, 0x25, 0x1d, 0xdb,
1863         0xf8, 0x3b, 0xdd, 0xa8, 0x9e, 0x03, 0xc6, 0xdd, 0xa0, 0x89, 0x9d, 0x81, 0x12, 0x2d, 0x44, 0xc4,
1864         0x2d, 0x5d, 0xaa, 0xae, 0x2c, 0x92, 0x71, 0xe5, 0xeb, 0xd2, 0xd2, 0xdc, 0xa8, 0x0c, 0xb3, 0xec,
1865         0xd0, 0x0f, 0xd5, 0xdc, 0x73, 0xda, 0x84, 0x1c, 0x76, 0x43, 0xe9, 0xb7, 0xac, 0x3d, 0x2d, 0x36,
1866         0xe4, 0xf4, 0xdb, 0x94, 0x64, 0x74, 0x1d, 0xde, 0xe5, 0x84, 0xbb, 0x6d, 0x47, 0x5d, 0x2e, 0x44,
1867         0x35, 0x3a, 0x4d, 0xd2, 0x0d, 0xb8, 0x4e, 0xeb, 0x77, 0xe4, 0xee, 0x9d, 0x40, 0x47, 0xb9, 0x2a,
1868         0xb6, 0x4e, 0x65, 0x52, 0x95, 0x9f, 0x92, 0x95, 0x3f, 0xc2, 0xa4, 0x7a, 0xc0, 0x0f, 0x0c, 0x98,
1869         0xee, 0x79, 0x85, 0x85, 0x24, 0x60, 0x18, 0x6d, 0x42, 0x9a, 0xca, 0x86, 0xa0, 0xef, 0x48, 0x9f,
1870         0x8c, 0x69, 0xb1, 0xe4, 0xb5, 0x35, 0x86, 0x70, 0xb2, 0x34, 0xd9, 0x73, 0x34, 0x68, 0x42, 0xe5,
1871         0x82, 0x22, 0xaa, 0xc3, 0xe6, 0xbf, 0x13, 0x50, 0xd4, 0x6a, 0x6c, 0x47, 0xd7, 0xbf, 0x7b, 0x98,
1872         0xbb, 0x9e, 0xcb, 0x5d, 0xf4, 0x14, 0x52, 0x8c, 0xbb, 0x2d, 0x15, 0x9e, 0xa9, 0xa5, 0xf5, 0xb8,
1873         0xea, 0x9c, 0x05, 0x68, 0xed, 0x0a, 0x34, 0x5b, 0x81, 0x8a, 0x2a, 0x54, 0x11, 0xba, 0xd8, 0xf5,
1874         0xad, 0xa0, 0x40, 0x74, 0xe5, 0x7f, 0x04, 0x48, 0xb7, 0x13, 0xc6, 0x29, 0x76, 0x3b, 0x2a, 0xbd,
1875         0x92, 0x32, 0xbd, 0x66, 0xd4, 0xce, 0xae, 0xdc, 0x90, 0x29, 0xa6, 0x4e, 0x8b, 0x46, 0x30, 0x78,
1876         0x7a, 0xa2, 0x77, 0x1a, 0x53, 0xda, 0x3f, 0x6d, 0x6e, 0x43, 0x4a, 0x1a, 0x80, 0xf2, 0x90, 0xa9,
1877         0x6f, 0xdd, 0xdd, 0xda, 0x7e, 0xb8, 0x35, 0xf3, 0x05, 0x34, 0x0d, 0xf9, 0xea, 0x4a, 0xf5, 0x76,
1878         0xcd, 0xa9, 0xde, 0xae, 0x55, 0xef, 0xce, 0x18, 0x08, 0x20, 0x7d, 0xbf, 0x5e, 0xab, 0xd7, 0xd6,
1879         0x66, 0x12, 0x68, 0x12, 0x72, 0xb5, 0x47, 0xb5, 0x6a, 0x7d, 0xef, 0xce, 0xd6, 0xc6, 0x4c, 0x52,
1880         0x2c, 0xab, 0xdb, 0xf7, 0x76, 0x36, 0x6b, 0x7b, 0xb5, 0xb5, 0x99, 0x09, 0xf3, 0x67, 0x06, 0xbc,
1881         0xbb, 0x81, 0xf9, 0x50, 0xf4, 0xc6, 0xa9, 0x90, 0xcb, 0xf0, 0xa0, 0xf9, 0x2f, 0x03, 0xae, 0xd6,
1882         0x43, 0xcf, 0xe5, 0xf8, 0x73, 0xa5, 0x17, 0x7a, 0xdc, 0x03, 0xd5, 0xe9, 0x9c, 0xbc, 0x40, 0x8d,
1883         0x68, 0x68, 0x5d, 0x04, 0x3f, 0x35, 0xe0, 0xca, 0xba, 0x1f, 0x78, 0xf7, 0x7c, 0xc6, 0xfc, 0xa0,
1884         0xb5, 0xda, 0x26, 0x0d, 0x36, 0x96, 0xc1, 0xf7, 0xa1, 0xd0, 0x68, 0x93, 0x86, 0x36, 0x37, 0x9a,
1885         0xdf, 0xe3, 0xda, 0x9b, 0x17, 0x18, 0xea, 0x9b, 0x99, 0xdf, 0x85, 0xe2, 0x49, 0x95, 0x74, 0x9f,
1886         0xf8, 0x16, 0xcc, 0x75, 0x14, 0xdd, 0x79, 0x0b, 0x62, 0x51, 0xa7, 0x2f, 0x23, 0x92, 0xfe, 0x3d,
1887         0x98, 0x55, 0x39, 0x20, 0x88, 0x91, 0x2b, 0xe4, 0x53, 0x4e, 0xce, 0x99, 0x0b, 0x3f, 0xe5, 0x24,
1888         0x4a, 0xff, 0x02, 0x25, 0x9a, 0x83, 0x4c, 0x92, 0x82, 0x2d, 0xbf, 0xcd, 0x9f, 0x1b, 0x70, 0x65,
1889         0xd5, 0xe5, 0xcd, 0x83, 0xbe, 0x16, 0xe3, 0x45, 0xa4, 0x0e, 0x59, 0xaa, 0xce, 0x47, 0x6e, 0x89,
1890         0x7d, 0xb1, 0x3f, 0x61, 0xb8, 0xdd, 0x83, 0x32, 0x7f, 0x9c, 0x80, 0xe2, 0x49, 0xbd, 0x74, 0x58,
1891         0x5a, 0x90, 0xa3, 0xfa, 0x3b, 0xba, 0xb3, 0xdf, 0x89, 0x2b, 0xf4, 0x2c, 0x50, 0x2b, 0xfa, 0xb0,
1892         0xfb, 0xd8, 0xa5, 0x1f, 0x1a, 0x90, 0xed, 0x49, 0xdd, 0x86, 0xfc, 0x40, 0x12, 0x9c, 0x33, 0x24,
1893         0xd0, 0x4f, 0x3d, 0x54, 0x86, 0xb4, 0x7a, 0xcc, 0xeb, 0xb2, 0x45, 0x11, 0x16, 0x0d, 0x9b, 0xa2,
1894         0x83, 0xf3, 0x2e, 0xb3, 0xf5, 0x09, 0xf3, 0x4f, 0x06, 0x4c, 0x6d, 0x60, 0xbe, 0x47, 0xf1, 0x78,
1895         0xb3, 0x7d, 0x1b, 0xf2, 0x17, 0x7f, 0xb8, 0x03, 0xed, 0xbf, 0xd9, 0xdf, 0x83, 0x5c, 0xe8, 0xb6,
1896         0xb0, 0x23, 0x2e, 0xd9, 0xb2, 0x33, 0xa4, 0xec, 0xac, 0x20, 0xec, 0xfa, 0x2f, 0xe4, 0x15, 0x54,
1897         0x6e, 0x72, 0x72, 0x88, 0x03, 0xdd, 0xde, 0xe5, 0xf1, 0x3d, 0x41, 0x30, 0x7f, 0x62, 0xc0, 0x74,
1898         0xcf, 0x08, 0xed, 0xd5, 0xdd, 0xe1, 0x37, 0x93, 0x8a, 0xe6, 0xe2, 0xd8, 0x6f, 0xa6, 0xa1, 0xf7,
1899         0x12, 0xfa, 0x10, 0xa6, 0x03, 0x7c, 0xcc, 0x9d, 0x01, 0x65, 0xd4, 0xf3, 0x6f, 0x52, 0x90, 0x77,
1900         0x22, 0x85, 0x96, 0x7e, 0x63, 0x40, 0xae, 0x16, 0x61, 0xa2, 0x5f, 0x18, 0x90, 0xd1, 0x13, 0x15,
1901         0x7d, 0x75, 0xcc, 0x11, 0xac, 0x83, 0x52, 0xba, 0x16, 0xf1, 0x0d, 0xfc, 0xef, 0xb1, 0x7a, 0xf3,
1902         0xd9, 0xfc, 0xf4, 0xfb, 0x7f, 0xfd, 0xc7, 0xeb, 0x44, 0xc5, 0x2c, 0x47, 0xff, 0x9e, 0x5e, 0x0e,
1903         0x85, 0xf0, 0x66, 0xb9, 0xfc, 0xaa, 0xa2, 0x3a, 0x26, 0x5b, 0x56, 0xa2, 0xf0, 0xb2, 0x51, 0x5e,
1904         0xfa, 0x4f, 0x12, 0xf2, 0xaa, 0xad, 0xca, 0x3b, 0x14, 0xfa, 0xa7, 0x72, 0xe4, 0xd0, 0xd3, 0xe6,
1905         0xeb, 0x71, 0x35, 0x3e, 0x7d, 0x10, 0x96, 0xce, 0xd5, 0xdf, 0x4d, 0x57, 0x1a, 0xf4, 0x4d, 0xf4,
1906         0xf8, 0x8d, 0x06, 0x7d, 0xac, 0xa6, 0x09, 0xab, 0xbc, 0x1c, 0x1a, 0x59, 0x96, 0x78, 0xc7, 0xbd,
1907         0x1a, 0x25, 0xf6, 0x1f, 0x75, 0xaf, 0xd0, 0x7f, 0x0d, 0x40, 0x27, 0xe7, 0x24, 0x5a, 0x19, 0xaf,
1908         0xcd, 0xbc, 0x3d, 0x93, 0x43, 0x69, 0xf2, 0xb7, 0x4b, 0x97, 0x67, 0xf2, 0xf2, 0xf0, 0x00, 0x5e,
1909         0xfa, 0x65, 0x0a, 0xae, 0x56, 0x55, 0x2b, 0x5f, 0xf1, 0x3c, 0x8a, 0x19, 0x13, 0xcf, 0x8b, 0x5d,
1910         0x4e, 0xa8, 0xb8, 0x24, 0xfd, 0xd9, 0x80, 0x99, 0xd1, 0x09, 0x86, 0x6e, 0xc5, 0xff, 0x87, 0x71,
1911         0xea, 0x38, 0x2e, 0x7d, 0xe3, 0xfc, 0x00, 0xaa, 0xb2, 0xcd, 0x1b, 0xd2, 0x4f, 0x8b, 0xe6, 0x47,
1912         0xff, 0xc7, 0x4f, 0xa2, 0x1b, 0xb2, 0xe5, 0xfd, 0x3e, 0xc4, 0xb2, 0x51, 0x96, 0x06, 0x8d, 0xb6,
1913         0xe9, 0xf8, 0x06, 0x9d, 0x31, 0xcd, 0xe2, 0x1b, 0x74, 0xd6, 0x84, 0x18, 0xc3, 0xa0, 0x46, 0x1f,
1914         0x42, 0x18, 0xf4, 0x37, 0x03, 0x32, 0xba, 0xef, 0xc5, 0x6f, 0x2c, 0xc3, 0xdd, 0xbe, 0x74, 0x63,
1915         0x6c, 0x3e, 0xad, 0xf5, 0x53, 0xa9, 0xf5, 0x03, 0xb4, 0xf7, 0x26, 0xad, 0x2b, 0x2f, 0x07, 0x26,
1916         0x45, 0x94, 0xa3, 0x83, 0xa4, 0xc1, 0x0c, 0x6d, 0x29, 0x29, 0xab, 0x7f, 0x34, 0xa0, 0xdc, 0x24,
1917         0x9d, 0x98, 0xca, 0xad, 0xce, 0xd9, 0x92, 0xde, 0xeb, 0xb9, 0x3b, 0x94, 0x70, 0xb2, 0x63, 0x3c,
1918         0xa9, 0x6b, 0xfe, 0x16, 0x69, 0xbb, 0x41, 0xcb, 0x22, 0xb4, 0x55, 0x69, 0xe1, 0x40, 0xfe, 0x65,
1919         0xad, 0xa8, 0x2d, 0x37, 0xf4, 0xd9, 0x9b, 0xfe, 0xe4, 0x7f, 0x36, 0x42, 0xfe, 0x75, 0x22, 0x69,
1920         0xd7, 0x1e, 0xfd, 0x2e, 0x71, 0x6d, 0x43, 0xa1, 0x8f, 0x08, 0xb7, 0x1e, 0x2c, 0xee, 0x61, 0xc6,
1921         0x1b, 0x69, 0x29, 0xe7, 0xfa, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xde, 0xd9, 0x80, 0xd0, 0x30,
1922         0x18, 0x00, 0x00,
1923 }