From 71b2136a9e3cd36ef44398b41719a105bc1ef65f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ken-H=C3=A5vard=20Lieng?= Date: Sun, 24 May 2020 07:21:47 +0200 Subject: [PATCH] Update dependencies --- assets/bindata.go | 96 +- client/package.json | 10 +- client/webpack.config.prod.js | 4 +- client/yarn.lock | 114 +-- go.mod | 21 +- go.sum | 139 +-- vendor/github.com/blevesearch/bleve/README.md | 7 +- .../github.com/blevesearch/bleve/builder.go | 94 ++ vendor/github.com/blevesearch/bleve/go.mod | 5 +- vendor/github.com/blevesearch/bleve/index.go | 14 + .../blevesearch/bleve/index/index.go | 7 + .../blevesearch/bleve/index/scorch/builder.go | 333 +++++++ .../bleve/index/scorch/introducer.go | 8 +- .../blevesearch/bleve/index/scorch/merge.go | 126 ++- .../index/scorch/mergeplan/merge_plan.go | 11 + .../bleve/index/scorch/persister.go | 187 ++-- .../{snapshot_rollback.go => rollback.go} | 0 .../blevesearch/bleve/index/scorch/scorch.go | 40 +- .../bleve/index/scorch/segment_plugin.go | 24 +- .../blevesearch/bleve/index/scorch/stats.go | 3 + .../blevesearch/bleve/index_alias_impl.go | 10 + .../blevesearch/bleve/mapping/document.go | 3 +- .../blevesearch/bleve/search/sort.go | 6 +- vendor/github.com/blevesearch/zap/v11/go.mod | 2 +- vendor/github.com/blevesearch/zap/v12/go.mod | 2 +- .../github.com/blevesearch/zap/v13/.gitignore | 12 + vendor/github.com/blevesearch/zap/v13/LICENSE | 202 ++++ .../github.com/blevesearch/zap/v13/README.md | 158 ++++ .../github.com/blevesearch/zap/v13/build.go | 156 ++++ .../github.com/blevesearch/zap/v13/chunk.go | 54 ++ .../blevesearch/zap/v13/contentcoder.go | 243 +++++ .../github.com/blevesearch/zap/v13/count.go | 61 ++ vendor/github.com/blevesearch/zap/v13/dict.go | 263 ++++++ .../blevesearch/zap/v13/docvalues.go | 312 +++++++ .../blevesearch/zap/v13/enumerator.go | 138 +++ vendor/github.com/blevesearch/zap/v13/go.mod | 12 + .../blevesearch/zap/v13/intDecoder.go | 111 +++ .../blevesearch/zap/v13/intcoder.go | 206 +++++ .../github.com/blevesearch/zap/v13/merge.go | 847 +++++++++++++++++ vendor/github.com/blevesearch/zap/v13/new.go | 860 ++++++++++++++++++ .../github.com/blevesearch/zap/v13/plugin.go | 37 + .../github.com/blevesearch/zap/v13/posting.go | 798 ++++++++++++++++ vendor/github.com/blevesearch/zap/v13/read.go | 43 + .../github.com/blevesearch/zap/v13/segment.go | 572 ++++++++++++ .../github.com/blevesearch/zap/v13/write.go | 145 +++ vendor/github.com/blevesearch/zap/v13/zap.md | 177 ++++ .../caddyserver/certmagic/README.md | 4 +- .../github.com/caddyserver/certmagic/async.go | 9 + .../caddyserver/certmagic/certmagic.go | 3 + .../caddyserver/certmagic/config.go | 2 +- .../caddyserver/certmagic/filestorage.go | 8 + .../github.com/caddyserver/certmagic/go.mod | 2 +- .../github.com/caddyserver/certmagic/go.sum | 148 ++- .../caddyserver/certmagic/maintain.go | 16 +- .../caddyserver/certmagic/ratelimiter.go | 10 + .../caddyserver/certmagic/solvers.go | 22 + .../go-acme/lego/v3/acme/api/api.go | 2 +- .../go-acme/lego/v3/acme/api/certificate.go | 2 +- .../acme/api/internal/nonces/nonce_manager.go | 2 +- .../v3/acme/api/internal/sender/useragent.go | 2 +- .../go-acme/lego/v3/acme/api/service.go | 6 +- .../github.com/go-acme/lego/v3/acme/errors.go | 2 +- .../go-acme/lego/v3/certcrypto/crypto.go | 2 +- .../go-acme/lego/v3/challenge/dns01/cname.go | 2 +- .../lego/v3/challenge/dns01/dns_challenge.go | 4 +- .../challenge/dns01/dns_challenge_manual.go | 6 +- .../lego/v3/challenge/dns01/nameserver.go | 8 +- .../v3/challenge/http01/domain_matcher.go | 2 +- .../v3/challenge/http01/http_challenge.go | 2 +- .../challenge/http01/http_challenge_server.go | 8 +- .../lego/v3/challenge/resolver/prober.go | 2 +- .../github.com/go-acme/lego/v3/lego/client.go | 6 +- .../go-acme/lego/v3/lego/client_config.go | 2 +- .../golang/protobuf/proto/deprecated.go | 33 +- .../mitchellh/mapstructure/CHANGELOG.md | 4 + .../mitchellh/mapstructure/mapstructure.go | 52 +- vendor/github.com/pelletier/go-toml/README.md | 12 +- .../pelletier/go-toml/example-crlf.toml | 1 + .../github.com/pelletier/go-toml/example.toml | 1 + vendor/github.com/pelletier/go-toml/go.mod | 2 +- vendor/github.com/pelletier/go-toml/go.sum | 2 + .../pelletier/go-toml/keysparsing.go | 3 +- vendor/github.com/pelletier/go-toml/lexer.go | 59 +- .../github.com/pelletier/go-toml/marshal.go | 442 +++++++-- vendor/github.com/pelletier/go-toml/parser.go | 24 +- vendor/github.com/pelletier/go-toml/token.go | 9 +- vendor/github.com/pelletier/go-toml/toml.go | 2 + .../pelletier/go-toml/tomltree_write.go | 60 +- vendor/github.com/spf13/viper/.editorconfig | 15 + vendor/github.com/spf13/viper/.gitignore | 17 +- vendor/github.com/spf13/viper/.golangci.yml | 5 +- vendor/github.com/spf13/viper/.travis.yml | 32 - vendor/github.com/spf13/viper/README.md | 31 +- vendor/github.com/spf13/viper/go.mod | 13 +- vendor/github.com/spf13/viper/go.sum | 222 ++++- vendor/github.com/spf13/viper/viper.go | 58 +- .../golang.org/x/sys/unix/syscall_darwin.go | 1 + .../x/sys/unix/syscall_darwin_386.go | 11 - .../x/sys/unix/syscall_darwin_amd64.go | 11 - .../x/sys/unix/syscall_darwin_arm.go | 11 - .../x/sys/unix/syscall_darwin_arm64.go | 11 - .../x/sys/unix/zsyscall_darwin_386.1_11.go | 22 +- .../x/sys/unix/zsyscall_darwin_386.go | 32 +- .../x/sys/unix/zsyscall_darwin_amd64.1_11.go | 22 +- .../x/sys/unix/zsyscall_darwin_amd64.go | 32 +- .../x/sys/unix/zsyscall_darwin_arm.1_11.go | 22 +- .../x/sys/unix/zsyscall_darwin_arm.go | 32 +- .../x/sys/unix/zsyscall_darwin_arm64.1_11.go | 22 +- .../x/sys/unix/zsyscall_darwin_arm64.go | 32 +- .../x/sys/unix/zsysctl_openbsd_386.go | 3 +- .../x/sys/unix/zsysctl_openbsd_amd64.go | 1 + .../x/sys/unix/zsysctl_openbsd_arm.go | 1 + .../golang.org/x/sys/windows/dll_windows.go | 29 + .../golang.org/x/sys/windows/env_windows.go | 11 +- .../x/sys/windows/security_windows.go | 20 +- .../x/sys/windows/syscall_windows.go | 37 +- .../protobuf/encoding/prototext/decode.go | 7 +- .../protobuf/encoding/prototext/encode.go | 16 +- .../protobuf/internal/filedesc/desc.go | 2 +- .../protobuf/internal/impl/codec_message.go | 15 +- .../protobuf/internal/impl/message_reflect.go | 15 +- .../internal/impl/message_reflect_field.go | 29 +- .../internal/impl/message_reflect_gen.go | 4 +- .../protobuf/internal/impl/pointer_unsafe.go | 6 +- .../protobuf/internal/version/version.go | 2 +- .../google.golang.org/protobuf/proto/merge.go | 7 +- .../google.golang.org/protobuf/proto/reset.go | 8 +- .../reflect/protoreflect/value_union.go | 78 +- vendor/gopkg.in/ini.v1/.travis.yml | 21 - vendor/gopkg.in/ini.v1/README.md | 6 +- vendor/gopkg.in/ini.v1/codecov.yml | 9 + vendor/gopkg.in/ini.v1/data_source.go | 4 +- vendor/gopkg.in/ini.v1/ini.go | 6 +- vendor/gopkg.in/ini.v1/key.go | 120 ++- vendor/gopkg.in/ini.v1/parser.go | 19 +- vendor/gopkg.in/ini.v1/struct.go | 5 +- vendor/gopkg.in/yaml.v2/apic.go | 1 + vendor/modules.txt | 33 +- 138 files changed, 7864 insertions(+), 968 deletions(-) create mode 100644 vendor/github.com/blevesearch/bleve/builder.go create mode 100644 vendor/github.com/blevesearch/bleve/index/scorch/builder.go rename vendor/github.com/blevesearch/bleve/index/scorch/{snapshot_rollback.go => rollback.go} (100%) create mode 100644 vendor/github.com/blevesearch/zap/v13/.gitignore create mode 100644 vendor/github.com/blevesearch/zap/v13/LICENSE create mode 100644 vendor/github.com/blevesearch/zap/v13/README.md create mode 100644 vendor/github.com/blevesearch/zap/v13/build.go create mode 100644 vendor/github.com/blevesearch/zap/v13/chunk.go create mode 100644 vendor/github.com/blevesearch/zap/v13/contentcoder.go create mode 100644 vendor/github.com/blevesearch/zap/v13/count.go create mode 100644 vendor/github.com/blevesearch/zap/v13/dict.go create mode 100644 vendor/github.com/blevesearch/zap/v13/docvalues.go create mode 100644 vendor/github.com/blevesearch/zap/v13/enumerator.go create mode 100644 vendor/github.com/blevesearch/zap/v13/go.mod create mode 100644 vendor/github.com/blevesearch/zap/v13/intDecoder.go create mode 100644 vendor/github.com/blevesearch/zap/v13/intcoder.go create mode 100644 vendor/github.com/blevesearch/zap/v13/merge.go create mode 100644 vendor/github.com/blevesearch/zap/v13/new.go create mode 100644 vendor/github.com/blevesearch/zap/v13/plugin.go create mode 100644 vendor/github.com/blevesearch/zap/v13/posting.go create mode 100644 vendor/github.com/blevesearch/zap/v13/read.go create mode 100644 vendor/github.com/blevesearch/zap/v13/segment.go create mode 100644 vendor/github.com/blevesearch/zap/v13/write.go create mode 100644 vendor/github.com/blevesearch/zap/v13/zap.md create mode 100644 vendor/github.com/spf13/viper/.editorconfig delete mode 100644 vendor/github.com/spf13/viper/.travis.yml delete mode 100644 vendor/gopkg.in/ini.v1/.travis.yml create mode 100644 vendor/gopkg.in/ini.v1/codecov.yml diff --git a/assets/bindata.go b/assets/bindata.go index a20b4c47..6881b9dc 100644 --- a/assets/bindata.go +++ b/assets/bindata.go @@ -27,8 +27,8 @@ // dist/sw.js.br // dist/vendors~connect.094632f04f7ec2bce0fe.js.br // dist/vendors~connect.1512be5821b96a02b759.js.LICENSE.txt -// dist/vendors~main.051a0058d7481ca04f8d.js.LICENSE.txt -// dist/vendors~main.ae0f2cccfec3e701a045.js.br +// dist/vendors~main.038942b3105c7128ab91.js.LICENSE.txt +// dist/vendors~main.b247804e9d197faee69a.js.br // DO NOT EDIT! package assets @@ -101,7 +101,7 @@ func _101f1cf141f000951d0e51JsBr() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "10.1f1cf141f000951d0e51.js.br", size: 1598, mode: os.FileMode(438), modTime: time.Unix(1590213362, 0)} + info := bindataFileInfo{name: "10.1f1cf141f000951d0e51.js.br", size: 1598, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -121,7 +121,7 @@ func _637a64ace423ca2dd422bJsBr() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "6.37a64ace423ca2dd422b.js.br", size: 5584, mode: os.FileMode(438), modTime: time.Unix(1590213362, 0)} + info := bindataFileInfo{name: "6.37a64ace423ca2dd422b.js.br", size: 5584, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -141,7 +141,7 @@ func _698c5966b12a74e2dc4c0JsLicenseTxt() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "6.98c5966b12a74e2dc4c0.js.LICENSE.txt", size: 363, mode: os.FileMode(438), modTime: time.Unix(1590213362, 0)} + info := bindataFileInfo{name: "6.98c5966b12a74e2dc4c0.js.LICENSE.txt", size: 363, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -161,7 +161,7 @@ func _72adf64c6ffda826d4367JsBr() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "7.2adf64c6ffda826d4367.js.br", size: 7204, mode: os.FileMode(438), modTime: time.Unix(1590213362, 0)} + info := bindataFileInfo{name: "7.2adf64c6ffda826d4367.js.br", size: 7204, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -181,7 +181,7 @@ func _8069f203df79aa65d556dJsBr() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "8.069f203df79aa65d556d.js.br", size: 1598, mode: os.FileMode(438), modTime: time.Unix(1590213362, 0)} + info := bindataFileInfo{name: "8.069f203df79aa65d556d.js.br", size: 1598, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -201,7 +201,7 @@ func _973a2e4aa4fe7a79e8825JsBr() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "9.73a2e4aa4fe7a79e8825.js.br", size: 4396, mode: os.FileMode(438), modTime: time.Unix(1590213362, 0)} + info := bindataFileInfo{name: "9.73a2e4aa4fe7a79e8825.js.br", size: 4396, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -221,7 +221,7 @@ func bootC1352f46bb46583163e5JsBr() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "boot.c1352f46bb46583163e5.js.br", size: 151, mode: os.FileMode(438), modTime: time.Unix(1590213363, 0)} + info := bindataFileInfo{name: "boot.c1352f46bb46583163e5.js.br", size: 151, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -241,7 +241,7 @@ func configDefaultToml() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "config.default.toml", size: 1986, mode: os.FileMode(438), modTime: time.Unix(1590213351, 0)} + info := bindataFileInfo{name: "config.default.toml", size: 1986, mode: os.FileMode(438), modTime: time.Unix(1590297286, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -261,7 +261,7 @@ func connect242fda196da048d6a712JsBr() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "connect.242fda196da048d6a712.js.br", size: 2671, mode: os.FileMode(438), modTime: time.Unix(1590213363, 0)} + info := bindataFileInfo{name: "connect.242fda196da048d6a712.js.br", size: 2671, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -281,7 +281,7 @@ func faviconIco() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "favicon.ico", size: 5430, mode: os.FileMode(438), modTime: time.Unix(1590213362, 0)} + info := bindataFileInfo{name: "favicon.ico", size: 5430, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -301,7 +301,7 @@ func fontMontserratBoldWoff() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "font/Montserrat-Bold.woff", size: 14076, mode: os.FileMode(438), modTime: time.Unix(1590213362, 0)} + info := bindataFileInfo{name: "font/Montserrat-Bold.woff", size: 14076, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -321,7 +321,7 @@ func fontMontserratBoldWoff2() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "font/Montserrat-Bold.woff2", size: 9636, mode: os.FileMode(438), modTime: time.Unix(1590213362, 0)} + info := bindataFileInfo{name: "font/Montserrat-Bold.woff2", size: 9636, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -341,7 +341,7 @@ func fontMontserratRegularWoff() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "font/Montserrat-Regular.woff", size: 14100, mode: os.FileMode(438), modTime: time.Unix(1590213362, 0)} + info := bindataFileInfo{name: "font/Montserrat-Regular.woff", size: 14100, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -361,7 +361,7 @@ func fontMontserratRegularWoff2() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "font/Montserrat-Regular.woff2", size: 9688, mode: os.FileMode(438), modTime: time.Unix(1590213362, 0)} + info := bindataFileInfo{name: "font/Montserrat-Regular.woff2", size: 9688, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -381,7 +381,7 @@ func fontRobotomonoBoldWoff() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "font/RobotoMono-Bold.woff", size: 20304, mode: os.FileMode(438), modTime: time.Unix(1590213362, 0)} + info := bindataFileInfo{name: "font/RobotoMono-Bold.woff", size: 20304, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -401,7 +401,7 @@ func fontRobotomonoBoldWoff2() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "font/RobotoMono-Bold.woff2", size: 16028, mode: os.FileMode(438), modTime: time.Unix(1590213362, 0)} + info := bindataFileInfo{name: "font/RobotoMono-Bold.woff2", size: 16028, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -421,7 +421,7 @@ func fontRobotomonoRegularWoff() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "font/RobotoMono-Regular.woff", size: 20316, mode: os.FileMode(438), modTime: time.Unix(1590213362, 0)} + info := bindataFileInfo{name: "font/RobotoMono-Regular.woff", size: 20316, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -441,7 +441,7 @@ func fontRobotomonoRegularWoff2() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "font/RobotoMono-Regular.woff2", size: 16108, mode: os.FileMode(438), modTime: time.Unix(1590213362, 0)} + info := bindataFileInfo{name: "font/RobotoMono-Regular.woff2", size: 16108, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -461,7 +461,7 @@ func icon_192Png() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "icon_192.png", size: 13364, mode: os.FileMode(438), modTime: time.Unix(1590213362, 0)} + info := bindataFileInfo{name: "icon_192.png", size: 13364, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -481,7 +481,7 @@ func icon_512Png() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "icon_512.png", size: 52660, mode: os.FileMode(438), modTime: time.Unix(1590213362, 0)} + info := bindataFileInfo{name: "icon_512.png", size: 52660, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -501,7 +501,7 @@ func main01cf16a1c3ab925852c9CssBr() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "main.01cf16a1c3ab925852c9.css.br", size: 2821, mode: os.FileMode(438), modTime: time.Unix(1590213363, 0)} + info := bindataFileInfo{name: "main.01cf16a1c3ab925852c9.css.br", size: 2821, mode: os.FileMode(438), modTime: time.Unix(1590297297, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -521,7 +521,7 @@ func main622813ea0665bff5ea3dJsBr() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "main.622813ea0665bff5ea3d.js.br", size: 13751, mode: os.FileMode(438), modTime: time.Unix(1590213363, 0)} + info := bindataFileInfo{name: "main.622813ea0665bff5ea3d.js.br", size: 13751, mode: os.FileMode(438), modTime: time.Unix(1590297298, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -541,7 +541,7 @@ func manifestJsonBr() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "manifest.json.br", size: 168, mode: os.FileMode(438), modTime: time.Unix(1590213364, 0)} + info := bindataFileInfo{name: "manifest.json.br", size: 168, mode: os.FileMode(438), modTime: time.Unix(1590297298, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -561,12 +561,12 @@ func runtimeDf70809517d779a41939JsBr() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "runtime.df70809517d779a41939.js.br", size: 1112, mode: os.FileMode(438), modTime: time.Unix(1590213364, 0)} + info := bindataFileInfo{name: "runtime.df70809517d779a41939.js.br", size: 1112, mode: os.FileMode(438), modTime: time.Unix(1590297298, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _swJsBr = "\x1b\xb4\x3e\x51\x94\x8b\xd6\x5f\x15\x51\x35\xda\x35\xa0\x45\x82\x6d\x4a\x7d\x47\x7b\x11\x8d\x4a\xd7\x46\x32\x92\x4a\x4e\x7a\xe7\x48\x23\x22\x22\xe2\xf3\xfd\x73\xd3\x75\x28\xad\x9b\xef\xab\xfa\xf5\x1b\xb1\x4b\xea\xb4\xd3\x35\x86\xb2\x18\xfa\x64\x31\x61\x0f\x36\x80\x4c\x3e\x6f\x2b\xcd\xd7\x97\x30\x19\x46\x3a\x03\x69\x3f\x39\xa4\xd4\xb6\xc5\xc8\xce\x26\x6c\x19\x90\xed\x5b\x17\x15\xa6\x53\x9a\x8a\x2c\x6a\xcf\x77\x1a\x85\x9d\x7a\x1f\xe8\x78\xa7\x9a\xa9\x65\xd5\xe6\xc5\x10\xa6\xe7\x43\xb9\x0b\x5a\x80\x8b\x26\xb5\x67\xc1\xd0\xe3\xf7\x83\x83\xe4\x4b\x4e\x27\xbe\x1a\x46\x4a\xf5\x17\xe8\x8b\x11\x2f\x74\x86\x9a\xda\x5c\xfe\xcf\x66\xea\x72\x6f\x0f\xdb\x00\x16\x5d\x9a\xee\x7c\x01\x2a\x9b\xe8\xc3\xcc\xcb\x2c\x3d\x8b\xee\x59\x3a\x30\x68\x0d\xd2\x99\xe8\xce\x30\x3b\xbb\xb6\x77\x75\x32\x1d\x18\x50\xd6\x85\xb9\x24\xe8\xf2\x52\xb4\x69\xea\x38\x9d\x5b\x96\x03\x5d\x9f\x45\x9c\x7a\x1a\xd1\x9b\x18\x64\xb1\x65\xb7\x81\xcd\x89\x38\xe9\x5d\xd2\x4c\x6e\x19\x2f\x13\xbf\x29\xb8\x08\x40\xc6\x16\x57\x5d\xb5\x6c\xdf\xcd\x30\x9c\xf2\x13\xf8\xc6\x46\xa0\x12\x5e\xbc\x24\xa9\x5a\x66\xcb\xab\x16\x7f\x97\xfe\xb9\x1a\x4b\x6d\x12\x26\x58\x47\x75\x65\x6e\x53\xc8\x08\x6d\x28\x83\xe6\x3f\xcb\x2a\x2f\xaf\x20\x96\x6d\x49\x4d\xbc\x7c\xeb\xf3\x9c\xbd\xc0\xff\xdd\xb7\x92\x9f\x14\x05\xee\x74\x3a\x0d\x27\xe6\x78\x71\x0c\xab\x63\xc8\xf5\x24\x11\xf3\xa1\x30\x69\xb9\xe2\x66\xe4\x01\x31\xd7\x47\x4d\xcc\xa9\x0b\x99\x61\x32\xb3\x9a\x9f\x0a\x2c\x5e\x3a\x57\xfb\x48\xb7\xe0\x54\x34\xf8\xbf\xef\x85\xe4\x1d\x7d\x6a\x36\x06\xb5\xc6\xa4\x2f\xd8\x8a\xf8\x22\x85\x1f\xc5\x88\x8b\x32\x58\xc0\xa6\x50\x55\xc3\x3e\x29\x65\x05\xc0\x09\xe4\xac\xa0\x00\x09\x33\x6d\x5a\xa4\x80\x50\x23\x36\x83\x77\x8a\x50\x69\x05\x9a\x85\x7d\xc3\x15\x66\x2c\x6b\xb5\xab\x82\x82\x2f\xa9\xac\x4d\x66\x44\x7a\x96\x4c\x00\x12\x2f\x29\x50\x08\xa8\x32\xde\x11\x33\x87\x81\x6f\x99\x10\x48\x23\xd6\xa9\x25\x0d\x18\x5c\x07\x8a\x44\x51\x43\x74\x19\x60\xfb\xaf\xd3\xb3\x3c\x2b\x60\xce\x18\xfc\x21\x9b\x9c\x5b\x49\x46\xaa\xf8\xe8\xd3\x28\x82\xfa\x67\x54\x21\x82\xca\xf0\x64\x0d\x66\x8e\x36\xb5\x38\xb8\xfb\x57\x2b\xd9\x4b\xf8\xe7\x3b\xd7\x04\x92\x8b\x01\xb6\xaf\x71\x86\xe6\x82\x0e\x7a\x95\xc3\xc7\x14\x21\x65\x34\x49\xb1\xdc\xdd\xff\x9d\xca\xdb\xfd\x80\x30\x94\x04\xcc\x04\xe5\x5c\xff\xa4\x70\x4d\x2c\x83\x59\x74\x1d\x8e\x9e\xd1\x15\x99\xb3\xb2\x67\x85\xb8\x69\x2b\xd1\xcd\x77\xf3\x51\x5d\xe4\x7f\x06\x59\xfe\x7d\xed\x78\x49\x69\xc9\x4c\x37\x13\x93\x2f\xc6\x82\x8a\x9d\xd3\x61\xd9\xe5\x5c\x99\x05\x36\x16\x3b\x5e\x35\xd7\xba\xfa\x7f\x6c\x8a\xc5\xab\x59\x1d\xa5\x47\x60\xbc\x3f\xc0\xd1\x18\x13\xb4\xb4\x0c\x45\x94\xa9\x05\xaf\x7a\x2f\x50\x76\x2a\x5d\x14\x05\x2a\x79\xee\xcd\xfd\xdc\x9d\xdb\x62\xc8\x37\x2a\x8a\x68\x4d\x2f\x6e\x4d\x96\xde\x56\x76\xeb\x79\xde\x00\xe9\xe6\x8a\x79\x3a\x6c\x82\xd3\x25\x83\xa3\x99\x2d\x8e\x99\xae\xa8\xca\x0b\x60\x0b\x0a\xa0\x4d\x45\x13\xef\xe2\x1f\xeb\xd1\x5a\x70\x1b\xc6\x03\x45\xec\x7b\xf5\xbd\x0b\xcc\x63\x51\xd5\x26\xca\xc3\x33\x6a\x16\x16\x96\x34\x71\x3f\xc1\x14\x2e\x4d\xb9\xd7\xbd\xd0\x3c\xf9\x84\xcf\xba\xa6\x1e\x87\x83\x36\xf2\xc2\x85\x86\xa6\x1d\xd7\xc9\xe2\x34\x58\x44\xd9\x67\xee\x2e\x70\xfc\xd1\x2d\x7d\x6b\xd0\x67\x26\x41\x8f\x36\x31\x6b\x9b\xb2\x60\xcc\x52\xdd\xdf\x3f\x2a\x1e\x39\x1b\x94\x22\x81\x5d\x85\xd3\x51\xb2\x5d\x70\x82\xcc\x25\xec\xde\x57\xef\x22\x26\xf0\x82\x56\x76\x81\xc7\x74\x2f\xcd\x3d\x48\x79\x95\xa3\x0c\x72\x09\xaa\x91\xaa\x10\x78\x30\x4d\x25\xe7\x77\x8c\xa8\x4e\xf5\x9b\x26\xb3\xa0\x7c\xa3\x04\x19\x6a\xa9\xbc\xe4\x79\x92\x6c\xfe\x01\x9f\xf7\x8e\x3c\x1a\x23\xf4\x28\xa8\x12\xa6\xc3\xf4\x33\x79\x52\x86\x9d\xa2\x9f\x3f\x8f\x64\x5e\x12\xc4\x71\x61\xad\x5b\x00\xb3\x4e\x0d\xaa\xa9\x01\x35\xb4\x80\x4a\x5b\xf6\x8a\xd2\xa0\x7c\x2c\xf5\x0f\x9a\x84\x75\xc1\xe1\x4b\x05\x28\xb5\xe0\x3c\x1c\xa7\x02\xe9\x10\xb0\x5f\x3a\x4a\xd6\xdc\x11\xd4\x13\xc8\x41\x94\xe8\x43\x95\x73\x76\x12\x02\x8c\xeb\x27\xc7\xa8\x25\xe8\x95\x61\x7b\x54\xb8\x85\x50\xd7\xb8\xf1\x13\x1a\xd8\x19\x6d\x8f\x34\x20\xcb\xce\x53\x8a\xd7\x27\x40\xaf\x1f\xe7\x19\xeb\x48\xe6\x63\xea\xf0\x00\xdf\x2b\x72\xe5\x4c\xec\x2f\xeb\x73\x1d\xbf\x56\xd6\x51\x92\x08\x11\x86\x12\x47\x29\xb5\x28\x8c\x86\xb1\x6c\xa5\xa7\x31\xf3\xb5\x0c\x8f\x75\x69\x18\xee\x89\x86\x8a\xd3\x09\xe1\xb3\x64\xa4\x8e\x1c\xd1\xe5\x83\x3b\x70\x5b\xa7\x19\x0e\x2f\x79\xdc\x2b\x8e\xf0\x14\x75\x75\x77\x39\x8a\x73\xcb\x42\x67\x8b\x83\x07\x8c\xf8\xd7\x1f\xec\x12\xb5\x33\xe5\xdc\xee\x92\xcd\x04\x3b\x8e\xce\xbd\xdc\x73\x67\xa0\x03\xe7\xe0\xff\xa4\xab\x0a\xef\xf4\x13\xc0\xb7\x3e\xfc\x91\xc5\x23\x79\x99\x3b\x23\x83\x46\xd8\x27\xf7\x66\x52\xe7\x0e\xed\x69\x0e\xe2\x25\x31\xd4\xef\x83\xf4\x8d\xff\x48\x90\x3e\xd0\x29\x6a\x12\x26\xb1\xe3\xa0\x21\xc9\xe9\x16\x24\x81\x37\xac\x98\xcb\xe3\xc5\x30\x58\xde\x2c\x13\x02\xd6\x9a\x28\x6b\x58\x31\x0e\xba\x01\xdd\xc1\x60\x73\x83\x5b\x2c\x58\xe0\xd7\x65\x75\xaa\xb4\x20\xbd\xbd\x95\xf4\x96\xae\x6b\xe5\xee\xad\x46\x05\x86\x26\xc8\xaf\xee\x12\x74\x3e\x23\xea\xef\x08\x7f\x88\xca\xbd\x4c\x4f\x7f\x74\x7f\xa8\x30\x6e\x4b\xab\x0b\x21\xcc\x9f\xa8\x15\x84\x8f\xf1\x47\x5d\xfc\xb7\x05\x9c\xeb\x44\x4b\xba\x43\x11\xd9\x03\x86\x35\xb1\x61\x04\x1c\x55\xe1\x47\xeb\x49\x99\x0f\x5e\xe4\x74\x14\xc8\x1c\x6c\xa5\x77\xb4\xf3\xa5\x70\x35\x96\x99\xcd\xe3\xcb\x15\x73\xe4\x68\xb3\x1a\x5a\xaa\x6f\xa3\x54\x34\x28\x01\x39\x40\x9f\x52\xa6\x11\xd4\x46\x51\x90\xf6\x8b\x10\x9d\xa3\xe3\x91\xd3\xd8\xda\x7f\x32\x87\x66\x43\xd9\x7f\x8f\x15\xec\x36\xa3\xfc\x10\x63\x35\xe7\x76\xb9\x24\x33\xb4\xd6\xb1\x5e\xf2\x06\xf3\x9b\x5d\x18\x5c\xf4\xd7\x2d\x71\xa6\x0e\x19\x7d\xff\x95\x42\x52\xe6\xee\x0c\x75\x5e\x66\x90\x59\xff\x15\x4e\xf6\x77\x6d\xd5\x3f\x04\x57\x90\x96\x44\x4c\xb3\x57\xe5\x2c\x05\x5f\x66\x2a\xdd\x0a\xb4\xce\x54\xc7\xcc\x60\xab\xb3\xed\x94\xdd\xe1\x61\x12\x7f\x51\x07\x3f\x77\x51\xb3\x07\xc7\x50\x80\xe0\x9e\x31\x8e\x1c\x82\x5e\xb9\xdf\xac\x6d\x86\xa9\x99\xaf\x40\xb4\xf9\xe7\xe3\x0f\x9a\x2d\x1d\x19\x10\x3d\xfd\x80\x8d\x61\xa5\x62\x8f\xc8\x79\xa8\x03\x24\x78\x03\xc2\xa7\x17\xae\x90\xc7\x76\xc3\xa3\xa9\xa8\xcd\x3a\x80\x63\x50\x8f\x4a\x8e\xa2\x22\xa8\x99\xb0\xc3\xf7\x5e\x75\xf2\xd0\x35\x47\x0a\xfb\x91\x35\x8e\x8f\x1e\xb0\xb7\xc4\xa2\xe9\x3e\xc4\x66\x19\x08\x72\x02\x6a\xaa\x61\xb9\xa4\x23\xd2\x12\xaf\x0a\x70\x5f\x35\xd0\xf2\xaa\xed\xdb\xfb\xe6\x61\xcc\x02\x59\xa8\xff\x29\x11\x5b\xae\x81\x51\x35\x63\x1b\x4f\xaf\xf9\x0d\x56\xad\x05\xc0\x80\x70\x7f\x16\x61\x94\xb6\x4a\x54\x39\xb9\xe4\x50\x6d\xc7\xda\x7a\xd2\x3c\x9e\x13\xa8\x97\x01\xef\x1b\x91\x08\x5f\xb9\x76\xff\x98\xe6\x1f\x32\xef\xf2\x92\x67\xbf\xdf\x05\x12\x63\x89\x39\x8b\x95\xf7\x53\xda\xaa\x72\xb7\x3b\xa7\xc0\x66\x32\xe6\xc6\xf5\xec\xee\x72\xfe\x91\x15\x5e\x73\x08\x0c\x45\x15\xac\x47\x31\x37\xe5\x4c\xcb\x56\x47\x72\x69\xa6\x9a\x64\x89\xcf\x18\x78\x0c\x78\x40\x51\xd8\xd9\x6c\x20\xfb\x69\xf2\xfb\xda\xf3\x7f\x9f\xeb\x33\x95\x85\x2c\x94\x4b\x54\xa6\x4b\x51\xd4\xa2\x58\x15\x53\xb8\x41\x72\xae\x6b\x79\x05\x33\x83\x92\x1c\x87\x03\x9d\x7b\x1a\xd0\x63\xa4\x43\x03\xb7\x57\xfe\x66\xb6\x91\xc9\x78\xd3\x69\x16\xc1\x33\x28\x39\x13\x60\x91\x0f\x4b\x42\xb7\x3d\x38\x6a\xe6\x68\xfe\xab\x07\x2a\x6c\x8e\x57\x2b\xac\x64\xa0\x13\xd4\xc2\x01\xe7\x3c\x0c\x1d\xd4\x30\x70\x8c\x0f\x4d\xc9\x30\x54\x9c\x84\x93\xcd\xd4\x82\x59\xd7\x1f\xac\xdb\xd0\xc5\x88\x8a\xbd\x42\x02\xc6\x86\xc5\x81\x09\xa5\x37\x29\x21\xdd\x49\x83\xcc\x46\x25\x71\x8e\x51\x7d\x43\xa1\x4f\x9a\xf9\xa2\x77\x40\x93\x1c\x67\x61\xc3\x26\x4d\xec\x42\x04\xb5\x47\x44\xf8\x07\xd7\x4f\xdf\x47\x47\x86\x10\x17\x27\x01\x80\x3b\xb1\xbd\x9a\x98\x13\xba\x58\xc7\x56\x28\x64\x79\x07\xb2\x25\x98\x59\x12\xc6\xf2\x1d\xa2\x64\x83\xf1\x0c\xf8\x28\x21\xc0\x48\x71\x7c\x17\x11\xf3\x00\x10\x8b\xab\x54\xf2\x93\x06\x6c\x3a\xaf\xcf\xd2\x00\xb4\xa1\xfd\xab\xbb\x1d\xd5\x78\x61\xb8\xef\xb7\x9e\x26\x4e\x54\xb9\x69\x3a\xf5\x61\xd3\x45\x33\xf0\x27\xfc\x9f\x24\x1a\x5f\x80\xd5\xf9\x37\xc9\x57\x45\x8f\xcc\x8b\x5e\x60\x6e\x7f\x5f\xf3\x18\x0b\xd3\xb1\x88\xc7\x7e\x70\x93\x69\xbf\x60\x4f\x1a\xed\x3a\xed\xfe\xf3\x29\xf7\xe3\xf2\x14\x0c\xe0\x88\x70\x27\x38\x01\x0c\x72\xe5\x0d\x7a\xaf\xa8\xed\xed\xa3\x07\x6f\x51\xa7\xb5\xe8\x6c\x03\xb6\xaf\xd3\x4f\x8c\xb2\xf0\xca\xc9\xf5\xa4\x83\x46\x52\xf7\x69\x3a\xdf\xfa\x7f\x96\x79\xff\xeb\xe4\xa1\xfb\x27\x09\x1d\x45\x30\x72\xe6\xfe\x51\x0f\x96\x87\x85\x32\x39\x4d\x3b\x67\xa6\x5e\x55\x81\x11\xdc\x29\x03\xcb\x29\x18\x2b\xbc\x84\x00\x05\x90\x5a\x60\x4c\x84\x7e\xa4\x16\xa7\x92\x3d\x6d\x55\xe2\x4e\x08\x7c\xe5\x51\x17\xcf\x7b\x0f\x32\x9c\xe6\x89\x29\xe6\x19\x6b\xd0\x7d\x2c\x8d\x02\x29\xf7\x6d\x19\x15\xf0\x86\xc0\xc2\xb3\xe5\xc2\x58\xce\xe9\x99\x68\xd2\xaa\xca\xf7\x1b\xe8\xae\xf9\x48\x96\x73\x96\x88\x5b\xeb\xd9\x99\xeb\xcf\xa2\x03\x41\x48\x76\x9c\xbc\x7a\x2e\xaf\x72\x01\xe0\x82\x1b\xa1\x71\x99\xc5\x19\x3c\x00\x74\xa2\x08\xb2\x54\x02\x02\xdb\x86\x0e\x7c\x5b\x53\x85\x4d\x3d\x2a\x76\x0d\xd5\xb0\x7b\x5a\xec\x90\x62\x99\xed\x00\xd4\x45\xa4\x3e\x4c\x5c\x39\x6a\x40\x2c\x6f\x02\x04\x70\x02\x84\x16\xbe\xfc\x5c\xc8\x44\xd4\x7a\x0b\x82\x77\x04\x16\xd2\xc9\xc7\xcf\xb8\xd3\x4c\x18\xb1\xc6\x05\x4d\x9a\x87\x9a\x49\xf2\x6a\xb5\x20\x32\x82\x91\x4b\x45\xf0\x9e\xd9\xaf\x4c\x11\x35\x1a\x1c\xbc\x14\x64\x80\xf0\xdf\x61\xb4\x9b\x28\x6d\x51\x47\x01\x92\x3d\x45\x04\xd7\x68\xaa\xe3\x1a\xf9\x42\x64\x73\xdf\x5c\x1e\x07\xe6\x9a\x22\xf2\xdb\xe8\x55\x64\xbe\xf3\x32\xb8\xa6\x2d\x2d\xe7\xf7\x3f\x7f\xa6\xca\x87\x47\x18\xaa\x31\x74\x88\x8e\x23\xf5\x40\xda\x24\x1d\xfb\xda\x50\xa5\x90\x82\x2a\x04\xbd\xd1\x16\x88\xe1\x13\x8b\x02\xe5\xa3\xc9\xf2\x9e\x09\x76\x41\x0e\x6a\x62\x1c\x5b\x50\x83\xb9\xc5\xff\xf0\xef\x1d\x06\x47\x37\x58\x7a\x9f\x64\x6e\x4b\xfb\x63\x6c\x81\x42\xd1\x92\x0f\x12\x2a\x3c\xc7\x54\x7f\xa8\xff\x56\xb5\xb2\xad\xff\x48\x3a\xe8\xef\xfa\x4f\xc6\xc7\x58\x99\xfb\x7f\x67\xca\xdf\xe8\x3d\xc3\x43\x08\x0f\x1c\x06\xe6\x68\x86\xae\x73\x2e\x6b\xcd\x3d\x16\xd7\x83\x86\x21\x8e\x94\x1b\x5d\x7a\xdc\x3d\xfe\x4d\x78\xb4\x94\x4b\xc3\x68\xba\x47\xc7\x17\xf7\xae\x9b\x71\xaf\x9a\x9b\xe5\x1f\x23\x40\x05\xf2\x75\xca\x76\xcd\xe9\x22\x07\xee\xfc\xe3\x91\x6c\x3a\x9e\x20\xa4\x35\x74\xf8\x8f\x22\xe4\x41\xc3\x59\x01\x20\x7d\x5a\xc3\x30\xf4\x83\xca\x79\x6a\xb6\x28\x4a\x15\x25\x65\x23\xcd\x78\xb3\x03\xb0\xe0\x20\x81\x50\x55\xf9\xfb\xea\x28\x5e\x96\x61\x70\x5b\x83\x65\x98\xf5\x0b\x75\xde\x46\xf8\x26\x0c\xb6\xec\x1c\xae\x08\xf9\x89\x3e\xe6\x3c\x84\xe5\xd3\xf8\xb0\x5c\x6a\xc5\x05\x3e\x4e\x53\x0a\xb8\x32\xbd\xf1\x4e\x80\x93\xb3\xfb\xa2\xe7\x83\xf0\x26\x77\xd2\xdd\x85\xe7\xe9\x31\x16\x00\x27\xc9\x54\xe7\x8a\x93\xfb\x4d\xe5\x62\x33\x67\x60\x66\x23\xe8\x1e\x20\xeb\xee\x41\x54\x16\x88\x62\xd9\x92\x27\xca\x06\xa9\x20\x8c\xc3\x92\xa0\x53\x0b\x11\xb4\x9d\x59\xaf\x20\x1d\xcc\xe3\x1b\x67\xb1\xa0\xc0\xe2\x5d\xd9\x0d\xe9\xa0\x8e\x97\x00\x9f\xc4\xe3\x0a\x86\x0d\xde\x01\x18\x0a\x52\xdc\xb7\xe9\x72\x69\xe7\xaa\xa2\x25\xc6\x12\xc3\x6e\xd8\x38\x5f\xa4\xaa\x59\x47\xfe\x9c\xc7\xdc\x9a\xb8\x12\x97\xe3\x94\xd9\xc7\xc2\x18\xdf\x4e\xaf\x23\x91\x33\x4b\x7c\x62\x0a\x62\xeb\x06\x11\x9f\x90\x60\x50\x68\xa4\x5e\xfc\x11\x6b\xae\xc8\x48\x4d\x26\x4a\x2d\x1c\xad\x5a\xbb\x64\xf8\xd8\x92\x29\x84\xe9\x5f\x89\x11\x60\x65\x4e\xd3\x23\xd2\x27\xd1\x94\x41\x71\x27\x0f\xe9\xb7\xa9\xbc\x57\x83\x2e\x20\xc0\x7e\xb9\xaa\x99\x98\x5a\x03\x87\x8a\x1a\xae\x5d\x3d\x7a\xe8\x7d\x47\xbb\xa6\xd1\x5f\x6c\x2c\x3c\x32\x65\xa4\xf2\xe9\xc3\xa7\x63\xdd\xc5\xf9\xe7\x70\xe6\x37\x22\x87\xd8\xf1\x3d\xed\xab\xf8\xf4\xef\xda\xfb\xc1\x45\xeb\x7b\xeb\x8d\x63\x62\xbf\xcf\xb4\x09\x00\xbb\x3f\xc0\x93\x26\x44\x44\x6d\x10\xae\xf7\xdd\x58\xb6\xc0\x20\x28\xfb\x4f\x4b\x1a\x35\x33\x29\x87\x71\xa4\xa4\x56\x7a\x4a\xb0\x26\x3a\xc6\x21\x93\x51\x90\xee\x27\xca\x5b\x1a\x2e\xf5\xfd\x99\x25\x9e\x1e\x05\x9c\xb8\xaa\x56\x30\xdc\xc5\xb5\x96\x51\x79\x49\x7b\xb5\x0b\x38\x51\x03\xcd\x61\x8d\x7a\xb2\x5e\xa6\x2d\x3e\xbc\x38\x15\x9b\xa2\xe4\xc7\xf3\x81\x10\xa3\x6c\x8b\x05\xed\xd2\x3c\xc6\xcf\x1f\x5e\x25\x8d\x02\xe0\xa7\xcc\x13\x24\xc4\xbc\xe4\xc6\x93\x48\xa9\x20\x40\x0d\x5c\x3c\x61\x95\x3b\x8e\xca\xd3\x2e\x4c\x60\x9d\x97\x00\x9c\x35\x07\x11\xbd\x6f\x24\x17\xf9\x9c\xc4\x37\xda\x8b\x6d\x87\xb7\x35\xc2\xc0\xb0\x47\x84\xb8\xfd\x3e\x80\x41\xc6\x93\x8e\x7e\xa2\x71\x3a\x74\xa0\xa9\x6c\x5b\xab\x8e\x99\xb4\x8e\x02\x3d\xb1\x3a\x6b\xa0\x1e\x57\x08\x0a\x92\x9c\x52\x49\x4b\x8a\xaf\xc6\xb6\xc5\xe2\x5e\x57\xe2\x81\x53\x20\x76\x10\x21\x2d\xb4\x08\xa2\x00\x64\x53\xb7\xe7\x6c\x67\x4d\x48\x45\x02\x61\x7f\x7d\xc7\x91\x07\xe9\x9a\x54\x28\x94\xa9\x67\xe7\xb4\x8a\x11\x9a\xf1\xcc\xf2\x70\xfe\x79\xd4\xba\x35\x3f\x76\x4e\x03\x47\x8e\xdc\xfe\xe6\x6c\x88\xcb\xe3\x78\xd5\x58\x96\xba\x20\x25\xe6\x3e\xc0\x5c\x39\x93\xcb\x3a\x63\x3d\x76\xab\x94\x6a\xf1\x60\xdf\xe2\xf6\x8d\xdb\x5b\xa8\xdf\xa1\x76\xd2\x94\x97\x71\xd0\xc3\x77\xbf\xb8\xbf\x40\x83\x27\x32\xf7\xc9\x41\x13\x06\x6c\xf9\xba\xa3\x28\x08\x7e\xcc\x3e\xc3\x82\x84\x4a\x82\xfa\x15\xa0\x87\xfa\x18\xba\xda\xeb\x4c\x31\x32\x6d\x62\x4f\x43\xf0\xdd\xab\xfb\x3e\x41\x13\x81\x20\xea\xe5\x38\xc0\x0b\x2c\xa3\x33\xa8\x1e\xec\x8d\xe5\x5f\xc8\x85\x0b\x90\xd5\x64\x86\xa5\x7f\x5e\xf5\xfe\x89\xc5\xc2\x1b\xf3\xe2\x8a\xea\x93\x31\xbb\xad\x47\xc6\x93\x6d\x51\x19\x6b\xd7\x13\x33\xc3\x63\x9b\xbd\x77\x7a\x3e\x52\x49\x06\xfd\x72\x46\x9f\x73\x57\x2b\x34\x08\xa4\xde\x63\xa0\x74\x84\x9b\x22\x21\xc6\xc3\x57\x0a\x1e\x06\x1d\x6b\x84\x3d\x9b\x84\x7f\xfe\x2b\xd7\x43\x4d\x8c\x63\x53\x38\xc2\x71\x15\x0c\x1d\x1c\x83\x0e\xc2\x1a\xa2\x8d\x63\xd8\xf4\x09\x2c\x51\x36\xe5\x09\x64\xd2\xde\xa1\xff\xf3\xf2\xbc\x4a\xc8\x2b\xc8\xbf\xb1\x68\xb2\x1f\x00\x1e\xf7\xad\x2c\xea\xb5\x73\x7f\xba\xec\x00\xa2\x99\x1b\x8d\xb7\x1f\x55\xfc\x34\x92\xd7\x71\x04\xc8\xc1\x82\x58\xa6\x30\xc8\xdb\xc3\xc3\x32\xec\xc2\xd1\x3d\x77\x49\xd2\x02\xd8\x33\xa6\x9e\x01\xd1\x9d\x1c\xb4\xc0\x0c\xf3\x12\x74\xdd\x82\x19\xeb\x68\x4d\x94\xf5\x91\xb7\x2c\x32\xbf\xab\x54\x3b\xc5\x72\x75\x2e\x4b\x99\x00\x97\xf5\xf9\x3f\x07\xf6\xa5\x1b\xb0\xe4\x6e\x74\x29\x44\xba\xd2\xb2\x4d\xf4\x0a\xc3\x0b\x82\x82\x98\xcb\xa7\xdd\x96\x96\x08\x30\x4f\x92\x73\x3a\x20\xde\xd6\xd5\x32\x87\x73\x07\x49\xab\x03\xa5\x76\x7c\xdd\x0c\xdd\xb4\x4d\x87\x0c\x9d\x51\xaf\xa4\x45\x11\xa4\xbc\xe4\xc9\x0a\x9c\xa9\xed\xc9\x2b\xa7\xa8\x64\x1d\x37\x2d\x13\xe7\xf2\x40\x0f\x62\x0e\x9c\xee\x40\xbc\xb3\xdc\x89\x12\x72\x9d\xc7\x61\x8f\x3e\xd1\xc0\xd2\xd4\xc9\xb7\x22\x50\x90\x81\x2d\x57\x40\x81\x9e\x82\x43\xc8\xc6\x04\x53\x6f\xac\x5b\x16\x34\x7b\xfa\x09\xc3\x31\x75\xcf\x73\x2c\x67\xfb\x77\x89\x70\x4d\xb0\x37\xe9\x35\xed\x0b\x90\x6b\x7c\xa1\xd6\xc6\x5e\x80\x17\x7b\x1c\x2c\xb3\x23\x1b\x44\x35\x17\x31\x4c\x0b\x1a\xec\xd7\x23\xa6\x68\x5a\x11\xc8\x2a\x7a\xd6\xc8\x29\x7a\xdd\xec\x10\x99\xc2\x79\x34\x24\xd8\xf6\x41\xe7\x49\xd0\xc0\xfe\xa1\x3e\x0c\xc4\xb5\xde\xb2\xca\x5f\x09\xf5\xd7\xca\xe7\xa1\xaf\xa2\x82\x69\xce\x76\x85\xf9\xb0\x3a\x07\xe1\x98\x9a\xf1\xc3\xb6\x88\xe3\xb7\x36\x47\xd7\x54\x9c\xf1\x86\x5b\xbc\x10\x99\x0b\x24\xc7\xe6\xa8\x9f\x31\x06\x09\x71\xa4\x3f\x5d\xab\x34\x03\xd7\x3a\x5b\x15\xf7\x46\x96\xbc\x59\x33\x54\x4d\x93\x3b\xcc\x6a\x38\xaf\xd8\x47\x55\x62\x47\x9e\xf2\x91\xc6\xf2\x70\xf5\xb1\xdf\x95\x9a\x9c\xd3\x2d\x64\x31\x95\xa2\xef\x07\x23\x00\x7e\xd0\x79\x1c\x69\xb4\x8e\xf5\x41\x35\x67\xd7\xaf\x73\xb6\xa9\x09\xdc\x03\xba\x19\xcf\xae\xf1\x82\x3c\xfb\x0c\x10\xff\x74\xf3\x1f\x14\x47\x7f\x3e\x0a\x0c\x98\xef\x2b\x30\x17\xab\xb9\xa3\xbb\xc1\x8d\xb1\xae\x85\xd4\xf3\xbc\xb3\xf6\xb9\x8d\xb5\x61\xa8\xf5\x1b\x82\xe8\x63\x86\x57\xf3\x8f\xc3\xcc\x15\x2a\x4c\x4c\xe6\xb8\x05\xe5\x99\xca\xe1\x79\xc8\x3b\xe1\x4e\x8c\x24\xd3\x84\xdb\x72\x60\xf0\xc3\x7b\x39\x61\x2c\xbe\x70\xf1\x8a\x82\x42\xd6\x4c\x8f\x2a\x86\xfc\x97\x57\xc6\x9a\x8c\x2a\x0c\x6e\xf0\x8c\x8e\xf3\x85\x87\x3a\xc7\xa3\x78\xf2\x58\x04\xf2\xb2\x8f\x2c\xe0\xf0\xb4\xd2\x55\xa7\x70\xa5\x02\xb4\xec\x67\x80\x44\x48\x06\xe7\x37\xcb\x80\x09\x0e\x63\xe3\x62\xb3\x87\x43\x1f\x10\x51\xc1\x10\xb7\x64\xf9\x45\x74\x27\x51\x18\x80\x6e\xc2\x7d\x79\x13\x8c\x5e\x61\x82\x9a\xd5\x19\x51\x68\xc3\xae\x66\xc1\xc0\x8b\x3d\x04\x58\xd0\x96\x1c\xe6\x6f\x9e\xc7\x4c\x0f\xa0\x5e\x60\xb7\x66\xab\x06\x72\xac\x76\x8d\xea\xf3\xe7\x57\x1f\x83\xe1\xb8\x4a\x79\x5e\xf1\x10\xe8\x27\x2e\xa6\x39\x8d\x4d\xe4\x14\xa3\xcb\x89\x45\x8d\x74\xa6\x4e\xf6\xf4\xb9\x44\x47\xaa\x95\xd3\x38\xc8\x44\x8f\x91\x53\xb3\x6e\x7f\xc1\x80\x48\xed\x9f\x1c\x41\x20\x8a\x06\x69\x58\x4b\x10\xbb\xe7\x5b\x32\xb8\xb0\xd3\xcf\xc9\x58\x60\xb2\x0d\xf6\x5a\x5b\x05\xfb\x81\xcb\xdf\xf7\xf6\x6a\x13\x63\x34\x32\x49\x7d\x1e\x88\x11\xb8\x05\x1d\x46\x68\xba\xd1\x8a\x62\x4c\x54\xec\x5a\x2e\xee\x56\x2e\x5b\x28\x88\x33\xcc\xab\x31\xa1\xc6\x3d\x7e\x33\x20\x0b\x46\x4e\x03\x93\x8d\x48\x18\x5a\xbf\x0a\xed\x87\x37\xc4\x49\x92\x33\x1f\x09\x22\xea\x3c\x25\x93\x80\xfc\x9b\xd0\x22\x40\xfe\x16\x47\xe2\x88\x1a\xfb\x3f\x6f\x6b\x40\xd1\xca\xa5\x90\xcd\xa6\x4d\xdd\x38\xfd\xa6\x24\xa9\x20\x19\x34\x3e\xdb\x23\xbd\x41\x2b\x05\x91\x67\x78\x77\xa9\x40\x9f\x0a\xff\x36\xe2\x50\x72\x4a\x01\x36\x96\xa1\xbd\x8e\x47\x45\x5d\x69\x59\x4c\xaa\xc3\x82\xee\x93\x30\x00\x46\x23\x36\x76\x3a\x62\xda\x63\x5c\xba\x1e\xa0\x1e\x05\xab\xbe\x0b\xe0\xea\x7d\xf3\x82\x61\xc0\xc9\x35\x0a\x03\x65\x48\x6b\x26\xad\x0d\xe8\x25\x71\xdf\x30\x09\xdb\x53\xac\x5d\xe8\xf6\xff\xcf\x3d\xbf\xa5\x20\x96\x86\xef\xda\x4f\xbe\xa5\x4e\x2b\x85\x87\x93\xd2\x29\x25\x5d\x26\x0f\x6c\x54\x90\x6d\x8d\xb4\xcb\x68\x7c\x35\xb9\x84\xa2\x27\x68\x9a\x26\xe6\x55\x1e\xd4\x08\xc9\xa4\xfa\xf0\xe3\xca\xfb\x2e\x8f\xb8\x05\xfc\x10\x33\x17\x91\xad\xc8\x33\xb2\xa8\x87\xaf\xe6\x57\x49\x36\xf9\x2a\xae\x86\x41\x14\xc9\x42\x3d\x73\x34\x54\xc3\x78\x74\xfd\x23\xa5\xcb\x5b\xdb\x7e\x13\xa4\xd5\x00\x30\x16\x02\x35\xce\x7d\x9c\x1f\x40\x56\x12\xd6\x6b\xe8\x6e\x68\x45\x38\x2e\x03\x1f\xf8\x6b\xc3\xd9\x22\xee\xea\x27\x34\xc7\x91\x32\x8f\x69\xd6\x0b\x3e\x15\x97\x3a\x6b\xbf\x84\xc0\x6a\x1b\xaa\xf0\x10\xa1\x78\x55\xfe\xee\x6d\x02\x08\xfe\x0f\xdf\xc4\x4a\x9c\xf8\x9b\xb4\xa6\x42\xf9\x65\x29\xc7\x9d\xd3\xee\x4d\xff\xa7\xbe\x2f\x3d\x9f\x7a\x3f\x2d\xf1\xd9\x1e\xd2\xf4\xe1\x0a\xa3\x1d\xca\x99\x7b\x2a\x71\x79\x51\xdf\x99\x87\x88\x3c\xad\x39\x8a\x55\xa1\x1d\x5c\x55\x8a\x87\xb1\x0e\xc5\x24\xc9\x2b\xe2\x1d\x7d\xcf\xd3\x02\x86\xe2\x26\x78\xd8\xfc\x5d\x9b\x7a\x61\x82\x2b\xd6\xd6\x0b\x55\x35\x25\x90\xf4\x0f\x0e\xfc\xdb\x26\xb0\x17\xb6\xbb\xf4\xec\xd5\xd7\x82\x33\xcd\xbb\xb6\x54\x04\x12\xaf\xc3\x35\xd0\xb9\xd0\x82\x44\x4d\xe3\x12\xe2\xb0\x93\x72\xff\x0d\x11\x3e\x78\xd8\x87\x82\x07\x00\xa1\x38\xb0\x8a\x9f\x1f\xff\xf2\xdb\x35\x51\x4a\x32\x9d\xf0\x3e\x00\xbf\x8a\xd7\xd5\x95\xd7\x0b\x44\xd2\xb8\xc9\xec\xc3\x9e\x26\xd9\x2b\xc4\x9d\x34\x23\x44\xb5\xe8\xda\xc6\x80\x6a\x12\x0b\x86\xf9\x9b\x63\x05\x05\x8f\x66\x16\x22\x66\xdc\xa4\xfe\xa1\x9c\x33\x69\xbb\x9b\x7c\x64\x23\x6c\x8e\x6e\x11\xd7\xd5\xb6\xa8\x86\x65\x94\x50\xca\x7a\x3f\x2c\xbe\x87\x9a\xb8\xc9\xde\x07\x2c\x8e\x80\xe7\x3c\x32\x4d\x47\xd5\x06\x5d\x53\x03\xcb\xba\x53\xef\xe7\x06\x18\x80\xae\x2e\x4f\x69\xdb\x4f\x1f\x6e\xb2\xf8\x38\x27\xad\x64\xca\xad\xa7\xc7\xbe\x47\x8a\x6e\x43\x74\x1d\xf3\xb6\x60\x44\x25\x69\x88\x06\x37\xf9\x3e\xa2\x26\x08\xbd\xdb\x4d\x45\x42\x37\x89\x61\x93\x20\x6f\x2c\x1d\xc9\x79\xd7\x58\x9a\x34\x4f\x03\x5a\x79\x09\xe2\xe1\xe4\xb8\x8b\xda\xaa\xea\xc1\x34\x50\x00\xa3\xa3\xae\x8f\x02\x66\x56\x20\xa6\x57\xbb\x3b\xcf\x65\x18\xa1\x3c\x8d\x14\xc4\xcf\xfd\xf6\xeb\xdf\xdf\x7c\x95\x5f\xff\xfe\x6b\xff\xfc\x33\xff\xfe\x72\xc6\xce\x3b\xfe\xf7\xdb\xdd\xec\x3f\xb7\xd2\x10\x3b\x4e\x42\xc9\x02\x4f\x74\x0a\x01\x46\xe0\x25\x49\x35\x9a\xd2\xf2\x5f\x33\x50\x45\xd8\xd6\x39\x19\xc5\x87\x78\x6d\x01\xd9\xa5\xc9\xc1\x03\x3c\xb0\xfe\xf8\xba\xfd\xcf\x4c\x87\x0c\x6e\x28\x6a\xa5\x31\x29\x31\x64\xce\x5c\x39\xbe\xaa\x39\xc6\x9f\xff\xae\x04\xdc\xc4\x49\x19\x1c\xdc\x38\x03\x3a\x86\x28\x6f\x12\xcc\xa8\x25\x60\xaf\xd0\xdf\xe1\x6f\x5f\xe5\xd7\xdf\xda\xeb\x7f\xae\xb0\xd2\x43\xa7\xb8\x43\x1b\xb8\x07\x61\x0b\x7b\x5c\x84\x37\x92\x6e\xcd\xe9\x5f\xaf\xed\xd1\x0d\x9f\xb2\xe7\x4b\xe0\x0c\x4e\x4c\x8d\x94\xde\x0b\x9a\x7d\xf2\xf4\x9f\x3b\x7d\xfd\xce\xbc\x91\xca\x93\x47\x97\xce\x6f\x10\x53\x1a\xb3\xf2\x18\x9f\xba\x65\x8d\x23\xc0\xac\xaa\xc9\x2a\x16\x19\x2a\xcb\xbe\x1c\xa0\x2c\x00\x6e\x5f\xf3\x2d\x06\x5d\xe3\xd2\xec\x69\x07\x6c\x86\xa5\x4f\xe2\x0d\xe5\x7e\x63\x36\x08\x60\x39\x26\x18\xcc\x98\x5e\x5c\xb1\x6b\x3e\xc5\x13\x66\xef\x10\x44\x58\x05\x47\x51\xda\xe0\x0c\xa8\x91\x81\xe2\x5f\x05\x6a\xf7\x06\xb6\xc4\xe6\xac\x20\x7d\x4a\x1d\x9f\xfe\x6b\x3d\x1d\xe5\xdd\xd2\x48\xe9\xbd\x1b\x09\x2b\x7a\x4a\x07\x44\x51\x0e\xd9\x52\x5c\x6f\x6f\x44\x0f\x79\xd9\x4a\xa9\xd6\xba\xe0\x26\x7f\xab\xfd\x6c\x44\xd2\x24\x3c\xc7\x7b\x88\x27\xb8\xbb\x06\x6c\x3d\x28\x5c\xd0\x9f\x08\x73\x0f\xa6\x61\x67\xe4\x8d\xc7\xae\xe9\x5c\x3b\x87\xf1\x22\x11\x90\x65\x42\x12\xf7\x09\x57\x46\x9d\x01\x05\xe2\x13\x7f\xfe\xf5\xff\x37\xda\x4d\x05\x21\xc6\x74\x20\xe7\xdb\x54\xbd\x70\x8b\x7f\xcc\x1d\x30\x58\x8c\xbf\xf4\x35\x38\x7c\xea\xdd\x32\xd9\x56\xdb\x51\x15\xc1\x36\xf1\x9b\x72\xe1\xa8\xbb\x6f\x9b\xd7\x01\x13\x44\xb1\x0e\x1e\xf9\x5b\x34\xd3\x8b\xe5\xf4\xd2\xea\x43\xc2\x8b\xa8\x30\x65\x85\x10\xf2\x34\x17\x3d\x38\x85\xd0\x9e\x1d\x56\x80\x70\xac\xc7\xb1\xc0\xb7\xbd\x07\x1c\xdf\xc1\x1f\xf1\x35\xf2\xd8\x61\x8f\xfb\x6a\xf7\xe4\x82\x00\x46\x22\x92\xf9\x2d\xff\x01\xad\x11\xd5\x51\xd0\x9e\xbc\x1c\xcd\x53\xd4\xd2\x84\x3c\x02\x93\x1b\x36\x9c\x6e\x80\x82\x0c\xb8\x40\x8c\x84\xdb\xf5\xe1\x59\xf8\xaf\x81\x74\x2c\x2e\xfa\xf1\x5e\xd6\x96\xdf\xcc\xe3\x8a\x81\x7b\xd8\x2f\xf7\x11\x63\x59\x83\xf3\xe6\x1f\x83\x47\x29\xca\xe6\x25\x17\xca\x21\x01\x34\xd2\xfe\x42\x4c\x87\x46\x80\x0d\x7c\x7d\xe9\xe9\x68\xf8\xec\xea\x4e\x05\x7a\x96\x27\xec\xea\x5a\x8d\x66\x82\x3f\x06\x66\x86\x3a\x18\x1c\x90\x20\x23\x93\x8c\x26\x72\xaa\x0a\x1d\x4e\xe7\x44\xdd\xd5\x5f\x0b\x83\x97\xd5\x3e\xcc\x0f\x5a\x74\x37\xc9\x6c\xe2\x91\x7c\x74\x09\xda\x67\x7c\x9b\x89\xae\x00\xe9\x49\xca\x1b\x44\x7a\x05\x81\xfe\xda\x41\xe6\xba\x64\xc6\x49\x05\x85\x04\xad\x73\xfb\x21\x28\xd9\xd1\x2b\x09\x09\xa2\x33\xc3\x82\xca\x36\x32\xfa\x86\x8a\x2b\x8c\x34\x4b\x02\x5c\xfa\xe4\x3b\xcd\x76\xf5\x1e\xc7\x99\xef\x61\xc7\x3e\x6b\x1b\xc9\xf4\x02\xa8\xe0\x9a\xe8\x7e\xe3\x35\xc1\xd1\x19\x2a\x23\x1a" +var _swJsBr = "\x1b\xb4\x3e\x51\x94\x8b\xd6\x5f\x15\x51\x35\xda\x35\xa0\x45\x82\x6d\x4a\x7d\x47\x7b\x11\x8d\x4a\xd7\x46\x32\x92\x4a\x4e\x7a\xe7\x48\x23\x22\x22\xe2\xf3\xfd\x73\xd3\x75\x28\xad\x9b\xef\xab\xfa\xf5\x1b\xb1\x4b\xea\xb4\xd3\x35\x86\xb2\x18\xfa\x64\x31\x61\x0f\x36\x80\x4c\x3e\x6f\x2b\xcd\xd7\x97\x30\x19\x46\x3a\x03\x69\x3f\x39\xa4\xd4\xb6\xc5\xc8\xce\x26\x6c\x19\x90\xed\x5b\x17\x15\xa6\x53\x9a\x8a\x2c\x6a\xcf\x77\x1a\x85\x9d\x7a\x1f\xe8\x78\xa7\x9a\xa9\x65\xd5\xe6\xc5\x10\xa6\xe7\x43\xb9\x0b\x5a\x80\x8b\x26\xb5\x67\xc1\xd0\xe3\xf7\x83\x83\xe4\x4b\x4e\x27\xbe\x1a\x46\x4a\xf5\x17\xe8\x8b\x11\x2f\x74\x86\x9a\xda\x5c\xfe\xcf\x66\xea\x72\x6f\x0f\xdb\x00\x16\x5d\x9a\xee\x7c\x01\x2a\x9b\xe8\xc3\xcc\xcb\x2c\x3d\x0b\x9f\xa5\x03\x83\xd6\x20\x9d\x89\xee\x0c\xb3\xb3\x6b\x7b\x57\x27\xd3\x81\x01\x65\x5d\x98\x4b\x82\x2e\x2f\x45\x9b\xa6\x8e\xd3\xb9\x85\x24\x0a\x75\x7d\x16\x71\xea\x69\x44\x6f\x62\x90\xc5\x96\xdd\x06\x36\x27\xe2\xa4\x77\x49\x33\xb9\x65\xbc\x4c\xfc\xa6\xe0\x22\x00\x19\xdb\x5c\x75\xd5\xb2\x7d\x35\xc3\x70\xca\x4f\xe0\x1b\x1b\x81\x4a\x78\xf1\x92\xa4\x6a\x99\x2d\xaf\x5a\xfc\x55\xfa\xe7\x6a\x2c\xb5\x49\x98\x60\x03\xd5\x95\xb9\x4d\x21\x23\xb4\xa1\x0c\x9a\xff\x3c\xab\xbc\xbc\x8a\x58\x76\x24\x35\xf1\xf2\xed\xcf\x73\xf6\x02\xff\x77\xd7\x4a\x7e\x5a\x14\xb8\x33\xe9\x34\x9c\x98\xe3\xc5\x71\xac\x8e\x21\xd7\x93\x44\xcc\x87\xc2\xa4\xe5\x8a\x9b\x91\x07\xc4\xdc\x1c\x35\x31\xa7\x2e\x64\x86\xc9\xcc\x6a\x7e\x2a\xb0\x78\xe9\x5c\xed\x23\xdd\x82\x53\xd1\xe0\xff\xbe\x17\x92\x37\xf4\xa9\xd9\x18\xd4\x1a\x93\xbe\x60\x2b\xe2\x8b\x14\x7e\x14\x23\x2e\xcb\x60\x01\x5b\x42\x55\x0d\xfb\xa4\x94\x15\x00\x27\x90\xb3\x82\x02\x24\xcc\x8c\x69\x91\x02\x42\x8d\xd8\x0a\xde\x29\x42\xa5\x55\x68\x16\xf6\x0d\x57\x98\xb1\xac\xd5\xae\x2a\x0a\xbe\xa4\xb2\x36\x99\x11\xe9\x59\x32\x01\x48\xbc\xa4\x40\x21\xa0\xca\x78\x43\xcc\x1c\x06\xbe\x65\x42\x20\x8d\x58\xa7\x96\x34\x61\x70\x1d\x28\x12\x45\x0d\xd1\x65\x80\xed\x3f\x4f\xcf\xf2\xac\x80\x39\x63\xf0\x87\x6c\x72\x6e\x25\x19\xa9\xea\xa3\x4f\xa3\x08\xea\x9f\x8a\x42\x04\x95\xe1\xc9\x1a\xcc\x1c\x6d\x6a\x71\x70\xf7\xaf\x56\xb2\x97\xf0\x2f\x74\xae\x09\x24\x17\x03\x6c\x9f\xe3\x0c\xcd\x05\x1d\xf4\x2a\x47\x8f\x29\x42\xca\x68\x92\x62\xb9\xb7\xff\x3b\x95\xb7\xfb\x01\x61\x28\x09\x98\x09\xca\xb9\xf9\x49\xe1\x9a\x58\x06\xb3\xe8\x3a\x1c\x3d\xa3\x2b\x32\x67\x75\xcf\x0a\x71\x33\x56\xa2\x9b\xef\xe6\xa3\xba\xc8\xff\x0c\xb2\xfc\xf3\xda\xf1\x92\xd2\x92\x99\x6e\x26\x26\x5f\x8c\x05\x15\x3b\xa7\xc3\xb2\xab\xb9\x32\x0b\x6c\x2e\x76\xbc\x6a\xae\x75\xf5\xff\xd8\x14\x8b\x57\xb3\x3a\x4e\x8f\xc0\x78\xbf\x80\xa3\x31\x26\x68\x69\x19\x8a\x28\x53\x0b\x5e\xf5\x5e\xa0\xec\x54\xba\x28\x0a\x54\xf2\xdc\x9b\xfb\xbe\x3b\xb7\xc5\x90\x6f\x54\x14\xd1\x9a\x5e\xdc\x9a\x2c\xbd\xad\xee\xd6\xf3\xbc\x09\xd2\xcd\x15\xf3\x74\xd8\x04\xa7\x4b\x06\x47\x33\x5b\x1c\x33\x5d\x51\x95\x17\xc0\x16\x14\x40\x9b\x8a\x26\xde\xc5\x3f\xd6\xa3\xf5\xe0\x36\x8c\x87\x8a\xd8\xf7\xea\x7b\x17\x98\xc7\xa3\xaa\x4d\x94\x87\x67\xd4\x2a\x2c\x2c\x69\xe2\x7e\x92\x29\x5c\x9a\x76\xaf\x7b\xa1\x79\xf2\x09\x9f\x0d\x4d\x3d\x0e\x07\x6d\xe4\x85\x0b\x4d\x4d\x3b\xae\x93\xc5\x69\xb0\x88\xb2\xcf\xdc\x5d\xe0\xf8\xa3\x5b\xfa\xd2\xa0\xcf\x4c\x82\x1e\x6d\x62\xd6\x36\x6d\xc1\x98\xa5\xba\xbf\x7f\x54\x3c\x72\x36\x28\x45\x02\xbb\x0a\xa7\xa3\x64\xa7\xe0\x04\x99\x4b\xd8\xbb\xaf\xde\x45\x4c\xe0\x05\xad\xec\x02\x8f\xe9\x5e\x9a\x7b\x90\xf2\x1a\x47\x19\xe4\x12\x54\x23\x55\x25\xf0\x60\x9a\x4a\xce\xef\x18\x51\x83\xea\x37\x4d\x66\x41\xf9\x66\x09\x32\xd4\x52\x7d\xc9\xf3\x24\xd9\xfc\x03\x3e\xef\x1d\x79\x34\x46\xe8\x53\x50\x25\x4c\x87\x99\x67\xf2\xa4\x0c\x3b\x45\x3f\x7f\x01\xc9\xbc\x24\x88\x13\xc2\x5a\xb7\x00\x66\x83\x1a\x54\x53\x43\x6a\x6a\x01\x95\xb6\xec\x15\xa5\x41\xf9\x58\xea\x1f\x34\x09\xeb\x82\xc3\x97\x0a\x50\x6a\xc1\x79\x38\x4e\x05\xd2\x21\x60\xbf\xb4\x42\xd6\xdc\x31\xd4\x13\xc8\x41\x94\xe8\x43\x95\x73\x76\x12\x02\x8c\xeb\xa7\xc6\xa8\x25\xe8\x95\x61\x7b\x54\xb8\x85\x50\xd7\xb8\xf1\x13\x1a\xd8\x19\xed\x8c\x34\x20\xcb\xce\xd3\x8a\xd7\x27\x40\xaf\x1f\xe7\x19\xeb\x48\xe6\x63\xea\xf0\x00\xdf\x0b\x72\xe5\x4c\xec\x2f\xeb\x73\x1d\xbf\x56\xd6\x51\x92\x08\x11\x86\x12\x2b\x94\x5a\x14\x46\xc3\x58\xb6\xd2\xe3\x98\xf9\x5a\x86\xc7\xba\x34\x0c\xf7\x45\x43\xc5\xe9\x84\xf0\x39\x32\x52\xc7\x8e\xe8\xf2\xc1\x1d\xb8\xad\x33\x0c\x87\x97\x3c\xee\x15\x47\x78\x8a\xba\x86\xbb\x1c\xc5\xb9\x65\xa1\xb3\xc5\xc1\x03\x46\xfc\xf3\x0f\x76\x89\xda\x99\x72\x6e\x77\xc9\x66\x82\x1d\x47\xe7\x5e\xee\x85\x33\xd0\x81\x73\xf0\x7f\xd2\x55\x85\x77\xfa\x09\xe0\xdb\x18\xfe\xc8\xe2\x91\xbc\xcc\xdd\x91\x41\x23\xec\x93\x7b\x33\xa9\x73\x87\xf6\xb4\x06\xf1\x92\x18\x1a\xf4\x61\xfa\xc6\x7f\x24\x48\xef\xe8\x14\x35\x09\x93\xd8\x71\xd8\x90\xe4\x74\x0b\x92\xc0\x1b\x56\xcc\xe5\xf1\x62\x18\x2c\x6f\x95\x09\x01\x6b\x2d\x94\x35\xac\x18\x07\xdd\x90\xee\x62\xb0\xb9\xc1\x2d\x16\x2c\xf0\xe3\xb2\x3a\x55\x5a\x90\xde\xde\x4a\x7a\x4b\xd7\xb5\x7a\xf7\x56\xa3\x02\x23\x13\xe4\x57\x77\x09\xba\x9f\x11\xf5\x77\x84\x3f\x44\xe5\x5e\xa6\xa7\x3f\xba\x3f\x54\x18\xb7\xa5\xdd\x85\x10\xe6\x4f\xd4\x0a\xc2\xc7\xc4\xa3\x2e\xfe\xdb\x06\xce\x75\xa2\x25\xdd\xa1\x88\xec\x01\xc3\x9a\xd8\x30\x02\x8e\xaa\xf0\xa3\xf5\xa4\xcc\x87\x2f\x72\x3a\x0a\x64\x0e\xb6\xd2\x3b\xda\xf9\x52\xb8\x1a\xcb\xec\xe6\xf1\xe5\x8a\x39\x72\xb4\x59\x4d\x2d\xd5\xb7\x51\x2a\x1a\x94\x80\x1c\xa0\x4f\x29\xd3\x08\x6a\xa3\x28\x48\xfb\x49\x88\xce\xd1\xf1\xc8\x69\x6c\x1d\x3c\x99\x47\xb3\xa1\xec\xbf\xc7\x0a\x76\x87\x51\x7e\x88\xb1\x9a\x73\xbb\x5c\x92\x19\x5a\xeb\x58\x2f\x79\x83\xf9\xcd\x2e\x0c\x2e\xfa\xeb\x96\x38\x53\x87\x8c\xbe\xff\x4a\x21\x29\x73\x77\x86\x3a\x2f\xb3\xc8\xac\xff\x0a\x27\xfb\xbb\xbe\xea\x1f\x82\x2b\x48\x4b\x22\xa6\xd9\xab\x72\x96\x82\x2f\x33\x95\x6e\x05\x5a\x67\xaa\x63\x76\xb0\xd5\xd9\x76\xca\xee\xf0\x30\x89\x3f\xa9\x83\x9f\xbb\xa8\xd9\x83\x63\x28\x40\x70\xcf\x18\x47\x0e\x41\xaf\xdc\x6f\xd6\xb6\xc2\xd4\xcc\x57\x20\xda\xfc\xf3\xf1\x07\xcd\x96\x8e\x0c\x88\x9e\x7e\xc0\xc6\xb0\x52\xb1\x47\xe4\x3c\xd4\x01\x12\xbc\x09\xe1\xd3\x0b\x57\xc8\x63\xbb\xe1\xd1\x54\xd4\x66\x1d\xc0\x31\x68\x44\x25\x47\x51\x11\xd4\x4c\xd8\xe1\x7b\xaf\x3a\x79\xe8\x9a\x23\x85\xfd\xc8\x3a\xc7\x47\x0f\xd8\x5b\x62\xd1\x74\x1f\x62\xb3\x0c\x04\x39\x01\x35\xb5\xb0\x5c\xd2\x15\x69\x89\x57\x05\xb8\xaf\x1b\x68\x79\xd5\xf6\x9d\x7d\xf3\x30\x66\x81\x2c\xd4\xff\x94\x88\x2d\xd7\xc0\xa8\x9a\xb1\x8d\xa7\xd7\xc2\x06\xab\xd6\x03\x60\x40\xb8\x3f\x8b\x30\x4a\x5b\x25\xaa\x9c\x5a\x72\xa8\xb6\x6b\x6d\x3d\x69\x1e\xcf\x09\xd4\xcb\x80\xf7\xcd\x48\x84\xaf\x5c\xbb\x7f\x4c\xf3\x77\x99\x77\x79\xc9\xb3\xdf\xef\x02\x89\xb1\xc4\x9c\xc5\xea\xfb\x29\x6d\x55\xb9\xdb\x9b\x53\x60\x33\x19\x73\xe3\x7a\x76\x77\x39\xff\xd8\x0a\xaf\x39\x04\x86\xa2\x06\xd6\xa3\x98\x9b\x76\xa6\x65\xab\x23\xb9\x34\x53\x4d\xb2\xc4\x27\x0c\x3c\x06\x3c\xa0\x28\xec\x6c\x36\x91\xfd\x34\xf9\x7d\x1d\xf9\xbf\xcf\xf5\x19\xcb\x42\x16\xca\x25\x2a\xd3\xa5\x28\x6a\x51\xac\xaa\x29\xdc\x20\x39\xd7\xb5\xb2\x82\x99\x41\x49\x8e\xc3\x81\xce\x3d\x4d\xe8\x31\xd2\xa1\x81\xdb\x2b\x7f\x35\xdb\xc8\x64\xbc\xe9\x34\x8b\xe0\x19\x94\x9c\x0d\xb0\xc8\x87\x25\xa1\xdb\x19\x1c\x35\x73\x34\xff\xb5\x03\x15\x36\xc7\xab\x15\x56\x33\xd0\x09\x6a\xe3\x80\x73\xee\x87\x0e\xea\x18\x38\xc6\x87\xa6\x65\x18\x2a\x4e\xc2\xc9\x56\x6a\xc1\xac\xeb\x0f\xd7\x6d\xe8\x62\x44\xc5\x5e\x21\x01\x63\xc3\xe2\xc0\x84\xd2\x9b\x94\x90\xee\xa4\x41\xe6\xa2\x92\xb8\xc0\xa8\xbe\xa1\xd0\x27\xad\x7c\xd1\xbb\xa0\x49\x8e\xb3\xb0\x61\x93\x26\x77\x21\x82\xda\x27\x22\xfc\x83\xeb\x67\xee\xa3\x23\x43\x88\x8b\x53\x00\xc0\x9d\xdc\x5e\x4d\xcc\x09\x5d\xac\x13\x2b\x14\xb2\xbc\x0b\xd9\x12\xcc\x2c\x09\x63\xf9\x2e\x51\xb2\xc1\x78\x06\x7c\x94\x10\x60\xac\x38\xb1\x8b\x88\x79\x00\x88\xc5\x55\x2a\xf9\x29\x03\x36\x9d\xd7\x67\x69\x00\x3a\xd1\xfe\xd5\xdd\x8e\x68\xbc\x30\xdc\xf7\x5b\x4f\x93\x27\xaa\xdc\x34\x93\xfa\xb0\xe9\xa2\x19\xf8\x13\xfe\x4f\x12\x0d\x2f\xc8\xea\xfc\x9b\xe4\xab\xaa\x47\xe6\x45\x2f\x30\xb7\xbf\xab\x79\x8c\x85\xe9\x58\xc4\x43\x3f\xb8\xc9\xb4\x5f\xb0\xa7\x8d\x76\x9d\xf6\xfe\xf9\x94\xfb\x71\x79\x0a\x06\x70\x44\xb8\x1b\x9c\x00\x06\xb9\xfa\x06\xbd\x57\xd4\xf1\xf6\xd1\x83\xb7\xa8\xd3\x5a\x74\xbe\x01\xdb\xd7\xed\x27\x46\x59\x78\xe5\xe4\x7a\xd4\x41\x23\xa9\xfb\x34\x9d\x6f\xfd\x3f\xc7\xbc\xff\x75\xda\xd0\xfd\x93\xa4\x8e\x22\x18\x39\x73\xff\xa8\x0f\x2b\xc3\x42\x99\x9c\xa6\x9d\x33\x53\xaf\xaa\xc0\x08\xee\xb4\x81\xe5\x14\x8c\x15\x5e\x42\x80\x02\x48\x2d\x30\x26\x42\x3f\x52\x8b\x53\xc9\x9e\xb6\x2a\x71\x27\x04\xbe\xfa\xa8\x8b\xe7\xbd\x07\x19\x4e\xf3\xc4\x14\xf3\x8c\x35\xe8\x3e\x96\x46\x81\x94\xfb\xb6\x8c\x0a\x78\x43\x60\xe1\xd9\x72\x61\x2c\xe7\xf5\x4c\x34\x65\x55\xe5\xfb\x0d\x74\xd7\x7c\x24\xcb\x39\x4b\xc4\xad\xf5\xec\xcc\x0d\x66\xd1\x81\x20\x24\x3b\x4e\x5e\x3d\x97\x57\xb9\x00\x70\xc1\x8d\xd0\xb8\xcc\xe2\x0c\x1e\x00\x3a\x51\x04\x59\x2a\x01\x81\x6d\x43\x07\xbe\xa3\xa9\xc2\xa6\x1e\x15\xbb\x86\x6a\xd8\x3d\x2d\x76\x48\xb1\xcc\x4e\x00\xea\x22\x52\x1f\x26\xae\xac\x18\x10\xcb\x9b\x00\x01\x9c\x00\xa1\x85\x2f\x3f\x1f\x32\x11\xb5\xde\x82\xe0\x1d\x81\x85\x74\xf2\xf1\x33\xee\x34\x13\x46\xac\x71\x51\x93\xe6\xa1\x66\x92\xbc\x5a\x2d\x88\x8c\x60\xe4\x52\x11\xbc\xf7\x3e\xd4\xea\x47\xd4\x68\x70\xf0\x52\x90\x01\xc2\x7f\x97\xd1\x6e\xa2\xb4\x4d\x1d\x05\x48\xf6\x14\x11\x5c\xa7\xa9\x8e\x6b\xe4\x0b\x91\xcd\x7d\x73\x79\x02\x98\x6b\x8a\xc8\x6f\xa3\x57\x91\xf9\xce\xcb\xe0\x9a\xb6\xbc\x9c\xde\x7f\xfd\x99\x2a\x1f\x1e\x61\xa8\xc6\xd0\x21\x3a\x8e\xd4\x03\xe9\x90\x74\xec\x6b\x43\x95\x42\x0a\x6a\x10\xf4\x46\x5b\x20\x86\x4f\x2c\x0a\x94\x8f\x26\xcb\x7b\x26\xd8\x03\x39\xa8\x89\x71\x6c\x41\x0d\xe6\x16\xff\xc3\xbf\x77\x19\x1c\xdd\x60\xe9\x7d\x92\xb9\x6d\xed\x8f\xb1\x05\x0a\x45\x4b\x3e\x4c\xa8\xf0\x1c\x53\xfd\xa1\xfe\x5b\xd5\xea\xb6\xfe\x23\xe9\xa0\xbf\x1b\x3f\x19\x1f\x63\x65\xee\xff\x9d\x29\x7f\xa5\xf7\x0c\x0f\x21\xdc\x73\x18\x98\xa7\x19\xba\xce\xb9\xac\x75\xf7\x58\x5c\x0f\x1a\x86\x38\x52\x6e\x74\xe9\x61\xf7\xf8\x37\xe1\xd1\x52\x2e\x0f\xa3\xe9\x1e\x1d\x5f\xdc\xbb\x6e\xc5\xbd\x6a\x6e\x96\x7f\x8c\x00\x15\xc8\xd7\x29\xdb\x35\xa7\x8b\x1c\xb8\xf3\x8f\x47\xb2\xe9\x78\x82\x90\xd6\xd0\xe1\x3f\x8e\x90\x07\x0d\x67\x05\x80\xf4\x71\x0d\xa3\x30\x08\x2a\xe7\xb1\xd9\x92\x28\x55\x94\x94\x8d\x34\xe3\xcd\x0e\xc0\x82\xc3\x04\x42\x55\xe5\xef\xab\xa3\x78\x59\x81\xc1\x6d\x0d\x96\x51\x36\x28\xd4\x79\x1b\xe3\x9b\x30\xd8\xb2\x73\xb8\x2a\xe4\x27\x06\x98\xf3\x10\x96\x4f\xe3\xc3\x72\xa9\x15\x97\xf8\x38\x4d\x29\xe0\xca\xf4\xc6\x3b\x01\x4e\xce\xee\x93\x9e\x0f\xc2\x9b\xdc\x49\x77\x17\x9e\xa7\xc7\x58\x00\x9c\x24\x53\x9d\x2b\x4e\xef\x37\x95\x8b\xcd\x9c\x81\x99\x8d\xa0\x7b\x80\xac\xbb\x0f\x51\x59\x20\x8a\x65\x4b\x9e\x28\x1b\xa4\x82\x30\x0e\x4b\x82\x4e\x2d\x44\xd0\x4e\x66\xbd\x82\x74\x30\x8f\x6f\x9c\xc7\x82\x02\x8b\x77\x65\x37\xa4\x83\x3a\x5e\x02\x7c\x12\x8f\x2b\x18\x36\x78\x03\x60\x28\x48\x71\xd7\xa6\xcb\x95\x9d\xab\x8a\x96\x18\x4b\x0c\xbb\x61\xe3\x7c\x91\x9a\x66\x1d\xf9\x73\x1e\x73\x6b\xe2\x4a\x5c\x8e\x53\x66\x1f\x0b\x63\x7c\x3b\xbd\x8e\x44\xce\x2c\xf1\x89\x29\x88\xad\x1b\x46\x7c\x42\x82\x41\xa1\x91\x7a\xf1\xc7\xac\xb9\x22\x23\x35\x99\x28\xb5\x78\xb4\x6a\xed\x92\xe1\x63\x5b\xa6\x10\xa6\x7f\x21\x46\x80\x95\x39\x4d\x9f\x48\x9f\x44\x53\x06\xc5\x9d\x3c\xa4\xdf\xa1\xf2\x5e\x0d\xba\x80\x00\xfb\xe5\xaa\x66\x62\x6a\x0d\x1c\x2a\x6a\xb8\x76\xf5\xe8\xa1\xf7\x5d\xed\x9a\x46\x7f\xb1\xb1\xf0\xc8\x94\x91\xea\xa7\x0f\x9f\x8e\x75\x17\xe7\x9f\xc3\x99\xdf\x88\x1c\x62\xc7\xd7\xb4\xaf\xe2\xd3\xbf\x6b\xef\x07\x17\xad\xef\xaf\x37\x8f\x89\xfd\x3e\xd3\x16\x00\xec\xfe\x00\x4f\x9a\x10\x11\xb5\x61\xb8\xde\x77\x63\xd9\x02\x83\xa0\xec\x3f\x6d\x69\xd4\xcc\xa4\x1c\x26\x90\x92\x5a\xe9\x29\xc1\x9a\xec\x18\x87\x4c\x2a\x20\xdd\x4f\x94\xb7\x34\x5c\xea\xbb\x33\x4b\x3c\x3d\x0a\x38\x71\x55\xbd\x60\xb8\x8b\x6b\x3d\xa3\xf2\x92\xf6\x6a\x17\x70\xa2\x86\x9a\xc3\x1a\xf5\x64\xfd\x4c\x5b\x7c\x78\x69\x2a\x36\x45\xc9\x8f\xe7\x03\x21\x46\xd9\x16\x0b\xda\xa3\x79\x8c\x9f\x3f\xbc\x4a\x1a\x05\xc0\x4f\x99\x27\x49\x88\x79\xc9\x8d\xa7\x91\x52\x41\x80\x1a\xb8\x78\xc2\x2a\x77\x1c\x95\xa7\x5d\x98\xc0\x3a\x2f\x01\x38\x6b\x1e\x22\x7a\x5f\x49\x2e\xf2\x39\x89\x6f\xb4\x17\xdb\x0e\xef\x68\x84\x81\x61\x8f\x09\x71\x07\x7d\x08\xc3\x8c\x27\x1d\xfd\x44\xe3\x74\xe9\x40\x53\xd9\xb6\xd6\x1c\x33\x69\x1d\x05\x7a\x72\x75\xd6\x40\x3d\xae\x10\x14\x24\x39\xa5\x92\x96\x14\x5f\x8d\x6d\x8b\xc7\xbd\xa6\xc4\x03\xa7\x40\xec\x20\x42\x5a\x68\x11\x44\x01\xc8\xa6\x6e\xcf\xf9\xce\x9a\x90\x8a\x04\xc2\xfe\xf8\x8e\x23\x0f\xd2\x35\xa9\x50\x28\x53\xcf\xce\x69\x15\x23\x34\x13\x99\xe5\xe1\xe2\xf3\xa8\x75\x6b\x7e\xec\xbc\x06\x8e\x1c\xb9\xfd\xcd\xb9\x10\x97\xc7\xf1\xaa\xf1\x2c\x75\x41\x4a\xcc\x7d\x80\xf9\x72\x26\x97\x75\xc6\x7a\xec\x56\x29\xd5\xe2\xc1\xbe\xc6\xed\x1b\xb7\xb7\x50\xbf\x23\xed\xa4\x29\x2f\xe3\xa0\x87\xef\x7e\xf1\x60\x81\x06\x4f\x66\xee\x93\x83\x26\x0d\xd8\xf2\x0d\x47\x51\x10\xfc\x98\x7b\x86\x05\x09\x95\x04\xf5\x33\x40\x0f\xf5\x31\x74\xb5\xd7\x99\x62\x64\xda\xc4\x9e\x86\xe0\xbb\x57\xf7\x7d\x82\x26\x02\x41\xd4\xcb\x71\x80\x17\x58\x46\x67\x50\x2d\xd8\x1b\xcf\xbf\x90\x0b\x17\x20\xab\xc9\x0c\xcb\xff\xbc\xea\xfd\x13\x8b\x85\x37\xe6\xc5\x15\xb5\x27\x63\x76\x5b\x8f\x8d\x27\xdb\xa6\x32\xd6\xae\x27\x66\x86\xc7\x36\x7b\xef\xf4\x7c\xa4\x92\x0c\xfa\xe5\x8c\x3e\xe7\xae\x56\x68\x12\x48\xbd\xc7\x40\xe9\x08\x37\x45\x43\x8c\x47\xad\x14\x3c\x0c\x3a\xd6\x09\x7b\x36\x09\xff\xfc\x57\x6e\x84\x9a\x18\xc7\xa6\x70\x84\xe3\x2a\x18\x3a\x38\x06\x1d\x84\x35\x44\x1b\xc7\xb0\xe9\x13\x58\xa2\x6c\xca\x13\xc8\xa4\xbd\x43\xff\xe7\xf9\x79\x95\x90\x57\x90\x7f\x63\xd1\x64\x3f\x00\x3c\xee\x5b\x59\xd4\x6b\xe7\xfe\x74\xd9\x01\x44\x2b\x37\x1a\x6f\x3f\xaa\xf8\x69\x24\xaf\xe3\x08\x90\x83\x05\x71\x4c\x61\x92\xb7\xfb\x87\x65\xd8\x83\xa3\x7b\xee\x92\xa4\x05\xb0\x67\x4c\x3d\x03\xa2\xbb\x39\x68\x81\x19\xe6\x25\xe8\xba\x05\x33\xd6\xd1\x9a\x28\xeb\x23\x6f\x59\x64\x7e\x57\xa9\x76\x8b\xe5\xea\x5c\x96\x32\x09\x2e\xeb\xf3\x7f\x0e\xec\x4b\x37\x60\xd9\xdd\xe8\x52\x88\x74\xa5\x65\x9b\xe8\x15\x86\x17\x04\x05\x31\x97\x4f\xbb\x2d\x2d\x11\x60\x9e\x22\xe7\x74\x40\xbc\xad\xab\x15\x0e\xe7\x0e\x92\x56\x07\x4a\xed\xfa\xba\x19\xba\x69\x9b\x0e\x19\x3a\xa3\x5e\x49\x9b\x22\x48\x79\xc9\x93\x15\x38\x5b\xdb\x93\x57\x4e\x51\xc9\x3a\x6e\x5a\x26\xce\xe5\x81\x1e\xc4\x3c\x38\xdd\x81\x78\x67\xb9\x13\x25\xe4\x3a\x8f\xc3\x1e\x7d\xa2\x81\xa5\xa9\x93\xaf\x45\xa0\x20\x03\x5b\xae\x80\x02\x3d\x0d\x87\x90\x8d\x09\xa6\xfe\xd8\xb0\x2c\x68\xf6\xf4\x13\x86\x63\x1a\x9e\xe7\x58\xce\xf6\xef\x32\xe1\x9a\x60\x6f\xd2\x6b\xda\x17\x20\xd7\xc4\x42\xad\x8d\xfd\x00\x2f\xf6\x24\x58\x66\x47\x36\x88\x6a\x2e\x62\x94\x16\x34\xd8\xaf\x4f\x4c\xd1\xb4\x22\x90\x55\xf4\xac\x91\x53\xf4\xba\xd9\x21\x32\x85\xf3\x68\x48\xb0\xe3\x83\xce\x93\xa0\x81\xfd\x43\x7d\x18\x88\x6b\xbf\x65\x95\xdf\x12\xea\xaf\x95\xcf\x43\x5f\x45\x05\xd3\x9c\xef\x0a\xf3\x61\x75\x0e\xc2\x31\x35\xe3\x87\x6d\x11\xc7\x6f\x7d\x8e\xae\xa9\x38\xe3\x0d\xb7\x78\x21\x32\x17\x48\x8e\xad\x51\x3f\x63\x0c\x12\xe2\x48\x7f\xba\x56\x69\x06\xae\x7d\xb6\x2a\xee\x8d\x2c\x79\xab\x66\xa8\x9a\x26\x77\x98\xd5\x70\x5e\xb1\x8f\xaa\xc4\x8e\x3c\xe5\x23\x8d\xe5\xe1\xea\x63\xbf\x2b\x35\x39\xa7\x5b\xc8\x62\x2a\x45\xdf\x0f\x47\x00\xfc\xa0\xf3\x38\xd2\x68\x1d\xeb\x83\x6a\xce\xae\x5f\xe7\x6c\x53\x13\xb8\x07\x74\x33\x9e\x5d\xe3\x45\x79\xf6\x19\x20\xfe\xe9\xe6\x3f\x28\x8e\xfe\xbc\x17\x18\x30\xdf\x57\x60\x2e\x56\x73\x47\xf7\x82\x1b\x63\x5d\x0b\xa9\xe7\x79\xe7\xec\x73\x1b\xeb\xc3\x50\xeb\x37\x04\xd1\xc7\x0c\xaf\xd6\x1f\x87\x99\xab\x54\x98\x98\xcc\x71\x0b\xca\x33\x9d\xc3\xf3\x90\x77\xc2\x9d\x18\x49\xa6\x09\xb7\xe5\xc0\xe0\x87\xff\x72\xc2\x58\x6c\xe1\xe2\x95\x04\x05\xad\x99\x1e\x55\x0c\xf9\x2f\xaf\x8c\x35\x19\x55\x18\xdc\xe0\x19\x1d\x17\x0b\x0f\x75\x8e\x47\xf1\xe4\xb1\x08\xe4\x65\x1f\x59\xc0\xe1\x69\xa5\xab\x4d\xe1\x4a\x05\x68\xd9\xcf\x00\x89\x90\x0c\xce\x6f\x96\x01\x13\x1c\xc6\xc6\xc5\x66\x0f\x87\x3e\x20\xa2\x82\x21\x6e\xc9\xf2\x4b\xe8\x4e\xa2\x30\x04\xdd\x84\xfb\xf2\x26\x18\xbd\xc2\x04\xb5\xaa\x33\xa2\xd0\x86\x5d\xcf\x82\x81\x17\xfb\x08\xb0\xa0\x2d\x39\xca\xdf\x3c\x8f\x99\x1e\x40\xbd\xc0\x6e\xcd\xd6\x0c\xe4\x58\xed\x9a\xd5\xe7\xcf\xaf\x3e\x06\xc3\x71\x95\xf2\xbc\xe2\x21\xd0\x8f\x5c\x4c\x73\x1a\x9b\xc8\x29\x2a\xcb\x89\x45\x8d\x74\xa6\x4e\xf7\xf4\xb9\x44\x47\xaa\x9d\xd3\x38\xc8\x64\x8f\x91\x53\xb3\x6e\x7f\xc1\x80\x48\xed\x9f\x1c\x41\x20\x8a\x06\x69\x58\x4f\x10\xbb\xe7\x5b\x32\xb8\xb0\xdb\xcf\xc9\x58\x60\xb2\x0d\xf6\x5a\x5b\x05\xfb\x81\xcb\xdf\xf7\xf6\x5a\x13\x63\x34\x32\x49\x7d\x1e\x88\x11\xb8\x05\x1d\x45\x68\xba\xd1\x8a\x62\x4c\x54\xec\x5a\x2e\xee\x56\x2e\x5b\x28\x88\x33\x2c\xa8\x31\xa1\xc6\x3d\x7e\x33\x20\x0b\x46\x4e\x03\x93\x8d\x48\x18\x59\xbf\x0a\xed\x87\x37\xc4\x49\x92\xb3\x10\x09\x22\xea\x3c\x25\x93\x80\xfc\x9b\xd0\x22\x40\xfe\x16\x47\xe2\x88\x1a\xfb\x3f\xaf\x6b\x40\xd1\xca\xe5\x90\xcd\xa6\x4d\xdd\x38\xfd\xa6\x24\xa9\x20\x19\x34\x3e\xdb\x23\xbd\x41\x2b\x05\x91\x67\x78\x77\xa9\x40\x9f\x0a\xff\x36\xe2\x50\x72\x4a\x01\x36\x96\xa1\xbd\x4e\x44\x45\x5d\x69\x59\x4c\xaa\xa3\x82\xee\x83\x30\x00\x46\x23\x36\x76\x3a\x62\xda\x63\x5c\xba\x1e\xe0\x1e\x05\xa9\xbe\x4b\xe0\xea\x7d\xf3\x82\x61\xc0\xc9\x35\x0a\x03\x65\x48\x6b\x26\xad\x0d\xe8\x25\x71\xdf\x34\x09\xdb\x53\xac\x5d\xe8\xf6\xff\xcf\x3d\xbf\xad\x20\x96\x86\xef\x3a\x4f\xbe\xa5\x4e\x2b\x85\x87\x93\xd2\x29\x25\x5d\x26\x0f\xac\x22\xc8\xb6\x4e\xda\x65\x34\xbe\x9a\x5c\x42\xd1\x93\x34\x4d\x13\xf3\x2a\x0f\x6a\x84\x64\x52\xbd\xfb\x71\xe5\x7d\x97\x47\xdc\x02\x7e\x88\x99\x8b\xc8\x56\xe4\x19\x59\xd4\xc3\x57\xf3\xab\x24\x9b\x7c\x15\x57\xc3\x20\x8a\x64\xa1\x9e\x39\x1a\xaa\x61\x3c\xba\xfe\x81\xd2\xe5\xb5\x6d\xbf\x09\xd2\x6a\x08\x18\x0b\x81\x1a\xe7\x3f\xce\x0f\x20\x2b\x09\xeb\x35\x74\x37\xb4\x22\x1c\x97\x81\x0f\xfc\xb5\xe9\x6c\x11\x77\xf5\x13\x9a\xe3\x48\x99\xc7\x35\xeb\x05\x9f\x8a\x4b\x9d\xb5\x5f\x42\x60\xb5\x0d\x55\x78\x88\x50\xbc\x28\x7f\xf7\x36\x01\x04\xff\x87\x6f\x62\x25\x4e\xfc\x4d\x5a\x53\xa1\xfc\xb2\x94\x13\xce\x69\xf7\x66\xf0\xd3\xc0\x97\xbe\x4f\xfd\x9f\x96\xf9\x6c\x0f\x69\xfa\x70\x85\xd1\x0e\xe5\xcc\x3d\x95\xb8\xbc\xac\xef\xcc\x43\x44\x9e\xd6\x1c\xc5\xaa\xd0\x0e\xae\x2a\xc5\xc3\x58\x87\x62\x92\xe4\x15\xf1\x8e\xbe\xe7\x69\x01\x43\x71\x13\x3c\x6c\xfd\xae\x4d\xbd\x30\xc1\x15\xeb\xeb\x85\xaa\x9a\x12\x48\xfa\x07\x07\xfe\xed\x10\xd8\x0b\xdb\x5d\x7a\xf6\xfa\x6b\xc1\x99\xe6\x3d\x5b\x2a\x02\x89\xd7\xe1\x1a\xe8\x5c\x68\x41\xa2\xa6\x71\x09\x71\xd8\x49\xb9\xff\x86\x08\x1f\x3c\xec\x43\xc1\x03\x80\x50\x1c\x58\xc5\xcf\x8f\x7f\xf9\xed\x99\x28\x25\x99\x4e\x78\x1f\x80\x5f\xc5\xeb\xea\xca\xeb\x05\x22\x69\xdc\x66\xf6\x61\x4f\x93\xec\x15\xe2\x4e\x9a\x11\xa2\x5a\xf4\x6c\x63\x40\x35\x89\x05\xc3\xfc\xcd\xb1\x82\x82\x47\x33\x0b\x11\x33\x6e\x53\xff\x50\xce\x99\xb4\xdd\x4d\x3e\xb2\x11\x36\x47\xaf\x88\xeb\x6a\x5b\x54\xc3\x32\x4a\x28\x65\xbd\x1f\x16\xdf\x43\x4d\xdc\x66\xef\x03\x16\x47\xc0\x73\x1e\x99\xa6\xa3\x6a\x83\x9e\xa9\x81\x65\xdd\xa9\xf7\x73\x03\x0c\x40\x57\x97\xa7\xb4\xed\xa7\x0f\xb7\x59\x7c\x9c\x93\x56\x32\xe5\xd6\xd3\x63\xdf\x23\x45\xaf\x21\xba\x8e\x79\x5b\x30\xa2\x92\x34\x44\x83\x9b\x7c\x1f\x51\x13\x84\xde\xed\xb6\x22\xa1\x9b\xc4\xb0\x49\x90\x37\x96\x8e\xe4\xbc\x67\x2c\x4d\x9a\xa7\x01\xad\xbc\x04\xf1\x70\x72\xdc\x45\x6d\x55\xf5\x60\x1a\x28\x80\xd1\x51\xcf\x47\x01\x33\x2b\x10\xd3\xab\xdd\x9d\xe7\x32\x8c\x50\x9e\x46\x0a\xe2\xfb\x7e\xfb\xf5\xef\x6f\xbe\xca\xaf\x7f\xff\xb5\x7f\xfe\x99\x7f\x7f\x39\x63\xe7\x5d\xff\xfb\xed\x6e\xf6\x9f\x5b\x69\x88\x1d\x27\xa1\x64\x81\x27\x3a\x85\x00\x23\xf0\x92\xa4\x1a\x2d\x69\xf9\xaf\x19\xa8\x22\x6c\xeb\x9c\x8c\xe2\x43\xbc\xb6\x80\xec\xd2\xe4\xe0\x01\x1e\x58\x7f\x7c\xdd\xfe\xe7\xa7\x43\x06\x37\x14\xb5\xd2\x98\x94\x18\x32\x67\xae\x1c\x5f\xd5\x1c\x63\xce\x7f\x57\x02\x6e\xe2\xa4\x0c\x0e\x6e\x9c\x01\x1d\x43\x94\x37\x09\x66\xd4\x12\xb0\x57\xe8\x6f\xf0\xb7\xaf\xf2\xeb\x6f\xed\xf5\x3f\x57\x58\xe9\xa1\x53\xdc\xa1\x0d\xdc\x83\xb0\x85\x3d\x2e\xc2\x1b\x49\xb7\xe6\xf4\xaf\xd7\xf6\xe8\x86\x4f\xd9\xf3\x25\x70\x06\x27\xa6\x46\x4a\xef\x05\xcd\x3e\x79\xfa\xcf\x9f\xbe\x7e\x67\xde\x48\xe5\xc9\xa3\x4b\xe7\x37\x88\x29\x8d\x59\x79\x8c\x4b\xbd\xb2\xc6\x11\x60\x56\xd5\x64\x15\x8b\x0c\x95\x65\x5f\x0e\x50\x16\x00\xb7\xaf\xfb\x16\x83\xae\x71\x69\xf6\xb4\x0b\x36\xc3\xd2\x27\xf1\x96\x72\xbf\x31\x1b\x04\xb0\x1c\x13\x0c\x66\x4c\xcf\xae\xd8\x33\x9f\xe2\x09\xb3\x77\x08\x22\xac\x82\xa3\x28\x6d\x70\x06\xd4\xc8\x40\xf1\xaf\x02\xb5\x7b\x0b\x5b\x62\x73\x56\x90\x3e\xa5\x8e\x4f\xff\xb5\x9e\x89\xf2\x6e\x69\xa4\xf4\xde\xad\x84\x15\x3d\xa5\x03\xa2\x28\x87\x6c\x29\xae\x77\x36\xa2\x87\xbc\x6c\xa5\x54\x6b\x5d\x72\x93\xbf\xd5\xbe\x37\x22\x69\x12\x9e\xe3\x3d\xc4\x13\xdc\xdd\x00\xb6\x1e\x14\x2e\xe8\x4f\x84\xb9\x07\xd3\xb0\x33\xf2\xc6\x63\xcf\x74\xae\x9d\xc3\x78\x91\x08\xc8\x32\x21\x89\xfb\x84\x2b\xa3\xce\x80\x02\xf1\xc9\x3f\xff\xfa\xff\x1b\xed\xb6\x82\x10\x63\x3a\x90\xf3\x6d\xaa\x5e\xb8\xc5\x3f\xa6\x29\xf3\x9a\x6f\x65\x41\x75\x5e\x4b\x1d\x8f\xe3\xc3\x57\x8c\x88\x15\xc1\x36\xf1\x93\x8a\xc4\x1f\xc8\xc6\x60\xf8\xe5\xae\x45\x62\x03\x3c\xf2\xb7\x68\xa6\x67\xcb\xe9\xb9\xd5\xbb\x84\x17\x51\x61\xca\x0a\x21\xe4\x69\x2e\x7a\x70\x06\xa1\x3d\x3b\xaa\x00\xe1\x44\x8f\x63\x81\x2f\x7b\x0f\x38\xbe\x83\x3f\xe2\x6b\xe4\xb1\xcb\x1e\xf7\xd5\xee\xc9\x05\x01\x8c\x44\x24\xf3\x6b\xfe\x03\x5a\x23\xaa\xa3\xa0\x3d\x79\x39\x9a\xc7\xa8\xa5\x09\x79\x04\x26\x37\x6c\x38\xdd\x00\x05\x19\x70\x81\x18\x09\xb7\xeb\xc3\xb3\xf0\x5f\x03\xe9\x58\x5c\xf4\xe3\xbd\xac\x2d\xbf\x99\xc7\x15\x03\xf7\xb0\x5f\xe9\x23\xc6\xb2\x06\xe7\xad\x3f\x06\x8f\x52\x94\xcd\x4b\x2e\x94\x43\x02\x68\xa4\xfd\x85\x98\x0e\x8d\x00\x1b\xf8\xfa\xd2\xd3\xd1\xf0\xd9\xd5\x9d\x0a\xf4\x2c\x4f\xd8\xd5\x8d\x1a\xcd\x04\x7f\x0c\xcc\x0c\x0d\x30\x38\x20\x41\x46\x26\x19\x4d\xe4\x54\x15\x3a\x9c\xce\x89\x86\xab\xbf\x16\x06\x2f\x6b\x7d\x98\x1f\xb4\xe8\x6e\x92\xd9\xc4\x23\xf9\xe8\x12\xb4\xcf\xf8\x36\x13\x5d\x01\xd2\x93\x94\x37\x88\xf4\x02\x02\xfd\xb5\x83\xcc\x75\xc9\x8c\xd3\x0a\x0a\x09\x5a\xe7\xf6\x43\x50\xb2\x95\x2b\x09\x09\xa2\x33\xc3\x82\xca\x36\x32\xfa\x86\x8a\x2b\x8c\x34\x4b\x02\x5c\xfa\xe4\x3b\xad\x76\xf5\x1e\xc7\x99\xef\x63\xc7\x3e\x6b\x1b\xc9\xf4\x02\xa8\xe0\x9a\xe8\x7e\xf3\x35\xc1\xd1\x19\xaa\x23\x1a" func swJsBrBytes() ([]byte, error) { return bindataRead( @@ -581,7 +581,7 @@ func swJsBr() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "sw.js.br", size: 5320, mode: os.FileMode(438), modTime: time.Unix(1590213364, 0)} + info := bindataFileInfo{name: "sw.js.br", size: 5320, mode: os.FileMode(438), modTime: time.Unix(1590297298, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -601,7 +601,7 @@ func vendorsConnect094632f04f7ec2bce0feJsBr() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "vendors~connect.094632f04f7ec2bce0fe.js.br", size: 12180, mode: os.FileMode(438), modTime: time.Unix(1590213364, 0)} + info := bindataFileInfo{name: "vendors~connect.094632f04f7ec2bce0fe.js.br", size: 12180, mode: os.FileMode(438), modTime: time.Unix(1590297298, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -621,47 +621,47 @@ func vendorsConnect1512be5821b96a02b759JsLicenseTxt() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "vendors~connect.1512be5821b96a02b759.js.LICENSE.txt", size: 246, mode: os.FileMode(438), modTime: time.Unix(1590213362, 0)} + info := bindataFileInfo{name: "vendors~connect.1512be5821b96a02b759.js.LICENSE.txt", size: 246, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _vendorsMain051a0058d7481ca04f8dJsLicenseTxt = "\x2f\x2a\x0a\x6f\x62\x6a\x65\x63\x74\x2d\x61\x73\x73\x69\x67\x6e\x0a\x28\x63\x29\x20\x53\x69\x6e\x64\x72\x65\x20\x53\x6f\x72\x68\x75\x73\x0a\x40\x6c\x69\x63\x65\x6e\x73\x65\x20\x4d\x49\x54\x0a\x2a\x2f\x0a\x0a\x2f\x2a\x21\x0a\x20\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x63\x29\x20\x32\x30\x31\x37\x20\x4a\x65\x64\x20\x57\x61\x74\x73\x6f\x6e\x2e\x0a\x20\x20\x4c\x69\x63\x65\x6e\x73\x65\x64\x20\x75\x6e\x64\x65\x72\x20\x74\x68\x65\x20\x4d\x49\x54\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\x28\x4d\x49\x54\x29\x2c\x20\x73\x65\x65\x0a\x20\x20\x68\x74\x74\x70\x3a\x2f\x2f\x6a\x65\x64\x77\x61\x74\x73\x6f\x6e\x2e\x67\x69\x74\x68\x75\x62\x2e\x69\x6f\x2f\x63\x6c\x61\x73\x73\x6e\x61\x6d\x65\x73\x0a\x2a\x2f\x0a\x0a\x2f\x2a\x21\x0a\x20\x2a\x20\x4a\x61\x76\x61\x53\x63\x72\x69\x70\x74\x20\x43\x6f\x6f\x6b\x69\x65\x20\x76\x32\x2e\x32\x2e\x31\x0a\x20\x2a\x20\x68\x74\x74\x70\x73\x3a\x2f\x2f\x67\x69\x74\x68\x75\x62\x2e\x63\x6f\x6d\x2f\x6a\x73\x2d\x63\x6f\x6f\x6b\x69\x65\x2f\x6a\x73\x2d\x63\x6f\x6f\x6b\x69\x65\x0a\x20\x2a\x0a\x20\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x32\x30\x30\x36\x2c\x20\x32\x30\x31\x35\x20\x4b\x6c\x61\x75\x73\x20\x48\x61\x72\x74\x6c\x20\x26\x20\x46\x61\x67\x6e\x65\x72\x20\x42\x72\x61\x63\x6b\x0a\x20\x2a\x20\x52\x65\x6c\x65\x61\x73\x65\x64\x20\x75\x6e\x64\x65\x72\x20\x74\x68\x65\x20\x4d\x49\x54\x20\x6c\x69\x63\x65\x6e\x73\x65\x0a\x20\x2a\x2f\x0a\x0a\x2f\x2a\x2a\x20\x40\x6c\x69\x63\x65\x6e\x73\x65\x20\x52\x65\x61\x63\x74\x20\x76\x30\x2e\x31\x39\x2e\x31\x0a\x20\x2a\x20\x73\x63\x68\x65\x64\x75\x6c\x65\x72\x2e\x70\x72\x6f\x64\x75\x63\x74\x69\x6f\x6e\x2e\x6d\x69\x6e\x2e\x6a\x73\x0a\x20\x2a\x0a\x20\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x63\x29\x20\x46\x61\x63\x65\x62\x6f\x6f\x6b\x2c\x20\x49\x6e\x63\x2e\x20\x61\x6e\x64\x20\x69\x74\x73\x20\x61\x66\x66\x69\x6c\x69\x61\x74\x65\x73\x2e\x0a\x20\x2a\x0a\x20\x2a\x20\x54\x68\x69\x73\x20\x73\x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x69\x73\x20\x6c\x69\x63\x65\x6e\x73\x65\x64\x20\x75\x6e\x64\x65\x72\x20\x74\x68\x65\x20\x4d\x49\x54\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x66\x6f\x75\x6e\x64\x20\x69\x6e\x20\x74\x68\x65\x0a\x20\x2a\x20\x4c\x49\x43\x45\x4e\x53\x45\x20\x66\x69\x6c\x65\x20\x69\x6e\x20\x74\x68\x65\x20\x72\x6f\x6f\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x73\x6f\x75\x72\x63\x65\x20\x74\x72\x65\x65\x2e\x0a\x20\x2a\x2f\x0a\x0a\x2f\x2a\x2a\x20\x40\x6c\x69\x63\x65\x6e\x73\x65\x20\x52\x65\x61\x63\x74\x20\x76\x31\x36\x2e\x31\x33\x2e\x31\x0a\x20\x2a\x20\x72\x65\x61\x63\x74\x2d\x64\x6f\x6d\x2e\x70\x72\x6f\x64\x75\x63\x74\x69\x6f\x6e\x2e\x6d\x69\x6e\x2e\x6a\x73\x0a\x20\x2a\x0a\x20\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x63\x29\x20\x46\x61\x63\x65\x62\x6f\x6f\x6b\x2c\x20\x49\x6e\x63\x2e\x20\x61\x6e\x64\x20\x69\x74\x73\x20\x61\x66\x66\x69\x6c\x69\x61\x74\x65\x73\x2e\x0a\x20\x2a\x0a\x20\x2a\x20\x54\x68\x69\x73\x20\x73\x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x69\x73\x20\x6c\x69\x63\x65\x6e\x73\x65\x64\x20\x75\x6e\x64\x65\x72\x20\x74\x68\x65\x20\x4d\x49\x54\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x66\x6f\x75\x6e\x64\x20\x69\x6e\x20\x74\x68\x65\x0a\x20\x2a\x20\x4c\x49\x43\x45\x4e\x53\x45\x20\x66\x69\x6c\x65\x20\x69\x6e\x20\x74\x68\x65\x20\x72\x6f\x6f\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x73\x6f\x75\x72\x63\x65\x20\x74\x72\x65\x65\x2e\x0a\x20\x2a\x2f\x0a\x0a\x2f\x2a\x2a\x20\x40\x6c\x69\x63\x65\x6e\x73\x65\x20\x52\x65\x61\x63\x74\x20\x76\x31\x36\x2e\x31\x33\x2e\x31\x0a\x20\x2a\x20\x72\x65\x61\x63\x74\x2d\x69\x73\x2e\x70\x72\x6f\x64\x75\x63\x74\x69\x6f\x6e\x2e\x6d\x69\x6e\x2e\x6a\x73\x0a\x20\x2a\x0a\x20\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x63\x29\x20\x46\x61\x63\x65\x62\x6f\x6f\x6b\x2c\x20\x49\x6e\x63\x2e\x20\x61\x6e\x64\x20\x69\x74\x73\x20\x61\x66\x66\x69\x6c\x69\x61\x74\x65\x73\x2e\x0a\x20\x2a\x0a\x20\x2a\x20\x54\x68\x69\x73\x20\x73\x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x69\x73\x20\x6c\x69\x63\x65\x6e\x73\x65\x64\x20\x75\x6e\x64\x65\x72\x20\x74\x68\x65\x20\x4d\x49\x54\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x66\x6f\x75\x6e\x64\x20\x69\x6e\x20\x74\x68\x65\x0a\x20\x2a\x20\x4c\x49\x43\x45\x4e\x53\x45\x20\x66\x69\x6c\x65\x20\x69\x6e\x20\x74\x68\x65\x20\x72\x6f\x6f\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x73\x6f\x75\x72\x63\x65\x20\x74\x72\x65\x65\x2e\x0a\x20\x2a\x2f\x0a\x0a\x2f\x2a\x2a\x20\x40\x6c\x69\x63\x65\x6e\x73\x65\x20\x52\x65\x61\x63\x74\x20\x76\x31\x36\x2e\x31\x33\x2e\x31\x0a\x20\x2a\x20\x72\x65\x61\x63\x74\x2e\x70\x72\x6f\x64\x75\x63\x74\x69\x6f\x6e\x2e\x6d\x69\x6e\x2e\x6a\x73\x0a\x20\x2a\x0a\x20\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x63\x29\x20\x46\x61\x63\x65\x62\x6f\x6f\x6b\x2c\x20\x49\x6e\x63\x2e\x20\x61\x6e\x64\x20\x69\x74\x73\x20\x61\x66\x66\x69\x6c\x69\x61\x74\x65\x73\x2e\x0a\x20\x2a\x0a\x20\x2a\x20\x54\x68\x69\x73\x20\x73\x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x69\x73\x20\x6c\x69\x63\x65\x6e\x73\x65\x64\x20\x75\x6e\x64\x65\x72\x20\x74\x68\x65\x20\x4d\x49\x54\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x66\x6f\x75\x6e\x64\x20\x69\x6e\x20\x74\x68\x65\x0a\x20\x2a\x20\x4c\x49\x43\x45\x4e\x53\x45\x20\x66\x69\x6c\x65\x20\x69\x6e\x20\x74\x68\x65\x20\x72\x6f\x6f\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x73\x6f\x75\x72\x63\x65\x20\x74\x72\x65\x65\x2e\x0a\x20\x2a\x2f\x0a" +var _vendorsMain038942b3105c7128ab91JsLicenseTxt = "\x2f\x2a\x0a\x6f\x62\x6a\x65\x63\x74\x2d\x61\x73\x73\x69\x67\x6e\x0a\x28\x63\x29\x20\x53\x69\x6e\x64\x72\x65\x20\x53\x6f\x72\x68\x75\x73\x0a\x40\x6c\x69\x63\x65\x6e\x73\x65\x20\x4d\x49\x54\x0a\x2a\x2f\x0a\x0a\x2f\x2a\x21\x0a\x20\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x63\x29\x20\x32\x30\x31\x37\x20\x4a\x65\x64\x20\x57\x61\x74\x73\x6f\x6e\x2e\x0a\x20\x20\x4c\x69\x63\x65\x6e\x73\x65\x64\x20\x75\x6e\x64\x65\x72\x20\x74\x68\x65\x20\x4d\x49\x54\x20\x4c\x69\x63\x65\x6e\x73\x65\x20\x28\x4d\x49\x54\x29\x2c\x20\x73\x65\x65\x0a\x20\x20\x68\x74\x74\x70\x3a\x2f\x2f\x6a\x65\x64\x77\x61\x74\x73\x6f\x6e\x2e\x67\x69\x74\x68\x75\x62\x2e\x69\x6f\x2f\x63\x6c\x61\x73\x73\x6e\x61\x6d\x65\x73\x0a\x2a\x2f\x0a\x0a\x2f\x2a\x21\x0a\x20\x2a\x20\x4a\x61\x76\x61\x53\x63\x72\x69\x70\x74\x20\x43\x6f\x6f\x6b\x69\x65\x20\x76\x32\x2e\x32\x2e\x31\x0a\x20\x2a\x20\x68\x74\x74\x70\x73\x3a\x2f\x2f\x67\x69\x74\x68\x75\x62\x2e\x63\x6f\x6d\x2f\x6a\x73\x2d\x63\x6f\x6f\x6b\x69\x65\x2f\x6a\x73\x2d\x63\x6f\x6f\x6b\x69\x65\x0a\x20\x2a\x0a\x20\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x32\x30\x30\x36\x2c\x20\x32\x30\x31\x35\x20\x4b\x6c\x61\x75\x73\x20\x48\x61\x72\x74\x6c\x20\x26\x20\x46\x61\x67\x6e\x65\x72\x20\x42\x72\x61\x63\x6b\x0a\x20\x2a\x20\x52\x65\x6c\x65\x61\x73\x65\x64\x20\x75\x6e\x64\x65\x72\x20\x74\x68\x65\x20\x4d\x49\x54\x20\x6c\x69\x63\x65\x6e\x73\x65\x0a\x20\x2a\x2f\x0a\x0a\x2f\x2a\x2a\x20\x40\x6c\x69\x63\x65\x6e\x73\x65\x20\x52\x65\x61\x63\x74\x20\x76\x30\x2e\x31\x39\x2e\x31\x0a\x20\x2a\x20\x73\x63\x68\x65\x64\x75\x6c\x65\x72\x2e\x70\x72\x6f\x64\x75\x63\x74\x69\x6f\x6e\x2e\x6d\x69\x6e\x2e\x6a\x73\x0a\x20\x2a\x0a\x20\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x63\x29\x20\x46\x61\x63\x65\x62\x6f\x6f\x6b\x2c\x20\x49\x6e\x63\x2e\x20\x61\x6e\x64\x20\x69\x74\x73\x20\x61\x66\x66\x69\x6c\x69\x61\x74\x65\x73\x2e\x0a\x20\x2a\x0a\x20\x2a\x20\x54\x68\x69\x73\x20\x73\x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x69\x73\x20\x6c\x69\x63\x65\x6e\x73\x65\x64\x20\x75\x6e\x64\x65\x72\x20\x74\x68\x65\x20\x4d\x49\x54\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x66\x6f\x75\x6e\x64\x20\x69\x6e\x20\x74\x68\x65\x0a\x20\x2a\x20\x4c\x49\x43\x45\x4e\x53\x45\x20\x66\x69\x6c\x65\x20\x69\x6e\x20\x74\x68\x65\x20\x72\x6f\x6f\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x73\x6f\x75\x72\x63\x65\x20\x74\x72\x65\x65\x2e\x0a\x20\x2a\x2f\x0a\x0a\x2f\x2a\x2a\x20\x40\x6c\x69\x63\x65\x6e\x73\x65\x20\x52\x65\x61\x63\x74\x20\x76\x31\x36\x2e\x31\x33\x2e\x31\x0a\x20\x2a\x20\x72\x65\x61\x63\x74\x2d\x64\x6f\x6d\x2e\x70\x72\x6f\x64\x75\x63\x74\x69\x6f\x6e\x2e\x6d\x69\x6e\x2e\x6a\x73\x0a\x20\x2a\x0a\x20\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x63\x29\x20\x46\x61\x63\x65\x62\x6f\x6f\x6b\x2c\x20\x49\x6e\x63\x2e\x20\x61\x6e\x64\x20\x69\x74\x73\x20\x61\x66\x66\x69\x6c\x69\x61\x74\x65\x73\x2e\x0a\x20\x2a\x0a\x20\x2a\x20\x54\x68\x69\x73\x20\x73\x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x69\x73\x20\x6c\x69\x63\x65\x6e\x73\x65\x64\x20\x75\x6e\x64\x65\x72\x20\x74\x68\x65\x20\x4d\x49\x54\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x66\x6f\x75\x6e\x64\x20\x69\x6e\x20\x74\x68\x65\x0a\x20\x2a\x20\x4c\x49\x43\x45\x4e\x53\x45\x20\x66\x69\x6c\x65\x20\x69\x6e\x20\x74\x68\x65\x20\x72\x6f\x6f\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x73\x6f\x75\x72\x63\x65\x20\x74\x72\x65\x65\x2e\x0a\x20\x2a\x2f\x0a\x0a\x2f\x2a\x2a\x20\x40\x6c\x69\x63\x65\x6e\x73\x65\x20\x52\x65\x61\x63\x74\x20\x76\x31\x36\x2e\x31\x33\x2e\x31\x0a\x20\x2a\x20\x72\x65\x61\x63\x74\x2d\x69\x73\x2e\x70\x72\x6f\x64\x75\x63\x74\x69\x6f\x6e\x2e\x6d\x69\x6e\x2e\x6a\x73\x0a\x20\x2a\x0a\x20\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x63\x29\x20\x46\x61\x63\x65\x62\x6f\x6f\x6b\x2c\x20\x49\x6e\x63\x2e\x20\x61\x6e\x64\x20\x69\x74\x73\x20\x61\x66\x66\x69\x6c\x69\x61\x74\x65\x73\x2e\x0a\x20\x2a\x0a\x20\x2a\x20\x54\x68\x69\x73\x20\x73\x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x69\x73\x20\x6c\x69\x63\x65\x6e\x73\x65\x64\x20\x75\x6e\x64\x65\x72\x20\x74\x68\x65\x20\x4d\x49\x54\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x66\x6f\x75\x6e\x64\x20\x69\x6e\x20\x74\x68\x65\x0a\x20\x2a\x20\x4c\x49\x43\x45\x4e\x53\x45\x20\x66\x69\x6c\x65\x20\x69\x6e\x20\x74\x68\x65\x20\x72\x6f\x6f\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x73\x6f\x75\x72\x63\x65\x20\x74\x72\x65\x65\x2e\x0a\x20\x2a\x2f\x0a\x0a\x2f\x2a\x2a\x20\x40\x6c\x69\x63\x65\x6e\x73\x65\x20\x52\x65\x61\x63\x74\x20\x76\x31\x36\x2e\x31\x33\x2e\x31\x0a\x20\x2a\x20\x72\x65\x61\x63\x74\x2e\x70\x72\x6f\x64\x75\x63\x74\x69\x6f\x6e\x2e\x6d\x69\x6e\x2e\x6a\x73\x0a\x20\x2a\x0a\x20\x2a\x20\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x20\x28\x63\x29\x20\x46\x61\x63\x65\x62\x6f\x6f\x6b\x2c\x20\x49\x6e\x63\x2e\x20\x61\x6e\x64\x20\x69\x74\x73\x20\x61\x66\x66\x69\x6c\x69\x61\x74\x65\x73\x2e\x0a\x20\x2a\x0a\x20\x2a\x20\x54\x68\x69\x73\x20\x73\x6f\x75\x72\x63\x65\x20\x63\x6f\x64\x65\x20\x69\x73\x20\x6c\x69\x63\x65\x6e\x73\x65\x64\x20\x75\x6e\x64\x65\x72\x20\x74\x68\x65\x20\x4d\x49\x54\x20\x6c\x69\x63\x65\x6e\x73\x65\x20\x66\x6f\x75\x6e\x64\x20\x69\x6e\x20\x74\x68\x65\x0a\x20\x2a\x20\x4c\x49\x43\x45\x4e\x53\x45\x20\x66\x69\x6c\x65\x20\x69\x6e\x20\x74\x68\x65\x20\x72\x6f\x6f\x74\x20\x64\x69\x72\x65\x63\x74\x6f\x72\x79\x20\x6f\x66\x20\x74\x68\x69\x73\x20\x73\x6f\x75\x72\x63\x65\x20\x74\x72\x65\x65\x2e\x0a\x20\x2a\x2f\x0a" -func vendorsMain051a0058d7481ca04f8dJsLicenseTxtBytes() ([]byte, error) { +func vendorsMain038942b3105c7128ab91JsLicenseTxtBytes() ([]byte, error) { return bindataRead( - _vendorsMain051a0058d7481ca04f8dJsLicenseTxt, - "vendors~main.051a0058d7481ca04f8d.js.LICENSE.txt", + _vendorsMain038942b3105c7128ab91JsLicenseTxt, + "vendors~main.038942b3105c7128ab91.js.LICENSE.txt", ) } -func vendorsMain051a0058d7481ca04f8dJsLicenseTxt() (*asset, error) { - bytes, err := vendorsMain051a0058d7481ca04f8dJsLicenseTxtBytes() +func vendorsMain038942b3105c7128ab91JsLicenseTxt() (*asset, error) { + bytes, err := vendorsMain038942b3105c7128ab91JsLicenseTxtBytes() if err != nil { return nil, err } - info := bindataFileInfo{name: "vendors~main.051a0058d7481ca04f8d.js.LICENSE.txt", size: 1329, mode: os.FileMode(438), modTime: time.Unix(1590213362, 0)} + info := bindataFileInfo{name: "vendors~main.038942b3105c7128ab91.js.LICENSE.txt", size: 1329, mode: os.FileMode(438), modTime: time.Unix(1590297296, 0)} a := &asset{bytes: bytes, info: info} return a, nil } -var _vendorsMainAe0f2cccfec3e701a045JsBr = "\x5b\x0e\xcb\x73\x04\x5b\x63\xdb\x03\x6a\xd6\xa5\xdb\x10\xe8\x81\xa8\x9a\x6d\xeb\x76\x05\x53\xb8\x76\xd0\x9d\xd4\xca\xe8\xc4\xed\x3b\xb9\x06\x6f\x38\xa2\x77\xc8\x5d\x80\x90\xff\xd6\x6e\x09\x00\x54\x55\x55\xcd\x4a\x3a\x86\x68\xa2\x5b\x40\x55\x85\xae\xfd\xfe\x43\x46\x62\xa7\x06\x75\x77\x08\xc6\x3e\x30\x0a\xc6\xcd\x27\xc6\xea\xfb\xd0\xee\x68\x01\x9b\x86\x74\x83\x28\x8a\xd7\x40\x9c\xbe\x91\x36\x37\x1a\x62\xf5\xcf\x9e\x98\x82\x71\xdb\x09\x4f\xf5\x4d\xf3\x3a\xba\xfc\x58\xec\xd3\x0c\xaa\x3c\x50\x22\xed\x2a\x24\x4c\x1d\xce\x22\xf5\x5c\x68\x4b\x83\xf3\xde\x23\x17\x22\x60\xdd\x48\x55\xee\xd0\x18\x9f\xa6\xa2\xc1\x60\x2c\x6a\xb4\xd9\xad\xd0\xf0\xa0\xf7\x70\xb8\xe1\x6c\xaf\x0b\x5c\x12\xfc\xba\x0b\xd6\x38\x5d\x30\x5e\x99\x70\x4a\xea\x81\x48\x43\x48\x38\x10\x54\x39\x4f\x72\xee\x62\x63\xb1\x78\x07\x59\x53\xf0\x8d\x9e\x86\x93\x86\xb5\x8c\x54\x33\x46\xc3\xa1\xbb\x47\xb1\x85\x70\x58\xdc\xc4\x4b\x41\xc3\x2f\x1d\xc3\x18\x86\x09\xc1\xad\xb6\xbf\xe6\x86\x6a\x6e\xa3\x10\x0d\x15\x36\x54\x7a\x6a\x7e\x10\xaf\xd6\x6b\xbe\x55\xbf\xfe\x0e\xaa\xd1\x57\x10\xfe\xfe\x31\x6b\xf4\x76\xe3\x05\x83\xc6\x7b\x19\x04\xd5\x4d\x3c\xf8\xad\x11\x07\x1e\x0c\x57\x49\x74\x7f\xab\x9e\x3f\xfc\xb0\xbd\x04\xc4\x71\xeb\x09\x94\x88\x16\xbd\xda\xd8\x27\xe2\x1a\x4f\x7c\xe1\x7b\xcb\x4c\x4f\x67\x09\x06\xc3\x12\xdf\x90\x5e\x6e\xff\xbb\xdd\xd7\xec\x1b\x0f\xca\x80\x8e\x95\x85\x03\x68\x34\xd9\xba\x2b\xda\xab\xe5\x5b\xb5\x7f\xf5\x62\x06\xf0\x60\x8f\xb8\x1c\x09\x9a\xaa\xa0\x99\x7b\x73\x1e\x95\xc9\x41\x3d\x8f\xfb\x5d\x21\x0e\x4a\x1d\x54\xf8\xf3\x75\xd6\xd7\x6f\xfc\xb6\x79\x6f\x56\x87\x0b\x36\x81\xab\x94\x52\x4d\xd6\xa3\xd8\x0f\x10\x18\xc9\x91\x25\xea\xe4\xaf\xf6\x6a\xdd\xf7\x72\x12\xcf\x1a\xfc\x3a\x3c\x10\xcc\xfc\x5b\x79\x26\x1e\x4b\xda\xb8\x66\x1c\xbb\x3e\xda\x89\x17\xb0\x82\xa1\x2d\xb3\x46\xb4\x86\x6e\x22\x3b\x6e\xe6\x70\x3b\xac\x7d\xbe\xa9\x7e\xfd\x16\x18\xcf\xe6\xa5\x8c\x1a\x3c\xca\x76\x4e\x4c\x6a\x3b\xc7\x71\x6b\x10\x09\x94\x58\xd3\xa0\x0a\x02\xb2\xe3\x6e\x7d\xf3\xd5\xaa\xaf\xdf\x11\x2f\x49\xd7\xe5\x6b\xca\xee\x58\x5b\xda\x90\x92\x37\xa1\x29\xc8\x62\x0d\x05\xa8\xc1\x07\xef\x78\x54\xb7\x94\xb3\xea\xf5\xdd\x78\x0f\x9c\x45\xbb\xe1\x38\x0f\x37\x0d\xa7\x7b\x66\x16\x38\x27\x17\x2a\x56\xc1\xa9\x54\x86\x9e\xf3\xeb\xb3\x59\xff\xab\xed\x43\xe1\x85\xf8\xa3\xc0\x43\x97\xa3\x43\x0b\x0c\xa6\x71\x15\xb6\x29\x06\xe3\x21\x3a\x88\x6b\x71\x04\x82\xcb\x49\x9c\xca\x34\x36\x44\x99\x36\x4b\x44\x47\xe5\x5e\xf9\xd9\xf5\x33\x2a\x29\x0b\x40\xc7\x83\x5a\x10\x1c\x50\xdf\xd4\xb4\xaf\x6a\xb9\xd0\x0c\xbc\xcf\x09\x00\x92\x00\x01\x1d\xce\xdd\x34\x19\xfd\xdb\xdb\xfe\xf6\x12\xe1\xff\x35\xab\xd7\xd5\xd6\x6d\xc0\xca\xbb\xe6\x2d\x7a\xda\x49\x75\x8a\x19\x97\xc3\xb4\x13\x84\x80\xc6\x57\xe3\x0b\x50\xc4\x9f\xaa\x56\x46\xd1\x3e\x4b\xed\x3d\x5d\x87\x73\x40\xf5\xab\x6d\xf2\x87\xfc\xa0\x16\x36\x66\xfd\x68\x9b\x65\x73\x45\x50\xcb\xca\x9e\x81\x32\xa0\x9f\xaa\xef\xb6\xa6\xf4\xb1\x8d\xd9\x4a\x1b\x26\x48\x82\x4d\xc4\x4f\x82\x8f\x26\xec\xcf\x98\x66\x59\x46\xe9\xca\x4f\x83\x05\x95\x88\xbc\x67\x6b\x3b\x09\xec\x7f\x30\x81\x0e\xd7\x86\xf7\xa3\x0c\x8a\xf7\x7a\x66\x75\x4e\xaa\xe7\x05\x9a\x2c\xda\x9a\x56\x51\xd5\xfe\xf1\x84\xd5\x03\x34\xcf\xb0\xaa\xab\x71\x7a\x29\x80\xdb\x68\x3b\x50\xc0\x40\xe1\xd4\x7d\xfb\xe0\x8b\x30\x35\x1b\xd9\xe3\xf5\x16\x89\x00\x1f\x01\xed\x61\x67\xdb\x74\x44\x90\x6e\x28\xb4\x39\x21\x34\x61\x4b\x08\x85\x99\x2e\xe5\xfb\x7c\xe0\xff\x74\x5a\x79\x5b\x8d\x75\xb4\xcb\xf2\xa1\x74\x28\x27\xb9\x3c\xe5\x79\x81\x8a\xf2\xa8\x2c\x35\x7f\x66\x64\x4b\x1a\xc9\xb6\x6c\x07\x24\x3b\x64\x3b\x60\x08\x2a\xce\x22\x28\xa9\xbc\x7b\x08\x15\x72\xb7\x44\x1d\x74\x07\x4d\x0f\xd8\x5d\x79\xed\x55\x57\x74\xf5\x95\xf7\xff\xf7\x96\x5a\xcd\xf8\x1f\x19\x91\x99\x24\x55\xea\x06\x55\x2a\x37\x56\x1a\xeb\x16\xab\x34\x20\xd5\xed\xd5\x90\xc6\x9b\xc5\x12\xf1\xee\xbd\xef\x32\xbf\x25\xe2\x87\x11\x22\xd2\x14\x33\x81\x44\x0b\x09\x90\x25\xd8\x11\x8b\xa4\xee\x7b\xef\x47\xf2\xff\x1f\x01\x28\x22\x32\x41\xa5\x01\xd5\x40\x82\x55\x03\x52\x9a\x3e\x20\x54\x75\x8a\x52\x69\x1c\x45\x49\xe7\xb4\xda\x18\xbb\xd9\x4b\x55\x35\xa6\xad\x39\xfb\x99\xb3\x9f\xc5\x8e\xda\xa9\x34\xe3\x57\xbd\x9c\xcd\x72\xe0\xeb\x5b\xa6\xb4\x5a\xf1\xd7\xa0\xee\x45\x82\x2b\x76\x23\x74\x36\x47\x17\xe2\xca\x31\x30\x31\x3d\xa3\x83\x0e\x9c\x24\x68\x93\xd4\x68\xad\xad\xd1\x07\xcf\xdc\x03\xe7\x27\x16\x55\xf7\xac\x96\x64\x89\x74\x22\x9e\x89\xa1\xa4\x8d\x35\x45\x87\x55\x73\xda\xc2\xce\xd4\xfa\x13\x32\xe4\xc4\x07\x4a\xa4\xab\x7c\x90\x5d\x61\xdf\x48\x53\xb3\x43\x3c\x6b\x60\x54\x6d\x9f\xcf\xa7\x8b\xa8\xfa\x5f\x9d\x7a\xbd\x38\xe3\xbe\xcd\x09\x82\x20\x38\xa6\x64\xf5\x96\xb1\x2a\xbc\xc7\xd9\xfd\x6b\x3b\x2a\x9f\x10\x20\x84\x90\xa0\x7b\x5d\x86\xe9\x3f\x2e\x7d\x69\x7e\x7b\x6f\x35\xe6\xb8\xcc\x21\x40\x08\xd9\xd9\xfe\x58\xf9\x3d\xe7\xea\x61\x1d\x77\xe5\x14\x41\x04\x42\x08\x16\xec\x87\x67\xbf\xd7\xbe\x73\xc1\x6c\x89\x7f\x0c\x18\xd3\xe6\xc5\xb2\xa5\x42\x4d\x1b\x65\x16\xd4\xd6\x4b\x34\x00\xda\xe7\x09\xff\xfe\x98\x5f\x47\x9c\x56\x76\x2d\xbf\x0a\x79\x24\x4c\xbf\xe8\x7f\x63\xaf\x7d\xbb\x6b\xb3\x79\x4d\xdb\xcc\x44\x40\xbc\x7c\x14\xe4\xa7\xdc\x43\xdf\x35\xf6\xda\xbf\xf4\x6c\xaf\x97\xb4\xaf\x33\x89\x02\x22\xe2\xc2\x5f\xdc\x4f\xe7\x2f\xef\xbc\x49\xa3\x0d\xe5\x17\x07\xca\xd0\x62\x90\xe5\xd9\x4a\x42\xb5\xdf\x9b\x7f\xa8\xf5\xa6\xbb\x26\xbf\x7f\xcb\xad\xff\xf5\x4b\xed\xf2\x67\x19\xd7\x9f\xbf\xfe\x15\x9d\x5f\xd1\x3f\x82\x94\xbd\xf0\x1f\x3b\xf9\x63\xf6\x2f\x00\xe3\x2d\xeb\x03\x22\xa1\x0d\xdb\xd3\xed\x59\x9c\xf4\x25\xe1\xf2\x8d\xe6\x63\xe0\x1d\x04\x2a\x3b\x39\xf6\x0c\xc8\x86\x45\x0d\x06\x50\xf6\xfe\xe8\x9b\xca\x42\xe4\x4c\x4e\x12\x4b\xf4\x1e\x35\xfe\xcf\x91\x6b\x4b\x60\xc1\x34\x25\x7a\x4c\xb1\x80\x35\x0c\xe8\x57\x47\xf5\x7b\xcd\x3b\x86\x03\x78\xe4\x2f\xbe\x42\x62\xdb\xc8\xc2\xf0\x18\x76\xe7\xc2\xb4\x01\x4f\x17\xbf\xeb\x31\x94\x9e\x99\x94\xb8\xe8\xdd\x26\x4d\x8d\xa0\xf8\x9d\x54\x60\xd6\x05\x01\x21\x69\x66\x2f\x42\x0e\x16\xe4\x94\x2e\xb3\x60\x6f\xf4\x65\xf1\xf5\xe9\x22\xf3\x27\xb3\x5e\x3d\xe7\xc9\x54\xcb\xee\x5f\x8e\x50\x8b\x01\x7d\x18\x3c\xfd\xa7\x08\x1a\xa2\xfb\x32\x1f\x92\xe1\x9f\x55\x40\x0e\x75\xaf\x37\x3c\xd1\x00\x7b\x9e\xe3\x6a\x81\x5e\x00\x13\x9f\x7b\x7d\x98\xc8\x7a\x98\x56\x3a\x87\x21\xd8\xe5\x75\xdf\x43\xaa\xc7\x4c\x26\xd3\x2b\x4d\xe8\xad\xad\x7b\xe2\x61\xa8\xc8\x9e\x50\xd2\x96\x99\x90\x99\x1a\x69\xfa\x30\x1d\x67\x5a\xc8\x1c\x42\xcc\xd7\x94\x2f\x02\x08\xba\x64\x8b\xa3\x30\x80\xdf\x4c\xdf\xb3\x0e\x38\x94\x5f\xd3\x01\x7c\xbe\x98\x0f\x09\x55\x8b\x3f\x78\x84\x9c\x6c\x2c\xcb\xfd\xda\x07\x3b\x20\xe0\x68\x9f\x0c\xc5\x23\xfe\x06\x21\x1e\x2f\xee\xe5\xa6\x19\x89\x46\xbf\xd8\x1d\x93\xa5\x46\xec\xb3\xdd\xf4\xd0\xba\x9a\xd9\xc2\x60\xd9\x92\xec\xe7\x19\x8b\x44\x34\x55\xec\xbb\xce\x6a\xb2\xa7\x08\xf9\x6f\x63\x04\x61\x39\xb7\x3d\x76\x14\x3c\x4c\x24\x78\x17\x83\xa8\x64\xd2\x61\x91\x23\x76\xce\x9e\x1b\x22\x95\xc0\xba\xd9\xf8\xbf\xac\x84\xd7\xb9\x6a\x5d\x55\x5a\x14\x89\x0a\x47\x0b\xfd\x5b\xb0\x8e\x05\xa0\xa0\xe6\x9d\xe2\x22\x77\x4c\x92\x1a\xb1\x05\xe0\xd7\x50\x66\x59\xac\x61\x46\x59\x48\x6a\xf6\xb0\x2c\x1b\xd6\xdd\x93\xf0\xa9\xab\xc4\x8a\xc9\x35\x77\x39\xbb\xb4\x6a\x94\xe1\xe2\x93\xd9\xcf\x77\x47\xc3\x14\x10\x60\xd2\xab\x53\xf6\x5a\xf9\x29\xc5\x3e\xa1\x3b\x14\x64\xf0\xa5\x33\x27\x2f\x66\x20\x77\xf4\xe0\x7d\x65\x5f\x7f\x24\x81\x2d\x37\x0b\x4e\x0b\xfc\xa9\x7e\x38\xec\xbf\x5f\x0d\x16\x04\xfd\x84\x74\x87\x03\x8c\xbc\x11\xc4\xda\x2e\x79\x47\x1a\xf3\x8a\x4f\x2f\xc1\xed\x67\x4e\x12\x86\xf5\xea\x25\x93\x8f\x72\x04\x78\x8c\x58\xb8\x3d\x69\x52\x33\x00\x0c\xf7\xd0\x92\x44\x5b\x40\x61\x9e\xf3\x36\x10\xd9\xa9\x7c\xa9\xde\x5a\x85\x36\x3d\xb0\x09\x17\x57\x38\x47\x0f\x21\xa0\x0a\x93\x75\x61\x4c\xa8\xf6\x27\x4a\xc2\xf4\x73\x10\x42\x58\xda\x2c\xd6\x79\xc5\xc2\x19\xdc\x74\xed\x08\x91\xd3\xf0\x39\xa4\x57\x62\x95\xbd\x5b\x86\x6b\x0b\x79\xa6\x9f\x71\x6c\x23\xa1\xbc\xc1\xb0\x24\x29\x7f\xda\xd6\x02\x73\x17\xdb\x28\x4b\x76\xa4\x85\x11\xc8\xfd\x12\x77\x95\xa2\x39\xa7\x4a\x4f\x21\x5e\x6a\x72\xf1\xe6\x30\x62\xb6\xe9\x44\x89\x2f\x63\x61\xd0\x92\x46\xb5\xaf\x33\x35\xdf\xb6\x28\x13\xf1\xfd\xd2\x6d\x9c\x9f\xaa\xb9\x3c\x74\xed\x8b\x05\xf5\x0d\x50\xe6\x70\x64\x5c\x70\xc7\xe8\xd9\x39\x52\x63\xa1\x44\xa0\x87\x33\xf9\x1d\x4d\x32\x76\xc2\x0b\x8c\x1c\x71\x9d\x86\x57\x6a\x18\xfc\x22\xa4\x57\x40\x44\xf3\x99\x33\xa6\xe4\xf7\xa1\xd4\x12\x3f\x5e\x34\x0d\x7e\x6f\x37\x1a\xbf\x2f\x4b\x03\x56\x3d\x7b\x25\x0f\x30\xea\xfb\xb3\x4c\x41\x00\x6d\xd2\x0e\x7b\x1e\x3d\xe4\x98\x98\xf6\x9d\xae\xd2\x35\x93\x0d\x6b\x33\x2d\x86\x78\xa4\xe3\xa5\x88\xa3\xca\xba\x25\xf6\xbc\x95\x54\xf4\x0e\x96\xd8\xc3\x6a\x3f\x5d\x53\x85\x1f\x1d\xd6\xf6\x70\x88\xe8\x00\xfc\x3c\x7c\x2c\xf4\x29\x0c\xf8\x09\x34\x79\x14\xa6\x1e\xdf\xa2\x11\x76\x93\xc6\xae\x4a\x5e\x8e\xf8\x78\x86\x7b\x93\x62\x99\x87\xe1\x3f\x94\xf9\x1a\xe4\xd8\x45\x7d\x71\x65\x43\x14\xa0\x52\x03\xd0\x8e\xd9\x48\x99\x25\x0e\x88\x4e\x58\x98\xbe\x22\xb5\x54\xa5\xff\x24\x9a\xbe\xb7\xd1\xc2\xbb\x9e\xcd\x78\x17\x8e\x51\xf6\xf0\x3d\xe9\x2d\x20\x9c\x4e\x53\x3e\xdc\x12\x59\xc2\xc9\x67\x1b\xc9\xa3\xff\x3f\x2e\xb6\x06\x2a\x26\xa0\x42\x73\x22\xaf\x6f\x1d\xf2\x2d\x85\x24\x23\x4e\xcd\x9e\x4c\xa9\xd8\x8d\x38\xc9\x9a\xdd\x90\x1b\x3b\xa5\x73\xf2\x93\xaa\xc5\xab\xb9\x69\xf1\x7a\xee\x32\xbc\x4a\x4d\x21\xf9\x4d\xb1\x43\xa1\x29\x1f\x5b\x1a\xfa\x26\xd3\xec\x3d\x18\x35\x78\xda\xf7\x24\xb8\x59\xa3\x9d\xcf\x8b\x40\x18\x67\x9b\xfc\xfd\xba\x0c\x1f\x3e\x14\xb4\x8d\x97\xd9\x9e\xab\x60\xd2\xd1\x71\x0b\xc3\xc5\x61\x5a\x71\xbd\xea\xeb\xcf\x97\x95\x65\x78\xdb\xb3\xc3\xcd\xdd\xce\x2e\x97\x01\x64\xfb\x4e\x2b\xe0\xd8\x88\x0d\x9e\x7e\x86\x3d\x77\x8d\xc9\xcd\x84\x01\xdc\x22\x58\x07\x3c\x99\xf0\x3c\x82\xb8\x4d\xb7\xda\xab\xf7\x2f\xe3\x65\x89\x50\x76\xb7\xe3\x14\x95\x19\xcc\x4c\x60\xb5\x61\x8a\x54\x51\x40\x99\xea\x68\x08\x1c\x86\x01\x47\x3e\xa2\x5c\x74\x9b\x17\xd9\x6a\x87\xc3\x81\x2d\xa4\xe7\x46\xf5\x07\xa2\x04\xb5\xc8\xa9\xab\x9d\x28\x11\x40\xf5\x26\x52\x00\xb6\x11\x08\xcd\x50\x07\xf7\x62\x37\x4b\x3f\x63\x71\xfb\x74\x1b\x6a\xf4\xc0\x7d\x45\xe3\xd6\x32\x30\x43\xea\xad\xd7\xa1\xbf\xcd\xa8\x11\xf1\xc1\x05\xf2\x3b\xc8\x00\xec\x80\xc1\xee\x8e\x88\x43\xed\x17\x35\x37\x66\x26\x03\x24\x0a\x34\x43\xc1\x08\x3e\x9f\xa3\x46\x89\x64\xb0\x38\x79\x37\x24\x48\xe5\xe8\x10\xf6\xe7\x89\xb0\x02\xe3\x0c\x1f\x98\x43\x9f\x5f\x60\x27\xe0\x5a\x55\xbf\xc5\x44\xf5\x4a\x93\x80\xb6\x3f\xd6\xe6\x5f\x81\x61\xa8\x03\xf0\x91\x7a\xe3\x7a\x46\x3a\x41\x56\x3a\x47\x14\x0c\x58\xc3\xa2\x46\x6a\x51\xdf\xf5\x4a\xaa\x6d\xca\x2a\x48\x85\x3b\x0e\x99\xef\xe8\x6d\x14\x54\x95\xaa\xac\x4f\xbd\xd1\x6d\x13\x5a\x1c\x6d\xcd\x55\x4a\x12\xe3\x81\x7c\x01\x2a\x6d\x8a\x2b\x22\x54\xbc\x15\x8d\x5c\x9d\x18\x4c\x96\x59\x43\xdb\x3b\x2a\xa8\xaa\xd4\x47\x42\x43\x98\x31\xc0\x22\x31\x72\xe9\xb4\xc3\x25\xbf\x6f\x7b\x92\x20\x01\x2b\xcb\x63\xfb\xa2\x92\x49\x35\xfd\x3e\xd2\xf6\x2a\xb7\x01\x91\x0e\x33\x1f\x06\xc1\xb8\x18\xe4\x11\x55\xb3\xbb\xe2\xa7\x9d\x83\x9f\xa6\xaf\xc0\x33\xc3\xec\xd0\xc3\xc0\x58\x3d\x13\xf6\x1d\x9e\x55\x2a\xa7\x2c\xde\xb4\xbc\x5a\x1c\xee\x8a\x3d\x59\x30\x01\x1d\xba\x5e\x22\x63\xc6\xef\x50\xfa\xb6\xa2\xb3\xd2\xdd\x73\xe1\x4b\x13\x12\xce\x82\x99\x3f\xc9\x51\x98\x38\x56\x4d\x5d\x41\x44\xbb\xd2\x50\xbe\x09\x9a\x38\x21\x2f\x8c\xd1\x31\x61\x69\x1d\x56\x45\x8b\x50\x7c\xc3\x80\xe5\xc9\x1e\x91\x81\xb1\xc6\x41\xe9\x23\x3d\xde\x7d\x67\x7a\x2d\x68\x12\x8c\xd1\x10\xca\x4d\x1a\xff\xd5\x4b\x30\xd5\x9f\x3f\xba\x52\x28\xee\x89\xb5\x79\x30\x32\x1a\x9e\xa7\x4f\x7e\x53\x89\x39\xce\x9f\x86\x25\x11\x51\x12\xba\x6e\xe9\x6e\x61\x34\xe7\xe3\x5c\x23\x91\xae\xb9\x71\x28\x7b\x15\x4e\xe8\x51\x09\xc9\x09\x02\x70\x2e\x50\x7d\x9e\x4f\x95\xdd\xc7\xe9\xff\x70\x8c\x5b\x26\xce\x92\x44\x9f\xab\x1f\x2c\xc7\x70\x45\x93\x6a\xcc\x23\x00\xf8\xca\xb2\x99\xeb\x20\xd7\xf4\xd4\x5d\xa5\x57\x72\x56\x78\x9d\x40\xc2\xbf\xde\xb8\x19\xfa\xbb\x11\xee\xdf\x01\x3c\x5f\xdf\x56\x9a\x18\x89\x12\xc9\x2c\x53\x58\xd5\x91\x91\x64\xd4\xe4\xab\x95\x89\xea\xa1\x11\xcd\x29\x79\x6b\x8c\x81\x59\x16\x8d\xa8\x21\x47\xff\xa7\xe9\x5c\x94\x28\x72\x2e\x9d\x85\x7b\x55\x25\x7b\xf7\x14\x9b\x8b\x2b\xd2\x33\x02\x94\xff\x2c\xb9\x2b\x17\x68\xa1\x9d\x25\x58\x72\xc8\x39\x64\xb6\x0b\x40\xe4\xa5\x5f\xdc\x86\x03\xac\xd8\xda\x9d\x81\xa6\x1e\x83\xd2\xbe\xf5\xaf\xfe\x70\xc0\x2a\xd2\x50\xf9\xfc\x9a\x3e\x9e\x9f\xc5\x39\xba\xe8\x03\x23\xa3\x6c\x99\xd0\x97\x54\xa9\x6f\xd2\xb6\x7e\xea\x33\x2c\xe5\x5d\xb6\x4e\x56\x47\xd8\x0d\x11\x29\x0a\x59\xbc\x76\x34\x5a\xcd\x96\xf4\x7b\xe4\xc9\x8e\xb7\x17\x17\x63\x2b\x72\x76\x77\x18\x45\x79\x5b\x9e\xfd\xdc\x73\xb1\xc6\x69\xa1\xb4\x75\x36\x30\xc0\x42\x39\x45\x6e\x00\x3c\x7f\x57\x87\xc0\x6e\xc0\xf1\x9c\xb6\x5b\x9f\x07\x18\xef\x0f\x8b\xa6\x63\xe6\xa2\x73\x50\x1e\x00\xb8\x04\x6c\x4c\x65\x88\x32\xbd\xa4\x54\x9a\xb3\x82\xe7\x20\xb5\x32\xf3\x67\xea\x9a\x93\x89\x03\x21\x65\x89\x3d\xa7\xb1\x6c\x03\xf8\xdb\xe0\x10\xc1\xb2\x97\x6b\x88\x5e\xed\x6c\xb4\x19\x78\x83\xea\x4a\x4c\xa5\x4d\x0d\x8e\xba\x11\xb4\x8b\x0a\x08\x64\x5d\x2a\x03\x97\xfb\x6b\xf4\x14\x53\xab\xcc\x46\xa6\xf1\xa1\x25\x10\x39\x85\xb3\x8f\x67\x9a\x9a\xe1\x83\x9e\xb2\x63\x04\xc5\xba\xbb\xea\x82\x97\xd5\xa1\x5f\xb6\x53\xb9\x61\x3f\x4e\xf2\x25\x94\x8c\x5c\x68\x20\xda\x12\x8a\xf5\xf9\xb1\xf5\x23\xa2\x25\x95\x86\x13\x33\x62\x82\x84\xc0\x04\x69\xb3\x04\x68\x72\x94\x66\xb9\xeb\xf4\xbb\xa7\x4d\x36\x7f\x20\xa3\xa8\x90\x68\xe5\x97\x7f\x21\x49\x04\x6a\x83\xd3\x3e\xb4\xd5\x2a\xec\x54\x7f\x49\x4e\x7e\xe8\x8f\xd2\xd9\x6e\xc1\x38\xc3\x2e\x33\x64\x5c\x1c\x5b\x77\x5c\xb8\x66\xe9\xba\xae\x52\x7a\x50\x14\x6f\x80\x8c\x80\x90\xdb\xf5\xbb\x7a\xbb\x85\x46\x44\xab\xb3\xc9\xf5\x19\x41\x44\xb4\xea\x60\x37\x67\xf0\xd6\x52\xb5\xb4\x47\x6c\x73\xaa\x4b\x7a\x0d\x6a\xe7\x48\x3c\x09\xc8\x30\xd4\x0c\x91\xb8\x87\x04\x57\x26\x62\xb8\x69\x7e\x6e\x61\x68\x1a\xc6\x7f\xce\x14\x04\xfa\xd4\x20\x6a\x4b\x5e\xfb\xdb\xa9\x0b\x8e\x5b\x26\x32\xb9\x30\xb4\x92\xab\x08\xd4\xf0\xaf\x50\xbc\xf2\xe4\x92\xdf\x11\x49\x10\x9c\x94\x0b\x02\xcc\x4e\x79\xd3\x13\xe7\x6a\x67\x4d\xc1\x15\x23\x65\x3b\x60\x84\x95\x60\xab\x04\x0f\x9f\x96\x34\xfa\x2b\xf5\x72\x65\xec\xc4\xd5\x70\x4d\x52\x6b\x48\xe5\xaf\x85\x24\x64\xe2\x03\x8a\x82\x72\x15\xdb\x28\x72\x2a\xe7\x73\x87\xd9\x7a\x93\x40\x4b\x89\x8a\x7f\xbf\xdf\x69\xc6\xff\x5b\x13\x34\xfb\x42\x45\xe6\x04\xdf\x37\xc1\x0f\xb3\x52\x63\x32\x60\x2d\x5c\x2d\x05\x63\x6d\x3e\x00\x9d\x56\xcf\x8c\xf2\xc3\x0b\xbe\x7a\x59\x6d\xd8\xc5\xfd\x9b\x1f\xa6\x33\x08\x70\x6f\x52\x76\xf1\xd9\xca\x31\x3a\x76\xbf\xa8\x7a\x64\xec\xaa\x58\xfb\x13\x5d\x35\xd4\x2e\x82\x89\x44\x79\x39\x54\x9b\x32\xb4\x51\x35\x51\x81\xbc\xbb\x49\x59\x55\x53\x35\xad\x38\x0e\x10\xef\x22\x3d\x46\x7a\xbc\x2b\xff\x56\xf9\x40\x60\x18\x0e\x62\x3c\xd4\x6d\xe4\x4d\xa3\xd8\xad\x0e\x78\x20\x2f\x9f\x8e\xa3\x49\x4d\x1a\x36\x81\x35\x26\x0c\x6c\x79\x36\xbf\x95\x5a\x2a\x59\x68\xb0\xd9\x7b\xff\x17\xf4\x6e\x41\xe1\x77\x9a\x1a\x6d\x21\xdf\xc5\x5c\x83\x4c\xb1\xeb\x25\xd0\x37\xcf\xee\xaf\xa1\x06\x96\x21\x22\x7f\x6a\x1d\xb1\xa4\x18\x38\x1e\x8d\xd4\xc7\x9c\xa0\xa9\x81\x60\x3c\xd8\x2e\x9f\x75\x45\xcc\x93\xb4\x78\xf3\x87\x56\xc9\x26\x86\x22\x4d\xda\xa7\x22\x82\xb6\xbb\xc3\xa2\x92\xd9\x5b\xc4\x88\x61\x61\x44\x26\x4c\x58\x73\x51\x7c\x24\x45\x92\x14\x24\xf5\x7c\x74\x4d\x1c\x4d\xdd\x1e\xd6\x16\x94\xbb\x3d\x01\xe2\x46\x28\xb7\xfe\xc7\x52\x13\x66\xf6\x54\xea\x23\x4f\x75\x1f\xea\x64\x3e\x75\xe8\x4a\xce\x13\x9d\x37\x71\x26\xcb\x22\x4d\xcc\x20\xce\x16\x2a\xc9\x2d\xf0\x67\x48\x6c\x63\xe2\x1b\xbd\xaf\x42\xdc\xc4\x51\x38\xf9\x60\xbd\x28\xce\x74\x23\xe1\x88\xc1\xc6\x6b\x1b\x8d\x0a\x5a\x7d\x69\x57\x15\xa3\xaf\x25\xc6\x10\x60\x32\xd2\x4c\x5f\x88\x0d\x84\x38\xc5\x7f\x73\xf8\x86\x96\x7a\x2a\x15\xcc\xb9\xae\xaa\x22\x15\xa9\xca\x3c\x99\x11\xe0\x92\x3a\x0d\x36\x28\xad\xf9\xbf\x8b\x8f\xe8\x95\xf9\xa5\xa1\x81\xbb\x82\x2b\x33\xdb\x3b\x80\x0d\xb5\xd1\xe6\xb7\x51\xb2\xf4\x1d\x76\x72\xa6\x80\xd3\x71\xe5\x44\x5f\xa6\x9f\x22\xf5\x31\x76\x66\x1a\x2d\x72\x12\x2b\x4d\xb7\x2d\x04\xe0\xf6\x58\x4a\x18\x5a\xf7\xc8\x4c\x32\x95\x5d\xd2\x46\x53\x50\x43\x2b\xa9\xc8\x68\xd3\x68\xe9\xa8\xdc\x69\x4c\x6e\x15\x0a\xc2\x3d\xe5\xfc\x4a\x5b\xf2\xcb\x84\xb2\x36\x0e\x8f\x18\xc6\xae\x75\xdb\x2d\xde\xf8\x63\x1f\x9b\x56\xca\x3f\x68\x8e\x6d\x44\x9c\x89\x3a\xc0\x58\x4c\x7f\xd6\x35\x76\x59\x49\x43\x38\xbb\x96\xb1\x82\xaa\xdb\x4b\xbb\xa8\x17\x85\x5e\x9d\xe4\xbc\x17\xb5\x4e\xf3\x4a\x0b\x51\xed\x46\x8b\x6f\x8e\xff\xa2\xa1\xdc\x9c\x47\xc7\xa7\xcd\xb7\xff\x47\x2c\x2d\x5b\xe2\xc3\xca\x88\x15\x65\x62\x9e\x65\x9e\x7f\xca\x8e\xcf\xb6\x80\xf2\x97\xe7\x8b\xde\x94\x78\x12\x35\x4d\x2e\x31\x60\xa0\x6f\xae\xd6\x02\xed\xa8\x86\x14\xbc\x26\x88\xed\xf5\x07\x30\x51\x48\x5b\xc9\xfa\x3e\x5b\x21\xfe\x0d\x09\x59\x49\x73\x49\xd9\xee\x49\x48\xff\x89\x04\xc6\x57\xe2\x4b\xb8\xb9\xfe\xdd\xe9\xd9\xed\xa6\xf6\xbb\xff\x6c\x52\x56\xb8\x79\xfb\x18\x9e\xde\xb4\x88\xa7\xfe\x88\xdb\x6b\x08\xfa\xd4\x06\x2b\xdb\xbc\x6c\x71\xbb\x6c\x77\xf1\x11\x67\xde\xb6\x43\x4b\x1b\x1f\x49\x4f\x0f\xd4\x96\x10\xf6\x6f\x99\x72\xee\x5d\x0b\x42\x4d\xc3\xd2\xc7\x38\x67\x23\xc8\xe6\xde\xcf\xbb\xd8\xc7\x99\xab\x89\x70\x0d\xff\x79\xa7\xb8\x5e\xa4\xc1\x6c\x3e\x64\x09\x28\x8c\x6e\x97\x0a\x99\x6f\x80\x0e\xb9\xec\xad\xf5\x8f\xf5\xec\x4e\xd5\xbd\xfe\x5c\xb6\x55\xae\x1c\x5b\xb9\xbd\xf7\xb4\x9e\x1d\xb4\x92\x49\x1b\x00\x7f\x7b\xc9\x40\xf1\x00\x66\x6b\xc5\x26\x25\xd4\xb0\x6e\x75\x6e\x3d\x37\x34\x69\x1d\xbc\xae\x23\xb3\x5c\x74\x0b\xe9\xd0\x9f\xe9\x0b\xdd\x9c\x2a\x21\xbb\x75\x5b\x54\x6c\x25\x5b\x3e\x33\x56\x33\x5b\xde\xaa\x15\x6f\xdf\x53\xed\xf1\x3d\x33\xbc\xf0\xfa\x3e\xb2\x73\x33\x77\x98\xff\x9e\xec\x77\x8e\xde\x38\x24\xa9\x76\x32\xeb\x0d\x58\xd1\x5d\x1d\xbc\x6d\x7f\xb0\xac\x8f\x45\xca\xf9\x26\xa9\xaf\xea\xa3\xb1\x3f\xea\x81\xeb\x0a\x25\xf1\x8d\x46\x71\x51\x68\xb0\x2d\xe0\x9e\x78\x4c\x85\x48\xe4\xfc\xfc\xa4\x0a\xef\x1d\x6c\x37\x5f\xbe\x9e\x04\x7b\xbf\x59\x3c\xf9\x97\x6d\xb3\x40\x52\xfc\xf7\x86\x8e\x5e\x44\xcd\x36\x2a\x3d\x3f\x1d\x32\x87\xab\x0f\x23\xc0\xf3\x9b\x83\xa9\x36\x11\x4e\x89\xd0\x3f\x3c\x37\x5d\x63\xeb\x6a\x8d\xc7\xd6\xda\xda\x3a\x95\xaa\x0e\x0e\x10\xea\x51\x83\x1e\x45\x50\xa4\x30\x2a\x45\xb7\x4f\x21\x3f\x57\x31\x69\x38\xf9\x2b\xd3\x2c\x84\xc8\xc6\xc8\x56\x8c\xbb\x92\xc7\xd4\xe4\xa3\x88\x0a\x85\x35\x05\x27\xa9\x9d\xf0\x9f\x39\xf9\x01\x4d\x7d\x14\x6e\x4d\xa3\x13\x95\x94\x74\xeb\x3e\xdd\xa0\x94\xf0\x1d\x3a\x0b\x6c\x7c\xb0\x1b\x67\x11\x4f\x4b\x82\xdd\x20\xb0\xae\xf4\x95\xf6\x42\x04\x85\x80\xdf\x29\x64\xfc\xf4\x42\x39\xb6\x7d\xb5\x4f\x5d\xb9\x53\x92\xf3\xcb\x90\x1a\x11\xd7\x59\xfc\x5a\xa7\xb9\x1a\x11\xf5\x15\x90\x69\x57\x48\xe4\xfa\xea\x73\x99\x5b\xf4\x72\x7d\x95\x51\xe5\xaa\x23\xb4\xbe\xde\xd3\xb4\x62\x1e\xe0\x34\x5b\xf2\x70\x56\x51\xd7\x87\x3f\x88\x77\xa3\xde\x00\x1c\x14\x40\xf5\xe7\x9e\x39\xc8\xd5\xbf\x15\x8a\x9d\x81\x84\x26\x61\x4f\x4e\xda\x3c\x59\x6e\x15\x50\xfb\x42\x3a\xcf\xad\x45\x19\xb6\xd0\xd9\x83\x30\x1b\xc2\xb3\x72\x97\xce\x64\xaa\xf4\xc0\xce\xa7\x09\x7c\xdd\x54\xa9\xb1\x8d\x6a\x48\x68\x0f\x89\x5b\x5d\x7f\xc5\x23\x10\x19\x57\xd1\x00\x1c\xa0\x69\x31\x37\x70\xb8\x0f\x49\xb0\xc8\x27\x44\x90\x84\xbc\xd8\x9a\xe1\xa5\x81\xf4\x23\x1a\xfa\xf8\x0e\x58\xb5\xc6\xe0\xb5\xcc\xf2\x86\xbb\xbb\x9b\x4d\x12\x6e\xa7\xd4\xc0\x63\xf2\x46\xf0\xbc\xfe\x1a\x63\x6c\xe0\x1e\x0f\xc4\x67\x29\xdb\x7d\xfb\x27\xd8\x0c\xa2\x63\x81\xb9\x62\xf7\x04\xdf\xc2\x33\xdb\x08\xb7\xb7\x92\xb1\x3d\x9b\x14\xc7\xe4\xa9\x2a\xc2\xaf\xe6\x5c\xb1\xcf\xae\x21\x33\x8c\xb1\x09\xdf\xcb\xb7\x91\xd8\x85\xff\xc6\x60\xed\xdc\xae\x8e\xa8\xed\xf4\x89\xda\xd4\x16\xb8\x5f\x64\xaf\x4c\xbb\xb6\xab\x49\x63\x5b\xcb\xf2\x69\x00\xae\x8d\xb0\x6f\x7b\x04\x18\x69\x30\x20\xcf\xd6\x28\x7e\xd7\x1a\x65\x06\x92\x25\x06\x28\x5f\xf9\x57\x4a\xe2\xe4\xc7\x0d\x51\xfe\xde\x15\xe4\x37\xba\xf0\x0b\x8e\x67\x3a\x9e\x6f\xc7\xf6\x35\x96\x5b\x9e\x7c\x00\xd6\x20\x65\x0e\xbf\x99\xd8\x56\xdb\xbf\xa6\xd6\x2f\x31\xb1\x4b\xae\x95\x49\x74\x6b\x78\x80\x57\x80\x00\xd2\x63\xb7\xac\x89\x66\x88\x7a\x0b\xad\x1f\x14\x74\xbf\x84\x12\x1d\x97\x67\x46\xba\xf0\x71\x1e\x96\xe7\x76\x44\xac\x53\x1e\x60\x55\xad\x6f\x94\x41\x0c\xe2\x1b\xd1\xd6\x7c\x7a\x91\x4b\x17\x01\x84\x60\x8d\x08\xb7\x38\x75\xe7\x8e\x14\xb9\x42\x7e\x7b\x27\x6c\xaa\xa1\xc6\x73\x1d\x97\xc2\x39\x21\x07\xd8\xb1\xb5\xbf\x03\xfe\xaf\xa2\x69\x90\x81\x26\xeb\x1a\x8d\x47\x38\xe2\x2b\x0d\xcd\xc9\x03\x08\x65\x60\xb8\x42\xcf\x32\x91\xec\x78\x61\xe1\xf8\x36\xbc\x7a\x49\x0e\x03\x32\xf7\x89\x3f\x05\xe4\xc2\xb7\x4f\x3a\x28\x41\x5a\x93\x28\xc8\x7b\xbc\x50\xb0\xce\x0f\xb8\x3a\x22\xe7\x1a\x72\x00\x2a\xc9\x4b\xaf\x0a\x96\x4a\xd1\xb1\x8f\x2a\x1a\x91\xbd\x8b\xd0\x9a\xcd\xcd\x14\xc3\x89\x5f\xed\xe4\x5f\x29\x3e\x7e\x12\x7a\xaa\x0e\xcb\x3b\x5d\xad\xfe\xee\x93\xd3\x9f\x09\x40\x54\x1b\x86\x33\x3c\x9d\x3f\x35\x59\x5d\x57\x6f\x25\xc8\x7a\x9c\x3a\x90\x58\xae\xea\x8c\xef\xc9\xa5\x2b\xca\x8a\xcf\xb5\xed\xa9\xd9\xfa\x7c\x47\xfe\x25\xbe\x28\xd3\x0f\x55\xd2\x20\x90\xe3\x0c\xc0\xd8\x6d\xa6\x31\x74\x93\xe2\x8f\x93\x62\x5f\x15\x3a\x05\x25\x45\x8f\x9d\x1b\xfb\x31\x24\x70\x26\xe1\xa7\x56\x22\x03\xa9\xb7\xbe\xfb\x50\xd7\x27\xb6\x3e\xb1\x31\x3f\xab\x5a\xfc\x71\xee\xb2\xf8\x76\xee\x69\xf1\xa7\xc2\xb9\x8d\x9f\xdf\x9f\xa3\x6d\x71\x5b\x54\x02\xa0\x7a\x1f\xe9\xd7\xdc\x39\x89\x15\xac\x7d\xbc\xb6\x97\x55\xfa\xb0\x3a\x55\x9e\xbb\xcc\x66\xe7\xa3\x19\xcc\x27\xf9\x10\xbc\x13\x55\xa4\x0b\x39\xa1\xfc\xc4\xf3\xd3\x96\x7e\x62\x18\x3d\xb9\x5b\x11\x92\x56\x1c\x68\xf3\x15\xb3\x30\x69\x1b\x52\xca\xef\x87\xd5\xd3\x63\x98\xf5\x89\xe5\xce\x50\x51\x87\xa3\x68\xbb\x7f\x20\x1e\x67\x9b\x28\x8c\x38\x63\x7a\x1d\x97\x79\xab\xcf\x8a\x71\x24\x35\x98\xb3\xe9\x99\x8b\x8d\x75\xe9\x7a\x14\xcb\x42\xfa\x29\x62\x56\x7d\x9c\x08\xcb\xd0\x73\x45\x42\x56\x7f\xf4\xaf\x7a\x0d\xbf\xea\xb9\x2c\x90\x4f\xf2\xe2\x15\xfe\x71\xa5\xc4\xcb\xac\x43\x9b\x9f\x52\xb5\x40\x5a\x7e\x8e\xde\x1a\x9c\x5f\xef\x15\x26\xa9\x3e\x3a\x61\x33\xa0\xd2\xde\xd6\x4b\x60\x77\x16\x2b\xce\x23\x4b\xdd\x5a\xa3\xd8\xed\x53\xf2\xd4\xb0\x01\x07\xd6\xfb\x8d\x85\xb7\x9d\x51\x89\x88\xdf\x5c\xe2\x7f\xf6\x3a\xe7\x75\x2b\xbc\x68\xef\x15\x47\xfb\xfc\x7a\x48\x1e\x01\x22\x56\xf7\x0d\x25\xf6\x52\xec\x20\x01\x2b\xf8\xe6\xdb\xae\xa4\x64\x27\x90\x01\xc4\xa4\x00\x43\x6c\xd3\x85\x91\x0d\x2a\xf0\x2a\xc0\x9f\x4f\x09\x0a\xf6\x11\xa4\x7a\xc0\x70\x0d\x81\x76\x9d\x18\xf8\x87\x82\xf9\xd7\x16\x5e\x64\x3e\x7a\xfd\xac\x64\xa8\xc4\x84\x9d\x0d\xe8\xb3\x37\xa6\x55\x1c\x55\xe3\xc1\xa6\xd4\x8e\x2f\x58\x7b\x00\xb9\x93\x37\x06\x11\x09\x6f\x68\xe5\x60\x27\x29\xe7\xe7\xcb\x8e\xf6\xa2\x34\x83\xb2\x26\xf1\xdf\x96\xa0\xcf\x67\x53\xdd\x95\xf5\xc5\xea\x57\xff\x68\x3b\x23\x43\x2f\x72\xd5\x69\x34\x5d\x7e\x6a\x63\xa5\x7a\x03\xfb\xcf\xf0\x3f\x74\x13\x65\x80\xd3\xd0\xed\x01\xf3\x33\x9b\x45\xf0\x42\xc8\x27\x08\x77\x9f\xf0\x0e\x13\xbd\x18\xd1\xf6\x3c\x3a\x3c\xfe\xe7\xcc\xc2\x75\x11\x7c\xdf\x0a\x84\xea\xe4\x2e\x0f\xb9\xb2\xc4\x66\xeb\x56\xa2\x1a\x08\xd9\xdf\xba\x6a\xfe\x46\xe6\xdc\x8a\xde\x4a\x60\x41\xe1\x1b\xbe\x1f\x9b\xdc\x82\x38\xce\x8e\xf9\xd8\x11\x53\xc3\xbd\x6f\x25\xba\x96\xa0\x1f\xac\x21\xa3\x9a\x57\xeb\x47\x6a\x30\xd0\x2c\x05\xf0\x6c\x26\x12\xbc\x7c\xd2\xfa\x9e\xe0\x7e\x71\x87\x4f\xdb\x5e\x1f\xb9\x7d\x78\xc4\x31\xef\xae\xc4\x6e\xdf\x46\x5b\x89\x7f\x2e\xfa\x67\xb7\x3d\x0b\x75\xa5\xbb\xab\x85\xcf\x56\x66\x3b\xb1\x0e\x97\xf3\xd0\x68\xb0\x3d\x61\x08\xc4\xfe\x5d\x71\x87\x5f\x5a\x90\x9d\xbe\x35\xd5\x13\x6a\x9b\xd1\x7c\x2c\xc9\xc9\x67\xa7\xfa\x27\x69\x4a\xbd\x33\xe3\x72\xe1\xdd\x1e\x95\x38\x21\x00\x62\xf5\xc9\x4d\xbf\xfd\x29\x16\x3e\xe0\x11\x7a\x1f\xef\xb5\xfd\x38\x27\xef\x11\x39\x2a\xe7\x13\x23\x6e\xc1\x54\xcd\xc2\x80\xe8\xfa\x10\xc4\xdf\xfe\x04\x38\x6d\x55\x1b\xee\x15\x4f\x18\x2a\xf1\x39\x22\xaa\x9b\x2b\x71\xc7\x2f\x05\xba\x16\x8c\xb1\xab\x3d\xde\x3e\xf4\x87\x6f\xfb\xd0\x3a\xc7\x55\xc5\x30\xfa\xe3\x1b\xeb\x8f\xd0\xb7\x67\x6d\xd8\xb9\xed\x95\x07\x4f\x02\xbd\x9f\x5e\x11\xd4\x27\xb4\x3f\x11\xe7\xda\xb8\x1d\xb8\x9c\x6f\xee\x3c\x59\x3a\x01\xc1\x40\xae\xa7\xf5\x09\xa5\xea\x7f\xad\xc6\xf9\x62\x54\x28\x66\xda\x24\xeb\xc4\x03\x8f\x7d\xd4\x6e\x03\xc1\x70\xbe\x9d\x16\x7a\xc7\xc4\xf9\x01\xb1\x31\x00\xde\x6d\x5d\xdd\x00\x1e\x75\xb6\x02\x9a\x87\x53\x40\x78\xf0\x03\x38\xe2\x60\x4a\xec\x27\x75\xbd\x4b\xf0\x2a\x97\xb9\x52\xc1\xc0\xbf\xd3\xc7\xf6\xca\x63\xff\xd4\x76\x31\x0a\x0d\x6c\x2f\x20\xd3\xa8\x9b\x13\x6c\x42\xc0\x0e\x57\xc8\x06\xf2\x57\xc2\xbd\x10\x8e\xc1\x5f\x97\xe6\x29\x94\x43\x8a\x7c\x75\xc0\xf3\xd7\x81\x6b\xf8\x66\x5f\x71\xe1\x60\x0a\xe5\x9f\x0f\xb2\xbe\x70\x91\xc8\x42\x78\x1f\xfc\xcf\x6e\x32\xfe\xcd\xff\x87\xf6\x05\x0f\x7a\xbe\x19\xbc\x7d\x57\x3c\xff\xb1\x86\xe1\xaf\xea\x28\xdc\xde\xf0\xe2\xce\x63\x23\xe0\x7e\x11\xb9\xba\x58\xdd\x4b\xde\x44\x50\x66\x8e\x11\x14\xce\xf9\x3c\xe6\x16\x3c\xab\x09\x7c\x10\x6b\xdf\x95\xf7\x7f\x7e\xe9\x76\x3d\x69\xad\xb4\x78\x1e\x06\x1f\x5a\x38\x7e\x02\x59\x78\x75\x69\xbb\xd2\x4e\xc4\xb2\x38\x53\x28\xda\x57\xab\x62\xae\x81\x7b\x9f\x21\x62\x7e\xd2\x2f\xdf\xfe\x09\xa2\x5a\xd7\xfc\xc8\x3f\x1f\x67\xe7\x7c\x4d\xa8\xda\x91\x16\x5f\xf0\xf2\x7f\xe3\x55\x28\x4d\x7b\x62\x0e\x3e\x7b\x62\x4f\xe5\xcf\xa5\x58\x7f\x29\x31\xc7\x50\xe1\xa4\x8c\xeb\x4e\x94\x0c\xe5\x4f\x2a\x7f\xe7\x1e\x25\x24\x45\x94\xe5\x04\xa7\x6e\x55\x66\x91\x2d\xf7\x14\x35\x2b\x1f\x97\x2b\xdb\x90\x10\xf3\x18\xde\x0f\xd0\x24\x4d\x30\x55\xee\xd0\xb0\x22\xd3\x90\x1c\xd7\xd8\x84\xa9\xb9\xed\x28\xd4\x33\x4d\x40\xc7\x8a\xa0\x15\xf7\xde\xd6\x5a\x7c\x28\x8f\x25\xbe\xc0\x23\xd5\x6f\x7a\xec\x11\xfe\x88\xe2\xac\x21\xe8\x2c\x42\x0d\x77\x2b\x6e\x95\x9c\xec\xef\x3a\x6c\x42\xe0\xae\x51\x7b\x72\x25\x61\xb6\xba\x21\x59\x30\x4c\x4f\xc1\xa2\xd3\x92\xf1\x29\xd8\xcf\xd2\x01\x65\x56\x58\x3d\x87\x0d\x83\x41\x79\x98\x9e\x82\xfe\x50\xc6\xb4\x9c\x2f\x06\xd2\x74\xf8\x8a\xfd\x63\x07\x73\x55\xaa\x3c\x87\x28\x90\x83\x71\xb2\xa0\x4b\x56\x4f\xb0\x00\x8e\xd7\x74\xe1\x2c\x5f\x64\x82\xb2\x63\x0a\xf8\x15\xca\xe8\x7e\x5b\xcb\xa3\x82\x20\x36\x31\xc7\x91\xa6\x68\xc5\x47\x43\x49\x52\xed\x0c\x58\xa5\xa2\x65\xae\x21\x15\x65\x7f\x62\x84\x89\xe7\xc3\xa7\xe5\x7b\x8e\x25\x2f\x21\x72\x71\x25\xb0\x62\x4d\x9e\xb7\x6f\xec\x40\x59\x13\x40\xd1\x99\x10\x0a\xeb\x9b\x96\xc9\x8c\x4d\x36\x87\x48\xb1\x69\x47\xe5\x01\xb4\x3a\x1d\x68\xfd\x4d\xd3\x51\x01\x81\x0a\x77\x08\x10\x47\xe3\x3a\xf8\x02\x59\x66\xa6\xf8\xfc\x25\xde\xf8\xb0\xcd\x8b\x3d\xd0\x0f\xfa\x0d\xf7\x1a\x27\xab\x86\xc9\x95\x66\x94\xc8\x83\x4b\x92\x90\x89\xee\xa1\xe0\x75\x23\x16\x24\x23\xb1\x9b\x4d\x8b\x95\x5a\x56\x63\x34\x9d\xf2\xaa\xff\xc0\x78\xfb\x25\x07\xdc\x3a\x9a\xa4\x09\xfb\x03\xd6\x0e\xc7\x52\x68\x2d\xf4\x2e\x85\xce\x46\x67\x21\xdc\x78\x96\x04\xbb\x19\x73\x0f\x2b\x0a\xcd\xb8\x1f\xce\x37\x0b\xcd\xf5\x95\xdf\x71\x77\x30\x4e\x45\x6c\x10\x9a\x71\xe6\x8b\x9e\xec\x25\xa0\x87\xc9\x02\x39\xaa\x7a\xeb\xc7\x0e\x83\xb1\x87\x63\x7c\xd4\x87\xa9\xf6\xbe\xb7\x40\xb4\x9c\x43\x86\xec\xa6\x4a\xda\x0b\x79\xc5\x65\x58\x39\xe1\x1e\x0b\xd9\x76\x86\xde\x1a\xcc\x80\x5f\x49\x8b\x76\x18\xe0\xa0\x12\xb4\x1b\x61\x6f\x67\x83\x2c\x38\x41\x6f\x04\xd7\x6e\x06\xc7\xc5\x87\xee\xe0\xc5\xca\x4f\xcb\xa0\x64\xb2\x5d\xe7\xb9\x32\x75\x1b\xf5\xf5\xd0\xa9\x6a\xf4\xba\x30\x5a\x5d\x4e\xed\x9f\x0a\x5c\x59\x3e\x72\xd9\x83\x75\x3c\xe8\x2d\xfd\x9d\xa0\x17\x3b\xae\x68\xfc\x87\x55\xf1\x72\x1c\x21\xfc\xab\xb7\x64\x27\xa3\xac\x05\xc8\x20\xa1\x1c\x17\xa5\x85\x88\xcf\xbb\x27\x34\xf8\x19\x23\xf5\xbe\x79\x23\x60\xf5\x24\x37\x8f\x4e\xf3\xef\xd5\x25\x50\xf5\x2d\x9a\xb5\x74\x73\xbd\xdd\x63\xfe\x7b\x99\xb4\x09\x4a\xfc\x95\x16\x19\xb8\x22\x0b\x5b\xeb\x5f\xdf\x68\x63\x84\x32\xa1\x76\x78\x9e\xd5\x62\x77\xe5\x69\x94\x6c\x3b\x27\xb5\xbd\xfe\x01\x31\x37\x1b\x0a\xbf\xac\x05\xc8\x09\xc3\x63\xb1\xea\x49\x5f\xb2\xb5\xe2\x2d\x1c\x1c\x5d\xa8\x35\x2b\xf1\x6b\x23\xc3\x52\xbb\x2c\x8c\x03\x65\xcd\xc6\x74\x79\x3d\x4c\xef\x69\x0f\x6a\xb5\xaf\x05\x1a\x7b\x0b\x08\xfa\xc7\x5b\xbe\x23\x59\xba\x64\xd9\xf7\x8b\x62\xfe\x75\x06\xc8\x73\x70\xdb\xa9\x7f\xf5\x40\xc9\xe3\x38\x58\x33\x1c\xb2\x17\x0c\xdf\x33\x15\xf4\x98\xa5\xce\x96\x41\xb2\xf7\x02\xa2\xf0\x9f\x40\x42\x84\xdf\xa4\xf2\xb4\xeb\x71\x52\x1e\x8d\x99\x26\x25\x69\xfd\xc0\x3d\x19\xa6\x72\xfb\xd6\x0c\x16\xe7\xfb\xb5\x9d\x03\x18\x7e\x16\x63\x8b\xca\x5e\x30\x51\x19\xf5\x0f\xb8\x8d\x60\x90\xdc\xf6\x64\x87\xaf\x83\xbb\x4d\x84\xda\xa7\x3f\x57\xc5\xff\xa0\xf5\x75\x6e\x91\x0c\x5e\xa3\x20\x3d\x3b\x55\xa3\xf1\x28\x2d\xff\x4c\xbf\x3b\x13\xbf\x9e\x24\x88\x67\x2b\x8e\x63\x54\x8c\xe2\x9e\x1c\x05\xd3\xe6\xd4\x47\xc4\x61\x2b\xbd\x5d\x88\x18\x7c\x71\xaf\x8f\xc2\x28\x9b\xea\x3d\xfd\xcd\xad\x7e\xe2\xe5\x48\x50\x17\x96\xec\xaa\xdb\x97\xa5\xb8\x32\x36\x89\xa4\x3d\x86\x3a\xda\x5e\xd0\xdd\x79\xc2\xa9\x3a\x56\x7f\xdf\x1f\xdc\x68\xa2\xa0\x37\x1d\x56\xea\x79\x10\x53\x8e\x84\xdc\xdc\xa4\x8b\xd7\xb4\xc4\x5d\x4c\x5a\x27\xce\x09\xfa\xe2\x02\x9f\x32\x6a\x78\xcd\x85\x67\x7c\x91\x7b\x34\xf1\xda\xc5\xbd\xda\x17\xd7\x7a\xac\xfb\x4b\xd9\x3b\x60\x24\xdf\x12\x94\x2e\x03\x09\x56\x48\xc0\xe6\xe4\x3a\x9b\xc9\x69\x4a\x9a\x1c\x52\x77\x09\xdc\xfa\xa4\x13\xfe\x12\x6c\x0f\x0f\xab\xd8\xe8\x91\xd8\x44\xdf\x5e\x99\xd3\x81\x7a\xba\xf7\xc5\xeb\x8e\xf7\x11\xee\x4b\x71\x05\x23\xa8\x1c\x35\x55\x3e\xc4\xe9\x0f\x3d\x9e\x6e\x1f\x26\x03\x4f\x24\x6b\x7e\x54\x72\xc5\xef\x97\x1d\xde\x29\x27\x5c\x1a\xdb\x71\x2e\x20\x38\xa9\x81\x02\xa9\x13\x91\xf3\x86\xb4\x7a\xb0\x86\x7a\x5b\x94\x45\x85\xd6\x9d\x38\xe2\xcd\xc1\xb2\x07\x40\xb1\x19\x2e\x22\xb6\x6f\xea\x3f\xb6\x67\xf2\xf0\xd5\x6d\x32\x99\x97\x1b\x4a\x44\xf5\x63\x2e\x23\x9b\x75\xd0\xb6\xe8\x2f\xe5\xd6\xb4\x17\xdb\xed\x54\xfc\x14\x35\xf4\xda\x37\x61\x1d\xfb\x9f\x0b\x0d\xa1\xb6\xae\xe5\x43\xdf\xd9\x9d\xe3\x3d\x97\xa7\xe5\x77\x10\x63\x8c\x5a\x12\xea\xf9\xae\x10\xaa\xa1\x6f\x22\x65\x6f\x33\xce\x0a\x0c\x32\xf3\x5a\x31\xae\x41\x57\xe9\x56\x0a\x57\x07\x89\x01\xa2\xcc\xb8\x5d\xd2\xdc\x8f\x22\xce\xcf\xfc\x4a\x65\x6d\x85\x2c\xe9\xec\x54\x67\x43\x6b\x24\x25\x5f\x01\x9a\xa0\xc7\xd9\xc2\xb5\x63\x06\x80\x4a\x3a\xa4\xe3\x34\xc9\xe4\x4d\x77\xcf\xc8\x60\x8c\x9a\x5a\x47\x30\x6b\xec\x7b\x49\xf5\xad\x4f\xd9\x1d\x38\x1c\x97\xab\x04\xd5\x61\x02\x4b\xf6\x61\x5e\x28\x01\x59\x68\x62\xb8\x64\xca\x2e\x57\x1b\xaf\xf1\xaf\x08\xe2\x7d\x0b\x3f\xba\x09\x8f\xce\x3d\xaa\x3b\xd6\x3d\x90\x7a\x2b\x33\x5d\x99\xf6\x8f\x8f\xa5\x6e\xf0\xf5\xfd\x4d\xf4\x0c\xa7\xce\xc7\xbf\x2e\x31\xbe\xf3\x93\xb7\xe0\x46\x8b\x35\x3b\x60\x39\xf6\xa0\x05\x34\x0d\x3c\x73\xd3\x70\xdc\x0d\x81\x62\x1e\x12\x01\x74\x94\xdd\x1b\xd9\xb0\x62\xe0\x2a\x87\xc4\x3d\x6b\x70\x54\xbe\xc8\xdd\x17\xda\x50\x62\xa8\xda\xc9\xb9\x63\x4a\xe4\xb9\x49\x79\x3e\x8e\xe1\x59\xf2\x4e\x39\xb1\x69\xd2\x61\x99\x1a\x78\x3e\x76\xc3\xfa\x8f\x45\x7e\xd9\x81\x6f\x63\xde\xf3\x8e\x35\x87\x3c\x72\xf1\x43\x7c\xd9\x96\x6f\x1d\x4e\xd9\xe7\x84\x0a\xd4\xdf\xad\x6b\x0f\x1b\x6f\xe2\x94\x4a\xbd\xf1\x99\xaf\xb8\x92\xaf\x93\x8c\xbe\xe4\x0d\x55\xcb\xc2\x5e\x3c\x04\xe0\x07\x23\x8d\x43\x32\xa4\x7f\x9b\x76\xe8\x8c\x5b\xf9\x3a\x99\xec\x3d\xae\xcf\x10\xb3\x9f\x0f\xac\x39\xe3\x63\xe8\xe0\x15\xb4\x46\x3c\x3f\xcc\x9d\xc6\x2e\xa2\xeb\xd3\x13\xa7\xce\x5f\xef\x66\xe3\xb4\x44\x6c\xd9\xd9\xe7\x85\x8d\x91\x8c\x10\xb1\x8f\xb3\xeb\x9c\x1b\x1d\x0b\x4e\x3d\x18\x5c\x53\xb1\x74\xa3\x7b\x56\xd9\x08\x86\x81\x23\x40\xaf\x5f\x5b\x73\x1c\xd1\x9a\xdc\x28\xb1\xa9\xa9\x48\x98\x0e\xe8\x8c\x88\xec\x8f\x48\xbd\x8b\x9d\x4f\x3d\xfb\xd5\xfa\x1c\x95\xb7\x5e\xe9\x68\x50\x34\x56\x4e\x63\x8e\x25\xd3\x6e\x17\x68\x58\x4d\xb7\xe4\xb9\xce\xca\x93\x77\xaa\x98\xb5\xd8\x8c\x1a\xac\xe3\x7e\x8e\xa3\x82\xa1\xb5\x78\x12\xdd\xb7\x87\xd3\xd1\x99\x71\x84\x5d\xad\x9c\x47\x66\xde\x86\x86\x5f\x38\x72\xf3\xf9\x4e\x73\x64\xa3\x7a\x7a\x92\x62\xcf\xdd\xc3\x39\x2b\x2b\xfd\x49\xee\x2b\xef\x23\xa0\x0c\x1c\xb5\x73\x92\x7d\x5e\x02\x08\x08\x3d\x05\xe9\x36\xc6\xf4\x63\x59\xf5\x7b\xeb\x12\x70\x42\xde\x21\x2f\x1e\x5b\xde\xef\x7a\xb3\x43\x0e\x9d\x9c\x89\x73\xab\x88\xd3\xf8\xc7\xf5\xd5\x13\xd1\xd2\x88\xa8\x14\x76\x7b\x8b\xdd\xd0\x1c\x59\x20\xd1\x52\xb1\xac\x3b\x7c\x0c\x52\x78\xfc\xdc\x7a\x2b\xbd\xb5\x00\x68\x28\x09\xd1\xdb\x83\xd3\x04\xc8\x42\x18\xbf\x25\x0c\x9c\x29\xbd\x23\xf8\xa1\x70\x1a\x26\x0d\x05\xaa\x91\x6c\xcc\xd2\xf5\xdc\xfc\x1c\x46\x4c\x5d\x15\x60\x62\xdd\x5b\x3e\xd0\x3c\xcb\x67\xe1\x51\xd9\x60\xde\xcf\x8d\x85\x00\xcd\x2a\x9d\x29\x3a\x9d\x31\x18\x38\xea\x6b\x22\xfa\x75\x06\xc8\xa6\xb9\x4d\x71\xf6\xd7\xda\xed\x78\xdd\x87\xfc\x2c\x4e\x7c\x1c\xce\x2e\x11\x80\xd8\x03\xeb\x3b\xb8\xe7\x38\x3e\x83\x8b\x64\x39\x42\xd9\xa6\xa3\xbf\x8d\xd5\x9e\x22\xc1\x14\x42\x8b\x06\x6e\xce\x0d\xac\x36\xa5\xfd\x93\x3d\x54\x42\xfc\x50\xfe\xd4\xab\xaf\x44\x87\x54\x17\xf4\x7e\xc3\x45\x5e\x12\x06\xbc\x5d\xd9\x1d\x84\x93\x98\x46\xb6\x0d\x4d\xdf\x23\x23\xa4\x55\xfe\xd6\x61\x19\x07\xd4\x20\xb3\x2a\x85\x21\x79\x8b\x84\xaf\x5e\x2a\xda\xba\x29\x0d\xa9\xf6\xfb\xbe\xee\xdc\xaf\xb5\xe3\x0e\x66\x47\xaf\x25\x57\x89\x5e\x0c\x23\xb6\x4e\x09\x7e\x5a\xa8\x91\x4e\xee\x5d\x49\x08\x3a\x8a\x8b\x43\x1a\x2e\x11\x68\xf8\xcc\x0c\x11\x46\x42\x2b\xac\xc3\x0e\x7e\xe7\xb3\x5a\xf9\x5d\xd4\x23\x1b\x5e\xf0\x91\xac\x6d\xf9\xad\xf0\x0e\x76\xec\xba\xd0\x46\x71\x66\x37\x81\xc8\x38\xfc\xad\xa9\x24\x23\xda\x6e\xc0\xae\x08\x60\xa2\xaa\x1d\x28\x5c\xb3\x2b\x84\xc3\xfe\xb2\x44\x19\x15\x31\xc0\x64\x94\xb9\x2b\x62\xb4\xb0\x89\xdb\x78\xf1\xe6\xd8\x83\xf2\x3b\x10\xd8\x6d\xc3\x1b\x44\xc0\x3b\x0c\x10\xd5\xf8\x75\x0f\xb9\xea\xfe\x31\x5b\x7a\xba\x6c\xc4\x42\x07\x07\x9c\xbb\x5a\x44\xbb\xe5\x39\xa5\x2e\xdb\x31\xfc\xab\xf2\x41\xe6\x8e\x2f\xc7\x63\x5d\xde\xc1\x11\xf7\xc4\xe2\x46\xc8\x72\xba\x93\xbc\xfe\x9d\x4e\x40\xe6\x28\x5c\xac\x39\xc3\x8a\xb8\xcc\x3d\xbc\xa7\xb9\xb2\x24\x7f\x35\xfb\xb5\x37\xe8\xfb\x8c\x6b\xc8\x2f\x1e\x27\x12\xfb\x71\x8a\x1a\xe8\xae\x48\x2f\xc6\xa3\x40\x6e\x4a\x85\x70\x69\xfc\xac\x9c\x2b\x25\x1c\x3a\x1c\x3e\x3e\xd5\x85\x1f\xdf\x7d\x7c\x9b\x49\xac\x4a\x61\xd0\x8e\x4e\xd2\x88\x6f\x47\xa6\x1d\xc4\x62\x04\xd2\xf3\x43\xc1\x10\xcc\xc2\x41\x95\x27\x52\xcc\x79\x9a\xac\x7c\x20\xd0\x7a\xc0\xb2\x2e\x51\xc4\x91\xd0\x28\x23\x25\x33\xde\xb3\x89\x9c\x49\x02\x77\x3d\xb0\x11\xa4\xe5\xd0\xaf\xd4\x5e\xe4\xde\x12\xfe\x6d\xc3\xb1\x7c\x27\x3c\x79\x7e\xdf\xcb\xc7\x2a\xb1\xa1\xad\x58\x4e\xc6\x98\xca\x25\x21\x01\x71\xfa\xb4\x8d\x75\x4e\x6f\x29\x89\xdc\xbb\x9f\x1a\x6d\x70\xc2\xda\x57\x93\xa6\x16\xbc\xa2\x94\x79\xc2\x09\x2e\x0c\xcf\x51\xff\x64\x2a\xc7\x23\xb9\x68\x49\xf2\xf8\xb5\xe7\x96\xfa\xe5\x8d\x4b\x79\x3b\x96\x72\x15\x8b\x22\xf5\xc2\x41\x6d\x0d\x18\xc5\x4a\x63\x7a\x36\x4c\x20\x00\x99\x54\xba\x87\xbd\x38\xd8\x83\xc5\x55\x2e\x18\xbb\xd2\x97\x27\xa3\xb7\x7b\x58\xca\xaf\xdc\xfc\xfd\x4f\x74\xe5\xfd\xe8\xbc\x39\x0b\xb4\xdc\xf8\x5d\xd9\x8e\x6d\x5e\xdd\x75\x46\x6e\xf9\xac\xac\xfb\x57\x4f\xf9\xac\x82\xea\x2c\x0e\xe8\x69\xc2\x8c\x3b\xcd\x00\x4a\x73\xe6\x01\x97\xd7\x2a\xf7\xbd\xef\x9e\xc7\x24\x37\x60\xf0\x54\x1f\xae\xdc\x1e\x13\x83\x91\xe6\xbc\x56\x86\xc7\xa3\x95\xc8\xcd\x52\xdc\x43\x89\x6e\x0e\x49\x32\x9a\x26\x8f\x4e\xea\x21\xb6\x65\xa4\xc0\x32\xe5\x35\x23\xbd\x8d\x91\xdd\x9d\xc4\x12\xe9\xa3\xf0\x7b\x9f\xc0\x6f\xdd\xf5\xc1\x7f\x0e\xf0\xe2\xd8\x3e\xa1\x07\x7f\x04\x9f\xfd\x91\x7c\xf4\x79\x5f\x92\xbf\x73\xa2\xa3\x63\x6b\x7b\x74\x18\x4d\x84\x39\x4b\x37\x69\xca\x28\xe9\xbc\xaf\x12\xdc\x2b\x6a\x19\xd1\x4b\xaa\xe8\x14\xe8\x94\x4f\x71\xd9\x8f\xdb\x1e\x0e\x9b\x72\xaf\xc2\x8e\x30\x85\xc1\xfe\x55\x5a\x9c\xdd\xe0\x47\x50\x1a\x8f\xc7\xf0\x66\xf7\x84\xa9\x56\xb8\x1e\x5b\xf0\xb1\xca\x98\x57\x57\x91\x27\x42\xf1\x9d\xdc\x8d\x0c\x9f\xab\x13\x9b\x5c\xe9\x78\xdc\x84\xb8\x5d\x15\x5d\x61\x84\x18\x91\x9b\x14\x95\x61\xbc\x78\x9a\x74\x50\xa4\x22\x8d\x3d\x09\x14\x49\x74\xca\x4b\x20\xb7\x9e\xb2\xe8\x03\x13\x12\xd4\xc0\xec\xc0\xc2\x3b\xea\x83\x7a\xb0\x83\x6f\x9e\x4d\x6f\x92\xde\xbc\x33\x8d\x21\xa4\xa7\x55\xc5\xee\x28\xf5\x53\xc5\x6b\x65\x99\x4f\x3a\xd3\xa2\xf4\x06\x55\x5f\x1e\x78\xc8\xbb\xbf\xf9\x89\x2c\x8b\x2b\x13\x59\x89\x5a\xff\x53\x3a\x58\x55\x9f\x9b\x79\x76\x80\xf1\xe7\xe4\xb6\xfb\x3a\x9c\x55\x63\x27\x7f\xb8\x7a\x0e\x6c\xa0\xde\xd7\x48\x2a\x33\xd4\x8c\xa7\x7c\xd6\xe3\x35\xbb\x5b\xd3\x4e\xb6\x09\x93\x3e\x40\xc2\xb6\x29\x4d\x45\x45\x0a\x12\x44\xf9\xb7\x19\x0f\x80\x40\x8c\x20\xfc\x61\xda\x49\x6e\xee\x73\x0e\xa3\x48\x04\xa1\x91\xf6\x01\x4f\x4c\xd3\x29\xa5\x3d\xea\x13\x4d\x7b\xd6\x3c\x1c\x04\x99\xdc\xde\xa3\x16\x1a\x24\x2a\xb4\xa1\x3b\x1c\xb7\x2c\xc8\xcb\x45\x41\xc5\xa5\xc2\xe8\xb7\x75\xed\x15\xbf\xa2\x63\x03\x63\xaf\x94\x6b\x5e\xb3\x1f\x46\xf4\x59\x63\xf3\x2b\xf0\x4d\x55\x4f\x33\xfa\xf3\x35\xc4\x58\xcb\xf8\x58\xee\x5a\x9d\x00\x57\x11\x69\x99\x19\x07\x8a\x19\xc9\x68\x7b\x4b\x0b\x49\x37\xbc\x5a\x75\xaf\x55\xb3\x67\x55\x32\x28\x30\xb9\x82\xed\x9c\xdb\x25\x10\x35\x2a\x6d\x97\xe4\x0c\x20\x16\x29\x80\xd2\xbc\x13\x57\xef\x57\x81\x3d\x64\xf7\x19\x05\x86\x82\x99\xf3\xe5\x69\xd1\x28\xc2\x4b\xd6\xee\xe0\x5a\xbf\x51\x90\xd0\xfe\x3e\x36\xed\x47\xd5\x71\xe3\xac\x8f\xa6\x7b\x42\x98\x49\x7c\x1a\xe3\xbc\x57\x79\xb6\x87\x49\xb1\x72\x9c\x65\x77\xb7\x22\x59\x89\xf1\xdb\x8e\xf8\x7c\xd7\xe5\x3a\x9b\x93\xc0\x02\x13\xf9\xa1\xce\x87\x61\x31\x9e\xb0\x3e\xdc\x76\xa8\x23\x15\x86\x0c\x4f\xb5\x87\x3f\xe2\xb4\xa9\xbf\xb1\x25\x12\x75\xfc\x1b\x83\xd5\x75\x49\x0b\x6d\xd4\xee\x46\x86\x49\xc5\xa7\x23\xb5\xfa\x64\x0d\x43\x78\xb7\xf4\x29\x27\xe7\x55\x59\x90\xd2\x79\x86\x32\xe7\xdc\x52\x21\x1a\x93\x6e\xea\x08\x8b\xb9\x02\x59\x0d\x0b\xd4\xa1\xf4\x71\xe9\x49\x06\x02\xea\x53\xbb\xfa\xe5\x70\x77\x1b\xc6\x97\xc4\xd2\x9c\x82\xff\xd0\xc3\x3f\x39\x64\x79\x3e\xbc\x31\xff\x05\x9f\xfe\xfe\xd7\x3a\x75\x3b\xfd\xf8\xf8\x58\x9a\x8f\xb2\xeb\x7d\x8f\x62\xc7\x7e\x50\xdf\xe3\x1f\xf5\xfb\xd8\x1b\xff\x05\xbf\xc3\x9f\x26\x9a\xf1\xe3\xe3\x55\xfd\x1c\x5b\x3c\xa1\xb6\xc7\xec\x31\x14\xdd\xc9\x4b\x7a\xcf\x6d\xeb\x57\xce\x4f\x5b\x03\xd4\xee\x16\xcd\xf7\x12\xa0\x7f\x81\x41\xb7\xcd\x6b\xc9\x6f\x9a\x96\xa6\x70\xee\x0f\xee\x17\x10\x72\x71\xf1\xf4\x0e\xf5\x86\xb0\x79\x2b\xdb\x5e\x95\x12\x50\x1e\x7e\xdd\xb6\xce\xd6\xf6\x74\x08\xec\x14\xee\x89\x37\xdf\xa2\x5b\x84\x77\xbb\xe4\x61\x4b\x61\x9a\x86\xf0\xeb\xdc\xd6\xcf\xfc\x2c\x99\x51\x79\xa2\x4d\x34\x69\xae\x83\x47\x6c\x65\xd4\x15\x99\x3f\x25\x3f\x46\xd0\x03\x3d\xc6\x19\xdd\x8e\xdf\xfa\x62\x11\x43\xf9\x1d\x46\x6e\x39\x62\x38\x2f\x4e\xbe\xad\xf4\x43\x6d\xe9\x8b\xe9\xa1\xe2\xf0\x9b\xbf\x77\x27\xd7\x03\xe2\x6d\xf3\x50\xe1\x89\xe1\x0e\xde\x34\x45\xbd\x95\x5f\x01\xdf\x9f\xf0\x34\x5b\x48\xb4\x6d\xe1\xf7\x69\xb9\xc9\x37\xd6\xe3\x52\x57\x42\x44\x97\x03\xe7\x37\x32\x8f\xd4\x29\x79\xa2\x73\xa7\x38\xc7\xcc\x99\x79\xc0\x70\x7a\xf9\x36\xbe\xf2\xd6\x6a\xe1\x3e\xac\x5d\x46\x16\x15\xe4\x3c\xe9\x4e\x4b\x15\xa3\xb2\x53\x0d\x8a\x66\x11\x1c\x4b\xbe\xf6\xc6\xd0\x56\x63\xb7\xd3\xb8\xf1\xb1\x3b\x65\xc5\xfb\xda\x16\xba\x42\x16\x8e\x1e\x3c\x40\x8c\xaf\x1a\xed\xcb\x37\x10\x6a\x88\x2a\x1d\x38\xa2\x44\x76\xac\xec\x4c\xba\x13\xe8\x6f\xc3\x42\xeb\x68\x76\xf5\xe6\x06\xe5\x83\xa6\xa2\x2b\x53\x1f\x35\x62\xde\x8f\xd6\x7f\x94\xc8\x8b\x67\x1a\xf5\xb4\xf5\x54\x30\xec\x17\xb7\xf4\xde\x37\xf1\x59\xbc\xcf\x37\x3f\xd5\x60\x84\xc1\xb0\x56\x27\xdb\x59\x42\x3e\xb8\x86\xd0\x28\x92\xe0\x8b\x0d\xde\x67\xbb\x5f\x8e\x5f\x9d\xb1\x9f\xf5\x65\xa5\x1b\xa7\x08\xf2\xca\xdb\xf8\x5a\xeb\xa3\x91\xe8\x55\xd3\x5d\xdd\x5b\xed\xe1\x2e\x4f\x5e\x9b\x95\x65\x21\x35\x6a\xa1\xca\xac\xc4\x13\xf8\x10\x14\xd0\x6f\xaf\x47\x43\xab\xf6\x5d\x3b\x0f\x63\x65\x54\x48\x65\x5b\x0f\x10\xc2\x88\xb1\xef\x4a\x1d\x1d\x86\x17\x7f\xc7\x8c\xed\x8d\xfe\x8f\xfc\x58\x42\x77\x82\x95\x67\x93\xe6\xd8\x26\x72\xe6\x8a\x42\xdb\xda\x65\xa6\xe4\xda\x4c\x98\xa5\x64\xe1\xee\x5a\x50\xc2\x03\x06\xa0\x30\xb0\x59\x94\x2f\xe5\xac\xf9\x2a\xbe\x69\xb3\x72\x49\x4b\x2a\xa8\x92\x58\xdc\xa4\xda\x3f\x84\x6f\xdf\xac\x5b\xf1\x35\xdc\x2c\xcd\x19\x9a\x66\x5b\xc7\x6b\xa5\x6b\xb5\x9e\x9c\x93\x9f\x38\x3b\x48\x91\x50\x9e\x99\x3d\x5a\xc2\xb3\x40\x47\xff\x70\x5a\xf8\xa0\xe6\x28\x6c\x8b\xa6\x08\x8e\xd3\x70\xd9\x41\x89\x56\xd7\x49\x98\xc1\x88\xaa\xb5\x8b\x86\xb4\x74\xaf\xdc\x81\x25\x8f\xb6\x63\xbe\xdf\xb8\xed\xfe\xba\x5c\x1f\xdc\xb4\xfa\xf8\xe9\x6a\x6e\x8f\x10\x76\x78\x6b\x36\xbd\x2a\x92\xb6\x9e\x9d\x09\x4e\xda\xe8\x02\xa0\xf1\x83\x10\xa1\x2e\x56\x04\x31\x05\xc5\x30\xfd\x8e\xa2\xcc\xdd\x67\xdb\xb7\x6d\xf6\xb6\x54\xb1\x69\x56\x5b\x30\xcf\xa4\x67\x6f\x7c\xee\xc8\x2b\x09\x8f\xd2\xe7\x20\x13\x76\x50\xe8\xe8\x65\x45\x02\xb2\x90\x12\x65\xfa\x77\xe2\x94\xd3\xa9\x7f\xc8\xa4\x37\xe7\xbe\xa2\x77\xf4\xa9\xfa\x70\xce\x97\x73\x95\x3c\x9f\xde\x1b\xfa\x50\x7f\x3a\x9f\xcf\xc2\x1b\xfa\x78\x06\xef\x22\xf5\x5e\x21\x0a\xbf\x1f\x23\xb2\x7f\xd0\x83\x6c\x4e\x0b\xab\x9f\x90\x6d\x71\x2b\x56\x25\xea\x4b\xc6\x36\xf1\x39\x0a\x00\x7c\x4e\x25\x7f\xc1\xb5\x9e\xe6\xb2\x0c\x3e\xd2\xe4\x61\xfe\x02\xd1\xda\x88\xa7\x7f\xf8\xc8\x53\x6c\x6a\x8f\xd6\x19\x16\xcc\x55\x73\x73\xe7\xb8\x4d\xe3\x7d\x97\x55\xb2\xb5\xb7\x4b\x81\x26\x5a\x61\x37\xca\x81\x4f\x07\x8f\x24\x85\xda\x9c\x2f\x4b\xf7\x71\xa8\xbe\xa9\x17\x60\x04\x6f\x30\xac\x85\x49\x11\xf5\x98\x96\x1e\xb6\xa6\xe7\x7c\x0e\x1e\x9f\x25\x81\x6a\x5e\x8a\x7b\x0d\x68\x1e\xff\xc1\x24\xbf\x78\x0c\xc7\x1e\x73\x9b\xd5\xe7\xb2\x3f\x55\x18\xa9\x3b\x4c\x48\x6c\x3c\x07\x92\x90\x60\xb1\x17\xa1\xe4\xfe\x50\x05\xd8\x30\xe5\x85\xa2\xff\xf6\x3a\xf6\x1a\x13\x47\xea\xce\x46\x11\x5c\xb7\xe7\xeb\x5b\x81\x5b\xb8\x05\xc0\x86\x08\xa4\xa5\xcf\x7c\x10\x94\x1e\xb4\xac\xa2\x69\x25\xfd\xd4\xd2\x4c\xe2\x9e\xa3\xeb\xc6\x99\x97\x10\x3b\x03\xd1\x5e\xe9\x69\x8b\xb6\x8d\x1d\xb1\xc3\xa8\x3f\x63\x24\x64\x53\x2a\x0c\xd9\x4c\x56\x63\x14\xef\x63\xeb\xb3\x55\x65\xc7\x8b\x00\x08\x43\xfc\xcc\x9e\x6f\x22\x49\x32\xa4\xc2\x40\x25\x5a\x20\x58\x17\xe9\xd2\x29\x1e\x42\xf5\xcc\x2d\x8a\x58\xe4\xaa\xc8\x2c\x7f\x12\x97\x60\xbf\xfc\x96\xe6\xf2\x68\xe6\x99\xf9\x9f\x0c\x7e\x67\xdb\x62\x3d\x39\x0c\xe0\xb8\x10\x79\xf2\xfb\xc3\x5e\x9e\xd0\xd7\xcb\x9f\xea\xff\xcf\x44\x3c\xa5\xd4\xc9\xf1\xab\x17\x62\xe4\x02\xaf\xed\xf0\xed\xde\xac\xbe\xc3\x26\x58\xa9\x78\x1e\x6c\x22\x5f\xdb\x9e\x14\x83\xfe\x85\xa8\x44\x62\x49\x69\x47\xf8\x40\xc2\xc4\x4f\xae\x38\x97\xbc\x0a\xea\x23\x63\x86\xe3\xdf\xd1\x9d\x37\x6c\xa3\x61\xcf\xe6\x95\x40\xd0\xdb\x87\x24\xc2\x37\xd6\x46\xf7\x74\x7f\x6f\xe1\xc7\x8a\xa8\x8d\xff\x2d\xa3\xbf\xdd\x8d\x17\x3b\xcd\x71\xf4\x22\xc7\x4c\x1f\x14\x10\x15\x71\x4f\xd1\xfc\xec\x5c\xd4\xe3\xdb\x74\x6d\xec\x63\xb1\x72\xb0\x1c\x45\x0c\xcd\xc5\xb2\x49\x14\x7d\x89\xf8\x6b\xe7\xd9\x52\x96\xfb\xbd\x28\x41\x52\x0a\x19\x81\xf8\x02\xc7\xf1\xa7\x6a\xcf\x30\x8a\x72\x70\xe3\x46\x26\x91\x0f\xcf\x4f\x2b\x05\xfc\x64\xaf\x7c\xec\xd6\x19\xa7\x08\xf6\x7f\x46\xe6\xee\xf1\x3f\x69\x9d\x81\x7d\x2b\x1e\x3f\xd7\xdf\x5e\xcd\x38\x18\x17\xf6\x7c\xb2\x62\x50\x01\xd9\x25\xb6\xb4\xcd\x2d\x66\x9f\x21\xc2\xd7\x6f\xd5\x2b\x47\x48\x82\xcd\xcf\x48\xff\x1e\x0f\x36\xe9\x19\x37\x84\xeb\xd2\x3f\xf7\xa9\xf3\x9a\xcc\x50\x2f\xb2\x11\x67\xa8\x03\xad\x57\xf6\x87\xc3\xe8\x70\xb5\x74\xf8\xc8\x0c\x25\x2d\x97\x8c\xf7\x3d\x6e\xb7\x72\x23\x0d\x71\xdf\x05\xfb\x4e\xf5\x55\xdd\x36\x75\xfa\x95\x92\xdd\x0a\xd3\x9b\x82\x10\x09\x06\x43\x82\x88\x24\x0e\x53\x9c\x44\x9d\x08\xbc\x8f\x17\x69\x84\xca\x69\x05\x9f\xb8\x4f\x74\xe6\xa8\x0f\xd5\xbd\x23\x4d\xf1\x6e\xbf\x32\xb3\x32\x0a\xa0\x78\xaa\xe9\x4d\x42\xc3\x3b\xcb\x71\xb6\xbb\xb5\x6c\x2f\x4d\xb7\xa5\xe0\x9f\x03\x11\x22\x70\xa0\x61\x34\xea\x7c\xc6\x22\x49\x6d\x71\x5e\x52\x2b\x00\x71\xd2\xff\x9d\x52\x9c\x41\xf0\x6f\xaf\xb1\xaf\x0e\x7a\xb9\x39\x9d\x26\xbc\x3a\x48\xf3\x5a\xe8\xf7\xa4\x33\x84\xcf\xa3\x2c\x02\xb2\xd6\x2d\xe3\x8b\xc6\xaf\x92\xfa\x9a\x66\xa4\x99\xb3\xdf\x5f\xa7\xe8\x4e\xf7\xf3\x6c\xf9\x81\x09\xb1\x58\x84\x8c\xd8\xd0\xb7\xf3\xa3\x31\xe8\xae\xf2\xf6\x4c\x51\xf2\x84\x6d\xb8\x15\x1f\x1c\x4a\x95\x17\x70\xf8\xf6\x0d\x4d\xd2\xc4\x5e\x0d\xad\xa8\x4c\xd8\x05\x8d\x8a\x52\x27\xd3\x5c\x0c\xba\x32\x49\x38\x61\x9d\x29\x1a\x55\x6f\x66\x12\xc8\xa1\x78\xee\xe8\xf7\x47\x34\xfe\x47\xe9\x00\xfd\xe6\x87\x59\x28\xef\x96\xd5\xa6\xa5\x9b\x55\x4d\x78\xd3\x26\x36\x64\xdd\xf9\xfe\xf4\x9a\x08\xa1\x5d\x27\x95\xa0\xcb\xd4\xa1\x27\xd7\x9e\x88\xcb\xe9\x9e\xeb\xbd\xe5\xab\x60\xeb\xd9\xd6\x99\x3c\x9f\xb8\x89\xbf\x62\x83\xc3\x7c\x5e\xba\xeb\x07\xf4\x1b\xde\xae\xba\xf3\xca\x4a\x19\xca\xd6\x95\x17\xd6\x10\x9f\xf1\xbe\x6b\x53\xc0\x67\x5f\x10\x38\xff\x09\x41\xe3\xd7\x9b\x28\x0b\x90\xf9\x9f\x90\xe5\x5b\x13\x91\xc5\x15\x94\x49\x95\xc7\x52\x1d\x45\xc6\x9a\xa7\xfd\x74\x19\x52\x8e\x31\x0b\xd3\xa7\x39\xc9\x8e\xb8\x5c\x31\x99\xa8\x67\xb2\xef\x7d\xc1\xa1\x96\xe0\xb8\x9c\x17\x6b\x18\x20\xe9\xfc\xdc\x17\xdc\x29\x49\xf0\xe8\x04\x85\xce\x35\x4b\x79\x3c\x76\xaf\xaa\x1e\x25\xf4\x65\xd7\x87\xae\x6f\xfd\x9c\x72\x46\x83\x25\x6c\xa9\x37\x24\x35\x7d\x24\x2e\xd2\xe5\xfe\x8c\x28\x0f\x54\x06\xae\x41\xc2\x50\xc9\xa4\xde\x5d\xed\xa2\xc4\x8e\x7a\xd2\xce\x8b\x65\xb2\x8d\x9a\x4d\x09\x37\x25\xb7\x67\x76\xee\x3c\x8c\x4c\x68\x6a\xe2\xe6\xa8\x58\xc9\xdc\x7f\xd1\x9e\x3d\x8f\x56\x34\x3b\xab\xac\x0b\x1d\x71\xe3\x1d\x0e\xa5\xca\x58\x75\x67\xa1\xad\x9a\x52\x1f\x79\x72\x3d\xf8\x93\xf8\x51\x8e\x28\x3d\x46\x02\xd4\xac\x8c\xe3\x05\x8e\x11\xf9\xa9\xa2\x5e\xe5\x41\xd3\x27\x89\x92\xf3\xb8\x06\xba\x33\x49\xcb\xe5\xb7\x95\x86\xb3\x3f\x53\xb9\xdf\x1e\x0e\xf5\x13\x14\x7e\xba\x78\x28\xfd\x52\xe4\x66\xaa\x4b\x3b\x74\x6b\x1b\x75\x9b\xb4\x7a\x7e\x9c\x09\x1b\x08\xbc\x53\x37\xf1\x81\xee\x59\xa0\xfa\x41\xfd\x9d\x17\x0e\x8b\xd7\x3f\xf7\x43\x2c\x5a\x6a\x33\xef\x71\xb9\x2c\xbb\x04\x27\x79\xb1\xa7\xf3\x98\xe0\x45\x19\xb4\x41\x3a\x66\x01\xe2\xea\x94\xff\x02\xd4\xea\x71\xfb\xd4\xfc\xef\xb9\xdd\x75\x7a\xff\x77\x6f\x2c\xe8\xeb\xce\x22\xce\xfc\xcb\xd1\x79\x98\x17\x29\x37\x4a\xac\x62\xcb\x8c\x7f\xc5\x98\x99\xb7\xe0\x11\xd4\x7b\xaa\xc3\xa9\xa4\xb9\x16\xcb\xde\x30\xb2\xbf\x6b\x43\xa4\x92\x89\xbf\x00\x25\xf7\x4b\xa2\x99\x55\x12\x5b\x09\x2a\x81\x4c\x17\x3c\x82\x86\xf6\x6c\x1a\xe4\x9f\xda\xe0\xa7\xea\xfb\xda\x5e\xbd\x4a\x53\x19\xb8\xaf\xb4\x41\x6a\x00\x7f\x92\x9f\x29\xb4\x99\x55\xa6\xf8\x7f\x47\xce\x50\x9f\xc6\xbb\xda\x52\x2b\x7c\x25\x2c\xbc\x87\x2e\x9d\x31\xb5\x76\xcb\x87\xe8\xed\xbb\x2c\xc2\xdd\x5a\x46\x63\x8f\x75\x88\xb8\x99\xf8\xbb\xd0\x1d\xbe\x77\x4f\x73\x57\xa0\x4b\x34\x05\x75\xe9\xa8\xd6\xe4\xb3\x1e\xbc\x22\xeb\x68\x9f\x0d\xe5\xd6\x4d\x14\xae\xbf\x74\x0e\x37\xbb\x77\xfd\x6c\x94\x4a\x3d\xe0\x17\x45\xa1\xe7\xc8\x85\xb9\xe3\xe1\x52\xdf\x68\x2f\x06\xbb\x68\xf8\x1f\xc7\x0c\x07\x0a\xb6\xc6\x73\xd4\x22\xb7\xc8\xa5\x2a\xe4\x78\x04\x4a\x90\x72\xdd\x8e\xdf\x03\x1b\x23\x0b\xeb\xe1\xd0\x65\x7b\x58\xa8\x6c\xe1\x63\x74\x59\x57\xbb\xd2\xbd\x21\x98\xbc\x70\x26\x03\x5b\x5f\xf7\x3f\x5f\x5e\x0f\x64\xe9\x62\xd4\x96\x45\xe1\xcc\x22\xe0\x33\x9e\x18\xc1\x0a\x16\x93\x1a\x36\x30\xf6\x0c\x6d\x2c\xf9\xd1\x88\xea\x04\x95\x47\xa3\x15\x03\xc3\x6f\x6a\x51\xa8\x6e\x9e\x61\x5c\xb0\x17\x7f\xcd\x2a\x87\x5b\xc3\xe3\x75\x28\xa6\x0a\x27\x41\x47\xb2\x60\x7d\x19\xfa\x70\xdb\x60\x59\xa8\xf2\x30\xd4\xeb\x72\x72\x1e\xe7\x99\x01\x70\x70\x6e\x5e\x29\x35\x40\x0e\x90\x7f\x89\x54\x63\xeb\xf4\x9d\x92\x79\x65\x61\xe9\x2f\xeb\x2a\x72\xc9\x62\xb6\x42\xea\xa9\x4e\x28\x42\xc9\xb1\xee\x30\xd0\x3d\xd4\x00\x5e\xef\x94\x88\x35\x10\x65\xc6\x86\x6e\xb0\x4d\x30\xa3\x94\x95\xa5\x18\xdc\x9f\x95\xf1\xab\x36\xb6\xa1\x3b\xad\x15\xd3\xac\x67\xf7\x37\xb4\x94\x9e\xb9\xb9\x95\xe2\x0d\xd9\x29\x9d\x1a\xb6\xb5\x03\xd9\x3d\xd2\x91\x88\x03\x9a\xd9\x1d\xea\xc0\xec\x81\x5e\xb0\x7f\xc8\xc2\xdd\x81\xed\xdb\x62\xcc\xfb\x08\x68\x86\x97\x64\x61\x50\x3c\xfe\xe9\x70\x79\xe6\x77\xd2\x8d\xd0\xe3\x8d\xe8\x42\xfc\x47\x8f\xb2\x6b\xaa\x78\x7f\x37\x6f\x37\x1e\x9d\xe4\x0b\x09\xc8\x98\xa1\x1d\xa4\x09\x66\x60\x00\x6e\x66\xd9\xb9\xdb\xfd\x12\x83\xdd\x15\xd3\x04\x3c\xe7\x10\x08\xb8\x93\x20\x6b\x97\xb6\xb6\x2e\x47\x97\xbc\xb3\x99\x3c\x54\xee\x38\x54\x62\x35\xb7\xd8\xf7\x66\xdc\x30\x7e\xff\xca\xa6\xe8\x6e\xda\x74\x05\x18\x7b\x1f\x13\x6d\x86\x81\x71\x75\xb2\xdd\x7f\xb6\x2a\x30\x31\x5c\x35\x04\xae\xaf\x36\x1f\x28\xb3\x89\x9f\xd4\x4f\x74\xc0\x2b\x55\xa1\x4e\xb8\x2d\xc5\xcf\xa3\xb7\x55\x3d\xf7\xda\xf0\xa5\xc2\x35\x18\xc7\xbf\x80\xe4\x5d\x82\xba\x36\x68\x1a\x9a\x70\xf1\x2a\xa8\x8e\x4a\xd9\xf4\xd7\xf6\xa1\xc2\x2c\xb0\xf1\xd7\x79\x74\xad\xac\x1c\x5e\x5e\x49\xb2\xbb\x8a\x98\x4e\x5f\xbb\xe9\xfe\xb4\x4d\x93\x41\x50\x5d\x7c\xad\x2e\x1b\x0f\x4d\x29\x71\x5e\x34\xbf\x04\x92\xb2\xdc\x60\x45\x56\x82\x81\xde\x0b\x29\xfc\xb2\x14\x46\x72\x3a\x43\xfa\x53\x17\x41\xeb\xcf\xae\xf1\x2a\x95\xf0\x65\x8e\xf3\xe9\x43\xda\xb7\x8c\xa5\x36\x3c\xa9\x66\x4f\xab\xe4\x95\x6a\xc9\x57\x5a\xf2\x9c\xa4\x2a\x6e\xe6\x2b\x02\xe4\x1c\xea\x5a\x38\x04\x93\xb3\x0a\xf0\x74\xf2\xf8\x1d\x89\xf8\x23\xa8\xd2\x89\x5c\xe9\x44\x59\xe9\x44\xa4\x34\xb7\x0c\x9b\x4a\x92\x4e\x6b\xb4\xda\x8c\x54\x09\x18\x03\x23\xb0\x73\x9c\x6b\x12\x35\x8b\x68\x58\x24\xec\xde\xf2\x34\x40\xe2\xfe\x86\xb0\x2c\xfd\xfe\xba\xee\xe2\x25\xcd\xa5\x57\xc1\x22\x22\x7e\xbb\x59\x2a\x4c\xc7\x2e\x8d\xe1\x1b\xc7\xe6\x68\x3d\xbc\xd7\xf7\x5b\xf2\xe7\xc4\x5a\x80\x6c\x06\x0e\x05\xc9\x7f\x12\xf5\xc9\x97\x0d\x46\x8a\x86\xee\xe9\x11\x1d\x42\x98\x57\xb1\x4b\x8c\x19\xbd\x7d\xc3\x2e\x59\xbf\x6e\xec\x95\x9b\x69\x7f\x09\x76\x8d\xb5\xa8\x77\x5b\x6a\xcf\x69\x24\xb1\xae\xe4\x15\x6c\xfa\x31\x09\x00\x54\x43\x36\xbb\x46\xd4\x88\xc9\x2a\x83\x29\x15\x29\x53\xcb\x25\x83\x50\x91\x87\xa0\x9d\xfc\x16\x16\xa3\xb7\x4f\xae\xb8\xa4\x11\x8c\x88\xca\x56\xfc\xa4\x1e\x07\x4d\x19\x67\x3a\x44\xf0\x5d\x6e\xb6\xbf\x31\xd9\xab\xc6\x7c\x9d\x8f\xb1\x33\xac\x1e\x8c\x77\x88\xdf\x0e\x46\xf5\x63\x5b\x8d\x6a\x3b\x92\x9c\xc3\xd5\x58\xd7\xad\x60\x2b\x22\x46\x3b\x11\xa7\x1d\xef\xf4\x4a\xc1\x9c\x9c\xa4\x17\x3c\x2f\x99\xe7\xad\x4e\x3e\xff\x6c\x30\x4e\xd4\x3e\x6d\xa6\x35\x76\x42\xf0\xac\x9a\x3a\xbc\xed\xd9\xf0\x6b\x44\xba\x80\x0a\x4f\x53\x99\xa7\x4a\xfd\xd3\x30\xe5\xfe\xbf\xa8\x86\xf8\x17\xea\xa3\xb0\x92\x8f\x06\x3c\xdd\x10\xe5\x73\xe3\x07\x22\x83\xaa\xa4\x07\x2a\x94\xa4\x4e\xb7\x5a\x75\x44\xf5\x28\x9c\x9f\x3e\xc6\xf1\x7e\x48\x15\x55\x66\x47\x81\x05\x51\xf7\x7e\x40\x41\xb6\x7d\x7c\x64\x7a\x96\x59\xeb\x57\xa6\x57\x99\x8c\x4d\xc7\x91\x5a\xaf\xef\x55\x55\x5a\xa1\x5b\xcd\x3f\xa8\xa4\x82\x59\x72\x08\x41\x57\x60\x49\xef\xa8\x87\x77\x25\xf4\xbd\x86\xc9\xad\x05\x1b\xe7\xa4\x1e\xd8\x2a\x86\x8f\x43\x77\xbb\x74\xd8\xc1\x9b\xd4\x38\x36\x85\xf6\xb3\x7d\xed\xdc\x22\x34\xeb\x4d\x7b\xfc\x83\x7d\xd6\x73\x4c\xeb\xf5\xea\x78\x4f\xd1\xa0\x46\x38\xd5\xfa\xe0\x31\x5a\x85\xd0\x14\xfa\xb4\x06\x94\x0c\xb4\x9c\x65\xc7\x93\xfa\xc1\xb8\x7e\xbc\xa0\x1c\xcc\x85\x6e\x92\xae\x6b\x72\x19\x9b\x1b\x79\xbc\x28\x5c\xb1\x8d\x01\xc4\x1c\x61\x9f\xed\xac\x28\xf5\x08\xf0\x0f\xf7\x3f\x37\x9d\x80\xbc\xa5\xb6\x38\x25\x90\xa4\x96\xb9\x62\x33\x65\xc1\xf6\x2c\x67\x8c\xe3\xc6\xb3\xa4\x30\x49\x63\xc6\xfe\xc9\x67\x38\x92\x2f\xd4\x41\x51\xd6\xbe\xb4\x48\xe8\x94\x4c\xeb\x88\x25\x97\x7d\x20\xd4\xbc\x35\x1b\xc2\x94\x7c\xf8\xfb\x76\xcb\xd8\x54\xa7\xdb\xe1\x9e\x77\xd9\x3a\xbc\xb0\x48\x91\x8a\x12\x2f\xcd\xee\xde\xdf\x55\x5f\x2c\x97\x1a\xd6\x44\x82\x9d\x0a\xd6\x99\xf2\x3f\xdd\x84\x78\x0c\x81\x53\xa9\xe5\xe2\xb4\xf4\xb1\x34\x11\xd3\x6c\x34\x6c\xb4\x2b\x4d\xd4\x2e\xf5\x23\x03\x1e\x09\xa5\xd7\xfa\xf1\x27\xfd\xeb\xd9\x46\xf4\x6d\x36\xff\xf3\xcf\xaf\xdd\xbf\x56\x3f\x68\x5d\x69\x5c\x80\xe5\x1b\xca\xbd\xcf\xc4\x75\xb8\xa9\x59\xc8\x4b\xa5\x84\xc1\x39\x60\x42\x09\xe2\xd9\x4c\x6b\xc8\x99\xc1\xc3\x7b\x65\x67\x51\x5e\x4a\x1b\x8c\xa9\x44\x73\xe5\x46\x20\xaa\x00\x4d\xef\xb6\xe7\xbc\xdb\x79\x52\xdd\x8b\x07\x9d\xaa\x92\x6d\xfb\x4d\xaf\xda\x89\xd6\xfd\x45\x8d\x5b\xa2\x44\xfc\x90\x2e\xdf\x2b\x1c\x85\x7f\xfb\xe5\x0c\x0b\x74\x70\x85\xce\x0d\x33\x32\x8b\x8b\x33\x6b\x0c\x84\x86\x51\xea\x6d\x59\xc9\xfb\x40\xaf\x93\x4b\x21\x3f\xce\x8f\x4b\x46\x71\x7c\x7a\xf5\xec\xf1\xcb\x7e\x96\x76\x4c\xac\x57\xcd\xf2\xf1\xbe\x36\xf7\x07\xcf\x33\x5b\x10\x06\x99\x17\xb7\x1d\x09\xa9\x46\x55\x4e\xb0\x1d\x53\xf9\x94\xd8\x84\x7b\x6e\x63\x31\xc5\x84\x93\xc9\x0b\x1d\x43\xd6\x83\x77\x64\x1f\xb5\xc3\x2b\x59\xe7\xe6\x43\x43\x5c\x4c\xf7\x03\xf4\xe3\xe4\xfe\x9a\x15\xcf\xdd\x2f\x74\xff\x61\x93\x29\x73\x97\x0f\x86\xa7\x9d\xd1\x55\x0c\x58\x2f\x09\xa1\x62\x81\x11\x87\x0d\xeb\x9c\x44\xd2\x79\x3b\xdb\xba\xbf\xf0\xd8\x36\xcb\x44\xee\x74\x41\x7a\x14\x44\x12\x08\x04\xaa\x3a\xaf\x38\x1c\xd4\x2a\xfb\x8c\xf7\x81\x44\x89\x98\xbd\x6d\xcc\x5d\xb5\x02\x5c\xb5\xfd\x87\x7c\x0b\x88\x92\x47\x62\xe3\x41\x8e\xb1\x83\x74\xc9\x1a\xbb\xa8\x7a\x0c\xbf\x4a\xca\x38\x34\x51\xb5\x58\x00\xf7\x42\x02\xd4\x74\xda\x96\x69\xf6\xc3\x1d\x32\x03\x09\x80\x64\xc1\x8b\xf0\xbe\xea\xb7\x6f\xaa\x6b\xe2\x03\x4f\x1f\x95\xa0\x26\xb7\x0d\x25\xc3\xe2\x63\x64\xd3\x98\x73\x42\x9c\xfb\x49\x56\x69\x90\x2d\x9b\x4a\x7d\x4b\x42\x86\x36\x23\x6e\x86\x71\x6b\x7a\x3b\xb3\xb6\x59\xbe\x9e\xd9\xa6\x72\xdf\xab\xd6\x16\xcd\x7d\x06\xba\x1f\x98\xaf\x40\x0c\x36\x02\x96\x09\x0d\x85\xef\x01\x07\xac\xa3\x3f\x42\x5c\x9c\x5a\xb2\xd1\x1c\x5d\x65\x20\xb5\x13\xd6\x64\x5a\x58\x9e\x1e\x35\xcb\xd0\xe8\xbd\x7b\x30\xa8\x4d\x32\xbb\x08\x6e\x85\x20\xcf\x2c\x94\x4f\x1d\x54\xc8\xf9\xc0\xa6\x41\x36\xbb\x71\x6a\x8b\xbe\xbe\xd1\x69\xdf\xa2\xef\xf9\xb1\x6f\xb8\xee\xe0\xce\xc3\xee\x5c\xdc\xce\x46\x1b\x74\x1b\x93\xc1\xc9\xf6\xcf\xe0\x4e\x7d\xf1\xa7\x70\x14\x3f\x5b\x33\xcc\x1f\xe5\xb9\x31\xf0\xe0\xd5\xe6\x27\x6f\x9e\xa3\x20\x9e\xad\xd8\xcf\xed\x9d\x72\x32\xca\x9e\x87\x63\xf1\xe4\x19\xa3\xff\xeb\xe3\xde\xdd\xce\x9d\x25\xcb\x5f\x7e\xba\x68\x9e\x9a\x11\x14\x20\x43\xb8\x0e\xb7\x79\xd4\x20\x5f\x66\x40\xed\x82\x84\x1b\x30\x40\xa0\x8e\x19\x01\xcc\x69\xe7\x3b\x33\x02\xc2\xbc\x36\x20\x3b\x9d\xfb\x06\x35\x80\xf4\x95\x34\x2f\x50\x68\x6f\x90\x69\x61\x30\x1c\x74\x6e\x16\x9f\x4d\x9d\x0f\x94\xc9\xb1\xe6\xc0\x36\xd2\x10\x35\xbb\xb4\x92\xaf\xc8\x0b\xe2\xbd\xab\x32\x44\xaa\xc8\xaf\x93\x11\xa8\x3d\x73\x8f\x37\xe1\x4d\x37\xa8\xb4\x61\x35\x23\x12\x68\x03\x33\xa1\xab\x3e\xa0\x8e\x2d\x40\x53\xdb\xfe\x74\xf3\x27\xba\x03\xa7\x6b\xf5\x9c\x94\x9c\x7e\x85\xf6\xe0\xb0\x31\x17\x07\x3f\xcd\x66\x9d\x37\xcf\x5f\x6c\x9c\xab\xbf\x56\x0e\x2a\xfa\xfc\xec\x49\x6b\x53\x9f\x0c\xf1\xc2\x4b\xa3\x26\x80\x2e\x6c\xdf\x27\xb4\x86\x00\xa0\x21\x64\x83\x47\xb3\x21\xfa\x40\x38\x89\xcb\xea\x4f\x05\x89\x1b\x7f\xe4\xd3\xe8\x4b\x3c\x96\xc6\x72\xc5\x92\xcb\xad\x5a\x85\x52\xa6\x6e\xc7\x20\x07\x75\x22\xe9\x7c\xa2\xc4\xaf\xdd\x60\x06\x33\xbf\xa3\xa2\x76\x4d\x17\x5a\x0a\xff\x82\x4c\xf0\x6f\xf3\x5a\xca\x9d\xf6\x6c\x6f\x9c\xa7\x2b\x05\x5b\x8a\x50\x5d\x65\xb7\xbf\xf6\x9a\x3b\xc4\xf9\xc6\xf9\x6a\xc8\x32\xaf\xe9\xad\xfd\x25\x8f\xf9\x4d\xe2\x0e\x8a\xe5\xba\xde\xca\x8e\x8d\xd1\xf6\x9d\x1a\x1b\xf0\x7e\x35\xc1\xc8\xe1\x07\x1c\x8c\x43\x59\xf6\xf1\xb4\x51\x76\xde\xdf\xa8\x62\x61\xe6\x42\x85\x34\xa0\x3a\x02\x52\x3d\xeb\xee\xfd\x88\x9c\xd5\xd3\xdd\x96\x69\xe0\x2c\xe0\x53\xbd\xe2\x03\x01\x83\xa0\x0c\x8b\xc3\x4e\x92\x21\x6c\xaa\x6a\x5c\x31\x6e\xd6\xbf\xa6\x38\xea\xb5\xa6\x48\xbf\xa5\xda\xe6\xe1\x8c\xd1\xc4\x9b\x73\xac\x8c\x88\x95\x0a\x9c\x2c\x61\x8e\x35\xcc\xe1\x98\xb4\xb3\x82\xa7\x17\x75\x53\x14\x06\x05\xa0\x9a\x4f\x78\x60\x26\x02\xa4\xf5\x09\x70\x41\x56\xb0\x98\x19\xb2\x47\xdf\x32\x29\xcb\x3c\xc4\xd7\x28\xac\x5d\xbe\x39\x35\x3c\x34\x46\x26\x2e\x53\x0b\x88\x94\x73\x62\xb2\x74\x7a\xc9\x63\xde\xc5\x2f\xcb\x6e\xbb\x3b\x4b\xfa\xc0\x5f\x46\x01\xcd\x33\x54\x4d\x8c\xbd\x5c\xad\xf1\x63\x83\xbb\xb1\x0a\x38\x1c\xb1\xeb\xf7\xe6\x54\x75\x0e\xcd\x0c\x9d\x6e\xa3\xf8\xd0\xbf\xad\xc9\xa8\x37\x14\x77\x4f\x7e\x03\xbd\x7e\xfa\x43\xec\x46\xeb\xe0\x76\x18\x79\x25\x1e\xca\xeb\x70\xf3\xb9\xd4\xd5\xd7\xaf\x4b\xa5\x74\x9d\xdd\xf1\xde\x97\x8a\xde\x74\xc3\x35\x18\xb5\x01\x6a\xc3\xf6\x44\x3c\xdf\x40\xa3\xa8\x1d\x89\xa6\x17\x54\x09\x37\x9f\xd5\x98\x0e\x4a\x1d\x7b\xdb\x3b\xfb\xa4\x48\xf5\xb3\x02\xe3\xe1\x38\x66\xab\x85\xce\x78\x4f\x67\x90\x23\x41\xbf\xaa\x39\x5d\x8c\x5e\x8a\x52\xf7\xe7\xee\x71\xc3\x9b\x66\x30\x98\x2d\x9b\x4c\x0f\x0a\x28\xc9\xb5\x0b\xba\xd7\x7a\xef\x29\x34\xbe\x83\x2b\xe5\xe8\x5d\x36\x57\xef\xe8\x43\x23\x11\xf4\x05\x3a\xea\x66\x40\xd5\xc5\xa4\xc9\x12\x45\xe1\xde\x0a\x3c\xaf\x48\xd3\xde\xf0\x17\x65\x3f\x49\xfa\x2b\xc1\x1e\xdd\x03\x77\xda\x61\x6d\xa8\x98\x59\xdc\x8a\x64\xb3\xd8\xfb\xc9\x6d\x64\x26\x33\xd4\x76\xc4\x54\xa5\xd5\x82\xa2\x5d\x66\x1a\x4f\x11\x35\x2c\x47\x58\xf5\xa1\xc3\x92\x73\xda\x3e\x02\x69\x37\x7d\xe9\xb6\x2d\xa7\x2c\x15\xe3\x46\x45\xd9\x1b\xb6\x38\xc7\x71\xca\xde\x96\x43\xf3\xce\xbe\x96\x5d\xb2\x4b\x87\x51\x5d\xc1\xbc\xf1\x47\x70\xb6\xb2\x8b\x72\x59\x88\xd8\x30\x25\x56\x09\x20\x31\x41\x7a\x2b\x2f\x9c\xe4\x75\x0d\x83\xb1\xbb\xee\xca\x6a\x5b\xe4\xa9\x52\xe3\x4a\x04\x58\x4d\xf0\x2a\x55\x98\xa8\xda\x50\xa5\x90\x13\xf9\x4a\x3e\x8a\x29\x8c\xd2\x14\x29\xbb\x46\xd3\x61\xf6\xa9\xf2\xa8\xfb\xd6\x07\xf7\x54\x02\x66\x7d\x35\x30\x5b\x56\xcf\xd2\x58\xda\x87\xf6\x03\x17\x76\x6d\xde\xe4\xa3\xa6\x7a\x2d\xab\x31\x31\x4a\x72\x4d\x74\x9c\x06\x57\x3d\x7a\x1c\x53\xff\xc8\x5e\x67\x62\x9f\x7e\x5e\x34\x0a\x0a\xa7\x03\x80\xa9\xeb\xc5\x58\x84\x8a\x13\xfa\x70\x62\xed\xb6\x2e\xfc\xee\x06\x1d\xbc\xc2\xb4\x3e\x17\xd5\xcc\x11\x23\x35\xed\x59\x19\x9c\xca\x74\xa5\x61\x6a\x77\x5a\xda\x1e\x62\x76\x47\xf1\xdd\x54\x48\x34\x07\xd8\x40\xf6\xab\xbb\x14\xae\x24\x00\x23\x53\x7c\x33\x48\xb2\x5a\xf0\xef\xfe\xe3\x2a\x4b\x24\xb5\x2a\xea\x39\x0f\x4c\xe8\x18\xdf\x2b\xdc\x9a\x62\xa6\xd0\xee\x41\xc4\x3a\xe7\x1b\xa7\x2b\x21\x2b\x63\x16\x47\x36\xac\xd5\xaf\xc3\x92\x23\x73\x92\x40\x96\xac\xdb\x29\x97\x37\x2c\x56\xb3\x15\x9e\xf6\xcc\x60\x0a\xfe\x89\x76\x96\x43\xf1\x07\x91\x62\xd6\x56\xec\x77\x66\xd9\x51\x04\xb0\xaf\xbb\x7b\xa2\x5e\xcc\x75\x4d\x18\x38\x35\x2c\xce\x65\x67\x2a\x65\x81\x75\x00\x5b\xea\x77\x30\xc8\x82\xd9\xa8\x9b\x0d\x51\x0a\xec\x3a\x53\xf2\x45\xa8\x45\x8a\xf8\x1f\x75\x5c\xc3\xe0\xd4\x25\x74\xdd\x70\x1a\xf3\x85\x7f\xa4\x3e\xee\x10\xc2\xdd\xe5\x6c\x4b\xc5\x5c\x87\xd7\x3b\xe0\xeb\x2f\x8d\x32\x41\x86\x7a\x57\x24\x6b\x89\x22\xaa\xea\xdb\xd0\x2d\xf8\x64\xf5\x2a\x1b\x29\x4f\xc9\xa9\x44\x11\x55\x21\xbc\xb4\xfa\xdf\x02\x0b\xc8\x09\x51\x4c\x85\x6a\x53\x97\x28\x71\x3c\x0c\xcb\x6d\xc3\x5c\x2a\x6c\xb3\x8b\xdf\xb8\x0a\x4c\xcd\xb9\x93\x67\x0e\x89\x0d\x05\x76\x66\x31\x21\xe5\x01\xa0\x69\xab\xec\xdd\xa0\x51\x85\x6d\xcc\x19\x4f\xb8\x5b\xa6\xa3\xb8\x73\xda\x2b\x5a\xcb\x95\xf0\xc1\xf0\xa8\x4b\x38\xc1\xd3\x1a\xbc\xa0\xf3\x4a\xda\xa1\x87\x20\x58\xdf\x43\x2a\xcf\xa0\xca\x6a\x58\xb8\xb7\xf9\xb9\x37\x12\xcb\x80\xf5\x3c\xf6\xa0\x43\xc3\x84\x7e\xf0\x6a\xda\xee\x31\xbb\x5a\x24\xa1\x1b\x65\x3e\x95\x86\x7f\x65\x40\xf5\x10\x86\xd1\xd6\xa3\x57\x0a\x3d\x92\x3f\x99\x74\x81\xa8\xd5\x58\x16\xca\x56\x90\x59\x21\x96\xe8\x92\xdc\xbe\x46\x3d\x2e\x2c\x22\x0e\x16\xd9\xb9\x33\x8d\x40\x5b\x9e\xfe\xb7\xe4\x42\x99\x15\xcb\x34\xd2\xf0\x16\xee\x39\x9b\x45\xfe\x49\xbf\x5b\x24\x41\xd7\xc0\x08\x0b\x75\x58\x9a\xac\x60\x68\x80\xb2\xc8\x24\xd5\x51\x09\xb0\x76\x43\x3f\x85\xbb\x0b\x28\x17\x5c\x8a\x4e\xd2\x61\x18\x0e\x30\x42\x70\x55\xd9\x90\x20\x64\x3e\xef\x19\x0e\x8c\xda\x5d\x5c\x5f\xe5\x22\x91\xa0\xfa\x1e\x97\xd2\xa8\xcc\xcf\xb8\xe8\xdc\x0b\x7c\x7a\x71\x4f\x54\x56\xf1\x0f\xfa\x23\x17\x3f\xc1\x75\xf5\x59\x1f\x24\x10\x9b\x19\xf4\xa1\x6c\xca\x8d\xce\x9b\xfd\xad\xe9\x58\xbc\x05\x6a\xe5\x5c\x2b\x83\xbf\x9c\x02\x55\x56\x1a\xf6\x2c\x75\x33\xe5\x80\xb0\x61\x62\x66\xad\x0a\x16\x80\xad\x64\xfb\x31\x9c\x13\xd3\xda\xc2\xd4\xee\x81\xa2\x12\xbf\x1a\x15\xfa\x87\x87\x4f\x2b\x70\xb1\xd4\x7f\x87\x33\xea\xf5\xd3\xb2\x98\x7a\xee\x39\xcd\xe5\x85\x7a\x1e\x27\x4d\x3b\xb6\x41\x18\x66\x32\x42\x13\x5a\x62\xd9\xa1\x52\x29\xf9\xaf\x79\xf2\xc7\x0e\x6a\xb5\x99\x6c\x42\xa7\x05\x90\x9a\x95\x4e\x70\xcd\x27\xc6\x10\x86\x53\x9c\x61\x45\x1b\xac\x97\xcb\x72\x57\x94\x19\x58\xbd\x27\x2f\xc6\x20\x82\x9d\x02\x0a\xd2\x8d\xf4\xa5\x8c\x8c\xf2\xb4\xba\xda\x19\x4b\x50\xcd\xe2\x8a\xf1\xf5\xdf\x8d\xa0\x00\xa0\xb2\xf0\x5b\x67\x98\x03\xd5\x54\xd4\xdb\x93\xa4\x54\x81\xf3\x12\x3d\x2b\x7e\xd4\x3f\x4d\xd8\xdd\xfc\x99\xe9\x1f\xf1\x2c\x9e\x51\x2d\xe5\x4c\xe4\xca\x93\x81\x45\xf9\x29\x29\x4b\x7e\x32\x41\xf0\x09\x3b\x22\x0c\xf1\x63\xed\xa5\x9c\xdc\x65\x99\x63\xe1\xbe\x70\x1e\x45\x18\x4b\x00\xc0\xbb\x75\x3e\x18\x39\x18\x49\xc7\xcb\xa2\x24\x67\xc8\xd0\x33\xff\x7f\x06\x65\x61\x3e\xcb\xf3\xfb\xe9\xbb\x20\x8d\x50\xf4\x2c\x2f\xda\xb8\x2e\x5b\x87\x3c\x9f\xfa\x20\x4c\xe6\x26\x40\x2d\xbe\x16\xa4\x62\x5b\x1f\x7b\x03\x9f\xd5\x07\x34\xc8\x62\x2b\xc3\xbc\xee\xb7\xc2\x6c\xf6\x2f\x5b\x80\x56\xf2\x66\xca\xf3\xdc\xd1\x1c\xae\x8c\x06\xc7\x11\x6d\x56\xbf\x22\x76\x13\x38\x10\xb3\xfa\x8f\xaa\x1a\xa1\x6b\x6a\x3f\x6c\x70\x82\x8b\xb1\x0c\xb0\xfd\x7d\xce\x36\x2e\xa0\x9e\x36\xae\xdc\x43\xaa\x83\xd3\xb6\x09\x2c\xaa\xd0\x14\x04\x61\xf1\x47\x65\x75\xc9\xb9\x4a\xbc\xa7\xee\x9e\x37\xca\xf1\xda\x5d\xc5\x45\xaf\x31\x37\x55\x48\x27\xd9\xb5\x9e\xe3\x5a\xd8\xc2\x79\x43\xfc\x6d\x40\x8b\x45\x7d\xeb\x99\xe8\xfe\xb4\xf2\x6a\x2c\xa3\xc3\xf9\xbb\x85\xdb\xaa\x5a\x53\x4f\xea\xf6\xaa\xf5\xc3\x03\x64\xdc\x8b\x1d\xe0\x4f\xd1\x91\x47\x2c\x18\xa1\xdb\x6a\x24\x39\x5b\x18\x78\x2b\x2b\x0d\xc1\x19\x84\xd5\x9e\x54\x20\x47\x4e\xd9\x40\xb7\x82\xfb\x98\xf0\xfd\xbc\x6e\xd5\x0b\x00\x8e\xab\x08\x33\xf2\xb4\xdc\x03\x9f\xcd\x09\x0c\xa9\xaa\xdb\xaf\x69\xe1\x8a\x5a\x58\x47\xac\x6d\xdf\xd0\x6e\xbd\xb2\x74\x6b\x68\x4b\x90\x0c\x3c\x98\x7e\x8d\x0f\x75\xdb\x5e\x96\x4b\x29\xf6\xe0\x67\x83\xac\x01\x1c\xa8\x29\x34\x42\x9a\x46\x83\x28\x34\x5d\xea\xc8\x74\x15\xf4\x14\xc5\x3d\x5b\xd4\x0f\xac\x12\xb2\x62\xc9\xe0\xba\xd6\x9c\x08\x45\xe3\xb4\xe7\x64\x34\x72\x0e\xdc\x70\xf6\x32\xd9\x9d\xa9\x56\xcd\x6e\x77\xe2\x88\xe5\xc6\x77\x40\xdd\x2d\xb3\x77\x73\xad\xcf\x4e\x1b\x9d\x01\x1c\xeb\xa8\xfd\x2e\xb6\x88\x5e\x62\xad\x32\x8b\xe8\x79\xc0\x99\xdb\xd0\xfd\x07\x02\xb0\x7d\x49\x0c\x0c\xbd\x88\xb7\x24\x30\x58\x5a\x41\x1e\xae\xe2\x56\x9e\x1e\xc0\x8a\xa4\x36\xac\x34\x12\x82\xd8\x47\xf5\x5b\xf6\xcd\xfe\x03\xa5\x8a\x59\x9a\x83\xe8\x5a\x4a\x9f\xe3\xa3\x65\x84\x98\xfa\xe0\xb1\x1a\x75\x81\x68\x32\x33\x71\xb4\x01\x98\x3f\x50\xc8\xa5\x84\xbb\x60\x63\x8f\x9d\x3b\x16\xd9\x36\xe3\xa3\x17\x8d\xa0\x12\x6f\xc1\x6d\x94\xd8\xd5\xd9\x5d\xcb\x90\x3c\x4d\x4c\x92\x85\x44\x6a\x84\x35\x15\xa1\x9e\x9f\x21\x2a\x58\x73\x63\x25\x2d\x9e\xe6\x4f\xed\x5b\xbc\x1b\x48\x02\x24\x0b\x0b\x77\xf6\x10\x46\xd2\x15\x4d\x82\x26\x06\x12\x28\x46\x50\xdf\x7e\xb2\xb5\x89\x7d\xb2\x18\xb7\xd1\x27\xc7\x54\x5c\x33\x58\x37\x36\xee\x64\x05\x2b\x6d\xc7\x7c\xbd\xf9\x1c\x74\xed\x11\x53\x96\x38\x49\xf2\x3f\x15\x58\x1f\xe7\x59\xaa\x96\xdb\xd3\x0f\xb7\x12\xaf\x87\x8a\xa5\xab\x45\xec\x6f\x55\x65\x5f\x33\xf3\x6d\x63\x10\x4b\x80\xfc\x3b\x08\x85\xaa\x5f\xd7\xa6\x10\xb2\xdf\xfb\xb4\x4e\x2d\x16\x41\x68\x1f\xc3\xde\x08\xad\x82\xf6\x7d\x03\xac\x6f\x1f\x8c\x23\x8a\x77\x8f\xf8\x49\x6f\x3e\xdf\x23\xa3\x32\x9a\xd7\x5c\x12\x30\xb8\xe0\xc2\x82\x90\x93\xe7\x31\x1e\xbe\x2a\xdc\x67\x10\xd8\x77\xde\x4f\x95\x66\xd2\x4e\xbe\x78\x2e\xb0\xc5\x04\xda\x19\x0f\x20\xe0\x74\x8e\x69\x4e\xff\x4e\x41\xd3\x9b\xa3\x80\xc4\x51\x64\x00\xea\x81\x6c\x03\xaa\x21\x73\xc9\x2d\x1b\xd7\xf7\xd1\xcc\x00\x5c\x67\xbf\x86\x13\x45\x06\x00\x81\x17\x91\x3c\x87\x46\xf0\x24\x48\x93\x47\xd9\x6a\x31\xab\x5f\x3c\xf4\xef\xe7\x7d\x79\x66\x07\xa1\x38\xc4\x1b\x6c\x2d\xc1\x90\xec\x14\x0b\xa8\xc2\x04\x49\xa9\xda\x8f\x19\x91\x50\x99\xc9\x54\x16\x31\xbf\xc9\x8c\x2f\x04\x25\x18\xc1\x82\x5e\xee\xc2\xbb\x1e\x52\x86\x3c\x07\x42\x0c\xca\x26\xf2\x0c\x4b\xbd\x22\xd2\xfb\x93\x96\xa1\xbc\x5d\xfe\xea\x7f\xbf\x7e\x7b\xbb\x75\x5b\xfc\x33\xf9\x66\x82\x43\xdd\xe4\x0b\x48\x65\x4b\x3c\x74\x20\x13\xa5\x3d\x41\x0f\x12\xfc\x1c\xef\x60\xc4\x47\x72\xc9\xd4\x9a\x65\xe8\x39\x0b\x04\x93\xfa\xe0\xf1\x99\x08\x54\xf9\x00\xd1\xaa\x6a\x14\x0b\x89\x3c\xbb\x7f\x39\xa2\x77\xa9\x38\xce\x15\x60\xd8\xe2\x1f\x15\x30\x55\x28\xd4\x4a\xd0\x7f\xe8\x01\x0d\x8b\x28\x1e\x41\x25\xda\xad\xc2\x90\xa7\x53\x59\xe3\x41\xe5\xa5\x04\x4d\x20\x6a\xaf\xad\x31\xe5\xe6\x8e\x24\x77\xa2\xec\x37\xeb\x82\x70\x6f\x2a\x9a\xf7\xf4\x14\xda\x5c\xcb\x8e\xb0\x4a\xbe\x71\xc3\x8a\xea\x2b\x3b\xa8\xf8\x8a\x32\xb7\x0c\x2c\x7e\x76\x91\xfd\x8e\x87\xce\xc4\x10\x75\xb0\x4d\x53\x78\x91\x28\x6a\x3b\xdf\x56\x78\xb0\xa9\xaa\x13\xca\x36\xc0\x80\x35\x54\x89\xfd\x71\x44\x8d\x50\x6f\xd4\x5d\x4c\xa7\x6e\x3e\x97\x55\x9b\xac\xcb\x58\xc6\x14\xb7\x43\xf1\x25\xb3\x2e\x91\x6d\xa1\x32\xf2\x42\xd1\xa4\x94\x38\x1b\x60\xcb\xbd\xbc\xd2\x36\x3d\x99\xd6\xc3\x96\x42\xe9\x9d\x0a\xb5\xf5\x72\x7d\x9d\xfc\x45\x2e\x27\x11\x2f\x7e\xdd\x69\xd0\xad\x76\xcd\x8c\x71\x04\x51\xf2\x3a\x68\xf2\x62\x2c\x8e\xf2\x35\x0e\x9e\xe7\xef\xd7\x77\x87\xd5\xf4\x80\x51\xa2\xee\x86\x7b\xfc\xf6\x47\x11\xdc\x88\xd7\xaf\xad\x51\xbd\xcd\x1b\x9b\x9b\x84\x08\xc4\x54\x4a\x7e\xce\xca\xed\xf4\xf2\xcb\xe2\xe9\xb4\xf0\xb8\x84\xe5\x0b\x3a\xb6\x9b\x25\x84\x8b\xfe\x6d\xf9\xce\x4f\x9c\xbb\x78\x6c\x73\xe8\xe2\xb1\xee\xc9\xd5\xff\xc7\x78\xdd\x09\x05\xd1\xb5\xb3\xd8\xe6\x63\x73\x32\xab\x8b\x5f\x88\xc1\x6c\x37\x38\x06\xcd\x59\xde\xc3\xd7\x75\x56\x31\xe6\x57\x94\xe9\x25\x89\x1c\x5f\xcf\xc3\xcb\x32\x3f\x83\x22\xbc\x00\xc5\x95\x7b\x97\x0d\xf3\x73\xa8\x19\x34\x0d\x36\xed\xc6\x24\xcc\x00\xea\x8b\xb6\xaf\xc1\xd3\x99\x61\x04\x02\x9e\x89\x83\xde\xb2\x27\x80\x0f\x57\x4d\x4a\xe6\xda\xa1\x00\x3a\x30\x1c\x45\x8c\x82\x6a\x37\x2d\x14\xe2\x89\x3d\x24\x4e\x6c\xde\x83\xc3\x92\x0a\xda\xf9\x6e\xbc\x58\x79\x90\xb0\x62\x5a\x5f\xef\x69\x4c\x56\x2f\x0a\x0b\x7e\x01\x6f\x02\x6a\x5e\xd7\x2e\x6d\x38\xae\x79\x05\x40\x8a\x1f\xa0\x2b\xf6\x3a\xa3\xc5\x47\x05\xd3\xaa\x0d\x70\x6b\x82\x44\xbd\x1e\xa3\x0b\x21\x86\x64\xcd\x45\x23\xdd\x76\x91\x4a\xb4\x09\xa3\x22\x83\x35\x94\x41\x30\x95\xb7\xc9\x01\x88\x5a\x75\x85\x0a\x22\x84\x00\x4e\x6d\x9b\x9f\x12\x5a\xd6\xcd\x4d\x2a\x1b\xfb\x6c\x80\x38\x68\x4c\xb6\x85\x55\x12\x02\x53\x55\xe0\xa3\x98\x4b\x2e\x51\x1b\xb6\x7b\x4b\xca\x7b\x78\x58\x4b\xbe\xbc\x39\x0b\x38\xa6\x26\x6e\x39\x42\x3b\xf7\xcd\x55\xee\x71\x6b\xcb\x32\xdc\x5f\x7c\x33\xcb\x5a\x6e\x3d\x59\x8a\xeb\xd3\x79\xcb\x58\xf2\x92\x5a\x67\x93\x27\xf5\xcf\x74\x73\x97\xde\xdc\x46\x48\x59\xd9\xbf\xf8\xc6\xa5\x3f\xab\xa6\xbc\xcf\xa2\x95\x79\x6b\x8d\xc0\x80\xae\x69\x59\x23\xab\xa8\x7c\x18\xb2\x0e\x79\x58\x3c\x4d\xaf\x3b\x2e\x2b\xb2\x22\xf9\x18\xe9\xd2\x00\xf5\x7d\x80\xb1\x65\x50\xac\x36\xe6\x89\x57\x75\x63\xd7\x88\x93\xd2\xb0\xa4\xe1\x46\x72\x2b\x2b\x79\x6d\x0d\xc9\x3b\x53\x2e\xdc\x8d\x8a\xa3\x35\x31\x15\xaa\xee\x5c\xb4\xb9\x12\xcb\xbb\xe4\x97\x1d\x52\x45\x7e\x33\xd2\x61\x15\x04\xfe\x79\xec\x57\x05\x30\x1c\x85\x91\x62\x4a\x83\xdf\x93\x76\x28\x00\x6d\x0d\xd0\xdc\xc2\xe6\x0b\x34\xac\x4e\x84\x06\x06\x2d\xc2\xee\xc4\x5f\xf8\xac\x5f\xfd\x83\x35\xd4\x6b\xc7\x62\xee\x13\x53\xa2\x4c\x09\x0e\xf7\x37\x72\x50\x5a\xee\xce\x4c\xf4\x57\x16\xe4\x35\xb9\x25\x48\x02\x5e\x38\x46\x4c\xf5\x76\x79\x65\xce\xeb\xd6\x92\x51\x79\xbd\x98\x39\x1b\x9e\x90\x9c\x89\x7b\x33\xfa\x32\xac\x4b\x07\xa6\x9f\x5e\xe6\xd1\x43\x30\x7a\xa7\xac\x83\x78\xd9\xdc\xda\xee\xbf\xab\x3c\x19\xf9\x49\xab\x91\xe3\x7a\xb8\x02\x1b\xd5\xf3\x6a\x22\xfc\x68\x3d\x45\xeb\x4c\x06\x68\xfe\xa7\xbe\x7f\x81\x6d\x83\xf0\xf9\x31\xd6\x9d\xe1\x31\xaa\x84\xee\xf5\xf1\x00\x70\xb9\xe3\x2a\x47\x2f\xe4\x99\x8e\xba\x4d\xb3\x32\x2f\x82\x19\xe4\xdf\x6f\x58\x8c\x30\xdd\x5c\x8c\x9e\x91\x5e\x11\x7b\x0e\x4a\x2d\x18\x02\xdb\xf3\x71\x0c\x15\xe2\x25\x55\x94\xeb\xcf\xa6\x4b\x41\x7c\x46\xae\xec\x7a\x84\xe2\x62\xce\xdf\x6b\xcb\xbd\x17\x25\x68\x1d\x6b\x66\x21\x7c\x31\x55\x10\xde\x88\xb1\xab\x11\x5e\x59\xe2\xab\xb7\xce\x31\x61\x16\x6e\xd4\x97\xcb\xa3\xf5\xe5\x3d\x8f\x2b\x3c\xd5\xa0\x2d\xe6\x8d\x65\xc7\xef\xf7\x7d\xf0\xbc\x59\xab\xe8\xb6\x79\xf2\x7c\xc6\xfb\x3f\xf0\x7e\xe8\xef\x91\xd4\x5e\xf2\xc2\x6b\x8c\x23\xd6\xa7\x31\xcb\x90\xe7\xee\xd9\x97\xf0\xda\x01\x6d\x91\xec\x1c\xbc\xc3\x9a\x7f\x67\x6e\x07\xb4\x9d\xc5\x88\x34\x68\xe2\xba\xb4\xa5\xee\xb8\x6a\x32\x13\x7a\x54\x58\xaf\xd0\x28\xbe\x55\xf3\x4d\xbf\x8b\x4a\x26\x6e\xb4\xc9\x2c\xaf\xdb\xf3\x75\x64\xad\x17\xa9\x5b\x1a\x39\xa5\xfe\xda\x8e\x1d\x91\x7f\x07\xd9\x1b\xc7\x84\x9d\x86\xab\x7d\x31\x7e\xac\x7e\xb2\x7d\x23\xd0\xb2\x4e\x0c\xcf\xb3\x64\xe7\x8d\xfe\x82\x41\x73\x45\x56\x61\x4f\x33\xce\x17\xfa\xa2\x31\x86\xd8\xcc\x24\x83\xd5\x7f\xf4\x44\xa3\xcd\x2e\x31\xd8\xc2\xfa\xb1\xf5\x22\xb0\xe1\x80\xfa\x6c\x01\xea\x30\x03\x42\xc1\x7e\xc7\xc4\x47\xea\x52\x39\x0b\xde\x85\x50\xe2\x10\x3a\xd0\x60\x02\xea\x00\xfb\x95\x27\x87\x0d\x03\x26\x0c\x61\xf3\xcb\x75\xea\x11\x57\xbb\xf4\xe6\x21\xde\x68\x11\x54\x64\x2e\x49\xd9\xb7\x0d\x91\xb3\x27\xa9\xad\x35\x17\xe8\xa7\xf6\x7b\x1b\x42\xcf\xd3\x17\x3f\x66\xfd\x3a\x89\xfa\x59\x88\xc7\x64\x59\x97\x02\xe4\xe8\x66\xe5\xa2\x62\x5b\xb7\xbb\xe1\xc5\x45\xce\x87\xc9\x6a\x6f\x38\x05\xe0\xa5\x66\xb1\x1c\x51\x90\xc4\xc4\x1b\x8a\xa4\x16\xed\x62\xde\x9a\xe0\xa8\x73\xc8\x5f\x3b\x38\x1a\x11\xad\xdb\x0f\x18\xbb\xd6\x51\xed\x54\xc6\x70\x97\x47\x0b\xfe\x82\xe8\xd6\x48\x57\x3d\xd4\x62\x25\x30\x6f\x6c\x44\x8b\xc5\x9c\xfb\x0e\x76\x30\x7e\x2c\xbc\x47\x74\x83\x95\xf0\x16\x3a\x59\x5d\x83\x5d\xa3\xbe\x81\xb0\x82\x5d\x9f\xac\x0f\xf7\xcb\x40\xa3\xde\x82\x81\xcc\xa6\xdb\x6d\xc2\xb2\xcd\x50\xc6\x2b\x28\xd0\x8a\x18\x3f\xca\x65\x2d\x58\xd7\x57\x36\x27\xd5\x4a\x8a\x81\x61\x44\x93\xc8\x9a\x9c\x18\x3e\xd5\x26\x1d\x84\xda\x39\x4a\xa5\x3a\xed\xa8\xc4\xc7\x94\xbc\x58\x8b\x58\xdd\x22\x45\x5e\x9e\xb0\xd8\x46\x82\x7c\x3e\x8d\xbf\x52\x97\xdd\x5d\xb2\x31\x58\x38\x92\x83\x78\xc0\x63\x30\x44\x86\x44\x30\x5b\xbe\xc3\xbe\x3e\x1a\xa7\x77\x22\x9a\xef\x77\xbd\x63\x72\x4e\x8e\xa5\x74\x57\x24\xdc\x11\x11\xfd\x6e\xe4\x2e\x99\xfa\x6c\xc5\x43\x8a\x34\x45\x2f\x93\x2b\xd9\xf2\xae\x08\xe3\xd6\xd2\x71\x00\xdd\x96\xaf\x26\xba\x80\x8d\x95\xed\x65\xe1\x51\xfe\x04\x91\x4e\xda\x41\x52\xa0\x84\xed\x11\x91\xd7\xc5\xef\x8e\x8c\xb6\x34\x87\x9d\xe8\xd2\xe6\xa3\x1a\xbb\xd6\x34\xab\x14\x23\xf3\x60\x67\x91\x2c\x77\x87\x0f\x0d\x76\x3f\x96\xfb\x3c\x67\xbb\x37\xa5\x31\x85\x88\xca\xb1\xee\x42\x92\x4c\xfe\x36\xb0\x03\xe2\xc0\xbd\x59\x08\xbe\x7a\x7a\x82\x14\x2c\x9c\x0f\xef\x81\x58\x5d\x50\x82\xe6\x8a\x31\x00\x85\x93\x54\xdd\xb4\xef\xc7\xb0\x43\xbe\x34\xab\x4a\x49\x54\x44\x23\x6b\x20\x99\xe6\x58\xc9\x42\x11\x49\x4c\x2c\xb0\xad\x95\xcc\xed\x0d\xaa\xe1\x2b\x77\x9c\x08\x64\x4a\x26\x32\x86\x25\x07\xd8\x87\x1e\x8f\xeb\x75\x49\x57\x78\xb3\x14\xba\xb3\x2c\xdb\xae\x20\x8e\x72\x8e\xed\x06\x0d\x39\x37\x99\x32\xd1\xe5\xb8\x1e\x98\x58\xb4\xcc\x4d\xf2\x5f\x57\x9e\x43\xc6\x25\x51\xbf\x7c\xb6\xcb\x4b\x41\x61\x8e\xb7\x27\x3b\xea\x92\xf0\xc7\x0e\x8e\x3a\xe6\xf8\x9f\x2b\xaf\x64\x9f\xcf\xd6\x2d\x29\xc8\x44\x60\xe1\x9c\xa4\x61\xf9\x9d\x1a\x69\x0e\x76\x24\x43\x7f\x5f\x63\x91\x3f\xa3\x0c\x5a\x7c\x1b\x46\x38\x75\x1c\x4e\x40\xfc\x95\x62\x13\x3b\x65\x14\x42\x57\x27\x9d\x3e\xfe\xf6\x96\x4a\x49\x9d\xd4\x21\x56\x01\x10\x7a\x69\xa7\xe6\xd9\x2d\x05\x31\x30\x69\x29\x3e\x48\x09\x58\xa9\x84\x0a\xec\xb7\xae\x1b\x11\x6a\x92\xe7\x5b\x0e\x5d\x3b\x76\x48\xda\xd2\x78\x13\x55\x62\x21\x30\xee\x43\x88\x13\x5e\xe7\x9e\xf2\xf7\xbe\x20\xd3\x69\xa4\x5e\xb2\x9c\x9d\x78\x98\x80\x47\xb1\x53\x5d\xbf\x96\x48\x00\xf5\x18\xa3\x74\xaa\x5a\xaa\x84\x66\x96\xd6\xa8\x77\x13\xcb\x7c\x0d\xcc\x70\xee\x88\x70\xa8\xdc\x4c\xef\x4e\x3a\x42\xb4\x67\x80\x6f\x92\x6c\x08\x41\x4f\x07\x68\x5e\x8e\x13\x14\xb6\xa6\x5a\xf6\xd8\xe0\x8c\x6e\x74\x20\xaf\xe8\x76\xeb\x6f\xf6\xb4\x53\xec\x76\xbb\x5b\x7a\x39\xf4\x1c\xf1\xec\x24\xcf\xbe\x95\x30\x71\xd4\x58\xc5\xd1\xb4\xc9\xd2\x2d\x00\xbe\x5a\xa9\xc8\x7f\xa8\x32\x07\x13\x75\x6e\x79\xb6\x48\x47\xe0\xec\xd5\x6f\x82\x94\x03\x8c\x07\xf2\x56\x23\xa6\xf0\x26\x11\xac\xe9\x72\x40\x3b\x80\x87\x86\x7c\xda\x7f\x55\x0e\xa1\xe7\x9b\x69\x7a\x6c\x27\xbf\xe7\x8b\x04\x56\x5e\xcf\x40\xb0\x1f\xb7\x23\x81\xd4\x07\xc5\xcf\x84\x19\x04\x62\x4a\x0e\x16\x05\x48\xaf\x5e\x4a\x82\xea\xc1\x9c\x00\xa1\xf7\xca\x11\x8b\x43\xd4\x1b\x22\xcf\x46\x70\xe6\xbb\x16\x5a\xf1\x3d\xa3\xd6\xa6\x25\x31\x6c\xcf\x2e\xb9\x56\x73\x95\x70\x3e\x3b\x2d\x70\xca\x48\x73\x0d\x75\xc7\xbe\x5f\xb5\xc0\xf3\x23\x54\x53\x97\xfa\xee\x77\x7c\xbc\x4c\x18\xf0\xe5\xd1\x3d\x6f\xa3\x4b\xda\xd0\x1c\xe9\x3c\x1d\xc9\xfa\x13\xff\xe4\xaf\xef\x31\x2b\x6f\x97\xcb\x24\xe2\xb7\x59\x3e\x9b\x35\xa3\x82\x22\xeb\xa3\x3e\xcf\xae\xb1\x49\x41\xec\xa2\xda\xdf\x71\x37\xbb\x31\x5a\x3d\xa1\x51\xfa\x3f\x3f\xa6\xdc\xe6\xa9\x3b\x72\x74\x9f\xe7\xb9\xa9\xd0\xd2\x48\x46\x82\x27\x6c\xdb\xd7\xc9\x57\x98\x7f\x8d\x3b\x78\xdc\xf6\x9d\x66\x53\xf3\x8e\x1e\xbd\x6d\x8f\xe0\xe8\x23\x7e\x66\x08\x13\x03\xfc\x2a\x8a\xd0\x33\xcd\xa1\xf1\x7a\xac\x34\x12\x72\x63\xeb\x5c\x7e\x24\x64\xf2\xa9\x4c\x95\x74\xb0\x4e\xa6\x82\xb5\x34\xf7\xc0\x5d\x80\xf1\xe8\x6a\xe0\x26\x09\x84\x04\x83\x01\xbd\x08\xf9\x2a\xea\x40\x2e\xbd\x3f\xfc\xfb\x90\xff\x35\xbb\x69\x23\x87\x83\xbc\xee\xae\x04\x30\xb8\x65\x92\xa1\x2b\x82\xaa\xf1\xfb\x4f\x0a\xa1\x34\xdd\x55\x59\x1a\x69\x16\x2e\x6a\xe0\x46\xd5\x39\x09\xfe\x0c\x51\xca\x8a\x1c\xd5\x24\x01\x30\xcc\x4c\x3a\x1c\xd7\x1e\xa7\xdb\xd9\x52\x7b\x9c\x69\xb1\x37\xfc\x1b\xb7\x26\x75\x82\x95\x64\xf8\x0b\xc5\xc4\xd7\x29\xc5\xbe\xa6\x8f\xc9\x74\x73\x68\xa9\x80\x70\xab\x26\x3f\x75\xe8\x34\x49\x50\xaf\x7b\xe0\x18\xb3\x6d\x38\x87\x64\xf1\xed\x42\xdb\xc5\xb6\x4f\x64\xad\xae\xcc\x21\xab\x2d\x6f\x02\x87\xf9\x4d\xf0\xcc\xac\x92\xf7\xe7\xfd\x63\x9a\xac\x57\xe6\x0e\xa8\x84\x51\xad\x53\x33\x89\x36\xe8\x89\x87\x7d\xff\x13\xd5\xc2\xf1\xd6\xe9\xbb\x96\x82\x54\xce\x58\xc0\x1c\x12\x14\x28\x16\x57\xb6\x71\x19\xcc\x3c\xbc\xaa\x08\x7b\x87\xc5\x1d\xe7\x64\xe6\x89\x19\xe3\xa2\x7f\xb2\xf1\x00\xe5\x30\xa7\x5f\x50\x81\xa5\x9a\x8c\x7a\xe6\xc9\xed\xd0\x69\x5f\x54\x4d\xfb\xdc\x7e\x8e\x67\xe9\x18\xe8\x8e\x62\x39\x3a\xd4\xe4\xa4\x02\x65\x16\xc7\x2a\x87\xca\x73\xc2\xf0\xf7\x9a\x6e\x1b\x14\xa7\xf2\x32\xdc\x6d\x41\x90\x28\x39\xbf\x4b\x4a\x52\x9e\x46\xde\xfc\x0b\xf0\xbf\x57\x3d\x54\xcf\x8b\x84\xdd\xeb\xc2\xea\xaa\xeb\xfd\xba\xd3\x90\xe9\xa5\xaa\x4e\xd3\xe8\x54\x3b\x6e\xa6\x66\x87\x63\x8b\xe0\x2e\x68\xf2\x8a\x3b\x55\xcf\xcc\xe1\xd0\xa2\xc0\xa3\xa9\x5b\xc4\x0c\x67\xcc\xfd\x4e\xb7\xda\x0b\x8d\xdc\xc9\x41\x73\x5d\xf6\xc4\x6c\x78\xf9\x36\xde\xa6\x01\x2c\x8a\x66\x9c\x7b\x75\xac\xd4\x7c\x39\x23\x9a\x0e\x2d\x92\x2c\xdd\x59\x4f\x3b\x0c\xbb\x35\x5d\x78\xf8\x2d\xdc\xaa\x4d\xab\x46\xe9\x3e\x8a\x68\x87\x1e\x9c\xc0\x70\x09\x56\xea\x62\x29\x8c\xbb\xe5\xf8\xb6\xd9\xac\xfd\x24\xbc\x53\x1e\x0b\xa3\x56\x00\x58\x79\xa2\x0f\xf2\x7b\xac\xe4\x0d\x18\xbd\x3b\x19\x66\x22\xf4\x23\x42\x37\x04\x30\x43\x01\x8c\xd4\x52\x2a\x6b\xc2\x29\xaf\x99\x2f\x94\x3d\x02\x49\x62\x29\xdb\x60\xee\xf7\x52\x0d\x7f\x8b\x99\xb8\x9c\x92\x82\x4d\x4a\x71\xdc\x7c\x27\x35\x87\x6d\x18\x78\x10\x09\xd5\xea\x2e\x72\xa4\xbf\x3b\x4f\xff\x83\x88\x59\x77\xe5\x91\xb6\x7c\x39\x81\x37\x8f\x51\xc6\xf1\xee\x72\xac\x6b\x20\x7c\xb0\x56\xa1\x5d\x6f\x86\x78\xdb\x47\xd2\xfb\x21\x15\xd5\x48\x4b\xf1\xda\xe1\xa7\x01\xa8\x9f\x08\x4d\x85\xbf\x94\xca\x14\xdb\x41\x9d\xfd\x2e\x2a\x8c\x2e\xa3\xe8\xd4\x3c\xdc\x58\xa0\x49\xd6\x84\x84\xd5\xfe\x94\xec\x63\x2b\x66\xcf\xa4\x45\xb8\x6a\x70\x47\x20\x44\xe4\xf7\x6c\xb9\x15\x30\x65\x14\xf0\x29\x25\xc7\xd8\x7a\x39\xfc\x9f\x74\x70\x7c\xe7\x6e\x8c\xcc\xe4\x1d\xd2\x56\x76\x2d\xc2\x8f\x7a\x67\x52\x4e\x46\xf7\x1d\x88\x0c\x91\xb3\x9a\x8b\x1f\xac\x1f\x77\xa0\xa3\xce\x73\xb4\xb6\x5d\x7d\x8f\x01\x63\x23\xed\x83\x65\xdb\x92\xf2\xad\x99\x0d\xec\xa4\x50\x73\x00\xcf\x7c\x25\x6a\xa3\xb5\x84\x0c\xca\x21\x91\xa4\x13\x08\x65\xff\xe4\xbd\xf4\xbc\x77\x59\x9a\xad\xc0\xbc\xd2\xa5\x58\x68\x6f\xec\x22\xce\x6d\x90\xbb\x81\x21\x65\xb0\x90\x63\x7a\xaf\x93\x80\xca\xf2\x95\x93\x23\xb4\x4a\xb7\x1a\x3e\xa8\x63\xf5\x87\x7e\xa9\x2a\x0e\x86\x15\x4a\x7e\xc2\x81\x18\x02\x31\xde\xfa\x88\xf0\xdb\x1f\xb9\x49\x77\xc7\x2d\xbc\xd8\x99\x29\x76\x92\xda\x97\xf7\x98\xe8\x3f\x72\x53\xb4\xb5\x7e\x6e\x57\x2c\x1e\xb3\x81\xcd\xb7\x2f\x36\xba\xd5\xc3\x3a\x85\xe9\x44\x60\xda\x5f\xc5\x6e\xd7\xe7\xcb\x12\x93\xe9\x93\x6e\x76\xcf\xd8\xce\x88\xed\x3d\x74\x07\x64\xdf\x65\x30\x46\x21\x91\x59\x91\x88\xff\xb1\x00\xb7\x9a\xf1\x63\x44\xe1\x07\x83\xd5\xd5\x97\x3e\xc6\x3e\x94\x27\x9c\xd0\x01\x0f\xa5\xaf\x9b\xf7\xc1\xdc\xc8\x75\xdc\x24\xd8\x1b\x61\xc3\x90\x93\xe0\xfb\xe5\x38\xa0\x80\x95\x7c\xf6\x87\x7f\x25\x85\x0b\x62\xce\x74\x5c\xa0\x85\xec\xaa\xb3\x2b\xb4\x69\xff\x0a\x62\x97\xd7\x9f\x2e\x6b\x3b\xc0\x13\xd9\xed\xcb\xa9\x0d\xa8\x66\x37\x2d\xe6\xd6\x79\x7b\x6a\x11\x18\xa8\x1f\xca\x73\xb7\x3e\xdb\x3b\x6c\x40\x3d\x06\x82\x21\x0c\x35\x79\x25\xa7\xd7\xf3\x1c\xad\xe5\x60\x88\xeb\x3d\x9a\x91\x31\x72\xb7\xca\xf7\x85\x7b\xde\xe6\xa5\xbc\xe9\x85\xcb\x93\x4a\xff\x7d\x98\xd4\x91\x24\x45\xb7\xf4\x02\x3c\x73\x53\xa5\x49\xae\xc4\x38\x93\x37\xf1\xf9\x4f\x33\x81\x06\x77\xa3\x56\xa8\x31\xf5\x65\x48\xef\x31\x71\x08\x52\xd8\xe2\xd3\xa2\xf6\xba\xf4\xb6\x97\x7f\x1f\xde\x02\x84\x46\xa1\x7c\xbb\x2b\xb4\x32\x00\x55\x4a\x39\xcd\xab\xbe\x1c\xe0\xb0\x76\xa1\xe9\x55\x45\x08\xa1\x0c\xdc\xe1\xf4\xbc\x72\x7c\x65\xf3\xcc\x21\xb0\xcf\xe6\xc3\x05\x88\x64\xf0\xdc\x41\xd8\x91\xcd\xbb\x87\xc0\xef\xcb\x71\xe0\x1e\x72\xf9\x6c\x1f\xf9\xb5\x9f\x65\xfa\x34\xfc\xd5\xa9\x89\xb3\x78\x86\x4a\xcd\x2e\x01\x6e\x5f\xc4\x43\xc0\x08\x0c\xe7\x2e\x0e\xf7\x3d\x8e\x68\x42\xcc\xa4\xdf\x37\x21\x68\x92\x76\xc6\x93\x57\x1b\x13\x73\x60\xbb\xbb\xd1\x75\x79\x9c\xba\x1e\x16\xd8\x5d\xb7\xd7\x1e\x7c\x10\xc9\x85\xdb\x43\x2c\x50\x89\x5b\xc4\xce\x77\xda\x3e\x9c\x4b\x11\xcb\x94\x47\xc7\x1f\xa0\x1d\x16\x12\x71\x07\x1d\xa1\x36\x4d\x82\x9b\x97\xac\x4a\x55\x88\xb5\xfd\x1c\x1e\xdb\xbf\x96\xc3\x9b\x19\x85\xf9\x85\x7a\x71\x98\x12\x84\x62\x77\x74\xb6\xfe\xda\xa4\xc0\xb7\x2d\x08\xed\x0e\xea\x03\x39\x06\xde\xac\x49\xd6\x44\x82\x80\x94\x6e\xee\x5f\x5f\x85\x31\xf3\x67\xf2\x34\xf9\xcf\x19\x76\x7d\x9b\xe1\x8e\x18\x19\xec\xee\xf4\x77\x97\x01\x29\xdc\x87\x51\x68\x02\x02\x44\x2f\x3c\x44\x06\x9c\xe0\xe8\xfa\x3a\x6b\xf7\x75\x77\xf0\x38\x89\xc5\x95\xe4\x21\x5c\xd9\xea\xf3\x7e\x23\x38\xa9\x24\x05\xb1\xb7\x6a\x70\x48\x59\x3e\x6a\x7e\x82\xa3\x1f\xe2\x7b\xe6\xef\x93\xda\x8f\x7b\xed\x73\x6a\x9b\xcf\x09\xe8\x1c\x24\x28\x24\x48\x0b\xab\x44\x2a\x1f\xf7\x7c\x7b\xf6\xde\x27\x94\x33\x3b\x0c\x33\xfc\xc7\x91\x77\x72\x59\x39\xdc\x54\xb3\x7d\x5e\xe8\x46\xbc\xde\xd6\xce\xd9\x35\x16\x3a\x3d\xe6\xe6\xbb\x6b\xf5\xe3\x1f\x30\x55\x25\xa7\x97\x35\xbd\x7c\x7a\x79\x14\x0e\x6f\x01\xd1\xd7\x7e\x7d\xe5\xa6\x96\x05\x64\xbe\x2e\x8d\xca\xa9\x0b\xbe\x1e\xe3\x18\x45\x5c\xdc\x37\x0d\xd4\xf8\x25\xed\x4e\x73\x60\xb4\xa0\x95\x6c\xd6\xfd\x9e\x1d\xbe\x25\x05\x18\xbc\x32\x88\xb1\x63\x98\x22\x3a\x12\x74\xae\xbb\x13\x49\x76\xf0\x94\xe7\xa7\x04\x12\xd5\xde\x95\x8e\x66\xd4\x56\xc3\x5e\x99\x9b\xe1\x3d\x20\xdc\xf4\xdb\x8e\x64\xb4\x9b\x64\xdb\x8a\x5d\x3b\x06\x7b\x18\x53\x5f\x18\xd6\xee\xbc\xfc\x96\x6c\xd6\x7b\xea\x08\x37\xfa\x48\x72\xb7\x8c\x83\xa9\xb7\x42\xd4\xc9\xcd\x3e\xb1\xa0\x63\xed\x80\xe3\x3b\x03\x55\xc2\xdd\x24\x58\x94\x14\xa1\x46\xa5\xa3\x4b\xa4\x8c\x75\xf6\x07\x72\x3e\x7e\x84\xbb\x15\xc8\x08\xd2\x70\x9e\xf2\xf9\x02\xa4\xd4\x81\x3e\x0e\x3d\x48\x0e\x76\x06\x99\xda\x05\x80\xca\xdc\x78\x36\xb7\x5e\x34\x8d\xc9\x2b\xc8\xc5\x3e\x60\xc5\xef\x13\xf4\x5b\x32\xb1\x13\x42\xec\x9a\x49\x4a\x7a\x9c\x3c\x00\x81\xa1\x30\x84\xbd\x53\xdf\xa7\xd9\xd8\xb6\x93\x9b\x2e\xe3\x8c\x87\xe6\x68\x9e\x83\x0f\xe7\x29\x23\x3d\x97\x0c\x01\x81\x4b\x83\x78\x36\x1c\xa8\xc5\x70\xbb\x57\x75\x96\xd7\x82\x46\xa1\xbc\x50\x5e\x28\x14\x6a\xa9\x29\x78\x36\xad\x2d\xf3\x75\x5e\x11\x1a\xa6\x8b\x82\xe7\xb6\x1d\x49\xae\x83\x0f\x2e\x8f\xa0\xf9\x40\xa2\xb1\x76\x4a\x86\x74\x7c\x20\xb1\xac\x17\x67\x5f\x7d\xae\x4b\x87\x60\x89\x20\xa4\xc8\xde\xd9\xe7\x84\x3e\x5b\xc3\x4d\xcd\x36\xb0\x0c\x15\x30\x2b\x47\x78\xe0\xf9\x43\x7a\xc6\x3d\xf2\x46\xa3\xaf\x3d\xbb\x74\x88\xa1\xdf\x4a\x35\x67\x80\xf1\xc1\xf8\x9c\xc3\x89\x0d\x65\x5b\x25\x48\xb5\x79\x2f\x30\xe7\x78\x66\xfa\xcd\x7c\xce\x33\x6b\x4a\x17\x52\xec\x40\x45\xed\xe3\xb1\x3c\xcc\xb1\xc1\xbe\x80\xe7\x32\xac\x20\xe3\xf1\x24\x18\x1a\x25\x3b\x50\x41\x10\x38\x02\x69\x73\x3e\xf9\x24\x9d\x7a\x0e\x3b\x25\x2a\x39\x15\x38\x12\x95\x53\xb0\x0b\x00\x81\x6d\xc6\xe1\x8f\x1c\x87\x31\x4f\x42\xd3\xdb\xdc\xf5\x00\x8e\xd3\xa1\xe9\x29\x9f\x83\xd6\x8a\x58\xa3\x11\x1e\x85\xdf\x21\x50\x72\xe3\xd3\x52\x77\xab\x52\xa9\x36\x6d\x08\x14\x96\x5b\xa4\x1d\x48\xd5\x0e\xc4\xb6\xb2\xbe\xa5\x07\xf0\x58\x6b\x82\x7d\x29\x47\x3b\x4e\x92\xa0\x12\x1b\x29\x48\x2d\xca\xb8\x42\xdd\x3a\x42\x66\x14\xe1\xaf\x0b\x28\x72\x40\x3d\x6c\xb3\xcb\x78\xa3\xbd\x7b\x4c\x42\x4e\x46\xa0\x08\xe8\x8c\x52\x53\x01\x8c\xab\x84\xa7\x97\x8b\x75\x76\x01\x3c\xcd\x5a\xf3\xa0\x9f\x02\xf9\x52\x09\x58\x1d\x6e\x17\xe5\xb7\xec\x74\x68\xb0\x44\x14\x01\xd8\x05\xea\x26\x6b\x2c\x1d\x14\xc0\xe2\x1e\xd7\xb5\x2b\x2a\xbc\x87\x3b\x15\xaa\x10\x78\x67\x60\x59\x55\x26\x4e\xb9\xde\x41\xde\x1f\xae\x96\x3a\x68\xe3\x4e\x17\x0f\x66\x79\x6d\xfd\x94\xb0\x27\x9a\x13\x55\x8e\x94\xf9\xa4\x7f\x07\xbf\xdb\x43\x5d\x28\xa5\xe0\x4e\xb0\xb0\x76\xcf\x88\xe0\xb6\x5a\xbd\x8f\x7b\x13\x8b\x64\x28\x27\x4d\xfa\x28\x80\x11\xda\xa7\x6d\x6c\x1f\x5a\xd0\xd5\x6a\x6a\xbf\x4e\x5d\xad\xe4\xbd\x5d\x96\x9b\xd8\x88\xa0\x45\xad\x19\x85\xb8\xb6\x3a\x78\x28\x4c\x5e\x91\x38\x46\xbf\xf3\x4a\xa4\xcc\x81\x3e\x96\xf1\xae\x1e\x39\xca\x78\xa3\x6b\xb6\xe6\xb0\x0f\xa7\x6a\xa3\xdc\xd6\x51\x9f\x58\x65\x8e\xa5\xbf\x27\x70\xc4\x6e\x7c\xa4\x8d\x3c\x82\x27\x02\x29\xfc\x48\x4e\x44\x06\x5a\xcf\x6d\xd3\x24\xc0\x10\x73\xab\xa2\x22\x79\x0e\xf2\xbb\x70\xdb\x49\x54\xf2\x8e\x55\x05\xaf\x32\x6f\xf1\x42\xc7\x52\xac\x50\x37\xae\x5c\xb6\x22\xda\x47\xb2\xf2\xb8\x91\x23\x37\xa9\xc0\x6d\x8a\x83\x6d\x8e\x5d\x85\x9b\xcf\x2a\x1d\x9e\x1e\xb6\x2a\x50\x99\x47\x44\xbd\xd1\xde\x68\x1f\x8c\x8f\xcd\xb1\x7d\xde\xef\x19\x40\x2d\xb3\xd1\x47\x1f\x39\x55\x50\xd6\x25\xc1\x7e\x46\x8d\xc3\x8e\x89\xf1\x04\x5e\x79\xb2\xde\x8e\xa0\x3b\xd2\x88\x91\xb1\x4a\x60\xa5\x5f\x6c\x97\x72\xdd\xae\x32\x55\xf2\xe6\xbf\xbe\x9b\x4e\xd0\xd7\x52\xa2\x2f\x32\xdb\x8d\x14\xae\x06\x7d\x31\x24\x5e\x53\x5a\x56\x25\x41\xda\xb6\x9f\xf0\x4d\x65\xde\x56\x5f\x70\xf4\x61\x1e\x27\x22\x62\x84\xa2\x98\xab\x02\x96\xf3\xfc\x0c\xc0\xb5\x18\xe8\x1b\x51\x24\x9a\x44\x12\xa0\xb3\x82\xb2\xf0\xd3\x79\x96\xae\xf3\xce\xfb\x2f\x8c\x7c\x23\x95\x66\x70\x50\xcc\x8d\xde\x0a\x61\xd1\xad\x8f\xda\x32\xbd\x42\x99\x46\x54\x97\xdb\x6d\xe5\xc5\x1c\x5d\xf8\xd7\xcd\x45\x42\x2e\x56\x32\x68\x37\x0b\x99\xeb\x66\x5e\x17\x02\x85\xf5\xfb\xb0\xe9\x06\x8c\x7a\x2a\x88\x19\x47\x3a\xcc\xa8\x55\x47\xdb\xc9\xf7\x05\xf8\x91\x96\xea\x39\x6c\x85\x48\x34\x11\x38\x79\x44\x51\x31\x50\x53\xda\x34\x95\xc3\xb6\x34\x3f\xea\xbf\x1b\x4f\xd6\x2a\x65\x9b\xba\xc6\x2d\xa9\x6b\x9c\xbe\xbb\xb4\xd1\x72\xdd\xe6\xa9\x60\x2f\x30\x21\x0b\x3d\x87\x3c\x77\x53\x90\xa9\x64\xbb\x70\xa0\x8f\x45\x02\x40\x30\x24\xad\x38\x0b\x73\x76\xf4\x4c\x6c\x5a\xc1\xc1\x38\x3d\x62\xbb\x0e\xe2\x1c\x1e\xaf\x87\x99\x22\xb0\xed\x7a\x3f\xc2\xfd\x38\x5d\xa0\x34\x8b\x56\xc1\x2e\x24\x5d\x3c\xed\x34\xa4\x71\xcf\x8f\xfa\xff\xdf\xc6\xf0\x67\x66\x94\x23\xb7\x35\xbe\x8b\x0e\xc8\xab\xc2\x62\x7a\x2d\x84\x68\xee\x21\x24\x76\xc7\x18\xd0\x69\x49\xf3\xb7\x31\x37\xd3\x9b\xbf\xff\xb9\x99\x66\x8a\xf4\xae\x4c\x91\x0e\x56\x61\x4b\xaa\xe2\x5d\xac\xe9\x8d\xdf\x4f\xdd\xef\x5b\x0a\xef\xad\xd5\x3e\x65\x32\x2c\xec\x67\xa1\x48\x6c\x7a\x84\x4b\x35\xcc\xe4\x5a\xd1\x61\xe9\xe6\x22\xa7\xe7\x7f\xfa\x9f\x70\x1e\x47\x7c\xcf\x0e\x39\x44\x22\x07\x8a\x74\x4a\xf1\x47\xb8\xc7\x1d\x1b\x12\xed\x20\x25\x45\x73\xf4\xbd\x06\xf8\x93\x03\x13\xd1\x90\x58\x27\x0c\x3e\x4e\xf1\x7b\xc6\xc0\x93\xb1\x9d\x2b\x91\xe2\xba\x8d\x96\xa9\xcc\x45\x8e\x99\x8e\xef\x05\x32\x6d\xc1\x98\x15\x47\x23\x69\xb6\xea\xa7\x92\x83\x21\x85\x23\xa5\x7b\xf4\x7f\x4b\x27\x49\x39\xc7\x01\xbb\x8c\x32\xa7\x97\x5a\xa3\x35\x9e\x8d\xf9\x57\x3c\xa5\x5b\x3f\x6e\xfb\xbf\x6e\x5b\xc2\x83\x9b\x19\x32\xde\x25\x9e\xbf\xae\xb1\xec\xd4\x08\x82\x40\x57\x9f\x0f\xfa\x05\x8e\xa4\xa5\x1c\xa5\x33\x42\x09\xa9\xed\x23\x5b\x97\x1b\x19\x02\xb7\xf0\xdd\x76\xa2\xf7\xfb\x02\x38\x0f\xa1\xa4\xd2\x58\x30\x5a\xfa\x31\xe9\x63\x7c\x41\xc3\xeb\xfa\x16\x70\xa9\xc2\xfd\xd9\xb8\x52\x4b\x23\xbd\x68\xcd\x09\x1b\x02\x3b\x37\x37\xb9\x4a\x39\x29\x52\xbd\x8d\x30\x7e\x37\xa6\x85\x42\xb2\x36\xf6\xea\x16\x85\x23\xaa\x82\x36\x98\x5e\x22\xa6\x49\x04\x48\xe0\x38\x0e\xcf\x68\x0b\x16\x48\x57\x44\x55\xd0\x86\x8a\xed\x00\xd0\xb4\xa2\x52\x04\xca\x2b\xee\xe9\x92\xd3\x81\xe7\x65\x13\x87\x86\xf4\x42\xa1\xbc\xe2\xa9\xb8\xc0\x00\xe5\x85\x3a\x4b\xcd\x32\x97\xd1\x9c\x6c\x89\xd7\xf3\x68\xba\x3a\x5f\xda\x10\x9e\x39\xd3\x25\x70\x07\x63\x67\x8a\x7c\x24\x06\xc2\xd3\xa6\x55\x39\x2c\xc9\xc8\x78\x5e\x19\x34\xda\xbb\xbb\x6b\xf5\x46\x7b\xa3\x31\x18\xac\xed\xe3\x81\x30\xc3\x31\x8f\x10\xe3\x83\xf1\xc1\xe4\x5c\x1a\x0c\x66\x99\xb0\xe2\x75\x77\x32\xa7\x49\x7a\x04\x58\x85\xdb\xae\x8f\x88\x69\x05\x32\x8a\x85\x9c\x2d\xee\xa0\x6c\x56\x99\xa5\x02\xbc\xac\x64\xdd\x1d\xc1\x38\xd7\xf3\x30\x2c\x7b\x62\x85\x4f\x2f\xd6\x6e\x4e\x8a\x9e\x17\x22\x30\x78\x4e\x30\x9f\x43\xef\xb1\xba\xdb\xe6\x2a\xba\xbe\x05\xeb\x86\x87\x95\x41\x91\x40\xdc\x6d\xe4\xd8\x2e\x79\x16\x65\x4c\x8c\xdf\x77\x78\xb9\xc3\x1b\xe9\x1c\x1a\x1d\x73\xce\x61\x1e\x92\x8a\x1d\xe0\x56\xc2\x58\x4e\xb1\x76\x49\xc1\x1e\x96\x75\xbe\x0f\xa8\x6f\x09\x47\x87\x8a\xd9\x96\xef\x78\x0d\xe3\xd0\x18\x1a\x3b\x93\xeb\x82\x1e\x8e\x8f\x54\x59\x77\xf6\xee\x16\xcc\xb6\xec\xaa\xdc\x31\x1a\x9c\x5d\x9c\x05\x07\x67\xb1\x38\x20\xb2\xa2\xb3\x02\x18\xa4\x44\xe6\x68\x2d\x6f\xd4\x2c\x12\xb2\x6b\xa0\x87\x98\xd1\x5a\x39\x26\xcd\x71\xe4\xd2\x01\x62\x7d\x63\xf0\x33\x72\x9f\x5a\x55\x8e\x18\x54\xfa\xf4\xc1\x10\xad\xef\x5b\x56\xdc\xc7\xcf\x37\x6f\x28\x23\xca\x39\x2c\xea\xf7\xac\x18\x41\xc4\xf4\xca\x92\x49\x52\xe2\xb0\xe9\xb7\xd8\xe9\x60\x8e\x02\x92\x80\x59\x15\x8d\x0b\x48\xde\x01\x18\x76\xc9\xca\xd6\x65\xa3\xc3\x6f\x78\x21\xb3\x91\x38\x95\x3d\x18\xac\x62\x36\xc4\x28\xe6\xa3\xa4\x0e\x37\xd9\x5a\xd8\x42\xdb\x94\x77\xbb\xe1\x5d\xc0\xec\x6f\x2f\x35\x80\x23\xb0\x76\x6c\x1c\x4d\xe1\xc8\xe1\xee\x53\x8d\x2e\xb7\x96\x7b\x13\xf4\xec\xf6\x8e\x5e\x63\x0c\xe7\x86\x79\x5c\x2a\x72\x7c\x4a\xd7\x37\xfc\xc3\x94\x9c\x25\xc5\x6f\xd8\x99\xcd\x7b\x9a\xfa\xd9\xc9\x9b\xde\x1f\x3d\xfb\x46\x0c\xda\xd5\x62\xab\x34\xa5\xcd\x28\xd2\x0b\xe5\x85\xf2\x46\x7b\xa3\x7d\x30\x3e\x98\x8f\x56\xa7\x4f\xa9\xaf\x46\x6c\x1e\x1f\x85\x19\xcf\x13\x09\xa4\x88\x3f\x7b\xf2\xa5\xef\xe3\xc0\x90\xf8\xf0\x95\x18\xe5\x7c\x38\x4f\x01\x19\xe2\xcf\x9e\x4a\x55\xea\x65\xa5\x16\xb5\xb8\xae\xfa\x42\x1a\x85\x0c\x14\xc3\x18\x3d\xd0\x83\x19\xf5\xe7\x67\xa7\x54\xa6\x7a\x59\xbd\x70\x87\x21\x93\xb1\xd4\xbb\xcd\x73\x13\x33\x62\x9a\xa6\x6e\xac\x7f\x5f\xc8\x80\xff\xc9\x00\x82\x9b\x04\x45\xb3\xe1\x8e\x9f\xf3\x88\xcd\x1d\xee\x89\x23\x0d\x39\x69\xb1\x45\x56\x54\x05\x5a\x69\xda\xbd\xc2\xa2\x59\xf0\x65\x88\xbe\xa7\x2a\x50\x2d\xbb\x5b\x4b\x5b\xce\x88\x2e\xd3\x42\xfd\x53\x42\xa0\x3a\x47\xa9\x09\x8a\xb7\x68\xe1\x6a\x62\x6a\x6a\x2b\x9a\x33\x49\xfb\x39\x45\xb3\x60\xab\x8d\x0e\xc1\xe6\xac\x91\x4f\xac\x40\x03\x9b\x1a\xc3\x8c\xcc\x15\x3a\x19\xf1\x65\x8e\x02\x89\x38\xf2\xcf\x17\x03\xfe\x1f\xff\x93\xb7\x23\x9c\x5d\x12\x5d\xb1\xac\x39\x6e\x15\x63\x81\xd6\xb7\xfc\xb7\x6e\xfc\xbe\xea\xb1\xfc\xa5\xf6\xb8\x0e\x5a\x68\x20\x16\x81\xa1\xc8\x02\x7c\xa6\xf0\xf8\x6b\xb7\x2a\x4e\xc7\xc5\xa5\xa1\xeb\xb0\x15\xf8\x9a\xec\x26\xb8\xf6\xd6\x61\xf9\xda\x79\x66\x30\x96\xda\xe8\x34\xe6\xb7\xa6\x13\xfe\x47\x43\x90\xef\xb3\xcb\xfd\xe4\xee\x5a\xdc\xb1\x49\x03\xbc\xd3\x75\xed\x52\x4d\x7e\x14\x30\x57\x79\x67\x47\x9a\x39\x7a\xd0\xa1\x44\x45\xbc\xca\x9a\x11\xc6\x8d\x7e\xf9\x3c\xcc\x34\x1c\xcb\xa1\x96\xaf\xa0\x0c\xea\x67\x26\x11\x16\xf9\x96\x31\xb2\xc1\x08\x3c\xca\xbb\x68\xfa\xbd\xd5\x05\xe3\xfb\x95\x57\xcd\xf7\xb3\xc4\x10\x37\x06\x3a\x21\xd8\x6c\x78\xa3\x80\x2f\xac\x95\x91\x60\x6b\x2a\x9b\x8f\xf9\x46\x2c\xe5\x6d\xef\x9a\xab\x7e\x0a\x5b\xb8\xc6\x99\xf6\xb2\xaf\xb0\x35\x4d\xce\x36\x72\x34\xc8\xc1\x80\x88\x7c\xe7\x98\xa9\x3c\xd6\x06\xfe\xa8\x95\x5c\x64\xc9\x88\xd0\x38\x04\xb7\x31\xfb\x81\x04\x95\xb8\x81\x17\x33\x69\x63\x98\xc9\x86\x2b\x6d\x43\x0c\x3c\xfc\x28\x9f\x7b\x3b\x2f\x9b\x2a\x63\x71\x85\x2f\x30\xb7\x61\xa4\x6d\x12\x17\x99\xae\x91\xbe\x08\x9b\x03\xb0\x70\xf8\x87\x60\x47\xe7\x70\x63\x7f\x2c\x85\x18\xb6\x1b\x7a\xf5\xc6\x97\x3d\x8f\xd5\x11\x31\xa2\x37\xec\x10\x34\xaf\xf6\x50\x68\x53\x03\x46\xd9\xb2\xa7\x39\x4f\xef\x0c\xca\x27\x9d\xc3\x31\x38\x23\x85\xc2\x21\x1b\xf7\x54\xb7\x61\x3a\xc5\x12\xb6\xfd\xee\xe3\x29\x84\x23\x3d\xd4\xb4\xe7\x20\xb0\xc4\x2c\xe3\xb5\x99\x7e\xe7\xb4\x9c\x86\x77\x7f\x5b\xdc\x2a\x6f\x90\x71\x6a\x37\x53\xab\x05\x37\x8c\x1b\xbd\x83\xcd\x07\x2c\x44\x9f\xf0\xd8\x71\xd1\x46\x03\x07\xcb\xe3\xc6\x04\x36\xfc\xc2\xbe\xf1\xa8\x22\xc5\xe7\x88\x7f\x14\x05\x06\xf8\x47\xcb\x45\x3c\x32\x58\x65\xfc\xd0\xe5\xbc\xed\xa3\x31\xc5\xc2\x4d\x01\xed\x70\xfc\x0b\xd4\x58\xe9\xd7\xb7\xd5\xf9\xee\x7d\x69\xb1\xd4\x79\xe9\x77\xa9\xdb\x2b\xd2\x7c\x85\x46\x7e\x5b\xcc\x3f\xa8\x4c\x9e\xe4\x92\x7d\x7e\x24\xc8\x47\x41\x1b\x06\xd6\x73\x97\xb6\x6d\xe3\xa9\xfc\x73\xbe\xd3\xf6\x6f\x2a\xbb\x1a\x8d\xdd\xbf\x29\xe3\x28\x60\x5d\x9f\x0f\xcb\xce\xd8\x47\xc7\xc2\x75\x27\xfc\x11\xe5\x31\xab\x41\x2c\xa8\x23\x0d\xb1\x58\x62\x20\x32\xb4\xcc\x6e\xa8\x85\x4a\x63\xd1\xf4\xe6\xe5\x64\x78\x86\xb9\x2e\xe8\xac\x71\x08\x18\xff\x32\x60\x46\xc2\xc2\x4c\x73\x91\x89\x15\xd3\x31\x0f\x37\x0e\x5d\x80\x02\x43\x57\xee\x4e\x40\xd7\xb1\x88\x34\x54\x9a\x0c\xc3\x41\x1b\x33\xc7\xae\xec\x1d\x6d\x69\xd2\xee\x84\xb1\x18\x7d\xb4\xcf\xe4\x4e\xc7\x91\x5c\x5a\xf6\x3e\x69\x06\x7e\xac\x64\x0e\xa3\xe5\xb9\x3a\x50\xe9\x08\x69\x03\x6f\x83\x74\xc3\xe6\xa1\x30\x81\xb0\x23\xb9\xdb\x94\x2d\xdb\x24\x91\x36\x2f\x81\x9e\x40\xdf\xa6\x6b\xb0\xc3\xac\x7d\xca\x92\x34\x7d\x1f\x77\x62\xd3\x1e\x88\xbe\x27\x6c\x52\x41\x0d\x57\xcf\x8c\xb8\x27\x64\x9e\x3e\x4c\x28\x08\x9c\xa0\x7f\x69\x9a\xc0\x9b\xe4\x38\x03\xe1\x6c\x93\xb4\xd5\x06\xd5\x93\xf0\x02\xc7\xab\xbd\x4c\xd1\xc7\x32\x52\xa0\x6c\x21\x4b\x0f\xa0\xea\xd3\x9a\xc6\xf9\x73\x76\x17\xe6\xc9\xdb\x4b\x1a\x70\xa2\x3e\xcd\xb0\x53\x4c\x87\x21\x5a\x38\x83\x36\xd2\x28\x13\x70\x8e\xaa\xb4\x05\x38\xcd\x22\xf2\xbc\x6c\xf0\xf3\xbc\xc5\x4d\x56\xd4\x32\x49\xcb\x45\x00\x6b\x63\x6c\x9d\x5f\x2f\x54\xa5\x64\x0e\x0d\x87\x6b\x56\x82\x44\xf0\x50\x74\x12\xeb\xe2\xb5\x3e\x6f\x25\x72\xcd\xa4\xf2\x73\x23\x29\x44\xf9\x5d\xc8\x42\xc3\xcf\xa5\xb1\xdc\x0c\x12\xcd\x02\x25\x8e\x9d\xbf\x62\xbc\x6a\x04\x0e\x34\xad\x6b\xc4\x74\xbd\xce\xf0\x03\xb1\xb6\xcb\xea\xd3\x8d\x4f\xd4\x94\xf0\xf3\xa3\x69\x3a\xad\x68\xa4\xe5\x96\xfa\xbd\x91\xc5\xf3\x28\x6b\x6a\xc9\xf1\x3a\x7c\x52\x9e\x25\x34\x1e\x6d\x8e\xce\xc7\x3d\xcd\x71\x15\xe3\xc7\xb5\x68\x2e\xb7\xf5\x27\x73\x73\x2f\x73\xdc\x55\xb8\xf3\xeb\xc6\xf3\x51\x6e\x2e\xc3\xbd\xaf\xb6\xef\xe8\x96\x9b\x24\x47\xfa\xf0\x60\x7b\x04\xc6\x8d\x8f\xf3\x3c\x35\xb6\xf7\x7c\x85\xf8\x07\xf6\xd6\xad\x37\xa7\x15\x7f\x60\xf3\xd6\x12\x3a\xca\x95\x85\xa1\xe0\x57\xfc\xf4\xa2\xad\x0c\x95\xe1\xbc\xd6\xdc\x92\xe3\xcb\x7e\x75\xe7\xb0\xa5\xfa\xeb\x16\x5f\x63\xd5\x5a\xe5\x46\x33\x0c\xf5\xf9\x35\x5f\xfd\x74\x86\x63\x1d\x5f\xaa\x8a\x2d\x43\xe3\x19\x4e\x2d\xd6\x9d\xea\x97\x0a\x37\x0a\xbf\x65\x6f\xe3\x80\xae\xa1\xa8\x77\xda\x4c\x7a\x98\xe5\x3b\x24\x44\x1b\xf0\x3e\xd0\x0a\x43\x50\x91\x52\x10\x90\x5a\xde\x4c\x6a\x3a\x46\x2a\xc7\xe3\xf3\x01\xee\x56\x1d\x5d\x2e\xcb\x2a\x52\x4c\xac\x08\xcc\x92\xd1\x77\xc2\xcf\x98\x25\x12\x83\x66\x44\x9f\xa0\xdc\x97\xcb\x16\x91\x34\xb2\x0c\xba\x88\x7c\x43\xae\x90\x33\x32\xe2\xa6\x55\x84\x97\x96\xe8\x9d\x21\x27\xbd\x21\x0a\xcc\xe6\x28\x64\x14\x45\xe7\x34\xcb\x72\xc6\xd0\x33\x5c\xf2\x81\xcb\x91\xef\x20\x7f\x53\x34\x02\xdd\xe0\x53\x94\x8f\x06\x3c\xd1\xf5\x00\x70\xa0\x03\xfd\x80\x03\x50\x17\xe1\x52\x9a\x99\xd8\x23\x90\x85\x81\xf8\x87\x71\xeb\x95\xf0\x0b\x00\x63\x48\x02\x8d\xbe\x5e\x94\xba\x0f\x8a\xf5\x11\xb5\x9a\x0e\xc5\x06\x83\x56\xb4\xa4\x61\x19\xe1\xf2\xeb\x88\x55\x88\x04\xc7\x73\x64\x19\x5b\x93\xb2\xde\x40\xf5\x14\xba\x2f\x60\x39\xa1\x36\x5d\xf9\x83\x1b\x9a\xa9\x01\xd7\x59\x29\xf6\x1d\x1a\xc7\xd3\xdd\xfc\x52\x3e\x39\xa7\x61\x32\x63\x19\x57\x43\x2e\x3c\x3a\x0c\x63\xed\xb7\xea\x97\x5c\xbd\x07\xe4\xef\x96\x40\x9d\x01\x4f\x01\x1d\xb1\x69\xd1\xd7\x23\x81\xc5\xe6\xc9\xac\x70\x1e\x8d\x7c\xa0\xb2\x36\xf4\x76\xe1\x16\x40\x09\x63\xe9\xde\xea\xea\xea\x9f\x6f\x1a\x77\x06\x76\x34\xad\x5c\x93\x43\xdc\xfa\xb4\x93\xaf\x71\xbb\xa4\x5b\x0d\x95\xa3\xd6\xf7\x72\xc4\xf5\xad\x1f\xea\x6d\xba\x33\x0e\x9c\x06\x7b\x29\xff\xb3\x5e\x0f\x12\xce\x82\x7b\x23\xaa\x17\x51\x53\xe8\x81\x76\x88\x98\xd3\x03\xd5\xa2\x17\xfd\x73\xe0\x2c\x4a\x07\x1b\x86\x53\xd5\xe1\x3f\x83\xf4\xf6\xd2\x51\x40\x41\xe5\x62\xce\xaf\xea\xb8\xe8\xe1\xd4\xde\xd0\xba\xa1\x46\x9c\x94\x32\x60\xa6\x94\xa9\x28\xa5\xcc\x3f\xa9\xea\x8a\x2e\xbf\x38\x5f\x4b\xba\xea\x2e\x56\x49\xf5\x64\xd4\x62\x82\x88\xad\x9b\x5a\xa8\xae\x29\xfb\xe7\x17\x0f\x45\x8f\x59\x33\x99\x8e\x86\x89\x7c\x51\x53\xcd\x97\x14\x65\xda\xf4\x3a\xa1\x96\xb9\x64\x23\x01\xd0\x24\x38\xa6\x44\x72\x3f\xf0\xfd\x21\x0d\x93\x8e\x45\x4c\xb8\x38\xe5\x91\x39\x2a\xa7\x02\x21\xf7\x49\x03\x54\x65\x1e\x1a\x36\x0a\xcc\x65\xfb\x5b\x5c\xc1\x31\x22\x7f\x2e\x6d\xca\xb1\x2e\x39\x46\x01\x75\xd1\x34\x93\x36\x6d\x79\xe8\x04\x9b\x66\x79\x01\xd0\xa2\x6c\x1b\x7e\x13\xa9\xdc\x98\xe3\xfa\x43\x5d\x94\x4e\x48\x1f\xe1\xba\xfe\xd3\xf5\xa4\x60\x6d\xc0\xf1\x06\xc1\x09\x33\x59\x36\x2c\xc0\xee\x44\xe7\xe4\x0a\xb9\x55\x4a\xd7\x29\x4a\x04\x23\x8e\x79\x45\x39\x59\x7c\xb9\x52\x47\x7a\x7f\x3f\x50\x5e\x55\x3b\x2a\x4c\x58\x6b\xb5\x6d\xec\x43\xd7\xef\x3d\xeb\xaa\xfd\x44\x94\x5a\x1d\x95\x96\xf7\xd7\x27\xa7\x05\x11\xbf\x71\xcb\xde\x61\xeb\xf5\xc3\x33\x9e\xf6\x7f\x1e\xbf\xce\x8a\x10\x9a\xef\x13\xe2\xcc\x27\x62\x78\xe8\xb2\x4b\x1a\x3d\xd0\xc8\x82\xd1\x99\x4a\xe9\x8e\x8c\x99\x33\xed\xac\x9a\x56\x3a\xd0\x21\xa6\x9c\x77\xd3\xbd\x2d\xfe\xb3\xa8\x7b\x47\xa6\x36\x75\x53\xc8\x3f\x78\x55\x53\x93\x94\xea\x64\x2c\x6a\xd1\x4f\x1b\xee\x49\x93\x77\x02\xcd\x9d\xa0\xe9\x7e\xc4\xcd\xbb\xd1\x49\x45\x41\x59\xf6\x56\x0e\x5d\x9e\xa9\xf5\x46\x40\x98\xca\x16\x83\x65\xf7\x62\x40\xe0\xc8\x06\x2e\x81\x0e\x3a\x8a\x94\x7b\x92\x31\x3a\x4d\x28\xc7\x3c\xa1\x60\xfc\x18\x75\x2b\x7a\x97\xa2\xd8\x06\x58\xd5\x93\x86\x2b\x7b\x4b\x91\x92\xa5\x73\x85\x4a\x78\x5e\xa6\x4b\x88\x99\x05\xc2\x29\xa5\xf4\xec\xc5\x42\x41\x30\x97\x43\x79\xd3\xe9\x42\x39\x4e\x1f\xca\x73\xd5\x65\x70\x6d\x19\x55\xd3\xdd\x41\x74\x66\x51\xf4\x6e\x24\x8a\xd8\x36\xfa\x17\x43\x91\xeb\xa8\x8a\x74\x08\x53\xb6\xf7\x3c\x84\xdd\x22\xc0\xd7\xb6\xb7\xb3\xd9\xfb\x22\x65\xe0\x0a\x67\x26\xd5\x93\xe6\x27\x55\x72\xc7\xce\x36\xe3\x7b\x79\x5f\x21\xc0\x01\xef\x5a\xc0\x36\xc9\xbf\xeb\x2d\x39\x00\xf3\xb3\xda\xd5\x14\xf4\x8d\xe9\xb2\x97\x89\x37\xa6\x55\xa1\x52\x0a\x2c\xf6\x59\xaf\x40\xf2\x35\xec\x29\x64\x95\xb4\xeb\xce\xde\xdd\x52\x07\x1a\x89\xf4\xf7\x88\xd9\x97\x38\x46\x39\x75\x01\xaf\x06\xb9\x91\x96\x21\x4c\xcd\xf2\xaa\xc9\xdb\x19\xeb\xbf\x14\x23\xf8\x8f\x54\x61\xf0\xcd\x23\xa2\xf1\x11\xa4\xb2\x1b\x51\x70\x02\xa2\x72\x0c\x68\xca\x31\xb8\x29\xc7\xa0\xa7\x60\x46\xb9\x2b\x98\xbe\x6b\x6d\x1a\x9d\xf0\x54\xd9\x75\x34\xe5\xd0\xb1\x57\x79\xd6\x19\x17\x0f\x30\x19\x11\x55\xde\xfb\xaf\x69\x28\xf9\x00\x5b\xd9\x36\xac\x2d\x12\xa5\x58\xf1\x5d\x0d\x00\x89\x15\xa9\x66\x99\xe5\x72\x1a\xda\x80\x33\x6f\xb8\xbc\xa1\x3f\xf7\x09\xec\xd7\x43\x17\x18\x0e\xb2\x6a\xdf\xa8\x86\x2c\xef\xfb\x96\x9b\x58\x0e\x0d\xe3\x04\x1c\x28\x22\x22\x9c\xe1\x96\xed\xae\x1b\xc1\x3d\xea\x6d\xe3\x3c\x96\x23\x0e\x2a\xfa\x91\x96\x79\x36\x95\x85\x78\xba\x9f\xf9\x48\xd9\x17\xb6\x76\x23\x6a\xf0\x95\xb5\xb6\x49\x5f\x6d\xc3\xc1\xda\xc7\x31\x0d\x56\xe1\xdc\x60\xb5\x0b\x0e\x70\x3f\x8b\x24\x29\x87\x2c\x78\x84\x24\x4b\xd8\x2a\x05\x0a\x76\x97\x41\x7e\x06\xb9\x52\xb9\x99\xcd\x67\x0b\xc6\x3b\xd5\x1e\x93\x55\xd9\x76\xf8\x4f\x53\x51\xe8\xec\xae\xf4\x08\x1f\xe3\x4a\x2a\x2c\xc3\x6f\x05\xc3\xfd\x4b\x48\x51\x92\x8c\xe1\x17\xb2\x3b\xfb\x32\xe2\xc3\x14\xb5\x4c\x07\x8b\x9b\xd5\x55\x3e\x4d\x5f\xcb\x71\x6b\x08\xe3\xf8\x65\x1b\xea\xd5\x6e\xae\x94\x17\x12\x63\x91\xa2\x5a\x2d\x4f\x67\xcd\x85\xc9\xda\x73\x5c\x62\x0c\x90\xda\x25\xa1\x65\xdd\xa7\xe5\x5b\xd2\x52\x67\x75\x35\x20\x6b\x3b\x52\x9b\x31\x20\x59\x55\x37\xa2\xc6\x19\xcd\x19\xb9\xf7\xbc\xae\xb4\x8e\x52\xe6\xda\x39\x7d\x81\xb7\x29\x47\xae\xe0\xd0\x36\x7c\x66\xd3\x69\xb1\x24\x08\xc4\x27\x39\x0d\x86\x0e\x0d\xa6\xa5\x1b\x9d\xcc\xe9\x3a\x16\xba\xf7\xbf\xe6\x03\x0b\x56\xe5\xc3\xe1\x88\x69\xcc\x0f\x62\x51\x0c\xf2\xab\xcd\x33\xe3\xb2\xcd\x24\x24\xf4\x07\xb4\xa3\x89\x29\xff\x52\x33\xa6\xa0\x41\xd9\x5e\x45\x15\xd3\xa0\xb4\xf9\x0a\x5d\x05\x63\xd3\x42\xc6\x6b\xf3\xf4\xd4\x9f\x50\x67\x9a\x56\xa9\xda\x0e\xe2\xcb\x37\x68\x63\x30\x2d\xef\x23\x1e\x1a\x6c\xfa\xe0\x96\x00\xc8\xe1\xf3\xe2\x86\x4f\xea\x0f\xce\x32\x2e\x31\x6e\x18\x5c\x20\x08\x6e\x50\xf4\xcf\x20\x75\x2d\x76\xc7\x75\x58\xc5\x37\xed\x2f\xc9\x98\x48\xb1\xa8\x03\xc1\xa4\xe9\xfb\x4f\x94\xdb\x7c\x4a\x31\x51\x84\x81\x89\xa3\x95\x0b\x5c\xd6\x91\x3b\x72\x4d\xcb\x3f\x90\x3f\x37\x4a\x1e\xe3\x7d\x78\xe4\x09\xcd\x7b\x43\xc0\x66\x92\xd6\x76\xcf\xc0\x6a\xc8\x39\xa3\x59\x74\xd9\x4e\xd5\x07\xe3\xca\x91\x87\x8c\x2d\x97\x67\xa3\x14\xee\x39\x6c\x8d\xc1\x28\xa9\xf8\xd2\xf1\x80\x21\xbb\x75\x2f\xeb\x7b\x99\xf5\x8c\x08\x27\x25\xb6\x93\x6f\xd0\x0d\x29\x62\x38\x0e\x6d\xc8\xab\x44\x1b\x96\x6d\x1c\x5d\x58\x3c\x1f\xa7\xbf\x49\xa3\xed\x64\xc0\x20\x11\x01\xb5\x1e\x19\xff\x16\xcb\x2f\x18\xcf\x84\x5f\x6f\x9b\x91\xfe\xa5\x48\xa4\xd3\xed\x7d\xb6\x01\x68\x93\xe9\xbd\xc4\xf1\xa6\x55\xfb\xef\xc0\x2e\x26\x3b\xb7\x84\xde\x0b\x31\xf0\xf4\x7f\x0d\xdd\x53\xf6\x6c\x74\x17\x74\xe8\x73\x9c\xc7\xf0\x59\x34\xb2\x8c\x24\x83\xf9\xf1\x6a\xa7\x74\xd0\xfb\xaa\x76\x91\xce\x2c\x37\x01\x06\x33\x18\x87\xf4\x56\x08\x16\x88\xb2\xac\x4f\xe8\x95\xec\xb4\xd3\x09\x8c\x23\xa4\xce\xf4\xfe\x4d\x56\xe2\x37\x8a\x9c\x2a\x8e\x55\x7d\x28\x4a\x2a\x4c\xa3\xbd\xcb\x36\x55\x2c\x52\x8c\x62\xe1\xbd\x3f\x91\x28\x96\x58\xc1\xff\x19\x10\x10\x70\x93\x93\xfb\x52\x3b\xe2\xa5\x3c\x31\x86\x6d\x4b\x92\x11\x50\x1a\xa4\x82\x94\x74\x8d\x0e\x6b\xc5\xf0\x05\xbb\x87\x39\x31\x2c\x31\xa2\x6d\x64\x89\xac\xec\x97\xa4\x01\x15\x88\xd2\x39\x7a\x63\xbe\xd6\x42\xe1\x85\x71\xff\x59\xae\xdc\x39\x87\x51\xa7\x22\x97\x4c\x95\x0c\x04\xcd\x4b\xa6\x9b\x62\x97\xca\x16\x0b\x08\x99\x58\x71\x87\x29\x06\x93\x62\x4e\xc4\x18\x88\x22\xb7\x97\x45\x46\x81\x48\xa5\xc2\x02\x38\x4a\x6f\x4c\x53\x2c\x18\x5a\xf2\x12\x0a\x7c\x88\xac\x4b\x5d\xcb\x0d\x36\xcc\x76\xe8\x46\x41\x85\x71\xb3\x2a\xb3\xdd\xac\x0a\xbf\x59\xbb\x79\xf9\xe2\x25\xdb\x44\x02\x95\x99\x2b\x95\xa4\x13\x0a\xa7\x1c\x74\x75\x2e\x1d\xe5\x1d\x06\x7e\x86\xd7\x06\xef\x8a\x16\x1a\x9d\xe2\x54\x92\x9b\xaa\x68\x9d\x5a\x75\xa7\x8b\xaf\x3a\x61\x77\xd3\xca\x70\xa0\x33\x18\xe6\x9a\x93\x26\xc9\x59\xb3\x9b\x7f\xa8\x39\x7d\xff\x2c\x77\x14\xd3\x5b\xd5\x03\xbb\x8a\x53\x4d\xe8\x94\xc9\xe5\x83\x05\xeb\xe9\xb1\xf7\xb7\x08\xc8\x16\x90\x7b\xaf\x15\x0a\xeb\x8b\x41\x2f\x2b\x34\x8e\x41\x82\xed\xbd\x27\x4c\x79\xa6\x2c\x93\x7f\xc3\xa9\xdc\x55\xa8\x0c\xee\x25\x57\x18\xd3\x4a\x17\xe5\x3b\x46\x87\xc8\x92\x01\x3d\x65\xb9\x85\xba\x36\xdd\x66\x4f\x66\xfb\xc3\x04\x33\x80\xa6\x17\x44\x6d\x4a\xa7\x34\x01\xf4\xc6\x2c\x25\xd4\xef\x77\x7e\xc6\x55\xc6\xda\xc9\xb8\x71\x94\x69\x3c\x20\x48\x63\x05\x8e\x73\x5a\xce\x01\x5f\xa7\xf8\x28\xad\x68\x86\x22\xad\x8c\x19\x53\x68\xb4\x15\xa9\x82\xff\x94\xc8\x64\x58\x68\x44\x02\x89\x2b\x54\xef\x4a\x18\x72\x1a\xa4\xa2\xa4\x64\x50\x23\xe6\x74\x52\xa4\x46\xc9\xc0\x9c\x63\x4d\x07\x72\x86\x2c\x8f\x29\xa8\x43\x35\x1c\x8c\xd9\x32\x71\x12\x69\xd3\x3a\xa5\x69\x66\x7b\x95\x32\xa1\x4d\xfb\xf7\xb6\xe2\xd4\x28\x96\xe3\x3c\xca\xdd\x8c\x1b\x54\x1a\xf5\x99\x92\x4b\x72\xbe\x39\x88\x88\x8d\x58\x67\x8f\x06\x66\x18\xfa\x62\x4f\xe5\x19\x31\x65\x39\x68\x92\x95\xa6\x42\x3c\xa1\x8a\x0a\x3a\x94\x7f\x37\x9e\xdf\x5b\x2f\x0d\xbf\x32\x04\x44\xd0\x6e\x50\x4e\x62\x03\xa2\xc3\x22\xce\x01\x81\xe5\x06\x4b\x64\x39\x02\x92\xc6\x44\xd6\xb6\x5e\xf1\x8b\xc6\x6a\x0a\x49\x65\xd6\x2c\x35\x05\x0f\xd3\x84\xa8\x7e\xef\x06\xf6\xa3\x6b\x06\xf8\x45\x3a\x2b\xfd\x02\x9d\x8f\x3f\xac\x8f\xd4\xad\x7e\xf6\x3d\x68\x2f\x16\xa1\xfb\xc2\xc4\x22\xc4\xdb\x38\x92\x77\x6e\x9b\xd1\xbf\xc1\x82\x24\x8a\x07\xec\xe1\x17\x5a\x9b\xc8\xa6\xde\x6b\x45\x78\x3f\x24\x9d\x54\x63\x6d\xb9\xc0\xc1\xc8\x5a\x10\xdb\x83\xc0\xc0\x25\x89\x92\xbf\x83\x97\x45\xd0\xbb\xd1\x5e\xbd\xe1\x9a\x9c\x86\x70\xe3\xd5\x8e\x9d\x68\x30\xde\xa0\x9f\x19\x62\xd0\x94\xfc\x8f\x1c\xf1\x83\x50\x08\x3b\x36\x4d\x12\x8c\x2c\xf6\x40\xe6\x1d\x4c\x94\xb5\xba\x3e\x83\x9e\xbb\x56\xf8\x87\x44\x33\xab\x52\x87\x2f\xa7\xcf\x1e\xd1\xf3\xf4\xc8\x60\xe9\xe8\x3b\x82\xcb\xcd\xd5\xfc\xec\x3b\x7a\x5d\xd9\xda\xce\x30\x0c\x3e\x0c\xe3\x0b\xa6\xd1\x86\x5c\x82\xd2\xd9\xbb\x9d\xc1\x49\xda\xe4\x49\xf6\x06\x32\x63\xf9\x1b\x9e\x20\x5b\xe1\xa3\x35\x56\xf6\xd6\x48\xcc\x76\x9a\x79\xbf\xd3\x33\xe2\x94\x4c\x44\xa3\xcc\x40\x29\x52\x41\x72\x3e\x18\xed\x71\xe6\x24\xa2\x7b\xa9\x3b\xe6\x96\xcc\x01\x2f\x5e\x8f\x55\x7c\x5b\xb7\x2c\xeb\x26\xa4\xd9\x3c\x57\x66\x20\xf9\xad\x27\xc0\x17\x83\xf9\x92\x65\xb2\xc4\x19\x72\xd0\x2b\xc2\x00\x0e\x5e\x60\x5e\x2a\x64\xde\x59\x50\x51\x51\xe4\xd4\x41\x80\x0d\x64\xd1\x58\x14\xb5\x97\x9c\xd4\xa2\xd0\x33\xdb\x20\x30\x51\x74\x44\x25\x29\xec\x9f\xdc\x84\x95\xfb\x00\xe4\x1d\x45\x72\x97\xd0\xd3\xfd\x30\xc9\x7f\xb4\xbf\xf2\x70\xa1\xc7\x63\xca\xe4\x04\xa6\x98\x18\x94\x4e\x6c\x20\x13\x9f\xa9\x26\xd1\x58\x26\xa1\xd3\x49\x2b\x97\x49\x4f\x90\xc9\x01\x69\x72\x9a\x6a\xb2\x15\xa7\x90\xaa\x59\x01\x07\x4d\x46\x22\xe2\x90\xc4\x1c\x41\x52\xe0\x90\x0d\xbe\xd1\x05\x81\x1a\xd7\x05\xb6\x94\x85\xf3\x9b\x80\x86\x60\x22\xfe\xe1\x4e\x8f\xd8\xfc\xae\xaf\x27\xb3\x41\x54\x0c\x82\x28\x6e\xd9\xad\x85\xd6\xfd\x4d\xe0\x72\x93\xa4\xef\x0f\x52\x21\x51\xf2\xa0\xc8\x1d\x4f\x44\xa9\x19\x0d\xa6\x27\x96\x88\x65\xb4\x1c\xca\x5f\x5d\x78\x21\xbe\x40\x9b\x89\xab\x4b\xb1\x32\x57\xfa\x7f\xe6\xcc\xe9\x92\xb6\x2d\x2b\x48\xb0\x12\x14\x2b\x0f\x61\x6d\x90\x8f\xb5\x91\x86\xb5\xa9\xa8\xf5\xb2\x3e\x74\xad\xc0\x61\xdd\x21\x65\xdd\x83\xe8\x6a\x82\x58\xaf\x48\x74\xbd\x4a\xca\x3a\x90\xe1\x3a\x24\x74\x1d\x33\x2f\xeb\x58\x83\xae\x49\x57\x5a\x1f\xa1\x69\x83\x41\x6c\x12\xaa\x4d\x22\xb2\xed\xa0\x61\x73\xc6\x6b\xf3\x58\x72\xf3\xa4\xb4\x59\xf0\xda\x6c\x20\x9b\xb7\xa4\xad\x23\xd3\xad\x4f\x2d\x5b\x40\xb5\x45\xcf\xe9\x3b\x02\x97\x0f\x1b\xd4\x47\x99\xd3\x8f\xf3\x05\x3f\xa6\xaf\xfc\x06\x51\x7d\xc3\xda\xe9\x9b\x91\xe2\x9b\x3d\xca\x6f\xcb\x95\xbe\x2d\xa3\xfb\xa1\xe8\xf1\x8b\x4b\xd3\x3f\xad\x8f\xb4\x69\xff\x9f\xaa\x25\xf8\x2b\x03\x4e\x17\xb8\x6c\x70\xe7\x81\xf3\x9c\x01\x57\xce\x24\x31\x24\x39\x10\x99\xb5\x50\x38\x09\xa8\xf2\xc8\x51\x6d\x41\x68\x0e\xea\x60\xe4\x93\x7d\x20\x1a\xd7\xc2\xdd\xa0\xc7\x08\xf4\x5f\xad\x53\xb4\xf0\x78\xea\xb0\xd1\x29\x38\xf7\xe9\x48\xd3\xfb\x46\xa7\xa0\x3e\xff\xa2\x45\x28\x95\xa0\xc6\xe7\xcf\x47\xef\x0d\x58\x90\x59\xf7\x21\x06\xfd\x6d\x46\x72\x28\x22\x0f\xbd\x25\x39\xfa\x93\x34\x56\x32\x9f\x12\x44\xdf\xcb\x1f\x50\x2c\xed\x50\xac\xb4\x6a\x7d\x33\x39\x8a\xba\xa5\x1a\xba\xae\x5c\xbe\x28\x16\x41\xab\x34\x08\x8e\x56\x62\x96\x72\xc5\xea\x58\xf6\xfc\x2e\xdf\x9f\x13\x2a\x31\x0d\xf3\xa7\x09\x23\x9b\xe2\x8c\x3a\xa7\x65\x65\x52\x9e\xaf\x0d\x26\x69\xab\xa4\x95\x35\xe3\xe0\x49\x5a\x4f\x4d\x6d\xcf\x30\x88\xb9\x8e\xab\x18\xe8\x8c\xd0\x28\x15\x43\xcf\x72\x4a\x2e\x54\xd2\x05\xf2\xcf\x77\x34\x17\x79\xc2\x2b\x1a\x95\xec\x48\x18\x69\xb9\xd1\x6a\x0a\xce\x32\xdd\x16\xa2\x67\x56\x48\x79\xe6\x90\xec\x2c\x5f\x83\xae\x75\x0b\x72\x89\x2f\x89\xca\x33\x4b\xaa\x56\xee\xdb\x39\x98\x7a\xec\xcc\x56\x69\xec\x65\xfa\x85\x2e\x6c\xcd\x6d\x6f\x45\xfa\x20\xcc\x73\x7d\xd3\x5a\x77\x6e\x5b\x73\x4f\x59\x4a\x29\xee\x1b\xb7\x8c\x7d\xce\xb0\xfd\x87\x83\x64\x59\xe9\x98\x5c\xdf\x9b\xb1\xf5\xb0\xee\xbc\xde\x47\xdf\x99\x4d\x40\xb2\x29\xcf\x5b\x95\xf2\x70\xe5\xd9\x30\xcb\xb8\x38\x2c\x07\xb8\xd6\x6a\xd1\x97\xd1\xe1\xe4\x1d\xb9\x9f\xf6\x6a\x66\x31\x33\x13\xcc\x41\x08\x55\x39\x86\x33\x7a\x93\x03\x4c\xce\x2a\xde\xc9\x53\xa5\xa4\xd9\x41\x9f\x34\xf4\xc4\x22\xbc\xd0\x88\x64\xae\xed\xa7\x94\xb2\xe1\xd0\x55\x85\x97\xa9\xe5\x6b\x58\x1e\xb4\x86\xae\xfc\xa5\xfa\xef\xe9\x3f\x08\x7a\xf6\xd4\x56\xc9\xdd\xce\x20\x5d\x47\x62\x6f\x64\x5f\x9e\x9e\x9c\xb7\xef\xe7\x6b\xae\xd7\x3d\x5b\xda\x19\x59\x86\x0f\x79\x34\xac\x12\x59\x63\x70\x19\x3c\xab\x1a\x6e\x47\x68\x5a\xba\x4b\x74\x19\xc0\x98\x97\x40\x1e\x6d\x2f\x5f\xb3\xe1\x98\x96\x32\xae\x6f\x26\x89\x62\x4f\x76\x1b\xe8\x32\x9e\x28\x06\x76\x3a\x39\x68\x0a\xac\x2c\xdf\x0f\x6f\xce\x25\xd2\x0f\x80\x26\x3d\x3f\xd2\x60\xe3\xbd\x42\xd9\x05\xc9\x2e\xa5\x02\x8f\x78\x0b\xaa\xdb\x17\x3f\x8b\xaa\x9d\xba\xc1\x3f\x88\x92\xa2\x83\xaa\x7a\x45\x74\x5c\x4e\x5b\xc7\x19\xb5\x40\x10\x39\xd0\x35\xe5\x6e\xe9\xee\x91\x5e\x75\xde\x96\xfe\xea\xf2\x10\x0f\xde\x62\xac\x04\x4f\x12\x2c\x4f\x4b\x74\xa1\xfc\x2d\x70\xaf\xb0\xb7\x95\x72\x8b\xea\xc1\x43\xfa\x6b\x24\xce\x83\xbc\xa0\xf6\x6f\xa5\x80\x80\x40\x00\x95\x2a\x55\x46\xa9\x5a\xb5\xea\xa8\x85\x85\x85\x03\xbf\x1a\x8f\x20\xfa\x6f\x71\x9f\x0c\x83\x86\x83\xd9\x1f\x8f\x95\xd4\xa9\xd0\xef\x95\x64\x28\xd3\xe7\x40\xf8\x45\x14\x9f\xff\xb5\x07\x54\x05\x9f\xa1\x34\xb8\x01\x35\xf8\x1f\x95\x6c\x37\x90\x33\x11\xf3\x6f\xd9\x3b\x33\xfe\xf8\xd8\x4b\x50\xa7\x22\x01\xa6\x10\xa2\xe6\x65\x54\x23\x89\x9c\x94\x46\x1d\xf4\x06\xfe\x98\xc4\xfa\x20\xc5\x9d\x33\x0f\x3c\x42\xbc\x34\x95\xd7\x43\x0f\x34\x2b\xc7\xd4\xe7\x3d\xf5\xc3\x31\x6c\x8e\x19\xa6\x87\xbc\xdd\xff\xd3\x09\x31\x28\x38\x44\xe6\x05\xf1\x28\xcd\xa8\xe9\x13\xd4\x31\xd3\xb3\xbb\x35\x67\x64\xbd\x6c\x09\x0f\x6d\xa0\x97\xe3\x63\x37\x19\xe3\x3b\x73\x7f\x5d\x82\x91\x44\x9e\xe8\xff\x99\xad\xae\x00\x32\x6a\xd9\x53\x0f\x7d\x30\x5e\x82\x6e\x86\x37\x90\x16\xdb\x03\x03\x45\xef\xd2\xaf\x3d\x63\x85\x8d\xc7\xd7\x22\x74\xb8\xd4\x99\xc7\xdb\x3d\xde\x4e\xd4\xa4\xde\x46\x8b\x23\x2e\x55\x68\x67\x5f\xff\xd6\x4d\x1f\x34\xa9\xc1\xfe\xe1\xf8\x67\xdb\xf8\x7a\x9c\x4e\x2b\x88\xb9\x3e\x5d\xef\x26\x98\x6e\xb6\xa4\x1a\xa6\xb8\x4e\x23\x42\x5d\x3d\x2c\xc7\xe3\x02\x67\xf6\x82\x88\x90\x51\x1b\x95\xec\xc0\x05\x77\xcc\xf8\x70\xeb\xaf\xc7\x13\xc7\xd7\x40\xec\x16\x38\x98\xc2\x74\x73\x1a\x9c\x45\xbb\x8e\x86\x0e\xfa\x0f\xa3\xbe\xcc\x66\x89\xfc\x34\xeb\x2e\x83\x71\x68\x30\x27\x72\x60\xf5\x70\x4e\x2f\xc5\x5b\x05\xa2\xaf\x5a\xd7\x99\x04\x8e\xe6\x2e\x4d\x12\xc7\x47\xf3\xff\x5e\xc2\x2c\x58\x14\x53\x8b\xa0\x7b\xd0\x15\x4b\xea\x25\x94\x5e\xa1\xcd\xd4\xb8\xf5\x70\x7a\x7d\x09\xad\xb0\xfb\x50\x75\xa3\xd9\x10\xf5\xb0\x06\xdb\x05\x89\xd6\xf9\xf7\x8b\x17\xfd\x4b\xfa\xed\x3d\xbd\x23\x10\x93\xd6\x9f\x38\x74\x30\xac\x16\x18\x97\x6f\x66\x04\x76\xe2\xdb\xa3\x8d\xbb\x1f\x81\xa7\xdf\x1d\xe2\xce\xbf\xa6\x33\xc9\xdf\x00\xaf\xa1\x1d\x1e\x65\x18\xb7\xdd\xc0\x66\x71\x07\xdf\x64\x85\xeb\xa4\xc2\x3d\xa3\xbf\x20\x36\x5c\x42\x07\xcf\x2d\xa1\x07\xe7\x1c\xfd\x34\x94\x46\x6a\xed\x35\xed\xba\x86\x0d\x6e\xcf\x6d\xb0\xff\x77\x6f\xcf\x64\x2a\x07\x70\xa3\x34\x85\x8d\x1a\x1c\x02\x4a\xae\x5b\xa6\x92\xd2\x76\x42\xab\x13\xb7\x93\xf7\x2a\x3d\xb3\x01\x35\xbd\x4f\x50\x16\xa7\x1b\xf4\x32\x18\x71\x42\x32\x37\xc5\x81\x87\x34\x75\x91\x74\xb2\x5c\x09\x84\x62\x39\x0f\x4b\x6f\x3a\x5d\x6a\x9b\x5e\x64\x8a\x56\x8a\xe8\x3a\x1e\x1e\x73\xb8\xef\x75\xa4\xb3\x67\xa5\x9e\x9e\x55\xd4\xe5\xfe\x98\xef\x6e\x8d\xfb\x7a\xad\xb1\x7a\xe7\x21\x16\x73\xf8\x49\xe3\x14\x72\x28\xa1\x86\x16\x7a\xa0\xc0\x61\x86\x7f\x90\xa0\xc1\xc2\x0e\x77\x78\xc2\x17\x43\x8c\x31\xc7\x12\x6b\x6c\xf1\x8a\x3d\xfe\x22\x47\xc4\x19\x25\x6a\xb4\x78\xe2\x1d\xd5\x05\xfb\xd9\x53\x4a\x39\xd5\xd4\x1a\xd6\xac\xf8\x51\x4c\x6c\x60\xe0\x21\xa6\xad\xad\x44\x49\x49\x4f\x7a\x8d\xef\x12\xf3\x4f\x1e\x99\x37\xcb\x5f\x49\x45\x29\xad\x88\xa4\xc5\xfe\xef\xde\xb5\xd7\x5f\x1d\x95\xeb\xac\xd2\x42\x8b\x2d\xb7\xd2\x6a\x6b\xed\x6a\xbd\x51\xe3\x86\xb6\xda\xbf\x49\xd3\x66\x6d\xb7\xbb\xbd\xd7\xb8\xf8\xc2\x25\x97\x5d\xbb\xe7\x5e\x3a\x75\xee\xe8\xb3\xff\xbb\x74\xed\xf6\x2b\x3f\xfe\xcd\xdf\x1a\x65\xb4\x71\x8d\x3e\x78\x60\xac\x21\xe3\x1e\xef\xf8\x28\x50\xa4\x44\x9d\x06\x09\x29\x19\x6d\x3a\xf4\x72\xe0\xc4\x99\x0b\x37\xbe\x78\x30\x31\x33\x78\xf2\xe2\x3f\x0b\x2b\x1b\x6f\x3e\x7c\xf3\xc3\x2f\x7f\x08\x48\x28\xa8\x68\xe8\x20\x4c\x2c\x08\x36\xbe\xc9\x2b\xac\xb2\xea\x6a\xeb\x5a\x63\xd1\xe2\x85\x25\x4b\x97\xad\x7b\xbd\xff\x20\x45\xa6\xa8\x6c\xb9\x35\x68\xd4\xa4\x59\x8b\x36\xbd\xb4\xeb\x4f\x87\x92\xb2\x42\xa7\x8a\x9a\x6e\x3d\xfa\xe8\xab\x9f\x25\xcb\x56\xad\xd9\x65\x3f\x1b\x46\xc6\x06\x9b\x26\x66\x76\xec\xb6\x6f\x87\xdd\xf6\xd8\xba\xdf\xfd\x9d\x70\xd2\x29\xa7\x9d\x7e\x70\xf6\x5d\x6f\x7d\xcb\x6b\x5f\xf8\xf8\xbb\xa9\xb3\x0c\xcb\x66\xe2\x69\x62\xba\x1f\xdd\x84\xc7\x59\x7f\xc6\x0e\xbb\xb8\x1e\x65\x7a\xd8\x69\xf2\x62\xef\xd6\x7b\xe9\xfd\x65\x91\xbe\x51\xda\xc3\xa0\xc9\x60\x1e\xf8\x45\x82\xcd\x95\xaf\xeb\x89\x41\x24\x87\x0a\x93\xa3\x13\x99\x74\xf4\x25\x81\xd6\x52\x3c\x91\x1c\x41\x49\xcd\x02\x5c\x15\xda\x0f\xb7\xc8\x65\xe5\x4c\x64\x58\x2d\x39\x7c\x97\x1c\x67\x4c\xc1\xca\x35\x28\xce\x87\x10\x68\x71\x30\x24\xc1\x8b\x48\x4f\x45\x94\xe0\x64\x9b\xd2\x8e\x95\x6c\x43\xd3\xf7\x7e\xbe\x46\x11\x5b\xb6\x9d\xfb\x6c\x43\x8b\x4d\x4e\x0c\x9f\x05\x56\x12\x06\x8d\x1c\x80\x72\x92\xdb\xf7\x43\x0a\xf2\x13\x02\x4a\x0e\xbe\x24\x47\x9a\xb2\x4d\x49\xe6\x44\x1a\xf5\x4d\x28\xa2\x49\x8d\x1b\x3a\x49\xf9\x37\x49\x2f\x99\x2a\xd2\x78\x44\x9b\xa1\x6d\xc9\x41\xc6\x84\x11\x2e\x39\xa5\x34\x49\x86\xcd\xb7\xd4\x4d\xb9\x75\x8b\x03\x70\x9a\x8d\x8a\xd9\x25\xb7\xa7\x88\x20\x4c\x79\x59\x72\x40\x2d\xdb\x02\x1f\x33\x74\x0e\x98\xca\xae\xfd\x73\x94\x9f\x16\xfa\x42\x9f\x25\xfe\xdb\xe0\x1d\x4d\xbf\xc3\xf1\xbb\x60\xc6\x6f\xdd\x6f\xbe\xbc\xb9\xf1\xff\x4f\x27\x2f\x7e\x9b\xcd\xa5\x7b\xf7\xf1\xa7\x81\x95\xa7\xec\x54\x72\x03\xaf\xf9\x81\x13\x81\x9c\x6c\x75\xc9\xc0\x7c\x2a\x1b\xf6\x51\x9c\xf0\xa9\xd5\x5e\xcd\xa7\x8e\x18\x38\xa3\x2f\x26\x5f\xbe\x50\xd9\xdb\xaa\x85\xbd\x6f\xb3\x62\xa0\x84\x39\xc7\xe9\x84\x9c\x64\x61\xab\xa2\x0d\x87\x1a\xa1\xce\x75\xd9\x20\x25\xdb\x6b\xfb\x5d\x26\x65\x4a\x47\xa6\xb9\x07\xfc\xea\x8a\x4f\x58\xd8\x76\x53\xb1\x9d\x44\x5e\xe3\x65\xaf\xf5\x8a\x67\x3d\x78\xda\xd3\x4f\x96\x61\x24\x11\x51\xdb\xd5\x2b\x34\xa5\x7b\x9e\xf8\x31\x37\x23\xc8\x4b\x12\xed\x0d\x61\x45\xbe\xfc\x82\x49\x8c\x25\x66\x25\x3d\xde\x20\x7a\x47\x1f\xa7\xe0\x16\x8a\x8e\xb8\x29\x21\xe7\x20\x87\x97\xcf\x83\x5c\xde\xff\x9d\x28\xcf\xf7\x13\x79\xbc\x9d\xc8\xe7\xf5\x07\x0a\x3c\x31\xa2\xe5\x97\xe8\xa8\xf2\x7d\x6a\x42\xe7\x21\xca\xd2\x21\x26\x2e\xc6\xa5\xb0\x43\x03\x78\x4d\x79\x80\x3d\xc5\x4a\x57\xea\x36\xbe\x44\x2a\x4e\x4f\xb3\x95\xbe\x26\x49\xea\x0b\xa1\x8a\x19\x0e\x52\xef\x4e\x65\xe2\x22\xcd\x65\x7e\x1e\xaa\xb9\x40\xa4\x8f\x88\x0d\x81\x5e\xd5\x17\x49\x51\x8d\x2e\x12\x0a\x8a\xf7\x5c\x44\x8d\xea\xb6\x9e\x10\x6d\x72\x75\xdf\x73\x67\x3e\xf8\x79\x8d\x56\xda\x51\x51\xfa\x5c\x55\x55\xec\x80\x5f\xa5\xbb\xb3\xfc\xfd\x5f\xfb\xe2\x5b\x5d\xc6\x37\xb4\x86\xf9\x3b\xf5\x9e\xaf\xc8\x59\xc0\x2b\xb9\xd9\xc6\x2b\xcc\x84\x1f\xe6\x67\x65\xde\x69\xf5\x3a\x13\xd6\xa2\xca\x91\xc5\x34\xf3\x5f\xc9\xc9\x09\x03\xc2\x1b\x04\xc5\xa2\x1e\xf2\x64\x73\x75\x91\xca\x9b\xa9\xfb\xa0\xfa\x1c\x8c\x81\xc3\xe0\x47\xd6\x0f\x78\x81\xe3\x45\x06\x5d\xaa\x27\x07\x1d\x2b\x62\x47\x54\x66\x01\x5e\x3e\x9b\xcb\xc8\x8d\x35\x26\xc9\x60\xe5\x34\xd0\x8b\x23\x65\x2e\x23\xd1\x78\xb6\xf6\xa9\x9a\x14\x39\xba\x49\x9a\x73\x07\xf4\x34\xa2\x53\x9c\x4a\xe5\x99\x1a\xf4\x2c\x3d\x87\x05\x9f\x38\xf5\xd8\x36\xf1\x6c\xef\x34\x37\xc1\x13\x49\x35\xab\xa3\x8d\xa6\x66\x9e\xee\x4c\xc7\xca\x17\x58\xa3\xd6\xe0\x6b\xdc\xdc\x0a\x1b\x5e\x2c\xd2\xa7\xbd\x52\x19\xcb\xf3\xb2\xe4\xbe\xd6\xca\xd1\x91\x70\xf9\x67\x9c\xd7\x5d\x32\xd5\x00\x42\x49\xef\x3e\xdb\xce\x3a\xf3\xa5\x32\x44\x12\xf5\xaa\x84\x82\xf4\xaf\x9e\x24\x89\x24\xab\xa7\x1c\xc9\x86\xa7\xc4\x59\x32\x87\x86\xfe\x61\xc1\xd7\x34\xd2\x63\x25\x61\x62\xf2\x9c\x14\x5f\xdc\x2e\x77\xcf\x09\xb3\xea\x89\xa2\x90\x83\xa4\x2e\xaf\x65\xf3\x0c\xfc\xd5\x18\xac\x19\x4b\xf0\xd7\x5a\xa4\x6c\x3e\xa5\xf2\x11\xae\x14\xee\xd3\xad\x4b\xb9\x48\x45\xd3\x8c\xf2\xd3\x53\xc5\x2f\xf4\x0b\x97\x5c\xfd\x95\xc8\x66\x00\x45\x36\xb3\x5b\xe7\xe9\x33\x3c\x63\x86\x35\x1d\x19\x9a\xeb\xe6\xcb\x8b\x54\xe8\xae\x9c\x0c\xaa\x2c\xe7\x98\x63\x64\xb2\xda\x3b\xd5\xae\x32\xd7\xd6\x87\x3c\x47\x67\xbc\x68\x9b\xc2\x17\x71\x8e\x53\x3a\xbb\xa5\xd9\xde\x02\xd8\xc1\x69\x3f\x97\x3d\x62\xd4\x28\xe3\x17\x27\xd7\xab\xa8\x88\xeb\x38\xe5\x21\x4e\x41\xa7\x85\xd5\x75\xc4\x3a\x4e\x00\x90\x77\xf3\xdf\x2c\x89\xac\x1c\x83\xcf\x65\x19\x76\x01\x06\x14\x49\x06\x5b\x34\x05\x9c\x8e\x53\x36\x38\x0f\xaa\x3c\x9c\xb9\x1e\xa2\x02\x70\xec\xeb\xcf\x82\x0a\x8e\xbe\x22\x4a\x96\x28\xb8\x6e\xa8\x8b\x00\x64\xf7\x22\x88\x8e\x30\x0b\x72\x5e\xf9\x41\xb8\xc5\x86\xfe\x63\x5d\x56\x1b\x34\x3c\x8b\xff\x1b\x31\x6c\xa1\x14\xf2\x5d\xeb\x0c\xbc\x59\x77\x29\xc0\x78\x6a\xd7\x91\xd0\x9e\x6b\x2c\xb2\x67\x7e\x22\x51\x6c\x5e\xf8\xfe\x56\x3c\x4e\xb3\x36\x8e\x13\x86\x50\x76\x45\x4a\x43\x76\x1b\x99\xe5\x4c\x5f\x6e\xbb\xd6\x53\x26\x75\x2b\xcd\x20\x38\x1d\xbd\xa8\xa8\x27\xfa\x62\x90\x9f\x19\x0b\x7f\x84\xf5\xf5\x33\x91\x47\xc2\xef\xc1\xd2\x0b\x4e\xa2\xe6\xb3\x74\x3a\x9b\x91\xea\x88\x39\xa7\x69\x01\xf9\x64\xbc\x78\x34\x04\xf4\x7f\x09\x05\xfe\x87\xa3\xd9\x77\xfe\x9f\x0d\xfe\xec\xc7\xd3\x77\x79\x9e\x6d\xf3\xa2\x7d\x56\x4f\xfe\xfa\x73\xff\xfd\xff\xd4\x19\x27\xf9\x4a\xe1\x04\xd5\xb1\x9a\xfe\xf1\xef\x25\x40\x80\x40\x3f\x6e\xef\x84\xd1\xa7\x1f\x2b\x23\x34\xc7\xed\x41\x20\x2d\x09\xe1\xc7\xf2\x3a\x39\x4b\x69\x45\xd1\x4e\x15\x03\x62\xdf\xe9\x18\x7b\x02\xc4\x91\xc0\x99\x7b\x1a\x30\x27\x42\xf3\x11\x25\xbe\x94\xbf\xf8\x5d\x3d\xd8\xed\x99\xdc\xba\x19\x6d\x34\x50\xe1\x03\x80\x97\x12\x08\xae\x12\x14\xfa\xe8\xff\x2a\x17\xa2\x9f\x7b\x13\x0a\xad\x41\xb0\xaf\x4e\x8c\x8a\x3a\xe9\xf4\xcf\x32\xb0\xdd\x80\x62\xc9\x58\xd6\xcf\x28\x5f\x27\x84\x79\xb7\xcd\x46\x80\x99\x34\xd5\x59\x96\xe6\x64\xb4\x44\x78\x74\xc2\xff\xab\xf0\x12\x4f\x7f\xff\x35\x25\xaa\x19\xb1\x0b\x6d\x75\x22\x76\x43\x28\x84\x5d\x76\x0e\xf5\xde\x0c\x16\x2c\x65\x35\x31\xa4\x5c\xce\x8e\xcd\xdf\xe3\xc8\x7f\x81\xaa\xaa\xc3\x1f\xba\x39\xd8\x79\xb7\x95\xd4\x7b\xf4\x62\x4c\x75\xdf\x8a\x0e\xec\x2e\xee\x7d\xae\x4d\x2d\x8f\x37\x5d\xdd\x44\xfc\x67\x26\xf4\x2c\x8a\x13\x4d\x53\xae\x4f\xa0\x91\x52\xe7\x8f\xd3\x2c\x62\xb9\x7d\xc8\x9d\xa4\xa3\x9e\x06\x54\xa1\x8c\x89\xea\x10\x8b\xce\x07\x5f\xe7\x69\x19\x94\x67\x62\xcc\x39\x82\x60\x42\x5f\x36\x92\x7f\x5f\xfc\x88\xb2\x26\x97\x5d\xa3\xfa\x24\x17\x7d\xb9\xae\xc0\xaa\x43\x91\x74\x10\x9c\x83\x1a\x39\xa1\x17\x2d\xf3\x99\x13\xdf\xe6\x6d\x79\x41\x9a\xa7\x85\x80\x59\xec\xd3\x3c\x69\x8e\xb9\xb5\x0b\xc7\x99\x0d\x12\x9a\x6e\xa7\x01\xc5\xf1\x3b\x66\x94\x7e\x99\x56\x78\xaf\x85\xdc\x6f\xb6\x6c\xb0\x2c\xcf\xa7\xe9\x68\xd7\x9e\x90\xfd\x7b\x2f\x4a\xc3\x1f\xf8\x24\x0a\x45\x64\x63\x4c\xfe\xc9\x32\x9b\xaf\x28\x65\xe6\x91\xbf\x40\x5e\x8b\x3d\xfc\xfb\x00\x1e\xec\x5e\x03\xff\xa6\xf1\xda\x89\x0a\xce\xf3\xcf\xc7\x91\xc7\x46\xcf\x25\xd1\x90\xaf\x84\xea\x0a\xeb\xec\x0f\x87\xcb\xbf\x3d\x25\xc2\xfd\xb2\xf1\x9e\x1c\xfd\x0f\x91\xe6\x98\x7f\xb8\x54\x47\x7a\x2c\xa9\xd3\xea\x2f\x35\x1b\x2e\xcf\xb5\x16\xa1\x38\x66\x34\x3b\x16\x4a\x15\x09\x07\x7e\x3f\x91\xc3\x49\xe3\x8c\x13\xdb\x3e\x52\x71\xf3\x88\x38\x7e\xea\x20\xba\x11\x10\xe6\x8c\x07\x4d\x8a\x3d\xb5\x6c\xea\xed\x7d\xe3\xd1\x63\x4a\xa4\xea\x92\x3d\x6f\x30\x52\x8c\x1a\xc5\x59\xc9\x85\x39\xfa\x1b\x2d\x93\xcb\x8f\x0d\x55\xe6\xea\xf6\xc5\x9c\x1a\x99\x49\xa2\x4e\xfa\xa5\x92\xbe\x35\xda\x4d\x11\xc9\xbc\x26\x93\x81\xe6\x11\xee\x98\x3d\x80\x57\x3f\x11\x29\x9b\x7b\x21\x11\x11\x92\x2e\x88\xf6\xb2\x88\xe6\xc9\x1c\xd3\x0f\x24\xc2\xa1\x13\xd3\xf2\x8a\xbe\xd6\x11\xa3\x34\xe2\x5b\xce\xc2\x28\x2a\x7a\xea\xe4\xe1\x79\xf5\xe7\x3c\xba\xb5\x27\xb1\x14\x48\x4b\xba\xdc\xe3\x6f\xc2\xca\x2c\xc9\xb6\x4b\xde\x66\x52\x96\x36\x4b\x99\x4f\x11\x5c\xdf\x67\xf7\x61\x14\xb1\x37\xf2\xb7\x54\x48\xb2\xe4\xbf\x9f\xed\xc6\x5d\x42\x39\xbd\xe2\xc7\xa0\x2e\x1f\x65\x1b\x68\x2e\x6d\x09\xfa\x12\x23\x3a\x46\x51\x38\xbd\xc1\xf6\x6b\xe3\x39\x5e\x4d\xee\x2f\xdf\x91\x3f\xce\xb2\x66\x44\x8e\x95\x8f\x57\x63\xeb\x12\x83\x28\x31\xfc\xf3\x54\x6b\xef\xd2\x48\xcc\x0a\x0c\xc7\x64\x12\x82\x72\x8f\xa5\x2a\xd9\x19\x7c\x79\xe9\x16\x1c\x19\xe5\x0a\xed\x47\x14\xf6\x14\x51\xaf\xd0\xc5\xcc\x7f\xb3\x48\x5b\x98\xa2\xb8\xa0\x3e\x25\xaa\x50\x7a\x04\x77\x9b\x3f\xcf\xf7\x99\x34\x4a\x86\x7e\x45\xaa\xa7\xd1\x6b\xc8\xca\x78\x34\x26\xe3\x4c\x3d\x81\x71\xdf\x8c\x07\x42\xff\x73\x59\x1e\x88\xca\xeb\x91\x4f\x3e\xb9\x87\x79\x5c\xf9\xe9\xad\x58\x1f\xff\x7b\xf6\x30\xde\x45\x5d\x50\xd0\xb8\x2b\x54\x6e\x06\xa7\x31\x18\x5e\xf9\xf1\x3b\xdc\x8e\xf7\x7a\xde\xfc\x8e\xee\xad\xf0\x6b\xe1\x10\xee\xe8\x80\x08\x66\xf6\x15\x64\xe6\xdf\x22\xb8\x46\xda\x59\xd6\x6a\x51\xb9\xfb\xb7\xbe\xfb\xeb\x99\x7c\xcc\x5f\xbf\xad\x06\x46\xe7\xcf\xdf\x76\x35\x7e\x4a\x64\xea\x33\xf3\xc7\x43\x04\xe0\x23\xf9\x43\xb1\x4d\x5d\xff\xf7\xdf\x8e\xc6\x7e\x39\x95\x60\x85\x54\x70\x8a\x97\xab\x5d\xf7\xeb\xff\xf8\x19\xbd\x8e\xf7\x3a\xae\x12\x19\xbd\xf1\x7b\x24\x4e\xff\x7f\xeb\x28\x15\xaf\xa9\x33\xdb\xba\x5b\xac\x6d\x86\x83\xbf\x39\xc7\x56\x64\x2d\x69\xf5\x89\x88\x50\x13\xde\x5e\x86\x5e\xc0\xe9\x0b\x7e\xc7\xb7\x22\xfe\xfa\x52\x2c\x4e\xeb\x12\x28\x06\x1a\xe9\xae\x63\x83\xef\x05\xfb\x8d\xb3\x6e\x5b\x1b\x91\xc3\xee\x2d\xd3\xf1\x36\x89\x7f\x89\xa1\xc2\x26\x22\xe4\xe2\x60\xbd\x23\xb8\x4f\x30\xdb\x46\x3b\x23\x7d\x37\xaf\xbf\xcb\xb4\x16\x2a\xb1\x30\xdd\xd3\x5b\x8d\x45\x46\x03\xb1\x5f\x47\x27\x0d\xbe\xcc\x92\x8f\xa2\x29\x38\x9b\xbf\x9f\x2f\x67\xb4\x0e\xa1\x78\xd8\xe1\xb7\x99\xe7\x63\x1b\x95\x74\xdf\xf7\x95\x88\x98\x87\x6d\x76\x4e\x9a\x13\x5f\xd9\xb3\x0e\x5e\xc5\x35\x9f\xcd\x7f\x60\xcc\x3b\x7a\x7c\x2e\x5d\xe9\x49\xa2\xcb\xe2\xee\x42\x9b\x3c\xb9\xd4\xbc\x32\x72\x19\xaa\xc9\xfb\xbf\xd3\x3b\x7f\xce\x2a\xc3\x4f\xe9\x35\xb9\xf6\x8c\x8f\x7b\xe4\xca\x13\x38\x1e\x2a\x37\x3d\x82\xf8\xd0\x37\xdd\x09\x24\x3b\xc3\xaf\x4a\x1b\xf4\xa5\x99\xd2\xdb\x29\x10\x71\x88\x3b\xc2\xb0\x6d\x3b\x00\x2e\xfd\x55\x06\xce\x9b\x2e\x23\x91\x45\xb5\x5c\x5e\xda\x72\x14\xd3\xcb\xbd\xc9\x88\x62\x95\x27\xf9\xdc\xe2\x9e\xc3\x32\xc3\x49\xd4\xf5\x4c\xc4\x75\xcb\xd7\xbe\x91\x44\xe5\x74\x5c\xa6\xaa\xbb\x85\x0b\x12\x22\xf0\x76\x3f\xa8\x4b\x95\x29\xdb\x53\xa2\x2f\xe9\x9f\xdc\x71\x90\xfc\xed\x2e\xd2\xb9\x9f\xa6\x14\x51\x71\x4b\xad\x35\x67\x5c\xf9\xb6\x12\x63\x6d\x2d\xf3\x73\xd1\x94\xdd\xd7\x2d\xef\x61\xfc\x25\xb5\x32\x6d\x76\x3c\xd1\x25\x4e\x65\x77\xd1\x13\x8d\xa5\xc3\xf2\x89\x5c\x5e\x4f\x94\xe7\xec\x44\x1e\xa7\x27\xf2\x39\x3a\x51\x81\x8d\x13\xbd\x32\x3c\x51\x91\xc3\x23\x6d\x65\xed\x72\x42\xe3\xf1\x84\xce\xca\x09\x83\x83\x13\x6e\xf6\x4f\x78\x38\x39\x61\xf2\x71\xc2\x62\xfb\x84\xcd\xde\x89\x86\xf3\x1f\x72\x94\xd4\x58\xda\xeb\x0c\xbd\xd1\x7b\xb4\x56\xba\x55\xdf\x1f\x32\xe0\x63\xd5\x5a\xd5\x7b\x41\x59\x61\x97\x84\x99\xc0\x55\x12\xe3\xe0\x4c\x22\x58\x25\xe5\x9d\x5b\xec\x95\x45\xd2\x3f\x64\xf4\x52\xb1\x76\xbc\xf3\x6d\x65\xc0\xa2\xae\x22\x58\x79\x6a\x9a\x31\x99\x59\x6b\xd8\x72\x27\xc3\xac\x06\xe1\xd6\x5c\xa6\x8b\x58\x99\xe6\xfe\x98\x3c\x14\xec\x80\xbe\xb4\x9e\xb2\xb5\xde\xf0\x89\xfa\xbd\x1f\xd1\x39\x6e\x4f\x77\x2f\x2f\xa9\x32\x75\xdf\xc5\x29\x56\xab\x65\x32\xbf\xb8\x87\x99\xba\x15\x53\x7d\x71\xe6\xe0\xd5\xee\xd0\x0d\x0a\x4a\x3e\x4f\xfa\x37\x1c\x1a\xb1\xdd\xf9\x65\x7d\xa9\x7e\x09\xd6\xee\x8d\xf1\x6c\xaa\x4e\x25\x24\x13\xfc\xfc\x8e\x59\x60\xb8\x82\xbd\x6c\xdd\xf8\xe0\xbb\x62\xf1\xd1\xf6\x9b\xee\x82\xbe\xb4\x61\xc3\xf7\xfd\x80\xe3\xa7\x5e\x6d\xe6\xf8\xc1\xc5\xcc\x65\xff\x96\x2f\x59\xba\xc2\xd4\x22\x30\x7a\xd4\xe6\xcb\x54\x48\xe6\x9d\x1e\x80\x8a\xb9\x32\x35\x44\x1b\x5c\xa7\xd2\x1a\x46\x4b\xf2\xce\x73\x07\xb5\x41\x47\x8d\x7d\x7a\x37\x04\x92\x7f\x6f\x1e\xd9\x6d\x36\x55\x61\xfa\xcd\x1e\x48\x99\x86\xf7\xc4\xe4\x0d\x79\x7c\x10\x48\xc3\xf0\xa2\x53\x95\xdd\x6a\xa7\x12\x7a\x60\x0a\xf7\xb8\x13\x68\xe8\x08\x18\xa0\x40\x54\xa9\xbd\xc5\x1f\xcf\x0e\x99\x0e\x8b\x61\x7e\xa1\x72\xf6\xfb\xd7\xe9\x1e\x8c\x3e\xae\x5f\xc2\x3a\x32\xa2\xd3\x23\x0e\x9b\x34\xe6\xf5\x15\xc0\x8c\xae\x99\x46\x14\xf3\x8b\xd8\x56\x36\x51\x7f\xbc\xbd\xf6\x90\xfe\x3c\xd7\xa7\xda\xed\x18\xf3\xea\xcd\xd0\x5f\xed\x49\x5f\x93\x3c\xd4\x0b\xdd\x3a\x40\x19\x3c\xd7\xca\xe6\x20\xca\x60\x61\x3f\x55\x97\xfd\x91\xd6\xd3\x5f\xd1\x88\x8d\x8a\xbf\x41\x4b\x22\xb1\x91\x8e\x4d\x00\xe6\x65\xf1\x47\xce\x8b\xe1\x19\x5e\xd2\x95\xef\xb3\x97\x5a\xea\x54\xe4\xfa\x60\x9e\x85\x67\x11\xea\x00\xb9\x05\x3e\xa8\x2e\xa7\x21\x64\x72\xd0\xc9\xfd\x33\x83\x7a\xae\x13\xfb\xd3\x3e\x7a\x4a\xf1\x54\x32\x43\x3d\x85\x58\x0a\x12\x16\xd0\xdf\x8c\xf8\x27\x0a\x66\x6a\x52\xfb\xce\xfe\x08\x12\x47\x03\xd1\xe5\x5c\xda\x66\x0f\x18\xd2\xce\x39\x08\xae\xdd\x03\x36\xfc\xee\x5e\x81\x54\x5a\x5a\x65\xbe\x8a\x1c\xe2\xd9\x48\x22\x2a\xff\xd3\xbf\x36\xf1\x83\x9f\xa4\xcc\x7f\x5e\xe9\x08\xb6\x6e\x61\x1f\x91\xdd\x5b\x8c\x14\xa0\xb1\x7f\x41\x1b\x3f\x8b\x90\x04\xfc\xc7\x37\xfa\xf7\x5a\x46\x64\x6d\xfe\x77\xb3\x38\x07\x35\xe4\xb3\xfe\x13\xf3\x56\x4c\xed\xf6\x4c\xd7\x1a\x91\xf9\xd0\x6c\x62\x11\x18\x43\xc7\x37\x02\x7f\x30\x39\x4f\x54\x78\x65\x31\x49\xf0\x53\x35\xee\xa7\x5d\x08\x3f\xdd\xbf\xb8\x3b\xdb\xaf\x8d\x9a\x28\x5a\xd8\x6d\x2e\xb2\x5b\xef\xf3\x0b\xea\xa8\x81\xc8\x28\x2a\xd6\x8f\xae\x8e\x89\x3f\x69\x05\xbb\x14\xb8\x64\xbd\xcb\x6b\xd7\xd8\xe6\x9b\x22\x3b\x8b\x5d\x8e\x95\x99\xc1\x66\xd2\x50\xde\x41\x5e\x0b\x6f\xc8\x91\xef\x67\x9a\x6f\x6a\x4d\x6f\x9d\x9d\xb6\x08\x09\x05\xe1\xeb\xf6\x45\x18\x34\x27\xd8\x1b\xa5\x7f\xe7\xa4\x02\x19\x3e\x4e\xb5\xb8\x37\x4a\xff\xce\x49\x05\x96\x90\x8c\xb1\x35\xe6\xb8\xcf\x12\xbc\x31\x5e\xc6\x1c\x5f\xac\x61\xee\xb4\x09\xcb\xc8\xa7\xdb\x25\x52\xb1\x3d\xa6\xd8\x3c\x2d\x77\xb3\x17\xfd\x4e\x4a\xcf\x36\x6d\xb1\xd3\x46\x2e\xa9\x03\xd3\x1d\xc3\x48\x7d\xb3\xc6\x49\xb7\x91\x6e\xd9\xc3\xa4\xfb\x86\x94\x06\xb8\xe2\x62\x11\x42\x1d\xc7\x05\x65\x1b\x81\x04\x55\xe4\x30\xe9\xb1\xc1\x30\x04\x12\x62\x68\x81\xfe\x16\x20\x03\xf8\x74\x51\xaa\x4a\x3c\xed\x88\xfe\x32\xe1\xf2\x2f\x7f\x44\xef\xdb\xc9\x8e\x63\xe4\xcf\x8e\xad\x32\x00\xe1\x37\x22\x13\x5b\x63\x01\xf3\x8c\xa9\xaf\xd0\x62\xa6\xb5\x86\x35\x4b\x90\xfe\xae\x9b\x99\x2c\xd8\xa2\x52\x74\xbb\x0b\x7f\xb4\xc4\x52\x91\x44\x14\x40\x35\x98\x65\xbf\x35\xed\xc8\x61\x9b\xa4\xf3\x3f\x4b\x92\x12\x63\x0b\xa5\x8a\xae\x59\xaa\xe3\xa0\x9b\xbc\x6e\x70\xfb\x06\x9b\x48\x1a\xf6\x39\x42\xd0\x4b\x1f\x4a\x50\x1e\x7d\x32\xd0\xc6\x9e\x00\x65\xe4\xa1\x02\xe6\x74\x8f\x34\xb1\x23\x56\xb7\x78\x24\xe1\x04\xfe\x69\x48\x66\xe4\x42\xe0\x07\xb0\xd7\x93\x7a\xc8\x67\x2d\x67\x27\x45\xbf\x4f\x72\x14\x94\x06\xb8\x75\x40\x29\xf4\x23\x45\xa4\x5d\xdc\x6a\x51\x0a\xdd\xa4\x48\x71\xf4\x37\x77\x1a\xf4\x32\x7b\x1f\xbe\x48\x3f\xca\xea\x39\xec\x2b\xa8\x2e\x8b\x3f\x90\x07\x58\x5c\xe0\x8e\xfa\xfd\xaf\x62\x3b\x1e\x99\xe9\x82\x7c\x93\x83\xc8\x1b\x51\x80\xaa\x1f\x49\xf3\x8d\x41\xbd\x4c\x38\x12\xef\xa6\x8d\xc6\xab\xed\x42\x5f\x56\x27\xeb\xe1\x93\x87\xd5\xee\xbb\x2d\xbd\xb3\x91\x19\xcb\xf9\xf8\x70\x93\x47\xb6\x4e\xc2\xb1\xe9\x78\x10\x4e\x8e\x61\x8e\xe7\x18\x39\x9d\xd3\xca\xca\x7c\xc3\x24\x10\x5b\xb2\x81\xd4\x0a\x52\xcf\x7c\xd7\x00\xff\x0e\x6f\x4a\x9c\xd1\xa7\x66\x04\xc2\x66\x78\x8f\x27\x08\x51\x64\x96\x41\xba\x5a\x50\x43\x7b\x5d\xde\x39\x52\xba\xe0\x4b\x77\x3f\x80\x7c\x76\xbe\xfc\x71\x3a\x34\xba\xff\xf9\xf1\x17\x6f\x35\xc0\x9b\xd4\xd5\x82\x25\x1c\x30\x3d\x16\x0c\x45\x5f\x13\xd0\x52\xda\xec\xae\x60\x49\x83\x32\xa4\x96\xda\x25\x2b\x42\x48\xf1\xe5\x18\x58\x6d\x29\x3b\xfd\x40\xcc\xb6\x28\x54\xa7\x66\xca\x90\x37\xed\xa3\xf2\x35\x9e\xcd\xf6\x67\x8e\x12\x63\xd8\x68\x3f\x5e\xc3\xbd\xb6\xad\x68\xef\xef\x53\xff\x97\xfe\x50\xff\xfa\xe6\x63\xe9\x96\xed\x26\xc8\xc8\xe4\x4b\x7d\xb3\xfa\xe4\x75\xf2\x8d\x6e\x44\xf2\xcb\x30\xa4\x91\xa4\xba\xd7\x39\x2b\x95\x3d\xb2\xb0\x6e\xeb\xce\x25\x41\x30\x91\x29\x9b\x0c\x10\xed\x23\x40\xdd\xcd\xe5\x09\x30\x53\x53\x7d\x67\x04\x7a\x6a\xd9\x97\x98\x62\x45\x62\xd4\x3e\x25\x2e\x6d\xd4\x9d\x34\xd9\x7e\x67\xcd\xd3\xdb\xca\x72\x6c\x11\xda\xa2\x85\x19\xb3\x7d\xf5\x56\xde\x67\xe1\x36\x90\x24\x55\xe9\x2e\xec\xee\xac\xc8\x88\x15\x69\x90\x81\xe3\xb2\x5f\x81\x64\xd8\x6c\xc8\x44\xd2\xe5\x45\x3d\xc6\x10\x2b\x89\x0b\x62\x0d\x2b\xa9\xa5\xd5\x1d\xac\x21\xa9\xbe\x10\x80\xa7\x78\xa6\x0b\x87\x66\xe2\xb8\xe8\x64\xc9\x70\x6b\xfd\xf1\x93\x87\x52\xc6\x93\x2c\xb4\x82\x56\x72\x1c\x7b\xff\x0c\x18\xf5\x1f\x7d\x3d\x10\x16\x5a\x9f\xea\x9b\x33\x5b\xd3\x8b\xdd\x01\x91\x91\x3c\x4b\x2e\x24\x0f\xa1\x49\xba\x8e\x40\x12\x02\x41\x98\x96\xa7\x31\xab\x78\x9f\x51\x07\xf8\x71\x7e\x71\xa9\x3d\xe3\x0d\xa4\xb8\x6f\xa2\x20\x98\xf1\x9b\x24\xb9\xbe\xb9\xfa\x62\xcd\xa5\x33\x69\x37\xf1\xf2\xe9\x8c\xe5\xc1\x07\xf5\xbc\x4f\x77\x01\x72\x1a\xc5\x19\xf8\xb6\xfe\xd4\x93\xfb\xff\xf9\x57\x41\xf6\xba\x5e\xb2\xde\x06\x71\x46\x64\x92\x89\xe1\x66\x37\xd6\x5b\x45\x22\xc0\xc5\x38\x19\xb7\x91\x91\x01\xb4\x3c\x56\x8c\xfa\x00\x4d\x8b\x78\x68\xd5\x8d\xac\xad\xd0\x33\x5b\xe5\x3e\x8e\x2c\x28\xf5\xfb\x0b\xf9\x83\x74\x2f\x13\xdd\x71\x99\x69\xa1\x7f\xab\x87\x48\x82\xf2\x48\xda\xa7\xb4\x74\xf5\x98\x39\xd3\xc7\x02\xc6\xc5\x57\x73\x01\x8b\x82\x3e\x49\x7b\xbd\x85\x48\x91\xe0\xd6\x34\xff\xfd\xdd\x4a\xf5\xc3\x53\x27\x8d\xee\x66\x9a\x05\x1a\x82\x3b\x95\x03\x7d\x41\x8e\xe8\x20\x35\x0d\xeb\x63\x09\x9f\xc9\x29\xf9\x97\x72\x98\xe9\xec\x96\x90\x28\x68\x69\x44\xef\x8c\xaf\x39\x8e\xda\xc5\x2c\x2f\x31\x95\xee\x6a\x6a\xd2\x2f\xed\x69\x4e\xe3\xc1\x40\x37\x05\x98\x6e\xc3\xb3\x2e\x6c\xc2\xac\x72\x40\xd4\xb2\x08\x8b\xd6\x65\xc1\x77\xab\xc3\x24\xd8\x31\xb2\x51\xc6\x26\xe9\x3d\x56\x1e\x5d\x35\x16\x20\xb0\xfc\xa0\x3c\x0a\x11\x9d\x75\x95\x20\x53\x6c\x32\x76\x32\x4c\x57\x1a\x51\xdc\x46\xe1\xa6\x84\xab\xf0\x77\x71\xb2\xa3\x6c\x4e\xa3\x27\x03\x5c\xe0\xd7\x3f\x26\xa2\x8a\x3f\xb6\xbd\x16\xb9\x91\xd5\x24\x7e\x09\x3b\x88\x97\xbc\x56\x42\x7b\x16\xff\xec\x06\x3e\xd5\x9e\x13\x5c\xba\x2d\xf0\x4f\xb3\x63\xa3\xbd\x93\xef\x76\xc1\x20\xb6\x15\x78\x70\xcf\x51\x6b\x7a\xe8\x64\x46\xe0\x08\x4f\xcd\x42\xe2\x8a\x70\x94\xd6\xf6\x68\xde\x89\x12\x00\xe4\xfc\x14\x59\x46\x80\x0f\xd5\x49\x70\x9f\x16\x91\x5c\xe5\xb4\xd4\xbb\x39\xa5\xe5\xb3\x95\xf0\x0e\x3f\x3c\x59\x7d\xb2\x0b\x9c\xe3\x9b\xb4\xfd\x12\x1d\xc5\x6e\xea\xf4\x26\x67\xb3\x9b\x53\xde\x2e\x28\xa8\xd6\x6b\xd3\xa9\xb5\x22\x7f\x64\x64\x3c\x2b\x2f\xfe\xa2\xf5\x3d\xfd\x94\x54\x08\xbd\x54\x7e\xc6\x1f\xb4\x95\xff\x1c\xf5\xd0\x8f\xd9\xb1\x36\x77\x64\x79\x4c\x2f\xd5\x53\xe5\x7c\xeb\x7d\x5c\xc3\x2c\x26\x9d\xf6\x1f\x3a\xe0\x6d\xcb\xa1\xbc\x8b\x95\x58\xb2\xec\x13\xb6\x4f\x26\x8e\x1b\x4f\x16\x3c\x64\xd7\x8c\x3c\xc4\xaa\x63\x3d\x6d\x00\x56\x39\x9b\x99\xd9\x01\x16\xfe\x06\xbc\xaa\x4a\xf8\x8f\x17\x47\x8b\x8f\xf7\xde\x95\x83\x58\x68\xc9\xfa\x22\x17\xca\x05\x36\x8f\xaf\x94\x95\xbd\xab\x92\xa7\x2b\x67\xf1\xd9\xeb\x3e\x3c\x06\x83\xfe\x2c\x33\xac\xa4\xfd\xf1\x74\xb6\x6d\x04\x6a\x65\x70\x27\x5c\xe4\x8e\xcb\xc0\x7f\x9b\xe4\x83\x5f\x3e\xb7\x26\xfb\x5d\xb9\x83\x31\x1b\xac\x52\xd6\x9b\xdb\xf0\x6e\x65\xab\xfe\xb7\xf0\xd0\x12\x55\x83\x7f\x10\x7e\x1b\xcc\xcf\x15\x4f\xfd\x0a\x2d\x8f\x89\x78\x25\xab\x74\x12\x58\x5a\x9a\x67\x32\xe6\x59\x69\x5d\x78\xa6\xe1\x9d\xe3\xfa\x75\x72\xb2\xa8\x41\x31\x9e\x0c\x58\x71\x6a\x1e\xe8\x74\xdd\xd1\x39\x71\x3b\x63\xa2\x66\xec\x91\x63\x2c\xc6\xf5\xf5\x39\xf6\xea\xa7\x31\xc0\xc1\x1a\x37\xdd\xd7\xc6\x46\xba\x34\x36\xd4\x58\xd7\x7e\x12\x1e\x28\x81\x49\xc0\x12\xe7\x24\x71\x34\x83\xd9\x92\x87\xc6\x47\x75\x61\x5b\x00\xb7\x0f\x13\x58\xde\xc2\x77\xb7\x68\x93\x6e\x56\xe4\xea\x29\x95\xb8\xc0\x8c\xfe\x2b\x1b\x2d\x7e\xac\x7a\x32\xf4\x8e\xc8\x4a\xa5\x2b\xbb\x74\xc3\x59\x4e\xb8\xfc\x59\x3d\x09\xbd\x6b\x67\x5d\xc5\xe5\xf6\x22\x62\x17\x76\x10\x9e\xd6\xd3\x24\x32\x27\x8e\x4e\x8b\xe9\xdd\xa7\x10\x45\x72\xb6\xde\x19\xf2\xea\xfa\xd7\x10\x63\x0f\xca\x26\x25\xd1\x29\x6b\x43\xea\xf1\x3e\xba\xfa\x55\xcd\x7d\x4c\x6f\x6b\x5e\xe4\xcb\xdb\x57\x9b\x58\x64\x8f\xbd\xe1\x16\x92\x83\x58\x58\x0f\x94\x81\xe3\x6b\x97\xe2\x13\x6f\x1b\x5a\xaf\x62\xb9\xcd\xfa\xd0\x82\xd5\xf6\xc6\x4f\x09\xde\x5b\x3e\xcd\xbc\x20\x5c\xaa\xe7\xb8\x70\xee\x37\x0a\x93\x35\x64\xeb\x0b\x8f\x06\x96\x1c\xff\x39\x7c\x10\x64\x85\xce\x97\x05\x9e\xed\x50\xab\xb2\xaa\x9b\x2c\x32\x51\xfa\x7b\x05\x86\x9d\x28\x7d\x2a\x79\xcf\x7c\x31\x25\xb7\x06\xce\x41\x93\xe7\x41\xc0\x05\xb3\xb6\xf4\x03\x78\x57\x79\xb1\xe2\xe3\x81\x72\xe5\x07\x6f\x6f\x4b\xf1\x29\x92\x07\x7e\xad\x2b\x14\xea\x93\xb2\x05\xb4\xb3\x2b\x63\xc3\x94\xe0\xf8\x0a\xd8\x81\x49\xf7\x86\xa8\xb5\xff\x9d\x3e\x44\xaa\x70\xd8\x5c\x48\xa5\x89\x17\x77\x71\x90\x3b\xeb\x79\x8f\x54\x0e\xb1\x07\xd4\x4e\x71\x8a\x1c\x05\x89\xf7\x95\x6a\xab\x6f\x75\x98\x79\xd9\xc3\x76\x6e\xd9\x81\x37\x1f\xf9\xde\xbf\xe7\x12\x7f\x52\x66\xbf\x55\xd2\x1b\x05\x7e\xe7\x4f\xe1\xa3\x8a\x7b\x99\xe7\x77\x01\xe2\x88\xff\x32\x19\xbf\xf4\xc1\xdd\xe0\xbd\x27\xc5\x77\xe2\x4a\xe1\xfb\xee\x84\xc4\x46\x83\x10\xb4\x0c\x1f\x7c\x79\xc7\xf7\x31\x88\x89\x1c\xe0\xb6\x01\x0f\xf2\x4e\x77\xf7\xa0\x50\xb5\x0b\xe0\x18\x25\x60\xbf\x3d\xae\x80\x92\x5e\x2f\x66\x41\xf3\xd5\x6d\x1f\xf0\x12\x1d\x93\xbf\xf2\x6f\x6c\x24\xb1\xf2\x63\xa1\xe5\x58\xd3\xb3\x73\x49\xcf\xb5\xd7\xcd\x3f\xbd\x65\xc1\xd7\x47\x4e\xf8\xe1\x9f\xd5\x3f\x4b\xe6\xbd\x52\x14\x12\x3e\x2f\x96\x60\x71\x9b\xbd\xf4\xeb\x44\xf8\xd1\xce\xdc\xd6\xff\xc2\x8f\xd2\xaa\x4f\xd6\x6a\x5e\x1d\x6d\xcc\x61\x75\x1e\x3b\x43\x4a\x8a\x14\x36\xca\xdc\xe7\xe5\xe2\x2a\x2d\xd2\x4d\xc5\xe6\x5b\x51\xd0\x3e\xe4\x0c\x97\x68\x80\x4e\x2e\x60\xb3\xf8\xc3\xc2\xe3\xf9\x86\x15\xa1\xa7\xb4\xfe\x64\x77\x29\x77\xa4\xa8\x44\xe0\x3e\xc6\x5a\x90\x4f\xe8\x15\x3c\xfd\x19\xe2\x18\x66\x7b\x95\x32\xaf\x26\xda\xc1\xa4\xac\x31\x0b\x59\x28\x6a\xf6\x20\x49\xbb\x16\x88\xe7\x27\xdc\xf8\xc1\xdf\x8a\x6d\x06\x62\x2d\xf5\x34\x34\x9e\x64\x65\x35\x7c\xdf\x7a\x66\xe3\x1c\x26\x1f\xc1\x31\xba\x1e\x1c\x7c\x38\x8c\x7d\x22\xcc\x5d\x55\xb6\xd7\x34\x47\xbb\xa2\x89\x7c\x5e\xd7\x9c\xb2\x79\x05\xbd\xc8\x9b\xfc\x65\xc7\xde\xa5\x52\x5d\xfa\x7b\x55\x33\xfe\xbf\x70\xce\x83\x7b\xf2\xc7\xcf\x7f\xe5\xaf\x02\xf8\xc2\xd7\xff\xf4\x6b\x45\xe3\x11\x3e\xea\x8b\xe8\x0e\x5b\xdd\xf9\x3d\xbc\x90\x3f\x98\xa8\x9e\x03\xc5\x1b\x73\xbe\x9a\x5f\x4b\xba\x30\x42\x21\x79\xa1\xb6\x42\x62\x12\xe6\xac\x9e\x7a\xe8\xdf\x95\x0a\xcb\x2d\xe7\x24\x9a\x4f\x78\x3f\xbf\xfd\x42\x7b\x00\x90\x5a\x90\x7e\x85\xaf\x3f\x79\x7c\x9c\xa6\x33\xfa\xca\xc5\x08\xbf\xc5\x7d\xe6\x7f\x14\x16\x47\x6a\x90\x4a\x91\x0a\x42\x06\x85\x98\x07\xb5\x6c\xd8\x69\xf8\x24\xfc\xe1\xe5\xd4\x8f\x81\x15\xdb\x81\xd3\x82\xbc\xc4\x41\x52\x02\x5a\xf9\x6d\xb2\xf8\xa3\xd2\xf7\x3b\xeb\x2c\x5a\xdc\x62\x9e\xec\x47\x62\xa0\x51\x1e\x8b\x93\x94\xa8\xac\xe0\xad\xf5\xe4\x4f\x76\xdf\xe4\x8f\x8d\x11\xc3\xe1\x00\xe3\x02\xb5\xb7\x7d\xbd\xb9\x1a\x6e\x82\xff\x0f\x7a\x82\xa0\x05\x08\xaa\xb3\x84\xa9\x14\x20\xee\x13\x10\x21\xcd\x65\xdc\x85\x48\x82\x3e\x96\x95\x2c\x7f\xdc\xea\xe0\x45\x4b\x62\xf6\x8a\x06\x64\x25\x13\xc3\x20\xa6\xc6\x78\xc0\xfe\x12\xb6\x05\x23\x01\x76\x40\x0a\x12\xd5\x96\x83\x00\xec\x9c\x7e\xa7\x4c\x27\x08\x30\x75\x3b\x37\x08\x00\x1b\xdd\x50\xf3\x20\xa3\xa2\xdf\xcb\xab\x34\x30\x84\x8f\x44\xaf\xb6\xfb\xe5\xc7\xd0\x7c\xad\x6c\x99\x86\x51\x60\xe7\xb1\x12\xc8\x3d\xfb\xf5\xe2\xea\x78\x06\xad\xdf\x0b\xdb\xaa\x8e\xac\xf9\x9c\x00\x95\x3d\xd5\xd7\xc5\xfa\x59\x6e\xb7\xf3\xc0\xc0\x7c\xb0\xe4\x3a\x01\x50\xec\xde\xe8\xb0\x98\xaa\x63\x29\xbe\x64\x5b\xf7\xd9\xf2\xb4\xfa\xd7\x65\xb4\x2d\x80\x77\x84\xd1\x5d\xd3\x10\xb0\x81\x65\xac\x54\x83\xa1\x29\xda\x23\x44\x02\xd0\xb9\x6d\x17\x39\x26\x01\x01\xb0\xb9\x7b\x69\xc5\x22\xbe\x64\xc4\x1a\xfe\xf5\xd3\xea\xd5\xfa\x60\x4e\xc1\xcf\xa6\x21\xb5\x21\xef\xa6\xbe\xda\xaa\x47\xaa\x86\x3e\x08\xa9\x97\xf7\x9e\xcf\x69\x50\xc0\x55\xb5\x07\x0a\xce\x1b\x02\x66\xa8\x30\xd1\x69\x72\x05\xb7\x2c\xc7\xd5\x6c\x88\x85\x02\x08\x16\x02\x8c\xb6\x2e\x99\x46\xc0\xdb\x34\x10\x36\xa1\xb4\xae\x60\xc4\xf8\xaa\x0e\x57\x98\x16\xf6\xbb\x77\x71\x99\x8a\x6f\xa7\xdf\xbd\x41\xd7\x99\x68\x0c\xbc\xb4\x01\xb8\x50\x60\x36\x80\xb0\xc0\x5d\xf1\x26\xac\x2b\xf4\xd4\xb6\x0a\xc2\x1e\xbd\x82\xfa\xe4\x5d\xfd\xeb\xe7\xe5\x17\xb1\xd3\x2e\xd9\xf0\xa4\x7a\xb9\x9c\xe9\xb5\x07\xbe\x75\x2a\xda\x2e\xe6\x2b\xfd\xfc\xa9\x26\x29\x80\x46\x70\xdf\x3f\xc3\x7b\x16\x4b\xd1\x18\xbf\x7b\x41\x65\xcb\xc2\xb7\xab\x9c\xde\xa3\xe5\x77\xf7\x9d\x5f\xe7\xdd\xa8\xed\xd5\x52\x04\x35\xf0\xae\xc4\x13\x64\x31\x2e\x60\xdb\xe5\x9f\x05\x97\x46\x0d\x78\x1e\xd5\xc0\x77\x8f\x25\x02\x09\x8c\x96\x08\x76\xe8\xd2\xac\x46\xb4\x2e\xec\x45\x27\xfd\x33\x19\x38\xdc\x36\x38\x05\x41\xd9\x0a\xc8\xf9\x8b\x7b\xa9\x28\xff\x9c\xe2\x21\x61\x23\x75\x94\xc9\x13\x1a\x3b\x28\x82\xfc\x3a\x51\x7b\x53\x13\x54\x77\x49\x1d\x82\xc3\x98\xdb\xe1\x38\xa3\x12\x46\x9a\x24\x81\xf1\x02\x02\x48\x8c\xba\x5e\xe1\x74\x24\x9a\xe2\x3c\xab\x33\xb0\x5f\xc4\x77\xe5\xd6\xe2\xab\xbb\x83\x0c\x14\x0d\x0a\x5e\x33\x24\x22\x3a\x3c\x5b\xf7\x44\x31\xa5\x6b\xe0\x9f\x70\xb1\x92\xaf\xb2\x2f\xf7\xf4\x40\x22\x16\xfc\x92\x20\xb9\xe4\x08\x00\x2d\x2e\x05\x1a\x07\x1b\x50\x79\x15\x81\x7c\x21\xeb\x3c\x9e\x50\xa9\x7e\x00\xe9\x16\x61\x3d\x08\x84\x63\x44\x30\x47\xd2\x27\x78\x23\x53\xc3\xc9\x52\x9e\x35\x62\x10\xcf\xfe\xc2\x20\x63\x38\x53\x7a\x07\xdc\x56\x43\x61\xc3\xa2\x97\x48\x63\xe9\xc4\x77\x0d\x97\xa5\x94\x45\x11\xe8\x6c\x5e\x94\x92\x88\x8a\xbb\x1e\x18\xce\x88\x60\xc4\xc3\x74\x81\x33\xa7\xa2\x60\xfc\x92\xe4\x9e\xc9\x20\x56\xda\x70\x56\x3b\x06\xa1\x8f\x4f\x38\xbf\x30\x29\x36\x29\xa6\x47\x3d\x3c\x71\x61\xa7\x51\x0f\xdd\xec\x91\x82\x58\x9b\x48\x3f\x42\xe2\x27\xa9\xf1\xa3\xf2\x1a\xf4\xa3\x1b\x04\xc3\xd6\x21\x89\x32\x55\xf4\x03\x88\xe4\x18\x03\x1e\x0b\x71\x13\xb2\xa2\xc7\x83\x1f\xc2\x94\x07\x6a\xc4\x16\xca\xc2\xf2\x01\x67\x42\xb9\x7e\xc4\xdd\xa8\x91\x09\xc0\x19\x65\xd4\x63\x1d\x19\xc9\x36\x7b\x17\xbf\x5c\x76\x23\xae\xa0\x7e\x9d\x1c\x1f\x94\x3d\x93\xfd\x32\x66\x3c\x55\x33\xc8\x99\x50\xc8\x04\x97\x33\x7d\x86\x04\x64\x21\xe5\xab\xc0\x2f\x85\xdb\x2c\x7f\x1a\x4f\x7f\x83\x48\x8c\xbd\x51\xef\x6a\x6c\x52\xd0\xee\x20\xb7\x81\xfd\x1b\x9e\x3b\xd1\x6d\xa3\xcf\x1e\x3c\xb8\xaf\x8e\xef\x9e\xdd\x5f\xeb\x9f\x71\x08\xf3\x1e\xc0\x9a\xe2\x12\x48\xec\x2b\xc0\x17\x22\xff\x98\x44\x52\x14\x79\x57\xcd\xa5\xd3\xfb\x9a\x12\xa4\x54\xd4\xf0\xdd\x42\xa3\xc1\x66\x61\x17\x56\x64\xf0\x93\x83\x3d\xfc\xfa\x6d\x4f\x4a\xfb\xa7\x34\x30\xfb\xf7\x27\x90\x3d\xf6\x9e\xe8\x3b\x8c\xf9\x07\x2d\xdd\xcf\xbf\xff\x93\x9e\x4e\x7f\x66\xd2\xbf\xa4\xa9\x67\xeb\x03\x4a\x7e\x7f\x2b\x40\x87\x83\xc0\x1c\xf7\x1f\xf0\x3c\x11\xbb\xc7\x38\xdb\x00\x5c\x4b\x24\x2e\x98\x04\xc1\x10\xb4\xc0\xf7\x54\x1e\x3e\xfa\xb2\x47\x3f\xbe\x77\xcd\xb3\x52\x8d\x0b\x05\x25\x75\x18\x71\x4d\x77\xa7\x02\x2f\x2b\xf9\x49\x1c\x66\x5e\xb1\x42\xf3\x69\x33\xf8\xf8\xe3\xcd\xe0\x65\xfa\x91\x37\x9b\xda\x1f\x37\x83\x3f\x92\x6f\x37\xbf\x59\x6e\x86\xd7\x9b\xf5\x1f\xd7\x9b\x51\xc8\xf4\xf4\xa6\xd2\xd4\x88\x64\xca\x2d\x02\xd6\xb2\x4d\xcf\xc8\x76\x60\x9c\xb8\xe2\x57\x77\x0c\x22\xb9\x22\x32\xeb\x5f\xbe\x40\x17\xb7\xe5\xac\x33\x8f\x6b\x9e\xeb\x07\xa0\x73\xb0\x0f\x9c\x6c\xef\x7d\x6d\xae\x5b\x59\x9f\xf1\xe5\xbc\x2f\xd9\x5a\x37\xd5\xd7\x3e\x79\xfd\x1b\x4a\xdd\x61\xaa\x27\xfc\x65\xee\x49\x64\x53\x81\x45\x5c\x15\x4d\xd5\x8e\x1b\xdc\xd0\xb5\x17\x75\x5e\x28\x56\x62\x14\xa9\x2a\x7e\xfe\x68\xe6\xf1\x24\xd9\x5d\x31\x90\xd1\xa5\xf1\xe8\x01\xc6\xd4\x2b\x3c\xb0\x98\xee\xb8\x31\x95\x00\x1f\xb6\xe7\x1d\x84\x88\xc3\x71\x8b\x89\xff\x04\x8f\x34\xf8\x10\x36\xaa\x3b\x4a\x15\xfa\x04\x43\x54\xd8\x88\x26\xff\x0d\x73\x66\x30\x69\xf2\x48\x86\xa4\xef\xa8\xd5\xb6\xd4\x6c\x22\xd0\x5f\x7a\xf1\xcd\x2d\x67\xfb\x57\xd7\x41\xfd\x27\xbc\x3e\xc1\xfb\x16\xf0\xa7\xd4\x97\xba\xae\xbb\x64\xbf\x75\x02\xfd\xf1\xbe\x24\xba\xb2\x10\x62\x40\x67\x22\x59\x7d\xb8\xa3\x2e\xad\xdb\x84\xd3\x44\xfe\x6b\x9e\x8d\xea\x4e\xc4\xfb\x58\xe9\x93\x2c\x6b\x4b\xf9\x7f\x7b\xfe\x0b\x5e\x9c\x66\x6b\x46\x6d\xa1\x17\xe5\x51\xc9\xea\xa7\x58\x97\xed\x89\x4f\x8f\xba\x81\x95\x02\x16\x20\x7c\x7e\x06\x61\x80\xa0\x93\x42\x1c\x82\xdf\x9d\xc6\x59\xef\x9d\xa2\xe8\xde\x9e\x4f\x1e\xfa\xe4\xf8\x52\x00\x24\x1f\x4d\x85\x38\xba\x1f\x27\x29\xaa\xf7\x54\x37\x40\x14\x9e\x31\x39\x2e\xef\xaa\x70\x15\xa1\x48\x53\x38\xa7\x07\x78\x0c\x30\x57\x44\x1f\x60\x59\x0c\x93\x7e\xfa\x98\x18\x3f\x88\x1b\xb2\x3e\x8e\x94\xfc\xfd\xb6\x1a\x84\xfc\x22\x42\x39\x48\x33\x38\xae\xab\x7a\xd8\xba\x76\xb1\xca\x0a\x96\xf9\x19\x09\xc3\x16\xfe\x2a\x46\xa1\xb3\xff\xfb\x1d\x51\x95\xe6\x87\x5b\x45\x87\x9f\xa8\xed\x37\x8d\xfa\xc6\xfd\x55\xda\xe4\x1a\xfa\x3f\x26\x7e\xda\xfe\xbc\xf1\xac\x58\xa8\xd3\xcd\x23\xee\x66\x39\xf7\x20\xfc\xad\x6c\xeb\x09\x57\xee\x14\xb1\x14\x43\x2e\x5d\x14\x0d\x9c\x9c\x2f\x07\xc3\x67\xe1\x02\xa5\x14\x61\x1c\xa2\xe9\x23\x1b\x38\x5f\xed\x3d\x7d\x7f\x14\x0e\x89\xb9\x8c\xfe\x26\x46\x41\xca\x3f\x8a\x0e\x41\x87\x00\x61\xff\xf3\x6f\x4d\x2a\xf4\xf7\x7f\x6d\xea\x7f\x53\x0e\x30\x2e\x65\x8e\x9f\xff\xd6\x84\x41\xc9\x61\x25\xa5\xff\xe6\x22\x48\x34\x83\x23\xcf\x6e\xf2\xfa\xf8\xfc\x28\x14\x91\x76\x57\x52\xfb\x2f\xa3\x20\x3b\xbb\x19\x36\x43\xb2\xa7\x8b\xef\x80\x3f\x93\xa4\xe9\x47\x6e\x48\xa1\x17\x8a\xa4\xee\xa3\x30\xc4\x70\x31\x12\xb4\xc2\x63\xe2\xc1\x98\xfb\xf3\x5f\xdc\x3b\x75\xd9\xd0\x72\x7e\x3d\xce\xcc\xca\xdf\xc8\x90\x3b\xb7\xe5\x58\xcd\x06\x32\x73\xb7\x82\xbf\xc6\xbc\x16\xdd\xa9\x39\x7c\xf8\xf0\x54\x57\xbc\x42\x9b\x04\xaf\xb3\x7a\x32\xb9\x5c\xcf\xab\xbf\x91\x39\x8a\x0c\x25\xcc\xde\xd0\x69\xc5\x8b\x73\x51\x20\xfb\x97\x0e\x1b\x75\xa8\xd1\x92\xf5\xa3\x0d\xcf\xb7\x04\x0c\x13\x12\x48\x22\x16\xda\x74\x9b\xa3\xda\x9b\xe3\x9f\x59\x33\x46\x42\xa1\x82\x53\x92\xfe\xcd\x49\xe8\x43\xf4\x9f\x85\xab\x1a\x1f\xad\xf9\xc6\x74\xca\x59\xe9\x40\x4f\xf0\xc9\x88\x8c\x31\x9b\x89\x83\x49\xcc\xfb\x4f\x5a\x55\xb9\x2b\xc2\x3e\x6a\xf1\xbb\x57\x44\x1c\x36\xdf\x15\x84\x19\x0e\x8c\x24\x9d\x04\xe4\x0e\xd8\xc1\xb3\x3d\x28\x96\x69\x47\x01\xe6\xd5\xef\x15\x47\x29\x1e\x41\x90\x1b\x4d\x74\xa1\x5f\xc0\x30\x02\x65\xe7\x8f\x44\x14\x7d\x7b\x2b\x64\x13\x21\xb7\x01\xc2\x13\xea\x4b\x4b\xa9\x87\xbf\x0d\x3e\x10\x34\x4b\x1d\xb8\x88\x9f\xc5\xfb\x55\xcf\xdc\x49\x8f\xd7\x8d\xed\x8d\xc7\xee\x0a\x72\x8c\x02\x5e\xd6\x6e\x6a\x77\xb5\xfb\x66\xff\xfc\x23\x78\xb4\x3d\x5f\xb4\x82\x66\x0a\x3a\x13\xfe\xa7\xf3\xbe\x83\x13\xb2\x51\xf0\x6b\x42\x93\xa8\x18\x02\xf9\xb4\x97\x1c\x3b\xa0\x0a\x7b\x10\xe7\x52\x72\x35\xfb\x7d\x12\x86\xdb\x09\x40\x5a\x2a\x61\x62\xd2\x8f\x49\x08\x9d\xed\xd6\x86\xc8\x7c\xe4\x91\x7e\x44\x36\x5f\xf8\x52\x41\x9b\xb6\x8b\x8e\x06\x77\x50\x25\xe9\x60\x79\x01\x14\x57\x37\x44\x27\xff\x49\x02\x21\xe4\xdd\x57\x3f\x81\xb0\xff\x58\xed\x2f\x5e\xea\xf6\xd7\x04\x9b\x86\x7e\x4b\x5e\xcc\x70\x29\x3f\x18\x71\x43\x30\x50\x0b\x12\xd6\x5b\xbd\x58\x22\xa0\x55\xe6\xb8\x25\x7d\x06\x7b\xfa\x48\x00\x7d\x3c\xbe\xd3\x16\x8c\xef\x32\x5b\x92\xbc\x86\xb4\x65\xee\x97\x8a\x6c\x12\x5d\x3a\x2f\x5a\xad\x80\x8c\x04\x79\x3c\xa2\x2c\x4d\x45\x47\x01\x51\x74\x4f\x96\x58\x2b\x44\xd6\x05\xce\xb0\x98\x15\x12\xc0\xc9\x12\x41\x20\xa7\xd5\x55\x5f\xf5\x54\x3e\x25\x81\x03\x1e\x55\x6f\xa4\x7a\x47\x14\x75\x55\xdd\x00\x42\x93\x9a\x94\x1a\x79\x22\xfa\x2d\x52\x38\x3a\x61\xf4\x11\x40\x5e\xe5\xbf\x0f\x7f\xb2\x16\x20\xc8\x27\x5e\x44\xed\x62\xf0\xbb\x39\x3e\x2b\xb5\xee\x2c\xb2\x5e\xd1\x47\x4a\xa0\xb4\x47\x8e\x84\xf6\x06\x59\xd1\xa6\xe0\xae\xd9\x67\x2f\x54\x95\xd3\x62\x9d\xf6\xce\xf4\x37\xd5\x0c\x38\x62\x57\x78\xdb\xc4\x62\x3e\x49\x11\xf7\x82\x60\x3e\x81\xac\xa2\x87\xdc\x22\x17\x2d\x81\x11\x60\x53\xc1\x54\xd4\xe7\xea\x87\xde\xc3\xd5\x29\x14\xd9\xfd\x02\x6e\xcd\xba\x73\xfc\xf5\x16\x9a\x81\x95\x46\x53\x20\x3a\x10\x2c\x6f\xb8\xe0\x61\xd3\x10\x5c\x55\x30\x03\x80\x7b\x3b\xa3\x8d\x12\xa2\x0f\xe0\xe2\x8b\x50\xe9\x03\x3d\x5a\x4b\xe5\x8f\x34\xb5\x03\x0f\x2f\x08\xd0\xbe\xb7\x9d\xfb\xe4\x7b\xa1\x55\x98\xfc\x85\xaa\x81\xaa\xb5\x4d\x59\x87\xdb\x4c\xb1\xf7\xd2\xe4\xa2\x24\x69\xad\xd7\xeb\x6b\xab\x07\x1e\x2c\xd9\x6f\x9a\x59\x2a\x46\x0e\x9d\x16\x2f\x9c\x05\xa2\xb4\x0c\x77\x4e\xf0\xec\xc8\xf9\x04\x33\x16\x74\x52\x8d\x06\x14\x2b\x69\x5e\x18\xcf\x10\x60\x7a\x26\x74\x94\x6f\x2e\x64\x6b\x55\x6e\xc3\x22\xba\x4c\x86\x75\x09\x70\xc4\xaf\x3c\x69\x71\xc9\x35\x73\xe1\xb2\xa2\x9e\x60\x36\x95\x9e\x1f\x25\x45\x40\x3b\x81\xb7\xcb\x8a\x34\x0b\x22\x0a\x46\xc4\x47\x94\x9e\x85\xdb\x00\xcf\x62\x96\xc3\xa2\x65\x29\xb8\x45\x09\x8e\x64\x80\xd1\xfe\x27\xd6\xc5\x06\xfe\x1d\x49\x4d\x5b\x57\x0c\x28\xf1\x10\xb5\x37\x81\x95\x03\xb1\xee\xe9\x0e\x99\x02\x54\x06\x2e\x8f\x8d\x54\x22\x05\x48\xe4\xc3\x47\x89\xb7\x35\xe9\x82\x0e\xc9\x36\xe6\xa2\x84\x88\xc2\x5a\x8e\x2f\x4e\xee\x47\x09\x12\x09\x38\xaf\x9a\x84\x3c\x88\x59\x7f\xc5\x08\xa3\xf8\x26\x71\x81\x4d\x0a\x41\xcb\xd3\x28\x01\x73\xfb\xe4\x1d\xd9\x50\xe2\xac\x13\x95\x1d\xf8\x58\x36\xad\xef\x9c\x0c\x6e\xbb\x07\x11\xa1\x58\xd3\x0d\xea\x19\x1b\x70\x01\x0c\x19\x8a\x5a\x42\xb9\x62\x46\xbd\xde\x3c\x66\x2b\x55\x81\x7b\x2d\xc2\x07\x72\xc3\xa8\x34\x46\xd2\xc9\xcf\xf6\x19\xd9\xdc\x74\x4b\x9d\xae\xc0\x90\x62\xf8\x67\xd2\xc0\x31\x75\x56\xc6\x53\x70\x40\x38\x47\x1a\x44\x0a\xe4\x26\x16\xe3\xed\xc0\xf6\xcd\xdf\xb2\x04\x5b\x0c\x74\x77\x71\x67\x21\x0e\xf6\xf0\xbb\x0d\x00\x95\x3d\xb6\x23\x3d\xd9\x4a\x39\x98\x04\x52\x0f\x1e\x02\x49\x3b\x09\xb0\xd7\x07\xc3\x08\xc8\xc8\x1c\x4d\xca\x13\xbb\xb3\x13\x49\xd1\x1b\xd6\x10\x8f\xeb\x18\x7e\x87\x55\x71\x6d\x04\xd4\xa0\x09\xb3\x47\xbc\xf9\x2a\x36\x37\xf4\x83\x8e\xbc\xd4\x62\x06\x01\x87\x51\x85\x14\x67\x78\x23\xcb\xbe\x32\x59\x15\x3b\xb5\x8d\xe0\xfd\x22\xfa\xf9\x1b\x48\x6d\x5b\x94\x56\xd4\x6f\x35\x72\x59\xec\x38\x78\x43\x7f\x8e\xb0\x21\x4a\xd8\xdf\x28\x7f\xb4\xc9\x0e\x85\xa7\x68\x21\xf0\x45\x01\x6a\xb5\xcf\x25\x95\x2b\x10\x0e\xe0\x58\xe5\x00\x35\x5e\x47\xb6\xfd\xd8\x8a\xbb\x8e\xca\x9b\xc2\xee\x68\xed\x95\x86\x53\x4d\x6f\x99\x87\xd1\xba\x78\xf2\x83\x88\x5d\x69\x55\x9d\x70\x35\xcf\x82\xd7\xba\x3e\x3a\xf4\xf6\x8a\xa6\x29\xfe\x0c\x0b\xa8\x51\xfe\x4f\xe3\x3f\xbe\x51\xa2\x62\x40\x18\xce\x18\xe0\x50\x3e\xa2\x22\x82\x18\x3b\xc3\x1a\xe1\x9f\x0b\x74\x72\xfd\x26\xe2\x16\xe3\x1f\x07\x13\x99\x5c\x66\x3a\x6e\x03\x2c\x5a\xbf\xb8\xb4\x95\xa1\x2d\xdd\xa9\x4e\x37\x2f\x50\xad\xe3\xe9\x5d\xa4\xd1\xaa\x28\xf2\x96\xb0\x8b\xaf\xe9\x05\x73\xee\xdd\x98\x37\xa3\xb1\x36\x98\x3c\x50\x48\x11\x3c\xb8\x2d\x73\xbc\xce\x24\xd9\x4f\x30\x30\xa2\xf0\xf9\x8f\xc8\x5c\x38\xa6\xf1\x18\xe1\xcf\x89\x04\x0f\x22\x53\x84\x8e\xd7\x02\x5d\x6a\x75\x91\xa7\x8e\x6d\xfa\xad\x10\xd8\xe0\x48\x6b\xdf\x8c\x1e\xab\xee\x4a\x09\xf8\x16\x2a\x6c\xf8\x26\x22\x9e\xce\xc0\x91\x5e\x13\x65\x47\x2a\x00\xf1\x03\xa4\x23\xbd\x65\xba\xe7\x8c\x67\x1d\xf1\x4a\x2e\xf7\xea\x0d\x52\xe2\x5a\xc2\x81\x95\xca\x78\xf3\x40\x82\xe4\x0f\xaa\xb2\x73\x1c\xd7\xbd\x3e\x08\x91\x83\x95\x17\xe5\xf3\xb9\x64\x93\xcb\x5a\x99\x2f\xb6\x45\x55\x38\xe7\xf1\x6e\x9f\x27\x78\xb0\x9c\x40\xc4\x24\xd2\x0d\x1a\xa6\xf8\xd6\x3a\x36\x0f\x39\x4d\x2e\x54\xef\x5e\x33\x0f\xf3\xc0\x32\x7d\x91\xa8\x55\xbd\xb7\xf5\xa4\x44\x29\xa3\x63\xc7\xec\x3a\xc1\x02\x2a\x4b\x36\xe3\x03\xf3\xed\x54\xdd\x6a\x78\x71\xe0\xc5\xb7\xfe\xe0\x34\xbb\x61\xa4\xaf\xa8\x8e\xcd\x04\x38\x9c\x32\x6b\x82\x8d\x67\x05\x2f\x92\xdb\x33\x1b\x07\x1b\x78\x8a\x2c\xaa\x72\x78\xcc\x84\xa7\x2e\xeb\x63\x15\x69\xc0\x51\xee\x79\x9c\x74\xd7\xcf\x46\x37\x27\x40\x2e\xfb\xe5\x51\xfa\x9f\x8f\x97\x50\x5b\xbf\xb1\xc6\xc9\xb4\x01\xc1\xdb\x68\xa5\x8b\xc8\x2c\xe1\x12\xae\xd9\x97\x71\x77\xf3\x5b\x2d\x8f\xbc\x57\xd8\x09\x07\x6e\x1e\x6d\x78\x6e\xaa\xaa\x73\xb2\x6e\xf8\xfc\xc1\x42\x79\xd8\x1c\x50\xc7\xf1\x58\x70\x4d\x76\xd9\xdb\x7f\x3c\x3d\x4e\x3e\xa6\x64\x28\xc9\xfc\x96\x98\xd4\xcf\x5f\x41\x5a\xfe\xad\xe0\x7d\xfd\x79\x7b\x72\x0c\x0a\x03\xa1\x4c\x36\x0f\xa4\xef\xff\x5f\xcd\x39\x32\x1d\xbb\x27\x7e\xf7\x73\x5b\xcf\x05\x46\x9b\xdb\xd0\x3f\x36\xe4\x43\xd1\xf8\x6b\x89\x2d\x62\x02\x1f\x37\xcf\x2c\xc8\x9a\xe5\x86\x61\x00\xef\x76\xcc\xb5\xd7\x83\xc8\x26\x2f\xe8\x56\x39\xc9\x9c\x24\x2b\xf3\x84\x3c\x31\x32\x62\xdb\x21\x4a\xc5\xff\xd9\x72\xcd\xfd\xc0\x28\x5b\x91\xe2\xb2\x09\x11\x02\xf3\xab\xc1\x96\xea\x72\xe0\x5a\x2c\xb7\xf7\x37\xb4\x26\x7f\xcd\xf1\xb9\xb1\x30\xc5\xad\x24\x87\x79\xbf\x48\x2e\x5f\xdc\x9e\xef\xbd\xdd\xed\xdb\x1d\x0b\x1d\x5f\x31\x0f\xa7\x10\x0d\xdc\x73\x2f\x55\x5d\x2d\x67\xb3\x4d\x4e\x05\x47\x80\xf9\xeb\x96\xf8\x08\x42\xfd\x46\x63\x55\xff\x93\x71\xa9\xf8\x5c\x99\xb1\x2c\x14\xbb\xc9\xb8\x1c\x8c\xd9\x83\x11\x01\x56\x35\x13\x26\x86\xaf\x70\x84\x00\x7f\xf7\xcc\x59\xcf\x01\xc7\x07\xb3\xf0\x6e\xfc\x91\x5a\xf0\xec\x59\x5c\xb1\x39\x08\x08\x40\x34\xbe\xf0\x49\xaa\x8d\xa5\x82\x01\xbc\x8b\xe7\x14\x17\xa6\x66\x37\xc8\xf8\x60\x6a\x0e\xfd\xfe\x16\x6d\x99\xfc\xc4\x7f\xd5\x20\x83\x79\xd8\x32\x08\xf0\x02\x69\xdd\x50\xcd\xa7\x73\x89\x8a\x04\x91\x24\x8a\xec\x9b\xcf\x6f\x1c\x4c\x08\x0c\x22\x45\xec\x4a\xd9\x95\xa2\xa3\x08\xa1\x44\x58\xb0\x93\x18\x31\x99\x8e\x24\x45\xf0\x38\xf8\xcd\x9e\xe6\xe1\x63\x62\x42\xf0\x51\x20\x7e\xcb\xe4\x1b\x4f\x52\xf6\x4b\x3e\x32\x9e\x21\x7c\x91\xe3\x95\x90\x76\xde\xf3\x56\x52\x7e\xd0\x3d\x42\x41\x2a\x45\x5d\xbf\x26\xb0\x14\x75\x97\x67\xe1\x7a\xa4\xb0\x77\xd0\xc0\xf6\xa1\xcb\xa2\xea\x5f\xf7\x76\x2e\xa9\xd9\x40\x84\xf5\x21\x55\x96\x3c\xcd\x3e\xb2\x53\x2c\xa4\xc8\x51\x7d\x33\xae\x0c\xb0\x3a\x02\x70\x4f\x23\xad\xe8\x69\xa4\x6e\x6a\x58\x4d\x12\x28\x8f\x7e\x3d\x20\x26\x79\x44\xaa\x28\xb0\x55\x11\x71\x2b\x84\x82\x1b\x17\x25\x08\xbe\x45\xe1\x1d\xd5\xf2\xb8\x3f\x3f\x9c\x99\x3a\x0a\xe3\xe2\xb3\x17\xc8\xe9\xeb\x25\xf9\x2f\xf7\x5f\xf9\x7f\x62\x1b\xc1\x6b\x5d\x5e\x99\xee\x6c\xc5\x40\x24\x9d\x07\x46\xb4\xd4\xb5\x9a\xb7\x52\x26\x7f\x76\xf2\x3f\xf5\xdb\x00\xa9\x58\x66\x82\x21\xec\x13\x89\x1d\x2d\x1d\xd3\xae\x36\x6f\x9a\xc7\xe0\xa1\x0b\x59\x5e\x41\x37\x9b\x7c\x6d\x1a\xdf\x56\xdb\x04\xc6\xbf\x6f\xef\x16\x2e\xbf\x9e\x17\x7b\x43\x01\x64\x09\xe6\xd3\x0e\xcf\xd3\x76\x8e\xba\x6e\xd3\x94\x2b\xf6\x5e\x94\xdf\x52\x37\x05\x26\x1b\xf2\x0b\x5b\xcd\x37\xf6\xf0\x71\x14\x19\xad\x40\x37\x0c\x3e\x06\x99\xaa\x1e\xb4\x2f\xcc\x71\x3d\xd1\xed\x34\x15\x67\x0c\x9e\x0a\xbd\xef\x42\xd5\x59\x26\xb1\xd1\x06\x16\x59\xcf\x2f\x45\xfd\xa2\xb1\xde\x0f\x56\x63\x2e\xb3\x63\x43\x1a\x2e\x92\x74\x52\xe2\x66\xae\x19\xa9\x97\x9a\xd6\x34\x50\x77\xce\x73\x50\x74\x60\x56\x64\x82\x73\xca\x10\x93\x35\x46\x96\xbf\xd3\xaa\x71\x11\x69\x61\xa1\xf0\xa4\x8b\xce\xdc\x99\x93\x3f\x52\x5d\xc1\x0b\xd8\x6c\xa6\x2a\x71\xd8\xfb\xd4\x28\x6d\xa8\x85\xf9\x68\x15\xca\xd1\x89\x5a\x1c\xe7\xb0\xc2\x5b\xcb\x25\xd9\x9b\xfb\xa2\x6d\xc1\x8f\x0a\x5f\x64\x85\x02\xb0\xc8\x2d\xa0\xd7\xd8\xe2\x72\x87\xd0\x7c\xe0\x68\xe1\x8a\x4c\x22\x6e\xd3\xf3\xb9\x3e\xae\xdc\x25\x54\xb9\xbf\x15\x5c\xdc\x3b\xd7\x50\x44\x92\x6a\xb1\x1a\x97\x9a\xa0\xed\xb0\x28\x9a\x8b\xfe\x4c\x6b\x45\x67\xb9\xf6\x87\x22\x71\xca\x05\xc3\x60\xe2\xdb\x8e\xf2\x55\x54\xfc\xb8\xa4\xe2\xc7\x27\x56\x1b\xa8\x04\x7e\xb0\x0b\xaa\xa7\xbd\xde\x67\xc8\x36\xa5\x8a\xb8\x78\xdc\xf5\x75\xeb\xa9\x12\xd6\x12\xe3\x7a\x9f\x58\xb6\x25\xed\x96\x70\x6f\xe4\x4f\x9b\x88\xa8\xa1\x79\xe3\xcb\xcd\x7a\xd5\xf1\x70\xd6\x64\xd8\x4f\x64\x9e\x83\x5e\xa3\x8b\x21\x46\x67\x24\xcc\x67\x4e\x82\x03\x29\xf2\xaa\xb0\x5f\x6a\x37\x8a\xa5\xe0\x0a\xe3\xc6\xde\xa5\xed\x38\x57\xca\x59\xe8\x39\xdb\x05\xb1\x0e\x5a\xbd\x7e\xc0\xfa\xb5\x75\x67\xd8\xf8\x2b\x5a\xe0\x26\x5a\x66\xef\xfe\x79\x62\x85\x8d\x4b\xa9\x03\x0a\x03\x9a\x2c\x82\x9e\x8d\x09\xda\x62\xc1\x6e\xae\xb5\x10\x32\x21\x8a\xd8\x17\x4c\xbe\xf1\xf6\xa4\xfe\xf1\xa2\x40\x3e\x32\xb5\xa5\x92\xf2\xec\x14\x08\x6e\x3b\x61\xb9\xa2\xd5\x86\xc2\xc5\x3a\x82\x72\x65\x92\x57\x85\xc4\x56\x55\x1f\x72\xc7\x15\x9f\x3a\xcf\xac\xe1\x19\xd9\x67\x88\x52\x1a\xca\xe9\x01\x26\xad\xc1\x33\xed\x71\x2c\xf8\x61\xa5\x3e\x9a\xbd\x55\x11\xb2\xb4\xdc\x06\xf5\xf4\xff\xb4\x8d\xa0\xc9\x0e\xaa\xe0\x2f\x50\x6f\x3c\x5d\x22\xa0\x54\xf1\x55\x6b\xa8\x5e\x3d\x30\x29\xc3\x24\x2a\xd7\x93\x65\x47\xf0\x3e\xea\xfc\xf7\x37\x3b\x33\x16\xe9\x17\xbe\xbb\x80\x74\x8b\x38\x58\x8a\x38\x8d\xcd\x0b\xc4\x8b\xb5\xd0\x5b\x5f\xb9\x08\x79\x91\x5d\x86\xa4\x1c\x9c\xe5\x8d\xab\x12\x78\x8a\x4c\xad\x45\xb5\xdc\x7e\xa8\xac\xc1\x9e\xc7\xda\xab\x51\xe6\xe3\xd2\x45\x2b\x8d\x30\x0e\x02\xa4\xc8\x5d\x7e\x57\x51\x0c\x36\x83\x95\xb5\x4e\x45\xd8\x44\x4f\xa6\x9f\x54\x10\xe8\xf2\x21\xcf\x68\x1a\xc7\xbb\xa4\x4c\xdf\x4c\x8a\xd0\xad\xf4\x5d\xb6\xdd\x37\x93\x42\x89\x0e\x98\x22\x2e\xdc\xdb\x94\x3c\x63\x5a\x92\xab\x9f\xe3\x4a\xb3\xbc\xdb\x0a\x98\x04\x61\x87\x27\x02\xde\xb5\x41\x8d\xd2\x14\xf3\xc5\x5e\x3d\xf2\xf6\xef\xad\x5a\xaa\x43\xad\x60\x8f\x93\xb5\x32\x98\xf6\x01\x88\x97\x24\xc4\x8a\x49\x98\xac\x55\xf9\x15\x2d\x0a\x7e\x66\xd5\xea\xbe\x4d\x87\x07\x71\x86\x16\xef\x8f\x7e\xb7\x3d\x55\x75\x59\x61\x43\xde\xde\x48\xfd\xe5\x25\x74\xa0\xac\x96\xcb\xdf\xf8\xe3\x5e\x22\x34\x2e\x83\x52\xb9\x1a\x41\x9d\x54\xb8\x63\xbf\xde\xb0\x52\xa8\xde\x6f\x94\x7b\x8b\xb2\xfb\x2a\xbc\xe9\xe7\x49\xeb\xcd\x93\xf2\xe6\x49\x71\xf3\x24\x9b\x79\xaf\x7c\xfb\xd7\x03\x56\x97\x7a\x2f\x20\x96\x4a\x89\x51\x42\xf0\x0d\x7b\x13\x9a\x9d\xe9\x5e\x72\x51\x90\x86\x9b\x3d\x44\x43\x94\x37\x0b\x35\x74\x18\x95\x86\x39\x0c\x61\xa4\x82\x6e\x52\x04\xde\x9d\xbf\x35\x3e\xfa\xfd\x57\xe9\x59\xd5\xf9\xa4\x15\xc6\x81\xb2\x3d\xa9\xcd\x0a\x0c\x4c\xe2\xcb\xf3\x39\x05\x12\x5d\x0d\x0f\xd3\x96\x5d\xa4\xbf\x08\x6a\x12\xa6\x88\xb9\x8e\x13\xa9\xf0\xbc\x88\x89\x1c\xda\xa8\x49\xb6\x7e\x11\xab\x99\xf6\xc7\x42\x0f\x77\x84\x48\x95\xaf\xa4\xa8\x98\xf9\x38\x9a\x2a\xc1\x27\xc4\x73\x26\x28\xdd\x5f\xed\xfe\xaa\xb2\xa7\x11\xbd\xec\xb5\x51\xd9\x12\x1f\xb7\x84\xe5\x22\xe2\x5a\x1b\xdb\x35\x6e\x1d\x14\x3d\xa0\x50\xd1\x82\x02\x94\x32\x3d\xe3\x14\xf6\x8b\xf4\x4f\x26\x48\x0b\x03\x0b\xc8\xe7\xc2\xb0\xfb\xf3\xd6\x92\x9b\x3f\x70\x0c\x7d\x30\x02\x89\x8b\x38\x10\xc5\xae\x89\x5f\x65\x46\x91\x7d\x34\xdc\x19\x4d\xb0\xd6\x22\x15\x6e\x39\xfb\xcb\xdb\xd0\x2f\x82\x72\xf0\x19\x22\x08\x0a\xe0\x33\xe0\x31\x0d\xfd\x55\x46\xe6\x6f\x5c\x10\x1f\xc6\x8a\x90\x57\xae\xf4\x00\x6c\x2c\xeb\x3e\x9e\xdb\x02\x56\x50\x0a\xca\xa8\xf9\x61\xfa\xa6\x1c\x41\x14\xc0\xcf\x92\x38\x03\x0b\x74\x9f\x3a\x79\x3e\x1b\x22\xe8\x1e\xbe\x89\x2e\x84\xa6\x0f\x93\xe5\xa9\x3e\xf8\xdb\xed\x8a\x56\x45\x9f\x45\xdf\xb5\x9f\xf7\xdf\x77\x57\x2d\xbe\x76\x37\xd1\xe1\xf5\xf4\x36\x77\x7b\x38\x97\xeb\x3e\x83\xce\x72\xde\x34\x48\xd0\xdb\x04\xa4\xec\x60\x2e\x1d\xf6\x78\x26\xa3\xb9\xf1\x7b\x59\x75\xf5\x1d\x8f\x79\x7b\xe1\xd3\x0b\xc8\xa1\xbd\xe5\x87\xf6\x5d\xd7\x78\xa2\xe5\x48\x04\xf4\xa5\xaf\xfa\x56\xf5\x5d\x95\x66\xea\x35\x7e\xde\xb9\x4c\xbd\xc7\x24\x59\xa9\x90\x42\xa8\xb0\xbb\x9d\xaf\x9a\xa9\xd7\x50\x9b\x58\x3d\xd2\x61\x0f\x5e\xaa\x4a\x2b\x0b\xce\x1f\x80\x58\x28\x12\xa1\xe0\x58\x6d\x14\x9f\x8e\xce\x1f\x31\x16\xe9\xa4\x43\x6a\x2a\xfb\xba\xb1\x53\xdd\x80\x80\x2b\x3a\x91\x79\x8c\xdd\x9b\x94\x3c\x84\xc2\xbf\x1a\xc9\x6f\x5a\x35\x07\xa0\x93\x32\x24\xa8\x38\xd7\x1e\xac\x79\x41\x82\xe6\xd5\xf7\xca\xea\x66\xff\x23\x08\x58\x0f\x8a\x37\x23\x2c\x29\x30\xb8\x42\x3e\xa0\x9a\x2d\x88\xde\x50\x1a\x7d\xfd\x25\x3a\xd8\xb8\x3e\x4a\x2f\x62\x77\x9f\xeb\x99\xbe\x3a\xc2\xc3\xda\xa8\x54\x6f\x59\xed\xdb\xbd\xa1\xc3\x87\xd1\x9e\x66\xdc\xd8\x86\x48\x32\xdb\xd3\x21\x10\x07\x15\x64\x77\x3c\x68\x1b\x3c\x39\x17\xd9\xd2\x9d\x27\xe6\x85\xa9\x73\x5b\xad\x1a\x17\xb9\xd8\xf8\x79\xf6\x8b\x76\xeb\xa7\xb7\xcb\x11\x76\x8e\xae\x8e\x46\xe6\x5f\x01\x25\xfe\x5d\xc8\xbd\xe6\xa1\x17\x3a\x8a\xe5\x3a\x81\x46\x65\xea\x18\x5c\x60\x80\x19\x9e\x32\x99\x17\xea\xb8\xd9\x58\xd7\x32\xc5\xdd\xad\xee\xf9\x3a\xe7\x95\xc8\xe8\x13\x81\xa9\x0a\x64\xf4\x9c\x17\xa5\x3a\x34\xb4\x58\xc1\x00\x4c\xc1\x36\x01\x16\xe1\x60\xcc\x4c\xa6\xdf\x65\x42\xb5\xb6\x4b\x07\xbe\xe3\x45\x22\xe9\x93\xf3\x56\x3d\xee\xe6\x4f\x5d\x13\xdc\xe8\x4e\x5f\x57\xe9\x0e\x62\x16\xa9\x35\xf0\x95\xb6\x23\x56\x1b\x63\x84\xe7\xf0\x16\x23\xb5\x48\x90\x13\x13\x40\x6e\x18\x40\x29\x0b\x19\x5c\x67\x0a\xa9\x43\x79\xac\x34\x54\x5a\x92\x61\xa5\xbd\xc8\xb7\x90\x6d\x8d\x85\x1e\xf0\x4f\x59\x18\x3b\x80\xdc\x26\x4f\x66\x30\xe3\x83\x6e\xe7\x40\xf7\xb6\x9d\x29\x42\x40\xe7\x3f\x80\xc0\xae\x0f\x69\xe8\xe8\xff\xcf\x64\x13\x7e\x86\xbd\x40\x28\x49\x7b\xae\xdc\x41\xbc\x1b\x04\x24\x40\x20\x71\x6e\xc9\xd6\x77\xda\x29\x9a\xde\x4a\xe3\xbd\x68\x17\x64\xb0\x8a\xa4\x81\xc0\x94\x99\xa5\xa8\xda\x53\xbd\xb3\x04\x11\xb2\x97\xdf\xaa\xf4\x67\x71\xd8\xc1\x4a\x7f\xaf\xdf\xc5\x9d\xf3\xe6\x97\xbe\xea\xc6\xfd\xb2\xaf\xc2\x3c\x74\x34\x62\x7f\x15\x1e\x24\x54\x0f\x0b\x1d\x6a\xdb\xea\x76\x66\xdb\xb9\xad\xc4\xec\xd3\x9b\xa2\xe6\x76\x4d\xe2\x31\x74\x80\x34\x8c\x88\xfe\xd8\xba\xa7\x6d\xd1\x77\x39\x5a\xfc\xa8\x83\x2f\xd1\x7d\x8b\xaa\xff\x6a\x17\xa4\x38\x5e\x79\x1b\xda\x03\xbd\x8e\x6e\x0a\xa2\x47\x53\x5e\xd5\x41\x72\x1b\xad\x41\xec\x03\xa0\x32\xd2\x8d\x4f\x5a\x3d\x06\xef\x11\x10\xb5\x43\xb2\x72\x62\x47\x48\xd8\xf7\x96\x6a\xf6\x58\xd4\xcd\xab\x60\x21\x4d\x85\x61\x83\xd2\x35\xa6\x5e\x8e\x10\x1c\x01\xf9\xe7\x1d\x6a\xdb\xea\x56\x5a\xb9\x7e\x30\x0f\x46\x8a\x8b\x1d\x53\xae\x8f\xaa\x8e\x09\x6f\x50\x0f\x04\xee\xe4\x32\x4d\x98\x38\x4f\x23\xa5\x46\xf3\xb2\xde\xd2\xfc\xcc\xcb\x91\xac\x1c\x45\xd7\x1a\x8e\x76\x3c\x24\x03\x04\xbf\x34\x75\xee\x18\x77\xca\xdd\x31\xbd\x61\xf8\x96\xdb\xd0\x06\xde\xa7\x9e\xe6\xc7\xc8\x1b\xeb\xf0\x9b\xd7\xcc\xfb\xea\xf0\x4b\x8c\xf3\xb7\x5a\x24\xb9\x15\xc8\xaa\x5d\x59\x72\x30\x84\x70\x72\xcb\x69\xc9\xd4\x90\xc3\xcc\x19\xe5\x73\x98\x2c\xce\xf3\xb0\x4f\xc5\x7a\x19\xf2\x42\xe4\x60\x0f\x57\x91\xbf\x76\x35\x7b\xa6\xf2\x48\xe4\x22\xe7\xa5\x30\xc7\xbc\xc5\x23\x3b\x65\xca\xc8\x5d\x70\x72\x6e\x0b\xb1\x6b\x37\xce\x90\x1c\x05\xec\xe6\xa1\xac\x19\x93\xa5\xb3\x69\x2c\x23\xe5\xd0\x98\x77\xca\xad\x31\x07\xca\xb9\x31\x07\x91\x8b\x43\xf3\xf4\xfa\xd4\xcb\xfc\x9a\x79\x93\x2d\x92\xac\x1d\xc9\x92\x10\x07\x6f\x66\xd6\x9b\x60\x47\xda\x6a\xfb\xb6\x1f\x5e\x82\x35\x90\xc5\x0b\x67\x3d\x70\xb0\xc9\x51\x22\x6b\x46\xd5\xa2\x33\x8d\x15\x90\x7e\x3e\x4a\xd7\x89\xbe\xdc\x79\x79\x7a\xff\xf4\x80\x19\xb5\x2c\x9d\x16\xab\x98\xed\xb3\xb5\xcf\x31\x43\x9f\xcd\x97\xd0\x34\x38\xdc\xeb\x83\xd8\x15\xd2\x0e\xee\xaa\x51\x6e\x9f\xa5\x81\x23\xdb\x73\x7f\x4c\x65\xf9\x62\xf1\xc3\xdf\x24\xc1\x30\x86\x4d\x11\x77\x5c\xc4\x08\x3b\x7f\x7f\xaf\x36\xca\x8c\xbb\x6b\x76\xed\xa2\xb3\x7f\x8d\xf4\xc3\xff\x75\x12\x45\x31\x4a\xce\xd2\x2a\xd8\x11\xb2\x24\x20\xd3\x24\x85\x65\xda\x04\x58\xd3\x37\x4d\xbd\x5f\xc0\x14\x01\x8e\x98\xfe\xc0\x81\x52\x7b\x3c\xc9\x24\x4b\xe9\x22\xe9\x92\xbb\x4a\xc3\xa8\x25\x6f\x6d\x4b\x7f\x25\x0b\x56\x34\x88\xd7\x75\x98\x8e\xd1\x4b\xf5\xcb\x9a\xe7\x98\x21\x05\x36\xdc\x59\x7a\xac\xb8\x48\x9b\x69\x96\xb7\x16\xf9\x95\x30\x56\xcf\x30\xa1\x84\x4b\x9c\x8d\x89\x23\x26\x9e\xf4\x60\x4f\x39\x0e\x3c\x4b\x45\x16\x97\xc9\x49\x64\x56\x6f\xcc\x8c\x4f\x9c\xaa\x67\x66\xea\xac\x9b\x11\x7b\x90\x72\x26\x70\x2b\x5b\xfa\x2c\x59\xb2\x36\xd4\x4b\x63\x1f\xd5\xa5\x4e\x97\xc0\x6d\xf6\xcf\x96\xfe\xaa\x24\xb9\x4c\xcd\xb5\x77\x3a\x85\x17\x5e\xdc\x71\xc0\x6f\xef\xd2\x9a\xfa\x03\xd5\x34\xc2\x44\x03\x4c\x32\x29\x48\x9f\x43\x5c\x26\x16\x41\x27\x84\x73\xd0\x22\xf6\xf8\x75\xd5\xd0\xb6\x60\x1d\xc0\x82\x1f\xe8\xc3\x5d\x5c\x32\x2d\xaa\xda\xba\x63\x58\x6c\x47\x03\xce\xce\x4b\x89\x05\x73\xb7\xe2\x12\x1f\xa7\xa4\xed\x29\xf0\xac\x29\x74\x3c\xd8\x99\xab\xf6\xcf\x2a\x8b\x78\xea\xac\xb6\xe6\xf5\x3c\x49\xa8\x1b\x1d\x12\x9e\x99\xd7\x7a\xb6\xc3\x0c\x15\x60\xef\xa0\x14\x11\xba\xfc\xc3\x7d\xf6\xbf\xd7\xad\x18\x08\x47\x87\x6e\xf3\xa3\x38\xa5\xd1\xa0\xa7\x88\x96\x38\x6a\x4e\xff\x26\x98\x8c\x89\x8e\x5f\xe7\x4d\xe2\xa9\xad\xbb\x6a\x39\x3f\x5d\x7c\x91\x73\xbf\x9f\xd3\xd1\xa6\xd6\x4e\xbc\xa2\x7a\x69\xde\x27\xac\xa4\xed\x08\xb6\x80\x1a\x76\xeb\xb2\xc5\x9f\xe5\xbb\xbe\x16\x79\xbd\x87\xf7\x11\xfb\xb7\x2a\xb4\x26\x79\x19\x26\x84\xcd\x2d\xcb\xbf\xc0\x87\x9f\x3d\xee\x7c\x61\x4d\x89\xfe\x92\xd7\xa2\xeb\xb8\x1c\x69\x0c\x6e\x3e\x98\x50\x36\xbf\x2f\x4f\x8f\x72\x74\x7e\xb0\xb6\x73\x9f\xdf\xf4\xa3\x70\x50\x34\xbd\x16\x97\x06\x29\x79\x05\x52\x1f\xf0\x54\x88\x92\xaa\x93\xd1\xd8\xbb\x4e\xeb\x11\x28\x59\x6c\xea\xd9\xe6\x1d\xfc\x2d\xcf\x9d\x63\x8f\xe8\x9f\xc9\xcc\x74\x06\x78\x85\xec\xeb\xd5\x0c\x6b\x19\x28\x9f\xac\x6e\x40\x83\x26\x2e\x03\x40\x16\x30\x8a\x72\x9f\xf9\x2a\x5e\x44\x7a\x59\xd1\x41\x34\x1c\x14\x84\xdf\xd5\xc3\xe2\x07\x1e\x78\xa8\x6e\x17\xdf\x9a\xa3\xce\x69\x67\x18\x85\x4e\x4d\x86\xb7\xfe\xec\xe3\xce\x45\x31\x7f\xca\x51\x63\x1e\x4b\x8d\xf9\xe9\x04\x8e\x90\x6e\xe6\x2a\x46\xd9\xd5\xfb\xf8\xbb\x82\xb6\x83\xb4\xfe\x96\x9a\x83\x6d\x00\xed\x59\x21\xfd\x01\x92\x66\xbe\x6b\x66\xcb\xea\x58\x4b\xc8\x68\x31\xe9\xc9\xca\xfd\xc0\x00\x52\x00\x5c\xfd\xc5\x54\x2c\x54\x48\x39\x22\x0a\xd4\x51\xc2\xdd\xa5\x6c\xef\xc6\xb1\x8a\x63\x4d\x73\x08\x02\x29\x71\x9d\x15\xe8\x63\x8e\x44\x2c\x42\xca\x50\x0b\xa1\x6c\x48\x99\x95\xc4\x40\xe0\x14\xc7\x3f\x9a\x2b\x88\x04\x93\x98\xd3\x5b\xc2\xce\xfa\xf8\xa4\x15\x33\x31\xe5\x7b\xfc\x2c\x9d\x92\x1c\x70\xf9\xbd\x2e\x37\x1c\x7a\x7c\x18\x7a\x9c\xf8\x0d\x2f\xb7\x18\x25\x00\x17\x26\x82\xe5\x81\x3d\x91\x83\xc3\x73\x2f\xab\x9a\x2f\x4c\x6a\x3c\x14\xe2\xeb\x5e\xca\x47\xd3\xf1\x8c\x3d\x4c\x8c\x6b\x67\x2e\xdf\x30\xa3\x52\xa3\xb0\xfc\x8c\x0f\x6c\x7d\x69\x1c\x68\xbe\x6b\x6e\x5a\x36\xdd\xf3\x4b\x5f\xe4\x06\x7a\xf0\x2f\x0d\xa9\xde\x2f\x59\x65\x53\x9f\xca\x2c\x1f\x7b\xaf\xbd\x3c\xd6\x96\xf8\xf8\x85\xa4\xe6\x8c\x51\x05\x74\x7a\x0c\xce\x4c\x69\xf9\xd1\x3a\xf0\xcc\x33\x8f\x3c\x2b\x5a\x67\xc1\x5f\x0f\x75\x7b\x69\x7c\xee\xd4\x59\x5d\x77\x7b\x8e\xe4\xa3\x30\x51\xd3\x02\xa6\xde\x90\x0b\x92\xfb\xa7\xd2\x8a\xae\xb0\xeb\xc3\x8d\x9e\xeb\x3d\xdd\x78\xae\xf5\x41\x20\x38\x92\x2d\x02\x56\xef\xa6\x77\xab\xbc\xe3\xb9\x6d\x2f\x75\x03\x1a\x6e\x82\x0f\x4a\x56\xca\x6f\xa4\xdc\x15\x2f\x68\x83\x49\x6e\x9e\xc4\x98\x5c\x10\x00\x13\x83\x55\x3f\xde\x35\x9e\x1b\x20\x18\xc3\xf4\x32\x92\xdd\x1d\x40\x2b\xdd\x47\x72\x99\xae\x29\xb5\x5f\x6a\x9f\xe9\xf1\x38\xaa\xc0\x53\x02\x84\x55\xbd\x07\x24\x7b\xfb\x36\x7f\x90\x94\xba\x4d\x83\xf2\xa7\x65\x57\x96\x70\xf9\x4f\xb3\x73\x2f\xad\x92\x40\x50\x70\x21\xcf\xbf\x65\x33\xec\x6c\xf7\x5f\x01\xb1\xca\x59\x39\xdd\x0a\x04\xc4\xcb\x1d\x0d\x85\xc3\x12\x16\xfa\x82\x5c\x34\x0e\x7a\x54\xf5\xd8\x50\x73\x57\x2f\x90\xdd\xfe\xa9\x42\xa9\x97\x24\x8f\x6f\xba\xb4\x50\xfc\xf7\x56\x52\xdd\xcd\x8a\x3b\x16\x99\x16\xa3\xfd\x17\x53\x44\x9d\x77\xfb\xe4\x70\x23\xe8\xee\xe6\x67\x11\xeb\xda\x09\x21\xe6\xd9\x7d\x26\x3b\xc7\x86\xc1\xb6\x25\x05\x8d\x2a\x66\xce\xb7\x88\x9f\x45\x55\x0b\xac\xac\x63\xd1\x82\xfa\x06\x1a\x2c\x76\xda\xcd\x6e\x68\xac\xda\x39\x74\xeb\x14\xbc\x99\x22\xe7\x05\xcb\x51\x7a\x6d\xf5\xbd\x81\xf7\x07\xe5\x5b\x82\xb5\xc8\xfb\xaa\xf7\x2d\x24\x93\xd4\x70\xc5\x76\xbe\x6e\x55\xe7\x1b\xd0\x57\xf7\x76\xd3\xea\x08\xbd\x1c\xad\x6e\x48\x90\x14\xfc\xc0\x46\x96\xd5\xf3\x0b\x56\x93\x1f\x99\x22\x12\x2b\x1d\x97\x7c\x6d\x97\x4d\x06\xa8\x1b\x35\x5e\xf4\x55\x3e\xc7\xf6\x7c\x41\xab\x38\xc0\x04\x50\x29\xfa\xd1\x00\x56\x6f\x5d\xad\x4d\xd3\xdb\xb8\x62\xea\x94\xc9\x6c\x3a\x5f\x5e\x69\x24\xd9\x2c\x8a\x0b\xec\xf2\x12\x72\x4b\x6d\x6d\x9e\xe4\x6c\x28\xdc\x85\x27\xfb\x58\x39\x89\x5a\x75\x08\x74\xcb\x65\xb8\x9b\x73\x8b\x86\xbc\xc9\x3c\x76\x74\x6e\x11\x60\x47\xdd\x40\x07\x3a\xde\x7f\xc9\x76\xd1\x5d\xd1\xab\xe1\xc5\x7b\x1e\xaa\x49\xd1\x92\xf8\x89\xe4\x64\x79\xc5\x77\x74\x38\x65\x75\x3b\x71\xcd\x06\x3b\x26\xda\x3e\xaf\xa6\xeb\x4e\x5f\xea\x33\xea\x20\x24\x2f\x29\x5a\xf3\xc8\x4a\x38\x2b\x72\xed\x1b\x77\x47\xf0\xcd\xdc\xf9\xaa\x51\x03\xf2\x15\x2a\xed\xb8\xae\x91\x5c\x8e\x72\x54\xc1\x7a\x29\xeb\x85\x1e\x5f\x27\xd2\xd4\xe9\x6a\x5e\x57\xcf\x87\x6e\xbc\x2b\x34\xb8\x8a\xd9\x0e\x89\xe3\x45\x34\x90\x79\x5c\x57\x06\x63\x76\x74\xde\xee\x77\x36\x5a\x78\x9c\x32\x42\xa9\xd2\x86\x86\x67\x34\xd6\xae\xa5\x74\x66\xd7\x31\x5e\x1b\x6a\x54\x77\x46\xe7\xe9\xed\x20\x4e\x62\xc2\x70\xd5\x12\xc0\xb1\x07\xa1\xa1\x48\x46\x51\x7c\x8e\x8e\x8d\x2c\xd9\xb7\xce\x59\x20\x0d\x61\xf0\x61\x57\xab\x4b\xb3\xa1\x7d\xb0\x3d\x53\x61\xb6\x7d\x38\xe7\x52\x13\x7c\x5e\x3f\xe9\x63\xde\x18\xb9\x8c\x9c\xeb\xbf\xa9\xed\x48\x3d\x05\x95\x77\xb8\xc4\x23\x21\x1e\x5b\x37\x37\xad\x27\xd0\xfe\x21\x0a\x6f\x70\xf9\x14\xa9\x02\x93\x53\x13\x26\xf1\x0f\x31\xc6\x6b\x52\x5c\x54\x68\x14\x4c\x5f\x50\x4f\x55\xb2\xec\x64\x23\x44\xae\xfa\xa2\x64\xaa\x03\x9b\x59\x6b\x56\x03\xee\xc9\x83\x57\x3d\xa3\x4d\x4e\x90\x9b\x77\x1b\xc0\x4e\x94\xcf\x23\xc2\xd2\xce\x6e\x03\x17\x6d\xc2\xac\xaa\x46\x00\x14\x96\xe9\x04\x06\x38\x28\x85\xf4\x48\x44\x75\x03\xce\xbe\xf2\x2b\xac\xd1\x8e\x3b\x0d\x04\x40\x4c\xb6\xe5\x47\x36\x85\x73\x4e\x68\x84\x00\x4f\xcf\xce\x97\x07\x57\x65\x82\x67\x67\x6e\x72\xef\xb7\xb3\xfd\xfc\x25\x0c\xa9\xbb\x39\x5b\x4c\x4b\xa2\xea\xde\xd5\x86\xd5\xa9\xfb\x72\x0e\xea\xdb\x46\x85\x3b\x14\x18\x15\x51\x54\xb9\x52\x1a\xcf\xc1\x91\x31\x8e\x5d\xaf\x4d\x4f\xdc\x2e\x64\x23\x6c\x05\x47\x36\x08\x1f\x6d\xd6\x4c\x71\xd2\xd7\x22\xc1\xc4\x2b\x9c\xfe\x46\x51\x73\x3b\x2a\xc0\x42\xbf\x9a\x47\x5c\xda\x59\xf4\xe1\xda\x35\x38\x30\xe4\xf8\x93\x5b\x02\x13\x46\xea\x2f\x84\xe2\x62\x86\xfd\xc9\xca\xf6\x08\x67\x01\x1c\x58\xbc\xf7\xee\x42\xc2\x13\x6d\x63\x9f\x4b\x99\xba\x38\xec\xe0\x2f\x65\x46\x4b\xd5\xe7\x52\x0e\x56\x2a\x9c\x34\x77\x38\x42\xa1\x61\xb1\x79\x79\xa5\xff\xe6\x1d\x9c\x8f\x32\x90\x5a\x94\x44\xfc\xa9\xd1\xd3\x1d\x47\xb0\x78\xdb\xd6\x3f\xfa\x92\x7e\x23\x7d\xcd\x9a\x54\x43\x1c\x65\x8a\x3f\x42\x0b\x51\x90\x4c\xe5\x79\x40\xbc\xc1\x9f\x3a\x6e\x85\x9d\xa9\x61\x55\xef\x71\x85\xc1\xb2\x91\x2b\x7a\x76\x99\xa5\x24\x1b\xb0\xa8\x55\xd3\xbd\xca\xb9\xf9\xdf\x3c\xf6\x14\xe3\xed\xde\x86\x3a\x7f\x90\x9b\xd0\xf7\xb2\x6e\x28\xd9\x2c\xa8\xa3\xe9\x2b\x9a\x42\xa3\xc1\x5e\x3d\xb5\xc1\x83\x60\x47\x92\x46\x08\xa3\x6b\x39\x27\x34\xef\x39\x53\xbe\xba\x28\x50\xb1\x70\xa0\xe2\x84\xaa\x7e\xd8\x6d\x8b\x3c\xde\xce\xbc\xe5\x66\x1a\xd8\xa4\xcd\x39\x2d\xf5\x6d\x4c\x5c\xa7\xb1\x75\x26\xe5\x5c\xc6\x99\x51\xda\x75\x96\x24\xed\xfe\x23\x8e\xb9\xef\x9a\x85\xa2\x54\xdb\x08\xb8\xa8\xce\x9b\x26\x87\x0b\x69\x36\x01\x20\x40\xa9\xf2\x60\xf9\xe0\x5d\x29\x44\x98\x31\x03\x22\x78\x61\x44\xd6\xb2\x29\xd0\xbb\xdb\x19\x37\xe3\xa2\x3a\x0f\xa6\xe2\x2a\x88\x5a\x48\xcc\x11\x2d\x4f\x1e\xb8\xd4\x86\xd6\xbe\xd2\x67\x24\xfa\x39\x98\x07\xa3\x6a\x17\x1b\x06\xba\x57\x84\x86\xd5\x85\x56\x98\xae\x1d\x4b\x36\xb7\xa6\xfa\x78\xc8\xf2\xf6\x46\xce\xaa\xd3\xf0\xc3\x21\x41\x29\xf4\x28\xf6\xa2\x56\x86\xd9\x30\xc0\x92\x56\x48\x35\xb1\x01\x36\xa8\x92\x30\x3f\x77\x29\x8d\x5d\x4d\x42\x87\xe3\xa5\x0f\x71\x39\xfd\x14\x82\x87\xf2\xb3\x58\x20\xb7\xc8\x19\xb2\x7d\xbb\x95\xc4\x17\xd9\x35\x0e\x5e\xbb\x74\xca\x4a\x70\xdd\xdc\xb7\x89\xeb\xf5\xe3\x96\x1a\x2e\xe1\x8d\xcf\xa5\xaa\x46\x26\x65\xd0\x15\x9d\x9c\xb1\x84\x51\x18\x35\xe4\x90\x11\x43\x2b\x0e\x34\x70\x44\x1e\x33\xc0\x41\xf4\xf3\xc9\x8d\x4c\x80\x2d\x42\x3c\xc2\x4e\x5a\x30\x4b\x0b\x1f\x5a\xeb\x16\x7a\xb6\x08\x8c\x12\x64\x41\x07\x89\xdf\x32\x13\xbd\xd4\xb4\x7b\x50\x17\x82\x32\x35\xd0\x4c\xb5\x62\x41\xfb\x8a\xa9\xa4\xa0\x13\x83\x7f\x67\x2d\xb1\x1f\x24\x03\x76\xbc\x7e\xab\x1a\xbe\x15\x89\xdc\xd4\x7b\x6f\x02\x22\x40\xdb\x60\x52\x0c\x80\xb8\x04\x84\x81\x00\xad\xf0\xcd\xcf\xd9\xd2\xdc\x8b\x6c\x6c\x9a\x1e\xa3\xd1\x8d\x72\x56\xa7\x6f\x37\x5b\xad\x73\x1e\xd2\xdf\xa2\xd5\xc7\xda\x24\xd9\xb4\x31\x60\x7c\x60\x7d\xdd\xd3\x84\x17\x2b\x80\xdc\x5d\xfc\xce\x1b\xc3\x85\x6d\xfe\xa1\xd1\x90\x1a\x5e\x65\xbc\x2d\xe3\x3e\x9c\x28\xb3\xf4\x6f\x27\x87\xa9\xde\xf3\x67\xf6\xed\x50\x9b\x6e\xba\x03\xc2\xb5\xa5\x8e\xd5\x31\x94\xbb\x58\xbe\x09\x14\xdf\xa7\xe8\x62\x74\xb7\x5c\x1b\xca\xcc\x7b\xaa\xa4\x36\x19\x1e\xbf\xd2\x61\xbc\xc0\x9a\xef\xd6\x5d\xb0\xa5\x49\x88\xd4\xd0\x8b\x2e\x31\x39\x46\x7a\x19\x54\xb0\xea\x8e\x4c\xd2\x6c\x92\x4b\x9c\x54\xd4\x85\xb5\xa2\x0d\x4d\xd2\xbb\x24\x10\x6a\xc4\xa2\x36\x4b\x5a\xd1\x4b\xdc\x1b\x2a\xad\x46\x5e\x49\x5e\xd6\x4b\xf9\xf8\x98\x5f\x4a\x9f\x32\x36\x62\x2c\xe4\x80\x4f\x01\x5b\xab\x0d\xbd\xa5\x12\xe5\xd9\xc5\x3c\x12\xe6\x40\x48\xcb\x9f\x09\xcd\xd1\xfc\x80\xb2\xb6\xa5\x1d\x3b\x0e\xfa\xb7\x31\xae\xa3\xab\x2d\x92\xae\xa1\x6b\x2f\x32\x8b\x56\x1c\x48\xa8\x41\x3f\x92\xe8\xb2\xe8\xd8\x51\x6c\x75\xe0\xc5\x42\xda\xc5\xaf\xaa\xeb\xce\x95\xc5\x8c\x88\x64\x6d\x01\xd0\x99\x86\x6f\xe4\x5c\x65\xed\x72\x7d\xaa\x2c\xc9\x56\x29\xa3\xa6\x87\xe7\x4b\xef\x23\x66\xba\x5d\x93\x5c\x8b\x0e\x48\xb9\xb1\xd6\xe4\x02\xfb\xa4\xf3\x4a\x51\x3f\x45\x3f\x4b\x9b\xeb\x2c\xb4\x14\xb1\x04\x61\xb7\x73\x3e\xb8\x22\x64\x44\xc0\x38\xc8\xa9\x2d\x1d\x62\x93\x60\x96\x14\x81\x6f\x28\xb3\x25\x33\xca\xf2\xd2\xc0\x80\x20\x8b\xd7\x27\xcf\xac\x86\x6b\xa1\x35\x5b\xf0\x0c\x94\x94\x8a\x63\x7e\xea\xd1\xf5\xa1\x6d\x3d\xdd\xac\x81\xcd\x52\x2f\x6e\x93\x4f\xf2\x21\x64\x2f\x0d\x13\xfe\xf6\xde\x42\x1a\x36\xf3\x6c\xea\x26\xc7\xb5\xaa\xe6\x8f\x20\x94\xb6\x7a\x4b\x7e\x8a\xe3\xc1\x06\x41\xd2\xb1\xe4\xd4\x43\xa0\xa5\xb2\x69\xa8\xac\xae\x16\x31\x61\x40\x0f\xb6\xfd\x31\x9c\xd3\x89\xb1\xe8\x59\x9a\x72\xae\x62\x33\xea\xe6\x94\xc4\x7e\xe5\x4e\x80\x3a\x49\x3e\x68\x32\xb8\x4c\x3b\xdc\x1b\xcd\x03\xa6\x63\xf0\x8d\xed\xc8\x6e\x5c\x9b\xda\xf2\x94\x37\x8b\x81\x8d\xbe\xd1\x87\xa7\xc1\xa9\x28\x23\x65\xdc\x81\xd1\xd0\xe2\x52\xcc\xb2\x5b\xb8\x51\x64\xae\xae\x1e\x3b\xe0\x54\x1e\x43\xec\x38\xf6\x0d\xdd\x2d\xed\x60\x80\x07\x49\x3c\xc9\x0c\xf0\xd0\x1e\xe0\x20\x6d\x3f\xa8\xd8\x0f\x3c\xae\xe3\x13\x28\xcf\xba\x9d\x6e\x07\x13\x9e\xd7\x19\x94\xa1\x98\x3d\xe8\xe3\xee\xfd\x1a\x19\xc4\x06\x85\x7c\xc2\x4b\x60\x10\x34\x2c\xb2\xcd\x6a\x54\x0d\x3b\x32\x12\x1c\x84\x99\xb5\xd2\xae\x46\x17\x8c\x00\x84\x66\x44\xc7\x5c\x2a\x1b\xad\x22\x78\x6e\x3a\xb4\xc3\x77\x7b\xd9\x12\x09\x2c\xa5\xe1\xf8\x37\xa4\xf3\xb0\xf1\x76\xc0\xa6\xf1\x37\xa8\x5f\x5a\xdd\x2f\x92\x11\xe2\xf2\xc7\xcd\xc2\x4e\xfe\xcf\x78\x3e\x7f\xc2\xab\xcb\x4d\x19\x56\xbb\x15\x35\xd4\x53\xb7\xcc\x5b\x0b\xad\xcc\x28\x97\x84\x82\x83\x99\x20\xba\xb5\xc7\x49\x69\x05\xc1\x51\x64\x61\x63\xef\xda\xc7\xa4\xa3\x00\xe5\x2e\xb9\xcb\x05\xa4\x17\x6d\x61\xa4\x8c\x7f\x29\xfd\x0e\x23\xe0\xd1\x1a\x44\x65\x54\x9d\x90\x5d\x34\xf0\x94\xd6\xd7\x74\xf2\x87\x7b\x11\xf5\x9e\x7f\x7b\xde\xae\xd1\x2a\x68\x3b\xce\xf5\xe0\x35\x34\x69\xe8\x70\x2c\x37\x21\x8e\x16\xfd\x13\x25\x51\x52\x09\x98\x87\x94\xb3\x65\x21\xca\xd3\x3e\xe4\xd2\x3c\x85\x68\x40\xe3\x86\x3f\x57\xb5\x74\xbb\x6d\xeb\xf8\x17\xfb\x30\x8f\x82\x48\x7e\x5b\x69\x7c\x8d\x9d\x8f\xa2\xe1\xe6\xba\xf4\xc3\x2a\x7b\xe9\x9f\x13\x58\x72\x2b\xc5\xbf\xe0\x5c\x09\x26\x9f\xba\x5f\x13\x10\x8e\x6e\x50\xa2\x21\xde\x91\xe8\xf8\x5d\x51\x04\x48\x89\x76\xc1\x4c\xf8\x89\x25\x09\x06\xd3\x2a\x90\x60\xe4\xd5\x5d\x46\x7c\xaa\x2f\x40\xb0\xbb\x13\x56\xa3\xc8\x5b\x6e\x83\x29\x8b\x67\x33\xcf\x2e\xf1\x2c\x33\xa2\x43\x5a\xcc\x9b\xa9\xe8\x13\x23\x0d\x1a\xc8\x57\x6c\x76\x46\x27\xde\xd6\x09\x55\xf2\xe4\x96\xd1\xf7\xc4\xc8\x63\x2f\xd3\x84\x78\xb3\xdb\x3b\xa2\x52\x31\xba\xa5\xf4\x3f\x32\x7e\xdb\x36\x8e\x77\x1b\xcd\xaa\x62\x77\x96\x84\x20\x83\x3e\xa3\x10\xad\x74\x95\x7b\xce\x49\x8e\xec\x2f\xf3\x80\x5a\x65\x8f\x4c\xc1\xe3\xe9\xb6\x46\x12\xcb\xd4\xa3\x6e\xc1\x20\x12\x9d\x80\x7f\x9b\x63\xb7\x34\x02\xef\xd2\x13\xc3\xa1\xf6\x9c\x4b\x7e\x2b\x71\x18\xc8\x09\xf8\x63\x07\xf7\x45\x09\xd3\xbb\xda\x52\xf0\x97\x37\x44\xb9\x05\x8d\x10\x88\x09\xb5\xe5\x85\xdc\x49\xb5\xf3\xdd\x92\x49\x63\x46\x4b\x25\x1b\x96\xfc\xd9\xb4\xbf\xe1\x6b\x60\xeb\xb1\x67\x85\x33\xcd\x12\x75\x20\x33\xca\x03\x4c\xc0\x90\x96\xb9\x28\xc8\x85\x35\xce\x9e\xee\x2f\x01\x0e\xb6\x95\x81\x4a\xaf\xf1\xf1\x33\x0d\x22\x76\xa1\x34\x53\x08\x00\x29\xbd\x2e\x1f\x3b\x22\x52\x17\x07\x35\xd4\x6f\x6f\x9b\xa1\xcd\x26\x9f\x1a\x63\xf1\xeb\x3e\x04\xd2\x65\x1b\xcf\xb7\xb7\x90\xd3\xa5\x57\x56\xbf\xd0\x2a\x1d\xeb\xc9\x3b\x70\x8f\xb4\x2a\x0f\xce\x86\x8f\x3e\x6f\x98\xaf\x6a\xbd\xde\xa7\x48\xef\xa2\x61\xea\xe1\xed\xb1\xe2\x3d\xad\x52\xb4\xe6\x7d\xb8\x7e\x05\x32\xde\x41\x6f\x55\xa4\xa3\xc2\xc7\x2a\x4b\xe7\xb2\xba\x20\xf2\x44\x89\xa7\xfa\xf8\x27\x81\x71\x98\x03\x5b\x46\x08\xda\x75\x67\x0a\xfd\x14\x6d\x67\xcb\x4a\xee\x74\xd5\x91\x73\x44\xa2\x21\x6b\xf0\xf1\xf4\x5c\xf3\x0f\xfc\xc0\xac\xe9\x76\xd2\xf5\x34\x99\xe9\x80\xac\x71\xbd\xa0\x3f\x37\x10\xb2\xb0\xc2\x1d\xc6\xbc\x90\x3e\x72\xda\x16\xa4\x31\x03\xf1\x72\xdd\xc4\x21\x68\x32\xc5\x15\xc1\xd2\x1a\x74\xa4\xc1\x5d\x34\x5f\xa3\xa1\xc8\xe8\x55\x41\x72\x28\xf2\x42\x7d\x69\xa2\x03\xe4\xac\x0d\x00\xf1\x65\x8b\x0f\xac\xc2\x8c\xd0\x58\x63\x01\x9a\x6d\x5f\xc9\x5c\x55\xdf\xfe\xc1\xcd\x91\x3c\x4e\x5b\xcf\x84\x69\xcb\xea\x8b\x07\x19\xfa\x05\x3e\xb0\xb1\x09\x0c\x25\x67\x7c\xe8\xba\x65\xbb\x57\x54\x78\x40\x65\x5d\x8c\x60\x3e\xe8\x42\x06\xd8\x58\xd1\x21\xce\x9a\xaa\x12\xd6\xa7\x0d\x93\x01\x13\x27\x6b\x5a\xbc\x99\xaa\xa4\xa6\x17\xf8\xdc\xcb\x8c\xb0\x10\x02\xd6\x50\x6f\x3e\x80\xf1\x82\x41\x61\xd1\xce\xba\xa8\x5a\xa5\x6f\xfe\x46\x6c\x8c\xfd\x4d\x68\x9b\x4d\xcc\x1f\x79\x6a\xaf\xe1\x50\x6b\xd1\xf3\x9e\x6d\x76\xdb\x71\xf2\x08\xc2\x80\x87\xc0\x29\xf3\xbe\xb2\x69\xe1\x9f\x76\x82\x7a\xc7\xfe\x39\xb5\xea\xee\x4c\xb5\x1e\xd3\x6b\xa7\x16\xec\x16\x55\xdf\xcb\x36\xdb\xa7\xe9\x8b\x7d\x90\x4f\xa9\xe7\xa1\x1f\x3a\x4c\xf5\x2c\x85\xdc\x7d\x46\x8a\xec\xaf\x95\x5d\xb5\x57\x0c\x63\x86\xcc\xc8\xc8\x13\x8a\xe8\x5b\x85\x02\xdf\xab\xc3\x13\x23\xf9\x76\x54\xda\x60\x9e\x6b\x6a\xb1\xbf\x9f\xea\x19\x8c\xe1\xc0\x10\x73\x1c\x86\xac\xa5\x27\x0e\x7b\xde\x76\xf3\x3f\x32\x7a\xbc\xd2\x64\x46\xbb\x0b\xa1\x01\xa0\x78\x35\x3a\x12\x92\xd1\x40\x71\xd0\xe2\xc4\xe5\x0d\x7a\xc6\x82\xcb\x43\x80\x98\xf0\xf6\xf0\x3d\x69\x99\x14\xc1\x60\x9d\x10\xe3\xa1\xa8\x19\xad\x5d\x12\x52\x7a\x87\x89\x5d\x36\x3b\x48\x5d\x8a\x9d\x55\x16\x20\xda\x6f\x43\x2c\x51\x60\xbf\x4b\x3e\x91\x0e\xef\xbb\xdb\x6c\xfb\x12\x3d\xdd\x67\x75\x9d\x56\x4f\xb5\xed\x26\x26\x3a\xb4\x95\xe9\xf3\xe8\xbe\xa7\x08\x32\x85\x5e\x86\x70\xe6\x1d\x6b\x02\xec\x3a\xd7\x2e\x20\x0c\xbd\xfd\x59\xe2\x32\x85\x2e\xff\x20\x54\x6e\xff\x26\x08\x8c\x85\x80\x38\xe2\x5c\x9c\xdc\xcc\x84\x7e\xd7\x8d\xad\x93\x7b\x35\x39\x2a\xb7\x97\xea\x3f\x38\x61\x88\xf7\x1a\x67\xab\xa8\xce\x0b\xe2\x76\x89\xeb\x27\x89\x0d\x33\xad\xf7\x50\x80\x03\x8e\x3c\xd6\x20\x95\x44\xf0\x19\x5a\xe1\x05\x4b\x63\xc4\xd0\x78\x07\x42\x98\x19\xfb\x18\x01\xb2\xef\x57\x26\x16\xc0\xa8\xd5\x46\xde\x96\xb9\xb7\x66\x97\x0c\x07\xc4\x6a\x5d\xb5\xb6\x9e\xfd\x4c\x2e\xca\x12\xcc\x3d\xde\xdd\x82\x7b\x0d\x8e\xb7\xd6\xa6\x1d\x3e\x4a\xba\x28\x99\x57\xf7\x16\xfd\xbd\x2c\x84\x4f\xfe\x27\x2b\xf3\x4a\xc8\x4f\x64\x6d\x5d\x36\x1e\x96\x9a\x51\xb4\x40\xf7\xba\xa4\xa4\x39\xae\x91\x53\x00\xbe\xf2\xde\x3b\x05\x77\x13\x1e\x38\xc3\x58\x23\x64\x28\xe8\xda\x9d\x55\x72\xef\x6f\x14\x89\x02\x80\x57\x7c\xa6\xb8\xe8\xf6\xe0\xc5\xb7\x4a\x87\xbc\xf9\x5d\xe9\x57\x22\x62\x21\x06\xc9\xa5\xa1\xe6\x09\x78\xb9\xe8\x8d\xa8\x8a\x32\xbc\x51\x69\x9b\x67\x11\x54\x3b\x82\x2a\x49\x39\x0f\x9f\x29\x13\xab\x21\x0b\xdf\x52\x68\x08\x06\x0a\x0d\x40\xe4\xdd\x02\x89\x48\x67\x05\x75\x3a\xe7\xe2\xf5\x10\x59\xdf\x18\x2c\x88\x75\x43\x35\x09\x6d\xa1\xd8\x08\xd2\x22\x99\x63\x9d\x84\x1f\xfc\xbd\x9f\xcf\xea\x10\x52\x5c\x5d\xc3\x12\x5e\x38\x4d\x9d\x3a\x6f\x25\x93\x60\xbd\x05\xfc\xa5\xa2\x46\x49\x90\xdf\x00\x0a\x5c\xb6\x64\x12\x1b\x48\x81\x6b\xa4\xa6\x2b\x13\xb3\xa8\x38\xf3\xce\xab\x9f\x4d\x07\xc8\x51\xf6\xb0\xa1\xda\xfb\x56\x9a\xc7\x66\x4b\x07\xa4\xdc\x5d\x04\x9a\xab\xff\x2b\x42\xd3\x5c\xb1\x69\x80\x31\x88\xa8\x22\xa7\xbc\x95\xf6\x50\x6b\x86\x83\x9e\xd7\xef\x66\x58\x2c\x04\x8f\x71\xa2\xa0\x37\x7a\x9b\x4e\x27\x6d\x02\xaf\x63\x88\xf0\xf3\x17\x72\xd4\xee\xf0\x12\x8c\x98\xf7\x99\x44\x37\xf6\xd7\xad\x7a\x21\x93\x7e\xc8\x86\xf0\xae\xed\x03\xe7\x91\xf0\xc6\x26\x9b\xc3\xd1\xba\xa5\x67\xe4\x28\x99\x27\x8b\x72\x90\x1d\x9a\x27\xf5\x54\x13\x01\xf3\xdc\xd0\x37\x53\xda\x86\xa3\x20\x46\x25\xeb\x4d\x90\x64\xbb\xea\xab\x25\x37\x76\x51\x4a\x5e\x15\xe6\x42\x8f\x28\xff\xdc\xb7\xf7\x2c\x8a\x84\x9c\x79\xf5\x2c\x46\x04\x11\xda\xfd\x74\xe3\x46\x3f\xd7\x8d\x76\xfd\xdc\xab\xc7\x1c\xb6\xec\x9c\xc0\xc5\x4a\x52\x59\x97\xbc\x2e\x3d\xcb\xd4\xd1\xf6\x3a\x64\xa6\x39\xbe\xbb\xe3\xb9\x9b\xbe\x9b\x5d\xcc\x59\xfc\xcb\xb9\x7b\xd5\xab\xdd\xcd\xf4\x1e\x64\x71\x93\xda\xec\x3e\x5c\xf4\x05\x27\xa8\xe5\x1a\xef\x58\xbf\x33\x7e\xeb\x4b\x69\x88\x81\xb3\x5e\x07\xbf\x4f\x70\xc9\x95\xd8\x1d\xcf\xad\xfd\xcc\x9c\xbe\xfb\xfb\xbe\x34\xc6\xd2\x0a\xd5\x01\x59\xc3\x4e\xe9\x92\xde\xd2\x7e\xb7\xf2\x90\xec\xb2\xfc\x27\xca\x53\x3e\x66\x89\x44\x09\xb0\x02\xc0\x98\xb8\x4a\x9e\x52\x47\xbd\xd5\x70\x40\x29\xc8\x8c\xda\xa2\x9c\xed\x19\x68\x7b\xb2\x9a\x95\x4a\x65\x67\x98\x48\x0b\x9c\x88\xc3\xa6\xbd\xdb\xcc\xe6\x60\x4c\xfd\x0f\x07\x98\xfb\x50\xf1\x86\x1e\xc2\x3e\xee\x8a\xab\xbc\xac\x00\x43\x71\xad\x3f\x73\xaf\xb1\x92\x95\x59\xe5\x21\x2f\x52\x2b\x85\xea\x86\x2f\xa4\xe7\x3a\x8f\xd9\xe5\x36\x4f\x5f\x48\x0f\x55\xed\xed\xeb\xfb\x06\x53\xb1\x30\xce\xa6\x2e\xed\x1a\x67\x28\xc5\x98\xe6\xce\x6b\x41\x3f\x1e\xab\xb5\xb3\x9c\x7b\x8e\x15\x51\x49\xa3\x7e\xea\x50\xfc\x53\x2a\x54\xa9\x64\xa4\x05\xa3\xbe\x5c\xe6\x6a\xcb\xed\x95\xd6\x77\xb1\x00\xa5\x48\x6d\x43\xcf\x4e\x9e\xe0\x0c\x61\x32\xcd\xb1\x29\xcb\x89\xce\x95\xee\x29\x2a\x06\x04\xa8\x06\x4a\x9b\x16\xb0\xda\xa0\xcd\xda\x43\x04\xf8\x6f\xb1\x49\x8a\x7a\x48\xdf\xb1\x53\x2a\xf8\xd8\x6f\xb4\xa8\x76\x0c\x3c\x95\x7a\xc3\x21\x90\xf2\xa2\xe9\x7c\xc1\x61\x7d\x67\x25\xe8\x46\x73\x92\xc0\x13\xf3\xf2\x44\x3f\xd4\xd6\x93\x54\x63\xd6\x57\xab\x46\xed\xfd\xb0\x0a\x38\x6f\xcd\x3c\xbb\x33\x8d\x0a\x49\x8e\x34\x32\xe2\xa0\x93\x1a\x67\xea\xb3\x6d\x77\xe7\x38\x66\x4e\x1f\x00\x46\x77\x78\x3d\x3b\x53\x6a\x74\xa2\x82\x16\x2a\xef\x16\x73\x38\x91\x93\xbf\x21\xb0\x96\x31\x55\x55\x18\x30\x01\x13\xfa\xb7\xa1\x50\xcd\x4a\x19\xa0\x20\x5d\xb0\x40\x88\x5e\x9b\xba\x9c\x1b\x14\x84\xe7\xc1\x54\x2c\xb6\x98\xa8\x67\xd3\xdb\x33\x7f\x67\x6b\xf5\x34\x9a\xe7\x9f\x7f\x4e\x00\xd5\x65\x76\x0c\x97\x7e\xea\xde\x2b\x66\xa0\x24\xc1\xd1\xff\xf2\xa0\x3c\x2f\x76\x2e\x4a\x92\xcb\x1a\x2e\xa7\x35\x25\x4d\x46\x7d\x2e\x3c\x87\xec\x70\x6e\xfa\x5e\x60\x38\x41\xc3\x07\x35\xe4\x93\xcf\x8b\x1a\x9f\xef\x4c\x2b\xa9\xe6\xdd\xce\x5e\xce\x1d\xc8\xe6\xb9\xc1\xc6\xd5\x0a\x52\x85\x6e\xbe\xea\xe4\xd5\x0b\x4f\x8b\xd7\xb5\xab\x57\x4f\xd5\xb5\xfa\xbe\x5a\xd9\x52\x77\xf6\x47\xa5\x7e\x93\x4f\xc3\xc2\x5a\xa3\xe3\xc4\x51\x7e\x4e\xd1\x7c\x2a\xb5\xfa\xf6\xd4\x1c\x12\xc2\x00\xd5\x71\xe3\xd1\xab\xfa\x4e\xf5\x5b\xdc\xe2\x2d\x92\x9b\x9b\xef\xeb\x36\xc7\xa9\x5e\x3d\x5e\xc3\x7b\xca\x1a\x52\xf6\x51\xce\x41\x0d\xd2\x60\xf8\x7b\xd1\xf9\xf1\xaa\x38\xe6\x09\xb3\x88\x48\x63\xee\x2e\xdd\xf3\xff\x6a\xe3\xec\x0a\x40\x2c\x95\x31\x8f\x0a\x7c\x36\x72\x99\x3d\xfd\x57\xd5\xf4\x6d\x3e\xa7\xf5\x38\xf5\xb6\x87\xa9\x2c\x39\xcc\x3d\x73\x0f\x17\x68\x96\x3a\xa5\x96\xb6\x01\xc2\x82\x35\x1e\xf1\x20\xf9\xb3\x0f\x92\xba\x06\x13\xc6\x80\x74\xb8\x09\x62\xb1\x13\xac\xe8\x0b\xe8\xd2\x62\x0e\x1a\x89\xce\x96\xa7\x07\x25\x1f\xa0\x0b\xef\xc9\xac\xb1\x88\x83\xb3\x11\x1b\x76\xd2\x90\xd7\x9c\xa2\x80\xcd\x09\x4a\x37\xed\x3b\x92\x8f\x5a\xe4\x97\xe6\x9e\xff\xe9\x58\xb0\x59\x07\xb2\xfd\x40\x39\xed\x4f\xb9\x5e\x4b\x97\x78\x5d\x7d\x06\x03\x36\x32\x9b\x3a\x55\x45\x31\x81\x7e\xdb\x24\x44\x2d\x40\xe0\xf3\x0b\x63\x50\xa7\xf3\x9f\x00\xca\xb6\xd0\xfd\xca\x16\x93\x4d\xf2\xc1\x69\x84\xc4\x4c\x66\x17\x1b\x09\x8b\x34\xbf\x03\x9b\x9a\x35\x0e\x89\x09\x27\x92\xa7\x0c\x66\x70\x05\xe4\x50\xb0\xfa\x0e\x9d\x8d\x22\xac\x48\xf2\x7c\xdd\x91\x41\x36\x3c\x49\x1b\x24\x2d\x45\x39\x4c\x29\xa1\x60\xde\x0c\x37\xb6\x4b\x67\x79\xe6\x17\xa5\xdd\x99\xc8\xed\x2a\xcf\x13\x1a\x96\x42\x1f\x25\xbf\xe3\x55\x4f\x70\xd6\xa2\xa3\x15\xfd\x0c\xb8\x1a\x22\xf2\x9d\x12\xa7\xb1\xec\x08\x73\xf4\x04\xb9\x2b\x94\x07\x5f\x47\x3f\x49\x29\xad\x6b\x05\xb8\x3a\xee\x0d\x18\x8b\xdc\xd5\xfb\x4a\xca\x08\x97\x8c\xee\xaf\x06\xe7\x75\xa9\xc9\x5e\xaa\xf3\x77\xe0\xfc\xa9\x7a\x4f\x6a\x10\x81\xe5\xf8\x97\x01\x8c\xb7\x83\x43\x6c\x34\x14\x11\x70\x21\x4b\xa3\x2c\x24\x78\x0e\x03\xdd\x94\x78\x98\xd0\x3e\x0d\x3a\xa4\x9c\x95\x57\x8f\xd6\x55\xe4\xbb\xf8\x6d\xc9\xf9\x53\x7e\xac\xe0\xc4\xa5\x27\x37\xf2\x09\x47\x87\x3d\xd1\x46\x03\xec\x0e\x9e\xf4\x1a\x3c\xa5\x91\xb9\x23\x56\xdf\xee\x07\x9e\x23\xd1\xc3\xb5\x65\x57\x3a\x72\x3a\xa3\x89\x76\x45\xc3\xe9\xc7\xf8\x05\xc1\xe0\x82\xeb\x18\xb7\x47\x84\xcc\x97\xbc\x95\x7b\xa3\xea\x5b\x71\xd6\x47\x7b\xa8\xe3\x9f\x8c\x44\x31\x2f\xd5\x99\xb6\x6c\x3c\xe8\xb2\xa7\x30\xe5\xec\xfe\x39\x43\x12\x67\x63\x9a\x02\xe4\x90\x96\xc1\x1f\x91\x32\x4c\x60\x83\x19\xa1\x22\x03\xc9\xb3\xa1\x30\x60\xf0\x9c\x67\xab\xcd\x41\x39\x22\x68\x04\xee\xa9\x74\x2d\xe4\x0b\x8c\x7f\x4d\x65\xee\x6b\xa8\x55\x28\x20\xe3\x14\xb7\x4f\x2c\x1a\xb8\x37\x70\xfd\x3b\x94\x8e\xa2\xb3\x44\x30\xc4\xd9\x00\x6a\x06\xda\x7d\xa9\x4a\xf0\x2f\x4f\x86\xc5\x35\x2e\xb2\xdb\x13\xb5\x12\xbc\x00\x7f\xc7\x2a\xd5\x32\xf7\xe2\x6f\x66\x05\x98\x67\x2e\xed\xce\x02\x17\xbf\x3b\x1d\xc9\xec\x02\x78\xed\x8c\x17\x98\x78\x96\x31\x29\xc1\xbf\x74\x19\xfd\x2c\x99\xc0\x1d\x7e\x04\x21\x2d\xe7\x3a\x54\xa5\xcc\xf4\xa9\x02\xe5\xbc\xcf\xb8\xe9\x85\xa5\x96\x2b\xc1\x32\xfc\xa5\xad\xec\x46\x5f\x3c\x46\xd6\x88\x3f\x00\x40\xca\x0b\x60\x1e\xaf\x7a\xb7\xf3\x9b\x8e\xe4\xf6\x0f\x42\x85\x46\xa7\x53\xf9\x38\x6b\x91\x30\xa3\xef\x80\xed\x84\x3f\x68\x95\x1a\x76\x10\xa2\xe4\xd8\x45\x49\x20\x58\xb8\xa0\x62\xd0\x2e\xbc\x51\xbb\x65\x12\x41\xe3\x8e\x68\x92\xa0\x1f\x47\x45\x05\x9a\x66\xa6\x69\x71\xca\xe2\xb2\xae\x5b\x99\xeb\x86\xfc\xe1\x3d\xfe\xb0\xfc\x5b\x37\xb5\x0a\xd7\x3d\x6b\x35\x6a\x07\xa5\xd7\x12\x67\x75\x8b\xcb\x76\x9f\xea\xf6\x49\xdc\xf9\x6c\xcd\xeb\x0b\x53\xe8\xd0\x8b\xa8\x0d\x8f\x50\xda\xb1\x69\x6f\xa7\xdb\xb0\x19\x91\x10\x9c\xc8\x16\xdc\xc8\x11\xf2\x91\x14\xbc\x48\x09\x7e\xa4\x85\x42\x64\x22\xaf\x2b\x5c\x85\x62\xc4\x5c\x5b\x9f\x82\x0b\x26\x44\xc4\x97\xef\xed\x0d\xf4\xd9\x4e\x80\x67\x89\xe3\x5c\x19\xc7\x25\x00\x2c\x7c\x47\x08\x33\x17\xd8\x7c\xc3\x4b\x9e\xd6\x57\x78\x0e\xd9\xed\x75\x3f\xe0\x37\x9f\xd9\x97\x5f\x74\xb7\xdc\xcf\x3b\x88\xfb\x99\x8e\x6d\xd6\xa0\x42\x87\x0a\xce\xc2\x94\xe0\x1c\xa4\x5b\x9a\x22\x3e\xac\xa5\xea\xf2\x03\x33\xb3\x31\xcf\x19\xed\xac\x09\x43\xf9\x85\xb6\xd1\x53\x03\x2a\x85\x07\x14\xdd\x99\x4d\xb5\x65\x2f\x9f\x4c\xee\xcb\x04\x19\xc4\xab\xb6\x04\xd9\x98\x8d\x99\x11\x62\xa8\x0f\x04\xa6\xad\x66\xb4\x15\xb0\x8d\x8d\xb0\x06\x9b\xe1\x56\xda\xbf\x55\xf0\xa7\xd2\x0f\xb2\x69\xb7\xcf\x10\xdb\xbb\x9e\x8b\x16\xaa\x01\xe0\x18\xfb\x4d\x5f\x1a\x4b\xfa\xf0\x5e\xe4\xbb\x1a\x12\x13\x2b\x18\xa4\xc8\xc2\x2d\x37\x5d\x2f\x27\xe6\xd3\xed\x2c\xd9\x9d\xd2\x3d\xbf\x6e\x14\xb2\x05\x35\x9c\x2b\xb6\x9d\x01\x56\x89\xd8\xee\xcf\xb9\xb6\xb6\xfc\x6c\xd9\x28\xaa\x83\x28\x92\x1b\x00\xb5\xaf\xfc\x42\x78\xef\x4c\x65\x7e\xe5\x7c\x20\x7d\xb8\x3b\x6d\xe7\xdf\xcd\xbb\x5b\xec\xce\x94\xe4\x7a\xf0\x5a\xc3\xff\x6e\x37\xb0\x55\xfa\x45\x6f\xb3\xa7\x8d\x28\xe1\x2b\x31\xf9\xc8\x5e\x1a\x7d\x7c\xf4\x0c\xca\x4e\x8d\x8e\x78\xa9\xad\x73\x60\x3a\x74\xe3\x96\x1f\x20\x3c\x91\xaa\xb2\x46\x52\xee\x81\x60\x8b\x69\x19\xf1\xb7\x3b\x91\xd5\x73\xc6\x8c\x3e\x58\x5f\x65\x1f\x76\x7f\x87\x29\x8e\x2f\x4d\x89\x90\x46\xfd\xce\x82\xa8\xc5\xb0\x6b\x67\x24\x4d\xd2\xc9\x76\x93\xd1\x96\x71\x3c\x65\xe6\x99\x23\xbf\xad\x71\x3d\x37\xe9\x6e\x4d\x38\xcf\x41\xc9\x9b\xf9\xe4\x9d\x29\x26\xf2\x2d\xd0\x56\x3a\x5f\x49\xba\x80\x24\x57\x53\x04\x34\xb8\xe4\xb6\x0b\xf2\x80\x4a\xc3\x79\x7c\x63\xb2\x58\x7d\x79\x7a\xec\x75\xef\x42\xba\x4f\x69\xfe\x9a\xfb\xbd\xb2\x99\x35\x09\xec\x43\xca\xd2\x61\xdf\x06\xa1\xa2\x50\xa2\xa8\x49\x6a\xab\x25\x4b\x67\x24\x9b\x1f\x77\x64\xfd\xa4\x30\xce\x82\x26\xb1\x46\x0b\xbf\xdc\x1f\x24\x3d\x41\x17\xe1\xf3\x3e\x68\xa3\xe3\x7e\x3d\xa9\xf2\x24\x43\xa7\xd2\x78\x3a\x06\xae\x30\x5d\x46\xc1\x14\x5f\xac\xf0\xc3\x0d\x54\xf7\xef\x09\x65\x3f\xd9\xc1\x25\x69\x43\xdf\xcf\xba\x32\x09\xd7\xe0\x14\x78\x6e\xbc\x40\x9c\xf0\xe2\xa4\x33\x78\x93\x3a\x40\xd5\x10\x41\x34\x10\xe3\x8e\xe9\x36\x63\x90\x38\xbf\x52\xc8\x00\x3b\xf4\xc4\xed\x97\x01\xf8\x53\x1e\x76\x3e\x33\x3a\x68\x4f\xe3\xa0\x59\x6c\x26\xb9\xb7\xd4\x8d\xbe\xce\xc9\xfe\x93\xbe\x58\xc0\xab\xf2\xcc\x83\x37\xce\x30\xaf\x4a\xfa\x4c\x06\x9c\x27\x48\x58\x9b\xe4\x9d\xb4\x31\x81\x78\x3c\x92\xb4\xb7\x52\xb3\xf6\x73\x73\xc4\xe9\xb1\xae\x64\x2d\xa3\x56\xf0\x27\x11\x8a\x59\x6c\xab\x78\x88\x22\xc6\xd9\x6e\xd2\x16\x34\x72\x59\x8f\x84\xb6\x74\xe7\x1c\xaf\xdd\xf1\xc9\xae\x91\x65\xf3\x74\xd6\xb8\xb9\xe9\x23\x46\xe2\x1d\x0a\xd9\xc2\x20\x4b\xda\x88\x5c\x08\x68\xe3\x24\x6d\x59\x46\xe6\x36\xb3\xf6\xb0\x8e\xdd\x85\xb3\x1d\x61\x1b\x32\x1e\x5d\x4c\x9b\xd7\x5b\xf3\xdd\x15\xf3\x92\x3f\x3b\x3d\x5c\x46\x0b\x40\x36\xc5\xe5\x17\x0f\xb0\xc0\xaa\xb0\x9e\x02\x3d\xd4\x59\x39\xe3\x27\x86\x27\x1a\x9c\xec\x1c\x33\xd1\xa2\x37\x4f\xd8\xf0\xb3\xa4\x8c\x16\xbb\x9f\xb5\xd0\x5d\x79\xca\xdb\x39\xf0\x03\xeb\xd8\xcf\x8e\x97\xb1\xd8\xc9\x47\x1a\x7e\x62\xd2\x70\x6d\x02\xe8\x4d\x62\x7f\xe1\x7e\x19\xba\xb4\xa7\x16\xf0\xaa\xa0\xab\xb4\x1d\xb8\x8f\x5a\xf7\x23\x43\xce\x93\x12\x91\xa1\x96\x13\xc7\xc7\xfa\xb9\x43\xf2\x10\x46\x59\x75\x10\x0d\xf6\xf5\x25\x3b\x31\xfc\x81\xf3\x43\x06\xbb\xf8\xda\x7b\x26\x4b\x64\x2f\x63\x27\xe8\x0f\x12\x6c\x69\x4f\x7a\x9e\xe9\xd8\xaf\x5b\xd2\x4f\x32\x49\x7a\x1e\x75\x8f\x17\x3f\xc7\xa9\x15\x6e\xde\x3e\x09\x09\xfd\x5d\x0e\x7e\x80\x9e\xc0\x0c\xdb\x75\x47\xd3\xc2\x89\xf0\xec\x90\xfc\x74\x06\x93\x74\xef\x98\x60\x70\xe4\x0d\x5c\xfd\x77\x72\xd3\x07\x58\x25\x2e\xf2\x22\x48\xd0\xfc\x5a\x3a\x34\x81\xb4\xee\x7e\x46\x47\x1b\xfe\x6a\x2a\xf6\x71\x24\x40\x92\x3a\x87\x6e\xe8\x55\x6f\xb7\xae\x85\xc0\x7e\x9c\xaa\x52\x30\x43\xe3\xaf\xf9\x65\xba\xc6\x64\xde\xfc\x0a\xd6\x9d\xa5\xd9\xe3\xf5\xa9\x1d\x68\x2a\xaa\x08\x04\x3d\x54\xdb\x06\x9e\x91\xbe\xc5\x91\x4c\xbe\x56\xb0\xd8\xca\xd5\x46\x76\x74\xb2\xb7\x19\x6a\xd0\xee\x17\x87\x12\xd6\x9e\xb7\xeb\xb7\x92\x9a\xe9\x23\x75\x6b\x70\x70\x4c\x64\x8b\x15\x49\x78\x22\x31\x1f\x7c\x87\xb9\xad\x69\x70\x86\x46\x5e\x7f\xaa\xd3\x91\x3e\x2b\xd8\x2d\xfa\xbd\x9d\xa3\xc9\xdf\xde\x43\xad\x35\x73\x5d\x6b\xd6\xda\xff\xfe\x6c\x35\xd9\x8f\x1f\xf7\x0f\x74\x7a\xdf\x06\x79\x29\x75\xf7\xdd\x9d\xeb\x96\xff\x72\x23\xbb\x10\x97\xbe\xf3\x09\x8d\xed\xca\xa8\xb9\xb2\x5e\x71\x16\xd1\x39\x8d\x5a\xcf\x09\x6b\x35\x67\x58\xcb\x39\xb5\xe4\x94\x2b\xac\xd8\x23\x8a\x8a\x48\xec\x91\x65\x63\x6b\x45\xfc\xf6\x0b\x8a\xf3\xc8\xa8\x81\xe8\x4c\xcf\x34\x66\x6a\x26\x9c\xc9\x99\xe1\xcc\xf1\x6a\xdb\x70\xf3\xbe\x5a\xda\xba\xc0\x92\x4d\x4e\xbb\xe4\xf8\xe5\x5a\xb3\xcb\xae\xd6\xcd\x54\xd4\xfb\xb0\xd3\x78\xf4\x36\x17\x2d\x49\xbf\x29\xc0\xc5\x7f\xeb\x89\x5f\xe3\xeb\xc6\x71\x33\x45\xbf\x0d\x6c\xdd\xcb\xb1\x0d\xab\x1d\x6b\xc0\x43\x1a\x5d\x77\x33\x58\x42\x2f\x8e\x11\xc4\xaf\xda\x75\x97\xbf\x68\x18\x13\x4b\x6a\xd7\x9a\x6f\x0d\x8f\xc9\xd2\xc5\x0b\x46\x1e\x6d\xf4\x2a\xf6\xc0\x24\x4e\x2c\x3f\x7c\x8b\x5f\x75\x3c\xc6\xb5\xee\x62\xa5\xab\x94\x57\xfa\xd7\xe0\x65\x4e\xb6\x6b\x04\x1e\x4d\x3c\x83\x19\x19\x16\x74\xd3\xa2\xeb\x88\x2c\x58\x69\x87\xc1\xc0\x36\x6a\x04\xa0\x23\xe9\x8f\x31\xbf\x90\x94\x84\xb7\x78\x8b\x0e\xbc\x53\x28\x1c\x01\xc6\x4f\x69\x37\x24\xfe\x27\xdb\xea\xc5\xab\x74\x95\x9b\x69\xff\x30\x4d\xb1\xbf\x30\x98\xca\x77\xca\xb4\x20\xff\xce\x27\x4c\x3d\x26\x9d\x3a\xed\xaa\x6b\x89\xae\x41\x9e\xde\xb4\x12\xb1\x2e\x01\x1c\xe3\xf7\x46\x4a\x20\x72\xc5\xf4\xc8\xb8\x36\x81\x29\x35\x4f\x61\xd1\xcb\x5b\x59\xe8\xe0\x6a\xb1\x09\xc7\xa8\xf9\x77\xad\x23\x0e\xdf\x47\xf1\xac\x47\xea\x22\x92\x2f\xec\x9f\x57\x57\x7b\x4d\xb2\xca\x6e\x7e\x78\x9e\x34\x64\x5a\x46\x21\x2d\x3a\xbd\xd6\x1d\x94\xa3\xc9\xfe\x60\xad\x3c\xce\xc8\x2e\x0d\xc4\x36\xe0\x7a\xeb\x04\xc2\x54\x40\x39\xb3\xbc\xed\x9b\xb6\xc6\x47\x6e\xf1\xf0\xf7\xd0\xbe\xbd\xac\x8c\x4d\x27\x83\x6a\xe8\xda\xe2\xfe\xa6\xbe\xc2\x50\x0c\xe8\x4f\x2b\x7d\xf2\x9b\xb2\xe8\x97\xef\x58\x68\x84\xeb\xa7\xe5\xfa\xa6\x09\xd1\xaf\x43\xc2\x98\xe2\xd9\x68\x15\x8d\xc5\xf1\xc4\x08\xeb\xd0\x7f\x61\x04\x74\xd1\x18\xdb\x38\x29\x32\x69\xd8\x8c\x85\xb6\xa8\xb0\xf6\xab\xee\x88\x33\x1a\x36\x3f\x6d\x1d\x4f\x60\x9d\x1b\x9e\xf5\xe3\xa7\x03\x75\x1e\xa6\xea\x02\x8e\xe8\x61\x99\x61\xb0\xfe\x86\xfb\x84\x56\xec\xbb\x48\x28\x9e\x71\x60\x55\xa2\xaf\x25\x9d\x07\xfc\x8e\xc5\x48\x75\xde\xc5\x35\xcb\xb9\xf7\xf1\xbf\xdb\xec\xd0\xa5\xff\x2d\x37\x3e\x76\xe0\x93\xc2\xd7\x4b\x79\xd3\x3c\x67\x02\x3f\x7d\x60\x9f\xb4\xe0\xea\x4d\xa9\x2c\x2b\x81\xa1\x31\x16\xbb\x68\xf8\x4d\xbc\xe3\xf9\x17\xe7\x66\xda\x12\x8c\xad\x38\x67\xec\x9d\x27\x1b\xc9\x63\xea\x0c\xf1\xb9\xa8\x03\x97\x2d\xd8\x15\xfc\x7c\xaf\x46\x01\xe5\x6c\xd3\x70\xfb\x24\x0b\x12\x35\x48\xaf\x5b\xf6\xaa\x07\x27\x5e\x1f\x3b\xe4\x0d\x38\xbb\xb8\xb6\x21\x1b\x17\xd1\x00\x1a\x47\x8c\x1c\x23\x25\x42\xad\x2f\x43\x2a\x4b\xf1\x36\x5b\x08\xf7\xd0\x8b\xb6\x57\x13\xf3\x0f\xdb\xa8\x85\xf9\xd3\x20\xe2\xe3\x3d\xc9\xc9\x63\x14\xec\x21\xd0\x46\x53\x46\x86\xa3\xd5\x61\x02\xce\xd5\xad\xb4\xce\xb2\x35\xc1\x39\xa9\x60\x86\x9f\x22\x46\x84\x0a\x94\x1c\x1a\x5a\x8d\x4c\x84\xd8\x36\x3f\xc9\x89\xf3\x1c\x11\xe3\x90\x96\x98\x7d\x39\x99\x93\x2e\x17\x95\xf0\x6e\x8d\xe6\x56\xc0\xdf\x6a\x84\xd4\xc9\x90\xc2\x51\x56\x21\x51\xfd\x5b\x56\x67\xb2\x24\x12\x87\x14\x3e\xcd\x31\x9c\x70\x72\x1f\x87\x45\x85\xa7\xc3\xac\xc8\x2c\x12\x63\xb7\xd8\x1b\xc3\xc9\x96\xc2\x62\x5e\x32\x41\x93\x25\xdd\xc4\x70\x8a\xb8\xd8\xae\x9c\xaf\xe1\xbd\x12\x54\x7d\x89\xef\xc2\x73\x0b\xe0\xd3\x21\xfe\xf4\x16\xd0\x06\xe1\xfe\xe7\x7b\x0c\x35\x3d\xac\xa9\xaf\x05\xd4\xd6\x92\x98\x95\xd2\x5c\xf5\x62\x67\x9e\xec\x0d\xdf\x79\xf2\x9b\xbb\x01\x66\x2b\xb1\x75\x88\x0e\x69\x19\xb9\xd7\x94\x8e\x20\x6e\xfc\xb3\x9a\xa5\x03\x13\xca\x55\x57\x06\x68\x3a\xef\xa3\x5a\x90\x4f\x3f\x5b\x3a\xf1\xd5\xf2\x35\x76\x5b\xa5\x5b\x23\xfb\x84\x2b\x0b\x76\x65\x55\xa2\x8e\x74\xfc\xaf\x33\xb4\xc5\x07\x41\x9d\xd6\x9b\xf2\x50\xd0\x31\xf7\x1b\xeb\x22\x19\x4d\x70\x45\xc9\x33\xfa\xad\xce\xbd\x38\x3c\x8d\x03\xda\x02\x90\x2e\x43\x0e\x5d\xd2\x01\x96\x69\x75\x83\x48\x9f\xdf\xad\xb6\x7f\xc4\x38\x10\x40\x5d\x37\x19\x4b\x5f\x75\xdb\x26\x0f\x1e\x5a\xfe\xd6\x20\x31\x13\x7d\xa8\x31\xdb\x99\x93\x28\xb8\x4d\x38\x66\x8b\xa8\x9c\x44\x8a\xb3\xc3\xf5\x08\x4e\x0e\xe8\x16\x51\x8f\xe9\x6d\xbd\x28\xb7\x9c\x23\xdf\xe0\xc1\xfe\xfa\x8a\xc3\x67\xd1\xe5\x79\x58\xe5\x76\x18\xb3\xa0\x57\xd3\x82\xec\x50\x4c\x6f\xe7\xbc\xc9\xcc\xc5\xe2\x9a\x61\x2f\xbd\x5c\xb8\xb4\x7e\xa2\xc5\x9a\xc2\x4b\x78\x21\x66\xe3\x6c\xa9\x35\x7f\xa9\x89\xc9\x2a\xa8\xa6\xc4\x1d\xa6\xcd\x8b\xfe\xd5\x2f\xde\x47\x30\xf4\x87\x8a\x56\xd4\xf3\xf8\xaf\x67\x58\xff\xef\xb9\x22\x91\x5c\xe0\x48\x01\x74\xf1\x65\x17\x17\xc7\x78\xde\x09\xc8\x70\x1c\xef\x9d\xd5\xe2\xec\xd9\x0e\x35\xc6\xc1\xd1\xec\xc3\x74\x1c\xab\xdd\x97\xa8\xdd\xdf\x50\xc4\xe2\xcb\x41\x14\xe7\xa2\xa3\xa8\xf4\xb8\x7a\x68\xae\xea\xb6\xb5\x38\x61\x9e\x92\x70\xcb\x4c\x7f\x46\x20\xdc\x63\xf3\xc0\x93\x54\x4d\x59\xa2\xa1\x21\xd3\x0c\x2c\x92\x88\xdd\xa8\xf9\x17\xaa\x88\x05\x02\x9c\xec\xc0\x93\x67\x42\xa0\x1d\xb5\x01\x5e\x89\xc3\xfd\xf6\x96\xa7\x48\x4a\x5c\xe6\xfa\xe4\xdf\xd4\xb8\xe6\x13\x52\x39\xba\x1a\xc1\xa1\x32\xf9\xef\x10\xc6\xb4\xdf\x8b\xa1\xa6\x02\x62\xa5\x96\x91\xa8\x9f\xc9\x94\xf7\x86\x3c\xa5\x3b\xb6\x70\x80\x28\x29\x13\x67\x19\x90\x04\xa7\xb9\x6a\x75\xea\x54\xbd\x2e\x4d\xc7\x81\x4e\x10\x25\x64\x81\x16\x28\xd1\xc7\x9f\xeb\x4b\x1e\x3e\x40\xf5\x83\xb2\xfa\x7c\x07\xc7\xff\x2d\xe9\x9d\xb1\x3c\xec\x2c\xe6\xcd\xa2\x11\xc1\x77\xd3\x27\xac\xe9\xa4\xb3\x3c\xd3\x9b\xaf\x1e\x53\x21\x9e\x50\x7e\x03\x7a\x66\x89\xda\xd2\x81\xab\x6b\x05\xea\x3c\x2a\x12\xb8\x5b\xa2\x38\xa1\xe2\xfa\x5f\x00\xac\xb2\x1d\x5d\x1b\x13\xef\x5e\x1b\xfe\xd4\x42\xbd\x50\x0b\x62\x53\xb8\x9e\xd2\x70\xe4\xbf\xf9\xd1\xc7\xa3\xc6\x05\x74\x4a\xa7\x58\xa1\xa7\xd3\x1a\xb5\xad\x56\xb1\x39\x3a\x6d\xd3\x5a\xe4\x98\xd6\x09\x9f\x27\xcd\xf9\x19\x19\x8b\x6e\x05\x85\x23\xd0\x8a\x0f\x04\x74\xe1\x2e\x52\xdc\x97\x42\x0d\x18\x8d\x46\xcf\xdf\xb1\x4a\x11\x35\x52\x52\x2f\x43\x3e\xf4\x58\x83\x0b\x95\xd2\x78\xd2\x07\xac\xd1\xf9\xea\x2e\xb1\x0b\xac\x3d\x73\xca\x8b\x3e\xe5\xd1\xba\x15\xac\xfd\x61\x88\x88\x9a\xa2\xd3\x79\xad\xed\x2f\xb0\x97\x8a\x9c\x70\x45\x2a\xac\x1a\x4c\x75\xd3\x1c\x7e\x7b\xbf\x93\x2a\xe7\x94\xc3\x68\xdd\xd8\x32\xd5\xb3\x16\xf8\x67\xa3\x6e\x76\x89\x91\x7c\x2e\x0b\xda\x0f\x6a\x34\x33\x34\xdf\x64\x3a\xf0\x58\x34\x4a\x7f\x43\x7e\xcd\x75\x89\xfb\x07\xad\x4e\x86\x00\x94\x47\x5d\x51\xe7\xd7\xa8\xe0\x56\x8b\x27\x55\xe6\x58\xfe\x3d\xf1\x8b\xe1\xaa\x81\xa4\x97\x80\x2f\x8c\xe4\xb3\x7f\x69\xbb\xbd\x72\x22\xe9\xf4\x35\x67\x95\x00\xb1\x21\x83\xa6\x8d\xef\x7f\x1c\x8d\xf9\xc3\x87\x7a\x67\x97\xc7\x46\x90\xdd\xb1\xbe\x7d\xd8\xfa\x9c\xa5\x36\x6d\x98\xcc\x32\x56\xd9\xab\x5f\xb2\x47\x82\x09\xc2\xef\x4a\xce\x76\x79\x0a\xe5\xcd\x9a\x25\xa4\x94\xfc\xe4\x1a\xad\x4f\x56\xe7\x39\x42\xb4\xc6\xe8\xec\x71\x39\x1e\xa5\xeb\x38\xbd\xb8\x0b\xa9\x10\x7d\x37\x5c\xa2\xd6\xf2\x38\x2d\xd9\xac\xe8\x4a\x1a\xd4\x67\xa6\xd3\x25\xa9\x72\x0d\x94\x23\xde\x9e\x9b\x5a\xbb\x83\x35\xe3\x87\xfb\x92\xe2\x09\xa4\x33\xf4\x95\xc7\xe2\x38\x7e\x3d\x94\x16\x56\x4c\x7e\x0c\x15\xb3\x13\x77\x7c\x80\x3c\x73\xe7\x00\x35\x0e\xc9\x40\xfe\xd7\x90\x12\xd1\x3d\x71\x19\xe0\xdc\x53\x84\x27\xf4\x6f\x4f\xb7\x04\xd6\x71\xd5\xde\xbc\xed\xb2\x45\xe3\x0f\x17\x4b\xff\x51\xe0\x46\xcc\xa9\xbd\xa7\x5a\xde\xad\x45\xe6\xf0\xa2\x60\x52\x76\x38\x15\x11\x22\x27\x9a\xde\xda\x00\x09\x3e\x03\xc4\x60\x0b\x14\xe7\x3c\x25\x21\xb4\x48\xf3\xa9\x6f\x37\x0a\x14\xf9\x6f\x98\x16\x05\x2a\x8f\x9f\x73\x60\x3e\x22\x3f\x06\xb7\x26\xb7\xb3\xd5\x01\x15\x81\x10\x18\x67\x9b\x95\xdb\x33\xbd\xa5\xdc\x60\xdc\x67\x44\x7b\xe1\xcf\xe6\xec\x84\x85\xbf\xf7\x99\x2b\xb4\x21\xb0\x63\x67\x4f\x69\x87\x0b\xb5\xb8\xf9\x52\x23\xcf\xd7\x67\x80\x88\xc2\xb2\xfb\xf8\x5a\x7a\x21\x92\x8a\x54\x65\xb6\x1f\x4f\xee\x2a\xe8\x32\xe9\xb5\x88\x4d\x67\x51\xcf\xba\xa6\x83\x4a\x55\x98\x60\xaf\xb4\x49\xba\x77\x30\x70\xa9\xb1\xe4\x6e\x21\x43\x02\xff\x47\x3c\xe9\xd2\x67\x0d\x83\xb6\xe0\xbc\x13\xd2\x90\x23\xf5\x08\xf3\x4f\xd7\xf9\x25\xd4\x27\x4d\xb0\x59\xed\xd3\xe1\x4c\x1d\x09\x54\xfb\x4f\x10\x8c\xdf\x31\xae\x35\xa6\x2b\x26\x3b\x1e\xa5\x4d\x5b\xc3\xf7\x49\xdd\xa0\x15\xe4\x1a\x8c\xa0\xd0\x6f\x8b\xea\x58\x9e\x7d\x6a\xb0\x52\x4b\xcb\x74\x1f\xb8\x6b\x9f\x68\x99\x1b\xa2\x82\x12\x2c\x16\xb4\xc8\x18\x33\xd5\x63\xa5\x48\x56\x83\xc7\x7e\x0c\xc4\x86\x1a\x6d\xeb\xe4\x46\xa4\x7d\x86\x6d\xd4\x9b\x9a\x37\xb9\x9b\x28\x4a\x49\xcc\x10\xf1\x2e\x40\xfa\x31\x66\xa4\xd6\x5a\x79\x46\x5b\xe0\x83\x38\xd1\x54\x80\xed\x4d\x9a\xe2\x1d\x57\x36\x3b\x66\x22\x5b\xc6\x35\x2f\x4b\x99\xc0\x22\xd3\x69\x09\x86\xd2\x63\x53\x19\xf0\x86\xbe\x50\x8a\xb3\x38\x2b\xcf\xc0\x19\xa9\xf3\x34\x57\xc8\x01\xca\x1b\xe4\xea\x42\x15\x45\x65\x3e\xd0\x5e\xb3\x88\x79\xe9\x17\xd2\x06\x15\x3a\x8a\xe7\x68\xaa\x17\xd8\xc4\x04\x73\x80\x4b\x53\x26\x04\xe8\x61\x16\x7e\xe2\x78\x67\x7d\xf4\x5b\xe7\xe2\x20\x56\xc0\x2a\x14\xf4\x69\x9d\x51\x07\x77\x34\x14\xde\x51\x89\x2f\xe4\xc0\x61\xef\x8b\xeb\x2d\xfb\x84\x51\x8b\x17\x98\xec\x68\x42\x84\xa1\x98\xc0\x44\x48\x9f\x49\x92\xaa\xbe\x58\xfa\x00\xdd\x3b\x2b\xa5\xb9\x23\xa8\x69\xbe\x42\x71\x41\x99\x14\xd4\xa7\x64\xe0\xd3\x17\xa4\x30\x6c\xfb\x3e\xf4\x92\xe0\xd9\xac\x9e\x33\xb3\x7f\x5b\x95\x65\xc2\x43\x48\xb3\x4d\x51\x53\x81\xe5\x7a\x93\x84\x57\x8b\x30\x78\xfc\x13\x5e\xc8\xc9\x4d\x76\xf5\xed\xdf\x50\x98\x29\x77\xb2\xbb\xaa\x78\x23\xb8\xe7\x8d\x5e\x51\xfb\x7f\xb5\x7d\x96\x73\xcd\xe8\x9c\x9e\x85\x7e\x21\xa6\xc1\x0c\x76\xfa\x77\x3e\x07\x4e\x34\xed\xca\x8c\x4b\xcc\x67\x6a\x25\x6f\x77\x06\x0d\x90\x54\x6a\x56\xb5\xc5\x6c\x2e\x71\xe7\x1d\x26\xf8\x5b\x46\xfa\x7e\x31\xb8\xb2\x58\xbd\xd2\xc3\xc3\x39\x0e\x06\x7e\x31\x08\x33\xef\xe2\xc2\x48\x1f\xd8\x65\x71\x33\x45\x47\x19\xe6\xd4\x28\x5d\xa6\xd9\x79\x51\x09\xe0\xb6\xe1\x7c\x21\xc3\x83\xe8\x0d\x1e\xcd\xb0\x19\x4a\x67\x39\x64\x11\xb8\xc0\xea\xc1\xf2\x82\x59\xce\xf2\xf8\x18\x74\xa1\x33\x90\x1d\xad\x2c\x61\xbe\xb5\x26\x02\x45\xcf\xd0\x24\x8d\xc3\x0f\xe4\x82\x7d\xa0\xab\xc0\xd0\xc5\xac\x64\x52\x4c\x98\xaf\xd1\xa3\xdb\x91\x1c\x34\xd0\x07\x10\xeb\xc7\xc3\x99\xf5\x2e\x2c\x04\xbe\x98\x4e\x6b\xd0\xf9\x37\x36\x43\x05\xc8\x94\xf9\x0a\xbd\x1f\x45\xb6\xcc\xea\xac\x1e\xa7\xf2\x09\x43\x76\xa0\x91\x61\x9a\xc6\xe7\xda\xca\xa2\x22\xfe\x3f\xd0\x0c\x6b\x53\xac\x2b\x8d\x42\x0d\x40\x68\xc3\xbb\x5f\xcb\xf6\x69\x23\xe8\x27\xaf\xa8\xe9\xac\x0e\x2c\x31\xb2\x47\x2d\x8f\x8f\xc6\xac\xab\x5c\x67\x8d\xb4\x61\x44\xba\xf2\x45\x6f\x8b\x0f\x3e\x7d\x69\x05\xc9\xa0\xba\x0d\x0a\x22\x5c\xde\x61\x07\x84\xee\xe9\x15\x6e\x36\x1b\xfd\x5e\x7d\xee\x8a\x38\x6c\x6d\xcf\x29\xba\xcf\x89\x04\x7c\x6b\x52\xbf\x25\x1d\x89\xd5\x61\x0d\x0b\x69\xca\xdd\x64\xde\x34\x16\xcf\x6e\xb6\x16\xb7\x52\x8c\x73\xb9\xc1\xc6\xc9\xf3\x66\x5f\x8c\x83\xb7\x4d\xee\x3a\x9b\xdd\xc9\x89\xe0\xeb\x4b\x59\x32\x8f\x9a\xc2\x78\xfe\x6c\x65\x76\xc5\x61\x72\x33\x70\x38\xc0\xaf\x4f\xe1\x66\x5a\x3e\xc1\x14\xd9\x56\x0f\x36\xc7\xea\x04\xc8\xb3\x96\x1c\xc9\x29\x2a\xa7\xab\x20\x59\xd8\xce\xb5\x15\x9b\xb7\x07\x05\x92\xb2\xa2\x67\x61\xeb\x33\x59\xf5\xc5\x1c\x3e\xac\x27\xd9\xba\xc4\x10\x75\xc1\xa1\x24\xb6\xeb\xf9\x20\x18\x02\x47\x4f\xe9\xd9\xf8\x1c\x51\xb5\xb0\x9b\xeb\x2a\x2e\x71\x40\x82\xa9\x99\x0f\x29\x17\xe5\x05\x7e\xf9\x1c\x23\xed\xf4\x8f\x38\x1d\x81\x0a\xb8\xcb\xdf\x97\xc3\x1a\x7e\xed\xca\xc7\x95\xd6\xdc\xd5\xde\xc6\x44\x17\x2b\x2d\x31\xdb\xc0\xc1\x24\x53\xee\x89\x7c\x67\x44\x89\x6a\xff\xc9\x0c\xb0\x01\xd5\x79\x43\x2f\x94\xda\x6e\x63\x4f\xc0\x5e\x68\xec\xb6\x23\x68\xfb\xce\xa9\xa5\x46\xd1\x8a\x5a\x20\x64\xef\xe2\x1f\x9d\x09\xe6\xba\x6f\x9e\xaa\xb8\xc2\x7e\xdf\xf7\x8e\x42\xfa\x9d\x1d\x2b\xe1\xc3\x03\xf3\x6c\x58\x70\xf4\xb8\x12\xfe\xf1\xd1\x81\xed\x9f\x6f\xcb\xc4\x38\xd6\x7f\xe9\xe8\xca\x68\x66\x46\x77\x18\x54\xec\xf1\x5c\x9d\x0e\x19\x5c\xcc\x64\x16\x6c\xd4\xcc\xee\x81\xdf\x0a\x94\x6f\xe0\xcc\xdd\x2a\x5b\xb2\x9d\xaa\xb5\x1a\x3c\xee\xcf\xd6\x37\xf3\x11\x3c\xd9\x6c\x36\x69\x7b\xde\xb6\x50\xa8\x6e\xef\x5f\x8f\xef\xf6\xc1\x8b\xa7\x27\x23\x0c\xd2\x63\x10\x68\x8f\x78\x6f\x49\x56\xe6\xc2\xb8\x3d\x0d\x35\xa6\x60\xcf\xf7\x2b\xe0\xb0\x0c\xa6\x83\xaa\x6a\xbc\x41\x07\xe6\x43\x76\x93\x71\xa9\x5e\x14\x93\x2d\x56\x69\x30\x96\xb0\xd8\xb6\xa9\x04\x13\x7f\xa8\x6a\xd5\x23\x15\xdb\x27\x25\x42\xcc\xab\xda\xdd\x29\x2b\x81\x6f\xe8\xde\xe1\x71\xc2\x67\x4a\x66\x29\x26\x2b\xc3\x2f\x13\x5d\x6b\x45\x5c\xdf\x6b\xe9\x4d\x02\x20\x58\xb2\x2a\xd5\x9a\xdd\x2a\x33\xe7\xf2\xf7\x30\x79\xbb\x6d\x0c\x9a\x49\x3a\xd4\x05\x45\x60\x8d\x09\xb3\x73\xcb\x75\x90\x3b\x52\xa9\x47\x9b\x6b\x38\xd5\xee\x11\x10\x99\xe9\x38\xc8\x26\x4d\x51\xad\x56\xf7\x62\x7b\x1e\x1d\x13\xef\x02\x99\x96\x50\xc4\xbc\x0a\x30\xc9\x03\xf6\xc2\x9a\xd2\xde\x57\xe3\x69\x0e\x94\x48\x7c\xb5\x88\xad\xdd\x35\x9c\x01\xc9\xa6\x28\x6b\x70\x65\xa1\x3c\x2f\x54\xd1\x73\x16\x12\x8f\x6d\x39\x26\xb7\x9f\xc0\x79\xae\xd8\x0a\x29\xba\x0b\x9c\xe6\x9f\xa9\x65\x64\x96\x81\xa5\x81\x2d\xb1\xb8\x58\x9f\xe9\x7e\x2f\x9f\x6b\x57\xa2\x71\x75\xc0\xdf\x90\xb6\x9b\x12\x87\xd9\x3d\x1c\x15\x83\xa2\x61\x1f\x80\x4d\x45\x8f\xc4\x74\x5a\xae\xbe\x1d\x97\x9a\x67\x80\xf4\x2f\x1a\xd6\xf9\xb9\x57\x06\xa4\x9a\xe3\xfd\xd6\x87\xe1\x90\x96\x87\xed\x14\x34\xd4\x52\xd8\x6b\xad\x28\x6b\xb7\xac\x67\x6a\xcb\x31\x7a\xdc\x59\xb1\x28\x7b\xf3\x78\x73\x10\xe5\x76\xe8\x4c\xac\xfd\xf6\x3a\x8d\x6e\x9a\xed\x36\x39\x7d\xe5\xa9\x37\xb9\xef\xf4\x87\x51\x1a\xa8\x9e\x64\x0f\x6a\xf4\xaf\x0b\x2c\xe4\xc6\x64\x25\xb9\x1c\x99\xe7\x93\xc4\xe5\x8f\x78\x75\x95\x1f\xa5\xbd\x5c\x98\x4d\x9d\x6d\x58\xd4\xde\x28\x4f\xf5\x9d\x2a\xbc\xd1\xfd\x93\x18\x18\xde\x85\xd0\x54\xbb\xee\xb5\x24\x07\x22\x13\xa3\xc1\xf0\xe8\x63\xc5\xb2\x2c\xd5\xb3\xa5\x31\x91\x97\xb0\xae\xc1\xe2\x94\x11\xff\x96\x8c\x14\xfc\xd8\xf2\x1c\xa5\x2c\x47\x6e\xdc\x64\x14\x25\xc1\xe5\xbb\xee\xd1\x35\xff\x01\x2b\x81\x6c\x66\xf1\x2f\x6e\x4e\x34\x9b\x0a\x2f\x86\xfd\xa7\xde\x42\x4e\x15\x37\x95\x53\x8f\x89\x70\x6f\x11\x1a\xc9\xb0\x1e\x98\x33\x4a\x21\xa4\xb1\x17\x2f\x1f\xd9\xa2\x10\x6c\x18\x33\x97\xb0\x1c\x3c\x58\x90\xf4\xef\xd4\x52\xd1\x84\x0a\x8b\xee\xf3\xf7\xde\x9b\xcf\xce\xd5\xb1\xeb\x80\xb4\x1a\xb1\x69\xe9\x94\x73\xec\xa3\x20\x46\x10\x8b\xe6\x79\x79\xae\x83\x32\x67\x53\x98\xc2\x70\xdb\x4a\x68\x8e\xe1\x50\x15\x5a\xbb\x51\x65\xf7\x4c\x18\x55\xac\xfc\x1b\x7c\x64\xf9\x74\x64\x1e\xc3\x52\x10\x00\xe0\x34\x9b\x06\xc6\x92\xc5\x7c\x76\xd3\xf9\xaf\x5e\x42\xe2\xb0\xed\xc2\x6b\x93\x74\xae\x23\x91\x5c\x6b\x5b\x4d\x22\xcb\xbc\xcb\xd6\x94\xe8\x3e\x17\x8f\x8d\x45\x93\xfb\x7f\x08\x35\x29\x1c\xa5\x35\xdd\x18\x83\x77\x97\x69\xc3\x2d\x76\xcd\x61\x73\x19\x6f\x76\x36\xc3\x3c\x83\x39\x4d\xd7\xe9\x2c\x70\xaa\x20\x61\xab\x18\xd8\xa7\x42\x1d\x17\x44\xa5\x82\x63\x24\x2f\x73\xbd\x3b\x72\x4d\x87\xb6\xc5\x4a\xd7\xf3\x69\x04\x2e\xb8\x3b\xef\xb2\x2f\x41\x79\xc6\x1a\x5a\x9f\x45\xee\xaa\xc3\xcc\x56\xb7\x6f\x36\xfd\x65\x61\x5b\x13\xaa\x3d\x19\xee\xc2\x9d\x18\xb0\x4c\xbf\xb2\x18\xfd\xa7\x23\xed\x36\xff\xde\x08\x18\x6a\x91\x89\x2f\xce\xf3\x59\xac\x39\xd9\x12\xf8\x5c\x56\x3e\x7c\x43\xda\x6d\xbf\x54\xad\x57\x45\xd6\x3d\xf9\x96\xaf\xa0\x07\xb9\x1d\x21\x21\x4e\xde\xa1\xd1\xdd\x3a\xdc\x30\x41\x7c\x2d\xb5\x7a\x2b\xde\xdf\x12\x4f\x9f\xd5\xca\x2f\x21\x73\x80\x94\x82\x70\x14\xe6\xf4\x31\x19\x06\xf6\x60\x8e\x2f\xbc\x17\xdd\xf7\xa5\x78\xc2\x20\x8d\x9c\xbb\xbf\x8e\x59\xc8\x6c\xf2\x9d\x7c\xbc\x34\x1a\x78\x5a\x4a\x77\xdf\x60\x90\xf4\x29\x9e\x53\xe7\x4f\x0b\x23\x08\x07\x2e\x39\x25\x0c\x01\x56\xe5\x99\x89\x55\x39\x57\x03\x39\x3a\x4f\x0b\x65\x6e\x11\xa2\x9a\xce\x38\xa0\x47\xd6\x13\x03\x59\xc4\xfd\x33\xc2\x15\x39\x3c\xe6\xea\xc1\xd6\xdf\x8f\x2c\xfc\x25\xe8\x32\xa1\xa9\xcd\x8a\xe1\x29\xb1\xa3\xd1\x4f\xf5\x97\xc8\x32\x89\xd6\x9d\xce\x6a\x03\x76\x94\xe2\x47\xfc\x21\x0c\x2f\x5c\x9d\x0b\xfa\xc7\xb1\xe6\x63\x06\xaa\x8b\xaf\x5f\xce\xaa\xd6\x07\x97\x12\x50\xd8\xba\x50\x8c\x9e\x31\x57\x06\x4d\x88\x01\x27\xb3\xcf\xe5\xc4\x4f\x45\x02\x56\xe3\xe1\x31\x32\xdb\xca\xcb\x43\x28\xa0\x25\x54\x1d\x3f\xf0\xac\x5a\x50\xa7\x1f\xe6\xb0\x15\xf7\x3c\xaf\xc9\xfb\x03\x52\x93\x9a\xd3\xaf\x17\x84\xc9\x0f\x21\xc1\xcd\xe6\x9d\xa6\x99\x91\x98\x07\x69\x6d\xed\x3d\x08\xe7\xd9\x48\x20\x90\x75\x0b\x84\x69\x60\x9e\xb3\xac\xf8\x85\x54\x69\xeb\x3e\xa3\xdb\xf2\xb2\xa5\xf2\x8d\x14\x2d\xad\x17\x2c\x82\x80\xfe\x7a\x0c\x5f\x5c\x45\xd4\x8b\x3c\xe0\xb0\x1e\x31\x84\x50\x1e\xe0\xc6\x2f\x12\x70\xb5\xbe\xf6\xe2\xbf\x30\x10\x29\xed\xe8\xfb\x23\xf1\x0b\x28\x5d\x3f\xbe\x4b\xa3\x49\xbb\x78\x53\x75\x2b\x57\x6c\xa3\x3d\xdd\x55\xe2\xbf\xfc\x48\xfc\xf6\x70\x37\xb6\xdb\x3e\x61\xed\xe2\x00\x14\xf3\x20\x9d\x6a\x18\xf4\xac\x23\xd4\x90\x6c\x59\x16\x14\xce\xb3\x74\xcb\xdb\x28\x06\x2c\x49\x48\xe0\xf7\x6c\x45\x47\x4c\xac\x07\x8f\x7b\xf3\x55\xdb\xb5\xd5\xd9\x89\xc9\x2a\xeb\x4b\x3d\x93\xdf\x9d\x72\x1b\x0d\x8f\x45\x07\x25\xd6\x45\x21\xbc\xec\xdf\xc6\xc9\x89\x82\xf3\xf3\x05\x04\xbf\x2b\xc3\xb1\xb0\x71\x84\x12\x82\x77\xa6\x27\x5e\x39\xd8\x59\x82\x64\x14\x43\x35\xdd\x54\x50\xbb\xd6\x41\xb8\x83\x47\xfc\xeb\x08\x84\x30\xa0\xff\xc7\x6b\xdc\xe1\x88\x8e\x9d\x83\x0a\x0c\x2b\x52\x37\xb1\x3f\x58\x08\x9f\xf1\xbd\x6e\xc5\xec\x2f\x82\xad\xf2\x92\xf5\x0d\xe1\xc3\x25\x9c\xee\x10\x4d\xc8\x0c\x10\xae\x81\x41\x0a\xef\x29\xaa\x57\x55\x4c\x64\xa3\x88\xcb\x63\xf6\xfb\x6b\xa4\x88\xa2\x3b\x5d\xfe\xb4\x57\xbb\x6d\x8d\x49\xc1\x3c\xb3\x63\x27\xa2\x3c\x5c\xe9\x99\xb5\x46\x3a\x05\x47\xae\x4a\x84\xa3\x0f\x68\xc5\xcd\xff\x5f\xba\x60\x89\xde\xbd\x8e\xa3\x6b\x9c\x75\x2c\x35\xcc\xce\x31\x4b\x95\x4e\x4e\x8d\x3c\xb4\x16\x8b\xc2\x09\xb2\x66\x22\x11\x22\xb7\x11\x45\xe6\xc7\x50\xb4\xb3\x55\x2d\x07\x8d\xa9\xf6\x3c\x6a\xc1\xf2\x65\x6a\x89\xb9\x2d\x00\x6b\xdc\xe0\x72\x15\x70\x2c\xb8\x12\xf7\x59\x45\x82\xa8\xc9\xd8\x3c\x8d\xba\x0e\x84\xc5\xf3\x4f\xa6\x3e\xd6\x3a\x31\xd7\x25\xca\x32\x68\xde\x2b\xa3\x61\x40\xb9\x58\x33\xf5\x3c\x59\xd1\x48\x4d\x20\x51\x8e\x43\x9e\x48\x54\x2d\x55\x9e\x23\x78\x9e\x75\xaa\xec\x95\xb2\x08\x28\x7d\x93\x0d\x72\x56\x3e\x5b\xb4\xcd\x95\x68\xd9\xf6\x5e\xf7\xbe\x7a\x95\x9d\xca\x3a\xd8\x55\x55\x67\x1c\x7f\x29\xba\xe1\x52\x0c\x17\xa8\xd5\x2f\xa9\x54\x1e\x87\x2c\x1c\x0e\xba\x40\xfb\x5a\x8d\xd9\x13\x3f\x18\x4a\x8f\xc2\x02\xc7\x39\x10\x36\x5a\xd5\xef\x4f\x92\x50\xcc\x69\xf6\x22\xf4\xb0\x14\x46\x46\xf6\x37\x61\x74\x62\xb1\xad\xce\x27\x61\xcb\x41\xf4\x1a\x81\xd5\x3c\x1d\x18\xd8\xc9\x45\x85\x18\x7a\x7d\x3b\xe7\xe9\x42\xaf\x36\xa6\x76\x2d\x29\x91\x52\xfe\x42\xc0\x7b\xf4\x06\x9a\xab\xd9\x3e\x5b\x58\x22\xca\xdc\x0d\xbf\x3c\xb3\x6a\xe3\x98\xc0\xb0\xc1\xda\xc2\x6f\x8e\x02\x5d\xf5\xcc\x7a\x84\x2f\x1d\xcb\x73\xb6\x43\x4a\xe8\x14\x34\xd2\x81\x3f\x2f\x96\x0f\xf4\xda\x3e\x81\xf2\xd6\x66\x3b\x7a\x35\x24\x04\x74\xf9\x5f\xef\xfb\x50\x86\x59\x30\x7b\xfe\x37\x11\x5b\x7d\xe6\xa3\xea\x51\x5f\xe7\xbb\x36\x29\x3f\xec\xb6\x20\x5f\x3b\x5c\x8b\x07\x9a\x09\x94\x36\x8e\x30\xa6\x7a\x32\xf4\x95\xe8\x11\x3e\x55\xdc\x01\xed\xee\xcb\x51\x2e\xc9\x37\xd9\xaf\xc3\xfa\x88\x25\xc1\x66\x4b\xa9\x29\x18\x65\xfa\xcc\x9e\x51\xa4\xe6\xd9\xd6\x84\x7e\x45\x51\x49\xcd\x1f\x2e\x63\x9a\xae\x5f\x13\xa1\xf7\x2e\x89\xbd\x13\xe6\x5b\x13\xe4\xf9\x3c\x95\xb5\x49\x20\xea\x5b\xd6\xf8\x40\x07\x49\xcb\xfa\xb3\x62\x09\x87\x04\x67\xfa\x32\xf4\x22\x62\x78\x71\x41\x4c\x56\x43\x44\x87\x76\x68\xe4\xed\x8a\xa4\x47\x4c\x47\x2a\xc0\x00\x4b\x6a\x40\xe5\x5c\xb3\xf2\xa2\x2b\x4a\x24\xa1\xba\xd7\x2d\x57\x4c\x64\xae\x06\x57\xac\x99\xc6\x85\xf0\x62\xfc\xa7\x33\x0d\x76\x6c\xf2\xb6\x55\x5d\x17\x1d\x10\xae\x73\x39\xe9\xaf\xe1\x65\x52\x7f\x12\x22\x05\xf4\x89\xd1\x21\x7d\xae\xbf\xe2\x63\x76\x65\xf3\x2a\x2f\x33\x04\xa5\xcc\x83\x48\x85\x84\x55\xaf\x07\x7a\x49\x70\xf3\x6f\xb4\x7a\x05\xe0\xd3\x37\x1c\x2b\x9f\xd0\x27\x9d\x95\x52\x79\x1a\x2b\x82\xfd\xa6\x59\x58\xfe\x8a\x25\xd1\xd7\xd7\xab\x68\x7c\x3a\xf0\x17\x2b\xb7\x79\xf2\x4b\xf7\x8d\x83\xe5\x76\xb1\xe8\xe3\x55\x3b\xba\x32\xbc\xf9\xde\x32\xca\x62\x6c\x3a\xdf\xf2\x46\x99\xcc\x1c\xd4\x31\xc1\xe1\xcd\xc2\x0a\xdd\x77\xdc\xef\x6f\x8a\xdb\x0e\x6f\xf2\xf8\x78\x98\x4a\x35\xe3\x22\xaf\xa1\xa5\x5e\x3f\x14\x3a\x08\xe7\x27\x64\x8b\x28\x11\x9d\x7b\x82\x27\x51\x2c\x7f\x18\x3a\xd1\xe2\x08\x3a\xa1\xfe\x92\xb0\xfd\x12\xea\x6d\x91\xa3\xdb\xdf\x20\x9b\x40\x07\x30\x53\x4a\xb9\x6b\x34\x1f\xe8\x1b\x22\x82\x27\x93\xb7\x21\x81\x38\xa0\xc2\x00\xdf\x3f\x4a\x68\x0f\x3f\xae\x45\xcd\x87\x07\xdb\x2d\x46\x81\x8d\xfd\x63\x32\x80\xd3\x43\xf3\x57\xbb\xc1\x53\xf8\xd2\xaf\x28\x5d\x6c\x2e\x8c\x5b\xe0\x16\x16\x8f\x33\x1f\x07\x4e\x56\x5b\xe8\xe9\xc0\x16\x3c\xc6\xf4\x46\xce\xc9\x0b\x46\xf3\x0b\xe3\x66\x1f\xc8\x09\x4a\xb2\xfe\xbf\xf0\xcb\x69\xcd\x6b\xd1\xc4\x0c\x8f\xef\x12\xf8\x07\x41\xcd\x72\x7a\x42\xf9\xe7\xed\xf8\xe7\xc9\x78\xfd\x9d\xf3\xfa\xcf\x77\xc1\xd7\x7f\x3e\x74\xaf\xbd\x15\x24\xa3\xe5\xb9\x37\x19\x75\x4b\xc5\xfb\x24\xf7\xd6\xed\x8e\xd7\x50\x0a\x4f\xee\xee\x28\x46\xde\xe9\x93\x12\x36\xcf\xc3\xf0\xa0\x36\xfd\x91\x55\x50\x8e\xc0\x34\x3b\x32\x1b\x83\x37\x78\x6c\xbb\xac\x8c\x8f\x25\x11\xb1\x0c\x1c\x59\xc8\xcc\x37\xf3\x8d\x1c\xb6\x42\x0e\x73\xf5\x10\x18\xbd\x4e\x24\x9c\xd6\x4a\xc3\x7a\x2b\xf4\x77\x49\x7c\x58\x49\x9a\xd3\x12\x65\xb8\xe7\xdf\xa4\xe0\x87\xde\x5a\xa6\x7f\x8c\xef\xdc\xba\x1d\x4d\x23\x69\x05\x52\x94\x89\xd2\x08\xbe\xe2\xdc\x1e\x7d\xea\x7d\xbb\x7d\xc9\xc9\xe7\xe3\xe1\x7c\xdf\xb7\xa7\x2d\x56\xed\x5b\xb6\xb8\xc8\x12\x3c\xbf\x8d\xe4\x71\x34\x67\x48\x5d\xb8\xff\x40\xa4\xe1\x69\xcd\x2a\x6f\x3a\xab\x35\x70\x53\xfc\x67\x2a\x6b\x9b\x63\xd8\x46\x38\x5c\x41\xd0\x27\xac\x9b\x8c\xe2\xbe\x64\xdd\x18\xd5\x84\x14\x5d\x4e\x5a\x8e\x25\xa1\x60\xc3\x4e\xff\x7a\x2b\x73\xa4\x63\x93\xef\x56\x8a\x2f\x50\x56\xe5\x22\x11\xf8\x92\xfa\xa3\x45\xe7\xa3\x71\xaf\x14\xb4\xe7\x7b\xf5\x23\x9d\x6d\xb6\xf1\x75\x5b\xe4\x65\x6b\x77\x2a\x46\x96\x00\xfb\x8d\x38\xac\x8f\x8c\x97\x2f\xc5\xff\xba\x95\xf6\x18\x81\xc6\xca\xa9\x6f\xd7\x7a\x46\xdb\x0f\x63\x7e\x1f\x10\x9b\xf6\x78\xa4\xc8\x1f\x42\x6e\x45\xa6\xfd\x41\x1b\x30\x90\xe6\x8b\xb2\x08\xed\x21\x56\x65\xc1\x8b\x9b\xd0\xf1\xce\x31\x70\x71\x34\xc5\x2e\x05\x38\xe3\x9c\x1d\x3e\x5c\xf1\xb6\x19\x3d\xd8\x30\xf9\xa6\x91\xfc\xaa\x89\xb3\x3d\x5a\xab\xc2\xfb\x78\x60\x6a\x2b\xd0\xa1\x30\x01\x56\x27\xad\xea\x9d\x74\x12\xf3\x5a\xbd\xd7\xbe\x48\x93\x95\xd4\x25\x6c\x29\x9e\x46\x96\x55\x67\x5e\xb7\x6e\xe9\xfc\x38\x88\x4c\x43\xc1\xe5\xae\x66\xee\xde\xd3\x06\x5b\x16\xd6\x04\x14\x67\x4c\x2d\xdb\x1a\xf7\x71\xd1\x7c\x25\xa7\x14\x36\x79\x84\xe6\x71\x87\x88\x44\x23\x11\x5b\xef\xcf\x13\x3e\x09\x72\x1a\x3e\x08\x85\x46\xa2\x8d\x3c\x98\xb1\xbb\x6d\x58\x40\x12\x2f\x4b\x1a\xae\x66\xaf\xf1\xba\xc2\xca\xab\x8c\xf2\x53\xcc\x26\xdb\xe8\xfd\x2a\x2a\x1a\xd4\xc7\x17\xfd\x20\xb0\xb3\xd5\xf7\xb0\xad\xcf\x8a\xe9\x36\x6e\x8e\x97\xcb\x81\xc7\x8b\x35\x79\xe8\xe0\xbf\x3e\x10\x47\x87\x72\xd8\xc9\x21\xe1\x77\xf3\xb5\x72\x78\x34\x71\x2c\xa9\xd3\x4f\xf9\xd6\xa5\x40\xdb\x5a\x03\x34\x0b\x31\xe1\x76\x75\x9a\x7e\x4b\xbc\x78\xb4\x23\x6a\x35\x60\x45\xc4\x37\x28\xe8\xd3\xa2\x27\x3f\xa2\x94\x3e\x3f\xde\x99\xa4\x35\xe3\xbd\x10\x67\xb2\x80\xf8\x34\x94\x96\x6e\xd5\x1a\xae\xbc\x60\x94\xa6\xa5\x0b\x5e\x53\x19\x2c\xc2\x08\x19\xcb\x0d\x12\x69\x2e\xa3\x6f\xdc\x5a\x43\xd1\xd6\xac\x8d\x10\x40\x2f\xdd\xeb\xca\x11\x4a\x90\x17\xac\xb1\x8d\x21\x39\x17\x5d\xf1\x02\x4b\x69\x7c\xf5\x14\xd8\xe0\xd3\x20\x82\x15\x1e\x6e\x2d\x4b\xc8\x3e\xb0\xca\x3d\x1d\x3b\x1d\xbe\x4a\x34\xbb\x44\xf8\xd3\x42\x37\x96\x38\x2d\x30\x93\x60\xd9\x38\x98\x03\x32\x1a\xdd\xcf\x57\xb7\xee\xa0\xd4\x4e\xc2\x4a\x34\xfa\xee\xd5\x11\x7f\x07\x44\xa1\x36\xd8\x32\x53\x32\x18\x26\x98\x82\x44\xf7\x21\x26\x81\xc8\x80\xa5\x24\x0e\x52\x00\x7e\x46\xb5\x1b\x2f\x6d\xa5\x2a\x69\x18\x34\x60\xa1\xc8\x79\x3d\xf5\x59\x91\x98\x81\xf1\xc9\x8f\x3f\x4f\xe3\x9f\xb9\x1f\xe0\x0a\x4e\xd6\xee\xbf\x7a\xe7\x96\xb5\x41\x22\xeb\x66\x25\x26\x64\x07\x73\xeb\x2d\x1e\x61\x43\xa0\x5d\x6e\xc4\x0c\xb7\x00\xb2\x0b\x4a\x84\x6c\x5e\x10\xb7\xde\xae\x2d\xae\xaf\x80\xbf\x29\x48\x00\x06\x17\xa3\x90\xf6\x4f\x24\xb4\x6d\x6b\x45\x1c\x65\x22\x82\x6a\xff\x04\x77\xca\xc5\xab\x50\xc4\x91\x24\x66\x55\x57\x95\xe5\x08\x12\x9e\x0a\x95\x97\x0f\x54\x64\xc1\x07\x92\x4f\xb6\xc1\x1a\x0e\xa3\xe5\x92\x61\x0c\x87\xe3\xc2\x9d\xa3\xbd\xdd\x28\x8e\xfa\xe1\xd6\x9a\x4d\xcf\x99\x4a\x81\x6d\xad\x03\x3c\xfc\xa0\x02\x7e\x21\x33\xdb\xa3\xc4\x31\xfb\x06\xe4\x2a\x61\xf4\x96\x75\x65\x5b\x5d\x1f\x60\xa3\x53\x29\xa9\x8d\x68\x45\x65\xbb\x44\x90\xb1\xf9\x05\x56\xd6\x33\x09\xba\x54\x3f\x12\x24\x8e\xc3\x8a\xd9\xd8\x77\x30\xb6\x40\x3d\x2b\x77\x2a\x3d\x48\x9d\xfb\xe0\xbc\x3a\x4b\x82\xbc\xfe\x87\xbf\x38\x0e\x74\x7b\xa3\xd3\xd8\x9b\xd3\x0f\x7a\x71\xdc\x78\xdc\x7d\x16\x23\x9d\x83\x53\x2c\x20\xbf\x46\xcc\x5b\xed\x65\x0c\x7f\x93\xc5\x55\xe2\xab\x24\x06\xca\x36\x9b\x52\x3a\xe4\x80\xf9\x53\x4c\xca\x0c\xc0\xa1\xc6\x3d\x42\x7e\x65\x65\x0f\xd8\x3e\xca\xc1\x26\x66\x18\x4b\x87\x08\xb3\xfb\xf8\xb3\x29\x8c\x3f\xb7\xee\xbd\xfb\x40\x64\x23\xf6\xb5\xbd\xd8\xf8\xca\x4d\x35\x2e\xb2\x23\x5b\x2e\x31\x34\x3e\x6e\xa2\x71\x90\xef\x12\x76\x76\x31\x05\x26\x0b\x93\x79\x1c\x57\xae\x0c\x4f\x7e\x5e\x2c\x2f\x58\xfe\x15\x26\x67\x44\x75\xdf\x0f\x54\xdd\xf7\x83\x0d\x76\x4b\xa5\x60\x58\xfb\xe7\x22\xa6\x89\xee\x87\x69\x70\xdf\xcc\x84\xfe\xda\x1f\x37\x8d\xa4\x69\x35\xe2\x80\x8b\x66\xec\xe8\x38\x0e\x1a\x8f\xc5\xd0\x5e\x98\xa8\xd6\xd5\x88\x78\xb7\x95\xa0\x3e\xb1\xc3\xf6\x5b\xc6\x8e\xea\x97\x49\x2e\x9a\x17\xca\xff\xdb\xa2\x60\x07\x59\xb7\x4e\x57\x8f\x3f\x6f\x69\x68\xd9\x4a\xdf\x96\x25\xa1\xac\x00\x8d\x1c\xec\xea\xb6\x00\x85\x36\xe7\xf2\x00\xf3\xdf\x85\x34\xe0\xbc\xbd\x43\xb2\x23\x4a\xb9\x8d\xf1\xc8\x11\xc6\xc8\xc3\x36\x0d\x10\x35\x62\x1b\x8c\xc1\xda\xcd\x9b\xa1\x28\x85\x5a\xed\x50\xee\x5d\xd6\xbf\x59\xb2\x00\x22\xc5\xbc\xd2\x17\x79\x14\x54\x3c\x00\xaa\xee\x62\x15\x15\xa0\x44\x00\xd9\xa4\xea\x23\x08\x38\x5a\x1f\xa2\xbb\xf2\x74\x79\xe2\x4c\x93\x3b\xdc\xca\x67\x17\xd7\xae\xaa\xd0\x85\x95\x54\x17\xf0\x90\xe9\x77\x43\x07\x19\xbb\x20\x76\x0b\xc1\xd7\x1d\xf3\x73\x1a\x60\x04\x8b\x81\x2f\x3c\xc6\xe3\xaf\x17\x4b\xbf\xbc\xd0\xe6\xfb\xfe\x19\x13\x67\xe2\x5c\x3c\xeb\x39\x15\x5a\xe1\xa1\x5c\xa6\x32\x36\x66\x2f\x9c\x49\x03\xbd\x65\x72\x31\xd9\xf7\x04\x38\x29\xde\xef\x70\xdf\x28\xbf\xc5\x90\xb1\xd9\x31\x55\x3a\x5a\x51\xa7\x64\xb3\x3d\x1f\x60\x20\x66\x47\x85\x85\x27\x97\x99\xd0\x22\x1b\x90\x65\xc9\xae\xb5\x0e\x5b\x4b\x23\xce\xa8\x3a\x43\x88\xe8\xf5\xd6\xca\xb6\x46\x66\xb9\xd2\x08\xf2\x0c\x29\x7e\x50\xa9\x8e\xdc\xc4\xe4\xf9\xcf\x96\x54\x97\x6f\x75\x6f\xf2\xee\xd7\x5a\x73\x95\x41\x33\x96\xb8\x5b\x98\x8c\x3e\x1f\x70\x24\x24\x8b\x40\x51\x3e\xc8\x76\x99\x7a\x7f\x50\x6c\xa6\x34\xc9\xd9\x38\x22\xeb\xe6\x6c\xc3\x08\x22\x18\x8b\x2c\xb9\xd0\xb1\xc4\xee\x51\x22\x38\x7c\x16\xb9\x88\xee\x33\x29\xfa\x49\x79\xe0\xf2\x88\x37\x72\x03\x0c\xa6\xd4\x00\x81\x5a\x0a\x63\x61\xe6\x7c\xec\x24\x7b\x28\xe8\x9c\xf5\x81\x27\xe7\xbb\xd6\x6d\x44\xe8\xb4\xe9\xee\xbe\xc2\x1a\xb9\xe0\x4e\xd9\x8e\x63\x17\xbb\x3d\x1e\xbe\xf2\x32\x29\x55\x6c\x80\x11\x8a\xe7\x7b\xc8\x11\xa0\x2c\xb5\x01\x99\xb0\xac\x1e\x37\x2f\x7c\x05\x06\xa4\x58\x88\x69\x44\x17\xc5\xe1\xdb\x0b\xf1\xd9\xc2\x37\xa4\x03\x01\xe5\xbe\x00\xb9\x4f\xec\x70\x25\xc4\xf5\x2e\xc4\xb3\x47\x0c\x9d\xf9\xc1\xf7\xd3\x52\x42\x36\x27\x3d\xe4\x16\xa8\xff\x7c\x7a\x03\x23\x7a\xbb\xc9\x97\xa9\x4f\xb2\xdf\x9c\x3c\xbe\x5b\x89\xbe\x8b\x8c\x3a\x5f\x61\xb8\x37\xc8\x60\x90\x1d\xd3\xe8\x43\x86\xdf\x98\xd3\xf5\x50\x09\x9c\xbd\xe8\x69\xa0\x9d\x6f\xdb\x94\x93\x11\x0c\x4c\x06\x2d\xc2\x35\x78\x7a\x95\xd9\xfe\xb3\xfa\x64\x7b\x93\x88\xed\x5b\xa5\x47\xf7\x49\x55\x91\x54\x43\x43\xab\x49\xb1\xb7\xae\x17\xc3\x72\x9c\x7d\x43\xdd\xb9\x81\x0b\x0b\xc1\xda\x05\x30\xd2\x81\x16\x2d\xcb\xae\x5e\x1a\x0e\x3c\x15\xfe\x90\x7a\x26\x08\x53\xb7\x8e\x8a\x9b\x41\x3f\xd0\x7b\xa4\x55\xb6\xd0\x53\xa7\xca\xb7\xaa\x58\x50\x7e\x7b\x6a\x54\xf9\x06\xa9\x42\xf5\xed\x09\x5f\x88\x6f\x50\xa8\xbf\x3d\x15\xaa\xda\xd2\x82\xf7\x1c\xb4\x44\x93\xd6\xb8\x71\x9f\xa0\xdd\x41\x37\xe8\xa8\xd1\x2a\x8a\xd4\xd5\x06\x66\x80\xc5\xb8\x71\x34\xd5\x38\xf5\x67\xc0\xa4\x2b\xad\x59\xaf\xb6\x88\x6f\xe4\xaa\xf6\xbb\xe2\xe0\x47\x91\xee\x3c\x34\xb7\x31\xe4\x11\x45\x8a\xa0\x64\xdd\x02\xc1\x0c\xec\x38\x0d\x20\x52\xbd\x99\xc6\x4a\xdb\x6c\x58\xa5\xd9\x18\xea\xc6\xba\x00\xfe\xc3\x60\x80\x0a\x6a\x36\xde\xe1\xb6\x38\x66\x31\x1d\x4d\x43\xe4\x9c\x3b\xfc\x49\x82\x2c\x6b\x30\x8f\xf3\xed\x3a\xf8\x16\x2c\x18\xe3\x97\x2a\xe7\x72\x06\x70\x74\xb6\x5e\x68\x01\xaf\xab\x20\x18\x08\x32\xe8\xd1\x3e\xc3\x71\xca\x20\x47\x7b\x39\x35\x07\x22\x35\xe7\xc7\x20\x37\x42\xff\x67\xe0\x82\x68\xc8\xc0\x8b\x1c\x8b\x3d\x42\xf4\xe7\x7f\x4e\x54\x45\x0c\x31\x5a\xc8\x00\xd1\x34\x2b\x4b\xb8\x85\x12\xd6\x79\x12\xd2\x8b\x90\x44\x16\xbd\x5b\xbf\x85\xae\x03\x3c\xb8\xd8\x3d\x78\x54\xb9\x4d\x65\xc7\x79\x62\xc1\xb2\x3a\x9c\x38\x90\x1b\xf5\x78\x3d\x80\x4a\x87\xb6\xf7\x1c\x49\x4d\xac\xfb\x4d\x74\xbb\x47\x2e\x61\xcf\xfc\xab\xaf\x2a\xf7\xd8\xdd\x2b\xfa\x65\x60\xd9\xcd\xad\x5e\x77\x04\x70\x86\x38\x27\xf5\xd6\xf2\x7e\xf2\x2b\x11\x90\x79\x60\x89\xcd\x51\x54\x84\x10\xb3\x17\xcc\x35\x36\x2e\xcc\x7e\xf1\x74\x1c\x0e\xb6\x09\xa7\x2c\x53\x3a\x9b\x09\x00\x29\x12\xc7\xa0\x1d\xb3\x51\xa5\xb8\x06\x9b\x43\x20\x43\x31\x8a\xbf\x6c\xc5\x29\x59\xf2\x48\x98\xa3\xea\xa0\x97\xc7\x69\x6e\x13\x18\x65\x1a\x79\xfb\x29\xa3\xe5\x26\xc9\xd9\x7d\xbc\xec\xa5\x77\x0a\xa7\xd3\x74\x0c\xea\x4b\xb4\x7a\xd9\x8d\xdd\x62\xf0\x36\xe8\xed\x44\x46\x6a\x60\xe1\x9c\x44\x30\x8f\xf2\xfc\x41\xa8\x25\x68\x54\xe2\xf6\x35\x22\x9f\xbe\x20\x4a\x8f\x5c\xf6\x4e\x5b\xcc\xd7\x59\xce\xe7\x30\x7a\xd0\x77\xb4\x50\x98\x42\x9a\x9b\xd6\xc2\x6d\xd3\x6e\xe3\xae\xbf\xc6\x6a\x3a\xb2\xe7\x5b\xcc\x4e\x08\xd9\xf3\xa7\xdd\x4e\x6e\xff\xe1\xdf\xb5\x16\x65\x42\x35\xa9\xfd\x15\xfd\xd8\x53\xd3\xe8\xfa\x56\xac\x74\xe0\xa1\xb8\xbe\xc7\x2b\xa8\x30\xac\x5c\x7e\x0f\x9a\xc8\xab\x9d\x23\x52\x0b\xdb\x5c\xa2\xe3\x29\x5b\xcb\x6c\x55\x67\xe5\xa7\xfa\x36\x49\x94\x50\x4a\x41\x4a\x20\xc5\x01\x65\xc9\xcd\xd6\x2b\xcd\xbb\x0c\x9e\x1d\xb4\x63\xd8\xf7\xcc\x65\x3e\x64\xcd\x48\x2e\xc4\x1a\xe5\xbe\xaa\x72\x36\xc9\x74\x49\xeb\x1b\xe1\x34\xf7\xf5\xa6\x9b\x5a\x7d\x7b\xee\xfc\x15\x53\xd5\xe5\x73\x26\x69\xea\x6a\x9d\xd2\xb5\x62\x32\x3c\x30\x0f\xb6\x61\xfd\x00\x07\x4f\x50\x03\xe5\x68\x67\x80\x9b\xac\xc0\x7f\x8e\x3c\xbe\xae\x1a\x7b\xbd\x98\x75\x61\xd6\x67\x4b\xb0\x1f\x9f\x78\xdd\xa1\x3a\xb9\x00\x00\x8b\x34\xb8\xd8\xfb\xef\x81\x55\x19\x15\x35\x49\x07\xfe\x7d\x93\x74\xb8\x56\xe9\x73\x4e\x6f\xf0\xd8\x33\x27\x89\xfc\xf8\x17\x03\xcf\x1c\x36\x5d\x70\x0d\x07\x68\x8a\xaf\x70\x61\xfd\x5c\x59\xff\xe3\xe2\x01\xac\x1a\xa1\x6d\xe0\x75\x86\x45\xe1\x60\x2c\x8a\xb9\x7f\xb8\x93\xff\x8f\xf5\xeb\x98\x0b\xad\xb1\xce\xfa\x4d\xd7\x48\x25\xfe\xe2\x42\x6a\x2c\xd2\x98\x80\xf7\x2b\x6e\x09\x75\xd0\x8f\xd6\xf2\x03\xfa\xdf\x17\x0f\xd0\x94\xeb\xf1\xb7\x41\xef\x7b\xa9\x2e\x56\xba\x73\xa8\x3c\x9e\xdd\xf4\x86\x09\xcf\xfe\x94\x9b\xd7\x8c\x10\x14\xc4\xdf\x8c\x47\x0b\x16\x7d\xb9\xc4\xac\xcb\x01\xd7\x49\x15\xa5\x46\x50\xb6\xd3\xc5\x89\x20\xbe\x8e\x1a\x47\xe2\xc2\x16\x9a\xa0\x1f\x42\x6c\x47\xd7\x34\x5e\x14\x52\xfb\x89\x3e\xa2\x3d\xe0\x4d\xf1\x1b\xb3\x58\x14\x38\x9d\xea\x52\xab\xea\x43\x12\x08\xde\x95\x44\xfd\x0c\xe8\xda\x95\x0e\x64\x65\x29\xb8\x7d\x25\xca\x47\x03\xc7\x7e\x0c\xce\xca\x57\x4f\x4c\xfd\xed\x70\x37\x9c\xbf\x6a\x99\x95\x8d\x3b\x5c\xe5\x49\x4f\xb6\x2e\xd6\xcf\xd5\x48\xd0\x0a\x99\xb4\x70\x98\xb7\x85\xaf\xca\xed\x87\x2d\x0e\xf3\x0e\x50\x72\xc8\x29\x33\x6d\x09\x1d\xcd\x33\x46\x4e\x0b\xe2\x12\x13\x66\x79\x50\x4a\x23\x35\x39\x30\xce\x28\x0d\x87\x47\x06\xf7\xb8\xa9\x48\x74\x24\x59\xfa\xf0\x03\xef\x26\x74\xa3\x71\xd5\xcd\xa8\x8e\x9e\x0e\x89\xb8\xf5\x5a\x8f\x04\x96\xd1\x3c\x59\x11\x47\x3e\x87\x66\x7c\x25\x13\x2f\x71\x9f\xaa\x97\x2b\xb8\x57\x53\xa4\xef\x63\x82\x26\x3c\x18\xc0\xbf\x06\xeb\xc1\xd3\x49\xc3\x66\x4f\x0d\x97\xed\x36\xee\xb2\x4a\xd8\x08\x25\x76\xb4\x49\xa1\x7d\xf3\xfd\x5f\xa4\x5c\x11\x52\xcc\x2a\x56\xd5\xc3\x3e\x8a\xb2\xbf\xea\x79\x38\xe2\x01\xc7\xd3\xed\x4e\x51\xe1\x4a\x22\xb9\x51\x4d\x55\x2b\xc5\xdc\x62\xb6\xf0\x0a\x0f\x52\x27\x77\xca\xca\xc6\x6d\x73\xea\x3a\x17\xf4\x2f\x7b\x0a\x3b\x1f\xac\x2a\x7b\x2a\xcb\x52\xdd\x29\x6d\x17\x56\x15\xd1\x76\xcb\x4c\xd6\x86\x47\xa2\xc8\x87\xe4\xc9\x37\x54\x47\xee\x83\xf7\x06\x90\x20\xcf\xcd\x34\x8b\x5c\x89\x2e\xc3\x7d\xf0\xb0\x58\xdf\x29\x35\x3b\xf0\xc9\x5b\x70\xe2\xb2\x51\xa0\x3d\xe1\x8e\x8b\x7e\x39\x61\x71\xc6\xd0\x15\x47\xf7\x6b\x16\xbe\x60\x3d\x1d\x3e\x50\x52\xcf\x01\x39\x16\xa7\x7e\x7e\xae\x84\x92\x0e\xc0\xa5\x22\x59\x8d\x01\xc9\xc4\xf9\x90\x2e\x96\x94\xa5\x5b\x9f\x01\xf9\xc5\x05\x0a\x78\x42\x6d\xcc\x9c\x61\x91\x30\x56\x96\x09\x22\x90\xa8\x43\xf5\x5c\x4d\xfc\x11\x3e\xd7\xc7\x91\x2b\x84\xe5\x7e\xc5\xf5\xd5\x6f\x1f\x8c\x04\x0a\xfb\xf3\x2e\x3b\xd8\xf2\x13\x48\xca\xe1\x15\x36\x90\xe0\x0e\xd2\xf5\x35\x72\x77\x54\xe6\x25\x27\xaf\xe9\x40\x8e\x1e\xfc\x84\x06\x97\x8e\xca\x60\xaa\x38\x06\xeb\x71\x6a\x15\x83\x11\x89\xd1\xcc\x58\x57\x1c\x6f\xe3\xc9\x88\xe6\x5d\x04\xae\x8f\x9f\x64\x0e\x63\x11\x9e\x93\x46\x23\x7a\x47\x0c\xd9\x36\xd1\xe1\x21\xea\x43\x02\x96\xa7\x9c\xc0\xd6\xb1\xac\x70\xde\xa1\xc2\x22\x8b\xb3\xd6\xec\x39\xe3\xdc\x62\x3e\xc2\xbf\x52\x5a\x57\x26\x88\x76\xca\x58\x16\x2f\x6f\x35\x1c\xff\x6a\x4c\x52\x77\x31\xdf\xfb\xae\x92\x39\x7a\x7b\x72\x81\xde\x3e\x7b\x4a\xa8\x7a\xf5\x5b\xba\xb7\x56\x40\x06\x72\xfb\x55\xab\xd0\x53\x9b\x85\x22\xe6\x4d\x72\x09\xe8\x08\x9f\x70\xf5\x72\xfa\x31\xa5\x24\x2d\x16\x84\x96\x05\x02\x57\xd9\x94\xb5\x67\xa0\x92\x31\x66\x76\x37\x88\x9e\x99\xb4\xea\x81\x7e\x2c\xa2\x3b\xd8\xd0\x4e\x2c\x8e\xb6\x46\x67\xef\xd8\x26\xcd\xab\x14\x7a\x09\xb4\xa9\x5c\x4c\x6d\x93\x09\xa1\x9f\x6c\xe4\xf3\xde\x29\x63\x66\x74\x87\xd4\xe7\x31\xda\xc3\x8b\xe3\x9f\x0d\xb9\x90\x60\xe9\x8a\xb9\x31\x17\xee\x78\x60\x42\x17\xb0\xbe\x14\xbb\x53\x6e\x1f\xda\x03\x9d\xba\x9c\x33\xc0\xd8\x55\xf0\x6d\x9f\xe1\xaf\x01\x5d\xc0\x11\xa9\xc9\x20\x63\xb3\x69\x4c\xfb\x47\x5d\xe1\xfa\xc9\xde\x66\xaa\x8c\x1b\x6d\xcd\xa0\xeb\xd3\xf5\x1d\x8a\xff\xc5\xf0\xea\xde\x33\x87\x6a\xd1\xc2\x89\x28\x7c\xae\x1f\x6a\xa5\xb4\xb7\xf5\xb1\xb1\xd3\x43\xcd\xdb\xef\xea\xfc\x4a\x9b\x1d\x5d\x70\x0a\xe3\x66\xcb\xeb\xc1\xb9\x0b\x3d\x94\x17\x0f\xd3\x29\xe6\x8d\x1b\x30\x0c\x39\x90\xd1\x69\x86\xef\xb6\x13\xb6\xf7\x46\x1d\x20\xd1\x68\x45\xb8\xa6\x98\xa8\xc1\xb1\xf6\x18\x59\x6a\x50\xba\x81\xde\x16\x2e\x67\x79\xcd\x69\x53\x45\x68\x0d\x9c\x1b\xfa\x41\x48\xca\x19\xb8\x4e\xde\x77\x0b\x95\xf0\x7e\x75\x5d\x30\x94\x05\xd0\xac\x2a\x85\xf5\x02\xc2\xfe\x6c\xed\x0a\x31\x4c\xcf\x33\xfa\x5a\x67\x6a\xb6\x54\x1e\x26\xba\x43\x43\x03\xae\x64\xd4\x1c\x0f\x88\xb7\xfa\xd3\x8c\xbd\x86\x9a\x89\x54\x97\x78\xfa\xc5\xce\xd0\xa9\xa3\xea\x0b\x30\xa0\x1d\xe7\x27\xd3\x8d\x6b\xd1\xef\x2c\xca\x81\xb0\x1f\xf8\x6c\x3f\x99\x1a\x03\xed\x88\x10\x5a\xc1\xd2\xb5\x29\xe6\x11\x63\xec\xe0\xf8\x41\x37\xe9\x87\xfc\x65\x82\x8d\x11\x96\x9f\xc5\x3a\x03\xb1\xe7\xd6\xe8\x83\x01\x48\x47\xad\x87\xdd\xd2\x25\x10\xb3\xdb\xbf\x04\xb7\xdd\xd2\x7b\xd6\x97\x05\xc8\xb7\xd3\x91\x5c\xd8\x2b\x75\x94\x1a\xa5\xc1\xfa\xe6\xa4\xfe\xa3\x21\x0b\x99\x33\xfc\x8f\x84\xfc\x35\xb8\xcd\x58\x85\xad\x3c\x46\x62\x35\x52\xdb\x6e\x3c\xb2\xf5\x5e\x9c\xd3\xf1\xc3\x1b\x55\x47\xd0\xe4\xea\xfd\x0e\x58\x34\xb4\xec\x1b\xe2\xc1\xb3\x30\xf1\x00\xac\x39\x4f\xd8\x62\xd8\x0e\x00\x6e\xa3\x30\xc2\xbd\x15\xa3\xce\x87\xc8\x6b\x1f\x20\x99\xed\xf8\x42\xdb\xd8\xf3\x09\x81\x18\xb2\xdb\xbe\x0e\x97\xf2\x31\x28\x37\xa1\x4e\x3a\xbd\x36\x97\xaa\xe5\x37\xd7\x81\xdb\x3b\x44\x82\x62\xcf\x8f\x07\x5b\xec\xf6\xb9\x0f\x63\x0b\xda\xb4\xdb\x49\x12\x2a\xd6\xe6\x27\xc8\x0c\xd9\xc3\xc9\x95\x6b\x56\x93\x9a\x4e\x18\x65\x87\x96\x71\xb7\x82\xec\x57\xe4\xa5\xc8\xd2\x0e\x87\xf3\x4a\x45\xd8\x17\x72\xba\xd3\x01\x7b\x13\xa9\x19\xa3\x36\x3d\x87\xfe\x4e\x64\x13\x34\xdd\x99\x5b\x0f\xa4\x1f\x83\x21\xb6\x76\xbb\x31\x5a\x17\x2b\x8c\xc5\x9f\xe4\x45\x67\xbb\xda\x44\x2b\x82\x13\xea\x58\x9b\x7c\x52\x03\x24\xdf\x5c\x18\x1f\xf4\x4f\x73\xe3\xfe\xbe\x6b\xd5\x80\xcc\x8f\x47\x61\xea\xc0\xe5\x03\x69\xeb\x82\xc3\xe6\xc1\xc7\xd6\xb9\xd5\xdf\xc4\xae\xc3\x0a\x4c\x04\xe4\x9f\x7f\xb9\x00\xf8\x94\x83\xed\x4f\x8d\x77\xfb\x2c\x81\x5e\xd3\x46\x67\x32\xd2\xe4\xf6\x0f\xa1\x9f\x1e\x96\x32\x24\x38\xc1\x66\x78\x7f\x0e\x42\xed\x16\x0a\xb1\xbb\xff\x62\x47\x0d\x6e\xe2\xb0\x25\x22\x51\x13\x2b\x15\x01\x02\x62\xac\x44\x6c\xdd\x5c\x7f\x9c\xc3\xcf\xeb\xd1\x64\x77\x1f\xeb\x52\x68\xb1\x65\xa2\x39\x2e\x61\x7e\x0e\xab\xb4\x70\x99\x41\x0e\x48\x17\xa5\x90\xd6\xc5\xa4\xc0\xbe\x36\x9d\x09\x8d\x2d\xfd\xff\x61\x34\xe1\x1c\x9a\x8f\xc5\x39\xcb\x79\x49\x0f\x4e\x6e\xc3\x8f\x05\xf7\x19\xaa\x97\xfa\x76\xb4\x99\xe9\x24\xe9\x3b\x3a\xb9\xf0\x60\xa7\x73\xef\xa8\xde\xd8\xbc\x08\xf3\xce\x18\xb5\x26\xdd\xe0\x61\xab\x60\x51\x86\x5e\xc2\xfa\xb9\x5f\x95\x2c\x1d\x2b\x5c\x85\xba\xe5\xe9\x3d\xc0\xdb\xbf\xd5\x70\xa5\x7e\x76\x34\x77\xe4\xac\x69\x87\x15\xac\x68\xe1\x6a\x28\x05\x22\xb1\x6e\x76\xe8\xc0\x5a\xc5\xc2\xec\x85\x17\xae\x1a\xf5\xcc\x64\x4e\xe5\xaa\x6f\xcf\xd5\xf9\x05\x43\x91\xe8\x72\x28\x89\x21\x29\x3d\x50\x8b\x96\x03\x46\x72\xe8\x80\x7e\x07\x46\x48\xb5\x03\x10\x95\x66\x09\x6d\x82\x02\x31\xb4\x3a\x84\x85\x94\x81\xf7\x00\x7c\x95\xa5\x68\x0a\x27\x39\xbd\x62\x8e\x4b\x49\x20\xda\x67\x03\x51\x11\x54\x87\xc1\x4f\xf8\xf1\x6d\x03\x2b\x5a\x8f\x17\xc5\x7f\x00\x6c\x9d\xc7\x55\x28\x1c\x85\x3e\x6f\x02\x42\x17\xeb\x64\x49\xeb\x3a\x87\xe5\xdc\x2a\xf0\x33\xbf\xdc\x28\x76\x0c\x84\x8f\x33\x95\xa9\xa8\x88\x07\x00\x4f\x2c\xe4\xd7\x82\xed\x73\xb5\x38\xe8\xf0\xdd\xe8\x5c\xb8\xaa\x73\x9f\x33\x14\x58\xc3\x43\x6b\x3d\x86\xdc\xd2\x52\xfc\xcc\xc1\xe7\x35\xb4\x07\x23\xec\xa1\x81\x4b\x4a\x96\xbd\xac\x03\xbc\xca\x17\xc9\xdd\x40\x1d\xd8\x15\x1e\xa6\x48\x4d\x5d\x26\x28\x64\x03\x45\x27\x24\x9b\x38\xf9\x14\xa0\xbb\x55\x4f\xed\xc1\x33\xb9\x16\xd0\xb2\xbb\x24\xc7\xad\x1d\xe2\xe3\xd5\xf6\x95\x05\x7a\xb5\x55\x5b\x55\x1a\xf7\x1d\x31\x81\x29\xdd\xb1\x2d\x11\x97\xc5\x43\xc3\x5d\x7a\xd1\xe6\xda\x5f\x77\x54\x38\x76\xb2\x77\x4f\xa0\x48\xf3\x25\x92\xc2\x81\xeb\x91\x4e\xb8\xdb\x21\x66\x9e\x6c\xdf\x86\x1a\x81\x51\x61\x5b\x25\xc6\x6e\x24\xee\x43\x1c\x3b\x63\xc1\xbf\xef\xf0\x09\xcb\xc7\x04\xd4\x11\xd0\x98\xd7\x42\x25\x14\xbe\xe1\x56\x91\xc8\xfc\xa0\xb7\x46\xef\x73\x45\x5c\x62\xf1\xf6\x7a\xe5\x51\x54\x1b\x63\x6f\x89\xec\x55\x10\x6b\xcf\x39\x90\x5d\x03\xa0\xbb\xb1\x5f\x18\xa0\x7c\xf9\xf8\xc8\xe7\xc1\xaa\xfd\x3a\x1f\x1d\x97\x4e\x4a\xd2\x04\xab\xec\xc9\x2a\xae\xb0\xb5\x67\xb9\x92\x70\x7d\xc1\x10\x98\x54\x6d\xb4\xc7\xf4\x7b\xef\xda\x57\xb5\x0d\x4f\x27\x9b\x19\xd1\xef\x5c\x9d\x46\xa6\xb3\x05\x64\xa5\xad\x99\x85\x0b\x5a\x3f\xf6\xb5\x9b\xc1\x46\xd8\x9f\x19\x07\x86\x1d\x54\x6a\xef\x90\x7a\xb7\x91\x02\x36\x9a\x69\x64\x4d\x29\x66\xb2\xad\x59\x3e\x8d\x4b\xf4\xb8\x83\x8a\x50\x01\xa7\x96\x6b\xb2\xee\x24\x66\x22\xd1\x2f\xde\x5d\x7a\x17\x26\x88\xa9\xb4\xc1\x6d\xbd\x22\x31\xe4\x4e\x55\xdb\x9a\xc7\xc5\x56\x89\x61\x06\x9e\x54\xf2\x23\xb1\x88\x4c\x84\xc5\xd0\xd4\x0d\x61\x5a\x76\x5b\x8b\x2a\x7e\xbb\xaa\x10\x91\x6d\x12\xb7\x8a\xc2\xb0\x8b\x87\x5a\x23\x47\x85\x71\x81\x58\xa5\x2b\x2c\x58\xec\xfb\xf9\x23\x56\x47\x60\xb2\xfc\xe8\xdb\x9a\x55\xef\x98\x51\xf6\xc9\x22\x22\xf3\xfd\x41\xa9\x38\xcf\x2b\xfe\x16\x30\xa3\xfb\x9d\xbc\x98\x59\xa9\x30\xe6\x12\x19\xb0\x8d\xb7\x0d\x51\xd2\x60\x87\xb9\x67\x58\xb6\xc1\x60\x15\xa5\xd6\x68\xdb\x7b\x98\x25\x46\xac\x39\x30\xab\x6f\x43\xdc\x36\xaf\x0e\x2c\x23\x54\x6d\x20\x8d\xe5\xed\x89\xcb\xd0\x2a\xa7\xea\x5e\x36\x25\x10\x43\x74\x19\xd9\x52\x87\xa0\x50\x21\x21\x13\xe3\x54\x0c\x89\xc2\xaf\xcd\x85\xee\x3a\x25\x45\xcd\x6e\xec\x16\x5b\x1d\xd1\x12\x72\xec\x4e\x24\x6c\xd5\x0c\xc8\xcd\x80\xdd\xe1\xeb\x0b\x71\x6d\x40\xbc\x92\xf9\x77\x54\x1e\xf5\xd3\x6a\xad\x88\x1a\x86\x96\xb2\xbb\xf5\x98\xb0\x53\xa0\xd1\x2b\xa3\x48\x05\x2e\x09\x62\x5c\x97\xfc\x09\x5f\xac\x97\xbe\x23\xd5\x61\xf1\xef\x9a\xbf\xb7\xcd\x37\x2e\x49\x54\x69\x75\x20\xb9\x72\x95\xad\xed\x1e\x70\x7a\x1d\x29\x65\xce\x14\xca\xeb\xd1\x66\x82\xd9\xca\x2c\xb6\xf1\x5e\x13\x6f\x99\xe0\x97\x21\xa6\x1c\x88\x37\x78\x8a\x0b\xb3\x0b\x94\xb5\x50\xbe\xc2\xe9\x9f\x31\x9c\x8b\xaf\x24\x20\x44\x42\xd7\x66\xe4\x8a\x55\x3f\x26\x76\x42\x97\xc4\x89\x4d\x05\x9e\xee\x97\x1c\x35\xef\x69\x15\x36\x6c\xd7\xd6\x6d\xd1\x36\x06\xb9\x89\xdd\x50\x7c\x4b\xa5\x1e\x19\x05\x39\x38\x83\x69\x87\x31\x62\x2a\x06\x9b\xee\x83\x90\xcd\x03\xbb\xc3\x2c\x0c\xaa\x46\x17\x58\xb8\x58\x1d\xd7\xc1\x2f\xd3\x55\x2f\xb8\x59\xfd\xc1\xfd\xf2\xd5\xa7\x1e\x99\x44\x02\x4e\x90\xf8\x22\x58\x04\x79\x1a\xa3\x05\xed\x90\xfe\x05\x61\xeb\x77\x6c\xb5\x89\xb9\x83\xc3\x06\x05\x05\x02\xec\x47\x42\x95\x87\x42\x25\x32\x02\x1f\xb9\xa0\xbd\xdc\x7c\x73\x66\x5f\xa8\xac\x16\xe3\x18\x17\xdb\x86\x1a\xd9\x66\x37\xf3\xa3\x95\x9c\x2f\x0a\x8c\x5e\xb7\x83\xe5\x23\xb5\xc2\xba\x28\x66\xa6\x70\x45\xa6\xa8\x9a\x92\x15\x23\x78\x99\xf5\x55\x93\x8c\xb1\xa3\x88\x2b\xc6\x02\x03\xb0\x1a\x5e\x91\x09\x2f\x2c\xdd\x6c\xca\x90\x41\x65\x63\x82\x5d\x2f\xf4\xff\xab\x4e\x11\xa3\x0d\x29\x40\x8e\x7a\x6c\x1b\x24\x68\x75\xa8\x78\x8f\x8d\xf8\x1d\xf6\x1f\x09\x12\x02\x23\xfa\x06\x0b\x8d\xc4\x4b\xa8\x56\xee\x70\xb3\xa5\xfd\x95\x2c\x53\x6c\x67\xed\xc6\x73\xf8\x87\x91\x72\x73\x66\x86\x41\x5f\xa1\x29\x37\x23\x84\x0c\x88\xc0\xb0\x18\x82\xce\x13\xa1\xc8\xae\x3c\xd0\xd7\x72\x55\x40\x71\x92\xa5\x6c\xed\xd2\x21\xc7\x50\x20\x7b\x81\xb4\x3d\xde\xaf\x1b\x5e\xd2\x9c\xbc\x6f\xeb\xe7\x22\xd5\x51\x64\xb9\x49\xbf\x74\x96\xcb\xec\x1a\xd9\xea\x31\x48\xc5\xcb\x52\x6d\xf6\x09\x79\x2f\xb5\x57\x4f\x95\xb2\x12\x31\xb7\x46\x34\x3c\xae\x28\x4a\x84\xcc\x9e\xcf\x3e\xac\xce\xd1\xe0\x6c\x55\x5e\x31\x92\x11\x6c\x49\x15\x05\x18\x70\x26\x0b\x00\x33\x27\x79\x09\x4f\xa6\x87\xad\xa6\xe4\xa7\xb6\xfe\xff\x7c\x5c\x3a\xa5\xe0\xe5\x86\xf6\x37\xa7\x29\x02\x66\x70\xf6\x7e\xd3\xcf\xde\xed\x6e\x9c\x35\xe7\x02\x9c\x88\xc1\x28\xc1\x88\x41\xdf\xc4\xb2\x92\x6b\x82\x5a\xc0\xd3\xb6\x14\xe3\x51\x6e\x1e\xd5\x3b\x05\xa5\x60\xd3\xf9\xe1\x4a\x98\x1f\x0c\xe2\xb7\x6d\x5f\x27\x52\xb4\x22\x7c\xfc\xac\x9e\x09\x29\xc4\xd2\x39\x16\x0d\x48\xf8\x1c\xaf\x7a\xd8\xec\x2c\x2e\x3f\xe3\x8a\x2f\xd1\xd2\x62\xba\xe6\x23\x3e\xa5\xaa\x88\x2e\x5d\xc7\xd5\xb0\xf4\xe9\x6e\xc0\xbe\x00\xe8\x53\xf2\xf6\x88\x5f\x2d\x5d\xca\xe4\x1e\x3e\x9f\xbb\x24\xcf\x8b\x11\x6f\x8b\x97\xb3\xa5\xde\xb2\x68\xd2\xa6\x7c\x59\xf0\xed\x4c\xa9\x14\xea\xdb\x25\x0f\x45\x22\xea\x44\xe9\xdf\x2a\x10\xcf\x89\xf9\xe1\xcd\xec\x6d\x7b\x54\xa1\x88\x82\x27\xeb\x7c\x95\x5a\x77\xcc\xb1\x94\x7d\x5a\x56\x15\x99\x8d\x2e\x05\xb5\x8f\x2b\x38\x27\xc0\xbd\xf6\x0d\xdd\x8e\x37\x33\xb0\x79\x50\x56\xad\x78\x29\x66\xf5\xad\x95\x0a\xa8\x59\x5a\x2b\x16\xf7\x59\x5f\xac\x2a\xc7\x77\x52\x97\x18\x5a\x4e\x93\x4a\xc0\xae\x54\xfa\x14\x68\x33\x9e\x73\x03\x8d\x95\xec\x6e\x13\xdc\x65\xf8\x5a\xa1\x9d\xd2\x59\xb3\x54\x96\x18\x1a\xa6\x7f\x18\x9a\xa4\xcb\xc9\x8e\x4e\x63\xa5\x32\xe3\x20\xef\xbe\xcb\x75\xc2\xe8\x91\xa2\x17\xf1\x41\x7f\x53\xd0\x2c\x81\x45\x3e\x42\x8d\xba\x48\xcb\xe5\xc9\x8c\x0c\x58\x09\x4b\x55\x29\x0d\xac\x33\x8f\xc7\xba\x6b\x9e\xb0\x71\xa1\xe9\x07\xe9\x54\xa9\xb1\x15\xeb\x05\x6b\xcd\xb4\xb6\x27\xc2\xb7\x82\x0f\x04\x7c\x16\x3f\x3e\xad\x17\x6b\xe7\xd5\x7f\x59\x74\x4c\x9f\x50\xa6\x15\xdc\x1b\x3d\xdf\xf5\xa9\xaf\xcf\xe8\xe0\x68\x2b\xb4\x95\xa0\xc1\x28\xec\x58\x3c\x43\x4b\x4d\x79\x4f\x02\x37\x08\x1d\x60\xb0\x97\x71\x7e\x76\x1f\x96\xfb\xdd\xbd\x34\xe7\x63\x01\x56\xb1\xdf\xde\xbc\xf2\x43\x03\xa4\xe3\x26\xeb\x91\xf9\x63\x90\x4b\xe4\xcd\x2b\xd2\xb7\x7f\x23\x01\x5e\xe9\x15\x5d\xad\x7f\x05\xae\x72\xd4\x53\x4d\xb9\x06\x2e\xe5\x8b\x2e\x8e\xd6\x58\xcd\x80\x0d\x43\xf5\x78\x6a\x86\xe9\x35\xb6\x03\x44\x9a\xb6\x55\xbb\xc2\x83\xee\x07\x0a\xd4\x58\x0d\x77\xc3\x06\x70\x51\xb0\xa1\xdd\x62\x47\x8c\xa0\xd2\xec\x69\xa6\x6b\x43\x11\x63\x8a\xd3\x1b\xf4\x15\x10\x00\x68\x1e\xe8\x9d\x27\xa3\x6a\xa6\x70\x97\x3d\x81\xde\x9e\x83\x0b\x9d\x4d\x91\xaf\xc1\xda\x58\xfa\xf7\x58\xaa\x22\x2d\x24\xcf\xc9\xba\x88\x57\x08\x66\x92\x3c\x75\x53\xce\x5a\x78\x96\x12\xea\x3e\xee\xa9\xd9\x9c\x44\x9c\x28\x15\xe8\xfb\xc0\x01\x63\x23\x04\x9b\xba\x6a\x75\x34\x02\x71\x09\x90\x95\xd9\xdc\x51\x3b\xac\x98\x97\xb2\x5f\x72\xe5\x15\x03\xb7\x70\xc7\xcb\x5d\xc4\x66\x29\xd0\xc0\x32\x3c\x7e\xe7\x80\xd7\x6c\xa8\x67\x8c\x49\xa6\x07\xb5\x0e\xa0\xc6\x98\xf8\xa2\xe7\x3e\xdb\x3e\x88\x5e\xbf\xd6\xf8\xb2\x3c\x3e\x54\x94\xb9\x8b\xb7\xe7\xc7\x0e\x91\x7b\xb7\x0d\x26\x5e\xdc\x43\x19\xcc\x8c\xc3\x60\x61\x87\x03\x88\x50\x1e\x57\x6e\x8b\x9e\xa2\x41\x66\x72\x67\x20\xc6\xf8\xbe\x46\x19\x76\xc5\x1d\x1f\xa1\x7c\xed\x0c\x27\x58\x51\xf2\xaa\x19\x82\x8a\xc7\x0a\x7c\x5a\x82\xbd\x1e\xfc\x39\xef\xa1\xd6\xcb\x11\xe6\xb3\xb0\xac\x62\x88\x91\xb8\x27\xeb\xf2\x76\x9a\x92\x26\x37\x38\xd8\x89\x18\x37\xef\x9c\xe9\x85\x1b\x3b\x81\x8e\x73\x3d\xba\x1c\x93\x6f\x1e\xe8\x29\x08\x76\x93\x70\xb1\xc6\x3d\xf6\x0c\x2a\xa0\x56\xba\x6a\x0c\xa9\x68\x0a\x2b\xfa\xf2\x0d\xca\x6e\x97\xc2\xc2\xef\xd9\x6c\xd8\xbb\xb2\x70\x78\x4f\x57\x96\xd8\xc6\xc2\x61\x8e\xc9\x2b\xc8\x7e\x67\xd1\x10\x8f\x35\x53\x18\xdb\x5c\x04\x83\xbd\x37\x42\xd1\xa1\xe4\xd1\x93\x13\x57\x9d\xc1\x83\x9c\x14\xfe\x89\x2e\xd2\x5b\xc7\x9a\x2e\x6b\xd4\xd9\x98\xb0\x80\xfb\xff\x5b\x73\xc5\xb1\xc6\x04\x25\xc2\x1e\x4a\xf8\x5a\xb8\x35\x51\x29\x70\x58\x25\x46\x7b\x61\x72\xda\x1d\x9c\x75\xf3\x61\x56\x2c\xbe\x28\x8d\x09\x8c\xb2\x58\x20\x75\xdf\xaa\xf2\xb3\x5e\xbb\x03\xb7\xc9\xef\x3a\x8d\xfa\xce\xef\x15\xdb\xfa\xaf\xf3\xab\x2a\xc3\xa1\xea\x1c\xdb\xaa\x0b\xdc\x0a\x79\x5d\x88\xe2\x51\xe7\x6f\x7f\x2a\xe1\x4d\xce\x7e\x55\x8e\x1e\x5e\x5f\xce\x54\x5b\x5c\x88\x44\x8f\xf2\xfc\x9e\x56\x6f\xb3\xde\x50\xdc\xbc\x8c\x1e\xf6\x29\x82\xf3\x94\x44\xa2\xe3\xdf\xc1\xdd\x9e\xe9\xa1\x37\x3b\x7b\xcd\x98\xbf\xf8\x67\x46\x4c\x0f\xbc\x8f\x7c\x36\xa9\x7b\x0e\x31\x44\x35\x27\x7b\xb3\x8b\x3e\xdf\xc2\x2a\x3d\xb6\x2a\x96\xfc\xc4\x45\xf9\xcc\xc8\x55\x3f\xcb\xf9\x47\x4d\xff\x56\xff\xa8\xfa\xcf\xc0\xeb\x52\x03\x24\x9a\x88\x0c\x64\x35\x35\xde\x23\x19\x2c\x1c\x9f\x5f\x26\xb7\x23\x55\x6b\x17\xb3\x49\x4e\xaf\x63\x0c\xbf\x50\x93\xe4\x66\xa0\x37\x6f\x6a\xb4\xcc\x05\xfa\x7b\x7c\x0a\x9e\xa8\xa4\x1b\x64\xe7\x9e\xca\xce\x1b\xdb\x83\xbf\xe5\x77\xb7\xca\x83\xc7\x0f\xb4\x1b\x13\x2e\x92\x9c\x12\x34\x9c\x47\xf0\x98\xa7\x0d\xa0\xd5\x53\xd3\x2f\xda\x6a\x8c\x16\x33\xc9\x68\x7a\xfe\x1d\x9b\x4c\x36\xcb\xb8\xa9\xca\x99\xe1\xdb\xe0\xc1\xc7\xcf\xd5\xc8\x51\xb2\x67\xff\xc7\x23\x79\x3e\xc5\xf7\xcf\x66\xd1\x40\xa5\x21\x5a\x11\x37\x2f\x79\x3d\x83\x13\x98\x91\x40\xf0\xf3\xa8\xd2\xcc\x36\x83\xf0\x45\x0b\x0d\x38\xc5\xf0\x10\x7e\xa0\xaf\x33\xa4\x20\x8d\x28\xb8\xb4\x21\x8a\x34\xfe\xd3\x58\xa6\x1b\xe9\xeb\x53\x20\x88\xf1\x1d\x6e\x11\xf0\xd1\x68\x2a\xc4\x41\xbe\x3a\x9f\xe9\xbc\xd5\x1b\x56\x9a\xb7\x02\x23\xba\x4e\x13\xbc\x79\xed\xd3\xb1\x7b\x1c\x61\x7a\x9a\xfa\x92\xcb\xa0\x5f\xa2\x8e\x08\xc7\xff\x64\x75\xa6\xc7\x4d\x03\xd8\x4a\xb1\x72\xa8\x16\x9d\xf3\xed\x84\x11\x8a\xa2\x31\xff\xe6\x84\x80\x52\xee\xff\x20\x70\x05\x99\x84\xe7\x61\x1c\x34\x29\x06\xa3\xe2\x86\xb1\xb4\x9d\xdd\x51\x89\xf0\x3d\x1e\x7d\xf9\x28\xf8\x8d\xb1\x3b\xb9\x0a\x9d\x50\xd5\xa7\x5a\x9d\xab\xb4\x72\x72\x96\x6e\x8b\xb8\xbe\x34\x8f\x69\x42\x1b\x41\xd5\xb8\x05\x83\x5b\x2a\xdb\xf5\x7f\x76\x48\x27\x15\x60\xec\xc5\x17\xcf\x1c\x41\x2e\xf9\xe7\x04\x0c\xd6\x4d\x00\xa8\x63\x79\x39\xe2\x4b\x89\x1d\xea\x45\xd7\xdc\x2f\xc0\xb6\xca\xdf\xf0\x63\xed\x85\xd2\x63\x3b\xde\x8c\x22\x9a\xba\xf4\x51\x42\x9f\xf4\x48\xdb\xfb\xc8\x42\xc9\x63\xb2\x11\xf8\xc7\xdc\x40\xa6\xc1\xc2\xb5\xd5\xac\x07\x2a\xcd\xdd\x2a\x6f\x47\xe2\x95\x00\xbb\xfa\x4a\xe0\xd9\x1f\xf2\xa8\x0d\xb5\x21\x5d\xc6\x04\x42\x9d\x5e\x93\xf6\x5e\x5d\x87\x0c\x24\xbb\x5e\xf7\xd1\xf0\x13\x89\x2a\x4a\xb6\x13\xc6\x00\x7b\xfb\x21\x3a\x11\x6d\x53\x9b\xac\xfd\xb4\x19\x8e\x26\x66\x02\x75\x70\x06\x21\xf1\x51\x39\xe5\xa7\xb2\xcd\xc6\x41\x2e\x66\xae\x23\xb7\xb8\x3d\x6e\x45\xbf\xb5\x96\x4a\xb6\x2b\x55\x5a\x7c\x5d\xfb\xf3\x41\xa6\xbb\xd3\x27\xab\x54\x6f\x45\xb6\x5b\x0e\xcc\x7d\x1a\x5f\xbe\x5c\xf6\xbc\x9e\x38\xca\xa8\x85\x74\xc0\xaa\xe0\xca\xe4\x38\xac\xbe\x3e\x37\x3e\x8a\x36\x91\xfd\xb9\xf7\xe6\xf3\x4d\x0b\x40\xa8\x4f\x1a\xa2\x9a\xde\x81\x82\x94\xa3\xd8\x02\x06\x5c\x7e\xf6\x30\xfe\xb2\x81\xfd\x42\xa6\xc5\x4f\xb1\xd4\x00\x47\x8a\x8a\x6e\x27\x36\xa3\x86\xa2\xec\x55\x0b\x11\x13\xa8\x18\x3f\x41\x00\x09\x8e\x41\x03\xfc\xa7\x69\xe4\xcd\x22\xa5\x8f\x24\xa3\x03\x15\x46\xdd\x65\x42\x3f\x09\xd3\x09\xf6\x09\x7a\x3c\x05\x03\xe0\xe0\x96\x68\x1a\xa2\xaa\x6a\xea\x56\x26\xcb\x45\x59\x62\x7b\xa8\x79\x82\xb7\xbe\xaf\xf1\xbe\x56\xdf\xdb\x2e\xae\xbb\x22\xed\xd8\xc7\x7f\x1f\xa9\x72\xea\xa5\x71\x10\xca\x79\xe4\xb3\x79\x29\x29\xc7\xd6\x3d\xb1\x4f\x77\xdd\xc9\xde\xea\x21\xda\xe9\xf7\xeb\x58\x99\xae\xcf\x0a\x4f\x95\x30\x84\xe7\xe7\xe4\x7e\x51\xff\x04\x60\xf1\xd6\xde\xc4\xe6\x5f\x67\x9b\xfa\xd7\x12\x21\x96\xe1\x2f\x79\x31\x2b\xb3\xfd\x5e\xaf\x68\xe6\x63\x4d\x07\xea\xd4\x44\x6b\xad\x45\x89\xd6\x38\xfe\x91\xda\xf4\xda\x66\xc1\x8b\x1e\xe2\x62\x65\x69\xb3\x3a\x39\x5d\x6a\x0f\x00\x8d\x48\xec\x32\x87\xbc\x85\xff\xb1\x4b\xc0\x0d\x42\xb3\x9b\x63\xf5\x64\xf7\xbd\xb4\x6e\x52\xe5\x37\x7c\xa8\x01\xca\x6b\x9a\xb8\xa9\x0f\x0e\x98\x09\x0c\x9b\x99\x44\x67\x6f\x2a\xad\x5c\x92\x79\xc8\xf9\x7a\xb1\x3e\x68\xc5\xaa\xa8\xad\x88\x73\xf2\xbe\xa8\xd1\x55\xb3\xad\x74\xb6\x61\x01\xf5\x8c\xce\x24\x15\xb8\x59\x57\x6e\x43\x23\x36\x2c\xce\xa9\x37\x9c\xe0\xef\x21\x34\x1e\xc8\x7b\xe8\x89\x93\xc5\x77\x1f\x77\x18\x44\x7e\x87\x4c\x7f\x36\xce\x35\x00\x0f\x93\xdb\x84\xa2\x75\xab\x1c\x51\xd3\xe7\x85\x4f\xb3\xe9\xc9\x1f\x4d\x56\xeb\x4d\x07\x9f\x42\x61\xa7\xcd\x45\x60\x1f\x25\x4e\x04\x4a\xf5\x0e\x5d\x72\xdf\xa5\x87\x29\x2a\xd9\xba\xde\xed\x60\x20\x81\x38\x82\x69\x9f\xd1\x7a\xd2\x91\xc4\x36\x5e\x9e\x4a\xa5\x3b\xea\xe4\xfe\x09\xbd\xf2\x3e\x14\xd4\xcd\xab\xfe\xaa\x5e\x7a\xd9\xf3\xa3\xa1\x7c\x79\x2c\x54\x3d\x7d\x26\x2f\x1f\x3f\x7c\xea\xb3\x17\x57\x45\xa6\x7e\x29\x55\xcf\x33\xbe\xee\x2a\xf8\xbb\x5f\x61\x79\x10\x89\x58\xad\x2e\xb9\x5f\x6a\x38\x3e\x9e\x78\x9d\x58\xcb\x3d\xf4\x9b\xfd\xf8\x63\xb5\xfb\x4a\xd2\x08\x4d\xc1\x63\x46\x02\x63\xa8\x77\xee\xce\x90\xc7\x73\xbc\x7d\x87\xfb\xa7\x35\xdc\x2f\xbf\x2b\x02\x8b\x49\x52\x01\xff\x70\x2e\xd6\xdf\x15\x62\x9a\x87\x4e\x60\x65\x82\x2e\xaf\xfa\xa2\xc3\x92\x15\xf9\x8d\xc8\xec\xe4\x90\x8a\xcb\x94\xf2\xad\x3a\x56\xd3\xec\xb6\x39\x9a\x2f\x99\xf3\x16\x95\x48\xd7\xef\xa9\x76\x7b\x8c\x22\xd3\x54\xb6\xd8\x29\xcb\x7e\xef\xba\xa1\xd7\xe9\xb4\x54\xb8\x8d\x96\x42\x83\xdb\x1a\xa1\xcc\x2b\x0b\xcb\x62\x71\x1e\x2f\x08\xd3\x69\x7e\x9a\x17\x17\xe0\xd9\x38\x2d\x33\x32\x13\xab\x13\x5b\x1f\xac\x47\x4d\x5e\xb6\xb8\x25\x91\x68\x05\x3c\x18\x2d\xce\xe0\x21\xa1\x81\xcd\x86\x18\x73\x17\x50\x8c\x84\xcc\x0b\x0a\xbc\x4c\xb9\x3d\x54\xae\xcd\xe0\x4c\xe9\x0e\xed\xd0\xed\x7c\xf0\x5f\xb7\x30\xf4\x49\xff\xc7\x74\xb4\xf8\x06\xba\x2d\x9b\xf3\x35\xfb\x26\x6d\x87\x41\x10\x19\x98\xc1\x65\x58\x73\xff\x17\xd3\xd7\x8a\xf5\x40\x54\x4c\xc1\x4e\x33\x93\x86\xda\x63\xc8\x8b\xba\x0b\x29\x37\xa1\x9b\x83\xfa\x98\xa6\x5c\x6c\x22\x73\xad\xee\x82\x06\xfb\x99\x5d\x82\xec\xe3\xf5\x58\x0e\xe3\xb9\x2b\xb2\x70\x70\xa5\xcc\x76\x3e\x41\x34\x0c\x18\xc7\xca\xd9\xce\x52\x88\x2f\xc6\x18\xfd\x76\x2e\x7f\x52\x65\x3c\x54\x4c\x91\x3a\x82\x21\xb8\x51\x15\x44\x2d\x24\xde\xe9\x46\x1e\xa0\x4f\x22\xf4\xa6\x59\x77\x46\x50\x04\xa0\x0f\x1c\x0b\x25\x39\x7b\xfe\x77\xda\xf8\x39\x2b\xd5\x30\x2e\x8f\x27\xba\x40\x04\xc5\x04\xe3\xc2\xe4\x7a\x88\xcb\xd3\x55\x85\xd4\x6c\xb4\xe8\x70\x59\x8e\x71\x47\x70\x68\xf3\x82\x75\xbb\x55\x3d\x06\x62\x01\xcf\x69\x82\xba\x2b\x29\x57\xd5\x9c\x22\xfa\x67\x08\x48\xea\x75\xf7\x77\x95\x88\xe7\xfa\xf5\x5c\x3b\xb0\xe3\xdc\x60\x1c\x19\x8f\xa3\x42\xec\xb3\x78\x0d\x06\xd8\x2a\x5e\x9e\x46\x9a\x60\xf4\x0e\x4c\x80\xb3\xb0\x7f\xd3\xb8\xdc\xf2\x08\xa5\xb8\x5b\x15\x41\xb8\x7d\x41\x89\x4c\x24\x52\x81\x6d\x9d\xdb\xc6\x0a\xc5\x28\x53\x82\x13\xcc\xcd\x40\xe7\x59\xb4\xc6\x1d\xfa\x7a\xf7\xb5\xa3\xb0\xd8\xa4\xa5\x76\x1a\xf5\xb3\xc3\xd2\x4c\x9b\xd0\x94\xc5\x8f\xdb\xd3\x58\xe2\x4d\x36\xb5\x8e\x6c\xca\x16\x21\x51\xdb\x3c\xc8\x63\x9b\x9e\xf4\x95\x31\x05\xe4\x81\xcf\xb1\xe1\x4e\x34\x33\x02\x8e\xa6\x99\x38\xe5\x16\x66\xcb\x79\xc1\xd9\x60\xe2\x29\x0c\x92\x62\x07\xc1\x4e\xa3\x03\x5c\xef\x27\x51\x55\x53\xae\x3f\x45\x14\x64\x88\x80\x9d\xee\xa0\x2f\x8b\x6d\xd8\x77\x11\xbb\xfc\x6d\xb4\xd1\x25\x23\x0a\xd0\xd7\xd8\x1e\x46\x64\x08\x6c\xff\x1e\xf5\xee\x37\xfe\x5c\xd7\x20\x8f\x6f\xba\xdc\x99\x89\x0c\xe9\x2f\x59\x9d\x40\xcf\x6a\xb1\x40\xa8\x92\x3d\x7f\xd0\x4f\x5b\xc0\x99\x47\xce\x6f\xa4\x9c\x87\xfd\xdc\x07\xe7\x5f\x3d\x66\xff\x56\x64\x37\x78\xd0\x9a\xae\x84\xf3\xa7\xdc\xc0\x75\xc7\xc8\x20\x2f\x83\xf8\xa7\x81\x58\xc5\x21\xed\x84\x6e\x15\x3d\xee\x42\x53\xd1\x16\xca\xee\xe1\xde\x42\x51\xfa\x57\x18\x4b\x42\xcf\x24\x93\xa3\x21\xb5\x21\xbd\x7e\xf4\xa8\xe6\xc3\xaa\xdb\xf2\x64\x58\xe0\x1d\xbb\x57\xf6\x03\x32\xc9\xaf\xb9\x60\x15\x81\x0c\xfd\xb9\xd6\xad\x40\xae\x3b\x44\xa7\x4c\x57\xcf\x29\xb2\xcd\x3a\x0f\xec\x13\x90\x00\x74\x12\xec\x41\xc6\xcb\xea\x7b\x35\xb6\x2e\x6e\x5e\xdf\x7d\xdf\x7e\xb9\xeb\xf8\xff\x04\x19\xd4\x51\x0a\x79\xed\xaf\x72\xdd\xc1\x57\xff\xe1\x71\x2b\xab\xb8\x4f\xdf\x44\xd1\x89\x79\xf8\x8c\x69\x68\xe0\xf1\x2f\x3a\x54\x3c\xc1\x0c\x22\x78\x9e\x30\xe8\xa7\x6d\xcb\xe9\xc3\xd0\xfd\xc9\xe7\x01\x10\x3d\x45\x38\xd7\x9b\x60\xb7\xe2\xf8\xaa\xf6\xd3\xe4\x0f\x1f\x51\xce\xc0\xa5\x99\x76\xdd\x8b\x0d\x60\x3c\x9a\x29\x9f\x9c\x6b\x7f\x92\x2f\x93\x00\xfb\xf6\x27\xb9\x9c\xb0\xf6\x15\x1c\x45\x16\x91\xf7\xee\xf7\x66\x41\xd8\xf6\x56\xac\x3f\x1f\xc1\x05\xdb\x87\x86\xd6\xc6\x58\xd2\xb1\x92\xcf\x95\xa8\x0e\xb7\x36\xa7\x71\xaf\xc7\xc1\x4b\x6a\x3c\x78\x69\xe5\xe2\x86\xab\x33\x95\xe6\x32\x46\x7a\x4b\xbd\x6f\x93\xd3\x17\x0e\xc3\xf6\x58\xf7\xd2\xf6\xa8\xaa\xec\x18\x6a\x8f\x73\x6f\x3a\x50\x98\xf8\xa9\x27\x87\x10\x89\xab\xcf\x76\xe2\x56\x67\x05\x45\x51\x9d\x4f\x33\xc2\xa6\xb1\xf5\x06\xbb\x8c\x6b\x11\xcd\xbf\x67\x8a\xbe\x85\x76\xc5\x00\x79\xa8\x32\x8c\xed\x3a\x19\x9f\x3d\x55\x4e\x2a\xe5\x60\x92\xd0\xe2\xed\xe7\x75\x6f\x1e\x4f\xc9\xc8\xbb\xcb\x9b\x7f\x1e\x58\x96\xa9\xf1\x82\xa1\xc6\xfd\xa3\x2a\xe5\x54\x96\xbb\x08\x7d\xe1\x01\xe6\xb8\x61\xaf\xc4\x53\x5c\x03\xd9\xef\x2a\x28\xf5\x50\x65\xcb\xda\x1f\xac\x7d\xd6\x2d\xfd\xda\xa7\xc8\xec\x11\xf4\x8b\xb9\x47\x18\xc7\x7a\x55\xbf\xe6\xe4\x2d\x28\x26\x6f\x0e\x55\x26\x8f\x3b\x4a\x18\xea\x6a\x3b\x64\xc1\x42\x11\xaf\x4a\x3e\xec\x9d\x8f\xea\x2f\x81\xda\xae\xf8\x69\x83\x78\x40\xd5\x14\xf5\x75\x9d\x40\x1d\xef\x84\xce\x5b\x2e\xf4\xba\x84\x65\xca\xe6\x03\x2a\xdb\x94\x33\x02\x9b\x1d\x61\x5d\x97\x63\x7a\xb4\xea\x9f\x4d\x62\xdd\x2c\xa9\xa4\x00\x66\xb0\x0e\x4e\x7f\x62\x67\x91\xa0\x9c\xf5\x9c\xdd\x9e\x8f\x77\x71\x50\x99\x23\x10\xea\x21\x43\x0c\x3c\x55\x7e\xc8\x12\xbd\x05\x2f\x92\x6b\x4e\xff\x9d\x03\x5e\x9d\x1a\x1b\x72\x2d\xda\xdf\x65\xec\xd7\x20\xcb\x60\xdc\x90\xe9\x51\xea\x4e\xb2\x1a\x48\xc4\x4d\x59\xc6\xfd\x75\x7f\xd9\x20\xcb\x3e\x6a\x14\x0a\xea\xcf\x88\xc3\x8f\xed\xbe\xe6\x1a\xbe\x61\x2d\xc0\x8e\x53\x33\xf1\xe4\xd0\xe1\x2c\x5b\x48\x14\x6d\x5b\x52\xa5\xdc\x70\x30\x99\x68\xc9\xc2\xeb\x90\x91\x1d\x2c\xe5\x21\x69\x6d\x6d\xd3\xba\x84\xd2\xb8\xe2\x8c\xdf\x63\xa9\x24\x4b\xb9\xac\x21\x36\x49\x92\x26\xb8\xda\x99\x52\xdd\xa5\xc4\x6a\x9f\x48\xa7\x6a\x5d\xdd\xee\xcb\x13\x2c\xae\xf2\xde\xaa\x80\xda\x0f\x28\x02\x0f\x35\x4b\xad\xf5\xb6\xc8\xbc\xc9\x42\x91\x7d\x9e\x81\x6d\xac\xfa\x02\x9c\x92\xeb\x72\x36\xfb\x3d\xd6\xfb\xcb\xde\x74\x33\x14\x00\x9e\x58\xf7\x3e\x9b\xb0\x3b\x53\x46\x1c\x4d\x6a\x9f\x53\xc9\x7c\x07\xa4\x46\x49\xbe\xb9\xc3\xf9\x33\x9c\x6c\x10\xa4\xee\x76\x9d\x38\xd6\x5b\x7f\x37\xf8\xa6\x64\x23\x06\x95\xb2\x1a\xab\xf0\xa8\x3a\xd9\xe0\x53\xfc\x29\xc5\xf9\x93\xa1\x50\xf7\xcb\x50\x75\xdb\xb3\x43\xb1\x88\x1c\xef\x51\x7a\xcc\x8b\xbb\x91\xf8\x0a\x4d\xc4\xc6\x3f\x58\x1f\x7f\xd9\xb8\xa3\x84\x84\xa8\xc5\x15\xa6\x33\xf9\x52\xf3\xa7\xcd\x70\xe8\x87\xb9\x01\x9b\xfa\x68\x82\xdb\xf0\x07\x20\x9f\x71\x2d\x8d\xb4\xd7\x81\x2a\x9c\x7a\x4d\xa4\x8b\xc2\x02\x80\x4d\xd5\x54\x75\x5e\x57\xb4\xf4\x3f\x65\x80\xa7\xf2\x55\x06\x0c\x0b\x21\x55\x0a\xa5\x18\xd9\x39\x54\x6b\xa6\x09\xd4\x73\xde\x10\xb8\x8b\x74\xbf\xdd\x13\x6a\xcd\xa4\x1a\x7f\xae\x6d\xb1\xa4\x23\xa8\x45\x92\xb6\xa3\x12\x41\x19\x00\xae\x12\x3d\xf3\x3b\xb4\x9b\x54\xbc\xf2\xbe\x2b\xa1\xd1\x50\x38\x8d\x74\xab\xc3\x65\x29\xf7\xe8\xd7\xda\xeb\xe0\xe8\x96\x5d\x06\x6f\x0a\x70\x20\x96\x7e\x83\x3a\x49\x73\x9a\xa7\x8e\x56\x2e\x09\x0b\x9d\x0f\xf1\x6c\x22\x9e\xff\x9b\xf3\x39\x4d\xa2\xca\x9a\x5d\x4c\x55\xbc\xb7\x1c\xbb\xdc\xf6\x9d\xdc\x8f\x4b\x4e\xdc\xf5\x92\xcf\x63\x96\x4e\xcf\xf7\x8f\xcc\x7c\xf0\x7c\xeb\xfd\x2d\xb3\x67\xc6\x69\x08\x49\x30\xbf\xa1\x53\x01\xc8\x91\x6e\xd0\xd4\xb6\xd1\x34\x67\x58\x5b\x81\xd9\x10\x65\xa6\x6c\x65\x5d\x51\x9e\x37\x0d\x33\xa9\x57\xa0\x66\x8b\x37\xdd\x68\x67\x36\x0e\xb9\xbc\xe0\x8a\xb1\x6f\xf9\x5a\xaf\x39\x4b\xf8\x9b\xb8\x33\x40\x31\x2f\xd0\x51\x2d\xf2\x23\x0f\x30\x24\x1a\x6d\x8b\x46\x92\x54\xed\xe6\x77\xaf\x8f\xee\xd0\x27\x36\xf6\x04\x4f\x17\x44\xaf\x27\x63\x14\x4f\xe4\x32\x25\xbf\xe6\xe0\x58\x0c\xcf\xa4\x96\x9e\x53\xe7\x2e\xd6\x19\xc5\xb1\x12\x59\xa7\x28\xe4\x0e\xbf\x63\x1f\x21\x44\x3a\x3e\xf1\x58\x33\x86\x47\x0b\x3f\x6f\xdb\x71\xac\xfc\x4e\xe6\x9c\xfc\xca\x43\xbb\xa4\x65\x33\x95\xa3\x61\x14\x22\x97\xbc\xce\x98\x90\x49\x1a\x95\xd8\xfc\xd5\x34\x4e\x50\xa0\x01\xbd\x67\xf3\x05\x2a\xe5\xfc\x71\x48\x0f\x0c\x0b\xbc\xd0\x6b\x9f\x2f\x94\x7a\x8b\xad\xe4\xa9\x6b\x38\x28\xa7\x37\xb1\x60\xb2\xa0\xb7\x21\xa6\x1a\x53\x6f\x2a\xa7\x6a\xf7\x9b\x4f\x29\x4b\xdb\x5a\x27\xfb\x5e\xcf\xc5\x5c\x9e\xce\xa4\x8b\x63\xc5\x81\x09\xb1\x30\xfb\x49\x0d\xf5\x37\x89\x77\xc1\x56\x58\xbc\x2e\xb2\xc1\x37\xf7\x6b\x4d\x85\x48\x83\x87\x4d\xde\xa2\xbd\x2f\xfd\x6f\xe5\x2a\x7f\x8e\xfd\x23\xcb\x9f\x72\x70\xe1\x58\x49\x22\x54\x14\xb5\xa0\x7e\x37\xc6\x17\xb5\x48\x92\x2d\xdc\xc1\x25\x15\xbf\x9f\x2b\x53\x8e\xcf\xa7\x48\x9c\xe5\xbb\xc1\x65\x50\xd3\xc6\x80\xff\xb1\x2e\x4e\xd7\x32\xae\x4e\x9e\xe2\xba\x4a\x99\x4a\xfa\x8a\xc3\x9b\xb8\x2b\x34\x9f\x28\x15\xa5\x91\xab\xa5\x41\xd2\xcc\x18\x94\xd8\xf6\xe6\x19\x99\x15\x5e\x2e\xab\x37\x2d\xd6\x40\xdc\x00\xf8\xb8\xd0\x08\xa1\x6d\xa6\x9f\x70\x30\x6a\x83\xe0\x15\x8d\x67\x93\x84\x83\xee\x27\x34\xb8\xcc\x4e\x28\xea\x1a\x57\xcd\x1b\xe5\xd1\xfa\xe6\xc0\x0a\xfe\xc6\x02\xe5\x24\x24\x47\x58\xd3\xd2\xc4\x77\xcd\xb1\xfc\xf9\x5c\x13\x8b\x98\x2b\x1e\xb5\x16\x59\x73\xc2\xbb\xb5\x78\x7d\xf0\xf5\xc5\x79\x0a\x53\xb4\x30\x27\xc6\x5f\x92\x79\x3b\xd1\x2e\xd8\x7b\x4f\xe5\x2a\x7b\x7c\x82\xe7\x60\xc9\xb2\xe9\xf7\x9e\x2c\xac\x6c\x30\xca\x81\x9d\xb4\xb3\xe1\x1a\x5f\xd5\x6e\xc7\xb7\xb5\x14\x46\xa9\x20\xa8\xbe\x5a\xbb\xd3\xa5\x6a\xae\x07\x84\xc7\xb2\x0a\xbd\xf2\xdb\x67\x02\x0c\x14\xb1\x90\x0f\xac\x06\xd1\x6e\x79\x14\x14\x52\xaf\x1b\xd2\xf3\x12\x99\x4d\xef\xad\x3c\x7d\xa8\xd8\x0f\xa2\x0d\xef\xa2\x8c\x1a\xbe\x83\xb4\xd9\xaa\x8c\xdc\xa4\xa8\x6a\x79\x0f\x7f\x4c\x5b\xe5\x71\x67\xdb\x85\x05\x73\x09\x44\xff\x10\x1c\x80\x84\x90\x0a\x61\x6a\x4c\x33\x1e\x31\x12\x7b\x83\x53\x6a\x55\xbc\xcd\x88\x3d\xe1\xb1\x2d\x32\x95\x21\x82\xf0\x23\x58\xb4\x37\x34\x61\x35\x99\xb1\xeb\xe6\xed\x62\xc5\xa0\x67\xfb\x8b\xd4\x47\xfd\x9f\x36\x97\xab\xac\x66\x7d\x62\x9d\x7c\x50\x72\xb1\xa7\xbb\xff\x6e\xc3\x99\xc8\xcb\xc3\x73\x7c\x4e\xdc\xf3\xfc\xe3\x93\x69\x5d\xc1\x66\x2e\x0b\x72\xad\x13\xe7\x28\xed\x28\xb8\xf5\x7b\x3a\x36\x33\xc1\x09\xeb\x42\x6f\x6b\x05\x6c\x40\xd2\xf1\x6c\xb7\xac\xf7\x65\x6c\x96\xbf\xee\x6c\xbb\x8f\x4f\x2c\xf3\x6a\x64\xae\x34\xae\xab\x29\x83\xe0\x91\xf7\x6b\x93\xeb\x73\x5d\xda\xb1\x45\x99\x9f\x62\xce\x0e\xba\x43\x01\x25\x01\xe7\x14\xa5\xce\xe4\xbc\xd5\x9e\xc1\x2d\x7c\xef\x5d\x7a\x0f\xde\xa8\x56\xac\x4e\x92\xf1\xdb\x7b\x10\x2d\x31\x19\x19\x5c\xa0\x4c\xb1\xa0\x64\x0a\x6f\xf5\x9f\x1a\xec\x78\x05\x4b\x8e\x43\x5f\x0f\x58\x18\x5a\xc5\x95\xe8\xa0\xee\xa7\x9f\x72\x5b\x4e\xe2\x20\xbf\x75\xe4\xff\x33\x96\x9e\x05\xe8\x7e\xde\xcd\x23\x2a\xef\xf6\xe8\xd0\x0b\x3e\xd2\xc3\x15\x06\xd6\xee\x60\x5d\xbe\x7d\xdc\x73\xd6\x83\x14\xc2\x43\x06\x40\xc9\xcd\xdc\x22\x45\xc8\x40\x6a\xed\x82\x84\xd2\xd9\x71\x52\x05\x40\xea\x6b\x3e\xc9\xe8\xd6\xf6\xb5\x23\x79\x3e\x40\xda\x0b\xa9\xb9\x9d\x7e\xf6\xa0\xd8\x74\x02\x58\xdf\x6c\x0f\x38\xdf\xc1\xf1\x54\xba\x19\x3d\xbe\xf7\x44\xec\xe6\xfe\x34\xe8\xfc\xce\xd0\x03\xee\x83\xfc\x86\x9d\x1f\x8d\x3a\x7f\xe9\x1a\x7a\xc8\x91\x70\x01\x28\xa3\xd4\xb8\x59\xca\x81\x03\x52\xa1\x00\x20\x76\x6f\x7f\x29\x3a\x43\x9d\x4f\x50\x29\x58\xaf\x5f\x6a\x7c\x14\xf7\x25\xf7\x1d\xef\xf6\xd9\x51\x0a\x6e\xb6\xa5\xb7\x83\x88\xe3\x5f\xa7\xff\xdb\x33\x58\xf0\x47\x5c\xfb\x3a\x43\x42\x5e\x6a\xd7\x62\x47\x7e\x58\xd9\xde\xde\xd5\x6e\xda\x54\x57\x1c\xf7\xbc\xa1\xed\x9a\x65\x0c\x86\x4d\x88\x7a\x40\x40\x46\x18\xc7\x7b\x8b\x6c\x18\xb7\x48\x63\xa8\x7a\xb9\x0a\xf0\x6a\x54\x48\xa7\x63\x11\x5c\x8b\xa2\x8e\xb8\xe8\x67\x26\x1e\x86\x6d\xc4\x13\xd5\xab\xb8\x5c\x81\x0a\xfe\xad\x0f\xb3\x79\x3a\x14\xee\x29\xdc\x1a\x5e\x40\x74\x2f\xc7\xbd\x03\xba\x26\x6f\xdd\x42\xe6\x48\x64\x50\xdb\xd3\xfe\xdc\xc7\x2d\xe0\x92\xc9\x42\x46\x11\xa9\x6a\x90\x7d\xb4\x1d\x00\x07\x90\xd1\x77\xde\xdc\x9f\x0e\x88\xd5\x42\xf3\xea\x37\x38\x47\x74\x02\x07\x13\x95\x94\x38\x84\xc9\x57\xed\xdd\x14\x58\x35\xf9\x67\x7d\x55\x29\xbb\x81\x49\x19\xd6\x65\x92\x64\x19\x40\x74\x03\x1c\x76\xb4\x63\xe5\x63\x5b\x5a\x48\x3c\x05\xaf\xfc\x00\x0d\x76\xef\xa3\xf1\xd1\x98\x31\xc5\x45\xc8\x5d\xe6\x8c\xde\x0e\xc2\x77\xab\xef\xc6\x5a\x2c\xb9\x11\x52\xf6\x2b\xc8\xe7\x8b\x23\x10\xba\xa2\x7b\xf0\xdf\x3f\x6f\xb1\xdc\xd2\xca\xcf\xa3\x0f\x35\xa0\x9f\x24\xf4\xe4\x3a\x39\x2b\x27\x1b\x77\xee\x68\x58\xf0\xa3\x91\xc4\xb2\xcb\x5e\x1f\x2d\x5a\x53\xfd\x0e\xa9\xf5\x09\xac\xef\xcf\x75\xe7\x45\xf9\x80\x88\x92\xd7\x7f\xd3\x5f\x19\x86\xde\x55\x27\xf9\xe4\x1c\x4a\xb6\xc3\xac\x3c\xbf\xfc\x1b\xe8\xe0\x4b\xdc\xe5\x77\xc4\xd3\x9c\x45\xcf\xc9\xbf\xd6\x8b\x21\x2d\xe3\xa4\xaa\x16\x84\x82\x65\x32\xdf\xa5\x52\x65\x6b\x5f\xa9\x27\x14\x84\x0c\x8e\xc0\x68\x24\xe5\x61\xa1\x1d\xbd\x23\xc0\x22\x4a\x7c\x8a\xd6\xa4\x98\xde\xe9\x44\x64\xec\x20\xf4\xdd\x6b\xdc\x44\x3a\xba\x98\x71\xe3\xa4\x51\x2f\xa0\xe6\x98\xf1\xbb\x0b\xb8\x79\xff\xd8\xd2\xb1\xef\x88\x05\x1f\x9a\x31\x7b\x85\x77\x61\x45\xe3\xf4\x83\xbd\xc0\x32\xa1\x5a\xb0\xf6\xd3\xb1\x8f\xf2\xa7\x71\x6a\x07\x08\xb6\xbe\xc3\x06\x8b\xcd\x3e\x9c\x40\x59\x3d\x5f\x99\x09\x72\xc7\x4f\x73\xe8\xb3\x7b\x2e\x78\xed\x1b\x10\x37\x63\xf5\x03\x97\x4f\x28\xb7\x3e\x97\x1f\x85\x85\x58\x85\x1d\x22\xc5\xf1\x2f\xe2\x53\xc7\x98\xb1\xb7\xa3\x8a\xed\x24\xf4\x5e\x06\x2e\xc5\xa6\xa5\xa7\x62\x08\x0d\x91\x7b\x9e\x16\x7a\x46\x0e\x88\x35\xda\x49\x3c\x5d\x78\x59\xa2\xcb\x37\x1a\x36\xca\xc4\x43\x70\x26\x68\xeb\xdc\xe6\x39\x99\xfe\x55\x53\xa9\x60\xb8\xd9\xc2\x83\x28\x9d\x79\xb0\xfb\x03\x47\x5e\x02\x4d\xc1\x36\x95\x3e\x9d\x24\x3e\x9b\x53\xc1\x92\x37\x60\x23\xf7\xcb\x47\x9c\x50\x39\x66\x4b\x47\x5a\x5e\x24\x01\x2f\x48\x05\x92\xc7\x29\x41\x9d\xea\xcb\x83\x92\xb0\xd1\x7e\x61\xef\xaf\x24\x10\xe2\x0c\x96\xf6\x72\xed\xaf\xf2\xdc\x2e\xe5\x85\xe6\xfd\x76\xf5\x4e\x7e\xd4\xf6\x90\x63\xfd\x9a\x57\x0d\x4a\xea\x91\x5d\x2f\xb2\xa2\x7d\xb9\x56\xd3\x32\x6f\xf4\x2b\x0e\x42\x70\xf2\xe1\x94\x82\x99\x41\xf1\x71\x26\x0c\x38\xa3\x00\xe6\x58\x30\x0a\xb2\xee\xab\xb9\xf6\x91\xc5\xb2\x6c\xfe\xd2\x22\x80\xdf\xef\xe1\xb8\x05\x88\x1a\x9c\x85\x71\xc5\xa2\xa7\xad\x66\x78\x94\x44\xa1\xa5\x8f\x1b\x6e\x46\xe3\x73\x07\xd7\xc0\x88\xec\xbc\x50\x89\xf3\x2e\x8b\x5c\xb6\x05\xa0\x17\xff\x97\xa1\xf0\x1d\x6b\x9b\x23\xca\x38\x72\xfe\xf5\x96\x1f\x87\x21\x1a\x16\x4d\x38\x0e\xdf\x96\x8d\xf0\x36\x47\x88\x17\x32\x2d\x21\x43\x63\x5e\x0a\xe4\xa8\x7f\xa1\xa5\xd7\x6b\x97\x85\x3e\x42\xed\x42\x6d\x35\x64\xdf\x86\x88\x56\x4c\xd1\xee\x20\x84\xc0\x5a\xb2\x58\xfc\x3f\x0b\x6b\x0a\xba\xce\x88\x9d\x90\xb2\xf9\x4c\x66\x0e\xdc\x37\x3b\x75\x55\x09\x4a\x22\x69\x51\x21\x34\x86\xf2\x61\xa3\x0a\x6d\x58\xdd\x4a\x4b\x16\xbc\x04\xb9\x52\x3c\xae\xa9\x51\xd0\x76\xc8\x06\x78\xf1\x7a\x18\x3a\x78\x31\x7b\xaf\x71\x1f\x81\x0e\x84\xd9\xd7\xa6\xae\x7a\x02\x63\x75\x79\x02\xbd\x4a\x9d\xbb\x51\xb0\x80\x27\x29\x80\xf2\xaa\xa6\xb4\x53\x09\xbe\x6c\x90\x25\x1e\x59\xa2\x33\x4f\xf3\xc0\x09\x64\xa9\x44\xc5\xe4\x9e\x48\x34\x4b\x8c\x87\xf1\xc1\xfe\x38\xba\xeb\x1d\x6a\x11\x8a\xd9\x3e\x75\x7d\x12\xc7\x90\xe9\x62\x11\xa5\x44\x91\xf0\x94\x93\x54\xf4\x72\x9d\x89\x83\x98\xaa\xed\x22\x72\x21\x63\xee\xb5\xaf\x8e\x19\x43\x01\x93\x8d\x44\xf4\x08\xd1\x6c\x09\x03\x98\x44\x4b\x2b\x55\x74\xd5\x10\x25\xa8\xf2\x64\xdf\x5c\x1e\x03\x63\x6d\xec\x0e\xc4\x4c\x13\x09\xa3\xcb\x56\xdc\x31\x9a\x9b\x5e\xc8\xd7\x26\xb3\xb0\x25\x85\x39\x94\x0e\xd7\x92\x56\x11\x4f\xe5\x0c\xf8\xaf\x9b\x38\x35\xf7\xc9\x42\x46\xe7\xb3\x90\x5f\xeb\x00\x4c\x34\x83\x90\x38\x32\x81\x70\x11\x8b\x87\x9c\x2c\x2e\xd0\x18\x4d\x2d\x96\x17\x75\xd8\x68\xe2\x52\x32\xc6\x87\x21\x1d\x01\x13\x7a\xff\x08\x42\x6a\x44\xfa\x7d\xc4\x8e\xb4\x06\x85\x39\x47\x9c\x00\x3b\x1d\xd8\xd8\x37\x5a\x46\x24\x0f\x27\x73\x11\xf6\x95\x49\x52\x78\x8d\x6d\x86\x2b\xf2\x9b\x62\xc8\x29\xea\xae\x9d\xe4\x43\xd3\x2b\xdc\xb3\xbb\x70\x29\xd0\x36\x21\x4b\x3f\xe5\xde\x72\x22\x35\x77\x32\x73\xd0\x88\xb3\xaa\xe6\xdd\x8c\x19\x64\x9f\x7e\x0f\xdb\x27\xb1\xc7\xd3\xd2\x91\xc1\x36\x1d\xad\xb6\xe0\xc9\xf7\xb3\x2b\xe5\xb8\xe0\x70\x85\xcf\x91\x72\xb9\x96\xf1\xad\x4e\x71\xd1\x7d\xd5\x72\xb8\xbf\x82\xa4\xa1\x59\xb5\x51\xec\x03\x6b\x0a\x0b\xc6\x85\x62\xe2\x9d\xd0\x43\x5d\x0c\xb3\xa8\x37\x56\x1a\xff\x74\x3b\xe3\x8e\x68\x57\x75\x99\x9d\x69\x45\x3f\x77\x7a\xf2\x5b\xe1\x8c\xb6\xb0\xe8\xd8\x61\xd2\x3e\xd0\x50\x8e\xee\xa1\x71\x84\x49\xf0\xa8\x51\xe5\x47\xcf\xde\x00\x53\x39\x2c\xb4\x74\x89\xbb\x46\x32\x50\x84\x17\x3a\xaa\x23\xb7\x0a\x5b\xbc\x4e\x0f\xc1\x5d\xd4\x4e\x9c\x2e\xc2\x22\x13\xef\xad\xac\xc1\x7a\xc5\x4a\x20\x06\x97\x32\x5f\x77\x26\x30\xa6\x42\xd3\x7a\x86\x35\xd8\x45\x9c\xb4\xb3\x56\x9e\x4f\xf6\x38\x56\xe7\x75\xd8\x9e\x0f\x55\x6a\x09\xa2\x28\x22\xa5\x1b\x4f\x6b\x2c\x2f\xdc\xe7\xfa\x61\xa3\x6b\x89\x88\x4d\xa0\xc2\x05\xa3\x18\x2d\xab\x4c\x34\x09\xc0\x18\x38\x69\xb2\x78\xad\xbd\x0a\xa2\xe9\xc0\x42\xed\x82\x05\xc3\x5b\x96\x1f\xa9\x87\x5d\x68\x36\x7c\x8c\xb4\xd8\x9d\x75\x68\xe2\xfe\x87\x34\x90\x3c\x57\xfa\x79\x2e\x10\x74\x93\x8b\x50\xae\x83\x02\x71\x52\xc5\x30\x90\xe1\x88\x69\x29\xc3\xb4\x64\xe8\xcb\x3e\x6a\x49\xfb\xd4\xfa\xaf\x32\xa0\x50\xe2\xa8\xac\x97\xa8\x1f\xbb\x45\x39\x5c\x33\xe5\x1b\x33\xd7\xb1\x24\x3d\x47\x29\xa9\xbf\x27\xa6\x1d\xd7\xac\xba\x8a\x26\x13\xf7\x9d\x10\x8e\xb0\x1a\xb1\xa4\xdc\x6a\x5a\x19\x13\xc0\x99\x1a\x78\xc9\x4e\x5b\xc7\x66\x93\x16\x1b\xd7\x85\x96\x8a\x8f\xd4\xa5\x2b\xe9\x26\xf2\x41\x94\xef\x7e\x31\x14\xdd\xa0\xa7\xbd\xd9\x93\xdc\x97\xb1\xce\x41\x35\x45\xac\x01\x06\xf5\xbc\xa9\x05\xa8\xfd\x05\x62\x4c\x1b\x7b\xb9\xff\xfd\x1c\x8c\xa4\x1a\xd5\x94\xd8\x1e\x15\x30\xc8\xc1\x0a\x3a\xc8\x3a\xc3\x1b\xa4\xbc\xad\xc3\x4e\x68\x25\xfe\x2d\xe9\x54\xe5\x25\xa4\x39\x2e\xbe\xb9\xf6\xb4\x9e\xb0\x1b\x9e\x75\x0e\x04\x20\x7c\xf1\x0b\x7f\xf0\x53\xd4\x18\xf9\x7c\xde\xe0\x96\xe1\xc3\xcc\x9d\x2e\x5e\x8d\x1b\xe9\x95\x5b\xed\x36\xc3\x28\x95\x89\x9b\x49\x20\x6a\x6d\x16\x0d\x51\x58\x16\x5e\xf1\xcb\x85\xce\x1b\xf7\xa9\xaf\x50\xb7\x39\xdc\xb4\x85\x64\x77\x53\xf8\x86\xd4\x54\x0a\xda\xa1\xf0\xf0\xcf\x59\xa6\x41\x33\x4c\x71\x6d\x90\x25\xfa\x48\x1a\x5b\x5d\x6b\x7a\x1b\x5b\xaf\xc3\x4a\xc8\xaf\x74\x64\x27\x88\x31\xc1\x75\xbe\xd3\xb3\x4e\xae\x42\x5b\x56\xb6\x29\x75\xf0\xa6\x59\x96\x2f\x6c\x29\x5f\x6d\xb0\x48\x4a\xc2\x2c\xc0\xf8\xd7\x69\x06\x75\xb4\x88\x01\x3f\x66\x10\x97\xa0\xc2\x6e\x9c\x1f\x40\x93\x92\xd9\x22\x50\x91\x0b\xff\x18\x87\x8f\xb4\x23\x15\x29\x63\x44\x91\x81\xe6\x5c\xd0\x9e\x1d\xf9\xfb\x82\xfc\x6c\x19\x9c\x40\xf5\x89\x71\x21\x3e\x11\x3e\x11\x1e\x2f\x17\xb4\xc5\x79\x1c\x76\xfc\x76\x7c\x36\xcf\xda\xf0\x4d\x52\xf5\x12\xf1\xa8\x0e\xf1\x77\x4a\xfe\xfa\xf8\x32\x30\xc7\xed\x30\x29\x32\x92\x96\x03\xed\x4a\xe4\xce\x30\xc0\x01\xe2\x3a\x8c\xa4\xe2\x89\x8f\xdd\x67\xf7\x62\xf5\xcc\x65\x77\xce\x4c\xdf\x7e\xb7\x66\x29\x63\xb9\x64\x89\x23\xbb\xfd\x56\xc2\xea\x81\x1f\x90\xcb\xff\x05\xe0\x4d\x74\xd7\xbc\x96\x27\xbc\xc2\x40\xaf\xfb\x33\xd4\x52\xd0\xe6\x1f\xa7\x1c\x15\xbe\x90\x75\x22\x5b\xb6\xd8\x14\xfb\x24\x95\x65\x85\x96\xd5\xa2\xae\xa0\xbe\x5a\x48\xad\x87\x2e\x5e\x16\xaa\x67\xc2\xd4\xe6\x78\x6a\xb9\x6a\x26\x3b\xf4\x74\x16\x19\x4f\x44\x86\xe7\x2a\x75\x65\x81\xad\xf8\x95\x44\xc9\xf5\x3d\x88\x92\x17\x90\xa0\x7c\x59\xa0\x56\xf7\x91\x9d\xae\x05\xcb\xfe\xa9\xe5\x6e\xda\x0a\x9a\xd9\x6c\x15\x06\x4b\xba\xdb\x71\x74\x09\xc1\x6a\xd0\x9f\xa6\x6c\x70\xb8\xc7\x00\x90\x1d\xa2\x36\xef\xca\x1b\x41\xb3\xf6\x94\x1b\xbd\xff\x99\xbf\x00\xe7\x4f\x94\xfe\xfb\x30\x1a\xd3\x7d\xcb\xcd\xbb\x02\xeb\xf7\xf7\xbb\xe0\x62\xca\x92\x8b\xf2\x0b\x47\xf9\x5c\xda\x5c\xf1\xb7\x7f\xd3\x72\xb7\x09\xb2\x66\x3c\xae\xd3\x6b\xa9\x63\xe1\xd6\xe4\xd2\x68\xcd\xc1\xda\x96\x27\x63\xa6\x75\xc5\x4f\x85\xe6\x7f\xd3\x8f\xb2\x10\x52\x35\xb3\xdb\x26\x8a\x9a\xc6\x53\x59\x45\x8e\xcf\x44\x21\x8b\xa5\x84\x0e\x19\xc7\x25\xb0\x0c\x1e\xc9\xc0\x0a\x1d\xc3\xf0\x4d\x83\xa8\x2e\x65\x9e\x09\x41\x56\xaf\x41\x4f\x54\x92\x72\x0d\x6d\x80\x0f\xe7\x10\x06\xf8\xb2\x76\xdc\xa7\x1d\xdc\xe6\xca\x1f\xee\x01\x07\xac\xc4\xf2\xc3\xe5\x1a\xf7\x3e\xfb\x78\x08\xd9\x97\xa0\xd8\x2b\x34\xb8\x5e\xb8\xf4\xe0\x1e\x18\xd1\x62\xd6\xdc\x1b\x3e\x46\xdd\xe5\xf3\x78\x70\x63\x1b\xed\x77\xa4\xea\xdb\x8a\x44\x7f\xe7\x74\xd3\x45\x91\xea\x83\xe9\xa2\x1d\x6a\x28\x84\x5d\xe6\xcd\xb1\x21\x16\x4f\x92\x09\xf7\x4d\xdf\xec\xb7\xc7\xe6\xc5\xac\x81\xb9\xc3\x44\xde\xe7\xf6\x67\xf2\xca\xa7\xc5\xea\xa7\x9d\xa3\x52\x76\xb4\x87\xa2\x4c\x5e\x76\x2a\x69\x1f\xe6\xa1\x63\x56\x44\x43\x45\x5b\x04\x94\x19\xe4\x0e\xfc\x2a\x41\x1a\x6c\x88\x10\xd1\xed\xc7\x73\xad\x7a\x6f\x99\x62\x83\x97\x4f\x8c\xbd\x07\x8a\x61\x95\x06\xbe\xb7\x2b\xf8\x51\x6e\x71\x50\xa2\xb9\xf9\xac\x9a\x8d\x9c\x8d\x3f\x9c\x70\x79\xd2\x88\xd9\x31\xd3\x42\x5e\xbf\xaf\xe5\xec\x45\x39\xa6\x78\xa1\x98\x8b\x69\xab\x4e\x32\x28\xf3\xca\xdb\xf4\x71\x67\x57\x0d\xf1\x9c\x8f\x14\x9b\xba\xfe\x79\xeb\x60\xea\xdc\xe8\x36\xc4\x39\x1e\xf7\xc0\xa8\x74\x87\x27\xae\x7e\x37\x71\x41\x1f\x32\xda\x2e\x28\x66\xa2\x79\xab\xf7\x06\xba\x70\xd4\xa3\xb5\x33\x4b\xfc\x51\xa4\x6e\xf5\x88\xd8\x5c\x9c\xa4\xad\x23\xc5\xd1\x92\xd2\x9f\x1d\x3a\x35\xe2\x09\x77\x90\x70\x19\x77\xd0\xa1\x48\xae\x45\x7b\x20\x7c\x9a\xb1\xf6\x06\xba\xfe\xe8\xef\x15\xdb\x04\x31\x93\x2b\x46\xc6\xc5\x15\x40\x39\x24\x0d\x5f\xdc\x9c\x1b\x71\x4d\x42\x67\x9b\xad\xbb\x1c\x13\xce\x49\x92\x2a\x29\xd6\x67\x24\x17\x9b\x4b\x57\x06\x92\x70\xa4\xa7\x78\x6f\x19\x6e\x31\x7d\xb2\x98\x79\x24\x44\x77\x86\x90\x61\xe5\x70\x01\x1f\x77\x4a\x55\x65\xc3\x7e\x46\x2a\xab\x59\x7b\xe4\xc5\x1a\xe8\x93\x74\xc3\x8d\x28\x0d\x24\x7d\x51\x3d\xc7\x3f\x10\xe9\x61\xef\x46\xb6\x7e\x1f\x38\xcf\x8c\xa2\xa2\xae\xcb\x4b\x69\xe2\x47\xa9\xab\x13\x22\x98\x46\x99\x14\x99\x4d\x72\x8c\x94\xe8\xe0\x6f\x65\x5c\xe9\xe7\x61\xca\xe9\x58\x3d\x1f\xf2\x65\x5c\x5f\x84\x98\xfd\x4a\xfc\x2f\xe5\x31\xc3\x35\xd7\x4b\x89\x17\x7e\x51\x7f\xac\xa9\xb9\x86\x46\xa5\xe7\xb4\xc0\x52\xf9\x0e\x63\xe2\x60\x5c\x38\xa6\x65\xb7\xc4\x4a\x55\xd2\xb8\xfc\x78\xdd\xa8\xb4\x93\xc3\x3b\x98\x4e\xc8\x16\x4c\x59\x23\x12\x4f\xc1\x6f\x9d\x2e\x51\x80\xe0\x71\x19\x94\xde\xdc\x4e\x48\xf3\x40\xce\x91\xa4\xc2\x30\x4f\x6b\x5e\xe2\x0e\xcc\xd2\x9d\x4e\x2c\x14\x69\x87\x49\xfe\x2f\x24\xb3\xbb\x7e\x5c\xa8\x94\x81\x83\x62\x7b\xfe\xa4\x86\x1e\xbb\x07\x96\x36\xc0\x59\x2c\xe4\x20\x17\x23\x5e\xd7\xb2\xca\xca\xf0\xac\xb4\xec\x25\x6b\x2b\x89\x82\x0f\xec\x08\x6b\xea\x4c\xec\x1c\x64\x7c\x60\x30\x21\x2b\x06\x2a\x83\x14\x0a\x02\x0b\x55\x86\x07\xf5\x26\xd1\x28\x9d\xfb\xc4\x53\x78\xe4\xa6\xc6\xc2\x5e\x2a\x33\x65\xa6\x86\x17\x33\x58\xf9\xef\xf0\x50\xa8\x4c\x63\x24\x34\xe2\xf9\x45\xec\x4e\x3d\x24\x3f\x8f\x3b\xce\x89\xde\x2d\x9f\xaa\x34\x9c\x5d\x14\x3f\x83\x4e\x89\x47\x0a\xdb\xd1\x5e\x7e\x4e\xa8\x39\xb7\x60\xe5\x54\xcf\x79\x86\x31\x98\x73\xc1\x82\xbd\xab\xb6\xf2\x72\x55\x19\x1c\xc3\x65\x91\x72\x6a\x63\x02\x9c\x88\x28\xb5\x14\x82\x51\xf9\xb1\x38\x88\x1d\xdc\x84\xb6\x65\xe7\xb5\xa7\xdb\x0a\xbe\x1f\xfd\xa1\x60\x23\x47\xf8\x05\xcc\xec\x3a\x54\xe4\xbc\xdf\x1f\x17\x05\x15\xc7\xf7\x4b\xcf\x0a\x2e\x3e\x08\xe0\x41\x40\xc4\xfd\x66\xcc\x09\xeb\xf9\x15\x1d\xfb\xd6\x65\xd0\x44\x03\x0b\xf0\xed\xfb\x6a\x07\x0e\x4f\x8d\x7d\x1f\x18\x18\xa5\xea\xd9\x7b\xcd\x6e\x35\x99\x88\x47\xd0\xfb\x65\x44\x88\xb8\x7b\x6f\xea\x5b\x3b\x22\xf8\x38\xc2\x66\x65\x94\x71\x9e\x8b\x40\x74\x4c\x9f\xfb\xe7\x2b\x7e\xa2\x9f\xea\x13\x57\x86\xb5\x39\xb9\x22\xa7\x5c\x73\x7e\x34\x99\x67\x11\x2d\xb3\xe1\x12\x5c\x7c\x47\x87\xa8\x6d\x14\x92\x9c\xaa\xe2\x54\x3f\xf3\x59\x4f\xd7\xa7\x13\x2c\xb2\xe5\xca\xf8\xce\x3c\x54\x18\x92\xdb\xbe\xb4\x00\xf0\x9c\x79\x44\x5b\xac\x38\xfc\x37\xb9\x49\x4a\x02\x76\x58\x46\x14\xed\x6e\x4c\x57\x8a\x9f\x32\x08\xc8\x1e\xf7\x98\xbf\x27\xc0\x64\x26\x87\xb0\x5a\x44\x74\xb0\x44\xc1\xcf\x81\x95\xbf\x73\x31\x78\xa1\x63\xaf\x9f\xc7\x22\x85\x8a\x6a\x71\xca\xe7\x06\x87\x31\x80\x55\x3a\x81\xb1\x06\x90\xe9\x5c\x40\x1f\x19\x26\x53\x84\x25\xe2\x49\x7c\x78\xe4\x44\x73\x92\x6f\x8f\x9f\x4e\x33\x37\x5f\xb0\xf3\x61\x68\x0c\xd6\x86\xdb\xd1\x45\xbf\x79\xdc\x8b\xc1\x9e\x0e\x4c\xac\xd1\xd1\x9d\xde\xac\x8f\x71\x7f\x94\x40\xcf\xea\x61\xf4\xc8\x6e\xf8\x7b\x51\x84\xd6\x99\xe3\xc2\xd6\xda\x88\x27\x05\x18\x0c\x1a\x5b\x7a\xe6\x3f\xc0\x49\xec\x61\xd0\xb7\xef\x90\x15\x9f\x19\x9b\xec\x38\x17\x3f\x19\xdb\xc0\xd5\xcf\xe0\x93\xd5\x46\x26\xb7\x7c\xf1\xce\xa7\xe2\xef\xd2\x09\x5f\x38\xbf\xf1\xb7\xd1\xc1\xfe\xc1\x45\xf2\xf4\xd5\xed\xab\xf1\xc1\x35\x32\xaa\x36\x2b\xf7\x7f\x12\xf4\x5e\x6d\xfc\x3a\x18\x3e\xb8\xdb\x89\xf2\x96\x6f\x34\x77\x3e\x95\xd2\x8f\x5d\xa7\x72\xdb\x2f\xd3\x24\xd7\x3c\x9e\x2f\x3d\x16\x1c\x3d\x5e\xe2\x93\x83\xef\x67\x26\x85\xfa\xb3\xe2\x19\x08\x49\x08\x32\x6d\xd0\xb0\xf2\x40\x88\xd6\xca\x83\xe4\x38\x22\x22\xc2\x30\xd6\xf1\x13\xb3\x6a\xbb\xbe\x69\x36\xdf\xb4\xb1\xc9\x60\xcc\xdb\x22\x1f\x1f\x56\x0c\xa5\xf7\x71\xc7\xd3\x7e\xb5\xf1\x25\xeb\x69\x10\x94\x6b\x21\x3e\x02\x3b\x6a\x33\x09\x55\x20\xcc\xcb\xe3\xc4\xa9\x78\xfb\xf3\xb0\xc3\x26\xa5\x50\x93\x85\x38\x5d\x17\x53\x14\xcc\xed\x80\xfc\x33\xb9\x8c\xab\xda\x07\x13\x27\x06\x8c\xca\xba\xa2\xd9\xc6\x8f\xed\x8f\xd9\x9a\x8f\xa7\xd4\x85\xf3\xef\x69\x2e\x6e\xcc\x07\xe3\x65\x58\xfc\x4f\xfe\xd8\x79\x92\x7f\xe5\x61\x58\x2f\xf3\x4b\x1f\x36\xdd\xfd\xd1\x52\xb2\xa8\xce\x6a\xbd\x96\xe6\xb3\x88\x53\xad\x28\x47\xac\x4e\xa1\x53\x74\xa3\x78\x69\x71\xb6\x0f\xd5\x05\x90\x6c\x67\x02\x51\x8e\x6f\xb8\x7a\xfa\x78\x1a\xc6\xd9\xff\x17\x71\x69\x3c\x23\xfc\x18\xdd\x7a\x79\x1c\xf6\x0c\x85\x37\x75\xe9\x78\xf5\x53\xa5\x8f\x05\x5c\xa4\x8a\x9d\x96\xee\xf8\xdc\xc4\x1f\x31\xe4\xf1\xab\x71\xdd\x12\xca\x5d\xd9\xb6\x48\x95\xf9\x29\x58\xb5\x82\x46\xa4\x00\xf4\x95\xc6\xd0\xc3\x5a\xe3\x77\x8d\xdc\x4a\x04\x06\xa9\xa1\x81\xa8\x32\xc6\xc9\x74\xbf\x6f\x1b\xec\x57\xfa\xc0\x37\xc9\xc2\x80\x5f\xfb\x00\xcc\x76\x33\xe9\xc0\x1c\x7a\xaa\xd9\xca\x69\x52\x24\xc6\x0d\x78\x83\xb5\x31\xd7\x09\x1d\x9c\xe8\x92\x5d\x6b\x2f\xe2\xee\x8b\x5b\x68\x23\xaa\xfa\xa8\xb3\xb9\x3f\xdf\x9d\x66\x6e\x8d\xe6\x3d\xad\xee\x6c\xd4\x95\xc3\x93\x05\x42\x86\x24\x6a\xe7\x1b\xfa\x96\x70\x8e\x35\x7b\x6c\xa2\xff\x98\xa0\x37\x67\xe6\x50\x47\x8d\xe1\x6e\x49\x36\xf8\x72\x6b\x5a\x53\x1d\x1f\xe4\xec\xd8\x49\x8f\xcc\xab\xf0\x0a\x16\x44\xee\x62\x3a\x74\x62\xe2\x31\xd5\x41\x01\x72\x74\xa0\xe9\x40\x62\xd4\xcd\x50\xe1\xd6\x88\xc2\x52\x33\x7a\x09\x7c\xb2\x26\x33\xb8\x47\xc3\xf7\x3e\x61\x57\x60\x6e\x17\xee\xae\x1a\x61\x34\xff\xd3\xe5\xf8\xbd\x85\x24\x74\xac\xaf\x77\x96\x2f\x65\xc8\xf9\x15\xca\xc1\x4c\xf6\xf8\x0b\xdb\xf2\x10\x74\x42\xde\x54\x8d\xeb\x83\x76\x6f\x87\xd6\x6a\x7b\x85\xee\x01\x70\x95\xea\xe7\x43\x6b\xf5\x43\xe4\x8d\xf2\xc0\xee\xf1\x71\x55\x3e\x72\x40\x08\x8b\x75\x64\x22\x2b\x64\xa2\x03\x32\xe9\x88\xc8\x44\x17\xc8\x44\xd7\xc8\xc4\x96\xc8\xa4\x63\x8f\x40\x7d\x45\x2f\x91\x89\x5a\x23\xd8\x5d\x51\x3b\x64\xea\x7f\x05\xca\xd5\x9f\xfd\x89\xd3\x24\xb1\xc3\x76\x5d\x9d\xcc\xc8\xe0\x69\xb0\xf2\xc9\x42\xaa\x75\x73\xfb\xc2\xad\xe8\x90\x33\x16\x05\xe5\x86\x06\x52\xe6\x75\xea\xeb\x36\xb0\x81\xa8\xcb\x45\xa2\x7a\xa3\xde\x6f\x5c\x2b\xe7\x08\x22\xef\x17\x7f\x8f\x64\x6f\x21\xf2\x69\x9e\x74\x4f\x6e\x52\x2e\xec\x05\x87\x80\x9d\xf8\x86\x9a\xa8\x98\xd8\xb6\x8f\x77\x73\xc6\x2d\x13\x17\x15\xa8\xc2\x88\xb9\x2f\xfd\xa1\x39\xfe\xd1\x0c\x02\xcb\x66\x96\xac\x07\xbe\xe7\xaa\xb8\xa1\x64\x42\x2f\x0a\x73\xd6\x41\xcd\x00\xd6\xae\xb5\xe9\xf8\xfc\x4c\x1a\x3d\xf0\x31\x67\xc9\x6b\x55\x61\x6c\x03\x22\x77\x12\x85\x44\xf4\xfd\xcb\x74\xcf\x8b\xd3\xd7\x4d\xe6\xb8\x27\xf1\x70\xe3\x3d\xcb\x31\x34\x07\x74\x4a\x6f\x99\x71\x73\x63\x03\xc6\x87\xde\x77\xcb\xd3\x7a\x3b\x18\xa2\xfd\xd5\xfd\xe2\x69\x31\xad\xdb\x39\x66\x51\xb6\xc1\x0f\x43\xdb\xe5\xbb\x2b\x37\xa6\x9e\xd8\x94\x01\x77\x54\x02\x99\xa0\x45\x5e\x1d\x40\xf3\xb5\x0e\x86\x30\x37\x6a\x94\x7d\x7c\x5a\x6f\x7d\xbc\x56\x52\x10\x78\xd6\x28\x7a\xc4\x88\x38\x95\x4d\x33\xc9\xbc\x37\x82\x0f\x99\x4f\x94\x34\xf3\x22\x01\x3a\x27\xcd\xba\x9b\x6a\x4f\xdb\x18\xf3\x1e\xd2\xa1\x18\x76\x2e\x5e\x7c\x74\x71\xed\x50\x3c\x42\xee\xb1\x4c\x22\x47\xeb\x02\x62\x65\xdd\xd2\xf9\x90\xf1\x8b\xa7\x4b\xea\xf9\xa8\xe1\xce\xaa\x33\x5c\x87\x6d\x61\x38\x62\xb1\x8e\x32\x82\x36\x49\x95\xac\x69\xa5\x8d\xea\x99\xd0\x53\x4c\x03\x74\xad\x08\xfa\xbb\xdb\x4c\xe6\x71\x83\x68\xa1\xe3\x64\x73\x0e\xb0\xfc\xac\x25\x72\x80\x70\xbd\xbe\x96\x0e\xa0\x29\x7e\x8b\x0f\xe4\xbe\x5f\x6f\xae\xaf\x7d\x82\x85\xa3\xf8\x18\x25\x2a\x3b\x31\xe1\xb6\xf4\x84\xce\x06\x55\x33\xeb\x1a\x27\x47\xd5\xe8\x25\xd7\x19\xa5\xe9\xa8\x22\x4b\x2f\x7c\x9e\x87\x34\xcf\x5c\x07\xc8\x06\x6a\xe1\x39\xdf\x3c\x57\x37\xcf\xe9\xe6\x39\xdc\x26\x7a\x87\xc6\x64\x6c\x28\xa0\x54\x1e\x7e\x92\x20\x3e\x71\x9e\x9f\xf8\xc4\x27\x22\xd6\x91\xfc\x77\x2a\x2e\x26\xf7\x78\xba\xe7\x61\x48\x6c\xbf\x84\x83\xc4\x79\x22\xe4\x08\xe3\x32\x71\x2f\x7b\xfc\x00\xa3\x57\xfb\xee\x03\x5c\xfc\x9d\x4c\xf1\xa9\xba\xa7\x71\xfd\x2f\x75\xb2\xe8\xce\xd3\x58\x03\x2a\xdf\x66\x83\xc8\x2b\x47\x97\x5d\x61\x5e\xdd\x69\x26\xb6\x19\xa4\x75\x7c\x19\xe0\xc2\xd0\x0c\x3c\xa3\x22\xf6\x02\x8e\x64\x71\x03\x00\xbc\x7d\xe5\x08\x82\xe3\x30\x77\xe4\x51\xa4\x32\xa0\xc6\x3a\x85\x9a\x86\x8c\x70\x82\x0d\x47\x78\x96\xe0\x15\xa2\xe6\x65\xd2\xd7\x17\x75\x69\x4c\xc7\x11\x90\x2b\x45\xf5\xd4\x8f\xa2\xe4\x4d\x80\x8b\x7d\x9a\xfd\x5b\xae\xc8\xc9\x3b\xbd\xb0\x94\x6a\xdc\x85\x97\x0e\x7b\xfc\x0c\xba\x01\x65\x76\x4b\x65\x01\x1a\xad\x3a\x39\x73\x5d\x70\xab\x8e\xa5\x97\xf7\x5d\x11\x8d\xe0\xef\x48\xd5\x7d\x86\xc7\x8e\xc4\x87\x7b\x92\xb9\xae\x09\x99\xc8\xb7\x11\xc1\x14\x33\x51\xd3\x2e\x2f\x63\x21\xe0\xfd\x60\xe4\xd0\x2d\x13\xab\x29\x6e\x3a\xb3\x92\xa2\xca\x7a\x2b\x4d\xa9\x5f\x94\x28\xf8\x63\x37\xa8\x98\xd9\xf7\x1e\x3c\x07\x1b\xd8\xa0\x34\xf6\xf2\xde\xae\xe1\x46\x36\xdc\x5d\x68\xe4\xcc\xca\xc5\xc5\x6b\x57\x58\x3b\xa9\xe4\xf0\x42\x1c\x15\xe1\x8d\xc3\xbf\x6e\x59\x87\x68\x74\xd4\xf8\xac\x36\xee\xc2\xb8\x69\x41\x7d\xed\x88\xdb\x37\x3a\x13\xbf\xb7\x29\xf7\xb1\x07\x4d\x31\x10\x4b\x1e\x97\xde\x73\xec\x65\xe2\xfe\x2a\xa3\x41\xdf\x72\xe2\xc6\x12\xbe\xe5\x68\xbc\xdb\x58\x4b\x66\xe4\x1c\x27\xa9\xf0\xa9\xa8\xaa\x35\x6e\x94\x29\x38\x80\x4c\x0b\x08\x13\xaa\x82\xe5\x65\x31\x5c\x08\x4d\x4c\x4e\x87\x0e\x4d\x93\x67\x80\x4b\xa4\x1b\x29\xc9\xce\x6c\x38\xa2\x14\xd4\x5c\x4b\x07\x37\xec\x5a\x90\xce\x02\x02\xc2\x69\x2e\x79\x70\x33\xc5\x75\x1f\xa4\x5e\xe4\x12\x30\xc6\x66\x6e\xf2\x80\x0f\xd3\x68\x03\xc0\x33\xbd\xaf\xd2\x66\xd1\xda\xe7\xbe\xf4\xc5\xef\x2c\x3c\x86\xb9\xb2\xd8\x7e\xe5\x2e\x8c\x09\xc9\xb6\xa8\x8d\xe4\xb5\x20\xe7\x8b\x25\xcf\x4d\xbc\x67\x6a\x1f\xc7\x9b\x1f\x55\xd1\x4e\x80\x1d\x98\xd8\x05\xcf\xc4\xcd\xdb\xf1\x67\x77\x11\xbb\xcc\xc1\xb9\x33\xd5\x86\x1f\xc2\xe3\xab\xfd\xea\x75\x93\x76\xb9\x3b\x85\xa7\x86\x47\x67\xff\xfe\xc2\x59\xd1\x45\x63\x75\xfa\x39\xee\x51\x72\x91\xc3\xa3\x3f\x85\x7a\xec\x1b\x22\x1b\xca\x96\xca\x97\x67\x5c\x96\xd1\xb3\xe9\x7c\x13\xe8\xc2\x1c\x65\x6a\xf4\xaf\xa5\x72\x82\xa9\x23\x48\xb3\x5e\xda\x21\x28\x94\x75\x79\x64\xb5\xf0\x30\x2d\x47\x7e\x63\xcb\xd9\x4c\xa5\x6d\x14\x8e\x6e\xd4\xd9\x0c\x51\x95\x6c\x1b\xcc\xc3\x53\x3a\xd3\xb1\x65\xbd\x9c\xbf\xdb\x7c\x6c\xce\xfd\xe1\x7d\x2d\x90\xd2\x27\x62\xcc\x4b\x2b\xa3\xa1\x9a\x3b\x25\x98\x1a\x87\xb9\x86\xd4\xfb\x9e\x73\xc8\xea\x2b\x93\x40\x63\xae\x21\x12\x22\x2f\xf0\x19\x90\x4e\x02\xf6\x7b\xd3\xda\x7e\xd8\x23\xc1\x95\xd1\x95\x6c\x26\x1b\xbb\x30\x36\x8e\x80\xee\x4c\x21\x76\xa1\xe3\x7d\xd9\x88\x07\x72\x8b\x50\x75\xbe\x4d\x1c\xfb\x32\x52\x0e\xe6\xbb\xe3\xe3\xa8\x8d\x23\x92\xfd\xc4\xcd\x23\x53\x66\x8a\xcf\x2d\x71\x5b\x0c\xd6\x5d\x4b\x11\xef\x8b\x2a\x3e\x2c\xa3\xf6\x8b\x97\x5a\xf1\x8a\x44\x44\x54\xa5\xb0\xcd\x1a\xaa\xc4\xc9\x7d\x5f\x42\x67\xdb\xc9\x1a\xf3\x3f\xae\xe2\xd5\x3a\xc6\x5f\x5a\x18\xd6\xba\x57\x26\xfb\x36\xcf\x2e\x6c\xb3\x03\xe9\xcc\x91\xf6\x80\x7c\xa6\x29\x6c\x19\x19\xf2\x3d\x9d\x62\x3a\x73\x07\x5b\xc3\x7a\x77\xb6\x6e\x88\xba\xdf\xc5\xed\x60\x27\xb8\x99\xe7\x7f\xff\x8e\x62\x2f\x16\x3e\x89\x46\xc7\xa0\xea\x1d\xc6\x81\x34\x11\xf0\x34\x16\x95\xb4\x0a\xb9\x7a\xaf\x30\x3a\x9e\x94\x8f\xd4\xda\x3a\x32\x5b\xc8\x7e\x3d\xf9\x38\x97\xd8\x92\x7f\x80\xa0\x42\xe1\x63\x17\xf6\x7c\x14\x53\x6d\x7a\xcf\x08\x93\x07\x7e\xe6\x5c\x35\x4b\x60\xd1\x69\xcc\xb9\x33\x75\x0c\x30\x61\x6b\x9c\x99\x01\x1c\x01\x06\xf1\xea\x82\xb6\xbd\xf7\x04\xd9\x71\xd9\x8d\x49\x83\xfb\xf8\x58\x71\xe3\x4e\x34\x14\xa5\xd3\xb1\xb3\x0c\xb6\x13\x66\xfc\xf5\x13\xce\x4f\x7b\xe6\x9a\x70\xfb\xb5\x2c\x82\x69\xf2\x52\x20\x9d\x86\x42\x08\x69\x28\x84\xe5\x5a\x33\xee\xb7\xac\x77\x56\xc7\x77\xf3\x02\x1f\x0d\xe7\x27\x05\xd8\x4e\x2a\xbb\xb1\xa8\x8c\xef\xae\x4b\x94\xb4\x03\x44\xd3\x10\xbb\x16\x52\x49\x06\xf2\x85\x4d\x66\xb7\x0b\x2b\x76\xd8\x48\xd5\x8b\xcd\xaa\x19\x15\x09\x4d\x7c\xb1\x94\xd9\x6d\xce\x2a\x2d\x16\x76\xfb\x4a\xa9\x6d\x75\x05\xa3\x9c\x33\xcd\x5c\xdf\xac\xe6\x95\x87\x29\x33\xb0\x10\x07\xf8\xc6\xf5\x83\x99\x7f\x75\xf7\xf8\x4e\xf0\x59\x57\x0e\x1e\x09\xa0\x19\x49\xbf\x99\xae\xc2\x06\x87\x3c\x23\x72\xc3\x5d\x75\x23\xa1\x4b\xb7\xf5\x8c\x89\x55\xb3\xf3\xd8\x47\x8a\x86\xae\x87\x8b\x84\x9f\x2f\x39\xde\xbd\xad\xe2\x8e\xc8\x86\xd8\x39\x10\xfb\x5c\x12\xcd\x74\x0d\x15\x42\xa8\x9f\x38\xed\x38\x78\x54\xdb\x31\x5f\x56\xe5\x71\x08\x16\x9d\x9f\x64\x6c\x83\x01\xc6\x4b\xa4\x1d\x85\x3a\xed\x23\x0b\xd5\x22\x26\x5f\xca\x2f\x29\x85\x87\xce\x4c\xe9\x02\x38\x0e\xe4\x46\x02\x5e\xed\x4b\x3f\xb3\xf7\x73\xd2\xce\x8b\xc6\xd2\x67\x26\x7f\x03\x2e\xc5\x7a\x81\xda\xf2\x36\xfd\x1c\x61\xcf\x36\xc3\x7c\xc3\x76\x36\x0f\x31\x73\xa0\x71\x08\xd2\x39\xe2\x58\xb7\x5a\x5d\xb2\x25\xf3\x15\x58\x76\x50\xf4\x33\xa4\x85\xf0\xaa\x66\x79\x4c\x08\x18\xe3\xe0\xd9\xe6\xf6\x73\x23\xda\x9f\x24\xa0\x72\x24\xd6\x6f\x6e\x63\xfc\x99\xc4\x90\x2a\xb9\xe7\x5e\xdf\xda\x65\x27\x78\xd8\x51\x26\xae\xb1\x8a\xb5\xe0\x09\xc2\xc8\xf8\xce\x38\xe3\x73\xe6\x0b\xdd\xcf\xb3\xb0\x16\xa7\xc4\x53\x3d\x3b\x8f\xfd\x65\x39\xdd\x44\x67\x65\x74\xa4\x77\xff\xdd\x4d\x2c\xc4\xc1\xb9\x87\x33\x3f\x1f\x09\x37\x66\xc7\x4c\x98\x3f\x0b\xed\x0c\x7c\x37\x45\x1f\x70\x91\xfe\x6c\xee\x7a\x61\x0c\x50\x7c\x07\xe1\x83\xbf\xb6\xa3\xfa\xe9\x2d\x5c\x63\xa2\x5b\x50\xbf\x15\x3a\x3c\xf4\xa9\xa6\x4e\x08\xb0\xfa\x39\x50\x10\x63\x79\xaa\x76\xf6\x1b\x69\x5b\x51\x76\x9d\xa9\x11\x84\x5c\x36\x06\x11\x97\x5b\xc1\xa3\x88\xc3\x5e\xd0\x95\x38\xad\xf4\xda\xa4\xf8\xda\xb7\xba\x2b\x83\x14\xf8\xc3\xba\xee\xa4\x25\x5f\x24\x7c\xab\x53\x8f\xbf\x5f\xac\x97\x2f\x74\x2b\x0a\x93\x68\xbe\xe8\xf1\xc3\x12\xe5\xd7\xa3\x38\xe1\x20\xbe\x5e\x83\xd7\x0d\xde\x52\x2f\xa0\x6d\x7e\x9f\xcf\x2f\x7c\x37\xa7\x63\xa7\x2c\x03\x94\xdd\xd5\xa8\xcf\xad\x09\x93\xce\x6b\x58\x84\x23\xb0\x6d\xa4\x13\xe9\x5a\xa7\xb5\xd2\xa9\x12\xf2\xed\xde\x2a\x35\x38\xec\xd2\xd4\x64\x84\x46\xb0\x97\xad\x90\xf5\xfc\x88\xf1\x46\x5a\x18\x35\xb9\x0c\xb0\x82\x52\x2f\x1e\xb1\xe2\xe3\xb2\xaf\xad\x1b\x03\x83\x1d\xb1\x42\xd8\x8d\x10\xab\x3c\x97\x43\x0e\x24\x6c\x2c\xe2\xcf\xb4\x85\xe2\x21\x68\x71\x25\xcd\xab\x6f\xba\x9f\x9e\x7e\x07\x01\x6c\x82\xe6\x21\xa2\xeb\xbd\x0b\x03\xdc\x3a\x1a\xca\x83\x18\x0d\x0d\x94\x5b\x84\xa6\x7f\xc3\x9d\x8e\xb0\x0d\xbc\xef\x1c\x09\x80\xb4\x35\x84\xb7\x2d\x37\x0c\xd8\x97\x7d\xa4\xcc\xad\x99\xca\xe3\xed\xa0\xcc\x79\xb5\xc7\x71\x99\x52\x9f\x2a\x6e\x8d\xc1\x4c\x13\xbc\xc1\x2b\x7c\x4f\x9b\xf8\xfb\x58\xb9\xb8\x0a\x27\xa5\xa9\x02\x31\x73\x5d\x08\xd4\xa4\x20\xcc\x0c\x0f\x71\x69\x97\xf5\xdb\xdb\x8f\x55\x8e\xbc\xa0\x46\x41\x44\xb7\x2b\x6c\x7c\x85\x3c\x08\xe3\x95\xe4\xe1\xfc\x0a\xd6\x6a\xa1\x22\x4a\xcd\x61\x54\x3e\xba\xa5\xdd\x48\xc9\xf3\xe9\x59\x90\x91\x6f\xeb\x54\xb6\xd7\x86\x42\x6a\x8a\x91\x69\x79\x2d\xbb\xd7\x26\x4a\x12\x3e\x83\x9f\xa6\x05\x50\xf1\xc8\x7a\xf0\x3b\x4f\xb7\x0b\x8f\xd8\xb8\x03\x4f\x5b\x67\x2e\x71\x73\x1e\x15\xf5\x56\x79\x27\xb1\x4e\x61\x99\x8e\xf8\x2e\x16\x57\xff\x71\x4e\x36\x37\x43\xba\xcb\xce\x62\xe1\x12\xa1\x9c\xcd\x00\xaf\x1c\x32\x36\xa7\x98\x51\x0a\xf3\xb4\x7b\xb9\x9a\xe9\x5f\x39\x44\xdf\xa2\xb6\x62\xa3\x5d\x11\x65\xa0\x28\xcb\xfa\xb0\xe3\x39\xee\x5e\x0a\x1e\xd4\xcf\x7a\x5f\xf6\xfe\xf8\x5b\xe1\x78\x65\x17\xd7\x06\x3c\x70\xc0\x18\xcf\xb6\xdf\xc4\x69\x94\xb4\x05\x2f\xa2\xab\x34\x07\xac\xf0\x58\x8d\x7d\x7c\x53\x6c\xb9\xc9\x9c\xa7\x9e\xf2\x2f\xfb\x10\x14\xef\xd6\xaf\xd7\xe2\xdd\x1d\x29\x3b\xb9\x43\x45\xdb\x17\xdb\xab\x32\x0e\x30\x3d\xcb\x62\x0e\xbc\x43\xb8\x96\x07\x62\x99\xde\x5b\xfb\xee\x72\x46\xb8\x9e\x2e\x39\xb4\xaf\xeb\xa1\x4f\x0e\x51\x31\xc2\x44\x67\xd9\xc0\x28\x95\x55\x9d\xa1\xf1\x0e\x77\x3c\x1d\xf0\x0e\xf9\xdc\x3a\x84\x77\x6a\x56\x10\xb7\x13\x82\x5e\xfd\x43\x39\x27\x23\x3b\xe7\xdc\xf3\x4b\xad\xcc\x2d\xa7\x93\x98\xc5\x94\xbf\x4e\x54\x0d\x37\xf6\x95\x55\x96\x3b\x65\xd0\x5b\x1c\xe5\x25\x3d\x6a\xb6\xf1\x2b\xbe\x98\x0e\xba\x68\xdc\x83\x9c\xe8\xd3\x0a\x17\xce\x5e\x4d\x7c\xfc\x38\xfc\xe4\xd5\xeb\xc7\x0f\x52\x9a\x70\x1b\x74\x12\xa4\xf2\xbd\x56\x5d\x43\x10\xdd\x77\xb7\x7a\x08\x9e\xfa\x78\x61\xf5\xca\x8d\xdd\xbe\x31\x5d\xfe\x60\xee\x9e\x18\xf3\x74\x1f\x68\xf3\x7b\x4d\xba\x80\x20\xfa\xcf\x0c\xa1\x4a\x8c\xb7\x32\xe3\x15\xfa\x8c\xa4\x2c\x93\x98\x46\x80\x73\xfd\xf1\xe2\xf1\x45\x39\xba\x22\xd3\x9e\x1d\x21\x80\xae\xb8\x4e\xe9\x59\x6f\xf0\xbc\x51\x93\x6c\x27\xee\xd2\x08\x1e\xcf\xf8\x29\x49\xd9\x00\xec\x3d\x66\xcf\xe4\x2b\xa8\x1d\x2a\x42\x81\xf2\x4b\x74\x83\x34\xcf\x1d\xa2\xbe\xc1\x79\x3a\x23\xd5\xde\xc5\x74\xf7\x99\xd8\x6d\x00\x54\x9d\x71\xbb\x14\x2b\xb5\xa2\x54\xf0\xb5\xe9\x7b\x0b\x1a\x07\x87\x16\xfe\xb4\xed\xdb\x43\x9e\x98\x3c\xb9\x65\xab\x3e\xdc\x70\x39\xcf\x1c\xb7\x58\x31\x47\x68\x46\x52\xda\x46\x60\x65\x8f\x63\x39\xe3\xe0\x1e\xda\x71\xe6\x06\x12\x68\x7f\x70\x24\xae\x2f\xc2\xa7\x78\xc6\x4f\x27\x96\x90\x86\x11\x8c\x6a\x62\xec\x8e\x20\x49\xaf\x7c\x07\x08\xfa\x2a\x2c\xd5\xeb\x3b\x48\x40\x43\xfc\x07\x7f\xc2\x4f\xfe\x98\x1a\x9c\xca\x15\x0d\x38\xd7\xdc\x18\x1c\x1d\xe4\xe4\xee\x62\xae\x43\x28\xf5\x0e\x9b\x14\x4b\xea\x3f\x98\xf4\x58\x14\x31\x01\xd6\xb3\xe4\x21\x16\x08\x8e\x63\xa0\xd9\x8b\x1c\xde\x54\x98\xb1\x54\xc6\x29\x7f\x67\x3e\x00\xe0\x9b\xd3\x2d\xc8\xcc\xcd\xa9\xe0\x54\xdf\x7e\x74\x21\x0f\xef\xb9\x91\x55\x28\xf6\x4d\xb6\x68\x6f\xfc\x01\x91\x59\x41\xb4\x1a\xb7\xe0\xc3\x70\x49\x59\xda\x7c\x35\x27\x4a\x04\xac\x15\x53\xc0\xed\x1a\x39\x8f\x35\xd0\xb9\xbb\xb2\x8f\xc3\x14\x06\xd8\xe6\x06\x43\x78\x3c\x0e\x3a\x0b\x86\x43\xa6\x9b\x1b\xbd\xf0\x36\x1f\xdd\x17\x8b\x98\x66\x23\x56\xf9\x99\xcd\x22\xbe\x7e\xab\x0e\xe3\x00\xb1\xf1\x4b\xe7\x19\x35\x69\xe9\x49\x3e\xc8\x46\x00\x50\x61\x3c\xfa\xe0\xac\x53\x80\x00\x59\x1d\x9e\x0c\x9c\xf8\x82\xfb\x37\xd6\xd5\xbc\xd4\x61\xff\x28\xea\xcb\xf2\xf2\xdd\x75\x83\x8f\xdb\x08\x90\x85\xca\x5b\xd8\xd2\x71\x50\x6e\x77\x61\xfa\xb8\x95\xa9\x60\x05\xbf\xde\x3f\x3b\x6f\xa3\xf8\xe7\xf5\xf4\x5a\xa8\xa1\x08\x12\xcc\x2a\x04\x89\x8f\x84\x09\x5f\xd5\x3e\x94\x4b\xe5\xd7\xab\x9c\x35\x62\xcd\x75\x3f\xec\x9c\x4e\x4a\x24\x2d\x25\x04\xe9\x77\x1a\xc3\x7d\x8d\x30\x26\x9a\x3b\xaa\x82\xb0\x02\xa4\xf5\x27\xcb\xa6\x33\xae\xee\x4c\x9e\x57\xe1\x09\x0f\x8a\xf5\xbf\xb8\x3c\x42\xd2\xb5\x47\x6b\x5f\xff\xf9\x26\x24\xbe\x05\x2f\x4f\x17\x3e\x03\x01\xad\x65\x11\x0f\x46\x69\xb0\x17\xed\xdd\x6e\x8b\x68\x19\xec\xe2\xdc\x9c\xeb\xd7\x4a\xfb\x6f\xd9\x8a\xd0\x92\xa1\xb4\x0e\xe5\x43\x22\x2b\x13\xf2\x13\x83\x19\x63\x41\xae\x35\xc4\xf9\x9c\xaa\x6d\x97\xb2\x24\x2a\x40\xbf\x21\x56\x68\x1a\xb1\x2d\xc4\x54\x7f\x4d\xdc\x28\x4a\xff\x80\x9a\x13\x5e\x32\x70\x2a\x8d\xa0\x1a\x3b\xa6\x91\x92\x12\x97\x51\x62\x63\xda\x8e\x78\x50\xb3\x0d\x30\x3d\x0f\xdb\x0c\x90\x70\x70\xc6\x4f\xac\x8c\x1f\x77\xb2\xbd\xda\x3e\x0c\xa2\x73\x49\x9e\xcf\x90\xa7\x47\xff\xbf\x05\x58\x8d\x69\xd1\x1b\xfd\xef\xf7\x87\xe3\x9e\x79\xa6\xcc\x44\x82\x65\xf2\xac\x14\x7b\x19\x66\x23\xe9\xe5\x6b\xec\x66\x22\x7a\xab\x7e\xf5\xd6\xa8\x5c\x29\x9e\x36\xea\x2b\x4f\x0d\xc8\x4d\xd7\xc4\x02\x96\x17\x01\xd5\x2e\xe3\xf3\xea\xc8\x17\xbb\x1f\xb6\xc3\x96\xa6\x4c\x05\x18\x9e\x47\x3e\xf6\xdc\x5a\xce\x48\xe6\xe9\xb6\x8c\xd4\x74\x21\x25\x60\x1a\xc6\x55\xad\x9a\x6e\x2a\x93\xc5\x06\x25\xe5\x4d\x63\xe0\x54\x77\xb0\x16\x95\xba\x41\xc5\xea\x7a\x69\xc0\xa1\x17\xcc\x78\xee\x43\x95\xe2\x9e\x25\xf4\x2b\x22\x19\x9a\x1e\x6a\x27\x28\x54\x8d\x73\xd8\x68\x98\xbb\x27\x1d\xf9\x39\x68\xdb\x12\x97\xcf\x8b\xdb\x07\xcd\x7f\x16\xe7\xc5\xe2\x94\x07\x7b\xb5\xcf\xd8\xe3\xa9\x0f\xc3\x8d\x55\xff\x38\x29\x3a\x72\x39\x7e\xd8\x14\x5d\xeb\x02\x6b\xf5\x4b\xd9\xc2\xdf\xfc\x52\xb5\x70\x17\x5b\x23\x64\x6f\x77\x90\x47\x7b\x03\xbb\x09\xb6\x59\x61\xdb\x08\x3b\x01\xb0\x6d\x82\x6d\x2b\xd8\x6e\x81\x9b\xad\x4a\x97\x6a\xd8\x31\x04\xc8\xd5\x95\x61\x72\xe5\xea\xd0\xf0\x44\x7b\x78\xd2\x13\xe0\x89\x72\xf0\x44\xcd\xf0\xc4\x6d\xf0\xd4\x3c\xaa\x0b\x0b\x0a\xb3\x67\xa2\xb9\x63\xdd\x76\x4e\xe8\xab\x35\xef\x58\x5c\xca\x68\xfb\xea\x66\x62\xe1\x57\x9a\x2c\xfd\xdd\x6d\x33\xe8\xb6\xb7\x9a\xd8\x4c\xfd\xd5\xa5\x71\x66\xd0\xe5\xa5\xbf\xec\x69\xc7\xa7\xc8\x40\x10\xa0\xc1\x53\x34\x76\x6b\x5e\xb4\x6e\xaf\x6f\x2c\x0a\x34\x66\x38\xad\x01\xea\x4d\x10\x15\x1f\x54\xe5\xeb\x4c\x1b\x6b\xd5\x48\x39\x78\x78\x9e\x0e\x87\xdc\x4b\x1e\xbc\x31\x54\x9c\xa9\xd8\xe4\xd6\xaf\xc2\xec\x6a\x36\xe5\x8f\x65\x44\xe5\xc1\x95\x0d\x96\x54\xd1\x05\xf1\x95\x94\x7b\x28\xd1\x2f\xe8\x9a\x3c\x15\xf4\xdf\x16\xd2\x2f\xcd\x0e\x94\xe4\x2e\xb9\x42\xad\xc9\x0a\xb5\x9a\x4f\x09\x55\xea\x99\x07\x15\xdf\xc1\x97\xe5\x1d\x91\x02\xdc\xe0\x56\xe5\xa6\xa6\xb6\x6b\xc2\x8f\xdb\xbe\xf3\xfd\x82\xe8\x77\xa2\x79\xbe\x49\x28\xd1\xcd\x4f\xaf\x09\x2a\xbe\x0a\x51\xee\x15\xbe\x4f\xc9\xbc\x90\xdb\xa6\x5d\x37\xf4\xd6\xe1\x53\xaa\x06\xba\x7b\x25\xa5\x4a\xcc\xee\x2e\x4b\x79\x83\xf3\xf6\x67\xda\x6f\xd4\xed\xce\x4e\xf9\x0d\x0a\xf9\x84\xb4\xdf\x80\xad\x37\x49\xf9\xa7\xea\xeb\x8e\x6c\x23\x06\x49\xba\x12\x7a\x20\x0d\x17\x97\x47\x97\x1c\xa2\x7b\x7a\x4f\x91\x41\x00\xf8\x45\xc8\xb0\xdb\xab\xf2\xfe\x3e\x5f\x9c\x27\x39\x49\x49\x45\xd2\xd2\x28\xad\xd2\x72\xdc\x92\xb9\xea\xbe\xf8\xd0\x69\xe2\x86\xfc\x78\x81\x3e\x30\xac\x24\xaf\x86\x35\x24\x55\x0a\x7e\x05\x09\x12\xe4\x85\x10\x3a\xaa\x95\x7b\xb7\x0c\xad\x22\x94\x94\x6d\x40\xfa\x59\xbd\x88\x6c\x84\x16\xf5\x1e\x89\xea\x0d\xac\x8c\x17\x65\xfd\x16\x3e\x32\x0d\xea\xd6\x92\x44\x6c\x9c\x9a\x73\x3b\x94\xf2\xa4\xbe\xdc\xd0\xfe\xbf\xec\x1c\xa8\x9f\x59\x50\x15\xa6\x78\xfd\x3a\xbb\x8f\x24\x75\x21\x0c\xb1\x5d\xf8\x84\x36\x4c\xf3\x3a\x9c\x53\xbf\x45\xb6\x7a\xb5\x84\x00\x2f\xd0\xfb\xfc\xef\x97\x04\x57\x1f\x3d\x4c\x59\xd7\xc7\x98\x67\x2b\xc7\x4f\x60\x2d\xd3\x60\x2b\x15\x0c\x4f\xe7\xf8\x77\x4a\x14\xf1\x79\x67\x1b\xda\x5a\x9f\x77\xde\xd8\x06\x0e\x98\x81\x74\x43\xcc\x1f\x96\x48\xa4\x57\x5d\x5f\x78\x54\x65\x9a\xae\x68\x4c\xaa\xd7\xac\xc6\x8f\xd0\x59\xd0\x71\x33\x65\x92\xe6\xac\xa6\x24\x7a\x0d\x9d\x5d\x6a\xf7\x42\x9e\x64\x18\xe3\x55\xe1\xf4\x96\x3b\x3a\xa3\x8b\x74\x4b\x3a\x11\xe3\xf1\xd9\x0e\x30\xb8\x56\x15\x6d\xd7\x9f\xc3\x62\x67\x8d\xdd\x72\x1a\xd1\x25\x06\x6b\xb3\x17\x29\xb1\x0c\x2e\x25\x37\x0d\x22\x79\x81\x7e\x90\xed\x65\x97\x4e\xc0\x37\x21\x35\xaa\xe4\x1f\xf5\x8c\xc9\x87\xd0\xcb\x6e\xd9\x40\xe8\x20\x0c\xce\x72\xe9\x29\x67\xd3\x9c\x76\x4f\xcb\x51\x2e\x44\x09\x1b\xa2\x9d\x84\x6e\xeb\xec\xb7\xa2\xe3\x4b\x55\xe6\x74\x83\xf2\x52\x73\x99\x3c\x0f\xa8\xb7\x04\x50\xd7\xb1\x2f\x3d\xa6\x39\xa3\x6c\x89\xe4\xa1\x75\x17\x43\x93\x68\x64\xbb\x7b\xdf\x1d\xdc\x53\x77\xf2\x5a\xf0\xce\xfd\x84\x08\xf6\xba\x0f\x36\x69\xf0\x52\x0e\xdb\x30\xd5\xd5\x56\x16\xbb\xe8\x93\x9a\x69\x46\x5c\x3c\xfc\x3a\x1c\x2b\x15\x5e\xc4\x21\xa4\x1d\x33\x3c\x23\xff\x5b\x49\xff\xdb\xf5\xa1\xee\x0a\x76\xfe\x15\xab\x5c\xd1\x60\xef\x36\x6a\x2f\x65\x97\xd2\x0d\xed\xdc\x35\x6b\xee\x65\x6a\xdc\xf5\x69\xf5\xfa\x3e\x6f\x55\x73\xc7\xff\x22\x3d\x6b\x79\xf9\x05\xe5\x3f\x3e\x9b\x51\x11\x12\x80\x1d\x28\x05\x47\x7b\xaa\x4b\xd8\x73\xe0\xe4\x14\x36\x8d\xae\x66\x5e\x22\x6a\x36\x54\x98\x5a\xbd\x28\x76\xb5\x5e\x8a\x6a\x8a\xe2\x23\x3f\xdf\x84\x4a\x8b\xc1\x89\x83\x44\x5f\x59\xdc\xfe\x4c\x31\xe5\xdf\xf2\x1c\xc5\x14\x8f\xef\x28\x66\x2a\xd2\xbf\x2b\x80\x58\x57\x05\xc0\x77\xca\x6e\xa7\x36\xfa\x22\x14\xcc\xb1\x0f\xa3\x8b\x7b\x11\x98\xb5\x4f\xa2\xc0\x56\xa8\x45\x99\x1c\x9c\x9c\x7a\xca\xd3\xb6\x0f\x6c\x14\x2b\xf6\x23\x9f\x55\x6c\x68\x83\x6e\x8e\xa4\x9f\xbf\x5d\xf4\x6a\x37\xaf\x27\xc3\xdb\xa1\xe3\x57\xb3\x20\xc1\xf5\x67\x01\xd6\x7f\x2a\xf1\x55\xf2\x04\x41\x9f\x01\x2c\x7c\xc6\x0c\x0d\x18\xd4\xed\x43\x46\xcb\xde\xb1\xc3\x66\x53\xfd\xd9\xab\xf0\x9f\x7f\x37\xf8\xc5\x3c\xc9\xbd\xa2\x50\x88\x6c\xd9\x6e\x04\x29\x33\x43\x16\x84\xef\xdb\x18\x13\x7f\xfc\x48\xfc\x43\xe6\x78\x71\xd3\xb3\x4b\xfe\x70\xe7\xff\x7b\xa1\x07\xb7\xa0\xef\x1e\xeb\x50\xea\x53\x22\x11\xb2\x07\x71\xa6\x55\xa4\x38\x1a\x7a\x22\x2c\xf6\x14\x84\x9f\xd7\xfe\x59\x97\xe6\x69\xb3\x79\x42\x15\xfe\xc0\x69\x55\x38\xa8\xdd\x66\x92\x2c\x82\x2c\xaf\x8b\x59\x46\x51\x64\xec\xdb\x64\x63\x38\x52\x26\xae\xc3\x0d\xec\x22\x2d\x97\xdd\x42\x7d\x09\x74\x88\x7b\x85\xbc\xf7\x0a\xc1\x4e\xdf\xaa\x38\x7b\x50\x30\xc6\x38\x3d\xe8\x6e\x51\xee\x1a\xca\xb6\xf7\x76\x6f\xd6\x2f\xd0\x7c\x25\x8e\x05\xa8\x7c\xec\x60\x76\x44\x27\xfb\x7f\xbd\x6f\x93\x5b\x6f\x90\xd8\x5c\x34\xde\x61\xca\x72\x77\x44\x82\x96\x4a\xf6\xeb\x8e\xee\xc4\x9b\x14\xbb\xe0\x7a\x51\x4f\xda\x85\xd6\x85\x2e\x63\xb2\x7f\xbf\x4c\xf6\x5a\x9a\x98\x90\x78\x81\x5f\xfb\x32\x7a\x72\xac\x8e\x5b\xc2\x5a\x7e\x02\xe6\x33\xa1\xbe\x0d\xed\xdf\x43\x3d\x90\xd4\x06\xd9\x82\x8a\xee\x91\x20\x70\x2e\x22\x9d\x0e\x0c\x0c\xd6\x63\x57\xba\x6e\x16\xf5\xd7\x90\xd9\x32\x37\xe4\x91\x5d\xa2\x8d\xb4\xe0\xa4\xfe\xfe\xe1\xd2\xf6\x8a\x6d\x9b\x4c\x0a\x9b\x38\x31\x13\xd2\x48\x61\x27\x96\x57\xa7\x2c\x47\xad\x42\xcf\xb6\x71\xb6\xf6\xdb\xfe\x6d\xa6\x2d\xe3\x07\x0d\xa6\xf6\x5d\x60\xde\xbf\xf2\x9b\x6f\x8c\xf4\x14\xfc\x68\x49\x13\x19\xec\x9d\x05\xe7\xff\x4b\x88\x83\xea\xba\x3c\xe8\x17\x2c\xcc\x1e\x46\x52\x7c\x34\xba\x9b\x9a\xf7\x32\x35\x6f\x78\x3a\x7f\xaf\xa4\xf2\xdc\xab\xb9\x34\x2e\xe4\x7e\xec\xbd\xaf\xb5\x06\x70\x6f\x39\x01\x2a\x40\x4a\x47\xc0\xa6\x1c\x7b\xda\x94\xb0\x8e\x52\xc2\x1d\x50\x50\x0f\xda\xf3\x09\x7c\x0f\xfa\xd8\xeb\xc1\xc5\x25\x7e\x13\x03\x0a\x2a\x15\xc1\xd2\xd0\x10\xa7\x78\x16\xaa\x25\x59\x52\xd7\xa2\xe2\x6c\x76\xdb\x03\xf1\xab\x89\xbd\xf4\x4f\xdb\xa3\x07\xa5\xa7\x5c\x5a\x68\x9b\xc3\x25\x7f\x74\xf1\xa2\x51\xa5\xdf\xc5\xf0\x4c\xb5\xd6\x02\xdc\x5b\x62\xf3\x51\x85\x67\x54\x73\x89\x5c\x81\xfe\x0f\x16\xb9\x97\x6c\x6c\xf9\x1d\x80\x45\x6e\x2f\x58\xef\xec\x39\x28\xca\xa0\x8c\x3a\x73\x49\x98\x8d\x31\x85\x2a\x96\xbb\xf0\x7c\xd4\x71\xea\xfc\x43\xb6\x24\xf2\x93\x3f\x8d\x07\x9e\xe5\xcc\x48\x19\x9a\x9b\xce\xdb\x4a\xe6\xec\x8e\xfe\x17\x93\xb0\x91\x28\x88\xb1\xc9\xea\x77\x2e\xdc\x17\x02\xd8\x2c\xab\x84\x66\xf0\x2e\x98\x14\x32\xe9\x3d\xd9\x28\x36\xb2\x25\xdb\x23\xc4\x27\xa0\xcf\x53\x30\xec\xfd\xe5\xcf\x9e\x7f\x30\xb4\xe2\x03\xee\xd7\xe5\xe5\x7d\x98\x4a\xad\xdf\x5b\xab\x9f\x2b\xf5\xc3\xf1\xe3\xfb\xb1\x11\xd9\xb2\xf2\x00\x33\x8b\x95\x71\xd5\xf2\x23\x42\xd0\x87\x75\xc8\xd3\x9e\xd8\x82\x14\x28\x19\x61\x8a\x18\x8a\x62\xc0\xda\x34\x64\xed\xc8\x72\x8b\xa0\x39\xc8\x1a\xcd\x44\xc3\xfb\xfa\x2e\x62\x3e\x58\xe8\x7e\xb1\x15\xaf\x20\x54\x1d\x3e\xd3\xc8\x2b\xf3\xcd\x88\x09\x92\xbf\xab\x1b\x4d\x89\x8c\x53\x1a\x49\x21\x5b\xef\xcb\x37\x21\x30\xb1\x54\xd8\xc6\xfc\x45\x7d\xd4\xd1\xe9\xf6\x4b\x8b\x40\xf9\x14\x96\x30\x84\x73\x5d\x04\x16\xf4\x6f\xa7\xb4\xa2\x08\x81\x88\xf8\xdf\xcd\x96\xc7\xe0\x5d\x88\xec\xb0\xd3\x98\x78\xa1\x55\xd9\x65\x1d\xa2\xcf\x6c\x33\xc8\x06\xeb\xbc\x88\x6f\x82\x66\x8c\x5f\xe6\x2a\xd7\x94\xc8\x08\x69\x6e\xa8\xd9\xb4\x57\xa2\x56\xd2\xa0\x09\x36\xb0\xe4\x2c\xb2\xa8\x39\xfc\x09\x50\x0f\xb7\x28\x52\x6a\x37\x2d\xd2\xfc\xe1\x84\x5e\x45\x1d\xf1\x3e\x4b\xb2\xa7\x64\x04\xd2\xaf\x64\xdc\x5e\x65\xf0\xab\xdb\x9e\x16\x71\xcb\xec\x49\xbe\x63\x70\xff\x4f\xef\x92\xc1\xba\xb2\x89\xc0\xd5\xb1\x54\x03\xf7\xfb\xef\xbd\xf7\x7e\x4b\xb5\x09\x61\x02\x6a\xf4\x4b\x60\xb4\x2f\x19\x39\x4e\x81\x0b\xe8\xe5\x19\xa5\x48\x18\xd7\xfc\x22\x3c\x39\xd6\x1e\x89\x2a\x2f\xff\x20\x7a\x19\x8a\x59\x8d\x7e\x83\x03\x2a\xab\x3b\xbf\xb8\x47\x54\xc9\x55\x8d\x4f\xd3\x2e\xe9\xab\x91\xd9\x90\x56\xa7\x15\xec\x29\x5c\x31\xcc\x97\xd9\xb1\x06\x76\x51\x65\x58\xb1\xca\xe5\x71\xcd\xd2\xca\xa9\xb9\xaa\x09\xd5\xbf\xf4\xd8\x89\xfc\x8f\x3f\xd3\xa7\xf3\x3c\x6c\x1a\x54\x83\xea\x79\x38\xe7\x0c\x47\x6e\x95\x38\x04\x78\xe1\x7b\xc2\x1b\x0f\x75\x52\x33\xbd\x5e\x49\xc5\x9b\x9c\x47\xa7\xe9\x7e\x45\x9e\x38\x44\xc4\x59\xf0\xf8\xfc\xec\x03\x67\x93\xa0\x64\x07\xde\x83\x1c\x9c\x29\x2e\x88\x25\xaa\x7f\x29\xd8\x0c\x36\x3e\x64\x67\x91\x2c\x4b\x95\xeb\x66\x9e\xbd\x0a\x8c\x2e\x05\x70\x6c\xad\x58\xd7\xe1\x93\x5a\x7f\x9d\x2b\x27\xc4\xc8\x0e\x1e\xa2\xee\x40\x8f\x75\x83\xad\xc7\xbb\x5f\x27\xb5\xb0\x1f\x9f\xee\x66\xe8\x76\x1d\xe9\xbf\x17\x57\x4d\x61\x0c\x8a\x7a\x01\xbe\x53\x19\x9d\x53\xec\xe7\x21\xf1\x63\x48\x02\x5b\x78\x26\x6a\xed\x46\x1e\xd2\x9a\x25\x2a\xbe\x6d\x09\x26\x85\x0d\x20\xd5\xf3\x68\x63\xc0\x2b\x65\x15\xf8\x52\x3f\x4e\xee\x2a\xc7\xf3\xe3\x47\xfd\xe0\x55\x86\x5e\x1e\xae\xd6\x77\x79\x1f\x9e\x48\x5c\x77\x60\x4e\x86\xc3\xf4\xf0\x59\xc5\xcd\xb0\x77\xfc\x91\x7a\xe1\x70\xce\x31\x93\x4e\x23\x75\x22\xf4\x99\x7b\xba\x3d\x8f\x8f\xf5\xd2\x50\x6d\x94\x62\xc0\xdf\x4f\xb8\xf0\xc0\x3d\xcd\xf5\x91\x0d\x3e\x47\x1c\x86\x93\x99\x8f\xe9\xb8\xee\x8d\xab\xa0\x39\x08\x18\x84\xad\x69\x3d\xf6\x58\x54\x09\x1f\xeb\x55\x7d\x4b\xf3\x4d\xc2\xbe\xa1\xe0\x34\x4c\x32\x9f\x8c\xe7\x86\x11\xc1\x58\xad\x8d\x4e\x49\xa2\x26\x6f\xbe\x80\x49\xab\xfa\xf6\x1b\x1b\xd9\xfe\xca\xdb\xfe\x27\xcf\x35\x62\xd5\xa4\x03\x5c\x23\x73\x36\x37\x5a\xaf\xb2\xe7\x90\xdc\x70\xcb\xa2\x46\x7b\x65\xcd\x74\x79\xc5\xf8\x91\x73\x31\x2c\x12\xdf\x2d\x46\x06\xc0\x36\x46\xcb\xcc\xd5\x98\x49\xdd\xed\x37\xa5\xdf\x04\xae\x96\x26\x89\x9a\xbe\x72\xb7\x9c\x03\x02\x7e\xd6\x20\xb8\x54\x62\xde\xdb\x54\xf7\x6c\xa3\x27\x1b\x16\xf8\x5d\xed\x23\xde\x0b\x39\x7f\x44\xee\x9c\xde\x55\xd0\xbd\x80\xd9\x87\xcc\xc5\xbb\xd2\xf7\x13\xa0\x64\x4d\x69\xe7\xd9\x90\x7e\x8f\xd9\xd6\x03\x87\x0f\x33\xd6\xb6\x06\x04\x23\x7e\x84\xf5\x6d\xe9\x41\xe5\xd7\xe7\x5e\x99\x0c\x8e\x96\x3e\xbf\x3e\x13\x94\xa3\x24\x4d\x47\x2e\x7a\xd7\x8d\xb0\x61\xc0\xc4\x4b\x33\xf4\xe4\xdc\x86\x2b\x6b\x83\xc4\x61\x3a\xef\x41\xe6\x3d\x39\x32\x2f\xf5\xe4\xf3\x58\x69\x37\x22\x20\x7f\x86\x6c\xa5\x1b\x37\xe9\x60\xbd\xd0\x8e\x0a\x2b\x63\x75\x3c\x3d\xb1\x51\x30\xca\xb3\xd5\x01\x4b\x96\xcd\xb8\x73\xb7\x0c\xc1\x71\x5f\xe0\x4e\x7e\xad\x9a\x32\xa1\xda\xb6\xb9\xd8\xd1\x17\xc2\x45\x09\xc7\xdf\x15\xa2\xbb\x38\x85\x00\xc6\x66\xa7\x5e\x67\x25\xdb\x5f\x04\x11\x9b\xfd\x9c\x34\x10\xab\xcd\xdb\x80\x6d\x14\xad\xd9\x6c\x2e\x68\x05\x72\x60\x9f\x13\xbc\xe5\xaa\x60\x01\x01\xc3\xd6\xee\x2f\x8e\xb9\x2a\xae\x4b\x7e\x85\xfa\xf0\x2d\x94\x50\x49\x99\xb7\xa3\x4c\xb6\xde\xf2\x31\xf8\x3b\xcb\x75\x82\x00\x92\x6f\x06\x24\x67\x2a\x2d\xe2\x46\x0d\x6f\x65\xc8\x5a\x9e\x25\xa6\x7d\xb4\xf5\xe2\xc4\x27\x0b\x2d\xd0\x4d\x97\x2a\xc2\xe2\x75\xf8\xb4\xc4\xf7\x01\xd6\xd6\xec\x17\x9d\xd7\x3c\x38\x04\x8f\x52\x32\x96\x15\x4e\xae\x2e\x90\xdf\x7e\x18\x84\xc7\x66\xd6\xec\xf3\x50\x4c\x2f\x3b\x98\x7b\xf9\x05\x56\xc3\xe4\xb0\x75\x29\xa3\x1a\x2e\x0e\x1f\xdf\xce\x72\x29\x2d\x63\x0b\xfd\xc6\x99\xdb\xbd\x41\x64\x04\x48\x00\xa1\xaa\xe0\x95\x2a\xc1\xcd\x2d\x68\x1c\x7e\xe9\x77\x49\x13\x28\x9c\x16\x64\x04\x3b\xd7\xb3\x95\xad\x73\x53\xac\x5a\x64\xb0\xb0\x7e\x57\xcb\xe2\x17\x48\x01\x9c\x9e\xe7\x6a\x93\xc7\xff\x96\xfc\x96\x56\x1d\x79\x99\xf3\xbd\x95\x51\x8f\x81\x2d\x2f\x37\x01\x28\x4e\x19\x94\x4f\x9d\xe3\x87\xf2\x40\xc1\x97\x49\x5c\x29\xc3\xb1\xe0\xf1\xc2\x64\x4e\x1d\xa6\xec\x2b\xbf\xcc\x74\x11\xd7\xeb\x14\x57\xc8\x17\x90\x31\x69\x9a\x4c\x0c\xcc\x70\xe0\xbc\x97\x5b\x58\x9a\xe7\x23\x23\x0d\xd4\x37\x27\x3c\xde\xe0\xcb\xe8\x2f\x8b\xa1\x58\x63\x5f\x28\x24\x6a\xd3\xa7\x07\x79\xae\xea\xef\xe9\x66\xfc\xed\x83\xbc\xb4\x18\x82\xc9\x7f\xab\x05\xb0\x98\x5a\xdc\x94\x19\x07\x24\x0b\xf7\xc6\xbb\xaa\x17\xa3\x5a\x25\xb0\xf8\xfb\x3e\xae\xe5\xbc\xa7\x9f\xf3\x3d\xd0\xe3\x77\xdc\x20\xd1\x84\x8a\xca\x05\xb1\x1e\xcc\x04\xb3\x39\x71\xcb\xde\x40\xa6\x6d\x41\x1c\xa6\xaf\x17\x38\xc8\xc4\x97\xbf\x40\x0e\x6b\xc3\x18\x4c\x75\x31\xf4\x5f\x5f\xdf\xb4\x67\xd2\x70\x34\x97\x63\x48\xe3\x74\x16\xa5\x1a\xe7\xe8\xab\xe2\xb2\xaa\xb8\x54\x93\xca\xa9\xdf\xce\xb8\xd9\xb1\x1f\x19\x1f\xdc\x5a\x6f\xfb\xf2\xab\xe7\xd9\xd6\x82\x63\x13\xda\x62\xae\x2b\x3a\x15\x6f\x4b\x86\xb3\x0e\x79\xfc\xb6\x71\xfe\xb2\x29\x8b\x7e\x65\x9b\x65\xfa\xbf\x6b\xec\x2b\xe5\x8f\xa2\x59\x9d\xd3\x4d\x3e\x23\x66\xc5\xb3\xe5\xce\x57\xb8\xd0\xcf\xc9\x2a\x8f\xe8\x80\x82\x12\x9d\x8c\x3b\x38\x44\xb4\x8d\x4e\x86\x1f\xd9\x45\x9b\x57\x38\xbd\xa2\xd2\x14\x55\xbb\xb5\x13\x2a\xdb\x2e\xe6\x44\x21\xe3\x68\x56\xac\x9f\x7c\xb7\xf4\x90\x6a\xac\x7f\x36\xf1\xcb\x98\xd1\xbe\x6f\x91\x9d\x83\x68\x20\xbe\x2c\x08\x95\x69\xdf\x3c\x40\xd3\x97\x4d\x27\x6e\x19\x68\x27\x94\xb9\x8c\x6a\x9e\xae\xdf\x4b\xa5\x56\xb3\x07\xd5\x5a\xcd\xa5\x90\x7a\x59\xde\xca\xba\xba\x66\xd0\xab\xec\x46\x57\x6d\x25\x9b\xd4\x63\x60\x6c\x21\xdf\x74\x1c\xbe\xd1\x97\x43\x6e\x5d\xae\x1c\x90\xe2\x7d\xe3\x23\x34\xfe\xba\x8b\x2b\x32\x2f\x8d\x63\xb5\xcd\x71\x23\x66\x41\x2a\xcc\xb9\xa4\x22\xae\x04\xfa\xe6\x38\xe0\x57\xac\x9d\xe6\xb9\x54\x7a\xeb\xbc\x8b\xf5\xf5\xa2\x6c\x93\xc8\xfb\x91\x87\x38\xbf\xf6\x64\x78\xef\x3d\x2b\x0e\xff\x47\x3d\x90\xeb\xb3\x04\xf7\xd7\x82\x71\x75\xca\x2e\xeb\x2b\xdf\x26\xad\xf8\x29\x93\xf3\xf7\xcf\x8f\x1c\xd5\x6b\xcd\x9e\xfb\x30\x63\x8f\x39\xf7\x2f\x30\x2a\xb7\x40\x94\x4c\x95\xd7\x06\x60\x39\x03\x13\x5c\xf7\x94\x91\xf2\x4f\xc9\x15\x7c\xdc\xd9\x45\xf9\x9a\x75\xf9\x40\x33\x6b\x9e\x1c\xe3\x3b\x06\x44\x79\xe4\xaa\x0e\x95\x5f\x7f\xff\xd0\xc9\x3d\x75\x4b\xa3\x50\x98\x08\xba\xc7\x7d\x50\x9d\x53\x6a\x7e\x28\x8d\x76\xc3\x15\x3a\xea\x2d\xea\x23\x3b\x7b\x17\xae\xd2\x0f\xf2\xde\x7f\x48\xa5\x52\x02\xed\xd3\xa3\xf2\x86\xd1\x29\xc2\x0a\xfa\xce\xef\xd2\x80\xf1\x65\xd5\x6e\x98\x69\xc0\xde\x48\xf2\x2c\xdf\x60\x6d\x00\x02\xc3\xdf\x05\xe2\xc5\xe9\x62\x77\x71\x6b\x8f\x2e\x39\x1c\x10\x43\x77\x60\xf0\xed\x95\x80\x5f\xc2\x50\x2a\x74\xb9\x29\x8d\x49\xc1\xcc\xa8\xde\xa5\xd7\x3b\x55\xae\x06\x14\xe5\x41\x2d\x70\xbf\x9b\x89\x23\x7a\xc4\x5b\x60\xcf\x76\xa8\x66\x28\x3d\x53\x5b\x8c\x5b\x91\x12\x11\x5d\xa2\x3f\x1c\x39\xd3\xfa\xba\x21\x5c\xb2\x65\xb9\x72\x93\x24\x17\x88\x9a\xfd\xb4\xf8\xb8\xb5\xee\x5d\x19\xbc\x8b\x07\xe6\x1c\xfe\x23\xf3\x25\x37\x2e\x85\xad\xce\x8e\xd3\xfa\xcc\x92\x6f\xdd\xb6\x3a\x84\x95\x00\xb1\x3b\x48\x7a\xac\x03\x68\xdb\xd9\xfa\x41\xd3\xc8\x13\x0b\x2f\xfe\xa5\xfe\x5c\x5f\xcb\x27\xfc\xef\xd7\xcf\x5d\x24\xf6\x9e\x65\x45\x1c\x49\x71\xbf\x01\x35\x46\x77\xa5\x6a\x35\xbc\x3e\xfb\x52\xf9\x58\x6b\x62\xfc\x33\x13\xf3\xe6\xdd\x69\x98\x19\xe9\xe6\xa5\x66\xc4\x99\x97\x98\xa9\x02\xfb\xa3\xa8\x66\x73\x3c\xd9\x7c\xe8\x3a\x9b\xfc\xc3\xd1\x5a\x9c\x6b\x8f\x8a\x9b\x3f\x78\x50\xf3\xcd\x88\x4d\xdb\x6e\x13\xbf\xa3\x52\x3c\x08\x6d\x37\xba\x00\x2b\x70\xc5\x5b\x4b\x50\x00\x61\x15\x11\xa3\xae\xd7\xf4\x7f\x37\x65\x08\x2d\x08\xc6\xcf\x1c\xb2\x0a\xf2\xaf\x88\x5b\x8f\x65\xfb\x9c\x41\xe9\x8e\x7b\xe6\xcc\xb6\x74\xa3\xc6\x9d\x31\xa2\x36\xe2\x23\x12\xf9\xf2\x4a\x0c\xc3\x7f\x4d\x0b\x63\xd0\xc8\x1b\x62\x28\x82\x38\x84\x90\xb0\xe9\xca\x3f\x5a\x8f\x21\x2d\x2b\xe3\x10\x01\x8e\x5b\x00\x42\x32\x03\xf5\x8a\xc3\x0b\xaf\xdf\x7c\x87\xda\x98\x23\x65\x88\x36\x52\xac\x1d\x43\x38\x38\xc8\x9b\x03\xd5\x84\x21\xa7\x7a\x33\x23\x50\x63\x17\x66\x80\x63\x59\xc2\xde\x7f\x01\x64\xf6\x52\x09\xb5\x1b\xcd\x78\x9d\x6c\xfd\x9e\x45\xd0\x53\x4d\xac\x96\x0f\xdf\x45\x55\x3c\xcf\xe3\xcc\x02\x21\x3d\xcc\x1a\x20\x2f\xb3\xd8\x81\x2c\x33\xc0\xaf\xfe\x59\x2d\x33\xda\x25\x6b\x19\x66\xea\xa2\xa5\x76\x2f\xef\x14\x5a\x3f\xb6\x77\xac\xf2\xfd\x49\xd5\x09\x46\x4d\xd0\xd3\xca\xea\x79\x65\xf4\x72\x65\xf6\x48\x45\xe7\xef\xd5\xf6\x0d\x20\x69\xd9\xe3\x05\x7b\xee\xf0\x4c\x82\xb6\x2e\xf6\x14\xc2\x85\x5a\x27\xc3\x1c\xd6\xb4\xa4\x82\xb9\x03\xc9\x5d\x02\x2a\x8a\xfc\x77\x9e\xba\x32\xc7\x6b\x4c\x30\xc3\xb7\x4a\xf6\x4a\x3b\x70\x61\x45\x29\x11\x61\xe1\x2e\x7f\x11\x96\x22\x78\xd7\xd9\x23\xc6\x51\x1e\x46\xe7\xf2\x1c\x33\x0b\x50\x8c\x30\x84\x5a\xc0\xb6\x0b\xc0\x8a\x6a\x0e\x82\xcb\x9d\x82\xb9\xa2\xb9\x13\x3b\x09\x2d\x5f\x70\xe5\x3b\xaa\x99\x3b\xb2\x53\xd0\x9f\x05\x67\xbe\x8b\xfe\xde\xf2\x84\xb4\x37\xbe\xc8\x98\x8f\xde\x02\x4b\x55\xa6\xfe\xb5\x93\xfd\xb7\xfb\xfe\xd9\xbe\x41\xa5\x93\xb6\x79\x5b\xde\xe2\x87\x12\x98\x1b\xb4\x4a\x40\x91\x56\xd4\x30\xe4\xe0\x89\x93\x36\xf5\x4d\xdd\xfe\xf9\xfb\xeb\xc0\x35\x99\x9e\x33\x64\x0e\xc7\xcf\x9c\x8a\xaa\x45\xfc\x78\xc0\xd6\xbc\x75\x13\x45\xe4\xb5\xd6\x7c\xb0\xe9\x3d\x87\xc8\x0c\x3b\x82\x1c\x60\x7e\xeb\x25\xc0\x6a\x91\xc0\x14\x8a\x57\x29\xf9\x50\xd4\xea\xb3\x9c\xae\x56\x41\x10\xd4\x4d\x0c\xaa\x1a\x28\x27\x7f\x35\x59\x07\xb8\xf3\xe9\xef\x42\x9a\x84\x8a\xb7\xc5\x90\xa2\x0d\x57\xb2\x57\xc9\xa3\xb0\xee\xb1\x60\x74\xe0\x30\x3b\x68\xff\x82\xf1\xa3\x5c\x95\x7f\xb6\x55\x04\x6f\x33\xf7\x10\xa3\x1c\xf8\x06\xf8\xe3\x3d\xa1\x1f\x25\x6e\x84\x13\x00\x6b\x6e\x25\x04\xbe\x88\x30\xe5\xb2\x51\x61\x99\x55\x8d\x98\xb2\xde\xd0\xaf\xa4\xb2\x85\xe6\xa9\x9c\xae\xe3\xf6\x24\xdc\xf4\x2e\x23\xf4\x56\x1b\x5a\x75\xd6\xea\x0d\xde\xfa\x93\xb3\xdc\xd0\xe3\x77\x2d\xbb\x5d\x3e\xbb\x8d\x10\xc8\x3a\x3e\xac\x44\x89\x44\xc7\x24\xcf\x15\xa0\xea\x8c\x7a\x9a\x27\x4e\x18\x62\x18\xf0\x4e\xc5\xb9\x73\x85\xbc\x0a\x74\x1e\x1b\x8c\xef\xe3\xc5\xf0\x5e\x86\x8a\xbc\x1f\x4a\x09\x0c\x32\xbe\xf3\x4e\xee\x3b\x56\x50\x10\xcd\x1e\x72\x42\x5c\x11\x8c\x91\xcd\x4a\xc0\xca\x65\xed\x56\xae\xfa\xe0\xe7\xc3\x5c\xf5\xc0\x1f\xd3\xe6\xbe\x8d\x70\x6f\x6d\xf5\xd7\x99\xac\xa4\xd0\x72\x12\x24\xe2\xb4\x82\x6e\xc8\x9d\xcc\xef\x04\xda\xec\xff\xd0\x15\x1e\xd4\x2c\x43\x23\xfe\x43\x6a\x82\xd0\x34\x7e\x12\xce\xc2\x72\xf9\x84\xc3\xf3\xfe\xcf\x5a\xd1\xc3\xbe\x3f\xdb\x7c\xab\xf6\xa3\x36\x5d\xcc\x58\x25\xbb\x93\xec\x2b\x16\x36\xf3\x4f\xa8\xa6\x47\x6a\xb8\x30\xd1\xa5\x0c\x70\xbc\xf1\x1c\xd9\xfd\xed\x3b\x5d\x6a\x99\xe9\x55\xa0\x7e\x9a\x0a\x3c\x48\xd7\x51\x85\xae\x64\xb1\x49\x7c\x33\x2c\xcf\xb7\x59\x9c\xa8\x98\x4a\x19\x46\x67\xb5\xdc\x56\x67\x8d\xa5\x68\xd9\x53\x9b\xaa\x9e\x2a\x1f\x3b\xc5\xac\xf2\xfb\xa1\xf2\x01\x28\x19\x8f\x43\x35\x44\x96\x6a\xd4\x66\xa6\x78\x4d\x4f\x9d\xff\x45\xb5\xae\x28\x1b\xaa\x86\xa5\x27\xc9\x9a\x56\x23\x00\xc7\xa7\xc9\x30\xb2\x48\x30\xa4\xa2\x2b\x4d\xc5\x54\x0e\xcf\x78\x5d\x65\xa8\x68\xaf\x09\xdb\x99\xf5\x12\x96\x4f\xb5\x3b\x26\x61\xe7\x9c\x43\xc7\x83\x83\xa0\xe0\xea\x9e\x45\x9e\x37\x6f\xac\x1c\x2e\x6d\x47\x18\xf3\xf9\x8b\xc3\x42\xf1\x5f\xc0\x2b\xd1\x9c\xbb\x94\xd5\x6b\x91\xf9\x8f\xc0\xb2\x12\x7f\x2e\x8a\x66\xc0\x7e\x28\x62\x65\x94\x8f\x3d\xd9\x5e\x38\xcd\xfe\x7f\x55\xe1\x7a\xe1\x23\x2a\x79\x37\x1e\x51\x1d\xa1\xb7\xfd\xad\xe7\x61\xef\x88\x7e\xec\x1a\x4b\x97\x13\x30\x2e\x23\x54\x83\x87\xda\x77\x49\x86\xf6\x27\x49\x0f\x57\x09\x0a\x65\xe3\xaa\x78\xd5\x94\x78\xe4\xda\x2f\xd7\x1d\x7f\xf8\x87\xbd\x37\x26\x38\xad\xe3\xa6\xcc\x31\x55\xac\xbc\x88\x0a\x16\xdf\xd7\x41\xdc\xab\x3a\xbe\x83\xba\x1d\xb9\x3f\xb8\x7a\xe9\xbb\x05\xc9\x7e\xad\x54\x78\x71\xa3\x1e\x4e\xb1\xce\x99\x66\x56\xcb\xdb\x59\xcb\x9f\xa9\x8f\x38\x34\x6f\x2d\x07\x0e\xec\x30\x65\xfe\x34\x4a\xaa\x11\x42\x70\x62\x8a\xfb\xe9\x7f\x21\x2b\x7d\x2f\xf5\x77\x5d\xb0\x65\x1f\x71\x35\x35\xb9\x73\x2a\x12\x93\xa9\x2d\x4b\xdf\x85\x09\x80\xfd\x63\x8c\x6d\x29\x6c\x95\x94\xc8\x96\x13\x31\x58\x13\xeb\x7c\x32\x89\xec\x89\x74\x95\xc2\x1a\x26\x76\xd8\xa8\xf6\x8c\xfa\xbc\xba\xb7\x9b\xe8\x6b\x1e\x14\xe7\x96\xca\xcf\x07\x90\xfc\xe9\x5d\x05\xf6\xf4\x03\x33\x49\xf3\x06\x8d\x92\x55\x98\x9f\x4d\xa0\x4b\x33\x3b\x60\xfb\x56\x22\x63\x54\x86\x42\x59\xe0\xde\x3e\x2b\xd8\x40\x21\xaa\xcd\x4b\x85\x1d\xdb\x49\x2e\x69\x59\xde\x10\xfb\x63\x9d\x6a\x44\xe6\xc8\xe6\x00\xe8\x10\x34\x50\xab\x13\x51\xfc\x57\xa9\x0b\x7b\x32\x9e\xba\x6a\x62\x24\x38\xcb\xf4\x49\x05\x64\x15\xa9\x1d\x9a\xd5\xcb\x38\x41\xad\x49\x8c\x4b\x3e\xef\x47\xf6\xe3\xf1\x39\x51\x02\x10\x1c\x79\x9b\x92\x85\xf1\xbd\xab\xd7\x78\xfa\xfe\x95\x3a\xf4\xd8\xf6\x39\xeb\x8c\x31\x3f\x85\xda\x52\xaa\x0d\x26\xe9\x2b\x14\x26\xa9\x45\x65\xda\x28\xab\x20\xf3\x81\x95\x21\xea\x5b\x52\x4d\x43\x60\x77\xed\x52\xea\x3c\x20\x42\x6e\x6e\xd7\xc7\xe0\x0e" +var _vendorsMainB247804e9d197faee69aJsBr = "\x5b\x6e\xcb\x73\x03\x9d\xb2\x96\x71\xb8\x46\x9d\x8e\x6d\x33\x4b\x3d\xda\x0f\xf8\xa1\x42\x76\x3e\x34\xee\x56\x8c\xca\x29\x05\xef\x3d\x07\xd0\xd3\x76\xc1\x8f\xde\xac\xf2\xf3\x47\xb2\x4d\x08\xa0\xaa\xaa\x9a\x93\x74\x8c\xe1\x86\x7e\x20\x94\x59\xd5\xff\x16\x79\x84\x1b\xc3\xcc\x24\x2f\x8a\xad\x8a\x76\x43\xc6\xc4\xb1\x02\xa2\x6d\x79\xe0\xc4\x7e\xd1\xcd\x81\xca\x5c\x78\xf2\xa6\x17\x77\xc1\xf7\x61\x88\xaa\x32\x28\x55\xb4\x5f\x51\x3a\x2b\x6e\xc7\x08\xc7\xee\x0d\xe9\xf8\x9e\x7c\xa6\xe8\xa0\x99\x53\x18\x2c\xce\x20\xa7\xc5\xc7\x15\x23\x30\xdd\xa1\x72\xa4\xb7\x65\x1a\x3e\x36\x6b\xb0\x58\xc6\xdc\xe0\xb4\xf3\x3a\xf6\xd3\xe1\x35\xb1\x20\xa8\x29\x72\x60\xf1\x32\xcf\x58\x42\xb0\xb8\x0e\xa7\xa1\x45\xe9\x47\xf9\x8a\x0a\xc7\x82\x90\xde\x1a\x67\x97\x2f\x86\x29\xf3\x16\x95\x8c\x09\x59\x4f\xcb\x8b\xb7\xb7\xfa\xfc\x9a\x1e\x47\xf4\xf7\x16\x49\x90\xfe\x7f\x54\x8b\x3e\xae\x3a\xbc\x94\x9f\xe5\x10\x14\x18\x0d\xc3\x7f\xf6\x9f\x93\xfc\xe1\x9f\x7d\xe1\x6d\x79\x30\x79\x71\xb6\x89\xaf\x3e\xea\xf8\x75\xf8\x53\x00\x1d\x37\x5f\x09\x96\x10\x24\x58\x62\x6f\x86\xf4\xb9\x85\x14\xf3\xe4\xf3\x6f\xaa\x8f\x7b\x96\x29\x3c\xb7\x87\x1a\x90\xf4\xdf\x48\x6d\x63\xee\x78\x92\xa3\x48\xd8\x5f\x17\x0c\x0e\x82\x54\x91\x61\x1b\xb2\xb6\xa6\x54\x9f\x15\xe8\x64\xd1\xaa\x99\x38\x86\x29\x9b\xcd\x51\xbb\xe6\xc2\x73\x48\x0a\x00\x1e\x71\xeb\x35\xad\xff\xfa\x35\x79\x89\x3c\xaf\xd6\xa4\x82\x43\xdd\xf1\x43\x0e\x9b\x2d\x3b\x6f\xd0\xfa\xe9\x30\x4d\x34\x09\x4d\x13\xe8\x45\x03\x9c\xa1\xa7\xea\xc1\xff\xdb\xa7\x96\x5f\xdf\x4d\x0c\xda\x75\xd5\x47\xa4\x64\xe7\xfb\x54\x2a\x87\x90\x35\x8d\x01\x2d\x70\x67\x39\x81\x5a\x50\xa4\x53\xd5\x5b\xa7\xd6\x38\xbd\x44\xa9\xdb\x68\x1b\x43\x4a\x85\xd4\x53\xf6\xed\x09\xd2\x0d\x9d\x9e\xf4\x53\xf2\x84\xd0\x64\x5b\x42\x28\xcc\x74\x29\xdf\xe7\x33\xfc\xcf\x57\xb5\xff\xfa\x5d\x60\x3d\x27\xd7\x4b\xcb\xc1\x95\xd2\xe4\x79\x98\x3c\xd7\x94\x52\x38\x8c\x0c\x49\x4c\x28\xc0\x0b\x02\xae\x67\x7d\x53\xf3\xb3\xaa\xe5\x82\x33\xf0\x3e\xff\x0f\x80\x24\x40\x80\x92\xbc\x9b\xab\xe9\x94\xdb\x69\xd3\x5e\x26\x7c\xee\x17\xe6\x5c\x69\x61\x85\x6a\x29\x55\xab\xc4\x83\x8b\x08\x84\x19\xf8\x97\xf1\xd7\xb4\xaf\x6a\xb7\x68\xd2\x16\xde\xf1\x0b\x4f\x17\x88\x39\x06\xb5\x29\x36\xce\x1d\x47\x41\x94\x5a\x1f\x88\x38\x8a\xd3\xf2\xf7\xff\x36\x7d\xbf\x7e\xc5\xc4\xc5\x33\xd1\x08\x92\x76\x1f\x79\xac\x38\x2c\xc7\x6e\x8a\xe1\x18\xc8\x72\x30\x8f\xc8\xd2\xb5\xac\x5a\x48\x54\xf7\xb2\xd9\x52\x07\xf5\x3c\xee\x77\x85\x38\x28\x75\x50\xc1\x3e\x53\xf3\x3b\x5d\x39\x3c\xa0\xfa\xd5\x6f\x69\x43\x7e\x70\x1b\x4e\x69\x82\x53\x50\xd5\xca\x43\x48\xa3\x5a\x49\xe4\x92\x90\x23\xd8\x2b\x29\x27\x3a\xa1\xff\x95\xdf\x57\xad\xb6\xf9\x0a\x4a\x7d\x4f\xe9\x84\x67\xd1\xb3\x93\xc2\xc2\x69\xf6\x33\xff\x9d\x10\x83\x17\xe9\x8f\x14\x44\xca\x13\x85\xa2\xbf\xf2\xb3\xb7\xf9\xf5\xf5\xed\x56\xa4\x31\x7b\xda\x86\x5c\x3b\xf2\xae\x38\x03\x39\x09\x47\x48\xc2\x3c\x79\x3b\xa6\x0c\x0d\x4d\x15\x94\xab\xb8\xac\x17\x7c\x6a\x36\xb2\xc7\xeb\x2d\x12\x01\x3e\x02\xda\xc3\xce\xb6\xe9\xe8\xff\xef\x2d\xb5\x9a\xf1\x3f\x32\x22\x33\x41\xaa\xd4\x0d\xb2\x54\x6e\xac\x34\xd6\x2d\x56\x69\x40\xaa\xdb\xab\x21\x69\xac\x5f\x2c\x11\xef\xde\xfb\x2e\xf3\xbb\x20\xe2\x87\x11\x22\xd2\x14\x33\x13\x89\x16\x12\x00\x4b\x20\xcc\x11\xed\x7d\xef\xfd\x48\xfe\xff\x23\x12\x8a\x88\x4c\xb0\xd2\x80\x6a\x20\xc1\xaa\x06\x21\x75\x1d\x10\xaa\x3a\x45\xa9\x34\x8e\x72\xe7\x94\xda\x18\xbb\x58\xcd\x62\x23\xa9\xbd\x3d\xfb\x99\xcd\x9e\xda\xa9\x34\xe3\x57\xbd\x9c\xcd\x72\xfc\xfe\xa7\xed\xcf\x41\x4d\x42\x9b\x79\xea\xde\xa8\x2c\x0a\xc9\xa2\x16\xbc\xca\xce\xa3\x25\x8f\x56\xb3\x94\x52\x14\x28\xbe\xb0\x5f\xba\x66\xdd\x37\xc2\x7d\x93\xd4\x68\xad\xad\xd1\x07\xcf\xdc\x03\xe7\x27\x16\x55\xf7\xac\x96\x64\x89\x74\x22\x9e\x89\xa1\xa4\x8d\x35\x45\xc7\xdf\xab\xaa\x3a\x4f\x0f\x74\x6b\x74\x2a\x90\x0a\x4a\x8a\x0e\x3a\xc8\xee\xcb\x90\xd9\xdb\x84\xff\xfe\xfb\x20\x09\x7c\x80\x14\x48\xc9\x66\x53\x25\x5d\x58\x5c\x41\xba\xa9\x4f\x94\x26\x2a\x53\x2b\x53\x2b\x53\xb2\xe5\x4c\xca\x7d\xb3\xb3\xb5\x65\xcf\x54\xb6\x8c\x59\x33\x65\x18\xe7\xf0\xf4\xff\xf7\xec\x75\x4e\xb4\x07\x03\xbb\xd9\xbb\x00\x58\x49\x45\x65\xad\xf0\xdb\x47\x26\x9c\x80\xa7\x10\x1e\x6c\x09\xca\x55\xc7\xa8\xa0\x03\x10\x54\xfe\xba\xae\x33\xc9\x2f\x32\xb5\x2e\x2d\xa4\xb9\x66\xfd\x83\xa7\x2c\xcb\x63\x81\x31\xb9\x65\xa4\x56\x5b\x6c\x27\x9b\xfa\x6f\x03\x43\x11\x42\x48\xa2\x7a\x72\xdb\x58\xd6\xb8\x7d\xf6\xb1\xdd\xce\x54\x40\x44\x1e\xc1\x24\x24\x2e\x78\xb7\x48\x39\xff\x7b\x69\x03\xa5\x04\xca\xdf\x8c\xc7\xe7\x29\xc9\x1e\x67\xa1\x9f\x7b\x31\xf7\xa0\x16\xd3\xcc\x05\x74\xfa\xb9\xaa\xed\xb5\x6f\x24\x93\x2b\xe1\xcf\x2b\x13\xd2\xf6\x85\x72\xa5\x6a\x8c\x69\x6a\xdb\x5f\x03\xb4\x5b\x0c\x09\xfd\x99\x93\x20\x64\x2b\xb1\xaf\x29\xe7\x61\x37\x09\xad\x0f\xe7\xbf\x43\x35\xa5\xe7\xa6\xdd\x91\x6a\xc0\x98\x65\xc6\xb2\x79\x9f\x9c\xd5\x98\xd5\x7b\xef\xed\x85\x54\x65\x00\x44\x44\x24\x8c\x88\x30\xbd\x57\x8b\x6a\x82\xce\x35\xff\x42\xf2\x60\x36\xc8\xb1\x42\x70\xd5\x5d\xb5\xff\xa7\xd6\xdf\x66\x96\x2c\xc5\x8d\xf0\xb0\xdb\x60\xe4\x35\xfe\x8b\xfb\xcb\x97\xde\x3f\x82\x94\x97\x7c\xfd\xe9\xbc\x7f\x6b\xa3\x73\x6f\x00\x98\xce\xa1\x3e\x21\x52\xd5\x61\xdb\x69\xa7\xec\xd0\x96\x24\x94\x6d\x5c\x7b\x6b\xde\xbd\xb8\x6d\x0c\xfb\x0e\x88\x36\xb3\x3a\xec\x41\x79\xe9\x59\xe7\x89\x83\xc0\x44\x4e\xcf\x57\x8e\x9e\x99\x92\xff\xa4\x97\xc6\x58\xf0\x55\x88\x0e\x29\xae\x43\x86\xc1\xfa\x35\x16\xf9\x9d\xe5\x13\xdd\x81\xba\x37\x2f\xae\x79\x1c\xa5\xc0\x62\xa1\xc3\xd0\x2d\x24\xd5\x96\x3b\x3a\xed\xae\xa5\x08\x7d\x67\x16\xba\x29\x77\x9d\x65\x6c\x38\xc5\x7f\x92\x0d\x5b\x64\x85\x41\x46\x92\x69\x25\xe3\x60\xf1\x1c\xe9\x32\x31\x46\xa3\x2f\xa1\xd7\x6f\x1d\xd1\x7f\xf2\xdb\xb5\x63\x9c\x55\x0d\xd2\xf8\x72\x64\x1a\x0c\xe8\xcd\xe0\xe9\xd7\x12\xd4\x21\xb8\x5f\xc7\x2e\x29\xfe\xb9\x32\x96\x96\xb2\x93\x9b\xf5\x24\xa8\x91\xe7\xf8\x7a\x35\x3f\x80\xc2\xbe\xd7\xd5\xd1\xe3\x7a\x94\xdf\xcb\x4a\x37\xb0\x2e\x76\xcd\xaa\x1e\x21\xd5\xb2\xde\x62\x7a\x6b\x1e\x3c\x8b\xb6\xa7\x30\x28\x15\xca\xda\xb2\x12\x32\x63\x23\x2d\x1f\xa6\xeb\x4c\x0b\x9a\x43\x89\xf9\xaa\xf2\x60\x05\xbe\x1f\xed\x7a\x43\x19\xc1\x6f\xa4\x9f\xd2\x18\xe6\x3a\xfe\x85\x04\xf0\xe5\x22\x75\x09\x57\xf3\x3f\x79\x80\x94\x6c\x84\x48\xbf\xce\xc1\xb6\x51\x70\x74\x4e\x86\x9c\x11\x7f\x87\xd0\x1e\xf7\xcf\x72\xd3\xec\x08\xa5\x9f\x7a\xb7\x59\xc7\x86\x9f\x16\xbd\xe9\x75\xe8\xf2\x4a\x57\x02\xcb\x81\xa4\xbf\x4c\x69\x24\xa4\x29\xdb\xbe\xf3\x22\x3e\x7b\x82\x31\xff\x2d\xec\x00\x68\xca\x6d\x87\x2d\x09\x0f\x15\x01\x3c\xc5\x20\x8a\x4d\x3a\xac\xc3\x2d\x74\xce\x8e\x4d\x03\x2e\x81\x74\xb3\xf7\x7f\x5d\x51\xae\xdb\xa4\x95\x49\xec\x90\x25\x0a\x18\x4d\xec\xdf\x06\xb9\xed\x31\x12\x68\xbe\x5c\x37\xf9\x6e\x33\x8f\x0d\x3f\x14\xe0\x37\x90\x16\x5e\x83\x61\x42\x99\x0b\x6e\xf6\xa0\xd2\x36\x2c\xa7\x27\xe1\x95\xe3\x70\xa2\xe0\x92\x86\x9c\x5d\x9e\xe4\xc6\x6a\xf2\x6f\x73\x9c\xef\x8e\x56\x31\x20\xc0\xa7\xd7\x67\xdc\x83\xf3\xd3\x74\x7d\x4c\xcf\x52\x90\x22\x97\xd6\xaf\xef\x0b\x80\x3b\xbc\xf9\x5c\xd9\xd7\x5f\xcd\x60\xd3\x6a\x26\x69\x81\xdf\xd5\xef\x8e\xf0\xef\x95\x30\x33\x80\x7e\x52\xc6\x86\x19\x04\xde\x10\x1c\x6c\x87\xbd\x03\x8d\x69\xc5\xa7\x16\xe2\xed\x13\x25\x09\xeb\xfd\xea\xd5\xa6\x3f\xc5\x2a\xf0\x58\xb1\x70\x7f\xd2\x5a\x4a\x00\xb0\xdc\x43\x4f\x12\x1d\x00\x95\x79\x96\x6d\xa0\xb2\x53\x72\xa9\x7e\xb6\x0a\x2d\xf8\x42\x26\x5c\x54\xe1\x1c\x7c\xa9\xc5\x2a\x0c\xd2\x85\x35\xa1\x3a\x9f\x28\x35\xc4\x9f\x83\x2c\x98\xa4\x4d\xdb\x2a\x2e\xb6\x52\x06\x37\x5e\x3b\x4a\xe4\xa4\xf9\x58\xd2\x4b\x5d\x19\xbd\x4b\x8a\x5b\xd3\xd2\x4a\x3f\xa3\xd8\x54\x42\x59\x8d\xc3\x02\xa7\xfc\x79\x5b\xab\x19\xbb\x38\x15\xa5\x94\x59\x69\x61\x05\x72\x2f\xc7\xe3\x46\xd5\x9c\xd3\xa5\x27\x50\x2f\x35\x30\x67\x73\x98\x35\xdb\x64\xa0\xc5\x17\xf1\x60\x90\x1c\x27\x09\xaf\x3d\x57\x9f\xb6\x2a\x13\xe1\xfd\xf2\x53\xd9\xbe\x14\x3b\x3d\xf8\xfe\xc5\x02\xfb\xfa\x08\x71\x38\xb2\x9b\x76\x87\xe8\xd9\xd0\xc6\x26\x40\x09\x40\xcf\xd6\xe9\x13\xd5\x32\x76\xc4\x0b\x14\x1d\x71\x9f\x86\x57\xd6\x61\xf0\x8b\xc0\xaf\x80\x89\xa6\x33\xeb\xaa\xc0\x9f\x43\xa9\xa5\x7e\xbc\xa8\x9a\x8f\x31\x6c\xf4\x7e\x1f\x21\x05\xab\x9a\xbd\x44\x03\xbc\xfa\x7e\x52\x52\x11\xc0\x90\x74\xc2\x9e\x07\x5f\x68\xf7\x54\xa7\x93\xae\xd2\x51\x43\x08\x2b\x0b\xac\x9e\x78\xa0\xeb\xa5\x08\xab\xca\xaa\xd5\x32\xf3\x96\x22\x09\x27\x58\x62\x8f\x8a\xf3\x74\x45\xe4\x3c\x3a\xac\x89\x50\x88\xa8\x47\xfc\xbc\xf9\xb6\xd7\x9b\xf0\xe0\x27\x51\x95\x85\x27\xf6\xf8\x56\x8d\x70\x9a\x34\x74\x15\x7b\x39\xd4\xc5\x3d\x3c\x9b\x14\x8b\x3a\x0c\xff\xd0\xe6\xab\xb0\xa3\x17\xc3\xc5\x2f\x42\x88\xea\x58\xa9\x09\x68\x47\x54\x30\xb3\xc0\x23\xa2\x19\x0b\x33\x57\xe4\x21\x65\xee\x9d\x45\xd3\xaf\x2d\xd4\xf2\xae\x57\x33\xde\x45\xc3\x2a\x7b\xf0\x1e\xf5\xe6\x60\xe6\xd3\x54\x0e\x37\x59\x81\x30\xfb\x6c\x43\x79\xcc\xff\xc7\xd8\x5a\x47\x4b\x04\x54\x69\xae\x29\xeb\x9b\x5d\xb9\xa5\x80\x64\xd4\xa9\xe9\xd9\x94\x92\x6e\x27\x59\xd6\xf4\x9e\x6c\x6f\xe2\x73\xb2\xd1\xd5\xfc\xc9\xcc\x30\x7f\x3a\x73\x19\xdc\x70\x53\x88\x7e\x13\xec\x70\x68\x4a\x1a\xfa\x24\xd3\xec\xbd\x30\x12\x78\x5a\x4f\x68\xe2\x66\xcd\x76\x3e\xaf\x07\x94\x38\xa7\xcd\xdf\xaf\x4a\xfd\xe5\x23\x42\x5b\x3f\xf5\x4d\xae\x82\x25\x44\xcb\x29\x0c\x17\xd6\xf4\x8d\xdf\x57\xbd\xfd\x9f\xe9\xd7\xd1\xe6\xb4\x67\x87\x9b\xb3\x9d\x5d\x2c\x11\xe4\xe3\x9d\x87\x80\x67\x43\x99\xe8\xe9\x13\xee\xb9\x6b\x4c\x16\x13\xfa\xa0\x44\xb0\x6a\xe0\xec\xc2\xeb\x10\xc6\x6d\x4c\xd5\xcd\xfe\x7d\x11\xa7\x11\x4d\xd1\x5e\xec\x09\x94\x29\xdc\x8c\x41\xc9\x30\x79\xa8\x28\x80\xa6\x3a\x04\x81\xc3\x6c\x80\xcd\x87\xe5\x8b\x6e\xf7\xa2\x58\xed\x70\x71\x71\x0b\xc9\x9d\x69\xfd\x41\x29\x41\x12\x39\x35\xb5\x93\x26\x02\xb4\xde\xa4\x0a\x40\x19\x81\xd8\x0c\x65\xb9\x17\xdb\xed\xec\x67\x3c\xdd\x3e\x9d\x86\x1a\x3d\x70\x5f\xe9\xb8\xf5\x1c\x98\x21\xb4\xd6\xeb\xd8\xdf\x62\xaf\x26\x78\x30\x41\xfe\x32\x3c\x00\x3d\x66\xc3\xb8\x4d\xf0\x50\xfb\x59\xdd\x8f\xa9\xa9\x0f\x83\x40\x77\x28\x18\xb2\xef\x69\xd4\x2c\x91\x8c\x16\x67\xef\x1a\x07\x88\x8e\x0e\x90\xe1\x3c\x11\x54\x68\x9c\xe2\x0d\x4b\xe8\xf3\x13\xe8\x80\xb9\x54\xd5\x6f\x13\x29\xce\x54\x0a\xb5\xfd\xb1\x36\xff\x12\x0c\x43\x19\x80\x17\xca\x89\xeb\x19\x6a\x85\x59\xc9\x1c\x20\xe8\x93\xe3\xa2\x46\x6a\x51\xdb\xf5\x52\x28\x45\xce\x2a\x4c\x85\x33\x0e\x99\x6d\xf5\x6d\x14\x55\x95\xab\xbc\x9e\x7a\xbd\xcc\x32\x5a\xd8\x36\xe7\x32\x4b\x12\xf3\x81\xfc\x04\x54\x5a\xb0\x3f\x23\x42\xd5\xb7\xa2\x4e\x67\x23\x06\xab\x65\x56\xac\xed\x3c\x15\x5a\x55\x6a\x23\xa1\x21\xcc\x18\x61\x91\x19\x99\x90\xec\x70\x29\xef\x5b\x9e\x25\xa8\xc0\x4a\x73\xdd\x3a\x50\xb2\xaa\xa6\xd7\x6b\x72\x57\x4b\x1b\x28\xe9\xb0\xf0\x61\x14\x8c\x27\x83\x3c\x64\xd2\xee\xae\xf8\x6e\xef\xc1\x4f\xdb\x57\xe0\x9d\x61\xb6\xe1\xcb\xc0\x58\xbd\x13\xf6\x1d\x5e\x4d\x2e\x27\xf9\xfe\xaa\xe7\xab\xc5\xe1\xae\xd8\x92\x05\x1b\xd0\xa1\xe7\x4b\x64\xec\xf8\x1d\xa8\x6f\xb3\x77\xbf\xe8\xee\xb9\xee\x67\x1e\x28\xce\x82\x7e\x38\xb5\x0f\x71\x62\xa8\x9a\x6b\x05\x91\xee\x4a\x63\xf9\x86\x51\xc9\x8c\xbc\x30\x46\x4b\xe4\xd2\xda\xa8\x8a\x16\xb1\x78\xdb\x86\xcb\xe3\x7d\x07\x06\x42\x8d\xa3\xd2\x53\x7e\xbc\xdb\x52\x7a\xad\x51\x29\x8c\x21\x08\x65\xe2\x8a\xff\xea\x16\xc4\xfa\xf3\x85\x89\x41\x76\x4f\x14\xf1\x60\xa8\x4d\x7c\x9e\x9c\xfc\xaa\x12\x73\xa4\x9f\x86\x25\x91\x52\x12\x9a\x6e\xe9\x6c\x61\x34\x96\xba\xd7\x48\xd4\x6b\xae\x1d\xe3\xda\xc4\x13\x5a\x54\x42\xf0\x82\x10\x9c\x09\xaa\x8f\xfb\xa9\xb2\x87\x38\xf9\x2f\x86\xb8\x65\xe3\x2c\xb5\xbd\xcd\xd5\xaf\x0f\x8e\xe1\x19\x4d\xaa\x31\x8f\x80\xe0\x4b\xcb\x66\x9f\x07\xb9\xd6\xa7\xee\x2a\xba\x55\xb2\xc2\x87\x0c\x12\xe1\x75\xc7\xcd\xea\xdf\x8d\x78\xff\x36\xd8\x71\x7e\xcf\x54\x12\x81\x14\xc1\xa8\xd4\xb0\x2a\x9b\x21\xb5\x6a\xf2\xe5\x42\xd4\x7a\x68\x46\x73\x82\xdf\x1e\x25\x6c\xe1\x55\x85\x35\x64\xf0\x7f\x8a\x56\x52\xa2\xd4\xb9\x94\x0a\xf7\xb7\xa2\xec\x9d\x29\x4e\x3e\x2e\x89\x27\x06\x28\xdb\x52\xee\xd2\x06\x12\xda\x59\x1b\x4b\x09\x39\x87\xc8\xe9\x09\x20\xf2\xa5\x57\xde\x86\x23\xac\xba\xb5\x3b\x23\x4d\x2d\x06\x85\xb5\xf4\xaf\xfe\x70\xc4\x4a\x5c\xb7\x29\x7d\x8d\x2e\xee\x9f\xc5\x39\x5a\xf0\x81\x93\x61\x4e\x85\xd0\x17\xad\xd4\x37\x98\x99\x7a\x8a\x09\xd6\xfa\x4f\x4a\x27\xcb\x2d\xe8\x87\x00\x8a\x62\x16\xaf\x6d\x45\x13\x38\x65\xfd\x1e\x99\xec\x79\x6b\x31\x19\x5b\x92\xd9\xcd\x61\x04\xf2\x96\xac\x61\xee\xd9\x2c\x30\xcd\x25\x59\x67\xcd\x06\x24\x2c\x27\xe0\x06\xd0\xe7\xef\xea\x1a\xfa\x01\xa7\x3d\x6d\x37\xe7\x73\xbc\x3f\xcc\x5a\x4e\xcc\xc5\x66\x83\x78\x47\xc0\x05\x60\x63\xa6\x21\xca\xf5\x82\x55\xe9\x9e\x15\xbc\x07\xa9\xa5\x85\x1f\x2c\xd7\x5c\xf3\x3c\x08\xb9\x48\xec\x79\x5b\xd7\x6d\x00\x7f\x1b\x3d\x44\x90\xf6\x72\x0d\xd1\x2d\xa5\x03\x9b\xc1\x37\xa8\xa6\xc4\x84\xdb\xd6\xe0\xa8\x19\x41\xfb\xa8\x90\x40\xd6\xa5\x32\x72\x99\x7f\x81\x27\x1f\xa4\x32\x9b\x9a\xc6\x47\x97\x40\xea\x14\x2e\x3e\x9e\x6a\x6d\x86\x6f\xfa\x94\x1d\x3b\x68\xac\x3b\x8b\xac\x7c\x59\x15\xfa\xf5\x71\xa2\x14\xec\x47\x0d\xa1\x84\x5c\x90\x73\x15\x46\x5b\x62\xb1\xba\x7d\x6e\xf5\x88\x68\xa9\xa5\xe1\xcc\x8c\x50\x21\x21\x38\x41\x7a\x58\x00\x6c\x72\x50\xb3\xcc\x43\xfe\xdd\x35\x8d\xf6\xf1\x8a\x1d\x45\xc5\x8c\x56\x7e\xfc\x17\xb2\x44\xb0\x36\xb8\xed\x43\x5b\xad\xc2\x5e\xf5\x96\xe5\x14\x86\x7e\x2b\x5c\x18\x8b\x8e\x33\xec\x33\x63\xc6\xc5\xb1\x95\x97\x97\x5e\xb3\xf4\xbc\xae\x12\xf8\xb2\x50\xbc\x81\x32\x02\x43\x6e\xd5\x5f\xe6\xf5\x26\x6a\x02\xab\x53\xe4\xfa\x51\x41\x01\x5a\x35\xb0\x9b\x3b\x78\x6b\x9a\x74\xb6\x47\x94\x39\xd5\x53\x7a\x0d\x86\x69\xa4\x3e\x09\xd8\x61\xa8\x51\xcb\xdc\x43\xfc\x5b\xde\x34\xdc\xb4\x3f\xb7\xb0\x16\x0d\xe3\x7f\x76\x0a\x02\x6d\x6a\x00\xda\x82\x73\x7b\x3b\x35\xc1\xb1\x64\x22\xb3\x0b\x63\x2b\x7b\x15\xc1\x32\xfc\x4b\xb0\x9f\xfb\xe4\x52\xd8\x11\xcf\x20\x38\x8e\x4e\x0c\x30\x1b\x65\xcd\x40\xdc\xdf\xf6\xae\x29\xf8\x8d\x40\xd9\x0a\x1c\xe1\x45\xb0\x55\x86\x87\xbb\x4b\xd2\xfb\x97\xf6\x72\xa9\x78\xf5\x6a\xb8\x26\xa8\x2f\x04\xfa\x6b\x51\x09\x99\xfc\x80\xd2\xa0\x5c\xc5\xa9\x08\xca\xe5\x2c\x35\x98\xad\x56\x0a\x42\x25\x4a\xfe\xfd\x7e\x87\x29\xff\x1f\x0d\xc0\xe2\x2b\x05\x5e\x02\x7c\x3c\x82\x0f\x93\x29\x11\x6d\xb8\x16\xe6\x83\x82\xb1\x36\xef\x63\x8d\x56\xcf\x8c\xca\x97\x0f\x7c\xe5\x9a\xad\xe8\xc5\xfb\x87\x1f\x62\x0a\x02\x34\xad\x8d\x4d\x7c\x36\x3a\x46\x76\xf7\x52\x0b\x13\x72\x57\xf9\xd2\x9e\xe8\xaa\xa1\x76\x11\xa8\x24\xca\xca\xa3\x4a\x4c\x21\xa3\x6a\xa5\x02\x05\x77\x83\xa2\xaa\xa6\x6a\x5a\xf5\x38\x40\xbe\x8b\xd6\x31\xd2\xe3\x5d\xf9\xb7\x2a\x07\x82\xc3\x70\x28\xe3\xa1\x6e\xa3\x60\xea\xd9\x3e\x6a\x83\x23\xf9\xdc\xe5\xd4\xf3\x86\x1a\x71\x13\xba\xc6\x84\x75\xb7\x3c\x5b\xd8\x6a\x59\x2a\x49\x34\xd8\xed\xdd\xff\x4d\xf1\xeb\x00\xc5\xdf\x69\x6d\xb4\x45\x7d\x17\x0b\x03\x35\xc8\x04\xb8\x6e\x01\xbd\x7a\x7c\x6f\x19\x64\xe1\x32\x04\xf0\x27\x76\x43\xc6\x1c\x03\xcf\xa3\x9c\xfb\x58\x12\xb4\x36\x10\x9c\x07\xd5\xd3\x67\x5d\x42\xc3\x26\x2d\xde\xfa\xa9\x30\x12\x38\x2c\xa4\x49\x66\x0a\x10\xf4\xb8\xb3\xe4\x4a\x66\x6f\x45\x33\x86\xb9\x05\x33\x61\xe2\x9a\x4b\xe3\x23\x35\x92\xb4\x40\x52\xb7\x8b\x28\xe2\x68\xed\xf6\xa0\x3e\x40\xf9\xdb\x15\xa2\xdc\x08\xf1\xd4\xff\x58\x6a\xc2\xd4\x81\xca\xf5\xc8\x93\xaa\x8e\x75\x6d\x9b\x74\x68\x4a\xce\x02\xce\x1b\xb8\x52\xcb\xa2\x4e\xcc\x50\xce\xe6\x9a\xc1\x5f\x20\xae\x7e\x87\xfc\x8a\xe7\x69\xa0\x03\x57\x85\x53\x0e\x56\x8b\xa2\x4c\xdb\x71\x22\xfa\xdb\xac\xad\xe7\xa6\x68\xf5\x74\xb8\x6a\x18\x7d\x23\x5e\x04\x46\x26\x25\xce\xf4\x04\xd8\x00\x91\x53\xfc\x9b\x01\xdb\xda\xb6\x53\xa9\x62\xce\x6d\x55\x25\x2c\x61\x19\x67\xe1\x14\x02\x95\xd4\x3c\x58\xbf\xa8\xe5\xff\x0e\xe8\x8e\x9d\xf9\xa5\xa3\x81\xbb\x81\x2b\x35\xd9\x3b\x00\x42\x5a\xa3\xcd\x4f\x43\xb3\xf4\x1d\xb6\x4c\xa6\x88\xa7\xe3\xc6\x4c\x5f\xaa\xaf\x3c\xed\x31\x76\x62\x1a\x0d\x25\x89\xa5\xbc\xcc\x94\x00\xdc\x1f\x4b\x19\x43\xef\x1e\x29\x24\x93\xee\x92\x9e\x34\x05\x75\xb4\x12\x8e\x8c\x2e\xcd\x96\x81\xca\xed\xdc\x4a\xab\xa0\x08\xf7\x88\xe5\x95\x16\xa6\x87\x35\x16\x6d\x1c\x19\x31\x08\xdf\xaa\xb6\x5b\xb4\xf3\xc7\x3e\x08\x6a\x94\x7f\xd0\x2a\xaa\xdf\xa0\x85\xa8\x03\x98\xad\xef\x97\x54\x05\x93\x93\x3a\xa5\xb8\x96\xb2\x81\xaa\xe3\x39\xb1\xf4\xab\x7a\x90\x1b\xcd\x49\xce\xd7\x3c\xb5\x69\x5e\xc9\x81\x6a\x71\x0a\xf8\xc6\xac\xbf\xe8\x29\x77\xe7\xd1\xf5\x69\xe3\xf7\xef\x8a\xa5\x69\x66\x3e\xac\x84\x58\x61\x26\xca\x2c\xb3\xf4\x15\x27\x74\xe1\x15\xd1\xbf\x3c\x1f\xf5\x58\xa3\x37\x85\x70\x72\x01\x00\x47\xfa\xc6\x52\x2b\xd0\x8e\xea\x40\xc1\x5b\x4d\x6a\x7b\xfd\x07\x88\x28\xf0\x56\xb2\xbd\xcf\xa6\xc4\xdf\x96\xd0\x0f\x64\xd5\x82\x39\x81\xb8\xd5\x4c\xfc\x4f\x44\x30\xbe\x54\xd6\xbe\xbd\x6f\x06\x8b\xcd\xd1\xfd\xfd\x90\xb2\xc2\xcd\xe9\x63\x78\x7a\xf3\x98\x78\xea\x5b\xdc\x5e\x42\xd0\xa3\x34\xe8\xd9\xe6\x73\x1e\xbc\x18\x51\x8f\x12\x6f\x5b\x21\xa5\x85\x10\xf5\xf4\x84\xea\x12\xc2\xf8\x96\x29\xe3\xde\x91\xa5\x46\xd5\xb0\xe4\x3e\xa6\x74\x04\xd9\x48\x7c\xda\x45\x12\x13\x17\x13\x61\x1f\xfe\xb3\x35\xc6\xf5\x92\x14\xa0\x19\x76\x15\x81\xc2\xe0\x76\x61\x25\xf3\x19\xd0\x01\x53\xdf\xca\xf8\x58\xcc\xee\x94\xd5\x1b\xcf\x3a\x38\xe7\xc2\xb1\xa5\x37\xb0\xa5\xf5\xf4\xa0\x15\x34\x75\x00\xfc\x63\x95\x81\xe2\x0d\x98\xad\xac\x36\xc2\xa1\x36\xeb\x56\xe5\x56\xdd\x80\x3e\xae\x83\xd7\x55\x80\x9a\x89\x6e\xc2\x0a\xfd\x7a\x5c\x69\x6b\x54\x09\xd9\xcd\x73\xa7\x62\x2b\xd9\xf2\xc4\x58\x4d\xad\x79\xb3\x35\xbc\x7d\x4f\xb3\xc7\x12\x66\x58\xf1\xc6\x3e\x8b\xfa\x66\x6e\x37\xff\x3d\x9f\x7f\x71\xf0\xc6\x2e\x49\xd5\x93\x59\xed\x03\x1c\xdc\x55\xc1\x3b\xc6\x97\x5a\x61\xfe\xcb\xf8\xf8\x3a\xa7\xbe\xaa\xaf\x7a\x72\x95\x03\x57\x15\x8a\xe3\xeb\xad\x82\x02\xcc\x21\x8e\x89\x79\x2c\x44\x22\xe7\xe7\xa6\x2d\xf0\xde\xc1\xfc\xe3\xe3\xe3\x49\xe0\xf7\xb1\xd1\xc3\x8f\x9a\x17\x84\xa8\xf8\xef\x4e\x04\x67\x47\x2e\x62\xe0\x54\x14\x9e\xde\xb6\xac\xf5\xec\x3f\x67\x80\xa7\x93\x83\xa9\x0e\x11\x4e\xb1\xd0\x3f\x3c\x37\x5d\x62\xeb\xaa\x8d\xc7\xda\xda\xea\x3a\x15\xda\x06\x0e\xe0\xea\x51\x82\xde\x8a\xa0\x88\x61\x94\x92\xae\x9f\x42\x76\xae\x42\xd2\xd0\xfb\x96\x71\x16\x42\x64\xbd\xe5\x28\xc6\x5d\xd1\x63\xaa\xf2\x91\xb7\x02\x85\x15\x0b\x46\xa9\x9d\xf0\xaf\x7f\xf8\xc1\xaa\xfa\x28\xdc\x9a\x4a\xd7\x6c\x54\xd2\x2d\xfb\xcc\x00\xab\x84\x67\x98\x49\x60\xe3\x8b\xcd\x38\x6d\x71\xec\x12\xec\x1a\x1b\xb9\xa7\xaf\x34\x0a\x11\xe4\x02\x7e\xbb\x2c\xd1\xb7\x13\x53\x9c\xee\xc5\xbd\x94\xf1\xd6\x08\xa6\xd5\x90\x2b\x11\x57\x59\x7c\xac\xf2\x5c\x2c\x8b\x7a\x04\xac\xda\x15\x62\xc9\x5f\x75\x2a\x73\x93\xf7\xf5\x2c\x41\xe5\x72\x43\xa8\x7d\xbd\x27\xb5\x62\x1e\xe0\x34\x6b\xf2\x70\x52\x51\x97\x87\x3f\x08\x9f\xd6\xbc\x1b\x70\x90\x03\xd5\xbf\x7b\x42\x23\x55\xff\x76\x96\x6d\x1f\xc4\xb4\x30\x7b\x7c\xca\x66\xf1\x62\x63\x81\xda\x27\xee\x2c\xd6\x16\x65\xd8\x42\xf7\x1e\x84\xda\xe0\x9e\x95\xb9\x74\x22\x53\xc5\x07\x76\x9e\x66\xf0\x75\x55\xa5\xfa\xa9\x88\x21\xa6\x3d\x00\xd6\xba\xfe\x92\x1f\x80\xa2\xdb\x81\x01\x98\xa1\x69\x2a\x56\x70\xb8\x07\x41\x20\xcb\x27\x74\x00\x09\x79\xbe\x51\xc3\x8b\x02\xc9\x47\x34\xf4\xf0\x0c\x50\xb4\xc6\xe0\xb5\x8a\xca\x03\x6e\xee\x0e\x05\x47\xdc\x4e\x8b\x81\x87\x64\x8d\x60\x79\xbd\x55\xc6\x58\xc3\x73\x3c\x25\x3e\x4b\xde\xee\x3b\xbf\x82\x46\x2c\x5a\x16\xd0\x57\xec\x4c\xe0\x4f\xb8\x7a\x1b\xe1\xe9\x54\x32\xb6\x66\x93\xe2\x88\x4c\x45\x11\x7e\x51\xe7\x8a\x7b\x9a\x1a\xa2\x87\x31\x12\xb1\xbd\x6c\x13\x88\x5d\xb8\x29\x46\x0d\x6e\x57\x9b\x5a\x3d\x7d\xa2\x36\x75\x04\xee\x17\xd1\x99\x38\xb4\x5d\x0d\x1e\xeb\x5a\x16\xc7\x0d\x70\xad\xd5\xbb\xb6\x43\x80\x11\x07\x03\xf2\x6c\x8e\xf2\xef\x9a\xa3\xd4\x40\xb2\x44\x07\xe5\x8b\xff\x95\x30\x1b\xf9\x31\x85\x95\xbd\x77\x18\x7e\x47\x9b\x7f\xc1\xe1\x4c\xbb\xe3\xeb\xb1\x7d\x95\xe5\x96\x67\x1f\x80\x33\x48\x99\x81\x6f\xc5\xd6\xea\xea\x73\x6c\xfd\xb2\x35\xce\xd4\xbd\x7a\x12\x9d\x12\xee\xe0\x15\x20\x80\xf4\x38\x6b\xd6\x44\x33\x44\x9d\x85\xc6\x0e\x46\x5a\xdd\x2e\x23\x45\xcb\xb6\x64\xc4\x0b\x1f\xd3\x61\x79\xf6\x46\x87\xbc\xcb\x03\x2c\xaa\xf5\x95\x32\xc8\x83\xf8\x7a\x7c\x5a\xbe\x9d\x64\xe9\xa2\x06\x12\x5e\x23\xc2\x2d\x2e\x9d\xb9\xc3\x45\xa6\x90\x4f\x6f\xc2\xaa\x1a\x6a\x7b\xae\xa3\xc2\x3e\x27\xa4\x00\xdb\xd6\xfa\x77\xe0\xff\x43\x30\xad\x78\xa0\xca\xba\x46\xe3\x11\x0d\xf1\x6f\x1a\x9a\x41\x7d\x00\x65\xa0\xb8\x42\xcf\x22\x1d\xe9\xf1\xe2\xc4\xed\xbf\xf9\x55\x0b\x18\x0c\xc8\xdc\x07\xff\x29\x60\x13\xbe\xf3\xa8\x0b\x0e\xd0\x1a\x40\x42\xde\x63\x89\x84\x65\x7e\xe0\xab\x23\x72\xae\x01\xd7\xc0\x29\x7a\xe9\x15\xe1\xa5\x52\x70\xec\xa3\x88\x7a\x90\x75\x11\x5a\xd3\x99\x99\x42\x38\xf1\xd6\x46\xfe\xe5\xd2\xc5\x4f\x41\x4f\x63\xc3\xf1\x46\x57\xab\xbd\xfb\x60\xf4\x67\x6a\x60\xa8\x75\x61\x0c\x4f\xe7\xa7\x26\xc5\x65\xf5\x56\x82\xac\xc6\xa9\x01\x89\xe5\xaa\x26\x3c\x27\x97\xae\x20\x2b\x5e\x4b\xdb\x93\xe4\xe8\xf3\x1d\xe9\x97\x78\x13\xa6\xef\x2a\xa7\x41\x20\xc7\xe9\x80\xb1\xd9\x4c\x7d\x5f\xee\x14\x7f\x14\x08\x7d\x95\xeb\x14\x94\x14\x5d\x1a\x37\xf6\xa2\x48\x90\x89\x84\x9f\x5e\x61\x09\x08\xbd\xf6\xdd\x07\xbb\x3c\xb1\xfc\xc4\xc6\xec\x2c\x6a\xfe\xe7\x99\xcb\xfc\xd9\xcc\x69\xfe\x97\xdc\x5a\xc7\xcf\xef\xa7\xe8\xd4\xb9\x2d\xca\x01\x50\xad\x8f\xf4\x3a\x37\x4e\x62\x01\x2b\xe7\xb9\x98\x97\xe1\x74\x32\x55\x9a\xbb\x48\xf7\xce\x47\x7b\x30\x1f\xd7\x05\xe3\xed\x28\x22\x5e\xc8\x11\xe5\x27\x4e\x4f\x9b\xfb\xc9\xa1\x74\xf9\xae\x59\x48\x5a\x70\x20\xd5\x57\xcc\xcc\xa4\x2d\x88\x29\xbf\xcf\x2c\x9e\x1c\xb7\x45\x9e\x58\xec\x0c\x64\x75\x38\xb2\xb6\x7b\x07\xe2\x31\xb4\x8a\xcc\x88\x75\xd5\x83\xcc\xf3\x56\xbf\x25\xe5\x40\xaa\x2f\x26\xd3\xd3\xe7\x31\xeb\xdc\xf5\xa8\xcb\x0b\xe9\x25\x8b\x59\xb5\x71\x22\x2c\x43\xcb\x15\x09\x59\xf5\xd5\x6f\xb5\xae\xde\xb0\x2c\x33\xe4\x6b\x31\x7b\x89\x5f\xae\x98\x78\x91\x36\x68\xf3\x43\xac\x16\x48\xcb\xa7\xe0\xad\x8e\x69\x7d\x2f\x25\x51\xf5\x61\x0f\xd5\x80\x42\x7b\x5b\x2b\x81\xdd\x99\xb5\x38\x6f\xc9\x4a\xa6\x8d\xf2\x6e\x9f\xe2\xb7\x62\x6b\x60\x58\x7f\xbf\x31\xf3\xb6\x5d\x2c\x8b\x78\x67\x82\xff\x67\x2f\x73\x5e\xb5\x80\x9d\xf6\x5e\x6a\x98\x96\xaf\x87\xcf\xaf\x05\xc2\x7a\xf7\x0d\x39\xf6\x92\xed\x20\x02\x05\x7c\xe3\x8d\xcf\x71\xb4\x1e\xbc\x06\x5a\x04\xa0\x8b\x6d\x38\x18\x59\xe3\x04\xf6\x02\xfc\xf9\x1c\x80\x40\xdf\x02\x57\x17\xa8\xaf\x21\xd0\xae\x13\x03\xff\x54\x6d\xff\x9a\xc1\x4b\xd6\xb3\xae\x5e\x8d\xd4\x85\x98\x30\xd8\x80\x3e\xad\x31\xad\xec\x28\x1a\x3f\x6c\x4a\xad\x4f\x37\xac\x3d\x80\xdd\xc1\x27\x0f\x22\x62\xbf\xa1\x49\xe1\x9d\x24\x98\x96\x17\x1b\xa6\x59\x49\x06\x61\x0d\xc6\xef\x26\xd1\xe6\x33\x11\x37\x91\xfc\x7b\xaf\x3e\xfe\x28\x4a\x2b\x75\x2b\x72\xd5\x68\x34\x39\xfc\x5b\x1d\x2b\xd5\x1a\xd8\xff\x84\xff\xa1\x53\xa4\x01\x46\x43\xb3\x07\xa4\x67\x36\x92\xc0\x8e\x90\x8f\xa1\x6c\x3e\xe1\x6d\x63\x3d\x2b\xd1\xf2\xb4\x75\x78\xfc\xeb\x4c\xc2\x75\x2c\xf0\xb6\x69\x0b\xd1\xc5\x9d\x1f\x72\x65\x8a\x53\x2a\x99\xa0\x1a\x08\xd9\x3f\x35\xd5\xfc\xf5\xd4\x5f\xbf\xfa\x11\x18\x34\x08\x4a\xd0\xfb\xc6\xfb\x0f\x6c\x70\x9c\x1e\xf3\x31\xd8\xd4\xe6\xde\x37\x43\x9c\x05\xda\xc1\x1a\x3c\xaa\x7a\xb5\xbe\x27\x09\x06\x1a\x62\xe0\xd9\x78\x7b\x66\x33\x7f\xd2\xc3\xf3\x56\x26\x79\xe1\xd3\x8c\x7a\xec\xc1\x31\xb0\xf7\x2a\xb6\x5b\xcf\x44\x5a\x81\x4f\x79\x9f\xdc\xfa\xcc\x95\xa5\xec\xac\x29\x7c\x36\xa3\x0d\x62\x1d\x76\xe7\xa1\xbe\xfa\x3c\x12\x86\x40\xec\xdf\x15\x23\x7e\xa9\x43\x76\xfa\xa7\x41\x3f\x51\xdb\xa0\x5f\xf7\x85\x3a\x79\x72\x8a\x7f\x92\xaa\xd0\x26\xc6\xe5\xdc\x79\x8f\xab\xd9\x21\x00\x62\xf5\xc9\xcf\xdf\xde\x14\x0b\x5f\x70\x0f\xed\xeb\xbd\x8c\x13\xac\xac\x11\x39\x0a\xe7\x0b\x23\x6e\xce\x4d\xed\x85\x01\xd1\xf5\xc1\x1f\xbf\x0d\x09\x70\x92\xcb\x3c\x58\xe2\x09\x5d\x25\x2e\x23\xa2\x3a\xde\x1d\x77\xbc\x2a\xd0\x35\x67\xc2\xa6\xf6\xf8\xf3\xc1\x9f\xbf\xed\x5d\xeb\x0c\x51\xd9\x30\xfa\xeb\xeb\xa7\x79\xd8\xe1\xea\x4a\x6c\xd7\xb2\xbb\xd1\x42\x30\x6e\x67\xba\x08\xf5\x09\x89\xb7\xce\xbe\xd6\xae\x15\x81\xcf\x67\x73\x9e\x2a\x6d\x21\xc6\xa0\x5d\xcf\x8c\xb7\x26\x55\xff\xb7\x2a\xe7\x37\xa5\xc2\xa6\xa6\x8d\xb3\x4a\x3c\xd0\xf8\x00\x7c\xad\x20\x28\xce\x3f\x67\x1a\xbe\x8f\xb1\xb5\x00\x62\xbd\x08\x78\xb7\x76\x55\x03\x78\xd4\x64\x05\x34\x4b\x46\x01\xe6\xfe\x6f\x80\x23\x0e\x26\x9a\xfd\xa2\xae\x77\x34\x5e\x97\x79\x66\x2b\x51\xdf\xa7\xcb\xc7\xb4\xfb\xb6\xff\x6a\xbd\x18\x85\x06\xb6\xe7\x68\x93\x54\x35\x27\xd8\x84\x80\x1d\xd6\x8b\x37\x68\xdf\x12\xee\xb9\xe8\x38\xe1\xbb\x4b\xf2\x04\x15\x13\x17\xd9\x6a\x9f\xb7\x6f\x07\xae\xe1\xc9\xb6\xe2\xc2\xc1\x04\x15\x1f\x7c\x91\xf6\xb9\x75\x12\x99\x8b\x1e\x27\x3c\xd9\x55\xc6\xef\xec\x6f\xd7\x3e\x67\xa7\xf7\x37\x83\x3f\xdf\x15\x97\x3f\x56\x37\xfc\x15\x31\x08\xfc\xbd\xe1\xda\x90\x22\xe0\x5e\x6d\xba\x9e\x6c\x55\xaf\xf6\x3d\x12\x94\xda\xc7\x08\x62\xca\x2a\xe6\xe6\x9c\xd5\x0e\x7c\x10\x6b\xdf\x95\xa7\x3f\xbf\x78\x8e\x27\xcd\x0a\x6b\x1a\x04\x1b\x9a\x5b\x7e\x12\xa5\x49\xcf\x90\x76\x25\x3b\x49\x67\x99\xc8\x15\xed\x8b\x1e\x21\x57\xdf\x62\x33\x44\xcc\x4f\xfa\xfa\xed\x1f\x21\xaa\x64\xc5\x23\x9f\x4e\x30\x33\x2e\x09\x45\x3b\xe2\xe2\x73\x5e\xff\x37\x9e\xba\x3e\xd4\xb9\x69\x4f\xec\xd3\x13\xfb\x5c\xfc\x5b\x2e\xd6\x5f\x0b\x9c\x38\x54\x38\x0d\xc7\xb3\x41\x48\x82\xfc\x27\xc8\x3b\x71\x6f\x25\x24\xc1\xc8\xcb\x09\x4e\xcd\xaa\xcc\x2c\x5b\x6e\x29\x6a\x16\x3e\x2e\x92\x6d\x93\x10\xb3\x38\xfc\xbd\x81\x26\xa9\x82\x29\x72\x87\x19\x2d\x52\x6d\x92\xe3\x1a\x9b\x71\x6e\x0f\x03\x85\xba\xde\x82\x34\xac\x08\xe6\xec\xde\x5b\xaa\xc5\x37\xe5\xb1\xc0\x1f\xf0\x98\xca\x37\x3d\xee\x32\xfc\x12\xd9\x59\x03\xd0\x58\x84\x2a\xee\x96\xdc\x32\x73\xd2\xbf\xe3\x68\x15\x02\x37\x8d\x1a\xc9\x95\x1a\x27\xab\xeb\x92\x18\xc3\xb4\x08\x1a\x9d\x91\x4c\x6f\xce\x76\x96\x0c\xc8\xb3\xc2\xe2\x39\xac\x18\x0c\xc2\xc3\xb4\x08\xf2\x43\x29\xd3\x74\x5e\xe9\x4b\xd5\xe1\x11\xfb\xd7\x0e\x96\x45\xa9\x72\x0a\x31\x43\x0e\xb6\x93\x05\x4d\xb2\xba\x42\x33\xe0\xf6\x9a\x2e\xbc\xf6\xaf\x32\x46\xd9\x30\x05\xec\x0a\x79\x74\xbb\xad\xc5\x49\xc0\x88\x55\xcc\x71\x4b\x53\xd4\xe3\xa3\x81\xc4\xa9\x06\x03\x56\x89\x68\x5a\x96\x90\x8a\xbc\x3f\xb1\x85\x89\xe7\xc3\xb7\xee\x02\xa7\x92\x3b\x88\x5c\xbe\x12\x68\xb1\x62\xc7\xcf\x13\x3b\x50\xd4\x02\x28\x1a\x13\x42\x66\x7d\xc3\x12\x99\xb1\xca\xe6\x26\x52\x6c\xd2\x51\x78\x00\xa9\x2e\x73\xd8\xdf\x89\xec\x05\x10\x28\x70\x87\x00\x76\x54\xae\x4d\x2f\x90\x65\x62\x8a\xa7\x2f\xf0\xb9\xfb\x7d\x5e\x1f\x81\x7e\x90\x6f\x98\xd7\xb8\x58\x25\x8c\xaf\x54\xa3\x40\x16\x5c\x90\x98\x4c\x74\x0f\x04\xab\x1b\x32\x93\x8c\xc0\x6e\x4a\x29\x56\x6a\x59\x4e\xd1\x1a\xe5\x75\xbf\x65\xfb\xf3\x8b\x0e\xb8\x79\xb4\xa4\x09\xe3\x01\x6b\x87\x63\x01\x5a\x13\x7b\x93\x42\x67\xa5\xb3\x10\xcd\x78\x96\x0c\x0e\x33\xe6\x1e\x12\x99\x66\xdc\x0e\xe7\x1b\x85\x26\x7f\xe5\x73\x3c\xf4\xe6\x53\x91\x37\x08\xd5\x38\xb3\xa1\x25\x7b\x01\xd2\xc3\x78\x21\x39\xaa\x72\xeb\x47\xfb\xd1\x18\xe1\x18\x1f\xcb\xc3\x54\x7d\xdf\x9b\x20\x69\xce\x2e\x43\x36\x53\x25\xe9\xb9\xb8\x62\x37\xac\x9c\x70\x8f\x40\xd2\x9d\xa1\xb7\x3a\x33\xf0\xaf\xa4\x46\x3b\xcc\x30\x50\x01\xea\x8d\xb0\xb5\xb3\x42\x16\x9c\xa0\x35\x82\x69\x37\xc0\x69\xb5\xa1\xdb\xf8\x62\xf5\x4f\x8b\x20\x67\xb2\x55\xd2\xbe\x32\x75\x1d\xf5\x55\xe8\x50\x89\x5e\x07\x8e\x5a\x97\x13\xf9\xa9\xc0\xa5\xf1\xd8\xd5\x08\xe6\x70\xd0\x1b\xfd\x85\xd1\x8b\x1d\x27\x2a\xff\x61\x51\xbc\xdc\x8e\x10\x7e\xeb\x23\xd9\x49\xc9\x6b\x01\x32\x48\x28\xc7\x4e\x69\x21\xe2\xb3\x6e\x09\x75\xae\x21\x52\x77\xe3\x96\x80\xd5\x42\x66\x15\x9c\x66\x77\xc5\x25\x50\xf4\x2d\xaa\xb5\x74\x72\xf9\x39\x62\xfe\x7b\x79\xd4\x2a\x28\xf1\x31\x2e\xd2\x77\x22\x0b\x5b\xed\x5f\xdf\x68\x63\x88\xa5\x42\xe5\xf0\x3c\xab\xc5\x6e\xb2\x34\x8a\xb6\x9d\x93\xda\xd6\x7f\x40\xcc\x1b\x95\xc2\xe7\x95\x00\xb9\xa0\x7b\xcc\x53\x4b\xfa\x82\xbd\x16\x6f\x63\x70\x72\x50\xaf\x56\xe2\x17\x25\xc3\x28\x5d\x66\xc6\x81\xb0\x46\x35\xce\x6f\x46\xb3\x33\xed\x41\xa9\xf6\xb5\x88\x46\xb6\x80\xa0\x5f\xde\xf8\x65\x99\xd1\x91\xb1\x9f\x2e\x8a\xfa\xd7\x19\xc8\x30\x80\xdb\x4a\xfd\xda\x03\x2b\x87\x68\x6d\x90\xbd\x68\x78\x4e\x11\xb4\x98\xa5\xc6\x96\x41\x3d\x7a\x01\xd1\xe6\x9f\x40\x42\x84\xdd\x24\x7e\x1a\x7a\x9c\x84\x7b\x65\xa6\x71\xc1\xb4\x7e\x60\x36\xbb\xa9\x4c\xae\xcd\x60\x31\xbe\x5f\xf4\xec\xc3\xee\x67\x3e\x6e\x32\xb6\x82\x89\x62\xd0\xdf\xa7\x45\xd1\x0d\x60\x90\xdc\xf6\x44\x57\x5e\xfb\xb7\xab\x08\xb5\xaa\xdf\x57\xe5\xff\x41\xed\xeb\xcc\x30\x1a\xbc\xc2\x16\x39\x3b\xb9\x5c\x79\x94\xba\x7f\xa6\xcf\xce\xc4\xaf\xc5\xf8\x61\xb4\xb4\x69\xed\xec\xc1\x91\x1c\x05\xd5\x66\x94\x47\xf8\x6c\x13\xb9\x1d\xb0\x77\xbe\x38\xea\xa3\xb0\x95\x4d\x75\x4e\x7f\x33\xcb\x57\xbc\xd8\x12\xd4\x85\x85\xdb\xe0\x58\x96\x62\xcf\xd8\x24\x92\xf6\x58\x6e\x4a\x7b\x51\xfb\xe2\xa1\x27\xa0\x57\x7f\xcf\x37\xdc\x78\x2c\xa0\x3b\xc9\x96\xeb\x79\xe0\x89\x87\x84\x78\xb8\x49\x17\x1f\x30\x32\x0e\x31\x69\x95\x38\x47\xf4\xf0\x05\x5e\x31\x1c\xf0\xda\x99\xc7\xf0\x22\xf3\xa6\xe2\xb5\xd9\xc3\x3a\x65\x3b\x1d\xaf\xfb\x0b\xd9\x25\x50\x41\xcf\x0d\x4a\x17\x01\x83\x15\x62\xb0\x19\xb9\xca\xa6\x32\x9a\xe2\x26\x83\x54\x5d\x02\xb7\x3a\xe9\x82\x6f\x82\xed\xe1\x61\x15\x6b\xde\x44\x16\xd9\xc4\xd8\x5e\x29\xe9\x40\x3b\xdd\xe3\x5c\xb6\x7c\x8e\x70\x5f\x8e\x62\x03\x85\x4b\xd4\x44\xf1\x10\xd5\x6f\x3a\xae\x5e\x3e\x44\xac\x4f\x26\xa5\x3f\x22\x59\xfa\xfb\xa5\xc9\xdb\x65\xec\x85\xb7\x6d\xf5\x06\x82\x6b\x69\xa4\xc0\xea\x64\xe8\x59\x5d\xa4\x1d\xac\x4e\xe7\x19\x65\x91\xd2\xba\xed\x73\xbd\xd9\x5f\x46\x00\xe4\x6b\xe5\x22\xe2\xfe\x4d\xbd\xd7\xf6\x8c\x1e\xbe\x79\x19\xcf\x92\xe5\x86\x13\xd1\xfc\x98\x59\xa1\xcd\x2a\x58\xd6\xea\x2f\xc1\xb5\x6b\x2f\xf6\xdb\x29\xe9\x69\x4a\xe8\x25\x37\x60\x55\xfb\x9f\xb3\x03\xba\xd6\xba\x66\x17\xc7\x9d\xdd\x26\x7a\x49\x79\xda\x7e\x07\x2a\x35\x6a\x81\x6d\xe7\xbb\x82\xd4\xba\x69\x5d\x29\x7b\xeb\x51\x96\xd1\x20\x3f\xaf\xa5\xb2\x12\x6d\xf8\x56\x2a\x57\x07\xd1\x0c\x53\x26\xdc\x2e\x6b\x1e\x47\x11\xc7\x5b\x76\xe9\xb2\xb2\x44\x92\x74\x76\x42\x3b\x1f\x1a\x89\xe5\x6b\xc0\x63\xf0\x38\x7b\xb8\xb6\x43\x22\xa0\x58\x87\xa4\x4c\x58\x26\x6f\xb2\x7b\x86\x1e\x63\xd5\xd4\xdc\x37\xbf\x46\xce\x33\xd7\xb7\x3a\x71\x3b\xc3\x70\x54\x96\x0c\xd5\x61\x84\xb0\x7d\x28\x0b\xd5\x00\x2d\x34\x32\x5c\x36\x71\xdb\xcb\x95\xd6\xf8\x43\x84\x78\x3c\xf3\xc3\x1b\xf0\x96\xdc\xa3\xda\x79\x35\x15\x52\x6f\x69\xf2\x95\x49\xaf\xff\x59\x68\x07\xdf\xdc\x5b\x45\xc7\x73\x1a\x7c\xfc\xb3\x51\xf9\xf1\xc1\x5d\xa3\x45\x67\xe9\xae\xb8\x1c\x7f\xa5\x03\x5d\x03\xd7\x5b\x03\x0e\x86\x21\x50\xcd\x43\x26\x00\x8e\xa2\x17\x2f\xeb\x91\x26\xae\x72\x58\xdc\xb5\x14\x17\xe7\xf3\x0c\x3e\xd7\x40\x89\x67\x16\x49\xce\x5c\x38\x91\x67\x47\xd2\x74\x54\xc3\xb3\xe5\xed\x32\x8e\x8f\xac\xc3\x22\xa5\xe0\x7c\xbc\xe5\xf2\x8f\x44\x9c\xe2\xe8\xf9\xc8\x2f\x1e\xb0\xf4\xb3\x2f\xce\x7e\x88\x53\x6c\x3c\x6f\x72\xe2\x9e\xc7\x76\xa0\xfe\x6e\xee\xbc\xae\xcc\xcd\x89\x4b\xdd\xf6\x34\x57\x9c\xec\xeb\x38\x71\x2e\x79\xcf\xaa\x67\x61\xd7\x77\x45\xf0\x03\xde\xe2\x67\xf2\xa4\xf7\x90\x76\x68\xe6\x97\xe2\x15\x9b\xec\xbd\xad\x4e\xcd\xd3\xaf\xf7\xaf\x3c\xe5\x5b\x98\xc5\x2b\xf0\x5e\x3c\x7f\xa9\xdb\x0a\xdb\x72\x3b\xa7\xc7\x4e\x12\x7d\xbd\x53\xc5\x13\x8d\xd8\xa2\xba\x47\x0b\xeb\x43\xbc\x10\xb5\x8f\x7b\xe8\x9c\x13\x1c\x73\x4e\x3c\x30\xa8\xa6\x22\xe9\xc6\xf0\xac\xa2\x61\x1c\xfa\x0e\x23\x7a\xfd\x2a\x6a\x65\x68\xe9\x72\xa3\xcc\x26\x26\x82\x31\xed\xd3\x9c\x11\xd9\xcf\x95\x7a\x07\x2e\xde\xf5\xe4\x57\xea\x67\x20\x6d\xdd\x32\x41\x87\xa2\x91\xf2\x31\xe7\x58\x6d\x32\xec\x02\x3d\xab\xe8\xa6\x3a\x6e\xb0\xf2\xf8\x8b\x2e\xa6\x25\x16\xaf\xfa\xeb\xbc\x9f\xa3\xb0\x61\x28\x3d\x9e\xc4\xf0\xed\xc1\x78\x76\x66\x9c\x61\x57\x3b\xe7\x99\x99\xb7\xa0\xe3\x17\xce\xdc\x7c\x7e\xd0\xec\x63\x56\x4f\x8f\x12\xe4\xbe\x7b\x3a\x67\x15\xa4\x3f\x96\xbe\xb2\x3e\x03\x4a\xdf\x61\x3f\x27\x39\xe6\x25\x00\x03\x71\x4c\x8e\x86\x8d\x31\xfe\x58\x76\xfd\xde\x9c\x72\x3c\x41\x76\xc8\x52\xc6\x16\xf7\x86\xde\xec\x90\xc2\x91\x2c\xc4\xb9\x5d\xc4\x51\xfd\xe3\xfa\xe8\x92\xe3\x03\x11\x94\x22\x6c\x2f\xdb\x8d\x25\x91\x39\x44\x5a\x52\xcb\xba\xcb\x47\x3f\x8e\x8f\x9f\x7b\x6f\x25\x0b\x31\x80\x03\x0a\x6c\x7a\x6b\xca\xf0\x01\x44\x08\xe3\xbb\x40\x23\x67\x5a\xef\x08\xfe\xa3\x60\x1a\x06\x0e\x05\x7c\x20\x85\x98\x66\xe8\xb9\xf9\x36\x08\xf9\xba\x2c\xc2\xc7\xaa\xb7\xd8\x61\x99\xe5\xd3\xf0\xc6\x7c\x32\xef\x67\x73\x2b\xa0\x6e\x95\x4e\x8e\x4e\x0b\x06\x7d\x87\x63\x4d\xc4\xb8\xce\x00\xc4\x34\xa7\x2f\xee\xf1\x5a\xbb\xcd\xaf\xc7\x90\x9f\xc5\x71\xda\x4d\x67\x57\x53\x04\x71\x04\xd6\x77\x70\x27\x71\x7c\x81\x14\x49\x3d\x42\xd1\x7a\xa0\xbf\x8d\xd4\x9e\x46\x83\x09\x08\xa5\x1a\xb8\x31\xad\xb8\xda\x9c\xf6\x8e\xf6\xd0\x08\xf1\x43\xec\x9e\xdf\x63\xfe\x52\x9c\xe0\xc8\xe7\x38\x6e\x73\x87\x18\xf0\xe3\xca\x6e\x13\x94\xc4\xf4\xb2\x65\xe8\xfa\x1e\xa1\x91\x76\xf9\x9b\x47\x39\x0d\xa8\x91\xac\x1a\x14\x25\xc9\x0d\x21\xbe\x7a\xa8\x70\xeb\x86\x24\x50\xed\xaf\xfb\x9a\xfb\x7e\xab\xdc\xec\x60\x4d\xf4\x8a\xd8\x2d\xba\x1c\x68\xb6\x8a\x85\xde\xcd\x79\xa5\x93\x79\xad\x09\xc1\x44\xb1\x3a\xa4\xee\x52\x81\x86\x87\x30\x44\x10\x09\xa3\x31\x95\x1d\xfa\xcc\x66\xb7\xf2\x33\x3f\xce\x6c\x78\x61\x0e\xf1\x18\xca\x6f\xc6\xec\xc5\x13\xd5\x32\x46\x93\x58\xa9\xc6\x28\x32\x0c\x7f\x73\x1c\x31\x31\x7a\x1a\x70\x9e\x05\xc0\x70\xb7\x7d\x8d\x6a\x76\x24\x91\xb0\xbf\x2e\x49\x22\xc0\x01\x4e\x26\xc9\x53\x16\x3c\x84\x7d\xdc\xc2\xab\xb7\xc6\x73\x54\x7e\x1b\x16\xaa\xb3\x98\x0d\x02\x98\xbd\x0c\x10\xd7\xf8\x71\x17\x39\xf4\xfc\x98\x2e\xdd\x31\xaf\xcd\x42\x47\x07\x92\xbb\x5c\x44\xd8\xf2\x92\x30\xea\x76\x8c\xfc\x2a\xbd\x97\xd2\xf1\x73\x69\xdf\x95\x73\x18\x60\x4f\x24\x6e\x88\x82\x98\xed\xf4\x20\x79\xfd\x3d\x49\x80\xe6\x68\x9c\x57\xc9\xb0\x24\x2e\x7f\x0f\x07\xcc\x8d\x2d\xf9\xa3\x01\xeb\x68\xd0\xc7\xc1\x1a\xf2\x83\xc7\x3c\xc4\x79\x9c\xa0\x16\xba\x2b\xa2\x17\xd3\xab\x0a\xba\x29\x17\x22\xa5\xf1\x85\x4a\x38\xd6\x70\xf8\x78\xa0\x93\x1f\xd7\x3e\xbe\x4d\x66\xac\x4a\x0a\xb0\x1d\x6d\xd2\x88\x6f\x47\xa1\xed\xc7\xd3\x08\x24\x77\xc7\x05\x86\x60\x17\x0e\x8a\x9e\xc8\x69\xce\x93\xd1\xce\x0f\x04\xab\x1e\xf0\x5c\x97\x38\xc5\x91\x58\x51\x46\xce\xcc\x78\x57\xb3\xe4\xa4\x12\xb8\xc3\xb7\x3d\xc8\xcb\x81\x07\xcb\x5e\x64\x9e\x15\xff\xb6\xe1\x58\xbe\x33\x9e\x02\xbf\xe7\xf6\x4d\x7b\x87\x1d\x6d\x62\x3e\x9c\x30\x97\x0b\x96\x0c\xc4\xed\xd3\xd6\x73\x93\xdf\x72\x26\x72\xef\x28\xb1\x3b\x82\x33\xd6\xfe\x6d\xea\xd4\x82\x57\x9a\x32\x4f\x38\xc3\x85\xe3\x19\xf9\xbf\xd8\xe7\x83\xc9\xbb\xd4\x33\xc9\xe3\xc7\x9e\x33\x2f\x6e\xf7\x2f\xf3\xdb\xa9\xa4\xab\x48\x8a\xd4\x8d\xa3\xda\x1c\x30\x8a\x95\xc6\xf4\xac\xd9\xe3\x10\xc8\xd4\xd2\x3d\xec\xc5\xc1\x2b\x1c\xb9\xca\x6c\x9d\x5d\xb9\xca\x4f\x7c\xe5\xe5\xd5\x42\xbf\x32\x87\xcf\x7f\xe1\x32\xbf\x9f\x96\x3e\x3b\x09\x5a\xe6\xe7\xb3\x74\x3e\x7e\xf6\xc9\x5d\x67\x64\x8e\xef\xa5\xd3\xfe\x93\x37\xe5\xac\xe4\x54\x2a\x0e\x00\x4c\x9c\xd1\xd0\x8c\xa0\x74\x67\x5a\xb8\x82\x56\xa5\xef\xf1\xae\x2e\xe3\x6c\xd0\xe0\x29\x08\x97\xda\xc7\xc5\xd6\xc8\x73\xfe\x2e\x35\x1f\x43\xe7\xa2\x34\xcb\xe9\x1e\x0a\x16\xe2\x90\x54\xa3\x69\xf5\xe8\x38\x40\xd9\x96\x52\x03\xcb\x9a\xd7\x94\xfa\x36\x66\x76\x77\x12\x14\xe9\x23\x90\x2e\x4f\x22\x6d\x77\xa4\xc9\x3f\x07\x48\x69\x68\x9f\x54\xb6\xfe\x30\x72\xf0\x87\x93\x1f\x9f\x97\x63\x67\xa3\x47\x47\x69\x7b\xf8\x39\x44\x84\x19\x33\xb7\x6a\xca\xa0\x74\xde\x95\x44\xf7\x12\x2c\x02\x7a\x49\x84\x46\x81\x76\xfe\x04\xcb\x5e\xfc\xf6\x60\xd0\x98\xf7\x2a\xac\x29\xa6\x30\xda\xbf\x42\x9f\xab\x6d\xee\xa3\x52\x7f\x3c\xc5\x37\x7d\x20\xac\xb5\xc2\xef\xe3\x1f\xec\x97\x79\xe7\xc5\x45\xf2\x44\x2c\xbe\x93\x9f\x80\xe1\x43\x75\x62\x9b\x57\x3a\x7e\x17\x21\x6e\x55\xa2\x46\x8c\x90\x23\x4a\xa1\x8a\x72\x8f\x17\x4f\x46\x1d\x14\xa9\x54\x63\x4f\x82\x45\x15\x9d\x0a\x12\xd4\xad\xa7\x4d\xbd\xaf\x57\x41\xf5\x2d\x2d\xe6\x2e\xa8\x0d\xea\xc1\x0a\x7c\xf8\xb4\x6c\x4d\xd2\x0f\x6f\x8f\x42\xa0\xea\x69\x59\x2e\x6c\xa9\x9d\x2a\xde\x55\x96\x59\xdf\x98\x16\xed\x4e\x50\xf5\x73\x7d\x6f\x1e\xe3\xff\xcd\x1b\x59\x16\xcf\x4c\x64\x29\x6f\xf5\x4f\xe9\x60\x59\xbe\xe7\xfb\xec\x00\xe7\xcf\xca\x5f\xf1\x97\xc5\x5b\x35\x76\xf2\x87\x93\x57\xdf\x06\xaa\x7d\x45\xec\xe6\x0c\x35\xe1\x94\x2d\x5b\xbc\xa6\x8b\x15\xb5\x7f\x4c\x9c\xf4\x01\x12\x47\x9b\xb3\xa9\x28\xa0\xa0\x42\x94\x7f\x9b\x70\x00\x06\x62\x48\x22\x1c\xd6\x9d\x64\xc2\x90\x33\x00\x22\x11\x85\xfa\xae\x0f\x78\x62\x9d\x4e\xa1\x6d\x51\x1f\x6b\xdb\xb2\xe6\x41\x3f\xd4\xe4\xf6\x16\xb5\x30\x51\xa2\x64\xeb\xda\xf1\xb8\x69\x52\x2f\xe7\x49\x8b\x4b\xc4\xe8\xb7\xf4\xcb\x9f\x3c\x45\xcb\x37\x18\x89\x52\x7c\xf1\x9d\x7c\xb7\x53\x9f\xd5\x37\xbf\x22\xdf\x30\xe9\x36\xa3\x3f\x5b\xcb\x8e\x2f\x27\xe3\xf1\xb1\x38\xa8\xc4\xab\x88\xa5\xcc\x8c\x04\x1a\xc4\x66\x24\xed\xdc\x9b\x5a\x09\x99\xf0\x5a\xd9\xbd\x5e\x26\xcf\xca\x60\x40\x60\x32\xa9\xb4\x73\xee\x4c\x81\xc5\xa8\xb4\x5c\x82\x33\x00\x58\xa4\x08\x4a\xd3\x4e\x5c\x1d\x0f\xeb\x74\xe7\x79\xc9\xc8\x30\x14\xcc\x9c\x2f\xd5\xa1\xe6\x08\x2f\x68\xbb\x4d\x99\x9f\x20\x48\x38\xff\x3e\x55\xab\xa3\xe8\xb8\x51\x95\x5b\x63\xaa\x31\xcc\x04\x3e\x8d\x28\xa9\x2a\xcd\xf6\x28\xd8\x57\x4e\x30\xed\xee\x4a\x38\x2b\x71\xf9\xb6\xcd\xac\xef\x2a\xdf\x26\x8f\x59\x60\x81\xb2\xfc\x50\xe6\xe1\xb8\x18\x7b\xa4\x0f\xb7\x1c\xe8\x0a\x85\x01\x63\xa1\x7a\x81\x3f\xe2\xee\x3c\x17\x17\x23\x91\xc7\xdf\xdf\xd4\xfc\xc2\x69\xa1\x65\x59\xb9\xee\xba\x53\xf1\xc9\x6a\xa9\x3e\x69\xdd\x10\x3e\xbe\xf6\xc8\x27\xe7\x75\x59\x10\xee\x3c\x03\x99\x75\x6e\xae\x10\xf5\x8b\x6a\x6a\x0f\x8b\x31\x03\x59\x1e\x2d\x40\x87\x92\xbb\x1b\x26\x19\x00\xa8\x4f\x9d\xd5\x2f\x86\x7b\xda\x40\xde\x6c\x5d\x72\x0a\x9e\xe8\xe1\x9f\x5c\xaf\x88\xf2\x9f\x07\xff\x09\x9f\xfe\xf6\xcf\x3a\xf1\x38\xf3\xfc\xfc\x5c\x1a\xbf\x8b\xd2\xe3\xbf\x8b\x1d\xff\x34\x7f\xc6\x0f\x75\x39\xfe\xe7\xf1\x27\x0c\xe1\x5f\x26\x1a\x9f\xee\x7f\x5e\xd7\x43\xbf\xf1\x27\x94\xf6\x98\xde\x87\xa2\xc7\xfc\x92\xde\x73\xd5\x7b\xe5\xf3\xd3\x9a\x2c\x53\x44\xb5\x3b\x6d\x86\x09\x80\xde\x19\x06\xdd\x32\xf6\xe4\xdf\x34\x29\x0d\xe1\xd4\x1f\x3c\xb9\x02\x93\x8b\x8b\x4b\xf9\x41\x98\xbc\x99\xed\x28\x4a\x09\x20\x0f\x3f\xbb\xa3\xb3\x47\xcf\x74\x58\xa8\x14\xd3\x82\xb7\xde\x94\x9b\xcc\xbb\xdd\xfc\xb0\x25\x33\x4d\x83\xf9\x75\x66\xc3\x33\x5f\x4a\x56\x42\x9a\x68\x25\x76\x69\xae\xc3\x8c\x39\xf2\xa8\xcb\x2b\x7d\x4a\x76\xe7\x41\x0f\x9c\x41\x67\x64\x3b\x7e\xf3\x07\x9b\x58\xf2\x55\xa0\x1c\x29\x62\x38\x2d\x8e\xbf\x9d\xca\x87\xda\x1c\x2f\xc6\x87\x88\xc3\x6f\xfc\xde\xbd\xb9\x1a\x10\x6e\xeb\x47\x2d\x34\x31\x8c\xe0\x4d\x24\xf2\xad\xec\x31\xe2\xfb\xfb\x78\x9a\xcd\x25\x7a\x6e\xb1\xec\x33\x76\x93\x2b\xd6\xed\xf2\x29\x77\xc1\x2e\x1c\xe7\xd7\x92\x39\x77\x4a\xae\xe8\xcc\x7d\x9c\x7d\x66\x7d\x1d\x30\xac\x5e\xb6\xf1\xaf\x6c\x9c\x35\xf7\xca\xad\x1d\x98\x49\x81\x9c\x4d\xb2\xd3\x92\x40\xad\xec\x64\xa4\x88\x66\x32\x8e\xd5\x6b\xd5\xdd\xc5\x38\x6b\x3c\x29\x1a\x0d\x1f\xbb\x53\x96\xbf\xaf\x6c\x31\x66\xc8\xc2\xd2\x83\x07\x88\xf1\x65\x11\xef\x5f\xc7\xf0\x30\x0d\x3a\x68\xb0\x58\x76\x2c\x55\x26\xb6\x04\xfa\x3b\xb0\xd0\x4c\xd4\x9f\xcb\x8f\x01\xca\x07\x49\x45\x57\xb6\x3e\x3c\x38\xa9\xe3\xec\x2f\x30\xb9\x78\xa5\x16\x4f\x5b\x4d\x05\xc3\x7e\x56\x4b\xab\xbe\x85\xaf\xe2\x55\x6a\xfc\x54\x83\x10\x06\xdd\x5a\xde\x6c\x6b\x09\xe9\xe0\x9a\xc4\x48\x20\x08\x3e\xdf\xe2\x55\x3a\x9f\xa7\xe9\xc6\x1a\xfb\x5a\x3f\x27\x2f\xa7\x7d\x08\x6d\xe3\x1b\x7d\xd5\x13\x8e\x5e\x15\xdd\xd5\x13\xcb\x3d\xdc\xdb\x93\x37\x66\xb3\x6e\xa4\x86\x2d\xa2\xcc\x0a\x3c\x80\x0f\x69\x04\xf8\xed\xf5\x50\x5c\x2d\xa3\x76\x1e\xc6\x66\x94\x55\xd8\xd6\x03\x44\x54\x0e\x6a\x57\x7a\xb4\x54\xc6\x3d\x63\x22\x7b\xa3\x7f\xc8\x8f\x05\xa0\x08\xb3\x5c\x0a\x48\xdc\x0e\xe4\xcc\xe5\x85\xb6\x57\x87\x0c\xd9\xb5\xe9\x4a\x96\x82\x84\xbb\xd3\xc1\x36\x1e\xd0\x07\x99\x81\x4d\xa3\xbc\x17\xa3\xe4\xab\x98\xe5\x17\x69\x56\x2e\x6e\x49\x39\xdb\x12\x8b\x46\xaa\xfd\x03\x38\x2c\xf2\x31\xff\x16\x7c\x5d\xfb\x5b\x4b\x8b\xb8\x7a\xac\x49\x95\x9a\xe5\xfb\x3b\xf0\x13\x27\x07\xc9\x12\xca\x53\x13\xa3\x25\x16\x16\xb8\xf7\x0f\xe6\xcc\x07\x35\x45\x61\x8b\xba\x20\x38\x0e\xc3\x45\x07\x39\x5a\x5d\x27\x75\x1f\x5a\x44\xad\x5d\xb4\xec\x52\x5b\xb9\x03\x49\x1e\x4d\xc7\xda\xde\xb8\xad\xfe\x7e\xbd\xde\x7f\x60\xed\x75\x35\x6d\x6e\x0f\x89\x79\x78\x6a\x3a\xba\xaa\x67\x6d\xf9\x71\xc0\x38\x69\xad\x75\x0d\x3b\x3f\x18\x23\xd4\xc1\x8a\x60\x49\x41\x55\x98\xfe\xb2\xac\x78\x34\x18\xfa\x97\x4c\xbf\xcb\x62\x13\xd2\xbe\x60\x96\xb8\x67\xaf\x95\x13\xfa\x97\x84\x47\xd1\x7b\xe0\x09\xdb\xcf\x32\x7a\x59\x90\x40\x46\x81\xf2\x23\x0f\xb1\x2f\xc0\x7f\xc8\x8f\x67\x3f\x58\x7f\x49\xaf\xbd\xfd\x17\xcc\x1f\xf7\x97\xf7\x2b\xfc\xad\xbc\xf9\x17\xee\xdf\xe1\x1f\xe5\xcd\x2e\x9a\x5b\x02\x85\xde\x2d\x62\x2c\xfb\x04\x0d\x17\x90\xca\x6a\x39\xeb\x27\x18\x42\xe2\xab\x12\xe5\x25\xe3\x3e\xf1\x39\xa0\x86\xf8\x39\x91\xfe\x8a\xbb\xae\x4b\x5a\xe7\x23\x8e\xa3\xaf\xc3\x07\xc0\xb9\x92\x9b\x1f\x74\x9e\x52\x53\x2c\x5a\x66\x58\x10\x8a\xe6\x66\xe4\xb8\x4d\xe2\x7d\x47\x6d\x94\xb5\xd7\x8f\x1d\x4c\xb4\x44\xdb\xe5\xc8\xa7\x9d\x47\x9c\x42\x6d\xd6\x17\x45\x6a\xec\xaa\x6f\xe8\x01\xe4\xdb\x1e\xa2\x9b\xc4\x45\xd4\x23\xcd\x3d\x6c\xc5\x17\x5a\x07\x4f\xcf\x92\x00\xc9\x4b\x71\x2f\x01\xcd\xd3\xdf\x9f\xe0\x8b\x27\xb8\xec\x3c\x0f\x29\x85\xef\x71\x7d\x63\xd8\xd1\xd8\xd0\x91\xe6\x78\x16\x67\x8a\x14\x17\xbb\x01\xe3\xfb\x43\x19\x60\xbd\x89\x07\x8a\xfe\x5b\xdb\x30\xaa\x38\x07\x8d\x2d\x45\x12\xac\xcb\x71\x7e\x4f\xf1\x16\x9a\x00\xd8\x60\x81\xb4\x50\xf2\x81\x51\x7a\x90\x48\x45\x93\x20\xf9\xd4\xd2\x4c\x2d\x31\x47\xd7\xa5\x05\x57\x8b\x62\x20\xfb\x2b\x5d\xb7\xec\xdb\xd8\x0b\x76\xe8\xf5\xeb\x95\xa2\x34\xa5\x60\x48\x67\xb2\x2c\x91\xbd\x8f\x0d\x67\xab\xfc\x8e\x97\xd4\xc0\x18\xec\x53\xf2\x7c\x0b\x39\x53\x4b\xda\x18\x28\x4b\x0b\x84\x74\x91\xfe\x74\x8a\x87\x30\xb5\xb2\x65\x13\x8b\x54\x15\xa9\xf9\x4f\xe2\x35\x38\xbf\xfe\xa6\x3e\xa2\xae\x21\x83\xfa\xe1\x76\x30\xd4\xaf\x37\x1b\x1a\xb8\x5c\x8b\x3c\x75\xfd\x30\x23\x45\x97\x47\x4f\x8d\xdf\x67\x3a\xba\xd1\xd4\xa9\xf1\x2b\x77\x0d\xf1\x28\xf0\xc6\xfe\xfc\x6d\x4b\xe4\x77\xb8\x0b\x56\x28\x9a\x07\x1b\xcb\xd7\x56\x47\x36\x83\xfe\x94\xa9\x44\x6c\x49\x49\x21\x7c\x02\x61\xe2\xc8\x19\xe7\x02\xab\x20\x3e\x32\x5e\xca\xf8\xb7\x8d\x8d\xe5\x69\x34\xec\x59\xd6\x32\x04\xbd\x75\x93\x58\xf8\xc6\xba\xd3\x3d\x39\xde\x5b\xf9\xd1\x2a\x6a\xe5\x7f\xcb\xe8\x60\xdf\x79\x71\xc3\x1c\x87\x2f\x52\xcc\xf4\x00\x01\x51\x88\x7b\x8a\xe6\xa7\x67\x52\xf2\xd7\x64\xab\x9f\xc7\x64\xa5\x60\x39\x8a\x09\xa7\x62\xd9\x60\xc0\xff\x44\xfc\x95\xbb\xf2\x39\x2f\xf7\xbb\x71\x42\x21\x85\x5c\x80\xf8\x1c\xdb\xc2\xd5\x22\xc1\x28\xf2\xc1\x8d\x17\x9e\x44\x7e\xbd\x7c\xc6\x18\xe0\xc7\xb3\xf1\xb6\xdb\x0c\xb6\x18\x98\x22\xda\xff\x05\xfb\x68\x40\xfd\xd0\xbd\xbf\xa9\xc7\xfc\x7a\x3b\xff\xb6\x5d\x70\x10\x16\xd6\x72\xb2\x64\x30\x21\xd9\x65\x96\xe7\xcc\xbe\x43\x84\xaf\xdd\x9b\x37\x8e\x90\x34\xcd\xc7\x82\xf4\x9f\xaa\x83\x5e\xf4\x94\x05\xe1\xaa\xf4\x2f\x7d\xf6\x71\xab\x0a\xec\xaf\x72\xd0\x15\xd8\xbb\x49\xaf\x1c\x0e\xc7\xd1\xe1\x6b\xe1\xf0\x96\x1a\x4b\x9a\x2e\x05\xef\x7b\xdc\x6e\xe6\x52\x04\x71\xdf\x27\xf6\x9d\x88\x65\xd9\xb2\xe5\xf4\x4b\x35\xfd\x21\xac\x6f\x0a\x62\x4a\x30\x18\x12\x44\x2a\x71\xd8\xe2\x24\xae\x89\xc0\x66\x7c\x91\x4e\x88\x4e\x2b\xfc\x44\x33\xd1\x98\xa3\xde\x54\xf3\x8e\x74\xc5\xc6\xbe\x2e\x46\x01\x1a\x4f\xb5\xbd\x49\x10\xbc\xd3\xd8\xf3\xb1\x9b\xcb\x76\xca\xcb\x47\x0a\xff\x39\x12\xa1\x45\x0e\x56\x18\x8d\x7c\xc8\x48\x92\xd4\x23\x2e\x4b\xea\x1b\x90\xb8\x56\xff\x9d\x30\x5c\x40\xf0\x6f\x37\x77\x67\x0f\x3d\x6a\xec\xf7\x19\xaf\x2c\x69\x5f\x0b\xbd\x24\x3a\x65\xfc\x3c\x48\x33\x41\xd6\xaa\x26\x7a\xe9\xf8\x55\x56\x5f\xb3\x4c\xb0\x60\x0a\xfb\x6b\xac\xc7\x16\xfa\x7e\xd1\xf4\x5d\x27\xc4\xfc\x3a\x66\xd4\x0d\x7d\x2b\xdf\xea\x0b\x7f\x55\xb0\xeb\xeb\x4a\x33\xb7\xe1\x5e\xf8\xe0\x50\x2e\xdc\xc0\xe3\x5b\xb7\x1c\x67\x13\x7b\x3d\x9c\x59\x32\x61\x17\x3c\x2e\x94\x3a\xbe\x99\xc9\xa0\xab\x90\x84\x5e\xd7\x99\xbc\x6a\xf5\xa6\xa6\x80\xad\xe2\xb9\xa1\xdf\x1f\xd9\xf8\x17\xc8\x80\xf0\xe1\x87\x79\x52\xde\x4d\x8b\x55\x97\x0e\x51\x5c\x78\x71\x03\x17\x68\xed\x7c\x3f\xbe\xd4\xc4\xd0\xae\x02\x29\xf4\x32\x55\xe8\xf1\xb5\x13\xdd\x9c\xee\x54\xef\x2d\x3e\xac\xaf\x81\x6d\xae\xd0\x32\xf5\x26\xfe\x92\x15\xe6\x65\x5d\xc7\x16\x07\xc4\x07\xde\xad\x7c\xf3\xc6\xd2\x18\xea\xa8\x2b\x37\x72\xb0\x57\xbe\xef\xda\x10\xe6\xd5\x1b\x03\xe7\xef\x18\x34\x7e\xb9\x81\x56\xf8\x9f\x90\x65\x1b\x17\x91\xc2\x0a\x68\x52\xe9\x59\xa1\x8c\x22\xe3\x95\xa7\xfd\xe8\x32\xa0\x8c\x31\x0b\xa3\xbb\x19\xe9\x8e\xb8\x98\xc3\xd4\x89\x7a\x8a\x7c\x6f\x0b\x0e\xc3\x0c\x8e\x8b\xd4\x55\xc3\x80\x4a\xe7\x4f\x7c\x8e\xc7\x4a\x70\x3c\x73\x2a\x96\x9d\x6b\xd4\x7a\x7d\xf4\x89\xaa\x7a\x94\xd8\x97\x5d\x5f\x8c\xf5\xd6\xcf\x59\x28\x04\x96\xb0\xd1\xde\xd0\xac\xe9\x43\xdd\x9c\x5d\xee\x2f\x88\xf1\x6e\x39\x87\xdd\x3a\xb3\x16\x3b\xa1\xaa\x77\x57\x33\x2f\x62\x47\x2d\x69\xe7\x19\xbe\x28\xa3\xa6\x5b\x84\x9b\xb2\xdb\x53\x7b\xef\x3c\x04\x26\x88\x9a\xf8\x70\x98\x32\x9b\x7b\x27\xed\xe9\xcb\x68\x49\xd2\x77\x95\x75\xb1\x23\x6e\xbe\xc3\xb1\xa8\x32\x56\xdd\x69\x74\xab\xe6\xac\x8f\xbc\xb9\x1e\xfc\x49\xfc\x28\x4f\xd4\x3a\x46\x02\xd5\xac\x1d\xc7\x73\x08\x11\xf9\xae\x40\xaf\xca\xa0\x19\x12\xb3\xe4\x72\x5c\x03\x9d\x99\xa4\xc5\xf8\x8f\x64\x85\xb3\xbf\x50\x71\xb9\xba\x6a\x9d\x56\xa0\xfe\xdb\xad\x0e\xd4\x2f\x41\x14\x53\x5d\xab\x43\x37\x4f\x65\x6d\x93\x66\xcf\xd7\xf5\x7a\x03\x7e\x70\xea\x24\x3e\xd0\x39\x0b\x54\x3f\xa8\xbf\xf3\xac\xb5\x72\xd0\x7f\xe2\xd7\x9f\x44\x6b\xeb\xe6\x23\x6e\xd3\x65\x97\xa6\x4d\x5e\xec\x59\x70\xdd\xe0\x45\x11\xc8\x20\x6d\x65\x02\x71\x95\xe4\xbf\x82\xa9\x79\xce\x5e\xf2\xff\xbe\x16\xdb\xb2\xda\xfd\xaf\xb6\x0e\xd6\xeb\x4e\x31\x9d\xf9\x17\x63\xc1\xb5\x62\x97\xf0\xa3\xa0\x2e\xb1\x65\xc2\x5f\x75\xcc\xcc\x6a\xf4\x08\xeb\x3d\xd1\xf1\x54\xb3\xb9\xe6\xdb\x71\x83\x48\x7b\xd7\x9a\xc1\xa9\x10\x7f\x0e\x04\xfa\x19\x74\x66\xa5\xc0\x87\x04\x45\x41\xa6\x09\x8f\xd0\xa1\x5d\x0a\xab\xf4\xb2\x1a\xfc\x44\x79\xdc\x2d\xc5\x2b\xb4\x95\x81\x7b\x46\x34\xb8\x06\xf0\xe3\xfc\x99\x62\x35\xb3\x52\x8c\xaf\x9e\xac\xc3\x12\xd7\x7f\xea\x91\xfa\x86\x8f\x9a\x88\xf7\xc0\xa9\x31\xa6\xd2\x6f\xfa\x22\x5a\xfb\x9e\xd3\xc1\x69\x52\x47\x63\x0f\x75\x8c\x58\x4c\xfc\x1d\xf0\x77\x9f\xdb\x03\xb8\x48\xd8\xc2\x63\xd3\x6b\x2d\x1d\x25\x4d\x5e\x62\xf0\x1c\xba\x8e\xf6\x28\x28\x37\x2f\x83\xb8\xfe\xe2\x39\xdc\xdd\xbd\xab\x7b\xad\xd9\x49\x2c\xfc\xa6\x51\xe8\x7a\x10\x31\x77\x5c\x5d\xcb\x37\xda\xc9\x60\xc7\x06\xfc\x9f\x63\x87\x03\xb9\x54\xe3\x39\x6a\x91\x9b\x54\x2e\x15\x72\x22\x02\x14\xa4\x38\xc8\xf1\x7b\x0c\xed\xc8\xc2\xeb\x70\x68\xda\x1e\xae\x97\x6c\x61\x3b\x7a\x5a\x57\xbb\xaa\x6a\x47\xb0\x79\xe1\x54\x0e\x36\xdf\xce\x70\x3a\x5b\xa4\x69\x62\xd4\x07\x0b\xe2\xcc\x53\xc0\xa7\x4c\x18\xe1\x0a\x92\x49\x8d\x1b\x08\x3d\x63\x35\x96\x6c\x71\xa2\x1a\x41\xa5\x6d\x94\x10\x18\x7c\xb3\x2c\x0a\xd5\xcd\x53\x8c\x17\x6c\xc5\x5f\xd1\x9c\xe3\xad\xf1\xf1\x3a\x24\x20\x77\x89\x20\x9b\x34\x5c\x5f\x8a\x36\xdc\x96\x89\x16\xaa\x32\x0c\xf5\xba\xdc\x9c\xc7\x79\xd4\x02\x60\x39\x93\x96\x52\x1e\x30\x07\xd4\xbf\xa4\xaa\xb1\x35\xfa\x4e\xf0\xac\x32\x37\xf7\x56\x74\x95\xba\x64\x3e\x5d\x62\x61\xab\x13\x4a\x51\x72\xdc\xdf\x15\xd6\x1e\xaa\x5b\xbc\xdc\x0e\x1b\x57\x20\x4a\xcd\x0d\x6d\xb3\x6f\x30\xa3\x10\x17\x4b\x31\x7a\x7f\x96\xd2\x57\xac\xd2\x00\xff\xa8\x92\xc3\xa4\x87\xa7\x0f\x37\xb4\x9c\x9e\xba\xbc\x99\xea\x82\xec\x84\x4c\xe4\x2d\x6d\x40\x76\x8f\x74\xd4\xca\x01\xea\xec\x0e\x75\x60\xfa\x48\xcf\x39\x3e\x68\xe1\x6e\xc0\xf6\xed\x62\xec\xfb\x08\x74\x86\x97\x99\xb6\xee\xef\xfe\x69\x70\x79\xe6\xb7\xb3\xe5\x1a\x7a\x6c\x31\x5c\x90\xbf\x9b\x4e\x8c\x26\x92\xf7\x77\xe3\x71\xff\xda\x0e\x3c\x91\x80\x94\x05\xda\xa1\x9a\xe0\x0e\x0c\xd0\x9b\x59\x36\xee\x76\x6e\x70\x63\x5c\x52\xad\xc0\x73\x0e\x81\x80\x33\x09\xb2\x32\x8d\xfa\xd1\x73\xb1\x35\xce\x48\x27\x0f\x55\x3a\x0e\x15\xeb\xe2\x16\x87\xde\xe8\x0e\x8e\xdf\x7f\x78\xa4\x68\x6e\xda\x70\xd7\x30\xf6\x3e\x06\xdd\x0c\x23\xe3\xf2\x45\x67\x7e\xb6\x4d\x81\xca\x70\x25\x08\x5c\x9f\xa7\xf9\x94\x4c\x2e\x7e\x4a\x7f\x28\x37\xef\x87\xb6\x42\x1d\x73\x55\xc9\xcf\x23\x57\x4d\xdd\xf7\xfa\xc0\xa9\xc2\x35\x3b\x8e\x7f\x0e\x81\x33\x85\xf2\x5d\xe7\x38\x34\xe1\xe2\xc3\x7a\xba\x17\xcd\xa6\x9f\xe5\x43\xc5\x59\xa0\xf0\xd7\xbe\x50\x2b\x2b\x8f\x17\xb3\xa4\x76\x57\x80\x69\x2f\xb9\x99\xee\xcf\x5b\xbc\x58\xd7\xd3\x87\x2f\x79\x39\x55\x0c\x57\x2a\x71\x9e\xe6\xe3\x18\x4c\xca\xe2\x12\x99\x59\x09\xb2\xbe\x17\x72\xf8\x55\x21\x46\x72\x3b\x43\xfa\x5d\x93\xa0\xd5\xc3\x22\xe3\x8b\x5c\x84\x2f\x35\xcc\x27\x2f\x92\xbe\x17\x2c\xf5\xc0\x93\x32\x79\x5a\x06\xaf\x96\x53\xb6\xe9\x92\x67\x04\x55\x71\x73\xbf\x22\x60\xce\xa1\xae\x05\x2b\xd8\x9c\x55\x60\x77\xc7\xb7\xcf\x2a\xe2\x0f\x23\x0e\x27\x73\x87\x93\x91\xc3\xc9\xc0\x61\x66\x1a\x34\x50\x92\x76\xef\xba\xda\x94\x5a\x09\x18\x03\x23\xb8\x73\xdc\x6b\x12\x89\x45\x34\x2c\x12\x8c\x37\x59\x08\x93\x72\x7f\x8d\xd5\x92\xfe\xfe\x3a\xff\xe1\x79\x52\x9f\x5e\x07\x1a\x94\xf8\xad\x6e\xb9\x30\x19\xbb\x34\xc6\x6f\x1c\x9b\xa3\xd7\xe1\xbd\xbe\x2f\xd1\x05\xc4\x6c\x46\x0e\x85\xc9\x7f\x16\xe5\xc3\xc7\x01\x0c\xa7\x01\x97\xc7\x2b\x3b\x84\x38\xaf\xa0\x4b\x1d\x33\xba\x79\x80\x91\xac\x5f\xd7\x32\x83\xb9\xf6\x47\xb4\xab\xcf\x68\xef\x36\x39\x2f\x31\x67\xb1\xae\xe4\x15\x6e\xfa\x29\x0b\x00\x55\x43\x1e\x76\xcc\x58\x23\xd6\xe6\x02\xa6\x96\x48\x99\x18\x17\x0c\x42\x45\x1e\x4a\x77\xf2\x9b\x18\x72\x1f\xab\x27\x8f\x36\xa3\x93\x4c\x31\x79\xa5\x1e\x43\x9b\x72\xce\x7a\x88\x60\xa3\x9b\xad\x4d\x9b\xbd\xaa\x87\x73\x39\xc6\xc6\xb0\x6a\x30\x5e\x18\xbf\x1d\xcc\xcb\x8f\x6d\x56\x39\x16\xab\x9c\xc3\xeb\x58\xd7\xcd\x31\x26\x23\x44\xdb\x49\xc9\x8e\x97\x75\xa5\x60\x4f\x4e\x32\x08\xde\x97\xcc\xf3\xa6\x0f\x3f\xac\x03\x98\x17\x95\xd5\xe6\x5a\x73\x27\x84\xcf\x4a\xd4\xe1\xc7\x9e\x0d\x3e\x33\xd2\x39\xac\xf0\xb4\x96\x79\xa2\x56\x8f\x3a\x4b\xe7\xff\x45\x09\xe2\x9f\x6b\x17\xc9\x84\x8f\x06\x3c\x33\xc0\xca\x67\xda\xf7\x5b\x03\x54\x5b\x90\x0a\x67\x52\xa7\x53\xad\x3a\x64\x6a\x16\xce\x6f\xae\xa3\xf4\xb2\x52\xa4\xca\x6c\x28\xb0\x30\xea\xde\x53\x20\x64\x5b\xd7\x8f\x4c\xef\x32\x6b\x75\xe6\x74\x9e\x93\xb1\xd1\x70\xa4\xd6\x9b\x6b\x93\xc4\x6e\xd2\xad\x46\x61\x49\x2a\xd8\x25\x87\x98\xe8\x0a\x0e\xd2\x06\xd5\xf0\xae\xc4\x7a\xaf\x61\x7d\x6a\xc1\x46\x39\x2d\x0f\x6c\x9d\x86\x8f\x63\x77\xab\xa9\xa7\x87\x37\x28\xf7\x6c\x82\xec\xa9\x7d\xe3\xda\x13\x2b\xeb\x4d\x7a\xfc\xb4\xfb\xac\xe7\x98\xd7\xab\x39\xd1\x2b\x47\x83\x94\xe1\x54\xdf\x6f\x9d\x53\x90\xac\x6b\xdc\xbd\x9a\x2c\x19\xac\x72\x96\x9e\x4f\xea\x85\xe3\xfa\xf1\x42\x06\xec\x5c\xe8\x1e\x9a\x5c\xc4\xdd\x8d\x3c\xbe\x88\x7e\xc1\x75\x0e\x20\xa6\x08\xfb\xec\x62\x43\xa9\xc7\x10\xff\xc1\xbe\x79\xd1\x0c\xe4\x4d\x9d\x4b\x52\x02\x61\xb5\xcc\x1d\x9b\xa9\x00\xb6\x66\x3b\x63\x5c\x37\x6e\x98\xc1\x45\x1a\xd3\x0d\x5b\x5d\xe7\x1c\xd3\x46\x1d\x14\x66\xed\x8b\x0a\x46\xa7\xa5\xa9\x43\x51\x5f\xf7\x81\x70\xf3\xf6\x6a\xb2\x51\x7f\xf9\xe8\xe5\xa6\xb1\xa5\x4e\xb7\x22\x3d\xef\xb2\x7d\x78\xa1\x4a\x91\x54\x89\x97\xaf\xbe\x5e\x6e\xa6\x5e\x6f\x97\x1a\xf6\x44\x82\x83\x0a\x56\xf9\x90\x07\xc3\x84\x78\x0e\x81\xd3\x91\xe5\x62\xbf\xf5\xb1\xa4\xa6\x65\x36\xea\xd0\x3b\x95\x26\xea\x94\xfa\x91\x07\xc7\xe0\xd4\x7b\xfd\xf8\xb3\xfe\x75\x73\xbd\xf4\x8f\xfe\xec\x8f\x9f\xef\x6f\x3f\x9e\x41\xfb\x4a\x63\x05\x96\x6f\x30\xf7\x1e\x66\x97\x4f\x5f\xdc\xcc\xe5\x85\xa8\x61\x70\x4e\x98\x50\x80\xf5\x6c\xaa\x3d\xe4\x4c\xe1\xc3\x77\xca\xc5\xc4\xa0\xa5\x0d\x5a\x2e\xd1\xdc\xb9\x11\x98\xaa\x88\x26\xbf\xac\xf7\xf9\xb4\xf3\x24\x55\x6d\x1e\x5c\x5c\x15\xdc\xfb\x6f\x7a\xb4\x93\x6d\xf8\x8b\x9a\xb7\x44\x99\xf8\xc0\x97\xef\x45\x9f\x95\x7f\xfb\xe5\x57\x6d\xd0\xc1\x55\x3a\xd7\x2c\xd8\x22\x2e\xae\xac\xd1\x17\x0f\x18\xb6\xbe\x2c\xaa\xf9\xb5\x6f\xee\x93\x4b\x01\x3f\x8e\x3f\x97\xe5\x92\xe8\xf1\x8d\x7b\x8f\xdd\xee\x68\x11\x59\x38\x41\x62\xb5\x69\x16\xef\x8f\x4f\x73\x77\xf0\x2c\xa3\x0d\x61\x90\x7f\x71\x92\x48\xe0\x1a\x95\x9e\x60\x2b\x96\xf2\x29\x90\x05\xf7\xdc\xde\x22\xc7\x84\x8b\xc9\x8b\x23\x06\x2c\x27\xef\x48\x3f\x6b\x87\x57\xf0\x91\x1b\x2f\x03\xc2\x66\xba\x9f\xae\x9e\xb9\xa1\x92\x1d\xcf\xdc\xcd\x35\xfa\x90\x71\xb5\x99\x8b\x07\x43\x92\x8b\x21\xb9\xe8\xb3\xda\x12\x42\x49\x02\x41\x0e\x1b\xd4\x99\x45\xd2\xb2\x9d\x65\xdf\x5f\xf8\x9f\xb6\x6d\x2a\x74\xa7\x2b\xe2\xa3\x40\x92\x80\x62\xa0\x9a\xf3\xf2\xd3\x49\xad\xd2\xaf\x78\x1f\x50\x95\x88\xe2\x6d\x3d\x54\xd7\x2a\xe2\xaa\xef\x3f\xc8\x2d\x60\x4a\x19\x89\x9d\x07\xb9\xc6\x0e\xa2\x2d\x6b\xec\xc2\x4d\x35\xfc\x32\x9a\xe6\xa1\xa9\xb9\xcd\x02\xb8\x36\x12\xa0\x96\xd3\xb6\x2c\xb3\x1f\x6e\x81\x19\x50\x01\x8c\xce\x3b\xf5\xc0\xdd\x47\xc4\xaa\xe5\x6c\x43\x11\x51\x7c\x98\xcb\x34\x56\xd9\x87\xe5\x9d\xda\x92\xeb\xd8\x8c\x87\x31\x6f\x4c\x63\x28\x6b\xe0\xa6\x98\xa9\xa6\xbb\x0d\xe9\x8d\xe5\xeb\x9e\x6d\xf1\xf6\xbd\x1c\x89\x69\xf1\x61\xe0\x85\x9b\x6e\x35\x2f\x46\xe2\x57\xd2\x6b\xac\x7d\xdd\x5b\x22\x78\x94\x39\x97\xd5\x1f\xb8\xfa\x06\x08\xf8\x7a\x20\xc6\x46\x9f\x78\xbe\x14\xb5\xe6\x80\xac\xab\xe7\x57\xf7\x1c\xe6\xb9\x76\xbc\xc8\x58\x10\x90\x9c\xbb\x0b\xcb\xdd\x03\x56\x64\xee\xc7\xf3\xea\x9b\x00\xb7\xb5\x4c\x65\x82\xb6\x11\x88\xda\xb6\x5e\xea\xaa\xc0\xbd\xbf\x35\x40\x5a\xa3\x29\xf5\x45\xcf\x60\xc4\x3a\x54\xbb\x8e\x80\xcf\xf7\x53\xcb\xab\x09\xbc\xcd\xe7\xdb\xb2\xbd\x68\x1d\x52\xd4\xa6\x4d\xb8\x46\xff\x3a\x5d\xd4\x07\xdf\xfa\x5c\xd2\x7d\xd4\x2c\xe9\x8d\x02\x37\x6b\xcf\x19\x49\x77\xc2\x28\xd7\x5c\xbc\xc8\xb1\x9f\xbb\x49\x65\x68\x72\x3e\x0f\x8e\x87\x0f\xcf\x10\xfd\x9f\x47\x9a\xd3\x74\xf1\x2a\xcc\xe8\xf5\xdd\x9b\xb6\xf3\x30\x83\x49\x50\x16\x5c\xa6\xab\xed\x6c\x80\x1c\x43\x04\x47\x83\x84\x06\x68\x86\x00\x93\x30\x83\x90\x94\x2e\xbe\x7e\xac\xae\xfb\x7c\x00\xb0\x93\xed\xc4\xa3\x3a\x60\x7d\xa5\x25\x15\xc9\x87\xd7\xd1\x2c\x34\x78\x0e\x47\x6e\x94\xb4\x86\x3b\x9f\x58\xd6\x06\x0d\x0e\xb6\x19\x86\x74\x9f\x7d\x29\x34\xe2\x6b\x87\x11\xd0\xa9\x5a\xb2\x9d\x55\xfa\x3d\x71\x4f\x4c\xe1\x8d\xd7\xcc\x96\xf9\x37\x23\xc4\xeb\x04\xd1\x76\xd5\xd3\x35\xb0\x38\x00\xf4\xb5\x95\xde\xbe\xf8\xc3\xa3\x83\x54\x1c\xd4\x7d\x72\x72\xe6\x47\xeb\x2f\xce\x2f\x73\xf1\x7a\x79\x37\x99\x8c\xf2\x3c\xdf\x38\xd2\x94\x73\xb2\x74\xb7\xc4\xcf\xcf\x49\x58\x05\xa7\xbd\x27\x9e\x3d\x19\x0e\x8a\xe8\xdc\xf2\x7d\x64\xa9\x8b\x08\xd4\xc9\xf4\xf2\x68\x1c\x10\x60\x1e\x3e\x54\x7a\xd5\xb7\x04\xb5\xec\x25\x92\x11\x40\x56\xc6\x57\x98\xed\x5c\x90\xc3\xe5\x70\x52\x47\x55\xff\xcd\xca\x0e\x1a\x4f\x92\xd9\x86\x7b\x5f\x7d\x80\x19\x42\xd2\x4b\xb3\xda\xb2\x8f\x43\x93\x95\x43\x20\x2d\xff\x16\xaf\x60\x6f\xd9\x39\x39\xd2\x34\x5c\x62\x63\x01\x4a\xed\x54\x2e\xff\xea\x2b\x6f\xe5\xfa\x91\xa6\xcb\x2c\x0b\xa1\xd4\x5b\xf9\x0b\xd2\xf4\x1b\xc4\xad\xe4\xc5\xb2\x5a\xeb\xd6\x41\x8a\xdd\xe8\xc7\x3a\xa4\x01\x38\xc1\x52\x05\x04\x9e\xb5\x43\x05\xe6\x87\xbc\xcb\x6f\x9b\x19\xc3\x39\x0f\x49\x66\x96\x34\xa3\x86\x13\x7b\xb4\x9a\xe6\x74\x03\x9c\xe5\xbb\xff\xc5\xbe\x41\xb2\x80\xbc\x75\x4b\xba\x46\x59\x30\x94\xa5\x6f\xd0\x21\xbf\xc2\xbe\xaa\x5e\x18\xa3\x21\x03\x71\xf2\xbd\xe1\x6d\x0a\xd9\x9b\xcc\x93\x23\x4e\x59\x9f\xbc\x35\xe6\xd3\x40\x79\x4b\x03\xa7\x4a\x98\xab\x17\x73\xfe\x24\x9d\xac\xe0\xed\x83\xaa\x29\x0c\x03\x4d\xa9\xa6\x0c\x1e\x30\xd9\x00\xd4\xfa\x04\x48\xa6\x70\x30\x9f\xe9\xb8\x87\x4a\xcd\xbd\x5e\xb1\x8b\x92\x61\x62\x7f\x70\x1d\x52\x4a\x5a\x21\x5d\xe2\x3a\xf1\x06\xb5\x77\x46\x7c\x96\x49\x2f\xe8\x08\x39\x7e\xa1\xe4\xed\x5c\x85\x19\x2c\xbf\x89\x06\xda\x96\xf1\x03\xe5\x9d\x5d\x65\xfc\x63\x83\x34\xe5\xed\xc2\xe1\xd4\x5e\xbf\x3b\x95\x9b\x30\x6b\x46\x68\xba\xe4\x92\xae\xfd\x27\x6a\x0c\xa7\x40\x31\xb8\xf3\xeb\xe8\x4c\xd5\x6f\xfc\x24\x96\x09\xbc\x99\x6f\x5e\x99\x87\xf4\x38\x5c\xbf\x2d\xb4\xf5\xd5\xf3\x72\xd8\x4a\x7f\xce\xde\x97\x13\x73\x5e\x51\xf6\xd3\x3b\x40\xb3\xd9\x9e\x9e\xd6\x9f\xb4\x51\x54\x4c\x59\xd3\xb5\x38\xe3\xc6\xab\x99\xfc\x41\xb9\xe3\x6c\xfb\xf2\x69\x8f\x37\xa7\x7b\xac\x7d\x4f\x1c\x13\xd2\xdc\xbf\x27\x86\x5a\x47\xcc\x31\xf6\xcb\xda\xee\x76\xad\x97\xc0\xd8\xfd\x99\xd7\x6e\xf9\xb5\xbf\x0c\xca\x6f\xa2\x7f\x6f\x41\xb5\x7c\x78\x34\xa7\x5f\xc4\xcb\xe1\xc4\xb9\xed\x82\x47\x1e\xdf\xbd\x1a\x5f\x6c\x01\x06\x62\x12\x30\x2b\x4c\x76\xec\xe2\x40\x42\xf7\x4b\x3c\xd0\x6b\x8e\x9a\x9f\x4b\x56\x51\x70\xd2\x03\xcf\xcb\x61\xb8\x9e\x45\xa3\xe8\xc9\xd2\x5f\xd1\xf9\xe8\xb5\x78\x3e\x1c\xb6\x98\x8a\x32\xe7\xa6\xcd\xa6\xdd\xfa\xca\x6c\x6c\xc6\x33\x3d\xec\x88\xf1\x8c\xdd\x21\x68\xfa\x86\x99\x11\xc2\x17\xef\x2f\xf6\xe8\x6c\x6f\x1d\x94\xd3\xd9\xea\xa2\x6c\x77\xe4\x6f\xe5\x73\xd7\x29\x8a\xcc\xb8\xd3\x52\xfa\x8e\x33\xce\x79\xa2\xd2\xf7\x15\xd1\x24\xb7\xa7\x6d\x9d\xec\x32\xed\x55\x87\xb8\xea\x5c\x12\xf4\x77\x8e\x51\x2c\x4a\xca\xba\xc0\x0c\x53\x84\xc4\x02\xec\xcd\x3c\x13\xa0\x37\x0d\x18\x02\x87\x03\x2f\x2d\xb2\xd6\xb9\x8a\xdb\x57\x26\x40\xa1\x82\x1f\x79\xd0\x1a\xbb\x0d\xd9\x0a\x09\xd8\xc7\xf9\xc3\xa7\x3d\x66\xaf\x59\x1c\xa9\xb0\x86\xa5\xfb\x7d\xba\x76\x74\xdf\xfc\xf5\x72\x36\x1b\x94\xac\x8a\x8d\xb3\x65\x77\x2e\xf5\x45\xfc\xd1\x79\xe0\x82\xae\x2d\x9b\x1a\xb8\x50\x1b\x16\x95\x90\x18\x36\x12\x5b\x4c\x9c\x8e\xae\x7a\xef\x62\x1e\xc7\x5f\x76\x07\x23\xd5\xf5\xf3\xa6\x54\xd0\x38\x99\x11\x99\xaa\x5e\xcc\x75\xa8\x08\xa8\x0f\x01\xd7\x69\xeb\x40\x7a\xf9\x02\x03\xc8\x42\xd9\xff\x8b\xea\x46\x89\x75\xa1\xce\xac\x14\x49\x65\xbc\xd2\x71\x6a\x0d\x06\xda\xca\xe2\x77\x5b\xf1\xd9\x90\x2d\x1a\x33\x42\xa0\xf0\xd5\xab\x34\x2e\x09\x44\x23\x55\x35\xd5\x4f\x28\x34\xe4\x77\xef\x55\x9c\xa5\x6e\x5b\x16\x4e\x92\x0d\xf2\x47\xc6\xe7\x92\xc6\x5b\x85\x16\xda\x33\x94\x58\xe5\x7c\x21\x90\x05\x88\x4a\xa6\xba\xb3\x1e\xf1\xb8\x11\x8b\xc4\xe7\x44\x81\x34\xa2\xe1\xe9\x64\x5f\x98\xaf\xe4\x20\x3c\xed\x26\xfb\x25\xfe\xc7\x46\x5f\x1e\xf2\xf7\x75\x69\xda\x5e\xf2\xb7\xaf\xa2\xab\x1a\xe0\x58\x7a\xf7\x42\xc0\x28\xd5\x8d\xd9\x27\x6c\x98\x5f\x8b\xfa\x2e\xa5\x42\x3c\x80\x50\xaa\x77\xb0\x17\xf8\x6c\xd8\xcd\x9e\x28\x07\xf6\x23\x13\xe3\x83\x45\x65\x4c\x9d\xf2\x46\xb0\x1e\x71\x69\x14\xba\xad\x4d\x5c\xfc\xd7\xbf\xc1\x3e\x1e\x70\xc2\xc3\xf1\x6c\x5b\xd1\x5c\x85\xe4\xaf\x88\xaf\x9e\x72\x63\x8b\x0c\x8d\xde\xa8\x2d\x2d\xf2\xe8\xaa\x67\x4f\x37\x3d\x04\xde\xa5\x7f\x24\xb4\xca\xdf\xb5\xbb\x16\x79\xb8\xc2\xf8\xd2\xee\x82\x73\x32\x90\x0b\xae\x98\x0e\xd5\x53\x69\x22\x9e\x7a\x10\xd9\x6d\xc1\x5a\x2d\x1c\xb2\x8b\xde\xb8\x14\xb2\xe6\xda\xcc\x53\x53\x4d\xa6\x1a\x5b\x9f\x05\x60\x58\x20\x6a\x3a\x28\xfb\x30\x6b\x74\x61\x9b\xd3\xc6\x23\x1e\xf6\xe9\x50\xa7\x4e\x6a\x89\x2b\xb9\x64\x3f\x60\xef\x3c\xdb\x93\x5c\x17\xeb\x59\x2d\x62\xe9\x84\x1e\x02\x70\x7b\x12\xb9\x5c\x07\x23\x2d\x38\x3c\x9a\xfd\xdc\x1c\x0d\xdb\x8c\xf5\x34\xce\x49\x8d\x06\xb1\xe3\xec\xd5\xb2\xe0\x23\x71\xb3\x09\x43\x37\xc8\x7c\x74\x1a\xde\x4a\xaa\x7a\x8a\xc4\xa8\x9b\xd1\x4b\x39\x1d\xf4\x27\x9f\x2e\x10\x25\xc1\xb6\x53\x36\x2d\x12\xb9\x59\x4d\xb7\xfc\xf6\x55\xca\x7c\x11\x5e\xde\x84\x27\xe7\x4e\x1e\x81\x9e\xd9\xfa\xdf\x93\xe9\x74\x62\x6c\x53\x4f\xdd\x8f\x88\xcf\xd9\xed\xf2\xf2\x53\x78\xa3\x90\xe0\x8f\xf0\x4a\x81\x10\xb5\xd5\x2a\x0e\x75\x40\xd7\x59\x0b\x8f\x28\x59\xd8\x1b\xa2\x1f\xc6\xbb\x03\x92\xb8\x5c\xf8\x1a\x84\x1d\xda\xe9\x06\x23\x15\x57\x25\xbd\x04\x56\x66\xbd\xab\xed\x08\xb6\xbb\xa8\xbe\x12\x3e\x19\xdd\x7a\x9b\xf7\xd2\xec\x2c\x90\x6e\x53\xbb\x17\xf0\x71\xff\x8c\x58\x56\xd2\x0f\xe8\x1d\x67\x3d\xc9\x79\xd1\x69\xed\x47\x31\x36\xe5\xfa\x81\x64\x49\x8f\xf6\x5c\xfe\x56\x78\xc4\xf3\x42\xad\x92\x6b\x25\xf0\xcf\x45\xc0\x8c\x68\xdb\x2e\x99\xd7\x44\xcf\x08\x4f\x7c\xcc\x6c\xb5\x41\x75\xdb\x52\x8e\xbb\xe9\xa2\x18\xd7\xe6\x46\x9d\x1e\xd0\xa9\xf8\xed\xaa\xd0\xdf\xbc\xfb\x18\x04\x6e\xc6\xfa\x1f\x70\x56\xbd\x7e\xa8\xb4\xa9\xe6\x9e\xd3\xb6\xf9\xc1\x9e\xc7\xd0\xa2\x13\x5b\x47\x79\x66\x12\x42\x33\xb6\x44\xb2\x43\x70\x29\xe9\xaf\xf9\xdb\xbf\x24\xa8\x99\x30\xda\x84\xd3\x21\x00\xd4\xb4\x78\x82\x7b\x4a\x31\xa6\x48\x9c\xc0\x29\x2c\x71\x1d\xd7\x57\x85\x99\x01\xb7\xab\xf2\x66\x0f\x22\x7b\xd2\x41\xc1\xba\x2e\x3f\x95\x69\x24\x0a\xeb\x66\x6d\xd4\xd0\x9a\x5a\x8e\xd1\xe9\xa7\x93\x15\x44\xa8\xc8\x79\xeb\x2c\x73\xe0\x9a\x54\xc9\x5d\x1c\x15\x2b\x70\xdd\x23\x35\x5b\x58\xfc\xe1\xc3\xee\xe2\x07\xd1\x3f\xe2\xe3\xc5\x07\xa8\x4d\x3b\x09\x5c\xf9\x5b\x42\x51\xbe\x19\x98\x25\xdf\x18\x21\xf8\x37\x0e\x74\x18\xe4\xbd\x75\x54\x2c\x1e\xb3\x18\x53\xe7\xb6\x4f\x5f\x18\x56\x11\xc6\x16\x03\xf0\xd5\xba\xde\x8c\x9c\xec\xa4\xed\x65\xd3\x93\x53\xa4\x18\xf9\xff\xbf\x80\x4c\x4b\x82\x68\xd8\x57\xb5\xee\x90\x0f\x43\x7d\x2f\xeb\xee\xea\xfa\x91\xf6\x47\xa0\x84\xa8\x09\x60\x8b\x2f\x1a\x57\xec\x4b\x64\xef\x40\xb4\xfc\x82\x14\x59\xec\xc5\x98\xd5\xeb\xcd\x30\xfb\xfd\x4b\x56\x43\x73\xf4\x7e\xca\xcb\xcc\xd1\x9c\x0e\x8d\x26\xdf\x11\x7d\x62\xbf\x24\xb6\x0b\x34\x40\x5b\xf3\x77\x93\x74\x72\xd7\xd8\x7e\xd8\x22\xc6\x8b\xa1\x0c\x71\xfb\xc7\x9c\x53\x99\x43\x3c\xa9\x9f\x79\x0d\x69\x6e\x4e\x9a\xa5\xb0\x28\xed\x2a\x18\xc2\xe6\x92\x8a\xda\x96\x76\x95\x79\x57\x63\xbb\x5f\xaf\xb7\xb7\xce\x2a\xae\x7a\x0f\xbb\x89\x6c\x5d\xa3\xd4\x7a\x8e\x7b\x6d\x0b\xb7\x4f\xf4\xdf\x16\x69\xb1\x69\x70\xbd\xd2\xdd\x9f\x57\xad\xd6\xa9\x75\x30\x7d\x2c\x53\x66\xd2\x83\xba\x56\xb2\x9b\x3e\x1e\xde\xc1\xc6\xbd\x99\x02\x7e\x13\x03\x85\xc4\x86\x14\x3a\x4d\xc0\x92\xc5\xc2\xc0\x7b\x71\xe9\x18\xac\xa3\x59\xc2\x49\x08\x3b\x4a\xca\x1a\xba\x25\xba\x8f\x52\xde\xab\x35\x33\xa7\x08\x38\x6e\xa2\xcc\xc8\xdf\x8b\x11\xcb\xd9\x0c\xc7\x21\x11\x86\x15\x9b\x01\x2e\x89\x99\x74\xc4\xd2\xb7\x0e\xc3\xd6\x3b\x57\xb7\x96\xb6\x9a\xb1\x81\x07\xd3\xef\xf5\xa1\xee\x3b\xcc\x76\x09\x77\x33\x04\xb0\x47\xd6\x02\x0e\xd8\x14\x2a\x22\x4d\x5a\x9d\xa1\x34\x5d\xee\xf0\xfc\xb0\x8e\x18\xc5\x23\x67\xd4\x17\xec\x42\xb2\xa4\xb5\x9c\xba\x66\x08\x88\xa2\x61\xda\x75\x08\x8c\x2c\x81\x1b\xc9\x5e\x04\x7b\x32\xd5\xae\xdc\xed\x49\x1c\x32\xbf\xf0\x2b\x80\xee\xa6\x39\x4f\x73\xa5\x4f\x8f\x1b\xed\x0c\x8c\x75\xd5\x7e\x07\x9a\x85\x2f\xb1\x34\xc9\x45\x7c\x3f\x50\xe1\x36\xf4\xfc\x81\x02\x6c\xdf\x72\x03\xc7\x5e\xd4\x5b\x32\x32\xa8\xad\xa0\x0c\x57\x75\x2b\x2f\x3f\x60\x05\x52\xcb\xec\x34\x62\x84\xd8\x97\xca\x9b\xf8\x66\xff\x02\x65\x64\x9a\xee\x26\xba\x15\xd4\xc7\xfa\x68\xd1\x82\x7d\x7d\xf0\xae\x58\x33\x81\x7d\x66\x22\x8e\x21\x00\xf1\x07\x0c\xb9\x1c\x70\x27\x74\x6e\xb3\x73\xb7\x7d\x34\xdd\x04\xe9\x41\x3d\x40\x51\x2e\xa8\x8d\x32\xbb\x3a\xda\x73\x1e\x46\x8f\x13\xe3\x24\xa1\x48\x05\xb0\x81\x23\x0c\xeb\x3f\x44\x09\x6a\x6e\xa8\x24\xc9\xcb\x08\xaa\x73\x97\xb7\x8d\xcf\x05\x92\x8d\x45\x3a\xbb\x68\x06\xd2\x15\x95\x42\x25\x01\x04\xaa\x11\xd4\xa7\xff\xf9\xd9\x2c\xf6\x48\x62\xdc\x5e\x9f\x1a\x13\xb2\xa2\xb0\x2f\x6d\x3c\x89\x0b\x56\xdc\x8e\xf1\x76\xe3\xb1\xe8\xda\x2b\xa6\x34\x75\x92\xa4\x7f\xaa\xb0\x3e\x86\x0b\x97\x13\xf7\xd7\x1f\x2c\x23\xaf\x87\x8a\xa4\xab\x4d\xf2\x6f\x26\x71\x9d\x2a\xf1\x6d\x61\x6d\x56\x03\xf4\x6f\xa3\x39\x54\xe3\xc6\x36\x48\xf0\x79\xf5\xd3\x47\x6a\xb3\x08\x4a\xfb\x08\xf6\x5e\x68\x17\x74\x6e\x1d\x60\xff\xfc\xe0\x1d\x61\xbc\x7b\x46\x51\xfa\xe1\xf6\x1d\x6b\x95\xd2\xbf\xc6\x88\x23\x06\x57\xdc\xb8\x10\x52\xf2\x2c\xd6\xc3\x57\xd5\x7f\x18\xf0\xd3\x4f\xf6\x4f\x69\x33\xe9\x24\x62\x3c\xeb\xdb\xf5\x02\x87\x33\x1c\xc0\xc0\x9d\x1c\xc3\x9f\xde\x93\x82\xbe\x37\x5a\x45\x12\x67\xa9\x81\x58\xf7\xd5\x10\xd0\x0d\xf9\x4b\x69\x59\x7b\x34\x74\x7d\x0f\x70\x1f\xff\x3a\x9e\x68\xd2\x07\x10\x3c\x8f\xe8\x39\x30\x46\x4f\x46\x69\x7c\xab\x50\xad\x7e\xf5\x06\x87\xde\xf3\xbc\xa7\xcc\x6c\xc3\x18\x87\x70\x83\x67\x63\x30\xa0\x26\xc5\x12\x55\xe1\x83\xc4\x54\x9d\xc7\x0c\x48\x68\x03\x65\x2c\x8b\x94\xde\xa4\x86\x17\x46\x25\x68\xa3\x05\xa3\xe8\x45\x76\x3d\xa4\xd4\x8f\x04\x0c\x18\xb4\xad\xc9\x05\xb6\x92\x45\xa8\xf7\x67\x2d\x75\x7c\xbb\xfe\xcb\xd9\xd7\xdf\x1f\xf3\x47\xfb\xdf\x9b\x7f\xf2\xc1\xe1\x6e\xfc\x0d\xa0\x72\x20\x1e\x3a\x80\x89\xd6\x1e\xd1\x3b\x19\x7e\x86\x8f\xd0\xe2\x33\xc5\xa4\xea\x2d\x33\xf0\x2c\x02\xc1\xa2\x41\xf8\xdf\x7f\x22\x60\xe5\x03\xa8\x4f\xc5\x1a\x12\x12\x59\xdc\x7f\x6e\xe9\x3e\x6a\xbe\x09\x1d\x60\xd9\xe2\x2f\x55\x30\x55\x29\xd4\x4e\x30\x7f\xe8\x1d\x3a\x2e\x51\x3d\x82\x4e\x74\x5a\x85\x27\x4f\xeb\x87\x1a\x67\x97\x97\xb3\x69\x01\x6a\xa3\xc2\x46\x84\x17\x77\x25\xb9\x13\xa4\xbc\x59\x25\xea\x3f\x7c\x45\xff\x9e\xbe\x80\x36\x53\xd3\x03\xac\x44\xdb\x57\xa8\xa8\xb1\xb8\xfd\xd6\x1f\xd1\x2a\x2d\x7d\xd7\x5f\xbb\x58\x7d\x81\x43\xdb\x53\x40\x1d\x9c\x49\x57\x7b\xc1\x14\xb5\x4c\x2f\x4b\x3a\xe8\x52\xd8\x35\x12\x1b\x60\x42\x1c\x6a\xfb\xfe\x38\x62\x80\xa9\xfb\x8d\x4d\xd2\x63\x9a\xcf\x91\xda\x22\xba\x8c\x64\xc7\x71\x3b\x1c\x5f\xb6\xc8\x6a\x72\x80\xca\xcb\x0b\x55\x46\x25\xe6\xac\x8f\x6e\x27\xf3\x4a\xd7\x2a\x2f\xd6\xe3\x33\x91\xd2\x27\x2d\x6a\x73\x5f\xcf\xde\xff\xd0\xe5\x14\xe2\xcd\xb5\x3b\x3d\xba\xd9\xb2\xf9\x31\x0a\x03\x4a\xde\xfa\xcd\x59\x8c\xea\x28\x5f\xea\xe0\x59\xfe\xbe\x70\x77\xd8\xad\x0f\x78\x25\xda\x6e\x78\x44\x71\x6f\x18\xc1\x9d\x84\xfd\xd2\xdb\xd5\xdb\xdc\x5f\x5d\x29\x42\x10\xd3\x29\xe5\x39\x3b\xb7\xe3\xcb\x2f\x49\x47\x27\x99\xe7\x3d\x2c\x5e\xc0\xb1\xd5\x24\x21\x5c\x8e\xdf\x92\xcf\xac\x97\xdc\xf9\xa5\x2d\xa1\xf3\x4b\x3d\x52\xac\xf7\x3f\xa3\xed\x66\x14\x78\xe8\x68\xbe\x91\x63\x33\xbc\x6a\x8c\x9f\x90\xc1\xec\x97\x38\x62\x5a\x13\xbd\x4b\xaf\x07\x51\x31\xc6\x47\x5a\xe8\x45\x8b\x8c\xde\xce\xc3\xcb\x29\xde\x03\x15\x5e\x80\xe6\x2a\xbd\x8b\x56\xf1\x3e\xb4\x0c\x9a\x1e\x9b\x61\x23\x0b\xd3\x87\x1b\xe0\xb1\x6e\xfb\x06\x30\x91\x29\x20\x1c\x30\xa6\x0f\xba\x24\x50\xa0\x3f\xa4\xca\x94\xe4\xb5\xeb\x02\xfc\x81\x61\x28\x8a\x28\xa8\x75\xd3\xe2\x43\x3c\xb6\x87\xc4\xb1\xf9\xe7\x94\x0d\x5a\xf4\x52\x5e\xcc\x6c\x48\x68\x31\x29\xe7\x7b\xb2\x7b\xb3\x23\x85\x09\xc5\x80\x35\x01\xb5\xb0\x2b\x5b\xdb\x87\x6b\x9e\x61\x90\xf2\x0f\xd0\x14\x7b\x9d\x51\xe3\xc3\x04\xda\xb6\x3e\xae\x4d\xe0\xa8\xe7\x7b\x74\xa1\x96\x47\xab\x2e\x2a\xe9\xd6\x8b\x14\xa2\x55\x18\xa6\x70\xd6\x90\x07\xd9\x94\xde\xc7\xd7\x40\x34\xab\xcb\x55\x10\xe0\x04\xac\x04\xb7\xf9\x90\xb5\x65\x1d\x5a\xc7\xbc\xb1\x4f\x07\xd0\x24\x31\xe9\x16\x66\x61\x08\x8b\xb6\x02\x9f\x79\xca\xb9\x44\x8d\xdb\xee\xcd\x31\x9d\xe1\x61\x33\xd9\xf1\xe6\xce\xe0\x18\x92\xb8\xf9\x48\xe9\x9c\x37\x57\xbe\xc7\x2d\x2d\xf3\x70\x7f\xf1\xcd\x91\xd7\x72\xcb\xc9\x5c\xdc\x0f\xf3\x96\x32\xe7\x25\xa5\x4e\xc7\x4f\xca\x9f\xea\xe6\xce\xbd\xb9\x95\x90\xbc\xd2\x7f\xf1\x8d\x73\x7f\x56\x49\xf9\x9c\x4d\x2a\xe3\xd6\x6c\xa9\x03\xba\xc6\x91\x83\x94\x55\x3e\x0c\x51\x41\x1e\x26\x67\xd3\x2d\x2f\x2f\x33\xbe\x22\xfe\xe8\xe9\x92\x1a\xca\xfb\x50\xc7\x96\x42\xb0\x3a\x58\x48\x9e\x34\x96\x55\x22\x8e\x4a\xc3\x14\x87\x1b\xd1\xad\x2c\xe4\xb5\x24\x38\xef\xcc\x94\xb9\x1b\x16\xa1\xb5\xa6\x22\x54\xd9\xb9\x68\x73\xa5\x25\xf5\x92\x5f\xf6\x9a\x2a\xb2\x9b\x21\x8f\x56\xb0\xf2\xcf\x43\xbf\x09\x80\xe1\x2e\x0c\x74\x53\x2a\xfc\x9e\x68\x89\x0c\xd0\xd6\x00\xcd\x2d\xac\xbe\x00\xf3\xea\x04\x98\x60\xd0\x3a\xec\x8e\xfc\x85\xcd\xfa\xc5\x3e\x58\x42\x3d\x37\x2d\x5e\xdd\x62\x8a\x94\x29\xc2\xe1\xfe\x46\x0e\x4a\xce\xdd\x89\x89\xfe\x4a\x03\x1c\x27\xb3\x38\x49\x80\x13\xd3\x88\x29\xde\x2e\x8e\xad\x69\xdd\x4a\xb0\x15\x5e\x2f\x66\x25\x9b\x25\xd4\x06\xec\xde\x8c\xb6\x0c\xf3\xde\x01\xf4\xd6\x8b\x3a\x7a\x88\x47\xf7\x86\x67\x27\x5e\xb4\x0b\xeb\xfd\x77\x54\xa3\x2d\xbd\xa5\xda\x12\xd7\xe3\x0c\xb5\xa6\xd6\x6c\x22\xff\x68\xbe\x46\xab\x0a\x36\xd0\xfc\xfb\xb6\x85\x81\x75\x83\xf5\xf3\x23\x2a\x27\xc3\x1b\xaf\x12\xba\xd7\xc7\x03\xd0\x78\xab\x85\x8f\x9e\x28\x34\x85\xba\x0d\x3b\xb6\x4e\xb2\x19\xf8\xdf\x6b\x95\x6d\x6e\xba\xb1\xd8\x7a\x42\x7a\x45\x9c\x73\x50\x6b\xc1\x10\xd0\xa4\x4f\x20\x97\x80\xa7\x6c\x51\x2c\xff\x36\x5c\x32\x71\x1b\x99\x7c\xea\x18\xc4\x45\x4a\x9f\xd4\xad\x0e\x8c\x62\xb4\x8e\x65\xb3\x10\xd6\x98\x58\x08\x7b\x44\xdf\x55\x5f\x5e\x49\xe2\xab\xb7\xb2\xa1\x62\x66\xae\x97\xd3\xfc\x48\x39\xbd\xe7\x75\x89\x97\x32\xb4\xa9\x78\xb0\xd8\xf0\xad\x73\x1f\xb8\xdf\x9c\x33\x74\xdb\xb8\xbe\x2b\xf8\xfb\x4f\x5c\x0d\xfd\x33\x12\xe9\xe5\x5a\x7b\x8d\x68\x07\x55\x6a\xc4\x3c\xa4\xba\xf3\xae\x63\x78\xed\x15\x6d\x11\x7a\x0e\x3e\x42\xe5\xbf\x3d\xb7\x23\xea\xce\xa2\x44\xe2\x37\x7e\x5d\xea\x52\xf7\x77\x35\x17\x2b\x7a\x98\x99\x0f\xd1\xb0\xfd\x26\xe6\x1b\xfe\x18\x14\x48\x77\xd0\xa8\xc2\xaf\xd3\xf3\x7d\xcb\x5d\x2f\xb1\xb7\x38\xe1\x18\xfb\x5b\xab\x7b\x23\x0a\x68\x23\x5a\xe3\x08\xa5\xd1\x70\x36\x31\xc6\x3f\xab\x9d\x6c\xdd\x08\xb7\xb4\x88\xe7\x19\x0b\x77\x56\xe9\x3b\xe8\x17\x0a\xb2\x32\x7b\x92\x12\x1f\xe9\x4b\x72\x0a\xb6\x1a\x49\x12\xab\xfe\xd1\x88\x4c\x1b\x6d\x40\xc8\x85\xf9\x69\xeb\x49\x66\x43\x80\xfa\x34\x01\x62\x30\xb3\x86\x82\xed\x8e\x89\x9b\xd4\xb9\x72\x66\xbc\x03\x4d\x01\xa3\xe8\x40\x05\x09\xb4\x03\xe8\x5a\x1e\x1f\x36\x0c\x86\x90\x84\xd5\x2f\x16\xd4\x26\xae\x76\xe9\x8d\x49\x1e\xb4\x08\x2a\x32\x97\xa4\xf2\xdb\x86\xe0\xd9\xa3\xd4\xe6\x92\x27\x00\xa8\xc6\xd5\x0d\x6b\xcf\x93\x07\x97\x58\xc5\x4e\xa1\x5e\x26\xfa\x31\x86\xeb\x54\x83\xdc\xdd\xac\x5c\x54\x72\xeb\x76\x37\xdc\xbc\xe4\x1c\x4c\x96\x6b\xab\x31\x00\x4f\x65\x8b\xf9\x88\x8c\x24\x46\xde\x90\x25\xb5\x48\x17\xe3\xd1\x98\x86\x32\x87\xf8\xb5\x43\x43\x25\xa2\x7a\xfc\x80\xbd\x15\x0d\xed\x49\xa5\x0c\x77\x79\xb4\xc0\x47\x88\x16\x4a\xba\xca\xa1\x16\x2d\x81\x7a\x23\x2d\x52\xcc\x37\xb9\xef\xa0\x07\xe3\x9f\x65\x6d\x13\xdd\xd5\x4a\x78\x0b\x27\x5e\x1d\x8b\x6d\xa5\xbe\xfe\xa6\x05\xab\x3c\x69\xdf\xdd\xbf\xfa\x5a\xf1\x16\x08\x67\x36\xd9\x6e\x11\x94\x6e\x06\xb2\x56\x41\x8e\x96\x47\xff\x51\x2c\x6d\xc1\xbc\xc1\xd2\x19\xa9\x52\x12\xac\x17\xa4\x68\x1c\x28\xc9\xc9\xe1\x5b\x6a\xd2\x59\xa8\x8d\xa3\x44\xaa\xcb\x8e\x82\x7f\x4c\xd8\xb3\xb5\x08\x35\x2e\x12\xe0\xe8\x35\x64\x5b\x0b\x83\xae\xd7\xf1\x97\x6a\xa3\xbd\x55\x07\x83\x86\x03\x51\x88\x33\x9c\x84\x01\xc2\x25\x82\xad\xe6\xdb\xea\xf3\xaf\x71\x5a\x27\x82\x11\x7f\xd7\x1b\x26\xe3\xe4\x5e\x4a\x73\x45\x82\x4d\x11\xc1\xcf\x5a\x9c\xa9\xad\xcf\x56\x9c\x63\xa4\x09\x78\x95\x4c\xc9\x9a\x77\x79\x18\xb7\x94\x8e\x00\x74\x4b\x73\xb1\xde\x05\x74\xac\x74\x2f\x62\x51\xfe\x02\x91\x8e\xda\x81\x53\x60\x99\xed\x1e\x91\xe7\xdd\xef\xf6\x8c\xb6\x38\x87\x8d\xe8\x92\xe6\x23\xda\x5b\x61\xaa\x55\x88\x9e\xb9\xff\xa4\x91\x34\x77\x87\x0d\xf5\x9f\xfe\x59\xee\xb3\x26\xdb\xbd\x61\x6d\xd1\x89\x28\x1f\xeb\xce\x24\xc9\xe8\x6f\x0d\x5b\x8c\x1d\x56\x87\x16\x9c\xaf\x9a\x5e\x43\x0a\x19\xce\xd7\x57\xc0\x28\x2e\xc8\x4e\x73\xc5\x54\x03\xd7\xd7\xb1\xba\xa9\xdf\x8f\x61\x8b\x7c\x41\x54\x25\x24\x5a\x7b\x23\xab\x23\x99\xea\x58\xc9\x4e\x11\x51\x4c\x4c\xd0\xdc\x0a\x42\x7d\x83\x68\xf8\xca\xdc\x22\x1a\x99\xe0\xb1\xa8\x61\xcf\x01\xf6\xa1\xc7\x70\xbd\xca\xe3\x2d\x3d\xec\x85\xce\xc2\xeb\xb1\x31\x88\x50\xce\xbe\xdd\xa0\x51\xe7\x06\x43\x22\xba\xc8\xf5\xb8\x48\x46\x8b\x5a\xa9\x3f\x1d\x3b\xf6\x09\x97\x9a\xf9\xe1\xab\x69\x5e\x08\x02\x33\x78\x3c\xbe\xa1\x2c\x35\xfc\xdc\xa1\xa1\x8c\x19\xfc\xed\x4a\x2b\xd9\xe6\xd3\x75\x4b\x0a\x88\xc8\x2c\xc4\x79\x1a\xc6\xdf\x89\x15\x75\xb0\x23\x19\xda\xfb\x0a\x8a\xf4\x19\x79\xd0\xe4\xde\xd0\xc3\xa9\xcf\xf9\x04\xf8\x5f\xc9\x36\xb6\x55\x42\x21\x65\x75\xd1\x01\xe4\x9f\x4e\xd9\x94\x94\x49\x7d\x84\x2b\xa0\x86\x5e\xea\xa9\x31\xf8\x8f\x41\x0c\x48\x5d\xca\x1f\xa4\x08\xac\x90\x5d\x05\xce\x5b\xe7\xa5\x08\x25\xc9\xf3\x85\xd6\x65\xfb\x6c\x92\xb4\xb8\xad\x7d\x54\x81\x5c\x60\xb4\x0b\x26\x8e\x78\x9d\x67\x8a\xaf\x6c\x41\xc6\xd3\x48\x1d\x65\xb1\x1a\xf1\x30\x61\x16\xc5\x46\x75\xfd\x58\x3c\x01\x94\x63\x8c\xdc\xa9\xaa\xa9\x12\xaa\x5a\x5a\xa2\xee\x3c\x71\x71\x37\x30\xc1\xb9\xad\x83\x43\x45\x67\x72\x77\xd2\x14\xa2\x53\x02\xf8\x16\xa3\x0d\xc0\x8f\x74\x86\x66\x39\x9c\x20\xb3\x35\xd6\xb2\xfb\x06\xa7\x77\xa3\x80\xbc\x34\xb6\x85\xbd\x59\xe3\x4e\x19\x76\x70\xbb\xcd\x2d\x51\x0e\x35\x47\xbc\x34\x8e\xa5\x5b\x01\x76\xbe\x1a\x93\x38\xba\xef\xb3\x74\x09\x60\xdc\xae\x54\xe0\x3f\x50\xde\xc7\x13\x55\x6e\xb9\x94\xc5\x53\x8f\x1c\xd6\x6f\x80\x85\x0b\x28\x4f\xc9\x4d\x80\x75\xe1\x55\xea\x10\xa7\xcb\x00\xad\x1a\x10\x1a\xe2\x69\x05\x56\x29\x84\xee\xdc\x6c\xd1\x63\x6b\xf4\x3c\x9f\xc7\xb7\xf2\x48\x00\xc1\x8f\xeb\x11\x6d\x34\x08\xd9\xd7\xeb\x3e\xf8\x6c\x8a\x0f\x0e\x3a\x90\x66\x2f\x22\x46\x75\xe7\x91\x06\xa1\xbf\xa5\x0f\xcc\x0e\xa4\x37\x00\xed\xed\x60\xfd\xeb\x14\x92\xf0\x5d\x0f\x35\x2f\xba\x30\xb6\xe7\x4c\xdd\x93\xb9\x8a\x39\x4b\x46\x0b\xbc\xe7\xa5\x99\xa5\xf7\xc8\xbe\x5f\x35\xc3\xf3\x3b\x88\x16\x3f\xf6\xdd\xee\xd8\xbd\x8c\x19\xec\xe1\xc1\x5d\x6f\xc9\xc9\x6f\x68\x14\x2a\x4f\x47\x7c\x7c\x8b\x7f\xf6\x8f\x06\x34\xe3\xed\x7a\x5d\xb8\xff\x14\x24\xc4\xd2\x2a\x28\x4a\x18\xf5\x75\xef\x1d\x1b\x30\x0c\x8b\xaa\x7f\xc7\xd5\xec\x46\x68\xd4\x84\x42\xe9\xdf\x9c\xa2\x9f\x1b\xd2\xdb\x6e\x23\xb1\xed\xb9\x76\x8b\xf4\x0b\x96\xb0\x65\x8f\x53\x9f\x30\xbf\x8d\x1b\x58\xdc\xd6\x5d\xa6\xb5\x79\x43\x8b\xde\xb2\x7b\xb0\xfb\x8a\xdf\x28\xc2\xc4\x00\x6f\x45\x11\x7a\x4f\x76\xa8\xbc\xde\x16\x1b\x31\xb9\xb1\x75\x8e\x76\x5c\x2a\x9f\x8e\x50\x49\x06\xcb\x64\x2a\x58\x09\x4b\x0f\xdc\x05\x10\x8f\xa6\x06\x6e\x92\x40\x48\xd0\x19\xd0\x4a\xa8\x57\x51\x06\x72\xf9\xf0\xe7\xdf\x8e\x8f\xbb\xfd\x1f\xad\xe4\x60\x90\xd7\x9d\x85\x1a\x14\x6e\xae\xa3\xa2\x4b\x44\x91\xf8\xfd\xd7\x15\x90\x9b\x6e\x2a\x2f\x8d\x24\x0b\x13\xd5\xed\x46\xd5\x19\x31\x7e\x8b\x60\xcc\x32\x45\x31\x70\x00\x0c\x53\x51\xbb\xe3\xca\x65\xd2\x4d\xa7\xca\x65\xca\x61\x23\xfa\xfb\x37\xeb\xb8\x14\xac\xcc\x43\x0f\x64\x13\x8f\xd3\xf2\x73\x4d\x1f\xd1\x70\x33\x68\x21\x41\xb8\x59\x46\x1f\x3b\x74\x9a\x24\xa8\xb1\x3e\xf8\x18\xd3\x2e\x0c\x21\x99\xff\x6c\xae\xb3\xf9\xce\x9e\x48\x2e\x67\xf6\x21\xcb\x8e\x0f\xb1\xc3\x7c\x12\x3c\x53\xa7\xb5\xab\x69\xff\x38\x8e\xda\x2b\x75\xfb\x14\xc2\x28\x97\x89\x99\x58\xeb\xf0\xf0\xc3\xbe\xff\x95\x62\xf1\xf1\x56\xe1\xeb\x94\x9c\x54\x66\xd5\x80\x7d\x48\x10\xa0\xbc\xb8\xa2\xb5\xc9\x60\xcf\xc6\xcb\x72\x3d\xfa\x2c\xee\x30\x27\xb5\x9f\x98\x32\x2c\xfa\x17\x2b\x4f\x21\x5c\xcc\x88\x73\x0a\x78\xa9\xa6\x47\x3d\xf5\x70\x1b\x74\xd2\xe7\xb5\x93\x3e\xb3\x9f\xe1\x69\x1a\x06\xba\x83\x58\x0e\x0e\x35\x39\x29\x47\x99\xc6\xb0\xca\xa0\x72\xaa\x21\xfc\xdd\xbc\xcc\x9c\xe2\x44\x5e\x04\xbb\x2e\x08\x12\x45\xe7\x77\x49\x8a\xca\xd3\x96\x3d\xff\x0a\x98\xdc\xef\x57\xba\x4f\x5e\x87\xbe\x6c\xcf\x43\x09\x33\xed\x77\xfd\x5a\x43\x4f\x2f\x31\x69\x9c\x46\xc7\xda\xf1\x30\x38\xdb\x1a\x65\x77\xc1\x90\x5a\xdc\x6e\x6a\x05\x06\x87\x12\x39\xb8\x9b\xaa\x45\xb0\xe2\x8c\xb9\xdf\x3e\x55\x37\x51\xc8\x9d\x1c\x34\xf5\xb2\x27\x66\xc3\xe9\xcb\x78\x99\x00\x58\x24\x4d\x4d\x6e\xed\x58\xaa\x79\x75\x46\x34\x1d\x4a\xd4\x56\xe9\xce\x6a\xda\x61\x58\x5b\xd3\x85\x87\x2f\x60\xd2\xda\x44\x35\x0a\xf7\x91\x47\x5b\x74\xff\x3c\x1b\xae\x86\x3b\x8d\xb1\x34\xc6\xdd\xac\xbc\xc9\x5a\xdd\x4f\xc1\xdb\xf7\xe6\xbf\xb2\x6a\x05\x64\x2b\x8f\xed\x62\xf3\x7e\x2c\xe5\x3e\x5e\xfa\xa0\x08\x33\x11\xfa\x61\x45\x17\xcc\x60\x86\x06\x18\x49\x4a\xaa\xdc\xd3\x4e\x71\x59\xf8\x42\x96\x24\xb7\x82\xb6\xa6\xd0\x9f\x85\x1a\x78\x8b\xb5\xf3\x3a\x05\x79\x6b\x55\xca\xc7\xcd\xa2\xd0\x8c\xac\x43\xc3\x83\x08\x7b\xc5\xee\xea\xee\xf4\x77\xe7\xe2\x0f\x6e\xf8\x75\x57\x5e\xf4\x5d\x5f\xee\x20\x9c\xdb\x28\x63\x7b\x77\xd9\xd6\x35\xc0\x71\xb6\x56\xae\x5d\xaf\x86\x72\xdb\xc7\xd8\xeb\x21\xe5\x55\x48\x4b\x74\xed\xc0\x69\x00\xf2\xc7\x42\xca\xf0\x47\x5c\xa9\xa8\x1d\xe4\x59\x27\x99\x60\x74\x69\x45\xa7\xfe\x61\x7b\xbe\x22\x69\x3d\x12\x96\xfb\xd3\xb2\x17\x2f\x56\xc8\xa4\x83\x7c\xd5\xd9\x1d\x01\x76\x52\xbf\xeb\xe2\x8c\xc1\x14\x91\x93\xbb\x14\x1c\xcb\xda\xab\x81\x7f\x52\xc1\xf1\xcc\xcc\xb5\x4c\x85\x0e\x09\x95\x5d\x89\xf0\x56\xed\x54\xd2\x49\xeb\x9e\x2d\x91\x73\xe4\xac\xfa\xe2\x2f\xab\xc7\x15\xe8\xa8\xf2\x1c\x1d\x3b\xaf\x9e\x62\xd8\x22\x24\xf1\xc1\x61\xe1\x92\xf4\xcd\xbe\xf5\xcb\x2c\x51\x8f\x30\x9e\x39\x53\x6f\xa6\xb5\x80\x14\xd2\xc1\x93\xa4\x13\x14\x65\xbf\x33\x2f\xfd\xbb\x7a\x59\xe8\xaf\xc0\xce\xf4\x51\x2f\xb4\x17\x76\xd1\xc8\x70\x90\xb9\x61\xc0\xcb\xe0\x40\x91\xe9\x6f\x95\x84\x4d\x65\xbe\x76\x4a\x82\x56\xf1\x56\x03\x83\x9a\xaa\x3f\xf8\xdb\xb2\x61\x6b\x58\x02\xd3\x3f\x68\x10\x83\x21\x96\x5b\x0f\x04\xbf\xf5\xc4\x4d\xaa\x3b\x2e\xe1\x84\x33\x15\x75\x92\xdc\x57\xd7\x4d\xf4\x4e\xdc\x44\xb6\xd6\xfb\x56\x51\xf1\x88\xf5\x21\xdf\x3a\x6a\x74\xcb\x87\xe3\x20\xa6\x13\x8d\x69\x9f\x05\xb7\xf3\xfe\x6a\x50\x32\xdd\xe9\x62\x47\xc6\x56\x12\xb6\xf7\x7d\xb7\x45\xf6\x1a\x07\xe3\xed\x77\xa5\x97\x24\xe8\x3f\xa6\xec\x56\x93\x3e\x86\x0c\xfe\x72\xb6\xba\x7a\x68\x37\xf6\xc1\x5c\xe2\x0e\x23\xd0\x29\x7d\xcd\xfc\xdc\xdb\x39\x4d\xa5\x06\x0a\xde\x48\x56\x0c\x31\x35\x79\xbe\x1a\x0e\x0a\x86\xaa\xcf\x7e\xf5\x67\x5c\x78\xc0\xcd\xa9\xdc\x05\x02\x64\x97\x9d\x5e\xa2\x4d\xf9\xd7\x10\x6b\x61\xfd\x99\x4b\x2d\x06\x20\x91\xcd\xbe\x18\x59\xbf\x57\xee\x6e\xc0\x4c\x95\xb7\x26\x15\x81\x96\xfa\xc1\x3c\x74\xfc\x28\x6e\xb0\x02\xe9\x18\xb0\x86\xd0\xa4\xe4\x15\x9f\x3e\x5e\xe8\x68\x29\x06\x6d\x5c\xf3\xe8\x81\x92\x91\xdc\x2a\xdd\x17\xee\xc6\x4e\x2f\xd1\x4a\x2d\x3c\xfc\xa9\xe4\x6f\xc7\x9d\x46\x92\xa0\x68\xd1\x1f\x81\x67\xe6\x69\x6d\x93\x4b\x0e\xf7\x14\x4e\xe3\x08\xa8\x07\x99\x06\xb9\x51\x29\x54\x98\xea\x32\x24\x3f\xc5\x73\x08\xa2\xbc\xc5\xa7\xb7\x5b\xaf\x4a\x6f\xf9\xf0\xb7\xe3\x2d\x90\xdc\x28\x14\x6f\x37\x85\x96\x06\x59\x95\x52\x4c\x63\xa6\x87\x1b\x1c\xa6\x26\x34\x51\x95\x17\x26\x14\x81\x1c\x4e\xe4\x15\xcb\x23\x1d\x32\x07\x10\x3e\x1b\x86\x73\xc2\x92\x02\xb9\xfd\x84\x23\x1d\xba\x07\x90\xf7\xab\xe1\x70\x0f\xb9\x1e\xc5\x35\xbb\xc4\x59\xaa\xbb\x81\x57\xa7\x22\xce\xe8\x19\x4a\x35\xab\x04\xb8\xb1\x88\x4e\xc0\xb0\x0c\x27\x17\xdb\xfb\x9e\x86\xa2\x43\xac\x5d\xcb\x7f\x03\xd6\x0f\x96\xf3\x13\xa2\x81\x23\x42\x60\x09\x30\x99\x2e\x8b\xbb\xc6\x87\x03\xf8\xae\xda\x1b\x37\x5d\x4b\xde\x85\x1b\x21\x96\x5c\x89\x9b\xc4\x1a\x76\x9a\x5d\x18\x57\x13\x96\x29\x8e\xdc\x1f\x6c\xd6\x58\x08\x44\x0e\x72\xa1\x36\x45\x82\xf9\x57\x5a\xa9\xca\xc5\xda\x5e\x87\xff\x38\x7c\xbf\x99\x24\xcc\x5f\x54\x8b\xc3\x14\x20\x24\xbb\xc9\xd9\xf6\xb6\x0a\x81\xa7\xcd\x0a\xed\x06\xea\x61\xe3\x18\x78\xb1\x7a\x59\x63\xd9\x58\xa4\x34\x73\xef\xea\x2a\x8c\x99\xaf\xb1\x17\xfa\xe3\xb6\xbb\x9e\xf5\x70\x13\x46\x1a\xd8\x5d\x78\x77\x69\x90\xc0\xae\x19\x85\xee\xa0\x80\xa8\x85\x87\x5b\x0d\xae\x41\xeb\xfa\x2a\x6b\xc7\xba\xdb\x7a\xdc\x9d\xd1\x15\xdd\x4f\xb8\x12\xfa\xb9\xda\xd8\x9c\xb4\x92\x1c\xf1\x96\x0d\x9c\x94\xe5\xb7\xe2\x27\xf9\x7b\x16\xdf\x23\xdf\x8f\x1b\xce\xa9\xf2\xe3\xc4\x2a\x1b\x3b\xb8\x73\x74\x71\xa1\x86\x7d\x6d\x95\x1b\xad\x8f\x7b\xb8\x3d\x7d\xee\x3d\x97\x33\x65\x1e\x66\xf0\xaf\x2d\x3f\xfc\xfb\x5b\x73\xf1\xb5\x98\xed\x60\xb7\x73\x22\x36\xfe\x3a\x75\xf2\x63\x76\x24\x9b\xbb\xef\xe3\xd7\x9d\xee\xb6\x3f\xa0\x59\x93\x6b\xce\xe6\xd8\x67\x98\xfd\x23\xde\x10\xc4\x36\xfc\xd6\x25\xe7\x6a\xa9\xd0\xcc\x8d\xd2\x2c\xd9\x74\xc1\x8d\x31\xea\x98\x64\x97\xdd\x83\x03\x35\x7e\xc9\xe4\x4e\x13\x30\x5a\xd0\x4a\x36\xd6\xfd\x9e\x1d\xbe\x25\x05\x30\x78\x65\x10\x63\xc7\x30\x45\x74\x24\xd0\xb9\x72\x27\x22\x59\xe0\x29\xcf\x4f\x09\x44\x54\x7b\x57\x3a\x34\xa3\xb5\x1a\xec\x95\xc9\x0c\xef\x01\x72\xd3\x6f\x3b\x92\xd1\x6e\x92\x6d\x4b\xbb\x76\x0c\xf6\x30\x4c\x7d\x61\x58\xbb\xf3\xf2\x5b\xb2\xb1\xde\x53\x47\xb8\xd1\x87\x24\xb9\x65\x04\xa6\xde\x0a\xa1\x4e\x6e\xf6\x89\x07\x1d\x6b\x07\x1c\xdf\x19\xa8\x0c\xb9\x49\x60\x51\x52\x84\x1a\x95\x42\x97\xb0\x0c\xeb\xec\x0f\xe4\x7c\xfc\x10\x72\x2b\x20\x23\x48\xc3\x79\xca\xe7\x0b\x60\xa9\x80\x3e\x0e\x7a\x90\x1c\xec\x0c\x64\x5a\x17\x00\x54\x26\xe3\xd9\xdc\x7a\xa1\x69\x4c\x5e\x41\x2e\xf6\x01\x56\xfc\x3e\x41\xbf\x25\x13\x76\x42\x88\x5d\x33\x49\x49\x8f\x93\x07\x40\x60\x28\x0c\x61\xef\xd4\xf7\x59\x36\x6c\xdb\x49\xa6\xcb\x38\xe3\x61\x39\x96\x27\xf0\xe1\x3c\x65\xa4\xe7\x92\x41\x10\xb8\x34\x88\x67\xc3\x81\x5a\x18\x6e\xf7\xaa\xce\xf2\x5a\xd0\x28\x94\x17\xca\x0b\x85\x42\x2d\x35\x89\x67\xd3\xda\x9c\xaf\xf3\x8a\xd0\x30\x9d\x0a\x9e\xdb\x76\x24\x72\x05\x3e\xb8\x3c\x82\xe6\x03\x12\x8d\xb5\x53\x32\xa4\xe3\x03\x12\xcb\x7a\x71\xf6\xd5\xe7\xba\x74\x10\x4b\x04\x21\x45\xf6\xce\x3e\x27\xf4\xd9\x1a\x32\x35\xdb\xc0\x33\x54\xc0\xac\x1c\xe1\x81\xe7\x0f\xe9\x19\xf7\xc8\x1b\x8d\xbe\xf6\xec\xd2\x41\x43\xbf\x95\x6a\xce\x00\xe3\x83\xf1\x39\x87\x13\x36\x94\x6d\x95\x20\xd5\xe6\xbd\xc0\x9c\xe3\x99\xe9\x37\xf3\x39\xcf\xbc\xc9\x2e\x44\xb1\x80\x8a\xda\xc7\x63\x79\xb8\x63\x83\x7d\x01\xcf\x65\x58\x41\xc6\xe3\x49\x30\x2c\x4a\x76\xa0\x81\x20\x70\x04\xd2\xe6\x7c\xf2\x31\x1d\xf5\x04\x3b\x25\x2a\x39\x15\x70\x24\x2a\xa7\x60\x17\x00\x04\xb6\x19\x87\x3f\x72\x1c\xc6\x3c\x09\x4d\x6f\x73\xd7\x03\x38\xce\x86\xa5\xa7\x7c\x02\xad\x15\xb1\x46\x23\x3c\x0a\xbf\x43\xa0\xc4\x8d\xcf\x4a\xe5\x56\x45\xa5\xd9\xb4\x21\xa0\xb0\xdc\x22\xed\x80\x54\xeb\x40\xd8\x56\xd6\xb7\xf4\x00\x3c\xd6\x9a\x60\x5f\xf2\x68\xe1\x24\x09\x54\xc2\x46\x0a\x52\x8b\x32\xae\x50\xb7\x8e\xe0\x8c\x22\xfc\x75\x01\x8a\x04\xa8\x87\x6d\x76\x19\x6f\xb4\x77\x8f\x31\x78\x32\x02\x8a\x00\x9d\x51\x6a\x2a\x80\x71\x95\xe0\xe9\xe5\x62\x9d\x5d\x00\x4f\xb3\xb6\x3c\xd0\x4f\x81\x7c\xa9\x04\xac\x0e\xb7\x8b\xf2\x5b\x76\x3a\x34\xb0\x44\x14\x01\xd8\x05\xea\x26\x6b\x2c\x1d\x14\xc0\xe2\x1e\xb7\xb5\x2b\x2a\xbc\x87\x3b\x2a\x4c\x21\xf0\xce\x80\x65\x55\x99\x38\xe5\x7a\x07\x79\x7f\xb8\x56\x2a\xd0\xc6\x9d\x2e\x1e\xcc\xf2\xda\xfa\x29\x61\x4f\x34\x27\xaa\x1c\xc9\xf9\xa4\x7f\x07\xdf\xdb\xc3\x5c\x28\xa5\xe0\x4e\xf0\xb0\x76\xcf\x88\xe0\xb6\x5a\xbd\x8f\x7b\x13\x53\x32\x94\x93\x26\x7d\x14\xc0\x08\xed\xd3\x36\xb6\x0f\x3d\xe8\x6a\x35\xb5\x5f\xa7\xae\x96\x79\x6f\x97\xe5\x26\x6c\x44\xd0\xa2\xde\x8c\x42\x5c\x5b\x1d\x78\x28\x4c\x5e\x91\x38\x46\xbf\xf3\x4a\x58\x26\xa0\x8f\xc5\x78\x57\x8f\x1c\x65\xbc\xd1\x35\x5b\x73\xd8\x87\x53\xb5\x51\x6e\xeb\xa8\x4f\xbc\x32\x61\xe9\xef\x09\x1c\x61\x37\x3e\xd2\x46\x1e\xc1\x13\x81\x0c\x7e\x24\x4e\x44\x06\xb4\x9e\x6c\xd3\x24\x80\x21\xe6\x56\x45\x45\xf2\x04\xf2\xbb\x70\xdb\x49\x54\xf2\x8e\x35\x05\xaf\x32\x6f\xf1\x42\xc7\xa2\xd8\xa0\x6e\x5c\xb9\x6c\x45\xb4\x8f\xb8\xf2\xb8\x91\x23\x37\x29\xe1\x36\xc5\xc1\x36\x87\x5d\x85\xcc\x67\x95\x82\xa7\x87\xad\x0a\x54\xe6\x11\x51\x6f\xb4\x37\xda\x07\xe3\x63\x73\x6c\x9f\xf7\x7b\x06\x50\xcf\x6c\xf4\xd1\x47\x4e\x25\xca\xba\x24\xd8\xcf\x50\x23\xd8\x31\x31\x9e\xc0\x2b\x4f\xac\xb7\x23\xe8\x8e\x34\x62\x64\xac\x12\x58\xe9\x17\xdb\xa5\x5c\xb7\xab\x4c\x95\xbc\xf9\xaf\xef\xa6\x13\xec\xb5\x94\xe8\x8b\xcc\x76\x23\x85\xab\x41\x5f\x0c\x89\xd7\x94\x9e\x55\x49\x90\xb6\xed\x47\xbe\xa9\xcc\xdb\xea\x0b\x8e\x3e\xdc\xe3\x28\x22\x46\x28\x8a\xb9\x2a\x60\x39\xcf\xcf\x00\x5c\x8b\x01\x7d\x23\x8a\x44\x93\x48\x02\x74\x56\x50\x16\xfc\x74\x9e\x65\xeb\xbc\xf3\xfe\x0b\x23\xdf\x48\xd9\x0c\x02\xc5\xdc\xe8\xad\x10\x16\xdd\xfa\x50\x5b\xa6\x57\x50\x66\x11\xd5\xe5\x76\x5b\x79\x31\x47\x17\xfe\x75\x73\x91\x90\x8b\x95\x0c\xda\xcd\x43\xe6\xca\xcc\xeb\x42\x40\x61\xfd\x3e\xd8\x74\x03\x8c\x7a\x2a\x88\x19\x47\x3a\xdc\xa8\x55\x47\xdb\xc9\xf7\x05\xf8\x21\x2d\xd5\x13\x6c\x85\x48\x34\x11\x38\x79\x44\x51\x31\x50\x53\xda\x34\x95\xc3\xb6\x34\x3f\xea\xbf\x1b\x4f\xb6\x2a\x63\x9b\xba\xc6\x2d\xa9\x6b\x9c\xbe\xbb\xb4\xb1\x72\xdb\xe6\xa9\x60\x2f\x30\x21\x0b\x3d\x07\x79\x72\x53\x20\xd3\xc8\x76\xe1\x40\x1f\x0b\x09\x00\xc1\x90\xb4\xe2\x2c\xcc\xd9\xd1\x33\xd9\xb4\x82\xc0\x38\x3d\x62\xbb\x0e\xe2\x1c\x1e\xaf\x87\x9b\x42\xd8\x76\xbd\x1f\xe1\x7e\x9c\x2e\x50\x9a\x45\xab\x60\x17\x4c\xa7\xa7\x9d\x86\x34\xee\xf9\x51\xff\xfe\x37\x33\xfc\x99\x05\x69\xee\x4f\xe3\x4f\xd5\x01\x79\x55\x79\xcc\xaf\xa5\xc4\xee\x9e\x52\xc6\x1e\x84\x00\x3a\x2d\x79\xfe\x36\xe9\x66\x7a\xe3\xf7\x57\xf7\x46\x9a\x29\xd2\xbb\x3a\x45\x3a\x44\x85\xad\xa9\x8a\x77\xb1\xa6\x37\x7e\xbf\x76\xbf\x5f\x5a\xc5\xe8\xad\xfe\xa9\xd0\x69\x11\x3f\x2b\x43\x6a\xd3\x23\x5d\xaa\xe1\xa6\xb4\x62\xc1\xf2\x2d\x30\xce\x28\xff\xec\x3f\xe1\x3c\x0e\x7e\xcf\x0e\x1e\x2a\x51\x02\x55\x3e\xb5\xfa\x43\xc8\xe3\x8e\x0d\x46\x3b\x48\x4d\xd1\x1c\x7d\x6f\x01\xfe\x78\x60\x22\x3a\x92\xe8\x8c\xc1\xc7\x99\xbf\x17\x02\x22\x92\xdb\xb9\x52\x29\xae\xdb\x68\x99\xca\x5d\xe4\x98\xe9\xf8\x5e\xa1\xb0\x1e\x9c\x79\x49\x34\x92\x15\xab\x7d\xaa\x25\x18\x52\x05\x52\xbe\x73\xfc\x5b\x3a\x6b\x54\x10\x0e\xd8\x65\x94\x39\xa3\xb6\x16\xad\xf1\x6c\xcc\xbf\x92\x39\xdf\xfa\x71\xdb\xff\x75\xdb\x12\x1d\xdc\xcc\x90\xf1\x2e\xf1\xfc\x75\x8d\x67\xa7\x46\x10\x04\xba\xfa\x7c\xd0\x2f\x70\x24\x5a\x4a\x28\x9d\x11\x4a\x48\x6d\x1f\xb2\x6d\xb9\x91\x21\x70\x0b\xdf\x6d\x27\x7a\xbf\x2f\x80\xf3\x20\x25\x95\xc6\x82\xd1\xd2\x8f\x49\x1f\xe3\x0b\x1a\x5e\xd7\xb7\x80\x4b\x0d\xee\xcf\xc6\x95\x5a\x1a\xe9\x45\x6f\x4e\xd8\x10\xd8\xb9\xb9\x91\x6b\x94\x93\x22\xd5\xdb\x08\xc6\xef\xc6\xb4\x50\x30\x6b\x63\xaf\x6e\x31\x38\xa2\x2a\x68\x83\xe9\x25\xc4\x34\x89\x00\x09\x1c\xc7\xe1\x19\x6d\xc1\x02\xe9\x86\xa8\x0a\xda\x50\xb1\x1d\x00\x34\xad\xa8\x14\x81\xf2\x8a\x7b\xba\xe4\x14\xf0\xbc\x6c\xe2\xd0\x90\x5e\x28\x94\x57\x3c\x15\x17\x18\x40\x79\xa1\xce\x52\xf3\xcc\x65\x34\x27\x5b\xe2\xf5\x3c\x9a\xae\xce\x97\x36\x84\x67\xce\x74\x09\xdc\xc1\xd8\x99\x22\x1f\x89\x01\xe1\x69\xd3\xaa\x38\x2c\xc9\xc8\x78\x5e\x19\x34\xda\xbb\xbb\x6b\xf5\x46\x7b\xa3\x31\x18\xac\xed\xe3\x81\x70\x43\x98\x47\x88\xf1\xc1\xf8\x60\x72\x2e\x0d\x06\xb3\x4c\x78\xf1\xba\x3b\x31\xa7\x49\x7a\x04\xb0\x0a\xd9\xae\x8f\x10\xd3\x0a\x64\x14\x0b\x39\x5b\x5c\xa0\x6c\x56\x99\xa5\x02\x78\x59\xc9\xba\x3b\x82\x71\xae\xe7\x61\x78\xf6\xc4\x0a\x9f\x2a\xd6\x6e\x4e\x8a\x9e\x17\x42\x18\x3c\x27\x98\x4f\xd0\x7b\xac\xee\xb6\xb9\x8a\xae\x6f\xc1\xba\xe1\x61\x65\x50\x44\x88\xbb\x8d\x1c\xdb\x25\xcf\xa2\x8c\x89\xf1\xfb\x0e\x2f\x77\x78\x23\x9d\x43\xa3\x63\xce\x39\xdc\x43\x52\xb1\x00\x6e\x25\x18\xcb\x29\xd6\x2e\x29\xd8\xc3\x5c\xe7\xfb\x80\xfa\x96\x10\x3a\x94\x66\x5b\xbe\xe3\x35\x8c\xc3\x62\x68\xec\x4c\xae\x0b\x7a\x08\x1f\xa9\x62\xdd\xd9\xbb\x5b\x30\xdb\xb3\xab\x92\x63\x34\x38\xbb\x38\x0b\x0e\x9c\xc5\x22\x40\x64\x45\x67\x05\x30\x48\x89\xcc\xd1\x5a\xde\xa8\x59\x24\x64\xd7\x40\x0f\x61\x46\x6b\x79\x4c\x9a\xe3\xc8\xa5\x03\x88\xf5\x8d\xc1\xcf\xc8\x7d\xea\x55\x09\x31\xa8\xf4\xe9\x83\x21\x5a\xdf\xb7\xac\xb8\x8f\x9f\x6f\xde\x50\x46\x94\x73\x58\xd4\xef\x79\x31\x82\x88\xe9\x95\x25\x93\x58\x22\xd8\xf4\x5b\xd8\xe9\x60\x8e\x02\x92\x00\xb3\x2a\x1a\x17\x90\xbc\x03\x60\xd8\x25\x2b\x5b\x97\x8d\x0e\xbf\xe1\x85\xcc\x46\xe2\x54\xf6\x60\xb0\x8a\xd9\x10\xa3\x98\x8f\x92\x3a\xdc\x64\x6b\x61\x0f\x6d\x53\xde\xed\x86\x77\x01\x66\x7f\x7b\xa9\x01\x38\x02\x6b\xc7\xc6\xd1\x14\x8e\x1c\x72\x9f\x5a\x74\xb9\xb5\xdc\x9b\x40\xcf\x6e\xef\xe8\x35\x8e\xe1\x5c\xb8\xc7\xa5\x22\xe1\x53\xba\xbe\xe1\x1f\xe6\xfc\xba\xaf\xbe\x61\x67\x36\xef\x69\xe6\x67\x27\x6f\x7a\x7f\xf4\xec\x1b\x31\x68\x57\x0b\x5b\xa5\x29\x6d\x46\x91\x5e\x28\x2f\x94\x37\xda\x1b\xed\x83\xf1\xc1\x7c\xb4\x3a\x7d\x4a\x7d\x35\xb4\x79\x7c\x14\x6e\x3c\x4f\x24\x90\x42\x7f\xf6\xe4\x4b\xdf\xc7\x81\xc1\xf8\xf0\x95\x18\xe5\x7c\x38\x4f\x01\x19\xf4\x67\x4f\xa5\x2a\xf5\xb2\x52\x8b\x5a\x5c\x57\x7d\x21\x8d\x82\x03\x8a\x61\x8c\x1e\xe8\xc1\x8c\xfa\xf3\xb3\x53\x2a\x53\xbd\xac\x32\x6b\xa2\x77\xc8\x99\x7a\xb7\xf9\xea\x8e\x19\x32\x19\xdf\xb9\xb7\xfe\x73\x99\x37\xf8\xbf\xbd\xb9\xf1\xdf\x8d\x76\xdd\x63\xd4\xd7\xdb\xef\xbb\xd4\xeb\x4b\x3e\xbf\xe1\x37\x99\x32\x36\xe5\x84\xe6\x80\x13\x4b\x3b\x6f\xf2\xa3\x47\xb8\x91\xa5\xfb\xb9\x6a\x96\x3b\xe8\x6e\x2b\x6d\x87\x0f\xe1\x55\x9a\xd4\xbf\xa3\xf5\x43\x67\x6d\x34\xce\xf1\x16\x8e\x02\x2d\xab\x96\xda\xdd\x7d\x8d\x8e\xda\x7b\x52\x8f\x10\xab\xad\x61\xfd\xf6\xa8\x94\xd7\xb7\xe0\x81\x4d\xce\x70\x7a\x70\xb5\xdd\x38\xf1\x1d\x36\x84\x41\x16\xf9\xf7\x8b\x57\xfe\x2d\xff\xdb\x3b\xed\xc1\xe4\x0a\xe8\xe2\x3a\x17\x5e\x1a\x72\x85\xe3\x5c\xca\xdf\xba\xf1\xfb\xae\x73\xfd\x4b\xc7\xc3\x6c\x79\x0c\x9a\xa8\x23\xc1\x20\x50\x15\x05\xb1\x50\x5a\xfe\xde\x6d\x6a\xb0\x3c\x85\xdc\x9d\x36\x2d\x15\x3e\x12\x9c\xf0\x7c\x1e\x27\x4c\x9f\x23\xcd\x24\xd7\x86\x5a\xe3\x7c\xa7\xb4\xee\x7f\xbc\x13\xfc\x5d\x77\xbd\xee\x32\x5c\x53\xd8\x16\xed\x60\xed\xa5\xb6\x9d\xda\x0c\x31\x8a\x58\xda\xf9\xba\x23\x8d\x12\x23\xd8\x54\xd9\xd0\x5a\x7d\x2e\x08\xfd\x21\xbf\xb2\x6f\x6e\x98\xe6\xba\x99\x55\x30\x50\x47\xe3\x33\x92\x4a\x93\xfe\x58\x66\xd1\xdd\x05\xc9\xe7\xbb\x6b\xfe\xbd\x2d\x24\x17\xcf\xab\xcc\x57\xbe\xc8\x93\x40\x5c\x04\x5c\x13\xc0\x11\xdd\xcb\x0a\xbe\x30\x57\x7a\x82\x85\xe2\xe6\x1b\xbe\xc1\xb5\xbe\x9e\x36\x0f\xfd\x14\x96\x74\xf5\x23\xad\x75\x9d\x61\x39\xae\xa4\x5b\x2f\xd1\xa1\x04\x07\x8a\xd7\xf5\x18\xa9\x3e\xde\x27\xf9\x98\x1b\xb9\xcb\x54\x10\xe1\x90\x90\xc2\x83\x59\x04\x1a\x4c\x96\x0e\xa6\x43\x61\x24\x9f\xae\x7c\x1c\x09\x88\xf0\xa3\xd2\x7b\xd9\x2f\x9f\x9b\x10\x3c\xc3\x17\x4c\x6f\x84\xe4\x4d\xfc\x2e\xd3\x29\xea\x17\x61\xf1\x01\x23\x47\x7e\xc4\x3b\xb6\xf3\x8d\xf7\x59\x0d\x09\x16\x1c\x7a\x78\xe7\xa6\xb5\xf4\xcd\x81\x84\x18\x8e\x38\x07\x6d\xab\x39\x06\x7d\x3e\x40\xd0\x66\x99\xeb\xf6\x3d\x06\x87\xfa\x99\x7a\x04\x01\x3b\x53\xaa\x12\x36\xe3\x5c\x73\x3b\x61\x33\xd7\x54\xf6\xb7\xf6\xbb\x52\x81\x6c\xd7\xa6\xb9\x9d\xc2\xca\x45\xf3\x55\x4c\x7f\x70\x98\x76\x27\xcf\x78\x7b\x2c\x95\x0f\x69\x1e\x8e\xe5\xe2\xec\x21\x74\xf3\x21\x6f\xe7\xcb\x06\xd7\x62\xcc\xb8\xad\xb8\xea\x90\x4e\x82\x97\x7c\x28\x81\x4f\xbf\xb4\x1e\xda\x1b\x26\x7e\x36\xf3\x63\x28\x09\xc0\x3f\x5b\x2f\x92\x2c\x60\xd6\xfc\xd1\xe8\x7c\xe2\xa3\x3e\x73\x70\x13\x00\x8f\xc4\xff\xe1\x9a\x88\x7e\xbb\xac\x36\xba\xd7\xe9\xe0\xda\xc6\xe9\xbc\xa3\x6e\x1e\xd3\x78\xa5\x83\x62\x59\x34\x6f\x54\x87\x48\x7a\xcd\x82\x1f\x29\x8a\xac\xa8\x60\x70\xba\x0c\xd3\xf1\x47\xbf\x9b\xf8\xec\xef\x70\xe2\x9b\xeb\x6a\x7a\xe7\xd7\x1f\x2a\xd8\x2b\x98\xe7\xe7\x63\xdf\x39\xfb\xd1\x36\xb9\xf1\xb4\x7f\x62\x3d\xe3\xed\x53\xb6\x3f\x4b\x1d\xd7\x4c\x0c\xb1\x40\x2f\x7c\x41\x5d\x6b\x2c\x56\x4b\xef\xb6\xbc\x90\x9e\x6e\x6c\x2b\x06\x1b\x77\x09\xcd\xaf\x00\xe1\x34\x5c\x5b\x68\xac\x3a\x8b\x30\x3d\x1b\xe1\xc6\x71\x08\x50\x61\x1a\x2a\x67\x50\x30\xb4\x4d\x2a\x77\x95\x43\xa7\xee\xac\x8d\x51\xe2\x69\xf2\x1d\x96\x34\x59\xf7\xd3\x5c\xe2\xc8\xf9\x99\x58\x19\xd8\x72\xc8\xd3\xfc\x9d\x46\x90\xc2\x0c\x6e\xa6\xeb\x79\x38\x50\xe9\x08\x69\x03\x6f\x83\x74\x63\xf6\x10\x56\x10\x33\x50\xb0\x4d\xd8\xf2\x2c\x95\x74\x64\x09\xf4\x04\xfa\xb6\x5c\x83\x1d\xb6\xfc\x29\x4b\xd2\xba\x3f\xc1\xc4\x55\xbb\x94\xd6\xa7\xdd\x12\x42\x0d\x57\xcf\x4c\xe8\xd3\x66\xaf\x1f\x51\x51\x70\xfc\xa0\xff\x68\x9a\xc0\x9b\xe4\x38\x03\xe1\x6c\x93\xb4\xd5\x06\xd5\x93\xf0\x02\xc7\xab\x6b\x59\xe9\xc7\x35\x59\x50\xa6\xb0\x49\x97\xa8\xfd\x74\xa6\xb9\x80\xba\xbb\x30\x4f\xde\x5e\xd2\x80\x8b\xfd\xb4\xc2\x4e\x31\x1d\x5b\xb4\x78\x06\x15\xd2\x19\x12\x90\x12\x4d\xb4\x85\x24\x8d\x8a\xe5\xb6\x6c\xc8\x7d\xbf\xd5\x92\x51\x2d\x26\x29\x2e\x42\xd8\x0e\x21\xe6\xef\x8f\x48\xcd\x18\x5d\xda\xba\xf3\xb5\x1a\x45\x2a\x45\x08\x9d\xf8\x69\x66\x6b\xf7\xdb\xa8\x52\x73\xb9\xfe\xc2\xcc\x83\x68\x6c\x55\xd5\x42\x23\x8e\xf5\x10\x5b\xb3\x89\x68\x54\xa8\x9b\x9e\xfa\xaf\xba\x68\xbe\xdf\x48\x12\x68\x38\xad\xc1\xf9\x7a\x43\xe2\x87\xb8\x1d\x97\xb7\xd7\x6b\xce\x74\x18\x15\xc7\xd7\xf2\xb0\x7b\xd5\xc8\xd3\xad\xed\xe7\x46\x51\xcf\x63\xb2\xa9\xa3\xf0\x63\xf8\xb6\x32\x6a\x38\x24\xe7\x1c\x7d\xdf\xf4\x1c\x41\x1a\x36\xf7\x73\xb5\x52\x2f\x23\x07\x77\xcb\xa8\x8b\xe9\xaa\x32\xc4\xf9\xd0\x71\xab\xb7\xd4\xe9\xb9\xd7\xfa\x4f\x9d\x5e\xba\x5c\x1d\xd9\xe3\x4b\xc7\xa3\xd0\xd4\x3f\x21\xca\xdc\x58\xde\xfd\x55\x95\x7f\x68\x3d\x4e\x1f\xdd\x75\x99\x37\x3c\xa2\xf7\x04\x5b\xb9\x89\xd4\x05\x7e\x25\x0e\x2f\xe6\xca\x54\xed\xf6\xeb\xcc\xe6\x62\xae\xeb\x75\x86\x80\x1d\x2d\x3e\x36\x73\xe3\x66\xad\x29\x8d\xc3\x09\xb4\xb7\xd7\x7a\x9d\x7b\x70\x12\xdb\xf8\xd9\x66\xc4\x34\x36\x9e\x6e\xb7\xea\xb4\x1f\xfb\xe5\x2a\x9d\xc1\xb7\xd9\xdb\x38\xc1\x35\x15\xf5\x4e\xeb\x09\x0f\xa7\x7c\xc7\x01\xe8\x24\xdc\x4b\xb3\xb0\x0d\x2d\x29\x85\x8c\xd4\xf1\x20\xa9\xf5\x8d\x0c\x8e\xf7\xe7\x03\xc6\x56\x1d\x5d\xce\x25\xab\x44\xb1\x88\x11\x2e\x96\x42\xf7\x89\xc5\x44\x26\xf2\x84\x16\x62\x50\x58\xee\xcb\xe5\x12\x49\x1d\xb9\x86\x34\xe2\x7f\x20\x57\x9b\x1b\x1c\x49\x6b\x18\xb1\xd4\x59\x7a\x67\x44\xa5\x0f\x45\x81\xed\x8f\xda\x4c\x5d\xd4\xd3\x2c\xcb\x19\x43\xcf\xf0\x2a\x1f\x7d\x3f\x2a\x38\xe8\x7b\x0a\x23\xd4\x0d\x3e\xa5\x88\x34\xe1\x89\x43\x1b\x80\x7b\x5a\xda\x0f\x58\x42\x69\xc4\x5c\x75\x66\x62\x4e\x20\x0b\x03\xf1\x3f\xde\x6d\x37\xc2\x6f\x02\xcc\x9c\x84\x18\xfd\xb8\x28\x75\x1f\x14\xeb\x37\x6a\x35\x6d\x8a\x0d\x86\xba\xa2\x23\x8d\x71\xc4\xdc\xef\x23\x56\x21\x12\x9c\xff\xc8\x35\x8b\x93\xbe\xde\x40\x8d\x37\x1c\x1e\x81\x1d\x84\xd1\x74\xe5\x0f\x6e\x68\xa1\x04\xae\x8b\x5a\xfd\x3b\x36\xb6\xe7\x0c\xe3\x87\xf2\x2e\x25\x8d\x17\x0a\xd6\x7e\x4e\xe4\xe2\x63\xd3\x78\xf6\xf8\xcd\xf6\x43\xb6\xdd\x23\xc4\x67\x34\xd0\x60\xc2\x5d\xc1\x00\x1f\x56\x9d\x23\x48\x61\xf5\xe5\x42\x31\x38\xf6\x49\x3e\xd1\xc4\x31\x9e\x3a\x55\xb7\x00\x4b\x98\x98\x9e\x6b\xa1\xed\xf9\xc5\x96\x7e\x15\xe0\xfb\xd4\xca\x1e\x7a\x34\xcd\xcf\xb1\xcb\xd9\xb4\x6a\xba\x4d\x57\xd9\x5a\x7b\xef\x87\xe9\x5c\xce\xcd\xbc\x2d\x77\xc1\x4e\xd2\xe8\x4d\xf1\x7f\xc5\x1b\x41\xc3\x5e\x70\x9f\x44\xff\x22\x6a\x0a\x3d\xd0\x0e\x11\x73\x7a\xa0\x56\xf4\xae\x7f\x0e\x9c\x45\xe9\x60\x63\x3b\x55\x1d\xfe\x67\x80\xde\x53\x74\x6a\x28\xac\x5c\x9c\xf9\x5d\x1d\x77\x3d\x9c\xe2\x0d\xad\x1b\x6a\x42\xa5\x94\x01\x9b\x52\x56\x57\x4a\xd9\x57\xa9\xea\x8a\x2e\x7f\x98\x5f\x47\xba\xe9\x2e\x55\x49\xf3\x94\xac\xce\x79\x22\x2e\xad\x46\xa1\xba\xa6\x2c\xce\x5f\x3c\x14\x3d\xb6\x6c\x72\xdc\x7a\x26\xfe\x9b\x9a\x6a\x3e\xa5\x88\x69\xc7\xeb\x84\x5a\xe6\x92\xcd\x1c\xb8\x29\xe2\x98\x12\xc9\x45\xe0\xfb\x43\x1a\x96\x94\x05\xc6\xbb\x38\xe5\x91\x73\x34\x4e\x45\x42\x3e\xe6\x0d\x58\x95\xe5\xd1\x70\xa5\x60\x2e\xd3\xdf\x70\x45\x62\xc4\xff\x3b\xb6\x29\x67\x63\xf2\x4d\x0d\x75\xd7\x34\x93\x36\x5d\xf2\xd0\x85\x9c\xae\xf0\x02\xa0\x45\xd9\x33\xae\x13\x6f\xdc\x44\xc7\xf5\xb7\xba\x28\x9d\x90\x3e\xc2\xb5\xfe\xd3\xf9\xa4\x60\x0d\xe0\x78\x83\xe0\x82\x4d\xae\x13\x0b\x6d\x7d\xa2\xef\x69\x15\x72\x1b\x94\xae\x53\x14\xdf\x19\xf1\xed\x21\xe5\x67\xf8\x4a\x4d\x03\xf4\xc2\x73\x40\xda\xdd\x76\x60\x51\xb1\xd6\x72\x6c\xec\xe3\xd0\xf0\x02\xeb\xee\x7e\xc2\x94\xaa\x1d\x95\x8e\xf7\xb7\x4f\x4e\x81\xc8\x14\x9b\xf7\x81\xa3\x5e\x3f\xbc\xed\x15\xff\xe7\xf6\xeb\xac\x08\xa0\xf9\x35\x21\xce\x7c\x22\x86\x87\x2e\xbb\xa4\xd1\x03\x8d\x2c\x18\xdd\x6c\xca\xee\xc8\x38\x99\xe9\x67\xd5\xb4\xd9\x03\x1d\x95\xa9\xe4\xab\x4b\x7d\x59\xfc\xcf\xa2\xe1\x13\x99\xda\x34\x4c\x21\xff\xe0\x35\x4c\x4d\x52\x1a\x33\x63\x51\x8b\x7e\xd9\xf0\x78\x5a\xf6\x09\x31\xf7\x3c\x4d\xf7\x73\x48\xeb\xdd\xd8\x12\x52\x58\x96\xf3\x2b\x07\x2e\x5f\xae\xf5\x46\x40\x9c\x06\x5b\x0c\x96\xc3\x1b\x03\x02\x47\x26\x70\x0f\x6c\x48\x29\x1e\xf7\x7c\xc3\xd8\x5a\x51\xbe\xbd\xa2\x70\xf3\x0d\xea\x56\xf4\x43\x96\xe2\x19\xc8\x6a\x3c\x8d\x37\xbb\xb9\x78\x64\xd9\x6e\x51\xf1\x9e\x97\xe3\x12\xe2\x64\x81\xf0\x4b\x94\x76\x2f\x16\x0a\x82\xb9\x6c\xca\x27\x5b\x2f\xca\x77\xdd\xa8\xbc\xab\xce\x43\x60\x6b\xa1\x6a\xb9\x3b\x88\x6e\x22\x45\xaf\x66\xa2\x88\x97\x8d\xdc\x62\x70\xb2\x13\x4d\x91\x8d\x3c\xe5\xf9\x99\x8d\x70\x4b\x04\xf8\x3c\xf6\x76\x33\xf3\x4f\x52\x06\xae\x70\x93\xa9\xf1\xb4\xcf\xd4\xac\x3b\x76\x3b\x8d\x5f\xe5\x7d\x85\x00\x07\xbc\x6b\x01\xdb\x24\xff\xc6\x2d\x39\x00\xfb\x5c\xdd\x6c\x4a\xf4\x8d\xe9\x5a\x5e\xce\xbf\x31\xad\x1c\x83\x52\x60\xb1\xa0\x5e\x81\xe4\x6b\x4c\x2a\xb0\x41\xda\x75\x67\x1f\x6e\xa9\x03\x8d\xbc\xea\x1f\x17\xdb\x9a\xf8\xa6\xa2\xba\x83\x57\x40\x6e\xa4\x65\xe4\xa9\x2b\xbc\xda\xe4\xed\x84\xed\x7f\x74\x23\xf2\x47\xaa\x61\xd8\x96\xb1\x47\x53\x40\x90\xc6\x6e\x46\xc1\x69\x40\x95\x6f\x00\x2a\xdf\x30\x54\xbe\x21\xa9\x30\xa3\xdf\x15\xcc\x82\x6b\x15\x8d\x2d\x48\x55\x76\x5d\xad\xe6\xb0\x59\xad\xf2\xd6\xad\x8b\x27\x98\x4c\x50\x35\xe6\xeb\x7f\xeb\x30\xeb\x0d\x94\xb2\x67\x0c\x2e\xbe\x97\xe2\xc6\x9f\x6a\x80\x96\x5b\xf1\x66\x56\x64\xae\x64\xa2\x4d\x38\x73\x91\xea\x0d\xfd\xb5\x3f\xb0\x5f\x0f\x9d\x60\x38\x94\xd5\x42\x44\x35\x64\xf9\xb1\x75\xf9\x09\xcb\xa1\x61\x9c\x80\x03\x45\x44\x84\x1b\x71\x79\x3e\x34\x24\x8c\xa3\xde\x36\xc3\xb1\x1c\x71\x50\xd7\x8f\xb4\x9c\x7d\x55\xb9\xd8\x9f\xce\x31\x9f\x43\xbf\x4e\x5c\x3a\x8c\xa8\xc1\x57\xd3\xda\x26\x7d\xf4\x8c\x8f\xb5\xc0\x31\x1b\xac\xa2\x73\xc3\x8e\x7e\xc1\x06\x5e\x60\x91\xe4\x71\x28\x76\x1e\x71\xd0\x24\x6c\xcd\x06\x0a\x79\x37\x8a\x1c\xc3\xb9\x52\xb9\x99\xed\xbf\x85\x9b\xa7\xd4\x1e\x87\x51\xd9\xf3\xee\x3f\x4d\x25\xa1\xdb\x60\xd9\x7b\xf8\xac\x04\x92\x08\x2b\x78\xaf\xb0\x7f\x61\x09\x19\x95\xa4\x30\x02\x03\x07\xb3\x8f\xe3\x7d\x98\x92\x96\xf5\xb1\xa4\x2d\xb0\xc6\xd2\xba\x5b\xbe\x7f\x34\x44\x38\x81\x79\x46\xc3\xba\xc5\x95\xf2\x42\x62\x2e\x51\xd4\xaa\x8d\xd1\x2d\xbb\x58\xc9\xd8\x73\x59\x9e\x0c\x38\xf4\x4b\x42\xcb\xbd\xaf\xab\x60\xc9\x4c\xbd\x62\xaa\x01\x59\xdb\xf1\xd6\x4c\x80\x67\x55\xdd\x88\xda\x5c\xd6\x9c\x91\x3b\x97\x9f\x4a\xd3\x48\xb1\xeb\xc6\xf4\x09\xde\xa6\x1c\x58\xc7\xa1\xcb\xd8\xcc\xa4\x33\x63\xf9\x4e\x20\x9b\xfc\x3a\x04\x4d\x1a\xa6\xd5\x1b\x9d\x9c\x4d\x1d\x8b\xdd\xfb\xff\x16\x84\x1d\x38\x69\x2c\x1c\x5f\xcc\xa2\x39\x11\x8b\x62\x28\xb0\xbe\xbc\x19\xe7\xed\x72\x42\x42\x7f\x50\xfa\xd1\xc4\xd4\x7e\xa9\x19\x53\xd0\xa0\x66\xaf\xa2\x81\x69\x50\x5a\xb3\x42\x57\xc1\x2c\x5b\x60\x96\x3b\x46\x4f\xfb\x89\x75\xa6\x63\x95\xaa\xe7\xd0\x5f\x05\x83\x39\x86\x02\x95\xd6\xf6\x11\x0f\x89\xcd\x02\x78\x41\x00\xce\xe1\x0d\x71\xc3\x27\xf5\x07\x7b\xd9\x8e\x31\x69\xb3\xb9\x10\x10\x82\x20\xf5\x2f\x4c\xf0\x5a\xed\xc0\x78\xb8\x85\x9b\xe6\x4a\x12\xe7\x53\x2c\x6a\x00\x1c\x4a\xbf\xb0\xa3\xdc\xce\x53\x8a\x39\x22\x4c\x4c\x1c\xad\x5c\x48\x59\x67\xee\xc8\x95\xd6\x7e\x20\x7f\x41\x94\x79\xcc\xda\xf4\xc8\x13\x6a\x7a\x43\xc0\xf6\x3c\xad\xef\xd9\x85\xd5\x90\x73\x46\x7b\xdd\xe5\xb9\x6b\x3f\x8c\x40\x8e\x79\x28\xbc\xeb\xca\xdb\x08\x85\x73\x87\x2d\x18\x8c\x32\x94\x5e\xba\xfd\x60\x60\xbd\xee\xc0\x6a\xb6\x9e\x11\xe1\x4e\x8c\x1d\xe5\x1b\x74\x43\x2a\x86\xe3\xd0\x85\xf3\x2a\xde\x86\xe5\xd9\xee\x2e\x26\x99\x0f\x93\x0b\x69\xf6\xdc\x79\x30\x1c\x38\x80\xba\x0f\x8c\xff\x8c\xe5\x17\x8c\x67\xc2\xaf\x2f\x9b\x91\xfe\x65\x91\x48\xa7\xdd\xeb\x84\x03\xba\x59\x66\x47\xa1\xe3\x23\xab\xf6\x5f\x41\x5e\x1c\x36\xb7\x86\xe8\x88\x24\x71\x2f\xfc\x1a\xba\x27\x6f\xdb\x68\x15\x77\x38\x6d\x3f\xef\xe9\xa3\x68\xe4\x18\x1f\x92\xcc\x23\xab\x95\xde\xc1\x8e\x85\xed\x2a\xc1\x32\x77\x80\xcd\x66\xb8\x99\xd2\x5b\x21\xb9\x40\x65\xb9\x1f\xe9\x95\xe8\x74\xc3\x09\x8e\x11\x21\x75\x96\x2f\x6c\xb2\x8a\x7e\xa3\x68\xa9\x62\xbb\x95\x43\x91\x13\x62\x16\xfd\x5d\xb6\xa9\xd1\x22\xc5\x28\x16\xde\x17\x12\x89\xd1\x12\xeb\xf8\x3f\x03\x42\x02\x6e\x72\x67\xc0\x8c\x8e\x78\x29\x4f\x8c\xe1\xb2\xa5\xca\x08\xe8\x01\xa9\xe0\x25\xdd\x62\xc0\x5a\x31\x0a\x82\xe9\x61\x56\x6c\xc6\x18\xc7\x36\x3e\x46\x53\xf6\x53\xd5\x80\x8a\x44\xe1\x1c\x6d\x9d\x77\x69\x21\x73\xc4\xa4\xff\xed\x57\xe9\x3e\x8a\x11\xa9\xc8\x26\xbb\x56\x86\x80\x96\x4f\xa6\x6d\xa9\x4b\x61\x4b\x08\x42\x01\x56\xd2\xcd\x1a\xc3\x64\x34\x27\x62\x0c\x44\xd1\xda\xcb\xa2\xa1\x40\xbc\x52\x11\x02\x8e\xdc\x21\xb3\x14\x4b\x0c\x2d\x6d\x09\x85\x1c\x22\xe3\x52\xd7\x4a\x1b\x27\xe6\x59\xba\x91\x11\x62\xd2\x5e\x98\x79\x6e\x56\xc5\xbf\xdc\xdd\xb9\xb8\xf8\xac\x6d\x22\x80\x1a\x9d\xab\x54\xa5\x13\x3a\xa7\x1c\x0c\xb4\xcf\x1d\xf9\x29\x86\x3c\x23\xdf\x06\xef\x4a\x16\xaa\x4e\x59\xa9\xca\x4d\xd5\xb5\x4e\xad\xba\xd3\xc5\x17\x9d\x98\x07\xd9\xca\x70\xa8\x33\x18\x46\xcd\x79\x93\xe4\x15\xb3\x9b\x7f\xa8\x39\x0b\xfe\x19\xee\xc8\x06\xb8\xaa\x07\xae\x0a\x4e\x35\xa1\x53\x92\x3b\x06\x8b\xd6\x93\xb1\xe7\x5a\x04\x34\x0b\x28\xb8\xd7\x04\x9d\xf5\xc5\xa0\xf3\x8a\x8d\x63\x38\xe0\xf5\x3d\x17\xa6\x7c\xa6\x2c\x3b\x0b\xc7\x4a\xad\xab\x50\x19\xbc\x16\x5c\x31\x1c\x2b\x5d\xe4\x1f\x19\xf5\xca\xd2\x00\x3d\x35\xb9\x85\xba\x36\xdd\xf6\xb6\xcc\xf3\xcd\x04\x97\x01\x4d\x2f\x38\x60\x53\x06\xa5\x09\xc0\x1b\xb3\x94\x50\xbf\xdf\xf9\xd9\x0e\x33\xd1\x4e\x26\x6d\x77\x99\xc5\x8b\x82\x34\x76\xe2\xe8\x69\x39\x07\x7c\x9d\xf1\x51\x5a\xd1\x92\x8a\xba\x32\x66\x4c\xa1\xd1\x76\xa6\x0a\xff\x67\x89\x4c\x36\x23\x8d\x43\x20\xa7\x42\xf5\xae\x84\x4d\x54\xc3\xa1\x24\x29\x18\xb4\x88\x39\x9d\x14\xb5\x51\x32\xb4\xe7\x58\xd3\x0d\x3f\x03\x6b\x63\x0a\xea\x50\x0d\x37\xde\x6c\x53\x74\x12\xa9\x69\x9d\xdc\x3a\xf3\xbc\x4a\x39\xaf\xa1\xeb\xb7\x5b\x77\x6a\x14\xd7\x3a\x8f\x7c\x3d\x93\x36\x42\x8d\x38\x53\x62\x49\xcb\x6f\x0e\x0e\x62\x33\xd6\xdd\xd5\xc0\x65\x86\xbe\xd8\x4b\x6d\x46\x4c\x4d\x0e\x9a\x6a\xa5\xa9\x13\x4f\xa8\xae\x82\x0e\xfd\xef\xc6\xf3\xbb\xe5\x6a\xf8\x95\x41\x10\x61\xbb\x41\x39\x89\x6d\x40\x1d\x13\x27\x07\xdc\x8c\x37\x1c\xa3\xc9\x11\x50\x35\x26\x32\xb6\xe9\xba\x5f\x34\x56\xb3\x90\x14\x66\x9d\x42\x53\x64\x98\x0e\x40\xf5\x57\x37\xb0\x1f\x9d\x33\xc0\x2f\xd2\x59\xe9\x17\xe8\x7c\xfc\x61\x7d\xa4\x76\xc5\xf1\x77\xd9\x5a\x32\x42\xeb\xda\xc4\x2a\x8e\xba\x49\x4e\xe1\x05\x6d\xb6\x16\x0e\x47\x24\x50\x5e\xb2\x06\x61\x58\xcb\x1c\x36\xed\xa8\x18\xb1\xb6\xa2\xfb\xa9\xc9\x75\x29\x00\xf6\xc6\xa7\x22\xd8\x2e\x33\x1e\x2e\x41\xe4\x2c\x1e\xbe\xac\x62\xed\x1b\x45\x0d\x47\x6a\x70\xda\x86\x1b\xaf\xae\xef\x44\x83\xf1\x06\xfd\xac\x80\x81\x29\xf1\x8f\x2c\xf1\x8b\x50\xb8\x37\x6d\x96\x54\xd4\x59\xec\x81\xc6\x3b\x98\x23\x6b\x75\x7d\x06\x7d\xee\xba\xc1\x0f\x39\x66\x56\xa5\x0e\xdf\x9c\xee\x1e\xd1\xf3\xf4\xc8\x60\xe9\xc8\x1d\x91\x72\x4b\x35\x3f\x17\x1c\x3d\xad\x6c\x6d\xa7\x0c\x73\x6d\x23\x5b\xcc\x09\xd2\x6b\x01\xa5\x7b\xfb\x66\x70\x92\x36\x05\xb2\x07\x84\x99\x6d\x25\xf9\x07\x9e\x88\x53\xb8\xb5\x26\x65\xb6\x16\x35\xdb\x2f\xf6\xfd\x4e\xcf\x88\x53\x2a\xa0\xb1\xc3\x40\x09\x2a\x94\xce\x07\x39\x63\x7f\xc8\x88\xee\xa5\xee\xf8\x58\x32\x07\xbc\xb0\x9e\x54\xb8\xed\x66\x59\x4b\x77\x74\xb2\xad\x75\xe5\x0c\x8c\x7f\xf5\x84\x73\x31\xcf\x5f\x58\x26\x43\x5c\x2d\x77\xbc\x8a\x1e\xc3\xf9\x8b\xe7\xcb\x86\xcc\xa2\x41\xa1\xa8\x78\xec\x0e\xc0\x35\x2a\xc6\x22\x74\xad\x4e\xa6\x16\x87\x3d\xb3\x0d\xa2\x0f\xd1\x41\x49\xe6\xd7\x3f\xb7\x61\xe5\x3e\x00\x79\x47\x91\xdc\x25\xf4\x74\xdf\x4c\xf2\x1f\xed\xaf\x3c\x5c\xe8\xf1\xd8\x32\x39\x81\x29\x26\x06\xa5\x13\x1b\xc8\xc4\x67\xaa\x49\x34\x96\x49\xe8\x74\xd2\xca\x65\xd2\x13\x64\x72\x40\x9a\x9c\xa6\x9a\x6c\xc5\x94\xe8\x3e\x57\xc0\xa2\xa9\x4e\x80\x43\x25\x73\x84\x52\x81\xa3\x63\xf0\xe5\x82\x78\x8d\xbb\x09\x5c\x53\x09\xa7\x77\x07\x0d\xc1\x80\x7f\x28\x3c\xa2\xf7\xae\xaf\x27\xb3\x01\x8a\x11\x2d\x90\x1b\x1a\x29\x59\x13\x21\x50\x4d\xa5\xbe\x3f\x94\x0d\x89\xa5\x07\xa5\x33\xf1\x04\xa9\xc9\x60\xb6\x62\x81\xd8\x86\x96\x7b\xf9\x7b\x14\x9e\x88\x2f\xff\xeb\x2e\x4a\x3a\x2d\x4e\x57\x5a\x9c\x39\x5d\xb2\x6d\xcb\x0a\x12\xac\x04\xc5\xca\x4d\x58\x03\xf2\xb1\x06\x69\x58\x43\x45\xad\xd7\xfa\xd0\xb5\x05\x0e\x6b\x87\x94\xb5\x07\xd1\xd5\x04\xb1\x0e\x24\xba\x0e\x49\x59\x17\x32\x5c\x97\x84\xae\x6b\xe6\x65\x5d\x6b\xd0\x35\xd3\x95\xd6\x6f\x68\xda\x60\x10\x9b\x84\x6a\x93\x88\x6c\x1d\x34\x6c\xce\x78\x6d\x1e\x4b\x6e\x9e\x94\x36\x0b\x5e\x9b\x0d\x64\xf3\x25\x69\x9b\xc8\x74\x9b\x53\xcb\x96\xa0\xda\x52\xcf\xe9\x57\x04\x2e\x6f\x36\xa8\xb7\x32\xa7\x6f\xe7\x0b\xbe\x4d\x5f\xf9\x0d\xa2\xfa\x86\xb5\xd3\x37\x23\xc5\x37\x7b\x94\xdf\x96\x2b\x7d\x5b\x46\xf7\x43\xd1\xe3\x17\xa7\xa6\x7f\x5a\x1f\x39\xa6\xfd\xbf\x2a\x96\xf4\xdf\x32\x4e\xba\x9c\xb2\xf9\x5d\x0b\x8e\x33\xe3\x54\xae\x21\x1a\x32\xee\x29\x66\x13\x92\x93\x6e\x85\x5e\x3c\xe8\x8a\x00\x34\x3f\x04\x30\xf9\x67\x1f\x16\x90\x57\x49\x1e\x93\x40\xff\xd5\x72\x0a\x2d\x78\xf2\xd4\x61\x23\xa7\xc0\x9e\x4f\x47\x9a\xde\x37\x72\x0a\x94\xcf\xdf\x68\x11\x4a\x25\xa8\xf1\xf9\xfb\xaf\xb7\x09\x15\x60\x66\xa5\xa0\x41\x7f\x99\x91\x1c\x8a\xc8\x43\x6f\x05\x46\x7f\x40\x63\x81\xf9\x50\x10\xed\x5e\xf6\x81\x16\xa9\x1d\x12\x8e\x55\x71\xdb\xb8\xd5\x75\x7d\x05\x74\xb9\x50\xbe\x20\x8b\xa8\x16\x35\xa8\x38\x42\x93\xce\x42\x57\xf8\xa1\xcc\xf3\x53\x7e\x7f\x4e\xa8\xc4\x68\x18\x7f\x82\x30\xcb\xa0\xc8\x29\x67\x53\x26\x82\xf2\x0c\x02\x06\x69\x3e\xc8\x42\x9b\xb1\xf0\x24\x59\xb3\xb6\x2e\xcf\x30\x08\x51\xc7\x45\x06\xca\x49\x35\xa8\x62\xaa\x27\x9d\x52\x4f\x30\xd3\xa5\xc8\xdf\x3f\x68\x2e\xf2\x84\x57\x34\x22\x59\x4d\x18\xd2\xe4\x56\xad\xa0\x60\x59\x46\xb7\x09\x55\x4f\xb4\x10\x7a\xe6\x4c\x30\x59\x06\x89\x8e\x75\x15\x28\xf1\x81\x28\xbc\x59\xa0\x5a\xe8\xdb\x59\x98\x7a\xb6\xeb\x6c\xcc\xc6\x6e\x99\x7e\xa2\x8b\x5e\x8a\x63\x6f\x24\x7d\x54\x88\x77\x7d\x61\xad\x69\x9f\xad\xb9\x27\x94\x52\xc8\x7d\xd3\x5b\x86\xbd\xc7\x70\xf9\x0f\x1b\x60\x59\x70\x4c\x1d\x6f\x39\x8e\x1e\xa6\x1b\xe3\x3e\xba\x27\xb3\x09\x00\x9b\xf0\xde\x8a\xca\xc3\x2a\xf3\x61\x2c\xc3\xa5\x9b\x74\x80\xd5\xf2\x51\xed\xea\x20\x79\x35\xdb\xdb\x5e\xcd\x2c\x66\xc6\x54\xcc\x42\x08\x29\x3a\x86\x65\x74\x9b\x1c\x60\xea\x5e\xe4\x9d\xfa\x14\x95\x34\x75\xd0\x27\x0d\xcd\x58\x84\x17\x1a\x55\x12\xb5\xfd\x50\x29\x03\x0e\xb9\xd8\xf0\xea\x54\xfa\x1c\x26\x8f\x6a\x15\x53\xb9\xad\xfe\x67\xfa\xe7\x82\x9e\x99\x9a\x0f\xd6\x2d\x87\x68\x54\x62\x9b\xd2\xc7\xc3\x93\xf1\xf9\x7e\x06\x79\xbe\xf4\xac\x6f\x39\x99\x0c\xdb\xd4\x47\x45\x95\x88\x05\x06\x2b\x43\x9f\xc5\xc0\x6d\x11\x82\x96\xdc\x14\x5d\x06\xa8\x11\x57\x00\x77\xdb\xe9\x73\x06\x1c\xcd\x42\xc6\xb8\x6d\x44\xc5\xbe\xd9\x6d\xa0\xcb\xf4\x09\x32\xb0\xa5\x53\x37\x82\x82\xae\xa4\xef\x47\xdf\xec\xc9\x48\xdf\x00\x82\x74\x78\x8b\x0a\x1b\x93\xa4\x6c\x05\xd8\x85\x2a\xb0\x11\x5b\x20\xba\xb5\x7e\x0a\xaa\xbd\x75\x83\x7f\x10\x81\x22\xaf\x57\xbe\x05\x46\x67\xd7\x85\x33\x57\x04\x23\xc8\x45\x5c\x73\xba\xb5\x10\x7e\xe9\x63\xc7\x6d\xec\x6d\xb9\x8b\x3b\x6f\xab\xbc\x18\xac\x48\xcb\x53\x4d\x4f\x9c\x6f\x45\x7a\xc5\x4f\xd1\x5c\x6a\x5b\x50\x8f\x3f\x64\x7e\x0d\xc4\x01\x8c\x8f\xd8\xf2\x07\x00\x00\x80\x02\xa0\x84\x12\x4a\xa5\x84\x1a\x6a\xa8\x95\x1a\x30\x60\xc0\x0a\x4e\x8f\x47\x02\xba\x5b\xdc\x27\xc3\xa0\xe1\x60\xf6\xc7\x64\x25\xe8\xa0\x80\x5f\x5a\x12\x90\xc1\x27\x41\x98\x23\x8a\xcf\xff\xdc\x03\xd7\x06\x25\x17\x08\xc9\x08\xc2\x47\xa8\x64\xbb\x80\x9c\x89\x98\x7f\xcb\xda\x9f\x71\xdb\xc7\x5e\x82\x3a\x15\x09\x34\x21\x04\xd5\xcc\x72\x2a\xa6\x49\x92\x53\x69\xea\xd0\x1b\xfc\x99\x64\x7d\x48\xb9\xf3\xf0\xc0\x23\xa4\xa5\xa5\x5a\x8f\x3c\x68\x55\x9e\x99\xaf\x3d\xf3\xe3\x1e\x35\xcf\x1c\xcb\x23\xdf\xed\xff\x74\x42\x1c\x1a\x1e\x89\xb5\x60\x9e\x64\x19\x33\x7b\x22\x9d\xd9\xcc\xed\xd3\x9c\x91\xf3\x3a\x12\xb7\x18\xf4\xba\x3f\x75\x8b\x59\xdf\xc3\xf3\xba\x04\x93\x24\x4f\xfa\xff\x70\xa9\x2b\x40\xa6\xad\x7a\xe6\x31\x87\xf5\x4a\x6c\x3b\xbc\x81\xb2\x1c\x0f\x06\x8d\xed\xca\x6f\x3d\x67\x8d\xad\xed\xb3\x88\xb6\xab\x4e\x5e\xb7\x7b\xbc\x9b\x98\xa9\xde\x45\x9b\x63\xae\xd4\xe8\x66\x5f\xff\xea\x96\x0f\x4d\x6d\xe8\x1f\xf7\xbf\xda\xd6\xeb\x71\x9e\x55\x08\x1b\xcf\x36\xbb\x09\x96\xdb\x91\x5a\x63\x9a\xf1\x5a\x0a\xf5\xf6\x70\x8d\xff\x02\x67\xae\x0d\x89\xc8\xb4\x4d\x4b\x1d\x5c\xb8\x33\xf3\xf6\xe9\x9f\xf5\xe4\xf5\x1a\x88\x5b\x81\x83\x69\x2c\xb7\x73\x78\x4b\x5c\x4f\x63\xc2\xfc\xb1\xea\xb7\x9b\x21\xf2\x3b\xeb\xae\x82\x73\x64\x98\x93\x1c\xac\xfe\xf6\xe9\x85\x78\x37\x21\xfa\x8e\xae\x93\x02\x77\xeb\x54\xa6\x8c\xeb\xdb\xfc\xff\x9c\x85\x39\xa8\x68\x66\x96\xc4\xf6\xa5\x2b\x56\xb4\x25\x92\xad\xc8\x56\xea\xdc\x79\x9c\x6f\xaf\xc8\x1a\x77\x8e\xd4\xb6\x9a\x0d\x31\x8f\x1a\x8e\x0b\x49\x74\x7f\xbf\xbc\xcc\xaf\xec\x97\x27\x7d\x45\x90\x49\xf7\x2f\x1c\x7a\x18\x55\x1b\xac\xe5\x9b\x99\xa0\x93\xef\xae\xb6\x76\x3f\x82\xdf\x2f\xaa\x60\xff\x35\x9d\xa9\xfe\x26\xd8\x19\x0a\xa8\x54\xd2\xb8\xed\x8b\xde\x2f\x5e\xe7\x93\xbc\xe0\x6b\x32\x63\x6b\xc9\x7e\xa0\x36\x5c\x43\x00\xe9\xd6\x10\x21\x3a\x5f\x1c\x88\xd2\xc8\xdc\xda\x66\x8d\x47\x58\xe1\xfa\x5c\x07\xdb\x7f\xf3\xb6\x0c\xa6\xb2\x80\x2f\x95\x0e\xd9\x68\x21\x59\x4c\x29\x85\x7d\x2a\x21\x5d\xeb\x5a\x41\xe2\x4e\xdc\x67\xe9\x99\x4d\xd0\x9c\x7a\x32\x7d\xf1\x52\x83\x5e\x06\x23\x76\x1c\x9c\x0d\x71\xf0\x21\x4d\x5d\x24\x9c\x2a\x5b\x32\x5a\xb1\x9c\x87\x25\x5a\x4f\xf7\xda\xa6\x17\x99\xa2\x95\x22\x3a\x8f\x87\x9f\x25\x5c\xb7\x3b\xd2\xd9\x73\x66\x9c\x9e\x55\xd4\xe5\xfe\x9e\xaf\x6e\x8d\xfb\x7a\xae\xb1\x7a\xe7\x21\x16\x73\xf8\x29\x63\x52\xc8\xa1\x84\x1a\x5a\xe8\x81\x02\x87\x19\xfe\x83\x04\x0d\x16\xae\x70\x87\x27\x7c\x31\xc4\x18\x73\x2c\xb1\xc6\x16\xcf\xd8\xe3\x2f\x72\x44\x9c\x51\xa2\x46\x8b\x3b\xde\x11\x5d\x98\x77\x4f\x29\xe5\x54\x53\x6b\x58\x73\xf5\x63\x34\x71\x12\xc1\x22\x9a\x2e\xeb\x24\x24\x3d\x3d\xe9\x4d\x7e\x23\x9a\x7f\xda\xc8\x7c\x44\xfe\x4a\x2a\x7a\x69\x45\x54\x2d\xf6\x7f\xf7\x55\x7b\xfd\xd5\x51\xb9\xce\x2a\x2d\xb4\xd8\x72\x2b\xad\xb6\xd6\xce\xd6\x1b\x35\x6e\x68\xab\xfd\x37\x69\xda\xac\x5d\xed\x6e\xef\x39\x4e\x3e\x71\xca\x69\xe7\xd5\x73\x2f\x9d\x3a\x77\xf4\xd9\xff\xbb\x74\xed\xf6\x2b\x3f\xfe\xcd\xdf\x1a\x65\xb4\x71\x8e\x3e\x78\x60\xac\x21\xe3\x1e\xef\xf8\x28\x50\xa4\x44\x9d\x06\x09\x29\x19\x5d\xb4\xe9\xe5\xc0\x89\x33\x17\x6e\x7c\xf2\x60\x62\x66\xf0\xe4\xc5\xff\x2c\xac\x6c\x7c\xf1\xe6\x9b\x1f\x7e\xf9\x43\x40\x42\x41\x45\x43\x07\x61\x62\x41\x70\xe1\x9b\xbc\xc2\x2a\xab\xae\xb6\xce\x35\x16\x2d\x5e\x58\xb2\x74\xd9\xba\xd7\xfb\x1f\xa4\xc8\x14\x95\x4b\x6e\x0d\x1a\x35\x69\xd6\xa2\x4d\x4f\xed\xfa\xd3\xa1\xa4\xac\xd0\xa9\xa2\xa6\x97\x6e\x7d\xf4\xd5\xcf\x92\x65\xab\xd6\xec\xb4\x9f\x0d\x23\x63\x83\x4d\x13\x33\xdb\x76\xdb\x77\x85\xab\x5d\xe3\xd2\xeb\xbd\xbe\x1d\x76\xda\x65\xb7\xdd\x37\xf6\x75\xd7\x5b\xdf\xf2\xda\x17\x3e\xfe\x6e\x40\x96\x61\xd9\x16\xf1\x34\xd1\x83\xb7\xbe\x08\x9f\x63\xfd\x18\x3b\xdd\xe4\xfa\x2b\xd3\x9f\x9d\x92\x77\xbb\xb7\xde\x4d\xef\x37\x8b\xc4\x5e\x69\x8e\x41\x93\xc1\x3c\xe0\xf2\x91\xc4\x65\xae\x7c\x5e\x4f\xc6\x91\x12\x45\xa6\xa4\x1f\x99\x70\x9f\x4e\x02\x9d\x25\xfe\x48\x49\x68\xd2\xb2\x10\x57\x85\xf6\xe3\x22\xb9\xa9\x9c\x89\x8c\xed\x52\xe2\xc1\x94\x1c\x33\x23\x76\xad\x41\x69\x3e\x84\x1d\x2d\x09\x5b\x12\x59\x44\x7a\x2a\x22\x21\xca\x3e\xbd\x1d\x2b\xd9\xa6\xa6\xef\xf5\xdc\x46\x84\x97\x7d\xbd\xcf\x36\xb4\xd8\xe4\xc4\xf0\x59\x70\x93\xd8\x5b\x64\x01\x2a\x4a\xe9\xb9\x25\x52\x94\x9f\x88\x29\x25\xdc\x49\x49\xb2\xb2\x4f\x4f\xe6\x44\x1a\xf5\x4d\x88\x80\xd2\xe2\x89\x4e\x52\xfe\x4d\xd2\x4b\x7e\x33\x53\x45\x1a\x8f\x68\x33\x9a\x97\x12\x62\x26\x6e\xf0\x9c\x93\x02\x25\x1f\x8f\xdc\x52\x17\xe5\xd6\x2d\x0e\xc1\x69\x36\x2a\x13\x4c\xe9\x99\x28\x02\x98\x3c\x2e\x25\xb0\xcb\xbe\xd0\xc7\x0c\x9d\x03\x5f\xf9\x39\x0f\xd1\xbc\xd0\x93\xf6\x12\x7f\x0c\xb6\xdb\x1f\x70\xaa\x6a\xf1\xdc\x86\xf3\x2f\xff\x96\xff\xdd\xc9\x57\x8f\xb8\xc3\xe0\xff\x30\xb0\x72\x14\xf6\x92\x81\xb7\x71\x59\x6f\x9c\x68\xc9\xd5\x56\x73\x9a\xc5\xad\xb2\x40\x1f\x45\x84\x4f\x4d\x1a\xe2\x53\x47\x08\x9c\xd1\x04\xf9\xf2\x85\x24\x93\xc9\xcc\xde\x43\x5a\x08\x94\x80\x73\x9c\x2e\xf8\x49\x9a\x65\x5b\xb4\xc1\x50\x23\xd0\xb9\x2e\x1d\x24\x9d\x1a\xf3\x59\xdb\xcf\x22\x13\x28\x1d\x99\xe6\x1e\xb0\x2b\xd1\xd0\xc0\x9e\x6a\x8b\x8a\xcd\x42\x90\x83\x83\x02\x3c\x38\x10\xa8\x80\x6e\x14\xd3\x92\x13\xa1\x6c\xcd\x3b\xec\x9c\xdf\x1d\xe2\xc7\xb6\x15\x80\xbc\x54\x4e\x7b\x83\x2c\x81\x2f\xcf\xf1\xa2\xdc\xc6\x4a\x41\xef\x37\x67\xfd\x50\x9c\xcb\x10\xf4\x31\x37\x25\xf8\xbc\x5d\x92\x87\xc7\xdb\xd5\xf3\xfc\xfb\x64\x8d\xfc\x39\xd9\x75\x9e\x4e\x76\x93\xc7\xe7\x6f\x73\x13\x07\xb4\xbc\x40\xa3\x54\x3e\x8f\x8d\xeb\x7c\x87\x66\xb4\xd0\xbc\x4a\x72\x19\xb3\x05\x03\xd8\x92\x8f\xd1\x93\x67\xd2\xc2\x6c\xfd\x31\x68\x46\xcd\x81\x45\xbf\x45\x04\xd7\xb9\xa2\x26\x25\x09\x76\xd6\x9d\x89\xb8\x4a\x35\x57\xb9\x5a\x15\x3b\x01\xa4\x4f\x80\x0d\x39\x3d\xac\xf3\x24\xb7\xa3\xb5\xa7\xd0\xf8\x4d\x17\x45\x22\x66\x33\x69\x7a\xc0\xc7\x7c\xa8\xdb\x52\xa6\xbe\xf8\x0d\x89\x56\x4a\x55\x91\xfb\x4c\x28\x03\x1b\xe0\x57\x18\x3c\xcc\x9e\x7f\xb7\x2e\x7e\x54\x65\x7c\x43\x6d\x98\x3f\x13\x3f\xd9\x16\x9f\x39\xae\x0b\x4e\xba\xf1\x6e\xa7\x82\x0f\xb9\xc9\xd6\xac\xfd\xf2\x71\x2a\xa8\xf4\x4a\xfb\x16\xd5\xcc\xdf\x05\x1b\x23\xf4\x09\x6e\xe0\x14\xf3\x5e\xe3\x9a\x6f\x2e\x0f\xc5\x3e\x4c\xd9\xfb\x75\x71\x30\x06\xc9\x02\x42\xb2\x7c\xb0\xd6\x38\x5e\x6e\xd0\xbd\x7a\xca\x28\xac\x88\x13\x51\x73\x89\xf1\xb2\x49\x5d\x06\x6e\xac\x21\x49\x06\xbb\x95\x0c\x7a\x69\xae\xf8\xf7\xb7\x7f\xee\xae\xdf\xcc\xad\xaa\x82\x79\x04\x37\x49\x38\x77\x40\x4e\xc3\x3b\xc5\x11\x57\xc6\xd4\xa0\xb1\xf4\x1c\x66\x9c\x57\x02\xb2\x15\xc2\xd5\xe4\x69\x00\xad\xb9\xa4\xda\xab\xa3\x8d\x66\x67\x46\x77\xa6\x7d\xe5\x8b\x52\x45\x35\x23\xc1\xe6\x56\xd8\xf0\x16\x22\x7e\xda\x2b\x62\x28\xcf\x8b\x82\xde\xcb\xe5\x68\x48\xd8\x5e\x1a\xe7\xb5\x4b\x49\x35\x00\x50\xd2\x3b\x4f\x0f\xd2\x62\xbe\x54\x8a\x48\xea\x5f\x15\x53\x10\x3d\xeb\xca\x3f\x95\x93\xd5\x52\x8e\xd4\xc0\x04\x76\xe6\xcc\xae\xa1\xff\x31\xe3\x1b\x6a\x79\x66\xa6\x62\x02\x79\x4e\x42\xaf\xd5\x34\x77\xe3\x84\x59\xee\x88\x50\xc8\x41\x5c\x17\x97\xba\x7b\x85\xff\x6a\x08\xd6\x0c\x25\xf8\xab\x0d\x05\xed\xbd\xd8\x2d\xac\x06\xf6\xe9\xe6\x54\x1f\x88\x49\x9a\x92\x7f\x72\x63\xeb\x91\x7e\x61\xca\xf9\x87\x90\xcd\x00\x82\x6c\x6a\x37\xef\xf2\x2b\x48\x63\x0a\x34\x1d\x19\x7a\x55\xcf\x17\x87\x62\x74\x57\x8e\x07\x44\x16\xab\xcf\x31\x12\x59\x6d\x9d\x6a\x28\xce\xb5\xf6\x21\xcd\xd1\x09\x2f\xea\x26\xf7\x93\x9d\xfd\x94\x4e\x6e\x09\xdb\x5b\x20\x7a\x70\xea\xcf\xa5\x8f\x18\x24\x4a\xf9\xc5\xd1\xf5\xb2\x48\xd8\xc6\xaf\x23\xca\x43\x44\x41\xa7\x99\xd5\x75\x48\x5e\x17\x18\xc8\xeb\xf9\x8f\x5d\x22\x2b\x46\xe7\x73\x69\x86\x4d\x80\x0e\x45\x9c\x41\x17\x0d\x62\x25\xe5\x94\x0e\xce\x40\x95\x85\x2b\xe3\x43\x54\x00\x8e\x1c\xfe\x60\x54\x70\xf4\xe4\x51\xd2\x78\xc1\x55\x66\x2f\x02\x90\xde\x8a\xc0\x3b\x02\x16\xe4\x2c\xda\x41\x08\xbe\xa1\x77\x5f\x97\x56\x07\x75\x96\xf0\xbf\x1d\xa6\x0b\x25\x90\xef\x5a\x66\x58\xfb\x75\x97\x00\xf2\xa7\x76\x19\x11\xec\xb9\x86\x22\xbb\xfe\xd4\x76\xfe\xe1\x85\xdf\xdb\xfc\xba\xc1\xda\x38\xda\xa0\x0b\xa5\x17\xa4\x24\xa4\xd7\x91\x99\xcf\xf4\xe5\xd8\xb8\x9e\x5a\x53\x37\xb5\x01\xff\xe3\xd1\x8b\x8a\x7a\xa2\x9f\x0a\xf9\x46\x59\x78\x12\xb6\xb7\x1f\x0d\xea\x98\xdf\x83\x0f\x2f\xba\xe1\x8d\x84\xde\x0b\x8c\x54\x47\x7c\x1a\xe2\x9e\x41\x3e\x15\xcf\xef\x86\x80\xfe\xaf\xa1\xfa\xf8\xd1\x4e\x1c\xf8\xff\x33\xf2\x71\xba\xa8\x88\x0c\x51\xdf\x4b\x63\x0f\xdf\x7c\x1b\xfe\xdf\xff\xa9\xd3\xdf\xf0\x57\x02\xc7\xa8\x8d\xd5\xf4\x6f\xbf\x2f\xab\xb9\x46\xe0\x97\xdb\x3a\x61\xf4\xe9\xc7\xea\xb2\xe6\x84\x19\x38\xd2\x02\x17\x7e\x8c\xe6\xd1\x59\xd0\x15\x59\xdb\x8d\x0f\x88\xfd\x72\xf7\x71\x4e\xd4\xb4\xe1\xba\x51\xf7\x4c\x8d\x42\x84\xea\x23\x48\x7c\xc9\x7f\xfe\xc7\xd5\x60\xa7\x67\x32\xeb\x46\x07\x7c\x23\xc2\xaf\x01\xbc\xbc\x05\xff\xa7\xd1\xae\xe5\xd1\xff\x55\x26\x44\x3b\xf7\x16\x64\x5a\xa9\xfd\x7b\x71\x62\x98\x1a\xd2\xe9\x3f\xce\xd4\xd9\x06\x12\xbf\x32\x96\xf5\x47\x93\xbf\xe3\x37\x78\xd7\x61\x23\xc0\x44\x9a\xca\x2c\x0b\x9f\xc8\xe8\xe0\xe1\xd1\x08\xff\xaf\xa2\xbf\xc2\xe9\xef\xbd\xa4\x44\x25\x23\x36\xa1\xad\x4c\xc4\x66\x08\x85\xd9\xa5\xe7\xd0\xcf\xa6\xd0\x60\x21\x95\xc4\x90\x72\x39\x3b\x34\x7f\x8f\x71\x7d\x07\xca\x56\x85\x3f\x74\x79\x11\xbd\xab\x52\xf6\x9e\x79\x23\xc6\xba\x6f\xc7\x33\xf1\xe2\xdd\x4b\x69\x6a\x71\xbc\xe9\xec\x29\xe2\xef\x12\xa1\x4b\xc8\x4e\x42\x53\xae\x2f\xd0\x91\x12\xe7\x8f\xbb\x59\xc4\x7c\xfb\x80\x0b\xa7\xa3\x5e\x07\x4c\xae\x8c\x91\xea\x00\x8b\xcc\x07\x3f\x22\x9d\x07\x65\x4c\x8c\x19\x86\x84\xbe\x28\x82\x7d\x5f\xbc\xa5\x2c\x79\x15\x5f\xa3\xf4\x22\x1a\x7d\xb1\x66\xa8\x29\x91\x25\x19\xc4\xca\x44\x0d\x4d\xc8\x45\xd3\x88\xe6\xc8\xb7\xb1\x18\x2b\xb8\x6f\x4c\x8f\x5b\xa5\x9f\xc6\x24\x1c\x73\x2b\x1b\xb7\x98\x0d\x6a\x8c\x6e\xa7\x0e\xeb\xcf\x07\x99\x91\xfb\x65\x5a\xe4\x3d\x07\xa9\xdf\x74\x5a\x43\xa5\x2c\x9f\xd0\xd1\xae\xec\xe0\xf3\x7b\x37\x85\xe2\x0f\xdc\x89\x44\x62\x59\x1b\x47\xbf\xd3\xcc\xc6\x91\x94\x31\x8f\xfc\x15\x72\xc9\xf6\xf8\xb7\x23\xb8\x76\xcf\x14\x38\x50\x31\x37\x43\xc6\x79\xf6\x7a\x02\x34\x32\x1a\x97\x44\x5d\x8e\x4c\x55\x85\x15\xfb\xc3\xe1\x72\x30\x4a\x84\x7b\xa5\x62\xaf\xf6\xfe\x87\x88\xda\xe7\x1f\x2e\x62\x4f\x8f\x39\x75\x9a\x5d\xa6\x5e\xe6\xcb\x73\x4d\x82\x29\x8e\x19\x8e\x76\x89\xa6\xf2\x00\x03\xbf\x17\xcf\xe1\xa4\x71\xc6\x09\x6d\x1f\xa9\xb8\x39\x46\x9b\x57\x0e\xac\x0b\x35\x42\xb8\xb0\xa1\xb5\xf5\x99\xca\x6a\xe2\xfd\xf1\x76\xd3\x61\x4a\xa4\xaa\x92\x3d\xef\xd0\x52\x8c\x1a\x75\x58\xc9\x45\x14\x40\x1f\xfd\x44\x60\x32\x74\x5d\x13\x05\x25\xb7\x2f\xe6\xb1\x79\xa0\x9e\x54\xd7\xe2\xa1\x98\xbe\x3d\xea\x4d\xd1\x91\xf2\x98\x4f\xfa\x2a\x22\xdc\x94\xdd\x47\x8f\xae\x22\xb2\x90\x7b\x01\x75\x22\x24\x99\x46\xf6\x32\x8a\xe6\x49\x86\xdd\x0f\xd4\x78\x04\x50\xcc\xac\xaf\x55\xc4\x2e\x0a\xf8\x16\x4d\xdb\x05\x45\x4f\xdd\x78\x38\x2d\xbf\xa5\xee\xa7\xb5\xf0\xae\x40\x5a\xe2\xe5\x9e\x7e\x03\x9a\x27\x2a\x1b\x3f\x7a\xdd\x93\xb2\xd4\x59\xf2\xbc\x82\x78\x34\x98\xa1\xed\x02\xf6\x7a\xfe\x19\x0b\xa9\xed\xd2\xdf\x97\xfc\x74\xa6\x28\xa5\x97\xff\x01\xd4\xc5\x0f\xe6\x0c\xcd\xe5\x5d\xa1\xaf\xb1\x82\x63\x60\xc5\xcb\x7d\xb2\x5f\xc4\x5f\xe1\x6a\x6d\x98\xbf\x23\x3f\xef\x65\xcd\x08\x1c\x4b\x3f\x2c\x73\x2b\x23\x83\xc8\x31\xf0\x5f\xbb\x5a\x7b\x97\x06\x62\x76\x60\x38\x24\x93\x10\x14\x7b\x28\x55\x22\xa7\xf3\xe5\xae\x5b\x70\x60\x94\x49\xb4\x1f\x81\xdb\x53\x44\xbd\x04\x17\x13\xff\x8d\x24\x69\x61\x08\xe2\x82\xb2\x48\x54\xa1\xe4\x08\xdf\x6d\xf6\x3c\xdb\xa7\xc2\x30\x18\xfa\x25\x11\xef\x46\xaf\x2e\xc5\xe3\xd1\x98\x8c\x89\x7a\x82\x77\xdb\x03\xa1\xff\x3d\x87\x6a\xde\x68\xde\xf2\xc9\x27\x3f\xb5\x24\x1b\x7f\xf4\x8d\xf5\xf1\xef\xa5\x8b\xf5\x96\xb7\x19\x19\x8d\xdb\xd9\xcb\xa5\xa1\x4c\x15\xfe\xec\x35\x3a\x9e\xbe\xf0\xf3\xe7\xdd\xdf\x3c\x7d\x19\x26\x63\x7d\xc2\xd5\xcd\x33\x60\x3c\xad\x00\xa7\xe5\x54\xa4\xae\x25\x5c\xe6\xa6\x02\xbe\x75\xeb\x34\xd6\x3f\x71\x9c\xcb\x53\xd3\xc0\x06\x3f\xb5\xeb\x82\x25\x92\xf8\xd3\x74\x03\x83\xfa\x7a\x4a\x4a\xe4\xe2\xce\xe0\xd4\xd1\xb9\xf8\xcb\x53\xb0\xaa\x58\x70\xe6\xce\x74\xbf\xf6\xee\x66\x15\xa2\xae\xb7\xf3\xb8\xad\x62\x9a\xff\x7c\x59\x22\xa7\xff\xbf\xb5\xd3\xfc\x46\x5c\xfd\x73\xb6\xb6\xe9\x0e\xfe\xee\x7c\x67\x23\x6b\x49\xab\x4f\x44\x42\x27\xbc\xbd\x84\x77\xe0\xf4\x45\x83\x7c\xcc\xf1\x9f\xbf\xf5\x9d\xd3\xba\x0c\xa0\x42\x16\xef\x3a\x3e\x1f\x59\x70\x7e\xf0\xd7\xad\xee\x20\x72\x18\x3e\x33\x1d\x6e\x13\xfb\x17\x18\x28\x7a\x22\xc0\x17\xfb\xfd\x1d\xc1\x31\xc7\x6c\x55\x6e\x8f\xf4\x1d\x9a\xbf\x26\x5a\x73\x13\x5b\x18\xe6\xe9\x56\xeb\x90\x51\x47\x1b\x37\xd2\x71\xf3\x91\x67\xc1\x47\x7e\xcd\x38\x9b\x3d\xcd\xd6\x29\xd7\x2e\x14\x3f\xd6\xf8\x2d\xf2\xfe\xd8\x86\x05\xc6\xd6\xaf\x40\x42\x1e\xd6\xd9\xb9\xd3\x9c\xf8\xe0\x3d\x6b\xe7\x95\xff\xdd\x9f\xcd\x7e\xf1\x98\x77\xbc\xe2\xa9\xf0\x37\x39\xb5\x6e\x9e\xff\x62\xae\x3f\xb2\xed\x5c\xb9\x2a\x6a\xe7\x81\xbe\xf7\xfb\xbf\xd3\x7f\xfa\x73\xd6\x58\x3d\x71\xaf\xc8\xef\xde\xe3\xe3\x1e\xf9\xcd\x3b\x70\x3c\x54\xfe\xe8\x01\xc4\x07\xff\x7b\x77\x04\xc9\xee\xe1\x97\xd5\x06\x7d\xe1\x4a\xe8\xad\xac\x91\x30\xc4\x1d\x60\xd8\x0e\x39\x00\xbb\xfe\x2a\x1d\xe7\x0d\xd7\x40\x64\xde\x20\xbb\x97\xb6\xd8\xf9\xfb\xf9\xee\x14\x42\xa8\xf2\x24\x2f\x4d\xf6\x3e\x2c\x53\x5c\x44\x59\xcf\x58\xac\x47\xd6\xf6\xf5\x14\x4b\xb2\xcb\xe2\x34\xe7\x72\x01\x13\x13\x0b\x9c\x4e\x08\x35\x97\x9d\xd2\x3d\x61\xbb\x4a\xff\xa4\x8f\x03\xff\xdd\x19\x4a\xb0\xd3\x84\x73\x2a\x6e\x4a\x2d\x39\xe3\xc2\xb7\xa5\x05\xd1\xd1\x38\x3f\x9b\xcf\xe5\x7d\x77\x64\x3f\x8c\xbf\x5a\x59\x98\x36\xbd\x38\xd9\x21\x96\x45\x67\xd6\x93\x25\xd9\x3c\x59\x3d\x8f\x27\x6b\xe4\xe4\x64\xd7\x39\x3e\xd9\x4d\x0e\x4f\x76\x9b\xbd\x93\xdd\x65\x76\xb2\xfb\x7c\x3b\x32\xe6\xec\xcc\x27\x95\x5c\x9f\x54\xb3\x75\xd2\x9a\xaf\x27\x6d\xf9\x72\xd2\x9e\xa3\x93\x5a\x5e\x4e\xea\x39\x38\xe9\xc8\xe7\x93\x45\x4e\x7f\x28\xe1\x9c\xd9\xcb\x0c\xbd\x85\xf7\x6a\x2d\x74\x2b\x5f\x1d\x32\xe0\x71\xd1\x5a\xb9\xf3\xa2\x7c\x4a\x5c\xd3\xf4\x19\xae\x92\x05\x09\xb6\x24\x82\x45\x52\xde\xb6\xe9\x5e\x49\x24\xfd\x22\xa5\x17\xb2\xb5\xfc\xe3\x6f\x2b\x05\xe6\xad\x2b\x82\x95\x97\x46\xb8\x20\x33\xfb\x81\x60\x08\xc5\xac\x0a\xe1\xd1\x62\x06\x1f\x23\x95\x79\x27\x0b\x1a\x50\xb0\x01\x7a\x92\x7a\x3a\xd6\xba\xed\x6b\xf1\x7b\xf7\x51\x33\xdc\x9e\xc1\xcb\x55\x2a\x4c\xdd\x77\x71\x0b\xab\xe5\x26\xa9\x9f\xdf\xc2\x4c\xd5\xf2\x29\x3e\x3f\x31\xf0\xf2\xa0\x98\x41\x41\xc9\xd3\xb8\x7f\xc3\xa0\x91\xea\x9d\x3d\x2e\x2f\xd5\xab\xa0\xed\xde\x05\xd7\x3a\x95\xc7\x12\x92\x31\x37\xf9\x8c\x95\x61\xb0\x5b\x7d\x59\xbb\xd1\x19\xa6\x98\x7f\xb8\xf5\xaa\xbb\xa0\x2f\xec\xe9\xf0\x7d\x7f\xc0\xe5\x53\x77\x36\x75\xf9\xe0\xfb\xfc\xf7\xb7\xff\xd6\xff\x27\xe9\x72\x5b\x1a\x81\xd2\xc3\x31\xcf\x13\x19\xa9\x77\x66\x80\x28\x66\xca\xc4\x1b\xea\xe0\xba\x14\x76\x30\x5a\xdc\x30\x9e\xc3\xa9\xf5\x59\x4b\xec\xd5\xba\xc1\x91\xfc\xa7\x1b\x28\x6f\x93\x89\x16\xd3\x6f\x7a\x47\xca\x34\xbc\x67\x41\x43\x91\xc7\x5e\xc3\x92\x60\x32\xeb\x58\x65\xa7\x74\x52\x08\xdd\x77\x74\xf7\x38\xc8\x34\xf4\x09\x1b\x20\x47\x54\x6a\xdd\xe1\x7f\xb6\x3f\x92\x1d\x16\xc5\xfc\xdb\xc2\xd9\xef\x5f\xe6\x01\x94\x3e\xa1\xdb\x30\x0d\x8c\xe8\x72\x2c\x61\x93\xc6\xbc\x17\x05\x30\xa3\x6b\xaa\x13\xc5\xfc\x02\xb1\x15\x8d\xc4\x9f\xe8\xa8\x5c\xa4\x3d\xcf\xf4\x89\x41\x6b\x81\x7a\xd5\x66\xc8\x2f\x3f\x4b\x5b\x93\x7e\xa8\x17\xba\x76\x80\x52\x78\xa6\x15\x4d\x41\x94\xce\xc2\x7e\x29\xcf\x7a\x23\xad\xa7\xaf\xc4\xc8\x1b\x15\xdf\x41\x9f\xa3\x16\x23\x1d\xab\x00\xcc\x2a\xe3\x7d\xca\x8b\xf3\x4b\x3a\x2b\x6f\x4b\xa9\x13\x8a\xa3\x91\xb9\x24\x5e\x09\x5b\x87\x9c\x5b\x18\x67\xd5\xc5\xa8\x0b\x91\x6c\x75\x92\x7f\x6a\x50\xcb\xda\xb3\x3f\xd3\x45\xa6\x94\x9f\x4a\x7a\xa8\x45\xa0\x52\x10\x30\x47\xfa\x46\xc4\x95\xd4\x58\x51\x8e\x0a\xef\xf4\x07\x08\x1c\xf6\x45\x95\x73\xd1\x34\xe3\x8c\x21\x6d\x9c\x83\xc4\x65\xf5\x80\xb5\xfc\xf2\x5e\x66\x52\x69\x61\xa5\xd5\x55\xb8\x40\xaf\xb4\xa4\x4e\xe5\x7f\xea\x6b\x11\x3f\xe0\x24\x51\x58\xbc\xb2\xa1\x75\x25\x03\x3e\xea\x76\x6f\x9e\x7b\x80\xc6\xf8\x82\x32\x7e\x66\x41\x01\xf8\xcd\x17\xfd\xfd\x46\x5a\xb0\x16\xff\xbb\x87\x50\x07\x15\xe4\xb3\x0a\x14\xc3\x5a\xcc\xe5\xf6\xdc\xaf\x35\xea\xe6\x43\x23\x70\x2c\xd0\x86\x8e\x2f\x94\xfd\xc1\xdd\x79\xa2\xc8\x2b\xb3\xc9\x0e\x3f\x95\x5d\x2f\xe5\x42\x78\x77\xbf\x91\x3b\xd5\xdb\xda\x9b\x28\x3a\x70\xdc\x4c\x34\x9c\x7b\x9f\x9d\x31\x7b\x0a\x9d\x8c\xa2\x68\xfd\xf0\x98\x77\xfc\x49\x47\xc8\x4b\x96\x4b\xe0\x3d\xb7\x94\xb9\xcb\xdf\x4c\xb7\xb3\xd8\xe4\x98\x98\xe9\x6f\x77\x1a\xca\x1c\x84\x5a\xb8\xe1\x88\x7f\x3f\x93\xbf\x99\x25\xbd\x39\x88\x5b\x14\x01\x39\xc2\xba\xfd\x20\x0c\x1a\x9e\xf0\x46\xd1\x72\x46\x24\x48\xfb\x71\xca\x45\xde\x28\x5a\xce\x88\x04\x8b\x4d\xc6\xb2\x36\xd2\x90\xcf\x62\xbd\xb1\x7c\x8d\x34\xfc\xb2\xda\xb9\x13\x12\x16\x91\x8d\xd6\x0b\x44\xb2\x9d\x52\x6c\x48\xcb\xcc\x79\x11\x77\x52\x78\xba\xdd\x16\x3b\x21\x72\x09\xed\x1b\x71\x0c\x22\xea\xa6\xa5\x49\xb7\x96\x6e\xd1\x83\x44\x7c\x03\x8a\x06\x2e\x5a\xcc\x0b\x53\xbb\xe1\x01\x6b\x1b\x96\x04\x49\xe4\x50\x6b\x6c\x70\x1e\x02\x31\x71\x6e\x81\x7e\x8a\x2c\x03\xb8\xbb\x7a\xaa\x4a\x63\xe6\x11\xfd\x5f\x87\xe7\xfe\xfe\x6b\xfa\xcc\xbc\x7f\x8e\x48\xf9\xa5\x45\x4b\x2c\xe4\xf0\x1b\xc4\xc4\x60\xcc\xc1\x1e\x73\xef\x2b\x34\x9b\x09\xd6\xa0\x0c\x04\xa9\xef\xba\x98\xde\x82\x8d\x94\xa2\x05\x17\xbe\xb4\xc0\x42\xf2\x22\x72\xd2\x6b\x30\x0b\xbf\xd5\xef\xc8\xc8\x3a\x09\xe7\x6f\x8b\x97\x12\xcb\x1a\x0a\x15\x55\xb3\x54\xc3\x41\x77\xf7\xba\xc1\xec\x6b\x10\x28\x61\x58\xe7\x08\xb3\x5e\x7a\x90\x82\xe2\xe8\xce\x99\x36\x76\x0f\x28\xe5\x18\x2d\x60\x48\x77\x2c\x70\x0e\xaa\x6e\x42\xf6\xc2\x29\xfb\xa7\x2e\xe0\x91\x0b\x86\x1f\x90\x67\x3a\xae\x5b\x3c\x2b\x39\x3d\xe5\xd3\x34\xae\x21\xa3\xd4\xc0\xad\x02\x0a\xa1\x97\x64\x91\xb0\xb8\xe5\xa2\x10\xba\x48\x96\x7c\x8b\x37\xb7\x1f\xf4\x2a\xa3\x0f\xbf\x24\x8e\xd2\x22\x87\xb1\x82\xf2\xd2\xe0\x81\x10\x60\x31\x81\x9b\xf4\x7b\x3f\x4a\xee\x38\x07\xa6\x73\xc2\x0d\x76\x27\x6f\x44\x04\xaa\xba\xcd\x3e\xdf\x88\xde\xcb\x84\xa5\xf3\x6e\x5a\x6b\xfc\x34\x5f\xe8\x8f\xed\xc9\x6a\xf6\xe4\xe2\x64\x78\x70\x0b\xbf\x40\x64\x52\x39\xbb\x0f\x77\xf7\xc8\x56\x19\x99\x57\x1d\x0f\xcc\xc9\x37\xcc\x70\x0e\x93\x93\x95\x52\x56\x1e\x97\x4c\xca\x62\xab\x55\x59\x6a\x39\x51\x33\x8b\x05\xf0\x5f\xe6\xb1\x46\x05\x79\x6c\xfe\x23\x87\xcd\x40\x8f\x87\x98\xa3\xc8\x43\x12\xe9\x2a\x41\x0d\xcb\xe7\xfe\xce\xe1\xd3\x05\xbf\xab\xfb\x41\xce\x67\xfb\xf7\x5f\xa7\x5b\xa3\xf3\xc7\xfb\x3f\x9d\xca\x80\xb7\x28\x21\xb6\x3a\x50\xe4\x03\x26\xb7\xfd\x80\xa5\xaf\x30\x56\x52\xda\x68\xcf\xd9\x92\x46\xcf\x90\x9a\x62\x93\x2c\x91\x10\xe2\xf3\x67\x6c\xb5\x29\x70\xfa\x3e\x9b\xed\xa0\x53\x9d\x8a\x29\x45\xde\xb2\x17\xeb\x47\x78\xb6\xdc\x9f\xd9\x29\x63\x58\x77\xe7\x3a\x4c\x95\x6b\x49\xbb\xbf\xbf\xab\x9f\xe4\xed\xb6\xf4\x8d\xc7\x6c\x77\xd7\x8d\x20\x78\xf6\x43\x89\xb3\x62\xf2\x3a\xfe\x55\x0f\xba\xee\x97\xa1\x4d\x63\x97\xea\xde\x64\x52\xc8\xf0\xcb\xc2\x71\x61\xb7\x8f\x63\x0e\x26\x0e\xfa\x26\x65\x88\xf6\x64\xa1\xee\xe2\xf2\x1a\x79\xa6\xa6\xfc\x76\x21\xf7\xd4\xc2\x57\xcb\x1e\x2b\xd2\x40\xf0\x93\xe7\xd2\x42\xe1\xa4\x9d\xed\xb7\x97\x7c\xfa\x5c\x59\x8c\x85\xa0\x6d\x4a\x98\x94\xed\xdb\x53\x85\x9f\x66\x34\x83\x64\x57\x95\xee\xc0\xf6\x36\xb1\x0c\xa5\x88\x06\x07\x88\x5c\xd6\x2b\x90\x03\x42\x1b\x62\x27\xe9\xb2\x2c\x1f\x29\xc4\xda\xc5\x05\x71\x0c\x2b\x89\x8e\x47\x77\xb0\x62\xa3\xaa\x0b\x16\x78\x1a\x17\x3a\x77\x29\x26\xdc\x45\x9b\x10\xe1\x56\xfa\xe3\xd7\x2f\xb9\x4c\xbb\x36\xfb\x0a\x5a\xa2\x38\x6a\xff\xf4\x69\xd5\x1f\x7e\xc8\x1d\x0b\xad\x4e\xf5\xe4\xc0\xd6\x44\xb1\xdb\x22\x52\x76\xcf\x92\x23\xc9\x03\x84\x2e\x5d\x47\x20\x08\x33\x41\xb8\x2f\x4f\x23\xa9\xe8\x7d\x4a\x15\xe0\xe5\x7c\x70\xac\x3d\xe5\x05\x84\x38\x2f\x32\x22\x98\xf2\x49\x82\x5c\x4f\x4e\xbe\x58\x02\xe5\x94\xca\x8d\xbd\x1e\xc6\x58\x9c\x8f\x20\x9f\xf9\x74\x15\x20\xa7\x56\x1c\x80\x6f\xe9\xab\x9a\xdc\xfb\xeb\xdf\x01\x7b\xa6\xd5\x92\xf6\xd2\x0f\x03\x22\xb3\x9b\x18\xee\xe1\xcc\x7a\xbb\x8e\x30\xec\xa2\xf4\xc6\x6d\xdd\xc8\x80\xbe\x3c\x96\x94\xea\x00\x4d\xb2\xb8\x6a\xd9\x75\xe2\x28\xf7\xcc\x52\xb9\x8f\x23\x0a\x48\xfd\xfe\x04\x7d\x00\xee\x69\x86\xdb\x8e\x0b\xac\xfd\xdf\xea\xa2\x8d\x8c\xd2\x25\xed\x53\xa8\xbf\x7a\x5c\x4d\xf4\x3b\x87\x72\xf4\xd5\x3c\x40\x46\xd1\x3f\x49\x7b\xba\x85\xba\x22\xc1\xa5\x69\xfe\xd3\xcd\xda\xeb\x87\xa7\x5e\x1a\x4d\xa6\x9f\x05\x0a\x82\x39\x95\x01\x7d\x46\x8e\xa8\x20\x35\x69\xd6\xeb\x82\x1d\xe3\x83\xc3\x2f\x65\x30\xd3\xd8\x4d\x21\x50\xf4\xa5\x11\xd1\x19\x3f\x8c\x68\x6a\x07\x49\x56\x62\x4a\xdd\xd5\xb2\xf8\x5f\x1a\x69\x4e\xed\x41\x43\x77\x0f\x30\xdd\x9a\xa7\x3d\xb0\x09\x33\xc9\x01\xa4\x65\x61\x16\xa5\xcb\x62\x5c\xaf\x0e\x93\x18\xee\x91\xb5\x32\x55\xaa\xf6\x58\x71\x30\xd5\x88\xad\x83\xe5\x07\x51\x2e\x9d\xe8\xac\xaa\x44\x37\xc5\xc6\x63\x2b\xc2\x34\xa5\x41\xe2\xb6\x1e\x6e\xca\x7c\x15\x7e\xe6\x3d\x8e\xa2\xb0\x8f\x9e\x9c\xe1\x02\x6f\xff\x36\x12\x95\xff\x5c\xf6\x9a\xc7\x42\x56\xb3\xf3\x4b\x58\x41\xbc\xe0\xab\x14\xe2\x99\xff\xe7\x6d\xfc\xa4\x3c\x7b\xb8\x74\x99\xe3\xef\x66\xc5\x46\x7b\x25\xdf\xad\xca\x83\xd8\xd2\xcc\x83\xbb\xb6\x5a\x03\xa1\xe3\xd5\x2c\x47\x20\x35\x4d\x17\x57\x84\xa1\xb4\xb2\x47\xe3\x45\x14\x00\x59\xce\x4f\x81\xa5\xcc\xf0\xa1\x34\x09\xf2\x69\x16\x39\x6a\x9d\x96\x74\x37\xfb\xb4\x7c\x36\x14\xbe\xcc\x5f\x3e\x54\xfb\x50\x37\x30\xd1\x9b\x84\x7e\x01\xb6\xf2\x6e\xaa\xf4\x86\x92\xd1\xcc\x89\x9e\x3e\xb0\x50\xcd\xaf\xee\xa7\xd6\x92\x7c\x36\x31\x9e\x95\xcd\xaf\x4b\xdf\x93\x9f\xdc\x0b\xa1\x97\xcb\xcf\xfe\xa4\x4e\xfe\x5e\xd4\xd0\xd7\xe9\xb1\x32\xb7\x25\x5d\x27\x97\xf2\x54\x5a\x6f\xbe\x97\x63\xa4\x45\xaf\xd3\xfe\xa2\x5d\x26\x0f\x78\xdb\x70\x2b\xef\x40\x85\x0d\x89\xf6\x09\xa7\x27\xd3\x4e\xd8\x9e\x2c\xf3\x2c\xbd\x64\x64\x20\x56\x19\xab\x69\x7d\x6c\x14\xb5\xa9\xc1\x14\xb0\xe0\x27\xf0\xba\x1a\x95\x37\x1e\x7c\x2d\xde\xdf\xfb\xb8\x1e\xc4\x42\x43\xe2\x17\xa1\x50\xa6\x86\x91\x7c\x29\x4e\xdc\xa2\x72\x9e\xae\xec\x87\xa3\xae\xea\xe0\x18\x0c\x6a\x2a\x36\x2c\x45\xfd\xfe\x74\xb9\xad\xfb\xb6\x67\x70\x27\x9d\x7c\xc7\x61\xe6\xbf\xc3\xe8\xeb\xee\x78\x64\x76\xf5\x45\xb8\x03\xf8\x0d\xde\x52\xa6\x9b\x5b\xf0\x9b\x91\xb3\xfa\xef\xe1\xa1\x21\xb0\x06\x7f\xbb\xf0\xdb\x20\xa4\x45\x4f\xf5\x0c\x13\x86\x45\x3c\x52\x56\x22\x32\x4b\x53\x0e\x4a\xc9\x5c\xe2\x56\x06\x1b\x09\x6f\x1f\xeb\xc1\x23\x46\x35\x6c\x8c\xc4\x86\x95\x64\x7f\x20\x7a\xa0\x10\xd1\x1d\xd6\x6d\xaf\x6e\x6b\xe4\x18\x83\x7d\x7d\x33\xc5\xb9\x3a\x99\x04\x1c\xd0\xbb\xe9\xba\x36\xb6\x4b\x97\xc6\x82\x1a\xeb\xd8\x4f\xc2\x8b\x2b\x81\xa9\x19\xe4\xce\xb5\x80\x98\x06\xc3\x9e\x87\xbb\x8f\xca\xc0\xb6\x20\xdf\x3e\x0c\xd9\xf2\x16\x5c\xdf\xa2\x93\x70\x33\x21\x57\x4d\x29\xc9\x1c\x02\x09\x58\x34\x2a\xfc\x78\x71\x34\xe4\x8e\x40\x49\x85\x19\x8e\xdd\x70\x16\x13\x2e\x7f\x96\x27\x21\x77\x65\xd5\x49\x5c\x2e\x2f\x22\x38\xb2\x83\x80\x6c\xa8\xb5\x00\x3f\x8e\xc8\x6e\x7a\xe7\x14\x2c\x47\xce\xca\x5b\x07\x67\xa7\xbf\x06\x18\x6b\x50\x36\x48\x9e\x4e\x91\xb3\xa9\xc7\xfa\x18\xea\xad\xaa\xfb\x98\xc6\xd6\xb8\x88\xfb\xdb\x57\x8a\x2c\xca\x2c\xd1\xe6\x12\x92\x83\x50\x28\x0f\x36\x03\xcd\x57\xb6\xfc\x0e\x3b\x87\xe6\x31\x86\xf3\xac\x0f\x2d\x18\xcd\x6f\xbc\xf3\xf0\xde\x76\xb7\xe0\x0a\xb3\x25\xcf\x71\x60\xde\xf7\x6b\xd5\xbe\x4b\xd5\x17\x9e\x19\x50\x62\xfc\xdf\xdc\x07\xe5\xac\x10\x3d\x2e\x90\x9a\xa2\xd6\xcd\xca\x6e\x42\x70\xa2\xe4\x77\xab\x39\xef\x44\xc9\x53\xd1\x7b\xc6\xdd\x94\xf4\x1a\x38\x42\x27\xcf\x03\x30\x27\x54\xdb\xc2\x57\xf9\x5d\xc5\x49\x89\x8f\x05\xd2\x95\xaf\x6e\x9f\x6b\xf5\xd9\x91\x07\x3e\x97\x16\x72\x29\xd1\xb7\xe0\xda\xd9\x95\xb2\x61\xf0\x70\x7c\x01\xec\xc0\xa0\xe7\x9d\xa8\xbe\xff\x9d\xf9\x33\x42\x85\xc3\xe6\x42\x08\x95\x1c\xdc\xc5\x41\x9e\x54\xce\xbb\x44\xf2\x67\xf0\xc0\xb6\x13\x9c\x26\xa3\x40\x19\x5f\x61\x50\xfa\xe6\x80\x8a\x6f\x18\x56\xb1\x1d\x8d\x3b\x30\xe6\x23\xdb\x0b\xae\xee\x27\x61\x36\x5b\xc5\xbd\x56\xc5\xcd\x3f\x85\x89\x2a\xdf\xcb\xa4\x1f\x03\xb8\x11\x7f\x13\x8d\x5f\xe8\xde\x75\xda\x0b\xf9\xa6\x5b\xc9\x4d\xaa\x13\x12\x4c\x07\xa1\x5c\xcb\xf0\xc1\xc7\x4f\xfc\x18\x11\x81\xd4\x01\x7a\xeb\xf3\x4b\xdc\x99\xc1\x5f\x0a\x55\xba\x00\x9a\x51\x0c\xf6\xdb\x63\x0a\x51\xdc\xab\x95\x8d\x68\xbe\x3a\x4f\x03\x2e\xa3\x06\x22\x58\x36\x18\xd5\xa2\x15\xef\x85\x66\xc3\x94\x9e\x1d\x85\x3d\x37\xaf\x0b\x9f\xbd\x45\x62\x78\xe4\x84\xbd\x3f\xcb\x59\x41\x58\x2b\x45\x21\xe1\xb3\x62\x1b\x20\x34\xdb\x0b\x87\x9e\xf0\x23\x83\xb9\xac\xff\xc5\x67\xec\xcc\xbd\x8c\x26\x4c\x8e\xd6\x57\xa1\x75\x36\x38\x43\xf6\x8a\x14\x36\x8a\xb2\xce\xcb\xc5\x5e\x6e\x1f\xb6\x09\x9b\x6f\x46\xce\xfc\x1c\x56\xf7\x80\x4a\x2e\xa0\xb2\xb8\x17\x79\x3c\xdf\xb3\x90\x59\x4a\x33\xf3\xfa\x52\xe6\x48\x10\x4f\xe0\x1e\x20\x9a\x80\x43\x7a\x09\xce\xfc\x0e\xb6\x8d\x7d\x7b\xad\x22\x8f\x56\xda\x01\x82\xd6\x88\x49\x14\xb2\x9a\x35\x48\x92\xb6\x5b\xe2\xf9\x11\x2d\x5f\xfc\xb7\xfc\x00\xa0\xac\x85\x67\x0d\xb5\x27\x59\xea\x0d\x58\x7b\x26\x23\x25\xf9\x08\xd6\x51\xab\xc1\xc1\x87\xc3\xc8\xc0\xf6\xbb\xac\x18\x8c\x69\x8e\xb8\xa2\x91\x78\x1e\xd7\x9c\xd2\x79\x09\xcf\x11\x36\xf9\xb3\x86\xbd\x0b\xff\xa9\x0b\xff\x5f\xd5\x1e\xff\x4f\x9c\xe7\xc1\x3d\xb7\x03\xc6\xfe\xca\x60\xc0\xe1\xfe\x47\x77\xd7\x78\x84\xa9\xbb\xe8\x0e\xbb\x3b\xf4\x37\x13\xc6\xfd\xd4\x73\xb8\xe2\x8d\x19\xd7\xb8\xbd\x2e\x8c\x10\x2f\x79\xa1\x72\x78\x31\x09\x33\xee\xa9\xeb\xdf\x95\xd8\xfb\x87\xe2\x16\xbf\x4f\x76\xcf\x27\xbc\x9f\xbf\xbb\x7f\xed\x01\x70\xa9\x05\xc9\x4f\x93\xd7\x9f\x3a\xbe\x6e\xb6\x6e\xef\x5c\xa1\x24\xe1\xf7\x7d\x9f\xd9\xfb\xdc\x47\x90\x4a\x91\x0a\xa2\x3c\x0a\x81\x13\xb5\x68\x35\xe9\xf8\x24\x9c\xfd\x39\x71\x27\xb0\x60\x3b\x61\xb6\xa0\x2c\xb1\x1f\x73\x40\x2f\xbf\x0d\xa5\x17\x95\xbf\xdf\x5e\x96\x68\x71\x53\x31\xdb\x8f\xd8\x40\xa2\x2c\x54\x27\x29\x90\xa2\xe0\xcd\xe5\xfb\xe7\x5e\x5d\x93\xff\x6e\x8c\xd8\x24\x07\x98\xee\x50\x7b\x8b\xf3\xfc\x6a\xb8\x89\xbc\x80\x30\x12\x04\xcd\x40\xa4\x40\xab\x39\x91\x82\x48\xfc\x44\xe8\x90\xc6\x68\x1c\x42\x24\x91\x56\x96\x85\x2c\xde\x6e\x5d\xf0\xa2\x39\xb1\x78\x45\x13\x7c\x25\x15\x20\x11\x13\xef\x98\x60\x7f\x19\x3a\x42\xa0\x80\x01\x48\x41\xa6\xda\xe2\x7c\x6e\xcc\x9c\x9e\xb3\xa6\x63\x30\x34\x7b\x3b\xb7\x32\x37\xb4\xd7\x0d\x59\x07\x1e\x15\xfd\x5e\x1c\x8b\x02\xce\x47\xac\x57\xbb\xdd\xe8\xaf\x53\x7e\x68\x6c\x99\x04\x81\x61\xe7\x75\x55\x20\x0f\x01\xd8\x8b\x96\xdf\x17\x53\xeb\xf7\x9a\x63\xd5\x46\xd6\x7c\x8c\x31\x89\x39\x55\xd7\xc5\xf4\x88\xb3\x6c\x1d\x00\xd2\x07\x43\xae\x12\x40\xea\xdd\xed\xae\x06\x53\x4e\x2c\xd5\x97\x6c\xfb\x3e\x1b\xbf\x5d\xf5\x74\x1c\x6d\x61\xc8\x47\xc2\xd4\x63\xd3\x24\x66\x03\xc3\x58\x4a\xf6\x56\x4d\xd1\x8e\x02\x25\x40\x9a\xb7\xad\x52\x8e\xa9\x80\xc0\xc0\xe8\xbd\x30\x66\x91\x7e\x65\x04\x3d\xff\xea\xdb\x55\x63\xfd\x60\x4d\x9d\xde\x36\x4d\xb2\x1b\x72\x6e\xea\xd1\x32\x35\x25\x6c\xe8\x95\x28\x01\xf3\xde\x3b\x56\x27\xc6\xaa\x75\x2f\xc4\x3f\x42\x8a\x9c\xa8\x73\xae\xd3\xc0\x46\x3c\xb3\x0c\x8a\x59\xa3\x9f\xa6\x24\x38\x16\x12\x30\x6d\x95\x6b\x9c\x9e\x50\x37\x4d\x68\x9b\x90\x8d\x2b\x48\x69\x88\x55\x85\x4b\x35\xde\xc2\xfb\xde\x31\xdb\x39\xfb\x56\xba\xdd\x6d\xd6\xad\x89\xe6\xd8\x4b\x0b\x43\x8e\x14\x58\x0d\x1c\xb3\xa0\xeb\xe2\x0d\x58\x77\xe8\x39\xdb\x2e\x88\xb6\xe9\x25\xa3\x4f\xde\xd5\xbb\x7c\x5e\x63\x1e\x3d\xd3\x0a\x3b\xbc\x5a\x2d\x2e\xda\xed\xcd\x01\xdf\x7c\x5c\x4a\x3b\xdf\x8d\x52\xcf\x9f\x2b\x92\x60\xa8\x9d\xd2\xfb\xef\xe0\xd7\x06\x4b\xd1\x18\xff\xa9\x43\x65\x8b\x93\xbd\x5f\x57\x39\xbd\x47\xbb\x95\xf7\x9d\xfd\x2a\xbb\x51\xee\xd5\x52\x05\x35\x48\xaf\xc4\xfb\xd1\x81\x10\xe6\x02\xed\xbc\x7c\x66\x5c\x28\x1a\x70\x3c\x6a\x03\xdf\xdd\x9e\x0e\x92\xc3\x68\x8e\xe0\xa0\x5e\xcd\x72\x82\xb5\xb1\x97\x4e\xf9\xeb\x03\x76\xde\xd7\x66\x52\x21\xfa\x56\x70\x9c\xbf\xb8\xbb\x26\xbd\x39\xd9\xc3\x03\xa6\xea\x48\xf9\x89\xda\x3b\xc8\x82\x78\xa0\x28\xdf\xd4\x24\xda\xbb\x54\x1d\x12\x9f\x31\x73\xd0\x89\x46\x65\x8c\x34\x0e\x13\xfb\x05\x18\x50\x31\xaa\xbf\xc2\x49\x3e\x24\xc5\x75\x16\x67\xd0\x96\x11\x6f\xca\xae\xc5\x77\xe7\x40\x3e\x11\x35\xc8\x78\xcd\x92\x62\xe9\x7c\x34\x5f\x12\x4c\xf9\x1a\xf8\x12\x7e\x8d\xe4\x2b\xb4\xf4\xae\xf3\xb8\xc1\xe5\x5b\x12\xe1\x25\x73\x10\xb8\xc5\x25\x40\xd3\xd9\x06\x44\x5e\x75\x20\xef\xe3\xb7\x8e\x27\x54\xaa\x6e\xa0\xa4\x8b\x34\x1e\xa4\xb4\x4b\x74\xd0\x34\x49\x9f\xe0\x8d\x74\x0d\x27\x4b\xb9\x24\x07\x91\x57\x7f\x7e\x97\x31\x5d\x2a\xbd\x0d\x76\xab\x49\x6d\xc3\xac\x97\xad\xe8\x69\xc0\x6b\x78\xce\x82\x0e\x3b\x48\x73\xf3\x92\x05\x98\x5a\x8e\x17\xe1\x39\xa3\x83\x06\x3d\xac\x2e\xb0\xe6\x04\x46\x26\x30\xa9\xdc\x75\xb5\xb9\xd4\x86\xab\xda\x32\x88\xba\xf9\x44\x47\x18\x56\x8a\x8d\x8b\xd5\xa3\xee\xde\xbc\x70\x1c\xd0\x73\x98\x3d\x92\x11\x5b\x13\xe9\xaf\xb0\xe1\x55\x6a\xfc\xaa\xb2\x06\xfd\xd5\xe9\x32\xc3\xb6\xb8\x6f\xc4\xaa\xa2\x1b\x50\x3c\xc7\x98\x50\x59\x48\x97\x21\x2b\x75\x7a\x90\x4d\xe8\xf2\xc0\x0b\xd9\x40\x99\x59\x7e\xc1\x99\x50\xae\xcf\xe5\x28\xca\x9d\x01\xce\x28\xa3\xee\xab\xa6\xc7\xc0\xec\x1d\xfc\xb7\xcf\x66\x74\x41\xf5\x3c\x35\x3e\x80\xd6\xd1\x16\x95\xcb\xa9\x9a\x81\xcf\x24\xb5\x4c\xb0\xcf\xf4\x19\x1e\x44\x1c\x52\x54\x05\x6e\x29\xdc\xab\xfc\x69\x3c\xfc\x7d\x0a\xc6\xd8\x19\x75\x6f\xed\x8b\x3a\x75\x3c\x88\x66\xb0\xff\x9c\x2f\x9e\xe8\x39\xe8\xd3\x07\x0f\xee\xab\xe3\xbb\x2b\xee\xf4\xe4\x2f\xc5\x21\xcc\xf7\xc0\xec\x29\x16\x22\xb4\x2f\x39\xe3\xb1\xfc\x73\x47\x52\x57\x85\x7c\x57\x9b\x4b\xa7\xdb\x8a\x6c\x8e\x4b\x45\x0d\xdf\x2d\x6a\x34\x60\x1c\x76\xd1\xa2\x0c\x7e\x33\xe0\xc3\xaf\x9e\x7e\x14\xe2\x3f\x25\xc0\xea\x3f\xee\x4b\x99\xe1\xe8\x89\xbe\xc3\x56\xb5\x74\x3e\xff\xfb\x73\x78\x96\xc7\x67\x8c\x49\x4b\x35\x75\x5d\x79\xa2\xc2\xdf\xdf\x0b\xa4\xc9\x41\xc2\x1f\xf7\x1e\xf0\x3c\x91\xb8\xcb\x7b\x32\x01\xb8\x96\x48\xdc\xb0\x56\x33\x86\x20\x05\xde\x12\x59\xbd\xf6\x64\x8e\xbe\xbb\x75\xec\x91\x88\xc6\x8d\x82\x58\x75\x18\x71\x4d\xb6\x37\x0c\xaf\xaa\xf2\x6b\x2e\xcc\xbc\xe2\x13\x4e\x77\xed\xe4\xe6\x8f\xdb\xc9\xd1\xf4\x23\xdf\xb5\x47\xff\x99\xbd\xfc\x4f\xf2\x9d\x3e\xbc\x3e\xce\x5e\xbd\x6a\xbf\xfc\xe7\x34\xfb\x94\x33\x3d\xdd\x1e\x34\xf5\x89\x67\xca\x74\x02\xd6\xa2\xef\x91\x91\xed\xc0\x7b\xe6\x8a\xdf\xec\x31\x70\x76\x45\x14\xb6\xbf\x7c\x11\x65\x77\xa4\x29\x25\x0c\x6d\x9e\xcd\x03\x24\x49\xec\x03\x52\xee\xdd\x5f\x6a\xda\xb6\xb2\x3a\xe3\xe9\xba\x2f\xde\x4a\x39\x11\x57\xee\xbd\xf8\xbe\xd2\xa0\xe4\x7a\xc2\x3f\x46\x67\x22\x9d\x08\xac\xe2\xaa\x60\x2a\x23\x77\xb8\xa1\x5b\x2f\xea\xb2\x50\x6c\xc4\x28\x72\x55\x7c\xbf\xf4\x28\xb0\x6b\x1e\xae\x18\xf0\x50\x6d\x3c\xfd\x05\xda\xd4\x3b\x3c\x30\x9b\x98\x6e\x4c\xc4\x90\x27\xdb\xeb\x1c\x14\x02\x16\xc7\x3d\x26\xfe\x0b\xae\x49\x33\x6c\x98\x8b\x6e\x83\x1a\xf4\x09\xc0\x55\x58\x8b\x26\xbe\x87\x19\xd6\x98\xd4\x79\x24\x4d\xd2\x4f\xd4\x5b\x5b\x6a\x18\x0a\xf4\xb7\xde\x7c\xe3\x48\x53\xf9\xa7\xdb\xa0\xfe\x0b\x5e\xf7\x70\xd3\x18\xbc\x14\xde\x70\x5d\x37\xa8\xe7\xa5\x2b\xd0\x2f\xb7\x05\xea\x0a\x21\x04\x70\x67\x8d\xa1\x44\xdc\x91\x72\xef\x36\xe1\x56\x26\xff\x35\x7b\x83\x06\x59\xbc\xbe\x52\xa7\x36\x6b\x2d\x05\x43\x3f\xbe\x10\xb8\x0c\xfb\x2b\xca\x85\x5e\x54\x16\x91\xd1\x4f\xa8\xae\xdb\x13\xdf\xa4\xba\x01\xaa\x01\x0b\xa1\x7d\xbe\x85\x62\x03\x7e\x94\x4c\x49\xf0\x3b\xa3\xb0\xd0\x7b\x7b\x5d\x65\x6f\xcd\x36\x07\x7d\x6a\x7c\x21\x16\x04\xa7\x50\xa0\xd4\xfd\x28\x33\xab\xf6\xa9\xb6\xc1\x2a\x5c\x0f\x91\x3a\x36\x56\xb8\x8b\x90\xf2\x14\xce\xd1\x00\x03\xb0\xb9\x02\xfa\x00\x73\xd6\x4c\x72\xff\x21\x33\xbe\x1f\x6a\xb2\x3a\x8e\x94\xf2\xef\xc7\x6a\x60\xca\x8b\x88\x8a\x42\x1a\x40\xb9\x8e\xa9\xc1\x75\xed\xe2\x33\x09\x58\xd4\x2a\x67\x86\x23\xfc\x75\xb4\x42\x66\xff\xeb\x0d\xa9\x36\xcd\x5f\x6e\x11\x6d\xad\xa8\xc2\xdf\xb0\xe6\x07\xfd\xab\xe4\x81\x6b\xe8\xff\xd8\xf6\xd3\x5f\x7f\xee\x7f\xfb\xc7\x6e\xe7\x71\x98\x47\x8e\x11\x84\xbf\x5d\x6c\x35\x43\xd5\xc7\xcc\x96\xa0\x29\xa5\x8b\x7a\x13\x33\xe7\x8b\x21\xdf\xb0\x70\x85\x08\x45\x32\x11\xd1\xf2\xe1\x0d\xc8\x57\x7b\x4f\x3f\x1f\x81\x83\xb1\x94\xd1\xdf\xc4\x28\x48\xf8\x47\x30\x40\x94\x04\x08\xeb\xdf\xff\x70\xd2\xa0\xdf\x7f\xc8\xd3\xff\x40\x0e\x38\xae\x65\x8e\x9f\xff\xe1\x84\x61\xc9\x62\xa5\x4a\xff\x83\x45\xe0\x35\x80\x92\x67\x37\xb9\x3e\x3f\x3e\x02\x45\xae\xed\x95\xc4\x7e\x14\x15\xe5\xd9\xcd\xb0\x59\x25\x7b\x3a\x7f\x01\xf8\x4f\x92\xa4\x1f\xbe\x63\x07\xa3\x50\x24\x71\x1f\x81\x61\x01\x17\x23\x41\x3b\xfc\x31\x0a\x56\xd5\x7d\xf1\xe8\xd4\x65\x47\xcb\x85\xb5\xde\x77\x1a\x78\x0d\x70\x70\x5b\x8e\xdd\xac\x21\xb0\x1a\x56\xf0\x57\x59\xd5\xf5\x60\x58\xcc\x97\xff\x3f\x54\x8f\x57\xe8\x90\xe0\x7d\x96\x97\x26\x8a\xf6\xbc\xfb\xed\x84\x54\x6a\x28\x00\xf8\x44\x27\x03\x6f\xce\x55\x81\xec\xdf\x3a\x6c\xd4\xa1\x46\x13\xeb\x6b\x0b\x7e\x7a\x24\x60\x98\x50\x13\x4e\xa4\xb5\x36\xdd\x67\x10\x39\x73\x7a\x99\x66\x63\xa6\x15\xaa\xd3\x35\x49\x6f\x33\x72\x72\x21\xf4\x32\x77\xa9\x3e\x7f\xad\xd9\x04\xb5\x72\xba\xea\x40\x4f\xe0\x70\x44\xda\x98\x76\x84\x90\x12\x63\x0b\x4a\xbb\x2a\x56\x41\x38\x46\x2d\xbe\x79\x5e\xc4\x61\xb3\x65\x45\x98\xc1\x04\xa8\xd2\x71\xc0\xf6\x80\x03\x3c\xdb\x23\xd9\x82\x82\x14\x60\x59\xfd\x5e\xda\x08\x7b\x04\x41\x6e\x54\xa8\x0b\xdd\x02\x86\x11\xc8\x3b\x7b\x41\x8a\xa2\x1f\x6f\x07\xc5\x44\x08\x52\x40\x78\x47\x55\xa6\x85\xc8\xc3\x67\x9b\x0f\x04\xcd\x52\x06\xae\xe2\x67\x71\x7e\xe5\x03\x0f\xd2\xe3\x4d\x8b\xf6\x0e\xd3\x70\x05\x39\x46\x01\x7f\x56\x1a\x95\x9b\xca\x6d\x23\xe6\xd7\xe0\xde\xf4\x7c\x54\x0a\xba\x29\x68\x7b\xf0\xa6\xcb\xbe\x83\x3b\xca\x49\xc1\xd3\x90\xa6\x46\x6c\x48\x28\xa8\xbd\xac\x98\x01\x35\xd8\x83\x38\x97\xe2\xab\xf0\xef\x91\x60\xd4\x8a\x01\xa6\x5c\x31\x1e\x72\x7a\x66\x49\x29\x6e\x45\x88\xcc\x29\x8f\xe4\xc1\x30\x62\xf8\x22\xa0\x95\xb6\x8b\x8e\x06\x7b\x50\x35\xe9\x60\x7b\x41\x88\xae\x8e\x59\x22\xff\x27\x11\x88\x79\x8c\x5f\xfe\x04\xa2\x2d\xc8\x32\x5f\xbc\xd4\xed\xaf\x0a\x5a\x6a\xbf\x8c\x1e\x0d\xa0\xa0\x1f\xb4\x74\x49\x30\xa8\x22\x24\x8c\xb7\x7c\xb6\x44\x40\xcb\xc0\x71\x4b\xfa\x0c\x4e\xea\x23\x06\x72\xf1\x78\xc3\x23\x18\x6f\xb2\x58\x92\x9c\x86\x34\x65\x1e\x97\x8a\xec\x12\x5d\x5a\x2f\x1a\xad\x20\x49\x09\x62\x48\xa2\x90\xa6\xa2\xa3\x40\xb1\x74\xaf\x5a\x62\xad\x10\x59\x17\x74\x8c\xc5\xa2\x90\xc0\x9e\x2c\x11\x18\x32\xda\x5d\xf9\xd4\x85\x74\x97\x05\x0e\xf4\xae\xba\x9f\xa9\x1b\x0a\xab\xab\xe9\x06\x28\xb4\xd6\xb2\x52\x23\x67\xa2\xdf\x24\x88\x18\x85\x31\x46\x00\x79\x95\xff\xbe\xd0\xc9\x8a\x01\xbf\x9c\x78\x9e\xb0\x8b\x19\xc3\x1c\x9f\xae\x4a\xef\x34\xbc\x5e\xd1\x29\x25\x10\xda\x65\x85\x43\x3b\x83\xb4\xd4\xac\xe0\xa1\xd9\xa7\xaf\x54\x95\xa1\x6a\x9d\xf6\xc1\xf4\x37\xd4\x35\x38\x64\x15\x78\xcb\x0c\x02\xb7\x24\x2f\xef\x39\xa4\x29\x05\x42\x51\x0f\xa5\x45\x2e\xb5\x04\xac\x00\x9b\x08\x56\x45\x75\x2e\x9f\xd5\x8e\x1c\x9e\x42\x90\xdd\x2d\xe0\xd1\xac\x07\xc7\x5f\x6d\x61\x02\x64\x69\x74\x05\x52\x58\x2b\x17\x33\xca\x1e\x36\x09\xc1\x56\x05\x18\x00\x3c\xda\x19\xad\x95\x10\x5d\x00\x57\x5f\x84\x46\x1f\xe8\xd0\x9a\x21\xbd\x26\x91\x9d\xd8\x78\x81\x21\x1d\x7c\xcb\x30\x26\xdf\x0b\x21\xc0\x72\x17\xaa\x05\xaa\x96\x36\x01\x25\xb7\x59\xc5\xde\xc6\x44\x69\x92\xa4\xd6\xfb\xf5\x69\xab\x07\x9e\x58\x8a\xdf\x34\x18\x2b\x46\x09\x9d\x66\xcf\x1d\x18\xa2\x7c\x1b\x1e\x9c\xe0\xd9\x09\xd2\x1d\x19\xb3\x60\x90\x6a\x34\x61\x59\x49\xf2\x5c\x7b\x86\x00\x53\x75\x94\x6e\xce\xa5\xdd\xaa\xd4\x86\x85\x75\x91\x99\xdd\xd5\xc4\x8c\x78\xcd\x13\x8b\x4e\xae\x09\x91\x73\xc5\x6d\x82\x55\x56\xfa\xfb\x28\x41\xa1\xda\x31\x5a\xbd\x2e\x09\x9b\x11\x8d\x60\x08\x3d\x63\xf5\x2c\xbe\x0d\xf8\x59\xec\xe5\x30\x6b\x51\xa4\xdc\xbc\x28\xc7\x80\xfa\x82\x4c\x03\xff\x0d\x85\xb2\x59\x87\x66\xe4\x78\x88\xd2\x9b\x40\xf2\x81\x78\xeb\xc9\x26\xc9\x02\xae\x0c\x74\x1e\x8b\x53\x89\x58\x41\x22\x1d\x3e\x8c\x22\x9b\xd2\x05\xce\x12\x1d\x9e\x8b\x62\x22\x17\xd6\x6c\xb8\x72\xea\x79\x04\x45\x2c\x81\xa6\x55\x6b\xe6\x07\x36\xeb\x43\xf4\x30\x8a\x44\xe8\x82\x3d\x29\x04\x2d\x56\x6b\x18\xcc\xf1\xc9\x3b\x92\xa1\xe4\xb3\x8e\x55\x34\xe0\x63\xde\xa4\xbd\xd3\x32\xe8\xed\x2e\x8c\xb2\x60\xed\x6e\x70\x9b\x91\x19\xaf\x60\x42\x86\xa0\x26\x29\x55\xcc\x46\xaf\x87\xc7\x6c\x75\x55\xa0\x5f\x0b\xf3\x81\x1a\x18\x91\x46\x4f\x3a\xd9\x5a\x3f\x23\x9d\x9e\x6e\x6a\x50\x17\x78\xa4\x18\xf6\x59\x0b\xcc\x98\x1a\x2b\xe3\x2d\x98\x0c\x9c\x03\x0d\x72\x0a\xa4\x27\x66\xe3\x71\x60\xfb\x62\x6f\x69\x0e\x5b\x3c\xe8\xee\xc0\x8b\xc5\x71\xb0\x85\xdf\x29\x02\x8c\xb2\xab\xd2\xe3\x93\xcd\x10\x3b\x93\x40\xd7\x83\x53\x2c\x69\x27\xc2\xf4\x7a\xf0\x30\x02\x96\x32\x83\x32\x65\xd1\x74\xa7\xc7\xd2\x45\xaf\xc9\x80\x30\x6f\x64\x98\x82\xab\x78\x6d\x04\x54\xa1\x09\x93\x47\x3c\x7c\x15\x8b\x1e\x7a\x32\x8e\xac\x6c\x62\x1e\x02\x0e\xa9\x72\x31\xcc\xf0\x86\x16\x2c\x4e\x96\x29\xaa\xba\x11\x8c\xbb\xe8\x67\x2f\x22\x94\xb1\x28\x2d\x71\x7a\xb1\x21\xe7\xc5\x8e\x82\xdf\xd0\x9e\x23\x18\x88\x12\xb6\x37\xca\xf6\x3a\xd9\x21\x59\x8a\x66\x02\x5b\x14\x4a\x2d\xf7\x38\xa7\x72\x09\x80\x09\x22\xab\x0c\xa0\xb6\xd7\x91\x0e\x27\x57\x84\xa6\xca\xbb\x00\xb8\x5b\xbb\x35\x70\xa2\x89\x24\x1f\x46\xed\xe2\xf1\x2f\x38\x76\x25\x55\x35\xc2\xd5\x7e\x16\xac\xeb\xf2\xe8\xb0\x83\xba\xa6\xc9\xfe\x8c\x92\xa8\x51\xfe\xd0\xe6\x1f\xcf\x85\xa8\x10\x10\xba\x33\x06\x75\x28\x1b\x51\x01\x41\x2c\xb0\xad\x51\xfd\x33\x01\xb5\x5c\xbd\xc9\x71\x8b\xfe\x8f\x03\x8f\x27\x63\x65\xc7\x31\xc0\xe2\xee\xe7\xa7\x96\xe2\x68\x4b\x2e\x8a\xd3\xd5\x0b\x54\xed\x78\xa2\x52\x8d\x16\x45\x81\xb7\x54\xbb\xf8\x9e\xcc\xd8\xe7\xde\x8d\xa4\x6a\x34\xd6\x0a\x93\x07\x0a\x29\x80\x07\xbd\xa5\x0e\xd7\xd9\x49\xf6\x72\x18\x18\x41\xf8\xec\x37\xf4\x5c\x38\xa4\xf1\x14\xd5\x9f\xc1\x09\x1e\xc4\x42\x80\x8e\xf7\x1c\xea\xd4\xaa\x23\x4f\x1d\x63\xfa\x2d\x21\x78\x83\x43\xf1\x39\x8c\x1e\xeb\xd6\xa5\x1a\x20\x89\x16\xd6\xf2\x02\x1a\x3c\x2d\xe0\x23\xbd\x21\x44\x7a\x2c\x00\xcd\x07\x9c\x8e\xb4\x96\xc9\x8e\x33\x9c\x75\x84\x2b\x99\x40\x0d\x07\x5d\xe2\x4a\xd4\xe4\x95\xca\x70\xf3\x40\x14\xd1\x1f\x14\x65\xf7\x71\x5c\xef\xd5\x41\x06\xd9\x9f\xfd\xa2\x6c\x5e\x0a\xd6\xa9\xac\xa5\x7a\x72\x35\xaa\xc2\xd0\x8f\x77\xdb\x3c\xa9\x07\xf3\x09\x44\x48\x22\xf5\xa0\x71\x71\x1d\xa9\x43\x49\x93\x8b\x6a\x78\x6f\x98\xd7\x3a\x40\xb2\x2f\x32\xb5\xca\x2f\xb6\x91\x94\x28\x61\x94\x76\x4c\x2f\x13\x6c\xa0\x8a\x64\x53\x7e\x61\xb9\x9d\x6a\x5b\x0d\x7f\x1c\x38\xf9\xc5\x26\x4e\xd3\x6b\x46\xba\x8a\xf2\xc8\x05\x6d\x4b\x6a\x49\xb0\xf3\xac\xe0\x45\x76\x7b\x6a\xed\x54\x8b\xc2\x3e\x51\x6d\x0e\xd3\x4c\x78\xea\xb2\x1e\x76\x91\x18\x2c\xe5\xae\x97\xca\x83\x71\x36\xba\x21\x02\x79\xce\xff\xee\xef\x86\x2e\xfe\x84\xd6\xfa\xf5\x25\xef\x4c\x1b\x28\x84\x1b\x8d\x65\x11\x85\x25\x5c\xc3\x35\xfd\x36\xee\x61\x7e\x2b\xf9\x88\xbd\xc2\x4e\xd0\xe9\xf2\xd1\x82\x54\x9a\xaa\xda\x9c\xac\x06\x3e\x7d\x45\x28\x4f\xcb\x03\x1a\x38\x1e\x33\xae\x78\x99\x7d\xfb\x8f\x87\x97\xaa\x97\x94\x14\x35\x99\xdf\x16\x4d\xba\x1d\x40\xda\xfe\xed\xcc\x55\xf9\xd7\xec\x7a\xe3\x17\x80\xa2\x4c\x98\x07\x92\xab\x7f\x8b\x39\xc7\xc2\x65\x78\xe2\x77\xee\x8a\x34\x64\x18\xae\x1d\xa6\x16\xb2\xc1\x1f\x52\xe7\xaf\x05\xb2\x89\x49\x58\xb9\x59\x62\xa1\xdc\x59\xe6\x39\x0c\x60\x6f\xc7\xdc\x7b\x35\x88\x30\x7c\xc1\xb0\xca\x89\xe7\x14\x59\x9a\xd5\x10\x73\x23\x23\xb6\x1d\x22\x57\xfc\xfd\xc8\x35\xfd\x81\x61\x95\x2a\xc5\x45\x95\x04\x09\x8c\x57\x83\x2d\xd7\xe5\xc0\xb5\x4a\x69\xef\xaf\x6b\x31\x3f\xea\xee\x35\x77\xb0\x84\xb5\x9a\xe3\xba\x5f\x38\x17\x27\xed\xeb\x7b\x77\xdb\xde\xde\xb1\xd2\xf1\x15\x75\xa8\xec\x9e\x93\x93\xee\xe5\xa6\x4c\x65\x9a\x1b\x73\xc3\x38\x04\xac\x5f\x37\xe2\x0e\x84\xf8\xb5\xdc\x99\xfa\x37\xe5\x56\xf1\x9d\x30\x63\x5b\xa8\x76\x93\x72\x3b\x98\x13\x08\x43\x82\x18\xd6\xac\x30\x31\x3d\x86\x6b\x30\xd0\xcf\x5a\x72\x15\x40\x15\xc9\xd7\xca\xbb\xf1\x3e\xb7\xe0\xd2\x55\x58\x60\x7d\x01\x06\x88\xc6\xe7\x3e\x71\xb5\x60\x6e\x60\x00\x37\xf1\x98\xc0\xb9\x51\xc3\x0d\x32\xda\xaf\x92\xc3\xb8\xbf\x45\x5f\x26\x3f\xf9\x7f\x1a\x20\xfd\x3a\x1c\x19\x44\x50\x03\x69\xdc\xd0\xcc\xa7\x7d\xdc\x1b\x12\x44\x92\x29\xb2\x6f\x56\xbf\xb5\x30\xc1\xd0\x8f\x05\xb1\x2d\xa5\x17\x8a\x96\x22\x98\x6a\x64\xc0\x4e\xc5\x88\xc5\xb4\x24\xc9\x82\xe9\xe0\xb7\xfa\xa8\xc3\xbe\xa2\x51\xf0\x51\x20\xde\x79\xb2\xb9\x23\x29\x7a\xe2\x8f\xac\x63\x08\xbf\xf8\x78\x27\x24\x9d\xf7\xb9\x69\x24\x2e\xfe\xa3\x1f\x29\x20\xa4\x72\xd4\xf5\xdf\x44\x8c\x45\x3d\xe4\x59\xb8\x1e\x29\x1c\x1d\x34\xc0\x4a\xf4\x9c\xfd\x7a\xfc\x39\x94\xb5\x5a\x07\x33\x11\xb6\x87\x54\x45\xf2\xb4\x7a\xec\x90\x99\x49\x81\xa3\x8e\xcd\xb8\x74\x82\xdd\x11\x81\xf8\x34\x25\x17\x3d\x8e\xf2\x5d\x7d\x6c\x27\x89\xe8\x8f\x7e\xf9\x81\x9b\xe4\x19\xaf\xa2\x4e\xe6\x2a\x12\x77\x11\x69\xcd\x87\x9b\x12\x89\xbf\x45\xe5\x1d\xb5\xe5\x71\xbf\x66\x67\xa1\x8e\x3a\x87\xc6\x67\xcf\x61\x48\x7f\x2f\xf8\xaf\xf4\xbf\xb2\x0f\xb1\x8d\xe0\xbb\x2d\xaf\xcc\x77\xb6\xd2\x58\x24\xa9\xdf\x11\x6a\xa9\x6a\x35\x76\x53\x26\x90\x3b\xd9\x47\xf9\xd6\xc0\x48\x2c\xb3\x06\x53\xe4\x27\x32\x8f\x96\xd2\xb4\xcb\xb5\x0b\xeb\x18\x3c\x74\x00\x29\x2b\xe8\x44\x9b\x6f\x4d\xe3\x9b\xb6\x0d\xd0\xfc\xfa\xed\xbe\x81\x6d\x79\x3d\x6f\x76\x5f\x03\x90\x0c\xf3\xc9\x0c\xeb\x79\x3b\x47\x95\x6d\x8a\xa5\x62\xef\x85\xd3\x8f\xc5\x4d\x00\x2b\x1b\xca\x0b\x9b\xbb\x5f\xf0\xf3\x71\x14\x19\x8d\x40\x77\x0c\x3e\x02\xe8\xaa\x1a\xb4\x6f\xcc\x71\x3d\x31\xec\x34\x15\x67\x0c\x6e\x2a\xbd\xef\x22\x77\x45\x26\xb1\xa8\x0d\x0c\xb2\x9a\x5f\x08\xed\x8b\x46\xc6\x48\xac\xc6\xb8\xcd\x8e\x81\x74\x5c\x24\xd5\x49\x99\x9b\x99\xae\xa5\x6e\x28\xec\xa9\xaf\xde\xb9\xcc\x41\xc1\x81\x45\x91\x35\x38\xa7\x0c\x81\xac\x31\x34\xff\x99\x57\x8d\x9b\x48\x03\x0b\x09\xf3\x2e\x3a\x73\x67\x86\x5e\xa4\xb8\x9c\x56\xb0\xd9\x08\x19\xb2\xd8\x7b\xd4\x11\xee\xa8\x85\x71\xba\x0a\x29\x75\xa2\xa4\xe3\x1a\x36\x78\x6b\x2a\x9c\xdd\xa8\xb3\xb4\x39\x4d\x15\xbe\x44\x4e\x90\x80\x99\x6f\x0e\xbe\x46\x66\x45\x13\x89\xce\xfb\xce\x06\xae\xc0\x24\xc5\x6d\x9c\xf9\x94\xbf\xae\x3c\x41\x66\xd4\xdd\x0a\x94\xf8\xce\x05\x0a\xaf\xa4\x8a\x2f\xfb\x85\x2e\x68\x39\x6c\x8a\xfa\xa2\x97\x49\x2e\xf1\x34\xae\x7c\xc2\x2b\x4e\xd9\x60\xd8\xe9\xf8\x96\x3d\xba\x8b\x92\x9e\x10\x95\xf4\xc4\xc8\x6a\x02\xa5\xc0\x57\xb6\x41\xf5\xb6\xb7\xfb\x0c\xd9\xa4\x54\x15\x17\x0f\x77\x5d\xb6\x8e\xaa\x86\xad\xc4\xb8\xdd\x27\xd6\x6d\x49\x26\xc9\xb8\x37\xca\xa7\x4d\x8a\xab\xa1\x7e\xe3\xeb\xc3\x7a\xb9\xf2\xde\xaa\x89\xf3\x4f\x24\x8e\x83\xfe\x26\x1b\xbb\x28\xb1\xc0\xcc\x67\x4e\x82\x84\x14\x39\x55\xf0\x97\x5a\x41\x31\x14\xdc\x61\x1c\xf8\x2e\xad\xca\xb5\x42\x15\xa1\x67\xc4\x0b\x62\x19\xb4\x78\xfd\x05\xfb\xd7\xc6\x9d\xe2\xe0\x2f\x71\xce\x87\x68\x91\xdc\xfc\x7a\x66\x85\x0d\x05\xd5\x3e\x05\xe0\x26\x0b\xa3\x27\x23\x02\x7d\xb1\xe0\x30\xd7\x9a\x32\x4f\x08\x16\xfb\x86\xb5\x6f\xd8\x9e\x54\x0f\xcf\x39\xe3\xd4\xd4\xa2\x33\x2b\xcf\xae\x02\x81\xe6\x13\xd6\x2b\x5a\x1e\x50\x50\xb2\x23\x52\xb1\x8c\xd3\xb3\x41\x62\xd3\x9d\xaf\xd2\xe3\x8a\xef\x06\xcf\xac\xc9\x3f\xb2\x6f\x22\x72\x69\x52\x51\xf7\x99\xf2\x1a\x3c\xd1\x0e\xc7\x42\x9f\xac\x24\xa0\xdb\x5b\x15\x21\x4b\xd6\xdb\xa0\x9e\xfe\xcf\xdc\x08\x6a\x70\x53\x05\xff\x26\x1a\x8e\xc7\x0b\x08\x28\x57\x7c\x59\x06\x34\xaf\xee\x1b\x2a\xc3\x2c\x2a\xd7\x83\x79\x87\xe8\x35\xab\xfd\xf7\xd7\x06\x0b\x16\xe9\x09\xe5\x9d\x83\x7c\x8b\xd8\x1a\x8a\x38\x8d\xcd\x8b\x44\x4f\xf1\x09\xed\x7d\xe5\x22\xa0\x27\xcd\x32\xa4\x70\xb0\x96\xfb\xbb\xd3\xd0\x1c\x99\x4a\x8f\x4a\xbe\xfd\x40\xd1\x82\x3d\x0b\x7b\x2f\x7b\x59\x8e\x4b\x17\xad\x34\xc4\x30\xc9\x90\xa2\x7a\xf9\x5d\x79\x9b\xcc\x06\x4b\x6f\x35\x0b\xc2\x2e\x7a\x52\xfd\x26\x46\xa0\xcb\x49\x9e\xe1\x14\xe6\xd3\xa4\xcc\xdf\xac\xe5\xa1\x5b\xe1\xbb\x62\xbb\x6f\x24\x04\x4c\xb5\xb7\x4b\xd0\x11\x1d\x4e\x09\x2e\xd3\x82\x9c\xbd\xa4\x2b\xcd\xfa\x6e\x4b\x60\x13\x84\x1d\x6e\x08\x6c\xdc\xa0\x45\x69\x82\xb8\x62\xaf\x1c\x9a\xff\xba\x97\x0b\x95\xd4\x0a\x06\x3a\x5c\x2b\x83\x69\x17\x80\xf4\x98\x84\x58\x31\x31\x93\xb1\x2a\x5a\xd1\xac\xe0\x66\x96\x4b\x3f\xf6\xe9\xf0\x20\x45\x88\xf9\x7c\x75\xbb\xad\xf1\x6c\x2e\x2b\x4c\xc8\xdb\x19\xb9\xbf\xbc\x85\x0e\x94\x95\xbc\x6c\xc3\xdf\xbd\x80\xd4\xb8\x08\xa6\xc6\xd5\x48\x34\x4a\x75\x5e\xb3\xdf\x3c\x89\x4d\xaa\xde\x2f\xa6\xf7\xa6\xc9\xfb\xca\xfd\x96\xcf\x73\xeb\xdd\x73\x79\xf7\x5c\xdc\x3d\x67\x3d\xef\xf5\xf9\x2f\x07\x58\x5e\x68\x5f\x40\x6c\x95\x10\xa3\x84\xe0\x1a\xf6\x46\x75\x33\xd3\xa3\xe4\xa2\x20\x0d\x0f\x7b\x88\x86\x28\x32\x0b\x39\x74\x18\x86\xc3\x1c\x26\x91\xa4\x3a\x35\x94\x22\xf0\x6e\xff\xc9\xf1\xd1\xef\x3f\xc3\x67\x99\xfa\x26\x15\xc6\x81\xd2\x3d\xa8\xcf\x0a\x0c\x4c\xe2\xeb\xf3\x39\x05\x16\x5d\x0d\xef\xe5\x2d\xbb\x94\xfe\x12\x90\xb1\xc0\x8a\xb9\x8e\xa2\x72\xe1\x79\x13\x93\x32\x69\xc3\x02\x6f\xf5\x24\x84\x9a\xf6\xfb\x13\x0e\xee\x08\x0b\xc6\x55\x52\x54\xcc\xfc\x3a\x9a\x0e\x70\x09\x71\xc4\x4e\xe9\x5e\x77\xf9\x9b\x06\x7f\x23\x3a\xd9\x6b\x3d\xd1\xf4\xf7\x8d\xc2\x32\x9e\xa2\x5b\x6b\x9b\xc5\xaf\x03\x14\x3d\x20\x27\xef\x41\x01\x6a\x99\xae\xab\xc9\xe3\x22\xfd\xb3\xb1\xf0\x09\xeb\x5c\xca\xfd\x09\xeb\xfd\x79\x2b\x89\xe6\x0f\xa4\xa1\x0f\x06\x28\x73\x11\x27\xba\xd8\x35\x7e\x5a\x88\x59\xf6\x11\xb8\x33\x9a\x60\xab\x45\xaa\xdc\x72\xd6\xa9\xff\x7a\x9e\xc6\x4d\x90\x0f\x3e\x43\x18\x41\x00\x7c\x06\x9c\xa6\xa1\x7f\xca\xc8\xfc\x83\x1b\xe2\x97\xb1\x23\xc4\xe2\x95\xbe\x80\xf6\x96\x55\x1f\xcf\x6d\x01\x3b\x28\x44\x95\x51\xf7\xc3\xf8\xa3\x4b\x04\x91\x01\x3f\x0b\x7c\x06\x16\x18\x3e\x75\xed\xb7\xb3\x21\x82\xec\xe1\x9b\xe8\x42\x98\xea\xc3\x6c\x79\x6a\x0f\xfe\x4e\xcb\xc9\xe9\xe4\x7a\x72\x3b\xfd\x79\x7f\xe7\x5d\x35\x39\x7a\x37\xd1\xe1\xef\xc9\x7d\xe6\x55\x72\x2e\xf3\xe2\x11\x5c\x6f\xe7\x7d\x0c\x6a\xea\x70\x02\x25\xee\x60\x2d\x39\x0d\xf4\x52\x46\x7d\xe3\xcf\x62\x3e\x76\xef\x98\xe6\xed\xc2\xfb\x07\x11\x45\xbb\xe3\x1f\xfb\x9b\x6e\xf1\x44\xdb\x11\x0b\xc8\x4b\xdf\xd5\x47\xb5\x77\x55\x8a\xa9\x65\xfc\xbc\x7d\x3c\xfa\x81\xe6\xc9\x4a\x84\x64\x42\x81\x9d\x7d\xfd\xa9\x98\x5a\x86\xd6\xc4\xea\x9e\x9c\x06\xe2\xa8\xaa\xbc\xb2\xe0\xe9\x17\x50\x44\x14\x15\xa1\x4e\xf7\x6a\x3d\xbc\x53\xe7\xc7\xa6\x82\xea\xa4\x24\x35\xd5\x7d\x5d\x3b\xe4\xe3\x89\xc2\xae\x68\x45\x66\x1a\xbb\xfb\xe1\x54\x07\xa1\xce\xaf\x35\x2a\xbf\x51\xf2\x1a\x10\xb5\x94\x49\x8e\x5a\x5e\x5a\xa7\xa2\x5f\xe0\xa0\x75\xf5\x5c\x9a\x5a\xf9\x20\x12\xb3\x1e\x94\xda\xc4\x6c\xa8\x40\xa2\x4e\xde\xa7\xad\xf0\xec\xb6\x20\x7a\xa7\x02\xe9\x9b\xa7\xec\x60\x5f\x7a\x1e\xb9\xb3\xae\xef\xf8\xd1\x26\x7b\x6b\xc3\xc2\x87\x65\xb9\x67\x39\x0c\xdd\x47\x18\xb9\x34\xe3\x85\x4d\x88\x04\xb3\x39\x1d\x02\x3e\x6e\xc1\x66\x47\x37\x6d\x82\xa7\xe6\x3c\x1b\xfa\xc7\x3f\xcc\x0a\x3f\xed\x6e\x41\x4d\x2e\x4a\x7c\xa3\x77\xe3\xb1\x68\x37\x7e\xfa\x75\x59\xc2\x8e\x6e\xcb\x68\x16\xfe\xe5\x4b\x8b\x7f\x47\xe5\x5e\xd3\xeb\x05\x42\xb4\x5c\x27\xc0\xf0\xc4\x76\x9c\x5d\x60\x64\x33\x3c\x25\x32\x6f\x57\xfe\x66\x7d\x75\x2e\x53\xdc\xdd\x6a\x9f\x6f\x6a\x3c\x1b\x0a\xfa\x44\x60\xaa\x02\x19\xfd\xc8\x52\xab\x0e\x9d\x5b\xac\xf2\x00\x4c\xce\x16\x2a\x5b\x84\x83\x31\x33\x99\x7e\x87\x00\x27\xda\x2e\x6d\x48\x0e\x2f\x52\x97\x3e\x19\x45\x0d\xb9\x93\xdf\xe5\x10\xdc\x68\xa2\xb2\xab\x74\x07\xad\xe6\x19\x6d\x7c\xa5\xec\x50\x0a\x63\x8c\xb0\x9e\xdf\x62\xa4\x16\x29\xe7\xc4\xcc\x20\x37\x14\xa0\xa4\x85\x18\x5c\xa7\x0a\xa9\x43\xf1\x2b\x8d\x2d\x2d\xc9\xb0\xc2\x4e\xe4\x5b\x88\xb6\xc6\x42\x0f\x78\x38\x11\xc6\xf6\x61\xbb\xc9\xb2\x1a\xcc\xf8\xa0\xdb\x3a\xd0\xbe\x6d\x57\x8a\x10\xa0\xf5\x1f\x80\xc2\xac\x0f\x09\x74\xd1\x17\xb4\xb6\x0e\x3f\xc3\x4e\x20\x54\x8b\x2e\x57\x3a\x10\xaf\x85\x19\x09\x10\x48\x9c\x9b\xd1\xbe\xeb\x3b\x45\xf7\xb7\x52\xff\x39\xb7\x5d\x90\xc2\x28\x6a\x3d\x0b\x4c\xc1\x2c\x79\x15\xa5\x7a\x9b\x1a\x44\xc8\x5e\x7d\xa3\xd2\xef\xf9\x6c\x06\x4b\xd3\xcf\x39\x16\x77\x2e\x9b\x5f\x38\xd5\xb5\xa3\x13\xa7\xc6\x3c\xe4\x1b\xf1\x71\x15\x1e\x05\x94\x8f\x73\x1d\x2b\x9b\xf2\x66\x6a\xd3\xee\x96\xc4\xec\xd3\xeb\x93\x9a\xd9\x36\x3b\x8f\x21\x0f\xd2\x50\x22\x1e\xc7\x56\x97\xb6\xc9\xe7\xb3\xa1\xc1\x0f\x3b\x1c\x25\x9a\x76\xa9\xfa\x59\xc1\x20\xf9\x71\x66\x6f\xe8\x03\xe8\x5e\x6e\x9d\xa6\xdd\x7b\x2f\xf6\xd3\x41\x6a\xb8\x0f\x21\xf6\x01\xb9\x32\xd2\x8e\x4f\x59\x35\x06\xbf\x43\x40\xd4\x0e\xbb\x95\x13\x0e\xa1\x86\xb4\xbd\x54\x6f\x0f\xf3\xac\xbd\x12\xcc\xc5\x09\x65\xde\xa0\xb4\x8d\x89\x97\x43\x0c\x96\x80\xec\xb3\x8e\x95\x4d\x79\x23\x8d\x9c\xeb\xe7\x55\xab\x60\xa1\x38\xdf\x74\xe5\x6a\x61\x9a\x10\x6e\x53\x57\x04\xee\x64\x22\x4b\x98\x39\x4f\x3d\x44\x85\x66\x45\xdd\x58\xfb\x5d\x92\x23\x53\x19\xd4\x5d\x09\xd8\x8f\x78\xc8\x06\x08\xfe\x68\xea\xcc\xa5\xec\x94\x19\x4c\x7a\xcf\xe1\x1c\xdb\xd0\x02\x7e\x4f\x7f\xd4\xc3\xc0\x8d\xb5\x79\x57\x35\x71\x5f\x6d\x9e\xf4\x18\xbf\xd5\xc4\x60\x2b\x70\xaa\x32\xb3\x60\x30\x84\x76\x6d\xa1\x68\x41\x6a\xc8\x61\x6a\x40\x78\x0e\x73\x8a\x71\x1e\xf6\x67\x3e\x7d\x0f\xb8\x10\x39\xd8\xf3\x55\x54\xaf\xcc\xa6\x07\xaa\x8c\x44\xbe\x65\x5c\x0a\x2b\xcc\x1a\x1e\xdb\x1a\xd3\x44\x66\xa2\xc8\xd8\x16\x9a\xae\xcc\x9d\x39\x39\x6a\xd8\xdd\x43\xa8\x19\x73\x4a\xa3\x69\x2c\x23\x61\x68\xcc\x0b\x61\x6b\xcc\x81\x30\x37\xe6\x20\xb0\x38\xf4\x9a\x5c\x9e\xfe\xaa\x97\x89\x9b\x6c\x62\x50\x3b\x72\x4a\x42\x1c\xbc\xa9\x29\x37\xc1\x4e\xb4\xd5\xf2\x49\x1a\x5e\x00\xab\x43\x8b\x17\x46\xbd\x50\xb0\xc9\x51\x42\x4b\xc4\xd5\xa2\xbd\x24\x01\xa4\x9f\x8d\x42\xa9\xf8\xcb\x9d\x97\xea\xe7\xfd\x54\x33\x6a\x51\xd4\x1e\xab\x56\x5b\xa3\xf5\xcf\x91\x84\x3f\x9b\x2f\xb9\x69\xb0\xb9\xd7\x1b\xb1\x2b\x44\x3a\x83\xd2\xe8\xb7\x97\x2c\xe2\x32\xed\xa9\x3f\xda\xca\xf2\xc5\xaa\x3d\xff\xf2\x13\x48\x30\x64\xd8\x48\xdc\x29\x89\x84\x9d\x9f\xbe\xb7\xb2\xc6\xe4\xee\x3a\x5f\x99\xb4\x77\x67\xd2\x0f\x9f\xb5\x44\x51\x99\x82\x81\x56\xc1\x40\xcb\xd2\x04\xa9\x49\x72\x23\x6d\x02\xb9\xc9\x79\xa3\xda\x25\x50\x11\xe0\x33\xea\x0f\xec\x49\xed\xf1\xab\x94\x2c\x85\x43\xe9\x92\x99\x69\x18\x95\xf2\x96\x36\xfd\x55\x1b\xe6\xa2\xfd\xf4\xea\x3e\xd4\x31\x3a\x55\x35\xeb\x6d\x8e\x29\x14\xd8\x60\x03\x3d\x96\x1f\x6a\x33\x9d\xf3\x96\xe2\xf6\x4a\x78\x2e\x0f\x50\x28\x61\x8a\x6f\xc6\xc4\x67\x14\x4f\xba\xb7\x2b\xc7\xbe\x03\x15\x99\x1f\xc9\x49\xcc\x96\xe7\xe6\x0d\x9f\xf8\x5a\x1e\x98\xea\xac\x13\x11\x25\x48\xcd\x26\x98\x57\x36\x7d\x56\x1b\xe5\xd6\xcc\x29\x77\xdb\xf2\x48\xeb\x12\x18\xa6\xff\xd3\xac\x0e\x07\xa9\x4d\xd5\x5c\x6b\x5b\x29\xbc\x70\xb2\xc1\x1e\x9f\xbc\xa9\x55\xfd\xc1\xa1\xe9\x19\x5e\xa9\x87\x57\x29\x05\xe9\x61\x80\xa9\x58\x84\x63\xc2\x76\x0e\x4a\x62\x44\xb1\xcb\x82\xd7\x16\x9c\x06\xe4\xe0\x05\x62\xc4\x8b\x29\xf3\x8a\x2a\xc7\xb7\x3d\x9f\x4c\x68\xc0\xfa\xec\x94\xb9\x82\x39\x6a\xe9\x34\x8e\x95\xb4\x5d\x81\xa7\x55\xe8\x08\x76\xe6\x49\xfb\x57\xbf\x2c\xe2\xa9\xab\xab\x39\x3b\x77\xa7\x16\xd4\x40\x90\xf0\xcc\xec\xfc\x7c\xf5\x09\xa3\x2f\x05\xd8\xdb\x3f\x45\x84\x9e\xfb\x61\xca\xf5\xd7\xd4\x7f\x1b\x08\xd3\xa1\x5b\xdc\x9f\xaa\x34\xea\xfc\x41\xb4\x04\x6a\x4e\xbe\x13\x4c\x86\xc9\x98\xe4\xf8\x55\xde\x64\x9e\xda\x1c\x94\x96\xf9\xd3\xd5\x17\x19\xfb\xfd\x2c\xe7\x69\xb2\x74\xe2\x25\xe6\xab\x79\x9f\x50\x48\xdb\x11\x8e\x01\x12\x76\xab\xb2\xf9\x3f\xe5\x6f\x75\xcd\xf3\x7d\x97\x3c\xe5\xd0\x7f\x56\xa1\x34\xc9\xcb\x20\xd6\x36\xd7\x6c\xf2\x2b\x31\xb7\x09\x55\xeb\x45\x34\x55\xfa\xcb\xbe\x4f\x2a\x97\xf9\xc2\x63\x70\xe3\x35\xc4\xa6\xf9\xf7\xb9\xe1\x05\xd5\xe0\x27\x5b\x3b\xf3\xf3\x2d\xf7\x27\xf6\x4f\xba\x5e\xeb\x4b\x87\x14\x7c\x03\xa9\x0f\xf8\x38\xad\x48\xaa\x3a\xa3\xb1\x77\xff\x78\x5e\x03\xed\x16\x9b\x76\xb6\xf8\x01\x7f\xcb\x63\xe7\xd8\x43\x3c\x3c\x4d\xa4\x33\xc0\x2b\x64\x5f\xb2\xa6\x58\x4a\x5f\xfa\xe2\xf9\xfa\x04\x3c\x71\x19\x00\x32\x87\xe8\xc6\xbc\x5a\x3c\x35\x2b\xf4\xf2\x4c\x07\x11\x38\x28\x08\xff\x96\x8f\xf3\x1f\x79\xe0\xa1\xbc\x99\x7f\x63\x8e\x1a\xd3\xce\x30\x0a\xbd\x37\x19\x76\xd3\xd9\xc7\xd5\x59\x09\x7f\x62\xa2\xc6\x42\x96\x16\xf3\xcd\x09\x1c\x21\xdb\xcc\x45\x0c\xb3\x6d\xf7\x89\xb7\x25\x6f\x07\xe1\xfd\x4d\xf5\x00\x5b\x03\xd8\x4d\x85\x4e\x07\xc8\x9a\xf9\x8e\x29\xc6\xb3\xe3\x2e\x01\xd1\x62\xf2\x93\x95\xf1\xc0\x00\x52\x00\x5c\xfd\xa5\x88\x3f\x91\x25\x61\x44\x54\x56\x47\x01\x46\x97\xa2\x53\x37\x91\x95\x14\x25\xcd\x21\x08\xa4\x40\x6d\x56\x59\x1f\x33\x28\xc2\x2a\xa4\x0c\xb5\x10\xb3\x0d\x48\x2f\x25\x30\x20\x38\xc5\x89\x27\x73\x01\x11\x51\x12\xf3\xfe\x96\xf0\xb3\x1e\xbe\x68\xc1\xcc\x4c\xf9\x2e\x8f\xa7\xaa\x5d\x0e\x38\xbd\x5f\x17\x03\x87\x1e\x25\x86\x1e\x2d\xbe\xef\xd4\xcd\x1a\x0d\x38\xf1\x11\x2c\x57\xec\xe9\x1c\x1c\x9e\x3d\x8d\x53\x3e\x4d\x52\xe3\xa1\x90\x5a\x67\xaa\x1d\x74\xfc\xc2\x1e\x2c\xe6\xa5\xa3\x92\x6f\x57\xa3\xc2\xa2\xb0\xf8\x8a\x8f\xd3\xfa\xd4\x3b\xd0\x6a\xd7\xcc\xe7\x31\x2f\x5f\xef\xfa\x24\x3a\xd0\x83\x3f\x05\x52\xbd\x5e\xb6\x3c\xf2\xf4\x46\x73\x7c\xdd\xfb\x20\x87\xeb\xca\x88\xbb\x6f\x64\x35\x67\x8c\x2a\xa0\xd3\x63\x30\x70\xa5\xe5\xa1\x6d\xe0\x17\xbf\x78\xe4\x97\xda\xd6\x59\xf0\xe3\xaa\xbe\x5e\xee\xb7\xd2\x0c\xd2\x7a\xbb\x53\xa8\xdd\x6a\x13\x37\x2d\x98\xd4\x2b\x72\x81\x8e\xdd\x4b\xec\x45\x57\x48\x79\x9a\xd3\x57\xb9\xa7\x6b\x5b\x5a\x1d\x35\x82\x0b\xdb\x22\x98\xea\xb6\x6a\xbb\xc8\xdb\xb6\xa2\x98\xda\x06\x3c\xdc\x84\x1a\xd4\xac\x94\x3f\xc8\xb9\x2b\x1e\xf2\x06\x93\xca\xfc\x14\x63\x6d\xc2\x00\x4c\x0c\x56\xfb\x38\x6a\x3c\xbb\x80\x5d\x29\x4c\x9f\x83\xd9\xbe\x00\xb2\xd2\x7d\x98\xe9\x7e\x4d\xa1\xfc\x51\xfb\xcc\x8f\xc7\x21\x02\x4f\x71\x10\x55\xf5\x1e\x10\xec\x4d\xdc\xec\x64\x28\x71\x87\x05\xc5\x4f\xeb\xae\x2c\xc0\xe9\x3f\x2d\xce\xbd\xbc\x89\x01\xbf\xe8\x83\x42\xff\xb6\x35\xcb\x68\x77\x7f\x07\xc2\x2a\xa7\x70\xba\x25\x00\x08\x2f\x77\x14\x55\x0e\xab\x61\xa5\x2f\xc0\xa2\x71\xd6\xa3\x76\x8f\x0d\x92\xbb\xba\x3b\x62\xb7\x82\xaa\x50\xea\x65\xe6\xf9\x59\xc5\x0e\x6a\xfa\xde\x34\xc9\xcb\x8e\x95\x63\xb1\x69\x31\xda\x97\x31\x91\x65\xde\xed\xa3\x9e\x8d\xac\xbb\x9b\xc7\x93\x59\xd7\x4e\xb0\xeb\x79\x72\x8f\x20\x63\x68\x78\x6c\xdb\xae\xa0\x21\x62\xe6\x7c\x4c\x3c\x9e\x5b\xd5\x02\x2f\x6b\xa7\x78\x41\x7d\x1d\xde\x95\xa2\xda\xd6\x72\x9f\x3b\xb3\x0d\xe8\x66\x65\x93\x99\xda\x9c\x17\xbc\x8f\x8e\xa4\xad\x7e\xd7\xe0\xc7\x93\x49\x2d\xc1\x4a\xe7\x71\xf7\x23\x83\xdd\x24\x75\xb9\x62\x53\xcf\x99\x29\x53\x03\xa6\xea\xee\xb6\x3a\x1b\xa1\x17\xa5\xd5\x17\x32\x24\x85\x34\xb0\x76\xc4\xc9\xeb\x1d\x16\x93\x5d\x48\x11\x49\x95\x8e\xef\x7c\x1e\xf7\x4d\x06\xa8\x1b\x12\x2f\x7a\xaa\x9f\x63\xbb\xbd\x28\xae\x0e\xb0\x01\x52\x8a\x5e\x2c\x80\xc5\x5b\x17\x6b\xb3\xf4\x16\x6e\x98\x3a\x7d\x32\x9d\xcd\xcf\x25\x8d\x98\x4d\x5b\x5d\x60\x97\xc7\xdd\x6c\xe1\xf6\xd2\x3c\xc9\xa4\xa3\x30\x0a\x8f\xef\x62\xe1\xa4\x6b\xb5\x21\xd0\x35\x97\xf9\x6e\x46\x3d\x1a\x70\x93\x59\x88\xe8\xdc\xe2\xc0\x0e\xd9\x40\x07\x26\x7a\xfd\x91\xed\xa2\x3b\xa4\x97\x83\xcb\x1f\x38\x54\x93\xa3\x25\xa9\x13\xcb\xc9\xe2\x44\xed\xe8\x60\x3c\x92\x8f\x93\xd7\x23\xc7\x8e\x8f\xb6\xbf\x96\x63\xd9\xda\x4b\x7d\x52\x1d\x04\xec\x25\x65\x6b\x1e\xd9\x18\x67\x45\xae\x7d\xe3\x6e\xdb\xb5\x55\x23\x5f\xd9\x6b\x40\xbe\xaa\x4a\x3b\xca\x3d\x91\xcb\x51\x0d\x55\xa8\x5e\x8a\xa6\x4a\x8f\x6f\xa2\x10\x9a\x5d\xd9\xeb\xea\x59\xd1\xb5\x2f\x4f\x14\xb8\x8a\xd9\x7c\x89\xa3\xf9\xde\x00\xe7\x71\x29\x0c\xc6\xec\x48\xbd\xdd\x5f\x6c\x14\xf1\x38\x9a\x08\x65\x4e\x1b\x19\x9e\xd1\x18\xbc\x96\xda\x99\x9d\x86\xe1\xb3\xa7\x46\xb2\x33\xda\x1f\xcf\x8d\x38\xe9\x09\xc7\x95\x0b\x00\xc7\x1e\x04\x03\xaa\x64\xe4\x51\x73\x74\x9c\x64\xc1\xae\x75\xce\x02\x2c\x84\xc1\x07\x5c\x2d\xcf\xb5\x4e\xf6\xc1\xfe\x4c\x95\xd9\xf6\xc1\x98\x6b\x4d\xf0\x71\xfd\x24\xf7\xb4\xb1\x73\x99\x38\xd7\x7f\x97\xdb\x16\x3e\x04\x95\x2f\x73\x0b\x3d\x00\xec\x87\xc9\xdd\xb4\x9c\x80\xfb\x9f\x28\x9c\xd3\xf2\xa9\x4d\x15\x98\x8a\x9a\x31\x89\xdf\xf9\x98\xae\x49\x31\x51\xa5\x51\x70\x7d\x8e\x13\x55\xc1\xa2\x13\x8f\x90\xb8\xea\xf3\xb2\x50\xee\x58\x0b\xa9\x59\x75\x48\x8e\x3c\x78\xd2\xf3\xda\x14\x04\x99\xb0\x5b\x02\x76\x42\x52\x1e\x31\x96\x76\x76\x4b\xb8\x68\x73\x66\xb5\x6b\x04\x20\x61\x99\x8c\xe0\x80\x83\x42\xc0\x8e\x1a\x89\x1b\x70\xf6\xc5\x5f\x6e\x45\x76\xdc\x1e\xc0\x00\xc4\x9c\xb6\x3c\x64\x53\x3b\x67\x84\x47\x08\xa8\x74\x5d\x3d\x5d\x59\x94\x09\x1e\x9d\xb9\xa9\xbc\xdf\xd5\xe2\xeb\x17\xb1\x3f\x74\x37\x6a\x8b\xe7\x02\x55\xdd\x7b\xdb\xb0\x38\xf5\xbd\x78\xec\xcd\x8f\x8d\x0b\x77\x48\x14\x15\xd1\x2e\x72\xa5\x70\xbf\xf5\xdf\x11\xe3\xd8\xb5\xdb\x74\xc3\xf5\xc2\x69\x84\xad\xe0\xc8\x0e\xe1\xad\xcd\x8a\x29\x89\xf5\xb5\xd8\x61\xe2\x05\x4e\x9e\x51\xd7\x5c\x8f\x12\x60\xa5\x5f\xad\x22\x4e\x1d\x2d\xfa\x74\x45\x0d\xce\x0c\xb9\xfc\xe4\x36\xc0\x8c\x91\x7a\xcb\xa1\xb8\x9a\x61\x6f\xa6\xd2\x5d\xc3\xdd\x0c\x0e\x3c\xde\xfb\x71\x11\xe1\x89\xb6\xb7\xcf\x44\x93\xba\x3a\x6c\xff\xd3\x6c\x46\x4b\xd8\x67\x22\x05\x9e\x55\x04\x69\xe6\xb8\x85\x42\xc7\x62\xf3\xf5\xca\xf4\xcd\x11\x9c\xb7\x32\xb0\xb7\x28\x99\xf8\x53\xa3\xaa\x3b\xb6\x60\xf1\xa6\xad\x7f\xf4\x29\x03\x47\xf6\x9a\x92\x54\x43\xd8\xca\xe4\xef\x72\x0b\x51\x91\x4c\x95\x79\x40\xb9\xc1\xbf\xb0\xdc\x12\xb6\x2f\xcc\x54\xf9\x21\x0b\x0c\x96\x8d\x5c\xd1\x95\xdb\x64\x4f\xb2\x0e\x3b\xb9\xea\x79\xb7\x32\x36\xff\xb9\xc7\xbe\xc7\x78\xab\xdd\x5d\x9d\x4b\xc8\x4d\xf4\xfb\x9c\xf6\x2e\xb3\x69\xb9\xa3\xe9\x33\xa6\x42\x93\xc1\x5e\x7d\x61\xfd\xe3\x23\x9b\x86\x34\x41\x18\x9d\x2b\x3a\xa1\xfd\x9d\x31\xe1\xb3\x97\x02\x67\x16\x01\x94\x1f\x73\xd5\x0f\xdb\x6d\x91\xc7\xeb\x99\x15\x6c\xa6\x41\x4d\xda\x08\xd1\x53\xdf\x41\xc0\x65\xb2\xaf\x06\xa3\x74\xae\xe3\xcc\x24\xed\x1a\x25\x49\xd1\x7f\xa8\x21\xf6\x5d\x4f\xa1\x2e\x49\x1b\x81\x10\xd5\xb8\x69\x0a\xb8\x10\xdd\x26\x00\x04\x68\x54\x6e\x2c\x1f\x7c\x22\x04\x50\x6e\x4c\x41\x08\x9e\x1b\xb2\xb5\x6c\x08\xd8\xdd\x19\x0c\xc6\xb8\xa8\xc1\xbb\x5b\x75\x15\x24\x2d\xa4\xc9\x21\xad\x37\x1e\xb8\xd6\x86\xb6\xbe\xd4\x63\x22\xfa\x19\x30\x0b\x0c\xd1\x2e\x36\x0a\x74\xaf\x0a\x0b\xcb\x99\x9e\x31\x59\x9a\x9e\x6c\xae\x4d\xf9\xed\x90\x45\x7b\x67\x67\xd5\x1e\xf0\xe0\x9c\xa0\x10\xec\xc8\x77\x8a\x56\x86\xdb\x30\xc3\x92\x5e\x48\x92\xd8\x80\x1a\x54\x09\x98\x9d\x3b\x08\xc7\xae\xc6\xc1\x04\xc7\x4b\x5e\xf6\xd3\xf5\x27\x67\x15\xc2\x67\xb1\x46\x66\x88\x19\xb2\xff\xb8\x66\x89\x27\xe8\x1a\x87\xaa\xdd\x38\xa1\x12\x5c\x1f\xee\x8f\xb1\xcb\xfc\x70\x1b\x0d\x47\xf0\xc6\x67\x43\x26\xc8\xac\x0c\x3a\x34\xc8\x18\x4b\x1e\x85\x45\x43\xce\x19\x29\xb7\xc2\x4c\x03\x47\x56\x31\x32\x1c\x24\x3f\x1f\x1f\x64\x06\x6c\x11\x94\x23\xec\xac\x05\xd3\xb4\xf0\xa1\x55\xb6\xd0\xa5\x2a\x10\x1b\x90\x15\x1d\x24\x7d\xcb\xd4\xde\x0d\x85\xe8\x41\x5d\x14\xca\xdc\x40\x53\x49\xc5\x82\xf6\x15\x53\x49\x41\x27\x05\xff\xce\x7c\xea\xfd\x20\x8b\xb0\xd3\xf5\xf3\x3c\xd6\x8f\x3c\xb3\x9b\x7a\x6f\x6b\x87\x02\xd0\x16\xb8\x14\x33\x20\xae\x01\x61\x10\x40\xab\xfa\xe6\xe7\x64\xae\x9d\xaa\x6c\x6c\x08\x6f\xc7\x46\x37\xca\x88\x4c\xdf\x4e\xb4\xdb\xc9\x7f\x48\x3e\xec\xad\x3e\xd6\xc2\xa0\x69\x63\xa0\xf8\x40\x79\xdd\x93\x08\x77\x9e\x01\xb0\xbb\xf8\x93\x4d\x0a\x17\xf6\xf9\x87\x86\x01\x71\xc0\xbd\x48\xd7\x65\xb4\x8b\x20\x4a\x6d\xfc\xdb\x29\x60\xca\x2f\xfc\x95\x7e\x3d\x94\xd1\xcd\x70\x40\xb8\xb6\xb4\xb1\x3c\x82\x7a\x17\x8b\xad\xdd\xaa\xef\x53\x71\x31\x1a\xbc\xaf\x3c\x4b\xe4\x3d\x09\xa9\xad\x3d\x6f\xbf\x92\xe7\xfd\x0e\xde\x7c\x27\x83\x23\x5b\x9a\x84\x58\x0d\xbd\xe4\xb8\x7b\x97\x3d\xba\xde\xb9\x60\x55\x1d\xb9\x4b\xb3\xc1\x0a\x05\xa9\x90\x85\xb5\xc4\x03\x9a\xbc\x77\x81\x20\x48\xc4\xa2\x36\x4b\x5a\xe2\x5b\x88\x0d\xa5\xb8\x9e\x3a\xc1\x8b\x7c\x2b\x9f\x1f\xd3\x5b\xe9\x13\xc2\x4e\x8c\x45\x1c\xf0\x0a\x70\xbc\x5b\xd6\xc7\x5e\xa2\x3c\xba\x98\x63\x3b\x1c\x04\x69\xd9\x2b\xad\x19\xd6\xae\xd9\x3e\x67\x6d\x4b\x3b\x76\x1c\xf4\x7d\x37\x85\x8e\x16\x5b\x24\x43\x43\x4b\x2f\x32\xab\x56\x1c\x68\xa0\x41\x3f\x6a\xcb\xd3\xae\x63\x47\x3b\xc8\xc0\x8b\x85\xb5\x8b\xdf\x64\x57\x9d\x2b\xab\x04\xca\x66\x69\x41\xcb\x67\x1a\x7e\x50\x71\x59\x3c\x99\xf5\x51\x66\x41\xb4\x4a\x19\x35\x6d\x3c\x9f\xda\x1f\xb1\xf8\x76\x8d\x4b\xa3\x6e\x9f\xa4\x8c\x52\x93\x73\xd8\xe7\x9d\x57\x5a\xfb\x24\xbf\x8a\xab\xeb\xac\xb4\x14\xc9\x80\xf0\xdb\x19\x7b\x16\x84\x8c\x04\x18\x07\x49\xbf\xaf\x1d\x62\x33\x60\xd6\x14\x81\x1f\xa8\xb3\x25\x11\x65\x59\x6a\x60\x40\x30\xc5\xcb\x93\x47\x56\xc3\x52\x68\xcd\x16\x3c\x83\x59\x0a\x6d\x9b\x9f\x78\x74\xad\x68\x6b\xac\x61\x56\x47\xad\xd5\x8b\xdb\xe5\xe3\x02\xb4\xec\xb5\x61\xc2\xf7\xe4\x2d\x8c\x61\x7b\xd0\x26\x53\x55\xb8\x36\x77\xda\xef\x84\xda\x56\x6f\xab\x0f\xcd\x2f\xd1\x17\x4b\xc7\x82\xaa\x07\x42\x0b\xbd\x69\xa8\xac\xa1\x16\x89\x31\xa0\x07\xb6\xf8\x18\x46\x3e\x31\x16\x3b\x0b\x93\xe2\x32\x6a\x96\xcd\x29\x99\xfd\xca\x48\x80\x36\x49\x35\x68\x32\xb8\x54\x11\xee\x7e\x33\x59\xd2\xf1\xf8\xc6\x7a\xa4\x77\xae\x6d\xde\xe2\xa4\x9a\xc6\xc1\x46\xdf\xeb\xc3\xcd\x50\x54\x5b\x46\x4a\x19\x81\xd1\xd1\xe2\x54\xcf\xb2\x7a\xb8\x59\x65\xae\xaa\x1e\x99\x51\x54\x46\x39\x0c\xe1\x71\xec\x06\xdd\xad\x25\x32\xc0\x48\x12\x89\xcc\x80\x00\xed\x01\x44\xd2\xf6\x48\xc5\x1e\xf1\xb8\xe2\x27\x10\x9e\xd6\x9c\x6e\x07\x13\x81\xd7\x99\x94\x59\xce\x71\xd2\xc7\x97\x0f\x6c\xa8\x2f\x03\x85\x22\x78\x09\x34\x82\x9a\xc5\x63\x03\x8d\xaa\x69\xbf\x46\x81\x83\x7a\x66\x2d\xcd\xeb\x49\x16\xcc\x00\x84\xd3\x03\x1d\x73\x61\xdd\x48\x89\x60\x5b\x3a\xb4\xc3\x0f\x83\xaf\x44\x02\x73\xa9\x57\xfe\x1b\xd5\x79\x58\x6e\xdf\x51\x4b\xc2\x0d\xca\x97\xb8\xd7\x26\x1c\x21\x26\x7f\x36\x16\x6e\x22\x80\x94\xf4\xfc\x89\xa0\x2e\x8d\x32\x28\x5f\xb6\xd4\x90\x49\xb7\xcc\xca\x0a\xad\x4c\x31\x8f\x84\x82\xc8\x4c\x00\xdd\xda\xa3\x46\x6e\x39\x43\xd7\x14\xf2\xd2\x36\x62\xd7\x3e\xa1\x03\x05\x38\x77\xc9\x28\x17\xd0\x2e\x5a\xc3\x88\x27\xfe\xad\x7c\x17\x50\x60\x6f\xf6\x25\x8c\xaa\x2d\xf9\x45\x1d\x55\x5a\x5f\xf3\xc9\x1f\xec\x4b\xd7\xfb\xfc\xad\x99\xdf\x23\xae\x48\x1c\x75\xbd\xf8\x96\xc6\x0f\x74\x68\x96\x9b\x11\x47\x93\x0f\x45\x12\x25\x94\x80\x79\xc8\x39\x5b\x56\xa2\x3c\x13\x20\xa7\x56\xc9\x2d\x07\x74\x6e\xf8\xb8\xa8\x85\xc5\x63\x5b\xc6\xbf\x39\xc0\x3c\x12\xe1\xd0\x3b\x4a\xf0\x55\x95\x8f\x14\xf0\x60\x5f\xfa\x61\x95\xb3\xf6\xcf\x68\xc8\xa1\x56\x90\x7f\x51\x5d\x09\x3c\x54\x75\xef\x26\x10\x1c\x6d\xd3\xc9\x10\x6f\x33\xd5\x7e\x6f\xa6\x5a\x4b\x94\x68\xd3\x4c\x45\x9f\x58\x60\x28\x98\x96\x5b\x0c\x45\x5e\xd5\x65\xc2\xa7\xea\x02\x02\xbb\xdb\xdb\x35\x99\xc9\x7b\xb8\x05\xae\xcc\xdf\x7f\xf1\xcb\xa5\x9f\xe6\x85\xe4\x90\x16\xf7\xa6\xaa\xfa\xc4\x44\x83\x06\xf1\x15\xbb\x9d\xc9\x89\xb7\xee\xc9\x73\xba\x9f\x6c\xa2\xe7\x27\x13\x8f\xbd\x4a\x4f\xa4\x9b\xdd\xc2\x91\x67\x15\xa3\xdb\x48\xef\x23\xd3\xb7\x6d\xe1\x78\x67\xc2\x87\xa8\xd8\x9d\xe9\x80\x20\x83\x3d\xc3\xad\x5b\xe9\x2a\xf3\x89\x49\x8e\xe4\x5f\xfe\x01\xb5\xca\x1e\xb9\x82\xc7\x33\x89\x46\x12\x9b\xa4\x2b\x39\x91\xe0\x04\x3c\x98\x75\xb7\x74\x01\xde\x25\x27\x86\x5d\xed\x29\x6f\xf9\xad\xc0\x61\x00\x27\x60\xb7\x86\xfb\xe6\xc3\x74\x4b\x59\x33\xfe\xf2\xb2\xd8\x6e\xc1\x4e\x08\xf8\x84\x5a\xf3\x6c\xa6\x12\xed\x7c\xa7\xe3\xc1\x3a\xa3\x85\x4e\x86\x25\xfb\xbe\xfd\xbe\xdf\xb2\xc3\xe4\x7b\xd6\x78\xa6\x49\xa2\x0e\xc4\x63\x99\x06\x18\x80\xc1\x33\xcb\x4d\x41\xc6\xb3\x71\xf2\x74\x3e\x64\x74\xe0\x97\x2d\x52\xe9\x57\xdc\xfb\x4c\x88\xc8\x85\x92\x23\xc5\x00\xe0\xd2\xeb\x5a\x62\xdb\x1c\xba\x58\xa9\xa1\x7a\x7b\xc7\x14\xf2\x9c\xb6\x55\xe3\x52\xfc\xaa\x66\x81\xad\xcb\xd6\x5f\xdb\x2d\xc4\xc3\xa5\x57\x52\x3f\x57\x77\x54\xd6\x0f\x6f\xc1\x5d\x52\x25\x75\xce\x5a\x40\x7f\xb4\xb3\xaf\x4a\xbd\xde\x23\x87\x03\xed\x98\x7a\xb8\x35\xb1\xbe\x13\x77\xb0\xd6\xbc\x07\xe5\x49\x85\xf1\x36\x74\xaf\x22\xc9\x35\x7e\x2c\x8b\x26\x2a\xab\x0b\x84\x1e\xe0\x78\xaa\xf5\x3f\x49\x8c\x04\x15\xb6\x28\x53\xb1\xeb\xb6\x10\x78\x64\x6d\xe7\x4e\x4a\xd6\x70\xd5\x9e\x73\xc4\x01\x51\xd2\x60\xfd\xa4\xae\xe9\x07\x3a\xe4\x9a\x9a\x93\xae\xcb\x87\x88\x0e\x68\x36\xce\x17\xf4\xb8\x06\x40\xdc\x0a\x2d\x8c\x79\xe1\x08\xc8\xc7\xdc\x02\x34\x66\x14\xbc\x5c\x8d\x38\x04\xbb\x4c\xb1\x03\x58\x5a\x9d\x8e\x30\xb8\x8b\xe6\xab\x02\x36\x19\xdd\x26\x10\x1c\x2a\x7b\xa1\xba\x34\xd0\x01\x52\xd6\x1a\x40\xd8\x97\x1f\x36\xff\xc0\x2c\xcc\x70\x8d\xd5\x17\x60\xb7\xed\x4b\x49\x0a\x67\x5d\x7c\xc3\xad\x21\x78\x9c\xa6\x9e\x59\xaa\x8b\xab\x4f\x33\x19\xfa\x79\x5d\xe0\xce\x26\x10\x94\xac\x77\xa1\xfb\x94\xad\xad\xa8\x50\x43\x39\x5d\xf4\x60\xd6\x74\x15\x06\xd8\x58\x3e\x5d\x9c\x36\x54\x65\x5c\x9f\x14\x0c\x06\x0c\x9c\xb4\x61\xf1\x56\x6a\x12\x0a\x5f\xf1\x73\x2f\x1e\xbd\x52\x08\x45\xd6\x50\x5f\x3e\x10\xe3\x05\x91\x2c\xde\xce\xb2\xa8\x9a\x65\x9a\xfc\xf5\x48\x4e\xd3\x9c\x2c\x6b\x26\xfe\xe8\x52\xd5\x6e\xe0\x90\x6b\xd1\xfb\xae\xcb\xb7\xd3\xb1\xb9\x05\x81\xc3\x43\xa0\x94\x79\x3c\xce\x0b\x38\x75\x14\xd4\x5f\xc4\xcf\xa9\xb7\x46\x67\xaa\xf7\x71\x2e\xa5\x9a\x10\x2d\xaa\x9e\x8b\x52\x8b\xb7\xc9\xc9\xdd\x68\x49\x89\x1e\x5a\x3f\x74\xac\xe6\x55\x32\xb9\xfb\x51\xc9\x0f\x7c\xad\x44\xd5\x5e\x91\x8d\x19\x8e\x15\x18\x79\xcc\xda\xb8\x55\xd8\xe0\x7b\x65\x58\x11\x92\x6f\x45\xa6\x0d\xe6\x39\xa7\x16\xea\xbd\x64\xcf\x60\x0c\x2b\x86\x98\xf5\x30\x64\x2e\x3d\x76\xbf\xa3\x6d\x37\x7f\xa5\xf7\x78\x85\x49\x8c\x76\x07\x02\xfd\x88\xe2\x95\x68\x49\xc8\x46\x03\xf9\x41\x53\x8d\xcd\x6b\x74\x82\x37\x5c\x1e\x04\xe0\x13\xde\x0e\x9e\xe3\x16\x07\x44\x30\x58\x05\xc4\xa8\x3d\xa1\x19\xcd\xed\x01\x48\xe9\x1e\x2b\xa2\x6c\x76\x90\x50\x8a\xed\xe5\xb1\x01\xd1\xcb\x36\xd8\x12\x05\x32\x14\x1c\x0a\x1d\xde\xb9\x53\xeb\x3b\x1f\x3d\xd9\x1d\xd9\x75\x92\xbc\xe4\xb6\x1b\x68\xaa\x5d\x5a\x99\x5e\x8f\xce\xcf\x41\x20\x93\xeb\xa5\x0b\xa7\x7e\x30\x27\x40\xd4\xb9\xb6\x01\xe3\xd0\x3b\x6f\x0e\x5c\x1c\xa4\xe3\x27\x02\xc5\xfa\x6f\x80\xc1\xfe\x44\x90\xb8\x68\x7f\x52\x72\x33\x11\xfa\x1d\xad\x98\x0f\xea\xd5\xda\x45\xb8\xbd\x14\xff\xc1\x01\x43\xb4\xd7\x78\xb4\x8a\xca\x5c\xe0\xb7\x0b\x5e\x3f\x45\x2a\xda\xc6\xe7\x77\xa8\x88\x03\x96\x3c\x3a\x40\x0a\x89\xe0\x35\xb4\xc6\x17\xdc\x1a\x63\x09\x8d\x15\x30\x86\x99\xbe\x8f\x1e\x20\x71\xbf\x32\xb0\x20\x8e\x5a\xe7\xc8\xca\x75\x66\xd7\x44\xc9\xb0\x43\xac\xb3\xab\xd4\xd6\xa5\xc3\xa1\xf9\x39\x13\x1c\x7b\xbc\x7b\x0f\xee\x0d\x34\x9c\xef\xbb\x76\x78\x2b\x68\x17\xc9\xbc\xb2\x9b\xf5\xaf\x6d\x21\x8c\x7c\x4a\xcc\xbc\x16\x72\x28\xac\xad\x22\xf9\xc4\xd7\x8c\xbc\x07\xba\x57\xa1\x2d\xcd\x09\x25\x0e\x01\x78\x64\x15\x3b\x05\xad\x15\x0f\x94\x61\x2c\x11\x32\x24\xb8\x76\x7b\x79\x50\xef\xaf\xe5\x07\x52\x04\xfc\xd8\xe1\xa0\x60\xa5\x7b\xf1\xdd\x71\x3c\x1a\xbf\x2b\x39\x1d\x05\xb1\x10\x9d\xe4\x92\x50\xf3\x04\xb4\x98\xe4\x46\x94\x49\x09\x5e\x73\x6c\x8e\xb5\x08\x9c\x42\xe0\x82\x94\xd3\xf0\x7a\x71\xa0\xab\xb2\xf0\x4d\xd9\x01\x5d\x80\xc9\x22\x62\xe4\x9d\x02\x10\x4b\x67\xa5\x72\x26\x9c\x6f\x91\xd5\x07\xb3\x05\xb1\x6c\x10\x93\xd0\x22\xeb\x0d\x41\x2d\x92\x39\xd2\x1c\xe1\x07\xea\xd0\xe8\x60\x08\xb9\xac\xae\x61\x09\x2f\x9e\x1c\xaa\x9a\xfb\x22\x26\x5b\x6f\x02\xff\x12\x52\x23\x93\xe5\xd7\x81\x06\x97\x4d\x31\xa5\x81\x04\x38\x07\x6b\x3a\x62\xec\xa2\x62\xcc\x26\xae\x7e\xfa\x70\x80\x1c\x65\x0f\x1e\x2a\xea\x5b\xca\x9f\xf3\x35\xed\x13\x29\x77\x10\x34\x1c\xfe\x5f\x12\x98\x1c\x9f\x61\xd5\x0c\x63\x08\x51\x79\x69\xde\x50\x34\xaf\x36\xb6\xc2\xf4\x65\xbd\x43\x11\xb2\x85\xe0\xad\x4c\x14\x74\x46\x6f\xdd\x6e\x8e\x3e\x81\xe7\x49\x44\xf8\xf3\x1b\x15\x2a\xbf\xf0\x14\x8f\x98\xf5\x93\x74\xd7\x76\x25\x33\x77\x9c\xa4\x07\xf9\x10\x5e\xb4\x7f\xe0\x6b\xc8\x3e\xa7\xd1\xe7\x68\xb4\xae\xe9\xba\x0c\x0f\xe2\x64\xd1\x0c\x4e\x87\xf6\x46\x3d\xe1\xc4\xc0\x3c\x17\xf4\xcd\x34\xb6\xd6\x50\xa0\x44\x25\xe5\x26\x48\xb6\x5d\xd5\xd5\xb4\x36\x9d\x17\xc3\xcb\x94\x9c\x48\x12\xc5\x3f\xfb\x0e\x9f\x75\x91\x91\x33\x2f\x9e\xf5\x88\x21\x42\xab\x77\x84\x71\xbd\x77\xe8\x8d\x7e\xfd\xec\x37\x6f\x63\xb2\x75\xe7\x04\x2d\x56\x2d\x32\x75\xd9\x59\x99\xa2\x0c\x2d\x6d\xaf\x43\xe4\x9a\x13\xfb\x75\x22\xbf\x26\x7f\x4d\x67\x33\xb2\x8f\xe6\xd7\x37\x9d\xca\xaf\xa9\xce\x83\x52\xb4\x0e\xad\xa3\x0f\x57\x7d\xc1\x27\x48\xb9\xc6\x0b\xca\x77\xc6\x1f\x7d\xaa\x0e\x31\x70\xd6\x2b\xe1\xef\x09\x2e\x98\xe9\xdd\xb6\x15\xee\xe7\xe4\xe4\xaf\x7f\xec\x6f\xb9\x75\xb4\x40\xe5\x21\x6b\xd8\x29\x9d\x32\x5c\x3a\xed\x96\x5e\x6b\x5b\x94\xff\x58\xa9\xf0\x98\x05\x42\x12\x60\x05\x80\x31\x73\x95\x2c\xb5\x8e\xba\x6b\xa2\x00\xb5\x20\x53\x5a\x8b\x66\xb6\x66\xa0\xf5\x49\xeb\x56\xaa\x95\x9d\xe2\x49\x56\xe0\x93\x14\x6c\xd6\xbb\xdd\x6c\x0e\xe6\xb3\xe7\xe1\x80\xe4\x25\x57\xdc\xd6\x6b\xde\xc7\x5d\x7d\x95\xc5\x0b\x28\x17\x27\xfb\x59\x79\xc5\x0e\x2f\xb3\x9a\x43\x55\xe4\x56\x0a\xe2\x86\x37\xc3\xba\x96\x84\x2e\xb7\x26\xfa\x5c\xbc\xaa\xdd\xde\xbe\xb9\x1f\x60\x2a\x15\xc6\xd9\x50\xe1\xae\x77\x86\x5a\x8c\x49\x9e\x54\x2d\xe4\xc7\x23\xad\x76\xc6\x73\xb7\x61\x25\x54\xd2\xa4\x9f\x3a\x17\x7f\x85\x53\x13\x87\x98\x17\x8c\xfa\xeb\x72\x57\xcb\xda\x3d\x69\xef\x4a\x01\x4a\x92\x32\x43\x57\x3e\x3c\xc3\x19\xa2\x64\x9a\x21\x13\x92\xa1\xce\x9b\xee\xca\x6e\x02\x32\x54\x83\xa4\x4d\x6b\xd8\x7d\xd0\xe2\xed\xa1\x32\xfc\xb7\x59\x1f\xec\x79\x3d\x96\x11\x3b\xe1\x5c\x8d\xd3\x46\x93\xcb\xc0\xc0\x43\xa9\x37\x02\x02\x39\x2f\x9a\xc1\x17\x4c\xcb\x3b\x2b\x96\x96\xe5\x64\x80\x9f\xac\xca\x4f\x7a\x50\x5b\x4f\x92\xc4\xac\xaf\xe4\x72\x9d\x7a\x3b\x9c\x50\xd5\x8a\x78\x72\x7b\xe8\xb1\xbb\x1c\x89\x77\xc1\x41\xef\x6a\xac\x97\xa3\x2d\xa2\x73\xec\x91\xd3\x07\x80\x7d\x38\xbc\x59\xd5\x21\x5a\x74\xb2\xdc\x12\x9a\xe4\x16\xe3\x70\x32\x35\xfe\xba\xc0\x25\xe2\x90\x71\x9a\x31\x8a\x12\xfa\xb7\x20\xa7\xb4\x23\x02\x60\xe1\x19\x66\x80\xd0\x6b\x43\xc7\xb1\x21\x41\x78\x1e\x84\x7c\x96\x59\x78\x3d\x99\x3c\x3c\xf3\x67\xb4\xd3\x5b\xaf\xed\x1f\xff\x1a\x2b\xdc\x6d\x72\x1c\x6f\xfd\xc4\xb3\x97\x4f\x81\x12\x04\x5b\xff\xe7\x5a\xd2\x34\xbf\xf8\x56\xb2\x5c\xd6\x70\x39\x6d\x29\x59\x32\x9c\xfb\xca\x73\x38\x1d\x86\xae\xef\x5a\xdb\x03\x34\x7c\xd0\x80\xfc\xe1\xd3\x5c\xe2\xf3\xed\xa1\x83\x2d\xef\x0c\xf6\x62\x6e\x53\xd4\xf6\xed\x3c\xae\x34\x48\x58\xb6\xf9\xac\x92\x57\xce\x3d\xce\x5f\x56\xce\x5e\x39\x51\x56\xca\x8f\x95\x44\x26\x3a\x13\xa4\x54\xbe\xc5\x6f\x77\xd8\xa5\x24\xc7\x89\xbd\xf9\x0c\x93\xf9\x94\x8a\xfa\xf5\xd8\x1c\x6a\x08\x03\x54\xfe\xc6\x23\x37\xed\xcb\xb5\x6f\x7e\xf5\xdc\x1b\xd7\x6c\xbe\xaf\x5b\x1c\x1d\xea\x35\xe4\x15\x7a\x45\x53\x03\x4a\x1f\xe8\x1c\x34\x40\x1a\x24\x7f\xaf\x06\x3f\x5f\x17\x97\xe3\x80\x59\x44\xa1\x31\x33\xd8\xef\xf9\x7f\xb5\xd1\xd1\xd5\x80\x58\x2b\x63\x16\xaa\xec\xb3\xa1\xeb\xa3\x27\x01\xcb\x9c\xbc\x3d\x6e\x93\x7c\x82\x7c\xcb\xcf\x87\x50\x72\x88\x3d\x73\x0f\x17\x78\x3a\xaa\xda\x5b\xda\x02\x08\x0b\x4a\x3c\x92\x03\xab\xa7\x1f\x24\x77\x0d\x66\x8c\x01\xfb\xe1\x26\x88\xc5\xce\xb0\xa2\x27\xa0\x4b\x93\x19\x68\x24\xba\x7a\x3f\xd9\x2f\xd8\x83\x2e\xbc\x0f\x53\x62\x11\x67\x67\x43\x92\xfd\xa4\x2e\xf7\x8c\xa2\x82\xcd\x49\xca\x24\x3a\x75\xd4\xf6\x52\xe4\x17\x66\x9e\xff\xc9\x2f\xd8\x28\x77\xc4\xf6\x03\xe5\x7d\x7f\xc2\x7a\x2d\x1c\xe3\x55\xf5\xba\xcd\x58\x9b\x6c\x50\x89\xa2\x18\x83\xe9\x63\x83\x61\x4f\x35\x08\x7c\x7e\xa1\x35\x52\x1d\xff\x04\x70\xb6\x85\xee\x5d\xb6\xb8\x6c\x5c\x17\x8a\x46\x4e\xcc\x6c\x76\xb1\x91\xb0\xc8\xf2\xdb\xb0\xa6\xad\xc5\x21\x4f\xc2\x81\xe4\x29\xc0\x0c\xa5\x80\x03\x0a\x16\xdf\xc6\x34\x8d\x3a\x3c\x93\x54\xf9\x9a\x2d\xfd\x23\xe0\xc9\x88\xfe\x41\x4f\x51\x16\x53\x68\x28\x98\x37\xc5\x95\xed\xf0\x55\x7e\xf3\x9d\xf6\xdd\x99\xc9\xed\xb2\xce\x0e\x68\x58\x22\x7d\x16\xbc\x97\xab\x9e\xe0\xb4\x69\x25\x2b\xfa\x16\x28\x81\x10\x7a\x51\xca\x34\x96\x88\x30\x83\x4f\x92\x27\x86\xfa\xe0\xab\x30\x55\xd4\x4a\xeb\x5a\x12\x4a\x73\x99\x0c\x98\x8a\xdc\xd5\xbb\x4b\x0a\x84\xcb\x52\x9a\x8b\xc5\xf7\xaa\xd4\x89\x4a\x35\x7e\x07\x8e\x9f\xaa\x7b\x25\x60\x02\x6b\x94\xbf\x18\x18\x6f\x07\x87\xd8\x78\x28\x22\xe0\x42\xd6\x46\x99\x8b\xf0\x18\x06\x3a\x87\xc8\xc1\x84\xf2\x65\xf0\x21\x65\x54\x5e\x35\x5a\x55\x51\xea\xe2\x5f\x0b\xe6\x4f\xb9\xb1\x9c\xd3\x97\x89\xdc\xc0\x13\x0e\xef\x77\x4c\x1b\x0d\xb0\x3b\x24\xd2\x6b\xf0\x71\x00\x8d\x1d\xb1\xa6\x76\xdf\xf5\x1c\x89\x1f\xae\x0d\x5d\xe9\xc0\x74\x46\x9e\x75\xf9\x84\xd3\x8f\xf0\x04\xc1\xe0\x8a\xeb\x58\xb6\x47\x82\xcc\x97\x3d\xe3\x9d\x35\xe9\x82\x14\xab\xa3\xb5\x4f\xcb\x9f\x4c\x44\x31\xeb\x50\x3d\x6d\x59\x7b\xaa\xe2\x9a\xc3\x94\xb3\x7b\xe9\x0c\x43\x8c\xc6\x34\x35\x28\x20\x2d\x83\xdf\x56\xca\x30\x81\x0d\x66\x81\x8a\x1c\x24\x8f\x86\xc2\x80\xc1\x33\xce\x56\xbb\x83\x30\x22\xe8\x04\xee\x09\x75\xad\xe5\x53\x8d\x7f\xcd\x65\xae\x29\x1b\x10\x57\x32\x20\x8e\x0f\x2c\x9a\x94\x67\xa9\xeb\x9e\x4b\x7b\xb5\x33\x46\x28\xc7\x81\x87\x50\xd5\x9d\xae\xc5\xfc\xcf\x96\xe1\x72\x0e\x8d\xdc\xf2\x14\xd7\x62\x3c\xe0\xdf\xc9\x4a\xf5\x66\x1c\xab\xe3\x6a\x05\x98\x0e\x4a\xd6\x9d\x69\x39\xb9\xde\x69\xe4\xaf\x00\xa8\xd7\x2e\x54\x71\x95\xcd\xe9\x9a\xc4\x00\xd7\xb4\xda\x7c\x72\x13\x04\xd3\xd7\x59\x48\x3b\x78\xdf\x36\xe0\xcc\xf4\x9d\x80\xe6\x30\x58\x65\x3a\x71\xd5\xb2\x62\xde\xe3\xbf\xe4\x95\x5b\x78\x69\x5f\x67\xba\x2b\xd3\x01\x66\xa4\xbc\xc9\x2c\x8f\x67\xd5\xdb\xc6\xc9\xe3\xa1\xea\x2e\xcd\xd7\x12\x5e\x0f\xe5\xe3\xfe\xf7\x69\x16\x65\x07\xc4\x9a\x66\xf0\xcc\x71\xed\x42\x7d\x61\x74\x2c\x06\x6a\xb2\x73\x08\x16\x2b\x10\x02\xda\xc5\x1e\xc8\x60\x61\x78\xa0\x82\xfd\xeb\x24\x41\x0e\x35\x44\xc5\xeb\xcd\xba\xa6\x43\x85\xc7\x65\x34\xbc\x2c\xd0\x22\x7e\xba\x98\x4f\xcb\xdf\xa2\xe4\x15\x81\x36\x5d\x93\x77\x0e\x78\x7e\xfd\xc3\x2c\x6f\x75\xf8\xee\xeb\x75\xbe\x81\xae\xaf\x4e\x33\xee\x8c\x02\xa3\x93\xb4\x8d\x8d\x36\xf7\x63\x47\x9a\x33\x58\xe5\x15\x45\x22\x50\x34\x22\x8a\x45\x54\xf1\x88\x29\x11\x71\x25\x23\xa1\x94\x92\x3b\x31\x22\xa5\x70\xc0\x63\x8e\x20\xc2\x11\x51\xb0\x43\x35\xbf\xfb\x6d\xc6\x09\xb2\xac\x61\xc1\x35\xaa\x20\xc1\xcc\xc2\x4f\xd5\x47\x5c\x09\xb4\xd4\xf0\xb6\x9b\xfa\x13\x9e\xe3\xf7\x0e\xa2\xbd\x4e\x03\xdd\x87\xf3\xf9\xbb\xbb\x1a\x7c\x0f\x65\x3f\x33\xb0\x4d\x09\x2a\xb4\xa9\x60\x14\xa6\x04\xe7\x20\xdf\xd2\x04\x48\x61\x4d\xb5\x90\xef\x6b\x64\x63\x06\x10\xed\x6c\x89\x84\xf2\xb3\xb5\xd1\x53\x07\x2a\x89\x07\xac\x06\xdd\xa6\xc6\xb2\x97\x0f\x26\xf7\x55\x82\x0c\xe2\x59\x61\x82\xd3\x88\xc6\x4c\x09\x31\xd4\x1b\x02\xd3\x57\x53\xfa\x0a\xf8\xc6\x9a\xa3\xc5\x6a\xb8\x67\xed\xdd\x2b\xf8\x4b\xa9\x07\x68\xda\xad\x73\xc4\xd6\x2e\xe7\x62\x0a\x69\x00\x38\xa6\x7e\xd3\xa7\xde\x92\xde\xbc\xe7\x31\xaa\x21\x33\xb1\xdc\x44\x14\x99\x7b\xa3\x4c\xe7\xe3\x89\x79\x73\x07\x4b\xfa\xa0\x74\xbf\xde\x34\x0b\x6e\x59\x0d\x63\xc5\xb6\x32\xc3\x2a\xa0\xf5\xfe\x8c\x75\x5f\xd6\x1f\x3c\x1b\x75\x75\x16\x45\x66\x03\xc3\xed\x2b\xfb\x40\x7b\xef\x24\x24\x75\x65\x7d\x60\x7c\xb0\x8f\xd6\xce\xfe\x38\xeb\xe3\x7c\x1f\x4d\x43\xae\x2b\x2f\x35\xfc\xb4\xde\x30\xad\xd2\x2f\x7a\x9d\x3d\x35\x8a\x84\xaf\xc5\x68\xd1\x4b\xc3\x97\xb3\xe7\x51\x76\x0a\x52\xc1\x4b\x99\xce\x41\xe9\xd0\x89\x8e\xd4\x83\xf0\x50\xce\x95\xb6\x90\x72\x17\x00\x5a\x49\xcb\x28\xbf\xdd\x0e\x7c\x9e\x17\x22\xfa\x60\x79\xa5\x24\xc4\x7f\xe7\x29\x8e\x6f\xcd\x89\x90\x46\xfd\x9b\x86\x50\x8b\x61\xd7\xce\x42\x9a\xe4\x93\xed\x66\xa3\x2d\xcb\x78\x0a\xe6\xa9\x35\xff\x5a\xcb\x7a\x6e\xd6\xdd\x9a\x71\x9e\x83\x93\x37\xab\xc9\x0b\x73\x4c\xe4\x8f\xa0\xf7\xd2\xd9\x22\xf9\x02\x92\x59\xcd\x11\xd0\x50\x92\xeb\x2e\xd8\x03\x2a\x05\x67\xe1\x5a\xf3\x51\xfe\x7e\xf2\xdd\x7b\xba\x03\x78\x3a\xc6\xfc\x2f\xe6\xf7\x72\x33\x25\x09\xec\x03\x9a\xc6\x21\x6e\x83\x56\x9e\x66\x51\x5b\x93\xd4\x5e\x4b\x9e\xce\x44\x36\x3f\xee\xc0\xd7\xe1\x30\xce\x9a\x26\xb3\x46\x8b\xba\x8c\x0f\x92\x9f\xa0\x8b\xf1\x79\x0f\xbc\xd1\x31\x5e\x8f\x6b\x1d\x36\x74\x2a\x8d\xa7\x4b\xe0\xaa\xa6\xcb\x30\xb0\xc7\x17\x13\xfc\x70\x0d\xe9\xf9\x77\x42\xd9\x0f\x76\x70\x41\xda\xc0\xe7\xa3\xae\xac\x99\x73\x7c\x0a\x12\x37\x9e\x80\x4e\x78\xf2\xd3\x19\xaa\xb5\x2e\x40\xd5\xd0\x41\x32\x10\xe3\x82\xfb\x6d\xc6\x20\x69\x7e\xa5\x96\x01\x76\xe8\x8a\xd3\x1f\x03\xf0\xe7\x3c\x8b\xde\x32\x14\x97\xf4\xc4\xc9\xb3\x72\xc9\xdd\x5d\x1b\xbf\xcf\xf9\xcb\xe1\x37\x6b\x78\x6d\x7e\xf1\xe0\xbd\xa7\x78\x2d\xbb\x3d\x54\xd7\xeb\x10\x09\x73\x93\xbc\xdd\x36\xfd\xb3\xc6\xe3\x98\x6f\x6f\xa7\x1e\x9d\xfb\x56\x29\xe8\xb1\xae\x74\xed\xb3\x6d\x2b\x9e\x12\xa1\x98\xf9\x36\x8b\x87\x28\x5f\x38\xdb\x0d\xdb\xfe\x68\xf8\xb2\x1c\x35\x1e\xe9\xce\x39\x5e\xbb\xed\x37\x45\x23\xcb\xe6\xe9\xb2\x71\x33\x77\xc7\x02\xf5\x56\xb9\x72\x62\x90\x05\x6d\x44\x2e\x38\xb4\x71\x11\xb8\x2c\x23\x73\x9b\x65\x7b\xb7\x8d\xdd\x85\x8b\x24\x61\x1b\x32\x1e\x9d\xa3\xcd\xeb\xbe\xc5\x61\x47\xbe\x64\xef\x5f\x7e\x2e\xa3\x05\x20\x9d\xe0\xe2\xf3\x77\xd0\xc0\x32\x59\x51\xa0\x87\x84\x95\x33\xbe\x2e\x78\xa2\xb1\x92\x9d\x23\x21\x68\xf4\xc6\x99\x0e\x3f\x4d\x62\xd0\xd8\xbd\x52\xa1\x5d\x79\x8a\xdb\x35\xf6\x03\xed\xd8\xaf\xbe\x97\x31\xd9\xc9\x63\x0d\x9f\xe8\x1b\x76\xcd\x80\x5e\x21\xce\xe7\xce\xdb\xdc\xa5\x55\x34\x87\x57\x19\x5d\x85\x2d\xe0\x3e\x62\xc3\xcf\x15\x39\x4f\x11\xb9\xa2\x96\x0b\xd3\xc7\xf2\xb9\x5d\xf2\x10\x40\xb4\xda\x8f\x83\x7d\x7d\xf6\x4e\x0c\x7b\xe0\xf4\x90\xab\x5d\x7c\xb5\x9e\xf1\x0c\xef\x45\xd4\x54\xfb\x83\x04\x5b\xda\xa3\x9e\x67\x06\x96\xf5\x91\xf4\x93\x8c\x43\xf1\xa8\x7b\x98\xff\x3d\x4e\x2d\x77\xb2\xf6\x71\x80\xeb\xef\x72\x86\x83\x9e\x04\xc7\xed\x6a\xe5\xd8\xdc\x89\xb0\xec\x90\x76\x3a\x05\xb5\xdd\xd9\x11\x63\x70\xe4\x36\x8e\xf6\x3b\x3e\xc8\x0e\x56\x8a\x8b\x98\x05\x70\x9a\x9f\xa0\x55\x33\x58\xbb\xfb\x05\xf6\x36\xfc\xd5\x90\xcf\xb1\x27\x40\x92\x3a\x07\x6e\xe0\x55\x6f\xb5\x6b\x01\xb0\x1f\x65\x9b\x0b\x26\x68\xfc\x35\xbb\x49\x7b\x58\xe6\xad\xaf\x60\x77\x2c\x9c\xbc\xbf\x39\xb6\xef\x1c\xb3\x2a\x02\x41\x0b\xd5\xba\x81\x57\xbc\x6f\x7e\xc8\x93\xf7\x22\x16\x6b\xb9\xdc\x4b\x0f\x4e\xf6\x16\xb3\x04\xd8\xfd\xfc\x1b\x87\x95\xe7\xfe\xfe\x51\xd0\x51\x7d\xe8\x6f\xaf\x70\xb0\x8e\x64\xf3\x2d\x4e\x78\xa1\x32\x1f\xfc\x91\xf2\xbe\xe3\xeb\xa5\x1c\x79\x73\xd3\x69\xdf\x57\x1d\xbb\xc9\x4b\x6f\xe7\x68\xf4\xdc\xbb\xa8\xbe\x66\xae\x5a\x13\xd7\xff\xfd\xe3\x65\xc5\xaf\xbf\x9f\xbf\x70\x7a\xef\x41\x5e\x4a\xdc\x3d\xb7\x4f\x3c\xc7\xef\x8c\x97\x0b\x71\x61\xec\x13\x18\xdb\xa5\xa1\x5d\x58\xf7\x3e\x26\xeb\x8c\x5e\x65\xcc\xc8\x2a\x3e\xe3\xad\x62\x33\x3a\xb5\x9e\xaf\xb0\x42\x8f\xc8\x2b\x20\xb1\x63\x33\xb3\xb6\x22\xf8\xf8\x79\xf7\x71\x6c\x68\x60\x9d\x1a\x53\xbd\x29\x9f\xca\xa6\x6c\xea\x6d\xaa\x7b\x9d\x2d\xb8\x79\x57\x96\xb6\x2e\xd0\x64\x83\xcd\x29\x39\x7e\xb9\x62\x3b\xef\x72\xd7\x8c\x45\xbd\xbd\x9d\xc6\xa3\x77\x78\x71\x92\x17\x6b\x0e\xab\xfd\x56\x13\xbf\xca\xd0\x7c\xb7\xc9\x2f\x1e\xd8\xba\x97\x75\x1b\x56\x3b\x62\xc0\x21\x8d\x46\xdd\x0c\x16\xc0\x8b\xa3\x07\xf1\xdb\x7a\xdd\x91\x7f\x30\xc6\xc4\x92\xd8\x95\xe0\xba\xc1\x31\x59\x78\xf9\xc0\xd0\xa5\x8d\x5e\xc5\x1e\x98\xb4\x12\xcb\x0f\xef\x78\x95\xe2\x3e\xf6\xd2\x8b\x95\xae\x52\x9e\xe9\x5f\x1d\xd6\x7d\xb2\x5d\x83\x60\x04\x0e\x83\x19\x29\x16\x20\x5a\x74\xed\x91\xc5\x52\xda\xa1\x33\xb0\x8e\xea\x01\xe8\xa8\xbd\x8c\x31\xbf\x30\x2a\x09\x6b\xf1\x3e\xda\x60\xa7\x50\x08\x01\xc6\xbf\xc2\x27\x97\xf8\x33\x8e\xd9\xab\x37\x19\x2a\x0f\x89\xbf\x48\xc8\xf6\x57\x26\x8c\xe5\xab\x32\xed\x04\xbf\xfa\x98\x69\x38\xd2\x4d\x94\xae\xfc\x25\xc1\x35\xc8\xcb\xa7\x56\x60\xf3\x12\xc0\x31\x7e\xf7\x13\x01\xf0\x15\xe8\x91\x71\x6e\x02\x13\x32\x0b\x30\xeb\xe5\x7d\x5a\xe8\xe0\x6a\xf2\xed\x8e\xd1\xc3\xf3\xca\xa3\x08\xbe\x8f\xc0\xbb\x1a\xa9\x8a\x88\xbf\xd0\x7f\x56\x76\x93\x4d\xed\x33\xb9\xf9\xe1\xe8\x1b\x98\xa6\x91\x49\x8b\xee\xde\xaa\x0e\xf2\xd1\x64\x7f\xb0\x54\x1e\x32\xb0\x4b\x03\xb0\x0d\x98\xde\x8a\x40\x98\x32\x28\xeb\x0f\x9f\x61\xd7\xd6\x78\xec\x0d\x1d\x7e\x4b\x74\x6e\xaf\xc4\xd0\x74\x52\x88\x86\xae\x2d\xee\x6f\xea\x2b\x0c\xd9\x80\xde\xa4\xd2\x17\xd7\x29\x8d\x7c\xd9\x0e\x85\x46\x98\x7e\x92\x57\xbf\x2d\x40\xbf\x76\x09\x03\xc5\xb3\xd1\x2a\x1a\x5b\x78\x62\x80\x75\x68\xbf\x30\x02\x3a\x8f\xca\xd6\x6f\x57\x9e\x24\xeb\xc7\x42\x5b\x44\x58\xfb\x55\xb7\xe9\xed\x0d\x1b\x8f\xee\x78\x02\xf3\xdc\xf0\xc4\x77\x8b\x7d\x75\x9d\xa7\xaa\x02\xf6\xe8\x61\xc5\x30\x58\xfd\xc2\x3d\x02\x0b\xe7\x2e\x12\x42\xe5\x07\x96\x1d\xbc\x57\x75\x1e\x70\x8f\xca\xe4\x72\x5d\xc7\xf5\x92\x73\xef\x4b\x1f\x8c\x1d\xba\xf0\x3b\xdf\xf8\x68\x9d\x4f\x09\xdf\x2c\xf1\xb7\x76\xd9\x2c\x67\x8c\x4e\x36\xb0\xcf\x3b\x98\x7a\xc3\xcd\x5a\x08\x0c\x27\x65\xb1\x8b\x86\xff\x3d\xde\xf1\xfa\x8e\x73\x33\x6d\x01\xfa\x56\xc4\x19\x7b\xfb\x5b\x95\xbe\x4f\xbc\x43\x7c\xad\xeb\xc0\xb6\x08\xbb\x42\xa7\x5d\x99\x72\xa5\x9c\x0d\x0d\xb7\x4f\x5e\xe0\xa8\xab\xf4\x3a\xeb\x31\xb7\xe0\xc4\xfd\xb7\x43\xd6\x80\xd8\xc5\xb5\x0e\x59\xb9\x08\x1c\x68\x14\x51\x72\x84\xc6\x42\xad\x2f\x03\x9a\xa6\xf8\x98\x35\x84\x67\xe8\x97\xd6\x57\x03\xd3\x3f\xd6\x51\x13\xd3\xc3\x20\xe2\xe3\x3d\xe9\xcd\x63\x14\xec\x2e\xd0\x42\x53\x46\x86\xa3\xd5\x01\x01\xe7\xf2\xd6\xbb\xab\x78\x4d\xf5\x9c\x94\x31\xc3\x87\xf0\x11\xa1\x1c\x25\x83\x8a\x96\x83\x09\x10\xdb\x66\x27\x19\xbb\xce\x11\x31\x06\x69\xda\xd6\x96\x6b\x91\x74\xb9\xa8\xb8\x77\x73\x6a\x8e\x02\xfe\xa8\x10\xa9\x93\x21\x81\xc3\x32\x97\x28\x17\x67\xb4\x24\x22\x87\xa4\x7b\xe3\x18\xae\x81\xdc\xc7\xa1\x51\x61\xe9\x80\x15\x99\x59\x62\xe9\x2d\xf6\xc1\x60\xd2\xa5\xd0\x98\x17\xcd\xaa\xc9\x02\x57\x31\x8c\x1e\x17\xdb\x95\xb3\xee\xde\x4b\x80\xdb\x12\xdf\x85\xe5\xe6\xc0\xa6\x43\xfa\xd7\x4d\x90\x0e\xc2\xf8\xf4\x3d\x82\x0a\x1f\x56\xa9\x1f\x01\x4b\x6b\x89\xcc\x0a\x13\xae\x7a\x71\x32\x9b\xf4\x0d\xdf\xd9\x64\x37\x77\x82\x94\x5a\x62\xed\x10\x1d\xd2\xd2\x73\xaf\x14\x3a\x82\xb8\xf1\x69\x79\x94\x06\xac\xa5\x54\x75\x69\x26\xa1\xf3\x3e\xaa\x01\xe6\xf8\xb3\x69\x0f\xb6\x5a\xbc\xf8\x6e\x1b\x77\xbb\x67\x1f\x33\x27\xc6\x0e\xad\x70\x54\x91\xf6\xff\x55\x86\x8e\x38\x10\x54\x69\x7d\x28\x83\x82\xf6\xb9\x5f\x7f\xcc\x92\x19\x59\x1c\x09\xf2\xc8\xf8\x51\xe5\x5e\x0a\x8f\xd7\x01\x52\x00\xd2\x65\xc8\xa0\x0b\x63\x80\x79\x5a\xcd\x20\xe2\xe7\x77\xab\xee\x8f\x89\x03\x01\x96\x75\xc3\x02\xa7\x59\xb7\x6d\x78\x65\xae\x2d\x7f\x7b\xc0\xbc\xc0\x5e\xa9\x31\xdb\xb9\x4f\xa2\xe0\x36\x30\xb1\x6a\x44\xa5\x24\x12\x26\x3d\x5c\x8f\xc5\xc1\xa0\x6e\x11\xd5\x98\x3e\xd6\x93\x72\xcb\x4c\xe4\x1b\x3c\x58\x67\x77\x38\xbc\xb0\x2e\xd6\x7b\x8d\x6f\xbb\xcb\x24\xe8\xf5\x34\x80\x1e\xf2\xed\xe3\x9c\x27\x49\x5d\xcc\xae\x19\xfa\xd2\xd3\x85\x4b\xfc\x4d\x8b\x35\xb9\x97\xb0\x42\x4c\xc6\x59\x53\x2b\xfe\x42\x23\x93\x65\xc0\x63\xe2\xb6\xb5\xc3\x8b\xba\x9d\x57\xf7\x11\x0c\xe7\xa0\xa2\x05\x75\x67\xe6\xaf\x67\x6c\x70\xcd\xe5\x13\xc9\x05\x8e\x18\x40\x67\x5f\x76\x31\x13\xc6\xb3\x8e\x40\x06\x53\x78\x6f\xcf\xe9\x67\xcf\x2e\x09\x93\x1f\x1c\xce\x0e\xa6\xa3\x8a\xd2\x7d\x81\xa3\xe9\x89\x22\xb2\x2f\x07\xa9\x38\x15\x1d\x56\x88\x8f\xcb\x59\xaf\xaa\x6e\x0b\xb3\x94\x1a\x8f\xcc\xf8\x67\x08\x05\x7b\x6c\x16\x32\x92\xaa\x09\xab\xa9\x6b\xc8\x38\x03\xb3\x24\xe2\x34\x4a\xfe\xb9\x2a\x62\x81\x2b\x9c\xec\x95\x27\xcf\x84\x40\x3b\x4a\x03\x6b\x25\x0e\xf7\x5b\x1b\xdf\x22\x29\x71\x91\xf3\x7b\xfd\xa6\x46\x35\x5d\xf0\xca\xe1\xcd\x54\x1d\x2a\xa3\xff\x36\xb3\x30\xed\x77\xe3\x50\x53\x01\xb1\xd4\xca\x44\xd4\xcf\x78\x96\xf5\x86\x7c\x25\x78\x6c\xee\x00\x5e\x52\x46\xce\xd2\x21\xa9\x9e\xe6\xaa\xe9\xad\x13\xbd\xb6\xbe\x63\x5f\x27\x88\x12\x92\x40\x4b\x2d\xd1\xc7\x1f\xd1\xd7\x3c\x1e\x40\xf5\x83\xd2\xfa\x7c\x07\xf7\xff\x6b\xd2\x7d\x8d\xe5\xdd\xbe\xc4\xbc\x69\x24\xa2\xfa\xdd\xe4\x73\x99\xd3\x49\x7b\x7c\xc7\x37\x5f\x39\x36\x42\x7a\x43\x79\x57\xa0\x97\xa0\xa8\x25\x05\x5c\x5d\x2a\x50\xd3\xb0\x88\xe3\x6e\x8a\xf0\x86\x88\xeb\x7f\x2e\x40\xab\x74\x47\x7b\x6f\xe2\xdd\xab\xc3\x9f\x5e\xae\x6c\xd5\x43\x74\x0a\xfb\x35\x0d\x47\xfe\x9b\x9f\x3d\xbc\x57\x78\x0e\x9d\xd0\x09\x2e\xb1\xa7\x93\x1a\x9d\x6b\xad\x64\x33\x74\xd2\x26\x35\xcf\x63\x5a\xc7\xac\x6f\x9a\xf3\x53\x2e\x2c\xba\xb5\x2a\x1c\x2b\xad\x38\x20\xa0\x09\x77\x91\xc2\xb9\x04\xaa\xc0\xb0\xab\x9e\xbf\x23\x95\x2c\x6a\x4b\x49\x5d\x1f\x73\xd0\x63\x09\x2e\x54\x4a\xf5\xa4\x0f\x58\x7d\x70\xed\x0e\xb1\xab\x5a\x7b\xea\x2d\x37\x95\xca\x23\xa5\xe5\xac\xfd\x61\x80\x08\x9a\xa2\xdd\x78\xa9\xed\xaf\xb0\xe7\x8a\xbc\xe1\x72\x23\x4c\x0d\xa6\xb6\x6e\x5e\x7f\x7b\x8f\xd3\x28\xd7\x94\xc3\x6c\xdd\xd8\x34\xb5\x4d\x73\xfc\xb3\x2e\xcd\xb6\x30\xc9\x67\xb2\x60\x7b\xa0\x46\x35\x43\xb3\x4d\xa6\x03\x8f\x59\xa3\xf4\x1c\xd2\x6b\x2e\x4b\xdc\x3b\x6a\x7a\xd3\x05\x20\x3f\xea\xf2\x3a\xbf\x4a\x85\x6e\xb5\x78\x52\x65\x86\x65\x77\x91\x5f\x8c\xa6\xea\x4b\x7a\x09\x78\xe3\x25\x9f\x7d\x4f\xfb\xfd\xce\x8c\xa4\xcb\xe3\x9c\x96\x03\xf8\x86\x14\x92\xd6\x3f\xfd\xc7\xa7\x3d\x7f\xf0\x8d\xdc\xcc\x2f\xbd\x12\xa4\x77\x2c\x6f\x1f\xb6\x7a\x2f\x63\x9b\x16\x8c\x67\x11\x8b\xec\xe5\xa3\xec\x91\x60\x56\xe1\x77\x24\x65\xbd\x3c\x85\xf2\x61\x4d\x12\x12\x4a\x7a\x72\x8d\xe6\x37\xe9\x7d\x0d\x12\xad\x3e\x3a\xbd\x5f\x8e\x13\x77\xed\xa7\xe7\x77\xc1\x15\xbc\xef\x9a\x4b\x94\x5a\x1e\x63\x4b\x3a\x2d\xba\xa2\x06\xf5\x9b\xea\x72\x4c\xaa\x54\x03\xa5\x88\xb7\xe6\x66\xa9\xdd\xce\x9a\xf2\xd3\xbd\x65\x79\x02\xe9\x0c\x7d\x25\xc7\xc3\x74\xd3\x97\x16\x56\x8c\x7e\x0c\x11\xd3\x93\xdb\x3f\x40\x9a\xb9\x73\x80\x18\x07\x67\x20\xff\x6b\x40\xf1\xe8\x9e\xb8\x14\x70\x9e\xc9\xc3\x12\x7a\xd7\xa7\x9b\x03\xcb\xb8\x64\x1f\x5e\x77\x29\xbd\xf1\x87\x8a\xa5\x77\x2f\xb0\x1d\x33\x6a\xf7\x01\x75\x77\x6b\x96\x39\xbc\xcc\x98\x14\x1d\x2e\x45\x84\x48\x89\x26\xf7\xb6\x8a\x04\x9f\x1d\x44\x7f\x73\x14\x27\x9e\x92\x10\xa5\x48\xd2\x5d\xdf\x6e\x64\xc8\xf3\x67\x90\x9e\x02\x95\xc7\x2e\x38\x30\x1d\x91\x9f\xfd\xe7\x26\xb7\xb3\xcd\x81\x22\x02\x21\x30\xce\x86\x95\xdb\x33\x7d\xa4\xcc\x60\xdc\xa7\x2a\x9d\x85\xa7\x8d\xe5\x1d\x14\xfe\xee\x2b\xdc\x80\x0d\x81\x13\x3b\x7b\x43\x3b\x5c\xa8\xd9\xcd\x97\x1b\xc3\x30\xbf\x03\x84\x15\xa6\xdd\xc7\x7b\xf5\x85\x48\x2a\x52\x85\xd9\xbe\x17\xee\xa8\xd8\xa5\xd2\x1b\x11\x9b\xae\xd2\x9e\x75\x4e\x07\xa5\xa6\x30\xc1\x56\x69\xe3\x74\xf7\x60\xe0\x56\x66\xc9\xbc\xaa\x19\x12\xf0\x3f\xe2\xa9\x4b\x9f\xd5\x0d\x5a\x82\xeb\x5a\x48\x43\x8e\xd4\x3d\x1c\x1e\xae\xeb\x57\xa8\x2f\xca\x60\xa3\xd9\x97\xdb\x99\xfa\xa4\x51\xed\x3f\xc1\x32\x7e\xc7\xd8\xcb\x4c\x57\x2c\x36\x37\x36\xb4\x35\x7c\x1f\xf7\x22\x60\x05\xb9\x04\x23\x28\xf4\xdb\x4c\x65\x2a\x0f\x1f\xba\x5a\xa9\xa9\x19\xdd\x07\x9e\xda\x27\x36\xcf\x35\xb1\x4c\x09\x16\x33\x5a\x78\x8c\x98\xc5\x63\xa1\x48\x16\x83\x47\x9e\x2e\xc0\x86\x1a\x6c\xeb\xf8\x2a\xd0\x3e\xc3\x3a\xea\xce\xed\x85\xef\x06\x8a\x52\x12\x33\x40\xbc\x8b\x2a\xfd\x18\x31\x52\x6b\xa9\x3c\xa3\x23\xb0\x41\x44\x34\x15\xe0\x78\x83\x26\xff\xc5\x99\xcd\x8e\x98\xc8\x96\x71\xe1\x65\x29\x92\xba\xc8\xe4\xe3\x93\x31\x94\x1c\x1b\xea\x80\x1f\x68\x0b\x85\x78\x95\x68\xe5\x15\x3e\x23\x71\x9e\x66\x32\x39\x40\x59\xab\xb9\xba\xd0\x44\x51\x9e\x0f\xb4\x07\xce\x62\x56\xfa\xb9\x9c\x83\x65\x9d\xd8\x33\xac\xaa\x07\xac\x62\x0d\x71\x80\x4b\x55\xc6\x04\xc8\x61\x66\x7e\xe2\x74\x67\x79\xf4\x47\xfb\xe2\x20\x56\x80\x2a\x14\x7c\x47\xeb\x8c\xfa\xf0\x48\x43\xe6\x1d\x85\xf8\x42\x0e\x04\x7b\x5f\x4c\x6f\x39\x27\x94\x9a\x27\x70\xb4\xa3\x09\x11\x86\x6c\x02\x13\x21\xbd\x9e\xa4\x51\x79\x31\xf7\x01\xb2\xb7\x37\x8a\x73\x87\x50\xd5\x7c\x85\xe2\x82\xf2\xe1\x89\xe2\x13\xb2\xe3\xd3\x17\xc4\x30\xac\xfb\x1e\xe4\x92\xd5\xb3\x69\x2d\x67\xea\xce\x2d\x55\x16\x84\x87\x10\x67\x9b\xac\xa6\x00\xcb\x7e\x96\x84\x37\x0b\x33\x58\xfc\x13\xbe\x93\xc8\x4d\x76\xf5\xed\x8b\x2b\x4c\xc5\x9d\xec\xa6\xca\xdf\x77\xee\x59\x6f\x5f\x53\xfb\x9f\x4a\x4e\x73\x2d\x1b\x9d\xe8\x59\xe8\x07\x7c\x1a\x60\xb0\xd3\x3f\xb3\xb9\xef\x4c\xd3\xae\x4c\xb8\x04\x3e\x53\x2b\x79\xbb\x53\x58\x07\x93\x4a\xc5\xca\x36\x9f\xcd\x64\x3c\x79\x9b\x09\xfe\x29\x62\xfa\x7e\xd1\xb9\xd2\x68\xbd\xd4\xc3\xc3\x35\x14\x86\xf5\x62\x10\x26\xce\xbd\x15\x07\x6a\x59\xcc\x4c\xc9\x51\x0a\x9c\x1a\x85\x63\x9e\x9d\x89\x4a\x00\xb3\x0d\xe6\x84\x0c\x3b\x31\xe4\x8c\x61\x85\xcd\x50\x06\xcb\x61\x14\x81\x04\x56\xf7\x97\x13\x4c\xf3\x34\x9f\x18\x07\x4d\xe8\x0c\xa4\x46\x33\x59\x98\x6f\xd6\xe4\x41\xd1\x31\xb4\x97\x46\xf0\x03\x19\x47\x1f\x68\x2a\x90\x74\x3e\x2b\x18\x39\x93\xcd\x57\xd8\x63\xb7\x21\x39\x68\xa0\x0b\xa0\xad\x9f\x08\x4f\xcd\xbb\xb0\x78\xf0\xf9\x74\x52\x83\xc6\xbd\xb1\x1b\x2a\xe8\x4c\xa9\xaf\xd0\xfb\x11\x64\xcb\xb4\x4e\xeb\x09\x2a\xdf\x30\x64\x07\x9a\x18\x26\x71\x7a\xae\x95\xcc\xab\xc5\xff\xe7\x9a\xd1\xda\x10\x8b\x4a\x1c\xf8\x80\x0e\x6d\xf6\xee\x17\xde\x1e\x55\x04\xf1\xe4\x14\x15\x9d\xd6\xbe\xd1\x46\xf6\xa8\xe5\xf1\x91\x98\x75\x79\x09\x99\x18\x91\x6e\x7c\xd1\x73\xf1\xc1\xa7\x2f\x8f\x90\x17\x88\x6e\x42\x41\x64\x97\xb7\xc5\x01\x9b\xe1\xe9\xa5\xa5\xd1\x63\xf2\x7b\xf5\xed\xcf\x59\x26\x62\x6b\xcf\x69\xb3\xcf\x99\x04\xbc\xf4\xa9\xdf\xd4\x18\xe2\x68\x58\x96\x95\x84\x72\xb7\xb6\x4e\x8d\xc5\x8b\x1b\x12\x99\x28\xc5\x38\x77\x18\xb0\x4c\x93\x67\xad\x7e\x51\x0e\x2e\xcb\xdc\x75\xb1\x9a\xbc\x64\x82\xaf\x2f\x79\xc1\x3a\x95\x1c\xc6\xf3\x57\x17\x56\x47\x26\x4c\x6e\x2c\x0c\x83\xfe\xf5\x2d\x64\xd9\xb2\x41\x4f\x51\xec\xf5\x60\x33\xac\xce\x80\x5c\x8a\xe4\x10\xa3\xa8\x94\xae\x82\x64\xee\x38\x33\x96\x62\x36\x6e\x3a\x24\xa5\x45\x37\xa2\xca\xa7\x52\xea\xf3\x4d\xcc\x11\x2d\x5e\x94\xab\xa1\xa7\xce\x4d\x56\x12\x2f\xe9\xf9\x20\x3d\x04\x93\x7f\x4a\x36\xd3\x73\xb4\xaa\xb9\xa7\x99\x53\x69\xaa\x4d\x9a\x04\x59\x53\x6f\x59\x17\x65\x05\x3e\xfe\x8e\x10\x16\xfd\x23\x96\x1d\xae\x80\x4b\xfe\xbe\xb8\x54\xb8\xb5\xab\x1c\x57\x58\x4a\x57\x7b\x3b\x93\xbf\x58\x6a\x12\xd8\x06\x0e\x4e\x12\x77\x4f\xe4\x95\x17\x25\x5f\xfb\x2f\x5e\x00\x4f\x40\x79\x5d\xe3\x46\xca\x6d\xb7\xd0\x7a\x60\x6f\xa9\x9b\xab\x4f\xe8\xf6\xed\x71\x1a\x1b\x4e\x4b\xea\x8b\x47\xf6\xde\xff\xb3\x2b\x8b\x97\xaa\x6f\xde\xca\xbb\xa5\xc5\xdb\x75\xef\xc8\x85\x9f\xe9\x5d\x69\xf9\xd0\x85\x75\x7a\x33\xe7\xce\x5b\x4a\xf0\xcf\xef\x0c\x9e\xfe\xf5\x31\x8f\xec\xa6\xf8\x6f\xdd\x39\xb2\xf3\xc2\x8a\xe6\x30\x7c\xb1\xb7\xcc\x2c\x93\x4b\x0a\x13\xb3\x37\x0b\x36\xdf\xcc\xe6\x81\x9f\x12\x14\x6f\xda\x99\xb9\x95\xb6\xda\x76\x2b\x97\xf2\xe2\x2d\xbd\xa9\xfa\xd6\x73\x2c\x16\x4f\x2a\x1b\x7e\x7b\xd6\x36\xd7\xa6\xbc\xbd\x6f\x35\x6d\x5b\xa7\x5f\xbc\x3d\x19\x9b\x7e\x65\x8f\x03\xed\x51\xfb\x4c\xb2\x52\x57\xc6\xed\x19\x50\x53\x0a\x76\x7c\xdf\x01\x07\x32\x98\x0e\x72\x3c\xdd\xa0\x8d\xff\x90\x5e\x66\x24\xd5\x8b\x52\xb2\xf9\x9c\x80\xb1\x84\x45\xb5\x0d\x06\xd4\xf3\x87\xa1\x55\x3d\x0a\xa9\x7d\xad\x24\x88\xd9\xd0\xba\x3b\xf1\x44\x6a\xbe\x6e\xdd\xe0\x71\xb0\xcf\xc4\x28\x52\x8c\x0f\xd6\xbf\xcc\x74\xad\x20\xda\xde\x6b\x19\x4d\x02\x5a\xb0\x14\x55\xca\x9e\x5e\x29\xb3\xe4\xf2\x8f\x38\xd8\xdd\x2a\x06\x29\x93\x0e\x75\xc1\x85\x61\x85\x80\xdc\x99\xd9\x74\x50\x3a\x52\xb1\x47\x9b\x69\x38\xd7\xee\x25\xf0\x64\xa6\xe1\xa0\x98\x34\x91\x2a\x5e\xf6\xf9\x7c\x56\x3a\xae\xf6\x5c\x92\xad\x96\x12\xe6\x65\x08\xcc\x1e\xb0\x13\x56\x82\x76\xbe\x8a\x4e\x6a\x10\x58\xe2\x4b\x22\xb6\x76\x87\x90\x03\xee\x60\xc9\x26\x2b\x0b\x70\x15\xa1\x3c\xcd\xa5\xe8\x38\x73\xb1\xc7\xb6\x12\x93\xdb\x4d\xe0\x3e\x93\x6d\x95\x14\x9d\xb9\x70\x9c\x7f\x4a\x8b\xbc\x5c\x86\x2d\xf5\xcd\xcc\xe2\x7c\x3a\xa5\xbe\xe6\xcf\xb5\xaa\xad\x71\x79\xc0\x3d\x4b\xdb\x4d\x12\x83\xd9\x1d\x1c\x39\x03\xa7\x41\x7b\x9a\x4d\x84\x43\x62\x3e\x2d\xa3\x97\xfb\x52\xc7\x19\x70\xfa\x17\xdc\xd6\xd9\xcb\x6e\x39\x20\xd7\x1c\xeb\xa5\x0f\x43\x90\x96\x87\x99\x85\x48\x61\xaf\xc4\x51\xd4\x6f\x59\x63\x6a\xcb\x30\x79\xdc\x59\x41\x94\xbd\xb9\x9f\x1d\x44\xbd\x1d\x1a\x13\x5b\xbf\xbd\x66\xbd\x9d\x6a\xbb\x0d\x26\x47\x9e\x7a\xe3\x7b\xaa\xdf\x0c\xd3\x41\xf5\x14\x7b\xd0\x4c\xef\x7d\x8e\x4c\x4e\x26\xab\x96\x6f\x47\xa6\xe9\x38\x69\xf9\x31\x6f\xae\xfa\xa3\xa4\x93\x37\x8e\xa6\xce\x36\x64\x75\x34\xca\x53\x3d\xa7\x0c\xde\xf0\xde\x71\x0c\x00\xef\x42\xd6\x54\xb9\xef\xc6\x92\x80\xc8\x04\x34\x18\x86\x3e\x96\x2f\x64\xa9\x9e\x95\x51\xa1\x2c\x61\xa5\xc1\xe2\xb4\x10\xff\xa6\x84\x10\xb8\x3b\xd2\x14\x72\x21\x47\x6e\x54\x24\x15\x65\xc1\xe5\x55\xf7\xe8\x58\x7e\x82\x55\x6b\x39\x27\xb4\xdb\x86\xef\xd1\x3a\xef\x19\x26\xec\x3d\xf5\x32\x89\x2a\x6e\x22\xa7\xdf\x12\xe1\xd1\x22\x04\xc9\xb0\x1a\x98\x31\x4c\x40\x9d\xc6\x26\x5e\x3e\x12\xa2\x10\x6c\x36\x66\x92\xb0\x1c\xbc\x2a\x50\xeb\x7d\x50\x4f\x45\x53\x57\x58\x75\x9f\x7d\x71\xde\x6c\x74\x2f\x8f\x5c\x1b\xde\x6a\x48\x66\xd2\x29\x67\xc8\x47\x80\x08\xe9\x58\x74\xcf\xcb\x22\x1d\x94\x19\x43\x61\x0a\xe0\xb6\x15\xd3\x0c\xc3\xa1\x2a\x94\x7e\xa3\x4a\xef\xa9\x30\x9a\x58\xf9\x27\xb8\x8a\xf2\x69\xe7\x1f\x03\x29\x08\xa0\xe1\x24\xda\x00\x63\xc9\x6a\x3e\xbb\xec\xfc\x5b\x93\x90\x38\x68\x7f\x63\xda\x24\x9d\x74\x24\x92\x69\x6d\xd4\x24\xf2\x99\x77\x19\x4d\x89\xee\x7b\xfe\xd2\x59\xb4\xf6\xfb\x85\x56\x93\x80\x93\xb4\x86\x4b\xc4\xe0\x0d\x52\x4d\xdc\x62\xd7\x7c\xee\x2e\xe3\x4d\xcf\x46\x98\x05\x98\xd3\x64\x9d\xcc\x1c\x6f\xe5\x24\x6c\x0d\x03\xfb\x54\x68\xe0\x82\x68\x54\x70\x40\xf2\x32\xe9\xdd\x91\x34\x1d\xda\x88\x95\xae\xe6\x13\x04\x2e\xf8\x70\x7e\xc8\xb1\x04\xc5\x81\x35\xb4\x3a\x8d\xd4\x54\x87\x89\xa5\x6d\xdf\xec\xfa\xcb\xcc\xb6\x2e\x54\x7b\x22\x0c\xc2\x9d\x00\x58\xa6\x8f\x2c\x52\xff\xf9\x48\xe7\x9b\x9f\x37\x02\x18\x6c\x92\x8c\x2f\x4d\xd3\x69\xac\x2b\x11\x09\x7c\x2e\x25\x1f\x3e\x90\xa4\x9f\x57\xb5\x7a\x95\x64\x55\x47\x1f\xdb\x0a\x3a\x90\xdb\x10\x52\xc7\xb5\x1f\xdd\xe8\x61\x1d\x6e\x3d\x41\x7a\x2d\x93\x5c\xaa\xb7\xe4\xf1\x96\x78\xfa\xaa\x56\x5e\x85\xc4\x01\x52\x0a\xc2\x91\x9b\xd1\xc7\x78\x08\xd8\xfd\x39\xbc\xf0\xbe\x74\xdb\x97\x7c\x85\x41\xda\x72\xee\xfe\x32\x65\x26\xb3\xca\x77\x6d\xbf\x6a\x54\xf0\xb4\xe4\xee\xde\xa7\x9f\xf4\x29\x96\x53\xe5\xcf\x08\x26\x10\xf6\x4d\x72\x5a\x30\x04\x58\xa5\x4f\x26\x56\x65\x5c\x0d\xe4\xf0\x2c\x35\x94\xb9\x46\x88\xaa\x3a\xe3\x80\x1e\xbd\x9e\x18\x90\x45\xbe\x7f\x4a\xb8\x22\x87\xc7\xec\x3d\xd8\xea\xcf\x23\x71\x7f\x35\x68\x32\xa1\xa9\xcd\x8a\xe1\x09\xb1\xa3\xd1\x0f\xe5\x17\x48\x33\x89\xd6\x53\x0a\x57\x05\x76\xe4\xe2\x7b\xbc\x67\x86\x15\x57\xe3\x82\xde\x71\xac\xfd\x31\x03\xd5\xf9\xef\x87\xb3\xa8\xf5\xc1\xb9\x04\xc8\xd2\x2f\x14\xa3\x65\xcc\x95\x41\x0d\x44\x80\x93\xc9\xe7\x62\xc4\x4f\x49\x02\x2c\xc6\xc3\xcf\xe0\x6c\x33\x77\x1f\xd1\x80\xa6\xa0\xe8\xf8\x81\x57\xd5\x04\x1b\xfd\x30\x05\x6b\x71\xcf\xd2\x0a\xbd\xcf\x42\x15\xaa\x28\xbd\x3d\x2b\x54\x7e\x08\x11\x6a\xac\xde\x69\xaa\x19\x91\x7a\x10\xd7\xd6\xd6\x83\x70\x9e\xf5\x58\x1c\x59\x27\x87\x3c\x0d\x4c\x73\x16\xe5\x6f\x88\x95\x36\xef\x53\xba\x2d\x2e\x6a\x2a\x6f\x27\xaf\x69\x3d\x67\x1e\x58\xf4\x57\x63\xb8\x72\x15\xa1\x6c\xf3\x88\x43\xa5\xa2\x64\x42\x7e\x80\x9b\x1e\xc8\xe0\xaa\x7d\xed\xf9\x7f\xa3\xc5\x53\x58\xe1\xf7\x79\xfc\xe7\x50\xb8\x7c\xfc\x2d\x95\x26\xed\xec\x0d\x95\xb5\x5c\xb1\x8e\xf6\x64\x53\xf2\x1f\xbd\xc7\x7f\x1b\x98\x9b\xeb\x6d\x9f\xb4\x74\x7e\x00\x8c\x7a\x10\x4f\x35\x14\xba\xe4\x10\x6c\x48\x36\x2d\x72\x72\xe3\x59\x9a\xe5\xad\xe5\x03\x16\x24\x24\xf0\x7b\xb6\xc2\x13\x26\x56\xad\x47\xa7\xfa\xaa\xed\xda\x1c\x6c\xc4\x64\xe5\xf5\x25\x9e\xc9\xef\x76\xa9\x85\x86\x47\xbc\x9d\x12\xcb\x22\x17\x5e\xf4\x59\x39\xb9\xa3\xe0\xec\xaa\x03\xc1\xef\x4a\x77\x2c\x74\x1c\x22\xb9\xe0\x9d\xa9\x91\x57\x76\x76\x16\x27\x19\x45\x57\x4d\x3f\xca\xa9\x5d\xab\x40\xa8\xad\x45\xfc\x7b\xb0\xd8\xd0\xa2\xff\xc7\x6b\x74\xa0\x88\x8e\xd5\x07\x15\x18\x56\xa4\x6e\x62\xbf\xbf\x10\x3e\xa5\x7b\xd5\x8c\xd9\x5f\x00\xb6\xd2\x57\x5a\x64\xf8\x82\xf0\x21\x09\xa7\x3b\x44\x4d\x67\x86\x16\xae\x01\x03\x21\x38\x4f\x5e\xa3\xaa\x62\x5a\x36\xb2\xb8\x1c\x66\xbf\x7f\xe7\x14\xf9\xe8\x76\x97\x3b\xed\xd5\x76\xa3\x31\x29\x98\x15\x76\xec\x9e\x28\x0b\xa6\xf4\xc4\xda\x22\x9d\x00\x3b\x63\x25\x82\xdd\x0d\xb4\xe4\xe2\xff\x2f\x60\xb0\x80\xde\xdd\x86\xc9\x39\xcd\x3a\x1e\x0a\xe6\xe0\x98\x85\x46\xd7\xaa\x4e\x1e\x5a\x88\x85\xe3\x18\x49\x37\x91\x08\x12\xb7\x21\xb9\xf0\x63\x70\xda\xd9\x9a\x90\x83\xa6\x90\x47\x1e\x35\xc1\xe7\x8b\x58\x11\x73\x2e\x00\x2b\xb8\xc1\xe4\xca\xe1\x58\xec\x4a\x7c\x4c\x33\x7a\x88\x0a\x8d\xcc\xd2\xa9\xeb\x40\x30\x39\xfe\xa9\xd4\x47\xe3\x37\x96\xba\x44\x5d\x06\xe1\xbd\x32\x3a\x06\x14\x93\x32\x13\x9f\xe3\x19\x81\xd4\x05\x12\xcf\x89\x90\xc7\x99\xaa\x05\xe7\x39\x82\xe7\x59\xc5\x25\xa7\x94\x55\x40\xc9\x9b\x4c\xc8\x59\xd9\x6c\xde\xa6\x2b\xd1\x94\xed\x5a\xfa\xbe\x7e\x56\x1a\x95\x45\xb0\xa9\xca\xca\x76\xfc\x85\xf0\x86\x6b\x31\x34\xd0\xaa\x5f\xe0\x78\x9e\x00\xcd\x6d\x0f\x6a\x20\x79\x2f\xfb\xf4\x99\x1f\x0c\xa5\x47\x21\x01\xfb\x28\x08\x3b\xad\xea\xeb\x93\x24\x38\x73\x9e\x3d\x0f\x62\xf8\x14\x26\x46\xf6\xab\x35\x3a\x36\xdf\xa8\xf3\xa9\x31\x73\x10\x4d\x23\xb0\xda\x4f\x07\x06\x76\x32\x51\xce\x87\x5e\x5f\xa6\x2c\x9a\xd0\x2b\x0d\xd4\xae\x05\x85\xa5\x14\x7f\x79\xe0\x3d\x9a\x83\x9f\xab\xc8\x3e\x59\x21\x11\x65\xe6\x86\x5f\x9e\x58\x85\x71\x4a\x60\xa8\x60\xed\xe1\x37\x83\xc1\x5f\x75\xc5\xbc\x83\x98\x8e\xe7\x25\xda\x21\x44\xdd\x29\x68\xa4\x01\x7f\x4e\x2c\x1e\xe8\xb4\x3d\x6a\xca\x5b\x99\xfd\xe8\xd5\x26\x21\x60\xc8\xff\xea\x38\xcf\x79\x33\x0b\xe6\xc8\xff\x06\xc4\xac\xcf\x7c\x44\x3d\xe2\xfb\x6c\xd7\x32\x65\x9f\x87\x2d\xc8\x63\x87\x69\x71\x23\x9b\x40\x6d\xe3\x10\x06\xaa\x27\x43\x5c\x01\xef\x20\xaa\xfc\x56\xd3\xee\xb1\x1c\xc5\x94\x7d\x93\xe3\x3a\xac\x8f\x98\x32\x6c\xb6\x9c\x9a\x82\x51\xe6\xcf\xac\x05\x45\xee\x9e\x6d\xcb\xe8\x97\x14\xe5\xdc\xfc\xe1\x34\x85\xf9\xfa\x15\x12\x62\xef\x10\x59\x07\x61\xbe\x3d\x81\x34\x9d\xa5\xb2\x35\x09\x58\x7d\x4b\x1a\x1f\xe8\x40\x79\x59\x7f\x9a\x2d\xe1\x38\xc1\x85\xbe\x14\xa3\x88\x58\xbf\x48\x10\x93\x55\x12\x31\xa0\x1d\x3a\x79\xbb\x12\xe9\x21\xd3\x4e\x08\xe8\x23\x59\x0d\x68\x9c\x6b\x38\x13\x5d\x51\x40\x19\xd5\xbd\x6a\x7a\xc7\x4c\xe6\xb2\xb5\x8b\x9a\x09\x2e\x84\xe7\xe3\xdf\x83\x69\x70\x60\x93\xb7\x2d\x73\x5d\x0f\x40\xb8\xce\xe9\x4d\x7d\x81\x97\x49\xfc\x83\x49\x73\xc0\x4f\x4a\x93\xf1\x73\xf5\x29\x0f\xd9\x94\x8d\x6f\x99\xcc\x10\x3a\x65\x6e\x52\x15\x64\x56\xad\x1e\xe8\x90\xf4\xcd\x3f\xd1\xe6\x08\xb4\x4f\xdf\xb0\x17\x3f\x61\x4c\x3a\x73\xa5\xfa\x34\xe6\x04\xeb\xa6\x99\xeb\x7e\x04\x49\xf4\xd5\xf5\x3a\x66\x0e\x06\xfc\x85\x8a\x6d\x16\xfd\xe2\x75\xe3\x60\xb9\x55\x51\xf4\x89\xb2\xdd\xba\x52\x5c\xdc\x6f\x99\x64\xb1\x6d\x3a\x2f\x79\xa3\xcc\x66\xf6\x6b\x22\xc1\xc1\x1d\x85\xe5\xba\xeb\xb8\xaf\x6f\x8a\x5b\x0d\x6f\xf3\xf0\xb1\x10\x15\x72\xc1\x45\xbe\x87\x92\x7b\xfd\x60\x70\x3f\xb8\x3f\x21\x99\x87\xc9\xd3\xb9\x11\x3c\x89\x6a\xf9\xc3\xa0\x93\x2c\x0e\x41\xf7\xa8\xbf\x28\xd8\x7e\x11\xe5\x36\xcf\xc5\xed\x6e\x50\x4c\xa0\x0d\xd2\x94\x40\x1f\xda\x9a\x0f\xd4\x0d\x09\xc1\x93\x89\xb7\x40\x01\x69\x40\x09\x03\x5c\xff\x28\xc1\x3d\xfc\xb8\x88\x9a\x0f\xb7\x14\x05\x26\xfb\xc7\xde\x00\x6e\x0f\xcd\xbc\xd8\xb0\xf2\xe1\x0b\x73\x94\xac\xc2\x85\x71\x13\x9c\xc3\xe2\x09\xee\x4e\xc0\x8d\xcf\xb7\xd0\xd3\xb6\x5b\xf0\x18\x59\x6c\xde\xb9\xf6\x10\xd1\xfc\x7c\xdc\xec\x80\x9c\xa0\x26\xeb\xff\x0b\xdf\xb1\x74\x5a\x94\x31\xc5\xe3\xbb\x83\xfb\x0f\xb5\x9a\xea\xf6\x84\x76\x3f\x67\x7f\xfe\x7b\x32\x1e\xbf\x73\x1e\xff\xfb\x2e\xf8\xf8\xdf\x07\xef\xd1\x93\x9f\x23\x9c\x8c\x0e\xcf\xbd\xbd\xd1\xb6\x94\x7f\x95\xe5\xde\x7c\xf1\xc4\x2b\x70\x85\x27\x77\x76\x14\xdc\x27\x25\xac\x5f\xe7\xe1\xc1\x10\xfd\x91\x8d\xd1\x1c\x81\x29\x3b\x32\x9b\x83\x37\x78\x6c\xbb\x2c\x8c\x8f\x24\x61\xb1\x0c\x1c\x99\x0b\x67\xe3\x6c\x94\xc3\x56\xc8\x60\xae\x1e\x02\xc3\x57\x09\x84\xd3\x5a\x68\x58\x6d\x8c\xfe\x26\x89\x0f\x2b\x88\x38\x2d\x91\x87\x1b\xff\x26\x39\x3f\xf4\xd6\x32\xed\x63\xb4\x72\xf3\x76\x34\x95\xa4\x19\x48\x51\x22\x4a\x23\xf8\xf2\x33\x7d\xf4\x28\xf7\xad\xf6\x35\x91\xcf\xc7\xd7\xd7\x13\xbf\xb5\xdf\x7c\xd5\xbe\xc3\x16\x27\x59\x82\xd7\xb7\x91\x2c\x8e\x70\x86\x54\x85\xfb\x77\x30\x0d\x4f\x2b\x1a\xbc\xe9\xa4\xd6\x80\x4d\xf1\xdf\xaa\xac\xbd\x84\x70\xea\xe1\x70\x06\x41\x9f\x70\xdc\x84\x8a\xe7\xb2\xe3\x46\x56\x32\x29\xba\x1c\x77\xd8\xa7\x84\x82\x0d\x3b\xbd\xcb\xad\xd4\x91\x86\xad\x7d\x9c\x29\xbe\x00\x59\x95\x89\x44\xe0\x4b\xea\x8f\xe6\x9d\x0d\xc7\x56\x28\x48\xcf\xf7\xf2\x07\xba\xda\x6c\xa3\xc7\x6d\x92\x97\xcd\xea\x0f\x1b\x69\x02\xf4\x37\xe4\x30\x3f\x32\x9e\xbe\x14\xff\xee\x54\xda\xcf\x20\x34\x16\x4e\x7d\xdb\xd7\x33\x3a\x7e\x18\x73\xb5\xc3\x8c\xed\xf1\x48\x91\x3f\xb8\xdc\x92\xcd\x6d\xa0\x0d\x70\xa4\xd9\xa6\x34\x42\x7d\x88\x59\x59\xf0\xe4\x26\xb4\xbf\x73\x0c\x5c\x1c\x6e\xa1\x4b\x01\x62\x9c\xb3\xd7\x0f\x97\xbc\x85\x93\x05\x1b\x2a\xdf\x30\x92\x5f\x35\x76\xb7\x45\x6b\x55\xd8\xfd\x81\x29\xad\x00\x87\xc2\x04\x58\x9d\xb2\xf2\x74\xca\xa9\x99\xb7\xf2\xc3\xd6\x45\x9a\xac\xa4\x2c\xe1\x1c\xe3\x69\x60\x59\x55\xe6\x4d\xc7\x2d\x5d\xec\x81\xc8\x54\x14\x4c\xee\x6a\xe6\xee\xbe\x6d\xe8\x32\x77\x8c\x40\x11\x63\x6a\x51\x37\xee\xe3\xa4\xf9\x0a\xee\x62\xd8\xda\x9b\xda\x3c\xee\x10\xc1\xed\xda\x4b\xf9\xfd\xfb\x82\x4f\x02\x9f\xba\xaf\x99\x42\xe4\x68\x23\x0f\x66\xe4\x65\x0f\x0b\xa8\xf1\xb6\xa7\xe1\x62\xf6\x8a\xd6\x0d\x54\x5e\xa5\x94\x2f\x21\x9b\x6c\xa3\xf7\x9d\x55\x34\xa8\x8f\xb6\xfd\x20\xb0\xb3\xd5\xf7\xd0\xad\xaf\x82\xe9\x36\x6a\x86\xcb\xe5\x80\xe3\xc5\x92\x3c\x74\xf0\x67\x77\xc5\xc1\xa1\x1c\x76\x6b\x10\xf8\x6e\xbe\x7a\x0e\x8f\x2a\x8e\x88\x3a\xfd\x14\x6f\x5d\x0a\xb4\xae\x75\x85\x66\x8e\x23\x6e\x57\xa7\xe9\xb7\xa5\x8b\xfb\x4f\x24\xcd\x06\x2c\x4f\xf0\x06\x05\x7d\x5a\xf4\xe2\x4a\x94\xdc\x67\xf3\xed\x49\x1a\x1c\xef\x85\x45\x40\x7c\x1a\x5a\x4f\xb7\xb2\x87\x1b\x27\x18\x26\xf6\x74\xc1\xf7\x44\x68\x8b\x00\x21\x63\xb1\xc3\x12\xcd\x45\xf2\x73\xb3\x56\x48\xf4\x35\x6b\x11\x1e\xa0\x2b\x77\xa7\x1c\xa1\x80\xe2\x82\x15\x36\x1c\x92\x33\x6c\x8a\x17\x59\x8b\xd3\x8f\x07\x95\x09\x9f\x06\x41\x5b\xe1\xf0\xa7\x69\xcd\xb2\x0f\x74\xd9\xd1\x71\xd0\xe1\xeb\x24\xab\x49\x84\x3b\xcd\xf5\xdc\x92\xa6\x05\x88\x04\xcb\x16\x83\x39\x74\x46\xd0\xfd\x7c\x35\xeb\x0e\x6a\xfd\x24\xac\x9e\x46\x7f\x78\x3e\xe4\xd7\x9a\xc8\x79\x87\x2d\x33\x27\x83\x61\x82\x7d\x90\x18\x3e\xc4\x5e\x20\x42\x6d\x29\x8e\x83\x34\xc3\x7e\x86\x75\x48\x2f\x55\xa5\x26\x69\x00\x1a\x30\x17\x73\x59\x4f\xfd\x96\x2c\x26\x30\x3e\xf9\xfc\x73\x94\xff\x9b\xf9\x1e\xde\xc1\xc8\xda\xfc\x57\x57\x6e\x1e\x1b\x2c\xb1\x6e\x38\x29\x21\x1b\x98\x7b\x6f\x31\x84\x0d\x61\xed\x3c\x89\x19\xd9\x29\xc8\xce\x28\x2d\x64\xe3\x9c\xd8\x46\xbb\x36\x39\x1e\x41\xfc\xa6\x20\x01\x3d\xb8\x22\x0a\xa9\xfe\x58\x42\xdf\xb6\x66\x24\x28\x13\x11\x34\xfb\xd7\x68\x51\x2e\x5e\x47\x80\x21\x49\x4c\x87\x4e\xc8\x8b\x2d\x48\x78\x21\x0c\x4e\xde\x37\x78\x0b\xde\xa8\x3e\xe9\x80\x35\x1c\xc6\xc8\x5b\x0a\x18\x0e\x27\x44\x3b\xc7\xf8\x67\xbb\x04\xf5\xc3\x2d\x34\x9d\x98\xf5\x4a\x81\xb9\xd6\x81\x3d\xfc\xa0\x66\xfc\xc2\xc8\x6c\x4f\x10\x30\xfb\xfa\xe4\x26\x61\x74\x96\x55\x65\x47\x59\xef\x57\x93\xa5\x30\xf1\x8d\xa8\x44\xe9\x6c\x21\x41\xb6\xcd\xcf\xb1\xb2\xbe\x93\x58\x97\x6a\x47\x82\x9e\xe3\xb0\x62\x95\xf6\xcb\x18\x0d\xe0\xef\xca\x73\x9e\x1e\x24\xce\x63\x70\x5e\x9f\x9a\x58\x5e\xef\xe0\x2f\x4e\x80\xdc\xce\xe8\x94\xf6\xc6\xf4\x40\x2f\x4e\x98\x4e\xb8\x4f\x23\xa5\x13\x38\xc5\x1c\xf6\xab\x44\x6e\x84\x17\x11\xfe\x8a\xd5\x4f\x62\x43\x49\x04\xca\x96\xda\xa7\xb4\x93\x03\xe6\x4f\x33\x05\x2b\xa0\x0f\xb5\xdd\x23\x8c\xaf\xac\xd1\x03\xf6\x8f\x72\x44\x13\x53\x8c\x6d\x40\x84\x39\x7c\xfc\x52\xea\xa6\xdf\xdb\xf0\xde\x7d\x20\xa2\x11\x3b\x6d\x2f\xb6\x78\xe5\x86\x5a\x2c\xb2\x23\x4d\x2c\x31\x30\x7e\xdd\x40\x8b\x41\xbe\x4b\xd8\xdd\x15\x29\xb0\xb7\x30\x23\x8f\x13\xca\xa5\xe1\xc9\xcf\xf3\xe5\x39\xcb\xbf\xcd\xc9\x19\xad\xba\xe7\x07\xf2\xee\xf9\xc1\x12\xbb\x4f\x25\x50\xbd\xf6\x1e\x8b\x98\x32\x9a\x0f\xb7\xc4\x3d\x47\x26\xf4\xdb\xfe\xb8\x61\x78\x4d\xab\x14\x07\x9c\x77\x8b\x8e\x4e\x60\xd2\xf6\x98\xef\xfa\x0b\x93\xaf\x75\x75\x22\xde\x6d\xa5\x56\x9f\xd8\xb4\xf5\x8a\xb1\xa1\x7a\x8d\x24\xe7\xcd\x73\xe5\xff\x6d\x51\x6c\x07\xa3\x6e\x9d\xaf\x1e\xfd\xba\xe5\xa1\x65\x2f\x7d\x5b\x91\x84\x8a\x02\x04\x39\xd8\x35\x6c\x01\x2a\x6d\xce\xe5\x01\xe6\xef\xa6\x0c\xb8\x68\xa1\x7c\x4f\xa5\x54\xda\x18\x0d\x6e\xbe\x9c\x60\x0c\xf5\x1a\x0d\x10\x75\x62\xeb\xef\x82\xb5\x3b\x6e\x86\xaa\x14\xea\xb5\x43\xa5\x77\xd9\xfe\x66\x29\x02\x88\x1c\xf3\x52\x9f\xe5\x91\x53\xf5\x00\xf0\xba\x83\x2a\x38\xe0\x89\xc0\x16\x93\xca\x6f\xc0\xe0\xe8\x7d\x88\xe6\xca\xd2\xe4\x35\x27\x9b\x5c\x70\x2b\x5f\xb3\x6b\xa9\x2a\x74\x65\x25\xb5\x05\x3c\x64\xba\x6a\x88\x70\xc6\xce\x88\xc3\x42\xf0\xb8\x6d\xbe\x27\x01\x52\x30\x1b\xb8\xc2\xa3\x9d\x58\xc6\xe5\x85\x86\xef\xfb\x5b\xd6\x9c\x36\x67\xcd\xab\x9e\xaa\xd2\x0a\xb7\x8a\x99\x4a\xd8\x98\xa3\x70\xc6\xf5\xfb\x92\xc9\xc5\x14\xdf\x6b\xe8\x93\xd2\xfd\x36\x2f\x9d\xf2\x9b\xb4\x05\x9b\x1d\x43\xf6\x47\x4b\x1a\x3c\xd9\x48\xca\x06\x06\x31\x07\x2a\xcc\x7d\xf6\x1c\x13\x9c\x65\x02\x59\x96\xe2\x5a\xf3\x5e\xef\x69\xc4\x05\x55\x67\x08\x11\xa3\xde\x9a\x29\xb6\xc8\x2c\x56\x1a\x46\xc6\x90\xe2\x77\x22\xd5\x27\x43\xb1\xf6\xe8\xdf\xa6\xb8\xcb\xc7\xc3\x9b\xbc\x97\x95\xb8\xf4\x05\x34\x83\xc4\xdd\xdc\x26\xf5\xf9\x80\xfd\x46\xb4\x08\x38\x65\xed\xd9\x0e\x43\x6d\x0f\x8a\xdd\x94\xc6\x39\x82\x23\xb2\x2a\x8e\x0e\x8c\xa0\x05\x63\x95\x25\x57\x3a\x16\xc8\x47\x94\x3c\x1c\x3e\x8b\x9c\x45\x8f\x99\x14\xe3\xa4\x3c\xe0\xfa\x88\xfb\xa9\x01\x00\xa6\x54\x07\x02\xb5\x60\xc7\xdc\x98\x51\xd8\x49\xf6\x50\xd0\xbe\xea\x03\x4f\x46\x97\xd6\x6d\x88\x18\xb4\xe9\x1e\xbe\xc2\x02\xb9\xe2\x4e\xe9\x8e\xb0\x8b\xdd\x0e\x0f\x5f\x59\x42\x4a\x15\x9b\xc6\xc8\x8a\x67\x6b\x88\x10\xa0\x2c\xad\x01\xa9\x6c\x59\xdd\x6f\x9c\xfd\x0a\x4c\x93\x82\x10\xd3\x08\x4d\x14\xdb\x6f\xcf\xc6\x7b\x05\xef\x8b\xb6\x58\x2b\xf7\x09\xc8\x7d\x64\xd5\x57\x0d\xed\x7a\x17\x64\xec\x11\x03\x47\x6e\xf0\xfd\x68\x2a\xc0\x68\x4e\x3a\xc8\x4d\xa0\xfe\xfa\x68\x0d\x6c\xd1\x5b\xed\x7d\xd9\xf7\xc9\xe8\x37\x23\x8f\xef\x56\xf2\xdf\x79\x4c\x3a\x5f\x63\xa8\x33\xc8\x60\x90\xde\xa6\xd1\x85\x0c\xb7\x31\xd1\xf5\x50\x0d\x9c\xbd\xea\xa9\xaf\xdc\x6f\x59\x14\xc8\x08\xfa\x46\x89\xe6\xc1\x15\xf0\xed\x54\x66\xff\xcf\xf2\x87\xed\x22\x11\xdb\x67\xa5\x47\x1f\xe3\x5c\x3e\xa9\x36\x0d\xad\x76\x8a\xbd\xf9\x7d\x3d\x76\x13\xf6\x0d\x75\xe3\x0e\x2e\xcc\x04\xb4\x0b\x60\xa2\x03\x3d\x5a\x16\x9d\x4d\x1a\x0e\x3c\x15\xee\x90\x78\xc4\x08\xa8\x5b\x87\xc9\xdd\xa0\x1f\xa8\xdd\xa1\x4b\x0a\x7a\x6a\xbb\xf4\xa7\x2c\x66\x94\xdf\x9e\xea\x2e\xfd\x40\xae\x50\x3d\x3d\xe1\x81\xf8\x06\x8e\xfa\xdb\x53\xce\xb5\x96\xe6\x74\xe4\xa0\x25\x99\xb4\xa6\x8d\xfb\x08\x1e\x0e\xba\x46\x85\xa5\x56\x41\xa4\x6e\x36\x30\x03\x2c\xa6\x8d\xc3\xc2\x69\xea\xb7\xc0\xa4\x33\x71\xc9\xd7\xb4\x8a\x6f\xe8\xa6\x8d\xbb\xe2\xe0\x47\x89\xee\xac\xd0\x38\x4c\x21\x8f\x7c\xa4\x0c\x4a\xb6\x19\x08\xa6\x88\x8e\x93\x00\x4f\xaa\xa7\x69\xac\xa4\x4d\x87\xf5\x34\x4b\x43\xc3\x58\xe7\x80\xff\x22\x30\x00\x25\xa8\xc8\x68\x03\x7f\xe6\x87\x69\x98\x0c\xa6\x24\x12\xe7\x0e\x7f\x12\x23\x9f\x35\x22\x8f\xf3\xf3\x79\xf0\x31\x2c\x98\xe2\x17\x72\xcc\xe5\x0c\xe0\x68\x6c\x4d\x68\x01\xd3\x55\x10\x8c\x1e\x32\x68\xad\x7d\x0a\x47\x49\x40\x8e\xf6\xe2\x5c\x03\x44\x6a\xe2\xc7\x20\x33\xc2\xf8\x67\x68\xc8\xc0\x4d\x94\xc5\x16\x21\xfa\xf3\x3f\x4b\x6a\x42\x8a\x18\x2d\x64\x00\x68\x9a\x85\xd5\x78\x84\x1c\x56\xf9\x68\xc4\x17\x21\x8a\xcc\x6b\xb7\x7e\x0b\x5d\x07\x18\xb8\xd8\x3c\x18\xaa\xdc\xaa\xb2\xe1\x3c\xb2\x40\x59\x1d\x8c\x0c\xc8\x8d\x7a\x3c\x1f\x40\x25\x43\xeb\x7b\x06\x25\x46\xa8\xfb\x0d\xe8\x7a\x8f\x5c\xc4\x9e\xfa\x47\xef\x5a\xf7\xc8\xe6\x95\xfd\x32\x30\xef\xe6\x16\xaf\x3b\x02\x38\x5d\x9c\xa3\x7a\x6b\x7e\xbf\xf6\x14\x09\xc8\x34\xb0\x40\x70\x14\xe5\x81\x89\x97\x17\xcc\x35\x36\x2e\x8c\x7e\xf0\x72\x1c\xf6\x17\x84\x53\x16\x94\xce\x66\x04\x40\x82\x64\x18\xb4\x42\x36\x2a\x55\xd7\x60\x73\x70\x64\xc8\x46\xf1\x97\x2d\x3b\x25\x73\x1e\x35\x4c\x51\xb5\xd3\xcb\x70\x9a\x39\x30\x0c\x33\xf4\xbc\xbd\xe4\xd1\x32\x33\xe7\xf4\x36\x5e\xf4\xd5\x3b\x85\xe3\x69\x0a\x83\x7a\x0b\x58\x2f\x5a\x38\x2d\x06\x6f\x83\xdc\x2e\x60\xa4\x26\x14\xce\x71\x08\xe4\x51\xc6\x1f\x84\x52\x82\x44\x05\xae\x5f\xc3\xf3\xe9\x0d\x57\x7a\x64\xd7\x1a\x75\x31\x9b\xa7\x71\x36\x0e\xc2\x81\xbe\xcd\x99\xc2\x14\x92\xdc\xd4\x16\x1e\x9b\x7a\x1b\x75\xfe\x31\x66\xd3\x91\x3e\xdd\xe2\xe5\x84\x90\x3d\x7f\x9a\x49\xae\xf6\x1f\x3d\xaf\xf4\x28\x62\xaa\x48\xe5\x36\xba\x3b\x53\xd1\xe8\xfe\x96\x6f\x74\xe0\x21\xbb\xbe\xc7\xcb\x5a\x61\x98\xb9\xfc\x1e\xd4\xe0\x57\xa9\x23\x50\x0b\x1b\x2e\xd1\xd1\x10\x5b\xcb\x6c\x45\x67\x65\xa7\xfa\x36\x4e\xc8\xa1\x90\x8c\x14\x41\x8a\x00\x65\x49\xcd\x56\x2b\xcd\xbb\x04\x9e\xbd\x6a\xc7\xd0\xef\xfa\x75\xbe\x66\xce\x48\x2e\xc0\x1a\xc5\x3a\xab\x72\x56\xc9\x34\x49\xf3\x2f\x0d\xd3\xdc\xe7\x1f\xdd\xd4\xea\xcb\xb2\xf3\x47\xa0\xaa\xcb\xe6\x44\xd2\x94\xd5\x8a\xd2\xb5\x64\xd2\x3d\x30\x0d\xb6\x41\xfd\x00\x03\x8f\x51\xaf\xca\xd1\xc6\x00\x33\x59\x2b\xff\xd9\xf3\xf8\xdc\x6b\xec\xd5\x2a\xe6\x8e\x59\x9f\xad\xd6\x1a\x3e\x71\x5f\xa3\x3a\x57\x01\x00\x26\x69\x70\xb1\xf5\xfb\x62\x56\x46\x79\x8e\xd2\x61\xfd\xbe\x89\x3b\xec\x85\xfa\x8c\xe9\x0d\x1e\xf9\x2c\x24\x91\x1f\xff\xc3\xe2\xb3\x86\x4d\x16\x9c\xc3\x01\xaa\xe2\x1b\x5c\x58\x1f\x4b\xc7\x1f\xdb\x77\x58\xaa\x11\x3a\x86\xb5\xce\xb0\x08\xec\x8f\x46\x31\xf5\x0f\x0f\xfc\xff\xb9\xba\x4e\xb9\xd0\x1c\xeb\xac\xdf\xb4\x07\x2b\xf1\x07\x27\x52\x63\xe1\xc6\x04\xbc\x5f\xd1\x2d\xb0\xad\x7c\x34\x97\x1f\x90\xff\x1e\xbf\x03\x4d\xb9\x1e\x7f\x1b\xf4\xbe\x17\xf2\x64\xa5\xdb\xc7\xb2\xc6\xb3\x1b\x1e\x98\xee\xd5\xa5\x72\xe3\x66\x25\x04\x05\xf1\x37\xe2\x4d\x83\xf9\xdc\x8e\x31\xab\xb4\x43\x65\x52\x41\xa9\x6e\x95\xec\x74\xad\x44\x10\xef\xd3\xc6\x21\xbf\x2e\x0b\x4d\xd0\x0e\x21\xb6\x83\x6b\x1a\xcd\x33\xa9\xfd\x44\x1f\xd1\x1e\x60\x2e\xf8\xfe\xe4\xab\x0c\xd3\xa9\x2a\xb5\x8a\x3e\xc4\x80\xff\x57\x71\x54\x77\x9f\xb6\x5e\x29\x20\x2b\x4d\xc1\xec\x4b\x5e\x19\x1a\xd8\xf7\xa3\x73\x96\x4e\x5d\x31\xb1\xb7\xc3\x1d\x38\x7b\xd5\x3c\x4b\x6b\xb7\xbb\xca\x8b\x9e\x6c\x9d\xac\x9f\xab\x91\xa0\x69\x13\x69\xe1\x80\xb7\x85\x77\xfd\xf6\xc3\xe6\xbb\xe5\x09\x00\xc9\x21\x51\x66\x5a\x23\x3a\xc4\x33\x46\x46\x0b\xfc\x14\x13\xa6\xf1\xa0\x14\x27\x6a\x72\x60\x9c\x51\x62\x77\x8b\x0c\x5e\x60\x53\x11\xeb\x50\xb2\xf4\xe1\x07\xda\x4d\x68\xbb\x7e\xd6\xcd\x28\x8e\x5e\x6e\x89\x78\xf4\x46\x37\x0c\x4c\xa3\x79\xbc\xec\x47\x3e\x03\x27\x7a\x25\x15\x2f\x53\x57\xee\xe5\x02\xee\x36\xcb\xe1\xdf\x11\x41\x13\x1e\x0c\xe0\x5f\x01\x73\xe0\x69\xa7\xe1\xb0\xab\xc0\x25\xbb\xf5\x5f\x59\x24\x1c\x84\x62\x3b\xda\x24\x4b\xdf\xb8\xf8\x00\x94\x2b\x82\x18\xb3\x0c\xcb\xec\xe7\x3e\x8a\xb2\xbf\xea\x79\xb0\x47\x1d\x8e\xc7\x5b\x1d\xa3\xc2\x4e\x25\xd9\x2e\xc7\xaa\xa5\x7c\x66\x3e\x9d\x7b\xb9\x07\x52\x26\x77\xcc\xca\xca\x6d\x71\xec\x3a\x03\xf8\x77\xea\x18\x76\x36\xb0\xa8\xf4\xb1\x2c\x73\x75\xc7\xb4\x1d\x30\x8b\x88\x36\x47\x66\xb4\x36\x38\x44\x8a\x1c\x24\x4f\x7d\xa1\x3c\x74\x07\xde\x6d\x40\x84\x3c\x33\x13\x16\xb9\x02\x9e\x86\xfb\xf6\x97\xc6\x9c\x31\x35\x1b\xf0\xc9\xcb\x38\x72\x59\xcb\xe1\x1e\x71\xc7\x79\xbf\x9c\x30\xbf\x62\xe8\xca\x47\xf7\x4b\x2f\x7c\xce\x72\xd2\xbe\xbf\xa0\x5c\x2c\xae\x58\x9c\x7a\xfd\x89\x62\x73\xdc\x01\x2e\x64\x33\x1b\x03\xe2\x89\xf8\x90\x2e\x16\x14\x79\x39\x3f\x03\xb2\x8b\x0b\x34\xe3\x49\x49\x63\xa6\x0c\xf3\xd8\x91\x22\x23\x88\x40\xa2\x0e\xd5\xb2\xda\xf1\x47\xf8\x5c\x1e\x47\xaa\x10\x16\xe7\x95\xaf\xaf\xde\x3d\x2c\x24\x50\xd8\x5e\x77\xd9\xfe\x76\x3d\x81\x24\x1f\x9e\x61\x03\x31\xee\x20\x6d\x5b\x23\x73\x47\x45\x5a\x72\xea\x9c\x34\xae\xe8\xc1\x4f\xaa\x75\x61\xaf\x04\xa6\x0c\xc7\xc1\x7c\x82\x5a\x86\xbe\xe0\x89\x49\xcd\x98\x67\x1c\x6f\x5b\x93\x11\xbd\x76\x11\x38\x3f\x7e\xe2\x39\x88\x79\x78\x8e\x1a\x0d\xef\x1d\xd1\x65\x5b\x88\x0c\x0f\xd1\x4e\x0a\x60\x7e\xca\x08\xac\x1d\xcb\x0c\xe7\x1d\x22\x2c\xbc\x38\x69\x4d\x9f\x32\xce\xcc\x67\x43\xf8\xef\x98\xd6\x95\x08\x62\x35\x74\x53\xca\xb2\x78\x71\xee\xe1\xf8\x37\xdb\x24\x75\x17\xf3\xbd\xbf\x95\x22\x3b\xb5\x27\x15\xe8\x9d\xd2\x53\x42\xb6\xab\xd7\xd2\xbd\x75\x07\xa4\x2f\xc3\xaf\xd8\x04\x3d\xb6\x39\x28\xc2\xbc\x49\xfe\x09\xe8\x08\x9f\x70\x51\x39\xfd\x98\x42\x24\x2c\x16\x84\x96\x05\x42\xab\xb2\x29\x6d\xd7\xc1\xd2\x62\xcc\xec\xae\x1f\x7a\x66\x2d\xde\x0f\xf4\x7d\x16\xdd\xc1\x06\x13\xb1\xb8\x70\x8d\x2e\xea\xd8\x06\xba\xad\x52\xe8\x23\x60\x54\xb9\x10\x6d\x93\x8a\xa1\x9f\x44\xf2\x79\xef\x94\x32\x53\xbc\x43\xa8\x72\x8c\xf6\xe0\xc5\xfa\xcf\x86\x59\xd8\x60\xe9\x1d\x73\x43\x16\xee\xa8\x45\xa0\x0b\x38\x5f\xaa\xdd\x2e\xb5\x56\xed\x01\xa2\x2e\xa7\x04\x18\xfb\x1c\x3c\xec\x33\xf4\x16\xd0\x79\x1f\x91\x98\x0c\x32\x36\x51\x63\xda\x3f\xaa\x0a\xd7\x6f\x7a\x9c\xa9\x52\x6e\x38\x2e\xa0\xeb\x33\xed\x1d\xc5\x3f\x79\x78\x55\xef\x99\x63\x31\xb7\xf0\x4c\x15\xc6\xd5\x63\xa9\xe4\xf6\x36\x3e\x3a\xb6\x3b\xec\x79\xfb\x6d\x99\x5f\x6a\xfd\x44\x1b\x4e\x30\x5a\x53\x5e\x07\xfa\x2e\xf4\x50\xbc\x98\x4c\x27\xc8\x5a\x6b\xc0\x30\xe4\x40\x46\xa7\x29\xbe\x53\xde\x10\xdd\xed\x3a\x40\xa2\x1e\x87\xbb\xa6\x98\xa8\xc1\xb1\xf6\x18\x59\x68\x50\xba\xbe\x8a\x0b\x97\x52\x5e\x33\x8c\xaa\x08\x0d\xc1\xb9\xa6\x7f\x34\x36\xe5\x0c\x5c\x27\xef\xbb\x89\x4a\x78\xbf\xba\xce\x69\x8b\x2c\x68\x56\xe5\xc2\x7a\x16\x61\x7f\x36\xbc\x42\x8c\xa5\x67\x89\xbe\x56\x49\xcd\x96\x9d\x87\xf1\xea\xd0\x20\xc0\x95\x8c\x9a\xa3\x01\xf1\x56\x8f\x66\xec\x35\xe6\x19\x4b\x5e\x13\x8f\x3f\xdf\x1e\x74\xa8\xb0\x68\x01\xfa\x24\x71\x7e\x3c\x75\x71\x4d\xea\x95\x55\x39\x10\xf6\x03\x2a\xed\x27\x15\x32\xd0\xce\x08\xa1\x69\x6d\x5c\x2f\xc5\x4c\x31\x86\x06\xc7\x0f\x1a\xa4\x1f\xf2\xc3\x04\x1b\x13\x2c\x3f\x85\x73\xfa\x82\xce\xcd\x51\x2b\x03\x90\x8d\xda\x0e\xbb\xa3\x0b\x40\xcd\xee\xfe\x02\x18\x76\x4b\xa5\xac\x2f\xb2\x90\x6f\xe7\x4a\x72\x61\xaf\xd0\x59\x6a\x14\x5a\xe7\x9b\x42\xfd\x87\x6d\x52\x32\x25\xfc\x0f\xd9\xf4\xe8\x3f\x4b\xac\x42\x2c\x8f\xb1\xb1\x1a\xaa\x53\x32\x1e\x89\xbd\x17\x7d\x3a\x7e\x78\x50\x95\x82\xc6\xbb\xcf\x2b\x70\xd1\xd0\xa6\xb7\x85\x89\x67\x6e\xc4\x04\x58\x71\x9e\x10\x63\xd8\x0a\x00\x6e\xa3\x32\xc2\xbd\x95\x47\x9d\xed\x22\xaf\xbd\x82\x64\xba\xf4\x85\xae\xb1\xe7\x13\x82\x31\x64\x27\xb9\x3f\xef\xca\x47\xbf\x8c\x42\x1d\x77\xfb\x8c\x2e\x55\xdd\x6f\xae\x02\xb7\x77\x88\x0d\x8a\x3d\x3f\xee\x2f\xb1\xdb\xc7\x31\x8c\xcd\x31\x6a\xb7\x9d\x24\x54\xac\xe8\x27\xc8\x0c\xd9\xc3\x69\x2d\x57\xac\xc5\x79\xda\x76\x32\x1d\xda\xc4\xa8\x6c\x19\x23\x3e\xf3\x52\x6c\xd2\x0e\xc7\xea\x15\x8a\xb2\x2f\xe4\x74\x96\xbb\x6c\x4d\x34\xcf\x08\x19\xf5\x1c\xfa\x59\x93\x4b\x70\xe9\xce\xdc\xba\x2f\xfd\x18\x16\x62\xc3\xdb\x8d\x50\x48\xac\x30\x16\x7f\x92\x66\x2d\xe5\x9a\x26\x5a\x12\x28\x50\xc7\x8a\xf2\x49\x0c\x90\x7c\xf3\x0f\xe3\x03\xfa\x34\x37\xef\xef\x3b\x96\x0d\x90\xf9\xe9\x5a\x98\x1c\xb8\x9c\x90\x36\x1b\x1c\x56\x2a\x1f\x5b\x65\xab\xbf\x45\xb9\xee\x35\x80\x20\x20\xbf\xfe\x70\x01\xf0\x29\x07\xdb\x2f\xc2\xb7\x5d\x4a\xa0\xd7\xb5\x3a\xac\x74\x2a\x25\xcd\xd5\xfe\x21\xf0\xd3\x83\x92\x87\x04\x23\xd8\x14\xef\xcd\x40\x28\xdd\x5c\x21\x4e\xf7\x9e\xed\xa8\x80\x9b\x38\x6c\x09\x48\xd4\x84\x4a\x45\x15\x01\x31\xcc\x44\x6c\x55\x5c\x9e\x53\x78\xd8\xef\x26\xbb\xfb\x75\x6f\xb5\x16\x5b\x22\x9a\xc1\x29\xcc\xcf\xc0\x32\x5a\x56\x99\x41\x0e\x48\x17\xb9\x90\x66\x63\x13\x60\x9f\x9b\xce\x98\x8e\x2d\xfd\xff\x45\x68\x04\x67\xa0\xf9\x3e\x3f\x4e\xe3\xac\xa8\x07\x27\xb7\xc0\xcf\x39\x4f\x53\xa8\x56\xf5\xed\xe8\x64\xda\x17\x49\xdf\xd1\xc9\x85\x07\x3b\x9d\xfb\x84\xfb\x58\xe6\x45\xc0\x3b\x63\x94\x9a\x74\x83\x87\xad\x80\x45\x09\x7a\x01\x96\xcf\x7d\x97\xb3\x74\x3c\xb7\x0b\xf9\xc8\xe3\xbb\x00\xf3\x5f\xc5\x70\x25\x7e\x7a\x38\x73\xe8\x2c\x69\x87\xae\xae\x68\x6e\x37\x10\x57\x22\xb1\x6c\xf6\xda\x81\x15\x47\xa6\xf6\xdc\x99\xab\x44\x3d\x35\xcd\x70\xae\xf2\xf6\x4c\x9e\x9d\x73\x2d\x12\x6d\xb7\x92\x18\x92\xd2\x03\xb5\x68\x39\xea\x48\x0e\x9b\xd1\x9f\x20\x0f\xa9\x06\x00\x51\x49\x96\xb5\x4d\x90\x21\x86\x56\x87\x30\xe7\xd2\xf7\xb9\x02\x5f\x25\x29\x1a\x82\x48\x4e\xaf\x58\xfc\x5a\x0d\x78\xfb\x74\x55\x54\x54\xab\xc3\xd5\x4f\xf8\xf9\x6d\x53\x57\xb4\x1a\x2e\x8a\xfd\x40\xb5\x75\x16\x76\xb9\x70\x64\xfb\xbc\x89\x1a\xba\x98\x91\x25\xad\xf2\x62\xd7\xa9\x99\x63\x67\x7e\xfe\x21\xdf\xd1\x17\x36\xce\x54\xa6\xa2\x20\x1e\x00\x3c\x36\x97\x5d\x8b\x65\x9f\xab\xf8\x7e\xd3\x77\x7d\xb0\xe3\xaa\xce\x73\x4e\x57\x60\x09\x0f\x2d\xf5\xea\x72\x0b\x0b\xf1\x33\x93\x4f\x4b\x68\x77\x46\x38\x43\x03\x97\x14\x2f\x5b\x59\x1b\xb0\x2a\x5f\x24\xb7\x8d\xd2\xb1\x4b\x3c\x4c\x96\x92\x32\x8f\xb5\x90\x75\xe4\x8d\x90\x6c\xec\x64\x53\x00\xee\x56\x2d\xda\x9d\x67\x7c\xa9\x4a\xcb\xce\x82\x14\xb7\xf6\x1a\x1f\xaf\xb4\xcf\x2c\xd0\x2b\xed\xd2\xfe\xea\x35\xe0\x8f\xd5\x94\xa9\x7d\x5b\x4d\x4c\x16\x0f\x0d\x77\xc9\x45\x9d\x6b\x7b\xdd\x51\x36\xec\xd8\x3c\x59\x82\xf6\x34\x5f\x20\x28\x14\x70\x39\xd2\x59\xef\x76\x48\x32\x8b\xb6\x6f\x41\x1d\x2b\xa3\xc2\x9c\x25\xc6\x6e\x5a\xab\x0f\x71\xfc\x35\x16\x7c\x7e\x9b\x8f\xab\x7c\x8e\x81\x32\x02\x1a\xd3\x5a\x28\x84\xc2\x37\xdc\x4a\x12\x89\x1f\xf4\xd6\xe8\x1e\x2a\xfc\x12\xb3\xb7\x56\x75\x8d\xa2\x5a\xc8\xf2\x96\xc8\x5e\x05\xb1\xf6\x9c\x03\xde\x15\x00\x70\x37\xf6\x8d\x07\xca\xdb\xd3\x47\xbe\xce\x56\xed\xfb\x88\x74\x94\x3a\x29\x49\x63\xa4\x2c\x4f\x56\x7e\x03\xad\x3d\xcd\x4e\xc5\xf5\x05\x43\x20\x5c\xb5\xd2\x1e\x26\xe7\x67\xd7\xbe\x72\xda\xe0\x74\xb2\x9a\x11\xda\x9d\xab\xd3\xc8\x64\x34\x87\x2c\x25\x9a\x49\xb8\xa0\xf5\x63\x5f\xd2\xad\x6e\x84\xed\x99\x61\x60\xd8\xab\x4a\xed\x1d\x52\xef\x14\x42\xa8\x1b\x4d\x35\xb2\xa6\x10\x98\x6c\x2b\x92\x8d\xe3\x12\x3d\xdc\x81\x45\xa8\x80\x53\xca\x15\x49\x37\x12\x2f\x22\xd1\x2f\xdc\x5c\x7b\x0d\xb3\x8a\xa9\x70\xae\xb7\x35\x67\xb6\x35\x9e\x0b\xbd\x33\x43\xc2\x51\x81\x40\x06\x1e\x57\xd2\x7b\xcd\x3c\x32\x11\x16\x43\xa8\x1b\xc2\x30\xef\xb6\x12\x54\xed\x76\x99\x41\x40\xb6\xb5\x78\x94\x17\x84\x5d\x0c\x6a\xf5\x1c\x05\xc6\x39\x84\x2a\x5d\xc2\x9c\xf8\xbe\x9f\x3b\xa4\x75\xac\x4c\x96\x9f\x3d\x6b\xb3\xac\x6d\xa3\x97\x7d\xb2\x10\x81\xf9\xfe\x20\x15\xd4\xb3\xf2\xbf\x39\xc0\xe8\x7e\x3b\x1b\x25\x16\x2a\x0c\x5c\x22\x7d\x0e\xe3\x6d\x43\xe4\x34\xd8\x60\x6e\x0c\xcb\xb6\x3a\x58\x45\xa9\x15\xb4\x9d\x3d\xcc\x02\x46\xac\x39\x20\xab\x6f\x81\xdf\x36\x77\x1f\x96\xe1\xaa\xb6\x2a\x8d\xc5\xb3\x37\xb6\xb9\x55\x46\xc5\xbd\x74\x42\xc0\x87\x50\x1e\xd9\x56\x86\x20\x57\x21\x26\x13\xe2\x54\x0c\x1c\x85\x5d\x9b\x13\xdd\x75\x72\xaa\xcd\x7a\x23\xb3\xd8\xca\x88\x16\x97\x63\x73\x22\x61\xab\xa6\x43\x6e\x04\x9c\xef\xb6\x3e\x17\xae\xcc\x08\x3b\xa5\x7f\x47\x45\xa8\x9f\x54\x6b\x41\xd4\x50\xb4\x10\xbb\x5b\x8f\x08\x76\x0a\x34\x7a\x65\xe4\x51\x80\x8b\x83\x18\xd7\x25\xff\x85\x2f\xe6\x4b\xdf\x96\xca\xb0\xf8\xbc\xe2\xef\x4d\x78\xfb\x12\x45\x15\xb9\x80\xe4\x4c\x55\x36\x37\xcf\x80\x3f\xfb\x54\x29\x75\xa2\x50\xdc\x42\x9b\x59\xcd\x56\x24\xbe\x8d\xcf\x1a\x70\xcb\xe4\x7a\x19\x62\xcc\x81\x70\x83\x27\x70\x6e\xec\x00\xec\xb5\x50\xba\xc2\xf1\x9f\x31\x9c\x8b\x77\x2a\x10\x02\xa1\x6b\x61\xa4\x8a\x65\x3d\x4e\x56\x02\x97\xc4\x91\x4d\x09\x3c\xde\x2f\xa5\xd7\xbc\xab\x14\xc8\xb0\x5d\x6b\xb7\x45\xcb\x70\xe1\x06\x0e\x43\xf1\x2d\x85\x7a\x5c\x28\xc8\xfe\xb9\x9a\x76\x10\x21\xa6\xa2\xbf\xc8\xde\x0f\xc9\x3c\x2c\x77\x98\x65\x81\xaa\xd1\x04\x96\x55\xac\x8e\x4b\xe7\x97\xf1\xaa\x67\xdd\x4b\xfd\xc1\xfd\xf2\xd5\xaf\x1e\x99\x44\x0c\xce\x2a\xf1\x79\x60\x1e\xc8\x52\x19\xcd\x68\xaf\xe9\x9f\x13\x6c\xfd\x8e\xad\x3a\x31\x4f\xb0\xdb\x20\xa3\x00\x80\x7d\xac\x2b\x06\x88\xf4\x6c\x01\x97\x2a\x27\xb4\x97\x99\x1d\x4e\xdd\x11\x22\xcb\xf9\x28\x4c\x93\x6d\x43\x89\x6c\xd8\xcd\x7c\xaf\x25\xa7\x8b\x02\xa2\xd7\xad\x20\x29\xa4\x96\x58\x67\xc5\xcc\x18\x2e\x8f\x31\xaa\xa6\x64\xc5\x70\x5e\x5e\xfa\xaa\x71\xc2\xd8\x51\x84\x15\x63\xa9\x03\xb0\x2a\x5e\x92\x31\xf7\x16\x6f\x36\xe4\x79\x81\xca\x46\x88\x53\x2f\xf6\xff\x54\xa7\x80\x49\x86\x14\xe0\x8a\x7a\x6c\x59\x4d\xd0\xf2\x50\xf0\x37\x36\xe2\x77\xd8\x7e\x64\x95\x90\x52\xb7\xf7\x6a\xa1\xa1\x78\x5d\xab\x95\xb9\x77\xd8\xd4\xf1\x46\x9a\xc9\x27\x49\xbb\xf1\x1a\x01\x62\xa0\xdc\x9c\x98\xa1\xd3\x97\xd0\xe4\x9b\xb2\x86\x0c\x88\xc0\xb0\x28\x82\xc6\x13\xae\xc8\xa6\x3c\x30\xcf\x79\xd7\x41\x71\x94\xa5\x74\xed\x50\x21\xc7\x90\x6a\xf6\x02\x6a\x7b\xbc\x57\x17\x34\xc7\x39\x59\x3f\xd6\xaf\x75\xaa\xa3\x88\xf9\x01\xfd\xd2\x69\xb6\xf1\x35\x2e\xab\x47\x3f\x66\x2f\x0a\xa5\xd9\x27\xc8\xdf\x42\x7b\xf3\x58\x09\x2b\xd0\xe2\xd6\x88\x86\xc7\x25\x86\x89\x90\xd9\xf3\x4a\xfa\xd9\x39\x1a\x2b\x5b\x95\x65\x88\x64\x54\xb7\xa4\xb2\x02\x8c\x7a\x26\x4b\x05\x66\x86\xd2\x12\x46\xa6\x87\xad\xa6\x64\xa7\xb6\xfe\xff\x1c\x2e\x9d\x5c\x70\x3b\xa3\xfd\xdd\x29\xb2\xc3\xf4\xcf\xd6\x6f\xda\xd9\xbb\xdd\x8c\xd3\xc9\xa9\x00\x47\x62\x30\x4a\x30\x62\xd0\x37\x2d\x59\xc9\x35\x9d\xba\x45\xe3\xb6\x04\xa6\x50\x6e\x86\xea\x9d\xac\x62\xb0\xc9\xf8\x50\xc6\xce\xb6\x06\xf1\xdb\xb6\xaf\x93\x31\x5c\x22\x0e\x3f\xcb\x7b\x6c\x0c\xb1\xb0\x8f\x45\xab\x26\x7c\x86\x96\x35\xec\x7a\x16\xdb\xdb\xb8\xa4\x0b\x68\x49\x3e\xef\xf9\x88\x57\xb8\x02\xef\xc2\xa5\x5f\x0d\x0b\x9b\xee\x04\xdc\x61\x00\x79\x0a\xbe\x08\xf1\xcb\x85\x0b\x9e\xdc\xc3\xe7\x33\x17\xa4\x69\x3e\xe2\x6d\xfe\x62\xba\xd0\x47\x16\x49\x5a\x14\xbf\xe6\xfc\x62\xaa\x50\x02\xf5\xed\xb2\x97\x2c\x1e\x36\xa2\xb4\x6f\xe5\x88\x67\xf8\xec\xf0\x61\xf6\xb6\x3d\x2a\x97\x3d\xe3\xa9\x3a\x9b\xa5\xd4\x6d\x4b\x5f\xca\x36\x2d\x8b\x8a\xbc\x8c\x2e\x39\xd6\x8f\xcb\x39\xc7\x40\xad\xf6\xbe\x6a\x45\x9b\x19\x58\x3d\xc8\xab\x96\xb4\x10\xb5\x7a\x96\x4a\x39\xd4\x34\xad\x15\xf3\xeb\xb4\xce\x57\x95\xe1\xdb\xa1\x72\x0c\x2d\xa5\x49\xc4\x42\x57\x2a\xbc\x3a\xda\x94\x66\x54\x41\x63\x26\xbb\x5b\x54\xef\x32\x78\x2b\xd0\x4e\xf0\xb4\x58\x0a\x4b\x5c\x1b\xa6\xff\x71\x6d\x92\xce\x27\x3b\x3a\x8d\x15\x12\xc6\x41\x3e\x7d\x87\xf3\x0c\xa3\x47\xf2\x9a\xc5\x07\xf9\x4d\x46\x33\x07\x16\xe9\x08\x35\xea\x22\x2d\xa7\x27\x33\x34\x60\x26\x2c\x65\xa6\x38\xb0\xca\x3c\xc6\xe5\xd0\x38\xac\xc6\x85\x86\xee\xa4\x53\x25\xc2\x51\xcc\x1b\xe2\x9a\x69\x6d\xaf\xd1\xba\x15\xbc\xdf\xa2\x0b\xf9\x7e\xb1\x5a\xac\x9d\x57\x3f\x2a\xb4\x4f\x9e\x14\x4f\x6b\x75\x6f\xf4\xfc\xd4\x2b\xbf\x9f\x68\x6b\x6f\xc9\xb4\x15\x40\x83\x51\xd8\xd4\x78\x8a\x96\x9a\xe2\x0e\x07\x6e\x10\x3a\x40\xc0\x5e\xc6\xd9\xe5\x7d\x50\x9e\x77\xf7\xd2\x9c\x0d\x73\x60\x19\xf6\xcb\x87\x17\x7e\x68\x80\x74\xdc\x64\x39\x52\x7f\xf6\x33\x47\x3e\xbc\x22\x7d\xfb\x65\x03\x6b\xa5\x97\xcf\x62\xfd\x6b\x70\x93\xa3\x9e\x2a\xca\x25\x70\xc9\x5f\x74\x71\xb4\xfa\x6a\xae\xd8\x30\x44\x8f\x86\xa2\x98\x9e\x63\x3b\xd4\x48\xd3\xb1\xaa\x57\x78\xd0\xcb\x22\x43\xcd\xc5\x70\x47\xdd\x00\x4e\x0a\x36\xb4\x59\xec\x80\x11\x54\x9c\x3d\xc9\x70\x6e\x28\x62\x4c\x71\xd2\xa2\xaf\x80\xa8\x80\xe6\x81\xde\x59\x5c\xa8\x9a\x09\xb8\xc3\xae\x40\x6f\xcf\xfe\x99\xce\xa6\x48\xe7\x60\x6d\x4c\xfd\x7b\x24\x55\x96\x26\xcc\x6b\xbe\x2e\x62\x07\x62\xd6\xcc\x4b\x43\xe5\xac\xac\x89\x4b\xa8\xfb\xa8\x43\xb5\x39\x8a\x38\x59\x48\xd0\xf7\x81\x33\x52\x23\x04\xab\xba\xac\x96\x94\x40\x58\x02\xa4\x65\x56\x77\x58\x76\x2d\x66\x29\xef\x57\xbb\xb1\x8a\xbe\x07\x77\xc7\xed\x2e\x62\xd3\x14\x48\x60\x19\x1e\xbf\x73\xc0\x5b\x3a\xd0\x33\x06\x92\xe9\x7e\xbd\x03\xa8\x31\x26\x3e\xaf\xa9\xcf\x96\x0f\xa2\xd7\x6f\x15\x7c\x55\xde\x3f\x58\x28\x53\x17\x6f\xc7\xef\x3b\x47\x9e\xdd\x9a\x3a\xf1\xfc\xae\x96\xc1\x4c\x38\x8c\x25\xec\x70\x54\x22\x14\xc7\x99\xdb\xa2\xa5\xe8\x2a\x33\x79\x32\xd0\xc2\xf8\xbe\xc1\x36\x64\x47\x1f\x1f\xc1\x9c\x9e\x0b\x4e\xb0\xa4\xc0\x5d\x39\x04\x05\x8f\x25\xf8\xd6\x55\x7b\x3d\xf8\x7b\x3e\x82\xcd\xdb\x11\xe6\xd3\xb0\x28\x5a\x10\x23\x71\xaf\xad\xf2\xdb\x49\x88\x34\xb9\x41\x60\x27\x62\xdc\xbc\x3a\xd3\x0b\x37\x52\x01\x1d\xe7\x7a\x74\x39\x46\xdf\x3c\xd0\x53\x10\xec\x26\xeb\xc5\xea\x2f\x8c\x0c\x2a\x80\x56\xba\x6a\x84\x58\x34\x85\xe5\x73\x7b\x08\xa5\xd7\x4b\x6e\xae\xf7\x6c\x3a\xe8\x5d\x69\x56\x78\x4f\x17\x96\x58\xc7\xc2\x60\x0e\xe4\x15\xa4\xbf\xb3\x70\x90\xc5\x9a\x31\x8c\x0d\x17\x41\x7f\xed\x8d\x90\xd7\x5a\xf2\xe8\xfe\x85\xab\x4e\x61\x41\x4e\x0a\xff\x44\x17\xe9\xcd\x4b\x49\xd7\xc5\xeb\xac\x8d\xab\x60\xf5\xff\x37\x57\xf2\xa5\xf8\x04\xc5\xc2\x16\x4a\xf0\x5a\xb8\x35\x51\x09\x70\x68\x25\x46\x7b\x61\xad\x3a\x1d\xbc\xee\xe6\xc3\x4b\xb1\xf8\x92\x38\x19\x68\x95\x5a\x02\xa9\x7b\x96\x85\x87\xb2\x77\x07\x6e\x91\xe7\x82\x46\x7d\xe7\x9f\x02\x6d\xfd\x67\x3d\x15\x45\x38\x16\xd5\xb1\x29\x6a\xa0\xcb\xe4\xb5\xc1\x8b\x47\xcd\xe7\xfe\x84\xc3\x1b\x9f\x3d\x15\x0e\xdf\xbd\x9e\xc4\x54\x9b\xcf\x58\xa2\x37\x7e\x7e\x47\xaa\xb7\x5e\x0d\x14\xad\xd5\xe8\xf5\x9c\x22\x38\x4f\x89\x25\xba\x3c\x0f\x06\x67\x26\x9f\xbd\xe9\xd9\x7b\xc6\xec\x97\x7f\xa5\xc4\x64\xdf\xdb\x67\x23\xa4\xee\x19\x7c\x88\xaa\x4e\xf6\x56\x8d\x51\x8e\xb1\x46\x8f\xad\x0a\x25\x3f\x69\xa7\xfc\x76\xe4\xa8\xff\xcc\xf7\x25\xfd\x5b\x7c\x5f\xc4\xcf\x80\xeb\x52\x01\x22\x4d\x04\x06\xb2\x2c\xc2\xdf\x48\x0a\x0b\xc3\x67\x27\x72\x3b\x12\xb5\xd2\x28\x85\x73\x72\x1f\x63\xf8\x85\x98\x5a\x1e\x06\x7a\xf3\xb6\x7a\x6c\x26\xd0\xdf\xa3\x13\xd6\x44\x25\x39\x40\x76\xee\xe9\xe8\x7d\x63\x7b\xf0\x37\x7d\x5e\x2a\xef\xbe\xfe\x86\xa4\x33\xc1\x22\xc9\x30\x41\xc3\x59\x70\x1e\xf3\xb2\x01\x34\x47\x4a\xfa\x79\xe3\xce\x88\x99\x89\x47\xc3\xf3\x79\x6c\x3c\x59\x2d\xe3\xa6\x0a\x67\x06\x4f\xaa\x07\x1f\xab\xab\x91\xa1\x64\xcf\xfe\x8f\x07\xd2\x74\x82\xef\x9d\x4c\x82\x01\x94\x86\x68\x45\xdc\xb8\xe6\xfd\xaa\x9e\xc0\xf4\x04\x62\x3d\x8f\x4a\xdd\x6c\x33\x08\xbf\xa4\xd0\x15\xa7\xe8\x1e\xc2\x0e\xf4\x3e\x46\x0a\x42\x8f\x82\x53\x1b\x22\x4f\xe3\x3f\x0d\x65\x3a\x0e\xbf\x17\x81\x20\xc6\x2f\xd3\x25\xe0\xa3\x51\x93\xd9\x81\xbf\x9a\xd6\x07\xe7\xa3\x61\xa5\x31\x0f\x88\xe8\x3a\x4e\xf0\x66\x95\x4f\xc7\x5f\x18\x00\x3d\x4d\x75\xc9\x69\xd0\x2f\xa0\x8e\x08\xc7\xff\x64\x0d\xc6\xc7\x45\x33\xd8\x52\xb1\xae\x50\x2d\x19\xe7\xdb\x08\x22\x14\x79\x63\xfe\xc9\x10\x01\xa5\xdc\xff\x41\xc0\x0a\x32\x09\xcf\x43\x3f\x68\x52\x0c\x46\xd9\x0d\x63\x6a\x3b\xbb\x23\x13\xe1\x7b\x22\xfc\xea\x51\xf0\x1b\xa3\x77\x32\x15\x1a\xa1\xcc\x4f\xf5\x3a\x93\x69\xe6\xe4\xcc\xdd\xe6\x71\x7d\xaa\x1e\xd3\x40\x07\x81\x6b\xdc\x82\xc1\x2d\xa5\xcd\xea\xef\x27\xa8\x91\x0a\xbc\xf9\x64\x99\x43\xd0\x5b\xf6\x33\x03\x83\x6d\x13\xa0\xd5\x91\xdc\x41\x7c\x29\x90\x1d\x62\x74\xcd\xd1\x00\x2c\x54\xfe\x86\x57\xad\x17\x4a\x8e\x6d\x9b\x1a\x45\x28\xeb\xc2\x95\x84\x3e\xe9\x91\x24\x27\x64\xa1\xda\x03\xd9\x08\xbc\x58\x1c\x48\x36\x20\x5c\x5b\xed\xf5\x40\xc5\xb9\x9b\xe5\x63\xa7\x5f\x09\x6d\x97\xbf\x49\x7b\xf6\x87\xdc\x15\xa2\x36\x4b\x97\x29\x81\xe0\xa7\x69\xd2\xde\xab\xfb\x38\x03\xd9\xae\x37\xed\x1b\x1e\xc9\x54\x51\xb6\x9d\x6c\x0c\x6c\x6f\x3f\x88\x48\xb4\xb6\x89\x43\xb6\x7e\xda\x24\x47\x19\x53\x69\xb5\x7f\xa4\x43\x8a\x47\x25\xca\x4f\xa5\x9b\x2d\x06\xb9\x98\xb9\x8f\x9c\x71\x7b\x3c\x65\xfd\xe6\x7a\x32\xd1\x59\x43\x26\xe6\x3b\xed\xcf\x07\x15\xdd\xde\x3e\x39\x4b\x6d\x1e\x99\xf4\x1c\xc0\x7d\x1a\x5f\x1f\x2e\x7a\xde\x23\x8e\x32\x5a\x21\x1d\x7a\x55\x70\xa5\x32\x1c\x36\x5f\x9f\x4b\x8f\xca\x5d\x64\xff\xc4\xfb\xf0\xe9\xba\x05\x1c\x1a\xa8\x14\xdb\x57\x2c\xe5\x28\xb6\x60\x03\x2e\x37\x7b\x18\xf7\x0d\xf6\xc3\x99\x26\x55\x2a\xd5\xc7\x2d\x45\x05\xb7\x63\x53\xbe\x21\x2f\xab\x6a\x21\x52\x02\x15\xe2\xd7\x10\x40\x82\xd7\xa0\x01\xee\xd3\x10\x71\xb3\xc8\xe9\xa3\x97\xd1\x81\x0a\x93\xee\x22\xf1\x3f\x35\xe6\x13\xec\x08\x7a\x3c\x05\x09\x60\x73\x4b\x34\x80\xa4\xaa\x1c\x3b\x95\x51\x73\x51\x97\xd8\x6a\x52\x26\x78\xfb\x2e\xb1\x4b\xf5\xb1\x2d\x71\xdd\x15\xf4\x44\x2d\xfe\xdc\x09\x73\x6a\xd5\xd8\xe4\x72\x9e\xf7\x59\xbd\xc4\xab\xc4\xd6\x79\xa3\x16\xef\xba\x9d\x7d\x2e\x5b\xc0\xd3\x8f\xfb\xb1\x32\xc9\x25\x61\x08\xf5\x10\xae\x9f\x93\xf9\x45\xfb\x13\x68\x8b\x67\x7b\x13\xc3\xab\xbf\x4d\xfd\x6b\x8c\x10\x64\xf8\xcb\xb8\x98\xb9\xd9\x7e\xae\x17\x9a\x19\x93\x0f\xd4\xb9\x89\xe6\xa9\x54\x25\x5a\xd3\xf8\x63\xad\x6b\xda\x66\xc1\x89\x1e\x22\xd9\x31\x4f\xb3\x39\x39\x39\x96\x11\x00\xda\x22\x71\xc8\x1c\xc6\x2d\xfc\x62\x9a\x80\x3f\x10\x9a\xdd\x31\x56\x57\xc5\x73\x95\xd6\x4d\x5f\xf9\x75\x7b\x04\x28\xef\x21\xd1\xe2\x8f\xbb\xcc\x1e\x0c\xbb\x99\x44\x6b\x67\x2a\xd4\x58\x92\xe3\x90\xf3\x7a\xb1\x3e\x68\xc5\xca\xa9\x29\xb4\x73\xed\x7c\x51\xfa\xab\x46\xa8\xfe\x6c\x4d\x33\xea\x1d\x8d\x49\x3c\x70\x5a\x57\x6e\x49\x23\x96\x2c\x3e\xe4\xde\x10\xc1\xdf\x43\xe8\x67\xc7\xee\x19\x7a\x62\x52\xf8\xce\xaf\x9e\x00\x8b\xfc\x0e\xd9\xfc\xb7\xb6\x2e\x01\xf6\x30\x3e\x24\x2b\x5a\xb5\xc1\x84\x9a\x1e\xdf\xf8\x36\x4d\x4f\x7e\x32\xa3\x5a\x6f\x3b\x38\xeb\x72\x74\xda\x68\xbb\xe8\xa3\xc0\x9e\x40\x89\xde\x21\xca\xd8\x77\xe1\x24\x45\x45\x5b\x57\xa3\xb3\x30\x90\xe0\x39\x82\xdb\x31\xa3\xd5\xa4\x23\x89\x10\xdf\x9e\x8a\xa5\x93\xf4\x70\xfb\x84\x58\xf9\x3c\x67\xd4\xc9\xc6\x58\xab\x96\x6e\xc6\xfc\xa8\x2b\xcf\x8f\x86\xaa\xc5\x67\xb2\xfe\xfa\xdb\x51\x9d\xdd\x6c\xd4\x33\xd5\x53\x89\x7a\x9e\xf1\xfd\xbc\x80\xbf\xbe\x85\xe2\x01\x7a\x62\xd5\xbb\xe4\x5e\x7d\xc3\x89\xf1\xd8\xeb\xb4\xb5\x4c\x6f\xdc\xec\xc7\xdf\xb0\xae\x24\x41\x68\x0a\xde\x0a\x12\x98\x42\x7d\xf9\xe8\xdd\x79\xaf\x49\xbb\xf7\xf4\xf3\x9c\x8e\x0f\x3c\xdc\x2f\x9e\x17\xb2\xc5\x9a\xf0\x80\x17\xe6\xc5\xea\x79\x61\xa5\x79\x18\x04\x56\x24\xd6\xe5\x55\x5f\x64\x58\x8a\x22\xbf\x1e\x49\x0f\x83\x64\x97\x32\xe6\x5b\x35\xac\xf6\xb3\x5b\x66\x68\x7e\x4b\x5d\xb6\x28\x45\x72\xfc\xcc\xb5\xdb\x53\x14\x99\xa7\xb2\xa5\x4e\x69\xd6\xbd\x6b\x5b\x3f\xe5\xd3\x12\xe3\xcf\x70\x2e\x7e\x70\x4b\x13\x94\x59\x65\x6e\x9b\x8f\x67\xe9\x9c\x30\x29\xb3\x65\x16\xcf\xa1\xd3\x3c\x69\x53\x36\xc5\xe5\x33\xdb\x18\xac\x47\x4c\x5e\xb5\xb4\xa5\x66\xc9\x0a\x38\x30\x2a\x9c\xc2\x41\x42\xd4\x9b\xcd\x62\xcc\x25\xa0\x18\x0a\xc3\x0b\x0a\x71\x99\x32\x7b\xa8\x52\x9b\xd1\x1d\xda\x21\xdb\xf9\xe0\xcf\xa6\x50\xf4\x49\x7f\x3a\xc9\x16\xdb\x40\xb3\xa5\x33\xbe\x5e\xbe\x49\x5b\x30\x08\xe2\x02\x66\x70\x1e\xd6\x3c\xff\xf9\x74\xa6\x38\xee\x60\xf9\x14\xec\x34\x33\xee\xba\xf4\x18\xf2\x58\x77\x21\xe5\x26\x74\x73\x50\x1f\xd3\x94\x8b\x4d\x64\xae\xd9\x5d\xd0\x60\x3f\xb3\x4b\x90\x7d\xbc\x1e\xf3\x61\x38\x77\x79\x65\x0e\x2e\x85\xd9\xae\x27\x88\xae\x03\xc6\xb1\x72\xb6\xab\x14\xe2\x9b\x32\x46\xbf\x9d\xe7\xfe\xa8\x08\x7d\x5d\x20\x45\x6a\x0f\x86\xd5\x8d\x2a\x23\x6a\x2e\xf3\xee\xb6\xf3\x5d\xed\x93\x70\xbd\x49\xd5\x9d\x11\x14\x01\xe8\x80\x63\xa1\x24\x67\xcf\x5f\x6f\x1b\x3f\x67\xa5\x1a\xc6\x65\xf1\x44\x17\x88\xa0\x98\x60\x54\x94\x5c\x0f\xb1\xfd\x5d\x95\x4b\x4d\x47\x8b\x0e\xe7\xe5\x18\x76\x04\xbb\x36\x4f\x58\xb7\x83\x7a\x0c\xc4\x56\x3d\xa7\x09\xea\x2e\x49\xc6\xc5\x9c\x26\xf9\xeb\x04\x2c\xf6\xba\xf3\x63\x21\xc1\xb9\x7e\x33\xb7\x01\xea\x38\xd7\x9f\x46\xc6\xe3\xa8\x10\x3b\x16\xaf\xfe\x50\xb7\x8a\xdb\xd3\x48\x13\x8c\xde\x86\xb9\xe2\x2c\xec\x3f\x34\x2c\xb7\x2c\xd5\x52\xdc\x19\xb2\x50\xbd\x7d\x2e\xb0\x8c\x25\x51\x81\x6d\xc5\x6d\x63\xad\xc5\x28\x0a\x8c\x63\xcc\x6a\xa0\xf1\x2c\x52\xe3\x09\xbd\x9f\x7e\xed\x20\x2c\x36\x88\x78\xa7\x51\x3f\x1b\x2c\xc9\xb4\x09\x4d\x44\xfc\xbc\xb5\x91\x48\xbc\xc9\xc6\xa8\xaf\x38\x94\x2d\x42\xa2\xb4\x79\xd0\x4c\x6c\x7a\xd2\x1b\x6a\x0a\xc8\x03\x9f\x11\xc3\x8a\x35\x35\x00\x8e\x86\x19\x57\xca\x2d\xcc\x9a\xf3\x16\x67\x83\x89\xa7\x70\xe1\x14\x4f\x35\xd8\x49\x9c\x2a\xae\xf7\x27\x21\xaa\xa1\xa9\x3f\x45\xb4\xf0\x10\x0e\x3b\xb9\x84\xbe\x2c\xb6\x61\xdf\x79\xea\xf2\xb7\x36\x8d\x21\x09\x51\x40\xb6\xc6\xfa\x30\x3c\x43\x60\xe7\xf7\xa8\x77\xbb\xf1\xd7\xb2\x06\x19\xbe\x69\x3b\x35\x13\x19\xd2\x5f\x70\x78\x83\xbc\x2a\x7d\x81\x10\x25\x7b\xfe\xa0\x9d\x36\x41\x98\x47\xce\x6f\x48\xca\x9b\xfd\xdc\x07\xd7\x37\x16\xb3\x7f\xcb\x72\x1a\x2c\x68\x65\x2c\xac\xe7\x4f\xb8\x55\xd7\x1d\x4f\x06\xb9\xcd\xe2\x9f\x06\x62\xa5\x09\x69\x27\x74\x8b\xe8\x52\x75\x4d\x45\x9b\x24\x75\xb8\x37\x49\x94\xfe\xe5\x76\x39\xa1\x67\xc4\xc9\xd1\x30\xb5\x21\xbd\x79\xe7\x9d\xd2\x86\x55\xb3\xe5\xf1\x88\x95\x77\x6c\x5e\xd9\x0f\xc8\x24\xbf\xe6\x42\x54\x00\x09\xfa\xb3\xcd\x54\x41\xab\xee\x10\xfd\x60\xd1\xd5\xf9\xac\x10\x45\x5a\xd1\x62\x01\x4e\x00\x2a\x89\xea\x41\x46\xb6\xfd\x5e\xe6\xd6\xd8\xcd\xeb\x9b\x4f\x3f\x7a\x77\x99\x9e\x64\x19\x14\x17\x44\x5e\xfb\x97\x31\x6d\xe0\xcb\x7f\xeb\xb8\x95\x65\xdc\xa3\x6f\x7b\xbd\xeb\xe5\x21\x22\x1b\xea\xb4\x23\x46\x54\x00\xd8\x20\x02\x1c\x32\x68\x58\xb8\x9c\xe9\xc7\xe6\x47\xe2\x0c\x88\x20\xc8\xb9\x5a\x2f\xe7\xd5\x8c\xaf\xca\x6f\x6d\x7e\xf8\x90\xe5\x0c\xb0\x7e\xda\x75\xdf\x6f\x00\x13\x7b\x48\x68\xa6\x74\x72\x66\xfc\x29\xbe\xc8\x04\xd8\xb6\x3f\xc9\xe5\x8d\xe8\xb9\x80\xa3\x92\x4d\xe4\xbd\xfb\xbd\x5a\xe0\xb6\xdd\x23\xd1\x9e\x8f\xe0\x81\xd8\x87\x86\xe6\xc6\x58\xb0\x5c\x4a\x3e\x57\xa4\x3a\xd8\xb1\x39\x8d\x7b\x3d\xf6\x3f\xc4\xc6\xfd\x0f\xad\x5c\xdc\x70\xb5\x5e\x69\xae\x7d\xa4\x77\xa8\xf6\x2d\x32\xfa\xdc\xcb\xa0\xdd\xd7\xbd\x3c\x7f\x50\x54\x9e\xb8\x2e\x3d\xce\xbd\xfd\x81\xc6\x7e\x3d\xf5\xe4\x10\x22\xb1\xbb\x6d\xc7\x6e\x05\x2b\x28\xb1\x52\x3a\xcd\x00\x9b\x46\x56\x5b\xdd\x65\xec\x59\x34\xff\x9e\x28\xfa\x26\xa6\x3b\x0c\x90\xef\x8a\x70\x61\xbb\x4e\xc5\xa7\xef\x4a\x77\x2a\xe6\x60\x92\xd0\xe2\x3d\xcf\xab\xe3\xe3\xc7\x64\xe4\xbd\xcc\xe2\x6f\x0f\x2c\xd3\xd4\x78\xd1\x75\x89\xed\x0f\x8a\x82\x51\x99\xef\x3c\xe9\x73\x0f\x30\x07\x0d\xad\x10\x2f\x70\x09\x64\xff\x54\x40\xa9\x87\xca\x5b\xd6\xf6\x60\xed\xb3\x6e\xe9\xd7\x3e\x41\x5e\x1e\x41\xbf\xa8\x7b\x84\xd8\x95\x5d\x03\x9b\xb1\x0f\xe0\x75\xa9\x5f\x17\x61\x1a\x77\x94\x71\x5d\x66\xdb\x21\x33\x16\x8a\x78\x55\xf4\x61\x6f\xd9\x2f\x3f\x54\xd5\x76\xc5\x6f\x1b\xcc\xd7\xa0\x9a\xa2\xbe\xac\x13\xa8\xe1\x9d\xb5\xf3\x96\x8d\x64\x57\x53\x9e\xb2\xf9\x80\xf2\x36\xc5\x0a\xc0\x66\x47\x54\xd6\xc5\x28\x8f\x56\xfd\xb3\x22\xfc\xb0\xc0\x49\x01\x4c\xa1\x1d\x44\x7f\x62\x5f\x22\x41\x89\xf5\x9c\xcd\x9e\x0d\x77\x11\xa8\xcc\x11\x08\xd5\x90\xc1\x06\x96\x2a\x3f\x65\x8e\xde\x02\x17\xc9\x85\xd3\x7f\xc7\x80\x37\xb7\xc4\x06\x5f\x8b\xf4\x77\x18\xfd\xee\x64\x29\x94\x1b\x30\xbd\x17\xba\x91\xac\x0a\x12\x71\x53\x96\x71\x7f\x9d\x3f\x36\xf0\xb2\x8d\x1a\x99\x82\xea\x3b\xec\xb0\x63\xab\xad\xb9\x86\x6f\x58\x33\xb0\xa3\x94\x2a\x9e\x1a\xda\x9d\x65\x0b\x89\xa2\x6d\x4b\xac\x94\xb9\x0e\x4c\x26\x58\xb2\xf0\xca\x65\x64\x07\x4b\x19\x24\xad\xad\x6d\x5a\x96\xd0\x1a\x57\x9c\xfe\x7b\xa4\x95\x68\x29\x93\x25\xc4\x26\x49\x92\x04\x67\x3b\x53\x38\x76\x29\xb1\xea\xa7\x34\x26\xb6\x35\x0c\x51\xf9\x09\x16\x53\x79\xbf\x28\x87\xda\x4b\x55\x04\x06\x35\x4b\xa9\xf5\x96\xa8\x7c\xc8\x4c\x91\x1d\xcf\xc0\x16\x16\x7d\xa1\x9e\x92\xcb\x72\x36\xfd\x3d\xda\xfb\xab\xde\x74\x33\x10\x2a\x3c\xb1\xec\x7d\x56\x88\xcf\x45\x19\x71\x34\xa9\x7d\x46\x89\xf5\x5e\x91\x1a\x25\xfe\xe6\x09\xe7\xbf\xc1\xa4\x83\x20\x65\xb7\xcb\xc4\xbe\xde\xfa\xb3\xa6\x37\x25\x1d\x71\x55\x29\x8b\xb1\x32\x0f\xab\xe3\x0d\x36\x25\x1f\xcc\xce\x0f\xae\x85\xba\x57\xae\x8b\x5e\xf4\xec\x50\x5e\x44\x06\xef\x51\x7a\x9f\xc5\xbb\x11\x7e\x83\x26\x62\xe3\x37\xcc\x8f\xbf\x68\x3a\x51\x40\x42\xd4\x62\xaf\xd3\x19\x7f\xa1\xe9\xd3\xc6\xb2\xeb\x33\x6e\xc0\xc6\xb8\x37\xc1\xad\xcd\x3b\x20\x9d\x71\x4d\x8d\xb4\xdb\x80\x0a\x9c\x7a\x4e\xa4\xf3\xc2\x1c\x80\x4d\xd5\x54\x74\x5e\x0d\x34\xe9\x7f\x45\x00\xa7\xf2\x75\xce\x18\x26\x42\xaa\x04\x4a\x36\xd2\x73\x18\xe6\x4c\x13\x84\xd7\xd4\x21\xac\x2e\xd2\xbd\xd6\x13\x61\xce\xa4\x1a\x7e\xae\x6d\xb2\xa4\x43\x84\x49\x92\xb6\x62\x60\x41\x1e\x50\x5d\x25\x7a\xe6\xb7\x19\x0f\x29\x7b\xe5\x7d\x2c\x48\xa3\xa1\x10\x8d\x74\xb3\xc3\xb6\x97\x7b\xe4\x4c\xbb\x1d\x26\xba\x65\x17\xc1\x9b\x00\x1c\x88\xa5\x3f\xa0\x4c\xd2\x98\x57\xd4\xd1\xca\x24\x61\xa1\xf3\x21\x5e\x55\xc4\xeb\x7f\x73\x3e\x8f\xa3\x10\x59\x89\xf3\x85\xd2\xec\x2d\x46\x2e\x8e\x73\xa7\x9e\xc7\x24\x8f\xdc\xf5\x92\xaf\x63\x96\x8e\xcf\xf7\xef\x58\xd7\xc1\xf3\xed\xdb\xff\xb1\x7a\x65\x37\x0f\x21\x09\xd6\x0f\x34\x2a\x54\x72\x24\x1b\x34\xb5\xad\x35\xcd\x06\x6d\x2b\x30\xeb\x82\x67\x22\x96\x56\xa5\xe0\xcd\xa6\x62\x26\xf5\x0a\xd4\x6c\xf1\x96\x1b\xcd\xca\xb6\x42\x2e\x2f\xfa\x37\xbb\xfe\x89\x33\xdd\xd3\x96\xf0\x9c\x56\x67\x80\x7c\x5e\x30\x7a\xb5\x68\x1e\x79\x80\x2e\x51\x9f\x3f\xa1\x91\x38\x95\xbb\xd9\xdd\x9b\xe3\xb4\xeb\xb4\x8c\x3d\xc1\x83\x09\xd1\x6b\x64\x8c\xe2\x85\x62\xa6\xf8\x57\x1c\xec\x8b\xe1\x95\xda\xd2\xf5\xd4\x57\x17\x6b\x5d\x71\x53\x88\xac\x53\x14\x72\xdb\xfc\x44\xeb\x21\x44\x3c\x3e\xf6\xa6\x24\x0c\x8f\x54\x7e\xde\xf6\xc4\x4d\xe1\x47\xa9\x73\xea\x92\x41\xbb\x60\x4e\x66\x4a\x37\x86\x52\x08\x5c\xf2\x3a\x74\xc2\x66\x6e\x94\x63\xf3\x8f\xaa\x71\x84\x02\x0d\xe8\x5d\x2b\x97\xa0\x94\xb3\x37\x43\x7a\x60\x58\xe0\x85\x5e\x47\xb9\x14\xea\x1d\x6c\x39\x4f\x5d\xc2\x41\x3e\xdd\x3d\x07\x48\x16\xf4\x31\xc0\xbe\xc4\xd4\xdd\xe7\x3f\x62\xf7\x9b\xf7\x31\x4b\xcb\xb2\x93\x7d\xb7\xe7\xaa\x2e\xa3\x33\xe9\xe0\xa6\xe0\xc0\xac\xb1\x30\xfb\x49\x0d\xf4\x98\xe3\x1d\x88\x05\x1a\xaf\x8a\x6c\xf5\x9b\xfb\xb5\xa5\x40\xa4\xc1\xc3\xc6\x6f\xde\xd1\x93\xfc\x37\x73\x99\xff\x8e\x3f\xcd\xf2\xe7\x1c\x5c\xb8\x29\x4c\x02\x0a\x8a\xd2\xa9\xdf\x8d\xfe\x45\x75\x92\x64\x93\x69\xe7\x21\x16\xbf\x97\x23\xfb\xe4\x9f\x4f\x33\x71\x96\xef\x3a\x0f\x1b\x35\xad\x0f\xf8\x9f\x75\x72\xba\x96\x71\x75\xf2\x12\xd7\x95\xca\x44\xd4\x3b\x1a\x6f\x6c\x55\x68\x3e\x51\x22\x0a\x79\x55\x4b\x83\x24\x99\x31\x28\xb1\xe5\xfa\x15\x9f\x15\x1e\xb7\xed\x9b\x66\xab\x83\x0f\x00\x3e\x2e\x34\x42\x68\x9d\xe9\x17\x34\x8c\x3a\x20\x78\x45\xe3\xe9\x38\xe1\xa0\xfb\x71\x59\x4c\x66\x25\x14\x75\x85\x47\xe1\x8d\xf2\xd2\xea\x7a\xc7\x11\xfc\xb5\x03\x29\x45\x21\x19\xd6\x35\x2d\xec\xf9\x0e\xee\xdd\xeb\x33\xed\x39\x88\x54\xf1\xa8\x63\x96\x63\x4a\x78\xa7\x0e\x3e\xbe\xf3\xfe\xe5\x3c\x8d\x7d\x34\xb7\x46\xc6\x5f\x90\xdc\xec\x69\x0e\xe8\x7b\x4f\xe5\x69\xf2\xf8\x04\x2f\x40\x93\x45\xfb\x9f\xbb\x52\x38\x2e\x83\x51\x06\xf4\xa4\x8d\x0d\x7b\x88\x55\x9b\x1d\x3f\x56\x52\x37\x71\x05\x46\xf5\x68\x56\x7f\xa6\xaa\xb9\x1a\xd0\x3d\xba\x55\xe8\x95\xdf\x3a\x27\xc0\x40\x11\x85\xbc\xe3\x68\x10\xf1\xc8\x4b\x41\x21\xf5\xba\x2e\xbd\x5f\x22\x93\xe9\xbd\x95\x7f\xde\x55\xe8\x07\xde\x86\x4f\x51\x42\x0d\xdf\x81\x1c\x36\x2b\x3d\x37\x09\x2a\x47\x3e\xc3\x9f\x93\x51\x59\xdc\xd9\xe6\xc0\x01\x72\x09\x78\xff\x10\x2b\x00\x09\x2e\x15\x42\xd5\x98\x6a\x1c\x33\x68\x79\x83\x93\x54\x88\x78\x87\x09\x2d\xf0\xf8\x94\x65\x9f\x87\x08\xcc\xc7\x70\xd0\xd6\xd0\x40\x94\x64\x2a\xae\xca\xcd\x41\x8b\x7e\x0f\xcf\xe7\x91\x47\xfd\xa7\xc5\x61\x97\xd5\xac\xee\x39\xce\x36\x28\x57\xb1\xa7\xd3\xde\x1f\x38\x13\x69\x79\x78\x01\xcf\x89\x7b\x9e\x7f\x7c\xef\x54\x37\xb0\x91\xca\x84\x5c\xab\xc4\x39\x5a\x1b\x18\x37\xdf\xc8\x30\x4b\x05\x67\x5d\x17\x5a\x5b\x33\xe0\x00\xa2\x8e\x4b\xdd\x3c\xde\x0f\x63\xb3\xfc\xe3\x60\xdb\x7d\x7c\xcf\x61\x39\x1a\xa9\x2b\x95\xeb\x68\x9f\x40\xf0\xc8\xe7\xb5\xca\xd5\xb9\x6a\x6d\x98\x83\xcc\x57\x98\xcd\xce\x69\xd7\x02\x92\x80\x53\x8a\x42\x27\x72\xde\xd1\x9e\xc0\xcd\xfd\xca\xbb\xf0\x8e\xef\x57\x0b\x8e\x8e\x92\xf1\xdb\x3b\x8e\x0e\x3e\x19\x17\xb8\x40\xa9\x62\x01\xc9\x14\xbe\x90\x7f\xe2\xda\x0e\x57\xb0\xe0\x66\xe8\xeb\x01\x07\xae\x5b\xc5\x15\x6b\xbf\x6e\xa7\xaf\x78\xf1\x3b\x8c\xa3\xfc\xc2\x90\xff\xcf\x38\xf4\x24\x40\xf7\xf3\x6e\xdc\xb4\xf6\xe8\xd0\x33\x3e\xd2\xc2\x15\x06\x56\x7e\x2c\xd6\xe5\xdb\xc7\x5b\xc6\x7a\x90\x82\x7b\x48\x07\x28\xb8\xa8\x9b\x27\x0b\x29\x48\xad\x5d\x10\x51\x3a\x3b\x4e\x2a\x07\x48\x7d\xcd\xc7\x19\xdd\xda\xbe\x7a\x60\x18\x7e\x28\x69\xab\x1b\x9b\xbd\xe6\xd1\x45\xf9\xd0\x59\xc1\xfa\x56\xcf\x80\x8b\x27\x78\x3c\x95\x6e\x46\x8f\x5f\x5b\x22\x76\x73\x7f\x1a\xe9\xfc\x97\x6b\x0f\xb8\x0f\xf2\x7d\x07\x3f\x36\x94\xf9\x0b\xe7\xda\x43\xf6\x84\x73\xa0\x52\x4a\x6d\x37\x4b\x19\xb0\x4f\xcc\x14\x40\x8d\xdd\x3b\x5f\x89\x96\xa0\xc1\x27\xa5\x52\xb0\x5e\x3d\xd5\xf6\x51\xdc\x5b\xfa\x3b\x7e\xea\x67\x47\xc9\xb9\x59\x97\xde\x02\x1e\xc7\x7f\x16\xff\x6f\x7d\x2a\x1a\xfc\x11\xcf\x7c\x9f\x96\x84\xbc\xd4\xa6\xc5\x8e\xfc\x30\xb3\xbd\xbd\xd3\xd3\xa4\x29\x4f\xec\xf7\xbc\x5f\x6c\x7b\xa2\x31\xf8\xa5\x09\x51\x0f\x08\x48\x59\xc7\xf1\xde\x2a\x6b\xc6\xab\x12\xc7\x50\xf1\x72\x19\xc1\x37\xa3\x40\x3a\x19\xf3\xb8\x6a\x51\xd4\x11\x17\xed\xcc\x84\xc3\xb0\x85\x70\xa2\xba\x05\x57\x33\x50\xc1\xe7\x3a\x98\xcd\xd2\x81\xf0\x9e\xa0\x5b\xc3\x73\xe8\xdd\x8b\xf1\xde\x46\xba\x26\x6f\xbe\x02\x99\x3d\x91\x41\x6d\x4f\x6b\x7d\x8e\x5b\xc0\x29\x93\x85\x8c\x22\x52\xc5\x20\xfb\xd8\x16\x00\x0e\x20\xd1\x77\xde\x3c\x9f\xcc\xf0\xd5\x42\xf2\xf2\x06\xc6\x11\x9d\xc0\x41\x45\xc5\x25\x82\x30\xd9\xaa\xbd\x9b\x02\x8b\x26\xfb\xac\xae\x32\xcb\x6e\x60\x92\x87\x75\x9a\x24\x69\x06\x10\x6d\x83\x87\x1d\xed\x58\xf9\xbe\x25\x2d\x24\x9e\x82\x55\xbe\x9f\x8d\x2c\x8f\xb3\xf1\x23\x31\xe3\x04\xcf\xc3\xdc\x65\xce\xe8\xed\x20\x6c\xd7\xdb\xd9\xe6\x62\xc9\x8d\x90\xb2\x5f\x41\x36\x6f\xbe\x40\xe8\x8a\xee\xa1\xff\x7e\xb9\xc9\xf9\x96\x54\x3e\x8e\x3e\x94\x80\x7e\x92\xd0\x93\xeb\xd4\x2c\xdd\x5a\x7b\xc6\x27\x1a\x16\xea\xbe\xf7\x14\x1a\xf9\xb2\x8f\x16\xcd\xa9\x7e\x87\xc6\xfa\x04\x56\x9f\xcf\x74\xe7\x8b\xf2\x09\x1e\x25\xab\x3f\x93\xc7\x14\x43\xef\xca\x67\xd9\x68\x1c\x8a\xb6\xc3\x2e\x3f\xbf\xf8\xae\xa0\x83\x2f\xad\x2e\xbf\xc3\x9f\x66\xcc\x7b\x8e\x7f\x5f\x36\x43\x5a\x4a\xa4\xaa\x16\x80\x82\x45\x82\xef\x52\x89\xb2\xb5\xaf\x54\x13\x72\x42\x06\x47\x60\x34\x92\xf2\xb0\xd0\xb6\xde\x01\x60\x11\x25\x3e\x79\x6b\x52\x4c\x7e\xdc\x2e\x44\xc6\x0e\x1b\xfa\xee\xd5\x9f\xbf\xb9\xa3\x4b\x8c\x1b\xa7\x8c\x7a\x01\x35\x52\x82\xef\x2e\xea\xcd\x7b\x87\x96\x8e\x7d\x47\x2c\xf0\xd0\x0c\xec\x15\xde\xa5\x15\x8c\xd3\x0f\xbe\x7c\xc3\x52\x81\x5a\xb0\xf6\xd3\xb1\x8f\xf2\xa7\x71\x6a\x07\x08\x36\xbf\xc3\x3a\xc3\x61\x1f\x8e\xa1\xcc\x9e\xaf\xc8\x18\xb9\xe3\xa7\x39\xf4\xd9\x8d\x0b\x5e\xdb\x06\xf8\xcd\x58\xed\xc0\x65\x13\xca\xac\xcf\xe6\x47\xe5\x4c\xac\xc2\x0e\x6e\x60\xfc\x0b\xff\xd4\x36\x30\xf6\xb6\xd5\xa0\x9d\x84\xde\xcb\xc0\x25\xd8\xd4\xf4\x44\x0c\xa0\x2e\x72\xd7\xdb\x95\x8d\x91\x03\x7c\x8d\x36\x12\xa3\x0b\x2f\x0a\x70\xf9\x46\xc3\x46\x91\x58\x08\x62\x82\xb6\xe2\x36\xcf\x08\xfa\x57\x4d\xa5\x82\x61\x66\xcb\x1a\x44\xe9\xc4\x83\xcd\x1f\xa4\xe7\xa5\xaa\x29\x38\xa6\xdc\xa7\x93\xc4\x67\x13\x15\x2c\x59\x03\x36\x72\xbf\x7a\xc4\x09\x15\x23\xb6\x74\xa4\xe5\x45\x12\xf0\x82\x54\x20\x79\x3c\x21\x28\x53\x75\x79\xa8\x38\x6c\xb4\x5f\xd8\xfb\x2b\x09\x80\x38\xfd\xa5\xbd\x5c\xdb\xab\xbc\xb6\x4b\x59\xa1\x79\xbf\x45\x9f\xe4\x47\x6d\x0d\x39\xd6\x6f\x78\x6a\x50\x52\x8f\xec\x72\x91\x16\xed\xd3\xb5\x9a\x94\x99\x49\x1d\xb2\x53\xc5\x6e\x0d\x50\x0a\x66\xfa\xc5\xf7\x75\x18\xb0\xa1\x00\xe6\x38\x18\x73\x32\xef\xab\x99\xf6\xe1\xc5\xb2\x68\x3e\x4a\x11\xa0\xdd\xef\xe1\xeb\xe6\x20\x6a\xe3\x2c\x0c\x2b\x16\x2d\x6d\xb9\xc3\x1b\x4e\xe4\x5a\x3a\xdc\x70\x33\x1a\x5f\x3b\xb8\x3a\x4e\xc8\xce\x0a\x95\x38\xef\x32\xcf\x65\x9b\x00\x7a\xfe\x6c\x41\xe1\xdb\xd6\x0f\x87\xd4\xad\xc8\xf9\xd7\x5a\x9c\xfd\x18\x0d\x8b\x96\x15\x87\x6f\xc9\x46\x78\x9b\x23\xc4\x73\x9d\x94\x90\xa0\xf1\x5a\x0a\x64\x28\x7f\xae\x97\xeb\x8d\x2b\x85\x3c\x42\xec\x5c\xe7\x6a\x93\x7d\x6b\x22\x7a\x9f\xa2\xcd\x41\x00\x81\x35\x67\x31\xf9\x7f\x66\xd6\x14\x74\xad\x8b\x1d\x97\xb2\xd8\x4c\xfa\x15\xb8\x6f\x5c\xa7\x5d\x2b\x28\x89\xa4\x45\x81\xd0\x18\xca\xc1\x46\x65\xda\xb0\xb8\xa5\x5e\x26\x5c\x82\x4c\x64\x8f\x5b\x6c\x14\x9c\x1b\x64\x0d\xf9\xbd\xcd\x87\xa1\x8d\x67\xb3\xf7\x1a\xaf\x3d\xd0\x81\x68\xee\x6b\x53\x55\x3d\x81\xf7\x6a\x7e\x02\x2f\x4b\x6d\xe6\xbd\x82\x05\x2c\x49\x01\x94\x55\x31\x85\x9d\x4a\xf0\x45\x83\x4c\xf1\xc8\xe2\x9d\x19\xcd\x03\x47\x90\x85\xe2\x15\x6b\xaf\x89\x44\xb3\xf8\x78\x18\x1f\xec\xa7\xad\xbb\xde\xa6\x16\x81\x98\xed\x51\xd6\x27\xf1\x3d\x24\xba\x98\x45\x29\x50\x20\x3c\xc5\x24\x15\xbd\x58\x31\x71\xd0\xa2\x6a\xbb\x88\x5c\x48\x99\x7a\xed\x6b\x29\x41\x28\x60\xb2\x91\x88\x1e\x21\xc2\x96\xd0\x07\x24\x5a\x5a\xa8\xa2\xab\xba\x28\x42\x95\x25\xf9\xe6\xfc\x18\x28\x6b\x5b\xee\x40\x4c\x34\x91\x30\xba\x74\xd9\x1d\xa3\xb9\xe9\xc5\x1c\x37\x99\x85\x3d\x29\xcc\xa1\x74\xb8\x96\xb4\x8a\x78\x2a\x31\xe0\xbf\x69\xe6\xb9\x3d\x21\x0b\x19\x9e\x15\x26\xbf\x96\x01\x98\x60\x06\x21\x72\x64\x02\xe1\x22\xce\x1e\x72\xb4\x38\xc7\xcc\x60\x6a\x31\xbf\xa8\xdd\x46\x13\x97\x92\xd2\x3f\x0c\xe8\x00\x98\xd0\xfa\x87\x10\x52\x23\x92\x6d\xf7\x1d\x49\xeb\x04\x66\x1c\x70\x02\x9c\x74\x40\x63\x5f\xeb\x8d\x20\x0f\x27\x75\x16\xf6\xb5\x49\x92\x79\x8d\x0d\xc3\x15\xd9\x4d\x1e\x52\x8a\xaa\x6b\x27\xf9\xd0\xb4\x0a\x37\x76\x17\xce\x05\xda\x10\xb2\xf4\x92\xef\x2d\xc6\x53\x73\x27\x33\x07\x8d\x38\xcb\x6a\xbe\x9b\x3e\x83\xf4\xd3\x6b\xb0\x7d\x12\x5f\x32\x5a\x3a\x52\xd8\x26\xa3\x55\x17\x8c\x7c\x3f\xbd\x50\xf6\x0b\x0e\x53\xf8\x1c\x28\x17\x6b\x1e\xdf\x6a\x14\x17\xdd\x57\x4d\x67\xf5\x57\x88\x34\x34\x9b\x34\xca\xfb\xc0\x92\xc2\x9c\x69\xae\x54\xf3\x4e\xe8\xa1\x36\xdb\x2c\xca\x8d\x85\xc6\x3f\xdf\xce\xfb\x03\x93\x5d\xcd\x65\xf7\x96\x82\x7e\xe6\xee\xc5\x75\x05\x18\x6d\x71\xd2\xb1\x83\xa4\x73\x20\xa1\x1c\xdd\x43\xe3\x08\x6b\x60\x51\xc3\x1a\x42\xcf\xde\x00\x53\x38\xcc\xf5\x78\x89\xbb\x46\x72\xa5\x08\x4f\x74\x54\x7b\x6e\xe5\xb6\x78\x9e\x1e\x62\x75\x51\xdb\x69\xde\x84\x45\x26\xdc\x5b\x59\x82\xf5\xc2\x12\x90\x9c\x4b\xa9\xaf\x3b\x13\x18\xa8\xd0\xb4\x9c\x61\xa9\x76\x11\x17\xed\xac\x39\x0c\xc8\x1e\x47\x4a\x9a\x87\xed\xf9\x50\xa5\x1e\x21\x8a\x12\x50\xba\xd1\xa6\x40\x79\xe1\x3e\xd7\x0f\x9b\x5c\x24\x12\x34\x81\x12\xcf\x99\xc4\x68\x59\xa5\xa2\x49\x00\x46\xdf\x51\x92\xf9\x8b\xb6\x2a\xf0\xa6\x7d\x83\xd8\x39\x03\xd7\xb7\x2c\xbe\x52\x86\x5d\xe8\x65\xf8\x18\xea\xd9\x9c\x55\x68\xc2\xfe\x87\x38\x90\x2c\x57\xda\x79\x06\x08\xba\xc9\xa4\x5a\xae\x83\x80\x84\x54\x31\x04\x32\x1c\x31\x2e\xe5\x3a\x2d\xe9\xfa\xb2\x8f\x5a\xad\x3f\xb4\xfc\xcb\x04\x04\x4a\x18\x95\xd5\x12\xf5\xb0\x9b\x97\xe0\x9a\x2a\xdd\x98\x7a\x16\x4b\xd4\x73\x94\xd2\xf8\xdf\x9a\x49\xc7\x25\xab\x8e\xa2\xd1\xc4\x7d\x6f\xc8\x8a\xb0\x1a\xbe\xa4\xd8\x4a\x5a\x29\x23\xc0\xa9\x16\x78\xce\x4e\x6b\xc7\xa6\x93\x26\xf7\xa6\x0b\xcd\x15\xdf\x13\x97\xac\x24\x9b\x48\x07\x91\xbf\xfb\x97\x21\x68\x9b\x1e\xf7\xa6\x8f\x72\x5f\xc5\x32\x07\x95\x14\xb1\x04\x18\xb4\xeb\xa6\x16\xa0\xf4\x17\x68\x61\xda\xd8\xca\xfd\x6d\x19\x94\xa4\x12\xd5\x84\xd8\xde\x4b\xc8\x55\x0e\xd6\xaa\x83\xb4\x18\xde\x20\xe6\x6d\x1e\x9e\x84\x56\xe2\x73\x49\xa7\x2a\x4f\x21\xcd\xb1\xf9\xe6\x5a\xfb\x7a\xc1\x6e\x18\xeb\x1c\x30\x80\xfb\xe2\x17\xfe\xc3\x87\x28\x31\xea\xeb\x79\x83\x47\xa6\x0d\xf3\xea\x74\xf1\x6c\xdc\x48\xae\xcc\xe6\xb4\xe9\x46\x89\x8c\xdd\x8c\x02\x51\x6a\x33\x6b\x88\xcc\x32\xf3\x8a\x5f\x2e\x70\xde\x78\x4e\x3d\x42\x3d\x66\x77\xd3\x1a\x92\xdd\x4d\xe1\x7b\x7f\xdc\x46\x46\x7b\x2d\x3c\xfc\x72\xe6\x69\x50\x0d\x93\x9d\x14\xb2\x79\x1f\x49\x63\xab\x6b\x4e\x6f\x23\xf5\xbb\x5b\x09\xfe\xa5\x6b\xd9\x09\x62\x44\x70\x9f\xef\x74\x6d\x70\x55\xa1\x2d\x33\xdb\x94\x32\x78\x1f\xd3\x4c\x5f\xd8\x92\xbf\x5a\xe3\x2c\x0d\x09\xb3\x50\xc7\xbf\x4a\x84\x2b\x06\xea\x68\x12\x06\xfc\x98\x4e\x5c\x00\x05\x76\xe3\xfa\x00\x9a\x94\xcc\xe6\x01\x14\xb9\xb0\x8f\x51\x70\x48\x3b\x52\x0e\xd1\x47\xe4\xd1\xd1\x9c\x13\xda\xb3\x03\x7f\x9f\x13\x3f\x5d\x06\x22\x50\x7d\x62\x38\x17\x3e\x11\x7c\x22\x78\xa2\x38\xa7\xcc\x8f\x27\x20\x27\x2e\x27\x26\xb3\xa4\x05\x7e\x48\xaa\x5e\x22\x0c\xd5\x21\x3c\x4f\x88\x3f\x3e\x3c\x0c\xc8\x71\x3b\x8c\x87\x8c\xa4\x45\x4b\x52\x88\xdc\x19\x5c\xe1\x00\x7e\x1d\x46\x52\x31\xe2\x63\xf7\xd5\xbd\x58\xde\x73\xdd\x9d\x33\xd5\xb7\xdf\xf4\x59\xca\x98\x2e\x59\x4d\x81\xdd\x7e\x33\xb6\xba\xe5\x0e\x74\xf9\xdb\x0a\xde\x1a\x9f\x9a\x15\x7b\xc4\x33\x0c\xf4\xda\xdf\xa2\x58\x81\x16\xdf\xbd\x53\xa8\xf0\x89\xac\x6b\x76\x64\xf3\x4d\xb1\x22\xa9\x2c\xca\xa5\x2c\x57\x75\x05\xf1\xe5\x5c\x4a\x3d\x70\xfe\x6b\xae\x72\x2a\x4c\x69\x4e\xa4\x94\xb3\x66\xb2\xd7\x9e\x4e\x43\xca\x0b\x91\xe1\xa9\x8a\x5d\x59\xea\x56\x7c\xc7\x51\x70\x7f\x0f\x3c\xe7\x39\x24\x28\x7e\xcd\xd1\xca\xbb\xc8\x2e\xd7\x82\xe5\xfc\xc4\x62\x37\x89\x56\xcd\x6c\xc4\x95\xb1\x24\xdd\xad\x30\x99\x04\xeb\x6a\xc8\x9e\x26\xa4\xbf\xbd\xc7\x50\x41\x76\x08\x5b\xac\x2b\x2b\x04\xcd\xda\x63\x6e\xb4\xfe\x67\x6e\x01\xce\x1f\x2b\xfd\xf9\x10\x34\x4c\xf6\x2c\x37\xef\x06\xb4\xdf\xdb\xcf\x9c\xd9\x84\xd4\x1a\xf9\x17\xf6\xf2\x99\x74\xb8\xe4\xf3\x5f\x71\xb9\x5b\x05\x59\x32\x1e\x55\xf5\x56\xe8\x50\xb8\x35\xb9\x34\x5a\x72\xd0\xb6\xe5\xc5\x9e\x69\x9d\xf1\x53\x6e\xb6\xbf\xc9\x37\x99\x09\x29\x8b\xd9\x6d\x93\x58\x0d\xe5\x29\xaf\x22\xc7\x67\x22\x93\x45\x53\x52\x86\x74\xe3\x12\x98\x07\x8f\x64\x60\x81\x8e\x61\xf8\xa6\x42\x54\x96\x32\xaf\x84\x20\x8b\xd7\x55\x4f\x94\x93\x72\x0d\x6d\x80\x4f\xe7\x10\x06\xf8\xb2\x76\xdc\xa7\x13\xdc\xe6\xca\x9f\xee\x01\x07\x2c\xc4\xf2\x8f\xf3\x35\xee\x73\xf6\xf1\x10\xb2\x2f\x41\xbe\x93\x69\x70\xfd\xe2\xdc\x83\x7b\x60\x44\x93\x51\x73\x6f\xf8\x18\x75\x97\x4d\xfd\xc1\xf6\xd6\xd2\xef\x48\x96\xb7\x19\x11\xfc\x9d\xd3\x4c\x17\x45\xc8\x8f\x45\x17\x6d\xa3\x86\x42\xd8\x79\xde\x18\x19\x62\xf1\x24\x89\x30\xdf\x64\x6b\xbf\x3c\x0e\x56\xcc\x12\x98\x27\x4c\xe0\x7d\x6e\x7b\x26\xab\x7c\x5a\xa4\x7e\xca\x71\x54\xca\x8e\xf2\x10\x94\xca\xca\x4e\x8f\xda\x07\x79\xc8\x98\x16\xd0\x50\x5e\x26\x01\x65\x3a\xb9\x03\xbe\x4a\x10\x3a\x1b\x02\x44\x74\xdb\xf1\x4c\x29\xbf\x58\x50\x6c\xf0\xf4\x89\xb1\xf7\x40\xde\xce\xd2\xc0\xd7\x7a\x05\x2f\x50\x93\xad\x02\x9a\x9b\xcf\xaa\xcb\xb4\xb2\xf1\x87\x23\x38\x3d\x69\x84\xec\x98\x6a\x22\xaf\xdf\x17\x3b\x7b\x5e\x8e\x29\x9e\xcb\x67\x7c\xdc\xaa\xa3\x0c\x4a\xbc\xb2\x82\x3e\xee\xec\xb2\xc1\x5f\xf3\x91\x7c\x17\xd7\xfb\xda\x3a\x98\x32\xd7\x7b\x2a\xe2\x1c\x8f\x7b\xa0\x57\x98\xc3\x13\x57\xbf\x9b\x38\xa7\x0f\x19\x75\x17\xe4\x98\x68\xde\xee\xa7\x01\x9d\xdb\xeb\xbd\x79\x02\x4b\xfc\x51\x48\xd9\xca\x11\xb1\x98\xb8\x96\x8e\x8e\x14\x4e\x12\x95\xfe\xf1\x41\x87\x82\x7f\x43\x6d\x25\x58\xc6\x6d\xe8\xb5\x48\xae\x49\x7b\x60\xfd\x34\x43\xed\x0d\x78\xfe\xd1\xdf\x4b\x96\x31\xe4\x45\xae\x18\x1a\xcd\xaa\x00\xca\x21\x69\xf8\xcb\xbd\x72\x23\x2e\x24\x74\x36\x6c\xdd\xc5\x80\x70\x4e\x92\x54\x49\xbe\x3e\x25\xb9\xd8\x9c\xbb\x32\x80\x84\x23\x3d\xc5\x7b\xcb\xf8\x13\xd2\x27\xb3\x99\x21\x21\x1a\x28\x42\x8a\x15\xb3\x0a\xf8\x78\x52\x8a\x2a\x7a\xee\x67\xa4\x92\x9a\x93\x6f\x21\x8f\x18\x2f\xd2\x0d\x37\xa2\xd4\xa1\xf8\x45\xb9\x8e\x4f\x10\xe8\x61\xf7\x7e\xc6\x3f\x0f\x9c\x65\x44\xc1\xa0\xeb\xb2\x94\x9b\x78\x01\xdb\xbd\x41\x62\xd1\x28\x6b\x95\x67\x83\x38\x46\x4a\x76\xf0\xb7\x2d\x5c\xe9\x67\x21\x8a\xc9\xce\x9e\x8f\xd7\x65\xfc\xd7\x34\x25\xc6\x1c\x7f\x8d\xb2\x44\xb8\x5f\xf5\x52\x5a\x0b\xbf\xa8\x0f\x6b\x6a\x5f\x43\xc3\xe2\x6b\x5a\x60\x29\x7c\x87\x21\x72\x30\x36\xa6\x69\xd1\x9c\xad\x50\x39\x8d\xca\xdd\xdb\x5a\xa5\xf5\x82\x77\xb0\x40\xc8\x16\x2c\x96\x46\x24\x5e\x54\xbf\xb5\x1b\x23\x00\xab\xc7\xa5\x53\x7a\x33\x3b\x21\xcd\x7d\x11\x47\x92\x72\xc3\x8c\xd6\xbc\x40\x0d\x98\xa6\x3b\x9d\x98\x28\xd2\x0e\x33\x5d\x32\xbb\xeb\x47\x03\xa7\xb0\x3b\x34\xb6\x9b\xbf\x19\xd2\x63\xf7\x80\x69\x0c\x70\x1a\x0d\x39\x2e\x17\x23\xce\x6b\x59\x65\x65\x78\x52\x98\x5d\xc9\x3a\x4a\x22\xe7\x84\x1d\x61\x4f\x9d\xb1\x83\x44\xc6\x07\x66\x25\x64\x05\xa1\x32\x78\x85\x82\x40\x43\xa5\xf1\x41\xad\x24\x82\x02\xdc\x27\x9e\xd3\x23\xf7\xd5\x58\xd8\x8b\x8a\x4a\x99\x89\xe7\x8b\x11\x24\xdf\x04\x0f\x35\x94\x69\xbc\x08\x8d\x88\x5f\xc4\x6e\xd5\x03\xf2\xe3\x84\xfd\x0c\xef\x5d\xb2\x21\x4f\xc3\xda\x45\xf3\x33\x88\x94\xeb\x48\x61\x0b\xed\xc5\xf5\x0b\x35\xe7\x7e\xe1\xe6\x94\xeb\xcc\x60\x10\x73\x2e\xb6\x78\xef\xb2\x54\x4e\x57\x95\xa3\x63\x98\x16\x29\x97\x36\xc6\x80\x0b\x11\x85\x52\x42\x30\x3a\x3f\xe6\xfb\xb9\x83\x1b\x90\x68\x76\x56\x32\x99\x28\xff\xfd\xe8\x0f\x03\xa1\x1c\xe1\xe7\x31\xb3\xed\x50\x93\xf3\xfe\xfc\xf5\x5c\x41\xc5\xd1\x63\xe7\x59\xc1\xc6\xfb\x41\xf4\x20\x62\xc4\xfd\x96\xc8\x13\x3a\x7e\x45\x87\xdb\xba\x24\x1a\x2b\xac\x02\x7c\xeb\x65\xc6\x81\xc3\x53\xc3\xed\x03\x89\x46\xa9\x7b\xf6\xde\x64\xab\x4c\xaa\x8b\x47\xd0\x7d\x32\x32\x44\x0c\xde\x9b\x60\x6b\x47\x24\x1f\x47\x64\xb2\x94\xca\xc0\x73\x11\x88\x88\xc9\xba\x5f\xd7\xf8\x89\x1e\xd4\x0d\x15\xc3\xde\x9c\xdc\x91\x53\xaa\x9c\x1d\xde\x4d\x2c\xa2\x45\x42\x2e\xc1\xc5\x4f\x34\x0b\xbd\x8d\x42\xbc\x9c\xaa\x02\xd5\xcf\x6c\xac\xa6\x6b\x74\x82\x79\x1c\xb9\x32\x7a\x82\x0d\x39\x86\xb8\xdb\xbe\xf4\x0b\x8c\x67\xfd\x2e\xed\xa1\x70\xf8\xf9\x72\x93\x14\xf8\xdb\x6d\x19\x97\x68\x77\x6d\xb9\xb5\x7e\xaa\x20\x20\x7d\xdc\x65\xfd\x1a\xb1\x92\x99\x9c\xc2\xea\x97\xa0\x0e\xb6\x28\xf8\x39\xb0\xf2\x0f\x18\x83\x03\x9d\x7b\xfd\x2c\xb2\x18\xac\xab\x16\xa7\x28\x37\x38\xd2\x00\x56\x6a\x06\x5e\x35\x80\x54\xb8\x80\x3e\x3c\x18\xf9\x8a\xb0\x44\x88\xc4\x87\x29\x27\x9a\x11\x7d\xb9\xff\x4c\x32\x69\x7d\xe1\xc9\x57\xd2\x18\xac\x03\xb7\x6b\x0d\xb8\x79\x04\xc5\x60\xcf\x00\xdc\x59\xa0\x03\x9c\xde\xb4\x8e\xf0\x12\x4a\x00\xb2\x7a\x18\x10\xd9\x0d\x7f\x2f\x9a\xd0\xda\x33\x26\xb6\xd6\x22\x22\x05\xe8\x0f\xd7\xd8\xd2\x13\xff\xd5\x9f\x44\x08\x83\xbe\x3c\x43\x14\x5e\x2f\x35\xb6\x3b\x23\xbf\x36\xd2\x81\x0b\xce\xe0\x93\x95\x40\x29\xe0\x2b\xec\x9f\xfc\x18\xbe\x8f\xaa\xf5\xc2\xf9\xf5\xcf\x87\x62\x4f\xcc\xa2\x27\x57\xf7\x1a\x89\x2a\xf2\x52\x6d\x96\x5e\xfe\x2c\xe8\x5c\x6b\x7f\x2f\xed\xc9\xed\x93\x4b\xde\xf2\xf5\xd6\x8c\x8f\x51\xb8\x7f\xaa\x2a\xb6\x63\x57\x26\xb9\xe6\xde\xf6\x44\xa6\xb2\x46\x8f\x97\xf9\x58\xfc\x79\x73\x1e\x49\xa1\xfe\x2f\x79\x84\x86\x24\x04\xcc\x1c\xd4\xb9\x7e\xa1\x8b\xd6\xcc\x23\x32\x1d\xb1\x22\xc2\xd0\xd7\xf1\x93\x73\xda\x0e\x6d\x6a\xab\xbe\xa9\x63\x93\x81\x99\xb7\x04\x7f\x1f\xd6\x1a\x4a\xef\xe1\x13\x2f\xfb\xd5\xa2\x17\x96\xd4\xe0\x50\xae\x41\x82\x04\x7a\xd4\x6a\x72\x55\x81\x10\xaf\x90\x13\xa7\xe2\xed\x8f\xe3\xd3\x6d\x52\x02\x75\xb3\x10\x27\xbb\xa2\x8a\x72\x73\xdb\x40\xfe\x99\x5c\xc4\x4d\xcb\x83\x89\x03\x03\x06\xb7\x9d\x75\xc5\xb0\x8d\x1f\xdb\xef\x64\x23\x3f\xa2\xd4\x85\x1f\x53\xb8\x71\x1c\x14\x32\x2c\xfe\x8c\xf7\x4f\x56\xf4\xd7\x3c\x8e\xbb\x2e\x3f\x91\xfe\x7f\xd3\xfd\xd1\xa7\x64\x57\x9d\xe5\xb2\x16\xf0\x59\xb4\x52\xad\x78\x8e\x96\x3a\x85\x50\x74\x23\x7b\x61\x8e\xed\x43\x1d\x02\x48\x3a\x4c\x20\xca\xf2\x0d\x57\x4f\xee\x6d\x86\x71\xce\xff\x45\x90\xc6\x33\x84\xe7\xee\xd6\xcb\x42\xb1\x67\x10\xbc\x92\x53\xc6\xab\x3f\x26\x7d\x1c\x00\x91\x2a\x76\xbd\x74\xa6\x47\x02\xfc\x11\x63\x9e\x6e\x8c\xeb\x3e\xa1\xec\x95\x6d\x8b\x78\x99\x9f\x62\xdb\x42\xb5\x82\x5a\xa4\x00\xf4\xb5\x46\xa8\x87\xb5\xa2\xef\x33\x73\x2b\x91\x30\x48\x75\xf5\x59\x95\x31\x4e\xa5\xfb\x13\x6c\xb0\x5b\xe9\x81\xbe\x49\x16\x00\x7e\xed\x13\x3c\xdb\x0d\xd2\x81\x39\xb5\x55\xd3\xd5\xd3\xa4\x48\x8c\x9b\xe0\x0d\xd6\xce\x5c\xc7\x0c\x20\xd1\x25\x87\xd6\x9e\xc7\xde\xe7\x97\x50\x66\x6c\xf5\x51\xaf\xb7\xe3\xb5\x77\x9a\xba\x37\x9a\xf7\xc4\xc3\xd9\xa9\x2b\x87\x27\x73\x84\x0c\x49\x94\xe7\x1b\xfa\x5e\xe3\x1c\x6b\xf6\xd8\x44\xef\x31\x41\x6f\xc6\xe0\x50\x47\xc1\x74\xb7\x24\x13\x7c\xb5\x25\xad\xa8\x8e\x0f\x72\x71\xec\xb8\xbb\xe6\x54\x78\x07\x73\x42\xa6\xb1\x1c\x7a\x66\x42\x9a\xea\xa0\x00\x49\x1d\x68\x75\xa0\x62\xd4\xd5\x10\xe1\x96\x88\xc2\x52\x33\x7a\x09\x38\x59\x93\x1e\xdc\xb3\xed\x7b\x9f\xe0\x29\xc0\x3c\x2e\x52\xcc\x34\x4f\x8c\x77\xbf\x5a\xf1\x7b\x8b\x92\xd0\xb2\xbe\xd6\x6b\xff\x5a\xc6\x9c\x9f\xa2\xf4\x7a\xb2\xc7\x5f\xd8\x94\x07\x40\x2b\xe4\x43\xd5\xb8\x3e\x68\xf7\x71\x68\x6d\xb6\x97\x1b\x0e\x00\x77\xa9\x5e\x65\xa6\x10\x79\x5a\xaf\x37\x68\xf7\x98\x9b\x3a\x17\x28\x84\xa5\xda\xf5\x40\x0b\x3a\x68\x61\x0b\x2d\x0b\x0f\x2d\x9c\x43\x0b\x97\xd0\xa2\x05\xb4\x2c\x76\x10\xa9\xaf\x78\x01\x2d\xb4\x82\x68\x77\x45\x5b\x68\xb9\x5f\x12\xe5\xea\xd9\x07\x3a\x4d\xda\xff\xb1\x5f\x57\x27\x18\x19\xbc\xf4\x57\x9c\x2c\xa4\x58\x37\xda\x17\x6e\x41\x87\xcc\xd1\x04\x14\x27\x69\x20\x65\x59\xa7\xbe\x6e\x03\x1b\x11\x75\xb9\x4a\x54\xd7\xea\xcf\x9d\x5b\xe5\x1c\x81\x17\xaf\x66\xca\xb7\x60\xf9\x14\x6f\x64\xaf\xfd\x37\xe7\xc2\x5e\x71\x08\xe0\xc4\x37\xc4\x44\x45\xc7\x36\x3f\xde\x8d\x8c\x5b\x2a\x14\x15\xa8\xc1\x88\xe9\x97\xfe\xd0\x21\xee\xba\xa1\xc0\xa2\x9e\x21\xeb\x89\xef\xb9\x2c\x36\x2a\x19\x03\x52\x61\x26\x5a\xa8\x19\xc0\xda\xa5\x36\x2d\x9f\x1f\x35\x23\x07\x7e\xcd\x38\x66\x75\x57\x61\xd8\x07\x44\x66\xc3\x0a\x99\xe8\xfb\x8f\x73\x17\x8b\xd3\x37\x6d\xcc\xd1\x55\xe2\xe1\x44\x17\x72\x0c\x8d\x80\x4e\x61\x1b\x8c\x9b\xed\x35\x69\x7c\xe8\x4d\x16\x37\xf5\x3c\xd9\xa2\xfd\xe7\xdb\xc5\xac\x1d\x6b\xb1\xc6\x10\x65\x1b\x78\x18\xda\x2e\xdf\x5d\xd9\x31\x8d\xc4\xa6\xc8\xa2\xa3\x12\xc8\x02\x3d\xf2\x72\x00\xad\xaf\x75\x30\xb4\x6b\xc3\x04\xef\x63\xfb\x7a\xde\x74\x18\xf0\x1f\x97\x08\xd1\x0f\x80\x88\x53\xc5\x34\xe3\xcc\x7b\x2d\xf8\xc8\xf3\x89\x42\x0b\xaf\x55\x80\x2e\x49\xb3\x7a\x53\xad\x60\x1a\x63\xde\xe3\xf5\x52\x0d\x3b\x83\x17\x1f\x9d\xdf\x07\x14\x8f\x24\xf7\x58\xf4\x02\xd1\xba\xc0\x43\x59\xb7\xf0\x3c\x64\xfc\xe2\xe9\x72\xec\xd9\x90\x70\xe7\xbc\x03\xae\xc3\xa6\x30\x98\x87\x58\x47\x19\x41\xeb\xa4\xec\xad\x79\xa5\x75\xf5\x4a\x28\x39\xa6\x81\xb3\xad\xc8\x8e\x77\xb7\x41\xc6\xb8\x41\xf4\xd0\x71\xaa\x39\x27\x70\x7e\xda\x1a\x39\xa0\x70\xbd\xbf\xa6\xa6\x44\x53\xfc\x26\x7b\xfc\xfb\xfb\xed\xe6\xf6\xca\x19\x59\x38\xf2\x6f\x51\xa2\xa2\x0c\x84\xdb\xc2\x8c\x3a\x1b\xd4\xcc\xac\x03\x26\x4b\xd5\xd4\x4b\xae\x32\x4a\xd1\x61\x45\x48\x2f\x7c\x5e\x87\x3c\xcf\x4c\x44\x90\x0d\x94\xc2\x13\xbe\x7b\xa2\xae\x9e\xd0\xdd\x13\xb8\x8f\x95\x88\x1a\x93\x31\xa8\x80\x72\x79\xf8\x41\x8c\xf8\xc0\x75\x7e\xe0\x03\x1f\x48\xb1\x8e\xda\xbb\x25\xdf\x2e\xee\xf9\x7a\xcf\xd3\x9c\xd8\x7e\x09\x07\x35\x97\x89\x90\x25\x8c\xca\x8c\x5e\xf6\x68\x6a\x67\xc7\xf6\x9d\xa9\xbd\xf8\x9c\x4f\xf1\x3d\xae\xe6\x9e\x06\xfd\x2f\x55\x32\xef\xf0\x34\x56\x2c\xf5\x6f\xb3\x5d\x22\xaf\x8c\x27\xbb\xc2\xa4\xee\x34\xd5\xb2\x19\x24\x3a\x3d\x0d\x9c\x60\x00\x03\xcf\x57\x45\xec\x45\x1c\x64\xb1\x81\x0b\xf0\xf6\xa5\x7b\xe0\x1f\x84\x39\x22\xa3\xd0\x65\xe0\x81\x75\x0a\x3e\x75\xc1\xd3\x09\x36\x18\x5f\xcf\x12\xa4\x10\x35\x2b\x77\x4d\x5f\xd4\xe5\x38\x1e\x04\x20\x3d\x45\xf5\xf2\x17\xf8\xd1\x43\x58\x97\xf6\x69\xce\x6f\xb9\xa4\xce\xb5\xd3\x0b\x73\xaf\xc6\x5d\x48\x39\x61\x8f\x6f\xe1\x72\x40\x59\x96\xeb\x60\xb9\xd0\x68\xe5\xd1\xd9\xea\x82\xa1\x3a\x96\x59\xde\x77\x44\x18\xc1\x0f\x40\xd5\x73\x86\xc7\x89\xc4\x87\x35\x2d\xf3\x58\x13\x32\x91\x6f\x23\x82\x29\xa6\x42\xeb\x5d\x92\xb1\x10\x30\x75\xfd\xc1\xc8\xa1\x5b\x2a\xa8\x29\x6e\x38\x43\x49\x51\x66\x7d\x94\x26\xbe\x5f\x94\x28\xb8\x63\x37\x51\x31\xd3\xfb\x1e\xbc\x06\x07\x58\xbf\x68\xee\xe5\xbd\x93\x51\x23\x46\xa3\x1b\x46\x56\x96\x92\x5b\xee\x5d\x9d\x6b\x27\x95\x1d\x9e\x0b\xb3\x2e\xbc\x9e\xfe\xe7\x9a\x76\x0a\x48\x47\x89\xb3\xda\x88\x05\xb8\x69\xa9\xfa\xca\x2b\x1e\xdf\x68\x4d\x7c\x6b\xb1\xbc\x8f\xf8\x4d\x35\x10\x4b\x19\x97\xf6\x39\xf6\x32\xf1\xfe\x3a\x43\x40\xde\x62\xe8\xc6\x12\xbe\x45\x34\xde\xad\xad\x05\x18\x19\xd3\x49\x2a\x1c\x56\x55\xb5\xc6\x8d\x52\x05\x07\x50\x68\x01\x61\x42\x59\xb0\xbe\x2c\x86\x0b\x21\xc4\xe4\x74\xe8\xd0\x80\xb4\x02\x28\x91\xae\xd1\x28\x81\xde\x70\x46\x29\xa8\xb5\xa6\xa6\x76\xd8\xb1\x20\xd6\x02\x0c\xc2\x6a\x2e\xeb\xd9\x5c\xe0\x36\x05\xa9\x85\x4c\x24\x8c\xb1\x59\x9a\xdc\x67\xb4\x0c\x1b\x20\x3c\xd3\xe3\xe3\x6d\x4e\x93\x46\x6a\x1f\xbf\xf4\xa5\xaf\x6d\xbc\x09\xb1\x43\x6c\xbf\xf4\x32\x04\x84\x64\x5b\xd4\x46\x62\x2d\xc8\xe5\x62\xb5\xaf\x5d\xbc\xa7\xea\x1f\xc7\x5b\x1f\x51\xd1\x56\x80\x03\x98\xd8\xc5\xb7\xca\xdc\xbc\x15\xff\xea\x21\x62\x17\x39\x71\xee\x4c\xb1\xe1\x65\x78\x7c\xb5\x7f\x7c\xcd\xe5\x90\x87\x53\x78\x7a\xbc\xbb\xf7\x1f\xb7\x0e\x45\x17\xcd\x05\xea\x67\xb5\x87\xa5\x2a\x87\x47\x9f\x96\x32\x8c\x0d\x91\x35\x65\xcb\xe5\xcb\x2a\x5d\x96\xc9\xb1\x51\xb9\x09\x0c\x61\x8e\x0a\x35\x7a\x97\x52\x59\xc1\xc4\x0d\x70\xb3\x5c\xda\x22\x28\x94\x75\x39\x64\x25\x79\x90\x06\x91\xdf\x58\x25\x9b\x89\xb5\x83\xc2\x31\x8c\x3a\x9b\x26\xca\x96\xee\x80\x79\x78\xac\x23\xfb\x1e\x7a\x39\xbf\x72\x3e\x36\xeb\xfe\xd0\xbe\x55\xc8\xe9\x13\x31\xe6\x85\x23\xa3\x49\x35\x77\x5a\x30\x35\x1d\xe6\xea\x0a\x97\x3d\xef\x31\x8b\x2f\xed\x05\x35\xe6\xea\x4a\x4c\xe4\x04\x7e\x14\x34\x66\x01\xfb\xcf\xd3\xca\xb3\x3f\x52\x82\x2b\xa5\x2d\xd9\x74\x36\x72\x6e\x30\x8e\xc0\x93\xe4\x85\x8e\xf7\x45\x83\x0e\xe4\x26\xa1\xea\x7c\x2b\x71\xec\xcb\x48\x39\xc8\xef\x8e\x8f\xe3\x66\x1c\x91\xec\x25\x6e\x1e\x61\x99\x29\xfe\x6d\x89\xdb\x62\xb0\xee\xe2\x45\xdc\x17\x55\x7c\x58\x46\xed\xe7\x2f\x95\xe2\x15\x09\x44\x54\xa9\xb0\xca\xea\x21\xc7\xc9\x7d\xf3\xd0\xd9\x76\xd2\xc6\xfc\x4f\xa8\x78\xa5\x8e\xf1\x17\x96\x09\x71\xdd\x2d\x73\x7c\x99\x15\xe7\x8e\xe9\x3d\xe9\xd4\x91\xf6\x20\xb9\x4c\xf3\xc9\x9c\x91\x22\xdf\xd3\xf9\x34\xa0\xb9\x8d\x06\xd9\xef\xce\xd1\x0d\x51\xf7\xbb\xb9\x1d\xec\x18\x47\x36\xff\xaf\x33\x3e\xad\xc6\xc2\xfb\xd1\xe8\x18\x54\xbd\xc3\x38\x90\x26\x02\x9e\x46\x51\x49\xf3\x90\x87\x54\xde\x2b\xbc\x1c\x4f\x8a\x22\xb5\xb0\xb6\xd0\x84\xec\xd7\x6b\x1f\x58\x69\xdb\xf3\xf7\x51\xac\x90\xfb\x00\xc2\x9e\x43\x31\xf5\xa6\xf7\x50\xc8\xdc\xf7\xd5\xce\x55\xb3\x24\x16\xed\xa4\xe6\xce\x14\xd1\x07\xd3\xd6\x38\x6f\x36\x70\x8c\x30\x68\xaf\x2e\x68\xdd\x7b\x6f\xa1\x3a\x2e\xbd\x34\xc9\x62\x18\x1f\x4b\x8e\x06\xa2\xa1\xce\x74\x3a\x02\xcb\x60\x3d\x61\xc5\x5f\x2f\xe9\xfc\xe4\xcc\xbb\x32\xdc\x3e\x97\x45\x90\x4d\x4e\x05\xd2\x29\x29\xa4\x90\x06\x47\x38\xaf\x05\xa3\xbb\xa5\xfd\x64\x7e\xfc\x69\x4e\xf0\xd1\xb0\x7e\xe2\x80\xe3\xa4\x52\x4a\xcb\xdc\xf8\xd3\x35\x45\x49\x7b\x84\x68\x4a\x62\x17\x42\x3c\x49\x42\x9e\xd8\x64\x7a\xbd\x30\x67\x87\x8e\x54\xbd\xd8\xb4\x82\x91\x93\x10\xc4\x93\xa5\x4c\xaf\x73\xe6\x69\xd1\xb0\xdb\x57\x4a\x61\xcb\x1b\x20\x77\xbe\x02\x91\x66\xae\x1f\x16\xf3\xda\x03\xd3\x0c\x2c\x8d\x03\xbc\x7d\x7d\x30\xf3\xaf\xee\x9e\x3e\x1b\x7c\xd6\x15\x83\x47\x00\x37\x23\x74\x9d\x69\x12\x36\xd8\xe5\xb9\x22\x37\xdc\xa4\x1b\xb5\x74\xeb\xb6\x1e\x9a\xb5\x6a\x76\x1e\x6d\xa4\x38\xd1\xf5\x70\x91\xea\xe7\x4b\x96\x77\x6f\xb3\xb8\x23\xd8\x1c\x3b\x43\xc5\x3e\x17\x84\x9a\xae\xa2\x42\x08\xf1\x63\x6f\x97\x1c\x3c\xaa\xf5\x98\xcd\x8b\xf2\x34\x04\x0b\xd0\x8f\x43\xeb\xa0\x8f\x78\x89\xb4\x1d\x10\xa7\x6d\x64\xce\x35\x62\xf2\xbd\xfc\x42\x50\x78\xe4\x8c\x94\xce\x81\xe1\x40\x6c\x24\xd4\xab\x7d\xe1\x2b\xf6\x81\xae\xe5\x75\xd1\x18\xdd\x66\xf2\x19\x76\x29\x1e\x67\xa8\x35\x6f\x71\x9e\x22\xf4\xd9\xe2\x32\xdd\xd0\x9d\xcd\x42\x4c\x4d\x54\x0e\x41\xba\x46\x1c\xcb\x56\x8b\xab\xed\x9b\xf9\x0a\x34\xdb\x2f\xda\x19\x92\x42\xf5\xaa\x66\xf9\x1a\x13\x50\xc6\xc1\xb3\xf5\x9f\xbf\xe7\xd0\x01\x25\x00\xcc\x11\x6c\xe0\xdc\xca\xf8\x4b\x44\x92\x2a\x5c\x75\xaf\x6e\xed\xd4\x00\x1b\x3b\xca\x8d\x6b\xac\x7c\x2d\x78\x81\x30\x52\xbe\x3d\x2d\xf9\xa8\xf9\xc2\xf2\x8f\xe5\x52\x93\x53\xe2\x85\x9c\x9d\xa7\xf6\xb6\x9c\x6e\xe0\xa4\x65\x34\xa4\x77\xff\xa7\xbb\xb1\x10\xfb\xe7\x1c\xce\xfc\xbc\x27\x6c\xcf\xf6\x99\x30\xbf\xe7\xf2\x0a\x7c\x37\x64\xdc\xe1\xa2\xf1\xbd\x71\xde\x13\x63\xa0\xc5\x77\xd0\x7d\xf0\x8f\xe7\x51\xfd\xcc\x0e\x5c\x61\x4f\x37\x49\xbe\xd5\x75\x78\xe8\xc7\xba\xef\xc0\x01\xab\x97\x1d\x05\x6b\x2c\x4f\x51\x67\xdf\x4f\xfb\x0e\x79\xd3\x99\x12\x01\x44\xb3\x31\x40\x68\x6e\x89\xf6\x02\xb7\xbd\xa0\x4b\x71\x5a\xea\xb5\xa3\x04\xdb\x8f\xb2\x4b\xa3\x04\x14\x62\x55\x77\xca\x6a\x3f\x11\xc4\xd5\xf6\xfd\xed\xf3\xb5\xf2\x81\x6e\x87\xcc\x24\x9a\x2f\x79\xfd\x6d\x17\xe4\xab\x95\x9c\x70\x10\xd6\xef\xce\xeb\x1a\x5f\xd0\x4d\xa0\x6d\xfc\x35\x86\x2f\xfc\x65\xeb\xfd\x20\x2c\x85\x2b\xbb\xab\x9d\xde\x37\xf7\xe0\x78\x41\x61\x11\xee\x1c\xdb\x7a\x3b\x44\xef\x3a\x2d\x95\x2e\x95\x90\x6d\xb6\x56\xa1\xb9\xc3\x2e\x49\x0d\xd8\x35\x82\xad\x6c\x75\x59\xcf\xef\x40\x6f\x4d\x0b\xa3\x7a\x97\x02\x56\xa7\xd4\xe3\x23\x8e\xcc\x71\xdb\xd7\xd6\x95\x81\xc2\x8e\x58\x5d\xd8\xb5\x25\x8e\xb2\x5c\x0e\x9c\x49\xd8\x58\xd0\x9f\xdb\x16\x8a\x8b\xa0\xc5\x44\x9a\x57\xdf\xf4\x7c\x7c\xbc\x07\xc0\x9b\x60\x7b\x35\x0f\x11\x5d\xef\x5d\x18\xe0\xf6\xe1\xa5\x3c\x88\xab\xa1\x81\x72\x8b\xd0\xf4\x6f\xb8\xdd\x8c\xaa\xc0\xfb\xe8\x48\x00\x24\x0d\x12\xde\xb6\x58\x08\xd8\x17\x7d\xa0\xcc\xad\x99\xca\x63\x7d\x50\xe6\xbc\xb2\x71\xe4\x53\xe2\x93\xca\xba\x31\x26\xd3\x04\x6b\x78\x49\xef\xa2\xc5\xff\x11\xe7\xfc\x2e\x3a\x2a\xdd\xf6\x12\xfd\x39\xf0\x15\xc0\x47\x45\x02\x17\xd8\xe9\xd7\xa4\x01\xee\xfc\x7d\x38\xb3\xc4\x51\x49\x81\x87\xdb\x15\x34\x5f\x4a\x1e\x84\x3c\x92\x3c\x64\x2f\x51\xc5\x73\x0e\x94\x9a\x43\xaa\x2c\x9b\xa5\x5d\x4a\x39\xa7\xd4\xd3\x80\x91\x6f\xeb\x54\xb6\xdb\xc6\x42\x6a\x8a\xa1\x45\x59\x97\xdd\x6b\x13\x25\x09\x9f\xa1\x6f\x8b\x02\xa8\x78\x64\x75\xfe\x85\xbb\xcb\x85\x37\xc4\x78\xe9\x3d\x6d\xde\x73\x81\xe7\xe7\x51\x51\x5f\xa5\xd7\x12\x75\x0a\xcb\x72\xc4\xc7\xc8\xb6\x3f\x38\x27\x9b\x9b\x21\xdd\x61\x7f\x8a\xcc\x24\x42\x3b\x9b\x01\x8e\x1c\x32\xc6\x53\xcc\x28\x81\x59\xd4\x5e\xac\x66\xfa\x57\x5e\x47\xcf\xa6\xdc\xb1\xd1\xae\x88\x32\x50\x14\xb0\x3e\x60\x3c\x47\xf5\x52\xfe\x41\x75\xaf\xf6\xa4\xdf\xba\xbf\x25\x8d\x1f\xd5\xe2\xd2\xc0\x03\x07\xa4\xf8\x6a\xf5\x8d\x5d\x84\x67\xf2\x82\xc7\x68\x2a\x8d\x01\x3b\x3c\xee\xd1\xc6\xcf\x8b\x2d\x37\x94\xfb\xb9\xa7\xfc\xe7\xbc\x0f\x14\x2f\xf7\xaf\xf7\xe2\xbd\x3c\x52\x2a\x79\x09\x45\xdb\xe7\x3b\x69\x30\x0c\x30\xfd\x94\xc5\xec\xfb\x12\x70\x2d\x0f\x04\x9f\xb6\xad\x7d\x2f\xd3\x00\x5c\x4f\x97\x1c\xda\xf7\xf5\xd0\xb7\x06\x56\xb0\x9f\xe8\x2c\x1b\x18\x4e\x79\x57\xeb\x69\x7a\x89\x39\x9e\x99\xf1\x0e\xf9\x98\x0e\xfd\x3b\xc5\x14\x84\x3e\x21\xe8\xd5\x0f\xca\x39\x19\xaa\x9c\x71\xcf\x2e\x95\x32\xb3\x9c\x89\x22\x8b\x29\x7f\x5d\x0b\x35\xdc\xd8\x55\x96\x55\x5a\x4a\xbf\x5f\x30\xca\x8b\xfa\xa5\xb1\xd0\x25\x3e\x5f\x0e\x3a\xef\xdc\x83\x9c\xe8\xd3\x0a\x39\xa7\x2f\xc7\xbe\xfe\x7e\xf9\xc9\xcb\x57\xaf\xbf\x3d\x0b\x14\x6e\xc1\xce\x06\x2a\xdf\x1b\xd5\x15\x0c\xe8\xbe\xbb\xab\x87\xe1\xd4\x77\xa4\x2e\x61\xe8\xf6\x31\xff\xac\x0b\xcc\xdd\x13\xd7\x3c\xdd\x03\x6c\x7e\x6f\x48\xe7\x30\xa0\xff\xcc\x10\xaa\x00\x9d\x95\x19\xaf\xd0\x67\x24\xe5\xe7\x3c\xa6\x11\xe0\x5c\x7f\x73\xf1\xe0\xa2\x1c\x5d\x91\x36\x4f\x0f\x08\xa0\x2b\xae\x53\x78\xbf\x6d\xf0\xa8\x51\x93\x6c\x27\xee\xda\x10\x1c\x9e\xf1\x28\x88\xd9\x00\xec\x3c\xa6\xef\xc9\x55\x50\x3b\x54\xf4\x05\x8a\x2f\xe0\x06\x69\xdc\x77\x1f\xf5\x3e\xf7\xf3\x3d\x56\xed\x5d\x2c\x77\xde\xc3\x5d\x05\x40\xd5\x19\xb7\x49\xb1\x50\x2b\xa4\x82\x6f\x4c\x9f\x6c\x30\x0e\x0e\x2c\xfc\xb4\xed\xfa\x21\x47\x4c\x8e\xdc\xa2\xab\x0f\x45\x2e\x66\xe1\x89\x9a\x1d\x39\x42\x33\x92\xd2\x32\x79\x56\xf6\x38\x96\x33\x0e\xee\x91\x1d\x33\x37\x78\x86\xdb\x1f\x1c\x13\xe3\x8b\xf0\xd2\x1f\x0f\xb7\xfb\xdc\x8d\xc3\x04\x26\x31\x31\x75\x47\x50\x4b\x6b\xbe\x7b\x08\x7a\x14\x96\x6a\xfd\x36\x12\xd0\x10\xff\xc1\x27\xfa\xe6\x6f\xc6\x06\x53\xb9\xbc\x3d\xce\x15\x47\x7b\x47\x07\x79\x72\x77\x31\xd7\x11\x69\xec\x1d\x36\xa9\x8f\xbc\xfe\x83\x49\x8f\x7d\x16\x0c\xb0\x2e\x25\x5f\x47\x06\x70\x1c\x7b\x9a\xdd\xc0\xf0\xa2\xc2\x8c\x85\x3c\x4e\xfb\xb5\xf9\xf0\x00\xdf\x3a\xdd\x3a\x49\x96\xa7\x44\x13\x3d\xfb\xd1\x85\x73\x78\xcf\x0d\x56\xa1\xb0\x9b\x74\xd1\xde\xf8\x3d\x90\x59\x01\x2b\x8d\x5b\xf0\x61\xb8\xa4\x80\x36\xd7\x66\xb0\x04\x60\x2d\x1f\x03\x6e\xd7\x95\xf3\x58\x03\x9d\x3b\x2b\xfb\x38\x4c\xe1\x02\xdb\xdc\xde\x10\x1e\x8f\xfd\xee\x9f\x78\x0e\xa9\x6e\x6e\x78\xe1\x6d\x2e\xba\xa7\x29\x62\x9a\x8e\x58\xe5\xeb\xef\xda\xf0\xfa\x5f\x7b\x18\x2f\x10\x1b\xbf\x75\x9e\x51\x83\x86\x9e\xe4\xfd\x74\x05\x00\x25\xc5\xa3\x0f\xce\x3a\x05\x00\xc8\xea\xf0\xa4\xef\xec\xfa\xc1\x77\xdc\xbf\xbe\xc6\xd3\xa1\x8c\xc7\xbb\xbb\xea\x54\x9e\xbc\x1e\x9d\xf0\x71\x0b\x01\x32\x53\x59\x0b\x5b\x38\x0e\xd2\xed\x2e\x2c\x1e\xb7\xb2\x00\x6e\xf0\x9b\xfd\xc1\x76\x9b\xe0\xa5\xd7\x1d\x6b\x69\x0d\x45\x40\x48\xab\x00\x2a\x1f\x81\x15\x5f\x51\x1f\xca\xb9\xf2\xfb\x75\x2e\x6b\x2d\xb9\xea\x87\x8d\xd1\x49\xc4\xd3\x62\x40\x90\x9e\x32\xb1\xef\xa9\x25\xa4\xcd\x1d\x55\x42\x58\x0e\x68\x00\x4a\xb3\xea\x5c\x57\x77\x26\xcf\xab\x70\x8f\x3b\xc5\xea\x7b\x8d\x07\x97\x74\xe5\x6e\xde\xd1\x3f\xdf\x80\xc4\x17\xe1\xc5\x72\xe3\x33\x70\xa0\xb5\xcc\xe2\xc2\x28\xf5\x77\xd2\xde\xad\x66\x90\x66\x30\x8b\x73\x73\xaa\xef\x44\xfb\x6f\xdb\x8a\xc8\x96\x20\xb5\x0e\xf1\x27\x91\x96\xc9\xf9\x89\xc1\x8c\x31\x21\xd7\x7a\xc4\xf9\x8c\xa1\xed\x3b\x69\x12\x05\xa0\xdd\x10\x0b\x34\x95\xd8\x92\xc6\x54\x7f\x43\xdc\x29\xd0\x45\xa0\xa6\x84\x57\x06\x4e\xa5\x12\x54\x63\xc6\x34\x12\x89\x71\x29\x11\x21\xd3\x32\xd7\x83\x9a\xad\x80\xe9\x59\xd8\x66\x80\xc0\xc7\x19\xbf\x65\x95\xfc\xb8\xc1\x0e\x6b\xab\x1f\xa1\x79\x49\x96\xcf\xc0\xeb\xa3\xff\xbf\x04\xac\xfa\xa2\xc8\x8d\xfe\xfb\xfc\xe4\xb8\x67\x59\x8c\x9a\xd8\x60\x99\x3c\x29\x41\x8b\x91\x36\x42\x47\x5f\xfd\xb0\x84\x00\xae\x7a\x6a\xaf\x51\xb1\x52\xdc\xaf\xd5\x57\x5e\x28\x90\x59\x2c\x89\x01\x9c\x17\x41\xab\x5d\xc6\xbf\x20\x47\xbe\xd8\x7c\xee\x7e\xdf\xa6\x4c\x39\x28\x9e\x47\x36\xb6\xdc\xca\x21\x51\x33\x4f\xb7\x84\xa8\xec\xc2\x96\x80\xa9\xa3\x49\xad\x1a\x8e\xc4\x64\x31\x56\x49\x79\x03\xed\x38\x55\x1d\xa4\xa2\x52\x1d\x10\x56\x57\x4b\x1d\x76\xb9\xa0\xc6\xb3\x97\x51\xcc\x39\x4b\xe8\x31\x6a\x32\x34\x5d\xd4\x4e\x10\xa8\x4e\xce\x61\xa5\x61\xea\x1e\xd9\xf3\x30\x48\xdb\x34\x97\xef\xeb\xee\x03\xf8\xf7\xf5\x75\xb1\x18\xe5\xc1\xee\xb6\x19\x7b\x5c\x7a\x31\xdc\x58\xf4\x8f\x93\xd8\xcc\x45\xf9\x61\x9d\x74\xad\x13\xac\xd5\x93\xbe\x85\x9f\x3d\x69\x5b\xb8\x93\xad\x7b\x3f\xef\x60\x2b\xce\x37\xf8\x68\x05\xfd\x28\x1d\xfd\xa8\x09\xfd\xb7\x03\xd0\x8f\x3a\xa1\x1f\x75\x40\x3f\xda\x82\xf6\x8f\x22\xa1\xd5\xb0\x2d\x0d\x90\xfb\xe9\xca\x68\x73\xe5\x7e\x3a\x46\xb4\x7f\xdd\x33\xda\x7f\x7a\x16\xb4\x7f\x5d\x13\xda\xbf\xae\x15\xed\x5f\xdf\x86\xf6\xfd\x77\xe2\x24\x10\x99\x51\xc5\x0f\xef\x38\x72\xe6\x84\x24\xf6\xc3\x0f\x1c\xa0\x65\xb4\x49\xdc\x98\x98\xfc\x4a\xd3\x4b\x7e\x77\x1c\x41\xc7\x5d\x41\x3c\x4d\x7d\xa9\x91\x69\xa2\xce\xf2\x92\xe6\x25\x71\x1a\xac\xe4\x0a\x55\x52\x05\xfa\xcc\x2d\x1a\xcb\xea\x99\xb4\xbd\xa4\x6c\xa5\x54\xc6\xca\x5a\x99\xfa\x84\x17\xd1\xa8\xf8\x20\x2a\xeb\x13\x9d\x8c\x04\x8e\x86\xf2\xbc\x3a\x0c\xb9\x5f\xd2\xb5\x35\x06\xc2\x99\x52\xac\xbd\xb0\xab\x30\xb9\x9c\x4d\x7c\xb3\x0c\xa9\x7c\x31\xb1\xc1\x42\x28\x3a\x21\xbe\x24\x99\xef\x52\xf4\x73\x23\x25\x4f\x89\xfc\x5f\x12\xe9\x17\x56\x07\x52\x72\x17\xa6\x42\x67\x93\xe5\x9c\xcc\xa7\x20\x11\xf5\xcc\x82\xd2\xdc\xa6\x97\xe6\x1d\x9e\x02\x5c\xe1\xe6\xe0\xaa\x26\xb1\x4b\xb2\xad\x5f\xf4\x6a\x86\xf9\xe3\x54\x8f\x54\xaa\x14\x73\xf5\xd3\x4b\xaa\x04\x2b\x09\xd1\xd6\x13\x7c\x87\xa2\x9e\x34\xdb\x94\xcb\xae\x8c\x6c\xf0\x29\x45\x57\x08\xb6\x4a\x4a\x91\x95\x15\x36\x59\xca\xae\x32\xe1\xf6\x4c\xfb\x53\x71\xde\xd8\x29\x7f\x2a\x49\xd8\x84\xb4\x3f\x15\x60\x6b\x92\xf2\x7f\x6e\xa6\x1d\x61\x8f\x81\x53\x96\x23\x07\x52\x99\x5c\x6e\xce\xf1\x83\x79\xe2\x60\x25\x57\x52\x05\x2a\xb3\xb7\xf4\xb0\xd9\xf3\xf2\xba\x7f\xbd\x38\x6d\xae\x69\xae\x30\x57\x99\x6b\x9c\x6b\x37\xd7\x71\xae\x43\xb0\x05\x73\xd5\xa7\x77\xb9\xad\x3d\xb7\xe5\xdb\x01\x83\x70\x52\x47\x56\x08\x21\x0a\x7e\x0d\x09\x08\xf5\x42\x17\x3a\x72\xe2\xde\x4d\x83\xe0\xb4\x0d\x08\x3f\xab\x91\xa8\x2a\xa1\xa1\xe4\x23\xab\x7a\x03\x89\xf1\x22\x92\x6f\xe1\x23\xd3\x20\xb2\xc9\x5d\x93\xa7\x8a\x8d\x53\x53\x6e\x45\x08\xcf\xeb\xcb\x15\xed\xfd\xdb\xce\xe1\xfa\xa9\x81\xb0\x30\xc1\xab\x8f\xcc\xd0\x21\x81\x21\x5c\x60\xc1\xf0\x09\x4d\xab\x69\x1e\x9d\xd3\x7f\x76\xb6\xbc\xdd\x38\x40\x18\xe8\x75\xf6\x5b\x0b\x9c\xab\x8e\x2e\xea\x67\x59\x1f\x6b\xc8\xac\x8c\xde\x81\xb5\x4c\x83\x2b\xea\x18\x9e\x26\xfc\x39\xcd\x1b\xf1\x59\x13\x1a\x0d\xd5\xe7\xed\x97\x76\x50\x07\xcc\xd0\x74\x43\xcc\x1f\x96\xd8\x48\xaf\x9a\x5e\x78\x58\xac\x9a\x26\x34\x26\xd1\x2b\x9a\xd3\x23\x74\x16\x74\xdc\x30\x5f\x6c\x73\x56\x13\xe9\x5e\x03\x93\x49\xed\x5e\xc8\x92\x0c\xa2\xbc\x2a\x9c\x5c\x71\x46\x67\x74\x93\x6e\x35\x0f\x61\x1e\x1f\xf5\x00\x85\x6b\x55\xde\x76\xfd\x3e\xa8\x6d\xac\xd1\x2b\x0e\x23\x3a\x60\xb6\x36\x3d\x49\x44\x34\xb8\x84\xdc\x30\x83\xfc\x05\xda\x41\xd6\x97\x1d\xfd\x80\x6f\xc1\x82\xe5\x12\x7f\xd4\x55\x99\x0f\xa1\x17\x1d\x5e\x41\xc8\x20\x0c\xae\x72\xe9\x09\x47\xd3\x9c\x99\xaa\xe3\x28\x16\xa2\x00\x15\xd1\x46\x42\xdd\xaa\x7a\x2a\x32\xbe\x50\x93\xc6\x96\x4d\x5d\xcc\x73\xb8\x1e\x51\x52\x00\xa8\xd3\x30\xa6\x1e\xd3\x94\x61\xd5\x40\xf2\xc0\xb2\x89\xe1\x94\x68\x64\xeb\x7b\xdf\x0d\xdc\x53\x77\xf0\x5a\xf0\xe6\xfd\x98\x0e\xec\x7b\x1f\x9c\xd0\xe6\xa5\x0c\xf6\xbc\x7a\x29\xbb\xb1\xab\xd0\x2f\x06\x85\x19\x71\xf6\xe0\x7d\x77\x2c\x35\x18\x89\x03\x04\x1e\x53\x3c\x25\xff\x5b\x49\xff\xed\xfa\xa2\x6d\x0a\x36\xfe\x25\xcd\x99\xd0\x60\xef\xa9\xb0\x95\xd2\xa3\x80\x43\x1b\x77\xc5\x1a\xe7\xd2\xd7\x1f\x8f\x7e\xf9\xd1\x40\x67\xd5\xdc\xf6\x2d\xfd\xe9\x99\x97\x9f\xd3\xe3\x8f\x37\xa2\x49\x20\x04\xd8\x81\xc3\xe1\x68\x4f\x21\x1d\x7b\x0e\x8c\x84\x63\xd3\x70\x86\x79\x89\xe8\xb4\xa1\x5c\x3c\xeb\x45\xb1\xab\xf5\x42\x57\x13\xe4\x8f\xec\x78\x11\x22\x2d\x0a\xd7\x1a\x97\xe8\x4b\xd3\xf6\xa3\x46\xfd\xfc\x27\x11\xf2\x01\xbf\xef\xc8\x44\xd5\xf4\xef\xca\x41\xac\xaa\x02\xe0\x3b\x65\xb7\x51\x1b\x79\x11\x4a\xe6\xdb\xff\x8a\xf3\x11\x63\xa0\xda\x7d\x02\x01\xc2\x42\xcd\x4a\x65\xe0\x64\xd4\x13\x9e\x34\xf1\x60\xa3\x58\xbd\x1f\xf9\xac\x62\x4d\x06\x84\xd3\x91\xf4\xf0\x3b\xf5\x7e\x7c\xb5\x79\xfd\x3f\xd3\xc5\xb4\xe1\x77\xa3\x41\x80\xeb\x2f\x02\x2c\x47\x42\xef\xd4\x07\xf8\x71\xaa\x41\xc3\xeb\x26\x0f\xa8\x41\xdd\x1e\x30\x60\xf6\x65\x9f\x60\x73\x9e\x5a\x6d\x82\xdf\xaf\x4d\xfd\x62\x9e\xe2\x5e\x53\x58\x43\xc2\x6c\x37\x36\x14\x9b\x21\x8b\xc3\xf7\xac\x8c\x59\x7f\xfc\xd8\xf8\x87\xcc\xf1\xe2\xa6\x65\x97\x8c\xe4\xce\xbf\xdd\xc0\x1b\x93\xa1\xef\xde\xfa\xae\xd4\x23\xe2\x11\xd2\x1f\xe2\x4c\xad\x48\xb8\x1b\x7a\x2c\x34\xf6\x14\x84\x9f\xe7\x5a\x1a\xdb\x97\xcd\x7a\x80\x08\xfe\xc0\x68\xd5\x71\x50\x9b\xcd\x38\xee\x0d\xb2\xbc\x6a\x54\x53\x8a\x3c\x63\xdf\x26\x2b\xc3\x9e\x32\x71\x1f\x6e\xa0\x17\xa9\xb9\xf4\x1a\xea\x09\x30\x22\xee\x05\xf2\xd6\xcb\xf9\x1b\x7d\xb3\xc9\xec\xd1\x82\x31\xc6\xe5\x41\x77\x6b\xd9\x5c\x43\x39\xf7\xbe\x67\x6b\x66\x75\x34\x5f\x8b\xdb\xde\xa9\x7c\xf4\xc2\xec\x15\x9d\xec\xff\x7c\xdd\x22\xb3\x5e\x6b\x18\x35\xd1\x38\xdc\x94\x45\x7f\xef\x1a\xb4\x54\xb2\x5f\x77\xf4\x6c\xbc\x49\xb1\x09\xae\x67\xf7\xc4\x59\xab\x5d\xc8\x32\x26\xfd\xcf\xab\xa4\xaf\x05\xcf\x04\xa2\x06\x7e\xe2\x79\x7d\x52\xd7\xe2\xf8\x4c\x58\xcb\x5f\x80\x7c\x26\xd4\xb3\xa2\xbd\x5b\xa8\x07\x36\x82\x06\xaf\x41\x49\xf6\x48\x5d\x1b\x17\x35\x9d\x0e\x14\x0c\xd6\x53\x87\x17\x59\x2d\xca\xaf\x21\xb5\x66\xb6\xe5\x9e\x5d\x6a\x1b\x69\xc1\xa9\xfd\xbd\xbb\x4b\x5b\x0b\x0b\x37\x19\x14\x36\xeb\xc4\x4c\xa0\x9d\xc2\xde\x58\x5e\xed\x6c\x39\x6a\x15\x72\xb6\x8d\xa7\xb3\xfd\xb6\x7e\x9d\x69\xcd\xf8\x8b\x0a\x53\xfb\x2e\x50\xef\xdf\xfe\x97\x62\xa5\xa5\xe0\xaf\x26\x12\xc8\x60\xeb\x2c\x90\x05\x20\x5d\x1c\x14\xd7\xd1\x41\xbe\x61\x66\xfa\x63\x24\xf9\x47\xa3\xc7\x7d\xe3\x89\xf4\x8d\x4b\xee\xcf\x3f\x51\x22\x0d\x7b\x2d\x13\xca\x85\xdc\x8b\xbe\xf7\x35\x09\x07\xee\x6d\x3d\xb8\x84\x49\xe8\x0b\xd8\xe0\xfb\x39\xad\x4a\x98\xf7\x52\xaa\x3b\xa0\xa0\xec\xb4\xe7\x43\xe0\xd7\x4e\x1e\x5b\x3d\xb8\xb9\xc4\x6f\x20\x47\x8a\x22\x3a\x20\xda\x1a\x62\xc3\xbf\x50\xcd\x49\x13\xba\x16\x84\xb3\xe9\x75\x0f\x8d\x5f\x4d\xec\xab\x7f\x26\xdd\x7b\x50\xf8\xc0\xbd\x85\xd6\x39\xdc\xf2\x47\xc7\x7e\x55\xaf\xd2\xef\xe0\xe8\x51\x34\x09\x0e\xfb\x3a\x25\xcd\x47\xb4\xa3\xc7\xaa\xe6\x12\xb1\x02\xbd\xef\x2c\x72\x2b\xd9\xd8\xf2\x3b\x30\x16\xb9\xbd\x90\x38\x4b\x8f\x42\x51\x06\xa5\xd4\x99\x0b\xcc\xac\xa5\x89\x25\x62\xd1\x8f\x9e\x8f\x3a\x4e\x3f\x4e\xb2\x05\x96\x9f\xfa\x53\xbf\xc3\x50\xa6\x32\x52\x86\xe6\xa6\xf3\x96\x88\x39\xbb\xa3\x2b\x0c\xc3\x86\xc6\x52\x31\x36\x69\xed\xce\x85\x27\x95\x0a\xe8\x2c\x2d\x02\x34\x78\x13\x8c\xab\x57\xe8\x40\x59\x5b\x6f\x58\xe7\x6c\x0d\x48\x50\x40\x9e\x27\xa0\xd8\xfb\xe4\x0f\x93\x7d\x52\xb4\xe4\x7d\x86\x65\x79\xb4\x0f\xf5\x83\xd4\xef\x4d\xcd\xdf\x4b\xe9\xc3\xa9\xbf\xb5\x36\x0c\xba\x2c\x3d\xc1\xc4\x7c\xa2\x5c\x39\xfd\x88\xda\x8f\xa3\x6d\x90\x17\x3c\xda\x84\x08\x38\x28\x61\x42\x18\x45\x31\x60\x6d\x32\xca\xd2\x91\xe5\x16\x41\x72\x60\x4e\x9a\x89\x56\xeb\xeb\x37\x1e\xf3\xfe\x24\xfb\xa5\x96\x6e\x80\x28\xd4\xef\xc9\x98\x17\xe6\xab\x12\x63\xcc\x6f\xcb\x1b\x8e\x81\x8c\xd3\x32\x26\x85\xcf\xda\xfb\xe2\x0d\xf0\xd7\x71\xe1\x3a\xf3\xf9\x0b\x7a\xd4\xe1\x98\x9e\x14\x09\x94\x4d\x61\x04\x23\x9c\x6b\x97\x3a\x39\xfd\x5b\x89\x86\x14\x01\xb8\x88\xff\xdd\x2c\x2d\x06\x6f\x42\x64\x87\x9d\x7a\xd4\x8d\x56\xa5\xc7\x52\x44\x8f\xd1\x66\x10\x0d\xd6\xfe\x55\x6c\x13\x9c\xc6\xf8\x45\xce\xe5\x16\x27\x9b\x3a\x97\x66\x5b\x5d\xa7\xdd\x2c\x76\x21\x75\xd5\x06\x1b\x58\x70\x16\x01\x65\x87\x3f\x06\xf5\x94\xa3\xc2\x4b\x58\x34\x1d\xc2\x16\xf7\xaa\x30\x3d\x42\x16\xbc\x77\xcf\x89\x66\x4f\xc6\x0a\xa4\x5f\xca\xee\x18\x4b\x61\x57\xb7\x3e\x2c\xe2\xc4\x04\x4a\x36\x32\xd0\xff\xa7\x36\x31\x5e\x57\xd4\x00\xba\x8e\x51\x13\xdc\xeb\xc7\x7b\x9f\xf8\x4d\xb5\x0e\xf2\x04\x94\xe8\xa7\x83\xd1\xbe\x80\xc5\x38\x05\x0e\x00\xcc\x75\x11\x00\xf6\x35\xff\xcb\xf1\xe4\xf8\x70\x0f\x44\xbc\xfc\x83\xb6\xa4\x55\x31\xab\xd1\xaf\xb3\x46\x51\x8b\x8f\xfb\x67\x88\x62\xbe\xa9\xf2\x89\xf5\x96\xbe\xea\x26\x45\x9a\x0b\x2c\x60\xcf\xaa\x96\x1a\xe6\x4b\x6d\x58\x7d\x07\x14\x1a\x96\x34\xe7\xf4\xb8\xc6\xba\xe0\xe0\x5c\x51\x42\xf5\x8e\x4e\x3b\x11\xff\xf1\x17\xfa\xa0\x31\x42\x03\xc2\x80\xb0\xd0\x6a\x9c\x53\x1c\xb9\x56\xe2\x00\x08\xc3\xf7\x84\xd7\x9f\xb6\x5e\x4d\xf4\x46\x29\xe4\x2f\x63\x1e\x9d\xaa\xfb\xa5\xf2\xc4\xc1\x23\xce\xc0\xe6\xf3\xa7\x3c\x70\x36\x20\x44\xec\xc0\x7b\x90\x07\x46\x8a\x8b\xc6\x12\xd5\x4f\x3a\x36\xfd\x95\x0f\xd9\x19\xf2\x65\x09\x44\x9b\x79\xf6\x61\x33\xfa\x56\x00\x47\x7a\xfa\xba\x0e\x8f\x6e\xec\x75\x26\x5d\x10\x23\xbd\xf3\x10\x0d\x03\x7a\x74\x18\xac\x3d\x7e\xfa\xad\x57\x33\x7b\xb1\xe9\x6e\x86\x6e\xd7\x9e\xfe\xbb\x61\xae\x13\xd8\x83\xa2\x1e\x20\x78\x2a\xa2\x73\x02\x7d\xef\x12\x3f\x06\x43\xa0\x86\xa7\xa2\xd2\xb7\xf3\x34\xac\x59\x20\xf0\x70\xab\x59\xaf\x6a\x03\x48\xe5\x3c\x5a\xaf\x31\xa6\xb4\x02\xdf\xea\xcf\xc9\x5d\xe5\x78\x7d\xfc\x28\x17\x5e\x65\xe0\xb4\x70\x95\xb1\xcb\x27\x61\x89\xc4\x7d\x07\x66\xb8\x38\x4c\x0f\x4f\x4e\x54\x75\xce\xf8\x23\x39\xeb\x76\xe7\x0c\x32\xe9\x34\xb6\x4e\x84\xbe\x72\x4f\x67\xa1\xf5\xb1\x9a\x06\x2c\x56\x4a\x31\xe0\xef\x27\x4c\x7e\xc0\x25\xcc\xd5\xd5\x95\x0c\x63\x1d\x86\x93\x9a\x8f\xea\xba\xee\x3f\x0f\x9b\xfe\x0e\x8e\x41\xd8\xa8\xd6\xd5\x53\x07\x85\xc2\x47\x97\xa2\x7e\xa4\xfa\x66\xc3\xbe\x21\x30\x1b\xc6\x95\x2f\xca\xf3\x89\x11\xc1\x48\xd6\x46\x97\x24\x51\xbd\x37\x5f\x88\xe8\xec\xbc\xfd\x46\x46\x9d\x7f\xe5\x1d\x7f\xc6\x73\x4e\x91\x1d\x7d\x01\xf7\x28\xcf\xea\x46\x39\x96\x3e\x86\x64\xdb\x3d\x8a\x1a\xf5\x95\x36\xd2\xe5\x35\x53\x8f\xb9\x18\xd4\x02\xdf\x4d\x59\x04\xc0\x16\x7a\xcb\xcc\xc5\x98\x41\xdd\xad\x57\xa5\xd7\x00\xae\x46\xab\x44\x45\x5f\xbb\x2b\x8e\x01\x01\x3b\x6b\x34\xb8\x54\x4d\xad\xb7\x29\xee\x52\x95\x2e\xf6\x2c\xf0\xbb\xdc\x47\xbc\xe6\x28\x7e\x44\x6e\x9c\xee\xc3\x26\x8e\xc0\xe4\x43\x22\xb3\x29\x7d\xbf\x00\x4a\xda\x90\x76\x56\x8a\xf4\xba\xcf\x36\x9f\xf2\xf1\x61\xca\x5a\xd6\x1d\xc1\x88\xbf\xc2\xf6\xb2\xf0\x54\xe5\x97\x61\xaf\x8e\x8f\xe4\xf9\xf5\xa3\x41\xf6\x92\x34\xcc\x5c\xf4\xae\x4f\xc2\x86\x02\x13\x2f\xac\xd0\xb3\x73\x1b\x53\x5e\x1a\x04\x0e\x93\xd5\xc6\xc9\xbc\x2b\x3b\xd6\xb9\x9e\x7d\x16\x47\x9a\x0d\x0f\xc8\x5f\x20\x5b\x5e\x4e\x9b\xea\x10\x7d\xa0\xd9\x09\x2c\xed\xca\xbb\x33\x7b\x36\x0a\x4a\x79\xb6\x3c\x60\xc1\xb2\x19\xb7\x57\x8b\xb0\x3a\xee\x0b\xa6\x8b\x5f\xab\x53\x99\x50\x6c\xcb\x5c\x6e\xe8\x0b\xcb\x45\x59\xf6\xbf\x2b\xc4\x74\x71\x3c\x02\x18\xab\x9d\xd8\x27\xd5\xb6\x37\x74\x22\x36\xfa\x12\x55\x10\xab\x8d\xd3\x80\x33\x2f\x5a\xa3\x7e\x77\x43\x2b\x10\x03\xfb\xac\x78\xc1\x51\xc0\x1c\x06\x8a\xad\xbc\xba\x58\xe6\xaa\xb8\x8b\x2c\x0b\xf5\xf0\x0d\x7a\xa8\x5a\x99\xb6\xa3\xcd\xba\xde\x9c\xe3\xda\x1f\x35\xd7\x5e\xe4\x20\xf9\xa6\x40\x72\xa6\xd0\x3c\xad\xd4\xe0\x4a\x43\xd6\x78\x99\x98\xf4\xe1\x3e\x92\x13\x9f\x2c\xb2\xb8\x6e\x3a\x55\x11\x66\xaf\xc2\xb7\x0e\x3f\x07\x28\x8f\xec\x17\x9d\xd5\x34\xd8\x05\x8f\x92\x98\xd2\x0a\xc7\xbb\x13\xe4\xb7\xde\x0d\xc2\x7d\x33\x6d\xf4\x79\xa8\xfe\xd5\x77\xe6\x5e\x7d\x40\x6c\x18\x1c\xb6\x2e\x31\xb0\xe1\xe2\xf0\xf1\xad\x4c\x97\xd2\x18\x5e\xe8\xd5\xcf\xdc\xea\xcd\x45\x46\x07\x09\x5c\xa8\x32\x78\xb5\x9c\xa0\x73\x03\x99\xc3\x2f\xf9\x2e\xe9\x06\x0a\xa7\x19\x29\x9d\x9d\xeb\xd5\xc1\xd1\xf9\x54\xac\x0a\xb3\xb3\xb0\xfa\x92\xb2\x7e\x82\x2a\x80\xcb\xf3\x5c\x8d\x69\xf7\x8f\x92\x5f\xb4\x55\x47\xd6\xa6\x7c\x6f\x65\xd0\x65\x60\xcb\x5a\x27\x1c\x8a\xd3\x88\xf2\xa9\xf7\xf8\xa1\x3c\xd2\x70\xb4\x16\x17\xca\xee\x58\x70\x6f\x66\x6d\xd5\x3a\x4c\xe9\x17\xfe\x1c\xb3\x0c\xae\xdf\x43\x5c\x21\x23\x10\x31\x69\xaa\x4c\x0c\xcc\x70\xe0\x6a\xe3\x35\x2c\xcc\xd3\x91\x91\x06\xaa\x0f\x07\x3c\xee\xf3\x30\xf8\x61\x51\x14\x29\xf6\x85\x40\x6a\x6d\xfa\x64\xb0\x61\x45\xbf\xa7\x4f\xe3\x6f\x0d\x36\x6a\x51\x04\x83\xff\x56\x0d\x60\x32\xb5\xe8\x94\x1a\x07\x8c\x76\xf3\x59\x7f\x8d\x5c\xf4\x6a\x15\xc0\xec\xef\xfb\x50\xe5\xfc\x4c\x5f\xf2\x67\x30\x96\xdf\x71\x2d\x09\x3c\x2a\x2a\x13\x44\x3a\x98\x31\x66\x7d\xe1\x96\xbd\x0b\xb9\x6d\x0b\xe2\xa5\xff\x5a\x0b\x83\xcd\x7a\xf9\x73\xe4\x63\x6d\x18\x87\xa9\x0e\xc5\xf8\xe6\x8f\x9d\xb6\x4c\xda\x1d\xcd\x64\x1f\xd2\x28\x93\x46\x89\xe2\x1c\x6d\x55\x5c\x16\x15\x17\x32\xa9\x4c\xcd\xb7\x33\x4e\x3d\xf6\x82\x21\xc2\xcd\xe5\x76\x2c\xff\xb6\x3c\x5b\x9a\x70\x6c\xba\xb6\x18\xeb\x8a\x46\xc5\xeb\x92\xe2\xaa\x43\x9e\xbe\x23\x2f\x0f\x9b\xb2\xd6\x5b\x35\xae\xfd\xff\x5d\xb9\x2f\x94\x1f\x39\x5c\x9c\xdb\x4c\x7e\x54\xcc\x92\x67\x8b\x1d\xaf\x70\xa1\x2f\xd1\x21\x8e\xe8\x80\x42\x80\x66\xc6\x6d\x1a\xa6\xb6\x8d\xae\x0d\x7f\x32\x8b\x36\xaf\x70\x78\x45\x85\x29\xca\x71\xb3\x92\x94\xcf\xb2\x98\x13\x89\x8c\xc3\x59\xbe\x7e\xb2\xdd\xd2\x42\xaa\xb2\xfe\xd9\xe0\x9d\x31\x35\xfa\xf3\x19\xd9\x19\xf0\x06\xe2\x68\xce\x5a\x99\xf6\xad\x17\xd2\xfc\xb0\x59\xc2\x39\x03\xf5\x84\x98\xce\x28\xe7\x49\xff\xde\x94\x6b\x39\x7b\x50\xf6\x72\x2e\x84\xd0\xcb\xe2\x96\x57\xe4\x9a\x41\x2f\xb2\xc3\x76\x69\x05\x1b\xaa\x32\xd0\xb7\x90\xad\x33\x0e\x5f\x6b\xeb\x90\xcf\x2e\x57\x06\x48\xfe\xbe\xd1\x1d\x6d\xfc\x75\x07\x8f\xd8\xb4\x24\xee\xc8\x36\x47\x8d\xa8\x05\xa1\x30\xe7\x9c\x92\xb9\x02\xe8\x1b\xbb\x01\xbf\x7c\xed\x34\xcd\x25\xd2\x3b\xce\xba\x5c\x3d\x5e\x94\x75\x12\x71\x3f\x72\x17\xe7\x71\xcf\x06\x9f\xad\x67\xc9\xe1\x37\x1a\x07\xb9\x1e\x53\x70\x7f\x02\xd0\x6e\x89\x2e\xeb\x29\xde\x26\x71\xec\x94\xc9\xf9\xfb\xe7\x27\x0d\xf7\x52\xd3\xc7\x3e\x4c\xd9\xa3\xce\xbd\x03\x52\xe5\x26\x48\xc8\x57\x79\x63\x00\xe5\x2b\x30\xc1\x7d\x4f\x19\x21\xff\x04\x25\xf0\x71\x47\x17\x65\x3d\xea\xf2\x81\x92\xd2\x62\x18\xdf\x31\x00\x15\x92\xab\x3a\x38\xb7\x5f\x1e\x3a\xb8\xa7\xba\xb5\xb0\x20\xcf\xd2\x37\x30\x43\x7c\x91\xb1\xf9\x51\xc3\x68\xdb\xf6\x3f\xfd\xd2\x43\x74\xf6\x2e\x5c\xd1\x15\xf2\xde\xa7\x52\x6a\x14\x40\xfb\xd4\x84\xb8\x61\x34\x8a\xd0\x9d\xbe\xf3\x55\x1c\x90\x46\xcb\x71\xcd\x8c\x03\xb6\x46\x2d\x4f\xf2\x4d\xad\x0d\xc0\xc1\xf0\x77\x00\xbe\x38\x5e\x5c\x5e\x3c\xf3\xcc\x98\x73\x18\x20\x1e\xdd\x81\xc1\xb7\x97\x16\xe6\x39\xec\x4a\x85\x53\x6c\x4a\x7d\x2a\x35\x33\xaa\x37\xe9\xf5\x93\x06\x4f\x07\x24\xe5\x01\x15\xb8\xbf\x9c\x88\x25\x7a\xc4\x2e\xb0\x57\x3b\x54\x13\x94\x9c\x89\x33\xf4\x5b\x91\x10\xe1\x5d\xa2\xff\xec\x39\xd3\xf2\x3a\x5d\x4c\xc1\x96\xc5\xc1\x75\x90\x5c\x54\xd4\xec\xa7\x64\xf6\x5b\xeb\xdc\x95\xc1\xba\x78\x87\x73\x08\xcf\x98\x32\xd9\x3e\x26\xb6\x3a\x33\x4e\xeb\x31\x4a\xbe\x79\xdd\x69\x08\x4b\x01\xb0\x3b\xa8\x2d\xbe\x0e\x68\xdb\xce\xe6\xdf\x34\x8c\x3c\x76\x5d\x67\xff\x62\xff\xd9\xde\xc8\xe0\x2e\xff\x7e\xdf\xcd\x5f\xec\x35\xc5\x82\xd8\x93\xe2\x7e\x81\xd6\x18\xdd\x55\xee\xc4\xf0\xf2\xec\x73\xe5\xd7\x4a\xe0\xf0\x61\x06\xe6\xcd\x4f\xa7\x62\xa6\xa7\x9b\xe7\x9a\x1e\x67\x9e\x63\x86\x0a\xec\x5f\xf9\x3c\x99\xfd\xc9\xe6\x97\xa6\xd9\xe4\x3f\xf6\xd6\xe2\x54\xbb\x57\xdc\xfc\xc3\x9d\x1a\x3b\xbb\x6f\xda\xec\xc6\x8e\x4b\x28\xee\x84\xb6\x8e\x6e\xc0\x0a\x4c\xf1\xe6\x14\x09\x10\x56\x08\x1a\x75\x4c\xbf\x7c\xdc\x90\x15\x14\x21\xe8\x3f\x73\x60\x21\xe4\xdf\x16\x85\x8e\x3b\x74\x46\x55\xb2\xe3\xcc\x9c\xd9\x96\x6c\xd4\x38\x33\x46\x94\x46\x7c\x44\x22\x47\xaf\x84\xd9\x9f\xbb\x7d\x5b\x06\x8d\xec\xd4\x18\x8a\x00\xb7\x10\x02\xb3\xae\xfc\xaf\xe5\x18\x68\x5c\x19\x2d\xb5\x03\x8e\x1b\x60\x21\xa9\x1d\xf5\x92\xc3\x88\x37\x6e\xbc\xba\xda\x18\x23\x65\x40\x27\x29\xa6\x8c\x21\x1c\x1c\xe4\xcd\x07\xd5\x9a\x8e\x9c\xea\xc5\xf4\x40\x8d\x4c\x9e\x01\x8e\x65\x0a\x7b\xef\x09\x90\xe9\x53\x25\xd4\x66\x34\xfd\x75\xf2\xec\xf7\x34\x40\x52\x35\x6b\xb5\x7c\xf0\xe8\x55\xf1\x3c\x5b\xae\x2c\x10\xf2\xcb\xa4\x00\x79\x95\x61\x0d\x52\x87\x70\xcb\xd3\xa7\x84\xec\x8d\x87\x44\x2d\xc3\x44\x9d\xb4\xd4\x1a\xf5\x95\x8e\xd6\x8f\x26\x8e\x24\xdf\x9f\x54\x92\x07\x8b\x02\x7a\x54\xda\x79\x5a\x5a\x78\xae\xb4\xf2\xac\xf2\xce\xdf\x2d\xe4\x01\x4e\xd2\x62\xc7\x6f\x6b\xcf\x1d\x86\xa4\xd3\xd6\x41\x4c\x47\xb8\x30\xc9\x64\x37\x87\x25\x2d\x90\x60\x66\x25\xdc\x25\xa0\xa0\x48\x9f\x53\xd5\x95\x3a\x5e\x6f\x3a\x33\xdc\x95\x9c\xd7\xd9\x1d\x17\x16\x94\x58\x55\x58\xb8\xcb\x5e\x84\x3e\x09\xde\x75\xf5\x88\x51\xc9\x16\x46\xc7\xf2\x1c\x67\x10\x5a\x8c\x30\x04\x2a\x60\xdb\x0d\x60\x45\x65\x0c\x82\xcb\x9c\x82\x50\xd0\xcc\x82\x8d\x84\xe6\xcf\xb9\xe3\x4f\x14\x33\x73\xc1\x46\x41\xff\xe7\x5c\xf1\xa7\xc8\xef\x2d\x2b\x97\x76\xfb\x5b\x0c\xfb\xe8\x35\xb0\x90\x32\xf5\x2e\x9d\xf4\xbf\xd5\x9f\x9f\xee\x79\x15\x99\xb4\xce\x5b\xf2\x12\xdf\xa5\xc0\x6c\xd3\x88\x80\x22\x22\xd4\x30\x70\xf6\xc4\x41\x9b\xea\x43\xd9\xfe\xf9\x31\x1e\x54\x4a\xa6\x67\x39\x9c\x56\xc3\x4f\x1d\x8a\xaa\x44\x7c\xbf\xc3\x56\xbc\xd9\x88\x24\xf2\x4a\x6f\xdc\x59\xff\x9e\x7a\xa4\x76\x3b\x02\x77\xc0\xfc\xe6\xbb\x10\xb5\x21\xf2\x00\x21\xc9\xab\x14\x7c\xc8\x13\xf9\x2c\x87\xab\xd5\x21\x08\x68\x13\x83\x2a\x06\xd2\xc9\x5f\x8f\x73\xdd\xdd\xf9\x14\x0f\x10\x28\xb1\xe0\x2d\x51\x24\x5f\x8e\x2b\xe9\x49\xf2\xe8\x58\xf7\x68\x30\x1a\x70\xe8\x0c\xb4\x77\xe0\xfd\x28\x53\xe5\xbf\xad\x84\xf8\x6d\xfa\x1c\x62\x94\x01\x6f\x03\x1e\xdf\x13\xfa\x4b\xd8\x10\x0e\x00\xac\x28\xd4\x10\xf8\xc2\xc3\x94\xf1\x49\x85\x45\x4c\x1a\x31\xc1\x5d\x5d\xfe\x8e\xfa\x16\x9a\xa6\x62\xba\x4e\x58\x6b\x61\xa6\x77\x18\x15\xd6\xda\xc0\x24\xb3\xd2\xb6\x79\x6d\x4f\xce\xc2\x80\x5c\xbf\x6b\xe9\xf5\xf2\xe9\xed\x54\x0e\xb2\x8e\x87\xb5\x51\x22\xd1\x30\xc9\x72\x05\x42\x3a\xa3\x06\xb3\x96\x13\x86\xd8\x0d\xf8\x72\x1e\xb7\x40\xee\xa6\xbf\x37\x29\x8e\x0d\xca\xf7\xf1\xd2\xd0\xc5\xaf\x78\x6b\x3e\x94\xd2\x31\x48\xf9\xca\x1b\xb9\x67\x5f\x41\xce\x6d\xf6\x90\xc1\xc6\x15\x41\x1f\xd9\x34\x06\x20\x5c\x52\xb7\x32\xe9\x83\xef\x76\x73\x95\x03\x7f\x6c\x57\xf7\x1d\x50\x11\x4a\xee\x6f\x93\x3d\x22\x85\xa6\xaa\x41\x22\xce\x50\xd8\x1b\x62\x27\xb3\xd1\x40\x9b\x3d\xef\xba\xd2\x82\x9a\x69\x68\xc4\x7f\x48\x0d\x91\x6b\x1a\x1f\x1a\xce\xc2\x72\xfb\x84\x83\xc3\xf6\x4f\x4b\xe8\x61\xdf\x9e\x2d\x48\x64\x3f\x6a\xd5\xc5\x84\x65\x8b\x1a\xc9\x3e\x0f\xb2\x99\x7f\xcd\x52\x7a\x24\x1c\x37\x26\xba\xe0\x00\x96\x37\x9e\x3d\xbb\xbf\x75\x8f\xea\xf3\x62\xca\x7f\x13\x93\xd6\xe9\xba\xad\x29\x2e\xb4\x92\xd0\x15\x24\x9b\xc4\x37\x16\x65\x78\x8b\xe1\x4a\xc5\xad\x94\x61\x64\x56\xcb\xe7\xea\xac\x80\xa9\x5a\xf6\xd4\xaa\xaa\x41\x65\x63\x27\x80\x45\xd6\xf2\x9c\xd8\xeb\xe2\x1c\x39\x20\x2e\xa5\x44\xa9\x7a\x43\x64\x0a\xf4\x85\xf0\xb8\x78\xb5\x42\xdd\x80\xc5\x80\xb9\x16\xb9\x25\x61\x09\xc0\x69\x30\x55\x4b\x16\xc9\x15\x51\x92\xd2\x2b\xa3\x72\x87\x11\xa2\x52\x95\x04\xbd\x1c\x26\xb2\x22\xbb\x41\xac\xda\x1c\x6b\x8b\xcc\x39\x07\x8e\x76\x0e\x72\x05\x97\x13\x16\xbc\x70\x6e\xaf\xee\x2e\x2d\x8d\x63\xcc\x67\x0f\x8c\x16\x92\xff\x02\x5e\x88\xe6\xdc\xa5\x74\x56\x8b\xd5\x3f\x26\x48\x22\xfe\x4c\x80\x66\xc0\x7e\x71\x54\x2b\xa3\xbc\xef\xc9\xf3\x85\x13\xc7\xef\x32\x85\xca\x85\x47\xe4\xe3\x6e\x3c\x4b\x34\x42\xef\xf8\x69\x71\x6b\xd5\x45\xc6\x7e\x0d\x89\x85\xf3\x02\x8c\x8b\x32\xaa\x04\x4f\x2a\xcf\x35\xe7\xda\x9f\x22\x3d\xb9\x0a\xc3\x0b\x2e\x57\xc5\xeb\x66\xae\x3d\xd7\x7e\xbb\xee\xf8\xc7\x7f\x6c\xbd\x31\xc0\x69\x2d\x37\x65\x06\x5a\xc5\xca\x8b\x50\xc0\xfc\x49\x15\xc4\xb1\xa8\x13\xab\xab\xee\xc8\xe4\x52\xe6\xd2\x77\x13\xc6\xed\x5a\x6a\x30\xb2\x5d\x3f\x4e\xb1\xcc\xa9\x6e\x92\xe5\xed\x4c\xd9\x9e\xa9\x47\x6c\x4e\x6f\x2d\x6e\x39\xb0\xc3\xc4\x14\x6a\xa4\x64\x84\x70\x38\x31\xe1\x84\xfa\xab\x25\xad\x73\xaa\xbf\xeb\x86\x2d\x7b\xf0\xab\xa9\xde\x1d\x53\x51\x63\xcc\x6e\x59\xf2\x2e\xac\xb5\xce\xfe\x71\x88\x6a\xc1\x3c\x2a\x28\x91\x2e\x26\xa2\x3f\x05\xd6\xf9\x62\x12\xe9\x03\xe9\x2a\x84\x35\x48\x94\x61\xa3\xda\x32\xea\xfd\xea\xd8\x1e\x42\xb7\x5c\x28\xce\x4d\xb2\x3e\xee\x1c\xc9\x9f\xd9\xdf\x9b\xf2\xa8\x77\xcc\x84\xe6\x0d\x2a\x25\xab\x50\x3f\x1d\x60\x4c\x53\x1b\x60\xeb\x5a\x3c\x63\x94\x86\x42\x51\xe0\x5e\x92\xd6\xd9\x40\x90\xd6\x66\x91\x60\xc7\x76\x91\x4b\x9a\x97\x35\x8d\xfd\xb1\x6a\x73\x8a\xc8\x91\x8d\x1a\xe2\x5d\xd0\xa8\x5a\x9d\xc8\xfa\x7f\x95\xb8\x30\x37\xe3\xa9\x8b\x12\xa3\x16\x4e\x32\x6d\x52\x4e\xa2\x8a\xd4\x06\x4d\x6b\x65\x9c\x4e\xad\xd9\x18\x97\x7c\xdd\x8f\xf4\xfb\xe3\xb3\xa2\x54\x4c\x83\x23\x6f\x51\xb0\x30\xbe\x35\xf5\x0a\x4f\xde\xbe\x56\xf5\xe1\xdb\x3e\x27\xb8\x28\xf3\x53\x48\x67\x4a\xb5\x44\x41\xfa\x92\x55\xae\x4d\xdb\xd2\x36\xca\x10\xe6\x7a\x60\xce\x81\x8e\xcf\xa4\x9a\x14\x51\xbb\x6b\x97\xdb\x05\xd6\x52\x5b\x70\x79\xbb\xba\xae\x0a" -func vendorsMainAe0f2cccfec3e701a045JsBrBytes() ([]byte, error) { +func vendorsMainB247804e9d197faee69aJsBrBytes() ([]byte, error) { return bindataRead( - _vendorsMainAe0f2cccfec3e701a045JsBr, - "vendors~main.ae0f2cccfec3e701a045.js.br", + _vendorsMainB247804e9d197faee69aJsBr, + "vendors~main.b247804e9d197faee69a.js.br", ) } -func vendorsMainAe0f2cccfec3e701a045JsBr() (*asset, error) { - bytes, err := vendorsMainAe0f2cccfec3e701a045JsBrBytes() +func vendorsMainB247804e9d197faee69aJsBr() (*asset, error) { + bytes, err := vendorsMainB247804e9d197faee69aJsBrBytes() if err != nil { return nil, err } - info := bindataFileInfo{name: "vendors~main.ae0f2cccfec3e701a045.js.br", size: 69294, mode: os.FileMode(438), modTime: time.Unix(1590213364, 0)} + info := bindataFileInfo{name: "vendors~main.b247804e9d197faee69a.js.br", size: 69210, mode: os.FileMode(438), modTime: time.Unix(1590297298, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -745,8 +745,8 @@ var _bindata = map[string]func() (*asset, error){ "sw.js.br": swJsBr, "vendors~connect.094632f04f7ec2bce0fe.js.br": vendorsConnect094632f04f7ec2bce0feJsBr, "vendors~connect.1512be5821b96a02b759.js.LICENSE.txt": vendorsConnect1512be5821b96a02b759JsLicenseTxt, - "vendors~main.051a0058d7481ca04f8d.js.LICENSE.txt": vendorsMain051a0058d7481ca04f8dJsLicenseTxt, - "vendors~main.ae0f2cccfec3e701a045.js.br": vendorsMainAe0f2cccfec3e701a045JsBr, + "vendors~main.038942b3105c7128ab91.js.LICENSE.txt": vendorsMain038942b3105c7128ab91JsLicenseTxt, + "vendors~main.b247804e9d197faee69a.js.br": vendorsMainB247804e9d197faee69aJsBr, } // AssetDir returns the file names below a certain @@ -818,8 +818,8 @@ var _bintree = &bintree{nil, map[string]*bintree{ "sw.js.br": &bintree{swJsBr, map[string]*bintree{}}, "vendors~connect.094632f04f7ec2bce0fe.js.br": &bintree{vendorsConnect094632f04f7ec2bce0feJsBr, map[string]*bintree{}}, "vendors~connect.1512be5821b96a02b759.js.LICENSE.txt": &bintree{vendorsConnect1512be5821b96a02b759JsLicenseTxt, map[string]*bintree{}}, - "vendors~main.051a0058d7481ca04f8d.js.LICENSE.txt": &bintree{vendorsMain051a0058d7481ca04f8dJsLicenseTxt, map[string]*bintree{}}, - "vendors~main.ae0f2cccfec3e701a045.js.br": &bintree{vendorsMainAe0f2cccfec3e701a045JsBr, map[string]*bintree{}}, + "vendors~main.038942b3105c7128ab91.js.LICENSE.txt": &bintree{vendorsMain038942b3105c7128ab91JsLicenseTxt, map[string]*bintree{}}, + "vendors~main.b247804e9d197faee69a.js.br": &bintree{vendorsMainB247804e9d197faee69aJsBr, map[string]*bintree{}}, }} // RestoreAsset restores an asset under the given directory diff --git a/client/package.json b/client/package.json index b09a9f3a..c4a83ee4 100644 --- a/client/package.json +++ b/client/package.json @@ -25,7 +25,7 @@ "babel-jest": "^26.0.1", "babel-loader": "^8.1.0", "brotli": "^1.3.1", - "copy-webpack-plugin": "^5.1.1", + "copy-webpack-plugin": "^6.0.1", "cross-env": "^7.0.2", "css-loader": "^3.5.3", "cssnano": "^4.1.10", @@ -37,8 +37,8 @@ "eslint-loader": "^4.0.2", "eslint-plugin-import": "^2.20.2", "eslint-plugin-jsx-a11y": "^6.2.3", - "eslint-plugin-react": "^7.19.0", - "eslint-plugin-react-hooks": "^4.0.0", + "eslint-plugin-react": "^7.20.0", + "eslint-plugin-react-hooks": "^4.0.2", "express": "^4.17.1", "express-http-proxy": "^1.6.0", "gulp": "4.0.2", @@ -60,14 +60,14 @@ "workbox-webpack-plugin": "^5.1.3" }, "dependencies": { - "@sindresorhus/fnv1a": "^2.0.0", + "@sindresorhus/fnv1a": "^2.0.1", "autolinker": "^3.14.1", "backo": "^1.1.0", "classnames": "^2.2.6", "formik": "^2.1.4", "history": "^5.0.0-beta.8", "hsluv": "^0.1.0", - "immer": "^6.0.5", + "immer": "^6.0.8", "js-cookie": "^2.2.1", "lodash": "^4.17.15", "react": "16.13.1", diff --git a/client/webpack.config.prod.js b/client/webpack.config.prod.js index 5958556b..05c2e885 100644 --- a/client/webpack.config.prod.js +++ b/client/webpack.config.prod.js @@ -81,7 +81,9 @@ module.exports = { chunkFilename: '[name].[contenthash].css' }), new HashOutputPlugin(), - new CopyPlugin(['public']), + new CopyPlugin({ + patterns: ['public'] + }), new InjectManifest({ swSrc: './js/sw.js', additionalManifestEntries: [ diff --git a/client/yarn.lock b/client/yarn.lock index 906b29e9..2bec6b18 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -1064,9 +1064,9 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@sindresorhus/fnv1a@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/fnv1a/-/fnv1a-2.0.0.tgz#2c8c77f887eeb9762dc5fa6614215671085a7a3b" +"@sindresorhus/fnv1a@^2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@sindresorhus/fnv1a/-/fnv1a-2.0.1.tgz#2aefdfa7eb5b7f29a7936978218e986c70c603fc" "@sinonjs/commons@^1.7.0": version "1.7.2" @@ -1573,17 +1573,11 @@ array-sort@^1.0.0: get-value "^2.0.6" kind-of "^5.0.2" -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - dependencies: - array-uniq "^1.0.1" - array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" -array-uniq@^1.0.1, array-uniq@^1.0.2: +array-uniq@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" @@ -2036,7 +2030,7 @@ bytes@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" -cacache@^12.0.2, cacache@^12.0.3: +cacache@^12.0.2: version "12.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" dependencies: @@ -2471,22 +2465,21 @@ copy-props@^2.0.1: each-props "^1.3.0" is-plain-object "^2.0.1" -copy-webpack-plugin@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-5.1.1.tgz#5481a03dea1123d88a988c6ff8b78247214f0b88" +copy-webpack-plugin@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-6.0.1.tgz#2a9718898728e916623eccf48b9dfb06089d702d" dependencies: - cacache "^12.0.3" - find-cache-dir "^2.1.0" - glob-parent "^3.1.0" - globby "^7.1.1" - is-glob "^4.0.1" - loader-utils "^1.2.3" - minimatch "^3.0.4" + cacache "^15.0.3" + fast-glob "^3.2.2" + find-cache-dir "^3.3.1" + glob-parent "^5.1.1" + globby "^11.0.0" + loader-utils "^2.0.0" normalize-path "^3.0.0" - p-limit "^2.2.1" - schema-utils "^1.0.0" - serialize-javascript "^2.1.2" - webpack-log "^2.0.0" + p-limit "^2.3.0" + schema-utils "^2.6.6" + serialize-javascript "^3.0.0" + webpack-sources "^1.4.3" core-js-compat@^3.6.2: version "3.6.5" @@ -2923,12 +2916,6 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -dir-glob@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - dependencies: - path-type "^3.0.0" - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -3278,13 +3265,13 @@ eslint-plugin-jsx-a11y@^6.2.3: has "^1.0.3" jsx-ast-utils "^2.2.1" -eslint-plugin-react-hooks@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.0.0.tgz#81196b990043cde339e25c6662aeebe32ac52d01" +eslint-plugin-react-hooks@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.0.2.tgz#03700ca761eacc1b6436074c456f90a8e331ff28" -eslint-plugin-react@^7.19.0: - version "7.19.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz#6d08f9673628aa69c5559d33489e855d83551666" +eslint-plugin-react@^7.20.0: + version "7.20.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.20.0.tgz#f98712f0a5e57dfd3e5542ef0604b8739cd47be3" dependencies: array-includes "^3.1.1" doctrine "^2.1.0" @@ -3295,7 +3282,6 @@ eslint-plugin-react@^7.19.0: object.values "^1.1.1" prop-types "^15.7.2" resolve "^1.15.1" - semver "^6.3.0" string.prototype.matchall "^4.0.2" xregexp "^4.3.0" @@ -3599,7 +3585,7 @@ fast-deep-equal@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" -fast-glob@^3.0.3: +fast-glob@^3.0.3, fast-glob@^3.1.1, fast-glob@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.2.tgz#ade1a9d91148965d4bf7c51f72e1ca662d32e63d" dependencies: @@ -3936,7 +3922,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0, glob-parent@^5.1.0: +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" dependencies: @@ -4027,16 +4013,16 @@ globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.0" -globby@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680" +globby@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.0.tgz#56fd0e9f0d4f8fb0c456f1ab0dee96e1380bc154" dependencies: - array-union "^1.0.1" - dir-glob "^2.0.0" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" glogg@^1.0.0: version "1.0.2" @@ -4316,10 +4302,6 @@ iferr@^0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -4328,9 +4310,13 @@ ignore@^5.1.1: version "5.1.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" -immer@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/immer/-/immer-6.0.5.tgz#77187d13b71c6cee40dde3b8e87a50a7a636d630" +ignore@^5.1.4: + version "5.1.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.6.tgz#643194ad4bf2712f37852e386b6998eff0db2106" + +immer@^6.0.8: + version "6.0.8" + resolved "https://registry.yarnpkg.com/immer/-/immer-6.0.8.tgz#3758890d66ed7baed5703b9e0763785a16156478" import-cwd@^2.0.0: version "2.1.0" @@ -6157,7 +6143,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1, p-limit@^2.3.0: +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" dependencies: @@ -6346,12 +6332,6 @@ path-type@^2.0.0: dependencies: pify "^2.0.0" -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - dependencies: - pify "^3.0.0" - path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -6378,10 +6358,6 @@ pify@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" @@ -7871,10 +7847,6 @@ sisteransi@^1.0.4: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" diff --git a/go.mod b/go.mod index 7aab962e..4ca3efbe 100644 --- a/go.mod +++ b/go.mod @@ -4,8 +4,8 @@ go 1.14 require ( github.com/RoaringBitmap/roaring v0.4.23 // indirect - github.com/blevesearch/bleve v1.0.7 - github.com/caddyserver/certmagic v0.10.12 + github.com/blevesearch/bleve v1.0.8 + github.com/caddyserver/certmagic v0.10.13 github.com/cenkalti/backoff/v4 v4.0.2 // indirect github.com/cznic/b v0.0.0-20181122101859-a26611c4d92d // indirect github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548 // indirect @@ -16,8 +16,7 @@ require ( github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870 // indirect github.com/fsnotify/fsnotify v1.4.9 github.com/glycerine/go-unsnap-stream v0.0.0-20190901134440-81cf024a9e0a // indirect - github.com/go-acme/lego/v3 v3.6.0 // indirect - github.com/golang/protobuf v1.4.1 // indirect + github.com/golang/protobuf v1.4.2 // indirect github.com/gorilla/websocket v1.4.2 github.com/jmhodges/levigo v1.0.0 // indirect github.com/jpillora/backoff v1.0.0 @@ -26,25 +25,25 @@ require ( github.com/mailru/easyjson v0.7.2-0.20200424172602-f0a000e7a8e0 github.com/miekg/dns v1.1.29 // indirect github.com/mitchellh/go-homedir v1.1.0 - github.com/mitchellh/mapstructure v1.3.0 // indirect + github.com/mitchellh/mapstructure v1.3.1 // indirect github.com/onsi/ginkgo v1.8.0 // indirect github.com/onsi/gomega v1.5.0 // indirect - github.com/pelletier/go-toml v1.7.0 // indirect + github.com/pelletier/go-toml v1.8.0 // indirect github.com/remyoudompheng/bigfft v0.0.0-20190512091148-babf20351dd7 // indirect github.com/spf13/afero v1.2.2 // indirect github.com/spf13/cast v1.3.1 // indirect github.com/spf13/cobra v1.0.0 github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/spf13/viper v1.6.3 + github.com/spf13/viper v1.7.0 github.com/stretchr/testify v1.5.1 github.com/tdewolff/minify/v2 v2.7.4 github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tinylib/msgp v1.1.2 // indirect go.etcd.io/bbolt v1.3.4 - golang.org/x/crypto v0.0.0-20200429183012-4b2356b1ed79 // indirect - golang.org/x/net v0.0.0-20200506145744-7e3656a0809f - golang.org/x/sys v0.0.0-20200501145240-bc7a7d42d5c3 // indirect - gopkg.in/ini.v1 v1.55.0 // indirect + golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 // indirect + golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2 + golang.org/x/sys v0.0.0-20200523222454-059865788121 // indirect + gopkg.in/ini.v1 v1.56.0 // indirect gopkg.in/square/go-jose.v2 v2.5.1 // indirect ) diff --git a/go.sum b/go.sum index 7d8522fc..0ea2d487 100644 --- a/go.sum +++ b/go.sum @@ -14,6 +14,7 @@ cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNF cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -45,22 +46,23 @@ github.com/RoaringBitmap/roaring v0.4.23 h1:gpyfd12QohbqhFO4NVDUdoPOCXsyahYRQhIN github.com/RoaringBitmap/roaring v0.4.23/go.mod h1:D0gp8kJQgE1A4LQ5wFLggQEyvDi06Mq5mKs52e1TwOo= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/akamai/AkamaiOPEN-edgegrid-golang v0.9.0/go.mod h1:zpDJeKyp9ScW4NNrbdr+Eyxvry3ilGPewKoXw3XGN1k= github.com/akamai/AkamaiOPEN-edgegrid-golang v0.9.8/go.mod h1:aVvklgKsPENRkl29bNwrHISa1F+YLGTHArMxZMBqWM8= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190808125512-07798873deee/go.mod h1:myCDvQSzCW+wB1WAlocEru4wMGJxy+vlxHdhegi1CDQ= github.com/aliyun/alibaba-cloud-sdk-go v1.61.112/go.mod h1:pUKYbK5JQ+1Dfxk80P0qxGqe5dkxDoabbZS7zOcouyA= -github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190307165228-86c17b95fcd5/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/aws/aws-sdk-go v1.23.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aws/aws-sdk-go v1.30.20/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/blevesearch/bleve v1.0.7 h1:4PspZE7XABMSKcVpzAKp0E05Yer1PIYmTWk+1ngNr/c= -github.com/blevesearch/bleve v1.0.7/go.mod h1:3xvmBtaw12Y4C9iA1RTzwWCof5j5HjydjCTiDE2TeE0= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/blevesearch/bleve v1.0.8 h1:XBty4rmSs5dBqOhGOL4GojjeHGNuBmyzQLNTTEW6qSU= +github.com/blevesearch/bleve v1.0.8/go.mod h1:rVSPClRCgzWIJJqDjfiNjXxycE1jCODqVYWeTId8A+M= github.com/blevesearch/blevex v0.0.0-20190916190636-152f0fe5c040 h1:SjYVcfJVZoCfBlg+fkaq2eoZHTf5HaJfaTeTkOtyfHQ= github.com/blevesearch/blevex v0.0.0-20190916190636-152f0fe5c040/go.mod h1:WH+MU2F4T0VmSdaPX+Wu5GYoZBrYWdOZWSjzvYcDmqQ= github.com/blevesearch/go-porterstemmer v1.0.3 h1:GtmsqID0aZdCSNiY8SkuPJ12pD4jI+DdXTAn4YRcHCo= @@ -71,12 +73,14 @@ github.com/blevesearch/segment v0.9.0 h1:5lG7yBCx98or7gK2cHMKPukPZ/31Kag7nONpoBt github.com/blevesearch/segment v0.9.0/go.mod h1:9PfHYUdQCgHktBgvtUOF4x+pc4/l8rdH0u5spnW85UQ= github.com/blevesearch/snowballstem v0.9.0 h1:lMQ189YspGP6sXvZQ4WZ+MLawfV8wOmPoD/iWeNXm8s= github.com/blevesearch/snowballstem v0.9.0/go.mod h1:PivSj3JMc8WuaFkTSRDW2SlrulNWPl4ABg1tC/hlgLs= -github.com/blevesearch/zap/v11 v11.0.7 h1:nnmAOP6eXBkqEa1Srq1eqA5Wmn4w+BZjLdjynNxvd+M= -github.com/blevesearch/zap/v11 v11.0.7/go.mod h1:bJoY56fdU2m/IP4LLz/1h4jY2thBoREvoqbuJ8zhm9k= -github.com/blevesearch/zap/v12 v12.0.7 h1:y8FWSAYkdc4p1dn4YLxNNr1dxXlSUsakJh2Fc/r6cj4= -github.com/blevesearch/zap/v12 v12.0.7/go.mod h1:70DNK4ZN4tb42LubeDbfpp6xnm8g3ROYVvvZ6pEoXD8= -github.com/caddyserver/certmagic v0.10.12 h1:aZtgzcIssiMSlP0jDdpDBbBzQ5INf5eKL9T6Nf3YzKM= -github.com/caddyserver/certmagic v0.10.12/go.mod h1:Y8jcUBctgk/IhpAzlHKfimZNyXCkfGgRTC0orl8gROQ= +github.com/blevesearch/zap/v11 v11.0.8 h1:Pnes647E5BkBpXYiX94LYZeKG/6oeSnQ4AjeAFl+Nl8= +github.com/blevesearch/zap/v11 v11.0.8/go.mod h1:VlWmhlTeVIT1aItOGUjABKblNp9gpQXnHtpWQi3vhNw= +github.com/blevesearch/zap/v12 v12.0.8 h1:8aQEmkrJ/qNgmGYZomhDdE133ZxS+5tY58p2CgkV3mk= +github.com/blevesearch/zap/v12 v12.0.8/go.mod h1:GD0cwdeEUvaAW2qfK/8COKg6Ru8dl9DBotl+U2tvWmA= +github.com/blevesearch/zap/v13 v13.0.0 h1:AEPlDdoxOTOo5NFQlecIDzNZOJIHCIql4Uc7SdOrlLE= +github.com/blevesearch/zap/v13 v13.0.0/go.mod h1:bONNlOmL4gWrJaSYpuE78VnYmq+RJN8rwoG2+aEZrV4= +github.com/caddyserver/certmagic v0.10.13 h1:wfyYpXVXSSYMS1ZFpSr7HptwsC+j7elda5PUERrHtRc= +github.com/caddyserver/certmagic v0.10.13/go.mod h1:Yz6cSRUdddGy6Ut5JfrvcqBwrm1BqXxJRqJq2TwjPnA= github.com/cenkalti/backoff/v4 v4.0.0 h1:6VeaLF9aI+MAUQ95106HwWzYZgJJpZ4stumjj6RFYAU= github.com/cenkalti/backoff/v4 v4.0.0/go.mod h1:eEew/i+1Q6OrCDZh3WiXYv3+nJwBASZ8Bog/87DQnVg= github.com/cenkalti/backoff/v4 v4.0.2 h1:JIufpQLbh4DkbQoii76ItQIUFzevQSqOLZca4eamEDs= @@ -95,6 +99,7 @@ github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/couchbase/ghistogram v0.1.0 h1:b95QcQTCzjTUocDXp/uMgSNQi8oj1tGwnJ4bODWZnps= @@ -103,7 +108,6 @@ github.com/couchbase/moss v0.1.0 h1:HCL+xxHUwmOaL44kMM/gU08OW6QGCui1WVFO58bjhNI= github.com/couchbase/moss v0.1.0/go.mod h1:9MaHIaRuy9pvLPUJxB8sh8OrLfyDczECVL37grCIubs= github.com/couchbase/vellum v1.0.1 h1:qrj9ohvZedvc51S5KzPfJ6P6z0Vqzv7Lx7k3mVc2WOk= github.com/couchbase/vellum v1.0.1/go.mod h1:FcwrEivFpNi24R3jLOs3n+fs5RnuQnQqCLBJ1uAg1W4= -github.com/cpu/goacmedns v0.0.1/go.mod h1:sesf/pNnCYwUevQEQfEwY0Y3DydlQWSGZbaMElOWxok= github.com/cpu/goacmedns v0.0.2/go.mod h1:4MipLkI+qScwqtVxcNO6okBhbgRrr7/tKXUSgSL0teQ= github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= @@ -121,7 +125,7 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= github.com/dnaeon/go-vcr v0.0.0-20180814043457-aafff18a5cc2/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= -github.com/dnsimple/dnsimple-go v0.30.0/go.mod h1:O5TJ0/U6r7AfT8niYNlmohpLbCSG+c71tQlGr9SeGrg= +github.com/dnsimple/dnsimple-go v0.60.0/go.mod h1:O5TJ0/U6r7AfT8niYNlmohpLbCSG+c71tQlGr9SeGrg= github.com/dsnet/compress v0.0.1 h1:PlZu0n3Tuv04TzpfPbrnI0HW/YwodEXDS+oPKahKF0Q= github.com/dsnet/compress v0.0.1/go.mod h1:Aw8dCMJ7RioblQeTqt88akK31OvO8Dhf5JflhBbQEHo= github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY= @@ -138,6 +142,7 @@ github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 h1:JWuenKqqX8nojt github.com/facebookgo/stack v0.0.0-20160209184415-751773369052/go.mod h1:UbMTZqLaRiH3MsBH8va0n7s1pQYcu3uTb8G4tygF4Zg= github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870 h1:E2s37DuLxFhQDg5gKsWoLBOB0n+ZW8s599zru8FJ2/Y= github.com/facebookgo/subset v0.0.0-20150612182917-8dac2c3c4870/go.mod h1:5tD+neXqOorC30/tWg0LCSkrqj/AR6gu8yY8/fpw1q0= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -150,19 +155,17 @@ github.com/glycerine/go-unsnap-stream v0.0.0-20190901134440-81cf024a9e0a h1:FQqo github.com/glycerine/go-unsnap-stream v0.0.0-20190901134440-81cf024a9e0a/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31 h1:gclg6gY70GLy3PbkQ1AERPfmLMMagS60DKF78eWwLn8= github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= -github.com/go-acme/lego/v3 v3.4.0 h1:deB9NkelA+TfjGHVw8J7iKl/rMtffcGMWSMmptvMv0A= -github.com/go-acme/lego/v3 v3.4.0/go.mod h1:xYbLDuxq3Hy4bMUT1t9JIuz6GWIWb3m5X+TeTHYaT7M= -github.com/go-acme/lego/v3 v3.6.0 h1:Rv0MrX3DpVp9Xg77yR7x+PCksLLph3Ut/69/9Kim8ac= -github.com/go-acme/lego/v3 v3.6.0/go.mod h1:sB/T7hfyz0HYIBvPmz/C8jIaxF6scbbiGKTzbQ22V6A= +github.com/go-acme/lego/v3 v3.7.0 h1:qC5/8/CbltyAE8fGLE6bGlqucj7pXc/vBxiLwLOsmAQ= +github.com/go-acme/lego/v3 v3.7.0/go.mod h1:4eDjjYkAsDXyNcwN8IhhZAwxz9Ltiks1Zmpv0q20J7A= github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-ini/ini v1.44.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= @@ -192,8 +195,8 @@ github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrU github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0 h1:oOuy+ugB+P/kBdUnG5QaMXSIyJ1q38wWSojYCb3z5VQ= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1 h1:ZFgWrT+bLgsYPirOnRfKLYJLvssAegOj/hgyMFdJZe0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db h1:woRePGFeVFfLKN/pOkfl+p/TAqKOfFu+7KPlMVpok/w= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= @@ -233,11 +236,27 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgf github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= +github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -245,6 +264,7 @@ github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhK github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= @@ -255,7 +275,6 @@ github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= @@ -291,28 +310,32 @@ github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDe github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mailru/easyjson v0.7.1 h1:mdxE1MF9o53iCb2Ghj1VfWvh7ZOwHpnVG/xwXrV90U8= -github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mailru/easyjson v0.7.2-0.20200424172602-f0a000e7a8e0 h1:kBQYXw1PdcnwYP5hntk8LEDPdq++fubPN76BlfGLdIM= github.com/mailru/easyjson v0.7.2-0.20200424172602-f0a000e7a8e0/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2/go.mod h1:0KeJpeMD6o+O4hW7qJOT7vyQPKrWmj26uf5wMc/IiIs= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-tty v0.0.0-20180219170247-931426f7535a/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.1.15 h1:CSSIDtllwGLMoA6zjdKnaE6Tx6eVUxQ29LUgGetiDCI= -github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= github.com/miekg/dns v1.1.27/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/miekg/dns v1.1.29 h1:xHBEhR+t5RzcFJjBLJlax2daXOrTYtr9z4WdKEfWFzg= github.com/miekg/dns v1.1.29/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed/go.mod h1:3rdaFaCv4AyBgu5ALFM0+tSuHrBh6v692nyQe3ikrq0= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.3.0 h1:iDwIio/3gk2QtLLEsqU5lInaMzos0hDTz8a6lazSFVw= -github.com/mitchellh/mapstructure v1.3.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.3.1 h1:cCBH2gTD2K0OtLlv/Y5H01VQCqmlDxz30kS5Y5bqfLA= +github.com/mitchellh/mapstructure v1.3.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= @@ -324,7 +347,6 @@ github.com/mschoch/smat v0.2.0/go.mod h1:kc9mz7DoBKqDyiRL7VZN8KvXQMWeTaVnttLRXOl github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04/go.mod h1:5sN+Lt1CaY4wsPvgQH/jsuJi4XO2ssZbdsIizr4CVC8= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= -github.com/nrdcg/auroradns v1.0.0/go.mod h1:6JPXKzIRzZzMqtTDgueIhTi6rFf1QvYE/HzqidhOhjw= github.com/nrdcg/auroradns v1.0.1/go.mod h1:y4pc0i9QXYlFCWrhWrUSIETnZgrf4KuwjDIWmmXo3JI= github.com/nrdcg/dnspod-go v0.4.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= github.com/nrdcg/goinwx v0.6.1/go.mod h1:XPiut7enlbEdntAqalBIqcYcTEVhpv/dKWgDCX2SwKQ= @@ -344,17 +366,20 @@ github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1Cpa github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY3JAOEMcoOp05CnZzsx4scTxi95DHyQ= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI= -github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= +github.com/pelletier/go-toml v1.8.0 h1:Keo9qb7iRJs2voHvunFtuuYFsbWeOBh8/P9v/kVMFtw= +github.com/pelletier/go-toml v1.8.0/go.mod h1:D6yutnOGMveHEPV7VQOuvI/gXY61bv+9bAOTRnLElKs= github.com/philhofer/fwd v1.0.0 h1:UbZqGr5Y38ApvM/V/jEljVxwocdweyH+vmYvRPBnbqQ= github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= @@ -384,8 +409,9 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sacloud/libsacloud v1.26.1/go.mod h1:79ZwATmHLIFZIMd7sxA3LwzVy/B77uj3LDoToVTxDoQ= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -420,8 +446,8 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.4.0 h1:yXHLWeravcrgGyFSyCgdYpXQ9dR9c/WED3pg1RhxqEU= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.6.3 h1:pDDu1OyEDTKzpJwdq4TiuLyMsUgRa/BT5cn5O62NoHs= -github.com/spf13/viper v1.6.3/go.mod h1:jUMtyi0/lB5yZH/FjyGAoH7IMNrIhlBf6pXZmbMDvzw= +github.com/spf13/viper v1.7.0 h1:xVKxvI7ouOI5I+U9s2eeiUfMaWBVoXA3AWskkrqK0VM= +github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/steveyen/gtreap v0.1.0 h1:CjhzTa274PyJLJuMZwIzCO1PfC00oRa8d1Kc78bFXJM= github.com/steveyen/gtreap v0.1.0/go.mod h1:kl/5J7XbrOmlIbYIXdRHDDE5QxHqpk0cmkT7Z4dM9/Y= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -452,7 +478,6 @@ github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDW github.com/tinylib/msgp v1.1.2 h1:gWmO7n0Ys2RBEb7GPYB9Ujq8Mk5p2U08lRnmMcGy6BQ= github.com/tinylib/msgp v1.1.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/transip/gotransip v0.0.0-20190812104329-6d8d9179b66f/go.mod h1:i0f4R4o2HM0m3DZYQWsj6/MEowD57VzoH0v3d7igeFY= github.com/transip/gotransip/v6 v6.0.2/go.mod h1:pQZ36hWWRahCUXkFWlx9Hs711gLd8J4qdgLdRzmtY+g= github.com/uber-go/atomic v1.3.2/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= @@ -464,7 +489,6 @@ github.com/willf/bitset v1.1.10 h1:NotGKqX0KwQ72NUzqrjZq5ipPNDQex9lo3WpaS8L2sc= github.com/willf/bitset v1.1.10/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= @@ -485,6 +509,7 @@ go.uber.org/ratelimit v0.0.0-20180316092928-c15da0234277/go.mod h1:2X8KaoNd1J0lZ go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.0.0-20180621125126-a49355c7e3f8/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9 h1:mKdxBk7AujPs8kU4m80U72y/zjbZ3UcXC7dClwKbUI0= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -496,10 +521,8 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073 h1:xMPOj6Pz6UipU1wXLkrtqpHbR0AVFnyPEQq/wRWz9lM= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200427165652-729f1e841bcc h1:ZGI/fILM2+ueot/UixBSoj9188jCAxVHEZEGhqq67I4= -golang.org/x/crypto v0.0.0-20200427165652-729f1e841bcc/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200429183012-4b2356b1ed79 h1:IaQbIIB2X/Mp/DKctl6ROxz1KyMlKp4uyvL6+kQ7C88= -golang.org/x/crypto v0.0.0-20200429183012-4b2356b1ed79/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 h1:cg5LA/zNPRzIXIWSCxQW10Rvpy94aQh3LT/ShoCpkHw= +golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -533,7 +556,9 @@ golang.org/x/net v0.0.0-20180611182652-db08ff08e862/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3 h1:ulvT7fqt0yHWzpJwI57MezWnYDVpCAYBVuYst/L+fAY= @@ -550,18 +575,14 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190930134127-c5a3c61f89f3/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191027093000-83d349e8ac1a h1:Yu34BogBivvmu7SAzHHaB9nZWH5D1C+z3F1jyIaYZSQ= -golang.org/x/net v0.0.0-20191027093000-83d349e8ac1a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0 h1:Jcxah/M+oLZ/R4/z5RzfPzGbPXnVDPkEDtf2JnuxN+U= -golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f h1:QBjCr1Fz5kw158VqdE9JfI9cJnl/ymnJWAdMuinqL7Y= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2 h1:eDrdRpKgkcCqKZQwyZRyeFZgfqt37SL7Kv3tok06cKE= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -578,9 +599,11 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180622082034-63fc586f45fe/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181031143558-9b800f95dbbc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -612,10 +635,8 @@ golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200428200454-593003d681fa h1:yMbJOvnfYkO1dSAviTu/ZguZWLBTXx4xE3LYrxUCCiA= -golang.org/x/sys v0.0.0-20200428200454-593003d681fa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501145240-bc7a7d42d5c3 h1:5B6i6EAiSYyejWfvc5Rc9BbI3rzIsrrXfAQBWnYfn+w= -golang.org/x/sys v0.0.0-20200501145240-bc7a7d42d5c3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121 h1:rITEj+UZHYC927n8GT97eC3zrpzXdb/voyeOuVKS46o= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -644,6 +665,7 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -714,8 +736,8 @@ google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQ google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0 h1:qdOKuR/EIArgaWNjetjgTzgVTAZ+S/WXVrq9HW9zimw= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0 h1:cJv5/xdbk1NnMPR1VP9+HU6gupuG9MLBoH1r6RHZ2MY= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -726,19 +748,16 @@ gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE= gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.44.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.51.1 h1:GyboHr4UqMiLUybYjd22ZjQIKEJEpgtLXtuGbR21Oho= gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.55.0 h1:E8yzL5unfpW3M6fz/eB7Cb5MQAYSZ7GKo4Qth+N2sgQ= -gopkg.in/ini.v1 v1.55.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.56.0 h1:DPMeDvGTM54DXbPkVIZsp19fp/I2K7zwA/itHYHKo8Y= +gopkg.in/ini.v1 v1.56.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ns1/ns1-go.v2 v2.0.0-20190730140822-b51389932cbc/go.mod h1:VV+3haRsgDiVLxyifmMBrBIuCWFBPYKbRssXB9z67Hw= gopkg.in/resty.v1 v1.9.1/go.mod h1:vo52Hzryw9PnPHcJfPsBiFW62XhNx5OczbV9y+IMpgc= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.3.1 h1:SK5KegNXmKmqE342YYN2qPHEnUYeoMiXXl1poUlI+o4= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.5.0 h1:OZ4sdq+Y+SHfYB7vfthi1Ei8b0vkP8ZPQgUfUwdUSqo= -gopkg.in/square/go-jose.v2 v2.5.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.5.1 h1:7odma5RETjNHWJnR32wx8t+Io4djHE1PqxCFx3iiZ2w= gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= @@ -751,6 +770,8 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/vendor/github.com/blevesearch/bleve/README.md b/vendor/github.com/blevesearch/bleve/README.md index 7c1a7c7c..eff0be97 100644 --- a/vendor/github.com/blevesearch/bleve/README.md +++ b/vendor/github.com/blevesearch/bleve/README.md @@ -1,10 +1,13 @@ # ![bleve](docs/bleve.png) bleve -[![Build Status](https://travis-ci.org/blevesearch/bleve.svg?branch=master)](https://travis-ci.org/blevesearch/bleve) [![Coverage Status](https://coveralls.io/repos/github/blevesearch/bleve/badge.svg?branch=master)](https://coveralls.io/github/blevesearch/bleve?branch=master) [![GoDoc](https://godoc.org/github.com/blevesearch/bleve?status.svg)](https://godoc.org/github.com/blevesearch/bleve) +[![Tests](https://github.com/blevesearch/bleve/workflows/Tests/badge.svg?branch=master&event=push)](https://github.com/blevesearch/bleve/actions?query=workflow%3ATests+event%3Apush+branch%3Amaster) +[![Coverage Status](https://coveralls.io/repos/github/blevesearch/bleve/badge.svg?branch=master)](https://coveralls.io/github/blevesearch/bleve?branch=master) +[![GoDoc](https://godoc.org/github.com/blevesearch/bleve?status.svg)](https://godoc.org/github.com/blevesearch/bleve) [![Join the chat at https://gitter.im/blevesearch/bleve](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/blevesearch/bleve?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![codebeat](https://codebeat.co/badges/38a7cbc9-9cf5-41c0-a315-0746178230f4)](https://codebeat.co/projects/github-com-blevesearch-bleve) [![Go Report Card](https://goreportcard.com/badge/blevesearch/bleve)](https://goreportcard.com/report/blevesearch/bleve) -[![Sourcegraph](https://sourcegraph.com/github.com/blevesearch/bleve/-/badge.svg)](https://sourcegraph.com/github.com/blevesearch/bleve?badge) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) +[![Sourcegraph](https://sourcegraph.com/github.com/blevesearch/bleve/-/badge.svg)](https://sourcegraph.com/github.com/blevesearch/bleve?badge) +[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) modern text indexing in go - [blevesearch.com](http://www.blevesearch.com/) diff --git a/vendor/github.com/blevesearch/bleve/builder.go b/vendor/github.com/blevesearch/bleve/builder.go new file mode 100644 index 00000000..de00c97b --- /dev/null +++ b/vendor/github.com/blevesearch/bleve/builder.go @@ -0,0 +1,94 @@ +// Copyright (c) 2019 Couchbase, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package bleve + +import ( + "encoding/json" + "fmt" + + "github.com/blevesearch/bleve/document" + "github.com/blevesearch/bleve/index" + "github.com/blevesearch/bleve/index/scorch" + "github.com/blevesearch/bleve/mapping" +) + +type builderImpl struct { + b index.IndexBuilder + m mapping.IndexMapping +} + +func (b *builderImpl) Index(id string, data interface{}) error { + if id == "" { + return ErrorEmptyID + } + + doc := document.NewDocument(id) + err := b.m.MapDocument(doc, data) + if err != nil { + return err + } + err = b.b.Index(doc) + return err +} + +func (b *builderImpl) Close() error { + return b.b.Close() +} + +func newBuilder(path string, mapping mapping.IndexMapping, config map[string]interface{}) (Builder, error) { + if path == "" { + return nil, fmt.Errorf("builder requires path") + } + + err := mapping.Validate() + if err != nil { + return nil, err + } + + if config == nil { + config = map[string]interface{}{} + } + + // the builder does not have an API to interact with internal storage + // however we can pass k/v pairs through the config + mappingBytes, err := json.Marshal(mapping) + if err != nil { + return nil, err + } + config["internal"] = map[string][]byte{ + string(mappingInternalKey): mappingBytes, + } + + // do not use real config, as these are options for the builder, + // not the resulting index + meta := newIndexMeta(scorch.Name, scorch.Name, map[string]interface{}{}) + err = meta.Save(path) + if err != nil { + return nil, err + } + + config["path"] = indexStorePath(path) + + b, err := scorch.NewBuilder(config) + if err != nil { + return nil, err + } + rv := &builderImpl{ + b: b, + m: mapping, + } + + return rv, nil +} diff --git a/vendor/github.com/blevesearch/bleve/go.mod b/vendor/github.com/blevesearch/bleve/go.mod index d38cf8f9..e9e27ba1 100644 --- a/vendor/github.com/blevesearch/bleve/go.mod +++ b/vendor/github.com/blevesearch/bleve/go.mod @@ -8,8 +8,9 @@ require ( github.com/blevesearch/go-porterstemmer v1.0.3 github.com/blevesearch/segment v0.9.0 github.com/blevesearch/snowballstem v0.9.0 - github.com/blevesearch/zap/v11 v11.0.7 - github.com/blevesearch/zap/v12 v12.0.7 + github.com/blevesearch/zap/v11 v11.0.8 + github.com/blevesearch/zap/v12 v12.0.8 + github.com/blevesearch/zap/v13 v13.0.0 github.com/couchbase/ghistogram v0.1.0 // indirect github.com/couchbase/moss v0.1.0 github.com/couchbase/vellum v1.0.1 diff --git a/vendor/github.com/blevesearch/bleve/index.go b/vendor/github.com/blevesearch/bleve/index.go index ef6ede93..974358b8 100644 --- a/vendor/github.com/blevesearch/bleve/index.go +++ b/vendor/github.com/blevesearch/bleve/index.go @@ -293,3 +293,17 @@ func Open(path string) (Index, error) { func OpenUsing(path string, runtimeConfig map[string]interface{}) (Index, error) { return openIndexUsing(path, runtimeConfig) } + +// Builder is a limited interface, used to build indexes in an offline mode. +// Items cannot be updated or deleted, and the caller MUST ensure a document is +// indexed only once. +type Builder interface { + Index(id string, data interface{}) error + Close() error +} + +// NewBuilder creates a builder, which will build an index at the specified path, +// using the specified mapping and options. +func NewBuilder(path string, mapping mapping.IndexMapping, config map[string]interface{}) (Builder, error) { + return newBuilder(path, mapping, config) +} diff --git a/vendor/github.com/blevesearch/bleve/index/index.go b/vendor/github.com/blevesearch/bleve/index/index.go index 3e866f3a..551f8de8 100644 --- a/vendor/github.com/blevesearch/bleve/index/index.go +++ b/vendor/github.com/blevesearch/bleve/index/index.go @@ -367,3 +367,10 @@ type OptimizableContext interface { type DocValueReader interface { VisitDocValues(id IndexInternalID, visitor DocumentFieldTermVisitor) error } + +// IndexBuilder is an interface supported by some index schemes +// to allow direct write-only index building +type IndexBuilder interface { + Index(doc *document.Document) error + Close() error +} diff --git a/vendor/github.com/blevesearch/bleve/index/scorch/builder.go b/vendor/github.com/blevesearch/bleve/index/scorch/builder.go new file mode 100644 index 00000000..cd400bd1 --- /dev/null +++ b/vendor/github.com/blevesearch/bleve/index/scorch/builder.go @@ -0,0 +1,333 @@ +// Copyright (c) 2019 Couchbase, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package scorch + +import ( + "fmt" + "io/ioutil" + "os" + "sync" + + "github.com/RoaringBitmap/roaring" + "github.com/blevesearch/bleve/document" + "github.com/blevesearch/bleve/index" + "github.com/blevesearch/bleve/index/scorch/segment" + bolt "go.etcd.io/bbolt" +) + +const DefaultBuilderBatchSize = 1000 +const DefaultBuilderMergeMax = 10 + +type Builder struct { + m sync.Mutex + segCount uint64 + path string + buildPath string + segPaths []string + batchSize int + mergeMax int + batch *index.Batch + internal map[string][]byte + segPlugin segment.Plugin +} + +func NewBuilder(config map[string]interface{}) (*Builder, error) { + path, ok := config["path"].(string) + if !ok { + return nil, fmt.Errorf("must specify path") + } + + buildPathPrefix, _ := config["buildPathPrefix"].(string) + buildPath, err := ioutil.TempDir(buildPathPrefix, "scorch-offline-build") + if err != nil { + return nil, err + } + + rv := &Builder{ + path: path, + buildPath: buildPath, + mergeMax: DefaultBuilderMergeMax, + batchSize: DefaultBuilderBatchSize, + batch: index.NewBatch(), + segPlugin: defaultSegmentPlugin, + } + + err = rv.parseConfig(config) + if err != nil { + return nil, fmt.Errorf("error parsing builder config: %v", err) + } + + return rv, nil +} + +func (o *Builder) parseConfig(config map[string]interface{}) (err error) { + if v, ok := config["mergeMax"]; ok { + var t int + if t, err = parseToInteger(v); err != nil { + return fmt.Errorf("mergeMax parse err: %v", err) + } + if t > 0 { + o.mergeMax = t + } + } + + if v, ok := config["batchSize"]; ok { + var t int + if t, err = parseToInteger(v); err != nil { + return fmt.Errorf("batchSize parse err: %v", err) + } + if t > 0 { + o.batchSize = t + } + } + + if v, ok := config["internal"]; ok { + if vinternal, ok := v.(map[string][]byte); ok { + o.internal = vinternal + } + } + + forcedSegmentType, forcedSegmentVersion, err := configForceSegmentTypeVersion(config) + if err != nil { + return err + } + if forcedSegmentType != "" && forcedSegmentVersion != 0 { + segPlugin, err := chooseSegmentPlugin(forcedSegmentType, + uint32(forcedSegmentVersion)) + if err != nil { + o.segPlugin = segPlugin + } + } + + return nil +} + +// Index will place the document into the index. +// It is invalid to index the same document multiple times. +func (o *Builder) Index(doc *document.Document) error { + o.m.Lock() + defer o.m.Unlock() + + o.batch.Update(doc) + + return o.maybeFlushBatchLOCKED(o.batchSize) +} + +func (o *Builder) maybeFlushBatchLOCKED(moreThan int) error { + if len(o.batch.IndexOps) >= moreThan { + defer o.batch.Reset() + return o.executeBatchLOCKED(o.batch) + } + return nil +} + +func (o *Builder) executeBatchLOCKED(batch *index.Batch) (err error) { + analysisResults := make([]*index.AnalysisResult, 0, len(batch.IndexOps)) + for _, doc := range batch.IndexOps { + if doc != nil { + // insert _id field + doc.AddField(document.NewTextFieldCustom("_id", nil, []byte(doc.ID), document.IndexField|document.StoreField, nil)) + // perform analysis directly + analysisResult := analyze(doc) + analysisResults = append(analysisResults, analysisResult) + } + } + + seg, _, err := o.segPlugin.New(analysisResults) + if err != nil { + return fmt.Errorf("error building segment base: %v", err) + } + + filename := zapFileName(o.segCount) + o.segCount++ + path := o.buildPath + string(os.PathSeparator) + filename + + if segUnpersisted, ok := seg.(segment.UnpersistedSegment); ok { + err = segUnpersisted.Persist(path) + if err != nil { + return fmt.Errorf("error persisting segment base to %s: %v", path, err) + } + + o.segPaths = append(o.segPaths, path) + return nil + } + + return fmt.Errorf("new segment does not implement unpersisted: %T", seg) +} + +func (o *Builder) doMerge() error { + // as long as we have more than 1 segment, keep merging + for len(o.segPaths) > 1 { + + // merge the next number of segments into one new one + // or, if there are fewer than remaining, merge them all + mergeCount := o.mergeMax + if mergeCount > len(o.segPaths) { + mergeCount = len(o.segPaths) + } + + mergePaths := o.segPaths[0:mergeCount] + o.segPaths = o.segPaths[mergeCount:] + + // open each of the segments to be merged + mergeSegs := make([]segment.Segment, 0, mergeCount) + + // closeOpenedSegs attempts to close all opened + // segments even if an error occurs, in which case + // the first error is returned + closeOpenedSegs := func() error { + var err error + for _, seg := range mergeSegs { + clErr := seg.Close() + if clErr != nil && err == nil { + err = clErr + } + } + return err + } + + for _, mergePath := range mergePaths { + seg, err := o.segPlugin.Open(mergePath) + if err != nil { + _ = closeOpenedSegs() + return fmt.Errorf("error opening segment (%s) for merge: %v", mergePath, err) + } + mergeSegs = append(mergeSegs, seg) + } + + // do the merge + mergedSegPath := o.buildPath + string(os.PathSeparator) + zapFileName(o.segCount) + drops := make([]*roaring.Bitmap, mergeCount) + _, _, err := o.segPlugin.Merge(mergeSegs, drops, mergedSegPath, nil, nil) + if err != nil { + _ = closeOpenedSegs() + return fmt.Errorf("error merging segments (%v): %v", mergePaths, err) + } + o.segCount++ + o.segPaths = append(o.segPaths, mergedSegPath) + + // close segments opened for merge + err = closeOpenedSegs() + if err != nil { + return fmt.Errorf("error closing opened segments: %v", err) + } + + // remove merged segments + for _, mergePath := range mergePaths { + err = os.RemoveAll(mergePath) + if err != nil { + return fmt.Errorf("error removing segment %s after merge: %v", mergePath, err) + } + } + } + + return nil +} + +func (o *Builder) Close() error { + o.m.Lock() + defer o.m.Unlock() + + // see if there is a partial batch + err := o.maybeFlushBatchLOCKED(1) + if err != nil { + return fmt.Errorf("error flushing batch before close: %v", err) + } + + // perform all the merging + err = o.doMerge() + if err != nil { + return fmt.Errorf("error while merging: %v", err) + } + + // ensure the store path exists + err = os.MkdirAll(o.path, 0700) + if err != nil { + return err + } + + // move final segment into place + // segment id 2 is chosen to match the behavior of a scorch + // index which indexes a single batch of data + finalSegPath := o.path + string(os.PathSeparator) + zapFileName(2) + err = os.Rename(o.segPaths[0], finalSegPath) + if err != nil { + return fmt.Errorf("error moving final segment into place: %v", err) + } + + // remove the buildPath, as it is no longer needed + err = os.RemoveAll(o.buildPath) + if err != nil { + return fmt.Errorf("error removing build path: %v", err) + } + + // prepare wrapping + seg, err := o.segPlugin.Open(finalSegPath) + if err != nil { + return fmt.Errorf("error opening final segment") + } + + // create a segment snapshot for this segment + ss := &SegmentSnapshot{ + segment: seg, + } + is := &IndexSnapshot{ + epoch: 3, // chosen to match scorch behavior when indexing a single batch + segment: []*SegmentSnapshot{ss}, + creator: "scorch-builder", + internal: o.internal, + } + + // create the root bolt + rootBoltPath := o.path + string(os.PathSeparator) + "root.bolt" + rootBolt, err := bolt.Open(rootBoltPath, 0600, nil) + if err != nil { + return err + } + + // start a write transaction + tx, err := rootBolt.Begin(true) + if err != nil { + return err + } + + // fill the root bolt with this fake index snapshot + _, _, err = prepareBoltSnapshot(is, tx, o.path, o.segPlugin) + if err != nil { + _ = tx.Rollback() + _ = rootBolt.Close() + return fmt.Errorf("error preparing bolt snapshot in root.bolt: %v", err) + } + + // commit bolt data + err = tx.Commit() + if err != nil { + _ = rootBolt.Close() + return fmt.Errorf("error committing bolt tx in root.bolt: %v", err) + } + + // close bolt + err = rootBolt.Close() + if err != nil { + return fmt.Errorf("error closing root.bolt: %v", err) + } + + // close final segment + err = seg.Close() + if err != nil { + return fmt.Errorf("error closing final segment: %v", err) + } + return nil +} diff --git a/vendor/github.com/blevesearch/bleve/index/scorch/introducer.go b/vendor/github.com/blevesearch/bleve/index/scorch/introducer.go index e5f00f80..64ca969b 100644 --- a/vendor/github.com/blevesearch/bleve/index/scorch/introducer.go +++ b/vendor/github.com/blevesearch/bleve/index/scorch/introducer.go @@ -45,13 +45,7 @@ type epochWatcher struct { notifyCh notificationChan } -type snapshotReversion struct { - snapshot *IndexSnapshot - applied chan error - persisted chan error -} - -func (s *Scorch) mainLoop() { +func (s *Scorch) introducerLoop() { var epochWatchers []*epochWatcher OUTER: for { diff --git a/vendor/github.com/blevesearch/bleve/index/scorch/merge.go b/vendor/github.com/blevesearch/bleve/index/scorch/merge.go index 37dca529..3eccee52 100644 --- a/vendor/github.com/blevesearch/bleve/index/scorch/merge.go +++ b/vendor/github.com/blevesearch/bleve/index/scorch/merge.go @@ -15,6 +15,7 @@ package scorch import ( + "context" "encoding/json" "fmt" "os" @@ -29,12 +30,16 @@ import ( func (s *Scorch) mergerLoop() { var lastEpochMergePlanned uint64 + var ctrlMsg *mergerCtrl mergePlannerOptions, err := s.parseMergePlannerOptions() if err != nil { s.fireAsyncError(fmt.Errorf("mergePlannerOption json parsing err: %v", err)) s.asyncTasks.Done() return } + ctrlMsgDflt := &mergerCtrl{ctx: context.Background(), + options: mergePlannerOptions, + doneCh: nil} OUTER: for { @@ -53,16 +58,30 @@ OUTER: atomic.StoreUint64(&s.iStats.mergeEpoch, ourSnapshot.epoch) s.rootLock.Unlock() - if ourSnapshot.epoch != lastEpochMergePlanned { + if ctrlMsg == nil && ourSnapshot.epoch != lastEpochMergePlanned { + ctrlMsg = ctrlMsgDflt + } + if ctrlMsg != nil { startTime := time.Now() // lets get started - err := s.planMergeAtSnapshot(ourSnapshot, mergePlannerOptions) + err := s.planMergeAtSnapshot(ctrlMsg.ctx, ctrlMsg.options, + ourSnapshot) if err != nil { atomic.StoreUint64(&s.iStats.mergeEpoch, 0) if err == segment.ErrClosed { // index has been closed _ = ourSnapshot.DecRef() + + // continue the workloop on a user triggered cancel + if ctrlMsg.doneCh != nil { + close(ctrlMsg.doneCh) + ctrlMsg = nil + continue OUTER + } + + // exit the workloop on index closure + ctrlMsg = nil break OUTER } s.fireAsyncError(fmt.Errorf("merging err: %v", err)) @@ -70,6 +89,12 @@ OUTER: atomic.AddUint64(&s.stats.TotFileMergeLoopErr, 1) continue OUTER } + + if ctrlMsg.doneCh != nil { + close(ctrlMsg.doneCh) + } + ctrlMsg = nil + lastEpochMergePlanned = ourSnapshot.epoch atomic.StoreUint64(&s.stats.LastMergedEpoch, ourSnapshot.epoch) @@ -90,6 +115,8 @@ OUTER: case <-s.closeCh: break OUTER case s.persisterNotifier <- ew: + case ctrlMsg = <-s.forceMergeRequestCh: + continue OUTER } // now wait for persister (but also detect close) @@ -97,6 +124,7 @@ OUTER: case <-s.closeCh: break OUTER case <-ew.notifyCh: + case ctrlMsg = <-s.forceMergeRequestCh: } } @@ -106,6 +134,58 @@ OUTER: s.asyncTasks.Done() } +type mergerCtrl struct { + ctx context.Context + options *mergeplan.MergePlanOptions + doneCh chan struct{} +} + +// ForceMerge helps users trigger a merge operation on +// an online scorch index. +func (s *Scorch) ForceMerge(ctx context.Context, + mo *mergeplan.MergePlanOptions) error { + // check whether force merge is already under processing + s.rootLock.Lock() + if s.stats.TotFileMergeForceOpsStarted > + s.stats.TotFileMergeForceOpsCompleted { + s.rootLock.Unlock() + return fmt.Errorf("force merge already in progress") + } + + s.stats.TotFileMergeForceOpsStarted++ + s.rootLock.Unlock() + + if mo != nil { + err := mergeplan.ValidateMergePlannerOptions(mo) + if err != nil { + return err + } + } else { + // assume the default single segment merge policy + mo = &mergeplan.SingleSegmentMergePlanOptions + } + msg := &mergerCtrl{options: mo, + doneCh: make(chan struct{}), + ctx: ctx, + } + + // request the merger perform a force merge + select { + case s.forceMergeRequestCh <- msg: + case <-s.closeCh: + return nil + } + + // wait for the force merge operation completion + select { + case <-msg.doneCh: + atomic.AddUint64(&s.stats.TotFileMergeForceOpsCompleted, 1) + case <-s.closeCh: + } + + return nil +} + func (s *Scorch) parseMergePlannerOptions() (*mergeplan.MergePlanOptions, error) { mergePlannerOptions := mergeplan.DefaultMergePlanOptions @@ -128,8 +208,39 @@ func (s *Scorch) parseMergePlannerOptions() (*mergeplan.MergePlanOptions, return &mergePlannerOptions, nil } -func (s *Scorch) planMergeAtSnapshot(ourSnapshot *IndexSnapshot, - options *mergeplan.MergePlanOptions) error { +type closeChWrapper struct { + ch1 chan struct{} + ctx context.Context + closeCh chan struct{} +} + +func newCloseChWrapper(ch1 chan struct{}, + ctx context.Context) *closeChWrapper { + return &closeChWrapper{ch1: ch1, + ctx: ctx, + closeCh: make(chan struct{})} +} + +func (w *closeChWrapper) close() { + select { + case <-w.closeCh: + default: + close(w.closeCh) + } +} + +func (w *closeChWrapper) listen() { + select { + case <-w.ch1: + w.close() + case <-w.ctx.Done(): + w.close() + case <-w.closeCh: + } +} + +func (s *Scorch) planMergeAtSnapshot(ctx context.Context, + options *mergeplan.MergePlanOptions, ourSnapshot *IndexSnapshot) error { // build list of persisted segments in this snapshot var onlyPersistedSnapshots []mergeplan.Segment for _, segmentSnapshot := range ourSnapshot.segment { @@ -158,6 +269,11 @@ func (s *Scorch) planMergeAtSnapshot(ourSnapshot *IndexSnapshot, // process tasks in serial for now var filenames []string + cw := newCloseChWrapper(s.closeCh, ctx) + defer cw.close() + + go cw.listen() + for _, task := range resultMergePlan.Tasks { if len(task.Segments) == 0 { atomic.AddUint64(&s.stats.TotFileMergePlanTasksSegmentsEmpty, 1) @@ -203,7 +319,7 @@ func (s *Scorch) planMergeAtSnapshot(ourSnapshot *IndexSnapshot, atomic.AddUint64(&s.stats.TotFileMergeZapBeg, 1) newDocNums, _, err := s.segPlugin.Merge(segmentsToMerge, docsToDrop, path, - s.closeCh, s) + cw.closeCh, s) atomic.AddUint64(&s.stats.TotFileMergeZapEnd, 1) fileMergeZapTime := uint64(time.Since(fileMergeZapStartTime)) diff --git a/vendor/github.com/blevesearch/bleve/index/scorch/mergeplan/merge_plan.go b/vendor/github.com/blevesearch/bleve/index/scorch/mergeplan/merge_plan.go index c2a0d3c6..e02923cc 100644 --- a/vendor/github.com/blevesearch/bleve/index/scorch/mergeplan/merge_plan.go +++ b/vendor/github.com/blevesearch/bleve/index/scorch/mergeplan/merge_plan.go @@ -134,6 +134,17 @@ var DefaultMergePlanOptions = MergePlanOptions{ ReclaimDeletesWeight: 2.0, } +// SingleSegmentMergePlanOptions helps in creating a +// single segment index. +var SingleSegmentMergePlanOptions = MergePlanOptions{ + MaxSegmentsPerTier: 1, + MaxSegmentSize: 1 << 30, + TierGrowth: 1.0, + SegmentsPerMergeTask: 10, + FloorSegmentSize: 1 << 30, + ReclaimDeletesWeight: 2.0, +} + // ------------------------------------------- func plan(segmentsIn []Segment, o *MergePlanOptions) (*MergePlan, error) { diff --git a/vendor/github.com/blevesearch/bleve/index/scorch/persister.go b/vendor/github.com/blevesearch/bleve/index/scorch/persister.go index 30e75df7..ea3667bb 100644 --- a/vendor/github.com/blevesearch/bleve/index/scorch/persister.go +++ b/vendor/github.com/blevesearch/bleve/index/scorch/persister.go @@ -428,6 +428,100 @@ func (s *Scorch) persistSnapshotMaybeMerge(snapshot *IndexSnapshot) ( return true, nil } +func prepareBoltSnapshot(snapshot *IndexSnapshot, tx *bolt.Tx, path string, + segPlugin segment.Plugin) ([]string, map[uint64]string, error) { + snapshotsBucket, err := tx.CreateBucketIfNotExists(boltSnapshotsBucket) + if err != nil { + return nil, nil, err + } + newSnapshotKey := segment.EncodeUvarintAscending(nil, snapshot.epoch) + snapshotBucket, err := snapshotsBucket.CreateBucketIfNotExists(newSnapshotKey) + if err != nil { + return nil, nil, err + } + + // persist meta values + metaBucket, err := snapshotBucket.CreateBucketIfNotExists(boltMetaDataKey) + if err != nil { + return nil, nil, err + } + err = metaBucket.Put(boltMetaDataSegmentTypeKey, []byte(segPlugin.Type())) + if err != nil { + return nil, nil, err + } + buf := make([]byte, binary.MaxVarintLen32) + binary.BigEndian.PutUint32(buf, segPlugin.Version()) + err = metaBucket.Put(boltMetaDataSegmentVersionKey, buf) + if err != nil { + return nil, nil, err + } + + // persist internal values + internalBucket, err := snapshotBucket.CreateBucketIfNotExists(boltInternalKey) + if err != nil { + return nil, nil, err + } + // TODO optimize writing these in order? + for k, v := range snapshot.internal { + err = internalBucket.Put([]byte(k), v) + if err != nil { + return nil, nil, err + } + } + + var filenames []string + newSegmentPaths := make(map[uint64]string) + + // first ensure that each segment in this snapshot has been persisted + for _, segmentSnapshot := range snapshot.segment { + snapshotSegmentKey := segment.EncodeUvarintAscending(nil, segmentSnapshot.id) + snapshotSegmentBucket, err := snapshotBucket.CreateBucketIfNotExists(snapshotSegmentKey) + if err != nil { + return nil, nil, err + } + switch seg := segmentSnapshot.segment.(type) { + case segment.PersistedSegment: + segPath := seg.Path() + filename := strings.TrimPrefix(segPath, path+string(os.PathSeparator)) + err = snapshotSegmentBucket.Put(boltPathKey, []byte(filename)) + if err != nil { + return nil, nil, err + } + filenames = append(filenames, filename) + case segment.UnpersistedSegment: + // need to persist this to disk + filename := zapFileName(segmentSnapshot.id) + path := path + string(os.PathSeparator) + filename + err = seg.Persist(path) + if err != nil { + return nil, nil, fmt.Errorf("error persisting segment: %v", err) + } + newSegmentPaths[segmentSnapshot.id] = path + err = snapshotSegmentBucket.Put(boltPathKey, []byte(filename)) + if err != nil { + return nil, nil, err + } + filenames = append(filenames, filename) + default: + return nil, nil, fmt.Errorf("unknown segment type: %T", seg) + } + // store current deleted bits + var roaringBuf bytes.Buffer + if segmentSnapshot.deleted != nil { + _, err = segmentSnapshot.deleted.WriteTo(&roaringBuf) + if err != nil { + return nil, nil, fmt.Errorf("error persisting roaring bytes: %v", err) + } + err = snapshotSegmentBucket.Put(boltDeletedKey, roaringBuf.Bytes()) + if err != nil { + return nil, nil, err + } + } + } + + return filenames, newSegmentPaths, nil +} + func (s *Scorch) persistSnapshotDirect(snapshot *IndexSnapshot) (err error) { // start a write transaction tx, err := s.rootBolt.Begin(true) @@ -441,95 +535,10 @@ func (s *Scorch) persistSnapshotDirect(snapshot *IndexSnapshot) (err error) { } }() - snapshotsBucket, err := tx.CreateBucketIfNotExists(boltSnapshotsBucket) + filenames, newSegmentPaths, err := prepareBoltSnapshot(snapshot, tx, s.path, s.segPlugin) if err != nil { return err } - newSnapshotKey := segment.EncodeUvarintAscending(nil, snapshot.epoch) - snapshotBucket, err := snapshotsBucket.CreateBucketIfNotExists(newSnapshotKey) - if err != nil { - return err - } - - // persist meta values - metaBucket, err := snapshotBucket.CreateBucketIfNotExists(boltMetaDataKey) - if err != nil { - return err - } - err = metaBucket.Put(boltMetaDataSegmentTypeKey, []byte(s.segPlugin.Type())) - if err != nil { - return err - } - buf := make([]byte, binary.MaxVarintLen32) - binary.BigEndian.PutUint32(buf, s.segPlugin.Version()) - err = metaBucket.Put(boltMetaDataSegmentVersionKey, buf) - if err != nil { - return err - } - - // persist internal values - internalBucket, err := snapshotBucket.CreateBucketIfNotExists(boltInternalKey) - if err != nil { - return err - } - // TODO optimize writing these in order? - for k, v := range snapshot.internal { - err = internalBucket.Put([]byte(k), v) - if err != nil { - return err - } - } - - var filenames []string - newSegmentPaths := make(map[uint64]string) - - // first ensure that each segment in this snapshot has been persisted - for _, segmentSnapshot := range snapshot.segment { - snapshotSegmentKey := segment.EncodeUvarintAscending(nil, segmentSnapshot.id) - snapshotSegmentBucket, err := snapshotBucket.CreateBucketIfNotExists(snapshotSegmentKey) - if err != nil { - return err - } - switch seg := segmentSnapshot.segment.(type) { - case segment.PersistedSegment: - path := seg.Path() - filename := strings.TrimPrefix(path, s.path+string(os.PathSeparator)) - err = snapshotSegmentBucket.Put(boltPathKey, []byte(filename)) - if err != nil { - return err - } - filenames = append(filenames, filename) - case segment.UnpersistedSegment: - // need to persist this to disk - filename := zapFileName(segmentSnapshot.id) - path := s.path + string(os.PathSeparator) + filename - err = seg.Persist(path) - if err != nil { - return fmt.Errorf("error persisting segment: %v", err) - } - newSegmentPaths[segmentSnapshot.id] = path - err = snapshotSegmentBucket.Put(boltPathKey, []byte(filename)) - if err != nil { - return err - } - filenames = append(filenames, filename) - - default: - return fmt.Errorf("unknown segment type: %T", seg) - } - // store current deleted bits - var roaringBuf bytes.Buffer - if segmentSnapshot.deleted != nil { - _, err = segmentSnapshot.deleted.WriteTo(&roaringBuf) - if err != nil { - return fmt.Errorf("error persisting roaring bytes: %v", err) - } - err = snapshotSegmentBucket.Put(boltDeletedKey, roaringBuf.Bytes()) - if err != nil { - return err - } - } - } // we need to swap in a new root only when we've persisted 1 or // more segments -- whereby the new root would have 1-for-1 @@ -780,12 +789,6 @@ func (s *Scorch) loadSegment(segmentBucket *bolt.Bucket) (*SegmentSnapshot, erro return rv, nil } -type uint64Descending []uint64 - -func (p uint64Descending) Len() int { return len(p) } -func (p uint64Descending) Less(i, j int) bool { return p[i] > p[j] } -func (p uint64Descending) Swap(i, j int) { p[i], p[j] = p[j], p[i] } - func (s *Scorch) removeOldData() { removed, err := s.removeOldBoltSnapshots() if err != nil { diff --git a/vendor/github.com/blevesearch/bleve/index/scorch/snapshot_rollback.go b/vendor/github.com/blevesearch/bleve/index/scorch/rollback.go similarity index 100% rename from vendor/github.com/blevesearch/bleve/index/scorch/snapshot_rollback.go rename to vendor/github.com/blevesearch/bleve/index/scorch/rollback.go diff --git a/vendor/github.com/blevesearch/bleve/index/scorch/scorch.go b/vendor/github.com/blevesearch/bleve/index/scorch/scorch.go index 80f9e3a7..c33f760e 100644 --- a/vendor/github.com/blevesearch/bleve/index/scorch/scorch.go +++ b/vendor/github.com/blevesearch/bleve/index/scorch/scorch.go @@ -77,6 +77,8 @@ type Scorch struct { pauseCount uint64 + forceMergeRequestCh chan *mergerCtrl + segPlugin segment.Plugin } @@ -101,18 +103,15 @@ func NewScorch(storeName string, nextSnapshotEpoch: 1, closeCh: make(chan struct{}), ineligibleForRemoval: map[string]bool{}, + forceMergeRequestCh: make(chan *mergerCtrl, 1), segPlugin: defaultSegmentPlugin, } - // check if the caller has requested a specific segment type/version - forcedSegmentVersion, ok := config["forceSegmentVersion"].(int) - if ok { - forcedSegmentType, ok2 := config["forceSegmentType"].(string) - if !ok2 { - return nil, fmt.Errorf( - "forceSegmentVersion set to %d, must also specify forceSegmentType", forcedSegmentVersion) - } - + forcedSegmentType, forcedSegmentVersion, err := configForceSegmentTypeVersion(config) + if err != nil { + return nil, err + } + if forcedSegmentType != "" && forcedSegmentVersion != 0 { err := rv.loadSegmentPlugin(forcedSegmentType, uint32(forcedSegmentVersion)) if err != nil { @@ -140,6 +139,22 @@ func NewScorch(storeName string, return rv, nil } +// configForceSegmentTypeVersion checks if the caller has requested a +// specific segment type/version +func configForceSegmentTypeVersion(config map[string]interface{}) (string, uint32, error) { + forcedSegmentVersion, ok := config["forceSegmentVersion"].(int) + if ok { + forcedSegmentType, ok2 := config["forceSegmentType"].(string) + if !ok2 { + return "", 0, fmt.Errorf( + "forceSegmentVersion set to %d, must also specify forceSegmentType", forcedSegmentVersion) + } + + return forcedSegmentType, uint32(forcedSegmentVersion), nil + } + return "", 0, nil +} + func (s *Scorch) paused() uint64 { s.pauseLock.Lock() pc := s.pauseCount @@ -181,7 +196,7 @@ func (s *Scorch) Open() error { } s.asyncTasks.Add(1) - go s.mainLoop() + go s.introducerLoop() if !s.readOnly && s.path != "" { s.asyncTasks.Add(1) @@ -241,6 +256,7 @@ func (s *Scorch) openBolt() error { s.introducerNotifier = make(chan *epochWatcher, 1) s.persisterNotifier = make(chan *epochWatcher, 1) s.closeCh = make(chan struct{}) + s.forceMergeRequestCh = make(chan *mergerCtrl, 1) if !s.readOnly && s.path != "" { err := s.removeOldZapFiles() // Before persister or merger create any new files. @@ -567,6 +583,10 @@ func (s *Scorch) StatsMap() map[string]interface{} { } func (s *Scorch) Analyze(d *document.Document) *index.AnalysisResult { + return analyze(d) +} + +func analyze(d *document.Document) *index.AnalysisResult { rv := &index.AnalysisResult{ Document: d, Analyzed: make([]analysis.TokenFrequencies, len(d.Fields)+len(d.CompositeFields)), diff --git a/vendor/github.com/blevesearch/bleve/index/scorch/segment_plugin.go b/vendor/github.com/blevesearch/bleve/index/scorch/segment_plugin.go index 01eda7fb..f5c39e06 100644 --- a/vendor/github.com/blevesearch/bleve/index/scorch/segment_plugin.go +++ b/vendor/github.com/blevesearch/bleve/index/scorch/segment_plugin.go @@ -21,6 +21,7 @@ import ( zapv11 "github.com/blevesearch/zap/v11" zapv12 "github.com/blevesearch/zap/v12" + zapv13 "github.com/blevesearch/zap/v13" ) var supportedSegmentPlugins map[string]map[uint32]segment.Plugin @@ -28,6 +29,7 @@ var defaultSegmentPlugin segment.Plugin func init() { ResetPlugins() + RegisterPlugin(zapv13.Plugin(), false) RegisterPlugin(zapv12.Plugin(), false) RegisterPlugin(zapv11.Plugin(), true) } @@ -60,18 +62,28 @@ func SupportedSegmentTypeVersions(typ string) (rv []uint32) { return rv } -func (s *Scorch) loadSegmentPlugin(forcedSegmentType string, - forcedSegmentVersion uint32) error { +func chooseSegmentPlugin(forcedSegmentType string, + forcedSegmentVersion uint32) (segment.Plugin, error) { if versions, ok := supportedSegmentPlugins[forcedSegmentType]; ok { if segPlugin, ok := versions[uint32(forcedSegmentVersion)]; ok { - s.segPlugin = segPlugin - return nil + return segPlugin, nil } - return fmt.Errorf( + return nil, fmt.Errorf( "unsupported version %d for segment type: %s, supported: %v", forcedSegmentVersion, forcedSegmentType, SupportedSegmentTypeVersions(forcedSegmentType)) } - return fmt.Errorf("unsupported segment type: %s, supported: %v", + return nil, fmt.Errorf("unsupported segment type: %s, supported: %v", forcedSegmentType, SupportedSegmentTypes()) } + +func (s *Scorch) loadSegmentPlugin(forcedSegmentType string, + forcedSegmentVersion uint32) error { + segPlugin, err := chooseSegmentPlugin(forcedSegmentType, + forcedSegmentVersion) + if err != nil { + return err + } + s.segPlugin = segPlugin + return nil +} diff --git a/vendor/github.com/blevesearch/bleve/index/scorch/stats.go b/vendor/github.com/blevesearch/bleve/index/scorch/stats.go index e638362a..2900ac0d 100644 --- a/vendor/github.com/blevesearch/bleve/index/scorch/stats.go +++ b/vendor/github.com/blevesearch/bleve/index/scorch/stats.go @@ -82,6 +82,9 @@ type Stats struct { TotFileMergeLoopErr uint64 TotFileMergeLoopEnd uint64 + TotFileMergeForceOpsStarted uint64 + TotFileMergeForceOpsCompleted uint64 + TotFileMergePlan uint64 TotFileMergePlanErr uint64 TotFileMergePlanNone uint64 diff --git a/vendor/github.com/blevesearch/bleve/index_alias_impl.go b/vendor/github.com/blevesearch/bleve/index_alias_impl.go index 4366fc79..bd5fabc8 100644 --- a/vendor/github.com/blevesearch/bleve/index_alias_impl.go +++ b/vendor/github.com/blevesearch/bleve/index_alias_impl.go @@ -44,6 +44,16 @@ func NewIndexAlias(indexes ...Index) *indexAliasImpl { } } +// VisitIndexes invokes the visit callback on every +// indexes included in the index alias. +func (i *indexAliasImpl) VisitIndexes(visit func(Index)) { + i.mutex.RLock() + for _, idx := range i.indexes { + visit(idx) + } + i.mutex.RUnlock() +} + func (i *indexAliasImpl) isAliasToSingleIndex() error { if len(i.indexes) < 1 { return ErrorAliasEmpty diff --git a/vendor/github.com/blevesearch/bleve/mapping/document.go b/vendor/github.com/blevesearch/bleve/mapping/document.go index 15cb6b5f..355a602e 100644 --- a/vendor/github.com/blevesearch/bleve/mapping/document.go +++ b/vendor/github.com/blevesearch/bleve/mapping/document.go @@ -251,7 +251,6 @@ func (dm *DocumentMapping) AddFieldMapping(fm *FieldMapping) { // UnmarshalJSON offers custom unmarshaling with optional strict validation func (dm *DocumentMapping) UnmarshalJSON(data []byte) error { - var tmp map[string]json.RawMessage err := json.Unmarshal(data, &tmp) if err != nil { @@ -308,8 +307,8 @@ func (dm *DocumentMapping) UnmarshalJSON(data []byte) error { } func (dm *DocumentMapping) defaultAnalyzerName(path []string) string { - rv := "" current := dm + rv := current.DefaultAnalyzer for _, pathElement := range path { var ok bool current, ok = current.Properties[pathElement] diff --git a/vendor/github.com/blevesearch/bleve/search/sort.go b/vendor/github.com/blevesearch/bleve/search/sort.go index 6e4ed80f..3dc11851 100644 --- a/vendor/github.com/blevesearch/bleve/search/sort.go +++ b/vendor/github.com/blevesearch/bleve/search/sort.go @@ -233,7 +233,11 @@ func (so SortOrder) Compare(cachedScoring, cachedDesc []bool, i, j *DocumentMatc } else { iVal := i.Sort[x] jVal := j.Sort[x] - c = strings.Compare(iVal, jVal) + if iVal < jVal { + c = -1 + } else if iVal > jVal { + c = 1 + } } if c == 0 { diff --git a/vendor/github.com/blevesearch/zap/v11/go.mod b/vendor/github.com/blevesearch/zap/v11/go.mod index a238188e..0af23c4e 100644 --- a/vendor/github.com/blevesearch/zap/v11/go.mod +++ b/vendor/github.com/blevesearch/zap/v11/go.mod @@ -4,7 +4,7 @@ go 1.12 require ( github.com/RoaringBitmap/roaring v0.4.21 - github.com/blevesearch/bleve v1.0.7 + github.com/blevesearch/bleve v1.0.8 github.com/blevesearch/mmap-go v1.0.2 github.com/couchbase/vellum v1.0.1 github.com/golang/snappy v0.0.1 diff --git a/vendor/github.com/blevesearch/zap/v12/go.mod b/vendor/github.com/blevesearch/zap/v12/go.mod index 24bbcb2c..b1e1814d 100644 --- a/vendor/github.com/blevesearch/zap/v12/go.mod +++ b/vendor/github.com/blevesearch/zap/v12/go.mod @@ -4,7 +4,7 @@ go 1.12 require ( github.com/RoaringBitmap/roaring v0.4.21 - github.com/blevesearch/bleve v1.0.7 + github.com/blevesearch/bleve v1.0.8 github.com/blevesearch/mmap-go v1.0.2 github.com/couchbase/vellum v1.0.1 github.com/golang/snappy v0.0.1 diff --git a/vendor/github.com/blevesearch/zap/v13/.gitignore b/vendor/github.com/blevesearch/zap/v13/.gitignore new file mode 100644 index 00000000..46d1cfad --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/.gitignore @@ -0,0 +1,12 @@ +#* +*.sublime-* +*~ +.#* +.project +.settings +**/.idea/ +**/*.iml +.DS_Store +/cmd/zap/zap +*.test +tags diff --git a/vendor/github.com/blevesearch/zap/v13/LICENSE b/vendor/github.com/blevesearch/zap/v13/LICENSE new file mode 100644 index 00000000..7a4a3ea2 --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/vendor/github.com/blevesearch/zap/v13/README.md b/vendor/github.com/blevesearch/zap/v13/README.md new file mode 100644 index 00000000..0facb669 --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/README.md @@ -0,0 +1,158 @@ +# zap file format + +Advanced ZAP File Format Documentation is [here](zap.md). + +The file is written in the reverse order that we typically access data. This helps us write in one pass since later sections of the file require file offsets of things we've already written. + +Current usage: + +- mmap the entire file +- crc-32 bytes and version are in fixed position at end of the file +- reading remainder of footer could be version specific +- remainder of footer gives us: + - 3 important offsets (docValue , fields index and stored data index) + - 2 important values (number of docs and chunk factor) +- field data is processed once and memoized onto the heap so that we never have to go back to disk for it +- access to stored data by doc number means first navigating to the stored data index, then accessing a fixed position offset into that slice, which gives us the actual address of the data. the first bytes of that section tell us the size of data so that we know where it ends. +- access to all other indexed data follows the following pattern: + - first know the field name -> convert to id + - next navigate to term dictionary for that field + - some operations stop here and do dictionary ops + - next use dictionary to navigate to posting list for a specific term + - walk posting list + - if necessary, walk posting details as we go + - if location info is desired, consult location bitmap to see if it is there + +## stored fields section + +- for each document + - preparation phase: + - produce a slice of metadata bytes and data bytes + - produce these slices in field id order + - field value is appended to the data slice + - metadata slice is varint encoded with the following values for each field value + - field id (uint16) + - field type (byte) + - field value start offset in uncompressed data slice (uint64) + - field value length (uint64) + - field number of array positions (uint64) + - one additional value for each array position (uint64) + - compress the data slice using snappy + - file writing phase: + - remember the start offset for this document + - write out meta data length (varint uint64) + - write out compressed data length (varint uint64) + - write out the metadata bytes + - write out the compressed data bytes + +## stored fields idx + +- for each document + - write start offset (remembered from previous section) of stored data (big endian uint64) + +With this index and a known document number, we have direct access to all the stored field data. + +## posting details (freq/norm) section + +- for each posting list + - produce a slice containing multiple consecutive chunks (each chunk is varint stream) + - produce a slice remembering offsets of where each chunk starts + - preparation phase: + - for each hit in the posting list + - if this hit is in next chunk close out encoding of last chunk and record offset start of next + - encode term frequency (uint64) + - encode norm factor (float32) + - file writing phase: + - remember start position for this posting list details + - write out number of chunks that follow (varint uint64) + - write out length of each chunk (each a varint uint64) + - write out the byte slice containing all the chunk data + +If you know the doc number you're interested in, this format lets you jump to the correct chunk (docNum/chunkFactor) directly and then seek within that chunk until you find it. + +## posting details (location) section + +- for each posting list + - produce a slice containing multiple consecutive chunks (each chunk is varint stream) + - produce a slice remembering offsets of where each chunk starts + - preparation phase: + - for each hit in the posting list + - if this hit is in next chunk close out encoding of last chunk and record offset start of next + - encode field (uint16) + - encode field pos (uint64) + - encode field start (uint64) + - encode field end (uint64) + - encode number of array positions to follow (uint64) + - encode each array position (each uint64) + - file writing phase: + - remember start position for this posting list details + - write out number of chunks that follow (varint uint64) + - write out length of each chunk (each a varint uint64) + - write out the byte slice containing all the chunk data + +If you know the doc number you're interested in, this format lets you jump to the correct chunk (docNum/chunkFactor) directly and then seek within that chunk until you find it. + +## postings list section + +- for each posting list + - preparation phase: + - encode roaring bitmap posting list to bytes (so we know the length) + - file writing phase: + - remember the start position for this posting list + - write freq/norm details offset (remembered from previous, as varint uint64) + - write location details offset (remembered from previous, as varint uint64) + - write length of encoded roaring bitmap + - write the serialized roaring bitmap data + +## dictionary + +- for each field + - preparation phase: + - encode vellum FST with dictionary data pointing to file offset of posting list (remembered from previous) + - file writing phase: + - remember the start position of this persistDictionary + - write length of vellum data (varint uint64) + - write out vellum data + +## fields section + +- for each field + - file writing phase: + - remember start offset for each field + - write dictionary address (remembered from previous) (varint uint64) + - write length of field name (varint uint64) + - write field name bytes + +## fields idx + +- for each field + - file writing phase: + - write big endian uint64 of start offset for each field + +NOTE: currently we don't know or record the length of this fields index. Instead we rely on the fact that we know it immediately precedes a footer of known size. + +## fields DocValue + +- for each field + - preparation phase: + - produce a slice containing multiple consecutive chunks, where each chunk is composed of a meta section followed by compressed columnar field data + - produce a slice remembering the length of each chunk + - file writing phase: + - remember the start position of this first field DocValue offset in the footer + - write out number of chunks that follow (varint uint64) + - write out length of each chunk (each a varint uint64) + - write out the byte slice containing all the chunk data + +NOTE: currently the meta header inside each chunk gives clue to the location offsets and size of the data pertaining to a given docID and any +read operation leverage that meta information to extract the document specific data from the file. + +## footer + +- file writing phase + - write number of docs (big endian uint64) + - write stored field index location (big endian uint64) + - write field index location (big endian uint64) + - write field docValue location (big endian uint64) + - write out chunk factor (big endian uint32) + - write out version (big endian uint32) + - write out file CRC of everything preceding this (big endian uint32) diff --git a/vendor/github.com/blevesearch/zap/v13/build.go b/vendor/github.com/blevesearch/zap/v13/build.go new file mode 100644 index 00000000..58d829f0 --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/build.go @@ -0,0 +1,156 @@ +// Copyright (c) 2017 Couchbase, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package zap + +import ( + "bufio" + "math" + "os" + + "github.com/couchbase/vellum" +) + +const Version uint32 = 13 + +const Type string = "zap" + +const fieldNotUninverted = math.MaxUint64 + +func (sb *SegmentBase) Persist(path string) error { + return PersistSegmentBase(sb, path) +} + +// PersistSegmentBase persists SegmentBase in the zap file format. +func PersistSegmentBase(sb *SegmentBase, path string) error { + flag := os.O_RDWR | os.O_CREATE + + f, err := os.OpenFile(path, flag, 0600) + if err != nil { + return err + } + + cleanup := func() { + _ = f.Close() + _ = os.Remove(path) + } + + br := bufio.NewWriter(f) + + _, err = br.Write(sb.mem) + if err != nil { + cleanup() + return err + } + + err = persistFooter(sb.numDocs, sb.storedIndexOffset, sb.fieldsIndexOffset, sb.docValueOffset, + sb.chunkMode, sb.memCRC, br) + if err != nil { + cleanup() + return err + } + + err = br.Flush() + if err != nil { + cleanup() + return err + } + + err = f.Sync() + if err != nil { + cleanup() + return err + } + + err = f.Close() + if err != nil { + cleanup() + return err + } + + return nil +} + +func persistStoredFieldValues(fieldID int, + storedFieldValues [][]byte, stf []byte, spf [][]uint64, + curr int, metaEncode varintEncoder, data []byte) ( + int, []byte, error) { + for i := 0; i < len(storedFieldValues); i++ { + // encode field + _, err := metaEncode(uint64(fieldID)) + if err != nil { + return 0, nil, err + } + // encode type + _, err = metaEncode(uint64(stf[i])) + if err != nil { + return 0, nil, err + } + // encode start offset + _, err = metaEncode(uint64(curr)) + if err != nil { + return 0, nil, err + } + // end len + _, err = metaEncode(uint64(len(storedFieldValues[i]))) + if err != nil { + return 0, nil, err + } + // encode number of array pos + _, err = metaEncode(uint64(len(spf[i]))) + if err != nil { + return 0, nil, err + } + // encode all array positions + for _, pos := range spf[i] { + _, err = metaEncode(pos) + if err != nil { + return 0, nil, err + } + } + + data = append(data, storedFieldValues[i]...) + curr += len(storedFieldValues[i]) + } + + return curr, data, nil +} + +func InitSegmentBase(mem []byte, memCRC uint32, chunkMode uint32, + fieldsMap map[string]uint16, fieldsInv []string, numDocs uint64, + storedIndexOffset uint64, fieldsIndexOffset uint64, docValueOffset uint64, + dictLocs []uint64) (*SegmentBase, error) { + sb := &SegmentBase{ + mem: mem, + memCRC: memCRC, + chunkMode: chunkMode, + fieldsMap: fieldsMap, + fieldsInv: fieldsInv, + numDocs: numDocs, + storedIndexOffset: storedIndexOffset, + fieldsIndexOffset: fieldsIndexOffset, + docValueOffset: docValueOffset, + dictLocs: dictLocs, + fieldDvReaders: make(map[uint16]*docValueReader), + fieldFSTs: make(map[uint16]*vellum.FST), + } + sb.updateSize() + + err := sb.loadDvReaders() + if err != nil { + return nil, err + } + + return sb, nil +} diff --git a/vendor/github.com/blevesearch/zap/v13/chunk.go b/vendor/github.com/blevesearch/zap/v13/chunk.go new file mode 100644 index 00000000..fe9f398d --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/chunk.go @@ -0,0 +1,54 @@ +// Copyright (c) 2019 Couchbase, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package zap + +import ( + "fmt" +) + +// LegacyChunkMode was the original chunk mode (always chunk size 1024) +// this mode is still used for chunking doc values. +var LegacyChunkMode uint32 = 1024 + +// DefaultChunkMode is the most recent improvement to chunking and should +// be used by default. +var DefaultChunkMode uint32 = 1025 + +func getChunkSize(chunkMode uint32, cardinality uint64, maxDocs uint64) (uint64, error) { + switch { + // any chunkMode <= 1024 will always chunk with chunkSize=chunkMode + case chunkMode <= 1024: + // legacy chunk size + return uint64(chunkMode), nil + + case chunkMode == 1025: + // attempt at simple improvement + // theory - the point of chunking is to put a bound on the maximum number of + // calls to Next() needed to find a random document. ie, you should be able + // to do one jump to the correct chunk, and then walk through at most + // chunk-size items + // previously 1024 was chosen as the chunk size, but this is particularly + // wasteful for low cardinality terms. the observation is that if there + // are less than 1024 items, why not put them all in one chunk, + // this way you'll still achieve the same goal of visiting at most + // chunk-size items. + // no attempt is made to tweak any other case + if cardinality <= 1024 { + return maxDocs, nil + } + return 1024, nil + } + return 0, fmt.Errorf("unknown chunk mode %d", chunkMode) +} diff --git a/vendor/github.com/blevesearch/zap/v13/contentcoder.go b/vendor/github.com/blevesearch/zap/v13/contentcoder.go new file mode 100644 index 00000000..c145b5a1 --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/contentcoder.go @@ -0,0 +1,243 @@ +// Copyright (c) 2017 Couchbase, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package zap + +import ( + "bytes" + "encoding/binary" + "io" + "reflect" + + "github.com/golang/snappy" +) + +var reflectStaticSizeMetaData int + +func init() { + var md MetaData + reflectStaticSizeMetaData = int(reflect.TypeOf(md).Size()) +} + +var termSeparator byte = 0xff +var termSeparatorSplitSlice = []byte{termSeparator} + +type chunkedContentCoder struct { + final []byte + chunkSize uint64 + currChunk uint64 + chunkLens []uint64 + + w io.Writer + progressiveWrite bool + + chunkMetaBuf bytes.Buffer + chunkBuf bytes.Buffer + + chunkMeta []MetaData + + compressed []byte // temp buf for snappy compression +} + +// MetaData represents the data information inside a +// chunk. +type MetaData struct { + DocNum uint64 // docNum of the data inside the chunk + DocDvOffset uint64 // offset of data inside the chunk for the given docid +} + +// newChunkedContentCoder returns a new chunk content coder which +// packs data into chunks based on the provided chunkSize +func newChunkedContentCoder(chunkSize uint64, maxDocNum uint64, + w io.Writer, progressiveWrite bool) *chunkedContentCoder { + total := maxDocNum/chunkSize + 1 + rv := &chunkedContentCoder{ + chunkSize: chunkSize, + chunkLens: make([]uint64, total), + chunkMeta: make([]MetaData, 0, total), + w: w, + progressiveWrite: progressiveWrite, + } + + return rv +} + +// Reset lets you reuse this chunked content coder. Buffers are reset +// and re used. You cannot change the chunk size. +func (c *chunkedContentCoder) Reset() { + c.currChunk = 0 + c.final = c.final[:0] + c.chunkBuf.Reset() + c.chunkMetaBuf.Reset() + for i := range c.chunkLens { + c.chunkLens[i] = 0 + } + c.chunkMeta = c.chunkMeta[:0] +} + +func (c *chunkedContentCoder) SetChunkSize(chunkSize uint64, maxDocNum uint64) { + total := int(maxDocNum/chunkSize + 1) + c.chunkSize = chunkSize + if cap(c.chunkLens) < total { + c.chunkLens = make([]uint64, total) + } else { + c.chunkLens = c.chunkLens[:total] + } + if cap(c.chunkMeta) < total { + c.chunkMeta = make([]MetaData, 0, total) + } +} + +// Close indicates you are done calling Add() this allows +// the final chunk to be encoded. +func (c *chunkedContentCoder) Close() error { + return c.flushContents() +} + +func (c *chunkedContentCoder) flushContents() error { + // flush the contents, with meta information at first + buf := make([]byte, binary.MaxVarintLen64) + n := binary.PutUvarint(buf, uint64(len(c.chunkMeta))) + _, err := c.chunkMetaBuf.Write(buf[:n]) + if err != nil { + return err + } + + // write out the metaData slice + for _, meta := range c.chunkMeta { + _, err := writeUvarints(&c.chunkMetaBuf, meta.DocNum, meta.DocDvOffset) + if err != nil { + return err + } + } + + // write the metadata to final data + metaData := c.chunkMetaBuf.Bytes() + c.final = append(c.final, c.chunkMetaBuf.Bytes()...) + // write the compressed data to the final data + c.compressed = snappy.Encode(c.compressed[:cap(c.compressed)], c.chunkBuf.Bytes()) + c.final = append(c.final, c.compressed...) + + c.chunkLens[c.currChunk] = uint64(len(c.compressed) + len(metaData)) + + if c.progressiveWrite { + _, err := c.w.Write(c.final) + if err != nil { + return err + } + c.final = c.final[:0] + } + + return nil +} + +// Add encodes the provided byte slice into the correct chunk for the provided +// doc num. You MUST call Add() with increasing docNums. +func (c *chunkedContentCoder) Add(docNum uint64, vals []byte) error { + chunk := docNum / c.chunkSize + if chunk != c.currChunk { + // flush out the previous chunk details + err := c.flushContents() + if err != nil { + return err + } + // clearing the chunk specific meta for next chunk + c.chunkBuf.Reset() + c.chunkMetaBuf.Reset() + c.chunkMeta = c.chunkMeta[:0] + c.currChunk = chunk + } + + // get the starting offset for this doc + dvOffset := c.chunkBuf.Len() + dvSize, err := c.chunkBuf.Write(vals) + if err != nil { + return err + } + + c.chunkMeta = append(c.chunkMeta, MetaData{ + DocNum: docNum, + DocDvOffset: uint64(dvOffset + dvSize), + }) + return nil +} + +// Write commits all the encoded chunked contents to the provided writer. +// +// | ..... data ..... | chunk offsets (varints) +// | position of chunk offsets (uint64) | number of offsets (uint64) | +// +func (c *chunkedContentCoder) Write() (int, error) { + var tw int + + if c.final != nil { + // write out the data section first + nw, err := c.w.Write(c.final) + tw += nw + if err != nil { + return tw, err + } + } + + chunkOffsetsStart := uint64(tw) + + if cap(c.final) < binary.MaxVarintLen64 { + c.final = make([]byte, binary.MaxVarintLen64) + } else { + c.final = c.final[0:binary.MaxVarintLen64] + } + chunkOffsets := modifyLengthsToEndOffsets(c.chunkLens) + // write out the chunk offsets + for _, chunkOffset := range chunkOffsets { + n := binary.PutUvarint(c.final, chunkOffset) + nw, err := c.w.Write(c.final[:n]) + tw += nw + if err != nil { + return tw, err + } + } + + chunkOffsetsLen := uint64(tw) - chunkOffsetsStart + + c.final = c.final[0:8] + // write out the length of chunk offsets + binary.BigEndian.PutUint64(c.final, chunkOffsetsLen) + nw, err := c.w.Write(c.final) + tw += nw + if err != nil { + return tw, err + } + + // write out the number of chunks + binary.BigEndian.PutUint64(c.final, uint64(len(c.chunkLens))) + nw, err = c.w.Write(c.final) + tw += nw + if err != nil { + return tw, err + } + + c.final = c.final[:0] + + return tw, nil +} + +// ReadDocValueBoundary elicits the start, end offsets from a +// metaData header slice +func ReadDocValueBoundary(chunk int, metaHeaders []MetaData) (uint64, uint64) { + var start uint64 + if chunk > 0 { + start = metaHeaders[chunk-1].DocDvOffset + } + return start, metaHeaders[chunk].DocDvOffset +} diff --git a/vendor/github.com/blevesearch/zap/v13/count.go b/vendor/github.com/blevesearch/zap/v13/count.go new file mode 100644 index 00000000..50290f88 --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/count.go @@ -0,0 +1,61 @@ +// Copyright (c) 2017 Couchbase, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package zap + +import ( + "hash/crc32" + "io" + + "github.com/blevesearch/bleve/index/scorch/segment" +) + +// CountHashWriter is a wrapper around a Writer which counts the number of +// bytes which have been written and computes a crc32 hash +type CountHashWriter struct { + w io.Writer + crc uint32 + n int + s segment.StatsReporter +} + +// NewCountHashWriter returns a CountHashWriter which wraps the provided Writer +func NewCountHashWriter(w io.Writer) *CountHashWriter { + return &CountHashWriter{w: w} +} + +func NewCountHashWriterWithStatsReporter(w io.Writer, s segment.StatsReporter) *CountHashWriter { + return &CountHashWriter{w: w, s: s} +} + +// Write writes the provided bytes to the wrapped writer and counts the bytes +func (c *CountHashWriter) Write(b []byte) (int, error) { + n, err := c.w.Write(b) + c.crc = crc32.Update(c.crc, crc32.IEEETable, b[:n]) + c.n += n + if c.s != nil { + c.s.ReportBytesWritten(uint64(n)) + } + return n, err +} + +// Count returns the number of bytes written +func (c *CountHashWriter) Count() int { + return c.n +} + +// Sum32 returns the CRC-32 hash of the content written to this writer +func (c *CountHashWriter) Sum32() uint32 { + return c.crc +} diff --git a/vendor/github.com/blevesearch/zap/v13/dict.go b/vendor/github.com/blevesearch/zap/v13/dict.go new file mode 100644 index 00000000..ad4a8f8d --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/dict.go @@ -0,0 +1,263 @@ +// Copyright (c) 2017 Couchbase, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package zap + +import ( + "bytes" + "fmt" + + "github.com/RoaringBitmap/roaring" + "github.com/blevesearch/bleve/index" + "github.com/blevesearch/bleve/index/scorch/segment" + "github.com/couchbase/vellum" +) + +// Dictionary is the zap representation of the term dictionary +type Dictionary struct { + sb *SegmentBase + field string + fieldID uint16 + fst *vellum.FST + fstReader *vellum.Reader +} + +// PostingsList returns the postings list for the specified term +func (d *Dictionary) PostingsList(term []byte, except *roaring.Bitmap, + prealloc segment.PostingsList) (segment.PostingsList, error) { + var preallocPL *PostingsList + pl, ok := prealloc.(*PostingsList) + if ok && pl != nil { + preallocPL = pl + } + return d.postingsList(term, except, preallocPL) +} + +func (d *Dictionary) postingsList(term []byte, except *roaring.Bitmap, rv *PostingsList) (*PostingsList, error) { + if d.fstReader == nil { + if rv == nil || rv == emptyPostingsList { + return emptyPostingsList, nil + } + return d.postingsListInit(rv, except), nil + } + + postingsOffset, exists, err := d.fstReader.Get(term) + if err != nil { + return nil, fmt.Errorf("vellum err: %v", err) + } + if !exists { + if rv == nil || rv == emptyPostingsList { + return emptyPostingsList, nil + } + return d.postingsListInit(rv, except), nil + } + + return d.postingsListFromOffset(postingsOffset, except, rv) +} + +func (d *Dictionary) postingsListFromOffset(postingsOffset uint64, except *roaring.Bitmap, rv *PostingsList) (*PostingsList, error) { + rv = d.postingsListInit(rv, except) + + err := rv.read(postingsOffset, d) + if err != nil { + return nil, err + } + + return rv, nil +} + +func (d *Dictionary) postingsListInit(rv *PostingsList, except *roaring.Bitmap) *PostingsList { + if rv == nil || rv == emptyPostingsList { + rv = &PostingsList{} + } else { + postings := rv.postings + if postings != nil { + postings.Clear() + } + + *rv = PostingsList{} // clear the struct + + rv.postings = postings + } + rv.sb = d.sb + rv.except = except + return rv +} + +func (d *Dictionary) Contains(key []byte) (bool, error) { + return d.fst.Contains(key) +} + +// Iterator returns an iterator for this dictionary +func (d *Dictionary) Iterator() segment.DictionaryIterator { + rv := &DictionaryIterator{ + d: d, + } + + if d.fst != nil { + itr, err := d.fst.Iterator(nil, nil) + if err == nil { + rv.itr = itr + } else if err != vellum.ErrIteratorDone { + rv.err = err + } + } + + return rv +} + +// PrefixIterator returns an iterator which only visits terms having the +// the specified prefix +func (d *Dictionary) PrefixIterator(prefix string) segment.DictionaryIterator { + rv := &DictionaryIterator{ + d: d, + } + + kBeg := []byte(prefix) + kEnd := segment.IncrementBytes(kBeg) + + if d.fst != nil { + itr, err := d.fst.Iterator(kBeg, kEnd) + if err == nil { + rv.itr = itr + } else if err != vellum.ErrIteratorDone { + rv.err = err + } + } + + return rv +} + +// RangeIterator returns an iterator which only visits terms between the +// start and end terms. NOTE: bleve.index API specifies the end is inclusive. +func (d *Dictionary) RangeIterator(start, end string) segment.DictionaryIterator { + rv := &DictionaryIterator{ + d: d, + } + + // need to increment the end position to be inclusive + var endBytes []byte + if len(end) > 0 { + endBytes = []byte(end) + if endBytes[len(endBytes)-1] < 0xff { + endBytes[len(endBytes)-1]++ + } else { + endBytes = append(endBytes, 0xff) + } + } + + if d.fst != nil { + itr, err := d.fst.Iterator([]byte(start), endBytes) + if err == nil { + rv.itr = itr + } else if err != vellum.ErrIteratorDone { + rv.err = err + } + } + + return rv +} + +// AutomatonIterator returns an iterator which only visits terms +// having the the vellum automaton and start/end key range +func (d *Dictionary) AutomatonIterator(a vellum.Automaton, + startKeyInclusive, endKeyExclusive []byte) segment.DictionaryIterator { + rv := &DictionaryIterator{ + d: d, + } + + if d.fst != nil { + itr, err := d.fst.Search(a, startKeyInclusive, endKeyExclusive) + if err == nil { + rv.itr = itr + } else if err != vellum.ErrIteratorDone { + rv.err = err + } + } + + return rv +} + +func (d *Dictionary) OnlyIterator(onlyTerms [][]byte, + includeCount bool) segment.DictionaryIterator { + + rv := &DictionaryIterator{ + d: d, + omitCount: !includeCount, + } + + var buf bytes.Buffer + builder, err := vellum.New(&buf, nil) + if err != nil { + rv.err = err + return rv + } + for _, term := range onlyTerms { + err = builder.Insert(term, 0) + if err != nil { + rv.err = err + return rv + } + } + err = builder.Close() + if err != nil { + rv.err = err + return rv + } + + onlyFST, err := vellum.Load(buf.Bytes()) + if err != nil { + rv.err = err + return rv + } + + itr, err := d.fst.Search(onlyFST, nil, nil) + if err == nil { + rv.itr = itr + } else if err != vellum.ErrIteratorDone { + rv.err = err + } + + return rv +} + +// DictionaryIterator is an iterator for term dictionary +type DictionaryIterator struct { + d *Dictionary + itr vellum.Iterator + err error + tmp PostingsList + entry index.DictEntry + omitCount bool +} + +// Next returns the next entry in the dictionary +func (i *DictionaryIterator) Next() (*index.DictEntry, error) { + if i.err != nil && i.err != vellum.ErrIteratorDone { + return nil, i.err + } else if i.itr == nil || i.err == vellum.ErrIteratorDone { + return nil, nil + } + term, postingsOffset := i.itr.Current() + i.entry.Term = string(term) + if !i.omitCount { + i.err = i.tmp.read(postingsOffset, i.d) + if i.err != nil { + return nil, i.err + } + i.entry.Count = i.tmp.Count() + } + i.err = i.itr.Next() + return &i.entry, nil +} diff --git a/vendor/github.com/blevesearch/zap/v13/docvalues.go b/vendor/github.com/blevesearch/zap/v13/docvalues.go new file mode 100644 index 00000000..793797bd --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/docvalues.go @@ -0,0 +1,312 @@ +// Copyright (c) 2017 Couchbase, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package zap + +import ( + "bytes" + "encoding/binary" + "fmt" + "math" + "reflect" + "sort" + + "github.com/blevesearch/bleve/index" + "github.com/blevesearch/bleve/index/scorch/segment" + "github.com/blevesearch/bleve/size" + "github.com/golang/snappy" +) + +var reflectStaticSizedocValueReader int + +func init() { + var dvi docValueReader + reflectStaticSizedocValueReader = int(reflect.TypeOf(dvi).Size()) +} + +type docNumTermsVisitor func(docNum uint64, terms []byte) error + +type docVisitState struct { + dvrs map[uint16]*docValueReader + segment *SegmentBase +} + +type docValueReader struct { + field string + curChunkNum uint64 + chunkOffsets []uint64 + dvDataLoc uint64 + curChunkHeader []MetaData + curChunkData []byte // compressed data cache + uncompressed []byte // temp buf for snappy decompression +} + +func (di *docValueReader) size() int { + return reflectStaticSizedocValueReader + size.SizeOfPtr + + len(di.field) + + len(di.chunkOffsets)*size.SizeOfUint64 + + len(di.curChunkHeader)*reflectStaticSizeMetaData + + len(di.curChunkData) +} + +func (di *docValueReader) cloneInto(rv *docValueReader) *docValueReader { + if rv == nil { + rv = &docValueReader{} + } + + rv.field = di.field + rv.curChunkNum = math.MaxUint64 + rv.chunkOffsets = di.chunkOffsets // immutable, so it's sharable + rv.dvDataLoc = di.dvDataLoc + rv.curChunkHeader = rv.curChunkHeader[:0] + rv.curChunkData = nil + rv.uncompressed = rv.uncompressed[:0] + + return rv +} + +func (di *docValueReader) curChunkNumber() uint64 { + return di.curChunkNum +} + +func (s *SegmentBase) loadFieldDocValueReader(field string, + fieldDvLocStart, fieldDvLocEnd uint64) (*docValueReader, error) { + // get the docValue offset for the given fields + if fieldDvLocStart == fieldNotUninverted { + // no docValues found, nothing to do + return nil, nil + } + + // read the number of chunks, and chunk offsets position + var numChunks, chunkOffsetsPosition uint64 + + if fieldDvLocEnd-fieldDvLocStart > 16 { + numChunks = binary.BigEndian.Uint64(s.mem[fieldDvLocEnd-8 : fieldDvLocEnd]) + // read the length of chunk offsets + chunkOffsetsLen := binary.BigEndian.Uint64(s.mem[fieldDvLocEnd-16 : fieldDvLocEnd-8]) + // acquire position of chunk offsets + chunkOffsetsPosition = (fieldDvLocEnd - 16) - chunkOffsetsLen + } else { + return nil, fmt.Errorf("loadFieldDocValueReader: fieldDvLoc too small: %d-%d", fieldDvLocEnd, fieldDvLocStart) + } + + fdvIter := &docValueReader{ + curChunkNum: math.MaxUint64, + field: field, + chunkOffsets: make([]uint64, int(numChunks)), + } + + // read the chunk offsets + var offset uint64 + for i := 0; i < int(numChunks); i++ { + loc, read := binary.Uvarint(s.mem[chunkOffsetsPosition+offset : chunkOffsetsPosition+offset+binary.MaxVarintLen64]) + if read <= 0 { + return nil, fmt.Errorf("corrupted chunk offset during segment load") + } + fdvIter.chunkOffsets[i] = loc + offset += uint64(read) + } + + // set the data offset + fdvIter.dvDataLoc = fieldDvLocStart + + return fdvIter, nil +} + +func (di *docValueReader) loadDvChunk(chunkNumber uint64, s *SegmentBase) error { + // advance to the chunk where the docValues + // reside for the given docNum + destChunkDataLoc, curChunkEnd := di.dvDataLoc, di.dvDataLoc + start, end := readChunkBoundary(int(chunkNumber), di.chunkOffsets) + if start >= end { + di.curChunkHeader = di.curChunkHeader[:0] + di.curChunkData = nil + di.curChunkNum = chunkNumber + di.uncompressed = di.uncompressed[:0] + return nil + } + + destChunkDataLoc += start + curChunkEnd += end + + // read the number of docs reside in the chunk + numDocs, read := binary.Uvarint(s.mem[destChunkDataLoc : destChunkDataLoc+binary.MaxVarintLen64]) + if read <= 0 { + return fmt.Errorf("failed to read the chunk") + } + chunkMetaLoc := destChunkDataLoc + uint64(read) + + offset := uint64(0) + if cap(di.curChunkHeader) < int(numDocs) { + di.curChunkHeader = make([]MetaData, int(numDocs)) + } else { + di.curChunkHeader = di.curChunkHeader[:int(numDocs)] + } + for i := 0; i < int(numDocs); i++ { + di.curChunkHeader[i].DocNum, read = binary.Uvarint(s.mem[chunkMetaLoc+offset : chunkMetaLoc+offset+binary.MaxVarintLen64]) + offset += uint64(read) + di.curChunkHeader[i].DocDvOffset, read = binary.Uvarint(s.mem[chunkMetaLoc+offset : chunkMetaLoc+offset+binary.MaxVarintLen64]) + offset += uint64(read) + } + + compressedDataLoc := chunkMetaLoc + offset + dataLength := curChunkEnd - compressedDataLoc + di.curChunkData = s.mem[compressedDataLoc : compressedDataLoc+dataLength] + di.curChunkNum = chunkNumber + di.uncompressed = di.uncompressed[:0] + return nil +} + +func (di *docValueReader) iterateAllDocValues(s *SegmentBase, visitor docNumTermsVisitor) error { + for i := 0; i < len(di.chunkOffsets); i++ { + err := di.loadDvChunk(uint64(i), s) + if err != nil { + return err + } + if di.curChunkData == nil || len(di.curChunkHeader) == 0 { + continue + } + + // uncompress the already loaded data + uncompressed, err := snappy.Decode(di.uncompressed[:cap(di.uncompressed)], di.curChunkData) + if err != nil { + return err + } + di.uncompressed = uncompressed + + start := uint64(0) + for _, entry := range di.curChunkHeader { + err = visitor(entry.DocNum, uncompressed[start:entry.DocDvOffset]) + if err != nil { + return err + } + + start = entry.DocDvOffset + } + } + + return nil +} + +func (di *docValueReader) visitDocValues(docNum uint64, + visitor index.DocumentFieldTermVisitor) error { + // binary search the term locations for the docNum + start, end := di.getDocValueLocs(docNum) + if start == math.MaxUint64 || end == math.MaxUint64 || start == end { + return nil + } + + var uncompressed []byte + var err error + // use the uncompressed copy if available + if len(di.uncompressed) > 0 { + uncompressed = di.uncompressed + } else { + // uncompress the already loaded data + uncompressed, err = snappy.Decode(di.uncompressed[:cap(di.uncompressed)], di.curChunkData) + if err != nil { + return err + } + di.uncompressed = uncompressed + } + + // pick the terms for the given docNum + uncompressed = uncompressed[start:end] + for { + i := bytes.Index(uncompressed, termSeparatorSplitSlice) + if i < 0 { + break + } + + visitor(di.field, uncompressed[0:i]) + uncompressed = uncompressed[i+1:] + } + + return nil +} + +func (di *docValueReader) getDocValueLocs(docNum uint64) (uint64, uint64) { + i := sort.Search(len(di.curChunkHeader), func(i int) bool { + return di.curChunkHeader[i].DocNum >= docNum + }) + if i < len(di.curChunkHeader) && di.curChunkHeader[i].DocNum == docNum { + return ReadDocValueBoundary(i, di.curChunkHeader) + } + return math.MaxUint64, math.MaxUint64 +} + +// VisitDocumentFieldTerms is an implementation of the +// DocumentFieldTermVisitable interface +func (s *SegmentBase) VisitDocumentFieldTerms(localDocNum uint64, fields []string, + visitor index.DocumentFieldTermVisitor, dvsIn segment.DocVisitState) ( + segment.DocVisitState, error) { + dvs, ok := dvsIn.(*docVisitState) + if !ok || dvs == nil { + dvs = &docVisitState{} + } else { + if dvs.segment != s { + dvs.segment = s + dvs.dvrs = nil + } + } + + var fieldIDPlus1 uint16 + if dvs.dvrs == nil { + dvs.dvrs = make(map[uint16]*docValueReader, len(fields)) + for _, field := range fields { + if fieldIDPlus1, ok = s.fieldsMap[field]; !ok { + continue + } + fieldID := fieldIDPlus1 - 1 + if dvIter, exists := s.fieldDvReaders[fieldID]; exists && + dvIter != nil { + dvs.dvrs[fieldID] = dvIter.cloneInto(dvs.dvrs[fieldID]) + } + } + } + + // find the chunkNumber where the docValues are stored + // NOTE: doc values continue to use legacy chunk mode + chunkFactor, err := getChunkSize(LegacyChunkMode, 0, 0) + if err != nil { + return nil, err + } + docInChunk := localDocNum / chunkFactor + var dvr *docValueReader + for _, field := range fields { + if fieldIDPlus1, ok = s.fieldsMap[field]; !ok { + continue + } + fieldID := fieldIDPlus1 - 1 + if dvr, ok = dvs.dvrs[fieldID]; ok && dvr != nil { + // check if the chunk is already loaded + if docInChunk != dvr.curChunkNumber() { + err := dvr.loadDvChunk(docInChunk, s) + if err != nil { + return dvs, err + } + } + + _ = dvr.visitDocValues(localDocNum, visitor) + } + } + return dvs, nil +} + +// VisitableDocValueFields returns the list of fields with +// persisted doc value terms ready to be visitable using the +// VisitDocumentFieldTerms method. +func (s *SegmentBase) VisitableDocValueFields() ([]string, error) { + return s.fieldDvNames, nil +} diff --git a/vendor/github.com/blevesearch/zap/v13/enumerator.go b/vendor/github.com/blevesearch/zap/v13/enumerator.go new file mode 100644 index 00000000..bc5b7e62 --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/enumerator.go @@ -0,0 +1,138 @@ +// Copyright (c) 2018 Couchbase, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package zap + +import ( + "bytes" + + "github.com/couchbase/vellum" +) + +// enumerator provides an ordered traversal of multiple vellum +// iterators. Like JOIN of iterators, the enumerator produces a +// sequence of (key, iteratorIndex, value) tuples, sorted by key ASC, +// then iteratorIndex ASC, where the same key might be seen or +// repeated across multiple child iterators. +type enumerator struct { + itrs []vellum.Iterator + currKs [][]byte + currVs []uint64 + + lowK []byte + lowIdxs []int + lowCurr int +} + +// newEnumerator returns a new enumerator over the vellum Iterators +func newEnumerator(itrs []vellum.Iterator) (*enumerator, error) { + rv := &enumerator{ + itrs: itrs, + currKs: make([][]byte, len(itrs)), + currVs: make([]uint64, len(itrs)), + lowIdxs: make([]int, 0, len(itrs)), + } + for i, itr := range rv.itrs { + rv.currKs[i], rv.currVs[i] = itr.Current() + } + rv.updateMatches(false) + if rv.lowK == nil && len(rv.lowIdxs) == 0 { + return rv, vellum.ErrIteratorDone + } + return rv, nil +} + +// updateMatches maintains the low key matches based on the currKs +func (m *enumerator) updateMatches(skipEmptyKey bool) { + m.lowK = nil + m.lowIdxs = m.lowIdxs[:0] + m.lowCurr = 0 + + for i, key := range m.currKs { + if (key == nil && m.currVs[i] == 0) || // in case of empty iterator + (len(key) == 0 && skipEmptyKey) { // skip empty keys + continue + } + + cmp := bytes.Compare(key, m.lowK) + if cmp < 0 || len(m.lowIdxs) == 0 { + // reached a new low + m.lowK = key + m.lowIdxs = m.lowIdxs[:0] + m.lowIdxs = append(m.lowIdxs, i) + } else if cmp == 0 { + m.lowIdxs = append(m.lowIdxs, i) + } + } +} + +// Current returns the enumerator's current key, iterator-index, and +// value. If the enumerator is not pointing at a valid value (because +// Next returned an error previously), Current will return nil,0,0. +func (m *enumerator) Current() ([]byte, int, uint64) { + var i int + var v uint64 + if m.lowCurr < len(m.lowIdxs) { + i = m.lowIdxs[m.lowCurr] + v = m.currVs[i] + } + return m.lowK, i, v +} + +// GetLowIdxsAndValues will return all of the iterator indices +// which point to the current key, and their corresponding +// values. This can be used by advanced caller which may need +// to peek into these other sets of data before processing. +func (m *enumerator) GetLowIdxsAndValues() ([]int, []uint64) { + values := make([]uint64, 0, len(m.lowIdxs)) + for _, idx := range m.lowIdxs { + values = append(values, m.currVs[idx]) + } + return m.lowIdxs, values +} + +// Next advances the enumerator to the next key/iterator/value result, +// else vellum.ErrIteratorDone is returned. +func (m *enumerator) Next() error { + m.lowCurr += 1 + if m.lowCurr >= len(m.lowIdxs) { + // move all the current low iterators forwards + for _, vi := range m.lowIdxs { + err := m.itrs[vi].Next() + if err != nil && err != vellum.ErrIteratorDone { + return err + } + m.currKs[vi], m.currVs[vi] = m.itrs[vi].Current() + } + // can skip any empty keys encountered at this point + m.updateMatches(true) + } + if m.lowK == nil && len(m.lowIdxs) == 0 { + return vellum.ErrIteratorDone + } + return nil +} + +// Close all the underlying Iterators. The first error, if any, will +// be returned. +func (m *enumerator) Close() error { + var rv error + for _, itr := range m.itrs { + err := itr.Close() + if rv == nil { + rv = err + } + } + return rv +} diff --git a/vendor/github.com/blevesearch/zap/v13/go.mod b/vendor/github.com/blevesearch/zap/v13/go.mod new file mode 100644 index 00000000..548648a1 --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/go.mod @@ -0,0 +1,12 @@ +module github.com/blevesearch/zap/v13 + +go 1.12 + +require ( + github.com/RoaringBitmap/roaring v0.4.21 + github.com/blevesearch/bleve v1.0.8 + github.com/blevesearch/mmap-go v1.0.2 + github.com/couchbase/vellum v1.0.1 + github.com/golang/snappy v0.0.1 + github.com/spf13/cobra v0.0.5 +) diff --git a/vendor/github.com/blevesearch/zap/v13/intDecoder.go b/vendor/github.com/blevesearch/zap/v13/intDecoder.go new file mode 100644 index 00000000..4cd008ff --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/intDecoder.go @@ -0,0 +1,111 @@ +// Copyright (c) 2019 Couchbase, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package zap + +import ( + "encoding/binary" + "fmt" + + "github.com/blevesearch/bleve/index/scorch/segment" +) + +type chunkedIntDecoder struct { + startOffset uint64 + dataStartOffset uint64 + chunkOffsets []uint64 + curChunkBytes []byte + data []byte + r *segment.MemUvarintReader +} + +func newChunkedIntDecoder(buf []byte, offset uint64) *chunkedIntDecoder { + rv := &chunkedIntDecoder{startOffset: offset, data: buf} + var n, numChunks uint64 + var read int + if offset == termNotEncoded { + numChunks = 0 + } else { + numChunks, read = binary.Uvarint(buf[offset+n : offset+n+binary.MaxVarintLen64]) + } + + n += uint64(read) + if cap(rv.chunkOffsets) >= int(numChunks) { + rv.chunkOffsets = rv.chunkOffsets[:int(numChunks)] + } else { + rv.chunkOffsets = make([]uint64, int(numChunks)) + } + for i := 0; i < int(numChunks); i++ { + rv.chunkOffsets[i], read = binary.Uvarint(buf[offset+n : offset+n+binary.MaxVarintLen64]) + n += uint64(read) + } + rv.dataStartOffset = offset + n + return rv +} + +func (d *chunkedIntDecoder) loadChunk(chunk int) error { + if d.startOffset == termNotEncoded { + d.r = segment.NewMemUvarintReader([]byte(nil)) + return nil + } + + if chunk >= len(d.chunkOffsets) { + return fmt.Errorf("tried to load freq chunk that doesn't exist %d/(%d)", + chunk, len(d.chunkOffsets)) + } + + end, start := d.dataStartOffset, d.dataStartOffset + s, e := readChunkBoundary(chunk, d.chunkOffsets) + start += s + end += e + d.curChunkBytes = d.data[start:end] + if d.r == nil { + d.r = segment.NewMemUvarintReader(d.curChunkBytes) + } else { + d.r.Reset(d.curChunkBytes) + } + + return nil +} + +func (d *chunkedIntDecoder) reset() { + d.startOffset = 0 + d.dataStartOffset = 0 + d.chunkOffsets = d.chunkOffsets[:0] + d.curChunkBytes = d.curChunkBytes[:0] + d.data = d.data[:0] + if d.r != nil { + d.r.Reset([]byte(nil)) + } +} + +func (d *chunkedIntDecoder) isNil() bool { + return d.curChunkBytes == nil +} + +func (d *chunkedIntDecoder) readUvarint() (uint64, error) { + return d.r.ReadUvarint() +} + +func (d *chunkedIntDecoder) SkipUvarint() { + d.r.SkipUvarint() +} + +func (d *chunkedIntDecoder) SkipBytes(count int) { + d.r.SkipBytes(count) +} + +func (d *chunkedIntDecoder) Len() int { + return d.r.Len() +} diff --git a/vendor/github.com/blevesearch/zap/v13/intcoder.go b/vendor/github.com/blevesearch/zap/v13/intcoder.go new file mode 100644 index 00000000..c3c488fb --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/intcoder.go @@ -0,0 +1,206 @@ +// Copyright (c) 2017 Couchbase, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package zap + +import ( + "bytes" + "encoding/binary" + "io" +) + +// We can safely use 0 to represent termNotEncoded since 0 +// could never be a valid address for term location information. +// (stored field index is always non-empty and earlier in the +// file) +const termNotEncoded = 0 + +type chunkedIntCoder struct { + final []byte + chunkSize uint64 + chunkBuf bytes.Buffer + chunkLens []uint64 + currChunk uint64 + + buf []byte +} + +// newChunkedIntCoder returns a new chunk int coder which packs data into +// chunks based on the provided chunkSize and supports up to the specified +// maxDocNum +func newChunkedIntCoder(chunkSize uint64, maxDocNum uint64) *chunkedIntCoder { + total := maxDocNum/chunkSize + 1 + rv := &chunkedIntCoder{ + chunkSize: chunkSize, + chunkLens: make([]uint64, total), + final: make([]byte, 0, 64), + } + + return rv +} + +// Reset lets you reuse this chunked int coder. buffers are reset and reused +// from previous use. you cannot change the chunk size or max doc num. +func (c *chunkedIntCoder) Reset() { + c.final = c.final[:0] + c.chunkBuf.Reset() + c.currChunk = 0 + for i := range c.chunkLens { + c.chunkLens[i] = 0 + } +} + +// SetChunkSize changes the chunk size. It is only valid to do so +// with a new chunkedIntCoder, or immediately after calling Reset() +func (c *chunkedIntCoder) SetChunkSize(chunkSize uint64, maxDocNum uint64) { + total := int(maxDocNum/chunkSize + 1) + c.chunkSize = chunkSize + if cap(c.chunkLens) < total { + c.chunkLens = make([]uint64, total) + } else { + c.chunkLens = c.chunkLens[:total] + } +} + +// Add encodes the provided integers into the correct chunk for the provided +// doc num. You MUST call Add() with increasing docNums. +func (c *chunkedIntCoder) Add(docNum uint64, vals ...uint64) error { + chunk := docNum / c.chunkSize + if chunk != c.currChunk { + // starting a new chunk + c.Close() + c.chunkBuf.Reset() + c.currChunk = chunk + } + + if len(c.buf) < binary.MaxVarintLen64 { + c.buf = make([]byte, binary.MaxVarintLen64) + } + + for _, val := range vals { + wb := binary.PutUvarint(c.buf, val) + _, err := c.chunkBuf.Write(c.buf[:wb]) + if err != nil { + return err + } + } + + return nil +} + +func (c *chunkedIntCoder) AddBytes(docNum uint64, buf []byte) error { + chunk := docNum / c.chunkSize + if chunk != c.currChunk { + // starting a new chunk + c.Close() + c.chunkBuf.Reset() + c.currChunk = chunk + } + + _, err := c.chunkBuf.Write(buf) + return err +} + +// Close indicates you are done calling Add() this allows the final chunk +// to be encoded. +func (c *chunkedIntCoder) Close() { + encodingBytes := c.chunkBuf.Bytes() + c.chunkLens[c.currChunk] = uint64(len(encodingBytes)) + c.final = append(c.final, encodingBytes...) + c.currChunk = uint64(cap(c.chunkLens)) // sentinel to detect double close +} + +// Write commits all the encoded chunked integers to the provided writer. +func (c *chunkedIntCoder) Write(w io.Writer) (int, error) { + bufNeeded := binary.MaxVarintLen64 * (1 + len(c.chunkLens)) + if len(c.buf) < bufNeeded { + c.buf = make([]byte, bufNeeded) + } + buf := c.buf + + // convert the chunk lengths into chunk offsets + chunkOffsets := modifyLengthsToEndOffsets(c.chunkLens) + + // write out the number of chunks & each chunk offsets + n := binary.PutUvarint(buf, uint64(len(chunkOffsets))) + for _, chunkOffset := range chunkOffsets { + n += binary.PutUvarint(buf[n:], chunkOffset) + } + + tw, err := w.Write(buf[:n]) + if err != nil { + return tw, err + } + + // write out the data + nw, err := w.Write(c.final) + tw += nw + if err != nil { + return tw, err + } + return tw, nil +} + +// writeAt commits all the encoded chunked integers to the provided writer +// and returns the starting offset, total bytes written and an error +func (c *chunkedIntCoder) writeAt(w io.Writer) (uint64, int, error) { + startOffset := uint64(termNotEncoded) + if len(c.final) <= 0 { + return startOffset, 0, nil + } + + if chw := w.(*CountHashWriter); chw != nil { + startOffset = uint64(chw.Count()) + } + + tw, err := c.Write(w) + return startOffset, tw, err +} + +func (c *chunkedIntCoder) FinalSize() int { + return len(c.final) +} + +// modifyLengthsToEndOffsets converts the chunk length array +// to a chunk offset array. The readChunkBoundary +// will figure out the start and end of every chunk from +// these offsets. Starting offset of i'th index is stored +// in i-1'th position except for 0'th index and ending offset +// is stored at i'th index position. +// For 0'th element, starting position is always zero. +// eg: +// Lens -> 5 5 5 5 => 5 10 15 20 +// Lens -> 0 5 0 5 => 0 5 5 10 +// Lens -> 0 0 0 5 => 0 0 0 5 +// Lens -> 5 0 0 0 => 5 5 5 5 +// Lens -> 0 5 0 0 => 0 5 5 5 +// Lens -> 0 0 5 0 => 0 0 5 5 +func modifyLengthsToEndOffsets(lengths []uint64) []uint64 { + var runningOffset uint64 + var index, i int + for i = 1; i <= len(lengths); i++ { + runningOffset += lengths[i-1] + lengths[index] = runningOffset + index++ + } + return lengths +} + +func readChunkBoundary(chunk int, offsets []uint64) (uint64, uint64) { + var start uint64 + if chunk > 0 { + start = offsets[chunk-1] + } + return start, offsets[chunk] +} diff --git a/vendor/github.com/blevesearch/zap/v13/merge.go b/vendor/github.com/blevesearch/zap/v13/merge.go new file mode 100644 index 00000000..805100fb --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/merge.go @@ -0,0 +1,847 @@ +// Copyright (c) 2017 Couchbase, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package zap + +import ( + "bufio" + "bytes" + "encoding/binary" + "fmt" + "math" + "os" + "sort" + + "github.com/RoaringBitmap/roaring" + seg "github.com/blevesearch/bleve/index/scorch/segment" + "github.com/couchbase/vellum" + "github.com/golang/snappy" +) + +var DefaultFileMergerBufferSize = 1024 * 1024 + +const docDropped = math.MaxUint64 // sentinel docNum to represent a deleted doc + +// Merge takes a slice of segments and bit masks describing which +// documents may be dropped, and creates a new segment containing the +// remaining data. This new segment is built at the specified path. +func (*ZapPlugin) Merge(segments []seg.Segment, drops []*roaring.Bitmap, path string, + closeCh chan struct{}, s seg.StatsReporter) ( + [][]uint64, uint64, error) { + + segmentBases := make([]*SegmentBase, len(segments)) + for segmenti, segment := range segments { + switch segmentx := segment.(type) { + case *Segment: + segmentBases[segmenti] = &segmentx.SegmentBase + case *SegmentBase: + segmentBases[segmenti] = segmentx + default: + panic(fmt.Sprintf("oops, unexpected segment type: %T", segment)) + } + } + return mergeSegmentBases(segmentBases, drops, path, DefaultChunkMode, closeCh, s) +} + +func mergeSegmentBases(segmentBases []*SegmentBase, drops []*roaring.Bitmap, path string, + chunkMode uint32, closeCh chan struct{}, s seg.StatsReporter) ( + [][]uint64, uint64, error) { + flag := os.O_RDWR | os.O_CREATE + + f, err := os.OpenFile(path, flag, 0600) + if err != nil { + return nil, 0, err + } + + cleanup := func() { + _ = f.Close() + _ = os.Remove(path) + } + + // buffer the output + br := bufio.NewWriterSize(f, DefaultFileMergerBufferSize) + + // wrap it for counting (tracking offsets) + cr := NewCountHashWriterWithStatsReporter(br, s) + + newDocNums, numDocs, storedIndexOffset, fieldsIndexOffset, docValueOffset, _, _, _, err := + MergeToWriter(segmentBases, drops, chunkMode, cr, closeCh) + if err != nil { + cleanup() + return nil, 0, err + } + + err = persistFooter(numDocs, storedIndexOffset, fieldsIndexOffset, + docValueOffset, chunkMode, cr.Sum32(), cr) + if err != nil { + cleanup() + return nil, 0, err + } + + err = br.Flush() + if err != nil { + cleanup() + return nil, 0, err + } + + err = f.Sync() + if err != nil { + cleanup() + return nil, 0, err + } + + err = f.Close() + if err != nil { + cleanup() + return nil, 0, err + } + + return newDocNums, uint64(cr.Count()), nil +} + +func MergeToWriter(segments []*SegmentBase, drops []*roaring.Bitmap, + chunkMode uint32, cr *CountHashWriter, closeCh chan struct{}) ( + newDocNums [][]uint64, + numDocs, storedIndexOffset, fieldsIndexOffset, docValueOffset uint64, + dictLocs []uint64, fieldsInv []string, fieldsMap map[string]uint16, + err error) { + docValueOffset = uint64(fieldNotUninverted) + + var fieldsSame bool + fieldsSame, fieldsInv = mergeFields(segments) + fieldsMap = mapFields(fieldsInv) + + numDocs = computeNewDocCount(segments, drops) + + if isClosed(closeCh) { + return nil, 0, 0, 0, 0, nil, nil, nil, seg.ErrClosed + } + + if numDocs > 0 { + storedIndexOffset, newDocNums, err = mergeStoredAndRemap(segments, drops, + fieldsMap, fieldsInv, fieldsSame, numDocs, cr, closeCh) + if err != nil { + return nil, 0, 0, 0, 0, nil, nil, nil, err + } + + dictLocs, docValueOffset, err = persistMergedRest(segments, drops, + fieldsInv, fieldsMap, fieldsSame, + newDocNums, numDocs, chunkMode, cr, closeCh) + if err != nil { + return nil, 0, 0, 0, 0, nil, nil, nil, err + } + } else { + dictLocs = make([]uint64, len(fieldsInv)) + } + + fieldsIndexOffset, err = persistFields(fieldsInv, cr, dictLocs) + if err != nil { + return nil, 0, 0, 0, 0, nil, nil, nil, err + } + + return newDocNums, numDocs, storedIndexOffset, fieldsIndexOffset, docValueOffset, dictLocs, fieldsInv, fieldsMap, nil +} + +// mapFields takes the fieldsInv list and returns a map of fieldName +// to fieldID+1 +func mapFields(fields []string) map[string]uint16 { + rv := make(map[string]uint16, len(fields)) + for i, fieldName := range fields { + rv[fieldName] = uint16(i) + 1 + } + return rv +} + +// computeNewDocCount determines how many documents will be in the newly +// merged segment when obsoleted docs are dropped +func computeNewDocCount(segments []*SegmentBase, drops []*roaring.Bitmap) uint64 { + var newDocCount uint64 + for segI, segment := range segments { + newDocCount += segment.numDocs + if drops[segI] != nil { + newDocCount -= drops[segI].GetCardinality() + } + } + return newDocCount +} + +func persistMergedRest(segments []*SegmentBase, dropsIn []*roaring.Bitmap, + fieldsInv []string, fieldsMap map[string]uint16, fieldsSame bool, + newDocNumsIn [][]uint64, newSegDocCount uint64, chunkMode uint32, + w *CountHashWriter, closeCh chan struct{}) ([]uint64, uint64, error) { + + var bufMaxVarintLen64 []byte = make([]byte, binary.MaxVarintLen64) + var bufLoc []uint64 + + var postings *PostingsList + var postItr *PostingsIterator + + rv := make([]uint64, len(fieldsInv)) + fieldDvLocsStart := make([]uint64, len(fieldsInv)) + fieldDvLocsEnd := make([]uint64, len(fieldsInv)) + + // these int coders are initialized with chunk size 1024 + // however this will be reset to the correct chunk size + // while processing each individual field-term section + tfEncoder := newChunkedIntCoder(1024, newSegDocCount-1) + locEncoder := newChunkedIntCoder(1024, newSegDocCount-1) + + var vellumBuf bytes.Buffer + newVellum, err := vellum.New(&vellumBuf, nil) + if err != nil { + return nil, 0, err + } + + newRoaring := roaring.NewBitmap() + + // for each field + for fieldID, fieldName := range fieldsInv { + + // collect FST iterators from all active segments for this field + var newDocNums [][]uint64 + var drops []*roaring.Bitmap + var dicts []*Dictionary + var itrs []vellum.Iterator + + var segmentsInFocus []*SegmentBase + + for segmentI, segment := range segments { + + // check for the closure in meantime + if isClosed(closeCh) { + return nil, 0, seg.ErrClosed + } + + dict, err2 := segment.dictionary(fieldName) + if err2 != nil { + return nil, 0, err2 + } + if dict != nil && dict.fst != nil { + itr, err2 := dict.fst.Iterator(nil, nil) + if err2 != nil && err2 != vellum.ErrIteratorDone { + return nil, 0, err2 + } + if itr != nil { + newDocNums = append(newDocNums, newDocNumsIn[segmentI]) + if dropsIn[segmentI] != nil && !dropsIn[segmentI].IsEmpty() { + drops = append(drops, dropsIn[segmentI]) + } else { + drops = append(drops, nil) + } + dicts = append(dicts, dict) + itrs = append(itrs, itr) + segmentsInFocus = append(segmentsInFocus, segment) + } + } + } + + var prevTerm []byte + + newRoaring.Clear() + + var lastDocNum, lastFreq, lastNorm uint64 + + // determines whether to use "1-hit" encoding optimization + // when a term appears in only 1 doc, with no loc info, + // has freq of 1, and the docNum fits into 31-bits + use1HitEncoding := func(termCardinality uint64) (bool, uint64, uint64) { + if termCardinality == uint64(1) && locEncoder.FinalSize() <= 0 { + docNum := uint64(newRoaring.Minimum()) + if under32Bits(docNum) && docNum == lastDocNum && lastFreq == 1 { + return true, docNum, lastNorm + } + } + return false, 0, 0 + } + + finishTerm := func(term []byte) error { + tfEncoder.Close() + locEncoder.Close() + + postingsOffset, err := writePostings(newRoaring, + tfEncoder, locEncoder, use1HitEncoding, w, bufMaxVarintLen64) + if err != nil { + return err + } + + if postingsOffset > 0 { + err = newVellum.Insert(term, postingsOffset) + if err != nil { + return err + } + } + + newRoaring.Clear() + + tfEncoder.Reset() + locEncoder.Reset() + + lastDocNum = 0 + lastFreq = 0 + lastNorm = 0 + + return nil + } + + enumerator, err := newEnumerator(itrs) + + for err == nil { + term, itrI, postingsOffset := enumerator.Current() + + if !bytes.Equal(prevTerm, term) { + // check for the closure in meantime + if isClosed(closeCh) { + return nil, 0, seg.ErrClosed + } + + // if the term changed, write out the info collected + // for the previous term + err = finishTerm(prevTerm) + if err != nil { + return nil, 0, err + } + } + if !bytes.Equal(prevTerm, term) || prevTerm == nil { + // compute cardinality of field-term in new seg + var newCard uint64 + lowItrIdxs, lowItrVals := enumerator.GetLowIdxsAndValues() + for i, idx := range lowItrIdxs { + pl, err := dicts[idx].postingsListFromOffset(lowItrVals[i], drops[idx], nil) + if err != nil { + return nil, 0, err + } + newCard += pl.Count() + } + // compute correct chunk size with this + chunkSize, err := getChunkSize(chunkMode, newCard, newSegDocCount) + if err != nil { + return nil, 0, err + } + // update encoders chunk + tfEncoder.SetChunkSize(chunkSize, newSegDocCount-1) + locEncoder.SetChunkSize(chunkSize, newSegDocCount-1) + } + + postings, err = dicts[itrI].postingsListFromOffset( + postingsOffset, drops[itrI], postings) + if err != nil { + return nil, 0, err + } + + postItr = postings.iterator(true, true, true, postItr) + + // can no longer optimize by copying, since chunk factor could have changed + lastDocNum, lastFreq, lastNorm, bufLoc, err = mergeTermFreqNormLocs( + fieldsMap, term, postItr, newDocNums[itrI], newRoaring, + tfEncoder, locEncoder, bufLoc) + + if err != nil { + return nil, 0, err + } + + prevTerm = prevTerm[:0] // copy to prevTerm in case Next() reuses term mem + prevTerm = append(prevTerm, term...) + + err = enumerator.Next() + } + if err != vellum.ErrIteratorDone { + return nil, 0, err + } + + err = finishTerm(prevTerm) + if err != nil { + return nil, 0, err + } + + dictOffset := uint64(w.Count()) + + err = newVellum.Close() + if err != nil { + return nil, 0, err + } + vellumData := vellumBuf.Bytes() + + // write out the length of the vellum data + n := binary.PutUvarint(bufMaxVarintLen64, uint64(len(vellumData))) + _, err = w.Write(bufMaxVarintLen64[:n]) + if err != nil { + return nil, 0, err + } + + // write this vellum to disk + _, err = w.Write(vellumData) + if err != nil { + return nil, 0, err + } + + rv[fieldID] = dictOffset + + // get the field doc value offset (start) + fieldDvLocsStart[fieldID] = uint64(w.Count()) + + // update the field doc values + // NOTE: doc values continue to use legacy chunk mode + chunkSize, err := getChunkSize(LegacyChunkMode, 0, 0) + if err != nil { + return nil, 0, err + } + fdvEncoder := newChunkedContentCoder(chunkSize, newSegDocCount-1, w, true) + + fdvReadersAvailable := false + var dvIterClone *docValueReader + for segmentI, segment := range segmentsInFocus { + // check for the closure in meantime + if isClosed(closeCh) { + return nil, 0, seg.ErrClosed + } + + fieldIDPlus1 := uint16(segment.fieldsMap[fieldName]) + if dvIter, exists := segment.fieldDvReaders[fieldIDPlus1-1]; exists && + dvIter != nil { + fdvReadersAvailable = true + dvIterClone = dvIter.cloneInto(dvIterClone) + err = dvIterClone.iterateAllDocValues(segment, func(docNum uint64, terms []byte) error { + if newDocNums[segmentI][docNum] == docDropped { + return nil + } + err := fdvEncoder.Add(newDocNums[segmentI][docNum], terms) + if err != nil { + return err + } + return nil + }) + if err != nil { + return nil, 0, err + } + } + } + + if fdvReadersAvailable { + err = fdvEncoder.Close() + if err != nil { + return nil, 0, err + } + + // persist the doc value details for this field + _, err = fdvEncoder.Write() + if err != nil { + return nil, 0, err + } + + // get the field doc value offset (end) + fieldDvLocsEnd[fieldID] = uint64(w.Count()) + } else { + fieldDvLocsStart[fieldID] = fieldNotUninverted + fieldDvLocsEnd[fieldID] = fieldNotUninverted + } + + // reset vellum buffer and vellum builder + vellumBuf.Reset() + err = newVellum.Reset(&vellumBuf) + if err != nil { + return nil, 0, err + } + } + + fieldDvLocsOffset := uint64(w.Count()) + + buf := bufMaxVarintLen64 + for i := 0; i < len(fieldDvLocsStart); i++ { + n := binary.PutUvarint(buf, fieldDvLocsStart[i]) + _, err := w.Write(buf[:n]) + if err != nil { + return nil, 0, err + } + n = binary.PutUvarint(buf, fieldDvLocsEnd[i]) + _, err = w.Write(buf[:n]) + if err != nil { + return nil, 0, err + } + } + + return rv, fieldDvLocsOffset, nil +} + +func mergeTermFreqNormLocs(fieldsMap map[string]uint16, term []byte, postItr *PostingsIterator, + newDocNums []uint64, newRoaring *roaring.Bitmap, + tfEncoder *chunkedIntCoder, locEncoder *chunkedIntCoder, bufLoc []uint64) ( + lastDocNum uint64, lastFreq uint64, lastNorm uint64, bufLocOut []uint64, err error) { + next, err := postItr.Next() + for next != nil && err == nil { + hitNewDocNum := newDocNums[next.Number()] + if hitNewDocNum == docDropped { + return 0, 0, 0, nil, fmt.Errorf("see hit with dropped docNum") + } + + newRoaring.Add(uint32(hitNewDocNum)) + + nextFreq := next.Frequency() + nextNorm := uint64(math.Float32bits(float32(next.Norm()))) + + locs := next.Locations() + + err = tfEncoder.Add(hitNewDocNum, + encodeFreqHasLocs(nextFreq, len(locs) > 0), nextNorm) + if err != nil { + return 0, 0, 0, nil, err + } + + if len(locs) > 0 { + numBytesLocs := 0 + for _, loc := range locs { + ap := loc.ArrayPositions() + numBytesLocs += totalUvarintBytes(uint64(fieldsMap[loc.Field()]-1), + loc.Pos(), loc.Start(), loc.End(), uint64(len(ap)), ap) + } + + err = locEncoder.Add(hitNewDocNum, uint64(numBytesLocs)) + if err != nil { + return 0, 0, 0, nil, err + } + + for _, loc := range locs { + ap := loc.ArrayPositions() + if cap(bufLoc) < 5+len(ap) { + bufLoc = make([]uint64, 0, 5+len(ap)) + } + args := bufLoc[0:5] + args[0] = uint64(fieldsMap[loc.Field()] - 1) + args[1] = loc.Pos() + args[2] = loc.Start() + args[3] = loc.End() + args[4] = uint64(len(ap)) + args = append(args, ap...) + err = locEncoder.Add(hitNewDocNum, args...) + if err != nil { + return 0, 0, 0, nil, err + } + } + } + + lastDocNum = hitNewDocNum + lastFreq = nextFreq + lastNorm = nextNorm + + next, err = postItr.Next() + } + + return lastDocNum, lastFreq, lastNorm, bufLoc, err +} + +func writePostings(postings *roaring.Bitmap, tfEncoder, locEncoder *chunkedIntCoder, + use1HitEncoding func(uint64) (bool, uint64, uint64), + w *CountHashWriter, bufMaxVarintLen64 []byte) ( + offset uint64, err error) { + termCardinality := postings.GetCardinality() + if termCardinality <= 0 { + return 0, nil + } + + if use1HitEncoding != nil { + encodeAs1Hit, docNum1Hit, normBits1Hit := use1HitEncoding(termCardinality) + if encodeAs1Hit { + return FSTValEncode1Hit(docNum1Hit, normBits1Hit), nil + } + } + + var tfOffset uint64 + tfOffset, _, err = tfEncoder.writeAt(w) + if err != nil { + return 0, err + } + + var locOffset uint64 + locOffset, _, err = locEncoder.writeAt(w) + if err != nil { + return 0, err + } + + postingsOffset := uint64(w.Count()) + + n := binary.PutUvarint(bufMaxVarintLen64, tfOffset) + _, err = w.Write(bufMaxVarintLen64[:n]) + if err != nil { + return 0, err + } + + n = binary.PutUvarint(bufMaxVarintLen64, locOffset) + _, err = w.Write(bufMaxVarintLen64[:n]) + if err != nil { + return 0, err + } + + _, err = writeRoaringWithLen(postings, w, bufMaxVarintLen64) + if err != nil { + return 0, err + } + + return postingsOffset, nil +} + +type varintEncoder func(uint64) (int, error) + +func mergeStoredAndRemap(segments []*SegmentBase, drops []*roaring.Bitmap, + fieldsMap map[string]uint16, fieldsInv []string, fieldsSame bool, newSegDocCount uint64, + w *CountHashWriter, closeCh chan struct{}) (uint64, [][]uint64, error) { + var rv [][]uint64 // The remapped or newDocNums for each segment. + + var newDocNum uint64 + + var curr int + var data, compressed []byte + var metaBuf bytes.Buffer + varBuf := make([]byte, binary.MaxVarintLen64) + metaEncode := func(val uint64) (int, error) { + wb := binary.PutUvarint(varBuf, val) + return metaBuf.Write(varBuf[:wb]) + } + + vals := make([][][]byte, len(fieldsInv)) + typs := make([][]byte, len(fieldsInv)) + poss := make([][][]uint64, len(fieldsInv)) + + var posBuf []uint64 + + docNumOffsets := make([]uint64, newSegDocCount) + + vdc := visitDocumentCtxPool.Get().(*visitDocumentCtx) + defer visitDocumentCtxPool.Put(vdc) + + // for each segment + for segI, segment := range segments { + // check for the closure in meantime + if isClosed(closeCh) { + return 0, nil, seg.ErrClosed + } + + segNewDocNums := make([]uint64, segment.numDocs) + + dropsI := drops[segI] + + // optimize when the field mapping is the same across all + // segments and there are no deletions, via byte-copying + // of stored docs bytes directly to the writer + if fieldsSame && (dropsI == nil || dropsI.GetCardinality() == 0) { + err := segment.copyStoredDocs(newDocNum, docNumOffsets, w) + if err != nil { + return 0, nil, err + } + + for i := uint64(0); i < segment.numDocs; i++ { + segNewDocNums[i] = newDocNum + newDocNum++ + } + rv = append(rv, segNewDocNums) + + continue + } + + // for each doc num + for docNum := uint64(0); docNum < segment.numDocs; docNum++ { + // TODO: roaring's API limits docNums to 32-bits? + if dropsI != nil && dropsI.Contains(uint32(docNum)) { + segNewDocNums[docNum] = docDropped + continue + } + + segNewDocNums[docNum] = newDocNum + + curr = 0 + metaBuf.Reset() + data = data[:0] + + posTemp := posBuf + + // collect all the data + for i := 0; i < len(fieldsInv); i++ { + vals[i] = vals[i][:0] + typs[i] = typs[i][:0] + poss[i] = poss[i][:0] + } + err := segment.visitDocument(vdc, docNum, func(field string, typ byte, value []byte, pos []uint64) bool { + fieldID := int(fieldsMap[field]) - 1 + vals[fieldID] = append(vals[fieldID], value) + typs[fieldID] = append(typs[fieldID], typ) + + // copy array positions to preserve them beyond the scope of this callback + var curPos []uint64 + if len(pos) > 0 { + if cap(posTemp) < len(pos) { + posBuf = make([]uint64, len(pos)*len(fieldsInv)) + posTemp = posBuf + } + curPos = posTemp[0:len(pos)] + copy(curPos, pos) + posTemp = posTemp[len(pos):] + } + poss[fieldID] = append(poss[fieldID], curPos) + + return true + }) + if err != nil { + return 0, nil, err + } + + // _id field special case optimizes ExternalID() lookups + idFieldVal := vals[uint16(0)][0] + _, err = metaEncode(uint64(len(idFieldVal))) + if err != nil { + return 0, nil, err + } + + // now walk the non-"_id" fields in order + for fieldID := 1; fieldID < len(fieldsInv); fieldID++ { + storedFieldValues := vals[fieldID] + + stf := typs[fieldID] + spf := poss[fieldID] + + var err2 error + curr, data, err2 = persistStoredFieldValues(fieldID, + storedFieldValues, stf, spf, curr, metaEncode, data) + if err2 != nil { + return 0, nil, err2 + } + } + + metaBytes := metaBuf.Bytes() + + compressed = snappy.Encode(compressed[:cap(compressed)], data) + + // record where we're about to start writing + docNumOffsets[newDocNum] = uint64(w.Count()) + + // write out the meta len and compressed data len + _, err = writeUvarints(w, + uint64(len(metaBytes)), + uint64(len(idFieldVal)+len(compressed))) + if err != nil { + return 0, nil, err + } + // now write the meta + _, err = w.Write(metaBytes) + if err != nil { + return 0, nil, err + } + // now write the _id field val (counted as part of the 'compressed' data) + _, err = w.Write(idFieldVal) + if err != nil { + return 0, nil, err + } + // now write the compressed data + _, err = w.Write(compressed) + if err != nil { + return 0, nil, err + } + + newDocNum++ + } + + rv = append(rv, segNewDocNums) + } + + // return value is the start of the stored index + storedIndexOffset := uint64(w.Count()) + + // now write out the stored doc index + for _, docNumOffset := range docNumOffsets { + err := binary.Write(w, binary.BigEndian, docNumOffset) + if err != nil { + return 0, nil, err + } + } + + return storedIndexOffset, rv, nil +} + +// copyStoredDocs writes out a segment's stored doc info, optimized by +// using a single Write() call for the entire set of bytes. The +// newDocNumOffsets is filled with the new offsets for each doc. +func (s *SegmentBase) copyStoredDocs(newDocNum uint64, newDocNumOffsets []uint64, + w *CountHashWriter) error { + if s.numDocs <= 0 { + return nil + } + + indexOffset0, storedOffset0, _, _, _ := + s.getDocStoredOffsets(0) // the segment's first doc + + indexOffsetN, storedOffsetN, readN, metaLenN, dataLenN := + s.getDocStoredOffsets(s.numDocs - 1) // the segment's last doc + + storedOffset0New := uint64(w.Count()) + + storedBytes := s.mem[storedOffset0 : storedOffsetN+readN+metaLenN+dataLenN] + _, err := w.Write(storedBytes) + if err != nil { + return err + } + + // remap the storedOffset's for the docs into new offsets relative + // to storedOffset0New, filling the given docNumOffsetsOut array + for indexOffset := indexOffset0; indexOffset <= indexOffsetN; indexOffset += 8 { + storedOffset := binary.BigEndian.Uint64(s.mem[indexOffset : indexOffset+8]) + storedOffsetNew := storedOffset - storedOffset0 + storedOffset0New + newDocNumOffsets[newDocNum] = storedOffsetNew + newDocNum += 1 + } + + return nil +} + +// mergeFields builds a unified list of fields used across all the +// input segments, and computes whether the fields are the same across +// segments (which depends on fields to be sorted in the same way +// across segments) +func mergeFields(segments []*SegmentBase) (bool, []string) { + fieldsSame := true + + var segment0Fields []string + if len(segments) > 0 { + segment0Fields = segments[0].Fields() + } + + fieldsExist := map[string]struct{}{} + for _, segment := range segments { + fields := segment.Fields() + for fieldi, field := range fields { + fieldsExist[field] = struct{}{} + if len(segment0Fields) != len(fields) || segment0Fields[fieldi] != field { + fieldsSame = false + } + } + } + + rv := make([]string, 0, len(fieldsExist)) + // ensure _id stays first + rv = append(rv, "_id") + for k := range fieldsExist { + if k != "_id" { + rv = append(rv, k) + } + } + + sort.Strings(rv[1:]) // leave _id as first + + return fieldsSame, rv +} + +func isClosed(closeCh chan struct{}) bool { + select { + case <-closeCh: + return true + default: + return false + } +} diff --git a/vendor/github.com/blevesearch/zap/v13/new.go b/vendor/github.com/blevesearch/zap/v13/new.go new file mode 100644 index 00000000..98158186 --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/new.go @@ -0,0 +1,860 @@ +// Copyright (c) 2018 Couchbase, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package zap + +import ( + "bytes" + "encoding/binary" + "math" + "sort" + "sync" + + "github.com/RoaringBitmap/roaring" + "github.com/blevesearch/bleve/analysis" + "github.com/blevesearch/bleve/document" + "github.com/blevesearch/bleve/index" + "github.com/blevesearch/bleve/index/scorch/segment" + "github.com/couchbase/vellum" + "github.com/golang/snappy" +) + +var NewSegmentBufferNumResultsBump int = 100 +var NewSegmentBufferNumResultsFactor float64 = 1.0 +var NewSegmentBufferAvgBytesPerDocFactor float64 = 1.0 + +// ValidateDocFields can be set by applications to perform additional checks +// on fields in a document being added to a new segment, by default it does +// nothing. +// This API is experimental and may be removed at any time. +var ValidateDocFields = func(field document.Field) error { + return nil +} + +// AnalysisResultsToSegmentBase produces an in-memory zap-encoded +// SegmentBase from analysis results +func (z *ZapPlugin) New(results []*index.AnalysisResult) ( + segment.Segment, uint64, error) { + return z.newWithChunkMode(results, DefaultChunkMode) +} + +func (*ZapPlugin) newWithChunkMode(results []*index.AnalysisResult, + chunkMode uint32) (segment.Segment, uint64, error) { + s := interimPool.Get().(*interim) + + var br bytes.Buffer + if s.lastNumDocs > 0 { + // use previous results to initialize the buf with an estimate + // size, but note that the interim instance comes from a + // global interimPool, so multiple scorch instances indexing + // different docs can lead to low quality estimates + estimateAvgBytesPerDoc := int(float64(s.lastOutSize/s.lastNumDocs) * + NewSegmentBufferNumResultsFactor) + estimateNumResults := int(float64(len(results)+NewSegmentBufferNumResultsBump) * + NewSegmentBufferAvgBytesPerDocFactor) + br.Grow(estimateAvgBytesPerDoc * estimateNumResults) + } + + s.results = results + s.chunkMode = chunkMode + s.w = NewCountHashWriter(&br) + + storedIndexOffset, fieldsIndexOffset, fdvIndexOffset, dictOffsets, + err := s.convert() + if err != nil { + return nil, uint64(0), err + } + + sb, err := InitSegmentBase(br.Bytes(), s.w.Sum32(), chunkMode, + s.FieldsMap, s.FieldsInv, uint64(len(results)), + storedIndexOffset, fieldsIndexOffset, fdvIndexOffset, dictOffsets) + + if err == nil && s.reset() == nil { + s.lastNumDocs = len(results) + s.lastOutSize = len(br.Bytes()) + interimPool.Put(s) + } + + return sb, uint64(len(br.Bytes())), err +} + +var interimPool = sync.Pool{New: func() interface{} { return &interim{} }} + +// interim holds temporary working data used while converting from +// analysis results to a zap-encoded segment +type interim struct { + results []*index.AnalysisResult + + chunkMode uint32 + + w *CountHashWriter + + // FieldsMap adds 1 to field id to avoid zero value issues + // name -> field id + 1 + FieldsMap map[string]uint16 + + // FieldsInv is the inverse of FieldsMap + // field id -> name + FieldsInv []string + + // Term dictionaries for each field + // field id -> term -> postings list id + 1 + Dicts []map[string]uint64 + + // Terms for each field, where terms are sorted ascending + // field id -> []term + DictKeys [][]string + + // Fields whose IncludeDocValues is true + // field id -> bool + IncludeDocValues []bool + + // postings id -> bitmap of docNums + Postings []*roaring.Bitmap + + // postings id -> freq/norm's, one for each docNum in postings + FreqNorms [][]interimFreqNorm + freqNormsBacking []interimFreqNorm + + // postings id -> locs, one for each freq + Locs [][]interimLoc + locsBacking []interimLoc + + numTermsPerPostingsList []int // key is postings list id + numLocsPerPostingsList []int // key is postings list id + + builder *vellum.Builder + builderBuf bytes.Buffer + + metaBuf bytes.Buffer + + tmp0 []byte + tmp1 []byte + + lastNumDocs int + lastOutSize int +} + +func (s *interim) reset() (err error) { + s.results = nil + s.chunkMode = 0 + s.w = nil + s.FieldsMap = nil + s.FieldsInv = nil + for i := range s.Dicts { + s.Dicts[i] = nil + } + s.Dicts = s.Dicts[:0] + for i := range s.DictKeys { + s.DictKeys[i] = s.DictKeys[i][:0] + } + s.DictKeys = s.DictKeys[:0] + for i := range s.IncludeDocValues { + s.IncludeDocValues[i] = false + } + s.IncludeDocValues = s.IncludeDocValues[:0] + for _, idn := range s.Postings { + idn.Clear() + } + s.Postings = s.Postings[:0] + s.FreqNorms = s.FreqNorms[:0] + for i := range s.freqNormsBacking { + s.freqNormsBacking[i] = interimFreqNorm{} + } + s.freqNormsBacking = s.freqNormsBacking[:0] + s.Locs = s.Locs[:0] + for i := range s.locsBacking { + s.locsBacking[i] = interimLoc{} + } + s.locsBacking = s.locsBacking[:0] + s.numTermsPerPostingsList = s.numTermsPerPostingsList[:0] + s.numLocsPerPostingsList = s.numLocsPerPostingsList[:0] + s.builderBuf.Reset() + if s.builder != nil { + err = s.builder.Reset(&s.builderBuf) + } + s.metaBuf.Reset() + s.tmp0 = s.tmp0[:0] + s.tmp1 = s.tmp1[:0] + s.lastNumDocs = 0 + s.lastOutSize = 0 + + return err +} + +func (s *interim) grabBuf(size int) []byte { + buf := s.tmp0 + if cap(buf) < size { + buf = make([]byte, size) + s.tmp0 = buf + } + return buf[0:size] +} + +type interimStoredField struct { + vals [][]byte + typs []byte + arrayposs [][]uint64 // array positions +} + +type interimFreqNorm struct { + freq uint64 + norm float32 + numLocs int +} + +type interimLoc struct { + fieldID uint16 + pos uint64 + start uint64 + end uint64 + arrayposs []uint64 +} + +func (s *interim) convert() (uint64, uint64, uint64, []uint64, error) { + s.FieldsMap = map[string]uint16{} + + s.getOrDefineField("_id") // _id field is fieldID 0 + + for _, result := range s.results { + for _, field := range result.Document.CompositeFields { + s.getOrDefineField(field.Name()) + } + for _, field := range result.Document.Fields { + s.getOrDefineField(field.Name()) + } + } + + sort.Strings(s.FieldsInv[1:]) // keep _id as first field + + for fieldID, fieldName := range s.FieldsInv { + s.FieldsMap[fieldName] = uint16(fieldID + 1) + } + + if cap(s.IncludeDocValues) >= len(s.FieldsInv) { + s.IncludeDocValues = s.IncludeDocValues[:len(s.FieldsInv)] + } else { + s.IncludeDocValues = make([]bool, len(s.FieldsInv)) + } + + s.prepareDicts() + + for _, dict := range s.DictKeys { + sort.Strings(dict) + } + + s.processDocuments() + + storedIndexOffset, err := s.writeStoredFields() + if err != nil { + return 0, 0, 0, nil, err + } + + var fdvIndexOffset uint64 + var dictOffsets []uint64 + + if len(s.results) > 0 { + fdvIndexOffset, dictOffsets, err = s.writeDicts() + if err != nil { + return 0, 0, 0, nil, err + } + } else { + dictOffsets = make([]uint64, len(s.FieldsInv)) + } + + fieldsIndexOffset, err := persistFields(s.FieldsInv, s.w, dictOffsets) + if err != nil { + return 0, 0, 0, nil, err + } + + return storedIndexOffset, fieldsIndexOffset, fdvIndexOffset, dictOffsets, nil +} + +func (s *interim) getOrDefineField(fieldName string) int { + fieldIDPlus1, exists := s.FieldsMap[fieldName] + if !exists { + fieldIDPlus1 = uint16(len(s.FieldsInv) + 1) + s.FieldsMap[fieldName] = fieldIDPlus1 + s.FieldsInv = append(s.FieldsInv, fieldName) + + s.Dicts = append(s.Dicts, make(map[string]uint64)) + + n := len(s.DictKeys) + if n < cap(s.DictKeys) { + s.DictKeys = s.DictKeys[:n+1] + s.DictKeys[n] = s.DictKeys[n][:0] + } else { + s.DictKeys = append(s.DictKeys, []string(nil)) + } + } + + return int(fieldIDPlus1 - 1) +} + +// fill Dicts and DictKeys from analysis results +func (s *interim) prepareDicts() { + var pidNext int + + var totTFs int + var totLocs int + + visitField := func(fieldID uint16, tfs analysis.TokenFrequencies) { + dict := s.Dicts[fieldID] + dictKeys := s.DictKeys[fieldID] + + for term, tf := range tfs { + pidPlus1, exists := dict[term] + if !exists { + pidNext++ + pidPlus1 = uint64(pidNext) + + dict[term] = pidPlus1 + dictKeys = append(dictKeys, term) + + s.numTermsPerPostingsList = append(s.numTermsPerPostingsList, 0) + s.numLocsPerPostingsList = append(s.numLocsPerPostingsList, 0) + } + + pid := pidPlus1 - 1 + + s.numTermsPerPostingsList[pid] += 1 + s.numLocsPerPostingsList[pid] += len(tf.Locations) + + totLocs += len(tf.Locations) + } + + totTFs += len(tfs) + + s.DictKeys[fieldID] = dictKeys + } + + for _, result := range s.results { + // walk each composite field + for _, field := range result.Document.CompositeFields { + fieldID := uint16(s.getOrDefineField(field.Name())) + _, tf := field.Analyze() + visitField(fieldID, tf) + } + + // walk each field + for i, field := range result.Document.Fields { + fieldID := uint16(s.getOrDefineField(field.Name())) + tf := result.Analyzed[i] + visitField(fieldID, tf) + } + } + + numPostingsLists := pidNext + + if cap(s.Postings) >= numPostingsLists { + s.Postings = s.Postings[:numPostingsLists] + } else { + postings := make([]*roaring.Bitmap, numPostingsLists) + copy(postings, s.Postings[:cap(s.Postings)]) + for i := 0; i < numPostingsLists; i++ { + if postings[i] == nil { + postings[i] = roaring.New() + } + } + s.Postings = postings + } + + if cap(s.FreqNorms) >= numPostingsLists { + s.FreqNorms = s.FreqNorms[:numPostingsLists] + } else { + s.FreqNorms = make([][]interimFreqNorm, numPostingsLists) + } + + if cap(s.freqNormsBacking) >= totTFs { + s.freqNormsBacking = s.freqNormsBacking[:totTFs] + } else { + s.freqNormsBacking = make([]interimFreqNorm, totTFs) + } + + freqNormsBacking := s.freqNormsBacking + for pid, numTerms := range s.numTermsPerPostingsList { + s.FreqNorms[pid] = freqNormsBacking[0:0] + freqNormsBacking = freqNormsBacking[numTerms:] + } + + if cap(s.Locs) >= numPostingsLists { + s.Locs = s.Locs[:numPostingsLists] + } else { + s.Locs = make([][]interimLoc, numPostingsLists) + } + + if cap(s.locsBacking) >= totLocs { + s.locsBacking = s.locsBacking[:totLocs] + } else { + s.locsBacking = make([]interimLoc, totLocs) + } + + locsBacking := s.locsBacking + for pid, numLocs := range s.numLocsPerPostingsList { + s.Locs[pid] = locsBacking[0:0] + locsBacking = locsBacking[numLocs:] + } +} + +func (s *interim) processDocuments() { + numFields := len(s.FieldsInv) + reuseFieldLens := make([]int, numFields) + reuseFieldTFs := make([]analysis.TokenFrequencies, numFields) + + for docNum, result := range s.results { + for i := 0; i < numFields; i++ { // clear these for reuse + reuseFieldLens[i] = 0 + reuseFieldTFs[i] = nil + } + + s.processDocument(uint64(docNum), result, + reuseFieldLens, reuseFieldTFs) + } +} + +func (s *interim) processDocument(docNum uint64, + result *index.AnalysisResult, + fieldLens []int, fieldTFs []analysis.TokenFrequencies) { + visitField := func(fieldID uint16, fieldName string, + ln int, tf analysis.TokenFrequencies) { + fieldLens[fieldID] += ln + + existingFreqs := fieldTFs[fieldID] + if existingFreqs != nil { + existingFreqs.MergeAll(fieldName, tf) + } else { + fieldTFs[fieldID] = tf + } + } + + // walk each composite field + for _, field := range result.Document.CompositeFields { + fieldID := uint16(s.getOrDefineField(field.Name())) + ln, tf := field.Analyze() + visitField(fieldID, field.Name(), ln, tf) + } + + // walk each field + for i, field := range result.Document.Fields { + fieldID := uint16(s.getOrDefineField(field.Name())) + ln := result.Length[i] + tf := result.Analyzed[i] + visitField(fieldID, field.Name(), ln, tf) + } + + // now that it's been rolled up into fieldTFs, walk that + for fieldID, tfs := range fieldTFs { + dict := s.Dicts[fieldID] + norm := float32(1.0 / math.Sqrt(float64(fieldLens[fieldID]))) + + for term, tf := range tfs { + pid := dict[term] - 1 + bs := s.Postings[pid] + bs.Add(uint32(docNum)) + + s.FreqNorms[pid] = append(s.FreqNorms[pid], + interimFreqNorm{ + freq: uint64(tf.Frequency()), + norm: norm, + numLocs: len(tf.Locations), + }) + + if len(tf.Locations) > 0 { + locs := s.Locs[pid] + + for _, loc := range tf.Locations { + var locf = uint16(fieldID) + if loc.Field != "" { + locf = uint16(s.getOrDefineField(loc.Field)) + } + var arrayposs []uint64 + if len(loc.ArrayPositions) > 0 { + arrayposs = loc.ArrayPositions + } + locs = append(locs, interimLoc{ + fieldID: locf, + pos: uint64(loc.Position), + start: uint64(loc.Start), + end: uint64(loc.End), + arrayposs: arrayposs, + }) + } + + s.Locs[pid] = locs + } + } + } +} + +func (s *interim) writeStoredFields() ( + storedIndexOffset uint64, err error) { + varBuf := make([]byte, binary.MaxVarintLen64) + metaEncode := func(val uint64) (int, error) { + wb := binary.PutUvarint(varBuf, val) + return s.metaBuf.Write(varBuf[:wb]) + } + + data, compressed := s.tmp0[:0], s.tmp1[:0] + defer func() { s.tmp0, s.tmp1 = data, compressed }() + + // keyed by docNum + docStoredOffsets := make([]uint64, len(s.results)) + + // keyed by fieldID, for the current doc in the loop + docStoredFields := map[uint16]interimStoredField{} + + for docNum, result := range s.results { + for fieldID := range docStoredFields { // reset for next doc + delete(docStoredFields, fieldID) + } + + for _, field := range result.Document.Fields { + fieldID := uint16(s.getOrDefineField(field.Name())) + + opts := field.Options() + + if opts.IsStored() { + isf := docStoredFields[fieldID] + isf.vals = append(isf.vals, field.Value()) + isf.typs = append(isf.typs, encodeFieldType(field)) + isf.arrayposs = append(isf.arrayposs, field.ArrayPositions()) + docStoredFields[fieldID] = isf + } + + if opts.IncludeDocValues() { + s.IncludeDocValues[fieldID] = true + } + + err := ValidateDocFields(field) + if err != nil { + return 0, err + } + } + + var curr int + + s.metaBuf.Reset() + data = data[:0] + + // _id field special case optimizes ExternalID() lookups + idFieldVal := docStoredFields[uint16(0)].vals[0] + _, err = metaEncode(uint64(len(idFieldVal))) + if err != nil { + return 0, err + } + + // handle non-"_id" fields + for fieldID := 1; fieldID < len(s.FieldsInv); fieldID++ { + isf, exists := docStoredFields[uint16(fieldID)] + if exists { + curr, data, err = persistStoredFieldValues( + fieldID, isf.vals, isf.typs, isf.arrayposs, + curr, metaEncode, data) + if err != nil { + return 0, err + } + } + } + + metaBytes := s.metaBuf.Bytes() + + compressed = snappy.Encode(compressed[:cap(compressed)], data) + + docStoredOffsets[docNum] = uint64(s.w.Count()) + + _, err := writeUvarints(s.w, + uint64(len(metaBytes)), + uint64(len(idFieldVal)+len(compressed))) + if err != nil { + return 0, err + } + + _, err = s.w.Write(metaBytes) + if err != nil { + return 0, err + } + + _, err = s.w.Write(idFieldVal) + if err != nil { + return 0, err + } + + _, err = s.w.Write(compressed) + if err != nil { + return 0, err + } + } + + storedIndexOffset = uint64(s.w.Count()) + + for _, docStoredOffset := range docStoredOffsets { + err = binary.Write(s.w, binary.BigEndian, docStoredOffset) + if err != nil { + return 0, err + } + } + + return storedIndexOffset, nil +} + +func (s *interim) writeDicts() (fdvIndexOffset uint64, dictOffsets []uint64, err error) { + dictOffsets = make([]uint64, len(s.FieldsInv)) + + fdvOffsetsStart := make([]uint64, len(s.FieldsInv)) + fdvOffsetsEnd := make([]uint64, len(s.FieldsInv)) + + buf := s.grabBuf(binary.MaxVarintLen64) + + // these int coders are initialized with chunk size 1024 + // however this will be reset to the correct chunk size + // while processing each individual field-term section + tfEncoder := newChunkedIntCoder(1024, uint64(len(s.results)-1)) + locEncoder := newChunkedIntCoder(1024, uint64(len(s.results)-1)) + + var docTermMap [][]byte + + if s.builder == nil { + s.builder, err = vellum.New(&s.builderBuf, nil) + if err != nil { + return 0, nil, err + } + } + + for fieldID, terms := range s.DictKeys { + if cap(docTermMap) < len(s.results) { + docTermMap = make([][]byte, len(s.results)) + } else { + docTermMap = docTermMap[0:len(s.results)] + for docNum := range docTermMap { // reset the docTermMap + docTermMap[docNum] = docTermMap[docNum][:0] + } + } + + dict := s.Dicts[fieldID] + + for _, term := range terms { // terms are already sorted + pid := dict[term] - 1 + + postingsBS := s.Postings[pid] + + freqNorms := s.FreqNorms[pid] + freqNormOffset := 0 + + locs := s.Locs[pid] + locOffset := 0 + + chunkSize, err := getChunkSize(s.chunkMode, postingsBS.GetCardinality(), uint64(len(s.results))) + if err != nil { + return 0, nil, err + } + tfEncoder.SetChunkSize(chunkSize, uint64(len(s.results)-1)) + locEncoder.SetChunkSize(chunkSize, uint64(len(s.results)-1)) + + postingsItr := postingsBS.Iterator() + for postingsItr.HasNext() { + docNum := uint64(postingsItr.Next()) + + freqNorm := freqNorms[freqNormOffset] + + err = tfEncoder.Add(docNum, + encodeFreqHasLocs(freqNorm.freq, freqNorm.numLocs > 0), + uint64(math.Float32bits(freqNorm.norm))) + if err != nil { + return 0, nil, err + } + + if freqNorm.numLocs > 0 { + numBytesLocs := 0 + for _, loc := range locs[locOffset : locOffset+freqNorm.numLocs] { + numBytesLocs += totalUvarintBytes( + uint64(loc.fieldID), loc.pos, loc.start, loc.end, + uint64(len(loc.arrayposs)), loc.arrayposs) + } + + err = locEncoder.Add(docNum, uint64(numBytesLocs)) + if err != nil { + return 0, nil, err + } + + for _, loc := range locs[locOffset : locOffset+freqNorm.numLocs] { + err = locEncoder.Add(docNum, + uint64(loc.fieldID), loc.pos, loc.start, loc.end, + uint64(len(loc.arrayposs))) + if err != nil { + return 0, nil, err + } + + err = locEncoder.Add(docNum, loc.arrayposs...) + if err != nil { + return 0, nil, err + } + } + + locOffset += freqNorm.numLocs + } + + freqNormOffset++ + + docTermMap[docNum] = append( + append(docTermMap[docNum], term...), + termSeparator) + } + + tfEncoder.Close() + locEncoder.Close() + + postingsOffset, err := + writePostings(postingsBS, tfEncoder, locEncoder, nil, s.w, buf) + if err != nil { + return 0, nil, err + } + + if postingsOffset > uint64(0) { + err = s.builder.Insert([]byte(term), postingsOffset) + if err != nil { + return 0, nil, err + } + } + + tfEncoder.Reset() + locEncoder.Reset() + } + + err = s.builder.Close() + if err != nil { + return 0, nil, err + } + + // record where this dictionary starts + dictOffsets[fieldID] = uint64(s.w.Count()) + + vellumData := s.builderBuf.Bytes() + + // write out the length of the vellum data + n := binary.PutUvarint(buf, uint64(len(vellumData))) + _, err = s.w.Write(buf[:n]) + if err != nil { + return 0, nil, err + } + + // write this vellum to disk + _, err = s.w.Write(vellumData) + if err != nil { + return 0, nil, err + } + + // reset vellum for reuse + s.builderBuf.Reset() + + err = s.builder.Reset(&s.builderBuf) + if err != nil { + return 0, nil, err + } + + // write the field doc values + // NOTE: doc values continue to use legacy chunk mode + chunkSize, err := getChunkSize(LegacyChunkMode, 0, 0) + if err != nil { + return 0, nil, err + } + fdvEncoder := newChunkedContentCoder(chunkSize, uint64(len(s.results)-1), s.w, false) + if s.IncludeDocValues[fieldID] { + for docNum, docTerms := range docTermMap { + if len(docTerms) > 0 { + err = fdvEncoder.Add(uint64(docNum), docTerms) + if err != nil { + return 0, nil, err + } + } + } + err = fdvEncoder.Close() + if err != nil { + return 0, nil, err + } + + fdvOffsetsStart[fieldID] = uint64(s.w.Count()) + + _, err = fdvEncoder.Write() + if err != nil { + return 0, nil, err + } + + fdvOffsetsEnd[fieldID] = uint64(s.w.Count()) + + fdvEncoder.Reset() + } else { + fdvOffsetsStart[fieldID] = fieldNotUninverted + fdvOffsetsEnd[fieldID] = fieldNotUninverted + } + } + + fdvIndexOffset = uint64(s.w.Count()) + + for i := 0; i < len(fdvOffsetsStart); i++ { + n := binary.PutUvarint(buf, fdvOffsetsStart[i]) + _, err := s.w.Write(buf[:n]) + if err != nil { + return 0, nil, err + } + n = binary.PutUvarint(buf, fdvOffsetsEnd[i]) + _, err = s.w.Write(buf[:n]) + if err != nil { + return 0, nil, err + } + } + + return fdvIndexOffset, dictOffsets, nil +} + +func encodeFieldType(f document.Field) byte { + fieldType := byte('x') + switch f.(type) { + case *document.TextField: + fieldType = 't' + case *document.NumericField: + fieldType = 'n' + case *document.DateTimeField: + fieldType = 'd' + case *document.BooleanField: + fieldType = 'b' + case *document.GeoPointField: + fieldType = 'g' + case *document.CompositeField: + fieldType = 'c' + } + return fieldType +} + +// returns the total # of bytes needed to encode the given uint64's +// into binary.PutUVarint() encoding +func totalUvarintBytes(a, b, c, d, e uint64, more []uint64) (n int) { + n = numUvarintBytes(a) + n += numUvarintBytes(b) + n += numUvarintBytes(c) + n += numUvarintBytes(d) + n += numUvarintBytes(e) + for _, v := range more { + n += numUvarintBytes(v) + } + return n +} + +// returns # of bytes needed to encode x in binary.PutUvarint() encoding +func numUvarintBytes(x uint64) (n int) { + for x >= 0x80 { + x >>= 7 + n++ + } + return n + 1 +} diff --git a/vendor/github.com/blevesearch/zap/v13/plugin.go b/vendor/github.com/blevesearch/zap/v13/plugin.go new file mode 100644 index 00000000..38a0638d --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/plugin.go @@ -0,0 +1,37 @@ +// Copyright (c) 2020 Couchbase, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package zap + +import ( + "github.com/blevesearch/bleve/index/scorch/segment" +) + +// ZapPlugin implements the Plugin interface of +// the blevesearch/bleve/index/scorch/segment pkg +type ZapPlugin struct{} + +func (*ZapPlugin) Type() string { + return Type +} + +func (*ZapPlugin) Version() uint32 { + return Version +} + +// Plugin returns an instance segment.Plugin for use +// by the Scorch indexing scheme +func Plugin() segment.Plugin { + return &ZapPlugin{} +} diff --git a/vendor/github.com/blevesearch/zap/v13/posting.go b/vendor/github.com/blevesearch/zap/v13/posting.go new file mode 100644 index 00000000..3a6ee548 --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/posting.go @@ -0,0 +1,798 @@ +// Copyright (c) 2017 Couchbase, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package zap + +import ( + "encoding/binary" + "fmt" + "math" + "reflect" + + "github.com/RoaringBitmap/roaring" + "github.com/blevesearch/bleve/index/scorch/segment" + "github.com/blevesearch/bleve/size" +) + +var reflectStaticSizePostingsList int +var reflectStaticSizePostingsIterator int +var reflectStaticSizePosting int +var reflectStaticSizeLocation int + +func init() { + var pl PostingsList + reflectStaticSizePostingsList = int(reflect.TypeOf(pl).Size()) + var pi PostingsIterator + reflectStaticSizePostingsIterator = int(reflect.TypeOf(pi).Size()) + var p Posting + reflectStaticSizePosting = int(reflect.TypeOf(p).Size()) + var l Location + reflectStaticSizeLocation = int(reflect.TypeOf(l).Size()) +} + +// FST or vellum value (uint64) encoding is determined by the top two +// highest-order or most significant bits... +// +// encoding : MSB +// name : 63 62 61...to...bit #0 (LSB) +// ----------+---+---+--------------------------------------------------- +// general : 0 | 0 | 62-bits of postingsOffset. +// ~ : 0 | 1 | reserved for future. +// 1-hit : 1 | 0 | 31-bits of positive float31 norm | 31-bits docNum. +// ~ : 1 | 1 | reserved for future. +// +// Encoding "general" is able to handle all cases, where the +// postingsOffset points to more information about the postings for +// the term. +// +// Encoding "1-hit" is used to optimize a commonly seen case when a +// term has only a single hit. For example, a term in the _id field +// will have only 1 hit. The "1-hit" encoding is used for a term +// in a field when... +// +// - term vector info is disabled for that field; +// - and, the term appears in only a single doc for that field; +// - and, the term's freq is exactly 1 in that single doc for that field; +// - and, the docNum must fit into 31-bits; +// +// Otherwise, the "general" encoding is used instead. +// +// In the "1-hit" encoding, the field in that single doc may have +// other terms, which is supported in the "1-hit" encoding by the +// positive float31 norm. + +const FSTValEncodingMask = uint64(0xc000000000000000) +const FSTValEncodingGeneral = uint64(0x0000000000000000) +const FSTValEncoding1Hit = uint64(0x8000000000000000) + +func FSTValEncode1Hit(docNum uint64, normBits uint64) uint64 { + return FSTValEncoding1Hit | ((mask31Bits & normBits) << 31) | (mask31Bits & docNum) +} + +func FSTValDecode1Hit(v uint64) (docNum uint64, normBits uint64) { + return (mask31Bits & v), (mask31Bits & (v >> 31)) +} + +const mask31Bits = uint64(0x000000007fffffff) + +func under32Bits(x uint64) bool { + return x <= mask31Bits +} + +const DocNum1HitFinished = math.MaxUint64 + +var NormBits1Hit = uint64(math.Float32bits(float32(1))) + +// PostingsList is an in-memory representation of a postings list +type PostingsList struct { + sb *SegmentBase + postingsOffset uint64 + freqOffset uint64 + locOffset uint64 + postings *roaring.Bitmap + except *roaring.Bitmap + + // when normBits1Hit != 0, then this postings list came from a + // 1-hit encoding, and only the docNum1Hit & normBits1Hit apply + docNum1Hit uint64 + normBits1Hit uint64 +} + +// represents an immutable, empty postings list +var emptyPostingsList = &PostingsList{} + +func (p *PostingsList) Size() int { + sizeInBytes := reflectStaticSizePostingsList + size.SizeOfPtr + + if p.except != nil { + sizeInBytes += int(p.except.GetSizeInBytes()) + } + + return sizeInBytes +} + +func (p *PostingsList) OrInto(receiver *roaring.Bitmap) { + if p.normBits1Hit != 0 { + receiver.Add(uint32(p.docNum1Hit)) + return + } + + if p.postings != nil { + receiver.Or(p.postings) + } +} + +// Iterator returns an iterator for this postings list +func (p *PostingsList) Iterator(includeFreq, includeNorm, includeLocs bool, + prealloc segment.PostingsIterator) segment.PostingsIterator { + if p.normBits1Hit == 0 && p.postings == nil { + return emptyPostingsIterator + } + + var preallocPI *PostingsIterator + pi, ok := prealloc.(*PostingsIterator) + if ok && pi != nil { + preallocPI = pi + } + if preallocPI == emptyPostingsIterator { + preallocPI = nil + } + + return p.iterator(includeFreq, includeNorm, includeLocs, preallocPI) +} + +func (p *PostingsList) iterator(includeFreq, includeNorm, includeLocs bool, + rv *PostingsIterator) *PostingsIterator { + if rv == nil { + rv = &PostingsIterator{} + } else { + freqNormReader := rv.freqNormReader + if freqNormReader != nil { + freqNormReader.reset() + } + + locReader := rv.locReader + if locReader != nil { + locReader.reset() + } + + nextLocs := rv.nextLocs[:0] + nextSegmentLocs := rv.nextSegmentLocs[:0] + + buf := rv.buf + + *rv = PostingsIterator{} // clear the struct + + rv.freqNormReader = freqNormReader + rv.locReader = locReader + + rv.nextLocs = nextLocs + rv.nextSegmentLocs = nextSegmentLocs + + rv.buf = buf + } + + rv.postings = p + rv.includeFreqNorm = includeFreq || includeNorm || includeLocs + rv.includeLocs = includeLocs + + if p.normBits1Hit != 0 { + // "1-hit" encoding + rv.docNum1Hit = p.docNum1Hit + rv.normBits1Hit = p.normBits1Hit + + if p.except != nil && p.except.Contains(uint32(rv.docNum1Hit)) { + rv.docNum1Hit = DocNum1HitFinished + } + + return rv + } + + // "general" encoding, check if empty + if p.postings == nil { + return rv + } + + // initialize freq chunk reader + if rv.includeFreqNorm { + rv.freqNormReader = newChunkedIntDecoder(p.sb.mem, p.freqOffset) + } + + // initialize the loc chunk reader + if rv.includeLocs { + rv.locReader = newChunkedIntDecoder(p.sb.mem, p.locOffset) + } + + rv.all = p.postings.Iterator() + if p.except != nil { + rv.ActualBM = roaring.AndNot(p.postings, p.except) + rv.Actual = rv.ActualBM.Iterator() + } else { + rv.ActualBM = p.postings + rv.Actual = rv.all // Optimize to use same iterator for all & Actual. + } + + return rv +} + +// Count returns the number of items on this postings list +func (p *PostingsList) Count() uint64 { + var n, e uint64 + if p.normBits1Hit != 0 { + n = 1 + if p.except != nil && p.except.Contains(uint32(p.docNum1Hit)) { + e = 1 + } + } else if p.postings != nil { + n = p.postings.GetCardinality() + if p.except != nil { + e = p.postings.AndCardinality(p.except) + } + } + return n - e +} + +func (rv *PostingsList) read(postingsOffset uint64, d *Dictionary) error { + rv.postingsOffset = postingsOffset + + // handle "1-hit" encoding special case + if rv.postingsOffset&FSTValEncodingMask == FSTValEncoding1Hit { + return rv.init1Hit(postingsOffset) + } + + // read the location of the freq/norm details + var n uint64 + var read int + + rv.freqOffset, read = binary.Uvarint(d.sb.mem[postingsOffset+n : postingsOffset+binary.MaxVarintLen64]) + n += uint64(read) + + rv.locOffset, read = binary.Uvarint(d.sb.mem[postingsOffset+n : postingsOffset+n+binary.MaxVarintLen64]) + n += uint64(read) + + var postingsLen uint64 + postingsLen, read = binary.Uvarint(d.sb.mem[postingsOffset+n : postingsOffset+n+binary.MaxVarintLen64]) + n += uint64(read) + + roaringBytes := d.sb.mem[postingsOffset+n : postingsOffset+n+postingsLen] + + if rv.postings == nil { + rv.postings = roaring.NewBitmap() + } + _, err := rv.postings.FromBuffer(roaringBytes) + if err != nil { + return fmt.Errorf("error loading roaring bitmap: %v", err) + } + + return nil +} + +func (rv *PostingsList) init1Hit(fstVal uint64) error { + docNum, normBits := FSTValDecode1Hit(fstVal) + + rv.docNum1Hit = docNum + rv.normBits1Hit = normBits + + return nil +} + +// PostingsIterator provides a way to iterate through the postings list +type PostingsIterator struct { + postings *PostingsList + all roaring.IntPeekable + Actual roaring.IntPeekable + ActualBM *roaring.Bitmap + + currChunk uint32 + freqNormReader *chunkedIntDecoder + locReader *chunkedIntDecoder + + next Posting // reused across Next() calls + nextLocs []Location // reused across Next() calls + nextSegmentLocs []segment.Location // reused across Next() calls + + docNum1Hit uint64 + normBits1Hit uint64 + + buf []byte + + includeFreqNorm bool + includeLocs bool +} + +var emptyPostingsIterator = &PostingsIterator{} + +func (i *PostingsIterator) Size() int { + sizeInBytes := reflectStaticSizePostingsIterator + size.SizeOfPtr + + i.next.Size() + // account for freqNormReader, locReader if we start using this. + for _, entry := range i.nextLocs { + sizeInBytes += entry.Size() + } + + return sizeInBytes +} + +func (i *PostingsIterator) loadChunk(chunk int) error { + if i.includeFreqNorm { + err := i.freqNormReader.loadChunk(chunk) + if err != nil { + return err + } + } + + if i.includeLocs { + err := i.locReader.loadChunk(chunk) + if err != nil { + return err + } + } + + i.currChunk = uint32(chunk) + return nil +} + +func (i *PostingsIterator) readFreqNormHasLocs() (uint64, uint64, bool, error) { + if i.normBits1Hit != 0 { + return 1, i.normBits1Hit, false, nil + } + + freqHasLocs, err := i.freqNormReader.readUvarint() + if err != nil { + return 0, 0, false, fmt.Errorf("error reading frequency: %v", err) + } + + freq, hasLocs := decodeFreqHasLocs(freqHasLocs) + + normBits, err := i.freqNormReader.readUvarint() + if err != nil { + return 0, 0, false, fmt.Errorf("error reading norm: %v", err) + } + + return freq, normBits, hasLocs, nil +} + +func (i *PostingsIterator) skipFreqNormReadHasLocs() (bool, error) { + if i.normBits1Hit != 0 { + return false, nil + } + + freqHasLocs, err := i.freqNormReader.readUvarint() + if err != nil { + return false, fmt.Errorf("error reading freqHasLocs: %v", err) + } + + i.freqNormReader.SkipUvarint() // Skip normBits. + + return freqHasLocs&0x01 != 0, nil // See decodeFreqHasLocs() / hasLocs. +} + +func encodeFreqHasLocs(freq uint64, hasLocs bool) uint64 { + rv := freq << 1 + if hasLocs { + rv = rv | 0x01 // 0'th LSB encodes whether there are locations + } + return rv +} + +func decodeFreqHasLocs(freqHasLocs uint64) (uint64, bool) { + freq := freqHasLocs >> 1 + hasLocs := freqHasLocs&0x01 != 0 + return freq, hasLocs +} + +// readLocation processes all the integers on the stream representing a single +// location. +func (i *PostingsIterator) readLocation(l *Location) error { + // read off field + fieldID, err := i.locReader.readUvarint() + if err != nil { + return fmt.Errorf("error reading location field: %v", err) + } + // read off pos + pos, err := i.locReader.readUvarint() + if err != nil { + return fmt.Errorf("error reading location pos: %v", err) + } + // read off start + start, err := i.locReader.readUvarint() + if err != nil { + return fmt.Errorf("error reading location start: %v", err) + } + // read off end + end, err := i.locReader.readUvarint() + if err != nil { + return fmt.Errorf("error reading location end: %v", err) + } + // read off num array pos + numArrayPos, err := i.locReader.readUvarint() + if err != nil { + return fmt.Errorf("error reading location num array pos: %v", err) + } + + l.field = i.postings.sb.fieldsInv[fieldID] + l.pos = pos + l.start = start + l.end = end + + if cap(l.ap) < int(numArrayPos) { + l.ap = make([]uint64, int(numArrayPos)) + } else { + l.ap = l.ap[:int(numArrayPos)] + } + + // read off array positions + for k := 0; k < int(numArrayPos); k++ { + ap, err := i.locReader.readUvarint() + if err != nil { + return fmt.Errorf("error reading array position: %v", err) + } + + l.ap[k] = ap + } + + return nil +} + +// Next returns the next posting on the postings list, or nil at the end +func (i *PostingsIterator) Next() (segment.Posting, error) { + return i.nextAtOrAfter(0) +} + +// Advance returns the posting at the specified docNum or it is not present +// the next posting, or if the end is reached, nil +func (i *PostingsIterator) Advance(docNum uint64) (segment.Posting, error) { + return i.nextAtOrAfter(docNum) +} + +// Next returns the next posting on the postings list, or nil at the end +func (i *PostingsIterator) nextAtOrAfter(atOrAfter uint64) (segment.Posting, error) { + docNum, exists, err := i.nextDocNumAtOrAfter(atOrAfter) + if err != nil || !exists { + return nil, err + } + + i.next = Posting{} // clear the struct + rv := &i.next + rv.docNum = docNum + + if !i.includeFreqNorm { + return rv, nil + } + + var normBits uint64 + var hasLocs bool + + rv.freq, normBits, hasLocs, err = i.readFreqNormHasLocs() + if err != nil { + return nil, err + } + + rv.norm = math.Float32frombits(uint32(normBits)) + + if i.includeLocs && hasLocs { + // prepare locations into reused slices, where we assume + // rv.freq >= "number of locs", since in a composite field, + // some component fields might have their IncludeTermVector + // flags disabled while other component fields are enabled + if cap(i.nextLocs) >= int(rv.freq) { + i.nextLocs = i.nextLocs[0:rv.freq] + } else { + i.nextLocs = make([]Location, rv.freq, rv.freq*2) + } + if cap(i.nextSegmentLocs) < int(rv.freq) { + i.nextSegmentLocs = make([]segment.Location, rv.freq, rv.freq*2) + } + rv.locs = i.nextSegmentLocs[:0] + + numLocsBytes, err := i.locReader.readUvarint() + if err != nil { + return nil, fmt.Errorf("error reading location numLocsBytes: %v", err) + } + + j := 0 + startBytesRemaining := i.locReader.Len() // # bytes remaining in the locReader + for startBytesRemaining-i.locReader.Len() < int(numLocsBytes) { + err := i.readLocation(&i.nextLocs[j]) + if err != nil { + return nil, err + } + rv.locs = append(rv.locs, &i.nextLocs[j]) + j++ + } + } + + return rv, nil +} + +// nextDocNum returns the next docNum on the postings list, and also +// sets up the currChunk / loc related fields of the iterator. +func (i *PostingsIterator) nextDocNumAtOrAfter(atOrAfter uint64) (uint64, bool, error) { + if i.normBits1Hit != 0 { + if i.docNum1Hit == DocNum1HitFinished { + return 0, false, nil + } + if i.docNum1Hit < atOrAfter { + // advanced past our 1-hit + i.docNum1Hit = DocNum1HitFinished // consume our 1-hit docNum + return 0, false, nil + } + docNum := i.docNum1Hit + i.docNum1Hit = DocNum1HitFinished // consume our 1-hit docNum + return docNum, true, nil + } + + if i.Actual == nil || !i.Actual.HasNext() { + return 0, false, nil + } + + if i.postings == nil || i.postings.postings == i.ActualBM { + return i.nextDocNumAtOrAfterClean(atOrAfter) + } + + i.Actual.AdvanceIfNeeded(uint32(atOrAfter)) + + if !i.Actual.HasNext() { + // couldn't find anything + return 0, false, nil + } + + n := i.Actual.Next() + allN := i.all.Next() + + chunkSize, err := getChunkSize(i.postings.sb.chunkMode, i.postings.postings.GetCardinality(), i.postings.sb.numDocs) + if err != nil { + return 0, false, err + } + nChunk := n / uint32(chunkSize) + + // when allN becomes >= to here, then allN is in the same chunk as nChunk. + allNReachesNChunk := nChunk * uint32(chunkSize) + + // n is the next actual hit (excluding some postings), and + // allN is the next hit in the full postings, and + // if they don't match, move 'all' forwards until they do + for allN != n { + // we've reached same chunk, so move the freq/norm/loc decoders forward + if i.includeFreqNorm && allN >= allNReachesNChunk { + err := i.currChunkNext(nChunk) + if err != nil { + return 0, false, err + } + } + + allN = i.all.Next() + } + + if i.includeFreqNorm && (i.currChunk != nChunk || i.freqNormReader.isNil()) { + err := i.loadChunk(int(nChunk)) + if err != nil { + return 0, false, fmt.Errorf("error loading chunk: %v", err) + } + } + + return uint64(n), true, nil +} + +// optimization when the postings list is "clean" (e.g., no updates & +// no deletions) where the all bitmap is the same as the actual bitmap +func (i *PostingsIterator) nextDocNumAtOrAfterClean( + atOrAfter uint64) (uint64, bool, error) { + + if !i.includeFreqNorm { + i.Actual.AdvanceIfNeeded(uint32(atOrAfter)) + + if !i.Actual.HasNext() { + return 0, false, nil // couldn't find anything + } + + return uint64(i.Actual.Next()), true, nil + } + + chunkSize, err := getChunkSize(i.postings.sb.chunkMode, i.postings.postings.GetCardinality(), i.postings.sb.numDocs) + if err != nil { + return 0, false, err + } + + // freq-norm's needed, so maintain freq-norm chunk reader + sameChunkNexts := 0 // # of times we called Next() in the same chunk + n := i.Actual.Next() + nChunk := n / uint32(chunkSize) + + for uint64(n) < atOrAfter && i.Actual.HasNext() { + n = i.Actual.Next() + + nChunkPrev := nChunk + nChunk = n / uint32(chunkSize) + + if nChunk != nChunkPrev { + sameChunkNexts = 0 + } else { + sameChunkNexts += 1 + } + } + + if uint64(n) < atOrAfter { + // couldn't find anything + return 0, false, nil + } + + for j := 0; j < sameChunkNexts; j++ { + err := i.currChunkNext(nChunk) + if err != nil { + return 0, false, fmt.Errorf("error optimized currChunkNext: %v", err) + } + } + + if i.currChunk != nChunk || i.freqNormReader.isNil() { + err := i.loadChunk(int(nChunk)) + if err != nil { + return 0, false, fmt.Errorf("error loading chunk: %v", err) + } + } + + return uint64(n), true, nil +} + +func (i *PostingsIterator) currChunkNext(nChunk uint32) error { + if i.currChunk != nChunk || i.freqNormReader.isNil() { + err := i.loadChunk(int(nChunk)) + if err != nil { + return fmt.Errorf("error loading chunk: %v", err) + } + } + + // read off freq/offsets even though we don't care about them + hasLocs, err := i.skipFreqNormReadHasLocs() + if err != nil { + return err + } + + if i.includeLocs && hasLocs { + numLocsBytes, err := i.locReader.readUvarint() + if err != nil { + return fmt.Errorf("error reading location numLocsBytes: %v", err) + } + + // skip over all the location bytes + i.locReader.SkipBytes(int(numLocsBytes)) + } + + return nil +} + +// DocNum1Hit returns the docNum and true if this is "1-hit" optimized +// and the docNum is available. +func (p *PostingsIterator) DocNum1Hit() (uint64, bool) { + if p.normBits1Hit != 0 && p.docNum1Hit != DocNum1HitFinished { + return p.docNum1Hit, true + } + return 0, false +} + +// ActualBitmap returns the underlying actual bitmap +// which can be used up the stack for optimizations +func (p *PostingsIterator) ActualBitmap() *roaring.Bitmap { + return p.ActualBM +} + +// ReplaceActual replaces the ActualBM with the provided +// bitmap +func (p *PostingsIterator) ReplaceActual(abm *roaring.Bitmap) { + p.ActualBM = abm + p.Actual = abm.Iterator() +} + +// PostingsIteratorFromBitmap constructs a PostingsIterator given an +// "actual" bitmap. +func PostingsIteratorFromBitmap(bm *roaring.Bitmap, + includeFreqNorm, includeLocs bool) (segment.PostingsIterator, error) { + return &PostingsIterator{ + ActualBM: bm, + Actual: bm.Iterator(), + includeFreqNorm: includeFreqNorm, + includeLocs: includeLocs, + }, nil +} + +// PostingsIteratorFrom1Hit constructs a PostingsIterator given a +// 1-hit docNum. +func PostingsIteratorFrom1Hit(docNum1Hit uint64, + includeFreqNorm, includeLocs bool) (segment.PostingsIterator, error) { + return &PostingsIterator{ + docNum1Hit: docNum1Hit, + normBits1Hit: NormBits1Hit, + includeFreqNorm: includeFreqNorm, + includeLocs: includeLocs, + }, nil +} + +// Posting is a single entry in a postings list +type Posting struct { + docNum uint64 + freq uint64 + norm float32 + locs []segment.Location +} + +func (p *Posting) Size() int { + sizeInBytes := reflectStaticSizePosting + + for _, entry := range p.locs { + sizeInBytes += entry.Size() + } + + return sizeInBytes +} + +// Number returns the document number of this posting in this segment +func (p *Posting) Number() uint64 { + return p.docNum +} + +// Frequency returns the frequencies of occurrence of this term in this doc/field +func (p *Posting) Frequency() uint64 { + return p.freq +} + +// Norm returns the normalization factor for this posting +func (p *Posting) Norm() float64 { + return float64(p.norm) +} + +// Locations returns the location information for each occurrence +func (p *Posting) Locations() []segment.Location { + return p.locs +} + +// Location represents the location of a single occurrence +type Location struct { + field string + pos uint64 + start uint64 + end uint64 + ap []uint64 +} + +func (l *Location) Size() int { + return reflectStaticSizeLocation + + len(l.field) + + len(l.ap)*size.SizeOfUint64 +} + +// Field returns the name of the field (useful in composite fields to know +// which original field the value came from) +func (l *Location) Field() string { + return l.field +} + +// Start returns the start byte offset of this occurrence +func (l *Location) Start() uint64 { + return l.start +} + +// End returns the end byte offset of this occurrence +func (l *Location) End() uint64 { + return l.end +} + +// Pos returns the 1-based phrase position of this occurrence +func (l *Location) Pos() uint64 { + return l.pos +} + +// ArrayPositions returns the array position vector associated with this occurrence +func (l *Location) ArrayPositions() []uint64 { + return l.ap +} diff --git a/vendor/github.com/blevesearch/zap/v13/read.go b/vendor/github.com/blevesearch/zap/v13/read.go new file mode 100644 index 00000000..e47d4c6a --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/read.go @@ -0,0 +1,43 @@ +// Copyright (c) 2017 Couchbase, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package zap + +import "encoding/binary" + +func (s *SegmentBase) getDocStoredMetaAndCompressed(docNum uint64) ([]byte, []byte) { + _, storedOffset, n, metaLen, dataLen := s.getDocStoredOffsets(docNum) + + meta := s.mem[storedOffset+n : storedOffset+n+metaLen] + data := s.mem[storedOffset+n+metaLen : storedOffset+n+metaLen+dataLen] + + return meta, data +} + +func (s *SegmentBase) getDocStoredOffsets(docNum uint64) ( + uint64, uint64, uint64, uint64, uint64) { + indexOffset := s.storedIndexOffset + (8 * docNum) + + storedOffset := binary.BigEndian.Uint64(s.mem[indexOffset : indexOffset+8]) + + var n uint64 + + metaLen, read := binary.Uvarint(s.mem[storedOffset : storedOffset+binary.MaxVarintLen64]) + n += uint64(read) + + dataLen, read := binary.Uvarint(s.mem[storedOffset+n : storedOffset+n+binary.MaxVarintLen64]) + n += uint64(read) + + return indexOffset, storedOffset, n, metaLen, dataLen +} diff --git a/vendor/github.com/blevesearch/zap/v13/segment.go b/vendor/github.com/blevesearch/zap/v13/segment.go new file mode 100644 index 00000000..e8b1f067 --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/segment.go @@ -0,0 +1,572 @@ +// Copyright (c) 2017 Couchbase, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package zap + +import ( + "bytes" + "encoding/binary" + "fmt" + "io" + "os" + "sync" + "unsafe" + + "github.com/RoaringBitmap/roaring" + "github.com/blevesearch/bleve/index/scorch/segment" + "github.com/blevesearch/bleve/size" + "github.com/couchbase/vellum" + mmap "github.com/blevesearch/mmap-go" + "github.com/golang/snappy" +) + +var reflectStaticSizeSegmentBase int + +func init() { + var sb SegmentBase + reflectStaticSizeSegmentBase = int(unsafe.Sizeof(sb)) +} + +// Open returns a zap impl of a segment +func (*ZapPlugin) Open(path string) (segment.Segment, error) { + f, err := os.Open(path) + if err != nil { + return nil, err + } + mm, err := mmap.Map(f, mmap.RDONLY, 0) + if err != nil { + // mmap failed, try to close the file + _ = f.Close() + return nil, err + } + + rv := &Segment{ + SegmentBase: SegmentBase{ + mem: mm[0 : len(mm)-FooterSize], + fieldsMap: make(map[string]uint16), + fieldDvReaders: make(map[uint16]*docValueReader), + fieldFSTs: make(map[uint16]*vellum.FST), + }, + f: f, + mm: mm, + path: path, + refs: 1, + } + rv.SegmentBase.updateSize() + + err = rv.loadConfig() + if err != nil { + _ = rv.Close() + return nil, err + } + + err = rv.loadFields() + if err != nil { + _ = rv.Close() + return nil, err + } + + err = rv.loadDvReaders() + if err != nil { + _ = rv.Close() + return nil, err + } + + return rv, nil +} + +// SegmentBase is a memory only, read-only implementation of the +// segment.Segment interface, using zap's data representation. +type SegmentBase struct { + mem []byte + memCRC uint32 + chunkMode uint32 + fieldsMap map[string]uint16 // fieldName -> fieldID+1 + fieldsInv []string // fieldID -> fieldName + numDocs uint64 + storedIndexOffset uint64 + fieldsIndexOffset uint64 + docValueOffset uint64 + dictLocs []uint64 + fieldDvReaders map[uint16]*docValueReader // naive chunk cache per field + fieldDvNames []string // field names cached in fieldDvReaders + size uint64 + + m sync.Mutex + fieldFSTs map[uint16]*vellum.FST +} + +func (sb *SegmentBase) Size() int { + return int(sb.size) +} + +func (sb *SegmentBase) updateSize() { + sizeInBytes := reflectStaticSizeSegmentBase + + cap(sb.mem) + + // fieldsMap + for k := range sb.fieldsMap { + sizeInBytes += (len(k) + size.SizeOfString) + size.SizeOfUint16 + } + + // fieldsInv, dictLocs + for _, entry := range sb.fieldsInv { + sizeInBytes += len(entry) + size.SizeOfString + } + sizeInBytes += len(sb.dictLocs) * size.SizeOfUint64 + + // fieldDvReaders + for _, v := range sb.fieldDvReaders { + sizeInBytes += size.SizeOfUint16 + size.SizeOfPtr + if v != nil { + sizeInBytes += v.size() + } + } + + sb.size = uint64(sizeInBytes) +} + +func (sb *SegmentBase) AddRef() {} +func (sb *SegmentBase) DecRef() (err error) { return nil } +func (sb *SegmentBase) Close() (err error) { return nil } + +// Segment implements a persisted segment.Segment interface, by +// embedding an mmap()'ed SegmentBase. +type Segment struct { + SegmentBase + + f *os.File + mm mmap.MMap + path string + version uint32 + crc uint32 + + m sync.Mutex // Protects the fields that follow. + refs int64 +} + +func (s *Segment) Size() int { + // 8 /* size of file pointer */ + // 4 /* size of version -> uint32 */ + // 4 /* size of crc -> uint32 */ + sizeOfUints := 16 + + sizeInBytes := (len(s.path) + size.SizeOfString) + sizeOfUints + + // mutex, refs -> int64 + sizeInBytes += 16 + + // do not include the mmap'ed part + return sizeInBytes + s.SegmentBase.Size() - cap(s.mem) +} + +func (s *Segment) AddRef() { + s.m.Lock() + s.refs++ + s.m.Unlock() +} + +func (s *Segment) DecRef() (err error) { + s.m.Lock() + s.refs-- + if s.refs == 0 { + err = s.closeActual() + } + s.m.Unlock() + return err +} + +func (s *Segment) loadConfig() error { + crcOffset := len(s.mm) - 4 + s.crc = binary.BigEndian.Uint32(s.mm[crcOffset : crcOffset+4]) + + verOffset := crcOffset - 4 + s.version = binary.BigEndian.Uint32(s.mm[verOffset : verOffset+4]) + if s.version != Version { + return fmt.Errorf("unsupported version %d", s.version) + } + + chunkOffset := verOffset - 4 + s.chunkMode = binary.BigEndian.Uint32(s.mm[chunkOffset : chunkOffset+4]) + + docValueOffset := chunkOffset - 8 + s.docValueOffset = binary.BigEndian.Uint64(s.mm[docValueOffset : docValueOffset+8]) + + fieldsIndexOffset := docValueOffset - 8 + s.fieldsIndexOffset = binary.BigEndian.Uint64(s.mm[fieldsIndexOffset : fieldsIndexOffset+8]) + + storedIndexOffset := fieldsIndexOffset - 8 + s.storedIndexOffset = binary.BigEndian.Uint64(s.mm[storedIndexOffset : storedIndexOffset+8]) + + numDocsOffset := storedIndexOffset - 8 + s.numDocs = binary.BigEndian.Uint64(s.mm[numDocsOffset : numDocsOffset+8]) + return nil +} + +func (s *SegmentBase) loadFields() error { + // NOTE for now we assume the fields index immediately precedes + // the footer, and if this changes, need to adjust accordingly (or + // store explicit length), where s.mem was sliced from s.mm in Open(). + fieldsIndexEnd := uint64(len(s.mem)) + + // iterate through fields index + var fieldID uint64 + for s.fieldsIndexOffset+(8*fieldID) < fieldsIndexEnd { + addr := binary.BigEndian.Uint64(s.mem[s.fieldsIndexOffset+(8*fieldID) : s.fieldsIndexOffset+(8*fieldID)+8]) + + dictLoc, read := binary.Uvarint(s.mem[addr:fieldsIndexEnd]) + n := uint64(read) + s.dictLocs = append(s.dictLocs, dictLoc) + + var nameLen uint64 + nameLen, read = binary.Uvarint(s.mem[addr+n : fieldsIndexEnd]) + n += uint64(read) + + name := string(s.mem[addr+n : addr+n+nameLen]) + s.fieldsInv = append(s.fieldsInv, name) + s.fieldsMap[name] = uint16(fieldID + 1) + + fieldID++ + } + return nil +} + +// Dictionary returns the term dictionary for the specified field +func (s *SegmentBase) Dictionary(field string) (segment.TermDictionary, error) { + dict, err := s.dictionary(field) + if err == nil && dict == nil { + return &segment.EmptyDictionary{}, nil + } + return dict, err +} + +func (sb *SegmentBase) dictionary(field string) (rv *Dictionary, err error) { + fieldIDPlus1 := sb.fieldsMap[field] + if fieldIDPlus1 > 0 { + rv = &Dictionary{ + sb: sb, + field: field, + fieldID: fieldIDPlus1 - 1, + } + + dictStart := sb.dictLocs[rv.fieldID] + if dictStart > 0 { + var ok bool + sb.m.Lock() + if rv.fst, ok = sb.fieldFSTs[rv.fieldID]; !ok { + // read the length of the vellum data + vellumLen, read := binary.Uvarint(sb.mem[dictStart : dictStart+binary.MaxVarintLen64]) + fstBytes := sb.mem[dictStart+uint64(read) : dictStart+uint64(read)+vellumLen] + rv.fst, err = vellum.Load(fstBytes) + if err != nil { + sb.m.Unlock() + return nil, fmt.Errorf("dictionary field %s vellum err: %v", field, err) + } + + sb.fieldFSTs[rv.fieldID] = rv.fst + } + + sb.m.Unlock() + rv.fstReader, err = rv.fst.Reader() + if err != nil { + return nil, fmt.Errorf("dictionary field %s vellum reader err: %v", field, err) + } + + } + } + + return rv, nil +} + +// visitDocumentCtx holds data structures that are reusable across +// multiple VisitDocument() calls to avoid memory allocations +type visitDocumentCtx struct { + buf []byte + reader bytes.Reader + arrayPos []uint64 +} + +var visitDocumentCtxPool = sync.Pool{ + New: func() interface{} { + reuse := &visitDocumentCtx{} + return reuse + }, +} + +// VisitDocument invokes the DocFieldValueVistor for each stored field +// for the specified doc number +func (s *SegmentBase) VisitDocument(num uint64, visitor segment.DocumentFieldValueVisitor) error { + vdc := visitDocumentCtxPool.Get().(*visitDocumentCtx) + defer visitDocumentCtxPool.Put(vdc) + return s.visitDocument(vdc, num, visitor) +} + +func (s *SegmentBase) visitDocument(vdc *visitDocumentCtx, num uint64, + visitor segment.DocumentFieldValueVisitor) error { + // first make sure this is a valid number in this segment + if num < s.numDocs { + meta, compressed := s.getDocStoredMetaAndCompressed(num) + + vdc.reader.Reset(meta) + + // handle _id field special case + idFieldValLen, err := binary.ReadUvarint(&vdc.reader) + if err != nil { + return err + } + idFieldVal := compressed[:idFieldValLen] + + keepGoing := visitor("_id", byte('t'), idFieldVal, nil) + if !keepGoing { + visitDocumentCtxPool.Put(vdc) + return nil + } + + // handle non-"_id" fields + compressed = compressed[idFieldValLen:] + + uncompressed, err := snappy.Decode(vdc.buf[:cap(vdc.buf)], compressed) + if err != nil { + return err + } + + for keepGoing { + field, err := binary.ReadUvarint(&vdc.reader) + if err == io.EOF { + break + } + if err != nil { + return err + } + typ, err := binary.ReadUvarint(&vdc.reader) + if err != nil { + return err + } + offset, err := binary.ReadUvarint(&vdc.reader) + if err != nil { + return err + } + l, err := binary.ReadUvarint(&vdc.reader) + if err != nil { + return err + } + numap, err := binary.ReadUvarint(&vdc.reader) + if err != nil { + return err + } + var arrayPos []uint64 + if numap > 0 { + if cap(vdc.arrayPos) < int(numap) { + vdc.arrayPos = make([]uint64, numap) + } + arrayPos = vdc.arrayPos[:numap] + for i := 0; i < int(numap); i++ { + ap, err := binary.ReadUvarint(&vdc.reader) + if err != nil { + return err + } + arrayPos[i] = ap + } + } + + value := uncompressed[offset : offset+l] + keepGoing = visitor(s.fieldsInv[field], byte(typ), value, arrayPos) + } + + vdc.buf = uncompressed + } + return nil +} + +// DocID returns the value of the _id field for the given docNum +func (s *SegmentBase) DocID(num uint64) ([]byte, error) { + if num >= s.numDocs { + return nil, nil + } + + vdc := visitDocumentCtxPool.Get().(*visitDocumentCtx) + + meta, compressed := s.getDocStoredMetaAndCompressed(num) + + vdc.reader.Reset(meta) + + // handle _id field special case + idFieldValLen, err := binary.ReadUvarint(&vdc.reader) + if err != nil { + return nil, err + } + idFieldVal := compressed[:idFieldValLen] + + visitDocumentCtxPool.Put(vdc) + + return idFieldVal, nil +} + +// Count returns the number of documents in this segment. +func (s *SegmentBase) Count() uint64 { + return s.numDocs +} + +// DocNumbers returns a bitset corresponding to the doc numbers of all the +// provided _id strings +func (s *SegmentBase) DocNumbers(ids []string) (*roaring.Bitmap, error) { + rv := roaring.New() + + if len(s.fieldsMap) > 0 { + idDict, err := s.dictionary("_id") + if err != nil { + return nil, err + } + + postingsList := emptyPostingsList + + sMax, err := idDict.fst.GetMaxKey() + if err != nil { + return nil, err + } + sMaxStr := string(sMax) + filteredIds := make([]string, 0, len(ids)) + for _, id := range ids { + if id <= sMaxStr { + filteredIds = append(filteredIds, id) + } + } + + for _, id := range filteredIds { + postingsList, err = idDict.postingsList([]byte(id), nil, postingsList) + if err != nil { + return nil, err + } + postingsList.OrInto(rv) + } + } + + return rv, nil +} + +// Fields returns the field names used in this segment +func (s *SegmentBase) Fields() []string { + return s.fieldsInv +} + +// Path returns the path of this segment on disk +func (s *Segment) Path() string { + return s.path +} + +// Close releases all resources associated with this segment +func (s *Segment) Close() (err error) { + return s.DecRef() +} + +func (s *Segment) closeActual() (err error) { + if s.mm != nil { + err = s.mm.Unmap() + } + // try to close file even if unmap failed + if s.f != nil { + err2 := s.f.Close() + if err == nil { + // try to return first error + err = err2 + } + } + return +} + +// some helpers i started adding for the command-line utility + +// Data returns the underlying mmaped data slice +func (s *Segment) Data() []byte { + return s.mm +} + +// CRC returns the CRC value stored in the file footer +func (s *Segment) CRC() uint32 { + return s.crc +} + +// Version returns the file version in the file footer +func (s *Segment) Version() uint32 { + return s.version +} + +// ChunkFactor returns the chunk factor in the file footer +func (s *Segment) ChunkMode() uint32 { + return s.chunkMode +} + +// FieldsIndexOffset returns the fields index offset in the file footer +func (s *Segment) FieldsIndexOffset() uint64 { + return s.fieldsIndexOffset +} + +// StoredIndexOffset returns the stored value index offset in the file footer +func (s *Segment) StoredIndexOffset() uint64 { + return s.storedIndexOffset +} + +// DocValueOffset returns the docValue offset in the file footer +func (s *Segment) DocValueOffset() uint64 { + return s.docValueOffset +} + +// NumDocs returns the number of documents in the file footer +func (s *Segment) NumDocs() uint64 { + return s.numDocs +} + +// DictAddr is a helper function to compute the file offset where the +// dictionary is stored for the specified field. +func (s *Segment) DictAddr(field string) (uint64, error) { + fieldIDPlus1, ok := s.fieldsMap[field] + if !ok { + return 0, fmt.Errorf("no such field '%s'", field) + } + + return s.dictLocs[fieldIDPlus1-1], nil +} + +func (s *SegmentBase) loadDvReaders() error { + if s.docValueOffset == fieldNotUninverted || s.numDocs == 0 { + return nil + } + + var read uint64 + for fieldID, field := range s.fieldsInv { + var fieldLocStart, fieldLocEnd uint64 + var n int + fieldLocStart, n = binary.Uvarint(s.mem[s.docValueOffset+read : s.docValueOffset+read+binary.MaxVarintLen64]) + if n <= 0 { + return fmt.Errorf("loadDvReaders: failed to read the docvalue offset start for field %d", fieldID) + } + read += uint64(n) + fieldLocEnd, n = binary.Uvarint(s.mem[s.docValueOffset+read : s.docValueOffset+read+binary.MaxVarintLen64]) + if n <= 0 { + return fmt.Errorf("loadDvReaders: failed to read the docvalue offset end for field %d", fieldID) + } + read += uint64(n) + + fieldDvReader, err := s.loadFieldDocValueReader(field, fieldLocStart, fieldLocEnd) + if err != nil { + return err + } + if fieldDvReader != nil { + s.fieldDvReaders[uint16(fieldID)] = fieldDvReader + s.fieldDvNames = append(s.fieldDvNames, field) + } + } + + return nil +} diff --git a/vendor/github.com/blevesearch/zap/v13/write.go b/vendor/github.com/blevesearch/zap/v13/write.go new file mode 100644 index 00000000..77aefdbf --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/write.go @@ -0,0 +1,145 @@ +// Copyright (c) 2017 Couchbase, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package zap + +import ( + "encoding/binary" + "io" + + "github.com/RoaringBitmap/roaring" +) + +// writes out the length of the roaring bitmap in bytes as varint +// then writes out the roaring bitmap itself +func writeRoaringWithLen(r *roaring.Bitmap, w io.Writer, + reuseBufVarint []byte) (int, error) { + buf, err := r.ToBytes() + if err != nil { + return 0, err + } + + var tw int + + // write out the length + n := binary.PutUvarint(reuseBufVarint, uint64(len(buf))) + nw, err := w.Write(reuseBufVarint[:n]) + tw += nw + if err != nil { + return tw, err + } + + // write out the roaring bytes + nw, err = w.Write(buf) + tw += nw + if err != nil { + return tw, err + } + + return tw, nil +} + +func persistFields(fieldsInv []string, w *CountHashWriter, dictLocs []uint64) (uint64, error) { + var rv uint64 + var fieldsOffsets []uint64 + + for fieldID, fieldName := range fieldsInv { + // record start of this field + fieldsOffsets = append(fieldsOffsets, uint64(w.Count())) + + // write out the dict location and field name length + _, err := writeUvarints(w, dictLocs[fieldID], uint64(len(fieldName))) + if err != nil { + return 0, err + } + + // write out the field name + _, err = w.Write([]byte(fieldName)) + if err != nil { + return 0, err + } + } + + // now write out the fields index + rv = uint64(w.Count()) + for fieldID := range fieldsInv { + err := binary.Write(w, binary.BigEndian, fieldsOffsets[fieldID]) + if err != nil { + return 0, err + } + } + + return rv, nil +} + +// FooterSize is the size of the footer record in bytes +// crc + ver + chunk + field offset + stored offset + num docs + docValueOffset +const FooterSize = 4 + 4 + 4 + 8 + 8 + 8 + 8 + +func persistFooter(numDocs, storedIndexOffset, fieldsIndexOffset, docValueOffset uint64, + chunkMode uint32, crcBeforeFooter uint32, writerIn io.Writer) error { + w := NewCountHashWriter(writerIn) + w.crc = crcBeforeFooter + + // write out the number of docs + err := binary.Write(w, binary.BigEndian, numDocs) + if err != nil { + return err + } + // write out the stored field index location: + err = binary.Write(w, binary.BigEndian, storedIndexOffset) + if err != nil { + return err + } + // write out the field index location + err = binary.Write(w, binary.BigEndian, fieldsIndexOffset) + if err != nil { + return err + } + // write out the fieldDocValue location + err = binary.Write(w, binary.BigEndian, docValueOffset) + if err != nil { + return err + } + // write out 32-bit chunk factor + err = binary.Write(w, binary.BigEndian, chunkMode) + if err != nil { + return err + } + // write out 32-bit version + err = binary.Write(w, binary.BigEndian, Version) + if err != nil { + return err + } + // write out CRC-32 of everything upto but not including this CRC + err = binary.Write(w, binary.BigEndian, w.crc) + if err != nil { + return err + } + return nil +} + +func writeUvarints(w io.Writer, vals ...uint64) (tw int, err error) { + buf := make([]byte, binary.MaxVarintLen64) + for _, val := range vals { + n := binary.PutUvarint(buf, val) + var nw int + nw, err = w.Write(buf[:n]) + tw += nw + if err != nil { + return tw, err + } + } + return tw, err +} diff --git a/vendor/github.com/blevesearch/zap/v13/zap.md b/vendor/github.com/blevesearch/zap/v13/zap.md new file mode 100644 index 00000000..d74dc548 --- /dev/null +++ b/vendor/github.com/blevesearch/zap/v13/zap.md @@ -0,0 +1,177 @@ +# ZAP File Format + +## Legend + +### Sections + + |========| + | | section + |========| + +### Fixed-size fields + + |--------| |----| |--| |-| + | | uint64 | | uint32 | | uint16 | | uint8 + |--------| |----| |--| |-| + +### Varints + + |~~~~~~~~| + | | varint(up to uint64) + |~~~~~~~~| + +### Arbitrary-length fields + + |--------...---| + | | arbitrary-length field (string, vellum, roaring bitmap) + |--------...---| + +### Chunked data + + [--------] + [ ] + [--------] + +## Overview + +Footer section describes the configuration of particular ZAP file. The format of footer is version-dependent, so it is necessary to check `V` field before the parsing. + + |==================================================| + | Stored Fields | + |==================================================| + |-----> | Stored Fields Index | + | |==================================================| + | | Dictionaries + Postings + DocValues | + | |==================================================| + | |---> | DocValues Index | + | | |==================================================| + | | | Fields | + | | |==================================================| + | | |-> | Fields Index | + | | | |========|========|========|========|====|====|====| + | | | | D# | SF | F | FDV | CF | V | CC | (Footer) + | | | |========|====|===|====|===|====|===|====|====|====| + | | | | | | + |-+-+-----------------| | | + | |--------------------------| | + |-------------------------------------| + + D#. Number of Docs. + SF. Stored Fields Index Offset. + F. Field Index Offset. + FDV. Field DocValue Offset. + CF. Chunk Factor. + V. Version. + CC. CRC32. + +## Stored Fields + +Stored Fields Index is `D#` consecutive 64-bit unsigned integers - offsets, where relevant Stored Fields Data records are located. + + 0 [SF] [SF + D# * 8] + | Stored Fields | Stored Fields Index | + |================================|==================================| + | | | + | |--------------------| ||--------|--------|. . .|--------|| + | |-> | Stored Fields Data | || 0 | 1 | | D# - 1 || + | | |--------------------| ||--------|----|---|. . .|--------|| + | | | | | + |===|============================|==============|===================| + | | + |-------------------------------------------| + +Stored Fields Data is an arbitrary size record, which consists of metadata and [Snappy](https://github.com/golang/snappy)-compressed data. + + Stored Fields Data + |~~~~~~~~|~~~~~~~~|~~~~~~~~...~~~~~~~~|~~~~~~~~...~~~~~~~~| + | MDS | CDS | MD | CD | + |~~~~~~~~|~~~~~~~~|~~~~~~~~...~~~~~~~~|~~~~~~~~...~~~~~~~~| + + MDS. Metadata size. + CDS. Compressed data size. + MD. Metadata. + CD. Snappy-compressed data. + +## Fields + +Fields Index section located between addresses `F` and `len(file) - len(footer)` and consist of `uint64` values (`F1`, `F2`, ...) which are offsets to records in Fields section. We have `F# = (len(file) - len(footer) - F) / sizeof(uint64)` fields. + + + (...) [F] [F + F#] + | Fields | Fields Index. | + |================================|================================| + | | | + | |~~~~~~~~|~~~~~~~~|---...---|||--------|--------|...|--------|| + ||->| Dict | Length | Name ||| 0 | 1 | | F# - 1 || + || |~~~~~~~~|~~~~~~~~|---...---|||--------|----|---|...|--------|| + || | | | + ||===============================|==============|=================| + | | + |----------------------------------------------| + + +## Dictionaries + Postings + +Each of fields has its own dictionary, encoded in [Vellum](https://github.com/couchbase/vellum) format. Dictionary consists of pairs `(term, offset)`, where `offset` indicates the position of postings (list of documents) for this particular term. + + |================================================================|- Dictionaries + + | | Postings + + | | DocValues + | Freq/Norm (chunked) | + | [~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~] | + | |->[ Freq | Norm (float32 under varint) ] | + | | [~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~] | + | | | + | |------------------------------------------------------------| | + | Location Details (chunked) | | + | [~~~~~~|~~~~~|~~~~~~~|~~~~~|~~~~~~|~~~~~~~~|~~~~~] | | + | |->[ Size | Pos | Start | End | Arr# | ArrPos | ... ] | | + | | [~~~~~~|~~~~~|~~~~~~~|~~~~~|~~~~~~|~~~~~~~~|~~~~~] | | + | | | | + | |----------------------| | | + | Postings List | | | + | |~~~~~~~~|~~~~~|~~|~~~~~~~~|-----------...--| | | + | |->| F/N | LD | Length | ROARING BITMAP | | | + | | |~~~~~|~~|~~~~~~~~|~~~~~~~~|-----------...--| | | + | | |----------------------------------------------| | + | |--------------------------------------| | + | Dictionary | | + | |~~~~~~~~|--------------------------|-...-| | + | |->| Length | VELLUM DATA : (TERM -> OFFSET) | | + | | |~~~~~~~~|----------------------------...-| | + | | | + |======|=========================================================|- DocValues Index + | | | + |======|=========================================================|- Fields + | | | + | |~~~~|~~~|~~~~~~~~|---...---| | + | | Dict | Length | Name | | + | |~~~~~~~~|~~~~~~~~|---...---| | + | | + |================================================================| + +## DocValues + +DocValues Index is `F#` pairs of varints, one pair per field. Each pair of varints indicates start and end point of DocValues slice. + + |================================================================| + | |------...--| | + | |->| DocValues |<-| | + | | |------...--| | | + |==|=================|===========================================|- DocValues Index + ||~|~~~~~~~~~|~~~~~~~|~~| |~~~~~~~~~~~~~~|~~~~~~~~~~~~|| + || DV1 START | DV1 STOP | . . . . . | DV(F#) START | DV(F#) END || + ||~~~~~~~~~~~|~~~~~~~~~~| |~~~~~~~~~~~~~~|~~~~~~~~~~~~|| + |================================================================| + +DocValues is chunked Snappy-compressed values for each document and field. + + [~~~~~~~~~~~~~~~|~~~~~~|~~~~~~~~~|-...-|~~~~~~|~~~~~~~~~|--------------------...-] + [ Doc# in Chunk | Doc1 | Offset1 | ... | DocN | OffsetN | SNAPPY COMPRESSED DATA ] + [~~~~~~~~~~~~~~~|~~~~~~|~~~~~~~~~|-...-|~~~~~~|~~~~~~~~~|--------------------...-] + +Last 16 bytes are description of chunks. + + |~~~~~~~~~~~~...~|----------------|----------------| + | Chunk Sizes | Chunk Size Arr | Chunk# | + |~~~~~~~~~~~~...~|----------------|----------------| diff --git a/vendor/github.com/caddyserver/certmagic/README.md b/vendor/github.com/caddyserver/certmagic/README.md index f8f09bc7..7632af96 100644 --- a/vendor/github.com/caddyserver/certmagic/README.md +++ b/vendor/github.com/caddyserver/certmagic/README.md @@ -248,9 +248,9 @@ cache := certmagic.NewCache(certmagic.CacheOptions{ // mind that this config value is used as a // template, and will be completed with any // defaults that are set in the Default config - return certmagic.Config{ + return &certmagic.Config{ // ... - }), nil + }, nil }, ... }) diff --git a/vendor/github.com/caddyserver/certmagic/async.go b/vendor/github.com/caddyserver/certmagic/async.go index 3f9a01b0..f9f702aa 100644 --- a/vendor/github.com/caddyserver/certmagic/async.go +++ b/vendor/github.com/caddyserver/certmagic/async.go @@ -4,6 +4,7 @@ import ( "context" "errors" "log" + "runtime" "sync" "time" ) @@ -48,6 +49,14 @@ func (jm *jobManager) Submit(name string, job func() error) { } func (jm *jobManager) worker() { + defer func() { + if err := recover(); err != nil { + buf := make([]byte, stackTraceBufferSize) + buf = buf[:runtime.Stack(buf, false)] + log.Printf("panic: certificate worker: %v\n%s", err, buf) + } + }() + for { jm.mu.Lock() if len(jm.queue) == 0 { diff --git a/vendor/github.com/caddyserver/certmagic/certmagic.go b/vendor/github.com/caddyserver/certmagic/certmagic.go index eca4537d..e20dcba0 100644 --- a/vendor/github.com/caddyserver/certmagic/certmagic.go +++ b/vendor/github.com/caddyserver/certmagic/certmagic.go @@ -470,3 +470,6 @@ var ( lnMu sync.Mutex httpWg sync.WaitGroup ) + +// Maximum size for the stack trace when recovering from panics. +const stackTraceBufferSize = 1024 * 1024 * 64 diff --git a/vendor/github.com/caddyserver/certmagic/config.go b/vendor/github.com/caddyserver/certmagic/config.go index 06d91545..b412b8f4 100644 --- a/vendor/github.com/caddyserver/certmagic/config.go +++ b/vendor/github.com/caddyserver/certmagic/config.go @@ -42,7 +42,7 @@ type Config struct { // renewal window, which is the span of time at the // end of the certificate's validity period in which // it should be renewed; for most certificates, the - // global default is good, but for exremely short- + // global default is good, but for extremely short- // lived certs, you may want to raise this to ~0.5. RenewalWindowRatio float64 diff --git a/vendor/github.com/caddyserver/certmagic/filestorage.go b/vendor/github.com/caddyserver/certmagic/filestorage.go index 6887d817..ae46dff5 100644 --- a/vendor/github.com/caddyserver/certmagic/filestorage.go +++ b/vendor/github.com/caddyserver/certmagic/filestorage.go @@ -246,6 +246,14 @@ func removeLockfile(filename string) error { // not terminate until up to lockFreshnessInterval after // the lock is released. func keepLockfileFresh(filename string) { + defer func() { + if err := recover(); err != nil { + buf := make([]byte, stackTraceBufferSize) + buf = buf[:runtime.Stack(buf, false)] + log.Printf("panic: active locking: %v\n%s", err, buf) + } + }() + for { time.Sleep(lockFreshnessInterval) done, err := updateLockfileFreshness(filename) diff --git a/vendor/github.com/caddyserver/certmagic/go.mod b/vendor/github.com/caddyserver/certmagic/go.mod index e3c21f22..d184685c 100644 --- a/vendor/github.com/caddyserver/certmagic/go.mod +++ b/vendor/github.com/caddyserver/certmagic/go.mod @@ -3,7 +3,7 @@ module github.com/caddyserver/certmagic go 1.13 require ( - github.com/go-acme/lego/v3 v3.4.0 + github.com/go-acme/lego/v3 v3.7.0 github.com/klauspost/cpuid v1.2.3 golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073 ) diff --git a/vendor/github.com/caddyserver/certmagic/go.sum b/vendor/github.com/caddyserver/certmagic/go.sum index 17c0626f..ae8a2abc 100644 --- a/vendor/github.com/caddyserver/certmagic/go.sum +++ b/vendor/github.com/caddyserver/certmagic/go.sum @@ -6,10 +6,20 @@ cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxK cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= contrib.go.opencensus.io/exporter/ocagent v0.4.12/go.mod h1:450APlNTSR6FrvC3CTRqYosuDstRB9un7SOx2k/9ckA= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/azure-sdk-for-go v32.4.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= @@ -30,23 +40,25 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87/go.mod h1:iGLljf5n9GjT6kc0HBvyI1nOKnGQbNB66VzSNbK5iks= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/akamai/AkamaiOPEN-edgegrid-golang v0.9.0/go.mod h1:zpDJeKyp9ScW4NNrbdr+Eyxvry3ilGPewKoXw3XGN1k= +github.com/akamai/AkamaiOPEN-edgegrid-golang v0.9.8/go.mod h1:aVvklgKsPENRkl29bNwrHISa1F+YLGTHArMxZMBqWM8= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190808125512-07798873deee/go.mod h1:myCDvQSzCW+wB1WAlocEru4wMGJxy+vlxHdhegi1CDQ= -github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190307165228-86c17b95fcd5/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= +github.com/aliyun/alibaba-cloud-sdk-go v1.61.112/go.mod h1:pUKYbK5JQ+1Dfxk80P0qxGqe5dkxDoabbZS7zOcouyA= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/aws/aws-sdk-go v1.23.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= +github.com/aws/aws-sdk-go v1.30.20/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cenkalti/backoff/v4 v4.0.0 h1:6VeaLF9aI+MAUQ95106HwWzYZgJJpZ4stumjj6RFYAU= github.com/cenkalti/backoff/v4 v4.0.0/go.mod h1:eEew/i+1Q6OrCDZh3WiXYv3+nJwBASZ8Bog/87DQnVg= github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/cloudflare-go v0.10.2/go.mod h1:qhVI5MKwBGhdNU89ZRz2plgYutcJ5PCekLxXn56w6SY= -github.com/cpu/goacmedns v0.0.1/go.mod h1:sesf/pNnCYwUevQEQfEwY0Y3DydlQWSGZbaMElOWxok= +github.com/cpu/goacmedns v0.0.2/go.mod h1:4MipLkI+qScwqtVxcNO6okBhbgRrr7/tKXUSgSL0teQ= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -55,45 +67,61 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= github.com/dnaeon/go-vcr v0.0.0-20180814043457-aafff18a5cc2/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= -github.com/dnsimple/dnsimple-go v0.30.0/go.mod h1:O5TJ0/U6r7AfT8niYNlmohpLbCSG+c71tQlGr9SeGrg= +github.com/dnsimple/dnsimple-go v0.60.0/go.mod h1:O5TJ0/U6r7AfT8niYNlmohpLbCSG+c71tQlGr9SeGrg= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/exoscale/egoscale v0.18.1/go.mod h1:Z7OOdzzTOz1Q1PjQXumlz9Wn/CddH0zSYdCF3rnBKXE= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-acme/lego/v3 v3.4.0 h1:deB9NkelA+TfjGHVw8J7iKl/rMtffcGMWSMmptvMv0A= -github.com/go-acme/lego/v3 v3.4.0/go.mod h1:xYbLDuxq3Hy4bMUT1t9JIuz6GWIWb3m5X+TeTHYaT7M= +github.com/go-acme/lego/v3 v3.7.0 h1:qC5/8/CbltyAE8fGLE6bGlqucj7pXc/vBxiLwLOsmAQ= +github.com/go-acme/lego/v3 v3.7.0/go.mod h1:4eDjjYkAsDXyNcwN8IhhZAwxz9Ltiks1Zmpv0q20J7A= github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-ini/ini v1.44.0/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -107,14 +135,16 @@ github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= @@ -138,8 +168,8 @@ github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-tty v0.0.0-20180219170247-931426f7535a/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.1.15 h1:CSSIDtllwGLMoA6zjdKnaE6Tx6eVUxQ29LUgGetiDCI= -github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.27 h1:aEH/kqUzUxGJ/UHcEKdJY+ugH6WEzsEBBSPa8zuy1aM= +github.com/miekg/dns v1.1.27/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed/go.mod h1:3rdaFaCv4AyBgu5ALFM0+tSuHrBh6v692nyQe3ikrq0= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= @@ -150,7 +180,7 @@ github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3Rllmb github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04/go.mod h1:5sN+Lt1CaY4wsPvgQH/jsuJi4XO2ssZbdsIizr4CVC8= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= -github.com/nrdcg/auroradns v1.0.0/go.mod h1:6JPXKzIRzZzMqtTDgueIhTi6rFf1QvYE/HzqidhOhjw= +github.com/nrdcg/auroradns v1.0.1/go.mod h1:y4pc0i9QXYlFCWrhWrUSIETnZgrf4KuwjDIWmmXo3JI= github.com/nrdcg/dnspod-go v0.4.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= github.com/nrdcg/goinwx v0.6.1/go.mod h1:XPiut7enlbEdntAqalBIqcYcTEVhpv/dKWgDCX2SwKQ= github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw= @@ -165,6 +195,7 @@ github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -174,6 +205,7 @@ github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQ github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= @@ -187,13 +219,13 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sacloud/libsacloud v1.26.1/go.mod h1:79ZwATmHLIFZIMd7sxA3LwzVy/B77uj3LDoToVTxDoQ= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -201,18 +233,22 @@ github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/timewasted/linode v0.0.0-20160829202747-37e84520dcf7/go.mod h1:imsgLplxEC/etjIhdr3dNzV3JeT27LbVu5pYWm0JCBY= -github.com/transip/gotransip v0.0.0-20190812104329-6d8d9179b66f/go.mod h1:i0f4R4o2HM0m3DZYQWsj6/MEowD57VzoH0v3d7igeFY= +github.com/transip/gotransip/v6 v6.0.2/go.mod h1:pQZ36hWWRahCUXkFWlx9Hs711gLd8J4qdgLdRzmtY+g= github.com/uber-go/atomic v1.3.2/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/vultr/govultr v0.1.4/go.mod h1:9H008Uxr/C4vFNGLqKx232C206GL0PBHzOP0809bGNA= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/ratelimit v0.0.0-20180316092928-c15da0234277/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= golang.org/x/crypto v0.0.0-20180621125126-a49355c7e3f8/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -230,7 +266,12 @@ golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -239,12 +280,17 @@ golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTk golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20180611182652-db08ff08e862/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -264,13 +310,21 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190930134127-c5a3c61f89f3 h1:6KET3Sqa7fkVfD63QnAM81ZeYg5n4HwApOJkufONnHA= golang.org/x/net v0.0.0-20190930134127-c5a3c61f89f3/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191027093000-83d349e8ac1a h1:Yu34BogBivvmu7SAzHHaB9nZWH5D1C+z3F1jyIaYZSQ= -golang.org/x/net v0.0.0-20191027093000-83d349e8ac1a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a h1:GuSPYbZzB5/dcLNCwLQLsg3obCJtX9IJhpXkvY7kzk0= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= @@ -301,6 +355,18 @@ golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3 h1:4y9KwBHBgBNwDbtu44R5o1fdOCQUEXhbk/P4A9WmJq0= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 h1:uYVVQ9WP/Ds2ROhcaGPeIdVq0RIXVLwsHlnvJ+cT1So= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -309,6 +375,7 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190921001708-c4c64cad1fd0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -319,26 +386,48 @@ golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -347,12 +436,25 @@ google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= @@ -361,7 +463,7 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE= gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.44.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ns1/ns1-go.v2 v2.0.0-20190730140822-b51389932cbc/go.mod h1:VV+3haRsgDiVLxyifmMBrBIuCWFBPYKbRssXB9z67Hw= gopkg.in/resty.v1 v1.9.1/go.mod h1:vo52Hzryw9PnPHcJfPsBiFW62XhNx5OczbV9y+IMpgc= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= @@ -372,9 +474,15 @@ gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bl gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/vendor/github.com/caddyserver/certmagic/maintain.go b/vendor/github.com/caddyserver/certmagic/maintain.go index 89741932..6e3b8489 100644 --- a/vendor/github.com/caddyserver/certmagic/maintain.go +++ b/vendor/github.com/caddyserver/certmagic/maintain.go @@ -21,6 +21,7 @@ import ( "fmt" "log" "path" + "runtime" "strings" "time" @@ -31,8 +32,16 @@ import ( // that loops indefinitely and, on a regular schedule, checks // certificates for expiration and initiates a renewal of certs // that are expiring soon. It also updates OCSP stapling. It -// should only be called once per cache. +// should only be called once per cache. Panics are recovered. func (certCache *Cache) maintainAssets() { + defer func() { + if err := recover(); err != nil { + buf := make([]byte, stackTraceBufferSize) + buf = buf[:runtime.Stack(buf, false)] + log.Printf("panic: certificate maintenance: %v\n%s", err, buf) + } + }() + renewalTicker := time.NewTicker(certCache.options.RenewCheckInterval) ocspTicker := time.NewTicker(certCache.options.OCSPCheckInterval) @@ -235,7 +244,10 @@ func (certCache *Cache) updateOCSPStaples(ctx context.Context) { certCache.mu.RLock() for certHash, cert := range certCache.cache { // no point in updating OCSP for expired certificates - if time.Now().After(cert.Leaf.NotAfter) { + // TODO: ideally, cert.Leaf will never be nil, however, it currently is + // when solving the TLS-ALPN challenge which adds a special cert directly + // to the cache, since tls.X509KeyPair() discards the leaf + if cert.Leaf == nil || time.Now().After(cert.Leaf.NotAfter) { continue } var lastNextUpdate time.Time diff --git a/vendor/github.com/caddyserver/certmagic/ratelimiter.go b/vendor/github.com/caddyserver/certmagic/ratelimiter.go index 04680458..6c4ae091 100644 --- a/vendor/github.com/caddyserver/certmagic/ratelimiter.go +++ b/vendor/github.com/caddyserver/certmagic/ratelimiter.go @@ -2,6 +2,8 @@ package certmagic import ( "context" + "log" + "runtime" "sync" "time" ) @@ -51,6 +53,14 @@ func (r *RingBufferRateLimiter) Stop() { } func (r *RingBufferRateLimiter) loop() { + defer func() { + if err := recover(); err != nil { + buf := make([]byte, stackTraceBufferSize) + buf = buf[:runtime.Stack(buf, false)] + log.Printf("panic: ring buffer rate limiter: %v\n%s", err, buf) + } + }() + for { // if we've been stopped, return select { diff --git a/vendor/github.com/caddyserver/certmagic/solvers.go b/vendor/github.com/caddyserver/certmagic/solvers.go index 50dad4dc..976d4996 100644 --- a/vendor/github.com/caddyserver/certmagic/solvers.go +++ b/vendor/github.com/caddyserver/certmagic/solvers.go @@ -22,6 +22,7 @@ import ( "net" "net/http" "path" + "runtime" "strings" "sync" "sync/atomic" @@ -75,6 +76,13 @@ func (s *httpSolver) Present(domain, token, keyAuth string) error { // serve is an HTTP server that serves only HTTP challenge responses. func (s *httpSolver) serve(si *solverInfo) { + defer func() { + if err := recover(); err != nil { + buf := make([]byte, stackTraceBufferSize) + buf = buf[:runtime.Stack(buf, false)] + log.Printf("panic: http solver server: %v\n%s", err, buf) + } + }() defer close(si.done) httpServer := &http.Server{Handler: s.acmeManager.HTTPChallengeHandler(http.NewServeMux())} httpServer.SetKeepAlivesEnabled(false) @@ -159,6 +167,13 @@ func (s *tlsALPNSolver) Present(domain, token, keyAuth string) error { si.listener = tls.NewListener(ln, s.config.TLSConfig()) go func() { + defer func() { + if err := recover(); err != nil { + buf := make([]byte, stackTraceBufferSize) + buf = buf[:runtime.Stack(buf, false)] + log.Printf("panic: tls-alpn solver server: %v\n%s", err, buf) + } + }() defer close(si.done) for { conn, err := si.listener.Accept() @@ -178,6 +193,13 @@ func (s *tlsALPNSolver) Present(domain, token, keyAuth string) error { // handleConn completes the TLS handshake and then closes conn. func (*tlsALPNSolver) handleConn(conn net.Conn) { + defer func() { + if err := recover(); err != nil { + buf := make([]byte, stackTraceBufferSize) + buf = buf[:runtime.Stack(buf, false)] + log.Printf("panic: tls-alpn solver handler: %v\n%s", err, buf) + } + }() defer conn.Close() tlsConn, ok := conn.(*tls.Conn) if !ok { diff --git a/vendor/github.com/go-acme/lego/v3/acme/api/api.go b/vendor/github.com/go-acme/lego/v3/acme/api/api.go index a4993768..29b91536 100644 --- a/vendor/github.com/go-acme/lego/v3/acme/api/api.go +++ b/vendor/github.com/go-acme/lego/v3/acme/api/api.go @@ -143,7 +143,7 @@ func (a *Core) signEABContent(newAccountURL, kid string, hmac []byte) ([]byte, e return []byte(eabJWS.FullSerialize()), nil } -// GetKeyAuthorization Gets the key authorization +// GetKeyAuthorization Gets the key authorization. func (a *Core) GetKeyAuthorization(token string) (string, error) { return a.jws.GetKeyAuthorization(token) } diff --git a/vendor/github.com/go-acme/lego/v3/acme/api/certificate.go b/vendor/github.com/go-acme/lego/v3/acme/api/certificate.go index 51e0aae6..39decf8a 100644 --- a/vendor/github.com/go-acme/lego/v3/acme/api/certificate.go +++ b/vendor/github.com/go-acme/lego/v3/acme/api/certificate.go @@ -77,7 +77,7 @@ func (c *CertificateService) get(certURL string) ([]byte, string, error) { return cert, up, err } -// getIssuerFromLink requests the issuer certificate +// getIssuerFromLink requests the issuer certificate. func (c *CertificateService) getIssuerFromLink(up string) ([]byte, error) { if len(up) == 0 { return nil, nil diff --git a/vendor/github.com/go-acme/lego/v3/acme/api/internal/nonces/nonce_manager.go b/vendor/github.com/go-acme/lego/v3/acme/api/internal/nonces/nonce_manager.go index 8c7fb92e..0342af98 100644 --- a/vendor/github.com/go-acme/lego/v3/acme/api/internal/nonces/nonce_manager.go +++ b/vendor/github.com/go-acme/lego/v3/acme/api/internal/nonces/nonce_manager.go @@ -46,7 +46,7 @@ func (n *Manager) Push(nonce string) { n.nonces = append(n.nonces, nonce) } -// Nonce implement jose.NonceSource +// Nonce implement jose.NonceSource. func (n *Manager) Nonce() (string, error) { if nonce, ok := n.Pop(); ok { return nonce, nil diff --git a/vendor/github.com/go-acme/lego/v3/acme/api/internal/sender/useragent.go b/vendor/github.com/go-acme/lego/v3/acme/api/internal/sender/useragent.go index d5f046ae..597f5f3d 100644 --- a/vendor/github.com/go-acme/lego/v3/acme/api/internal/sender/useragent.go +++ b/vendor/github.com/go-acme/lego/v3/acme/api/internal/sender/useragent.go @@ -5,7 +5,7 @@ package sender const ( // ourUserAgent is the User-Agent of this underlying library package. - ourUserAgent = "xenolf-acme/3.6.0" + ourUserAgent = "xenolf-acme/3.7.0" // ourUserAgentComment is part of the UA comment linked to the version status of this underlying library package. // values: detach|release diff --git a/vendor/github.com/go-acme/lego/v3/acme/api/service.go b/vendor/github.com/go-acme/lego/v3/acme/api/service.go index ff043bc7..d8bee4c7 100644 --- a/vendor/github.com/go-acme/lego/v3/acme/api/service.go +++ b/vendor/github.com/go-acme/lego/v3/acme/api/service.go @@ -9,7 +9,7 @@ type service struct { core *Core } -// getLink get a rel into the Link header +// getLink get a rel into the Link header. func getLink(header http.Header, rel string) string { var linkExpr = regexp.MustCompile(`<(.+?)>;\s*rel="(.+?)"`) @@ -26,7 +26,7 @@ func getLink(header http.Header, rel string) string { return "" } -// getLocation get the value of the header Location +// getLocation get the value of the header Location. func getLocation(resp *http.Response) string { if resp == nil { return "" @@ -35,7 +35,7 @@ func getLocation(resp *http.Response) string { return resp.Header.Get("Location") } -// getRetryAfter get the value of the header Retry-After +// getRetryAfter get the value of the header Retry-After. func getRetryAfter(resp *http.Response) string { if resp == nil { return "" diff --git a/vendor/github.com/go-acme/lego/v3/acme/errors.go b/vendor/github.com/go-acme/lego/v3/acme/errors.go index 02a7d92c..74aa959f 100644 --- a/vendor/github.com/go-acme/lego/v3/acme/errors.go +++ b/vendor/github.com/go-acme/lego/v3/acme/errors.go @@ -4,7 +4,7 @@ import ( "fmt" ) -// Errors types +// Errors types. const ( errNS = "urn:ietf:params:acme:error:" BadNonceErr = errNS + "badNonce" diff --git a/vendor/github.com/go-acme/lego/v3/certcrypto/crypto.go b/vendor/github.com/go-acme/lego/v3/certcrypto/crypto.go index 5274d957..d4024371 100644 --- a/vendor/github.com/go-acme/lego/v3/certcrypto/crypto.go +++ b/vendor/github.com/go-acme/lego/v3/certcrypto/crypto.go @@ -40,7 +40,7 @@ const ( OCSPServerFailed = ocsp.ServerFailed ) -// Constants for OCSP must staple +// Constants for OCSP must staple. var ( tlsFeatureExtensionOID = asn1.ObjectIdentifier{1, 3, 6, 1, 5, 5, 7, 1, 24} ocspMustStapleFeature = []byte{0x30, 0x03, 0x02, 0x01, 0x05} diff --git a/vendor/github.com/go-acme/lego/v3/challenge/dns01/cname.go b/vendor/github.com/go-acme/lego/v3/challenge/dns01/cname.go index 619c8476..ab35ee84 100644 --- a/vendor/github.com/go-acme/lego/v3/challenge/dns01/cname.go +++ b/vendor/github.com/go-acme/lego/v3/challenge/dns01/cname.go @@ -2,7 +2,7 @@ package dns01 import "github.com/miekg/dns" -// Update FQDN with CNAME if any +// Update FQDN with CNAME if any. func updateDomainWithCName(r *dns.Msg, fqdn string) string { for _, rr := range r.Answer { if cn, ok := rr.(*dns.CNAME); ok { diff --git a/vendor/github.com/go-acme/lego/v3/challenge/dns01/dns_challenge.go b/vendor/github.com/go-acme/lego/v3/challenge/dns01/dns_challenge.go index 0c12a553..3df1608c 100644 --- a/vendor/github.com/go-acme/lego/v3/challenge/dns01/dns_challenge.go +++ b/vendor/github.com/go-acme/lego/v3/challenge/dns01/dns_challenge.go @@ -42,7 +42,7 @@ func CondOption(condition bool, opt ChallengeOption) ChallengeOption { return opt } -// Challenge implements the dns-01 challenge +// Challenge implements the dns-01 challenge. type Challenge struct { core *api.Core validate ValidateFunc @@ -169,7 +169,7 @@ type sequential interface { Sequential() time.Duration } -// GetRecord returns a DNS record which will fulfill the `dns-01` challenge +// GetRecord returns a DNS record which will fulfill the `dns-01` challenge. func GetRecord(domain, keyAuth string) (fqdn string, value string) { keyAuthShaBytes := sha256.Sum256([]byte(keyAuth)) // base64URL encoding without padding diff --git a/vendor/github.com/go-acme/lego/v3/challenge/dns01/dns_challenge_manual.go b/vendor/github.com/go-acme/lego/v3/challenge/dns01/dns_challenge_manual.go index 85da7d0e..b2f5d41f 100644 --- a/vendor/github.com/go-acme/lego/v3/challenge/dns01/dns_challenge_manual.go +++ b/vendor/github.com/go-acme/lego/v3/challenge/dns01/dns_challenge_manual.go @@ -11,7 +11,7 @@ const ( dnsTemplate = `%s %d IN TXT "%s"` ) -// DNSProviderManual is an implementation of the ChallengeProvider interface +// DNSProviderManual is an implementation of the ChallengeProvider interface. type DNSProviderManual struct{} // NewDNSProviderManual returns a DNSProviderManual instance. @@ -19,7 +19,7 @@ func NewDNSProviderManual() (*DNSProviderManual, error) { return &DNSProviderManual{}, nil } -// Present prints instructions for manually creating the TXT record +// Present prints instructions for manually creating the TXT record. func (*DNSProviderManual) Present(domain, token, keyAuth string) error { fqdn, value := GetRecord(domain, keyAuth) @@ -37,7 +37,7 @@ func (*DNSProviderManual) Present(domain, token, keyAuth string) error { return err } -// CleanUp prints instructions for manually removing the TXT record +// CleanUp prints instructions for manually removing the TXT record. func (*DNSProviderManual) CleanUp(domain, token, keyAuth string) error { fqdn, _ := GetRecord(domain, keyAuth) diff --git a/vendor/github.com/go-acme/lego/v3/challenge/dns01/nameserver.go b/vendor/github.com/go-acme/lego/v3/challenge/dns01/nameserver.go index e70db174..c1682b4d 100644 --- a/vendor/github.com/go-acme/lego/v3/challenge/dns01/nameserver.go +++ b/vendor/github.com/go-acme/lego/v3/challenge/dns01/nameserver.go @@ -26,10 +26,10 @@ var defaultNameservers = []string{ "google-public-dns-b.google.com:53", } -// recursiveNameservers are used to pre-check DNS propagation +// recursiveNameservers are used to pre-check DNS propagation. var recursiveNameservers = getNameservers(defaultResolvConf, defaultNameservers) -// soaCacheEntry holds a cached SOA record (only selected fields) +// soaCacheEntry holds a cached SOA record (only selected fields). type soaCacheEntry struct { zone string // zone apex (a domain name) primaryNs string // primary nameserver for the zone apex @@ -70,7 +70,7 @@ func AddRecursiveNameservers(nameservers []string) ChallengeOption { } } -// getNameservers attempts to get systems nameservers before falling back to the defaults +// getNameservers attempts to get systems nameservers before falling back to the defaults. func getNameservers(path string, defaults []string) []string { config, err := dns.ClientConfigFromFile(path) if err != nil || len(config.Servers) == 0 { @@ -215,7 +215,7 @@ func fetchSoaByFqdn(fqdn string, nameservers []string) (*soaCacheEntry, error) { return nil, fmt.Errorf("could not find the start of authority for %s%s", fqdn, formatDNSError(in, err)) } -// dnsMsgContainsCNAME checks for a CNAME answer in msg +// dnsMsgContainsCNAME checks for a CNAME answer in msg. func dnsMsgContainsCNAME(msg *dns.Msg) bool { for _, ans := range msg.Answer { if _, ok := ans.(*dns.CNAME); ok { diff --git a/vendor/github.com/go-acme/lego/v3/challenge/http01/domain_matcher.go b/vendor/github.com/go-acme/lego/v3/challenge/http01/domain_matcher.go index 9d3fc900..6ac6eab6 100644 --- a/vendor/github.com/go-acme/lego/v3/challenge/http01/domain_matcher.go +++ b/vendor/github.com/go-acme/lego/v3/challenge/http01/domain_matcher.go @@ -87,7 +87,7 @@ func (m *forwardedMatcher) matches(r *http.Request, domain string) bool { return strings.HasPrefix(host, domain) } -// parsing requires some form of state machine +// parsing requires some form of state machine. func parseForwardedHeader(s string) (elements []map[string]string, err error) { cur := make(map[string]string) key := "" diff --git a/vendor/github.com/go-acme/lego/v3/challenge/http01/http_challenge.go b/vendor/github.com/go-acme/lego/v3/challenge/http01/http_challenge.go index e6cc0d1b..7924b404 100644 --- a/vendor/github.com/go-acme/lego/v3/challenge/http01/http_challenge.go +++ b/vendor/github.com/go-acme/lego/v3/challenge/http01/http_challenge.go @@ -11,7 +11,7 @@ import ( type ValidateFunc func(core *api.Core, domain string, chlng acme.Challenge) error -// ChallengePath returns the URL path for the `http-01` challenge +// ChallengePath returns the URL path for the `http-01` challenge. func ChallengePath(token string) string { return "/.well-known/acme-challenge/" + token } diff --git a/vendor/github.com/go-acme/lego/v3/challenge/http01/http_challenge_server.go b/vendor/github.com/go-acme/lego/v3/challenge/http01/http_challenge_server.go index af5ab524..79442172 100644 --- a/vendor/github.com/go-acme/lego/v3/challenge/http01/http_challenge_server.go +++ b/vendor/github.com/go-acme/lego/v3/challenge/http01/http_challenge_server.go @@ -10,7 +10,7 @@ import ( "github.com/go-acme/lego/v3/log" ) -// ProviderServer implements ChallengeProvider for `http-01` challenge +// ProviderServer implements ChallengeProvider for `http-01` challenge. // It may be instantiated without using the NewProviderServer function if // you want only to use the default values. type ProviderServer struct { @@ -49,7 +49,7 @@ func (s *ProviderServer) GetAddress() string { return net.JoinHostPort(s.iface, s.port) } -// CleanUp closes the HTTP server and removes the token from `ChallengePath(token)` +// CleanUp closes the HTTP server and removes the token from `ChallengePath(token)`. func (s *ProviderServer) CleanUp(domain, token, keyAuth string) error { if s.listener == nil { return nil @@ -65,12 +65,12 @@ func (s *ProviderServer) CleanUp(domain, token, keyAuth string) error { // When the server runs behind a proxy server, this is not the correct place to look at; // Apache and NGINX have traditionally moved the original Host header into a new header named "X-Forwarded-Host". // Other webservers might use different names; -// and RFC7239 has standadized a new header named "Forwarded" (with slightly different semantics). +// and RFC7239 has standardized a new header named "Forwarded" (with slightly different semantics). // // The exact behavior depends on the value of headerName: // - "" (the empty string) and "Host" will restore the default and only check the Host header // - "Forwarded" will look for a Forwarded header, and inspect it according to https://tools.ietf.org/html/rfc7239 -// - any other value will check the header value with the same name +// - any other value will check the header value with the same name. func (s *ProviderServer) SetProxyHeader(headerName string) { switch h := textproto.CanonicalMIMEHeaderKey(headerName); h { case "", "Host": diff --git a/vendor/github.com/go-acme/lego/v3/challenge/resolver/prober.go b/vendor/github.com/go-acme/lego/v3/challenge/resolver/prober.go index d3c71e8d..60f3973b 100644 --- a/vendor/github.com/go-acme/lego/v3/challenge/resolver/prober.go +++ b/vendor/github.com/go-acme/lego/v3/challenge/resolver/prober.go @@ -29,7 +29,7 @@ type sequential interface { Sequential() (bool, time.Duration) } -// an authz with the solver we have chosen and the index of the challenge associated with it +// an authz with the solver we have chosen and the index of the challenge associated with it. type selectedAuthSolver struct { authz acme.Authorization solver solver diff --git a/vendor/github.com/go-acme/lego/v3/lego/client.go b/vendor/github.com/go-acme/lego/v3/lego/client.go index 751c5cd1..2051d12e 100644 --- a/vendor/github.com/go-acme/lego/v3/lego/client.go +++ b/vendor/github.com/go-acme/lego/v3/lego/client.go @@ -10,7 +10,7 @@ import ( "github.com/go-acme/lego/v3/registration" ) -// Client is the user-friendly way to ACME +// Client is the user-friendly way to ACME. type Client struct { Certificate *certificate.Certifier Challenge *resolver.SolverManager @@ -63,12 +63,12 @@ func NewClient(config *Config) (*Client, error) { }, nil } -// GetToSURL returns the current ToS URL from the Directory +// GetToSURL returns the current ToS URL from the Directory. func (c *Client) GetToSURL() string { return c.core.GetDirectory().Meta.TermsOfService } -// GetExternalAccountRequired returns the External Account Binding requirement of the Directory +// GetExternalAccountRequired returns the External Account Binding requirement of the Directory. func (c *Client) GetExternalAccountRequired() bool { return c.core.GetDirectory().Meta.ExternalAccountRequired } diff --git a/vendor/github.com/go-acme/lego/v3/lego/client_config.go b/vendor/github.com/go-acme/lego/v3/lego/client_config.go index 984ed249..49e3a8b8 100644 --- a/vendor/github.com/go-acme/lego/v3/lego/client_config.go +++ b/vendor/github.com/go-acme/lego/v3/lego/client_config.go @@ -61,7 +61,7 @@ type CertificateConfig struct { // createDefaultHTTPClient Creates an HTTP client with a reasonable timeout value // and potentially a custom *x509.CertPool -// based on the caCertificatesEnvVar environment variable (see the `initCertPool` function) +// based on the caCertificatesEnvVar environment variable (see the `initCertPool` function). func createDefaultHTTPClient() *http.Client { return &http.Client{ Transport: &http.Transport{ diff --git a/vendor/github.com/golang/protobuf/proto/deprecated.go b/vendor/github.com/golang/protobuf/proto/deprecated.go index a205482a..e8db57e0 100644 --- a/vendor/github.com/golang/protobuf/proto/deprecated.go +++ b/vendor/github.com/golang/protobuf/proto/deprecated.go @@ -9,6 +9,8 @@ import ( "errors" "fmt" "strconv" + + protoV2 "google.golang.org/protobuf/proto" ) var ( @@ -82,11 +84,30 @@ func UnmarshalJSONEnum(m map[string]int32, data []byte, enumName string) (int32, return val, nil } -// Deprecated: Do not use. +// Deprecated: Do not use; this type existed for intenal-use only. type InternalMessageInfo struct{} -func (*InternalMessageInfo) DiscardUnknown(Message) { panic("not implemented") } -func (*InternalMessageInfo) Marshal([]byte, Message, bool) ([]byte, error) { panic("not implemented") } -func (*InternalMessageInfo) Merge(Message, Message) { panic("not implemented") } -func (*InternalMessageInfo) Size(Message) int { panic("not implemented") } -func (*InternalMessageInfo) Unmarshal(Message, []byte) error { panic("not implemented") } +// Deprecated: Do not use; this method existed for intenal-use only. +func (*InternalMessageInfo) DiscardUnknown(m Message) { + DiscardUnknown(m) +} + +// Deprecated: Do not use; this method existed for intenal-use only. +func (*InternalMessageInfo) Marshal(b []byte, m Message, deterministic bool) ([]byte, error) { + return protoV2.MarshalOptions{Deterministic: deterministic}.MarshalAppend(b, MessageV2(m)) +} + +// Deprecated: Do not use; this method existed for intenal-use only. +func (*InternalMessageInfo) Merge(dst, src Message) { + protoV2.Merge(MessageV2(dst), MessageV2(src)) +} + +// Deprecated: Do not use; this method existed for intenal-use only. +func (*InternalMessageInfo) Size(m Message) int { + return protoV2.Size(MessageV2(m)) +} + +// Deprecated: Do not use; this method existed for intenal-use only. +func (*InternalMessageInfo) Unmarshal(m Message, b []byte) error { + return protoV2.UnmarshalOptions{Merge: true}.Unmarshal(b, MessageV2(m)) +} diff --git a/vendor/github.com/mitchellh/mapstructure/CHANGELOG.md b/vendor/github.com/mitchellh/mapstructure/CHANGELOG.md index b3a36fef..7faa06ee 100644 --- a/vendor/github.com/mitchellh/mapstructure/CHANGELOG.md +++ b/vendor/github.com/mitchellh/mapstructure/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.3.1 + +* Squash should only squash embedded structs. [GH-194] + ## 1.3.0 * Added `",omitempty"` support. This will ignore zero values in the source diff --git a/vendor/github.com/mitchellh/mapstructure/mapstructure.go b/vendor/github.com/mitchellh/mapstructure/mapstructure.go index cc456138..bae0c39a 100644 --- a/vendor/github.com/mitchellh/mapstructure/mapstructure.go +++ b/vendor/github.com/mitchellh/mapstructure/mapstructure.go @@ -840,42 +840,31 @@ func (d *Decoder) decodeMapFromStruct(name string, dataVal reflect.Value, val re } tagValue := f.Tag.Get(d.config.TagName) - tagParts := strings.Split(tagValue, ",") - - // If "omitempty" is specified in the tag, it ignores empty values. - omitempty := false - for _, tag := range tagParts[1:] { - if tag == "omitempty" { - omitempty = true - break - } - } - if omitempty && isEmptyValue(v) { - continue - } - - // Determine the name of the key in the map keyName := f.Name - if tagParts[0] != "" { - if tagParts[0] == "-" { - continue - } - keyName = tagParts[0] - } // If Squash is set in the config, we squash the field down. - squash := d.config.Squash && v.Kind() == reflect.Struct - // If "squash" is specified in the tag, we squash the field down. - if !squash { - for _, tag := range tagParts[1:] { - if tag == "squash" { - squash = true - break - } + squash := d.config.Squash && v.Kind() == reflect.Struct && f.Anonymous + // Determine the name of the key in the map + if index := strings.Index(tagValue, ","); index != -1 { + if tagValue[:index] == "-" { + continue; } + // If "omitempty" is specified in the tag, it ignores empty values. + if strings.Index(tagValue[index + 1:], "omitempty") != -1 && isEmptyValue(v) { + continue + } + + // If "squash" is specified in the tag, we squash the field down. + squash = !squash && strings.Index(tagValue[index + 1:], "squash") != -1 if squash && v.Kind() != reflect.Struct { return fmt.Errorf("cannot squash non-struct type '%s'", v.Type()) } + keyName = tagValue[:index] + } else if len(tagValue) > 0 { + if tagValue == "-" { + continue + } + keyName = tagValue } switch v.Kind() { @@ -1198,7 +1187,7 @@ func (d *Decoder) decodeStructFromMap(name string, dataVal, val reflect.Value) e fieldKind := fieldType.Type.Kind() // If "squash" is specified in the tag, we squash the field down. - squash := d.config.Squash && fieldKind == reflect.Struct + squash := d.config.Squash && fieldKind == reflect.Struct && fieldType.Anonymous remain := false // We always parse the tags cause we're looking for other tags too @@ -1226,9 +1215,8 @@ func (d *Decoder) decodeStructFromMap(name string, dataVal, val reflect.Value) e } // Build our field - fieldCurrent := field{fieldType, structVal.Field(i)} if remain { - remainField = &fieldCurrent + remainField = &field{fieldType, structVal.Field(i)} } else { // Normal struct field, store it away fields = append(fields, field{fieldType, structVal.Field(i)}) diff --git a/vendor/github.com/pelletier/go-toml/README.md b/vendor/github.com/pelletier/go-toml/README.md index 4ef303af..6831deb5 100644 --- a/vendor/github.com/pelletier/go-toml/README.md +++ b/vendor/github.com/pelletier/go-toml/README.md @@ -3,7 +3,7 @@ Go library for the [TOML](https://github.com/mojombo/toml) format. This library supports TOML version -[v0.5.0](https://github.com/toml-lang/toml/blob/master/versions/en/toml-v0.5.0.md) +[v1.0.0-rc.1](https://github.com/toml-lang/toml/blob/master/versions/en/toml-v1.0.0-rc.1.md) [![GoDoc](https://godoc.org/github.com/pelletier/go-toml?status.svg)](http://godoc.org/github.com/pelletier/go-toml) [![license](https://img.shields.io/github/license/pelletier/go-toml.svg)](https://github.com/pelletier/go-toml/blob/master/LICENSE) @@ -18,7 +18,7 @@ Go-toml provides the following features for using data parsed from TOML document * Load TOML documents from files and string data * Easily navigate TOML structure using Tree -* Mashaling and unmarshaling to and from data structures +* Marshaling and unmarshaling to and from data structures * Line & column position data for all parsed elements * [Query support similar to JSON-Path](query/) * Syntax errors contain line and column numbers @@ -74,7 +74,7 @@ Or use a query: q, _ := query.Compile("$..[user,password]") results := q.Execute(config) for ii, item := range results.Values() { - fmt.Println("Query result %d: %v", ii, item) + fmt.Printf("Query result %d: %v\n", ii, item) } ``` @@ -87,7 +87,7 @@ The documentation and additional examples are available at Go-toml provides two handy command line tools: -* `tomll`: Reads TOML files and lint them. +* `tomll`: Reads TOML files and lints them. ``` go install github.com/pelletier/go-toml/cmd/tomll @@ -99,9 +99,9 @@ Go-toml provides two handy command line tools: go install github.com/pelletier/go-toml/cmd/tomljson tomljson --help ``` - + * `jsontoml`: Reads a JSON file and outputs a TOML representation. - + ``` go install github.com/pelletier/go-toml/cmd/jsontoml jsontoml --help diff --git a/vendor/github.com/pelletier/go-toml/example-crlf.toml b/vendor/github.com/pelletier/go-toml/example-crlf.toml index 12950a16..780d9c68 100644 --- a/vendor/github.com/pelletier/go-toml/example-crlf.toml +++ b/vendor/github.com/pelletier/go-toml/example-crlf.toml @@ -27,3 +27,4 @@ enabled = true [clients] data = [ ["gamma", "delta"], [1, 2] ] # just an update to make sure parsers support it +score = 4e-08 # to make sure leading zeroes in exponent parts of floats are supported \ No newline at end of file diff --git a/vendor/github.com/pelletier/go-toml/example.toml b/vendor/github.com/pelletier/go-toml/example.toml index 3d902f28..f45bf88b 100644 --- a/vendor/github.com/pelletier/go-toml/example.toml +++ b/vendor/github.com/pelletier/go-toml/example.toml @@ -27,3 +27,4 @@ enabled = true [clients] data = [ ["gamma", "delta"], [1, 2] ] # just an update to make sure parsers support it +score = 4e-08 # to make sure leading zeroes in exponent parts of floats are supported \ No newline at end of file diff --git a/vendor/github.com/pelletier/go-toml/go.mod b/vendor/github.com/pelletier/go-toml/go.mod index 07a258be..c7faa6b3 100644 --- a/vendor/github.com/pelletier/go-toml/go.mod +++ b/vendor/github.com/pelletier/go-toml/go.mod @@ -5,5 +5,5 @@ go 1.12 require ( github.com/BurntSushi/toml v0.3.1 github.com/davecgh/go-spew v1.1.1 - gopkg.in/yaml.v2 v2.2.8 + gopkg.in/yaml.v2 v2.3.0 ) diff --git a/vendor/github.com/pelletier/go-toml/go.sum b/vendor/github.com/pelletier/go-toml/go.sum index b30bc766..6f356470 100644 --- a/vendor/github.com/pelletier/go-toml/go.sum +++ b/vendor/github.com/pelletier/go-toml/go.sum @@ -15,3 +15,5 @@ gopkg.in/yaml.v2 v2.2.7 h1:VUgggvou5XRW9mHwD/yXxIYSMtY0zoKQf/v226p2nyo= gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/vendor/github.com/pelletier/go-toml/keysparsing.go b/vendor/github.com/pelletier/go-toml/keysparsing.go index e923bc4f..e091500b 100644 --- a/vendor/github.com/pelletier/go-toml/keysparsing.go +++ b/vendor/github.com/pelletier/go-toml/keysparsing.go @@ -5,7 +5,6 @@ package toml import ( "errors" "fmt" - "unicode" ) // Convert the bare key group string to an array. @@ -109,5 +108,5 @@ func parseKey(key string) ([]string, error) { } func isValidBareChar(r rune) bool { - return isAlphanumeric(r) || r == '-' || unicode.IsNumber(r) + return isAlphanumeric(r) || r == '-' || isDigit(r) } diff --git a/vendor/github.com/pelletier/go-toml/lexer.go b/vendor/github.com/pelletier/go-toml/lexer.go index 88fd91ee..425e847a 100644 --- a/vendor/github.com/pelletier/go-toml/lexer.go +++ b/vendor/github.com/pelletier/go-toml/lexer.go @@ -26,7 +26,7 @@ type tomlLexer struct { currentTokenStart int currentTokenStop int tokens []token - depth int + brackets []rune line int col int endbufferLine int @@ -123,6 +123,8 @@ func (l *tomlLexer) lexVoid() tomlLexStateFn { for { next := l.peek() switch next { + case '}': // after '{' + return l.lexRightCurlyBrace case '[': return l.lexTableKey case '#': @@ -140,10 +142,6 @@ func (l *tomlLexer) lexVoid() tomlLexStateFn { l.skip() } - if l.depth > 0 { - return l.lexRvalue - } - if isKeyStartChar(next) { return l.lexKey } @@ -167,10 +165,8 @@ func (l *tomlLexer) lexRvalue() tomlLexStateFn { case '=': return l.lexEqual case '[': - l.depth++ return l.lexLeftBracket case ']': - l.depth-- return l.lexRightBracket case '{': return l.lexLeftCurlyBrace @@ -188,12 +184,10 @@ func (l *tomlLexer) lexRvalue() tomlLexStateFn { fallthrough case '\n': l.skip() - if l.depth == 0 { - return l.lexVoid + if len(l.brackets) > 0 && l.brackets[len(l.brackets)-1] == '[' { + return l.lexRvalue } - return l.lexRvalue - case '_': - return l.errorf("cannot start number with underscore") + return l.lexVoid } if l.follow("true") { @@ -236,10 +230,6 @@ func (l *tomlLexer) lexRvalue() tomlLexStateFn { return l.lexNumber } - if isAlphanumeric(next) { - return l.lexKey - } - return l.errorf("no value can start with %c", next) } @@ -250,12 +240,17 @@ func (l *tomlLexer) lexRvalue() tomlLexStateFn { func (l *tomlLexer) lexLeftCurlyBrace() tomlLexStateFn { l.next() l.emit(tokenLeftCurlyBrace) + l.brackets = append(l.brackets, '{') return l.lexVoid } func (l *tomlLexer) lexRightCurlyBrace() tomlLexStateFn { l.next() l.emit(tokenRightCurlyBrace) + if len(l.brackets) == 0 || l.brackets[len(l.brackets)-1] != '{' { + return l.errorf("cannot have '}' here") + } + l.brackets = l.brackets[:len(l.brackets)-1] return l.lexRvalue } @@ -302,6 +297,9 @@ func (l *tomlLexer) lexEqual() tomlLexStateFn { func (l *tomlLexer) lexComma() tomlLexStateFn { l.next() l.emit(tokenComma) + if len(l.brackets) > 0 && l.brackets[len(l.brackets)-1] == '{' { + return l.lexVoid + } return l.lexRvalue } @@ -332,7 +330,26 @@ func (l *tomlLexer) lexKey() tomlLexStateFn { } else if r == '\n' { return l.errorf("keys cannot contain new lines") } else if isSpace(r) { - break + str := " " + // skip trailing whitespace + l.next() + for r = l.peek(); isSpace(r); r = l.peek() { + str += string(r) + l.next() + } + // break loop if not a dot + if r != '.' { + break + } + str += "." + // skip trailing whitespace after dot + l.next() + for r = l.peek(); isSpace(r); r = l.peek() { + str += string(r) + l.next() + } + growingString += str + continue } else if r == '.' { // skip } else if !isValidBareChar(r) { @@ -361,6 +378,7 @@ func (l *tomlLexer) lexComment(previousState tomlLexStateFn) tomlLexStateFn { func (l *tomlLexer) lexLeftBracket() tomlLexStateFn { l.next() l.emit(tokenLeftBracket) + l.brackets = append(l.brackets, '[') return l.lexRvalue } @@ -512,7 +530,7 @@ func (l *tomlLexer) lexStringAsString(terminator string, discardLeadingNewLine, } else { r := l.peek() - if 0x00 <= r && r <= 0x1F && !(acceptNewLines && (r == '\n' || r == '\r')) { + if 0x00 <= r && r <= 0x1F && r != '\t' && !(acceptNewLines && (r == '\n' || r == '\r')) { return "", fmt.Errorf("unescaped control character %U", r) } l.next() @@ -543,7 +561,6 @@ func (l *tomlLexer) lexString() tomlLexStateFn { } str, err := l.lexStringAsString(terminator, discardLeadingNewLine, acceptNewLines) - if err != nil { return l.errorf(err.Error()) } @@ -615,6 +632,10 @@ func (l *tomlLexer) lexInsideTableKey() tomlLexStateFn { func (l *tomlLexer) lexRightBracket() tomlLexStateFn { l.next() l.emit(tokenRightBracket) + if len(l.brackets) == 0 || l.brackets[len(l.brackets)-1] != '[' { + return l.errorf("cannot have ']' here") + } + l.brackets = l.brackets[:len(l.brackets)-1] return l.lexRvalue } diff --git a/vendor/github.com/pelletier/go-toml/marshal.go b/vendor/github.com/pelletier/go-toml/marshal.go index dcddad8d..db5a7b4f 100644 --- a/vendor/github.com/pelletier/go-toml/marshal.go +++ b/vendor/github.com/pelletier/go-toml/marshal.go @@ -2,6 +2,7 @@ package toml import ( "bytes" + "encoding" "errors" "fmt" "io" @@ -22,6 +23,7 @@ const ( type tomlOpts struct { name string + nameFromTag bool comment string commented bool multiline bool @@ -68,6 +70,9 @@ const ( var timeType = reflect.TypeOf(time.Time{}) var marshalerType = reflect.TypeOf(new(Marshaler)).Elem() +var unmarshalerType = reflect.TypeOf(new(Unmarshaler)).Elem() +var textMarshalerType = reflect.TypeOf(new(encoding.TextMarshaler)).Elem() +var textUnmarshalerType = reflect.TypeOf(new(encoding.TextUnmarshaler)).Elem() var localDateType = reflect.TypeOf(LocalDate{}) var localTimeType = reflect.TypeOf(LocalTime{}) var localDateTimeType = reflect.TypeOf(LocalDateTime{}) @@ -88,12 +93,16 @@ func isPrimitive(mtype reflect.Type) bool { case reflect.String: return true case reflect.Struct: - return mtype == timeType || mtype == localDateType || mtype == localDateTimeType || mtype == localTimeType || isCustomMarshaler(mtype) + return isTimeType(mtype) default: return false } } +func isTimeType(mtype reflect.Type) bool { + return mtype == timeType || mtype == localDateType || mtype == localDateTimeType || mtype == localTimeType +} + // Check if the given marshal type maps to a Tree slice or array func isTreeSequence(mtype reflect.Type) bool { switch mtype.Kind() { @@ -106,6 +115,30 @@ func isTreeSequence(mtype reflect.Type) bool { } } +// Check if the given marshal type maps to a slice or array of a custom marshaler type +func isCustomMarshalerSequence(mtype reflect.Type) bool { + switch mtype.Kind() { + case reflect.Ptr: + return isCustomMarshalerSequence(mtype.Elem()) + case reflect.Slice, reflect.Array: + return isCustomMarshaler(mtype.Elem()) || isCustomMarshaler(reflect.New(mtype.Elem()).Type()) + default: + return false + } +} + +// Check if the given marshal type maps to a slice or array of a text marshaler type +func isTextMarshalerSequence(mtype reflect.Type) bool { + switch mtype.Kind() { + case reflect.Ptr: + return isTextMarshalerSequence(mtype.Elem()) + case reflect.Slice, reflect.Array: + return isTextMarshaler(mtype.Elem()) || isTextMarshaler(reflect.New(mtype.Elem()).Type()) + default: + return false + } +} + // Check if the given marshal type maps to a non-Tree slice or array func isOtherSequence(mtype reflect.Type) bool { switch mtype.Kind() { @@ -140,12 +173,42 @@ func callCustomMarshaler(mval reflect.Value) ([]byte, error) { return mval.Interface().(Marshaler).MarshalTOML() } +func isTextMarshaler(mtype reflect.Type) bool { + return mtype.Implements(textMarshalerType) && !isTimeType(mtype) +} + +func callTextMarshaler(mval reflect.Value) ([]byte, error) { + return mval.Interface().(encoding.TextMarshaler).MarshalText() +} + +func isCustomUnmarshaler(mtype reflect.Type) bool { + return mtype.Implements(unmarshalerType) +} + +func callCustomUnmarshaler(mval reflect.Value, tval interface{}) error { + return mval.Interface().(Unmarshaler).UnmarshalTOML(tval) +} + +func isTextUnmarshaler(mtype reflect.Type) bool { + return mtype.Implements(textUnmarshalerType) +} + +func callTextUnmarshaler(mval reflect.Value, text []byte) error { + return mval.Interface().(encoding.TextUnmarshaler).UnmarshalText(text) +} + // Marshaler is the interface implemented by types that // can marshal themselves into valid TOML. type Marshaler interface { MarshalTOML() ([]byte, error) } +// Unmarshaler is the interface implemented by types that +// can unmarshal a TOML description of themselves. +type Unmarshaler interface { + UnmarshalTOML(interface{}) error +} + /* Marshal returns the TOML encoding of v. Behavior is similar to the Go json encoder, except that there is no concept of a Marshaler interface or MarshalTOML @@ -190,20 +253,23 @@ type Encoder struct { w io.Writer encOpts annotation - line int - col int - order marshalOrder + line int + col int + order marshalOrder + promoteAnon bool + indentation string } // NewEncoder returns a new encoder that writes to w. func NewEncoder(w io.Writer) *Encoder { return &Encoder{ - w: w, - encOpts: encOptsDefaults, - annotation: annotationDefault, - line: 0, - col: 1, - order: OrderAlphabetical, + w: w, + encOpts: encOptsDefaults, + annotation: annotationDefault, + line: 0, + col: 1, + order: OrderAlphabetical, + indentation: " ", } } @@ -255,6 +321,12 @@ func (e *Encoder) Order(ord marshalOrder) *Encoder { return e } +// Indentation allows to change indentation when marshalling. +func (e *Encoder) Indentation(indent string) *Encoder { + e.indentation = indent + return e +} + // SetTagName allows changing default tag "toml" func (e *Encoder) SetTagName(v string) *Encoder { e.tag = v @@ -279,8 +351,31 @@ func (e *Encoder) SetTagMultiline(v string) *Encoder { return e } +// PromoteAnonymous allows to change how anonymous struct fields are marshaled. +// Usually, they are marshaled as if the inner exported fields were fields in +// the outer struct. However, if an anonymous struct field is given a name in +// its TOML tag, it is treated like a regular struct field with that name. +// rather than being anonymous. +// +// In case anonymous promotion is enabled, all anonymous structs are promoted +// and treated like regular struct fields. +func (e *Encoder) PromoteAnonymous(promote bool) *Encoder { + e.promoteAnon = promote + return e +} + func (e *Encoder) marshal(v interface{}) ([]byte, error) { + // Check if indentation is valid + for _, char := range e.indentation { + if !isSpace(char) { + return []byte{}, fmt.Errorf("invalid indentation: must only contains space or tab characters") + } + } + mtype := reflect.TypeOf(v) + if mtype == nil { + return []byte{}, errors.New("nil cannot be marshaled to TOML") + } switch mtype.Kind() { case reflect.Struct, reflect.Map: @@ -288,6 +383,9 @@ func (e *Encoder) marshal(v interface{}) ([]byte, error) { if mtype.Elem().Kind() != reflect.Struct { return []byte{}, errors.New("Only pointer to struct can be marshaled to TOML") } + if reflect.ValueOf(v).IsNil() { + return []byte{}, errors.New("nil pointer cannot be marshaled to TOML") + } default: return []byte{}, errors.New("Only a struct or map can be marshaled to TOML") } @@ -296,13 +394,16 @@ func (e *Encoder) marshal(v interface{}) ([]byte, error) { if isCustomMarshaler(mtype) { return callCustomMarshaler(sval) } + if isTextMarshaler(mtype) { + return callTextMarshaler(sval) + } t, err := e.valueToTree(mtype, sval) if err != nil { return []byte{}, err } var buf bytes.Buffer - _, err = t.writeToOrdered(&buf, "", "", 0, e.arraysOneElementPerLine, e.order, false) + _, err = t.writeToOrdered(&buf, "", "", 0, e.arraysOneElementPerLine, e.order, e.indentation, false) return buf.Bytes(), err } @@ -332,12 +433,15 @@ func (e *Encoder) valueToTree(mtype reflect.Type, mval reflect.Value) (*Tree, er if err != nil { return nil, err } - - tval.SetWithOptions(opts.name, SetOptions{ - Comment: opts.comment, - Commented: opts.commented, - Multiline: opts.multiline, - }, val) + if tree, ok := val.(*Tree); ok && mtypef.Anonymous && !opts.nameFromTag && !e.promoteAnon { + e.appendTree(tval, tree) + } else { + tval.SetPathWithOptions([]string{opts.name}, SetOptions{ + Comment: opts.comment, + Commented: opts.commented, + Multiline: opts.multiline, + }, val) + } } } } @@ -371,13 +475,13 @@ func (e *Encoder) valueToTree(mtype reflect.Type, mval reflect.Value) (*Tree, er return nil, err } if e.quoteMapKeys { - keyStr, err := tomlValueStringRepresentation(key.String(), "", "", e.arraysOneElementPerLine) + keyStr, err := tomlValueStringRepresentation(key.String(), "", "", e.order, e.arraysOneElementPerLine) if err != nil { return nil, err } tval.SetPath([]string{keyStr}, val) } else { - tval.Set(key.String(), val) + tval.SetPath([]string{key.String()}, val) } } } @@ -399,9 +503,6 @@ func (e *Encoder) valueToTreeSlice(mtype reflect.Type, mval reflect.Value) ([]*T // Convert given marshal slice to slice of toml values func (e *Encoder) valueToOtherSlice(mtype reflect.Type, mval reflect.Value) (interface{}, error) { - if mtype.Elem().Kind() == reflect.Interface { - return nil, fmt.Errorf("marshal can't handle []interface{}") - } tval := make([]interface{}, mval.Len(), mval.Len()) for i := 0; i < mval.Len(); i++ { val, err := e.valueToToml(mtype.Elem(), mval.Index(i)) @@ -417,7 +518,14 @@ func (e *Encoder) valueToOtherSlice(mtype reflect.Type, mval reflect.Value) (int func (e *Encoder) valueToToml(mtype reflect.Type, mval reflect.Value) (interface{}, error) { e.line++ if mtype.Kind() == reflect.Ptr { - return e.valueToToml(mtype.Elem(), mval.Elem()) + switch { + case isCustomMarshaler(mtype): + return callCustomMarshaler(mval) + case isTextMarshaler(mtype): + return callTextMarshaler(mval) + default: + return e.valueToToml(mtype.Elem(), mval.Elem()) + } } if mtype.Kind() == reflect.Interface { return e.valueToToml(mval.Elem().Type(), mval.Elem()) @@ -425,12 +533,14 @@ func (e *Encoder) valueToToml(mtype reflect.Type, mval reflect.Value) (interface switch { case isCustomMarshaler(mtype): return callCustomMarshaler(mval) + case isTextMarshaler(mtype): + return callTextMarshaler(mval) case isTree(mtype): return e.valueToTree(mtype, mval) + case isOtherSequence(mtype), isCustomMarshalerSequence(mtype), isTextMarshalerSequence(mtype): + return e.valueToOtherSlice(mtype, mval) case isTreeSequence(mtype): return e.valueToTreeSlice(mtype, mval) - case isOtherSequence(mtype): - return e.valueToOtherSlice(mtype, mval) default: switch mtype.Kind() { case reflect.Bool: @@ -454,6 +564,19 @@ func (e *Encoder) valueToToml(mtype reflect.Type, mval reflect.Value) (interface } } +func (e *Encoder) appendTree(t, o *Tree) error { + for key, value := range o.values { + if _, ok := t.values[key]; ok { + continue + } + if tomlValue, ok := value.(*tomlValue); ok { + tomlValue.position.Col = t.position.Col + } + t.values[key] = value + } + return nil +} + // Unmarshal attempts to unmarshal the Tree into a Go struct pointed by v. // Neither Unmarshaler interfaces nor UnmarshalTOML functions are supported for // sub-structs, and only definite types can be unmarshaled. @@ -506,6 +629,8 @@ type Decoder struct { tval *Tree encOpts tagName string + strict bool + visitor visitorState } // NewDecoder returns a new decoder that reads from r. @@ -536,8 +661,18 @@ func (d *Decoder) SetTagName(v string) *Decoder { return d } +// Strict allows changing to strict decoding. Any fields that are found in the +// input data and do not have a corresponding struct member cause an error. +func (d *Decoder) Strict(strict bool) *Decoder { + d.strict = strict + return d +} + func (d *Decoder) unmarshal(v interface{}) error { mtype := reflect.TypeOf(v) + if mtype == nil { + return errors.New("nil cannot be unmarshaled from TOML") + } if mtype.Kind() != reflect.Ptr { return errors.New("only a pointer to struct or map can be unmarshaled from TOML") } @@ -550,12 +685,23 @@ func (d *Decoder) unmarshal(v interface{}) error { return errors.New("only a pointer to struct or map can be unmarshaled from TOML") } + if reflect.ValueOf(v).IsNil() { + return errors.New("nil pointer cannot be unmarshaled from TOML") + } + vv := reflect.ValueOf(v).Elem() + if d.strict { + d.visitor = newVisitorState(d.tval) + } + sval, err := d.valueFromTree(elem, d.tval, &vv) if err != nil { return err } + if err := d.visitor.validate(); err != nil { + return err + } reflect.ValueOf(v).Elem().Set(sval) return nil } @@ -566,6 +712,17 @@ func (d *Decoder) valueFromTree(mtype reflect.Type, tval *Tree, mval1 *reflect.V if mtype.Kind() == reflect.Ptr { return d.unwrapPointer(mtype, tval, mval1) } + + // Check if pointer to value implements the Unmarshaler interface. + if mvalPtr := reflect.New(mtype); isCustomUnmarshaler(mvalPtr.Type()) { + d.visitor.visitAll() + + if err := callCustomUnmarshaler(mvalPtr, tval.ToMap()); err != nil { + return reflect.ValueOf(nil), fmt.Errorf("unmarshal toml: %v", err) + } + return mvalPtr.Elem(), nil + } + var mval reflect.Value switch mtype.Kind() { case reflect.Struct: @@ -597,18 +754,21 @@ func (d *Decoder) valueFromTree(mtype reflect.Type, tval *Tree, mval1 *reflect.V found := false if tval != nil { for _, key := range keysToTry { - exists := tval.Has(key) + exists := tval.HasPath([]string{key}) if !exists { continue } - val := tval.Get(key) + + d.visitor.push(key) + val := tval.GetPath([]string{key}) fval := mval.Field(i) mvalf, err := d.valueFromToml(mtypef.Type, val, &fval) if err != nil { - return mval, formatError(err, tval.GetPosition(key)) + return mval, formatError(err, tval.GetPositionPath([]string{key})) } mval.Field(i).Set(mvalf) found = true + d.visitor.pop() break } } @@ -618,32 +778,42 @@ func (d *Decoder) valueFromTree(mtype reflect.Type, tval *Tree, mval1 *reflect.V var val interface{} var err error switch mvalf.Kind() { - case reflect.Bool: - val, err = strconv.ParseBool(opts.defaultValue) - if err != nil { - return mval.Field(i), err - } - case reflect.Int: - val, err = strconv.Atoi(opts.defaultValue) - if err != nil { - return mval.Field(i), err - } case reflect.String: val = opts.defaultValue + case reflect.Bool: + val, err = strconv.ParseBool(opts.defaultValue) + case reflect.Uint: + val, err = strconv.ParseUint(opts.defaultValue, 10, 0) + case reflect.Uint8: + val, err = strconv.ParseUint(opts.defaultValue, 10, 8) + case reflect.Uint16: + val, err = strconv.ParseUint(opts.defaultValue, 10, 16) + case reflect.Uint32: + val, err = strconv.ParseUint(opts.defaultValue, 10, 32) + case reflect.Uint64: + val, err = strconv.ParseUint(opts.defaultValue, 10, 64) + case reflect.Int: + val, err = strconv.ParseInt(opts.defaultValue, 10, 0) + case reflect.Int8: + val, err = strconv.ParseInt(opts.defaultValue, 10, 8) + case reflect.Int16: + val, err = strconv.ParseInt(opts.defaultValue, 10, 16) + case reflect.Int32: + val, err = strconv.ParseInt(opts.defaultValue, 10, 32) case reflect.Int64: val, err = strconv.ParseInt(opts.defaultValue, 10, 64) - if err != nil { - return mval.Field(i), err - } + case reflect.Float32: + val, err = strconv.ParseFloat(opts.defaultValue, 32) case reflect.Float64: val, err = strconv.ParseFloat(opts.defaultValue, 64) - if err != nil { - return mval.Field(i), err - } default: - return mval.Field(i), fmt.Errorf("unsuported field type for default option") + return mvalf, fmt.Errorf("unsupported field type for default option") } - mval.Field(i).Set(reflect.ValueOf(val)) + + if err != nil { + return mvalf, err + } + mvalf.Set(reflect.ValueOf(val).Convert(mvalf.Type())) } // save the old behavior above and try to check structs @@ -652,7 +822,8 @@ func (d *Decoder) valueFromTree(mtype reflect.Type, tval *Tree, mval1 *reflect.V if !mtypef.Anonymous { tmpTval = nil } - v, err := d.valueFromTree(mtypef.Type, tmpTval, nil) + fval := mval.Field(i) + v, err := d.valueFromTree(mtypef.Type, tmpTval, &fval) if err != nil { return v, err } @@ -663,13 +834,15 @@ func (d *Decoder) valueFromTree(mtype reflect.Type, tval *Tree, mval1 *reflect.V case reflect.Map: mval = reflect.MakeMap(mtype) for _, key := range tval.Keys() { + d.visitor.push(key) // TODO: path splits key val := tval.GetPath([]string{key}) mvalf, err := d.valueFromToml(mtype.Elem(), val, nil) if err != nil { - return mval, formatError(err, tval.GetPosition(key)) + return mval, formatError(err, tval.GetPositionPath([]string{key})) } mval.SetMapIndex(reflect.ValueOf(key).Convert(mtype.Key()), mvalf) + d.visitor.pop() } } return mval, nil @@ -677,22 +850,52 @@ func (d *Decoder) valueFromTree(mtype reflect.Type, tval *Tree, mval1 *reflect.V // Convert toml value to marshal struct/map slice, using marshal type func (d *Decoder) valueFromTreeSlice(mtype reflect.Type, tval []*Tree) (reflect.Value, error) { - mval := reflect.MakeSlice(mtype, len(tval), len(tval)) + mval, err := makeSliceOrArray(mtype, len(tval)) + if err != nil { + return mval, err + } + for i := 0; i < len(tval); i++ { + d.visitor.push(strconv.Itoa(i)) val, err := d.valueFromTree(mtype.Elem(), tval[i], nil) if err != nil { return mval, err } mval.Index(i).Set(val) + d.visitor.pop() + } + return mval, nil +} + +// Convert toml value to marshal primitive slice, using marshal type +func (d *Decoder) valueFromOtherSlice(mtype reflect.Type, tval []interface{}) (reflect.Value, error) { + mval, err := makeSliceOrArray(mtype, len(tval)) + if err != nil { + return mval, err + } + + for i := 0; i < len(tval); i++ { + val, err := d.valueFromToml(mtype.Elem(), tval[i], nil) + if err != nil { + return mval, err + } + mval.Index(i).Set(val) } return mval, nil } // Convert toml value to marshal primitive slice, using marshal type -func (d *Decoder) valueFromOtherSlice(mtype reflect.Type, tval []interface{}) (reflect.Value, error) { - mval := reflect.MakeSlice(mtype, len(tval), len(tval)) - for i := 0; i < len(tval); i++ { - val, err := d.valueFromToml(mtype.Elem(), tval[i], nil) +func (d *Decoder) valueFromOtherSliceI(mtype reflect.Type, tval interface{}) (reflect.Value, error) { + val := reflect.ValueOf(tval) + length := val.Len() + + mval, err := makeSliceOrArray(mtype, length) + if err != nil { + return mval, err + } + + for i := 0; i < length; i++ { + val, err := d.valueFromToml(mtype.Elem(), val.Index(i).Interface(), nil) if err != nil { return mval, err } @@ -701,6 +904,21 @@ func (d *Decoder) valueFromOtherSlice(mtype reflect.Type, tval []interface{}) (r return mval, nil } +// Create a new slice or a new array with specified length +func makeSliceOrArray(mtype reflect.Type, tLength int) (reflect.Value, error) { + var mval reflect.Value + switch mtype.Kind() { + case reflect.Slice: + mval = reflect.MakeSlice(mtype, tLength, tLength) + case reflect.Array: + mval = reflect.New(reflect.ArrayOf(mtype.Len(), mtype.Elem())).Elem() + if tLength > mtype.Len() { + return mval, fmt.Errorf("unmarshal: TOML array length (%v) exceeds destination array length (%v)", tLength, mtype.Len()) + } + } + return mval, nil +} + // Convert toml value to marshal value, using marshal type. When mval1 is non-nil // and the given type is a struct value, merge fields into it. func (d *Decoder) valueFromToml(mtype reflect.Type, tval interface{}, mval1 *reflect.Value) (reflect.Value, error) { @@ -742,6 +960,7 @@ func (d *Decoder) valueFromToml(mtype reflect.Type, tval interface{}, mval1 *ref } return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to trees", tval, tval) case []interface{}: + d.visitor.visit() if isOtherSequence(mtype) { return d.valueFromOtherSlice(mtype, t) } @@ -755,6 +974,15 @@ func (d *Decoder) valueFromToml(mtype reflect.Type, tval interface{}, mval1 *ref } return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to a slice", tval, tval) default: + d.visitor.visit() + // Check if pointer to value implements the encoding.TextUnmarshaler. + if mvalPtr := reflect.New(mtype); isTextUnmarshaler(mvalPtr.Type()) && !isTimeType(mtype) { + if err := d.unmarshalText(tval, mvalPtr); err != nil { + return reflect.ValueOf(nil), fmt.Errorf("unmarshal text: %v", err) + } + return mvalPtr.Elem(), nil + } + switch mtype.Kind() { case reflect.Bool, reflect.Struct: val := reflect.ValueOf(tval) @@ -805,34 +1033,34 @@ func (d *Decoder) valueFromToml(mtype reflect.Type, tval interface{}, mval1 *ref } return reflect.ValueOf(d), nil } - if !val.Type().ConvertibleTo(mtype) { + if !val.Type().ConvertibleTo(mtype) || val.Kind() == reflect.Float64 { return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to %v", tval, tval, mtype.String()) } - if reflect.Indirect(reflect.New(mtype)).OverflowInt(val.Convert(mtype).Int()) { + if reflect.Indirect(reflect.New(mtype)).OverflowInt(val.Convert(reflect.TypeOf(int64(0))).Int()) { return reflect.ValueOf(nil), fmt.Errorf("%v(%T) would overflow %v", tval, tval, mtype.String()) } return val.Convert(mtype), nil case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: val := reflect.ValueOf(tval) - if !val.Type().ConvertibleTo(mtype) { + if !val.Type().ConvertibleTo(mtype) || val.Kind() == reflect.Float64 { return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to %v", tval, tval, mtype.String()) } if val.Convert(reflect.TypeOf(int(1))).Int() < 0 { return reflect.ValueOf(nil), fmt.Errorf("%v(%T) is negative so does not fit in %v", tval, tval, mtype.String()) } - if reflect.Indirect(reflect.New(mtype)).OverflowUint(uint64(val.Convert(mtype).Uint())) { + if reflect.Indirect(reflect.New(mtype)).OverflowUint(val.Convert(reflect.TypeOf(uint64(0))).Uint()) { return reflect.ValueOf(nil), fmt.Errorf("%v(%T) would overflow %v", tval, tval, mtype.String()) } return val.Convert(mtype), nil case reflect.Float32, reflect.Float64: val := reflect.ValueOf(tval) - if !val.Type().ConvertibleTo(mtype) { + if !val.Type().ConvertibleTo(mtype) || val.Kind() == reflect.Int64 { return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to %v", tval, tval, mtype.String()) } - if reflect.Indirect(reflect.New(mtype)).OverflowFloat(val.Convert(mtype).Float()) { + if reflect.Indirect(reflect.New(mtype)).OverflowFloat(val.Convert(reflect.TypeOf(float64(0))).Float()) { return reflect.ValueOf(nil), fmt.Errorf("%v(%T) would overflow %v", tval, tval, mtype.String()) } @@ -844,6 +1072,11 @@ func (d *Decoder) valueFromToml(mtype reflect.Type, tval interface{}, mval1 *ref ival := mval1.Elem() return d.valueFromToml(mval1.Elem().Type(), t, &ival) } + case reflect.Slice, reflect.Array: + if isOtherSequence(mtype) && isOtherSequence(reflect.TypeOf(t)) { + return d.valueFromOtherSliceI(mtype, t) + } + return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to %v(%v)", tval, tval, mtype, mtype.Kind()) default: return reflect.ValueOf(nil), fmt.Errorf("Can't convert %v(%T) to %v(%v)", tval, tval, mtype, mtype.Kind()) } @@ -867,6 +1100,12 @@ func (d *Decoder) unwrapPointer(mtype reflect.Type, tval interface{}, mval1 *ref return mval, nil } +func (d *Decoder) unmarshalText(tval interface{}, mval reflect.Value) error { + var buf bytes.Buffer + fmt.Fprint(&buf, tval) + return callTextUnmarshaler(mval, buf.Bytes()) +} + func tomlOptions(vf reflect.StructField, an annotation) tomlOpts { tag := vf.Tag.Get(an.tag) parse := strings.Split(tag, ",") @@ -879,6 +1118,7 @@ func tomlOptions(vf reflect.StructField, an annotation) tomlOpts { defaultValue := vf.Tag.Get(tagDefault) result := tomlOpts{ name: vf.Name, + nameFromTag: false, comment: comment, commented: commented, multiline: multiline, @@ -891,6 +1131,7 @@ func tomlOptions(vf reflect.StructField, an annotation) tomlOpts { result.include = false } else { result.name = strings.Trim(parse[0], " ") + result.nameFromTag = true } } if vf.PkgPath != "" { @@ -907,11 +1148,7 @@ func tomlOptions(vf reflect.StructField, an annotation) tomlOpts { func isZero(val reflect.Value) bool { switch val.Type().Kind() { - case reflect.Map: - fallthrough - case reflect.Array: - fallthrough - case reflect.Slice: + case reflect.Slice, reflect.Array, reflect.Map: return val.Len() == 0 default: return reflect.DeepEqual(val.Interface(), reflect.Zero(val.Type()).Interface()) @@ -924,3 +1161,80 @@ func formatError(err error, pos Position) error { } return fmt.Errorf("%s: %s", pos, err) } + +// visitorState keeps track of which keys were unmarshaled. +type visitorState struct { + tree *Tree + path []string + keys map[string]struct{} + active bool +} + +func newVisitorState(tree *Tree) visitorState { + path, result := []string{}, map[string]struct{}{} + insertKeys(path, result, tree) + return visitorState{ + tree: tree, + path: path[:0], + keys: result, + active: true, + } +} + +func (s *visitorState) push(key string) { + if s.active { + s.path = append(s.path, key) + } +} + +func (s *visitorState) pop() { + if s.active { + s.path = s.path[:len(s.path)-1] + } +} + +func (s *visitorState) visit() { + if s.active { + delete(s.keys, strings.Join(s.path, ".")) + } +} + +func (s *visitorState) visitAll() { + if s.active { + for k := range s.keys { + if strings.HasPrefix(k, strings.Join(s.path, ".")) { + delete(s.keys, k) + } + } + } +} + +func (s *visitorState) validate() error { + if !s.active { + return nil + } + undecoded := make([]string, 0, len(s.keys)) + for key := range s.keys { + undecoded = append(undecoded, key) + } + sort.Strings(undecoded) + if len(undecoded) > 0 { + return fmt.Errorf("undecoded keys: %q", undecoded) + } + return nil +} + +func insertKeys(path []string, m map[string]struct{}, tree *Tree) { + for k, v := range tree.values { + switch node := v.(type) { + case []*Tree: + for i, item := range node { + insertKeys(append(path, k, strconv.Itoa(i)), m, item) + } + case *Tree: + insertKeys(append(path, k), m, node) + case *tomlValue: + m[strings.Join(append(path, k), ".")] = struct{}{} + } + } +} diff --git a/vendor/github.com/pelletier/go-toml/parser.go b/vendor/github.com/pelletier/go-toml/parser.go index 1b344fee..7bf40bbd 100644 --- a/vendor/github.com/pelletier/go-toml/parser.go +++ b/vendor/github.com/pelletier/go-toml/parser.go @@ -158,6 +158,11 @@ func (p *tomlParser) parseGroup() tomlParserStateFn { if err := p.tree.createSubTree(keys, startToken.Position); err != nil { p.raiseError(key, "%s", err) } + destTree := p.tree.GetPath(keys) + if target, ok := destTree.(*Tree); ok && target != nil && target.inline { + p.raiseError(key, "could not re-define exist inline table or its sub-table : %s", + strings.Join(keys, ".")) + } p.assume(tokenRightBracket) p.currentTable = keys return p.parseStart @@ -201,6 +206,11 @@ func (p *tomlParser) parseAssign() tomlParserStateFn { strings.Join(tableKey, ".")) } + if targetNode.inline { + p.raiseError(key, "could not add key or sub-table to exist inline table or its sub-table : %s", + strings.Join(tableKey, ".")) + } + // assign value to the found table keyVal := parsedKey[len(parsedKey)-1] localKey := []string{keyVal} @@ -411,12 +421,13 @@ Loop: if tokenIsComma(previous) { p.raiseError(previous, "trailing comma at the end of inline table") } + tree.inline = true return tree } func (p *tomlParser) parseArray() interface{} { var array []interface{} - arrayType := reflect.TypeOf(nil) + arrayType := reflect.TypeOf(newTree()) for { follow := p.peek() if follow == nil || follow.typ == tokenEOF { @@ -427,11 +438,8 @@ func (p *tomlParser) parseArray() interface{} { break } val := p.parseRvalue() - if arrayType == nil { - arrayType = reflect.TypeOf(val) - } if reflect.TypeOf(val) != arrayType { - p.raiseError(follow, "mixed types in array") + arrayType = nil } array = append(array, val) follow = p.peek() @@ -445,6 +453,12 @@ func (p *tomlParser) parseArray() interface{} { p.getToken() } } + + // if the array is a mixed-type array or its length is 0, + // don't convert it to a table array + if len(array) <= 0 { + arrayType = nil + } // An array of Trees is actually an array of inline // tables, which is a shorthand for a table array. If the // array was not converted from []interface{} to []*Tree, diff --git a/vendor/github.com/pelletier/go-toml/token.go b/vendor/github.com/pelletier/go-toml/token.go index 36a3fc88..6af4ec46 100644 --- a/vendor/github.com/pelletier/go-toml/token.go +++ b/vendor/github.com/pelletier/go-toml/token.go @@ -1,9 +1,6 @@ package toml -import ( - "fmt" - "unicode" -) +import "fmt" // Define tokens type tokenType int @@ -112,7 +109,7 @@ func isSpace(r rune) bool { } func isAlphanumeric(r rune) bool { - return unicode.IsLetter(r) || r == '_' + return 'a' <= r && r <= 'z' || 'A' <= r && r <= 'Z' || r == '_' } func isKeyChar(r rune) bool { @@ -127,7 +124,7 @@ func isKeyStartChar(r rune) bool { } func isDigit(r rune) bool { - return unicode.IsNumber(r) + return '0' <= r && r <= '9' } func isHexDigit(r rune) bool { diff --git a/vendor/github.com/pelletier/go-toml/toml.go b/vendor/github.com/pelletier/go-toml/toml.go index f4d56870..d323c39b 100644 --- a/vendor/github.com/pelletier/go-toml/toml.go +++ b/vendor/github.com/pelletier/go-toml/toml.go @@ -23,6 +23,7 @@ type Tree struct { values map[string]interface{} // string -> *tomlValue, *Tree, []*Tree comment string commented bool + inline bool position Position } @@ -311,6 +312,7 @@ func (t *Tree) createSubTree(keys []string, pos Position) error { if !exists { tree := newTreeWithPosition(Position{Line: t.position.Line + i, Col: t.position.Col}) tree.position = pos + tree.inline = subtree.inline subtree.values[intermediateKey] = tree nextTree = tree } diff --git a/vendor/github.com/pelletier/go-toml/tomltree_write.go b/vendor/github.com/pelletier/go-toml/tomltree_write.go index 16c19867..2d6487ed 100644 --- a/vendor/github.com/pelletier/go-toml/tomltree_write.go +++ b/vendor/github.com/pelletier/go-toml/tomltree_write.go @@ -30,9 +30,15 @@ type sortNode struct { // are preserved. Quotation marks and backslashes are also not escaped. func encodeMultilineTomlString(value string, commented string) string { var b bytes.Buffer + adjacentQuoteCount := 0 b.WriteString(commented) - for _, rr := range value { + for i, rr := range value { + if rr != '"' { + adjacentQuoteCount = 0 + } else { + adjacentQuoteCount++ + } switch rr { case '\b': b.WriteString(`\b`) @@ -45,7 +51,12 @@ func encodeMultilineTomlString(value string, commented string) string { case '\r': b.WriteString("\r") case '"': - b.WriteString(`"`) + if adjacentQuoteCount >= 3 || i == len(value)-1 { + adjacentQuoteCount = 0 + b.WriteString(`\"`) + } else { + b.WriteString(`"`) + } case '\\': b.WriteString(`\`) default: @@ -92,7 +103,30 @@ func encodeTomlString(value string) string { return b.String() } -func tomlValueStringRepresentation(v interface{}, commented string, indent string, arraysOneElementPerLine bool) (string, error) { +func tomlTreeStringRepresentation(t *Tree, ord marshalOrder) (string, error) { + var orderedVals []sortNode + switch ord { + case OrderPreserve: + orderedVals = sortByLines(t) + default: + orderedVals = sortAlphabetical(t) + } + + var values []string + for _, node := range orderedVals { + k := node.key + v := t.values[k] + + repr, err := tomlValueStringRepresentation(v, "", "", ord, false) + if err != nil { + return "", err + } + values = append(values, quoteKeyIfNeeded(k)+" = "+repr) + } + return "{ " + strings.Join(values, ", ") + " }", nil +} + +func tomlValueStringRepresentation(v interface{}, commented string, indent string, ord marshalOrder, arraysOneElementPerLine bool) (string, error) { // this interface check is added to dereference the change made in the writeTo function. // That change was made to allow this function to see formatting options. tv, ok := v.(*tomlValue) @@ -129,7 +163,7 @@ func tomlValueStringRepresentation(v interface{}, commented string, indent strin return "\"" + encodeTomlString(value) + "\"", nil case []byte: b, _ := v.([]byte) - return tomlValueStringRepresentation(string(b), commented, indent, arraysOneElementPerLine) + return tomlValueStringRepresentation(string(b), commented, indent, ord, arraysOneElementPerLine) case bool: if value { return "true", nil @@ -143,6 +177,8 @@ func tomlValueStringRepresentation(v interface{}, commented string, indent strin return value.String(), nil case LocalTime: return value.String(), nil + case *Tree: + return tomlTreeStringRepresentation(value, ord) case nil: return "", nil } @@ -153,7 +189,7 @@ func tomlValueStringRepresentation(v interface{}, commented string, indent strin var values []string for i := 0; i < rv.Len(); i++ { item := rv.Index(i).Interface() - itemRepr, err := tomlValueStringRepresentation(item, commented, indent, arraysOneElementPerLine) + itemRepr, err := tomlValueStringRepresentation(item, commented, indent, ord, arraysOneElementPerLine) if err != nil { return "", err } @@ -176,7 +212,7 @@ func tomlValueStringRepresentation(v interface{}, commented string, indent strin return stringBuffer.String(), nil } - return "[" + strings.Join(values, ",") + "]", nil + return "[" + strings.Join(values, ", ") + "]", nil } return "", fmt.Errorf("unsupported value type %T: %v", v, v) } @@ -271,10 +307,10 @@ func sortAlphabetical(t *Tree) (vals []sortNode) { } func (t *Tree) writeTo(w io.Writer, indent, keyspace string, bytesCount int64, arraysOneElementPerLine bool) (int64, error) { - return t.writeToOrdered(w, indent, keyspace, bytesCount, arraysOneElementPerLine, OrderAlphabetical, false) + return t.writeToOrdered(w, indent, keyspace, bytesCount, arraysOneElementPerLine, OrderAlphabetical, " ", false) } -func (t *Tree) writeToOrdered(w io.Writer, indent, keyspace string, bytesCount int64, arraysOneElementPerLine bool, ord marshalOrder, parentCommented bool) (int64, error) { +func (t *Tree) writeToOrdered(w io.Writer, indent, keyspace string, bytesCount int64, arraysOneElementPerLine bool, ord marshalOrder, indentString string, parentCommented bool) (int64, error) { var orderedVals []sortNode switch ord { @@ -290,7 +326,7 @@ func (t *Tree) writeToOrdered(w io.Writer, indent, keyspace string, bytesCount i k := node.key v := t.values[k] - combinedKey := k + combinedKey := quoteKeyIfNeeded(k) if keyspace != "" { combinedKey = keyspace + "." + combinedKey } @@ -324,7 +360,7 @@ func (t *Tree) writeToOrdered(w io.Writer, indent, keyspace string, bytesCount i if err != nil { return bytesCount, err } - bytesCount, err = node.writeToOrdered(w, indent+" ", combinedKey, bytesCount, arraysOneElementPerLine, ord, parentCommented || t.commented || tv.commented) + bytesCount, err = node.writeToOrdered(w, indent+indentString, combinedKey, bytesCount, arraysOneElementPerLine, ord, indentString, parentCommented || t.commented || tv.commented) if err != nil { return bytesCount, err } @@ -340,7 +376,7 @@ func (t *Tree) writeToOrdered(w io.Writer, indent, keyspace string, bytesCount i return bytesCount, err } - bytesCount, err = subTree.writeToOrdered(w, indent+" ", combinedKey, bytesCount, arraysOneElementPerLine, ord, parentCommented || t.commented || subTree.commented) + bytesCount, err = subTree.writeToOrdered(w, indent+indentString, combinedKey, bytesCount, arraysOneElementPerLine, ord, indentString, parentCommented || t.commented || subTree.commented) if err != nil { return bytesCount, err } @@ -357,7 +393,7 @@ func (t *Tree) writeToOrdered(w io.Writer, indent, keyspace string, bytesCount i if parentCommented || t.commented || v.commented { commented = "# " } - repr, err := tomlValueStringRepresentation(v, commented, indent, arraysOneElementPerLine) + repr, err := tomlValueStringRepresentation(v, commented, indent, ord, arraysOneElementPerLine) if err != nil { return bytesCount, err } diff --git a/vendor/github.com/spf13/viper/.editorconfig b/vendor/github.com/spf13/viper/.editorconfig new file mode 100644 index 00000000..63afcbcd --- /dev/null +++ b/vendor/github.com/spf13/viper/.editorconfig @@ -0,0 +1,15 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.go] +indent_style = tab + +[{Makefile, *.mk}] +indent_style = tab diff --git a/vendor/github.com/spf13/viper/.gitignore b/vendor/github.com/spf13/viper/.gitignore index d6941f32..89625083 100644 --- a/vendor/github.com/spf13/viper/.gitignore +++ b/vendor/github.com/spf13/viper/.gitignore @@ -1,20 +1,5 @@ +/.idea/ /bin/ /build/ /var/ /vendor/ - -# IDE integration -/.vscode/* -!/.vscode/launch.json -!/.vscode/tasks.json -/.idea/* -!/.idea/codeStyles/ -!/.idea/copyright/ -!/.idea/dataSources.xml -!/.idea/*.iml -!/.idea/externalDependencies.xml -!/.idea/go.imports.xml -!/.idea/modules.xml -!/.idea/runConfigurations/ -!/.idea/scopes/ -!/.idea/sqldialects.xml diff --git a/vendor/github.com/spf13/viper/.golangci.yml b/vendor/github.com/spf13/viper/.golangci.yml index 0ea9249e..a0755ce7 100644 --- a/vendor/github.com/spf13/viper/.golangci.yml +++ b/vendor/github.com/spf13/viper/.golangci.yml @@ -21,4 +21,7 @@ linters: - scopelint - gocyclo - gocognit - - gocritic \ No newline at end of file + - gocritic + +service: + golangci-lint-version: 1.21.x diff --git a/vendor/github.com/spf13/viper/.travis.yml b/vendor/github.com/spf13/viper/.travis.yml deleted file mode 100644 index ed677bbb..00000000 --- a/vendor/github.com/spf13/viper/.travis.yml +++ /dev/null @@ -1,32 +0,0 @@ -go_import_path: github.com/spf13/viper - -language: go - -env: - global: - - GO111MODULE="on" - - GOFLAGS="-mod=readonly" - -go: - - 1.11.x - - 1.12.x - - 1.13.x - - tip - -os: - - linux - - osx - -matrix: - allow_failures: - - go: tip - fast_finish: true - -script: - - go install ./... - - diff -u <(echo -n) <(gofmt -d .) - - go test -v ./... - -after_success: - - go get -u -d github.com/spf13/hugo - - cd $GOPATH/src/github.com/spf13/hugo && make && ./hugo -s docs && cd - diff --git a/vendor/github.com/spf13/viper/README.md b/vendor/github.com/spf13/viper/README.md index a574677f..dfd8034f 100644 --- a/vendor/github.com/spf13/viper/README.md +++ b/vendor/github.com/spf13/viper/README.md @@ -1,10 +1,13 @@ -![viper logo](https://cloud.githubusercontent.com/assets/173412/10886745/998df88a-8151-11e5-9448-4736db51020d.png) +![Viper](.github/logo.png?raw=true) -Go configuration with fangs! +[![Mentioned in Awesome Go](https://awesome.re/mentioned-badge-flat.svg)](https://github.com/avelino/awesome-go#configuration) -[![Actions](https://github.com/spf13/viper/workflows/CI/badge.svg)](https://github.com/spf13/viper) +[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/spf13/viper/CI?style=flat-square)](https://github.com/spf13/viper/actions?query=workflow%3ACI) [![Join the chat at https://gitter.im/spf13/viper](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/spf13/viper?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -[![GoDoc](https://godoc.org/github.com/spf13/viper?status.svg)](https://godoc.org/github.com/spf13/viper) +[![Go Report Card](https://goreportcard.com/badge/github.com/spf13/viper?style=flat-square)](https://goreportcard.com/report/github.com/spf13/viper) +[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white&style=flat-square)](https://pkg.go.dev/mod/github.com/spf13/viper) + +**Go configuration with fangs!** Many Go projects are built using Viper including: @@ -400,7 +403,7 @@ in a Key/Value store such as etcd or Consul. These values take precedence over default values, but are overridden by configuration values retrieved from disk, flags, or environment variables. -Viper uses [crypt](https://github.com/xordataexchange/crypt) to retrieve +Viper uses [crypt](https://github.com/bketelsen/crypt) to retrieve configuration from the K/V store, which means that you can store your configuration values encrypted and have them automatically decrypted if you have the correct gpg keyring. Encryption is optional. @@ -412,7 +415,7 @@ independently of it. K/V store. `crypt` defaults to etcd on http://127.0.0.1:4001. ```bash -$ go get github.com/xordataexchange/crypt/bin/crypt +$ go get github.com/bketelsen/crypt/bin/crypt $ crypt set -plaintext /config/hugo.json /Users/hugo/settings/config.json ``` @@ -435,7 +438,7 @@ err := viper.ReadRemoteConfig() ``` #### Consul -You need to set a key to Consul key/value storage with JSON value containing your desired config. +You need to set a key to Consul key/value storage with JSON value containing your desired config. For example, create a Consul key/value store key `MY_CONSUL_KEY` with value: ```json @@ -454,6 +457,16 @@ fmt.Println(viper.Get("port")) // 8080 fmt.Println(viper.Get("hostname")) // myhostname.com ``` +#### Firestore + +```go +viper.AddRemoteProvider("firestore", "google-cloud-project-id", "collection/document") +viper.SetConfigType("json") // Config's format: "json", "toml", "yaml", "yml" +err := viper.ReadRemoteConfig() +``` + +Of course, you're allowed to use `SecureRemoteProvider` also + ### Remote Key/Value Store Example - Encrypted ```go @@ -728,14 +741,14 @@ Viper uses [github.com/mitchellh/mapstructure](https://github.com/mitchellh/maps ### Marshalling to string -You may need to marshal all the settings held in viper into a string rather than write them to a file. +You may need to marshal all the settings held in viper into a string rather than write them to a file. You can use your favorite format's marshaller with the config returned by `AllSettings()`. ```go import ( yaml "gopkg.in/yaml.v2" // ... -) +) func yamlStringSettings() string { c := viper.AllSettings() diff --git a/vendor/github.com/spf13/viper/go.mod b/vendor/github.com/spf13/viper/go.mod index 3d51b8c0..7d108dcc 100644 --- a/vendor/github.com/spf13/viper/go.mod +++ b/vendor/github.com/spf13/viper/go.mod @@ -3,27 +3,22 @@ module github.com/spf13/viper go 1.12 require ( - github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6 // indirect + github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c github.com/coreos/bbolt v1.3.2 // indirect - github.com/coreos/etcd v3.3.13+incompatible // indirect - github.com/coreos/go-semver v0.2.0 // indirect github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e // indirect github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f // indirect github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect github.com/fsnotify/fsnotify v1.4.7 github.com/gogo/protobuf v1.2.1 // indirect github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef // indirect - github.com/google/btree v1.0.0 // indirect - github.com/gorilla/websocket v1.4.0 // indirect + github.com/gorilla/websocket v1.4.2 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.0.0 // indirect github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.9.0 // indirect github.com/hashicorp/hcl v1.0.0 github.com/jonboulle/clockwork v0.1.0 // indirect - github.com/json-iterator/go v1.1.9 // indirect github.com/magiconair/properties v1.8.1 github.com/mitchellh/mapstructure v1.1.2 - github.com/modern-go/reflect2 v1.0.1 // indirect github.com/pelletier/go-toml v1.2.0 github.com/prometheus/client_golang v0.9.3 // indirect github.com/smartystreets/goconvey v1.6.4 // indirect @@ -36,14 +31,10 @@ require ( github.com/subosito/gotenv v1.2.0 github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 // indirect github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 // indirect - github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77 go.etcd.io/bbolt v1.3.2 // indirect go.uber.org/atomic v1.4.0 // indirect go.uber.org/multierr v1.1.0 // indirect go.uber.org/zap v1.10.0 // indirect - golang.org/x/net v0.0.0-20190522155817-f3200d17e092 // indirect - golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 // indirect - google.golang.org/grpc v1.21.0 // indirect gopkg.in/ini.v1 v1.51.0 gopkg.in/yaml.v2 v2.2.4 ) diff --git a/vendor/github.com/spf13/viper/go.sum b/vendor/github.com/spf13/viper/go.sum index 098f5d3a..463aa7db 100644 --- a/vendor/github.com/spf13/viper/go.sum +++ b/vendor/github.com/spf13/viper/go.sum @@ -1,22 +1,46 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3 h1:AVXDdKsrtX33oR9fbCMu/+c1o8Ofjq6Ku/MInaLVg5Y= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go/bigquery v1.0.1 h1:hL+ycaJpVE9M7nLoiXb/Pn10ENE2u+oddxbD8uu0ZVU= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/datastore v1.0.0 h1:Kt+gOPPp2LEPWp8CSfxhsM8ik9CcyE/gYu+0r+RnZvM= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/firestore v1.1.0 h1:9x7Bx0A9R5/M9jibeJeZWqjeVEIxYW9fZYqB9a70/bY= +cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +cloud.google.com/go/pubsub v1.0.1 h1:W9tAK3E57P75u0XLLR82LZyw8VpAnhmyTOxW9qzmyj8= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/storage v1.0.0 h1:VV2nUM3wwLLGh9lSABFgZMjInyUbJeaRSE64WuAIQ+4= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6 h1:G1bPvciwNyF7IUmKXNt9Ak3m6u9DE1rF+RmtIkBpVdA= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c h1:+0HFd5KSZ/mm3JmhmrDukiId5iR6w4+BdFtfSy4yWIc= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/coreos/bbolt v1.3.2 h1:wZwiHHUieZCquLkDL0B8UhzreNWsPHooDAG3q34zk0s= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.13+incompatible h1:8F3hqu9fGYLBifCmRCJsicFqDx/D68Rt3q1JMazcgBQ= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.2.0 h1:3Jm3tLmsgAYcjC+4Up7hJrFBPr+n7rAqYeSw/SZazuY= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= @@ -27,10 +51,12 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= @@ -43,29 +69,77 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfU github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef h1:veQD95Isof8w9/WXiA+pa3tz3fJXkt5B7QaRBrM62gk= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0 h1:Iju5GlWwrvL6UBg4zJJt3btmonfrMlCDdsejg4CZE7c= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0 h1:bM6ZAFZmc/wPFaRDi0d5L7hGEZEx/2u+Tmr2evNHDiI= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/consul/api v1.1.0 h1:BNQPM9ytxj6jbjjdRPioQ94T6YXriSopn0i8COv6SRA= +github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/sdk v0.1.1 h1:LnuDWGNsoajlhGyHJvuWW6FVqRl8JOTPqS6CPTsYjhY= +github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-rootcerts v1.0.0 h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3 h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.6 h1:MrUvLMLTMxbqFJ9kzlvat/rYZqZnW3u4wkLzWTaFwKs= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 h1:rBMNdlhTLzJjJSDIjNEXX1Pz3Hmwmz91v+zycvx9PJc= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= @@ -81,23 +155,39 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/miekg/dns v1.0.14 h1:9jZdLNd/P4+SfEJ0TNyxYpsK8N4GtfylBLqtbYN1sbA= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3 h1:9iH4JKXLzFbOAdtqv/a+j8aewx2Y8lAjAydhbaScPF8= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= @@ -112,6 +202,10 @@ github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084 h1:sofwID9zm4tzr github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sirupsen/logrus v1.2.0 h1:juTguoYk5qI21pwyTXY3B3Y5cOTH3ZUyZCg1v/mihuo= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= @@ -141,10 +235,11 @@ github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 h1:LnC5Kc github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77 h1:ESFSdwYZvkeru3RtdrYueztKhOBCSAAzS4Gf+k0tEow= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= go.etcd.io/bbolt v1.3.2 h1:Z/90sZLPOeCy2PwprqkFa25PdkusRzaj9P8zm/KNyvk= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0 h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI= @@ -152,46 +247,132 @@ go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/ go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5 h1:58fnuSXlxZmFdJyvtTFVmVhcMLU6v5fEb/ok4wyqtNU= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136 h1:A1gGSx58LAGVHUUsOf7IiR0u8Xb6W51gRwfDBhkdcaw= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092 h1:4QSRKanuywn15aTZvI/mIDEgPQpswuFndXpOj3rKEco= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0 h1:HyfiK1WMnHj5FXFXatD+Qs1A/xC2Run6RzeW1SyHxpc= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384 h1:TFlARGu6Czu1z7q93HTxcP1P+/ZFC/IKythI5RzrnRg= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc h1:NCy3Ohtk6Iny5V/reW2Ktypo4zIpWBdRJ1uFMjBxdg8= +golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0 h1:Q3Ui3V3/CVinFWFiW39Iw0kMuVrRzYX0wN6OPFp0lTA= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a h1:Ob5/580gVHBJZgXnff1cZDbG+xLtMVE5mDRTe+nIsX4= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.21.0 h1:G+97AoqBnmZIT91cLG/EkCoK9NSelj64P8bOHHNmGn0= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1 h1:j6XxA85m/6txkUCHvzlV5f+HBNl/1r5cZ2A/3IEFOO8= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= @@ -200,3 +381,8 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/vendor/github.com/spf13/viper/viper.go b/vendor/github.com/spf13/viper/viper.go index 265eae7f..f61f4ed7 100644 --- a/vendor/github.com/spf13/viper/viper.go +++ b/vendor/github.com/spf13/viper/viper.go @@ -287,7 +287,7 @@ func NewWithOptions(opts ...Option) *Viper { func Reset() { v = New() SupportedExts = []string{"json", "toml", "yaml", "yml", "properties", "props", "prop", "hcl", "dotenv", "env", "ini"} - SupportedRemoteProviders = []string{"etcd", "consul"} + SupportedRemoteProviders = []string{"etcd", "consul", "firestore"} } type defaultRemoteProvider struct { @@ -328,7 +328,7 @@ type RemoteProvider interface { var SupportedExts = []string{"json", "toml", "yaml", "yml", "properties", "props", "prop", "hcl", "dotenv", "env", "ini"} // SupportedRemoteProviders are universally supported remote providers. -var SupportedRemoteProviders = []string{"etcd", "consul"} +var SupportedRemoteProviders = []string{"etcd", "consul", "firestore"} func OnConfigChange(run func(in fsnotify.Event)) { v.OnConfigChange(run) } func (v *Viper) OnConfigChange(run func(in fsnotify.Event)) { @@ -477,7 +477,7 @@ func (v *Viper) AddConfigPath(in string) { // AddRemoteProvider adds a remote configuration source. // Remote Providers are searched in the order they are added. -// provider is a string value, "etcd" or "consul" are currently supported. +// provider is a string value: "etcd", "consul" or "firestore" are currently supported. // endpoint is the url. etcd requires http://ip:port consul requires ip:port // path is the path in the k/v store to retrieve configuration // To retrieve a config file called myapp.json from /configs/myapp.json @@ -506,14 +506,14 @@ func (v *Viper) AddRemoteProvider(provider, endpoint, path string) error { // AddSecureRemoteProvider adds a remote configuration source. // Secure Remote Providers are searched in the order they are added. -// provider is a string value, "etcd" or "consul" are currently supported. +// provider is a string value: "etcd", "consul" or "firestore" are currently supported. // endpoint is the url. etcd requires http://ip:port consul requires ip:port // secretkeyring is the filepath to your openpgp secret keyring. e.g. /etc/secrets/myring.gpg // path is the path in the k/v store to retrieve configuration // To retrieve a config file called myapp.json from /configs/myapp.json // you should set path to /configs and set config name (SetConfigName()) to // "myapp" -// Secure Remote Providers are implemented with github.com/xordataexchange/crypt +// Secure Remote Providers are implemented with github.com/bketelsen/crypt func AddSecureRemoteProvider(provider, endpoint, path, secretkeyring string) error { return v.AddSecureRemoteProvider(provider, endpoint, path, secretkeyring) } @@ -996,11 +996,6 @@ func (v *Viper) BindFlagValues(flags FlagValueSet) (err error) { } // BindFlagValue binds a specific key to a FlagValue. -// Example (where serverCmd is a Cobra instance): -// -// serverCmd.Flags().Int("port", 1138, "Port to run Application server on") -// Viper.BindFlagValue("port", serverCmd.Flags().Lookup("port")) -// func BindFlagValue(key string, flag FlagValue) error { return v.BindFlagValue(key, flag) } func (v *Viper) BindFlagValue(key string, flag FlagValue) error { if flag == nil { @@ -1088,6 +1083,8 @@ func (v *Viper) find(lcaseKey string, flagDefault bool) interface{} { s = strings.TrimSuffix(s, "]") res, _ := readAsCSV(s) return cast.ToIntSlice(res) + case "stringToString": + return stringToStringConv(flag.ValueString()) default: return flag.ValueString() } @@ -1163,6 +1160,8 @@ func (v *Viper) find(lcaseKey string, flagDefault bool) interface{} { s = strings.TrimSuffix(s, "]") res, _ := readAsCSV(s) return cast.ToIntSlice(res) + case "stringToString": + return stringToStringConv(flag.ValueString()) default: return flag.ValueString() } @@ -1182,6 +1181,30 @@ func readAsCSV(val string) ([]string, error) { return csvReader.Read() } +// mostly copied from pflag's implementation of this operation here https://github.com/spf13/pflag/blob/master/string_to_string.go#L79 +// alterations are: errors are swallowed, map[string]interface{} is returned in order to enable cast.ToStringMap +func stringToStringConv(val string) interface{} { + val = strings.Trim(val, "[]") + // An empty string would cause an empty map + if len(val) == 0 { + return map[string]interface{}{} + } + r := csv.NewReader(strings.NewReader(val)) + ss, err := r.Read() + if err != nil { + return nil + } + out := make(map[string]interface{}, len(ss)) + for _, pair := range ss { + kv := strings.SplitN(pair, "=", 2) + if len(kv) != 2 { + return nil + } + out[kv[0]] = kv[1] + } + return out +} + // IsSet checks to see if the key has been set in any of the data locations. // IsSet is case-insensitive for a key. func IsSet(key string) bool { return v.IsSet(key) } @@ -1418,11 +1441,18 @@ func (v *Viper) SafeWriteConfigAs(filename string) error { func (v *Viper) writeConfig(filename string, force bool) error { jww.INFO.Println("Attempting to write configuration to file.") + var configType string + ext := filepath.Ext(filename) - if len(ext) <= 1 { - return fmt.Errorf("filename: %s requires valid extension", filename) + if ext != "" { + configType = ext[1:] + } else { + configType = v.configType } - configType := ext[1:] + if configType == "" { + return fmt.Errorf("config type could not be determined for %s", filename) + } + if !stringInSlice(configType, SupportedExts) { return UnsupportedConfigError(configType) } @@ -1619,7 +1649,7 @@ func (v *Viper) marshalWriter(f afero.File, configType string) error { if sectionName == "default" { sectionName = "" } - cfg.Section(sectionName).Key(keyName).SetValue(Get(key).(string)) + cfg.Section(sectionName).Key(keyName).SetValue(v.Get(key).(string)) } cfg.WriteTo(f) } diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin.go b/vendor/golang.org/x/sys/unix/syscall_darwin.go index 9a5a6ee5..0cf31acf 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -423,6 +423,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sysnb Getrlimit(which int, lim *Rlimit) (err error) //sysnb Getrusage(who int, rusage *Rusage) (err error) //sysnb Getsid(pid int) (sid int, err error) +//sysnb Gettimeofday(tp *Timeval) (err error) //sysnb Getuid() (uid int) //sysnb Issetugid() (tainted bool) //sys Kqueue() (fd int, err error) diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go index 707ba4f5..2724e3a5 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_386.go @@ -20,17 +20,6 @@ func setTimeval(sec, usec int64) Timeval { return Timeval{Sec: int32(sec), Usec: int32(usec)} } -//sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error) -func Gettimeofday(tv *Timeval) (err error) { - // The tv passed to gettimeofday must be non-nil - // but is otherwise unused. The answers come back - // in the two registers. - sec, usec, err := gettimeofday(tv) - tv.Sec = int32(sec) - tv.Usec = int32(usec) - return err -} - func SetKevent(k *Kevent_t, fd, mode, flags int) { k.Ident = uint32(fd) k.Filter = int16(mode) diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go index fdbfb591..ce2e0d24 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go @@ -20,17 +20,6 @@ func setTimeval(sec, usec int64) Timeval { return Timeval{Sec: sec, Usec: int32(usec)} } -//sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error) -func Gettimeofday(tv *Timeval) (err error) { - // The tv passed to gettimeofday must be non-nil - // but is otherwise unused. The answers come back - // in the two registers. - sec, usec, err := gettimeofday(tv) - tv.Sec = sec - tv.Usec = usec - return err -} - func SetKevent(k *Kevent_t, fd, mode, flags int) { k.Ident = uint64(fd) k.Filter = int16(mode) diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go index f8bc4cfb..fc17a3f2 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm.go @@ -20,17 +20,6 @@ func setTimeval(sec, usec int64) Timeval { return Timeval{Sec: int32(sec), Usec: int32(usec)} } -//sysnb gettimeofday(tp *Timeval) (sec int32, usec int32, err error) -func Gettimeofday(tv *Timeval) (err error) { - // The tv passed to gettimeofday must be non-nil - // but is otherwise unused. The answers come back - // in the two registers. - sec, usec, err := gettimeofday(tv) - tv.Sec = int32(sec) - tv.Usec = int32(usec) - return err -} - func SetKevent(k *Kevent_t, fd, mode, flags int) { k.Ident = uint32(fd) k.Filter = int16(mode) diff --git a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go index 5ede3ac3..1e91ddf3 100644 --- a/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go @@ -22,17 +22,6 @@ func setTimeval(sec, usec int64) Timeval { return Timeval{Sec: sec, Usec: int32(usec)} } -//sysnb gettimeofday(tp *Timeval) (sec int64, usec int32, err error) -func Gettimeofday(tv *Timeval) (err error) { - // The tv passed to gettimeofday must be non-nil - // but is otherwise unused. The answers come back - // in the two registers. - sec, usec, err := gettimeofday(tv) - tv.Sec = sec - tv.Usec = usec - return err -} - func SetKevent(k *Kevent_t, fd, mode, flags int) { k.Ident = uint64(fd) k.Filter = int16(mode) diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go index c1cc0a41..23e94d36 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.1_11.go @@ -966,6 +966,16 @@ func Getsid(pid int) (sid int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Gettimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getuid() (uid int) { r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) uid = int(r0) @@ -1709,18 +1719,6 @@ func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { - r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) - sec = int32(r0) - usec = int32(r1) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go index a3fc4900..e2ffb3be 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_386.go @@ -1376,6 +1376,21 @@ func libc_getsid_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Gettimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_gettimeofday_trampoline() + +//go:linkname libc_gettimeofday libc_gettimeofday +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getuid() (uid int) { r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) uid = int(r0) @@ -2357,23 +2372,6 @@ func libc_ptrace_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { - r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) - sec = int32(r0) - usec = int32(r1) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_gettimeofday_trampoline() - -//go:linkname libc_gettimeofday libc_gettimeofday -//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go index f8e5c37c..10256173 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.1_11.go @@ -966,6 +966,16 @@ func Getsid(pid int) (sid int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Gettimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getuid() (uid int) { r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) uid = int(r0) @@ -1709,18 +1719,6 @@ func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { - r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) - sec = int64(r0) - usec = int32(r1) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index 50d6437e..c67e336e 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -1376,6 +1376,21 @@ func libc_getsid_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Gettimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_gettimeofday_trampoline() + +//go:linkname libc_gettimeofday libc_gettimeofday +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getuid() (uid int) { r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) uid = int(r0) @@ -2357,23 +2372,6 @@ func libc_ptrace_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { - r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) - sec = int64(r0) - usec = int32(r1) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_gettimeofday_trampoline() - -//go:linkname libc_gettimeofday libc_gettimeofday -//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := syscall_syscall(funcPC(libc_fstat64_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go index cea04e04..d34e6df2 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.1_11.go @@ -966,6 +966,16 @@ func Getsid(pid int) (sid int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Gettimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getuid() (uid int) { r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) uid = int(r0) @@ -1682,18 +1692,6 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { - r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) - sec = int32(r0) - usec = int32(r1) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go index 63103950..b759757a 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm.go @@ -1376,6 +1376,21 @@ func libc_getsid_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Gettimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_gettimeofday_trampoline() + +//go:linkname libc_gettimeofday libc_gettimeofday +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getuid() (uid int) { r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) uid = int(r0) @@ -2342,23 +2357,6 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func gettimeofday(tp *Timeval) (sec int32, usec int32, err error) { - r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) - sec = int32(r0) - usec = int32(r1) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_gettimeofday_trampoline() - -//go:linkname libc_gettimeofday libc_gettimeofday -//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := syscall_syscall(funcPC(libc_fstat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go index 8c3bb3a2..8d39a09f 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.1_11.go @@ -966,6 +966,16 @@ func Getsid(pid int) (sid int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Gettimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getuid() (uid int) { r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) uid = int(r0) @@ -1682,18 +1692,6 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { - r0, r1, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) - sec = int64(r0) - usec = int32(r1) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index a8709f72..b2886126 100644 --- a/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -1376,6 +1376,21 @@ func libc_getsid_trampoline() // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Gettimeofday(tp *Timeval) (err error) { + _, _, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +func libc_gettimeofday_trampoline() + +//go:linkname libc_gettimeofday libc_gettimeofday +//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Getuid() (uid int) { r0, _, _ := syscall_rawSyscall(funcPC(libc_getuid_trampoline), 0, 0, 0) uid = int(r0) @@ -2342,23 +2357,6 @@ func writelen(fd int, buf *byte, nbuf int) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func gettimeofday(tp *Timeval) (sec int64, usec int32, err error) { - r0, r1, e1 := syscall_rawSyscall(funcPC(libc_gettimeofday_trampoline), uintptr(unsafe.Pointer(tp)), 0, 0) - sec = int64(r0) - usec = int32(r1) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -func libc_gettimeofday_trampoline() - -//go:linkname libc_gettimeofday libc_gettimeofday -//go:cgo_import_dynamic libc_gettimeofday gettimeofday "/usr/lib/libSystem.B.dylib" - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := syscall_syscall(funcPC(libc_fstat_trampoline), uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go index 37dcc74c..102f1ab4 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go @@ -1,4 +1,4 @@ -// mksysctl_openbsd.pl +// go run mksysctl_openbsd.go // Code generated by the command above; DO NOT EDIT. // +build 386,openbsd @@ -30,6 +30,7 @@ var sysctlMib = []mibentry{ {"hw.model", []_C_int{6, 2}}, {"hw.ncpu", []_C_int{6, 3}}, {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, {"hw.pagesize", []_C_int{6, 7}}, {"hw.physmem", []_C_int{6, 19}}, {"hw.product", []_C_int{6, 15}}, diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go index fe6caa6e..4866fced 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go @@ -31,6 +31,7 @@ var sysctlMib = []mibentry{ {"hw.model", []_C_int{6, 2}}, {"hw.ncpu", []_C_int{6, 3}}, {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, {"hw.pagesize", []_C_int{6, 7}}, {"hw.perfpolicy", []_C_int{6, 23}}, {"hw.physmem", []_C_int{6, 19}}, diff --git a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go index 6eb8c0b0..d3801eb2 100644 --- a/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go +++ b/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go @@ -30,6 +30,7 @@ var sysctlMib = []mibentry{ {"hw.model", []_C_int{6, 2}}, {"hw.ncpu", []_C_int{6, 3}}, {"hw.ncpufound", []_C_int{6, 21}}, + {"hw.ncpuonline", []_C_int{6, 25}}, {"hw.pagesize", []_C_int{6, 7}}, {"hw.physmem", []_C_int{6, 19}}, {"hw.product", []_C_int{6, 15}}, diff --git a/vendor/golang.org/x/sys/windows/dll_windows.go b/vendor/golang.org/x/sys/windows/dll_windows.go index d7771134..82076fb7 100644 --- a/vendor/golang.org/x/sys/windows/dll_windows.go +++ b/vendor/golang.org/x/sys/windows/dll_windows.go @@ -104,6 +104,35 @@ func (d *DLL) MustFindProc(name string) *Proc { return p } +// FindProcByOrdinal searches DLL d for procedure by ordinal and returns *Proc +// if found. It returns an error if search fails. +func (d *DLL) FindProcByOrdinal(ordinal uintptr) (proc *Proc, err error) { + a, e := GetProcAddressByOrdinal(d.Handle, ordinal) + name := "#" + itoa(int(ordinal)) + if e != nil { + return nil, &DLLError{ + Err: e, + ObjName: name, + Msg: "Failed to find " + name + " procedure in " + d.Name + ": " + e.Error(), + } + } + p := &Proc{ + Dll: d, + Name: name, + addr: a, + } + return p, nil +} + +// MustFindProcByOrdinal is like FindProcByOrdinal but panics if search fails. +func (d *DLL) MustFindProcByOrdinal(ordinal uintptr) *Proc { + p, e := d.FindProcByOrdinal(ordinal) + if e != nil { + panic(e) + } + return p +} + // Release unloads DLL d from memory. func (d *DLL) Release() (err error) { return FreeLibrary(d.Handle) diff --git a/vendor/golang.org/x/sys/windows/env_windows.go b/vendor/golang.org/x/sys/windows/env_windows.go index f482a9fa..92ac05ff 100644 --- a/vendor/golang.org/x/sys/windows/env_windows.go +++ b/vendor/golang.org/x/sys/windows/env_windows.go @@ -8,7 +8,6 @@ package windows import ( "syscall" - "unicode/utf16" "unsafe" ) @@ -40,17 +39,11 @@ func (token Token) Environ(inheritExisting bool) (env []string, err error) { defer DestroyEnvironmentBlock(block) blockp := uintptr(unsafe.Pointer(block)) for { - entry := (*[(1 << 30) - 1]uint16)(unsafe.Pointer(blockp))[:] - for i, v := range entry { - if v == 0 { - entry = entry[:i] - break - } - } + entry := UTF16PtrToString((*uint16)(unsafe.Pointer(blockp))) if len(entry) == 0 { break } - env = append(env, string(utf16.Decode(entry))) + env = append(env, entry) blockp += 2 * (uintptr(len(entry)) + 1) } return env, nil diff --git a/vendor/golang.org/x/sys/windows/security_windows.go b/vendor/golang.org/x/sys/windows/security_windows.go index 4b6eff18..9e3c44a8 100644 --- a/vendor/golang.org/x/sys/windows/security_windows.go +++ b/vendor/golang.org/x/sys/windows/security_windows.go @@ -7,6 +7,8 @@ package windows import ( "syscall" "unsafe" + + "golang.org/x/sys/internal/unsafeheader" ) const ( @@ -1229,7 +1231,7 @@ func (sd *SECURITY_DESCRIPTOR) String() string { return "" } defer LocalFree(Handle(unsafe.Pointer(sddl))) - return UTF16ToString((*[(1 << 30) - 1]uint16)(unsafe.Pointer(sddl))[:]) + return UTF16PtrToString(sddl) } // ToAbsolute converts a self-relative security descriptor into an absolute one. @@ -1307,9 +1309,17 @@ func (absoluteSD *SECURITY_DESCRIPTOR) ToSelfRelative() (selfRelativeSD *SECURIT } func (selfRelativeSD *SECURITY_DESCRIPTOR) copySelfRelativeSecurityDescriptor() *SECURITY_DESCRIPTOR { - sdBytes := make([]byte, selfRelativeSD.Length()) - copy(sdBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(selfRelativeSD))[:len(sdBytes)]) - return (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&sdBytes[0])) + sdLen := (int)(selfRelativeSD.Length()) + + var src []byte + h := (*unsafeheader.Slice)(unsafe.Pointer(&src)) + h.Data = unsafe.Pointer(selfRelativeSD) + h.Len = sdLen + h.Cap = sdLen + + dst := make([]byte, sdLen) + copy(dst, src) + return (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&dst[0])) } // SecurityDescriptorFromString converts an SDDL string describing a security descriptor into a @@ -1391,6 +1401,6 @@ func ACLFromEntries(explicitEntries []EXPLICIT_ACCESS, mergedACL *ACL) (acl *ACL } defer LocalFree(Handle(unsafe.Pointer(winHeapACL))) aclBytes := make([]byte, winHeapACL.aclSize) - copy(aclBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(winHeapACL))[:len(aclBytes)]) + copy(aclBytes, (*[(1 << 31) - 1]byte)(unsafe.Pointer(winHeapACL))[:len(aclBytes):len(aclBytes)]) return (*ACL)(unsafe.Pointer(&aclBytes[0])), nil } diff --git a/vendor/golang.org/x/sys/windows/syscall_windows.go b/vendor/golang.org/x/sys/windows/syscall_windows.go index 053d664d..12c0544c 100644 --- a/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -13,6 +13,8 @@ import ( "time" "unicode/utf16" "unsafe" + + "golang.org/x/sys/internal/unsafeheader" ) type Handle uintptr @@ -117,6 +119,32 @@ func UTF16PtrFromString(s string) (*uint16, error) { return &a[0], nil } +// UTF16PtrToString takes a pointer to a UTF-16 sequence and returns the corresponding UTF-8 encoded string. +// If the pointer is nil, this returns the empty string. This assumes that the UTF-16 sequence is terminated +// at a zero word; if the zero word is not present, the program may crash. +func UTF16PtrToString(p *uint16) string { + if p == nil { + return "" + } + if *p == 0 { + return "" + } + + // Find NUL terminator. + n := 0 + for ptr := unsafe.Pointer(p); *(*uint16)(ptr) != 0; n++ { + ptr = unsafe.Pointer(uintptr(ptr) + unsafe.Sizeof(*p)) + } + + var s []uint16 + h := (*unsafeheader.Slice)(unsafe.Pointer(&s)) + h.Data = unsafe.Pointer(p) + h.Len = n + h.Cap = n + + return string(utf16.Decode(s)) +} + func Getpagesize() int { return 4096 } // NewCallback converts a Go function to a function pointer conforming to the stdcall calling convention. @@ -1181,7 +1209,12 @@ type IPv6Mreq struct { Interface uint32 } -func GetsockoptInt(fd Handle, level, opt int) (int, error) { return -1, syscall.EWINDOWS } +func GetsockoptInt(fd Handle, level, opt int) (int, error) { + v := int32(0) + l := int32(unsafe.Sizeof(v)) + err := Getsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), &l) + return int(v), err +} func SetsockoptLinger(fd Handle, level, opt int, l *Linger) (err error) { sys := sysLinger{Onoff: uint16(l.Onoff), Linger: uint16(l.Linger)} @@ -1378,7 +1411,7 @@ func (t Token) KnownFolderPath(folderID *KNOWNFOLDERID, flags uint32) (string, e return "", err } defer CoTaskMemFree(unsafe.Pointer(p)) - return UTF16ToString((*[(1 << 30) - 1]uint16)(unsafe.Pointer(p))[:]), nil + return UTF16PtrToString(p), nil } // RtlGetVersion returns the version of the underlying operating system, ignoring diff --git a/vendor/google.golang.org/protobuf/encoding/prototext/decode.go b/vendor/google.golang.org/protobuf/encoding/prototext/decode.go index cde2c20d..77dbe1b5 100644 --- a/vendor/google.golang.org/protobuf/encoding/prototext/decode.go +++ b/vendor/google.golang.org/protobuf/encoding/prototext/decode.go @@ -16,6 +16,7 @@ import ( "google.golang.org/protobuf/internal/flags" "google.golang.org/protobuf/internal/pragma" "google.golang.org/protobuf/internal/set" + "google.golang.org/protobuf/internal/strs" "google.golang.org/protobuf/proto" pref "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/reflect/protoregistry" @@ -339,10 +340,10 @@ func (d decoder) unmarshalScalar(fd pref.FieldDescriptor) (pref.Value, error) { case pref.StringKind: if s, ok := tok.String(); ok { - if utf8.ValidString(s) { - return pref.ValueOfString(s), nil + if strs.EnforceUTF8(fd) && !utf8.ValidString(s) { + return pref.Value{}, d.newError(tok.Pos(), "contains invalid UTF-8") } - return pref.Value{}, d.newError(tok.Pos(), "contains invalid UTF-8") + return pref.ValueOfString(s), nil } case pref.BytesKind: diff --git a/vendor/google.golang.org/protobuf/encoding/prototext/encode.go b/vendor/google.golang.org/protobuf/encoding/prototext/encode.go index e207c692..dece2297 100644 --- a/vendor/google.golang.org/protobuf/encoding/prototext/encode.go +++ b/vendor/google.golang.org/protobuf/encoding/prototext/encode.go @@ -18,6 +18,7 @@ import ( "google.golang.org/protobuf/internal/flags" "google.golang.org/protobuf/internal/mapsort" "google.golang.org/protobuf/internal/pragma" + "google.golang.org/protobuf/internal/strs" "google.golang.org/protobuf/proto" pref "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/reflect/protoregistry" @@ -55,6 +56,15 @@ type MarshalOptions struct { // Indent can only be composed of space or tab characters. Indent string + // EmitASCII specifies whether to format strings and bytes as ASCII only + // as opposed to using UTF-8 encoding when possible. + EmitASCII bool + + // allowInvalidUTF8 specifies whether to permit the encoding of strings + // with invalid UTF-8. This is unexported as it is intended to only + // be specified by the Format method. + allowInvalidUTF8 bool + // AllowPartial allows messages that have missing required fields to marshal // without returning an error. If AllowPartial is false (the default), // Marshal will return error if there are any missing required fields. @@ -81,6 +91,7 @@ func (o MarshalOptions) Format(m proto.Message) string { if m == nil || !m.ProtoReflect().IsValid() { return "" // invalid syntax, but okay since this is for debugging } + o.allowInvalidUTF8 = true o.AllowPartial = true o.EmitUnknown = true b, _ := o.Marshal(m) @@ -91,7 +102,6 @@ func (o MarshalOptions) Format(m proto.Message) string { // MarshalOptions object. Do not depend on the output being stable. It may // change over time across different versions of the program. func (o MarshalOptions) Marshal(m proto.Message) ([]byte, error) { - const outputASCII = false var delims = [2]byte{'{', '}'} if o.Multiline && o.Indent == "" { @@ -101,7 +111,7 @@ func (o MarshalOptions) Marshal(m proto.Message) ([]byte, error) { o.Resolver = protoregistry.GlobalTypes } - internalEnc, err := text.NewEncoder(o.Indent, delims, outputASCII) + internalEnc, err := text.NewEncoder(o.Indent, delims, o.EmitASCII) if err != nil { return nil, err } @@ -215,7 +225,7 @@ func (e encoder) marshalSingular(val pref.Value, fd pref.FieldDescriptor) error case pref.StringKind: s := val.String() - if !utf8.ValidString(s) { + if !e.opts.allowInvalidUTF8 && strs.EnforceUTF8(fd) && !utf8.ValidString(s) { return errors.InvalidUTF8(string(fd.FullName())) } e.WriteString(s) diff --git a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go index 13b7723c..2540befd 100644 --- a/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +++ b/vendor/google.golang.org/protobuf/internal/filedesc/desc.go @@ -607,7 +607,7 @@ func (dv *defaultValue) get(fd pref.FieldDescriptor) pref.Value { // TODO: Avoid panic if we're running with the race detector // and instead spawn a goroutine that periodically resets // this value back to the original to induce a race. - panic("detected mutation on the default bytes") + panic(fmt.Sprintf("detected mutation on the default bytes for %v", fd.FullName())) } return dv.val } diff --git a/vendor/google.golang.org/protobuf/internal/impl/codec_message.go b/vendor/google.golang.org/protobuf/internal/impl/codec_message.go index 29ed59b4..0e176d56 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/codec_message.go +++ b/vendor/google.golang.org/protobuf/internal/impl/codec_message.go @@ -31,11 +31,6 @@ type coderMessageInfo struct { needsInitCheck bool isMessageSet bool numRequiredFields uint8 - - // Include space for a number of coderFieldInfos to improve cache locality. - // The number of entries is chosen through a combination of guesswork and - // empirical testing. - coderFieldBuf [32]coderFieldInfo } type coderFieldInfo struct { @@ -58,7 +53,7 @@ func (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) { mi.coderFields = make(map[protowire.Number]*coderFieldInfo) fields := mi.Desc.Fields() - preallocFields := mi.coderFieldBuf[:] + preallocFields := make([]coderFieldInfo, fields.Len()) for i := 0; i < fields.Len(); i++ { fd := fields.Get(i) @@ -87,13 +82,7 @@ func (mi *MessageInfo) makeCoderMethods(t reflect.Type, si structInfo) { fieldOffset = offsetOf(fs, mi.Exporter) childMessage, funcs = fieldCoder(fd, ft) } - var cf *coderFieldInfo - if len(preallocFields) > 0 { - cf = &preallocFields[0] - preallocFields = preallocFields[1:] - } else { - cf = new(coderFieldInfo) - } + cf := &preallocFields[i] *cf = coderFieldInfo{ num: fd.Number(), offset: fieldOffset, diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go b/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go index 3eb2b139..0f4b8db7 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go +++ b/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go @@ -338,24 +338,27 @@ func (mi *MessageInfo) checkField(fd pref.FieldDescriptor) (*fieldInfo, pref.Ext } if fi != nil { if fi.fieldDesc != fd { - panic("mismatching field descriptor") + if got, want := fd.FullName(), fi.fieldDesc.FullName(); got != want { + panic(fmt.Sprintf("mismatching field: got %v, want %v", got, want)) + } + panic(fmt.Sprintf("mismatching field: %v", fd.FullName())) } return fi, nil } if fd.IsExtension() { - if fd.ContainingMessage().FullName() != mi.Desc.FullName() { + if got, want := fd.ContainingMessage().FullName(), mi.Desc.FullName(); got != want { // TODO: Should this be exact containing message descriptor match? - panic("mismatching containing message") + panic(fmt.Sprintf("extension %v has mismatching containing message: got %v, want %v", fd.FullName(), got, want)) } if !mi.Desc.ExtensionRanges().Has(fd.Number()) { - panic("invalid extension field") + panic(fmt.Sprintf("extension %v extends %v outside the extension range", fd.FullName(), mi.Desc.FullName())) } xtd, ok := fd.(pref.ExtensionTypeDescriptor) if !ok { - panic("extension descriptor does not implement ExtensionTypeDescriptor") + panic(fmt.Sprintf("extension %v does not implement protoreflect.ExtensionTypeDescriptor", fd.FullName())) } return nil, xtd.Type() } - panic("invalid field descriptor") + panic(fmt.Sprintf("field %v is invalid", fd.FullName())) } diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go index ea6f7554..23124a86 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go +++ b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go @@ -31,13 +31,13 @@ type fieldInfo struct { func fieldInfoForOneof(fd pref.FieldDescriptor, fs reflect.StructField, x exporter, ot reflect.Type) fieldInfo { ft := fs.Type if ft.Kind() != reflect.Interface { - panic(fmt.Sprintf("invalid type: got %v, want interface kind", ft)) + panic(fmt.Sprintf("field %v has invalid type: got %v, want interface kind", fd.FullName(), ft)) } if ot.Kind() != reflect.Struct { - panic(fmt.Sprintf("invalid type: got %v, want struct kind", ot)) + panic(fmt.Sprintf("field %v has invalid type: got %v, want struct kind", fd.FullName(), ot)) } if !reflect.PtrTo(ot).Implements(ft) { - panic(fmt.Sprintf("invalid type: %v does not implement %v", ot, ft)) + panic(fmt.Sprintf("field %v has invalid type: %v does not implement %v", fd.FullName(), ot, ft)) } conv := NewConverter(ot.Field(0).Type, fd) isMessage := fd.Message() != nil @@ -90,7 +90,7 @@ func fieldInfoForOneof(fd pref.FieldDescriptor, fs reflect.StructField, x export }, mutable: func(p pointer) pref.Value { if !isMessage { - panic("invalid Mutable on field with non-composite type") + panic(fmt.Sprintf("field %v with invalid Mutable call on field with non-composite type", fd.FullName())) } rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() if rv.IsNil() || rv.Elem().Type().Elem() != ot || rv.Elem().IsNil() { @@ -114,7 +114,7 @@ func fieldInfoForOneof(fd pref.FieldDescriptor, fs reflect.StructField, x export func fieldInfoForMap(fd pref.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { ft := fs.Type if ft.Kind() != reflect.Map { - panic(fmt.Sprintf("invalid type: got %v, want map kind", ft)) + panic(fmt.Sprintf("field %v has invalid type: got %v, want map kind", fd.FullName(), ft)) } conv := NewConverter(ft, fd) @@ -147,7 +147,7 @@ func fieldInfoForMap(fd pref.FieldDescriptor, fs reflect.StructField, x exporter rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() pv := conv.GoValueOf(v) if pv.IsNil() { - panic(fmt.Sprintf("invalid value: setting map field to read-only value")) + panic(fmt.Sprintf("map field %v cannot be set with read-only value", fd.FullName())) } rv.Set(pv) }, @@ -167,7 +167,7 @@ func fieldInfoForMap(fd pref.FieldDescriptor, fs reflect.StructField, x exporter func fieldInfoForList(fd pref.FieldDescriptor, fs reflect.StructField, x exporter) fieldInfo { ft := fs.Type if ft.Kind() != reflect.Slice { - panic(fmt.Sprintf("invalid type: got %v, want slice kind", ft)) + panic(fmt.Sprintf("field %v has invalid type: got %v, want slice kind", fd.FullName(), ft)) } conv := NewConverter(reflect.PtrTo(ft), fd) @@ -200,7 +200,7 @@ func fieldInfoForList(fd pref.FieldDescriptor, fs reflect.StructField, x exporte rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() pv := conv.GoValueOf(v) if pv.IsNil() { - panic(fmt.Sprintf("invalid value: setting repeated field to read-only value")) + panic(fmt.Sprintf("list field %v cannot be set with read-only value", fd.FullName())) } rv.Set(pv.Elem()) }, @@ -225,7 +225,7 @@ func fieldInfoForScalar(fd pref.FieldDescriptor, fs reflect.StructField, x expor isBytes := ft.Kind() == reflect.Slice && ft.Elem().Kind() == reflect.Uint8 if nullable { if ft.Kind() != reflect.Ptr && ft.Kind() != reflect.Slice { - panic(fmt.Sprintf("invalid type: got %v, want pointer", ft)) + panic(fmt.Sprintf("field %v has invalid type: got %v, want pointer", fd.FullName(), ft)) } if ft.Kind() == reflect.Ptr { ft = ft.Elem() @@ -257,7 +257,7 @@ func fieldInfoForScalar(fd pref.FieldDescriptor, fs reflect.StructField, x expor case reflect.String, reflect.Slice: return rv.Len() > 0 default: - panic(fmt.Sprintf("invalid type: %v", rv.Type())) // should never happen + panic(fmt.Sprintf("field %v has invalid type: %v", fd.FullName(), rv.Type())) // should never happen } }, clear: func(p pointer) { @@ -314,7 +314,7 @@ func fieldInfoForWeakMessage(fd pref.FieldDescriptor, weakOffset offset) fieldIn messageName := fd.Message().FullName() messageType, _ = preg.GlobalTypes.FindMessageByName(messageName) if messageType == nil { - panic(fmt.Sprintf("weak message %v is not linked in", messageName)) + panic(fmt.Sprintf("weak message %v for field %v is not linked in", messageName, fd.FullName())) } }) } @@ -347,7 +347,10 @@ func fieldInfoForWeakMessage(fd pref.FieldDescriptor, weakOffset offset) fieldIn lazyInit() m := v.Message() if m.Descriptor() != messageType.Descriptor() { - panic("mismatching message descriptor") + if got, want := m.Descriptor().FullName(), messageType.Descriptor().FullName(); got != want { + panic(fmt.Sprintf("field %v has mismatching message descriptor: got %v, want %v", fd.FullName(), got, want)) + } + panic(fmt.Sprintf("field %v has mismatching message descriptor: %v", fd.FullName(), m.Descriptor().FullName())) } p.Apply(weakOffset).WeakFields().set(num, m.Interface()) }, @@ -402,7 +405,7 @@ func fieldInfoForMessage(fd pref.FieldDescriptor, fs reflect.StructField, x expo rv := p.Apply(fieldOffset).AsValueOf(fs.Type).Elem() rv.Set(conv.GoValueOf(v)) if rv.IsNil() { - panic("invalid nil pointer") + panic(fmt.Sprintf("field %v has invalid nil pointer", fd.FullName())) } }, mutable: func(p pointer) pref.Value { diff --git a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go index 7d65f5ca..741d6e5b 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go +++ b/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go @@ -114,7 +114,7 @@ func (m *messageState) WhichOneof(od protoreflect.OneofDescriptor) protoreflect. if oi := m.messageInfo().oneofs[od.Name()]; oi != nil && oi.oneofDesc == od { return od.Fields().ByNumber(oi.which(m.pointer())) } - panic("invalid oneof descriptor") + panic("invalid oneof descriptor " + string(od.FullName()) + " for message " + string(m.Descriptor().FullName())) } func (m *messageState) GetUnknown() protoreflect.RawFields { m.messageInfo().init() @@ -234,7 +234,7 @@ func (m *messageReflectWrapper) WhichOneof(od protoreflect.OneofDescriptor) prot if oi := m.messageInfo().oneofs[od.Name()]; oi != nil && oi.oneofDesc == od { return od.Fields().ByNumber(oi.which(m.pointer())) } - panic("invalid oneof descriptor") + panic("invalid oneof descriptor " + string(od.FullName()) + " for message " + string(m.Descriptor().FullName())) } func (m *messageReflectWrapper) GetUnknown() protoreflect.RawFields { m.messageInfo().init() diff --git a/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go b/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go index 27416433..088aa85d 100644 --- a/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +++ b/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go @@ -148,7 +148,11 @@ func (ms *messageState) pointer() pointer { return pointer{p: unsafe.Pointer(ms)} } func (ms *messageState) messageInfo() *MessageInfo { - return ms.LoadMessageInfo() + mi := ms.LoadMessageInfo() + if mi == nil { + panic("invalid nil message info; this suggests memory corruption due to a race or shallow copy on the message struct") + } + return mi } func (ms *messageState) LoadMessageInfo() *MessageInfo { return (*MessageInfo)(atomic.LoadPointer((*unsafe.Pointer)(unsafe.Pointer(&ms.atomicMessageInfo)))) diff --git a/vendor/google.golang.org/protobuf/internal/version/version.go b/vendor/google.golang.org/protobuf/internal/version/version.go index 774719e4..4088e59c 100644 --- a/vendor/google.golang.org/protobuf/internal/version/version.go +++ b/vendor/google.golang.org/protobuf/internal/version/version.go @@ -52,7 +52,7 @@ import ( // 10. Send out the CL for review and submit it. const ( Major = 1 - Minor = 22 + Minor = 23 Patch = 0 PreRelease = "" ) diff --git a/vendor/google.golang.org/protobuf/proto/merge.go b/vendor/google.golang.org/protobuf/proto/merge.go index 27ab1a68..d761ab33 100644 --- a/vendor/google.golang.org/protobuf/proto/merge.go +++ b/vendor/google.golang.org/protobuf/proto/merge.go @@ -5,6 +5,8 @@ package proto import ( + "fmt" + "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/runtime/protoiface" ) @@ -26,6 +28,9 @@ func Merge(dst, src Message) { dstMsg, srcMsg := dst.ProtoReflect(), src.ProtoReflect() if dstMsg.Descriptor() != srcMsg.Descriptor() { + if got, want := dstMsg.Descriptor().FullName(), srcMsg.Descriptor().FullName(); got != want { + panic(fmt.Sprintf("descriptor mismatch: %v != %v", got, want)) + } panic("descriptor mismatch") } mergeOptions{}.mergeMessage(dstMsg, srcMsg) @@ -72,7 +77,7 @@ func (o mergeOptions) mergeMessage(dst, src protoreflect.Message) { } if !dst.IsValid() { - panic("cannot merge into invalid destination message") + panic(fmt.Sprintf("cannot merge into invalid %v message", dst.Descriptor().FullName())) } src.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool { diff --git a/vendor/google.golang.org/protobuf/proto/reset.go b/vendor/google.golang.org/protobuf/proto/reset.go index 22048bc1..3d7f8943 100644 --- a/vendor/google.golang.org/protobuf/proto/reset.go +++ b/vendor/google.golang.org/protobuf/proto/reset.go @@ -4,7 +4,11 @@ package proto -import "google.golang.org/protobuf/reflect/protoreflect" +import ( + "fmt" + + "google.golang.org/protobuf/reflect/protoreflect" +) // Reset clears every field in the message. // The resulting message shares no observable memory with its previous state @@ -19,7 +23,7 @@ func Reset(m Message) { func resetMessage(m protoreflect.Message) { if !m.IsValid() { - panic("cannot reset invalid message") + panic(fmt.Sprintf("cannot reset invalid %v message", m.Descriptor().FullName())) } // Clear all known fields. diff --git a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go index d695a4d6..f334f71b 100644 --- a/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go +++ b/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go @@ -7,7 +7,6 @@ package protoreflect import ( "fmt" "math" - "reflect" ) // Value is a union where only one Go type may be set at a time. @@ -87,7 +86,7 @@ func ValueOf(v interface{}) Value { case Message, List, Map: return valueOfIface(v) default: - panic(fmt.Sprintf("invalid type: %v", reflect.TypeOf(v))) + panic(fmt.Sprintf("invalid type: %T", v)) } } @@ -197,13 +196,55 @@ func (v Value) Interface() interface{} { } } +func (v Value) typeName() string { + switch v.typ { + case nilType: + return "nil" + case boolType: + return "bool" + case int32Type: + return "int32" + case int64Type: + return "int64" + case uint32Type: + return "uint32" + case uint64Type: + return "uint64" + case float32Type: + return "float32" + case float64Type: + return "float64" + case stringType: + return "string" + case bytesType: + return "bytes" + case enumType: + return "enum" + default: + switch v := v.getIface().(type) { + case Message: + return "message" + case List: + return "list" + case Map: + return "map" + default: + return fmt.Sprintf("", v) + } + } +} + +func (v Value) panicMessage(what string) string { + return fmt.Sprintf("type mismatch: cannot convert %v to %s", v.typeName(), what) +} + // Bool returns v as a bool and panics if the type is not a bool. func (v Value) Bool() bool { switch v.typ { case boolType: return v.num > 0 default: - panic("proto: value type mismatch") + panic(v.panicMessage("bool")) } } @@ -213,7 +254,7 @@ func (v Value) Int() int64 { case int32Type, int64Type: return int64(v.num) default: - panic("proto: value type mismatch") + panic(v.panicMessage("int")) } } @@ -223,7 +264,7 @@ func (v Value) Uint() uint64 { case uint32Type, uint64Type: return uint64(v.num) default: - panic("proto: value type mismatch") + panic(v.panicMessage("uint")) } } @@ -233,7 +274,7 @@ func (v Value) Float() float64 { case float32Type, float64Type: return math.Float64frombits(uint64(v.num)) default: - panic("proto: value type mismatch") + panic(v.panicMessage("float")) } } @@ -254,7 +295,7 @@ func (v Value) Bytes() []byte { case bytesType: return v.getBytes() default: - panic("proto: value type mismatch") + panic(v.panicMessage("bytes")) } } @@ -264,37 +305,37 @@ func (v Value) Enum() EnumNumber { case enumType: return EnumNumber(v.num) default: - panic("proto: value type mismatch") + panic(v.panicMessage("enum")) } } // Message returns v as a Message and panics if the type is not a Message. func (v Value) Message() Message { - switch v := v.getIface().(type) { + switch vi := v.getIface().(type) { case Message: - return v + return vi default: - panic("proto: value type mismatch") + panic(v.panicMessage("message")) } } // List returns v as a List and panics if the type is not a List. func (v Value) List() List { - switch v := v.getIface().(type) { + switch vi := v.getIface().(type) { case List: - return v + return vi default: - panic("proto: value type mismatch") + panic(v.panicMessage("list")) } } // Map returns v as a Map and panics if the type is not a Map. func (v Value) Map() Map { - switch v := v.getIface().(type) { + switch vi := v.getIface().(type) { case Map: - return v + return vi default: - panic("proto: value type mismatch") + panic(v.panicMessage("map")) } } @@ -303,8 +344,9 @@ func (v Value) MapKey() MapKey { switch v.typ { case boolType, int32Type, int64Type, uint32Type, uint64Type, stringType: return MapKey(v) + default: + panic(v.panicMessage("map key")) } - panic("proto: invalid map key type") } // MapKey is used to index maps, where the Go type of the MapKey must match diff --git a/vendor/gopkg.in/ini.v1/.travis.yml b/vendor/gopkg.in/ini.v1/.travis.yml deleted file mode 100644 index 4db2e661..00000000 --- a/vendor/gopkg.in/ini.v1/.travis.yml +++ /dev/null @@ -1,21 +0,0 @@ -language: go -os: linux -dist: xenial -go: - - 1.6.x - - 1.7.x - - 1.8.x - - 1.9.x - - 1.10.x - - 1.11.x - - 1.12.x - - 1.13.x - - 1.14.x -install: skip -script: - - go get golang.org/x/tools/cmd/cover - - go get github.com/smartystreets/goconvey - - mkdir -p $HOME/gopath/src/gopkg.in - - ln -s $HOME/gopath/src/github.com/go-ini/ini $HOME/gopath/src/gopkg.in/ini.v1 - - cd $HOME/gopath/src/gopkg.in/ini.v1 - - go test -v -cover -race diff --git a/vendor/gopkg.in/ini.v1/README.md b/vendor/gopkg.in/ini.v1/README.md index 783eb06a..5d65658b 100644 --- a/vendor/gopkg.in/ini.v1/README.md +++ b/vendor/gopkg.in/ini.v1/README.md @@ -1,6 +1,9 @@ # INI -[![Build Status](https://img.shields.io/travis/go-ini/ini/master.svg?style=for-the-badge&logo=travis)](https://travis-ci.org/go-ini/ini) [![Sourcegraph](https://img.shields.io/badge/view%20on-Sourcegraph-brightgreen.svg?style=for-the-badge&logo=sourcegraph)](https://sourcegraph.com/github.com/go-ini/ini) +[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/go-ini/ini/Go?logo=github&style=for-the-badge)](https://github.com/go-ini/ini/actions?query=workflow%3AGo) +[![codecov](https://img.shields.io/codecov/c/github/go-ini/ini/master?logo=codecov&style=for-the-badge)](https://codecov.io/gh/go-ini/ini) +[![GoDoc](https://img.shields.io/badge/GoDoc-Reference-blue?style=for-the-badge&logo=go)](https://pkg.go.dev/github.com/go-ini/ini?tab=doc) +[![Sourcegraph](https://img.shields.io/badge/view%20on-Sourcegraph-brightgreen.svg?style=for-the-badge&logo=sourcegraph)](https://sourcegraph.com/github.com/go-ini/ini) ![](https://avatars0.githubusercontent.com/u/10216035?v=3&s=200) @@ -33,6 +36,7 @@ Please add `-u` flag to update in the future. - [Getting Started](https://ini.unknwon.io/docs/intro/getting_started) - [API Documentation](https://gowalker.org/gopkg.in/ini.v1) +- 中国大陆镜像:https://ini.unknwon.cn ## License diff --git a/vendor/gopkg.in/ini.v1/codecov.yml b/vendor/gopkg.in/ini.v1/codecov.yml new file mode 100644 index 00000000..fc947f23 --- /dev/null +++ b/vendor/gopkg.in/ini.v1/codecov.yml @@ -0,0 +1,9 @@ +coverage: + range: "60...95" + status: + project: + default: + threshold: 1% + +comment: + layout: 'diff, files' diff --git a/vendor/gopkg.in/ini.v1/data_source.go b/vendor/gopkg.in/ini.v1/data_source.go index bbedf361..c3a541f1 100644 --- a/vendor/gopkg.in/ini.v1/data_source.go +++ b/vendor/gopkg.in/ini.v1/data_source.go @@ -66,10 +66,10 @@ func parseDataSource(source interface{}) (dataSource, error) { return sourceFile{s}, nil case []byte: return &sourceData{s}, nil - case io.Reader: - return &sourceReadCloser{ioutil.NopCloser(s)}, nil case io.ReadCloser: return &sourceReadCloser{s}, nil + case io.Reader: + return &sourceReadCloser{ioutil.NopCloser(s)}, nil default: return nil, fmt.Errorf("error parsing data source: unknown type %q", s) } diff --git a/vendor/gopkg.in/ini.v1/ini.go b/vendor/gopkg.in/ini.v1/ini.go index 9f28cb31..2961543f 100644 --- a/vendor/gopkg.in/ini.v1/ini.go +++ b/vendor/gopkg.in/ini.v1/ini.go @@ -18,8 +18,10 @@ package ini import ( + "os" "regexp" "runtime" + "strings" ) const ( @@ -55,8 +57,10 @@ var ( DefaultFormatRight = "" ) +var inTest = len(os.Args) > 0 && strings.HasSuffix(strings.TrimSuffix(os.Args[0], ".exe"), ".test") + func init() { - if runtime.GOOS == "windows" { + if runtime.GOOS == "windows" && !inTest { LineBreak = "\r\n" } } diff --git a/vendor/gopkg.in/ini.v1/key.go b/vendor/gopkg.in/ini.v1/key.go index 3c197410..8baafd9e 100644 --- a/vendor/gopkg.in/ini.v1/key.go +++ b/vendor/gopkg.in/ini.v1/key.go @@ -686,99 +686,127 @@ func (k *Key) StrictTimes(delim string) ([]time.Time, error) { // parseBools transforms strings to bools. func (k *Key) parseBools(strs []string, addInvalid, returnOnInvalid bool) ([]bool, error) { vals := make([]bool, 0, len(strs)) - for _, str := range strs { + parser := func(str string) (interface{}, error) { val, err := parseBool(str) - if err != nil && returnOnInvalid { - return nil, err - } - if err == nil || addInvalid { - vals = append(vals, val) + return val, err + } + rawVals, err := k.doParse(strs, addInvalid, returnOnInvalid, parser) + if err == nil { + for _, val := range rawVals { + vals = append(vals, val.(bool)) } } - return vals, nil + return vals, err } // parseFloat64s transforms strings to float64s. func (k *Key) parseFloat64s(strs []string, addInvalid, returnOnInvalid bool) ([]float64, error) { vals := make([]float64, 0, len(strs)) - for _, str := range strs { + parser := func(str string) (interface{}, error) { val, err := strconv.ParseFloat(str, 64) - if err != nil && returnOnInvalid { - return nil, err - } - if err == nil || addInvalid { - vals = append(vals, val) + return val, err + } + rawVals, err := k.doParse(strs, addInvalid, returnOnInvalid, parser) + if err == nil { + for _, val := range rawVals { + vals = append(vals, val.(float64)) } } - return vals, nil + return vals, err } // parseInts transforms strings to ints. func (k *Key) parseInts(strs []string, addInvalid, returnOnInvalid bool) ([]int, error) { vals := make([]int, 0, len(strs)) - for _, str := range strs { - valInt64, err := strconv.ParseInt(str, 0, 64) - val := int(valInt64) - if err != nil && returnOnInvalid { - return nil, err - } - if err == nil || addInvalid { - vals = append(vals, val) + parser := func(str string) (interface{}, error) { + val, err := strconv.ParseInt(str, 0, 64) + return val, err + } + rawVals, err := k.doParse(strs, addInvalid, returnOnInvalid, parser) + if err == nil { + for _, val := range rawVals { + vals = append(vals, int(val.(int64))) } } - return vals, nil + return vals, err } // parseInt64s transforms strings to int64s. func (k *Key) parseInt64s(strs []string, addInvalid, returnOnInvalid bool) ([]int64, error) { vals := make([]int64, 0, len(strs)) - for _, str := range strs { + parser := func(str string) (interface{}, error) { val, err := strconv.ParseInt(str, 0, 64) - if err != nil && returnOnInvalid { - return nil, err - } - if err == nil || addInvalid { - vals = append(vals, val) + return val, err + } + + rawVals, err := k.doParse(strs, addInvalid, returnOnInvalid, parser) + if err == nil { + for _, val := range rawVals { + vals = append(vals, val.(int64)) } } - return vals, nil + return vals, err } // parseUints transforms strings to uints. func (k *Key) parseUints(strs []string, addInvalid, returnOnInvalid bool) ([]uint, error) { vals := make([]uint, 0, len(strs)) - for _, str := range strs { - val, err := strconv.ParseUint(str, 0, 0) - if err != nil && returnOnInvalid { - return nil, err - } - if err == nil || addInvalid { - vals = append(vals, uint(val)) + parser := func(str string) (interface{}, error) { + val, err := strconv.ParseUint(str, 0, 64) + return val, err + } + + rawVals, err := k.doParse(strs, addInvalid, returnOnInvalid, parser) + if err == nil { + for _, val := range rawVals { + vals = append(vals, uint(val.(uint64))) } } - return vals, nil + return vals, err } // parseUint64s transforms strings to uint64s. func (k *Key) parseUint64s(strs []string, addInvalid, returnOnInvalid bool) ([]uint64, error) { vals := make([]uint64, 0, len(strs)) - for _, str := range strs { + parser := func(str string) (interface{}, error) { val, err := strconv.ParseUint(str, 0, 64) - if err != nil && returnOnInvalid { - return nil, err - } - if err == nil || addInvalid { - vals = append(vals, val) + return val, err + } + rawVals, err := k.doParse(strs, addInvalid, returnOnInvalid, parser) + if err == nil { + for _, val := range rawVals { + vals = append(vals, val.(uint64)) } } - return vals, nil + return vals, err } + +type Parser func(str string) (interface{}, error) + + // parseTimesFormat transforms strings to times in given format. func (k *Key) parseTimesFormat(format string, strs []string, addInvalid, returnOnInvalid bool) ([]time.Time, error) { vals := make([]time.Time, 0, len(strs)) - for _, str := range strs { + parser := func(str string) (interface{}, error) { val, err := time.Parse(format, str) + return val, err + } + rawVals, err := k.doParse(strs, addInvalid, returnOnInvalid, parser) + if err == nil { + for _, val := range rawVals { + vals = append(vals, val.(time.Time)) + } + } + return vals, err +} + + +// doParse transforms strings to different types +func (k *Key) doParse(strs []string, addInvalid, returnOnInvalid bool, parser Parser) ([]interface{}, error) { + vals := make([]interface{}, 0, len(strs)) + for _, str := range strs { + val, err := parser(str) if err != nil && returnOnInvalid { return nil, err } diff --git a/vendor/gopkg.in/ini.v1/parser.go b/vendor/gopkg.in/ini.v1/parser.go index f023db59..ea6c08b0 100644 --- a/vendor/gopkg.in/ini.v1/parser.go +++ b/vendor/gopkg.in/ini.v1/parser.go @@ -84,7 +84,10 @@ func (p *parser) BOM() error { case mask[0] == 254 && mask[1] == 255: fallthrough case mask[0] == 255 && mask[1] == 254: - p.buf.Read(mask) + _, err = p.buf.Read(mask) + if err != nil { + return err + } case mask[0] == 239 && mask[1] == 187: mask, err := p.buf.Peek(3) if err != nil && err != io.EOF { @@ -93,7 +96,10 @@ func (p *parser) BOM() error { return nil } if mask[2] == 191 { - p.buf.Read(mask) + _, err = p.buf.Read(mask) + if err != nil { + return err + } } } return nil @@ -135,7 +141,7 @@ func readKeyName(delimiters string, in []byte) (string, int, error) { } // Get out key name - endIdx := -1 + var endIdx int if len(keyQuote) > 0 { startIdx := len(keyQuote) // FIXME: fail case -> """"""name"""=value @@ -413,7 +419,10 @@ func (f *File) parse(reader io.Reader) (err error) { if f.options.AllowNestedValues && isLastValueEmpty && len(line) > 0 { if line[0] == ' ' || line[0] == '\t' { - lastRegularKey.addNestedValue(string(bytes.TrimSpace(line))) + err = lastRegularKey.addNestedValue(string(bytes.TrimSpace(line))) + if err != nil { + return err + } continue } } @@ -460,7 +469,7 @@ func (f *File) parse(reader io.Reader) (err error) { inUnparseableSection = false for i := range f.options.UnparseableSections { if f.options.UnparseableSections[i] == name || - (f.options.Insensitive && strings.ToLower(f.options.UnparseableSections[i]) == strings.ToLower(name)) { + (f.options.Insensitive && strings.EqualFold(f.options.UnparseableSections[i], name)) { inUnparseableSection = true continue } diff --git a/vendor/gopkg.in/ini.v1/struct.go b/vendor/gopkg.in/ini.v1/struct.go index 6b958496..1df54719 100644 --- a/vendor/gopkg.in/ini.v1/struct.go +++ b/vendor/gopkg.in/ini.v1/struct.go @@ -564,6 +564,10 @@ func (s *Section) reflectFrom(val reflect.Value) error { typ := val.Type() for i := 0; i < typ.NumField(); i++ { + if !val.Field(i).CanInterface() { + continue + } + field := val.Field(i) tpField := typ.Field(i) @@ -695,7 +699,6 @@ func (s *Section) ReflectFrom(v interface{}) error { } if typ.Kind() == reflect.Ptr { - typ = typ.Elem() val = val.Elem() } else { return errors.New("not a pointer to a struct") diff --git a/vendor/gopkg.in/yaml.v2/apic.go b/vendor/gopkg.in/yaml.v2/apic.go index 1f7e87e6..d2c2308f 100644 --- a/vendor/gopkg.in/yaml.v2/apic.go +++ b/vendor/gopkg.in/yaml.v2/apic.go @@ -86,6 +86,7 @@ func yaml_emitter_initialize(emitter *yaml_emitter_t) { raw_buffer: make([]byte, 0, output_raw_buffer_size), states: make([]yaml_emitter_state_t, 0, initial_stack_size), events: make([]yaml_event_t, 0, initial_queue_size), + best_width: -1, } } diff --git a/vendor/modules.txt b/vendor/modules.txt index 8f9bd1a1..81e7f1e2 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -1,7 +1,7 @@ # github.com/RoaringBitmap/roaring v0.4.23 ## explicit github.com/RoaringBitmap/roaring -# github.com/blevesearch/bleve v1.0.7 +# github.com/blevesearch/bleve v1.0.8 ## explicit github.com/blevesearch/bleve github.com/blevesearch/bleve/analysis @@ -49,11 +49,13 @@ github.com/blevesearch/segment # github.com/blevesearch/snowballstem v0.9.0 github.com/blevesearch/snowballstem github.com/blevesearch/snowballstem/english -# github.com/blevesearch/zap/v11 v11.0.7 +# github.com/blevesearch/zap/v11 v11.0.8 github.com/blevesearch/zap/v11 -# github.com/blevesearch/zap/v12 v12.0.7 +# github.com/blevesearch/zap/v12 v12.0.8 github.com/blevesearch/zap/v12 -# github.com/caddyserver/certmagic v0.10.12 +# github.com/blevesearch/zap/v13 v13.0.0 +github.com/blevesearch/zap/v13 +# github.com/caddyserver/certmagic v0.10.13 ## explicit github.com/caddyserver/certmagic # github.com/cenkalti/backoff/v4 v4.0.2 @@ -89,8 +91,7 @@ github.com/fsnotify/fsnotify # github.com/glycerine/go-unsnap-stream v0.0.0-20190901134440-81cf024a9e0a ## explicit github.com/glycerine/go-unsnap-stream -# github.com/go-acme/lego/v3 v3.6.0 -## explicit +# github.com/go-acme/lego/v3 v3.7.0 github.com/go-acme/lego/v3/acme github.com/go-acme/lego/v3/acme/api github.com/go-acme/lego/v3/acme/api/internal/nonces @@ -107,7 +108,7 @@ github.com/go-acme/lego/v3/lego github.com/go-acme/lego/v3/log github.com/go-acme/lego/v3/platform/wait github.com/go-acme/lego/v3/registration -# github.com/golang/protobuf v1.4.1 +# github.com/golang/protobuf v1.4.2 ## explicit github.com/golang/protobuf/proto # github.com/golang/snappy v0.0.1 @@ -155,7 +156,7 @@ github.com/miekg/dns # github.com/mitchellh/go-homedir v1.1.0 ## explicit github.com/mitchellh/go-homedir -# github.com/mitchellh/mapstructure v1.3.0 +# github.com/mitchellh/mapstructure v1.3.1 ## explicit github.com/mitchellh/mapstructure # github.com/mschoch/smat v0.2.0 @@ -164,7 +165,7 @@ github.com/mschoch/smat ## explicit # github.com/onsi/gomega v1.5.0 ## explicit -# github.com/pelletier/go-toml v1.7.0 +# github.com/pelletier/go-toml v1.8.0 ## explicit github.com/pelletier/go-toml # github.com/philhofer/fwd v1.0.0 @@ -189,7 +190,7 @@ github.com/spf13/jwalterweatherman # github.com/spf13/pflag v1.0.5 ## explicit github.com/spf13/pflag -# github.com/spf13/viper v1.6.3 +# github.com/spf13/viper v1.7.0 ## explicit github.com/spf13/viper # github.com/steveyen/gtreap v0.1.0 @@ -218,13 +219,13 @@ github.com/willf/bitset # go.etcd.io/bbolt v1.3.4 ## explicit go.etcd.io/bbolt -# golang.org/x/crypto v0.0.0-20200429183012-4b2356b1ed79 +# golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37 ## explicit golang.org/x/crypto/ed25519 golang.org/x/crypto/ed25519/internal/edwards25519 golang.org/x/crypto/ocsp golang.org/x/crypto/pbkdf2 -# golang.org/x/net v0.0.0-20200506145744-7e3656a0809f +# golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2 ## explicit golang.org/x/net/bpf golang.org/x/net/html @@ -234,7 +235,7 @@ golang.org/x/net/internal/iana golang.org/x/net/internal/socket golang.org/x/net/ipv4 golang.org/x/net/ipv6 -# golang.org/x/sys v0.0.0-20200501145240-bc7a7d42d5c3 +# golang.org/x/sys v0.0.0-20200523222454-059865788121 ## explicit golang.org/x/sys/internal/unsafeheader golang.org/x/sys/unix @@ -244,7 +245,7 @@ golang.org/x/text/secure/bidirule golang.org/x/text/transform golang.org/x/text/unicode/bidi golang.org/x/text/unicode/norm -# google.golang.org/protobuf v1.22.0 +# google.golang.org/protobuf v1.23.0 google.golang.org/protobuf/encoding/prototext google.golang.org/protobuf/encoding/protowire google.golang.org/protobuf/internal/descfmt @@ -272,7 +273,7 @@ google.golang.org/protobuf/reflect/protoreflect google.golang.org/protobuf/reflect/protoregistry google.golang.org/protobuf/runtime/protoiface google.golang.org/protobuf/runtime/protoimpl -# gopkg.in/ini.v1 v1.55.0 +# gopkg.in/ini.v1 v1.56.0 ## explicit gopkg.in/ini.v1 # gopkg.in/square/go-jose.v2 v2.5.1 @@ -280,5 +281,5 @@ gopkg.in/ini.v1 gopkg.in/square/go-jose.v2 gopkg.in/square/go-jose.v2/cipher gopkg.in/square/go-jose.v2/json -# gopkg.in/yaml.v2 v2.2.8 +# gopkg.in/yaml.v2 v2.3.0 gopkg.in/yaml.v2