Merge pull request #62 from abhinandanpb/master

Adding network specific option in csv format for service create/update
This commit is contained in:
Madhu Venugopal 2017-05-17 21:17:23 -07:00 committed by GitHub
commit 3dfb8343b1
29 changed files with 767 additions and 778 deletions

View File

@ -396,17 +396,18 @@ func (c *credentialSpecOpt) Value() *swarm.CredentialSpec {
return c.value
}
func convertNetworks(ctx context.Context, apiClient client.NetworkAPIClient, networks []string) ([]swarm.NetworkAttachmentConfig, error) {
nets := []swarm.NetworkAttachmentConfig{}
for _, networkIDOrName := range networks {
network, err := apiClient.NetworkInspect(ctx, networkIDOrName, false)
func convertNetworks(ctx context.Context, apiClient client.NetworkAPIClient, networks opts.NetworkOpt) ([]swarm.NetworkAttachmentConfig, error) {
var netAttach []swarm.NetworkAttachmentConfig
for _, net := range networks.Value() {
networkIDOrName := net.Target
_, err := apiClient.NetworkInspect(ctx, networkIDOrName, false)
if err != nil {
return nil, err
}
nets = append(nets, swarm.NetworkAttachmentConfig{Target: network.ID})
netAttach = append(netAttach, swarm.NetworkAttachmentConfig{Target: net.Target, Aliases: net.Aliases, DriverOpts: net.DriverOpts})
}
sort.Sort(byNetworkTarget(nets))
return nets, nil
sort.Sort(byNetworkTarget(netAttach))
return netAttach, nil
}
type endpointOptions struct {
@ -539,7 +540,7 @@ type serviceOptions struct {
placementPrefs placementPrefOpts
update updateOptions
rollback updateOptions
networks opts.ListOpts
networks opts.NetworkOpt
endpoint endpointOptions
registryAuth bool
@ -565,7 +566,6 @@ func newServiceOptions() *serviceOptions {
dnsOption: opts.NewListOpts(nil),
dnsSearch: opts.NewListOpts(opts.ValidateDNSSearch),
hosts: opts.NewListOpts(opts.ValidateExtraHost),
networks: opts.NewListOpts(nil),
}
}
@ -627,7 +627,7 @@ func (opts *serviceOptions) ToService(ctx context.Context, apiClient client.Netw
return service, err
}
networks, err := convertNetworks(ctx, apiClient, opts.networks.GetAll())
networks, err := convertNetworks(ctx, apiClient, opts.networks)
if err != nil {
return service, err
}

View File

@ -1028,8 +1028,8 @@ func updateNetworks(ctx context.Context, apiClient client.NetworkAPIClient, flag
}
if flags.Changed(flagNetworkAdd) {
values := flags.Lookup(flagNetworkAdd).Value.(*opts.ListOpts).GetAll()
networks, err := convertNetworks(ctx, apiClient, values)
values := flags.Lookup(flagNetworkAdd).Value.(*opts.NetworkOpt)
networks, err := convertNetworks(ctx, apiClient, *values)
if err != nil {
return err
}

106
opts/network.go Normal file
View File

@ -0,0 +1,106 @@
package opts
import (
"encoding/csv"
"fmt"
"regexp"
"strings"
)
const (
networkOptName = "name"
networkOptAlias = "alias"
driverOpt = "driver-opt"
)
// NetworkAttachmentOpts represents the network options for endpoint creation
type NetworkAttachmentOpts struct {
Target string
Aliases []string
DriverOpts map[string]string
}
// NetworkOpt represents a network config in swarm mode.
type NetworkOpt struct {
options []NetworkAttachmentOpts
}
// Set networkopts value
func (n *NetworkOpt) Set(value string) error {
longSyntax, err := regexp.MatchString(`\w+=\w+(,\w+=\w+)*`, value)
if err != nil {
return err
}
var netOpt NetworkAttachmentOpts
if longSyntax {
csvReader := csv.NewReader(strings.NewReader(value))
fields, err := csvReader.Read()
if err != nil {
return err
}
netOpt.Aliases = []string{}
for _, field := range fields {
parts := strings.SplitN(field, "=", 2)
if len(parts) < 2 {
return fmt.Errorf("invalid field %s", field)
}
key := strings.TrimSpace(strings.ToLower(parts[0]))
value := strings.TrimSpace(strings.ToLower(parts[1]))
switch key {
case networkOptName:
netOpt.Target = value
case networkOptAlias:
netOpt.Aliases = append(netOpt.Aliases, value)
case driverOpt:
key, value, err = parseDriverOpt(value)
if err == nil {
if netOpt.DriverOpts == nil {
netOpt.DriverOpts = make(map[string]string)
}
netOpt.DriverOpts[key] = value
} else {
return err
}
default:
return fmt.Errorf("invalid field key %s", key)
}
}
if len(netOpt.Target) == 0 {
return fmt.Errorf("network name/id is not specified")
}
} else {
netOpt.Target = value
}
n.options = append(n.options, netOpt)
return nil
}
// Type returns the type of this option
func (n *NetworkOpt) Type() string {
return "network"
}
// Value returns the networkopts
func (n *NetworkOpt) Value() []NetworkAttachmentOpts {
return n.options
}
// String returns the network opts as a string
func (n *NetworkOpt) String() string {
return ""
}
func parseDriverOpt(driverOpt string) (key string, value string, err error) {
parts := strings.SplitN(driverOpt, "=", 2)
if len(parts) != 2 {
err = fmt.Errorf("invalid key value pair format in driver options")
}
key = strings.TrimSpace(strings.ToLower(parts[0]))
value = strings.TrimSpace(strings.ToLower(parts[1]))
return
}

100
opts/network_test.go Normal file
View File

@ -0,0 +1,100 @@
package opts
import (
"testing"
"github.com/docker/docker/pkg/testutil"
"github.com/stretchr/testify/assert"
)
func TestNetworkOptLegacySyntax(t *testing.T) {
testCases := []struct {
value string
expected []NetworkAttachmentOpts
}{
{
value: "docknet1",
expected: []NetworkAttachmentOpts{
{
Target: "docknet1",
},
},
},
}
for _, tc := range testCases {
var network NetworkOpt
assert.NoError(t, network.Set(tc.value))
assert.Equal(t, tc.expected, network.Value())
}
}
func TestNetworkOptCompleteSyntax(t *testing.T) {
testCases := []struct {
value string
expected []NetworkAttachmentOpts
}{
{
value: "name=docknet1,alias=web,driver-opt=field1=value1",
expected: []NetworkAttachmentOpts{
{
Target: "docknet1",
Aliases: []string{"web"},
DriverOpts: map[string]string{
"field1": "value1",
},
},
},
},
{
value: "name=docknet1,alias=web1,alias=web2,driver-opt=field1=value1,driver-opt=field2=value2",
expected: []NetworkAttachmentOpts{
{
Target: "docknet1",
Aliases: []string{"web1", "web2"},
DriverOpts: map[string]string{
"field1": "value1",
"field2": "value2",
},
},
},
},
{
value: "name=docknet1",
expected: []NetworkAttachmentOpts{
{
Target: "docknet1",
Aliases: []string{},
},
},
},
}
for _, tc := range testCases {
var network NetworkOpt
assert.NoError(t, network.Set(tc.value))
assert.Equal(t, tc.expected, network.Value())
}
}
func TestNetworkOptInvalidSyntax(t *testing.T) {
testCases := []struct {
value string
expectedError string
}{
{
value: "invalidField=docknet1",
expectedError: "invalid field",
},
{
value: "network=docknet1,invalid=web",
expectedError: "invalid field",
},
{
value: "driver-opt=field1=value1,driver-opt=field2=value2",
expectedError: "network name/id is not specified",
},
}
for _, tc := range testCases {
var network NetworkOpt
testutil.ErrorContains(t, network.Set(tc.value), tc.expectedError)
}
}

View File

@ -6,7 +6,7 @@ github.com/agl/ed25519 d2b94fd789ea21d12fac1a4443dd3a3f79cda72c
github.com/coreos/etcd 824277cb3a577a0e8c829ca9ec557b973fe06d20
github.com/davecgh/go-spew 346938d642f2ec3594ed81d874461961cd0faa76
github.com/docker/distribution b38e5838b7b2f2ad48e06ec4b500011976080621
github.com/docker/docker 4874e05f7452d7d9c60db50296d04c802ce76ae1
github.com/docker/docker 45c6f4262a865a03adaac291a9ce33c0f2190d77
github.com/docker/docker-credential-helpers v0.5.0
github.com/docker/go d30aec9fd63c35133f8f79c3412ad91a3b08be06
github.com/docker/go-connections e15c02316c12de00874640cd76311849de2aeed5
@ -15,7 +15,7 @@ github.com/docker/go-units 9e638d38cf6977a37a8ea0078f3ee75a7cdb2dd1
github.com/docker/libnetwork b13e0604016a4944025aaff521d9c125850b0d04
github.com/docker/libtrust 9cbd2a1374f46905c68a4eb3694a130610adc62a
github.com/docker/notary v0.4.2
github.com/docker/swarmkit 998a47fb9c2b727c8a48d372309af0b3032051e2
github.com/docker/swarmkit 1a3e510517be82d18ac04380b5f71eddf06c2fc0
github.com/flynn-archive/go-shlex 3f9db97f856818214da2e1057f8ad84803971cff
github.com/gogo/protobuf 7efa791bd276fd4db00867cbd982b552627c24cb
github.com/golang/protobuf 8ee79997227bf9b34611aee7946ae64735e6fd93

View File

@ -58,6 +58,7 @@ type EndpointSettings struct {
GlobalIPv6Address string
GlobalIPv6PrefixLen int
MacAddress string
DriverOpts map[string]string
}
// Task carries the information about one backend task

View File

@ -94,8 +94,9 @@ type NetworkSpec struct {
// NetworkAttachmentConfig represents the configuration of a network attachment.
type NetworkAttachmentConfig struct {
Target string `json:",omitempty"`
Aliases []string `json:",omitempty"`
Target string `json:",omitempty"`
Aliases []string `json:",omitempty"`
DriverOpts map[string]string `json:",omitempty"`
}
// NetworkAttachment represents a network attachment.

21
vendor/github.com/docker/docker/pkg/term/tc.go generated vendored Normal file
View File

@ -0,0 +1,21 @@
// +build !windows
// +build !solaris !cgo
package term
import (
"syscall"
"unsafe"
"golang.org/x/sys/unix"
)
func tcget(fd uintptr, p *Termios) syscall.Errno {
_, _, err := unix.Syscall(unix.SYS_IOCTL, fd, uintptr(getTermios), uintptr(unsafe.Pointer(p)))
return err
}
func tcset(fd uintptr, p *Termios) syscall.Errno {
_, _, err := unix.Syscall(unix.SYS_IOCTL, fd, setTermios, uintptr(unsafe.Pointer(p)))
return err
}

View File

@ -1,51 +0,0 @@
// +build linux,cgo
package term
import (
"syscall"
"unsafe"
)
// #include <termios.h>
import "C"
// Termios is the Unix API for terminal I/O.
// It is passthrough for syscall.Termios in order to make it portable with
// other platforms where it is not available or handled differently.
type Termios syscall.Termios
// MakeRaw put the terminal connected to the given file descriptor into raw
// mode and returns the previous state of the terminal so that it can be
// restored.
func MakeRaw(fd uintptr) (*State, error) {
var oldState State
if err := tcget(fd, &oldState.termios); err != 0 {
return nil, err
}
newState := oldState.termios
C.cfmakeraw((*C.struct_termios)(unsafe.Pointer(&newState)))
newState.Oflag = newState.Oflag | C.OPOST
if err := tcset(fd, &newState); err != 0 {
return nil, err
}
return &oldState, nil
}
func tcget(fd uintptr, p *Termios) syscall.Errno {
ret, err := C.tcgetattr(C.int(fd), (*C.struct_termios)(unsafe.Pointer(p)))
if ret != 0 {
return err.(syscall.Errno)
}
return 0
}
func tcset(fd uintptr, p *Termios) syscall.Errno {
ret, err := C.tcsetattr(C.int(fd), C.TCSANOW, (*C.struct_termios)(unsafe.Pointer(p)))
if ret != 0 {
return err.(syscall.Errno)
}
return 0
}

View File

@ -1,21 +0,0 @@
// +build !windows
// +build !linux !cgo
// +build !linux !ppc64le
// +build !solaris !cgo
package term
import (
"syscall"
"unsafe"
)
func tcget(fd uintptr, p *Termios) syscall.Errno {
_, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(getTermios), uintptr(unsafe.Pointer(p)))
return err
}
func tcset(fd uintptr, p *Termios) syscall.Errno {
_, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, setTermios, uintptr(unsafe.Pointer(p)))
return err
}

View File

@ -5,6 +5,8 @@ package term
import (
"syscall"
"unsafe"
"golang.org/x/sys/unix"
)
// #include <termios.h>
@ -13,7 +15,7 @@ import "C"
// Termios is the Unix API for terminal I/O.
// It is passthrough for syscall.Termios in order to make it portable with
// other platforms where it is not available or handled differently.
type Termios syscall.Termios
type Termios unix.Termios
// MakeRaw put the terminal connected to the given file descriptor into raw
// mode and returns the previous state of the terminal so that it can be

View File

@ -10,7 +10,8 @@ import (
"io"
"os"
"os/signal"
"syscall"
"golang.org/x/sys/unix"
)
var (
@ -79,7 +80,7 @@ func SaveState(fd uintptr) (*State, error) {
// descriptor, with echo disabled.
func DisableEcho(fd uintptr, state *State) error {
newState := state.termios
newState.Lflag &^= syscall.ECHO
newState.Lflag &^= unix.ECHO
if err := tcset(fd, &newState); err != 0 {
return err

View File

@ -6,10 +6,10 @@ import (
"io"
"os"
"os/signal"
"syscall"
"github.com/Azure/go-ansiterm/winterm"
"github.com/docker/docker/pkg/term/windows"
"golang.org/x/sys/windows"
)
// State holds the console mode for the terminal.
@ -79,19 +79,19 @@ func StdStreams() (stdIn io.ReadCloser, stdOut, stdErr io.Writer) {
}
if emulateStdin {
stdIn = windows.NewAnsiReader(syscall.STD_INPUT_HANDLE)
stdIn = windowsconsole.NewAnsiReader(windows.STD_INPUT_HANDLE)
} else {
stdIn = os.Stdin
}
if emulateStdout {
stdOut = windows.NewAnsiWriter(syscall.STD_OUTPUT_HANDLE)
stdOut = windowsconsole.NewAnsiWriter(windows.STD_OUTPUT_HANDLE)
} else {
stdOut = os.Stdout
}
if emulateStderr {
stdErr = windows.NewAnsiWriter(syscall.STD_ERROR_HANDLE)
stdErr = windowsconsole.NewAnsiWriter(windows.STD_ERROR_HANDLE)
} else {
stdErr = os.Stderr
}
@ -101,7 +101,7 @@ func StdStreams() (stdIn io.ReadCloser, stdOut, stdErr io.Writer) {
// GetFdInfo returns the file descriptor for an os.File and indicates whether the file represents a terminal.
func GetFdInfo(in interface{}) (uintptr, bool) {
return windows.GetHandleInfo(in)
return windowsconsole.GetHandleInfo(in)
}
// GetWinsize returns the window size based on the specified file descriptor.
@ -121,7 +121,7 @@ func GetWinsize(fd uintptr) (*Winsize, error) {
// IsTerminal returns true if the given file descriptor is a terminal.
func IsTerminal(fd uintptr) bool {
return windows.IsConsole(fd)
return windowsconsole.IsConsole(fd)
}
// RestoreTerminal restores the terminal connected to the given file descriptor

View File

@ -0,0 +1,42 @@
// +build darwin freebsd openbsd
package term
import (
"unsafe"
"golang.org/x/sys/unix"
)
const (
getTermios = unix.TIOCGETA
setTermios = unix.TIOCSETA
)
// Termios is the Unix API for terminal I/O.
type Termios unix.Termios
// MakeRaw put the terminal connected to the given file descriptor into raw
// mode and returns the previous state of the terminal so that it can be
// restored.
func MakeRaw(fd uintptr) (*State, error) {
var oldState State
if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, getTermios, uintptr(unsafe.Pointer(&oldState.termios))); err != 0 {
return nil, err
}
newState := oldState.termios
newState.Iflag &^= (unix.IGNBRK | unix.BRKINT | unix.PARMRK | unix.ISTRIP | unix.INLCR | unix.IGNCR | unix.ICRNL | unix.IXON)
newState.Oflag &^= unix.OPOST
newState.Lflag &^= (unix.ECHO | unix.ECHONL | unix.ICANON | unix.ISIG | unix.IEXTEN)
newState.Cflag &^= (unix.CSIZE | unix.PARENB)
newState.Cflag |= unix.CS8
newState.Cc[unix.VMIN] = 1
newState.Cc[unix.VTIME] = 0
if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, setTermios, uintptr(unsafe.Pointer(&newState))); err != 0 {
return nil, err
}
return &oldState, nil
}

View File

@ -1,69 +0,0 @@
package term
import (
"syscall"
"unsafe"
)
const (
getTermios = syscall.TIOCGETA
setTermios = syscall.TIOCSETA
)
// Termios magic numbers, passthrough to the ones defined in syscall.
const (
IGNBRK = syscall.IGNBRK
PARMRK = syscall.PARMRK
INLCR = syscall.INLCR
IGNCR = syscall.IGNCR
ECHONL = syscall.ECHONL
CSIZE = syscall.CSIZE
ICRNL = syscall.ICRNL
ISTRIP = syscall.ISTRIP
PARENB = syscall.PARENB
ECHO = syscall.ECHO
ICANON = syscall.ICANON
ISIG = syscall.ISIG
IXON = syscall.IXON
BRKINT = syscall.BRKINT
INPCK = syscall.INPCK
OPOST = syscall.OPOST
CS8 = syscall.CS8
IEXTEN = syscall.IEXTEN
)
// Termios is the Unix API for terminal I/O.
type Termios struct {
Iflag uint64
Oflag uint64
Cflag uint64
Lflag uint64
Cc [20]byte
Ispeed uint64
Ospeed uint64
}
// MakeRaw put the terminal connected to the given file descriptor into raw
// mode and returns the previous state of the terminal so that it can be
// restored.
func MakeRaw(fd uintptr) (*State, error) {
var oldState State
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(getTermios), uintptr(unsafe.Pointer(&oldState.termios))); err != 0 {
return nil, err
}
newState := oldState.termios
newState.Iflag &^= (IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON)
newState.Oflag &^= OPOST
newState.Lflag &^= (ECHO | ECHONL | ICANON | ISIG | IEXTEN)
newState.Cflag &^= (CSIZE | PARENB)
newState.Cflag |= CS8
newState.Cc[syscall.VMIN] = 1
newState.Cc[syscall.VTIME] = 0
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(setTermios), uintptr(unsafe.Pointer(&newState))); err != 0 {
return nil, err
}
return &oldState, nil
}

View File

@ -1,69 +0,0 @@
package term
import (
"syscall"
"unsafe"
)
const (
getTermios = syscall.TIOCGETA
setTermios = syscall.TIOCSETA
)
// Termios magic numbers, passthrough to the ones defined in syscall.
const (
IGNBRK = syscall.IGNBRK
PARMRK = syscall.PARMRK
INLCR = syscall.INLCR
IGNCR = syscall.IGNCR
ECHONL = syscall.ECHONL
CSIZE = syscall.CSIZE
ICRNL = syscall.ICRNL
ISTRIP = syscall.ISTRIP
PARENB = syscall.PARENB
ECHO = syscall.ECHO
ICANON = syscall.ICANON
ISIG = syscall.ISIG
IXON = syscall.IXON
BRKINT = syscall.BRKINT
INPCK = syscall.INPCK
OPOST = syscall.OPOST
CS8 = syscall.CS8
IEXTEN = syscall.IEXTEN
)
// Termios is the Unix API for terminal I/O.
type Termios struct {
Iflag uint32
Oflag uint32
Cflag uint32
Lflag uint32
Cc [20]byte
Ispeed uint32
Ospeed uint32
}
// MakeRaw put the terminal connected to the given file descriptor into raw
// mode and returns the previous state of the terminal so that it can be
// restored.
func MakeRaw(fd uintptr) (*State, error) {
var oldState State
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(getTermios), uintptr(unsafe.Pointer(&oldState.termios))); err != 0 {
return nil, err
}
newState := oldState.termios
newState.Iflag &^= (IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON)
newState.Oflag &^= OPOST
newState.Lflag &^= (ECHO | ECHONL | ICANON | ISIG | IEXTEN)
newState.Cflag &^= (CSIZE | PARENB)
newState.Cflag |= CS8
newState.Cc[syscall.VMIN] = 1
newState.Cc[syscall.VTIME] = 0
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(setTermios), uintptr(unsafe.Pointer(&newState))); err != 0 {
return nil, err
}
return &oldState, nil
}

View File

@ -1,46 +1,37 @@
// +build !cgo
package term
import (
"syscall"
"unsafe"
"golang.org/x/sys/unix"
)
const (
getTermios = syscall.TCGETS
setTermios = syscall.TCSETS
getTermios = unix.TCGETS
setTermios = unix.TCSETS
)
// Termios is the Unix API for terminal I/O.
type Termios struct {
Iflag uint32
Oflag uint32
Cflag uint32
Lflag uint32
Cc [20]byte
Ispeed uint32
Ospeed uint32
}
type Termios unix.Termios
// MakeRaw put the terminal connected to the given file descriptor into raw
// mode and returns the previous state of the terminal so that it can be
// restored.
func MakeRaw(fd uintptr) (*State, error) {
var oldState State
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, getTermios, uintptr(unsafe.Pointer(&oldState.termios))); err != 0 {
if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, getTermios, uintptr(unsafe.Pointer(&oldState.termios))); err != 0 {
return nil, err
}
newState := oldState.termios
newState.Iflag &^= (syscall.IGNBRK | syscall.BRKINT | syscall.PARMRK | syscall.ISTRIP | syscall.INLCR | syscall.IGNCR | syscall.ICRNL | syscall.IXON)
newState.Oflag |= syscall.OPOST
newState.Lflag &^= (syscall.ECHO | syscall.ECHONL | syscall.ICANON | syscall.ISIG | syscall.IEXTEN)
newState.Cflag &^= (syscall.CSIZE | syscall.PARENB)
newState.Cflag |= syscall.CS8
newState.Iflag &^= (unix.IGNBRK | unix.BRKINT | unix.PARMRK | unix.ISTRIP | unix.INLCR | unix.IGNCR | unix.ICRNL | unix.IXON)
newState.Oflag |= unix.OPOST
newState.Lflag &^= (unix.ECHO | unix.ECHONL | unix.ICANON | unix.ISIG | unix.IEXTEN)
newState.Cflag &^= (unix.CSIZE | unix.PARENB)
newState.Cflag |= unix.CS8
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, setTermios, uintptr(unsafe.Pointer(&newState))); err != 0 {
if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, setTermios, uintptr(unsafe.Pointer(&newState))); err != 0 {
return nil, err
}
return &oldState, nil

View File

@ -1,69 +0,0 @@
package term
import (
"syscall"
"unsafe"
)
const (
getTermios = syscall.TIOCGETA
setTermios = syscall.TIOCSETA
)
// Termios magic numbers, passthrough to the ones defined in syscall.
const (
IGNBRK = syscall.IGNBRK
PARMRK = syscall.PARMRK
INLCR = syscall.INLCR
IGNCR = syscall.IGNCR
ECHONL = syscall.ECHONL
CSIZE = syscall.CSIZE
ICRNL = syscall.ICRNL
ISTRIP = syscall.ISTRIP
PARENB = syscall.PARENB
ECHO = syscall.ECHO
ICANON = syscall.ICANON
ISIG = syscall.ISIG
IXON = syscall.IXON
BRKINT = syscall.BRKINT
INPCK = syscall.INPCK
OPOST = syscall.OPOST
CS8 = syscall.CS8
IEXTEN = syscall.IEXTEN
)
// Termios is the Unix API for terminal I/O.
type Termios struct {
Iflag uint32
Oflag uint32
Cflag uint32
Lflag uint32
Cc [20]byte
Ispeed uint32
Ospeed uint32
}
// MakeRaw put the terminal connected to the given file descriptor into raw
// mode and returns the previous state of the terminal so that it can be
// restored.
func MakeRaw(fd uintptr) (*State, error) {
var oldState State
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(getTermios), uintptr(unsafe.Pointer(&oldState.termios))); err != 0 {
return nil, err
}
newState := oldState.termios
newState.Iflag &^= (IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON)
newState.Oflag &^= OPOST
newState.Lflag &^= (ECHO | ECHONL | ICANON | ISIG | IEXTEN)
newState.Cflag &^= (CSIZE | PARENB)
newState.Cflag |= CS8
newState.Cc[syscall.VMIN] = 1
newState.Cc[syscall.VTIME] = 0
if _, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(setTermios), uintptr(unsafe.Pointer(&newState))); err != 0 {
return nil, err
}
return &oldState, nil
}

View File

@ -1,6 +1,6 @@
// +build windows
package windows
package windowsconsole
import (
"bytes"

View File

@ -1,6 +1,6 @@
// +build windows
package windows
package windowsconsole
import (
"io"

View File

@ -1,6 +1,6 @@
// +build windows
package windows
package windowsconsole
import (
"os"

View File

@ -2,7 +2,7 @@
// When asked for the set of standard streams (e.g., stdin, stdout, stderr), the code will create
// and return pseudo-streams that convert ANSI sequences to / from Windows Console API calls.
package windows
package windowsconsole
import (
"io/ioutil"

View File

@ -3,14 +3,15 @@
package term
import (
"syscall"
"unsafe"
"golang.org/x/sys/unix"
)
// GetWinsize returns the window size based on the specified file descriptor.
func GetWinsize(fd uintptr) (*Winsize, error) {
ws := &Winsize{}
_, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(syscall.TIOCGWINSZ), uintptr(unsafe.Pointer(ws)))
_, _, err := unix.Syscall(unix.SYS_IOCTL, fd, uintptr(unix.TIOCGWINSZ), uintptr(unsafe.Pointer(ws)))
// Skipp errno = 0
if err == 0 {
return ws, nil
@ -20,7 +21,7 @@ func GetWinsize(fd uintptr) (*Winsize, error) {
// SetWinsize tries to set the specified window size for the specified file descriptor.
func SetWinsize(fd uintptr, ws *Winsize) error {
_, _, err := syscall.Syscall(syscall.SYS_IOCTL, fd, uintptr(syscall.TIOCSWINSZ), uintptr(unsafe.Pointer(ws)))
_, _, err := unix.Syscall(unix.SYS_IOCTL, fd, uintptr(unix.TIOCSWINSZ), uintptr(unsafe.Pointer(ws)))
// Skipp errno = 0
if err == 0 {
return nil

View File

@ -1,10 +1,11 @@
// +build solaris
// +build solaris,cgo
package term
import (
"syscall"
"unsafe"
"golang.org/x/sys/unix"
)
/*
@ -22,7 +23,7 @@ import "C"
// GetWinsize returns the window size based on the specified file descriptor.
func GetWinsize(fd uintptr) (*Winsize, error) {
ws := &Winsize{}
ret, err := C.my_ioctl(C.int(fd), C.int(syscall.TIOCGWINSZ), (*C.struct_winsize)(unsafe.Pointer(ws)))
ret, err := C.my_ioctl(C.int(fd), C.int(unix.TIOCGWINSZ), (*C.struct_winsize)(unsafe.Pointer(ws)))
// Skip retval = 0
if ret == 0 {
return ws, nil
@ -32,7 +33,7 @@ func GetWinsize(fd uintptr) (*Winsize, error) {
// SetWinsize tries to set the specified window size for the specified file descriptor.
func SetWinsize(fd uintptr, ws *Winsize) error {
ret, err := C.my_ioctl(C.int(fd), C.int(syscall.TIOCSWINSZ), (*C.struct_winsize)(unsafe.Pointer(ws)))
ret, err := C.my_ioctl(C.int(fd), C.int(unix.TIOCSWINSZ), (*C.struct_winsize)(unsafe.Pointer(ws)))
// Skip retval = 0
if ret == 0 {
return nil

View File

@ -107,7 +107,7 @@ github.com/containerd/containerd 3addd840653146c90a254301d6c3a663c7fd6429
github.com/tonistiigi/fifo 1405643975692217d6720f8b54aeee1bf2cd5cf4
# cluster
github.com/docker/swarmkit 998a47fb9c2b727c8a48d372309af0b3032051e2
github.com/docker/swarmkit 1a3e510517be82d18ac04380b5f71eddf06c2fc0
github.com/gogo/protobuf v0.4
github.com/cloudflare/cfssl 7fb22c8cba7ecaf98e4082d22d65800cf45e042a
github.com/google/certificate-transparency d90e65c3a07988180c5b1ece71791c0b6506826e

View File

@ -217,8 +217,8 @@ type NetworkAttachment struct {
Addresses []string `protobuf:"bytes,2,rep,name=addresses" json:"addresses,omitempty"`
// List of aliases by which a task is resolved in a network
Aliases []string `protobuf:"bytes,3,rep,name=aliases" json:"aliases,omitempty"`
// Map of all the driver options for this network
DriverOpts map[string]string `protobuf:"bytes,4,rep,name=driver_opts,json=driverOpts" json:"driver_opts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// Map of all the driver attachment options for this network
DriverAttachmentOpts map[string]string `protobuf:"bytes,4,rep,name=driver_attachment_opts,json=driverAttachmentOpts" json:"driver_attachment_opts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func (m *NetworkAttachment) Reset() { *m = NetworkAttachment{} }
@ -558,10 +558,10 @@ func (m *NetworkAttachment) CopyFrom(src interface{}) {
copy(m.Aliases, o.Aliases)
}
if o.DriverOpts != nil {
m.DriverOpts = make(map[string]string, len(o.DriverOpts))
for k, v := range o.DriverOpts {
m.DriverOpts[k] = v
if o.DriverAttachmentOpts != nil {
m.DriverAttachmentOpts = make(map[string]string, len(o.DriverAttachmentOpts))
for k, v := range o.DriverAttachmentOpts {
m.DriverAttachmentOpts[k] = v
}
}
@ -1198,11 +1198,11 @@ func (m *NetworkAttachment) MarshalTo(dAtA []byte) (int, error) {
i += copy(dAtA[i:], s)
}
}
if len(m.DriverOpts) > 0 {
for k, _ := range m.DriverOpts {
if len(m.DriverAttachmentOpts) > 0 {
for k, _ := range m.DriverAttachmentOpts {
dAtA[i] = 0x22
i++
v := m.DriverOpts[k]
v := m.DriverAttachmentOpts[k]
mapSize := 1 + len(k) + sovObjects(uint64(len(k))) + 1 + len(v) + sovObjects(uint64(len(v)))
i = encodeVarintObjects(dAtA, i, uint64(mapSize))
dAtA[i] = 0xa
@ -1793,8 +1793,8 @@ func (m *NetworkAttachment) Size() (n int) {
n += 1 + l + sovObjects(uint64(l))
}
}
if len(m.DriverOpts) > 0 {
for k, v := range m.DriverOpts {
if len(m.DriverAttachmentOpts) > 0 {
for k, v := range m.DriverAttachmentOpts {
_ = k
_ = v
mapEntrySize := 1 + len(k) + sovObjects(uint64(len(k))) + 1 + len(v) + sovObjects(uint64(len(v)))
@ -4427,21 +4427,21 @@ func (this *NetworkAttachment) String() string {
if this == nil {
return "nil"
}
keysForDriverOpts := make([]string, 0, len(this.DriverOpts))
for k, _ := range this.DriverOpts {
keysForDriverOpts = append(keysForDriverOpts, k)
keysForDriverAttachmentOpts := make([]string, 0, len(this.DriverAttachmentOpts))
for k, _ := range this.DriverAttachmentOpts {
keysForDriverAttachmentOpts = append(keysForDriverAttachmentOpts, k)
}
github_com_gogo_protobuf_sortkeys.Strings(keysForDriverOpts)
mapStringForDriverOpts := "map[string]string{"
for _, k := range keysForDriverOpts {
mapStringForDriverOpts += fmt.Sprintf("%v: %v,", k, this.DriverOpts[k])
github_com_gogo_protobuf_sortkeys.Strings(keysForDriverAttachmentOpts)
mapStringForDriverAttachmentOpts := "map[string]string{"
for _, k := range keysForDriverAttachmentOpts {
mapStringForDriverAttachmentOpts += fmt.Sprintf("%v: %v,", k, this.DriverAttachmentOpts[k])
}
mapStringForDriverOpts += "}"
mapStringForDriverAttachmentOpts += "}"
s := strings.Join([]string{`&NetworkAttachment{`,
`Network:` + strings.Replace(fmt.Sprintf("%v", this.Network), "Network", "Network", 1) + `,`,
`Addresses:` + fmt.Sprintf("%v", this.Addresses) + `,`,
`Aliases:` + fmt.Sprintf("%v", this.Aliases) + `,`,
`DriverOpts:` + mapStringForDriverOpts + `,`,
`DriverAttachmentOpts:` + mapStringForDriverAttachmentOpts + `,`,
`}`,
}, "")
return s
@ -6144,7 +6144,7 @@ func (m *NetworkAttachment) Unmarshal(dAtA []byte) error {
iNdEx = postIndex
case 4:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field DriverOpts", wireType)
return fmt.Errorf("proto: wrong wireType = %d for field DriverAttachmentOpts", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@ -6208,8 +6208,8 @@ func (m *NetworkAttachment) Unmarshal(dAtA []byte) error {
}
mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
iNdEx = postStringIndexmapkey
if m.DriverOpts == nil {
m.DriverOpts = make(map[string]string)
if m.DriverAttachmentOpts == nil {
m.DriverAttachmentOpts = make(map[string]string)
}
if iNdEx < postIndex {
var valuekey uint64
@ -6252,10 +6252,10 @@ func (m *NetworkAttachment) Unmarshal(dAtA []byte) error {
}
mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
iNdEx = postStringIndexmapvalue
m.DriverOpts[mapkey] = mapvalue
m.DriverAttachmentOpts[mapkey] = mapvalue
} else {
var mapvalue string
m.DriverOpts[mapkey] = mapvalue
m.DriverAttachmentOpts[mapkey] = mapvalue
}
iNdEx = postIndex
default:
@ -7630,96 +7630,96 @@ var (
func init() { proto.RegisterFile("objects.proto", fileDescriptorObjects) }
var fileDescriptorObjects = []byte{
// 1448 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x57, 0xcd, 0x6f, 0x1b, 0x37,
0x16, 0xcf, 0x48, 0x63, 0x7d, 0x3c, 0xd9, 0x5a, 0x2f, 0xe3, 0xf5, 0x4e, 0xb4, 0x5e, 0xc9, 0xab,
0x60, 0x8b, 0xa0, 0x08, 0xe4, 0xd4, 0x4d, 0x0a, 0xc7, 0x6d, 0xda, 0x48, 0xb6, 0xd1, 0x08, 0x69,
0x1a, 0x83, 0x49, 0x9d, 0xde, 0x54, 0x7a, 0x86, 0x51, 0xa6, 0x1a, 0x0d, 0x07, 0x43, 0x4a, 0xa9,
0x6e, 0x3d, 0xfb, 0x1f, 0x30, 0x7a, 0xe9, 0x21, 0xa7, 0xde, 0xdb, 0x4b, 0x2f, 0x3d, 0xe7, 0xd8,
0x53, 0xd1, 0x93, 0xd1, 0xe8, 0xbf, 0x28, 0xd0, 0x43, 0x41, 0x0e, 0x47, 0x1e, 0x5b, 0xe3, 0x8f,
0x14, 0x81, 0xd1, 0xd3, 0x90, 0xc3, 0xdf, 0xef, 0x7d, 0xf1, 0xbd, 0x47, 0x12, 0xe6, 0xd8, 0xee,
0x97, 0xd4, 0x16, 0xbc, 0x11, 0x84, 0x4c, 0x30, 0x84, 0x1c, 0x66, 0xf7, 0x68, 0xd8, 0xe0, 0xcf,
0x49, 0xd8, 0xef, 0xb9, 0xa2, 0x31, 0x7c, 0xa7, 0x52, 0x12, 0xa3, 0x80, 0x6a, 0x40, 0xa5, 0xc4,
0x03, 0x6a, 0xc7, 0x93, 0x5a, 0x97, 0xb1, 0xae, 0x47, 0x57, 0xd4, 0x6c, 0x77, 0xf0, 0x74, 0x45,
0xb8, 0x7d, 0xca, 0x05, 0xe9, 0x07, 0x1a, 0xb0, 0xd0, 0x65, 0x5d, 0xa6, 0x86, 0x2b, 0x72, 0xa4,
0xff, 0x5e, 0x39, 0x4e, 0x23, 0xfe, 0x48, 0x2f, 0x5d, 0x0e, 0xbc, 0x41, 0xd7, 0xf5, 0x57, 0xa2,
0x4f, 0xf4, 0xb3, 0xfe, 0xa3, 0x01, 0xe6, 0x03, 0x2a, 0x08, 0x7a, 0x1f, 0xf2, 0x43, 0x1a, 0x72,
0x97, 0xf9, 0x96, 0xb1, 0x6c, 0x5c, 0x2b, 0xad, 0xfe, 0xa7, 0x31, 0x6d, 0x6f, 0x63, 0x27, 0x82,
0xb4, 0xcc, 0x97, 0x07, 0xb5, 0x4b, 0x38, 0x66, 0xa0, 0xdb, 0x00, 0x76, 0x48, 0x89, 0xa0, 0x4e,
0x87, 0x08, 0x2b, 0xa3, 0xf8, 0x95, 0x46, 0x64, 0x4a, 0x23, 0x36, 0xa5, 0xf1, 0x38, 0xf6, 0x00,
0x17, 0x35, 0xba, 0x29, 0x24, 0x75, 0x10, 0x38, 0x31, 0x35, 0x7b, 0x36, 0x55, 0xa3, 0x9b, 0xa2,
0xfe, 0xbd, 0x09, 0xe6, 0xa7, 0xcc, 0xa1, 0x68, 0x11, 0x32, 0xae, 0xa3, 0xcc, 0x2e, 0xb6, 0x72,
0xe3, 0x83, 0x5a, 0xa6, 0xbd, 0x89, 0x33, 0xae, 0x83, 0x56, 0xc1, 0xec, 0x53, 0x41, 0xb4, 0x41,
0x56, 0x9a, 0x43, 0xd2, 0x77, 0xed, 0x8d, 0xc2, 0xa2, 0xf7, 0xc0, 0x94, 0xdb, 0xa0, 0x2d, 0x59,
0x4a, 0xe3, 0x48, 0x9d, 0x8f, 0x02, 0x6a, 0xc7, 0x3c, 0x89, 0x47, 0x5b, 0x50, 0x72, 0x28, 0xb7,
0x43, 0x37, 0x10, 0x32, 0x86, 0xa6, 0xa2, 0x5f, 0x3d, 0x89, 0xbe, 0x79, 0x08, 0xc5, 0x49, 0x1e,
0xfa, 0x00, 0x72, 0x5c, 0x10, 0x31, 0xe0, 0xd6, 0x8c, 0x92, 0x50, 0x3d, 0xd1, 0x00, 0x85, 0xd2,
0x26, 0x68, 0x0e, 0xba, 0x07, 0xe5, 0x3e, 0xf1, 0x49, 0x97, 0x86, 0x1d, 0x2d, 0x25, 0xa7, 0xa4,
0xfc, 0x2f, 0xd5, 0xf5, 0x08, 0x19, 0x09, 0xc2, 0x73, 0xfd, 0xe4, 0x14, 0x6d, 0x01, 0x10, 0x21,
0x88, 0xfd, 0xac, 0x4f, 0x7d, 0x61, 0xe5, 0x95, 0x94, 0xff, 0xa7, 0xda, 0x42, 0xc5, 0x73, 0x16,
0xf6, 0x9a, 0x13, 0x30, 0x4e, 0x10, 0xd1, 0xc7, 0x50, 0xb2, 0x69, 0x28, 0xdc, 0xa7, 0xae, 0x4d,
0x04, 0xb5, 0x0a, 0x4a, 0x4e, 0x2d, 0x4d, 0xce, 0xc6, 0x21, 0x4c, 0x3b, 0x95, 0x64, 0xa2, 0x1b,
0x60, 0x86, 0xcc, 0xa3, 0x56, 0x71, 0xd9, 0xb8, 0x56, 0x3e, 0x79, 0x5b, 0x30, 0xf3, 0x28, 0x56,
0xc8, 0xf5, 0xc5, 0xbd, 0xfd, 0x3a, 0x82, 0xf9, 0x82, 0x31, 0x6f, 0xa8, 0xd4, 0x30, 0x6e, 0x18,
0x9f, 0x1b, 0x5f, 0x18, 0xf5, 0x3f, 0xb2, 0x90, 0x7f, 0x44, 0xc3, 0xa1, 0x6b, 0xbf, 0xd9, 0xc4,
0xb9, 0x7d, 0x24, 0x71, 0x52, 0x7d, 0xd4, 0x6a, 0xa7, 0x72, 0x67, 0x0d, 0x0a, 0xd4, 0x77, 0x02,
0xe6, 0xfa, 0x42, 0x27, 0x4e, 0xaa, 0x83, 0x5b, 0x1a, 0x83, 0x27, 0x68, 0xb4, 0x05, 0x73, 0x51,
0x3d, 0x74, 0x8e, 0x64, 0xcd, 0x72, 0x1a, 0xfd, 0x33, 0x05, 0xd4, 0xdb, 0x3d, 0x3b, 0x48, 0xcc,
0xd0, 0x26, 0xcc, 0x05, 0x21, 0x1d, 0xba, 0x6c, 0xc0, 0x3b, 0xca, 0x89, 0xdc, 0xb9, 0x9c, 0xc0,
0xb3, 0x31, 0x4b, 0xce, 0xd0, 0x87, 0x30, 0x2b, 0xc9, 0x9d, 0xb8, 0x8f, 0xc0, 0x99, 0x7d, 0x04,
0xab, 0x96, 0xa7, 0x27, 0xe8, 0x21, 0xfc, 0xeb, 0x88, 0x15, 0x13, 0x41, 0xa5, 0xb3, 0x05, 0x5d,
0x4e, 0x5a, 0xa2, 0x7f, 0xae, 0xa3, 0xbd, 0xfd, 0x7a, 0x19, 0x66, 0x93, 0x29, 0x50, 0xff, 0x36,
0x03, 0x85, 0x38, 0x90, 0xe8, 0xa6, 0xde, 0x33, 0xe3, 0xe4, 0xa8, 0xc5, 0x58, 0xe5, 0x6f, 0xb4,
0x5d, 0x37, 0x61, 0x26, 0x60, 0xa1, 0xe0, 0x56, 0x66, 0x39, 0x7b, 0x52, 0x89, 0x6e, 0xb3, 0x50,
0x6c, 0x30, 0xff, 0xa9, 0xdb, 0xc5, 0x11, 0x18, 0x3d, 0x81, 0xd2, 0xd0, 0x0d, 0xc5, 0x80, 0x78,
0x1d, 0x37, 0xe0, 0x56, 0x56, 0x71, 0xdf, 0x3a, 0x4d, 0x65, 0x63, 0x27, 0xc2, 0xb7, 0xb7, 0x5b,
0xe5, 0xf1, 0x41, 0x0d, 0x26, 0x53, 0x8e, 0x41, 0x8b, 0x6a, 0x07, 0xbc, 0xf2, 0x00, 0x8a, 0x93,
0x15, 0x74, 0x1d, 0xc0, 0x8f, 0x2a, 0xb2, 0x33, 0xc9, 0xec, 0xb9, 0xf1, 0x41, 0xad, 0xa8, 0xeb,
0xb4, 0xbd, 0x89, 0x8b, 0x1a, 0xd0, 0x76, 0x10, 0x02, 0x93, 0x38, 0x4e, 0xa8, 0xf2, 0xbc, 0x88,
0xd5, 0xb8, 0xfe, 0x5d, 0x0e, 0xcc, 0xc7, 0x84, 0xf7, 0x2e, 0xba, 0xab, 0x4a, 0x9d, 0x53, 0x95,
0x71, 0x1d, 0x80, 0x47, 0xf9, 0x26, 0xdd, 0x31, 0x0f, 0xdd, 0xd1, 0x59, 0x28, 0xdd, 0xd1, 0x80,
0xc8, 0x1d, 0xee, 0x31, 0xa1, 0x8a, 0xc0, 0xc4, 0x6a, 0x8c, 0xae, 0x42, 0xde, 0x67, 0x8e, 0xa2,
0xe7, 0x14, 0x1d, 0xc6, 0x07, 0xb5, 0x9c, 0xec, 0x15, 0xed, 0x4d, 0x9c, 0x93, 0x4b, 0x6d, 0x47,
0xb6, 0x29, 0xe2, 0xfb, 0x4c, 0x10, 0xd9, 0x83, 0xb9, 0x6e, 0x77, 0xa9, 0xd9, 0xdf, 0x3c, 0x84,
0xc5, 0x6d, 0x2a, 0xc1, 0x44, 0x3b, 0x70, 0x39, 0xb6, 0x37, 0x29, 0xb0, 0xf0, 0x3a, 0x02, 0x91,
0x96, 0x90, 0x58, 0x49, 0x1c, 0x0b, 0xc5, 0x93, 0x8f, 0x05, 0x15, 0xc1, 0xb4, 0x63, 0xa1, 0x05,
0x73, 0x0e, 0xe5, 0x6e, 0x48, 0x1d, 0xd5, 0x26, 0xa8, 0xaa, 0xcc, 0xf2, 0xea, 0x7f, 0x4f, 0x13,
0x42, 0xf1, 0xac, 0xe6, 0xa8, 0x19, 0x6a, 0x42, 0x41, 0xe7, 0x0d, 0xb7, 0x4a, 0x2a, 0x77, 0xcf,
0x79, 0x1c, 0x4c, 0x68, 0x47, 0xda, 0xdc, 0xec, 0x6b, 0xb5, 0xb9, 0xdb, 0x00, 0x1e, 0xeb, 0x76,
0x9c, 0xd0, 0x1d, 0xd2, 0xd0, 0x9a, 0xd3, 0x97, 0x84, 0x14, 0xee, 0xa6, 0x42, 0xe0, 0xa2, 0xc7,
0xba, 0xd1, 0x70, 0xaa, 0x29, 0x95, 0x5f, 0xaf, 0x29, 0xad, 0x57, 0xf6, 0xf6, 0xeb, 0x8b, 0xb0,
0x90, 0xec, 0x21, 0x6b, 0xc6, 0x5d, 0xe3, 0x9e, 0xb1, 0x6d, 0xd4, 0xbf, 0xc9, 0xc0, 0x3f, 0xa7,
0x1c, 0x46, 0xb7, 0x20, 0xaf, 0x5d, 0x3e, 0xed, 0x26, 0xa5, 0x79, 0x38, 0xc6, 0xa2, 0x25, 0x28,
0xca, 0xfa, 0xa3, 0x9c, 0xd3, 0xa8, 0xb3, 0x14, 0xf1, 0xe1, 0x0f, 0x64, 0x41, 0x9e, 0x78, 0x2e,
0x91, 0x6b, 0x59, 0xb5, 0x16, 0x4f, 0xd1, 0x0e, 0x94, 0xa2, 0xb8, 0x74, 0x58, 0x20, 0xb8, 0x65,
0xaa, 0xbd, 0xb9, 0x75, 0xae, 0xbd, 0xd1, 0xe1, 0x7a, 0x18, 0x08, 0xbe, 0xe5, 0x8b, 0x70, 0x84,
0xc1, 0x99, 0xfc, 0xa8, 0xdc, 0x81, 0x7f, 0x1c, 0x5b, 0x46, 0xf3, 0x90, 0xed, 0xd1, 0x51, 0xd4,
0x12, 0xb0, 0x1c, 0xa2, 0x05, 0x98, 0x19, 0x12, 0x6f, 0x40, 0x75, 0x07, 0x89, 0x26, 0xeb, 0x99,
0x35, 0xa3, 0xfe, 0x22, 0x03, 0x79, 0xad, 0xf0, 0xa2, 0x8f, 0x59, 0xad, 0x76, 0xaa, 0x99, 0xdc,
0x81, 0x59, 0x1d, 0xa9, 0xa8, 0x0a, 0xcc, 0x33, 0xf3, 0x48, 0x47, 0x36, 0xaa, 0x80, 0x3b, 0x60,
0xba, 0x01, 0xe9, 0xeb, 0x23, 0x36, 0x55, 0x73, 0x7b, 0xbb, 0xf9, 0xe0, 0x61, 0x10, 0x15, 0x73,
0x61, 0x7c, 0x50, 0x33, 0xe5, 0x0f, 0xac, 0x68, 0xa9, 0x87, 0xd1, 0x0f, 0x33, 0x90, 0xdf, 0xf0,
0x06, 0x5c, 0xd0, 0xf0, 0xa2, 0x83, 0xa4, 0xd5, 0x4e, 0x05, 0x69, 0x03, 0xf2, 0x21, 0x63, 0xa2,
0x63, 0x93, 0xd3, 0xe2, 0x83, 0x19, 0x13, 0x1b, 0xcd, 0x56, 0x59, 0x12, 0x65, 0x3f, 0x8d, 0xe6,
0x38, 0x27, 0xa9, 0x1b, 0x04, 0x3d, 0x81, 0xc5, 0xf8, 0x14, 0xda, 0x65, 0x4c, 0x70, 0x11, 0x92,
0xa0, 0xd3, 0xa3, 0x23, 0x79, 0x3f, 0xc9, 0x9e, 0x74, 0x1f, 0xdd, 0xf2, 0xed, 0x70, 0xa4, 0x82,
0x77, 0x9f, 0x8e, 0xf0, 0x82, 0x16, 0xd0, 0x8a, 0xf9, 0xf7, 0xe9, 0x88, 0xa3, 0x8f, 0x60, 0x89,
0x4e, 0x60, 0x52, 0x62, 0xc7, 0x23, 0x7d, 0x79, 0xbe, 0x76, 0x6c, 0x8f, 0xd9, 0x3d, 0xd5, 0xe2,
0x4d, 0x7c, 0x85, 0x26, 0x45, 0x7d, 0x12, 0x21, 0x36, 0x24, 0x00, 0x71, 0xb0, 0x76, 0x3d, 0x62,
0xf7, 0x3c, 0x97, 0xcb, 0x27, 0x47, 0xe2, 0x8a, 0x29, 0xbb, 0xb4, 0xb4, 0x6d, 0xed, 0x94, 0x68,
0x35, 0x5a, 0x87, 0xdc, 0xc4, 0x85, 0x55, 0x57, 0xcf, 0xbf, 0x77, 0xd3, 0x57, 0x51, 0x0b, 0x4a,
0x03, 0x5f, 0xaa, 0x8f, 0x62, 0x50, 0x3c, 0x6f, 0x0c, 0x20, 0x62, 0x49, 0xcf, 0x2b, 0x43, 0x58,
0x3a, 0x4d, 0x79, 0x4a, 0x6d, 0xde, 0x4d, 0xd6, 0x66, 0x69, 0xf5, 0xed, 0x34, 0x7d, 0xe9, 0x22,
0x13, 0x75, 0x9c, 0x9a, 0xb6, 0x3f, 0x19, 0x90, 0x7b, 0x44, 0xed, 0x90, 0x8a, 0x37, 0x9a, 0xb5,
0x6b, 0x47, 0xb2, 0xb6, 0x9a, 0x7e, 0xf9, 0x94, 0x5a, 0xa7, 0x92, 0xb6, 0x02, 0x05, 0xd7, 0x17,
0x34, 0xf4, 0x89, 0xa7, 0xb2, 0xb6, 0x80, 0x27, 0xf3, 0x54, 0x07, 0x5e, 0x18, 0x90, 0x8b, 0x6e,
0x67, 0x17, 0xed, 0x40, 0xa4, 0xf5, 0xb8, 0x03, 0xa9, 0x46, 0xfe, 0x6e, 0x40, 0x01, 0x53, 0xce,
0x06, 0xe1, 0x1b, 0x7e, 0xa9, 0x1c, 0xbb, 0xed, 0x64, 0xff, 0xf2, 0x6d, 0x07, 0x81, 0xd9, 0x73,
0x7d, 0x7d, 0x2f, 0xc3, 0x6a, 0x8c, 0x1a, 0x90, 0x0f, 0xc8, 0xc8, 0x63, 0xc4, 0xd1, 0x8d, 0x72,
0x61, 0xea, 0x31, 0xdf, 0xf4, 0x47, 0x38, 0x06, 0xad, 0x2f, 0xec, 0xed, 0xd7, 0xe7, 0xa1, 0x9c,
0xf4, 0xfc, 0x99, 0x51, 0xff, 0xc5, 0x80, 0xe2, 0xd6, 0x57, 0x82, 0xfa, 0xea, 0x61, 0xf0, 0xb7,
0x74, 0x7e, 0x79, 0xfa, 0xc1, 0x5f, 0x3c, 0xf2, 0x96, 0x4f, 0xdb, 0xd4, 0x96, 0xf5, 0xf2, 0x55,
0xf5, 0xd2, 0xaf, 0xaf, 0xaa, 0x97, 0xbe, 0x1e, 0x57, 0x8d, 0x97, 0xe3, 0xaa, 0xf1, 0xf3, 0xb8,
0x6a, 0xfc, 0x36, 0xae, 0x1a, 0xbb, 0x39, 0x15, 0x9f, 0x77, 0xff, 0x0c, 0x00, 0x00, 0xff, 0xff,
0x92, 0x44, 0x63, 0xd8, 0x36, 0x12, 0x00, 0x00,
// 1451 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xcd, 0x6f, 0x1b, 0x45,
0x14, 0xef, 0xda, 0x1b, 0x7f, 0x3c, 0x27, 0x56, 0x98, 0x86, 0xe0, 0x9a, 0x60, 0x07, 0x57, 0xa0,
0x0a, 0x55, 0x4e, 0x09, 0x05, 0xa5, 0x81, 0xd2, 0xda, 0x49, 0xd4, 0x5a, 0xa5, 0x34, 0x9a, 0x96,
0x96, 0x9b, 0x99, 0xec, 0x4e, 0xdd, 0xc5, 0xeb, 0x9d, 0xd5, 0xce, 0xd8, 0xc5, 0x37, 0xce, 0xf9,
0x07, 0x72, 0xe3, 0xd0, 0x13, 0x77, 0xb8, 0x70, 0xe1, 0xc0, 0xa9, 0x47, 0x4e, 0x88, 0x53, 0x44,
0xfd, 0x5f, 0x20, 0x71, 0x40, 0x33, 0x3b, 0x6b, 0x6f, 0xea, 0x75, 0x92, 0xa2, 0x2a, 0xe2, 0xe4,
0xf9, 0xf8, 0xfd, 0xde, 0xd7, 0xbc, 0xf7, 0x66, 0xd6, 0xb0, 0xc0, 0xf6, 0xbe, 0xa5, 0x96, 0xe0,
0x75, 0x3f, 0x60, 0x82, 0x21, 0x64, 0x33, 0xab, 0x4b, 0x83, 0x3a, 0x7f, 0x4a, 0x82, 0x5e, 0xd7,
0x11, 0xf5, 0xc1, 0x87, 0xe5, 0x82, 0x18, 0xfa, 0x54, 0x03, 0xca, 0x05, 0xee, 0x53, 0x2b, 0x9a,
0x54, 0x3b, 0x8c, 0x75, 0x5c, 0xba, 0xa6, 0x66, 0x7b, 0xfd, 0xc7, 0x6b, 0xc2, 0xe9, 0x51, 0x2e,
0x48, 0xcf, 0xd7, 0x80, 0xa5, 0x0e, 0xeb, 0x30, 0x35, 0x5c, 0x93, 0x23, 0xbd, 0x7a, 0xe1, 0x65,
0x1a, 0xf1, 0x86, 0x7a, 0xeb, 0xbc, 0xef, 0xf6, 0x3b, 0x8e, 0xb7, 0x16, 0xfe, 0x84, 0x8b, 0xb5,
0x5f, 0x0c, 0x30, 0xef, 0x52, 0x41, 0xd0, 0xa7, 0x90, 0x1d, 0xd0, 0x80, 0x3b, 0xcc, 0x2b, 0x19,
0xab, 0xc6, 0xa5, 0xc2, 0xfa, 0xdb, 0xf5, 0x69, 0x7b, 0xeb, 0x0f, 0x43, 0x48, 0xd3, 0x7c, 0x7e,
0x58, 0x3d, 0x87, 0x23, 0x06, 0xba, 0x06, 0x60, 0x05, 0x94, 0x08, 0x6a, 0xb7, 0x89, 0x28, 0xa5,
0x14, 0xbf, 0x5c, 0x0f, 0x4d, 0xa9, 0x47, 0xa6, 0xd4, 0x1f, 0x44, 0x1e, 0xe0, 0xbc, 0x46, 0x37,
0x84, 0xa4, 0xf6, 0x7d, 0x3b, 0xa2, 0xa6, 0x4f, 0xa6, 0x6a, 0x74, 0x43, 0xd4, 0x7e, 0x32, 0xc1,
0xfc, 0x92, 0xd9, 0x14, 0x2d, 0x43, 0xca, 0xb1, 0x95, 0xd9, 0xf9, 0x66, 0x66, 0x74, 0x58, 0x4d,
0xb5, 0xb6, 0x71, 0xca, 0xb1, 0xd1, 0x3a, 0x98, 0x3d, 0x2a, 0x88, 0x36, 0xa8, 0x94, 0xe4, 0x90,
0xf4, 0x5d, 0x7b, 0xa3, 0xb0, 0xe8, 0x13, 0x30, 0xe5, 0x31, 0x68, 0x4b, 0x56, 0x92, 0x38, 0x52,
0xe7, 0x7d, 0x9f, 0x5a, 0x11, 0x4f, 0xe2, 0xd1, 0x0e, 0x14, 0x6c, 0xca, 0xad, 0xc0, 0xf1, 0x85,
0x8c, 0xa1, 0xa9, 0xe8, 0x17, 0x67, 0xd1, 0xb7, 0x27, 0x50, 0x1c, 0xe7, 0xa1, 0xcf, 0x20, 0xc3,
0x05, 0x11, 0x7d, 0x5e, 0x9a, 0x53, 0x12, 0x2a, 0x33, 0x0d, 0x50, 0x28, 0x6d, 0x82, 0xe6, 0xa0,
0xdb, 0x50, 0xec, 0x11, 0x8f, 0x74, 0x68, 0xd0, 0xd6, 0x52, 0x32, 0x4a, 0xca, 0xbb, 0x89, 0xae,
0x87, 0xc8, 0x50, 0x10, 0x5e, 0xe8, 0xc5, 0xa7, 0x68, 0x07, 0x80, 0x08, 0x41, 0xac, 0x27, 0x3d,
0xea, 0x89, 0x52, 0x56, 0x49, 0x79, 0x2f, 0xd1, 0x16, 0x2a, 0x9e, 0xb2, 0xa0, 0xdb, 0x18, 0x83,
0x71, 0x8c, 0x88, 0x6e, 0x41, 0xc1, 0xa2, 0x81, 0x70, 0x1e, 0x3b, 0x16, 0x11, 0xb4, 0x94, 0x53,
0x72, 0xaa, 0x49, 0x72, 0xb6, 0x26, 0x30, 0xed, 0x54, 0x9c, 0x89, 0xae, 0x80, 0x19, 0x30, 0x97,
0x96, 0xf2, 0xab, 0xc6, 0xa5, 0xe2, 0xec, 0x63, 0xc1, 0xcc, 0xa5, 0x58, 0x21, 0x37, 0x97, 0xf7,
0x0f, 0x6a, 0x08, 0x16, 0x73, 0xc6, 0xa2, 0xa1, 0x52, 0xc3, 0xb8, 0x62, 0x7c, 0x6d, 0x7c, 0x63,
0xd4, 0xfe, 0x49, 0x43, 0xf6, 0x3e, 0x0d, 0x06, 0x8e, 0xf5, 0x7a, 0x13, 0xe7, 0xda, 0x91, 0xc4,
0x49, 0xf4, 0x51, 0xab, 0x9d, 0xca, 0x9d, 0x0d, 0xc8, 0x51, 0xcf, 0xf6, 0x99, 0xe3, 0x09, 0x9d,
0x38, 0x89, 0x0e, 0xee, 0x68, 0x0c, 0x1e, 0xa3, 0xd1, 0x0e, 0x2c, 0x84, 0xf5, 0xd0, 0x3e, 0x92,
0x35, 0xab, 0x49, 0xf4, 0xaf, 0x14, 0x50, 0x1f, 0xf7, 0x7c, 0x3f, 0x36, 0x43, 0xdb, 0xb0, 0xe0,
0x07, 0x74, 0xe0, 0xb0, 0x3e, 0x6f, 0x2b, 0x27, 0x32, 0xa7, 0x72, 0x02, 0xcf, 0x47, 0x2c, 0x39,
0x43, 0x9f, 0xc3, 0xbc, 0x24, 0xb7, 0xa3, 0x3e, 0x02, 0x27, 0xf6, 0x11, 0xac, 0x5a, 0x9e, 0x9e,
0xa0, 0x7b, 0xf0, 0xe6, 0x11, 0x2b, 0xc6, 0x82, 0x0a, 0x27, 0x0b, 0x3a, 0x1f, 0xb7, 0x44, 0x2f,
0x6e, 0xa2, 0xfd, 0x83, 0x5a, 0x11, 0xe6, 0xe3, 0x29, 0x50, 0xfb, 0x21, 0x05, 0xb9, 0x28, 0x90,
0xe8, 0xaa, 0x3e, 0x33, 0x63, 0x76, 0xd4, 0x22, 0xac, 0xf2, 0x37, 0x3c, 0xae, 0xab, 0x30, 0xe7,
0xb3, 0x40, 0xf0, 0x52, 0x6a, 0x35, 0x3d, 0xab, 0x44, 0x77, 0x59, 0x20, 0xb6, 0x98, 0xf7, 0xd8,
0xe9, 0xe0, 0x10, 0x8c, 0x1e, 0x41, 0x61, 0xe0, 0x04, 0xa2, 0x4f, 0xdc, 0xb6, 0xe3, 0xf3, 0x52,
0x5a, 0x71, 0xdf, 0x3f, 0x4e, 0x65, 0xfd, 0x61, 0x88, 0x6f, 0xed, 0x36, 0x8b, 0xa3, 0xc3, 0x2a,
0x8c, 0xa7, 0x1c, 0x83, 0x16, 0xd5, 0xf2, 0x79, 0xf9, 0x2e, 0xe4, 0xc7, 0x3b, 0xe8, 0x32, 0x80,
0x17, 0x56, 0x64, 0x7b, 0x9c, 0xd9, 0x0b, 0xa3, 0xc3, 0x6a, 0x5e, 0xd7, 0x69, 0x6b, 0x1b, 0xe7,
0x35, 0xa0, 0x65, 0x23, 0x04, 0x26, 0xb1, 0xed, 0x40, 0xe5, 0x79, 0x1e, 0xab, 0x71, 0xed, 0xc7,
0x0c, 0x98, 0x0f, 0x08, 0xef, 0x9e, 0x75, 0x57, 0x95, 0x3a, 0xa7, 0x2a, 0xe3, 0x32, 0x00, 0x0f,
0xf3, 0x4d, 0xba, 0x63, 0x4e, 0xdc, 0xd1, 0x59, 0x28, 0xdd, 0xd1, 0x80, 0xd0, 0x1d, 0xee, 0x32,
0xa1, 0x8a, 0xc0, 0xc4, 0x6a, 0x8c, 0x2e, 0x42, 0xd6, 0x63, 0xb6, 0xa2, 0x67, 0x14, 0x1d, 0x46,
0x87, 0xd5, 0x8c, 0xec, 0x15, 0xad, 0x6d, 0x9c, 0x91, 0x5b, 0x2d, 0x5b, 0xb6, 0x29, 0xe2, 0x79,
0x4c, 0x10, 0xd9, 0x83, 0xb9, 0x6e, 0x77, 0x89, 0xd9, 0xdf, 0x98, 0xc0, 0xa2, 0x36, 0x15, 0x63,
0xa2, 0x87, 0x70, 0x3e, 0xb2, 0x37, 0x2e, 0x30, 0xf7, 0x2a, 0x02, 0x91, 0x96, 0x10, 0xdb, 0x89,
0x5d, 0x0b, 0xf9, 0xd9, 0xd7, 0x82, 0x8a, 0x60, 0xd2, 0xb5, 0xd0, 0x84, 0x05, 0x9b, 0x72, 0x27,
0xa0, 0xb6, 0x6a, 0x13, 0x54, 0x55, 0x66, 0x71, 0xfd, 0x9d, 0xe3, 0x84, 0x50, 0x3c, 0xaf, 0x39,
0x6a, 0x86, 0x1a, 0x90, 0xd3, 0x79, 0xc3, 0x4b, 0x05, 0x95, 0xbb, 0xa7, 0xbc, 0x0e, 0xc6, 0xb4,
0x23, 0x6d, 0x6e, 0xfe, 0x95, 0xda, 0xdc, 0x35, 0x00, 0x97, 0x75, 0xda, 0x76, 0xe0, 0x0c, 0x68,
0x50, 0x5a, 0xd0, 0x8f, 0x84, 0x04, 0xee, 0xb6, 0x42, 0xe0, 0xbc, 0xcb, 0x3a, 0xe1, 0x70, 0xaa,
0x29, 0x15, 0x5f, 0xad, 0x29, 0x6d, 0x96, 0xf7, 0x0f, 0x6a, 0xcb, 0xb0, 0x14, 0xef, 0x21, 0x1b,
0xc6, 0x4d, 0xe3, 0xb6, 0xb1, 0x6b, 0xd4, 0x7e, 0x4b, 0xc1, 0x1b, 0x53, 0x0e, 0xa3, 0x8f, 0x21,
0xab, 0x5d, 0x3e, 0xee, 0x25, 0xa5, 0x79, 0x38, 0xc2, 0xa2, 0x15, 0xc8, 0xcb, 0xfa, 0xa3, 0x9c,
0xd3, 0xb0, 0xb3, 0xe4, 0xf1, 0x64, 0x01, 0x95, 0x20, 0x4b, 0x5c, 0x87, 0xc8, 0xbd, 0xb4, 0xda,
0x8b, 0xa6, 0xa8, 0x0f, 0xcb, 0x61, 0x5c, 0xda, 0x93, 0x7b, 0xb7, 0xcd, 0x7c, 0xc1, 0x4b, 0xa6,
0x3a, 0xa6, 0x1b, 0xa7, 0x3a, 0x26, 0x1d, 0xb9, 0xc9, 0xc2, 0x3d, 0x5f, 0xf0, 0x1d, 0x4f, 0x04,
0x43, 0xbc, 0x64, 0x27, 0x6c, 0x95, 0x6f, 0xc1, 0x85, 0x99, 0x14, 0xb4, 0x08, 0xe9, 0x2e, 0x1d,
0x86, 0xbd, 0x03, 0xcb, 0x21, 0x5a, 0x82, 0xb9, 0x01, 0x71, 0xfb, 0x54, 0xb7, 0x9a, 0x70, 0xb2,
0x99, 0xda, 0x30, 0x6a, 0xcf, 0x52, 0x90, 0xd5, 0xe6, 0x9c, 0xf5, 0x7d, 0xac, 0xd5, 0x4e, 0x75,
0x9d, 0xeb, 0x30, 0xaf, 0x43, 0x1a, 0x96, 0x8b, 0x79, 0x62, 0xc2, 0x15, 0x42, 0x7c, 0x58, 0x2a,
0xd7, 0xc1, 0x74, 0x7c, 0xd2, 0xd3, 0x77, 0x71, 0xa2, 0xe6, 0xd6, 0x6e, 0xe3, 0xee, 0x3d, 0x3f,
0xac, 0xfa, 0xdc, 0xe8, 0xb0, 0x6a, 0xca, 0x05, 0xac, 0x68, 0x89, 0xb7, 0xd6, 0xcf, 0x73, 0x90,
0xdd, 0x72, 0xfb, 0x5c, 0xd0, 0xe0, 0xac, 0x83, 0xa4, 0xd5, 0x4e, 0x05, 0x69, 0x0b, 0xb2, 0x01,
0x63, 0xa2, 0x6d, 0x91, 0xe3, 0xe2, 0x83, 0x19, 0x13, 0x5b, 0x8d, 0x66, 0x51, 0x12, 0x65, 0xe3,
0x0d, 0xe7, 0x38, 0x23, 0xa9, 0x5b, 0x04, 0x3d, 0x82, 0xe5, 0xe8, 0xba, 0xda, 0x63, 0x4c, 0x70,
0x11, 0x10, 0xbf, 0xdd, 0xa5, 0x43, 0xf9, 0x90, 0x49, 0xcf, 0x7a, 0xb8, 0xee, 0x78, 0x56, 0x30,
0x54, 0xc1, 0xbb, 0x43, 0x87, 0x78, 0x49, 0x0b, 0x68, 0x46, 0xfc, 0x3b, 0x74, 0xc8, 0xd1, 0x0d,
0x58, 0xa1, 0x63, 0x98, 0x94, 0xd8, 0x76, 0x49, 0x4f, 0x5e, 0xc4, 0x6d, 0xcb, 0x65, 0x56, 0x57,
0xdd, 0x05, 0x26, 0xbe, 0x40, 0xe3, 0xa2, 0xbe, 0x08, 0x11, 0x5b, 0x12, 0x80, 0x38, 0x94, 0xf6,
0x5c, 0x62, 0x75, 0x5d, 0x87, 0xcb, 0x6f, 0x93, 0xd8, 0x5b, 0x54, 0xb6, 0x73, 0x69, 0xdb, 0xc6,
0x31, 0xd1, 0xaa, 0x37, 0x27, 0xdc, 0xd8, 0xcb, 0x56, 0x57, 0xd4, 0x5b, 0x7b, 0xc9, 0xbb, 0xa8,
0x09, 0x85, 0xbe, 0x27, 0xd5, 0x87, 0x31, 0xc8, 0x9f, 0x36, 0x06, 0x10, 0xb2, 0xa4, 0xe7, 0xe5,
0x01, 0xac, 0x1c, 0xa7, 0x3c, 0xa1, 0x36, 0x6f, 0xc6, 0x6b, 0xb3, 0xb0, 0xfe, 0x41, 0x92, 0xbe,
0x64, 0x91, 0xb1, 0x3a, 0x4e, 0x4c, 0xdb, 0x5f, 0x0d, 0xc8, 0xdc, 0xa7, 0x56, 0x40, 0xc5, 0x6b,
0xcd, 0xda, 0x8d, 0x23, 0x59, 0x5b, 0x49, 0x7e, 0xa5, 0x4a, 0xad, 0x53, 0x49, 0x5b, 0x86, 0x9c,
0xe3, 0x09, 0x1a, 0x78, 0xc4, 0x55, 0x59, 0x9b, 0xc3, 0xe3, 0x79, 0xa2, 0x03, 0xcf, 0x0c, 0xc8,
0x84, 0xcf, 0xb8, 0xb3, 0x76, 0x20, 0xd4, 0xfa, 0xb2, 0x03, 0x89, 0x46, 0xfe, 0x6d, 0x40, 0x0e,
0x53, 0xce, 0xfa, 0xc1, 0x6b, 0xfe, 0xa4, 0x79, 0xe9, 0x59, 0x94, 0xfe, 0xcf, 0xcf, 0x22, 0x04,
0x66, 0xd7, 0xf1, 0xf4, 0x03, 0x0e, 0xab, 0x31, 0xaa, 0x43, 0xd6, 0x27, 0x43, 0x97, 0x11, 0x5b,
0x37, 0xca, 0xa5, 0xa9, 0xaf, 0xfe, 0x86, 0x37, 0xc4, 0x11, 0x68, 0x73, 0x69, 0xff, 0xa0, 0xb6,
0x08, 0xc5, 0xb8, 0xe7, 0x4f, 0x8c, 0xda, 0x1f, 0x06, 0xe4, 0x77, 0xbe, 0x13, 0xd4, 0x53, 0x5f,
0x10, 0xff, 0x4b, 0xe7, 0x57, 0xa7, 0xff, 0x19, 0xc8, 0x1f, 0xf9, 0xe8, 0x4f, 0x3a, 0xd4, 0x66,
0xe9, 0xf9, 0x8b, 0xca, 0xb9, 0x3f, 0x5f, 0x54, 0xce, 0x7d, 0x3f, 0xaa, 0x18, 0xcf, 0x47, 0x15,
0xe3, 0xf7, 0x51, 0xc5, 0xf8, 0x6b, 0x54, 0x31, 0xf6, 0x32, 0x2a, 0x3e, 0x1f, 0xfd, 0x1b, 0x00,
0x00, 0xff, 0xff, 0x1b, 0x47, 0x17, 0xba, 0x5f, 0x12, 0x00, 0x00,
}

View File

@ -256,8 +256,8 @@ message NetworkAttachment {
// List of aliases by which a task is resolved in a network
repeated string aliases = 3;
// Map of all the driver options for this network
map<string,string> driver_opts = 4;
// Map of all the driver attachment options for this network
map<string,string> driver_attachment_opts = 4;
}
message Network {

View File

@ -1214,8 +1214,8 @@ type NetworkAttachmentConfig struct {
// preferred. If these addresses are not available then the
// attachment might fail.
Addresses []string `protobuf:"bytes,3,rep,name=addresses" json:"addresses,omitempty"`
// DriverOpts is a map of driver specific options for the network target
DriverOpts map[string]string `protobuf:"bytes,4,rep,name=driver_opts,json=driverOpts" json:"driver_opts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// DriverAttachmentOpts is a map of driver attachment options for the network target
DriverAttachmentOpts map[string]string `protobuf:"bytes,4,rep,name=driver_attachment_opts,json=driverAttachmentOpts" json:"driver_attachment_opts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func (m *NetworkAttachmentConfig) Reset() { *m = NetworkAttachmentConfig{} }
@ -2675,10 +2675,10 @@ func (m *NetworkAttachmentConfig) CopyFrom(src interface{}) {
copy(m.Addresses, o.Addresses)
}
if o.DriverOpts != nil {
m.DriverOpts = make(map[string]string, len(o.DriverOpts))
for k, v := range o.DriverOpts {
m.DriverOpts[k] = v
if o.DriverAttachmentOpts != nil {
m.DriverAttachmentOpts = make(map[string]string, len(o.DriverAttachmentOpts))
for k, v := range o.DriverAttachmentOpts {
m.DriverAttachmentOpts[k] = v
}
}
@ -4446,11 +4446,11 @@ func (m *NetworkAttachmentConfig) MarshalTo(dAtA []byte) (int, error) {
i += copy(dAtA[i:], s)
}
}
if len(m.DriverOpts) > 0 {
for k, _ := range m.DriverOpts {
if len(m.DriverAttachmentOpts) > 0 {
for k, _ := range m.DriverAttachmentOpts {
dAtA[i] = 0x22
i++
v := m.DriverOpts[k]
v := m.DriverAttachmentOpts[k]
mapSize := 1 + len(k) + sovTypes(uint64(len(k))) + 1 + len(v) + sovTypes(uint64(len(v)))
i = encodeVarintTypes(dAtA, i, uint64(mapSize))
dAtA[i] = 0xa
@ -6349,8 +6349,8 @@ func (m *NetworkAttachmentConfig) Size() (n int) {
n += 1 + l + sovTypes(uint64(l))
}
}
if len(m.DriverOpts) > 0 {
for k, v := range m.DriverOpts {
if len(m.DriverAttachmentOpts) > 0 {
for k, v := range m.DriverAttachmentOpts {
_ = k
_ = v
mapEntrySize := 1 + len(k) + sovTypes(uint64(len(k))) + 1 + len(v) + sovTypes(uint64(len(v)))
@ -7333,21 +7333,21 @@ func (this *NetworkAttachmentConfig) String() string {
if this == nil {
return "nil"
}
keysForDriverOpts := make([]string, 0, len(this.DriverOpts))
for k, _ := range this.DriverOpts {
keysForDriverOpts = append(keysForDriverOpts, k)
keysForDriverAttachmentOpts := make([]string, 0, len(this.DriverAttachmentOpts))
for k, _ := range this.DriverAttachmentOpts {
keysForDriverAttachmentOpts = append(keysForDriverAttachmentOpts, k)
}
github_com_gogo_protobuf_sortkeys.Strings(keysForDriverOpts)
mapStringForDriverOpts := "map[string]string{"
for _, k := range keysForDriverOpts {
mapStringForDriverOpts += fmt.Sprintf("%v: %v,", k, this.DriverOpts[k])
github_com_gogo_protobuf_sortkeys.Strings(keysForDriverAttachmentOpts)
mapStringForDriverAttachmentOpts := "map[string]string{"
for _, k := range keysForDriverAttachmentOpts {
mapStringForDriverAttachmentOpts += fmt.Sprintf("%v: %v,", k, this.DriverAttachmentOpts[k])
}
mapStringForDriverOpts += "}"
mapStringForDriverAttachmentOpts += "}"
s := strings.Join([]string{`&NetworkAttachmentConfig{`,
`Target:` + fmt.Sprintf("%v", this.Target) + `,`,
`Aliases:` + fmt.Sprintf("%v", this.Aliases) + `,`,
`Addresses:` + fmt.Sprintf("%v", this.Addresses) + `,`,
`DriverOpts:` + mapStringForDriverOpts + `,`,
`DriverAttachmentOpts:` + mapStringForDriverAttachmentOpts + `,`,
`}`,
}, "")
return s
@ -11247,7 +11247,7 @@ func (m *NetworkAttachmentConfig) Unmarshal(dAtA []byte) error {
iNdEx = postIndex
case 4:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field DriverOpts", wireType)
return fmt.Errorf("proto: wrong wireType = %d for field DriverAttachmentOpts", wireType)
}
var msglen int
for shift := uint(0); ; shift += 7 {
@ -11311,8 +11311,8 @@ func (m *NetworkAttachmentConfig) Unmarshal(dAtA []byte) error {
}
mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
iNdEx = postStringIndexmapkey
if m.DriverOpts == nil {
m.DriverOpts = make(map[string]string)
if m.DriverAttachmentOpts == nil {
m.DriverAttachmentOpts = make(map[string]string)
}
if iNdEx < postIndex {
var valuekey uint64
@ -11355,10 +11355,10 @@ func (m *NetworkAttachmentConfig) Unmarshal(dAtA []byte) error {
}
mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
iNdEx = postStringIndexmapvalue
m.DriverOpts[mapkey] = mapvalue
m.DriverAttachmentOpts[mapkey] = mapvalue
} else {
var mapvalue string
m.DriverOpts[mapkey] = mapvalue
m.DriverAttachmentOpts[mapkey] = mapvalue
}
iNdEx = postIndex
default:
@ -16245,299 +16245,300 @@ var (
func init() { proto.RegisterFile("types.proto", fileDescriptorTypes) }
var fileDescriptorTypes = []byte{
// 4698 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x5a, 0x4d, 0x6c, 0x23, 0x47,
0x76, 0x16, 0x7f, 0x45, 0x3e, 0x52, 0x52, 0x4f, 0x8d, 0x3c, 0xd6, 0xd0, 0x63, 0x89, 0x6e, 0x7b,
0xd6, 0x3f, 0xeb, 0xd0, 0x33, 0x1a, 0xdb, 0x18, 0x7b, 0xe2, 0x1f, 0xfe, 0x69, 0xc4, 0x1d, 0x89,
0x24, 0x8a, 0xd4, 0xcc, 0x1a, 0x48, 0xd2, 0x68, 0x75, 0x97, 0xa8, 0xb6, 0x9a, 0x5d, 0x4c, 0x77,
0x53, 0x1a, 0xe6, 0x07, 0x19, 0xe4, 0xb0, 0x09, 0x74, 0x4a, 0x6e, 0x01, 0x02, 0xe5, 0x92, 0x9c,
0x82, 0xdc, 0x12, 0x20, 0x48, 0x2e, 0x71, 0x80, 0x1c, 0x7c, 0xcb, 0x26, 0x01, 0x82, 0x45, 0x02,
0x28, 0xb1, 0x0e, 0xb9, 0x05, 0xc9, 0x65, 0x91, 0x4b, 0x02, 0x04, 0xf5, 0xd3, 0xcd, 0xa6, 0xa6,
0x25, 0x8d, 0xd7, 0x7b, 0x91, 0xba, 0xde, 0xfb, 0xde, 0xab, 0x57, 0xaf, 0x5e, 0x55, 0xbd, 0x57,
0x45, 0x28, 0xf8, 0x93, 0x11, 0xf1, 0x2a, 0x23, 0x97, 0xfa, 0x14, 0x21, 0x93, 0x1a, 0x07, 0xc4,
0xad, 0x78, 0x47, 0xba, 0x3b, 0x3c, 0xb0, 0xfc, 0xca, 0xe1, 0xdd, 0xd2, 0xda, 0x80, 0xd2, 0x81,
0x4d, 0xde, 0xe3, 0x88, 0xdd, 0xf1, 0xde, 0x7b, 0xbe, 0x35, 0x24, 0x9e, 0xaf, 0x0f, 0x47, 0x42,
0xa8, 0xb4, 0x7a, 0x1e, 0x60, 0x8e, 0x5d, 0xdd, 0xb7, 0xa8, 0x23, 0xf9, 0xcb, 0x03, 0x3a, 0xa0,
0xfc, 0xf3, 0x3d, 0xf6, 0x25, 0xa8, 0xea, 0x1a, 0xcc, 0x3f, 0x26, 0xae, 0x67, 0x51, 0x07, 0x2d,
0x43, 0xc6, 0x72, 0x4c, 0xf2, 0x74, 0x25, 0x51, 0x4e, 0xbc, 0x95, 0xc6, 0xa2, 0xa1, 0xde, 0x01,
0x68, 0xb1, 0x8f, 0xa6, 0xe3, 0xbb, 0x13, 0xa4, 0x40, 0xea, 0x80, 0x4c, 0x38, 0x22, 0x8f, 0xd9,
0x27, 0xa3, 0x1c, 0xea, 0xf6, 0x4a, 0x52, 0x50, 0x0e, 0x75, 0x5b, 0xfd, 0x26, 0x01, 0x85, 0xaa,
0xe3, 0x50, 0x9f, 0xf7, 0xee, 0x21, 0x04, 0x69, 0x47, 0x1f, 0x12, 0x29, 0xc4, 0xbf, 0x51, 0x1d,
0xb2, 0xb6, 0xbe, 0x4b, 0x6c, 0x6f, 0x25, 0x59, 0x4e, 0xbd, 0x55, 0x58, 0xff, 0x7e, 0xe5, 0xf9,
0x21, 0x57, 0x22, 0x4a, 0x2a, 0x5b, 0x1c, 0xcd, 0x8d, 0xc0, 0x52, 0x14, 0x7d, 0x0a, 0xf3, 0x96,
0x63, 0x5a, 0x06, 0xf1, 0x56, 0xd2, 0x5c, 0xcb, 0x6a, 0x9c, 0x96, 0xa9, 0xf5, 0xb5, 0xf4, 0xd7,
0xa7, 0x6b, 0x73, 0x38, 0x10, 0x2a, 0x7d, 0x04, 0x85, 0x88, 0xda, 0x98, 0xb1, 0x2d, 0x43, 0xe6,
0x50, 0xb7, 0xc7, 0x44, 0x8e, 0x4e, 0x34, 0x3e, 0x4e, 0xde, 0x4f, 0xa8, 0x5f, 0x40, 0x1e, 0x13,
0x8f, 0x8e, 0x5d, 0x83, 0x78, 0xe8, 0x6d, 0xc8, 0x3b, 0xba, 0x43, 0x35, 0x63, 0x34, 0xf6, 0xb8,
0x78, 0xaa, 0x56, 0x3c, 0x3b, 0x5d, 0xcb, 0xb5, 0x75, 0x87, 0xd6, 0xbb, 0x3b, 0x1e, 0xce, 0x31,
0x76, 0x7d, 0x34, 0xf6, 0xd0, 0x6b, 0x50, 0x1c, 0x92, 0x21, 0x75, 0x27, 0xda, 0xee, 0xc4, 0x27,
0x1e, 0x57, 0x9c, 0xc2, 0x05, 0x41, 0xab, 0x31, 0x92, 0xfa, 0x7b, 0x09, 0x58, 0x0e, 0x74, 0x63,
0xf2, 0xab, 0x63, 0xcb, 0x25, 0x43, 0xe2, 0xf8, 0x1e, 0xfa, 0x00, 0xb2, 0xb6, 0x35, 0xb4, 0x7c,
0xd1, 0x47, 0x61, 0xfd, 0xd5, 0xb8, 0xd1, 0x86, 0x56, 0x61, 0x09, 0x46, 0x55, 0x28, 0xba, 0xc4,
0x23, 0xee, 0xa1, 0xf0, 0x24, 0xef, 0xf2, 0x4a, 0xe1, 0x19, 0x11, 0x75, 0x03, 0x72, 0x5d, 0x5b,
0xf7, 0xf7, 0xa8, 0x3b, 0x44, 0x2a, 0x14, 0x75, 0xd7, 0xd8, 0xb7, 0x7c, 0x62, 0xf8, 0x63, 0x37,
0x98, 0xd5, 0x19, 0x1a, 0xba, 0x01, 0x49, 0x2a, 0x3a, 0xca, 0xd7, 0xb2, 0x67, 0xa7, 0x6b, 0xc9,
0x4e, 0x0f, 0x27, 0xa9, 0xa7, 0x3e, 0x80, 0x6b, 0x5d, 0x7b, 0x3c, 0xb0, 0x9c, 0x06, 0xf1, 0x0c,
0xd7, 0x1a, 0x31, 0xed, 0x2c, 0x3c, 0x58, 0xec, 0x07, 0xe1, 0xc1, 0xbe, 0xc3, 0x90, 0x49, 0x4e,
0x43, 0x46, 0xfd, 0x9d, 0x24, 0x5c, 0x6b, 0x3a, 0x03, 0xcb, 0x21, 0x51, 0xe9, 0xdb, 0xb0, 0x48,
0x38, 0x51, 0x3b, 0x14, 0x61, 0x2c, 0xf5, 0x2c, 0x08, 0x6a, 0x10, 0xdb, 0xad, 0x73, 0xf1, 0x76,
0x37, 0x6e, 0xf8, 0xcf, 0x69, 0x8f, 0x8d, 0xba, 0x26, 0xcc, 0x8f, 0xf8, 0x20, 0xbc, 0x95, 0x14,
0xd7, 0x75, 0x3b, 0x4e, 0xd7, 0x73, 0xe3, 0x0c, 0x82, 0x4f, 0xca, 0x7e, 0x97, 0xe0, 0xfb, 0xb3,
0x24, 0x2c, 0xb5, 0xa9, 0x39, 0xe3, 0x87, 0x12, 0xe4, 0xf6, 0xa9, 0xe7, 0x47, 0x16, 0x5a, 0xd8,
0x46, 0xf7, 0x21, 0x37, 0x92, 0xd3, 0x27, 0x67, 0xff, 0x56, 0xbc, 0xc9, 0x02, 0x83, 0x43, 0x34,
0x7a, 0x00, 0x79, 0x37, 0x88, 0x89, 0x95, 0xd4, 0x8b, 0x04, 0xce, 0x14, 0x8f, 0x3e, 0x81, 0xac,
0x98, 0x84, 0x95, 0x34, 0x97, 0xbc, 0xfd, 0x42, 0x3e, 0xc7, 0x52, 0x08, 0x3d, 0x84, 0x9c, 0x6f,
0x7b, 0x9a, 0xe5, 0xec, 0xd1, 0x95, 0x0c, 0x57, 0xb0, 0x16, 0xa7, 0x80, 0x39, 0xa2, 0xbf, 0xd5,
0x6b, 0x39, 0x7b, 0xb4, 0x56, 0x38, 0x3b, 0x5d, 0x9b, 0x97, 0x0d, 0x3c, 0xef, 0xdb, 0x1e, 0xfb,
0x50, 0x7f, 0x3f, 0x01, 0x85, 0x08, 0x0a, 0xbd, 0x0a, 0xe0, 0xbb, 0x63, 0xcf, 0xd7, 0x5c, 0x4a,
0x7d, 0xee, 0xac, 0x22, 0xce, 0x73, 0x0a, 0xa6, 0xd4, 0x47, 0x15, 0xb8, 0x6e, 0x10, 0xd7, 0xd7,
0x2c, 0xcf, 0x1b, 0x13, 0x57, 0xf3, 0xc6, 0xbb, 0x5f, 0x12, 0xc3, 0xe7, 0x8e, 0x2b, 0xe2, 0x6b,
0x8c, 0xd5, 0xe2, 0x9c, 0x9e, 0x60, 0xa0, 0x7b, 0x70, 0x23, 0x8a, 0x1f, 0x8d, 0x77, 0x6d, 0xcb,
0xd0, 0xd8, 0x64, 0xa6, 0xb8, 0xc8, 0xf5, 0xa9, 0x48, 0x97, 0xf3, 0x1e, 0x91, 0x89, 0xfa, 0x93,
0x04, 0x28, 0x58, 0xdf, 0xf3, 0xb7, 0xc9, 0x70, 0x97, 0xb8, 0x3d, 0x5f, 0xf7, 0xc7, 0x1e, 0xba,
0x01, 0x59, 0x9b, 0xe8, 0x26, 0x71, 0xb9, 0x51, 0x39, 0x2c, 0x5b, 0x68, 0x87, 0xad, 0x60, 0xdd,
0xd8, 0xd7, 0x77, 0x2d, 0xdb, 0xf2, 0x27, 0xdc, 0x94, 0xc5, 0xf8, 0x10, 0x3e, 0xaf, 0xb3, 0x82,
0x23, 0x82, 0x78, 0x46, 0x0d, 0x5a, 0x81, 0xf9, 0x21, 0xf1, 0x3c, 0x7d, 0x40, 0xb8, 0xa5, 0x79,
0x1c, 0x34, 0xd5, 0x07, 0x50, 0x8c, 0xca, 0xa1, 0x02, 0xcc, 0xef, 0xb4, 0x1f, 0xb5, 0x3b, 0x4f,
0xda, 0xca, 0x1c, 0x5a, 0x82, 0xc2, 0x4e, 0x1b, 0x37, 0xab, 0xf5, 0xcd, 0x6a, 0x6d, 0xab, 0xa9,
0x24, 0xd0, 0x02, 0xe4, 0xa7, 0xcd, 0xa4, 0xfa, 0xe7, 0x09, 0x00, 0xe6, 0x6e, 0x39, 0xa8, 0x8f,
0x21, 0xe3, 0xf9, 0xba, 0x2f, 0xa2, 0x72, 0x71, 0xfd, 0x8d, 0x8b, 0xe6, 0x50, 0xda, 0xcb, 0xfe,
0x11, 0x2c, 0x44, 0xa2, 0x16, 0x26, 0x67, 0x2c, 0x64, 0x1b, 0x84, 0x6e, 0x9a, 0xae, 0x34, 0x9c,
0x7f, 0xab, 0x0f, 0x20, 0xc3, 0xa5, 0x67, 0xcd, 0xcd, 0x41, 0xba, 0xc1, 0xbe, 0x12, 0x28, 0x0f,
0x19, 0xdc, 0xac, 0x36, 0xbe, 0x50, 0x92, 0x48, 0x81, 0x62, 0xa3, 0xd5, 0xab, 0x77, 0xda, 0xed,
0x66, 0xbd, 0xdf, 0x6c, 0x28, 0x29, 0xf5, 0x36, 0x64, 0x5a, 0x43, 0xa6, 0xf9, 0x16, 0x0b, 0xf9,
0x3d, 0xe2, 0x12, 0xc7, 0x08, 0x56, 0xd2, 0x94, 0xa0, 0xfe, 0x38, 0x0f, 0x99, 0x6d, 0x3a, 0x76,
0x7c, 0xb4, 0x1e, 0xd9, 0xb6, 0x16, 0xe3, 0x4f, 0x1e, 0x0e, 0xac, 0xf4, 0x27, 0x23, 0x22, 0xb7,
0xb5, 0x1b, 0x90, 0x15, 0x8b, 0x43, 0x0e, 0x47, 0xb6, 0x18, 0xdd, 0xd7, 0xdd, 0x01, 0xf1, 0xe5,
0x78, 0x64, 0x0b, 0xbd, 0x05, 0x39, 0x97, 0xe8, 0x26, 0x75, 0xec, 0x09, 0x5f, 0x43, 0x39, 0x71,
0xae, 0x60, 0xa2, 0x9b, 0x1d, 0xc7, 0x9e, 0xe0, 0x90, 0x8b, 0x36, 0xa1, 0xb8, 0x6b, 0x39, 0xa6,
0x46, 0x47, 0x62, 0x93, 0xcf, 0x5c, 0xbc, 0xe2, 0x84, 0x55, 0x35, 0xcb, 0x31, 0x3b, 0x02, 0x8c,
0x0b, 0xbb, 0xd3, 0x06, 0x6a, 0xc3, 0xe2, 0x21, 0xb5, 0xc7, 0x43, 0x12, 0xea, 0xca, 0x72, 0x5d,
0x6f, 0x5e, 0xac, 0xeb, 0x31, 0xc7, 0x07, 0xda, 0x16, 0x0e, 0xa3, 0x4d, 0xf4, 0x08, 0x16, 0xfc,
0xe1, 0x68, 0xcf, 0x0b, 0xd5, 0xcd, 0x73, 0x75, 0xdf, 0xbb, 0xc4, 0x61, 0x0c, 0x1e, 0x68, 0x2b,
0xfa, 0x91, 0x56, 0xe9, 0xb7, 0x53, 0x50, 0x88, 0x58, 0x8e, 0x7a, 0x50, 0x18, 0xb9, 0x74, 0xa4,
0x0f, 0xf8, 0x41, 0x25, 0xe7, 0xe2, 0xee, 0x0b, 0x8d, 0xba, 0xd2, 0x9d, 0x0a, 0xe2, 0xa8, 0x16,
0xf5, 0x24, 0x09, 0x85, 0x08, 0x13, 0xbd, 0x03, 0x39, 0xdc, 0xc5, 0xad, 0xc7, 0xd5, 0x7e, 0x53,
0x99, 0x2b, 0xdd, 0x3a, 0x3e, 0x29, 0xaf, 0x70, 0x6d, 0x51, 0x05, 0x5d, 0xd7, 0x3a, 0x64, 0xa1,
0xf7, 0x16, 0xcc, 0x07, 0xd0, 0x44, 0xe9, 0x95, 0xe3, 0x93, 0xf2, 0xcb, 0xe7, 0xa1, 0x11, 0x24,
0xee, 0x6d, 0x56, 0x71, 0xb3, 0xa1, 0x24, 0xe3, 0x91, 0xb8, 0xb7, 0xaf, 0xbb, 0xc4, 0x44, 0xdf,
0x83, 0xac, 0x04, 0xa6, 0x4a, 0xa5, 0xe3, 0x93, 0xf2, 0x8d, 0xf3, 0xc0, 0x29, 0x0e, 0xf7, 0xb6,
0xaa, 0x8f, 0x9b, 0x4a, 0x3a, 0x1e, 0x87, 0x7b, 0xb6, 0x7e, 0x48, 0xd0, 0x1b, 0x90, 0x11, 0xb0,
0x4c, 0xe9, 0xe6, 0xf1, 0x49, 0xf9, 0xa5, 0xe7, 0xd4, 0x31, 0x54, 0x69, 0xe5, 0x77, 0xff, 0x78,
0x75, 0xee, 0xaf, 0xff, 0x64, 0x55, 0x39, 0xcf, 0x2e, 0xfd, 0x6f, 0x02, 0x16, 0x66, 0xa6, 0x1c,
0xa9, 0x90, 0x75, 0xa8, 0x41, 0x47, 0xe2, 0xfc, 0xca, 0xd5, 0xe0, 0xec, 0x74, 0x2d, 0xdb, 0xa6,
0x75, 0x3a, 0x9a, 0x60, 0xc9, 0x41, 0x8f, 0xce, 0x9d, 0xc0, 0xf7, 0x5e, 0x30, 0x9e, 0x62, 0xcf,
0xe0, 0xcf, 0x60, 0xc1, 0x74, 0xad, 0x43, 0xe2, 0x6a, 0x06, 0x75, 0xf6, 0xac, 0x81, 0x3c, 0x9b,
0x4a, 0x71, 0x3a, 0x1b, 0x1c, 0x88, 0x8b, 0x42, 0xa0, 0xce, 0xf1, 0xdf, 0xe1, 0xf4, 0x2d, 0x3d,
0x86, 0x62, 0x34, 0x42, 0xd9, 0x71, 0xe2, 0x59, 0xbf, 0x46, 0x64, 0x42, 0xc7, 0xd3, 0x3f, 0x9c,
0x67, 0x14, 0x9e, 0xce, 0xa1, 0x37, 0x21, 0x3d, 0xa4, 0xa6, 0xd0, 0xb3, 0x50, 0xbb, 0xce, 0x92,
0x80, 0x7f, 0x39, 0x5d, 0x2b, 0x50, 0xaf, 0xb2, 0x61, 0xd9, 0x64, 0x9b, 0x9a, 0x04, 0x73, 0x80,
0x7a, 0x08, 0x69, 0xb6, 0x55, 0xa0, 0x57, 0x20, 0x5d, 0x6b, 0xb5, 0x1b, 0xca, 0x5c, 0xe9, 0xda,
0xf1, 0x49, 0x79, 0x81, 0xbb, 0x84, 0x31, 0x58, 0xec, 0xa2, 0x35, 0xc8, 0x3e, 0xee, 0x6c, 0xed,
0x6c, 0xb3, 0xf0, 0xba, 0x7e, 0x7c, 0x52, 0x5e, 0x0a, 0xd9, 0xc2, 0x69, 0xe8, 0x55, 0xc8, 0xf4,
0xb7, 0xbb, 0x1b, 0x3d, 0x25, 0x59, 0x42, 0xc7, 0x27, 0xe5, 0xc5, 0x90, 0xcf, 0x6d, 0x2e, 0x5d,
0x93, 0xb3, 0x9a, 0x0f, 0xe9, 0xea, 0x4f, 0x93, 0xb0, 0x80, 0x59, 0x25, 0xe1, 0xfa, 0x5d, 0x6a,
0x5b, 0xc6, 0x04, 0x75, 0x21, 0x6f, 0x50, 0xc7, 0xb4, 0x22, 0x6b, 0x6a, 0xfd, 0x82, 0x53, 0x7f,
0x2a, 0x15, 0xb4, 0xea, 0x81, 0x24, 0x9e, 0x2a, 0x41, 0xef, 0x41, 0xc6, 0x24, 0xb6, 0x3e, 0x91,
0xe9, 0xc7, 0xcd, 0x8a, 0xa8, 0x55, 0x2a, 0x41, 0xad, 0x52, 0x69, 0xc8, 0x5a, 0x05, 0x0b, 0x1c,
0xcf, 0x93, 0xf5, 0xa7, 0x9a, 0xee, 0xfb, 0x64, 0x38, 0xf2, 0x45, 0xee, 0x91, 0xc6, 0x85, 0xa1,
0xfe, 0xb4, 0x2a, 0x49, 0xe8, 0x2e, 0x64, 0x8f, 0x2c, 0xc7, 0xa4, 0x47, 0x32, 0xbd, 0xb8, 0x44,
0xa9, 0x04, 0xaa, 0xc7, 0xec, 0xd4, 0x3d, 0x67, 0x26, 0xf3, 0x77, 0xbb, 0xd3, 0x6e, 0x06, 0xfe,
0x96, 0xfc, 0x8e, 0xd3, 0xa6, 0x0e, 0x5b, 0x2b, 0xd0, 0x69, 0x6b, 0x1b, 0xd5, 0xd6, 0xd6, 0x0e,
0x66, 0x3e, 0x5f, 0x3e, 0x3e, 0x29, 0x2b, 0x21, 0x64, 0x43, 0xb7, 0x6c, 0x96, 0xef, 0xde, 0x84,
0x54, 0xb5, 0xfd, 0x85, 0x92, 0x2c, 0x29, 0xc7, 0x27, 0xe5, 0x62, 0xc8, 0xae, 0x3a, 0x93, 0xe9,
0x32, 0x3a, 0xdf, 0xaf, 0xfa, 0xf7, 0x29, 0x28, 0xee, 0x8c, 0x4c, 0xdd, 0x27, 0x22, 0x26, 0x51,
0x19, 0x0a, 0x23, 0xdd, 0xd5, 0x6d, 0x9b, 0xd8, 0x96, 0x37, 0x94, 0x55, 0x58, 0x94, 0x84, 0x3e,
0x7a, 0x51, 0x37, 0xd6, 0x72, 0x2c, 0xce, 0xfe, 0xe0, 0xdf, 0xd6, 0x12, 0x81, 0x43, 0x77, 0x60,
0x71, 0x4f, 0x58, 0xab, 0xe9, 0x06, 0x9f, 0xd8, 0x14, 0x9f, 0xd8, 0x4a, 0xdc, 0xc4, 0x46, 0xcd,
0xaa, 0xc8, 0x41, 0x56, 0xb9, 0x14, 0x5e, 0xd8, 0x8b, 0x36, 0xd1, 0x3d, 0x98, 0x1f, 0x52, 0xc7,
0xf2, 0xa9, 0x7b, 0xf5, 0x2c, 0x04, 0x48, 0xf4, 0x0e, 0x5c, 0x63, 0x93, 0x1b, 0xd8, 0xc3, 0xd9,
0xfc, 0xc4, 0x4a, 0xe2, 0xa5, 0xa1, 0xfe, 0x54, 0x76, 0x88, 0x19, 0x19, 0xd5, 0x20, 0x43, 0x5d,
0x96, 0x12, 0x65, 0xb9, 0xb9, 0xef, 0x5e, 0x69, 0xae, 0x68, 0x74, 0x98, 0x0c, 0x16, 0xa2, 0xea,
0x87, 0xb0, 0x30, 0x33, 0x08, 0x96, 0x09, 0x74, 0xab, 0x3b, 0xbd, 0xa6, 0x32, 0x87, 0x8a, 0x90,
0xab, 0x77, 0xda, 0xfd, 0x56, 0x7b, 0x87, 0xa5, 0x32, 0x45, 0xc8, 0xe1, 0xce, 0xd6, 0x56, 0xad,
0x5a, 0x7f, 0xa4, 0x24, 0xd5, 0x0a, 0x14, 0x22, 0xda, 0xd0, 0x22, 0x40, 0xaf, 0xdf, 0xe9, 0x6a,
0x1b, 0x2d, 0xdc, 0xeb, 0x8b, 0x44, 0xa8, 0xd7, 0xaf, 0xe2, 0xbe, 0x24, 0x24, 0xd4, 0xff, 0x4a,
0x06, 0x33, 0x2a, 0x73, 0x9f, 0xda, 0x6c, 0xee, 0x73, 0x89, 0xf1, 0x32, 0xfb, 0x99, 0x36, 0xc2,
0x1c, 0xe8, 0x23, 0x00, 0x1e, 0x38, 0xc4, 0xd4, 0x74, 0x5f, 0x4e, 0x7c, 0xe9, 0x39, 0x27, 0xf7,
0x83, 0xcb, 0x00, 0x9c, 0x97, 0xe8, 0xaa, 0x8f, 0x3e, 0x81, 0xa2, 0x41, 0x87, 0x23, 0x9b, 0x48,
0xe1, 0xd4, 0x95, 0xc2, 0x85, 0x10, 0x5f, 0xf5, 0xa3, 0xd9, 0x57, 0x7a, 0x36, 0x3f, 0xfc, 0x51,
0x22, 0xf0, 0x4c, 0x4c, 0xc2, 0x55, 0x84, 0xdc, 0x4e, 0xb7, 0x51, 0xed, 0xb7, 0xda, 0x0f, 0x95,
0x04, 0x02, 0xc8, 0x72, 0x57, 0x37, 0x94, 0x24, 0x4b, 0x14, 0xeb, 0x9d, 0xed, 0xee, 0x56, 0x93,
0xa7, 0x5c, 0x68, 0x19, 0x94, 0xc0, 0xd9, 0x1a, 0x77, 0x64, 0xb3, 0xa1, 0xa4, 0xd1, 0x75, 0x58,
0x0a, 0xa9, 0x52, 0x32, 0x83, 0x6e, 0x00, 0x0a, 0x89, 0x53, 0x15, 0x59, 0xf5, 0x37, 0x61, 0xa9,
0x4e, 0x1d, 0x5f, 0xb7, 0x9c, 0x30, 0x89, 0x5e, 0x67, 0x83, 0x96, 0x24, 0xcd, 0x32, 0xc5, 0x9e,
0x5e, 0x5b, 0x3a, 0x3b, 0x5d, 0x2b, 0x84, 0xd0, 0x56, 0x83, 0x8d, 0x34, 0x68, 0x98, 0x6c, 0xfd,
0x8e, 0x2c, 0x93, 0x3b, 0x37, 0x53, 0x9b, 0x3f, 0x3b, 0x5d, 0x4b, 0x75, 0x5b, 0x0d, 0xcc, 0x68,
0xe8, 0x15, 0xc8, 0x93, 0xa7, 0x96, 0xaf, 0x19, 0x6c, 0x0f, 0x67, 0x0e, 0xcc, 0xe0, 0x1c, 0x23,
0xd4, 0xd9, 0x96, 0x5d, 0x03, 0xe8, 0x52, 0xd7, 0x97, 0x3d, 0xbf, 0x0f, 0x99, 0x11, 0x75, 0x79,
0x79, 0x7e, 0xe1, 0x65, 0x04, 0x83, 0x8b, 0x40, 0xc5, 0x02, 0xac, 0xfe, 0x4d, 0x12, 0xa0, 0xaf,
0x7b, 0x07, 0x52, 0xc9, 0x7d, 0xc8, 0x87, 0x17, 0x3b, 0xb2, 0xce, 0xbf, 0x74, 0xb6, 0x43, 0x30,
0xba, 0x17, 0x04, 0x9b, 0x28, 0x0f, 0x62, 0xeb, 0xb4, 0xa0, 0xa3, 0xb8, 0x0c, 0x7b, 0xb6, 0x06,
0x60, 0x47, 0x22, 0x71, 0x5d, 0x39, 0xf3, 0xec, 0x13, 0xd5, 0xf9, 0xb1, 0x20, 0x9c, 0x26, 0x13,
0xcc, 0xd7, 0xe3, 0x3a, 0x39, 0x37, 0x23, 0x9b, 0x73, 0x78, 0x2a, 0x87, 0x3e, 0x83, 0x02, 0x1b,
0xb7, 0xe6, 0x71, 0x9e, 0xcc, 0x2d, 0x2f, 0x74, 0x95, 0xd0, 0x80, 0x61, 0x14, 0x7e, 0xd7, 0x14,
0x58, 0x74, 0xc7, 0x0e, 0x1b, 0xb6, 0xd4, 0xa1, 0xfe, 0x28, 0x09, 0x2f, 0xb7, 0x89, 0x7f, 0x44,
0xdd, 0x83, 0xaa, 0xef, 0xeb, 0xc6, 0xfe, 0x90, 0x38, 0xd2, 0xc9, 0x91, 0xcc, 0x3a, 0x31, 0x93,
0x59, 0xaf, 0xc0, 0xbc, 0x6e, 0x5b, 0xba, 0x47, 0x44, 0x3a, 0x92, 0xc7, 0x41, 0x93, 0xe5, 0xff,
0xac, 0x9a, 0x20, 0x9e, 0x47, 0x44, 0x81, 0x9f, 0xc7, 0x53, 0x02, 0xfa, 0x25, 0x28, 0xc8, 0xc4,
0x83, 0xb2, 0x63, 0x49, 0x5c, 0x3b, 0x3d, 0x88, 0xad, 0x69, 0xe2, 0x2d, 0x92, 0xe9, 0x48, 0x67,
0xe4, 0xcb, 0x94, 0x06, 0xcc, 0x90, 0x50, 0xfa, 0x04, 0x96, 0xce, 0xb1, 0xbf, 0xd5, 0xbd, 0xc0,
0x3f, 0x25, 0x01, 0x5a, 0xdd, 0xea, 0xb6, 0x1c, 0x7b, 0x03, 0xb2, 0x7b, 0xfa, 0xd0, 0xb2, 0x27,
0x97, 0x6d, 0x3f, 0x53, 0x7c, 0xa5, 0x2a, 0x46, 0xb9, 0xc1, 0x65, 0xb0, 0x94, 0xe5, 0x35, 0xcb,
0x78, 0xd7, 0x21, 0x7e, 0x58, 0xb3, 0xf0, 0x16, 0x33, 0xc3, 0xd5, 0x9d, 0x30, 0x6e, 0x44, 0x83,
0xf9, 0x75, 0xa0, 0xfb, 0xe4, 0x48, 0x9f, 0x04, 0x7b, 0x86, 0x6c, 0xa2, 0x4d, 0x56, 0xcb, 0x78,
0xc4, 0x3d, 0x24, 0xe6, 0x4a, 0x86, 0xbb, 0xed, 0x2a, 0x7b, 0xb0, 0x84, 0x0b, 0x3f, 0x85, 0xd2,
0xa5, 0x07, 0x3c, 0x5f, 0x99, 0xb2, 0xbe, 0x95, 0x8f, 0xee, 0xc0, 0xc2, 0xcc, 0x38, 0x9f, 0x2b,
0x16, 0x5b, 0xdd, 0xc7, 0xef, 0x2b, 0x69, 0xf9, 0xf5, 0xa1, 0x92, 0x55, 0xff, 0x34, 0x25, 0x56,
0xb9, 0xf4, 0x6a, 0xfc, 0x6d, 0x66, 0x8e, 0xaf, 0x4d, 0x83, 0xda, 0x72, 0xf5, 0xbd, 0x79, 0xf9,
0xe2, 0x67, 0xc5, 0x07, 0x87, 0xe3, 0x50, 0x10, 0xad, 0x41, 0x41, 0x04, 0xa7, 0xc6, 0xa2, 0x9d,
0xbb, 0x75, 0x01, 0x83, 0x20, 0x31, 0x49, 0x74, 0x1b, 0x16, 0xf9, 0xe5, 0x82, 0xb7, 0x4f, 0x4c,
0x81, 0x49, 0x73, 0xcc, 0x42, 0x48, 0xe5, 0xb0, 0x6d, 0x28, 0x4a, 0x82, 0xc6, 0x13, 0xcf, 0x0c,
0x37, 0xe8, 0x9d, 0xab, 0x0c, 0x12, 0x22, 0x3c, 0x1f, 0x2d, 0x8c, 0xa6, 0x0d, 0xb5, 0x01, 0xb9,
0xc0, 0x58, 0xb4, 0x02, 0xa9, 0x7e, 0xbd, 0xab, 0xcc, 0x95, 0x96, 0x8e, 0x4f, 0xca, 0x85, 0x80,
0xdc, 0xaf, 0x77, 0x19, 0x67, 0xa7, 0xd1, 0x55, 0x12, 0xb3, 0x9c, 0x9d, 0x46, 0xb7, 0x94, 0x66,
0x09, 0x90, 0xba, 0x07, 0x85, 0x48, 0x0f, 0xe8, 0x75, 0x98, 0x6f, 0xb5, 0x1f, 0xe2, 0x66, 0xaf,
0xa7, 0xcc, 0x95, 0x6e, 0x1c, 0x9f, 0x94, 0x51, 0x84, 0xdb, 0x72, 0x06, 0x6c, 0x7e, 0xd0, 0xab,
0x90, 0xde, 0xec, 0xb0, 0x83, 0x55, 0x64, 0xba, 0x11, 0xc4, 0x26, 0xf5, 0xfc, 0xd2, 0x75, 0x99,
0x59, 0x45, 0x15, 0xab, 0x7f, 0x98, 0x80, 0xac, 0x58, 0x42, 0xb1, 0x13, 0x55, 0x85, 0xf9, 0xa0,
0x0c, 0x15, 0x55, 0xc8, 0x9b, 0x17, 0x57, 0x0c, 0x15, 0x99, 0xe0, 0x8b, 0xf0, 0x0b, 0xe4, 0x4a,
0x1f, 0x43, 0x31, 0xca, 0xf8, 0x56, 0xc1, 0xf7, 0xeb, 0x50, 0x60, 0xf1, 0x1d, 0x54, 0x0e, 0xeb,
0x90, 0x15, 0x8b, 0x3f, 0xdc, 0xe8, 0x2f, 0x2e, 0x5f, 0x24, 0x12, 0xdd, 0x87, 0x79, 0x51, 0xf2,
0x04, 0xb7, 0x8f, 0xab, 0x97, 0xaf, 0x22, 0x1c, 0xc0, 0xd5, 0xcf, 0x20, 0xdd, 0x25, 0xc4, 0x65,
0xbe, 0x77, 0xa8, 0x49, 0xa6, 0x67, 0xa3, 0xac, 0xd6, 0x4c, 0xd2, 0x6a, 0xb0, 0x6a, 0xcd, 0x24,
0x2d, 0x33, 0xbc, 0x5f, 0x49, 0x46, 0xee, 0x57, 0xfa, 0x50, 0x7c, 0x42, 0xac, 0xc1, 0xbe, 0x4f,
0x4c, 0xae, 0xe8, 0x5d, 0x48, 0x8f, 0x48, 0x68, 0xfc, 0x4a, 0x6c, 0x80, 0x11, 0xe2, 0x62, 0x8e,
0x62, 0xfb, 0xc8, 0x11, 0x97, 0x96, 0x77, 0xde, 0xb2, 0xa5, 0xfe, 0x63, 0x12, 0x16, 0x5b, 0x9e,
0x37, 0xd6, 0x1d, 0x23, 0x48, 0x9b, 0x3e, 0x9d, 0x4d, 0x9b, 0xde, 0x8a, 0x1d, 0xe1, 0x8c, 0xc8,
0xec, 0xb5, 0x91, 0x3c, 0xba, 0x92, 0xe1, 0xd1, 0xa5, 0xfe, 0x67, 0x22, 0xb8, 0x1b, 0xba, 0x1d,
0x59, 0xee, 0xa5, 0x95, 0xe3, 0x93, 0xf2, 0x72, 0x54, 0x13, 0xd9, 0x71, 0x0e, 0x1c, 0x7a, 0xe4,
0xa0, 0xd7, 0x20, 0x83, 0x9b, 0xed, 0xe6, 0x13, 0x25, 0x21, 0xc2, 0x73, 0x06, 0x84, 0x89, 0x43,
0x8e, 0x98, 0xa6, 0x6e, 0xb3, 0xdd, 0x60, 0x69, 0x4e, 0x32, 0x46, 0x53, 0x97, 0x38, 0xa6, 0xe5,
0x0c, 0xd0, 0xeb, 0x90, 0x6d, 0xf5, 0x7a, 0x3b, 0xbc, 0x7a, 0x7f, 0xf9, 0xf8, 0xa4, 0x7c, 0x7d,
0x06, 0xc5, 0xef, 0x05, 0x4d, 0x06, 0x62, 0x35, 0x06, 0x4b, 0x80, 0x62, 0x40, 0x2c, 0x79, 0x15,
0x20, 0xdc, 0xe9, 0x57, 0xfb, 0xac, 0x70, 0x7f, 0x1e, 0x84, 0x29, 0xfb, 0x2b, 0x97, 0xdb, 0xbf,
0x26, 0x41, 0xa9, 0x1a, 0x06, 0x19, 0xf9, 0x8c, 0x2f, 0xcb, 0xba, 0x3e, 0xe4, 0x46, 0xec, 0xcb,
0x22, 0x41, 0x8a, 0x72, 0x3f, 0xf6, 0xd5, 0xe5, 0x9c, 0x5c, 0x05, 0x53, 0x9b, 0x54, 0xcd, 0xa1,
0xe5, 0x79, 0x16, 0x75, 0x04, 0x0d, 0x87, 0x9a, 0x4a, 0xff, 0x9d, 0x80, 0xeb, 0x31, 0x08, 0x74,
0x07, 0xd2, 0x2e, 0xb5, 0x83, 0x39, 0xbc, 0x75, 0xd1, 0xb5, 0x1f, 0x13, 0xc5, 0x1c, 0x89, 0x56,
0x01, 0xf4, 0xb1, 0x4f, 0x75, 0xde, 0x3f, 0x9f, 0xbd, 0x1c, 0x8e, 0x50, 0xd0, 0x13, 0xc8, 0x7a,
0xc4, 0x70, 0x49, 0x90, 0xc8, 0x7e, 0xf6, 0xb3, 0x5a, 0x5f, 0xe9, 0x71, 0x35, 0x58, 0xaa, 0x2b,
0x55, 0x20, 0x2b, 0x28, 0x2c, 0xec, 0x4d, 0xdd, 0xd7, 0xe5, 0xa5, 0x30, 0xff, 0x66, 0xd1, 0xa4,
0xdb, 0x83, 0x20, 0x9a, 0x74, 0x7b, 0xa0, 0xfe, 0x5d, 0x12, 0xa0, 0xf9, 0xd4, 0x27, 0xae, 0xa3,
0xdb, 0xf5, 0x2a, 0x6a, 0x46, 0x76, 0x7f, 0x31, 0xda, 0xb7, 0x63, 0x6f, 0xba, 0x43, 0x89, 0x4a,
0xbd, 0x1a, 0xb3, 0xff, 0xdf, 0x84, 0xd4, 0xd8, 0x95, 0x0f, 0x69, 0x22, 0x09, 0xdd, 0xc1, 0x5b,
0x98, 0xd1, 0x50, 0x73, 0xba, 0x6d, 0xa5, 0x2e, 0x7e, 0x2e, 0x8b, 0x74, 0x10, 0xbb, 0x75, 0xb1,
0x95, 0x6f, 0xe8, 0x9a, 0x41, 0xe4, 0xc9, 0x51, 0x14, 0x2b, 0xbf, 0x5e, 0xad, 0x13, 0xd7, 0xc7,
0x59, 0x43, 0x67, 0xff, 0xbf, 0xd3, 0xfe, 0xf6, 0x2e, 0xc0, 0x74, 0x68, 0x68, 0x15, 0x32, 0xf5,
0x8d, 0x5e, 0x6f, 0x4b, 0x99, 0x13, 0x1b, 0xf8, 0x94, 0xc5, 0xc9, 0xea, 0x5f, 0x25, 0x21, 0x57,
0xaf, 0xca, 0x63, 0xb5, 0x0e, 0x0a, 0xdf, 0x95, 0xf8, 0x55, 0x3a, 0x79, 0x3a, 0xb2, 0xdc, 0x89,
0xdc, 0x58, 0x2e, 0xa9, 0x28, 0x17, 0x99, 0x08, 0xb3, 0xba, 0xc9, 0x05, 0x10, 0x86, 0x22, 0x91,
0x4e, 0xd0, 0x0c, 0x3d, 0xd8, 0xe3, 0x57, 0x2f, 0x77, 0x96, 0xa8, 0x0d, 0xa6, 0x6d, 0x0f, 0x17,
0x02, 0x25, 0x75, 0xdd, 0x43, 0x1f, 0xc1, 0x92, 0x67, 0x0d, 0x1c, 0xcb, 0x19, 0x68, 0x81, 0xf3,
0xf8, 0xbd, 0x7e, 0xed, 0xda, 0xd9, 0xe9, 0xda, 0x42, 0x4f, 0xb0, 0xa4, 0x0f, 0x17, 0x24, 0xb2,
0xce, 0x5d, 0x89, 0x3e, 0x84, 0xc5, 0x88, 0x28, 0xf3, 0xa2, 0x70, 0xbb, 0x72, 0x76, 0xba, 0x56,
0x0c, 0x25, 0x1f, 0x91, 0x09, 0x2e, 0x86, 0x82, 0x8f, 0x08, 0xbf, 0xfc, 0xd8, 0xa3, 0xae, 0x41,
0x34, 0x97, 0xaf, 0x69, 0x7e, 0x82, 0xa7, 0x71, 0x81, 0xd3, 0xc4, 0x32, 0x57, 0x1f, 0xc3, 0xf5,
0x8e, 0x6b, 0xec, 0x13, 0xcf, 0x17, 0xae, 0x90, 0x5e, 0xfc, 0x0c, 0x6e, 0xf9, 0xba, 0x77, 0xa0,
0xed, 0x5b, 0x9e, 0x4f, 0xdd, 0x89, 0xe6, 0x12, 0x9f, 0x38, 0x8c, 0xaf, 0xf1, 0xc7, 0x40, 0x79,
0x3b, 0x75, 0x93, 0x61, 0x36, 0x05, 0x04, 0x07, 0x88, 0x2d, 0x06, 0x50, 0x5b, 0x50, 0x64, 0x35,
0x42, 0x83, 0xec, 0xe9, 0x63, 0xdb, 0x67, 0xa3, 0x07, 0x9b, 0x0e, 0xb4, 0x17, 0x3e, 0xa6, 0xf2,
0x36, 0x1d, 0x88, 0x4f, 0xf5, 0x87, 0xa0, 0x34, 0x2c, 0x6f, 0xa4, 0xfb, 0xc6, 0x7e, 0x70, 0xed,
0x86, 0x1a, 0xa0, 0xec, 0x13, 0xdd, 0xf5, 0x77, 0x89, 0xee, 0x6b, 0x23, 0xe2, 0x5a, 0xd4, 0xbc,
0x7a, 0x96, 0x97, 0x42, 0x91, 0x2e, 0x97, 0x50, 0xff, 0x27, 0x01, 0x80, 0xf5, 0xbd, 0x20, 0x23,
0xfb, 0x3e, 0x5c, 0xf3, 0x1c, 0x7d, 0xe4, 0xed, 0x53, 0x5f, 0xb3, 0x1c, 0x9f, 0xb8, 0x87, 0xba,
0x2d, 0x6f, 0x4f, 0x94, 0x80, 0xd1, 0x92, 0x74, 0xf4, 0x2e, 0xa0, 0x03, 0x42, 0x46, 0x1a, 0xb5,
0x4d, 0x2d, 0x60, 0x8a, 0xa7, 0xca, 0x34, 0x56, 0x18, 0xa7, 0x63, 0x9b, 0xbd, 0x80, 0x8e, 0x6a,
0xb0, 0xca, 0x86, 0x4f, 0x1c, 0xdf, 0xb5, 0x88, 0xa7, 0xed, 0x51, 0x57, 0xf3, 0x6c, 0x7a, 0xa4,
0xed, 0x51, 0xdb, 0xa6, 0x47, 0xc4, 0x0d, 0x2e, 0xa6, 0x4a, 0x36, 0x1d, 0x34, 0x05, 0x68, 0x83,
0xba, 0x3d, 0x9b, 0x1e, 0x6d, 0x04, 0x08, 0x96, 0xb6, 0x4d, 0xc7, 0xec, 0x5b, 0xc6, 0x41, 0x90,
0xb6, 0x85, 0xd4, 0xbe, 0x65, 0x1c, 0xa0, 0xd7, 0x61, 0x81, 0xd8, 0x84, 0xdf, 0x4f, 0x08, 0x54,
0x86, 0xa3, 0x8a, 0x01, 0x91, 0x81, 0xd4, 0xcf, 0x41, 0x69, 0x3a, 0x86, 0x3b, 0x19, 0x45, 0xe6,
0xfc, 0x5d, 0x40, 0x6c, 0x93, 0xd4, 0x6c, 0x6a, 0x1c, 0x68, 0x43, 0xdd, 0xd1, 0x07, 0xcc, 0x2e,
0xf1, 0x82, 0xa4, 0x30, 0xce, 0x16, 0x35, 0x0e, 0xb6, 0x25, 0x5d, 0xfd, 0x08, 0xa0, 0x37, 0x72,
0x89, 0x6e, 0x76, 0x58, 0x36, 0xc1, 0x5c, 0xc7, 0x5b, 0x9a, 0x29, 0x5f, 0xe0, 0xa8, 0x2b, 0x97,
0xba, 0x22, 0x18, 0x8d, 0x90, 0xae, 0xfe, 0x32, 0x5c, 0xef, 0xda, 0xba, 0xc1, 0x5f, 0xa3, 0xbb,
0xe1, 0x93, 0x08, 0xba, 0x0f, 0x59, 0x01, 0x95, 0x33, 0x19, 0xbb, 0xdc, 0xa6, 0x7d, 0x6e, 0xce,
0x61, 0x89, 0xaf, 0x15, 0x01, 0xa6, 0x7a, 0xd4, 0xbf, 0x48, 0x40, 0x3e, 0xd4, 0x8f, 0xca, 0xc0,
0x2a, 0x74, 0x16, 0xde, 0x96, 0x23, 0x4b, 0xea, 0x3c, 0x8e, 0x92, 0x50, 0x0b, 0x0a, 0xa3, 0x50,
0xfa, 0xd2, 0x7c, 0x2e, 0xc6, 0x6a, 0x1c, 0x95, 0x45, 0x1f, 0x43, 0x3e, 0x78, 0xf2, 0x0c, 0x76,
0xd8, 0xcb, 0x5f, 0x48, 0xa7, 0x70, 0xf5, 0x53, 0x80, 0x1f, 0x50, 0xcb, 0xe9, 0xd3, 0x03, 0xe2,
0xf0, 0x27, 0x3c, 0x56, 0xf5, 0x91, 0xc0, 0x8b, 0xb2, 0xc5, 0xeb, 0x6c, 0x31, 0x05, 0xe1, 0x4b,
0x96, 0x68, 0xaa, 0x7f, 0x9b, 0x84, 0x2c, 0xa6, 0xd4, 0xaf, 0x57, 0x51, 0x19, 0xb2, 0x72, 0x9f,
0xe0, 0xe7, 0x4f, 0x2d, 0x7f, 0x76, 0xba, 0x96, 0x11, 0x1b, 0x44, 0xc6, 0xe0, 0x3b, 0x43, 0x64,
0x07, 0x4f, 0x5e, 0xb4, 0x83, 0xa3, 0x3b, 0x50, 0x94, 0x20, 0x6d, 0x5f, 0xf7, 0xf6, 0x45, 0x81,
0x56, 0x5b, 0x3c, 0x3b, 0x5d, 0x03, 0x81, 0xdc, 0xd4, 0xbd, 0x7d, 0x0c, 0x02, 0xcd, 0xbe, 0x51,
0x13, 0x0a, 0x5f, 0x52, 0xcb, 0xd1, 0x7c, 0x3e, 0x08, 0x79, 0x93, 0x17, 0x3b, 0x8f, 0xd3, 0xa1,
0xca, 0xf7, 0x6c, 0xf8, 0x72, 0x3a, 0xf8, 0x26, 0x2c, 0xb8, 0x94, 0xfa, 0x62, 0xdb, 0xb2, 0xa8,
0x23, 0x2f, 0x09, 0xca, 0xb1, 0x77, 0xc7, 0x94, 0xfa, 0x58, 0xe2, 0x70, 0xd1, 0x8d, 0xb4, 0xd0,
0x1d, 0x58, 0xb6, 0x75, 0xcf, 0xd7, 0xf8, 0x7e, 0x67, 0x4e, 0xb5, 0x65, 0xf9, 0x52, 0x43, 0x8c,
0xb7, 0xc1, 0x59, 0x81, 0x84, 0xfa, 0xcf, 0x09, 0x28, 0xb0, 0xc1, 0x58, 0x7b, 0x96, 0xc1, 0x92,
0xbc, 0x6f, 0x9f, 0x7b, 0xdc, 0x84, 0x94, 0xe1, 0xb9, 0xd2, 0xa9, 0xfc, 0xf0, 0xad, 0xf7, 0x30,
0x66, 0x34, 0xf4, 0x39, 0x64, 0xe5, 0x65, 0x85, 0x48, 0x3b, 0xd4, 0xab, 0xd3, 0x51, 0xe9, 0x1b,
0x29, 0xc7, 0x63, 0x79, 0x6a, 0x9d, 0x38, 0x04, 0x70, 0x94, 0x84, 0x6e, 0x40, 0xd2, 0x10, 0xee,
0x92, 0x3f, 0x98, 0xa8, 0xb7, 0x71, 0xd2, 0x70, 0xd4, 0x7f, 0x48, 0xc0, 0xc2, 0x74, 0xc1, 0xb3,
0x08, 0xb8, 0x05, 0x79, 0x6f, 0xbc, 0xeb, 0x4d, 0x3c, 0x9f, 0x0c, 0x83, 0xe7, 0xc9, 0x90, 0x80,
0x5a, 0x90, 0xd7, 0xed, 0x01, 0x75, 0x2d, 0x7f, 0x7f, 0x28, 0x2b, 0xd1, 0xf8, 0x54, 0x21, 0xaa,
0xb3, 0x52, 0x0d, 0x44, 0xf0, 0x54, 0x3a, 0x38, 0xf7, 0xc5, 0x1b, 0x36, 0x3f, 0xf7, 0x5f, 0x83,
0xa2, 0xad, 0x0f, 0xf9, 0xed, 0x8d, 0x6f, 0x0d, 0xc5, 0x38, 0xd2, 0xb8, 0x20, 0x69, 0x7d, 0x6b,
0x48, 0x54, 0x15, 0xf2, 0xa1, 0x32, 0xb4, 0x04, 0x85, 0x6a, 0xb3, 0xa7, 0xdd, 0x5d, 0xbf, 0xaf,
0x3d, 0xac, 0x6f, 0x2b, 0x73, 0x32, 0x37, 0xfd, 0xcb, 0x04, 0x2c, 0xc8, 0xed, 0x48, 0xe6, 0xfb,
0xaf, 0xc3, 0xbc, 0xab, 0xef, 0xf9, 0x41, 0x45, 0x92, 0x16, 0x51, 0xcd, 0x76, 0x78, 0x56, 0x91,
0x30, 0x56, 0x7c, 0x45, 0x12, 0x79, 0x30, 0x4f, 0x5d, 0xfa, 0x60, 0x9e, 0xfe, 0xb9, 0x3c, 0x98,
0xab, 0xbf, 0x05, 0xb0, 0x61, 0xd9, 0xa4, 0x2f, 0xae, 0x90, 0xe2, 0xea, 0x4b, 0x96, 0xc3, 0xc9,
0x8b, 0xc4, 0x20, 0x87, 0x6b, 0x35, 0x30, 0xa3, 0x31, 0xd6, 0xc0, 0x32, 0xe5, 0x62, 0xe4, 0xac,
0x87, 0x8c, 0x35, 0xb0, 0xcc, 0xf0, 0x89, 0x28, 0x7d, 0xd5, 0x13, 0xd1, 0x49, 0x02, 0x96, 0x64,
0xee, 0x1a, 0x6e, 0xbf, 0x6f, 0x43, 0x5e, 0xa4, 0xb1, 0xd3, 0x82, 0x8e, 0x3f, 0x12, 0x0b, 0x5c,
0xab, 0x81, 0x73, 0x82, 0xdd, 0x32, 0xd1, 0x1a, 0x14, 0x24, 0x34, 0xf2, 0xe3, 0x1a, 0x10, 0xa4,
0x36, 0x33, 0xff, 0x7d, 0x48, 0xef, 0x59, 0x36, 0x91, 0x81, 0x1e, 0xbb, 0x01, 0x4c, 0x1d, 0xb0,
0x39, 0x87, 0x39, 0xba, 0x96, 0x0b, 0xee, 0xd8, 0xb8, 0x7d, 0xb2, 0xec, 0x8c, 0xda, 0x27, 0x2a,
0xd0, 0x73, 0xf6, 0x09, 0x1c, 0xb3, 0x4f, 0xb0, 0x85, 0x7d, 0x12, 0x1a, 0xb5, 0x4f, 0x90, 0x7e,
0x2e, 0xf6, 0x6d, 0xc1, 0x8d, 0x9a, 0xad, 0x1b, 0x07, 0xb6, 0xe5, 0xf9, 0xc4, 0x8c, 0xee, 0x18,
0xeb, 0x90, 0x9d, 0x49, 0x3a, 0x2f, 0xbb, 0x73, 0x95, 0x48, 0xf5, 0x3f, 0x12, 0x50, 0xdc, 0x24,
0xba, 0xed, 0xef, 0x4f, 0xaf, 0x86, 0x7c, 0xe2, 0xf9, 0xf2, 0xb0, 0xe2, 0xdf, 0xe8, 0x03, 0xc8,
0x85, 0x39, 0xc9, 0x95, 0x8f, 0x5f, 0x21, 0x14, 0xdd, 0x83, 0x79, 0xb6, 0xc6, 0xe8, 0x38, 0x28,
0x76, 0x2e, 0x7b, 0x57, 0x91, 0x48, 0x76, 0xc8, 0xb8, 0x84, 0x27, 0x21, 0x3c, 0x94, 0x32, 0x38,
0x68, 0xa2, 0x5f, 0x84, 0x22, 0x7f, 0x16, 0x08, 0x72, 0xae, 0xcc, 0x55, 0x3a, 0x0b, 0xe2, 0x65,
0x4f, 0xe4, 0x5b, 0xff, 0x97, 0x80, 0xe5, 0x6d, 0x7d, 0xb2, 0x4b, 0xe4, 0xb6, 0x41, 0x4c, 0x4c,
0x0c, 0xea, 0x9a, 0xa8, 0x1b, 0xdd, 0x6e, 0x2e, 0x79, 0x28, 0x8c, 0x13, 0x8e, 0xdf, 0x75, 0x82,
0x02, 0x2c, 0x19, 0x29, 0xc0, 0x96, 0x21, 0xe3, 0x50, 0xc7, 0x20, 0x72, 0x2f, 0x12, 0x0d, 0xd5,
0x8a, 0x6e, 0x35, 0xa5, 0xf0, 0x0d, 0x8f, 0xbf, 0xc0, 0xb5, 0xa9, 0x1f, 0xf6, 0x86, 0x3e, 0x87,
0x52, 0xaf, 0x59, 0xc7, 0xcd, 0x7e, 0xad, 0xf3, 0x43, 0xad, 0x57, 0xdd, 0xea, 0x55, 0xd7, 0xef,
0x68, 0xdd, 0xce, 0xd6, 0x17, 0x77, 0xef, 0xdd, 0xf9, 0x40, 0x49, 0x94, 0xca, 0xc7, 0x27, 0xe5,
0x5b, 0xed, 0x6a, 0x7d, 0x4b, 0xac, 0x98, 0x5d, 0xfa, 0xb4, 0xa7, 0xdb, 0x9e, 0xbe, 0x7e, 0xa7,
0x4b, 0xed, 0x09, 0xc3, 0xb0, 0xb0, 0x2e, 0x46, 0xcf, 0xab, 0xe8, 0x31, 0x9c, 0xb8, 0xf0, 0x18,
0x9e, 0x9e, 0xe6, 0xc9, 0x0b, 0x4e, 0xf3, 0x0d, 0x58, 0x36, 0x5c, 0xea, 0x79, 0x1a, 0xcb, 0xfe,
0x89, 0x79, 0xae, 0xbe, 0x78, 0xe9, 0xec, 0x74, 0xed, 0x5a, 0x9d, 0xf1, 0x7b, 0x9c, 0x2d, 0xd5,
0x5f, 0x33, 0x22, 0x24, 0xde, 0x93, 0xfa, 0x47, 0x29, 0x96, 0x48, 0x59, 0x87, 0x96, 0x4d, 0x06,
0xc4, 0x43, 0x8f, 0x61, 0xc9, 0x70, 0x89, 0xc9, 0xd2, 0x7a, 0xdd, 0xd6, 0xbc, 0x11, 0x31, 0x64,
0x50, 0xff, 0x42, 0x6c, 0x4e, 0x13, 0x0a, 0x56, 0xea, 0xa1, 0x54, 0x6f, 0x44, 0x0c, 0xbc, 0x68,
0xcc, 0xb4, 0xd1, 0x97, 0xb0, 0xe4, 0x11, 0xdb, 0x72, 0xc6, 0x4f, 0x35, 0x83, 0x3a, 0x3e, 0x79,
0x1a, 0x3c, 0x47, 0x5d, 0xa5, 0xb7, 0xd7, 0xdc, 0x62, 0x52, 0x75, 0x21, 0x54, 0x43, 0x67, 0xa7,
0x6b, 0x8b, 0xb3, 0x34, 0xbc, 0x28, 0x35, 0xcb, 0x76, 0xa9, 0x0d, 0x8b, 0xb3, 0xd6, 0xa0, 0x65,
0xb9, 0xf6, 0xf9, 0x16, 0x12, 0xac, 0x6d, 0x74, 0x0b, 0x72, 0x2e, 0x19, 0x58, 0x9e, 0xef, 0x0a,
0x37, 0x33, 0x4e, 0x48, 0x61, 0x2b, 0x5f, 0xfc, 0xc2, 0xa6, 0xf4, 0x1b, 0x70, 0xae, 0x47, 0xb6,
0x58, 0x4c, 0xcb, 0xd3, 0x77, 0xa5, 0xca, 0x1c, 0x0e, 0x9a, 0x2c, 0x06, 0xc7, 0x5e, 0x98, 0xa8,
0xf1, 0x6f, 0x46, 0xe3, 0x19, 0x85, 0xfc, 0xbd, 0x11, 0xcf, 0x19, 0x82, 0x1f, 0x2e, 0xa6, 0x23,
0x3f, 0x5c, 0x5c, 0x86, 0x8c, 0x4d, 0x0e, 0x89, 0x2d, 0xce, 0x72, 0x2c, 0x1a, 0xef, 0xfc, 0x34,
0x05, 0xf9, 0xf0, 0xe9, 0x85, 0x9d, 0x04, 0xed, 0xe6, 0x93, 0x20, 0x56, 0x43, 0x7a, 0x9b, 0x1c,
0xa1, 0xd7, 0xa6, 0x77, 0x4a, 0x9f, 0x8b, 0xb7, 0xe6, 0x90, 0x1d, 0xdc, 0x27, 0xbd, 0x01, 0xb9,
0x6a, 0xaf, 0xd7, 0x7a, 0xd8, 0x6e, 0x36, 0x94, 0xaf, 0x12, 0xa5, 0x97, 0x8e, 0x4f, 0xca, 0xd7,
0x42, 0x50, 0xd5, 0x13, 0xa1, 0xc4, 0x51, 0xf5, 0x7a, 0xb3, 0xdb, 0x6f, 0x36, 0x94, 0x67, 0xc9,
0xf3, 0x28, 0x7e, 0x47, 0xc2, 0x7f, 0x31, 0x92, 0xef, 0xe2, 0x66, 0xb7, 0x8a, 0x59, 0x87, 0x5f,
0x25, 0xc5, 0x55, 0xd7, 0xb4, 0x47, 0x97, 0x8c, 0x74, 0x97, 0xf5, 0xb9, 0x1a, 0xfc, 0x72, 0xea,
0x59, 0x4a, 0xfc, 0xaa, 0x60, 0xfa, 0x8e, 0x44, 0x74, 0x73, 0xc2, 0x7a, 0xe3, 0x0f, 0x78, 0x5c,
0x4d, 0xea, 0x5c, 0x6f, 0x3d, 0xb6, 0x93, 0x30, 0x2d, 0x2a, 0xcc, 0xe3, 0x9d, 0x76, 0x9b, 0x81,
0x9e, 0xa5, 0xcf, 0x8d, 0x0e, 0x8f, 0x1d, 0x56, 0xff, 0xa2, 0xdb, 0x90, 0x0b, 0xde, 0xf7, 0x94,
0xaf, 0xd2, 0xe7, 0x0c, 0xaa, 0x07, 0x8f, 0x93, 0xbc, 0xc3, 0xcd, 0x9d, 0x3e, 0xff, 0x61, 0xd7,
0xb3, 0xcc, 0xf9, 0x0e, 0xf7, 0xc7, 0xbe, 0x49, 0x8f, 0x1c, 0xb6, 0x02, 0xe5, 0xad, 0xda, 0x57,
0x19, 0x71, 0x05, 0x11, 0x62, 0xe4, 0x95, 0xda, 0x1b, 0x90, 0xc3, 0xcd, 0x1f, 0x88, 0xdf, 0x80,
0x3d, 0xcb, 0x9e, 0xd3, 0x83, 0xc9, 0x97, 0xc4, 0x90, 0xbd, 0x75, 0x70, 0x77, 0xb3, 0xca, 0x5d,
0x7e, 0x1e, 0xd5, 0x71, 0x47, 0xfb, 0xba, 0x43, 0xcc, 0xe9, 0x4f, 0x2b, 0x42, 0xd6, 0x3b, 0xbf,
0x02, 0xb9, 0x20, 0xcf, 0x44, 0xab, 0x90, 0x7d, 0xd2, 0xc1, 0x8f, 0x9a, 0x58, 0x99, 0x13, 0x3e,
0x0c, 0x38, 0x4f, 0x44, 0x85, 0x50, 0x86, 0xf9, 0xed, 0x6a, 0xbb, 0xfa, 0xb0, 0x89, 0x83, 0x0b,
0xef, 0x00, 0x20, 0x93, 0xa5, 0x92, 0x22, 0x3b, 0x08, 0x75, 0xd6, 0x56, 0xbe, 0xfe, 0x66, 0x75,
0xee, 0x27, 0xdf, 0xac, 0xce, 0x3d, 0x3b, 0x5b, 0x4d, 0x7c, 0x7d, 0xb6, 0x9a, 0xf8, 0xf1, 0xd9,
0x6a, 0xe2, 0xdf, 0xcf, 0x56, 0x13, 0xbb, 0x59, 0xbe, 0xa5, 0xdf, 0xfb, 0xff, 0x00, 0x00, 0x00,
0xff, 0xff, 0x69, 0xd9, 0x83, 0x1d, 0x57, 0x2e, 0x00, 0x00,
// 4705 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x7a, 0x4d, 0x6c, 0x24, 0xd7,
0x56, 0xbf, 0xfb, 0xd3, 0xdd, 0xa7, 0xdb, 0x76, 0xf9, 0x8e, 0x33, 0xf1, 0x74, 0x26, 0x76, 0xa7,
0x92, 0x79, 0xf9, 0x78, 0xf9, 0x77, 0x66, 0x3c, 0x49, 0x34, 0x49, 0xfe, 0x2f, 0x49, 0x7f, 0x79,
0xdc, 0x6f, 0xec, 0xee, 0xd6, 0xed, 0xf6, 0xcc, 0xcb, 0x02, 0x4a, 0xe5, 0xaa, 0xeb, 0x76, 0xc5,
0xd5, 0x75, 0x9b, 0xaa, 0x6a, 0x7b, 0x9a, 0x07, 0x62, 0xc4, 0x02, 0x90, 0x57, 0xb0, 0x43, 0x42,
0x66, 0x03, 0x2b, 0x84, 0xc4, 0x02, 0x24, 0x04, 0x1b, 0x82, 0xc4, 0x22, 0x3b, 0x1e, 0x20, 0xa1,
0x27, 0x90, 0x0c, 0xf1, 0x82, 0x1d, 0x82, 0xcd, 0x13, 0x1b, 0x90, 0xd0, 0xfd, 0xa8, 0xea, 0x6a,
0x4f, 0xd9, 0x9e, 0x90, 0xb7, 0xb1, 0xeb, 0x9e, 0xf3, 0x3b, 0xe7, 0xde, 0x7b, 0xee, 0xb9, 0xe7,
0x9e, 0x73, 0x6f, 0x43, 0xc1, 0x9f, 0x8c, 0x88, 0x57, 0x19, 0xb9, 0xd4, 0xa7, 0x08, 0x99, 0xd4,
0x38, 0x24, 0x6e, 0xc5, 0x3b, 0xd6, 0xdd, 0xe1, 0xa1, 0xe5, 0x57, 0x8e, 0xee, 0x95, 0xd6, 0x07,
0x94, 0x0e, 0x6c, 0xf2, 0x1e, 0x47, 0xec, 0x8d, 0xf7, 0xdf, 0xf3, 0xad, 0x21, 0xf1, 0x7c, 0x7d,
0x38, 0x12, 0x42, 0xa5, 0xb5, 0x8b, 0x00, 0x73, 0xec, 0xea, 0xbe, 0x45, 0x1d, 0xc9, 0x5f, 0x19,
0xd0, 0x01, 0xe5, 0x9f, 0xef, 0xb1, 0x2f, 0x41, 0x55, 0xd7, 0x61, 0xfe, 0x31, 0x71, 0x3d, 0x8b,
0x3a, 0x68, 0x05, 0x32, 0x96, 0x63, 0x92, 0xa7, 0xab, 0x89, 0x72, 0xe2, 0xad, 0x34, 0x16, 0x0d,
0xf5, 0x2e, 0x40, 0x8b, 0x7d, 0x34, 0x1d, 0xdf, 0x9d, 0x20, 0x05, 0x52, 0x87, 0x64, 0xc2, 0x11,
0x79, 0xcc, 0x3e, 0x19, 0xe5, 0x48, 0xb7, 0x57, 0x93, 0x82, 0x72, 0xa4, 0xdb, 0xea, 0x37, 0x09,
0x28, 0x54, 0x1d, 0x87, 0xfa, 0xbc, 0x77, 0x0f, 0x21, 0x48, 0x3b, 0xfa, 0x90, 0x48, 0x21, 0xfe,
0x8d, 0xea, 0x90, 0xb5, 0xf5, 0x3d, 0x62, 0x7b, 0xab, 0xc9, 0x72, 0xea, 0xad, 0xc2, 0xc6, 0xf7,
0x2b, 0xcf, 0x4f, 0xb9, 0x12, 0x51, 0x52, 0xd9, 0xe6, 0x68, 0x3e, 0x08, 0x2c, 0x45, 0xd1, 0xa7,
0x30, 0x6f, 0x39, 0xa6, 0x65, 0x10, 0x6f, 0x35, 0xcd, 0xb5, 0xac, 0xc5, 0x69, 0x99, 0x8e, 0xbe,
0x96, 0xfe, 0xfa, 0x6c, 0x7d, 0x0e, 0x07, 0x42, 0xa5, 0x8f, 0xa0, 0x10, 0x51, 0x1b, 0x33, 0xb7,
0x15, 0xc8, 0x1c, 0xe9, 0xf6, 0x98, 0xc8, 0xd9, 0x89, 0xc6, 0xc7, 0xc9, 0x07, 0x09, 0xf5, 0x0b,
0xc8, 0x63, 0xe2, 0xd1, 0xb1, 0x6b, 0x10, 0x0f, 0xbd, 0x0d, 0x79, 0x47, 0x77, 0xa8, 0x66, 0x8c,
0xc6, 0x1e, 0x17, 0x4f, 0xd5, 0x8a, 0xe7, 0x67, 0xeb, 0xb9, 0xb6, 0xee, 0xd0, 0x7a, 0x77, 0xd7,
0xc3, 0x39, 0xc6, 0xae, 0x8f, 0xc6, 0x1e, 0x7a, 0x0d, 0x8a, 0x43, 0x32, 0xa4, 0xee, 0x44, 0xdb,
0x9b, 0xf8, 0xc4, 0xe3, 0x8a, 0x53, 0xb8, 0x20, 0x68, 0x35, 0x46, 0x52, 0x7f, 0x3b, 0x01, 0x2b,
0x81, 0x6e, 0x4c, 0x7e, 0x69, 0x6c, 0xb9, 0x64, 0x48, 0x1c, 0xdf, 0x43, 0x1f, 0x40, 0xd6, 0xb6,
0x86, 0x96, 0x2f, 0xfa, 0x28, 0x6c, 0xbc, 0x1a, 0x37, 0xdb, 0x70, 0x54, 0x58, 0x82, 0x51, 0x15,
0x8a, 0x2e, 0xf1, 0x88, 0x7b, 0x24, 0x2c, 0xc9, 0xbb, 0xbc, 0x56, 0x78, 0x46, 0x44, 0xdd, 0x84,
0x5c, 0xd7, 0xd6, 0xfd, 0x7d, 0xea, 0x0e, 0x91, 0x0a, 0x45, 0xdd, 0x35, 0x0e, 0x2c, 0x9f, 0x18,
0xfe, 0xd8, 0x0d, 0x56, 0x75, 0x86, 0x86, 0x6e, 0x42, 0x92, 0x8a, 0x8e, 0xf2, 0xb5, 0xec, 0xf9,
0xd9, 0x7a, 0xb2, 0xd3, 0xc3, 0x49, 0xea, 0xa9, 0x9f, 0xc0, 0x72, 0xd7, 0x1e, 0x0f, 0x2c, 0xa7,
0x41, 0x3c, 0xc3, 0xb5, 0x46, 0x4c, 0x3b, 0x73, 0x0f, 0xe6, 0xfb, 0x81, 0x7b, 0xb0, 0xef, 0xd0,
0x65, 0x92, 0x53, 0x97, 0x51, 0x7f, 0x33, 0x09, 0xcb, 0x4d, 0x67, 0x60, 0x39, 0x24, 0x2a, 0x7d,
0x07, 0x16, 0x09, 0x27, 0x6a, 0x47, 0xc2, 0x8d, 0xa5, 0x9e, 0x05, 0x41, 0x0d, 0x7c, 0xbb, 0x75,
0xc1, 0xdf, 0xee, 0xc5, 0x4d, 0xff, 0x39, 0xed, 0xb1, 0x5e, 0xd7, 0x84, 0xf9, 0x11, 0x9f, 0x84,
0xb7, 0x9a, 0xe2, 0xba, 0xee, 0xc4, 0xe9, 0x7a, 0x6e, 0x9e, 0x81, 0xf3, 0x49, 0xd9, 0xef, 0xe2,
0x7c, 0x7f, 0x9c, 0x84, 0xa5, 0x36, 0x35, 0x67, 0xec, 0x50, 0x82, 0xdc, 0x01, 0xf5, 0xfc, 0xc8,
0x46, 0x0b, 0xdb, 0xe8, 0x01, 0xe4, 0x46, 0x72, 0xf9, 0xe4, 0xea, 0xdf, 0x8e, 0x1f, 0xb2, 0xc0,
0xe0, 0x10, 0x8d, 0x3e, 0x81, 0xbc, 0x1b, 0xf8, 0xc4, 0x6a, 0xea, 0x45, 0x1c, 0x67, 0x8a, 0x47,
0x3f, 0x80, 0xac, 0x58, 0x84, 0xd5, 0x34, 0x97, 0xbc, 0xf3, 0x42, 0x36, 0xc7, 0x52, 0x08, 0x3d,
0x84, 0x9c, 0x6f, 0x7b, 0x9a, 0xe5, 0xec, 0xd3, 0xd5, 0x0c, 0x57, 0xb0, 0x1e, 0xa7, 0x80, 0x19,
0xa2, 0xbf, 0xdd, 0x6b, 0x39, 0xfb, 0xb4, 0x56, 0x38, 0x3f, 0x5b, 0x9f, 0x97, 0x0d, 0x3c, 0xef,
0xdb, 0x1e, 0xfb, 0x50, 0x7f, 0x27, 0x01, 0x85, 0x08, 0x0a, 0xbd, 0x0a, 0xe0, 0xbb, 0x63, 0xcf,
0xd7, 0x5c, 0x4a, 0x7d, 0x6e, 0xac, 0x22, 0xce, 0x73, 0x0a, 0xa6, 0xd4, 0x47, 0x15, 0xb8, 0x61,
0x10, 0xd7, 0xd7, 0x2c, 0xcf, 0x1b, 0x13, 0x57, 0xf3, 0xc6, 0x7b, 0x5f, 0x12, 0xc3, 0xe7, 0x86,
0x2b, 0xe2, 0x65, 0xc6, 0x6a, 0x71, 0x4e, 0x4f, 0x30, 0xd0, 0x7d, 0xb8, 0x19, 0xc5, 0x8f, 0xc6,
0x7b, 0xb6, 0x65, 0x68, 0x6c, 0x31, 0x53, 0x5c, 0xe4, 0xc6, 0x54, 0xa4, 0xcb, 0x79, 0x8f, 0xc8,
0x44, 0xfd, 0x69, 0x02, 0x14, 0xac, 0xef, 0xfb, 0x3b, 0x64, 0xb8, 0x47, 0xdc, 0x9e, 0xaf, 0xfb,
0x63, 0x0f, 0xdd, 0x84, 0xac, 0x4d, 0x74, 0x93, 0xb8, 0x7c, 0x50, 0x39, 0x2c, 0x5b, 0x68, 0x97,
0xed, 0x60, 0xdd, 0x38, 0xd0, 0xf7, 0x2c, 0xdb, 0xf2, 0x27, 0x7c, 0x28, 0x8b, 0xf1, 0x2e, 0x7c,
0x51, 0x67, 0x05, 0x47, 0x04, 0xf1, 0x8c, 0x1a, 0xb4, 0x0a, 0xf3, 0x43, 0xe2, 0x79, 0xfa, 0x80,
0xf0, 0x91, 0xe6, 0x71, 0xd0, 0x54, 0x3f, 0x81, 0x62, 0x54, 0x0e, 0x15, 0x60, 0x7e, 0xb7, 0xfd,
0xa8, 0xdd, 0x79, 0xd2, 0x56, 0xe6, 0xd0, 0x12, 0x14, 0x76, 0xdb, 0xb8, 0x59, 0xad, 0x6f, 0x55,
0x6b, 0xdb, 0x4d, 0x25, 0x81, 0x16, 0x20, 0x3f, 0x6d, 0x26, 0xd5, 0x3f, 0x4d, 0x00, 0x30, 0x73,
0xcb, 0x49, 0x7d, 0x0c, 0x19, 0xcf, 0xd7, 0x7d, 0xe1, 0x95, 0x8b, 0x1b, 0x6f, 0x5c, 0xb6, 0x86,
0x72, 0xbc, 0xec, 0x1f, 0xc1, 0x42, 0x24, 0x3a, 0xc2, 0xe4, 0xcc, 0x08, 0x59, 0x80, 0xd0, 0x4d,
0xd3, 0x95, 0x03, 0xe7, 0xdf, 0xea, 0x27, 0x90, 0xe1, 0xd2, 0xb3, 0xc3, 0xcd, 0x41, 0xba, 0xc1,
0xbe, 0x12, 0x28, 0x0f, 0x19, 0xdc, 0xac, 0x36, 0xbe, 0x50, 0x92, 0x48, 0x81, 0x62, 0xa3, 0xd5,
0xab, 0x77, 0xda, 0xed, 0x66, 0xbd, 0xdf, 0x6c, 0x28, 0x29, 0xf5, 0x0e, 0x64, 0x5a, 0x43, 0xa6,
0xf9, 0x36, 0x73, 0xf9, 0x7d, 0xe2, 0x12, 0xc7, 0x08, 0x76, 0xd2, 0x94, 0xa0, 0xfe, 0x24, 0x0f,
0x99, 0x1d, 0x3a, 0x76, 0x7c, 0xb4, 0x11, 0x09, 0x5b, 0x8b, 0xf1, 0x27, 0x0f, 0x07, 0x56, 0xfa,
0x93, 0x11, 0x91, 0x61, 0xed, 0x26, 0x64, 0xc5, 0xe6, 0x90, 0xd3, 0x91, 0x2d, 0x46, 0xf7, 0x75,
0x77, 0x40, 0x7c, 0x39, 0x1f, 0xd9, 0x42, 0x6f, 0x41, 0xce, 0x25, 0xba, 0x49, 0x1d, 0x7b, 0xc2,
0xf7, 0x50, 0x4e, 0x9c, 0x2b, 0x98, 0xe8, 0x66, 0xc7, 0xb1, 0x27, 0x38, 0xe4, 0xa2, 0x2d, 0x28,
0xee, 0x59, 0x8e, 0xa9, 0xd1, 0x91, 0x08, 0xf2, 0x99, 0xcb, 0x77, 0x9c, 0x18, 0x55, 0xcd, 0x72,
0xcc, 0x8e, 0x00, 0xe3, 0xc2, 0xde, 0xb4, 0x81, 0xda, 0xb0, 0x78, 0x44, 0xed, 0xf1, 0x90, 0x84,
0xba, 0xb2, 0x5c, 0xd7, 0x9b, 0x97, 0xeb, 0x7a, 0xcc, 0xf1, 0x81, 0xb6, 0x85, 0xa3, 0x68, 0x13,
0x3d, 0x82, 0x05, 0x7f, 0x38, 0xda, 0xf7, 0x42, 0x75, 0xf3, 0x5c, 0xdd, 0xf7, 0xae, 0x30, 0x18,
0x83, 0x07, 0xda, 0x8a, 0x7e, 0xa4, 0x55, 0xfa, 0xf5, 0x14, 0x14, 0x22, 0x23, 0x47, 0x3d, 0x28,
0x8c, 0x5c, 0x3a, 0xd2, 0x07, 0xfc, 0xa0, 0x92, 0x6b, 0x71, 0xef, 0x85, 0x66, 0x5d, 0xe9, 0x4e,
0x05, 0x71, 0x54, 0x8b, 0x7a, 0x9a, 0x84, 0x42, 0x84, 0x89, 0xde, 0x81, 0x1c, 0xee, 0xe2, 0xd6,
0xe3, 0x6a, 0xbf, 0xa9, 0xcc, 0x95, 0x6e, 0x9f, 0x9c, 0x96, 0x57, 0xb9, 0xb6, 0xa8, 0x82, 0xae,
0x6b, 0x1d, 0x31, 0xd7, 0x7b, 0x0b, 0xe6, 0x03, 0x68, 0xa2, 0xf4, 0xca, 0xc9, 0x69, 0xf9, 0xe5,
0x8b, 0xd0, 0x08, 0x12, 0xf7, 0xb6, 0xaa, 0xb8, 0xd9, 0x50, 0x92, 0xf1, 0x48, 0xdc, 0x3b, 0xd0,
0x5d, 0x62, 0xa2, 0xef, 0x41, 0x56, 0x02, 0x53, 0xa5, 0xd2, 0xc9, 0x69, 0xf9, 0xe6, 0x45, 0xe0,
0x14, 0x87, 0x7b, 0xdb, 0xd5, 0xc7, 0x4d, 0x25, 0x1d, 0x8f, 0xc3, 0x3d, 0x5b, 0x3f, 0x22, 0xe8,
0x0d, 0xc8, 0x08, 0x58, 0xa6, 0x74, 0xeb, 0xe4, 0xb4, 0xfc, 0xd2, 0x73, 0xea, 0x18, 0xaa, 0xb4,
0xfa, 0x5b, 0x7f, 0xb0, 0x36, 0xf7, 0x97, 0x7f, 0xb8, 0xa6, 0x5c, 0x64, 0x97, 0xfe, 0x3b, 0x01,
0x0b, 0x33, 0x4b, 0x8e, 0x54, 0xc8, 0x3a, 0xd4, 0xa0, 0x23, 0x71, 0x7e, 0xe5, 0x6a, 0x70, 0x7e,
0xb6, 0x9e, 0x6d, 0xd3, 0x3a, 0x1d, 0x4d, 0xb0, 0xe4, 0xa0, 0x47, 0x17, 0x4e, 0xe0, 0xfb, 0x2f,
0xe8, 0x4f, 0xb1, 0x67, 0xf0, 0x67, 0xb0, 0x60, 0xba, 0xd6, 0x11, 0x71, 0x35, 0x83, 0x3a, 0xfb,
0xd6, 0x40, 0x9e, 0x4d, 0xa5, 0x38, 0x9d, 0x0d, 0x0e, 0xc4, 0x45, 0x21, 0x50, 0xe7, 0xf8, 0xef,
0x70, 0xfa, 0x96, 0x1e, 0x43, 0x31, 0xea, 0xa1, 0xec, 0x38, 0xf1, 0xac, 0x5f, 0x26, 0x32, 0xa1,
0xe3, 0xe9, 0x1f, 0xce, 0x33, 0x0a, 0x4f, 0xe7, 0xd0, 0x9b, 0x90, 0x1e, 0x52, 0x53, 0xe8, 0x59,
0xa8, 0xdd, 0x60, 0x49, 0xc0, 0x3f, 0x9d, 0xad, 0x17, 0xa8, 0x57, 0xd9, 0xb4, 0x6c, 0xb2, 0x43,
0x4d, 0x82, 0x39, 0x40, 0x3d, 0x82, 0x34, 0x0b, 0x15, 0xe8, 0x15, 0x48, 0xd7, 0x5a, 0xed, 0x86,
0x32, 0x57, 0x5a, 0x3e, 0x39, 0x2d, 0x2f, 0x70, 0x93, 0x30, 0x06, 0xf3, 0x5d, 0xb4, 0x0e, 0xd9,
0xc7, 0x9d, 0xed, 0xdd, 0x1d, 0xe6, 0x5e, 0x37, 0x4e, 0x4e, 0xcb, 0x4b, 0x21, 0x5b, 0x18, 0x0d,
0xbd, 0x0a, 0x99, 0xfe, 0x4e, 0x77, 0xb3, 0xa7, 0x24, 0x4b, 0xe8, 0xe4, 0xb4, 0xbc, 0x18, 0xf2,
0xf9, 0x98, 0x4b, 0xcb, 0x72, 0x55, 0xf3, 0x21, 0x5d, 0xfd, 0x59, 0x12, 0x16, 0x30, 0xab, 0x24,
0x5c, 0xbf, 0x4b, 0x6d, 0xcb, 0x98, 0xa0, 0x2e, 0xe4, 0x0d, 0xea, 0x98, 0x56, 0x64, 0x4f, 0x6d,
0x5c, 0x72, 0xea, 0x4f, 0xa5, 0x82, 0x56, 0x3d, 0x90, 0xc4, 0x53, 0x25, 0xe8, 0x3d, 0xc8, 0x98,
0xc4, 0xd6, 0x27, 0x32, 0xfd, 0xb8, 0x55, 0x11, 0xb5, 0x4a, 0x25, 0xa8, 0x55, 0x2a, 0x0d, 0x59,
0xab, 0x60, 0x81, 0xe3, 0x79, 0xb2, 0xfe, 0x54, 0xd3, 0x7d, 0x9f, 0x0c, 0x47, 0xbe, 0xc8, 0x3d,
0xd2, 0xb8, 0x30, 0xd4, 0x9f, 0x56, 0x25, 0x09, 0xdd, 0x83, 0xec, 0xb1, 0xe5, 0x98, 0xf4, 0x58,
0xa6, 0x17, 0x57, 0x28, 0x95, 0x40, 0xf5, 0x84, 0x9d, 0xba, 0x17, 0x86, 0xc9, 0xec, 0xdd, 0xee,
0xb4, 0x9b, 0x81, 0xbd, 0x25, 0xbf, 0xe3, 0xb4, 0xa9, 0xc3, 0xf6, 0x0a, 0x74, 0xda, 0xda, 0x66,
0xb5, 0xb5, 0xbd, 0x8b, 0x99, 0xcd, 0x57, 0x4e, 0x4e, 0xcb, 0x4a, 0x08, 0xd9, 0xd4, 0x2d, 0x9b,
0xe5, 0xbb, 0xb7, 0x20, 0x55, 0x6d, 0x7f, 0xa1, 0x24, 0x4b, 0xca, 0xc9, 0x69, 0xb9, 0x18, 0xb2,
0xab, 0xce, 0x64, 0xba, 0x8d, 0x2e, 0xf6, 0xab, 0xfe, 0x6d, 0x0a, 0x8a, 0xbb, 0x23, 0x53, 0xf7,
0x89, 0xf0, 0x49, 0x54, 0x86, 0xc2, 0x48, 0x77, 0x75, 0xdb, 0x26, 0xb6, 0xe5, 0x0d, 0x65, 0x15,
0x16, 0x25, 0xa1, 0x8f, 0x5e, 0xd4, 0x8c, 0xb5, 0x1c, 0xf3, 0xb3, 0xdf, 0xfd, 0x97, 0xf5, 0x44,
0x60, 0xd0, 0x5d, 0x58, 0xdc, 0x17, 0xa3, 0xd5, 0x74, 0x83, 0x2f, 0x6c, 0x8a, 0x2f, 0x6c, 0x25,
0x6e, 0x61, 0xa3, 0xc3, 0xaa, 0xc8, 0x49, 0x56, 0xb9, 0x14, 0x5e, 0xd8, 0x8f, 0x36, 0xd1, 0x7d,
0x98, 0x1f, 0x52, 0xc7, 0xf2, 0xa9, 0x7b, 0xfd, 0x2a, 0x04, 0x48, 0xf4, 0x0e, 0x2c, 0xb3, 0xc5,
0x0d, 0xc6, 0xc3, 0xd9, 0xfc, 0xc4, 0x4a, 0xe2, 0xa5, 0xa1, 0xfe, 0x54, 0x76, 0x88, 0x19, 0x19,
0xd5, 0x20, 0x43, 0x5d, 0x96, 0x12, 0x65, 0xf9, 0x70, 0xdf, 0xbd, 0x76, 0xb8, 0xa2, 0xd1, 0x61,
0x32, 0x58, 0x88, 0xaa, 0x1f, 0xc2, 0xc2, 0xcc, 0x24, 0x58, 0x26, 0xd0, 0xad, 0xee, 0xf6, 0x9a,
0xca, 0x1c, 0x2a, 0x42, 0xae, 0xde, 0x69, 0xf7, 0x5b, 0xed, 0x5d, 0x96, 0xca, 0x14, 0x21, 0x87,
0x3b, 0xdb, 0xdb, 0xb5, 0x6a, 0xfd, 0x91, 0x92, 0x54, 0x2b, 0x50, 0x88, 0x68, 0x43, 0x8b, 0x00,
0xbd, 0x7e, 0xa7, 0xab, 0x6d, 0xb6, 0x70, 0xaf, 0x2f, 0x12, 0xa1, 0x5e, 0xbf, 0x8a, 0xfb, 0x92,
0x90, 0x50, 0xff, 0x23, 0x19, 0xac, 0xa8, 0xcc, 0x7d, 0x6a, 0xb3, 0xb9, 0xcf, 0x15, 0x83, 0x97,
0xd9, 0xcf, 0xb4, 0x11, 0xe6, 0x40, 0x1f, 0x01, 0x70, 0xc7, 0x21, 0xa6, 0xa6, 0xfb, 0x72, 0xe1,
0x4b, 0xcf, 0x19, 0xb9, 0x1f, 0x5c, 0x06, 0xe0, 0xbc, 0x44, 0x57, 0x7d, 0xf4, 0x03, 0x28, 0x1a,
0x74, 0x38, 0xb2, 0x89, 0x14, 0x4e, 0x5d, 0x2b, 0x5c, 0x08, 0xf1, 0x55, 0x3f, 0x9a, 0x7d, 0xa5,
0x67, 0xf3, 0xc3, 0xdf, 0x48, 0x04, 0x96, 0x89, 0x49, 0xb8, 0x8a, 0x90, 0xdb, 0xed, 0x36, 0xaa,
0xfd, 0x56, 0xfb, 0xa1, 0x92, 0x40, 0x00, 0x59, 0x6e, 0xea, 0x86, 0x92, 0x64, 0x89, 0x62, 0xbd,
0xb3, 0xd3, 0xdd, 0x6e, 0xf2, 0x94, 0x0b, 0xad, 0x80, 0x12, 0x18, 0x5b, 0xe3, 0x86, 0x6c, 0x36,
0x94, 0x34, 0xba, 0x01, 0x4b, 0x21, 0x55, 0x4a, 0x66, 0xd0, 0x4d, 0x40, 0x21, 0x71, 0xaa, 0x22,
0xab, 0xfe, 0x2a, 0x2c, 0xd5, 0xa9, 0xe3, 0xeb, 0x96, 0x13, 0x26, 0xd1, 0x1b, 0x6c, 0xd2, 0x92,
0xa4, 0x59, 0xa6, 0x88, 0xe9, 0xb5, 0xa5, 0xf3, 0xb3, 0xf5, 0x42, 0x08, 0x6d, 0x35, 0xd8, 0x4c,
0x83, 0x86, 0xc9, 0xf6, 0xef, 0xc8, 0x32, 0xb9, 0x71, 0x33, 0xb5, 0xf9, 0xf3, 0xb3, 0xf5, 0x54,
0xb7, 0xd5, 0xc0, 0x8c, 0x86, 0x5e, 0x81, 0x3c, 0x79, 0x6a, 0xf9, 0x9a, 0xc1, 0x62, 0x38, 0x33,
0x60, 0x06, 0xe7, 0x18, 0xa1, 0xce, 0x42, 0x76, 0x0d, 0xa0, 0x4b, 0x5d, 0x5f, 0xf6, 0xfc, 0x3e,
0x64, 0x46, 0xd4, 0xe5, 0xe5, 0xf9, 0xa5, 0x97, 0x11, 0x0c, 0x2e, 0x1c, 0x15, 0x0b, 0xb0, 0xfa,
0x57, 0x49, 0x80, 0xbe, 0xee, 0x1d, 0x4a, 0x25, 0x0f, 0x20, 0x1f, 0x5e, 0xec, 0xc8, 0x3a, 0xff,
0xca, 0xd5, 0x0e, 0xc1, 0xe8, 0x7e, 0xe0, 0x6c, 0xa2, 0x3c, 0x88, 0xad, 0xd3, 0x82, 0x8e, 0xe2,
0x32, 0xec, 0xd9, 0x1a, 0x80, 0x1d, 0x89, 0xc4, 0x75, 0xe5, 0xca, 0xb3, 0x4f, 0x54, 0xe7, 0xc7,
0x82, 0x30, 0x9a, 0x4c, 0x30, 0x5f, 0x8f, 0xeb, 0xe4, 0xc2, 0x8a, 0x6c, 0xcd, 0xe1, 0xa9, 0x1c,
0xfa, 0x0c, 0x0a, 0x6c, 0xde, 0x9a, 0xc7, 0x79, 0x32, 0xb7, 0xbc, 0xd4, 0x54, 0x42, 0x03, 0x86,
0x51, 0xf8, 0x5d, 0x53, 0x60, 0xd1, 0x1d, 0x3b, 0x6c, 0xda, 0x52, 0x87, 0xfa, 0x27, 0x49, 0x78,
0xb9, 0x4d, 0xfc, 0x63, 0xea, 0x1e, 0x56, 0x7d, 0x5f, 0x37, 0x0e, 0x86, 0xc4, 0x91, 0x46, 0x8e,
0x64, 0xd6, 0x89, 0x99, 0xcc, 0x7a, 0x15, 0xe6, 0x75, 0xdb, 0xd2, 0x3d, 0x22, 0xd2, 0x91, 0x3c,
0x0e, 0x9a, 0x2c, 0xff, 0x67, 0xd5, 0x04, 0xf1, 0x3c, 0x22, 0x0a, 0xfc, 0x3c, 0x9e, 0x12, 0xd0,
0x8f, 0xe1, 0xa6, 0x4c, 0x3c, 0xf4, 0xb0, 0x2b, 0x96, 0xd9, 0x06, 0x37, 0x50, 0xcd, 0xd8, 0xf2,
0x26, 0x7e, 0x70, 0x32, 0x33, 0x99, 0x92, 0x3b, 0x23, 0x5f, 0xe6, 0x39, 0x2b, 0x66, 0x0c, 0xab,
0xf4, 0x10, 0x6e, 0x5d, 0x2a, 0xf2, 0xad, 0x2e, 0x10, 0xfe, 0x21, 0x09, 0xd0, 0xea, 0x56, 0x77,
0xa4, 0x91, 0x1a, 0x90, 0xdd, 0xd7, 0x87, 0x96, 0x3d, 0xb9, 0x2a, 0x4e, 0x4d, 0xf1, 0x95, 0xaa,
0x30, 0xc7, 0x26, 0x97, 0xc1, 0x52, 0x96, 0x17, 0x37, 0xe3, 0x3d, 0x87, 0xf8, 0x61, 0x71, 0xc3,
0x5b, 0x6c, 0x18, 0xae, 0xee, 0x84, 0x0e, 0x26, 0x1a, 0x6c, 0x01, 0x06, 0xba, 0x4f, 0x8e, 0xf5,
0x49, 0x10, 0x5c, 0x64, 0x13, 0x6d, 0xb1, 0xa2, 0xc7, 0x23, 0xee, 0x11, 0x31, 0x57, 0x33, 0xdc,
0xa8, 0xd7, 0x8d, 0x07, 0x4b, 0xb8, 0xb0, 0x5d, 0x28, 0x5d, 0xfa, 0x84, 0x27, 0x36, 0x53, 0xd6,
0xb7, 0xb2, 0xd1, 0x5d, 0x58, 0x98, 0x99, 0xe7, 0x73, 0x55, 0x65, 0xab, 0xfb, 0xf8, 0x7d, 0x25,
0x2d, 0xbf, 0x3e, 0x54, 0xb2, 0xea, 0x1f, 0xa5, 0x44, 0x38, 0x90, 0x56, 0x8d, 0xbf, 0xf6, 0xcc,
0xf1, 0x4d, 0x6c, 0x50, 0x5b, 0x6e, 0xd3, 0x37, 0xaf, 0x8e, 0x12, 0xac, 0x4a, 0xe1, 0x70, 0x1c,
0x0a, 0xa2, 0x75, 0x28, 0x08, 0x2f, 0xd6, 0xd8, 0xb6, 0xe0, 0x66, 0x5d, 0xc0, 0x20, 0x48, 0x4c,
0x12, 0xdd, 0x81, 0x45, 0x7e, 0x0b, 0xe1, 0x1d, 0x10, 0x53, 0x60, 0xd2, 0x1c, 0xb3, 0x10, 0x52,
0x39, 0x6c, 0x07, 0x8a, 0x92, 0xa0, 0xf1, 0x0c, 0x35, 0xc3, 0x07, 0xf4, 0xce, 0x75, 0x03, 0x12,
0x22, 0x3c, 0x71, 0x2d, 0x8c, 0xa6, 0x0d, 0xb5, 0x01, 0xb9, 0x60, 0xb0, 0x68, 0x15, 0x52, 0xfd,
0x7a, 0x57, 0x99, 0x2b, 0x2d, 0x9d, 0x9c, 0x96, 0x0b, 0x01, 0xb9, 0x5f, 0xef, 0x32, 0xce, 0x6e,
0xa3, 0xab, 0x24, 0x66, 0x39, 0xbb, 0x8d, 0x6e, 0x29, 0xcd, 0x32, 0x25, 0x75, 0x1f, 0x0a, 0x91,
0x1e, 0xd0, 0xeb, 0x30, 0xdf, 0x6a, 0x3f, 0xc4, 0xcd, 0x5e, 0x4f, 0x99, 0x2b, 0xdd, 0x3c, 0x39,
0x2d, 0xa3, 0x08, 0xb7, 0xe5, 0x0c, 0xd8, 0xfa, 0xa0, 0x57, 0x21, 0xbd, 0xd5, 0x61, 0x27, 0xb0,
0x48, 0x89, 0x23, 0x88, 0x2d, 0xea, 0xf9, 0xa5, 0x1b, 0x32, 0x05, 0x8b, 0x2a, 0x56, 0x7f, 0x2f,
0x01, 0x59, 0xb1, 0x99, 0x62, 0x17, 0xaa, 0x0a, 0xf3, 0x41, 0xbd, 0x2a, 0xca, 0x95, 0x37, 0x2f,
0x2f, 0x2d, 0x2a, 0xb2, 0x12, 0x10, 0xee, 0x17, 0xc8, 0x95, 0x3e, 0x86, 0x62, 0x94, 0xf1, 0xad,
0x9c, 0xef, 0xc7, 0x50, 0x60, 0xfe, 0x1d, 0x94, 0x18, 0x1b, 0x90, 0x15, 0x01, 0x21, 0x3c, 0x11,
0x2e, 0xaf, 0x73, 0x24, 0x12, 0x3d, 0x80, 0x79, 0x51, 0x1b, 0x05, 0xd7, 0x94, 0x6b, 0x57, 0xef,
0x22, 0x1c, 0xc0, 0xd5, 0xcf, 0x20, 0xdd, 0x25, 0xc4, 0x65, 0xb6, 0x77, 0xa8, 0x49, 0xa6, 0x87,
0xa8, 0x2c, 0xeb, 0x4c, 0xd2, 0x6a, 0xb0, 0xb2, 0xce, 0x24, 0x2d, 0x33, 0xbc, 0x88, 0x49, 0x46,
0x2e, 0x62, 0xfa, 0x50, 0x7c, 0x42, 0xac, 0xc1, 0x81, 0x4f, 0x4c, 0xae, 0xe8, 0x5d, 0x48, 0x8f,
0x48, 0x38, 0xf8, 0xd5, 0x58, 0x07, 0x23, 0xc4, 0xc5, 0x1c, 0xc5, 0xe2, 0xc8, 0x31, 0x97, 0x96,
0x97, 0xe3, 0xb2, 0xa5, 0xfe, 0x7d, 0x12, 0x16, 0x5b, 0x9e, 0x37, 0xd6, 0x1d, 0x23, 0xc8, 0xaf,
0x3e, 0x9d, 0xcd, 0xaf, 0xde, 0x8a, 0x9d, 0xe1, 0x8c, 0xc8, 0xec, 0xfd, 0x92, 0x3c, 0xe3, 0x92,
0xe1, 0x19, 0xa7, 0xfe, 0x7b, 0x22, 0xb8, 0x44, 0xba, 0x13, 0xd9, 0xee, 0xa5, 0xd5, 0x93, 0xd3,
0xf2, 0x4a, 0x54, 0x13, 0xd9, 0x75, 0x0e, 0x1d, 0x7a, 0xec, 0xa0, 0xd7, 0x20, 0x83, 0x9b, 0xed,
0xe6, 0x13, 0x25, 0x21, 0xdc, 0x73, 0x06, 0x84, 0x89, 0x43, 0x8e, 0x99, 0xa6, 0x6e, 0xb3, 0xdd,
0x60, 0xf9, 0x50, 0x32, 0x46, 0x53, 0x97, 0x38, 0xa6, 0xe5, 0x0c, 0xd0, 0xeb, 0x90, 0x6d, 0xf5,
0x7a, 0xbb, 0xbc, 0xcc, 0x7f, 0xf9, 0xe4, 0xb4, 0x7c, 0x63, 0x06, 0xc5, 0x2f, 0x10, 0x4d, 0x06,
0x62, 0xc5, 0x08, 0xcb, 0x94, 0x62, 0x40, 0x2c, 0xcb, 0x15, 0x20, 0xdc, 0xe9, 0x57, 0xfb, 0xac,
0xc2, 0x7f, 0x1e, 0x84, 0x29, 0xfb, 0x2b, 0xb7, 0xdb, 0x3f, 0x27, 0x41, 0xa9, 0x1a, 0x06, 0x19,
0xf9, 0x8c, 0x2f, 0xeb, 0xbf, 0x3e, 0xe4, 0x46, 0xec, 0xcb, 0x22, 0x41, 0x2e, 0xf3, 0x20, 0xf6,
0x79, 0xe6, 0x82, 0x5c, 0x05, 0x53, 0x9b, 0x54, 0xcd, 0xa1, 0xe5, 0x79, 0x16, 0x75, 0x04, 0x0d,
0x87, 0x9a, 0x4a, 0xff, 0x99, 0x80, 0x1b, 0x31, 0x08, 0x74, 0x17, 0xd2, 0x2e, 0xb5, 0x83, 0x35,
0xbc, 0x7d, 0xd9, 0xfd, 0x20, 0x13, 0xc5, 0x1c, 0x89, 0xd6, 0x00, 0xf4, 0xb1, 0x4f, 0x75, 0xde,
0x3f, 0x5f, 0xbd, 0x1c, 0x8e, 0x50, 0xd0, 0x13, 0xc8, 0x7a, 0xc4, 0x70, 0x49, 0x90, 0xf1, 0x7e,
0xf6, 0x7f, 0x1d, 0x7d, 0xa5, 0xc7, 0xd5, 0x60, 0xa9, 0xae, 0x54, 0x81, 0xac, 0xa0, 0x30, 0xb7,
0x37, 0x75, 0x5f, 0x97, 0xb7, 0xc7, 0xfc, 0x9b, 0x79, 0x93, 0x6e, 0x0f, 0x02, 0x6f, 0xd2, 0xed,
0x81, 0xfa, 0x37, 0x49, 0x80, 0xe6, 0x53, 0x9f, 0xb8, 0x8e, 0x6e, 0xd7, 0xab, 0xa8, 0x19, 0x89,
0xfe, 0x62, 0xb6, 0x6f, 0xc7, 0x5e, 0x89, 0x87, 0x12, 0x95, 0x7a, 0x35, 0x26, 0xfe, 0xdf, 0x82,
0xd4, 0xd8, 0x95, 0x2f, 0x6e, 0x22, 0x5b, 0xdd, 0xc5, 0xdb, 0x98, 0xd1, 0x50, 0x73, 0x1a, 0xb6,
0x52, 0x97, 0xbf, 0xab, 0x45, 0x3a, 0x88, 0x0d, 0x5d, 0x6c, 0xe7, 0x1b, 0xba, 0x66, 0x10, 0x79,
0x72, 0x14, 0xc5, 0xce, 0xaf, 0x57, 0xeb, 0xc4, 0xf5, 0x71, 0xd6, 0xd0, 0xd9, 0xff, 0xef, 0x14,
0xdf, 0xde, 0x05, 0x98, 0x4e, 0x0d, 0xad, 0x41, 0xa6, 0xbe, 0xd9, 0xeb, 0x6d, 0x2b, 0x73, 0x22,
0x80, 0x4f, 0x59, 0x9c, 0xac, 0xfe, 0x45, 0x12, 0x72, 0xf5, 0xaa, 0x3c, 0x56, 0xeb, 0xa0, 0xf0,
0xa8, 0xc4, 0xef, 0xdc, 0xc9, 0xd3, 0x91, 0xe5, 0x4e, 0x64, 0x60, 0xb9, 0xa2, 0xf4, 0x5c, 0x64,
0x22, 0x6c, 0xd4, 0x4d, 0x2e, 0x80, 0x30, 0x14, 0x89, 0x34, 0x82, 0x66, 0xe8, 0x41, 0x8c, 0x5f,
0xbb, 0xda, 0x58, 0xa2, 0x88, 0x98, 0xb6, 0x3d, 0x5c, 0x08, 0x94, 0xd4, 0x75, 0x0f, 0x7d, 0x04,
0x4b, 0x9e, 0x35, 0x70, 0x2c, 0x67, 0xa0, 0x05, 0xc6, 0xe3, 0x0f, 0x00, 0xb5, 0xe5, 0xf3, 0xb3,
0xf5, 0x85, 0x9e, 0x60, 0x49, 0x1b, 0x2e, 0x48, 0x64, 0x9d, 0x9b, 0x12, 0x7d, 0x08, 0x8b, 0x11,
0x51, 0x66, 0x45, 0x61, 0x76, 0xe5, 0xfc, 0x6c, 0xbd, 0x18, 0x4a, 0x3e, 0x22, 0x13, 0x5c, 0x0c,
0x05, 0x1f, 0x11, 0x7e, 0x4b, 0xb2, 0x4f, 0x5d, 0x83, 0x68, 0x2e, 0xdf, 0xd3, 0xfc, 0x04, 0x4f,
0xe3, 0x02, 0xa7, 0x89, 0x6d, 0xae, 0x3e, 0x86, 0x1b, 0x1d, 0xd7, 0x38, 0x20, 0x9e, 0x2f, 0x4c,
0x21, 0xad, 0xf8, 0x19, 0xdc, 0xf6, 0x75, 0xef, 0x50, 0x3b, 0xb0, 0x3c, 0x9f, 0xba, 0x13, 0xcd,
0x25, 0x3e, 0x71, 0x18, 0x5f, 0xe3, 0xaf, 0x86, 0xf2, 0x1a, 0xeb, 0x16, 0xc3, 0x6c, 0x09, 0x08,
0x0e, 0x10, 0xdb, 0x0c, 0xa0, 0xb6, 0xa0, 0xc8, 0x8a, 0x89, 0x06, 0xd9, 0xd7, 0xc7, 0xb6, 0xcf,
0x66, 0x0f, 0x36, 0x1d, 0x68, 0x2f, 0x7c, 0x4c, 0xe5, 0x6d, 0x3a, 0x10, 0x9f, 0xea, 0x8f, 0x40,
0x69, 0x58, 0xde, 0x48, 0xf7, 0x8d, 0x83, 0xe0, 0x7e, 0x0e, 0x35, 0x40, 0x39, 0x20, 0xba, 0xeb,
0xef, 0x11, 0xdd, 0xd7, 0x46, 0xc4, 0xb5, 0xa8, 0x79, 0xfd, 0x2a, 0x2f, 0x85, 0x22, 0x5d, 0x2e,
0xa1, 0xfe, 0x57, 0x02, 0x00, 0xeb, 0xfb, 0x41, 0x46, 0xf6, 0x7d, 0x58, 0xf6, 0x1c, 0x7d, 0xe4,
0x1d, 0x50, 0x5f, 0xb3, 0x1c, 0x9f, 0xb8, 0x47, 0xba, 0x2d, 0xaf, 0x59, 0x94, 0x80, 0xd1, 0x92,
0x74, 0xf4, 0x2e, 0xa0, 0x43, 0x42, 0x46, 0x1a, 0xb5, 0x4d, 0x2d, 0x60, 0x8a, 0x37, 0xcd, 0x34,
0x56, 0x18, 0xa7, 0x63, 0x9b, 0xbd, 0x80, 0x8e, 0x6a, 0xb0, 0xc6, 0xa6, 0x4f, 0x1c, 0xdf, 0xb5,
0x88, 0xa7, 0xed, 0x53, 0x57, 0xf3, 0x6c, 0x7a, 0xac, 0xed, 0x53, 0xdb, 0xa6, 0xc7, 0xc4, 0x0d,
0x6e, 0xb0, 0x4a, 0x36, 0x1d, 0x34, 0x05, 0x68, 0x93, 0xba, 0x3d, 0x9b, 0x1e, 0x6f, 0x06, 0x08,
0x96, 0xb6, 0x4d, 0xe7, 0xec, 0x5b, 0xc6, 0x61, 0x90, 0xb6, 0x85, 0xd4, 0xbe, 0x65, 0x1c, 0xa2,
0xd7, 0x61, 0x81, 0xd8, 0x84, 0x5f, 0x64, 0x08, 0x54, 0x86, 0xa3, 0x8a, 0x01, 0x91, 0x81, 0xd4,
0xcf, 0x41, 0x69, 0x3a, 0x86, 0x3b, 0x19, 0x45, 0xd6, 0xfc, 0x5d, 0x40, 0x2c, 0x48, 0x6a, 0x36,
0x35, 0x0e, 0xb5, 0xa1, 0xee, 0xe8, 0x03, 0x36, 0x2e, 0xf1, 0xd4, 0xa4, 0x30, 0xce, 0x36, 0x35,
0x0e, 0x77, 0x24, 0x5d, 0xfd, 0x08, 0xa0, 0x37, 0x72, 0x89, 0x6e, 0x76, 0x58, 0x36, 0xc1, 0x4c,
0xc7, 0x5b, 0x9a, 0x29, 0x9f, 0xea, 0xa8, 0x2b, 0xb7, 0xba, 0x22, 0x18, 0x8d, 0x90, 0xae, 0xfe,
0x02, 0xdc, 0xe8, 0xda, 0xba, 0xc1, 0x9f, 0xad, 0xbb, 0xe1, 0xdb, 0x09, 0x7a, 0x00, 0x59, 0x01,
0x95, 0x2b, 0x19, 0xbb, 0xdd, 0xa6, 0x7d, 0x6e, 0xcd, 0x61, 0x89, 0xaf, 0x15, 0x01, 0xa6, 0x7a,
0xd4, 0x3f, 0x4b, 0x40, 0x3e, 0xd4, 0x8f, 0xca, 0xc0, 0x4a, 0x79, 0xe6, 0xde, 0x96, 0x23, 0x6b,
0xef, 0x3c, 0x8e, 0x92, 0x50, 0x0b, 0x0a, 0xa3, 0x50, 0xfa, 0xca, 0x7c, 0x2e, 0x66, 0xd4, 0x38,
0x2a, 0x8b, 0x3e, 0x86, 0x7c, 0xf0, 0x36, 0x1a, 0x44, 0xd8, 0xab, 0x9f, 0x52, 0xa7, 0x70, 0xf5,
0x53, 0x80, 0x1f, 0x52, 0xcb, 0xe9, 0xd3, 0x43, 0xe2, 0xf0, 0xb7, 0x3e, 0x56, 0x13, 0x92, 0xc0,
0x8a, 0xb2, 0xc5, 0x0b, 0x72, 0xb1, 0x04, 0xe1, 0x93, 0x97, 0x68, 0xaa, 0x7f, 0x9d, 0x84, 0x2c,
0xa6, 0xd4, 0xaf, 0x57, 0x51, 0x19, 0xb2, 0x32, 0x4e, 0xf0, 0xf3, 0xa7, 0x96, 0x3f, 0x3f, 0x5b,
0xcf, 0x88, 0x00, 0x91, 0x31, 0x78, 0x64, 0x88, 0x44, 0xf0, 0xe4, 0x65, 0x11, 0x1c, 0xdd, 0x85,
0xa2, 0x04, 0x69, 0x07, 0xba, 0x77, 0x20, 0x0a, 0xb4, 0xda, 0xe2, 0xf9, 0xd9, 0x3a, 0x08, 0xe4,
0x96, 0xee, 0x1d, 0x60, 0x10, 0x68, 0xf6, 0x8d, 0x9a, 0x50, 0xf8, 0x92, 0x5a, 0x8e, 0xe6, 0xf3,
0x49, 0xc8, 0x2b, 0xbf, 0xd8, 0x75, 0x9c, 0x4e, 0x55, 0x3e, 0x7c, 0xc3, 0x97, 0xd3, 0xc9, 0x37,
0x61, 0xc1, 0xa5, 0xd4, 0x17, 0x61, 0xcb, 0xa2, 0x8e, 0xbc, 0x4d, 0x28, 0xc7, 0x5e, 0x32, 0x53,
0xea, 0x63, 0x89, 0xc3, 0x45, 0x37, 0xd2, 0x42, 0x77, 0x61, 0xc5, 0xd6, 0x3d, 0x5f, 0xe3, 0xf1,
0xce, 0x9c, 0x6a, 0xcb, 0xf2, 0xad, 0x86, 0x18, 0x6f, 0x93, 0xb3, 0x02, 0x09, 0xf5, 0x1f, 0x13,
0x50, 0x60, 0x93, 0xb1, 0xf6, 0x2d, 0x83, 0x25, 0x79, 0xdf, 0x3e, 0xf7, 0xb8, 0x05, 0x29, 0xc3,
0x73, 0xa5, 0x51, 0xf9, 0xe1, 0x5b, 0xef, 0x61, 0xcc, 0x68, 0xe8, 0x73, 0xc8, 0xca, 0x5b, 0x0d,
0x91, 0x76, 0xa8, 0xd7, 0xa7, 0xa3, 0xd2, 0x36, 0x52, 0x8e, 0xfb, 0xf2, 0x74, 0x74, 0xe2, 0x10,
0xc0, 0x51, 0x12, 0xba, 0x09, 0x49, 0x43, 0x98, 0x4b, 0xfe, 0xb2, 0xa2, 0xde, 0xc6, 0x49, 0xc3,
0x51, 0xff, 0x2e, 0x01, 0x0b, 0xd3, 0x0d, 0xcf, 0x3c, 0xe0, 0x36, 0xe4, 0xbd, 0xf1, 0x9e, 0x37,
0xf1, 0x7c, 0x32, 0x0c, 0xde, 0x31, 0x43, 0x02, 0x6a, 0x41, 0x5e, 0xb7, 0x07, 0xd4, 0xb5, 0xfc,
0x83, 0xa1, 0xac, 0x44, 0xe3, 0x53, 0x85, 0xa8, 0xce, 0x4a, 0x35, 0x10, 0xc1, 0x53, 0xe9, 0xe0,
0xdc, 0x17, 0x8f, 0xdd, 0xfc, 0xdc, 0x7f, 0x0d, 0x8a, 0xb6, 0x3e, 0xe4, 0xd7, 0x3c, 0xbe, 0x35,
0x14, 0xf3, 0x48, 0xe3, 0x82, 0xa4, 0xf5, 0xad, 0x21, 0x51, 0x55, 0xc8, 0x87, 0xca, 0xd0, 0x12,
0x14, 0xaa, 0xcd, 0x9e, 0x76, 0x6f, 0xe3, 0x81, 0xf6, 0xb0, 0xbe, 0xa3, 0xcc, 0xc9, 0xdc, 0xf4,
0xcf, 0x13, 0xb0, 0x20, 0xc3, 0x91, 0xcc, 0xf7, 0x5f, 0x87, 0x79, 0x57, 0xdf, 0xf7, 0x83, 0x8a,
0x24, 0x2d, 0xbc, 0x9a, 0x45, 0x78, 0x56, 0x91, 0x30, 0x56, 0x7c, 0x45, 0x12, 0x79, 0x59, 0x4f,
0x5d, 0xf9, 0xb2, 0x9e, 0xfe, 0xb9, 0xbc, 0xac, 0xab, 0xbf, 0x06, 0xb0, 0x69, 0xd9, 0xa4, 0x2f,
0xee, 0x9a, 0xe2, 0xea, 0x4b, 0x96, 0xc3, 0xc9, 0x1b, 0xc7, 0x20, 0x87, 0x6b, 0x35, 0x30, 0xa3,
0x31, 0xd6, 0xc0, 0x32, 0xe5, 0x66, 0xe4, 0xac, 0x87, 0x8c, 0x35, 0xb0, 0xcc, 0xf0, 0x2d, 0x29,
0x7d, 0xdd, 0x5b, 0xd2, 0x69, 0x02, 0x96, 0x64, 0xee, 0x1a, 0x86, 0xdf, 0xb7, 0x21, 0x2f, 0xd2,
0xd8, 0x69, 0x41, 0xc7, 0x5f, 0x93, 0x05, 0xae, 0xd5, 0xc0, 0x39, 0xc1, 0x6e, 0x99, 0x68, 0x1d,
0x0a, 0x12, 0x1a, 0xf9, 0x15, 0x0e, 0x08, 0x52, 0x9b, 0x0d, 0xff, 0x7d, 0x48, 0xef, 0x5b, 0x36,
0x91, 0x8e, 0x1e, 0x1b, 0x00, 0xa6, 0x06, 0xd8, 0x9a, 0xc3, 0x1c, 0x5d, 0xcb, 0x05, 0x97, 0x71,
0x7c, 0x7c, 0xb2, 0xec, 0x8c, 0x8e, 0x4f, 0x54, 0xa0, 0x17, 0xc6, 0x27, 0x70, 0x6c, 0x7c, 0x82,
0x2d, 0xc6, 0x27, 0xa1, 0xd1, 0xf1, 0x09, 0xd2, 0xcf, 0x65, 0x7c, 0xdb, 0x70, 0xb3, 0x66, 0xeb,
0xc6, 0xa1, 0x6d, 0x79, 0x3e, 0x31, 0xa3, 0x11, 0x63, 0x03, 0xb2, 0x33, 0x49, 0xe7, 0x55, 0x97,
0xb3, 0x12, 0xa9, 0xfe, 0x5b, 0x02, 0x8a, 0x5b, 0x44, 0xb7, 0xfd, 0x83, 0xe9, 0xd5, 0x90, 0x4f,
0x3c, 0x5f, 0x1e, 0x56, 0xfc, 0x1b, 0x7d, 0x00, 0xb9, 0x30, 0x27, 0xb9, 0xf6, 0x95, 0x2c, 0x84,
0xa2, 0xfb, 0x30, 0xcf, 0xf6, 0x18, 0x1d, 0x07, 0xc5, 0xce, 0x55, 0x0f, 0x30, 0x12, 0xc9, 0x0e,
0x19, 0x97, 0xf0, 0x24, 0x84, 0xbb, 0x52, 0x06, 0x07, 0x4d, 0xf4, 0xff, 0xa1, 0xc8, 0xdf, 0x0f,
0x82, 0x9c, 0x2b, 0x73, 0x9d, 0xce, 0x82, 0x78, 0x02, 0x14, 0xf9, 0xd6, 0xff, 0x24, 0x60, 0x65,
0x47, 0x9f, 0xec, 0x11, 0x19, 0x36, 0x88, 0x89, 0x89, 0x41, 0x5d, 0x13, 0x75, 0xa3, 0xe1, 0xe6,
0x8a, 0x17, 0xc5, 0x38, 0xe1, 0xf8, 0xa8, 0x13, 0x14, 0x60, 0xc9, 0x48, 0x01, 0xb6, 0x02, 0x19,
0x87, 0x3a, 0x06, 0x91, 0xb1, 0x48, 0x34, 0x54, 0x2b, 0x1a, 0x6a, 0x4a, 0xe1, 0x63, 0x1f, 0x7f,
0xaa, 0x6b, 0x53, 0x3f, 0xec, 0x0d, 0x7d, 0x0e, 0xa5, 0x5e, 0xb3, 0x8e, 0x9b, 0xfd, 0x5a, 0xe7,
0x47, 0x5a, 0xaf, 0xba, 0xdd, 0xab, 0x6e, 0xdc, 0xd5, 0xba, 0x9d, 0xed, 0x2f, 0xee, 0xdd, 0xbf,
0xfb, 0x81, 0x92, 0x28, 0x95, 0x4f, 0x4e, 0xcb, 0xb7, 0xdb, 0xd5, 0xfa, 0xb6, 0xd8, 0x31, 0x7b,
0xf4, 0x69, 0x4f, 0xb7, 0x3d, 0x7d, 0xe3, 0x6e, 0x97, 0xda, 0x13, 0x86, 0x61, 0x6e, 0x5d, 0x8c,
0x9e, 0x57, 0xd1, 0x63, 0x38, 0x71, 0xe9, 0x31, 0x3c, 0x3d, 0xcd, 0x93, 0x97, 0x9c, 0xe6, 0x9b,
0xb0, 0x62, 0xb8, 0xd4, 0xf3, 0x34, 0x96, 0xfd, 0x13, 0xf3, 0x42, 0x7d, 0xf1, 0xd2, 0xf9, 0xd9,
0xfa, 0x72, 0x9d, 0xf1, 0x7b, 0x9c, 0x2d, 0xd5, 0x2f, 0x1b, 0x11, 0x12, 0xef, 0x49, 0xfd, 0xfd,
0x14, 0x4b, 0xa4, 0xac, 0x23, 0xcb, 0x26, 0x03, 0xe2, 0xa1, 0xc7, 0xb0, 0x64, 0xb8, 0xc4, 0x64,
0x69, 0xbd, 0x6e, 0x6b, 0xde, 0x88, 0x18, 0xd2, 0xa9, 0xff, 0x5f, 0x6c, 0x4e, 0x13, 0x0a, 0x56,
0xea, 0xa1, 0x54, 0x6f, 0x44, 0x0c, 0xbc, 0x68, 0xcc, 0xb4, 0xd1, 0x97, 0xb0, 0xe4, 0x11, 0xdb,
0x72, 0xc6, 0x4f, 0x35, 0x83, 0x3a, 0x3e, 0x79, 0x1a, 0xbc, 0x5b, 0x5d, 0xa7, 0xb7, 0xd7, 0xdc,
0x66, 0x52, 0x75, 0x21, 0x54, 0x43, 0xe7, 0x67, 0xeb, 0x8b, 0xb3, 0x34, 0xbc, 0x28, 0x35, 0xcb,
0x76, 0xa9, 0x0d, 0x8b, 0xb3, 0xa3, 0x41, 0x2b, 0x72, 0xef, 0xf3, 0x10, 0x12, 0xec, 0x6d, 0x74,
0x1b, 0x72, 0x2e, 0x19, 0x58, 0x9e, 0xef, 0x0a, 0x33, 0x33, 0x4e, 0x48, 0x61, 0x3b, 0x5f, 0xfc,
0x14, 0xa7, 0xf4, 0x2b, 0x70, 0xa1, 0x47, 0xb6, 0x59, 0x4c, 0xcb, 0xd3, 0xf7, 0xa4, 0xca, 0x1c,
0x0e, 0x9a, 0xcc, 0x07, 0xc7, 0x5e, 0x98, 0xa8, 0xf1, 0x6f, 0x46, 0xe3, 0x19, 0x85, 0xfc, 0x61,
0x12, 0xcf, 0x19, 0x82, 0x5f, 0x38, 0xa6, 0x23, 0xbf, 0x70, 0x5c, 0x81, 0x8c, 0x4d, 0x8e, 0x88,
0x2d, 0xce, 0x72, 0x2c, 0x1a, 0xef, 0xfc, 0x2c, 0x05, 0xf9, 0xf0, 0x8d, 0x86, 0x9d, 0x04, 0xed,
0xe6, 0x93, 0xc0, 0x57, 0x43, 0x7a, 0x9b, 0x1c, 0xa3, 0xd7, 0xa6, 0x77, 0x4a, 0x9f, 0x8b, 0x47,
0xe9, 0x90, 0x1d, 0xdc, 0x27, 0xbd, 0x01, 0xb9, 0x6a, 0xaf, 0xd7, 0x7a, 0xd8, 0x6e, 0x36, 0x94,
0xaf, 0x12, 0xa5, 0x97, 0x4e, 0x4e, 0xcb, 0xcb, 0x21, 0xa8, 0xea, 0x09, 0x57, 0xe2, 0xa8, 0x7a,
0xbd, 0xd9, 0xed, 0x37, 0x1b, 0xca, 0xb3, 0xe4, 0x45, 0x14, 0xbf, 0x23, 0xe1, 0x3f, 0x2d, 0xc9,
0x77, 0x71, 0xb3, 0x5b, 0xc5, 0xac, 0xc3, 0xaf, 0x92, 0xe2, 0xaa, 0x6b, 0xda, 0xa3, 0x4b, 0x46,
0xba, 0xcb, 0xfa, 0x5c, 0x0b, 0x7e, 0x62, 0xf5, 0x2c, 0x25, 0x7e, 0x7e, 0x30, 0x7d, 0x70, 0x22,
0xba, 0x39, 0x61, 0xbd, 0xf1, 0x97, 0x3e, 0xae, 0x26, 0x75, 0xa1, 0xb7, 0x1e, 0x8b, 0x24, 0x4c,
0x8b, 0x0a, 0xf3, 0x78, 0xb7, 0xdd, 0x66, 0xa0, 0x67, 0xe9, 0x0b, 0xb3, 0xc3, 0x63, 0x87, 0xd5,
0xbf, 0xe8, 0x0e, 0xe4, 0x82, 0x87, 0x40, 0xe5, 0xab, 0xf4, 0x85, 0x01, 0xd5, 0x83, 0x57, 0x4c,
0xde, 0xe1, 0xd6, 0x6e, 0x9f, 0xff, 0x02, 0xec, 0x59, 0xe6, 0x62, 0x87, 0x07, 0x63, 0xdf, 0xa4,
0xc7, 0x0e, 0xdb, 0x81, 0xf2, 0x56, 0xed, 0xab, 0x8c, 0xb8, 0x82, 0x08, 0x31, 0xf2, 0x4a, 0xed,
0x0d, 0xc8, 0xe1, 0xe6, 0x0f, 0xc5, 0x8f, 0xc5, 0x9e, 0x65, 0x2f, 0xe8, 0xc1, 0xe4, 0x4b, 0x62,
0xc8, 0xde, 0x3a, 0xb8, 0xbb, 0x55, 0xe5, 0x26, 0xbf, 0x88, 0xea, 0xb8, 0xa3, 0x03, 0xdd, 0x21,
0xe6, 0xf4, 0x37, 0x18, 0x21, 0xeb, 0x9d, 0x5f, 0x84, 0x5c, 0x90, 0x67, 0xa2, 0x35, 0xc8, 0x3e,
0xe9, 0xe0, 0x47, 0x4d, 0xac, 0xcc, 0x09, 0x1b, 0x06, 0x9c, 0x27, 0xa2, 0x42, 0x28, 0xc3, 0xfc,
0x4e, 0xb5, 0x5d, 0x7d, 0xd8, 0xc4, 0xc1, 0x85, 0x77, 0x00, 0x90, 0xc9, 0x52, 0x49, 0x91, 0x1d,
0x84, 0x3a, 0x6b, 0xab, 0x5f, 0x7f, 0xb3, 0x36, 0xf7, 0xd3, 0x6f, 0xd6, 0xe6, 0x9e, 0x9d, 0xaf,
0x25, 0xbe, 0x3e, 0x5f, 0x4b, 0xfc, 0xe4, 0x7c, 0x2d, 0xf1, 0xaf, 0xe7, 0x6b, 0x89, 0xbd, 0x2c,
0x0f, 0xe9, 0xf7, 0xff, 0x37, 0x00, 0x00, 0xff, 0xff, 0x62, 0x46, 0x73, 0x55, 0x80, 0x2e, 0x00,
0x00,
}

View File

@ -495,8 +495,8 @@ message NetworkAttachmentConfig {
// preferred. If these addresses are not available then the
// attachment might fail.
repeated string addresses = 3;
// DriverOpts is a map of driver specific options for the network target
map<string, string> driver_opts = 4;
// DriverAttachmentOpts is a map of driver attachment options for the network target
map<string, string> driver_attachment_opts = 4;
}
// IPAMConfig specifies parameters for IP Address Management.