vendor: update buildkit to 93b40706a007

Signed-off-by: Justin Chadwell <me@jedevc.com>
This commit is contained in:
Justin Chadwell 2022-12-13 11:03:53 +00:00
parent 5f4d463780
commit 163712a23b
26 changed files with 934 additions and 471 deletions

10
go.mod
View File

@ -16,7 +16,7 @@ require (
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
github.com/hashicorp/go-cty-funcs v0.0.0-20200930094925-2721b1e36840
github.com/hashicorp/hcl/v2 v2.8.2
github.com/moby/buildkit v0.11.0-rc1.0.20221207183946-5993b526de65
github.com/moby/buildkit v0.11.0-rc1.0.20221213104201-93b40706a007
github.com/morikuni/aec v1.0.0
github.com/opencontainers/go-digest v1.0.0
github.com/opencontainers/image-spec v1.0.3-0.20220303224323-02efb9a75ee1
@ -31,7 +31,7 @@ require (
go.opentelemetry.io/otel v1.4.1
go.opentelemetry.io/otel/trace v1.4.1
golang.org/x/sync v0.1.0
golang.org/x/term v0.2.0
golang.org/x/term v0.3.0
google.golang.org/grpc v1.50.1
gopkg.in/yaml.v3 v3.0.1
k8s.io/api v0.23.5
@ -149,10 +149,10 @@ require (
go.opentelemetry.io/otel/sdk v1.4.1 // indirect
go.opentelemetry.io/proto/otlp v0.12.0 // indirect
golang.org/x/crypto v0.2.0 // indirect
golang.org/x/net v0.2.0 // indirect
golang.org/x/net v0.4.0 // indirect
golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 // indirect
golang.org/x/sys v0.2.0 // indirect
golang.org/x/text v0.4.0 // indirect
golang.org/x/sys v0.3.0 // indirect
golang.org/x/text v0.5.0 // indirect
golang.org/x/time v0.1.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e // indirect

20
go.sum
View File

@ -401,8 +401,8 @@ github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZX
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
github.com/moby/buildkit v0.11.0-rc1.0.20221207183946-5993b526de65 h1:DqEgo1ewB/QBoPfXg/e/8iNEXABHnt7uOeu1VKxX6S0=
github.com/moby/buildkit v0.11.0-rc1.0.20221207183946-5993b526de65/go.mod h1:ToPrcDw4Z4+tyuk+CN+WQ0/tCWcn/ceyXtTKXXe9VP4=
github.com/moby/buildkit v0.11.0-rc1.0.20221213104201-93b40706a007 h1:TS2xbnk6pp0hRf8cU3Ej4mcKEFY+CZ/2lYDR5kuRZss=
github.com/moby/buildkit v0.11.0-rc1.0.20221213104201-93b40706a007/go.mod h1:f3jvilDvcG14z+gzPpA2lcWRwIRyFiNTo5bMwHiYDk0=
github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg=
github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc=
github.com/moby/patternmatcher v0.5.0 h1:YCZgJOeULcxLw1Q+sVR636pmS7sPEn1Qo2iAN6M7DBo=
@ -700,8 +700,8 @@ golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qx
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.2.0 h1:sZfSu1wtKLGlWI4ZZayP0ck9Y73K1ynO6gqzTdBVdPU=
golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU=
golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@ -781,14 +781,14 @@ golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.2.0 h1:ljd4t30dBnAvMZaQCevtY0xLLD0A+bRZXbgLMLU1F/A=
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0 h1:z85xZCsEl7bi/KwbNADeBYoOP0++7W1ipu+aGnpwzRM=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
golang.org/x/term v0.3.0 h1:qoo4akIqOcDME5bhc/NgxUdovd6BSS2uMsVjB56q1xI=
golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@ -797,8 +797,8 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM=
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=

View File

@ -4,7 +4,6 @@ import (
"context"
"github.com/moby/buildkit/client/buildid"
"github.com/moby/buildkit/frontend/attestations"
gateway "github.com/moby/buildkit/frontend/gateway/client"
"github.com/moby/buildkit/frontend/gateway/grpcclient"
gatewayapi "github.com/moby/buildkit/frontend/gateway/pb"
@ -24,7 +23,6 @@ func (c *Client) Build(ctx context.Context, opt SolveOpt, product string, buildF
feOpts := opt.FrontendAttrs
opt.Frontend = ""
opt.FrontendAttrs = attestations.Filter(opt.FrontendAttrs)
if product == "" {
product = apicaps.ExportedProduct

View File

@ -192,12 +192,13 @@ func (e *ExecOp) Marshal(ctx context.Context, c *Constraints) (digest.Digest, []
}
meta := &pb.Meta{
Args: args,
Env: env.ToArray(),
Cwd: cwd,
User: user,
Hostname: hostname,
CgroupParent: cgrpParent,
Args: args,
Env: env.ToArray(),
Cwd: cwd,
User: user,
Hostname: hostname,
CgroupParent: cgrpParent,
RemoveMountStubsRecursive: true,
}
extraHosts, err := getExtraHosts(e.base)(ctx, c)

View File

@ -210,11 +210,12 @@ func (c *Client) solve(ctx context.Context, def *llb.Definition, runGateway runG
})
}
frontendAttrs := map[string]string{}
for k, v := range opt.FrontendAttrs {
frontendAttrs[k] = v
}
for k, v := range cacheOpt.frontendAttrs {
if opt.FrontendAttrs == nil {
opt.FrontendAttrs = map[string]string{}
}
opt.FrontendAttrs[k] = v
frontendAttrs[k] = v
}
solveCtx, cancelSolve := context.WithCancel(ctx)
@ -254,7 +255,7 @@ func (c *Client) solve(ctx context.Context, def *llb.Definition, runGateway runG
ExporterAttrs: ex.Attrs,
Session: s.ID(),
Frontend: opt.Frontend,
FrontendAttrs: opt.FrontendAttrs,
FrontendAttrs: frontendAttrs,
FrontendInputs: frontendInputs,
Cache: cacheOpt.options,
Entitlements: opt.AllowedEntitlements,
@ -270,7 +271,7 @@ func (c *Client) solve(ctx context.Context, def *llb.Definition, runGateway runG
if runGateway != nil {
eg.Go(func() error {
err := runGateway(ref, s, opt.FrontendAttrs)
err := runGateway(ref, s, frontendAttrs)
if err == nil {
return nil
}

View File

@ -0,0 +1,56 @@
package exptypes
import (
"encoding/json"
"fmt"
"github.com/containerd/containerd/platforms"
ocispecs "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/pkg/errors"
)
func ParsePlatforms(meta map[string][]byte) (Platforms, error) {
if platformsBytes, ok := meta[ExporterPlatformsKey]; ok {
var ps Platforms
if len(platformsBytes) > 0 {
if err := json.Unmarshal(platformsBytes, &ps); err != nil {
return Platforms{}, errors.Wrapf(err, "failed to parse platforms passed to provenance processor")
}
}
return ps, nil
}
p := platforms.DefaultSpec()
if imgConfig, ok := meta[ExporterImageConfigKey]; ok {
var img ocispecs.Image
err := json.Unmarshal(imgConfig, &img)
if err != nil {
return Platforms{}, err
}
if img.OS != "" && img.Architecture != "" {
p = ocispecs.Platform{
Architecture: img.Architecture,
OS: img.OS,
OSVersion: img.OSVersion,
OSFeatures: img.OSFeatures,
Variant: img.Variant,
}
}
}
p = platforms.Normalize(p)
pk := platforms.Format(p)
ps := Platforms{
Platforms: []Platform{{ID: pk, Platform: p}},
}
return ps, nil
}
func ParseKey(meta map[string][]byte, key string, p Platform) []byte {
if v, ok := meta[fmt.Sprintf("%s/%s", key, p.ID)]; ok {
return v
} else if v, ok := meta[key]; ok {
return v
}
return nil
}

View File

@ -6,7 +6,7 @@ import (
"github.com/pkg/errors"
)
func AttestationToPB(a *result.Attestation) (*pb.Attestation, error) {
func AttestationToPB[T any](a *result.Attestation[T]) (*pb.Attestation, error) {
if a.ContentFunc != nil {
return nil, errors.Errorf("attestation callback cannot be sent through gateway")
}
@ -22,14 +22,14 @@ func AttestationToPB(a *result.Attestation) (*pb.Attestation, error) {
return &pb.Attestation{
Kind: a.Kind,
Metadata: a.Metadata,
Path: a.Path,
Ref: a.Ref,
InTotoPredicateType: a.InToto.PredicateType,
InTotoSubjects: subjects,
}, nil
}
func AttestationFromPB(a *pb.Attestation) (*result.Attestation, error) {
func AttestationFromPB[T any](a *pb.Attestation) (*result.Attestation[T], error) {
subjects := make([]result.InTotoSubject, len(a.InTotoSubjects))
for i, subject := range a.InTotoSubjects {
subjects[i] = result.InTotoSubject{
@ -39,10 +39,10 @@ func AttestationFromPB(a *pb.Attestation) (*result.Attestation, error) {
}
}
return &result.Attestation{
Kind: a.Kind,
Path: a.Path,
Ref: a.Ref,
return &result.Attestation[T]{
Kind: a.Kind,
Metadata: a.Metadata,
Path: a.Path,
InToto: result.InTotoAttestation{
PredicateType: a.InTotoPredicateType,
Subjects: subjects,

View File

@ -16,6 +16,8 @@ import (
type Result = result.Result[Reference]
type Attestation = result.Attestation[Reference]
type BuildFunc func(context.Context, Client) (*Result, error)
func NewResult() *Result {
@ -73,6 +75,8 @@ type StartRequest struct {
Stdin io.ReadCloser
Stdout, Stderr io.WriteCloser
SecurityMode pb.SecurityMode
RemoveMountStubsRecursive bool
}
// WinSize is same as executor.WinSize, copied here to prevent circular package

View File

@ -161,7 +161,7 @@ func (c *grpcClient) Run(ctx context.Context, f client.BuildFunc) (retError erro
}
}
if res.Attestations != nil && c.caps.Supports(pb.CapAttestations) == nil {
if res.Attestations != nil {
attestations := map[string]*pb.Attestations{}
for k, as := range res.Attestations {
for _, a := range as {
@ -170,6 +170,12 @@ func (c *grpcClient) Run(ctx context.Context, f client.BuildFunc) (retError erro
retError = err
continue
}
pbRef, err := convertRef(a.Ref)
if err != nil {
retError = err
continue
}
pbAtt.Ref = pbRef
if attestations[k] == nil {
attestations[k] = &pb.Attestations{}
}
@ -451,11 +457,18 @@ func (c *grpcClient) Solve(ctx context.Context, creq client.SolveRequest) (res *
if resp.Result.Attestations != nil {
for p, as := range resp.Result.Attestations {
for _, a := range as.Attestation {
att, err := client.AttestationFromPB(a)
att, err := client.AttestationFromPB[client.Reference](a)
if err != nil {
return nil, err
}
res.AddAttestation(p, *att, nil)
if a.Ref.Id != "" {
ref, err := newReference(c, a.Ref)
if err != nil {
return nil, err
}
att.Ref = ref
}
res.AddAttestation(p, *att)
}
}
}
@ -809,6 +822,7 @@ func (ctr *container) Start(ctx context.Context, req client.StartRequest) (clien
Tty: req.Tty,
Security: req.SecurityMode,
}
init.Meta.RemoveMountStubsRecursive = req.RemoveMountStubsRecursive
if req.Stdin != nil {
init.Fds = append(init.Fds, 0)
}

View File

@ -411,14 +411,15 @@ func (m *Attestations) GetAttestation() []*Attestation {
}
type Attestation struct {
Kind AttestationKind `protobuf:"varint,1,opt,name=kind,proto3,enum=moby.buildkit.v1.frontend.AttestationKind" json:"kind,omitempty"`
Ref string `protobuf:"bytes,2,opt,name=ref,proto3" json:"ref,omitempty"`
Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"`
InTotoPredicateType string `protobuf:"bytes,4,opt,name=inTotoPredicateType,proto3" json:"inTotoPredicateType,omitempty"`
InTotoSubjects []*InTotoSubject `protobuf:"bytes,5,rep,name=inTotoSubjects,proto3" json:"inTotoSubjects,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
Kind AttestationKind `protobuf:"varint,1,opt,name=kind,proto3,enum=moby.buildkit.v1.frontend.AttestationKind" json:"kind,omitempty"`
Metadata map[string][]byte `protobuf:"bytes,2,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
Ref *Ref `protobuf:"bytes,3,opt,name=ref,proto3" json:"ref,omitempty"`
Path string `protobuf:"bytes,4,opt,name=path,proto3" json:"path,omitempty"`
InTotoPredicateType string `protobuf:"bytes,5,opt,name=inTotoPredicateType,proto3" json:"inTotoPredicateType,omitempty"`
InTotoSubjects []*InTotoSubject `protobuf:"bytes,6,rep,name=inTotoSubjects,proto3" json:"inTotoSubjects,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Attestation) Reset() { *m = Attestation{} }
@ -461,11 +462,18 @@ func (m *Attestation) GetKind() AttestationKind {
return AttestationKindInToto
}
func (m *Attestation) GetRef() string {
func (m *Attestation) GetMetadata() map[string][]byte {
if m != nil {
return m.Metadata
}
return nil
}
func (m *Attestation) GetRef() *Ref {
if m != nil {
return m.Ref
}
return ""
return nil
}
func (m *Attestation) GetPath() string {
@ -2556,6 +2564,7 @@ func init() {
proto.RegisterMapType((map[string]*Ref)(nil), "moby.buildkit.v1.frontend.RefMap.RefsEntry")
proto.RegisterType((*Attestations)(nil), "moby.buildkit.v1.frontend.Attestations")
proto.RegisterType((*Attestation)(nil), "moby.buildkit.v1.frontend.Attestation")
proto.RegisterMapType((map[string][]byte)(nil), "moby.buildkit.v1.frontend.Attestation.MetadataEntry")
proto.RegisterType((*InTotoSubject)(nil), "moby.buildkit.v1.frontend.InTotoSubject")
proto.RegisterType((*ReturnRequest)(nil), "moby.buildkit.v1.frontend.ReturnRequest")
proto.RegisterType((*ReturnResponse)(nil), "moby.buildkit.v1.frontend.ReturnResponse")
@ -2600,157 +2609,157 @@ func init() {
func init() { proto.RegisterFile("gateway.proto", fileDescriptor_f1a937782ebbded5) }
var fileDescriptor_f1a937782ebbded5 = []byte{
// 2387 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x19, 0x4d, 0x6f, 0x1b, 0xc7,
0x55, 0x2b, 0x52, 0x1f, 0x7c, 0xa4, 0x28, 0x7a, 0xec, 0xa4, 0xeb, 0x45, 0xe0, 0xd0, 0xeb, 0x44,
0xa1, 0x15, 0x87, 0x4c, 0xe9, 0x04, 0x72, 0xed, 0xd6, 0x89, 0xf5, 0x05, 0x29, 0x96, 0x6c, 0x76,
0xe4, 0xc2, 0x45, 0x90, 0x02, 0x5d, 0x71, 0x87, 0xf4, 0xd6, 0xab, 0xdd, 0xed, 0xee, 0xd0, 0xb2,
0x92, 0x4b, 0x7b, 0x2b, 0x72, 0xea, 0xa9, 0xb7, 0xa0, 0x40, 0xfb, 0x07, 0xda, 0x4b, 0x6f, 0xed,
0x39, 0x40, 0x2f, 0xbd, 0xf4, 0xd2, 0x43, 0x50, 0xf8, 0x47, 0xb4, 0xe8, 0xad, 0x78, 0x33, 0xb3,
0xe4, 0xf0, 0x43, 0x4b, 0x2a, 0x39, 0x71, 0xe6, 0xcd, 0xfb, 0x98, 0xf7, 0xfd, 0x66, 0x09, 0x2b,
0x5d, 0x87, 0xb3, 0x53, 0xe7, 0xac, 0x1e, 0xc5, 0x21, 0x0f, 0xc9, 0xd5, 0x93, 0xf0, 0xf8, 0xac,
0x7e, 0xdc, 0xf3, 0x7c, 0xf7, 0xb9, 0xc7, 0xeb, 0x2f, 0xbe, 0x5f, 0xef, 0xc4, 0x61, 0xc0, 0x59,
0xe0, 0x5a, 0xef, 0x75, 0x3d, 0xfe, 0xac, 0x77, 0x5c, 0x6f, 0x87, 0x27, 0x8d, 0x6e, 0xd8, 0x0d,
0x1b, 0x82, 0xe2, 0xb8, 0xd7, 0x11, 0x3b, 0xb1, 0x11, 0x2b, 0xc9, 0xc9, 0x6a, 0x8e, 0xa2, 0x77,
0xc3, 0xb0, 0xeb, 0x33, 0x27, 0xf2, 0x12, 0xb5, 0x6c, 0xc4, 0x51, 0xbb, 0x91, 0x70, 0x87, 0xf7,
0x12, 0x45, 0x73, 0x4b, 0xa3, 0xc1, 0x8b, 0x34, 0xd2, 0x8b, 0x34, 0x92, 0xd0, 0x7f, 0xc1, 0xe2,
0x46, 0x74, 0xdc, 0x08, 0xa3, 0x14, 0xbb, 0x71, 0x2e, 0xb6, 0x13, 0x79, 0x0d, 0x7e, 0x16, 0xb1,
0xa4, 0x71, 0x1a, 0xc6, 0xcf, 0x59, 0xac, 0x08, 0x6e, 0x9f, 0x4b, 0xd0, 0xe3, 0x9e, 0x8f, 0x54,
0x6d, 0x27, 0x4a, 0x50, 0x08, 0xfe, 0x2a, 0x22, 0x5d, 0x6d, 0x1e, 0x06, 0x5e, 0xc2, 0x3d, 0xaf,
0xeb, 0x35, 0x3a, 0x89, 0xa0, 0x91, 0x52, 0x50, 0x09, 0x89, 0x6e, 0xff, 0x3d, 0x0f, 0x8b, 0x94,
0x25, 0x3d, 0x9f, 0x93, 0x35, 0x58, 0x89, 0x59, 0x67, 0x9b, 0x45, 0x31, 0x6b, 0x3b, 0x9c, 0xb9,
0xa6, 0x51, 0x35, 0x6a, 0x85, 0xbd, 0x39, 0x3a, 0x0c, 0x26, 0x3f, 0x81, 0x72, 0xcc, 0x3a, 0x89,
0x86, 0x38, 0x5f, 0x35, 0x6a, 0xc5, 0xe6, 0xbb, 0xf5, 0x73, 0x9d, 0x51, 0xa7, 0xac, 0x73, 0xe8,
0x44, 0x03, 0x92, 0xbd, 0x39, 0x3a, 0xc2, 0x84, 0x34, 0x21, 0x17, 0xb3, 0x8e, 0x99, 0x13, 0xbc,
0xae, 0x65, 0xf3, 0xda, 0x9b, 0xa3, 0x88, 0x4c, 0x36, 0x20, 0x8f, 0x5c, 0xcc, 0xbc, 0x20, 0xba,
0x3e, 0xf5, 0x02, 0x7b, 0x73, 0x54, 0x10, 0x90, 0x87, 0xb0, 0x7c, 0xc2, 0xb8, 0xe3, 0x3a, 0xdc,
0x31, 0xa1, 0x9a, 0xab, 0x15, 0x9b, 0x8d, 0x4c, 0x62, 0x34, 0x50, 0xfd, 0x50, 0x51, 0xec, 0x04,
0x3c, 0x3e, 0xa3, 0x7d, 0x06, 0xe4, 0x29, 0x94, 0x1c, 0xce, 0x19, 0x5a, 0xd5, 0x0b, 0x83, 0xc4,
0x2c, 0x0a, 0x86, 0xb7, 0xa7, 0x33, 0x7c, 0xa0, 0x51, 0x49, 0xa6, 0x43, 0x8c, 0xac, 0x7b, 0xb0,
0x32, 0x24, 0x93, 0x54, 0x20, 0xf7, 0x9c, 0x9d, 0x49, 0xc7, 0x50, 0x5c, 0x92, 0x2b, 0xb0, 0xf0,
0xc2, 0xf1, 0x7b, 0x4c, 0xf8, 0xa0, 0x44, 0xe5, 0xe6, 0xee, 0xfc, 0x1d, 0xc3, 0x7a, 0x06, 0x97,
0xc6, 0xf8, 0x4f, 0x60, 0xf0, 0x23, 0x9d, 0x41, 0xb1, 0xf9, 0x4e, 0xc6, 0xad, 0x75, 0x76, 0x9a,
0xa4, 0xcd, 0x65, 0x58, 0x8c, 0x85, 0x42, 0xf6, 0xef, 0x0c, 0xa8, 0x8c, 0xba, 0x9a, 0xec, 0x2b,
0x27, 0x19, 0xc2, 0x2c, 0x1f, 0x5e, 0x20, 0x4a, 0x10, 0xa0, 0x0c, 0x23, 0x58, 0x58, 0x1b, 0x50,
0xe8, 0x83, 0xa6, 0x19, 0xa3, 0xa0, 0x5d, 0xd1, 0xde, 0x80, 0x1c, 0x65, 0x1d, 0x52, 0x86, 0x79,
0x4f, 0xc5, 0x35, 0x9d, 0xf7, 0x5c, 0x52, 0x85, 0x9c, 0xcb, 0x3a, 0x4a, 0xf5, 0x72, 0x3d, 0x3a,
0xae, 0x6f, 0xb3, 0x8e, 0x17, 0x78, 0xa8, 0x22, 0xc5, 0x23, 0xfb, 0x0f, 0x06, 0xe6, 0x07, 0x5e,
0x8b, 0x7c, 0x34, 0xa4, 0xc7, 0xf4, 0x68, 0x1f, 0xbb, 0xfd, 0xd3, 0xec, 0xdb, 0x7f, 0x30, 0xec,
0x89, 0x29, 0x29, 0xa0, 0x6b, 0xf7, 0x53, 0x28, 0xe9, 0xbe, 0x21, 0x7b, 0x50, 0xd4, 0xe2, 0x48,
0x5d, 0x78, 0x6d, 0x36, 0xcf, 0x52, 0x9d, 0xd4, 0xfe, 0xaf, 0x01, 0x45, 0xed, 0x90, 0xdc, 0x87,
0xfc, 0x73, 0x2f, 0x90, 0x26, 0x2c, 0x37, 0xd7, 0x67, 0x63, 0xf9, 0xd0, 0x0b, 0x5c, 0x2a, 0xe8,
0x50, 0xeb, 0x58, 0x19, 0xbc, 0x20, 0x53, 0x98, 0x40, 0x3e, 0x72, 0xf8, 0x33, 0x91, 0xf7, 0x05,
0x2a, 0xd6, 0xe4, 0x7d, 0xb8, 0xec, 0x05, 0x4f, 0x42, 0x1e, 0xb6, 0x62, 0xe6, 0x7a, 0x18, 0x0a,
0x4f, 0xce, 0x22, 0x26, 0xb2, 0xbc, 0x40, 0x27, 0x1d, 0x91, 0x16, 0x94, 0x25, 0xf8, 0xa8, 0x77,
0xfc, 0x0b, 0xd6, 0xe6, 0x89, 0xb9, 0x20, 0x94, 0xae, 0x65, 0xdc, 0x70, 0x5f, 0x27, 0xa0, 0x23,
0xf4, 0xf6, 0x9f, 0x0d, 0x58, 0x19, 0xc2, 0x20, 0x1f, 0x0f, 0xe9, 0x7e, 0x6b, 0x56, 0xce, 0x9a,
0xf6, 0x9f, 0xc0, 0xa2, 0xeb, 0x75, 0x59, 0xc2, 0xcd, 0xf9, 0x6a, 0xae, 0x56, 0xd8, 0x6c, 0x7e,
0xfd, 0xcd, 0x9b, 0x73, 0xff, 0xfa, 0xe6, 0xcd, 0x75, 0xad, 0x66, 0x87, 0x11, 0x0b, 0xda, 0x61,
0xc0, 0x1d, 0x2f, 0x60, 0x31, 0xb6, 0x9e, 0xf7, 0x24, 0x49, 0x7d, 0x5b, 0xfc, 0x50, 0xc5, 0x01,
0xed, 0x16, 0x38, 0x27, 0x2c, 0xb5, 0x1b, 0xae, 0x6d, 0x0e, 0x2b, 0x94, 0xf1, 0x5e, 0x1c, 0x50,
0xf6, 0xcb, 0x1e, 0x22, 0xfd, 0x20, 0xcd, 0x4c, 0x71, 0xe9, 0x69, 0x15, 0x12, 0x11, 0xa9, 0x22,
0x20, 0x35, 0x58, 0x60, 0x71, 0x1c, 0xc6, 0x2a, 0x1a, 0x49, 0x5d, 0x36, 0xc1, 0x7a, 0x1c, 0xb5,
0xeb, 0x47, 0xa2, 0x09, 0x52, 0x89, 0x60, 0x57, 0xa0, 0x9c, 0x4a, 0x4d, 0xa2, 0x30, 0x48, 0x98,
0xbd, 0x8a, 0xa6, 0x8b, 0x7a, 0x3c, 0x51, 0xf7, 0xb0, 0xff, 0x66, 0x40, 0x39, 0x85, 0x48, 0x1c,
0xf2, 0x19, 0x14, 0x07, 0xb9, 0x96, 0x26, 0xd5, 0xdd, 0x4c, 0xa3, 0xea, 0xf4, 0x5a, 0xa2, 0xaa,
0x1c, 0xd3, 0xd9, 0x59, 0x8f, 0xa0, 0x32, 0x8a, 0x30, 0x21, 0xe3, 0xde, 0x1a, 0xce, 0xb8, 0xd1,
0x02, 0xa0, 0x65, 0xd8, 0x3f, 0x0d, 0xb8, 0x4a, 0x99, 0xe8, 0xea, 0xfb, 0x27, 0x4e, 0x97, 0x6d,
0x85, 0x41, 0xc7, 0xeb, 0xa6, 0x66, 0xae, 0x88, 0xea, 0x92, 0x72, 0xc6, 0x42, 0x53, 0x83, 0xe5,
0x96, 0xef, 0xf0, 0x4e, 0x18, 0x9f, 0x28, 0xe6, 0x25, 0x64, 0x9e, 0xc2, 0x68, 0xff, 0x94, 0x54,
0xa1, 0xa8, 0x18, 0x1f, 0x86, 0x6e, 0xea, 0x4e, 0x1d, 0x44, 0x4c, 0x58, 0x3a, 0x08, 0xbb, 0x8f,
0xd0, 0xd9, 0x32, 0x03, 0xd2, 0x2d, 0xb1, 0xa1, 0xa4, 0x10, 0x63, 0x91, 0x20, 0x0b, 0x55, 0xa3,
0xb6, 0x40, 0x87, 0x60, 0xe4, 0x0d, 0x28, 0x1c, 0xb1, 0x24, 0xf1, 0xc2, 0x60, 0x7f, 0xdb, 0x5c,
0x14, 0xf4, 0x03, 0x80, 0xfd, 0x2b, 0x03, 0xac, 0x49, 0x7a, 0x29, 0x27, 0x7d, 0x02, 0x8b, 0x32,
0xec, 0xa4, 0x6e, 0xdf, 0x2e, 0x60, 0xe5, 0x2f, 0x79, 0x1d, 0x16, 0x25, 0x77, 0xd5, 0xaa, 0xd4,
0xce, 0xfe, 0xcb, 0x02, 0x94, 0x8e, 0xf0, 0x02, 0xa9, 0x35, 0xeb, 0x00, 0x03, 0x27, 0xa8, 0xc0,
0x1d, 0x75, 0x8d, 0x86, 0x41, 0x2c, 0x58, 0xde, 0x55, 0x41, 0xa2, 0x0a, 0x4b, 0x7f, 0x4f, 0x3e,
0x85, 0x62, 0xba, 0x7e, 0x1c, 0x71, 0x33, 0x27, 0xa2, 0xec, 0x4e, 0x46, 0x94, 0xe9, 0x37, 0xa9,
0x6b, 0xa4, 0x2a, 0xc6, 0x34, 0x08, 0xb9, 0x05, 0x97, 0x1c, 0xdf, 0x0f, 0x4f, 0x55, 0xe2, 0x88,
0x14, 0x10, 0x2e, 0x58, 0xa6, 0xe3, 0x07, 0x58, 0xd3, 0x34, 0xe0, 0x83, 0x38, 0x76, 0xce, 0x30,
0x66, 0x16, 0x05, 0xfe, 0xa4, 0x23, 0xec, 0x66, 0xbb, 0x5e, 0xe0, 0xf8, 0x26, 0x08, 0x1c, 0xb9,
0x41, 0x9f, 0xef, 0xbc, 0x8c, 0xc2, 0x98, 0xb3, 0xf8, 0x01, 0xe7, 0xb1, 0x59, 0x14, 0xc6, 0x1c,
0x82, 0x91, 0x16, 0x94, 0xb6, 0x9c, 0xf6, 0x33, 0xb6, 0x7f, 0x82, 0xc0, 0xc4, 0x2c, 0x09, 0xb5,
0xb3, 0x2a, 0x96, 0x40, 0x7f, 0x1c, 0xe9, 0x93, 0x88, 0xce, 0x81, 0xb4, 0xa1, 0x9c, 0xaa, 0x2e,
0xf3, 0xd0, 0x5c, 0x11, 0x3c, 0xef, 0x5d, 0xd4, 0x94, 0x92, 0x5a, 0x8a, 0x18, 0x61, 0x89, 0x8e,
0xdc, 0xc1, 0x94, 0x73, 0x38, 0x33, 0xcb, 0x42, 0xe7, 0xfe, 0xde, 0xba, 0x0f, 0x95, 0x51, 0x6f,
0x5c, 0x64, 0x00, 0xb0, 0x7e, 0x0c, 0x97, 0x27, 0x5c, 0xe1, 0x3b, 0xd5, 0x84, 0x3f, 0x19, 0x70,
0x69, 0xcc, 0x6e, 0x58, 0x97, 0x45, 0x2e, 0x4a, 0x96, 0x62, 0x4d, 0x0e, 0x61, 0x01, 0xfd, 0x92,
0x88, 0xb2, 0x5f, 0x6c, 0x6e, 0x5c, 0xc4, 0x11, 0x75, 0x41, 0x29, 0x0d, 0x26, 0xb9, 0x58, 0x77,
0x00, 0x06, 0xc0, 0x0b, 0x8d, 0x41, 0x9f, 0xc1, 0x8a, 0xf2, 0x8a, 0x4a, 0x70, 0xd5, 0x8f, 0x8d,
0x41, 0x3f, 0x1e, 0xb4, 0x8c, 0xdc, 0x05, 0x5b, 0x86, 0xfd, 0x05, 0xac, 0x52, 0xe6, 0xb8, 0xbb,
0x9e, 0xcf, 0xce, 0xaf, 0x8c, 0x98, 0xad, 0x9e, 0xcf, 0x5a, 0xd8, 0xf3, 0xd3, 0x6c, 0x55, 0x7b,
0x72, 0x17, 0x16, 0xa8, 0x13, 0x74, 0x99, 0x12, 0xfd, 0x56, 0x86, 0x68, 0x21, 0x04, 0x71, 0xa9,
0x24, 0xb1, 0xef, 0x41, 0xa1, 0x0f, 0xc3, 0x5a, 0xf3, 0xb8, 0xd3, 0x49, 0x98, 0xac, 0x5b, 0x39,
0xaa, 0x76, 0x08, 0x3f, 0x60, 0x41, 0x57, 0x89, 0xce, 0x51, 0xb5, 0xb3, 0xd7, 0x70, 0x6c, 0x4d,
0x6f, 0xae, 0x4c, 0x43, 0x20, 0xbf, 0x8d, 0xcf, 0x03, 0x43, 0x24, 0x98, 0x58, 0xdb, 0x2e, 0xb6,
0x3a, 0xc7, 0xdd, 0xf6, 0xe2, 0xf3, 0x15, 0x34, 0x61, 0x69, 0xdb, 0x8b, 0x35, 0xfd, 0xd2, 0x2d,
0x59, 0xc3, 0x26, 0xd8, 0xf6, 0x7b, 0x2e, 0x6a, 0xcb, 0x59, 0x1c, 0xa8, 0x6a, 0x3f, 0x02, 0xb5,
0x3f, 0x92, 0x76, 0x14, 0x52, 0xd4, 0x65, 0x6e, 0xc1, 0x12, 0x0b, 0x78, 0xec, 0xb1, 0xb4, 0x53,
0x92, 0xba, 0x7c, 0xd1, 0xd5, 0xc5, 0x8b, 0x4e, 0x74, 0x64, 0x9a, 0xa2, 0xd8, 0x1b, 0xb0, 0x8a,
0x80, 0x6c, 0x47, 0x10, 0xc8, 0x6b, 0x97, 0x14, 0x6b, 0xfb, 0x2e, 0x54, 0x06, 0x84, 0x4a, 0xf4,
0x1a, 0xe4, 0x71, 0x8e, 0x53, 0x85, 0x78, 0x92, 0x5c, 0x71, 0x6e, 0xdf, 0x80, 0xd5, 0x34, 0x5b,
0xcf, 0x15, 0x6a, 0x13, 0xa8, 0x0c, 0x90, 0xd4, 0xb4, 0xb0, 0x02, 0xc5, 0x96, 0x17, 0xa4, 0xcd,
0xd4, 0x7e, 0x65, 0x40, 0xa9, 0x15, 0x06, 0x83, 0x26, 0xd4, 0x82, 0xd5, 0x34, 0x75, 0x1f, 0xb4,
0xf6, 0xb7, 0x9c, 0x28, 0xb5, 0x41, 0x75, 0x3c, 0x3e, 0xd4, 0x9b, 0xb8, 0x2e, 0x11, 0x37, 0xf3,
0xd8, 0xaf, 0xe8, 0x28, 0x39, 0xf9, 0x18, 0x96, 0x0e, 0x0e, 0x36, 0x05, 0xa7, 0xf9, 0x0b, 0x71,
0x4a, 0xc9, 0xc8, 0x7d, 0x58, 0x7a, 0x2a, 0x9e, 0xea, 0x89, 0xea, 0x29, 0x13, 0x62, 0x55, 0x5a,
0x48, 0xa2, 0x51, 0xd6, 0x0e, 0x63, 0x97, 0xa6, 0x44, 0xf6, 0x7f, 0x0c, 0x28, 0x3e, 0x75, 0x06,
0x83, 0xda, 0x60, 0x32, 0xfc, 0x0e, 0x8d, 0x56, 0x4d, 0x86, 0x57, 0x60, 0xc1, 0x67, 0x2f, 0x98,
0xaf, 0x62, 0x5c, 0x6e, 0x10, 0x9a, 0x3c, 0x0b, 0x63, 0x99, 0xd6, 0x25, 0x2a, 0x37, 0x98, 0x10,
0x2e, 0xe3, 0x8e, 0xe7, 0x9b, 0xf9, 0x6a, 0x0e, 0x9b, 0xb2, 0xdc, 0xa1, 0xe7, 0x7a, 0xb1, 0x2f,
0xba, 0x59, 0x81, 0xe2, 0x92, 0xd8, 0x90, 0xf7, 0x82, 0x4e, 0x28, 0x1a, 0x96, 0x2a, 0x8b, 0x47,
0x61, 0x2f, 0x6e, 0xb3, 0xfd, 0xa0, 0x13, 0x52, 0x71, 0x46, 0xae, 0xc3, 0x62, 0x8c, 0xf9, 0x97,
0x98, 0x4b, 0xc2, 0x28, 0x05, 0xc4, 0x92, 0x59, 0xaa, 0x0e, 0xec, 0x32, 0x94, 0xa4, 0xde, 0xca,
0xf9, 0xbf, 0x9d, 0x87, 0xcb, 0x8f, 0xd8, 0xe9, 0x56, 0xaa, 0x57, 0x6a, 0x90, 0x2a, 0x14, 0xfb,
0xb0, 0xfd, 0x6d, 0x15, 0x42, 0x3a, 0x08, 0x85, 0x1d, 0x86, 0xbd, 0x80, 0xa7, 0x3e, 0x14, 0xc2,
0x04, 0x84, 0xaa, 0x03, 0xf2, 0x36, 0x2c, 0x3d, 0x62, 0xfc, 0x34, 0x8c, 0x9f, 0x0b, 0xad, 0xcb,
0xcd, 0x22, 0xe2, 0x3c, 0x62, 0x1c, 0xe7, 0x2a, 0x9a, 0x9e, 0xe1, 0xb0, 0x16, 0xa5, 0xc3, 0x5a,
0x7e, 0xd2, 0xb0, 0x96, 0x9e, 0x92, 0x0d, 0x28, 0xb6, 0xc3, 0x20, 0xe1, 0xb1, 0xe3, 0x05, 0xe2,
0x8d, 0x81, 0xc8, 0xaf, 0x21, 0xb2, 0x74, 0xec, 0xd6, 0xe0, 0x90, 0xea, 0x98, 0x64, 0x1d, 0x80,
0xbd, 0xe4, 0xb1, 0xb3, 0x17, 0x26, 0x3c, 0x31, 0x17, 0xc5, 0x85, 0x01, 0xe9, 0x10, 0xb0, 0xdf,
0xa2, 0xda, 0xa9, 0xfd, 0x3a, 0x5c, 0x19, 0xb6, 0x88, 0x32, 0xd5, 0x3d, 0xf8, 0x1e, 0x65, 0x3e,
0x73, 0x12, 0x76, 0x71, 0x6b, 0xd9, 0x16, 0x98, 0xe3, 0xc4, 0x8a, 0xf1, 0xff, 0x72, 0x50, 0xdc,
0x79, 0xc9, 0xda, 0x87, 0x2c, 0x49, 0x9c, 0xae, 0x18, 0x19, 0x5b, 0x71, 0xd8, 0x66, 0x49, 0xd2,
0xe7, 0x35, 0x00, 0x90, 0x1f, 0x42, 0x7e, 0x3f, 0xf0, 0xb8, 0xea, 0x8f, 0x6b, 0x99, 0x13, 0xbb,
0xc7, 0x15, 0xcf, 0xbd, 0x39, 0x2a, 0xa8, 0xc8, 0x5d, 0xc8, 0x63, 0x75, 0x99, 0xa5, 0xc2, 0xbb,
0x1a, 0x2d, 0xd2, 0x90, 0x4d, 0xf1, 0xa9, 0xca, 0xfb, 0x9c, 0x29, 0x2f, 0xd5, 0xb2, 0x5b, 0x93,
0xf7, 0x39, 0x1b, 0x70, 0x50, 0x94, 0x64, 0x07, 0x96, 0x8e, 0xb8, 0x13, 0x73, 0xe6, 0x2a, 0xef,
0xdd, 0xcc, 0x9a, 0x60, 0x24, 0xe6, 0x80, 0x4b, 0x4a, 0x8b, 0x46, 0xd8, 0x79, 0xe9, 0x71, 0x95,
0x0d, 0x59, 0x46, 0x40, 0x34, 0x4d, 0x11, 0xdc, 0x22, 0xf5, 0x76, 0x18, 0x30, 0x73, 0x69, 0x2a,
0x35, 0xa2, 0x69, 0xd4, 0xb8, 0x45, 0x33, 0x1c, 0x79, 0x5d, 0x1c, 0x0c, 0x97, 0xa7, 0x9a, 0x41,
0x22, 0x6a, 0x66, 0x90, 0x80, 0xcd, 0x25, 0x58, 0x10, 0x63, 0x90, 0xfd, 0x7b, 0x03, 0x8a, 0x9a,
0x9f, 0x66, 0xc8, 0xbb, 0x37, 0x20, 0x7f, 0xc8, 0xb8, 0xa3, 0xfc, 0xbf, 0x2c, 0xb2, 0x8e, 0x71,
0x87, 0x0a, 0x28, 0x16, 0x8e, 0x5d, 0x57, 0x16, 0xc5, 0x15, 0x8a, 0x4b, 0x84, 0x3c, 0xe1, 0x67,
0xc2, 0x65, 0xcb, 0x14, 0x97, 0xe4, 0x16, 0x2c, 0x1f, 0xb1, 0x76, 0x2f, 0xf6, 0xf8, 0x99, 0x70,
0x42, 0xb9, 0x59, 0x11, 0xe5, 0x44, 0xc1, 0x44, 0x72, 0xf6, 0x31, 0xec, 0x87, 0x18, 0x9c, 0x83,
0x0b, 0x12, 0xc8, 0x6f, 0xe1, 0x43, 0x09, 0x6f, 0xb6, 0x42, 0xc5, 0x1a, 0xdf, 0xaa, 0x3b, 0xd3,
0xde, 0xaa, 0x3b, 0xe9, 0x5b, 0x75, 0xd8, 0xa9, 0xd8, 0x7d, 0x34, 0x23, 0xdb, 0x0f, 0xa0, 0xd0,
0x0f, 0x3c, 0x52, 0x86, 0xf9, 0x5d, 0x57, 0x49, 0x9a, 0xdf, 0x15, 0x5f, 0x2f, 0x76, 0x1e, 0xef,
0x0a, 0x29, 0xcb, 0x14, 0x97, 0xfd, 0x21, 0x21, 0xa7, 0x0d, 0x09, 0x1b, 0xf8, 0x0a, 0xd7, 0xa2,
0x0f, 0x91, 0x68, 0x78, 0x9a, 0xa4, 0x57, 0xc6, 0xb5, 0x54, 0xc3, 0x4f, 0x04, 0x2f, 0xa1, 0x86,
0x9f, 0xd8, 0x37, 0x60, 0x65, 0xc8, 0x5f, 0x88, 0x24, 0x9e, 0x7d, 0x6a, 0x96, 0xc4, 0xf5, 0x3a,
0x83, 0xd5, 0x91, 0x4f, 0x2b, 0xe4, 0x6d, 0x58, 0x94, 0x5f, 0x1c, 0x2a, 0x73, 0xd6, 0xd5, 0x2f,
0xbf, 0xaa, 0xbe, 0x36, 0x82, 0x20, 0x0f, 0x11, 0x6d, 0xb3, 0x17, 0xb8, 0x3e, 0xab, 0x18, 0x13,
0xd1, 0xe4, 0xa1, 0x95, 0xff, 0xcd, 0x1f, 0xaf, 0xcd, 0xad, 0x3b, 0x70, 0x69, 0xec, 0x2b, 0x06,
0xb9, 0x01, 0xf9, 0x23, 0xe6, 0x77, 0x52, 0x31, 0x63, 0x08, 0x78, 0x48, 0xae, 0x43, 0x8e, 0x3a,
0xa7, 0x15, 0xc3, 0x32, 0xbf, 0xfc, 0xaa, 0x7a, 0x65, 0xfc, 0x53, 0x88, 0x73, 0x2a, 0x45, 0x34,
0xff, 0x0a, 0x50, 0x38, 0x38, 0xd8, 0xdc, 0x8c, 0x3d, 0xb7, 0xcb, 0xc8, 0xaf, 0x0d, 0x20, 0xe3,
0x2f, 0x51, 0xf2, 0x41, 0x76, 0x8e, 0x4f, 0x7e, 0x90, 0x5b, 0x1f, 0x5e, 0x90, 0x4a, 0x4d, 0x1a,
0x9f, 0xc2, 0x82, 0x18, 0x8f, 0xc9, 0x3b, 0x33, 0x3e, 0x6b, 0xac, 0xda, 0x74, 0x44, 0xc5, 0xbb,
0x0d, 0xcb, 0xe9, 0x88, 0x49, 0xd6, 0x33, 0xaf, 0x37, 0x34, 0x41, 0x5b, 0xef, 0xce, 0x84, 0xab,
0x84, 0xfc, 0x1c, 0x96, 0xd4, 0xe4, 0x48, 0x6e, 0x4e, 0xa1, 0x1b, 0xcc, 0xb0, 0xd6, 0xfa, 0x2c,
0xa8, 0x03, 0x35, 0xd2, 0x09, 0x31, 0x53, 0x8d, 0x91, 0xf9, 0x33, 0x53, 0x8d, 0xb1, 0x91, 0xb3,
0x3d, 0x78, 0x08, 0x66, 0x0a, 0x19, 0x99, 0x37, 0x33, 0x85, 0x8c, 0x8e, 0x9d, 0xe4, 0x29, 0xe4,
0x71, 0xec, 0x24, 0x59, 0xe5, 0x57, 0x9b, 0x4b, 0xad, 0xac, 0x98, 0x18, 0x9a, 0x57, 0x7f, 0x86,
0x6d, 0x4a, 0xbc, 0xf9, 0xb3, 0x1b, 0x94, 0xf6, 0xa1, 0xce, 0xba, 0x39, 0x03, 0xe6, 0x80, 0xbd,
0x7a, 0x2f, 0xd7, 0x66, 0xf8, 0x5a, 0x36, 0x9d, 0xfd, 0xc8, 0x77, 0xb9, 0x10, 0x4a, 0xfa, 0xf4,
0x41, 0xea, 0x19, 0xa4, 0x13, 0x06, 0x37, 0xab, 0x31, 0x33, 0xbe, 0x12, 0xf8, 0x05, 0xbe, 0xbd,
0x86, 0x27, 0x13, 0xd2, 0xcc, 0x34, 0xc7, 0xc4, 0x19, 0xc8, 0xba, 0x7d, 0x21, 0x1a, 0x25, 0xdc,
0x91, 0x93, 0x8f, 0x9a, 0x6e, 0x48, 0x76, 0x23, 0xef, 0x4f, 0x48, 0xd6, 0x8c, 0x78, 0x35, 0xe3,
0x7d, 0x03, 0xe3, 0x0c, 0x27, 0xde, 0x4c, 0xde, 0xda, 0x53, 0x20, 0x33, 0xce, 0xf4, 0xd1, 0x79,
0xb3, 0xf4, 0xf5, 0xab, 0x6b, 0xc6, 0x3f, 0x5e, 0x5d, 0x33, 0xfe, 0xfd, 0xea, 0x9a, 0x71, 0xbc,
0x28, 0xfe, 0xcf, 0xbb, 0xfd, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x22, 0xd0, 0xf5, 0x61, 0x21,
0x1d, 0x00, 0x00,
// 2395 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x39, 0xcd, 0x6f, 0x1b, 0xc7,
0xf5, 0x5a, 0x91, 0x12, 0xc9, 0xc7, 0x0f, 0xd1, 0x13, 0x27, 0x3f, 0x66, 0x11, 0x38, 0xf2, 0x3a,
0x51, 0x64, 0xc5, 0x21, 0xfd, 0xa3, 0x1d, 0xc8, 0xb5, 0x5b, 0x27, 0xd6, 0x17, 0xa4, 0x58, 0xb2,
0xd9, 0x91, 0x0b, 0x17, 0x41, 0x0a, 0x74, 0xc5, 0x1d, 0xd2, 0x5b, 0xaf, 0x76, 0xb7, 0xbb, 0x43,
0xcb, 0x4a, 0x2e, 0xed, 0xad, 0xc8, 0xa9, 0xa7, 0xde, 0x82, 0x02, 0x2d, 0xd0, 0x73, 0x7b, 0xe9,
0xad, 0x3d, 0x07, 0xe8, 0xa5, 0x97, 0x5e, 0x7a, 0x08, 0x0a, 0xff, 0x11, 0x05, 0x7a, 0x2b, 0xde,
0xcc, 0x2c, 0x39, 0xfc, 0xd0, 0x92, 0xac, 0x4f, 0x9c, 0x79, 0xf3, 0x3e, 0xe6, 0x7d, 0xbf, 0x59,
0x42, 0xb9, 0x6b, 0x73, 0x76, 0x66, 0x9f, 0xd7, 0xc3, 0x28, 0xe0, 0x01, 0x79, 0xfb, 0x34, 0x38,
0x39, 0xaf, 0x9f, 0xf4, 0x5c, 0xcf, 0x79, 0xee, 0xf2, 0xfa, 0x8b, 0xff, 0xaf, 0x77, 0xa2, 0xc0,
0xe7, 0xcc, 0x77, 0xcc, 0x8f, 0xba, 0x2e, 0x7f, 0xd6, 0x3b, 0xa9, 0xb7, 0x83, 0xd3, 0x46, 0x37,
0xe8, 0x06, 0x0d, 0x41, 0x71, 0xd2, 0xeb, 0x88, 0x9d, 0xd8, 0x88, 0x95, 0xe4, 0x64, 0x36, 0x47,
0xd1, 0xbb, 0x41, 0xd0, 0xf5, 0x98, 0x1d, 0xba, 0xb1, 0x5a, 0x36, 0xa2, 0xb0, 0xdd, 0x88, 0xb9,
0xcd, 0x7b, 0xb1, 0xa2, 0xb9, 0xa1, 0xd1, 0xe0, 0x45, 0x1a, 0xc9, 0x45, 0x1a, 0x71, 0xe0, 0xbd,
0x60, 0x51, 0x23, 0x3c, 0x69, 0x04, 0x61, 0x82, 0xdd, 0xb8, 0x10, 0xdb, 0x0e, 0xdd, 0x06, 0x3f,
0x0f, 0x59, 0xdc, 0x38, 0x0b, 0xa2, 0xe7, 0x2c, 0x52, 0x04, 0xb7, 0x2e, 0x24, 0xe8, 0x71, 0xd7,
0x43, 0xaa, 0xb6, 0x1d, 0xc6, 0x28, 0x04, 0x7f, 0x15, 0x91, 0xae, 0x36, 0x0f, 0x7c, 0x37, 0xe6,
0xae, 0xdb, 0x75, 0x1b, 0x9d, 0x58, 0xd0, 0x48, 0x29, 0xa8, 0x84, 0x44, 0xb7, 0xfe, 0x96, 0x85,
0x65, 0xca, 0xe2, 0x9e, 0xc7, 0xc9, 0x1a, 0x94, 0x23, 0xd6, 0xd9, 0x61, 0x61, 0xc4, 0xda, 0x36,
0x67, 0x4e, 0xcd, 0x58, 0x35, 0xd6, 0x0b, 0xfb, 0x0b, 0x74, 0x18, 0x4c, 0x7e, 0x04, 0x95, 0x88,
0x75, 0x62, 0x0d, 0x71, 0x71, 0xd5, 0x58, 0x2f, 0x36, 0x3f, 0xac, 0x5f, 0xe8, 0x8c, 0x3a, 0x65,
0x9d, 0x23, 0x3b, 0x1c, 0x90, 0xec, 0x2f, 0xd0, 0x11, 0x26, 0xa4, 0x09, 0x99, 0x88, 0x75, 0x6a,
0x19, 0xc1, 0xeb, 0x4a, 0x3a, 0xaf, 0xfd, 0x05, 0x8a, 0xc8, 0x64, 0x13, 0xb2, 0xc8, 0xa5, 0x96,
0x15, 0x44, 0x57, 0xa7, 0x5e, 0x60, 0x7f, 0x81, 0x0a, 0x02, 0xf2, 0x10, 0xf2, 0xa7, 0x8c, 0xdb,
0x8e, 0xcd, 0xed, 0x1a, 0xac, 0x66, 0xd6, 0x8b, 0xcd, 0x46, 0x2a, 0x31, 0x1a, 0xa8, 0x7e, 0xa4,
0x28, 0x76, 0x7d, 0x1e, 0x9d, 0xd3, 0x3e, 0x03, 0xf2, 0x14, 0x4a, 0x36, 0xe7, 0x0c, 0xad, 0xea,
0x06, 0x7e, 0x5c, 0x2b, 0x0a, 0x86, 0xb7, 0xa6, 0x33, 0x7c, 0xa0, 0x51, 0x49, 0xa6, 0x43, 0x8c,
0xcc, 0x7b, 0x50, 0x1e, 0x92, 0x49, 0xaa, 0x90, 0x79, 0xce, 0xce, 0xa5, 0x63, 0x28, 0x2e, 0xc9,
0x65, 0x58, 0x7a, 0x61, 0x7b, 0x3d, 0x26, 0x7c, 0x50, 0xa2, 0x72, 0x73, 0x77, 0xf1, 0x8e, 0x61,
0x3e, 0x83, 0x4b, 0x63, 0xfc, 0x27, 0x30, 0xf8, 0x81, 0xce, 0xa0, 0xd8, 0xfc, 0x20, 0xe5, 0xd6,
0x3a, 0x3b, 0x4d, 0xd2, 0x56, 0x1e, 0x96, 0x23, 0xa1, 0x90, 0xf5, 0x1b, 0x03, 0xaa, 0xa3, 0xae,
0x26, 0x07, 0xca, 0x49, 0x86, 0x30, 0xcb, 0xc7, 0x73, 0x44, 0x09, 0x02, 0x94, 0x61, 0x04, 0x0b,
0x73, 0x13, 0x0a, 0x7d, 0xd0, 0x34, 0x63, 0x14, 0xb4, 0x2b, 0x5a, 0x9b, 0x90, 0xa1, 0xac, 0x43,
0x2a, 0xb0, 0xe8, 0xaa, 0xb8, 0xa6, 0x8b, 0xae, 0x43, 0x56, 0x21, 0xe3, 0xb0, 0x8e, 0x52, 0xbd,
0x52, 0x0f, 0x4f, 0xea, 0x3b, 0xac, 0xe3, 0xfa, 0x2e, 0xaa, 0x48, 0xf1, 0xc8, 0xfa, 0x9d, 0x81,
0xf9, 0x81, 0xd7, 0x22, 0x9f, 0x0c, 0xe9, 0x31, 0x3d, 0xda, 0xc7, 0x6e, 0xff, 0x34, 0xfd, 0xf6,
0xb7, 0x87, 0x3d, 0x31, 0x25, 0x05, 0x74, 0xed, 0x7e, 0x0c, 0x25, 0xdd, 0x37, 0x64, 0x1f, 0x8a,
0x5a, 0x1c, 0xa9, 0x0b, 0xaf, 0xcd, 0xe6, 0x59, 0xaa, 0x93, 0x5a, 0x7f, 0xc8, 0x40, 0x51, 0x3b,
0x24, 0xf7, 0x21, 0xfb, 0xdc, 0xf5, 0xa5, 0x09, 0x2b, 0xcd, 0x8d, 0xd9, 0x58, 0x3e, 0x74, 0x7d,
0x87, 0x0a, 0x3a, 0xd2, 0xd2, 0xf2, 0x6e, 0x51, 0x5c, 0xeb, 0xf6, 0x6c, 0x3c, 0x2e, 0x4c, 0xbe,
0x9b, 0x73, 0x94, 0x0d, 0x59, 0x34, 0x08, 0x64, 0x43, 0x9b, 0x3f, 0x13, 0x45, 0xa3, 0x40, 0xc5,
0x9a, 0xdc, 0x84, 0x37, 0x5c, 0xff, 0x49, 0xc0, 0x83, 0x56, 0xc4, 0x1c, 0x17, 0x83, 0xef, 0xc9,
0x79, 0xc8, 0x6a, 0x4b, 0x02, 0x65, 0xd2, 0x11, 0x69, 0x41, 0x45, 0x82, 0x8f, 0x7b, 0x27, 0x3f,
0x63, 0x6d, 0x1e, 0xd7, 0x96, 0x85, 0x3e, 0xeb, 0x29, 0x57, 0x38, 0xd0, 0x09, 0xe8, 0x08, 0xfd,
0x6b, 0x65, 0xbb, 0xf5, 0x27, 0x03, 0xca, 0x43, 0xec, 0xc9, 0xa7, 0x43, 0xae, 0xba, 0x31, 0xeb,
0xb5, 0x34, 0x67, 0x7d, 0x06, 0xcb, 0x8e, 0xdb, 0x65, 0x31, 0x17, 0xae, 0x2a, 0x6c, 0x35, 0xbf,
0xfd, 0xee, 0xdd, 0x85, 0x7f, 0x7e, 0xf7, 0xee, 0x86, 0xd6, 0x62, 0x82, 0x90, 0xf9, 0xed, 0xc0,
0xe7, 0xb6, 0xeb, 0xb3, 0x08, 0x3b, 0xe5, 0x47, 0x92, 0xa4, 0xbe, 0x23, 0x7e, 0xa8, 0xe2, 0x80,
0x46, 0xf7, 0xed, 0x53, 0x26, 0xfc, 0x54, 0xa0, 0x62, 0x6d, 0x71, 0x28, 0x53, 0xc6, 0x7b, 0x91,
0x4f, 0xd9, 0xcf, 0x7b, 0x88, 0xf4, 0xbd, 0xa4, 0x90, 0x88, 0x4b, 0x4f, 0x2b, 0xe8, 0x88, 0x48,
0x15, 0x01, 0x59, 0x87, 0x25, 0x16, 0x45, 0x41, 0xa4, 0x92, 0x87, 0xd4, 0x65, 0xcf, 0xae, 0x47,
0x61, 0xbb, 0x7e, 0x2c, 0x7a, 0x36, 0x95, 0x08, 0x56, 0x15, 0x2a, 0x89, 0xd4, 0x38, 0x0c, 0xfc,
0x98, 0x59, 0x2b, 0x68, 0xba, 0xb0, 0xc7, 0x63, 0x75, 0x0f, 0xeb, 0xaf, 0x06, 0x54, 0x12, 0x88,
0xc4, 0x21, 0x5f, 0x40, 0x71, 0x50, 0x1a, 0x92, 0x1a, 0x70, 0x37, 0xd5, 0xa8, 0x3a, 0xbd, 0x56,
0x57, 0x54, 0x49, 0xd0, 0xd9, 0x99, 0x8f, 0xa0, 0x3a, 0x8a, 0x30, 0xc1, 0xfb, 0xef, 0x0d, 0x17,
0x88, 0xd1, 0x7a, 0xa5, 0x45, 0xc3, 0x3f, 0x0c, 0x78, 0x9b, 0x32, 0x31, 0x84, 0x1c, 0x9c, 0xda,
0x5d, 0xb6, 0x1d, 0xf8, 0x1d, 0xb7, 0x9b, 0x98, 0xb9, 0x2a, 0x8a, 0x61, 0xc2, 0x19, 0xeb, 0xe2,
0x3a, 0xe4, 0x5b, 0x9e, 0xcd, 0x3b, 0x41, 0x74, 0xaa, 0x98, 0x97, 0x90, 0x79, 0x02, 0xa3, 0xfd,
0x53, 0xb2, 0x0a, 0x45, 0xc5, 0xf8, 0x28, 0x70, 0x12, 0x77, 0xea, 0x20, 0x52, 0x83, 0xdc, 0x61,
0xd0, 0x7d, 0x84, 0xce, 0x96, 0x19, 0x96, 0x6c, 0x89, 0x05, 0x25, 0x85, 0x18, 0xf5, 0xb3, 0x6b,
0x89, 0x0e, 0xc1, 0xc8, 0x3b, 0x50, 0x38, 0x66, 0x71, 0xec, 0x06, 0xfe, 0xc1, 0x4e, 0x6d, 0x59,
0xd0, 0x0f, 0x00, 0xd6, 0x2f, 0x0c, 0x30, 0x27, 0xe9, 0xa5, 0x9c, 0xf4, 0x19, 0x2c, 0xcb, 0xb0,
0x93, 0xba, 0xfd, 0x6f, 0x01, 0x2b, 0x7f, 0xc9, 0x5b, 0xb0, 0x2c, 0xb9, 0xab, 0x5c, 0x53, 0x3b,
0xeb, 0xcf, 0x4b, 0x50, 0x3a, 0xc6, 0x0b, 0x24, 0xd6, 0xac, 0x03, 0x0c, 0x9c, 0xa0, 0x02, 0x77,
0xd4, 0x35, 0x1a, 0x06, 0x31, 0x21, 0xbf, 0xa7, 0x82, 0x44, 0xf5, 0xa9, 0xfe, 0x9e, 0x7c, 0x0e,
0xc5, 0x64, 0xfd, 0x38, 0xe4, 0xb5, 0x8c, 0x88, 0xb2, 0x3b, 0x29, 0x51, 0xa6, 0xdf, 0xa4, 0xae,
0x91, 0xaa, 0x18, 0xd3, 0x20, 0xe4, 0x06, 0x5c, 0xb2, 0x3d, 0x2f, 0x38, 0x53, 0x89, 0x23, 0x52,
0x40, 0xb8, 0x20, 0x4f, 0xc7, 0x0f, 0xb0, 0x20, 0x6a, 0xc0, 0x07, 0x51, 0x64, 0x9f, 0x63, 0xcc,
0x2c, 0x0b, 0xfc, 0x49, 0x47, 0x58, 0x9b, 0xf6, 0x5c, 0xdf, 0xf6, 0x6a, 0x20, 0x70, 0xe4, 0x06,
0x7d, 0xbe, 0xfb, 0x32, 0x0c, 0x22, 0xce, 0xa2, 0x07, 0x9c, 0x47, 0xb5, 0xa2, 0x30, 0xe6, 0x10,
0x8c, 0xb4, 0xa0, 0xb4, 0x6d, 0xb7, 0x9f, 0xb1, 0x83, 0x53, 0x04, 0xc6, 0xb5, 0x92, 0x50, 0x3b,
0xad, 0x62, 0x09, 0xf4, 0xc7, 0xa1, 0x3e, 0x38, 0xe9, 0x1c, 0x48, 0x1b, 0x2a, 0x89, 0xea, 0x32,
0x0f, 0x6b, 0x65, 0xc1, 0xf3, 0xde, 0xbc, 0xa6, 0x94, 0xd4, 0x52, 0xc4, 0x08, 0x4b, 0x74, 0xe4,
0x2e, 0xa6, 0x9c, 0xcd, 0x59, 0xad, 0x22, 0x74, 0xee, 0xef, 0xcd, 0xfb, 0x50, 0x1d, 0xf5, 0xc6,
0x3c, 0xf3, 0x8a, 0xf9, 0x43, 0x78, 0x63, 0xc2, 0x15, 0x5e, 0xab, 0x26, 0xfc, 0xd1, 0x80, 0x4b,
0x63, 0x76, 0xc3, 0xba, 0x2c, 0x72, 0x51, 0xb2, 0x14, 0x6b, 0x72, 0x04, 0x4b, 0xe8, 0x97, 0x58,
0x75, 0xe8, 0xcd, 0x79, 0x1c, 0x51, 0x17, 0x94, 0xd2, 0x60, 0x92, 0x8b, 0x79, 0x07, 0x60, 0x00,
0x9c, 0x6b, 0x6a, 0xfb, 0x02, 0xca, 0xca, 0x2b, 0x2a, 0xc1, 0xab, 0xb2, 0xd9, 0x2b, 0x62, 0x6c,
0xe6, 0x83, 0x96, 0x91, 0x99, 0xb3, 0x65, 0x58, 0x5f, 0xc1, 0x0a, 0x65, 0xb6, 0xb3, 0xe7, 0x7a,
0xec, 0xe2, 0xca, 0x88, 0xd9, 0xea, 0x7a, 0xac, 0x85, 0x03, 0x43, 0x92, 0xad, 0x6a, 0x4f, 0xee,
0xc2, 0x12, 0xb5, 0xfd, 0x2e, 0x53, 0xa2, 0xdf, 0x4b, 0x11, 0x2d, 0x84, 0x20, 0x2e, 0x95, 0x24,
0xd6, 0x3d, 0x28, 0xf4, 0x61, 0x58, 0x6b, 0x1e, 0x77, 0x3a, 0x31, 0x93, 0x75, 0x2b, 0x43, 0xd5,
0x0e, 0xe1, 0x87, 0xcc, 0xef, 0x2a, 0xd1, 0x19, 0xaa, 0x76, 0xd6, 0x1a, 0x4e, 0xd9, 0xc9, 0xcd,
0x95, 0x69, 0x08, 0x64, 0x77, 0x70, 0xaa, 0x32, 0x44, 0x82, 0x89, 0xb5, 0xe5, 0x60, 0xab, 0xb3,
0x9d, 0x1d, 0x37, 0xba, 0x58, 0xc1, 0x1a, 0xe4, 0x76, 0xdc, 0x48, 0xd3, 0x2f, 0xd9, 0x92, 0x35,
0x6c, 0x82, 0x6d, 0xaf, 0xe7, 0xa0, 0xb6, 0x9c, 0x45, 0xbe, 0xaa, 0xf6, 0x23, 0x50, 0xeb, 0x13,
0x69, 0x47, 0x21, 0x45, 0x5d, 0xe6, 0x06, 0xe4, 0x98, 0xcf, 0x23, 0x97, 0x25, 0x9d, 0x92, 0xd4,
0xe5, 0x03, 0xb4, 0x2e, 0x1e, 0xa0, 0xa2, 0x23, 0xd3, 0x04, 0xc5, 0xda, 0x84, 0x15, 0x04, 0xa4,
0x3b, 0x82, 0x40, 0x56, 0xbb, 0xa4, 0x58, 0x5b, 0x77, 0xa1, 0x3a, 0x20, 0x54, 0xa2, 0xd7, 0x20,
0x8b, 0x23, 0xa3, 0x2a, 0xc4, 0x93, 0xe4, 0x8a, 0x73, 0xeb, 0x1a, 0xac, 0x24, 0xd9, 0x7a, 0xa1,
0x50, 0x8b, 0x40, 0x75, 0x80, 0xa4, 0xa6, 0x85, 0x32, 0x14, 0x5b, 0xae, 0x9f, 0x34, 0x53, 0xeb,
0x95, 0x01, 0xa5, 0x56, 0xe0, 0x0f, 0x9a, 0x50, 0x0b, 0x56, 0x92, 0xd4, 0x7d, 0xd0, 0x3a, 0xd8,
0xb6, 0xc3, 0xc4, 0x06, 0xab, 0xe3, 0xf1, 0xa1, 0x9e, 0xf0, 0x75, 0x89, 0xb8, 0x95, 0xc5, 0x7e,
0x45, 0x47, 0xc9, 0xc9, 0xa7, 0x90, 0x3b, 0x3c, 0xdc, 0x12, 0x9c, 0x16, 0xe7, 0xe2, 0x94, 0x90,
0x91, 0xfb, 0x90, 0x7b, 0x2a, 0xbe, 0x2c, 0xc4, 0xaa, 0xa7, 0x4c, 0x88, 0x55, 0x69, 0x21, 0x89,
0x46, 0x59, 0x3b, 0x88, 0x1c, 0x9a, 0x10, 0x59, 0xff, 0x36, 0xa0, 0xf8, 0xd4, 0x1e, 0x0c, 0x6a,
0x83, 0xc9, 0xf0, 0x35, 0x1a, 0xad, 0x9a, 0x0c, 0x2f, 0xc3, 0x92, 0xc7, 0x5e, 0x30, 0x4f, 0xc5,
0xb8, 0xdc, 0x20, 0x34, 0x7e, 0x16, 0x44, 0x32, 0xad, 0x4b, 0x54, 0x6e, 0x30, 0x21, 0x1c, 0xc6,
0x6d, 0xd7, 0xab, 0x65, 0x57, 0x33, 0xd8, 0x94, 0xe5, 0x0e, 0x3d, 0xd7, 0x8b, 0x3c, 0x35, 0xae,
0xe3, 0x92, 0x58, 0x90, 0x75, 0xfd, 0x4e, 0x20, 0x1a, 0x96, 0x2a, 0x8b, 0xc7, 0x41, 0x2f, 0x6a,
0xb3, 0x03, 0xbf, 0x13, 0x50, 0x71, 0x46, 0xae, 0xc2, 0x72, 0x84, 0xf9, 0x17, 0xd7, 0x72, 0xc2,
0x28, 0x05, 0xc4, 0x92, 0x59, 0xaa, 0x0e, 0xac, 0x0a, 0x94, 0xa4, 0xde, 0xca, 0xf9, 0xbf, 0x5e,
0x84, 0x37, 0x1e, 0xb1, 0xb3, 0xed, 0x44, 0xaf, 0xc4, 0x20, 0xab, 0x50, 0xec, 0xc3, 0x0e, 0x76,
0x54, 0x08, 0xe9, 0x20, 0x14, 0x76, 0x14, 0xf4, 0x7c, 0x9e, 0xf8, 0x50, 0x08, 0x13, 0x10, 0xaa,
0x0e, 0xc8, 0xfb, 0x90, 0x7b, 0xc4, 0xf8, 0x59, 0x10, 0x3d, 0x17, 0x5a, 0x57, 0x9a, 0x45, 0xc4,
0x79, 0xc4, 0x38, 0xce, 0x55, 0x34, 0x39, 0xc3, 0x61, 0x2d, 0x4c, 0x86, 0xb5, 0xec, 0xa4, 0x61,
0x2d, 0x39, 0x25, 0x9b, 0x50, 0x6c, 0x07, 0x7e, 0xcc, 0x23, 0xdb, 0x45, 0xc1, 0x4b, 0x02, 0xf9,
0x4d, 0x44, 0x96, 0x8e, 0xdd, 0x1e, 0x1c, 0x52, 0x1d, 0x93, 0x6c, 0x00, 0xb0, 0x97, 0x3c, 0xb2,
0xf7, 0x83, 0xb8, 0xff, 0xb0, 0x01, 0xa4, 0x43, 0xc0, 0x41, 0x8b, 0x6a, 0xa7, 0xd6, 0x5b, 0x70,
0x79, 0xd8, 0x22, 0xca, 0x54, 0xf7, 0xe0, 0xff, 0x28, 0xf3, 0x98, 0x1d, 0xb3, 0xf9, 0xad, 0x65,
0x99, 0x50, 0x1b, 0x27, 0x56, 0x8c, 0xff, 0x93, 0x81, 0xe2, 0xee, 0x4b, 0xd6, 0x3e, 0x62, 0x71,
0x6c, 0x77, 0xc5, 0xc8, 0xd8, 0x8a, 0x82, 0x36, 0x8b, 0xe3, 0x3e, 0xaf, 0x01, 0x80, 0x7c, 0x1f,
0xb2, 0x07, 0xbe, 0xcb, 0x55, 0x7f, 0x5c, 0x4b, 0x9d, 0xd8, 0x5d, 0xae, 0x78, 0xee, 0x2f, 0x50,
0x41, 0x45, 0xee, 0x42, 0x16, 0xab, 0xcb, 0x2c, 0x15, 0xde, 0xd1, 0x68, 0x91, 0x86, 0x6c, 0x89,
0x2f, 0x6b, 0xee, 0x97, 0x4c, 0x79, 0x69, 0x3d, 0xbd, 0x35, 0xb9, 0x5f, 0xb2, 0x01, 0x07, 0x45,
0x49, 0x76, 0x21, 0x77, 0xcc, 0xed, 0x88, 0x33, 0x47, 0x79, 0xef, 0x7a, 0xda, 0x04, 0x23, 0x31,
0x07, 0x5c, 0x12, 0x5a, 0x34, 0xc2, 0xee, 0x4b, 0x97, 0xab, 0x6c, 0x48, 0x33, 0x02, 0xa2, 0x69,
0x8a, 0xe0, 0x16, 0xa9, 0x77, 0x02, 0x9f, 0xd5, 0x72, 0x53, 0xa9, 0x11, 0x4d, 0xa3, 0xc6, 0x2d,
0x9a, 0xe1, 0xd8, 0xed, 0xe2, 0x60, 0x98, 0x9f, 0x6a, 0x06, 0x89, 0xa8, 0x99, 0x41, 0x02, 0xb6,
0x72, 0xb0, 0x24, 0xc6, 0x20, 0xeb, 0xb7, 0x06, 0x14, 0x35, 0x3f, 0xcd, 0x90, 0x77, 0xef, 0x40,
0x16, 0x5f, 0xd5, 0xca, 0xff, 0x79, 0x91, 0x75, 0x8c, 0xdb, 0x54, 0x40, 0xb1, 0x70, 0xec, 0x39,
0xb2, 0x28, 0x96, 0x29, 0x2e, 0x11, 0xf2, 0x84, 0x9f, 0x0b, 0x97, 0xe5, 0x29, 0x2e, 0xc9, 0x0d,
0xc8, 0x1f, 0xb3, 0x76, 0x2f, 0x72, 0xf9, 0xb9, 0x70, 0x42, 0xa5, 0x59, 0x15, 0xe5, 0x44, 0xc1,
0x44, 0x72, 0xf6, 0x31, 0xac, 0x87, 0x18, 0x9c, 0x83, 0x0b, 0x12, 0xc8, 0x6e, 0xe3, 0x43, 0x09,
0x6f, 0x56, 0xa6, 0x62, 0x8d, 0x6f, 0xd5, 0xdd, 0x69, 0x6f, 0xd5, 0xdd, 0xe4, 0xad, 0x3a, 0xec,
0x54, 0xec, 0x3e, 0x9a, 0x91, 0xad, 0x07, 0x50, 0xe8, 0x07, 0x1e, 0xa9, 0xc0, 0xe2, 0x9e, 0xa3,
0x24, 0x2d, 0xee, 0x39, 0xa8, 0xca, 0xee, 0xe3, 0x3d, 0x21, 0x25, 0x4f, 0x71, 0xd9, 0x1f, 0x12,
0x32, 0xda, 0x90, 0xb0, 0x89, 0xaf, 0x70, 0x2d, 0xfa, 0x10, 0x89, 0x06, 0x67, 0x71, 0x72, 0x65,
0x5c, 0x4b, 0x35, 0xbc, 0x58, 0xf0, 0x12, 0x6a, 0x78, 0xb1, 0x75, 0x0d, 0xca, 0x43, 0xfe, 0x42,
0x24, 0xf1, 0xec, 0x53, 0xb3, 0x24, 0xae, 0x37, 0x18, 0xac, 0x8c, 0x7c, 0x09, 0x22, 0xef, 0xc3,
0xb2, 0xfc, 0xe2, 0x50, 0x5d, 0x30, 0xdf, 0xfe, 0xfa, 0x9b, 0xd5, 0x37, 0x47, 0x10, 0xe4, 0x21,
0xa2, 0x6d, 0xf5, 0x7c, 0xc7, 0x63, 0x55, 0x63, 0x22, 0x9a, 0x3c, 0x34, 0xb3, 0xbf, 0xfa, 0xfd,
0x95, 0x85, 0x0d, 0x1b, 0x2e, 0x8d, 0x7d, 0xc5, 0x20, 0xd7, 0x20, 0x7b, 0xcc, 0xbc, 0x4e, 0x22,
0x66, 0x0c, 0x01, 0x0f, 0xc9, 0x55, 0xc8, 0x50, 0xfb, 0xac, 0x6a, 0x98, 0xb5, 0xaf, 0xbf, 0x59,
0xbd, 0x3c, 0xfe, 0x29, 0xc4, 0x3e, 0x93, 0x22, 0x9a, 0x7f, 0x01, 0x28, 0x1c, 0x1e, 0x6e, 0x6d,
0x45, 0xae, 0xd3, 0x65, 0xe4, 0x97, 0x06, 0x90, 0xf1, 0x97, 0x28, 0xb9, 0x9d, 0x9e, 0xe3, 0x93,
0x1f, 0xe4, 0xe6, 0xc7, 0x73, 0x52, 0xa9, 0x49, 0xe3, 0x73, 0x58, 0x12, 0xe3, 0x31, 0xf9, 0x60,
0xc6, 0x67, 0x8d, 0xb9, 0x3e, 0x1d, 0x51, 0xf1, 0x6e, 0x43, 0x3e, 0x19, 0x31, 0xc9, 0x46, 0xea,
0xf5, 0x86, 0x26, 0x68, 0xf3, 0xc3, 0x99, 0x70, 0x95, 0x90, 0x9f, 0x42, 0x4e, 0x4d, 0x8e, 0xe4,
0xfa, 0x14, 0xba, 0xc1, 0x0c, 0x6b, 0x6e, 0xcc, 0x82, 0x3a, 0x50, 0x23, 0x99, 0x10, 0x53, 0xd5,
0x18, 0x99, 0x3f, 0x53, 0xd5, 0x18, 0x1b, 0x39, 0xdb, 0x83, 0x87, 0x60, 0xaa, 0x90, 0x91, 0x79,
0x33, 0x55, 0xc8, 0xe8, 0xd8, 0x49, 0x9e, 0x42, 0x16, 0xc7, 0x4e, 0x92, 0x56, 0x7e, 0xb5, 0xb9,
0xd4, 0x4c, 0x8b, 0x89, 0xa1, 0x79, 0xf5, 0x27, 0xd8, 0xa6, 0xc4, 0x9b, 0x3f, 0xbd, 0x41, 0x69,
0x1f, 0xea, 0xcc, 0xeb, 0x33, 0x60, 0x0e, 0xd8, 0xab, 0xf7, 0xf2, 0xfa, 0x0c, 0x5f, 0xcb, 0xa6,
0xb3, 0x1f, 0xf9, 0x2e, 0x17, 0x40, 0x49, 0x9f, 0x3e, 0x48, 0x3d, 0x85, 0x74, 0xc2, 0xe0, 0x66,
0x36, 0x66, 0xc6, 0x57, 0x02, 0xbf, 0xc2, 0xb7, 0xd7, 0xf0, 0x64, 0x42, 0x9a, 0xa9, 0xe6, 0x98,
0x38, 0x03, 0x99, 0xb7, 0xe6, 0xa2, 0x51, 0xc2, 0x6d, 0x39, 0xf9, 0xa8, 0xe9, 0x86, 0xa4, 0x37,
0xf2, 0xfe, 0x84, 0x64, 0xce, 0x88, 0xb7, 0x6e, 0xdc, 0x34, 0x30, 0xce, 0x70, 0xe2, 0x4d, 0xe5,
0xad, 0x3d, 0x05, 0x52, 0xe3, 0x4c, 0x1f, 0x9d, 0xb7, 0x4a, 0xdf, 0xbe, 0xba, 0x62, 0xfc, 0xfd,
0xd5, 0x15, 0xe3, 0x5f, 0xaf, 0xae, 0x18, 0x27, 0xcb, 0xe2, 0xef, 0xc7, 0x5b, 0xff, 0x0d, 0x00,
0x00, 0xff, 0xff, 0x76, 0x21, 0x31, 0x33, 0xd0, 0x1d, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -3695,7 +3704,7 @@ func (m *Attestation) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i = encodeVarintGateway(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x2a
dAtA[i] = 0x32
}
}
if len(m.InTotoPredicateType) > 0 {
@ -3703,21 +3712,47 @@ func (m *Attestation) MarshalToSizedBuffer(dAtA []byte) (int, error) {
copy(dAtA[i:], m.InTotoPredicateType)
i = encodeVarintGateway(dAtA, i, uint64(len(m.InTotoPredicateType)))
i--
dAtA[i] = 0x22
dAtA[i] = 0x2a
}
if len(m.Path) > 0 {
i -= len(m.Path)
copy(dAtA[i:], m.Path)
i = encodeVarintGateway(dAtA, i, uint64(len(m.Path)))
i--
dAtA[i] = 0x22
}
if m.Ref != nil {
{
size, err := m.Ref.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintGateway(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x1a
}
if len(m.Ref) > 0 {
i -= len(m.Ref)
copy(dAtA[i:], m.Ref)
i = encodeVarintGateway(dAtA, i, uint64(len(m.Ref)))
i--
dAtA[i] = 0x12
if len(m.Metadata) > 0 {
for k := range m.Metadata {
v := m.Metadata[k]
baseI := i
if len(v) > 0 {
i -= len(v)
copy(dAtA[i:], v)
i = encodeVarintGateway(dAtA, i, uint64(len(v)))
i--
dAtA[i] = 0x12
}
i -= len(k)
copy(dAtA[i:], k)
i = encodeVarintGateway(dAtA, i, uint64(len(k)))
i--
dAtA[i] = 0xa
i = encodeVarintGateway(dAtA, i, uint64(baseI-i))
i--
dAtA[i] = 0x12
}
}
if m.Kind != 0 {
i = encodeVarintGateway(dAtA, i, uint64(m.Kind))
@ -5271,20 +5306,20 @@ func (m *InitMessage) MarshalToSizedBuffer(dAtA []byte) (int, error) {
dAtA[i] = 0x20
}
if len(m.Fds) > 0 {
dAtA27 := make([]byte, len(m.Fds)*10)
var j26 int
dAtA28 := make([]byte, len(m.Fds)*10)
var j27 int
for _, num := range m.Fds {
for num >= 1<<7 {
dAtA27[j26] = uint8(uint64(num)&0x7f | 0x80)
dAtA28[j27] = uint8(uint64(num)&0x7f | 0x80)
num >>= 7
j26++
j27++
}
dAtA27[j26] = uint8(num)
j26++
dAtA28[j27] = uint8(num)
j27++
}
i -= j26
copy(dAtA[i:], dAtA27[:j26])
i = encodeVarintGateway(dAtA, i, uint64(j26))
i -= j27
copy(dAtA[i:], dAtA28[:j27])
i = encodeVarintGateway(dAtA, i, uint64(j27))
i--
dAtA[i] = 0x1a
}
@ -5717,8 +5752,20 @@ func (m *Attestation) Size() (n int) {
if m.Kind != 0 {
n += 1 + sovGateway(uint64(m.Kind))
}
l = len(m.Ref)
if l > 0 {
if len(m.Metadata) > 0 {
for k, v := range m.Metadata {
_ = k
_ = v
l = 0
if len(v) > 0 {
l = 1 + len(v) + sovGateway(uint64(len(v)))
}
mapEntrySize := 1 + len(k) + sovGateway(uint64(len(k))) + l
n += mapEntrySize + 1 + sovGateway(uint64(mapEntrySize))
}
}
if m.Ref != nil {
l = m.Ref.Size()
n += 1 + l + sovGateway(uint64(l))
}
l = len(m.Path)
@ -7635,9 +7682,9 @@ func (m *Attestation) Unmarshal(dAtA []byte) error {
}
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Ref", wireType)
return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType)
}
var stringLen uint64
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGateway
@ -7647,25 +7694,157 @@ func (m *Attestation) Unmarshal(dAtA []byte) error {
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
if msglen < 0 {
return ErrInvalidLengthGateway
}
postIndex := iNdEx + intStringLen
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthGateway
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Ref = string(dAtA[iNdEx:postIndex])
if m.Metadata == nil {
m.Metadata = make(map[string][]byte)
}
var mapkey string
mapvalue := []byte{}
for iNdEx < postIndex {
entryPreIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGateway
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
if fieldNum == 1 {
var stringLenmapkey uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGateway
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLenmapkey |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLenmapkey := int(stringLenmapkey)
if intStringLenmapkey < 0 {
return ErrInvalidLengthGateway
}
postStringIndexmapkey := iNdEx + intStringLenmapkey
if postStringIndexmapkey < 0 {
return ErrInvalidLengthGateway
}
if postStringIndexmapkey > l {
return io.ErrUnexpectedEOF
}
mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
iNdEx = postStringIndexmapkey
} else if fieldNum == 2 {
var mapbyteLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGateway
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
mapbyteLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intMapbyteLen := int(mapbyteLen)
if intMapbyteLen < 0 {
return ErrInvalidLengthGateway
}
postbytesIndex := iNdEx + intMapbyteLen
if postbytesIndex < 0 {
return ErrInvalidLengthGateway
}
if postbytesIndex > l {
return io.ErrUnexpectedEOF
}
mapvalue = make([]byte, mapbyteLen)
copy(mapvalue, dAtA[iNdEx:postbytesIndex])
iNdEx = postbytesIndex
} else {
iNdEx = entryPreIndex
skippy, err := skipGateway(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthGateway
}
if (iNdEx + skippy) > postIndex {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
m.Metadata[mapkey] = mapvalue
iNdEx = postIndex
case 3:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Ref", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGateway
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthGateway
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthGateway
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.Ref == nil {
m.Ref = &Ref{}
}
if err := m.Ref.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
case 4:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Path", wireType)
}
@ -7697,7 +7876,7 @@ func (m *Attestation) Unmarshal(dAtA []byte) error {
}
m.Path = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 4:
case 5:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field InTotoPredicateType", wireType)
}
@ -7729,7 +7908,7 @@ func (m *Attestation) Unmarshal(dAtA []byte) error {
}
m.InTotoPredicateType = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 5:
case 6:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field InTotoSubjects", wireType)
}

View File

@ -72,11 +72,12 @@ message Attestations {
message Attestation {
AttestationKind kind = 1;
map<string, bytes> metadata = 2;
string ref = 2;
string path = 3;
string inTotoPredicateType = 4;
repeated InTotoSubject inTotoSubjects = 5;
Ref ref = 3;
string path = 4;
string inTotoPredicateType = 5;
repeated InTotoSubject inTotoSubjects = 6;
}
enum AttestationKind {

View File

@ -1,10 +1,10 @@
package sshforward
import (
io "io"
"context"
"io"
"github.com/pkg/errors"
context "golang.org/x/net/context"
"golang.org/x/sync/errgroup"
)

View File

@ -1,13 +1,13 @@
package sshforward
import (
"context"
"net"
"os"
"path/filepath"
"github.com/moby/buildkit/session"
"github.com/pkg/errors"
context "golang.org/x/net/context"
"golang.org/x/sync/errgroup"
"google.golang.org/grpc/metadata"
)

View File

@ -49,6 +49,7 @@ const (
CapExecMetaSecurityDeviceWhitelistV1 apicaps.CapID = "exec.meta.security.devices.v1"
CapExecMetaSetsDefaultPath apicaps.CapID = "exec.meta.setsdefaultpath"
CapExecMetaUlimit apicaps.CapID = "exec.meta.ulimit"
CapExecMetaRemoveMountStubsRecursive apicaps.CapID = "exec.meta.removemountstubs.recursive"
CapExecMountBind apicaps.CapID = "exec.mount.bind"
CapExecMountBindReadWriteNoOuput apicaps.CapID = "exec.mount.bind.readwrite-nooutput"
CapExecMountCache apicaps.CapID = "exec.mount.cache"

View File

@ -496,15 +496,16 @@ func (m *ExecOp) GetSecretenv() []*SecretEnv {
// Meta is unrelated to LLB metadata.
// FIXME: rename (ExecContext? ExecArgs?)
type Meta struct {
Args []string `protobuf:"bytes,1,rep,name=args,proto3" json:"args,omitempty"`
Env []string `protobuf:"bytes,2,rep,name=env,proto3" json:"env,omitempty"`
Cwd string `protobuf:"bytes,3,opt,name=cwd,proto3" json:"cwd,omitempty"`
User string `protobuf:"bytes,4,opt,name=user,proto3" json:"user,omitempty"`
ProxyEnv *ProxyEnv `protobuf:"bytes,5,opt,name=proxy_env,json=proxyEnv,proto3" json:"proxy_env,omitempty"`
ExtraHosts []*HostIP `protobuf:"bytes,6,rep,name=extraHosts,proto3" json:"extraHosts,omitempty"`
Hostname string `protobuf:"bytes,7,opt,name=hostname,proto3" json:"hostname,omitempty"`
Ulimit []*Ulimit `protobuf:"bytes,9,rep,name=ulimit,proto3" json:"ulimit,omitempty"`
CgroupParent string `protobuf:"bytes,10,opt,name=cgroupParent,proto3" json:"cgroupParent,omitempty"`
Args []string `protobuf:"bytes,1,rep,name=args,proto3" json:"args,omitempty"`
Env []string `protobuf:"bytes,2,rep,name=env,proto3" json:"env,omitempty"`
Cwd string `protobuf:"bytes,3,opt,name=cwd,proto3" json:"cwd,omitempty"`
User string `protobuf:"bytes,4,opt,name=user,proto3" json:"user,omitempty"`
ProxyEnv *ProxyEnv `protobuf:"bytes,5,opt,name=proxy_env,json=proxyEnv,proto3" json:"proxy_env,omitempty"`
ExtraHosts []*HostIP `protobuf:"bytes,6,rep,name=extraHosts,proto3" json:"extraHosts,omitempty"`
Hostname string `protobuf:"bytes,7,opt,name=hostname,proto3" json:"hostname,omitempty"`
Ulimit []*Ulimit `protobuf:"bytes,9,rep,name=ulimit,proto3" json:"ulimit,omitempty"`
CgroupParent string `protobuf:"bytes,10,opt,name=cgroupParent,proto3" json:"cgroupParent,omitempty"`
RemoveMountStubsRecursive bool `protobuf:"varint,11,opt,name=removeMountStubsRecursive,proto3" json:"removeMountStubsRecursive,omitempty"`
}
func (m *Meta) Reset() { *m = Meta{} }
@ -599,6 +600,13 @@ func (m *Meta) GetCgroupParent() string {
return ""
}
func (m *Meta) GetRemoveMountStubsRecursive() bool {
if m != nil {
return m.RemoveMountStubsRecursive
}
return false
}
type HostIP struct {
Host string `protobuf:"bytes,1,opt,name=Host,proto3" json:"Host,omitempty"`
IP string `protobuf:"bytes,2,opt,name=IP,proto3" json:"IP,omitempty"`
@ -2834,166 +2842,168 @@ func init() {
func init() { proto.RegisterFile("ops.proto", fileDescriptor_8de16154b2733812) }
var fileDescriptor_8de16154b2733812 = []byte{
// 2535 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0x4f, 0x6f, 0x5b, 0xc7,
0x11, 0x17, 0xff, 0x93, 0x43, 0x89, 0x66, 0xd6, 0x4e, 0xc2, 0xa8, 0xae, 0xac, 0xbc, 0xa4, 0x81,
0x2c, 0xdb, 0x12, 0xaa, 0x00, 0x71, 0x60, 0x14, 0x45, 0x25, 0x91, 0x8e, 0x18, 0xc7, 0xa2, 0xb0,
0xb4, 0x9d, 0x1e, 0x0a, 0x18, 0x4f, 0x8f, 0x4b, 0xe9, 0x41, 0x8f, 0x6f, 0x1f, 0xf6, 0x2d, 0x23,
0xb1, 0x87, 0x1e, 0x7a, 0x2f, 0x10, 0xa0, 0x40, 0xd1, 0x4b, 0xd1, 0x2f, 0xd1, 0x63, 0x7b, 0x0f,
0xd0, 0x4b, 0x0e, 0x3d, 0x04, 0x3d, 0xa4, 0x85, 0x73, 0xe9, 0x87, 0x68, 0x81, 0x62, 0x66, 0xf7,
0xfd, 0x21, 0xa5, 0xc0, 0x71, 0x5b, 0xf4, 0xc4, 0x79, 0x33, 0xbf, 0x9d, 0x99, 0xdd, 0x9d, 0xd9,
0x99, 0x5d, 0x42, 0x43, 0x46, 0xf1, 0x56, 0xa4, 0xa4, 0x96, 0xac, 0x18, 0x1d, 0xaf, 0xde, 0x3b,
0xf1, 0xf5, 0xe9, 0xf4, 0x78, 0xcb, 0x93, 0x93, 0xed, 0x13, 0x79, 0x22, 0xb7, 0x49, 0x74, 0x3c,
0x1d, 0xd3, 0x17, 0x7d, 0x10, 0x65, 0x86, 0x38, 0xff, 0x28, 0x42, 0x71, 0x10, 0xb1, 0xb7, 0xa1,
0xea, 0x87, 0xd1, 0x54, 0xc7, 0x9d, 0xc2, 0x7a, 0x69, 0xa3, 0xb9, 0xd3, 0xd8, 0x8a, 0x8e, 0xb7,
0xfa, 0xc8, 0xe1, 0x56, 0xc0, 0xd6, 0xa1, 0x2c, 0x2e, 0x84, 0xd7, 0x29, 0xae, 0x17, 0x36, 0x9a,
0x3b, 0x80, 0x80, 0xde, 0x85, 0xf0, 0x06, 0xd1, 0xc1, 0x12, 0x27, 0x09, 0x7b, 0x0f, 0xaa, 0xb1,
0x9c, 0x2a, 0x4f, 0x74, 0x4a, 0x84, 0x59, 0x46, 0xcc, 0x90, 0x38, 0x84, 0xb2, 0x52, 0xd4, 0x34,
0xf6, 0x03, 0xd1, 0x29, 0x67, 0x9a, 0x1e, 0xfa, 0x81, 0xc1, 0x90, 0x84, 0xbd, 0x03, 0x95, 0xe3,
0xa9, 0x1f, 0x8c, 0x3a, 0x15, 0x82, 0x34, 0x11, 0xb2, 0x87, 0x0c, 0xc2, 0x18, 0x19, 0x82, 0x26,
0x42, 0x9d, 0x88, 0x4e, 0x35, 0x03, 0x3d, 0x46, 0x86, 0x01, 0x91, 0x0c, 0x6d, 0x8d, 0xfc, 0xf1,
0xb8, 0x53, 0xcb, 0x6c, 0x75, 0xfd, 0xf1, 0xd8, 0xd8, 0x42, 0x09, 0xdb, 0x80, 0x7a, 0x14, 0xb8,
0x7a, 0x2c, 0xd5, 0xa4, 0x03, 0x99, 0xdf, 0x47, 0x96, 0xc7, 0x53, 0x29, 0xbb, 0x0f, 0x4d, 0x4f,
0x86, 0xb1, 0x56, 0xae, 0x1f, 0xea, 0xb8, 0xd3, 0x24, 0xf0, 0xeb, 0x08, 0xfe, 0x54, 0xaa, 0x33,
0xa1, 0xf6, 0x33, 0x21, 0xcf, 0x23, 0xf7, 0xca, 0x50, 0x94, 0x91, 0xf3, 0x9b, 0x02, 0xd4, 0x13,
0xad, 0xcc, 0x81, 0xe5, 0x5d, 0xe5, 0x9d, 0xfa, 0x5a, 0x78, 0x7a, 0xaa, 0x44, 0xa7, 0xb0, 0x5e,
0xd8, 0x68, 0xf0, 0x39, 0x1e, 0x6b, 0x41, 0x71, 0x30, 0xa4, 0xf5, 0x6e, 0xf0, 0xe2, 0x60, 0xc8,
0x3a, 0x50, 0x7b, 0xe6, 0x2a, 0xdf, 0x0d, 0x35, 0x2d, 0x70, 0x83, 0x27, 0x9f, 0xec, 0x26, 0x34,
0x06, 0xc3, 0x67, 0x42, 0xc5, 0xbe, 0x0c, 0x69, 0x59, 0x1b, 0x3c, 0x63, 0xb0, 0x35, 0x80, 0xc1,
0xf0, 0xa1, 0x70, 0x51, 0x69, 0xdc, 0xa9, 0xac, 0x97, 0x36, 0x1a, 0x3c, 0xc7, 0x71, 0x7e, 0x01,
0x15, 0xda, 0x6a, 0xf6, 0x31, 0x54, 0x47, 0xfe, 0x89, 0x88, 0xb5, 0x71, 0x67, 0x6f, 0xe7, 0x8b,
0xaf, 0x6f, 0x2d, 0xfd, 0xf5, 0xeb, 0x5b, 0x9b, 0xb9, 0x98, 0x92, 0x91, 0x08, 0x3d, 0x19, 0x6a,
0xd7, 0x0f, 0x85, 0x8a, 0xb7, 0x4f, 0xe4, 0x3d, 0x33, 0x64, 0xab, 0x4b, 0x3f, 0xdc, 0x6a, 0x60,
0xb7, 0xa1, 0xe2, 0x87, 0x23, 0x71, 0x41, 0xfe, 0x97, 0xf6, 0xae, 0x5b, 0x55, 0xcd, 0xc1, 0x54,
0x47, 0x53, 0xdd, 0x47, 0x11, 0x37, 0x08, 0xe7, 0xcf, 0x05, 0xa8, 0x9a, 0x50, 0x62, 0x37, 0xa1,
0x3c, 0x11, 0xda, 0x25, 0xfb, 0xcd, 0x9d, 0xba, 0xd9, 0x52, 0xed, 0x72, 0xe2, 0x62, 0x94, 0x4e,
0xe4, 0x14, 0xd7, 0xbe, 0x98, 0x45, 0xe9, 0x63, 0xe4, 0x70, 0x2b, 0x60, 0x3f, 0x80, 0x5a, 0x28,
0xf4, 0xb9, 0x54, 0x67, 0xb4, 0x46, 0x2d, 0x13, 0x16, 0x87, 0x42, 0x3f, 0x96, 0x23, 0xc1, 0x13,
0x19, 0xbb, 0x0b, 0xf5, 0x58, 0x78, 0x53, 0xe5, 0xeb, 0x19, 0xad, 0x57, 0x6b, 0xa7, 0x4d, 0xc1,
0x6a, 0x79, 0x04, 0x4e, 0x11, 0xec, 0x0e, 0x34, 0x62, 0xe1, 0x29, 0xa1, 0x45, 0xf8, 0x19, 0xad,
0x5f, 0x73, 0x67, 0xc5, 0xc2, 0x95, 0xd0, 0xbd, 0xf0, 0x33, 0x9e, 0xc9, 0x9d, 0x5f, 0x15, 0xa1,
0x8c, 0x3e, 0x33, 0x06, 0x65, 0x57, 0x9d, 0x98, 0x8c, 0x6a, 0x70, 0xa2, 0x59, 0x1b, 0x4a, 0xa8,
0xa3, 0x48, 0x2c, 0x24, 0x91, 0xe3, 0x9d, 0x8f, 0xec, 0x86, 0x22, 0x89, 0xe3, 0xa6, 0xb1, 0x50,
0x76, 0x1f, 0x89, 0x66, 0xb7, 0xa1, 0x11, 0x29, 0x79, 0x31, 0x7b, 0x6e, 0x3c, 0xc8, 0xa2, 0x14,
0x99, 0xe8, 0x40, 0x3d, 0xb2, 0x14, 0xdb, 0x04, 0x10, 0x17, 0x5a, 0xb9, 0x07, 0x32, 0xd6, 0x71,
0xa7, 0x4a, 0xde, 0x52, 0xdc, 0x23, 0xa3, 0x7f, 0xc4, 0x73, 0x52, 0xb6, 0x0a, 0xf5, 0x53, 0x19,
0xeb, 0xd0, 0x9d, 0x08, 0xca, 0x90, 0x06, 0x4f, 0xbf, 0x99, 0x03, 0xd5, 0x69, 0xe0, 0x4f, 0x7c,
0xdd, 0x69, 0x64, 0x3a, 0x9e, 0x12, 0x87, 0x5b, 0x09, 0x46, 0xb1, 0x77, 0xa2, 0xe4, 0x34, 0x3a,
0x72, 0x95, 0x08, 0x35, 0xe5, 0x4f, 0x83, 0xcf, 0xf1, 0x9c, 0xbb, 0x50, 0x35, 0x96, 0x71, 0x62,
0x48, 0xd9, 0x58, 0x27, 0x1a, 0x63, 0xbc, 0x7f, 0x94, 0xc4, 0x78, 0xff, 0xc8, 0xe9, 0x42, 0xd5,
0xd8, 0x40, 0xf4, 0x21, 0xfa, 0x65, 0xd1, 0x48, 0x23, 0x6f, 0x28, 0xc7, 0xda, 0xc4, 0x14, 0x27,
0x9a, 0xb4, 0xba, 0xca, 0xac, 0x60, 0x89, 0x13, 0xed, 0x3c, 0x82, 0x46, 0xba, 0x37, 0x64, 0xa2,
0x6b, 0xd5, 0x14, 0xfb, 0x5d, 0x1c, 0x40, 0x13, 0x36, 0x46, 0x89, 0xc6, 0x85, 0x90, 0x91, 0xf6,
0x65, 0xe8, 0x06, 0xa4, 0xa8, 0xce, 0xd3, 0x6f, 0xe7, 0xb7, 0x25, 0xa8, 0x50, 0x90, 0xb1, 0x0d,
0x8c, 0xe9, 0x68, 0x6a, 0x66, 0x50, 0xda, 0x63, 0x36, 0xa6, 0x81, 0xb2, 0x27, 0x0d, 0x69, 0xcc,
0xa4, 0x55, 0x8c, 0xaf, 0x40, 0x78, 0x5a, 0x2a, 0x6b, 0x27, 0xfd, 0x46, 0xfb, 0x23, 0xcc, 0x31,
0xb3, 0xe5, 0x44, 0xb3, 0x3b, 0x50, 0x95, 0x94, 0x18, 0xb4, 0xeb, 0xdf, 0x92, 0x2e, 0x16, 0x82,
0xca, 0x95, 0x70, 0x47, 0x32, 0x0c, 0x66, 0x14, 0x0b, 0x75, 0x9e, 0x7e, 0x63, 0xa8, 0x52, 0x26,
0x3c, 0x99, 0x45, 0xe6, 0x60, 0x6c, 0x99, 0x50, 0x7d, 0x9c, 0x30, 0x79, 0x26, 0xc7, 0xa3, 0xef,
0xc9, 0x24, 0x1a, 0xc7, 0x83, 0x48, 0x77, 0xae, 0x67, 0x41, 0x95, 0xf0, 0x78, 0x2a, 0x45, 0xa4,
0xe7, 0x7a, 0xa7, 0x02, 0x91, 0x37, 0x32, 0xe4, 0xbe, 0xe5, 0xf1, 0x54, 0x9a, 0xe5, 0x0a, 0x42,
0x5f, 0x27, 0x68, 0x2e, 0x57, 0x10, 0x9b, 0xc9, 0x31, 0xc6, 0x86, 0xc3, 0x03, 0x44, 0xbe, 0x91,
0x9d, 0xcf, 0x86, 0xc3, 0xad, 0xc4, 0xcc, 0x36, 0x9e, 0x06, 0xba, 0xdf, 0xed, 0xbc, 0x69, 0x96,
0x32, 0xf9, 0x76, 0xd6, 0xb2, 0x09, 0xe0, 0xb2, 0xc6, 0xfe, 0xcf, 0x4d, 0xbc, 0x94, 0x38, 0xd1,
0x4e, 0x1f, 0xea, 0x89, 0x8b, 0x97, 0xc2, 0xe0, 0x1e, 0xd4, 0xe2, 0x53, 0x57, 0xf9, 0xe1, 0x09,
0xed, 0x50, 0x6b, 0xe7, 0x7a, 0x3a, 0xa3, 0xa1, 0xe1, 0xa3, 0x17, 0x09, 0xc6, 0x91, 0x49, 0x48,
0x5d, 0xa5, 0xab, 0x0d, 0xa5, 0xa9, 0x3f, 0x22, 0x3d, 0x2b, 0x1c, 0x49, 0xe4, 0x9c, 0xf8, 0x26,
0x28, 0x57, 0x38, 0x92, 0xe8, 0xdf, 0x44, 0x8e, 0x4c, 0xd5, 0x5b, 0xe1, 0x44, 0xcf, 0x85, 0x5d,
0x65, 0x21, 0xec, 0x82, 0x64, 0x6d, 0xfe, 0x2f, 0xd6, 0x7e, 0x5d, 0x80, 0x7a, 0x52, 0xaa, 0xb1,
0x60, 0xf8, 0x23, 0x11, 0x6a, 0x7f, 0xec, 0x0b, 0x65, 0x0d, 0xe7, 0x38, 0xec, 0x1e, 0x54, 0x5c,
0xad, 0x55, 0x72, 0x0c, 0xbf, 0x99, 0xaf, 0xf3, 0x5b, 0xbb, 0x28, 0xe9, 0x85, 0x5a, 0xcd, 0xb8,
0x41, 0xad, 0x7e, 0x08, 0x90, 0x31, 0xd1, 0xd7, 0x33, 0x31, 0xb3, 0x5a, 0x91, 0x64, 0x37, 0xa0,
0xf2, 0x99, 0x1b, 0x4c, 0x93, 0x8c, 0x34, 0x1f, 0x0f, 0x8a, 0x1f, 0x16, 0x9c, 0x3f, 0x15, 0xa1,
0x66, 0xeb, 0x3e, 0xbb, 0x0b, 0x35, 0xaa, 0xfb, 0xd6, 0xa3, 0xab, 0xd3, 0x2f, 0x81, 0xb0, 0xed,
0xb4, 0xa1, 0xc9, 0xf9, 0x68, 0x55, 0x99, 0xc6, 0xc6, 0xfa, 0x98, 0xb5, 0x37, 0xa5, 0x91, 0x18,
0xdb, 0xce, 0xa5, 0x45, 0x7d, 0x82, 0x18, 0xfb, 0xa1, 0x8f, 0xeb, 0xc3, 0x51, 0xc4, 0xee, 0x26,
0xb3, 0x2e, 0x93, 0xc6, 0x37, 0xf2, 0x1a, 0x2f, 0x4f, 0xba, 0x0f, 0xcd, 0x9c, 0x99, 0x2b, 0x66,
0xfd, 0x6e, 0x7e, 0xd6, 0xd6, 0x24, 0xa9, 0x33, 0x6d, 0x57, 0xb6, 0x0a, 0xff, 0xc5, 0xfa, 0x7d,
0x00, 0x90, 0xa9, 0xfc, 0xee, 0xc7, 0x97, 0xf3, 0xc7, 0x12, 0xc0, 0x20, 0xc2, 0x2a, 0x36, 0x72,
0xa9, 0xee, 0x2e, 0xfb, 0x27, 0xa1, 0x54, 0xe2, 0x39, 0xa5, 0x39, 0x8d, 0xaf, 0xf3, 0xa6, 0xe1,
0x51, 0xc6, 0xb0, 0x5d, 0x68, 0x8e, 0x44, 0xec, 0x29, 0x9f, 0x02, 0xca, 0x2e, 0xfa, 0x2d, 0x9c,
0x53, 0xa6, 0x67, 0xab, 0x9b, 0x21, 0xcc, 0x5a, 0xe5, 0xc7, 0xb0, 0x1d, 0x58, 0x16, 0x17, 0x91,
0x54, 0xda, 0x5a, 0x31, 0xed, 0xe1, 0x35, 0xd3, 0x68, 0x22, 0x9f, 0x2c, 0xf1, 0xa6, 0xc8, 0x3e,
0x98, 0x0b, 0x65, 0xcf, 0x8d, 0x62, 0x5b, 0x94, 0x3b, 0x0b, 0xf6, 0xf6, 0xdd, 0xc8, 0x2c, 0xda,
0xde, 0xfb, 0x38, 0xd7, 0x5f, 0xfe, 0xed, 0xd6, 0x9d, 0x5c, 0x27, 0x33, 0x91, 0xc7, 0xb3, 0x6d,
0x8a, 0x97, 0x33, 0x5f, 0x6f, 0x4f, 0xb5, 0x1f, 0x6c, 0xbb, 0x91, 0x8f, 0xea, 0x70, 0x60, 0xbf,
0xcb, 0x49, 0x35, 0xfb, 0x10, 0x5a, 0x91, 0x92, 0x27, 0x4a, 0xc4, 0xf1, 0x73, 0xaa, 0x6b, 0xb6,
0xdf, 0x7c, 0xcd, 0xd6, 0x5f, 0x92, 0x7c, 0x84, 0x02, 0xbe, 0x12, 0xe5, 0x3f, 0x57, 0x7f, 0x0c,
0xed, 0xc5, 0x19, 0xbf, 0xca, 0xee, 0xad, 0xde, 0x87, 0x46, 0x3a, 0x83, 0x97, 0x0d, 0xac, 0xe7,
0xb7, 0xfd, 0x0f, 0x05, 0xa8, 0x9a, 0x7c, 0x64, 0xf7, 0xa1, 0x11, 0x48, 0xcf, 0x45, 0x07, 0x92,
0xde, 0xfe, 0xad, 0x2c, 0x5d, 0xb7, 0x3e, 0x49, 0x64, 0x66, 0x3f, 0x32, 0x2c, 0x86, 0xa7, 0x1f,
0x8e, 0x65, 0x92, 0x3f, 0xad, 0x6c, 0x50, 0x3f, 0x1c, 0x4b, 0x6e, 0x84, 0xab, 0x8f, 0xa0, 0x35,
0xaf, 0xe2, 0x0a, 0x3f, 0xdf, 0x99, 0x0f, 0x74, 0xaa, 0x06, 0xe9, 0xa0, 0xbc, 0xdb, 0xf7, 0xa1,
0x91, 0xf2, 0xd9, 0xe6, 0x65, 0xc7, 0x97, 0xf3, 0x23, 0x73, 0xbe, 0x3a, 0x01, 0x40, 0xe6, 0x1a,
0x1e, 0x73, 0x78, 0x89, 0x08, 0xb3, 0xe6, 0x21, 0xfd, 0xa6, 0xda, 0xeb, 0x6a, 0x97, 0x5c, 0x59,
0xe6, 0x44, 0xb3, 0x2d, 0x80, 0x51, 0x9a, 0xea, 0xdf, 0x72, 0x00, 0xe4, 0x10, 0xce, 0x00, 0xea,
0x89, 0x13, 0x6c, 0x1d, 0x9a, 0xb1, 0xb5, 0x8c, 0xbd, 0x2e, 0x9a, 0xab, 0xf0, 0x3c, 0x0b, 0x7b,
0x56, 0xe5, 0x86, 0x27, 0x62, 0xae, 0x67, 0xe5, 0xc8, 0xe1, 0x56, 0xe0, 0x7c, 0x0a, 0x15, 0x62,
0x60, 0x82, 0xc6, 0xda, 0x55, 0xda, 0xb6, 0xbf, 0xa6, 0xc3, 0x93, 0x31, 0x99, 0xdd, 0x2b, 0x63,
0x08, 0x73, 0x03, 0x60, 0xef, 0x62, 0x1f, 0x39, 0xb2, 0x2b, 0x7a, 0x15, 0x0e, 0xc5, 0xce, 0x8f,
0xa0, 0x9e, 0xb0, 0x71, 0xe6, 0x81, 0x1f, 0x0a, 0xeb, 0x22, 0xd1, 0x78, 0x6d, 0xf0, 0x4e, 0x5d,
0xe5, 0x7a, 0x5a, 0x98, 0x36, 0xa5, 0xc2, 0x33, 0x86, 0xf3, 0x0e, 0x34, 0x73, 0x79, 0x87, 0xe1,
0xf6, 0x8c, 0xb6, 0xd1, 0x64, 0xbf, 0xf9, 0x70, 0x3e, 0x82, 0x95, 0xb9, 0x1c, 0xc0, 0x62, 0xe5,
0x8f, 0x92, 0x62, 0x65, 0x0a, 0xd1, 0xa5, 0x6e, 0x8b, 0x41, 0xf9, 0x5c, 0xb8, 0x67, 0xb6, 0xd3,
0x22, 0xda, 0xf9, 0x3d, 0xde, 0x8e, 0x92, 0x1e, 0xf6, 0xfb, 0x00, 0xa7, 0x5a, 0x47, 0xcf, 0xa9,
0xa9, 0xb5, 0xca, 0x1a, 0xc8, 0x21, 0x04, 0xbb, 0x05, 0x4d, 0xfc, 0x88, 0xad, 0xdc, 0xa8, 0xa6,
0x11, 0xb1, 0x01, 0x7c, 0x0f, 0x1a, 0xe3, 0x74, 0x78, 0xc9, 0xc6, 0x40, 0x32, 0xfa, 0x2d, 0xa8,
0x87, 0xd2, 0xca, 0x4c, 0x8f, 0x5d, 0x0b, 0x65, 0x3a, 0xce, 0x0d, 0x02, 0x2b, 0xab, 0x98, 0x71,
0x6e, 0x10, 0x90, 0xd0, 0xb9, 0x03, 0xaf, 0x5d, 0xba, 0xe7, 0xb1, 0x37, 0xa0, 0x3a, 0xf6, 0x03,
0x4d, 0x45, 0x09, 0x7b, 0x7a, 0xfb, 0xe5, 0xfc, 0xab, 0x00, 0x90, 0xc5, 0x0f, 0x66, 0x05, 0x56,
0x17, 0xc4, 0x2c, 0x9b, 0x6a, 0x12, 0x40, 0x7d, 0x62, 0xcf, 0x29, 0x1b, 0x19, 0x37, 0xe7, 0x63,
0x6e, 0x2b, 0x39, 0xc6, 0xcc, 0x09, 0xb6, 0x63, 0x4f, 0xb0, 0x57, 0xb9, 0x8b, 0xa5, 0x16, 0xa8,
0xd1, 0xca, 0x5f, 0xcd, 0x21, 0x4b, 0x67, 0x6e, 0x25, 0xab, 0x8f, 0x60, 0x65, 0xce, 0xe4, 0x77,
0xac, 0x59, 0xd9, 0x79, 0x9b, 0xcf, 0xe5, 0x1d, 0xa8, 0x9a, 0x3b, 0x3d, 0xdb, 0x80, 0x9a, 0xeb,
0x99, 0x34, 0xce, 0x1d, 0x25, 0x28, 0xdc, 0x25, 0x36, 0x4f, 0xc4, 0xce, 0x5f, 0x8a, 0x00, 0x19,
0xff, 0x15, 0xba, 0xed, 0x07, 0xd0, 0x8a, 0x85, 0x27, 0xc3, 0x91, 0xab, 0x66, 0x24, 0xb5, 0x97,
0xce, 0xab, 0x86, 0x2c, 0x20, 0x73, 0x9d, 0x77, 0xe9, 0xe5, 0x9d, 0xf7, 0x06, 0x94, 0x3d, 0x19,
0xcd, 0x6c, 0x69, 0x62, 0xf3, 0x13, 0xd9, 0x97, 0xd1, 0xec, 0x60, 0x89, 0x13, 0x82, 0x6d, 0x41,
0x75, 0x72, 0x46, 0xaf, 0x1c, 0xe6, 0xb6, 0x76, 0x63, 0x1e, 0xfb, 0xf8, 0x0c, 0xe9, 0x83, 0x25,
0x6e, 0x51, 0xec, 0x0e, 0x54, 0x26, 0x67, 0x23, 0x5f, 0xd9, 0xe2, 0x72, 0x7d, 0x11, 0xde, 0xf5,
0x15, 0x3d, 0x6a, 0x20, 0x86, 0x39, 0x50, 0x54, 0x13, 0xfb, 0xa4, 0xd1, 0x5e, 0x58, 0xcd, 0xc9,
0xc1, 0x12, 0x2f, 0xaa, 0xc9, 0x5e, 0x1d, 0xaa, 0x66, 0x5d, 0x9d, 0x7f, 0x96, 0xa0, 0x35, 0xef,
0x25, 0xee, 0x6c, 0xac, 0xbc, 0x64, 0x67, 0x63, 0xe5, 0xa5, 0x97, 0x92, 0x62, 0xee, 0x52, 0xe2,
0x40, 0x45, 0x9e, 0x87, 0x42, 0xe5, 0x9f, 0x73, 0xf6, 0x4f, 0xe5, 0x79, 0x88, 0x8d, 0xb1, 0x11,
0xcd, 0xf5, 0x99, 0x15, 0xdb, 0x67, 0xbe, 0x0b, 0x2b, 0x63, 0x19, 0x04, 0xf2, 0x7c, 0x38, 0x9b,
0x04, 0x7e, 0x78, 0x66, 0x9b, 0xcd, 0x79, 0x26, 0xdb, 0x80, 0x6b, 0x23, 0x5f, 0xa1, 0x3b, 0xfb,
0x32, 0xd4, 0x22, 0xa4, 0xcb, 0x2a, 0xe2, 0x16, 0xd9, 0xec, 0x63, 0x58, 0x77, 0xb5, 0x16, 0x93,
0x48, 0x3f, 0x0d, 0x23, 0xd7, 0x3b, 0xeb, 0x4a, 0x8f, 0xb2, 0x70, 0x12, 0xb9, 0xda, 0x3f, 0xf6,
0x03, 0xbc, 0xc4, 0xd7, 0x68, 0xe8, 0x4b, 0x71, 0xec, 0x3d, 0x68, 0x79, 0x4a, 0xb8, 0x5a, 0x74,
0x45, 0xac, 0x8f, 0x5c, 0x7d, 0xda, 0xa9, 0xd3, 0xc8, 0x05, 0x2e, 0xce, 0xc1, 0x45, 0x6f, 0x3f,
0xf5, 0x83, 0x91, 0x87, 0xd7, 0xcb, 0x86, 0x99, 0xc3, 0x1c, 0x93, 0x6d, 0x01, 0x23, 0x46, 0x6f,
0x12, 0xe9, 0x59, 0x0a, 0x05, 0x82, 0x5e, 0x21, 0xc1, 0x03, 0x57, 0xfb, 0x13, 0x11, 0x6b, 0x77,
0x12, 0xd1, 0xfb, 0x51, 0x89, 0x67, 0x0c, 0x76, 0x1b, 0xda, 0x7e, 0xe8, 0x05, 0xd3, 0x91, 0x78,
0x1e, 0xe1, 0x44, 0x54, 0x18, 0x77, 0x96, 0xe9, 0x54, 0xb9, 0x66, 0xf9, 0x47, 0x96, 0x8d, 0x50,
0x71, 0xb1, 0x00, 0x5d, 0x31, 0x50, 0xcb, 0x4f, 0xa0, 0xce, 0xe7, 0x05, 0x68, 0x2f, 0x06, 0x1e,
0x6e, 0x5b, 0x84, 0x93, 0xb7, 0x97, 0x6b, 0xa4, 0xd3, 0xad, 0x2c, 0xe6, 0xb6, 0x32, 0xa9, 0x97,
0xa5, 0x5c, 0xbd, 0x4c, 0xc3, 0xa2, 0xfc, 0xed, 0x61, 0x31, 0x37, 0xd1, 0xca, 0xc2, 0x44, 0x9d,
0xdf, 0x15, 0xe0, 0xda, 0x42, 0x70, 0x7f, 0x67, 0x8f, 0xd6, 0xa1, 0x39, 0x71, 0xcf, 0x84, 0x79,
0x5c, 0x88, 0x6d, 0x09, 0xc9, 0xb3, 0xfe, 0x07, 0xfe, 0x85, 0xb0, 0x9c, 0xcf, 0xa8, 0x2b, 0x7d,
0x4b, 0x02, 0xe4, 0x50, 0xea, 0x87, 0x72, 0x6a, 0x6b, 0x71, 0x12, 0x20, 0x09, 0xf3, 0x72, 0x18,
0x95, 0xae, 0x08, 0x23, 0xe7, 0x10, 0xea, 0x89, 0x83, 0xec, 0x96, 0x7d, 0xfd, 0x29, 0x64, 0x8f,
0x9a, 0x4f, 0x63, 0xa1, 0xd0, 0x77, 0xf3, 0x14, 0xf4, 0x36, 0x54, 0x4c, 0x1b, 0x5a, 0xbc, 0x8c,
0x30, 0x12, 0x67, 0x08, 0x35, 0xcb, 0x61, 0x9b, 0x50, 0x3d, 0x9e, 0xa5, 0xef, 0x28, 0xf6, 0xb8,
0xc0, 0xef, 0x91, 0x45, 0xe0, 0x19, 0x64, 0x10, 0xec, 0x06, 0x94, 0x8f, 0x67, 0xfd, 0xae, 0xb9,
0x58, 0xe2, 0x49, 0x86, 0x5f, 0x7b, 0x55, 0xe3, 0x90, 0xf3, 0x09, 0x2c, 0xe7, 0xc7, 0xa5, 0x85,
0xbd, 0x90, 0x2b, 0xec, 0xe9, 0x91, 0x5d, 0x7c, 0xd9, 0x0d, 0xe3, 0x03, 0x00, 0x7a, 0xab, 0x7d,
0xd5, 0x9b, 0xc9, 0x0f, 0xa1, 0x66, 0xdf, 0x78, 0xd9, 0x7b, 0x0b, 0x6f, 0xd6, 0xad, 0xf4, 0x01,
0x78, 0xee, 0xe1, 0xda, 0x79, 0x80, 0x3d, 0xea, 0xb9, 0x50, 0x5d, 0x7f, 0x3c, 0x7e, 0x55, 0x73,
0x0f, 0xa0, 0xf5, 0x34, 0x8a, 0xfe, 0xb3, 0xb1, 0x3f, 0x83, 0xaa, 0x79, 0x6a, 0xc6, 0x31, 0x01,
0x7a, 0x60, 0xf7, 0x80, 0x99, 0x3e, 0x36, 0xef, 0x12, 0x37, 0x00, 0x44, 0x4e, 0xd1, 0x9e, 0xdd,
0x5c, 0x42, 0xce, 0x3b, 0xc0, 0x0d, 0x60, 0x73, 0x03, 0x6a, 0xf6, 0x55, 0x93, 0x35, 0xa0, 0xf2,
0xf4, 0x70, 0xd8, 0x7b, 0xd2, 0x5e, 0x62, 0x75, 0x28, 0x1f, 0x0c, 0x86, 0x4f, 0xda, 0x05, 0xa4,
0x0e, 0x07, 0x87, 0xbd, 0x76, 0x71, 0xf3, 0x36, 0x2c, 0xe7, 0xdf, 0x35, 0x59, 0x13, 0x6a, 0xc3,
0xdd, 0xc3, 0xee, 0xde, 0xe0, 0xa7, 0xed, 0x25, 0xb6, 0x0c, 0xf5, 0xfe, 0xe1, 0xb0, 0xb7, 0xff,
0x94, 0xf7, 0xda, 0x85, 0xcd, 0x9f, 0x40, 0x23, 0x7d, 0x28, 0x42, 0x0d, 0x7b, 0xfd, 0xc3, 0x6e,
0x7b, 0x89, 0x01, 0x54, 0x87, 0xbd, 0x7d, 0xde, 0x43, 0xbd, 0x35, 0x28, 0x0d, 0x87, 0x07, 0xed,
0x22, 0x5a, 0xdd, 0xdf, 0xdd, 0x3f, 0xe8, 0xb5, 0x4b, 0x48, 0x3e, 0x79, 0x7c, 0xf4, 0x70, 0xd8,
0x2e, 0x6f, 0x7e, 0x00, 0xd7, 0x16, 0x9e, 0x50, 0x68, 0xf4, 0xc1, 0x2e, 0xef, 0xa1, 0xa6, 0x26,
0xd4, 0x8e, 0x78, 0xff, 0xd9, 0xee, 0x93, 0x5e, 0xbb, 0x80, 0x82, 0x4f, 0x06, 0xfb, 0x8f, 0x7a,
0xdd, 0x76, 0x71, 0xef, 0xe6, 0x17, 0x2f, 0xd6, 0x0a, 0x5f, 0xbe, 0x58, 0x2b, 0x7c, 0xf5, 0x62,
0xad, 0xf0, 0xf7, 0x17, 0x6b, 0x85, 0xcf, 0xbf, 0x59, 0x5b, 0xfa, 0xf2, 0x9b, 0xb5, 0xa5, 0xaf,
0xbe, 0x59, 0x5b, 0x3a, 0xae, 0xd2, 0x9f, 0x15, 0xef, 0xff, 0x3b, 0x00, 0x00, 0xff, 0xff, 0xd1,
0x92, 0xe3, 0x09, 0xec, 0x18, 0x00, 0x00,
// 2564 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x59, 0xcf, 0x6f, 0x5b, 0xc7,
0xf1, 0x17, 0x7f, 0x93, 0x43, 0x89, 0x66, 0xd6, 0x4e, 0xc2, 0xe8, 0xeb, 0xaf, 0xac, 0xbc, 0xa4,
0x81, 0x2c, 0xdb, 0x32, 0xaa, 0x00, 0x71, 0x60, 0x04, 0x45, 0x25, 0x91, 0x8e, 0x18, 0xc7, 0xa2,
0xb0, 0xb4, 0x9d, 0x1e, 0x0a, 0x18, 0x4f, 0x8f, 0x4b, 0xe9, 0x41, 0x8f, 0x6f, 0x1f, 0xf6, 0x2d,
0x2d, 0xb1, 0x87, 0x1e, 0xfa, 0x17, 0x04, 0x28, 0x50, 0xf4, 0x52, 0xf4, 0x9f, 0xe8, 0xb1, 0xbd,
0x07, 0xc8, 0x25, 0x87, 0x1e, 0x82, 0x1e, 0xd2, 0xc2, 0xb9, 0xf4, 0x8f, 0x68, 0x81, 0x62, 0x66,
0xf7, 0xfd, 0x20, 0x25, 0xc3, 0x71, 0x5b, 0xf4, 0xc4, 0x79, 0x33, 0x9f, 0x9d, 0x9d, 0x9d, 0x9d,
0xd9, 0x99, 0x5d, 0x42, 0x43, 0x46, 0xf1, 0x56, 0xa4, 0xa4, 0x96, 0xac, 0x18, 0x1d, 0xad, 0xde,
0x39, 0xf6, 0xf5, 0xc9, 0xf4, 0x68, 0xcb, 0x93, 0x93, 0xbb, 0xc7, 0xf2, 0x58, 0xde, 0x25, 0xd1,
0xd1, 0x74, 0x4c, 0x5f, 0xf4, 0x41, 0x94, 0x19, 0xe2, 0xfc, 0xbd, 0x08, 0xc5, 0x41, 0xc4, 0xde,
0x85, 0xaa, 0x1f, 0x46, 0x53, 0x1d, 0x77, 0x0a, 0xeb, 0xa5, 0x8d, 0xe6, 0x76, 0x63, 0x2b, 0x3a,
0xda, 0xea, 0x23, 0x87, 0x5b, 0x01, 0x5b, 0x87, 0xb2, 0x38, 0x17, 0x5e, 0xa7, 0xb8, 0x5e, 0xd8,
0x68, 0x6e, 0x03, 0x02, 0x7a, 0xe7, 0xc2, 0x1b, 0x44, 0xfb, 0x4b, 0x9c, 0x24, 0xec, 0x03, 0xa8,
0xc6, 0x72, 0xaa, 0x3c, 0xd1, 0x29, 0x11, 0x66, 0x19, 0x31, 0x43, 0xe2, 0x10, 0xca, 0x4a, 0x51,
0xd3, 0xd8, 0x0f, 0x44, 0xa7, 0x9c, 0x69, 0x7a, 0xe0, 0x07, 0x06, 0x43, 0x12, 0xf6, 0x1e, 0x54,
0x8e, 0xa6, 0x7e, 0x30, 0xea, 0x54, 0x08, 0xd2, 0x44, 0xc8, 0x2e, 0x32, 0x08, 0x63, 0x64, 0x08,
0x9a, 0x08, 0x75, 0x2c, 0x3a, 0xd5, 0x0c, 0xf4, 0x08, 0x19, 0x06, 0x44, 0x32, 0x9c, 0x6b, 0xe4,
0x8f, 0xc7, 0x9d, 0x5a, 0x36, 0x57, 0xd7, 0x1f, 0x8f, 0xcd, 0x5c, 0x28, 0x61, 0x1b, 0x50, 0x8f,
0x02, 0x57, 0x8f, 0xa5, 0x9a, 0x74, 0x20, 0xb3, 0xfb, 0xd0, 0xf2, 0x78, 0x2a, 0x65, 0xf7, 0xa0,
0xe9, 0xc9, 0x30, 0xd6, 0xca, 0xf5, 0x43, 0x1d, 0x77, 0x9a, 0x04, 0x7e, 0x13, 0xc1, 0x5f, 0x48,
0x75, 0x2a, 0xd4, 0x5e, 0x26, 0xe4, 0x79, 0xe4, 0x6e, 0x19, 0x8a, 0x32, 0x72, 0x7e, 0x53, 0x80,
0x7a, 0xa2, 0x95, 0x39, 0xb0, 0xbc, 0xa3, 0xbc, 0x13, 0x5f, 0x0b, 0x4f, 0x4f, 0x95, 0xe8, 0x14,
0xd6, 0x0b, 0x1b, 0x0d, 0x3e, 0xc7, 0x63, 0x2d, 0x28, 0x0e, 0x86, 0xe4, 0xef, 0x06, 0x2f, 0x0e,
0x86, 0xac, 0x03, 0xb5, 0xa7, 0xae, 0xf2, 0xdd, 0x50, 0x93, 0x83, 0x1b, 0x3c, 0xf9, 0x64, 0xd7,
0xa1, 0x31, 0x18, 0x3e, 0x15, 0x2a, 0xf6, 0x65, 0x48, 0x6e, 0x6d, 0xf0, 0x8c, 0xc1, 0xd6, 0x00,
0x06, 0xc3, 0x07, 0xc2, 0x45, 0xa5, 0x71, 0xa7, 0xb2, 0x5e, 0xda, 0x68, 0xf0, 0x1c, 0xc7, 0xf9,
0x25, 0x54, 0x68, 0xab, 0xd9, 0x67, 0x50, 0x1d, 0xf9, 0xc7, 0x22, 0xd6, 0xc6, 0x9c, 0xdd, 0xed,
0xaf, 0xbe, 0xbb, 0xb1, 0xf4, 0x97, 0xef, 0x6e, 0x6c, 0xe6, 0x62, 0x4a, 0x46, 0x22, 0xf4, 0x64,
0xa8, 0x5d, 0x3f, 0x14, 0x2a, 0xbe, 0x7b, 0x2c, 0xef, 0x98, 0x21, 0x5b, 0x5d, 0xfa, 0xe1, 0x56,
0x03, 0xbb, 0x09, 0x15, 0x3f, 0x1c, 0x89, 0x73, 0xb2, 0xbf, 0xb4, 0x7b, 0xd5, 0xaa, 0x6a, 0x0e,
0xa6, 0x3a, 0x9a, 0xea, 0x3e, 0x8a, 0xb8, 0x41, 0x38, 0x5f, 0x17, 0xa0, 0x6a, 0x42, 0x89, 0x5d,
0x87, 0xf2, 0x44, 0x68, 0x97, 0xe6, 0x6f, 0x6e, 0xd7, 0xcd, 0x96, 0x6a, 0x97, 0x13, 0x17, 0xa3,
0x74, 0x22, 0xa7, 0xe8, 0xfb, 0x62, 0x16, 0xa5, 0x8f, 0x90, 0xc3, 0xad, 0x80, 0xfd, 0x08, 0x6a,
0xa1, 0xd0, 0x67, 0x52, 0x9d, 0x92, 0x8f, 0x5a, 0x26, 0x2c, 0x0e, 0x84, 0x7e, 0x24, 0x47, 0x82,
0x27, 0x32, 0x76, 0x1b, 0xea, 0xb1, 0xf0, 0xa6, 0xca, 0xd7, 0x33, 0xf2, 0x57, 0x6b, 0xbb, 0x4d,
0xc1, 0x6a, 0x79, 0x04, 0x4e, 0x11, 0xec, 0x16, 0x34, 0x62, 0xe1, 0x29, 0xa1, 0x45, 0xf8, 0x9c,
0xfc, 0xd7, 0xdc, 0x5e, 0xb1, 0x70, 0x25, 0x74, 0x2f, 0x7c, 0xce, 0x33, 0xb9, 0xf3, 0x75, 0x11,
0xca, 0x68, 0x33, 0x63, 0x50, 0x76, 0xd5, 0xb1, 0xc9, 0xa8, 0x06, 0x27, 0x9a, 0xb5, 0xa1, 0x84,
0x3a, 0x8a, 0xc4, 0x42, 0x12, 0x39, 0xde, 0xd9, 0xc8, 0x6e, 0x28, 0x92, 0x38, 0x6e, 0x1a, 0x0b,
0x65, 0xf7, 0x91, 0x68, 0x76, 0x13, 0x1a, 0x91, 0x92, 0xe7, 0xb3, 0x67, 0xc6, 0x82, 0x2c, 0x4a,
0x91, 0x89, 0x06, 0xd4, 0x23, 0x4b, 0xb1, 0x4d, 0x00, 0x71, 0xae, 0x95, 0xbb, 0x2f, 0x63, 0x1d,
0x77, 0xaa, 0x64, 0x2d, 0xc5, 0x3d, 0x32, 0xfa, 0x87, 0x3c, 0x27, 0x65, 0xab, 0x50, 0x3f, 0x91,
0xb1, 0x0e, 0xdd, 0x89, 0xa0, 0x0c, 0x69, 0xf0, 0xf4, 0x9b, 0x39, 0x50, 0x9d, 0x06, 0xfe, 0xc4,
0xd7, 0x9d, 0x46, 0xa6, 0xe3, 0x09, 0x71, 0xb8, 0x95, 0x60, 0x14, 0x7b, 0xc7, 0x4a, 0x4e, 0xa3,
0x43, 0x57, 0x89, 0x50, 0x53, 0xfe, 0x34, 0xf8, 0x1c, 0x8f, 0x7d, 0x02, 0xef, 0x28, 0x31, 0x91,
0xcf, 0x05, 0x6d, 0xd4, 0x50, 0x4f, 0x8f, 0x62, 0x8e, 0x8e, 0x8d, 0xfd, 0xe7, 0x82, 0x72, 0xa8,
0xce, 0x5f, 0x0e, 0x70, 0x6e, 0x43, 0xd5, 0xd8, 0x8d, 0x6e, 0x41, 0xca, 0x66, 0x0a, 0xd1, 0x98,
0x21, 0xfd, 0xc3, 0x24, 0x43, 0xfa, 0x87, 0x4e, 0x17, 0xaa, 0xc6, 0x42, 0x44, 0x1f, 0xe0, 0xaa,
0x2c, 0x1a, 0x69, 0xe4, 0x0d, 0xe5, 0x58, 0x9b, 0x88, 0xe4, 0x44, 0x93, 0x56, 0x57, 0x19, 0xff,
0x97, 0x38, 0xd1, 0xce, 0x43, 0x68, 0xa4, 0x3b, 0x4b, 0x53, 0x74, 0xad, 0x9a, 0x62, 0xbf, 0x8b,
0x03, 0xc8, 0x5d, 0x66, 0x52, 0xa2, 0xd1, 0x8d, 0x32, 0xd2, 0xbe, 0x0c, 0xdd, 0x80, 0x14, 0xd5,
0x79, 0xfa, 0xed, 0xfc, 0xb6, 0x04, 0x15, 0x5a, 0x18, 0xdb, 0xc0, 0x8c, 0x88, 0xa6, 0x66, 0x05,
0xa5, 0x5d, 0x66, 0x33, 0x02, 0x28, 0xf7, 0xd2, 0x84, 0xc0, 0x3c, 0x5c, 0xc5, 0xe8, 0x0c, 0x84,
0xa7, 0xa5, 0xb2, 0xf3, 0xa4, 0xdf, 0x38, 0xff, 0x08, 0x33, 0xd4, 0x04, 0x0c, 0xd1, 0xec, 0x16,
0x54, 0x25, 0xa5, 0x15, 0xc5, 0xcc, 0x4b, 0x92, 0xcd, 0x42, 0x50, 0xb9, 0x12, 0xee, 0x48, 0x86,
0xc1, 0x8c, 0x22, 0xa9, 0xce, 0xd3, 0x6f, 0x0c, 0x74, 0xca, 0xa3, 0xc7, 0xb3, 0xc8, 0x1c, 0xab,
0x2d, 0x13, 0xe8, 0x8f, 0x12, 0x26, 0xcf, 0xe4, 0x78, 0x70, 0x3e, 0x9e, 0x44, 0xe3, 0x78, 0x10,
0xe9, 0xce, 0xd5, 0x2c, 0x24, 0x13, 0x1e, 0x4f, 0xa5, 0x88, 0xf4, 0x5c, 0xef, 0x44, 0x20, 0xf2,
0x5a, 0x86, 0xdc, 0xb3, 0x3c, 0x9e, 0x4a, 0xb3, 0x4c, 0x43, 0xe8, 0x9b, 0x04, 0xcd, 0x65, 0x1a,
0x62, 0x33, 0x39, 0x46, 0xe8, 0x70, 0xb8, 0x8f, 0xc8, 0xb7, 0xb2, 0xd3, 0xdd, 0x70, 0xb8, 0x95,
0x98, 0xd5, 0xc6, 0xd3, 0x40, 0xf7, 0xbb, 0x9d, 0xb7, 0x8d, 0x2b, 0x93, 0x6f, 0x67, 0x2d, 0x5b,
0x00, 0xba, 0x35, 0xf6, 0x7f, 0x61, 0xe2, 0xa5, 0xc4, 0x89, 0x76, 0xfa, 0x50, 0x4f, 0x4c, 0xbc,
0x10, 0x06, 0x77, 0xa0, 0x16, 0x9f, 0xb8, 0xca, 0x0f, 0x8f, 0x69, 0x87, 0x5a, 0xdb, 0x57, 0xd3,
0x15, 0x0d, 0x0d, 0x1f, 0xad, 0x48, 0x30, 0x8e, 0x4c, 0x42, 0xea, 0x32, 0x5d, 0x6d, 0x28, 0x4d,
0xfd, 0x11, 0xe9, 0x59, 0xe1, 0x48, 0x22, 0xe7, 0xd8, 0x37, 0x41, 0xb9, 0xc2, 0x91, 0x44, 0xfb,
0x26, 0x72, 0x64, 0x6a, 0xe6, 0x0a, 0x27, 0x7a, 0x2e, 0xec, 0x2a, 0x0b, 0x61, 0x17, 0x24, 0xbe,
0xf9, 0x9f, 0xcc, 0xf6, 0xeb, 0x02, 0xd4, 0x93, 0x42, 0x8f, 0xe5, 0xc6, 0x1f, 0x89, 0x50, 0xfb,
0x63, 0x5f, 0x28, 0x3b, 0x71, 0x8e, 0xc3, 0xee, 0x40, 0xc5, 0xd5, 0x5a, 0x25, 0x87, 0xf8, 0xdb,
0xf9, 0x2e, 0x61, 0x6b, 0x07, 0x25, 0xbd, 0x50, 0xab, 0x19, 0x37, 0xa8, 0xd5, 0x8f, 0x01, 0x32,
0x26, 0xda, 0x7a, 0x2a, 0x66, 0x56, 0x2b, 0x92, 0xec, 0x1a, 0x54, 0x9e, 0xbb, 0xc1, 0x34, 0xc9,
0x48, 0xf3, 0x71, 0xbf, 0xf8, 0x71, 0xc1, 0xf9, 0x53, 0x11, 0x6a, 0xb6, 0x6b, 0x60, 0xb7, 0xa1,
0x46, 0x5d, 0x83, 0xb5, 0xe8, 0xf2, 0xf4, 0x4b, 0x20, 0xec, 0x6e, 0xda, 0x0e, 0xe5, 0x6c, 0xb4,
0xaa, 0x4c, 0x5b, 0x64, 0x6d, 0xcc, 0x9a, 0xa3, 0xd2, 0x48, 0x8c, 0x6d, 0xdf, 0xd3, 0xa2, 0x2e,
0x43, 0x8c, 0xfd, 0xd0, 0x47, 0xff, 0x70, 0x14, 0xb1, 0xdb, 0xc9, 0xaa, 0xcb, 0xa4, 0xf1, 0xad,
0xbc, 0xc6, 0x8b, 0x8b, 0xee, 0x43, 0x33, 0x37, 0xcd, 0x25, 0xab, 0x7e, 0x3f, 0xbf, 0x6a, 0x3b,
0x25, 0xa9, 0x33, 0x4d, 0x5b, 0xe6, 0x85, 0xff, 0xc0, 0x7f, 0x1f, 0x01, 0x64, 0x2a, 0x7f, 0xf8,
0xf1, 0xe5, 0xfc, 0xb1, 0x04, 0x30, 0x88, 0xb0, 0x06, 0x8e, 0x5c, 0xaa, 0xda, 0xcb, 0xfe, 0x71,
0x28, 0x95, 0x78, 0x46, 0x69, 0x4e, 0xe3, 0xeb, 0xbc, 0x69, 0x78, 0x94, 0x31, 0x6c, 0x07, 0x9a,
0x23, 0x11, 0x7b, 0xca, 0xa7, 0x80, 0xb2, 0x4e, 0xbf, 0x81, 0x6b, 0xca, 0xf4, 0x6c, 0x75, 0x33,
0x84, 0xf1, 0x55, 0x7e, 0x0c, 0xdb, 0x86, 0x65, 0x71, 0x1e, 0x49, 0xa5, 0xed, 0x2c, 0xa6, 0xb9,
0xbc, 0x62, 0xda, 0x54, 0xe4, 0xd3, 0x4c, 0xbc, 0x29, 0xb2, 0x0f, 0xe6, 0x42, 0xd9, 0x73, 0xa3,
0xd8, 0x96, 0xf4, 0xce, 0xc2, 0x7c, 0x7b, 0x6e, 0x64, 0x9c, 0xb6, 0xfb, 0x21, 0xae, 0xf5, 0x57,
0x7f, 0xbd, 0x71, 0x2b, 0xd7, 0x07, 0x4d, 0xe4, 0xd1, 0xec, 0x2e, 0xc5, 0xcb, 0xa9, 0xaf, 0xef,
0x4e, 0xb5, 0x1f, 0xdc, 0x75, 0x23, 0x1f, 0xd5, 0xe1, 0xc0, 0x7e, 0x97, 0x93, 0x6a, 0xf6, 0x31,
0xb4, 0x22, 0x25, 0x8f, 0x95, 0x88, 0xe3, 0x67, 0x54, 0x15, 0x6d, 0xb7, 0xfa, 0x86, 0xad, 0xde,
0x24, 0xf9, 0x14, 0x05, 0x7c, 0x25, 0xca, 0x7f, 0xae, 0xfe, 0x04, 0xda, 0x8b, 0x2b, 0x7e, 0x9d,
0xdd, 0x5b, 0xbd, 0x07, 0x8d, 0x74, 0x05, 0xaf, 0x1a, 0x58, 0xcf, 0x6f, 0xfb, 0x1f, 0x0a, 0x50,
0x35, 0xf9, 0xc8, 0xee, 0x41, 0x23, 0x90, 0x9e, 0x8b, 0x06, 0x24, 0x37, 0x83, 0x77, 0xb2, 0x74,
0xdd, 0xfa, 0x3c, 0x91, 0x99, 0xfd, 0xc8, 0xb0, 0x18, 0x9e, 0x7e, 0x38, 0x96, 0x49, 0xfe, 0xb4,
0xb2, 0x41, 0xfd, 0x70, 0x2c, 0xb9, 0x11, 0xae, 0x3e, 0x84, 0xd6, 0xbc, 0x8a, 0x4b, 0xec, 0x7c,
0x6f, 0x3e, 0xd0, 0xa9, 0x1a, 0xa4, 0x83, 0xf2, 0x66, 0xdf, 0x83, 0x46, 0xca, 0x67, 0x9b, 0x17,
0x0d, 0x5f, 0xce, 0x8f, 0xcc, 0xd9, 0xea, 0x04, 0x00, 0x99, 0x69, 0x78, 0xcc, 0xe1, 0x15, 0x24,
0xcc, 0x9a, 0x87, 0xf4, 0x9b, 0x6a, 0xaf, 0xab, 0x5d, 0x32, 0x65, 0x99, 0x13, 0xcd, 0xb6, 0x00,
0x46, 0x69, 0xaa, 0xbf, 0xe4, 0x00, 0xc8, 0x21, 0x9c, 0x01, 0xd4, 0x13, 0x23, 0xd8, 0x3a, 0x34,
0x63, 0x3b, 0x33, 0x76, 0xca, 0x38, 0x5d, 0x85, 0xe7, 0x59, 0xd8, 0xf1, 0x2a, 0x37, 0x3c, 0x16,
0x73, 0x1d, 0x2f, 0x47, 0x0e, 0xb7, 0x02, 0xe7, 0x0b, 0xa8, 0x10, 0x03, 0x13, 0x34, 0xd6, 0xae,
0xd2, 0xb6, 0x79, 0x36, 0xfd, 0xa1, 0x8c, 0x69, 0xda, 0xdd, 0x32, 0x86, 0x30, 0x37, 0x00, 0xf6,
0x3e, 0x76, 0xa1, 0x23, 0xeb, 0xd1, 0xcb, 0x70, 0x28, 0x76, 0x3e, 0x81, 0x7a, 0xc2, 0xc6, 0x95,
0x07, 0x7e, 0x28, 0xac, 0x89, 0x44, 0xe3, 0xa5, 0xc3, 0x3b, 0x71, 0x95, 0xeb, 0x69, 0x61, 0xda,
0x94, 0x0a, 0xcf, 0x18, 0xce, 0x7b, 0xd0, 0xcc, 0xe5, 0x1d, 0x86, 0xdb, 0x53, 0xda, 0x46, 0x93,
0xfd, 0xe6, 0xc3, 0xf9, 0x14, 0x56, 0xe6, 0x72, 0x00, 0x8b, 0x95, 0x3f, 0x4a, 0x8a, 0x95, 0x29,
0x44, 0x17, 0xba, 0x2d, 0x06, 0xe5, 0x33, 0xe1, 0x9e, 0xda, 0x4e, 0x8b, 0x68, 0xe7, 0xf7, 0x78,
0xb7, 0x4a, 0x3a, 0xe0, 0xff, 0x07, 0x38, 0xd1, 0x3a, 0x7a, 0x46, 0x2d, 0xb1, 0x55, 0xd6, 0x40,
0x0e, 0x21, 0xd8, 0x0d, 0x68, 0xe2, 0x47, 0x6c, 0xe5, 0x46, 0x35, 0x8d, 0x88, 0x0d, 0xe0, 0xff,
0xa0, 0x31, 0x4e, 0x87, 0x97, 0x6c, 0x0c, 0x24, 0xa3, 0xdf, 0x81, 0x7a, 0x28, 0xad, 0xcc, 0x74,
0xe8, 0xb5, 0x50, 0xa6, 0xe3, 0xdc, 0x20, 0xb0, 0xb2, 0x8a, 0x19, 0xe7, 0x06, 0x01, 0x09, 0x9d,
0x5b, 0xf0, 0xc6, 0x85, 0x5b, 0x22, 0x7b, 0x0b, 0xaa, 0x63, 0x3f, 0xd0, 0x54, 0x94, 0xf0, 0x46,
0x60, 0xbf, 0x9c, 0x7f, 0x16, 0x00, 0xb2, 0xf8, 0xc1, 0xac, 0xc0, 0xea, 0x82, 0x98, 0x65, 0x53,
0x4d, 0x02, 0xa8, 0x4f, 0xec, 0x39, 0x65, 0x23, 0xe3, 0xfa, 0x7c, 0xcc, 0x6d, 0x25, 0xc7, 0x98,
0x39, 0xc1, 0xb6, 0xed, 0x09, 0xf6, 0x3a, 0x37, 0xb9, 0x74, 0x06, 0x6a, 0xb4, 0xf2, 0x17, 0x7b,
0xc8, 0xd2, 0x99, 0x5b, 0xc9, 0xea, 0x43, 0x58, 0x99, 0x9b, 0xf2, 0x07, 0xd6, 0xac, 0xec, 0xbc,
0xcd, 0xe7, 0xf2, 0x36, 0x54, 0xcd, 0x8b, 0x00, 0xdb, 0x80, 0x9a, 0xeb, 0x99, 0x34, 0xce, 0x1d,
0x25, 0x28, 0xdc, 0x21, 0x36, 0x4f, 0xc4, 0xce, 0x9f, 0x8b, 0x00, 0x19, 0xff, 0x35, 0xba, 0xed,
0xfb, 0xd0, 0x8a, 0x85, 0x27, 0xc3, 0x91, 0xab, 0x66, 0x24, 0xb5, 0x57, 0xd6, 0xcb, 0x86, 0x2c,
0x20, 0x73, 0x9d, 0x77, 0xe9, 0xd5, 0x9d, 0xf7, 0x06, 0x94, 0x3d, 0x19, 0xcd, 0x6c, 0x69, 0x62,
0xf3, 0x0b, 0xd9, 0x93, 0xd1, 0x6c, 0x7f, 0x89, 0x13, 0x82, 0x6d, 0x41, 0x75, 0x72, 0x4a, 0x6f,
0x24, 0xe6, 0xae, 0x77, 0x6d, 0x1e, 0xfb, 0xe8, 0x14, 0xe9, 0xfd, 0x25, 0x6e, 0x51, 0xec, 0x16,
0x54, 0x26, 0xa7, 0x23, 0x5f, 0xd9, 0xe2, 0x72, 0x75, 0x11, 0xde, 0xf5, 0x15, 0x3d, 0x89, 0x20,
0x86, 0x39, 0x50, 0x54, 0x13, 0xfb, 0x20, 0xd2, 0x5e, 0xf0, 0xe6, 0x64, 0x7f, 0x89, 0x17, 0xd5,
0x64, 0xb7, 0x0e, 0x55, 0xe3, 0x57, 0xe7, 0x1f, 0x25, 0x68, 0xcd, 0x5b, 0x89, 0x3b, 0x1b, 0x2b,
0x2f, 0xd9, 0xd9, 0x58, 0x79, 0xe9, 0xa5, 0xa4, 0x98, 0xbb, 0x94, 0x38, 0x50, 0x91, 0x67, 0xa1,
0x50, 0xf9, 0xc7, 0xa0, 0xbd, 0x13, 0x79, 0x16, 0x62, 0x63, 0x6c, 0x44, 0x73, 0x7d, 0x66, 0xc5,
0xf6, 0x99, 0xef, 0xc3, 0xca, 0x58, 0x06, 0x81, 0x3c, 0x1b, 0xce, 0x26, 0x81, 0x1f, 0x9e, 0xda,
0x66, 0x73, 0x9e, 0xc9, 0x36, 0xe0, 0xca, 0xc8, 0x57, 0x68, 0xce, 0x9e, 0x0c, 0xb5, 0x08, 0xe9,
0xaa, 0x8b, 0xb8, 0x45, 0x36, 0xfb, 0x0c, 0xd6, 0x5d, 0xad, 0xc5, 0x24, 0xd2, 0x4f, 0xc2, 0xc8,
0xf5, 0x4e, 0xbb, 0xd2, 0xa3, 0x2c, 0x9c, 0x44, 0xae, 0xf6, 0x8f, 0xfc, 0xc0, 0xd7, 0x33, 0x72,
0x46, 0x9d, 0xbf, 0x12, 0xc7, 0x3e, 0x80, 0x96, 0xa7, 0x84, 0xab, 0x45, 0x57, 0xc4, 0xfa, 0xd0,
0xd5, 0x27, 0x9d, 0x3a, 0x8d, 0x5c, 0xe0, 0xe2, 0x1a, 0x5c, 0xb4, 0xf6, 0x0b, 0x3f, 0x18, 0x79,
0x78, 0xbd, 0x6c, 0x98, 0x35, 0xcc, 0x31, 0xd9, 0x16, 0x30, 0x62, 0xf4, 0x26, 0x91, 0x9e, 0xa5,
0x50, 0x20, 0xe8, 0x25, 0x12, 0x3c, 0x70, 0xb5, 0x3f, 0x11, 0xb1, 0x76, 0x27, 0x11, 0xdd, 0x9c,
0x4b, 0x3c, 0x63, 0xb0, 0x9b, 0xd0, 0xf6, 0x43, 0x2f, 0x98, 0x8e, 0xc4, 0xb3, 0x08, 0x17, 0xa2,
0xc2, 0xb8, 0xb3, 0x4c, 0xa7, 0xca, 0x15, 0xcb, 0x3f, 0xb4, 0x6c, 0x84, 0x8a, 0xf3, 0x05, 0xe8,
0x8a, 0x81, 0x5a, 0x7e, 0x02, 0x75, 0xbe, 0x2c, 0x40, 0x7b, 0x31, 0xf0, 0x70, 0xdb, 0x22, 0x5c,
0xbc, 0xbd, 0x5c, 0x23, 0x9d, 0x6e, 0x65, 0x31, 0xb7, 0x95, 0x49, 0xbd, 0x2c, 0xe5, 0xea, 0x65,
0x1a, 0x16, 0xe5, 0x97, 0x87, 0xc5, 0xdc, 0x42, 0x2b, 0x0b, 0x0b, 0x75, 0x7e, 0x57, 0x80, 0x2b,
0x0b, 0xc1, 0xfd, 0x83, 0x2d, 0x5a, 0x87, 0xe6, 0xc4, 0x3d, 0x15, 0xe6, 0x69, 0x22, 0xb6, 0x25,
0x24, 0xcf, 0xfa, 0x2f, 0xd8, 0x17, 0xc2, 0x72, 0x3e, 0xa3, 0x2e, 0xb5, 0x2d, 0x09, 0x90, 0x03,
0xa9, 0x1f, 0xc8, 0xa9, 0xad, 0xc5, 0x49, 0x80, 0x24, 0xcc, 0x8b, 0x61, 0x54, 0xba, 0x24, 0x8c,
0x9c, 0x03, 0xa8, 0x27, 0x06, 0xb2, 0x1b, 0xf6, 0xed, 0xa8, 0x90, 0x3d, 0x89, 0x3e, 0x89, 0x85,
0x42, 0xdb, 0xcd, 0x43, 0xd2, 0xbb, 0x50, 0x31, 0x6d, 0x68, 0xf1, 0x22, 0xc2, 0x48, 0x9c, 0x21,
0xd4, 0x2c, 0x87, 0x6d, 0x42, 0xf5, 0x68, 0x96, 0xbe, 0xa3, 0xd8, 0xe3, 0x02, 0xbf, 0x47, 0x16,
0x81, 0x67, 0x90, 0x41, 0xb0, 0x6b, 0x50, 0x3e, 0x9a, 0xf5, 0xbb, 0xe6, 0x62, 0x89, 0x27, 0x19,
0x7e, 0xed, 0x56, 0x8d, 0x41, 0xce, 0xe7, 0xb0, 0x9c, 0x1f, 0x97, 0x16, 0xf6, 0x42, 0xae, 0xb0,
0xa7, 0x47, 0x76, 0xf1, 0x55, 0x37, 0x8c, 0x8f, 0x00, 0xe8, 0xa5, 0xf7, 0x75, 0x6f, 0x26, 0x3f,
0x86, 0x9a, 0x7d, 0x21, 0x66, 0x1f, 0x2c, 0xbc, 0x78, 0xb7, 0xd2, 0xe7, 0xe3, 0xb9, 0x67, 0x6f,
0xe7, 0x3e, 0xf6, 0xa8, 0x67, 0x42, 0x75, 0xfd, 0xf1, 0xf8, 0x75, 0xa7, 0xbb, 0x0f, 0xad, 0x27,
0x51, 0xf4, 0xef, 0x8d, 0xfd, 0x39, 0x54, 0xcd, 0x43, 0x35, 0x8e, 0x09, 0xd0, 0x02, 0xbb, 0x07,
0xcc, 0xf4, 0xb1, 0x79, 0x93, 0xb8, 0x01, 0x20, 0x72, 0x8a, 0xf3, 0xd9, 0xcd, 0x25, 0xe4, 0xbc,
0x01, 0xdc, 0x00, 0x36, 0x37, 0xa0, 0x66, 0xdf, 0x44, 0x59, 0x03, 0x2a, 0x4f, 0x0e, 0x86, 0xbd,
0xc7, 0xed, 0x25, 0x56, 0x87, 0xf2, 0xfe, 0x60, 0xf8, 0xb8, 0x5d, 0x40, 0xea, 0x60, 0x70, 0xd0,
0x6b, 0x17, 0x37, 0x6f, 0xc2, 0x72, 0xfe, 0x55, 0x94, 0x35, 0xa1, 0x36, 0xdc, 0x39, 0xe8, 0xee,
0x0e, 0x7e, 0xd6, 0x5e, 0x62, 0xcb, 0x50, 0xef, 0x1f, 0x0c, 0x7b, 0x7b, 0x4f, 0x78, 0xaf, 0x5d,
0xd8, 0xfc, 0x29, 0x34, 0xd2, 0x87, 0x22, 0xd4, 0xb0, 0xdb, 0x3f, 0xe8, 0xb6, 0x97, 0x18, 0x40,
0x75, 0xd8, 0xdb, 0xe3, 0x3d, 0xd4, 0x5b, 0x83, 0xd2, 0x70, 0xb8, 0xdf, 0x2e, 0xe2, 0xac, 0x7b,
0x3b, 0x7b, 0xfb, 0xbd, 0x76, 0x09, 0xc9, 0xc7, 0x8f, 0x0e, 0x1f, 0x0c, 0xdb, 0xe5, 0xcd, 0x8f,
0xe0, 0xca, 0xc2, 0x13, 0x0a, 0x8d, 0xde, 0xdf, 0xe1, 0x3d, 0xd4, 0xd4, 0x84, 0xda, 0x21, 0xef,
0x3f, 0xdd, 0x79, 0xdc, 0x6b, 0x17, 0x50, 0xf0, 0xf9, 0x60, 0xef, 0x61, 0xaf, 0xdb, 0x2e, 0xee,
0x5e, 0xff, 0xea, 0xc5, 0x5a, 0xe1, 0x9b, 0x17, 0x6b, 0x85, 0x6f, 0x5f, 0xac, 0x15, 0xfe, 0xf6,
0x62, 0xad, 0xf0, 0xe5, 0xf7, 0x6b, 0x4b, 0xdf, 0x7c, 0xbf, 0xb6, 0xf4, 0xed, 0xf7, 0x6b, 0x4b,
0x47, 0x55, 0xfa, 0xab, 0xe3, 0xc3, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x2c, 0x4f, 0x06, 0xaa,
0x2a, 0x19, 0x00, 0x00,
}
func (m *Op) Marshal() (dAtA []byte, err error) {
@ -3380,6 +3390,16 @@ func (m *Meta) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if m.RemoveMountStubsRecursive {
i--
if m.RemoveMountStubsRecursive {
dAtA[i] = 1
} else {
dAtA[i] = 0
}
i--
dAtA[i] = 0x58
}
if len(m.CgroupParent) > 0 {
i -= len(m.CgroupParent)
copy(dAtA[i:], m.CgroupParent)
@ -5721,6 +5741,9 @@ func (m *Meta) Size() (n int) {
if l > 0 {
n += 1 + l + sovOps(uint64(l))
}
if m.RemoveMountStubsRecursive {
n += 2
}
return n
}
@ -7774,6 +7797,26 @@ func (m *Meta) Unmarshal(dAtA []byte) error {
}
m.CgroupParent = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 11:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field RemoveMountStubsRecursive", wireType)
}
var v int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowOps
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
v |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
m.RemoveMountStubsRecursive = bool(v != 0)
default:
iNdEx = preIndex
skippy, err := skipOps(dAtA[iNdEx:])

View File

@ -63,6 +63,7 @@ message Meta {
string hostname = 7;
repeated Ulimit ulimit = 9;
string cgroupParent = 10;
bool removeMountStubsRecursive = 11;
}
message HostIP {

View File

@ -1,6 +1,8 @@
package result
import (
"reflect"
pb "github.com/moby/buildkit/frontend/gateway/pb"
digest "github.com/opencontainers/go-digest"
)
@ -15,12 +17,12 @@ var (
AttestationReasonProvenance = []byte("provenance")
)
type Attestation struct {
type Attestation[T any] struct {
Kind pb.AttestationKind
Metadata map[string][]byte
Ref string
Ref T
Path string
ContentFunc func() ([]byte, error)
@ -54,3 +56,23 @@ func FromDigestMap(m map[string]string) []digest.Digest {
}
return ds
}
func ConvertAttestation[U any, V any](a *Attestation[U], fn func(U) (V, error)) (*Attestation[V], error) {
var ref V
if reflect.ValueOf(a.Ref).IsValid() {
var err error
ref, err = fn(a.Ref)
if err != nil {
return nil, err
}
}
return &Attestation[V]{
Kind: a.Kind,
Metadata: a.Metadata,
Ref: ref,
Path: a.Path,
ContentFunc: a.ContentFunc,
InToto: a.InToto,
}, nil
}

View File

@ -2,23 +2,17 @@ package result
import (
"reflect"
"strings"
"sync"
"github.com/moby/buildkit/identity"
"github.com/pkg/errors"
)
const (
attestationRefPrefix = "attestation:"
)
type Result[T any] struct {
mu sync.Mutex
Ref T
Refs map[string]T
Metadata map[string][]byte
Attestations map[string][]Attestation
Attestations map[string][]Attestation[T]
}
func (r *Result[T]) AddMeta(k string, v []byte) {
@ -39,19 +33,10 @@ func (r *Result[T]) AddRef(k string, ref T) {
r.mu.Unlock()
}
func (r *Result[T]) AddAttestation(k string, v Attestation, ref T) {
func (r *Result[T]) AddAttestation(k string, v Attestation[T]) {
r.mu.Lock()
if reflect.ValueOf(ref).IsValid() {
if r.Refs == nil {
r.Refs = map[string]T{}
}
if !strings.HasPrefix(v.Ref, attestationRefPrefix) {
v.Ref = attestationRefPrefix + identity.NewID()
r.Refs[v.Ref] = ref
}
}
if r.Attestations == nil {
r.Attestations = map[string][]Attestation{}
r.Attestations = map[string][]Attestation[T]{}
}
r.Attestations[k] = append(r.Attestations[k], v)
r.mu.Unlock()
@ -72,6 +57,25 @@ func (r *Result[T]) SingleRef() (T, error) {
return r.Ref, nil
}
func (r *Result[T]) FindRef(key string) (T, bool) {
r.mu.Lock()
defer r.mu.Unlock()
if r.Refs != nil {
if ref, ok := r.Refs[key]; ok {
return ref, true
}
if len(r.Refs) == 1 {
for _, ref := range r.Refs {
return ref, true
}
}
var t T
return t, false
}
return r.Ref, true
}
func (r *Result[T]) EachRef(fn func(T) error) (err error) {
if reflect.ValueOf(r.Ref).IsValid() {
err = fn(r.Ref)
@ -83,6 +87,15 @@ func (r *Result[T]) EachRef(fn func(T) error) (err error) {
}
}
}
for _, as := range r.Attestations {
for _, a := range as {
if reflect.ValueOf(a.Ref).IsValid() {
if err1 := fn(a.Ref); err1 != nil && err == nil {
err = err1
}
}
}
}
return err
}
@ -94,12 +107,33 @@ func EachRef[U any, V any](a *Result[U], b *Result[V], fn func(U, V) error) (err
err = fn(a.Ref, b.Ref)
}
for k, r := range a.Refs {
if reflect.ValueOf(r).IsValid() && reflect.ValueOf(b.Refs[k]).IsValid() {
if err1 := fn(r, b.Refs[k]); err1 != nil && err == nil {
r2, ok := b.Refs[k]
if !ok {
continue
}
if reflect.ValueOf(r).IsValid() && reflect.ValueOf(r2).IsValid() {
if err1 := fn(r, r2); err1 != nil && err == nil {
err = err1
}
}
}
for k, atts := range a.Attestations {
atts2, ok := b.Attestations[k]
if !ok {
continue
}
for i, att := range atts {
if i >= len(atts2) {
break
}
att2 := atts2[i]
if reflect.ValueOf(att.Ref).IsValid() && reflect.ValueOf(att2.Ref).IsValid() {
if err1 := fn(att.Ref, att2.Ref); err1 != nil && err == nil {
err = err1
}
}
}
}
return err
}
@ -118,15 +152,28 @@ func ConvertResult[U any, V any](r *Result[U], fn func(U) (V, error)) (*Result[V
r2.Refs = map[string]V{}
}
for k, r := range r.Refs {
if reflect.ValueOf(r).IsValid() {
r2.Refs[k], err = fn(r)
if err != nil {
return nil, err
}
if !reflect.ValueOf(r).IsValid() {
continue
}
r2.Refs[k], err = fn(r)
if err != nil {
return nil, err
}
}
if r.Attestations != nil {
r2.Attestations = map[string][]Attestation[V]{}
}
for k, as := range r.Attestations {
for _, a := range as {
a2, err := ConvertAttestation(&a, fn)
if err != nil {
return nil, err
}
r2.Attestations[k] = append(r2.Attestations[k], *a2)
}
}
r2.Attestations = r.Attestations
r2.Metadata = r.Metadata
return r2, nil

View File

@ -116,6 +116,11 @@ func (e *Encoder) SetMaxDynamicTableSize(v uint32) {
e.dynTab.setMaxSize(v)
}
// MaxDynamicTableSize returns the current dynamic header table size.
func (e *Encoder) MaxDynamicTableSize() (v uint32) {
return e.dynTab.maxSize
}
// SetMaxDynamicTableSizeLimit changes the maximum value that can be
// specified in SetMaxDynamicTableSize to v. By default, it is set to
// 4096, which is the same size of the default dynamic header table

View File

@ -98,6 +98,19 @@ type Server struct {
// the HTTP/2 spec's recommendations.
MaxConcurrentStreams uint32
// MaxDecoderHeaderTableSize optionally specifies the http2
// SETTINGS_HEADER_TABLE_SIZE to send in the initial settings frame. It
// informs the remote endpoint of the maximum size of the header compression
// table used to decode header blocks, in octets. If zero, the default value
// of 4096 is used.
MaxDecoderHeaderTableSize uint32
// MaxEncoderHeaderTableSize optionally specifies an upper limit for the
// header compression table used for encoding request headers. Received
// SETTINGS_HEADER_TABLE_SIZE settings are capped at this limit. If zero,
// the default value of 4096 is used.
MaxEncoderHeaderTableSize uint32
// MaxReadFrameSize optionally specifies the largest frame
// this server is willing to read. A valid value is between
// 16k and 16M, inclusive. If zero or otherwise invalid, a
@ -170,6 +183,20 @@ func (s *Server) maxConcurrentStreams() uint32 {
return defaultMaxStreams
}
func (s *Server) maxDecoderHeaderTableSize() uint32 {
if v := s.MaxDecoderHeaderTableSize; v > 0 {
return v
}
return initialHeaderTableSize
}
func (s *Server) maxEncoderHeaderTableSize() uint32 {
if v := s.MaxEncoderHeaderTableSize; v > 0 {
return v
}
return initialHeaderTableSize
}
// maxQueuedControlFrames is the maximum number of control frames like
// SETTINGS, PING and RST_STREAM that will be queued for writing before
// the connection is closed to prevent memory exhaustion attacks.
@ -394,7 +421,6 @@ func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) {
advMaxStreams: s.maxConcurrentStreams(),
initialStreamSendWindowSize: initialWindowSize,
maxFrameSize: initialMaxFrameSize,
headerTableSize: initialHeaderTableSize,
serveG: newGoroutineLock(),
pushEnabled: true,
sawClientPreface: opts.SawClientPreface,
@ -424,12 +450,13 @@ func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) {
sc.flow.add(initialWindowSize)
sc.inflow.add(initialWindowSize)
sc.hpackEncoder = hpack.NewEncoder(&sc.headerWriteBuf)
sc.hpackEncoder.SetMaxDynamicTableSizeLimit(s.maxEncoderHeaderTableSize())
fr := NewFramer(sc.bw, c)
if s.CountError != nil {
fr.countError = s.CountError
}
fr.ReadMetaHeaders = hpack.NewDecoder(initialHeaderTableSize, nil)
fr.ReadMetaHeaders = hpack.NewDecoder(s.maxDecoderHeaderTableSize(), nil)
fr.MaxHeaderListSize = sc.maxHeaderListSize()
fr.SetMaxReadFrameSize(s.maxReadFrameSize())
sc.framer = fr
@ -559,9 +586,9 @@ type serverConn struct {
streams map[uint32]*stream
initialStreamSendWindowSize int32
maxFrameSize int32
headerTableSize uint32
peerMaxHeaderListSize uint32 // zero means unknown (default)
canonHeader map[string]string // http2-lower-case -> Go-Canonical-Case
canonHeaderKeysSize int // canonHeader keys size in bytes
writingFrame bool // started writing a frame (on serve goroutine or separate)
writingFrameAsync bool // started a frame on its own goroutine but haven't heard back on wroteFrameCh
needsFrameFlush bool // last frame write wasn't a flush
@ -740,6 +767,13 @@ func (sc *serverConn) condlogf(err error, format string, args ...interface{}) {
}
}
// maxCachedCanonicalHeadersKeysSize is an arbitrarily-chosen limit on the size
// of the entries in the canonHeader cache.
// This should be larger than the size of unique, uncommon header keys likely to
// be sent by the peer, while not so high as to permit unreasonable memory usage
// if the peer sends an unbounded number of unique header keys.
const maxCachedCanonicalHeadersKeysSize = 2048
func (sc *serverConn) canonicalHeader(v string) string {
sc.serveG.check()
buildCommonHeaderMapsOnce()
@ -755,14 +789,10 @@ func (sc *serverConn) canonicalHeader(v string) string {
sc.canonHeader = make(map[string]string)
}
cv = http.CanonicalHeaderKey(v)
// maxCachedCanonicalHeaders is an arbitrarily-chosen limit on the number of
// entries in the canonHeader cache. This should be larger than the number
// of unique, uncommon header keys likely to be sent by the peer, while not
// so high as to permit unreasonable memory usage if the peer sends an unbounded
// number of unique header keys.
const maxCachedCanonicalHeaders = 32
if len(sc.canonHeader) < maxCachedCanonicalHeaders {
size := 100 + len(v)*2 // 100 bytes of map overhead + key + value
if sc.canonHeaderKeysSize+size <= maxCachedCanonicalHeadersKeysSize {
sc.canonHeader[v] = cv
sc.canonHeaderKeysSize += size
}
return cv
}
@ -864,6 +894,7 @@ func (sc *serverConn) serve() {
{SettingMaxFrameSize, sc.srv.maxReadFrameSize()},
{SettingMaxConcurrentStreams, sc.advMaxStreams},
{SettingMaxHeaderListSize, sc.maxHeaderListSize()},
{SettingHeaderTableSize, sc.srv.maxDecoderHeaderTableSize()},
{SettingInitialWindowSize, uint32(sc.srv.initialStreamRecvWindowSize())},
},
})
@ -1661,7 +1692,6 @@ func (sc *serverConn) processSetting(s Setting) error {
}
switch s.ID {
case SettingHeaderTableSize:
sc.headerTableSize = s.Val
sc.hpackEncoder.SetMaxDynamicTableSize(s.Val)
case SettingEnablePush:
sc.pushEnabled = s.Val != 0

View File

@ -118,6 +118,28 @@ type Transport struct {
// to mean no limit.
MaxHeaderListSize uint32
// MaxReadFrameSize is the http2 SETTINGS_MAX_FRAME_SIZE to send in the
// initial settings frame. It is the size in bytes of the largest frame
// payload that the sender is willing to receive. If 0, no setting is
// sent, and the value is provided by the peer, which should be 16384
// according to the spec:
// https://datatracker.ietf.org/doc/html/rfc7540#section-6.5.2.
// Values are bounded in the range 16k to 16M.
MaxReadFrameSize uint32
// MaxDecoderHeaderTableSize optionally specifies the http2
// SETTINGS_HEADER_TABLE_SIZE to send in the initial settings frame. It
// informs the remote endpoint of the maximum size of the header compression
// table used to decode header blocks, in octets. If zero, the default value
// of 4096 is used.
MaxDecoderHeaderTableSize uint32
// MaxEncoderHeaderTableSize optionally specifies an upper limit for the
// header compression table used for encoding request headers. Received
// SETTINGS_HEADER_TABLE_SIZE settings are capped at this limit. If zero,
// the default value of 4096 is used.
MaxEncoderHeaderTableSize uint32
// StrictMaxConcurrentStreams controls whether the server's
// SETTINGS_MAX_CONCURRENT_STREAMS should be respected
// globally. If false, new TCP connections are created to the
@ -171,6 +193,19 @@ func (t *Transport) maxHeaderListSize() uint32 {
return t.MaxHeaderListSize
}
func (t *Transport) maxFrameReadSize() uint32 {
if t.MaxReadFrameSize == 0 {
return 0 // use the default provided by the peer
}
if t.MaxReadFrameSize < minMaxFrameSize {
return minMaxFrameSize
}
if t.MaxReadFrameSize > maxFrameSize {
return maxFrameSize
}
return t.MaxReadFrameSize
}
func (t *Transport) disableCompression() bool {
return t.DisableCompression || (t.t1 != nil && t.t1.DisableCompression)
}
@ -293,10 +328,11 @@ type ClientConn struct {
lastActive time.Time
lastIdle time.Time // time last idle
// Settings from peer: (also guarded by wmu)
maxFrameSize uint32
maxConcurrentStreams uint32
peerMaxHeaderListSize uint64
initialWindowSize uint32
maxFrameSize uint32
maxConcurrentStreams uint32
peerMaxHeaderListSize uint64
peerMaxHeaderTableSize uint32
initialWindowSize uint32
// reqHeaderMu is a 1-element semaphore channel controlling access to sending new requests.
// Write to reqHeaderMu to lock it, read from it to unlock.
@ -681,6 +717,20 @@ func (t *Transport) expectContinueTimeout() time.Duration {
return t.t1.ExpectContinueTimeout
}
func (t *Transport) maxDecoderHeaderTableSize() uint32 {
if v := t.MaxDecoderHeaderTableSize; v > 0 {
return v
}
return initialHeaderTableSize
}
func (t *Transport) maxEncoderHeaderTableSize() uint32 {
if v := t.MaxEncoderHeaderTableSize; v > 0 {
return v
}
return initialHeaderTableSize
}
func (t *Transport) NewClientConn(c net.Conn) (*ClientConn, error) {
return t.newClientConn(c, t.disableKeepAlives())
}
@ -721,15 +771,19 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro
})
cc.br = bufio.NewReader(c)
cc.fr = NewFramer(cc.bw, cc.br)
if t.maxFrameReadSize() != 0 {
cc.fr.SetMaxReadFrameSize(t.maxFrameReadSize())
}
if t.CountError != nil {
cc.fr.countError = t.CountError
}
cc.fr.ReadMetaHeaders = hpack.NewDecoder(initialHeaderTableSize, nil)
maxHeaderTableSize := t.maxDecoderHeaderTableSize()
cc.fr.ReadMetaHeaders = hpack.NewDecoder(maxHeaderTableSize, nil)
cc.fr.MaxHeaderListSize = t.maxHeaderListSize()
// TODO: SetMaxDynamicTableSize, SetMaxDynamicTableSizeLimit on
// henc in response to SETTINGS frames?
cc.henc = hpack.NewEncoder(&cc.hbuf)
cc.henc.SetMaxDynamicTableSizeLimit(t.maxEncoderHeaderTableSize())
cc.peerMaxHeaderTableSize = initialHeaderTableSize
if t.AllowHTTP {
cc.nextStreamID = 3
@ -744,9 +798,15 @@ func (t *Transport) newClientConn(c net.Conn, singleUse bool) (*ClientConn, erro
{ID: SettingEnablePush, Val: 0},
{ID: SettingInitialWindowSize, Val: transportDefaultStreamFlow},
}
if max := t.maxFrameReadSize(); max != 0 {
initialSettings = append(initialSettings, Setting{ID: SettingMaxFrameSize, Val: max})
}
if max := t.maxHeaderListSize(); max != 0 {
initialSettings = append(initialSettings, Setting{ID: SettingMaxHeaderListSize, Val: max})
}
if maxHeaderTableSize != initialHeaderTableSize {
initialSettings = append(initialSettings, Setting{ID: SettingHeaderTableSize, Val: maxHeaderTableSize})
}
cc.bw.Write(clientPreface)
cc.fr.WriteSettings(initialSettings...)
@ -2773,8 +2833,10 @@ func (rl *clientConnReadLoop) processSettingsNoWrite(f *SettingsFrame) error {
cc.cond.Broadcast()
cc.initialWindowSize = s.Val
case SettingHeaderTableSize:
cc.henc.SetMaxDynamicTableSize(s.Val)
cc.peerMaxHeaderTableSize = s.Val
default:
// TODO(bradfitz): handle more settings? SETTINGS_HEADER_TABLE_SIZE probably.
cc.vlogf("Unhandled Setting: %v", s)
}
return nil

View File

@ -7,9 +7,11 @@
package execabs
import "strings"
import (
"errors"
"os/exec"
)
func isGo119ErrDot(err error) bool {
// TODO: return errors.Is(err, exec.ErrDot)
return strings.Contains(err.Error(), "current directory")
return errors.Is(err, exec.ErrDot)
}

View File

@ -367,6 +367,7 @@ func NewCallbackCDecl(fn interface{}) uintptr {
//sys IsWindowUnicode(hwnd HWND) (isUnicode bool) = user32.IsWindowUnicode
//sys IsWindowVisible(hwnd HWND) (isVisible bool) = user32.IsWindowVisible
//sys GetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) = user32.GetGUIThreadInfo
//sys GetLargePageMinimum() (size uintptr)
// Volume Management Functions
//sys DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW

View File

@ -252,6 +252,7 @@ var (
procGetFileType = modkernel32.NewProc("GetFileType")
procGetFinalPathNameByHandleW = modkernel32.NewProc("GetFinalPathNameByHandleW")
procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW")
procGetLargePageMinimum = modkernel32.NewProc("GetLargePageMinimum")
procGetLastError = modkernel32.NewProc("GetLastError")
procGetLogicalDriveStringsW = modkernel32.NewProc("GetLogicalDriveStringsW")
procGetLogicalDrives = modkernel32.NewProc("GetLogicalDrives")
@ -2180,6 +2181,12 @@ func GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (
return
}
func GetLargePageMinimum() (size uintptr) {
r0, _, _ := syscall.Syscall(procGetLargePageMinimum.Addr(), 0, 0, 0, 0)
size = uintptr(r0)
return
}
func GetLastError() (lasterr error) {
r0, _, _ := syscall.Syscall(procGetLastError.Addr(), 0, 0, 0, 0)
if r0 != 0 {

View File

@ -37,18 +37,6 @@ const (
unknownClass = ^Class(0)
)
var controlToClass = map[rune]Class{
0x202D: LRO, // LeftToRightOverride,
0x202E: RLO, // RightToLeftOverride,
0x202A: LRE, // LeftToRightEmbedding,
0x202B: RLE, // RightToLeftEmbedding,
0x202C: PDF, // PopDirectionalFormat,
0x2066: LRI, // LeftToRightIsolate,
0x2067: RLI, // RightToLeftIsolate,
0x2068: FSI, // FirstStrongIsolate,
0x2069: PDI, // PopDirectionalIsolate,
}
// A trie entry has the following bits:
// 7..5 XOR mask for brackets
// 4 1: Bracket open, 0: Bracket close

10
vendor/modules.txt vendored
View File

@ -433,7 +433,7 @@ github.com/mitchellh/go-wordwrap
# github.com/mitchellh/mapstructure v1.5.0
## explicit; go 1.14
github.com/mitchellh/mapstructure
# github.com/moby/buildkit v0.11.0-rc1.0.20221207183946-5993b526de65
# github.com/moby/buildkit v0.11.0-rc1.0.20221213104201-93b40706a007
## explicit; go 1.18
github.com/moby/buildkit/api/services/control
github.com/moby/buildkit/api/types
@ -711,7 +711,7 @@ golang.org/x/crypto/ssh
golang.org/x/crypto/ssh/agent
golang.org/x/crypto/ssh/internal/bcrypt_pbkdf
golang.org/x/crypto/ssh/terminal
# golang.org/x/net v0.2.0
# golang.org/x/net v0.4.0
## explicit; go 1.17
golang.org/x/net/context
golang.org/x/net/context/ctxhttp
@ -736,7 +736,7 @@ golang.org/x/oauth2/jwt
## explicit
golang.org/x/sync/errgroup
golang.org/x/sync/semaphore
# golang.org/x/sys v0.2.0
# golang.org/x/sys v0.3.0
## explicit; go 1.17
golang.org/x/sys/cpu
golang.org/x/sys/execabs
@ -745,10 +745,10 @@ golang.org/x/sys/plan9
golang.org/x/sys/unix
golang.org/x/sys/windows
golang.org/x/sys/windows/registry
# golang.org/x/term v0.2.0
# golang.org/x/term v0.3.0
## explicit; go 1.17
golang.org/x/term
# golang.org/x/text v0.4.0
# golang.org/x/text v0.5.0
## explicit; go 1.17
golang.org/x/text/secure/bidirule
golang.org/x/text/transform