diff --git a/go.mod b/go.mod index f046652f8..97048bb5a 100644 --- a/go.mod +++ b/go.mod @@ -29,7 +29,7 @@ require ( github.com/containernetworking/cni v1.2.0 github.com/containernetworking/plugins v1.4.1 github.com/coreos/go-systemd/v22 v22.5.0 - github.com/davecgh/go-spew v1.1.1 + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc github.com/distribution/reference v0.6.0 github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c github.com/docker/go-metrics v0.0.1 @@ -78,7 +78,7 @@ require ( k8s.io/apimachinery v0.30.0 k8s.io/client-go v0.30.0 k8s.io/component-base v0.30.0 - k8s.io/cri-api v0.30.0 + k8s.io/cri-api v0.31.0-alpha.0.0.20240529224029-3a66d9d86654 k8s.io/klog/v2 v2.120.1 k8s.io/kubelet v0.30.0 k8s.io/utils v0.0.0-20230726121419-3b25d923346b @@ -116,7 +116,7 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_model v0.5.0 // indirect github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect @@ -129,12 +129,12 @@ require ( go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/otel/metric v1.26.0 // indirect go.opentelemetry.io/proto/otlp v1.2.0 // indirect - golang.org/x/crypto v0.22.0 // indirect + golang.org/x/crypto v0.23.0 // indirect golang.org/x/exp v0.0.0-20231214170342-aacd6d4b4611 // indirect - golang.org/x/net v0.24.0 // indirect + golang.org/x/net v0.25.0 // indirect golang.org/x/oauth2 v0.17.0 // indirect - golang.org/x/term v0.19.0 // indirect - golang.org/x/text v0.14.0 // indirect + golang.org/x/term v0.20.0 // indirect + golang.org/x/text v0.15.0 // indirect golang.org/x/time v0.3.0 // indirect google.golang.org/appengine v1.6.8 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20240227224415-6ceb2ff114de // indirect diff --git a/go.sum b/go.sum index 2548224ac..57b04c389 100644 --- a/go.sum +++ b/go.sum @@ -78,8 +78,9 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= @@ -260,8 +261,9 @@ github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= @@ -281,8 +283,8 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -366,8 +368,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= -golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= +golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20231214170342-aacd6d4b4611 h1:qCEDpW1G+vcj3Y7Fy52pEM1AWm3abj8WimGYejI3SC4= golang.org/x/exp v0.0.0-20231214170342-aacd6d4b4611/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= @@ -395,8 +397,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= -golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ= golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA= @@ -438,16 +440,17 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= -golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= +golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -525,8 +528,8 @@ k8s.io/client-go v0.30.0 h1:sB1AGGlhY/o7KCyCEQ0bPWzYDL0pwOZO4vAtTSh/gJQ= k8s.io/client-go v0.30.0/go.mod h1:g7li5O5256qe6TYdAMyX/otJqMhIiGgTapdLchhmOaY= k8s.io/component-base v0.30.0 h1:cj6bp38g0ainlfYtaOQuRELh5KSYjhKxM+io7AUIk4o= k8s.io/component-base v0.30.0/go.mod h1:V9x/0ePFNaKeKYA3bOvIbrNoluTSG+fSJKjLdjOoeXQ= -k8s.io/cri-api v0.30.0 h1:hZqh3vH5JZdqeAyhD9nPXSbT6GDgrtPJkPiIzhWKVhk= -k8s.io/cri-api v0.30.0/go.mod h1://4/umPJSW1ISNSNng4OwjpkvswJOQwU8rnkvO8P+xg= +k8s.io/cri-api v0.31.0-alpha.0.0.20240529224029-3a66d9d86654 h1:REcqRW1lajhGkr+RMfO5mQ7JYp93Fe65js/hJ8R/wq0= +k8s.io/cri-api v0.31.0-alpha.0.0.20240529224029-3a66d9d86654/go.mod h1:8SzLKTnltnWXG9FMIL4SHWcAnnPGssi5viN/SMMMf4k= k8s.io/klog/v2 v2.120.1 h1:QXU6cPEOIslTGvZaXvFWiP9VKyeet3sawzTOvdXb4Vw= k8s.io/klog/v2 v2.120.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 h1:BZqlfIlq5YbRMFko6/PM7FjZpUb45WallggurYhKGag= diff --git a/internal/cri/server/container_create_linux.go b/internal/cri/server/container_create_linux.go index e2e69b6e1..8f837ffb3 100644 --- a/internal/cri/server/container_create_linux.go +++ b/internal/cri/server/container_create_linux.go @@ -65,8 +65,23 @@ func (c *criService) containerSpecOpts(config *runtime.ContainerConfig, imageCon } else if imageConfig.User != "" { userstr, _, _ = strings.Cut(imageConfig.User, ":") } - specOpts = append(specOpts, customopts.WithAdditionalGIDs(userstr), - customopts.WithSupplementalGroups(securityContext.GetSupplementalGroups())) + + switch securityContext.GetSupplementalGroupsPolicy() { + case runtime.SupplementalGroupsPolicy_Merge: + // merging group defined in /etc/passwd + // and SupplementalGroups defined in security context + specOpts = append(specOpts, + customopts.WithAdditionalGIDs(userstr), + customopts.WithSupplementalGroups(securityContext.GetSupplementalGroups()), + ) + case runtime.SupplementalGroupsPolicy_Strict: + // no merging group defined in /etc/passwd + specOpts = append(specOpts, + customopts.WithSupplementalGroups(securityContext.GetSupplementalGroups()), + ) + default: + return nil, fmt.Errorf("not implemented in this containerd release: SupplementalGroupsPolicy=%d", securityContext.GetSupplementalGroupsPolicy()) + } asp := securityContext.GetApparmor() if asp == nil { diff --git a/internal/cri/server/container_create_linux_test.go b/internal/cri/server/container_create_linux_test.go index 521d795eb..6b78e97a0 100644 --- a/internal/cri/server/container_create_linux_test.go +++ b/internal/cri/server/container_create_linux_test.go @@ -1468,7 +1468,7 @@ additional-group-for-root:x:22222:root expected runtimespec.User }{ { - desc: "Only SecurityContext was set, SecurityContext defines User", + desc: "[SupplementalGroupsPolicy=Merge(default)] Only SecurityContext was set, SecurityContext defines User", securityContext: &runtime.LinuxContainerSecurityContext{ RunAsUser: &runtime.Int64Value{Value: 1000}, RunAsGroup: &runtime.Int64Value{Value: 2000}, @@ -1477,13 +1477,13 @@ additional-group-for-root:x:22222:root expected: runtimespec.User{UID: 1000, GID: 2000, AdditionalGids: []uint32{2000, 3333, 11111}}, }, { - desc: "Only imageConfig.User was set, imageConfig.User defines User", + desc: "[SupplementalGroupsPolicy=Merge(default)] Only imageConfig.User was set, imageConfig.User defines User", imageConfigUser: "1000", securityContext: nil, expected: runtimespec.User{UID: 1000, GID: 1000, AdditionalGids: []uint32{1000, 11111}}, }, { - desc: "Both SecurityContext and ImageConfig.User was set, SecurityContext defines User", + desc: "[SupplementalGroupsPolicy=Merge(default)] Both SecurityContext and ImageConfig.User were set, SecurityContext defines User", imageConfigUser: "0", securityContext: &runtime.LinuxContainerSecurityContext{ RunAsUser: &runtime.Int64Value{Value: 1000}, @@ -1493,9 +1493,38 @@ additional-group-for-root:x:22222:root expected: runtimespec.User{UID: 1000, GID: 2000, AdditionalGids: []uint32{2000, 3333, 11111}}, }, { - desc: "No SecurityContext nor ImageConfig.User were set, runtime default defines User", + desc: "[SupplementalGroupsPolicy=Merge(default)] No SecurityContext nor ImageConfig.User were set, runtime default defines User", expected: runtimespec.User{UID: 0, GID: 0, AdditionalGids: []uint32{0, 22222}}, }, + { + desc: "[SupplementalGroupsPolicy=Strict] Only SecurityContext was set, SecurityContext defines User", + securityContext: &runtime.LinuxContainerSecurityContext{ + RunAsUser: &runtime.Int64Value{Value: 1000}, + RunAsGroup: &runtime.Int64Value{Value: 2000}, + SupplementalGroups: []int64{3333}, + SupplementalGroupsPolicy: runtime.SupplementalGroupsPolicy_Strict, + }, + expected: runtimespec.User{UID: 1000, GID: 2000, AdditionalGids: []uint32{2000, 3333}}, + }, + { + desc: "[SupplementalGroupsPolicy=Strict] Only imageConfig.User was set, imageConfig.User defines User", + imageConfigUser: "1000", + securityContext: &runtime.LinuxContainerSecurityContext{ + SupplementalGroupsPolicy: runtime.SupplementalGroupsPolicy_Strict, + }, + expected: runtimespec.User{UID: 1000, GID: 1000, AdditionalGids: []uint32{1000}}, + }, + { + desc: "[SupplementalGroupsPolicy=Strict] Both SecurityContext and ImageConfig.User were set, SecurityContext defines User", + imageConfigUser: "0", + securityContext: &runtime.LinuxContainerSecurityContext{ + RunAsUser: &runtime.Int64Value{Value: 1000}, + RunAsGroup: &runtime.Int64Value{Value: 2000}, + SupplementalGroups: []int64{3333}, + SupplementalGroupsPolicy: runtime.SupplementalGroupsPolicy_Strict, + }, + expected: runtimespec.User{UID: 1000, GID: 2000, AdditionalGids: []uint32{2000, 3333}}, + }, } { test := test t.Run(test.desc, func(t *testing.T) { diff --git a/internal/cri/server/container_status.go b/internal/cri/server/container_status.go index 9091212eb..32bdb3947 100644 --- a/internal/cri/server/container_status.go +++ b/internal/cri/server/container_status.go @@ -24,6 +24,7 @@ import ( containerstore "github.com/containerd/containerd/v2/internal/cri/store/container" "github.com/containerd/containerd/v2/internal/cri/util" "github.com/containerd/errdefs" + "github.com/containerd/log" runtimespec "github.com/opencontainers/runtime-spec/specs-go" runtime "k8s.io/cri-api/pkg/apis/runtime/v1" @@ -60,7 +61,10 @@ func (c *criService) ContainerStatus(ctx context.Context, r *runtime.ContainerSt imageRef = repoDigests[0] } } - status := toCRIContainerStatus(container, spec, imageRef) + status, err := toCRIContainerStatus(ctx, container, spec, imageRef) + if err != nil { + return nil, fmt.Errorf("failed to get ContainerStatus: %w", err) + } if status.GetCreatedAt() == 0 { // CRI doesn't allow CreatedAt == 0. info, err := container.Container.Info(ctx) @@ -82,7 +86,7 @@ func (c *criService) ContainerStatus(ctx context.Context, r *runtime.ContainerSt } // toCRIContainerStatus converts internal container object to CRI container status. -func toCRIContainerStatus(container containerstore.Container, spec *runtime.ImageSpec, imageRef string) *runtime.ContainerStatus { +func toCRIContainerStatus(ctx context.Context, container containerstore.Container, spec *runtime.ImageSpec, imageRef string) (*runtime.ContainerStatus, error) { meta := container.Metadata status := container.Status.Get() reason := status.Reason @@ -104,6 +108,12 @@ func toCRIContainerStatus(container containerstore.Container, spec *runtime.Imag st, ft = status.StartedAt, status.FinishedAt } + runtimeUser, err := toCRIContainerUser(ctx, container) + if err != nil { + log.G(ctx).WithField("Id", meta.ID).WithError(err).Debug("failed to get ContainerUser. returning an empty ContainerUser") + runtimeUser = &runtime.ContainerUser{} + } + return &runtime.ContainerStatus{ Id: meta.ID, Metadata: meta.Config.GetMetadata(), @@ -121,7 +131,8 @@ func toCRIContainerStatus(container containerstore.Container, spec *runtime.Imag Mounts: meta.Config.GetMounts(), LogPath: meta.LogPath, Resources: status.Resources, - } + User: runtimeUser, + }, nil } // ContainerInfo is extra information for a container. diff --git a/internal/cri/server/container_status_linux.go b/internal/cri/server/container_status_linux.go new file mode 100644 index 000000000..5f53eff2a --- /dev/null +++ b/internal/cri/server/container_status_linux.go @@ -0,0 +1,54 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package server + +import ( + "context" + "errors" + "fmt" + + containerstore "github.com/containerd/containerd/v2/internal/cri/store/container" + runtime "k8s.io/cri-api/pkg/apis/runtime/v1" +) + +func toCRIContainerUser(ctx context.Context, container containerstore.Container) (*runtime.ContainerUser, error) { + if container.Container == nil { + return nil, errors.New("container must not be nil") + } + + runtimeSpec, err := container.Container.Spec(ctx) + if err != nil { + return nil, fmt.Errorf("failed to get container runtime spec: %w", err) + } + + if runtimeSpec.Process == nil { + return &runtime.ContainerUser{}, nil + } + + user := runtimeSpec.Process.User + var supplementalGroups []int64 + for _, gid := range user.AdditionalGids { + supplementalGroups = append(supplementalGroups, int64(gid)) + } + return &runtime.ContainerUser{ + Linux: &runtime.LinuxContainerUser{ + Uid: int64(user.UID), + Gid: int64(user.GID), + SupplementalGroups: supplementalGroups, + }, + }, nil +} diff --git a/internal/cri/server/container_status_linux_test.go b/internal/cri/server/container_status_linux_test.go new file mode 100644 index 000000000..af33791a2 --- /dev/null +++ b/internal/cri/server/container_status_linux_test.go @@ -0,0 +1,125 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package server + +import ( + "context" + "errors" + "fmt" + "testing" + + containerd "github.com/containerd/containerd/v2/client" + "github.com/containerd/containerd/v2/internal/cri/store/container" + specs "github.com/opencontainers/runtime-spec/specs-go" + runtime "k8s.io/cri-api/pkg/apis/runtime/v1" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestToCRIContainerUser(t *testing.T) { + fakeErrorOnSpec := errors.New("error") + testCases := []struct { + name string + container containerd.Container + expected *runtime.ContainerUser + expectErr bool + expectedErr error + }{ + { + name: "container is nil", + container: nil, + expectErr: true, + expectedErr: errors.New("container must not be nil"), + }, + { + name: "Spec() returns error", + container: &fakeSpecOnlyContainer{ + t: t, + errOnSpec: fakeErrorOnSpec, + }, + expectErr: true, + expectedErr: fmt.Errorf("failed to get container runtime spec: %w", fakeErrorOnSpec), + }, + { + name: "no Process", + container: &fakeSpecOnlyContainer{ + t: t, + spec: &specs.Spec{}, + }, + expected: &runtime.ContainerUser{}, + }, + { + name: "no additionalGids", + container: &fakeSpecOnlyContainer{ + t: t, + spec: &specs.Spec{ + Process: &specs.Process{ + User: specs.User{ + UID: 0, + GID: 0, + }, + }, + }, + }, + expected: &runtime.ContainerUser{ + Linux: &runtime.LinuxContainerUser{ + Uid: 0, + Gid: 0, + }, + }, + }, + { + name: "with additionalGids", + container: &fakeSpecOnlyContainer{ + t: t, + spec: &specs.Spec{ + Process: &specs.Process{ + User: specs.User{ + UID: 0, + GID: 0, + AdditionalGids: []uint32{0, 1234}, + }, + }, + }, + }, + expected: &runtime.ContainerUser{ + Linux: &runtime.LinuxContainerUser{ + Uid: 0, + Gid: 0, + SupplementalGroups: []int64{0, 1234}, + }, + }, + }, + } + + for _, testCase := range testCases { + t.Run(testCase.name, func(t *testing.T) { + got, err := toCRIContainerUser(context.Background(), container.Container{ + Container: testCase.container, + }) + if testCase.expectErr { + require.Nil(t, got) + require.Error(t, err) + assert.Equal(t, testCase.expectedErr, err) + } else { + require.NoError(t, err) + assert.Equal(t, testCase.expected, got) + } + }) + } +} diff --git a/internal/cri/server/container_status_other.go b/internal/cri/server/container_status_other.go new file mode 100644 index 000000000..896cec0cf --- /dev/null +++ b/internal/cri/server/container_status_other.go @@ -0,0 +1,30 @@ +//go:build !windows && !linux + +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package server + +import ( + "context" + + containerstore "github.com/containerd/containerd/v2/internal/cri/store/container" + runtime "k8s.io/cri-api/pkg/apis/runtime/v1" +) + +func toCRIContainerUser(ctx context.Context, container containerstore.Container) (*runtime.ContainerUser, error) { + return &runtime.ContainerUser{}, nil +} diff --git a/internal/cri/server/container_status_test.go b/internal/cri/server/container_status_test.go index 33799cf54..05b165024 100644 --- a/internal/cri/server/container_status_test.go +++ b/internal/cri/server/container_status_test.go @@ -22,8 +22,13 @@ import ( "testing" "time" + containerd "github.com/containerd/containerd/v2/client" + "github.com/containerd/containerd/v2/core/containers" criconfig "github.com/containerd/containerd/v2/internal/cri/config" snapshotstore "github.com/containerd/containerd/v2/internal/cri/store/snapshot" + "github.com/containerd/containerd/v2/pkg/cio" + "github.com/containerd/typeurl/v2" + specs "github.com/opencontainers/runtime-spec/specs-go" "github.com/stretchr/testify/assert" runtime "k8s.io/cri-api/pkg/apis/runtime/v1" @@ -31,7 +36,7 @@ import ( imagestore "github.com/containerd/containerd/v2/internal/cri/store/image" ) -func getContainerStatusTestData() (*containerstore.Metadata, *containerstore.Status, +func getContainerStatusTestData(t *testing.T) (*containerstore.Metadata, containerd.Container, *containerstore.Status, *imagestore.Image, *runtime.ContainerStatus) { imageID := "sha256:1123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" testID := "test-id" @@ -70,6 +75,9 @@ func getContainerStatusTestData() (*containerstore.Metadata, *containerstore.Sta "gcr.io/library/busybox@sha256:e6693c20186f837fc393390135d8a598a96a833917917789d63766cab6c59582", }, } + + container := &fakeSpecOnlyContainer{t: t, spec: &specs.Spec{}} + expected := &runtime.ContainerStatus{ Id: testID, Metadata: config.GetMetadata(), @@ -82,9 +90,10 @@ func getContainerStatusTestData() (*containerstore.Metadata, *containerstore.Sta Annotations: config.GetAnnotations(), Mounts: config.GetMounts(), LogPath: "test-log-path", + User: &runtime.ContainerUser{}, } - return metadata, status, image, expected + return metadata, container, status, image, expected } func TestToCRIContainerStatus(t *testing.T) { @@ -139,7 +148,7 @@ func TestToCRIContainerStatus(t *testing.T) { test := test t.Run(test.desc, func(t *testing.T) { - metadata, status, _, expected := getContainerStatusTestData() + metadata, ctnr, status, _, expected := getContainerStatusTestData(t) // Update status with test case. status.StartedAt = test.startedAt status.FinishedAt = test.finishedAt @@ -149,6 +158,7 @@ func TestToCRIContainerStatus(t *testing.T) { container, err := containerstore.NewContainer( *metadata, containerstore.WithFakeStatus(*status), + containerstore.WithContainer(ctnr), ) assert.NoError(t, err) // Set expectation based on test case. @@ -158,9 +168,11 @@ func TestToCRIContainerStatus(t *testing.T) { expected.ExitCode = test.exitCode expected.Message = test.message patchExceptedWithState(expected, test.expectedState) - containerStatus := toCRIContainerStatus(container, + containerStatus, err := toCRIContainerStatus(context.Background(), + container, expected.Image, expected.ImageRef) + assert.Nil(t, err) assert.Equal(t, expected, containerStatus, test.desc) }) } @@ -168,7 +180,7 @@ func TestToCRIContainerStatus(t *testing.T) { // TODO(mikebrow): add a fake containerd container.Container.Spec client api so we can test verbose is true option func TestToCRIContainerInfo(t *testing.T) { - metadata, status, _, _ := getContainerStatusTestData() + metadata, _, status, _, _ := getContainerStatusTestData(t) container, err := containerstore.NewContainer( *metadata, containerstore.WithFakeStatus(*status), @@ -231,7 +243,7 @@ func TestContainerStatus(t *testing.T) { test := test t.Run(test.desc, func(t *testing.T) { c := newTestCRIService() - metadata, status, image, expected := getContainerStatusTestData() + metadata, ctnr, status, image, expected := getContainerStatusTestData(t) // Update status with test case. status.StartedAt = test.startedAt status.FinishedAt = test.finishedAt @@ -239,6 +251,7 @@ func TestContainerStatus(t *testing.T) { container, err := containerstore.NewContainer( *metadata, containerstore.WithFakeStatus(*status), + containerstore.WithContainer(ctnr), ) assert.NoError(t, err) if test.exist { @@ -302,3 +315,85 @@ func patchExceptedWithState(expected *runtime.ContainerStatus, state runtime.Con expected.FinishedAt = 0 } } + +var _ containerd.Container = &fakeSpecOnlyContainer{} + +type fakeSpecOnlyContainer struct { + t *testing.T + spec *specs.Spec + errOnSpec error +} + +// Spec implements client.Container. +func (c *fakeSpecOnlyContainer) Spec(context.Context) (*specs.Spec, error) { + if c.errOnSpec != nil { + return nil, c.errOnSpec + } + return c.spec, nil +} + +// Checkpoint implements client.Container. +func (c *fakeSpecOnlyContainer) Checkpoint(context.Context, string, ...containerd.CheckpointOpts) (containerd.Image, error) { + c.t.Error("fakeSpecOnlyContainer.Checkpoint: not implemented") + return nil, errors.New("not implemented") +} + +// Delete implements client.Container. +func (c *fakeSpecOnlyContainer) Delete(context.Context, ...containerd.DeleteOpts) error { + c.t.Error("fakeSpecOnlyContainer.Delete: not implemented") + return errors.New("not implemented") +} + +// Extensions implements client.Container. +func (c *fakeSpecOnlyContainer) Extensions(context.Context) (map[string]typeurl.Any, error) { + c.t.Error("fakeSpecOnlyContainer.Extensions: not implemented") + return nil, errors.New("not implemented") +} + +// ID implements client.Container. +func (c *fakeSpecOnlyContainer) ID() string { + c.t.Error("fakeSpecOnlyContainer.ID: not implemented") + return "" // not implemented +} + +// Image implements client.Container. +func (c *fakeSpecOnlyContainer) Image(context.Context) (containerd.Image, error) { + c.t.Error("fakeSpecOnlyContainer.Image: not implemented") + return nil, errors.New("not implemented") +} + +// Info implements client.Container. +func (c *fakeSpecOnlyContainer) Info(context.Context, ...containerd.InfoOpts) (containers.Container, error) { + c.t.Error("fakeSpecOnlyContainer.Info: not implemented") + return containers.Container{}, errors.New("not implemented") +} + +// Labels implements client.Container. +func (c *fakeSpecOnlyContainer) Labels(context.Context) (map[string]string, error) { + c.t.Error("fakeSpecOnlyContainer.Labels: not implemented") + return nil, errors.New("not implemented") +} + +// NewTask implements client.Container. +func (c *fakeSpecOnlyContainer) NewTask(context.Context, cio.Creator, ...containerd.NewTaskOpts) (containerd.Task, error) { + c.t.Error("fakeSpecOnlyContainer.NewTask: not implemented") + return nil, errors.New("not implemented") +} + +// SetLabels implements client.Container. +func (c *fakeSpecOnlyContainer) SetLabels(context.Context, map[string]string) (map[string]string, error) { + c.t.Error("fakeSpecOnlyContainer.SetLabels: not implemented") + return nil, errors.New("not implemented") +} + +// Task implements client.Container. +func (c *fakeSpecOnlyContainer) Task(context.Context, cio.Attach) (containerd.Task, error) { + c.t.Error("fakeSpecOnlyContainer.Task: not implemented") + return nil, errors.New("not implemented") +} + +// Update implements client.Container. +func (c *fakeSpecOnlyContainer) Update(context.Context, ...containerd.UpdateContainerOpts) error { + c.t.Error("fakeSpecOnlyContainer.Update: not implemented") + return errors.New("not implemented") +} diff --git a/internal/cri/server/container_status_windows.go b/internal/cri/server/container_status_windows.go new file mode 100644 index 000000000..6c56723dc --- /dev/null +++ b/internal/cri/server/container_status_windows.go @@ -0,0 +1,28 @@ +/* + Copyright The containerd Authors. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +package server + +import ( + "context" + + containerstore "github.com/containerd/containerd/v2/internal/cri/store/container" + runtime "k8s.io/cri-api/pkg/apis/runtime/v1" +) + +func toCRIContainerUser(ctx context.Context, container containerstore.Container) (*runtime.ContainerUser, error) { + return &runtime.ContainerUser{}, nil +} diff --git a/vendor/golang.org/x/net/html/doc.go b/vendor/golang.org/x/net/html/doc.go index 2466ae3d9..3a7e5ab17 100644 --- a/vendor/golang.org/x/net/html/doc.go +++ b/vendor/golang.org/x/net/html/doc.go @@ -104,7 +104,7 @@ tokenization, and tokenization and tree construction stages of the WHATWG HTML parsing specification respectively. While the tokenizer parses and normalizes individual HTML tokens, only the parser constructs the DOM tree from the tokenized HTML, as described in the tree construction stage of the -specification, dynamically modifying or extending the docuemnt's DOM tree. +specification, dynamically modifying or extending the document's DOM tree. If your use case requires semantically well-formed HTML documents, as defined by the WHATWG specification, the parser should be used rather than the tokenizer. diff --git a/vendor/golang.org/x/net/http/httpguts/httplex.go b/vendor/golang.org/x/net/http/httpguts/httplex.go index 6e071e852..9b4de9401 100644 --- a/vendor/golang.org/x/net/http/httpguts/httplex.go +++ b/vendor/golang.org/x/net/http/httpguts/httplex.go @@ -12,7 +12,7 @@ import ( "golang.org/x/net/idna" ) -var isTokenTable = [127]bool{ +var isTokenTable = [256]bool{ '!': true, '#': true, '$': true, @@ -93,12 +93,7 @@ var isTokenTable = [127]bool{ } func IsTokenRune(r rune) bool { - i := int(r) - return i < len(isTokenTable) && isTokenTable[i] -} - -func isNotToken(r rune) bool { - return !IsTokenRune(r) + return r < utf8.RuneSelf && isTokenTable[byte(r)] } // HeaderValuesContainsToken reports whether any string in values @@ -202,8 +197,8 @@ func ValidHeaderFieldName(v string) bool { if len(v) == 0 { return false } - for _, r := range v { - if !IsTokenRune(r) { + for i := 0; i < len(v); i++ { + if !isTokenTable[v[i]] { return false } } diff --git a/vendor/golang.org/x/net/http2/frame.go b/vendor/golang.org/x/net/http2/frame.go index 43557ab7e..105c3b279 100644 --- a/vendor/golang.org/x/net/http2/frame.go +++ b/vendor/golang.org/x/net/http2/frame.go @@ -490,6 +490,9 @@ func terminalReadFrameError(err error) bool { // returned error is ErrFrameTooLarge. Other errors may be of type // ConnectionError, StreamError, or anything else from the underlying // reader. +// +// If ReadFrame returns an error and a non-nil Frame, the Frame's StreamID +// indicates the stream responsible for the error. func (fr *Framer) ReadFrame() (Frame, error) { fr.errDetail = nil if fr.lastFrame != nil { @@ -1521,7 +1524,7 @@ func (fr *Framer) maxHeaderStringLen() int { // readMetaFrame returns 0 or more CONTINUATION frames from fr and // merge them into the provided hf and returns a MetaHeadersFrame // with the decoded hpack values. -func (fr *Framer) readMetaFrame(hf *HeadersFrame) (*MetaHeadersFrame, error) { +func (fr *Framer) readMetaFrame(hf *HeadersFrame) (Frame, error) { if fr.AllowIllegalReads { return nil, errors.New("illegal use of AllowIllegalReads with ReadMetaHeaders") } @@ -1592,7 +1595,7 @@ func (fr *Framer) readMetaFrame(hf *HeadersFrame) (*MetaHeadersFrame, error) { } // It would be nice to send a RST_STREAM before sending the GOAWAY, // but the structure of the server's frame writer makes this difficult. - return nil, ConnectionError(ErrCodeProtocol) + return mh, ConnectionError(ErrCodeProtocol) } // Also close the connection after any CONTINUATION frame following an @@ -1604,11 +1607,11 @@ func (fr *Framer) readMetaFrame(hf *HeadersFrame) (*MetaHeadersFrame, error) { } // It would be nice to send a RST_STREAM before sending the GOAWAY, // but the structure of the server's frame writer makes this difficult. - return nil, ConnectionError(ErrCodeProtocol) + return mh, ConnectionError(ErrCodeProtocol) } if _, err := hdec.Write(frag); err != nil { - return nil, ConnectionError(ErrCodeCompression) + return mh, ConnectionError(ErrCodeCompression) } if hc.HeadersEnded() { @@ -1625,7 +1628,7 @@ func (fr *Framer) readMetaFrame(hf *HeadersFrame) (*MetaHeadersFrame, error) { mh.HeadersFrame.invalidate() if err := hdec.Close(); err != nil { - return nil, ConnectionError(ErrCodeCompression) + return mh, ConnectionError(ErrCodeCompression) } if invalid != nil { fr.errDetail = invalid diff --git a/vendor/golang.org/x/net/http2/server.go b/vendor/golang.org/x/net/http2/server.go index ce2e8b40e..c5d081081 100644 --- a/vendor/golang.org/x/net/http2/server.go +++ b/vendor/golang.org/x/net/http2/server.go @@ -732,11 +732,7 @@ func isClosedConnError(err error) bool { return false } - // TODO: remove this string search and be more like the Windows - // case below. That might involve modifying the standard library - // to return better error types. - str := err.Error() - if strings.Contains(str, "use of closed network connection") { + if errors.Is(err, net.ErrClosed) { return true } @@ -1482,6 +1478,11 @@ func (sc *serverConn) processFrameFromReader(res readFrameResult) bool { sc.goAway(ErrCodeFlowControl) return true case ConnectionError: + if res.f != nil { + if id := res.f.Header().StreamID; id > sc.maxClientStreamID { + sc.maxClientStreamID = id + } + } sc.logf("http2: server connection error from %v: %v", sc.conn.RemoteAddr(), ev) sc.goAway(ErrCode(ev)) return true // goAway will handle shutdown diff --git a/vendor/golang.org/x/net/http2/transport.go b/vendor/golang.org/x/net/http2/transport.go index ce375c8c7..2fa49490c 100644 --- a/vendor/golang.org/x/net/http2/transport.go +++ b/vendor/golang.org/x/net/http2/transport.go @@ -936,7 +936,20 @@ func (cc *ClientConn) setGoAway(f *GoAwayFrame) { } last := f.LastStreamID for streamID, cs := range cc.streams { - if streamID > last { + if streamID <= last { + // The server's GOAWAY indicates that it received this stream. + // It will either finish processing it, or close the connection + // without doing so. Either way, leave the stream alone for now. + continue + } + if streamID == 1 && cc.goAway.ErrCode != ErrCodeNo { + // Don't retry the first stream on a connection if we get a non-NO error. + // If the server is sending an error on a new connection, + // retrying the request on a new one probably isn't going to work. + cs.abortStreamLocked(fmt.Errorf("http2: Transport received GOAWAY from server ErrCode:%v", cc.goAway.ErrCode)) + } else { + // Aborting the stream with errClentConnGotGoAway indicates that + // the request should be retried on a new connection. cs.abortStreamLocked(errClientConnGotGoAway) } } diff --git a/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go b/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go index cb6c725e6..6b930e29f 100644 --- a/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go +++ b/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go @@ -155,6 +155,40 @@ func (NamespaceMode) EnumDescriptor() ([]byte, []int) { return fileDescriptor_00212fb1f9d3bf1c, []int{2} } +// SupplementalGroupsPolicy defines how supplemental groups +// of the first container processes are calculated. +type SupplementalGroupsPolicy int32 + +const ( + // Merge means that the container's provided SupplementalGroups + // and FsGroup (specified in SecurityContext) will be merged with + // the primary user's groups as defined in the container image + // (in /etc/group). + SupplementalGroupsPolicy_Merge SupplementalGroupsPolicy = 0 + // Strict means that the container's provided SupplementalGroups + // and FsGroup (specified in SecurityContext) will be used instead of + // any groups defined in the container image. + SupplementalGroupsPolicy_Strict SupplementalGroupsPolicy = 1 +) + +var SupplementalGroupsPolicy_name = map[int32]string{ + 0: "Merge", + 1: "Strict", +} + +var SupplementalGroupsPolicy_value = map[string]int32{ + "Merge": 0, + "Strict": 1, +} + +func (x SupplementalGroupsPolicy) String() string { + return proto.EnumName(SupplementalGroupsPolicy_name, int32(x)) +} + +func (SupplementalGroupsPolicy) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{3} +} + type PodSandboxState int32 const ( @@ -177,7 +211,7 @@ func (x PodSandboxState) String() string { } func (PodSandboxState) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{3} + return fileDescriptor_00212fb1f9d3bf1c, []int{4} } type ContainerState int32 @@ -208,7 +242,7 @@ func (x ContainerState) String() string { } func (ContainerState) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{4} + return fileDescriptor_00212fb1f9d3bf1c, []int{5} } type ContainerEventType int32 @@ -243,7 +277,7 @@ func (x ContainerEventType) String() string { } func (ContainerEventType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{5} + return fileDescriptor_00212fb1f9d3bf1c, []int{6} } type MetricType int32 @@ -268,7 +302,7 @@ func (x MetricType) String() string { } func (MetricType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{6} + return fileDescriptor_00212fb1f9d3bf1c, []int{7} } type CgroupDriver int32 @@ -293,7 +327,7 @@ func (x CgroupDriver) String() string { } func (CgroupDriver) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{7} + return fileDescriptor_00212fb1f9d3bf1c, []int{8} } // Available profile types. @@ -1000,13 +1034,14 @@ type LinuxSandboxSecurityContext struct { RunAsGroup *Int64Value `protobuf:"bytes,8,opt,name=run_as_group,json=runAsGroup,proto3" json:"run_as_group,omitempty"` // If set, the root filesystem of the sandbox is read-only. ReadonlyRootfs bool `protobuf:"varint,4,opt,name=readonly_rootfs,json=readonlyRootfs,proto3" json:"readonly_rootfs,omitempty"` - // List of groups applied to the first process run in the sandbox, in - // addition to the sandbox's primary GID, and group memberships defined - // in the container image for the sandbox's primary UID of the container process. - // If the list is empty, no additional groups are added to any container. - // Note that group memberships defined in the container image for the sandbox's primary UID - // of the container process are still effective, even if they are not included in this list. + // List of groups applied to the first process run in each container. + // supplemental_groups_policy can control how groups will be calculated. SupplementalGroups []int64 `protobuf:"varint,5,rep,packed,name=supplemental_groups,json=supplementalGroups,proto3" json:"supplemental_groups,omitempty"` + // supplemental_groups_policy defines how supplemental groups of the first + // container processes are calculated. + // Valid values are "Merge" and "Strict". + // If not specified, "Merge" is used. + SupplementalGroupsPolicy SupplementalGroupsPolicy `protobuf:"varint,11,opt,name=supplemental_groups_policy,json=supplementalGroupsPolicy,proto3,enum=runtime.v1.SupplementalGroupsPolicy" json:"supplemental_groups_policy,omitempty"` // Indicates whether the sandbox will be asked to run a privileged // container. If a privileged container is to be executed within it, this // MUST be true. @@ -1103,6 +1138,13 @@ func (m *LinuxSandboxSecurityContext) GetSupplementalGroups() []int64 { return nil } +func (m *LinuxSandboxSecurityContext) GetSupplementalGroupsPolicy() SupplementalGroupsPolicy { + if m != nil { + return m.SupplementalGroupsPolicy + } + return SupplementalGroupsPolicy_Merge +} + func (m *LinuxSandboxSecurityContext) GetPrivileged() bool { if m != nil { return m.Privileged @@ -3999,13 +4041,14 @@ type LinuxContainerSecurityContext struct { RunAsUsername string `protobuf:"bytes,6,opt,name=run_as_username,json=runAsUsername,proto3" json:"run_as_username,omitempty"` // If set, the root filesystem of the container is read-only. ReadonlyRootfs bool `protobuf:"varint,7,opt,name=readonly_rootfs,json=readonlyRootfs,proto3" json:"readonly_rootfs,omitempty"` - // List of groups applied to the first process run in the container, in - // addition to the container's primary GID, and group memberships defined - // in the container image for the container's primary UID of the container process. - // If the list is empty, no additional groups are added to any container. - // Note that group memberships defined in the container image for the container's primary UID - // of the container process are still effective, even if they are not included in this list. + // List of groups applied to the first process run in each container. + // supplemental_groups_policy can control how groups will be calculated. SupplementalGroups []int64 `protobuf:"varint,8,rep,packed,name=supplemental_groups,json=supplementalGroups,proto3" json:"supplemental_groups,omitempty"` + // supplemental_groups_policy defines how supplemental groups of the first + // container processes are calculated. + // Valid values are "Merge" and "Strict". + // If not specified, "Merge" is used. + SupplementalGroupsPolicy SupplementalGroupsPolicy `protobuf:"varint,17,opt,name=supplemental_groups_policy,json=supplementalGroupsPolicy,proto3,enum=runtime.v1.SupplementalGroupsPolicy" json:"supplemental_groups_policy,omitempty"` // no_new_privs defines if the flag for no_new_privs should be set on the // container. NoNewPrivs bool `protobuf:"varint,11,opt,name=no_new_privs,json=noNewPrivs,proto3" json:"no_new_privs,omitempty"` @@ -4133,6 +4176,13 @@ func (m *LinuxContainerSecurityContext) GetSupplementalGroups() []int64 { return nil } +func (m *LinuxContainerSecurityContext) GetSupplementalGroupsPolicy() SupplementalGroupsPolicy { + if m != nil { + return m.SupplementalGroupsPolicy + } + return SupplementalGroupsPolicy_Merge +} + func (m *LinuxContainerSecurityContext) GetNoNewPrivs() bool { if m != nil { return m.NoNewPrivs @@ -4241,6 +4291,70 @@ func (m *LinuxContainerConfig) GetSecurityContext() *LinuxContainerSecurityConte return nil } +type LinuxContainerUser struct { + // uid is the primary uid initially attached to the first process in the container + Uid int64 `protobuf:"varint,1,opt,name=uid,proto3" json:"uid,omitempty"` + // gid is the primary gid initially attached to the first process in the container + Gid int64 `protobuf:"varint,2,opt,name=gid,proto3" json:"gid,omitempty"` + // supplemental_groups are the supplemental groups initially attached to the first process in the container + SupplementalGroups []int64 `protobuf:"varint,3,rep,packed,name=supplemental_groups,json=supplementalGroups,proto3" json:"supplemental_groups,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *LinuxContainerUser) Reset() { *m = LinuxContainerUser{} } +func (*LinuxContainerUser) ProtoMessage() {} +func (*LinuxContainerUser) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{55} +} +func (m *LinuxContainerUser) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *LinuxContainerUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_LinuxContainerUser.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *LinuxContainerUser) XXX_Merge(src proto.Message) { + xxx_messageInfo_LinuxContainerUser.Merge(m, src) +} +func (m *LinuxContainerUser) XXX_Size() int { + return m.Size() +} +func (m *LinuxContainerUser) XXX_DiscardUnknown() { + xxx_messageInfo_LinuxContainerUser.DiscardUnknown(m) +} + +var xxx_messageInfo_LinuxContainerUser proto.InternalMessageInfo + +func (m *LinuxContainerUser) GetUid() int64 { + if m != nil { + return m.Uid + } + return 0 +} + +func (m *LinuxContainerUser) GetGid() int64 { + if m != nil { + return m.Gid + } + return 0 +} + +func (m *LinuxContainerUser) GetSupplementalGroups() []int64 { + if m != nil { + return m.SupplementalGroups + } + return nil +} + // WindowsNamespaceOption provides options for Windows namespaces. type WindowsNamespaceOption struct { // Network namespace for this container/sandbox. @@ -4253,7 +4367,7 @@ type WindowsNamespaceOption struct { func (m *WindowsNamespaceOption) Reset() { *m = WindowsNamespaceOption{} } func (*WindowsNamespaceOption) ProtoMessage() {} func (*WindowsNamespaceOption) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{55} + return fileDescriptor_00212fb1f9d3bf1c, []int{56} } func (m *WindowsNamespaceOption) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4310,7 +4424,7 @@ type WindowsSandboxSecurityContext struct { func (m *WindowsSandboxSecurityContext) Reset() { *m = WindowsSandboxSecurityContext{} } func (*WindowsSandboxSecurityContext) ProtoMessage() {} func (*WindowsSandboxSecurityContext) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{56} + return fileDescriptor_00212fb1f9d3bf1c, []int{57} } func (m *WindowsSandboxSecurityContext) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4379,7 +4493,7 @@ type WindowsPodSandboxConfig struct { func (m *WindowsPodSandboxConfig) Reset() { *m = WindowsPodSandboxConfig{} } func (*WindowsPodSandboxConfig) ProtoMessage() {} func (*WindowsPodSandboxConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{57} + return fileDescriptor_00212fb1f9d3bf1c, []int{58} } func (m *WindowsPodSandboxConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4432,7 +4546,7 @@ type WindowsContainerSecurityContext struct { func (m *WindowsContainerSecurityContext) Reset() { *m = WindowsContainerSecurityContext{} } func (*WindowsContainerSecurityContext) ProtoMessage() {} func (*WindowsContainerSecurityContext) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{58} + return fileDescriptor_00212fb1f9d3bf1c, []int{59} } func (m *WindowsContainerSecurityContext) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4496,7 +4610,7 @@ type WindowsContainerConfig struct { func (m *WindowsContainerConfig) Reset() { *m = WindowsContainerConfig{} } func (*WindowsContainerConfig) ProtoMessage() {} func (*WindowsContainerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{59} + return fileDescriptor_00212fb1f9d3bf1c, []int{60} } func (m *WindowsContainerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4559,7 +4673,7 @@ type WindowsContainerResources struct { func (m *WindowsContainerResources) Reset() { *m = WindowsContainerResources{} } func (*WindowsContainerResources) ProtoMessage() {} func (*WindowsContainerResources) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{60} + return fileDescriptor_00212fb1f9d3bf1c, []int{61} } func (m *WindowsContainerResources) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4640,7 +4754,7 @@ type ContainerMetadata struct { func (m *ContainerMetadata) Reset() { *m = ContainerMetadata{} } func (*ContainerMetadata) ProtoMessage() {} func (*ContainerMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{61} + return fileDescriptor_00212fb1f9d3bf1c, []int{62} } func (m *ContainerMetadata) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4701,7 +4815,7 @@ type Device struct { func (m *Device) Reset() { *m = Device{} } func (*Device) ProtoMessage() {} func (*Device) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{62} + return fileDescriptor_00212fb1f9d3bf1c, []int{63} } func (m *Device) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4765,7 +4879,7 @@ type CDIDevice struct { func (m *CDIDevice) Reset() { *m = CDIDevice{} } func (*CDIDevice) ProtoMessage() {} func (*CDIDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{63} + return fileDescriptor_00212fb1f9d3bf1c, []int{64} } func (m *CDIDevice) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -4867,7 +4981,7 @@ type ContainerConfig struct { func (m *ContainerConfig) Reset() { *m = ContainerConfig{} } func (*ContainerConfig) ProtoMessage() {} func (*ContainerConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{64} + return fileDescriptor_00212fb1f9d3bf1c, []int{65} } func (m *ContainerConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5032,7 +5146,7 @@ type CreateContainerRequest struct { func (m *CreateContainerRequest) Reset() { *m = CreateContainerRequest{} } func (*CreateContainerRequest) ProtoMessage() {} func (*CreateContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{65} + return fileDescriptor_00212fb1f9d3bf1c, []int{66} } func (m *CreateContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5092,7 +5206,7 @@ type CreateContainerResponse struct { func (m *CreateContainerResponse) Reset() { *m = CreateContainerResponse{} } func (*CreateContainerResponse) ProtoMessage() {} func (*CreateContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{66} + return fileDescriptor_00212fb1f9d3bf1c, []int{67} } func (m *CreateContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5138,7 +5252,7 @@ type StartContainerRequest struct { func (m *StartContainerRequest) Reset() { *m = StartContainerRequest{} } func (*StartContainerRequest) ProtoMessage() {} func (*StartContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{67} + return fileDescriptor_00212fb1f9d3bf1c, []int{68} } func (m *StartContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5182,7 +5296,7 @@ type StartContainerResponse struct { func (m *StartContainerResponse) Reset() { *m = StartContainerResponse{} } func (*StartContainerResponse) ProtoMessage() {} func (*StartContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{68} + return fileDescriptor_00212fb1f9d3bf1c, []int{69} } func (m *StartContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5224,7 +5338,7 @@ type StopContainerRequest struct { func (m *StopContainerRequest) Reset() { *m = StopContainerRequest{} } func (*StopContainerRequest) ProtoMessage() {} func (*StopContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{69} + return fileDescriptor_00212fb1f9d3bf1c, []int{70} } func (m *StopContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5275,7 +5389,7 @@ type StopContainerResponse struct { func (m *StopContainerResponse) Reset() { *m = StopContainerResponse{} } func (*StopContainerResponse) ProtoMessage() {} func (*StopContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{70} + return fileDescriptor_00212fb1f9d3bf1c, []int{71} } func (m *StopContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5314,7 +5428,7 @@ type RemoveContainerRequest struct { func (m *RemoveContainerRequest) Reset() { *m = RemoveContainerRequest{} } func (*RemoveContainerRequest) ProtoMessage() {} func (*RemoveContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{71} + return fileDescriptor_00212fb1f9d3bf1c, []int{72} } func (m *RemoveContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5358,7 +5472,7 @@ type RemoveContainerResponse struct { func (m *RemoveContainerResponse) Reset() { *m = RemoveContainerResponse{} } func (*RemoveContainerResponse) ProtoMessage() {} func (*RemoveContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{72} + return fileDescriptor_00212fb1f9d3bf1c, []int{73} } func (m *RemoveContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5398,7 +5512,7 @@ type ContainerStateValue struct { func (m *ContainerStateValue) Reset() { *m = ContainerStateValue{} } func (*ContainerStateValue) ProtoMessage() {} func (*ContainerStateValue) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{73} + return fileDescriptor_00212fb1f9d3bf1c, []int{74} } func (m *ContainerStateValue) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5454,7 +5568,7 @@ type ContainerFilter struct { func (m *ContainerFilter) Reset() { *m = ContainerFilter{} } func (*ContainerFilter) ProtoMessage() {} func (*ContainerFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{74} + return fileDescriptor_00212fb1f9d3bf1c, []int{75} } func (m *ContainerFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5520,7 +5634,7 @@ type ListContainersRequest struct { func (m *ListContainersRequest) Reset() { *m = ListContainersRequest{} } func (*ListContainersRequest) ProtoMessage() {} func (*ListContainersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{75} + return fileDescriptor_00212fb1f9d3bf1c, []int{76} } func (m *ListContainersRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5598,7 +5712,7 @@ type Container struct { func (m *Container) Reset() { *m = Container{} } func (*Container) ProtoMessage() {} func (*Container) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{76} + return fileDescriptor_00212fb1f9d3bf1c, []int{77} } func (m *Container) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5707,7 +5821,7 @@ type ListContainersResponse struct { func (m *ListContainersResponse) Reset() { *m = ListContainersResponse{} } func (*ListContainersResponse) ProtoMessage() {} func (*ListContainersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{77} + return fileDescriptor_00212fb1f9d3bf1c, []int{78} } func (m *ListContainersResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5755,7 +5869,7 @@ type ContainerStatusRequest struct { func (m *ContainerStatusRequest) Reset() { *m = ContainerStatusRequest{} } func (*ContainerStatusRequest) ProtoMessage() {} func (*ContainerStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{78} + return fileDescriptor_00212fb1f9d3bf1c, []int{79} } func (m *ContainerStatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5844,15 +5958,17 @@ type ContainerStatus struct { // runtimes to reference images by digest. To separate and avoid possible // misusage, we now introduce the image_id field, which should always refer // to a unique image identifier on the node. - ImageId string `protobuf:"bytes,17,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_sizecache int32 `json:"-"` + ImageId string `protobuf:"bytes,17,opt,name=image_id,json=imageId,proto3" json:"image_id,omitempty"` + // User identities initially attached to the container + User *ContainerUser `protobuf:"bytes,18,opt,name=user,proto3" json:"user,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ContainerStatus) Reset() { *m = ContainerStatus{} } func (*ContainerStatus) ProtoMessage() {} func (*ContainerStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{79} + return fileDescriptor_00212fb1f9d3bf1c, []int{80} } func (m *ContainerStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6000,6 +6116,13 @@ func (m *ContainerStatus) GetImageId() string { return "" } +func (m *ContainerStatus) GetUser() *ContainerUser { + if m != nil { + return m.User + } + return nil +} + type ContainerStatusResponse struct { // Status of the container. Status *ContainerStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` @@ -6015,7 +6138,7 @@ type ContainerStatusResponse struct { func (m *ContainerStatusResponse) Reset() { *m = ContainerStatusResponse{} } func (*ContainerStatusResponse) ProtoMessage() {} func (*ContainerStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{80} + return fileDescriptor_00212fb1f9d3bf1c, []int{81} } func (m *ContainerStatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6071,7 +6194,7 @@ type ContainerResources struct { func (m *ContainerResources) Reset() { *m = ContainerResources{} } func (*ContainerResources) ProtoMessage() {} func (*ContainerResources) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{81} + return fileDescriptor_00212fb1f9d3bf1c, []int{82} } func (m *ContainerResources) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6114,6 +6237,53 @@ func (m *ContainerResources) GetWindows() *WindowsContainerResources { return nil } +type ContainerUser struct { + // User identities initially attached to first process in the Linux container. + // Note that the actual running identity can be changed if the process has enough privilege to do so. + Linux *LinuxContainerUser `protobuf:"bytes,1,opt,name=linux,proto3" json:"linux,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ContainerUser) Reset() { *m = ContainerUser{} } +func (*ContainerUser) ProtoMessage() {} +func (*ContainerUser) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{83} +} +func (m *ContainerUser) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ContainerUser) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ContainerUser.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ContainerUser) XXX_Merge(src proto.Message) { + xxx_messageInfo_ContainerUser.Merge(m, src) +} +func (m *ContainerUser) XXX_Size() int { + return m.Size() +} +func (m *ContainerUser) XXX_DiscardUnknown() { + xxx_messageInfo_ContainerUser.DiscardUnknown(m) +} + +var xxx_messageInfo_ContainerUser proto.InternalMessageInfo + +func (m *ContainerUser) GetLinux() *LinuxContainerUser { + if m != nil { + return m.Linux + } + return nil +} + type UpdateContainerResourcesRequest struct { // ID of the container to update. ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` @@ -6132,7 +6302,7 @@ type UpdateContainerResourcesRequest struct { func (m *UpdateContainerResourcesRequest) Reset() { *m = UpdateContainerResourcesRequest{} } func (*UpdateContainerResourcesRequest) ProtoMessage() {} func (*UpdateContainerResourcesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{82} + return fileDescriptor_00212fb1f9d3bf1c, []int{84} } func (m *UpdateContainerResourcesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6197,7 +6367,7 @@ type UpdateContainerResourcesResponse struct { func (m *UpdateContainerResourcesResponse) Reset() { *m = UpdateContainerResourcesResponse{} } func (*UpdateContainerResourcesResponse) ProtoMessage() {} func (*UpdateContainerResourcesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{83} + return fileDescriptor_00212fb1f9d3bf1c, []int{85} } func (m *UpdateContainerResourcesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6240,7 +6410,7 @@ type ExecSyncRequest struct { func (m *ExecSyncRequest) Reset() { *m = ExecSyncRequest{} } func (*ExecSyncRequest) ProtoMessage() {} func (*ExecSyncRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{84} + return fileDescriptor_00212fb1f9d3bf1c, []int{86} } func (m *ExecSyncRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6312,7 +6482,7 @@ type ExecSyncResponse struct { func (m *ExecSyncResponse) Reset() { *m = ExecSyncResponse{} } func (*ExecSyncResponse) ProtoMessage() {} func (*ExecSyncResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{85} + return fileDescriptor_00212fb1f9d3bf1c, []int{87} } func (m *ExecSyncResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6388,7 +6558,7 @@ type ExecRequest struct { func (m *ExecRequest) Reset() { *m = ExecRequest{} } func (*ExecRequest) ProtoMessage() {} func (*ExecRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{86} + return fileDescriptor_00212fb1f9d3bf1c, []int{88} } func (m *ExecRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6469,7 +6639,7 @@ type ExecResponse struct { func (m *ExecResponse) Reset() { *m = ExecResponse{} } func (*ExecResponse) ProtoMessage() {} func (*ExecResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{87} + return fileDescriptor_00212fb1f9d3bf1c, []int{89} } func (m *ExecResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6530,7 +6700,7 @@ type AttachRequest struct { func (m *AttachRequest) Reset() { *m = AttachRequest{} } func (*AttachRequest) ProtoMessage() {} func (*AttachRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{88} + return fileDescriptor_00212fb1f9d3bf1c, []int{90} } func (m *AttachRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6604,7 +6774,7 @@ type AttachResponse struct { func (m *AttachResponse) Reset() { *m = AttachResponse{} } func (*AttachResponse) ProtoMessage() {} func (*AttachResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{89} + return fileDescriptor_00212fb1f9d3bf1c, []int{91} } func (m *AttachResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6652,7 +6822,7 @@ type PortForwardRequest struct { func (m *PortForwardRequest) Reset() { *m = PortForwardRequest{} } func (*PortForwardRequest) ProtoMessage() {} func (*PortForwardRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{90} + return fileDescriptor_00212fb1f9d3bf1c, []int{92} } func (m *PortForwardRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6705,7 +6875,7 @@ type PortForwardResponse struct { func (m *PortForwardResponse) Reset() { *m = PortForwardResponse{} } func (*PortForwardResponse) ProtoMessage() {} func (*PortForwardResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{91} + return fileDescriptor_00212fb1f9d3bf1c, []int{93} } func (m *PortForwardResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6751,7 +6921,7 @@ type ImageFilter struct { func (m *ImageFilter) Reset() { *m = ImageFilter{} } func (*ImageFilter) ProtoMessage() {} func (*ImageFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{92} + return fileDescriptor_00212fb1f9d3bf1c, []int{94} } func (m *ImageFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6797,7 +6967,7 @@ type ListImagesRequest struct { func (m *ListImagesRequest) Reset() { *m = ListImagesRequest{} } func (*ListImagesRequest) ProtoMessage() {} func (*ListImagesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{93} + return fileDescriptor_00212fb1f9d3bf1c, []int{95} } func (m *ListImagesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6863,7 +7033,7 @@ type Image struct { func (m *Image) Reset() { *m = Image{} } func (*Image) ProtoMessage() {} func (*Image) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{94} + return fileDescriptor_00212fb1f9d3bf1c, []int{96} } func (m *Image) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6958,7 +7128,7 @@ type ListImagesResponse struct { func (m *ListImagesResponse) Reset() { *m = ListImagesResponse{} } func (*ListImagesResponse) ProtoMessage() {} func (*ListImagesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{95} + return fileDescriptor_00212fb1f9d3bf1c, []int{97} } func (m *ListImagesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7006,7 +7176,7 @@ type ImageStatusRequest struct { func (m *ImageStatusRequest) Reset() { *m = ImageStatusRequest{} } func (*ImageStatusRequest) ProtoMessage() {} func (*ImageStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{96} + return fileDescriptor_00212fb1f9d3bf1c, []int{98} } func (m *ImageStatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7064,7 +7234,7 @@ type ImageStatusResponse struct { func (m *ImageStatusResponse) Reset() { *m = ImageStatusResponse{} } func (*ImageStatusResponse) ProtoMessage() {} func (*ImageStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{97} + return fileDescriptor_00212fb1f9d3bf1c, []int{99} } func (m *ImageStatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7125,7 +7295,7 @@ type AuthConfig struct { func (m *AuthConfig) Reset() { *m = AuthConfig{} } func (*AuthConfig) ProtoMessage() {} func (*AuthConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{98} + return fileDescriptor_00212fb1f9d3bf1c, []int{100} } func (m *AuthConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7210,7 +7380,7 @@ type PullImageRequest struct { func (m *PullImageRequest) Reset() { *m = PullImageRequest{} } func (*PullImageRequest) ProtoMessage() {} func (*PullImageRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{99} + return fileDescriptor_00212fb1f9d3bf1c, []int{101} } func (m *PullImageRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7271,7 +7441,7 @@ type PullImageResponse struct { func (m *PullImageResponse) Reset() { *m = PullImageResponse{} } func (*PullImageResponse) ProtoMessage() {} func (*PullImageResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{100} + return fileDescriptor_00212fb1f9d3bf1c, []int{102} } func (m *PullImageResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7317,7 +7487,7 @@ type RemoveImageRequest struct { func (m *RemoveImageRequest) Reset() { *m = RemoveImageRequest{} } func (*RemoveImageRequest) ProtoMessage() {} func (*RemoveImageRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{101} + return fileDescriptor_00212fb1f9d3bf1c, []int{103} } func (m *RemoveImageRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7361,7 +7531,7 @@ type RemoveImageResponse struct { func (m *RemoveImageResponse) Reset() { *m = RemoveImageResponse{} } func (*RemoveImageResponse) ProtoMessage() {} func (*RemoveImageResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{102} + return fileDescriptor_00212fb1f9d3bf1c, []int{104} } func (m *RemoveImageResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7401,7 +7571,7 @@ type NetworkConfig struct { func (m *NetworkConfig) Reset() { *m = NetworkConfig{} } func (*NetworkConfig) ProtoMessage() {} func (*NetworkConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{103} + return fileDescriptor_00212fb1f9d3bf1c, []int{105} } func (m *NetworkConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7446,7 +7616,7 @@ type RuntimeConfig struct { func (m *RuntimeConfig) Reset() { *m = RuntimeConfig{} } func (*RuntimeConfig) ProtoMessage() {} func (*RuntimeConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{104} + return fileDescriptor_00212fb1f9d3bf1c, []int{106} } func (m *RuntimeConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7491,7 +7661,7 @@ type UpdateRuntimeConfigRequest struct { func (m *UpdateRuntimeConfigRequest) Reset() { *m = UpdateRuntimeConfigRequest{} } func (*UpdateRuntimeConfigRequest) ProtoMessage() {} func (*UpdateRuntimeConfigRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{105} + return fileDescriptor_00212fb1f9d3bf1c, []int{107} } func (m *UpdateRuntimeConfigRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7535,7 +7705,7 @@ type UpdateRuntimeConfigResponse struct { func (m *UpdateRuntimeConfigResponse) Reset() { *m = UpdateRuntimeConfigResponse{} } func (*UpdateRuntimeConfigResponse) ProtoMessage() {} func (*UpdateRuntimeConfigResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{106} + return fileDescriptor_00212fb1f9d3bf1c, []int{108} } func (m *UpdateRuntimeConfigResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7594,7 +7764,7 @@ type RuntimeCondition struct { func (m *RuntimeCondition) Reset() { *m = RuntimeCondition{} } func (*RuntimeCondition) ProtoMessage() {} func (*RuntimeCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{107} + return fileDescriptor_00212fb1f9d3bf1c, []int{109} } func (m *RuntimeCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7662,7 +7832,7 @@ type RuntimeStatus struct { func (m *RuntimeStatus) Reset() { *m = RuntimeStatus{} } func (*RuntimeStatus) ProtoMessage() {} func (*RuntimeStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{108} + return fileDescriptor_00212fb1f9d3bf1c, []int{110} } func (m *RuntimeStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7708,7 +7878,7 @@ type StatusRequest struct { func (m *StatusRequest) Reset() { *m = StatusRequest{} } func (*StatusRequest) ProtoMessage() {} func (*StatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{109} + return fileDescriptor_00212fb1f9d3bf1c, []int{111} } func (m *StatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7760,7 +7930,7 @@ type RuntimeHandlerFeatures struct { func (m *RuntimeHandlerFeatures) Reset() { *m = RuntimeHandlerFeatures{} } func (*RuntimeHandlerFeatures) ProtoMessage() {} func (*RuntimeHandlerFeatures) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{110} + return fileDescriptor_00212fb1f9d3bf1c, []int{112} } func (m *RuntimeHandlerFeatures) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7816,7 +7986,7 @@ type RuntimeHandler struct { func (m *RuntimeHandler) Reset() { *m = RuntimeHandler{} } func (*RuntimeHandler) ProtoMessage() {} func (*RuntimeHandler) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{111} + return fileDescriptor_00212fb1f9d3bf1c, []int{113} } func (m *RuntimeHandler) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7876,7 +8046,7 @@ type StatusResponse struct { func (m *StatusResponse) Reset() { *m = StatusResponse{} } func (*StatusResponse) ProtoMessage() {} func (*StatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{112} + return fileDescriptor_00212fb1f9d3bf1c, []int{114} } func (m *StatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7934,7 +8104,7 @@ type ImageFsInfoRequest struct { func (m *ImageFsInfoRequest) Reset() { *m = ImageFsInfoRequest{} } func (*ImageFsInfoRequest) ProtoMessage() {} func (*ImageFsInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{113} + return fileDescriptor_00212fb1f9d3bf1c, []int{115} } func (m *ImageFsInfoRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7974,7 +8144,7 @@ type UInt64Value struct { func (m *UInt64Value) Reset() { *m = UInt64Value{} } func (*UInt64Value) ProtoMessage() {} func (*UInt64Value) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{114} + return fileDescriptor_00212fb1f9d3bf1c, []int{116} } func (m *UInt64Value) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8021,7 +8191,7 @@ type FilesystemIdentifier struct { func (m *FilesystemIdentifier) Reset() { *m = FilesystemIdentifier{} } func (*FilesystemIdentifier) ProtoMessage() {} func (*FilesystemIdentifier) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{115} + return fileDescriptor_00212fb1f9d3bf1c, []int{117} } func (m *FilesystemIdentifier) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8078,7 +8248,7 @@ type FilesystemUsage struct { func (m *FilesystemUsage) Reset() { *m = FilesystemUsage{} } func (*FilesystemUsage) ProtoMessage() {} func (*FilesystemUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{116} + return fileDescriptor_00212fb1f9d3bf1c, []int{118} } func (m *FilesystemUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8152,7 +8322,7 @@ type WindowsFilesystemUsage struct { func (m *WindowsFilesystemUsage) Reset() { *m = WindowsFilesystemUsage{} } func (*WindowsFilesystemUsage) ProtoMessage() {} func (*WindowsFilesystemUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{117} + return fileDescriptor_00212fb1f9d3bf1c, []int{119} } func (m *WindowsFilesystemUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8217,7 +8387,7 @@ type ImageFsInfoResponse struct { func (m *ImageFsInfoResponse) Reset() { *m = ImageFsInfoResponse{} } func (*ImageFsInfoResponse) ProtoMessage() {} func (*ImageFsInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{118} + return fileDescriptor_00212fb1f9d3bf1c, []int{120} } func (m *ImageFsInfoResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8270,7 +8440,7 @@ type ContainerStatsRequest struct { func (m *ContainerStatsRequest) Reset() { *m = ContainerStatsRequest{} } func (*ContainerStatsRequest) ProtoMessage() {} func (*ContainerStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{119} + return fileDescriptor_00212fb1f9d3bf1c, []int{121} } func (m *ContainerStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8316,7 +8486,7 @@ type ContainerStatsResponse struct { func (m *ContainerStatsResponse) Reset() { *m = ContainerStatsResponse{} } func (*ContainerStatsResponse) ProtoMessage() {} func (*ContainerStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{120} + return fileDescriptor_00212fb1f9d3bf1c, []int{122} } func (m *ContainerStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8362,7 +8532,7 @@ type ListContainerStatsRequest struct { func (m *ListContainerStatsRequest) Reset() { *m = ListContainerStatsRequest{} } func (*ListContainerStatsRequest) ProtoMessage() {} func (*ListContainerStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{121} + return fileDescriptor_00212fb1f9d3bf1c, []int{123} } func (m *ListContainerStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8416,7 +8586,7 @@ type ContainerStatsFilter struct { func (m *ContainerStatsFilter) Reset() { *m = ContainerStatsFilter{} } func (*ContainerStatsFilter) ProtoMessage() {} func (*ContainerStatsFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{122} + return fileDescriptor_00212fb1f9d3bf1c, []int{124} } func (m *ContainerStatsFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8476,7 +8646,7 @@ type ListContainerStatsResponse struct { func (m *ListContainerStatsResponse) Reset() { *m = ListContainerStatsResponse{} } func (*ListContainerStatsResponse) ProtoMessage() {} func (*ListContainerStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{123} + return fileDescriptor_00212fb1f9d3bf1c, []int{125} } func (m *ListContainerStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8532,7 +8702,7 @@ type ContainerAttributes struct { func (m *ContainerAttributes) Reset() { *m = ContainerAttributes{} } func (*ContainerAttributes) ProtoMessage() {} func (*ContainerAttributes) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{124} + return fileDescriptor_00212fb1f9d3bf1c, []int{126} } func (m *ContainerAttributes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8608,7 +8778,7 @@ type ContainerStats struct { func (m *ContainerStats) Reset() { *m = ContainerStats{} } func (*ContainerStats) ProtoMessage() {} func (*ContainerStats) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{125} + return fileDescriptor_00212fb1f9d3bf1c, []int{127} } func (m *ContainerStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8689,7 +8859,7 @@ type WindowsContainerStats struct { func (m *WindowsContainerStats) Reset() { *m = WindowsContainerStats{} } func (*WindowsContainerStats) ProtoMessage() {} func (*WindowsContainerStats) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{126} + return fileDescriptor_00212fb1f9d3bf1c, []int{128} } func (m *WindowsContainerStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8762,7 +8932,7 @@ type CpuUsage struct { func (m *CpuUsage) Reset() { *m = CpuUsage{} } func (*CpuUsage) ProtoMessage() {} func (*CpuUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{127} + return fileDescriptor_00212fb1f9d3bf1c, []int{129} } func (m *CpuUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8828,7 +8998,7 @@ type WindowsCpuUsage struct { func (m *WindowsCpuUsage) Reset() { *m = WindowsCpuUsage{} } func (*WindowsCpuUsage) ProtoMessage() {} func (*WindowsCpuUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{128} + return fileDescriptor_00212fb1f9d3bf1c, []int{130} } func (m *WindowsCpuUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8901,7 +9071,7 @@ type MemoryUsage struct { func (m *MemoryUsage) Reset() { *m = MemoryUsage{} } func (*MemoryUsage) ProtoMessage() {} func (*MemoryUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{129} + return fileDescriptor_00212fb1f9d3bf1c, []int{131} } func (m *MemoryUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8993,7 +9163,7 @@ type SwapUsage struct { func (m *SwapUsage) Reset() { *m = SwapUsage{} } func (*SwapUsage) ProtoMessage() {} func (*SwapUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{130} + return fileDescriptor_00212fb1f9d3bf1c, []int{132} } func (m *SwapUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9062,7 +9232,7 @@ type WindowsMemoryUsage struct { func (m *WindowsMemoryUsage) Reset() { *m = WindowsMemoryUsage{} } func (*WindowsMemoryUsage) ProtoMessage() {} func (*WindowsMemoryUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{131} + return fileDescriptor_00212fb1f9d3bf1c, []int{133} } func (m *WindowsMemoryUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9136,7 +9306,7 @@ type ReopenContainerLogRequest struct { func (m *ReopenContainerLogRequest) Reset() { *m = ReopenContainerLogRequest{} } func (*ReopenContainerLogRequest) ProtoMessage() {} func (*ReopenContainerLogRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{132} + return fileDescriptor_00212fb1f9d3bf1c, []int{134} } func (m *ReopenContainerLogRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9180,7 +9350,7 @@ type ReopenContainerLogResponse struct { func (m *ReopenContainerLogResponse) Reset() { *m = ReopenContainerLogResponse{} } func (*ReopenContainerLogResponse) ProtoMessage() {} func (*ReopenContainerLogResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{133} + return fileDescriptor_00212fb1f9d3bf1c, []int{135} } func (m *ReopenContainerLogResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9225,7 +9395,7 @@ type CheckpointContainerRequest struct { func (m *CheckpointContainerRequest) Reset() { *m = CheckpointContainerRequest{} } func (*CheckpointContainerRequest) ProtoMessage() {} func (*CheckpointContainerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{134} + return fileDescriptor_00212fb1f9d3bf1c, []int{136} } func (m *CheckpointContainerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9283,7 +9453,7 @@ type CheckpointContainerResponse struct { func (m *CheckpointContainerResponse) Reset() { *m = CheckpointContainerResponse{} } func (*CheckpointContainerResponse) ProtoMessage() {} func (*CheckpointContainerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{135} + return fileDescriptor_00212fb1f9d3bf1c, []int{137} } func (m *CheckpointContainerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9320,7 +9490,7 @@ type GetEventsRequest struct { func (m *GetEventsRequest) Reset() { *m = GetEventsRequest{} } func (*GetEventsRequest) ProtoMessage() {} func (*GetEventsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{136} + return fileDescriptor_00212fb1f9d3bf1c, []int{138} } func (m *GetEventsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9367,7 +9537,7 @@ type ContainerEventResponse struct { func (m *ContainerEventResponse) Reset() { *m = ContainerEventResponse{} } func (*ContainerEventResponse) ProtoMessage() {} func (*ContainerEventResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{137} + return fileDescriptor_00212fb1f9d3bf1c, []int{139} } func (m *ContainerEventResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9439,7 +9609,7 @@ type ListMetricDescriptorsRequest struct { func (m *ListMetricDescriptorsRequest) Reset() { *m = ListMetricDescriptorsRequest{} } func (*ListMetricDescriptorsRequest) ProtoMessage() {} func (*ListMetricDescriptorsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{138} + return fileDescriptor_00212fb1f9d3bf1c, []int{140} } func (m *ListMetricDescriptorsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9477,7 +9647,7 @@ type ListMetricDescriptorsResponse struct { func (m *ListMetricDescriptorsResponse) Reset() { *m = ListMetricDescriptorsResponse{} } func (*ListMetricDescriptorsResponse) ProtoMessage() {} func (*ListMetricDescriptorsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{139} + return fileDescriptor_00212fb1f9d3bf1c, []int{141} } func (m *ListMetricDescriptorsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9530,7 +9700,7 @@ type MetricDescriptor struct { func (m *MetricDescriptor) Reset() { *m = MetricDescriptor{} } func (*MetricDescriptor) ProtoMessage() {} func (*MetricDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{140} + return fileDescriptor_00212fb1f9d3bf1c, []int{142} } func (m *MetricDescriptor) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9588,7 +9758,7 @@ type ListPodSandboxMetricsRequest struct { func (m *ListPodSandboxMetricsRequest) Reset() { *m = ListPodSandboxMetricsRequest{} } func (*ListPodSandboxMetricsRequest) ProtoMessage() {} func (*ListPodSandboxMetricsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{141} + return fileDescriptor_00212fb1f9d3bf1c, []int{143} } func (m *ListPodSandboxMetricsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9626,7 +9796,7 @@ type ListPodSandboxMetricsResponse struct { func (m *ListPodSandboxMetricsResponse) Reset() { *m = ListPodSandboxMetricsResponse{} } func (*ListPodSandboxMetricsResponse) ProtoMessage() {} func (*ListPodSandboxMetricsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{142} + return fileDescriptor_00212fb1f9d3bf1c, []int{144} } func (m *ListPodSandboxMetricsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9673,7 +9843,7 @@ type PodSandboxMetrics struct { func (m *PodSandboxMetrics) Reset() { *m = PodSandboxMetrics{} } func (*PodSandboxMetrics) ProtoMessage() {} func (*PodSandboxMetrics) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{143} + return fileDescriptor_00212fb1f9d3bf1c, []int{145} } func (m *PodSandboxMetrics) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9733,7 +9903,7 @@ type ContainerMetrics struct { func (m *ContainerMetrics) Reset() { *m = ContainerMetrics{} } func (*ContainerMetrics) ProtoMessage() {} func (*ContainerMetrics) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{144} + return fileDescriptor_00212fb1f9d3bf1c, []int{146} } func (m *ContainerMetrics) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9796,7 +9966,7 @@ type Metric struct { func (m *Metric) Reset() { *m = Metric{} } func (*Metric) ProtoMessage() {} func (*Metric) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{145} + return fileDescriptor_00212fb1f9d3bf1c, []int{147} } func (m *Metric) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9868,7 +10038,7 @@ type RuntimeConfigRequest struct { func (m *RuntimeConfigRequest) Reset() { *m = RuntimeConfigRequest{} } func (*RuntimeConfigRequest) ProtoMessage() {} func (*RuntimeConfigRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{146} + return fileDescriptor_00212fb1f9d3bf1c, []int{148} } func (m *RuntimeConfigRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9909,7 +10079,7 @@ type RuntimeConfigResponse struct { func (m *RuntimeConfigResponse) Reset() { *m = RuntimeConfigResponse{} } func (*RuntimeConfigResponse) ProtoMessage() {} func (*RuntimeConfigResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{147} + return fileDescriptor_00212fb1f9d3bf1c, []int{149} } func (m *RuntimeConfigResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -9961,7 +10131,7 @@ type LinuxRuntimeConfiguration struct { func (m *LinuxRuntimeConfiguration) Reset() { *m = LinuxRuntimeConfiguration{} } func (*LinuxRuntimeConfiguration) ProtoMessage() {} func (*LinuxRuntimeConfiguration) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{148} + return fileDescriptor_00212fb1f9d3bf1c, []int{150} } func (m *LinuxRuntimeConfiguration) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -10001,6 +10171,7 @@ func init() { proto.RegisterEnum("runtime.v1.Protocol", Protocol_name, Protocol_value) proto.RegisterEnum("runtime.v1.MountPropagation", MountPropagation_name, MountPropagation_value) proto.RegisterEnum("runtime.v1.NamespaceMode", NamespaceMode_name, NamespaceMode_value) + proto.RegisterEnum("runtime.v1.SupplementalGroupsPolicy", SupplementalGroupsPolicy_name, SupplementalGroupsPolicy_value) proto.RegisterEnum("runtime.v1.PodSandboxState", PodSandboxState_name, PodSandboxState_value) proto.RegisterEnum("runtime.v1.ContainerState", ContainerState_name, ContainerState_value) proto.RegisterEnum("runtime.v1.ContainerEventType", ContainerEventType_name, ContainerEventType_value) @@ -10076,6 +10247,7 @@ func init() { proto.RegisterType((*Capability)(nil), "runtime.v1.Capability") proto.RegisterType((*LinuxContainerSecurityContext)(nil), "runtime.v1.LinuxContainerSecurityContext") proto.RegisterType((*LinuxContainerConfig)(nil), "runtime.v1.LinuxContainerConfig") + proto.RegisterType((*LinuxContainerUser)(nil), "runtime.v1.LinuxContainerUser") proto.RegisterType((*WindowsNamespaceOption)(nil), "runtime.v1.WindowsNamespaceOption") proto.RegisterType((*WindowsSandboxSecurityContext)(nil), "runtime.v1.WindowsSandboxSecurityContext") proto.RegisterType((*WindowsPodSandboxConfig)(nil), "runtime.v1.WindowsPodSandboxConfig") @@ -10111,6 +10283,7 @@ func init() { proto.RegisterType((*ContainerStatusResponse)(nil), "runtime.v1.ContainerStatusResponse") proto.RegisterMapType((map[string]string)(nil), "runtime.v1.ContainerStatusResponse.InfoEntry") proto.RegisterType((*ContainerResources)(nil), "runtime.v1.ContainerResources") + proto.RegisterType((*ContainerUser)(nil), "runtime.v1.ContainerUser") proto.RegisterType((*UpdateContainerResourcesRequest)(nil), "runtime.v1.UpdateContainerResourcesRequest") proto.RegisterMapType((map[string]string)(nil), "runtime.v1.UpdateContainerResourcesRequest.AnnotationsEntry") proto.RegisterType((*UpdateContainerResourcesResponse)(nil), "runtime.v1.UpdateContainerResourcesResponse") @@ -10189,443 +10362,450 @@ func init() { func init() { proto.RegisterFile("api.proto", fileDescriptor_00212fb1f9d3bf1c) } var fileDescriptor_00212fb1f9d3bf1c = []byte{ - // 6961 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x5d, 0x4b, 0x6c, 0x24, 0x49, - 0x5a, 0x76, 0x56, 0x95, 0xed, 0xaa, 0xbf, 0x5c, 0x76, 0x39, 0xda, 0x6d, 0xbb, 0xab, 0xdf, 0x39, - 0xaf, 0xee, 0x9e, 0xe9, 0xc7, 0xf4, 0xbc, 0xba, 0x7b, 0x5e, 0x5d, 0x6d, 0xbb, 0x7b, 0x6a, 0xb6, - 0xdb, 0xae, 0xcd, 0xb2, 0x67, 0x77, 0x66, 0xd1, 0x26, 0xd9, 0x95, 0xe1, 0x72, 0x4e, 0x57, 0x65, - 0xe6, 0x66, 0x66, 0xb9, 0xdb, 0x7b, 0x40, 0x9c, 0x10, 0xec, 0x69, 0x25, 0x58, 0x21, 0x56, 0x08, - 0xc4, 0x01, 0xc1, 0x0d, 0x76, 0x25, 0x60, 0x11, 0x2f, 0x09, 0xc1, 0x6a, 0x41, 0x42, 0xe2, 0x00, - 0xd2, 0x1e, 0x90, 0xd8, 0x1d, 0x90, 0x90, 0x38, 0xa2, 0x3d, 0x70, 0x81, 0x45, 0xf1, 0xca, 0xcc, - 0xc8, 0x47, 0x55, 0xd9, 0x33, 0xcc, 0xcc, 0x9e, 0x5c, 0x19, 0xf1, 0xff, 0x7f, 0x44, 0xfc, 0xf1, - 0xc7, 0x1f, 0x7f, 0x44, 0x7c, 0x11, 0x86, 0x8a, 0xe1, 0x5a, 0x57, 0x5c, 0xcf, 0x09, 0x1c, 0x04, - 0xde, 0xd0, 0x0e, 0xac, 0x01, 0xbe, 0xb2, 0xff, 0x62, 0xe3, 0x72, 0xcf, 0x0a, 0xf6, 0x86, 0x0f, - 0xaf, 0x74, 0x9d, 0xc1, 0xd5, 0x9e, 0xd3, 0x73, 0xae, 0x52, 0x92, 0x87, 0xc3, 0x5d, 0xfa, 0x45, - 0x3f, 0xe8, 0x2f, 0xc6, 0xaa, 0x5e, 0x82, 0xf9, 0xf7, 0xb0, 0xe7, 0x5b, 0x8e, 0xad, 0xe1, 0xaf, - 0x0d, 0xb1, 0x1f, 0xa0, 0x55, 0x98, 0xdd, 0x67, 0x29, 0xab, 0xca, 0x39, 0xe5, 0x42, 0x45, 0x13, - 0x9f, 0xea, 0xef, 0x29, 0xb0, 0x10, 0x12, 0xfb, 0xae, 0x63, 0xfb, 0x38, 0x9f, 0x1a, 0x9d, 0x87, - 0x39, 0x5e, 0x2d, 0xdd, 0x36, 0x06, 0x78, 0xb5, 0x40, 0xb3, 0xab, 0x3c, 0x6d, 0xd3, 0x18, 0x60, - 0xf4, 0x1c, 0x2c, 0x08, 0x12, 0x21, 0xa4, 0x48, 0xa9, 0xe6, 0x79, 0x32, 0x2f, 0x0d, 0x5d, 0x81, - 0x63, 0x82, 0xd0, 0x70, 0xad, 0x90, 0xb8, 0x44, 0x89, 0x17, 0x79, 0x56, 0xd3, 0xb5, 0x38, 0xbd, - 0xfa, 0x15, 0xa8, 0xac, 0x6f, 0x76, 0xd6, 0x1c, 0x7b, 0xd7, 0xea, 0x91, 0x2a, 0xfa, 0xd8, 0x23, - 0x3c, 0xab, 0xca, 0xb9, 0x22, 0xa9, 0x22, 0xff, 0x44, 0x0d, 0x28, 0xfb, 0xd8, 0xf0, 0xba, 0x7b, - 0xd8, 0x5f, 0x2d, 0xd0, 0xac, 0xf0, 0x9b, 0x70, 0x39, 0x6e, 0x60, 0x39, 0xb6, 0xbf, 0x5a, 0x64, - 0x5c, 0xfc, 0x53, 0xfd, 0x4d, 0x05, 0xaa, 0x6d, 0xc7, 0x0b, 0x1e, 0x18, 0xae, 0x6b, 0xd9, 0x3d, - 0x74, 0x0d, 0xca, 0x54, 0x97, 0x5d, 0xa7, 0x4f, 0x75, 0x30, 0x7f, 0x7d, 0xe9, 0x4a, 0xd4, 0x21, - 0x57, 0xda, 0x3c, 0x4f, 0x0b, 0xa9, 0xd0, 0x33, 0x30, 0xdf, 0x75, 0xec, 0xc0, 0xb0, 0x6c, 0xec, - 0xe9, 0xae, 0xe3, 0x05, 0x54, 0x39, 0xd3, 0x5a, 0x2d, 0x4c, 0x25, 0xf2, 0xd1, 0x49, 0xa8, 0xec, - 0x39, 0x7e, 0xc0, 0x28, 0x8a, 0x94, 0xa2, 0x4c, 0x12, 0x68, 0xe6, 0x0a, 0xcc, 0xd2, 0x4c, 0xcb, - 0xe5, 0x6a, 0x98, 0x21, 0x9f, 0x2d, 0x57, 0xfd, 0xaf, 0x02, 0x4c, 0x3f, 0x70, 0x86, 0x76, 0x90, - 0x28, 0xc6, 0x08, 0xf6, 0x78, 0x17, 0xc5, 0x8a, 0x31, 0x82, 0xbd, 0xa8, 0x18, 0x42, 0xc1, 0x7a, - 0x89, 0x15, 0x43, 0x32, 0x1b, 0x50, 0xf6, 0xb0, 0x61, 0x3a, 0x76, 0xff, 0x80, 0x56, 0xa1, 0xac, - 0x85, 0xdf, 0xa4, 0xfb, 0x7c, 0xdc, 0xb7, 0xec, 0xe1, 0x13, 0xdd, 0xc3, 0x7d, 0xe3, 0x21, 0xee, - 0xd3, 0xaa, 0x94, 0xb5, 0x79, 0x9e, 0xac, 0xb1, 0x54, 0xf4, 0x16, 0x54, 0x5d, 0xcf, 0x71, 0x8d, - 0x9e, 0x41, 0x34, 0xb8, 0x3a, 0x4d, 0x95, 0x74, 0x2a, 0xae, 0x24, 0x5a, 0xe1, 0x76, 0x44, 0xa3, - 0xc5, 0x19, 0xd0, 0x6b, 0x50, 0x1d, 0x5a, 0x26, 0xd7, 0xb7, 0xbf, 0x3a, 0x73, 0xae, 0x78, 0xa1, - 0x7a, 0xfd, 0x78, 0x9c, 0xbf, 0xb5, 0xce, 0x73, 0xb5, 0x38, 0x25, 0x61, 0xec, 0xc5, 0x18, 0x67, - 0x47, 0x32, 0xc6, 0x28, 0xa9, 0xc1, 0xe1, 0xee, 0xd0, 0xf3, 0xad, 0x7d, 0xac, 0x93, 0x06, 0xeb, - 0x54, 0x03, 0x65, 0xda, 0xbc, 0xc5, 0x30, 0x4b, 0xc3, 0x86, 0xb9, 0x65, 0xf7, 0x0f, 0x54, 0x1d, - 0x2a, 0xa1, 0xa4, 0xa8, 0x6b, 0x4c, 0xaa, 0xf0, 0x1a, 0xef, 0x1a, 0x93, 0x0c, 0x89, 0xa8, 0x43, - 0x2c, 0x93, 0x2a, 0xbb, 0xa6, 0x55, 0xc3, 0xb4, 0x96, 0x89, 0x96, 0x61, 0xa6, 0x8f, 0xed, 0x5e, - 0xb0, 0x47, 0xb5, 0x5d, 0xd3, 0xf8, 0x97, 0xfa, 0x6b, 0x0a, 0xd4, 0x76, 0x7c, 0xec, 0x91, 0x71, - 0xe3, 0xbb, 0x46, 0x17, 0xa3, 0xcb, 0x50, 0x1a, 0x38, 0x26, 0xe6, 0x26, 0x77, 0x22, 0xde, 0xa8, - 0x90, 0xe8, 0x81, 0x63, 0x62, 0x8d, 0x92, 0xa1, 0x8b, 0x50, 0x1a, 0x5a, 0x26, 0xb3, 0xf3, 0x5c, - 0x1d, 0x50, 0x12, 0x42, 0xda, 0x23, 0xa4, 0xc5, 0x91, 0xa4, 0x84, 0x44, 0xfd, 0xa9, 0x02, 0x0b, - 0x61, 0x69, 0x5b, 0x74, 0x80, 0xa0, 0x97, 0x60, 0xd6, 0xc6, 0xc1, 0x63, 0xc7, 0x7b, 0x34, 0xbe, - 0x6e, 0x82, 0x12, 0x3d, 0x0f, 0x45, 0x97, 0x6b, 0x64, 0x24, 0x03, 0xa1, 0x22, 0xc4, 0x96, 0xdb, - 0xa5, 0x1a, 0x1a, 0x4d, 0x6c, 0xb9, 0x5d, 0x62, 0xde, 0x81, 0xe1, 0xf5, 0x30, 0xed, 0x0f, 0x36, - 0x54, 0xca, 0x2c, 0xa1, 0x65, 0xa2, 0xdb, 0x30, 0x3f, 0xf4, 0xb1, 0x67, 0xfb, 0xba, 0x18, 0xec, - 0xc4, 0x38, 0xab, 0xb2, 0x50, 0x49, 0xef, 0x5a, 0x8d, 0x31, 0x6c, 0x71, 0x6f, 0xa0, 0x02, 0xb4, - 0xec, 0xe0, 0xd5, 0x97, 0xdf, 0x33, 0xfa, 0x43, 0x8c, 0x96, 0x60, 0x7a, 0x9f, 0xfc, 0xa0, 0x2d, - 0x2f, 0x6a, 0xec, 0x43, 0xfd, 0x8b, 0x12, 0x9c, 0xbc, 0x4f, 0x06, 0x44, 0xc7, 0xb0, 0xcd, 0x87, - 0xce, 0x93, 0x0e, 0xb1, 0x1f, 0x2b, 0x38, 0x58, 0x73, 0xec, 0x00, 0x3f, 0x09, 0xd0, 0x3b, 0xb0, - 0x68, 0x0b, 0xf9, 0x61, 0x45, 0x14, 0x5a, 0x91, 0x93, 0x99, 0xad, 0x63, 0x85, 0x6b, 0x75, 0x5b, - 0x4e, 0xf0, 0xd1, 0x9d, 0x68, 0x48, 0x0a, 0x39, 0x85, 0x74, 0x83, 0x3a, 0x1b, 0xb4, 0x36, 0x5c, - 0x8a, 0x18, 0xad, 0x42, 0xc6, 0xab, 0x40, 0x9c, 0xb4, 0x6e, 0xf8, 0x3a, 0x69, 0x29, 0xd5, 0x72, - 0xf5, 0xfa, 0xb2, 0x64, 0x05, 0x61, 0x83, 0xb5, 0x8a, 0x37, 0xb4, 0x9b, 0x3e, 0xd1, 0x10, 0xba, - 0x41, 0x1d, 0x3e, 0xe1, 0xeb, 0x79, 0xce, 0xd0, 0xa5, 0x83, 0x25, 0x9f, 0x11, 0x28, 0xe3, 0x3d, - 0x42, 0x49, 0xe7, 0x01, 0xee, 0x54, 0x74, 0xcf, 0x71, 0x82, 0x5d, 0x5f, 0x38, 0x12, 0x91, 0xac, - 0xd1, 0x54, 0x74, 0x15, 0x8e, 0xf9, 0x43, 0xd7, 0xed, 0xe3, 0x01, 0xb6, 0x03, 0xa3, 0xcf, 0x0a, - 0x22, 0x7d, 0x56, 0xbc, 0x50, 0xd4, 0x50, 0x3c, 0x8b, 0x0a, 0xf6, 0xd1, 0x19, 0x00, 0xd7, 0xb3, - 0xf6, 0xad, 0x3e, 0xee, 0x61, 0x73, 0x75, 0x86, 0x0a, 0x8d, 0xa5, 0xa0, 0x57, 0xc8, 0xdc, 0xd0, - 0xed, 0x3a, 0x03, 0x77, 0xb5, 0x92, 0xd6, 0xb7, 0xe8, 0xa7, 0xb6, 0xe7, 0xec, 0x5a, 0x7d, 0xac, - 0x09, 0x5a, 0xf4, 0x1a, 0x94, 0x0d, 0xd7, 0x35, 0xbc, 0x81, 0xe3, 0xad, 0xc2, 0x78, 0xbe, 0x90, - 0x18, 0xbd, 0x0c, 0x4b, 0x5c, 0x86, 0xee, 0xb2, 0x4c, 0xe6, 0x76, 0x67, 0x89, 0x5d, 0xde, 0x29, - 0xac, 0x2a, 0x1a, 0xe2, 0xf9, 0x9c, 0x97, 0x38, 0x61, 0xf5, 0x6f, 0x14, 0x58, 0x48, 0xc8, 0x44, - 0xef, 0xc2, 0x9c, 0x90, 0x10, 0x1c, 0xb8, 0xc2, 0x0d, 0x3c, 0x37, 0xa2, 0x1a, 0x57, 0xf8, 0xdf, - 0xed, 0x03, 0x17, 0x53, 0xff, 0x2a, 0x3e, 0xd0, 0x53, 0x50, 0xeb, 0x3b, 0x5d, 0xa3, 0x4f, 0xbd, - 0x96, 0x87, 0x77, 0xf9, 0x2c, 0x30, 0x17, 0x26, 0x6a, 0x78, 0x57, 0xbd, 0x0d, 0xd5, 0x98, 0x00, - 0x84, 0x60, 0x5e, 0x63, 0x45, 0xad, 0xe3, 0x5d, 0x63, 0xd8, 0x0f, 0xea, 0x53, 0x68, 0x1e, 0x60, - 0xc7, 0xee, 0x92, 0x59, 0xd7, 0xc6, 0x66, 0x5d, 0x41, 0x35, 0xa8, 0xdc, 0x17, 0x22, 0xea, 0x05, - 0xf5, 0xdb, 0x45, 0x38, 0x4e, 0x0d, 0xaf, 0xed, 0x98, 0x7c, 0x24, 0xf0, 0x29, 0xfa, 0x29, 0xa8, - 0x75, 0x69, 0x5f, 0xea, 0xae, 0xe1, 0x61, 0x3b, 0xe0, 0x13, 0xd5, 0x1c, 0x4b, 0x6c, 0xd3, 0x34, - 0xa4, 0x41, 0xdd, 0xe7, 0x2d, 0xd2, 0xbb, 0x6c, 0xe4, 0x70, 0xe3, 0x96, 0x5a, 0x3d, 0x62, 0xa0, - 0x69, 0x0b, 0x7e, 0x6a, 0xe4, 0xcd, 0xfa, 0x07, 0x7e, 0x37, 0xe8, 0x0b, 0x6f, 0x77, 0x25, 0x25, - 0x2a, 0x59, 0xd9, 0x2b, 0x1d, 0xc6, 0xb0, 0x61, 0x07, 0xde, 0x81, 0x26, 0xd8, 0xd1, 0xdb, 0x50, - 0x76, 0xf6, 0xb1, 0xb7, 0x87, 0x0d, 0xe6, 0x65, 0xaa, 0xd7, 0x9f, 0x4a, 0x89, 0x5a, 0x13, 0x8e, - 0x5e, 0xc3, 0xbe, 0x33, 0xf4, 0xba, 0xd8, 0xd7, 0x42, 0x26, 0xd4, 0x84, 0x8a, 0x27, 0x92, 0xb9, - 0x17, 0x9a, 0x48, 0x42, 0xc4, 0xd5, 0xb8, 0x05, 0x73, 0xf1, 0xca, 0xa1, 0x3a, 0x14, 0x1f, 0xe1, - 0x03, 0xae, 0x4c, 0xf2, 0x33, 0xf2, 0x4f, 0xac, 0x87, 0xd9, 0xc7, 0xad, 0xc2, 0x0d, 0x45, 0xf5, - 0x00, 0x45, 0x2d, 0x7d, 0x80, 0x03, 0xc3, 0x34, 0x02, 0x03, 0x21, 0x28, 0xd1, 0xe0, 0x8d, 0x89, - 0xa0, 0xbf, 0x89, 0xd4, 0x21, 0x77, 0xd5, 0x15, 0x8d, 0xfc, 0x44, 0xa7, 0xa0, 0x12, 0x7a, 0x22, - 0x1e, 0xc1, 0x45, 0x09, 0x24, 0x92, 0x32, 0x82, 0x00, 0x0f, 0xdc, 0x80, 0x2a, 0xa6, 0xa6, 0x89, - 0x4f, 0xf5, 0x57, 0xa6, 0xa1, 0x9e, 0xb2, 0x85, 0x5b, 0x50, 0x1e, 0xf0, 0xe2, 0xb9, 0x0f, 0x3c, - 0x23, 0x85, 0x53, 0xa9, 0x4a, 0x6a, 0x21, 0x3d, 0x89, 0x56, 0x88, 0xad, 0xc5, 0xe2, 0xcd, 0xf0, - 0x9b, 0x19, 0x79, 0x4f, 0x37, 0x2d, 0x0f, 0x77, 0x03, 0xc7, 0x3b, 0xe0, 0x15, 0x9d, 0xeb, 0x3b, - 0xbd, 0x75, 0x91, 0x86, 0x5e, 0x06, 0x30, 0x6d, 0x5f, 0xa7, 0x36, 0xdc, 0xe3, 0xfd, 0x28, 0x4d, - 0x80, 0x61, 0x58, 0xa9, 0x55, 0x4c, 0xdb, 0xe7, 0x55, 0x7e, 0x03, 0x6a, 0x24, 0x46, 0xd3, 0x07, - 0x22, 0xd0, 0x98, 0xa6, 0xb6, 0xb4, 0x22, 0xd7, 0x3b, 0x8c, 0x18, 0xb5, 0x39, 0x37, 0xfa, 0xf0, - 0xd1, 0x6d, 0x98, 0xa1, 0x61, 0x92, 0x08, 0x6c, 0x2e, 0x64, 0x37, 0x97, 0x5b, 0xdf, 0x7d, 0x4a, - 0xca, 0x8c, 0x8f, 0xf3, 0xa1, 0x2d, 0xa8, 0x1a, 0xb6, 0xed, 0x04, 0x06, 0xf3, 0xf8, 0x2c, 0xcc, - 0xb9, 0x3c, 0x52, 0x4c, 0x33, 0xa2, 0x67, 0xb2, 0xe2, 0x12, 0xd0, 0x6b, 0x30, 0x4d, 0xa7, 0x04, - 0xee, 0xc3, 0xcf, 0x8f, 0x1d, 0x14, 0x1a, 0xa3, 0x47, 0x6f, 0xc2, 0xec, 0x63, 0xcb, 0x36, 0x9d, - 0xc7, 0x3e, 0xf7, 0xa7, 0x92, 0x09, 0x7f, 0x89, 0x65, 0xa5, 0x98, 0x05, 0x4f, 0xe3, 0x26, 0x54, - 0x63, 0xed, 0x3b, 0x8c, 0xfd, 0x36, 0xde, 0x82, 0x7a, 0xb2, 0x4d, 0x87, 0xb2, 0xff, 0x21, 0x2c, - 0x69, 0x43, 0x3b, 0xaa, 0x9a, 0x58, 0x0e, 0xbd, 0x0c, 0x33, 0xdc, 0x1a, 0x98, 0x31, 0x9e, 0x1a, - 0xa5, 0x56, 0x8d, 0xd3, 0xc6, 0x57, 0x36, 0x7b, 0x86, 0x6d, 0xf6, 0xb1, 0xc7, 0x4b, 0x14, 0x2b, - 0x9b, 0x77, 0x58, 0xaa, 0xfa, 0x26, 0x1c, 0x4f, 0x14, 0xcb, 0x17, 0x56, 0x4f, 0xc3, 0xbc, 0xeb, - 0x98, 0xba, 0xcf, 0x92, 0x45, 0x2c, 0x59, 0x21, 0xb6, 0x23, 0x68, 0x5b, 0x26, 0x61, 0xef, 0x04, - 0x8e, 0x9b, 0xae, 0xf6, 0x64, 0xec, 0xab, 0xb0, 0x9c, 0x64, 0x67, 0xc5, 0xab, 0x6f, 0xc3, 0x8a, - 0x86, 0x07, 0xce, 0x3e, 0x3e, 0xaa, 0xe8, 0x06, 0xac, 0xa6, 0x05, 0x70, 0xe1, 0xef, 0xc3, 0x4a, - 0x94, 0xda, 0x09, 0x8c, 0x60, 0xe8, 0x1f, 0x4a, 0x38, 0x5f, 0x75, 0x3e, 0x74, 0x7c, 0xd6, 0x91, - 0x65, 0x4d, 0x7c, 0xaa, 0x2b, 0x30, 0xdd, 0x76, 0xcc, 0x56, 0x1b, 0xcd, 0x43, 0xc1, 0x72, 0x39, - 0x73, 0xc1, 0x72, 0xd5, 0x6e, 0xbc, 0xcc, 0x4d, 0x16, 0x75, 0xb2, 0xa2, 0x93, 0xa4, 0xe8, 0x06, - 0xcc, 0x1b, 0xa6, 0x69, 0x11, 0x43, 0x32, 0xfa, 0xba, 0xe5, 0x8a, 0xa0, 0x79, 0x31, 0xd1, 0xf5, - 0xad, 0xb6, 0x56, 0x8b, 0x08, 0x5b, 0xae, 0xaf, 0xde, 0x81, 0x4a, 0x14, 0xa0, 0xbf, 0x12, 0xad, - 0x20, 0x0b, 0xe3, 0x63, 0xb9, 0x70, 0x79, 0xb9, 0x99, 0x9a, 0x24, 0x79, 0x35, 0x5f, 0x01, 0x08, - 0x9d, 0xaa, 0x08, 0x0f, 0x8f, 0x67, 0x8a, 0xd4, 0x62, 0x84, 0xea, 0xbf, 0x96, 0xe2, 0x4e, 0x36, - 0xd6, 0x64, 0x33, 0x6c, 0xb2, 0x29, 0x39, 0xdd, 0xc2, 0x21, 0x9d, 0xee, 0x8b, 0x30, 0xed, 0x07, - 0x46, 0x80, 0x79, 0x3c, 0x7e, 0x32, 0x9b, 0x91, 0x14, 0x8c, 0x35, 0x46, 0x89, 0x4e, 0x03, 0x74, - 0x3d, 0x6c, 0x04, 0xd8, 0xd4, 0x0d, 0x36, 0x2b, 0x14, 0xb5, 0x0a, 0x4f, 0x69, 0x06, 0xc4, 0x8b, - 0x88, 0x15, 0x44, 0xc6, 0x44, 0x98, 0xd3, 0x8d, 0xd1, 0x5a, 0x22, 0xf4, 0x5e, 0x33, 0x63, 0xbd, - 0x17, 0x67, 0xe5, 0xde, 0x2b, 0xf2, 0xc4, 0xb3, 0xa3, 0x3c, 0x31, 0x63, 0x9a, 0xc4, 0x13, 0x97, - 0x47, 0x79, 0x62, 0x2e, 0x66, 0xb4, 0x27, 0xce, 0x70, 0x24, 0x95, 0x2c, 0x47, 0xf2, 0x59, 0xba, - 0xce, 0x3f, 0x2d, 0xc0, 0x6a, 0x7a, 0x3c, 0x73, 0x3f, 0xf6, 0x32, 0xcc, 0xf8, 0x34, 0x65, 0xb4, - 0xff, 0xe4, 0x5c, 0x9c, 0x16, 0xdd, 0x81, 0x92, 0x65, 0xef, 0x3a, 0x7c, 0xe0, 0x5d, 0x19, 0xc9, - 0xc3, 0x4b, 0xba, 0xd2, 0xb2, 0x77, 0x1d, 0xa6, 0x41, 0xca, 0x8b, 0xee, 0xc3, 0xb1, 0x70, 0x65, - 0xed, 0xeb, 0x4c, 0x30, 0x16, 0x71, 0x9e, 0x64, 0xa5, 0x61, 0x54, 0xc5, 0x25, 0xa2, 0x88, 0xaf, - 0xc3, 0xd9, 0x48, 0x8c, 0x43, 0xc8, 0xfd, 0xc0, 0x18, 0xb8, 0xc2, 0x62, 0xc3, 0x84, 0xc6, 0x6b, - 0x50, 0x09, 0x8b, 0x3f, 0x94, 0xee, 0x5a, 0xb0, 0x94, 0x18, 0x23, 0x6c, 0x21, 0x19, 0x0e, 0x2a, - 0x65, 0xd2, 0x41, 0xa5, 0xfe, 0x44, 0x89, 0x0f, 0xf4, 0xbb, 0x56, 0x3f, 0xc0, 0x5e, 0x6a, 0xa0, - 0xbf, 0x2a, 0xe4, 0xb2, 0x51, 0x7e, 0x6e, 0x84, 0x5c, 0xb6, 0x4e, 0xe3, 0x23, 0xf6, 0x3d, 0x98, - 0xa7, 0x26, 0xae, 0xfb, 0xb8, 0x4f, 0x63, 0x25, 0xae, 0xc7, 0xab, 0xd9, 0x02, 0x58, 0xe9, 0x6c, - 0x88, 0x74, 0x38, 0x07, 0xeb, 0x9b, 0x5a, 0x3f, 0x9e, 0xd6, 0xb8, 0x0d, 0x28, 0x4d, 0x74, 0x28, - 0x0d, 0x3e, 0x20, 0xfe, 0xd2, 0x0f, 0x32, 0x67, 0xee, 0x5d, 0x5a, 0x8d, 0xd1, 0x96, 0xc7, 0xaa, - 0xaa, 0x71, 0x5a, 0xf5, 0x9f, 0x8b, 0x00, 0x51, 0xe6, 0xe7, 0xdc, 0x51, 0xde, 0x0a, 0x1d, 0x16, - 0x8b, 0x38, 0xd5, 0x6c, 0x91, 0x99, 0xae, 0xaa, 0x25, 0xbb, 0x2a, 0x16, 0x7b, 0x3e, 0x97, 0x23, - 0xe0, 0xd0, 0x4e, 0x6a, 0xf6, 0xf3, 0xe6, 0xa4, 0xee, 0xc2, 0x72, 0xd2, 0x4c, 0xb8, 0x87, 0x7a, - 0x01, 0xa6, 0xad, 0x00, 0x0f, 0xd8, 0xee, 0x70, 0x62, 0xc3, 0x22, 0x46, 0xce, 0x88, 0xd4, 0xb7, - 0x60, 0x59, 0xee, 0xab, 0xc3, 0x85, 0x2e, 0xea, 0xfd, 0x64, 0xec, 0x13, 0xb9, 0x4a, 0x6e, 0x1f, - 0x99, 0x5b, 0x3f, 0x49, 0x1e, 0x46, 0xa9, 0x7e, 0x5f, 0x81, 0xe3, 0x89, 0xac, 0x9c, 0x81, 0xff, - 0x95, 0xd4, 0x00, 0x66, 0xbe, 0xf5, 0xe5, 0x11, 0xa5, 0x7c, 0x8a, 0xa3, 0xf8, 0x4b, 0xd0, 0x90, - 0xbb, 0x47, 0x52, 0xed, 0xcd, 0xc4, 0x50, 0x3e, 0x3f, 0xb6, 0xd2, 0xe1, 0x78, 0x6e, 0xc3, 0xc9, - 0x4c, 0xc1, 0x69, 0x9d, 0x17, 0x27, 0xd4, 0xf9, 0x7f, 0x17, 0xe2, 0x3e, 0xbb, 0x19, 0x04, 0x9e, - 0xf5, 0x70, 0x18, 0xe0, 0x4f, 0x36, 0xa8, 0x5a, 0x0f, 0x47, 0x36, 0xf3, 0xb3, 0x2f, 0x64, 0x73, - 0x46, 0xa5, 0x67, 0x8e, 0xf1, 0x8e, 0x3c, 0xc6, 0x4b, 0x54, 0xd4, 0x8b, 0x63, 0x45, 0x8d, 0x1c, - 0xed, 0x9f, 0xe5, 0x20, 0xfe, 0x3b, 0x05, 0x16, 0x12, 0xbd, 0x82, 0x6e, 0x03, 0x18, 0x61, 0xd5, - 0xb9, 0x7d, 0x9c, 0x1b, 0xd7, 0x44, 0x2d, 0xc6, 0x43, 0xe6, 0x44, 0x16, 0x2f, 0x66, 0xcc, 0x89, - 0x19, 0xf1, 0x62, 0x18, 0x2e, 0xbe, 0x11, 0x2d, 0x76, 0xd9, 0x26, 0xa9, 0x3a, 0x72, 0xb1, 0xcb, - 0x78, 0x05, 0x8b, 0xfa, 0xab, 0x05, 0x58, 0xca, 0x92, 0x8e, 0x9e, 0x85, 0x62, 0xd7, 0x1d, 0xf2, - 0x96, 0x48, 0x47, 0x49, 0x6b, 0xee, 0x70, 0xc7, 0x37, 0x7a, 0x58, 0x23, 0x04, 0xe8, 0x2a, 0xcc, - 0x0c, 0xf0, 0xc0, 0xf1, 0x0e, 0x78, 0xbd, 0xa5, 0xed, 0x86, 0x07, 0x34, 0x87, 0x51, 0x73, 0x32, - 0x74, 0x3d, 0x0a, 0xab, 0x59, 0x7d, 0x57, 0xa5, 0xd5, 0x03, 0xcb, 0x62, 0x2c, 0x61, 0x2c, 0x7d, - 0x1d, 0x66, 0x5d, 0xcf, 0xe9, 0x62, 0xdf, 0xe7, 0xbb, 0x21, 0xab, 0x89, 0xb3, 0x2d, 0x92, 0xc5, - 0x79, 0x38, 0x21, 0xba, 0x05, 0x10, 0x05, 0x50, 0x7c, 0x66, 0x6a, 0xe4, 0xc6, 0x5b, 0xbe, 0x16, - 0xa3, 0x56, 0xbf, 0x57, 0x80, 0xe5, 0x6c, 0xcd, 0xa1, 0xcb, 0x71, 0xbd, 0x9c, 0xcc, 0x50, 0xb5, - 0xac, 0x9e, 0x57, 0x13, 0xea, 0x39, 0x93, 0xc1, 0x91, 0xa5, 0xa5, 0x9b, 0x49, 0x2d, 0x9d, 0xcd, - 0x60, 0xcc, 0x56, 0xd6, 0xcd, 0xa4, 0xb2, 0xb2, 0x58, 0xb3, 0x75, 0xd6, 0xcc, 0xd0, 0xd9, 0xf9, - 0xac, 0x36, 0xe6, 0xab, 0xee, 0xaf, 0x14, 0x98, 0x8b, 0xd7, 0x4b, 0x0e, 0x59, 0x95, 0x44, 0xc8, - 0x8a, 0x36, 0x61, 0xd1, 0x64, 0x3b, 0xb7, 0xba, 0x65, 0x07, 0xd8, 0xdb, 0x35, 0xba, 0x22, 0x2a, - 0x3c, 0x9f, 0x61, 0x17, 0x2d, 0x41, 0xc3, 0x2a, 0x5e, 0xe7, 0xbc, 0x61, 0x32, 0x69, 0x41, 0x28, - 0x47, 0x78, 0xad, 0x09, 0x04, 0xc5, 0x98, 0xd4, 0x7f, 0x52, 0xe0, 0x58, 0x86, 0x82, 0xc7, 0x34, - 0x64, 0x27, 0xbf, 0x21, 0x17, 0xf2, 0xbb, 0x6e, 0x6c, 0x7b, 0xde, 0xc9, 0x68, 0xcf, 0xe4, 0xf2, - 0xe2, 0xcd, 0xfa, 0xa9, 0x02, 0xc7, 0x33, 0xa9, 0x32, 0xb7, 0x57, 0xaf, 0x43, 0xd9, 0x7b, 0xa2, - 0x3f, 0x3c, 0x08, 0xb0, 0x9f, 0x35, 0xb0, 0x77, 0x62, 0x67, 0x28, 0xb3, 0xde, 0x93, 0x3b, 0x84, - 0x0e, 0xbd, 0x0c, 0x15, 0xef, 0x89, 0x8e, 0x3d, 0xcf, 0xf1, 0x84, 0x2f, 0xca, 0x65, 0x2a, 0x7b, - 0x4f, 0x36, 0x28, 0x21, 0x29, 0x29, 0x10, 0x25, 0x95, 0xc6, 0x94, 0x14, 0x44, 0x25, 0x05, 0x61, - 0x49, 0xd3, 0x63, 0x4a, 0x0a, 0x78, 0x49, 0xea, 0xef, 0x17, 0xe0, 0xd4, 0x28, 0x75, 0x7d, 0x62, - 0x8a, 0xd8, 0x00, 0xe4, 0x3d, 0xd1, 0x5d, 0xa3, 0xfb, 0x08, 0x07, 0xbe, 0x6e, 0x7a, 0x8e, 0xeb, - 0x62, 0x73, 0x9c, 0x46, 0xea, 0xde, 0x93, 0x36, 0xe3, 0x58, 0x67, 0x0c, 0x47, 0xd2, 0xcc, 0x06, - 0xa0, 0x20, 0x5d, 0xf4, 0x18, 0x15, 0xd5, 0x83, 0x44, 0xd1, 0xea, 0x87, 0x30, 0x17, 0xf7, 0x10, - 0x63, 0x6c, 0xff, 0x0d, 0xa8, 0x71, 0x0f, 0xa2, 0x77, 0x9d, 0xa1, 0x1d, 0x8c, 0x53, 0xd4, 0x1c, - 0xa7, 0x5e, 0x23, 0xc4, 0xea, 0xd7, 0xc2, 0xe1, 0xf6, 0xa9, 0x15, 0xf9, 0x4b, 0x05, 0xa8, 0xb4, - 0x06, 0x46, 0x0f, 0x77, 0x5c, 0xdc, 0x25, 0x33, 0xbd, 0x45, 0x3e, 0x78, 0xbf, 0xb3, 0x0f, 0xf4, - 0x8e, 0x1c, 0xb5, 0xb0, 0x38, 0xf5, 0x59, 0xe9, 0x1c, 0x51, 0x48, 0x18, 0xb3, 0x30, 0xb9, 0x06, - 0x4b, 0x43, 0x1f, 0x7b, 0xba, 0xef, 0xe2, 0xae, 0xb5, 0x6b, 0x61, 0x53, 0x67, 0xc5, 0x21, 0x5a, - 0x1c, 0x22, 0x79, 0x1d, 0x91, 0x45, 0x65, 0x66, 0x2d, 0x65, 0x8e, 0x65, 0x2e, 0x65, 0x3e, 0x6e, - 0x28, 0x73, 0x1d, 0xca, 0x5f, 0xc0, 0x07, 0x6c, 0xb1, 0x3f, 0x21, 0x9f, 0xfa, 0xad, 0x12, 0xac, - 0xe4, 0x1c, 0x03, 0xd1, 0x95, 0xa2, 0x3b, 0xd4, 0x5d, 0xec, 0x59, 0x8e, 0x29, 0x7a, 0xad, 0xeb, - 0x0e, 0xdb, 0x34, 0x01, 0x9d, 0x04, 0xf2, 0xa1, 0x7f, 0x6d, 0xe8, 0xf0, 0x60, 0xb4, 0xa8, 0x95, - 0xbb, 0xee, 0xf0, 0x8b, 0xe4, 0x5b, 0xf0, 0xfa, 0x7b, 0x86, 0x87, 0x99, 0xff, 0x60, 0xbc, 0x1d, - 0x9a, 0x80, 0x5e, 0x84, 0xe3, 0x6c, 0x6e, 0xd4, 0xfb, 0xd6, 0xc0, 0x22, 0x5e, 0x36, 0x36, 0x34, - 0x8a, 0x1a, 0x62, 0x99, 0xf7, 0x49, 0x5e, 0xcb, 0x66, 0x83, 0x41, 0x85, 0x9a, 0xe3, 0x0c, 0x74, - 0xbf, 0xeb, 0x78, 0x58, 0x37, 0xcc, 0x0f, 0xe9, 0x38, 0x28, 0x6a, 0x55, 0xc7, 0x19, 0x74, 0x48, - 0x5a, 0xd3, 0xfc, 0x10, 0x9d, 0x85, 0x6a, 0xd7, 0x1d, 0xfa, 0x38, 0xd0, 0xc9, 0x1f, 0xba, 0x59, - 0x57, 0xd1, 0x80, 0x25, 0xad, 0xb9, 0x43, 0x3f, 0x46, 0x30, 0x20, 0xcb, 0xb3, 0xd9, 0x38, 0xc1, - 0x03, 0x3c, 0xa0, 0xa7, 0xdd, 0x7b, 0xc3, 0x1e, 0x76, 0x8d, 0x1e, 0x66, 0x55, 0x13, 0x3b, 0x6e, - 0xd2, 0x69, 0xf7, 0x3b, 0x9c, 0x84, 0x56, 0x50, 0x9b, 0xdf, 0x8b, 0x7f, 0xfa, 0xe8, 0x5d, 0x98, - 0x1d, 0xda, 0xd4, 0x00, 0x56, 0x2b, 0x94, 0xf7, 0xda, 0x04, 0x87, 0x6e, 0x57, 0x76, 0x18, 0x0b, - 0x3f, 0x03, 0xe4, 0x02, 0xd0, 0x2d, 0x68, 0x70, 0x45, 0xf9, 0x8f, 0x0d, 0x37, 0xa9, 0x2d, 0xa0, - 0x2a, 0x58, 0x66, 0x14, 0x9d, 0xc7, 0x86, 0x1b, 0xd7, 0x58, 0xe3, 0x16, 0xcc, 0xc5, 0x85, 0x1e, - 0xca, 0x96, 0xee, 0x40, 0x4d, 0x6a, 0x24, 0xe9, 0x6d, 0xaa, 0x14, 0xdf, 0xfa, 0xba, 0x18, 0x5b, - 0x65, 0x92, 0xd0, 0xb1, 0xbe, 0x4e, 0x31, 0x0a, 0xb4, 0x66, 0x54, 0x4e, 0x49, 0x63, 0x1f, 0xaa, - 0x01, 0x35, 0x09, 0x16, 0x40, 0x5c, 0x32, 0x3d, 0xff, 0xe7, 0x2e, 0x99, 0xfc, 0x26, 0x69, 0x9e, - 0xd3, 0x17, 0x35, 0xa0, 0xbf, 0x49, 0x1a, 0x3d, 0x80, 0x66, 0xc7, 0x69, 0xf4, 0x37, 0x2d, 0x02, - 0xef, 0x73, 0x3c, 0x50, 0x45, 0x63, 0x1f, 0xea, 0x6f, 0x29, 0x00, 0x6b, 0x86, 0x6b, 0x3c, 0xb4, - 0xfa, 0x56, 0x70, 0x80, 0x2e, 0x42, 0xdd, 0x30, 0x4d, 0xbd, 0x2b, 0x52, 0x2c, 0x2c, 0x00, 0x5a, - 0x0b, 0x86, 0x69, 0xae, 0xc5, 0x92, 0xd1, 0xf3, 0xb0, 0x48, 0x1c, 0xaa, 0x4c, 0xcb, 0x10, 0x5b, - 0x75, 0x92, 0x21, 0x11, 0xdf, 0x80, 0x55, 0x22, 0xd7, 0x18, 0x3c, 0xb4, 0xb0, 0x1d, 0xc8, 0x3c, - 0x0c, 0xca, 0xb5, 0x6c, 0x98, 0x66, 0x93, 0x65, 0xc7, 0x39, 0xd5, 0xbf, 0x9c, 0x81, 0xd3, 0x72, - 0x8f, 0x27, 0x91, 0x1a, 0xb7, 0x60, 0x2e, 0x51, 0xdf, 0x14, 0xc6, 0x21, 0x6a, 0xa1, 0x26, 0xd1, - 0x26, 0xb0, 0x08, 0x85, 0x14, 0x16, 0x21, 0x13, 0x05, 0x52, 0xfc, 0x84, 0x50, 0x20, 0xa5, 0x8f, - 0x89, 0x02, 0x99, 0x3e, 0x2a, 0x0a, 0x64, 0x6e, 0x62, 0x14, 0xc8, 0xb3, 0xd4, 0xf5, 0x8a, 0x12, - 0x69, 0x38, 0xc0, 0x7c, 0x42, 0x2d, 0x94, 0x6e, 0x0b, 0xd4, 0x60, 0x02, 0x2d, 0x32, 0x7b, 0x18, - 0xb4, 0x48, 0x39, 0x17, 0x2d, 0x72, 0x0e, 0xe6, 0x6c, 0x47, 0xb7, 0xf1, 0x63, 0x9d, 0x74, 0x8b, - 0xbf, 0x5a, 0x65, 0x7d, 0x64, 0x3b, 0x9b, 0xf8, 0x71, 0x9b, 0xa4, 0xa0, 0xf3, 0x30, 0x37, 0x30, - 0xfc, 0x47, 0xd8, 0xa4, 0xb0, 0x0d, 0x7f, 0xb5, 0x46, 0xed, 0xa9, 0xca, 0xd2, 0xda, 0x24, 0x09, - 0x3d, 0x03, 0x61, 0x3d, 0x38, 0xd1, 0x3c, 0x25, 0xaa, 0x89, 0x54, 0x46, 0x16, 0x43, 0x9e, 0x2c, - 0x1c, 0x11, 0x79, 0x52, 0x3f, 0x0c, 0xf2, 0xe4, 0x32, 0xd4, 0xc5, 0x6f, 0x01, 0x3d, 0x61, 0x27, - 0x09, 0x14, 0x75, 0xb2, 0x20, 0xf2, 0x04, 0xbc, 0x24, 0x0f, 0xa8, 0x02, 0x23, 0x81, 0x2a, 0x7f, - 0xa0, 0xf0, 0x35, 0x6d, 0x38, 0x80, 0xf8, 0x09, 0xb9, 0x04, 0x6e, 0x50, 0x8e, 0x02, 0x6e, 0x40, - 0xdb, 0xb9, 0xf0, 0x8f, 0x8b, 0xf9, 0x92, 0xc6, 0x01, 0x40, 0xd4, 0x07, 0xe1, 0x72, 0xf3, 0x93, - 0x80, 0xb1, 0xa9, 0xff, 0xae, 0xc0, 0x69, 0x2e, 0x2f, 0x07, 0xeb, 0x95, 0x61, 0xe5, 0x4a, 0x8e, - 0x95, 0x77, 0x3d, 0x6c, 0x62, 0x3b, 0xb0, 0x8c, 0x3e, 0x0d, 0x60, 0xc4, 0x09, 0x72, 0x94, 0x4c, - 0x63, 0xa8, 0xf3, 0x30, 0xc7, 0xe0, 0x9b, 0x7c, 0xe5, 0xc9, 0x50, 0x9a, 0x55, 0x8a, 0xe0, 0xe4, - 0x8b, 0xcb, 0xad, 0x2c, 0xcf, 0x52, 0xca, 0xdd, 0xb2, 0x18, 0xeb, 0x60, 0x54, 0x07, 0x56, 0x72, - 0xce, 0xf2, 0x33, 0xbb, 0x49, 0x49, 0x77, 0xd3, 0x48, 0x25, 0xa5, 0xbb, 0xe9, 0x5b, 0x0a, 0x9c, - 0x4d, 0xad, 0x80, 0x3f, 0x7b, 0xcd, 0xaa, 0x7f, 0xa4, 0x84, 0xf6, 0x93, 0x34, 0xf9, 0xb5, 0xb4, - 0xc9, 0x3f, 0x33, 0x6a, 0x41, 0x9f, 0x69, 0xf4, 0xef, 0xe5, 0x1a, 0xfd, 0xf3, 0x23, 0x37, 0x07, - 0xc6, 0xe9, 0xf3, 0x5f, 0x14, 0x38, 0x91, 0x5b, 0x81, 0x44, 0x3c, 0xa8, 0x24, 0xe3, 0x41, 0x1e, - 0x4b, 0x46, 0xd1, 0x3f, 0x8b, 0x25, 0x69, 0x80, 0xcf, 0x83, 0x36, 0x7d, 0x60, 0x3c, 0xb1, 0x06, - 0xc3, 0x01, 0x0f, 0x26, 0x89, 0xb8, 0x07, 0x2c, 0xe5, 0x28, 0xd1, 0xe4, 0x55, 0x58, 0x62, 0x8e, - 0x9e, 0x06, 0x34, 0x11, 0x07, 0x0b, 0x2a, 0x17, 0x59, 0x1e, 0x89, 0x6d, 0x38, 0x83, 0xda, 0x84, - 0xc5, 0xb0, 0x59, 0x23, 0xb1, 0x4c, 0x31, 0x6c, 0x52, 0x41, 0xc6, 0x26, 0xd9, 0x30, 0xb3, 0x8e, - 0xf7, 0xad, 0x2e, 0xfe, 0x44, 0x60, 0xd4, 0xe7, 0xa0, 0xea, 0x62, 0x6f, 0x60, 0xf9, 0x7e, 0x38, - 0xab, 0x57, 0xb4, 0x78, 0x92, 0x7a, 0x16, 0x2a, 0x6b, 0xeb, 0x2d, 0x5e, 0x64, 0x46, 0x55, 0xd5, - 0xff, 0x98, 0x81, 0x85, 0xa4, 0x8d, 0xdd, 0x4c, 0x61, 0xa5, 0x4e, 0x67, 0xee, 0xb3, 0x65, 0x6c, - 0x30, 0x3f, 0x2f, 0x96, 0x5e, 0x85, 0x34, 0x90, 0x20, 0x5c, 0x5e, 0x89, 0x15, 0xd9, 0x2a, 0xcc, - 0x76, 0x9d, 0xc1, 0xc0, 0xb0, 0x4d, 0x01, 0x86, 0xe7, 0x9f, 0xa4, 0xa6, 0x86, 0xd7, 0x63, 0x5b, - 0xcb, 0x15, 0x8d, 0xfe, 0x26, 0x26, 0x40, 0x9c, 0xa1, 0x65, 0x53, 0xb4, 0x15, 0xed, 0xa5, 0x8a, - 0x06, 0x3c, 0x69, 0xdd, 0xf2, 0xd0, 0x05, 0x28, 0x61, 0x7b, 0x5f, 0x9c, 0x39, 0x49, 0x5b, 0x9c, - 0x62, 0x4d, 0xa4, 0x51, 0x0a, 0x74, 0x11, 0x66, 0x06, 0xc4, 0xac, 0xc4, 0x89, 0xfc, 0x62, 0x0a, - 0x34, 0xae, 0x71, 0x02, 0xf4, 0x02, 0xcc, 0x9a, 0x54, 0x7b, 0x62, 0x11, 0x80, 0x24, 0xdc, 0x16, - 0xcd, 0xd2, 0x04, 0x09, 0x7a, 0x3b, 0xdc, 0x5f, 0xaf, 0xa4, 0x0f, 0xbe, 0x12, 0x6a, 0xce, 0xdc, - 0x5a, 0xdf, 0x94, 0x17, 0xa9, 0x90, 0xde, 0xa5, 0x4f, 0x4a, 0x19, 0xbd, 0x54, 0x3d, 0x01, 0xe5, - 0xbe, 0xd3, 0x63, 0xd6, 0x53, 0x65, 0x37, 0x29, 0xfa, 0x4e, 0x8f, 0x1a, 0xcf, 0x12, 0x4c, 0xfb, - 0x81, 0x69, 0xd9, 0x34, 0x96, 0x2a, 0x6b, 0xec, 0x83, 0x0c, 0x52, 0xfa, 0x43, 0x77, 0xec, 0x2e, - 0x5e, 0xad, 0xd1, 0xac, 0x0a, 0x4d, 0xd9, 0xb2, 0xbb, 0x74, 0x4d, 0x19, 0x04, 0x07, 0xab, 0xf3, - 0x34, 0x9d, 0xfc, 0x8c, 0xb6, 0xb9, 0x17, 0x72, 0xb6, 0xb9, 0x13, 0x15, 0xce, 0xd8, 0xe6, 0xae, - 0xe7, 0xce, 0x19, 0x49, 0x5e, 0xc1, 0x42, 0xe2, 0xc8, 0xb5, 0xf5, 0x96, 0x2e, 0xba, 0x66, 0x31, - 0x8d, 0x29, 0x0f, 0xcd, 0x5e, 0x83, 0xf0, 0xe7, 0x67, 0x7a, 0xca, 0xf0, 0x3d, 0x05, 0x96, 0xd7, - 0xe8, 0x19, 0x6b, 0xcc, 0x37, 0x1e, 0x06, 0x9e, 0xf4, 0x52, 0x88, 0x19, 0xcb, 0x00, 0xfe, 0x24, - 0x35, 0x25, 0x20, 0x63, 0x6b, 0x30, 0x2f, 0xc4, 0x72, 0xe6, 0xe2, 0x04, 0x80, 0xb3, 0x9a, 0x1f, - 0xff, 0x54, 0xdf, 0x80, 0x95, 0x54, 0xcd, 0xf9, 0x49, 0x57, 0xf2, 0xf2, 0x01, 0xab, 0x78, 0xfc, - 0xf2, 0x81, 0x7a, 0x0b, 0x8e, 0x77, 0x02, 0xc3, 0x0b, 0x52, 0xcd, 0x9e, 0x80, 0x97, 0x42, 0xc9, - 0x64, 0x5e, 0x8e, 0xf6, 0xea, 0xc0, 0x52, 0x27, 0x70, 0xdc, 0x23, 0x08, 0x25, 0x7e, 0x87, 0xb4, - 0xdc, 0x19, 0x8a, 0x79, 0x46, 0x7c, 0xaa, 0x2b, 0x0c, 0xf8, 0x96, 0x2e, 0xed, 0x75, 0x58, 0x66, - 0xb8, 0xb3, 0xa3, 0x34, 0xe2, 0x84, 0x40, 0xbd, 0xa5, 0xe5, 0xde, 0x83, 0x63, 0xd2, 0xde, 0x3b, - 0xc7, 0x69, 0x5c, 0x93, 0x71, 0x1a, 0xf9, 0xc7, 0x1c, 0x21, 0x4c, 0xe3, 0xd7, 0x0b, 0x31, 0x3f, - 0x9e, 0x73, 0x58, 0xfb, 0x8a, 0x8c, 0xd2, 0x38, 0x9b, 0x2f, 0x55, 0x02, 0x69, 0xa4, 0xad, 0xb3, - 0x98, 0x61, 0x9d, 0x3b, 0xa9, 0x93, 0xe0, 0x52, 0x1a, 0x65, 0x93, 0xa8, 0xe1, 0xa7, 0x72, 0x06, - 0x7c, 0x9f, 0x21, 0x39, 0xc2, 0xa2, 0xc3, 0xe3, 0xdf, 0x97, 0x12, 0xc7, 0xbf, 0x27, 0x47, 0xd4, - 0x34, 0x3c, 0xf8, 0xfd, 0x6e, 0x09, 0x2a, 0x61, 0x5e, 0x4a, 0xc3, 0x69, 0x55, 0x15, 0x32, 0x54, - 0x15, 0x9f, 0x5f, 0x8b, 0x47, 0x9c, 0x5f, 0x4b, 0x13, 0xcc, 0xaf, 0x27, 0xa1, 0x42, 0x7f, 0x50, - 0xf0, 0x3d, 0x9b, 0x2f, 0xcb, 0x34, 0x41, 0xc3, 0xbb, 0x91, 0x89, 0xcd, 0x4c, 0x68, 0x62, 0x09, - 0xd4, 0xc8, 0x6c, 0x12, 0x35, 0x72, 0x33, 0x9c, 0xfb, 0xca, 0xe9, 0x53, 0x9a, 0x50, 0x62, 0xe6, - 0xac, 0x97, 0xd8, 0x9a, 0xad, 0xa4, 0xb7, 0x66, 0x23, 0xfe, 0xb1, 0xf3, 0x1d, 0x6b, 0xb2, 0x65, - 0xb2, 0x45, 0xa5, 0x36, 0x4b, 0xbf, 0x5b, 0xe6, 0x67, 0xe9, 0xfa, 0xb7, 0x18, 0x4a, 0x24, 0x6e, - 0x82, 0xdc, 0x7d, 0xbe, 0x22, 0x1d, 0xd0, 0x29, 0x19, 0xd3, 0x58, 0xe8, 0x32, 0xe2, 0x87, 0x72, - 0x3b, 0xb0, 0x9c, 0x44, 0x97, 0x1d, 0xca, 0xfd, 0xe5, 0xc0, 0x5c, 0xbf, 0x13, 0x0f, 0x06, 0x73, - 0x30, 0x9d, 0x37, 0x53, 0xf0, 0x83, 0x89, 0x8d, 0xf7, 0x9a, 0x8c, 0x54, 0x3a, 0xb4, 0xc9, 0xa5, - 0x80, 0x4a, 0x34, 0x58, 0x31, 0x3c, 0x9e, 0xcd, 0xe2, 0xf6, 0x0a, 0x4f, 0x69, 0xd2, 0x45, 0xc3, - 0xae, 0x65, 0x5b, 0xfe, 0x1e, 0xcb, 0x9f, 0x61, 0x8b, 0x06, 0x91, 0xd4, 0xa4, 0x1b, 0x9a, 0xf8, - 0x89, 0x15, 0xe8, 0x5d, 0xc7, 0xc4, 0xd4, 0xa0, 0xa7, 0xb5, 0x32, 0x49, 0x58, 0x73, 0x4c, 0x1c, - 0x0d, 0xb5, 0xf2, 0x61, 0x87, 0x5a, 0x25, 0x31, 0xd4, 0x96, 0x61, 0xc6, 0xc3, 0x86, 0xef, 0xd8, - 0xdc, 0x24, 0xf9, 0x17, 0xe9, 0x88, 0x01, 0xf6, 0x7d, 0x52, 0x06, 0x8f, 0xcd, 0xf8, 0x67, 0x2c, - 0x8e, 0x9c, 0x1b, 0x11, 0x47, 0x8e, 0x40, 0x8c, 0x26, 0xe2, 0xc8, 0xda, 0x88, 0x38, 0x72, 0x22, - 0xc0, 0x68, 0x14, 0x31, 0xcf, 0x8f, 0x8b, 0x98, 0xe3, 0x21, 0xe7, 0x82, 0x1c, 0x72, 0xbe, 0x11, - 0x5f, 0xbc, 0xd6, 0xd3, 0xe7, 0xe7, 0xa3, 0x57, 0xad, 0xf1, 0xb1, 0xbd, 0xf8, 0xb9, 0x19, 0xdb, - 0x7f, 0xaf, 0xc0, 0x4a, 0x6a, 0x2c, 0xf2, 0xd1, 0xfd, 0x52, 0x02, 0xa5, 0x3a, 0x12, 0x1e, 0x2a, - 0x40, 0xaa, 0x4d, 0x09, 0xa4, 0x7a, 0x79, 0x14, 0x4b, 0x0e, 0x46, 0xf5, 0xe8, 0xb8, 0xd1, 0x6f, - 0x2a, 0x80, 0x32, 0x56, 0xee, 0x37, 0x45, 0x8c, 0x7f, 0x88, 0x3d, 0x36, 0x1e, 0xe6, 0xbf, 0x1d, - 0x85, 0xf9, 0x85, 0xc3, 0xec, 0x56, 0x84, 0x80, 0x96, 0x1f, 0x15, 0xe0, 0xec, 0x8e, 0x6b, 0x26, - 0x82, 0x4f, 0x4e, 0x35, 0xb9, 0xd3, 0xbb, 0x29, 0xa3, 0x71, 0x8e, 0xd8, 0x84, 0xe2, 0x51, 0x9a, - 0x80, 0xbe, 0x9a, 0x85, 0x97, 0x7a, 0x43, 0x3a, 0xd9, 0x1c, 0xdd, 0xc0, 0x31, 0xd0, 0xa9, 0x8f, - 0x6b, 0xc2, 0x2a, 0x9c, 0xcb, 0xaf, 0x00, 0x0f, 0x54, 0x7f, 0x1e, 0x16, 0x36, 0x9e, 0xe0, 0x6e, - 0xe7, 0xc0, 0xee, 0x1e, 0x42, 0xeb, 0x75, 0x28, 0x76, 0x07, 0x26, 0x3f, 0x53, 0x21, 0x3f, 0xe3, - 0xb1, 0x77, 0x51, 0x8e, 0xbd, 0x75, 0xa8, 0x47, 0x25, 0xf0, 0x01, 0xb4, 0x4c, 0x06, 0x90, 0x49, - 0x88, 0x89, 0xf0, 0x39, 0x8d, 0x7f, 0xf1, 0x74, 0xec, 0xb1, 0xfb, 0x2f, 0x2c, 0x1d, 0x7b, 0x9e, - 0xec, 0xd0, 0x8b, 0xb2, 0x43, 0x57, 0xbf, 0xad, 0x40, 0x95, 0x94, 0xf0, 0xb1, 0xea, 0xcf, 0x17, - 0xc0, 0xc5, 0x68, 0x01, 0x1c, 0xae, 0xa3, 0x4b, 0xf1, 0x75, 0x74, 0x54, 0xf3, 0x69, 0x9a, 0x9c, - 0xae, 0xf9, 0x4c, 0x98, 0x8e, 0x3d, 0x4f, 0x3d, 0x07, 0x73, 0xac, 0x6e, 0xbc, 0xe5, 0x75, 0x28, - 0x0e, 0xbd, 0xbe, 0xe8, 0xbf, 0xa1, 0xd7, 0x57, 0xbf, 0xa1, 0x40, 0xad, 0x19, 0x04, 0x46, 0x77, - 0xef, 0x10, 0x0d, 0x08, 0x2b, 0x57, 0x88, 0x57, 0x2e, 0xdd, 0x88, 0xa8, 0xba, 0xa5, 0x9c, 0xea, - 0x4e, 0x4b, 0xd5, 0x55, 0x61, 0x5e, 0xd4, 0x25, 0xb7, 0xc2, 0x9b, 0x80, 0xda, 0x8e, 0x17, 0xdc, - 0x75, 0xbc, 0xc7, 0x86, 0x67, 0x1e, 0x6e, 0xad, 0x8b, 0xa0, 0xc4, 0x5f, 0x30, 0x28, 0x5e, 0x98, - 0xd6, 0xe8, 0x6f, 0xf5, 0x39, 0x38, 0x26, 0xc9, 0xcb, 0x2d, 0xf8, 0x16, 0x54, 0xe9, 0x04, 0xcd, - 0x97, 0x41, 0xcf, 0xc7, 0xe1, 0x00, 0x63, 0x26, 0x72, 0x75, 0x1d, 0x16, 0x49, 0xa8, 0x46, 0xd3, - 0x43, 0xff, 0x72, 0x35, 0xb1, 0x52, 0x58, 0x49, 0x89, 0x48, 0xac, 0x12, 0x7e, 0xa2, 0xc0, 0x34, - 0x3b, 0xf9, 0x4f, 0x86, 0x4f, 0x27, 0xc9, 0x14, 0xe8, 0x3a, 0x7a, 0x60, 0xf4, 0xc2, 0xd7, 0x21, - 0x48, 0xc2, 0xb6, 0xd1, 0xa3, 0xe7, 0x40, 0x34, 0xd3, 0xb4, 0x7a, 0xd8, 0x0f, 0xc4, 0xb9, 0x62, - 0x95, 0xa4, 0xad, 0xb3, 0x24, 0xa2, 0x18, 0x7a, 0xfc, 0x5a, 0xa2, 0xa7, 0xac, 0xf4, 0x37, 0xba, - 0xc0, 0xae, 0x4e, 0x8e, 0x3e, 0x4c, 0xa3, 0x57, 0x2a, 0x1b, 0x50, 0x4e, 0x9c, 0x82, 0x85, 0xdf, - 0xe8, 0x22, 0x94, 0xe8, 0xae, 0xf5, 0xec, 0x28, 0x2d, 0x51, 0x12, 0x62, 0x15, 0xae, 0x65, 0xdb, - 0xd8, 0xe4, 0x4f, 0x17, 0xf0, 0x2f, 0xf5, 0x6d, 0x40, 0x71, 0xe5, 0xf1, 0x0e, 0xba, 0x08, 0x33, - 0x54, 0xb7, 0x22, 0xbe, 0x5d, 0x4c, 0x89, 0xd6, 0x38, 0x81, 0xfa, 0x15, 0x40, 0xac, 0x2c, 0x29, - 0xa6, 0x3d, 0x4c, 0x07, 0x8e, 0x88, 0x6e, 0xff, 0x58, 0x81, 0x63, 0x92, 0x74, 0x5e, 0xbf, 0xe7, - 0x64, 0xf1, 0x19, 0xd5, 0xe3, 0xa2, 0xdf, 0x94, 0x66, 0xe6, 0x8b, 0xe9, 0x6a, 0xfc, 0x3f, 0xcd, - 0xca, 0xff, 0xa0, 0x00, 0x34, 0x87, 0xc1, 0x1e, 0xdf, 0x9e, 0x8d, 0x77, 0xa2, 0x92, 0xe8, 0xc4, - 0x06, 0x94, 0x5d, 0xc3, 0xf7, 0x1f, 0x3b, 0x9e, 0x58, 0x7a, 0x86, 0xdf, 0x74, 0x53, 0x75, 0xc8, - 0x9f, 0x80, 0xa8, 0x68, 0xf4, 0x37, 0x7a, 0x06, 0xe6, 0xd9, 0xb3, 0x25, 0xba, 0x61, 0x9a, 0x9e, - 0x80, 0x18, 0x56, 0xb4, 0x1a, 0x4b, 0x6d, 0xb2, 0x44, 0x42, 0x66, 0xd1, 0x33, 0x8c, 0xe0, 0x40, - 0x0f, 0x9c, 0x47, 0xd8, 0xe6, 0xcb, 0xc9, 0x9a, 0x48, 0xdd, 0x26, 0x89, 0xec, 0x90, 0xb2, 0x67, - 0xf9, 0x81, 0x27, 0xc8, 0xc4, 0x51, 0x2b, 0x4f, 0xa5, 0x64, 0xea, 0x1f, 0x2a, 0x50, 0x6f, 0x0f, - 0xfb, 0x7d, 0xa6, 0xdc, 0xa3, 0x74, 0xf2, 0x25, 0xde, 0x94, 0x42, 0xda, 0xe4, 0x23, 0x45, 0xf1, - 0x26, 0x7e, 0x22, 0x3b, 0x60, 0xd7, 0x60, 0x31, 0x56, 0x63, 0x6e, 0x38, 0x52, 0xd0, 0xaf, 0xc8, - 0x41, 0xbf, 0xda, 0x04, 0xc4, 0x36, 0x7d, 0x8e, 0xdc, 0x4a, 0xf5, 0x38, 0x1c, 0x93, 0x44, 0xf0, - 0xa9, 0xf8, 0x12, 0xd4, 0x38, 0xdc, 0x8d, 0x1b, 0xc4, 0x09, 0x28, 0x13, 0x97, 0xda, 0xb5, 0x4c, - 0x81, 0xab, 0x98, 0x75, 0x1d, 0x73, 0xcd, 0x32, 0x3d, 0xf5, 0x8b, 0x50, 0xe3, 0xf7, 0xe9, 0x39, - 0xed, 0x6d, 0x98, 0xe7, 0xa7, 0x8a, 0xba, 0x74, 0x01, 0xf5, 0x44, 0x06, 0xa6, 0x52, 0xa8, 0xc2, - 0x8e, 0x7f, 0xaa, 0x5f, 0x85, 0x06, 0x8b, 0x16, 0x24, 0xc1, 0xa2, 0x81, 0xb7, 0x41, 0x40, 0x9a, - 0x46, 0xc8, 0x97, 0x39, 0x6b, 0x5e, 0xfc, 0x53, 0x3d, 0x0d, 0x27, 0x33, 0xe5, 0xf3, 0xd6, 0xbb, - 0x50, 0x8f, 0x32, 0xd8, 0x2d, 0xc9, 0x10, 0x2c, 0xa2, 0xc4, 0xc0, 0x22, 0xcb, 0x61, 0xec, 0x5d, - 0x10, 0x33, 0x17, 0x0d, 0xaf, 0xa3, 0xc5, 0x58, 0x31, 0x6f, 0x31, 0x56, 0x92, 0x16, 0x63, 0xea, - 0x83, 0x50, 0x87, 0x7c, 0x49, 0xfc, 0x06, 0x5d, 0xb4, 0xb3, 0xb2, 0x85, 0x53, 0x3b, 0x95, 0xdd, - 0x3e, 0x46, 0xa4, 0xc5, 0xe8, 0xd5, 0x8b, 0x50, 0x93, 0xdd, 0x5b, 0xcc, 0x63, 0x29, 0xb2, 0xc7, - 0xfa, 0x05, 0x58, 0xd6, 0x24, 0x7c, 0xd8, 0x5d, 0x6c, 0x04, 0x43, 0x0f, 0xfb, 0xe8, 0x75, 0x68, - 0x64, 0xbc, 0x24, 0xa3, 0xf3, 0x35, 0x1a, 0x13, 0xb3, 0x92, 0x7a, 0x50, 0xe6, 0x01, 0x5b, 0xa1, - 0x3d, 0x07, 0x0b, 0x14, 0xbf, 0x16, 0xbb, 0xf7, 0xc9, 0x74, 0x44, 0x5f, 0x2d, 0xd9, 0x8c, 0x2e, - 0x79, 0x9a, 0xe1, 0x6b, 0x0c, 0xbc, 0xfc, 0xcc, 0xd3, 0xae, 0xb7, 0xa0, 0xbc, 0xcb, 0xeb, 0xc5, - 0x07, 0xa4, 0x9a, 0xa1, 0x8c, 0x44, 0x0b, 0xb4, 0x90, 0x47, 0xfd, 0x1f, 0x05, 0xe6, 0x13, 0x2e, - 0xf9, 0xc5, 0xc4, 0xc2, 0x29, 0xcb, 0x7a, 0x12, 0xcb, 0xa6, 0x1b, 0x92, 0x73, 0x7e, 0x5a, 0x82, - 0x2f, 0x8c, 0xbe, 0xd1, 0xb7, 0x01, 0xf5, 0x04, 0x38, 0x4f, 0x00, 0x73, 0x1b, 0xf9, 0xed, 0xd0, - 0x16, 0x64, 0xe4, 0x9e, 0x7f, 0x74, 0xf7, 0xbe, 0xc4, 0x27, 0xbd, 0xbb, 0x3e, 0xe1, 0xe7, 0x56, - 0xa1, 0x3e, 0x05, 0xd5, 0x9d, 0xbc, 0x27, 0x60, 0x4a, 0x02, 0xba, 0xf7, 0x2a, 0x2c, 0xdd, 0xb5, - 0xfa, 0xd8, 0x3f, 0xf0, 0x03, 0x3c, 0x68, 0x51, 0x5f, 0xbc, 0x6b, 0x61, 0x0f, 0x9d, 0x01, 0xa0, - 0xa6, 0xe0, 0x3a, 0x56, 0xf8, 0xec, 0x45, 0x2c, 0x45, 0xfd, 0xa1, 0x02, 0x0b, 0x11, 0xe3, 0x24, - 0xf8, 0xcc, 0x57, 0x60, 0x7a, 0xd7, 0x17, 0x1b, 0x9a, 0x89, 0x63, 0x9e, 0xac, 0x2a, 0x68, 0xa5, - 0x5d, 0xbf, 0x65, 0xa2, 0x57, 0x01, 0x86, 0x3e, 0x36, 0xf9, 0xc9, 0xea, 0x18, 0xc4, 0x6c, 0x85, - 0x90, 0xb2, 0xb3, 0xd9, 0x1b, 0x50, 0xb5, 0x6c, 0xc7, 0xc4, 0xf4, 0xd4, 0xdd, 0x1c, 0x87, 0x96, - 0x05, 0x46, 0xbb, 0xe3, 0x63, 0x53, 0xfd, 0xdd, 0xe8, 0xec, 0xfc, 0xf3, 0xdc, 0x42, 0xf5, 0x3b, - 0x22, 0x1a, 0x11, 0xdd, 0xce, 0x4d, 0xff, 0x1d, 0x58, 0x64, 0x93, 0xca, 0x6e, 0x58, 0x66, 0xe6, - 0x35, 0xa2, 0x44, 0xe3, 0xb4, 0xba, 0xc5, 0xe3, 0x50, 0xc1, 0x84, 0xda, 0x70, 0x3c, 0x5a, 0x1e, - 0xc4, 0xa5, 0x15, 0xc6, 0x4b, 0x5b, 0xea, 0xc6, 0xf6, 0xbf, 0x05, 0xa3, 0x7a, 0x0b, 0x8e, 0x27, - 0x6e, 0x0a, 0x4c, 0x7e, 0x08, 0xf2, 0x6e, 0x62, 0xcb, 0x32, 0x1a, 0xec, 0xd7, 0xe4, 0x0b, 0x6a, - 0xa3, 0xee, 0x74, 0xf0, 0xbb, 0x52, 0x3b, 0x70, 0x42, 0xda, 0x4f, 0x95, 0xea, 0x72, 0x23, 0x11, - 0xac, 0x9f, 0xcb, 0x97, 0x97, 0x88, 0xda, 0xff, 0x53, 0x81, 0xa5, 0x2c, 0x82, 0x23, 0x6e, 0xf3, - 0x7f, 0x90, 0x73, 0xb9, 0xf5, 0xa5, 0x71, 0x15, 0xfa, 0x54, 0x8e, 0x45, 0x36, 0xd9, 0xd5, 0xb8, - 0xf1, 0x7d, 0x52, 0x9c, 0xac, 0x4f, 0x7e, 0x52, 0x88, 0x1d, 0x65, 0x8d, 0xb8, 0xbe, 0xf6, 0x31, - 0xf6, 0x8f, 0xd7, 0x12, 0xb7, 0xd7, 0x9e, 0xcf, 0x64, 0x1c, 0x73, 0x79, 0x4d, 0xcb, 0xda, 0x8c, - 0xb9, 0x36, 0x4e, 0xd2, 0xe7, 0xf6, 0xee, 0xda, 0x6f, 0x14, 0x60, 0x5e, 0xee, 0x10, 0xf4, 0x76, - 0xc6, 0xd5, 0xb5, 0xb3, 0x63, 0x1a, 0x28, 0xdd, 0x5c, 0xe3, 0x57, 0xc5, 0x0a, 0x93, 0x5f, 0x15, - 0x2b, 0x4e, 0x76, 0x55, 0xec, 0x0e, 0xcc, 0x3f, 0xf6, 0xac, 0xc0, 0x78, 0xd8, 0xc7, 0x7a, 0xdf, - 0x38, 0xc0, 0x1e, 0x77, 0xec, 0x23, 0x5d, 0x51, 0x4d, 0xb0, 0xdc, 0x27, 0x1c, 0x74, 0x99, 0xfa, - 0xd8, 0x70, 0xf9, 0x6a, 0x57, 0x0a, 0xa0, 0x3b, 0x8f, 0x0d, 0x97, 0xf1, 0x50, 0x12, 0xf5, 0x1b, - 0x05, 0x38, 0x9e, 0x79, 0xc1, 0xe9, 0xe3, 0xab, 0xe8, 0x72, 0x5c, 0x45, 0x87, 0xb9, 0x35, 0x56, - 0x3c, 0xd4, 0xad, 0xb1, 0x56, 0x8e, 0xc2, 0xb2, 0xb0, 0x12, 0xa3, 0xf5, 0xa6, 0xfe, 0x99, 0x02, - 0x65, 0x51, 0xa9, 0xb1, 0x77, 0xb8, 0x56, 0x86, 0x84, 0x4c, 0xa7, 0x38, 0x7b, 0xdb, 0xb0, 0x1d, - 0xdd, 0xc7, 0x24, 0x82, 0x1d, 0x7b, 0x63, 0x66, 0x89, 0xf2, 0xad, 0x39, 0x1e, 0xde, 0x34, 0x6c, - 0xa7, 0xc3, 0x98, 0x50, 0x13, 0xea, 0x4c, 0x1e, 0x15, 0x45, 0x84, 0x8e, 0x9d, 0x28, 0xe7, 0x29, - 0x03, 0x11, 0x42, 0x84, 0xf9, 0xea, 0x5f, 0x2b, 0xb0, 0x90, 0xd0, 0xec, 0xcf, 0x5e, 0x23, 0x7e, - 0xa7, 0x08, 0xd5, 0x58, 0x2f, 0x8f, 0x69, 0xc0, 0x1a, 0x2c, 0x0a, 0xbc, 0x93, 0x8f, 0x83, 0xc9, - 0x6e, 0x2c, 0x2d, 0x70, 0x8e, 0x0e, 0x0e, 0x58, 0x1c, 0x75, 0x1b, 0x16, 0x8c, 0x7d, 0xc3, 0xea, - 0x53, 0x0b, 0x9a, 0x28, 0x44, 0x99, 0x0f, 0xe9, 0xc3, 0x48, 0x8c, 0xb5, 0x7b, 0xa2, 0x7b, 0x4b, - 0x40, 0x69, 0xa3, 0xeb, 0x63, 0xbe, 0x1f, 0x03, 0xd5, 0x8d, 0xbc, 0x3e, 0xe6, 0xfb, 0x61, 0x79, - 0xf4, 0x92, 0x01, 0xbd, 0x37, 0xe7, 0xf3, 0xc7, 0x56, 0xf2, 0xcb, 0x23, 0xb4, 0x77, 0x29, 0x29, - 0x51, 0xd8, 0xc0, 0xf8, 0xd0, 0xf1, 0xf4, 0x38, 0xff, 0xec, 0x18, 0x85, 0x51, 0x8e, 0x76, 0x28, - 0x44, 0xfd, 0x13, 0x05, 0x2a, 0xa1, 0x1f, 0x19, 0xd3, 0x43, 0x2d, 0x58, 0xa2, 0x37, 0x32, 0x92, - 0x1a, 0x1e, 0xd3, 0x49, 0x88, 0x30, 0x35, 0x65, 0x2d, 0x37, 0xa1, 0x4e, 0x45, 0xc5, 0x55, 0x3d, - 0xae, 0xa3, 0x7c, 0x51, 0x4d, 0x16, 0x50, 0xfe, 0x79, 0x01, 0x50, 0xda, 0x95, 0xfc, 0xcc, 0x18, - 0x59, 0xbc, 0xd3, 0x4a, 0x93, 0x77, 0xfa, 0x3d, 0x38, 0xd6, 0x75, 0x06, 0x03, 0x8b, 0xde, 0xe6, - 0x71, 0xbc, 0x83, 0xc9, 0xcc, 0x6d, 0x91, 0xf1, 0x30, 0x3d, 0x31, 0xf5, 0xbd, 0x05, 0x27, 0x34, - 0xec, 0xb8, 0xd8, 0x0e, 0x5d, 0xff, 0x7d, 0xa7, 0x77, 0x88, 0xf8, 0xf6, 0x14, 0x34, 0xb2, 0xf8, - 0xf9, 0xae, 0xc5, 0x10, 0x1a, 0x6b, 0x7b, 0xb8, 0xfb, 0x88, 0x2e, 0xbf, 0x8e, 0x82, 0x59, 0x6a, - 0x40, 0xb9, 0xef, 0x74, 0xd9, 0x4b, 0xb7, 0x7c, 0x63, 0x4f, 0x7c, 0x8f, 0x38, 0x53, 0x39, 0x0d, - 0x27, 0x33, 0x8b, 0xe5, 0xb5, 0x42, 0x50, 0xbf, 0x87, 0x83, 0x8d, 0x7d, 0x6c, 0x87, 0xe1, 0xb3, - 0xfa, 0xfd, 0x42, 0x2c, 0x50, 0xa7, 0x59, 0x87, 0xc0, 0x7a, 0xa1, 0x36, 0x44, 0x2b, 0x07, 0x1d, - 0x13, 0x6e, 0xf6, 0x8e, 0x24, 0x7b, 0x81, 0x35, 0xfb, 0xb0, 0x97, 0x16, 0x42, 0x9f, 0x8f, 0x8c, - 0x5e, 0xc8, 0x09, 0xd3, 0x12, 0x10, 0x80, 0x62, 0x12, 0x02, 0xf0, 0x2e, 0xa0, 0x78, 0x28, 0xce, - 0x77, 0x0d, 0x4a, 0x13, 0x3c, 0x0a, 0x54, 0x77, 0x93, 0xcf, 0x57, 0xe5, 0x3c, 0xed, 0x33, 0x7d, - 0xa4, 0xa7, 0x7d, 0xd4, 0x33, 0x70, 0x8a, 0x04, 0xd8, 0x0f, 0x70, 0xe0, 0x59, 0xdd, 0x75, 0xec, - 0x77, 0x3d, 0xcb, 0x0d, 0x9c, 0x10, 0x7e, 0xa4, 0xea, 0x70, 0x3a, 0x27, 0x9f, 0xab, 0xfb, 0x2d, - 0xa8, 0x9a, 0x51, 0x72, 0xd6, 0x3e, 0x53, 0x92, 0x57, 0x8b, 0x33, 0xa8, 0xef, 0x43, 0x3d, 0x49, - 0x90, 0xb9, 0x7f, 0x83, 0xa0, 0xb4, 0x87, 0xfb, 0xae, 0xb8, 0x7e, 0x45, 0x7e, 0x13, 0xad, 0xb3, - 0xb5, 0xcb, 0x23, 0x7c, 0x20, 0xce, 0x21, 0x2a, 0x34, 0xe5, 0x0b, 0xf8, 0x20, 0x6c, 0x9b, 0xf4, - 0xd6, 0x84, 0x67, 0x75, 0x93, 0x6d, 0xcb, 0xc8, 0x8f, 0xda, 0x46, 0xba, 0x6d, 0xc0, 0x92, 0x79, - 0xdb, 0x4e, 0xe7, 0xbe, 0x63, 0x41, 0x79, 0xc1, 0x75, 0x4c, 0xfe, 0x5b, 0xfd, 0xae, 0x02, 0x8b, - 0x29, 0x8a, 0x09, 0xcf, 0x96, 0x5e, 0x80, 0x59, 0x51, 0x6e, 0x21, 0x0d, 0xe9, 0x65, 0xb2, 0x34, - 0x41, 0x82, 0x5a, 0xb0, 0x18, 0x59, 0xb4, 0xe0, 0x2b, 0xa6, 0xfb, 0x22, 0xbe, 0x70, 0xa1, 0xd5, - 0xad, 0x77, 0x13, 0x29, 0x6a, 0x17, 0xea, 0x49, 0xaa, 0x49, 0xc6, 0xd4, 0xa1, 0xea, 0xab, 0xfe, - 0xad, 0x02, 0x33, 0x2c, 0x2d, 0xb3, 0xb3, 0xa5, 0xe9, 0xa0, 0x90, 0x9c, 0x0e, 0x5e, 0x83, 0x2a, - 0x93, 0xa3, 0x87, 0x97, 0xef, 0xe6, 0xe5, 0xed, 0x75, 0x26, 0x9a, 0x8e, 0x56, 0x18, 0x84, 0xbf, - 0x49, 0x33, 0x98, 0xbd, 0xd0, 0x95, 0x89, 0x00, 0x6e, 0x57, 0x69, 0x1a, 0x75, 0xb9, 0x24, 0x64, - 0xe6, 0x6b, 0x98, 0x31, 0xbe, 0x99, 0x6f, 0x6d, 0x2d, 0xd3, 0x97, 0x13, 0x53, 0x1b, 0xcc, 0xea, - 0x36, 0x7d, 0xda, 0x30, 0xbd, 0x31, 0x8c, 0x5e, 0x97, 0x41, 0x0a, 0xcf, 0xa4, 0x4e, 0xf8, 0x25, - 0xb6, 0xa1, 0xc7, 0x5e, 0x04, 0x67, 0x3c, 0xea, 0x07, 0x70, 0x22, 0x97, 0x06, 0xbd, 0x19, 0xbe, - 0x23, 0x6b, 0x7a, 0xd6, 0x3e, 0xdf, 0x58, 0x98, 0x97, 0xdf, 0xac, 0x58, 0xa3, 0x04, 0xeb, 0x34, - 0x5f, 0xbc, 0x30, 0xcb, 0xbe, 0x2e, 0x3d, 0x0b, 0x65, 0xf1, 0x5a, 0x3b, 0x9a, 0x85, 0xe2, 0xf6, - 0x5a, 0xbb, 0x3e, 0x45, 0x7e, 0xec, 0xac, 0xb7, 0xeb, 0x0a, 0x2a, 0x43, 0xa9, 0xb3, 0xb6, 0xdd, - 0xae, 0x17, 0x2e, 0x0d, 0xa0, 0x9e, 0x7c, 0xb0, 0x1c, 0xad, 0xc0, 0xb1, 0xb6, 0xb6, 0xd5, 0x6e, - 0xde, 0x6b, 0x6e, 0xb7, 0xb6, 0x36, 0xf5, 0xb6, 0xd6, 0x7a, 0xaf, 0xb9, 0xbd, 0x51, 0x9f, 0x42, - 0xe7, 0xe1, 0x74, 0x3c, 0xe3, 0x9d, 0xad, 0xce, 0xb6, 0xbe, 0xbd, 0xa5, 0xaf, 0x6d, 0x6d, 0x6e, - 0x37, 0x5b, 0x9b, 0x1b, 0x5a, 0x5d, 0x41, 0xa7, 0xe1, 0x44, 0x9c, 0xe4, 0x4e, 0x6b, 0xbd, 0xa5, - 0x6d, 0xac, 0x91, 0xdf, 0xcd, 0xfb, 0xf5, 0xc2, 0xa5, 0x37, 0xa1, 0x26, 0x5d, 0x37, 0x22, 0x55, - 0x6a, 0x6f, 0xad, 0xd7, 0xa7, 0x50, 0x0d, 0x2a, 0x71, 0x39, 0x65, 0x28, 0x6d, 0x6e, 0xad, 0x6f, - 0xd4, 0x0b, 0x08, 0x60, 0x66, 0xbb, 0xa9, 0xdd, 0xdb, 0xd8, 0xae, 0x17, 0x2f, 0xdd, 0x4a, 0xbe, - 0x99, 0x82, 0xd1, 0x22, 0xd4, 0x3a, 0xcd, 0xcd, 0xf5, 0x3b, 0x5b, 0x5f, 0xd6, 0xb5, 0x8d, 0xe6, - 0xfa, 0xfb, 0xf5, 0x29, 0xb4, 0x04, 0x75, 0x91, 0xb4, 0xb9, 0xb5, 0xcd, 0x52, 0x95, 0x4b, 0x8f, - 0x12, 0x6b, 0x56, 0x8c, 0x8e, 0xc3, 0x62, 0x58, 0xa4, 0xbe, 0xa6, 0x6d, 0x34, 0xb7, 0x37, 0x48, - 0x4d, 0xa4, 0x64, 0x6d, 0x67, 0x73, 0xb3, 0xb5, 0x79, 0xaf, 0xae, 0x10, 0xa9, 0x51, 0xf2, 0xc6, - 0x97, 0x5b, 0x84, 0xb8, 0x20, 0x13, 0xef, 0x6c, 0x7e, 0x61, 0x73, 0xeb, 0x4b, 0x9b, 0xf5, 0xe2, - 0xa5, 0x5f, 0x8e, 0x63, 0x5a, 0xa2, 0x79, 0xe5, 0x24, 0xac, 0xa4, 0x4a, 0xd4, 0x37, 0xde, 0xdb, - 0xd8, 0xdc, 0xae, 0x4f, 0xc9, 0x99, 0x9d, 0xed, 0xa6, 0x16, 0x65, 0x2a, 0xc9, 0xcc, 0xad, 0x76, - 0x3b, 0xcc, 0x2c, 0xc8, 0x99, 0xeb, 0x1b, 0xf7, 0x37, 0x22, 0xce, 0xe2, 0xa5, 0xa7, 0x01, 0xa2, - 0xf1, 0x83, 0xaa, 0x30, 0xbb, 0xb6, 0xb5, 0xb3, 0xb9, 0xbd, 0xa1, 0xd5, 0xa7, 0x50, 0x05, 0xa6, - 0xef, 0x35, 0x77, 0xee, 0x6d, 0xd4, 0x95, 0x4b, 0x17, 0x61, 0x2e, 0x6e, 0x4d, 0x84, 0xae, 0xf3, - 0x7e, 0x67, 0x7b, 0xe3, 0x01, 0xd1, 0xc8, 0x1c, 0x94, 0xd7, 0xee, 0x69, 0x5b, 0x3b, 0xed, 0xbb, - 0x9d, 0xba, 0x72, 0xfd, 0x7f, 0x97, 0xc2, 0x1d, 0xfa, 0x0e, 0xf6, 0xe8, 0x25, 0x8f, 0x75, 0x98, - 0x15, 0xff, 0xdf, 0x40, 0xda, 0xb5, 0x91, 0xff, 0x1f, 0x43, 0xe3, 0x64, 0x66, 0x1e, 0x8f, 0x0b, - 0xa6, 0xd0, 0x7b, 0xf4, 0xcc, 0x23, 0xf6, 0x62, 0xd9, 0xb9, 0xc4, 0x56, 0x78, 0xea, 0x61, 0xb4, - 0xc6, 0xf9, 0x11, 0x14, 0xa1, 0xdc, 0xf7, 0x61, 0x5e, 0x7e, 0x1a, 0x14, 0x9d, 0x97, 0x77, 0xea, - 0x33, 0x5e, 0x1d, 0x6d, 0xa8, 0xa3, 0x48, 0x42, 0xd1, 0x3a, 0xd4, 0x93, 0x4f, 0x83, 0x22, 0x09, - 0xe6, 0x93, 0xf3, 0xf2, 0x68, 0xe3, 0xe9, 0xd1, 0x44, 0xf1, 0x02, 0x52, 0x2f, 0x5e, 0x3e, 0x35, - 0xfa, 0x0d, 0xc1, 0x8c, 0x02, 0xf2, 0x1e, 0x1a, 0x64, 0xca, 0x91, 0x67, 0x4d, 0x94, 0x78, 0x64, - 0x32, 0xe3, 0x3d, 0x3a, 0x59, 0x39, 0xd9, 0x6f, 0x91, 0xa9, 0x53, 0xe8, 0xe7, 0x60, 0x21, 0x81, - 0xe0, 0x47, 0x12, 0x63, 0xf6, 0xc5, 0x84, 0xc6, 0x53, 0x23, 0x69, 0xe4, 0x5e, 0x8d, 0xa3, 0xf4, - 0x93, 0xbd, 0x9a, 0x81, 0xfe, 0x4f, 0xf6, 0x6a, 0x26, 0xc8, 0x9f, 0x1a, 0xa2, 0x84, 0xc8, 0x97, - 0x0d, 0x31, 0xeb, 0x06, 0x40, 0xe3, 0xfc, 0x08, 0x8a, 0xb8, 0x42, 0x12, 0x98, 0x7c, 0x59, 0x21, - 0xd9, 0x68, 0xff, 0xc6, 0x53, 0x23, 0x69, 0x92, 0x3d, 0x19, 0x01, 0x7e, 0xd3, 0x3d, 0x99, 0xc2, - 0xa3, 0xa7, 0x7b, 0x32, 0x8d, 0x17, 0xe6, 0x3d, 0x99, 0x80, 0xe8, 0xaa, 0x23, 0x31, 0x82, 0x59, - 0x3d, 0x99, 0x8d, 0x23, 0x54, 0xa7, 0xd0, 0x63, 0x58, 0xcd, 0x83, 0x82, 0xa1, 0xe7, 0x0f, 0x81, - 0x58, 0x6b, 0xbc, 0x30, 0x19, 0x71, 0x58, 0x30, 0x06, 0x94, 0x5e, 0x3e, 0xa1, 0x67, 0x64, 0x75, - 0xe7, 0x2c, 0xcf, 0x1a, 0xcf, 0x8e, 0x23, 0x0b, 0x8b, 0xb9, 0x07, 0x65, 0x01, 0x32, 0x43, 0x92, - 0x0b, 0x4c, 0x80, 0xdb, 0x1a, 0xa7, 0xb2, 0x33, 0x43, 0x41, 0xaf, 0x43, 0x89, 0xa4, 0xa2, 0x95, - 0x24, 0x9d, 0x10, 0xb0, 0x9a, 0xce, 0x08, 0x99, 0x9b, 0x30, 0xc3, 0xd0, 0x53, 0x48, 0x3a, 0xd8, - 0x94, 0xd0, 0x5d, 0x8d, 0x46, 0x56, 0x56, 0x28, 0xa2, 0xcd, 0xfe, 0x5b, 0x0c, 0x07, 0x43, 0xa1, - 0x33, 0xc9, 0x47, 0xc1, 0x65, 0xd4, 0x55, 0xe3, 0x6c, 0x6e, 0x7e, 0xdc, 0x66, 0x13, 0xbb, 0xa4, - 0xe7, 0x47, 0xec, 0xfa, 0x67, 0xd9, 0x6c, 0xf6, 0x59, 0x02, 0xeb, 0xdc, 0xf4, 0x59, 0x03, 0x7a, - 0x26, 0xd7, 0xde, 0xa5, 0x22, 0x9e, 0x1d, 0x47, 0x16, 0x1f, 0x1a, 0xc9, 0xd7, 0xbd, 0xd4, 0x51, - 0x2f, 0xef, 0x65, 0x0d, 0x8d, 0x9c, 0x17, 0xfd, 0xd4, 0x29, 0xb4, 0x07, 0xc7, 0x32, 0x9e, 0xfc, - 0x43, 0xcf, 0xe6, 0xfb, 0x5f, 0xa9, 0x94, 0xe7, 0xc6, 0xd2, 0xc5, 0x4b, 0xca, 0x40, 0x40, 0xc8, - 0x25, 0xe5, 0x43, 0x30, 0xe4, 0x92, 0x46, 0x41, 0x29, 0xa8, 0x21, 0x72, 0x1f, 0x72, 0x22, 0xeb, - 0xc0, 0x3c, 0xc3, 0x10, 0x53, 0x1e, 0x63, 0x0f, 0x8e, 0x65, 0x6c, 0x31, 0xc8, 0x95, 0xcd, 0xdf, - 0xfa, 0x90, 0x2b, 0x3b, 0x6a, 0xaf, 0x62, 0x0a, 0x7d, 0x00, 0xe8, 0x1e, 0x0e, 0xe4, 0x50, 0xce, - 0x47, 0xd2, 0x40, 0x4d, 0xee, 0x66, 0xe4, 0xd8, 0xa7, 0xb4, 0xad, 0xa1, 0x4e, 0x5d, 0x53, 0x90, - 0xcd, 0x2e, 0x09, 0xa5, 0x16, 0xe3, 0xe8, 0x42, 0xb2, 0xdb, 0xf2, 0xd6, 0xf3, 0x8d, 0x8b, 0x13, - 0x50, 0x86, 0x6d, 0xb1, 0x93, 0xcf, 0xcb, 0x8a, 0xf5, 0xe0, 0x85, 0x7c, 0x33, 0x91, 0xd7, 0xd8, - 0xe9, 0xf2, 0x72, 0x57, 0xdb, 0x61, 0x3c, 0x17, 0x33, 0xa6, 0x73, 0xf9, 0x78, 0x9c, 0x9c, 0x78, - 0x2e, 0xcb, 0x80, 0xae, 0xff, 0x76, 0x11, 0xe6, 0x18, 0x6e, 0x89, 0x87, 0x9f, 0x0f, 0x00, 0x22, - 0x08, 0x20, 0x3a, 0x9d, 0xac, 0xa3, 0x84, 0xab, 0x6c, 0x9c, 0xc9, 0xcb, 0x8e, 0xbb, 0xb9, 0x18, - 0xb4, 0x4e, 0x76, 0x73, 0x69, 0xa4, 0xa0, 0xec, 0xe6, 0x32, 0x30, 0x79, 0xea, 0x14, 0x7a, 0x17, - 0x2a, 0x21, 0x92, 0x4b, 0x36, 0x9e, 0x24, 0x24, 0xad, 0x71, 0x3a, 0x27, 0x37, 0x5e, 0xbb, 0x18, - 0x40, 0x4b, 0xae, 0x5d, 0x1a, 0xfc, 0x25, 0xd7, 0x2e, 0x0b, 0xd9, 0x15, 0xb5, 0x97, 0x81, 0x02, - 0x32, 0xda, 0x2b, 0x81, 0x44, 0x32, 0xda, 0x2b, 0xa3, 0x09, 0xd4, 0xa9, 0x3b, 0xb7, 0x7f, 0xf0, - 0xe3, 0x33, 0xca, 0x0f, 0x7f, 0x7c, 0x66, 0xea, 0x17, 0x3f, 0x3a, 0xa3, 0xfc, 0xe0, 0xa3, 0x33, - 0xca, 0x3f, 0x7e, 0x74, 0x46, 0xf9, 0xd1, 0x47, 0x67, 0x94, 0x6f, 0xfe, 0xdb, 0x99, 0xa9, 0x0f, - 0xd4, 0x47, 0x37, 0xfc, 0x2b, 0x96, 0x73, 0xb5, 0xeb, 0x59, 0x97, 0x0d, 0xd7, 0xba, 0xea, 0x3e, - 0xea, 0x5d, 0x35, 0x5c, 0xcb, 0xbf, 0xca, 0xe5, 0x5e, 0xdd, 0x7f, 0xf1, 0xe1, 0x0c, 0xfd, 0x0f, - 0x63, 0x2f, 0xfd, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf6, 0x60, 0x6a, 0x8a, 0x1b, 0x6e, 0x00, - 0x00, + // 7085 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x7d, 0x5b, 0x6c, 0x1c, 0xc9, + 0x75, 0x28, 0x7b, 0x66, 0x48, 0xce, 0x9c, 0xe1, 0x90, 0xc3, 0x12, 0x45, 0x52, 0xa3, 0x77, 0xef, + 0x4b, 0xd2, 0xae, 0x1e, 0xab, 0xd5, 0xee, 0x4a, 0xda, 0x97, 0x46, 0x24, 0xa5, 0x9d, 0xb5, 0x48, + 0x8e, 0x7b, 0xc8, 0xb5, 0x77, 0x7d, 0xe1, 0xbe, 0xad, 0xe9, 0xe2, 0xb0, 0x57, 0x33, 0xdd, 0xed, + 0xee, 0x1e, 0x49, 0xf4, 0xc7, 0xc5, 0xfd, 0xba, 0xb8, 0xf1, 0x97, 0x81, 0xc4, 0x08, 0x62, 0x04, + 0x09, 0x1c, 0x20, 0x48, 0xfe, 0x92, 0x18, 0x48, 0xe2, 0x20, 0x01, 0x02, 0x04, 0x89, 0xe1, 0x04, + 0x08, 0x90, 0x8f, 0x04, 0xf0, 0x47, 0x80, 0xd8, 0x9b, 0x00, 0x01, 0xf2, 0x19, 0xf8, 0x23, 0x3f, + 0x89, 0x83, 0x7a, 0x75, 0x77, 0xf5, 0x63, 0x66, 0xc8, 0xdd, 0xec, 0xae, 0xbf, 0x38, 0x5d, 0x75, + 0xce, 0xa9, 0x53, 0xa7, 0x4e, 0x9d, 0x3a, 0xa7, 0xea, 0x54, 0x11, 0x2a, 0x86, 0x6b, 0x5d, 0x71, + 0x3d, 0x27, 0x70, 0x10, 0x78, 0x43, 0x3b, 0xb0, 0x06, 0xf8, 0xca, 0xe3, 0x97, 0x1b, 0x97, 0x7b, + 0x56, 0xb0, 0x3f, 0x7c, 0x78, 0xa5, 0xeb, 0x0c, 0xae, 0xf6, 0x9c, 0x9e, 0x73, 0x95, 0x82, 0x3c, + 0x1c, 0xee, 0xd1, 0x2f, 0xfa, 0x41, 0x7f, 0x31, 0x54, 0xf5, 0x12, 0xcc, 0xbf, 0x8f, 0x3d, 0xdf, + 0x72, 0x6c, 0x0d, 0x7f, 0x63, 0x88, 0xfd, 0x00, 0xad, 0xc2, 0xec, 0x63, 0x56, 0xb2, 0xaa, 0x9c, + 0x53, 0x2e, 0x54, 0x34, 0xf1, 0xa9, 0xfe, 0x8e, 0x02, 0x0b, 0x21, 0xb0, 0xef, 0x3a, 0xb6, 0x8f, + 0xf3, 0xa1, 0xd1, 0x79, 0x98, 0xe3, 0x6c, 0xe9, 0xb6, 0x31, 0xc0, 0xab, 0x05, 0x5a, 0x5d, 0xe5, + 0x65, 0x5b, 0xc6, 0x00, 0xa3, 0x17, 0x60, 0x41, 0x80, 0x08, 0x22, 0x45, 0x0a, 0x35, 0xcf, 0x8b, + 0x79, 0x6b, 0xe8, 0x0a, 0x1c, 0x13, 0x80, 0x86, 0x6b, 0x85, 0xc0, 0x25, 0x0a, 0xbc, 0xc8, 0xab, + 0x9a, 0xae, 0xc5, 0xe1, 0xd5, 0xaf, 0x41, 0x65, 0x7d, 0xab, 0xb3, 0xe6, 0xd8, 0x7b, 0x56, 0x8f, + 0xb0, 0xe8, 0x63, 0x8f, 0xe0, 0xac, 0x2a, 0xe7, 0x8a, 0x84, 0x45, 0xfe, 0x89, 0x1a, 0x50, 0xf6, + 0xb1, 0xe1, 0x75, 0xf7, 0xb1, 0xbf, 0x5a, 0xa0, 0x55, 0xe1, 0x37, 0xc1, 0x72, 0xdc, 0xc0, 0x72, + 0x6c, 0x7f, 0xb5, 0xc8, 0xb0, 0xf8, 0xa7, 0xfa, 0xeb, 0x0a, 0x54, 0xdb, 0x8e, 0x17, 0x6c, 0x1a, + 0xae, 0x6b, 0xd9, 0x3d, 0x74, 0x0d, 0xca, 0x54, 0x96, 0x5d, 0xa7, 0x4f, 0x65, 0x30, 0x7f, 0x7d, + 0xe9, 0x4a, 0x34, 0x20, 0x57, 0xda, 0xbc, 0x4e, 0x0b, 0xa1, 0xd0, 0x73, 0x30, 0xdf, 0x75, 0xec, + 0xc0, 0xb0, 0x6c, 0xec, 0xe9, 0xae, 0xe3, 0x05, 0x54, 0x38, 0xd3, 0x5a, 0x2d, 0x2c, 0x25, 0xf4, + 0xd1, 0x49, 0xa8, 0xec, 0x3b, 0x7e, 0xc0, 0x20, 0x8a, 0x14, 0xa2, 0x4c, 0x0a, 0x68, 0xe5, 0x0a, + 0xcc, 0xd2, 0x4a, 0xcb, 0xe5, 0x62, 0x98, 0x21, 0x9f, 0x2d, 0x57, 0xfd, 0xf7, 0x02, 0x4c, 0x6f, + 0x3a, 0x43, 0x3b, 0x48, 0x34, 0x63, 0x04, 0xfb, 0x7c, 0x88, 0x62, 0xcd, 0x18, 0xc1, 0x7e, 0xd4, + 0x0c, 0x81, 0x60, 0xa3, 0xc4, 0x9a, 0x21, 0x95, 0x0d, 0x28, 0x7b, 0xd8, 0x30, 0x1d, 0xbb, 0x7f, + 0x40, 0x59, 0x28, 0x6b, 0xe1, 0x37, 0x19, 0x3e, 0x1f, 0xf7, 0x2d, 0x7b, 0xf8, 0x54, 0xf7, 0x70, + 0xdf, 0x78, 0x88, 0xfb, 0x94, 0x95, 0xb2, 0x36, 0xcf, 0x8b, 0x35, 0x56, 0x8a, 0xde, 0x86, 0xaa, + 0xeb, 0x39, 0xae, 0xd1, 0x33, 0x88, 0x04, 0x57, 0xa7, 0xa9, 0x90, 0x4e, 0xc5, 0x85, 0x44, 0x19, + 0x6e, 0x47, 0x30, 0x5a, 0x1c, 0x01, 0xbd, 0x0e, 0xd5, 0xa1, 0x65, 0x72, 0x79, 0xfb, 0xab, 0x33, + 0xe7, 0x8a, 0x17, 0xaa, 0xd7, 0x8f, 0xc7, 0xf1, 0x5b, 0xeb, 0xbc, 0x56, 0x8b, 0x43, 0x12, 0xc4, + 0x5e, 0x0c, 0x71, 0x76, 0x24, 0x62, 0x0c, 0x92, 0x2a, 0x1c, 0xee, 0x0e, 0x3d, 0xdf, 0x7a, 0x8c, + 0x75, 0xd2, 0x61, 0x9d, 0x4a, 0xa0, 0x4c, 0xbb, 0xb7, 0x18, 0x56, 0x69, 0xd8, 0x30, 0xb7, 0xed, + 0xfe, 0x81, 0xaa, 0x43, 0x25, 0xa4, 0x14, 0x0d, 0x8d, 0x49, 0x05, 0x5e, 0xe3, 0x43, 0x63, 0x92, + 0x29, 0x11, 0x0d, 0x88, 0x65, 0x52, 0x61, 0xd7, 0xb4, 0x6a, 0x58, 0xd6, 0x32, 0xd1, 0x32, 0xcc, + 0xf4, 0xb1, 0xdd, 0x0b, 0xf6, 0xa9, 0xb4, 0x6b, 0x1a, 0xff, 0x52, 0x7f, 0x45, 0x81, 0xda, 0xae, + 0x8f, 0x3d, 0x32, 0x6f, 0x7c, 0xd7, 0xe8, 0x62, 0x74, 0x19, 0x4a, 0x03, 0xc7, 0xc4, 0x5c, 0xe5, + 0x4e, 0xc4, 0x3b, 0x15, 0x02, 0x6d, 0x3a, 0x26, 0xd6, 0x28, 0x18, 0xba, 0x08, 0xa5, 0xa1, 0x65, + 0x32, 0x3d, 0xcf, 0x95, 0x01, 0x05, 0x21, 0xa0, 0x3d, 0x02, 0x5a, 0x1c, 0x09, 0x4a, 0x40, 0xd4, + 0x9f, 0x2b, 0xb0, 0x10, 0xb6, 0xb6, 0x4d, 0x27, 0x08, 0x7a, 0x05, 0x66, 0x6d, 0x1c, 0x3c, 0x71, + 0xbc, 0x47, 0xe3, 0x79, 0x13, 0x90, 0xe8, 0x45, 0x28, 0xba, 0x5c, 0x22, 0x23, 0x11, 0x08, 0x14, + 0x01, 0xb6, 0xdc, 0x2e, 0x95, 0xd0, 0x68, 0x60, 0xcb, 0xed, 0x12, 0xf5, 0x0e, 0x0c, 0xaf, 0x87, + 0xe9, 0x78, 0xb0, 0xa9, 0x52, 0x66, 0x05, 0x2d, 0x13, 0xdd, 0x81, 0xf9, 0xa1, 0x8f, 0x3d, 0xdb, + 0xd7, 0xc5, 0x64, 0x27, 0xca, 0x59, 0x95, 0x89, 0x4a, 0x72, 0xd7, 0x6a, 0x0c, 0x61, 0x9b, 0x5b, + 0x03, 0x15, 0xa0, 0x65, 0x07, 0xaf, 0xdd, 0x78, 0xdf, 0xe8, 0x0f, 0x31, 0x5a, 0x82, 0xe9, 0xc7, + 0xe4, 0x07, 0xed, 0x79, 0x51, 0x63, 0x1f, 0xea, 0xf7, 0xa6, 0xe1, 0xe4, 0x03, 0x32, 0x21, 0x3a, + 0x86, 0x6d, 0x3e, 0x74, 0x9e, 0x76, 0x88, 0xfe, 0x58, 0xc1, 0xc1, 0x9a, 0x63, 0x07, 0xf8, 0x69, + 0x80, 0xde, 0x85, 0x45, 0x5b, 0xd0, 0x0f, 0x19, 0x51, 0x28, 0x23, 0x27, 0x33, 0x7b, 0xc7, 0x1a, + 0xd7, 0xea, 0xb6, 0x5c, 0xe0, 0xa3, 0xbb, 0xd1, 0x94, 0x14, 0x74, 0x0a, 0xe9, 0x0e, 0x75, 0x36, + 0x28, 0x37, 0x9c, 0x8a, 0x98, 0xad, 0x82, 0xc6, 0x6b, 0x40, 0x8c, 0xb4, 0x6e, 0xf8, 0x3a, 0xe9, + 0x29, 0x95, 0x72, 0xf5, 0xfa, 0xb2, 0xa4, 0x05, 0x61, 0x87, 0xb5, 0x8a, 0x37, 0xb4, 0x9b, 0x3e, + 0x91, 0x10, 0xba, 0x49, 0x0d, 0x3e, 0xc1, 0xeb, 0x79, 0xce, 0xd0, 0xa5, 0x93, 0x25, 0x1f, 0x11, + 0x28, 0xe2, 0x7d, 0x02, 0x49, 0xd7, 0x01, 0x6e, 0x54, 0x74, 0xcf, 0x71, 0x82, 0x3d, 0x5f, 0x18, + 0x12, 0x51, 0xac, 0xd1, 0x52, 0x74, 0x15, 0x8e, 0xf9, 0x43, 0xd7, 0xed, 0xe3, 0x01, 0xb6, 0x03, + 0xa3, 0xcf, 0x1a, 0x22, 0x63, 0x56, 0xbc, 0x50, 0xd4, 0x50, 0xbc, 0x8a, 0x12, 0xf6, 0xd1, 0x43, + 0x68, 0x64, 0x20, 0xe8, 0xae, 0xd3, 0xb7, 0xba, 0x07, 0xab, 0x55, 0xaa, 0x40, 0xcf, 0x4a, 0xa2, + 0x49, 0xd1, 0x68, 0x53, 0x58, 0x6d, 0xd5, 0xcf, 0xa9, 0x41, 0x67, 0x00, 0x5c, 0xcf, 0x7a, 0x6c, + 0xf5, 0x71, 0x0f, 0x9b, 0xab, 0x33, 0x94, 0xf1, 0x58, 0x09, 0x7a, 0x95, 0xac, 0x3f, 0xdd, 0xae, + 0x33, 0x70, 0x57, 0x2b, 0xe9, 0x31, 0x15, 0xba, 0xd0, 0xf6, 0x9c, 0x3d, 0xab, 0x8f, 0x35, 0x01, + 0x8b, 0x5e, 0x87, 0xb2, 0xe1, 0xba, 0x86, 0x37, 0x70, 0xbc, 0x55, 0x18, 0x8f, 0x17, 0x02, 0xa3, + 0x1b, 0xb0, 0xc4, 0x69, 0xe8, 0x2e, 0xab, 0x64, 0xa6, 0x7d, 0x96, 0xe8, 0xfe, 0xdd, 0xc2, 0xaa, + 0xa2, 0x21, 0x5e, 0xcf, 0x71, 0x89, 0xa1, 0x57, 0xff, 0x52, 0x81, 0x85, 0x04, 0x4d, 0xf4, 0x1e, + 0xcc, 0x09, 0x0a, 0xc1, 0x81, 0x2b, 0x4c, 0xcd, 0x0b, 0x23, 0xd8, 0xb8, 0xc2, 0xff, 0xee, 0x1c, + 0xb8, 0x98, 0xda, 0x70, 0xf1, 0x81, 0x9e, 0x81, 0x5a, 0xdf, 0xe9, 0x1a, 0x7d, 0x6a, 0x19, 0x3d, + 0xbc, 0xc7, 0x57, 0x9a, 0xb9, 0xb0, 0x50, 0xc3, 0x7b, 0xea, 0x1d, 0xa8, 0xc6, 0x08, 0x20, 0x04, + 0xf3, 0x1a, 0x6b, 0x6a, 0x1d, 0xef, 0x19, 0xc3, 0x7e, 0x50, 0x9f, 0x42, 0xf3, 0x00, 0xbb, 0x76, + 0x97, 0xac, 0xec, 0x36, 0x36, 0xeb, 0x0a, 0xaa, 0x41, 0xe5, 0x81, 0x20, 0x51, 0x2f, 0xa8, 0xdf, + 0x2d, 0xc2, 0x71, 0xaa, 0xdc, 0x6d, 0xc7, 0xe4, 0xb3, 0x8d, 0xbb, 0x01, 0xcf, 0x40, 0xad, 0x4b, + 0x87, 0x5f, 0x77, 0x0d, 0x0f, 0xdb, 0x01, 0x5f, 0x0c, 0xe7, 0x58, 0x61, 0x9b, 0x96, 0x21, 0x0d, + 0xea, 0x3e, 0xef, 0x91, 0xde, 0x65, 0xb3, 0x93, 0x4f, 0x20, 0xa9, 0xd7, 0x23, 0x26, 0xb3, 0xb6, + 0xe0, 0xa7, 0x66, 0xf7, 0xac, 0x7f, 0xe0, 0x77, 0x83, 0xbe, 0xb0, 0xa8, 0x57, 0x52, 0xa4, 0x92, + 0xcc, 0x5e, 0xe9, 0x30, 0x84, 0x0d, 0x3b, 0xf0, 0x0e, 0x34, 0x81, 0x8e, 0xde, 0x81, 0xb2, 0xf3, + 0x18, 0x7b, 0xfb, 0xd8, 0x60, 0x96, 0xac, 0x7a, 0xfd, 0x99, 0x14, 0xa9, 0x35, 0xb1, 0x98, 0x68, + 0xd8, 0x77, 0x86, 0x5e, 0x17, 0xfb, 0x5a, 0x88, 0x84, 0x9a, 0x50, 0xf1, 0x44, 0x31, 0xb7, 0x74, + 0x13, 0x51, 0x88, 0xb0, 0x1a, 0xb7, 0x61, 0x2e, 0xce, 0x1c, 0xaa, 0x43, 0xf1, 0x11, 0x3e, 0xe0, + 0xc2, 0x24, 0x3f, 0x23, 0x1b, 0xc8, 0x46, 0x98, 0x7d, 0xdc, 0x2e, 0xdc, 0x54, 0x54, 0x0f, 0x50, + 0xd4, 0xd3, 0x4d, 0x1c, 0x18, 0xa6, 0x11, 0x18, 0x08, 0x41, 0x89, 0x3a, 0x88, 0x8c, 0x04, 0xfd, + 0x4d, 0xa8, 0x0e, 0xf9, 0x72, 0x50, 0xd1, 0xc8, 0x4f, 0x74, 0x0a, 0x2a, 0xa1, 0xb5, 0xe3, 0x5e, + 0x62, 0x54, 0x40, 0xbc, 0x35, 0x23, 0x08, 0xf0, 0xc0, 0x0d, 0xa8, 0x60, 0x6a, 0x9a, 0xf8, 0x54, + 0x7f, 0x69, 0x1a, 0xea, 0x29, 0x5d, 0xb8, 0x0d, 0xe5, 0x01, 0x6f, 0x9e, 0xdb, 0xd9, 0x33, 0x92, + 0xcb, 0x96, 0x62, 0x52, 0x0b, 0xe1, 0x89, 0x47, 0x44, 0x74, 0x2d, 0xe6, 0xd3, 0x86, 0xdf, 0x4c, + 0xc9, 0x7b, 0xba, 0x69, 0x79, 0xb8, 0x1b, 0x38, 0xde, 0x01, 0x67, 0x74, 0xae, 0xef, 0xf4, 0xd6, + 0x45, 0x19, 0xba, 0x01, 0x60, 0xda, 0xbe, 0x4e, 0x75, 0xb8, 0xc7, 0xc7, 0x51, 0x5a, 0x64, 0x43, + 0xd7, 0x55, 0xab, 0x98, 0xb6, 0xcf, 0x59, 0x7e, 0x13, 0x6a, 0xc4, 0x0f, 0xd4, 0x07, 0xc2, 0x99, + 0x99, 0xa6, 0xba, 0xb4, 0x22, 0xf3, 0x1d, 0x7a, 0xa5, 0xda, 0x9c, 0x1b, 0x7d, 0xf8, 0xe8, 0x0e, + 0xcc, 0x50, 0x57, 0x4c, 0x38, 0x4f, 0x17, 0xb2, 0xbb, 0xcb, 0xb5, 0xef, 0x01, 0x05, 0x65, 0xca, + 0xc7, 0xf1, 0xd0, 0x36, 0x54, 0x0d, 0xdb, 0x76, 0x02, 0x83, 0xad, 0x2a, 0xcc, 0x95, 0xba, 0x3c, + 0x92, 0x4c, 0x33, 0x82, 0x67, 0xb4, 0xe2, 0x14, 0xd0, 0xeb, 0x30, 0x4d, 0x97, 0x1d, 0xbe, 0x4e, + 0x9c, 0x1f, 0x3b, 0x29, 0x34, 0x06, 0x8f, 0xde, 0x82, 0xd9, 0x27, 0x96, 0x6d, 0x3a, 0x4f, 0x7c, + 0x6e, 0x4f, 0x25, 0x15, 0xfe, 0x0a, 0xab, 0x4a, 0x21, 0x0b, 0x9c, 0xc6, 0x2d, 0xa8, 0xc6, 0xfa, + 0x77, 0x18, 0xfd, 0x6d, 0xbc, 0x0d, 0xf5, 0x64, 0x9f, 0x0e, 0xa5, 0xff, 0x43, 0x58, 0xd2, 0x86, + 0x76, 0xc4, 0x9a, 0x08, 0xb9, 0x6e, 0xc0, 0x0c, 0xd7, 0x06, 0xa6, 0x8c, 0xa7, 0x46, 0x89, 0x55, + 0xe3, 0xb0, 0xf1, 0xe8, 0x69, 0xdf, 0xb0, 0xcd, 0x3e, 0xf6, 0x78, 0x8b, 0x22, 0x7a, 0x7a, 0x97, + 0x95, 0xaa, 0x6f, 0xc1, 0xf1, 0x44, 0xb3, 0x3c, 0x78, 0x7b, 0x16, 0xe6, 0x5d, 0xc7, 0xd4, 0x7d, + 0x56, 0x2c, 0xfc, 0xd5, 0x0a, 0xd1, 0x1d, 0x01, 0xdb, 0x32, 0x09, 0x7a, 0x27, 0x70, 0xdc, 0x34, + 0xdb, 0x93, 0xa1, 0xaf, 0xc2, 0x72, 0x12, 0x9d, 0x35, 0xaf, 0xbe, 0x03, 0x2b, 0x1a, 0x1e, 0x38, + 0x8f, 0xf1, 0x51, 0x49, 0x37, 0x60, 0x35, 0x4d, 0x80, 0x13, 0xff, 0x00, 0x56, 0xa2, 0xd2, 0x4e, + 0x60, 0x04, 0x43, 0xff, 0x50, 0xc4, 0x79, 0x64, 0xfb, 0xd0, 0xf1, 0xd9, 0x40, 0x96, 0x35, 0xf1, + 0xa9, 0xae, 0xc0, 0x74, 0xdb, 0x31, 0x5b, 0x6d, 0x34, 0x0f, 0x05, 0xcb, 0xe5, 0xc8, 0x05, 0xcb, + 0x55, 0xbb, 0xf1, 0x36, 0xb7, 0x98, 0x67, 0xcb, 0x9a, 0x4e, 0x82, 0xa2, 0x9b, 0x30, 0x6f, 0x98, + 0xa6, 0x45, 0x14, 0xc9, 0xe8, 0xeb, 0x96, 0x2b, 0x1c, 0xf3, 0xc5, 0xc4, 0xd0, 0xb7, 0xda, 0x5a, + 0x2d, 0x02, 0x6c, 0xb9, 0xbe, 0x7a, 0x17, 0x2a, 0x51, 0x10, 0xf0, 0x6a, 0x14, 0xa5, 0x16, 0xc6, + 0xfb, 0x8b, 0x61, 0x08, 0xbb, 0x95, 0x5a, 0x24, 0x39, 0x9b, 0xaf, 0x02, 0x84, 0x46, 0x55, 0xb8, + 0xa0, 0xc7, 0x33, 0x49, 0x6a, 0x31, 0x40, 0xf5, 0x9f, 0x4a, 0x71, 0x23, 0x1b, 0xeb, 0xb2, 0x19, + 0x76, 0xd9, 0x94, 0x8c, 0x6e, 0xe1, 0x90, 0x46, 0xf7, 0x65, 0x98, 0xf6, 0x03, 0x23, 0xc0, 0xdc, + 0xe7, 0x3f, 0x99, 0x8d, 0x48, 0x1a, 0xc6, 0x1a, 0x83, 0x44, 0xa7, 0x01, 0xba, 0x1e, 0x36, 0x02, + 0x6c, 0xea, 0x06, 0x5b, 0x15, 0x8a, 0x5a, 0x85, 0x97, 0x34, 0x03, 0x62, 0x45, 0x44, 0x94, 0x92, + 0xb1, 0x10, 0xe6, 0x0c, 0x63, 0x14, 0xaf, 0x84, 0xd6, 0x6b, 0x66, 0xac, 0xf5, 0xe2, 0xa8, 0xdc, + 0x7a, 0x45, 0x96, 0x78, 0x76, 0x94, 0x25, 0x66, 0x48, 0x93, 0x58, 0xe2, 0xf2, 0x28, 0x4b, 0xcc, + 0xc9, 0x8c, 0xb6, 0xc4, 0x19, 0x86, 0xa4, 0x92, 0x65, 0x48, 0x3e, 0x4f, 0xd3, 0xf9, 0x27, 0x05, + 0x58, 0x4d, 0xcf, 0x67, 0x6e, 0xc7, 0x6e, 0xc0, 0x8c, 0x4f, 0x4b, 0x46, 0xdb, 0x4f, 0x8e, 0xc5, + 0x61, 0xd1, 0x5d, 0x28, 0x59, 0xf6, 0x9e, 0xc3, 0x27, 0xde, 0x95, 0x91, 0x38, 0xbc, 0xa5, 0x2b, + 0x2d, 0x7b, 0xcf, 0x61, 0x12, 0xa4, 0xb8, 0xe8, 0x01, 0x1c, 0x0b, 0xa3, 0x77, 0x5f, 0x67, 0x84, + 0xb1, 0xf0, 0xf3, 0x24, 0x2d, 0x0d, 0xbd, 0x2a, 0x4e, 0x11, 0x45, 0x78, 0x1d, 0x8e, 0x46, 0x7c, + 0x1c, 0x02, 0xee, 0x07, 0xc6, 0xc0, 0x15, 0x1a, 0x1b, 0x16, 0x34, 0x5e, 0x87, 0x4a, 0xd8, 0xfc, + 0xa1, 0x64, 0xd7, 0x82, 0xa5, 0xc4, 0x1c, 0x61, 0xc1, 0x6a, 0x38, 0xa9, 0x94, 0x49, 0x27, 0x95, + 0xfa, 0x33, 0x25, 0x3e, 0xd1, 0xef, 0x59, 0xfd, 0x00, 0x7b, 0xa9, 0x89, 0xfe, 0x9a, 0xa0, 0xcb, + 0x66, 0xf9, 0xb9, 0x11, 0x74, 0x59, 0x2c, 0xc8, 0x67, 0xec, 0xfb, 0x30, 0x4f, 0x55, 0x5c, 0xf7, + 0x71, 0x9f, 0xfa, 0x4a, 0x5c, 0x8e, 0x57, 0xb3, 0x09, 0xb0, 0xd6, 0xd9, 0x14, 0xe9, 0x70, 0x0c, + 0x36, 0x36, 0xb5, 0x7e, 0xbc, 0xac, 0x71, 0x07, 0x50, 0x1a, 0xe8, 0x50, 0x12, 0xdc, 0x24, 0xf6, + 0xd2, 0x0f, 0x32, 0x57, 0xee, 0x3d, 0xca, 0xc6, 0x68, 0xcd, 0x63, 0xac, 0x6a, 0x1c, 0x56, 0xfd, + 0x87, 0x22, 0x40, 0x54, 0xf9, 0x05, 0x37, 0x94, 0xb7, 0x43, 0x83, 0xc5, 0x3c, 0x4e, 0x35, 0x9b, + 0x64, 0xa6, 0xa9, 0x6a, 0xc9, 0xa6, 0x8a, 0xf9, 0x9e, 0x2f, 0xe4, 0x10, 0x38, 0xb4, 0x91, 0x9a, + 0xfd, 0xa2, 0x19, 0xa9, 0x7b, 0xb0, 0x9c, 0x54, 0x13, 0x6e, 0xa1, 0x5e, 0x82, 0x69, 0x2b, 0xc0, + 0x03, 0xb6, 0x03, 0x9d, 0xd8, 0x14, 0x89, 0x81, 0x33, 0x20, 0xf5, 0x6d, 0x58, 0x96, 0xc7, 0xea, + 0x70, 0xae, 0x8b, 0xfa, 0x20, 0xe9, 0xfb, 0x44, 0xa6, 0x92, 0xeb, 0x47, 0xe6, 0xf6, 0x52, 0x12, + 0x87, 0x41, 0xaa, 0x3f, 0x54, 0xe0, 0x78, 0xa2, 0x2a, 0x67, 0xe2, 0x7f, 0x2d, 0x35, 0x81, 0x99, + 0x6d, 0xbd, 0x31, 0xa2, 0x95, 0xcf, 0x70, 0x16, 0x7f, 0x05, 0x1a, 0xf2, 0xf0, 0x48, 0xa2, 0xbd, + 0x95, 0x98, 0xca, 0xe7, 0xc7, 0x32, 0x1d, 0xce, 0xe7, 0x36, 0x9c, 0xcc, 0x24, 0x9c, 0x96, 0x79, + 0x71, 0x42, 0x99, 0xff, 0x47, 0x21, 0x6e, 0xb3, 0x9b, 0x41, 0xe0, 0x59, 0x0f, 0x87, 0x01, 0xfe, + 0x74, 0x9d, 0xaa, 0xf5, 0x70, 0x66, 0x33, 0x3b, 0xfb, 0x52, 0x36, 0x66, 0xd4, 0x7a, 0xe6, 0x1c, + 0xef, 0xc8, 0x73, 0xbc, 0x44, 0x49, 0xbd, 0x3c, 0x96, 0xd4, 0xc8, 0xd9, 0xfe, 0x79, 0x4e, 0xe2, + 0xbf, 0x56, 0x60, 0x21, 0x31, 0x2a, 0xe8, 0x0e, 0x80, 0x11, 0xb2, 0xce, 0xf5, 0xe3, 0xdc, 0xb8, + 0x2e, 0x6a, 0x31, 0x1c, 0xb2, 0x26, 0x32, 0x7f, 0x31, 0x63, 0x4d, 0xcc, 0xf0, 0x17, 0x43, 0x77, + 0xf1, 0xcd, 0x28, 0xd8, 0x65, 0x1b, 0xb1, 0xea, 0xc8, 0x60, 0x97, 0xe1, 0x0a, 0x14, 0xf5, 0x97, + 0x0b, 0xb0, 0x94, 0x45, 0x1d, 0x3d, 0x0f, 0xc5, 0xae, 0x3b, 0xe4, 0x3d, 0x91, 0x8e, 0xab, 0xd6, + 0xdc, 0xe1, 0xae, 0x6f, 0xf4, 0xb0, 0x46, 0x00, 0xd0, 0x55, 0x98, 0x19, 0xe0, 0x81, 0xe3, 0x1d, + 0x70, 0xbe, 0xa5, 0xed, 0x86, 0x4d, 0x5a, 0xc3, 0xa0, 0x39, 0x18, 0xba, 0x1e, 0xb9, 0xd5, 0x8c, + 0xdf, 0x55, 0x29, 0x7a, 0x60, 0x55, 0x0c, 0x25, 0xf4, 0xa5, 0xaf, 0xc3, 0xac, 0xeb, 0x39, 0x5d, + 0xec, 0xfb, 0x7c, 0x37, 0x64, 0x35, 0x71, 0x7e, 0x46, 0xaa, 0x38, 0x0e, 0x07, 0x44, 0xb7, 0x01, + 0x22, 0x07, 0x8a, 0xaf, 0x4c, 0x8d, 0x5c, 0x7f, 0xcb, 0xd7, 0x62, 0xd0, 0xea, 0x0f, 0x0a, 0xb0, + 0x9c, 0x2d, 0x39, 0x74, 0x39, 0x2e, 0x97, 0x93, 0x19, 0xa2, 0x96, 0xc5, 0xf3, 0x5a, 0x42, 0x3c, + 0x67, 0x32, 0x30, 0xb2, 0xa4, 0x74, 0x2b, 0x29, 0xa5, 0xb3, 0x19, 0x88, 0xd9, 0xc2, 0xba, 0x95, + 0x14, 0x56, 0x16, 0x6a, 0xb6, 0xcc, 0x9a, 0x19, 0x32, 0x3b, 0x9f, 0xd5, 0xc7, 0x7c, 0xd1, 0xfd, + 0xb9, 0x02, 0x73, 0x71, 0xbe, 0x64, 0x97, 0x55, 0x49, 0xb8, 0xac, 0x68, 0x0b, 0x16, 0x4d, 0xb6, + 0x73, 0xab, 0x5b, 0x76, 0x80, 0xbd, 0x3d, 0xa3, 0x2b, 0xbc, 0xc2, 0xf3, 0x19, 0x7a, 0xd1, 0x12, + 0x30, 0x8c, 0xf1, 0x3a, 0xc7, 0x0d, 0x8b, 0x49, 0x0f, 0x42, 0x3a, 0xc2, 0x6a, 0x4d, 0x40, 0x28, + 0x86, 0xa4, 0xfe, 0xbd, 0x02, 0xc7, 0x32, 0x04, 0x3c, 0xa6, 0x23, 0xbb, 0xf9, 0x1d, 0xb9, 0x90, + 0x3f, 0x74, 0x63, 0xfb, 0xf3, 0x6e, 0x46, 0x7f, 0x26, 0xa7, 0x17, 0xef, 0xd6, 0xcf, 0x15, 0x38, + 0x9e, 0x09, 0x95, 0xb9, 0xbd, 0x7a, 0x1d, 0xca, 0xde, 0x53, 0xfd, 0xe1, 0x41, 0x80, 0xfd, 0xac, + 0x89, 0xbd, 0x1b, 0x3b, 0xa7, 0x99, 0xf5, 0x9e, 0xde, 0x25, 0x70, 0xe8, 0x06, 0x54, 0xbc, 0xa7, + 0x3a, 0xf6, 0x3c, 0xc7, 0x13, 0xb6, 0x28, 0x17, 0xa9, 0xec, 0x3d, 0xdd, 0xa0, 0x80, 0xa4, 0xa5, + 0x40, 0xb4, 0x54, 0x1a, 0xd3, 0x52, 0x10, 0xb5, 0x14, 0x84, 0x2d, 0x4d, 0x8f, 0x69, 0x29, 0xe0, + 0x2d, 0xa9, 0xbf, 0x5b, 0x80, 0x53, 0xa3, 0xc4, 0xf5, 0xa9, 0x09, 0x62, 0x03, 0x90, 0xf7, 0x54, + 0x77, 0x8d, 0xee, 0x23, 0x1c, 0xf8, 0xba, 0xe9, 0x39, 0xae, 0x8b, 0xcd, 0x71, 0x12, 0xa9, 0x7b, + 0x4f, 0xdb, 0x0c, 0x63, 0x9d, 0x21, 0x1c, 0x49, 0x32, 0x1b, 0x80, 0x82, 0x74, 0xd3, 0x63, 0x44, + 0x54, 0x0f, 0x12, 0x4d, 0xab, 0x1f, 0xc1, 0x5c, 0xdc, 0x42, 0x8c, 0xd1, 0xfd, 0x37, 0xa1, 0xc6, + 0x2d, 0x88, 0xde, 0x75, 0x86, 0x76, 0x30, 0x4e, 0x50, 0x73, 0x1c, 0x7a, 0x8d, 0x00, 0xab, 0xdf, + 0x08, 0xa7, 0xdb, 0x67, 0xd6, 0xe4, 0xff, 0x2b, 0x40, 0xa5, 0x35, 0x30, 0x7a, 0xb8, 0xe3, 0xe2, + 0x2e, 0x59, 0xe9, 0x2d, 0xf2, 0xc1, 0xc7, 0x9d, 0x7d, 0xa0, 0x77, 0x65, 0xaf, 0x85, 0xf9, 0xa9, + 0xcf, 0x4b, 0x67, 0x95, 0x82, 0xc2, 0x98, 0xc0, 0xe4, 0x1a, 0x2c, 0x0d, 0x7d, 0xec, 0xe9, 0xbe, + 0x8b, 0xbb, 0xd6, 0x9e, 0x85, 0x4d, 0x9d, 0x35, 0x87, 0x68, 0x73, 0x88, 0xd4, 0x75, 0x44, 0x15, + 0xa5, 0x99, 0x15, 0xca, 0x1c, 0xcb, 0x0c, 0x65, 0x3e, 0xa9, 0x2b, 0x73, 0x1d, 0xca, 0x5f, 0xc2, + 0x07, 0x2c, 0xd8, 0x9f, 0x10, 0x4f, 0xfd, 0x4e, 0x09, 0x56, 0x72, 0x8e, 0x81, 0x68, 0xa4, 0xe8, + 0x0e, 0x75, 0x17, 0x7b, 0x96, 0x63, 0x8a, 0x51, 0xeb, 0xba, 0xc3, 0x36, 0x2d, 0x40, 0x27, 0x81, + 0x7c, 0xe8, 0xdf, 0x18, 0x3a, 0xdc, 0x19, 0x2d, 0x6a, 0xe5, 0xae, 0x3b, 0xfc, 0x32, 0xf9, 0x16, + 0xb8, 0xfe, 0xbe, 0xe1, 0x61, 0x66, 0x3f, 0x18, 0x6e, 0x87, 0x16, 0xa0, 0x97, 0xe1, 0x38, 0x5b, + 0x1b, 0xf5, 0xbe, 0x35, 0xb0, 0x88, 0x95, 0x8d, 0x4d, 0x8d, 0xa2, 0x86, 0x58, 0xe5, 0x03, 0x52, + 0xd7, 0xb2, 0xd9, 0x64, 0x50, 0xa1, 0xe6, 0x38, 0x03, 0xdd, 0xef, 0x3a, 0x1e, 0xd6, 0x0d, 0xf3, + 0x23, 0x3a, 0x0f, 0x8a, 0x5a, 0xd5, 0x71, 0x06, 0x1d, 0x52, 0xd6, 0x34, 0x3f, 0x42, 0x67, 0xa1, + 0xda, 0x75, 0x87, 0x3e, 0x0e, 0x74, 0xf2, 0x87, 0x6e, 0xd6, 0x55, 0x34, 0x60, 0x45, 0x6b, 0xee, + 0xd0, 0x8f, 0x01, 0x0c, 0x48, 0x78, 0x36, 0x1b, 0x07, 0xd8, 0xc4, 0x03, 0x7a, 0xa2, 0xbe, 0x3f, + 0xec, 0x61, 0xd7, 0xe8, 0x61, 0xc6, 0x9a, 0xd8, 0x71, 0x93, 0x4e, 0xd4, 0xdf, 0xe5, 0x20, 0x94, + 0x41, 0x6d, 0x7e, 0x3f, 0xfe, 0xe9, 0xa3, 0xf7, 0x60, 0x76, 0x68, 0x53, 0x05, 0x58, 0xad, 0x50, + 0xdc, 0x6b, 0x13, 0x1c, 0xba, 0x5d, 0xd9, 0x65, 0x28, 0xfc, 0x0c, 0x90, 0x13, 0x40, 0xb7, 0xa1, + 0xc1, 0x05, 0xe5, 0x3f, 0x31, 0xdc, 0xa4, 0xb4, 0x80, 0x8a, 0x60, 0x99, 0x41, 0x74, 0x9e, 0x18, + 0x6e, 0x5c, 0x62, 0x8d, 0xdb, 0x30, 0x17, 0x27, 0x7a, 0x28, 0x5d, 0xba, 0x0b, 0x35, 0xa9, 0x93, + 0x64, 0xb4, 0xa9, 0x50, 0x7c, 0xeb, 0x9b, 0x62, 0x6e, 0x95, 0x49, 0x41, 0xc7, 0xfa, 0x26, 0xcd, + 0x83, 0xa0, 0x9c, 0x51, 0x3a, 0x25, 0x8d, 0x7d, 0xa8, 0x06, 0xd4, 0xa4, 0xd4, 0x03, 0x62, 0x92, + 0x69, 0x8e, 0x01, 0x37, 0xc9, 0xe4, 0x37, 0x29, 0xf3, 0x9c, 0xbe, 0xe0, 0x80, 0xfe, 0x26, 0x65, + 0xf4, 0x00, 0x9a, 0x1d, 0xa7, 0xd1, 0xdf, 0xb4, 0x09, 0xfc, 0x98, 0xe7, 0x1c, 0x55, 0x34, 0xf6, + 0xa1, 0xfe, 0x86, 0x02, 0xb0, 0x66, 0xb8, 0xc6, 0x43, 0xab, 0x6f, 0x05, 0x07, 0xe8, 0x22, 0xd4, + 0x0d, 0xd3, 0xd4, 0xbb, 0xa2, 0xc4, 0xc2, 0x22, 0x09, 0x6c, 0xc1, 0x30, 0xcd, 0xb5, 0x58, 0x31, + 0x7a, 0x11, 0x16, 0x89, 0x41, 0x95, 0x61, 0x59, 0x56, 0x58, 0x9d, 0x54, 0x48, 0xc0, 0x37, 0x61, + 0x95, 0xd0, 0x35, 0x06, 0x0f, 0x2d, 0x6c, 0x07, 0x32, 0x0e, 0x4b, 0x17, 0x5b, 0x36, 0x4c, 0xb3, + 0xc9, 0xaa, 0xe3, 0x98, 0xea, 0x6f, 0xcd, 0xc2, 0x69, 0x79, 0xc4, 0x93, 0xd9, 0x20, 0xb7, 0x61, + 0x2e, 0xc1, 0x6f, 0x2a, 0x8f, 0x22, 0xea, 0xa1, 0x26, 0xc1, 0x26, 0x72, 0x11, 0x0a, 0xa9, 0x5c, + 0x84, 0xcc, 0x4c, 0x93, 0xe2, 0xa7, 0x94, 0x69, 0x52, 0xfa, 0x84, 0x99, 0x26, 0xd3, 0x47, 0xcd, + 0x34, 0x99, 0x9b, 0x38, 0xd3, 0xe4, 0x79, 0x6a, 0x7a, 0x45, 0x8b, 0xd4, 0x1d, 0x60, 0x36, 0xa1, + 0x16, 0x52, 0xb7, 0x45, 0x66, 0x62, 0x22, 0x23, 0x65, 0xf6, 0x30, 0x19, 0x29, 0xe5, 0x23, 0x66, + 0xa4, 0x2c, 0x7e, 0x2a, 0x19, 0x29, 0xe7, 0x60, 0xce, 0x76, 0x74, 0x1b, 0x3f, 0xd1, 0xc9, 0xd0, + 0xfb, 0x34, 0xcf, 0xa5, 0xac, 0x81, 0xed, 0x6c, 0xe1, 0x27, 0x6d, 0x52, 0x82, 0xce, 0xc3, 0xdc, + 0xc0, 0xf0, 0x1f, 0x61, 0x93, 0xa6, 0x86, 0xf8, 0xab, 0x35, 0xaa, 0xb3, 0x55, 0x56, 0xd6, 0x26, + 0x45, 0xe8, 0x39, 0x08, 0xfb, 0xca, 0x81, 0xe6, 0x29, 0x50, 0x4d, 0x94, 0x32, 0xb0, 0x58, 0x76, + 0xcb, 0xc2, 0x11, 0xb3, 0x5b, 0xea, 0x87, 0xc9, 0x6e, 0xb9, 0x0c, 0x75, 0xf1, 0x5b, 0xa4, 0xb7, + 0xb0, 0xd3, 0x0a, 0x9a, 0xd9, 0xb2, 0x20, 0xea, 0x44, 0x0a, 0x4b, 0x5e, 0x32, 0x0c, 0x8c, 0x4c, + 0x86, 0xf9, 0x3d, 0x85, 0xc7, 0xcd, 0xe1, 0x24, 0xe5, 0xa7, 0xf0, 0x52, 0x02, 0x85, 0x72, 0x94, + 0x04, 0x0a, 0xb4, 0x93, 0x9b, 0x62, 0x72, 0x31, 0x9f, 0xd2, 0xb8, 0x24, 0x13, 0xd5, 0x02, 0x24, + 0x63, 0xd0, 0x89, 0xc2, 0xd3, 0x28, 0xd8, 0x4a, 0x4d, 0xd3, 0x28, 0xea, 0x50, 0xec, 0xf1, 0xc4, + 0x8a, 0xa2, 0x46, 0x7e, 0xe6, 0x69, 0x70, 0x31, 0x4f, 0x83, 0xd5, 0xcd, 0x30, 0x7a, 0xfe, 0x34, + 0x32, 0xff, 0xd4, 0x7f, 0x51, 0xe0, 0x34, 0xa7, 0x97, 0x93, 0x1e, 0x97, 0x31, 0x69, 0x95, 0x9c, + 0x49, 0xdb, 0xf5, 0xb0, 0x89, 0xed, 0xc0, 0x32, 0xfa, 0xd4, 0x1f, 0x13, 0x07, 0xe2, 0x51, 0x31, + 0x75, 0x09, 0xcf, 0xc3, 0x1c, 0xcb, 0x78, 0xe5, 0x81, 0x34, 0x4b, 0x6c, 0xad, 0xd2, 0xa4, 0x57, + 0x1e, 0x2b, 0x6f, 0x67, 0x19, 0xca, 0x52, 0xee, 0x0e, 0xcc, 0x58, 0x7b, 0xa9, 0x3a, 0xb0, 0x92, + 0x93, 0x9a, 0x90, 0xa9, 0x11, 0x4a, 0x5a, 0x23, 0x46, 0x0a, 0x29, 0xad, 0x11, 0xdf, 0x51, 0xe0, + 0x6c, 0x2a, 0xa0, 0xff, 0xfc, 0x25, 0xab, 0xfe, 0xa1, 0x12, 0xea, 0x4f, 0x72, 0x76, 0xad, 0xa5, + 0x67, 0xd7, 0x73, 0xa3, 0xf6, 0x27, 0x32, 0xe7, 0xd7, 0xfb, 0xb9, 0xf3, 0xeb, 0xc5, 0x91, 0x7b, + 0x1d, 0xe3, 0xe4, 0xf9, 0x8f, 0x0a, 0x9c, 0xc8, 0x65, 0x20, 0xe1, 0xde, 0x2a, 0x49, 0xf7, 0x96, + 0xbb, 0xc6, 0x51, 0x30, 0xc3, 0x5c, 0x63, 0x1a, 0xaf, 0x70, 0x1f, 0x54, 0x1f, 0x18, 0x4f, 0xad, + 0xc1, 0x70, 0xc0, 0x7d, 0x63, 0x42, 0x6e, 0x93, 0x95, 0x1c, 0xc5, 0x39, 0xbe, 0x0a, 0x4b, 0x6c, + 0xdd, 0xa2, 0xfe, 0x59, 0x84, 0xc1, 0x7c, 0xe4, 0x45, 0x56, 0x47, 0x5c, 0x35, 0x8e, 0xa0, 0x36, + 0x61, 0x31, 0xec, 0xd6, 0xc8, 0xd4, 0xac, 0x58, 0xaa, 0x55, 0x41, 0x4e, 0xb5, 0xb2, 0x61, 0x66, + 0x1d, 0x3f, 0xb6, 0xba, 0xf8, 0x53, 0xc9, 0x3c, 0x3f, 0x07, 0x55, 0x17, 0x7b, 0x03, 0xcb, 0xf7, + 0x43, 0x27, 0xa5, 0xa2, 0xc5, 0x8b, 0xd4, 0xb3, 0x50, 0x59, 0x5b, 0x6f, 0xf1, 0x26, 0x33, 0x58, + 0x55, 0xff, 0x75, 0x06, 0x16, 0x92, 0x3a, 0x76, 0x2b, 0x95, 0xfa, 0x75, 0x3a, 0x73, 0xdb, 0x30, + 0x63, 0xbf, 0xfc, 0x45, 0x11, 0x49, 0x16, 0xd2, 0x79, 0x11, 0x61, 0xb4, 0x28, 0x02, 0xcc, 0x55, + 0x98, 0xed, 0x3a, 0x83, 0x81, 0x61, 0x9b, 0xe2, 0xfe, 0x00, 0xff, 0x24, 0x9c, 0x1a, 0x5e, 0x8f, + 0xed, 0x94, 0x57, 0x34, 0xfa, 0x9b, 0xa8, 0x00, 0x31, 0x86, 0x96, 0x4d, 0x93, 0xc7, 0xe8, 0x28, + 0x55, 0x34, 0xe0, 0x45, 0xeb, 0x96, 0x87, 0x2e, 0x40, 0x09, 0xdb, 0x8f, 0xc5, 0x11, 0x9a, 0xb4, + 0x63, 0x2b, 0x42, 0x3c, 0x8d, 0x42, 0xa0, 0x8b, 0x30, 0x33, 0x20, 0x6a, 0x25, 0x12, 0x0c, 0x16, + 0x53, 0x79, 0xf6, 0x1a, 0x07, 0x40, 0x2f, 0xc1, 0xac, 0x49, 0xa5, 0x27, 0x62, 0x1a, 0x24, 0xa5, + 0xa1, 0xd1, 0x2a, 0x4d, 0x80, 0xa0, 0x77, 0xc2, 0xe3, 0x82, 0x4a, 0xfa, 0x1c, 0x2f, 0x21, 0xe6, + 0xcc, 0x93, 0x82, 0x2d, 0x39, 0xe6, 0x86, 0xf4, 0xa1, 0x43, 0x92, 0xca, 0xe8, 0xc8, 0xfb, 0x04, + 0x94, 0xfb, 0x4e, 0x8f, 0x69, 0x4f, 0x95, 0x5d, 0x3e, 0xe9, 0x3b, 0x3d, 0xaa, 0x3c, 0x4b, 0x30, + 0xed, 0x07, 0xa6, 0x65, 0x53, 0xd7, 0xb0, 0xac, 0xb1, 0x0f, 0x32, 0x49, 0xe9, 0x0f, 0xdd, 0xb1, + 0xbb, 0x78, 0xb5, 0x46, 0xab, 0x2a, 0xb4, 0x64, 0xdb, 0xee, 0xd2, 0x10, 0x39, 0x08, 0x0e, 0x56, + 0xe7, 0x69, 0x39, 0xf9, 0x19, 0xed, 0xda, 0x2f, 0xe4, 0xec, 0xda, 0x27, 0x18, 0xce, 0xd8, 0xb5, + 0xaf, 0xe7, 0xae, 0x19, 0x49, 0x5c, 0x81, 0x42, 0xdc, 0xe2, 0xb5, 0xf5, 0x96, 0x2e, 0x86, 0x66, + 0x31, 0x9d, 0x86, 0x1f, 0xaa, 0xbd, 0x06, 0xe1, 0xcf, 0xcf, 0xf5, 0xd0, 0xe4, 0x07, 0x0a, 0x2c, + 0xaf, 0xd1, 0x23, 0xe3, 0x98, 0x6d, 0x3c, 0x4c, 0xb6, 0xd5, 0x2b, 0x61, 0x0a, 0x5c, 0x46, 0x1e, + 0x53, 0x52, 0x52, 0x22, 0x03, 0x6e, 0x0d, 0xe6, 0x05, 0x59, 0x8e, 0x5c, 0x9c, 0x20, 0x7f, 0xae, + 0xe6, 0xc7, 0x3f, 0xd5, 0x37, 0x61, 0x25, 0xc5, 0x39, 0x3f, 0xb8, 0x4b, 0xde, 0xd7, 0x60, 0x8c, + 0xc7, 0xef, 0x6b, 0xa8, 0xb7, 0xe1, 0x78, 0x27, 0x30, 0xbc, 0x20, 0xd5, 0xed, 0x09, 0x70, 0x69, + 0x66, 0x9c, 0x8c, 0xcb, 0x93, 0xd7, 0x3a, 0xb0, 0xd4, 0x09, 0x1c, 0xf7, 0x08, 0x44, 0x89, 0xdd, + 0x21, 0x3d, 0x77, 0x86, 0x62, 0x9d, 0x11, 0x9f, 0xea, 0x0a, 0xcb, 0xe3, 0x4b, 0xb7, 0xf6, 0x06, + 0x2c, 0xb3, 0x34, 0xba, 0xa3, 0x74, 0xe2, 0x84, 0x48, 0xe2, 0x4b, 0xd3, 0xbd, 0x0f, 0xc7, 0xa4, + 0xa3, 0x04, 0x9e, 0x76, 0x72, 0x4d, 0x4e, 0x3b, 0xc9, 0x3f, 0xb5, 0x09, 0xb3, 0x4e, 0x7e, 0xb5, + 0x10, 0xb3, 0xe3, 0x39, 0x67, 0xcf, 0xaf, 0xca, 0x49, 0x27, 0x67, 0xf3, 0xa9, 0x4a, 0x39, 0x27, + 0x69, 0xed, 0x2c, 0x66, 0x68, 0xe7, 0x6e, 0xea, 0x60, 0xbb, 0x94, 0x4e, 0x1a, 0x4a, 0x70, 0xf8, + 0x99, 0x1c, 0x69, 0x3f, 0x60, 0x89, 0x29, 0x61, 0xd3, 0xe1, 0x69, 0xf6, 0x2b, 0x89, 0xd3, 0xec, + 0x93, 0x23, 0x38, 0x0d, 0xcf, 0xb1, 0xbf, 0x5f, 0x82, 0x4a, 0x58, 0x97, 0x92, 0x70, 0x5a, 0x54, + 0x85, 0x0c, 0x51, 0xc5, 0xd7, 0xd7, 0xe2, 0x11, 0xd7, 0xd7, 0xd2, 0x04, 0xeb, 0xeb, 0x49, 0xa8, + 0xd0, 0x1f, 0xf4, 0x2e, 0x01, 0x5b, 0x2f, 0xcb, 0xb4, 0x40, 0xc3, 0x7b, 0x91, 0x8a, 0xcd, 0x4c, + 0xa8, 0x62, 0x89, 0x24, 0x98, 0xd9, 0x64, 0x12, 0xcc, 0xad, 0x70, 0xed, 0x2b, 0xa7, 0x0f, 0x9d, + 0x42, 0x8a, 0x99, 0xab, 0x5e, 0x62, 0xa7, 0xb9, 0x92, 0xde, 0x69, 0x8e, 0xf0, 0xc7, 0xae, 0x77, + 0xac, 0xcb, 0x96, 0xc9, 0xe2, 0x57, 0x6d, 0x96, 0x7e, 0xb7, 0xcc, 0xcf, 0xd3, 0xf4, 0x6f, 0xb3, + 0xa4, 0x97, 0xb8, 0x0a, 0x72, 0xf3, 0xf9, 0xaa, 0x74, 0xde, 0xa8, 0x64, 0x2c, 0x63, 0xa1, 0xc9, + 0x88, 0x9f, 0x31, 0xee, 0xc2, 0x72, 0x32, 0x59, 0xee, 0x50, 0xe6, 0x2f, 0x27, 0x6b, 0xf7, 0x27, + 0x71, 0x67, 0x30, 0x27, 0x45, 0xf5, 0x56, 0x2a, 0x9b, 0x62, 0x62, 0xe5, 0xbd, 0x26, 0x27, 0x5e, + 0x1d, 0x5a, 0xe5, 0x52, 0x79, 0x57, 0xd4, 0x59, 0x31, 0x3c, 0x5e, 0xcd, 0xfc, 0xf6, 0x0a, 0x2f, + 0x69, 0xd2, 0xa0, 0x61, 0xcf, 0xb2, 0x2d, 0x7f, 0x9f, 0xd5, 0xcf, 0xb0, 0xa0, 0x41, 0x14, 0x35, + 0xe9, 0xfe, 0x2c, 0x7e, 0x6a, 0x05, 0x7a, 0xd7, 0x31, 0x31, 0x55, 0xe8, 0x69, 0xad, 0x4c, 0x0a, + 0xd6, 0x1c, 0x13, 0x47, 0x53, 0xad, 0x7c, 0xd8, 0xa9, 0x56, 0x49, 0x4c, 0xb5, 0x65, 0x98, 0xf1, + 0xb0, 0xe1, 0x3b, 0x36, 0x57, 0x49, 0xfe, 0x45, 0x06, 0x62, 0x80, 0x7d, 0x9f, 0xb4, 0xc1, 0x7d, + 0x33, 0xfe, 0x19, 0xf3, 0x23, 0xe7, 0x46, 0xf8, 0x91, 0x23, 0x12, 0x60, 0x13, 0x7e, 0x64, 0x6d, + 0x84, 0x1f, 0x39, 0x51, 0xfe, 0x6b, 0xe4, 0x31, 0xcf, 0x8f, 0xf3, 0x98, 0xe3, 0x2e, 0xe7, 0x82, + 0xec, 0x72, 0xbe, 0x19, 0x0f, 0x5e, 0xeb, 0xe9, 0x74, 0x80, 0xd1, 0x51, 0x6b, 0x7c, 0x6e, 0x2f, + 0x4a, 0x73, 0x1b, 0x5d, 0xe6, 0x9b, 0xe4, 0x28, 0xbd, 0xbd, 0x2a, 0xed, 0xf6, 0xb0, 0xfd, 0xf3, + 0xcf, 0xd3, 0x14, 0xfc, 0x8d, 0x02, 0x2b, 0xa9, 0xa9, 0xcb, 0x8d, 0xc1, 0x2b, 0x89, 0x1c, 0xdd, + 0x91, 0xc9, 0xb1, 0x22, 0x45, 0xb7, 0x29, 0xa5, 0xe8, 0x5e, 0x1e, 0x85, 0x92, 0x93, 0xa1, 0x7b, + 0xf4, 0xac, 0xd9, 0x6f, 0x2b, 0x80, 0x32, 0x02, 0xfd, 0x5b, 0x22, 0x24, 0x38, 0xc4, 0xee, 0x1f, + 0x8f, 0x0a, 0xde, 0x89, 0xa2, 0x82, 0xc2, 0x61, 0x36, 0x37, 0xc2, 0x74, 0x9e, 0x0d, 0xa8, 0xc9, + 0xfb, 0x7b, 0x37, 0x64, 0x66, 0xce, 0xe4, 0x33, 0x43, 0x15, 0x84, 0x01, 0xab, 0x3f, 0x29, 0xc0, + 0xd9, 0x5d, 0xd7, 0x4c, 0xb8, 0xbc, 0xbc, 0xb1, 0xc9, 0x4d, 0xed, 0x2d, 0x39, 0xa5, 0xe9, 0x88, + 0x92, 0x28, 0x1e, 0x45, 0x12, 0xe8, 0xeb, 0x59, 0x49, 0x67, 0x6f, 0x4a, 0xc7, 0xc3, 0xa3, 0x3b, + 0x38, 0x26, 0xff, 0xec, 0x93, 0xce, 0x04, 0x15, 0xce, 0xe5, 0x33, 0xc0, 0xdd, 0xe3, 0xff, 0x0d, + 0x0b, 0x1b, 0x4f, 0x71, 0xb7, 0x73, 0x60, 0x77, 0x0f, 0x21, 0xf5, 0x3a, 0x14, 0xbb, 0x03, 0x93, + 0x1f, 0x4c, 0x91, 0x9f, 0x71, 0x8f, 0xbf, 0x28, 0x7b, 0xfc, 0x3a, 0xd4, 0xa3, 0x16, 0xf8, 0x3c, + 0x5c, 0x26, 0xf3, 0xd0, 0x24, 0xc0, 0x84, 0xf8, 0x9c, 0xc6, 0xbf, 0x78, 0x39, 0xf6, 0xd8, 0x25, + 0x22, 0x56, 0x8e, 0x3d, 0x4f, 0x5e, 0x46, 0x8a, 0xf2, 0x32, 0xa2, 0x7e, 0x57, 0x81, 0x2a, 0x69, + 0xe1, 0x13, 0xf1, 0xcf, 0xc3, 0xee, 0x62, 0x14, 0x76, 0x87, 0xd1, 0x7b, 0x29, 0x1e, 0xbd, 0x47, + 0x9c, 0x4f, 0xd3, 0xe2, 0x34, 0xe7, 0x33, 0x61, 0x39, 0xf6, 0x3c, 0xf5, 0x1c, 0xcc, 0x31, 0xde, + 0x78, 0xcf, 0xeb, 0x50, 0x1c, 0x7a, 0x7d, 0x31, 0x7e, 0x43, 0xaf, 0xaf, 0x7e, 0x4b, 0x81, 0x5a, + 0x33, 0x08, 0x8c, 0xee, 0xfe, 0x21, 0x3a, 0x10, 0x32, 0x57, 0x88, 0x33, 0x97, 0xee, 0x44, 0xc4, + 0x6e, 0x29, 0x87, 0xdd, 0x69, 0x89, 0x5d, 0x15, 0xe6, 0x05, 0x2f, 0xb9, 0x0c, 0x6f, 0x01, 0x6a, + 0x3b, 0x5e, 0x70, 0xcf, 0xf1, 0x9e, 0x18, 0x9e, 0x79, 0xb8, 0x08, 0x1b, 0x41, 0x89, 0x3f, 0x35, + 0x51, 0xbc, 0x30, 0xad, 0xd1, 0xdf, 0xea, 0x0b, 0x70, 0x4c, 0xa2, 0x97, 0xdb, 0xf0, 0x6d, 0xa8, + 0x52, 0xb7, 0x80, 0x07, 0x5f, 0x2f, 0xc6, 0x73, 0x2a, 0xc6, 0xb8, 0x0f, 0xea, 0x3a, 0x2c, 0x12, + 0x07, 0x91, 0x96, 0x87, 0xf6, 0xe5, 0x6a, 0x22, 0x3e, 0x59, 0x49, 0x91, 0x48, 0xc4, 0x26, 0x3f, + 0x53, 0x60, 0x9a, 0xa5, 0x4f, 0x24, 0x9d, 0xb6, 0x93, 0x64, 0xe1, 0x75, 0x1d, 0x3d, 0x30, 0x7a, + 0xe1, 0x33, 0x1e, 0xa4, 0x60, 0xc7, 0xe8, 0xd1, 0x83, 0x2e, 0x5a, 0x69, 0x5a, 0x3d, 0xec, 0x07, + 0xe2, 0x70, 0xb6, 0x4a, 0xca, 0xd6, 0x59, 0x11, 0x11, 0x0c, 0x3d, 0xc3, 0x2e, 0xd1, 0xa3, 0x6a, + 0xfa, 0x1b, 0x5d, 0x60, 0x07, 0x27, 0xa3, 0x4f, 0x24, 0xe9, 0x81, 0x4a, 0x03, 0xca, 0x89, 0xa3, + 0xc4, 0xf0, 0x1b, 0x5d, 0x84, 0x12, 0xdd, 0x2b, 0x9f, 0x1d, 0x25, 0x25, 0x0a, 0x42, 0xb4, 0xc2, + 0xb5, 0x6c, 0x1b, 0x9b, 0xfc, 0x8d, 0x09, 0xfe, 0xa5, 0xbe, 0x03, 0x28, 0x2e, 0x3c, 0x3e, 0x40, + 0x17, 0x61, 0x86, 0xca, 0x56, 0x78, 0xd5, 0x8b, 0x29, 0xd2, 0x1a, 0x07, 0x50, 0xbf, 0x06, 0x88, + 0xb5, 0x25, 0x79, 0xd2, 0x87, 0x19, 0xc0, 0x11, 0x3e, 0xf5, 0x1f, 0x29, 0x70, 0x4c, 0xa2, 0xce, + 0xf9, 0x7b, 0x41, 0x26, 0x9f, 0xc1, 0x1e, 0x27, 0xfd, 0x96, 0xb4, 0xc0, 0x5f, 0x4c, 0xb3, 0xf1, + 0x3f, 0xb4, 0xb8, 0xff, 0xad, 0x02, 0xd0, 0x1c, 0x06, 0xfb, 0x7c, 0x53, 0x38, 0x3e, 0x88, 0x4a, + 0x62, 0x10, 0x1b, 0x50, 0x76, 0x0d, 0xdf, 0x7f, 0xe2, 0x78, 0x22, 0xe0, 0x0d, 0xbf, 0xe9, 0x56, + 0xee, 0x90, 0xbf, 0xd5, 0x51, 0xd1, 0xe8, 0x6f, 0xf4, 0x1c, 0xcc, 0xb3, 0xf7, 0x65, 0x74, 0xc3, + 0x34, 0x3d, 0x91, 0xa7, 0x59, 0xd1, 0x6a, 0xac, 0xb4, 0xc9, 0x0a, 0x09, 0x98, 0x45, 0x4f, 0x4e, + 0x82, 0x03, 0x3d, 0x70, 0x1e, 0x61, 0x9b, 0x07, 0xb1, 0x35, 0x51, 0xba, 0x43, 0x0a, 0xd9, 0x29, + 0x6c, 0xcf, 0xf2, 0x03, 0x4f, 0x80, 0x89, 0xf3, 0x6a, 0x5e, 0x4a, 0xc1, 0xd4, 0xdf, 0x57, 0xa0, + 0xde, 0x1e, 0xf6, 0xfb, 0x4c, 0xb8, 0x47, 0x19, 0xe4, 0x4b, 0xbc, 0x2b, 0x85, 0xb4, 0xca, 0x47, + 0x82, 0xe2, 0x5d, 0xfc, 0x54, 0xf6, 0xdd, 0xae, 0xc1, 0x62, 0x8c, 0x63, 0xae, 0x38, 0x52, 0xa8, + 0xa1, 0xc8, 0xa1, 0x86, 0xda, 0x04, 0xc4, 0xb6, 0x9a, 0x8e, 0xdc, 0x4b, 0xf5, 0x38, 0x1c, 0x93, + 0x48, 0xf0, 0xa5, 0xf8, 0x12, 0xd4, 0x78, 0xce, 0x20, 0x57, 0x88, 0x13, 0x50, 0x26, 0x26, 0xb5, + 0x6b, 0x99, 0x22, 0x39, 0x65, 0xd6, 0x75, 0xcc, 0x35, 0xcb, 0xf4, 0xd4, 0x2f, 0x43, 0x8d, 0x3f, + 0x4a, 0xc0, 0x61, 0xef, 0xc0, 0x3c, 0x3f, 0xcb, 0xd4, 0xa5, 0x5b, 0xbc, 0x27, 0x32, 0x12, 0x53, + 0x85, 0x28, 0xec, 0xf8, 0xa7, 0xfa, 0x75, 0x68, 0x30, 0x6f, 0x41, 0x22, 0x2c, 0x3a, 0x78, 0x07, + 0x44, 0x5e, 0xd8, 0x08, 0xfa, 0x32, 0x66, 0xcd, 0x8b, 0x7f, 0xaa, 0xa7, 0xe1, 0x64, 0x26, 0x7d, + 0xde, 0x7b, 0x17, 0xea, 0x51, 0x05, 0xbb, 0x6a, 0x1a, 0x66, 0xdc, 0x28, 0xb1, 0x8c, 0x9b, 0xe5, + 0xd0, 0x85, 0x2f, 0x88, 0x95, 0x8b, 0x7a, 0xe9, 0x51, 0x08, 0x58, 0xcc, 0x0b, 0x01, 0x4b, 0x52, + 0x08, 0xa8, 0x6e, 0x86, 0x32, 0xe4, 0x81, 0xf8, 0x9b, 0x74, 0xab, 0x80, 0xb5, 0x2d, 0x8c, 0xda, + 0xa9, 0xec, 0xfe, 0x31, 0x20, 0x2d, 0x06, 0xaf, 0x5e, 0x84, 0x9a, 0x6c, 0xde, 0x62, 0x16, 0x4b, + 0x91, 0x2d, 0xd6, 0xff, 0x81, 0x65, 0x4d, 0x4a, 0xb2, 0xbb, 0x87, 0x8d, 0x60, 0xe8, 0x61, 0x1f, + 0xbd, 0x01, 0x8d, 0x8c, 0x27, 0x7f, 0x74, 0x1e, 0x19, 0x32, 0x32, 0x2b, 0xa9, 0x97, 0x7f, 0x36, + 0x59, 0x5c, 0xf8, 0x02, 0x2c, 0xd0, 0x24, 0xc0, 0xd8, 0xe5, 0x59, 0x26, 0x23, 0xfa, 0xbc, 0xcc, + 0x56, 0x74, 0x53, 0xd6, 0x0c, 0x9f, 0xb4, 0xe0, 0xed, 0x67, 0x9e, 0xb1, 0xbd, 0x0d, 0xe5, 0x3d, + 0xce, 0x17, 0x9f, 0x90, 0x6a, 0x86, 0x30, 0x12, 0x3d, 0xd0, 0x42, 0x1c, 0xf5, 0x3f, 0x15, 0x98, + 0x4f, 0x98, 0xe4, 0x97, 0x13, 0xf1, 0x57, 0x96, 0xf6, 0x24, 0xa2, 0xaf, 0x9b, 0x92, 0x71, 0x96, + 0x93, 0x52, 0x46, 0x5f, 0x8b, 0xdc, 0x80, 0x7a, 0x22, 0xc3, 0x51, 0x64, 0x37, 0x37, 0xf2, 0xfb, + 0xa1, 0x2d, 0xc8, 0xe9, 0x8f, 0xfe, 0xd1, 0xcd, 0xfb, 0x12, 0x5f, 0xf4, 0xee, 0xf9, 0x04, 0x9f, + 0x6b, 0x85, 0xfa, 0x0c, 0x54, 0x77, 0xf3, 0xde, 0xea, 0x29, 0x89, 0xfc, 0xc7, 0xd7, 0x60, 0xe9, + 0x9e, 0xd5, 0xc7, 0xfe, 0x81, 0x1f, 0xe0, 0x41, 0x8b, 0xda, 0xe2, 0x3d, 0x0b, 0x7b, 0xe8, 0x0c, + 0x00, 0x55, 0x05, 0xd7, 0xb1, 0xc2, 0xb7, 0x43, 0x62, 0x25, 0xea, 0x8f, 0x15, 0x58, 0x88, 0x10, + 0x27, 0x49, 0x72, 0x7d, 0x15, 0xa6, 0xf7, 0x7c, 0xb1, 0x8d, 0x9a, 0x38, 0x5c, 0xca, 0x62, 0x41, + 0x2b, 0xed, 0xf9, 0x2d, 0x13, 0xbd, 0x06, 0x30, 0xf4, 0xb1, 0xc9, 0xcf, 0x73, 0xc7, 0xa4, 0x1d, + 0x57, 0x08, 0x28, 0x3b, 0x11, 0xbe, 0x09, 0x55, 0xcb, 0x76, 0x4c, 0x4c, 0xcf, 0xfa, 0xcd, 0x71, + 0x29, 0xc7, 0xc0, 0x60, 0x77, 0x7d, 0x6c, 0xaa, 0xbf, 0x1d, 0x9d, 0xd8, 0x7f, 0x91, 0x7b, 0xa8, + 0xfe, 0x81, 0xf0, 0x46, 0xc4, 0xb0, 0x73, 0xd5, 0x7f, 0x17, 0x16, 0xd9, 0xa2, 0xb2, 0x17, 0xb6, + 0x99, 0x79, 0x17, 0x2b, 0xd1, 0x39, 0xad, 0x6e, 0x71, 0x3f, 0x54, 0x20, 0xa1, 0x36, 0x1c, 0x8f, + 0xc2, 0x83, 0x38, 0xb5, 0xc2, 0x78, 0x6a, 0x4b, 0xdd, 0xd8, 0xae, 0xbb, 0x40, 0x54, 0x6f, 0xc3, + 0xf1, 0xc4, 0x75, 0x8b, 0xc9, 0x8f, 0x5e, 0xde, 0x4b, 0x6c, 0x94, 0x46, 0x93, 0xfd, 0x9a, 0x7c, + 0xcb, 0x6f, 0xd4, 0xc5, 0x18, 0x7e, 0xe1, 0x6c, 0x17, 0x4e, 0x48, 0xbb, 0xb8, 0x12, 0x2f, 0x37, + 0x13, 0xce, 0xfa, 0xb9, 0x7c, 0x7a, 0x09, 0xaf, 0xfd, 0xdf, 0x14, 0x58, 0xca, 0x02, 0x38, 0xe2, + 0xe1, 0xc2, 0x87, 0x39, 0x37, 0x84, 0x5f, 0x19, 0xc7, 0xd0, 0x67, 0x72, 0x18, 0xb3, 0xc5, 0xee, + 0x17, 0x8e, 0x1f, 0x93, 0xe2, 0x64, 0x63, 0xf2, 0xb3, 0x42, 0xec, 0x00, 0x6d, 0xc4, 0x1d, 0xc0, + 0x4f, 0xb0, 0x6b, 0xbd, 0x96, 0xb8, 0x02, 0xf8, 0x62, 0x26, 0xe2, 0x98, 0x1b, 0x80, 0x5a, 0xd6, + 0x66, 0xcc, 0xb5, 0x71, 0x94, 0xbe, 0xb0, 0x17, 0x00, 0x7f, 0xad, 0x00, 0xf3, 0xf2, 0x80, 0xa0, + 0x77, 0x32, 0xee, 0xff, 0x9d, 0x1d, 0xd3, 0x41, 0xe9, 0xfa, 0x1f, 0xbf, 0x6f, 0x57, 0x98, 0xfc, + 0xbe, 0x5d, 0x71, 0xb2, 0xfb, 0x76, 0x77, 0x61, 0xfe, 0x89, 0x67, 0x05, 0xc6, 0xc3, 0x3e, 0xd6, + 0xfb, 0xc6, 0x01, 0xf6, 0xb8, 0x61, 0x1f, 0x69, 0x8a, 0x6a, 0x02, 0xe5, 0x01, 0xc1, 0xa0, 0x61, + 0xea, 0x13, 0xc3, 0xe5, 0xd1, 0xae, 0xe4, 0x40, 0x77, 0x9e, 0x18, 0x2e, 0xc3, 0xa1, 0x20, 0xea, + 0xb7, 0x0a, 0x70, 0x3c, 0xf3, 0x96, 0xd8, 0x27, 0x17, 0xd1, 0xe5, 0xb8, 0x88, 0x0e, 0x73, 0xf5, + 0xae, 0x78, 0xa8, 0xab, 0x77, 0xad, 0x1c, 0x81, 0x65, 0x65, 0x68, 0x8c, 0x96, 0x9b, 0xfa, 0xa7, + 0x0a, 0x94, 0x05, 0x53, 0x63, 0x2f, 0xc2, 0xad, 0x0c, 0x09, 0x98, 0x4e, 0x2f, 0x2b, 0xd8, 0x86, + 0xed, 0xe8, 0x3e, 0x26, 0x1e, 0xec, 0xd8, 0x6b, 0x47, 0x4b, 0x14, 0x6f, 0xcd, 0xf1, 0xf0, 0x96, + 0x61, 0x3b, 0x1d, 0x86, 0x84, 0x9a, 0x50, 0x67, 0xf4, 0x28, 0x29, 0x42, 0x74, 0xec, 0x42, 0x39, + 0x4f, 0x11, 0x08, 0x11, 0x42, 0xcc, 0x57, 0xff, 0x42, 0x81, 0x85, 0x84, 0x64, 0x7f, 0xf1, 0x3a, + 0xf1, 0xbd, 0x22, 0x54, 0x63, 0xa3, 0x3c, 0xa6, 0x03, 0x6b, 0xb0, 0x28, 0xb2, 0xac, 0x7c, 0x1c, + 0x4c, 0x76, 0xed, 0x6b, 0x81, 0x63, 0x74, 0x70, 0xc0, 0xfc, 0xa8, 0x3b, 0xb0, 0x60, 0x3c, 0x36, + 0xac, 0x3e, 0xd5, 0xa0, 0x89, 0x5c, 0x94, 0xf9, 0x10, 0x3e, 0xf4, 0xc4, 0x58, 0xbf, 0x27, 0xba, + 0xfc, 0x05, 0x14, 0x36, 0xba, 0x83, 0xe7, 0xfb, 0xb1, 0x54, 0xbe, 0x91, 0x77, 0xf0, 0x7c, 0x3f, + 0x6c, 0x8f, 0xde, 0xd4, 0xa0, 0x97, 0x0f, 0x7d, 0xfe, 0x62, 0x4d, 0x7e, 0x7b, 0x04, 0xf6, 0x1e, + 0x05, 0x25, 0x02, 0x1b, 0x18, 0x1f, 0x39, 0x9e, 0x1e, 0xc7, 0x9f, 0x1d, 0x23, 0x30, 0x8a, 0xd1, + 0x0e, 0x89, 0xa8, 0x7f, 0xac, 0x40, 0x25, 0xb4, 0x23, 0x63, 0x46, 0xa8, 0x05, 0x4b, 0xf4, 0x5a, + 0x4b, 0x52, 0xc2, 0x63, 0x06, 0x09, 0x11, 0xa4, 0xa6, 0x2c, 0xe5, 0x26, 0xd4, 0x29, 0xa9, 0xb8, + 0xa8, 0xc7, 0x0d, 0x94, 0x2f, 0xd8, 0x64, 0x0e, 0xe5, 0x9f, 0x15, 0x00, 0xa5, 0x4d, 0xc9, 0x2f, + 0x8c, 0x92, 0xc5, 0x07, 0xad, 0x34, 0xf9, 0xa0, 0xdf, 0x87, 0x63, 0x5d, 0x67, 0x30, 0xb0, 0xe8, + 0x95, 0x28, 0xc7, 0x3b, 0x98, 0x4c, 0xdd, 0x16, 0x19, 0x0e, 0x93, 0x13, 0x13, 0xdf, 0xdb, 0x70, + 0x42, 0xc3, 0x8e, 0x8b, 0xed, 0xd0, 0xf4, 0x3f, 0x70, 0x7a, 0x87, 0xf0, 0x6f, 0x4f, 0x41, 0x23, + 0x0b, 0x9f, 0xef, 0x5a, 0x0c, 0xa1, 0xb1, 0xb6, 0x8f, 0xbb, 0x8f, 0x68, 0xf8, 0x75, 0x94, 0x4c, + 0xa9, 0x06, 0x94, 0xfb, 0x4e, 0x97, 0x3d, 0x49, 0xcc, 0x37, 0xf6, 0xc4, 0xf7, 0x88, 0x33, 0x95, + 0xd3, 0x70, 0x32, 0xb3, 0x59, 0xce, 0x15, 0x82, 0xfa, 0x7d, 0x1c, 0x6c, 0x3c, 0xc6, 0x76, 0xe8, + 0x3e, 0xab, 0x3f, 0x2c, 0xc4, 0x1c, 0x75, 0x5a, 0x75, 0x88, 0x0c, 0x33, 0xd4, 0x86, 0x28, 0x72, + 0xd0, 0x31, 0xc1, 0x66, 0x8f, 0x71, 0xb2, 0xa7, 0x72, 0xb3, 0x8f, 0x98, 0x69, 0x23, 0xf4, 0x0d, + 0xce, 0xe8, 0x99, 0xa1, 0xb0, 0x2c, 0x91, 0x78, 0x50, 0x4c, 0x26, 0x1e, 0xbc, 0x07, 0x28, 0xee, + 0x8a, 0xf3, 0x5d, 0x83, 0xd2, 0x04, 0x2f, 0x2b, 0xd5, 0xdd, 0xe4, 0x1b, 0x60, 0x39, 0xef, 0x23, + 0x4d, 0x1f, 0xe9, 0x7d, 0x24, 0xf5, 0x0c, 0x9c, 0x22, 0x0e, 0xf6, 0x26, 0x0e, 0x3c, 0xab, 0xbb, + 0x8e, 0xfd, 0xae, 0x67, 0xb9, 0x81, 0x13, 0x26, 0x3d, 0xa9, 0x3a, 0x9c, 0xce, 0xa9, 0xe7, 0xe2, + 0x7e, 0x1b, 0xaa, 0x66, 0x54, 0x9c, 0xb5, 0xcf, 0x94, 0xc4, 0xd5, 0xe2, 0x08, 0xea, 0x07, 0x50, + 0x4f, 0x02, 0x64, 0xee, 0xdf, 0x20, 0x28, 0xed, 0xe3, 0xbe, 0x2b, 0xee, 0xb0, 0x91, 0xdf, 0x44, + 0xea, 0x2c, 0x76, 0x79, 0x84, 0x0f, 0xc4, 0x39, 0x44, 0x85, 0x96, 0x7c, 0x09, 0x1f, 0x84, 0x7d, + 0x93, 0x1e, 0xec, 0xf0, 0xac, 0x6e, 0xb2, 0x6f, 0x19, 0xf5, 0x51, 0xdf, 0xc8, 0xb0, 0x0d, 0x58, + 0x31, 0xef, 0xdb, 0xe9, 0xdc, 0xc7, 0x40, 0x28, 0x2e, 0xb8, 0x8e, 0xc9, 0x7f, 0xab, 0xdf, 0x57, + 0x60, 0x31, 0x05, 0x31, 0xe1, 0xd9, 0xd2, 0x4b, 0x30, 0x2b, 0xda, 0x2d, 0xa4, 0x13, 0x89, 0x19, + 0x2d, 0x4d, 0x80, 0xa0, 0x16, 0x2c, 0x46, 0x1a, 0x2d, 0xf0, 0x8a, 0xe9, 0xb1, 0x88, 0x07, 0x2e, + 0x94, 0xdd, 0x7a, 0x37, 0x51, 0xa2, 0x76, 0xa1, 0x9e, 0x84, 0x9a, 0x64, 0x4e, 0x1d, 0x8a, 0x5f, + 0xf5, 0xaf, 0x14, 0x98, 0x61, 0x65, 0x99, 0x83, 0x2d, 0x2d, 0x07, 0x85, 0xe4, 0x72, 0xf0, 0x3a, + 0x54, 0x19, 0x1d, 0x3d, 0xbc, 0xc1, 0x38, 0x2f, 0x6f, 0xaf, 0x33, 0xd2, 0x74, 0xb6, 0xc2, 0x20, + 0xfc, 0x4d, 0xba, 0xc1, 0xf4, 0x85, 0x46, 0x26, 0x22, 0x5d, 0xbc, 0x4a, 0xcb, 0xa8, 0xc9, 0x25, + 0x2e, 0x33, 0x8f, 0x61, 0xc6, 0xd8, 0x66, 0xbe, 0xb5, 0xb5, 0x4c, 0x9f, 0x9f, 0x4c, 0x6d, 0x30, + 0xab, 0x3b, 0xf4, 0x7d, 0xc8, 0xf4, 0xc6, 0x30, 0x7a, 0x43, 0x4e, 0x2f, 0x78, 0x2e, 0x75, 0xc2, + 0x2f, 0xa1, 0x0d, 0x3d, 0xf6, 0x74, 0x3b, 0xcf, 0x32, 0xf8, 0x10, 0x4e, 0xe4, 0xc2, 0xa0, 0xb7, + 0xc2, 0xc7, 0x78, 0x4d, 0xcf, 0x7a, 0xcc, 0x37, 0x16, 0xe6, 0xe5, 0x87, 0x3f, 0xd6, 0x28, 0xc0, + 0x3a, 0xad, 0x17, 0xcf, 0xf4, 0xb2, 0xaf, 0x4b, 0xcf, 0x43, 0x59, 0x3c, 0xab, 0x8f, 0x66, 0xa1, + 0xb8, 0xb3, 0xd6, 0xae, 0x4f, 0x91, 0x1f, 0xbb, 0xeb, 0xed, 0xba, 0x82, 0xca, 0x50, 0xea, 0xac, + 0xed, 0xb4, 0xeb, 0x85, 0x4b, 0x03, 0xa8, 0x27, 0x5f, 0x96, 0x47, 0x2b, 0x70, 0xac, 0xad, 0x6d, + 0xb7, 0x9b, 0xf7, 0x9b, 0x3b, 0xad, 0xed, 0x2d, 0xbd, 0xad, 0xb5, 0xde, 0x6f, 0xee, 0x6c, 0xd4, + 0xa7, 0xd0, 0x79, 0x38, 0x1d, 0xaf, 0x78, 0x77, 0xbb, 0xb3, 0xa3, 0xef, 0x6c, 0xeb, 0x6b, 0xdb, + 0x5b, 0x3b, 0xcd, 0xd6, 0xd6, 0x86, 0x56, 0x57, 0xd0, 0x69, 0x38, 0x11, 0x07, 0xb9, 0xdb, 0x5a, + 0x6f, 0x69, 0x1b, 0x6b, 0xe4, 0x77, 0xf3, 0x41, 0xbd, 0x70, 0xe9, 0x2d, 0xa8, 0x49, 0x97, 0x9c, + 0x08, 0x4b, 0xed, 0xed, 0xf5, 0xfa, 0x14, 0xaa, 0x41, 0x25, 0x4e, 0xa7, 0x0c, 0xa5, 0xad, 0xed, + 0xf5, 0x8d, 0x7a, 0x01, 0x01, 0xcc, 0xec, 0x34, 0xb5, 0xfb, 0x1b, 0x3b, 0xf5, 0xe2, 0xa5, 0x97, + 0x61, 0x35, 0xef, 0xb2, 0x1f, 0xaa, 0xc0, 0xf4, 0x26, 0xf6, 0x7a, 0xb8, 0x3e, 0x45, 0x50, 0x3a, + 0x44, 0x4b, 0x82, 0xba, 0x72, 0xe9, 0x76, 0xf2, 0xad, 0x1a, 0x8c, 0x16, 0xa1, 0xd6, 0x69, 0x6e, + 0xad, 0xdf, 0xdd, 0xfe, 0xaa, 0xae, 0x6d, 0x34, 0xd7, 0x3f, 0xa8, 0x4f, 0xa1, 0x25, 0xa8, 0x8b, + 0xa2, 0xad, 0xed, 0x1d, 0x56, 0xaa, 0x5c, 0x7a, 0x94, 0x08, 0x73, 0x31, 0x3a, 0x0e, 0x8b, 0x21, + 0x97, 0xfa, 0x9a, 0xb6, 0xd1, 0xdc, 0xd9, 0x20, 0xcc, 0x4b, 0xc5, 0xda, 0xee, 0xd6, 0x56, 0x6b, + 0xeb, 0x7e, 0x5d, 0x21, 0x54, 0xa3, 0xe2, 0x8d, 0xaf, 0xb6, 0x08, 0x70, 0x41, 0x06, 0xde, 0xdd, + 0xfa, 0xd2, 0xd6, 0xf6, 0x57, 0xb6, 0xea, 0xc5, 0x4b, 0xff, 0x3f, 0x9e, 0x4d, 0x13, 0x2d, 0x45, + 0x27, 0x61, 0x25, 0xd5, 0xa2, 0xbe, 0xf1, 0xfe, 0xc6, 0xd6, 0x4e, 0x7d, 0x4a, 0xae, 0xec, 0xec, + 0x34, 0xb5, 0xa8, 0x52, 0x49, 0x56, 0x6e, 0xb7, 0xdb, 0x61, 0x65, 0x41, 0xae, 0x5c, 0xdf, 0x78, + 0xb0, 0x11, 0x61, 0x16, 0x2f, 0x3d, 0x0b, 0x10, 0x4d, 0x39, 0x54, 0x85, 0xd9, 0xb5, 0xed, 0xdd, + 0xad, 0x9d, 0x0d, 0xad, 0x3e, 0x45, 0xa4, 0x7c, 0xbf, 0xb9, 0x7b, 0x7f, 0xa3, 0xae, 0x5c, 0xba, + 0x08, 0x73, 0x71, 0x05, 0x24, 0x70, 0x9d, 0x0f, 0x3a, 0x3b, 0x1b, 0x9b, 0x44, 0x22, 0x73, 0x50, + 0x5e, 0xbb, 0xaf, 0x6d, 0xef, 0xb6, 0xef, 0x75, 0xea, 0xca, 0xf5, 0xff, 0x5a, 0x0a, 0x37, 0xf5, + 0x3b, 0xd8, 0xa3, 0xb7, 0x51, 0xd6, 0x61, 0x56, 0xfc, 0xef, 0x0a, 0x69, 0xa3, 0x47, 0xfe, 0x5f, + 0x1b, 0x8d, 0x93, 0x99, 0x75, 0xdc, 0x95, 0x98, 0x42, 0xef, 0xd3, 0x63, 0x92, 0xd8, 0x4b, 0x71, + 0xe7, 0x12, 0xbb, 0xe7, 0xa9, 0x07, 0xe9, 0x1a, 0xe7, 0x47, 0x40, 0x84, 0x74, 0x3f, 0x80, 0x79, + 0xf9, 0x49, 0x56, 0x74, 0x5e, 0xde, 0xdc, 0xcf, 0x78, 0xed, 0xb5, 0xa1, 0x8e, 0x02, 0x09, 0x49, + 0xeb, 0x50, 0x4f, 0x3e, 0xc9, 0x8a, 0xa4, 0xcc, 0xa0, 0x9c, 0x17, 0x5f, 0x1b, 0xcf, 0x8e, 0x06, + 0x8a, 0x37, 0x90, 0x7a, 0x69, 0xf4, 0x99, 0xd1, 0x6f, 0x37, 0x66, 0x34, 0x90, 0xf7, 0xc0, 0x23, + 0x13, 0x8e, 0xbc, 0xd0, 0xa2, 0xc4, 0xe3, 0x9e, 0x19, 0xef, 0x00, 0xca, 0xc2, 0xc9, 0x7e, 0x03, + 0x4e, 0x9d, 0x42, 0xff, 0x0b, 0x16, 0x12, 0x57, 0x0d, 0x90, 0x84, 0x98, 0x7d, 0x83, 0xa2, 0xf1, + 0xcc, 0x48, 0x18, 0x79, 0x54, 0xe3, 0xd7, 0x09, 0x92, 0xa3, 0x9a, 0x71, 0x4d, 0x21, 0x39, 0xaa, + 0x99, 0xb7, 0x11, 0xa8, 0x22, 0x4a, 0x57, 0x07, 0x64, 0x45, 0xcc, 0xba, 0xaa, 0xd0, 0x38, 0x3f, + 0x02, 0x22, 0x2e, 0x90, 0xc4, 0xe5, 0x01, 0x59, 0x20, 0xd9, 0xd7, 0x12, 0x1a, 0xcf, 0x8c, 0x84, + 0x49, 0x8e, 0x64, 0x94, 0x99, 0x9c, 0x1e, 0xc9, 0x54, 0xe2, 0x7c, 0x7a, 0x24, 0xd3, 0x89, 0xcd, + 0x7c, 0x24, 0x13, 0xb9, 0xc4, 0xea, 0xc8, 0xec, 0xc4, 0xac, 0x91, 0xcc, 0xce, 0x60, 0x54, 0xa7, + 0xd0, 0x13, 0x58, 0xcd, 0xcb, 0x1e, 0x43, 0x2f, 0x1e, 0x22, 0xc9, 0xad, 0xf1, 0xd2, 0x64, 0xc0, + 0x61, 0xc3, 0x18, 0x50, 0x3a, 0xe2, 0x42, 0xcf, 0xc9, 0xe2, 0xce, 0x89, 0xe8, 0x1a, 0xcf, 0x8f, + 0x03, 0x0b, 0x9b, 0xb9, 0x0f, 0x65, 0x91, 0x97, 0x86, 0x24, 0x13, 0x98, 0xc8, 0x87, 0x6b, 0x9c, + 0xca, 0xae, 0x0c, 0x09, 0xbd, 0x01, 0x25, 0x52, 0x8a, 0x56, 0x92, 0x70, 0x82, 0xc0, 0x6a, 0xba, + 0x22, 0x44, 0x6e, 0xc2, 0x0c, 0x4b, 0xb8, 0x42, 0xd2, 0x59, 0xa8, 0x94, 0x10, 0xd6, 0x68, 0x64, + 0x55, 0x85, 0x24, 0xda, 0xec, 0x3f, 0x01, 0xf1, 0xfc, 0x29, 0x74, 0x26, 0xf9, 0x18, 0xbb, 0x9c, + 0xa8, 0xd5, 0x38, 0x9b, 0x5b, 0x1f, 0xd7, 0xd9, 0xc4, 0xc6, 0xea, 0xf9, 0x11, 0x07, 0x05, 0x59, + 0x3a, 0x9b, 0x7d, 0xfc, 0xc0, 0x06, 0x37, 0x7d, 0x3c, 0x81, 0x9e, 0xcb, 0xd5, 0x77, 0xa9, 0x89, + 0xe7, 0xc7, 0x81, 0xc5, 0xa7, 0x46, 0xf2, 0x55, 0x35, 0x75, 0xd4, 0x8b, 0x87, 0x59, 0x53, 0x23, + 0xe7, 0x25, 0x45, 0x75, 0x0a, 0xed, 0xc3, 0xb1, 0x8c, 0xa7, 0x16, 0xd1, 0xf3, 0xf9, 0xf6, 0x57, + 0x6a, 0xe5, 0x85, 0xb1, 0x70, 0xf1, 0x96, 0x32, 0x92, 0x26, 0xe4, 0x96, 0xf2, 0xb3, 0x36, 0xe4, + 0x96, 0x46, 0x65, 0x5f, 0x50, 0x45, 0xe4, 0x36, 0xe4, 0x44, 0xd6, 0x19, 0x7b, 0x86, 0x22, 0xa6, + 0x2c, 0xc6, 0x3e, 0x1c, 0xcb, 0xd8, 0x95, 0x90, 0x99, 0xcd, 0xdf, 0x2d, 0x91, 0x99, 0x1d, 0xb5, + 0xbd, 0x31, 0x85, 0x3e, 0x04, 0x74, 0x1f, 0x07, 0xb2, 0x2b, 0xe7, 0x23, 0x69, 0xa2, 0x26, 0x37, + 0x40, 0x72, 0xf4, 0x53, 0xda, 0x09, 0x51, 0xa7, 0xae, 0x29, 0xc8, 0x66, 0xb7, 0x99, 0x52, 0xf1, + 0x3b, 0xba, 0x90, 0x1c, 0xb6, 0xbc, 0x2d, 0x80, 0xc6, 0xc5, 0x09, 0x20, 0xc3, 0xbe, 0xd8, 0xc9, + 0x67, 0x7d, 0x45, 0x08, 0x79, 0x21, 0x5f, 0x4d, 0xe4, 0xb0, 0x3c, 0xdd, 0x5e, 0x6e, 0x80, 0x1e, + 0xfa, 0x73, 0x31, 0x65, 0x3a, 0x97, 0x9f, 0xc2, 0x93, 0xe3, 0xcf, 0x65, 0x29, 0xd0, 0xf5, 0xdf, + 0x2c, 0xc2, 0x1c, 0x4b, 0x75, 0xe2, 0xee, 0xe7, 0x26, 0x40, 0x94, 0x35, 0x88, 0x4e, 0x27, 0x79, + 0x94, 0x52, 0x31, 0x1b, 0x67, 0xf2, 0xaa, 0xe3, 0x66, 0x2e, 0x96, 0x8d, 0x27, 0x9b, 0xb9, 0x74, + 0x72, 0xa1, 0x6c, 0xe6, 0x32, 0xd2, 0xf8, 0xd4, 0x29, 0xf4, 0x1e, 0x54, 0xc2, 0xe4, 0x2f, 0x59, + 0x79, 0x92, 0x59, 0x6c, 0x8d, 0xd3, 0x39, 0xb5, 0x71, 0xee, 0x62, 0x39, 0x5d, 0x32, 0x77, 0xe9, + 0x7c, 0x31, 0x99, 0xbb, 0xac, 0x64, 0xb0, 0xa8, 0xbf, 0x2c, 0x8f, 0x20, 0xa3, 0xbf, 0x52, 0x5e, + 0x49, 0x46, 0x7f, 0xe5, 0x04, 0x04, 0x75, 0xea, 0xee, 0x9d, 0x1f, 0xfd, 0xf4, 0x8c, 0xf2, 0xe3, + 0x9f, 0x9e, 0x99, 0xfa, 0xbf, 0x1f, 0x9f, 0x51, 0x7e, 0xf4, 0xf1, 0x19, 0xe5, 0xef, 0x3e, 0x3e, + 0xa3, 0xfc, 0xe4, 0xe3, 0x33, 0xca, 0xb7, 0xff, 0xf9, 0xcc, 0xd4, 0x87, 0xea, 0xa3, 0x9b, 0xfe, + 0x15, 0xcb, 0xb9, 0xda, 0xf5, 0xac, 0xcb, 0x86, 0x6b, 0x5d, 0x75, 0x1f, 0xf5, 0xae, 0x1a, 0xae, + 0xe5, 0x5f, 0xe5, 0x74, 0xaf, 0x3e, 0x7e, 0xf9, 0xe1, 0x0c, 0xfd, 0xef, 0x71, 0xaf, 0xfc, 0x77, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x26, 0xce, 0xd5, 0x75, 0xf7, 0x6f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -12587,6 +12767,11 @@ func (m *LinuxSandboxSecurityContext) MarshalToSizedBuffer(dAtA []byte) (int, er _ = i var l int _ = l + if m.SupplementalGroupsPolicy != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.SupplementalGroupsPolicy)) + i-- + dAtA[i] = 0x58 + } if m.Apparmor != nil { { size, err := m.Apparmor.MarshalToSizedBuffer(dAtA[:i]) @@ -15027,6 +15212,13 @@ func (m *LinuxContainerSecurityContext) MarshalToSizedBuffer(dAtA []byte) (int, _ = i var l int _ = l + if m.SupplementalGroupsPolicy != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.SupplementalGroupsPolicy)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x88 + } if m.Apparmor != nil { { size, err := m.Apparmor.MarshalToSizedBuffer(dAtA[:i]) @@ -15251,6 +15443,58 @@ func (m *LinuxContainerConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *LinuxContainerUser) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *LinuxContainerUser) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *LinuxContainerUser) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.SupplementalGroups) > 0 { + dAtA65 := make([]byte, len(m.SupplementalGroups)*10) + var j64 int + for _, num1 := range m.SupplementalGroups { + num := uint64(num1) + for num >= 1<<7 { + dAtA65[j64] = uint8(uint64(num)&0x7f | 0x80) + num >>= 7 + j64++ + } + dAtA65[j64] = uint8(num) + j64++ + } + i -= j64 + copy(dAtA[i:], dAtA65[:j64]) + i = encodeVarintApi(dAtA, i, uint64(j64)) + i-- + dAtA[i] = 0x1a + } + if m.Gid != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.Gid)) + i-- + dAtA[i] = 0x10 + } + if m.Uid != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.Uid)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *WindowsNamespaceOption) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -16454,6 +16698,20 @@ func (m *ContainerStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.User != nil { + { + size, err := m.User.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x92 + } if len(m.ImageId) > 0 { i -= len(m.ImageId) copy(dAtA[i:], m.ImageId) @@ -16717,6 +16975,41 @@ func (m *ContainerResources) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *ContainerUser) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ContainerUser) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ContainerUser) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Linux != nil { + { + size, err := m.Linux.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *UpdateContainerResourcesRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -17129,21 +17422,21 @@ func (m *PortForwardRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { var l int _ = l if len(m.Port) > 0 { - dAtA87 := make([]byte, len(m.Port)*10) - var j86 int + dAtA91 := make([]byte, len(m.Port)*10) + var j90 int for _, num1 := range m.Port { num := uint64(num1) for num >= 1<<7 { - dAtA87[j86] = uint8(uint64(num)&0x7f | 0x80) + dAtA91[j90] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j86++ + j90++ } - dAtA87[j86] = uint8(num) - j86++ + dAtA91[j90] = uint8(num) + j90++ } - i -= j86 - copy(dAtA[i:], dAtA87[:j86]) - i = encodeVarintApi(dAtA, i, uint64(j86)) + i -= j90 + copy(dAtA[i:], dAtA91[:j90]) + i = encodeVarintApi(dAtA, i, uint64(j90)) i-- dAtA[i] = 0x12 } @@ -19994,6 +20287,9 @@ func (m *LinuxSandboxSecurityContext) Size() (n int) { l = m.Apparmor.Size() n += 1 + l + sovApi(uint64(l)) } + if m.SupplementalGroupsPolicy != 0 { + n += 1 + sovApi(uint64(m.SupplementalGroupsPolicy)) + } return n } @@ -21024,6 +21320,9 @@ func (m *LinuxContainerSecurityContext) Size() (n int) { l = m.Apparmor.Size() n += 2 + l + sovApi(uint64(l)) } + if m.SupplementalGroupsPolicy != 0 { + n += 2 + sovApi(uint64(m.SupplementalGroupsPolicy)) + } return n } @@ -21044,6 +21343,28 @@ func (m *LinuxContainerConfig) Size() (n int) { return n } +func (m *LinuxContainerUser) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Uid != 0 { + n += 1 + sovApi(uint64(m.Uid)) + } + if m.Gid != 0 { + n += 1 + sovApi(uint64(m.Gid)) + } + if len(m.SupplementalGroups) > 0 { + l = 0 + for _, e := range m.SupplementalGroups { + l += sovApi(uint64(e)) + } + n += 1 + sovApi(uint64(l)) + l + } + return n +} + func (m *WindowsNamespaceOption) Size() (n int) { if m == nil { return 0 @@ -21620,6 +21941,10 @@ func (m *ContainerStatus) Size() (n int) { if l > 0 { n += 2 + l + sovApi(uint64(l)) } + if m.User != nil { + l = m.User.Size() + n += 2 + l + sovApi(uint64(l)) + } return n } @@ -21661,6 +21986,19 @@ func (m *ContainerResources) Size() (n int) { return n } +func (m *ContainerUser) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Linux != nil { + l = m.Linux.Size() + n += 1 + l + sovApi(uint64(l)) + } + return n +} + func (m *UpdateContainerResourcesRequest) Size() (n int) { if m == nil { return 0 @@ -23034,6 +23372,7 @@ func (this *LinuxSandboxSecurityContext) String() string { `RunAsGroup:` + strings.Replace(this.RunAsGroup.String(), "Int64Value", "Int64Value", 1) + `,`, `Seccomp:` + strings.Replace(this.Seccomp.String(), "SecurityProfile", "SecurityProfile", 1) + `,`, `Apparmor:` + strings.Replace(this.Apparmor.String(), "SecurityProfile", "SecurityProfile", 1) + `,`, + `SupplementalGroupsPolicy:` + fmt.Sprintf("%v", this.SupplementalGroupsPolicy) + `,`, `}`, }, "") return s @@ -23762,6 +24101,7 @@ func (this *LinuxContainerSecurityContext) String() string { `ReadonlyPaths:` + fmt.Sprintf("%v", this.ReadonlyPaths) + `,`, `Seccomp:` + strings.Replace(this.Seccomp.String(), "SecurityProfile", "SecurityProfile", 1) + `,`, `Apparmor:` + strings.Replace(this.Apparmor.String(), "SecurityProfile", "SecurityProfile", 1) + `,`, + `SupplementalGroupsPolicy:` + fmt.Sprintf("%v", this.SupplementalGroupsPolicy) + `,`, `}`, }, "") return s @@ -23777,6 +24117,18 @@ func (this *LinuxContainerConfig) String() string { }, "") return s } +func (this *LinuxContainerUser) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&LinuxContainerUser{`, + `Uid:` + fmt.Sprintf("%v", this.Uid) + `,`, + `Gid:` + fmt.Sprintf("%v", this.Gid) + `,`, + `SupplementalGroups:` + fmt.Sprintf("%v", this.SupplementalGroups) + `,`, + `}`, + }, "") + return s +} func (this *WindowsNamespaceOption) String() string { if this == nil { return "nil" @@ -24181,6 +24533,7 @@ func (this *ContainerStatus) String() string { `LogPath:` + fmt.Sprintf("%v", this.LogPath) + `,`, `Resources:` + strings.Replace(this.Resources.String(), "ContainerResources", "ContainerResources", 1) + `,`, `ImageId:` + fmt.Sprintf("%v", this.ImageId) + `,`, + `User:` + strings.Replace(this.User.String(), "ContainerUser", "ContainerUser", 1) + `,`, `}`, }, "") return s @@ -24217,6 +24570,16 @@ func (this *ContainerResources) String() string { }, "") return s } +func (this *ContainerUser) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerUser{`, + `Linux:` + strings.Replace(this.Linux.String(), "LinuxContainerUser", "LinuxContainerUser", 1) + `,`, + `}`, + }, "") + return s +} func (this *UpdateContainerResourcesRequest) String() string { if this == nil { return "nil" @@ -26781,6 +27144,25 @@ func (m *LinuxSandboxSecurityContext) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 11: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroupsPolicy", wireType) + } + m.SupplementalGroupsPolicy = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.SupplementalGroupsPolicy |= SupplementalGroupsPolicy(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -34824,6 +35206,25 @@ func (m *LinuxContainerSecurityContext) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 17: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroupsPolicy", wireType) + } + m.SupplementalGroupsPolicy = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.SupplementalGroupsPolicy |= SupplementalGroupsPolicy(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -34967,6 +35368,170 @@ func (m *LinuxContainerConfig) Unmarshal(dAtA []byte) error { } return nil } +func (m *LinuxContainerUser) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: LinuxContainerUser: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: LinuxContainerUser: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Uid", wireType) + } + m.Uid = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Uid |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Gid", wireType) + } + m.Gid = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Gid |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType == 0 { + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.SupplementalGroups = append(m.SupplementalGroups, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + packedLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var elementCount int + var count int + for _, integer := range dAtA[iNdEx:postIndex] { + if integer < 128 { + count++ + } + } + elementCount = count + if elementCount != 0 && len(m.SupplementalGroups) == 0 { + m.SupplementalGroups = make([]int64, 0, elementCount) + } + for iNdEx < postIndex { + var v int64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.SupplementalGroups = append(m.SupplementalGroups, v) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field SupplementalGroups", wireType) + } + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *WindowsNamespaceOption) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -39317,6 +39882,42 @@ func (m *ContainerStatus) Unmarshal(dAtA []byte) error { } m.ImageId = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field User", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.User == nil { + m.User = &ContainerUser{} + } + if err := m.User.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -39673,6 +40274,92 @@ func (m *ContainerResources) Unmarshal(dAtA []byte) error { } return nil } +func (m *ContainerUser) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerUser: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerUser: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Linux", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Linux == nil { + m.Linux = &LinuxContainerUser{} + } + if err := m.Linux.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *UpdateContainerResourcesRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto b/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto index d707716cb..0eecb0bdb 100644 --- a/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto +++ b/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto @@ -321,6 +321,20 @@ message NamespaceOption { UserNamespace userns_options = 5; } +// SupplementalGroupsPolicy defines how supplemental groups +// of the first container processes are calculated. +enum SupplementalGroupsPolicy { + // Merge means that the container's provided SupplementalGroups + // and FsGroup (specified in SecurityContext) will be merged with + // the primary user's groups as defined in the container image + // (in /etc/group). + Merge = 0; + // Strict means that the container's provided SupplementalGroups + // and FsGroup (specified in SecurityContext) will be used instead of + // any groups defined in the container image. + Strict = 1; +} + // Int64Value is the wrapper of int64. message Int64Value { // The value. @@ -345,13 +359,14 @@ message LinuxSandboxSecurityContext { Int64Value run_as_group = 8; // If set, the root filesystem of the sandbox is read-only. bool readonly_rootfs = 4; - // List of groups applied to the first process run in the sandbox, in - // addition to the sandbox's primary GID, and group memberships defined - // in the container image for the sandbox's primary UID of the container process. - // If the list is empty, no additional groups are added to any container. - // Note that group memberships defined in the container image for the sandbox's primary UID - // of the container process are still effective, even if they are not included in this list. + // List of groups applied to the first process run in each container. + // supplemental_groups_policy can control how groups will be calculated. repeated int64 supplemental_groups = 5; + // supplemental_groups_policy defines how supplemental groups of the first + // container processes are calculated. + // Valid values are "Merge" and "Strict". + // If not specified, "Merge" is used. + SupplementalGroupsPolicy supplemental_groups_policy = 11; // Indicates whether the sandbox will be asked to run a privileged // container. If a privileged container is to be executed within it, this // MUST be true. @@ -905,13 +920,14 @@ message LinuxContainerSecurityContext { string run_as_username = 6; // If set, the root filesystem of the container is read-only. bool readonly_rootfs = 7; - // List of groups applied to the first process run in the container, in - // addition to the container's primary GID, and group memberships defined - // in the container image for the container's primary UID of the container process. - // If the list is empty, no additional groups are added to any container. - // Note that group memberships defined in the container image for the container's primary UID - // of the container process are still effective, even if they are not included in this list. + // List of groups applied to the first process run in each container. + // supplemental_groups_policy can control how groups will be calculated. repeated int64 supplemental_groups = 8; + // supplemental_groups_policy defines how supplemental groups of the first + // container processes are calculated. + // Valid values are "Merge" and "Strict". + // If not specified, "Merge" is used. + SupplementalGroupsPolicy supplemental_groups_policy = 17; // no_new_privs defines if the flag for no_new_privs should be set on the // container. bool no_new_privs = 11; @@ -950,6 +966,15 @@ message LinuxContainerConfig { LinuxContainerSecurityContext security_context = 2; } +message LinuxContainerUser { + // uid is the primary uid initially attached to the first process in the container + int64 uid = 1; + // gid is the primary gid initially attached to the first process in the container + int64 gid = 2; + // supplemental_groups are the supplemental groups initially attached to the first process in the container + repeated int64 supplemental_groups = 3; +} + // WindowsNamespaceOption provides options for Windows namespaces. message WindowsNamespaceOption { // Network namespace for this container/sandbox. @@ -1286,6 +1311,8 @@ message ContainerStatus { // misusage, we now introduce the image_id field, which should always refer // to a unique image identifier on the node. string image_id = 17; + // User identities initially attached to the container + ContainerUser user = 18; } message ContainerStatusResponse { @@ -1306,6 +1333,17 @@ message ContainerResources { WindowsContainerResources windows = 2; } +message ContainerUser { + // User identities initially attached to first process in the Linux container. + // Note that the actual running identity can be changed if the process has enough privilege to do so. + LinuxContainerUser linux = 1; + + // User identities initially attached to first process in the Windows container + // This is just reserved for future use. + // WindowsContainerUser windows = 2; +} + + message UpdateContainerResourcesRequest { // ID of the container to update. string container_id = 1; diff --git a/vendor/modules.txt b/vendor/modules.txt index ff2b4ed4b..b2856ff19 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -231,7 +231,7 @@ github.com/coreos/go-systemd/v22/dbus # github.com/cpuguy83/go-md2man/v2 v2.0.4 ## explicit; go 1.11 github.com/cpuguy83/go-md2man/v2/md2man -# github.com/davecgh/go-spew v1.1.1 +# github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc ## explicit github.com/davecgh/go-spew/spew # github.com/distribution/reference v0.6.0 @@ -412,7 +412,7 @@ github.com/pelletier/go-toml/v2/unstable # github.com/pkg/errors v0.9.1 ## explicit github.com/pkg/errors -# github.com/pmezard/go-difflib v1.0.0 +# github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 ## explicit github.com/pmezard/go-difflib/difflib # github.com/prometheus/client_golang v1.19.1 @@ -545,7 +545,7 @@ go.opentelemetry.io/proto/otlp/collector/trace/v1 go.opentelemetry.io/proto/otlp/common/v1 go.opentelemetry.io/proto/otlp/resource/v1 go.opentelemetry.io/proto/otlp/trace/v1 -# golang.org/x/crypto v0.22.0 +# golang.org/x/crypto v0.23.0 ## explicit; go 1.18 golang.org/x/crypto/cast5 golang.org/x/crypto/openpgp @@ -563,7 +563,7 @@ golang.org/x/exp/slices # golang.org/x/mod v0.17.0 ## explicit; go 1.18 golang.org/x/mod/semver -# golang.org/x/net v0.24.0 +# golang.org/x/net v0.25.0 ## explicit; go 1.18 golang.org/x/net/bpf golang.org/x/net/html @@ -595,10 +595,10 @@ golang.org/x/sys/windows/registry golang.org/x/sys/windows/svc golang.org/x/sys/windows/svc/debug golang.org/x/sys/windows/svc/mgr -# golang.org/x/term v0.19.0 +# golang.org/x/term v0.20.0 ## explicit; go 1.18 golang.org/x/term -# golang.org/x/text v0.14.0 +# golang.org/x/text v0.15.0 ## explicit; go 1.18 golang.org/x/text/secure/bidirule golang.org/x/text/transform @@ -812,7 +812,7 @@ k8s.io/client-go/util/workqueue # k8s.io/component-base v0.30.0 ## explicit; go 1.22.0 k8s.io/component-base/logs/logreduction -# k8s.io/cri-api v0.30.0 +# k8s.io/cri-api v0.31.0-alpha.0.0.20240529224029-3a66d9d86654 ## explicit; go 1.22.0 k8s.io/cri-api/pkg/apis/runtime/v1 k8s.io/cri-api/pkg/errors