Add BuildOptions.Debug for allowing lazy evaluation of ResultHandler

This commit adds BuildOptions.Debug that allows skipping the evaluation of the
ResultHandler. The ResultHandler is created without evaluated, so calling Build
API with this flag always returns an error with the reference ID of that
(errored) ResultHandler. Note that this state of ResultHandler doesn't contain
result nor error so any operation on that ResultHandler will result in an error.

Following commit will allow user to do further operations (e.g. evaluation of a
bulid) using the buildkit client held by that ResultHandler.

Signed-off-by: Kohei Tokunaga <ktokunaga.mail@gmail.com>
pull/1656/head
Kohei Tokunaga 2 years ago
parent 47e34f2684
commit de693264a8
No known key found for this signature in database
GPG Key ID: 6CE0A04690DB3FB3

@ -673,10 +673,10 @@ func toSolveOpt(ctx context.Context, node builder.Node, multiDriver bool, opt Op
} }
func Build(ctx context.Context, nodes []builder.Node, opt map[string]Options, docker *dockerutil.Client, configDir string, w progress.Writer) (resp map[string]*client.SolveResponse, err error) { func Build(ctx context.Context, nodes []builder.Node, opt map[string]Options, docker *dockerutil.Client, configDir string, w progress.Writer) (resp map[string]*client.SolveResponse, err error) {
return BuildWithResultHandler(ctx, nodes, opt, docker, configDir, w, nil) return BuildWithResultHandler(ctx, nodes, opt, docker, configDir, w, nil, false)
} }
func BuildWithResultHandler(ctx context.Context, nodes []builder.Node, opt map[string]Options, docker *dockerutil.Client, configDir string, w progress.Writer, resultHandleFunc func(driverIndex int, rCtx *ResultHandle)) (resp map[string]*client.SolveResponse, err error) { func BuildWithResultHandler(ctx context.Context, nodes []builder.Node, opt map[string]Options, docker *dockerutil.Client, configDir string, w progress.Writer, resultHandleFunc func(driverIndex int, rCtx *ResultHandle) error, noEval bool) (resp map[string]*client.SolveResponse, err error) {
if len(nodes) == 0 { if len(nodes) == 0 {
return nil, errors.Errorf("driver required for build") return nil, errors.Errorf("driver required for build")
} }
@ -943,8 +943,12 @@ func BuildWithResultHandler(ctx context.Context, nodes []builder.Node, opt map[s
var rr *client.SolveResponse var rr *client.SolveResponse
if resultHandleFunc != nil { if resultHandleFunc != nil {
var resultHandle *ResultHandle var resultHandle *ResultHandle
resultHandle, rr, err = NewResultHandle(ctx, cc, so, "buildx", buildFunc, ch) resultHandle, rr, err = NewResultHandle(ctx, cc, so, "buildx", buildFunc, ch, noEval)
resultHandleFunc(dp.driverIndex, resultHandle) if err == nil {
if err := resultHandleFunc(dp.driverIndex, resultHandle); err != nil {
return err
}
}
} else { } else {
rr, err = c.Build(ctx, so, "buildx", buildFunc, ch) rr, err = c.Build(ctx, so, "buildx", buildFunc, ch)
} }

@ -28,7 +28,7 @@ import (
// failures and successes. // failures and successes.
// //
// If the returned ResultHandle is not nil, the caller must call Done() on it. // If the returned ResultHandle is not nil, the caller must call Done() on it.
func NewResultHandle(ctx context.Context, cc *client.Client, opt client.SolveOpt, product string, buildFunc gateway.BuildFunc, ch chan *client.SolveStatus) (*ResultHandle, *client.SolveResponse, error) { func NewResultHandle(ctx context.Context, cc *client.Client, opt client.SolveOpt, product string, buildFunc gateway.BuildFunc, ch chan *client.SolveStatus, noEval bool) (*ResultHandle, *client.SolveResponse, error) {
// Create a new context to wrap the original, and cancel it when the // Create a new context to wrap the original, and cancel it when the
// caller-provided context is cancelled. // caller-provided context is cancelled.
// //
@ -91,13 +91,28 @@ func NewResultHandle(ctx context.Context, cc *client.Client, opt client.SolveOpt
res, err = buildFunc(ctx, c) res, err = buildFunc(ctx, c)
if res != nil && err == nil { if res != nil && err == nil {
// Force evaluation of the build result (otherwise, we likely if noEval {
// won't get a solve error) respHandle = &ResultHandle{
def, err2 := getDefinition(ctx, res) done: make(chan struct{}),
if err2 != nil { gwClient: c,
return nil, err2 gwCtx: ctx,
}
close(done)
// Block until the caller closes the ResultHandle.
select {
case <-respHandle.done:
case <-ctx.Done():
}
} else {
// Force evaluation of the build result (otherwise, we likely
// won't get a solve error)
def, err2 := getDefinition(ctx, res)
if err2 != nil {
return nil, err2
}
res, err = evalDefinition(ctx, c, def)
} }
res, err = evalDefinition(ctx, c, def)
} }
if err != nil { if err != nil {

@ -173,7 +173,7 @@ func RunBuild(ctx context.Context, dockerCli command.Cli, in controllerapi.Build
return nil, nil, err return nil, nil, err
} }
resp, res, err := buildTargets(ctx, dockerCli, b.NodeGroup, nodes, map[string]build.Options{defaultTargetName: opts}, progress, generateResult) resp, res, err := buildTargets(ctx, dockerCli, b.NodeGroup, nodes, map[string]build.Options{defaultTargetName: opts}, progress, generateResult, in.Debug)
err = wrapBuildError(err, false) err = wrapBuildError(err, false)
if err != nil { if err != nil {
// NOTE: buildTargets can return *build.ResultHandle even on error. // NOTE: buildTargets can return *build.ResultHandle even on error.
@ -187,20 +187,24 @@ func RunBuild(ctx context.Context, dockerCli command.Cli, in controllerapi.Build
// NOTE: When an error happens during the build and this function acquires the debuggable *build.ResultHandle, // NOTE: When an error happens during the build and this function acquires the debuggable *build.ResultHandle,
// this function returns it in addition to the error (i.e. it does "return nil, res, err"). The caller can // this function returns it in addition to the error (i.e. it does "return nil, res, err"). The caller can
// inspect the result and debug the cause of that error. // inspect the result and debug the cause of that error.
func buildTargets(ctx context.Context, dockerCli command.Cli, ng *store.NodeGroup, nodes []builder.Node, opts map[string]build.Options, progress progress.Writer, generateResult bool) (*client.SolveResponse, *build.ResultHandle, error) { func buildTargets(ctx context.Context, dockerCli command.Cli, ng *store.NodeGroup, nodes []builder.Node, opts map[string]build.Options, progress progress.Writer, generateResult, debug bool) (*client.SolveResponse, *build.ResultHandle, error) {
var res *build.ResultHandle var res *build.ResultHandle
var resp map[string]*client.SolveResponse var resp map[string]*client.SolveResponse
var err error var err error
if generateResult { if generateResult {
var mu sync.Mutex var mu sync.Mutex
var idx int var idx int
resp, err = build.BuildWithResultHandler(ctx, nodes, opts, dockerutil.NewClient(dockerCli), confutil.ConfigDir(dockerCli), progress, func(driverIndex int, gotRes *build.ResultHandle) { resp, err = build.BuildWithResultHandler(ctx, nodes, opts, dockerutil.NewClient(dockerCli), confutil.ConfigDir(dockerCli), progress, func(driverIndex int, gotRes *build.ResultHandle) error {
mu.Lock() mu.Lock()
defer mu.Unlock() defer mu.Unlock()
if res == nil || driverIndex < idx { if res == nil || driverIndex < idx {
idx, res = driverIndex, gotRes idx, res = driverIndex, gotRes
} }
}) if debug {
return errors.Errorf("debug mode")
}
return nil
}, debug)
} else { } else {
resp, err = build.Build(ctx, nodes, opts, dockerutil.NewClient(dockerCli), confutil.ConfigDir(dockerCli), progress) resp, err = build.Build(ctx, nodes, opts, dockerutil.NewClient(dockerCli), confutil.ConfigDir(dockerCli), progress)
} }

@ -299,6 +299,7 @@ type BuildOptions struct {
ExportPush bool `protobuf:"varint,26,opt,name=ExportPush,proto3" json:"ExportPush,omitempty"` ExportPush bool `protobuf:"varint,26,opt,name=ExportPush,proto3" json:"ExportPush,omitempty"`
ExportLoad bool `protobuf:"varint,27,opt,name=ExportLoad,proto3" json:"ExportLoad,omitempty"` ExportLoad bool `protobuf:"varint,27,opt,name=ExportLoad,proto3" json:"ExportLoad,omitempty"`
SourcePolicy *pb.Policy `protobuf:"bytes,28,opt,name=SourcePolicy,proto3" json:"SourcePolicy,omitempty"` SourcePolicy *pb.Policy `protobuf:"bytes,28,opt,name=SourcePolicy,proto3" json:"SourcePolicy,omitempty"`
Debug bool `protobuf:"varint,29,opt,name=Debug,proto3" json:"Debug,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"` XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"` XXX_sizecache int32 `json:"-"`
@ -524,6 +525,13 @@ func (m *BuildOptions) GetSourcePolicy() *pb.Policy {
return nil return nil
} }
func (m *BuildOptions) GetDebug() bool {
if m != nil {
return m.Debug
}
return false
}
type ExportEntry struct { type ExportEntry struct {
Type string `protobuf:"bytes,1,opt,name=Type,proto3" json:"Type,omitempty"` Type string `protobuf:"bytes,1,opt,name=Type,proto3" json:"Type,omitempty"`
Attrs map[string]string `protobuf:"bytes,2,rep,name=Attrs,proto3" json:"Attrs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` Attrs map[string]string `protobuf:"bytes,2,rep,name=Attrs,proto3" json:"Attrs,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
@ -2046,125 +2054,126 @@ func init() {
func init() { proto.RegisterFile("controller.proto", fileDescriptor_ed7f10298fa1d90f) } func init() { proto.RegisterFile("controller.proto", fileDescriptor_ed7f10298fa1d90f) }
var fileDescriptor_ed7f10298fa1d90f = []byte{ var fileDescriptor_ed7f10298fa1d90f = []byte{
// 1881 bytes of a gzipped FileDescriptorProto // 1895 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0x5f, 0x6f, 0xdb, 0xc8, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x58, 0xef, 0x6e, 0x1b, 0xc7,
0x11, 0x2f, 0x25, 0x59, 0x7f, 0x46, 0x96, 0xe3, 0x6c, 0x9d, 0x74, 0xc3, 0xa4, 0x17, 0x87, 0x49, 0x11, 0xef, 0x89, 0x14, 0xff, 0x0c, 0x45, 0x59, 0xde, 0xca, 0xee, 0xfa, 0xec, 0xc4, 0xf2, 0xd9,
0xae, 0x42, 0x53, 0x48, 0x77, 0xbe, 0xa6, 0xbe, 0x5c, 0xee, 0x80, 0xda, 0xb2, 0x05, 0xfb, 0x90, 0x4e, 0x89, 0xba, 0xa0, 0x12, 0xa5, 0xae, 0xe2, 0x38, 0x01, 0x2a, 0x51, 0x22, 0xa4, 0xc0, 0x96,
0xd8, 0xc6, 0xca, 0xc9, 0xa1, 0x2d, 0xd0, 0x80, 0x92, 0xd6, 0x32, 0x21, 0x8a, 0xab, 0x72, 0x57, 0x84, 0xa5, 0xec, 0xa0, 0x2d, 0xd0, 0xe0, 0x48, 0xae, 0xa8, 0x83, 0x8e, 0xb7, 0xec, 0xed, 0x52,
0xb6, 0xd5, 0xa7, 0xbe, 0xf4, 0xad, 0xe8, 0xf7, 0x28, 0xfa, 0x11, 0xfa, 0xd2, 0x7e, 0xa1, 0xa2, 0x7f, 0xfa, 0xa9, 0x5f, 0xfa, 0xad, 0xe8, 0x7b, 0x14, 0x7d, 0x84, 0x7e, 0xea, 0x4b, 0xf4, 0x31,
0x1f, 0xa1, 0xd8, 0x3f, 0xa4, 0x48, 0x4b, 0x94, 0xed, 0xf6, 0x49, 0x3b, 0xc3, 0xdf, 0x6f, 0x76, 0x8a, 0x3e, 0x42, 0xb1, 0xb3, 0x7b, 0xe4, 0x51, 0xe4, 0x51, 0x52, 0xf3, 0x89, 0x3b, 0x73, 0xbf,
0x67, 0x38, 0x3b, 0x33, 0x14, 0xac, 0xf7, 0x58, 0x20, 0x42, 0xe6, 0xfb, 0x34, 0x6c, 0x8c, 0x43, 0xdf, 0xec, 0xce, 0xdc, 0xec, 0xcc, 0x1c, 0x61, 0xa5, 0x23, 0x22, 0x15, 0x8b, 0x30, 0xe4, 0x71,
0x26, 0x18, 0xda, 0xe8, 0x4e, 0x3c, 0xbf, 0x7f, 0xd5, 0x48, 0x3c, 0xb8, 0xf8, 0xd2, 0x7e, 0x3b, 0x7d, 0x10, 0x0b, 0x25, 0xc8, 0x6a, 0x7b, 0x18, 0x84, 0xdd, 0xcb, 0x7a, 0xea, 0xc1, 0xf9, 0x17,
0xf0, 0xc4, 0xf9, 0xa4, 0xdb, 0xe8, 0xb1, 0x51, 0x73, 0xc4, 0xba, 0xd3, 0xa6, 0x42, 0x0d, 0x3d, 0xee, 0xdb, 0x5e, 0xa0, 0x4e, 0x87, 0xed, 0x7a, 0x47, 0xf4, 0xd7, 0xfb, 0xa2, 0x7d, 0xb5, 0x8e,
0xd1, 0x74, 0xc7, 0x5e, 0x93, 0xd3, 0xf0, 0xc2, 0xeb, 0x51, 0xde, 0x34, 0xa4, 0xe8, 0x57, 0x9b, 0xa8, 0xb3, 0x40, 0xad, 0xfb, 0x83, 0x60, 0x5d, 0xf2, 0xf8, 0x3c, 0xe8, 0x70, 0xb9, 0x6e, 0x49,
0xb4, 0x5f, 0x67, 0x92, 0x39, 0x9b, 0x84, 0x3d, 0x3a, 0x66, 0xbe, 0xd7, 0x9b, 0x36, 0xc7, 0xdd, 0xc9, 0xaf, 0x31, 0xe9, 0xbe, 0xce, 0x24, 0x4b, 0x31, 0x8c, 0x3b, 0x7c, 0x20, 0xc2, 0xa0, 0x73,
0xa6, 0x5e, 0x69, 0x9a, 0x53, 0x87, 0x8d, 0x77, 0x1e, 0x17, 0x27, 0x21, 0xeb, 0x51, 0xce, 0x29, 0xb5, 0x3e, 0x68, 0xaf, 0x9b, 0x95, 0xa1, 0x79, 0x35, 0x58, 0x7d, 0x17, 0x48, 0x75, 0x14, 0x8b,
0x27, 0xf4, 0x0f, 0x13, 0xca, 0x05, 0x5a, 0x87, 0x3c, 0xa1, 0x67, 0xd8, 0xda, 0xb4, 0xea, 0x15, 0x0e, 0x97, 0x92, 0x4b, 0xc6, 0xff, 0x38, 0xe4, 0x52, 0x91, 0x15, 0xc8, 0x31, 0x7e, 0x42, 0x9d,
0x22, 0x97, 0xce, 0x09, 0x3c, 0xb8, 0x86, 0xe4, 0x63, 0x16, 0x70, 0x8a, 0xb6, 0x61, 0xe5, 0x30, 0x35, 0xa7, 0x56, 0x66, 0x7a, 0xe9, 0x1d, 0xc1, 0x83, 0x6b, 0x48, 0x39, 0x10, 0x91, 0xe4, 0x64,
0x38, 0x63, 0x1c, 0x5b, 0x9b, 0xf9, 0x7a, 0x75, 0xeb, 0x59, 0x63, 0x91, 0x73, 0x0d, 0xc3, 0x93, 0x13, 0x16, 0xf7, 0xa3, 0x13, 0x21, 0xa9, 0xb3, 0x96, 0xab, 0x55, 0x36, 0x9e, 0xd5, 0x67, 0x39,
0x48, 0xa2, 0xf1, 0x0e, 0x87, 0x6a, 0x42, 0x8b, 0x9e, 0x40, 0x25, 0x12, 0xf7, 0xcc, 0xc6, 0x33, 0x57, 0xb7, 0x3c, 0x8d, 0x64, 0x06, 0xef, 0x49, 0xa8, 0xa4, 0xb4, 0xe4, 0x09, 0x94, 0x13, 0x71,
0x05, 0x6a, 0xc3, 0xea, 0x61, 0x70, 0xc1, 0x86, 0xb4, 0xc5, 0x82, 0x33, 0x6f, 0x80, 0x73, 0x9b, 0xc7, 0x6e, 0x3c, 0x56, 0x90, 0x26, 0x2c, 0xed, 0x47, 0xe7, 0xe2, 0x8c, 0x37, 0x44, 0x74, 0x12,
0x56, 0xbd, 0xba, 0xe5, 0x2c, 0xde, 0x2c, 0x89, 0x24, 0x29, 0x9e, 0xf3, 0x3d, 0xe0, 0x3d, 0x8f, 0xf4, 0xe8, 0xc2, 0x9a, 0x53, 0xab, 0x6c, 0x78, 0xb3, 0x37, 0x4b, 0x23, 0xd9, 0x04, 0xcf, 0xfb,
0xf7, 0x58, 0x10, 0xd0, 0x5e, 0xe4, 0x4c, 0xa6, 0xd3, 0xe9, 0x33, 0xe5, 0xae, 0x9d, 0xc9, 0x79, 0x0e, 0xe8, 0x4e, 0x20, 0x3b, 0x22, 0x8a, 0x78, 0x27, 0x71, 0x26, 0xd3, 0xe9, 0xc9, 0x33, 0x2d,
0x0c, 0x8f, 0x16, 0xd8, 0xd2, 0x61, 0x71, 0x7e, 0x0f, 0xab, 0xbb, 0xf2, 0x6c, 0xd9, 0xc6, 0xbf, 0x5c, 0x3b, 0x93, 0xf7, 0x18, 0x1e, 0xcd, 0xb0, 0x65, 0xc2, 0xe2, 0xfd, 0x01, 0x96, 0xb6, 0xf5,
0x85, 0xd2, 0xf1, 0x58, 0x78, 0x2c, 0xe0, 0xcb, 0xbd, 0x51, 0x66, 0x0c, 0x92, 0x44, 0x14, 0xe7, 0xd9, 0xb2, 0x8d, 0x7f, 0x03, 0xc5, 0xc3, 0x81, 0x0a, 0x44, 0x24, 0xe7, 0x7b, 0x83, 0x66, 0x2c,
0x9f, 0x55, 0xb3, 0x81, 0x51, 0xa0, 0x4d, 0xa8, 0xb6, 0x58, 0x20, 0xe8, 0x95, 0x38, 0x71, 0xc5, 0x92, 0x25, 0x14, 0xef, 0xdf, 0x15, 0xbb, 0x81, 0x55, 0x90, 0x35, 0xa8, 0x34, 0x44, 0xa4, 0xf8,
0xb9, 0xd9, 0x28, 0xa9, 0x42, 0x9f, 0xc3, 0xda, 0x1e, 0xeb, 0x0d, 0x69, 0x78, 0xe6, 0xf9, 0xf4, 0xa5, 0x3a, 0xf2, 0xd5, 0xa9, 0xdd, 0x28, 0xad, 0x22, 0x9f, 0xc1, 0xf2, 0x8e, 0xe8, 0x9c, 0xf1,
0xc8, 0x1d, 0x51, 0xe3, 0xd2, 0x35, 0x2d, 0xfa, 0x4e, 0x7a, 0xed, 0x05, 0xa2, 0x3d, 0x09, 0x7a, 0xf8, 0x24, 0x08, 0xf9, 0x81, 0xdf, 0xe7, 0xd6, 0xa5, 0x6b, 0x5a, 0xf2, 0xad, 0xf6, 0x3a, 0x88,
0x38, 0xaf, 0x8e, 0xf6, 0x34, 0xeb, 0xad, 0x1a, 0x18, 0x99, 0x31, 0xd0, 0xef, 0xa0, 0x26, 0xcd, 0x54, 0x73, 0x18, 0x75, 0x68, 0x0e, 0x8f, 0xf6, 0x34, 0xeb, 0xad, 0x5a, 0x18, 0x1b, 0x33, 0xc8,
0xf4, 0xcd, 0xd6, 0x1c, 0x17, 0x54, 0x62, 0xbc, 0xbe, 0xd9, 0xbb, 0x46, 0x8a, 0xb7, 0x1f, 0x88, 0xef, 0xa1, 0xaa, 0xcd, 0x74, 0xed, 0xd6, 0x92, 0xe6, 0x31, 0x31, 0x5e, 0xdf, 0xec, 0x5d, 0x7d,
0x70, 0x4a, 0xd2, 0xb6, 0xd0, 0x06, 0xac, 0xec, 0xf8, 0x3e, 0xbb, 0xc4, 0x2b, 0x9b, 0xf9, 0x7a, 0x82, 0xb7, 0x1b, 0xa9, 0xf8, 0x8a, 0x4d, 0xda, 0x22, 0xab, 0xb0, 0xb8, 0x15, 0x86, 0xe2, 0x82,
0x85, 0x68, 0x01, 0xfd, 0x0a, 0x4a, 0x3b, 0x42, 0x50, 0x2e, 0x38, 0x2e, 0xaa, 0xcd, 0x9e, 0x2c, 0x2e, 0xae, 0xe5, 0x6a, 0x65, 0x66, 0x04, 0xf2, 0x6b, 0x28, 0x6e, 0x29, 0xc5, 0xa5, 0x92, 0xb4,
0xde, 0x4c, 0x83, 0x48, 0x04, 0x46, 0xc7, 0x50, 0x51, 0xfb, 0xef, 0x84, 0x03, 0x8e, 0x4b, 0x8a, 0x80, 0x9b, 0x3d, 0x99, 0xbd, 0x99, 0x01, 0xb1, 0x04, 0x4c, 0x0e, 0xa1, 0x8c, 0xfb, 0x6f, 0xc5,
0xf9, 0xe5, 0x2d, 0x8e, 0x19, 0x73, 0xf4, 0x11, 0x67, 0x36, 0xd0, 0x3e, 0x54, 0x5a, 0x6e, 0xef, 0x3d, 0x49, 0x8b, 0xc8, 0xfc, 0xe2, 0x16, 0xc7, 0x1c, 0x71, 0xcc, 0x11, 0xc7, 0x36, 0xc8, 0x2e,
0x9c, 0xb6, 0x43, 0x36, 0xc2, 0x65, 0x65, 0xf0, 0x67, 0x8b, 0x0d, 0x2a, 0x98, 0x31, 0x68, 0xcc, 0x94, 0x1b, 0x7e, 0xe7, 0x94, 0x37, 0x63, 0xd1, 0xa7, 0x25, 0x34, 0xf8, 0xf3, 0xd9, 0x06, 0x11,
0xc4, 0x4c, 0xb4, 0x03, 0x25, 0x25, 0x9c, 0x32, 0x5c, 0xb9, 0x9b, 0x91, 0x88, 0x87, 0x1c, 0x58, 0x66, 0x0d, 0x5a, 0x33, 0x23, 0x26, 0xd9, 0x82, 0x22, 0x0a, 0xc7, 0x82, 0x96, 0xef, 0x66, 0x24,
0x6d, 0x0d, 0x42, 0x36, 0x19, 0x9f, 0xb8, 0x21, 0x0d, 0x04, 0x06, 0xf5, 0xaa, 0x53, 0x3a, 0xf4, 0xe1, 0x11, 0x0f, 0x96, 0x1a, 0xbd, 0x58, 0x0c, 0x07, 0x47, 0x7e, 0xcc, 0x23, 0x45, 0x01, 0x5f,
0x16, 0x4a, 0xfb, 0x57, 0x63, 0x16, 0x0a, 0x8e, 0xab, 0xcb, 0x2e, 0xaf, 0x06, 0x99, 0x0d, 0x0c, 0xf5, 0x84, 0x8e, 0xbc, 0x85, 0xe2, 0xee, 0xe5, 0x40, 0xc4, 0x4a, 0xd2, 0xca, 0xbc, 0xcb, 0x6b,
0x03, 0x7d, 0x06, 0xb0, 0x7f, 0x25, 0x42, 0xf7, 0x80, 0xc9, 0xb0, 0xaf, 0xaa, 0xd7, 0x91, 0xd0, 0x40, 0x76, 0x03, 0xcb, 0x20, 0x9f, 0x02, 0xec, 0x5e, 0xaa, 0xd8, 0xdf, 0x13, 0x3a, 0xec, 0x4b,
0xa0, 0x36, 0x14, 0xdf, 0xb9, 0x5d, 0xea, 0x73, 0x5c, 0x53, 0xb6, 0x1b, 0xb7, 0x08, 0xac, 0x26, 0xf8, 0x3a, 0x52, 0x1a, 0xd2, 0x84, 0xc2, 0x3b, 0xbf, 0xcd, 0x43, 0x49, 0xab, 0x68, 0xbb, 0x7e,
0xe8, 0x8d, 0x0c, 0x5b, 0xe6, 0xf5, 0x11, 0x15, 0x97, 0x2c, 0x1c, 0xbe, 0x67, 0x7d, 0x8a, 0xd7, 0x8b, 0xc0, 0x1a, 0x82, 0xd9, 0xc8, 0xb2, 0x75, 0x5e, 0x1f, 0x70, 0x75, 0x21, 0xe2, 0xb3, 0xf7,
0x74, 0x5e, 0x27, 0x54, 0xe8, 0x05, 0xd4, 0x8e, 0x98, 0x0e, 0x9e, 0xe7, 0x0b, 0x1a, 0xe2, 0x7b, 0xa2, 0xcb, 0xe9, 0xb2, 0xc9, 0xeb, 0x94, 0x8a, 0xbc, 0x80, 0xea, 0x81, 0x30, 0xc1, 0x0b, 0x42,
0xea, 0x30, 0x69, 0xa5, 0xba, 0xcb, 0xbe, 0x2b, 0xce, 0x58, 0x38, 0xe2, 0x78, 0x5d, 0x21, 0x66, 0xc5, 0x63, 0x7a, 0x0f, 0x0f, 0x33, 0xa9, 0xc4, 0xbb, 0x1c, 0xfa, 0xea, 0x44, 0xc4, 0x7d, 0x49,
0x0a, 0x99, 0x41, 0x1d, 0xda, 0x0b, 0xa9, 0xe0, 0xf8, 0xfe, 0xb2, 0x0c, 0xd2, 0x20, 0x12, 0x81, 0x57, 0x10, 0x31, 0x56, 0xe8, 0x0c, 0x6a, 0xf1, 0x4e, 0xcc, 0x95, 0xa4, 0xf7, 0xe7, 0x65, 0x90,
0x11, 0x86, 0x52, 0xe7, 0x7c, 0xd4, 0xf1, 0xfe, 0x48, 0x31, 0xda, 0xb4, 0xea, 0x79, 0x12, 0x89, 0x01, 0xb1, 0x04, 0x4c, 0x28, 0x14, 0x5b, 0xa7, 0xfd, 0x56, 0xf0, 0x27, 0x4e, 0xc9, 0x9a, 0x53,
0xe8, 0x15, 0xe4, 0x3b, 0x9d, 0x03, 0xfc, 0x63, 0x65, 0xed, 0x51, 0x86, 0xb5, 0xce, 0x01, 0x91, 0xcb, 0xb1, 0x44, 0x24, 0xaf, 0x20, 0xd7, 0x6a, 0xed, 0xd1, 0x9f, 0xa2, 0xb5, 0x47, 0x19, 0xd6,
0x28, 0x84, 0xa0, 0x70, 0xea, 0x0e, 0x38, 0xde, 0x50, 0xe7, 0x52, 0x6b, 0xf4, 0x10, 0x8a, 0xa7, 0x5a, 0x7b, 0x4c, 0xa3, 0x08, 0x81, 0xfc, 0xb1, 0xdf, 0x93, 0x74, 0x15, 0xcf, 0x85, 0x6b, 0xf2,
0x6e, 0x38, 0xa0, 0x02, 0x3f, 0x50, 0x3e, 0x1b, 0x09, 0xbd, 0x81, 0xd2, 0x07, 0xdf, 0x1b, 0x79, 0x10, 0x0a, 0xc7, 0x7e, 0xdc, 0xe3, 0x8a, 0x3e, 0x40, 0x9f, 0xad, 0x44, 0xde, 0x40, 0xf1, 0x43,
0x82, 0xe3, 0x87, 0xcb, 0x2e, 0xa7, 0x06, 0x1d, 0x8f, 0x05, 0x89, 0xf0, 0xf2, 0xb4, 0x2a, 0xde, 0x18, 0xf4, 0x03, 0x25, 0xe9, 0xc3, 0x79, 0x97, 0xd3, 0x80, 0x0e, 0x07, 0x8a, 0x25, 0x78, 0x7d,
0x34, 0xc4, 0x3f, 0x51, 0x36, 0x23, 0x51, 0x3e, 0x31, 0xe1, 0xc2, 0x78, 0xd3, 0xaa, 0x97, 0x49, 0x5a, 0x8c, 0x37, 0x8f, 0xe9, 0xcf, 0xd0, 0x66, 0x22, 0xea, 0x27, 0x36, 0x5c, 0x94, 0xae, 0x39,
0x24, 0xca, 0xa3, 0x9d, 0x4c, 0x7c, 0x1f, 0x3f, 0x52, 0x6a, 0xb5, 0xd6, 0xef, 0x5e, 0xa6, 0xc1, 0xb5, 0x12, 0x4b, 0x44, 0x7d, 0xb4, 0xa3, 0x61, 0x18, 0xd2, 0x47, 0xa8, 0xc6, 0xb5, 0x79, 0xf7,
0xc9, 0x84, 0x9f, 0x63, 0x5b, 0x3d, 0x49, 0x68, 0x66, 0xcf, 0xdf, 0x31, 0xb7, 0x8f, 0x1f, 0x27, 0x3a, 0x0d, 0x8e, 0x86, 0xf2, 0x94, 0xba, 0xf8, 0x24, 0xa5, 0x19, 0x3f, 0x7f, 0x27, 0xfc, 0x2e,
0x9f, 0x4b, 0x0d, 0x3a, 0x84, 0xd5, 0x8e, 0x6a, 0x4b, 0x27, 0xaa, 0x19, 0xe1, 0x27, 0xca, 0x8f, 0x7d, 0x9c, 0x7e, 0xae, 0x35, 0x64, 0x1f, 0x96, 0x5a, 0xd8, 0x96, 0x8e, 0xb0, 0x19, 0xd1, 0x27,
0x97, 0x0d, 0xd9, 0xb9, 0x1a, 0x51, 0xe7, 0x92, 0x3e, 0x24, 0x9b, 0x57, 0x43, 0x83, 0x49, 0x8a, 0xe8, 0xc7, 0xcb, 0xba, 0xee, 0x5c, 0xf5, 0xa4, 0x73, 0x69, 0x1f, 0xd2, 0xcd, 0xab, 0x6e, 0xc0,
0x6a, 0xff, 0x1a, 0xd0, 0x7c, 0xd5, 0x90, 0xd5, 0x76, 0x48, 0xa7, 0x51, 0xb5, 0x1d, 0xd2, 0xa9, 0x6c, 0x82, 0xaa, 0x0b, 0xc2, 0x0e, 0x6f, 0x0f, 0x7b, 0xf4, 0x13, 0xdc, 0xc5, 0x08, 0xee, 0x6f,
0x2c, 0x1c, 0x17, 0xae, 0x3f, 0x89, 0x6a, 0x9e, 0x16, 0xbe, 0xc9, 0x7d, 0x6d, 0xd9, 0xdf, 0xc2, 0x80, 0x4c, 0xd7, 0x12, 0x5d, 0x83, 0xcf, 0xf8, 0x55, 0x52, 0x83, 0xcf, 0x38, 0xb2, 0xcf, 0xfd,
0x5a, 0xfa, 0x42, 0xdf, 0x89, 0xfd, 0x06, 0xaa, 0x89, 0xac, 0xbd, 0x0b, 0xd5, 0xf9, 0x97, 0x05, 0x70, 0x98, 0x54, 0x42, 0x23, 0x7c, 0xbd, 0xf0, 0x95, 0xe3, 0x7e, 0x03, 0xcb, 0x93, 0xd7, 0xfc,
0xd5, 0xc4, 0xd5, 0x52, 0x49, 0x30, 0x1d, 0x53, 0x43, 0x56, 0x6b, 0xb4, 0x0b, 0x2b, 0x3b, 0x42, 0x4e, 0xec, 0x37, 0x50, 0x49, 0xe5, 0xf2, 0x5d, 0xa8, 0xde, 0xbf, 0x1c, 0xa8, 0xa4, 0x2e, 0x1c,
0x84, 0xb2, 0x45, 0xc8, 0x3c, 0xfa, 0xc5, 0x8d, 0x17, 0xb4, 0xa1, 0xe0, 0xfa, 0x0a, 0x69, 0xaa, 0xa6, 0xc6, 0xd5, 0x80, 0x5b, 0x32, 0xae, 0xc9, 0x36, 0x2c, 0x6e, 0x29, 0x15, 0xeb, 0xc6, 0xa1,
0xbc, 0x41, 0x7b, 0x94, 0x0b, 0x2f, 0x70, 0xe5, 0x2d, 0x53, 0x15, 0xbd, 0x42, 0x92, 0x2a, 0xfb, 0xb3, 0xeb, 0x97, 0x37, 0x5e, 0xdb, 0x3a, 0xc2, 0xcd, 0xc5, 0x32, 0x54, 0x7d, 0xaf, 0x76, 0xb8,
0x6b, 0x80, 0x19, 0xed, 0x4e, 0x3e, 0xfc, 0xdd, 0x82, 0xfb, 0x73, 0x55, 0x68, 0xa1, 0x27, 0x07, 0x54, 0x41, 0xe4, 0xeb, 0xbb, 0x87, 0x75, 0xbe, 0xcc, 0xd2, 0x2a, 0xf7, 0x2b, 0x80, 0x31, 0xed,
0x69, 0x4f, 0xb6, 0x6e, 0x59, 0xd1, 0xe6, 0xfd, 0xf9, 0x3f, 0x4e, 0x7b, 0x04, 0x45, 0x5d, 0xfa, 0x4e, 0x3e, 0xfc, 0xc3, 0x81, 0xfb, 0x53, 0xb5, 0x69, 0xa6, 0x27, 0x7b, 0x93, 0x9e, 0x6c, 0xdc,
0x17, 0x9e, 0xd0, 0x86, 0xf2, 0x9e, 0xc7, 0xdd, 0xae, 0x4f, 0xfb, 0x8a, 0x5a, 0x26, 0xb1, 0xac, 0xb2, 0xce, 0x4d, 0xfb, 0xf3, 0x23, 0x4e, 0x7b, 0x00, 0x05, 0xd3, 0x10, 0x66, 0x9e, 0xd0, 0x85,
0xfa, 0x8e, 0x3a, 0xbd, 0x8e, 0x9e, 0x16, 0x1c, 0x7d, 0xc7, 0xd1, 0x1a, 0xe4, 0xe2, 0x99, 0x25, 0xd2, 0x4e, 0x20, 0xfd, 0x76, 0xc8, 0xbb, 0x48, 0x2d, 0xb1, 0x91, 0x8c, 0xdd, 0x08, 0x4f, 0x6f,
0x77, 0xb8, 0x27, 0xc1, 0xb2, 0xe1, 0x6a, 0x57, 0x2b, 0x44, 0x0b, 0x4e, 0x1b, 0x8a, 0xba, 0x6a, 0xa2, 0x67, 0x04, 0xcf, 0xdc, 0x7c, 0xb2, 0x0c, 0x0b, 0xa3, 0x49, 0x66, 0x61, 0x7f, 0x47, 0x83,
0xcc, 0xe1, 0x6d, 0x28, 0xb7, 0x3d, 0x9f, 0xaa, 0xbe, 0xad, 0xcf, 0x1c, 0xcb, 0xd2, 0xbd, 0xfd, 0x75, 0x1b, 0x36, 0xae, 0x96, 0x99, 0x11, 0xbc, 0x26, 0x14, 0x4c, 0x2d, 0x99, 0xc2, 0xbb, 0x50,
0xe0, 0xc2, 0x6c, 0x2b, 0x97, 0xce, 0x76, 0xa2, 0x3d, 0x4b, 0x3f, 0x54, 0x27, 0x37, 0x7e, 0xa8, 0x6a, 0x06, 0x21, 0xc7, 0x6e, 0x6e, 0xce, 0x3c, 0x92, 0xb5, 0x7b, 0xbb, 0xd1, 0xb9, 0xdd, 0x56,
0xfe, 0xfd, 0x10, 0x8a, 0x6d, 0x16, 0x8e, 0x5c, 0x61, 0x8c, 0x19, 0xc9, 0x71, 0x60, 0xed, 0x30, 0x2f, 0xbd, 0xcd, 0x54, 0xd3, 0xd6, 0x7e, 0x60, 0x7f, 0xb7, 0x7e, 0x60, 0x57, 0x7f, 0x08, 0x85,
0xe0, 0x63, 0xda, 0x13, 0xd9, 0x63, 0xde, 0x31, 0xdc, 0x8b, 0x31, 0x66, 0xc0, 0x4b, 0xcc, 0x29, 0xa6, 0x88, 0xfb, 0xbe, 0xb2, 0xc6, 0xac, 0xe4, 0x79, 0xb0, 0xbc, 0x1f, 0xc9, 0x01, 0xef, 0xa8,
0xd6, 0xdd, 0xe7, 0x94, 0xbf, 0x59, 0x50, 0x89, 0x2b, 0x11, 0x6a, 0x41, 0x51, 0xbd, 0x8d, 0x68, 0xec, 0xe1, 0xef, 0x10, 0xee, 0x8d, 0x30, 0x76, 0xec, 0x4b, 0x4d, 0x2f, 0xce, 0xdd, 0xa7, 0x97,
0x5a, 0x7c, 0x75, 0x43, 0xe9, 0x6a, 0x7c, 0x54, 0x68, 0xd3, 0x11, 0x34, 0xd5, 0xfe, 0x01, 0xaa, 0xbf, 0x3b, 0x50, 0x1e, 0xd5, 0x27, 0xd2, 0x80, 0x02, 0xbe, 0x8d, 0x64, 0x86, 0x7c, 0x75, 0x43,
0x09, 0xf5, 0x82, 0x04, 0xd8, 0x4a, 0x26, 0x40, 0x66, 0x29, 0xd7, 0x9b, 0x24, 0xd3, 0x63, 0x0f, 0x41, 0xab, 0x7f, 0x44, 0xb4, 0xed, 0x13, 0x86, 0xea, 0x7e, 0x0f, 0x95, 0x94, 0x7a, 0x46, 0x02,
0x8a, 0x5a, 0xb9, 0x30, 0xac, 0x08, 0x0a, 0x07, 0x6e, 0xa8, 0x53, 0x23, 0x4f, 0xd4, 0x5a, 0xea, 0x6c, 0xa4, 0x13, 0x20, 0xb3, 0xc0, 0x9b, 0x4d, 0xd2, 0xe9, 0xb1, 0x03, 0x05, 0xa3, 0x9c, 0x19,
0x3a, 0xec, 0x4c, 0xa8, 0xd7, 0x93, 0x27, 0x6a, 0xed, 0xfc, 0xc3, 0x82, 0x9a, 0x19, 0xfd, 0x4c, 0x56, 0x02, 0xf9, 0x3d, 0x3f, 0x36, 0xa9, 0x91, 0x63, 0xb8, 0xd6, 0xba, 0x96, 0x38, 0x51, 0xf8,
0x04, 0x29, 0xac, 0xeb, 0x1b, 0x4a, 0xc3, 0x48, 0x67, 0xfc, 0x7f, 0xb3, 0x24, 0x94, 0x11, 0xb4, 0x7a, 0x72, 0x0c, 0xd7, 0xde, 0x3f, 0x1d, 0xa8, 0xda, 0x81, 0xd0, 0x46, 0x90, 0xc3, 0x8a, 0xb9,
0x71, 0x9d, 0xab, 0xa3, 0x31, 0x67, 0xd2, 0x6e, 0xc1, 0x83, 0x85, 0xd0, 0x3b, 0x5d, 0x91, 0x97, 0xa1, 0x3c, 0x4e, 0x74, 0xd6, 0xff, 0x37, 0x73, 0x42, 0x99, 0x40, 0xeb, 0xd7, 0xb9, 0x26, 0x1a,
0x70, 0x7f, 0x36, 0xd4, 0x66, 0xe7, 0xc9, 0x06, 0xa0, 0x24, 0xcc, 0x0c, 0xbd, 0x4f, 0xa1, 0x2a, 0x53, 0x26, 0xdd, 0x06, 0x3c, 0x98, 0x09, 0xbd, 0xd3, 0x15, 0x79, 0x09, 0xf7, 0xc7, 0xa3, 0x6e,
0x3f, 0x12, 0xb2, 0x69, 0x0e, 0xac, 0x6a, 0x80, 0x89, 0x0c, 0x82, 0xc2, 0x90, 0x4e, 0x75, 0x36, 0x76, 0x9e, 0xac, 0x02, 0x49, 0xc3, 0xec, 0x28, 0xfc, 0x14, 0x2a, 0xfa, 0xd3, 0x21, 0x9b, 0xe6,
0x54, 0x88, 0x5a, 0x3b, 0x7f, 0xb5, 0xe4, 0xac, 0x3f, 0x9e, 0x88, 0xf7, 0x94, 0x73, 0x77, 0x20, 0xc1, 0x92, 0x01, 0xd8, 0xc8, 0x10, 0xc8, 0x9f, 0xf1, 0x2b, 0x93, 0x0d, 0x65, 0x86, 0x6b, 0xef,
0x13, 0xb0, 0x70, 0x18, 0x78, 0xc2, 0x64, 0xdf, 0xe7, 0x59, 0x33, 0xff, 0x78, 0x22, 0x24, 0xcc, 0x6f, 0x8e, 0xfe, 0x02, 0x18, 0x0c, 0xd5, 0x7b, 0x2e, 0xa5, 0xdf, 0xd3, 0x09, 0x98, 0xdf, 0x8f,
0xb0, 0x0e, 0x7e, 0x44, 0x14, 0x0b, 0x6d, 0x43, 0x61, 0xcf, 0x15, 0xae, 0xc9, 0x85, 0x8c, 0x09, 0x02, 0x65, 0xb3, 0xef, 0xb3, 0xac, 0x2f, 0x81, 0xc1, 0x50, 0x69, 0x98, 0x65, 0xed, 0xfd, 0x84,
0x47, 0x22, 0x12, 0x44, 0x29, 0xee, 0x96, 0xe4, 0x87, 0xcd, 0x78, 0x22, 0x9c, 0x17, 0xb0, 0x7e, 0x21, 0x8b, 0x6c, 0x42, 0x7e, 0xc7, 0x57, 0xbe, 0xcd, 0x85, 0x8c, 0xb9, 0x47, 0x23, 0x52, 0x44,
0xdd, 0xfa, 0x02, 0xd7, 0xbe, 0x82, 0x6a, 0xc2, 0x8a, 0xba, 0xb7, 0xc7, 0x6d, 0x05, 0x28, 0x13, 0x2d, 0x6e, 0x17, 0xf5, 0xe7, 0xce, 0x60, 0xa8, 0xbc, 0x17, 0xb0, 0x72, 0xdd, 0xfa, 0x0c, 0xd7,
0xb9, 0x94, 0xbe, 0xc6, 0x07, 0x59, 0xd5, 0x7b, 0x38, 0xf7, 0xa0, 0xa6, 0x4c, 0xc7, 0x11, 0xfc, 0xbe, 0x84, 0x4a, 0xca, 0x0a, 0xde, 0xdb, 0xc3, 0x26, 0x02, 0x4a, 0x4c, 0x2f, 0xb5, 0xaf, 0xa3,
0x53, 0x0e, 0x4a, 0x91, 0x89, 0xed, 0x94, 0xdf, 0xcf, 0xb2, 0xfc, 0x9e, 0x77, 0xf9, 0x35, 0x14, 0x83, 0x2c, 0x99, 0x3d, 0xbc, 0x7b, 0x50, 0x45, 0xd3, 0xa3, 0x08, 0xfe, 0x79, 0x01, 0x8a, 0x89,
0x64, 0xfd, 0x30, 0x2e, 0x67, 0x8c, 0x07, 0xed, 0x7e, 0x82, 0x26, 0xe1, 0xe8, 0x3b, 0x28, 0x12, 0x89, 0xcd, 0x09, 0xbf, 0x9f, 0x65, 0xf9, 0x3d, 0xed, 0xf2, 0x6b, 0xc8, 0xeb, 0xfa, 0x61, 0x5d,
0xca, 0xe5, 0x28, 0xa3, 0x87, 0xfe, 0xe7, 0x8b, 0x89, 0x1a, 0x33, 0x23, 0x1b, 0x92, 0xa4, 0x77, 0xce, 0x18, 0x1a, 0x9a, 0xdd, 0x14, 0x4d, 0xc3, 0xc9, 0xb7, 0x50, 0x60, 0x5c, 0xea, 0x01, 0xc7,
0xbc, 0x41, 0xe0, 0xfa, 0xb8, 0xb0, 0x8c, 0xae, 0x31, 0x09, 0xba, 0x56, 0xcc, 0xc2, 0xfd, 0x67, 0x7c, 0x0a, 0x3c, 0x9f, 0x4d, 0x34, 0x98, 0x31, 0xd9, 0x92, 0x34, 0xbd, 0x15, 0xf4, 0x22, 0x3f,
0x0b, 0xaa, 0x4b, 0x43, 0xbd, 0xfc, 0xb3, 0x6c, 0xee, 0x53, 0x31, 0xff, 0x3f, 0x7e, 0x2a, 0xfe, 0xa4, 0xf9, 0x79, 0x74, 0x83, 0x49, 0xd1, 0x8d, 0x62, 0x1c, 0xee, 0xbf, 0x38, 0x50, 0x99, 0x1b,
0xdb, 0x4a, 0x1b, 0x52, 0x53, 0x8d, 0xbc, 0x4f, 0x63, 0xe6, 0x05, 0xc2, 0xa4, 0x6c, 0x42, 0x23, 0xea, 0xf9, 0x1f, 0x6b, 0x53, 0x1f, 0x90, 0xb9, 0xff, 0xf3, 0x03, 0xf2, 0x3f, 0xce, 0xa4, 0x21,
0x0f, 0xda, 0x1a, 0xf5, 0x4d, 0xd1, 0x97, 0xcb, 0x59, 0xf1, 0xce, 0x9b, 0xe2, 0x2d, 0x93, 0xe0, 0x9c, 0x75, 0xf4, 0x7d, 0x1a, 0x88, 0x20, 0x52, 0x36, 0x65, 0x53, 0x1a, 0x7d, 0xd0, 0x46, 0xbf,
0x03, 0xa7, 0xa1, 0x0a, 0x51, 0x85, 0xa8, 0xb5, 0xac, 0xd7, 0x47, 0x4c, 0x69, 0x57, 0x54, 0xb6, 0x6b, 0x8b, 0xbe, 0x5e, 0x8e, 0x8b, 0x77, 0xce, 0x16, 0x6f, 0x9d, 0x04, 0x1f, 0x24, 0x8f, 0x31,
0x18, 0x49, 0xd9, 0xbb, 0xec, 0xe3, 0xa2, 0x76, 0xbc, 0x75, 0xa9, 0xba, 0xd0, 0x11, 0x93, 0xba, 0x44, 0x65, 0x86, 0x6b, 0x5d, 0xaf, 0x0f, 0x04, 0x6a, 0x17, 0x31, 0x5b, 0xac, 0x84, 0xf6, 0x2e,
0x92, 0x02, 0x6a, 0x41, 0xe2, 0x4e, 0xc5, 0x14, 0x97, 0x75, 0xaa, 0x9d, 0x8a, 0xa9, 0x6c, 0x28, 0xba, 0xb4, 0x60, 0x1c, 0x6f, 0x5c, 0x60, 0x17, 0x3a, 0x10, 0x5a, 0x57, 0x34, 0x23, 0x10, 0x0a,
0x84, 0xf9, 0x7e, 0xd7, 0xed, 0x0d, 0x71, 0x45, 0x77, 0xb2, 0x48, 0x96, 0x93, 0x9e, 0x8c, 0xae, 0x1a, 0x77, 0xac, 0xae, 0x68, 0xc9, 0xa4, 0xda, 0xb1, 0xba, 0xd2, 0x0d, 0x85, 0x89, 0x30, 0x6c,
0xe7, 0xfa, 0xea, 0x9b, 0xa0, 0x4c, 0x22, 0xd1, 0xd9, 0x81, 0x4a, 0x9c, 0x14, 0xb2, 0x47, 0xb5, 0xfb, 0x9d, 0x33, 0x5a, 0x36, 0x9d, 0x2c, 0x91, 0xf5, 0xfc, 0xa7, 0xa3, 0x1b, 0xf8, 0x21, 0x7e,
0xfb, 0x2a, 0xe8, 0x35, 0x92, 0x6b, 0xf7, 0xa3, 0x7c, 0xce, 0xcd, 0xe7, 0x73, 0x3e, 0x91, 0xcf, 0x29, 0x94, 0x58, 0x22, 0x7a, 0x5b, 0x50, 0x1e, 0x25, 0x85, 0xee, 0x51, 0xcd, 0x2e, 0x06, 0xbd,
0xdb, 0x50, 0x4b, 0xa5, 0x87, 0x04, 0x11, 0x76, 0xc9, 0x8d, 0x21, 0xb5, 0x96, 0xba, 0x16, 0xf3, 0xca, 0x16, 0x9a, 0xdd, 0x24, 0x9f, 0x17, 0xa6, 0xf3, 0x39, 0x97, 0xca, 0xe7, 0x4d, 0xa8, 0x4e,
0xf5, 0x57, 0x6f, 0x8d, 0xa8, 0xb5, 0xf3, 0x1c, 0x6a, 0xa9, 0xc4, 0x58, 0x54, 0x81, 0x9d, 0x67, 0xa4, 0x87, 0x06, 0x31, 0x71, 0x21, 0xad, 0x21, 0x5c, 0x6b, 0x5d, 0x43, 0x84, 0xe6, 0x5b, 0xb8,
0x50, 0xeb, 0x08, 0x57, 0x4c, 0x96, 0xfc, 0x4d, 0xf1, 0x1f, 0x0b, 0xd6, 0x22, 0x8c, 0xa9, 0x31, 0xca, 0x70, 0xed, 0x3d, 0x87, 0xea, 0x44, 0x62, 0xcc, 0xaa, 0xc0, 0xde, 0x33, 0xa8, 0xb6, 0x94,
0xbf, 0x84, 0xf2, 0x05, 0x0d, 0x05, 0xbd, 0x8a, 0xbb, 0x0e, 0x9e, 0x1f, 0x34, 0x3f, 0x2a, 0x04, 0xaf, 0x86, 0x73, 0xfe, 0xbc, 0xf8, 0xaf, 0x03, 0xcb, 0x09, 0xc6, 0xd6, 0x98, 0x5f, 0x41, 0xe9,
0x89, 0x91, 0xe8, 0x1b, 0x28, 0x73, 0x65, 0x87, 0x46, 0x13, 0xcb, 0x67, 0x59, 0x2c, 0xb3, 0x5f, 0x9c, 0xc7, 0x8a, 0x5f, 0x8e, 0xba, 0x0e, 0x9d, 0x1e, 0x3f, 0x3f, 0x22, 0x82, 0x8d, 0x90, 0xe4,
0x8c, 0x47, 0x4d, 0x28, 0xf8, 0x6c, 0xc0, 0xd5, 0x7b, 0xaf, 0x6e, 0x3d, 0xce, 0xe2, 0xbd, 0x63, 0x6b, 0x28, 0x49, 0xb4, 0xc3, 0x93, 0x89, 0xe5, 0xd3, 0x2c, 0x96, 0xdd, 0x6f, 0x84, 0x27, 0xeb,
0x03, 0xa2, 0x80, 0xe8, 0x2d, 0x94, 0x2f, 0xdd, 0x30, 0xf0, 0x82, 0x41, 0xf4, 0xb5, 0xfc, 0x34, 0x90, 0x0f, 0x45, 0x4f, 0xe2, 0x7b, 0xaf, 0x6c, 0x3c, 0xce, 0xe2, 0xbd, 0x13, 0x3d, 0x86, 0x40,
0x8b, 0xf4, 0x83, 0xc6, 0x91, 0x98, 0xe0, 0xd4, 0xe4, 0x75, 0x39, 0x63, 0x26, 0x26, 0xce, 0x6f, 0xf2, 0x16, 0x4a, 0x17, 0x7e, 0x1c, 0x05, 0x51, 0x2f, 0xf9, 0x86, 0x7e, 0x9a, 0x45, 0xfa, 0xde,
0x64, 0xd6, 0x4a, 0xd1, 0xb8, 0x7f, 0x08, 0x35, 0x9d, 0xf9, 0x1f, 0x69, 0xc8, 0xe5, 0xfc, 0x67, 0xe0, 0xd8, 0x88, 0xe0, 0x55, 0xf5, 0x75, 0x39, 0x11, 0x36, 0x26, 0xde, 0x6f, 0x75, 0xd6, 0x6a,
0x2d, 0xbb, 0x9d, 0xbb, 0x49, 0x28, 0x49, 0x33, 0x9d, 0x4f, 0xa6, 0xb1, 0x45, 0x0a, 0x99, 0x4b, 0xd1, 0xba, 0xbf, 0x0f, 0x55, 0x93, 0xf9, 0x1f, 0x79, 0x2c, 0xf5, 0xfc, 0xe7, 0xcc, 0xbb, 0x9d,
0x63, 0xb7, 0x37, 0x74, 0x07, 0xd1, 0x7b, 0x8a, 0x44, 0xf9, 0xe4, 0xc2, 0xec, 0xa7, 0x2f, 0x68, 0xdb, 0x69, 0x28, 0x9b, 0x64, 0x7a, 0x3f, 0xd8, 0xc6, 0x96, 0x28, 0x74, 0x2e, 0x0d, 0xfc, 0xce,
0x24, 0xca, 0xdc, 0x0c, 0xe9, 0x85, 0xc7, 0x67, 0xa3, 0x68, 0x2c, 0x6f, 0xfd, 0xa5, 0x04, 0xd0, 0x99, 0xdf, 0x4b, 0xde, 0x53, 0x22, 0xea, 0x27, 0xe7, 0x76, 0x3f, 0x73, 0x41, 0x13, 0x51, 0xe7,
0x8a, 0xcf, 0x83, 0x4e, 0x60, 0x45, 0xed, 0x87, 0x9c, 0xa5, 0x6d, 0x52, 0xf9, 0x6d, 0x3f, 0xbf, 0x66, 0xcc, 0xcf, 0x03, 0x39, 0x1e, 0x45, 0x47, 0xf2, 0xc6, 0x5f, 0x8b, 0x00, 0x8d, 0xd1, 0x79,
0x45, 0x2b, 0x45, 0x1f, 0x65, 0xf2, 0xab, 0xf1, 0x06, 0xbd, 0xc8, 0x2a, 0x08, 0xc9, 0x09, 0xc9, 0xc8, 0x11, 0x2c, 0xe2, 0x7e, 0xc4, 0x9b, 0xdb, 0x26, 0xd1, 0x6f, 0xf7, 0xf9, 0x2d, 0x5a, 0x29,
0x7e, 0x79, 0x03, 0xca, 0xd8, 0xfd, 0x00, 0x45, 0x9d, 0x05, 0x28, 0xab, 0xea, 0x25, 0xf3, 0xd6, 0xf9, 0xa8, 0x93, 0x1f, 0xc7, 0x1b, 0xf2, 0x22, 0xab, 0x20, 0xa4, 0x27, 0x24, 0xf7, 0xe5, 0x0d,
0x7e, 0xb1, 0x1c, 0xa4, 0x8d, 0x7e, 0x61, 0x21, 0x62, 0x6a, 0x22, 0x72, 0x96, 0x34, 0x3d, 0x73, 0x28, 0x6b, 0xf7, 0x03, 0x14, 0x4c, 0x16, 0x90, 0xac, 0xaa, 0x97, 0xce, 0x5b, 0xf7, 0xc5, 0x7c,
0x63, 0xb2, 0x02, 0x90, 0xea, 0x2f, 0x75, 0x0b, 0x7d, 0x0f, 0x45, 0x5d, 0xd5, 0xd0, 0x4f, 0x17, 0x90, 0x31, 0xfa, 0xb9, 0x43, 0x98, 0xad, 0x89, 0xc4, 0x9b, 0xd3, 0xf4, 0xec, 0x8d, 0xc9, 0x0a,
0x13, 0x22, 0x7b, 0xcb, 0x1f, 0xd7, 0xad, 0x2f, 0x2c, 0xf4, 0x1e, 0x0a, 0xb2, 0x9d, 0xa3, 0x8c, 0xc0, 0x44, 0x7f, 0xa9, 0x39, 0xe4, 0x3b, 0x28, 0x98, 0xaa, 0x46, 0x3e, 0x99, 0x4d, 0x48, 0xec,
0xde, 0x94, 0x98, 0x05, 0x6c, 0x67, 0x19, 0xc4, 0x44, 0xf1, 0x13, 0xc0, 0x6c, 0xa8, 0x40, 0x19, 0xcd, 0x7f, 0x5c, 0x73, 0x3e, 0x77, 0xc8, 0x7b, 0xc8, 0xeb, 0x76, 0x4e, 0x32, 0x7a, 0x53, 0x6a,
0xff, 0x79, 0xcc, 0x4d, 0x27, 0x76, 0xfd, 0x66, 0xa0, 0xd9, 0xe0, 0xbd, 0xec, 0xa8, 0x67, 0x0c, 0x16, 0x70, 0xbd, 0x79, 0x10, 0x1b, 0xc5, 0x1f, 0x00, 0xc6, 0x43, 0x05, 0xc9, 0xf8, 0x27, 0x64,
0x65, 0xf6, 0xd2, 0xf8, 0x1a, 0xd9, 0xce, 0x32, 0x88, 0x31, 0x77, 0x0e, 0xb5, 0xd4, 0x7f, 0xa2, 0x6a, 0x3a, 0x71, 0x6b, 0x37, 0x03, 0xed, 0x06, 0xef, 0x75, 0x47, 0x3d, 0x11, 0x24, 0xb3, 0x97,
0xe8, 0xe7, 0xd9, 0x4e, 0x5e, 0xff, 0x8b, 0xd5, 0x7e, 0x75, 0x2b, 0xac, 0xd9, 0x49, 0x24, 0xa7, 0x8e, 0xae, 0x91, 0xeb, 0xcd, 0x83, 0x58, 0x73, 0xa7, 0x50, 0x9d, 0xf8, 0xa7, 0x94, 0xfc, 0x22,
0x32, 0xf3, 0x18, 0x35, 0x6e, 0xf2, 0x3b, 0xfd, 0xff, 0xa6, 0xdd, 0xbc, 0x35, 0x5e, 0xef, 0xba, 0xdb, 0xc9, 0xeb, 0x7f, 0xbc, 0xba, 0xaf, 0x6e, 0x85, 0xb5, 0x3b, 0xa9, 0xf4, 0x54, 0x66, 0x1f,
0x5b, 0xf8, 0x6d, 0x6e, 0xdc, 0xed, 0x16, 0xd5, 0x5f, 0xc5, 0x5f, 0xfd, 0x37, 0x00, 0x00, 0xff, 0x93, 0xfa, 0x4d, 0x7e, 0x4f, 0xfe, 0xeb, 0xe9, 0xae, 0xdf, 0x1a, 0x6f, 0x76, 0xdd, 0xce, 0xff,
0xff, 0xc1, 0x4b, 0x2d, 0x65, 0xc8, 0x16, 0x00, 0x00, 0x6e, 0x61, 0xd0, 0x6e, 0x17, 0xf0, 0x0f, 0xe4, 0x2f, 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0xec,
0xbb, 0xeb, 0x3f, 0xde, 0x16, 0x00, 0x00,
} }
// Reference imports to suppress errors if they are not otherwise used. // Reference imports to suppress errors if they are not otherwise used.

@ -77,6 +77,8 @@ message BuildOptions {
bool ExportPush = 26; bool ExportPush = 26;
bool ExportLoad = 27; bool ExportLoad = 27;
moby.buildkit.v1.sourcepolicy.Policy SourcePolicy = 28; moby.buildkit.v1.sourcepolicy.Policy SourcePolicy = 28;
bool Debug = 29;
} }
message ExportEntry { message ExportEntry {

Loading…
Cancel
Save