blob: aab78614d977c585bd9251380719e150656c6fb7 [file] [log] [blame]
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: go.chromium.org/luci/buildbucket/proto/build.proto
package buildbucketpb
import (
fmt "fmt"
proto "github.com/golang/protobuf/proto"
duration "github.com/golang/protobuf/ptypes/duration"
_struct "github.com/golang/protobuf/ptypes/struct"
timestamp "github.com/golang/protobuf/ptypes/timestamp"
api "go.chromium.org/luci/swarming/proto/api"
math "math"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
// A single build, identified by an int64 id.
// Belongs to a builder.
//
// RPC: see Builds service for build creation and retrieval.
// Some Build fields are marked as excluded from responses by default.
// Use build_fields request field to specify that a field must be included.
//
// BigQuery: this message also defines schema of a BigQuery table of completed builds.
// A BigQuery row is inserted soon after build ends, i.e. a row represents a state of
// a build at completion time and does not change after that.
// All fields are included.
//
// Next id: 28.
type Build struct {
// Identifier of the build, unique per LUCI deployment.
// IDs are monotonically decreasing.
Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
// Required. The builder this build belongs to.
//
// Tuple (builder.project, builder.bucket) defines build ACL
// which may change after build has ended.
Builder *BuilderID `protobuf:"bytes,2,opt,name=builder,proto3" json:"builder,omitempty"`
// Human-readable identifier of the build with the following properties:
// - unique within the builder
// - a monotonically increasing number
// - mostly contiguous
// - much shorter than id
//
// Caution: populated (positive number) iff build numbers were enabled
// in the builder configuration at the time of build creation.
//
// Caution: Build numbers are not guaranteed to be contiguous.
// There may be gaps during outages.
//
// Caution: Build numbers, while monotonically increasing, do not
// necessarily reflect source-code order. For example, force builds
// or rebuilds can allocate new, higher, numbers, but build an older-
// than-HEAD version of the source.
Number int32 `protobuf:"varint,3,opt,name=number,proto3" json:"number,omitempty"`
// Verified LUCI identity that created this build.
CreatedBy string `protobuf:"bytes,4,opt,name=created_by,json=createdBy,proto3" json:"created_by,omitempty"`
// Verified LUCI identity that canceled this build.
CanceledBy string `protobuf:"bytes,23,opt,name=canceled_by,json=canceledBy,proto3" json:"canceled_by,omitempty"`
// When the build was created.
CreateTime *timestamp.Timestamp `protobuf:"bytes,6,opt,name=create_time,json=createTime,proto3" json:"create_time,omitempty"`
// When the build started.
// Required iff status is STARTED, SUCCESS or FAILURE.
StartTime *timestamp.Timestamp `protobuf:"bytes,7,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`
// When the build ended.
// Present iff status is terminal.
// MUST NOT be before start_time.
EndTime *timestamp.Timestamp `protobuf:"bytes,8,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
// When the build was most recently updated.
//
// RPC: can be > end_time if, e.g. new tags were attached to a completed
// build.
UpdateTime *timestamp.Timestamp `protobuf:"bytes,9,opt,name=update_time,json=updateTime,proto3" json:"update_time,omitempty"`
// Status of the build.
// Must be specified, i.e. not STATUS_UNSPECIFIED.
//
// RPC: Responses have most current status.
//
// BigQuery: Final status of the build. Cannot be SCHEDULED or STARTED.
Status Status `protobuf:"varint,12,opt,name=status,proto3,enum=buildbucket.v2.Status" json:"status,omitempty"`
// Human-readable summary of the build in Markdown format
// (https://spec.commonmark.org/0.28/).
// Explains status.
// Up to 4 KB.
//
// BigQuery: excluded from rows.
SummaryMarkdown string `protobuf:"bytes,20,opt,name=summary_markdown,json=summaryMarkdown,proto3" json:"summary_markdown,omitempty"`
// If NO, then the build status SHOULD NOT be used to assess correctness of
// the input gitiles_commit or gerrit_changes.
// For example, if a pre-submit build has failed, CQ MAY still land the CL.
// For example, if a post-submit build has failed, CLs MAY continue landing.
Critical Trinary `protobuf:"varint,21,opt,name=critical,proto3,enum=buildbucket.v2.Trinary" json:"critical,omitempty"`
// Machine-readable details of the current status.
// Human-readable status reason is available in summary_markdown.
StatusDetails *StatusDetails `protobuf:"bytes,22,opt,name=status_details,json=statusDetails,proto3" json:"status_details,omitempty"`
// Input to the build executable.
Input *Build_Input `protobuf:"bytes,15,opt,name=input,proto3" json:"input,omitempty"`
// Output of the build executable.
// SHOULD depend only on input field and NOT other fields.
// MUST be unset if build status is SCHEDULED.
//
// RPC: By default, this field is excluded from responses.
// Updated while the build is running and finalized when the build ends.
Output *Build_Output `protobuf:"bytes,16,opt,name=output,proto3" json:"output,omitempty"`
// Current list of build steps.
// Updated as build runs.
//
// May take up to 1MB after zlib compression.
// MUST be unset if build status is SCHEDULED.
//
// RPC: By default, this field is excluded from responses.
Steps []*Step `protobuf:"bytes,17,rep,name=steps,proto3" json:"steps,omitempty"`
// Build infrastructure used by the build.
//
// RPC: By default, this field is excluded from responses.
Infra *BuildInfra `protobuf:"bytes,18,opt,name=infra,proto3" json:"infra,omitempty"`
// Arbitrary annotations for the build.
// One key may have multiple values, which is why this is not a map<string,string>.
// Indexed by the server, see also BuildFilter.tags.
Tags []*StringPair `protobuf:"bytes,19,rep,name=tags,proto3" json:"tags,omitempty"`
// What to run when the build is ready to start.
Exe *Executable `protobuf:"bytes,24,opt,name=exe,proto3" json:"exe,omitempty"`
// If true, use the canary build infrastructure.
Canary bool `protobuf:"varint,25,opt,name=canary,proto3" json:"canary,omitempty"`
// Maximum build pending time.
// If the timeout is reached, the build is marked as INFRA_FAILURE status
// and both status_details.{timeout, resource_exhaustion} are set.
SchedulingTimeout *duration.Duration `protobuf:"bytes,26,opt,name=scheduling_timeout,json=schedulingTimeout,proto3" json:"scheduling_timeout,omitempty"`
// Maximum build execution time.
// Not to be confused with scheduling_timeout.
// If the timeout is reached, the build is marked as INFRA_FAILURE status
// and status_details.timeout is set.
ExecutionTimeout *duration.Duration `protobuf:"bytes,27,opt,name=execution_timeout,json=executionTimeout,proto3" json:"execution_timeout,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Build) Reset() { *m = Build{} }
func (m *Build) String() string { return proto.CompactTextString(m) }
func (*Build) ProtoMessage() {}
func (*Build) Descriptor() ([]byte, []int) {
return fileDescriptor_bc3b43e011b474f4, []int{0}
}
func (m *Build) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Build.Unmarshal(m, b)
}
func (m *Build) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Build.Marshal(b, m, deterministic)
}
func (m *Build) XXX_Merge(src proto.Message) {
xxx_messageInfo_Build.Merge(m, src)
}
func (m *Build) XXX_Size() int {
return xxx_messageInfo_Build.Size(m)
}
func (m *Build) XXX_DiscardUnknown() {
xxx_messageInfo_Build.DiscardUnknown(m)
}
var xxx_messageInfo_Build proto.InternalMessageInfo
func (m *Build) GetId() int64 {
if m != nil {
return m.Id
}
return 0
}
func (m *Build) GetBuilder() *BuilderID {
if m != nil {
return m.Builder
}
return nil
}
func (m *Build) GetNumber() int32 {
if m != nil {
return m.Number
}
return 0
}
func (m *Build) GetCreatedBy() string {
if m != nil {
return m.CreatedBy
}
return ""
}
func (m *Build) GetCanceledBy() string {
if m != nil {
return m.CanceledBy
}
return ""
}
func (m *Build) GetCreateTime() *timestamp.Timestamp {
if m != nil {
return m.CreateTime
}
return nil
}
func (m *Build) GetStartTime() *timestamp.Timestamp {
if m != nil {
return m.StartTime
}
return nil
}
func (m *Build) GetEndTime() *timestamp.Timestamp {
if m != nil {
return m.EndTime
}
return nil
}
func (m *Build) GetUpdateTime() *timestamp.Timestamp {
if m != nil {
return m.UpdateTime
}
return nil
}
func (m *Build) GetStatus() Status {
if m != nil {
return m.Status
}
return Status_STATUS_UNSPECIFIED
}
func (m *Build) GetSummaryMarkdown() string {
if m != nil {
return m.SummaryMarkdown
}
return ""
}
func (m *Build) GetCritical() Trinary {
if m != nil {
return m.Critical
}
return Trinary_UNSET
}
func (m *Build) GetStatusDetails() *StatusDetails {
if m != nil {
return m.StatusDetails
}
return nil
}
func (m *Build) GetInput() *Build_Input {
if m != nil {
return m.Input
}
return nil
}
func (m *Build) GetOutput() *Build_Output {
if m != nil {
return m.Output
}
return nil
}
func (m *Build) GetSteps() []*Step {
if m != nil {
return m.Steps
}
return nil
}
func (m *Build) GetInfra() *BuildInfra {
if m != nil {
return m.Infra
}
return nil
}
func (m *Build) GetTags() []*StringPair {
if m != nil {
return m.Tags
}
return nil
}
func (m *Build) GetExe() *Executable {
if m != nil {
return m.Exe
}
return nil
}
func (m *Build) GetCanary() bool {
if m != nil {
return m.Canary
}
return false
}
func (m *Build) GetSchedulingTimeout() *duration.Duration {
if m != nil {
return m.SchedulingTimeout
}
return nil
}
func (m *Build) GetExecutionTimeout() *duration.Duration {
if m != nil {
return m.ExecutionTimeout
}
return nil
}
// Defines what to build/test.
//
// Behavior of a build executable MAY depend on Input.
// It MAY NOT modify its behavior based on anything outside of Input.
// It MAY read non-Input fields to display for debugging or to pass-through to
// triggered builds. For example the "tags" field may be passed to triggered
// builds, or the "infra" field may be printed for debugging purposes.
type Build_Input struct {
// Arbitrary JSON object. Available at build run time.
//
// RPC: By default, this field is excluded from responses.
//
// V1 equivalent: corresponds to "properties" key in "parameters_json".
Properties *_struct.Struct `protobuf:"bytes,1,opt,name=properties,proto3" json:"properties,omitempty"`
// The Gitiles commit to run against.
// Usually present in CI builds, set by LUCI Scheduler.
// If not present, the build may checkout "refs/heads/master".
// NOT a blamelist.
//
// V1 equivalent: supersedes "revision" property and "buildset"
// tag that starts with "commit/gitiles/".
GitilesCommit *GitilesCommit `protobuf:"bytes,2,opt,name=gitiles_commit,json=gitilesCommit,proto3" json:"gitiles_commit,omitempty"`
// Gerrit patchsets to run against.
// Usually present in tryjobs, set by CQ, Gerrit, git-cl-try.
// Applied on top of gitiles_commit if specified, otherwise tip of the tree.
//
// V1 equivalent: supersedes patch_* properties and "buildset"
// tag that starts with "patch/gerrit/".
GerritChanges []*GerritChange `protobuf:"bytes,3,rep,name=gerrit_changes,json=gerritChanges,proto3" json:"gerrit_changes,omitempty"`
// If true, the build does not affect prod. In recipe land, runtime.is_experimental will
// return true and recipes should not make prod-visible side effects.
// By default, experimental builds are not surfaced in RPCs, PubSub
// notifications (unless it is callback), and reported in metrics / BigQuery tables
// under a different name.
// See also include_experimental fields to in request messages.
Experimental bool `protobuf:"varint,5,opt,name=experimental,proto3" json:"experimental,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Build_Input) Reset() { *m = Build_Input{} }
func (m *Build_Input) String() string { return proto.CompactTextString(m) }
func (*Build_Input) ProtoMessage() {}
func (*Build_Input) Descriptor() ([]byte, []int) {
return fileDescriptor_bc3b43e011b474f4, []int{0, 0}
}
func (m *Build_Input) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Build_Input.Unmarshal(m, b)
}
func (m *Build_Input) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Build_Input.Marshal(b, m, deterministic)
}
func (m *Build_Input) XXX_Merge(src proto.Message) {
xxx_messageInfo_Build_Input.Merge(m, src)
}
func (m *Build_Input) XXX_Size() int {
return xxx_messageInfo_Build_Input.Size(m)
}
func (m *Build_Input) XXX_DiscardUnknown() {
xxx_messageInfo_Build_Input.DiscardUnknown(m)
}
var xxx_messageInfo_Build_Input proto.InternalMessageInfo
func (m *Build_Input) GetProperties() *_struct.Struct {
if m != nil {
return m.Properties
}
return nil
}
func (m *Build_Input) GetGitilesCommit() *GitilesCommit {
if m != nil {
return m.GitilesCommit
}
return nil
}
func (m *Build_Input) GetGerritChanges() []*GerritChange {
if m != nil {
return m.GerritChanges
}
return nil
}
func (m *Build_Input) GetExperimental() bool {
if m != nil {
return m.Experimental
}
return false
}
// Result of the build executable.
type Build_Output struct {
// Arbitrary JSON object produced by the build.
//
// In recipes, use step_result.presentation.properties to set these,
// for example
//
// step_result = api.step(['echo'])
// step_result.presentation.properties['foo'] = 'bar'
//
// More docs: https://chromium.googlesource.com/infra/luci/recipes-py/+/HEAD/doc/old_user_guide.md#Setting-properties
//
// V1 equivalent: corresponds to "properties" key in
// "result_details_json".
// In V1 output properties are not populated until build ends.
Properties *_struct.Struct `protobuf:"bytes,1,opt,name=properties,proto3" json:"properties,omitempty"`
// Build checked out and executed on this commit.
//
// Should correspond to Build.Input.gitiles_commit.
// May be present even if Build.Input.gitiles_commit is not set, for example
// in cron builders.
//
// V1 equivalent: this supersedes all got_revision output property.
GitilesCommit *GitilesCommit `protobuf:"bytes,3,opt,name=gitiles_commit,json=gitilesCommit,proto3" json:"gitiles_commit,omitempty"`
// Logs produced by the build script, typically "stdout" and "stderr".
Logs []*Log `protobuf:"bytes,5,rep,name=logs,proto3" json:"logs,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Build_Output) Reset() { *m = Build_Output{} }
func (m *Build_Output) String() string { return proto.CompactTextString(m) }
func (*Build_Output) ProtoMessage() {}
func (*Build_Output) Descriptor() ([]byte, []int) {
return fileDescriptor_bc3b43e011b474f4, []int{0, 1}
}
func (m *Build_Output) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Build_Output.Unmarshal(m, b)
}
func (m *Build_Output) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Build_Output.Marshal(b, m, deterministic)
}
func (m *Build_Output) XXX_Merge(src proto.Message) {
xxx_messageInfo_Build_Output.Merge(m, src)
}
func (m *Build_Output) XXX_Size() int {
return xxx_messageInfo_Build_Output.Size(m)
}
func (m *Build_Output) XXX_DiscardUnknown() {
xxx_messageInfo_Build_Output.DiscardUnknown(m)
}
var xxx_messageInfo_Build_Output proto.InternalMessageInfo
func (m *Build_Output) GetProperties() *_struct.Struct {
if m != nil {
return m.Properties
}
return nil
}
func (m *Build_Output) GetGitilesCommit() *GitilesCommit {
if m != nil {
return m.GitilesCommit
}
return nil
}
func (m *Build_Output) GetLogs() []*Log {
if m != nil {
return m.Logs
}
return nil
}
// Build infrastructure that was used for a particular build.
type BuildInfra struct {
Buildbucket *BuildInfra_Buildbucket `protobuf:"bytes,1,opt,name=buildbucket,proto3" json:"buildbucket,omitempty"`
Swarming *BuildInfra_Swarming `protobuf:"bytes,2,opt,name=swarming,proto3" json:"swarming,omitempty"`
Logdog *BuildInfra_LogDog `protobuf:"bytes,3,opt,name=logdog,proto3" json:"logdog,omitempty"`
Recipe *BuildInfra_Recipe `protobuf:"bytes,4,opt,name=recipe,proto3" json:"recipe,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *BuildInfra) Reset() { *m = BuildInfra{} }
func (m *BuildInfra) String() string { return proto.CompactTextString(m) }
func (*BuildInfra) ProtoMessage() {}
func (*BuildInfra) Descriptor() ([]byte, []int) {
return fileDescriptor_bc3b43e011b474f4, []int{1}
}
func (m *BuildInfra) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BuildInfra.Unmarshal(m, b)
}
func (m *BuildInfra) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_BuildInfra.Marshal(b, m, deterministic)
}
func (m *BuildInfra) XXX_Merge(src proto.Message) {
xxx_messageInfo_BuildInfra.Merge(m, src)
}
func (m *BuildInfra) XXX_Size() int {
return xxx_messageInfo_BuildInfra.Size(m)
}
func (m *BuildInfra) XXX_DiscardUnknown() {
xxx_messageInfo_BuildInfra.DiscardUnknown(m)
}
var xxx_messageInfo_BuildInfra proto.InternalMessageInfo
func (m *BuildInfra) GetBuildbucket() *BuildInfra_Buildbucket {
if m != nil {
return m.Buildbucket
}
return nil
}
func (m *BuildInfra) GetSwarming() *BuildInfra_Swarming {
if m != nil {
return m.Swarming
}
return nil
}
func (m *BuildInfra) GetLogdog() *BuildInfra_LogDog {
if m != nil {
return m.Logdog
}
return nil
}
func (m *BuildInfra) GetRecipe() *BuildInfra_Recipe {
if m != nil {
return m.Recipe
}
return nil
}
// Buildbucket-specific information, captured at the build creation time.
type BuildInfra_Buildbucket struct {
// Version of swarming task template. Defines
// versions of kitchen, git, git wrapper, python, vpython, etc.
ServiceConfigRevision string `protobuf:"bytes,2,opt,name=service_config_revision,json=serviceConfigRevision,proto3" json:"service_config_revision,omitempty"`
// Properties that were specified in ScheduleBuildRequest to create this
// build.
//
// In particular, CQ uses this to decide whether the build created by
// someone else is appropriate for CQ, e.g. it was created with the same
// properties that CQ would use.
RequestedProperties *_struct.Struct `protobuf:"bytes,5,opt,name=requested_properties,json=requestedProperties,proto3" json:"requested_properties,omitempty"`
// Dimensions that were specified in ScheduleBuildRequest to create this
// build.
RequestedDimensions []*RequestedDimension `protobuf:"bytes,6,rep,name=requested_dimensions,json=requestedDimensions,proto3" json:"requested_dimensions,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *BuildInfra_Buildbucket) Reset() { *m = BuildInfra_Buildbucket{} }
func (m *BuildInfra_Buildbucket) String() string { return proto.CompactTextString(m) }
func (*BuildInfra_Buildbucket) ProtoMessage() {}
func (*BuildInfra_Buildbucket) Descriptor() ([]byte, []int) {
return fileDescriptor_bc3b43e011b474f4, []int{1, 0}
}
func (m *BuildInfra_Buildbucket) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BuildInfra_Buildbucket.Unmarshal(m, b)
}
func (m *BuildInfra_Buildbucket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_BuildInfra_Buildbucket.Marshal(b, m, deterministic)
}
func (m *BuildInfra_Buildbucket) XXX_Merge(src proto.Message) {
xxx_messageInfo_BuildInfra_Buildbucket.Merge(m, src)
}
func (m *BuildInfra_Buildbucket) XXX_Size() int {
return xxx_messageInfo_BuildInfra_Buildbucket.Size(m)
}
func (m *BuildInfra_Buildbucket) XXX_DiscardUnknown() {
xxx_messageInfo_BuildInfra_Buildbucket.DiscardUnknown(m)
}
var xxx_messageInfo_BuildInfra_Buildbucket proto.InternalMessageInfo
func (m *BuildInfra_Buildbucket) GetServiceConfigRevision() string {
if m != nil {
return m.ServiceConfigRevision
}
return ""
}
func (m *BuildInfra_Buildbucket) GetRequestedProperties() *_struct.Struct {
if m != nil {
return m.RequestedProperties
}
return nil
}
func (m *BuildInfra_Buildbucket) GetRequestedDimensions() []*RequestedDimension {
if m != nil {
return m.RequestedDimensions
}
return nil
}
// Swarming-specific information.
type BuildInfra_Swarming struct {
// Swarming hostname, e.g. "chromium-swarm.appspot.com".
// Populated at the build creation time.
Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
// Swarming task id.
// Not guaranteed to be populated at the build creation time.
TaskId string `protobuf:"bytes,2,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
// Task service account email address.
// This is the service account used for all authenticated requests by the
// build.
TaskServiceAccount string `protobuf:"bytes,3,opt,name=task_service_account,json=taskServiceAccount,proto3" json:"task_service_account,omitempty"`
// Priority of the task. The lower the more important.
// Valid values are [20..255].
Priority int32 `protobuf:"varint,4,opt,name=priority,proto3" json:"priority,omitempty"`
// Swarming dimensions for the task.
TaskDimensions []*RequestedDimension `protobuf:"bytes,5,rep,name=task_dimensions,json=taskDimensions,proto3" json:"task_dimensions,omitempty"`
// Swarming dimensions of the bot used for the task.
BotDimensions []*StringPair `protobuf:"bytes,6,rep,name=bot_dimensions,json=botDimensions,proto3" json:"bot_dimensions,omitempty"`
// Caches requested by this build.
Caches []*BuildInfra_Swarming_CacheEntry `protobuf:"bytes,7,rep,name=caches,proto3" json:"caches,omitempty"`
// Swarming task containment for the task.
Containment *api.Containment `protobuf:"bytes,8,opt,name=containment,proto3" json:"containment,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *BuildInfra_Swarming) Reset() { *m = BuildInfra_Swarming{} }
func (m *BuildInfra_Swarming) String() string { return proto.CompactTextString(m) }
func (*BuildInfra_Swarming) ProtoMessage() {}
func (*BuildInfra_Swarming) Descriptor() ([]byte, []int) {
return fileDescriptor_bc3b43e011b474f4, []int{1, 1}
}
func (m *BuildInfra_Swarming) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BuildInfra_Swarming.Unmarshal(m, b)
}
func (m *BuildInfra_Swarming) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_BuildInfra_Swarming.Marshal(b, m, deterministic)
}
func (m *BuildInfra_Swarming) XXX_Merge(src proto.Message) {
xxx_messageInfo_BuildInfra_Swarming.Merge(m, src)
}
func (m *BuildInfra_Swarming) XXX_Size() int {
return xxx_messageInfo_BuildInfra_Swarming.Size(m)
}
func (m *BuildInfra_Swarming) XXX_DiscardUnknown() {
xxx_messageInfo_BuildInfra_Swarming.DiscardUnknown(m)
}
var xxx_messageInfo_BuildInfra_Swarming proto.InternalMessageInfo
func (m *BuildInfra_Swarming) GetHostname() string {
if m != nil {
return m.Hostname
}
return ""
}
func (m *BuildInfra_Swarming) GetTaskId() string {
if m != nil {
return m.TaskId
}
return ""
}
func (m *BuildInfra_Swarming) GetTaskServiceAccount() string {
if m != nil {
return m.TaskServiceAccount
}
return ""
}
func (m *BuildInfra_Swarming) GetPriority() int32 {
if m != nil {
return m.Priority
}
return 0
}
func (m *BuildInfra_Swarming) GetTaskDimensions() []*RequestedDimension {
if m != nil {
return m.TaskDimensions
}
return nil
}
func (m *BuildInfra_Swarming) GetBotDimensions() []*StringPair {
if m != nil {
return m.BotDimensions
}
return nil
}
func (m *BuildInfra_Swarming) GetCaches() []*BuildInfra_Swarming_CacheEntry {
if m != nil {
return m.Caches
}
return nil
}
func (m *BuildInfra_Swarming) GetContainment() *api.Containment {
if m != nil {
return m.Containment
}
return nil
}
// Describes a cache directory persisted on a bot.
//
// If a build requested a cache, the cache directory is available on build
// startup. If the cache was present on the bot, the directory contains
// files from the previous run on that bot.
// The build can read/write to the cache directory while it runs.
// After build completes, the cache directory is persisted.
// The next time another build requests the same cache and runs on the same
// bot, the files will still be there (unless the cache was evicted,
// perhaps due to disk space reasons).
//
// One bot can keep multiple caches at the same time and one build can request
// multiple different caches.
// A cache is identified by its name and mapped to a path.
//
// If the bot is running out of space, caches are evicted in LRU manner
// before the next build on this bot starts.
//
// Builder cache.
//
// Buildbucket implicitly declares cache
// {"name": "<hash(project/bucket/builder)>", "path": "builder"}.
// This means that any LUCI builder has a "personal disk space" on the bot.
// Builder cache is often a good start before customizing caching.
// In recipes, it is available at api.buildbucket.builder_cache_path.
//
type BuildInfra_Swarming_CacheEntry struct {
// Identifier of the cache. Required. Length is limited to 128.
// Must be unique in the build.
//
// If the pool of swarming bots is shared among multiple LUCI projects and
// projects use same cache name, the cache will be shared across projects.
// To avoid affecting and being affected by other projects, prefix the
// cache name with something project-specific, e.g. "v8-".
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Relative path where the cache in mapped into. Required.
//
// Must use POSIX format (forward slashes).
// In most cases, it does not need slashes at all.
//
// In recipes, use api.path['cache'].join(path) to get absolute path.
//
// Must be unique in the build.
Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"`
// Duration to wait for a bot with a warm cache to pick up the
// task, before falling back to a bot with a cold (non-existent) cache.
//
// The default is 0, which means that no preference will be chosen for a
// bot with this or without this cache, and a bot without this cache may
// be chosen instead.
//
// If no bot has this cache warm, the task will skip this wait and will
// immediately fallback to a cold cache request.
//
// The value must be multiples of 60 seconds.
WaitForWarmCache *duration.Duration `protobuf:"bytes,3,opt,name=wait_for_warm_cache,json=waitForWarmCache,proto3" json:"wait_for_warm_cache,omitempty"`
// Environment variable with this name will be set to the path to the cache
// directory.
EnvVar string `protobuf:"bytes,4,opt,name=env_var,json=envVar,proto3" json:"env_var,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *BuildInfra_Swarming_CacheEntry) Reset() { *m = BuildInfra_Swarming_CacheEntry{} }
func (m *BuildInfra_Swarming_CacheEntry) String() string { return proto.CompactTextString(m) }
func (*BuildInfra_Swarming_CacheEntry) ProtoMessage() {}
func (*BuildInfra_Swarming_CacheEntry) Descriptor() ([]byte, []int) {
return fileDescriptor_bc3b43e011b474f4, []int{1, 1, 0}
}
func (m *BuildInfra_Swarming_CacheEntry) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BuildInfra_Swarming_CacheEntry.Unmarshal(m, b)
}
func (m *BuildInfra_Swarming_CacheEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_BuildInfra_Swarming_CacheEntry.Marshal(b, m, deterministic)
}
func (m *BuildInfra_Swarming_CacheEntry) XXX_Merge(src proto.Message) {
xxx_messageInfo_BuildInfra_Swarming_CacheEntry.Merge(m, src)
}
func (m *BuildInfra_Swarming_CacheEntry) XXX_Size() int {
return xxx_messageInfo_BuildInfra_Swarming_CacheEntry.Size(m)
}
func (m *BuildInfra_Swarming_CacheEntry) XXX_DiscardUnknown() {
xxx_messageInfo_BuildInfra_Swarming_CacheEntry.DiscardUnknown(m)
}
var xxx_messageInfo_BuildInfra_Swarming_CacheEntry proto.InternalMessageInfo
func (m *BuildInfra_Swarming_CacheEntry) GetName() string {
if m != nil {
return m.Name
}
return ""
}
func (m *BuildInfra_Swarming_CacheEntry) GetPath() string {
if m != nil {
return m.Path
}
return ""
}
func (m *BuildInfra_Swarming_CacheEntry) GetWaitForWarmCache() *duration.Duration {
if m != nil {
return m.WaitForWarmCache
}
return nil
}
func (m *BuildInfra_Swarming_CacheEntry) GetEnvVar() string {
if m != nil {
return m.EnvVar
}
return ""
}
// LogDog-specific information.
type BuildInfra_LogDog struct {
// LogDog hostname, e.g. "logs.chromium.org".
Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
// LogDog project, e.g. "chromium".
// Typically matches Build.builder.project.
Project string `protobuf:"bytes,2,opt,name=project,proto3" json:"project,omitempty"`
// A slash-separated path prefix shared by all logs and artifacts of this
// build.
// No other build can have the same prefix.
// Can be used to discover logs and/or load log contents.
//
// Can be used to construct URL of a page that displays stdout/stderr of all
// steps of a build. In pseudo-JS:
// q_stdout = `${project}/${prefix}/+/**/stdout`;
// q_stderr = `${project}/${prefix}/+/**/stderr`;
// url = `https://${host}/v/?s=${urlquote(q_stdout)}&s=${urlquote(q_stderr)}`;
Prefix string `protobuf:"bytes,3,opt,name=prefix,proto3" json:"prefix,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *BuildInfra_LogDog) Reset() { *m = BuildInfra_LogDog{} }
func (m *BuildInfra_LogDog) String() string { return proto.CompactTextString(m) }
func (*BuildInfra_LogDog) ProtoMessage() {}
func (*BuildInfra_LogDog) Descriptor() ([]byte, []int) {
return fileDescriptor_bc3b43e011b474f4, []int{1, 2}
}
func (m *BuildInfra_LogDog) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BuildInfra_LogDog.Unmarshal(m, b)
}
func (m *BuildInfra_LogDog) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_BuildInfra_LogDog.Marshal(b, m, deterministic)
}
func (m *BuildInfra_LogDog) XXX_Merge(src proto.Message) {
xxx_messageInfo_BuildInfra_LogDog.Merge(m, src)
}
func (m *BuildInfra_LogDog) XXX_Size() int {
return xxx_messageInfo_BuildInfra_LogDog.Size(m)
}
func (m *BuildInfra_LogDog) XXX_DiscardUnknown() {
xxx_messageInfo_BuildInfra_LogDog.DiscardUnknown(m)
}
var xxx_messageInfo_BuildInfra_LogDog proto.InternalMessageInfo
func (m *BuildInfra_LogDog) GetHostname() string {
if m != nil {
return m.Hostname
}
return ""
}
func (m *BuildInfra_LogDog) GetProject() string {
if m != nil {
return m.Project
}
return ""
}
func (m *BuildInfra_LogDog) GetPrefix() string {
if m != nil {
return m.Prefix
}
return ""
}
// Recipe-specific information.
type BuildInfra_Recipe struct {
// CIPD package name containing the recipe used to run this build.
CipdPackage string `protobuf:"bytes,1,opt,name=cipd_package,json=cipdPackage,proto3" json:"cipd_package,omitempty"`
// Name of the recipe used to run this build.
Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *BuildInfra_Recipe) Reset() { *m = BuildInfra_Recipe{} }
func (m *BuildInfra_Recipe) String() string { return proto.CompactTextString(m) }
func (*BuildInfra_Recipe) ProtoMessage() {}
func (*BuildInfra_Recipe) Descriptor() ([]byte, []int) {
return fileDescriptor_bc3b43e011b474f4, []int{1, 3}
}
func (m *BuildInfra_Recipe) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BuildInfra_Recipe.Unmarshal(m, b)
}
func (m *BuildInfra_Recipe) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_BuildInfra_Recipe.Marshal(b, m, deterministic)
}
func (m *BuildInfra_Recipe) XXX_Merge(src proto.Message) {
xxx_messageInfo_BuildInfra_Recipe.Merge(m, src)
}
func (m *BuildInfra_Recipe) XXX_Size() int {
return xxx_messageInfo_BuildInfra_Recipe.Size(m)
}
func (m *BuildInfra_Recipe) XXX_DiscardUnknown() {
xxx_messageInfo_BuildInfra_Recipe.DiscardUnknown(m)
}
var xxx_messageInfo_BuildInfra_Recipe proto.InternalMessageInfo
func (m *BuildInfra_Recipe) GetCipdPackage() string {
if m != nil {
return m.CipdPackage
}
return ""
}
func (m *BuildInfra_Recipe) GetName() string {
if m != nil {
return m.Name
}
return ""
}
// Identifies a builder.
// Canonical string representation: “{project}/{bucket}/{builder}”.
type BuilderID struct {
// Project ID, e.g. "chromium". Unique within a LUCI deployment.
Project string `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
// Bucket name, e.g. "try". Unique within the project.
// Together with project, defines an ACL.
Bucket string `protobuf:"bytes,2,opt,name=bucket,proto3" json:"bucket,omitempty"`
// Builder name, e.g. "linux-rel". Unique within the bucket.
Builder string `protobuf:"bytes,3,opt,name=builder,proto3" json:"builder,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *BuilderID) Reset() { *m = BuilderID{} }
func (m *BuilderID) String() string { return proto.CompactTextString(m) }
func (*BuilderID) ProtoMessage() {}
func (*BuilderID) Descriptor() ([]byte, []int) {
return fileDescriptor_bc3b43e011b474f4, []int{2}
}
func (m *BuilderID) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BuilderID.Unmarshal(m, b)
}
func (m *BuilderID) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_BuilderID.Marshal(b, m, deterministic)
}
func (m *BuilderID) XXX_Merge(src proto.Message) {
xxx_messageInfo_BuilderID.Merge(m, src)
}
func (m *BuilderID) XXX_Size() int {
return xxx_messageInfo_BuilderID.Size(m)
}
func (m *BuilderID) XXX_DiscardUnknown() {
xxx_messageInfo_BuilderID.DiscardUnknown(m)
}
var xxx_messageInfo_BuilderID proto.InternalMessageInfo
func (m *BuilderID) GetProject() string {
if m != nil {
return m.Project
}
return ""
}
func (m *BuilderID) GetBucket() string {
if m != nil {
return m.Bucket
}
return ""
}
func (m *BuilderID) GetBuilder() string {
if m != nil {
return m.Builder
}
return ""
}
func init() {
proto.RegisterType((*Build)(nil), "buildbucket.v2.Build")
proto.RegisterType((*Build_Input)(nil), "buildbucket.v2.Build.Input")
proto.RegisterType((*Build_Output)(nil), "buildbucket.v2.Build.Output")
proto.RegisterType((*BuildInfra)(nil), "buildbucket.v2.BuildInfra")
proto.RegisterType((*BuildInfra_Buildbucket)(nil), "buildbucket.v2.BuildInfra.Buildbucket")
proto.RegisterType((*BuildInfra_Swarming)(nil), "buildbucket.v2.BuildInfra.Swarming")
proto.RegisterType((*BuildInfra_Swarming_CacheEntry)(nil), "buildbucket.v2.BuildInfra.Swarming.CacheEntry")
proto.RegisterType((*BuildInfra_LogDog)(nil), "buildbucket.v2.BuildInfra.LogDog")
proto.RegisterType((*BuildInfra_Recipe)(nil), "buildbucket.v2.BuildInfra.Recipe")
proto.RegisterType((*BuilderID)(nil), "buildbucket.v2.BuilderID")
}
func init() {
proto.RegisterFile("go.chromium.org/luci/buildbucket/proto/build.proto", fileDescriptor_bc3b43e011b474f4)
}
var fileDescriptor_bc3b43e011b474f4 = []byte{
// 1268 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xdb, 0x6e, 0xdb, 0x46,
0x13, 0x86, 0xac, 0x83, 0xa5, 0x51, 0x2c, 0x2b, 0x6b, 0x27, 0x66, 0x94, 0xe4, 0x8f, 0xe2, 0x1f,
0xf8, 0x7f, 0xb5, 0x28, 0xe8, 0xc4, 0x4e, 0x53, 0xa4, 0xb9, 0x08, 0x62, 0x3b, 0x07, 0xbb, 0x29,
0x1a, 0xac, 0xd3, 0x04, 0xe8, 0x0d, 0xb1, 0x22, 0xd7, 0xf4, 0xd6, 0x22, 0x97, 0xdd, 0x5d, 0x2a,
0xf6, 0x93, 0xf4, 0x61, 0xda, 0xd7, 0xe8, 0x6b, 0xb4, 0xb7, 0xbd, 0x2c, 0xf6, 0x20, 0x8a, 0x91,
0x5c, 0xd9, 0x28, 0x7a, 0xc7, 0x99, 0xf9, 0xbe, 0x39, 0xed, 0xec, 0x70, 0x61, 0x3b, 0xe6, 0x7e,
0x78, 0x22, 0x78, 0xc2, 0xf2, 0xc4, 0xe7, 0x22, 0xde, 0x1a, 0xe5, 0x21, 0xdb, 0x1a, 0xe6, 0x6c,
0x14, 0x0d, 0xf3, 0xf0, 0x94, 0xaa, 0xad, 0x4c, 0x70, 0xc5, 0xad, 0xc6, 0x37, 0xdf, 0xa8, 0x53,
0x32, 0xfb, 0xe3, 0xed, 0xde, 0x7f, 0x62, 0xce, 0xe3, 0x11, 0xb5, 0xc8, 0x61, 0x7e, 0xbc, 0x15,
0xe5, 0x82, 0x28, 0xc6, 0x53, 0x8b, 0xef, 0xdd, 0x9b, 0xb5, 0x2b, 0x96, 0x50, 0xa9, 0x48, 0x92,
0x39, 0xc0, 0x9d, 0x59, 0x80, 0x54, 0x22, 0x0f, 0x95, 0xb3, 0xee, 0x5c, 0x31, 0xc5, 0x90, 0x27,
0x49, 0x11, 0xf3, 0xe1, 0x15, 0x49, 0x52, 0xd1, 0x49, 0x16, 0x8f, 0x2f, 0xa4, 0xc8, 0x8f, 0x44,
0x24, 0x2c, 0x8d, 0x1d, 0x9e, 0x64, 0x53, 0x95, 0xe5, 0x6d, 0xfe, 0xd9, 0x86, 0xfa, 0xae, 0x76,
0x8c, 0x3a, 0xb0, 0xc4, 0x22, 0xaf, 0xd2, 0xaf, 0x0c, 0xaa, 0x78, 0x89, 0x45, 0x68, 0x07, 0x96,
0x4d, 0x44, 0x2a, 0xbc, 0xa5, 0x7e, 0x65, 0xd0, 0xde, 0xbe, 0xe5, 0x7f, 0xda, 0x3a, 0x7f, 0xd7,
0x9a, 0x0f, 0xf6, 0xf1, 0x04, 0x89, 0x6e, 0x42, 0x23, 0xcd, 0x93, 0x21, 0x15, 0x5e, 0xb5, 0x5f,
0x19, 0xd4, 0xb1, 0x93, 0xd0, 0x5d, 0x80, 0x50, 0x50, 0xa2, 0x68, 0x14, 0x0c, 0xcf, 0xbd, 0x5a,
0xbf, 0x32, 0x68, 0xe1, 0x96, 0xd3, 0xec, 0x9e, 0xa3, 0x7b, 0xd0, 0x0e, 0x49, 0x1a, 0xd2, 0x91,
0xb5, 0x6f, 0x18, 0x3b, 0x4c, 0x54, 0xbb, 0xe7, 0xe8, 0x29, 0xb4, 0x2d, 0x3a, 0xd0, 0xed, 0xf7,
0x1a, 0x26, 0xa1, 0x9e, 0x6f, 0x5b, 0xef, 0x4f, 0x5a, 0xef, 0xbf, 0x9b, 0x9c, 0x0d, 0x76, 0xe1,
0xb4, 0x02, 0x3d, 0x01, 0x90, 0x8a, 0x08, 0x65, 0xb9, 0xcb, 0x97, 0x72, 0x5b, 0x06, 0x6d, 0xa8,
0x5f, 0x42, 0x93, 0xa6, 0x91, 0x25, 0x36, 0x2f, 0x25, 0x2e, 0xd3, 0x34, 0x32, 0xb4, 0xa7, 0xd0,
0xce, 0xb3, 0xa8, 0x48, 0xb7, 0x75, 0x79, 0xba, 0x16, 0x6e, 0xc8, 0x3e, 0x34, 0xa4, 0x22, 0x2a,
0x97, 0xde, 0xb5, 0x7e, 0x65, 0xd0, 0xd9, 0xbe, 0x39, 0xdb, 0xf7, 0x23, 0x63, 0xc5, 0x0e, 0x85,
0x3e, 0x83, 0xae, 0xcc, 0x93, 0x84, 0x88, 0xf3, 0x20, 0x21, 0xe2, 0x34, 0xe2, 0x1f, 0x53, 0x6f,
0xdd, 0x74, 0x70, 0xd5, 0xe9, 0xbf, 0x75, 0x6a, 0xb4, 0x03, 0xcd, 0x50, 0x30, 0xc5, 0x42, 0x32,
0xf2, 0x6e, 0x18, 0xe7, 0x1b, 0xb3, 0xce, 0xdf, 0x09, 0x96, 0x12, 0x71, 0x8e, 0x0b, 0x20, 0xda,
0x87, 0x8e, 0x8d, 0x14, 0x44, 0x54, 0x11, 0x36, 0x92, 0xde, 0x4d, 0x53, 0xcf, 0xdd, 0x8b, 0xf3,
0xda, 0xb7, 0x20, 0xbc, 0x22, 0xcb, 0x22, 0x7a, 0x08, 0x75, 0x96, 0x66, 0xb9, 0xf2, 0x56, 0x0d,
0xf9, 0xf6, 0x85, 0xc3, 0xe4, 0x1f, 0x68, 0x08, 0xb6, 0x48, 0xf4, 0x08, 0x1a, 0x3c, 0x57, 0x9a,
0xd3, 0x35, 0x9c, 0x3b, 0x17, 0x73, 0xbe, 0x33, 0x18, 0xec, 0xb0, 0xe8, 0x73, 0xa8, 0xeb, 0x7b,
0x21, 0xbd, 0xeb, 0xfd, 0xea, 0xa0, 0xbd, 0xbd, 0x3e, 0x9f, 0x25, 0xcd, 0xb0, 0x85, 0xa0, 0x07,
0x3a, 0xa9, 0x63, 0x41, 0x3c, 0xe4, 0x4e, 0xe8, 0xa2, 0x00, 0x07, 0x1a, 0x81, 0x2d, 0x10, 0xf9,
0x50, 0x53, 0x24, 0x96, 0xde, 0x9a, 0x71, 0xde, 0x9b, 0x77, 0x2e, 0x58, 0x1a, 0xbf, 0x25, 0x4c,
0x60, 0x83, 0x43, 0x5f, 0x40, 0x95, 0x9e, 0x51, 0xcf, 0xbb, 0xd8, 0xff, 0x8b, 0x33, 0x1a, 0xe6,
0x8a, 0x0c, 0x47, 0x14, 0x6b, 0x98, 0xbe, 0x3e, 0x21, 0xd1, 0xed, 0xf7, 0x6e, 0xf5, 0x2b, 0x83,
0x26, 0x76, 0x12, 0x7a, 0x0d, 0x48, 0x86, 0x27, 0x34, 0xca, 0x47, 0x2c, 0x8d, 0xcd, 0x4c, 0xf1,
0x5c, 0x79, 0x3d, 0x77, 0x2d, 0x67, 0xc7, 0x6a, 0xdf, 0x6d, 0x30, 0x7c, 0x7d, 0x4a, 0x7a, 0x67,
0x39, 0xe8, 0x25, 0x5c, 0xa7, 0x26, 0x28, 0xe3, 0x69, 0xe1, 0xe8, 0xf6, 0x65, 0x8e, 0xba, 0x05,
0xc7, 0xf9, 0xe9, 0xfd, 0x51, 0x81, 0xba, 0x39, 0x2c, 0xf4, 0x15, 0x40, 0x26, 0x78, 0x46, 0x85,
0x62, 0x54, 0x9a, 0xfd, 0xd1, 0xde, 0xde, 0x98, 0x73, 0x75, 0x64, 0x96, 0x22, 0x2e, 0x41, 0xf5,
0x5c, 0xc5, 0x4c, 0xb1, 0x11, 0x95, 0x81, 0xde, 0x7e, 0x4c, 0xb9, 0x3d, 0x33, 0x37, 0x57, 0xaf,
0x2c, 0x6a, 0xcf, 0x80, 0xf0, 0x4a, 0x5c, 0x16, 0xd1, 0x1e, 0x74, 0x62, 0x2a, 0x04, 0x53, 0x41,
0x78, 0x42, 0xd2, 0x98, 0x4a, 0xaf, 0x6a, 0x8e, 0x66, 0x6e, 0x58, 0x5e, 0x19, 0xd4, 0x9e, 0x01,
0xe1, 0x95, 0xb8, 0x24, 0x49, 0xb4, 0x09, 0xd7, 0xe8, 0x59, 0x46, 0x05, 0x4b, 0x68, 0xaa, 0xc8,
0xc8, 0xab, 0x9b, 0xee, 0x7f, 0xa2, 0xeb, 0xfd, 0x5a, 0x81, 0x86, 0x1d, 0xb5, 0x7f, 0xb3, 0xe4,
0xea, 0x3f, 0x28, 0xf9, 0xff, 0x50, 0x1b, 0xf1, 0x58, 0x7a, 0x75, 0x53, 0xe8, 0xda, 0x2c, 0xf7,
0x0d, 0x8f, 0xb1, 0x01, 0x1c, 0xd6, 0x9a, 0x4b, 0xdd, 0xea, 0x61, 0xad, 0x59, 0xeb, 0xd6, 0x0f,
0x6b, 0xcd, 0x7a, 0xb7, 0x71, 0x58, 0x6b, 0xae, 0x74, 0x3b, 0x87, 0xb5, 0x66, 0xa7, 0xbb, 0xba,
0xf9, 0x5b, 0x0b, 0x60, 0x3a, 0xe0, 0xe8, 0x35, 0xb4, 0x4b, 0x8e, 0x5c, 0x55, 0xff, 0xfb, 0xfb,
0x1b, 0x61, 0x3f, 0xad, 0x05, 0x97, 0xa9, 0xe8, 0x19, 0x34, 0x27, 0x7f, 0x19, 0x77, 0xa4, 0xff,
0x5d, 0xe0, 0xe6, 0xc8, 0x41, 0x71, 0x41, 0x42, 0x4f, 0xa0, 0x31, 0xe2, 0x71, 0xc4, 0x63, 0xd7,
0x9e, 0xfb, 0x0b, 0xe8, 0x6f, 0x78, 0xbc, 0xcf, 0x63, 0xec, 0x08, 0x9a, 0x2a, 0x68, 0xc8, 0x32,
0x6a, 0x7e, 0x32, 0x8b, 0xa9, 0xd8, 0x00, 0xb1, 0x23, 0xf4, 0x7e, 0xaf, 0x40, 0xbb, 0x54, 0x13,
0x7a, 0x0c, 0x1b, 0x92, 0x8a, 0x31, 0x0b, 0x69, 0x10, 0xf2, 0xf4, 0x98, 0xc5, 0x81, 0xa0, 0x63,
0x26, 0x19, 0x4f, 0x4d, 0x55, 0x2d, 0x7c, 0xc3, 0x99, 0xf7, 0x8c, 0x15, 0x3b, 0x23, 0x3a, 0x84,
0x75, 0x41, 0x7f, 0xca, 0xa9, 0xd4, 0x7f, 0xbb, 0xd2, 0x9c, 0xd4, 0x17, 0xcf, 0xc9, 0x5a, 0x41,
0x7a, 0x3b, 0x1d, 0x98, 0xef, 0xcb, 0xbe, 0x22, 0x3d, 0x8a, 0x3a, 0x84, 0xf4, 0x1a, 0xe6, 0xe8,
0x37, 0x67, 0x8b, 0xc3, 0x13, 0xec, 0xfe, 0x04, 0x5a, 0x72, 0x5b, 0xe8, 0xa4, 0x1d, 0x89, 0xde,
0x2f, 0x35, 0x68, 0x4e, 0xba, 0x8f, 0x7a, 0xd0, 0x3c, 0xe1, 0x52, 0xa5, 0x24, 0xa1, 0xe6, 0xec,
0x5b, 0xb8, 0x90, 0xd1, 0x06, 0x2c, 0x2b, 0x22, 0x4f, 0x03, 0x16, 0xb9, 0xca, 0x1b, 0x5a, 0x3c,
0x88, 0xd0, 0x03, 0x58, 0x37, 0x86, 0x49, 0x9f, 0x48, 0x18, 0xf2, 0x3c, 0xb5, 0x53, 0xdd, 0xc2,
0x48, 0xdb, 0x8e, 0xac, 0xe9, 0xb9, 0xb5, 0xe8, 0x30, 0x99, 0x60, 0x5c, 0x30, 0x65, 0x9f, 0x01,
0x75, 0x5c, 0xc8, 0xe8, 0x1b, 0x58, 0x35, 0xde, 0x4a, 0x75, 0xd6, 0xaf, 0x5c, 0x67, 0x47, 0x53,
0xa7, 0x25, 0xa2, 0xe7, 0xd0, 0x19, 0x72, 0x35, 0xdf, 0xb3, 0x45, 0x2b, 0x7b, 0x65, 0xc8, 0x55,
0xc9, 0xc5, 0x4b, 0xbd, 0x8d, 0xc3, 0x13, 0x2a, 0xbd, 0x65, 0x43, 0xf5, 0xaf, 0x30, 0xc5, 0xfe,
0x9e, 0x66, 0xbc, 0x48, 0x95, 0x38, 0xc7, 0x8e, 0x8d, 0xbe, 0x86, 0x76, 0xc8, 0x53, 0x45, 0x58,
0xaa, 0x57, 0x89, 0x7b, 0x47, 0x78, 0x7e, 0xf1, 0x12, 0x1b, 0x3f, 0xf4, 0xf7, 0xa6, 0x76, 0x5c,
0x06, 0xf7, 0x7e, 0xae, 0x00, 0x4c, 0x5d, 0x22, 0x04, 0xb5, 0xd2, 0x09, 0x99, 0x6f, 0xad, 0xcb,
0x88, 0x3a, 0x71, 0x47, 0x63, 0xbe, 0xd1, 0x6b, 0x58, 0xfb, 0x48, 0x98, 0x0a, 0x8e, 0xb9, 0x08,
0x74, 0x98, 0xc0, 0xa4, 0xe2, 0xae, 0xd3, 0xa2, 0x45, 0xaf, 0x59, 0x2f, 0xb9, 0xf8, 0x40, 0x44,
0x62, 0xc2, 0xea, 0xb3, 0xa7, 0xe9, 0x38, 0x18, 0x13, 0xe1, 0x9e, 0x6d, 0x0d, 0x9a, 0x8e, 0xdf,
0x13, 0xd1, 0x7b, 0x0f, 0x0d, 0x7b, 0xf7, 0x16, 0x8e, 0x8e, 0x07, 0xcb, 0x99, 0xe0, 0x3f, 0xd2,
0x50, 0xb9, 0xfc, 0x26, 0xa2, 0xfe, 0xd7, 0x65, 0x82, 0x1e, 0xb3, 0x33, 0x37, 0x2d, 0x4e, 0xea,
0x3d, 0x83, 0x86, 0xbd, 0x98, 0xe8, 0x3e, 0x5c, 0x0b, 0x59, 0x16, 0x05, 0x19, 0x09, 0x4f, 0x49,
0x3c, 0xf1, 0xdd, 0xd6, 0xba, 0xb7, 0x56, 0x55, 0xf4, 0x63, 0x69, 0xda, 0x8f, 0xcd, 0x0f, 0xd0,
0x2a, 0x5e, 0xa6, 0xe5, 0xf8, 0x95, 0xb9, 0xf8, 0x6e, 0xd5, 0xb9, 0x99, 0x76, 0xd7, 0xde, 0x9b,
0xbe, 0x7b, 0x6d, 0x62, 0x13, 0x71, 0xf7, 0xf1, 0x0f, 0x8f, 0xae, 0xf6, 0x30, 0x7f, 0x5a, 0xd2,
0x64, 0xc3, 0x61, 0xc3, 0x28, 0x77, 0xfe, 0x0a, 0x00, 0x00, 0xff, 0xff, 0xb4, 0xe0, 0x05, 0xfa,
0xaf, 0x0c, 0x00, 0x00,
}