Merge pull request #4485 from thaJeztah/update_engine

vendor: github.com/docker/docker 4b19b2f4babd (25.0-dev)
This commit is contained in:
Sebastiaan van Stijn 2023-08-08 17:29:41 +02:00 committed by GitHub
commit dc1359230f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
35 changed files with 756 additions and 612 deletions

View File

@ -96,5 +96,5 @@ func (c *searchContext) IsOfficial() string {
}
func (c *searchContext) IsAutomated() string {
return c.formatBool(c.s.IsAutomated)
return c.formatBool(c.s.IsAutomated) //nolint:staticcheck // ignore SA1019 (IsAutomated is deprecated).
}

View File

@ -37,10 +37,10 @@ func TestSearchContext(t *testing.T) {
s: registrytypes.SearchResult{IsOfficial: false},
}, "", ctx.IsOfficial},
{searchContext{
s: registrytypes.SearchResult{IsAutomated: true},
s: registrytypes.SearchResult{IsAutomated: true}, //nolint:staticcheck // ignore SA1019 (IsAutomated is deprecated).
}, "[OK]", ctx.IsAutomated},
{searchContext{
s: registrytypes.SearchResult{IsAutomated: false},
s: registrytypes.SearchResult{},
}, "", ctx.IsAutomated},
}
@ -146,8 +146,8 @@ result2 5
}
results := []registrytypes.SearchResult{
{Name: "result1", Description: "Official build", StarCount: 5000, IsOfficial: true, IsAutomated: false},
{Name: "result2", Description: "Not official", StarCount: 5, IsOfficial: false, IsAutomated: true},
{Name: "result1", Description: "Official build", StarCount: 5000, IsOfficial: true},
{Name: "result2", Description: "Not official", StarCount: 5, IsAutomated: true}, //nolint:staticcheck // ignore SA1019 (IsAutomated is deprecated).
}
for _, tc := range cases {
@ -168,8 +168,8 @@ result2 5
func TestSearchContextWriteJSON(t *testing.T) {
results := []registrytypes.SearchResult{
{Name: "result1", Description: "Official build", StarCount: 5000, IsOfficial: true, IsAutomated: false},
{Name: "result2", Description: "Not official", StarCount: 5, IsOfficial: false, IsAutomated: true},
{Name: "result1", Description: "Official build", StarCount: 5000, IsOfficial: true},
{Name: "result2", Description: "Not official", StarCount: 5, IsOfficial: false, IsAutomated: true}, //nolint:staticcheck // ignore SA1019 (IsAutomated is deprecated).
}
expectedJSONs := []map[string]interface{}{
{"Name": "result1", "Description": "Official build", "StarCount": "5000", "IsOfficial": "true", "IsAutomated": "false"},
@ -193,8 +193,8 @@ func TestSearchContextWriteJSON(t *testing.T) {
func TestSearchContextWriteJSONField(t *testing.T) {
results := []registrytypes.SearchResult{
{Name: "result1", Description: "Official build", StarCount: 5000, IsOfficial: true, IsAutomated: false},
{Name: "result2", Description: "Not official", StarCount: 5, IsOfficial: false, IsAutomated: true},
{Name: "result1", Description: "Official build", StarCount: 5000, IsOfficial: true},
{Name: "result2", Description: "Not official", StarCount: 5, IsOfficial: false, IsAutomated: true}, //nolint:staticcheck // ignore SA1019 (IsAutomated is deprecated).
}
out := bytes.NewBufferString("")
err := SearchWrite(formatter.Context{Format: "{{json .Name}}", Output: out}, results)

View File

@ -1 +1 @@
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["foo="],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"Warnings":null,"ServerErrors":["a server error occurred"],"ClientInfo":{"Debug":false,"Context":"","Plugins":[],"Warnings":null}}
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["foo="],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"CDISpecDirs":null,"Warnings":null,"ServerErrors":["a server error occurred"],"ClientInfo":{"Debug":false,"Context":"","Plugins":[],"Warnings":null}}

View File

@ -1 +1 @@
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"Warnings":["WARNING: No memory limit support","WARNING: No swap limit support","WARNING: No oom kill disable support","WARNING: No cpu cfs quota support","WARNING: No cpu cfs period support","WARNING: No cpu shares support","WARNING: No cpuset support","WARNING: IPv4 forwarding is disabled","WARNING: bridge-nf-call-iptables is disabled","WARNING: bridge-nf-call-ip6tables is disabled"],"ClientInfo":{"Debug":true,"Platform":{"Name":"Docker Engine - Community"},"Version":"24.0.0","Context":"default","Plugins":[],"Warnings":null}}
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"CDISpecDirs":null,"Warnings":["WARNING: No memory limit support","WARNING: No swap limit support","WARNING: No oom kill disable support","WARNING: No cpu cfs quota support","WARNING: No cpu cfs period support","WARNING: No cpu shares support","WARNING: No cpuset support","WARNING: IPv4 forwarding is disabled","WARNING: bridge-nf-call-iptables is disabled","WARNING: bridge-nf-call-ip6tables is disabled"],"ClientInfo":{"Debug":true,"Platform":{"Name":"Docker Engine - Community"},"Version":"24.0.0","Context":"default","Plugins":[],"Warnings":null}}

View File

@ -1 +1 @@
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":false,"SwapLimit":false,"CpuCfsPeriod":false,"CpuCfsQuota":false,"CPUShares":false,"CPUSet":false,"PidsLimit":false,"IPv4Forwarding":false,"BridgeNfIptables":false,"BridgeNfIp6tables":false,"Debug":true,"NFd":33,"OomKillDisable":false,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"Warnings":null,"ClientInfo":{"Debug":true,"Platform":{"Name":"Docker Engine - Community"},"Version":"24.0.0","Context":"default","Plugins":[],"Warnings":null}}
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":false,"SwapLimit":false,"CpuCfsPeriod":false,"CpuCfsQuota":false,"CPUShares":false,"CPUSet":false,"PidsLimit":false,"IPv4Forwarding":false,"BridgeNfIptables":false,"BridgeNfIp6tables":false,"Debug":true,"NFd":33,"OomKillDisable":false,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"CDISpecDirs":null,"Warnings":null,"ClientInfo":{"Debug":true,"Platform":{"Name":"Docker Engine - Community"},"Version":"24.0.0","Context":"default","Plugins":[],"Warnings":null}}

View File

@ -1 +1 @@
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"Warnings":null,"ClientInfo":{"Debug":true,"Platform":{"Name":"Docker Engine - Community"},"Version":"24.0.0","Context":"default","Plugins":[],"Warnings":null}}
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"CDISpecDirs":null,"Warnings":null,"ClientInfo":{"Debug":true,"Platform":{"Name":"Docker Engine - Community"},"Version":"24.0.0","Context":"default","Plugins":[],"Warnings":null}}

View File

@ -1 +1 @@
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"Warnings":null,"ClientInfo":{"Debug":false,"Context":"default","Plugins":[{"SchemaVersion":"0.1.0","Vendor":"ACME Corp","Version":"0.1.0","ShortDescription":"unit test is good","Name":"goodplugin","Path":"/path/to/docker-goodplugin"},{"SchemaVersion":"0.1.0","Vendor":"ACME Corp","ShortDescription":"this plugin has no version","Name":"unversionedplugin","Path":"/path/to/docker-unversionedplugin"},{"Name":"badplugin","Path":"/path/to/docker-badplugin","Err":"something wrong"}],"Warnings":null}}
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"","NodeAddr":"","LocalNodeState":"inactive","ControlAvailable":false,"Error":"","RemoteManagers":null},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"CDISpecDirs":null,"Warnings":null,"ClientInfo":{"Debug":false,"Context":"default","Plugins":[{"SchemaVersion":"0.1.0","Vendor":"ACME Corp","Version":"0.1.0","ShortDescription":"unit test is good","Name":"goodplugin","Path":"/path/to/docker-goodplugin"},{"SchemaVersion":"0.1.0","Vendor":"ACME Corp","ShortDescription":"this plugin has no version","Name":"unversionedplugin","Path":"/path/to/docker-unversionedplugin"},{"Name":"badplugin","Path":"/path/to/docker-badplugin","Err":"something wrong"}],"Warnings":null}}

View File

@ -1 +1 @@
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"qo2dfdig9mmxqkawulggepdih","NodeAddr":"165.227.107.89","LocalNodeState":"active","ControlAvailable":true,"Error":"","RemoteManagers":[{"NodeID":"qo2dfdig9mmxqkawulggepdih","Addr":"165.227.107.89:2377"}],"Nodes":1,"Managers":1,"Cluster":{"ID":"9vs5ygs0gguyyec4iqf2314c0","Version":{"Index":11},"CreatedAt":"2017-08-24T17:34:19.278062352Z","UpdatedAt":"2017-08-24T17:34:42.398815481Z","Spec":{"Name":"default","Labels":null,"Orchestration":{"TaskHistoryRetentionLimit":5},"Raft":{"SnapshotInterval":10000,"KeepOldSnapshots":0,"LogEntriesForSlowFollowers":500,"ElectionTick":3,"HeartbeatTick":1},"Dispatcher":{"HeartbeatPeriod":5000000000},"CAConfig":{"NodeCertExpiry":7776000000000000},"TaskDefaults":{},"EncryptionConfig":{"AutoLockManagers":true}},"TLSInfo":{"TrustRoot":"\n-----BEGIN CERTIFICATE-----\nMIIBajCCARCgAwIBAgIUaFCW5xsq8eyiJ+Pmcv3MCflMLnMwCgYIKoZIzj0EAwIw\nEzERMA8GA1UEAxMIc3dhcm0tY2EwHhcNMTcwODI0MTcyOTAwWhcNMzcwODE5MTcy\nOTAwWjATMREwDwYDVQQDEwhzd2FybS1jYTBZMBMGByqGSM49AgEGCCqGSM49AwEH\nA0IABDy7NebyUJyUjWJDBUdnZoV6GBxEGKO4TZPNDwnxDxJcUdLVaB7WGa4/DLrW\nUfsVgh1JGik2VTiLuTMA1tLlNPOjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB\nAf8EBTADAQH/MB0GA1UdDgQWBBQl16XFtaaXiUAwEuJptJlDjfKskDAKBggqhkjO\nPQQDAgNIADBFAiEAo9fTQNM5DP9bHVcTJYfl2Cay1bFu1E+lnpmN+EYJfeACIGKH\n1pCUkZ+D0IB6CiEZGWSHyLuXPM1rlP+I5KuS7sB8\n-----END CERTIFICATE-----\n","CertIssuerSubject":"MBMxETAPBgNVBAMTCHN3YXJtLWNh","CertIssuerPublicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPLs15vJQnJSNYkMFR2dmhXoYHEQYo7hNk80PCfEPElxR0tVoHtYZrj8MutZR+xWCHUkaKTZVOIu5MwDW0uU08w=="},"RootRotationInProgress":false,"DefaultAddrPool":null,"SubnetSize":0,"DataPathPort":0}},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"Warnings":null,"ClientInfo":{"Debug":false,"Context":"default","Plugins":[],"Warnings":null}}
{"ID":"EKHL:QDUU:QZ7U:MKGD:VDXK:S27Q:GIPU:24B7:R7VT:DGN6:QCSF:2UBX","Containers":0,"ContainersRunning":0,"ContainersPaused":0,"ContainersStopped":0,"Images":0,"Driver":"overlay2","DriverStatus":[["Backing Filesystem","extfs"],["Supports d_type","true"],["Using metacopy","false"],["Native Overlay Diff","true"]],"Plugins":{"Volume":["local"],"Network":["bridge","host","macvlan","null","overlay"],"Authorization":null,"Log":["awslogs","fluentd","gcplogs","gelf","journald","json-file","logentries","splunk","syslog"]},"MemoryLimit":true,"SwapLimit":true,"KernelMemory":true,"CpuCfsPeriod":true,"CpuCfsQuota":true,"CPUShares":true,"CPUSet":true,"PidsLimit":false,"IPv4Forwarding":true,"BridgeNfIptables":true,"BridgeNfIp6tables":true,"Debug":true,"NFd":33,"OomKillDisable":true,"NGoroutines":135,"SystemTime":"2017-08-24T17:44:34.077811894Z","LoggingDriver":"json-file","CgroupDriver":"cgroupfs","NEventsListener":0,"KernelVersion":"4.4.0-87-generic","OperatingSystem":"Ubuntu 16.04.3 LTS","OSVersion":"","OSType":"linux","Architecture":"x86_64","IndexServerAddress":"https://index.docker.io/v1/","RegistryConfig":{"AllowNondistributableArtifactsCIDRs":null,"AllowNondistributableArtifactsHostnames":null,"InsecureRegistryCIDRs":["127.0.0.0/8"],"IndexConfigs":{"docker.io":{"Name":"docker.io","Mirrors":null,"Secure":true,"Official":true}},"Mirrors":null},"NCPU":2,"MemTotal":2097356800,"GenericResources":null,"DockerRootDir":"/var/lib/docker","HttpProxy":"","HttpsProxy":"","NoProxy":"","Name":"system-sample","Labels":["provider=digitalocean"],"ExperimentalBuild":false,"ServerVersion":"17.06.1-ce","Runtimes":{"runc":{"path":"docker-runc"}},"DefaultRuntime":"runc","Swarm":{"NodeID":"qo2dfdig9mmxqkawulggepdih","NodeAddr":"165.227.107.89","LocalNodeState":"active","ControlAvailable":true,"Error":"","RemoteManagers":[{"NodeID":"qo2dfdig9mmxqkawulggepdih","Addr":"165.227.107.89:2377"}],"Nodes":1,"Managers":1,"Cluster":{"ID":"9vs5ygs0gguyyec4iqf2314c0","Version":{"Index":11},"CreatedAt":"2017-08-24T17:34:19.278062352Z","UpdatedAt":"2017-08-24T17:34:42.398815481Z","Spec":{"Name":"default","Labels":null,"Orchestration":{"TaskHistoryRetentionLimit":5},"Raft":{"SnapshotInterval":10000,"KeepOldSnapshots":0,"LogEntriesForSlowFollowers":500,"ElectionTick":3,"HeartbeatTick":1},"Dispatcher":{"HeartbeatPeriod":5000000000},"CAConfig":{"NodeCertExpiry":7776000000000000},"TaskDefaults":{},"EncryptionConfig":{"AutoLockManagers":true}},"TLSInfo":{"TrustRoot":"\n-----BEGIN CERTIFICATE-----\nMIIBajCCARCgAwIBAgIUaFCW5xsq8eyiJ+Pmcv3MCflMLnMwCgYIKoZIzj0EAwIw\nEzERMA8GA1UEAxMIc3dhcm0tY2EwHhcNMTcwODI0MTcyOTAwWhcNMzcwODE5MTcy\nOTAwWjATMREwDwYDVQQDEwhzd2FybS1jYTBZMBMGByqGSM49AgEGCCqGSM49AwEH\nA0IABDy7NebyUJyUjWJDBUdnZoV6GBxEGKO4TZPNDwnxDxJcUdLVaB7WGa4/DLrW\nUfsVgh1JGik2VTiLuTMA1tLlNPOjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB\nAf8EBTADAQH/MB0GA1UdDgQWBBQl16XFtaaXiUAwEuJptJlDjfKskDAKBggqhkjO\nPQQDAgNIADBFAiEAo9fTQNM5DP9bHVcTJYfl2Cay1bFu1E+lnpmN+EYJfeACIGKH\n1pCUkZ+D0IB6CiEZGWSHyLuXPM1rlP+I5KuS7sB8\n-----END CERTIFICATE-----\n","CertIssuerSubject":"MBMxETAPBgNVBAMTCHN3YXJtLWNh","CertIssuerPublicKey":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEPLs15vJQnJSNYkMFR2dmhXoYHEQYo7hNk80PCfEPElxR0tVoHtYZrj8MutZR+xWCHUkaKTZVOIu5MwDW0uU08w=="},"RootRotationInProgress":false,"DefaultAddrPool":null,"SubnetSize":0,"DataPathPort":0}},"LiveRestoreEnabled":false,"Isolation":"","InitBinary":"docker-init","ContainerdCommit":{"ID":"6e23458c129b551d5c9871e5174f6b1b7f6d1170","Expected":"6e23458c129b551d5c9871e5174f6b1b7f6d1170"},"RuncCommit":{"ID":"810190ceaa507aa2727d7ae6f4790c76ec150bd2","Expected":"810190ceaa507aa2727d7ae6f4790c76ec150bd2"},"InitCommit":{"ID":"949e6fa","Expected":"949e6fa"},"SecurityOptions":["name=apparmor","name=seccomp,profile=default"],"DefaultAddressPools":[{"Base":"10.123.0.0/16","Size":24}],"CDISpecDirs":null,"Warnings":null,"ClientInfo":{"Debug":false,"Context":"default","Plugins":[],"Warnings":null}}

View File

@ -12,7 +12,7 @@ require (
github.com/containerd/containerd v1.6.22
github.com/creack/pty v1.1.18
github.com/docker/distribution v2.8.2+incompatible
github.com/docker/docker v24.0.0-rc.2.0.20230714195812-dab9ffb25218+incompatible // master (v25.0.0-dev)
github.com/docker/docker v24.0.0-rc.2.0.20230807181406-4b19b2f4babd+incompatible // master (v25.0.0-dev)
github.com/docker/docker-credential-helpers v0.8.0
github.com/docker/go-connections v0.4.0
github.com/docker/go-units v0.5.0
@ -24,13 +24,13 @@ require (
github.com/mitchellh/mapstructure v1.3.2
github.com/moby/buildkit v0.11.6
github.com/moby/patternmatcher v0.5.0
github.com/moby/swarmkit/v2 v2.0.0-20230707182847-6f78b8199b05
github.com/moby/swarmkit/v2 v2.0.0-20230713153928-bc71908479e5
github.com/moby/sys/sequential v0.5.0
github.com/moby/sys/signal v0.7.0
github.com/moby/term v0.5.0
github.com/morikuni/aec v1.0.0
github.com/opencontainers/go-digest v1.0.0
github.com/opencontainers/image-spec v1.1.0-rc3
github.com/opencontainers/image-spec v1.1.0-rc4
github.com/pkg/errors v0.9.1
github.com/sirupsen/logrus v1.9.3
github.com/spf13/cobra v1.7.0

View File

@ -50,8 +50,8 @@ github.com/denisenkom/go-mssqldb v0.0.0-20191128021309-1d7a30a10f73/go.mod h1:xb
github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8=
github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/docker v24.0.0-rc.2.0.20230714195812-dab9ffb25218+incompatible h1:lQ7FvH3oFGtG/ODOr0oAlRHQxJJkkbG+RyNHmiMWdI8=
github.com/docker/docker v24.0.0-rc.2.0.20230714195812-dab9ffb25218+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker v24.0.0-rc.2.0.20230807181406-4b19b2f4babd+incompatible h1:jpw4copYljr4wqeQ6nSzvBNe83BqmStvHsvZdnlnEo0=
github.com/docker/docker v24.0.0-rc.2.0.20230807181406-4b19b2f4babd+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
github.com/docker/docker-credential-helpers v0.8.0 h1:YQFtbBQb4VrpoPxhFuzEBPQ9E16qz5SpHLS+uswaCp8=
github.com/docker/docker-credential-helpers v0.8.0/go.mod h1:UGFXcuoQ5TxPiB54nHOZ32AWRqQdECoh/Mg0AlEYb40=
github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c h1:lzqkGL9b3znc+ZUgi7FlLnqjQhcXxkNM/quxIjBVMD0=
@ -156,8 +156,8 @@ github.com/moby/buildkit v0.11.6 h1:VYNdoKk5TVxN7k4RvZgdeM4GOyRvIi4Z8MXOY7xvyUs=
github.com/moby/buildkit v0.11.6/go.mod h1:GCqKfHhz+pddzfgaR7WmHVEE3nKKZMMDPpK8mh3ZLv4=
github.com/moby/patternmatcher v0.5.0 h1:YCZgJOeULcxLw1Q+sVR636pmS7sPEn1Qo2iAN6M7DBo=
github.com/moby/patternmatcher v0.5.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc=
github.com/moby/swarmkit/v2 v2.0.0-20230707182847-6f78b8199b05 h1:lvMq6zHXnGp6i+6iYDs1Uw9Q5bqiAYd6Sz08hZoxSmY=
github.com/moby/swarmkit/v2 v2.0.0-20230707182847-6f78b8199b05/go.mod h1:XUMlwIIC+wrwBDMUjxEvk5Z8FPoIPM8LdBw7w/Zu1rg=
github.com/moby/swarmkit/v2 v2.0.0-20230713153928-bc71908479e5 h1:o6x+wIX1vKD0kJlEqe8M9TLIe0SK8lnGcA6XoJtaFqg=
github.com/moby/swarmkit/v2 v2.0.0-20230713153928-bc71908479e5/go.mod h1:XUMlwIIC+wrwBDMUjxEvk5Z8FPoIPM8LdBw7w/Zu1rg=
github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc=
github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo=
github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI=
@ -181,8 +181,8 @@ github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoT
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
github.com/opencontainers/image-spec v1.1.0-rc3 h1:fzg1mXZFj8YdPeNkRXMg+zb88BFV0Ys52cJydRwBkb8=
github.com/opencontainers/image-spec v1.1.0-rc3/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
github.com/opencontainers/image-spec v1.1.0-rc4 h1:oOxKUJWnFC4YGHCCMNql1x4YaDfYBTS5Y4x/Cgeo1E0=
github.com/opencontainers/image-spec v1.1.0-rc4/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
github.com/opencontainers/runc v1.1.7 h1:y2EZDS8sNng4Ksf0GUYNhKbTShZJPJg1FiXJNH/uoCk=
github.com/opencontainers/runc v1.1.7/go.mod h1:CbUumNnWCuTGFukNXahoo/RFBZvDAgRh/smNYNOhA50=
github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU=

View File

@ -1147,6 +1147,7 @@ junxu <xujun@cmss.chinamobile.com>
Jussi Nummelin <jussi.nummelin@gmail.com>
Justas Brazauskas <brazauskasjustas@gmail.com>
Justen Martin <jmart@the-coder.com>
Justin Chadwell <me@jedevc.com>
Justin Cormack <justin.cormack@docker.com>
Justin Force <justin.force@gmail.com>
Justin Keller <85903732+jk-vb@users.noreply.github.com>
@ -1198,7 +1199,7 @@ Kenjiro Nakayama <nakayamakenjiro@gmail.com>
Kent Johnson <kentoj@gmail.com>
Kenta Tada <Kenta.Tada@sony.com>
Kevin "qwazerty" Houdebert <kevin.houdebert@gmail.com>
Kevin Alvarez <crazy-max@users.noreply.github.com>
Kevin Alvarez <github@crazymax.dev>
Kevin Burke <kev@inburke.com>
Kevin Clark <kevin.clark@gmail.com>
Kevin Feyrer <kevin.feyrer@btinternet.com>
@ -1519,7 +1520,7 @@ Mike Snitzer <snitzer@redhat.com>
mikelinjie <294893458@qq.com>
Mikhail Sobolev <mss@mawhrin.net>
Miklos Szegedi <miklos.szegedi@cloudera.com>
Milas Bowman <milasb@gmail.com>
Milas Bowman <devnull@milas.dev>
Milind Chawre <milindchawre@gmail.com>
Miloslav Trmač <mitr@redhat.com>
mingqing <limingqing@cyou-inc.com>
@ -1712,6 +1713,7 @@ Phil Estes <estesp@gmail.com>
Phil Sphicas <phil.sphicas@att.com>
Phil Spitler <pspitler@gmail.com>
Philip Alexander Etling <paetling@gmail.com>
Philip K. Warren <pkwarren@gmail.com>
Philip Monroe <phil@philmonroe.com>
Philipp Gillé <philipp.gille@gmail.com>
Philipp Wahala <philipp.wahala@gmail.com>

View File

@ -5301,7 +5301,25 @@ definitions:
- "WARNING: No memory limit support"
- "WARNING: bridge-nf-call-iptables is disabled"
- "WARNING: bridge-nf-call-ip6tables is disabled"
CDISpecDirs:
description: |
List of directories where (Container Device Interface) CDI
specifications are located.
These specifications define vendor-specific modifications to an OCI
runtime specification for a container being created.
An empty list indicates that CDI device injection is disabled.
Note that since using CDI device injection requires the daemon to have
experimental enabled. For non-experimental daemons an empty list will
always be returned.
type: "array"
items:
type: "string"
example:
- "/etc/cdi"
- "/var/run/cdi"
# PluginsInfo is a temp struct holding Plugins name
# registered with docker daemon. It is used by Info struct
@ -8601,28 +8619,36 @@ paths:
is_official:
type: "boolean"
is_automated:
description: |
Whether this repository has automated builds enabled.
<p><br /></p>
> **Deprecated**: This field is deprecated and will always
> be "false" in future.
type: "boolean"
example: false
name:
type: "string"
star_count:
type: "integer"
examples:
application/json:
- description: ""
is_official: false
- description: "A minimal Docker image based on Alpine Linux with a complete package index and only 5 MB in size!"
is_official: true
is_automated: false
name: "wma55/u1210sshd"
star_count: 0
- description: ""
is_official: false
name: "alpine"
star_count: 10093
- description: "Busybox base image."
is_official: true
is_automated: false
name: "jdswinbank/sshd"
star_count: 0
- description: ""
is_official: false
name: "Busybox base image."
star_count: 3037
- description: "The PostgreSQL object-relational database system provides reliability and data integrity."
is_official: true
is_automated: false
name: "vgauthier/sshd"
star_count: 0
name: "postgres"
star_count: 12408
500:
description: "Server error"
schema:
@ -8642,9 +8668,13 @@ paths:
description: |
A JSON encoded value of the filters (a `map[string][]string`) to process on the images list. Available filters:
- `is-automated=(true|false)`
- `is-automated=(true|false)` (deprecated, see below)
- `is-official=(true|false)`
- `stars=<number>` Matches images that has at least 'number' stars.
The `is-automated` filter is deprecated. The `is_automated` field has
been deprecated by Docker Hub's search API. Consequently, searching
for `is-automated=true` will yield no results.
type: "string"
tags: ["Image"]
/images/prune:

View File

@ -98,7 +98,7 @@ func FromJSON(p string) (Args, error) {
// Fallback to parsing arguments in the legacy slice format
deprecated := map[string][]string{}
if legacyErr := json.Unmarshal(raw, &deprecated); legacyErr != nil {
return args, invalidFilter{}
return args, &invalidFilter{}
}
args.fields = deprecatedArgs(deprecated)
@ -206,7 +206,7 @@ func (args Args) GetBoolOrDefault(key string, defaultValue bool) (bool, error) {
}
if len(fieldValues) == 0 {
return defaultValue, invalidFilter{key, nil}
return defaultValue, &invalidFilter{key, nil}
}
isFalse := fieldValues["0"] || fieldValues["false"]
@ -216,7 +216,7 @@ func (args Args) GetBoolOrDefault(key string, defaultValue bool) (bool, error) {
invalid := !isFalse && !isTrue
if conflicting || invalid {
return defaultValue, invalidFilter{key, args.Get(key)}
return defaultValue, &invalidFilter{key, args.Get(key)}
} else if isFalse {
return false, nil
} else if isTrue {
@ -224,7 +224,7 @@ func (args Args) GetBoolOrDefault(key string, defaultValue bool) (bool, error) {
}
// This code shouldn't be reached.
return defaultValue, unreachableCode{Filter: key, Value: args.Get(key)}
return defaultValue, &unreachableCode{Filter: key, Value: args.Get(key)}
}
// ExactMatch returns true if the source matches exactly one of the values.
@ -282,7 +282,7 @@ func (args Args) Contains(field string) bool {
func (args Args) Validate(accepted map[string]bool) error {
for name := range args.fields {
if !accepted[name] {
return invalidFilter{name, nil}
return &invalidFilter{name, nil}
}
}
return nil

View File

@ -92,7 +92,9 @@ type SearchResult struct {
IsOfficial bool `json:"is_official"`
// Name is the name of the repository
Name string `json:"name"`
// IsAutomated indicates whether the result is automated
// IsAutomated indicates whether the result is automated.
//
// Deprecated: the "is_automated" field is deprecated and will always be "false" in the future.
IsAutomated bool `json:"is_automated"`
// Description is a textual description of the repository
Description string `json:"description"`

View File

@ -73,6 +73,7 @@ type Info struct {
SecurityOptions []string
ProductLicense string `json:",omitempty"`
DefaultAddressPools []NetworkAddressPool `json:",omitempty"`
CDISpecDirs []string
// Legacy API fields for older API versions.
legacyFields

View File

@ -43,11 +43,13 @@ package client // import "github.com/docker/docker/client"
import (
"context"
"crypto/tls"
"net"
"net/http"
"net/url"
"path"
"strings"
"time"
"github.com/docker/docker/api"
"github.com/docker/docker/api/types"
@ -86,9 +88,6 @@ import (
// [Go stdlib]: https://github.com/golang/go/blob/6244b1946bc2101b01955468f1be502dbadd6807/src/net/http/transport.go#L558-L569
const DummyHost = "api.moby.localhost"
// ErrRedirect is the error returned by checkRedirect when the request is non-GET.
var ErrRedirect = errors.New("unexpected redirect in response")
// Client is the API client that performs all operations
// against a docker server.
type Client struct {
@ -111,7 +110,7 @@ type Client struct {
// header variables. When set to an empty string, the User-Agent header
// is removed, and no header is sent.
userAgent *string
// custom http headers configured by users.
// custom HTTP headers configured by users.
customHTTPHeaders map[string]string
// manualOverride is set to true when the version was set by users.
manualOverride bool
@ -126,20 +125,25 @@ type Client struct {
negotiated bool
}
// CheckRedirect specifies the policy for dealing with redirect responses:
// If the request is non-GET return ErrRedirect, otherwise use the last response.
// ErrRedirect is the error returned by checkRedirect when the request is non-GET.
var ErrRedirect = errors.New("unexpected redirect in response")
// CheckRedirect specifies the policy for dealing with redirect responses. It
// can be set on [http.Client.CheckRedirect] to prevent HTTP redirects for
// non-GET requests. It returns an [ErrRedirect] for non-GET request, otherwise
// returns a [http.ErrUseLastResponse], which is special-cased by http.Client
// to use the last response.
//
// Go 1.8 changes behavior for HTTP redirects (specifically 301, 307, and 308)
// in the client. The Docker client (and by extension docker API client) can be
// made to send a request like POST /containers//start where what would normally
// be in the name section of the URL is empty. This triggers an HTTP 301 from
// the daemon.
// Go 1.8 changed behavior for HTTP redirects (specifically 301, 307, and 308)
// in the client. The client (and by extension API client) can be made to send
// a request like "POST /containers//start" where what would normally be in the
// name section of the URL is empty. This triggers an HTTP 301 from the daemon.
//
// In go 1.8 this 301 will be converted to a GET request, and ends up getting
// In go 1.8 this 301 is converted to a GET request, and ends up getting
// a 404 from the daemon. This behavior change manifests in the client in that
// before, the 301 was not followed and the client did not generate an error,
// but now results in a message like Error response from daemon: page not found.
func CheckRedirect(req *http.Request, via []*http.Request) error {
// but now results in a message like "Error response from daemon: page not found".
func CheckRedirect(_ *http.Request, via []*http.Request) error {
if via[0].Method == http.MethodGet {
return http.ErrUseLastResponse
}
@ -150,11 +154,11 @@ func CheckRedirect(req *http.Request, via []*http.Request) error {
// default API host and version. It also initializes the custom HTTP headers to
// add to each request.
//
// It takes an optional list of Opt functional arguments, which are applied in
// It takes an optional list of [Opt] functional arguments, which are applied in
// the order they're provided, which allows modifying the defaults when creating
// the client. For example, the following initializes a client that configures
// itself with values from environment variables (client.FromEnv), and has
// automatic API version negotiation enabled (client.WithAPIVersionNegotiation()).
// itself with values from environment variables ([FromEnv]), and has automatic
// API version negotiation enabled ([WithAPIVersionNegotiation]).
//
// cli, err := client.NewClientWithOpts(
// client.FromEnv,
@ -185,16 +189,15 @@ func NewClientWithOpts(ops ...Opt) (*Client, error) {
}
if c.scheme == "" {
c.scheme = "http"
tlsConfig := resolveTLSConfig(c.client.Transport)
if tlsConfig != nil {
// TODO(stevvooe): This isn't really the right way to write clients in Go.
// `NewClient` should probably only take an `*http.Client` and work from there.
// Unfortunately, the model of having a host-ish/url-thingy as the connection
// string has us confusing protocol and transport layers. We continue doing
// this to avoid breaking existing clients but this should be addressed.
// TODO(stevvooe): This isn't really the right way to write clients in Go.
// `NewClient` should probably only take an `*http.Client` and work from there.
// Unfortunately, the model of having a host-ish/url-thingy as the connection
// string has us confusing protocol and transport layers. We continue doing
// this to avoid breaking existing clients but this should be addressed.
if c.tlsConfig() != nil {
c.scheme = "https"
} else {
c.scheme = "http"
}
}
@ -213,6 +216,16 @@ func defaultHTTPClient(hostURL *url.URL) (*http.Client, error) {
}, nil
}
// tlsConfig returns the TLS configuration from the client's transport.
// It returns nil if the transport is not a [http.Transport], or if no
// TLSClientConfig is set.
func (cli *Client) tlsConfig() *tls.Config {
if tr, ok := cli.client.Transport.(*http.Transport); ok {
return tr.TLSClientConfig
}
return nil
}
// Close the transport used by the client
func (cli *Client) Close() error {
if t, ok := cli.client.Transport.(*http.Transport); ok {
@ -221,7 +234,7 @@ func (cli *Client) Close() error {
return nil
}
// getAPIPath returns the versioned request path to call the api.
// getAPIPath returns the versioned request path to call the API.
// It appends the query parameters to the path if they are not empty.
func (cli *Client) getAPIPath(ctx context.Context, p string, query url.Values) string {
var apiPath string
@ -249,8 +262,8 @@ func (cli *Client) ClientVersion() string {
// by the client, it uses the client's maximum version.
//
// If a manual override is in place, either through the "DOCKER_API_VERSION"
// (EnvOverrideAPIVersion) environment variable, or if the client is initialized
// with a fixed version (WithVersion(xx)), no negotiation is performed.
// ([EnvOverrideAPIVersion]) environment variable, or if the client is initialized
// with a fixed version ([WithVersion]), no negotiation is performed.
//
// If the API server's ping response does not contain an API version, or if the
// client did not get a successful ping response, it assumes it is connected with
@ -270,8 +283,8 @@ func (cli *Client) NegotiateAPIVersion(ctx context.Context) {
// version.
//
// If a manual override is in place, either through the "DOCKER_API_VERSION"
// (EnvOverrideAPIVersion) environment variable, or if the client is initialized
// with a fixed version (WithVersion(xx)), no negotiation is performed.
// ([EnvOverrideAPIVersion]) environment variable, or if the client is initialized
// with a fixed version ([WithVersion]), no negotiation is performed.
//
// If the API server's ping response does not contain an API version, we assume
// we are connected with an old daemon without API version negotiation support,
@ -344,9 +357,10 @@ func ParseHostURL(host string) (*url.URL, error) {
}
// Dialer returns a dialer for a raw stream connection, with an HTTP/1.1 header,
// that can be used for proxying the daemon connection.
// that can be used for proxying the daemon connection. It is used by
// ["docker dial-stdio"].
//
// Used by `docker dial-stdio` (docker/cli#889).
// ["docker dial-stdio"]: https://github.com/docker/cli/pull/1014
func (cli *Client) Dialer() func(context.Context) (net.Conn, error) {
return func(ctx context.Context) (net.Conn, error) {
if transport, ok := cli.client.Transport.(*http.Transport); ok {
@ -354,6 +368,16 @@ func (cli *Client) Dialer() func(context.Context) (net.Conn, error) {
return transport.DialContext(ctx, cli.proto, cli.addr)
}
}
return fallbackDial(cli.proto, cli.addr, resolveTLSConfig(cli.client.Transport))
switch cli.proto {
case "unix":
return net.Dial(cli.proto, cli.addr)
case "npipe":
return sockets.DialPipe(cli.addr, 32*time.Second)
default:
if tlsConfig := cli.tlsConfig(); tlsConfig != nil {
return tls.Dial(cli.proto, cli.addr, tlsConfig)
}
return net.Dial(cli.proto, cli.addr)
}
}
}

View File

@ -21,8 +21,10 @@ func (cli *Client) ContainerStats(ctx context.Context, containerID string, strea
return types.ContainerStats{}, err
}
osType := getDockerOS(resp.header.Get("Server"))
return types.ContainerStats{Body: resp.body, OSType: osType}, err
return types.ContainerStats{
Body: resp.body,
OSType: getDockerOS(resp.header.Get("Server")),
}, nil
}
// ContainerStatsOneShot gets a single stat entry from a container.
@ -37,6 +39,8 @@ func (cli *Client) ContainerStatsOneShot(ctx context.Context, containerID string
return types.ContainerStats{}, err
}
osType := getDockerOS(resp.header.Get("Server"))
return types.ContainerStats{Body: resp.body, OSType: osType}, err
return types.ContainerStats{
Body: resp.body,
OSType: getDockerOS(resp.header.Get("Server")),
}, nil
}

View File

@ -3,7 +3,6 @@ package client // import "github.com/docker/docker/client"
import (
"bufio"
"context"
"crypto/tls"
"fmt"
"net"
"net/http"
@ -13,7 +12,6 @@ import (
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/versions"
"github.com/docker/go-connections/sockets"
"github.com/pkg/errors"
)
@ -23,14 +21,10 @@ func (cli *Client) postHijacked(ctx context.Context, path string, query url.Valu
if err != nil {
return types.HijackedResponse{}, err
}
apiPath := cli.getAPIPath(ctx, path, query)
req, err := http.NewRequest(http.MethodPost, apiPath, bodyEncoded)
req, err := cli.buildRequest(http.MethodPost, cli.getAPIPath(ctx, path, query), bodyEncoded, headers)
if err != nil {
return types.HijackedResponse{}, err
}
req = cli.addHeaders(req, headers)
conn, mediaType, err := cli.setupHijackConn(ctx, req, "tcp")
if err != nil {
return types.HijackedResponse{}, err
@ -51,24 +45,7 @@ func (cli *Client) DialHijack(ctx context.Context, url, proto string, meta map[s
return conn, err
}
// fallbackDial is used when WithDialer() was not called.
// See cli.Dialer().
func fallbackDial(proto, addr string, tlsConfig *tls.Config) (net.Conn, error) {
if tlsConfig != nil && proto != "unix" && proto != "npipe" {
return tls.Dial(proto, addr, tlsConfig)
}
if proto == "npipe" {
return sockets.DialPipe(addr, 32*time.Second)
}
return net.Dial(proto, addr)
}
func (cli *Client) setupHijackConn(ctx context.Context, req *http.Request, proto string) (net.Conn, string, error) {
req.URL.Host = cli.addr
if cli.proto == "unix" || cli.proto == "npipe" {
// Override host header for non-tcp connections.
req.Host = DummyHost
}
req.Header.Set("Connection", "Upgrade")
req.Header.Set("Upgrade", proto)
@ -84,8 +61,8 @@ func (cli *Client) setupHijackConn(ctx context.Context, req *http.Request, proto
// state. Setting TCP KeepAlive on the socket connection will prohibit
// ECONNTIMEOUT unless the socket connection truly is broken
if tcpConn, ok := conn.(*net.TCPConn); ok {
tcpConn.SetKeepAlive(true)
tcpConn.SetKeepAlivePeriod(30 * time.Second)
_ = tcpConn.SetKeepAlive(true)
_ = tcpConn.SetKeepAlivePeriod(30 * time.Second)
}
clientconn := httputil.NewClientConn(conn, nil)
@ -100,7 +77,7 @@ func (cli *Client) setupHijackConn(ctx context.Context, req *http.Request, proto
return nil, "", err
}
if resp.StatusCode != http.StatusSwitchingProtocols {
resp.Body.Close()
_ = resp.Body.Close()
return nil, "", fmt.Errorf("unable to upgrade to %s, received %d", proto, resp.StatusCode)
}
}

View File

@ -13,23 +13,22 @@ import (
"github.com/pkg/errors"
)
// Opt is a configuration option to initialize a client
// Opt is a configuration option to initialize a [Client].
type Opt func(*Client) error
// FromEnv configures the client with values from environment variables.
// FromEnv configures the client with values from environment variables. It
// is the equivalent of using the [WithTLSClientConfigFromEnv], [WithHostFromEnv],
// and [WithVersionFromEnv] options.
//
// FromEnv uses the following environment variables:
//
// DOCKER_HOST (EnvOverrideHost) to set the URL to the docker server.
//
// DOCKER_API_VERSION (EnvOverrideAPIVersion) to set the version of the API to
// use, leave empty for latest.
//
// DOCKER_CERT_PATH (EnvOverrideCertPath) to specify the directory from which to
// load the TLS certificates (ca.pem, cert.pem, key.pem).
//
// DOCKER_TLS_VERIFY (EnvTLSVerify) to enable or disable TLS verification (off by
// default).
// - DOCKER_HOST ([EnvOverrideHost]) to set the URL to the docker server.
// - DOCKER_API_VERSION ([EnvOverrideAPIVersion]) to set the version of the
// API to use, leave empty for latest.
// - DOCKER_CERT_PATH ([EnvOverrideCertPath]) to specify the directory from
// which to load the TLS certificates ("ca.pem", "cert.pem", "key.pem').
// - DOCKER_TLS_VERIFY ([EnvTLSVerify]) to enable or disable TLS verification
// (off by default).
func FromEnv(c *Client) error {
ops := []Opt{
WithTLSClientConfigFromEnv(),
@ -45,7 +44,8 @@ func FromEnv(c *Client) error {
}
// WithDialContext applies the dialer to the client transport. This can be
// used to set the Timeout and KeepAlive settings of the client.
// used to set the Timeout and KeepAlive settings of the client. It returns
// an error if the client does not have a [http.Transport] configured.
func WithDialContext(dialContext func(ctx context.Context, network, addr string) (net.Conn, error)) Opt {
return func(c *Client) error {
if transport, ok := c.client.Transport.(*http.Transport); ok {
@ -75,7 +75,7 @@ func WithHost(host string) Opt {
}
// WithHostFromEnv overrides the client host with the host specified in the
// DOCKER_HOST (EnvOverrideHost) environment variable. If DOCKER_HOST is not set,
// DOCKER_HOST ([EnvOverrideHost]) environment variable. If DOCKER_HOST is not set,
// or set to an empty value, the host is not modified.
func WithHostFromEnv() Opt {
return func(c *Client) error {
@ -86,7 +86,7 @@ func WithHostFromEnv() Opt {
}
}
// WithHTTPClient overrides the client http client with the specified one
// WithHTTPClient overrides the client's HTTP client with the specified one.
func WithHTTPClient(client *http.Client) Opt {
return func(c *Client) error {
if client != nil {
@ -96,7 +96,7 @@ func WithHTTPClient(client *http.Client) Opt {
}
}
// WithTimeout configures the time limit for requests made by the HTTP client
// WithTimeout configures the time limit for requests made by the HTTP client.
func WithTimeout(timeout time.Duration) Opt {
return func(c *Client) error {
c.client.Timeout = timeout
@ -114,7 +114,9 @@ func WithUserAgent(ua string) Opt {
}
}
// WithHTTPHeaders overrides the client default http headers
// WithHTTPHeaders appends custom HTTP headers to the client's default headers.
// It does not allow for built-in headers (such as "User-Agent", if set) to
// be overridden. Also see [WithUserAgent].
func WithHTTPHeaders(headers map[string]string) Opt {
return func(c *Client) error {
c.customHTTPHeaders = headers
@ -122,7 +124,7 @@ func WithHTTPHeaders(headers map[string]string) Opt {
}
}
// WithScheme overrides the client scheme with the specified one
// WithScheme overrides the client scheme with the specified one.
func WithScheme(scheme string) Opt {
return func(c *Client) error {
c.scheme = scheme
@ -130,51 +132,50 @@ func WithScheme(scheme string) Opt {
}
}
// WithTLSClientConfig applies a tls config to the client transport.
// WithTLSClientConfig applies a TLS config to the client transport.
func WithTLSClientConfig(cacertPath, certPath, keyPath string) Opt {
return func(c *Client) error {
opts := tlsconfig.Options{
transport, ok := c.client.Transport.(*http.Transport)
if !ok {
return errors.Errorf("cannot apply tls config to transport: %T", c.client.Transport)
}
config, err := tlsconfig.Client(tlsconfig.Options{
CAFile: cacertPath,
CertFile: certPath,
KeyFile: keyPath,
ExclusiveRootPools: true,
}
config, err := tlsconfig.Client(opts)
})
if err != nil {
return errors.Wrap(err, "failed to create tls config")
}
if transport, ok := c.client.Transport.(*http.Transport); ok {
transport.TLSClientConfig = config
return nil
}
return errors.Errorf("cannot apply tls config to transport: %T", c.client.Transport)
transport.TLSClientConfig = config
return nil
}
}
// WithTLSClientConfigFromEnv configures the client's TLS settings with the
// settings in the DOCKER_CERT_PATH and DOCKER_TLS_VERIFY environment variables.
// If DOCKER_CERT_PATH is not set or empty, TLS configuration is not modified.
// settings in the DOCKER_CERT_PATH ([EnvOverrideCertPath]) and DOCKER_TLS_VERIFY
// ([EnvTLSVerify]) environment variables. If DOCKER_CERT_PATH is not set or empty,
// TLS configuration is not modified.
//
// WithTLSClientConfigFromEnv uses the following environment variables:
//
// DOCKER_CERT_PATH (EnvOverrideCertPath) to specify the directory from which to
// load the TLS certificates (ca.pem, cert.pem, key.pem).
//
// DOCKER_TLS_VERIFY (EnvTLSVerify) to enable or disable TLS verification (off by
// default).
// - DOCKER_CERT_PATH ([EnvOverrideCertPath]) to specify the directory from
// which to load the TLS certificates ("ca.pem", "cert.pem", "key.pem").
// - DOCKER_TLS_VERIFY ([EnvTLSVerify]) to enable or disable TLS verification
// (off by default).
func WithTLSClientConfigFromEnv() Opt {
return func(c *Client) error {
dockerCertPath := os.Getenv(EnvOverrideCertPath)
if dockerCertPath == "" {
return nil
}
options := tlsconfig.Options{
tlsc, err := tlsconfig.Client(tlsconfig.Options{
CAFile: filepath.Join(dockerCertPath, "ca.pem"),
CertFile: filepath.Join(dockerCertPath, "cert.pem"),
KeyFile: filepath.Join(dockerCertPath, "key.pem"),
InsecureSkipVerify: os.Getenv(EnvTLSVerify) == "",
}
tlsc, err := tlsconfig.Client(options)
})
if err != nil {
return err
}
@ -188,7 +189,8 @@ func WithTLSClientConfigFromEnv() Opt {
}
// WithVersion overrides the client version with the specified one. If an empty
// version is specified, the value will be ignored to allow version negotiation.
// version is provided, the value is ignored to allow version negotiation
// (see [WithAPIVersionNegotiation]).
func WithVersion(version string) Opt {
return func(c *Client) error {
if version != "" {
@ -200,8 +202,9 @@ func WithVersion(version string) Opt {
}
// WithVersionFromEnv overrides the client version with the version specified in
// the DOCKER_API_VERSION environment variable. If DOCKER_API_VERSION is not set,
// the version is not modified.
// the DOCKER_API_VERSION ([EnvOverrideAPIVersion]) environment variable.
// If DOCKER_API_VERSION is not set, or set to an empty value, the version
// is not modified.
func WithVersionFromEnv() Opt {
return func(c *Client) error {
return WithVersion(os.Getenv(EnvOverrideAPIVersion))(c)
@ -211,7 +214,7 @@ func WithVersionFromEnv() Opt {
// WithAPIVersionNegotiation enables automatic API version negotiation for the client.
// With this option enabled, the client automatically negotiates the API version
// to use when making requests. API version negotiation is performed on the first
// request; subsequent requests will not re-negotiate.
// request; subsequent requests do not re-negotiate.
func WithAPIVersionNegotiation() Opt {
return func(c *Client) error {
c.negotiateVersion = true

View File

@ -227,13 +227,8 @@ func (cli *Client) checkResponseErr(serverResp serverResponse) error {
return fmt.Errorf("request returned %s for API route and version %s, check if the server supports the requested API version", http.StatusText(serverResp.statusCode), serverResp.reqURL)
}
var ct string
if serverResp.header != nil {
ct = serverResp.header.Get("Content-Type")
}
var errorMessage string
if (cli.version == "" || versions.GreaterThan(cli.version, "1.23")) && ct == "application/json" {
if serverResp.header.Get("Content-Type") == "application/json" && (cli.version == "" || versions.GreaterThan(cli.version, "1.23")) {
var errorResponse types.ErrorResponse
if err := json.Unmarshal(body, &errorResponse); err != nil {
return errors.Wrap(err, "Error reading JSON")

View File

@ -1,17 +0,0 @@
package client // import "github.com/docker/docker/client"
import (
"crypto/tls"
"net/http"
)
// resolveTLSConfig attempts to resolve the TLS configuration from the
// RoundTripper.
func resolveTLSConfig(transport http.RoundTripper) *tls.Config {
switch tr := transport.(type) {
case *http.Transport:
return tr.TLSClientConfig
default:
return nil
}
}

View File

@ -30,7 +30,6 @@ import (
"github.com/moby/patternmatcher"
"github.com/moby/sys/sequential"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
)
// ImpliedDirectoryMode represents the mode (Unix permissions) applied to directories that are implied by files in a
@ -790,7 +789,7 @@ func createTarFile(path, extractDir string, hdr *tar.Header, reader io.Reader, o
}
if len(xattrErrs) > 0 {
log.G(context.TODO()).WithFields(logrus.Fields{
log.G(context.TODO()).WithFields(log.Fields{
"errors": xattrErrs,
}).Warn("ignored xattrs in archive: underlying filesystem doesn't support them")
}

View File

@ -7,6 +7,7 @@ import (
"errors"
"os"
"path/filepath"
"runtime"
"strings"
"syscall"
@ -43,6 +44,20 @@ func chmodTarEntry(perm os.FileMode) os.FileMode {
// statUnix populates hdr from system-dependent fields of fi without performing
// any OS lookups.
func statUnix(fi os.FileInfo, hdr *tar.Header) error {
// Devmajor and Devminor are only needed for special devices.
// In FreeBSD, RDev for regular files is -1 (unless overridden by FS):
// https://cgit.freebsd.org/src/tree/sys/kern/vfs_default.c?h=stable/13#n1531
// (NODEV is -1: https://cgit.freebsd.org/src/tree/sys/sys/param.h?h=stable/13#n241).
// ZFS in particular does not override the default:
// https://cgit.freebsd.org/src/tree/sys/contrib/openzfs/module/os/freebsd/zfs/zfs_vnops_os.c?h=stable/13#n2027
// Since `Stat_t.Rdev` is uint64, the cast turns -1 into (2^64 - 1).
// Such large values cannot be encoded in a tar header.
if runtime.GOOS == "freebsd" && hdr.Typeflag != tar.TypeBlock && hdr.Typeflag != tar.TypeChar {
return nil
}
s, ok := fi.Sys().(*syscall.Stat_t)
if !ok {
return nil

View File

@ -1,15 +1,16 @@
package registry // import "github.com/docker/docker/registry"
import (
"context"
"net"
"net/url"
"regexp"
"strconv"
"strings"
"github.com/containerd/containerd/log"
"github.com/docker/distribution/reference"
"github.com/docker/docker/api/types/registry"
"github.com/sirupsen/logrus"
)
// ServiceOptions holds command line options.
@ -197,10 +198,10 @@ skip:
return err
}
if strings.HasPrefix(strings.ToLower(r), "http://") {
logrus.Warnf("insecure registry %s should not contain 'http://' and 'http://' has been removed from the insecure registry config", r)
log.G(context.TODO()).Warnf("insecure registry %s should not contain 'http://' and 'http://' has been removed from the insecure registry config", r)
r = r[7:]
} else if strings.HasPrefix(strings.ToLower(r), "https://") {
logrus.Warnf("insecure registry %s should not contain 'https://' and 'https://' has been removed from the insecure registry config", r)
log.G(context.TODO()).Warnf("insecure registry %s should not contain 'https://' and 'https://' has been removed from the insecure registry config", r)
r = r[8:]
} else if hasScheme(r) {
return invalidParamf("insecure registry %s should not contain '://'", r)

View File

@ -16,7 +16,7 @@ import (
)
var acceptedSearchFilterTags = map[string]bool{
"is-automated": true,
"is-automated": true, // Deprecated: the "is_automated" field is deprecated and will always be false in the future.
"is-official": true,
"stars": true,
}
@ -28,6 +28,7 @@ func (s *Service) Search(ctx context.Context, searchFilters filters.Args, term s
return nil, err
}
// TODO(thaJeztah): the "is-automated" field is deprecated; reset the field for the next release (v26.0.0). Return early when using "is-automated=true", and ignore "is-automated=false".
isAutomated, err := searchFilters.GetBoolOrDefault("is-automated", false)
if err != nil {
return nil, err
@ -51,6 +52,7 @@ func (s *Service) Search(ctx context.Context, searchFilters filters.Args, term s
}
}
// TODO(thaJeztah): the "is-automated" field is deprecated. Reset the field for the next release (v26.0.0) if any "true" values are present.
unfilteredResult, err := s.searchUnfiltered(ctx, term, limit, authConfig, headers)
if err != nil {
return nil, err
@ -59,7 +61,7 @@ func (s *Service) Search(ctx context.Context, searchFilters filters.Args, term s
filteredResults := []registry.SearchResult{}
for _, result := range unfilteredResult.Results {
if searchFilters.Contains("is-automated") {
if isAutomated != result.IsAutomated {
if isAutomated != result.IsAutomated { //nolint:staticcheck // ignore SA1019 for old API versions.
continue
}
}

View File

@ -2621,6 +2621,36 @@ file {
}
json_name: "nonrecursive"
}
field {
name: "createmountpoint"
number: 3
label: LABEL_OPTIONAL
type: TYPE_BOOL
options {
65004: "CreateMountpoint"
}
json_name: "createmountpoint"
}
field {
name: "readonlynonrecursive"
number: 4
label: LABEL_OPTIONAL
type: TYPE_BOOL
options {
65004: "ReadOnlyNonRecursive"
}
json_name: "readonlynonrecursive"
}
field {
name: "readonlyforcerecursive"
number: 5
label: LABEL_OPTIONAL
type: TYPE_BOOL
options {
65004: "ReadOnlyForceRecursive"
}
json_name: "readonlyforcerecursive"
}
enum_type {
name: "Propagation"
value {
@ -2735,8 +2765,8 @@ file {
label: LABEL_OPTIONAL
type: TYPE_UINT32
options {
65001: 0
65003: "os.FileMode"
65001: 0
}
json_name: "mode"
}
@ -2904,8 +2934,8 @@ file {
type: TYPE_MESSAGE
type_name: ".google.protobuf.Duration"
options {
65001: 0
65011: 1
65001: 0
}
json_name: "delay"
}
@ -3348,8 +3378,8 @@ file {
}
}
options {
62001: 0
62023: "PublishMode"
62001: 0
}
}
}
@ -4055,8 +4085,8 @@ file {
label: LABEL_OPTIONAL
type: TYPE_UINT32
options {
65001: 0
65003: "os.FileMode"
65001: 0
}
json_name: "mode"
}
@ -4182,6 +4212,14 @@ file {
type_name: ".google.protobuf.Duration"
json_name: "startPeriod"
}
field {
name: "start_interval"
number: 6
label: LABEL_OPTIONAL
type: TYPE_MESSAGE
type_name: ".google.protobuf.Duration"
json_name: "startInterval"
}
}
message_type {
name: "MaybeEncryptedRecord"
@ -5052,8 +5090,8 @@ file {
}
}
options {
62001: 0
62023: "NodeRole"
62001: 0
}
}
syntax: "proto3"
@ -9739,8 +9777,8 @@ file {
type: TYPE_MESSAGE
type_name: ".google.protobuf.Duration"
options {
65001: 0
65011: 1
65001: 0
}
json_name: "period"
}
@ -10958,14 +10996,14 @@ file {
}
}
options {
63017: 1
63020: 1
63018: 1
63001: 0
63002: 0
63017: 1
63018: 1
63020: 1
63035: 0
63026: 0
63034: 0
63035: 0
}
}
file {

View File

@ -3609,6 +3609,10 @@ type HealthConfig struct {
// which health check failures will note count towards the maximum
// number of retries.
StartPeriod *types.Duration `protobuf:"bytes,5,opt,name=start_period,json=startPeriod,proto3" json:"start_period,omitempty"`
// StartInterval is the time to wait between checks during the start period.
// Zero means inherit.
// Note: can't use stdduration because this field needs to be nullable.
StartInterval *types.Duration `protobuf:"bytes,6,opt,name=start_interval,json=startInterval,proto3" json:"start_interval,omitempty"`
}
func (m *HealthConfig) Reset() { *m = HealthConfig{} }
@ -5011,407 +5015,408 @@ func init() {
}
var fileDescriptor_0b5eafd0404ded3d = []byte{
// 6395 bytes of a gzipped FileDescriptorProto
// 6412 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x7b, 0x4d, 0x6c, 0x24, 0x49,
0x56, 0xb0, 0xeb, 0xd7, 0x55, 0xaf, 0xca, 0x76, 0x76, 0xd8, 0xe3, 0x71, 0xd7, 0xf4, 0xd8, 0x9e,
0x9c, 0xe9, 0x9d, 0x9e, 0xde, 0x59, 0x77, 0x4f, 0xcf, 0xec, 0x7c, 0x3d, 0x33, 0x3b, 0x3b, 0x5d,
0x7f, 0x6e, 0xd7, 0xb6, 0x5d, 0x55, 0x8a, 0x2a, 0x77, 0xef, 0xac, 0xf4, 0x6d, 0x92, 0xce, 0x0c,
0x97, 0x73, 0x9c, 0x95, 0x59, 0x64, 0x66, 0xd9, 0x6d, 0x16, 0xc4, 0x9c, 0x00, 0x59, 0x42, 0x80,
0x90, 0x96, 0x45, 0x60, 0x81, 0x60, 0x39, 0x71, 0xe0, 0xc0, 0x81, 0x1f, 0x71, 0x18, 0x24, 0x84,
0x96, 0x13, 0xbb, 0x2c, 0x82, 0xd5, 0x82, 0x0c, 0xeb, 0x95, 0x10, 0x17, 0x04, 0x17, 0x04, 0x07,
0x0e, 0x28, 0xfe, 0x32, 0xb3, 0xaa, 0xcb, 0x76, 0xf7, 0xce, 0x72, 0xb1, 0x33, 0xde, 0x5f, 0x44,
0xbc, 0x88, 0x78, 0xf1, 0xde, 0x8b, 0x57, 0x70, 0xb3, 0x67, 0x05, 0x7b, 0xc3, 0x9d, 0x35, 0xc3,
0xed, 0xdf, 0x32, 0x5d, 0x63, 0x9f, 0x78, 0xb7, 0xfc, 0x43, 0xdd, 0xeb, 0xef, 0x5b, 0xc1, 0x2d,
0x7d, 0x60, 0xdd, 0x0a, 0x8e, 0x06, 0xc4, 0x5f, 0x1b, 0x78, 0x6e, 0xe0, 0x22, 0xc4, 0x09, 0xd6,
0x24, 0xc1, 0xda, 0xc1, 0x1b, 0xa5, 0x95, 0x9e, 0xeb, 0xf6, 0x6c, 0x72, 0x8b, 0x51, 0xec, 0x0c,
0x77, 0x6f, 0x05, 0x56, 0x9f, 0xf8, 0x81, 0xde, 0x1f, 0x70, 0xa6, 0xd2, 0xf2, 0x38, 0x81, 0x39,
0xf4, 0xf4, 0xc0, 0x72, 0x9d, 0xf3, 0xf0, 0x87, 0x9e, 0x3e, 0x18, 0x10, 0x4f, 0x74, 0x5a, 0x5a,
0xe8, 0xb9, 0x3d, 0x97, 0x7d, 0xde, 0xa2, 0x5f, 0x1c, 0xaa, 0xae, 0xc0, 0xf4, 0x43, 0xe2, 0xf9,
0x96, 0xeb, 0xa0, 0x05, 0xc8, 0x58, 0x8e, 0x49, 0x1e, 0x2f, 0x25, 0x56, 0x13, 0x37, 0xd2, 0x98,
0x37, 0xd4, 0xdb, 0x00, 0x0d, 0xfa, 0x51, 0x77, 0x02, 0xef, 0x08, 0x29, 0x90, 0xda, 0x27, 0x47,
0x8c, 0x22, 0x8f, 0xe9, 0x27, 0x85, 0x1c, 0xe8, 0xf6, 0x52, 0x92, 0x43, 0x0e, 0x74, 0x5b, 0xfd,
0x41, 0x02, 0x0a, 0x65, 0xc7, 0x71, 0x03, 0x36, 0x3a, 0x1f, 0x21, 0x48, 0x3b, 0x7a, 0x9f, 0x08,
0x26, 0xf6, 0x8d, 0xaa, 0x90, 0xb5, 0xf5, 0x1d, 0x62, 0xfb, 0x4b, 0xc9, 0xd5, 0xd4, 0x8d, 0xc2,
0x9d, 0xcf, 0xae, 0x3d, 0xa9, 0x92, 0xb5, 0x98, 0x90, 0xb5, 0x4d, 0x46, 0xcd, 0x06, 0x81, 0x05,
0x2b, 0xfa, 0x22, 0x4c, 0x5b, 0x8e, 0x69, 0x19, 0xc4, 0x5f, 0x4a, 0x33, 0x29, 0xcb, 0x93, 0xa4,
0x44, 0xa3, 0xaf, 0xa4, 0xbf, 0x75, 0xba, 0x32, 0x85, 0x25, 0x53, 0xe9, 0x1d, 0x28, 0xc4, 0xc4,
0x4e, 0x98, 0xdb, 0x02, 0x64, 0x0e, 0x74, 0x7b, 0x48, 0xc4, 0xec, 0x78, 0xe3, 0xdd, 0xe4, 0xdd,
0x84, 0x7a, 0x0f, 0x16, 0x9a, 0x7a, 0x9f, 0x98, 0xf7, 0x89, 0x43, 0x3c, 0xcb, 0xc0, 0xc4, 0x77,
0x87, 0x9e, 0x41, 0xe8, 0x5c, 0xf7, 0x2d, 0xc7, 0x94, 0x73, 0xa5, 0xdf, 0x93, 0xa5, 0xa8, 0x55,
0x78, 0xbe, 0x66, 0xf9, 0x86, 0x47, 0x02, 0xf2, 0xcc, 0x42, 0x52, 0x52, 0xc8, 0x69, 0x02, 0xe6,
0xc6, 0xb9, 0xbf, 0x02, 0xf3, 0x54, 0xc5, 0xa6, 0xe6, 0x09, 0x88, 0xe6, 0x0f, 0x88, 0xc1, 0x84,
0x15, 0xee, 0xdc, 0x98, 0xa4, 0xa1, 0x49, 0x33, 0xd9, 0x98, 0xc2, 0x57, 0x98, 0x18, 0x09, 0xe8,
0x0c, 0x88, 0x81, 0x0c, 0x58, 0x34, 0xc5, 0xa0, 0xc7, 0xc4, 0x27, 0x99, 0xf8, 0x89, 0xcb, 0x78,
0xce, 0x34, 0x37, 0xa6, 0xf0, 0x82, 0x14, 0x16, 0xef, 0xa4, 0x02, 0x90, 0x93, 0xb2, 0xd5, 0x6f,
0x24, 0x20, 0x2f, 0x91, 0x3e, 0x7a, 0x0d, 0xf2, 0x8e, 0xee, 0xb8, 0x9a, 0x31, 0x18, 0xfa, 0x6c,
0x42, 0xa9, 0x4a, 0xf1, 0xec, 0x74, 0x25, 0xd7, 0xd4, 0x1d, 0xb7, 0xda, 0xde, 0xf6, 0x71, 0x8e,
0xa2, 0xab, 0x83, 0xa1, 0x8f, 0x5e, 0x82, 0x62, 0x9f, 0xf4, 0x5d, 0xef, 0x48, 0xdb, 0x39, 0x0a,
0x88, 0x2f, 0xd4, 0x56, 0xe0, 0xb0, 0x0a, 0x05, 0xa1, 0xf7, 0x61, 0xba, 0xc7, 0x87, 0xb4, 0x94,
0x62, 0xdb, 0xe7, 0xe5, 0x49, 0xa3, 0x1f, 0x1b, 0x35, 0x96, 0x3c, 0xea, 0xd7, 0x93, 0xb0, 0x10,
0x42, 0xc9, 0x4f, 0x0e, 0x2d, 0x8f, 0xf4, 0x89, 0x13, 0xf8, 0xe8, 0xf3, 0x90, 0xb5, 0xad, 0xbe,
0x15, 0xf8, 0x42, 0xe7, 0x2f, 0x4e, 0x12, 0x1b, 0x4e, 0x0a, 0x0b, 0x62, 0x54, 0x86, 0xa2, 0x47,
0x7c, 0xe2, 0x1d, 0xf0, 0x1d, 0x2f, 0x34, 0x7a, 0x09, 0xf3, 0x08, 0x0b, 0x7a, 0x17, 0xc0, 0x3f,
0xd4, 0x07, 0x62, 0xca, 0x29, 0x26, 0xe0, 0x85, 0x35, 0x6e, 0x17, 0xd6, 0xa4, 0x5d, 0x58, 0x6b,
0x38, 0xc1, 0xdb, 0x6f, 0x3d, 0xa4, 0xfb, 0x07, 0xe7, 0x29, 0x39, 0xd7, 0xc6, 0x06, 0x5c, 0x11,
0x0a, 0xa3, 0xb0, 0x81, 0xe5, 0x10, 0x9f, 0x1e, 0xab, 0x4b, 0x45, 0x28, 0x9c, 0xab, 0x13, 0x32,
0xa9, 0xeb, 0x90, 0x6b, 0xdb, 0x7a, 0xb0, 0xeb, 0x7a, 0x7d, 0xa4, 0x42, 0x51, 0xf7, 0x8c, 0x3d,
0x2b, 0x20, 0x46, 0x30, 0xf4, 0xa4, 0x0d, 0x18, 0x81, 0xa1, 0x45, 0x48, 0xba, 0x7c, 0xba, 0xf9,
0x4a, 0xf6, 0xec, 0x74, 0x25, 0xd9, 0xea, 0xe0, 0xa4, 0xeb, 0xab, 0xef, 0xc1, 0x95, 0xb6, 0x3d,
0xec, 0x59, 0x4e, 0x8d, 0xf8, 0x86, 0x67, 0x0d, 0xe8, 0x1c, 0xe9, 0xd9, 0xa0, 0x96, 0x54, 0x9e,
0x0d, 0xfa, 0x1d, 0x1a, 0x98, 0x64, 0x64, 0x60, 0xd4, 0x9f, 0x4f, 0xc2, 0x95, 0xba, 0xd3, 0xb3,
0x1c, 0x12, 0xe7, 0xbe, 0x0e, 0xb3, 0x84, 0x01, 0xb5, 0x03, 0x6e, 0xf4, 0x84, 0x9c, 0x19, 0x0e,
0x95, 0x96, 0xb0, 0x31, 0x66, 0x9d, 0xde, 0x98, 0xb4, 0x08, 0x4f, 0x48, 0x9f, 0x68, 0xa3, 0xea,
0x30, 0x3d, 0x60, 0x93, 0xf0, 0xc5, 0x26, 0xbb, 0x3e, 0x49, 0xd6, 0x13, 0xf3, 0x94, 0xa6, 0x4a,
0xf0, 0x7e, 0x1a, 0x53, 0xf5, 0xab, 0x29, 0x98, 0x6b, 0xba, 0xe6, 0x88, 0x1e, 0x4a, 0x90, 0xdb,
0x73, 0xfd, 0x20, 0x66, 0x96, 0xc3, 0x36, 0xba, 0x0b, 0xb9, 0x81, 0x58, 0x3e, 0xb1, 0x07, 0xaf,
0x4d, 0x1e, 0x32, 0xa7, 0xc1, 0x21, 0x35, 0x7a, 0x0f, 0xf2, 0xf2, 0xe0, 0xca, 0xdd, 0x77, 0xc9,
0xf6, 0x8d, 0xe8, 0xd1, 0xfb, 0x90, 0xe5, 0x8b, 0x20, 0x36, 0xdd, 0xf5, 0xa7, 0xd2, 0x39, 0x16,
0x4c, 0xe8, 0x3e, 0xe4, 0x02, 0xdb, 0xd7, 0x2c, 0x67, 0xd7, 0x5d, 0xca, 0x30, 0x01, 0x2b, 0x13,
0x4d, 0x9d, 0x6b, 0x92, 0xee, 0x66, 0xa7, 0xe1, 0xec, 0xba, 0x95, 0xc2, 0xd9, 0xe9, 0xca, 0xb4,
0x68, 0xe0, 0xe9, 0xc0, 0xf6, 0xe9, 0x07, 0xba, 0x06, 0xe9, 0x5d, 0x6b, 0xe0, 0x2f, 0x65, 0x57,
0x13, 0x37, 0x72, 0x95, 0xdc, 0xd9, 0xe9, 0x4a, 0x7a, 0xbd, 0xd1, 0xee, 0x60, 0x06, 0xa5, 0xdd,
0x18, 0xbe, 0xc5, 0xbb, 0x99, 0x66, 0xeb, 0x79, 0x6e, 0x37, 0xd5, 0x4e, 0x23, 0xea, 0x46, 0x34,
0xf0, 0xb4, 0xe1, 0x5b, 0xf4, 0x43, 0xfd, 0x95, 0x04, 0x14, 0x62, 0x83, 0x41, 0x2f, 0x02, 0x04,
0xde, 0xd0, 0x0f, 0x34, 0xcf, 0x75, 0x03, 0xb6, 0x26, 0x45, 0x9c, 0x67, 0x10, 0xec, 0xba, 0x01,
0x5a, 0x83, 0x79, 0x83, 0x78, 0x81, 0x66, 0xf9, 0xfe, 0x90, 0x78, 0x9a, 0x3f, 0xdc, 0xf9, 0x88,
0x18, 0x01, 0x5b, 0x9f, 0x22, 0xbe, 0x42, 0x51, 0x0d, 0x86, 0xe9, 0x70, 0x04, 0x7a, 0x13, 0x16,
0xe3, 0xf4, 0x83, 0xe1, 0x8e, 0x6d, 0x19, 0x1a, 0xdd, 0x33, 0x29, 0xc6, 0x32, 0x1f, 0xb1, 0xb4,
0x19, 0xee, 0x01, 0x39, 0x52, 0xbf, 0x2b, 0xc6, 0x24, 0x06, 0x8b, 0x56, 0xa0, 0xc0, 0xf7, 0x9f,
0x16, 0xdb, 0x28, 0xc0, 0x41, 0xf4, 0xce, 0x40, 0x2f, 0xc3, 0xb4, 0xe3, 0x9a, 0x44, 0xb3, 0x4c,
0x71, 0x7c, 0xe1, 0xec, 0x74, 0x25, 0x4b, 0x45, 0x34, 0x6a, 0x38, 0x4b, 0x51, 0x0d, 0x13, 0xdd,
0x82, 0x85, 0xbe, 0xfe, 0x58, 0x3b, 0x70, 0xed, 0x61, 0x9f, 0xf8, 0xda, 0x80, 0x78, 0x1a, 0xc5,
0xb0, 0x81, 0xa4, 0xf0, 0x95, 0xbe, 0xfe, 0xf8, 0x21, 0x47, 0xb5, 0x89, 0x47, 0x59, 0xd1, 0x16,
0xcc, 0xeb, 0x86, 0x41, 0x7c, 0xdf, 0xda, 0xb1, 0x89, 0x16, 0xb8, 0x03, 0xd7, 0x76, 0x7b, 0x47,
0x62, 0x5b, 0x4c, 0xdc, 0x8b, 0x5d, 0x41, 0x83, 0x51, 0xc4, 0x28, 0x61, 0xea, 0xf7, 0x12, 0xa0,
0x60, 0x7d, 0x37, 0xd8, 0x22, 0xfd, 0x1d, 0xe2, 0x75, 0x02, 0x3d, 0x18, 0xfa, 0x68, 0x11, 0xb2,
0x36, 0xd1, 0x4d, 0xe2, 0xb1, 0x59, 0xe5, 0xb0, 0x68, 0xa1, 0x6d, 0x6a, 0x84, 0x75, 0x63, 0x4f,
0xdf, 0xb1, 0x6c, 0x2b, 0x38, 0x62, 0xd3, 0x9a, 0x9d, 0x7c, 0xfe, 0xc7, 0x65, 0xae, 0xe1, 0x18,
0x23, 0x1e, 0x11, 0x83, 0x96, 0x60, 0xba, 0x4f, 0x7c, 0x5f, 0xef, 0xf1, 0x69, 0xe7, 0xb1, 0x6c,
0xaa, 0xef, 0x41, 0x31, 0xce, 0x87, 0x0a, 0x30, 0xbd, 0xdd, 0x7c, 0xd0, 0x6c, 0x3d, 0x6a, 0x2a,
0x53, 0x68, 0x0e, 0x0a, 0xdb, 0x4d, 0x5c, 0x2f, 0x57, 0x37, 0xca, 0x95, 0xcd, 0xba, 0x92, 0x40,
0x33, 0x90, 0x8f, 0x9a, 0x49, 0xf5, 0x0f, 0x13, 0x00, 0x54, 0x65, 0x62, 0x52, 0xef, 0x42, 0xc6,
0x0f, 0xf4, 0x80, 0xaf, 0xd4, 0xec, 0x9d, 0x57, 0xce, 0xdb, 0x99, 0x62, 0xbc, 0xf4, 0x1f, 0xc1,
0x9c, 0x25, 0x3e, 0xc2, 0xe4, 0xc8, 0x08, 0xa9, 0x75, 0xd5, 0x4d, 0xd3, 0x13, 0x03, 0x67, 0xdf,
0xea, 0x7b, 0x90, 0x61, 0xdc, 0xa3, 0xc3, 0xcd, 0x41, 0xba, 0x46, 0xbf, 0x12, 0x28, 0x0f, 0x19,
0x5c, 0x2f, 0xd7, 0x3e, 0x54, 0x92, 0x48, 0x81, 0x62, 0xad, 0xd1, 0xa9, 0xb6, 0x9a, 0xcd, 0x7a,
0xb5, 0x5b, 0xaf, 0x29, 0x29, 0xf5, 0x3a, 0x64, 0x1a, 0x7d, 0x2a, 0xf9, 0x1a, 0xb5, 0x17, 0xbb,
0xc4, 0x23, 0x8e, 0x21, 0x77, 0x57, 0x04, 0x50, 0xff, 0x75, 0x16, 0x32, 0x5b, 0xee, 0xd0, 0x09,
0xd0, 0x9d, 0x98, 0xcd, 0x9f, 0x9d, 0xec, 0xe4, 0x31, 0xc2, 0xb5, 0xee, 0xd1, 0x80, 0x88, 0x3b,
0x61, 0x11, 0xb2, 0xdc, 0xb2, 0x88, 0xe9, 0x88, 0x16, 0x85, 0x07, 0xba, 0xd7, 0x23, 0x81, 0x98,
0x8f, 0x68, 0xa1, 0x1b, 0xd4, 0xe9, 0xd0, 0x4d, 0xd7, 0xb1, 0xf9, 0x4e, 0xcb, 0x71, 0xcf, 0x02,
0x13, 0xdd, 0x6c, 0x39, 0xf6, 0x11, 0x0e, 0xb1, 0xe8, 0x3e, 0x14, 0x0c, 0xd7, 0xf1, 0x2d, 0x3f,
0x20, 0x8e, 0x71, 0xb4, 0x94, 0x63, 0x83, 0xba, 0x7e, 0xfe, 0xa0, 0xaa, 0x11, 0x31, 0x8e, 0x73,
0xa2, 0x0d, 0x28, 0xee, 0x58, 0x8e, 0xa9, 0xb9, 0x03, 0x7e, 0xe1, 0x67, 0xce, 0xb7, 0x7b, 0x5c,
0x52, 0xc5, 0x72, 0xcc, 0x16, 0x27, 0xc6, 0x85, 0x9d, 0xa8, 0x81, 0x9a, 0x30, 0xcb, 0x8f, 0x57,
0x28, 0x2b, 0xcb, 0x64, 0xbd, 0x7a, 0xbe, 0x2c, 0x7e, 0xe6, 0xa4, 0xb4, 0x99, 0x83, 0x78, 0x13,
0x3d, 0x80, 0x99, 0xa0, 0x3f, 0xd8, 0xf5, 0x43, 0x71, 0xd3, 0x4c, 0xdc, 0x67, 0x2e, 0xd0, 0x3c,
0x25, 0x97, 0xd2, 0x8a, 0x41, 0xac, 0x55, 0xfa, 0xcd, 0x0c, 0x14, 0x62, 0x23, 0x47, 0x1d, 0x28,
0x0c, 0x3c, 0x77, 0xa0, 0xf7, 0x98, 0xd3, 0x22, 0x16, 0xf5, 0x8d, 0xa7, 0x9a, 0xf5, 0x5a, 0x3b,
0x62, 0xc4, 0x71, 0x29, 0xe8, 0x2d, 0x28, 0x3a, 0xae, 0xe3, 0x11, 0x63, 0xe8, 0xf9, 0xd6, 0x01,
0x5f, 0xf4, 0x5c, 0x45, 0x39, 0x3b, 0x5d, 0x29, 0x36, 0x5d, 0x07, 0x4b, 0x38, 0x1e, 0xa1, 0x42,
0xf7, 0x40, 0x31, 0x3c, 0xa2, 0x07, 0xa4, 0x4f, 0x7b, 0x1a, 0xb8, 0x96, 0xc3, 0xb7, 0x45, 0xae,
0xb2, 0x70, 0x76, 0xba, 0xa2, 0x54, 0x19, 0x6e, 0x2b, 0xc4, 0xe1, 0x27, 0xa8, 0xd1, 0x26, 0x2c,
0xc8, 0x8d, 0x31, 0xd2, 0x3f, 0xdf, 0x42, 0x4b, 0x67, 0xa7, 0x2b, 0x0b, 0x72, 0x0b, 0x8d, 0x8c,
0x63, 0x22, 0x17, 0xc2, 0xb0, 0x28, 0xe1, 0xbb, 0xae, 0x67, 0x90, 0x48, 0x5e, 0x86, 0xc9, 0x2b,
0x9d, 0x9d, 0xae, 0x2c, 0x4a, 0x79, 0xeb, 0x2e, 0x73, 0x3c, 0xa5, 0xc4, 0x73, 0x38, 0xd5, 0x93,
0x24, 0x14, 0x62, 0x6a, 0x43, 0x37, 0x21, 0x87, 0xdb, 0xb8, 0xf1, 0xb0, 0xdc, 0xad, 0x2b, 0x53,
0xa5, 0x6b, 0xc7, 0x27, 0xab, 0x4b, 0x6c, 0x86, 0x71, 0xd5, 0xb6, 0x3d, 0xeb, 0x80, 0x9e, 0xee,
0x1b, 0x30, 0x2d, 0x49, 0x13, 0xa5, 0x17, 0x8e, 0x4f, 0x56, 0x9f, 0x1f, 0x27, 0x8d, 0x51, 0xe2,
0xce, 0x46, 0x19, 0xd7, 0x6b, 0x4a, 0x72, 0x32, 0x25, 0xee, 0xec, 0xe9, 0x1e, 0x31, 0xd1, 0x67,
0x20, 0x2b, 0x08, 0x53, 0xa5, 0xd2, 0xf1, 0xc9, 0xea, 0xe2, 0x38, 0x61, 0x44, 0x87, 0x3b, 0x9b,
0xe5, 0x87, 0x75, 0x25, 0x3d, 0x99, 0x0e, 0x77, 0x6c, 0xfd, 0x80, 0xa0, 0x57, 0x20, 0xc3, 0xc9,
0x32, 0xa5, 0xab, 0xc7, 0x27, 0xab, 0xcf, 0x3d, 0x21, 0x8e, 0x52, 0x95, 0x96, 0x7e, 0xe1, 0x77,
0x97, 0xa7, 0xfe, 0xf4, 0x9b, 0xcb, 0xca, 0x38, 0xba, 0xf4, 0x3f, 0x09, 0x98, 0x19, 0x39, 0x0c,
0x48, 0x85, 0xac, 0xe3, 0x1a, 0xee, 0x80, 0xfb, 0x57, 0x39, 0x79, 0xa9, 0x55, 0xdd, 0xc1, 0x11,
0x16, 0x18, 0xf4, 0x60, 0xcc, 0x43, 0x7c, 0xf3, 0x29, 0x4f, 0xda, 0x44, 0x1f, 0xf1, 0x03, 0x98,
0x31, 0x3d, 0xeb, 0x80, 0x78, 0x9a, 0xe1, 0x3a, 0xbb, 0x56, 0x4f, 0xf8, 0x4e, 0xa5, 0x89, 0xc1,
0x14, 0x23, 0xc4, 0x45, 0xce, 0x50, 0x65, 0xf4, 0x9f, 0xc2, 0x3b, 0x2c, 0x0d, 0xa0, 0x18, 0x3f,
0xbb, 0xd4, 0x0f, 0xf1, 0xad, 0x9f, 0x22, 0x22, 0x84, 0x60, 0x31, 0x16, 0xce, 0x53, 0x08, 0x8f,
0x12, 0x5e, 0x85, 0x74, 0x9f, 0x5e, 0xde, 0x54, 0xce, 0x4c, 0x65, 0x9e, 0x3a, 0xa9, 0xdf, 0x3f,
0x5d, 0x29, 0xb8, 0xfe, 0xda, 0xba, 0x65, 0x93, 0x2d, 0xd7, 0x24, 0x98, 0x11, 0xd0, 0xfb, 0x44,
0x1a, 0x0f, 0x71, 0xe3, 0x89, 0xa6, 0xfa, 0x67, 0x09, 0x48, 0x53, 0x43, 0x8d, 0x5e, 0x80, 0x74,
0xa5, 0xd1, 0xac, 0x29, 0x53, 0xa5, 0x2b, 0xc7, 0x27, 0xab, 0x33, 0x4c, 0x5b, 0x14, 0x41, 0x0f,
0x3c, 0x5a, 0x81, 0xec, 0xc3, 0xd6, 0xe6, 0xf6, 0x16, 0xdd, 0x79, 0xf3, 0xc7, 0x27, 0xab, 0x73,
0x21, 0x9a, 0xeb, 0x13, 0xbd, 0x08, 0x99, 0xee, 0x56, 0x7b, 0xbd, 0xa3, 0x24, 0x4b, 0xe8, 0xf8,
0x64, 0x75, 0x36, 0xc4, 0xb3, 0xe9, 0xa0, 0x97, 0x20, 0xd3, 0x6c, 0x37, 0xda, 0x75, 0x25, 0x55,
0x5a, 0x3c, 0x3e, 0x59, 0x45, 0x21, 0x9a, 0x05, 0xbb, 0x6d, 0x6b, 0x40, 0xd0, 0x4b, 0x30, 0x5d,
0xdd, 0xdc, 0xee, 0x74, 0xeb, 0x58, 0x49, 0x97, 0x16, 0x8e, 0x4f, 0x56, 0x95, 0x90, 0xa8, 0x6a,
0x0f, 0xfd, 0x80, 0x78, 0xa5, 0x2b, 0x62, 0xdb, 0xe4, 0x43, 0x8c, 0xfa, 0x9d, 0x04, 0x14, 0x62,
0x26, 0x9d, 0xee, 0xfc, 0x5a, 0x7d, 0xbd, 0xbc, 0xbd, 0xd9, 0x55, 0xa6, 0x62, 0x3b, 0x3f, 0x46,
0x52, 0x23, 0xbb, 0xfa, 0xd0, 0xa6, 0x57, 0x0c, 0x54, 0x5b, 0xcd, 0x4e, 0xa3, 0xd3, 0xad, 0x37,
0xbb, 0x4a, 0xa2, 0xb4, 0x74, 0x7c, 0xb2, 0xba, 0x30, 0x4e, 0xbc, 0x3e, 0xb4, 0x6d, 0xba, 0xf7,
0xab, 0xe5, 0xea, 0x06, 0x3b, 0x4c, 0xd1, 0xde, 0x8f, 0x51, 0x55, 0x75, 0x63, 0x8f, 0x98, 0xe8,
0x75, 0xc8, 0xd7, 0xea, 0x9b, 0xf5, 0xfb, 0x65, 0x76, 0xb1, 0x96, 0x5e, 0x3c, 0x3e, 0x59, 0xbd,
0xfa, 0x64, 0xef, 0x36, 0xe9, 0xe9, 0x01, 0x31, 0xc7, 0xce, 0x40, 0x8c, 0x44, 0xfd, 0xcf, 0x24,
0xcc, 0x60, 0xe2, 0x07, 0xba, 0x17, 0xb4, 0x5d, 0xdb, 0x32, 0x8e, 0x50, 0x1b, 0xf2, 0x86, 0xeb,
0x98, 0x56, 0xcc, 0x44, 0xdf, 0x39, 0xc7, 0x95, 0x8f, 0xb8, 0x64, 0xab, 0x2a, 0x39, 0x71, 0x24,
0x04, 0xdd, 0x82, 0x8c, 0x49, 0x6c, 0xfd, 0x48, 0xc4, 0x14, 0x57, 0x9f, 0x88, 0x29, 0x6b, 0x22,
0x9d, 0x85, 0x39, 0x1d, 0x8b, 0xe0, 0xf5, 0xc7, 0x9a, 0x1e, 0x04, 0xa4, 0x3f, 0x08, 0xf8, 0x36,
0x4a, 0xe3, 0x42, 0x5f, 0x7f, 0x5c, 0x16, 0x20, 0xf4, 0x06, 0x64, 0x0f, 0x2d, 0xc7, 0x74, 0x0f,
0x85, 0x73, 0x78, 0x81, 0x50, 0x41, 0xa8, 0x1e, 0x53, 0x6f, 0x70, 0x6c, 0x98, 0x74, 0x27, 0x36,
0x5b, 0xcd, 0xba, 0xdc, 0x89, 0x02, 0xdf, 0x72, 0x9a, 0xae, 0x43, 0x0d, 0x0c, 0xb4, 0x9a, 0xda,
0x7a, 0xb9, 0xb1, 0xb9, 0x8d, 0xe9, 0x6e, 0x64, 0x3b, 0x25, 0x24, 0x59, 0xd7, 0x2d, 0x9b, 0x06,
0xb1, 0x57, 0x21, 0x55, 0x6e, 0x7e, 0xa8, 0x24, 0x4b, 0xca, 0xf1, 0xc9, 0x6a, 0x31, 0x44, 0x97,
0x9d, 0xa3, 0x48, 0xef, 0xe3, 0xfd, 0xaa, 0x7f, 0x9d, 0x82, 0xe2, 0xf6, 0xc0, 0xd4, 0x03, 0xc2,
0x0f, 0x32, 0x5a, 0x85, 0xc2, 0x40, 0xf7, 0x74, 0xdb, 0x26, 0xb6, 0xe5, 0xf7, 0x45, 0x22, 0x2e,
0x0e, 0x42, 0xef, 0x3c, 0xad, 0x1a, 0x2b, 0x39, 0x7a, 0x38, 0xbf, 0xf1, 0x4f, 0x2b, 0x09, 0xa9,
0xd0, 0x6d, 0x98, 0xdd, 0xe5, 0xa3, 0xd5, 0x74, 0x83, 0x2d, 0x6c, 0x8a, 0x2d, 0xec, 0xda, 0xa4,
0x85, 0x8d, 0x0f, 0x6b, 0x4d, 0x4c, 0xb2, 0xcc, 0xb8, 0xf0, 0xcc, 0x6e, 0xbc, 0x89, 0xde, 0x84,
0xe9, 0xbe, 0xeb, 0x58, 0x81, 0xeb, 0x5d, 0xbe, 0x0a, 0x92, 0x12, 0xdd, 0x04, 0xea, 0xf8, 0x6b,
0x72, 0x3c, 0x0c, 0xcd, 0x2e, 0xb9, 0x24, 0x9e, 0xeb, 0xeb, 0x8f, 0x45, 0x87, 0x98, 0x82, 0x51,
0x05, 0x32, 0xae, 0x47, 0x5d, 0xf5, 0x2c, 0x1b, 0xee, 0xeb, 0x97, 0x0e, 0x97, 0x37, 0x5a, 0x94,
0x07, 0x73, 0x56, 0xf5, 0x6d, 0x98, 0x19, 0x99, 0x04, 0xf5, 0x50, 0xdb, 0xe5, 0xed, 0x4e, 0x5d,
0x99, 0x42, 0x45, 0xc8, 0x55, 0x5b, 0xcd, 0x6e, 0xa3, 0xb9, 0x4d, 0x5d, 0xec, 0x22, 0xe4, 0x70,
0x6b, 0x73, 0xb3, 0x52, 0xae, 0x3e, 0x50, 0x92, 0xea, 0x1a, 0x14, 0x62, 0xd2, 0xd0, 0x2c, 0x40,
0xa7, 0xdb, 0x6a, 0x6b, 0xeb, 0x0d, 0xdc, 0xe9, 0x72, 0x07, 0xbd, 0xd3, 0x2d, 0xe3, 0xae, 0x00,
0x24, 0xd4, 0x7f, 0x4f, 0xca, 0x15, 0x15, 0x3e, 0x79, 0x65, 0xd4, 0x27, 0xbf, 0x60, 0xf0, 0xc2,
0x2b, 0x8f, 0x1a, 0xa1, 0x6f, 0xfe, 0x0e, 0x00, 0xdb, 0x38, 0xc4, 0xd4, 0xf4, 0x40, 0x2c, 0x7c,
0xe9, 0x09, 0x25, 0x77, 0x65, 0xbe, 0x18, 0xe7, 0x05, 0x75, 0x39, 0x40, 0xef, 0x43, 0xd1, 0x70,
0xfb, 0x03, 0x9b, 0x08, 0xe6, 0xd4, 0xa5, 0xcc, 0x85, 0x90, 0xbe, 0x1c, 0xc4, 0xa3, 0x82, 0xf4,
0x68, 0xdc, 0xf2, 0x73, 0x09, 0xa9, 0x99, 0x09, 0x81, 0x40, 0x11, 0x72, 0xdb, 0xed, 0x5a, 0xb9,
0xdb, 0x68, 0xde, 0x57, 0x12, 0x08, 0x20, 0xcb, 0x54, 0x5d, 0x53, 0x92, 0x34, 0x80, 0xa9, 0xb6,
0xb6, 0xda, 0x9b, 0x75, 0x66, 0xb1, 0xd0, 0x02, 0x28, 0x52, 0xd9, 0x1a, 0x53, 0x64, 0xbd, 0xa6,
0xa4, 0xd1, 0x3c, 0xcc, 0x85, 0x50, 0xc1, 0x99, 0x41, 0x8b, 0x80, 0x42, 0x60, 0x24, 0x22, 0xab,
0xfe, 0x0c, 0xcc, 0x55, 0x5d, 0x27, 0xd0, 0x2d, 0x27, 0x0c, 0xee, 0xee, 0xd0, 0x49, 0x0b, 0x10,
0x8d, 0x4d, 0xd9, 0x45, 0x58, 0x99, 0x3b, 0x3b, 0x5d, 0x29, 0x84, 0xa4, 0x8d, 0x1a, 0x73, 0xc6,
0x45, 0xc3, 0xa4, 0xe7, 0x77, 0x20, 0xc2, 0xd8, 0x4c, 0x65, 0xfa, 0xec, 0x74, 0x25, 0xd5, 0x6e,
0xd4, 0x30, 0x85, 0xa1, 0x17, 0x20, 0x4f, 0x1e, 0x5b, 0x81, 0x66, 0xc8, 0xa8, 0x35, 0x83, 0x73,
0x14, 0x50, 0x75, 0x4d, 0xa2, 0x56, 0x00, 0xda, 0xae, 0x17, 0x88, 0x9e, 0xdf, 0x82, 0xcc, 0xc0,
0xf5, 0x58, 0xe6, 0xef, 0xdc, 0x7c, 0x34, 0x25, 0xe7, 0x1b, 0x15, 0x73, 0x62, 0xf5, 0xd7, 0x53,
0x00, 0x5d, 0xdd, 0xdf, 0x17, 0x42, 0xee, 0x42, 0x3e, 0xcc, 0xfd, 0x8b, 0x14, 0xe2, 0x85, 0xab,
0x1d, 0x12, 0xa3, 0x37, 0xe5, 0x66, 0xe3, 0x61, 0xeb, 0xc4, 0xe4, 0x8b, 0xec, 0x68, 0x52, 0xe4,
0x37, 0x1a, 0x9b, 0x52, 0x3f, 0x82, 0x78, 0x9e, 0x58, 0x79, 0xfa, 0x89, 0xaa, 0xec, 0x5a, 0xe0,
0x4a, 0x13, 0xf1, 0xca, 0xc4, 0xa4, 0xe9, 0xd8, 0x8a, 0x6c, 0x4c, 0xe1, 0x88, 0x0f, 0x7d, 0x00,
0x05, 0x3a, 0x6f, 0xcd, 0x67, 0x38, 0x11, 0xaa, 0x9c, 0xab, 0x2a, 0x2e, 0x01, 0xc3, 0x20, 0xd2,
0xf2, 0x8b, 0x00, 0xfa, 0x60, 0x60, 0x5b, 0xc4, 0xd4, 0x76, 0x8e, 0x58, 0x6c, 0x92, 0xc7, 0x79,
0x01, 0xa9, 0x1c, 0xd1, 0xe3, 0x22, 0xd1, 0x7a, 0xc0, 0xe2, 0xb3, 0x4b, 0x14, 0x28, 0xa8, 0xcb,
0x41, 0x45, 0x81, 0x59, 0x6f, 0xe8, 0x50, 0x85, 0x8a, 0xd1, 0xa9, 0x7f, 0x90, 0x84, 0xe7, 0x9b,
0x24, 0x38, 0x74, 0xbd, 0xfd, 0x72, 0x10, 0xe8, 0xc6, 0x5e, 0x9f, 0x38, 0x62, 0xf9, 0x62, 0xb1,
0x64, 0x62, 0x24, 0x96, 0x5c, 0x82, 0x69, 0xdd, 0xb6, 0x74, 0x9f, 0x70, 0xef, 0x30, 0x8f, 0x65,
0x93, 0x46, 0xbc, 0x34, 0x7e, 0x26, 0xbe, 0x4f, 0x78, 0x3e, 0x90, 0x0e, 0x5c, 0x02, 0xd0, 0xd7,
0x60, 0x51, 0xf8, 0x81, 0x7a, 0xd8, 0x15, 0x0d, 0xc1, 0xe4, 0xf3, 0x46, 0x7d, 0x62, 0x40, 0x3f,
0x79, 0x70, 0xc2, 0x51, 0x8c, 0xc0, 0xad, 0x41, 0x20, 0xdc, 0xce, 0x05, 0x73, 0x02, 0xaa, 0x74,
0x1f, 0xae, 0x9e, 0xcb, 0xf2, 0x4c, 0xf9, 0xc6, 0xef, 0x26, 0x01, 0x1a, 0xed, 0xf2, 0x96, 0x50,
0x52, 0x0d, 0xb2, 0xbb, 0x7a, 0xdf, 0xb2, 0x8f, 0x2e, 0xb2, 0x80, 0x11, 0xfd, 0x5a, 0x99, 0xab,
0x63, 0x9d, 0xf1, 0x60, 0xc1, 0xcb, 0xc2, 0xf9, 0xe1, 0x8e, 0x43, 0x82, 0x30, 0x9c, 0x67, 0x2d,
0x3a, 0x0c, 0x4f, 0x77, 0xc2, 0xad, 0xcb, 0x1b, 0x74, 0x01, 0xa8, 0xcb, 0x73, 0xa8, 0x1f, 0x49,
0xb3, 0x25, 0x9a, 0x68, 0x83, 0xbd, 0x2d, 0x10, 0xef, 0x80, 0x98, 0x4b, 0x19, 0xa6, 0xd4, 0xcb,
0xc6, 0x83, 0x05, 0x39, 0xd7, 0x5d, 0xc8, 0x5d, 0x7a, 0x8f, 0xb9, 0x4c, 0x11, 0xea, 0x99, 0x74,
0x74, 0x1b, 0x66, 0x46, 0xe6, 0xf9, 0x44, 0x1e, 0xa5, 0xd1, 0x7e, 0xf8, 0x96, 0x92, 0x16, 0x5f,
0x6f, 0x2b, 0x59, 0xf5, 0x2f, 0x53, 0xdc, 0xd0, 0x08, 0xad, 0x4e, 0x7e, 0x53, 0xcb, 0xb1, 0xdd,
0x6d, 0xb8, 0xb6, 0x30, 0x00, 0xaf, 0x5e, 0x6c, 0x7f, 0x68, 0x38, 0xcd, 0xc8, 0x71, 0xc8, 0x88,
0x56, 0xa0, 0xc0, 0x77, 0xb1, 0x46, 0x0f, 0x1c, 0x53, 0xeb, 0x0c, 0x06, 0x0e, 0xa2, 0x9c, 0xe8,
0x3a, 0xcc, 0xb2, 0x6c, 0xa2, 0xbf, 0x47, 0x4c, 0x4e, 0x93, 0x66, 0x34, 0x33, 0x21, 0x94, 0x91,
0x6d, 0x41, 0x51, 0x00, 0x34, 0x16, 0x30, 0x64, 0xd8, 0x80, 0x6e, 0x5e, 0x36, 0x20, 0xce, 0xc2,
0xe2, 0x88, 0xc2, 0x20, 0x6a, 0xa8, 0x3f, 0x01, 0x39, 0x39, 0x58, 0xb4, 0x04, 0xa9, 0x6e, 0xb5,
0xad, 0x4c, 0x95, 0xe6, 0x8e, 0x4f, 0x56, 0x0b, 0x12, 0xdc, 0xad, 0xb6, 0x29, 0x66, 0xbb, 0xd6,
0x56, 0x12, 0xa3, 0x98, 0xed, 0x5a, 0x1b, 0x95, 0x20, 0xdd, 0xa9, 0x76, 0xdb, 0xd2, 0x3f, 0x93,
0x28, 0x0a, 0x2b, 0xa5, 0xa9, 0x7f, 0xa6, 0xee, 0x42, 0x21, 0xd6, 0x3b, 0x7a, 0x19, 0xa6, 0x1b,
0xcd, 0xfb, 0xb8, 0xde, 0xe9, 0x28, 0x53, 0x3c, 0x82, 0x88, 0x61, 0x1b, 0x4e, 0x8f, 0xae, 0x1d,
0x7a, 0x11, 0xd2, 0x1b, 0x2d, 0x7a, 0xef, 0xf3, 0x10, 0x25, 0x46, 0xb1, 0xe1, 0xfa, 0x41, 0x69,
0x5e, 0x38, 0x7e, 0x71, 0xc1, 0xea, 0x6f, 0x24, 0x20, 0xcb, 0x0f, 0xda, 0xc4, 0x45, 0x2c, 0x47,
0x71, 0x13, 0x8f, 0x2c, 0x5f, 0x3d, 0x3f, 0x0a, 0x5c, 0x13, 0x41, 0x1b, 0xdf, 0x9a, 0x92, 0xaf,
0xf4, 0x2e, 0x14, 0xe3, 0x88, 0x67, 0xda, 0x98, 0x5f, 0x83, 0x02, 0xdd, 0xfb, 0x32, 0x1a, 0xbc,
0x03, 0x59, 0x6e, 0x2c, 0xc2, 0x7b, 0xe8, 0xfc, 0x90, 0x54, 0x50, 0xa2, 0xbb, 0x30, 0xcd, 0xc3,
0x58, 0xf9, 0xe2, 0xb1, 0x7c, 0xf1, 0x09, 0xc3, 0x92, 0x5c, 0xfd, 0x00, 0xd2, 0x6d, 0x42, 0xbc,
0x78, 0x5a, 0x39, 0x71, 0x6e, 0x5a, 0x59, 0xa6, 0x25, 0x93, 0xb1, 0xb4, 0x64, 0x17, 0x8a, 0x8f,
0x88, 0xd5, 0xdb, 0x0b, 0x88, 0xc9, 0x04, 0xbd, 0x0e, 0xe9, 0x01, 0x09, 0x07, 0xbf, 0x34, 0x71,
0xf3, 0x11, 0xe2, 0x61, 0x46, 0x45, 0x6d, 0xcc, 0x21, 0xe3, 0x16, 0x8f, 0x85, 0xa2, 0xa5, 0xfe,
0x4d, 0x12, 0x66, 0x1b, 0xbe, 0x3f, 0xd4, 0x1d, 0x43, 0x7a, 0x75, 0x5f, 0x1c, 0xf5, 0xea, 0x26,
0xbe, 0xaa, 0x8e, 0xb2, 0x8c, 0x66, 0x5b, 0xc5, 0xcd, 0x9a, 0x0c, 0x6f, 0x56, 0xf5, 0xdf, 0x12,
0x32, 0xa5, 0x7a, 0x3d, 0x66, 0x0a, 0x78, 0x8c, 0x18, 0x97, 0x44, 0xb6, 0x9d, 0x7d, 0xc7, 0x3d,
0x74, 0x68, 0x80, 0x8b, 0xeb, 0xcd, 0xfa, 0x23, 0x25, 0xc1, 0xb7, 0xe7, 0x08, 0x11, 0x26, 0x0e,
0x39, 0xa4, 0x92, 0xda, 0xf5, 0x66, 0x8d, 0x7a, 0x61, 0xc9, 0x09, 0x92, 0xda, 0xc4, 0x31, 0x2d,
0xa7, 0x87, 0x5e, 0x86, 0x6c, 0xa3, 0xd3, 0xd9, 0x66, 0x21, 0xe4, 0xf3, 0xc7, 0x27, 0xab, 0xf3,
0x23, 0x54, 0xec, 0x91, 0xc0, 0xa4, 0x44, 0x34, 0x04, 0xa2, 0xfe, 0xd9, 0x04, 0x22, 0xea, 0x5b,
0x73, 0x22, 0xdc, 0xea, 0x96, 0xbb, 0x75, 0x25, 0x33, 0x81, 0x08, 0xbb, 0xf4, 0xaf, 0x38, 0x6e,
0xff, 0x90, 0x04, 0xa5, 0x6c, 0x18, 0x64, 0x10, 0x50, 0xbc, 0x88, 0x3a, 0xbb, 0x90, 0x1b, 0xd0,
0x2f, 0x8b, 0x48, 0x0f, 0xea, 0xee, 0xc4, 0xba, 0x80, 0x31, 0xbe, 0x35, 0xec, 0xda, 0xa4, 0x6c,
0xf6, 0x2d, 0xdf, 0xb7, 0x5c, 0x87, 0xc3, 0x70, 0x28, 0xa9, 0xf4, 0x1f, 0x09, 0x98, 0x9f, 0x40,
0x81, 0x6e, 0x43, 0xda, 0x73, 0x6d, 0xb9, 0x86, 0xd7, 0xce, 0xcb, 0x96, 0x53, 0x56, 0xcc, 0x28,
0xd1, 0x32, 0x80, 0x3e, 0x0c, 0x5c, 0x9d, 0xf5, 0xcf, 0x73, 0x8c, 0x38, 0x06, 0x41, 0x8f, 0x20,
0xeb, 0x13, 0xc3, 0x23, 0xd2, 0xcf, 0xfe, 0xe0, 0x47, 0x1d, 0xfd, 0x5a, 0x87, 0x89, 0xc1, 0x42,
0x5c, 0x69, 0x0d, 0xb2, 0x1c, 0x42, 0xb7, 0xbd, 0xa9, 0x07, 0xba, 0x78, 0x21, 0x62, 0xdf, 0x74,
0x37, 0xe9, 0x76, 0x4f, 0xee, 0x26, 0xdd, 0xee, 0xa9, 0x7f, 0x91, 0x04, 0xa8, 0x3f, 0x0e, 0x88,
0xe7, 0xe8, 0x76, 0xb5, 0x8c, 0xea, 0xb1, 0x9b, 0x81, 0xcf, 0xf6, 0xb5, 0x89, 0xaf, 0x6b, 0x21,
0xc7, 0x5a, 0xb5, 0x3c, 0xe1, 0x6e, 0xb8, 0x0a, 0xa9, 0xa1, 0x27, 0x4a, 0x3d, 0xb8, 0x8f, 0xbc,
0x8d, 0x37, 0x31, 0x85, 0xa1, 0x7a, 0x3c, 0xdd, 0x73, 0x6e, 0x41, 0x47, 0xac, 0x83, 0x89, 0xa6,
0x8b, 0x9e, 0x7c, 0x43, 0xd7, 0x0c, 0x22, 0x6e, 0x95, 0x22, 0x3f, 0xf9, 0xd5, 0x72, 0x95, 0x78,
0x01, 0xce, 0x1a, 0x3a, 0xfd, 0xff, 0xa9, 0xec, 0xdb, 0xeb, 0x00, 0xd1, 0xd4, 0xd0, 0x32, 0x64,
0xaa, 0xeb, 0x9d, 0xce, 0xa6, 0x32, 0xc5, 0x0d, 0x78, 0x84, 0x62, 0x60, 0xf5, 0x4f, 0x92, 0x90,
0xab, 0x96, 0xc5, 0x95, 0x5b, 0x05, 0x85, 0x59, 0x25, 0xf6, 0xae, 0x46, 0x1e, 0x0f, 0x2c, 0xef,
0x48, 0x18, 0x96, 0x0b, 0x02, 0xde, 0x59, 0xca, 0x42, 0x47, 0x5d, 0x67, 0x0c, 0x08, 0x43, 0x91,
0x08, 0x25, 0x68, 0x86, 0x2e, 0x6d, 0xfc, 0xf2, 0xc5, 0xca, 0xe2, 0xa1, 0x4b, 0xd4, 0xf6, 0x71,
0x41, 0x0a, 0xa9, 0xea, 0x3e, 0x7a, 0x07, 0xe6, 0x7c, 0xab, 0xe7, 0x58, 0x4e, 0x4f, 0x93, 0xca,
0x63, 0x8f, 0x7c, 0x95, 0x2b, 0x67, 0xa7, 0x2b, 0x33, 0x1d, 0x8e, 0x12, 0x3a, 0x9c, 0x11, 0x94,
0x55, 0xa6, 0x4a, 0xf4, 0x36, 0xcc, 0xc6, 0x58, 0xa9, 0x16, 0xb9, 0xda, 0x59, 0xe2, 0x3c, 0xe4,
0x7c, 0x40, 0x8e, 0x70, 0x31, 0x64, 0x7c, 0x40, 0x58, 0x6e, 0x86, 0xa5, 0x99, 0x35, 0x8f, 0x9d,
0x69, 0x76, 0xbb, 0xa7, 0x71, 0x81, 0xc1, 0xf8, 0x31, 0x57, 0x1f, 0xc2, 0x7c, 0xcb, 0x33, 0xf6,
0x88, 0x1f, 0x70, 0x55, 0x08, 0x2d, 0x7e, 0x00, 0xd7, 0x02, 0xdd, 0xdf, 0xd7, 0xf6, 0x2c, 0x3f,
0x70, 0xbd, 0x23, 0xcd, 0x23, 0x01, 0x71, 0x28, 0x5e, 0x63, 0x65, 0x10, 0x22, 0xe3, 0x78, 0x95,
0xd2, 0x6c, 0x70, 0x12, 0x2c, 0x29, 0x36, 0x29, 0x81, 0xda, 0x80, 0x22, 0x0d, 0x61, 0x44, 0x52,
0x8d, 0xce, 0x1e, 0x6c, 0xb7, 0xa7, 0x3d, 0xf5, 0x35, 0x95, 0xb7, 0xdd, 0x1e, 0xff, 0x54, 0xbf,
0x0c, 0x4a, 0xcd, 0xf2, 0x07, 0x7a, 0x60, 0xec, 0xc9, 0x54, 0x2a, 0xaa, 0x81, 0xb2, 0x47, 0x74,
0x2f, 0xd8, 0x21, 0x7a, 0xa0, 0x0d, 0x88, 0x67, 0xb9, 0xe6, 0xe5, 0xab, 0x3c, 0x17, 0xb2, 0xb4,
0x19, 0x87, 0xfa, 0x5f, 0x09, 0x00, 0xac, 0xef, 0x4a, 0x6f, 0xed, 0xb3, 0x70, 0xc5, 0x77, 0xf4,
0x81, 0xbf, 0xe7, 0x06, 0x9a, 0xe5, 0x04, 0xc4, 0x3b, 0xd0, 0x6d, 0x91, 0xdc, 0x51, 0x24, 0xa2,
0x21, 0xe0, 0xe8, 0x75, 0x40, 0xfb, 0x84, 0x0c, 0x34, 0xd7, 0x36, 0x35, 0x89, 0xe4, 0xe5, 0x11,
0x69, 0xac, 0x50, 0x4c, 0xcb, 0x36, 0x3b, 0x12, 0x8e, 0x2a, 0xb0, 0x4c, 0xa7, 0x4f, 0x9c, 0xc0,
0xb3, 0x88, 0xaf, 0xed, 0xba, 0x9e, 0xe6, 0xdb, 0xee, 0xa1, 0xb6, 0xeb, 0xda, 0xb6, 0x7b, 0x48,
0x3c, 0x99, 0x37, 0x2b, 0xd9, 0x6e, 0xaf, 0xce, 0x89, 0xd6, 0x5d, 0xaf, 0x63, 0xbb, 0x87, 0xeb,
0x92, 0x82, 0xba, 0x74, 0xd1, 0x9c, 0x03, 0xcb, 0xd8, 0x97, 0x2e, 0x5d, 0x08, 0xed, 0x5a, 0xc6,
0x3e, 0x7a, 0x19, 0x66, 0x88, 0x4d, 0x58, 0xfa, 0x84, 0x53, 0x65, 0x18, 0x55, 0x51, 0x02, 0x29,
0x91, 0x7a, 0x0f, 0x94, 0xba, 0x63, 0x78, 0x47, 0x83, 0xd8, 0x9a, 0xbf, 0x0e, 0x88, 0x1a, 0x49,
0xcd, 0x76, 0x8d, 0x7d, 0xad, 0xaf, 0x3b, 0x7a, 0x8f, 0x8e, 0x8b, 0x3f, 0xbc, 0x2a, 0x14, 0xb3,
0xe9, 0x1a, 0xfb, 0x5b, 0x02, 0xae, 0xbe, 0x03, 0xd0, 0x19, 0x78, 0x44, 0x37, 0x5b, 0xd4, 0x9b,
0xa0, 0xaa, 0x63, 0x2d, 0xcd, 0x14, 0xaf, 0xfe, 0xae, 0x27, 0x8e, 0xba, 0xc2, 0x11, 0xb5, 0x10,
0xae, 0xfe, 0x7f, 0x98, 0x6f, 0xdb, 0xba, 0xc1, 0xea, 0x70, 0xda, 0xe1, 0x4b, 0x22, 0xba, 0x0b,
0x59, 0x4e, 0x2a, 0x56, 0x72, 0xe2, 0x71, 0x8b, 0xfa, 0xdc, 0x98, 0xc2, 0x82, 0xbe, 0x52, 0x04,
0x88, 0xe4, 0xa8, 0x7f, 0x9f, 0x80, 0x7c, 0x28, 0x1f, 0xad, 0xf2, 0x77, 0xc0, 0xc0, 0xd3, 0x2d,
0x47, 0x44, 0xfc, 0x79, 0x1c, 0x07, 0xa1, 0x06, 0x14, 0x06, 0x21, 0xf7, 0x85, 0xfe, 0xdc, 0x84,
0x51, 0xe3, 0x38, 0x2f, 0x7a, 0x17, 0xf2, 0xb2, 0xcc, 0x42, 0x5a, 0xd8, 0x8b, 0xab, 0x32, 0x22,
0x72, 0x99, 0x48, 0xf5, 0xc8, 0xc0, 0xb6, 0xa8, 0xcd, 0x49, 0x87, 0x89, 0x54, 0x2c, 0x40, 0xea,
0x17, 0x01, 0xbe, 0xe4, 0x5a, 0x4e, 0xd7, 0xdd, 0x27, 0x0e, 0x7b, 0x1c, 0xa7, 0x21, 0x25, 0x91,
0x8a, 0x16, 0x2d, 0x96, 0x29, 0xe0, 0xab, 0x14, 0xbe, 0x11, 0xf3, 0xa6, 0xfa, 0xe7, 0x49, 0xc8,
0x62, 0xd7, 0x0d, 0xaa, 0x65, 0xb4, 0x0a, 0x59, 0x61, 0x4a, 0xd8, 0x15, 0x55, 0xc9, 0x9f, 0x9d,
0xae, 0x64, 0xb8, 0x0d, 0xc9, 0x18, 0xcc, 0x78, 0xc4, 0x8c, 0x7c, 0xf2, 0x3c, 0x23, 0x8f, 0x6e,
0x43, 0x51, 0x10, 0x69, 0x7b, 0xba, 0xbf, 0xc7, 0xe3, 0xbb, 0xca, 0xec, 0xd9, 0xe9, 0x0a, 0x70,
0xca, 0x0d, 0xdd, 0xdf, 0xc3, 0xc0, 0xa9, 0xe9, 0x37, 0xaa, 0x43, 0xe1, 0x23, 0xd7, 0x72, 0xb4,
0x80, 0x4d, 0x42, 0xe4, 0x22, 0x27, 0x2e, 0x75, 0x34, 0x55, 0x51, 0x66, 0x03, 0x1f, 0x45, 0x93,
0xaf, 0xc3, 0x8c, 0xe7, 0xba, 0x01, 0xb7, 0x6c, 0x96, 0xeb, 0x88, 0x34, 0xc7, 0xea, 0xc4, 0xec,
0xb7, 0xeb, 0x06, 0x58, 0xd0, 0xe1, 0xa2, 0x17, 0x6b, 0xa1, 0xdb, 0xb0, 0x60, 0xeb, 0x7e, 0xa0,
0x31, 0x93, 0x68, 0x46, 0xd2, 0xb2, 0x4c, 0xf9, 0x88, 0xe2, 0xd8, 0x03, 0x9e, 0x29, 0x39, 0xd4,
0xbf, 0x4b, 0x40, 0x81, 0x4e, 0xc6, 0xda, 0xb5, 0x0c, 0xea, 0x07, 0x3e, 0xbb, 0x7b, 0x72, 0x15,
0x52, 0x86, 0xef, 0x09, 0xa5, 0xb2, 0xfb, 0xb9, 0xda, 0xc1, 0x98, 0xc2, 0xd0, 0x3d, 0xc8, 0x8a,
0x74, 0x0b, 0xf7, 0x4c, 0xd4, 0xcb, 0x3d, 0x56, 0xa1, 0x1b, 0xc1, 0xc7, 0xb6, 0x7b, 0x34, 0x3a,
0x7e, 0x4f, 0xe0, 0x38, 0x08, 0x2d, 0x42, 0xd2, 0xe0, 0xea, 0x12, 0x75, 0x5c, 0xd5, 0x26, 0x4e,
0x1a, 0x8e, 0xfa, 0x9d, 0x04, 0xcc, 0x44, 0x36, 0x81, 0xee, 0x80, 0x6b, 0x90, 0xf7, 0x87, 0x3b,
0xfe, 0x91, 0x1f, 0x90, 0xbe, 0x7c, 0xf8, 0x0f, 0x01, 0xa8, 0x01, 0x79, 0xdd, 0xee, 0xb9, 0x9e,
0x15, 0xec, 0xf5, 0x45, 0x20, 0x3b, 0xd9, 0x9b, 0x88, 0xcb, 0x5c, 0x2b, 0x4b, 0x16, 0x1c, 0x71,
0x4b, 0xd7, 0x80, 0xd7, 0xbc, 0x30, 0xd7, 0xe0, 0x25, 0x28, 0xda, 0x7a, 0x9f, 0xe5, 0x9f, 0x02,
0xab, 0x4f, 0xe4, 0x61, 0x10, 0xb0, 0xae, 0xd5, 0x27, 0xaa, 0x0a, 0xf9, 0x50, 0x18, 0x9a, 0x83,
0x42, 0xb9, 0xde, 0xd1, 0xde, 0xb8, 0x73, 0x57, 0xbb, 0x5f, 0xdd, 0x52, 0xa6, 0x84, 0xfb, 0xfa,
0x47, 0x09, 0x98, 0x11, 0x16, 0x4b, 0x84, 0x04, 0x2f, 0xc3, 0xb4, 0xa7, 0xef, 0x06, 0x32, 0x68,
0x49, 0xf3, 0x5d, 0x4d, 0x2f, 0x01, 0x1a, 0xb4, 0x50, 0xd4, 0xe4, 0xa0, 0x25, 0x56, 0x8a, 0x92,
0xba, 0xb0, 0x14, 0x25, 0xfd, 0x63, 0x29, 0x45, 0x51, 0x7f, 0x16, 0x60, 0xdd, 0xb2, 0x49, 0x97,
0xa7, 0xaa, 0x26, 0x85, 0xa0, 0xd4, 0xcd, 0x0b, 0x2b, 0x7a, 0xb8, 0x9b, 0xd7, 0xa8, 0x61, 0x0a,
0xa3, 0xa8, 0x9e, 0x65, 0x8a, 0xc3, 0xc8, 0x50, 0xf7, 0x29, 0xaa, 0x67, 0x99, 0xe1, 0xcb, 0x60,
0xfa, 0x92, 0x97, 0x41, 0x75, 0x0e, 0x66, 0x30, 0xcf, 0xb1, 0xf1, 0x31, 0xa8, 0x27, 0x09, 0x98,
0x13, 0xfe, 0x6e, 0x68, 0xb2, 0x5f, 0x83, 0x3c, 0x77, 0x7d, 0xa3, 0x20, 0x90, 0xd5, 0x63, 0x70,
0xba, 0x46, 0x0d, 0xe7, 0x38, 0xba, 0x61, 0xa2, 0x15, 0x28, 0x08, 0xd2, 0x58, 0x11, 0x20, 0x70,
0x10, 0xab, 0x52, 0x7a, 0x0b, 0xd2, 0xbb, 0x96, 0x4d, 0xc4, 0xce, 0x9f, 0x68, 0x11, 0x22, 0x8d,
0x6c, 0x4c, 0x61, 0x46, 0x5d, 0xc9, 0xc9, 0xe4, 0x9e, 0xfa, 0x8f, 0x09, 0x96, 0x62, 0xa6, 0xa1,
0x6a, 0x7c, 0x7c, 0x3c, 0x6a, 0x1d, 0x1b, 0x1f, 0xa7, 0xa3, 0xe3, 0xe3, 0x68, 0x3e, 0x3e, 0x41,
0x1a, 0x1f, 0x1f, 0x07, 0xfd, 0xe8, 0xe3, 0x43, 0xef, 0xc3, 0xb4, 0x48, 0x55, 0x0a, 0x53, 0xf7,
0xd2, 0xc4, 0x9d, 0x11, 0xd7, 0xf4, 0xc6, 0x14, 0x96, 0x3c, 0xb1, 0xe9, 0x6d, 0xc2, 0x62, 0xc5,
0xd6, 0x8d, 0x7d, 0xdb, 0xf2, 0x03, 0x62, 0xc6, 0x2d, 0xd0, 0x1d, 0xc8, 0x8e, 0xf8, 0xb9, 0x17,
0x25, 0x51, 0x05, 0xa5, 0xfa, 0x2f, 0x09, 0x28, 0x6e, 0x10, 0xdd, 0x0e, 0xf6, 0xa2, 0x4c, 0x55,
0x40, 0xfc, 0x40, 0xdc, 0x8f, 0xec, 0x1b, 0x7d, 0x1e, 0x72, 0xa1, 0x1b, 0x74, 0xe9, 0x73, 0x60,
0x48, 0x8a, 0xde, 0x84, 0x69, 0x3a, 0x76, 0x77, 0x28, 0xe3, 0xab, 0x8b, 0x5e, 0x9a, 0x04, 0x25,
0xbd, 0xb4, 0x3c, 0xc2, 0xfc, 0x1e, 0xa6, 0xa7, 0x0c, 0x96, 0x4d, 0xf4, 0x05, 0x28, 0xb2, 0x87,
0x12, 0xe9, 0xe6, 0x65, 0x2e, 0x93, 0x59, 0xe0, 0x6f, 0x9d, 0xdc, 0xc5, 0xfb, 0xfd, 0x24, 0x2c,
0x6c, 0xe9, 0x47, 0x3b, 0x44, 0x98, 0x21, 0x62, 0x62, 0x62, 0xb8, 0x9e, 0x89, 0xda, 0x71, 0xf3,
0x75, 0xc1, 0xd3, 0xe9, 0x24, 0xe6, 0xc9, 0x56, 0x4c, 0xc6, 0x7c, 0xc9, 0x58, 0xcc, 0xb7, 0x00,
0x19, 0xc7, 0x75, 0x0c, 0x22, 0x6c, 0x1b, 0x6f, 0xa8, 0x5f, 0x4f, 0xc4, 0x6d, 0x57, 0x29, 0x7c,
0xd6, 0x64, 0x49, 0xaf, 0xa6, 0x1b, 0x84, 0xdd, 0xa1, 0x7b, 0x50, 0xea, 0xd4, 0xab, 0xb8, 0xde,
0xad, 0xb4, 0xbe, 0xac, 0x75, 0xca, 0x9b, 0x9d, 0xf2, 0x9d, 0xdb, 0x5a, 0xbb, 0xb5, 0xf9, 0xe1,
0x1b, 0x6f, 0xde, 0xfe, 0xbc, 0x92, 0x28, 0xad, 0x1e, 0x9f, 0xac, 0x5e, 0x6b, 0x96, 0xab, 0x9b,
0xfc, 0xc4, 0xed, 0xb8, 0x8f, 0x3b, 0xba, 0xed, 0xeb, 0x77, 0x6e, 0xb7, 0x5d, 0xfb, 0x88, 0xd2,
0xa0, 0xcf, 0x02, 0x5a, 0xaf, 0xe3, 0x66, 0xbd, 0xab, 0x49, 0x03, 0x59, 0xad, 0x54, 0x95, 0x24,
0x8f, 0xa4, 0xd6, 0x89, 0xe7, 0x90, 0xa0, 0x5c, 0xef, 0xbc, 0x71, 0xe7, 0x6e, 0xb5, 0x52, 0xa5,
0x67, 0xbc, 0x18, 0xbf, 0x2d, 0xe3, 0x4e, 0x40, 0xe2, 0x5c, 0x27, 0x20, 0xf2, 0x25, 0x92, 0xe7,
0xf8, 0x12, 0xeb, 0xb0, 0x60, 0x78, 0xae, 0xef, 0x6b, 0x34, 0x3c, 0x21, 0xe6, 0x58, 0x00, 0xf4,
0xdc, 0xd9, 0xe9, 0xca, 0x95, 0x2a, 0xc5, 0x77, 0x18, 0x5a, 0x88, 0xbf, 0x62, 0xc4, 0x40, 0xac,
0x27, 0xf5, 0x8f, 0x53, 0xd4, 0xd3, 0xb3, 0x0e, 0x2c, 0x9b, 0xf4, 0x88, 0x8f, 0x1e, 0xc2, 0x9c,
0xe1, 0x11, 0x93, 0xc6, 0x1d, 0xba, 0x1d, 0xaf, 0x9f, 0xff, 0xdc, 0x44, 0xa7, 0x2b, 0x64, 0x5c,
0xab, 0x86, 0x5c, 0x9d, 0x01, 0x31, 0xf0, 0xac, 0x31, 0xd2, 0x46, 0x1f, 0xc1, 0x9c, 0x4f, 0x6c,
0xcb, 0x19, 0x3e, 0xd6, 0x0c, 0xd7, 0x09, 0xc8, 0x63, 0xf9, 0x9c, 0x77, 0x99, 0xdc, 0x4e, 0x7d,
0x93, 0x72, 0x55, 0x39, 0x53, 0x05, 0x9d, 0x9d, 0xae, 0xcc, 0x8e, 0xc2, 0xf0, 0xac, 0x90, 0x2c,
0xda, 0xa5, 0x3d, 0x98, 0x1d, 0x1d, 0x0d, 0x5a, 0x10, 0x86, 0x86, 0xd9, 0xab, 0xd0, 0x90, 0x5c,
0x83, 0x9c, 0x47, 0x7a, 0x96, 0x1f, 0x78, 0x5c, 0xcd, 0x14, 0x13, 0x42, 0xd0, 0x12, 0x64, 0x63,
0x45, 0x29, 0x14, 0x27, 0xda, 0xd4, 0x82, 0xf0, 0x9a, 0xba, 0xd2, 0x4f, 0xc3, 0xd8, 0x58, 0xe8,
0xa1, 0x33, 0x2d, 0x5f, 0xdf, 0x11, 0x9d, 0xe5, 0xb0, 0x6c, 0xd2, 0xbd, 0x3c, 0xf4, 0x43, 0x07,
0x92, 0x7d, 0x53, 0x18, 0xf3, 0x74, 0x44, 0x85, 0x21, 0xf3, 0x65, 0x64, 0x9d, 0x77, 0x3a, 0x56,
0xe7, 0xbd, 0x00, 0x19, 0x9b, 0x1c, 0x10, 0x9b, 0xfb, 0x18, 0x98, 0x37, 0xd8, 0x9e, 0xff, 0x92,
0xbb, 0x23, 0xae, 0xe1, 0x75, 0x98, 0xf9, 0xc8, 0xdd, 0xd1, 0xac, 0x80, 0x78, 0x51, 0x7d, 0x59,
0xe1, 0xce, 0x0b, 0x93, 0xf4, 0x2b, 0xca, 0xbd, 0x85, 0xa3, 0x53, 0xfc, 0xc8, 0xdd, 0x69, 0x48,
0x36, 0x54, 0x86, 0x59, 0xe6, 0xbf, 0x91, 0xc7, 0xc4, 0x18, 0x32, 0x41, 0x97, 0xbf, 0xbb, 0xce,
0x50, 0x8e, 0xba, 0x64, 0x50, 0xbf, 0x99, 0x01, 0x85, 0x17, 0xab, 0x94, 0x59, 0x55, 0x2a, 0xcb,
0x2b, 0xdf, 0x83, 0x8c, 0x6f, 0xb8, 0x61, 0x31, 0xe3, 0xc4, 0x84, 0xf8, 0x38, 0xd3, 0x5a, 0x87,
0x72, 0x60, 0xce, 0x88, 0xd6, 0x61, 0xda, 0xdf, 0xd3, 0x3d, 0xcb, 0xe9, 0x09, 0xe7, 0xe8, 0xf5,
0xa7, 0x93, 0xc1, 0x79, 0xb0, 0x64, 0x46, 0x1b, 0x90, 0xd9, 0xa1, 0x11, 0x99, 0xb0, 0xa5, 0xb7,
0x9f, 0x4a, 0x4a, 0x85, 0x72, 0x70, 0xe8, 0xc6, 0x14, 0xe6, 0x02, 0xa8, 0x24, 0x56, 0x12, 0x27,
0x2e, 0xa2, 0xa7, 0x93, 0xc4, 0x8a, 0x50, 0x22, 0x49, 0x4c, 0x40, 0x69, 0x06, 0x0a, 0xb1, 0x1e,
0x4a, 0xf7, 0xa1, 0x10, 0x23, 0x43, 0xcf, 0xc3, 0xf4, 0xae, 0xaf, 0xc5, 0xca, 0xff, 0xb3, 0xbb,
0x3e, 0xab, 0x24, 0x5a, 0x81, 0x02, 0xe3, 0xd7, 0x76, 0x6d, 0xbd, 0x27, 0x1f, 0xdd, 0x80, 0x81,
0xd6, 0x29, 0x44, 0x35, 0x20, 0xc3, 0x74, 0x88, 0x6e, 0x42, 0xa1, 0xd3, 0x68, 0xde, 0xdf, 0xac,
0x6b, 0xcd, 0x56, 0x8d, 0x5a, 0x46, 0x56, 0x33, 0xc6, 0xe5, 0x33, 0x8a, 0x8e, 0xe5, 0xf4, 0x6c,
0xc2, 0xea, 0x90, 0x6f, 0x00, 0x6c, 0x6d, 0x6f, 0x76, 0x1b, 0x9c, 0x54, 0xd4, 0xeb, 0xc4, 0x48,
0xb7, 0x86, 0x76, 0x60, 0x51, 0x4a, 0xe1, 0x13, 0xfe, 0x5e, 0x02, 0xa6, 0x85, 0x96, 0xd1, 0x4a,
0x68, 0x7a, 0x9f, 0x3b, 0x3e, 0x59, 0xbd, 0x22, 0xb8, 0x38, 0x92, 0x55, 0x95, 0xdc, 0x60, 0x95,
0xbc, 0x35, 0xad, 0xd5, 0xdc, 0xfc, 0x50, 0x49, 0x8c, 0x0c, 0x43, 0x2c, 0x94, 0x28, 0xf3, 0x43,
0x37, 0x01, 0x5a, 0xcd, 0xba, 0xf6, 0x08, 0x37, 0xba, 0x75, 0x2c, 0x0b, 0x82, 0x46, 0x48, 0x5b,
0x0e, 0x79, 0xe4, 0xd1, 0x1d, 0x8f, 0x5e, 0x84, 0x54, 0x79, 0x73, 0x53, 0x49, 0xf1, 0x22, 0x95,
0x11, 0xa2, 0xb2, 0x6d, 0xf3, 0x71, 0x56, 0x66, 0xa0, 0xc0, 0xcb, 0xa4, 0x99, 0x2a, 0xd5, 0xbb,
0x50, 0x14, 0x84, 0x3c, 0xc3, 0xf8, 0x64, 0x3a, 0x6d, 0x31, 0x4c, 0x6b, 0xca, 0xc7, 0x37, 0xd6,
0x52, 0x7f, 0x27, 0x05, 0xf3, 0x9c, 0x55, 0x3c, 0x70, 0x44, 0xae, 0xf0, 0xe5, 0xf9, 0xfb, 0xea,
0xe8, 0x5b, 0xf5, 0xe7, 0xce, 0xdf, 0x34, 0x23, 0xc2, 0x47, 0xf3, 0xe8, 0x26, 0xcc, 0xc9, 0x57,
0x26, 0x69, 0x4f, 0x79, 0x70, 0xfc, 0xde, 0xd3, 0x8a, 0x13, 0x2d, 0x61, 0xb8, 0x78, 0x3a, 0x52,
0x3e, 0x70, 0xc5, 0xac, 0x99, 0x7c, 0x21, 0xcf, 0x8c, 0xbc, 0x90, 0x97, 0xca, 0x30, 0x3f, 0x41,
0xc0, 0x33, 0x65, 0x24, 0xbf, 0x2a, 0xf3, 0xfe, 0xf3, 0x30, 0x27, 0xb2, 0xf5, 0x5a, 0x7b, 0xbb,
0xb2, 0xd9, 0xe8, 0x6c, 0x28, 0x53, 0x68, 0x06, 0xf2, 0xa2, 0x51, 0xaf, 0x29, 0x09, 0x54, 0x82,
0x45, 0x49, 0x43, 0x37, 0xa5, 0xb6, 0xdd, 0x94, 0xa4, 0x49, 0xf4, 0x1c, 0x5c, 0x91, 0xb8, 0x08,
0x9c, 0x52, 0xff, 0x2a, 0x09, 0xc0, 0x27, 0xce, 0x6a, 0xfa, 0xaf, 0xc3, 0xac, 0xa1, 0x0f, 0x74,
0xc3, 0x0a, 0x8e, 0x46, 0x6a, 0xfc, 0x66, 0x24, 0x94, 0xd7, 0xf9, 0x7d, 0x39, 0xac, 0x28, 0x8e,
0xee, 0xa9, 0x73, 0x7f, 0x09, 0x13, 0x89, 0x17, 0x9f, 0x23, 0xda, 0x14, 0xb5, 0xc5, 0x52, 0x99,
0xaf, 0x41, 0x5e, 0x48, 0x0e, 0x03, 0x09, 0xe6, 0x39, 0x0b, 0x21, 0x35, 0x9c, 0xe3, 0xe8, 0x86,
0x79, 0xfe, 0x0f, 0x01, 0x52, 0x3f, 0xca, 0x0f, 0x01, 0x4a, 0xf7, 0x00, 0x3d, 0x39, 0xbc, 0x67,
0x5a, 0xab, 0x47, 0x30, 0x53, 0x15, 0x6a, 0xc2, 0xec, 0xa1, 0xf9, 0x3a, 0xcc, 0x7a, 0xfc, 0xa7,
0x5f, 0xe6, 0xa8, 0x36, 0x25, 0x94, 0x6b, 0x73, 0x05, 0x0a, 0x2c, 0xbb, 0x39, 0xf2, 0x5b, 0x34,
0x60, 0x20, 0x46, 0xa0, 0xfe, 0x6d, 0x3a, 0xbc, 0x2a, 0x7c, 0xea, 0xc9, 0xb0, 0x04, 0xd3, 0x22,
0x24, 0xc3, 0x13, 0xc4, 0xe2, 0xe9, 0x46, 0x0d, 0x27, 0x2d, 0x73, 0x54, 0x83, 0xc9, 0x0b, 0x35,
0x18, 0xbd, 0xdf, 0xa5, 0x9e, 0xfa, 0xfd, 0xee, 0xab, 0x4f, 0x2c, 0x3d, 0x57, 0xf8, 0xff, 0xbb,
0xc0, 0xac, 0x87, 0x83, 0x7e, 0x8a, 0x0d, 0xa0, 0x3f, 0x79, 0x66, 0x33, 0xe7, 0xbf, 0xf5, 0x3c,
0xd1, 0xc1, 0xd3, 0x1c, 0xd8, 0x7a, 0x68, 0xe1, 0x58, 0x48, 0xca, 0x2b, 0x4c, 0x5e, 0x79, 0x9a,
0x6b, 0x09, 0x83, 0x1e, 0xdd, 0xd5, 0xef, 0xc2, 0x34, 0xb7, 0x74, 0xbe, 0xf8, 0xad, 0xcf, 0xea,
0xf9, 0x22, 0x44, 0x00, 0x2b, 0x19, 0x3e, 0xfd, 0x66, 0xfb, 0x71, 0xd8, 0x96, 0xaf, 0x84, 0xbb,
0x2a, 0xac, 0xe9, 0x38, 0x77, 0x57, 0x3d, 0xe3, 0x0f, 0x26, 0xd4, 0x5f, 0x4c, 0xc0, 0x7c, 0x78,
0xdc, 0xa2, 0x9f, 0x3f, 0xa2, 0x77, 0x21, 0xcf, 0x36, 0xbf, 0x6f, 0xb1, 0xe7, 0xd1, 0xcb, 0x8f,
0x6a, 0x44, 0xce, 0xb2, 0x9c, 0x2c, 0xe9, 0xe9, 0x11, 0x53, 0x18, 0x9c, 0x4b, 0x78, 0x43, 0x72,
0xf5, 0x97, 0x12, 0x90, 0x93, 0x70, 0xb4, 0x0e, 0x39, 0x9f, 0xf4, 0xd8, 0xcf, 0x31, 0xc5, 0x18,
0x6e, 0x5e, 0x24, 0x67, 0xad, 0x23, 0x88, 0x45, 0x91, 0x87, 0xe4, 0x2d, 0xbd, 0x07, 0x33, 0x23,
0xa8, 0x67, 0xd2, 0xfe, 0xf7, 0xc3, 0x43, 0x4d, 0x8d, 0x86, 0xf8, 0x7d, 0x4f, 0xe8, 0x75, 0x25,
0x2e, 0xf3, 0x95, 0x22, 0xa6, 0x4b, 0xbc, 0xae, 0xe4, 0x33, 0x48, 0x9a, 0xe4, 0x75, 0xa1, 0xf6,
0xe8, 0x71, 0xe1, 0xa6, 0xe2, 0xd6, 0x53, 0xc9, 0x9b, 0x7c, 0x72, 0xfe, 0xaf, 0xfc, 0xb8, 0xd2,
0x7f, 0x27, 0x00, 0x62, 0xce, 0xf4, 0x86, 0xc8, 0x39, 0x71, 0x5f, 0xfa, 0xad, 0x67, 0x1c, 0xf1,
0x5a, 0x2c, 0x29, 0xf5, 0x5b, 0x09, 0x48, 0x33, 0x91, 0x23, 0x85, 0x38, 0x8b, 0x80, 0x62, 0xde,
0xa2, 0x74, 0xc1, 0x12, 0xe8, 0x05, 0x78, 0x3e, 0x0e, 0xa7, 0x8e, 0x5c, 0x1d, 0x73, 0x57, 0x2e,
0x49, 0xef, 0xe8, 0xc8, 0x6d, 0x1c, 0xc1, 0xa5, 0xd0, 0x35, 0x58, 0x8a, 0xe1, 0x84, 0x0c, 0x21,
0x36, 0x4d, 0xc5, 0xc6, 0xb0, 0xfc, 0x53, 0x20, 0x33, 0x63, 0x5e, 0xdb, 0xcd, 0x2f, 0x40, 0x51,
0xfe, 0x8c, 0x92, 0xa9, 0x2e, 0x07, 0xe9, 0x6e, 0xb9, 0xf3, 0x40, 0x99, 0x42, 0x00, 0x59, 0x1e,
0xd9, 0xf3, 0xd2, 0xcb, 0x6a, 0xab, 0xb9, 0xde, 0xb8, 0xaf, 0x24, 0xe9, 0xb7, 0xa8, 0xa8, 0x4f,
0xdd, 0xfc, 0xb5, 0x34, 0xe4, 0xc3, 0x42, 0x40, 0x74, 0x15, 0x52, 0xcd, 0xfa, 0x23, 0x99, 0x26,
0x08, 0xe1, 0x4d, 0x72, 0x88, 0x5e, 0x8a, 0x4a, 0x08, 0xee, 0x71, 0xa7, 0x32, 0x44, 0xcb, 0xf2,
0x81, 0x57, 0x20, 0x57, 0xee, 0x74, 0x1a, 0xf7, 0x9b, 0xf5, 0x9a, 0xf2, 0x49, 0x82, 0xfb, 0xbb,
0x21, 0x11, 0x37, 0xdc, 0xc4, 0x64, 0x54, 0xd5, 0x6a, 0xbd, 0xdd, 0xad, 0xd7, 0x94, 0x8f, 0x93,
0xe3, 0x54, 0xec, 0x49, 0x9c, 0xfd, 0xe8, 0x23, 0xdf, 0xc6, 0xf5, 0x76, 0x19, 0xd3, 0x0e, 0x3f,
0x49, 0xf2, 0xca, 0x86, 0xa8, 0x47, 0x8f, 0x0c, 0xb8, 0x7b, 0xbd, 0x2c, 0x7f, 0x5f, 0xf6, 0x71,
0x8a, 0x57, 0xff, 0x47, 0x55, 0x8d, 0x44, 0x37, 0x8f, 0x68, 0x6f, 0xac, 0x9c, 0x94, 0x89, 0x49,
0x8d, 0xf5, 0xd6, 0x09, 0x74, 0x2f, 0xa0, 0x52, 0x54, 0x98, 0xc6, 0xdb, 0xcd, 0x26, 0x25, 0xfa,
0x38, 0x3d, 0x36, 0x3b, 0x3c, 0x74, 0x1c, 0x4a, 0x73, 0x1d, 0x72, 0xb2, 0xda, 0x54, 0xf9, 0x24,
0x3d, 0x36, 0xa0, 0xaa, 0x2c, 0x95, 0x65, 0x1d, 0x6e, 0x6c, 0x77, 0xd9, 0xcf, 0xdf, 0x3e, 0xce,
0x8c, 0x77, 0xb8, 0x37, 0x0c, 0x4c, 0xf7, 0xd0, 0x41, 0xab, 0x61, 0x11, 0xc5, 0x27, 0x19, 0x9e,
0x27, 0x09, 0x69, 0x44, 0x05, 0xc5, 0x2b, 0x90, 0xc3, 0xf5, 0x2f, 0xf1, 0x5f, 0xca, 0x7d, 0x9c,
0x1d, 0x93, 0x83, 0xc9, 0x47, 0xc4, 0xa0, 0xbd, 0xad, 0x42, 0x16, 0xd7, 0xb7, 0x5a, 0x0f, 0xeb,
0xca, 0x6f, 0x67, 0xc7, 0xe4, 0x60, 0xd2, 0x77, 0xd9, 0xaf, 0x62, 0x72, 0x2d, 0xdc, 0xde, 0x28,
0xb3, 0x45, 0x19, 0x97, 0xd3, 0xf2, 0x06, 0x7b, 0xba, 0x43, 0xcc, 0xe8, 0xe7, 0x0d, 0x21, 0xea,
0xe6, 0x57, 0x21, 0x27, 0x5f, 0x15, 0xd0, 0x32, 0x64, 0x1f, 0xb5, 0xf0, 0x83, 0x3a, 0x56, 0xa6,
0xb8, 0x96, 0x25, 0xe6, 0x11, 0x7f, 0x0f, 0x5a, 0x85, 0xe9, 0xad, 0x72, 0xb3, 0x7c, 0x9f, 0x9e,
0x09, 0x3e, 0x0c, 0x49, 0x20, 0x52, 0xe3, 0x25, 0x45, 0x74, 0x10, 0xca, 0xac, 0xbc, 0xf2, 0xad,
0x1f, 0x2c, 0x4f, 0x7d, 0xef, 0x07, 0xcb, 0x53, 0x1f, 0x9f, 0x2d, 0x27, 0xbe, 0x75, 0xb6, 0x9c,
0xf8, 0xf6, 0xd9, 0x72, 0xe2, 0x9f, 0xcf, 0x96, 0x13, 0xbf, 0xfc, 0xc3, 0xe5, 0xa9, 0x6f, 0xff,
0x70, 0x79, 0xea, 0x7b, 0x3f, 0x5c, 0x9e, 0xda, 0xc9, 0xb2, 0xe8, 0xfa, 0xcd, 0xff, 0x0d, 0x00,
0x00, 0xff, 0xff, 0xdd, 0x33, 0x91, 0x58, 0x55, 0x43, 0x00, 0x00,
0x56, 0xb0, 0xeb, 0xd7, 0x55, 0xaf, 0xaa, 0xec, 0xec, 0xb0, 0xc7, 0xe3, 0xae, 0xe9, 0xb1, 0x3d,
0x39, 0xd3, 0x3b, 0x3d, 0xbd, 0xb3, 0xee, 0x9e, 0x9e, 0xd9, 0xf9, 0x7a, 0x66, 0x76, 0x76, 0xba,
0xfe, 0xdc, 0xae, 0x6d, 0xbb, 0xaa, 0x14, 0x55, 0xee, 0xde, 0x59, 0xe9, 0xdb, 0x24, 0x9d, 0x19,
0x2e, 0xe7, 0x38, 0x2b, 0xb3, 0xc8, 0xcc, 0xb2, 0xdb, 0x2c, 0x88, 0x39, 0x01, 0xb2, 0x84, 0x00,
0x21, 0x2d, 0x8b, 0xc0, 0x02, 0xc1, 0x22, 0x21, 0x71, 0xe0, 0xc0, 0x81, 0x1f, 0x71, 0x18, 0x24,
0x84, 0x96, 0x13, 0xbb, 0x2c, 0x82, 0xd5, 0x82, 0x0c, 0xeb, 0xbd, 0x70, 0x41, 0x70, 0x41, 0x70,
0xe0, 0x80, 0xe2, 0x2f, 0x33, 0xcb, 0x5d, 0xb6, 0xbb, 0x77, 0x96, 0x8b, 0x9d, 0xf1, 0xfe, 0x22,
0xe2, 0x45, 0xc4, 0x8b, 0xf7, 0x5e, 0xbc, 0x82, 0x9b, 0x7d, 0x2b, 0xd8, 0x1d, 0x6d, 0xaf, 0x1a,
0xee, 0xe0, 0x96, 0xe9, 0x1a, 0x7b, 0xc4, 0xbb, 0xe5, 0x1f, 0xe8, 0xde, 0x60, 0xcf, 0x0a, 0x6e,
0xe9, 0x43, 0xeb, 0x56, 0x70, 0x38, 0x24, 0xfe, 0xea, 0xd0, 0x73, 0x03, 0x17, 0x21, 0x4e, 0xb0,
0x2a, 0x09, 0x56, 0xf7, 0xdf, 0x28, 0x2f, 0xf7, 0x5d, 0xb7, 0x6f, 0x93, 0x5b, 0x8c, 0x62, 0x7b,
0xb4, 0x73, 0x2b, 0xb0, 0x06, 0xc4, 0x0f, 0xf4, 0xc1, 0x90, 0x33, 0x95, 0x97, 0xce, 0x12, 0x98,
0x23, 0x4f, 0x0f, 0x2c, 0xd7, 0x39, 0x0f, 0x7f, 0xe0, 0xe9, 0xc3, 0x21, 0xf1, 0x44, 0xa7, 0xe5,
0xf9, 0xbe, 0xdb, 0x77, 0xd9, 0xe7, 0x2d, 0xfa, 0xc5, 0xa1, 0xea, 0x32, 0x4c, 0x3f, 0x24, 0x9e,
0x6f, 0xb9, 0x0e, 0x9a, 0x87, 0x8c, 0xe5, 0x98, 0xe4, 0xf1, 0x62, 0x62, 0x25, 0x71, 0x23, 0x8d,
0x79, 0x43, 0xbd, 0x0d, 0xd0, 0xa4, 0x1f, 0x0d, 0x27, 0xf0, 0x0e, 0x91, 0x02, 0xa9, 0x3d, 0x72,
0xc8, 0x28, 0xf2, 0x98, 0x7e, 0x52, 0xc8, 0xbe, 0x6e, 0x2f, 0x26, 0x39, 0x64, 0x5f, 0xb7, 0xd5,
0x1f, 0x24, 0xa0, 0x50, 0x71, 0x1c, 0x37, 0x60, 0xa3, 0xf3, 0x11, 0x82, 0xb4, 0xa3, 0x0f, 0x88,
0x60, 0x62, 0xdf, 0xa8, 0x06, 0x59, 0x5b, 0xdf, 0x26, 0xb6, 0xbf, 0x98, 0x5c, 0x49, 0xdd, 0x28,
0xdc, 0xf9, 0xec, 0xea, 0x93, 0x2a, 0x59, 0x8d, 0x09, 0x59, 0xdd, 0x60, 0xd4, 0x6c, 0x10, 0x58,
0xb0, 0xa2, 0x2f, 0xc2, 0xb4, 0xe5, 0x98, 0x96, 0x41, 0xfc, 0xc5, 0x34, 0x93, 0xb2, 0x34, 0x49,
0x4a, 0x34, 0xfa, 0x6a, 0xfa, 0x5b, 0x27, 0xcb, 0x53, 0x58, 0x32, 0x95, 0xdf, 0x81, 0x42, 0x4c,
0xec, 0x84, 0xb9, 0xcd, 0x43, 0x66, 0x5f, 0xb7, 0x47, 0x44, 0xcc, 0x8e, 0x37, 0xde, 0x4d, 0xde,
0x4d, 0xa8, 0xf7, 0x60, 0xbe, 0xa5, 0x0f, 0x88, 0x79, 0x9f, 0x38, 0xc4, 0xb3, 0x0c, 0x4c, 0x7c,
0x77, 0xe4, 0x19, 0x84, 0xce, 0x75, 0xcf, 0x72, 0x4c, 0x39, 0x57, 0xfa, 0x3d, 0x59, 0x8a, 0x5a,
0x83, 0xe7, 0xeb, 0x96, 0x6f, 0x78, 0x24, 0x20, 0xcf, 0x2c, 0x24, 0x25, 0x85, 0x9c, 0x24, 0x60,
0xf6, 0x2c, 0xf7, 0x57, 0x60, 0x8e, 0xaa, 0xd8, 0xd4, 0x3c, 0x01, 0xd1, 0xfc, 0x21, 0x31, 0x98,
0xb0, 0xc2, 0x9d, 0x1b, 0x93, 0x34, 0x34, 0x69, 0x26, 0xeb, 0x53, 0xf8, 0x0a, 0x13, 0x23, 0x01,
0xdd, 0x21, 0x31, 0x90, 0x01, 0x0b, 0xa6, 0x18, 0xf4, 0x19, 0xf1, 0x49, 0x26, 0x7e, 0xe2, 0x32,
0x9e, 0x33, 0xcd, 0xf5, 0x29, 0x3c, 0x2f, 0x85, 0xc5, 0x3b, 0xa9, 0x02, 0xe4, 0xa4, 0x6c, 0xf5,
0x1b, 0x09, 0xc8, 0x4b, 0xa4, 0x8f, 0x5e, 0x83, 0xbc, 0xa3, 0x3b, 0xae, 0x66, 0x0c, 0x47, 0x3e,
0x9b, 0x50, 0xaa, 0x5a, 0x3c, 0x3d, 0x59, 0xce, 0xb5, 0x74, 0xc7, 0xad, 0x75, 0xb6, 0x7c, 0x9c,
0xa3, 0xe8, 0xda, 0x70, 0xe4, 0xa3, 0x97, 0xa0, 0x38, 0x20, 0x03, 0xd7, 0x3b, 0xd4, 0xb6, 0x0f,
0x03, 0xe2, 0x0b, 0xb5, 0x15, 0x38, 0xac, 0x4a, 0x41, 0xe8, 0x7d, 0x98, 0xee, 0xf3, 0x21, 0x2d,
0xa6, 0xd8, 0xf6, 0x79, 0x79, 0xd2, 0xe8, 0xcf, 0x8c, 0x1a, 0x4b, 0x1e, 0xf5, 0xeb, 0x49, 0x98,
0x0f, 0xa1, 0xe4, 0x27, 0x47, 0x96, 0x47, 0x06, 0xc4, 0x09, 0x7c, 0xf4, 0x79, 0xc8, 0xda, 0xd6,
0xc0, 0x0a, 0x7c, 0xa1, 0xf3, 0x17, 0x27, 0x89, 0x0d, 0x27, 0x85, 0x05, 0x31, 0xaa, 0x40, 0xd1,
0x23, 0x3e, 0xf1, 0xf6, 0xf9, 0x8e, 0x17, 0x1a, 0xbd, 0x84, 0x79, 0x8c, 0x05, 0xbd, 0x0b, 0xe0,
0x1f, 0xe8, 0x43, 0x31, 0xe5, 0x14, 0x13, 0xf0, 0xc2, 0x2a, 0xb7, 0x0b, 0xab, 0xd2, 0x2e, 0xac,
0x36, 0x9d, 0xe0, 0xed, 0xb7, 0x1e, 0xd2, 0xfd, 0x83, 0xf3, 0x94, 0x9c, 0x6b, 0x63, 0x1d, 0xae,
0x08, 0x85, 0x51, 0xd8, 0xd0, 0x72, 0x88, 0x4f, 0x8f, 0xd5, 0xa5, 0x22, 0x14, 0xce, 0xd5, 0x0d,
0x99, 0xd4, 0x35, 0xc8, 0x75, 0x6c, 0x3d, 0xd8, 0x71, 0xbd, 0x01, 0x52, 0xa1, 0xa8, 0x7b, 0xc6,
0xae, 0x15, 0x10, 0x23, 0x18, 0x79, 0xd2, 0x06, 0x8c, 0xc1, 0xd0, 0x02, 0x24, 0x5d, 0x3e, 0xdd,
0x7c, 0x35, 0x7b, 0x7a, 0xb2, 0x9c, 0x6c, 0x77, 0x71, 0xd2, 0xf5, 0xd5, 0xf7, 0xe0, 0x4a, 0xc7,
0x1e, 0xf5, 0x2d, 0xa7, 0x4e, 0x7c, 0xc3, 0xb3, 0x86, 0x74, 0x8e, 0xf4, 0x6c, 0x50, 0x4b, 0x2a,
0xcf, 0x06, 0xfd, 0x0e, 0x0d, 0x4c, 0x32, 0x32, 0x30, 0xea, 0xcf, 0x27, 0xe1, 0x4a, 0xc3, 0xe9,
0x5b, 0x0e, 0x89, 0x73, 0x5f, 0x87, 0x19, 0xc2, 0x80, 0xda, 0x3e, 0x37, 0x7a, 0x42, 0x4e, 0x89,
0x43, 0xa5, 0x25, 0x6c, 0x9e, 0xb1, 0x4e, 0x6f, 0x4c, 0x5a, 0x84, 0x27, 0xa4, 0x4f, 0xb4, 0x51,
0x0d, 0x98, 0x1e, 0xb2, 0x49, 0xf8, 0x62, 0x93, 0x5d, 0x9f, 0x24, 0xeb, 0x89, 0x79, 0x4a, 0x53,
0x25, 0x78, 0x3f, 0x8d, 0xa9, 0xfa, 0xd5, 0x14, 0xcc, 0xb6, 0x5c, 0x73, 0x4c, 0x0f, 0x65, 0xc8,
0xed, 0xba, 0x7e, 0x10, 0x33, 0xcb, 0x61, 0x1b, 0xdd, 0x85, 0xdc, 0x50, 0x2c, 0x9f, 0xd8, 0x83,
0xd7, 0x26, 0x0f, 0x99, 0xd3, 0xe0, 0x90, 0x1a, 0xbd, 0x07, 0x79, 0x79, 0x70, 0xe5, 0xee, 0xbb,
0x64, 0xfb, 0x46, 0xf4, 0xe8, 0x7d, 0xc8, 0xf2, 0x45, 0x10, 0x9b, 0xee, 0xfa, 0x53, 0xe9, 0x1c,
0x0b, 0x26, 0x74, 0x1f, 0x72, 0x81, 0xed, 0x6b, 0x96, 0xb3, 0xe3, 0x2e, 0x66, 0x98, 0x80, 0xe5,
0x89, 0xa6, 0xce, 0x35, 0x49, 0x6f, 0xa3, 0xdb, 0x74, 0x76, 0xdc, 0x6a, 0xe1, 0xf4, 0x64, 0x79,
0x5a, 0x34, 0xf0, 0x74, 0x60, 0xfb, 0xf4, 0x03, 0x5d, 0x83, 0xf4, 0x8e, 0x35, 0xf4, 0x17, 0xb3,
0x2b, 0x89, 0x1b, 0xb9, 0x6a, 0xee, 0xf4, 0x64, 0x39, 0xbd, 0xd6, 0xec, 0x74, 0x31, 0x83, 0xd2,
0x6e, 0x0c, 0xdf, 0xe2, 0xdd, 0x4c, 0xb3, 0xf5, 0x3c, 0xb7, 0x9b, 0x5a, 0xb7, 0x19, 0x75, 0x23,
0x1a, 0x78, 0xda, 0xf0, 0x2d, 0xfa, 0xa1, 0xfe, 0x4a, 0x02, 0x0a, 0xb1, 0xc1, 0xa0, 0x17, 0x01,
0x02, 0x6f, 0xe4, 0x07, 0x9a, 0xe7, 0xba, 0x01, 0x5b, 0x93, 0x22, 0xce, 0x33, 0x08, 0x76, 0xdd,
0x00, 0xad, 0xc2, 0x9c, 0x41, 0xbc, 0x40, 0xb3, 0x7c, 0x7f, 0x44, 0x3c, 0xcd, 0x1f, 0x6d, 0x7f,
0x44, 0x8c, 0x80, 0xad, 0x4f, 0x11, 0x5f, 0xa1, 0xa8, 0x26, 0xc3, 0x74, 0x39, 0x02, 0xbd, 0x09,
0x0b, 0x71, 0xfa, 0xe1, 0x68, 0xdb, 0xb6, 0x0c, 0x8d, 0xee, 0x99, 0x14, 0x63, 0x99, 0x8b, 0x58,
0x3a, 0x0c, 0xf7, 0x80, 0x1c, 0xaa, 0xdf, 0x15, 0x63, 0x12, 0x83, 0x45, 0xcb, 0x50, 0xe0, 0xfb,
0x4f, 0x8b, 0x6d, 0x14, 0xe0, 0x20, 0x7a, 0x67, 0xa0, 0x97, 0x61, 0xda, 0x71, 0x4d, 0xa2, 0x59,
0xa6, 0x38, 0xbe, 0x70, 0x7a, 0xb2, 0x9c, 0xa5, 0x22, 0x9a, 0x75, 0x9c, 0xa5, 0xa8, 0xa6, 0x89,
0x6e, 0xc1, 0xfc, 0x40, 0x7f, 0xac, 0xed, 0xbb, 0xf6, 0x68, 0x40, 0x7c, 0x6d, 0x48, 0x3c, 0x8d,
0x62, 0xd8, 0x40, 0x52, 0xf8, 0xca, 0x40, 0x7f, 0xfc, 0x90, 0xa3, 0x3a, 0xc4, 0xa3, 0xac, 0x68,
0x13, 0xe6, 0x74, 0xc3, 0x20, 0xbe, 0x6f, 0x6d, 0xdb, 0x44, 0x0b, 0xdc, 0xa1, 0x6b, 0xbb, 0xfd,
0x43, 0xb1, 0x2d, 0x26, 0xee, 0xc5, 0x9e, 0xa0, 0xc1, 0x28, 0x62, 0x94, 0x30, 0xf5, 0x7b, 0x09,
0x50, 0xb0, 0xbe, 0x13, 0x6c, 0x92, 0xc1, 0x36, 0xf1, 0xba, 0x81, 0x1e, 0x8c, 0x7c, 0xb4, 0x00,
0x59, 0x9b, 0xe8, 0x26, 0xf1, 0xd8, 0xac, 0x72, 0x58, 0xb4, 0xd0, 0x16, 0x35, 0xc2, 0xba, 0xb1,
0xab, 0x6f, 0x5b, 0xb6, 0x15, 0x1c, 0xb2, 0x69, 0xcd, 0x4c, 0x3e, 0xff, 0x67, 0x65, 0xae, 0xe2,
0x18, 0x23, 0x1e, 0x13, 0x83, 0x16, 0x61, 0x7a, 0x40, 0x7c, 0x5f, 0xef, 0xf3, 0x69, 0xe7, 0xb1,
0x6c, 0xaa, 0xef, 0x41, 0x31, 0xce, 0x87, 0x0a, 0x30, 0xbd, 0xd5, 0x7a, 0xd0, 0x6a, 0x3f, 0x6a,
0x29, 0x53, 0x68, 0x16, 0x0a, 0x5b, 0x2d, 0xdc, 0xa8, 0xd4, 0xd6, 0x2b, 0xd5, 0x8d, 0x86, 0x92,
0x40, 0x25, 0xc8, 0x47, 0xcd, 0xa4, 0xfa, 0x47, 0x09, 0x00, 0xaa, 0x32, 0x31, 0xa9, 0x77, 0x21,
0xe3, 0x07, 0x7a, 0xc0, 0x57, 0x6a, 0xe6, 0xce, 0x2b, 0xe7, 0xed, 0x4c, 0x31, 0x5e, 0xfa, 0x8f,
0x60, 0xce, 0x12, 0x1f, 0x61, 0x72, 0x6c, 0x84, 0xd4, 0xba, 0xea, 0xa6, 0xe9, 0x89, 0x81, 0xb3,
0x6f, 0xf5, 0x3d, 0xc8, 0x30, 0xee, 0xf1, 0xe1, 0xe6, 0x20, 0x5d, 0xa7, 0x5f, 0x09, 0x94, 0x87,
0x0c, 0x6e, 0x54, 0xea, 0x1f, 0x2a, 0x49, 0xa4, 0x40, 0xb1, 0xde, 0xec, 0xd6, 0xda, 0xad, 0x56,
0xa3, 0xd6, 0x6b, 0xd4, 0x95, 0x94, 0x7a, 0x1d, 0x32, 0xcd, 0x01, 0x95, 0x7c, 0x8d, 0xda, 0x8b,
0x1d, 0xe2, 0x11, 0xc7, 0x90, 0xbb, 0x2b, 0x02, 0xa8, 0xff, 0x3a, 0x03, 0x99, 0x4d, 0x77, 0xe4,
0x04, 0xe8, 0x4e, 0xcc, 0xe6, 0xcf, 0x4c, 0x76, 0xf2, 0x18, 0xe1, 0x6a, 0xef, 0x70, 0x48, 0xc4,
0x9d, 0xb0, 0x00, 0x59, 0x6e, 0x59, 0xc4, 0x74, 0x44, 0x8b, 0xc2, 0x03, 0xdd, 0xeb, 0x93, 0x40,
0xcc, 0x47, 0xb4, 0xd0, 0x0d, 0xea, 0x74, 0xe8, 0xa6, 0xeb, 0xd8, 0x7c, 0xa7, 0xe5, 0xb8, 0x67,
0x81, 0x89, 0x6e, 0xb6, 0x1d, 0xfb, 0x10, 0x87, 0x58, 0x74, 0x1f, 0x0a, 0x86, 0xeb, 0xf8, 0x96,
0x1f, 0x10, 0xc7, 0x38, 0x5c, 0xcc, 0xb1, 0x41, 0x5d, 0x3f, 0x7f, 0x50, 0xb5, 0x88, 0x18, 0xc7,
0x39, 0xd1, 0x3a, 0x14, 0xb7, 0x2d, 0xc7, 0xd4, 0xdc, 0x21, 0xbf, 0xf0, 0x33, 0xe7, 0xdb, 0x3d,
0x2e, 0xa9, 0x6a, 0x39, 0x66, 0x9b, 0x13, 0xe3, 0xc2, 0x76, 0xd4, 0x40, 0x2d, 0x98, 0xe1, 0xc7,
0x2b, 0x94, 0x95, 0x65, 0xb2, 0x5e, 0x3d, 0x5f, 0x16, 0x3f, 0x73, 0x52, 0x5a, 0x69, 0x3f, 0xde,
0x44, 0x0f, 0xa0, 0x14, 0x0c, 0x86, 0x3b, 0x7e, 0x28, 0x6e, 0x9a, 0x89, 0xfb, 0xcc, 0x05, 0x9a,
0xa7, 0xe4, 0x52, 0x5a, 0x31, 0x88, 0xb5, 0xca, 0xbf, 0x99, 0x81, 0x42, 0x6c, 0xe4, 0xa8, 0x0b,
0x85, 0xa1, 0xe7, 0x0e, 0xf5, 0x3e, 0x73, 0x5a, 0xc4, 0xa2, 0xbe, 0xf1, 0x54, 0xb3, 0x5e, 0xed,
0x44, 0x8c, 0x38, 0x2e, 0x05, 0xbd, 0x05, 0x45, 0xc7, 0x75, 0x3c, 0x62, 0x8c, 0x3c, 0xdf, 0xda,
0xe7, 0x8b, 0x9e, 0xab, 0x2a, 0xa7, 0x27, 0xcb, 0xc5, 0x96, 0xeb, 0x60, 0x09, 0xc7, 0x63, 0x54,
0xe8, 0x1e, 0x28, 0x86, 0x47, 0xf4, 0x80, 0x0c, 0x68, 0x4f, 0x43, 0xd7, 0x72, 0xf8, 0xb6, 0xc8,
0x55, 0xe7, 0x4f, 0x4f, 0x96, 0x95, 0x1a, 0xc3, 0x6d, 0x86, 0x38, 0xfc, 0x04, 0x35, 0xda, 0x80,
0x79, 0xb9, 0x31, 0xc6, 0xfa, 0xe7, 0x5b, 0x68, 0xf1, 0xf4, 0x64, 0x79, 0x5e, 0x6e, 0xa1, 0xb1,
0x71, 0x4c, 0xe4, 0x42, 0x18, 0x16, 0x24, 0x7c, 0xc7, 0xf5, 0x0c, 0x12, 0xc9, 0xcb, 0x30, 0x79,
0xe5, 0xd3, 0x93, 0xe5, 0x05, 0x29, 0x6f, 0xcd, 0x65, 0x8e, 0xa7, 0x94, 0x78, 0x0e, 0xa7, 0x7a,
0x9c, 0x84, 0x42, 0x4c, 0x6d, 0xe8, 0x26, 0xe4, 0x70, 0x07, 0x37, 0x1f, 0x56, 0x7a, 0x0d, 0x65,
0xaa, 0x7c, 0xed, 0xe8, 0x78, 0x65, 0x91, 0xcd, 0x30, 0xae, 0xda, 0x8e, 0x67, 0xed, 0xd3, 0xd3,
0x7d, 0x03, 0xa6, 0x25, 0x69, 0xa2, 0xfc, 0xc2, 0xd1, 0xf1, 0xca, 0xf3, 0x67, 0x49, 0x63, 0x94,
0xb8, 0xbb, 0x5e, 0xc1, 0x8d, 0xba, 0x92, 0x9c, 0x4c, 0x89, 0xbb, 0xbb, 0xba, 0x47, 0x4c, 0xf4,
0x19, 0xc8, 0x0a, 0xc2, 0x54, 0xb9, 0x7c, 0x74, 0xbc, 0xb2, 0x70, 0x96, 0x30, 0xa2, 0xc3, 0xdd,
0x8d, 0xca, 0xc3, 0x86, 0x92, 0x9e, 0x4c, 0x87, 0xbb, 0xb6, 0xbe, 0x4f, 0xd0, 0x2b, 0x90, 0xe1,
0x64, 0x99, 0xf2, 0xd5, 0xa3, 0xe3, 0x95, 0xe7, 0x9e, 0x10, 0x47, 0xa9, 0xca, 0x8b, 0xbf, 0xf0,
0xbb, 0x4b, 0x53, 0x7f, 0xf6, 0xcd, 0x25, 0xe5, 0x2c, 0xba, 0xfc, 0x3f, 0x09, 0x28, 0x8d, 0x1d,
0x06, 0xa4, 0x42, 0xd6, 0x71, 0x0d, 0x77, 0xc8, 0xfd, 0xab, 0x9c, 0xbc, 0xd4, 0x6a, 0xee, 0xf0,
0x10, 0x0b, 0x0c, 0x7a, 0x70, 0xc6, 0x43, 0x7c, 0xf3, 0x29, 0x4f, 0xda, 0x44, 0x1f, 0xf1, 0x03,
0x28, 0x99, 0x9e, 0xb5, 0x4f, 0x3c, 0xcd, 0x70, 0x9d, 0x1d, 0xab, 0x2f, 0x7c, 0xa7, 0xf2, 0xc4,
0x60, 0x8a, 0x11, 0xe2, 0x22, 0x67, 0xa8, 0x31, 0xfa, 0x4f, 0xe1, 0x1d, 0x96, 0x87, 0x50, 0x8c,
0x9f, 0x5d, 0xea, 0x87, 0xf8, 0xd6, 0x4f, 0x11, 0x11, 0x42, 0xb0, 0x18, 0x0b, 0xe7, 0x29, 0x84,
0x47, 0x09, 0xaf, 0x42, 0x7a, 0x40, 0x2f, 0x6f, 0x2a, 0xa7, 0x54, 0x9d, 0xa3, 0x4e, 0xea, 0xf7,
0x4f, 0x96, 0x0b, 0xae, 0xbf, 0xba, 0x66, 0xd9, 0x64, 0xd3, 0x35, 0x09, 0x66, 0x04, 0xf4, 0x3e,
0x91, 0xc6, 0x43, 0xdc, 0x78, 0xa2, 0xa9, 0xfe, 0x79, 0x02, 0xd2, 0xd4, 0x50, 0xa3, 0x17, 0x20,
0x5d, 0x6d, 0xb6, 0xea, 0xca, 0x54, 0xf9, 0xca, 0xd1, 0xf1, 0x4a, 0x89, 0x69, 0x8b, 0x22, 0xe8,
0x81, 0x47, 0xcb, 0x90, 0x7d, 0xd8, 0xde, 0xd8, 0xda, 0xa4, 0x3b, 0x6f, 0xee, 0xe8, 0x78, 0x65,
0x36, 0x44, 0x73, 0x7d, 0xa2, 0x17, 0x21, 0xd3, 0xdb, 0xec, 0xac, 0x75, 0x95, 0x64, 0x19, 0x1d,
0x1d, 0xaf, 0xcc, 0x84, 0x78, 0x36, 0x1d, 0xf4, 0x12, 0x64, 0x5a, 0x9d, 0x66, 0xa7, 0xa1, 0xa4,
0xca, 0x0b, 0x47, 0xc7, 0x2b, 0x28, 0x44, 0xb3, 0x60, 0xb7, 0x63, 0x0d, 0x09, 0x7a, 0x09, 0xa6,
0x6b, 0x1b, 0x5b, 0xdd, 0x5e, 0x03, 0x2b, 0xe9, 0xf2, 0xfc, 0xd1, 0xf1, 0x8a, 0x12, 0x12, 0xd5,
0xec, 0x91, 0x1f, 0x10, 0xaf, 0x7c, 0x45, 0x6c, 0x9b, 0x7c, 0x88, 0x51, 0xbf, 0x93, 0x80, 0x42,
0xcc, 0xa4, 0xd3, 0x9d, 0x5f, 0x6f, 0xac, 0x55, 0xb6, 0x36, 0x7a, 0xca, 0x54, 0x6c, 0xe7, 0xc7,
0x48, 0xea, 0x64, 0x47, 0x1f, 0xd9, 0xf4, 0x8a, 0x81, 0x5a, 0xbb, 0xd5, 0x6d, 0x76, 0x7b, 0x8d,
0x56, 0x4f, 0x49, 0x94, 0x17, 0x8f, 0x8e, 0x57, 0xe6, 0xcf, 0x12, 0xaf, 0x8d, 0x6c, 0x9b, 0xee,
0xfd, 0x5a, 0xa5, 0xb6, 0xce, 0x0e, 0x53, 0xb4, 0xf7, 0x63, 0x54, 0x35, 0xdd, 0xd8, 0x25, 0x26,
0x7a, 0x1d, 0xf2, 0xf5, 0xc6, 0x46, 0xe3, 0x7e, 0x85, 0x5d, 0xac, 0xe5, 0x17, 0x8f, 0x8e, 0x57,
0xae, 0x3e, 0xd9, 0xbb, 0x4d, 0xfa, 0x7a, 0x40, 0xcc, 0x33, 0x67, 0x20, 0x46, 0xa2, 0xfe, 0x67,
0x12, 0x4a, 0x98, 0xf8, 0x81, 0xee, 0x05, 0x1d, 0xd7, 0xb6, 0x8c, 0x43, 0xd4, 0x81, 0xbc, 0xe1,
0x3a, 0xa6, 0x15, 0x33, 0xd1, 0x77, 0xce, 0x71, 0xe5, 0x23, 0x2e, 0xd9, 0xaa, 0x49, 0x4e, 0x1c,
0x09, 0x41, 0xb7, 0x20, 0x63, 0x12, 0x5b, 0x3f, 0x14, 0x31, 0xc5, 0xd5, 0x27, 0x62, 0xca, 0xba,
0x48, 0x67, 0x61, 0x4e, 0xc7, 0x22, 0x78, 0xfd, 0xb1, 0xa6, 0x07, 0x01, 0x19, 0x0c, 0x03, 0xbe,
0x8d, 0xd2, 0xb8, 0x30, 0xd0, 0x1f, 0x57, 0x04, 0x08, 0xbd, 0x01, 0xd9, 0x03, 0xcb, 0x31, 0xdd,
0x03, 0xe1, 0x1c, 0x5e, 0x20, 0x54, 0x10, 0xaa, 0x47, 0xd4, 0x1b, 0x3c, 0x33, 0x4c, 0xba, 0x13,
0x5b, 0xed, 0x56, 0x43, 0xee, 0x44, 0x81, 0x6f, 0x3b, 0x2d, 0xd7, 0xa1, 0x06, 0x06, 0xda, 0x2d,
0x6d, 0xad, 0xd2, 0xdc, 0xd8, 0xc2, 0x74, 0x37, 0xb2, 0x9d, 0x12, 0x92, 0xac, 0xe9, 0x96, 0x4d,
0x83, 0xd8, 0xab, 0x90, 0xaa, 0xb4, 0x3e, 0x54, 0x92, 0x65, 0xe5, 0xe8, 0x78, 0xa5, 0x18, 0xa2,
0x2b, 0xce, 0x61, 0xa4, 0xf7, 0xb3, 0xfd, 0xaa, 0x7f, 0x93, 0x82, 0xe2, 0xd6, 0xd0, 0xd4, 0x03,
0xc2, 0x0f, 0x32, 0x5a, 0x81, 0xc2, 0x50, 0xf7, 0x74, 0xdb, 0x26, 0xb6, 0xe5, 0x0f, 0x44, 0x22,
0x2e, 0x0e, 0x42, 0xef, 0x3c, 0xad, 0x1a, 0xab, 0x39, 0x7a, 0x38, 0xbf, 0xf1, 0xcf, 0xcb, 0x09,
0xa9, 0xd0, 0x2d, 0x98, 0xd9, 0xe1, 0xa3, 0xd5, 0x74, 0x83, 0x2d, 0x6c, 0x8a, 0x2d, 0xec, 0xea,
0xa4, 0x85, 0x8d, 0x0f, 0x6b, 0x55, 0x4c, 0xb2, 0xc2, 0xb8, 0x70, 0x69, 0x27, 0xde, 0x44, 0x6f,
0xc2, 0xf4, 0xc0, 0x75, 0xac, 0xc0, 0xf5, 0x2e, 0x5f, 0x05, 0x49, 0x89, 0x6e, 0x02, 0x75, 0xfc,
0x35, 0x39, 0x1e, 0x86, 0x66, 0x97, 0x5c, 0x12, 0xcf, 0x0e, 0xf4, 0xc7, 0xa2, 0x43, 0x4c, 0xc1,
0xa8, 0x0a, 0x19, 0xd7, 0xa3, 0xae, 0x7a, 0x96, 0x0d, 0xf7, 0xf5, 0x4b, 0x87, 0xcb, 0x1b, 0x6d,
0xca, 0x83, 0x39, 0xab, 0xfa, 0x36, 0x94, 0xc6, 0x26, 0x41, 0x3d, 0xd4, 0x4e, 0x65, 0xab, 0xdb,
0x50, 0xa6, 0x50, 0x11, 0x72, 0xb5, 0x76, 0xab, 0xd7, 0x6c, 0x6d, 0x51, 0x17, 0xbb, 0x08, 0x39,
0xdc, 0xde, 0xd8, 0xa8, 0x56, 0x6a, 0x0f, 0x94, 0xa4, 0xba, 0x0a, 0x85, 0x98, 0x34, 0x34, 0x03,
0xd0, 0xed, 0xb5, 0x3b, 0xda, 0x5a, 0x13, 0x77, 0x7b, 0xdc, 0x41, 0xef, 0xf6, 0x2a, 0xb8, 0x27,
0x00, 0x09, 0xf5, 0xdf, 0x93, 0x72, 0x45, 0x85, 0x4f, 0x5e, 0x1d, 0xf7, 0xc9, 0x2f, 0x18, 0xbc,
0xf0, 0xca, 0xa3, 0x46, 0xe8, 0x9b, 0xbf, 0x03, 0xc0, 0x36, 0x0e, 0x31, 0x35, 0x3d, 0x10, 0x0b,
0x5f, 0x7e, 0x42, 0xc9, 0x3d, 0x99, 0x2f, 0xc6, 0x79, 0x41, 0x5d, 0x09, 0xd0, 0xfb, 0x50, 0x34,
0xdc, 0xc1, 0xd0, 0x26, 0x82, 0x39, 0x75, 0x29, 0x73, 0x21, 0xa4, 0xaf, 0x04, 0xf1, 0xa8, 0x20,
0x3d, 0x1e, 0xb7, 0xfc, 0x5c, 0x42, 0x6a, 0x66, 0x42, 0x20, 0x50, 0x84, 0xdc, 0x56, 0xa7, 0x5e,
0xe9, 0x35, 0x5b, 0xf7, 0x95, 0x04, 0x02, 0xc8, 0x32, 0x55, 0xd7, 0x95, 0x24, 0x0d, 0x60, 0x6a,
0xed, 0xcd, 0xce, 0x46, 0x83, 0x59, 0x2c, 0x34, 0x0f, 0x8a, 0x54, 0xb6, 0xc6, 0x14, 0xd9, 0xa8,
0x2b, 0x69, 0x34, 0x07, 0xb3, 0x21, 0x54, 0x70, 0x66, 0xd0, 0x02, 0xa0, 0x10, 0x18, 0x89, 0xc8,
0xaa, 0x3f, 0x03, 0xb3, 0x35, 0xd7, 0x09, 0x74, 0xcb, 0x09, 0x83, 0xbb, 0x3b, 0x74, 0xd2, 0x02,
0x44, 0x63, 0x53, 0x76, 0x11, 0x56, 0x67, 0x4f, 0x4f, 0x96, 0x0b, 0x21, 0x69, 0xb3, 0xce, 0x9c,
0x71, 0xd1, 0x30, 0xe9, 0xf9, 0x1d, 0x8a, 0x30, 0x36, 0x53, 0x9d, 0x3e, 0x3d, 0x59, 0x4e, 0x75,
0x9a, 0x75, 0x4c, 0x61, 0xe8, 0x05, 0xc8, 0x93, 0xc7, 0x56, 0xa0, 0x19, 0x32, 0x6a, 0xcd, 0xe0,
0x1c, 0x05, 0xd4, 0x5c, 0x93, 0xa8, 0x55, 0x80, 0x8e, 0xeb, 0x05, 0xa2, 0xe7, 0xb7, 0x20, 0x33,
0x74, 0x3d, 0x96, 0xf9, 0x3b, 0x37, 0x1f, 0x4d, 0xc9, 0xf9, 0x46, 0xc5, 0x9c, 0x58, 0xfd, 0xf5,
0x14, 0x40, 0x4f, 0xf7, 0xf7, 0x84, 0x90, 0xbb, 0x90, 0x0f, 0x73, 0xff, 0x22, 0x85, 0x78, 0xe1,
0x6a, 0x87, 0xc4, 0xe8, 0x4d, 0xb9, 0xd9, 0x78, 0xd8, 0x3a, 0x31, 0xf9, 0x22, 0x3b, 0x9a, 0x14,
0xf9, 0x8d, 0xc7, 0xa6, 0xd4, 0x8f, 0x20, 0x9e, 0x27, 0x56, 0x9e, 0x7e, 0xa2, 0x1a, 0xbb, 0x16,
0xb8, 0xd2, 0x44, 0xbc, 0x32, 0x31, 0x69, 0x7a, 0x66, 0x45, 0xd6, 0xa7, 0x70, 0xc4, 0x87, 0x3e,
0x80, 0x02, 0x9d, 0xb7, 0xe6, 0x33, 0x9c, 0x08, 0x55, 0xce, 0x55, 0x15, 0x97, 0x80, 0x61, 0x18,
0x69, 0xf9, 0x45, 0x00, 0x7d, 0x38, 0xb4, 0x2d, 0x62, 0x6a, 0xdb, 0x87, 0x2c, 0x36, 0xc9, 0xe3,
0xbc, 0x80, 0x54, 0x0f, 0xe9, 0x71, 0x91, 0x68, 0x3d, 0x60, 0xf1, 0xd9, 0x25, 0x0a, 0x14, 0xd4,
0x95, 0xa0, 0xaa, 0xc0, 0x8c, 0x37, 0x72, 0xa8, 0x42, 0xc5, 0xe8, 0xd4, 0x3f, 0x4c, 0xc2, 0xf3,
0x2d, 0x12, 0x1c, 0xb8, 0xde, 0x5e, 0x25, 0x08, 0x74, 0x63, 0x77, 0x40, 0x1c, 0xb1, 0x7c, 0xb1,
0x58, 0x32, 0x31, 0x16, 0x4b, 0x2e, 0xc2, 0xb4, 0x6e, 0x5b, 0xba, 0x4f, 0xb8, 0x77, 0x98, 0xc7,
0xb2, 0x49, 0x23, 0x5e, 0x1a, 0x3f, 0x13, 0xdf, 0x27, 0x3c, 0x1f, 0x48, 0x07, 0x2e, 0x01, 0xe8,
0x6b, 0xb0, 0x20, 0xfc, 0x40, 0x3d, 0xec, 0x8a, 0x86, 0x60, 0xf2, 0x79, 0xa3, 0x31, 0x31, 0xa0,
0x9f, 0x3c, 0x38, 0xe1, 0x28, 0x46, 0xe0, 0xf6, 0x30, 0x10, 0x6e, 0xe7, 0xbc, 0x39, 0x01, 0x55,
0xbe, 0x0f, 0x57, 0xcf, 0x65, 0x79, 0xa6, 0x7c, 0xe3, 0x77, 0x93, 0x00, 0xcd, 0x4e, 0x65, 0x53,
0x28, 0xa9, 0x0e, 0xd9, 0x1d, 0x7d, 0x60, 0xd9, 0x87, 0x17, 0x59, 0xc0, 0x88, 0x7e, 0xb5, 0xc2,
0xd5, 0xb1, 0xc6, 0x78, 0xb0, 0xe0, 0x65, 0xe1, 0xfc, 0x68, 0xdb, 0x21, 0x41, 0x18, 0xce, 0xb3,
0x16, 0x1d, 0x86, 0xa7, 0x3b, 0xe1, 0xd6, 0xe5, 0x0d, 0xba, 0x00, 0xd4, 0xe5, 0x39, 0xd0, 0x0f,
0xa5, 0xd9, 0x12, 0x4d, 0xb4, 0xce, 0xde, 0x16, 0x88, 0xb7, 0x4f, 0xcc, 0xc5, 0x0c, 0x53, 0xea,
0x65, 0xe3, 0xc1, 0x82, 0x9c, 0xeb, 0x2e, 0xe4, 0x2e, 0xbf, 0xc7, 0x5c, 0xa6, 0x08, 0xf5, 0x4c,
0x3a, 0xba, 0x0d, 0xa5, 0xb1, 0x79, 0x3e, 0x91, 0x47, 0x69, 0x76, 0x1e, 0xbe, 0xa5, 0xa4, 0xc5,
0xd7, 0xdb, 0x4a, 0x56, 0xfd, 0xab, 0x14, 0x37, 0x34, 0x42, 0xab, 0x93, 0xdf, 0xd4, 0x72, 0x6c,
0x77, 0x1b, 0xae, 0x2d, 0x0c, 0xc0, 0xab, 0x17, 0xdb, 0x1f, 0x1a, 0x4e, 0x33, 0x72, 0x1c, 0x32,
0xa2, 0x65, 0x28, 0xf0, 0x5d, 0xac, 0xd1, 0x03, 0xc7, 0xd4, 0x5a, 0xc2, 0xc0, 0x41, 0x94, 0x13,
0x5d, 0x87, 0x19, 0x96, 0x4d, 0xf4, 0x77, 0x89, 0xc9, 0x69, 0xd2, 0x8c, 0xa6, 0x14, 0x42, 0x19,
0xd9, 0x26, 0x14, 0x05, 0x40, 0x63, 0x01, 0x43, 0x86, 0x0d, 0xe8, 0xe6, 0x65, 0x03, 0xe2, 0x2c,
0x2c, 0x8e, 0x28, 0x0c, 0xa3, 0x86, 0xfa, 0x13, 0x90, 0x93, 0x83, 0x45, 0x8b, 0x90, 0xea, 0xd5,
0x3a, 0xca, 0x54, 0x79, 0xf6, 0xe8, 0x78, 0xa5, 0x20, 0xc1, 0xbd, 0x5a, 0x87, 0x62, 0xb6, 0xea,
0x1d, 0x25, 0x31, 0x8e, 0xd9, 0xaa, 0x77, 0x50, 0x19, 0xd2, 0xdd, 0x5a, 0xaf, 0x23, 0xfd, 0x33,
0x89, 0xa2, 0xb0, 0x72, 0x9a, 0xfa, 0x67, 0xea, 0x0e, 0x14, 0x62, 0xbd, 0xa3, 0x97, 0x61, 0xba,
0xd9, 0xba, 0x8f, 0x1b, 0xdd, 0xae, 0x32, 0xc5, 0x23, 0x88, 0x18, 0xb6, 0xe9, 0xf4, 0xe9, 0xda,
0xa1, 0x17, 0x21, 0xbd, 0xde, 0xa6, 0xf7, 0x3e, 0x0f, 0x51, 0x62, 0x14, 0xeb, 0xae, 0x1f, 0x94,
0xe7, 0x84, 0xe3, 0x17, 0x17, 0xac, 0xfe, 0x46, 0x02, 0xb2, 0xfc, 0xa0, 0x4d, 0x5c, 0xc4, 0x4a,
0x14, 0x37, 0xf1, 0xc8, 0xf2, 0xd5, 0xf3, 0xa3, 0xc0, 0x55, 0x11, 0xb4, 0xf1, 0xad, 0x29, 0xf9,
0xca, 0xef, 0x42, 0x31, 0x8e, 0x78, 0xa6, 0x8d, 0xf9, 0x35, 0x28, 0xd0, 0xbd, 0x2f, 0xa3, 0xc1,
0x3b, 0x90, 0xe5, 0xc6, 0x22, 0xbc, 0x87, 0xce, 0x0f, 0x49, 0x05, 0x25, 0xba, 0x0b, 0xd3, 0x3c,
0x8c, 0x95, 0x2f, 0x1e, 0x4b, 0x17, 0x9f, 0x30, 0x2c, 0xc9, 0xd5, 0x0f, 0x20, 0xdd, 0x21, 0xc4,
0x8b, 0xa7, 0x95, 0x13, 0xe7, 0xa6, 0x95, 0x65, 0x5a, 0x32, 0x19, 0x4b, 0x4b, 0xf6, 0xa0, 0xf8,
0x88, 0x58, 0xfd, 0xdd, 0x80, 0x98, 0x4c, 0xd0, 0xeb, 0x90, 0x1e, 0x92, 0x70, 0xf0, 0x8b, 0x13,
0x37, 0x1f, 0x21, 0x1e, 0x66, 0x54, 0xd4, 0xc6, 0x1c, 0x30, 0x6e, 0xf1, 0x58, 0x28, 0x5a, 0xea,
0xdf, 0x26, 0x61, 0xa6, 0xe9, 0xfb, 0x23, 0xdd, 0x31, 0xa4, 0x57, 0xf7, 0xc5, 0x71, 0xaf, 0x6e,
0xe2, 0xab, 0xea, 0x38, 0xcb, 0x78, 0xb6, 0x55, 0xdc, 0xac, 0xc9, 0xf0, 0x66, 0x55, 0xff, 0x2d,
0x21, 0x53, 0xaa, 0xd7, 0x63, 0xa6, 0x80, 0xc7, 0x88, 0x71, 0x49, 0x64, 0xcb, 0xd9, 0x73, 0xdc,
0x03, 0x87, 0x06, 0xb8, 0xb8, 0xd1, 0x6a, 0x3c, 0x52, 0x12, 0x7c, 0x7b, 0x8e, 0x11, 0x61, 0xe2,
0x90, 0x03, 0x2a, 0xa9, 0xd3, 0x68, 0xd5, 0xa9, 0x17, 0x96, 0x9c, 0x20, 0xa9, 0x43, 0x1c, 0xd3,
0x72, 0xfa, 0xe8, 0x65, 0xc8, 0x36, 0xbb, 0xdd, 0x2d, 0x16, 0x42, 0x3e, 0x7f, 0x74, 0xbc, 0x32,
0x37, 0x46, 0xc5, 0x1e, 0x09, 0x4c, 0x4a, 0x44, 0x43, 0x20, 0xea, 0x9f, 0x4d, 0x20, 0xa2, 0xbe,
0x35, 0x27, 0xc2, 0xed, 0x5e, 0xa5, 0xd7, 0x50, 0x32, 0x13, 0x88, 0xb0, 0x4b, 0xff, 0x8a, 0xe3,
0xf6, 0x8f, 0x49, 0x50, 0x2a, 0x86, 0x41, 0x86, 0x01, 0xc5, 0x8b, 0xa8, 0xb3, 0x07, 0xb9, 0x21,
0xfd, 0xb2, 0x88, 0xf4, 0xa0, 0xee, 0x4e, 0xac, 0x0b, 0x38, 0xc3, 0xb7, 0x8a, 0x5d, 0x9b, 0x54,
0xcc, 0x81, 0xe5, 0xfb, 0x96, 0xeb, 0x70, 0x18, 0x0e, 0x25, 0x95, 0xff, 0x23, 0x01, 0x73, 0x13,
0x28, 0xd0, 0x6d, 0x48, 0x7b, 0xae, 0x2d, 0xd7, 0xf0, 0xda, 0x79, 0xd9, 0x72, 0xca, 0x8a, 0x19,
0x25, 0x5a, 0x02, 0xd0, 0x47, 0x81, 0xab, 0xb3, 0xfe, 0x79, 0x8e, 0x11, 0xc7, 0x20, 0xe8, 0x11,
0x64, 0x7d, 0x62, 0x78, 0x44, 0xfa, 0xd9, 0x1f, 0xfc, 0xa8, 0xa3, 0x5f, 0xed, 0x32, 0x31, 0x58,
0x88, 0x2b, 0xaf, 0x42, 0x96, 0x43, 0xe8, 0xb6, 0x37, 0xf5, 0x40, 0x17, 0x2f, 0x44, 0xec, 0x9b,
0xee, 0x26, 0xdd, 0xee, 0xcb, 0xdd, 0xa4, 0xdb, 0x7d, 0xf5, 0x2f, 0x93, 0x00, 0x8d, 0xc7, 0x01,
0xf1, 0x1c, 0xdd, 0xae, 0x55, 0x50, 0x23, 0x76, 0x33, 0xf0, 0xd9, 0xbe, 0x36, 0xf1, 0x75, 0x2d,
0xe4, 0x58, 0xad, 0x55, 0x26, 0xdc, 0x0d, 0x57, 0x21, 0x35, 0xf2, 0x44, 0xa9, 0x07, 0xf7, 0x91,
0xb7, 0xf0, 0x06, 0xa6, 0x30, 0xd4, 0x88, 0xa7, 0x7b, 0xce, 0x2d, 0xe8, 0x88, 0x75, 0x30, 0xd1,
0x74, 0xd1, 0x93, 0x6f, 0xe8, 0x9a, 0x41, 0xc4, 0xad, 0x52, 0xe4, 0x27, 0xbf, 0x56, 0xa9, 0x11,
0x2f, 0xc0, 0x59, 0x43, 0xa7, 0xff, 0x3f, 0x95, 0x7d, 0x7b, 0x1d, 0x20, 0x9a, 0x1a, 0x5a, 0x82,
0x4c, 0x6d, 0xad, 0xdb, 0xdd, 0x50, 0xa6, 0xb8, 0x01, 0x8f, 0x50, 0x0c, 0xac, 0xfe, 0x69, 0x12,
0x72, 0xb5, 0x8a, 0xb8, 0x72, 0x6b, 0xa0, 0x30, 0xab, 0xc4, 0xde, 0xd5, 0xc8, 0xe3, 0xa1, 0xe5,
0x1d, 0x0a, 0xc3, 0x72, 0x41, 0xc0, 0x3b, 0x43, 0x59, 0xe8, 0xa8, 0x1b, 0x8c, 0x01, 0x61, 0x28,
0x12, 0xa1, 0x04, 0xcd, 0xd0, 0xa5, 0x8d, 0x5f, 0xba, 0x58, 0x59, 0x3c, 0x74, 0x89, 0xda, 0x3e,
0x2e, 0x48, 0x21, 0x35, 0xdd, 0x47, 0xef, 0xc0, 0xac, 0x6f, 0xf5, 0x1d, 0xcb, 0xe9, 0x6b, 0x52,
0x79, 0xec, 0x91, 0xaf, 0x7a, 0xe5, 0xf4, 0x64, 0xb9, 0xd4, 0xe5, 0x28, 0xa1, 0xc3, 0x92, 0xa0,
0xac, 0x31, 0x55, 0xa2, 0xb7, 0x61, 0x26, 0xc6, 0x4a, 0xb5, 0xc8, 0xd5, 0xce, 0x12, 0xe7, 0x21,
0xe7, 0x03, 0x72, 0x88, 0x8b, 0x21, 0xe3, 0x03, 0xc2, 0x72, 0x33, 0x2c, 0xcd, 0xac, 0x79, 0xec,
0x4c, 0xb3, 0xdb, 0x3d, 0x8d, 0x0b, 0x0c, 0xc6, 0x8f, 0xb9, 0xfa, 0x10, 0xe6, 0xda, 0x9e, 0xb1,
0x4b, 0xfc, 0x80, 0xab, 0x42, 0x68, 0xf1, 0x03, 0xb8, 0x16, 0xe8, 0xfe, 0x9e, 0xb6, 0x6b, 0xf9,
0x81, 0xeb, 0x1d, 0x6a, 0x1e, 0x09, 0x88, 0x43, 0xf1, 0x1a, 0x2b, 0x83, 0x10, 0x19, 0xc7, 0xab,
0x94, 0x66, 0x9d, 0x93, 0x60, 0x49, 0xb1, 0x41, 0x09, 0xd4, 0x26, 0x14, 0x69, 0x08, 0x23, 0x92,
0x6a, 0x74, 0xf6, 0x60, 0xbb, 0x7d, 0xed, 0xa9, 0xaf, 0xa9, 0xbc, 0xed, 0xf6, 0xf9, 0xa7, 0xfa,
0x65, 0x50, 0xea, 0x96, 0x3f, 0xd4, 0x03, 0x63, 0x57, 0xa6, 0x52, 0x51, 0x1d, 0x94, 0x5d, 0xa2,
0x7b, 0xc1, 0x36, 0xd1, 0x03, 0x6d, 0x48, 0x3c, 0xcb, 0x35, 0x2f, 0x5f, 0xe5, 0xd9, 0x90, 0xa5,
0xc3, 0x38, 0xd4, 0xff, 0x4a, 0x00, 0x60, 0x7d, 0x47, 0x7a, 0x6b, 0x9f, 0x85, 0x2b, 0xbe, 0xa3,
0x0f, 0xfd, 0x5d, 0x37, 0xd0, 0x2c, 0x27, 0x20, 0xde, 0xbe, 0x6e, 0x8b, 0xe4, 0x8e, 0x22, 0x11,
0x4d, 0x01, 0x47, 0xaf, 0x03, 0xda, 0x23, 0x64, 0xa8, 0xb9, 0xb6, 0xa9, 0x49, 0x24, 0x2f, 0x8f,
0x48, 0x63, 0x85, 0x62, 0xda, 0xb6, 0xd9, 0x95, 0x70, 0x54, 0x85, 0x25, 0x3a, 0x7d, 0xe2, 0x04,
0x9e, 0x45, 0x7c, 0x6d, 0xc7, 0xf5, 0x34, 0xdf, 0x76, 0x0f, 0xb4, 0x1d, 0xd7, 0xb6, 0xdd, 0x03,
0xe2, 0xc9, 0xbc, 0x59, 0xd9, 0x76, 0xfb, 0x0d, 0x4e, 0xb4, 0xe6, 0x7a, 0x5d, 0xdb, 0x3d, 0x58,
0x93, 0x14, 0xd4, 0xa5, 0x8b, 0xe6, 0x1c, 0x58, 0xc6, 0x9e, 0x74, 0xe9, 0x42, 0x68, 0xcf, 0x32,
0xf6, 0xd0, 0xcb, 0x50, 0x22, 0x36, 0x61, 0xe9, 0x13, 0x4e, 0x95, 0x61, 0x54, 0x45, 0x09, 0xa4,
0x44, 0xea, 0x3d, 0x50, 0x1a, 0x8e, 0xe1, 0x1d, 0x0e, 0x63, 0x6b, 0xfe, 0x3a, 0x20, 0x6a, 0x24,
0x35, 0xdb, 0x35, 0xf6, 0xb4, 0x81, 0xee, 0xe8, 0x7d, 0x3a, 0x2e, 0xfe, 0xf0, 0xaa, 0x50, 0xcc,
0x86, 0x6b, 0xec, 0x6d, 0x0a, 0xb8, 0xfa, 0x0e, 0x40, 0x77, 0xe8, 0x11, 0xdd, 0x6c, 0x53, 0x6f,
0x82, 0xaa, 0x8e, 0xb5, 0x34, 0x53, 0xbc, 0xfa, 0xbb, 0x9e, 0x38, 0xea, 0x0a, 0x47, 0xd4, 0x43,
0xb8, 0xfa, 0xff, 0x61, 0xae, 0x63, 0xeb, 0x06, 0xab, 0xc3, 0xe9, 0x84, 0x2f, 0x89, 0xe8, 0x2e,
0x64, 0x39, 0xa9, 0x58, 0xc9, 0x89, 0xc7, 0x2d, 0xea, 0x73, 0x7d, 0x0a, 0x0b, 0xfa, 0x6a, 0x11,
0x20, 0x92, 0xa3, 0xfe, 0x43, 0x02, 0xf2, 0xa1, 0x7c, 0xb4, 0xc2, 0xdf, 0x01, 0x03, 0x4f, 0xb7,
0x1c, 0x11, 0xf1, 0xe7, 0x71, 0x1c, 0x84, 0x9a, 0x50, 0x18, 0x86, 0xdc, 0x17, 0xfa, 0x73, 0x13,
0x46, 0x8d, 0xe3, 0xbc, 0xe8, 0x5d, 0xc8, 0xcb, 0x32, 0x0b, 0x69, 0x61, 0x2f, 0xae, 0xca, 0x88,
0xc8, 0x65, 0x22, 0xd5, 0x23, 0x43, 0xdb, 0xa2, 0x36, 0x27, 0x1d, 0x26, 0x52, 0xb1, 0x00, 0xa9,
0x5f, 0x04, 0xf8, 0x92, 0x6b, 0x39, 0x3d, 0x77, 0x8f, 0x38, 0xec, 0x71, 0x9c, 0x86, 0x94, 0x44,
0x2a, 0x5a, 0xb4, 0x58, 0xa6, 0x80, 0xaf, 0x52, 0xf8, 0x46, 0xcc, 0x9b, 0xea, 0x5f, 0x24, 0x21,
0x8b, 0x5d, 0x37, 0xa8, 0x55, 0xd0, 0x0a, 0x64, 0x85, 0x29, 0x61, 0x57, 0x54, 0x35, 0x7f, 0x7a,
0xb2, 0x9c, 0xe1, 0x36, 0x24, 0x63, 0x30, 0xe3, 0x11, 0x33, 0xf2, 0xc9, 0xf3, 0x8c, 0x3c, 0xba,
0x0d, 0x45, 0x41, 0xa4, 0xed, 0xea, 0xfe, 0x2e, 0x8f, 0xef, 0xaa, 0x33, 0xa7, 0x27, 0xcb, 0xc0,
0x29, 0xd7, 0x75, 0x7f, 0x17, 0x03, 0xa7, 0xa6, 0xdf, 0xa8, 0x01, 0x85, 0x8f, 0x5c, 0xcb, 0xd1,
0x02, 0x36, 0x09, 0x91, 0x8b, 0x9c, 0xb8, 0xd4, 0xd1, 0x54, 0x45, 0x99, 0x0d, 0x7c, 0x14, 0x4d,
0xbe, 0x01, 0x25, 0xcf, 0x75, 0x03, 0x6e, 0xd9, 0x2c, 0xd7, 0x11, 0x69, 0x8e, 0x95, 0x89, 0xd9,
0x6f, 0xd7, 0x0d, 0xb0, 0xa0, 0xc3, 0x45, 0x2f, 0xd6, 0x42, 0xb7, 0x61, 0xde, 0xd6, 0xfd, 0x40,
0x63, 0x26, 0xd1, 0x8c, 0xa4, 0x65, 0x99, 0xf2, 0x11, 0xc5, 0xb1, 0x07, 0x3c, 0x53, 0x72, 0xa8,
0x7f, 0x9f, 0x80, 0x02, 0x9d, 0x8c, 0xb5, 0x63, 0x19, 0xd4, 0x0f, 0x7c, 0x76, 0xf7, 0xe4, 0x2a,
0xa4, 0x0c, 0xdf, 0x13, 0x4a, 0x65, 0xf7, 0x73, 0xad, 0x8b, 0x31, 0x85, 0xa1, 0x7b, 0x90, 0x15,
0xe9, 0x16, 0xee, 0x99, 0xa8, 0x97, 0x7b, 0xac, 0x42, 0x37, 0x82, 0x8f, 0x6d, 0xf7, 0x68, 0x74,
0xfc, 0x9e, 0xc0, 0x71, 0x10, 0x5a, 0x80, 0xa4, 0xc1, 0xd5, 0x25, 0xea, 0xb8, 0x6a, 0x2d, 0x9c,
0x34, 0x1c, 0xf5, 0x3b, 0x09, 0x28, 0x45, 0x36, 0x81, 0xee, 0x80, 0x6b, 0x90, 0xf7, 0x47, 0xdb,
0xfe, 0xa1, 0x1f, 0x90, 0x81, 0x7c, 0xf8, 0x0f, 0x01, 0xa8, 0x09, 0x79, 0xdd, 0xee, 0xbb, 0x9e,
0x15, 0xec, 0x0e, 0x44, 0x20, 0x3b, 0xd9, 0x9b, 0x88, 0xcb, 0x5c, 0xad, 0x48, 0x16, 0x1c, 0x71,
0x4b, 0xd7, 0x80, 0xd7, 0xbc, 0x30, 0xd7, 0xe0, 0x25, 0x28, 0xda, 0xfa, 0x80, 0xe5, 0x9f, 0x02,
0x6b, 0x40, 0xe4, 0x61, 0x10, 0xb0, 0x9e, 0x35, 0x20, 0xaa, 0x0a, 0xf9, 0x50, 0x18, 0x9a, 0x85,
0x42, 0xa5, 0xd1, 0xd5, 0xde, 0xb8, 0x73, 0x57, 0xbb, 0x5f, 0xdb, 0x54, 0xa6, 0x84, 0xfb, 0xfa,
0xc7, 0x09, 0x28, 0x09, 0x8b, 0x25, 0x42, 0x82, 0x97, 0x61, 0xda, 0xd3, 0x77, 0x02, 0x19, 0xb4,
0xa4, 0xf9, 0xae, 0xa6, 0x97, 0x00, 0x0d, 0x5a, 0x28, 0x6a, 0x72, 0xd0, 0x12, 0x2b, 0x45, 0x49,
0x5d, 0x58, 0x8a, 0x92, 0xfe, 0xb1, 0x94, 0xa2, 0xa8, 0x3f, 0x0b, 0xb0, 0x66, 0xd9, 0xa4, 0xc7,
0x53, 0x55, 0x93, 0x42, 0x50, 0xea, 0xe6, 0x85, 0x15, 0x3d, 0xdc, 0xcd, 0x6b, 0xd6, 0x31, 0x85,
0x51, 0x54, 0xdf, 0x32, 0xc5, 0x61, 0x64, 0xa8, 0xfb, 0x14, 0xd5, 0xb7, 0xcc, 0xf0, 0x65, 0x30,
0x7d, 0xc9, 0xcb, 0xa0, 0x3a, 0x0b, 0x25, 0xcc, 0x73, 0x6c, 0x7c, 0x0c, 0xea, 0x71, 0x02, 0x66,
0x85, 0xbf, 0x1b, 0x9a, 0xec, 0xd7, 0x20, 0xcf, 0x5d, 0xdf, 0x28, 0x08, 0x64, 0xf5, 0x18, 0x9c,
0xae, 0x59, 0xc7, 0x39, 0x8e, 0x6e, 0x9a, 0x68, 0x19, 0x0a, 0x82, 0x34, 0x56, 0x04, 0x08, 0x1c,
0xc4, 0xaa, 0x94, 0xde, 0x82, 0xf4, 0x8e, 0x65, 0x13, 0xb1, 0xf3, 0x27, 0x5a, 0x84, 0x48, 0x23,
0xeb, 0x53, 0x98, 0x51, 0x57, 0x73, 0x32, 0xb9, 0xa7, 0xfe, 0x53, 0x82, 0xa5, 0x98, 0x69, 0xa8,
0x1a, 0x1f, 0x1f, 0x8f, 0x5a, 0xcf, 0x8c, 0x8f, 0xd3, 0xd1, 0xf1, 0x71, 0x34, 0x1f, 0x9f, 0x20,
0x8d, 0x8f, 0x8f, 0x83, 0x7e, 0xf4, 0xf1, 0xa1, 0xf7, 0x61, 0x5a, 0xa4, 0x2a, 0x85, 0xa9, 0x7b,
0x69, 0xe2, 0xce, 0x88, 0x6b, 0x7a, 0x7d, 0x0a, 0x4b, 0x9e, 0xd8, 0xf4, 0x36, 0x60, 0xa1, 0x6a,
0xeb, 0xc6, 0x9e, 0x6d, 0xf9, 0x01, 0x31, 0xe3, 0x16, 0xe8, 0x0e, 0x64, 0xc7, 0xfc, 0xdc, 0x8b,
0x92, 0xa8, 0x82, 0x52, 0xfd, 0xfd, 0x24, 0x14, 0xd7, 0x89, 0x6e, 0x07, 0xbb, 0x51, 0xa6, 0x2a,
0x20, 0x7e, 0x20, 0xee, 0x47, 0xf6, 0x8d, 0x3e, 0x0f, 0xb9, 0xd0, 0x0d, 0xba, 0xf4, 0x39, 0x30,
0x24, 0x45, 0x6f, 0xc2, 0x34, 0x1d, 0xbb, 0x3b, 0x92, 0xf1, 0xd5, 0x45, 0x2f, 0x4d, 0x82, 0x92,
0x5e, 0x5a, 0x1e, 0x61, 0x7e, 0x0f, 0xd3, 0x53, 0x06, 0xcb, 0x26, 0xfa, 0x02, 0x14, 0xd9, 0x43,
0x89, 0x74, 0xf3, 0x32, 0x97, 0xc9, 0x2c, 0xf0, 0xb7, 0x4e, 0x46, 0x8d, 0xee, 0xc1, 0x0c, 0xe7,
0x0e, 0x67, 0x92, 0xbd, 0x8c, 0xbf, 0xc4, 0x18, 0xa4, 0xa3, 0xa7, 0xfe, 0x41, 0x12, 0xe6, 0x37,
0xf5, 0xc3, 0x6d, 0x22, 0x0c, 0x19, 0x31, 0x31, 0x31, 0x5c, 0xcf, 0x44, 0x9d, 0xb8, 0x01, 0xbc,
0xe0, 0xf1, 0x75, 0x12, 0xf3, 0x64, 0x3b, 0x28, 0xa3, 0xc6, 0x64, 0x2c, 0x6a, 0x9c, 0x87, 0x8c,
0xe3, 0x3a, 0x06, 0x11, 0xd6, 0x91, 0x37, 0xd4, 0xaf, 0x27, 0xe2, 0xd6, 0xaf, 0x1c, 0x3e, 0x8c,
0xb2, 0xb4, 0x59, 0xcb, 0x0d, 0xc2, 0xee, 0xd0, 0x3d, 0x28, 0x77, 0x1b, 0x35, 0xdc, 0xe8, 0x55,
0xdb, 0x5f, 0xd6, 0xba, 0x95, 0x8d, 0x6e, 0xe5, 0xce, 0x6d, 0xad, 0xd3, 0xde, 0xf8, 0xf0, 0x8d,
0x37, 0x6f, 0x7f, 0x5e, 0x49, 0x94, 0x57, 0x8e, 0x8e, 0x57, 0xae, 0xb5, 0x2a, 0xb5, 0x0d, 0x7e,
0x66, 0xb7, 0xdd, 0xc7, 0x5d, 0xdd, 0xf6, 0xf5, 0x3b, 0xb7, 0x3b, 0xae, 0x7d, 0x48, 0x69, 0xd0,
0x67, 0x01, 0xad, 0x35, 0x70, 0xab, 0xd1, 0xd3, 0xa4, 0x89, 0xad, 0x55, 0x6b, 0x4a, 0x92, 0xc7,
0x62, 0x6b, 0xc4, 0x73, 0x48, 0x50, 0x69, 0x74, 0xdf, 0xb8, 0x73, 0xb7, 0x56, 0xad, 0x51, 0x2b,
0x51, 0x8c, 0xdf, 0xb7, 0x71, 0x37, 0x22, 0x71, 0xae, 0x1b, 0x11, 0x79, 0x23, 0xc9, 0x73, 0xbc,
0x91, 0x35, 0x98, 0x37, 0x3c, 0xd7, 0xf7, 0x35, 0x1a, 0xe0, 0x10, 0xf3, 0x4c, 0x08, 0xf5, 0xdc,
0xe9, 0xc9, 0xf2, 0x95, 0x1a, 0xc5, 0x77, 0x19, 0x5a, 0x88, 0xbf, 0x62, 0xc4, 0x40, 0xac, 0x27,
0xf5, 0x4f, 0x52, 0xd4, 0x57, 0xb4, 0xf6, 0x2d, 0x9b, 0xf4, 0x89, 0x8f, 0x1e, 0xc2, 0xac, 0xe1,
0x11, 0x93, 0x46, 0x2e, 0xba, 0x1d, 0xaf, 0xc0, 0xff, 0xdc, 0x44, 0xb7, 0x2d, 0x64, 0x5c, 0xad,
0x85, 0x5c, 0xdd, 0x21, 0x31, 0xf0, 0x8c, 0x31, 0xd6, 0x46, 0x1f, 0xc1, 0xac, 0x4f, 0x6c, 0xcb,
0x19, 0x3d, 0xd6, 0x0c, 0xd7, 0x09, 0xc8, 0x63, 0xf9, 0x20, 0x78, 0x99, 0xdc, 0x6e, 0x63, 0x83,
0x72, 0xd5, 0x38, 0x53, 0x15, 0x9d, 0x9e, 0x2c, 0xcf, 0x8c, 0xc3, 0xf0, 0x8c, 0x90, 0x2c, 0xda,
0xe5, 0x5d, 0x98, 0x19, 0x1f, 0x0d, 0x9a, 0x17, 0xa6, 0x8a, 0x59, 0xbc, 0xd0, 0x14, 0x5d, 0x83,
0x9c, 0x47, 0xfa, 0x96, 0x1f, 0x78, 0x5c, 0xcd, 0x14, 0x13, 0x42, 0xd0, 0x22, 0x64, 0x63, 0x65,
0x2d, 0x14, 0x27, 0xda, 0xd4, 0x06, 0xf1, 0xaa, 0xbc, 0xf2, 0x4f, 0xc3, 0x99, 0xb1, 0xd0, 0x63,
0x6b, 0x5a, 0xbe, 0xbe, 0x2d, 0x3a, 0xcb, 0x61, 0xd9, 0xa4, 0x7b, 0x79, 0xe4, 0x87, 0x2e, 0x28,
0xfb, 0xa6, 0x30, 0xe6, 0x2b, 0x89, 0x1a, 0x45, 0xe6, 0x0d, 0xc9, 0x4a, 0xf1, 0x74, 0xac, 0x52,
0x7c, 0x1e, 0x32, 0x36, 0xd9, 0x27, 0x36, 0xf7, 0x52, 0x30, 0x6f, 0xb0, 0x3d, 0xff, 0x25, 0x77,
0x5b, 0x5c, 0xe4, 0x6b, 0x50, 0xfa, 0xc8, 0xdd, 0xd6, 0xac, 0x80, 0x78, 0x51, 0x85, 0x5a, 0xe1,
0xce, 0x0b, 0x93, 0xf4, 0x2b, 0x0a, 0xc6, 0x85, 0xab, 0x54, 0xfc, 0xc8, 0xdd, 0x6e, 0x4a, 0x36,
0x54, 0x81, 0x19, 0xe6, 0x01, 0x92, 0xc7, 0xc4, 0x18, 0x31, 0x41, 0x97, 0xbf, 0xdc, 0x96, 0x28,
0x47, 0x43, 0x32, 0xa8, 0xdf, 0xcc, 0x80, 0xc2, 0xcb, 0x5d, 0x2a, 0xac, 0xae, 0x95, 0x65, 0xa6,
0xef, 0x41, 0xc6, 0x37, 0xdc, 0xb0, 0x1c, 0x72, 0x62, 0x4a, 0xfd, 0x2c, 0xd3, 0x6a, 0x97, 0x72,
0x60, 0xce, 0x88, 0xd6, 0x60, 0xda, 0xdf, 0xd5, 0x3d, 0xcb, 0xe9, 0x0b, 0xf7, 0xea, 0xf5, 0xa7,
0x93, 0xc1, 0x79, 0xb0, 0x64, 0x46, 0xeb, 0x90, 0xd9, 0xa6, 0x31, 0x9d, 0xb0, 0xc6, 0xb7, 0x9f,
0x4a, 0x4a, 0x95, 0x72, 0x70, 0xe8, 0xfa, 0x14, 0xe6, 0x02, 0xa8, 0x24, 0x56, 0x54, 0x27, 0xae,
0xb2, 0xa7, 0x93, 0xc4, 0xca, 0x58, 0x22, 0x49, 0x4c, 0x40, 0xb9, 0x04, 0x85, 0x58, 0x0f, 0xe5,
0xfb, 0x50, 0x88, 0x91, 0xa1, 0xe7, 0x61, 0x7a, 0xc7, 0xd7, 0x62, 0x3f, 0x20, 0xc8, 0xee, 0xf8,
0xac, 0x16, 0x69, 0x19, 0x0a, 0x8c, 0x5f, 0xdb, 0xb1, 0xf5, 0xbe, 0x7c, 0xb6, 0x03, 0x06, 0x5a,
0xa3, 0x10, 0xd5, 0x80, 0x0c, 0xd3, 0x21, 0xba, 0x09, 0x85, 0x6e, 0xb3, 0x75, 0x7f, 0xa3, 0xa1,
0xb5, 0xda, 0x75, 0x6a, 0x19, 0x59, 0xd5, 0x19, 0x97, 0xcf, 0x28, 0xba, 0x96, 0xd3, 0xb7, 0x09,
0xab, 0x64, 0xbe, 0x01, 0xb0, 0xb9, 0xb5, 0xd1, 0x6b, 0x72, 0x52, 0x51, 0xf1, 0x13, 0x23, 0xdd,
0x1c, 0xd9, 0x81, 0x45, 0x29, 0x85, 0x57, 0xf9, 0x7b, 0x09, 0x98, 0x16, 0x5a, 0x46, 0xcb, 0xa1,
0xe9, 0x7d, 0xee, 0xe8, 0x78, 0xe5, 0x8a, 0xe0, 0xe2, 0x48, 0x56, 0x97, 0x72, 0x83, 0xd5, 0x02,
0xd7, 0xb5, 0x76, 0x6b, 0xe3, 0x43, 0x25, 0x31, 0x36, 0x0c, 0xb1, 0x50, 0xa2, 0x50, 0x10, 0xdd,
0x04, 0x68, 0xb7, 0x1a, 0xda, 0x23, 0xdc, 0xec, 0x35, 0xb0, 0x2c, 0x29, 0x1a, 0x23, 0x6d, 0x3b,
0xe4, 0x91, 0x47, 0x77, 0x3c, 0x7a, 0x11, 0x52, 0x95, 0x8d, 0x0d, 0x25, 0xc5, 0xcb, 0x5c, 0xc6,
0x88, 0x2a, 0xb6, 0xcd, 0xc7, 0x59, 0x2d, 0x41, 0x81, 0x17, 0x5a, 0x33, 0x55, 0xaa, 0x77, 0xa1,
0x28, 0x08, 0x79, 0x8e, 0xf2, 0xc9, 0x84, 0xdc, 0x42, 0x98, 0x18, 0x95, 0xcf, 0x77, 0xac, 0xa5,
0xfe, 0x4e, 0x0a, 0xe6, 0x38, 0xab, 0x78, 0x22, 0x89, 0x9c, 0xe9, 0xcb, 0x5f, 0x00, 0x6a, 0xe3,
0xaf, 0xdd, 0x9f, 0x3b, 0x7f, 0xd3, 0x8c, 0x09, 0x1f, 0xcf, 0xc4, 0x9b, 0x30, 0x2b, 0xdf, 0xa9,
0xa4, 0x3d, 0xe5, 0xe1, 0xf5, 0x7b, 0x4f, 0x2b, 0x4e, 0xb4, 0x84, 0xe1, 0xe2, 0x09, 0x4d, 0xf9,
0x44, 0x16, 0xb3, 0x66, 0xf2, 0x8d, 0x3d, 0x33, 0xf6, 0xc6, 0x5e, 0xae, 0xc0, 0xdc, 0x04, 0x01,
0xcf, 0x94, 0xd3, 0xfc, 0xaa, 0x7c, 0x39, 0x98, 0x83, 0x59, 0x91, 0xef, 0xd7, 0x3a, 0x5b, 0xd5,
0x8d, 0x66, 0x77, 0x5d, 0x99, 0x42, 0x25, 0xc8, 0x8b, 0x46, 0xa3, 0xae, 0x24, 0x50, 0x19, 0x16,
0x24, 0x0d, 0xdd, 0x94, 0xda, 0x56, 0x4b, 0x92, 0x26, 0xd1, 0x73, 0x70, 0x45, 0xe2, 0x22, 0x70,
0x4a, 0xfd, 0xeb, 0x24, 0x00, 0x9f, 0x38, 0xfb, 0x55, 0xc0, 0x75, 0x98, 0x31, 0xf4, 0xa1, 0x6e,
0x58, 0xc1, 0xe1, 0x58, 0x95, 0x60, 0x49, 0x42, 0x79, 0xa5, 0xe0, 0x97, 0xc3, 0x9a, 0xe4, 0xe8,
0x9e, 0x3a, 0xf7, 0xb7, 0x34, 0x91, 0x78, 0xf1, 0x39, 0xa6, 0x4d, 0x51, 0x9d, 0x2c, 0x95, 0xf9,
0x1a, 0xe4, 0x85, 0xe4, 0x30, 0x14, 0x61, 0xbe, 0xb7, 0x10, 0x52, 0xc7, 0x39, 0x8e, 0x6e, 0x9a,
0xe7, 0xff, 0x94, 0x20, 0xf5, 0xa3, 0xfc, 0x94, 0xa0, 0x7c, 0x0f, 0xd0, 0x93, 0xc3, 0x7b, 0xa6,
0xb5, 0x7a, 0x04, 0xa5, 0x9a, 0x50, 0x13, 0x66, 0x4f, 0xd5, 0xd7, 0x61, 0xc6, 0xe3, 0x3f, 0x1e,
0x33, 0xc7, 0xb5, 0x29, 0xa1, 0x5c, 0x9b, 0xcb, 0x50, 0x60, 0xf9, 0xd1, 0xb1, 0x5f, 0xb3, 0x01,
0x03, 0x31, 0x02, 0xf5, 0xef, 0xd2, 0xe1, 0x55, 0xe1, 0x53, 0x4f, 0x86, 0xa5, 0xa8, 0x16, 0x20,
0x19, 0x9e, 0x20, 0x16, 0x91, 0x37, 0xeb, 0x38, 0x69, 0x99, 0xe3, 0x1a, 0x4c, 0x5e, 0xa8, 0xc1,
0xe8, 0x05, 0x30, 0xf5, 0xd4, 0x2f, 0x80, 0x5f, 0x7d, 0x62, 0xe9, 0xb9, 0xc2, 0xff, 0xdf, 0x05,
0x66, 0x3d, 0x1c, 0xf4, 0x53, 0x6c, 0x00, 0xfd, 0xc9, 0x33, 0x9b, 0x39, 0xff, 0xb5, 0xe8, 0x89,
0x0e, 0x9e, 0xe6, 0xc0, 0x36, 0x42, 0x0b, 0xc7, 0x82, 0x5a, 0xee, 0xda, 0xbf, 0xf2, 0x34, 0xd7,
0x12, 0x06, 0x3d, 0xba, 0xab, 0xdf, 0x85, 0x69, 0x6e, 0xe9, 0x7c, 0xf1, 0x6b, 0xa1, 0x95, 0xf3,
0x45, 0x88, 0x10, 0x58, 0x32, 0x7c, 0xfa, 0xcd, 0xf6, 0xe3, 0xb0, 0x2d, 0x5f, 0x09, 0x77, 0x55,
0x58, 0x15, 0x72, 0xee, 0xae, 0x7a, 0xc6, 0x9f, 0x5c, 0xa8, 0xbf, 0x98, 0x80, 0xb9, 0xf0, 0xb8,
0x45, 0x3f, 0xa0, 0x44, 0xef, 0x42, 0x9e, 0x6d, 0x7e, 0xdf, 0x62, 0x0f, 0xac, 0x97, 0x1f, 0xd5,
0x88, 0x9c, 0xe5, 0x49, 0x59, 0xda, 0xd4, 0x23, 0xa6, 0x30, 0x38, 0x97, 0xf0, 0x86, 0xe4, 0xea,
0x2f, 0x25, 0x20, 0x27, 0xe1, 0x68, 0x0d, 0x72, 0x3e, 0xe9, 0xb3, 0x1f, 0x74, 0x8a, 0x31, 0xdc,
0xbc, 0x48, 0xce, 0x6a, 0x57, 0x10, 0x8b, 0x32, 0x11, 0xc9, 0x5b, 0x7e, 0x0f, 0x4a, 0x63, 0xa8,
0x67, 0xd2, 0xfe, 0xf7, 0xc3, 0x43, 0x4d, 0x8d, 0x86, 0xf8, 0x85, 0x50, 0xe8, 0x75, 0x25, 0x2e,
0xf3, 0x95, 0x22, 0xa6, 0x4b, 0xbc, 0xae, 0xe4, 0x33, 0x48, 0x9a, 0xe4, 0x75, 0xa1, 0xce, 0xf8,
0x71, 0xe1, 0xa6, 0xe2, 0xd6, 0x53, 0xc9, 0x9b, 0x7c, 0x72, 0xfe, 0xaf, 0xfc, 0xb8, 0xf2, 0x7f,
0x27, 0x00, 0x62, 0xce, 0xf4, 0xba, 0xc8, 0x5a, 0x71, 0x5f, 0xfa, 0xad, 0x67, 0x1c, 0xf1, 0x6a,
0x2c, 0xad, 0xf5, 0x5b, 0x09, 0x48, 0x33, 0x91, 0x63, 0xa5, 0x3c, 0x0b, 0x80, 0x62, 0xde, 0xa2,
0x74, 0xc1, 0x12, 0xe8, 0x05, 0x78, 0x3e, 0x0e, 0xa7, 0x8e, 0x5c, 0x03, 0x73, 0x57, 0x2e, 0x49,
0xef, 0xe8, 0xc8, 0x6d, 0x1c, 0xc3, 0xa5, 0xd0, 0x35, 0x58, 0x8c, 0xe1, 0x84, 0x0c, 0x21, 0x36,
0x4d, 0xc5, 0xc6, 0xb0, 0xfc, 0x53, 0x20, 0x33, 0x67, 0xbc, 0xb6, 0x9b, 0x5f, 0x80, 0xa2, 0xfc,
0x21, 0x26, 0x53, 0x5d, 0x0e, 0xd2, 0xbd, 0x4a, 0xf7, 0x81, 0x32, 0x85, 0x00, 0xb2, 0x3c, 0xb2,
0xe7, 0xc5, 0x9b, 0xb5, 0x76, 0x6b, 0xad, 0x79, 0x5f, 0x49, 0xd2, 0x6f, 0x51, 0x93, 0x9f, 0xba,
0xf9, 0x6b, 0x69, 0xc8, 0x87, 0xa5, 0x84, 0xe8, 0x2a, 0xa4, 0x5a, 0x8d, 0x47, 0x32, 0x4d, 0x10,
0xc2, 0x5b, 0xe4, 0x00, 0xbd, 0x14, 0x15, 0x21, 0xdc, 0xe3, 0x4e, 0x65, 0x88, 0x96, 0x05, 0x08,
0xaf, 0x40, 0xae, 0xd2, 0xed, 0x36, 0xef, 0xb7, 0x1a, 0x75, 0xe5, 0x93, 0x04, 0xf7, 0x77, 0x43,
0x22, 0x6e, 0xb8, 0x89, 0xc9, 0xa8, 0x6a, 0xb5, 0x46, 0xa7, 0xd7, 0xa8, 0x2b, 0x1f, 0x27, 0xcf,
0x52, 0xb1, 0x47, 0x75, 0xf6, 0xb3, 0x91, 0x7c, 0x07, 0x37, 0x3a, 0x15, 0x4c, 0x3b, 0xfc, 0x24,
0xc9, 0x6b, 0x23, 0xa2, 0x1e, 0x3d, 0x32, 0xe4, 0xee, 0xf5, 0x92, 0xfc, 0x85, 0xda, 0xc7, 0x29,
0xfe, 0xfb, 0x81, 0xa8, 0x2e, 0x92, 0xe8, 0xe6, 0x21, 0xed, 0x8d, 0x15, 0xa4, 0x32, 0x31, 0xa9,
0x33, 0xbd, 0x75, 0x03, 0xdd, 0x0b, 0xa8, 0x14, 0x15, 0xa6, 0xf1, 0x56, 0xab, 0x45, 0x89, 0x3e,
0x4e, 0x9f, 0x99, 0x1d, 0x1e, 0x39, 0x0e, 0xa5, 0xb9, 0x0e, 0x39, 0x59, 0xaf, 0xaa, 0x7c, 0x92,
0x3e, 0x33, 0xa0, 0x9a, 0x2c, 0xb6, 0x65, 0x1d, 0xae, 0x6f, 0xf5, 0xd8, 0x0f, 0xe8, 0x3e, 0xce,
0x9c, 0xed, 0x70, 0x77, 0x14, 0x98, 0xee, 0x81, 0x83, 0x56, 0xc2, 0x32, 0x8c, 0x4f, 0x32, 0x3c,
0x4f, 0x12, 0xd2, 0x88, 0x1a, 0x8c, 0x57, 0x20, 0x87, 0x1b, 0x5f, 0xe2, 0xbf, 0xb5, 0xfb, 0x38,
0x7b, 0x46, 0x0e, 0x26, 0x1f, 0x11, 0x83, 0xf6, 0xb6, 0x02, 0x59, 0xdc, 0xd8, 0x6c, 0x3f, 0x6c,
0x28, 0xbf, 0x9d, 0x3d, 0x23, 0x07, 0x93, 0x81, 0xcb, 0x7e, 0x57, 0x93, 0x6b, 0xe3, 0xce, 0x7a,
0x85, 0x2d, 0xca, 0x59, 0x39, 0x6d, 0x6f, 0xb8, 0xab, 0x3b, 0xc4, 0x8c, 0x7e, 0x20, 0x11, 0xa2,
0x6e, 0x7e, 0x15, 0x72, 0xf2, 0x5d, 0x02, 0x2d, 0x41, 0xf6, 0x51, 0x1b, 0x3f, 0x68, 0x60, 0x65,
0x8a, 0x6b, 0x59, 0x62, 0x1e, 0xf1, 0x17, 0xa5, 0x15, 0x98, 0xde, 0xac, 0xb4, 0x2a, 0xf7, 0xe9,
0x99, 0xe0, 0xc3, 0x90, 0x04, 0x22, 0xb9, 0x5e, 0x56, 0x44, 0x07, 0xa1, 0xcc, 0xea, 0x2b, 0xdf,
0xfa, 0xc1, 0xd2, 0xd4, 0xf7, 0x7e, 0xb0, 0x34, 0xf5, 0xf1, 0xe9, 0x52, 0xe2, 0x5b, 0xa7, 0x4b,
0x89, 0x6f, 0x9f, 0x2e, 0x25, 0xfe, 0xe5, 0x74, 0x29, 0xf1, 0xcb, 0x3f, 0x5c, 0x9a, 0xfa, 0xf6,
0x0f, 0x97, 0xa6, 0xbe, 0xf7, 0xc3, 0xa5, 0xa9, 0xed, 0x2c, 0x8b, 0xae, 0xdf, 0xfc, 0xdf, 0x00,
0x00, 0x00, 0xff, 0xff, 0x15, 0x67, 0x77, 0xf9, 0x97, 0x43, 0x00, 0x00,
}
func (m *Version) Copy() *Version {
@ -6685,6 +6690,10 @@ func (m *HealthConfig) CopyFrom(src interface{}) {
m.StartPeriod = &types.Duration{}
github_com_moby_swarmkit_v2_api_deepcopy.Copy(m.StartPeriod, o.StartPeriod)
}
if o.StartInterval != nil {
m.StartInterval = &types.Duration{}
github_com_moby_swarmkit_v2_api_deepcopy.Copy(m.StartInterval, o.StartInterval)
}
}
func (m *MaybeEncryptedRecord) Copy() *MaybeEncryptedRecord {
@ -10172,6 +10181,18 @@ func (m *HealthConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
if m.StartInterval != nil {
{
size, err := m.StartInterval.MarshalToSizedBuffer(dAtA[:i])
if err != nil {
return 0, err
}
i -= size
i = encodeVarintTypes(dAtA, i, uint64(size))
}
i--
dAtA[i] = 0x32
}
if m.StartPeriod != nil {
{
size, err := m.StartPeriod.MarshalToSizedBuffer(dAtA[:i])
@ -12647,6 +12668,10 @@ func (m *HealthConfig) Size() (n int) {
l = m.StartPeriod.Size()
n += 1 + l + sovTypes(uint64(l))
}
if m.StartInterval != nil {
l = m.StartInterval.Size()
n += 1 + l + sovTypes(uint64(l))
}
return n
}
@ -14044,6 +14069,7 @@ func (this *HealthConfig) String() string {
`Timeout:` + strings.Replace(fmt.Sprintf("%v", this.Timeout), "Duration", "types.Duration", 1) + `,`,
`Retries:` + fmt.Sprintf("%v", this.Retries) + `,`,
`StartPeriod:` + strings.Replace(fmt.Sprintf("%v", this.StartPeriod), "Duration", "types.Duration", 1) + `,`,
`StartInterval:` + strings.Replace(fmt.Sprintf("%v", this.StartInterval), "Duration", "types.Duration", 1) + `,`,
`}`,
}, "")
return s
@ -23363,6 +23389,42 @@ func (m *HealthConfig) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
case 6:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field StartInterval", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowTypes
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
msglen |= int(b&0x7F) << shift
if b < 0x80 {
break
}
}
if msglen < 0 {
return ErrInvalidLengthTypes
}
postIndex := iNdEx + msglen
if postIndex < 0 {
return ErrInvalidLengthTypes
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
if m.StartInterval == nil {
m.StartInterval = &types.Duration{}
}
if err := m.StartInterval.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
return err
}
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipTypes(dAtA[iNdEx:])

View File

@ -1103,6 +1103,12 @@ message HealthConfig {
// which health check failures will note count towards the maximum
// number of retries.
google.protobuf.Duration start_period = 5;
// StartInterval is the time to wait between checks during the start period.
// Zero means inherit.
// Note: can't use stdduration because this field needs to be nullable.
google.protobuf.Duration start_interval = 6;
}
message MaybeEncryptedRecord {

View File

@ -59,10 +59,4 @@ const (
// AnnotationBaseImageName is the annotation key for the image reference of the image's base image.
AnnotationBaseImageName = "org.opencontainers.image.base.name"
// AnnotationArtifactCreated is the annotation key for the date and time on which the artifact was built, conforming to RFC 3339.
AnnotationArtifactCreated = "org.opencontainers.artifact.created"
// AnnotationArtifactDescription is the annotation key for the human readable description for the artifact.
AnnotationArtifactDescription = "org.opencontainers.artifact.description"
)

View File

@ -52,7 +52,7 @@ type Descriptor struct {
// Platform describes the platform which the image in the manifest runs on.
type Platform struct {
// Architecture field specifies the CPU architecture, for example
// `amd64` or `ppc64`.
// `amd64` or `ppc64le`.
Architecture string `json:"architecture"`
// OS specifies the operating system, for example `linux` or `windows`.
@ -70,3 +70,11 @@ type Platform struct {
// example `v7` to specify ARMv7 when architecture is `arm`.
Variant string `json:"variant,omitempty"`
}
// DescriptorEmptyJSON is the descriptor of a blob with content of `{}`.
var DescriptorEmptyJSON = Descriptor{
MediaType: MediaTypeEmptyJSON,
Digest: `sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a`,
Size: 2,
Data: []byte(`{}`),
}

View File

@ -24,9 +24,15 @@ type Index struct {
// MediaType specifies the type of this document data structure e.g. `application/vnd.oci.image.index.v1+json`
MediaType string `json:"mediaType,omitempty"`
// ArtifactType specifies the IANA media type of artifact when the manifest is used for an artifact.
ArtifactType string `json:"artifactType,omitempty"`
// Manifests references platform specific manifests.
Manifests []Descriptor `json:"manifests"`
// Subject is an optional link from the image manifest to another manifest forming an association between the image manifest and the other manifest.
Subject *Descriptor `json:"subject,omitempty"`
// Annotations contains arbitrary metadata for the image index.
Annotations map[string]string `json:"annotations,omitempty"`
}

View File

@ -39,11 +39,3 @@ type Manifest struct {
// Annotations contains arbitrary metadata for the image manifest.
Annotations map[string]string `json:"annotations,omitempty"`
}
// ScratchDescriptor is the descriptor of a blob with content of `{}`.
var ScratchDescriptor = Descriptor{
MediaType: MediaTypeScratch,
Digest: `sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a`,
Size: 2,
Data: []byte(`{}`),
}

View File

@ -70,6 +70,6 @@ const (
// MediaTypeImageConfig specifies the media type for the image configuration.
MediaTypeImageConfig = "application/vnd.oci.image.config.v1+json"
// MediaTypeScratch specifies the media type for an unused blob containing the value `{}`
MediaTypeScratch = "application/vnd.oci.scratch.v1+json"
// MediaTypeEmptyJSON specifies the media type for an unused blob containing the value `{}`
MediaTypeEmptyJSON = "application/vnd.oci.empty.v1+json"
)

View File

@ -25,7 +25,7 @@ const (
VersionPatch = 0
// VersionDev indicates development branch. Releases will be empty string.
VersionDev = "-rc.3"
VersionDev = "-rc.4"
)
// Version is the specification version that the package types support.

6
vendor/modules.txt vendored
View File

@ -49,7 +49,7 @@ github.com/docker/distribution/registry/client/transport
github.com/docker/distribution/registry/storage/cache
github.com/docker/distribution/registry/storage/cache/memory
github.com/docker/distribution/uuid
# github.com/docker/docker v24.0.0-rc.2.0.20230714195812-dab9ffb25218+incompatible
# github.com/docker/docker v24.0.0-rc.2.0.20230807181406-4b19b2f4babd+incompatible
## explicit
github.com/docker/docker/api
github.com/docker/docker/api/types
@ -172,7 +172,7 @@ github.com/moby/buildkit/util/appcontext
# github.com/moby/patternmatcher v0.5.0
## explicit; go 1.19
github.com/moby/patternmatcher
# github.com/moby/swarmkit/v2 v2.0.0-20230707182847-6f78b8199b05
# github.com/moby/swarmkit/v2 v2.0.0-20230713153928-bc71908479e5
## explicit; go 1.18
github.com/moby/swarmkit/v2/api
github.com/moby/swarmkit/v2/api/deepcopy
@ -199,7 +199,7 @@ github.com/morikuni/aec
# github.com/opencontainers/go-digest v1.0.0
## explicit; go 1.13
github.com/opencontainers/go-digest
# github.com/opencontainers/image-spec v1.1.0-rc3
# github.com/opencontainers/image-spec v1.1.0-rc4
## explicit; go 1.18
github.com/opencontainers/image-spec/specs-go
github.com/opencontainers/image-spec/specs-go/v1