From 46bc28bed61d86cf25aad535573e48663bca8438 Mon Sep 17 00:00:00 2001 From: Adriano Cunha Date: Mon, 23 Jul 2018 09:47:28 -0700 Subject: [PATCH] Update dependencies Ran `hack/update-deps.sh` and `hack/verify-codegen.sh`. --- Gopkg.lock | 362 ++-- Gopkg.toml | 5 - vendor/github.com/Microsoft/go-winio/LICENSE | 22 - .../Microsoft/go-winio/archive/tar/LICENSE | 27 - .../github.com/Microsoft/go-winio/backup.go | 280 --- vendor/github.com/Microsoft/go-winio/ea.go | 137 -- vendor/github.com/Microsoft/go-winio/file.go | 307 --- .../github.com/Microsoft/go-winio/fileinfo.go | 60 - vendor/github.com/Microsoft/go-winio/pipe.go | 424 ---- .../Microsoft/go-winio/privilege.go | 202 -- .../github.com/Microsoft/go-winio/reparse.go | 128 -- vendor/github.com/Microsoft/go-winio/sd.go | 98 - .../github.com/Microsoft/go-winio/syscall.go | 3 - .../Microsoft/go-winio/zsyscall_windows.go | 520 ----- vendor/github.com/docker/distribution/AUTHORS | 182 -- vendor/github.com/docker/distribution/LICENSE | 202 -- .../docker/distribution/digest/digest.go | 139 -- .../docker/distribution/digest/digester.go | 155 -- .../docker/distribution/digest/doc.go | 42 - .../docker/distribution/digest/set.go | 245 --- .../docker/distribution/digest/verifiers.go | 44 - .../distribution/reference/reference.go | 370 ---- .../docker/distribution/reference/regexp.go | 124 -- vendor/github.com/docker/docker/AUTHORS | 1652 --------------- vendor/github.com/docker/docker/LICENSE | 191 -- vendor/github.com/docker/docker/NOTICE | 19 - .../docker/docker/api/types/auth.go | 22 - .../docker/docker/api/types/blkiodev/blkio.go | 23 - .../docker/docker/api/types/client.go | 378 ---- .../docker/docker/api/types/configs.go | 69 - .../docker/api/types/container/config.go | 62 - .../api/types/container/container_create.go | 21 - .../api/types/container/container_update.go | 17 - .../api/types/container/container_wait.go | 17 - .../docker/api/types/container/host_config.go | 333 ---- .../api/types/container/hostconfig_unix.go | 81 - .../api/types/container/hostconfig_windows.go | 87 - .../docker/docker/api/types/error_response.go | 13 - .../docker/docker/api/types/events/events.go | 42 - .../docker/docker/api/types/filters/parse.go | 310 --- .../docker/docker/api/types/id_response.go | 13 - .../docker/docker/api/types/image_summary.go | 49 - .../docker/docker/api/types/mount/mount.go | 113 -- .../docker/api/types/network/network.go | 59 - .../docker/docker/api/types/plugin.go | 189 -- .../docker/docker/api/types/plugin_device.go | 25 - .../docker/docker/api/types/plugin_env.go | 25 - .../docker/api/types/plugin_interface_type.go | 21 - .../docker/docker/api/types/plugin_mount.go | 37 - .../docker/api/types/plugin_responses.go | 64 - .../docker/docker/api/types/port.go | 23 - .../api/types/reference/image_reference.go | 34 - .../docker/api/types/registry/authenticate.go | 21 - .../docker/api/types/registry/registry.go | 104 - .../docker/docker/api/types/seccomp.go | 93 - .../api/types/service_update_response.go | 12 - .../docker/docker/api/types/stats.go | 178 -- .../docker/api/types/strslice/strslice.go | 30 - .../docker/docker/api/types/swarm/common.go | 27 - .../docker/api/types/swarm/container.go | 46 - .../docker/docker/api/types/swarm/network.go | 111 -- .../docker/docker/api/types/swarm/node.go | 114 -- .../docker/docker/api/types/swarm/secret.go | 31 - .../docker/docker/api/types/swarm/service.go | 105 - .../docker/docker/api/types/swarm/swarm.go | 197 -- .../docker/docker/api/types/swarm/task.go | 128 -- .../docker/api/types/time/duration_convert.go | 12 - .../docker/docker/api/types/time/timestamp.go | 124 -- .../docker/docker/api/types/types.go | 549 ----- .../docker/api/types/versions/compare.go | 62 - .../docker/docker/api/types/volume.go | 58 - .../docker/api/types/volume/volumes_create.go | 29 - .../docker/api/types/volume/volumes_list.go | 23 - .../docker/docker/client/checkpoint_create.go | 13 - .../docker/docker/client/checkpoint_delete.go | 20 - .../docker/docker/client/checkpoint_list.go | 28 - .../github.com/docker/docker/client/client.go | 246 --- .../docker/docker/client/client_unix.go | 6 - .../docker/docker/client/client_windows.go | 4 - .../docker/docker/client/container_attach.go | 37 - .../docker/docker/client/container_commit.go | 53 - .../docker/docker/client/container_copy.go | 97 - .../docker/docker/client/container_create.go | 50 - .../docker/docker/client/container_diff.go | 23 - .../docker/docker/client/container_exec.go | 54 - .../docker/docker/client/container_export.go | 20 - .../docker/docker/client/container_inspect.go | 54 - .../docker/docker/client/container_kill.go | 17 - .../docker/docker/client/container_list.go | 56 - .../docker/docker/client/container_logs.go | 52 - .../docker/docker/client/container_pause.go | 10 - .../docker/docker/client/container_prune.go | 36 - .../docker/docker/client/container_remove.go | 27 - .../docker/docker/client/container_rename.go | 16 - .../docker/docker/client/container_resize.go | 29 - .../docker/docker/client/container_restart.go | 22 - .../docker/docker/client/container_start.go | 24 - .../docker/docker/client/container_stats.go | 26 - .../docker/docker/client/container_stop.go | 21 - .../docker/docker/client/container_top.go | 28 - .../docker/docker/client/container_unpause.go | 10 - .../docker/docker/client/container_update.go | 22 - .../docker/docker/client/container_wait.go | 26 - .../docker/docker/client/disk_usage.go | 26 - .../github.com/docker/docker/client/errors.go | 278 --- .../github.com/docker/docker/client/events.go | 102 - .../github.com/docker/docker/client/hijack.go | 177 -- .../docker/docker/client/image_build.go | 123 -- .../docker/docker/client/image_create.go | 34 - .../docker/docker/client/image_history.go | 22 - .../docker/docker/client/image_import.go | 37 - .../docker/docker/client/image_inspect.go | 33 - .../docker/docker/client/image_list.go | 45 - .../docker/docker/client/image_load.go | 30 - .../docker/docker/client/image_prune.go | 36 - .../docker/docker/client/image_pull.go | 46 - .../docker/docker/client/image_push.go | 54 - .../docker/docker/client/image_remove.go | 31 - .../docker/docker/client/image_save.go | 22 - .../docker/docker/client/image_search.go | 51 - .../docker/docker/client/image_tag.go | 34 - .../github.com/docker/docker/client/info.go | 26 - .../docker/docker/client/interface.go | 171 -- .../docker/client/interface_experimental.go | 17 - .../docker/docker/client/interface_stable.go | 10 - .../github.com/docker/docker/client/login.go | 29 - .../docker/docker/client/network_connect.go | 18 - .../docker/docker/client/network_create.go | 25 - .../docker/client/network_disconnect.go | 14 - .../docker/docker/client/network_inspect.go | 38 - .../docker/docker/client/network_list.go | 31 - .../docker/docker/client/network_prune.go | 36 - .../docker/docker/client/network_remove.go | 10 - .../docker/docker/client/node_inspect.go | 33 - .../docker/docker/client/node_list.go | 36 - .../docker/docker/client/node_remove.go | 21 - .../docker/docker/client/node_update.go | 18 - .../github.com/docker/docker/client/ping.go | 30 - .../docker/docker/client/plugin_create.go | 26 - .../docker/docker/client/plugin_disable.go | 19 - .../docker/docker/client/plugin_enable.go | 19 - .../docker/docker/client/plugin_inspect.go | 32 - .../docker/docker/client/plugin_install.go | 113 -- .../docker/docker/client/plugin_list.go | 21 - .../docker/docker/client/plugin_push.go | 17 - .../docker/docker/client/plugin_remove.go | 20 - .../docker/docker/client/plugin_set.go | 12 - .../docker/docker/client/plugin_upgrade.go | 37 - .../docker/docker/client/request.go | 247 --- .../docker/docker/client/secret_create.go | 24 - .../docker/docker/client/secret_inspect.go | 34 - .../docker/docker/client/secret_list.go | 35 - .../docker/docker/client/secret_remove.go | 10 - .../docker/docker/client/secret_update.go | 19 - .../docker/docker/client/service_create.go | 30 - .../docker/docker/client/service_inspect.go | 33 - .../docker/docker/client/service_list.go | 35 - .../docker/docker/client/service_logs.go | 52 - .../docker/docker/client/service_remove.go | 10 - .../docker/docker/client/service_update.go | 41 - .../docker/client/swarm_get_unlock_key.go | 21 - .../docker/docker/client/swarm_init.go | 21 - .../docker/docker/client/swarm_inspect.go | 21 - .../docker/docker/client/swarm_join.go | 13 - .../docker/docker/client/swarm_leave.go | 18 - .../docker/docker/client/swarm_unlock.go | 17 - .../docker/docker/client/swarm_update.go | 22 - .../docker/docker/client/task_inspect.go | 34 - .../docker/docker/client/task_list.go | 35 - .../docker/docker/client/transport.go | 28 - .../github.com/docker/docker/client/utils.go | 33 - .../docker/docker/client/version.go | 21 - .../docker/docker/client/volume_create.go | 21 - .../docker/docker/client/volume_inspect.go | 38 - .../docker/docker/client/volume_list.go | 32 - .../docker/docker/client/volume_prune.go | 36 - .../docker/docker/client/volume_remove.go | 21 - .../docker-engine-selinux/LICENSE | 339 ---- .../docker-engine-selinux/LICENSE | 339 ---- .../selinux/docker-engine-selinux/LICENSE | 340 ---- .../docker/docker/contrib/syntax/vim/LICENSE | 22 - .../docker/docs/static_files/contributors.png | Bin 23100 -> 0 bytes .../docker/docker/hack/generate-authors.sh | 15 - .../.build-deb/docker-engine.docker.default | 1 - .../make/.build-deb/docker-engine.docker.init | 1 - .../.build-deb/docker-engine.docker.upstart | 1 - .../hack/make/.build-deb/docker-engine.udev | 1 - .../docker/docker/pkg/symlink/LICENSE.APACHE | 191 -- .../docker/docker/pkg/symlink/LICENSE.BSD | 27 - .../docker/pkg/tlsconfig/tlsconfig_clone.go | 11 - .../pkg/tlsconfig/tlsconfig_clone_go16.go | 31 - .../pkg/tlsconfig/tlsconfig_clone_go17.go | 33 - .../docker/docker/project/CONTRIBUTORS.md | 1 - .../github.com/docker/go-connections/LICENSE | 191 -- .../docker/go-connections/nat/nat.go | 242 --- .../docker/go-connections/nat/parse.go | 57 - .../docker/go-connections/nat/sort.go | 96 - .../go-connections/sockets/inmem_socket.go | 81 - .../docker/go-connections/sockets/proxy.go | 51 - .../docker/go-connections/sockets/sockets.go | 38 - .../go-connections/sockets/sockets_unix.go | 35 - .../go-connections/sockets/sockets_windows.go | 27 - .../go-connections/sockets/tcp_socket.go | 22 - .../go-connections/sockets/unix_socket.go | 32 - .../go-connections/tlsconfig/certpool_go17.go | 18 - .../tlsconfig/certpool_other.go | 14 - .../docker/go-connections/tlsconfig/config.go | 244 --- .../tlsconfig/config_client_ciphers.go | 17 - .../tlsconfig/config_legacy_client_ciphers.go | 15 - vendor/github.com/docker/go-units/LICENSE | 191 -- vendor/github.com/docker/go-units/duration.go | 35 - vendor/github.com/docker/go-units/size.go | 108 - vendor/github.com/docker/go-units/ulimit.go | 118 -- .../google/go-containerregistry/LICENSE | 202 -- .../go-containerregistry/cmd/ko/commands.go | 193 -- .../go-containerregistry/cmd/ko/config.go | 88 - .../go-containerregistry/cmd/ko/filestuff.go | 71 - .../go-containerregistry/cmd/ko/flatname.go | 42 - .../go-containerregistry/cmd/ko/local.go | 28 - .../go-containerregistry/cmd/ko/main.go | 37 - .../go-containerregistry/cmd/ko/publish.go | 97 - .../go-containerregistry/cmd/ko/resolve.go | 123 -- .../cmd/ko/test/kodata/kenobi | 1 - .../go-containerregistry/pkg/authn/anon.go | 26 - .../go-containerregistry/pkg/authn/auth.go | 29 - .../go-containerregistry/pkg/authn/authn.go | 21 - .../go-containerregistry/pkg/authn/basic.go | 33 - .../go-containerregistry/pkg/authn/bearer.go | 29 - .../go-containerregistry/pkg/authn/doc.go | 17 - .../go-containerregistry/pkg/authn/helper.go | 96 - .../pkg/authn/keychain.go | 152 -- .../pkg/authn/multikeychain.go | 45 - .../pkg/ko/build/build.go | 31 - .../go-containerregistry/pkg/ko/build/doc.go | 17 - .../pkg/ko/build/gobuild.go | 296 --- .../pkg/ko/build/options.go | 46 - .../pkg/ko/publish/daemon.go | 60 - .../pkg/ko/publish/default.go | 108 - .../pkg/ko/publish/doc.go | 17 - .../pkg/ko/publish/options.go | 74 - .../pkg/ko/publish/publish.go | 28 - .../pkg/ko/resolve/doc.go | 16 - .../pkg/ko/resolve/resolve.go | 160 -- .../go-containerregistry/pkg/name/check.go | 52 - .../go-containerregistry/pkg/name/digest.go | 91 - .../go-containerregistry/pkg/name/errors.go | 37 - .../go-containerregistry/pkg/name/ref.go | 50 - .../go-containerregistry/pkg/name/registry.go | 79 - .../pkg/name/repository.go | 99 - .../go-containerregistry/pkg/name/tag.go | 101 - .../go-containerregistry/pkg/v1/config.go | 130 -- .../go-containerregistry/pkg/v1/daemon/doc.go | 17 - .../pkg/v1/daemon/image.go | 128 -- .../pkg/v1/daemon/options.go | 32 - .../pkg/v1/daemon/write.go | 72 - .../google/go-containerregistry/pkg/v1/doc.go | 19 - .../go-containerregistry/pkg/v1/empty/doc.go | 16 - .../pkg/v1/empty/image.go | 22 - .../go-containerregistry/pkg/v1/hash.go | 111 -- .../go-containerregistry/pkg/v1/image.go | 58 - .../go-containerregistry/pkg/v1/layer.go | 37 - .../go-containerregistry/pkg/v1/manifest.go | 49 - .../go-containerregistry/pkg/v1/mutate/doc.go | 16 - .../pkg/v1/mutate/mutate.go | 513 ----- .../pkg/v1/mutate/rebase.go | 100 - .../pkg/v1/partial/compressed.go | 159 -- .../pkg/v1/partial/doc.go | 17 - .../pkg/v1/partial/image.go | 28 - .../pkg/v1/partial/uncompressed.go | 229 --- .../pkg/v1/partial/with.go | 292 --- .../go-containerregistry/pkg/v1/random/doc.go | 16 - .../pkg/v1/random/image.go | 128 -- .../pkg/v1/remote/delete.go | 71 - .../go-containerregistry/pkg/v1/remote/doc.go | 17 - .../pkg/v1/remote/error.go | 106 - .../pkg/v1/remote/image.go | 245 --- .../pkg/v1/remote/list.go | 64 - .../pkg/v1/remote/mount.go | 77 - .../pkg/v1/remote/options.go | 56 - .../pkg/v1/remote/transport/basic.go | 47 - .../pkg/v1/remote/transport/bearer.go | 119 -- .../pkg/v1/remote/transport/doc.go | 18 - .../pkg/v1/remote/transport/ping.go | 93 - .../pkg/v1/remote/transport/scheme.go | 42 - .../pkg/v1/remote/transport/scope.go | 24 - .../pkg/v1/remote/transport/transport.go | 84 - .../pkg/v1/remote/write.go | 299 --- .../pkg/v1/tarball/doc.go | 17 - .../pkg/v1/tarball/image.go | 338 ---- .../pkg/v1/tarball/layer.go | 144 -- .../pkg/v1/tarball/write.go | 134 -- .../pkg/v1/types/types.go | 40 - .../pkg/v1/v1util/and_closer.go | 47 - .../go-containerregistry/pkg/v1/v1util/nop.go | 40 - .../pkg/v1/v1util/verify.go | 61 - .../go-containerregistry/pkg/v1/v1util/zip.go | 126 -- .../pkg/v1/zz_deepcopy_generated.go | 232 --- .../google/licenseclassifier/LICENSE | 202 -- .../google/licenseclassifier/classifier.go | 429 ---- .../file_system_resources.go | 65 - .../google/licenseclassifier/forbidden.go | 48 - .../licenseclassifier/internal/sets/sets.go | 20 - .../internal/sets/stringset.go | 228 --- .../google/licenseclassifier/license_type.go | 368 ---- .../licenseclassifier/licenses/Unlicense.txt | 24 - .../licenseclassifier/licenses/licenses.db | Bin 5371833 -> 0 bytes .../stringclassifier/LICENSE | 202 -- .../stringclassifier/classifier.go | 560 ------ .../stringclassifier/internal/pq/priority.go | 111 -- .../stringclassifier/searchset/searchset.go | 421 ---- .../searchset/tokenizer/tokenizer.go | 170 -- .../license_serializer/license_serializer.go | 82 - vendor/github.com/hashicorp/hcl/LICENSE | 354 ---- vendor/github.com/hashicorp/hcl/decoder.go | 729 ------- vendor/github.com/hashicorp/hcl/hcl.go | 11 - .../github.com/hashicorp/hcl/hcl/ast/ast.go | 219 -- .../github.com/hashicorp/hcl/hcl/ast/walk.go | 52 - .../hashicorp/hcl/hcl/parser/error.go | 17 - .../hashicorp/hcl/hcl/parser/parser.go | 532 ----- .../hashicorp/hcl/hcl/printer/nodes.go | 789 -------- .../hashicorp/hcl/hcl/printer/printer.go | 66 - .../hashicorp/hcl/hcl/scanner/scanner.go | 652 ------ .../hashicorp/hcl/hcl/strconv/quote.go | 241 --- .../hashicorp/hcl/hcl/token/position.go | 46 - .../hashicorp/hcl/hcl/token/token.go | 219 -- .../hashicorp/hcl/json/parser/flatten.go | 117 -- .../hashicorp/hcl/json/parser/parser.go | 313 --- .../hashicorp/hcl/json/scanner/scanner.go | 451 ----- .../hashicorp/hcl/json/token/position.go | 46 - .../hashicorp/hcl/json/token/token.go | 118 -- vendor/github.com/hashicorp/hcl/lex.go | 38 - vendor/github.com/hashicorp/hcl/parse.go | 39 - .../inconshreveable/mousetrap/LICENSE | 13 - .../inconshreveable/mousetrap/trap_others.go | 15 - .../inconshreveable/mousetrap/trap_windows.go | 98 - .../mousetrap/trap_windows_1.4.go | 46 - .../github.com/magiconair/properties/LICENSE | 25 - .../magiconair/properties/decode.go | 289 --- .../github.com/magiconair/properties/doc.go | 156 -- .../magiconair/properties/integrate.go | 34 - .../github.com/magiconair/properties/lex.go | 407 ---- .../github.com/magiconair/properties/load.go | 292 --- .../magiconair/properties/parser.go | 95 - .../magiconair/properties/properties.go | 833 -------- .../magiconair/properties/rangecheck.go | 31 - .../github.com/mattmoor/dep-collector/LICENSE | 201 -- .../mattmoor/dep-collector/imports.go | 94 - .../mattmoor/dep-collector/licenses.go | 202 -- .../github.com/mattmoor/dep-collector/main.go | 81 - .../github.com/mitchellh/mapstructure/LICENSE | 21 - .../mitchellh/mapstructure/decode_hooks.go | 171 -- .../mitchellh/mapstructure/error.go | 50 - .../mitchellh/mapstructure/mapstructure.go | 1061 ---------- vendor/github.com/pelletier/go-toml/LICENSE | 21 - vendor/github.com/pelletier/go-toml/doc.go | 23 - vendor/github.com/pelletier/go-toml/fuzz.go | 31 - .../pelletier/go-toml/keysparsing.go | 85 - vendor/github.com/pelletier/go-toml/lexer.go | 750 ------- .../github.com/pelletier/go-toml/marshal.go | 600 ------ vendor/github.com/pelletier/go-toml/parser.go | 430 ---- .../github.com/pelletier/go-toml/position.go | 29 - vendor/github.com/pelletier/go-toml/token.go | 144 -- vendor/github.com/pelletier/go-toml/toml.go | 309 --- .../pelletier/go-toml/tomltree_create.go | 142 -- .../pelletier/go-toml/tomltree_write.go | 289 --- vendor/github.com/pkg/errors/LICENSE | 23 - vendor/github.com/pkg/errors/errors.go | 269 --- vendor/github.com/pkg/errors/stack.go | 178 -- vendor/github.com/sergi/go-diff/AUTHORS | 25 - vendor/github.com/sergi/go-diff/CONTRIBUTORS | 32 - vendor/github.com/sergi/go-diff/LICENSE | 20 - .../sergi/go-diff/diffmatchpatch/diff.go | 1344 ------------- .../go-diff/diffmatchpatch/diffmatchpatch.go | 46 - .../sergi/go-diff/diffmatchpatch/match.go | 160 -- .../sergi/go-diff/diffmatchpatch/mathutil.go | 23 - .../sergi/go-diff/diffmatchpatch/patch.go | 556 ------ .../go-diff/diffmatchpatch/stringutil.go | 88 - vendor/github.com/spf13/afero/LICENSE.txt | 174 -- vendor/github.com/spf13/afero/afero.go | 108 - vendor/github.com/spf13/afero/basepath.go | 180 -- .../github.com/spf13/afero/cacheOnReadFs.go | 290 --- vendor/github.com/spf13/afero/const_bsds.go | 22 - .../github.com/spf13/afero/const_win_unix.go | 25 - .../github.com/spf13/afero/copyOnWriteFs.go | 292 --- vendor/github.com/spf13/afero/httpFs.go | 110 - vendor/github.com/spf13/afero/ioutil.go | 230 --- vendor/github.com/spf13/afero/lstater.go | 27 - vendor/github.com/spf13/afero/match.go | 110 - vendor/github.com/spf13/afero/mem/dir.go | 37 - vendor/github.com/spf13/afero/mem/dirmap.go | 43 - vendor/github.com/spf13/afero/mem/file.go | 314 --- vendor/github.com/spf13/afero/memmap.go | 365 ---- vendor/github.com/spf13/afero/os.go | 101 - vendor/github.com/spf13/afero/path.go | 106 - vendor/github.com/spf13/afero/readonlyfs.go | 80 - vendor/github.com/spf13/afero/regexpfs.go | 214 -- vendor/github.com/spf13/afero/unionFile.go | 305 --- vendor/github.com/spf13/afero/util.go | 330 --- vendor/github.com/spf13/cast/LICENSE | 21 - vendor/github.com/spf13/cast/cast.go | 159 -- vendor/github.com/spf13/cast/caste.go | 1166 ----------- vendor/github.com/spf13/cobra/LICENSE.txt | 174 -- vendor/github.com/spf13/cobra/args.go | 89 - .../spf13/cobra/bash_completions.go | 555 ------ vendor/github.com/spf13/cobra/cobra.go | 200 -- .../spf13/cobra/cobra/cmd/license_agpl.go | 683 ------- .../spf13/cobra/cobra/cmd/license_apache_2.go | 238 --- .../cobra/cobra/cmd/license_bsd_clause_2.go | 71 - .../cobra/cobra/cmd/license_bsd_clause_3.go | 78 - .../spf13/cobra/cobra/cmd/license_gpl_2.go | 376 ---- .../spf13/cobra/cobra/cmd/license_gpl_3.go | 711 ------- .../spf13/cobra/cobra/cmd/license_lgpl.go | 186 -- .../spf13/cobra/cobra/cmd/license_mit.go | 63 - .../spf13/cobra/cobra/cmd/licenses.go | 118 -- .../cobra/cobra/cmd/testdata/LICENSE.golden | 202 -- vendor/github.com/spf13/cobra/command.go | 1517 -------------- .../github.com/spf13/cobra/command_notwin.go | 5 - vendor/github.com/spf13/cobra/command_win.go | 20 - .../github.com/spf13/cobra/zsh_completions.go | 126 -- .../spf13/jwalterweatherman/LICENSE | 21 - .../jwalterweatherman/default_notepad.go | 113 -- .../spf13/jwalterweatherman/log_counter.go | 55 - .../spf13/jwalterweatherman/notepad.go | 194 -- vendor/github.com/spf13/viper/LICENSE | 21 - vendor/github.com/spf13/viper/flags.go | 57 - vendor/github.com/spf13/viper/util.go | 221 -- vendor/github.com/spf13/viper/viper.go | 1771 ----------------- vendor/golang.org/x/net/proxy/direct.go | 18 - vendor/golang.org/x/net/proxy/per_host.go | 140 -- vendor/golang.org/x/net/proxy/proxy.go | 134 -- vendor/golang.org/x/net/proxy/socks5.go | 213 -- vendor/golang.org/x/sync/AUTHORS | 3 - vendor/golang.org/x/sync/CONTRIBUTORS | 3 - vendor/golang.org/x/sync/LICENSE | 27 - vendor/golang.org/x/sync/PATENTS | 22 - vendor/golang.org/x/sync/errgroup/errgroup.go | 67 - 436 files changed, 154 insertions(+), 55675 deletions(-) delete mode 100644 vendor/github.com/Microsoft/go-winio/LICENSE delete mode 100644 vendor/github.com/Microsoft/go-winio/archive/tar/LICENSE delete mode 100644 vendor/github.com/Microsoft/go-winio/backup.go delete mode 100644 vendor/github.com/Microsoft/go-winio/ea.go delete mode 100644 vendor/github.com/Microsoft/go-winio/file.go delete mode 100644 vendor/github.com/Microsoft/go-winio/fileinfo.go delete mode 100644 vendor/github.com/Microsoft/go-winio/pipe.go delete mode 100644 vendor/github.com/Microsoft/go-winio/privilege.go delete mode 100644 vendor/github.com/Microsoft/go-winio/reparse.go delete mode 100644 vendor/github.com/Microsoft/go-winio/sd.go delete mode 100644 vendor/github.com/Microsoft/go-winio/syscall.go delete mode 100644 vendor/github.com/Microsoft/go-winio/zsyscall_windows.go delete mode 100644 vendor/github.com/docker/distribution/AUTHORS delete mode 100644 vendor/github.com/docker/distribution/LICENSE delete mode 100644 vendor/github.com/docker/distribution/digest/digest.go delete mode 100644 vendor/github.com/docker/distribution/digest/digester.go delete mode 100644 vendor/github.com/docker/distribution/digest/doc.go delete mode 100644 vendor/github.com/docker/distribution/digest/set.go delete mode 100644 vendor/github.com/docker/distribution/digest/verifiers.go delete mode 100644 vendor/github.com/docker/distribution/reference/reference.go delete mode 100644 vendor/github.com/docker/distribution/reference/regexp.go delete mode 100644 vendor/github.com/docker/docker/AUTHORS delete mode 100644 vendor/github.com/docker/docker/LICENSE delete mode 100644 vendor/github.com/docker/docker/NOTICE delete mode 100644 vendor/github.com/docker/docker/api/types/auth.go delete mode 100644 vendor/github.com/docker/docker/api/types/blkiodev/blkio.go delete mode 100644 vendor/github.com/docker/docker/api/types/client.go delete mode 100644 vendor/github.com/docker/docker/api/types/configs.go delete mode 100644 vendor/github.com/docker/docker/api/types/container/config.go delete mode 100644 vendor/github.com/docker/docker/api/types/container/container_create.go delete mode 100644 vendor/github.com/docker/docker/api/types/container/container_update.go delete mode 100644 vendor/github.com/docker/docker/api/types/container/container_wait.go delete mode 100644 vendor/github.com/docker/docker/api/types/container/host_config.go delete mode 100644 vendor/github.com/docker/docker/api/types/container/hostconfig_unix.go delete mode 100644 vendor/github.com/docker/docker/api/types/container/hostconfig_windows.go delete mode 100644 vendor/github.com/docker/docker/api/types/error_response.go delete mode 100644 vendor/github.com/docker/docker/api/types/events/events.go delete mode 100644 vendor/github.com/docker/docker/api/types/filters/parse.go delete mode 100644 vendor/github.com/docker/docker/api/types/id_response.go delete mode 100644 vendor/github.com/docker/docker/api/types/image_summary.go delete mode 100644 vendor/github.com/docker/docker/api/types/mount/mount.go delete mode 100644 vendor/github.com/docker/docker/api/types/network/network.go delete mode 100644 vendor/github.com/docker/docker/api/types/plugin.go delete mode 100644 vendor/github.com/docker/docker/api/types/plugin_device.go delete mode 100644 vendor/github.com/docker/docker/api/types/plugin_env.go delete mode 100644 vendor/github.com/docker/docker/api/types/plugin_interface_type.go delete mode 100644 vendor/github.com/docker/docker/api/types/plugin_mount.go delete mode 100644 vendor/github.com/docker/docker/api/types/plugin_responses.go delete mode 100644 vendor/github.com/docker/docker/api/types/port.go delete mode 100644 vendor/github.com/docker/docker/api/types/reference/image_reference.go delete mode 100644 vendor/github.com/docker/docker/api/types/registry/authenticate.go delete mode 100644 vendor/github.com/docker/docker/api/types/registry/registry.go delete mode 100644 vendor/github.com/docker/docker/api/types/seccomp.go delete mode 100644 vendor/github.com/docker/docker/api/types/service_update_response.go delete mode 100644 vendor/github.com/docker/docker/api/types/stats.go delete mode 100644 vendor/github.com/docker/docker/api/types/strslice/strslice.go delete mode 100644 vendor/github.com/docker/docker/api/types/swarm/common.go delete mode 100644 vendor/github.com/docker/docker/api/types/swarm/container.go delete mode 100644 vendor/github.com/docker/docker/api/types/swarm/network.go delete mode 100644 vendor/github.com/docker/docker/api/types/swarm/node.go delete mode 100644 vendor/github.com/docker/docker/api/types/swarm/secret.go delete mode 100644 vendor/github.com/docker/docker/api/types/swarm/service.go delete mode 100644 vendor/github.com/docker/docker/api/types/swarm/swarm.go delete mode 100644 vendor/github.com/docker/docker/api/types/swarm/task.go delete mode 100644 vendor/github.com/docker/docker/api/types/time/duration_convert.go delete mode 100644 vendor/github.com/docker/docker/api/types/time/timestamp.go delete mode 100644 vendor/github.com/docker/docker/api/types/types.go delete mode 100644 vendor/github.com/docker/docker/api/types/versions/compare.go delete mode 100644 vendor/github.com/docker/docker/api/types/volume.go delete mode 100644 vendor/github.com/docker/docker/api/types/volume/volumes_create.go delete mode 100644 vendor/github.com/docker/docker/api/types/volume/volumes_list.go delete mode 100644 vendor/github.com/docker/docker/client/checkpoint_create.go delete mode 100644 vendor/github.com/docker/docker/client/checkpoint_delete.go delete mode 100644 vendor/github.com/docker/docker/client/checkpoint_list.go delete mode 100644 vendor/github.com/docker/docker/client/client.go delete mode 100644 vendor/github.com/docker/docker/client/client_unix.go delete mode 100644 vendor/github.com/docker/docker/client/client_windows.go delete mode 100644 vendor/github.com/docker/docker/client/container_attach.go delete mode 100644 vendor/github.com/docker/docker/client/container_commit.go delete mode 100644 vendor/github.com/docker/docker/client/container_copy.go delete mode 100644 vendor/github.com/docker/docker/client/container_create.go delete mode 100644 vendor/github.com/docker/docker/client/container_diff.go delete mode 100644 vendor/github.com/docker/docker/client/container_exec.go delete mode 100644 vendor/github.com/docker/docker/client/container_export.go delete mode 100644 vendor/github.com/docker/docker/client/container_inspect.go delete mode 100644 vendor/github.com/docker/docker/client/container_kill.go delete mode 100644 vendor/github.com/docker/docker/client/container_list.go delete mode 100644 vendor/github.com/docker/docker/client/container_logs.go delete mode 100644 vendor/github.com/docker/docker/client/container_pause.go delete mode 100644 vendor/github.com/docker/docker/client/container_prune.go delete mode 100644 vendor/github.com/docker/docker/client/container_remove.go delete mode 100644 vendor/github.com/docker/docker/client/container_rename.go delete mode 100644 vendor/github.com/docker/docker/client/container_resize.go delete mode 100644 vendor/github.com/docker/docker/client/container_restart.go delete mode 100644 vendor/github.com/docker/docker/client/container_start.go delete mode 100644 vendor/github.com/docker/docker/client/container_stats.go delete mode 100644 vendor/github.com/docker/docker/client/container_stop.go delete mode 100644 vendor/github.com/docker/docker/client/container_top.go delete mode 100644 vendor/github.com/docker/docker/client/container_unpause.go delete mode 100644 vendor/github.com/docker/docker/client/container_update.go delete mode 100644 vendor/github.com/docker/docker/client/container_wait.go delete mode 100644 vendor/github.com/docker/docker/client/disk_usage.go delete mode 100644 vendor/github.com/docker/docker/client/errors.go delete mode 100644 vendor/github.com/docker/docker/client/events.go delete mode 100644 vendor/github.com/docker/docker/client/hijack.go delete mode 100644 vendor/github.com/docker/docker/client/image_build.go delete mode 100644 vendor/github.com/docker/docker/client/image_create.go delete mode 100644 vendor/github.com/docker/docker/client/image_history.go delete mode 100644 vendor/github.com/docker/docker/client/image_import.go delete mode 100644 vendor/github.com/docker/docker/client/image_inspect.go delete mode 100644 vendor/github.com/docker/docker/client/image_list.go delete mode 100644 vendor/github.com/docker/docker/client/image_load.go delete mode 100644 vendor/github.com/docker/docker/client/image_prune.go delete mode 100644 vendor/github.com/docker/docker/client/image_pull.go delete mode 100644 vendor/github.com/docker/docker/client/image_push.go delete mode 100644 vendor/github.com/docker/docker/client/image_remove.go delete mode 100644 vendor/github.com/docker/docker/client/image_save.go delete mode 100644 vendor/github.com/docker/docker/client/image_search.go delete mode 100644 vendor/github.com/docker/docker/client/image_tag.go delete mode 100644 vendor/github.com/docker/docker/client/info.go delete mode 100644 vendor/github.com/docker/docker/client/interface.go delete mode 100644 vendor/github.com/docker/docker/client/interface_experimental.go delete mode 100644 vendor/github.com/docker/docker/client/interface_stable.go delete mode 100644 vendor/github.com/docker/docker/client/login.go delete mode 100644 vendor/github.com/docker/docker/client/network_connect.go delete mode 100644 vendor/github.com/docker/docker/client/network_create.go delete mode 100644 vendor/github.com/docker/docker/client/network_disconnect.go delete mode 100644 vendor/github.com/docker/docker/client/network_inspect.go delete mode 100644 vendor/github.com/docker/docker/client/network_list.go delete mode 100644 vendor/github.com/docker/docker/client/network_prune.go delete mode 100644 vendor/github.com/docker/docker/client/network_remove.go delete mode 100644 vendor/github.com/docker/docker/client/node_inspect.go delete mode 100644 vendor/github.com/docker/docker/client/node_list.go delete mode 100644 vendor/github.com/docker/docker/client/node_remove.go delete mode 100644 vendor/github.com/docker/docker/client/node_update.go delete mode 100644 vendor/github.com/docker/docker/client/ping.go delete mode 100644 vendor/github.com/docker/docker/client/plugin_create.go delete mode 100644 vendor/github.com/docker/docker/client/plugin_disable.go delete mode 100644 vendor/github.com/docker/docker/client/plugin_enable.go delete mode 100644 vendor/github.com/docker/docker/client/plugin_inspect.go delete mode 100644 vendor/github.com/docker/docker/client/plugin_install.go delete mode 100644 vendor/github.com/docker/docker/client/plugin_list.go delete mode 100644 vendor/github.com/docker/docker/client/plugin_push.go delete mode 100644 vendor/github.com/docker/docker/client/plugin_remove.go delete mode 100644 vendor/github.com/docker/docker/client/plugin_set.go delete mode 100644 vendor/github.com/docker/docker/client/plugin_upgrade.go delete mode 100644 vendor/github.com/docker/docker/client/request.go delete mode 100644 vendor/github.com/docker/docker/client/secret_create.go delete mode 100644 vendor/github.com/docker/docker/client/secret_inspect.go delete mode 100644 vendor/github.com/docker/docker/client/secret_list.go delete mode 100644 vendor/github.com/docker/docker/client/secret_remove.go delete mode 100644 vendor/github.com/docker/docker/client/secret_update.go delete mode 100644 vendor/github.com/docker/docker/client/service_create.go delete mode 100644 vendor/github.com/docker/docker/client/service_inspect.go delete mode 100644 vendor/github.com/docker/docker/client/service_list.go delete mode 100644 vendor/github.com/docker/docker/client/service_logs.go delete mode 100644 vendor/github.com/docker/docker/client/service_remove.go delete mode 100644 vendor/github.com/docker/docker/client/service_update.go delete mode 100644 vendor/github.com/docker/docker/client/swarm_get_unlock_key.go delete mode 100644 vendor/github.com/docker/docker/client/swarm_init.go delete mode 100644 vendor/github.com/docker/docker/client/swarm_inspect.go delete mode 100644 vendor/github.com/docker/docker/client/swarm_join.go delete mode 100644 vendor/github.com/docker/docker/client/swarm_leave.go delete mode 100644 vendor/github.com/docker/docker/client/swarm_unlock.go delete mode 100644 vendor/github.com/docker/docker/client/swarm_update.go delete mode 100644 vendor/github.com/docker/docker/client/task_inspect.go delete mode 100644 vendor/github.com/docker/docker/client/task_list.go delete mode 100644 vendor/github.com/docker/docker/client/transport.go delete mode 100644 vendor/github.com/docker/docker/client/utils.go delete mode 100644 vendor/github.com/docker/docker/client/version.go delete mode 100644 vendor/github.com/docker/docker/client/volume_create.go delete mode 100644 vendor/github.com/docker/docker/client/volume_inspect.go delete mode 100644 vendor/github.com/docker/docker/client/volume_list.go delete mode 100644 vendor/github.com/docker/docker/client/volume_prune.go delete mode 100644 vendor/github.com/docker/docker/client/volume_remove.go delete mode 100644 vendor/github.com/docker/docker/contrib/selinux-fedora-24/docker-engine-selinux/LICENSE delete mode 100644 vendor/github.com/docker/docker/contrib/selinux-oraclelinux-7/docker-engine-selinux/LICENSE delete mode 100644 vendor/github.com/docker/docker/contrib/selinux/docker-engine-selinux/LICENSE delete mode 100644 vendor/github.com/docker/docker/contrib/syntax/vim/LICENSE delete mode 100644 vendor/github.com/docker/docker/docs/static_files/contributors.png delete mode 100755 vendor/github.com/docker/docker/hack/generate-authors.sh delete mode 120000 vendor/github.com/docker/docker/hack/make/.build-deb/docker-engine.docker.default delete mode 120000 vendor/github.com/docker/docker/hack/make/.build-deb/docker-engine.docker.init delete mode 120000 vendor/github.com/docker/docker/hack/make/.build-deb/docker-engine.docker.upstart delete mode 120000 vendor/github.com/docker/docker/hack/make/.build-deb/docker-engine.udev delete mode 100644 vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE delete mode 100644 vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD delete mode 100644 vendor/github.com/docker/docker/pkg/tlsconfig/tlsconfig_clone.go delete mode 100644 vendor/github.com/docker/docker/pkg/tlsconfig/tlsconfig_clone_go16.go delete mode 100644 vendor/github.com/docker/docker/pkg/tlsconfig/tlsconfig_clone_go17.go delete mode 120000 vendor/github.com/docker/docker/project/CONTRIBUTORS.md delete mode 100644 vendor/github.com/docker/go-connections/LICENSE delete mode 100644 vendor/github.com/docker/go-connections/nat/nat.go delete mode 100644 vendor/github.com/docker/go-connections/nat/parse.go delete mode 100644 vendor/github.com/docker/go-connections/nat/sort.go delete mode 100644 vendor/github.com/docker/go-connections/sockets/inmem_socket.go delete mode 100644 vendor/github.com/docker/go-connections/sockets/proxy.go delete mode 100644 vendor/github.com/docker/go-connections/sockets/sockets.go delete mode 100644 vendor/github.com/docker/go-connections/sockets/sockets_unix.go delete mode 100644 vendor/github.com/docker/go-connections/sockets/sockets_windows.go delete mode 100644 vendor/github.com/docker/go-connections/sockets/tcp_socket.go delete mode 100644 vendor/github.com/docker/go-connections/sockets/unix_socket.go delete mode 100644 vendor/github.com/docker/go-connections/tlsconfig/certpool_go17.go delete mode 100644 vendor/github.com/docker/go-connections/tlsconfig/certpool_other.go delete mode 100644 vendor/github.com/docker/go-connections/tlsconfig/config.go delete mode 100644 vendor/github.com/docker/go-connections/tlsconfig/config_client_ciphers.go delete mode 100644 vendor/github.com/docker/go-connections/tlsconfig/config_legacy_client_ciphers.go delete mode 100644 vendor/github.com/docker/go-units/LICENSE delete mode 100644 vendor/github.com/docker/go-units/duration.go delete mode 100644 vendor/github.com/docker/go-units/size.go delete mode 100644 vendor/github.com/docker/go-units/ulimit.go delete mode 100644 vendor/github.com/google/go-containerregistry/LICENSE delete mode 100644 vendor/github.com/google/go-containerregistry/cmd/ko/commands.go delete mode 100644 vendor/github.com/google/go-containerregistry/cmd/ko/config.go delete mode 100644 vendor/github.com/google/go-containerregistry/cmd/ko/filestuff.go delete mode 100644 vendor/github.com/google/go-containerregistry/cmd/ko/flatname.go delete mode 100644 vendor/github.com/google/go-containerregistry/cmd/ko/local.go delete mode 100644 vendor/github.com/google/go-containerregistry/cmd/ko/main.go delete mode 100644 vendor/github.com/google/go-containerregistry/cmd/ko/publish.go delete mode 100644 vendor/github.com/google/go-containerregistry/cmd/ko/resolve.go delete mode 120000 vendor/github.com/google/go-containerregistry/cmd/ko/test/kodata/kenobi delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/authn/anon.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/authn/auth.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/authn/authn.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/authn/basic.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/authn/bearer.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/authn/doc.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/authn/helper.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/authn/keychain.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/authn/multikeychain.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/ko/build/build.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/ko/build/doc.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/ko/build/gobuild.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/ko/build/options.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/ko/publish/daemon.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/ko/publish/default.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/ko/publish/doc.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/ko/publish/options.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/ko/publish/publish.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/ko/resolve/doc.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/ko/resolve/resolve.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/name/check.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/name/digest.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/name/errors.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/name/ref.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/name/registry.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/name/repository.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/name/tag.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/config.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/daemon/doc.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/daemon/image.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/daemon/options.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/daemon/write.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/doc.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/empty/doc.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/empty/image.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/hash.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/image.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/layer.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/manifest.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/mutate/doc.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/mutate/mutate.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/mutate/rebase.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/partial/compressed.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/partial/doc.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/partial/image.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/partial/uncompressed.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/partial/with.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/random/doc.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/random/image.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/remote/delete.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/remote/doc.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/remote/error.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/remote/image.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/remote/list.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/remote/mount.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/basic.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/bearer.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/doc.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/ping.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/scheme.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/scope.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/transport.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/remote/write.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/tarball/doc.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/tarball/image.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/tarball/write.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/types/types.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/v1util/and_closer.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/v1util/nop.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/v1util/verify.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/v1util/zip.go delete mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/zz_deepcopy_generated.go delete mode 100644 vendor/github.com/google/licenseclassifier/LICENSE delete mode 100644 vendor/github.com/google/licenseclassifier/classifier.go delete mode 100644 vendor/github.com/google/licenseclassifier/file_system_resources.go delete mode 100644 vendor/github.com/google/licenseclassifier/forbidden.go delete mode 100644 vendor/github.com/google/licenseclassifier/internal/sets/sets.go delete mode 100644 vendor/github.com/google/licenseclassifier/internal/sets/stringset.go delete mode 100644 vendor/github.com/google/licenseclassifier/license_type.go delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/Unlicense.txt delete mode 100644 vendor/github.com/google/licenseclassifier/licenses/licenses.db delete mode 100644 vendor/github.com/google/licenseclassifier/stringclassifier/LICENSE delete mode 100644 vendor/github.com/google/licenseclassifier/stringclassifier/classifier.go delete mode 100644 vendor/github.com/google/licenseclassifier/stringclassifier/internal/pq/priority.go delete mode 100644 vendor/github.com/google/licenseclassifier/stringclassifier/searchset/searchset.go delete mode 100644 vendor/github.com/google/licenseclassifier/stringclassifier/searchset/tokenizer/tokenizer.go delete mode 100644 vendor/github.com/google/licenseclassifier/tools/license_serializer/license_serializer.go delete mode 100644 vendor/github.com/hashicorp/hcl/LICENSE delete mode 100644 vendor/github.com/hashicorp/hcl/decoder.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/ast/ast.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/ast/walk.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/error.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/parser/parser.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/nodes.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/printer/printer.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/scanner/scanner.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/strconv/quote.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/token/position.go delete mode 100644 vendor/github.com/hashicorp/hcl/hcl/token/token.go delete mode 100644 vendor/github.com/hashicorp/hcl/json/parser/flatten.go delete mode 100644 vendor/github.com/hashicorp/hcl/json/parser/parser.go delete mode 100644 vendor/github.com/hashicorp/hcl/json/scanner/scanner.go delete mode 100644 vendor/github.com/hashicorp/hcl/json/token/position.go delete mode 100644 vendor/github.com/hashicorp/hcl/json/token/token.go delete mode 100644 vendor/github.com/hashicorp/hcl/lex.go delete mode 100644 vendor/github.com/hashicorp/hcl/parse.go delete mode 100644 vendor/github.com/inconshreveable/mousetrap/LICENSE delete mode 100644 vendor/github.com/inconshreveable/mousetrap/trap_others.go delete mode 100644 vendor/github.com/inconshreveable/mousetrap/trap_windows.go delete mode 100644 vendor/github.com/inconshreveable/mousetrap/trap_windows_1.4.go delete mode 100644 vendor/github.com/magiconair/properties/LICENSE delete mode 100644 vendor/github.com/magiconair/properties/decode.go delete mode 100644 vendor/github.com/magiconair/properties/doc.go delete mode 100644 vendor/github.com/magiconair/properties/integrate.go delete mode 100644 vendor/github.com/magiconair/properties/lex.go delete mode 100644 vendor/github.com/magiconair/properties/load.go delete mode 100644 vendor/github.com/magiconair/properties/parser.go delete mode 100644 vendor/github.com/magiconair/properties/properties.go delete mode 100644 vendor/github.com/magiconair/properties/rangecheck.go delete mode 100644 vendor/github.com/mattmoor/dep-collector/LICENSE delete mode 100644 vendor/github.com/mattmoor/dep-collector/imports.go delete mode 100644 vendor/github.com/mattmoor/dep-collector/licenses.go delete mode 100644 vendor/github.com/mattmoor/dep-collector/main.go delete mode 100644 vendor/github.com/mitchellh/mapstructure/LICENSE delete mode 100644 vendor/github.com/mitchellh/mapstructure/decode_hooks.go delete mode 100644 vendor/github.com/mitchellh/mapstructure/error.go delete mode 100644 vendor/github.com/mitchellh/mapstructure/mapstructure.go delete mode 100644 vendor/github.com/pelletier/go-toml/LICENSE delete mode 100644 vendor/github.com/pelletier/go-toml/doc.go delete mode 100644 vendor/github.com/pelletier/go-toml/fuzz.go delete mode 100644 vendor/github.com/pelletier/go-toml/keysparsing.go delete mode 100644 vendor/github.com/pelletier/go-toml/lexer.go delete mode 100644 vendor/github.com/pelletier/go-toml/marshal.go delete mode 100644 vendor/github.com/pelletier/go-toml/parser.go delete mode 100644 vendor/github.com/pelletier/go-toml/position.go delete mode 100644 vendor/github.com/pelletier/go-toml/token.go delete mode 100644 vendor/github.com/pelletier/go-toml/toml.go delete mode 100644 vendor/github.com/pelletier/go-toml/tomltree_create.go delete mode 100644 vendor/github.com/pelletier/go-toml/tomltree_write.go delete mode 100644 vendor/github.com/pkg/errors/LICENSE delete mode 100644 vendor/github.com/pkg/errors/errors.go delete mode 100644 vendor/github.com/pkg/errors/stack.go delete mode 100644 vendor/github.com/sergi/go-diff/AUTHORS delete mode 100644 vendor/github.com/sergi/go-diff/CONTRIBUTORS delete mode 100644 vendor/github.com/sergi/go-diff/LICENSE delete mode 100644 vendor/github.com/sergi/go-diff/diffmatchpatch/diff.go delete mode 100644 vendor/github.com/sergi/go-diff/diffmatchpatch/diffmatchpatch.go delete mode 100644 vendor/github.com/sergi/go-diff/diffmatchpatch/match.go delete mode 100644 vendor/github.com/sergi/go-diff/diffmatchpatch/mathutil.go delete mode 100644 vendor/github.com/sergi/go-diff/diffmatchpatch/patch.go delete mode 100644 vendor/github.com/sergi/go-diff/diffmatchpatch/stringutil.go delete mode 100644 vendor/github.com/spf13/afero/LICENSE.txt delete mode 100644 vendor/github.com/spf13/afero/afero.go delete mode 100644 vendor/github.com/spf13/afero/basepath.go delete mode 100644 vendor/github.com/spf13/afero/cacheOnReadFs.go delete mode 100644 vendor/github.com/spf13/afero/const_bsds.go delete mode 100644 vendor/github.com/spf13/afero/const_win_unix.go delete mode 100644 vendor/github.com/spf13/afero/copyOnWriteFs.go delete mode 100644 vendor/github.com/spf13/afero/httpFs.go delete mode 100644 vendor/github.com/spf13/afero/ioutil.go delete mode 100644 vendor/github.com/spf13/afero/lstater.go delete mode 100644 vendor/github.com/spf13/afero/match.go delete mode 100644 vendor/github.com/spf13/afero/mem/dir.go delete mode 100644 vendor/github.com/spf13/afero/mem/dirmap.go delete mode 100644 vendor/github.com/spf13/afero/mem/file.go delete mode 100644 vendor/github.com/spf13/afero/memmap.go delete mode 100644 vendor/github.com/spf13/afero/os.go delete mode 100644 vendor/github.com/spf13/afero/path.go delete mode 100644 vendor/github.com/spf13/afero/readonlyfs.go delete mode 100644 vendor/github.com/spf13/afero/regexpfs.go delete mode 100644 vendor/github.com/spf13/afero/unionFile.go delete mode 100644 vendor/github.com/spf13/afero/util.go delete mode 100644 vendor/github.com/spf13/cast/LICENSE delete mode 100644 vendor/github.com/spf13/cast/cast.go delete mode 100644 vendor/github.com/spf13/cast/caste.go delete mode 100644 vendor/github.com/spf13/cobra/LICENSE.txt delete mode 100644 vendor/github.com/spf13/cobra/args.go delete mode 100644 vendor/github.com/spf13/cobra/bash_completions.go delete mode 100644 vendor/github.com/spf13/cobra/cobra.go delete mode 100644 vendor/github.com/spf13/cobra/cobra/cmd/license_agpl.go delete mode 100644 vendor/github.com/spf13/cobra/cobra/cmd/license_apache_2.go delete mode 100644 vendor/github.com/spf13/cobra/cobra/cmd/license_bsd_clause_2.go delete mode 100644 vendor/github.com/spf13/cobra/cobra/cmd/license_bsd_clause_3.go delete mode 100644 vendor/github.com/spf13/cobra/cobra/cmd/license_gpl_2.go delete mode 100644 vendor/github.com/spf13/cobra/cobra/cmd/license_gpl_3.go delete mode 100644 vendor/github.com/spf13/cobra/cobra/cmd/license_lgpl.go delete mode 100644 vendor/github.com/spf13/cobra/cobra/cmd/license_mit.go delete mode 100644 vendor/github.com/spf13/cobra/cobra/cmd/licenses.go delete mode 100644 vendor/github.com/spf13/cobra/cobra/cmd/testdata/LICENSE.golden delete mode 100644 vendor/github.com/spf13/cobra/command.go delete mode 100644 vendor/github.com/spf13/cobra/command_notwin.go delete mode 100644 vendor/github.com/spf13/cobra/command_win.go delete mode 100644 vendor/github.com/spf13/cobra/zsh_completions.go delete mode 100644 vendor/github.com/spf13/jwalterweatherman/LICENSE delete mode 100644 vendor/github.com/spf13/jwalterweatherman/default_notepad.go delete mode 100644 vendor/github.com/spf13/jwalterweatherman/log_counter.go delete mode 100644 vendor/github.com/spf13/jwalterweatherman/notepad.go delete mode 100644 vendor/github.com/spf13/viper/LICENSE delete mode 100644 vendor/github.com/spf13/viper/flags.go delete mode 100644 vendor/github.com/spf13/viper/util.go delete mode 100644 vendor/github.com/spf13/viper/viper.go delete mode 100644 vendor/golang.org/x/net/proxy/direct.go delete mode 100644 vendor/golang.org/x/net/proxy/per_host.go delete mode 100644 vendor/golang.org/x/net/proxy/proxy.go delete mode 100644 vendor/golang.org/x/net/proxy/socks5.go delete mode 100644 vendor/golang.org/x/sync/AUTHORS delete mode 100644 vendor/golang.org/x/sync/CONTRIBUTORS delete mode 100644 vendor/golang.org/x/sync/LICENSE delete mode 100644 vendor/golang.org/x/sync/PATENTS delete mode 100644 vendor/golang.org/x/sync/errgroup/errgroup.go diff --git a/Gopkg.lock b/Gopkg.lock index 957eea36..4e1ed5f8 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -2,197 +2,136 @@ [[projects]] + digest = "1:218ae0d3f01ab221e2a62493a88e72189fb4941b22f60984277c22f664d34c46" name = "cloud.google.com/go" packages = ["compute/metadata"] + pruneopts = "NUT" revision = "050b16d2314d5fc3d4c9a51e4cd5c7468e77f162" version = "v0.17.0" [[projects]] + digest = "1:afba31ae00ba20bbad534fda5f2eae6d73f195770384f4f21e2609c295b9d417" name = "github.com/Azure/go-autorest" packages = [ "autorest", "autorest/adal", "autorest/azure", - "autorest/date" + "autorest/date", ] + pruneopts = "NUT" revision = "fc3b03a2d2d1f43fad3007038bd16f044f870722" version = "v9.10.0" [[projects]] - name = "github.com/Microsoft/go-winio" - packages = ["."] - revision = "7da180ee92d8bd8bb8c37fc560e673e6557c392f" - version = "v0.4.7" - -[[projects]] + digest = "1:a2c1d0e43bd3baaa071d1b9ed72c27d78169b2b269f71c105ac4ba34b1be4a39" name = "github.com/davecgh/go-spew" packages = ["spew"] + pruneopts = "NUT" revision = "346938d642f2ec3594ed81d874461961cd0faa76" version = "v1.1.0" [[projects]] + digest = "1:7a6852b35eb5bbc184561443762d225116ae630c26a7c4d90546619f1e7d2ad2" name = "github.com/dgrijalva/jwt-go" packages = ["."] + pruneopts = "NUT" revision = "06ea1031745cb8b3dab3f6a236daf2b0aa468b7e" version = "v3.2.0" [[projects]] - name = "github.com/docker/distribution" - packages = [ - "digest", - "reference" - ] - revision = "48294d928ced5dd9b378f7fd7c6f5da3ff3f2c89" - version = "v2.6.2" - -[[projects]] - name = "github.com/docker/docker" - packages = [ - "api/types", - "api/types/blkiodev", - "api/types/container", - "api/types/events", - "api/types/filters", - "api/types/mount", - "api/types/network", - "api/types/reference", - "api/types/registry", - "api/types/strslice", - "api/types/swarm", - "api/types/time", - "api/types/versions", - "api/types/volume", - "client", - "pkg/tlsconfig" - ] - revision = "092cba3727bb9b4a2f0e922cd6c0f93ea270e363" - version = "v1.13.1" - -[[projects]] - name = "github.com/docker/go-connections" - packages = [ - "nat", - "sockets", - "tlsconfig" - ] - revision = "3ede32e2033de7505e6500d6c868c2b9ed9f169d" - version = "v0.3.0" - -[[projects]] - name = "github.com/docker/go-units" - packages = ["."] - revision = "47565b4f722fb6ceae66b95f853feed578a4a51c" - version = "v0.3.3" - -[[projects]] + digest = "1:1b91ae0dc69a41d4c2ed23ea5cffb721ea63f5037ca4b81e6d6771fbb8f45129" name = "github.com/fsnotify/fsnotify" packages = ["."] + pruneopts = "NUT" revision = "c2828203cd70a50dcccfb2761f8b1f8ceef9a8e9" version = "v1.4.7" [[projects]] + digest = "1:abfe129dc92b16fbf0cc9d6336096a2823151756f62072a700eb10754141b38e" name = "github.com/ghodss/yaml" packages = ["."] + pruneopts = "NUT" revision = "73d445a93680fa1a78ae23a5839bad48f32ba1ee" [[projects]] branch = "v2" + digest = "1:13e704c08924325be00f96e47e7efe0bfddf0913cdfc237423c83f9b183ff590" name = "github.com/go-yaml/yaml" packages = ["."] + pruneopts = "NUT" revision = "d670f9405373e636a5a2765eea47fac0c9bc91a4" [[projects]] + digest = "1:26a5b0d17fc9534a39ab910cbe61ffa5059a9e608e1a0e3c2663d526b05f1081" name = "github.com/gogo/protobuf" packages = [ "proto", - "sortkeys" + "sortkeys", ] + pruneopts = "NUT" revision = "c0656edd0d9eab7c66d1eb0c568f9039345796f7" [[projects]] + digest = "1:78b8040ece2ff622580def2708b9eb0b2857711b6744c475439bf337e9c677ea" name = "github.com/golang/glog" packages = ["."] + pruneopts = "NUT" revision = "44145f04b68cf362d9c4df2182967c2275eaefed" [[projects]] + digest = "1:7672c206322f45b33fac1ae2cb899263533ce0adcc6481d207725560208ec84e" name = "github.com/golang/groupcache" packages = ["lru"] + pruneopts = "NUT" revision = "02826c3e79038b59d737d3b1c0a1d937f71a4433" [[projects]] + digest = "1:62c39e48b3af4ccc5f20819b3fc4b7aee88cf4b7e296c4be0168113e755adfaa" name = "github.com/golang/protobuf" packages = [ "proto", "ptypes", "ptypes/any", "ptypes/duration", - "ptypes/timestamp" + "ptypes/timestamp", ] + pruneopts = "NUT" revision = "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9" [[projects]] + digest = "1:21c8b3a5b2d66f5ba6731f12133ccbf970947a6f4e78f0d46b64c49f8a4034c1" name = "github.com/google/go-cmp" packages = [ "cmp", "cmp/internal/diff", "cmp/internal/function", - "cmp/internal/value" + "cmp/internal/value", ] + pruneopts = "NUT" revision = "3af367b6b30c263d47e8895973edcca9a49cf029" version = "v0.2.0" [[projects]] - name = "github.com/google/go-containerregistry" - packages = [ - "cmd/ko", - "pkg/authn", - "pkg/ko/build", - "pkg/ko/publish", - "pkg/ko/resolve", - "pkg/name", - "pkg/v1", - "pkg/v1/daemon", - "pkg/v1/empty", - "pkg/v1/mutate", - "pkg/v1/partial", - "pkg/v1/random", - "pkg/v1/remote", - "pkg/v1/remote/transport", - "pkg/v1/tarball", - "pkg/v1/types", - "pkg/v1/v1util" - ] - revision = "0eeba96f66fdd1873f2ec7f3764ee3b58c5a050c" - -[[projects]] + digest = "1:f9425215dccf1c63f659ec781ca46bc81804341821d0cd8d2459c5b58f8bd067" name = "github.com/google/gofuzz" packages = ["."] + pruneopts = "NUT" revision = "44d81051d367757e1c7c6a5a86423ece9afcf63c" [[projects]] - branch = "master" - name = "github.com/google/licenseclassifier" - packages = [ - ".", - "internal/sets", - "stringclassifier", - "stringclassifier/internal/pq", - "stringclassifier/searchset", - "stringclassifier/searchset/tokenizer" - ] - revision = "3c8ad1f0b0644b6646210ee9cf2f34ff907e2e18" - -[[projects]] + digest = "1:fc56ff1b4b04575628f199eb0bc60fa6ed8ff63196e290151a5031c6af5eaef4" name = "github.com/googleapis/gnostic" packages = [ "OpenAPIv2", "compiler", - "extensions" + "extensions", ] + pruneopts = "NUT" revision = "0c5108395e2debce0d731cf0287ddf7242066aba" [[projects]] branch = "master" + digest = "1:4dc485b85c4dd43ebc0258760edab229c6cce4d0ac0ca262bd93cf8456b24f26" name = "github.com/gophercloud/gophercloud" packages = [ ".", @@ -201,155 +140,84 @@ "openstack/identity/v2/tokens", "openstack/identity/v3/tokens", "openstack/utils", - "pagination" + "pagination", ] + pruneopts = "NUT" revision = "19d3956666f33e02b023e9a2299a7d428cd9768a" [[projects]] + digest = "1:475b179287e8afdcd352014b2c2500e67decdf63e66125e2129286873453e1cd" name = "github.com/hashicorp/golang-lru" packages = [ ".", - "simplelru" + "simplelru", ] + pruneopts = "NUT" revision = "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4" [[projects]] branch = "master" - name = "github.com/hashicorp/hcl" - packages = [ - ".", - "hcl/ast", - "hcl/parser", - "hcl/printer", - "hcl/scanner", - "hcl/strconv", - "hcl/token", - "json/parser", - "json/scanner", - "json/token" - ] - revision = "ef8a98b0bbce4a65b5aa4c368430a80ddc533168" - -[[projects]] - branch = "master" + digest = "1:b7f860847a1d71f925ba9385ed95f1ebc0abfeb418a78e219ab61f48fdfeffad" name = "github.com/howeyc/gopass" packages = ["."] + pruneopts = "NUT" revision = "bf9dde6d0d2c004a008c27aaee91170c786f6db8" [[projects]] + digest = "1:8f5fa95e43ab4a43056b7b65ec1614b4440f33bbfef2fa0a4d4707aedcb1a023" name = "github.com/imdario/mergo" packages = ["."] + pruneopts = "NUT" revision = "6633656539c1639d9d78127b7d47c622b5d7b6dc" -[[projects]] - name = "github.com/inconshreveable/mousetrap" - packages = ["."] - revision = "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75" - version = "v1.0" - [[projects]] branch = "master" + digest = "1:0dccfafe61a6185593a61043d268cb62a847a8a144eb7a1476cc4b519e976bb2" name = "github.com/josephburnett/k8sflag" packages = ["pkg/k8sflag"] + pruneopts = "NUT" revision = "eaf31dc5c82d361eba9d4a94739d6d67ddbb59c9" [[projects]] + digest = "1:a7838b8940394cc35f4d32b3bd9358872dffed8f8fff76c84b52a4468eae0494" name = "github.com/json-iterator/go" packages = ["."] + pruneopts = "NUT" revision = "13f86432b882000a51c6e610c620974462691a97" -[[projects]] - name = "github.com/magiconair/properties" - packages = ["."] - revision = "c2353362d570a7bfa228149c62842019201cfb71" - version = "v1.8.0" - [[projects]] branch = "master" + digest = "1:0e9bfc47ab9941ecc3344e580baca5deb4091177e84dd9773b48b38ec26b93d5" name = "github.com/mattbaird/jsonpatch" packages = ["."] + pruneopts = "NUT" revision = "81af80346b1a01caae0cbc27fd3c1ba5b11e189f" [[projects]] - branch = "master" - name = "github.com/mattmoor/dep-collector" - packages = ["."] - revision = "ea0470924d0dd9363ffae8936f88a22d28551685" - -[[projects]] - branch = "master" - name = "github.com/mitchellh/mapstructure" - packages = ["."] - revision = "bb74f1db0675b241733089d5a1faa5dd8b0ef57b" - -[[projects]] - name = "github.com/pelletier/go-toml" - packages = ["."] - revision = "acdc4509485b587f5e675510c4f2c63e90ff68a8" - version = "v1.1.0" - -[[projects]] - name = "github.com/pkg/errors" - packages = ["."] - revision = "645ef00459ed84a119197bfb8d8205042c6df63d" - version = "v0.8.0" - -[[projects]] - name = "github.com/sergi/go-diff" - packages = ["diffmatchpatch"] - revision = "1744e2970ca51c86172c8190fadad617561ed6e7" - version = "v1.0.0" - -[[projects]] - name = "github.com/spf13/afero" - packages = [ - ".", - "mem" - ] - revision = "63644898a8da0bc22138abf860edaf5277b6102e" - version = "v1.1.0" - -[[projects]] - name = "github.com/spf13/cast" - packages = ["."] - revision = "8965335b8c7107321228e3e3702cab9832751bac" - version = "v1.2.0" - -[[projects]] - name = "github.com/spf13/cobra" - packages = ["."] - revision = "615425954c3b0d9485a7027d4d451fdcdfdee84e" - -[[projects]] - branch = "master" - name = "github.com/spf13/jwalterweatherman" - packages = ["."] - revision = "7c0cea34c8ece3fbeb2b27ab9b59511d360fb394" - -[[projects]] + digest = "1:15e5c398fbd9d2c439b635a08ac161b13d04f0c2aa587fe256b65dc0c3efe8b7" name = "github.com/spf13/pflag" packages = ["."] + pruneopts = "NUT" revision = "583c0c0531f06d5278b7d917446061adc344b5cd" [[projects]] - name = "github.com/spf13/viper" - packages = ["."] - revision = "b5e8006cbee93ec955a89ab31e0e3ce3204f3736" - version = "v1.0.2" - -[[projects]] + digest = "1:22f696cee54865fb8e9ff91df7b633f6b8f22037a8015253c6b6a71ca82219c7" name = "go.uber.org/atomic" packages = ["."] + pruneopts = "NUT" revision = "1ea20fb1cbb1cc08cbd0d913a96dead89aa18289" version = "v1.3.2" [[projects]] + digest = "1:58ca93bdf81bac106ded02226b5395a0595d5346cdc4caa8d9c1f3a5f8f9976e" name = "go.uber.org/multierr" packages = ["."] + pruneopts = "NUT" revision = "3c4937480c32f4c13a875a1829af76c98ca3d40a" version = "v1.1.0" [[projects]] + digest = "1:a607c955b5f17d6320c592a1d3a39f6a63e8ded44f7990dc5846d0714cb32758" name = "go.uber.org/zap" packages = [ ".", @@ -357,17 +225,21 @@ "internal/bufferpool", "internal/color", "internal/exit", - "zapcore" + "zapcore", ] + pruneopts = "NUT" revision = "eeedf312bc6c57391d84767a4cd413f02a917974" version = "v1.8.0" [[projects]] + digest = "1:624a05c7c6ed502bf77364cd3d54631383dafc169982fddd8ee77b53c3d9cccf" name = "golang.org/x/crypto" packages = ["ssh/terminal"] + pruneopts = "NUT" revision = "81e90905daefcd6fd217b62423c0908922eadb30" [[projects]] + digest = "1:02ccbca876321f757c25b1cc794cb1c71362aa86c74fa31cf21c4688b114c088" name = "golang.org/x/net" packages = [ "context", @@ -376,37 +248,36 @@ "http2/hpack", "idna", "lex/httplex", - "proxy" ] + pruneopts = "NUT" revision = "1c05540f6879653db88113bc4a2b70aec4bd491f" [[projects]] branch = "master" + digest = "1:ba88eef443e86a78978bc7c6cbf56c12925983ef35f8d65fc3867186a6fcbbf3" name = "golang.org/x/oauth2" packages = [ ".", "google", "internal", "jws", - "jwt" + "jwt", ] + pruneopts = "NUT" revision = "30785a2c434e431ef7c507b54617d6a951d5f2b4" [[projects]] - branch = "master" - name = "golang.org/x/sync" - packages = ["errgroup"] - revision = "1d60e4601c6fd243af51cc01ddf169918a5407ca" - -[[projects]] + digest = "1:d80b37b725351dfdd74022614569420d65e377cf9bf1d58dbf91c3aacc1e27c6" name = "golang.org/x/sys" packages = [ "unix", - "windows" + "windows", ] + pruneopts = "NUT" revision = "95c6576299259db960f6c5b9b69ea52422860fce" [[projects]] + digest = "1:11e5ba605f499e37162cc8ca25fb16d6ff66fbfdbdc43c92d6f1351cde975413" name = "golang.org/x/text" packages = [ "internal/gen", @@ -417,37 +288,45 @@ "unicode/bidi", "unicode/cldr", "unicode/norm", - "unicode/rangetable" + "unicode/rangetable", ] + pruneopts = "NUT" revision = "b19bf474d317b857955b12035d2c5acb57ce8b01" [[projects]] branch = "master" + digest = "1:51a479a09b7ed06b7be5a854e27fcc328718ae0e5ad159f9ddeef12d0326c2e7" name = "golang.org/x/time" packages = ["rate"] + pruneopts = "NUT" revision = "26559e0f760e39c24d730d3224364aef164ee23f" [[projects]] branch = "master" + digest = "1:c765c0e7646900b1d5f1feecd2d255fcadd04ab9757ef792f5b5a4ffcb633407" name = "golang.org/x/tools" packages = [ "go/ast/astutil", - "imports" + "imports", ] + pruneopts = "NUT" revision = "66487607e2081c7c2af2281c62c14ee000d5024b" [[projects]] branch = "master" + digest = "1:6590c58c42372e30c8c272968f659e3c3aeaaef5bd6ec61edb3ad91563fe6a3d" name = "google.golang.org/api" packages = [ "cloudbuild/v1", "gensupport", "googleapi", - "googleapi/internal/uritemplates" + "googleapi/internal/uritemplates", ] + pruneopts = "NUT" revision = "37df4fabefb044819e927f44b8487d4cd926d06c" [[projects]] + digest = "1:91da4958962c8e23fbad8789970931a6bcc749bfbe242d3594dfea7b628ff275" name = "google.golang.org/appengine" packages = [ ".", @@ -459,24 +338,30 @@ "internal/modules", "internal/remote_api", "internal/urlfetch", - "urlfetch" + "urlfetch", ] + pruneopts = "NUT" revision = "150dc57a1b433e64154302bdc40b6bb8aefa313a" version = "v1.0.0" [[projects]] + digest = "1:ef72505cf098abdd34efeea032103377bec06abb61d8a06f002d5d296a4b1185" name = "gopkg.in/inf.v0" packages = ["."] + pruneopts = "NUT" revision = "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" version = "v0.9.0" [[projects]] + digest = "1:7c95b35057a0ff2e19f707173cc1a947fa43a6eb5c4d300d196ece0334046082" name = "gopkg.in/yaml.v2" packages = ["."] + pruneopts = "NUT" revision = "5420a8b6744d3b0345ab293f6fcba19c978f1183" version = "v2.2.1" [[projects]] + digest = "1:36ae04b23867e3463083190e8fd4e4d2d5f100d5de85c34adcd032a88aa6cd6c" name = "k8s.io/api" packages = [ "admission/v1beta1", @@ -507,12 +392,14 @@ "settings/v1alpha1", "storage/v1", "storage/v1alpha1", - "storage/v1beta1" + "storage/v1beta1", ] + pruneopts = "NUT" revision = "73d903622b7391f3312dcbac6483fed484e185f8" version = "kubernetes-1.10.0" [[projects]] + digest = "1:518603ea4c9bf5aec53a4b79853375e1fe8658187a61051ffa2e85b2d5779988" name = "k8s.io/apimachinery" packages = [ "pkg/api/errors", @@ -558,12 +445,14 @@ "pkg/version", "pkg/watch", "third_party/forked/golang/json", - "third_party/forked/golang/reflect" + "third_party/forked/golang/reflect", ] + pruneopts = "NUT" revision = "302974c03f7e50f16561ba237db776ab93594ef6" version = "kubernetes-1.10.0" [[projects]] + digest = "1:acf64214fece147b3358e6923ff86bd2ec12a26f15ff95a7899b485f90ac9682" name = "k8s.io/client-go" packages = [ "discovery", @@ -722,12 +611,14 @@ "util/integer", "util/jsonpath", "util/retry", - "util/workqueue" + "util/workqueue", ] + pruneopts = "NUT" revision = "23781f4d6632d88e869066eaebb743857aa1ef9b" version = "kubernetes-1.10.0" [[projects]] + digest = "1:c596bd35421a01775ada851941c83cae8a1d9ad7d5ff3af6422cad2da2e62d40" name = "k8s.io/code-generator" packages = [ "cmd/client-gen", @@ -748,13 +639,15 @@ "cmd/lister-gen", "cmd/lister-gen/args", "cmd/lister-gen/generators", - "pkg/util" + "pkg/util", ] + pruneopts = "T" revision = "7ead8f38b01cf8653249f5af80ce7b2c8aba12e2" version = "kubernetes-1.10.0" [[projects]] branch = "master" + digest = "1:cc02b96a3307a2b9534890fb6bc1c0427319aa8f9ffd6797ba97587fc8874f80" name = "k8s.io/gengo" packages = [ "args", @@ -764,18 +657,71 @@ "generator", "namer", "parser", - "types" + "types", ] + pruneopts = "NUT" revision = "8394c995ab8fbe52216f38d0e1a37de36d820528" [[projects]] + digest = "1:7d46c560bdf2e3d01268acf4f376480124d40718bebd4e7ed8f1eedc372480cf" name = "k8s.io/kube-openapi" packages = ["pkg/util/proto"] + pruneopts = "NUT" revision = "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1" [solve-meta] analyzer-name = "dep" analyzer-version = 1 - inputs-digest = "d3dd73501071c54164f1c2d55f3e2eda7e4a12c29bef05b2a5b5516bd95e8b3a" + input-imports = [ + "cloud.google.com/go/compute/metadata", + "github.com/go-yaml/yaml", + "github.com/golang/glog", + "github.com/google/go-cmp/cmp", + "github.com/josephburnett/k8sflag/pkg/k8sflag", + "github.com/mattbaird/jsonpatch", + "go.uber.org/zap", + "go.uber.org/zap/zapcore", + "golang.org/x/oauth2", + "golang.org/x/oauth2/google", + "google.golang.org/api/cloudbuild/v1", + "k8s.io/api/admission/v1beta1", + "k8s.io/api/admissionregistration/v1beta1", + "k8s.io/api/core/v1", + "k8s.io/api/extensions/v1beta1", + "k8s.io/apimachinery/pkg/api/errors", + "k8s.io/apimachinery/pkg/apimachinery/registered", + "k8s.io/apimachinery/pkg/apis/meta/v1", + "k8s.io/apimachinery/pkg/fields", + "k8s.io/apimachinery/pkg/labels", + "k8s.io/apimachinery/pkg/runtime", + "k8s.io/apimachinery/pkg/runtime/schema", + "k8s.io/apimachinery/pkg/runtime/serializer", + "k8s.io/apimachinery/pkg/types", + "k8s.io/apimachinery/pkg/util/runtime", + "k8s.io/apimachinery/pkg/util/sets/types", + "k8s.io/apimachinery/pkg/util/wait", + "k8s.io/apimachinery/pkg/watch", + "k8s.io/client-go/discovery", + "k8s.io/client-go/discovery/fake", + "k8s.io/client-go/informers", + "k8s.io/client-go/kubernetes", + "k8s.io/client-go/kubernetes/fake", + "k8s.io/client-go/kubernetes/scheme", + "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1", + "k8s.io/client-go/kubernetes/typed/core/v1", + "k8s.io/client-go/plugin/pkg/client/auth", + "k8s.io/client-go/rest", + "k8s.io/client-go/testing", + "k8s.io/client-go/tools/cache", + "k8s.io/client-go/tools/clientcmd", + "k8s.io/client-go/tools/record", + "k8s.io/client-go/util/flowcontrol", + "k8s.io/client-go/util/workqueue", + "k8s.io/code-generator/cmd/client-gen", + "k8s.io/code-generator/cmd/deepcopy-gen", + "k8s.io/code-generator/cmd/defaulter-gen", + "k8s.io/code-generator/cmd/informer-gen", + "k8s.io/code-generator/cmd/lister-gen", + ] solver-name = "gps-cdcl" solver-version = 1 diff --git a/Gopkg.toml b/Gopkg.toml index 46b4e2f8..7f2e0754 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -45,11 +45,6 @@ required = [ name = "k8s.io/client-go" version = "kubernetes-1.10.0" -[[constraint]] - name = "github.com/google/go-containerregistry" - # HEAD as of 2018-07-19 - revision = "0eeba96f66fdd1873f2ec7f3764ee3b58c5a050c" - [prune] go-tests = true unused-packages = true diff --git a/vendor/github.com/Microsoft/go-winio/LICENSE b/vendor/github.com/Microsoft/go-winio/LICENSE deleted file mode 100644 index b8b569d7..00000000 --- a/vendor/github.com/Microsoft/go-winio/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - diff --git a/vendor/github.com/Microsoft/go-winio/archive/tar/LICENSE b/vendor/github.com/Microsoft/go-winio/archive/tar/LICENSE deleted file mode 100644 index 74487567..00000000 --- a/vendor/github.com/Microsoft/go-winio/archive/tar/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2012 The Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/Microsoft/go-winio/backup.go b/vendor/github.com/Microsoft/go-winio/backup.go deleted file mode 100644 index 2be34af4..00000000 --- a/vendor/github.com/Microsoft/go-winio/backup.go +++ /dev/null @@ -1,280 +0,0 @@ -// +build windows - -package winio - -import ( - "encoding/binary" - "errors" - "fmt" - "io" - "io/ioutil" - "os" - "runtime" - "syscall" - "unicode/utf16" -) - -//sys backupRead(h syscall.Handle, b []byte, bytesRead *uint32, abort bool, processSecurity bool, context *uintptr) (err error) = BackupRead -//sys backupWrite(h syscall.Handle, b []byte, bytesWritten *uint32, abort bool, processSecurity bool, context *uintptr) (err error) = BackupWrite - -const ( - BackupData = uint32(iota + 1) - BackupEaData - BackupSecurity - BackupAlternateData - BackupLink - BackupPropertyData - BackupObjectId - BackupReparseData - BackupSparseBlock - BackupTxfsData -) - -const ( - StreamSparseAttributes = uint32(8) -) - -const ( - WRITE_DAC = 0x40000 - WRITE_OWNER = 0x80000 - ACCESS_SYSTEM_SECURITY = 0x1000000 -) - -// BackupHeader represents a backup stream of a file. -type BackupHeader struct { - Id uint32 // The backup stream ID - Attributes uint32 // Stream attributes - Size int64 // The size of the stream in bytes - Name string // The name of the stream (for BackupAlternateData only). - Offset int64 // The offset of the stream in the file (for BackupSparseBlock only). -} - -type win32StreamId struct { - StreamId uint32 - Attributes uint32 - Size uint64 - NameSize uint32 -} - -// BackupStreamReader reads from a stream produced by the BackupRead Win32 API and produces a series -// of BackupHeader values. -type BackupStreamReader struct { - r io.Reader - bytesLeft int64 -} - -// NewBackupStreamReader produces a BackupStreamReader from any io.Reader. -func NewBackupStreamReader(r io.Reader) *BackupStreamReader { - return &BackupStreamReader{r, 0} -} - -// Next returns the next backup stream and prepares for calls to Read(). It skips the remainder of the current stream if -// it was not completely read. -func (r *BackupStreamReader) Next() (*BackupHeader, error) { - if r.bytesLeft > 0 { - if s, ok := r.r.(io.Seeker); ok { - // Make sure Seek on io.SeekCurrent sometimes succeeds - // before trying the actual seek. - if _, err := s.Seek(0, io.SeekCurrent); err == nil { - if _, err = s.Seek(r.bytesLeft, io.SeekCurrent); err != nil { - return nil, err - } - r.bytesLeft = 0 - } - } - if _, err := io.Copy(ioutil.Discard, r); err != nil { - return nil, err - } - } - var wsi win32StreamId - if err := binary.Read(r.r, binary.LittleEndian, &wsi); err != nil { - return nil, err - } - hdr := &BackupHeader{ - Id: wsi.StreamId, - Attributes: wsi.Attributes, - Size: int64(wsi.Size), - } - if wsi.NameSize != 0 { - name := make([]uint16, int(wsi.NameSize/2)) - if err := binary.Read(r.r, binary.LittleEndian, name); err != nil { - return nil, err - } - hdr.Name = syscall.UTF16ToString(name) - } - if wsi.StreamId == BackupSparseBlock { - if err := binary.Read(r.r, binary.LittleEndian, &hdr.Offset); err != nil { - return nil, err - } - hdr.Size -= 8 - } - r.bytesLeft = hdr.Size - return hdr, nil -} - -// Read reads from the current backup stream. -func (r *BackupStreamReader) Read(b []byte) (int, error) { - if r.bytesLeft == 0 { - return 0, io.EOF - } - if int64(len(b)) > r.bytesLeft { - b = b[:r.bytesLeft] - } - n, err := r.r.Read(b) - r.bytesLeft -= int64(n) - if err == io.EOF { - err = io.ErrUnexpectedEOF - } else if r.bytesLeft == 0 && err == nil { - err = io.EOF - } - return n, err -} - -// BackupStreamWriter writes a stream compatible with the BackupWrite Win32 API. -type BackupStreamWriter struct { - w io.Writer - bytesLeft int64 -} - -// NewBackupStreamWriter produces a BackupStreamWriter on top of an io.Writer. -func NewBackupStreamWriter(w io.Writer) *BackupStreamWriter { - return &BackupStreamWriter{w, 0} -} - -// WriteHeader writes the next backup stream header and prepares for calls to Write(). -func (w *BackupStreamWriter) WriteHeader(hdr *BackupHeader) error { - if w.bytesLeft != 0 { - return fmt.Errorf("missing %d bytes", w.bytesLeft) - } - name := utf16.Encode([]rune(hdr.Name)) - wsi := win32StreamId{ - StreamId: hdr.Id, - Attributes: hdr.Attributes, - Size: uint64(hdr.Size), - NameSize: uint32(len(name) * 2), - } - if hdr.Id == BackupSparseBlock { - // Include space for the int64 block offset - wsi.Size += 8 - } - if err := binary.Write(w.w, binary.LittleEndian, &wsi); err != nil { - return err - } - if len(name) != 0 { - if err := binary.Write(w.w, binary.LittleEndian, name); err != nil { - return err - } - } - if hdr.Id == BackupSparseBlock { - if err := binary.Write(w.w, binary.LittleEndian, hdr.Offset); err != nil { - return err - } - } - w.bytesLeft = hdr.Size - return nil -} - -// Write writes to the current backup stream. -func (w *BackupStreamWriter) Write(b []byte) (int, error) { - if w.bytesLeft < int64(len(b)) { - return 0, fmt.Errorf("too many bytes by %d", int64(len(b))-w.bytesLeft) - } - n, err := w.w.Write(b) - w.bytesLeft -= int64(n) - return n, err -} - -// BackupFileReader provides an io.ReadCloser interface on top of the BackupRead Win32 API. -type BackupFileReader struct { - f *os.File - includeSecurity bool - ctx uintptr -} - -// NewBackupFileReader returns a new BackupFileReader from a file handle. If includeSecurity is true, -// Read will attempt to read the security descriptor of the file. -func NewBackupFileReader(f *os.File, includeSecurity bool) *BackupFileReader { - r := &BackupFileReader{f, includeSecurity, 0} - return r -} - -// Read reads a backup stream from the file by calling the Win32 API BackupRead(). -func (r *BackupFileReader) Read(b []byte) (int, error) { - var bytesRead uint32 - err := backupRead(syscall.Handle(r.f.Fd()), b, &bytesRead, false, r.includeSecurity, &r.ctx) - if err != nil { - return 0, &os.PathError{"BackupRead", r.f.Name(), err} - } - runtime.KeepAlive(r.f) - if bytesRead == 0 { - return 0, io.EOF - } - return int(bytesRead), nil -} - -// Close frees Win32 resources associated with the BackupFileReader. It does not close -// the underlying file. -func (r *BackupFileReader) Close() error { - if r.ctx != 0 { - backupRead(syscall.Handle(r.f.Fd()), nil, nil, true, false, &r.ctx) - runtime.KeepAlive(r.f) - r.ctx = 0 - } - return nil -} - -// BackupFileWriter provides an io.WriteCloser interface on top of the BackupWrite Win32 API. -type BackupFileWriter struct { - f *os.File - includeSecurity bool - ctx uintptr -} - -// NewBackupFileWriter returns a new BackupFileWriter from a file handle. If includeSecurity is true, -// Write() will attempt to restore the security descriptor from the stream. -func NewBackupFileWriter(f *os.File, includeSecurity bool) *BackupFileWriter { - w := &BackupFileWriter{f, includeSecurity, 0} - return w -} - -// Write restores a portion of the file using the provided backup stream. -func (w *BackupFileWriter) Write(b []byte) (int, error) { - var bytesWritten uint32 - err := backupWrite(syscall.Handle(w.f.Fd()), b, &bytesWritten, false, w.includeSecurity, &w.ctx) - if err != nil { - return 0, &os.PathError{"BackupWrite", w.f.Name(), err} - } - runtime.KeepAlive(w.f) - if int(bytesWritten) != len(b) { - return int(bytesWritten), errors.New("not all bytes could be written") - } - return len(b), nil -} - -// Close frees Win32 resources associated with the BackupFileWriter. It does not -// close the underlying file. -func (w *BackupFileWriter) Close() error { - if w.ctx != 0 { - backupWrite(syscall.Handle(w.f.Fd()), nil, nil, true, false, &w.ctx) - runtime.KeepAlive(w.f) - w.ctx = 0 - } - return nil -} - -// OpenForBackup opens a file or directory, potentially skipping access checks if the backup -// or restore privileges have been acquired. -// -// If the file opened was a directory, it cannot be used with Readdir(). -func OpenForBackup(path string, access uint32, share uint32, createmode uint32) (*os.File, error) { - winPath, err := syscall.UTF16FromString(path) - if err != nil { - return nil, err - } - h, err := syscall.CreateFile(&winPath[0], access, share, nil, createmode, syscall.FILE_FLAG_BACKUP_SEMANTICS|syscall.FILE_FLAG_OPEN_REPARSE_POINT, 0) - if err != nil { - err = &os.PathError{Op: "open", Path: path, Err: err} - return nil, err - } - return os.NewFile(uintptr(h), path), nil -} diff --git a/vendor/github.com/Microsoft/go-winio/ea.go b/vendor/github.com/Microsoft/go-winio/ea.go deleted file mode 100644 index b37e930d..00000000 --- a/vendor/github.com/Microsoft/go-winio/ea.go +++ /dev/null @@ -1,137 +0,0 @@ -package winio - -import ( - "bytes" - "encoding/binary" - "errors" -) - -type fileFullEaInformation struct { - NextEntryOffset uint32 - Flags uint8 - NameLength uint8 - ValueLength uint16 -} - -var ( - fileFullEaInformationSize = binary.Size(&fileFullEaInformation{}) - - errInvalidEaBuffer = errors.New("invalid extended attribute buffer") - errEaNameTooLarge = errors.New("extended attribute name too large") - errEaValueTooLarge = errors.New("extended attribute value too large") -) - -// ExtendedAttribute represents a single Windows EA. -type ExtendedAttribute struct { - Name string - Value []byte - Flags uint8 -} - -func parseEa(b []byte) (ea ExtendedAttribute, nb []byte, err error) { - var info fileFullEaInformation - err = binary.Read(bytes.NewReader(b), binary.LittleEndian, &info) - if err != nil { - err = errInvalidEaBuffer - return - } - - nameOffset := fileFullEaInformationSize - nameLen := int(info.NameLength) - valueOffset := nameOffset + int(info.NameLength) + 1 - valueLen := int(info.ValueLength) - nextOffset := int(info.NextEntryOffset) - if valueLen+valueOffset > len(b) || nextOffset < 0 || nextOffset > len(b) { - err = errInvalidEaBuffer - return - } - - ea.Name = string(b[nameOffset : nameOffset+nameLen]) - ea.Value = b[valueOffset : valueOffset+valueLen] - ea.Flags = info.Flags - if info.NextEntryOffset != 0 { - nb = b[info.NextEntryOffset:] - } - return -} - -// DecodeExtendedAttributes decodes a list of EAs from a FILE_FULL_EA_INFORMATION -// buffer retrieved from BackupRead, ZwQueryEaFile, etc. -func DecodeExtendedAttributes(b []byte) (eas []ExtendedAttribute, err error) { - for len(b) != 0 { - ea, nb, err := parseEa(b) - if err != nil { - return nil, err - } - - eas = append(eas, ea) - b = nb - } - return -} - -func writeEa(buf *bytes.Buffer, ea *ExtendedAttribute, last bool) error { - if int(uint8(len(ea.Name))) != len(ea.Name) { - return errEaNameTooLarge - } - if int(uint16(len(ea.Value))) != len(ea.Value) { - return errEaValueTooLarge - } - entrySize := uint32(fileFullEaInformationSize + len(ea.Name) + 1 + len(ea.Value)) - withPadding := (entrySize + 3) &^ 3 - nextOffset := uint32(0) - if !last { - nextOffset = withPadding - } - info := fileFullEaInformation{ - NextEntryOffset: nextOffset, - Flags: ea.Flags, - NameLength: uint8(len(ea.Name)), - ValueLength: uint16(len(ea.Value)), - } - - err := binary.Write(buf, binary.LittleEndian, &info) - if err != nil { - return err - } - - _, err = buf.Write([]byte(ea.Name)) - if err != nil { - return err - } - - err = buf.WriteByte(0) - if err != nil { - return err - } - - _, err = buf.Write(ea.Value) - if err != nil { - return err - } - - _, err = buf.Write([]byte{0, 0, 0}[0 : withPadding-entrySize]) - if err != nil { - return err - } - - return nil -} - -// EncodeExtendedAttributes encodes a list of EAs into a FILE_FULL_EA_INFORMATION -// buffer for use with BackupWrite, ZwSetEaFile, etc. -func EncodeExtendedAttributes(eas []ExtendedAttribute) ([]byte, error) { - var buf bytes.Buffer - for i := range eas { - last := false - if i == len(eas)-1 { - last = true - } - - err := writeEa(&buf, &eas[i], last) - if err != nil { - return nil, err - } - } - return buf.Bytes(), nil -} diff --git a/vendor/github.com/Microsoft/go-winio/file.go b/vendor/github.com/Microsoft/go-winio/file.go deleted file mode 100644 index 4334ff1c..00000000 --- a/vendor/github.com/Microsoft/go-winio/file.go +++ /dev/null @@ -1,307 +0,0 @@ -// +build windows - -package winio - -import ( - "errors" - "io" - "runtime" - "sync" - "sync/atomic" - "syscall" - "time" -) - -//sys cancelIoEx(file syscall.Handle, o *syscall.Overlapped) (err error) = CancelIoEx -//sys createIoCompletionPort(file syscall.Handle, port syscall.Handle, key uintptr, threadCount uint32) (newport syscall.Handle, err error) = CreateIoCompletionPort -//sys getQueuedCompletionStatus(port syscall.Handle, bytes *uint32, key *uintptr, o **ioOperation, timeout uint32) (err error) = GetQueuedCompletionStatus -//sys setFileCompletionNotificationModes(h syscall.Handle, flags uint8) (err error) = SetFileCompletionNotificationModes - -type atomicBool int32 - -func (b *atomicBool) isSet() bool { return atomic.LoadInt32((*int32)(b)) != 0 } -func (b *atomicBool) setFalse() { atomic.StoreInt32((*int32)(b), 0) } -func (b *atomicBool) setTrue() { atomic.StoreInt32((*int32)(b), 1) } -func (b *atomicBool) swap(new bool) bool { - var newInt int32 - if new { - newInt = 1 - } - return atomic.SwapInt32((*int32)(b), newInt) == 1 -} - -const ( - cFILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1 - cFILE_SKIP_SET_EVENT_ON_HANDLE = 2 -) - -var ( - ErrFileClosed = errors.New("file has already been closed") - ErrTimeout = &timeoutError{} -) - -type timeoutError struct{} - -func (e *timeoutError) Error() string { return "i/o timeout" } -func (e *timeoutError) Timeout() bool { return true } -func (e *timeoutError) Temporary() bool { return true } - -type timeoutChan chan struct{} - -var ioInitOnce sync.Once -var ioCompletionPort syscall.Handle - -// ioResult contains the result of an asynchronous IO operation -type ioResult struct { - bytes uint32 - err error -} - -// ioOperation represents an outstanding asynchronous Win32 IO -type ioOperation struct { - o syscall.Overlapped - ch chan ioResult -} - -func initIo() { - h, err := createIoCompletionPort(syscall.InvalidHandle, 0, 0, 0xffffffff) - if err != nil { - panic(err) - } - ioCompletionPort = h - go ioCompletionProcessor(h) -} - -// win32File implements Reader, Writer, and Closer on a Win32 handle without blocking in a syscall. -// It takes ownership of this handle and will close it if it is garbage collected. -type win32File struct { - handle syscall.Handle - wg sync.WaitGroup - wgLock sync.RWMutex - closing atomicBool - readDeadline deadlineHandler - writeDeadline deadlineHandler -} - -type deadlineHandler struct { - setLock sync.Mutex - channel timeoutChan - channelLock sync.RWMutex - timer *time.Timer - timedout atomicBool -} - -// makeWin32File makes a new win32File from an existing file handle -func makeWin32File(h syscall.Handle) (*win32File, error) { - f := &win32File{handle: h} - ioInitOnce.Do(initIo) - _, err := createIoCompletionPort(h, ioCompletionPort, 0, 0xffffffff) - if err != nil { - return nil, err - } - err = setFileCompletionNotificationModes(h, cFILE_SKIP_COMPLETION_PORT_ON_SUCCESS|cFILE_SKIP_SET_EVENT_ON_HANDLE) - if err != nil { - return nil, err - } - f.readDeadline.channel = make(timeoutChan) - f.writeDeadline.channel = make(timeoutChan) - return f, nil -} - -func MakeOpenFile(h syscall.Handle) (io.ReadWriteCloser, error) { - return makeWin32File(h) -} - -// closeHandle closes the resources associated with a Win32 handle -func (f *win32File) closeHandle() { - f.wgLock.Lock() - // Atomically set that we are closing, releasing the resources only once. - if !f.closing.swap(true) { - f.wgLock.Unlock() - // cancel all IO and wait for it to complete - cancelIoEx(f.handle, nil) - f.wg.Wait() - // at this point, no new IO can start - syscall.Close(f.handle) - f.handle = 0 - } else { - f.wgLock.Unlock() - } -} - -// Close closes a win32File. -func (f *win32File) Close() error { - f.closeHandle() - return nil -} - -// prepareIo prepares for a new IO operation. -// The caller must call f.wg.Done() when the IO is finished, prior to Close() returning. -func (f *win32File) prepareIo() (*ioOperation, error) { - f.wgLock.RLock() - if f.closing.isSet() { - f.wgLock.RUnlock() - return nil, ErrFileClosed - } - f.wg.Add(1) - f.wgLock.RUnlock() - c := &ioOperation{} - c.ch = make(chan ioResult) - return c, nil -} - -// ioCompletionProcessor processes completed async IOs forever -func ioCompletionProcessor(h syscall.Handle) { - for { - var bytes uint32 - var key uintptr - var op *ioOperation - err := getQueuedCompletionStatus(h, &bytes, &key, &op, syscall.INFINITE) - if op == nil { - panic(err) - } - op.ch <- ioResult{bytes, err} - } -} - -// asyncIo processes the return value from ReadFile or WriteFile, blocking until -// the operation has actually completed. -func (f *win32File) asyncIo(c *ioOperation, d *deadlineHandler, bytes uint32, err error) (int, error) { - if err != syscall.ERROR_IO_PENDING { - return int(bytes), err - } - - if f.closing.isSet() { - cancelIoEx(f.handle, &c.o) - } - - var timeout timeoutChan - if d != nil { - d.channelLock.Lock() - timeout = d.channel - d.channelLock.Unlock() - } - - var r ioResult - select { - case r = <-c.ch: - err = r.err - if err == syscall.ERROR_OPERATION_ABORTED { - if f.closing.isSet() { - err = ErrFileClosed - } - } - case <-timeout: - cancelIoEx(f.handle, &c.o) - r = <-c.ch - err = r.err - if err == syscall.ERROR_OPERATION_ABORTED { - err = ErrTimeout - } - } - - // runtime.KeepAlive is needed, as c is passed via native - // code to ioCompletionProcessor, c must remain alive - // until the channel read is complete. - runtime.KeepAlive(c) - return int(r.bytes), err -} - -// Read reads from a file handle. -func (f *win32File) Read(b []byte) (int, error) { - c, err := f.prepareIo() - if err != nil { - return 0, err - } - defer f.wg.Done() - - if f.readDeadline.timedout.isSet() { - return 0, ErrTimeout - } - - var bytes uint32 - err = syscall.ReadFile(f.handle, b, &bytes, &c.o) - n, err := f.asyncIo(c, &f.readDeadline, bytes, err) - runtime.KeepAlive(b) - - // Handle EOF conditions. - if err == nil && n == 0 && len(b) != 0 { - return 0, io.EOF - } else if err == syscall.ERROR_BROKEN_PIPE { - return 0, io.EOF - } else { - return n, err - } -} - -// Write writes to a file handle. -func (f *win32File) Write(b []byte) (int, error) { - c, err := f.prepareIo() - if err != nil { - return 0, err - } - defer f.wg.Done() - - if f.writeDeadline.timedout.isSet() { - return 0, ErrTimeout - } - - var bytes uint32 - err = syscall.WriteFile(f.handle, b, &bytes, &c.o) - n, err := f.asyncIo(c, &f.writeDeadline, bytes, err) - runtime.KeepAlive(b) - return n, err -} - -func (f *win32File) SetReadDeadline(deadline time.Time) error { - return f.readDeadline.set(deadline) -} - -func (f *win32File) SetWriteDeadline(deadline time.Time) error { - return f.writeDeadline.set(deadline) -} - -func (f *win32File) Flush() error { - return syscall.FlushFileBuffers(f.handle) -} - -func (d *deadlineHandler) set(deadline time.Time) error { - d.setLock.Lock() - defer d.setLock.Unlock() - - if d.timer != nil { - if !d.timer.Stop() { - <-d.channel - } - d.timer = nil - } - d.timedout.setFalse() - - select { - case <-d.channel: - d.channelLock.Lock() - d.channel = make(chan struct{}) - d.channelLock.Unlock() - default: - } - - if deadline.IsZero() { - return nil - } - - timeoutIO := func() { - d.timedout.setTrue() - close(d.channel) - } - - now := time.Now() - duration := deadline.Sub(now) - if deadline.After(now) { - // Deadline is in the future, set a timer to wait - d.timer = time.AfterFunc(duration, timeoutIO) - } else { - // Deadline is in the past. Cancel all pending IO now. - timeoutIO() - } - return nil -} diff --git a/vendor/github.com/Microsoft/go-winio/fileinfo.go b/vendor/github.com/Microsoft/go-winio/fileinfo.go deleted file mode 100644 index b1d60abb..00000000 --- a/vendor/github.com/Microsoft/go-winio/fileinfo.go +++ /dev/null @@ -1,60 +0,0 @@ -// +build windows - -package winio - -import ( - "os" - "runtime" - "syscall" - "unsafe" -) - -//sys getFileInformationByHandleEx(h syscall.Handle, class uint32, buffer *byte, size uint32) (err error) = GetFileInformationByHandleEx -//sys setFileInformationByHandle(h syscall.Handle, class uint32, buffer *byte, size uint32) (err error) = SetFileInformationByHandle - -const ( - fileBasicInfo = 0 - fileIDInfo = 0x12 -) - -// FileBasicInfo contains file access time and file attributes information. -type FileBasicInfo struct { - CreationTime, LastAccessTime, LastWriteTime, ChangeTime syscall.Filetime - FileAttributes uintptr // includes padding -} - -// GetFileBasicInfo retrieves times and attributes for a file. -func GetFileBasicInfo(f *os.File) (*FileBasicInfo, error) { - bi := &FileBasicInfo{} - if err := getFileInformationByHandleEx(syscall.Handle(f.Fd()), fileBasicInfo, (*byte)(unsafe.Pointer(bi)), uint32(unsafe.Sizeof(*bi))); err != nil { - return nil, &os.PathError{Op: "GetFileInformationByHandleEx", Path: f.Name(), Err: err} - } - runtime.KeepAlive(f) - return bi, nil -} - -// SetFileBasicInfo sets times and attributes for a file. -func SetFileBasicInfo(f *os.File, bi *FileBasicInfo) error { - if err := setFileInformationByHandle(syscall.Handle(f.Fd()), fileBasicInfo, (*byte)(unsafe.Pointer(bi)), uint32(unsafe.Sizeof(*bi))); err != nil { - return &os.PathError{Op: "SetFileInformationByHandle", Path: f.Name(), Err: err} - } - runtime.KeepAlive(f) - return nil -} - -// FileIDInfo contains the volume serial number and file ID for a file. This pair should be -// unique on a system. -type FileIDInfo struct { - VolumeSerialNumber uint64 - FileID [16]byte -} - -// GetFileID retrieves the unique (volume, file ID) pair for a file. -func GetFileID(f *os.File) (*FileIDInfo, error) { - fileID := &FileIDInfo{} - if err := getFileInformationByHandleEx(syscall.Handle(f.Fd()), fileIDInfo, (*byte)(unsafe.Pointer(fileID)), uint32(unsafe.Sizeof(*fileID))); err != nil { - return nil, &os.PathError{Op: "GetFileInformationByHandleEx", Path: f.Name(), Err: err} - } - runtime.KeepAlive(f) - return fileID, nil -} diff --git a/vendor/github.com/Microsoft/go-winio/pipe.go b/vendor/github.com/Microsoft/go-winio/pipe.go deleted file mode 100644 index 82cbe7af..00000000 --- a/vendor/github.com/Microsoft/go-winio/pipe.go +++ /dev/null @@ -1,424 +0,0 @@ -// +build windows - -package winio - -import ( - "errors" - "io" - "net" - "os" - "syscall" - "time" - "unsafe" -) - -//sys connectNamedPipe(pipe syscall.Handle, o *syscall.Overlapped) (err error) = ConnectNamedPipe -//sys createNamedPipe(name string, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *syscall.SecurityAttributes) (handle syscall.Handle, err error) [failretval==syscall.InvalidHandle] = CreateNamedPipeW -//sys createFile(name string, access uint32, mode uint32, sa *syscall.SecurityAttributes, createmode uint32, attrs uint32, templatefile syscall.Handle) (handle syscall.Handle, err error) [failretval==syscall.InvalidHandle] = CreateFileW -//sys waitNamedPipe(name string, timeout uint32) (err error) = WaitNamedPipeW -//sys getNamedPipeInfo(pipe syscall.Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) = GetNamedPipeInfo -//sys getNamedPipeHandleState(pipe syscall.Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW -//sys localAlloc(uFlags uint32, length uint32) (ptr uintptr) = LocalAlloc - -const ( - cERROR_PIPE_BUSY = syscall.Errno(231) - cERROR_NO_DATA = syscall.Errno(232) - cERROR_PIPE_CONNECTED = syscall.Errno(535) - cERROR_SEM_TIMEOUT = syscall.Errno(121) - - cPIPE_ACCESS_DUPLEX = 0x3 - cFILE_FLAG_FIRST_PIPE_INSTANCE = 0x80000 - cSECURITY_SQOS_PRESENT = 0x100000 - cSECURITY_ANONYMOUS = 0 - - cPIPE_REJECT_REMOTE_CLIENTS = 0x8 - - cPIPE_UNLIMITED_INSTANCES = 255 - - cNMPWAIT_USE_DEFAULT_WAIT = 0 - cNMPWAIT_NOWAIT = 1 - - cPIPE_TYPE_MESSAGE = 4 - - cPIPE_READMODE_MESSAGE = 2 -) - -var ( - // ErrPipeListenerClosed is returned for pipe operations on listeners that have been closed. - // This error should match net.errClosing since docker takes a dependency on its text. - ErrPipeListenerClosed = errors.New("use of closed network connection") - - errPipeWriteClosed = errors.New("pipe has been closed for write") -) - -type win32Pipe struct { - *win32File - path string -} - -type win32MessageBytePipe struct { - win32Pipe - writeClosed bool - readEOF bool -} - -type pipeAddress string - -func (f *win32Pipe) LocalAddr() net.Addr { - return pipeAddress(f.path) -} - -func (f *win32Pipe) RemoteAddr() net.Addr { - return pipeAddress(f.path) -} - -func (f *win32Pipe) SetDeadline(t time.Time) error { - f.SetReadDeadline(t) - f.SetWriteDeadline(t) - return nil -} - -// CloseWrite closes the write side of a message pipe in byte mode. -func (f *win32MessageBytePipe) CloseWrite() error { - if f.writeClosed { - return errPipeWriteClosed - } - err := f.win32File.Flush() - if err != nil { - return err - } - _, err = f.win32File.Write(nil) - if err != nil { - return err - } - f.writeClosed = true - return nil -} - -// Write writes bytes to a message pipe in byte mode. Zero-byte writes are ignored, since -// they are used to implement CloseWrite(). -func (f *win32MessageBytePipe) Write(b []byte) (int, error) { - if f.writeClosed { - return 0, errPipeWriteClosed - } - if len(b) == 0 { - return 0, nil - } - return f.win32File.Write(b) -} - -// Read reads bytes from a message pipe in byte mode. A read of a zero-byte message on a message -// mode pipe will return io.EOF, as will all subsequent reads. -func (f *win32MessageBytePipe) Read(b []byte) (int, error) { - if f.readEOF { - return 0, io.EOF - } - n, err := f.win32File.Read(b) - if err == io.EOF { - // If this was the result of a zero-byte read, then - // it is possible that the read was due to a zero-size - // message. Since we are simulating CloseWrite with a - // zero-byte message, ensure that all future Read() calls - // also return EOF. - f.readEOF = true - } - return n, err -} - -func (s pipeAddress) Network() string { - return "pipe" -} - -func (s pipeAddress) String() string { - return string(s) -} - -// DialPipe connects to a named pipe by path, timing out if the connection -// takes longer than the specified duration. If timeout is nil, then the timeout -// is the default timeout established by the pipe server. -func DialPipe(path string, timeout *time.Duration) (net.Conn, error) { - var absTimeout time.Time - if timeout != nil { - absTimeout = time.Now().Add(*timeout) - } - var err error - var h syscall.Handle - for { - h, err = createFile(path, syscall.GENERIC_READ|syscall.GENERIC_WRITE, 0, nil, syscall.OPEN_EXISTING, syscall.FILE_FLAG_OVERLAPPED|cSECURITY_SQOS_PRESENT|cSECURITY_ANONYMOUS, 0) - if err != cERROR_PIPE_BUSY { - break - } - now := time.Now() - var ms uint32 - if absTimeout.IsZero() { - ms = cNMPWAIT_USE_DEFAULT_WAIT - } else if now.After(absTimeout) { - ms = cNMPWAIT_NOWAIT - } else { - ms = uint32(absTimeout.Sub(now).Nanoseconds() / 1000 / 1000) - } - err = waitNamedPipe(path, ms) - if err != nil { - if err == cERROR_SEM_TIMEOUT { - return nil, ErrTimeout - } - break - } - } - if err != nil { - return nil, &os.PathError{Op: "open", Path: path, Err: err} - } - - var flags uint32 - err = getNamedPipeInfo(h, &flags, nil, nil, nil) - if err != nil { - return nil, err - } - - var state uint32 - err = getNamedPipeHandleState(h, &state, nil, nil, nil, nil, 0) - if err != nil { - return nil, err - } - - if state&cPIPE_READMODE_MESSAGE != 0 { - return nil, &os.PathError{Op: "open", Path: path, Err: errors.New("message readmode pipes not supported")} - } - - f, err := makeWin32File(h) - if err != nil { - syscall.Close(h) - return nil, err - } - - // If the pipe is in message mode, return a message byte pipe, which - // supports CloseWrite(). - if flags&cPIPE_TYPE_MESSAGE != 0 { - return &win32MessageBytePipe{ - win32Pipe: win32Pipe{win32File: f, path: path}, - }, nil - } - return &win32Pipe{win32File: f, path: path}, nil -} - -type acceptResponse struct { - f *win32File - err error -} - -type win32PipeListener struct { - firstHandle syscall.Handle - path string - securityDescriptor []byte - config PipeConfig - acceptCh chan (chan acceptResponse) - closeCh chan int - doneCh chan int -} - -func makeServerPipeHandle(path string, securityDescriptor []byte, c *PipeConfig, first bool) (syscall.Handle, error) { - var flags uint32 = cPIPE_ACCESS_DUPLEX | syscall.FILE_FLAG_OVERLAPPED - if first { - flags |= cFILE_FLAG_FIRST_PIPE_INSTANCE - } - - var mode uint32 = cPIPE_REJECT_REMOTE_CLIENTS - if c.MessageMode { - mode |= cPIPE_TYPE_MESSAGE - } - - sa := &syscall.SecurityAttributes{} - sa.Length = uint32(unsafe.Sizeof(*sa)) - if securityDescriptor != nil { - len := uint32(len(securityDescriptor)) - sa.SecurityDescriptor = localAlloc(0, len) - defer localFree(sa.SecurityDescriptor) - copy((*[0xffff]byte)(unsafe.Pointer(sa.SecurityDescriptor))[:], securityDescriptor) - } - h, err := createNamedPipe(path, flags, mode, cPIPE_UNLIMITED_INSTANCES, uint32(c.OutputBufferSize), uint32(c.InputBufferSize), 0, sa) - if err != nil { - return 0, &os.PathError{Op: "open", Path: path, Err: err} - } - return h, nil -} - -func (l *win32PipeListener) makeServerPipe() (*win32File, error) { - h, err := makeServerPipeHandle(l.path, l.securityDescriptor, &l.config, false) - if err != nil { - return nil, err - } - f, err := makeWin32File(h) - if err != nil { - syscall.Close(h) - return nil, err - } - return f, nil -} - -func (l *win32PipeListener) makeConnectedServerPipe() (*win32File, error) { - p, err := l.makeServerPipe() - if err != nil { - return nil, err - } - - // Wait for the client to connect. - ch := make(chan error) - go func(p *win32File) { - ch <- connectPipe(p) - }(p) - - select { - case err = <-ch: - if err != nil { - p.Close() - p = nil - } - case <-l.closeCh: - // Abort the connect request by closing the handle. - p.Close() - p = nil - err = <-ch - if err == nil || err == ErrFileClosed { - err = ErrPipeListenerClosed - } - } - return p, err -} - -func (l *win32PipeListener) listenerRoutine() { - closed := false - for !closed { - select { - case <-l.closeCh: - closed = true - case responseCh := <-l.acceptCh: - var ( - p *win32File - err error - ) - for { - p, err = l.makeConnectedServerPipe() - // If the connection was immediately closed by the client, try - // again. - if err != cERROR_NO_DATA { - break - } - } - responseCh <- acceptResponse{p, err} - closed = err == ErrPipeListenerClosed - } - } - syscall.Close(l.firstHandle) - l.firstHandle = 0 - // Notify Close() and Accept() callers that the handle has been closed. - close(l.doneCh) -} - -// PipeConfig contain configuration for the pipe listener. -type PipeConfig struct { - // SecurityDescriptor contains a Windows security descriptor in SDDL format. - SecurityDescriptor string - - // MessageMode determines whether the pipe is in byte or message mode. In either - // case the pipe is read in byte mode by default. The only practical difference in - // this implementation is that CloseWrite() is only supported for message mode pipes; - // CloseWrite() is implemented as a zero-byte write, but zero-byte writes are only - // transferred to the reader (and returned as io.EOF in this implementation) - // when the pipe is in message mode. - MessageMode bool - - // InputBufferSize specifies the size the input buffer, in bytes. - InputBufferSize int32 - - // OutputBufferSize specifies the size the input buffer, in bytes. - OutputBufferSize int32 -} - -// ListenPipe creates a listener on a Windows named pipe path, e.g. \\.\pipe\mypipe. -// The pipe must not already exist. -func ListenPipe(path string, c *PipeConfig) (net.Listener, error) { - var ( - sd []byte - err error - ) - if c == nil { - c = &PipeConfig{} - } - if c.SecurityDescriptor != "" { - sd, err = SddlToSecurityDescriptor(c.SecurityDescriptor) - if err != nil { - return nil, err - } - } - h, err := makeServerPipeHandle(path, sd, c, true) - if err != nil { - return nil, err - } - // Immediately open and then close a client handle so that the named pipe is - // created but not currently accepting connections. - h2, err := createFile(path, 0, 0, nil, syscall.OPEN_EXISTING, cSECURITY_SQOS_PRESENT|cSECURITY_ANONYMOUS, 0) - if err != nil { - syscall.Close(h) - return nil, err - } - syscall.Close(h2) - l := &win32PipeListener{ - firstHandle: h, - path: path, - securityDescriptor: sd, - config: *c, - acceptCh: make(chan (chan acceptResponse)), - closeCh: make(chan int), - doneCh: make(chan int), - } - go l.listenerRoutine() - return l, nil -} - -func connectPipe(p *win32File) error { - c, err := p.prepareIo() - if err != nil { - return err - } - defer p.wg.Done() - - err = connectNamedPipe(p.handle, &c.o) - _, err = p.asyncIo(c, nil, 0, err) - if err != nil && err != cERROR_PIPE_CONNECTED { - return err - } - return nil -} - -func (l *win32PipeListener) Accept() (net.Conn, error) { - ch := make(chan acceptResponse) - select { - case l.acceptCh <- ch: - response := <-ch - err := response.err - if err != nil { - return nil, err - } - if l.config.MessageMode { - return &win32MessageBytePipe{ - win32Pipe: win32Pipe{win32File: response.f, path: l.path}, - }, nil - } - return &win32Pipe{win32File: response.f, path: l.path}, nil - case <-l.doneCh: - return nil, ErrPipeListenerClosed - } -} - -func (l *win32PipeListener) Close() error { - select { - case l.closeCh <- 1: - <-l.doneCh - case <-l.doneCh: - } - return nil -} - -func (l *win32PipeListener) Addr() net.Addr { - return pipeAddress(l.path) -} diff --git a/vendor/github.com/Microsoft/go-winio/privilege.go b/vendor/github.com/Microsoft/go-winio/privilege.go deleted file mode 100644 index 9c83d36f..00000000 --- a/vendor/github.com/Microsoft/go-winio/privilege.go +++ /dev/null @@ -1,202 +0,0 @@ -// +build windows - -package winio - -import ( - "bytes" - "encoding/binary" - "fmt" - "runtime" - "sync" - "syscall" - "unicode/utf16" - - "golang.org/x/sys/windows" -) - -//sys adjustTokenPrivileges(token windows.Token, releaseAll bool, input *byte, outputSize uint32, output *byte, requiredSize *uint32) (success bool, err error) [true] = advapi32.AdjustTokenPrivileges -//sys impersonateSelf(level uint32) (err error) = advapi32.ImpersonateSelf -//sys revertToSelf() (err error) = advapi32.RevertToSelf -//sys openThreadToken(thread syscall.Handle, accessMask uint32, openAsSelf bool, token *windows.Token) (err error) = advapi32.OpenThreadToken -//sys getCurrentThread() (h syscall.Handle) = GetCurrentThread -//sys lookupPrivilegeValue(systemName string, name string, luid *uint64) (err error) = advapi32.LookupPrivilegeValueW -//sys lookupPrivilegeName(systemName string, luid *uint64, buffer *uint16, size *uint32) (err error) = advapi32.LookupPrivilegeNameW -//sys lookupPrivilegeDisplayName(systemName string, name *uint16, buffer *uint16, size *uint32, languageId *uint32) (err error) = advapi32.LookupPrivilegeDisplayNameW - -const ( - SE_PRIVILEGE_ENABLED = 2 - - ERROR_NOT_ALL_ASSIGNED syscall.Errno = 1300 - - SeBackupPrivilege = "SeBackupPrivilege" - SeRestorePrivilege = "SeRestorePrivilege" -) - -const ( - securityAnonymous = iota - securityIdentification - securityImpersonation - securityDelegation -) - -var ( - privNames = make(map[string]uint64) - privNameMutex sync.Mutex -) - -// PrivilegeError represents an error enabling privileges. -type PrivilegeError struct { - privileges []uint64 -} - -func (e *PrivilegeError) Error() string { - s := "" - if len(e.privileges) > 1 { - s = "Could not enable privileges " - } else { - s = "Could not enable privilege " - } - for i, p := range e.privileges { - if i != 0 { - s += ", " - } - s += `"` - s += getPrivilegeName(p) - s += `"` - } - return s -} - -// RunWithPrivilege enables a single privilege for a function call. -func RunWithPrivilege(name string, fn func() error) error { - return RunWithPrivileges([]string{name}, fn) -} - -// RunWithPrivileges enables privileges for a function call. -func RunWithPrivileges(names []string, fn func() error) error { - privileges, err := mapPrivileges(names) - if err != nil { - return err - } - runtime.LockOSThread() - defer runtime.UnlockOSThread() - token, err := newThreadToken() - if err != nil { - return err - } - defer releaseThreadToken(token) - err = adjustPrivileges(token, privileges, SE_PRIVILEGE_ENABLED) - if err != nil { - return err - } - return fn() -} - -func mapPrivileges(names []string) ([]uint64, error) { - var privileges []uint64 - privNameMutex.Lock() - defer privNameMutex.Unlock() - for _, name := range names { - p, ok := privNames[name] - if !ok { - err := lookupPrivilegeValue("", name, &p) - if err != nil { - return nil, err - } - privNames[name] = p - } - privileges = append(privileges, p) - } - return privileges, nil -} - -// EnableProcessPrivileges enables privileges globally for the process. -func EnableProcessPrivileges(names []string) error { - return enableDisableProcessPrivilege(names, SE_PRIVILEGE_ENABLED) -} - -// DisableProcessPrivileges disables privileges globally for the process. -func DisableProcessPrivileges(names []string) error { - return enableDisableProcessPrivilege(names, 0) -} - -func enableDisableProcessPrivilege(names []string, action uint32) error { - privileges, err := mapPrivileges(names) - if err != nil { - return err - } - - p, _ := windows.GetCurrentProcess() - var token windows.Token - err = windows.OpenProcessToken(p, windows.TOKEN_ADJUST_PRIVILEGES|windows.TOKEN_QUERY, &token) - if err != nil { - return err - } - - defer token.Close() - return adjustPrivileges(token, privileges, action) -} - -func adjustPrivileges(token windows.Token, privileges []uint64, action uint32) error { - var b bytes.Buffer - binary.Write(&b, binary.LittleEndian, uint32(len(privileges))) - for _, p := range privileges { - binary.Write(&b, binary.LittleEndian, p) - binary.Write(&b, binary.LittleEndian, action) - } - prevState := make([]byte, b.Len()) - reqSize := uint32(0) - success, err := adjustTokenPrivileges(token, false, &b.Bytes()[0], uint32(len(prevState)), &prevState[0], &reqSize) - if !success { - return err - } - if err == ERROR_NOT_ALL_ASSIGNED { - return &PrivilegeError{privileges} - } - return nil -} - -func getPrivilegeName(luid uint64) string { - var nameBuffer [256]uint16 - bufSize := uint32(len(nameBuffer)) - err := lookupPrivilegeName("", &luid, &nameBuffer[0], &bufSize) - if err != nil { - return fmt.Sprintf("", luid) - } - - var displayNameBuffer [256]uint16 - displayBufSize := uint32(len(displayNameBuffer)) - var langID uint32 - err = lookupPrivilegeDisplayName("", &nameBuffer[0], &displayNameBuffer[0], &displayBufSize, &langID) - if err != nil { - return fmt.Sprintf("", string(utf16.Decode(nameBuffer[:bufSize]))) - } - - return string(utf16.Decode(displayNameBuffer[:displayBufSize])) -} - -func newThreadToken() (windows.Token, error) { - err := impersonateSelf(securityImpersonation) - if err != nil { - return 0, err - } - - var token windows.Token - err = openThreadToken(getCurrentThread(), syscall.TOKEN_ADJUST_PRIVILEGES|syscall.TOKEN_QUERY, false, &token) - if err != nil { - rerr := revertToSelf() - if rerr != nil { - panic(rerr) - } - return 0, err - } - return token, nil -} - -func releaseThreadToken(h windows.Token) { - err := revertToSelf() - if err != nil { - panic(err) - } - h.Close() -} diff --git a/vendor/github.com/Microsoft/go-winio/reparse.go b/vendor/github.com/Microsoft/go-winio/reparse.go deleted file mode 100644 index fc1ee4d3..00000000 --- a/vendor/github.com/Microsoft/go-winio/reparse.go +++ /dev/null @@ -1,128 +0,0 @@ -package winio - -import ( - "bytes" - "encoding/binary" - "fmt" - "strings" - "unicode/utf16" - "unsafe" -) - -const ( - reparseTagMountPoint = 0xA0000003 - reparseTagSymlink = 0xA000000C -) - -type reparseDataBuffer struct { - ReparseTag uint32 - ReparseDataLength uint16 - Reserved uint16 - SubstituteNameOffset uint16 - SubstituteNameLength uint16 - PrintNameOffset uint16 - PrintNameLength uint16 -} - -// ReparsePoint describes a Win32 symlink or mount point. -type ReparsePoint struct { - Target string - IsMountPoint bool -} - -// UnsupportedReparsePointError is returned when trying to decode a non-symlink or -// mount point reparse point. -type UnsupportedReparsePointError struct { - Tag uint32 -} - -func (e *UnsupportedReparsePointError) Error() string { - return fmt.Sprintf("unsupported reparse point %x", e.Tag) -} - -// DecodeReparsePoint decodes a Win32 REPARSE_DATA_BUFFER structure containing either a symlink -// or a mount point. -func DecodeReparsePoint(b []byte) (*ReparsePoint, error) { - tag := binary.LittleEndian.Uint32(b[0:4]) - return DecodeReparsePointData(tag, b[8:]) -} - -func DecodeReparsePointData(tag uint32, b []byte) (*ReparsePoint, error) { - isMountPoint := false - switch tag { - case reparseTagMountPoint: - isMountPoint = true - case reparseTagSymlink: - default: - return nil, &UnsupportedReparsePointError{tag} - } - nameOffset := 8 + binary.LittleEndian.Uint16(b[4:6]) - if !isMountPoint { - nameOffset += 4 - } - nameLength := binary.LittleEndian.Uint16(b[6:8]) - name := make([]uint16, nameLength/2) - err := binary.Read(bytes.NewReader(b[nameOffset:nameOffset+nameLength]), binary.LittleEndian, &name) - if err != nil { - return nil, err - } - return &ReparsePoint{string(utf16.Decode(name)), isMountPoint}, nil -} - -func isDriveLetter(c byte) bool { - return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') -} - -// EncodeReparsePoint encodes a Win32 REPARSE_DATA_BUFFER structure describing a symlink or -// mount point. -func EncodeReparsePoint(rp *ReparsePoint) []byte { - // Generate an NT path and determine if this is a relative path. - var ntTarget string - relative := false - if strings.HasPrefix(rp.Target, `\\?\`) { - ntTarget = `\??\` + rp.Target[4:] - } else if strings.HasPrefix(rp.Target, `\\`) { - ntTarget = `\??\UNC\` + rp.Target[2:] - } else if len(rp.Target) >= 2 && isDriveLetter(rp.Target[0]) && rp.Target[1] == ':' { - ntTarget = `\??\` + rp.Target - } else { - ntTarget = rp.Target - relative = true - } - - // The paths must be NUL-terminated even though they are counted strings. - target16 := utf16.Encode([]rune(rp.Target + "\x00")) - ntTarget16 := utf16.Encode([]rune(ntTarget + "\x00")) - - size := int(unsafe.Sizeof(reparseDataBuffer{})) - 8 - size += len(ntTarget16)*2 + len(target16)*2 - - tag := uint32(reparseTagMountPoint) - if !rp.IsMountPoint { - tag = reparseTagSymlink - size += 4 // Add room for symlink flags - } - - data := reparseDataBuffer{ - ReparseTag: tag, - ReparseDataLength: uint16(size), - SubstituteNameOffset: 0, - SubstituteNameLength: uint16((len(ntTarget16) - 1) * 2), - PrintNameOffset: uint16(len(ntTarget16) * 2), - PrintNameLength: uint16((len(target16) - 1) * 2), - } - - var b bytes.Buffer - binary.Write(&b, binary.LittleEndian, &data) - if !rp.IsMountPoint { - flags := uint32(0) - if relative { - flags |= 1 - } - binary.Write(&b, binary.LittleEndian, flags) - } - - binary.Write(&b, binary.LittleEndian, ntTarget16) - binary.Write(&b, binary.LittleEndian, target16) - return b.Bytes() -} diff --git a/vendor/github.com/Microsoft/go-winio/sd.go b/vendor/github.com/Microsoft/go-winio/sd.go deleted file mode 100644 index db1b370a..00000000 --- a/vendor/github.com/Microsoft/go-winio/sd.go +++ /dev/null @@ -1,98 +0,0 @@ -// +build windows - -package winio - -import ( - "syscall" - "unsafe" -) - -//sys lookupAccountName(systemName *uint16, accountName string, sid *byte, sidSize *uint32, refDomain *uint16, refDomainSize *uint32, sidNameUse *uint32) (err error) = advapi32.LookupAccountNameW -//sys convertSidToStringSid(sid *byte, str **uint16) (err error) = advapi32.ConvertSidToStringSidW -//sys convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd *uintptr, size *uint32) (err error) = advapi32.ConvertStringSecurityDescriptorToSecurityDescriptorW -//sys convertSecurityDescriptorToStringSecurityDescriptor(sd *byte, revision uint32, secInfo uint32, sddl **uint16, sddlSize *uint32) (err error) = advapi32.ConvertSecurityDescriptorToStringSecurityDescriptorW -//sys localFree(mem uintptr) = LocalFree -//sys getSecurityDescriptorLength(sd uintptr) (len uint32) = advapi32.GetSecurityDescriptorLength - -const ( - cERROR_NONE_MAPPED = syscall.Errno(1332) -) - -type AccountLookupError struct { - Name string - Err error -} - -func (e *AccountLookupError) Error() string { - if e.Name == "" { - return "lookup account: empty account name specified" - } - var s string - switch e.Err { - case cERROR_NONE_MAPPED: - s = "not found" - default: - s = e.Err.Error() - } - return "lookup account " + e.Name + ": " + s -} - -type SddlConversionError struct { - Sddl string - Err error -} - -func (e *SddlConversionError) Error() string { - return "convert " + e.Sddl + ": " + e.Err.Error() -} - -// LookupSidByName looks up the SID of an account by name -func LookupSidByName(name string) (sid string, err error) { - if name == "" { - return "", &AccountLookupError{name, cERROR_NONE_MAPPED} - } - - var sidSize, sidNameUse, refDomainSize uint32 - err = lookupAccountName(nil, name, nil, &sidSize, nil, &refDomainSize, &sidNameUse) - if err != nil && err != syscall.ERROR_INSUFFICIENT_BUFFER { - return "", &AccountLookupError{name, err} - } - sidBuffer := make([]byte, sidSize) - refDomainBuffer := make([]uint16, refDomainSize) - err = lookupAccountName(nil, name, &sidBuffer[0], &sidSize, &refDomainBuffer[0], &refDomainSize, &sidNameUse) - if err != nil { - return "", &AccountLookupError{name, err} - } - var strBuffer *uint16 - err = convertSidToStringSid(&sidBuffer[0], &strBuffer) - if err != nil { - return "", &AccountLookupError{name, err} - } - sid = syscall.UTF16ToString((*[0xffff]uint16)(unsafe.Pointer(strBuffer))[:]) - localFree(uintptr(unsafe.Pointer(strBuffer))) - return sid, nil -} - -func SddlToSecurityDescriptor(sddl string) ([]byte, error) { - var sdBuffer uintptr - err := convertStringSecurityDescriptorToSecurityDescriptor(sddl, 1, &sdBuffer, nil) - if err != nil { - return nil, &SddlConversionError{sddl, err} - } - defer localFree(sdBuffer) - sd := make([]byte, getSecurityDescriptorLength(sdBuffer)) - copy(sd, (*[0xffff]byte)(unsafe.Pointer(sdBuffer))[:len(sd)]) - return sd, nil -} - -func SecurityDescriptorToSddl(sd []byte) (string, error) { - var sddl *uint16 - // The returned string length seems to including an aribtrary number of terminating NULs. - // Don't use it. - err := convertSecurityDescriptorToStringSecurityDescriptor(&sd[0], 1, 0xff, &sddl, nil) - if err != nil { - return "", err - } - defer localFree(uintptr(unsafe.Pointer(sddl))) - return syscall.UTF16ToString((*[0xffff]uint16)(unsafe.Pointer(sddl))[:]), nil -} diff --git a/vendor/github.com/Microsoft/go-winio/syscall.go b/vendor/github.com/Microsoft/go-winio/syscall.go deleted file mode 100644 index 20d64cf4..00000000 --- a/vendor/github.com/Microsoft/go-winio/syscall.go +++ /dev/null @@ -1,3 +0,0 @@ -package winio - -//go:generate go run $GOROOT/src/syscall/mksyscall_windows.go -output zsyscall_windows.go file.go pipe.go sd.go fileinfo.go privilege.go backup.go diff --git a/vendor/github.com/Microsoft/go-winio/zsyscall_windows.go b/vendor/github.com/Microsoft/go-winio/zsyscall_windows.go deleted file mode 100644 index 3f527639..00000000 --- a/vendor/github.com/Microsoft/go-winio/zsyscall_windows.go +++ /dev/null @@ -1,520 +0,0 @@ -// MACHINE GENERATED BY 'go generate' COMMAND; DO NOT EDIT - -package winio - -import ( - "syscall" - "unsafe" - - "golang.org/x/sys/windows" -) - -var _ unsafe.Pointer - -// Do the interface allocations only once for common -// Errno values. -const ( - errnoERROR_IO_PENDING = 997 -) - -var ( - errERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING) -) - -// errnoErr returns common boxed Errno values, to prevent -// allocations at runtime. -func errnoErr(e syscall.Errno) error { - switch e { - case 0: - return nil - case errnoERROR_IO_PENDING: - return errERROR_IO_PENDING - } - // TODO: add more here, after collecting data on the common - // error values see on Windows. (perhaps when running - // all.bat?) - return e -} - -var ( - modkernel32 = windows.NewLazySystemDLL("kernel32.dll") - modadvapi32 = windows.NewLazySystemDLL("advapi32.dll") - - procCancelIoEx = modkernel32.NewProc("CancelIoEx") - procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort") - procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus") - procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes") - procConnectNamedPipe = modkernel32.NewProc("ConnectNamedPipe") - procCreateNamedPipeW = modkernel32.NewProc("CreateNamedPipeW") - procCreateFileW = modkernel32.NewProc("CreateFileW") - procWaitNamedPipeW = modkernel32.NewProc("WaitNamedPipeW") - procGetNamedPipeInfo = modkernel32.NewProc("GetNamedPipeInfo") - procGetNamedPipeHandleStateW = modkernel32.NewProc("GetNamedPipeHandleStateW") - procLocalAlloc = modkernel32.NewProc("LocalAlloc") - procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW") - procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW") - procConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc("ConvertStringSecurityDescriptorToSecurityDescriptorW") - procConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc("ConvertSecurityDescriptorToStringSecurityDescriptorW") - procLocalFree = modkernel32.NewProc("LocalFree") - procGetSecurityDescriptorLength = modadvapi32.NewProc("GetSecurityDescriptorLength") - procGetFileInformationByHandleEx = modkernel32.NewProc("GetFileInformationByHandleEx") - procSetFileInformationByHandle = modkernel32.NewProc("SetFileInformationByHandle") - procAdjustTokenPrivileges = modadvapi32.NewProc("AdjustTokenPrivileges") - procImpersonateSelf = modadvapi32.NewProc("ImpersonateSelf") - procRevertToSelf = modadvapi32.NewProc("RevertToSelf") - procOpenThreadToken = modadvapi32.NewProc("OpenThreadToken") - procGetCurrentThread = modkernel32.NewProc("GetCurrentThread") - procLookupPrivilegeValueW = modadvapi32.NewProc("LookupPrivilegeValueW") - procLookupPrivilegeNameW = modadvapi32.NewProc("LookupPrivilegeNameW") - procLookupPrivilegeDisplayNameW = modadvapi32.NewProc("LookupPrivilegeDisplayNameW") - procBackupRead = modkernel32.NewProc("BackupRead") - procBackupWrite = modkernel32.NewProc("BackupWrite") -) - -func cancelIoEx(file syscall.Handle, o *syscall.Overlapped) (err error) { - r1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(file), uintptr(unsafe.Pointer(o)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func createIoCompletionPort(file syscall.Handle, port syscall.Handle, key uintptr, threadCount uint32) (newport syscall.Handle, err error) { - r0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(file), uintptr(port), uintptr(key), uintptr(threadCount), 0, 0) - newport = syscall.Handle(r0) - if newport == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func getQueuedCompletionStatus(port syscall.Handle, bytes *uint32, key *uintptr, o **ioOperation, timeout uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetQueuedCompletionStatus.Addr(), 5, uintptr(port), uintptr(unsafe.Pointer(bytes)), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(o)), uintptr(timeout), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func setFileCompletionNotificationModes(h syscall.Handle, flags uint8) (err error) { - r1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(h), uintptr(flags), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func connectNamedPipe(pipe syscall.Handle, o *syscall.Overlapped) (err error) { - r1, _, e1 := syscall.Syscall(procConnectNamedPipe.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(o)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func createNamedPipe(name string, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *syscall.SecurityAttributes) (handle syscall.Handle, err error) { - var _p0 *uint16 - _p0, err = syscall.UTF16PtrFromString(name) - if err != nil { - return - } - return _createNamedPipe(_p0, flags, pipeMode, maxInstances, outSize, inSize, defaultTimeout, sa) -} - -func _createNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *syscall.SecurityAttributes) (handle syscall.Handle, err error) { - r0, _, e1 := syscall.Syscall9(procCreateNamedPipeW.Addr(), 8, uintptr(unsafe.Pointer(name)), uintptr(flags), uintptr(pipeMode), uintptr(maxInstances), uintptr(outSize), uintptr(inSize), uintptr(defaultTimeout), uintptr(unsafe.Pointer(sa)), 0) - handle = syscall.Handle(r0) - if handle == syscall.InvalidHandle { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func createFile(name string, access uint32, mode uint32, sa *syscall.SecurityAttributes, createmode uint32, attrs uint32, templatefile syscall.Handle) (handle syscall.Handle, err error) { - var _p0 *uint16 - _p0, err = syscall.UTF16PtrFromString(name) - if err != nil { - return - } - return _createFile(_p0, access, mode, sa, createmode, attrs, templatefile) -} - -func _createFile(name *uint16, access uint32, mode uint32, sa *syscall.SecurityAttributes, createmode uint32, attrs uint32, templatefile syscall.Handle) (handle syscall.Handle, err error) { - r0, _, e1 := syscall.Syscall9(procCreateFileW.Addr(), 7, uintptr(unsafe.Pointer(name)), uintptr(access), uintptr(mode), uintptr(unsafe.Pointer(sa)), uintptr(createmode), uintptr(attrs), uintptr(templatefile), 0, 0) - handle = syscall.Handle(r0) - if handle == syscall.InvalidHandle { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func waitNamedPipe(name string, timeout uint32) (err error) { - var _p0 *uint16 - _p0, err = syscall.UTF16PtrFromString(name) - if err != nil { - return - } - return _waitNamedPipe(_p0, timeout) -} - -func _waitNamedPipe(name *uint16, timeout uint32) (err error) { - r1, _, e1 := syscall.Syscall(procWaitNamedPipeW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(timeout), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func getNamedPipeInfo(pipe syscall.Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetNamedPipeInfo.Addr(), 5, uintptr(pipe), uintptr(unsafe.Pointer(flags)), uintptr(unsafe.Pointer(outSize)), uintptr(unsafe.Pointer(inSize)), uintptr(unsafe.Pointer(maxInstances)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func getNamedPipeHandleState(pipe syscall.Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procGetNamedPipeHandleStateW.Addr(), 7, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(curInstances)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), uintptr(unsafe.Pointer(userName)), uintptr(maxUserNameSize), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func localAlloc(uFlags uint32, length uint32) (ptr uintptr) { - r0, _, _ := syscall.Syscall(procLocalAlloc.Addr(), 2, uintptr(uFlags), uintptr(length), 0) - ptr = uintptr(r0) - return -} - -func lookupAccountName(systemName *uint16, accountName string, sid *byte, sidSize *uint32, refDomain *uint16, refDomainSize *uint32, sidNameUse *uint32) (err error) { - var _p0 *uint16 - _p0, err = syscall.UTF16PtrFromString(accountName) - if err != nil { - return - } - return _lookupAccountName(systemName, _p0, sid, sidSize, refDomain, refDomainSize, sidNameUse) -} - -func _lookupAccountName(systemName *uint16, accountName *uint16, sid *byte, sidSize *uint32, refDomain *uint16, refDomainSize *uint32, sidNameUse *uint32) (err error) { - r1, _, e1 := syscall.Syscall9(procLookupAccountNameW.Addr(), 7, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(accountName)), uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(sidSize)), uintptr(unsafe.Pointer(refDomain)), uintptr(unsafe.Pointer(refDomainSize)), uintptr(unsafe.Pointer(sidNameUse)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func convertSidToStringSid(sid *byte, str **uint16) (err error) { - r1, _, e1 := syscall.Syscall(procConvertSidToStringSidW.Addr(), 2, uintptr(unsafe.Pointer(sid)), uintptr(unsafe.Pointer(str)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd *uintptr, size *uint32) (err error) { - var _p0 *uint16 - _p0, err = syscall.UTF16PtrFromString(str) - if err != nil { - return - } - return _convertStringSecurityDescriptorToSecurityDescriptor(_p0, revision, sd, size) -} - -func _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision uint32, sd *uintptr, size *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procConvertStringSecurityDescriptorToSecurityDescriptorW.Addr(), 4, uintptr(unsafe.Pointer(str)), uintptr(revision), uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(size)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func convertSecurityDescriptorToStringSecurityDescriptor(sd *byte, revision uint32, secInfo uint32, sddl **uint16, sddlSize *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procConvertSecurityDescriptorToStringSecurityDescriptorW.Addr(), 5, uintptr(unsafe.Pointer(sd)), uintptr(revision), uintptr(secInfo), uintptr(unsafe.Pointer(sddl)), uintptr(unsafe.Pointer(sddlSize)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func localFree(mem uintptr) { - syscall.Syscall(procLocalFree.Addr(), 1, uintptr(mem), 0, 0) - return -} - -func getSecurityDescriptorLength(sd uintptr) (len uint32) { - r0, _, _ := syscall.Syscall(procGetSecurityDescriptorLength.Addr(), 1, uintptr(sd), 0, 0) - len = uint32(r0) - return -} - -func getFileInformationByHandleEx(h syscall.Handle, class uint32, buffer *byte, size uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(h), uintptr(class), uintptr(unsafe.Pointer(buffer)), uintptr(size), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func setFileInformationByHandle(h syscall.Handle, class uint32, buffer *byte, size uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procSetFileInformationByHandle.Addr(), 4, uintptr(h), uintptr(class), uintptr(unsafe.Pointer(buffer)), uintptr(size), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func adjustTokenPrivileges(token windows.Token, releaseAll bool, input *byte, outputSize uint32, output *byte, requiredSize *uint32) (success bool, err error) { - var _p0 uint32 - if releaseAll { - _p0 = 1 - } else { - _p0 = 0 - } - r0, _, e1 := syscall.Syscall6(procAdjustTokenPrivileges.Addr(), 6, uintptr(token), uintptr(_p0), uintptr(unsafe.Pointer(input)), uintptr(outputSize), uintptr(unsafe.Pointer(output)), uintptr(unsafe.Pointer(requiredSize))) - success = r0 != 0 - if true { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func impersonateSelf(level uint32) (err error) { - r1, _, e1 := syscall.Syscall(procImpersonateSelf.Addr(), 1, uintptr(level), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func revertToSelf() (err error) { - r1, _, e1 := syscall.Syscall(procRevertToSelf.Addr(), 0, 0, 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func openThreadToken(thread syscall.Handle, accessMask uint32, openAsSelf bool, token *windows.Token) (err error) { - var _p0 uint32 - if openAsSelf { - _p0 = 1 - } else { - _p0 = 0 - } - r1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(thread), uintptr(accessMask), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func getCurrentThread() (h syscall.Handle) { - r0, _, _ := syscall.Syscall(procGetCurrentThread.Addr(), 0, 0, 0, 0) - h = syscall.Handle(r0) - return -} - -func lookupPrivilegeValue(systemName string, name string, luid *uint64) (err error) { - var _p0 *uint16 - _p0, err = syscall.UTF16PtrFromString(systemName) - if err != nil { - return - } - var _p1 *uint16 - _p1, err = syscall.UTF16PtrFromString(name) - if err != nil { - return - } - return _lookupPrivilegeValue(_p0, _p1, luid) -} - -func _lookupPrivilegeValue(systemName *uint16, name *uint16, luid *uint64) (err error) { - r1, _, e1 := syscall.Syscall(procLookupPrivilegeValueW.Addr(), 3, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(luid))) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func lookupPrivilegeName(systemName string, luid *uint64, buffer *uint16, size *uint32) (err error) { - var _p0 *uint16 - _p0, err = syscall.UTF16PtrFromString(systemName) - if err != nil { - return - } - return _lookupPrivilegeName(_p0, luid, buffer, size) -} - -func _lookupPrivilegeName(systemName *uint16, luid *uint64, buffer *uint16, size *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procLookupPrivilegeNameW.Addr(), 4, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(luid)), uintptr(unsafe.Pointer(buffer)), uintptr(unsafe.Pointer(size)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func lookupPrivilegeDisplayName(systemName string, name *uint16, buffer *uint16, size *uint32, languageId *uint32) (err error) { - var _p0 *uint16 - _p0, err = syscall.UTF16PtrFromString(systemName) - if err != nil { - return - } - return _lookupPrivilegeDisplayName(_p0, name, buffer, size, languageId) -} - -func _lookupPrivilegeDisplayName(systemName *uint16, name *uint16, buffer *uint16, size *uint32, languageId *uint32) (err error) { - r1, _, e1 := syscall.Syscall6(procLookupPrivilegeDisplayNameW.Addr(), 5, uintptr(unsafe.Pointer(systemName)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(unsafe.Pointer(size)), uintptr(unsafe.Pointer(languageId)), 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func backupRead(h syscall.Handle, b []byte, bytesRead *uint32, abort bool, processSecurity bool, context *uintptr) (err error) { - var _p0 *byte - if len(b) > 0 { - _p0 = &b[0] - } - var _p1 uint32 - if abort { - _p1 = 1 - } else { - _p1 = 0 - } - var _p2 uint32 - if processSecurity { - _p2 = 1 - } else { - _p2 = 0 - } - r1, _, e1 := syscall.Syscall9(procBackupRead.Addr(), 7, uintptr(h), uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(unsafe.Pointer(bytesRead)), uintptr(_p1), uintptr(_p2), uintptr(unsafe.Pointer(context)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} - -func backupWrite(h syscall.Handle, b []byte, bytesWritten *uint32, abort bool, processSecurity bool, context *uintptr) (err error) { - var _p0 *byte - if len(b) > 0 { - _p0 = &b[0] - } - var _p1 uint32 - if abort { - _p1 = 1 - } else { - _p1 = 0 - } - var _p2 uint32 - if processSecurity { - _p2 = 1 - } else { - _p2 = 0 - } - r1, _, e1 := syscall.Syscall9(procBackupWrite.Addr(), 7, uintptr(h), uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(unsafe.Pointer(bytesWritten)), uintptr(_p1), uintptr(_p2), uintptr(unsafe.Pointer(context)), 0, 0) - if r1 == 0 { - if e1 != 0 { - err = errnoErr(e1) - } else { - err = syscall.EINVAL - } - } - return -} diff --git a/vendor/github.com/docker/distribution/AUTHORS b/vendor/github.com/docker/distribution/AUTHORS deleted file mode 100644 index aaf02987..00000000 --- a/vendor/github.com/docker/distribution/AUTHORS +++ /dev/null @@ -1,182 +0,0 @@ -Aaron Lehmann -Aaron Schlesinger -Aaron Vinson -Adam Duke -Adam Enger -Adrian Mouat -Ahmet Alp Balkan -Alex Chan -Alex Elman -Alexey Gladkov -allencloud -amitshukla -Amy Lindburg -Andrew Hsu -Andrew Meredith -Andrew T Nguyen -Andrey Kostov -Andy Goldstein -Anis Elleuch -Antonio Mercado -Antonio Murdaca -Anton Tiurin -Anusha Ragunathan -a-palchikov -Arien Holthuizen -Arnaud Porterie -Arthur Baars -Asuka Suzuki -Avi Miller -Ayose Cazorla -BadZen -Ben Bodenmiller -Ben Firshman -bin liu -Brian Bland -burnettk -Carson A -Cezar Sa Espinola -Charles Smith -Chris Dillon -cuiwei13 -cyli -Daisuke Fujita -Daniel Huhn -Darren Shepherd -Dave Trombley -Dave Tucker -David Lawrence -davidli -David Verhasselt -David Xia -Dejan Golja -Derek McGowan -Diogo Mónica -DJ Enriquez -Donald Huang -Doug Davis -Edgar Lee -Eric Yang -Fabio Berchtold -Fabio Huser -farmerworking -Felix Yan -Florentin Raud -Frank Chen -Frederick F. Kautz IV -gabriell nascimento -Gleb Schukin -harche -Henri Gomez -Hua Wang -Hu Keping -HuKeping -Ian Babrou -igayoso -Jack Griffin -James Findley -Jason Freidman -Jason Heiss -Jeff Nickoloff -Jess Frazelle -Jessie Frazelle -jhaohai -Jianqing Wang -Jihoon Chung -Joao Fernandes -John Mulhausen -John Starks -Jonathan Boulle -Jon Johnson -Jon Poler -Jordan Liggitt -Josh Chorlton -Josh Hawn -Julien Fernandez -Keerthan Mala -Kelsey Hightower -Kenneth Lim -Kenny Leung -Ke Xu -liuchang0812 -Liu Hua -Li Yi -Lloyd Ramey -Louis Kottmann -Luke Carpenter -Marcus Martins -Mary Anthony -Matt Bentley -Matt Duch -Matthew Green -Matt Moore -Matt Robenolt -Michael Prokop -Michal Minar -Michal Minář -Mike Brown -Miquel Sabaté -Misty Stanley-Jones -Morgan Bauer -moxiegirl -Nathan Sullivan -nevermosby -Nghia Tran -Nikita Tarasov -Noah Treuhaft -Nuutti Kotivuori -Oilbeater -Olivier Gambier -Olivier Jacques -Omer Cohen -Patrick Devine -Phil Estes -Philip Misiowiec -Pierre-Yves Ritschard -Qiao Anran -Randy Barlow -Richard Scothern -Rodolfo Carvalho -Rusty Conover -Sean Boran -Sebastiaan van Stijn -Sebastien Coavoux -Serge Dubrouski -Sharif Nassar -Shawn Falkner-Horine -Shreyas Karnik -Simon Thulbourn -spacexnice -Spencer Rinehart -Stan Hu -Stefan Majewsky -Stefan Weil -Stephen J Day -Sungho Moon -Sven Dowideit -Sylvain Baubeau -Ted Reed -tgic -Thomas Sjögren -Tianon Gravi -Tibor Vass -Tonis Tiigi -Tony Holdstock-Brown -Trevor Pounds -Troels Thomsen -Victoria Bialas -Victor Vieux -Vincent Batts -Vincent Demeester -Vincent Giersch -weiyuan.yl -W. Trevor King -xg.song -xiekeyang -Yann ROBERT -yaoyao.xyy -yixi zhang -yuexiao-wang -yuzou -zhouhaibing089 -姜继忠 diff --git a/vendor/github.com/docker/distribution/LICENSE b/vendor/github.com/docker/distribution/LICENSE deleted file mode 100644 index e06d2081..00000000 --- a/vendor/github.com/docker/distribution/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ -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. - diff --git a/vendor/github.com/docker/distribution/digest/digest.go b/vendor/github.com/docker/distribution/digest/digest.go deleted file mode 100644 index 31d821bb..00000000 --- a/vendor/github.com/docker/distribution/digest/digest.go +++ /dev/null @@ -1,139 +0,0 @@ -package digest - -import ( - "fmt" - "hash" - "io" - "regexp" - "strings" -) - -const ( - // DigestSha256EmptyTar is the canonical sha256 digest of empty data - DigestSha256EmptyTar = "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" -) - -// Digest allows simple protection of hex formatted digest strings, prefixed -// by their algorithm. Strings of type Digest have some guarantee of being in -// the correct format and it provides quick access to the components of a -// digest string. -// -// The following is an example of the contents of Digest types: -// -// sha256:7173b809ca12ec5dee4506cd86be934c4596dd234ee82c0662eac04a8c2c71dc -// -// This allows to abstract the digest behind this type and work only in those -// terms. -type Digest string - -// NewDigest returns a Digest from alg and a hash.Hash object. -func NewDigest(alg Algorithm, h hash.Hash) Digest { - return NewDigestFromBytes(alg, h.Sum(nil)) -} - -// NewDigestFromBytes returns a new digest from the byte contents of p. -// Typically, this can come from hash.Hash.Sum(...) or xxx.SumXXX(...) -// functions. This is also useful for rebuilding digests from binary -// serializations. -func NewDigestFromBytes(alg Algorithm, p []byte) Digest { - return Digest(fmt.Sprintf("%s:%x", alg, p)) -} - -// NewDigestFromHex returns a Digest from alg and a the hex encoded digest. -func NewDigestFromHex(alg, hex string) Digest { - return Digest(fmt.Sprintf("%s:%s", alg, hex)) -} - -// DigestRegexp matches valid digest types. -var DigestRegexp = regexp.MustCompile(`[a-zA-Z0-9-_+.]+:[a-fA-F0-9]+`) - -// DigestRegexpAnchored matches valid digest types, anchored to the start and end of the match. -var DigestRegexpAnchored = regexp.MustCompile(`^` + DigestRegexp.String() + `$`) - -var ( - // ErrDigestInvalidFormat returned when digest format invalid. - ErrDigestInvalidFormat = fmt.Errorf("invalid checksum digest format") - - // ErrDigestInvalidLength returned when digest has invalid length. - ErrDigestInvalidLength = fmt.Errorf("invalid checksum digest length") - - // ErrDigestUnsupported returned when the digest algorithm is unsupported. - ErrDigestUnsupported = fmt.Errorf("unsupported digest algorithm") -) - -// ParseDigest parses s and returns the validated digest object. An error will -// be returned if the format is invalid. -func ParseDigest(s string) (Digest, error) { - d := Digest(s) - - return d, d.Validate() -} - -// FromReader returns the most valid digest for the underlying content using -// the canonical digest algorithm. -func FromReader(rd io.Reader) (Digest, error) { - return Canonical.FromReader(rd) -} - -// FromBytes digests the input and returns a Digest. -func FromBytes(p []byte) Digest { - return Canonical.FromBytes(p) -} - -// Validate checks that the contents of d is a valid digest, returning an -// error if not. -func (d Digest) Validate() error { - s := string(d) - - if !DigestRegexpAnchored.MatchString(s) { - return ErrDigestInvalidFormat - } - - i := strings.Index(s, ":") - if i < 0 { - return ErrDigestInvalidFormat - } - - // case: "sha256:" with no hex. - if i+1 == len(s) { - return ErrDigestInvalidFormat - } - - switch algorithm := Algorithm(s[:i]); algorithm { - case SHA256, SHA384, SHA512: - if algorithm.Size()*2 != len(s[i+1:]) { - return ErrDigestInvalidLength - } - break - default: - return ErrDigestUnsupported - } - - return nil -} - -// Algorithm returns the algorithm portion of the digest. This will panic if -// the underlying digest is not in a valid format. -func (d Digest) Algorithm() Algorithm { - return Algorithm(d[:d.sepIndex()]) -} - -// Hex returns the hex digest portion of the digest. This will panic if the -// underlying digest is not in a valid format. -func (d Digest) Hex() string { - return string(d[d.sepIndex()+1:]) -} - -func (d Digest) String() string { - return string(d) -} - -func (d Digest) sepIndex() int { - i := strings.Index(string(d), ":") - - if i < 0 { - panic("could not find ':' in digest: " + d) - } - - return i -} diff --git a/vendor/github.com/docker/distribution/digest/digester.go b/vendor/github.com/docker/distribution/digest/digester.go deleted file mode 100644 index f3105a45..00000000 --- a/vendor/github.com/docker/distribution/digest/digester.go +++ /dev/null @@ -1,155 +0,0 @@ -package digest - -import ( - "crypto" - "fmt" - "hash" - "io" -) - -// Algorithm identifies and implementation of a digester by an identifier. -// Note the that this defines both the hash algorithm used and the string -// encoding. -type Algorithm string - -// supported digest types -const ( - SHA256 Algorithm = "sha256" // sha256 with hex encoding - SHA384 Algorithm = "sha384" // sha384 with hex encoding - SHA512 Algorithm = "sha512" // sha512 with hex encoding - - // Canonical is the primary digest algorithm used with the distribution - // project. Other digests may be used but this one is the primary storage - // digest. - Canonical = SHA256 -) - -var ( - // TODO(stevvooe): Follow the pattern of the standard crypto package for - // registration of digests. Effectively, we are a registerable set and - // common symbol access. - - // algorithms maps values to hash.Hash implementations. Other algorithms - // may be available but they cannot be calculated by the digest package. - algorithms = map[Algorithm]crypto.Hash{ - SHA256: crypto.SHA256, - SHA384: crypto.SHA384, - SHA512: crypto.SHA512, - } -) - -// Available returns true if the digest type is available for use. If this -// returns false, New and Hash will return nil. -func (a Algorithm) Available() bool { - h, ok := algorithms[a] - if !ok { - return false - } - - // check availability of the hash, as well - return h.Available() -} - -func (a Algorithm) String() string { - return string(a) -} - -// Size returns number of bytes returned by the hash. -func (a Algorithm) Size() int { - h, ok := algorithms[a] - if !ok { - return 0 - } - return h.Size() -} - -// Set implemented to allow use of Algorithm as a command line flag. -func (a *Algorithm) Set(value string) error { - if value == "" { - *a = Canonical - } else { - // just do a type conversion, support is queried with Available. - *a = Algorithm(value) - } - - return nil -} - -// New returns a new digester for the specified algorithm. If the algorithm -// does not have a digester implementation, nil will be returned. This can be -// checked by calling Available before calling New. -func (a Algorithm) New() Digester { - return &digester{ - alg: a, - hash: a.Hash(), - } -} - -// Hash returns a new hash as used by the algorithm. If not available, the -// method will panic. Check Algorithm.Available() before calling. -func (a Algorithm) Hash() hash.Hash { - if !a.Available() { - // NOTE(stevvooe): A missing hash is usually a programming error that - // must be resolved at compile time. We don't import in the digest - // package to allow users to choose their hash implementation (such as - // when using stevvooe/resumable or a hardware accelerated package). - // - // Applications that may want to resolve the hash at runtime should - // call Algorithm.Available before call Algorithm.Hash(). - panic(fmt.Sprintf("%v not available (make sure it is imported)", a)) - } - - return algorithms[a].New() -} - -// FromReader returns the digest of the reader using the algorithm. -func (a Algorithm) FromReader(rd io.Reader) (Digest, error) { - digester := a.New() - - if _, err := io.Copy(digester.Hash(), rd); err != nil { - return "", err - } - - return digester.Digest(), nil -} - -// FromBytes digests the input and returns a Digest. -func (a Algorithm) FromBytes(p []byte) Digest { - digester := a.New() - - if _, err := digester.Hash().Write(p); err != nil { - // Writes to a Hash should never fail. None of the existing - // hash implementations in the stdlib or hashes vendored - // here can return errors from Write. Having a panic in this - // condition instead of having FromBytes return an error value - // avoids unnecessary error handling paths in all callers. - panic("write to hash function returned error: " + err.Error()) - } - - return digester.Digest() -} - -// TODO(stevvooe): Allow resolution of verifiers using the digest type and -// this registration system. - -// Digester calculates the digest of written data. Writes should go directly -// to the return value of Hash, while calling Digest will return the current -// value of the digest. -type Digester interface { - Hash() hash.Hash // provides direct access to underlying hash instance. - Digest() Digest -} - -// digester provides a simple digester definition that embeds a hasher. -type digester struct { - alg Algorithm - hash hash.Hash -} - -func (d *digester) Hash() hash.Hash { - return d.hash -} - -func (d *digester) Digest() Digest { - return NewDigest(d.alg, d.hash) -} diff --git a/vendor/github.com/docker/distribution/digest/doc.go b/vendor/github.com/docker/distribution/digest/doc.go deleted file mode 100644 index f64b0db3..00000000 --- a/vendor/github.com/docker/distribution/digest/doc.go +++ /dev/null @@ -1,42 +0,0 @@ -// Package digest provides a generalized type to opaquely represent message -// digests and their operations within the registry. The Digest type is -// designed to serve as a flexible identifier in a content-addressable system. -// More importantly, it provides tools and wrappers to work with -// hash.Hash-based digests with little effort. -// -// Basics -// -// The format of a digest is simply a string with two parts, dubbed the -// "algorithm" and the "digest", separated by a colon: -// -// : -// -// An example of a sha256 digest representation follows: -// -// sha256:7173b809ca12ec5dee4506cd86be934c4596dd234ee82c0662eac04a8c2c71dc -// -// In this case, the string "sha256" is the algorithm and the hex bytes are -// the "digest". -// -// Because the Digest type is simply a string, once a valid Digest is -// obtained, comparisons are cheap, quick and simple to express with the -// standard equality operator. -// -// Verification -// -// The main benefit of using the Digest type is simple verification against a -// given digest. The Verifier interface, modeled after the stdlib hash.Hash -// interface, provides a common write sink for digest verification. After -// writing is complete, calling the Verifier.Verified method will indicate -// whether or not the stream of bytes matches the target digest. -// -// Missing Features -// -// In addition to the above, we intend to add the following features to this -// package: -// -// 1. A Digester type that supports write sink digest calculation. -// -// 2. Suspend and resume of ongoing digest calculations to support efficient digest verification in the registry. -// -package digest diff --git a/vendor/github.com/docker/distribution/digest/set.go b/vendor/github.com/docker/distribution/digest/set.go deleted file mode 100644 index 4b9313c1..00000000 --- a/vendor/github.com/docker/distribution/digest/set.go +++ /dev/null @@ -1,245 +0,0 @@ -package digest - -import ( - "errors" - "sort" - "strings" - "sync" -) - -var ( - // ErrDigestNotFound is used when a matching digest - // could not be found in a set. - ErrDigestNotFound = errors.New("digest not found") - - // ErrDigestAmbiguous is used when multiple digests - // are found in a set. None of the matching digests - // should be considered valid matches. - ErrDigestAmbiguous = errors.New("ambiguous digest string") -) - -// Set is used to hold a unique set of digests which -// may be easily referenced by easily referenced by a string -// representation of the digest as well as short representation. -// The uniqueness of the short representation is based on other -// digests in the set. If digests are omitted from this set, -// collisions in a larger set may not be detected, therefore it -// is important to always do short representation lookups on -// the complete set of digests. To mitigate collisions, an -// appropriately long short code should be used. -type Set struct { - mutex sync.RWMutex - entries digestEntries -} - -// NewSet creates an empty set of digests -// which may have digests added. -func NewSet() *Set { - return &Set{ - entries: digestEntries{}, - } -} - -// checkShortMatch checks whether two digests match as either whole -// values or short values. This function does not test equality, -// rather whether the second value could match against the first -// value. -func checkShortMatch(alg Algorithm, hex, shortAlg, shortHex string) bool { - if len(hex) == len(shortHex) { - if hex != shortHex { - return false - } - if len(shortAlg) > 0 && string(alg) != shortAlg { - return false - } - } else if !strings.HasPrefix(hex, shortHex) { - return false - } else if len(shortAlg) > 0 && string(alg) != shortAlg { - return false - } - return true -} - -// Lookup looks for a digest matching the given string representation. -// If no digests could be found ErrDigestNotFound will be returned -// with an empty digest value. If multiple matches are found -// ErrDigestAmbiguous will be returned with an empty digest value. -func (dst *Set) Lookup(d string) (Digest, error) { - dst.mutex.RLock() - defer dst.mutex.RUnlock() - if len(dst.entries) == 0 { - return "", ErrDigestNotFound - } - var ( - searchFunc func(int) bool - alg Algorithm - hex string - ) - dgst, err := ParseDigest(d) - if err == ErrDigestInvalidFormat { - hex = d - searchFunc = func(i int) bool { - return dst.entries[i].val >= d - } - } else { - hex = dgst.Hex() - alg = dgst.Algorithm() - searchFunc = func(i int) bool { - if dst.entries[i].val == hex { - return dst.entries[i].alg >= alg - } - return dst.entries[i].val >= hex - } - } - idx := sort.Search(len(dst.entries), searchFunc) - if idx == len(dst.entries) || !checkShortMatch(dst.entries[idx].alg, dst.entries[idx].val, string(alg), hex) { - return "", ErrDigestNotFound - } - if dst.entries[idx].alg == alg && dst.entries[idx].val == hex { - return dst.entries[idx].digest, nil - } - if idx+1 < len(dst.entries) && checkShortMatch(dst.entries[idx+1].alg, dst.entries[idx+1].val, string(alg), hex) { - return "", ErrDigestAmbiguous - } - - return dst.entries[idx].digest, nil -} - -// Add adds the given digest to the set. An error will be returned -// if the given digest is invalid. If the digest already exists in the -// set, this operation will be a no-op. -func (dst *Set) Add(d Digest) error { - if err := d.Validate(); err != nil { - return err - } - dst.mutex.Lock() - defer dst.mutex.Unlock() - entry := &digestEntry{alg: d.Algorithm(), val: d.Hex(), digest: d} - searchFunc := func(i int) bool { - if dst.entries[i].val == entry.val { - return dst.entries[i].alg >= entry.alg - } - return dst.entries[i].val >= entry.val - } - idx := sort.Search(len(dst.entries), searchFunc) - if idx == len(dst.entries) { - dst.entries = append(dst.entries, entry) - return nil - } else if dst.entries[idx].digest == d { - return nil - } - - entries := append(dst.entries, nil) - copy(entries[idx+1:], entries[idx:len(entries)-1]) - entries[idx] = entry - dst.entries = entries - return nil -} - -// Remove removes the given digest from the set. An err will be -// returned if the given digest is invalid. If the digest does -// not exist in the set, this operation will be a no-op. -func (dst *Set) Remove(d Digest) error { - if err := d.Validate(); err != nil { - return err - } - dst.mutex.Lock() - defer dst.mutex.Unlock() - entry := &digestEntry{alg: d.Algorithm(), val: d.Hex(), digest: d} - searchFunc := func(i int) bool { - if dst.entries[i].val == entry.val { - return dst.entries[i].alg >= entry.alg - } - return dst.entries[i].val >= entry.val - } - idx := sort.Search(len(dst.entries), searchFunc) - // Not found if idx is after or value at idx is not digest - if idx == len(dst.entries) || dst.entries[idx].digest != d { - return nil - } - - entries := dst.entries - copy(entries[idx:], entries[idx+1:]) - entries = entries[:len(entries)-1] - dst.entries = entries - - return nil -} - -// All returns all the digests in the set -func (dst *Set) All() []Digest { - dst.mutex.RLock() - defer dst.mutex.RUnlock() - retValues := make([]Digest, len(dst.entries)) - for i := range dst.entries { - retValues[i] = dst.entries[i].digest - } - - return retValues -} - -// ShortCodeTable returns a map of Digest to unique short codes. The -// length represents the minimum value, the maximum length may be the -// entire value of digest if uniqueness cannot be achieved without the -// full value. This function will attempt to make short codes as short -// as possible to be unique. -func ShortCodeTable(dst *Set, length int) map[Digest]string { - dst.mutex.RLock() - defer dst.mutex.RUnlock() - m := make(map[Digest]string, len(dst.entries)) - l := length - resetIdx := 0 - for i := 0; i < len(dst.entries); i++ { - var short string - extended := true - for extended { - extended = false - if len(dst.entries[i].val) <= l { - short = dst.entries[i].digest.String() - } else { - short = dst.entries[i].val[:l] - for j := i + 1; j < len(dst.entries); j++ { - if checkShortMatch(dst.entries[j].alg, dst.entries[j].val, "", short) { - if j > resetIdx { - resetIdx = j - } - extended = true - } else { - break - } - } - if extended { - l++ - } - } - } - m[dst.entries[i].digest] = short - if i >= resetIdx { - l = length - } - } - return m -} - -type digestEntry struct { - alg Algorithm - val string - digest Digest -} - -type digestEntries []*digestEntry - -func (d digestEntries) Len() int { - return len(d) -} - -func (d digestEntries) Less(i, j int) bool { - if d[i].val != d[j].val { - return d[i].val < d[j].val - } - return d[i].alg < d[j].alg -} - -func (d digestEntries) Swap(i, j int) { - d[i], d[j] = d[j], d[i] -} diff --git a/vendor/github.com/docker/distribution/digest/verifiers.go b/vendor/github.com/docker/distribution/digest/verifiers.go deleted file mode 100644 index 9af3be13..00000000 --- a/vendor/github.com/docker/distribution/digest/verifiers.go +++ /dev/null @@ -1,44 +0,0 @@ -package digest - -import ( - "hash" - "io" -) - -// Verifier presents a general verification interface to be used with message -// digests and other byte stream verifications. Users instantiate a Verifier -// from one of the various methods, write the data under test to it then check -// the result with the Verified method. -type Verifier interface { - io.Writer - - // Verified will return true if the content written to Verifier matches - // the digest. - Verified() bool -} - -// NewDigestVerifier returns a verifier that compares the written bytes -// against a passed in digest. -func NewDigestVerifier(d Digest) (Verifier, error) { - if err := d.Validate(); err != nil { - return nil, err - } - - return hashVerifier{ - hash: d.Algorithm().Hash(), - digest: d, - }, nil -} - -type hashVerifier struct { - digest Digest - hash hash.Hash -} - -func (hv hashVerifier) Write(p []byte) (n int, err error) { - return hv.hash.Write(p) -} - -func (hv hashVerifier) Verified() bool { - return hv.digest == NewDigest(hv.digest.Algorithm(), hv.hash) -} diff --git a/vendor/github.com/docker/distribution/reference/reference.go b/vendor/github.com/docker/distribution/reference/reference.go deleted file mode 100644 index 02786628..00000000 --- a/vendor/github.com/docker/distribution/reference/reference.go +++ /dev/null @@ -1,370 +0,0 @@ -// Package reference provides a general type to represent any way of referencing images within the registry. -// Its main purpose is to abstract tags and digests (content-addressable hash). -// -// Grammar -// -// reference := name [ ":" tag ] [ "@" digest ] -// name := [hostname '/'] component ['/' component]* -// hostname := hostcomponent ['.' hostcomponent]* [':' port-number] -// hostcomponent := /([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])/ -// port-number := /[0-9]+/ -// component := alpha-numeric [separator alpha-numeric]* -// alpha-numeric := /[a-z0-9]+/ -// separator := /[_.]|__|[-]*/ -// -// tag := /[\w][\w.-]{0,127}/ -// -// digest := digest-algorithm ":" digest-hex -// digest-algorithm := digest-algorithm-component [ digest-algorithm-separator digest-algorithm-component ] -// digest-algorithm-separator := /[+.-_]/ -// digest-algorithm-component := /[A-Za-z][A-Za-z0-9]*/ -// digest-hex := /[0-9a-fA-F]{32,}/ ; At least 128 bit digest value -package reference - -import ( - "errors" - "fmt" - "path" - "strings" - - "github.com/docker/distribution/digest" -) - -const ( - // NameTotalLengthMax is the maximum total number of characters in a repository name. - NameTotalLengthMax = 255 -) - -var ( - // ErrReferenceInvalidFormat represents an error while trying to parse a string as a reference. - ErrReferenceInvalidFormat = errors.New("invalid reference format") - - // ErrTagInvalidFormat represents an error while trying to parse a string as a tag. - ErrTagInvalidFormat = errors.New("invalid tag format") - - // ErrDigestInvalidFormat represents an error while trying to parse a string as a tag. - ErrDigestInvalidFormat = errors.New("invalid digest format") - - // ErrNameContainsUppercase is returned for invalid repository names that contain uppercase characters. - ErrNameContainsUppercase = errors.New("repository name must be lowercase") - - // ErrNameEmpty is returned for empty, invalid repository names. - ErrNameEmpty = errors.New("repository name must have at least one component") - - // ErrNameTooLong is returned when a repository name is longer than NameTotalLengthMax. - ErrNameTooLong = fmt.Errorf("repository name must not be more than %v characters", NameTotalLengthMax) -) - -// Reference is an opaque object reference identifier that may include -// modifiers such as a hostname, name, tag, and digest. -type Reference interface { - // String returns the full reference - String() string -} - -// Field provides a wrapper type for resolving correct reference types when -// working with encoding. -type Field struct { - reference Reference -} - -// AsField wraps a reference in a Field for encoding. -func AsField(reference Reference) Field { - return Field{reference} -} - -// Reference unwraps the reference type from the field to -// return the Reference object. This object should be -// of the appropriate type to further check for different -// reference types. -func (f Field) Reference() Reference { - return f.reference -} - -// MarshalText serializes the field to byte text which -// is the string of the reference. -func (f Field) MarshalText() (p []byte, err error) { - return []byte(f.reference.String()), nil -} - -// UnmarshalText parses text bytes by invoking the -// reference parser to ensure the appropriately -// typed reference object is wrapped by field. -func (f *Field) UnmarshalText(p []byte) error { - r, err := Parse(string(p)) - if err != nil { - return err - } - - f.reference = r - return nil -} - -// Named is an object with a full name -type Named interface { - Reference - Name() string -} - -// Tagged is an object which has a tag -type Tagged interface { - Reference - Tag() string -} - -// NamedTagged is an object including a name and tag. -type NamedTagged interface { - Named - Tag() string -} - -// Digested is an object which has a digest -// in which it can be referenced by -type Digested interface { - Reference - Digest() digest.Digest -} - -// Canonical reference is an object with a fully unique -// name including a name with hostname and digest -type Canonical interface { - Named - Digest() digest.Digest -} - -// SplitHostname splits a named reference into a -// hostname and name string. If no valid hostname is -// found, the hostname is empty and the full value -// is returned as name -func SplitHostname(named Named) (string, string) { - name := named.Name() - match := anchoredNameRegexp.FindStringSubmatch(name) - if len(match) != 3 { - return "", name - } - return match[1], match[2] -} - -// Parse parses s and returns a syntactically valid Reference. -// If an error was encountered it is returned, along with a nil Reference. -// NOTE: Parse will not handle short digests. -func Parse(s string) (Reference, error) { - matches := ReferenceRegexp.FindStringSubmatch(s) - if matches == nil { - if s == "" { - return nil, ErrNameEmpty - } - if ReferenceRegexp.FindStringSubmatch(strings.ToLower(s)) != nil { - return nil, ErrNameContainsUppercase - } - return nil, ErrReferenceInvalidFormat - } - - if len(matches[1]) > NameTotalLengthMax { - return nil, ErrNameTooLong - } - - ref := reference{ - name: matches[1], - tag: matches[2], - } - if matches[3] != "" { - var err error - ref.digest, err = digest.ParseDigest(matches[3]) - if err != nil { - return nil, err - } - } - - r := getBestReferenceType(ref) - if r == nil { - return nil, ErrNameEmpty - } - - return r, nil -} - -// ParseNamed parses s and returns a syntactically valid reference implementing -// the Named interface. The reference must have a name, otherwise an error is -// returned. -// If an error was encountered it is returned, along with a nil Reference. -// NOTE: ParseNamed will not handle short digests. -func ParseNamed(s string) (Named, error) { - ref, err := Parse(s) - if err != nil { - return nil, err - } - named, isNamed := ref.(Named) - if !isNamed { - return nil, fmt.Errorf("reference %s has no name", ref.String()) - } - return named, nil -} - -// WithName returns a named object representing the given string. If the input -// is invalid ErrReferenceInvalidFormat will be returned. -func WithName(name string) (Named, error) { - if len(name) > NameTotalLengthMax { - return nil, ErrNameTooLong - } - if !anchoredNameRegexp.MatchString(name) { - return nil, ErrReferenceInvalidFormat - } - return repository(name), nil -} - -// WithTag combines the name from "name" and the tag from "tag" to form a -// reference incorporating both the name and the tag. -func WithTag(name Named, tag string) (NamedTagged, error) { - if !anchoredTagRegexp.MatchString(tag) { - return nil, ErrTagInvalidFormat - } - if canonical, ok := name.(Canonical); ok { - return reference{ - name: name.Name(), - tag: tag, - digest: canonical.Digest(), - }, nil - } - return taggedReference{ - name: name.Name(), - tag: tag, - }, nil -} - -// WithDigest combines the name from "name" and the digest from "digest" to form -// a reference incorporating both the name and the digest. -func WithDigest(name Named, digest digest.Digest) (Canonical, error) { - if !anchoredDigestRegexp.MatchString(digest.String()) { - return nil, ErrDigestInvalidFormat - } - if tagged, ok := name.(Tagged); ok { - return reference{ - name: name.Name(), - tag: tagged.Tag(), - digest: digest, - }, nil - } - return canonicalReference{ - name: name.Name(), - digest: digest, - }, nil -} - -// Match reports whether ref matches the specified pattern. -// See https://godoc.org/path#Match for supported patterns. -func Match(pattern string, ref Reference) (bool, error) { - matched, err := path.Match(pattern, ref.String()) - if namedRef, isNamed := ref.(Named); isNamed && !matched { - matched, _ = path.Match(pattern, namedRef.Name()) - } - return matched, err -} - -// TrimNamed removes any tag or digest from the named reference. -func TrimNamed(ref Named) Named { - return repository(ref.Name()) -} - -func getBestReferenceType(ref reference) Reference { - if ref.name == "" { - // Allow digest only references - if ref.digest != "" { - return digestReference(ref.digest) - } - return nil - } - if ref.tag == "" { - if ref.digest != "" { - return canonicalReference{ - name: ref.name, - digest: ref.digest, - } - } - return repository(ref.name) - } - if ref.digest == "" { - return taggedReference{ - name: ref.name, - tag: ref.tag, - } - } - - return ref -} - -type reference struct { - name string - tag string - digest digest.Digest -} - -func (r reference) String() string { - return r.name + ":" + r.tag + "@" + r.digest.String() -} - -func (r reference) Name() string { - return r.name -} - -func (r reference) Tag() string { - return r.tag -} - -func (r reference) Digest() digest.Digest { - return r.digest -} - -type repository string - -func (r repository) String() string { - return string(r) -} - -func (r repository) Name() string { - return string(r) -} - -type digestReference digest.Digest - -func (d digestReference) String() string { - return d.String() -} - -func (d digestReference) Digest() digest.Digest { - return digest.Digest(d) -} - -type taggedReference struct { - name string - tag string -} - -func (t taggedReference) String() string { - return t.name + ":" + t.tag -} - -func (t taggedReference) Name() string { - return t.name -} - -func (t taggedReference) Tag() string { - return t.tag -} - -type canonicalReference struct { - name string - digest digest.Digest -} - -func (c canonicalReference) String() string { - return c.name + "@" + c.digest.String() -} - -func (c canonicalReference) Name() string { - return c.name -} - -func (c canonicalReference) Digest() digest.Digest { - return c.digest -} diff --git a/vendor/github.com/docker/distribution/reference/regexp.go b/vendor/github.com/docker/distribution/reference/regexp.go deleted file mode 100644 index 9a7d366b..00000000 --- a/vendor/github.com/docker/distribution/reference/regexp.go +++ /dev/null @@ -1,124 +0,0 @@ -package reference - -import "regexp" - -var ( - // alphaNumericRegexp defines the alpha numeric atom, typically a - // component of names. This only allows lower case characters and digits. - alphaNumericRegexp = match(`[a-z0-9]+`) - - // separatorRegexp defines the separators allowed to be embedded in name - // components. This allow one period, one or two underscore and multiple - // dashes. - separatorRegexp = match(`(?:[._]|__|[-]*)`) - - // nameComponentRegexp restricts registry path component names to start - // with at least one letter or number, with following parts able to be - // separated by one period, one or two underscore and multiple dashes. - nameComponentRegexp = expression( - alphaNumericRegexp, - optional(repeated(separatorRegexp, alphaNumericRegexp))) - - // hostnameComponentRegexp restricts the registry hostname component of a - // repository name to start with a component as defined by hostnameRegexp - // and followed by an optional port. - hostnameComponentRegexp = match(`(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])`) - - // hostnameRegexp defines the structure of potential hostname components - // that may be part of image names. This is purposely a subset of what is - // allowed by DNS to ensure backwards compatibility with Docker image - // names. - hostnameRegexp = expression( - hostnameComponentRegexp, - optional(repeated(literal(`.`), hostnameComponentRegexp)), - optional(literal(`:`), match(`[0-9]+`))) - - // TagRegexp matches valid tag names. From docker/docker:graph/tags.go. - TagRegexp = match(`[\w][\w.-]{0,127}`) - - // anchoredTagRegexp matches valid tag names, anchored at the start and - // end of the matched string. - anchoredTagRegexp = anchored(TagRegexp) - - // DigestRegexp matches valid digests. - DigestRegexp = match(`[A-Za-z][A-Za-z0-9]*(?:[-_+.][A-Za-z][A-Za-z0-9]*)*[:][[:xdigit:]]{32,}`) - - // anchoredDigestRegexp matches valid digests, anchored at the start and - // end of the matched string. - anchoredDigestRegexp = anchored(DigestRegexp) - - // NameRegexp is the format for the name component of references. The - // regexp has capturing groups for the hostname and name part omitting - // the separating forward slash from either. - NameRegexp = expression( - optional(hostnameRegexp, literal(`/`)), - nameComponentRegexp, - optional(repeated(literal(`/`), nameComponentRegexp))) - - // anchoredNameRegexp is used to parse a name value, capturing the - // hostname and trailing components. - anchoredNameRegexp = anchored( - optional(capture(hostnameRegexp), literal(`/`)), - capture(nameComponentRegexp, - optional(repeated(literal(`/`), nameComponentRegexp)))) - - // ReferenceRegexp is the full supported format of a reference. The regexp - // is anchored and has capturing groups for name, tag, and digest - // components. - ReferenceRegexp = anchored(capture(NameRegexp), - optional(literal(":"), capture(TagRegexp)), - optional(literal("@"), capture(DigestRegexp))) -) - -// match compiles the string to a regular expression. -var match = regexp.MustCompile - -// literal compiles s into a literal regular expression, escaping any regexp -// reserved characters. -func literal(s string) *regexp.Regexp { - re := match(regexp.QuoteMeta(s)) - - if _, complete := re.LiteralPrefix(); !complete { - panic("must be a literal") - } - - return re -} - -// expression defines a full expression, where each regular expression must -// follow the previous. -func expression(res ...*regexp.Regexp) *regexp.Regexp { - var s string - for _, re := range res { - s += re.String() - } - - return match(s) -} - -// optional wraps the expression in a non-capturing group and makes the -// production optional. -func optional(res ...*regexp.Regexp) *regexp.Regexp { - return match(group(expression(res...)).String() + `?`) -} - -// repeated wraps the regexp in a non-capturing group to get one or more -// matches. -func repeated(res ...*regexp.Regexp) *regexp.Regexp { - return match(group(expression(res...)).String() + `+`) -} - -// group wraps the regexp in a non-capturing group. -func group(res ...*regexp.Regexp) *regexp.Regexp { - return match(`(?:` + expression(res...).String() + `)`) -} - -// capture wraps the expression in a capturing group. -func capture(res ...*regexp.Regexp) *regexp.Regexp { - return match(`(` + expression(res...).String() + `)`) -} - -// anchored anchors the regular expression by adding start and end delimiters. -func anchored(res ...*regexp.Regexp) *regexp.Regexp { - return match(`^` + expression(res...).String() + `$`) -} diff --git a/vendor/github.com/docker/docker/AUTHORS b/vendor/github.com/docker/docker/AUTHORS deleted file mode 100644 index 246e2a33..00000000 --- a/vendor/github.com/docker/docker/AUTHORS +++ /dev/null @@ -1,1652 +0,0 @@ -# This file lists all individuals having contributed content to the repository. -# For how it is generated, see `hack/generate-authors.sh`. - -Aanand Prasad -Aaron Davidson -Aaron Feng -Aaron Huslage -Aaron Lehmann -Aaron Welch -Abel Muiño -Abhijeet Kasurde -Abhinav Ajgaonkar -Abhishek Chanda -Abin Shahab -Adam Avilla -Adam Kunk -Adam Miller -Adam Mills -Adam Singer -Adam Walz -Aditi Rajagopal -Aditya -Adolfo Ochagavía -Adria Casas -Adrian Moisey -Adrian Mouat -Adrian Oprea -Adrien Folie -Adrien Gallouët -Ahmed Kamal -Ahmet Alp Balkan -Aidan Feldman -Aidan Hobson Sayers -AJ Bowen -Ajey Charantimath -ajneu -Akihiro Suda -Al Tobey -alambike -Alan Scherger -Alan Thompson -Albert Callarisa -Albert Zhang -Aleksa Sarai -Aleksandrs Fadins -Alena Prokharchyk -Alessandro Boch -Alessio Biancalana -Alex Chan -Alex Coventry -Alex Crawford -Alex Ellis -Alex Gaynor -Alex Olshansky -Alex Samorukov -Alex Warhawk -Alexander Artemenko -Alexander Boyd -Alexander Larsson -Alexander Morozov -Alexander Shopov -Alexandre Beslic -Alexandre González -Alexandru Sfirlogea -Alexey Guskov -Alexey Kotlyarov -Alexey Shamrin -Alexis THOMAS -Ali Dehghani -Allen Madsen -Allen Sun -almoehi -Alvaro Saurin -Alvin Richards -amangoel -Amen Belayneh -Amit Bakshi -Amit Krishnan -Amit Shukla -Amy Lindburg -Anand Patil -AnandkumarPatel -Anatoly Borodin -Anchal Agrawal -Anders Janmyr -Andre Dublin <81dublin@gmail.com> -Andre Granovsky -Andrea Luzzardi -Andrea Turli -Andreas Köhler -Andreas Savvides -Andreas Tiefenthaler -Andrei Gherzan -Andrew C. Bodine -Andrew Clay Shafer -Andrew Duckworth -Andrew France -Andrew Gerrand -Andrew Guenther -Andrew Kuklewicz -Andrew Macgregor -Andrew Macpherson -Andrew Martin -Andrew Munsell -Andrew Po -Andrew Weiss -Andrew Williams -Andrews Medina -Andrey Petrov -Andrey Stolbovsky -André Martins -andy -Andy Chambers -andy diller -Andy Goldstein -Andy Kipp -Andy Rothfusz -Andy Smith -Andy Wilson -Anes Hasicic -Anil Belur -Anil Madhavapeddy -Ankush Agarwal -Anonmily -Anthon van der Neut -Anthony Baire -Anthony Bishopric -Anthony Dahanne -Anton Löfgren -Anton Nikitin -Anton Polonskiy -Anton Tiurin -Antonio Murdaca -Antonis Kalipetis -Antony Messerli -Anuj Bahuguna -Anusha Ragunathan -apocas -ArikaChen -Arnaud Lefebvre -Arnaud Porterie -Arthur Barr -Arthur Gautier -Artur Meyster -Arun Gupta -Asbjørn Enge -averagehuman -Avi Das -Avi Miller -Avi Vaid -ayoshitake -Azat Khuyiyakhmetov -Bardia Keyoumarsi -Barnaby Gray -Barry Allard -Bartłomiej Piotrowski -Bastiaan Bakker -bdevloed -Ben Firshman -Ben Golub -Ben Hall -Ben Sargent -Ben Severson -Ben Toews -Ben Wiklund -Benjamin Atkin -Benoit Chesneau -Bernerd Schaefer -Bert Goethals -Bharath Thiruveedula -Bhiraj Butala -Bilal Amarni -Bill W -bin liu -Blake Geno -Boaz Shuster -bobby abbott -boucher -Bouke Haarsma -Boyd Hemphill -boynux -Bradley Cicenas -Bradley Wright -Brandon Liu -Brandon Philips -Brandon Rhodes -Brendan Dixon -Brent Salisbury -Brett Higgins -Brett Kochendorfer -Brian (bex) Exelbierd -Brian Bland -Brian DeHamer -Brian Dorsey -Brian Flad -Brian Goff -Brian McCallister -Brian Olsen -Brian Shumate -Brian Torres-Gil -Brian Trump -Brice Jaglin -Briehan Lombaard -Bruno Bigras -Bruno Binet -Bruno Gazzera -Bruno Renié -Bryan Bess -Bryan Boreham -Bryan Matsuo -Bryan Murphy -buddhamagnet -Burke Libbey -Byung Kang -Caleb Spare -Calen Pennington -Cameron Boehmer -Cameron Spear -Campbell Allen -Candid Dauth -Cao Weiwei -Carl Henrik Lunde -Carl Loa Odin -Carl X. Su -Carlos Alexandro Becker -Carlos Sanchez -Carol Fager-Higgins -Cary -Casey Bisson -Cedric Davies -Cezar Sa Espinola -Chad Swenson -Chance Zibolski -Chander G -Charles Chan -Charles Hooper -Charles Law -Charles Lindsay -Charles Merriam -Charles Sarrazin -Charles Smith -Charlie Lewis -Chase Bolt -ChaYoung You -Chen Chao -Chen Hanxiao -cheney90 -Chewey -Chia-liang Kao -chli -Cholerae Hu -Chris Alfonso -Chris Armstrong -Chris Dituri -Chris Fordham -Chris Khoo -Chris McKinnel -Chris Seto -Chris Snow -Chris St. Pierre -Chris Stivers -Chris Swan -Chris Wahl -Chris Weyl -chrismckinnel -Christian Berendt -Christian Böhme -Christian Persson -Christian Rotzoll -Christian Simon -Christian Stefanescu -ChristoperBiscardi -Christophe Mehay -Christophe Troestler -Christopher Currie -Christopher Jones -Christopher Latham -Christopher Rigor -Christy Perez -Chun Chen -Ciro S. Costa -Clayton Coleman -Clinton Kitson -Coenraad Loubser -Colin Dunklau -Colin Rice -Colin Walters -Collin Guarino -Colm Hally -companycy -Cory Forsyth -cressie176 -CrimsonGlory -Cristian Staretu -cristiano balducci -Cruceru Calin-Cristian -Cyril F -Daan van Berkel -Daehyeok Mun -Dafydd Crosby -dalanlan -Damian Smyth -Damien Nadé -Damien Nozay -Damjan Georgievski -Dan Anolik -Dan Buch -Dan Cotora -Dan Feldman -Dan Griffin -Dan Hirsch -Dan Keder -Dan Levy -Dan McPherson -Dan Stine -Dan Walsh -Dan Williams -Daniel Antlinger -Daniel Exner -Daniel Farrell -Daniel Garcia -Daniel Gasienica -Daniel Hiltgen -Daniel Menet -Daniel Mizyrycki -Daniel Nephin -Daniel Norberg -Daniel Nordberg -Daniel Robinson -Daniel S -Daniel Von Fange -Daniel X Moore -Daniel YC Lin -Daniel Zhang -Daniel, Dao Quang Minh -Danny Berger -Danny Yates -Darren Coxall -Darren Shepherd -Darren Stahl -Davanum Srinivas -Dave Barboza -Dave Henderson -Dave MacDonald -Dave Tucker -David Anderson -David Calavera -David Corking -David Cramer -David Currie -David Davis -David Dooling -David Gageot -David Gebler -David Lawrence -David Lechner -David M. Karr -David Mackey -David Mat -David Mcanulty -David Pelaez -David R. Jenni -David Röthlisberger -David Sheets -David Sissitka -David Trott -David Xia -David Young -Davide Ceretti -Dawn Chen -dbdd -dcylabs -decadent -deed02392 -Deng Guangxing -Deni Bertovic -Denis Gladkikh -Denis Ollier -Dennis Docter -Derek -Derek -Derek Ch -Derek McGowan -Deric Crago -Deshi Xiao -devmeyster -Devvyn Murphy -Dharmit Shah -Dieter Reuter -Dillon Dixon -Dima Stopel -Dimitri John Ledkov -Dimitris Rozakis -Dimitry Andric -Dinesh Subhraveti -Diogo Monica -DiuDiugirl -Djibril Koné -dkumor -Dmitri Logvinenko -Dmitri Shuralyov -Dmitry Demeshchuk -Dmitry Gusev -Dmitry Smirnov -Dmitry V. Krivenok -Dmitry Vorobev -Dolph Mathews -Dominik Finkbeiner -Dominik Honnef -Don Kirkby -Don Kjer -Don Spaulding -Donald Huang -Dong Chen -Donovan Jones -Doron Podoleanu -Doug Davis -Doug MacEachern -Doug Tangren -Dr Nic Williams -dragon788 -Dražen Lučanin -Drew Erny -Dustin Sallings -Ed Costello -Edmund Wagner -Eiichi Tsukata -Eike Herzbach -Eivin Giske Skaaren -Eivind Uggedal -Elan Ruusamäe -Elias Probst -Elijah Zupancic -eluck -Elvir Kuric -Emil Hernvall -Emily Maier -Emily Rose -Emir Ozer -Enguerran -Eohyung Lee -Eric Barch -Eric Hanchrow -Eric Lee -Eric Myhre -Eric Paris -Eric Rafaloff -Eric Rosenberg -Eric Sage -Eric Windisch -Eric Yang -Eric-Olivier Lamey -Erik Bray -Erik Dubbelboer -Erik Hollensbe -Erik Inge Bolsø -Erik Kristensen -Erik Weathers -Erno Hopearuoho -Erwin van der Koogh -Euan -Eugene Yakubovich -eugenkrizo -evalle -Evan Allrich -Evan Carmi -Evan Hazlett -Evan Krall -Evan Phoenix -Evan Wies -Everett Toews -Evgeny Vereshchagin -Ewa Czechowska -Eystein Måløy Stenberg -ezbercih -Fabiano Rosas -Fabio Falci -Fabio Rapposelli -Fabio Rehm -Fabrizio Regini -Fabrizio Soppelsa -Faiz Khan -falmp -Fangyuan Gao <21551127@zju.edu.cn> -Fareed Dudhia -Fathi Boudra -Federico Gimenez -Felix Geisendörfer -Felix Hupfeld -Felix Rabe -Felix Ruess -Felix Schindler -Ferenc Szabo -Fernando -Fero Volar -Ferran Rodenas -Filipe Brandenburger -Filipe Oliveira -fl0yd -Flavio Castelli -FLGMwt -Florian -Florian Klein -Florian Maier -Florian Weingarten -Florin Asavoaie -fonglh -fortinux -Francesc Campoy -Francis Chuang -Francisco Carriedo -Francisco Souza -Frank Groeneveld -Frank Herrmann -Frank Macreery -Frank Rosquin -Fred Lifton -Frederick F. Kautz IV -Frederik Loeffert -Frederik Nordahl Jul Sabroe -Freek Kalter -frosforever -fy2462 -Félix Baylac-Jacqué -Félix Cantournet -Gabe Rosenhouse -Gabor Nagy -Gabriel Monroy -GabrielNicolasAvellaneda -Galen Sampson -Gareth Rushgrove -Garrett Barboza -Gaurav -gautam, prasanna -GennadySpb -Geoffrey Bachelet -George MacRorie -George Xie -Georgi Hristozov -Gereon Frey -German DZ -Gert van Valkenhoef -Gianluca Borello -Gildas Cuisinier -gissehel -Giuseppe Mazzotta -Gleb Fotengauer-Malinovskiy -Gleb M Borisov -Glyn Normington -GoBella -Goffert van Gool -Gosuke Miyashita -Gou Rao -Govinda Fichtner -Grant Reaber -Graydon Hoare -Greg Fausak -Greg Thornton -grossws -grunny -gs11 -Guilhem Lettron -Guilherme Salgado -Guillaume Dufour -Guillaume J. Charmes -guoxiuyan -Gurjeet Singh -Guruprasad -gwx296173 -Günter Zöchbauer -Hans Kristian Flaatten -Hans Rødtang -Hao Shu Wei -Hao Zhang <21521210@zju.edu.cn> -Harald Albers -Harley Laue -Harold Cooper -Harry Zhang -He Simei -heartlock <21521209@zju.edu.cn> -Hector Castro -Henning Sprang -Hobofan -Hollie Teal -Hong Xu -hsinko <21551195@zju.edu.cn> -Hu Keping -Hu Tao -Huanzhong Zhang -Huayi Zhang -Hugo Duncan -Hugo Marisco <0x6875676f@gmail.com> -Hunter Blanks -huqun -Huu Nguyen -hyeongkyu.lee -hyp3rdino -Hyzhou <1187766782@qq.com> -Ian Babrou -Ian Bishop -Ian Bull -Ian Calvert -Ian Lee -Ian Main -Ian Truslove -Iavael -Icaro Seara -Igor Dolzhikov -Ilkka Laukkanen -Ilya Dmitrichenko -Ilya Gusev -ILYA Khlopotov -imre Fitos -inglesp -Ingo Gottwald -Isaac Dupree -Isabel Jimenez -Isao Jonas -Ivan Babrou -Ivan Fraixedes -Ivan Grcic -J Bruni -J. Nunn -Jack Danger Canty -Jacob Atzen -Jacob Edelman -Jake Champlin -Jake Moshenko -jakedt -James Allen -James Carey -James Carr -James DeFelice -James Harrison Fisher -James Kyburz -James Kyle -James Lal -James Mills -James Nugent -James Turnbull -Jamie Hannaford -Jamshid Afshar -Jan Keromnes -Jan Koprowski -Jan Pazdziora -Jan Toebes -Jan-Gerd Tenberge -Jan-Jaap Driessen -Jana Radhakrishnan -Jannick Fahlbusch -Januar Wayong -Jared Biel -Jared Hocutt -Jaroslaw Zabiello -jaseg -Jasmine Hegman -Jason Divock -Jason Giedymin -Jason Green -Jason Hall -Jason Heiss -Jason Livesay -Jason McVetta -Jason Plum -Jason Shepherd -Jason Smith -Jason Sommer -Jason Stangroome -jaxgeller -Jay -Jay -Jay Kamat -Jean-Baptiste Barth -Jean-Baptiste Dalido -Jean-Paul Calderone -Jean-Tiare Le Bigot -Jeff Anderson -Jeff Johnston -Jeff Lindsay -Jeff Mickey -Jeff Minard -Jeff Nickoloff -Jeff Silberman -Jeff Welch -Jeffrey Bolle -Jeffrey Morgan -Jeffrey van Gogh -Jenny Gebske -Jeremy Grosser -Jeremy Price -Jeremy Qian -Jeremy Unruh -Jeroen Jacobs -Jesse Dearing -Jesse Dubay -Jessica Frazelle -Jezeniel Zapanta -jgeiger -Jhon Honce -Ji.Zhilong -Jian Zhang -jianbosun -Jilles Oldenbeuving -Jim Alateras -Jim Perrin -Jimmy Cuadra -Jimmy Puckett -jimmyxian -Jinsoo Park -Jiri Popelka -Jiří Župka -jjy -jmzwcn -Joao Fernandes -Joe Beda -Joe Doliner -Joe Ferguson -Joe Gordon -Joe Shaw -Joe Van Dyk -Joel Friedly -Joel Handwell -Joel Hansson -Joel Wurtz -Joey Geiger -Joey Gibson -Joffrey F -Johan Euphrosine -Johan Rydberg -Johanan Lieberman -Johannes 'fish' Ziemke -John Costa -John Feminella -John Gardiner Myers -John Gossman -John Howard (VM) -John OBrien III -John Starks -John Tims -John Warwick -John Willis -johnharris85 -Jon Wedaman -Jonas Pfenniger -Jonathan A. Sternberg -Jonathan Boulle -Jonathan Camp -Jonathan Dowland -Jonathan Lebon -Jonathan Lomas -Jonathan McCrohan -Jonathan Mueller -Jonathan Pares -Jonathan Rudenberg -Jonathan Stoppani -Joost Cassee -Jordan -Jordan Arentsen -Jordan Sissel -Jose Diaz-Gonzalez -Joseph Anthony Pasquale Holsten -Joseph Hager -Joseph Kern -Josh -Josh Bodah -Josh Chorlton -Josh Hawn -Josh Horwitz -Josh Poimboeuf -Josiah Kiehl -José Tomás Albornoz -JP -jrabbit -Julian Taylor -Julien Barbier -Julien Bisconti -Julien Bordellier -Julien Dubois -Julien Pervillé -Julio Montes -Jun-Ru Chang -Jussi Nummelin -Justas Brazauskas -Justin Cormack -Justin Force -Justin Plock -Justin Simonelis -Justin Terry -Justyn Temme -Jyrki Puttonen -Jérôme Petazzoni -Jörg Thalheim -Kai Blin -Kai Qiang Wu(Kennan) -Kamil Domański -kamjar gerami -Kanstantsin Shautsou -Kara Alexandra -Karan Lyons -Kareem Khazem -kargakis -Karl Grzeszczak -Karol Duleba -Katie McLaughlin -Kato Kazuyoshi -Katrina Owen -Kawsar Saiyeed -kayrus -Ke Xu -Keith Hudgins -Keli Hu -Ken Cochrane -Ken Herner -Ken ICHIKAWA -Kenfe-Mickaël Laventure -Kenjiro Nakayama -Kent Johnson -Kevin "qwazerty" Houdebert -Kevin Burke -Kevin Clark -Kevin J. Lynagh -Kevin Jing Qiu -Kevin Menard -Kevin P. Kucharczyk -Kevin Richardson -Kevin Shi -Kevin Wallace -Kevin Yap -kevinmeredith -Keyvan Fatehi -kies -Kim BKC Carlbacker -Kim Eik -Kimbro Staken -Kir Kolyshkin -Kiran Gangadharan -Kirill Kolyshkin -Kirill SIbirev -knappe -Kohei Tsuruta -Koichi Shiraishi -Konrad Kleine -Konstantin L -Konstantin Pelykh -Krasimir Georgiev -Kris-Mikael Krister -Kristian Haugene -Kristina Zabunova -krrg -Kun Zhang -Kunal Kushwaha -Kyle Conroy -Kyle Linden -kyu -Lachlan Coote -Lai Jiangshan -Lajos Papp -Lakshan Perera -Lalatendu Mohanty -lalyos -Lance Chen -Lance Kinley -Lars Butler -Lars Kellogg-Stedman -Lars R. Damerow -Laszlo Meszaros -Laurent Erignoux -Laurie Voss -Leandro Siqueira -Lee Chao <932819864@qq.com> -Lee, Meng-Han -leeplay -Lei Jitang -Len Weincier -Lennie -Leszek Kowalski -Levi Blackstone -Levi Gross -Lewis Marshall -Lewis Peckover -Liam Macgillavry -Liana Lo -Liang Mingqiang -Liang-Chi Hsieh -liaoqingwei -limsy -Lin Lu -LingFaKe -Linus Heckemann -Liran Tal -Liron Levin -Liu Bo -Liu Hua -lixiaobing10051267 -LIZAO LI -Lloyd Dewolf -Lokesh Mandvekar -longliqiang88 <394564827@qq.com> -Lorenz Leutgeb -Lorenzo Fontana -Louis Opter -Luca Marturana -Luca Orlandi -Luca-Bogdan Grigorescu -Lucas Chan -Lucas Chi -Luciano Mores -Luis Martínez de Bartolomé Izquierdo -Lukas Waslowski -lukaspustina -Lukasz Zajaczkowski -lukemarsden -Lynda O'Leary -Lénaïc Huard -Ma Shimiao -Mabin -Madhav Puri -Madhu Venugopal -Mageee <21521230.zju.edu.cn> -Mahesh Tiyyagura -malnick -Malte Janduda -manchoz -Manfred Touron -Manfred Zabarauskas -Mansi Nahar -mansinahar -Manuel Meurer -Manuel Woelker -mapk0y -Marc Abramowitz -Marc Kuo -Marc Tamsky -Marcelo Salazar -Marco Hennings -Marcus Farkas -Marcus Linke -Marcus Ramberg -Marek Goldmann -Marian Marinov -Marianna Tessel -Mario Loriedo -Marius Gundersen -Marius Sturm -Marius Voila -Mark Allen -Mark McGranaghan -Mark McKinstry -Mark West -Marko Mikulicic -Marko Tibold -Markus Fix -Martijn Dwars -Martijn van Oosterhout -Martin Honermeyer -Martin Kelly -Martin Mosegaard Amdisen -Martin Redmond -Mary Anthony -Masahito Zembutsu -Mason Malone -Mateusz Sulima -Mathias Monnerville -Mathieu Le Marec - Pasquet -Matt Apperson -Matt Bachmann -Matt Bentley -Matt Haggard -Matt Hoyle -Matt McCormick -Matt Moore -Matt Richardson -Matt Robenolt -Matthew Heon -Matthew Mayer -Matthew Mueller -Matthew Riley -Matthias Klumpp -Matthias Kühnle -Matthias Rampke -Matthieu Hauglustaine -mattymo -mattyw -Mauricio Garavaglia -mauriyouth -Max Shytikov -Maxim Fedchyshyn -Maxim Ivanov -Maxim Kulkin -Maxim Treskin -Maxime Petazzoni -Meaglith Ma -meejah -Megan Kostick -Mehul Kar -Mei ChunTao -Mengdi Gao -Mert Yazıcıoğlu -mgniu -Micah Zoltu -Michael A. Smith -Michael Bridgen -Michael Brown -Michael Chiang -Michael Crosby -Michael Currie -Michael Friis -Michael Gorsuch -Michael Grauer -Michael Holzheu -Michael Hudson-Doyle -Michael Huettermann -Michael Käufl -Michael Neale -Michael Prokop -Michael Scharf -Michael Stapelberg -Michael Steinert -Michael Thies -Michael West -Michal Fojtik -Michal Gebauer -Michal Jemala -Michal Minar -Michal Wieczorek -Michaël Pailloncy -Michał Czeraszkiewicz -Michiel@unhosted -Mickaël FORTUNATO -Miguel Angel Fernández -Miguel Morales -Mihai Borobocea -Mihuleacc Sergiu -Mike Brown -Mike Chelen -Mike Danese -Mike Dillon -Mike Dougherty -Mike Gaffney -Mike Goelzer -Mike Leone -Mike MacCana -Mike Naberezny -Mike Snitzer -mikelinjie <294893458@qq.com> -Mikhail Sobolev -Miloslav Trmač -mingqing -Mingzhen Feng -Misty Stanley-Jones -Mitch Capper -mlarcher -Mohammad Banikazemi -Mohammed Aaqib Ansari -Mohit Soni -Morgan Bauer -Morgante Pell -Morgy93 -Morten Siebuhr -Morton Fox -Moysés Borges -mqliang -Mrunal Patel -msabansal -mschurenko -muge -Mustafa Akın -Muthukumar R -Máximo Cuadros -Médi-Rémi Hashim -Nahum Shalman -Nakul Pathak -Nalin Dahyabhai -Nan Monnand Deng -Naoki Orii -Natalie Parker -Natanael Copa -Nate Brennand -Nate Eagleson -Nate Jones -Nathan Hsieh -Nathan Kleyn -Nathan LeClaire -Nathan McCauley -Nathan Williams -Neal McBurnett -Neil Peterson -Nelson Chen -Neyazul Haque -Nghia Tran -Niall O'Higgins -Nicholas E. Rabenau -nick -Nick DeCoursin -Nick Irvine -Nick Parker -Nick Payne -Nick Stenning -Nick Stinemates -Nicola Kabar -Nicolas Borboën -Nicolas De loof -Nicolas Dudebout -Nicolas Goy -Nicolas Kaiser -Nicolás Hock Isaza -Nigel Poulton -NikolaMandic -nikolas -Nirmal Mehta -Nishant Totla -NIWA Hideyuki -noducks -Nolan Darilek -nponeccop -Nuutti Kotivuori -nzwsch -O.S. Tezer -objectified -OddBloke -odk- -Oguz Bilgic -Oh Jinkyun -Ohad Schneider -ohmystack -Ole Reifschneider -Oliver Neal -Olivier Gambier -Olle Jonsson -Oriol Francès -orkaa -Oskar Niburski -Otto Kekäläinen -oyld -ozlerhakan -paetling -pandrew -panticz -Paolo G. Giarrusso -Pascal Borreli -Pascal Hartig -Patrick Böänziger -Patrick Devine -Patrick Hemmer -Patrick Stapleton -pattichen -Paul -paul -Paul Annesley -Paul Bellamy -Paul Bowsher -Paul Furtado -Paul Hammond -Paul Jimenez -Paul Lietar -Paul Liljenberg -Paul Morie -Paul Nasrat -Paul Weaver -Paulo Ribeiro -Pavel Lobashov -Pavel Pospisil -Pavel Sutyrin -Pavel Tikhomirov -Pavlos Ratis -Pavol Vargovcik -Peeyush Gupta -Peggy Li -Pei Su -Penghan Wang -perhapszzy@sina.com -pestophagous -Peter Bourgon -Peter Braden -Peter Choi -Peter Dave Hello -Peter Edge -Peter Ericson -Peter Esbensen -Peter Malmgren -Peter Salvatore -Peter Volpe -Peter Waller -Petr Švihlík -Phil -Phil Estes -Phil Spitler -Philip Monroe -Philipp Wahala -Philipp Weissensteiner -Phillip Alexander -pidster -Piergiuliano Bossi -Pierre -Pierre Carrier -Pierre Dal-Pra -Pierre Wacrenier -Pierre-Alain RIVIERE -Piotr Bogdan -pixelistik -Porjo -Poul Kjeldager Sørensen -Pradeep Chhetri -Prasanna Gautam -Prayag Verma -Przemek Hejman -pysqz -qg <1373319223@qq.com> -qhuang -Qiang Huang -qq690388648 <690388648@qq.com> -Quentin Brossard -Quentin Perez -Quentin Tayssier -r0n22 -Rafal Jeczalik -Rafe Colton -Raghavendra K T -Raghuram Devarakonda -Rajat Pandit -Rajdeep Dua -Ralf Sippl -Ralle -Ralph Bean -Ramkumar Ramachandra -Ramon Brooker -Ramon van Alteren -Ray Tsang -ReadmeCritic -Recursive Madman -Regan McCooey -Remi Rampin -Renato Riccieri Santos Zannon -resouer -rgstephens -Rhys Hiltner -Rich Moyse -Rich Seymour -Richard -Richard Burnison -Richard Harvey -Richard Mathie -Richard Metzler -Richard Scothern -Richo Healey -Rick Bradley -Rick van de Loo -Rick Wieman -Rik Nijessen -Riku Voipio -Riley Guerin -Ritesh H Shukla -Riyaz Faizullabhoy -Rob Vesse -Robert Bachmann -Robert Bittle -Robert Obryk -Robert Stern -Robert Terhaar -Robert Wallis -Roberto G. Hashioka -Robin Naundorf -Robin Schneider -Robin Speekenbrink -robpc -Rodolfo Carvalho -Rodrigo Vaz -Roel Van Nyen -Roger Peppe -Rohit Jnagal -Rohit Kadam -Roland Huß -Roland Kammerer -Roland Moriz -Roma Sokolov -Roman Strashkin -Ron Smits -Ron Williams -root -root -root -root -root -Rory Hunter -Rory McCune -Ross Boucher -Rovanion Luckey -Rozhnov Alexandr -rsmoorthy -Rudolph Gottesheim -Rui Lopes -Runshen Zhu -Ryan Anderson -Ryan Aslett -Ryan Belgrave -Ryan Detzel -Ryan Fowler -Ryan McLaughlin -Ryan O'Donnell -Ryan Seto -Ryan Thomas -Ryan Trauntvein -Ryan Wallner -RyanDeng -Rémy Greinhofer -s. rannou -s00318865 -Sabin Basyal -Sachin Joshi -Sagar Hani -Sainath Grandhi -sakeven -Sally O'Malley -Sam Abed -Sam Alba -Sam Bailey -Sam J Sharpe -Sam Neirinck -Sam Reis -Sam Rijs -Sambuddha Basu -Sami Wagiaalla -Samuel Andaya -Samuel Dion-Girardeau -Samuel Karp -Samuel PHAN -Sankar சங்கர் -Sanket Saurav -Santhosh Manohar -sapphiredev -Satnam Singh -satoru -Satoshi Amemiya -Satoshi Tagomori -scaleoutsean -Scott Bessler -Scott Collier -Scott Johnston -Scott Stamp -Scott Walls -sdreyesg -Sean Christopherson -Sean Cronin -Sean OMeara -Sean P. Kane -Sebastiaan van Steenis -Sebastiaan van Stijn -Senthil Kumar Selvaraj -Senthil Kumaran -SeongJae Park -Seongyeol Lim -Serge Hallyn -Sergey Alekseev -Sergey Evstifeev -Serhat Gülçiçek -Sevki Hasirci -Shane Canon -Shane da Silva -shaunol -Shawn Landden -Shawn Siefkas -shawnhe -Shekhar Gulati -Sheng Yang -Shengbo Song -Shev Yan -Shih-Yuan Lee -Shijiang Wei -Shishir Mahajan -Shoubhik Bose -Shourya Sarcar -shuai-z -Shukui Yang -Shuwei Hao -Sian Lerk Lau -sidharthamani -Silas Sewell -Simei He -Simon Eskildsen -Simon Leinen -Simon Taranto -Sindhu S -Sjoerd Langkemper -skaasten -Solganik Alexander -Solomon Hykes -Song Gao -Soshi Katsuta -Soulou -Spencer Brown -Spencer Smith -Sridatta Thatipamala -Sridhar Ratnakumar -Srini Brahmaroutu -srinsriv -Steeve Morin -Stefan Berger -Stefan J. Wernli -Stefan Praszalowicz -Stefan Scherer -Stefan Staudenmeyer -Stefan Weil -Stephen Crosby -Stephen Day -Stephen Drake -Stephen Rust -Steve Durrheimer -Steve Francia -Steve Koch -Steven Burgess -Steven Erenst -Steven Iveson -Steven Merrill -Steven Richards -Steven Taylor -Subhajit Ghosh -Sujith Haridasan -Suryakumar Sudar -Sven Dowideit -Swapnil Daingade -Sylvain Baubeau -Sylvain Bellemare -Sébastien -Sébastien Luttringer -Sébastien Stormacq -Tadej Janež -TAGOMORI Satoshi -tang0th -Tangi COLIN -Tatsuki Sugiura -Tatsushi Inagaki -Taylor Jones -tbonza -Ted M. Young -Tehmasp Chaudhri -Tejesh Mehta -terryding77 <550147740@qq.com> -tgic -Thatcher Peskens -theadactyl -Thell 'Bo' Fowler -Thermionix -Thijs Terlouw -Thomas Bikeev -Thomas Frössman -Thomas Gazagnaire -Thomas Grainger -Thomas Hansen -Thomas Leonard -Thomas LEVEIL -Thomas Orozco -Thomas Riccardi -Thomas Schroeter -Thomas Sjögren -Thomas Swift -Thomas Tanaka -Thomas Texier -Tianon Gravi -Tianyi Wang -Tibor Vass -Tiffany Jernigan -Tiffany Low -Tim Bosse -Tim Dettrick -Tim Düsterhus -Tim Hockin -Tim Ruffles -Tim Smith -Tim Terhorst -Tim Wang -Tim Waugh -Tim Wraight -timfeirg -Timothy Hobbs -tjwebb123 -tobe -Tobias Bieniek -Tobias Bradtke -Tobias Gesellchen -Tobias Klauser -Tobias Munk -Tobias Schmidt -Tobias Schwab -Todd Crane -Todd Lunter -Todd Whiteman -Toli Kuznets -Tom Barlow -Tom Denham -Tom Fotherby -Tom Howe -Tom Hulihan -Tom Maaswinkel -Tom X. Tobin -Tomas Tomecek -Tomasz Kopczynski -Tomasz Lipinski -Tomasz Nurkiewicz -Tommaso Visconti -Tomáš Hrčka -Tonis Tiigi -Tonny Xu -Tony Daws -Tony Miller -toogley -Torstein Husebø -tpng -tracylihui <793912329@qq.com> -Travis Cline -Travis Thieman -Trent Ogren -Trevor -Trevor Pounds -trishnaguha -Tristan Carel -Troy Denton -Tyler Brock -Tzu-Jung Lee -Tõnis Tiigi -Ulysse Carion -unknown -vagrant -Vaidas Jablonskis -Veres Lajos -vgeta -Victor Algaze -Victor Coisne -Victor Costan -Victor I. Wood -Victor Lyuboslavsky -Victor Marmol -Victor Palma -Victor Vieux -Victoria Bialas -Vijaya Kumar K -Viktor Stanchev -Viktor Vojnovski -VinayRaghavanKS -Vincent Batts -Vincent Bernat -Vincent Bernat -Vincent Demeester -Vincent Giersch -Vincent Mayers -Vincent Woo -Vinod Kulkarni -Vishal Doshi -Vishnu Kannan -Vitor Monteiro -Vivek Agarwal -Vivek Dasgupta -Vivek Goyal -Vladimir Bulyga -Vladimir Kirillov -Vladimir Pouzanov -Vladimir Rutsky -Vladimir Varankin -VladimirAus -Vojtech Vitek (V-Teq) -waitingkuo -Walter Leibbrandt -Walter Stanish -WANG Chao -Wang Xing -Ward Vandewege -WarheadsSE -Wayne Chang -Wei-Ting Kuo -weiyan -Weiyang Zhu -Wen Cheng Ma -Wendel Fleming -Wenkai Yin -Wenxuan Zhao -Wenyu You <21551128@zju.edu.cn> -Wes Morgan -Will Dietz -Will Rouesnel -Will Weaver -willhf -William Delanoue -William Henry -William Hubbs -William Riancho -William Thurston -WiseTrem -wlan0 -Wolfgang Powisch -wonderflow -Wonjun Kim -xamyzhao -Xianlu Bird -XiaoBing Jiang -Xiaoxu Chen -xiekeyang -Xinzi Zhou -Xiuming Chen -xlgao-zju -xuzhaokui -Yahya -YAMADA Tsuyoshi -Yan Feng -Yang Bai -yangshukui -Yanqiang Miao -Yasunori Mahata -Yestin Sun -Yi EungJun -Yibai Zhang -Yihang Ho -Ying Li -Yohei Ueda -Yong Tang -Yongzhi Pan -yorkie -Youcef YEKHLEF -Yuan Sun -yuchangchun -yuchengxia -yuexiao-wang -YuPengZTE -Yurii Rashkovskii -yuzou -Zac Dover -Zach Borboa -Zachary Jaffee -Zain Memon -Zaiste! -Zane DeGraffenried -Zefan Li -Zen Lin(Zhinan Lin) -Zhang Kun -Zhang Wei -Zhang Wentao -Zhenan Ye <21551168@zju.edu.cn> -zhouhao -Zhu Guihua -Zhuoyun Wei -Zilin Du -zimbatm -Ziming Dong -ZJUshuaizhou <21551191@zju.edu.cn> -zmarouf -Zoltan Tombol -zqh -Zuhayr Elahi -Zunayed Ali -Álex González -Álvaro Lázaro -Átila Camurça Alves -尹吉峰 -搏通 diff --git a/vendor/github.com/docker/docker/LICENSE b/vendor/github.com/docker/docker/LICENSE deleted file mode 100644 index 8f3fee62..00000000 --- a/vendor/github.com/docker/docker/LICENSE +++ /dev/null @@ -1,191 +0,0 @@ - - Apache License - Version 2.0, January 2004 - https://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 - - Copyright 2013-2016 Docker, 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 - - https://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. diff --git a/vendor/github.com/docker/docker/NOTICE b/vendor/github.com/docker/docker/NOTICE deleted file mode 100644 index 8a37c1c7..00000000 --- a/vendor/github.com/docker/docker/NOTICE +++ /dev/null @@ -1,19 +0,0 @@ -Docker -Copyright 2012-2016 Docker, Inc. - -This product includes software developed at Docker, Inc. (https://www.docker.com). - -This product contains software (https://github.com/kr/pty) developed -by Keith Rarick, licensed under the MIT License. - -The following is courtesy of our legal counsel: - - -Use and transfer of Docker may be subject to certain restrictions by the -United States and other governments. -It is your responsibility to ensure that your use and/or transfer does not -violate applicable laws. - -For more information, please see https://www.bis.doc.gov - -See also https://www.apache.org/dev/crypto.html and/or seek legal counsel. diff --git a/vendor/github.com/docker/docker/api/types/auth.go b/vendor/github.com/docker/docker/api/types/auth.go deleted file mode 100644 index 056af6b8..00000000 --- a/vendor/github.com/docker/docker/api/types/auth.go +++ /dev/null @@ -1,22 +0,0 @@ -package types - -// AuthConfig contains authorization information for connecting to a Registry -type AuthConfig struct { - Username string `json:"username,omitempty"` - Password string `json:"password,omitempty"` - Auth string `json:"auth,omitempty"` - - // Email is an optional value associated with the username. - // This field is deprecated and will be removed in a later - // version of docker. - Email string `json:"email,omitempty"` - - ServerAddress string `json:"serveraddress,omitempty"` - - // IdentityToken is used to authenticate the user and get - // an access token for the registry. - IdentityToken string `json:"identitytoken,omitempty"` - - // RegistryToken is a bearer token to be sent to a registry - RegistryToken string `json:"registrytoken,omitempty"` -} diff --git a/vendor/github.com/docker/docker/api/types/blkiodev/blkio.go b/vendor/github.com/docker/docker/api/types/blkiodev/blkio.go deleted file mode 100644 index 931ae10a..00000000 --- a/vendor/github.com/docker/docker/api/types/blkiodev/blkio.go +++ /dev/null @@ -1,23 +0,0 @@ -package blkiodev - -import "fmt" - -// WeightDevice is a structure that holds device:weight pair -type WeightDevice struct { - Path string - Weight uint16 -} - -func (w *WeightDevice) String() string { - return fmt.Sprintf("%s:%d", w.Path, w.Weight) -} - -// ThrottleDevice is a structure that holds device:rate_per_second pair -type ThrottleDevice struct { - Path string - Rate uint64 -} - -func (t *ThrottleDevice) String() string { - return fmt.Sprintf("%s:%d", t.Path, t.Rate) -} diff --git a/vendor/github.com/docker/docker/api/types/client.go b/vendor/github.com/docker/docker/api/types/client.go deleted file mode 100644 index 7900d64f..00000000 --- a/vendor/github.com/docker/docker/api/types/client.go +++ /dev/null @@ -1,378 +0,0 @@ -package types - -import ( - "bufio" - "io" - "net" - "os" - - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/filters" - "github.com/docker/go-units" -) - -// CheckpointCreateOptions holds parameters to create a checkpoint from a container -type CheckpointCreateOptions struct { - CheckpointID string - CheckpointDir string - Exit bool -} - -// CheckpointListOptions holds parameters to list checkpoints for a container -type CheckpointListOptions struct { - CheckpointDir string -} - -// CheckpointDeleteOptions holds parameters to delete a checkpoint from a container -type CheckpointDeleteOptions struct { - CheckpointID string - CheckpointDir string -} - -// ContainerAttachOptions holds parameters to attach to a container. -type ContainerAttachOptions struct { - Stream bool - Stdin bool - Stdout bool - Stderr bool - DetachKeys string - Logs bool -} - -// ContainerCommitOptions holds parameters to commit changes into a container. -type ContainerCommitOptions struct { - Reference string - Comment string - Author string - Changes []string - Pause bool - Config *container.Config -} - -// ContainerExecInspect holds information returned by exec inspect. -type ContainerExecInspect struct { - ExecID string - ContainerID string - Running bool - ExitCode int - Pid int -} - -// ContainerListOptions holds parameters to list containers with. -type ContainerListOptions struct { - Quiet bool - Size bool - All bool - Latest bool - Since string - Before string - Limit int - Filters filters.Args -} - -// ContainerLogsOptions holds parameters to filter logs with. -type ContainerLogsOptions struct { - ShowStdout bool - ShowStderr bool - Since string - Timestamps bool - Follow bool - Tail string - Details bool -} - -// ContainerRemoveOptions holds parameters to remove containers. -type ContainerRemoveOptions struct { - RemoveVolumes bool - RemoveLinks bool - Force bool -} - -// ContainerStartOptions holds parameters to start containers. -type ContainerStartOptions struct { - CheckpointID string - CheckpointDir string -} - -// CopyToContainerOptions holds information -// about files to copy into a container -type CopyToContainerOptions struct { - AllowOverwriteDirWithFile bool -} - -// EventsOptions holds parameters to filter events with. -type EventsOptions struct { - Since string - Until string - Filters filters.Args -} - -// NetworkListOptions holds parameters to filter the list of networks with. -type NetworkListOptions struct { - Filters filters.Args -} - -// HijackedResponse holds connection information for a hijacked request. -type HijackedResponse struct { - Conn net.Conn - Reader *bufio.Reader -} - -// Close closes the hijacked connection and reader. -func (h *HijackedResponse) Close() { - h.Conn.Close() -} - -// CloseWriter is an interface that implements structs -// that close input streams to prevent from writing. -type CloseWriter interface { - CloseWrite() error -} - -// CloseWrite closes a readWriter for writing. -func (h *HijackedResponse) CloseWrite() error { - if conn, ok := h.Conn.(CloseWriter); ok { - return conn.CloseWrite() - } - return nil -} - -// ImageBuildOptions holds the information -// necessary to build images. -type ImageBuildOptions struct { - Tags []string - SuppressOutput bool - RemoteContext string - NoCache bool - Remove bool - ForceRemove bool - PullParent bool - Isolation container.Isolation - CPUSetCPUs string - CPUSetMems string - CPUShares int64 - CPUQuota int64 - CPUPeriod int64 - Memory int64 - MemorySwap int64 - CgroupParent string - NetworkMode string - ShmSize int64 - Dockerfile string - Ulimits []*units.Ulimit - // See the parsing of buildArgs in api/server/router/build/build_routes.go - // for an explaination of why BuildArgs needs to use *string instead of - // just a string - BuildArgs map[string]*string - AuthConfigs map[string]AuthConfig - Context io.Reader - Labels map[string]string - // squash the resulting image's layers to the parent - // preserves the original image and creates a new one from the parent with all - // the changes applied to a single layer - Squash bool - // CacheFrom specifies images that are used for matching cache. Images - // specified here do not need to have a valid parent chain to match cache. - CacheFrom []string - SecurityOpt []string -} - -// ImageBuildResponse holds information -// returned by a server after building -// an image. -type ImageBuildResponse struct { - Body io.ReadCloser - OSType string -} - -// ImageCreateOptions holds information to create images. -type ImageCreateOptions struct { - RegistryAuth string // RegistryAuth is the base64 encoded credentials for the registry -} - -// ImageImportSource holds source information for ImageImport -type ImageImportSource struct { - Source io.Reader // Source is the data to send to the server to create this image from (mutually exclusive with SourceName) - SourceName string // SourceName is the name of the image to pull (mutually exclusive with Source) -} - -// ImageImportOptions holds information to import images from the client host. -type ImageImportOptions struct { - Tag string // Tag is the name to tag this image with. This attribute is deprecated. - Message string // Message is the message to tag the image with - Changes []string // Changes are the raw changes to apply to this image -} - -// ImageListOptions holds parameters to filter the list of images with. -type ImageListOptions struct { - All bool - Filters filters.Args -} - -// ImageLoadResponse returns information to the client about a load process. -type ImageLoadResponse struct { - // Body must be closed to avoid a resource leak - Body io.ReadCloser - JSON bool -} - -// ImagePullOptions holds information to pull images. -type ImagePullOptions struct { - All bool - RegistryAuth string // RegistryAuth is the base64 encoded credentials for the registry - PrivilegeFunc RequestPrivilegeFunc -} - -// RequestPrivilegeFunc is a function interface that -// clients can supply to retry operations after -// getting an authorization error. -// This function returns the registry authentication -// header value in base 64 format, or an error -// if the privilege request fails. -type RequestPrivilegeFunc func() (string, error) - -//ImagePushOptions holds information to push images. -type ImagePushOptions ImagePullOptions - -// ImageRemoveOptions holds parameters to remove images. -type ImageRemoveOptions struct { - Force bool - PruneChildren bool -} - -// ImageSearchOptions holds parameters to search images with. -type ImageSearchOptions struct { - RegistryAuth string - PrivilegeFunc RequestPrivilegeFunc - Filters filters.Args - Limit int -} - -// ResizeOptions holds parameters to resize a tty. -// It can be used to resize container ttys and -// exec process ttys too. -type ResizeOptions struct { - Height uint - Width uint -} - -// VersionResponse holds version information for the client and the server -type VersionResponse struct { - Client *Version - Server *Version -} - -// ServerOK returns true when the client could connect to the docker server -// and parse the information received. It returns false otherwise. -func (v VersionResponse) ServerOK() bool { - return v.Server != nil -} - -// NodeListOptions holds parameters to list nodes with. -type NodeListOptions struct { - Filters filters.Args -} - -// NodeRemoveOptions holds parameters to remove nodes with. -type NodeRemoveOptions struct { - Force bool -} - -// ServiceCreateOptions contains the options to use when creating a service. -type ServiceCreateOptions struct { - // EncodedRegistryAuth is the encoded registry authorization credentials to - // use when updating the service. - // - // This field follows the format of the X-Registry-Auth header. - EncodedRegistryAuth string -} - -// ServiceCreateResponse contains the information returned to a client -// on the creation of a new service. -type ServiceCreateResponse struct { - // ID is the ID of the created service. - ID string - // Warnings is a set of non-fatal warning messages to pass on to the user. - Warnings []string `json:",omitempty"` -} - -// Values for RegistryAuthFrom in ServiceUpdateOptions -const ( - RegistryAuthFromSpec = "spec" - RegistryAuthFromPreviousSpec = "previous-spec" -) - -// ServiceUpdateOptions contains the options to be used for updating services. -type ServiceUpdateOptions struct { - // EncodedRegistryAuth is the encoded registry authorization credentials to - // use when updating the service. - // - // This field follows the format of the X-Registry-Auth header. - EncodedRegistryAuth string - - // TODO(stevvooe): Consider moving the version parameter of ServiceUpdate - // into this field. While it does open API users up to racy writes, most - // users may not need that level of consistency in practice. - - // RegistryAuthFrom specifies where to find the registry authorization - // credentials if they are not given in EncodedRegistryAuth. Valid - // values are "spec" and "previous-spec". - RegistryAuthFrom string -} - -// ServiceListOptions holds parameters to list services with. -type ServiceListOptions struct { - Filters filters.Args -} - -// TaskListOptions holds parameters to list tasks with. -type TaskListOptions struct { - Filters filters.Args -} - -// PluginRemoveOptions holds parameters to remove plugins. -type PluginRemoveOptions struct { - Force bool -} - -// PluginEnableOptions holds parameters to enable plugins. -type PluginEnableOptions struct { - Timeout int -} - -// PluginDisableOptions holds parameters to disable plugins. -type PluginDisableOptions struct { - Force bool -} - -// PluginInstallOptions holds parameters to install a plugin. -type PluginInstallOptions struct { - Disabled bool - AcceptAllPermissions bool - RegistryAuth string // RegistryAuth is the base64 encoded credentials for the registry - RemoteRef string // RemoteRef is the plugin name on the registry - PrivilegeFunc RequestPrivilegeFunc - AcceptPermissionsFunc func(PluginPrivileges) (bool, error) - Args []string -} - -// SecretRequestOption is a type for requesting secrets -type SecretRequestOption struct { - Source string - Target string - UID string - GID string - Mode os.FileMode -} - -// SwarmUnlockKeyResponse contains the response for Engine API: -// GET /swarm/unlockkey -type SwarmUnlockKeyResponse struct { - // UnlockKey is the unlock key in ASCII-armored format. - UnlockKey string -} - -// PluginCreateOptions hold all options to plugin create. -type PluginCreateOptions struct { - RepoName string -} diff --git a/vendor/github.com/docker/docker/api/types/configs.go b/vendor/github.com/docker/docker/api/types/configs.go deleted file mode 100644 index 20c19f21..00000000 --- a/vendor/github.com/docker/docker/api/types/configs.go +++ /dev/null @@ -1,69 +0,0 @@ -package types - -import ( - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/network" -) - -// configs holds structs used for internal communication between the -// frontend (such as an http server) and the backend (such as the -// docker daemon). - -// ContainerCreateConfig is the parameter set to ContainerCreate() -type ContainerCreateConfig struct { - Name string - Config *container.Config - HostConfig *container.HostConfig - NetworkingConfig *network.NetworkingConfig - AdjustCPUShares bool -} - -// ContainerRmConfig holds arguments for the container remove -// operation. This struct is used to tell the backend what operations -// to perform. -type ContainerRmConfig struct { - ForceRemove, RemoveVolume, RemoveLink bool -} - -// ContainerCommitConfig contains build configs for commit operation, -// and is used when making a commit with the current state of the container. -type ContainerCommitConfig struct { - Pause bool - Repo string - Tag string - Author string - Comment string - // merge container config into commit config before commit - MergeConfigs bool - Config *container.Config -} - -// ExecConfig is a small subset of the Config struct that holds the configuration -// for the exec feature of docker. -type ExecConfig struct { - User string // User that will run the command - Privileged bool // Is the container in privileged mode - Tty bool // Attach standard streams to a tty. - AttachStdin bool // Attach the standard input, makes possible user interaction - AttachStderr bool // Attach the standard error - AttachStdout bool // Attach the standard output - Detach bool // Execute in detach mode - DetachKeys string // Escape keys for detach - Env []string // Environment variables - Cmd []string // Execution commands and args -} - -// PluginRmConfig holds arguments for plugin remove. -type PluginRmConfig struct { - ForceRemove bool -} - -// PluginEnableConfig holds arguments for plugin enable -type PluginEnableConfig struct { - Timeout int -} - -// PluginDisableConfig holds arguments for plugin disable. -type PluginDisableConfig struct { - ForceDisable bool -} diff --git a/vendor/github.com/docker/docker/api/types/container/config.go b/vendor/github.com/docker/docker/api/types/container/config.go deleted file mode 100644 index fc050e5d..00000000 --- a/vendor/github.com/docker/docker/api/types/container/config.go +++ /dev/null @@ -1,62 +0,0 @@ -package container - -import ( - "time" - - "github.com/docker/docker/api/types/strslice" - "github.com/docker/go-connections/nat" -) - -// HealthConfig holds configuration settings for the HEALTHCHECK feature. -type HealthConfig struct { - // Test is the test to perform to check that the container is healthy. - // An empty slice means to inherit the default. - // The options are: - // {} : inherit healthcheck - // {"NONE"} : disable healthcheck - // {"CMD", args...} : exec arguments directly - // {"CMD-SHELL", command} : run command with system's default shell - Test []string `json:",omitempty"` - - // Zero means to inherit. Durations are expressed as integer nanoseconds. - Interval time.Duration `json:",omitempty"` // Interval is the time to wait between checks. - Timeout time.Duration `json:",omitempty"` // Timeout is the time to wait before considering the check to have hung. - - // Retries is the number of consecutive failures needed to consider a container as unhealthy. - // Zero means inherit. - Retries int `json:",omitempty"` -} - -// Config contains the configuration data about a container. -// It should hold only portable information about the container. -// Here, "portable" means "independent from the host we are running on". -// Non-portable information *should* appear in HostConfig. -// All fields added to this struct must be marked `omitempty` to keep getting -// predictable hashes from the old `v1Compatibility` configuration. -type Config struct { - Hostname string // Hostname - Domainname string // Domainname - User string // User that will run the command(s) inside the container, also support user:group - AttachStdin bool // Attach the standard input, makes possible user interaction - AttachStdout bool // Attach the standard output - AttachStderr bool // Attach the standard error - ExposedPorts nat.PortSet `json:",omitempty"` // List of exposed ports - Tty bool // Attach standard streams to a tty, including stdin if it is not closed. - OpenStdin bool // Open stdin - StdinOnce bool // If true, close stdin after the 1 attached client disconnects. - Env []string // List of environment variable to set in the container - Cmd strslice.StrSlice // Command to run when starting the container - Healthcheck *HealthConfig `json:",omitempty"` // Healthcheck describes how to check the container is healthy - ArgsEscaped bool `json:",omitempty"` // True if command is already escaped (Windows specific) - Image string // Name of the image as it was passed by the operator (e.g. could be symbolic) - Volumes map[string]struct{} // List of volumes (mounts) used for the container - WorkingDir string // Current directory (PWD) in the command will be launched - Entrypoint strslice.StrSlice // Entrypoint to run when starting the container - NetworkDisabled bool `json:",omitempty"` // Is network disabled - MacAddress string `json:",omitempty"` // Mac Address of the container - OnBuild []string // ONBUILD metadata that were defined on the image Dockerfile - Labels map[string]string // List of labels set to this container - StopSignal string `json:",omitempty"` // Signal to stop a container - StopTimeout *int `json:",omitempty"` // Timeout (in seconds) to stop a container - Shell strslice.StrSlice `json:",omitempty"` // Shell for shell-form of RUN, CMD, ENTRYPOINT -} diff --git a/vendor/github.com/docker/docker/api/types/container/container_create.go b/vendor/github.com/docker/docker/api/types/container/container_create.go deleted file mode 100644 index d028e3b1..00000000 --- a/vendor/github.com/docker/docker/api/types/container/container_create.go +++ /dev/null @@ -1,21 +0,0 @@ -package container - -// ---------------------------------------------------------------------------- -// DO NOT EDIT THIS FILE -// This file was generated by `swagger generate operation` -// -// See hack/swagger-gen.sh -// ---------------------------------------------------------------------------- - -// ContainerCreateCreatedBody container create created body -// swagger:model ContainerCreateCreatedBody -type ContainerCreateCreatedBody struct { - - // The ID of the created container - // Required: true - ID string `json:"Id"` - - // Warnings encountered when creating the container - // Required: true - Warnings []string `json:"Warnings"` -} diff --git a/vendor/github.com/docker/docker/api/types/container/container_update.go b/vendor/github.com/docker/docker/api/types/container/container_update.go deleted file mode 100644 index 81ee12c6..00000000 --- a/vendor/github.com/docker/docker/api/types/container/container_update.go +++ /dev/null @@ -1,17 +0,0 @@ -package container - -// ---------------------------------------------------------------------------- -// DO NOT EDIT THIS FILE -// This file was generated by `swagger generate operation` -// -// See hack/swagger-gen.sh -// ---------------------------------------------------------------------------- - -// ContainerUpdateOKBody container update o k body -// swagger:model ContainerUpdateOKBody -type ContainerUpdateOKBody struct { - - // warnings - // Required: true - Warnings []string `json:"Warnings"` -} diff --git a/vendor/github.com/docker/docker/api/types/container/container_wait.go b/vendor/github.com/docker/docker/api/types/container/container_wait.go deleted file mode 100644 index 16cf3353..00000000 --- a/vendor/github.com/docker/docker/api/types/container/container_wait.go +++ /dev/null @@ -1,17 +0,0 @@ -package container - -// ---------------------------------------------------------------------------- -// DO NOT EDIT THIS FILE -// This file was generated by `swagger generate operation` -// -// See hack/swagger-gen.sh -// ---------------------------------------------------------------------------- - -// ContainerWaitOKBody container wait o k body -// swagger:model ContainerWaitOKBody -type ContainerWaitOKBody struct { - - // Exit code of the container - // Required: true - StatusCode int64 `json:"StatusCode"` -} diff --git a/vendor/github.com/docker/docker/api/types/container/host_config.go b/vendor/github.com/docker/docker/api/types/container/host_config.go deleted file mode 100644 index 0c82d625..00000000 --- a/vendor/github.com/docker/docker/api/types/container/host_config.go +++ /dev/null @@ -1,333 +0,0 @@ -package container - -import ( - "strings" - - "github.com/docker/docker/api/types/blkiodev" - "github.com/docker/docker/api/types/mount" - "github.com/docker/docker/api/types/strslice" - "github.com/docker/go-connections/nat" - "github.com/docker/go-units" -) - -// NetworkMode represents the container network stack. -type NetworkMode string - -// Isolation represents the isolation technology of a container. The supported -// values are platform specific -type Isolation string - -// IsDefault indicates the default isolation technology of a container. On Linux this -// is the native driver. On Windows, this is a Windows Server Container. -func (i Isolation) IsDefault() bool { - return strings.ToLower(string(i)) == "default" || string(i) == "" -} - -// IpcMode represents the container ipc stack. -type IpcMode string - -// IsPrivate indicates whether the container uses its private ipc stack. -func (n IpcMode) IsPrivate() bool { - return !(n.IsHost() || n.IsContainer()) -} - -// IsHost indicates whether the container uses the host's ipc stack. -func (n IpcMode) IsHost() bool { - return n == "host" -} - -// IsContainer indicates whether the container uses a container's ipc stack. -func (n IpcMode) IsContainer() bool { - parts := strings.SplitN(string(n), ":", 2) - return len(parts) > 1 && parts[0] == "container" -} - -// Valid indicates whether the ipc stack is valid. -func (n IpcMode) Valid() bool { - parts := strings.Split(string(n), ":") - switch mode := parts[0]; mode { - case "", "host": - case "container": - if len(parts) != 2 || parts[1] == "" { - return false - } - default: - return false - } - return true -} - -// Container returns the name of the container ipc stack is going to be used. -func (n IpcMode) Container() string { - parts := strings.SplitN(string(n), ":", 2) - if len(parts) > 1 { - return parts[1] - } - return "" -} - -// UsernsMode represents userns mode in the container. -type UsernsMode string - -// IsHost indicates whether the container uses the host's userns. -func (n UsernsMode) IsHost() bool { - return n == "host" -} - -// IsPrivate indicates whether the container uses the a private userns. -func (n UsernsMode) IsPrivate() bool { - return !(n.IsHost()) -} - -// Valid indicates whether the userns is valid. -func (n UsernsMode) Valid() bool { - parts := strings.Split(string(n), ":") - switch mode := parts[0]; mode { - case "", "host": - default: - return false - } - return true -} - -// CgroupSpec represents the cgroup to use for the container. -type CgroupSpec string - -// IsContainer indicates whether the container is using another container cgroup -func (c CgroupSpec) IsContainer() bool { - parts := strings.SplitN(string(c), ":", 2) - return len(parts) > 1 && parts[0] == "container" -} - -// Valid indicates whether the cgroup spec is valid. -func (c CgroupSpec) Valid() bool { - return c.IsContainer() || c == "" -} - -// Container returns the name of the container whose cgroup will be used. -func (c CgroupSpec) Container() string { - parts := strings.SplitN(string(c), ":", 2) - if len(parts) > 1 { - return parts[1] - } - return "" -} - -// UTSMode represents the UTS namespace of the container. -type UTSMode string - -// IsPrivate indicates whether the container uses its private UTS namespace. -func (n UTSMode) IsPrivate() bool { - return !(n.IsHost()) -} - -// IsHost indicates whether the container uses the host's UTS namespace. -func (n UTSMode) IsHost() bool { - return n == "host" -} - -// Valid indicates whether the UTS namespace is valid. -func (n UTSMode) Valid() bool { - parts := strings.Split(string(n), ":") - switch mode := parts[0]; mode { - case "", "host": - default: - return false - } - return true -} - -// PidMode represents the pid namespace of the container. -type PidMode string - -// IsPrivate indicates whether the container uses its own new pid namespace. -func (n PidMode) IsPrivate() bool { - return !(n.IsHost() || n.IsContainer()) -} - -// IsHost indicates whether the container uses the host's pid namespace. -func (n PidMode) IsHost() bool { - return n == "host" -} - -// IsContainer indicates whether the container uses a container's pid namespace. -func (n PidMode) IsContainer() bool { - parts := strings.SplitN(string(n), ":", 2) - return len(parts) > 1 && parts[0] == "container" -} - -// Valid indicates whether the pid namespace is valid. -func (n PidMode) Valid() bool { - parts := strings.Split(string(n), ":") - switch mode := parts[0]; mode { - case "", "host": - case "container": - if len(parts) != 2 || parts[1] == "" { - return false - } - default: - return false - } - return true -} - -// Container returns the name of the container whose pid namespace is going to be used. -func (n PidMode) Container() string { - parts := strings.SplitN(string(n), ":", 2) - if len(parts) > 1 { - return parts[1] - } - return "" -} - -// DeviceMapping represents the device mapping between the host and the container. -type DeviceMapping struct { - PathOnHost string - PathInContainer string - CgroupPermissions string -} - -// RestartPolicy represents the restart policies of the container. -type RestartPolicy struct { - Name string - MaximumRetryCount int -} - -// IsNone indicates whether the container has the "no" restart policy. -// This means the container will not automatically restart when exiting. -func (rp *RestartPolicy) IsNone() bool { - return rp.Name == "no" || rp.Name == "" -} - -// IsAlways indicates whether the container has the "always" restart policy. -// This means the container will automatically restart regardless of the exit status. -func (rp *RestartPolicy) IsAlways() bool { - return rp.Name == "always" -} - -// IsOnFailure indicates whether the container has the "on-failure" restart policy. -// This means the container will automatically restart of exiting with a non-zero exit status. -func (rp *RestartPolicy) IsOnFailure() bool { - return rp.Name == "on-failure" -} - -// IsUnlessStopped indicates whether the container has the -// "unless-stopped" restart policy. This means the container will -// automatically restart unless user has put it to stopped state. -func (rp *RestartPolicy) IsUnlessStopped() bool { - return rp.Name == "unless-stopped" -} - -// IsSame compares two RestartPolicy to see if they are the same -func (rp *RestartPolicy) IsSame(tp *RestartPolicy) bool { - return rp.Name == tp.Name && rp.MaximumRetryCount == tp.MaximumRetryCount -} - -// LogConfig represents the logging configuration of the container. -type LogConfig struct { - Type string - Config map[string]string -} - -// Resources contains container's resources (cgroups config, ulimits...) -type Resources struct { - // Applicable to all platforms - CPUShares int64 `json:"CpuShares"` // CPU shares (relative weight vs. other containers) - Memory int64 // Memory limit (in bytes) - NanoCPUs int64 `json:"NanoCpus"` // CPU quota in units of 10-9 CPUs. - - // Applicable to UNIX platforms - CgroupParent string // Parent cgroup. - BlkioWeight uint16 // Block IO weight (relative weight vs. other containers) - BlkioWeightDevice []*blkiodev.WeightDevice - BlkioDeviceReadBps []*blkiodev.ThrottleDevice - BlkioDeviceWriteBps []*blkiodev.ThrottleDevice - BlkioDeviceReadIOps []*blkiodev.ThrottleDevice - BlkioDeviceWriteIOps []*blkiodev.ThrottleDevice - CPUPeriod int64 `json:"CpuPeriod"` // CPU CFS (Completely Fair Scheduler) period - CPUQuota int64 `json:"CpuQuota"` // CPU CFS (Completely Fair Scheduler) quota - CPURealtimePeriod int64 `json:"CpuRealtimePeriod"` // CPU real-time period - CPURealtimeRuntime int64 `json:"CpuRealtimeRuntime"` // CPU real-time runtime - CpusetCpus string // CpusetCpus 0-2, 0,1 - CpusetMems string // CpusetMems 0-2, 0,1 - Devices []DeviceMapping // List of devices to map inside the container - DiskQuota int64 // Disk limit (in bytes) - KernelMemory int64 // Kernel memory limit (in bytes) - MemoryReservation int64 // Memory soft limit (in bytes) - MemorySwap int64 // Total memory usage (memory + swap); set `-1` to enable unlimited swap - MemorySwappiness *int64 // Tuning container memory swappiness behaviour - OomKillDisable *bool // Whether to disable OOM Killer or not - PidsLimit int64 // Setting pids limit for a container - Ulimits []*units.Ulimit // List of ulimits to be set in the container - - // Applicable to Windows - CPUCount int64 `json:"CpuCount"` // CPU count - CPUPercent int64 `json:"CpuPercent"` // CPU percent - IOMaximumIOps uint64 // Maximum IOps for the container system drive - IOMaximumBandwidth uint64 // Maximum IO in bytes per second for the container system drive -} - -// UpdateConfig holds the mutable attributes of a Container. -// Those attributes can be updated at runtime. -type UpdateConfig struct { - // Contains container's resources (cgroups, ulimits) - Resources - RestartPolicy RestartPolicy -} - -// HostConfig the non-portable Config structure of a container. -// Here, "non-portable" means "dependent of the host we are running on". -// Portable information *should* appear in Config. -type HostConfig struct { - // Applicable to all platforms - Binds []string // List of volume bindings for this container - ContainerIDFile string // File (path) where the containerId is written - LogConfig LogConfig // Configuration of the logs for this container - NetworkMode NetworkMode // Network mode to use for the container - PortBindings nat.PortMap // Port mapping between the exposed port (container) and the host - RestartPolicy RestartPolicy // Restart policy to be used for the container - AutoRemove bool // Automatically remove container when it exits - VolumeDriver string // Name of the volume driver used to mount volumes - VolumesFrom []string // List of volumes to take from other container - - // Applicable to UNIX platforms - CapAdd strslice.StrSlice // List of kernel capabilities to add to the container - CapDrop strslice.StrSlice // List of kernel capabilities to remove from the container - DNS []string `json:"Dns"` // List of DNS server to lookup - DNSOptions []string `json:"DnsOptions"` // List of DNSOption to look for - DNSSearch []string `json:"DnsSearch"` // List of DNSSearch to look for - ExtraHosts []string // List of extra hosts - GroupAdd []string // List of additional groups that the container process will run as - IpcMode IpcMode // IPC namespace to use for the container - Cgroup CgroupSpec // Cgroup to use for the container - Links []string // List of links (in the name:alias form) - OomScoreAdj int // Container preference for OOM-killing - PidMode PidMode // PID namespace to use for the container - Privileged bool // Is the container in privileged mode - PublishAllPorts bool // Should docker publish all exposed port for the container - ReadonlyRootfs bool // Is the container root filesystem in read-only - SecurityOpt []string // List of string values to customize labels for MLS systems, such as SELinux. - StorageOpt map[string]string `json:",omitempty"` // Storage driver options per container. - Tmpfs map[string]string `json:",omitempty"` // List of tmpfs (mounts) used for the container - UTSMode UTSMode // UTS namespace to use for the container - UsernsMode UsernsMode // The user namespace to use for the container - ShmSize int64 // Total shm memory usage - Sysctls map[string]string `json:",omitempty"` // List of Namespaced sysctls used for the container - Runtime string `json:",omitempty"` // Runtime to use with this container - - // Applicable to Windows - ConsoleSize [2]uint // Initial console size (height,width) - Isolation Isolation // Isolation technology of the container (eg default, hyperv) - - // Contains container's resources (cgroups, ulimits) - Resources - - // Mounts specs used by the container - Mounts []mount.Mount `json:",omitempty"` - - // Run a custom init inside the container, if null, use the daemon's configured settings - Init *bool `json:",omitempty"` - - // Custom init path - InitPath string `json:",omitempty"` -} diff --git a/vendor/github.com/docker/docker/api/types/container/hostconfig_unix.go b/vendor/github.com/docker/docker/api/types/container/hostconfig_unix.go deleted file mode 100644 index 9fb79bed..00000000 --- a/vendor/github.com/docker/docker/api/types/container/hostconfig_unix.go +++ /dev/null @@ -1,81 +0,0 @@ -// +build !windows - -package container - -import "strings" - -// IsValid indicates if an isolation technology is valid -func (i Isolation) IsValid() bool { - return i.IsDefault() -} - -// IsPrivate indicates whether container uses its private network stack. -func (n NetworkMode) IsPrivate() bool { - return !(n.IsHost() || n.IsContainer()) -} - -// IsDefault indicates whether container uses the default network stack. -func (n NetworkMode) IsDefault() bool { - return n == "default" -} - -// NetworkName returns the name of the network stack. -func (n NetworkMode) NetworkName() string { - if n.IsBridge() { - return "bridge" - } else if n.IsHost() { - return "host" - } else if n.IsContainer() { - return "container" - } else if n.IsNone() { - return "none" - } else if n.IsDefault() { - return "default" - } else if n.IsUserDefined() { - return n.UserDefined() - } - return "" -} - -// IsBridge indicates whether container uses the bridge network stack -func (n NetworkMode) IsBridge() bool { - return n == "bridge" -} - -// IsHost indicates whether container uses the host network stack. -func (n NetworkMode) IsHost() bool { - return n == "host" -} - -// IsContainer indicates whether container uses a container network stack. -func (n NetworkMode) IsContainer() bool { - parts := strings.SplitN(string(n), ":", 2) - return len(parts) > 1 && parts[0] == "container" -} - -// IsNone indicates whether container isn't using a network stack. -func (n NetworkMode) IsNone() bool { - return n == "none" -} - -// ConnectedContainer is the id of the container which network this container is connected to. -func (n NetworkMode) ConnectedContainer() string { - parts := strings.SplitN(string(n), ":", 2) - if len(parts) > 1 { - return parts[1] - } - return "" -} - -// IsUserDefined indicates user-created network -func (n NetworkMode) IsUserDefined() bool { - return !n.IsDefault() && !n.IsBridge() && !n.IsHost() && !n.IsNone() && !n.IsContainer() -} - -//UserDefined indicates user-created network -func (n NetworkMode) UserDefined() string { - if n.IsUserDefined() { - return string(n) - } - return "" -} diff --git a/vendor/github.com/docker/docker/api/types/container/hostconfig_windows.go b/vendor/github.com/docker/docker/api/types/container/hostconfig_windows.go deleted file mode 100644 index 0ee332ba..00000000 --- a/vendor/github.com/docker/docker/api/types/container/hostconfig_windows.go +++ /dev/null @@ -1,87 +0,0 @@ -package container - -import ( - "strings" -) - -// IsDefault indicates whether container uses the default network stack. -func (n NetworkMode) IsDefault() bool { - return n == "default" -} - -// IsNone indicates whether container isn't using a network stack. -func (n NetworkMode) IsNone() bool { - return n == "none" -} - -// IsContainer indicates whether container uses a container network stack. -// Returns false as windows doesn't support this mode -func (n NetworkMode) IsContainer() bool { - return false -} - -// IsBridge indicates whether container uses the bridge network stack -// in windows it is given the name NAT -func (n NetworkMode) IsBridge() bool { - return n == "nat" -} - -// IsHost indicates whether container uses the host network stack. -// returns false as this is not supported by windows -func (n NetworkMode) IsHost() bool { - return false -} - -// IsPrivate indicates whether container uses its private network stack. -func (n NetworkMode) IsPrivate() bool { - return !(n.IsHost() || n.IsContainer()) -} - -// ConnectedContainer is the id of the container which network this container is connected to. -// Returns blank string on windows -func (n NetworkMode) ConnectedContainer() string { - return "" -} - -// IsUserDefined indicates user-created network -func (n NetworkMode) IsUserDefined() bool { - return !n.IsDefault() && !n.IsNone() && !n.IsBridge() -} - -// IsHyperV indicates the use of a Hyper-V partition for isolation -func (i Isolation) IsHyperV() bool { - return strings.ToLower(string(i)) == "hyperv" -} - -// IsProcess indicates the use of process isolation -func (i Isolation) IsProcess() bool { - return strings.ToLower(string(i)) == "process" -} - -// IsValid indicates if an isolation technology is valid -func (i Isolation) IsValid() bool { - return i.IsDefault() || i.IsHyperV() || i.IsProcess() -} - -// NetworkName returns the name of the network stack. -func (n NetworkMode) NetworkName() string { - if n.IsDefault() { - return "default" - } else if n.IsBridge() { - return "nat" - } else if n.IsNone() { - return "none" - } else if n.IsUserDefined() { - return n.UserDefined() - } - - return "" -} - -//UserDefined indicates user-created network -func (n NetworkMode) UserDefined() string { - if n.IsUserDefined() { - return string(n) - } - return "" -} diff --git a/vendor/github.com/docker/docker/api/types/error_response.go b/vendor/github.com/docker/docker/api/types/error_response.go deleted file mode 100644 index dc942d9d..00000000 --- a/vendor/github.com/docker/docker/api/types/error_response.go +++ /dev/null @@ -1,13 +0,0 @@ -package types - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// ErrorResponse Represents an error. -// swagger:model ErrorResponse -type ErrorResponse struct { - - // The error message. - // Required: true - Message string `json:"message"` -} diff --git a/vendor/github.com/docker/docker/api/types/events/events.go b/vendor/github.com/docker/docker/api/types/events/events.go deleted file mode 100644 index 7129a65a..00000000 --- a/vendor/github.com/docker/docker/api/types/events/events.go +++ /dev/null @@ -1,42 +0,0 @@ -package events - -const ( - // ContainerEventType is the event type that containers generate - ContainerEventType = "container" - // DaemonEventType is the event type that daemon generate - DaemonEventType = "daemon" - // ImageEventType is the event type that images generate - ImageEventType = "image" - // NetworkEventType is the event type that networks generate - NetworkEventType = "network" - // PluginEventType is the event type that plugins generate - PluginEventType = "plugin" - // VolumeEventType is the event type that volumes generate - VolumeEventType = "volume" -) - -// Actor describes something that generates events, -// like a container, or a network, or a volume. -// It has a defined name and a set or attributes. -// The container attributes are its labels, other actors -// can generate these attributes from other properties. -type Actor struct { - ID string - Attributes map[string]string -} - -// Message represents the information an event contains -type Message struct { - // Deprecated information from JSONMessage. - // With data only in container events. - Status string `json:"status,omitempty"` - ID string `json:"id,omitempty"` - From string `json:"from,omitempty"` - - Type string - Action string - Actor Actor - - Time int64 `json:"time,omitempty"` - TimeNano int64 `json:"timeNano,omitempty"` -} diff --git a/vendor/github.com/docker/docker/api/types/filters/parse.go b/vendor/github.com/docker/docker/api/types/filters/parse.go deleted file mode 100644 index e01a41de..00000000 --- a/vendor/github.com/docker/docker/api/types/filters/parse.go +++ /dev/null @@ -1,310 +0,0 @@ -// Package filters provides helper function to parse and handle command line -// filter, used for example in docker ps or docker images commands. -package filters - -import ( - "encoding/json" - "errors" - "fmt" - "regexp" - "strings" - - "github.com/docker/docker/api/types/versions" -) - -// Args stores filter arguments as map key:{map key: bool}. -// It contains an aggregation of the map of arguments (which are in the form -// of -f 'key=value') based on the key, and stores values for the same key -// in a map with string keys and boolean values. -// e.g given -f 'label=label1=1' -f 'label=label2=2' -f 'image.name=ubuntu' -// the args will be {"image.name":{"ubuntu":true},"label":{"label1=1":true,"label2=2":true}} -type Args struct { - fields map[string]map[string]bool -} - -// NewArgs initializes a new Args struct. -func NewArgs() Args { - return Args{fields: map[string]map[string]bool{}} -} - -// ParseFlag parses the argument to the filter flag. Like -// -// `docker ps -f 'created=today' -f 'image.name=ubuntu*'` -// -// If prev map is provided, then it is appended to, and returned. By default a new -// map is created. -func ParseFlag(arg string, prev Args) (Args, error) { - filters := prev - if len(arg) == 0 { - return filters, nil - } - - if !strings.Contains(arg, "=") { - return filters, ErrBadFormat - } - - f := strings.SplitN(arg, "=", 2) - - name := strings.ToLower(strings.TrimSpace(f[0])) - value := strings.TrimSpace(f[1]) - - filters.Add(name, value) - - return filters, nil -} - -// ErrBadFormat is an error returned in case of bad format for a filter. -var ErrBadFormat = errors.New("bad format of filter (expected name=value)") - -// ToParam packs the Args into a string for easy transport from client to server. -func ToParam(a Args) (string, error) { - // this way we don't URL encode {}, just empty space - if a.Len() == 0 { - return "", nil - } - - buf, err := json.Marshal(a.fields) - if err != nil { - return "", err - } - return string(buf), nil -} - -// ToParamWithVersion packs the Args into a string for easy transport from client to server. -// The generated string will depend on the specified version (corresponding to the API version). -func ToParamWithVersion(version string, a Args) (string, error) { - // this way we don't URL encode {}, just empty space - if a.Len() == 0 { - return "", nil - } - - // for daemons older than v1.10, filter must be of the form map[string][]string - buf := []byte{} - err := errors.New("") - if version != "" && versions.LessThan(version, "1.22") { - buf, err = json.Marshal(convertArgsToSlice(a.fields)) - } else { - buf, err = json.Marshal(a.fields) - } - if err != nil { - return "", err - } - return string(buf), nil -} - -// FromParam unpacks the filter Args. -func FromParam(p string) (Args, error) { - if len(p) == 0 { - return NewArgs(), nil - } - - r := strings.NewReader(p) - d := json.NewDecoder(r) - - m := map[string]map[string]bool{} - if err := d.Decode(&m); err != nil { - r.Seek(0, 0) - - // Allow parsing old arguments in slice format. - // Because other libraries might be sending them in this format. - deprecated := map[string][]string{} - if deprecatedErr := d.Decode(&deprecated); deprecatedErr == nil { - m = deprecatedArgs(deprecated) - } else { - return NewArgs(), err - } - } - return Args{m}, nil -} - -// Get returns the list of values associates with a field. -// It returns a slice of strings to keep backwards compatibility with old code. -func (filters Args) Get(field string) []string { - values := filters.fields[field] - if values == nil { - return make([]string, 0) - } - slice := make([]string, 0, len(values)) - for key := range values { - slice = append(slice, key) - } - return slice -} - -// Add adds a new value to a filter field. -func (filters Args) Add(name, value string) { - if _, ok := filters.fields[name]; ok { - filters.fields[name][value] = true - } else { - filters.fields[name] = map[string]bool{value: true} - } -} - -// Del removes a value from a filter field. -func (filters Args) Del(name, value string) { - if _, ok := filters.fields[name]; ok { - delete(filters.fields[name], value) - if len(filters.fields[name]) == 0 { - delete(filters.fields, name) - } - } -} - -// Len returns the number of fields in the arguments. -func (filters Args) Len() int { - return len(filters.fields) -} - -// MatchKVList returns true if the values for the specified field matches the ones -// from the sources. -// e.g. given Args are {'label': {'label1=1','label2=1'}, 'image.name', {'ubuntu'}}, -// field is 'label' and sources are {'label1': '1', 'label2': '2'} -// it returns true. -func (filters Args) MatchKVList(field string, sources map[string]string) bool { - fieldValues := filters.fields[field] - - //do not filter if there is no filter set or cannot determine filter - if len(fieldValues) == 0 { - return true - } - - if len(sources) == 0 { - return false - } - - for name2match := range fieldValues { - testKV := strings.SplitN(name2match, "=", 2) - - v, ok := sources[testKV[0]] - if !ok { - return false - } - if len(testKV) == 2 && testKV[1] != v { - return false - } - } - - return true -} - -// Match returns true if the values for the specified field matches the source string -// e.g. given Args are {'label': {'label1=1','label2=1'}, 'image.name', {'ubuntu'}}, -// field is 'image.name' and source is 'ubuntu' -// it returns true. -func (filters Args) Match(field, source string) bool { - if filters.ExactMatch(field, source) { - return true - } - - fieldValues := filters.fields[field] - for name2match := range fieldValues { - match, err := regexp.MatchString(name2match, source) - if err != nil { - continue - } - if match { - return true - } - } - return false -} - -// ExactMatch returns true if the source matches exactly one of the filters. -func (filters Args) ExactMatch(field, source string) bool { - fieldValues, ok := filters.fields[field] - //do not filter if there is no filter set or cannot determine filter - if !ok || len(fieldValues) == 0 { - return true - } - - // try to match full name value to avoid O(N) regular expression matching - return fieldValues[source] -} - -// UniqueExactMatch returns true if there is only one filter and the source matches exactly this one. -func (filters Args) UniqueExactMatch(field, source string) bool { - fieldValues := filters.fields[field] - //do not filter if there is no filter set or cannot determine filter - if len(fieldValues) == 0 { - return true - } - if len(filters.fields[field]) != 1 { - return false - } - - // try to match full name value to avoid O(N) regular expression matching - return fieldValues[source] -} - -// FuzzyMatch returns true if the source matches exactly one of the filters, -// or the source has one of the filters as a prefix. -func (filters Args) FuzzyMatch(field, source string) bool { - if filters.ExactMatch(field, source) { - return true - } - - fieldValues := filters.fields[field] - for prefix := range fieldValues { - if strings.HasPrefix(source, prefix) { - return true - } - } - return false -} - -// Include returns true if the name of the field to filter is in the filters. -func (filters Args) Include(field string) bool { - _, ok := filters.fields[field] - return ok -} - -// Validate ensures that all the fields in the filter are valid. -// It returns an error as soon as it finds an invalid field. -func (filters Args) Validate(accepted map[string]bool) error { - for name := range filters.fields { - if !accepted[name] { - return fmt.Errorf("Invalid filter '%s'", name) - } - } - return nil -} - -// WalkValues iterates over the list of filtered values for a field. -// It stops the iteration if it finds an error and it returns that error. -func (filters Args) WalkValues(field string, op func(value string) error) error { - if _, ok := filters.fields[field]; !ok { - return nil - } - for v := range filters.fields[field] { - if err := op(v); err != nil { - return err - } - } - return nil -} - -func deprecatedArgs(d map[string][]string) map[string]map[string]bool { - m := map[string]map[string]bool{} - for k, v := range d { - values := map[string]bool{} - for _, vv := range v { - values[vv] = true - } - m[k] = values - } - return m -} - -func convertArgsToSlice(f map[string]map[string]bool) map[string][]string { - m := map[string][]string{} - for k, v := range f { - values := []string{} - for kk := range v { - if v[kk] { - values = append(values, kk) - } - } - m[k] = values - } - return m -} diff --git a/vendor/github.com/docker/docker/api/types/id_response.go b/vendor/github.com/docker/docker/api/types/id_response.go deleted file mode 100644 index 7592d2f8..00000000 --- a/vendor/github.com/docker/docker/api/types/id_response.go +++ /dev/null @@ -1,13 +0,0 @@ -package types - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// IDResponse Response to an API call that returns just an Id -// swagger:model IdResponse -type IDResponse struct { - - // The id of the newly created object. - // Required: true - ID string `json:"Id"` -} diff --git a/vendor/github.com/docker/docker/api/types/image_summary.go b/vendor/github.com/docker/docker/api/types/image_summary.go deleted file mode 100644 index e145b3dc..00000000 --- a/vendor/github.com/docker/docker/api/types/image_summary.go +++ /dev/null @@ -1,49 +0,0 @@ -package types - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// ImageSummary image summary -// swagger:model ImageSummary -type ImageSummary struct { - - // containers - // Required: true - Containers int64 `json:"Containers"` - - // created - // Required: true - Created int64 `json:"Created"` - - // Id - // Required: true - ID string `json:"Id"` - - // labels - // Required: true - Labels map[string]string `json:"Labels"` - - // parent Id - // Required: true - ParentID string `json:"ParentId"` - - // repo digests - // Required: true - RepoDigests []string `json:"RepoDigests"` - - // repo tags - // Required: true - RepoTags []string `json:"RepoTags"` - - // shared size - // Required: true - SharedSize int64 `json:"SharedSize"` - - // size - // Required: true - Size int64 `json:"Size"` - - // virtual size - // Required: true - VirtualSize int64 `json:"VirtualSize"` -} diff --git a/vendor/github.com/docker/docker/api/types/mount/mount.go b/vendor/github.com/docker/docker/api/types/mount/mount.go deleted file mode 100644 index 31f2365b..00000000 --- a/vendor/github.com/docker/docker/api/types/mount/mount.go +++ /dev/null @@ -1,113 +0,0 @@ -package mount - -import ( - "os" -) - -// Type represents the type of a mount. -type Type string - -// Type constants -const ( - // TypeBind is the type for mounting host dir - TypeBind Type = "bind" - // TypeVolume is the type for remote storage volumes - TypeVolume Type = "volume" - // TypeTmpfs is the type for mounting tmpfs - TypeTmpfs Type = "tmpfs" -) - -// Mount represents a mount (volume). -type Mount struct { - Type Type `json:",omitempty"` - // Source specifies the name of the mount. Depending on mount type, this - // may be a volume name or a host path, or even ignored. - // Source is not supported for tmpfs (must be an empty value) - Source string `json:",omitempty"` - Target string `json:",omitempty"` - ReadOnly bool `json:",omitempty"` - - BindOptions *BindOptions `json:",omitempty"` - VolumeOptions *VolumeOptions `json:",omitempty"` - TmpfsOptions *TmpfsOptions `json:",omitempty"` -} - -// Propagation represents the propagation of a mount. -type Propagation string - -const ( - // PropagationRPrivate RPRIVATE - PropagationRPrivate Propagation = "rprivate" - // PropagationPrivate PRIVATE - PropagationPrivate Propagation = "private" - // PropagationRShared RSHARED - PropagationRShared Propagation = "rshared" - // PropagationShared SHARED - PropagationShared Propagation = "shared" - // PropagationRSlave RSLAVE - PropagationRSlave Propagation = "rslave" - // PropagationSlave SLAVE - PropagationSlave Propagation = "slave" -) - -// Propagations is the list of all valid mount propagations -var Propagations = []Propagation{ - PropagationRPrivate, - PropagationPrivate, - PropagationRShared, - PropagationShared, - PropagationRSlave, - PropagationSlave, -} - -// BindOptions defines options specific to mounts of type "bind". -type BindOptions struct { - Propagation Propagation `json:",omitempty"` -} - -// VolumeOptions represents the options for a mount of type volume. -type VolumeOptions struct { - NoCopy bool `json:",omitempty"` - Labels map[string]string `json:",omitempty"` - DriverConfig *Driver `json:",omitempty"` -} - -// Driver represents a volume driver. -type Driver struct { - Name string `json:",omitempty"` - Options map[string]string `json:",omitempty"` -} - -// TmpfsOptions defines options specific to mounts of type "tmpfs". -type TmpfsOptions struct { - // Size sets the size of the tmpfs, in bytes. - // - // This will be converted to an operating system specific value - // depending on the host. For example, on linux, it will be convered to - // use a 'k', 'm' or 'g' syntax. BSD, though not widely supported with - // docker, uses a straight byte value. - // - // Percentages are not supported. - SizeBytes int64 `json:",omitempty"` - // Mode of the tmpfs upon creation - Mode os.FileMode `json:",omitempty"` - - // TODO(stevvooe): There are several more tmpfs flags, specified in the - // daemon, that are accepted. Only the most basic are added for now. - // - // From docker/docker/pkg/mount/flags.go: - // - // var validFlags = map[string]bool{ - // "": true, - // "size": true, X - // "mode": true, X - // "uid": true, - // "gid": true, - // "nr_inodes": true, - // "nr_blocks": true, - // "mpol": true, - // } - // - // Some of these may be straightforward to add, but others, such as - // uid/gid have implications in a clustered system. -} diff --git a/vendor/github.com/docker/docker/api/types/network/network.go b/vendor/github.com/docker/docker/api/types/network/network.go deleted file mode 100644 index 832b3edb..00000000 --- a/vendor/github.com/docker/docker/api/types/network/network.go +++ /dev/null @@ -1,59 +0,0 @@ -package network - -// Address represents an IP address -type Address struct { - Addr string - PrefixLen int -} - -// IPAM represents IP Address Management -type IPAM struct { - Driver string - Options map[string]string //Per network IPAM driver options - Config []IPAMConfig -} - -// IPAMConfig represents IPAM configurations -type IPAMConfig struct { - Subnet string `json:",omitempty"` - IPRange string `json:",omitempty"` - Gateway string `json:",omitempty"` - AuxAddress map[string]string `json:"AuxiliaryAddresses,omitempty"` -} - -// EndpointIPAMConfig represents IPAM configurations for the endpoint -type EndpointIPAMConfig struct { - IPv4Address string `json:",omitempty"` - IPv6Address string `json:",omitempty"` - LinkLocalIPs []string `json:",omitempty"` -} - -// PeerInfo represents one peer of a overlay network -type PeerInfo struct { - Name string - IP string -} - -// EndpointSettings stores the network endpoint details -type EndpointSettings struct { - // Configurations - IPAMConfig *EndpointIPAMConfig - Links []string - Aliases []string - // Operational data - NetworkID string - EndpointID string - Gateway string - IPAddress string - IPPrefixLen int - IPv6Gateway string - GlobalIPv6Address string - GlobalIPv6PrefixLen int - MacAddress string -} - -// NetworkingConfig represents the container's networking configuration for each of its interfaces -// Carries the networking configs specified in the `docker run` and `docker network connect` commands -type NetworkingConfig struct { - EndpointsConfig map[string]*EndpointSettings // Endpoint configs for each connecting network -} diff --git a/vendor/github.com/docker/docker/api/types/plugin.go b/vendor/github.com/docker/docker/api/types/plugin.go deleted file mode 100644 index 6cc7a23b..00000000 --- a/vendor/github.com/docker/docker/api/types/plugin.go +++ /dev/null @@ -1,189 +0,0 @@ -package types - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// Plugin A plugin for the Engine API -// swagger:model Plugin -type Plugin struct { - - // config - // Required: true - Config PluginConfig `json:"Config"` - - // True when the plugin is running. False when the plugin is not running, only installed. - // Required: true - Enabled bool `json:"Enabled"` - - // Id - ID string `json:"Id,omitempty"` - - // name - // Required: true - Name string `json:"Name"` - - // plugin remote reference used to push/pull the plugin - PluginReference string `json:"PluginReference,omitempty"` - - // settings - // Required: true - Settings PluginSettings `json:"Settings"` -} - -// PluginConfig The config of a plugin. -// swagger:model PluginConfig -type PluginConfig struct { - - // args - // Required: true - Args PluginConfigArgs `json:"Args"` - - // description - // Required: true - Description string `json:"Description"` - - // documentation - // Required: true - Documentation string `json:"Documentation"` - - // entrypoint - // Required: true - Entrypoint []string `json:"Entrypoint"` - - // env - // Required: true - Env []PluginEnv `json:"Env"` - - // interface - // Required: true - Interface PluginConfigInterface `json:"Interface"` - - // linux - // Required: true - Linux PluginConfigLinux `json:"Linux"` - - // mounts - // Required: true - Mounts []PluginMount `json:"Mounts"` - - // network - // Required: true - Network PluginConfigNetwork `json:"Network"` - - // propagated mount - // Required: true - PropagatedMount string `json:"PropagatedMount"` - - // user - User PluginConfigUser `json:"User,omitempty"` - - // work dir - // Required: true - WorkDir string `json:"WorkDir"` - - // rootfs - Rootfs *PluginConfigRootfs `json:"rootfs,omitempty"` -} - -// PluginConfigArgs plugin config args -// swagger:model PluginConfigArgs -type PluginConfigArgs struct { - - // description - // Required: true - Description string `json:"Description"` - - // name - // Required: true - Name string `json:"Name"` - - // settable - // Required: true - Settable []string `json:"Settable"` - - // value - // Required: true - Value []string `json:"Value"` -} - -// PluginConfigInterface The interface between Docker and the plugin -// swagger:model PluginConfigInterface -type PluginConfigInterface struct { - - // socket - // Required: true - Socket string `json:"Socket"` - - // types - // Required: true - Types []PluginInterfaceType `json:"Types"` -} - -// PluginConfigLinux plugin config linux -// swagger:model PluginConfigLinux -type PluginConfigLinux struct { - - // allow all devices - // Required: true - AllowAllDevices bool `json:"AllowAllDevices"` - - // capabilities - // Required: true - Capabilities []string `json:"Capabilities"` - - // devices - // Required: true - Devices []PluginDevice `json:"Devices"` -} - -// PluginConfigNetwork plugin config network -// swagger:model PluginConfigNetwork -type PluginConfigNetwork struct { - - // type - // Required: true - Type string `json:"Type"` -} - -// PluginConfigRootfs plugin config rootfs -// swagger:model PluginConfigRootfs -type PluginConfigRootfs struct { - - // diff ids - DiffIds []string `json:"diff_ids"` - - // type - Type string `json:"type,omitempty"` -} - -// PluginConfigUser plugin config user -// swagger:model PluginConfigUser -type PluginConfigUser struct { - - // g ID - GID uint32 `json:"GID,omitempty"` - - // UID - UID uint32 `json:"UID,omitempty"` -} - -// PluginSettings Settings that can be modified by users. -// swagger:model PluginSettings -type PluginSettings struct { - - // args - // Required: true - Args []string `json:"Args"` - - // devices - // Required: true - Devices []PluginDevice `json:"Devices"` - - // env - // Required: true - Env []string `json:"Env"` - - // mounts - // Required: true - Mounts []PluginMount `json:"Mounts"` -} diff --git a/vendor/github.com/docker/docker/api/types/plugin_device.go b/vendor/github.com/docker/docker/api/types/plugin_device.go deleted file mode 100644 index 56990106..00000000 --- a/vendor/github.com/docker/docker/api/types/plugin_device.go +++ /dev/null @@ -1,25 +0,0 @@ -package types - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// PluginDevice plugin device -// swagger:model PluginDevice -type PluginDevice struct { - - // description - // Required: true - Description string `json:"Description"` - - // name - // Required: true - Name string `json:"Name"` - - // path - // Required: true - Path *string `json:"Path"` - - // settable - // Required: true - Settable []string `json:"Settable"` -} diff --git a/vendor/github.com/docker/docker/api/types/plugin_env.go b/vendor/github.com/docker/docker/api/types/plugin_env.go deleted file mode 100644 index 32962dc2..00000000 --- a/vendor/github.com/docker/docker/api/types/plugin_env.go +++ /dev/null @@ -1,25 +0,0 @@ -package types - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// PluginEnv plugin env -// swagger:model PluginEnv -type PluginEnv struct { - - // description - // Required: true - Description string `json:"Description"` - - // name - // Required: true - Name string `json:"Name"` - - // settable - // Required: true - Settable []string `json:"Settable"` - - // value - // Required: true - Value *string `json:"Value"` -} diff --git a/vendor/github.com/docker/docker/api/types/plugin_interface_type.go b/vendor/github.com/docker/docker/api/types/plugin_interface_type.go deleted file mode 100644 index c82f204e..00000000 --- a/vendor/github.com/docker/docker/api/types/plugin_interface_type.go +++ /dev/null @@ -1,21 +0,0 @@ -package types - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// PluginInterfaceType plugin interface type -// swagger:model PluginInterfaceType -type PluginInterfaceType struct { - - // capability - // Required: true - Capability string `json:"Capability"` - - // prefix - // Required: true - Prefix string `json:"Prefix"` - - // version - // Required: true - Version string `json:"Version"` -} diff --git a/vendor/github.com/docker/docker/api/types/plugin_mount.go b/vendor/github.com/docker/docker/api/types/plugin_mount.go deleted file mode 100644 index 5c031cf8..00000000 --- a/vendor/github.com/docker/docker/api/types/plugin_mount.go +++ /dev/null @@ -1,37 +0,0 @@ -package types - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// PluginMount plugin mount -// swagger:model PluginMount -type PluginMount struct { - - // description - // Required: true - Description string `json:"Description"` - - // destination - // Required: true - Destination string `json:"Destination"` - - // name - // Required: true - Name string `json:"Name"` - - // options - // Required: true - Options []string `json:"Options"` - - // settable - // Required: true - Settable []string `json:"Settable"` - - // source - // Required: true - Source *string `json:"Source"` - - // type - // Required: true - Type string `json:"Type"` -} diff --git a/vendor/github.com/docker/docker/api/types/plugin_responses.go b/vendor/github.com/docker/docker/api/types/plugin_responses.go deleted file mode 100644 index d6f75531..00000000 --- a/vendor/github.com/docker/docker/api/types/plugin_responses.go +++ /dev/null @@ -1,64 +0,0 @@ -package types - -import ( - "encoding/json" - "fmt" -) - -// PluginsListResponse contains the response for the Engine API -type PluginsListResponse []*Plugin - -const ( - authzDriver = "AuthzDriver" - graphDriver = "GraphDriver" - ipamDriver = "IpamDriver" - networkDriver = "NetworkDriver" - volumeDriver = "VolumeDriver" -) - -// UnmarshalJSON implements json.Unmarshaler for PluginInterfaceType -func (t *PluginInterfaceType) UnmarshalJSON(p []byte) error { - versionIndex := len(p) - prefixIndex := 0 - if len(p) < 2 || p[0] != '"' || p[len(p)-1] != '"' { - return fmt.Errorf("%q is not a plugin interface type", p) - } - p = p[1 : len(p)-1] -loop: - for i, b := range p { - switch b { - case '.': - prefixIndex = i - case '/': - versionIndex = i - break loop - } - } - t.Prefix = string(p[:prefixIndex]) - t.Capability = string(p[prefixIndex+1 : versionIndex]) - if versionIndex < len(p) { - t.Version = string(p[versionIndex+1:]) - } - return nil -} - -// MarshalJSON implements json.Marshaler for PluginInterfaceType -func (t *PluginInterfaceType) MarshalJSON() ([]byte, error) { - return json.Marshal(t.String()) -} - -// String implements fmt.Stringer for PluginInterfaceType -func (t PluginInterfaceType) String() string { - return fmt.Sprintf("%s.%s/%s", t.Prefix, t.Capability, t.Version) -} - -// PluginPrivilege describes a permission the user has to accept -// upon installing a plugin. -type PluginPrivilege struct { - Name string - Description string - Value []string -} - -// PluginPrivileges is a list of PluginPrivilege -type PluginPrivileges []PluginPrivilege diff --git a/vendor/github.com/docker/docker/api/types/port.go b/vendor/github.com/docker/docker/api/types/port.go deleted file mode 100644 index ad52d46d..00000000 --- a/vendor/github.com/docker/docker/api/types/port.go +++ /dev/null @@ -1,23 +0,0 @@ -package types - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// Port An open port on a container -// swagger:model Port -type Port struct { - - // IP - IP string `json:"IP,omitempty"` - - // Port on the container - // Required: true - PrivatePort uint16 `json:"PrivatePort"` - - // Port exposed on the host - PublicPort uint16 `json:"PublicPort,omitempty"` - - // type - // Required: true - Type string `json:"Type"` -} diff --git a/vendor/github.com/docker/docker/api/types/reference/image_reference.go b/vendor/github.com/docker/docker/api/types/reference/image_reference.go deleted file mode 100644 index be9cf8eb..00000000 --- a/vendor/github.com/docker/docker/api/types/reference/image_reference.go +++ /dev/null @@ -1,34 +0,0 @@ -package reference - -import ( - distreference "github.com/docker/distribution/reference" -) - -// Parse parses the given references and returns the repository and -// tag (if present) from it. If there is an error during parsing, it will -// return an error. -func Parse(ref string) (string, string, error) { - distributionRef, err := distreference.ParseNamed(ref) - if err != nil { - return "", "", err - } - - tag := GetTagFromNamedRef(distributionRef) - return distributionRef.Name(), tag, nil -} - -// GetTagFromNamedRef returns a tag from the specified reference. -// This function is necessary as long as the docker "server" api makes the distinction between repository -// and tags. -func GetTagFromNamedRef(ref distreference.Named) string { - var tag string - switch x := ref.(type) { - case distreference.Digested: - tag = x.Digest().String() - case distreference.NamedTagged: - tag = x.Tag() - default: - tag = "latest" - } - return tag -} diff --git a/vendor/github.com/docker/docker/api/types/registry/authenticate.go b/vendor/github.com/docker/docker/api/types/registry/authenticate.go deleted file mode 100644 index 5e37d19b..00000000 --- a/vendor/github.com/docker/docker/api/types/registry/authenticate.go +++ /dev/null @@ -1,21 +0,0 @@ -package registry - -// ---------------------------------------------------------------------------- -// DO NOT EDIT THIS FILE -// This file was generated by `swagger generate operation` -// -// See hack/swagger-gen.sh -// ---------------------------------------------------------------------------- - -// AuthenticateOKBody authenticate o k body -// swagger:model AuthenticateOKBody -type AuthenticateOKBody struct { - - // An opaque token used to authenticate a user after a successful login - // Required: true - IdentityToken string `json:"IdentityToken"` - - // The status of the authentication - // Required: true - Status string `json:"Status"` -} diff --git a/vendor/github.com/docker/docker/api/types/registry/registry.go b/vendor/github.com/docker/docker/api/types/registry/registry.go deleted file mode 100644 index 28fafab9..00000000 --- a/vendor/github.com/docker/docker/api/types/registry/registry.go +++ /dev/null @@ -1,104 +0,0 @@ -package registry - -import ( - "encoding/json" - "net" -) - -// ServiceConfig stores daemon registry services configuration. -type ServiceConfig struct { - InsecureRegistryCIDRs []*NetIPNet `json:"InsecureRegistryCIDRs"` - IndexConfigs map[string]*IndexInfo `json:"IndexConfigs"` - Mirrors []string -} - -// NetIPNet is the net.IPNet type, which can be marshalled and -// unmarshalled to JSON -type NetIPNet net.IPNet - -// String returns the CIDR notation of ipnet -func (ipnet *NetIPNet) String() string { - return (*net.IPNet)(ipnet).String() -} - -// MarshalJSON returns the JSON representation of the IPNet -func (ipnet *NetIPNet) MarshalJSON() ([]byte, error) { - return json.Marshal((*net.IPNet)(ipnet).String()) -} - -// UnmarshalJSON sets the IPNet from a byte array of JSON -func (ipnet *NetIPNet) UnmarshalJSON(b []byte) (err error) { - var ipnetStr string - if err = json.Unmarshal(b, &ipnetStr); err == nil { - var cidr *net.IPNet - if _, cidr, err = net.ParseCIDR(ipnetStr); err == nil { - *ipnet = NetIPNet(*cidr) - } - } - return -} - -// IndexInfo contains information about a registry -// -// RepositoryInfo Examples: -// { -// "Index" : { -// "Name" : "docker.io", -// "Mirrors" : ["https://registry-2.docker.io/v1/", "https://registry-3.docker.io/v1/"], -// "Secure" : true, -// "Official" : true, -// }, -// "RemoteName" : "library/debian", -// "LocalName" : "debian", -// "CanonicalName" : "docker.io/debian" -// "Official" : true, -// } -// -// { -// "Index" : { -// "Name" : "127.0.0.1:5000", -// "Mirrors" : [], -// "Secure" : false, -// "Official" : false, -// }, -// "RemoteName" : "user/repo", -// "LocalName" : "127.0.0.1:5000/user/repo", -// "CanonicalName" : "127.0.0.1:5000/user/repo", -// "Official" : false, -// } -type IndexInfo struct { - // Name is the name of the registry, such as "docker.io" - Name string - // Mirrors is a list of mirrors, expressed as URIs - Mirrors []string - // Secure is set to false if the registry is part of the list of - // insecure registries. Insecure registries accept HTTP and/or accept - // HTTPS with certificates from unknown CAs. - Secure bool - // Official indicates whether this is an official registry - Official bool -} - -// SearchResult describes a search result returned from a registry -type SearchResult struct { - // StarCount indicates the number of stars this repository has - StarCount int `json:"star_count"` - // IsOfficial is true if the result is from an official repository. - IsOfficial bool `json:"is_official"` - // Name is the name of the repository - Name string `json:"name"` - // IsAutomated indicates whether the result is automated - IsAutomated bool `json:"is_automated"` - // Description is a textual description of the repository - Description string `json:"description"` -} - -// SearchResults lists a collection search results returned from a registry -type SearchResults struct { - // Query contains the query string that generated the search results - Query string `json:"query"` - // NumResults indicates the number of results the query returned - NumResults int `json:"num_results"` - // Results is a slice containing the actual results for the search - Results []SearchResult `json:"results"` -} diff --git a/vendor/github.com/docker/docker/api/types/seccomp.go b/vendor/github.com/docker/docker/api/types/seccomp.go deleted file mode 100644 index 4f02ef36..00000000 --- a/vendor/github.com/docker/docker/api/types/seccomp.go +++ /dev/null @@ -1,93 +0,0 @@ -package types - -// Seccomp represents the config for a seccomp profile for syscall restriction. -type Seccomp struct { - DefaultAction Action `json:"defaultAction"` - // Architectures is kept to maintain backward compatibility with the old - // seccomp profile. - Architectures []Arch `json:"architectures,omitempty"` - ArchMap []Architecture `json:"archMap,omitempty"` - Syscalls []*Syscall `json:"syscalls"` -} - -// Architecture is used to represent an specific architecture -// and its sub-architectures -type Architecture struct { - Arch Arch `json:"architecture"` - SubArches []Arch `json:"subArchitectures"` -} - -// Arch used for architectures -type Arch string - -// Additional architectures permitted to be used for system calls -// By default only the native architecture of the kernel is permitted -const ( - ArchX86 Arch = "SCMP_ARCH_X86" - ArchX86_64 Arch = "SCMP_ARCH_X86_64" - ArchX32 Arch = "SCMP_ARCH_X32" - ArchARM Arch = "SCMP_ARCH_ARM" - ArchAARCH64 Arch = "SCMP_ARCH_AARCH64" - ArchMIPS Arch = "SCMP_ARCH_MIPS" - ArchMIPS64 Arch = "SCMP_ARCH_MIPS64" - ArchMIPS64N32 Arch = "SCMP_ARCH_MIPS64N32" - ArchMIPSEL Arch = "SCMP_ARCH_MIPSEL" - ArchMIPSEL64 Arch = "SCMP_ARCH_MIPSEL64" - ArchMIPSEL64N32 Arch = "SCMP_ARCH_MIPSEL64N32" - ArchPPC Arch = "SCMP_ARCH_PPC" - ArchPPC64 Arch = "SCMP_ARCH_PPC64" - ArchPPC64LE Arch = "SCMP_ARCH_PPC64LE" - ArchS390 Arch = "SCMP_ARCH_S390" - ArchS390X Arch = "SCMP_ARCH_S390X" -) - -// Action taken upon Seccomp rule match -type Action string - -// Define actions for Seccomp rules -const ( - ActKill Action = "SCMP_ACT_KILL" - ActTrap Action = "SCMP_ACT_TRAP" - ActErrno Action = "SCMP_ACT_ERRNO" - ActTrace Action = "SCMP_ACT_TRACE" - ActAllow Action = "SCMP_ACT_ALLOW" -) - -// Operator used to match syscall arguments in Seccomp -type Operator string - -// Define operators for syscall arguments in Seccomp -const ( - OpNotEqual Operator = "SCMP_CMP_NE" - OpLessThan Operator = "SCMP_CMP_LT" - OpLessEqual Operator = "SCMP_CMP_LE" - OpEqualTo Operator = "SCMP_CMP_EQ" - OpGreaterEqual Operator = "SCMP_CMP_GE" - OpGreaterThan Operator = "SCMP_CMP_GT" - OpMaskedEqual Operator = "SCMP_CMP_MASKED_EQ" -) - -// Arg used for matching specific syscall arguments in Seccomp -type Arg struct { - Index uint `json:"index"` - Value uint64 `json:"value"` - ValueTwo uint64 `json:"valueTwo"` - Op Operator `json:"op"` -} - -// Filter is used to conditionally apply Seccomp rules -type Filter struct { - Caps []string `json:"caps,omitempty"` - Arches []string `json:"arches,omitempty"` -} - -// Syscall is used to match a group of syscalls in Seccomp -type Syscall struct { - Name string `json:"name,omitempty"` - Names []string `json:"names,omitempty"` - Action Action `json:"action"` - Args []*Arg `json:"args"` - Comment string `json:"comment"` - Includes Filter `json:"includes"` - Excludes Filter `json:"excludes"` -} diff --git a/vendor/github.com/docker/docker/api/types/service_update_response.go b/vendor/github.com/docker/docker/api/types/service_update_response.go deleted file mode 100644 index 74ea64b1..00000000 --- a/vendor/github.com/docker/docker/api/types/service_update_response.go +++ /dev/null @@ -1,12 +0,0 @@ -package types - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// ServiceUpdateResponse service update response -// swagger:model ServiceUpdateResponse -type ServiceUpdateResponse struct { - - // Optional warning messages - Warnings []string `json:"Warnings"` -} diff --git a/vendor/github.com/docker/docker/api/types/stats.go b/vendor/github.com/docker/docker/api/types/stats.go deleted file mode 100644 index 9bf1928b..00000000 --- a/vendor/github.com/docker/docker/api/types/stats.go +++ /dev/null @@ -1,178 +0,0 @@ -// Package types is used for API stability in the types and response to the -// consumers of the API stats endpoint. -package types - -import "time" - -// ThrottlingData stores CPU throttling stats of one running container. -// Not used on Windows. -type ThrottlingData struct { - // Number of periods with throttling active - Periods uint64 `json:"periods"` - // Number of periods when the container hits its throttling limit. - ThrottledPeriods uint64 `json:"throttled_periods"` - // Aggregate time the container was throttled for in nanoseconds. - ThrottledTime uint64 `json:"throttled_time"` -} - -// CPUUsage stores All CPU stats aggregated since container inception. -type CPUUsage struct { - // Total CPU time consumed. - // Units: nanoseconds (Linux) - // Units: 100's of nanoseconds (Windows) - TotalUsage uint64 `json:"total_usage"` - - // Total CPU time consumed per core (Linux). Not used on Windows. - // Units: nanoseconds. - PercpuUsage []uint64 `json:"percpu_usage,omitempty"` - - // Time spent by tasks of the cgroup in kernel mode (Linux). - // Time spent by all container processes in kernel mode (Windows). - // Units: nanoseconds (Linux). - // Units: 100's of nanoseconds (Windows). Not populated for Hyper-V Containers. - UsageInKernelmode uint64 `json:"usage_in_kernelmode"` - - // Time spent by tasks of the cgroup in user mode (Linux). - // Time spent by all container processes in user mode (Windows). - // Units: nanoseconds (Linux). - // Units: 100's of nanoseconds (Windows). Not populated for Hyper-V Containers - UsageInUsermode uint64 `json:"usage_in_usermode"` -} - -// CPUStats aggregates and wraps all CPU related info of container -type CPUStats struct { - // CPU Usage. Linux and Windows. - CPUUsage CPUUsage `json:"cpu_usage"` - - // System Usage. Linux only. - SystemUsage uint64 `json:"system_cpu_usage,omitempty"` - - // Throttling Data. Linux only. - ThrottlingData ThrottlingData `json:"throttling_data,omitempty"` -} - -// MemoryStats aggregates all memory stats since container inception on Linux. -// Windows returns stats for commit and private working set only. -type MemoryStats struct { - // Linux Memory Stats - - // current res_counter usage for memory - Usage uint64 `json:"usage,omitempty"` - // maximum usage ever recorded. - MaxUsage uint64 `json:"max_usage,omitempty"` - // TODO(vishh): Export these as stronger types. - // all the stats exported via memory.stat. - Stats map[string]uint64 `json:"stats,omitempty"` - // number of times memory usage hits limits. - Failcnt uint64 `json:"failcnt,omitempty"` - Limit uint64 `json:"limit,omitempty"` - - // Windows Memory Stats - // See https://technet.microsoft.com/en-us/magazine/ff382715.aspx - - // committed bytes - Commit uint64 `json:"commitbytes,omitempty"` - // peak committed bytes - CommitPeak uint64 `json:"commitpeakbytes,omitempty"` - // private working set - PrivateWorkingSet uint64 `json:"privateworkingset,omitempty"` -} - -// BlkioStatEntry is one small entity to store a piece of Blkio stats -// Not used on Windows. -type BlkioStatEntry struct { - Major uint64 `json:"major"` - Minor uint64 `json:"minor"` - Op string `json:"op"` - Value uint64 `json:"value"` -} - -// BlkioStats stores All IO service stats for data read and write. -// This is a Linux specific structure as the differences between expressing -// block I/O on Windows and Linux are sufficiently significant to make -// little sense attempting to morph into a combined structure. -type BlkioStats struct { - // number of bytes transferred to and from the block device - IoServiceBytesRecursive []BlkioStatEntry `json:"io_service_bytes_recursive"` - IoServicedRecursive []BlkioStatEntry `json:"io_serviced_recursive"` - IoQueuedRecursive []BlkioStatEntry `json:"io_queue_recursive"` - IoServiceTimeRecursive []BlkioStatEntry `json:"io_service_time_recursive"` - IoWaitTimeRecursive []BlkioStatEntry `json:"io_wait_time_recursive"` - IoMergedRecursive []BlkioStatEntry `json:"io_merged_recursive"` - IoTimeRecursive []BlkioStatEntry `json:"io_time_recursive"` - SectorsRecursive []BlkioStatEntry `json:"sectors_recursive"` -} - -// StorageStats is the disk I/O stats for read/write on Windows. -type StorageStats struct { - ReadCountNormalized uint64 `json:"read_count_normalized,omitempty"` - ReadSizeBytes uint64 `json:"read_size_bytes,omitempty"` - WriteCountNormalized uint64 `json:"write_count_normalized,omitempty"` - WriteSizeBytes uint64 `json:"write_size_bytes,omitempty"` -} - -// NetworkStats aggregates the network stats of one container -type NetworkStats struct { - // Bytes received. Windows and Linux. - RxBytes uint64 `json:"rx_bytes"` - // Packets received. Windows and Linux. - RxPackets uint64 `json:"rx_packets"` - // Received errors. Not used on Windows. Note that we dont `omitempty` this - // field as it is expected in the >=v1.21 API stats structure. - RxErrors uint64 `json:"rx_errors"` - // Incoming packets dropped. Windows and Linux. - RxDropped uint64 `json:"rx_dropped"` - // Bytes sent. Windows and Linux. - TxBytes uint64 `json:"tx_bytes"` - // Packets sent. Windows and Linux. - TxPackets uint64 `json:"tx_packets"` - // Sent errors. Not used on Windows. Note that we dont `omitempty` this - // field as it is expected in the >=v1.21 API stats structure. - TxErrors uint64 `json:"tx_errors"` - // Outgoing packets dropped. Windows and Linux. - TxDropped uint64 `json:"tx_dropped"` - // Endpoint ID. Not used on Linux. - EndpointID string `json:"endpoint_id,omitempty"` - // Instance ID. Not used on Linux. - InstanceID string `json:"instance_id,omitempty"` -} - -// PidsStats contains the stats of a container's pids -type PidsStats struct { - // Current is the number of pids in the cgroup - Current uint64 `json:"current,omitempty"` - // Limit is the hard limit on the number of pids in the cgroup. - // A "Limit" of 0 means that there is no limit. - Limit uint64 `json:"limit,omitempty"` -} - -// Stats is Ultimate struct aggregating all types of stats of one container -type Stats struct { - // Common stats - Read time.Time `json:"read"` - PreRead time.Time `json:"preread"` - - // Linux specific stats, not populated on Windows. - PidsStats PidsStats `json:"pids_stats,omitempty"` - BlkioStats BlkioStats `json:"blkio_stats,omitempty"` - - // Windows specific stats, not populated on Linux. - NumProcs uint32 `json:"num_procs"` - StorageStats StorageStats `json:"storage_stats,omitempty"` - - // Shared stats - CPUStats CPUStats `json:"cpu_stats,omitempty"` - PreCPUStats CPUStats `json:"precpu_stats,omitempty"` // "Pre"="Previous" - MemoryStats MemoryStats `json:"memory_stats,omitempty"` -} - -// StatsJSON is newly used Networks -type StatsJSON struct { - Stats - - Name string `json:"name,omitempty"` - ID string `json:"id,omitempty"` - - // Networks request version >=1.21 - Networks map[string]NetworkStats `json:"networks,omitempty"` -} diff --git a/vendor/github.com/docker/docker/api/types/strslice/strslice.go b/vendor/github.com/docker/docker/api/types/strslice/strslice.go deleted file mode 100644 index bad493fb..00000000 --- a/vendor/github.com/docker/docker/api/types/strslice/strslice.go +++ /dev/null @@ -1,30 +0,0 @@ -package strslice - -import "encoding/json" - -// StrSlice represents a string or an array of strings. -// We need to override the json decoder to accept both options. -type StrSlice []string - -// UnmarshalJSON decodes the byte slice whether it's a string or an array of -// strings. This method is needed to implement json.Unmarshaler. -func (e *StrSlice) UnmarshalJSON(b []byte) error { - if len(b) == 0 { - // With no input, we preserve the existing value by returning nil and - // leaving the target alone. This allows defining default values for - // the type. - return nil - } - - p := make([]string, 0, 1) - if err := json.Unmarshal(b, &p); err != nil { - var s string - if err := json.Unmarshal(b, &s); err != nil { - return err - } - p = append(p, s) - } - - *e = p - return nil -} diff --git a/vendor/github.com/docker/docker/api/types/swarm/common.go b/vendor/github.com/docker/docker/api/types/swarm/common.go deleted file mode 100644 index 64a648ba..00000000 --- a/vendor/github.com/docker/docker/api/types/swarm/common.go +++ /dev/null @@ -1,27 +0,0 @@ -package swarm - -import "time" - -// Version represents the internal object version. -type Version struct { - Index uint64 `json:",omitempty"` -} - -// Meta is a base object inherited by most of the other once. -type Meta struct { - Version Version `json:",omitempty"` - CreatedAt time.Time `json:",omitempty"` - UpdatedAt time.Time `json:",omitempty"` -} - -// Annotations represents how to describe an object. -type Annotations struct { - Name string `json:",omitempty"` - Labels map[string]string `json:",omitempty"` -} - -// Driver represents a driver (network, logging). -type Driver struct { - Name string `json:",omitempty"` - Options map[string]string `json:",omitempty"` -} diff --git a/vendor/github.com/docker/docker/api/types/swarm/container.go b/vendor/github.com/docker/docker/api/types/swarm/container.go deleted file mode 100644 index 4ab476cc..00000000 --- a/vendor/github.com/docker/docker/api/types/swarm/container.go +++ /dev/null @@ -1,46 +0,0 @@ -package swarm - -import ( - "time" - - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/mount" -) - -// DNSConfig specifies DNS related configurations in resolver configuration file (resolv.conf) -// Detailed documentation is available in: -// http://man7.org/linux/man-pages/man5/resolv.conf.5.html -// `nameserver`, `search`, `options` have been supported. -// TODO: `domain` is not supported yet. -type DNSConfig struct { - // Nameservers specifies the IP addresses of the name servers - Nameservers []string `json:",omitempty"` - // Search specifies the search list for host-name lookup - Search []string `json:",omitempty"` - // Options allows certain internal resolver variables to be modified - Options []string `json:",omitempty"` -} - -// ContainerSpec represents the spec of a container. -type ContainerSpec struct { - Image string `json:",omitempty"` - Labels map[string]string `json:",omitempty"` - Command []string `json:",omitempty"` - Args []string `json:",omitempty"` - Hostname string `json:",omitempty"` - Env []string `json:",omitempty"` - Dir string `json:",omitempty"` - User string `json:",omitempty"` - Groups []string `json:",omitempty"` - TTY bool `json:",omitempty"` - OpenStdin bool `json:",omitempty"` - Mounts []mount.Mount `json:",omitempty"` - StopGracePeriod *time.Duration `json:",omitempty"` - Healthcheck *container.HealthConfig `json:",omitempty"` - // The format of extra hosts on swarmkit is specified in: - // http://man7.org/linux/man-pages/man5/hosts.5.html - // IP_address canonical_hostname [aliases...] - Hosts []string `json:",omitempty"` - DNSConfig *DNSConfig `json:",omitempty"` - Secrets []*SecretReference `json:",omitempty"` -} diff --git a/vendor/github.com/docker/docker/api/types/swarm/network.go b/vendor/github.com/docker/docker/api/types/swarm/network.go deleted file mode 100644 index 5a5e11bd..00000000 --- a/vendor/github.com/docker/docker/api/types/swarm/network.go +++ /dev/null @@ -1,111 +0,0 @@ -package swarm - -// Endpoint represents an endpoint. -type Endpoint struct { - Spec EndpointSpec `json:",omitempty"` - Ports []PortConfig `json:",omitempty"` - VirtualIPs []EndpointVirtualIP `json:",omitempty"` -} - -// EndpointSpec represents the spec of an endpoint. -type EndpointSpec struct { - Mode ResolutionMode `json:",omitempty"` - Ports []PortConfig `json:",omitempty"` -} - -// ResolutionMode represents a resolution mode. -type ResolutionMode string - -const ( - // ResolutionModeVIP VIP - ResolutionModeVIP ResolutionMode = "vip" - // ResolutionModeDNSRR DNSRR - ResolutionModeDNSRR ResolutionMode = "dnsrr" -) - -// PortConfig represents the config of a port. -type PortConfig struct { - Name string `json:",omitempty"` - Protocol PortConfigProtocol `json:",omitempty"` - // TargetPort is the port inside the container - TargetPort uint32 `json:",omitempty"` - // PublishedPort is the port on the swarm hosts - PublishedPort uint32 `json:",omitempty"` - // PublishMode is the mode in which port is published - PublishMode PortConfigPublishMode `json:",omitempty"` -} - -// PortConfigPublishMode represents the mode in which the port is to -// be published. -type PortConfigPublishMode string - -const ( - // PortConfigPublishModeIngress is used for ports published - // for ingress load balancing using routing mesh. - PortConfigPublishModeIngress PortConfigPublishMode = "ingress" - // PortConfigPublishModeHost is used for ports published - // for direct host level access on the host where the task is running. - PortConfigPublishModeHost PortConfigPublishMode = "host" -) - -// PortConfigProtocol represents the protocol of a port. -type PortConfigProtocol string - -const ( - // TODO(stevvooe): These should be used generally, not just for PortConfig. - - // PortConfigProtocolTCP TCP - PortConfigProtocolTCP PortConfigProtocol = "tcp" - // PortConfigProtocolUDP UDP - PortConfigProtocolUDP PortConfigProtocol = "udp" -) - -// EndpointVirtualIP represents the virtual ip of a port. -type EndpointVirtualIP struct { - NetworkID string `json:",omitempty"` - Addr string `json:",omitempty"` -} - -// Network represents a network. -type Network struct { - ID string - Meta - Spec NetworkSpec `json:",omitempty"` - DriverState Driver `json:",omitempty"` - IPAMOptions *IPAMOptions `json:",omitempty"` -} - -// NetworkSpec represents the spec of a network. -type NetworkSpec struct { - Annotations - DriverConfiguration *Driver `json:",omitempty"` - IPv6Enabled bool `json:",omitempty"` - Internal bool `json:",omitempty"` - Attachable bool `json:",omitempty"` - IPAMOptions *IPAMOptions `json:",omitempty"` -} - -// NetworkAttachmentConfig represents the configuration of a network attachment. -type NetworkAttachmentConfig struct { - Target string `json:",omitempty"` - Aliases []string `json:",omitempty"` -} - -// NetworkAttachment represents a network attachment. -type NetworkAttachment struct { - Network Network `json:",omitempty"` - Addresses []string `json:",omitempty"` -} - -// IPAMOptions represents ipam options. -type IPAMOptions struct { - Driver Driver `json:",omitempty"` - Configs []IPAMConfig `json:",omitempty"` -} - -// IPAMConfig represents ipam configuration. -type IPAMConfig struct { - Subnet string `json:",omitempty"` - Range string `json:",omitempty"` - Gateway string `json:",omitempty"` -} diff --git a/vendor/github.com/docker/docker/api/types/swarm/node.go b/vendor/github.com/docker/docker/api/types/swarm/node.go deleted file mode 100644 index 379e17a7..00000000 --- a/vendor/github.com/docker/docker/api/types/swarm/node.go +++ /dev/null @@ -1,114 +0,0 @@ -package swarm - -// Node represents a node. -type Node struct { - ID string - Meta - // Spec defines the desired state of the node as specified by the user. - // The system will honor this and will *never* modify it. - Spec NodeSpec `json:",omitempty"` - // Description encapsulates the properties of the Node as reported by the - // agent. - Description NodeDescription `json:",omitempty"` - // Status provides the current status of the node, as seen by the manager. - Status NodeStatus `json:",omitempty"` - // ManagerStatus provides the current status of the node's manager - // component, if the node is a manager. - ManagerStatus *ManagerStatus `json:",omitempty"` -} - -// NodeSpec represents the spec of a node. -type NodeSpec struct { - Annotations - Role NodeRole `json:",omitempty"` - Availability NodeAvailability `json:",omitempty"` -} - -// NodeRole represents the role of a node. -type NodeRole string - -const ( - // NodeRoleWorker WORKER - NodeRoleWorker NodeRole = "worker" - // NodeRoleManager MANAGER - NodeRoleManager NodeRole = "manager" -) - -// NodeAvailability represents the availability of a node. -type NodeAvailability string - -const ( - // NodeAvailabilityActive ACTIVE - NodeAvailabilityActive NodeAvailability = "active" - // NodeAvailabilityPause PAUSE - NodeAvailabilityPause NodeAvailability = "pause" - // NodeAvailabilityDrain DRAIN - NodeAvailabilityDrain NodeAvailability = "drain" -) - -// NodeDescription represents the description of a node. -type NodeDescription struct { - Hostname string `json:",omitempty"` - Platform Platform `json:",omitempty"` - Resources Resources `json:",omitempty"` - Engine EngineDescription `json:",omitempty"` -} - -// Platform represents the platform (Arch/OS). -type Platform struct { - Architecture string `json:",omitempty"` - OS string `json:",omitempty"` -} - -// EngineDescription represents the description of an engine. -type EngineDescription struct { - EngineVersion string `json:",omitempty"` - Labels map[string]string `json:",omitempty"` - Plugins []PluginDescription `json:",omitempty"` -} - -// PluginDescription represents the description of an engine plugin. -type PluginDescription struct { - Type string `json:",omitempty"` - Name string `json:",omitempty"` -} - -// NodeStatus represents the status of a node. -type NodeStatus struct { - State NodeState `json:",omitempty"` - Message string `json:",omitempty"` - Addr string `json:",omitempty"` -} - -// Reachability represents the reachability of a node. -type Reachability string - -const ( - // ReachabilityUnknown UNKNOWN - ReachabilityUnknown Reachability = "unknown" - // ReachabilityUnreachable UNREACHABLE - ReachabilityUnreachable Reachability = "unreachable" - // ReachabilityReachable REACHABLE - ReachabilityReachable Reachability = "reachable" -) - -// ManagerStatus represents the status of a manager. -type ManagerStatus struct { - Leader bool `json:",omitempty"` - Reachability Reachability `json:",omitempty"` - Addr string `json:",omitempty"` -} - -// NodeState represents the state of a node. -type NodeState string - -const ( - // NodeStateUnknown UNKNOWN - NodeStateUnknown NodeState = "unknown" - // NodeStateDown DOWN - NodeStateDown NodeState = "down" - // NodeStateReady READY - NodeStateReady NodeState = "ready" - // NodeStateDisconnected DISCONNECTED - NodeStateDisconnected NodeState = "disconnected" -) diff --git a/vendor/github.com/docker/docker/api/types/swarm/secret.go b/vendor/github.com/docker/docker/api/types/swarm/secret.go deleted file mode 100644 index fdb23888..00000000 --- a/vendor/github.com/docker/docker/api/types/swarm/secret.go +++ /dev/null @@ -1,31 +0,0 @@ -package swarm - -import "os" - -// Secret represents a secret. -type Secret struct { - ID string - Meta - Spec SecretSpec -} - -// SecretSpec represents a secret specification from a secret in swarm -type SecretSpec struct { - Annotations - Data []byte `json:",omitempty"` -} - -// SecretReferenceFileTarget is a file target in a secret reference -type SecretReferenceFileTarget struct { - Name string - UID string - GID string - Mode os.FileMode -} - -// SecretReference is a reference to a secret in swarm -type SecretReference struct { - File *SecretReferenceFileTarget - SecretID string - SecretName string -} diff --git a/vendor/github.com/docker/docker/api/types/swarm/service.go b/vendor/github.com/docker/docker/api/types/swarm/service.go deleted file mode 100644 index 2cf2642c..00000000 --- a/vendor/github.com/docker/docker/api/types/swarm/service.go +++ /dev/null @@ -1,105 +0,0 @@ -package swarm - -import "time" - -// Service represents a service. -type Service struct { - ID string - Meta - Spec ServiceSpec `json:",omitempty"` - PreviousSpec *ServiceSpec `json:",omitempty"` - Endpoint Endpoint `json:",omitempty"` - UpdateStatus UpdateStatus `json:",omitempty"` -} - -// ServiceSpec represents the spec of a service. -type ServiceSpec struct { - Annotations - - // TaskTemplate defines how the service should construct new tasks when - // orchestrating this service. - TaskTemplate TaskSpec `json:",omitempty"` - Mode ServiceMode `json:",omitempty"` - UpdateConfig *UpdateConfig `json:",omitempty"` - - // Networks field in ServiceSpec is deprecated. The - // same field in TaskSpec should be used instead. - // This field will be removed in a future release. - Networks []NetworkAttachmentConfig `json:",omitempty"` - EndpointSpec *EndpointSpec `json:",omitempty"` -} - -// ServiceMode represents the mode of a service. -type ServiceMode struct { - Replicated *ReplicatedService `json:",omitempty"` - Global *GlobalService `json:",omitempty"` -} - -// UpdateState is the state of a service update. -type UpdateState string - -const ( - // UpdateStateUpdating is the updating state. - UpdateStateUpdating UpdateState = "updating" - // UpdateStatePaused is the paused state. - UpdateStatePaused UpdateState = "paused" - // UpdateStateCompleted is the completed state. - UpdateStateCompleted UpdateState = "completed" -) - -// UpdateStatus reports the status of a service update. -type UpdateStatus struct { - State UpdateState `json:",omitempty"` - StartedAt time.Time `json:",omitempty"` - CompletedAt time.Time `json:",omitempty"` - Message string `json:",omitempty"` -} - -// ReplicatedService is a kind of ServiceMode. -type ReplicatedService struct { - Replicas *uint64 `json:",omitempty"` -} - -// GlobalService is a kind of ServiceMode. -type GlobalService struct{} - -const ( - // UpdateFailureActionPause PAUSE - UpdateFailureActionPause = "pause" - // UpdateFailureActionContinue CONTINUE - UpdateFailureActionContinue = "continue" -) - -// UpdateConfig represents the update configuration. -type UpdateConfig struct { - // Maximum number of tasks to be updated in one iteration. - // 0 means unlimited parallelism. - Parallelism uint64 - - // Amount of time between updates. - Delay time.Duration `json:",omitempty"` - - // FailureAction is the action to take when an update failures. - FailureAction string `json:",omitempty"` - - // Monitor indicates how long to monitor a task for failure after it is - // created. If the task fails by ending up in one of the states - // REJECTED, COMPLETED, or FAILED, within Monitor from its creation, - // this counts as a failure. If it fails after Monitor, it does not - // count as a failure. If Monitor is unspecified, a default value will - // be used. - Monitor time.Duration `json:",omitempty"` - - // MaxFailureRatio is the fraction of tasks that may fail during - // an update before the failure action is invoked. Any task created by - // the current update which ends up in one of the states REJECTED, - // COMPLETED or FAILED within Monitor from its creation counts as a - // failure. The number of failures is divided by the number of tasks - // being updated, and if this fraction is greater than - // MaxFailureRatio, the failure action is invoked. - // - // If the failure action is CONTINUE, there is no effect. - // If the failure action is PAUSE, no more tasks will be updated until - // another update is started. - MaxFailureRatio float32 -} diff --git a/vendor/github.com/docker/docker/api/types/swarm/swarm.go b/vendor/github.com/docker/docker/api/types/swarm/swarm.go deleted file mode 100644 index 0b422196..00000000 --- a/vendor/github.com/docker/docker/api/types/swarm/swarm.go +++ /dev/null @@ -1,197 +0,0 @@ -package swarm - -import "time" - -// ClusterInfo represents info about the cluster for outputing in "info" -// it contains the same information as "Swarm", but without the JoinTokens -type ClusterInfo struct { - ID string - Meta - Spec Spec -} - -// Swarm represents a swarm. -type Swarm struct { - ClusterInfo - JoinTokens JoinTokens -} - -// JoinTokens contains the tokens workers and managers need to join the swarm. -type JoinTokens struct { - // Worker is the join token workers may use to join the swarm. - Worker string - // Manager is the join token managers may use to join the swarm. - Manager string -} - -// Spec represents the spec of a swarm. -type Spec struct { - Annotations - - Orchestration OrchestrationConfig `json:",omitempty"` - Raft RaftConfig `json:",omitempty"` - Dispatcher DispatcherConfig `json:",omitempty"` - CAConfig CAConfig `json:",omitempty"` - TaskDefaults TaskDefaults `json:",omitempty"` - EncryptionConfig EncryptionConfig `json:",omitempty"` -} - -// OrchestrationConfig represents orchestration configuration. -type OrchestrationConfig struct { - // TaskHistoryRetentionLimit is the number of historic tasks to keep per instance or - // node. If negative, never remove completed or failed tasks. - TaskHistoryRetentionLimit *int64 `json:",omitempty"` -} - -// TaskDefaults parameterizes cluster-level task creation with default values. -type TaskDefaults struct { - // LogDriver selects the log driver to use for tasks created in the - // orchestrator if unspecified by a service. - // - // Updating this value will only have an affect on new tasks. Old tasks - // will continue use their previously configured log driver until - // recreated. - LogDriver *Driver `json:",omitempty"` -} - -// EncryptionConfig controls at-rest encryption of data and keys. -type EncryptionConfig struct { - // AutoLockManagers specifies whether or not managers TLS keys and raft data - // should be encrypted at rest in such a way that they must be unlocked - // before the manager node starts up again. - AutoLockManagers bool -} - -// RaftConfig represents raft configuration. -type RaftConfig struct { - // SnapshotInterval is the number of log entries between snapshots. - SnapshotInterval uint64 `json:",omitempty"` - - // KeepOldSnapshots is the number of snapshots to keep beyond the - // current snapshot. - KeepOldSnapshots *uint64 `json:",omitempty"` - - // LogEntriesForSlowFollowers is the number of log entries to keep - // around to sync up slow followers after a snapshot is created. - LogEntriesForSlowFollowers uint64 `json:",omitempty"` - - // ElectionTick is the number of ticks that a follower will wait for a message - // from the leader before becoming a candidate and starting an election. - // ElectionTick must be greater than HeartbeatTick. - // - // A tick currently defaults to one second, so these translate directly to - // seconds currently, but this is NOT guaranteed. - ElectionTick int - - // HeartbeatTick is the number of ticks between heartbeats. Every - // HeartbeatTick ticks, the leader will send a heartbeat to the - // followers. - // - // A tick currently defaults to one second, so these translate directly to - // seconds currently, but this is NOT guaranteed. - HeartbeatTick int -} - -// DispatcherConfig represents dispatcher configuration. -type DispatcherConfig struct { - // HeartbeatPeriod defines how often agent should send heartbeats to - // dispatcher. - HeartbeatPeriod time.Duration `json:",omitempty"` -} - -// CAConfig represents CA configuration. -type CAConfig struct { - // NodeCertExpiry is the duration certificates should be issued for - NodeCertExpiry time.Duration `json:",omitempty"` - - // ExternalCAs is a list of CAs to which a manager node will make - // certificate signing requests for node certificates. - ExternalCAs []*ExternalCA `json:",omitempty"` -} - -// ExternalCAProtocol represents type of external CA. -type ExternalCAProtocol string - -// ExternalCAProtocolCFSSL CFSSL -const ExternalCAProtocolCFSSL ExternalCAProtocol = "cfssl" - -// ExternalCA defines external CA to be used by the cluster. -type ExternalCA struct { - // Protocol is the protocol used by this external CA. - Protocol ExternalCAProtocol - - // URL is the URL where the external CA can be reached. - URL string - - // Options is a set of additional key/value pairs whose interpretation - // depends on the specified CA type. - Options map[string]string `json:",omitempty"` -} - -// InitRequest is the request used to init a swarm. -type InitRequest struct { - ListenAddr string - AdvertiseAddr string - ForceNewCluster bool - Spec Spec - AutoLockManagers bool -} - -// JoinRequest is the request used to join a swarm. -type JoinRequest struct { - ListenAddr string - AdvertiseAddr string - RemoteAddrs []string - JoinToken string // accept by secret -} - -// UnlockRequest is the request used to unlock a swarm. -type UnlockRequest struct { - // UnlockKey is the unlock key in ASCII-armored format. - UnlockKey string -} - -// LocalNodeState represents the state of the local node. -type LocalNodeState string - -const ( - // LocalNodeStateInactive INACTIVE - LocalNodeStateInactive LocalNodeState = "inactive" - // LocalNodeStatePending PENDING - LocalNodeStatePending LocalNodeState = "pending" - // LocalNodeStateActive ACTIVE - LocalNodeStateActive LocalNodeState = "active" - // LocalNodeStateError ERROR - LocalNodeStateError LocalNodeState = "error" - // LocalNodeStateLocked LOCKED - LocalNodeStateLocked LocalNodeState = "locked" -) - -// Info represents generic information about swarm. -type Info struct { - NodeID string - NodeAddr string - - LocalNodeState LocalNodeState - ControlAvailable bool - Error string - - RemoteManagers []Peer - Nodes int - Managers int - - Cluster ClusterInfo -} - -// Peer represents a peer. -type Peer struct { - NodeID string - Addr string -} - -// UpdateFlags contains flags for SwarmUpdate. -type UpdateFlags struct { - RotateWorkerToken bool - RotateManagerToken bool - RotateManagerUnlockKey bool -} diff --git a/vendor/github.com/docker/docker/api/types/swarm/task.go b/vendor/github.com/docker/docker/api/types/swarm/task.go deleted file mode 100644 index ace12cc8..00000000 --- a/vendor/github.com/docker/docker/api/types/swarm/task.go +++ /dev/null @@ -1,128 +0,0 @@ -package swarm - -import "time" - -// TaskState represents the state of a task. -type TaskState string - -const ( - // TaskStateNew NEW - TaskStateNew TaskState = "new" - // TaskStateAllocated ALLOCATED - TaskStateAllocated TaskState = "allocated" - // TaskStatePending PENDING - TaskStatePending TaskState = "pending" - // TaskStateAssigned ASSIGNED - TaskStateAssigned TaskState = "assigned" - // TaskStateAccepted ACCEPTED - TaskStateAccepted TaskState = "accepted" - // TaskStatePreparing PREPARING - TaskStatePreparing TaskState = "preparing" - // TaskStateReady READY - TaskStateReady TaskState = "ready" - // TaskStateStarting STARTING - TaskStateStarting TaskState = "starting" - // TaskStateRunning RUNNING - TaskStateRunning TaskState = "running" - // TaskStateComplete COMPLETE - TaskStateComplete TaskState = "complete" - // TaskStateShutdown SHUTDOWN - TaskStateShutdown TaskState = "shutdown" - // TaskStateFailed FAILED - TaskStateFailed TaskState = "failed" - // TaskStateRejected REJECTED - TaskStateRejected TaskState = "rejected" -) - -// Task represents a task. -type Task struct { - ID string - Meta - Annotations - - Spec TaskSpec `json:",omitempty"` - ServiceID string `json:",omitempty"` - Slot int `json:",omitempty"` - NodeID string `json:",omitempty"` - Status TaskStatus `json:",omitempty"` - DesiredState TaskState `json:",omitempty"` - NetworksAttachments []NetworkAttachment `json:",omitempty"` -} - -// TaskSpec represents the spec of a task. -type TaskSpec struct { - ContainerSpec ContainerSpec `json:",omitempty"` - Resources *ResourceRequirements `json:",omitempty"` - RestartPolicy *RestartPolicy `json:",omitempty"` - Placement *Placement `json:",omitempty"` - Networks []NetworkAttachmentConfig `json:",omitempty"` - - // LogDriver specifies the LogDriver to use for tasks created from this - // spec. If not present, the one on cluster default on swarm.Spec will be - // used, finally falling back to the engine default if not specified. - LogDriver *Driver `json:",omitempty"` - - // ForceUpdate is a counter that triggers an update even if no relevant - // parameters have been changed. - ForceUpdate uint64 -} - -// Resources represents resources (CPU/Memory). -type Resources struct { - NanoCPUs int64 `json:",omitempty"` - MemoryBytes int64 `json:",omitempty"` -} - -// ResourceRequirements represents resources requirements. -type ResourceRequirements struct { - Limits *Resources `json:",omitempty"` - Reservations *Resources `json:",omitempty"` -} - -// Placement represents orchestration parameters. -type Placement struct { - Constraints []string `json:",omitempty"` -} - -// RestartPolicy represents the restart policy. -type RestartPolicy struct { - Condition RestartPolicyCondition `json:",omitempty"` - Delay *time.Duration `json:",omitempty"` - MaxAttempts *uint64 `json:",omitempty"` - Window *time.Duration `json:",omitempty"` -} - -// RestartPolicyCondition represents when to restart. -type RestartPolicyCondition string - -const ( - // RestartPolicyConditionNone NONE - RestartPolicyConditionNone RestartPolicyCondition = "none" - // RestartPolicyConditionOnFailure ON_FAILURE - RestartPolicyConditionOnFailure RestartPolicyCondition = "on-failure" - // RestartPolicyConditionAny ANY - RestartPolicyConditionAny RestartPolicyCondition = "any" -) - -// TaskStatus represents the status of a task. -type TaskStatus struct { - Timestamp time.Time `json:",omitempty"` - State TaskState `json:",omitempty"` - Message string `json:",omitempty"` - Err string `json:",omitempty"` - ContainerStatus ContainerStatus `json:",omitempty"` - PortStatus PortStatus `json:",omitempty"` -} - -// ContainerStatus represents the status of a container. -type ContainerStatus struct { - ContainerID string `json:",omitempty"` - PID int `json:",omitempty"` - ExitCode int `json:",omitempty"` -} - -// PortStatus represents the port status of a task's host ports whose -// service has published host ports -type PortStatus struct { - Ports []PortConfig `json:",omitempty"` -} diff --git a/vendor/github.com/docker/docker/api/types/time/duration_convert.go b/vendor/github.com/docker/docker/api/types/time/duration_convert.go deleted file mode 100644 index 63e1eec1..00000000 --- a/vendor/github.com/docker/docker/api/types/time/duration_convert.go +++ /dev/null @@ -1,12 +0,0 @@ -package time - -import ( - "strconv" - "time" -) - -// DurationToSecondsString converts the specified duration to the number -// seconds it represents, formatted as a string. -func DurationToSecondsString(duration time.Duration) string { - return strconv.FormatFloat(duration.Seconds(), 'f', 0, 64) -} diff --git a/vendor/github.com/docker/docker/api/types/time/timestamp.go b/vendor/github.com/docker/docker/api/types/time/timestamp.go deleted file mode 100644 index d3695ba7..00000000 --- a/vendor/github.com/docker/docker/api/types/time/timestamp.go +++ /dev/null @@ -1,124 +0,0 @@ -package time - -import ( - "fmt" - "math" - "strconv" - "strings" - "time" -) - -// These are additional predefined layouts for use in Time.Format and Time.Parse -// with --since and --until parameters for `docker logs` and `docker events` -const ( - rFC3339Local = "2006-01-02T15:04:05" // RFC3339 with local timezone - rFC3339NanoLocal = "2006-01-02T15:04:05.999999999" // RFC3339Nano with local timezone - dateWithZone = "2006-01-02Z07:00" // RFC3339 with time at 00:00:00 - dateLocal = "2006-01-02" // RFC3339 with local timezone and time at 00:00:00 -) - -// GetTimestamp tries to parse given string as golang duration, -// then RFC3339 time and finally as a Unix timestamp. If -// any of these were successful, it returns a Unix timestamp -// as string otherwise returns the given value back. -// In case of duration input, the returned timestamp is computed -// as the given reference time minus the amount of the duration. -func GetTimestamp(value string, reference time.Time) (string, error) { - if d, err := time.ParseDuration(value); value != "0" && err == nil { - return strconv.FormatInt(reference.Add(-d).Unix(), 10), nil - } - - var format string - var parseInLocation bool - - // if the string has a Z or a + or three dashes use parse otherwise use parseinlocation - parseInLocation = !(strings.ContainsAny(value, "zZ+") || strings.Count(value, "-") == 3) - - if strings.Contains(value, ".") { - if parseInLocation { - format = rFC3339NanoLocal - } else { - format = time.RFC3339Nano - } - } else if strings.Contains(value, "T") { - // we want the number of colons in the T portion of the timestamp - tcolons := strings.Count(value, ":") - // if parseInLocation is off and we have a +/- zone offset (not Z) then - // there will be an extra colon in the input for the tz offset subtract that - // colon from the tcolons count - if !parseInLocation && !strings.ContainsAny(value, "zZ") && tcolons > 0 { - tcolons-- - } - if parseInLocation { - switch tcolons { - case 0: - format = "2006-01-02T15" - case 1: - format = "2006-01-02T15:04" - default: - format = rFC3339Local - } - } else { - switch tcolons { - case 0: - format = "2006-01-02T15Z07:00" - case 1: - format = "2006-01-02T15:04Z07:00" - default: - format = time.RFC3339 - } - } - } else if parseInLocation { - format = dateLocal - } else { - format = dateWithZone - } - - var t time.Time - var err error - - if parseInLocation { - t, err = time.ParseInLocation(format, value, time.FixedZone(reference.Zone())) - } else { - t, err = time.Parse(format, value) - } - - if err != nil { - // if there is a `-` then its an RFC3339 like timestamp otherwise assume unixtimestamp - if strings.Contains(value, "-") { - return "", err // was probably an RFC3339 like timestamp but the parser failed with an error - } - return value, nil // unixtimestamp in and out case (meaning: the value passed at the command line is already in the right format for passing to the server) - } - - return fmt.Sprintf("%d.%09d", t.Unix(), int64(t.Nanosecond())), nil -} - -// ParseTimestamps returns seconds and nanoseconds from a timestamp that has the -// format "%d.%09d", time.Unix(), int64(time.Nanosecond())) -// if the incoming nanosecond portion is longer or shorter than 9 digits it is -// converted to nanoseconds. The expectation is that the seconds and -// seconds will be used to create a time variable. For example: -// seconds, nanoseconds, err := ParseTimestamp("1136073600.000000001",0) -// if err == nil since := time.Unix(seconds, nanoseconds) -// returns seconds as def(aultSeconds) if value == "" -func ParseTimestamps(value string, def int64) (int64, int64, error) { - if value == "" { - return def, 0, nil - } - sa := strings.SplitN(value, ".", 2) - s, err := strconv.ParseInt(sa[0], 10, 64) - if err != nil { - return s, 0, err - } - if len(sa) != 2 { - return s, 0, nil - } - n, err := strconv.ParseInt(sa[1], 10, 64) - if err != nil { - return s, n, err - } - // should already be in nanoseconds but just in case convert n to nanoseonds - n = int64(float64(n) * math.Pow(float64(10), float64(9-len(sa[1])))) - return s, n, nil -} diff --git a/vendor/github.com/docker/docker/api/types/types.go b/vendor/github.com/docker/docker/api/types/types.go deleted file mode 100644 index a82c3e88..00000000 --- a/vendor/github.com/docker/docker/api/types/types.go +++ /dev/null @@ -1,549 +0,0 @@ -package types - -import ( - "errors" - "fmt" - "io" - "os" - "strings" - "time" - - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/filters" - "github.com/docker/docker/api/types/mount" - "github.com/docker/docker/api/types/network" - "github.com/docker/docker/api/types/registry" - "github.com/docker/docker/api/types/swarm" - "github.com/docker/go-connections/nat" -) - -// ContainerChange contains response of Engine API: -// GET "/containers/{name:.*}/changes" -type ContainerChange struct { - Kind int - Path string -} - -// ImageHistory contains response of Engine API: -// GET "/images/{name:.*}/history" -type ImageHistory struct { - ID string `json:"Id"` - Created int64 - CreatedBy string - Tags []string - Size int64 - Comment string -} - -// ImageDelete contains response of Engine API: -// DELETE "/images/{name:.*}" -type ImageDelete struct { - Untagged string `json:",omitempty"` - Deleted string `json:",omitempty"` -} - -// GraphDriverData returns Image's graph driver config info -// when calling inspect command -type GraphDriverData struct { - Name string - Data map[string]string -} - -// RootFS returns Image's RootFS description including the layer IDs. -type RootFS struct { - Type string - Layers []string `json:",omitempty"` - BaseLayer string `json:",omitempty"` -} - -// ImageInspect contains response of Engine API: -// GET "/images/{name:.*}/json" -type ImageInspect struct { - ID string `json:"Id"` - RepoTags []string - RepoDigests []string - Parent string - Comment string - Created string - Container string - ContainerConfig *container.Config - DockerVersion string - Author string - Config *container.Config - Architecture string - Os string - OsVersion string `json:",omitempty"` - Size int64 - VirtualSize int64 - GraphDriver GraphDriverData - RootFS RootFS -} - -// Container contains response of Engine API: -// GET "/containers/json" -type Container struct { - ID string `json:"Id"` - Names []string - Image string - ImageID string - Command string - Created int64 - Ports []Port - SizeRw int64 `json:",omitempty"` - SizeRootFs int64 `json:",omitempty"` - Labels map[string]string - State string - Status string - HostConfig struct { - NetworkMode string `json:",omitempty"` - } - NetworkSettings *SummaryNetworkSettings - Mounts []MountPoint -} - -// CopyConfig contains request body of Engine API: -// POST "/containers/"+containerID+"/copy" -type CopyConfig struct { - Resource string -} - -// ContainerPathStat is used to encode the header from -// GET "/containers/{name:.*}/archive" -// "Name" is the file or directory name. -type ContainerPathStat struct { - Name string `json:"name"` - Size int64 `json:"size"` - Mode os.FileMode `json:"mode"` - Mtime time.Time `json:"mtime"` - LinkTarget string `json:"linkTarget"` -} - -// ContainerStats contains response of Engine API: -// GET "/stats" -type ContainerStats struct { - Body io.ReadCloser `json:"body"` - OSType string `json:"ostype"` -} - -// ContainerProcessList contains response of Engine API: -// GET "/containers/{name:.*}/top" -type ContainerProcessList struct { - Processes [][]string - Titles []string -} - -// Ping contains response of Engine API: -// GET "/_ping" -type Ping struct { - APIVersion string - Experimental bool -} - -// Version contains response of Engine API: -// GET "/version" -type Version struct { - Version string - APIVersion string `json:"ApiVersion"` - MinAPIVersion string `json:"MinAPIVersion,omitempty"` - GitCommit string - GoVersion string - Os string - Arch string - KernelVersion string `json:",omitempty"` - Experimental bool `json:",omitempty"` - BuildTime string `json:",omitempty"` -} - -// Commit records a external tool actual commit id version along the -// one expect by dockerd as set at build time -type Commit struct { - ID string - Expected string -} - -// Info contains response of Engine API: -// GET "/info" -type Info struct { - ID string - Containers int - ContainersRunning int - ContainersPaused int - ContainersStopped int - Images int - Driver string - DriverStatus [][2]string - SystemStatus [][2]string - Plugins PluginsInfo - MemoryLimit bool - SwapLimit bool - KernelMemory bool - CPUCfsPeriod bool `json:"CpuCfsPeriod"` - CPUCfsQuota bool `json:"CpuCfsQuota"` - CPUShares bool - CPUSet bool - IPv4Forwarding bool - BridgeNfIptables bool - BridgeNfIP6tables bool `json:"BridgeNfIp6tables"` - Debug bool - NFd int - OomKillDisable bool - NGoroutines int - SystemTime string - LoggingDriver string - CgroupDriver string - NEventsListener int - KernelVersion string - OperatingSystem string - OSType string - Architecture string - IndexServerAddress string - RegistryConfig *registry.ServiceConfig - NCPU int - MemTotal int64 - DockerRootDir string - HTTPProxy string `json:"HttpProxy"` - HTTPSProxy string `json:"HttpsProxy"` - NoProxy string - Name string - Labels []string - ExperimentalBuild bool - ServerVersion string - ClusterStore string - ClusterAdvertise string - Runtimes map[string]Runtime - DefaultRuntime string - Swarm swarm.Info - // LiveRestoreEnabled determines whether containers should be kept - // running when the daemon is shutdown or upon daemon start if - // running containers are detected - LiveRestoreEnabled bool - Isolation container.Isolation - InitBinary string - ContainerdCommit Commit - RuncCommit Commit - InitCommit Commit - SecurityOptions []string -} - -// KeyValue holds a key/value pair -type KeyValue struct { - Key, Value string -} - -// SecurityOpt contains the name and options of a security option -type SecurityOpt struct { - Name string - Options []KeyValue -} - -// DecodeSecurityOptions decodes a security options string slice to a type safe -// SecurityOpt -func DecodeSecurityOptions(opts []string) ([]SecurityOpt, error) { - so := []SecurityOpt{} - for _, opt := range opts { - // support output from a < 1.13 docker daemon - if !strings.Contains(opt, "=") { - so = append(so, SecurityOpt{Name: opt}) - continue - } - secopt := SecurityOpt{} - split := strings.Split(opt, ",") - for _, s := range split { - kv := strings.SplitN(s, "=", 2) - if len(kv) != 2 { - return nil, fmt.Errorf("invalid security option %q", s) - } - if kv[0] == "" || kv[1] == "" { - return nil, errors.New("invalid empty security option") - } - if kv[0] == "name" { - secopt.Name = kv[1] - continue - } - secopt.Options = append(secopt.Options, KeyValue{Key: kv[0], Value: kv[1]}) - } - so = append(so, secopt) - } - return so, nil -} - -// PluginsInfo is a temp struct holding Plugins name -// registered with docker daemon. It is used by Info struct -type PluginsInfo struct { - // List of Volume plugins registered - Volume []string - // List of Network plugins registered - Network []string - // List of Authorization plugins registered - Authorization []string -} - -// ExecStartCheck is a temp struct used by execStart -// Config fields is part of ExecConfig in runconfig package -type ExecStartCheck struct { - // ExecStart will first check if it's detached - Detach bool - // Check if there's a tty - Tty bool -} - -// HealthcheckResult stores information about a single run of a healthcheck probe -type HealthcheckResult struct { - Start time.Time // Start is the time this check started - End time.Time // End is the time this check ended - ExitCode int // ExitCode meanings: 0=healthy, 1=unhealthy, 2=reserved (considered unhealthy), else=error running probe - Output string // Output from last check -} - -// Health states -const ( - NoHealthcheck = "none" // Indicates there is no healthcheck - Starting = "starting" // Starting indicates that the container is not yet ready - Healthy = "healthy" // Healthy indicates that the container is running correctly - Unhealthy = "unhealthy" // Unhealthy indicates that the container has a problem -) - -// Health stores information about the container's healthcheck results -type Health struct { - Status string // Status is one of Starting, Healthy or Unhealthy - FailingStreak int // FailingStreak is the number of consecutive failures - Log []*HealthcheckResult // Log contains the last few results (oldest first) -} - -// ContainerState stores container's running state -// it's part of ContainerJSONBase and will return by "inspect" command -type ContainerState struct { - Status string - Running bool - Paused bool - Restarting bool - OOMKilled bool - Dead bool - Pid int - ExitCode int - Error string - StartedAt string - FinishedAt string - Health *Health `json:",omitempty"` -} - -// ContainerNode stores information about the node that a container -// is running on. It's only available in Docker Swarm -type ContainerNode struct { - ID string - IPAddress string `json:"IP"` - Addr string - Name string - Cpus int - Memory int64 - Labels map[string]string -} - -// ContainerJSONBase contains response of Engine API: -// GET "/containers/{name:.*}/json" -type ContainerJSONBase struct { - ID string `json:"Id"` - Created string - Path string - Args []string - State *ContainerState - Image string - ResolvConfPath string - HostnamePath string - HostsPath string - LogPath string - Node *ContainerNode `json:",omitempty"` - Name string - RestartCount int - Driver string - MountLabel string - ProcessLabel string - AppArmorProfile string - ExecIDs []string - HostConfig *container.HostConfig - GraphDriver GraphDriverData - SizeRw *int64 `json:",omitempty"` - SizeRootFs *int64 `json:",omitempty"` -} - -// ContainerJSON is newly used struct along with MountPoint -type ContainerJSON struct { - *ContainerJSONBase - Mounts []MountPoint - Config *container.Config - NetworkSettings *NetworkSettings -} - -// NetworkSettings exposes the network settings in the api -type NetworkSettings struct { - NetworkSettingsBase - DefaultNetworkSettings - Networks map[string]*network.EndpointSettings -} - -// SummaryNetworkSettings provides a summary of container's networks -// in /containers/json -type SummaryNetworkSettings struct { - Networks map[string]*network.EndpointSettings -} - -// NetworkSettingsBase holds basic information about networks -type NetworkSettingsBase struct { - Bridge string // Bridge is the Bridge name the network uses(e.g. `docker0`) - SandboxID string // SandboxID uniquely represents a container's network stack - HairpinMode bool // HairpinMode specifies if hairpin NAT should be enabled on the virtual interface - LinkLocalIPv6Address string // LinkLocalIPv6Address is an IPv6 unicast address using the link-local prefix - LinkLocalIPv6PrefixLen int // LinkLocalIPv6PrefixLen is the prefix length of an IPv6 unicast address - Ports nat.PortMap // Ports is a collection of PortBinding indexed by Port - SandboxKey string // SandboxKey identifies the sandbox - SecondaryIPAddresses []network.Address - SecondaryIPv6Addresses []network.Address -} - -// DefaultNetworkSettings holds network information -// during the 2 release deprecation period. -// It will be removed in Docker 1.11. -type DefaultNetworkSettings struct { - EndpointID string // EndpointID uniquely represents a service endpoint in a Sandbox - Gateway string // Gateway holds the gateway address for the network - GlobalIPv6Address string // GlobalIPv6Address holds network's global IPv6 address - GlobalIPv6PrefixLen int // GlobalIPv6PrefixLen represents mask length of network's global IPv6 address - IPAddress string // IPAddress holds the IPv4 address for the network - IPPrefixLen int // IPPrefixLen represents mask length of network's IPv4 address - IPv6Gateway string // IPv6Gateway holds gateway address specific for IPv6 - MacAddress string // MacAddress holds the MAC address for the network -} - -// MountPoint represents a mount point configuration inside the container. -// This is used for reporting the mountpoints in use by a container. -type MountPoint struct { - Type mount.Type `json:",omitempty"` - Name string `json:",omitempty"` - Source string - Destination string - Driver string `json:",omitempty"` - Mode string - RW bool - Propagation mount.Propagation -} - -// NetworkResource is the body of the "get network" http response message -type NetworkResource struct { - Name string // Name is the requested name of the network - ID string `json:"Id"` // ID uniquely identifies a network on a single machine - Created time.Time // Created is the time the network created - Scope string // Scope describes the level at which the network exists (e.g. `global` for cluster-wide or `local` for machine level) - Driver string // Driver is the Driver name used to create the network (e.g. `bridge`, `overlay`) - EnableIPv6 bool // EnableIPv6 represents whether to enable IPv6 - IPAM network.IPAM // IPAM is the network's IP Address Management - Internal bool // Internal represents if the network is used internal only - Attachable bool // Attachable represents if the global scope is manually attachable by regular containers from workers in swarm mode. - Containers map[string]EndpointResource // Containers contains endpoints belonging to the network - Options map[string]string // Options holds the network specific options to use for when creating the network - Labels map[string]string // Labels holds metadata specific to the network being created - Peers []network.PeerInfo `json:",omitempty"` // List of peer nodes for an overlay network -} - -// EndpointResource contains network resources allocated and used for a container in a network -type EndpointResource struct { - Name string - EndpointID string - MacAddress string - IPv4Address string - IPv6Address string -} - -// NetworkCreate is the expected body of the "create network" http request message -type NetworkCreate struct { - CheckDuplicate bool - Driver string - EnableIPv6 bool - IPAM *network.IPAM - Internal bool - Attachable bool - Options map[string]string - Labels map[string]string -} - -// NetworkCreateRequest is the request message sent to the server for network create call. -type NetworkCreateRequest struct { - NetworkCreate - Name string -} - -// NetworkCreateResponse is the response message sent by the server for network create call -type NetworkCreateResponse struct { - ID string `json:"Id"` - Warning string -} - -// NetworkConnect represents the data to be used to connect a container to the network -type NetworkConnect struct { - Container string - EndpointConfig *network.EndpointSettings `json:",omitempty"` -} - -// NetworkDisconnect represents the data to be used to disconnect a container from the network -type NetworkDisconnect struct { - Container string - Force bool -} - -// Checkpoint represents the details of a checkpoint -type Checkpoint struct { - Name string // Name is the name of the checkpoint -} - -// Runtime describes an OCI runtime -type Runtime struct { - Path string `json:"path"` - Args []string `json:"runtimeArgs,omitempty"` -} - -// DiskUsage contains response of Engine API: -// GET "/system/df" -type DiskUsage struct { - LayersSize int64 - Images []*ImageSummary - Containers []*Container - Volumes []*Volume -} - -// ContainersPruneReport contains the response for Engine API: -// POST "/containers/prune" -type ContainersPruneReport struct { - ContainersDeleted []string - SpaceReclaimed uint64 -} - -// VolumesPruneReport contains the response for Engine API: -// POST "/volumes/prune" -type VolumesPruneReport struct { - VolumesDeleted []string - SpaceReclaimed uint64 -} - -// ImagesPruneReport contains the response for Engine API: -// POST "/images/prune" -type ImagesPruneReport struct { - ImagesDeleted []ImageDelete - SpaceReclaimed uint64 -} - -// NetworksPruneReport contains the response for Engine API: -// POST "/networks/prune" -type NetworksPruneReport struct { - NetworksDeleted []string -} - -// SecretCreateResponse contains the information returned to a client -// on the creation of a new secret. -type SecretCreateResponse struct { - // ID is the id of the created secret. - ID string -} - -// SecretListOptions holds parameters to list secrets -type SecretListOptions struct { - Filters filters.Args -} diff --git a/vendor/github.com/docker/docker/api/types/versions/compare.go b/vendor/github.com/docker/docker/api/types/versions/compare.go deleted file mode 100644 index 611d4fed..00000000 --- a/vendor/github.com/docker/docker/api/types/versions/compare.go +++ /dev/null @@ -1,62 +0,0 @@ -package versions - -import ( - "strconv" - "strings" -) - -// compare compares two version strings -// returns -1 if v1 < v2, 1 if v1 > v2, 0 otherwise. -func compare(v1, v2 string) int { - var ( - currTab = strings.Split(v1, ".") - otherTab = strings.Split(v2, ".") - ) - - max := len(currTab) - if len(otherTab) > max { - max = len(otherTab) - } - for i := 0; i < max; i++ { - var currInt, otherInt int - - if len(currTab) > i { - currInt, _ = strconv.Atoi(currTab[i]) - } - if len(otherTab) > i { - otherInt, _ = strconv.Atoi(otherTab[i]) - } - if currInt > otherInt { - return 1 - } - if otherInt > currInt { - return -1 - } - } - return 0 -} - -// LessThan checks if a version is less than another -func LessThan(v, other string) bool { - return compare(v, other) == -1 -} - -// LessThanOrEqualTo checks if a version is less than or equal to another -func LessThanOrEqualTo(v, other string) bool { - return compare(v, other) <= 0 -} - -// GreaterThan checks if a version is greater than another -func GreaterThan(v, other string) bool { - return compare(v, other) == 1 -} - -// GreaterThanOrEqualTo checks if a version is greater than or equal to another -func GreaterThanOrEqualTo(v, other string) bool { - return compare(v, other) >= 0 -} - -// Equal checks if a version is equal to another -func Equal(v, other string) bool { - return compare(v, other) == 0 -} diff --git a/vendor/github.com/docker/docker/api/types/volume.go b/vendor/github.com/docker/docker/api/types/volume.go deleted file mode 100644 index da4f8ebd..00000000 --- a/vendor/github.com/docker/docker/api/types/volume.go +++ /dev/null @@ -1,58 +0,0 @@ -package types - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// Volume volume -// swagger:model Volume -type Volume struct { - - // Name of the volume driver used by the volume. - // Required: true - Driver string `json:"Driver"` - - // User-defined key/value metadata. - // Required: true - Labels map[string]string `json:"Labels"` - - // Mount path of the volume on the host. - // Required: true - Mountpoint string `json:"Mountpoint"` - - // Name of the volume. - // Required: true - Name string `json:"Name"` - - // The driver specific options used when creating the volume. - // Required: true - Options map[string]string `json:"Options"` - - // The level at which the volume exists. Either `global` for cluster-wide, or `local` for machine level. - // Required: true - Scope string `json:"Scope"` - - // Low-level details about the volume, provided by the volume driver. - // Details are returned as a map with key/value pairs: - // `{"key":"value","key2":"value2"}`. - // - // The `Status` field is optional, and is omitted if the volume driver - // does not support this feature. - // - Status map[string]interface{} `json:"Status,omitempty"` - - // usage data - UsageData *VolumeUsageData `json:"UsageData,omitempty"` -} - -// VolumeUsageData volume usage data -// swagger:model VolumeUsageData -type VolumeUsageData struct { - - // The number of containers referencing this volume. - // Required: true - RefCount int64 `json:"RefCount"` - - // The disk space used by the volume (local driver only) - // Required: true - Size int64 `json:"Size"` -} diff --git a/vendor/github.com/docker/docker/api/types/volume/volumes_create.go b/vendor/github.com/docker/docker/api/types/volume/volumes_create.go deleted file mode 100644 index 679c1600..00000000 --- a/vendor/github.com/docker/docker/api/types/volume/volumes_create.go +++ /dev/null @@ -1,29 +0,0 @@ -package volume - -// ---------------------------------------------------------------------------- -// DO NOT EDIT THIS FILE -// This file was generated by `swagger generate operation` -// -// See hack/swagger-gen.sh -// ---------------------------------------------------------------------------- - -// VolumesCreateBody volumes create body -// swagger:model VolumesCreateBody -type VolumesCreateBody struct { - - // Name of the volume driver to use. - // Required: true - Driver string `json:"Driver"` - - // A mapping of driver options and values. These options are passed directly to the driver and are driver specific. - // Required: true - DriverOpts map[string]string `json:"DriverOpts"` - - // User-defined key/value metadata. - // Required: true - Labels map[string]string `json:"Labels"` - - // The new volume's name. If not specified, Docker generates a name. - // Required: true - Name string `json:"Name"` -} diff --git a/vendor/github.com/docker/docker/api/types/volume/volumes_list.go b/vendor/github.com/docker/docker/api/types/volume/volumes_list.go deleted file mode 100644 index 7770bcb8..00000000 --- a/vendor/github.com/docker/docker/api/types/volume/volumes_list.go +++ /dev/null @@ -1,23 +0,0 @@ -package volume - -// ---------------------------------------------------------------------------- -// DO NOT EDIT THIS FILE -// This file was generated by `swagger generate operation` -// -// See hack/swagger-gen.sh -// ---------------------------------------------------------------------------- - -import "github.com/docker/docker/api/types" - -// VolumesListOKBody volumes list o k body -// swagger:model VolumesListOKBody -type VolumesListOKBody struct { - - // List of volumes - // Required: true - Volumes []*types.Volume `json:"Volumes"` - - // Warnings that occurred when fetching the list of volumes - // Required: true - Warnings []string `json:"Warnings"` -} diff --git a/vendor/github.com/docker/docker/client/checkpoint_create.go b/vendor/github.com/docker/docker/client/checkpoint_create.go deleted file mode 100644 index 0effe498..00000000 --- a/vendor/github.com/docker/docker/client/checkpoint_create.go +++ /dev/null @@ -1,13 +0,0 @@ -package client - -import ( - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// CheckpointCreate creates a checkpoint from the given container with the given name -func (cli *Client) CheckpointCreate(ctx context.Context, container string, options types.CheckpointCreateOptions) error { - resp, err := cli.post(ctx, "/containers/"+container+"/checkpoints", nil, options, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/checkpoint_delete.go b/vendor/github.com/docker/docker/client/checkpoint_delete.go deleted file mode 100644 index e6e75588..00000000 --- a/vendor/github.com/docker/docker/client/checkpoint_delete.go +++ /dev/null @@ -1,20 +0,0 @@ -package client - -import ( - "net/url" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// CheckpointDelete deletes the checkpoint with the given name from the given container -func (cli *Client) CheckpointDelete(ctx context.Context, containerID string, options types.CheckpointDeleteOptions) error { - query := url.Values{} - if options.CheckpointDir != "" { - query.Set("dir", options.CheckpointDir) - } - - resp, err := cli.delete(ctx, "/containers/"+containerID+"/checkpoints/"+options.CheckpointID, query, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/checkpoint_list.go b/vendor/github.com/docker/docker/client/checkpoint_list.go deleted file mode 100644 index 8eb720a6..00000000 --- a/vendor/github.com/docker/docker/client/checkpoint_list.go +++ /dev/null @@ -1,28 +0,0 @@ -package client - -import ( - "encoding/json" - "net/url" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// CheckpointList returns the volumes configured in the docker host. -func (cli *Client) CheckpointList(ctx context.Context, container string, options types.CheckpointListOptions) ([]types.Checkpoint, error) { - var checkpoints []types.Checkpoint - - query := url.Values{} - if options.CheckpointDir != "" { - query.Set("dir", options.CheckpointDir) - } - - resp, err := cli.get(ctx, "/containers/"+container+"/checkpoints", query, nil) - if err != nil { - return checkpoints, err - } - - err = json.NewDecoder(resp.body).Decode(&checkpoints) - ensureReaderClosed(resp) - return checkpoints, err -} diff --git a/vendor/github.com/docker/docker/client/client.go b/vendor/github.com/docker/docker/client/client.go deleted file mode 100644 index a9bdab6b..00000000 --- a/vendor/github.com/docker/docker/client/client.go +++ /dev/null @@ -1,246 +0,0 @@ -/* -Package client is a Go client for the Docker Engine API. - -The "docker" command uses this package to communicate with the daemon. It can also -be used by your own Go applications to do anything the command-line interface does -– running containers, pulling images, managing swarms, etc. - -For more information about the Engine API, see the documentation: -https://docs.docker.com/engine/reference/api/ - -Usage - -You use the library by creating a client object and calling methods on it. The -client can be created either from environment variables with NewEnvClient, or -configured manually with NewClient. - -For example, to list running containers (the equivalent of "docker ps"): - - package main - - import ( - "context" - "fmt" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/client" - ) - - func main() { - cli, err := client.NewEnvClient() - if err != nil { - panic(err) - } - - containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{}) - if err != nil { - panic(err) - } - - for _, container := range containers { - fmt.Printf("%s %s\n", container.ID[:10], container.Image) - } - } - -*/ -package client - -import ( - "fmt" - "net/http" - "net/url" - "os" - "path/filepath" - "strings" - - "github.com/docker/go-connections/sockets" - "github.com/docker/go-connections/tlsconfig" -) - -// DefaultVersion is the version of the current stable API -const DefaultVersion string = "1.25" - -// Client is the API client that performs all operations -// against a docker server. -type Client struct { - // scheme sets the scheme for the client - scheme string - // host holds the server address to connect to - host string - // proto holds the client protocol i.e. unix. - proto string - // addr holds the client address. - addr string - // basePath holds the path to prepend to the requests. - basePath string - // client used to send and receive http requests. - client *http.Client - // version of the server to talk to. - version string - // custom http headers configured by users. - customHTTPHeaders map[string]string - // manualOverride is set to true when the version was set by users. - manualOverride bool -} - -// NewEnvClient initializes a new API client based on environment variables. -// Use DOCKER_HOST to set the url to the docker server. -// Use DOCKER_API_VERSION to set the version of the API to reach, leave empty for latest. -// Use DOCKER_CERT_PATH to load the tls certificates from. -// Use DOCKER_TLS_VERIFY to enable or disable TLS verification, off by default. -func NewEnvClient() (*Client, error) { - var client *http.Client - if dockerCertPath := os.Getenv("DOCKER_CERT_PATH"); dockerCertPath != "" { - options := tlsconfig.Options{ - CAFile: filepath.Join(dockerCertPath, "ca.pem"), - CertFile: filepath.Join(dockerCertPath, "cert.pem"), - KeyFile: filepath.Join(dockerCertPath, "key.pem"), - InsecureSkipVerify: os.Getenv("DOCKER_TLS_VERIFY") == "", - } - tlsc, err := tlsconfig.Client(options) - if err != nil { - return nil, err - } - - client = &http.Client{ - Transport: &http.Transport{ - TLSClientConfig: tlsc, - }, - } - } - - host := os.Getenv("DOCKER_HOST") - if host == "" { - host = DefaultDockerHost - } - version := os.Getenv("DOCKER_API_VERSION") - if version == "" { - version = DefaultVersion - } - - cli, err := NewClient(host, version, client, nil) - if err != nil { - return cli, err - } - if os.Getenv("DOCKER_API_VERSION") != "" { - cli.manualOverride = true - } - return cli, nil -} - -// NewClient initializes a new API client for the given host and API version. -// It uses the given http client as transport. -// It also initializes the custom http headers to add to each request. -// -// It won't send any version information if the version number is empty. It is -// highly recommended that you set a version or your client may break if the -// server is upgraded. -func NewClient(host string, version string, client *http.Client, httpHeaders map[string]string) (*Client, error) { - proto, addr, basePath, err := ParseHost(host) - if err != nil { - return nil, err - } - - if client != nil { - if _, ok := client.Transport.(*http.Transport); !ok { - return nil, fmt.Errorf("unable to verify TLS configuration, invalid transport %v", client.Transport) - } - } else { - transport := new(http.Transport) - sockets.ConfigureTransport(transport, proto, addr) - client = &http.Client{ - Transport: transport, - } - } - - scheme := "http" - tlsConfig := resolveTLSConfig(client.Transport) - if tlsConfig != nil { - // TODO(stevvooe): This isn't really the right way to write clients in Go. - // `NewClient` should probably only take an `*http.Client` and work from there. - // Unfortunately, the model of having a host-ish/url-thingy as the connection - // string has us confusing protocol and transport layers. We continue doing - // this to avoid breaking existing clients but this should be addressed. - scheme = "https" - } - - return &Client{ - scheme: scheme, - host: host, - proto: proto, - addr: addr, - basePath: basePath, - client: client, - version: version, - customHTTPHeaders: httpHeaders, - }, nil -} - -// Close ensures that transport.Client is closed -// especially needed while using NewClient with *http.Client = nil -// for example -// client.NewClient("unix:///var/run/docker.sock", nil, "v1.18", map[string]string{"User-Agent": "engine-api-cli-1.0"}) -func (cli *Client) Close() error { - - if t, ok := cli.client.Transport.(*http.Transport); ok { - t.CloseIdleConnections() - } - - return nil -} - -// getAPIPath returns the versioned request path to call the api. -// It appends the query parameters to the path if they are not empty. -func (cli *Client) getAPIPath(p string, query url.Values) string { - var apiPath string - if cli.version != "" { - v := strings.TrimPrefix(cli.version, "v") - apiPath = fmt.Sprintf("%s/v%s%s", cli.basePath, v, p) - } else { - apiPath = fmt.Sprintf("%s%s", cli.basePath, p) - } - - u := &url.URL{ - Path: apiPath, - } - if len(query) > 0 { - u.RawQuery = query.Encode() - } - return u.String() -} - -// ClientVersion returns the version string associated with this -// instance of the Client. Note that this value can be changed -// via the DOCKER_API_VERSION env var. -func (cli *Client) ClientVersion() string { - return cli.version -} - -// UpdateClientVersion updates the version string associated with this -// instance of the Client. -func (cli *Client) UpdateClientVersion(v string) { - if !cli.manualOverride { - cli.version = v - } - -} - -// ParseHost verifies that the given host strings is valid. -func ParseHost(host string) (string, string, string, error) { - protoAddrParts := strings.SplitN(host, "://", 2) - if len(protoAddrParts) == 1 { - return "", "", "", fmt.Errorf("unable to parse docker host `%s`", host) - } - - var basePath string - proto, addr := protoAddrParts[0], protoAddrParts[1] - if proto == "tcp" { - parsed, err := url.Parse("tcp://" + addr) - if err != nil { - return "", "", "", err - } - addr = parsed.Host - basePath = parsed.Path - } - return proto, addr, basePath, nil -} diff --git a/vendor/github.com/docker/docker/client/client_unix.go b/vendor/github.com/docker/docker/client/client_unix.go deleted file mode 100644 index 89de892c..00000000 --- a/vendor/github.com/docker/docker/client/client_unix.go +++ /dev/null @@ -1,6 +0,0 @@ -// +build linux freebsd solaris openbsd darwin - -package client - -// DefaultDockerHost defines os specific default if DOCKER_HOST is unset -const DefaultDockerHost = "unix:///var/run/docker.sock" diff --git a/vendor/github.com/docker/docker/client/client_windows.go b/vendor/github.com/docker/docker/client/client_windows.go deleted file mode 100644 index 07c0c7a7..00000000 --- a/vendor/github.com/docker/docker/client/client_windows.go +++ /dev/null @@ -1,4 +0,0 @@ -package client - -// DefaultDockerHost defines os specific default if DOCKER_HOST is unset -const DefaultDockerHost = "npipe:////./pipe/docker_engine" diff --git a/vendor/github.com/docker/docker/client/container_attach.go b/vendor/github.com/docker/docker/client/container_attach.go deleted file mode 100644 index eea46821..00000000 --- a/vendor/github.com/docker/docker/client/container_attach.go +++ /dev/null @@ -1,37 +0,0 @@ -package client - -import ( - "net/url" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// ContainerAttach attaches a connection to a container in the server. -// It returns a types.HijackedConnection with the hijacked connection -// and the a reader to get output. It's up to the called to close -// the hijacked connection by calling types.HijackedResponse.Close. -func (cli *Client) ContainerAttach(ctx context.Context, container string, options types.ContainerAttachOptions) (types.HijackedResponse, error) { - query := url.Values{} - if options.Stream { - query.Set("stream", "1") - } - if options.Stdin { - query.Set("stdin", "1") - } - if options.Stdout { - query.Set("stdout", "1") - } - if options.Stderr { - query.Set("stderr", "1") - } - if options.DetachKeys != "" { - query.Set("detachKeys", options.DetachKeys) - } - if options.Logs { - query.Set("logs", "1") - } - - headers := map[string][]string{"Content-Type": {"text/plain"}} - return cli.postHijacked(ctx, "/containers/"+container+"/attach", query, nil, headers) -} diff --git a/vendor/github.com/docker/docker/client/container_commit.go b/vendor/github.com/docker/docker/client/container_commit.go deleted file mode 100644 index c766d62e..00000000 --- a/vendor/github.com/docker/docker/client/container_commit.go +++ /dev/null @@ -1,53 +0,0 @@ -package client - -import ( - "encoding/json" - "errors" - "net/url" - - distreference "github.com/docker/distribution/reference" - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/reference" - "golang.org/x/net/context" -) - -// ContainerCommit applies changes into a container and creates a new tagged image. -func (cli *Client) ContainerCommit(ctx context.Context, container string, options types.ContainerCommitOptions) (types.IDResponse, error) { - var repository, tag string - if options.Reference != "" { - distributionRef, err := distreference.ParseNamed(options.Reference) - if err != nil { - return types.IDResponse{}, err - } - - if _, isCanonical := distributionRef.(distreference.Canonical); isCanonical { - return types.IDResponse{}, errors.New("refusing to create a tag with a digest reference") - } - - tag = reference.GetTagFromNamedRef(distributionRef) - repository = distributionRef.Name() - } - - query := url.Values{} - query.Set("container", container) - query.Set("repo", repository) - query.Set("tag", tag) - query.Set("comment", options.Comment) - query.Set("author", options.Author) - for _, change := range options.Changes { - query.Add("changes", change) - } - if options.Pause != true { - query.Set("pause", "0") - } - - var response types.IDResponse - resp, err := cli.post(ctx, "/commit", query, options.Config, nil) - if err != nil { - return response, err - } - - err = json.NewDecoder(resp.body).Decode(&response) - ensureReaderClosed(resp) - return response, err -} diff --git a/vendor/github.com/docker/docker/client/container_copy.go b/vendor/github.com/docker/docker/client/container_copy.go deleted file mode 100644 index 8380eeab..00000000 --- a/vendor/github.com/docker/docker/client/container_copy.go +++ /dev/null @@ -1,97 +0,0 @@ -package client - -import ( - "encoding/base64" - "encoding/json" - "fmt" - "io" - "net/http" - "net/url" - "path/filepath" - "strings" - - "golang.org/x/net/context" - - "github.com/docker/docker/api/types" -) - -// ContainerStatPath returns Stat information about a path inside the container filesystem. -func (cli *Client) ContainerStatPath(ctx context.Context, containerID, path string) (types.ContainerPathStat, error) { - query := url.Values{} - query.Set("path", filepath.ToSlash(path)) // Normalize the paths used in the API. - - urlStr := fmt.Sprintf("/containers/%s/archive", containerID) - response, err := cli.head(ctx, urlStr, query, nil) - if err != nil { - return types.ContainerPathStat{}, err - } - defer ensureReaderClosed(response) - return getContainerPathStatFromHeader(response.header) -} - -// CopyToContainer copies content into the container filesystem. -func (cli *Client) CopyToContainer(ctx context.Context, container, path string, content io.Reader, options types.CopyToContainerOptions) error { - query := url.Values{} - query.Set("path", filepath.ToSlash(path)) // Normalize the paths used in the API. - // Do not allow for an existing directory to be overwritten by a non-directory and vice versa. - if !options.AllowOverwriteDirWithFile { - query.Set("noOverwriteDirNonDir", "true") - } - - apiPath := fmt.Sprintf("/containers/%s/archive", container) - - response, err := cli.putRaw(ctx, apiPath, query, content, nil) - if err != nil { - return err - } - defer ensureReaderClosed(response) - - if response.statusCode != http.StatusOK { - return fmt.Errorf("unexpected status code from daemon: %d", response.statusCode) - } - - return nil -} - -// CopyFromContainer gets the content from the container and returns it as a Reader -// to manipulate it in the host. It's up to the caller to close the reader. -func (cli *Client) CopyFromContainer(ctx context.Context, container, srcPath string) (io.ReadCloser, types.ContainerPathStat, error) { - query := make(url.Values, 1) - query.Set("path", filepath.ToSlash(srcPath)) // Normalize the paths used in the API. - - apiPath := fmt.Sprintf("/containers/%s/archive", container) - response, err := cli.get(ctx, apiPath, query, nil) - if err != nil { - return nil, types.ContainerPathStat{}, err - } - - if response.statusCode != http.StatusOK { - return nil, types.ContainerPathStat{}, fmt.Errorf("unexpected status code from daemon: %d", response.statusCode) - } - - // In order to get the copy behavior right, we need to know information - // about both the source and the destination. The response headers include - // stat info about the source that we can use in deciding exactly how to - // copy it locally. Along with the stat info about the local destination, - // we have everything we need to handle the multiple possibilities there - // can be when copying a file/dir from one location to another file/dir. - stat, err := getContainerPathStatFromHeader(response.header) - if err != nil { - return nil, stat, fmt.Errorf("unable to get resource stat from response: %s", err) - } - return response.body, stat, err -} - -func getContainerPathStatFromHeader(header http.Header) (types.ContainerPathStat, error) { - var stat types.ContainerPathStat - - encodedStat := header.Get("X-Docker-Container-Path-Stat") - statDecoder := base64.NewDecoder(base64.StdEncoding, strings.NewReader(encodedStat)) - - err := json.NewDecoder(statDecoder).Decode(&stat) - if err != nil { - err = fmt.Errorf("unable to decode container path stat header: %s", err) - } - - return stat, err -} diff --git a/vendor/github.com/docker/docker/client/container_create.go b/vendor/github.com/docker/docker/client/container_create.go deleted file mode 100644 index 9f627aaf..00000000 --- a/vendor/github.com/docker/docker/client/container_create.go +++ /dev/null @@ -1,50 +0,0 @@ -package client - -import ( - "encoding/json" - "net/url" - "strings" - - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/network" - "golang.org/x/net/context" -) - -type configWrapper struct { - *container.Config - HostConfig *container.HostConfig - NetworkingConfig *network.NetworkingConfig -} - -// ContainerCreate creates a new container based in the given configuration. -// It can be associated with a name, but it's not mandatory. -func (cli *Client) ContainerCreate(ctx context.Context, config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, containerName string) (container.ContainerCreateCreatedBody, error) { - var response container.ContainerCreateCreatedBody - - if err := cli.NewVersionError("1.25", "stop timeout"); config != nil && config.StopTimeout != nil && err != nil { - return response, err - } - - query := url.Values{} - if containerName != "" { - query.Set("name", containerName) - } - - body := configWrapper{ - Config: config, - HostConfig: hostConfig, - NetworkingConfig: networkingConfig, - } - - serverResp, err := cli.post(ctx, "/containers/create", query, body, nil) - if err != nil { - if serverResp.statusCode == 404 && strings.Contains(err.Error(), "No such image") { - return response, imageNotFoundError{config.Image} - } - return response, err - } - - err = json.NewDecoder(serverResp.body).Decode(&response) - ensureReaderClosed(serverResp) - return response, err -} diff --git a/vendor/github.com/docker/docker/client/container_diff.go b/vendor/github.com/docker/docker/client/container_diff.go deleted file mode 100644 index 1e3e554f..00000000 --- a/vendor/github.com/docker/docker/client/container_diff.go +++ /dev/null @@ -1,23 +0,0 @@ -package client - -import ( - "encoding/json" - "net/url" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// ContainerDiff shows differences in a container filesystem since it was started. -func (cli *Client) ContainerDiff(ctx context.Context, containerID string) ([]types.ContainerChange, error) { - var changes []types.ContainerChange - - serverResp, err := cli.get(ctx, "/containers/"+containerID+"/changes", url.Values{}, nil) - if err != nil { - return changes, err - } - - err = json.NewDecoder(serverResp.body).Decode(&changes) - ensureReaderClosed(serverResp) - return changes, err -} diff --git a/vendor/github.com/docker/docker/client/container_exec.go b/vendor/github.com/docker/docker/client/container_exec.go deleted file mode 100644 index 0665c54f..00000000 --- a/vendor/github.com/docker/docker/client/container_exec.go +++ /dev/null @@ -1,54 +0,0 @@ -package client - -import ( - "encoding/json" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// ContainerExecCreate creates a new exec configuration to run an exec process. -func (cli *Client) ContainerExecCreate(ctx context.Context, container string, config types.ExecConfig) (types.IDResponse, error) { - var response types.IDResponse - - if err := cli.NewVersionError("1.25", "env"); len(config.Env) != 0 && err != nil { - return response, err - } - - resp, err := cli.post(ctx, "/containers/"+container+"/exec", nil, config, nil) - if err != nil { - return response, err - } - err = json.NewDecoder(resp.body).Decode(&response) - ensureReaderClosed(resp) - return response, err -} - -// ContainerExecStart starts an exec process already created in the docker host. -func (cli *Client) ContainerExecStart(ctx context.Context, execID string, config types.ExecStartCheck) error { - resp, err := cli.post(ctx, "/exec/"+execID+"/start", nil, config, nil) - ensureReaderClosed(resp) - return err -} - -// ContainerExecAttach attaches a connection to an exec process in the server. -// It returns a types.HijackedConnection with the hijacked connection -// and the a reader to get output. It's up to the called to close -// the hijacked connection by calling types.HijackedResponse.Close. -func (cli *Client) ContainerExecAttach(ctx context.Context, execID string, config types.ExecConfig) (types.HijackedResponse, error) { - headers := map[string][]string{"Content-Type": {"application/json"}} - return cli.postHijacked(ctx, "/exec/"+execID+"/start", nil, config, headers) -} - -// ContainerExecInspect returns information about a specific exec process on the docker host. -func (cli *Client) ContainerExecInspect(ctx context.Context, execID string) (types.ContainerExecInspect, error) { - var response types.ContainerExecInspect - resp, err := cli.get(ctx, "/exec/"+execID+"/json", nil, nil) - if err != nil { - return response, err - } - - err = json.NewDecoder(resp.body).Decode(&response) - ensureReaderClosed(resp) - return response, err -} diff --git a/vendor/github.com/docker/docker/client/container_export.go b/vendor/github.com/docker/docker/client/container_export.go deleted file mode 100644 index 52194f3d..00000000 --- a/vendor/github.com/docker/docker/client/container_export.go +++ /dev/null @@ -1,20 +0,0 @@ -package client - -import ( - "io" - "net/url" - - "golang.org/x/net/context" -) - -// ContainerExport retrieves the raw contents of a container -// and returns them as an io.ReadCloser. It's up to the caller -// to close the stream. -func (cli *Client) ContainerExport(ctx context.Context, containerID string) (io.ReadCloser, error) { - serverResp, err := cli.get(ctx, "/containers/"+containerID+"/export", url.Values{}, nil) - if err != nil { - return nil, err - } - - return serverResp.body, nil -} diff --git a/vendor/github.com/docker/docker/client/container_inspect.go b/vendor/github.com/docker/docker/client/container_inspect.go deleted file mode 100644 index 17f18097..00000000 --- a/vendor/github.com/docker/docker/client/container_inspect.go +++ /dev/null @@ -1,54 +0,0 @@ -package client - -import ( - "bytes" - "encoding/json" - "io/ioutil" - "net/http" - "net/url" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// ContainerInspect returns the container information. -func (cli *Client) ContainerInspect(ctx context.Context, containerID string) (types.ContainerJSON, error) { - serverResp, err := cli.get(ctx, "/containers/"+containerID+"/json", nil, nil) - if err != nil { - if serverResp.statusCode == http.StatusNotFound { - return types.ContainerJSON{}, containerNotFoundError{containerID} - } - return types.ContainerJSON{}, err - } - - var response types.ContainerJSON - err = json.NewDecoder(serverResp.body).Decode(&response) - ensureReaderClosed(serverResp) - return response, err -} - -// ContainerInspectWithRaw returns the container information and its raw representation. -func (cli *Client) ContainerInspectWithRaw(ctx context.Context, containerID string, getSize bool) (types.ContainerJSON, []byte, error) { - query := url.Values{} - if getSize { - query.Set("size", "1") - } - serverResp, err := cli.get(ctx, "/containers/"+containerID+"/json", query, nil) - if err != nil { - if serverResp.statusCode == http.StatusNotFound { - return types.ContainerJSON{}, nil, containerNotFoundError{containerID} - } - return types.ContainerJSON{}, nil, err - } - defer ensureReaderClosed(serverResp) - - body, err := ioutil.ReadAll(serverResp.body) - if err != nil { - return types.ContainerJSON{}, nil, err - } - - var response types.ContainerJSON - rdr := bytes.NewReader(body) - err = json.NewDecoder(rdr).Decode(&response) - return response, body, err -} diff --git a/vendor/github.com/docker/docker/client/container_kill.go b/vendor/github.com/docker/docker/client/container_kill.go deleted file mode 100644 index 29f80c73..00000000 --- a/vendor/github.com/docker/docker/client/container_kill.go +++ /dev/null @@ -1,17 +0,0 @@ -package client - -import ( - "net/url" - - "golang.org/x/net/context" -) - -// ContainerKill terminates the container process but does not remove the container from the docker host. -func (cli *Client) ContainerKill(ctx context.Context, containerID, signal string) error { - query := url.Values{} - query.Set("signal", signal) - - resp, err := cli.post(ctx, "/containers/"+containerID+"/kill", query, nil, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/container_list.go b/vendor/github.com/docker/docker/client/container_list.go deleted file mode 100644 index 43989121..00000000 --- a/vendor/github.com/docker/docker/client/container_list.go +++ /dev/null @@ -1,56 +0,0 @@ -package client - -import ( - "encoding/json" - "net/url" - "strconv" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/filters" - "golang.org/x/net/context" -) - -// ContainerList returns the list of containers in the docker host. -func (cli *Client) ContainerList(ctx context.Context, options types.ContainerListOptions) ([]types.Container, error) { - query := url.Values{} - - if options.All { - query.Set("all", "1") - } - - if options.Limit != -1 { - query.Set("limit", strconv.Itoa(options.Limit)) - } - - if options.Since != "" { - query.Set("since", options.Since) - } - - if options.Before != "" { - query.Set("before", options.Before) - } - - if options.Size { - query.Set("size", "1") - } - - if options.Filters.Len() > 0 { - filterJSON, err := filters.ToParamWithVersion(cli.version, options.Filters) - - if err != nil { - return nil, err - } - - query.Set("filters", filterJSON) - } - - resp, err := cli.get(ctx, "/containers/json", query, nil) - if err != nil { - return nil, err - } - - var containers []types.Container - err = json.NewDecoder(resp.body).Decode(&containers) - ensureReaderClosed(resp) - return containers, err -} diff --git a/vendor/github.com/docker/docker/client/container_logs.go b/vendor/github.com/docker/docker/client/container_logs.go deleted file mode 100644 index 69056b63..00000000 --- a/vendor/github.com/docker/docker/client/container_logs.go +++ /dev/null @@ -1,52 +0,0 @@ -package client - -import ( - "io" - "net/url" - "time" - - "golang.org/x/net/context" - - "github.com/docker/docker/api/types" - timetypes "github.com/docker/docker/api/types/time" -) - -// ContainerLogs returns the logs generated by a container in an io.ReadCloser. -// It's up to the caller to close the stream. -func (cli *Client) ContainerLogs(ctx context.Context, container string, options types.ContainerLogsOptions) (io.ReadCloser, error) { - query := url.Values{} - if options.ShowStdout { - query.Set("stdout", "1") - } - - if options.ShowStderr { - query.Set("stderr", "1") - } - - if options.Since != "" { - ts, err := timetypes.GetTimestamp(options.Since, time.Now()) - if err != nil { - return nil, err - } - query.Set("since", ts) - } - - if options.Timestamps { - query.Set("timestamps", "1") - } - - if options.Details { - query.Set("details", "1") - } - - if options.Follow { - query.Set("follow", "1") - } - query.Set("tail", options.Tail) - - resp, err := cli.get(ctx, "/containers/"+container+"/logs", query, nil) - if err != nil { - return nil, err - } - return resp.body, nil -} diff --git a/vendor/github.com/docker/docker/client/container_pause.go b/vendor/github.com/docker/docker/client/container_pause.go deleted file mode 100644 index 412067a7..00000000 --- a/vendor/github.com/docker/docker/client/container_pause.go +++ /dev/null @@ -1,10 +0,0 @@ -package client - -import "golang.org/x/net/context" - -// ContainerPause pauses the main process of a given container without terminating it. -func (cli *Client) ContainerPause(ctx context.Context, containerID string) error { - resp, err := cli.post(ctx, "/containers/"+containerID+"/pause", nil, nil, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/container_prune.go b/vendor/github.com/docker/docker/client/container_prune.go deleted file mode 100644 index b5821708..00000000 --- a/vendor/github.com/docker/docker/client/container_prune.go +++ /dev/null @@ -1,36 +0,0 @@ -package client - -import ( - "encoding/json" - "fmt" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/filters" - "golang.org/x/net/context" -) - -// ContainersPrune requests the daemon to delete unused data -func (cli *Client) ContainersPrune(ctx context.Context, pruneFilters filters.Args) (types.ContainersPruneReport, error) { - var report types.ContainersPruneReport - - if err := cli.NewVersionError("1.25", "container prune"); err != nil { - return report, err - } - - query, err := getFiltersQuery(pruneFilters) - if err != nil { - return report, err - } - - serverResp, err := cli.post(ctx, "/containers/prune", query, nil, nil) - if err != nil { - return report, err - } - defer ensureReaderClosed(serverResp) - - if err := json.NewDecoder(serverResp.body).Decode(&report); err != nil { - return report, fmt.Errorf("Error retrieving disk usage: %v", err) - } - - return report, nil -} diff --git a/vendor/github.com/docker/docker/client/container_remove.go b/vendor/github.com/docker/docker/client/container_remove.go deleted file mode 100644 index 3a79590c..00000000 --- a/vendor/github.com/docker/docker/client/container_remove.go +++ /dev/null @@ -1,27 +0,0 @@ -package client - -import ( - "net/url" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// ContainerRemove kills and removes a container from the docker host. -func (cli *Client) ContainerRemove(ctx context.Context, containerID string, options types.ContainerRemoveOptions) error { - query := url.Values{} - if options.RemoveVolumes { - query.Set("v", "1") - } - if options.RemoveLinks { - query.Set("link", "1") - } - - if options.Force { - query.Set("force", "1") - } - - resp, err := cli.delete(ctx, "/containers/"+containerID, query, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/container_rename.go b/vendor/github.com/docker/docker/client/container_rename.go deleted file mode 100644 index 0e718da7..00000000 --- a/vendor/github.com/docker/docker/client/container_rename.go +++ /dev/null @@ -1,16 +0,0 @@ -package client - -import ( - "net/url" - - "golang.org/x/net/context" -) - -// ContainerRename changes the name of a given container. -func (cli *Client) ContainerRename(ctx context.Context, containerID, newContainerName string) error { - query := url.Values{} - query.Set("name", newContainerName) - resp, err := cli.post(ctx, "/containers/"+containerID+"/rename", query, nil, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/container_resize.go b/vendor/github.com/docker/docker/client/container_resize.go deleted file mode 100644 index 66c3cc19..00000000 --- a/vendor/github.com/docker/docker/client/container_resize.go +++ /dev/null @@ -1,29 +0,0 @@ -package client - -import ( - "net/url" - "strconv" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// ContainerResize changes the size of the tty for a container. -func (cli *Client) ContainerResize(ctx context.Context, containerID string, options types.ResizeOptions) error { - return cli.resize(ctx, "/containers/"+containerID, options.Height, options.Width) -} - -// ContainerExecResize changes the size of the tty for an exec process running inside a container. -func (cli *Client) ContainerExecResize(ctx context.Context, execID string, options types.ResizeOptions) error { - return cli.resize(ctx, "/exec/"+execID, options.Height, options.Width) -} - -func (cli *Client) resize(ctx context.Context, basePath string, height, width uint) error { - query := url.Values{} - query.Set("h", strconv.Itoa(int(height))) - query.Set("w", strconv.Itoa(int(width))) - - resp, err := cli.post(ctx, basePath+"/resize", query, nil, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/container_restart.go b/vendor/github.com/docker/docker/client/container_restart.go deleted file mode 100644 index 74d7455f..00000000 --- a/vendor/github.com/docker/docker/client/container_restart.go +++ /dev/null @@ -1,22 +0,0 @@ -package client - -import ( - "net/url" - "time" - - timetypes "github.com/docker/docker/api/types/time" - "golang.org/x/net/context" -) - -// ContainerRestart stops and starts a container again. -// It makes the daemon to wait for the container to be up again for -// a specific amount of time, given the timeout. -func (cli *Client) ContainerRestart(ctx context.Context, containerID string, timeout *time.Duration) error { - query := url.Values{} - if timeout != nil { - query.Set("t", timetypes.DurationToSecondsString(*timeout)) - } - resp, err := cli.post(ctx, "/containers/"+containerID+"/restart", query, nil, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/container_start.go b/vendor/github.com/docker/docker/client/container_start.go deleted file mode 100644 index b1f08de4..00000000 --- a/vendor/github.com/docker/docker/client/container_start.go +++ /dev/null @@ -1,24 +0,0 @@ -package client - -import ( - "net/url" - - "golang.org/x/net/context" - - "github.com/docker/docker/api/types" -) - -// ContainerStart sends a request to the docker daemon to start a container. -func (cli *Client) ContainerStart(ctx context.Context, containerID string, options types.ContainerStartOptions) error { - query := url.Values{} - if len(options.CheckpointID) != 0 { - query.Set("checkpoint", options.CheckpointID) - } - if len(options.CheckpointDir) != 0 { - query.Set("checkpoint-dir", options.CheckpointDir) - } - - resp, err := cli.post(ctx, "/containers/"+containerID+"/start", query, nil, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/container_stats.go b/vendor/github.com/docker/docker/client/container_stats.go deleted file mode 100644 index 4758c66e..00000000 --- a/vendor/github.com/docker/docker/client/container_stats.go +++ /dev/null @@ -1,26 +0,0 @@ -package client - -import ( - "net/url" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// ContainerStats returns near realtime stats for a given container. -// It's up to the caller to close the io.ReadCloser returned. -func (cli *Client) ContainerStats(ctx context.Context, containerID string, stream bool) (types.ContainerStats, error) { - query := url.Values{} - query.Set("stream", "0") - if stream { - query.Set("stream", "1") - } - - resp, err := cli.get(ctx, "/containers/"+containerID+"/stats", query, nil) - if err != nil { - return types.ContainerStats{}, err - } - - osType := getDockerOS(resp.header.Get("Server")) - return types.ContainerStats{Body: resp.body, OSType: osType}, err -} diff --git a/vendor/github.com/docker/docker/client/container_stop.go b/vendor/github.com/docker/docker/client/container_stop.go deleted file mode 100644 index b5418ae8..00000000 --- a/vendor/github.com/docker/docker/client/container_stop.go +++ /dev/null @@ -1,21 +0,0 @@ -package client - -import ( - "net/url" - "time" - - timetypes "github.com/docker/docker/api/types/time" - "golang.org/x/net/context" -) - -// ContainerStop stops a container without terminating the process. -// The process is blocked until the container stops or the timeout expires. -func (cli *Client) ContainerStop(ctx context.Context, containerID string, timeout *time.Duration) error { - query := url.Values{} - if timeout != nil { - query.Set("t", timetypes.DurationToSecondsString(*timeout)) - } - resp, err := cli.post(ctx, "/containers/"+containerID+"/stop", query, nil, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/container_top.go b/vendor/github.com/docker/docker/client/container_top.go deleted file mode 100644 index 4e7270ea..00000000 --- a/vendor/github.com/docker/docker/client/container_top.go +++ /dev/null @@ -1,28 +0,0 @@ -package client - -import ( - "encoding/json" - "net/url" - "strings" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// ContainerTop shows process information from within a container. -func (cli *Client) ContainerTop(ctx context.Context, containerID string, arguments []string) (types.ContainerProcessList, error) { - var response types.ContainerProcessList - query := url.Values{} - if len(arguments) > 0 { - query.Set("ps_args", strings.Join(arguments, " ")) - } - - resp, err := cli.get(ctx, "/containers/"+containerID+"/top", query, nil) - if err != nil { - return response, err - } - - err = json.NewDecoder(resp.body).Decode(&response) - ensureReaderClosed(resp) - return response, err -} diff --git a/vendor/github.com/docker/docker/client/container_unpause.go b/vendor/github.com/docker/docker/client/container_unpause.go deleted file mode 100644 index 5c762112..00000000 --- a/vendor/github.com/docker/docker/client/container_unpause.go +++ /dev/null @@ -1,10 +0,0 @@ -package client - -import "golang.org/x/net/context" - -// ContainerUnpause resumes the process execution within a container -func (cli *Client) ContainerUnpause(ctx context.Context, containerID string) error { - resp, err := cli.post(ctx, "/containers/"+containerID+"/unpause", nil, nil, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/container_update.go b/vendor/github.com/docker/docker/client/container_update.go deleted file mode 100644 index 5082f22d..00000000 --- a/vendor/github.com/docker/docker/client/container_update.go +++ /dev/null @@ -1,22 +0,0 @@ -package client - -import ( - "encoding/json" - - "github.com/docker/docker/api/types/container" - "golang.org/x/net/context" -) - -// ContainerUpdate updates resources of a container -func (cli *Client) ContainerUpdate(ctx context.Context, containerID string, updateConfig container.UpdateConfig) (container.ContainerUpdateOKBody, error) { - var response container.ContainerUpdateOKBody - serverResp, err := cli.post(ctx, "/containers/"+containerID+"/update", nil, updateConfig, nil) - if err != nil { - return response, err - } - - err = json.NewDecoder(serverResp.body).Decode(&response) - - ensureReaderClosed(serverResp) - return response, err -} diff --git a/vendor/github.com/docker/docker/client/container_wait.go b/vendor/github.com/docker/docker/client/container_wait.go deleted file mode 100644 index 93212c70..00000000 --- a/vendor/github.com/docker/docker/client/container_wait.go +++ /dev/null @@ -1,26 +0,0 @@ -package client - -import ( - "encoding/json" - - "golang.org/x/net/context" - - "github.com/docker/docker/api/types/container" -) - -// ContainerWait pauses execution until a container exits. -// It returns the API status code as response of its readiness. -func (cli *Client) ContainerWait(ctx context.Context, containerID string) (int64, error) { - resp, err := cli.post(ctx, "/containers/"+containerID+"/wait", nil, nil, nil) - if err != nil { - return -1, err - } - defer ensureReaderClosed(resp) - - var res container.ContainerWaitOKBody - if err := json.NewDecoder(resp.body).Decode(&res); err != nil { - return -1, err - } - - return res.StatusCode, nil -} diff --git a/vendor/github.com/docker/docker/client/disk_usage.go b/vendor/github.com/docker/docker/client/disk_usage.go deleted file mode 100644 index 03c80b39..00000000 --- a/vendor/github.com/docker/docker/client/disk_usage.go +++ /dev/null @@ -1,26 +0,0 @@ -package client - -import ( - "encoding/json" - "fmt" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// DiskUsage requests the current data usage from the daemon -func (cli *Client) DiskUsage(ctx context.Context) (types.DiskUsage, error) { - var du types.DiskUsage - - serverResp, err := cli.get(ctx, "/system/df", nil, nil) - if err != nil { - return du, err - } - defer ensureReaderClosed(serverResp) - - if err := json.NewDecoder(serverResp.body).Decode(&du); err != nil { - return du, fmt.Errorf("Error retrieving disk usage: %v", err) - } - - return du, nil -} diff --git a/vendor/github.com/docker/docker/client/errors.go b/vendor/github.com/docker/docker/client/errors.go deleted file mode 100644 index bf6923f1..00000000 --- a/vendor/github.com/docker/docker/client/errors.go +++ /dev/null @@ -1,278 +0,0 @@ -package client - -import ( - "fmt" - - "github.com/docker/docker/api/types/versions" - "github.com/pkg/errors" -) - -// errConnectionFailed implements an error returned when connection failed. -type errConnectionFailed struct { - host string -} - -// Error returns a string representation of an errConnectionFailed -func (err errConnectionFailed) Error() string { - if err.host == "" { - return "Cannot connect to the Docker daemon. Is the docker daemon running on this host?" - } - return fmt.Sprintf("Cannot connect to the Docker daemon at %s. Is the docker daemon running?", err.host) -} - -// IsErrConnectionFailed returns true if the error is caused by connection failed. -func IsErrConnectionFailed(err error) bool { - _, ok := errors.Cause(err).(errConnectionFailed) - return ok -} - -// ErrorConnectionFailed returns an error with host in the error message when connection to docker daemon failed. -func ErrorConnectionFailed(host string) error { - return errConnectionFailed{host: host} -} - -type notFound interface { - error - NotFound() bool // Is the error a NotFound error -} - -// IsErrNotFound returns true if the error is caused with an -// object (image, container, network, volume, …) is not found in the docker host. -func IsErrNotFound(err error) bool { - te, ok := err.(notFound) - return ok && te.NotFound() -} - -// imageNotFoundError implements an error returned when an image is not in the docker host. -type imageNotFoundError struct { - imageID string -} - -// NotFound indicates that this error type is of NotFound -func (e imageNotFoundError) NotFound() bool { - return true -} - -// Error returns a string representation of an imageNotFoundError -func (e imageNotFoundError) Error() string { - return fmt.Sprintf("Error: No such image: %s", e.imageID) -} - -// IsErrImageNotFound returns true if the error is caused -// when an image is not found in the docker host. -func IsErrImageNotFound(err error) bool { - return IsErrNotFound(err) -} - -// containerNotFoundError implements an error returned when a container is not in the docker host. -type containerNotFoundError struct { - containerID string -} - -// NotFound indicates that this error type is of NotFound -func (e containerNotFoundError) NotFound() bool { - return true -} - -// Error returns a string representation of a containerNotFoundError -func (e containerNotFoundError) Error() string { - return fmt.Sprintf("Error: No such container: %s", e.containerID) -} - -// IsErrContainerNotFound returns true if the error is caused -// when a container is not found in the docker host. -func IsErrContainerNotFound(err error) bool { - return IsErrNotFound(err) -} - -// networkNotFoundError implements an error returned when a network is not in the docker host. -type networkNotFoundError struct { - networkID string -} - -// NotFound indicates that this error type is of NotFound -func (e networkNotFoundError) NotFound() bool { - return true -} - -// Error returns a string representation of a networkNotFoundError -func (e networkNotFoundError) Error() string { - return fmt.Sprintf("Error: No such network: %s", e.networkID) -} - -// IsErrNetworkNotFound returns true if the error is caused -// when a network is not found in the docker host. -func IsErrNetworkNotFound(err error) bool { - return IsErrNotFound(err) -} - -// volumeNotFoundError implements an error returned when a volume is not in the docker host. -type volumeNotFoundError struct { - volumeID string -} - -// NotFound indicates that this error type is of NotFound -func (e volumeNotFoundError) NotFound() bool { - return true -} - -// Error returns a string representation of a volumeNotFoundError -func (e volumeNotFoundError) Error() string { - return fmt.Sprintf("Error: No such volume: %s", e.volumeID) -} - -// IsErrVolumeNotFound returns true if the error is caused -// when a volume is not found in the docker host. -func IsErrVolumeNotFound(err error) bool { - return IsErrNotFound(err) -} - -// unauthorizedError represents an authorization error in a remote registry. -type unauthorizedError struct { - cause error -} - -// Error returns a string representation of an unauthorizedError -func (u unauthorizedError) Error() string { - return u.cause.Error() -} - -// IsErrUnauthorized returns true if the error is caused -// when a remote registry authentication fails -func IsErrUnauthorized(err error) bool { - _, ok := err.(unauthorizedError) - return ok -} - -// nodeNotFoundError implements an error returned when a node is not found. -type nodeNotFoundError struct { - nodeID string -} - -// Error returns a string representation of a nodeNotFoundError -func (e nodeNotFoundError) Error() string { - return fmt.Sprintf("Error: No such node: %s", e.nodeID) -} - -// NotFound indicates that this error type is of NotFound -func (e nodeNotFoundError) NotFound() bool { - return true -} - -// IsErrNodeNotFound returns true if the error is caused -// when a node is not found. -func IsErrNodeNotFound(err error) bool { - _, ok := err.(nodeNotFoundError) - return ok -} - -// serviceNotFoundError implements an error returned when a service is not found. -type serviceNotFoundError struct { - serviceID string -} - -// Error returns a string representation of a serviceNotFoundError -func (e serviceNotFoundError) Error() string { - return fmt.Sprintf("Error: No such service: %s", e.serviceID) -} - -// NotFound indicates that this error type is of NotFound -func (e serviceNotFoundError) NotFound() bool { - return true -} - -// IsErrServiceNotFound returns true if the error is caused -// when a service is not found. -func IsErrServiceNotFound(err error) bool { - _, ok := err.(serviceNotFoundError) - return ok -} - -// taskNotFoundError implements an error returned when a task is not found. -type taskNotFoundError struct { - taskID string -} - -// Error returns a string representation of a taskNotFoundError -func (e taskNotFoundError) Error() string { - return fmt.Sprintf("Error: No such task: %s", e.taskID) -} - -// NotFound indicates that this error type is of NotFound -func (e taskNotFoundError) NotFound() bool { - return true -} - -// IsErrTaskNotFound returns true if the error is caused -// when a task is not found. -func IsErrTaskNotFound(err error) bool { - _, ok := err.(taskNotFoundError) - return ok -} - -type pluginPermissionDenied struct { - name string -} - -func (e pluginPermissionDenied) Error() string { - return "Permission denied while installing plugin " + e.name -} - -// IsErrPluginPermissionDenied returns true if the error is caused -// when a user denies a plugin's permissions -func IsErrPluginPermissionDenied(err error) bool { - _, ok := err.(pluginPermissionDenied) - return ok -} - -// NewVersionError returns an error if the APIVersion required -// if less than the current supported version -func (cli *Client) NewVersionError(APIrequired, feature string) error { - if versions.LessThan(cli.version, APIrequired) { - return fmt.Errorf("%q requires API version %s, but the Docker server is version %s", feature, APIrequired, cli.version) - } - return nil -} - -// secretNotFoundError implements an error returned when a secret is not found. -type secretNotFoundError struct { - name string -} - -// Error returns a string representation of a secretNotFoundError -func (e secretNotFoundError) Error() string { - return fmt.Sprintf("Error: no such secret: %s", e.name) -} - -// NoFound indicates that this error type is of NotFound -func (e secretNotFoundError) NotFound() bool { - return true -} - -// IsErrSecretNotFound returns true if the error is caused -// when a secret is not found. -func IsErrSecretNotFound(err error) bool { - _, ok := err.(secretNotFoundError) - return ok -} - -// pluginNotFoundError implements an error returned when a plugin is not in the docker host. -type pluginNotFoundError struct { - name string -} - -// NotFound indicates that this error type is of NotFound -func (e pluginNotFoundError) NotFound() bool { - return true -} - -// Error returns a string representation of a pluginNotFoundError -func (e pluginNotFoundError) Error() string { - return fmt.Sprintf("Error: No such plugin: %s", e.name) -} - -// IsErrPluginNotFound returns true if the error is caused -// when a plugin is not found in the docker host. -func IsErrPluginNotFound(err error) bool { - return IsErrNotFound(err) -} diff --git a/vendor/github.com/docker/docker/client/events.go b/vendor/github.com/docker/docker/client/events.go deleted file mode 100644 index af47aefa..00000000 --- a/vendor/github.com/docker/docker/client/events.go +++ /dev/null @@ -1,102 +0,0 @@ -package client - -import ( - "encoding/json" - "net/url" - "time" - - "golang.org/x/net/context" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/events" - "github.com/docker/docker/api/types/filters" - timetypes "github.com/docker/docker/api/types/time" -) - -// Events returns a stream of events in the daemon. It's up to the caller to close the stream -// by cancelling the context. Once the stream has been completely read an io.EOF error will -// be sent over the error channel. If an error is sent all processing will be stopped. It's up -// to the caller to reopen the stream in the event of an error by reinvoking this method. -func (cli *Client) Events(ctx context.Context, options types.EventsOptions) (<-chan events.Message, <-chan error) { - - messages := make(chan events.Message) - errs := make(chan error, 1) - - started := make(chan struct{}) - go func() { - defer close(errs) - - query, err := buildEventsQueryParams(cli.version, options) - if err != nil { - close(started) - errs <- err - return - } - - resp, err := cli.get(ctx, "/events", query, nil) - if err != nil { - close(started) - errs <- err - return - } - defer resp.body.Close() - - decoder := json.NewDecoder(resp.body) - - close(started) - for { - select { - case <-ctx.Done(): - errs <- ctx.Err() - return - default: - var event events.Message - if err := decoder.Decode(&event); err != nil { - errs <- err - return - } - - select { - case messages <- event: - case <-ctx.Done(): - errs <- ctx.Err() - return - } - } - } - }() - <-started - - return messages, errs -} - -func buildEventsQueryParams(cliVersion string, options types.EventsOptions) (url.Values, error) { - query := url.Values{} - ref := time.Now() - - if options.Since != "" { - ts, err := timetypes.GetTimestamp(options.Since, ref) - if err != nil { - return nil, err - } - query.Set("since", ts) - } - - if options.Until != "" { - ts, err := timetypes.GetTimestamp(options.Until, ref) - if err != nil { - return nil, err - } - query.Set("until", ts) - } - - if options.Filters.Len() > 0 { - filterJSON, err := filters.ToParamWithVersion(cliVersion, options.Filters) - if err != nil { - return nil, err - } - query.Set("filters", filterJSON) - } - - return query, nil -} diff --git a/vendor/github.com/docker/docker/client/hijack.go b/vendor/github.com/docker/docker/client/hijack.go deleted file mode 100644 index 74c53f52..00000000 --- a/vendor/github.com/docker/docker/client/hijack.go +++ /dev/null @@ -1,177 +0,0 @@ -package client - -import ( - "crypto/tls" - "errors" - "fmt" - "net" - "net/http" - "net/http/httputil" - "net/url" - "strings" - "time" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/pkg/tlsconfig" - "github.com/docker/go-connections/sockets" - "golang.org/x/net/context" -) - -// tlsClientCon holds tls information and a dialed connection. -type tlsClientCon struct { - *tls.Conn - rawConn net.Conn -} - -func (c *tlsClientCon) CloseWrite() error { - // Go standard tls.Conn doesn't provide the CloseWrite() method so we do it - // on its underlying connection. - if conn, ok := c.rawConn.(types.CloseWriter); ok { - return conn.CloseWrite() - } - return nil -} - -// postHijacked sends a POST request and hijacks the connection. -func (cli *Client) postHijacked(ctx context.Context, path string, query url.Values, body interface{}, headers map[string][]string) (types.HijackedResponse, error) { - bodyEncoded, err := encodeData(body) - if err != nil { - return types.HijackedResponse{}, err - } - - apiPath := cli.getAPIPath(path, query) - req, err := http.NewRequest("POST", apiPath, bodyEncoded) - if err != nil { - return types.HijackedResponse{}, err - } - req = cli.addHeaders(req, headers) - - req.Host = cli.addr - req.Header.Set("Connection", "Upgrade") - req.Header.Set("Upgrade", "tcp") - - conn, err := dial(cli.proto, cli.addr, resolveTLSConfig(cli.client.Transport)) - if err != nil { - if strings.Contains(err.Error(), "connection refused") { - return types.HijackedResponse{}, fmt.Errorf("Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?") - } - return types.HijackedResponse{}, err - } - - // When we set up a TCP connection for hijack, there could be long periods - // of inactivity (a long running command with no output) that in certain - // network setups may cause ECONNTIMEOUT, leaving the client in an unknown - // state. Setting TCP KeepAlive on the socket connection will prohibit - // ECONNTIMEOUT unless the socket connection truly is broken - if tcpConn, ok := conn.(*net.TCPConn); ok { - tcpConn.SetKeepAlive(true) - tcpConn.SetKeepAlivePeriod(30 * time.Second) - } - - clientconn := httputil.NewClientConn(conn, nil) - defer clientconn.Close() - - // Server hijacks the connection, error 'connection closed' expected - _, err = clientconn.Do(req) - - rwc, br := clientconn.Hijack() - - return types.HijackedResponse{Conn: rwc, Reader: br}, err -} - -func tlsDial(network, addr string, config *tls.Config) (net.Conn, error) { - return tlsDialWithDialer(new(net.Dialer), network, addr, config) -} - -// We need to copy Go's implementation of tls.Dial (pkg/cryptor/tls/tls.go) in -// order to return our custom tlsClientCon struct which holds both the tls.Conn -// object _and_ its underlying raw connection. The rationale for this is that -// we need to be able to close the write end of the connection when attaching, -// which tls.Conn does not provide. -func tlsDialWithDialer(dialer *net.Dialer, network, addr string, config *tls.Config) (net.Conn, error) { - // We want the Timeout and Deadline values from dialer to cover the - // whole process: TCP connection and TLS handshake. This means that we - // also need to start our own timers now. - timeout := dialer.Timeout - - if !dialer.Deadline.IsZero() { - deadlineTimeout := dialer.Deadline.Sub(time.Now()) - if timeout == 0 || deadlineTimeout < timeout { - timeout = deadlineTimeout - } - } - - var errChannel chan error - - if timeout != 0 { - errChannel = make(chan error, 2) - time.AfterFunc(timeout, func() { - errChannel <- errors.New("") - }) - } - - proxyDialer, err := sockets.DialerFromEnvironment(dialer) - if err != nil { - return nil, err - } - - rawConn, err := proxyDialer.Dial(network, addr) - if err != nil { - return nil, err - } - // When we set up a TCP connection for hijack, there could be long periods - // of inactivity (a long running command with no output) that in certain - // network setups may cause ECONNTIMEOUT, leaving the client in an unknown - // state. Setting TCP KeepAlive on the socket connection will prohibit - // ECONNTIMEOUT unless the socket connection truly is broken - if tcpConn, ok := rawConn.(*net.TCPConn); ok { - tcpConn.SetKeepAlive(true) - tcpConn.SetKeepAlivePeriod(30 * time.Second) - } - - colonPos := strings.LastIndex(addr, ":") - if colonPos == -1 { - colonPos = len(addr) - } - hostname := addr[:colonPos] - - // If no ServerName is set, infer the ServerName - // from the hostname we're connecting to. - if config.ServerName == "" { - // Make a copy to avoid polluting argument or default. - config = tlsconfig.Clone(config) - config.ServerName = hostname - } - - conn := tls.Client(rawConn, config) - - if timeout == 0 { - err = conn.Handshake() - } else { - go func() { - errChannel <- conn.Handshake() - }() - - err = <-errChannel - } - - if err != nil { - rawConn.Close() - return nil, err - } - - // This is Docker difference with standard's crypto/tls package: returned a - // wrapper which holds both the TLS and raw connections. - return &tlsClientCon{conn, rawConn}, nil -} - -func dial(proto, addr string, tlsConfig *tls.Config) (net.Conn, error) { - if tlsConfig != nil && proto != "unix" && proto != "npipe" { - // Notice this isn't Go standard's tls.Dial function - return tlsDial(proto, addr, tlsConfig) - } - if proto == "npipe" { - return sockets.DialPipe(addr, 32*time.Second) - } - return net.Dial(proto, addr) -} diff --git a/vendor/github.com/docker/docker/client/image_build.go b/vendor/github.com/docker/docker/client/image_build.go deleted file mode 100644 index 6fde75dc..00000000 --- a/vendor/github.com/docker/docker/client/image_build.go +++ /dev/null @@ -1,123 +0,0 @@ -package client - -import ( - "encoding/base64" - "encoding/json" - "io" - "net/http" - "net/url" - "strconv" - - "golang.org/x/net/context" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/container" -) - -// ImageBuild sends request to the daemon to build images. -// The Body in the response implement an io.ReadCloser and it's up to the caller to -// close it. -func (cli *Client) ImageBuild(ctx context.Context, buildContext io.Reader, options types.ImageBuildOptions) (types.ImageBuildResponse, error) { - query, err := cli.imageBuildOptionsToQuery(options) - if err != nil { - return types.ImageBuildResponse{}, err - } - - headers := http.Header(make(map[string][]string)) - buf, err := json.Marshal(options.AuthConfigs) - if err != nil { - return types.ImageBuildResponse{}, err - } - headers.Add("X-Registry-Config", base64.URLEncoding.EncodeToString(buf)) - headers.Set("Content-Type", "application/tar") - - serverResp, err := cli.postRaw(ctx, "/build", query, buildContext, headers) - if err != nil { - return types.ImageBuildResponse{}, err - } - - osType := getDockerOS(serverResp.header.Get("Server")) - - return types.ImageBuildResponse{ - Body: serverResp.body, - OSType: osType, - }, nil -} - -func (cli *Client) imageBuildOptionsToQuery(options types.ImageBuildOptions) (url.Values, error) { - query := url.Values{ - "t": options.Tags, - "securityopt": options.SecurityOpt, - } - if options.SuppressOutput { - query.Set("q", "1") - } - if options.RemoteContext != "" { - query.Set("remote", options.RemoteContext) - } - if options.NoCache { - query.Set("nocache", "1") - } - if options.Remove { - query.Set("rm", "1") - } else { - query.Set("rm", "0") - } - - if options.ForceRemove { - query.Set("forcerm", "1") - } - - if options.PullParent { - query.Set("pull", "1") - } - - if options.Squash { - if err := cli.NewVersionError("1.25", "squash"); err != nil { - return query, err - } - query.Set("squash", "1") - } - - if !container.Isolation.IsDefault(options.Isolation) { - query.Set("isolation", string(options.Isolation)) - } - - query.Set("cpusetcpus", options.CPUSetCPUs) - query.Set("networkmode", options.NetworkMode) - query.Set("cpusetmems", options.CPUSetMems) - query.Set("cpushares", strconv.FormatInt(options.CPUShares, 10)) - query.Set("cpuquota", strconv.FormatInt(options.CPUQuota, 10)) - query.Set("cpuperiod", strconv.FormatInt(options.CPUPeriod, 10)) - query.Set("memory", strconv.FormatInt(options.Memory, 10)) - query.Set("memswap", strconv.FormatInt(options.MemorySwap, 10)) - query.Set("cgroupparent", options.CgroupParent) - query.Set("shmsize", strconv.FormatInt(options.ShmSize, 10)) - query.Set("dockerfile", options.Dockerfile) - - ulimitsJSON, err := json.Marshal(options.Ulimits) - if err != nil { - return query, err - } - query.Set("ulimits", string(ulimitsJSON)) - - buildArgsJSON, err := json.Marshal(options.BuildArgs) - if err != nil { - return query, err - } - query.Set("buildargs", string(buildArgsJSON)) - - labelsJSON, err := json.Marshal(options.Labels) - if err != nil { - return query, err - } - query.Set("labels", string(labelsJSON)) - - cacheFromJSON, err := json.Marshal(options.CacheFrom) - if err != nil { - return query, err - } - query.Set("cachefrom", string(cacheFromJSON)) - - return query, nil -} diff --git a/vendor/github.com/docker/docker/client/image_create.go b/vendor/github.com/docker/docker/client/image_create.go deleted file mode 100644 index cf023a71..00000000 --- a/vendor/github.com/docker/docker/client/image_create.go +++ /dev/null @@ -1,34 +0,0 @@ -package client - -import ( - "io" - "net/url" - - "golang.org/x/net/context" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/reference" -) - -// ImageCreate creates a new image based in the parent options. -// It returns the JSON content in the response body. -func (cli *Client) ImageCreate(ctx context.Context, parentReference string, options types.ImageCreateOptions) (io.ReadCloser, error) { - repository, tag, err := reference.Parse(parentReference) - if err != nil { - return nil, err - } - - query := url.Values{} - query.Set("fromImage", repository) - query.Set("tag", tag) - resp, err := cli.tryImageCreate(ctx, query, options.RegistryAuth) - if err != nil { - return nil, err - } - return resp.body, nil -} - -func (cli *Client) tryImageCreate(ctx context.Context, query url.Values, registryAuth string) (serverResponse, error) { - headers := map[string][]string{"X-Registry-Auth": {registryAuth}} - return cli.post(ctx, "/images/create", query, nil, headers) -} diff --git a/vendor/github.com/docker/docker/client/image_history.go b/vendor/github.com/docker/docker/client/image_history.go deleted file mode 100644 index acb1ee92..00000000 --- a/vendor/github.com/docker/docker/client/image_history.go +++ /dev/null @@ -1,22 +0,0 @@ -package client - -import ( - "encoding/json" - "net/url" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// ImageHistory returns the changes in an image in history format. -func (cli *Client) ImageHistory(ctx context.Context, imageID string) ([]types.ImageHistory, error) { - var history []types.ImageHistory - serverResp, err := cli.get(ctx, "/images/"+imageID+"/history", url.Values{}, nil) - if err != nil { - return history, err - } - - err = json.NewDecoder(serverResp.body).Decode(&history) - ensureReaderClosed(serverResp) - return history, err -} diff --git a/vendor/github.com/docker/docker/client/image_import.go b/vendor/github.com/docker/docker/client/image_import.go deleted file mode 100644 index c6f154b2..00000000 --- a/vendor/github.com/docker/docker/client/image_import.go +++ /dev/null @@ -1,37 +0,0 @@ -package client - -import ( - "io" - "net/url" - - "golang.org/x/net/context" - - "github.com/docker/distribution/reference" - "github.com/docker/docker/api/types" -) - -// ImageImport creates a new image based in the source options. -// It returns the JSON content in the response body. -func (cli *Client) ImageImport(ctx context.Context, source types.ImageImportSource, ref string, options types.ImageImportOptions) (io.ReadCloser, error) { - if ref != "" { - //Check if the given image name can be resolved - if _, err := reference.ParseNamed(ref); err != nil { - return nil, err - } - } - - query := url.Values{} - query.Set("fromSrc", source.SourceName) - query.Set("repo", ref) - query.Set("tag", options.Tag) - query.Set("message", options.Message) - for _, change := range options.Changes { - query.Add("changes", change) - } - - resp, err := cli.postRaw(ctx, "/images/create", query, source.Source, nil) - if err != nil { - return nil, err - } - return resp.body, nil -} diff --git a/vendor/github.com/docker/docker/client/image_inspect.go b/vendor/github.com/docker/docker/client/image_inspect.go deleted file mode 100644 index b3a64ce2..00000000 --- a/vendor/github.com/docker/docker/client/image_inspect.go +++ /dev/null @@ -1,33 +0,0 @@ -package client - -import ( - "bytes" - "encoding/json" - "io/ioutil" - "net/http" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// ImageInspectWithRaw returns the image information and its raw representation. -func (cli *Client) ImageInspectWithRaw(ctx context.Context, imageID string) (types.ImageInspect, []byte, error) { - serverResp, err := cli.get(ctx, "/images/"+imageID+"/json", nil, nil) - if err != nil { - if serverResp.statusCode == http.StatusNotFound { - return types.ImageInspect{}, nil, imageNotFoundError{imageID} - } - return types.ImageInspect{}, nil, err - } - defer ensureReaderClosed(serverResp) - - body, err := ioutil.ReadAll(serverResp.body) - if err != nil { - return types.ImageInspect{}, nil, err - } - - var response types.ImageInspect - rdr := bytes.NewReader(body) - err = json.NewDecoder(rdr).Decode(&response) - return response, body, err -} diff --git a/vendor/github.com/docker/docker/client/image_list.go b/vendor/github.com/docker/docker/client/image_list.go deleted file mode 100644 index f26464f6..00000000 --- a/vendor/github.com/docker/docker/client/image_list.go +++ /dev/null @@ -1,45 +0,0 @@ -package client - -import ( - "encoding/json" - "net/url" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/filters" - "github.com/docker/docker/api/types/versions" - "golang.org/x/net/context" -) - -// ImageList returns a list of images in the docker host. -func (cli *Client) ImageList(ctx context.Context, options types.ImageListOptions) ([]types.ImageSummary, error) { - var images []types.ImageSummary - query := url.Values{} - - optionFilters := options.Filters - referenceFilters := optionFilters.Get("reference") - if versions.LessThan(cli.version, "1.25") && len(referenceFilters) > 0 { - query.Set("filter", referenceFilters[0]) - for _, filterValue := range referenceFilters { - optionFilters.Del("reference", filterValue) - } - } - if optionFilters.Len() > 0 { - filterJSON, err := filters.ToParamWithVersion(cli.version, optionFilters) - if err != nil { - return images, err - } - query.Set("filters", filterJSON) - } - if options.All { - query.Set("all", "1") - } - - serverResp, err := cli.get(ctx, "/images/json", query, nil) - if err != nil { - return images, err - } - - err = json.NewDecoder(serverResp.body).Decode(&images) - ensureReaderClosed(serverResp) - return images, err -} diff --git a/vendor/github.com/docker/docker/client/image_load.go b/vendor/github.com/docker/docker/client/image_load.go deleted file mode 100644 index 77aaf1af..00000000 --- a/vendor/github.com/docker/docker/client/image_load.go +++ /dev/null @@ -1,30 +0,0 @@ -package client - -import ( - "io" - "net/url" - - "golang.org/x/net/context" - - "github.com/docker/docker/api/types" -) - -// ImageLoad loads an image in the docker host from the client host. -// It's up to the caller to close the io.ReadCloser in the -// ImageLoadResponse returned by this function. -func (cli *Client) ImageLoad(ctx context.Context, input io.Reader, quiet bool) (types.ImageLoadResponse, error) { - v := url.Values{} - v.Set("quiet", "0") - if quiet { - v.Set("quiet", "1") - } - headers := map[string][]string{"Content-Type": {"application/x-tar"}} - resp, err := cli.postRaw(ctx, "/images/load", v, input, headers) - if err != nil { - return types.ImageLoadResponse{}, err - } - return types.ImageLoadResponse{ - Body: resp.body, - JSON: resp.header.Get("Content-Type") == "application/json", - }, nil -} diff --git a/vendor/github.com/docker/docker/client/image_prune.go b/vendor/github.com/docker/docker/client/image_prune.go deleted file mode 100644 index 5ef98b7f..00000000 --- a/vendor/github.com/docker/docker/client/image_prune.go +++ /dev/null @@ -1,36 +0,0 @@ -package client - -import ( - "encoding/json" - "fmt" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/filters" - "golang.org/x/net/context" -) - -// ImagesPrune requests the daemon to delete unused data -func (cli *Client) ImagesPrune(ctx context.Context, pruneFilters filters.Args) (types.ImagesPruneReport, error) { - var report types.ImagesPruneReport - - if err := cli.NewVersionError("1.25", "image prune"); err != nil { - return report, err - } - - query, err := getFiltersQuery(pruneFilters) - if err != nil { - return report, err - } - - serverResp, err := cli.post(ctx, "/images/prune", query, nil, nil) - if err != nil { - return report, err - } - defer ensureReaderClosed(serverResp) - - if err := json.NewDecoder(serverResp.body).Decode(&report); err != nil { - return report, fmt.Errorf("Error retrieving disk usage: %v", err) - } - - return report, nil -} diff --git a/vendor/github.com/docker/docker/client/image_pull.go b/vendor/github.com/docker/docker/client/image_pull.go deleted file mode 100644 index 3bffdb70..00000000 --- a/vendor/github.com/docker/docker/client/image_pull.go +++ /dev/null @@ -1,46 +0,0 @@ -package client - -import ( - "io" - "net/http" - "net/url" - - "golang.org/x/net/context" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/reference" -) - -// ImagePull requests the docker host to pull an image from a remote registry. -// It executes the privileged function if the operation is unauthorized -// and it tries one more time. -// It's up to the caller to handle the io.ReadCloser and close it properly. -// -// FIXME(vdemeester): there is currently used in a few way in docker/docker -// - if not in trusted content, ref is used to pass the whole reference, and tag is empty -// - if in trusted content, ref is used to pass the reference name, and tag for the digest -func (cli *Client) ImagePull(ctx context.Context, ref string, options types.ImagePullOptions) (io.ReadCloser, error) { - repository, tag, err := reference.Parse(ref) - if err != nil { - return nil, err - } - - query := url.Values{} - query.Set("fromImage", repository) - if tag != "" && !options.All { - query.Set("tag", tag) - } - - resp, err := cli.tryImageCreate(ctx, query, options.RegistryAuth) - if resp.statusCode == http.StatusUnauthorized && options.PrivilegeFunc != nil { - newAuthHeader, privilegeErr := options.PrivilegeFunc() - if privilegeErr != nil { - return nil, privilegeErr - } - resp, err = cli.tryImageCreate(ctx, query, newAuthHeader) - } - if err != nil { - return nil, err - } - return resp.body, nil -} diff --git a/vendor/github.com/docker/docker/client/image_push.go b/vendor/github.com/docker/docker/client/image_push.go deleted file mode 100644 index 8e73d28f..00000000 --- a/vendor/github.com/docker/docker/client/image_push.go +++ /dev/null @@ -1,54 +0,0 @@ -package client - -import ( - "errors" - "io" - "net/http" - "net/url" - - "golang.org/x/net/context" - - distreference "github.com/docker/distribution/reference" - "github.com/docker/docker/api/types" -) - -// ImagePush requests the docker host to push an image to a remote registry. -// It executes the privileged function if the operation is unauthorized -// and it tries one more time. -// It's up to the caller to handle the io.ReadCloser and close it properly. -func (cli *Client) ImagePush(ctx context.Context, ref string, options types.ImagePushOptions) (io.ReadCloser, error) { - distributionRef, err := distreference.ParseNamed(ref) - if err != nil { - return nil, err - } - - if _, isCanonical := distributionRef.(distreference.Canonical); isCanonical { - return nil, errors.New("cannot push a digest reference") - } - - var tag = "" - if nameTaggedRef, isNamedTagged := distributionRef.(distreference.NamedTagged); isNamedTagged { - tag = nameTaggedRef.Tag() - } - - query := url.Values{} - query.Set("tag", tag) - - resp, err := cli.tryImagePush(ctx, distributionRef.Name(), query, options.RegistryAuth) - if resp.statusCode == http.StatusUnauthorized && options.PrivilegeFunc != nil { - newAuthHeader, privilegeErr := options.PrivilegeFunc() - if privilegeErr != nil { - return nil, privilegeErr - } - resp, err = cli.tryImagePush(ctx, distributionRef.Name(), query, newAuthHeader) - } - if err != nil { - return nil, err - } - return resp.body, nil -} - -func (cli *Client) tryImagePush(ctx context.Context, imageID string, query url.Values, registryAuth string) (serverResponse, error) { - headers := map[string][]string{"X-Registry-Auth": {registryAuth}} - return cli.post(ctx, "/images/"+imageID+"/push", query, nil, headers) -} diff --git a/vendor/github.com/docker/docker/client/image_remove.go b/vendor/github.com/docker/docker/client/image_remove.go deleted file mode 100644 index 839e5311..00000000 --- a/vendor/github.com/docker/docker/client/image_remove.go +++ /dev/null @@ -1,31 +0,0 @@ -package client - -import ( - "encoding/json" - "net/url" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// ImageRemove removes an image from the docker host. -func (cli *Client) ImageRemove(ctx context.Context, imageID string, options types.ImageRemoveOptions) ([]types.ImageDelete, error) { - query := url.Values{} - - if options.Force { - query.Set("force", "1") - } - if !options.PruneChildren { - query.Set("noprune", "1") - } - - resp, err := cli.delete(ctx, "/images/"+imageID, query, nil) - if err != nil { - return nil, err - } - - var dels []types.ImageDelete - err = json.NewDecoder(resp.body).Decode(&dels) - ensureReaderClosed(resp) - return dels, err -} diff --git a/vendor/github.com/docker/docker/client/image_save.go b/vendor/github.com/docker/docker/client/image_save.go deleted file mode 100644 index ecac880a..00000000 --- a/vendor/github.com/docker/docker/client/image_save.go +++ /dev/null @@ -1,22 +0,0 @@ -package client - -import ( - "io" - "net/url" - - "golang.org/x/net/context" -) - -// ImageSave retrieves one or more images from the docker host as an io.ReadCloser. -// It's up to the caller to store the images and close the stream. -func (cli *Client) ImageSave(ctx context.Context, imageIDs []string) (io.ReadCloser, error) { - query := url.Values{ - "names": imageIDs, - } - - resp, err := cli.get(ctx, "/images/get", query, nil) - if err != nil { - return nil, err - } - return resp.body, nil -} diff --git a/vendor/github.com/docker/docker/client/image_search.go b/vendor/github.com/docker/docker/client/image_search.go deleted file mode 100644 index b0fcd5c2..00000000 --- a/vendor/github.com/docker/docker/client/image_search.go +++ /dev/null @@ -1,51 +0,0 @@ -package client - -import ( - "encoding/json" - "fmt" - "net/http" - "net/url" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/filters" - "github.com/docker/docker/api/types/registry" - "golang.org/x/net/context" -) - -// ImageSearch makes the docker host to search by a term in a remote registry. -// The list of results is not sorted in any fashion. -func (cli *Client) ImageSearch(ctx context.Context, term string, options types.ImageSearchOptions) ([]registry.SearchResult, error) { - var results []registry.SearchResult - query := url.Values{} - query.Set("term", term) - query.Set("limit", fmt.Sprintf("%d", options.Limit)) - - if options.Filters.Len() > 0 { - filterJSON, err := filters.ToParam(options.Filters) - if err != nil { - return results, err - } - query.Set("filters", filterJSON) - } - - resp, err := cli.tryImageSearch(ctx, query, options.RegistryAuth) - if resp.statusCode == http.StatusUnauthorized && options.PrivilegeFunc != nil { - newAuthHeader, privilegeErr := options.PrivilegeFunc() - if privilegeErr != nil { - return results, privilegeErr - } - resp, err = cli.tryImageSearch(ctx, query, newAuthHeader) - } - if err != nil { - return results, err - } - - err = json.NewDecoder(resp.body).Decode(&results) - ensureReaderClosed(resp) - return results, err -} - -func (cli *Client) tryImageSearch(ctx context.Context, query url.Values, registryAuth string) (serverResponse, error) { - headers := map[string][]string{"X-Registry-Auth": {registryAuth}} - return cli.get(ctx, "/images/search", query, headers) -} diff --git a/vendor/github.com/docker/docker/client/image_tag.go b/vendor/github.com/docker/docker/client/image_tag.go deleted file mode 100644 index bdbf94ad..00000000 --- a/vendor/github.com/docker/docker/client/image_tag.go +++ /dev/null @@ -1,34 +0,0 @@ -package client - -import ( - "errors" - "fmt" - "net/url" - - "golang.org/x/net/context" - - distreference "github.com/docker/distribution/reference" - "github.com/docker/docker/api/types/reference" -) - -// ImageTag tags an image in the docker host -func (cli *Client) ImageTag(ctx context.Context, imageID, ref string) error { - distributionRef, err := distreference.ParseNamed(ref) - if err != nil { - return fmt.Errorf("Error parsing reference: %q is not a valid repository/tag", ref) - } - - if _, isCanonical := distributionRef.(distreference.Canonical); isCanonical { - return errors.New("refusing to create a tag with a digest reference") - } - - tag := reference.GetTagFromNamedRef(distributionRef) - - query := url.Values{} - query.Set("repo", distributionRef.Name()) - query.Set("tag", tag) - - resp, err := cli.post(ctx, "/images/"+imageID+"/tag", query, nil, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/info.go b/vendor/github.com/docker/docker/client/info.go deleted file mode 100644 index ac079612..00000000 --- a/vendor/github.com/docker/docker/client/info.go +++ /dev/null @@ -1,26 +0,0 @@ -package client - -import ( - "encoding/json" - "fmt" - "net/url" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// Info returns information about the docker server. -func (cli *Client) Info(ctx context.Context) (types.Info, error) { - var info types.Info - serverResp, err := cli.get(ctx, "/info", url.Values{}, nil) - if err != nil { - return info, err - } - defer ensureReaderClosed(serverResp) - - if err := json.NewDecoder(serverResp.body).Decode(&info); err != nil { - return info, fmt.Errorf("Error reading remote info: %v", err) - } - - return info, nil -} diff --git a/vendor/github.com/docker/docker/client/interface.go b/vendor/github.com/docker/docker/client/interface.go deleted file mode 100644 index 05978039..00000000 --- a/vendor/github.com/docker/docker/client/interface.go +++ /dev/null @@ -1,171 +0,0 @@ -package client - -import ( - "io" - "time" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/container" - "github.com/docker/docker/api/types/events" - "github.com/docker/docker/api/types/filters" - "github.com/docker/docker/api/types/network" - "github.com/docker/docker/api/types/registry" - "github.com/docker/docker/api/types/swarm" - volumetypes "github.com/docker/docker/api/types/volume" - "golang.org/x/net/context" -) - -// CommonAPIClient is the common methods between stable and experimental versions of APIClient. -type CommonAPIClient interface { - ContainerAPIClient - ImageAPIClient - NodeAPIClient - NetworkAPIClient - PluginAPIClient - ServiceAPIClient - SwarmAPIClient - SecretAPIClient - SystemAPIClient - VolumeAPIClient - ClientVersion() string - ServerVersion(ctx context.Context) (types.Version, error) - UpdateClientVersion(v string) -} - -// ContainerAPIClient defines API client methods for the containers -type ContainerAPIClient interface { - ContainerAttach(ctx context.Context, container string, options types.ContainerAttachOptions) (types.HijackedResponse, error) - ContainerCommit(ctx context.Context, container string, options types.ContainerCommitOptions) (types.IDResponse, error) - ContainerCreate(ctx context.Context, config *container.Config, hostConfig *container.HostConfig, networkingConfig *network.NetworkingConfig, containerName string) (container.ContainerCreateCreatedBody, error) - ContainerDiff(ctx context.Context, container string) ([]types.ContainerChange, error) - ContainerExecAttach(ctx context.Context, execID string, config types.ExecConfig) (types.HijackedResponse, error) - ContainerExecCreate(ctx context.Context, container string, config types.ExecConfig) (types.IDResponse, error) - ContainerExecInspect(ctx context.Context, execID string) (types.ContainerExecInspect, error) - ContainerExecResize(ctx context.Context, execID string, options types.ResizeOptions) error - ContainerExecStart(ctx context.Context, execID string, config types.ExecStartCheck) error - ContainerExport(ctx context.Context, container string) (io.ReadCloser, error) - ContainerInspect(ctx context.Context, container string) (types.ContainerJSON, error) - ContainerInspectWithRaw(ctx context.Context, container string, getSize bool) (types.ContainerJSON, []byte, error) - ContainerKill(ctx context.Context, container, signal string) error - ContainerList(ctx context.Context, options types.ContainerListOptions) ([]types.Container, error) - ContainerLogs(ctx context.Context, container string, options types.ContainerLogsOptions) (io.ReadCloser, error) - ContainerPause(ctx context.Context, container string) error - ContainerRemove(ctx context.Context, container string, options types.ContainerRemoveOptions) error - ContainerRename(ctx context.Context, container, newContainerName string) error - ContainerResize(ctx context.Context, container string, options types.ResizeOptions) error - ContainerRestart(ctx context.Context, container string, timeout *time.Duration) error - ContainerStatPath(ctx context.Context, container, path string) (types.ContainerPathStat, error) - ContainerStats(ctx context.Context, container string, stream bool) (types.ContainerStats, error) - ContainerStart(ctx context.Context, container string, options types.ContainerStartOptions) error - ContainerStop(ctx context.Context, container string, timeout *time.Duration) error - ContainerTop(ctx context.Context, container string, arguments []string) (types.ContainerProcessList, error) - ContainerUnpause(ctx context.Context, container string) error - ContainerUpdate(ctx context.Context, container string, updateConfig container.UpdateConfig) (container.ContainerUpdateOKBody, error) - ContainerWait(ctx context.Context, container string) (int64, error) - CopyFromContainer(ctx context.Context, container, srcPath string) (io.ReadCloser, types.ContainerPathStat, error) - CopyToContainer(ctx context.Context, container, path string, content io.Reader, options types.CopyToContainerOptions) error - ContainersPrune(ctx context.Context, pruneFilters filters.Args) (types.ContainersPruneReport, error) -} - -// ImageAPIClient defines API client methods for the images -type ImageAPIClient interface { - ImageBuild(ctx context.Context, context io.Reader, options types.ImageBuildOptions) (types.ImageBuildResponse, error) - ImageCreate(ctx context.Context, parentReference string, options types.ImageCreateOptions) (io.ReadCloser, error) - ImageHistory(ctx context.Context, image string) ([]types.ImageHistory, error) - ImageImport(ctx context.Context, source types.ImageImportSource, ref string, options types.ImageImportOptions) (io.ReadCloser, error) - ImageInspectWithRaw(ctx context.Context, image string) (types.ImageInspect, []byte, error) - ImageList(ctx context.Context, options types.ImageListOptions) ([]types.ImageSummary, error) - ImageLoad(ctx context.Context, input io.Reader, quiet bool) (types.ImageLoadResponse, error) - ImagePull(ctx context.Context, ref string, options types.ImagePullOptions) (io.ReadCloser, error) - ImagePush(ctx context.Context, ref string, options types.ImagePushOptions) (io.ReadCloser, error) - ImageRemove(ctx context.Context, image string, options types.ImageRemoveOptions) ([]types.ImageDelete, error) - ImageSearch(ctx context.Context, term string, options types.ImageSearchOptions) ([]registry.SearchResult, error) - ImageSave(ctx context.Context, images []string) (io.ReadCloser, error) - ImageTag(ctx context.Context, image, ref string) error - ImagesPrune(ctx context.Context, pruneFilter filters.Args) (types.ImagesPruneReport, error) -} - -// NetworkAPIClient defines API client methods for the networks -type NetworkAPIClient interface { - NetworkConnect(ctx context.Context, networkID, container string, config *network.EndpointSettings) error - NetworkCreate(ctx context.Context, name string, options types.NetworkCreate) (types.NetworkCreateResponse, error) - NetworkDisconnect(ctx context.Context, networkID, container string, force bool) error - NetworkInspect(ctx context.Context, networkID string) (types.NetworkResource, error) - NetworkInspectWithRaw(ctx context.Context, networkID string) (types.NetworkResource, []byte, error) - NetworkList(ctx context.Context, options types.NetworkListOptions) ([]types.NetworkResource, error) - NetworkRemove(ctx context.Context, networkID string) error - NetworksPrune(ctx context.Context, pruneFilter filters.Args) (types.NetworksPruneReport, error) -} - -// NodeAPIClient defines API client methods for the nodes -type NodeAPIClient interface { - NodeInspectWithRaw(ctx context.Context, nodeID string) (swarm.Node, []byte, error) - NodeList(ctx context.Context, options types.NodeListOptions) ([]swarm.Node, error) - NodeRemove(ctx context.Context, nodeID string, options types.NodeRemoveOptions) error - NodeUpdate(ctx context.Context, nodeID string, version swarm.Version, node swarm.NodeSpec) error -} - -// PluginAPIClient defines API client methods for the plugins -type PluginAPIClient interface { - PluginList(ctx context.Context) (types.PluginsListResponse, error) - PluginRemove(ctx context.Context, name string, options types.PluginRemoveOptions) error - PluginEnable(ctx context.Context, name string, options types.PluginEnableOptions) error - PluginDisable(ctx context.Context, name string, options types.PluginDisableOptions) error - PluginInstall(ctx context.Context, name string, options types.PluginInstallOptions) (io.ReadCloser, error) - PluginUpgrade(ctx context.Context, name string, options types.PluginInstallOptions) (io.ReadCloser, error) - PluginPush(ctx context.Context, name string, registryAuth string) (io.ReadCloser, error) - PluginSet(ctx context.Context, name string, args []string) error - PluginInspectWithRaw(ctx context.Context, name string) (*types.Plugin, []byte, error) - PluginCreate(ctx context.Context, createContext io.Reader, options types.PluginCreateOptions) error -} - -// ServiceAPIClient defines API client methods for the services -type ServiceAPIClient interface { - ServiceCreate(ctx context.Context, service swarm.ServiceSpec, options types.ServiceCreateOptions) (types.ServiceCreateResponse, error) - ServiceInspectWithRaw(ctx context.Context, serviceID string) (swarm.Service, []byte, error) - ServiceList(ctx context.Context, options types.ServiceListOptions) ([]swarm.Service, error) - ServiceRemove(ctx context.Context, serviceID string) error - ServiceUpdate(ctx context.Context, serviceID string, version swarm.Version, service swarm.ServiceSpec, options types.ServiceUpdateOptions) (types.ServiceUpdateResponse, error) - ServiceLogs(ctx context.Context, serviceID string, options types.ContainerLogsOptions) (io.ReadCloser, error) - TaskInspectWithRaw(ctx context.Context, taskID string) (swarm.Task, []byte, error) - TaskList(ctx context.Context, options types.TaskListOptions) ([]swarm.Task, error) -} - -// SwarmAPIClient defines API client methods for the swarm -type SwarmAPIClient interface { - SwarmInit(ctx context.Context, req swarm.InitRequest) (string, error) - SwarmJoin(ctx context.Context, req swarm.JoinRequest) error - SwarmGetUnlockKey(ctx context.Context) (types.SwarmUnlockKeyResponse, error) - SwarmUnlock(ctx context.Context, req swarm.UnlockRequest) error - SwarmLeave(ctx context.Context, force bool) error - SwarmInspect(ctx context.Context) (swarm.Swarm, error) - SwarmUpdate(ctx context.Context, version swarm.Version, swarm swarm.Spec, flags swarm.UpdateFlags) error -} - -// SystemAPIClient defines API client methods for the system -type SystemAPIClient interface { - Events(ctx context.Context, options types.EventsOptions) (<-chan events.Message, <-chan error) - Info(ctx context.Context) (types.Info, error) - RegistryLogin(ctx context.Context, auth types.AuthConfig) (registry.AuthenticateOKBody, error) - DiskUsage(ctx context.Context) (types.DiskUsage, error) - Ping(ctx context.Context) (types.Ping, error) -} - -// VolumeAPIClient defines API client methods for the volumes -type VolumeAPIClient interface { - VolumeCreate(ctx context.Context, options volumetypes.VolumesCreateBody) (types.Volume, error) - VolumeInspect(ctx context.Context, volumeID string) (types.Volume, error) - VolumeInspectWithRaw(ctx context.Context, volumeID string) (types.Volume, []byte, error) - VolumeList(ctx context.Context, filter filters.Args) (volumetypes.VolumesListOKBody, error) - VolumeRemove(ctx context.Context, volumeID string, force bool) error - VolumesPrune(ctx context.Context, pruneFilter filters.Args) (types.VolumesPruneReport, error) -} - -// SecretAPIClient defines API client methods for secrets -type SecretAPIClient interface { - SecretList(ctx context.Context, options types.SecretListOptions) ([]swarm.Secret, error) - SecretCreate(ctx context.Context, secret swarm.SecretSpec) (types.SecretCreateResponse, error) - SecretRemove(ctx context.Context, id string) error - SecretInspectWithRaw(ctx context.Context, name string) (swarm.Secret, []byte, error) - SecretUpdate(ctx context.Context, id string, version swarm.Version, secret swarm.SecretSpec) error -} diff --git a/vendor/github.com/docker/docker/client/interface_experimental.go b/vendor/github.com/docker/docker/client/interface_experimental.go deleted file mode 100644 index 51da98ec..00000000 --- a/vendor/github.com/docker/docker/client/interface_experimental.go +++ /dev/null @@ -1,17 +0,0 @@ -package client - -import ( - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -type apiClientExperimental interface { - CheckpointAPIClient -} - -// CheckpointAPIClient defines API client methods for the checkpoints -type CheckpointAPIClient interface { - CheckpointCreate(ctx context.Context, container string, options types.CheckpointCreateOptions) error - CheckpointDelete(ctx context.Context, container string, options types.CheckpointDeleteOptions) error - CheckpointList(ctx context.Context, container string, options types.CheckpointListOptions) ([]types.Checkpoint, error) -} diff --git a/vendor/github.com/docker/docker/client/interface_stable.go b/vendor/github.com/docker/docker/client/interface_stable.go deleted file mode 100644 index cc90a3cb..00000000 --- a/vendor/github.com/docker/docker/client/interface_stable.go +++ /dev/null @@ -1,10 +0,0 @@ -package client - -// APIClient is an interface that clients that talk with a docker server must implement. -type APIClient interface { - CommonAPIClient - apiClientExperimental -} - -// Ensure that Client always implements APIClient. -var _ APIClient = &Client{} diff --git a/vendor/github.com/docker/docker/client/login.go b/vendor/github.com/docker/docker/client/login.go deleted file mode 100644 index 600dc719..00000000 --- a/vendor/github.com/docker/docker/client/login.go +++ /dev/null @@ -1,29 +0,0 @@ -package client - -import ( - "encoding/json" - "net/http" - "net/url" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/registry" - "golang.org/x/net/context" -) - -// RegistryLogin authenticates the docker server with a given docker registry. -// It returns UnauthorizerError when the authentication fails. -func (cli *Client) RegistryLogin(ctx context.Context, auth types.AuthConfig) (registry.AuthenticateOKBody, error) { - resp, err := cli.post(ctx, "/auth", url.Values{}, auth, nil) - - if resp.statusCode == http.StatusUnauthorized { - return registry.AuthenticateOKBody{}, unauthorizedError{err} - } - if err != nil { - return registry.AuthenticateOKBody{}, err - } - - var response registry.AuthenticateOKBody - err = json.NewDecoder(resp.body).Decode(&response) - ensureReaderClosed(resp) - return response, err -} diff --git a/vendor/github.com/docker/docker/client/network_connect.go b/vendor/github.com/docker/docker/client/network_connect.go deleted file mode 100644 index c022c17b..00000000 --- a/vendor/github.com/docker/docker/client/network_connect.go +++ /dev/null @@ -1,18 +0,0 @@ -package client - -import ( - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/network" - "golang.org/x/net/context" -) - -// NetworkConnect connects a container to an existent network in the docker host. -func (cli *Client) NetworkConnect(ctx context.Context, networkID, containerID string, config *network.EndpointSettings) error { - nc := types.NetworkConnect{ - Container: containerID, - EndpointConfig: config, - } - resp, err := cli.post(ctx, "/networks/"+networkID+"/connect", nil, nc, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/network_create.go b/vendor/github.com/docker/docker/client/network_create.go deleted file mode 100644 index 4067a541..00000000 --- a/vendor/github.com/docker/docker/client/network_create.go +++ /dev/null @@ -1,25 +0,0 @@ -package client - -import ( - "encoding/json" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// NetworkCreate creates a new network in the docker host. -func (cli *Client) NetworkCreate(ctx context.Context, name string, options types.NetworkCreate) (types.NetworkCreateResponse, error) { - networkCreateRequest := types.NetworkCreateRequest{ - NetworkCreate: options, - Name: name, - } - var response types.NetworkCreateResponse - serverResp, err := cli.post(ctx, "/networks/create", nil, networkCreateRequest, nil) - if err != nil { - return response, err - } - - json.NewDecoder(serverResp.body).Decode(&response) - ensureReaderClosed(serverResp) - return response, err -} diff --git a/vendor/github.com/docker/docker/client/network_disconnect.go b/vendor/github.com/docker/docker/client/network_disconnect.go deleted file mode 100644 index 24b58e3c..00000000 --- a/vendor/github.com/docker/docker/client/network_disconnect.go +++ /dev/null @@ -1,14 +0,0 @@ -package client - -import ( - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// NetworkDisconnect disconnects a container from an existent network in the docker host. -func (cli *Client) NetworkDisconnect(ctx context.Context, networkID, containerID string, force bool) error { - nd := types.NetworkDisconnect{Container: containerID, Force: force} - resp, err := cli.post(ctx, "/networks/"+networkID+"/disconnect", nil, nd, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/network_inspect.go b/vendor/github.com/docker/docker/client/network_inspect.go deleted file mode 100644 index 5ad4ea5b..00000000 --- a/vendor/github.com/docker/docker/client/network_inspect.go +++ /dev/null @@ -1,38 +0,0 @@ -package client - -import ( - "bytes" - "encoding/json" - "io/ioutil" - "net/http" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// NetworkInspect returns the information for a specific network configured in the docker host. -func (cli *Client) NetworkInspect(ctx context.Context, networkID string) (types.NetworkResource, error) { - networkResource, _, err := cli.NetworkInspectWithRaw(ctx, networkID) - return networkResource, err -} - -// NetworkInspectWithRaw returns the information for a specific network configured in the docker host and its raw representation. -func (cli *Client) NetworkInspectWithRaw(ctx context.Context, networkID string) (types.NetworkResource, []byte, error) { - var networkResource types.NetworkResource - resp, err := cli.get(ctx, "/networks/"+networkID, nil, nil) - if err != nil { - if resp.statusCode == http.StatusNotFound { - return networkResource, nil, networkNotFoundError{networkID} - } - return networkResource, nil, err - } - defer ensureReaderClosed(resp) - - body, err := ioutil.ReadAll(resp.body) - if err != nil { - return networkResource, nil, err - } - rdr := bytes.NewReader(body) - err = json.NewDecoder(rdr).Decode(&networkResource) - return networkResource, body, err -} diff --git a/vendor/github.com/docker/docker/client/network_list.go b/vendor/github.com/docker/docker/client/network_list.go deleted file mode 100644 index e566a93e..00000000 --- a/vendor/github.com/docker/docker/client/network_list.go +++ /dev/null @@ -1,31 +0,0 @@ -package client - -import ( - "encoding/json" - "net/url" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/filters" - "golang.org/x/net/context" -) - -// NetworkList returns the list of networks configured in the docker host. -func (cli *Client) NetworkList(ctx context.Context, options types.NetworkListOptions) ([]types.NetworkResource, error) { - query := url.Values{} - if options.Filters.Len() > 0 { - filterJSON, err := filters.ToParamWithVersion(cli.version, options.Filters) - if err != nil { - return nil, err - } - - query.Set("filters", filterJSON) - } - var networkResources []types.NetworkResource - resp, err := cli.get(ctx, "/networks", query, nil) - if err != nil { - return networkResources, err - } - err = json.NewDecoder(resp.body).Decode(&networkResources) - ensureReaderClosed(resp) - return networkResources, err -} diff --git a/vendor/github.com/docker/docker/client/network_prune.go b/vendor/github.com/docker/docker/client/network_prune.go deleted file mode 100644 index 7352a7f0..00000000 --- a/vendor/github.com/docker/docker/client/network_prune.go +++ /dev/null @@ -1,36 +0,0 @@ -package client - -import ( - "encoding/json" - "fmt" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/filters" - "golang.org/x/net/context" -) - -// NetworksPrune requests the daemon to delete unused networks -func (cli *Client) NetworksPrune(ctx context.Context, pruneFilters filters.Args) (types.NetworksPruneReport, error) { - var report types.NetworksPruneReport - - if err := cli.NewVersionError("1.25", "network prune"); err != nil { - return report, err - } - - query, err := getFiltersQuery(pruneFilters) - if err != nil { - return report, err - } - - serverResp, err := cli.post(ctx, "/networks/prune", query, nil, nil) - if err != nil { - return report, err - } - defer ensureReaderClosed(serverResp) - - if err := json.NewDecoder(serverResp.body).Decode(&report); err != nil { - return report, fmt.Errorf("Error retrieving network prune report: %v", err) - } - - return report, nil -} diff --git a/vendor/github.com/docker/docker/client/network_remove.go b/vendor/github.com/docker/docker/client/network_remove.go deleted file mode 100644 index 6bd67489..00000000 --- a/vendor/github.com/docker/docker/client/network_remove.go +++ /dev/null @@ -1,10 +0,0 @@ -package client - -import "golang.org/x/net/context" - -// NetworkRemove removes an existent network from the docker host. -func (cli *Client) NetworkRemove(ctx context.Context, networkID string) error { - resp, err := cli.delete(ctx, "/networks/"+networkID, nil, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/node_inspect.go b/vendor/github.com/docker/docker/client/node_inspect.go deleted file mode 100644 index abf505d2..00000000 --- a/vendor/github.com/docker/docker/client/node_inspect.go +++ /dev/null @@ -1,33 +0,0 @@ -package client - -import ( - "bytes" - "encoding/json" - "io/ioutil" - "net/http" - - "github.com/docker/docker/api/types/swarm" - "golang.org/x/net/context" -) - -// NodeInspectWithRaw returns the node information. -func (cli *Client) NodeInspectWithRaw(ctx context.Context, nodeID string) (swarm.Node, []byte, error) { - serverResp, err := cli.get(ctx, "/nodes/"+nodeID, nil, nil) - if err != nil { - if serverResp.statusCode == http.StatusNotFound { - return swarm.Node{}, nil, nodeNotFoundError{nodeID} - } - return swarm.Node{}, nil, err - } - defer ensureReaderClosed(serverResp) - - body, err := ioutil.ReadAll(serverResp.body) - if err != nil { - return swarm.Node{}, nil, err - } - - var response swarm.Node - rdr := bytes.NewReader(body) - err = json.NewDecoder(rdr).Decode(&response) - return response, body, err -} diff --git a/vendor/github.com/docker/docker/client/node_list.go b/vendor/github.com/docker/docker/client/node_list.go deleted file mode 100644 index 3e8440f0..00000000 --- a/vendor/github.com/docker/docker/client/node_list.go +++ /dev/null @@ -1,36 +0,0 @@ -package client - -import ( - "encoding/json" - "net/url" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/filters" - "github.com/docker/docker/api/types/swarm" - "golang.org/x/net/context" -) - -// NodeList returns the list of nodes. -func (cli *Client) NodeList(ctx context.Context, options types.NodeListOptions) ([]swarm.Node, error) { - query := url.Values{} - - if options.Filters.Len() > 0 { - filterJSON, err := filters.ToParam(options.Filters) - - if err != nil { - return nil, err - } - - query.Set("filters", filterJSON) - } - - resp, err := cli.get(ctx, "/nodes", query, nil) - if err != nil { - return nil, err - } - - var nodes []swarm.Node - err = json.NewDecoder(resp.body).Decode(&nodes) - ensureReaderClosed(resp) - return nodes, err -} diff --git a/vendor/github.com/docker/docker/client/node_remove.go b/vendor/github.com/docker/docker/client/node_remove.go deleted file mode 100644 index 0a77f3d5..00000000 --- a/vendor/github.com/docker/docker/client/node_remove.go +++ /dev/null @@ -1,21 +0,0 @@ -package client - -import ( - "net/url" - - "github.com/docker/docker/api/types" - - "golang.org/x/net/context" -) - -// NodeRemove removes a Node. -func (cli *Client) NodeRemove(ctx context.Context, nodeID string, options types.NodeRemoveOptions) error { - query := url.Values{} - if options.Force { - query.Set("force", "1") - } - - resp, err := cli.delete(ctx, "/nodes/"+nodeID, query, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/node_update.go b/vendor/github.com/docker/docker/client/node_update.go deleted file mode 100644 index 3ca97602..00000000 --- a/vendor/github.com/docker/docker/client/node_update.go +++ /dev/null @@ -1,18 +0,0 @@ -package client - -import ( - "net/url" - "strconv" - - "github.com/docker/docker/api/types/swarm" - "golang.org/x/net/context" -) - -// NodeUpdate updates a Node. -func (cli *Client) NodeUpdate(ctx context.Context, nodeID string, version swarm.Version, node swarm.NodeSpec) error { - query := url.Values{} - query.Set("version", strconv.FormatUint(version.Index, 10)) - resp, err := cli.post(ctx, "/nodes/"+nodeID+"/update", query, node, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/ping.go b/vendor/github.com/docker/docker/client/ping.go deleted file mode 100644 index 22dcda24..00000000 --- a/vendor/github.com/docker/docker/client/ping.go +++ /dev/null @@ -1,30 +0,0 @@ -package client - -import ( - "fmt" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// Ping pings the server and return the value of the "Docker-Experimental" & "API-Version" headers -func (cli *Client) Ping(ctx context.Context) (types.Ping, error) { - var ping types.Ping - req, err := cli.buildRequest("GET", fmt.Sprintf("%s/_ping", cli.basePath), nil, nil) - if err != nil { - return ping, err - } - serverResp, err := cli.doRequest(ctx, req) - if err != nil { - return ping, err - } - defer ensureReaderClosed(serverResp) - - ping.APIVersion = serverResp.header.Get("API-Version") - - if serverResp.header.Get("Docker-Experimental") == "true" { - ping.Experimental = true - } - - return ping, nil -} diff --git a/vendor/github.com/docker/docker/client/plugin_create.go b/vendor/github.com/docker/docker/client/plugin_create.go deleted file mode 100644 index a660ba57..00000000 --- a/vendor/github.com/docker/docker/client/plugin_create.go +++ /dev/null @@ -1,26 +0,0 @@ -package client - -import ( - "io" - "net/http" - "net/url" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// PluginCreate creates a plugin -func (cli *Client) PluginCreate(ctx context.Context, createContext io.Reader, createOptions types.PluginCreateOptions) error { - headers := http.Header(make(map[string][]string)) - headers.Set("Content-Type", "application/tar") - - query := url.Values{} - query.Set("name", createOptions.RepoName) - - resp, err := cli.postRaw(ctx, "/plugins/create", query, createContext, headers) - if err != nil { - return err - } - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/plugin_disable.go b/vendor/github.com/docker/docker/client/plugin_disable.go deleted file mode 100644 index 30467db7..00000000 --- a/vendor/github.com/docker/docker/client/plugin_disable.go +++ /dev/null @@ -1,19 +0,0 @@ -package client - -import ( - "net/url" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// PluginDisable disables a plugin -func (cli *Client) PluginDisable(ctx context.Context, name string, options types.PluginDisableOptions) error { - query := url.Values{} - if options.Force { - query.Set("force", "1") - } - resp, err := cli.post(ctx, "/plugins/"+name+"/disable", query, nil, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/plugin_enable.go b/vendor/github.com/docker/docker/client/plugin_enable.go deleted file mode 100644 index 95517c4b..00000000 --- a/vendor/github.com/docker/docker/client/plugin_enable.go +++ /dev/null @@ -1,19 +0,0 @@ -package client - -import ( - "net/url" - "strconv" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// PluginEnable enables a plugin -func (cli *Client) PluginEnable(ctx context.Context, name string, options types.PluginEnableOptions) error { - query := url.Values{} - query.Set("timeout", strconv.Itoa(options.Timeout)) - - resp, err := cli.post(ctx, "/plugins/"+name+"/enable", query, nil, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/plugin_inspect.go b/vendor/github.com/docker/docker/client/plugin_inspect.go deleted file mode 100644 index 89f39ee2..00000000 --- a/vendor/github.com/docker/docker/client/plugin_inspect.go +++ /dev/null @@ -1,32 +0,0 @@ -package client - -import ( - "bytes" - "encoding/json" - "io/ioutil" - "net/http" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// PluginInspectWithRaw inspects an existing plugin -func (cli *Client) PluginInspectWithRaw(ctx context.Context, name string) (*types.Plugin, []byte, error) { - resp, err := cli.get(ctx, "/plugins/"+name+"/json", nil, nil) - if err != nil { - if resp.statusCode == http.StatusNotFound { - return nil, nil, pluginNotFoundError{name} - } - return nil, nil, err - } - - defer ensureReaderClosed(resp) - body, err := ioutil.ReadAll(resp.body) - if err != nil { - return nil, nil, err - } - var p types.Plugin - rdr := bytes.NewReader(body) - err = json.NewDecoder(rdr).Decode(&p) - return &p, body, err -} diff --git a/vendor/github.com/docker/docker/client/plugin_install.go b/vendor/github.com/docker/docker/client/plugin_install.go deleted file mode 100644 index 3217c4cf..00000000 --- a/vendor/github.com/docker/docker/client/plugin_install.go +++ /dev/null @@ -1,113 +0,0 @@ -package client - -import ( - "encoding/json" - "io" - "net/http" - "net/url" - - "github.com/docker/distribution/reference" - "github.com/docker/docker/api/types" - "github.com/pkg/errors" - "golang.org/x/net/context" -) - -// PluginInstall installs a plugin -func (cli *Client) PluginInstall(ctx context.Context, name string, options types.PluginInstallOptions) (rc io.ReadCloser, err error) { - query := url.Values{} - if _, err := reference.ParseNamed(options.RemoteRef); err != nil { - return nil, errors.Wrap(err, "invalid remote reference") - } - query.Set("remote", options.RemoteRef) - - privileges, err := cli.checkPluginPermissions(ctx, query, options) - if err != nil { - return nil, err - } - - // set name for plugin pull, if empty should default to remote reference - query.Set("name", name) - - resp, err := cli.tryPluginPull(ctx, query, privileges, options.RegistryAuth) - if err != nil { - return nil, err - } - - name = resp.header.Get("Docker-Plugin-Name") - - pr, pw := io.Pipe() - go func() { // todo: the client should probably be designed more around the actual api - _, err := io.Copy(pw, resp.body) - if err != nil { - pw.CloseWithError(err) - return - } - defer func() { - if err != nil { - delResp, _ := cli.delete(ctx, "/plugins/"+name, nil, nil) - ensureReaderClosed(delResp) - } - }() - if len(options.Args) > 0 { - if err := cli.PluginSet(ctx, name, options.Args); err != nil { - pw.CloseWithError(err) - return - } - } - - if options.Disabled { - pw.Close() - return - } - - err = cli.PluginEnable(ctx, name, types.PluginEnableOptions{Timeout: 0}) - pw.CloseWithError(err) - }() - return pr, nil -} - -func (cli *Client) tryPluginPrivileges(ctx context.Context, query url.Values, registryAuth string) (serverResponse, error) { - headers := map[string][]string{"X-Registry-Auth": {registryAuth}} - return cli.get(ctx, "/plugins/privileges", query, headers) -} - -func (cli *Client) tryPluginPull(ctx context.Context, query url.Values, privileges types.PluginPrivileges, registryAuth string) (serverResponse, error) { - headers := map[string][]string{"X-Registry-Auth": {registryAuth}} - return cli.post(ctx, "/plugins/pull", query, privileges, headers) -} - -func (cli *Client) checkPluginPermissions(ctx context.Context, query url.Values, options types.PluginInstallOptions) (types.PluginPrivileges, error) { - resp, err := cli.tryPluginPrivileges(ctx, query, options.RegistryAuth) - if resp.statusCode == http.StatusUnauthorized && options.PrivilegeFunc != nil { - // todo: do inspect before to check existing name before checking privileges - newAuthHeader, privilegeErr := options.PrivilegeFunc() - if privilegeErr != nil { - ensureReaderClosed(resp) - return nil, privilegeErr - } - options.RegistryAuth = newAuthHeader - resp, err = cli.tryPluginPrivileges(ctx, query, options.RegistryAuth) - } - if err != nil { - ensureReaderClosed(resp) - return nil, err - } - - var privileges types.PluginPrivileges - if err := json.NewDecoder(resp.body).Decode(&privileges); err != nil { - ensureReaderClosed(resp) - return nil, err - } - ensureReaderClosed(resp) - - if !options.AcceptAllPermissions && options.AcceptPermissionsFunc != nil && len(privileges) > 0 { - accept, err := options.AcceptPermissionsFunc(privileges) - if err != nil { - return nil, err - } - if !accept { - return nil, pluginPermissionDenied{options.RemoteRef} - } - } - return privileges, nil -} diff --git a/vendor/github.com/docker/docker/client/plugin_list.go b/vendor/github.com/docker/docker/client/plugin_list.go deleted file mode 100644 index 88c480a3..00000000 --- a/vendor/github.com/docker/docker/client/plugin_list.go +++ /dev/null @@ -1,21 +0,0 @@ -package client - -import ( - "encoding/json" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// PluginList returns the installed plugins -func (cli *Client) PluginList(ctx context.Context) (types.PluginsListResponse, error) { - var plugins types.PluginsListResponse - resp, err := cli.get(ctx, "/plugins", nil, nil) - if err != nil { - return plugins, err - } - - err = json.NewDecoder(resp.body).Decode(&plugins) - ensureReaderClosed(resp) - return plugins, err -} diff --git a/vendor/github.com/docker/docker/client/plugin_push.go b/vendor/github.com/docker/docker/client/plugin_push.go deleted file mode 100644 index 1e5f9632..00000000 --- a/vendor/github.com/docker/docker/client/plugin_push.go +++ /dev/null @@ -1,17 +0,0 @@ -package client - -import ( - "io" - - "golang.org/x/net/context" -) - -// PluginPush pushes a plugin to a registry -func (cli *Client) PluginPush(ctx context.Context, name string, registryAuth string) (io.ReadCloser, error) { - headers := map[string][]string{"X-Registry-Auth": {registryAuth}} - resp, err := cli.post(ctx, "/plugins/"+name+"/push", nil, nil, headers) - if err != nil { - return nil, err - } - return resp.body, nil -} diff --git a/vendor/github.com/docker/docker/client/plugin_remove.go b/vendor/github.com/docker/docker/client/plugin_remove.go deleted file mode 100644 index b017e4d3..00000000 --- a/vendor/github.com/docker/docker/client/plugin_remove.go +++ /dev/null @@ -1,20 +0,0 @@ -package client - -import ( - "net/url" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// PluginRemove removes a plugin -func (cli *Client) PluginRemove(ctx context.Context, name string, options types.PluginRemoveOptions) error { - query := url.Values{} - if options.Force { - query.Set("force", "1") - } - - resp, err := cli.delete(ctx, "/plugins/"+name, query, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/plugin_set.go b/vendor/github.com/docker/docker/client/plugin_set.go deleted file mode 100644 index 3260d2a9..00000000 --- a/vendor/github.com/docker/docker/client/plugin_set.go +++ /dev/null @@ -1,12 +0,0 @@ -package client - -import ( - "golang.org/x/net/context" -) - -// PluginSet modifies settings for an existing plugin -func (cli *Client) PluginSet(ctx context.Context, name string, args []string) error { - resp, err := cli.post(ctx, "/plugins/"+name+"/set", nil, args, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/plugin_upgrade.go b/vendor/github.com/docker/docker/client/plugin_upgrade.go deleted file mode 100644 index 95a4356b..00000000 --- a/vendor/github.com/docker/docker/client/plugin_upgrade.go +++ /dev/null @@ -1,37 +0,0 @@ -package client - -import ( - "fmt" - "io" - "net/url" - - "github.com/docker/distribution/reference" - "github.com/docker/docker/api/types" - "github.com/pkg/errors" - "golang.org/x/net/context" -) - -// PluginUpgrade upgrades a plugin -func (cli *Client) PluginUpgrade(ctx context.Context, name string, options types.PluginInstallOptions) (rc io.ReadCloser, err error) { - query := url.Values{} - if _, err := reference.ParseNamed(options.RemoteRef); err != nil { - return nil, errors.Wrap(err, "invalid remote reference") - } - query.Set("remote", options.RemoteRef) - - privileges, err := cli.checkPluginPermissions(ctx, query, options) - if err != nil { - return nil, err - } - - resp, err := cli.tryPluginUpgrade(ctx, query, privileges, name, options.RegistryAuth) - if err != nil { - return nil, err - } - return resp.body, nil -} - -func (cli *Client) tryPluginUpgrade(ctx context.Context, query url.Values, privileges types.PluginPrivileges, name, registryAuth string) (serverResponse, error) { - headers := map[string][]string{"X-Registry-Auth": {registryAuth}} - return cli.post(ctx, fmt.Sprintf("/plugins/%s/upgrade", name), query, privileges, headers) -} diff --git a/vendor/github.com/docker/docker/client/request.go b/vendor/github.com/docker/docker/client/request.go deleted file mode 100644 index ac053636..00000000 --- a/vendor/github.com/docker/docker/client/request.go +++ /dev/null @@ -1,247 +0,0 @@ -package client - -import ( - "bytes" - "encoding/json" - "fmt" - "io" - "io/ioutil" - "net" - "net/http" - "net/url" - "os" - "strings" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/versions" - "github.com/pkg/errors" - "golang.org/x/net/context" - "golang.org/x/net/context/ctxhttp" -) - -// serverResponse is a wrapper for http API responses. -type serverResponse struct { - body io.ReadCloser - header http.Header - statusCode int -} - -// head sends an http request to the docker API using the method HEAD. -func (cli *Client) head(ctx context.Context, path string, query url.Values, headers map[string][]string) (serverResponse, error) { - return cli.sendRequest(ctx, "HEAD", path, query, nil, headers) -} - -// getWithContext sends an http request to the docker API using the method GET with a specific go context. -func (cli *Client) get(ctx context.Context, path string, query url.Values, headers map[string][]string) (serverResponse, error) { - return cli.sendRequest(ctx, "GET", path, query, nil, headers) -} - -// postWithContext sends an http request to the docker API using the method POST with a specific go context. -func (cli *Client) post(ctx context.Context, path string, query url.Values, obj interface{}, headers map[string][]string) (serverResponse, error) { - body, headers, err := encodeBody(obj, headers) - if err != nil { - return serverResponse{}, err - } - return cli.sendRequest(ctx, "POST", path, query, body, headers) -} - -func (cli *Client) postRaw(ctx context.Context, path string, query url.Values, body io.Reader, headers map[string][]string) (serverResponse, error) { - return cli.sendRequest(ctx, "POST", path, query, body, headers) -} - -// put sends an http request to the docker API using the method PUT. -func (cli *Client) put(ctx context.Context, path string, query url.Values, obj interface{}, headers map[string][]string) (serverResponse, error) { - body, headers, err := encodeBody(obj, headers) - if err != nil { - return serverResponse{}, err - } - return cli.sendRequest(ctx, "PUT", path, query, body, headers) -} - -// put sends an http request to the docker API using the method PUT. -func (cli *Client) putRaw(ctx context.Context, path string, query url.Values, body io.Reader, headers map[string][]string) (serverResponse, error) { - return cli.sendRequest(ctx, "PUT", path, query, body, headers) -} - -// delete sends an http request to the docker API using the method DELETE. -func (cli *Client) delete(ctx context.Context, path string, query url.Values, headers map[string][]string) (serverResponse, error) { - return cli.sendRequest(ctx, "DELETE", path, query, nil, headers) -} - -type headers map[string][]string - -func encodeBody(obj interface{}, headers headers) (io.Reader, headers, error) { - if obj == nil { - return nil, headers, nil - } - - body, err := encodeData(obj) - if err != nil { - return nil, headers, err - } - if headers == nil { - headers = make(map[string][]string) - } - headers["Content-Type"] = []string{"application/json"} - return body, headers, nil -} - -func (cli *Client) buildRequest(method, path string, body io.Reader, headers headers) (*http.Request, error) { - expectedPayload := (method == "POST" || method == "PUT") - if expectedPayload && body == nil { - body = bytes.NewReader([]byte{}) - } - - req, err := http.NewRequest(method, path, body) - if err != nil { - return nil, err - } - req = cli.addHeaders(req, headers) - - if cli.proto == "unix" || cli.proto == "npipe" { - // For local communications, it doesn't matter what the host is. We just - // need a valid and meaningful host name. (See #189) - req.Host = "docker" - } - - req.URL.Host = cli.addr - req.URL.Scheme = cli.scheme - - if expectedPayload && req.Header.Get("Content-Type") == "" { - req.Header.Set("Content-Type", "text/plain") - } - return req, nil -} - -func (cli *Client) sendRequest(ctx context.Context, method, path string, query url.Values, body io.Reader, headers headers) (serverResponse, error) { - req, err := cli.buildRequest(method, cli.getAPIPath(path, query), body, headers) - if err != nil { - return serverResponse{}, err - } - return cli.doRequest(ctx, req) -} - -func (cli *Client) doRequest(ctx context.Context, req *http.Request) (serverResponse, error) { - serverResp := serverResponse{statusCode: -1} - - resp, err := ctxhttp.Do(ctx, cli.client, req) - if err != nil { - if cli.scheme != "https" && strings.Contains(err.Error(), "malformed HTTP response") { - return serverResp, fmt.Errorf("%v.\n* Are you trying to connect to a TLS-enabled daemon without TLS?", err) - } - - if cli.scheme == "https" && strings.Contains(err.Error(), "bad certificate") { - return serverResp, fmt.Errorf("The server probably has client authentication (--tlsverify) enabled. Please check your TLS client certification settings: %v", err) - } - - // Don't decorate context sentinel errors; users may be comparing to - // them directly. - switch err { - case context.Canceled, context.DeadlineExceeded: - return serverResp, err - } - - if nErr, ok := err.(*url.Error); ok { - if nErr, ok := nErr.Err.(*net.OpError); ok { - if os.IsPermission(nErr.Err) { - return serverResp, errors.Wrapf(err, "Got permission denied while trying to connect to the Docker daemon socket at %v", cli.host) - } - } - } - - if err, ok := err.(net.Error); ok { - if err.Timeout() { - return serverResp, ErrorConnectionFailed(cli.host) - } - if !err.Temporary() { - if strings.Contains(err.Error(), "connection refused") || strings.Contains(err.Error(), "dial unix") { - return serverResp, ErrorConnectionFailed(cli.host) - } - } - } - - // Although there's not a strongly typed error for this in go-winio, - // lots of people are using the default configuration for the docker - // daemon on Windows where the daemon is listening on a named pipe - // `//./pipe/docker_engine, and the client must be running elevated. - // Give users a clue rather than the not-overly useful message - // such as `error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.25/info: - // open //./pipe/docker_engine: The system cannot find the file specified.`. - // Note we can't string compare "The system cannot find the file specified" as - // this is localised - for example in French the error would be - // `open //./pipe/docker_engine: Le fichier spécifié est introuvable.` - if strings.Contains(err.Error(), `open //./pipe/docker_engine`) { - err = errors.New(err.Error() + " In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.") - } - - return serverResp, errors.Wrap(err, "error during connect") - } - - if resp != nil { - serverResp.statusCode = resp.StatusCode - } - - if serverResp.statusCode < 200 || serverResp.statusCode >= 400 { - body, err := ioutil.ReadAll(resp.Body) - if err != nil { - return serverResp, err - } - if len(body) == 0 { - return serverResp, fmt.Errorf("Error: request returned %s for API route and version %s, check if the server supports the requested API version", http.StatusText(serverResp.statusCode), req.URL) - } - - var errorMessage string - if (cli.version == "" || versions.GreaterThan(cli.version, "1.23")) && - resp.Header.Get("Content-Type") == "application/json" { - var errorResponse types.ErrorResponse - if err := json.Unmarshal(body, &errorResponse); err != nil { - return serverResp, fmt.Errorf("Error reading JSON: %v", err) - } - errorMessage = errorResponse.Message - } else { - errorMessage = string(body) - } - - return serverResp, fmt.Errorf("Error response from daemon: %s", strings.TrimSpace(errorMessage)) - } - - serverResp.body = resp.Body - serverResp.header = resp.Header - return serverResp, nil -} - -func (cli *Client) addHeaders(req *http.Request, headers headers) *http.Request { - // Add CLI Config's HTTP Headers BEFORE we set the Docker headers - // then the user can't change OUR headers - for k, v := range cli.customHTTPHeaders { - if versions.LessThan(cli.version, "1.25") && k == "User-Agent" { - continue - } - req.Header.Set(k, v) - } - - if headers != nil { - for k, v := range headers { - req.Header[k] = v - } - } - return req -} - -func encodeData(data interface{}) (*bytes.Buffer, error) { - params := bytes.NewBuffer(nil) - if data != nil { - if err := json.NewEncoder(params).Encode(data); err != nil { - return nil, err - } - } - return params, nil -} - -func ensureReaderClosed(response serverResponse) { - if body := response.body; body != nil { - // Drain up to 512 bytes and close the body to let the Transport reuse the connection - io.CopyN(ioutil.Discard, body, 512) - response.body.Close() - } -} diff --git a/vendor/github.com/docker/docker/client/secret_create.go b/vendor/github.com/docker/docker/client/secret_create.go deleted file mode 100644 index de8b0415..00000000 --- a/vendor/github.com/docker/docker/client/secret_create.go +++ /dev/null @@ -1,24 +0,0 @@ -package client - -import ( - "encoding/json" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/swarm" - "golang.org/x/net/context" -) - -// SecretCreate creates a new Secret. -func (cli *Client) SecretCreate(ctx context.Context, secret swarm.SecretSpec) (types.SecretCreateResponse, error) { - var headers map[string][]string - - var response types.SecretCreateResponse - resp, err := cli.post(ctx, "/secrets/create", nil, secret, headers) - if err != nil { - return response, err - } - - err = json.NewDecoder(resp.body).Decode(&response) - ensureReaderClosed(resp) - return response, err -} diff --git a/vendor/github.com/docker/docker/client/secret_inspect.go b/vendor/github.com/docker/docker/client/secret_inspect.go deleted file mode 100644 index f7745761..00000000 --- a/vendor/github.com/docker/docker/client/secret_inspect.go +++ /dev/null @@ -1,34 +0,0 @@ -package client - -import ( - "bytes" - "encoding/json" - "io/ioutil" - "net/http" - - "github.com/docker/docker/api/types/swarm" - "golang.org/x/net/context" -) - -// SecretInspectWithRaw returns the secret information with raw data -func (cli *Client) SecretInspectWithRaw(ctx context.Context, id string) (swarm.Secret, []byte, error) { - resp, err := cli.get(ctx, "/secrets/"+id, nil, nil) - if err != nil { - if resp.statusCode == http.StatusNotFound { - return swarm.Secret{}, nil, secretNotFoundError{id} - } - return swarm.Secret{}, nil, err - } - defer ensureReaderClosed(resp) - - body, err := ioutil.ReadAll(resp.body) - if err != nil { - return swarm.Secret{}, nil, err - } - - var secret swarm.Secret - rdr := bytes.NewReader(body) - err = json.NewDecoder(rdr).Decode(&secret) - - return secret, body, err -} diff --git a/vendor/github.com/docker/docker/client/secret_list.go b/vendor/github.com/docker/docker/client/secret_list.go deleted file mode 100644 index 7e9d5ec1..00000000 --- a/vendor/github.com/docker/docker/client/secret_list.go +++ /dev/null @@ -1,35 +0,0 @@ -package client - -import ( - "encoding/json" - "net/url" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/filters" - "github.com/docker/docker/api/types/swarm" - "golang.org/x/net/context" -) - -// SecretList returns the list of secrets. -func (cli *Client) SecretList(ctx context.Context, options types.SecretListOptions) ([]swarm.Secret, error) { - query := url.Values{} - - if options.Filters.Len() > 0 { - filterJSON, err := filters.ToParam(options.Filters) - if err != nil { - return nil, err - } - - query.Set("filters", filterJSON) - } - - resp, err := cli.get(ctx, "/secrets", query, nil) - if err != nil { - return nil, err - } - - var secrets []swarm.Secret - err = json.NewDecoder(resp.body).Decode(&secrets) - ensureReaderClosed(resp) - return secrets, err -} diff --git a/vendor/github.com/docker/docker/client/secret_remove.go b/vendor/github.com/docker/docker/client/secret_remove.go deleted file mode 100644 index 1955b988..00000000 --- a/vendor/github.com/docker/docker/client/secret_remove.go +++ /dev/null @@ -1,10 +0,0 @@ -package client - -import "golang.org/x/net/context" - -// SecretRemove removes a Secret. -func (cli *Client) SecretRemove(ctx context.Context, id string) error { - resp, err := cli.delete(ctx, "/secrets/"+id, nil, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/secret_update.go b/vendor/github.com/docker/docker/client/secret_update.go deleted file mode 100644 index b94e24aa..00000000 --- a/vendor/github.com/docker/docker/client/secret_update.go +++ /dev/null @@ -1,19 +0,0 @@ -package client - -import ( - "net/url" - "strconv" - - "github.com/docker/docker/api/types/swarm" - "golang.org/x/net/context" -) - -// SecretUpdate updates a Secret. Currently, the only part of a secret spec -// which can be updated is Labels. -func (cli *Client) SecretUpdate(ctx context.Context, id string, version swarm.Version, secret swarm.SecretSpec) error { - query := url.Values{} - query.Set("version", strconv.FormatUint(version.Index, 10)) - resp, err := cli.post(ctx, "/secrets/"+id+"/update", query, secret, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/service_create.go b/vendor/github.com/docker/docker/client/service_create.go deleted file mode 100644 index 3d1be225..00000000 --- a/vendor/github.com/docker/docker/client/service_create.go +++ /dev/null @@ -1,30 +0,0 @@ -package client - -import ( - "encoding/json" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/swarm" - "golang.org/x/net/context" -) - -// ServiceCreate creates a new Service. -func (cli *Client) ServiceCreate(ctx context.Context, service swarm.ServiceSpec, options types.ServiceCreateOptions) (types.ServiceCreateResponse, error) { - var headers map[string][]string - - if options.EncodedRegistryAuth != "" { - headers = map[string][]string{ - "X-Registry-Auth": {options.EncodedRegistryAuth}, - } - } - - var response types.ServiceCreateResponse - resp, err := cli.post(ctx, "/services/create", nil, service, headers) - if err != nil { - return response, err - } - - err = json.NewDecoder(resp.body).Decode(&response) - ensureReaderClosed(resp) - return response, err -} diff --git a/vendor/github.com/docker/docker/client/service_inspect.go b/vendor/github.com/docker/docker/client/service_inspect.go deleted file mode 100644 index ca71cbde..00000000 --- a/vendor/github.com/docker/docker/client/service_inspect.go +++ /dev/null @@ -1,33 +0,0 @@ -package client - -import ( - "bytes" - "encoding/json" - "io/ioutil" - "net/http" - - "github.com/docker/docker/api/types/swarm" - "golang.org/x/net/context" -) - -// ServiceInspectWithRaw returns the service information and the raw data. -func (cli *Client) ServiceInspectWithRaw(ctx context.Context, serviceID string) (swarm.Service, []byte, error) { - serverResp, err := cli.get(ctx, "/services/"+serviceID, nil, nil) - if err != nil { - if serverResp.statusCode == http.StatusNotFound { - return swarm.Service{}, nil, serviceNotFoundError{serviceID} - } - return swarm.Service{}, nil, err - } - defer ensureReaderClosed(serverResp) - - body, err := ioutil.ReadAll(serverResp.body) - if err != nil { - return swarm.Service{}, nil, err - } - - var response swarm.Service - rdr := bytes.NewReader(body) - err = json.NewDecoder(rdr).Decode(&response) - return response, body, err -} diff --git a/vendor/github.com/docker/docker/client/service_list.go b/vendor/github.com/docker/docker/client/service_list.go deleted file mode 100644 index c29e6d40..00000000 --- a/vendor/github.com/docker/docker/client/service_list.go +++ /dev/null @@ -1,35 +0,0 @@ -package client - -import ( - "encoding/json" - "net/url" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/filters" - "github.com/docker/docker/api/types/swarm" - "golang.org/x/net/context" -) - -// ServiceList returns the list of services. -func (cli *Client) ServiceList(ctx context.Context, options types.ServiceListOptions) ([]swarm.Service, error) { - query := url.Values{} - - if options.Filters.Len() > 0 { - filterJSON, err := filters.ToParam(options.Filters) - if err != nil { - return nil, err - } - - query.Set("filters", filterJSON) - } - - resp, err := cli.get(ctx, "/services", query, nil) - if err != nil { - return nil, err - } - - var services []swarm.Service - err = json.NewDecoder(resp.body).Decode(&services) - ensureReaderClosed(resp) - return services, err -} diff --git a/vendor/github.com/docker/docker/client/service_logs.go b/vendor/github.com/docker/docker/client/service_logs.go deleted file mode 100644 index 24384e3e..00000000 --- a/vendor/github.com/docker/docker/client/service_logs.go +++ /dev/null @@ -1,52 +0,0 @@ -package client - -import ( - "io" - "net/url" - "time" - - "golang.org/x/net/context" - - "github.com/docker/docker/api/types" - timetypes "github.com/docker/docker/api/types/time" -) - -// ServiceLogs returns the logs generated by a service in an io.ReadCloser. -// It's up to the caller to close the stream. -func (cli *Client) ServiceLogs(ctx context.Context, serviceID string, options types.ContainerLogsOptions) (io.ReadCloser, error) { - query := url.Values{} - if options.ShowStdout { - query.Set("stdout", "1") - } - - if options.ShowStderr { - query.Set("stderr", "1") - } - - if options.Since != "" { - ts, err := timetypes.GetTimestamp(options.Since, time.Now()) - if err != nil { - return nil, err - } - query.Set("since", ts) - } - - if options.Timestamps { - query.Set("timestamps", "1") - } - - if options.Details { - query.Set("details", "1") - } - - if options.Follow { - query.Set("follow", "1") - } - query.Set("tail", options.Tail) - - resp, err := cli.get(ctx, "/services/"+serviceID+"/logs", query, nil) - if err != nil { - return nil, err - } - return resp.body, nil -} diff --git a/vendor/github.com/docker/docker/client/service_remove.go b/vendor/github.com/docker/docker/client/service_remove.go deleted file mode 100644 index a9331f92..00000000 --- a/vendor/github.com/docker/docker/client/service_remove.go +++ /dev/null @@ -1,10 +0,0 @@ -package client - -import "golang.org/x/net/context" - -// ServiceRemove kills and removes a service. -func (cli *Client) ServiceRemove(ctx context.Context, serviceID string) error { - resp, err := cli.delete(ctx, "/services/"+serviceID, nil, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/service_update.go b/vendor/github.com/docker/docker/client/service_update.go deleted file mode 100644 index afa94d47..00000000 --- a/vendor/github.com/docker/docker/client/service_update.go +++ /dev/null @@ -1,41 +0,0 @@ -package client - -import ( - "encoding/json" - "net/url" - "strconv" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/swarm" - "golang.org/x/net/context" -) - -// ServiceUpdate updates a Service. -func (cli *Client) ServiceUpdate(ctx context.Context, serviceID string, version swarm.Version, service swarm.ServiceSpec, options types.ServiceUpdateOptions) (types.ServiceUpdateResponse, error) { - var ( - headers map[string][]string - query = url.Values{} - ) - - if options.EncodedRegistryAuth != "" { - headers = map[string][]string{ - "X-Registry-Auth": {options.EncodedRegistryAuth}, - } - } - - if options.RegistryAuthFrom != "" { - query.Set("registryAuthFrom", options.RegistryAuthFrom) - } - - query.Set("version", strconv.FormatUint(version.Index, 10)) - - var response types.ServiceUpdateResponse - resp, err := cli.post(ctx, "/services/"+serviceID+"/update", query, service, headers) - if err != nil { - return response, err - } - - err = json.NewDecoder(resp.body).Decode(&response) - ensureReaderClosed(resp) - return response, err -} diff --git a/vendor/github.com/docker/docker/client/swarm_get_unlock_key.go b/vendor/github.com/docker/docker/client/swarm_get_unlock_key.go deleted file mode 100644 index be28d326..00000000 --- a/vendor/github.com/docker/docker/client/swarm_get_unlock_key.go +++ /dev/null @@ -1,21 +0,0 @@ -package client - -import ( - "encoding/json" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// SwarmGetUnlockKey retrieves the swarm's unlock key. -func (cli *Client) SwarmGetUnlockKey(ctx context.Context) (types.SwarmUnlockKeyResponse, error) { - serverResp, err := cli.get(ctx, "/swarm/unlockkey", nil, nil) - if err != nil { - return types.SwarmUnlockKeyResponse{}, err - } - - var response types.SwarmUnlockKeyResponse - err = json.NewDecoder(serverResp.body).Decode(&response) - ensureReaderClosed(serverResp) - return response, err -} diff --git a/vendor/github.com/docker/docker/client/swarm_init.go b/vendor/github.com/docker/docker/client/swarm_init.go deleted file mode 100644 index fd45d066..00000000 --- a/vendor/github.com/docker/docker/client/swarm_init.go +++ /dev/null @@ -1,21 +0,0 @@ -package client - -import ( - "encoding/json" - - "github.com/docker/docker/api/types/swarm" - "golang.org/x/net/context" -) - -// SwarmInit initializes the Swarm. -func (cli *Client) SwarmInit(ctx context.Context, req swarm.InitRequest) (string, error) { - serverResp, err := cli.post(ctx, "/swarm/init", nil, req, nil) - if err != nil { - return "", err - } - - var response string - err = json.NewDecoder(serverResp.body).Decode(&response) - ensureReaderClosed(serverResp) - return response, err -} diff --git a/vendor/github.com/docker/docker/client/swarm_inspect.go b/vendor/github.com/docker/docker/client/swarm_inspect.go deleted file mode 100644 index 6d95cfc0..00000000 --- a/vendor/github.com/docker/docker/client/swarm_inspect.go +++ /dev/null @@ -1,21 +0,0 @@ -package client - -import ( - "encoding/json" - - "github.com/docker/docker/api/types/swarm" - "golang.org/x/net/context" -) - -// SwarmInspect inspects the Swarm. -func (cli *Client) SwarmInspect(ctx context.Context) (swarm.Swarm, error) { - serverResp, err := cli.get(ctx, "/swarm", nil, nil) - if err != nil { - return swarm.Swarm{}, err - } - - var response swarm.Swarm - err = json.NewDecoder(serverResp.body).Decode(&response) - ensureReaderClosed(serverResp) - return response, err -} diff --git a/vendor/github.com/docker/docker/client/swarm_join.go b/vendor/github.com/docker/docker/client/swarm_join.go deleted file mode 100644 index cda99930..00000000 --- a/vendor/github.com/docker/docker/client/swarm_join.go +++ /dev/null @@ -1,13 +0,0 @@ -package client - -import ( - "github.com/docker/docker/api/types/swarm" - "golang.org/x/net/context" -) - -// SwarmJoin joins the Swarm. -func (cli *Client) SwarmJoin(ctx context.Context, req swarm.JoinRequest) error { - resp, err := cli.post(ctx, "/swarm/join", nil, req, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/swarm_leave.go b/vendor/github.com/docker/docker/client/swarm_leave.go deleted file mode 100644 index a4df7321..00000000 --- a/vendor/github.com/docker/docker/client/swarm_leave.go +++ /dev/null @@ -1,18 +0,0 @@ -package client - -import ( - "net/url" - - "golang.org/x/net/context" -) - -// SwarmLeave leaves the Swarm. -func (cli *Client) SwarmLeave(ctx context.Context, force bool) error { - query := url.Values{} - if force { - query.Set("force", "1") - } - resp, err := cli.post(ctx, "/swarm/leave", query, nil, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/swarm_unlock.go b/vendor/github.com/docker/docker/client/swarm_unlock.go deleted file mode 100644 index addfb59f..00000000 --- a/vendor/github.com/docker/docker/client/swarm_unlock.go +++ /dev/null @@ -1,17 +0,0 @@ -package client - -import ( - "github.com/docker/docker/api/types/swarm" - "golang.org/x/net/context" -) - -// SwarmUnlock unlockes locked swarm. -func (cli *Client) SwarmUnlock(ctx context.Context, req swarm.UnlockRequest) error { - serverResp, err := cli.post(ctx, "/swarm/unlock", nil, req, nil) - if err != nil { - return err - } - - ensureReaderClosed(serverResp) - return err -} diff --git a/vendor/github.com/docker/docker/client/swarm_update.go b/vendor/github.com/docker/docker/client/swarm_update.go deleted file mode 100644 index cc8eeb65..00000000 --- a/vendor/github.com/docker/docker/client/swarm_update.go +++ /dev/null @@ -1,22 +0,0 @@ -package client - -import ( - "fmt" - "net/url" - "strconv" - - "github.com/docker/docker/api/types/swarm" - "golang.org/x/net/context" -) - -// SwarmUpdate updates the Swarm. -func (cli *Client) SwarmUpdate(ctx context.Context, version swarm.Version, swarm swarm.Spec, flags swarm.UpdateFlags) error { - query := url.Values{} - query.Set("version", strconv.FormatUint(version.Index, 10)) - query.Set("rotateWorkerToken", fmt.Sprintf("%v", flags.RotateWorkerToken)) - query.Set("rotateManagerToken", fmt.Sprintf("%v", flags.RotateManagerToken)) - query.Set("rotateManagerUnlockKey", fmt.Sprintf("%v", flags.RotateManagerUnlockKey)) - resp, err := cli.post(ctx, "/swarm/update", query, swarm, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/client/task_inspect.go b/vendor/github.com/docker/docker/client/task_inspect.go deleted file mode 100644 index bc8058fc..00000000 --- a/vendor/github.com/docker/docker/client/task_inspect.go +++ /dev/null @@ -1,34 +0,0 @@ -package client - -import ( - "bytes" - "encoding/json" - "io/ioutil" - "net/http" - - "github.com/docker/docker/api/types/swarm" - - "golang.org/x/net/context" -) - -// TaskInspectWithRaw returns the task information and its raw representation.. -func (cli *Client) TaskInspectWithRaw(ctx context.Context, taskID string) (swarm.Task, []byte, error) { - serverResp, err := cli.get(ctx, "/tasks/"+taskID, nil, nil) - if err != nil { - if serverResp.statusCode == http.StatusNotFound { - return swarm.Task{}, nil, taskNotFoundError{taskID} - } - return swarm.Task{}, nil, err - } - defer ensureReaderClosed(serverResp) - - body, err := ioutil.ReadAll(serverResp.body) - if err != nil { - return swarm.Task{}, nil, err - } - - var response swarm.Task - rdr := bytes.NewReader(body) - err = json.NewDecoder(rdr).Decode(&response) - return response, body, err -} diff --git a/vendor/github.com/docker/docker/client/task_list.go b/vendor/github.com/docker/docker/client/task_list.go deleted file mode 100644 index 66324da9..00000000 --- a/vendor/github.com/docker/docker/client/task_list.go +++ /dev/null @@ -1,35 +0,0 @@ -package client - -import ( - "encoding/json" - "net/url" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/filters" - "github.com/docker/docker/api/types/swarm" - "golang.org/x/net/context" -) - -// TaskList returns the list of tasks. -func (cli *Client) TaskList(ctx context.Context, options types.TaskListOptions) ([]swarm.Task, error) { - query := url.Values{} - - if options.Filters.Len() > 0 { - filterJSON, err := filters.ToParam(options.Filters) - if err != nil { - return nil, err - } - - query.Set("filters", filterJSON) - } - - resp, err := cli.get(ctx, "/tasks", query, nil) - if err != nil { - return nil, err - } - - var tasks []swarm.Task - err = json.NewDecoder(resp.body).Decode(&tasks) - ensureReaderClosed(resp) - return tasks, err -} diff --git a/vendor/github.com/docker/docker/client/transport.go b/vendor/github.com/docker/docker/client/transport.go deleted file mode 100644 index f04e6016..00000000 --- a/vendor/github.com/docker/docker/client/transport.go +++ /dev/null @@ -1,28 +0,0 @@ -package client - -import ( - "crypto/tls" - "errors" - "net/http" -) - -var errTLSConfigUnavailable = errors.New("TLSConfig unavailable") - -// transportFunc allows us to inject a mock transport for testing. We define it -// here so we can detect the tlsconfig and return nil for only this type. -type transportFunc func(*http.Request) (*http.Response, error) - -func (tf transportFunc) RoundTrip(req *http.Request) (*http.Response, error) { - return tf(req) -} - -// resolveTLSConfig attempts to resolve the tls configuration from the -// RoundTripper. -func resolveTLSConfig(transport http.RoundTripper) *tls.Config { - switch tr := transport.(type) { - case *http.Transport: - return tr.TLSClientConfig - default: - return nil - } -} diff --git a/vendor/github.com/docker/docker/client/utils.go b/vendor/github.com/docker/docker/client/utils.go deleted file mode 100644 index 23d520ec..00000000 --- a/vendor/github.com/docker/docker/client/utils.go +++ /dev/null @@ -1,33 +0,0 @@ -package client - -import ( - "github.com/docker/docker/api/types/filters" - "net/url" - "regexp" -) - -var headerRegexp = regexp.MustCompile(`\ADocker/.+\s\((.+)\)\z`) - -// getDockerOS returns the operating system based on the server header from the daemon. -func getDockerOS(serverHeader string) string { - var osType string - matches := headerRegexp.FindStringSubmatch(serverHeader) - if len(matches) > 0 { - osType = matches[1] - } - return osType -} - -// getFiltersQuery returns a url query with "filters" query term, based on the -// filters provided. -func getFiltersQuery(f filters.Args) (url.Values, error) { - query := url.Values{} - if f.Len() > 0 { - filterJSON, err := filters.ToParam(f) - if err != nil { - return query, err - } - query.Set("filters", filterJSON) - } - return query, nil -} diff --git a/vendor/github.com/docker/docker/client/version.go b/vendor/github.com/docker/docker/client/version.go deleted file mode 100644 index 933ceb4a..00000000 --- a/vendor/github.com/docker/docker/client/version.go +++ /dev/null @@ -1,21 +0,0 @@ -package client - -import ( - "encoding/json" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// ServerVersion returns information of the docker client and server host. -func (cli *Client) ServerVersion(ctx context.Context) (types.Version, error) { - resp, err := cli.get(ctx, "/version", nil, nil) - if err != nil { - return types.Version{}, err - } - - var server types.Version - err = json.NewDecoder(resp.body).Decode(&server) - ensureReaderClosed(resp) - return server, err -} diff --git a/vendor/github.com/docker/docker/client/volume_create.go b/vendor/github.com/docker/docker/client/volume_create.go deleted file mode 100644 index 9620c87c..00000000 --- a/vendor/github.com/docker/docker/client/volume_create.go +++ /dev/null @@ -1,21 +0,0 @@ -package client - -import ( - "encoding/json" - - "github.com/docker/docker/api/types" - volumetypes "github.com/docker/docker/api/types/volume" - "golang.org/x/net/context" -) - -// VolumeCreate creates a volume in the docker host. -func (cli *Client) VolumeCreate(ctx context.Context, options volumetypes.VolumesCreateBody) (types.Volume, error) { - var volume types.Volume - resp, err := cli.post(ctx, "/volumes/create", nil, options, nil) - if err != nil { - return volume, err - } - err = json.NewDecoder(resp.body).Decode(&volume) - ensureReaderClosed(resp) - return volume, err -} diff --git a/vendor/github.com/docker/docker/client/volume_inspect.go b/vendor/github.com/docker/docker/client/volume_inspect.go deleted file mode 100644 index 3860e9b2..00000000 --- a/vendor/github.com/docker/docker/client/volume_inspect.go +++ /dev/null @@ -1,38 +0,0 @@ -package client - -import ( - "bytes" - "encoding/json" - "io/ioutil" - "net/http" - - "github.com/docker/docker/api/types" - "golang.org/x/net/context" -) - -// VolumeInspect returns the information about a specific volume in the docker host. -func (cli *Client) VolumeInspect(ctx context.Context, volumeID string) (types.Volume, error) { - volume, _, err := cli.VolumeInspectWithRaw(ctx, volumeID) - return volume, err -} - -// VolumeInspectWithRaw returns the information about a specific volume in the docker host and its raw representation -func (cli *Client) VolumeInspectWithRaw(ctx context.Context, volumeID string) (types.Volume, []byte, error) { - var volume types.Volume - resp, err := cli.get(ctx, "/volumes/"+volumeID, nil, nil) - if err != nil { - if resp.statusCode == http.StatusNotFound { - return volume, nil, volumeNotFoundError{volumeID} - } - return volume, nil, err - } - defer ensureReaderClosed(resp) - - body, err := ioutil.ReadAll(resp.body) - if err != nil { - return volume, nil, err - } - rdr := bytes.NewReader(body) - err = json.NewDecoder(rdr).Decode(&volume) - return volume, body, err -} diff --git a/vendor/github.com/docker/docker/client/volume_list.go b/vendor/github.com/docker/docker/client/volume_list.go deleted file mode 100644 index 32247ce1..00000000 --- a/vendor/github.com/docker/docker/client/volume_list.go +++ /dev/null @@ -1,32 +0,0 @@ -package client - -import ( - "encoding/json" - "net/url" - - "github.com/docker/docker/api/types/filters" - volumetypes "github.com/docker/docker/api/types/volume" - "golang.org/x/net/context" -) - -// VolumeList returns the volumes configured in the docker host. -func (cli *Client) VolumeList(ctx context.Context, filter filters.Args) (volumetypes.VolumesListOKBody, error) { - var volumes volumetypes.VolumesListOKBody - query := url.Values{} - - if filter.Len() > 0 { - filterJSON, err := filters.ToParamWithVersion(cli.version, filter) - if err != nil { - return volumes, err - } - query.Set("filters", filterJSON) - } - resp, err := cli.get(ctx, "/volumes", query, nil) - if err != nil { - return volumes, err - } - - err = json.NewDecoder(resp.body).Decode(&volumes) - ensureReaderClosed(resp) - return volumes, err -} diff --git a/vendor/github.com/docker/docker/client/volume_prune.go b/vendor/github.com/docker/docker/client/volume_prune.go deleted file mode 100644 index a07e4ce6..00000000 --- a/vendor/github.com/docker/docker/client/volume_prune.go +++ /dev/null @@ -1,36 +0,0 @@ -package client - -import ( - "encoding/json" - "fmt" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/api/types/filters" - "golang.org/x/net/context" -) - -// VolumesPrune requests the daemon to delete unused data -func (cli *Client) VolumesPrune(ctx context.Context, pruneFilters filters.Args) (types.VolumesPruneReport, error) { - var report types.VolumesPruneReport - - if err := cli.NewVersionError("1.25", "volume prune"); err != nil { - return report, err - } - - query, err := getFiltersQuery(pruneFilters) - if err != nil { - return report, err - } - - serverResp, err := cli.post(ctx, "/volumes/prune", query, nil, nil) - if err != nil { - return report, err - } - defer ensureReaderClosed(serverResp) - - if err := json.NewDecoder(serverResp.body).Decode(&report); err != nil { - return report, fmt.Errorf("Error retrieving disk usage: %v", err) - } - - return report, nil -} diff --git a/vendor/github.com/docker/docker/client/volume_remove.go b/vendor/github.com/docker/docker/client/volume_remove.go deleted file mode 100644 index 6c26575b..00000000 --- a/vendor/github.com/docker/docker/client/volume_remove.go +++ /dev/null @@ -1,21 +0,0 @@ -package client - -import ( - "net/url" - - "github.com/docker/docker/api/types/versions" - "golang.org/x/net/context" -) - -// VolumeRemove removes a volume from the docker host. -func (cli *Client) VolumeRemove(ctx context.Context, volumeID string, force bool) error { - query := url.Values{} - if versions.GreaterThanOrEqualTo(cli.version, "1.25") { - if force { - query.Set("force", "1") - } - } - resp, err := cli.delete(ctx, "/volumes/"+volumeID, query, nil) - ensureReaderClosed(resp) - return err -} diff --git a/vendor/github.com/docker/docker/contrib/selinux-fedora-24/docker-engine-selinux/LICENSE b/vendor/github.com/docker/docker/contrib/selinux-fedora-24/docker-engine-selinux/LICENSE deleted file mode 100644 index d511905c..00000000 --- a/vendor/github.com/docker/docker/contrib/selinux-fedora-24/docker-engine-selinux/LICENSE +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/vendor/github.com/docker/docker/contrib/selinux-oraclelinux-7/docker-engine-selinux/LICENSE b/vendor/github.com/docker/docker/contrib/selinux-oraclelinux-7/docker-engine-selinux/LICENSE deleted file mode 100644 index d511905c..00000000 --- a/vendor/github.com/docker/docker/contrib/selinux-oraclelinux-7/docker-engine-selinux/LICENSE +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/vendor/github.com/docker/docker/contrib/selinux/docker-engine-selinux/LICENSE b/vendor/github.com/docker/docker/contrib/selinux/docker-engine-selinux/LICENSE deleted file mode 100644 index 5b6e7c66..00000000 --- a/vendor/github.com/docker/docker/contrib/selinux/docker-engine-selinux/LICENSE +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/vendor/github.com/docker/docker/contrib/syntax/vim/LICENSE b/vendor/github.com/docker/docker/contrib/syntax/vim/LICENSE deleted file mode 100644 index e67cdabd..00000000 --- a/vendor/github.com/docker/docker/contrib/syntax/vim/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2013 Honza Pokorny -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/docker/docker/docs/static_files/contributors.png b/vendor/github.com/docker/docker/docs/static_files/contributors.png deleted file mode 100644 index 63c0a0c09b58bce2e1ade867760a937612934202..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23100 zcmb@OV{j(E_x888ZEbB^Tbp;=t!>=3ZQHint!;a2+qU)J@BCgqZ=W|wCYelTGH1?Q z`J8JKt|%{o0E-Lzo_Y4dhY>#tUQd@oOt3`hoOL|BKcJqN3Vxy$AhV?ax|X zwP7_xdmcs=u4=&I4-7>PVT51Et0V?6adF`Fly>RguBKa_?u?$lQ0phh>{!;bJF?oY zC)U*RkjI zsZ{9ymFQPP=Ffni?-C9P+OC9;+m(1`#sifR2o?cG#SMq<7^FFga@MBPTZc}}8{OtP z!CXnufoQzjhXU6pDu?FO?q?N~x)gG+s5_)nwFPTwBYb7~CibK72sE%1)SrJd^${!^ zEHw&Dtkf^i4vaU^uU^}gy=)4@H#0a?oWg*dF~t!rx~8uPt`)MO;*-1xScpDwk8Yd6 zV|oWAE&v<#MZbeL_k~-u+`8|Wmvs+s;S27t7f}( zmXlHcCaBX3IF<@+Er8_&TT#hEUm$9AWJhM+a2DG>$2af5AN|C9xfYFRFuLL?G1+^h z)!T!@8{JnMuGS?na}ca1a>7RB3N7|6Ju30;Ef@hw{DK01K4-F7z?2a1d z6xYB&;G|Ie<*=I5*<4$#T&O(X^Lx-a9hgg%5-@!cNcW>GOGntHUgUcesfkwoDU2}( zp^XvJc&>8m=-3u88Wgay@j*@{{4f45)4=9Jiy38dDa1naT<3nu?&eE&0d1Rn`W{JW z+U8LtqZPyYp%!)zg2B{3Lbkcu{ZEP<^T>cg)(%UgkghgLTC7~CpI^-|9klpVyAWH7 zHV%sv1WpJwWSw3XfkAq0r09b)a@xX9bKHO9xrn_r-#E&xkbhxq3~^b?MMfTMrD`?h zS1|01CL;=KT9+@O+wU!YZtx6RE#mF=ft=3IwPZU@AV(b-C>&!>dN-kzGwftdTF&rd zV2HwHnX$g0Btk=EJ0UuWB9?h;sVo?F6sphY7i^nLaqx;0#|-1_NIN znQ=;!ID#{lTECe0DwM(&vRwJD*)Gz$_3@es`+CpqM7Q%IYfT1VZ34@S>|}^$zHlkX zqF8IhE*z}@E5)`|)vYmMV8Fuuwl#g)M;dnrznCsx^)FDd&2BGw3%jIv9)+lZGfX0) zYXR{+(nD1^wvq>61Pi@=cYUqu1fPu({)DXZT}E*gsEJb65~g}4&2#wpn~EreB`Aiq zg7Pbi@B7eVz2$nQVzSKlXewM|_q0II6N#6^m%zv+)CQ#e{aek6h^j*oSezfg@@ES8MT#Kt;stNsM)7<|y0gZ}3|BfisAPKfpssv+PnM%1VQY)$rhkVcvBn)CNqo=Dw6JxNoo5 z+?S)IhN;I!PR9W}TV0%Cg%P|=Rwc*vuJcWXX}&i%Q7k8eY_YQNJh(%Oe)&`@<6og9 zh)NBcA`1moGJ-+ovIx@i7-yFFK0~yQnAM8Sr9^6XuoX!AbC?P$q2~6iiAfl=nAEpt ztl<$HhP=f;xkH2R(?;rl($kw#&`v9rb%-xrT#kQOtTDMAWxbBS4HQeav)Z{pn`{*f zNzch%el?n$o;f}o{1b;5TUzc)DubRG z_P6s%V$>GskUzg(#JC12ZBkjI>s2sl+{Py{-jh`1@wQ-7m7=K;DQA=*epw=LFrIgt zbYj&O@gA1R^a2EOt0z3ZbP);;o)nTj2r^hI#QW~6(^`bRt$iy zl()J$C_Q(fa_hBYvjNUJAg)_uN(5Yc^KwcJf^P4KI#lO(yt;Dt%5_C^SN+!I$*8R( z9M?!Cjh>#_`&aK}=msRvaedcGO2XFZhr>Gl8X2nHL0P#*@kV6UApxH+v_8;{N_M0Pl$r%yaDSqn6uqqIJBFa=5ojh-~A-^ zPmeoEHRJI_JUY^dNhY?vAL@v^rHqsPz1_@V2OKVYs(b?9_I#N5q3U0Chzi|5KU0n> zRmfWd!I0N3rM@IH1c^x0U4q4o!Kk0L38x(yTR!)X$*8xmmY-}#7eIVJZkfXzV88`x z!$Al&+Ttx~wK}v8dyHMT_ubr=!e}@<74}62y?&~OkaF>|qt=A81dXQ63s+)pM>@<@++StGdv_h{M{^*6(4wSA?L&`h(vdvy=jjQhB$s3~ob z3Y`hzC%|P0cDQR_1}PGC$1c0J>5p^z_2l~T?oQ@{K_oKU9b&I1Oyd<(gP?o$^i(oi z9e5d7eY~#v%EB)Gf-*+X+6%$qZ+Vc+9vrd(yTQ-(`=Y7~>G&eQq3jTPK z?+SNz?L*%+JQaLZ}9TlRVYrGKEHC-veo<>48F+QB1OX_b-y1 ziFZCun;tAP&7Y0IJMx=&mUN}<`z*`t?N2aY?vk(MCdW=@(=uNkl~T80k&p~)NiMJI z_V}mOu+X9?basLL{_S~lM#kyDMHEU41?1ZZYu1zXWaw)kUC>@9r_yDtAL81{(T__n zc9AR&U8ZH_zL$h_w_(L9u3!zbOuU;*atF*!Dy$yc+6jHptGZq~HnX z=%6U+11T1-&TdgZrFtxrFlCioFmWS8XF@Re;1RY?ajff%ePKRjy6$9|i_b(x*Us2^ z%v;$!7$sR!p8U~Ig?=`jzhrjarKGU>D6stp{3uUyIHUa{YK?X8$H#H%cXf^v!fhH` zd1;q$Ji0XkZSz3MoDGoRY4HrVPP`SD6+hx8B*&} z^G~lwg9($F&bIPYuHK!?;+*1Yn|Z8zXgMP~u^^s+)+BZTyV`i5c+jAnK$g?Dnzz)l z!Lp;k+7bS(+$`DHlDO2k6A{&JPK_#sC_IJ<_YZn9bCeXD@>Dj*oU~^Oipd|a)1j@@ zd9c!{Z-pq$UXCd0r8J=tRefM@qn=`aPczYp}J#$p75w76m2L2&@gGH$xJ5 zEeP7RUtVAh)Jbl6Yn%30+Y`!kdZ6Ddopj|r8m7J_48skVI%iLci*%x^Cd%eekU|aJ za?ga`snZG8h>&sMx#noLwhE~?*DOd#a%inn;Nbr3K6u?*D6_Fo4*LmTtgal6xQ1MT z1fvmX5TVixN1@_b0Lk-qCbFQ0`YXFK?N{fmK3&ch^rVcuNO^sxWLHOilBqsU-jY06u2G0xa-3$+X*yVJf zI~UKD!|JODG?=z?b#@%R)2H;3->;EB5UGT%k572IJ9H)t2rW?e7n=(GlVKcew~ zam>#q{bbEX(IZg%qh}Cl4};R|cEX^#^}ujEn3WWj-=VjnVqeB)6cZ?-M$xdb)@29m z_ufV#^-1gmtJ^Qw-f{Jt@Nxv>aC+H%~G^2VgIo?1)MnmtZ} zMI}6!Tkm&Pk-rA1eY&y+84IJ4bhZc&$fWF6YB3!}hD{c%cKVSh;!zxj<{8y5_Os6v6lFp|HsipZZq#_}(K94RQ%wcq;|?*27TE1D)R4-6exbOcEBS z%I}n{D!QE7d_+oy%BWK3SY(;`3NWvBI}f5(w<3~H%jY>PW<++|`1Y_EEYv@E>|FBc zEpBxzGto3zWkt7uWI}nDJG+c}F8AQ~ug--Ojkl2wf@lG&9pol}ZWNM?@aV(v^eFokThdqjox%^trPxl$6CuYbl8lGynbl3QZ z3|b^N@NV8<$P)TW_=*|bTF4X13gK%)i)@oNh%DHS4h4+3@JM!lRU%NkrgpAinJg%p z+qa_h@kz1s%DxKPs!HgY*4N}qhE0iueK!OWx3xwKQP`Z4B4pdmju_3Md8|mk`Cc%- zYa;n2#lX}yK|c7mT#8@1TY&NeK9!hbYV>XS@%g{uU4GEo&kVQS{-E-?Vm3JG^W~1w zC!8Ud-`K}PlWHPN#=i|nsxXIDk8;#r*=#3GY<<$9w%{2$LIH#tu`su(9oJAnqrfw4 z2B31CsqvQR1`u!wcRiVFFJY2QTH7mv&p0FCxRvc&4P`=p7FV06-O#rf*;`riR2Hen z1j%}T=s42*hZN=hN?|AJ&QSw(pTM;uW#)&wuva7y%?`2+T|(M%dx79#Xr6Tf5EQZneX5 z2P@~l%{-;BRK%8)Gnu9s`b?a}EZWeWB*{-=kM>CA7vs}9+IoD&2L|&IVri>A zKNu&oqw$OineM{b%a(ZL!=TMLe44hW;ClSgZtfDu-Ckdh>m0UO)UTQ@Xl*Q$Va9=y zYRJ(y&SXiWT>*wDSF&~!19j1SQE(K74up4it=ZE9J4HVybMXTlaII>#b~^2i^B{4k}n@Vpf23Wh$D#Ya#JXJ1Q_4S^<1( zeBvx#7Lt$S{5mY>4LYSNp-JyPj)f8Nl!!>RiM{r~r><3RNmkoOaBJhV5071mB<0&6 zMBRb=79(1t*sG{m`7#2S)9&iuYS}3(U$hq&`iCd6TSvwqW)3;&U7gCY ztZY44JH#hvo7gqS=3590X!A|b)PoxmJw%j>qRjFM0gpSCK0d`;XEr16jPQ51fx8Pg zHE3**?VgN+8{s;Q_Xwq`q**R6L}YvGV~&d%YEcmsHyvkY zEt;G0xi+_(@Rs;=y-^647=v$D^kx7XO*I#*?Q74^vu1pOSVT&eYe;;Oxm&_%3dS__ zs%gcJ3XFwo2WK^pr~YD5*6G0vbu;}Ccv>sPJ%&hyooMt)Hz$~RQ-kBPU~E=(0nT5- z*v}0Xo%~=(jxL#S-!KUQrk*}dD_O^@{9r2LkwH7E;&WcsY42>R@ErHV8^YC=r?d?y z>*o$s3jBT#2Z3Rk{rANUiw|L$fsL+2%4DGOYUPpKZ!Xq)d}v0d+p#`1{nQz1MVmSn zXbTQX-;S(NfK1E?Wl2z>fVl6y?utRE&}W| zt>AS>Z!PKGCJRwLEs}cqL*YqtkljsW9JNFS#gM8=6{@E6@B^8@6B!9?`;jdeM`S%w z7^M2f#)~)POPrKF@TOaEl^(IqRJ8k?(rQ(%;~Q(pZdR4HzkM*}5A8#O!n%~$3ozAv zSp+E~WuP?AMQIp{h5@4#!J%U9=W6_vmk|rQ*8a)Yg=UXWtl=)X*R))nDbE0{>1sC} zi3b}oQ_gy-p*=7y;~8;*Vsg&o!(K(Tg(5S?F_9x;(dWg+nze~%qYVG1ZQCQ>BVrWm zCgbrp@g}&O_i-eAkQAAU>aoZZ^LGi8+fz|Crw@SDpfkc0VWK?f3xG zVYb*wPj2A$79(=&ksP?KY>3_)MNsFbgoZp(U=hmM+Z-J>}%+69htY7X}bKOmOd1r0d^CYh6 zkBQB&5v1?nR$AD6KH2T(`_;hnHFoIV`AQ~JMXr4&^(BNg4G;8KIVsUIrMGCEUo`x6 zDBTiM=|!;Z|H;4kAs?mR1Cv}yX6P#{-a6G)-w7F}HTsHYE0zx6AZ z!wcPqXUs@YxXSGgBgcMApzWYs{(4;phk|>E#G{#kPjnc&jp8P5dRd#Io%cSDlzlng z{AhE_^Fcf0^47L~W|bhx1W`NADQjZ9_^#>JJqLWyI}W-hkq0E6s__<1CfV(B6ozE( zJLr?-k4))TjV@qH#IO}MH-XI7y14#Ng$jaCb!7|lCfvK)J|dCKLT$lWu_UI}E7S<=H?DX4tYo#>yf;}>4-2VQy4ce1x&>fn_cLn3eO&nO+_?;#i zw3i(aEh-z&FG}jNXpcJU;%eNMLpxwuqSNXSh&yA&BCXUfAl5O1-lUi4G)SO^1AvJ8{+@GSRJ8mE(5q3!94h^DUc zsr=a9_gw?$ad2Y1Y@1POPgkp0oBiG1WTnHx5?6|LX2{D)66f>f*Q3Vti0qrNAay}C zh%T%?SuzH>n4f<2JNj@Wjs3myLa?dyJSMgBp~-2zxiruG5HA*A9SyZ3o746ncVyUB zr9Z2*CPH_g{xc5N=Ya$YwsAI4P-77_@D(ND{awAZNzpRC! z(eUTAy7E#f%{`!3lImU=oT5I-2KlcfRe)kvr*)18JO{+_enyGJRD_@R}L2D0L**u?*Y(60`!x z*<2sS(;}Aop9kT~WKM610cm6BTlwk|U+)g{D~&%Fsa_7j)V9 zo?I!D6`cW;n~ebDKfE{sc?|SEs}5vlp#k}p-i);>Y43kCC8f86fgaowdl#(exa?0o zh;mM=3V@aE?LPTY5VR5d?CZ)Y&I{J5cCqeX&g?_gF^wg&Z)$WD;jO{K9ui@~Hdj^rxlpf z9Eu+P3O8*wP{yh~-`VZhB!;)-!?ezM{Pkr_BHBZ{w@-!UOb)n_)TB0L@!R$q4^>Yg zt;>bDoi{a{o7x`XuVpZjHDA2aLprmWWd^cfhex7inNuk%{;BKUkSPNRtEc zza-iT|4qj1;R2f=m{ty%pat4qAxH1<*`I~r`uXQf{F}ZnzBbL?E6KIDEzbw}X@C#N zQdK%vM`uA8FrT_Nivxp=Zrj&C^?O=byJN0h$xdf%M@MQoomvB}W=kX66ddBUe9fwD zG=Zxh2c-bo4V|&ZKIM9n_)`^Ty5q0Y{YN~TufSD@@_r;b!8MEl1C}aHRpBKE{wkSQ zIh=c10;>R|62RCSfNm0Bdl_HBR>{wi|HTtoJr1wc^QO{l4I2ukOO*7H?i;kX4S{t< zenI9Nbr@Ll1HLM7Ht4ReF#qL6cnM%m2(C;Tv5ykO#EznYgno$G%mvhivr%s5|O;3m_Q=d@j9rT zYC=+-J@Z!C9qD2FHh!8p1Mia)oXnOOdd*t6GCNqwGR4HrC_&H^oZRR-sZgWwTbj=O z!=0~J4*m{FBDybv(RiiULJ8M5fNf!2g8v?bZ9ywSvj^E(?KyeU8p$Pv#OBihHeBq) zWMM6C$^-$WkbF$@6WfF0YWOJteJ?Pwzx{^{VYtxXU5*=%0mBuQ8=O4~|H7anp)cZ$ z0uTYL;eR|;CVIz(@DOTo^{H01+nVI=hAs;DwN^=jbnIcgOo&L};!2Nk`s%D$iVPGF z-3Nh!pIPV&RqHb0$qkHq*0WJgKe|9$%vAx#?8&{GBxOOgn+v9$!DyXFq{9_l3}j&$ z&d&dVqCWKwqHlHG7)>D3`5}eCDySn zn1R>NqJ45w@Wb40!u`1rM)>4RKIuutkTs+!SVgUV+BCcRHQkN{FkVj|Q}5MC3Mh6w zHq@8pA&j~X?ks$7ZG;V$W1NkFy?v_E--yMa(qO^BJ-f7K&pn(Rd3$uAJfnvwb0_wR zLyuKILd9@=@GNM{qZd7Sk-u-9 z8hnG?8;2d;wu~z9aAgbkitRNa%9#yBeR4pCVMhb62fI@{!@pA3E5W?00%W?<-hTeb zXnt3)qF=5{c=xt{7abojDU8~F!9~(O9G!-mPYuQUT>M+?0c<7J0kkeW8M@=vQEew( z3Jk^Ooge`<)yUQmpGz!H$q;p`ONP!rxNL_Lq)f4PIn;yqOnsv6LK4(;LvT2{K9frj zqBc@E=fP>%qJ!Ts7{?Yn?EUC@MxFf87{&VU`;e1_+JXkqJ#_^!$Jz`(KuMcL7A4(R7Tr8loR1EJ1ZJcFSzl1rW%)Y)3T?Hh{Y+D`UZ25Hre|mZ)23 z=Wl5F(bAXYjh_;At^ar)a3P$^*^YQ8^b!ts(*uO9x=(M)8B;j6A{hr~G$o&V`S#Kobn}9sHW#ioMclp98a; z?N6i`F2enDfUyLe6XgzLH1mmH#vs;j-`sffR8soP>rSG!VK=v_O&gI zgI&!CbG+2p&(uogt>UHN#12YvdgE`X)nNc)o6V6+TIQMP3UKQ_JVt1>(J>iPqSw5o z?+EY5cELRrOysYfHWjLEr&{U_Et9 zBS;@k^qwEsaQFI1*C6-l@EV>-A%_bjq|Z;LYt~#;s@{mcg|Mx#-^9i-?KpktZel32 z(5-QS4&VA|)h3GOf{tlZf08is>8S8^?q&-79$^JC!wYKoe{aLtf*jup$hXJNT-thq z)(Dq%Ph&1*{?k|6?SDPU3g3AawK-cX`OAEK_h_JWx)3@`8E8TcN3;gtaqd>)I9R%=94AHMg1-R3lq_ItzhtX zs@2XwqrcU50Cld9()E{=98uN>?4*<3$=&Jt*=I#M{O7hq(}lm5;4h6OgNF|nI1l_6 zSOZEV!`>JL)jmp#pdugA2g`hftMd`HHl+U?F9Zo-Bgz|7Zx>ARx1!(~lYC(WLQmOR zz40Ifkwe8u8-W_PQj1`Y8+I%pQA%r z*ERO#JtRSRZ22YC1jO9e%2sC4vfi;DCsdJw%r=DyR^Cn<`&m`Fj3*l7`Td4y?-+Zs z6UgzNDDO6sj5vhRNUj5?(K9LWv)2Dk({U7ftADVd{InqJrfH}Qm@Mu(yiXBL8bbyw z?__zMDR%Js2D(_v{yv!2Se(Trd>3>SAXH9Jird_GG0ln#^TSz6Tr+5>(N( zG*L>oEKNiITf^bYBsXMoHrI>vMap2IWREM7f_v5aP7n-1SP}|c-T68l-{5b6oZQUb zf#rC0JH@iUu0yFsgt_gUYcWz{k;3Q_5t z>1{sQXG^SX|G3ENOGAg!obXnMX3JO`P61J)J7U5ziV0`Dt9m&jYaHDMJ)zX3JP%2_W^a*-9oD`JjAwe1U9A|N? zw4O7fOfeGURurS}SI&HQ6@p0Qie-4a*@)Vu-C`r>u5{_b4h<+M4v+{Q?{-OAgmi}~ zLkWK=o68b1DM-A};8tm0s9JlmoRkb`vccCm@+a`?|p2m6%3tek1)wAv zSa1w+Vpxe}Ss~B-lFPh#DiUB|{D@SNZW_^wTL~l*mbv>~>f>l!pxaULpKEw=)qg$Nk9XOZYa0G2t^x+V<4bVRsZwaH)l>g+ zt9F(fdeUuY&9`#q67O4N#lp&p4o0I`h;h~8nD%Y!VOXH11nFhZNF(N2!gf2Ki@*^O zc!w+}zr?24dgV{{jW4j06!46QsxD8>kiKy|T2coVzKR{z8^&;gdKBv?RI~VNRYNda zd)o=b)fVYba=_)__Zg#v!mI%ov5u1dFhn?K3pV+x7}eJWa{bmy%>Hz*yG125JBl{T z0y4rsW1Dfw12$(}+o64>v&Oimt))6>O{WYr!WT){=t?B(hyAnkc2uIh(QKd<&(RY> zNdREH$S)4bcXCL_llWl)#TbELpD;y}%(Hwz)JO`&y7M}*jp$IMR>^)-x~3y?#kQP^ z$c3J+)0Pssgf7!`$Mk$@d8#qM*4rFvy%N+&Q#yiMv#F4d3BQkf4N_@4!((sVyXLA8@w)$&@DoMIpDvLKu>k@E ze2;ItOR)VYr@!35`h2SzmE0*5wMysn z(fd+?#wH#rw-_Quw!}dztCp^KPa$TXl$x4!!8kdyIb`7Z2);G;*s!$k2hB1wRa_VD zLZO*yZb{h|?l-ZkHYx|6%csKFL<>S$eM`b+@*Jo~=DBkS9<~utwZeQN3_>#6ibDBh z(U32@O#U79W_03WUP`mW$8Esvj7=er+iRY;>&r?58Ko#pD>E$Xr?&r1Z|5L|iPvYrRTT=WVsg(!euCvC6uvh>(|SH7tMKxFw@ro?p4Rw4=%LsS5< zKo~laFV)s)e+gu{CqsplvDW8X*XChM5EU@t+mm^5Mbh>6UhEIpQ@A*wiD+`Q2-z|S zONfxkB1I4RrBaaeZI2lJ_M0eo*GU!qV(*VJ--mKto&X2g;VD%+EyP{L0Ndhm$N2)@ zI2@>&i&&htvvfk*6q63hz`!xspc-rkJaSlUroULnDQqaKjpBd8hZ zR&>)cMb4Y$Q`5jmi$wFrQsskEI_XfX4Xx1V<-l=$%PRg$K4YQfca@`wZ)KY>t#7zR z+qI!!jbr65+(blavJ|Iuo~_|TQP%kzq7aBXNAJ5cK&)j8siLY`$SR6)f!VbX*~3f7 zgeWP*E|Kk$?fP}XXAkqwHuDeL?c^1`pF;^{`8XPaB8pTIkc0U}??2l2Bms?ki);ul zl+iT($hNQ_uns6rS6qT_rQA|Kd&plh=u(JbTSX8?r4{BJ@R4^ZGQEt&TElM&IPxvc zkK3^PDYTe5Q}q)cqDlYxq$6|)$m+}`AT1@t19>p$o)BBro?_d&5We2LJ-m z3@9|Sp!rdJ9C~I0qG!sA;JC0Td3JRPAT4QnsQAxrb}m34BH@SEleq0|Q$%CIP!sU3 zP#yg1_u(w9Ltmqy4wK$@Uqw>)w<#I+xkOlR!}9dv#%P{}Jajf$ zkjF|z9$Y*37$OMF1;1AeSQL|b z{1V`=?F*gk=fXn$>uMDvErrzMnKEm?^LAahMRhGzZCQ8hwx4=sR`(T+vBZ?-iA{bD zooqvt>;Tiq+6$u+d4@ZInI{80A}?rz9l?SIH)2ny_-7Sb2N~U`OGzqP5EL2a$287qs^)Tk6Pign6p&L3r?iPUgx7>h)9v&@~SOPb{-r0MD2 zyi1~1dG5c=A9oFa%E9hJ70O*dh8>=<$eQZ(@rIlIk5gqD!2G7gPh(pDfc$s%E14!j zV=q|=9U8IYXHRl&Ag0+-iN5C8$E@NSq{tLxNJ_<*klrU z&%PYkh3%PX1`%*lkJcfa5`eA}6IbuGE-`j(HS+d7-4CME>zu-=Bf{J9nw-Xky*a6+ z-frjGlhPmUkSBxmT#Sok?0-t%QxZDoQM=9^OyybOEH4oiFT4OH}G0 zW|fi!1Wk&~2xn~VaLdqPMJ?(fEWE$L?kDvIsTWv#@5l^M_l13M1coUO8J@WrFF*~} ziWP<YSL&H4` zY;+h5Gz`J+{xMb=EQhZz_Nld(z-{WyIlD$S0l&)lKc*NqmOL7K1?5WYv8|>t9-$2= zJSyqL(K!0PS#loR(<@e?JoqmVW@TEi@ijcYp51_dv68EwV)x>l$dUP*?=p_#C(-dW zW+6n1D`{nI?efj${n?}ZpfoCE?WM0VN2rHoo zV)$feiB2O2&55bEm%i#rGIgC#SvLxp-(x z(3rn7h*CL3`eXe-UqPYb^2!CO5rTs1ngpv)ZC{2OtC{TZK2))j1}aZYcxM9MHEA%K znw;~j%t#WRT1`xK#63Kg5+qu&^^o(Lq=QnMqC@D3FwkIbT}m7BtA|k{l~^238-{nC z=D&w9>hz&h!ZS{Z$_X^B$r_F)%_V&?ieS&O5WDPzusU4FPymx4-j~B8MHCIcTDlmz zoE=L#@gS+g|I2{Yb0 z!!*+l7rs=i@5=Pb6HNiYR!zvcW`HybsPvPvBw~s*iF=);Qj+Z(r!?TV8&2LNKQj*v}$m(Blk*sx4?U4jJAG*7c;0tZh4+Nkv>KUs_#>M zynwKqsv`Tq+2zi*hGv)l(_+g0Kc<=GpV)*!aet}vAnFHugLstX!B10$$U^O)DOW1ntiSk|P0Jp4= zbq5lPxLxa^BWU*>Dc+GIETYL?}JzTo0TzpJGW^&JuRyKiPM=MQjNOf8|6KC3uevYbXv{B+CJ&+%ab}zG91B`AQ z@m-9XDp>rrXCw4OAZR))ggBjWiSLSdj`2ib=-tl@f8R})F>Dxr2;#wkaEDXEx%lmOH z5&H8~CAtDG>y?w&BRTH%0~Nc1^>O2MmDhKjhXPO07YMAE@;o~DQ2hk2FIIiE!00KF zR(yU@MZ(QtWlU)QWkn$Y0ZfN<$h1>>8fSnQRp?Bh`yKYCS<)gt@K3XM6Nom=&cS`@lrzBt3}9YIYsUE(7NkU)jgc#&y+gs)5*$D(>e#e;A$DbNj?Mc68a=3y{JMEPkYd(+8Zt;6>Uq zd_3>Bf9v^Qtd^V}{Y-MP`=!yB7RX-R-R`Cmx0Qg!dex|^!u;T%p=xr|Gp8}5{Ta+*?937 z;X{&jYf)|;yR*&}=#6`$?Fw3VuSCir4w_}pM9c1<68VFYJJml5rZAE zx}^{)x&s6Z0UhN@-Rk8i(9Te86PiarGUl>G?}sO@j4~}qx-`G=-tB$#mYbGV-jkue z{0|4qOsIj+#}y`c2odKwRfZ2oC$aVBPS)feYRr%j@1LPP<-V~m*ROxnXqtqF!Y&iO zlCKrt0TR|5+qfMR&&LQJt?6h8zf&EHX?9*P&Imdf-s>Z$w#%@GJr7V!8a0;Md8zsw z4|TIErPwz{FO;Hu%t;@f_qk_widh?WO1VD!yngw2yx8|RC_W!w3N5DNhn2@4h9>1o^SqS8rFL|ybgPDlmv$-+SFM& zFXM%s^oT-tGNSa0vC#wK_GL1`E0YdrhI)DPm%nlIZa-Ni-hKw*~C4QMvrB z4Xxs*%gvPiM=(<)qX^f=1Gd%^7aZTu%>*_zhHTIcS^&fNWqoXEtuO)i42qf61dG%FEM z5(B^EX(RN)*ElYUhn+=tlsP4JwX}U&$I}^FoDy%j&Cxe;%v>I=I)D7pls9=Bo1gH7 z1p%ppm7S^wKOy5Y?EM3kV6f=uYD<^9q`mE!lsK!@-?&b+ttmB?4nJ&zYLVLHqYCyI(&J5ZU6o;|9a7$ z&@|e$4lCH-fzy%~OFxh<=&P&FU)UEh5wZJyIO4E4wKl#xjb1tddULA0$%DeZjDSqnXc64h?IR+l<+AFuT@!0~16jU$1qnVNJ2l{~?cc=rf@m$ZR)Q z&W?54av*}TKOti+XOH)^SQ9h6A^CizHG#%VulD zqL|#9^9|Ih;!__MpH}{6d3T?j)*Jjf^m0xi-dXaUHxx`6_`5w{dTCdcI`s%GZEf1= zVU3MRKoFuFDti~Ezuywgx>m6c6`YoSMQCV;_KbukvKWPmsTLYNmCcQ0{lOG|bfnPP zqU*`wFg6J8?94pFmNR1T8wyax(N^;EVv?I%cN1mEGU8rR{=Bj~iX^S$HJ6Gs7ZbV=hF7N#Z_rv`I z=j`+BbM}7rTI(z_G^G}9L9;*Jzt1rru~U!RxDK_@Xi8E(;R$+#Omq&uWbT0`x)B)SDNFZobE(jGY{I3MbVf z3G29FiUEJuwGf84-wtMc>-;KJ(h;<3R2gJVl2Xt{Sp8A(9mr*R@0dtZFUZ2m*UIjj z?}Q)FAA3#md$;dtp~u8_P(7TJJEx|Q>mv!U9<;8hRBVyOK-ruqTM{|U`4dkG?j6U$ zk>#qNoM(d%I46G8F1RYSYNMu#bs!4!uR&m9PsPb8`hHM@{P|NcjJToy-v57 z;+sDM*dk_9-1d!HkDnZFoEMUPVM!oOsMlwiwh7wDT`iV zijIsZE9C85w0gZ2;uMCJqo_k9dc_vDf=ysEc0QA}ac5K4{b3`JKf(+DQuOa=LrS+e z%#i;!R8`z$JN^er)%Rs(6o%+Va{Z}HbKIskJ}u^RK|KSq208c(K(G(X&?Ya~{Pn=E z)qp=%k%(6W!Y_Bc;_lmPYg`9MY7>O(a^6J0|8o6Tb>ENSRe0Zr{>{@4ZMN^dRP6AP z)r0yvtM7tw3wI|>+*NnwdF`L%)m64L5SSR?1{VCW8@z1yWT{NVIp8)GmJVsVYFkS% z|HH2xi%-T?O=@rC0^&Y@gwlVUz3A$ zX~`Yu%gPuE`EoMfD02@jLmoFu(}l037@tv}YoZU$o^?Eur*@^$1_`8YJE^g|(H$5< zV%)+26)W1>0OpsXIWmwZRh00zB!NL$_DKzjxN+WO4R>xLIfzr7WA3lBo{S_|{Nh8> zo?oVuRnTWrV@Uw~c*zY!wyx7RL-SjO`?B2ju&L(LBVj_%^NbSSTHsvutI^&P0MQG2 zQljb0aC>4`d_gHB9S)1s7$eSVYXq@cXl&Ir>`Z9xo*;Csw+Tu5cf6$4rR*vvy|Ih? zdq;7+#{{RV2{A?&?-t`eHg6h9$=F(AKJO)!lcy zfJH3h5^qeo&=UPCFO3DIZo-;Z8%227>ML$sO$gmM*u^~Q!oJVi_3wrAReC}Bnl|)$ zX1umAhXIWp6O5v?l@xE0l91=1iYe7cQE!v8ecoQiEY3LQ>$W$O5(4Q>i@Ky5Ic`PI znx#QANYX#|++L$uv=q*GLTNiOI#Kj{!e^(1VbM~}HC;37r{39z-;d`k(a0M*GmU_? z49%Q4son3B$QS~n1(mX-@LgAJqRf>1Fq+TA$sf&5gi*=-U?j{;#02>f?-f>^Su1y> z>je&+`|_`*N$c3A<9@$mY*w=?->DJf83vBd`q7n3MjUsIj?q1M2aJ3Rj;nf>y^)qP zfcqC3Hy7qB_ANG)78E46T4-KYU|DrIn`qxEU2>*9d7;nJeDMeWV~nq65Bp$`$>5## ziJVgM1xtQxnxPb9f?AJu(_1PkYIpMJKV=fN@xqumf=|cqpb@8fL1G%^S=q^Eph#0f z_E(8mc2(p94+THv9GYtK->qC7;gM*|g#vf$(s?~Q>1VXjF=BzwToizePd@VJ2BXnd z9ilh0j-boqjOCw}nQ+Fxi)s>l#n5cIPK*If3LSR0IQ@~BDa#f7<2}VO?lPat3HeoQ zsZ7;Lc!gj172^aDhc!^Xq$E=wwdU0pKSb1MrZy+1;UHS){nx7LTmLd76UFAf0wi$1-K1I3gsV;TzFQe2CaZBl}}= zhK@#=6eAId{*&4KGmia@S0h~W&}Ygt2QfbKgR~kp?M6SqF|JokTcOHa7+U5i2Aiir`qDu869rQnf61M?>DJ^O_2p&hX^B%KX zVk>65tGT;wUg>IadPCWw~=kd0n2Pyw|DVoJ$5byVld5W5^R;Z^0wIDK+e*pe79w z5{Hq-^5>eO<1Wq?G%b3ppF|ZChA*g9@I(JFcZEi`6D&wi2ZS1^*AwE z45YB^7D*Mk=4w-0E8uG=3J-zm5!XUfCo=v{m21{Bl$qt|CWrEgyAuROdvMoVh07dL5ACs{Q02qj_n`z60qB|aqz1~#3v|tRFPJBqD7(l z3k&JyxAoe($X%8_3#-HpYmzrYY$or}pR?|O7yxsI?OBzUnTlSC%J6J^fijDc?PEcG z&d*#GHFY?TNaT-Mo^3FTYJt+UkpZJ1md}fTo>yso3m%)obrXnrE#)@Y7x z&l_KAwbdJX60TsN>R08OOCdU5%04+eQ3I(xEiOc^@O#*VUl>s`*12b#X>egL-t9m> zB-S({5^R5;h#PAzdm;LpPs)sI_Lv%k<`}pb=0C9{#kFF}f++3@P`nA~2z`Nit^y^> zwCZW{bhKfAb{WKGQ?y*|FgI9&MLzed-csc=+;7j$oH@8b#(~c+2gHDkztPsVJ8vJ} z9SC@SV1gM6N08W<{vn^Y)Vo=XFp8cG-MO(fJa|GS;i0>)F}edknqTxCIi~le&z` zQd8cF*5b=}v6?JYAT6MmJSMF7rhC$MF1b()YU5eg`3O#1Y@iyW-+n{ZT0=m^iQqij zIyw1jMCXdpmF*C|fZrv{EpGp`3{i8QF&&6oXx*AV?2p1En;hwdmxfu|7S<3Mu4yC7 z=IYc`4RazPpoKay#hHmUBWWatU*rAEqI|V>=T8!B^z7|RkdeKOu7ksNMN2a}Kc|C6 z)PQ8vez!Q-kcRD6;rGE=hus}7kwN5he1QOfkx6IvGW-^NM&EsE_R9O75A)RiNgJv$ z9XYYIp$kjdn@HQ0z^hF=Kl}0+KfXe{(AFVuW-j!3m6td*?B7N}F;2$z*`Xmkwr>Kf z4$=u64v0-I#=daLpagTMe)HM7B!>>WL zRZHz>*mNF=mF|%&YUR#EbSt8b!#mgDKoo%-w5mSJbQ&+#g!J_EnMudomZ%g|MrN7dfqjJdaV@VbqH=KJ1 z7b+O(6B4*H#^u{C1A<$IGR}ea5Bt9~O+f$s!dB}FDxz}Y&Tn)txOw%qGVaFv6(WC? zz9bYYa>~YTl53*t1N>AsDVm3z&Cf%uL*)UJ3fV;CQe~*jfNTBn4Phx3xCO_gz?^Of zmIuLuqoS>lU{!8d>kcOk5V~sDurFtf&hBbcM0Z8apPYGtyPP_dRc3h;B%YynF@RAz zTB>}f-`xhR#eNT7SP{HW^g;gQ2Y0^Y(0e8U-_cK4Rb`y3R|OSZ@p986A1O|g`UM0o z?jfe#c_A>u4b3()*LWHWW-*Ud^{n?#9~&^g*tm2Ek^n)vJDp5N@nF< z>2L?b4R@?vtbe@@Wrh)NyR!%3qGx#}0UBxx;>_qy{_~t)_Rpg0K9Jy?K~# zT3?=yiHVujuA}-*D5+k&7l@7o^S7QptbGk$X@`-S5i(cXEo;s|(GSbwM@knTDZWkr zZh$*Ui|pd#=O zE|@5YMVWRJYsFUH6vpSd%GmKf3c1v%-R&P__1&R2s@^F2CRpqRU@~G~v0H+MK3y6hTq3hWN>s2!-|q%| zU$!1=64}({#O2x&XY1~ti>rowsSFZd?$AkH^rt4|xBMNvg!`dT@*%RV*d6_biqQls zxvO~VZym74+@nY*Ng6(hCWjjzO)u~`5K2%lN>GoD!U}GA`{nY3H_X4U`+kPcYn>s& z?nmApS0bPl3XU*Xp?WOXYn74gACB$QMV8ZM3rCCS86I`EXdC zU9QycN3MwLTbXKF1GlRDAA^U-O+_^Fl`m9HEr>aVh^#TWYxan~t_?NtcN(zC9fQtz zFS{H}hlMDU9~#Sz?hH8$6nQlEq!UHPi_n*=*>rtn+0U_0=7iPkD%<^ti5*+xhS%Au zy&dZ%4Q;ML^p<(Lm7L@!a(OJnA_Ileo`F25&A~}wbrrET>#0__=XDjV89f8hKFV(d zVYbEsy#GwXmr|1khD!t<#_gVVhiqT}n{=#MtJ?|zYUrCze|>Jm4g_y@Z`atlT22}d zOrj9ONF{oY3etI2BmshHgN1CcpoWb15_YJx?-~H%PVV3Gjtt&`QGK;=5)i$d)yomt z8amgd{-W@)ZCiHK(2yjR7;Zn;kJY>`2!?off#A!TS<7Pnuc3Sz@M70oB5G?_RE?;a*~61G(Z;T@m*MdZH$snsAp4L{~4&3w<;PFiA7crzYB19cr z@;Y8_r+lcnl_lw}`D77jNudxik=@Nif=+DGslF_}ZE8F*J1zXj{b50k@ZkoQqxKM) zYFyfFuQ{J{i7aZIle?xoptdFl*cw<;{`HM6YTZ3;^GUa7;X}Vk3_hMf<2?xi@G=B< zIE}uu_#>bb%{N(GS^Ybl)@ek#Qg69!fFW58OfqCx)YI$2q=fPln?uhm5>V~El3be3 zF^{@nNS-hra8`^pQb487yra7;r5JG`%)xV@BnDVy1x$Z;G_JhI_gEI_G=GCkm1WUC zw4wXmS5X%bmU&OeSb<>^;7@^cQY#W`nF#I$e=AqN#y*yVH$E4n(v)X~^HM;^T?i11 zqdaje=HB2BP&+?O-fh>c< zc*UoO^hPodZ@zNStNQ*66Y?Y^HX`~`qHa5h7_^LhGSQP#@!F zO|Nh2GxrP5M@|}KsDn|rww{nCVaXpJ{?Mcq8Kbc1`jSnl<;6R37R8f%Dh%VMk(K%< zF9kh^yb+)9L@cVsFIU&4N7NQ1Az2)#LgD+_ z;F6z0MW8{6xN4(r513cm`pFEXYUT6~io>~nTTfx6B}6h%T-k~JdarMdSmb4OVHIx z?_;)Mc)dNOujjiEO12~_ARFtj)4IDEo%3}psBt97ooyYA_v`JKA;0(4FE87_9vMl0 z51PI#TJL*HH1oR#Y?INdDP<6h0m+f2H<4bXyh{e<`t%87Ng1mfZyj@Y6h59TRM1wu zbFjOaJt}a`WfmQ;eAdVxz*;+ce z7p)tTw3YS&(`0OJe~^A=p+~XuO{P8V{wYn4q>R*Q4D~)Q>e$U?-!gRVHAC-X)>N3T z*XZywk~H@k&&>YF^6|mq!`zF1knO@A^S*NA$x_{X<`Td13QKR1txaA_Kau}E-N;UF z}_Nd@KmPd)J@GAAJyW1HH|?$Muvj@6BexRYo5)cd~F`_-spS9-Q)8GVMN1)L*T=voe>uY0Uw~F(xk?{pI&ZfN1;Q6M*|@;*?k38mE43V=eHCWpfwx_C#r znAllw?Q*~E6z81p{_Bque~HKLaDi1Q*3|XZtP#Ea-Ut0w_7PG`VGJklvgd1dIu%@Ub#a?BJX7Q2*Nx2x$mJ1*^ja}|1R)=J4Vtiv8$kotL2sflbO>$xT?hsO zuY+Alx)(6`Z%|>0ptQfJN+lq2Q~l089zy4B)UX4LKEKP>ou21e(zDC+-0;~l@Bh{E j`2XOe{3aXi30VC`rN0&MDDi9u{X#`SL%vehEckx_MeJN* diff --git a/vendor/github.com/docker/docker/hack/generate-authors.sh b/vendor/github.com/docker/docker/hack/generate-authors.sh deleted file mode 100755 index e78a97f9..00000000 --- a/vendor/github.com/docker/docker/hack/generate-authors.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/bash -set -e - -cd "$(dirname "$(readlink -f "$BASH_SOURCE")")/.." - -# see also ".mailmap" for how email addresses and names are deduplicated - -{ - cat <<-'EOH' - # This file lists all individuals having contributed content to the repository. - # For how it is generated, see `hack/generate-authors.sh`. - EOH - echo - git log --format='%aN <%aE>' | LC_ALL=C.UTF-8 sort -uf -} > AUTHORS diff --git a/vendor/github.com/docker/docker/hack/make/.build-deb/docker-engine.docker.default b/vendor/github.com/docker/docker/hack/make/.build-deb/docker-engine.docker.default deleted file mode 120000 index 4278533d..00000000 --- a/vendor/github.com/docker/docker/hack/make/.build-deb/docker-engine.docker.default +++ /dev/null @@ -1 +0,0 @@ -../../../contrib/init/sysvinit-debian/docker.default \ No newline at end of file diff --git a/vendor/github.com/docker/docker/hack/make/.build-deb/docker-engine.docker.init b/vendor/github.com/docker/docker/hack/make/.build-deb/docker-engine.docker.init deleted file mode 120000 index 8cb89d30..00000000 --- a/vendor/github.com/docker/docker/hack/make/.build-deb/docker-engine.docker.init +++ /dev/null @@ -1 +0,0 @@ -../../../contrib/init/sysvinit-debian/docker \ No newline at end of file diff --git a/vendor/github.com/docker/docker/hack/make/.build-deb/docker-engine.docker.upstart b/vendor/github.com/docker/docker/hack/make/.build-deb/docker-engine.docker.upstart deleted file mode 120000 index 7e1b64a3..00000000 --- a/vendor/github.com/docker/docker/hack/make/.build-deb/docker-engine.docker.upstart +++ /dev/null @@ -1 +0,0 @@ -../../../contrib/init/upstart/docker.conf \ No newline at end of file diff --git a/vendor/github.com/docker/docker/hack/make/.build-deb/docker-engine.udev b/vendor/github.com/docker/docker/hack/make/.build-deb/docker-engine.udev deleted file mode 120000 index 914a3619..00000000 --- a/vendor/github.com/docker/docker/hack/make/.build-deb/docker-engine.udev +++ /dev/null @@ -1 +0,0 @@ -../../../contrib/udev/80-docker.rules \ No newline at end of file diff --git a/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE b/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE deleted file mode 100644 index 34c4ea7c..00000000 --- a/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE +++ /dev/null @@ -1,191 +0,0 @@ - - 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 - - Copyright 2014-2016 Docker, 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. diff --git a/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD b/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD deleted file mode 100644 index 9b4f4a29..00000000 --- a/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2014-2016 The Docker & Go Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/docker/docker/pkg/tlsconfig/tlsconfig_clone.go b/vendor/github.com/docker/docker/pkg/tlsconfig/tlsconfig_clone.go deleted file mode 100644 index e4dec3a5..00000000 --- a/vendor/github.com/docker/docker/pkg/tlsconfig/tlsconfig_clone.go +++ /dev/null @@ -1,11 +0,0 @@ -// +build go1.8 - -package tlsconfig - -import "crypto/tls" - -// Clone returns a clone of tls.Config. This function is provided for -// compatibility for go1.7 that doesn't include this method in stdlib. -func Clone(c *tls.Config) *tls.Config { - return c.Clone() -} diff --git a/vendor/github.com/docker/docker/pkg/tlsconfig/tlsconfig_clone_go16.go b/vendor/github.com/docker/docker/pkg/tlsconfig/tlsconfig_clone_go16.go deleted file mode 100644 index 0b816650..00000000 --- a/vendor/github.com/docker/docker/pkg/tlsconfig/tlsconfig_clone_go16.go +++ /dev/null @@ -1,31 +0,0 @@ -// +build go1.6,!go1.7 - -package tlsconfig - -import "crypto/tls" - -// Clone returns a clone of tls.Config. This function is provided for -// compatibility for go1.6 that doesn't include this method in stdlib. -func Clone(c *tls.Config) *tls.Config { - return &tls.Config{ - Rand: c.Rand, - Time: c.Time, - Certificates: c.Certificates, - NameToCertificate: c.NameToCertificate, - GetCertificate: c.GetCertificate, - RootCAs: c.RootCAs, - NextProtos: c.NextProtos, - ServerName: c.ServerName, - ClientAuth: c.ClientAuth, - ClientCAs: c.ClientCAs, - InsecureSkipVerify: c.InsecureSkipVerify, - CipherSuites: c.CipherSuites, - PreferServerCipherSuites: c.PreferServerCipherSuites, - SessionTicketsDisabled: c.SessionTicketsDisabled, - SessionTicketKey: c.SessionTicketKey, - ClientSessionCache: c.ClientSessionCache, - MinVersion: c.MinVersion, - MaxVersion: c.MaxVersion, - CurvePreferences: c.CurvePreferences, - } -} diff --git a/vendor/github.com/docker/docker/pkg/tlsconfig/tlsconfig_clone_go17.go b/vendor/github.com/docker/docker/pkg/tlsconfig/tlsconfig_clone_go17.go deleted file mode 100644 index 0d5b448f..00000000 --- a/vendor/github.com/docker/docker/pkg/tlsconfig/tlsconfig_clone_go17.go +++ /dev/null @@ -1,33 +0,0 @@ -// +build go1.7,!go1.8 - -package tlsconfig - -import "crypto/tls" - -// Clone returns a clone of tls.Config. This function is provided for -// compatibility for go1.7 that doesn't include this method in stdlib. -func Clone(c *tls.Config) *tls.Config { - return &tls.Config{ - Rand: c.Rand, - Time: c.Time, - Certificates: c.Certificates, - NameToCertificate: c.NameToCertificate, - GetCertificate: c.GetCertificate, - RootCAs: c.RootCAs, - NextProtos: c.NextProtos, - ServerName: c.ServerName, - ClientAuth: c.ClientAuth, - ClientCAs: c.ClientCAs, - InsecureSkipVerify: c.InsecureSkipVerify, - CipherSuites: c.CipherSuites, - PreferServerCipherSuites: c.PreferServerCipherSuites, - SessionTicketsDisabled: c.SessionTicketsDisabled, - SessionTicketKey: c.SessionTicketKey, - ClientSessionCache: c.ClientSessionCache, - MinVersion: c.MinVersion, - MaxVersion: c.MaxVersion, - CurvePreferences: c.CurvePreferences, - DynamicRecordSizingDisabled: c.DynamicRecordSizingDisabled, - Renegotiation: c.Renegotiation, - } -} diff --git a/vendor/github.com/docker/docker/project/CONTRIBUTORS.md b/vendor/github.com/docker/docker/project/CONTRIBUTORS.md deleted file mode 120000 index 44fcc634..00000000 --- a/vendor/github.com/docker/docker/project/CONTRIBUTORS.md +++ /dev/null @@ -1 +0,0 @@ -../CONTRIBUTING.md \ No newline at end of file diff --git a/vendor/github.com/docker/go-connections/LICENSE b/vendor/github.com/docker/go-connections/LICENSE deleted file mode 100644 index b55b37bc..00000000 --- a/vendor/github.com/docker/go-connections/LICENSE +++ /dev/null @@ -1,191 +0,0 @@ - - Apache License - Version 2.0, January 2004 - https://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 - - Copyright 2015 Docker, 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 - - https://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. diff --git a/vendor/github.com/docker/go-connections/nat/nat.go b/vendor/github.com/docker/go-connections/nat/nat.go deleted file mode 100644 index 4d5f5ae6..00000000 --- a/vendor/github.com/docker/go-connections/nat/nat.go +++ /dev/null @@ -1,242 +0,0 @@ -// Package nat is a convenience package for manipulation of strings describing network ports. -package nat - -import ( - "fmt" - "net" - "strconv" - "strings" -) - -const ( - // portSpecTemplate is the expected format for port specifications - portSpecTemplate = "ip:hostPort:containerPort" -) - -// PortBinding represents a binding between a Host IP address and a Host Port -type PortBinding struct { - // HostIP is the host IP Address - HostIP string `json:"HostIp"` - // HostPort is the host port number - HostPort string -} - -// PortMap is a collection of PortBinding indexed by Port -type PortMap map[Port][]PortBinding - -// PortSet is a collection of structs indexed by Port -type PortSet map[Port]struct{} - -// Port is a string containing port number and protocol in the format "80/tcp" -type Port string - -// NewPort creates a new instance of a Port given a protocol and port number or port range -func NewPort(proto, port string) (Port, error) { - // Check for parsing issues on "port" now so we can avoid having - // to check it later on. - - portStartInt, portEndInt, err := ParsePortRangeToInt(port) - if err != nil { - return "", err - } - - if portStartInt == portEndInt { - return Port(fmt.Sprintf("%d/%s", portStartInt, proto)), nil - } - return Port(fmt.Sprintf("%d-%d/%s", portStartInt, portEndInt, proto)), nil -} - -// ParsePort parses the port number string and returns an int -func ParsePort(rawPort string) (int, error) { - if len(rawPort) == 0 { - return 0, nil - } - port, err := strconv.ParseUint(rawPort, 10, 16) - if err != nil { - return 0, err - } - return int(port), nil -} - -// ParsePortRangeToInt parses the port range string and returns start/end ints -func ParsePortRangeToInt(rawPort string) (int, int, error) { - if len(rawPort) == 0 { - return 0, 0, nil - } - start, end, err := ParsePortRange(rawPort) - if err != nil { - return 0, 0, err - } - return int(start), int(end), nil -} - -// Proto returns the protocol of a Port -func (p Port) Proto() string { - proto, _ := SplitProtoPort(string(p)) - return proto -} - -// Port returns the port number of a Port -func (p Port) Port() string { - _, port := SplitProtoPort(string(p)) - return port -} - -// Int returns the port number of a Port as an int -func (p Port) Int() int { - portStr := p.Port() - // We don't need to check for an error because we're going to - // assume that any error would have been found, and reported, in NewPort() - port, _ := ParsePort(portStr) - return port -} - -// Range returns the start/end port numbers of a Port range as ints -func (p Port) Range() (int, int, error) { - return ParsePortRangeToInt(p.Port()) -} - -// SplitProtoPort splits a port in the format of proto/port -func SplitProtoPort(rawPort string) (string, string) { - parts := strings.Split(rawPort, "/") - l := len(parts) - if len(rawPort) == 0 || l == 0 || len(parts[0]) == 0 { - return "", "" - } - if l == 1 { - return "tcp", rawPort - } - if len(parts[1]) == 0 { - return "tcp", parts[0] - } - return parts[1], parts[0] -} - -func validateProto(proto string) bool { - for _, availableProto := range []string{"tcp", "udp"} { - if availableProto == proto { - return true - } - } - return false -} - -// ParsePortSpecs receives port specs in the format of ip:public:private/proto and parses -// these in to the internal types -func ParsePortSpecs(ports []string) (map[Port]struct{}, map[Port][]PortBinding, error) { - var ( - exposedPorts = make(map[Port]struct{}, len(ports)) - bindings = make(map[Port][]PortBinding) - ) - for _, rawPort := range ports { - portMappings, err := ParsePortSpec(rawPort) - if err != nil { - return nil, nil, err - } - - for _, portMapping := range portMappings { - port := portMapping.Port - if _, exists := exposedPorts[port]; !exists { - exposedPorts[port] = struct{}{} - } - bslice, exists := bindings[port] - if !exists { - bslice = []PortBinding{} - } - bindings[port] = append(bslice, portMapping.Binding) - } - } - return exposedPorts, bindings, nil -} - -// PortMapping is a data object mapping a Port to a PortBinding -type PortMapping struct { - Port Port - Binding PortBinding -} - -func splitParts(rawport string) (string, string, string) { - parts := strings.Split(rawport, ":") - n := len(parts) - containerport := parts[n-1] - - switch n { - case 1: - return "", "", containerport - case 2: - return "", parts[0], containerport - case 3: - return parts[0], parts[1], containerport - default: - return strings.Join(parts[:n-2], ":"), parts[n-2], containerport - } -} - -// ParsePortSpec parses a port specification string into a slice of PortMappings -func ParsePortSpec(rawPort string) ([]PortMapping, error) { - var proto string - rawIP, hostPort, containerPort := splitParts(rawPort) - proto, containerPort = SplitProtoPort(containerPort) - - // Strip [] from IPV6 addresses - ip, _, err := net.SplitHostPort(rawIP + ":") - if err != nil { - return nil, fmt.Errorf("Invalid ip address %v: %s", rawIP, err) - } - if ip != "" && net.ParseIP(ip) == nil { - return nil, fmt.Errorf("Invalid ip address: %s", ip) - } - if containerPort == "" { - return nil, fmt.Errorf("No port specified: %s", rawPort) - } - - startPort, endPort, err := ParsePortRange(containerPort) - if err != nil { - return nil, fmt.Errorf("Invalid containerPort: %s", containerPort) - } - - var startHostPort, endHostPort uint64 = 0, 0 - if len(hostPort) > 0 { - startHostPort, endHostPort, err = ParsePortRange(hostPort) - if err != nil { - return nil, fmt.Errorf("Invalid hostPort: %s", hostPort) - } - } - - if hostPort != "" && (endPort-startPort) != (endHostPort-startHostPort) { - // Allow host port range iff containerPort is not a range. - // In this case, use the host port range as the dynamic - // host port range to allocate into. - if endPort != startPort { - return nil, fmt.Errorf("Invalid ranges specified for container and host Ports: %s and %s", containerPort, hostPort) - } - } - - if !validateProto(strings.ToLower(proto)) { - return nil, fmt.Errorf("Invalid proto: %s", proto) - } - - ports := []PortMapping{} - for i := uint64(0); i <= (endPort - startPort); i++ { - containerPort = strconv.FormatUint(startPort+i, 10) - if len(hostPort) > 0 { - hostPort = strconv.FormatUint(startHostPort+i, 10) - } - // Set hostPort to a range only if there is a single container port - // and a dynamic host port. - if startPort == endPort && startHostPort != endHostPort { - hostPort = fmt.Sprintf("%s-%s", hostPort, strconv.FormatUint(endHostPort, 10)) - } - port, err := NewPort(strings.ToLower(proto), containerPort) - if err != nil { - return nil, err - } - - binding := PortBinding{ - HostIP: ip, - HostPort: hostPort, - } - ports = append(ports, PortMapping{Port: port, Binding: binding}) - } - return ports, nil -} diff --git a/vendor/github.com/docker/go-connections/nat/parse.go b/vendor/github.com/docker/go-connections/nat/parse.go deleted file mode 100644 index 892adf8c..00000000 --- a/vendor/github.com/docker/go-connections/nat/parse.go +++ /dev/null @@ -1,57 +0,0 @@ -package nat - -import ( - "fmt" - "strconv" - "strings" -) - -// PartParser parses and validates the specified string (data) using the specified template -// e.g. ip:public:private -> 192.168.0.1:80:8000 -// DEPRECATED: do not use, this function may be removed in a future version -func PartParser(template, data string) (map[string]string, error) { - // ip:public:private - var ( - templateParts = strings.Split(template, ":") - parts = strings.Split(data, ":") - out = make(map[string]string, len(templateParts)) - ) - if len(parts) != len(templateParts) { - return nil, fmt.Errorf("Invalid format to parse. %s should match template %s", data, template) - } - - for i, t := range templateParts { - value := "" - if len(parts) > i { - value = parts[i] - } - out[t] = value - } - return out, nil -} - -// ParsePortRange parses and validates the specified string as a port-range (8000-9000) -func ParsePortRange(ports string) (uint64, uint64, error) { - if ports == "" { - return 0, 0, fmt.Errorf("Empty string specified for ports.") - } - if !strings.Contains(ports, "-") { - start, err := strconv.ParseUint(ports, 10, 16) - end := start - return start, end, err - } - - parts := strings.Split(ports, "-") - start, err := strconv.ParseUint(parts[0], 10, 16) - if err != nil { - return 0, 0, err - } - end, err := strconv.ParseUint(parts[1], 10, 16) - if err != nil { - return 0, 0, err - } - if end < start { - return 0, 0, fmt.Errorf("Invalid range specified for the Port: %s", ports) - } - return start, end, nil -} diff --git a/vendor/github.com/docker/go-connections/nat/sort.go b/vendor/github.com/docker/go-connections/nat/sort.go deleted file mode 100644 index ce950171..00000000 --- a/vendor/github.com/docker/go-connections/nat/sort.go +++ /dev/null @@ -1,96 +0,0 @@ -package nat - -import ( - "sort" - "strings" -) - -type portSorter struct { - ports []Port - by func(i, j Port) bool -} - -func (s *portSorter) Len() int { - return len(s.ports) -} - -func (s *portSorter) Swap(i, j int) { - s.ports[i], s.ports[j] = s.ports[j], s.ports[i] -} - -func (s *portSorter) Less(i, j int) bool { - ip := s.ports[i] - jp := s.ports[j] - - return s.by(ip, jp) -} - -// Sort sorts a list of ports using the provided predicate -// This function should compare `i` and `j`, returning true if `i` is -// considered to be less than `j` -func Sort(ports []Port, predicate func(i, j Port) bool) { - s := &portSorter{ports, predicate} - sort.Sort(s) -} - -type portMapEntry struct { - port Port - binding PortBinding -} - -type portMapSorter []portMapEntry - -func (s portMapSorter) Len() int { return len(s) } -func (s portMapSorter) Swap(i, j int) { s[i], s[j] = s[j], s[i] } - -// sort the port so that the order is: -// 1. port with larger specified bindings -// 2. larger port -// 3. port with tcp protocol -func (s portMapSorter) Less(i, j int) bool { - pi, pj := s[i].port, s[j].port - hpi, hpj := toInt(s[i].binding.HostPort), toInt(s[j].binding.HostPort) - return hpi > hpj || pi.Int() > pj.Int() || (pi.Int() == pj.Int() && strings.ToLower(pi.Proto()) == "tcp") -} - -// SortPortMap sorts the list of ports and their respected mapping. The ports -// will explicit HostPort will be placed first. -func SortPortMap(ports []Port, bindings PortMap) { - s := portMapSorter{} - for _, p := range ports { - if binding, ok := bindings[p]; ok { - for _, b := range binding { - s = append(s, portMapEntry{port: p, binding: b}) - } - bindings[p] = []PortBinding{} - } else { - s = append(s, portMapEntry{port: p}) - } - } - - sort.Sort(s) - var ( - i int - pm = make(map[Port]struct{}) - ) - // reorder ports - for _, entry := range s { - if _, ok := pm[entry.port]; !ok { - ports[i] = entry.port - pm[entry.port] = struct{}{} - i++ - } - // reorder bindings for this port - if _, ok := bindings[entry.port]; ok { - bindings[entry.port] = append(bindings[entry.port], entry.binding) - } - } -} - -func toInt(s string) uint64 { - i, _, err := ParsePortRange(s) - if err != nil { - i = 0 - } - return i -} diff --git a/vendor/github.com/docker/go-connections/sockets/inmem_socket.go b/vendor/github.com/docker/go-connections/sockets/inmem_socket.go deleted file mode 100644 index 99846ffd..00000000 --- a/vendor/github.com/docker/go-connections/sockets/inmem_socket.go +++ /dev/null @@ -1,81 +0,0 @@ -package sockets - -import ( - "errors" - "net" - "sync" -) - -var errClosed = errors.New("use of closed network connection") - -// InmemSocket implements net.Listener using in-memory only connections. -type InmemSocket struct { - chConn chan net.Conn - chClose chan struct{} - addr string - mu sync.Mutex -} - -// dummyAddr is used to satisfy net.Addr for the in-mem socket -// it is just stored as a string and returns the string for all calls -type dummyAddr string - -// NewInmemSocket creates an in-memory only net.Listener -// The addr argument can be any string, but is used to satisfy the `Addr()` part -// of the net.Listener interface -func NewInmemSocket(addr string, bufSize int) *InmemSocket { - return &InmemSocket{ - chConn: make(chan net.Conn, bufSize), - chClose: make(chan struct{}), - addr: addr, - } -} - -// Addr returns the socket's addr string to satisfy net.Listener -func (s *InmemSocket) Addr() net.Addr { - return dummyAddr(s.addr) -} - -// Accept implements the Accept method in the Listener interface; it waits for the next call and returns a generic Conn. -func (s *InmemSocket) Accept() (net.Conn, error) { - select { - case conn := <-s.chConn: - return conn, nil - case <-s.chClose: - return nil, errClosed - } -} - -// Close closes the listener. It will be unavailable for use once closed. -func (s *InmemSocket) Close() error { - s.mu.Lock() - defer s.mu.Unlock() - select { - case <-s.chClose: - default: - close(s.chClose) - } - return nil -} - -// Dial is used to establish a connection with the in-mem server -func (s *InmemSocket) Dial(network, addr string) (net.Conn, error) { - srvConn, clientConn := net.Pipe() - select { - case s.chConn <- srvConn: - case <-s.chClose: - return nil, errClosed - } - - return clientConn, nil -} - -// Network returns the addr string, satisfies net.Addr -func (a dummyAddr) Network() string { - return string(a) -} - -// String returns the string form -func (a dummyAddr) String() string { - return string(a) -} diff --git a/vendor/github.com/docker/go-connections/sockets/proxy.go b/vendor/github.com/docker/go-connections/sockets/proxy.go deleted file mode 100644 index 98e9a1dc..00000000 --- a/vendor/github.com/docker/go-connections/sockets/proxy.go +++ /dev/null @@ -1,51 +0,0 @@ -package sockets - -import ( - "net" - "net/url" - "os" - "strings" - - "golang.org/x/net/proxy" -) - -// GetProxyEnv allows access to the uppercase and the lowercase forms of -// proxy-related variables. See the Go specification for details on these -// variables. https://golang.org/pkg/net/http/ -func GetProxyEnv(key string) string { - proxyValue := os.Getenv(strings.ToUpper(key)) - if proxyValue == "" { - return os.Getenv(strings.ToLower(key)) - } - return proxyValue -} - -// DialerFromEnvironment takes in a "direct" *net.Dialer and returns a -// proxy.Dialer which will route the connections through the proxy using the -// given dialer. -func DialerFromEnvironment(direct *net.Dialer) (proxy.Dialer, error) { - allProxy := GetProxyEnv("all_proxy") - if len(allProxy) == 0 { - return direct, nil - } - - proxyURL, err := url.Parse(allProxy) - if err != nil { - return direct, err - } - - proxyFromURL, err := proxy.FromURL(proxyURL, direct) - if err != nil { - return direct, err - } - - noProxy := GetProxyEnv("no_proxy") - if len(noProxy) == 0 { - return proxyFromURL, nil - } - - perHost := proxy.NewPerHost(proxyFromURL, direct) - perHost.AddFromString(noProxy) - - return perHost, nil -} diff --git a/vendor/github.com/docker/go-connections/sockets/sockets.go b/vendor/github.com/docker/go-connections/sockets/sockets.go deleted file mode 100644 index a1d7beb4..00000000 --- a/vendor/github.com/docker/go-connections/sockets/sockets.go +++ /dev/null @@ -1,38 +0,0 @@ -// Package sockets provides helper functions to create and configure Unix or TCP sockets. -package sockets - -import ( - "errors" - "net" - "net/http" - "time" -) - -// Why 32? See https://github.com/docker/docker/pull/8035. -const defaultTimeout = 32 * time.Second - -// ErrProtocolNotAvailable is returned when a given transport protocol is not provided by the operating system. -var ErrProtocolNotAvailable = errors.New("protocol not available") - -// ConfigureTransport configures the specified Transport according to the -// specified proto and addr. -// If the proto is unix (using a unix socket to communicate) or npipe the -// compression is disabled. -func ConfigureTransport(tr *http.Transport, proto, addr string) error { - switch proto { - case "unix": - return configureUnixTransport(tr, proto, addr) - case "npipe": - return configureNpipeTransport(tr, proto, addr) - default: - tr.Proxy = http.ProxyFromEnvironment - dialer, err := DialerFromEnvironment(&net.Dialer{ - Timeout: defaultTimeout, - }) - if err != nil { - return err - } - tr.Dial = dialer.Dial - } - return nil -} diff --git a/vendor/github.com/docker/go-connections/sockets/sockets_unix.go b/vendor/github.com/docker/go-connections/sockets/sockets_unix.go deleted file mode 100644 index 386cf0db..00000000 --- a/vendor/github.com/docker/go-connections/sockets/sockets_unix.go +++ /dev/null @@ -1,35 +0,0 @@ -// +build !windows - -package sockets - -import ( - "fmt" - "net" - "net/http" - "syscall" - "time" -) - -const maxUnixSocketPathSize = len(syscall.RawSockaddrUnix{}.Path) - -func configureUnixTransport(tr *http.Transport, proto, addr string) error { - if len(addr) > maxUnixSocketPathSize { - return fmt.Errorf("Unix socket path %q is too long", addr) - } - // No need for compression in local communications. - tr.DisableCompression = true - tr.Dial = func(_, _ string) (net.Conn, error) { - return net.DialTimeout(proto, addr, defaultTimeout) - } - return nil -} - -func configureNpipeTransport(tr *http.Transport, proto, addr string) error { - return ErrProtocolNotAvailable -} - -// DialPipe connects to a Windows named pipe. -// This is not supported on other OSes. -func DialPipe(_ string, _ time.Duration) (net.Conn, error) { - return nil, syscall.EAFNOSUPPORT -} diff --git a/vendor/github.com/docker/go-connections/sockets/sockets_windows.go b/vendor/github.com/docker/go-connections/sockets/sockets_windows.go deleted file mode 100644 index 5c21644e..00000000 --- a/vendor/github.com/docker/go-connections/sockets/sockets_windows.go +++ /dev/null @@ -1,27 +0,0 @@ -package sockets - -import ( - "net" - "net/http" - "time" - - "github.com/Microsoft/go-winio" -) - -func configureUnixTransport(tr *http.Transport, proto, addr string) error { - return ErrProtocolNotAvailable -} - -func configureNpipeTransport(tr *http.Transport, proto, addr string) error { - // No need for compression in local communications. - tr.DisableCompression = true - tr.Dial = func(_, _ string) (net.Conn, error) { - return DialPipe(addr, defaultTimeout) - } - return nil -} - -// DialPipe connects to a Windows named pipe. -func DialPipe(addr string, timeout time.Duration) (net.Conn, error) { - return winio.DialPipe(addr, &timeout) -} diff --git a/vendor/github.com/docker/go-connections/sockets/tcp_socket.go b/vendor/github.com/docker/go-connections/sockets/tcp_socket.go deleted file mode 100644 index 53cbb6c7..00000000 --- a/vendor/github.com/docker/go-connections/sockets/tcp_socket.go +++ /dev/null @@ -1,22 +0,0 @@ -// Package sockets provides helper functions to create and configure Unix or TCP sockets. -package sockets - -import ( - "crypto/tls" - "net" -) - -// NewTCPSocket creates a TCP socket listener with the specified address and -// the specified tls configuration. If TLSConfig is set, will encapsulate the -// TCP listener inside a TLS one. -func NewTCPSocket(addr string, tlsConfig *tls.Config) (net.Listener, error) { - l, err := net.Listen("tcp", addr) - if err != nil { - return nil, err - } - if tlsConfig != nil { - tlsConfig.NextProtos = []string{"http/1.1"} - l = tls.NewListener(l, tlsConfig) - } - return l, nil -} diff --git a/vendor/github.com/docker/go-connections/sockets/unix_socket.go b/vendor/github.com/docker/go-connections/sockets/unix_socket.go deleted file mode 100644 index a8b5dbb6..00000000 --- a/vendor/github.com/docker/go-connections/sockets/unix_socket.go +++ /dev/null @@ -1,32 +0,0 @@ -// +build !windows - -package sockets - -import ( - "net" - "os" - "syscall" -) - -// NewUnixSocket creates a unix socket with the specified path and group. -func NewUnixSocket(path string, gid int) (net.Listener, error) { - if err := syscall.Unlink(path); err != nil && !os.IsNotExist(err) { - return nil, err - } - mask := syscall.Umask(0777) - defer syscall.Umask(mask) - - l, err := net.Listen("unix", path) - if err != nil { - return nil, err - } - if err := os.Chown(path, 0, gid); err != nil { - l.Close() - return nil, err - } - if err := os.Chmod(path, 0660); err != nil { - l.Close() - return nil, err - } - return l, nil -} diff --git a/vendor/github.com/docker/go-connections/tlsconfig/certpool_go17.go b/vendor/github.com/docker/go-connections/tlsconfig/certpool_go17.go deleted file mode 100644 index 1ca0965e..00000000 --- a/vendor/github.com/docker/go-connections/tlsconfig/certpool_go17.go +++ /dev/null @@ -1,18 +0,0 @@ -// +build go1.7 - -package tlsconfig - -import ( - "crypto/x509" - "runtime" -) - -// SystemCertPool returns a copy of the system cert pool, -// returns an error if failed to load or empty pool on windows. -func SystemCertPool() (*x509.CertPool, error) { - certpool, err := x509.SystemCertPool() - if err != nil && runtime.GOOS == "windows" { - return x509.NewCertPool(), nil - } - return certpool, err -} diff --git a/vendor/github.com/docker/go-connections/tlsconfig/certpool_other.go b/vendor/github.com/docker/go-connections/tlsconfig/certpool_other.go deleted file mode 100644 index 9ca97453..00000000 --- a/vendor/github.com/docker/go-connections/tlsconfig/certpool_other.go +++ /dev/null @@ -1,14 +0,0 @@ -// +build !go1.7 - -package tlsconfig - -import ( - "crypto/x509" - -) - -// SystemCertPool returns an new empty cert pool, -// accessing system cert pool is supported in go 1.7 -func SystemCertPool() (*x509.CertPool, error) { - return x509.NewCertPool(), nil -} diff --git a/vendor/github.com/docker/go-connections/tlsconfig/config.go b/vendor/github.com/docker/go-connections/tlsconfig/config.go deleted file mode 100644 index 1b31bbb8..00000000 --- a/vendor/github.com/docker/go-connections/tlsconfig/config.go +++ /dev/null @@ -1,244 +0,0 @@ -// Package tlsconfig provides primitives to retrieve secure-enough TLS configurations for both clients and servers. -// -// As a reminder from https://golang.org/pkg/crypto/tls/#Config: -// A Config structure is used to configure a TLS client or server. After one has been passed to a TLS function it must not be modified. -// A Config may be reused; the tls package will also not modify it. -package tlsconfig - -import ( - "crypto/tls" - "crypto/x509" - "encoding/pem" - "fmt" - "io/ioutil" - "os" - - "github.com/pkg/errors" -) - -// Options represents the information needed to create client and server TLS configurations. -type Options struct { - CAFile string - - // If either CertFile or KeyFile is empty, Client() will not load them - // preventing the client from authenticating to the server. - // However, Server() requires them and will error out if they are empty. - CertFile string - KeyFile string - - // client-only option - InsecureSkipVerify bool - // server-only option - ClientAuth tls.ClientAuthType - // If ExclusiveRootPools is set, then if a CA file is provided, the root pool used for TLS - // creds will include exclusively the roots in that CA file. If no CA file is provided, - // the system pool will be used. - ExclusiveRootPools bool - MinVersion uint16 - // If Passphrase is set, it will be used to decrypt a TLS private key - // if the key is encrypted - Passphrase string -} - -// Extra (server-side) accepted CBC cipher suites - will phase out in the future -var acceptedCBCCiphers = []uint16{ - tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, - tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, - tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, - tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, - tls.TLS_RSA_WITH_AES_256_CBC_SHA, - tls.TLS_RSA_WITH_AES_128_CBC_SHA, -} - -// DefaultServerAcceptedCiphers should be uses by code which already has a crypto/tls -// options struct but wants to use a commonly accepted set of TLS cipher suites, with -// known weak algorithms removed. -var DefaultServerAcceptedCiphers = append(clientCipherSuites, acceptedCBCCiphers...) - -// allTLSVersions lists all the TLS versions and is used by the code that validates -// a uint16 value as a TLS version. -var allTLSVersions = map[uint16]struct{}{ - tls.VersionSSL30: {}, - tls.VersionTLS10: {}, - tls.VersionTLS11: {}, - tls.VersionTLS12: {}, -} - -// ServerDefault returns a secure-enough TLS configuration for the server TLS configuration. -func ServerDefault() *tls.Config { - return &tls.Config{ - // Avoid fallback to SSL protocols < TLS1.0 - MinVersion: tls.VersionTLS10, - PreferServerCipherSuites: true, - CipherSuites: DefaultServerAcceptedCiphers, - } -} - -// ClientDefault returns a secure-enough TLS configuration for the client TLS configuration. -func ClientDefault() *tls.Config { - return &tls.Config{ - // Prefer TLS1.2 as the client minimum - MinVersion: tls.VersionTLS12, - CipherSuites: clientCipherSuites, - } -} - -// certPool returns an X.509 certificate pool from `caFile`, the certificate file. -func certPool(caFile string, exclusivePool bool) (*x509.CertPool, error) { - // If we should verify the server, we need to load a trusted ca - var ( - certPool *x509.CertPool - err error - ) - if exclusivePool { - certPool = x509.NewCertPool() - } else { - certPool, err = SystemCertPool() - if err != nil { - return nil, fmt.Errorf("failed to read system certificates: %v", err) - } - } - pem, err := ioutil.ReadFile(caFile) - if err != nil { - return nil, fmt.Errorf("could not read CA certificate %q: %v", caFile, err) - } - if !certPool.AppendCertsFromPEM(pem) { - return nil, fmt.Errorf("failed to append certificates from PEM file: %q", caFile) - } - return certPool, nil -} - -// isValidMinVersion checks that the input value is a valid tls minimum version -func isValidMinVersion(version uint16) bool { - _, ok := allTLSVersions[version] - return ok -} - -// adjustMinVersion sets the MinVersion on `config`, the input configuration. -// It assumes the current MinVersion on the `config` is the lowest allowed. -func adjustMinVersion(options Options, config *tls.Config) error { - if options.MinVersion > 0 { - if !isValidMinVersion(options.MinVersion) { - return fmt.Errorf("Invalid minimum TLS version: %x", options.MinVersion) - } - if options.MinVersion < config.MinVersion { - return fmt.Errorf("Requested minimum TLS version is too low. Should be at-least: %x", config.MinVersion) - } - config.MinVersion = options.MinVersion - } - - return nil -} - -// IsErrEncryptedKey returns true if the 'err' is an error of incorrect -// password when tryin to decrypt a TLS private key -func IsErrEncryptedKey(err error) bool { - return errors.Cause(err) == x509.IncorrectPasswordError -} - -// getPrivateKey returns the private key in 'keyBytes', in PEM-encoded format. -// If the private key is encrypted, 'passphrase' is used to decrypted the -// private key. -func getPrivateKey(keyBytes []byte, passphrase string) ([]byte, error) { - // this section makes some small changes to code from notary/tuf/utils/x509.go - pemBlock, _ := pem.Decode(keyBytes) - if pemBlock == nil { - return nil, fmt.Errorf("no valid private key found") - } - - var err error - if x509.IsEncryptedPEMBlock(pemBlock) { - keyBytes, err = x509.DecryptPEMBlock(pemBlock, []byte(passphrase)) - if err != nil { - return nil, errors.Wrap(err, "private key is encrypted, but could not decrypt it") - } - keyBytes = pem.EncodeToMemory(&pem.Block{Type: pemBlock.Type, Bytes: keyBytes}) - } - - return keyBytes, nil -} - -// getCert returns a Certificate from the CertFile and KeyFile in 'options', -// if the key is encrypted, the Passphrase in 'options' will be used to -// decrypt it. -func getCert(options Options) ([]tls.Certificate, error) { - if options.CertFile == "" && options.KeyFile == "" { - return nil, nil - } - - errMessage := "Could not load X509 key pair" - - cert, err := ioutil.ReadFile(options.CertFile) - if err != nil { - return nil, errors.Wrap(err, errMessage) - } - - prKeyBytes, err := ioutil.ReadFile(options.KeyFile) - if err != nil { - return nil, errors.Wrap(err, errMessage) - } - - prKeyBytes, err = getPrivateKey(prKeyBytes, options.Passphrase) - if err != nil { - return nil, errors.Wrap(err, errMessage) - } - - tlsCert, err := tls.X509KeyPair(cert, prKeyBytes) - if err != nil { - return nil, errors.Wrap(err, errMessage) - } - - return []tls.Certificate{tlsCert}, nil -} - -// Client returns a TLS configuration meant to be used by a client. -func Client(options Options) (*tls.Config, error) { - tlsConfig := ClientDefault() - tlsConfig.InsecureSkipVerify = options.InsecureSkipVerify - if !options.InsecureSkipVerify && options.CAFile != "" { - CAs, err := certPool(options.CAFile, options.ExclusiveRootPools) - if err != nil { - return nil, err - } - tlsConfig.RootCAs = CAs - } - - tlsCerts, err := getCert(options) - if err != nil { - return nil, err - } - tlsConfig.Certificates = tlsCerts - - if err := adjustMinVersion(options, tlsConfig); err != nil { - return nil, err - } - - return tlsConfig, nil -} - -// Server returns a TLS configuration meant to be used by a server. -func Server(options Options) (*tls.Config, error) { - tlsConfig := ServerDefault() - tlsConfig.ClientAuth = options.ClientAuth - tlsCert, err := tls.LoadX509KeyPair(options.CertFile, options.KeyFile) - if err != nil { - if os.IsNotExist(err) { - return nil, fmt.Errorf("Could not load X509 key pair (cert: %q, key: %q): %v", options.CertFile, options.KeyFile, err) - } - return nil, fmt.Errorf("Error reading X509 key pair (cert: %q, key: %q): %v. Make sure the key is not encrypted.", options.CertFile, options.KeyFile, err) - } - tlsConfig.Certificates = []tls.Certificate{tlsCert} - if options.ClientAuth >= tls.VerifyClientCertIfGiven && options.CAFile != "" { - CAs, err := certPool(options.CAFile, options.ExclusiveRootPools) - if err != nil { - return nil, err - } - tlsConfig.ClientCAs = CAs - } - - if err := adjustMinVersion(options, tlsConfig); err != nil { - return nil, err - } - - return tlsConfig, nil -} diff --git a/vendor/github.com/docker/go-connections/tlsconfig/config_client_ciphers.go b/vendor/github.com/docker/go-connections/tlsconfig/config_client_ciphers.go deleted file mode 100644 index 6b4c6a7c..00000000 --- a/vendor/github.com/docker/go-connections/tlsconfig/config_client_ciphers.go +++ /dev/null @@ -1,17 +0,0 @@ -// +build go1.5 - -// Package tlsconfig provides primitives to retrieve secure-enough TLS configurations for both clients and servers. -// -package tlsconfig - -import ( - "crypto/tls" -) - -// Client TLS cipher suites (dropping CBC ciphers for client preferred suite set) -var clientCipherSuites = []uint16{ - tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, - tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, - tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, - tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, -} diff --git a/vendor/github.com/docker/go-connections/tlsconfig/config_legacy_client_ciphers.go b/vendor/github.com/docker/go-connections/tlsconfig/config_legacy_client_ciphers.go deleted file mode 100644 index ee22df47..00000000 --- a/vendor/github.com/docker/go-connections/tlsconfig/config_legacy_client_ciphers.go +++ /dev/null @@ -1,15 +0,0 @@ -// +build !go1.5 - -// Package tlsconfig provides primitives to retrieve secure-enough TLS configurations for both clients and servers. -// -package tlsconfig - -import ( - "crypto/tls" -) - -// Client TLS cipher suites (dropping CBC ciphers for client preferred suite set) -var clientCipherSuites = []uint16{ - tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, - tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, -} diff --git a/vendor/github.com/docker/go-units/LICENSE b/vendor/github.com/docker/go-units/LICENSE deleted file mode 100644 index b55b37bc..00000000 --- a/vendor/github.com/docker/go-units/LICENSE +++ /dev/null @@ -1,191 +0,0 @@ - - Apache License - Version 2.0, January 2004 - https://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 - - Copyright 2015 Docker, 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 - - https://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. diff --git a/vendor/github.com/docker/go-units/duration.go b/vendor/github.com/docker/go-units/duration.go deleted file mode 100644 index ba02af26..00000000 --- a/vendor/github.com/docker/go-units/duration.go +++ /dev/null @@ -1,35 +0,0 @@ -// Package units provides helper function to parse and print size and time units -// in human-readable format. -package units - -import ( - "fmt" - "time" -) - -// HumanDuration returns a human-readable approximation of a duration -// (eg. "About a minute", "4 hours ago", etc.). -func HumanDuration(d time.Duration) string { - if seconds := int(d.Seconds()); seconds < 1 { - return "Less than a second" - } else if seconds == 1 { - return "1 second" - } else if seconds < 60 { - return fmt.Sprintf("%d seconds", seconds) - } else if minutes := int(d.Minutes()); minutes == 1 { - return "About a minute" - } else if minutes < 46 { - return fmt.Sprintf("%d minutes", minutes) - } else if hours := int(d.Hours() + 0.5); hours == 1 { - return "About an hour" - } else if hours < 48 { - return fmt.Sprintf("%d hours", hours) - } else if hours < 24*7*2 { - return fmt.Sprintf("%d days", hours/24) - } else if hours < 24*30*2 { - return fmt.Sprintf("%d weeks", hours/24/7) - } else if hours < 24*365*2 { - return fmt.Sprintf("%d months", hours/24/30) - } - return fmt.Sprintf("%d years", int(d.Hours())/24/365) -} diff --git a/vendor/github.com/docker/go-units/size.go b/vendor/github.com/docker/go-units/size.go deleted file mode 100644 index 85f6ab07..00000000 --- a/vendor/github.com/docker/go-units/size.go +++ /dev/null @@ -1,108 +0,0 @@ -package units - -import ( - "fmt" - "regexp" - "strconv" - "strings" -) - -// See: http://en.wikipedia.org/wiki/Binary_prefix -const ( - // Decimal - - KB = 1000 - MB = 1000 * KB - GB = 1000 * MB - TB = 1000 * GB - PB = 1000 * TB - - // Binary - - KiB = 1024 - MiB = 1024 * KiB - GiB = 1024 * MiB - TiB = 1024 * GiB - PiB = 1024 * TiB -) - -type unitMap map[string]int64 - -var ( - decimalMap = unitMap{"k": KB, "m": MB, "g": GB, "t": TB, "p": PB} - binaryMap = unitMap{"k": KiB, "m": MiB, "g": GiB, "t": TiB, "p": PiB} - sizeRegex = regexp.MustCompile(`^(\d+(\.\d+)*) ?([kKmMgGtTpP])?[iI]?[bB]?$`) -) - -var decimapAbbrs = []string{"B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"} -var binaryAbbrs = []string{"B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"} - -func getSizeAndUnit(size float64, base float64, _map []string) (float64, string) { - i := 0 - unitsLimit := len(_map) - 1 - for size >= base && i < unitsLimit { - size = size / base - i++ - } - return size, _map[i] -} - -// CustomSize returns a human-readable approximation of a size -// using custom format. -func CustomSize(format string, size float64, base float64, _map []string) string { - size, unit := getSizeAndUnit(size, base, _map) - return fmt.Sprintf(format, size, unit) -} - -// HumanSizeWithPrecision allows the size to be in any precision, -// instead of 4 digit precision used in units.HumanSize. -func HumanSizeWithPrecision(size float64, precision int) string { - size, unit := getSizeAndUnit(size, 1000.0, decimapAbbrs) - return fmt.Sprintf("%.*g%s", precision, size, unit) -} - -// HumanSize returns a human-readable approximation of a size -// capped at 4 valid numbers (eg. "2.746 MB", "796 KB"). -func HumanSize(size float64) string { - return HumanSizeWithPrecision(size, 4) -} - -// BytesSize returns a human-readable size in bytes, kibibytes, -// mebibytes, gibibytes, or tebibytes (eg. "44kiB", "17MiB"). -func BytesSize(size float64) string { - return CustomSize("%.4g%s", size, 1024.0, binaryAbbrs) -} - -// FromHumanSize returns an integer from a human-readable specification of a -// size using SI standard (eg. "44kB", "17MB"). -func FromHumanSize(size string) (int64, error) { - return parseSize(size, decimalMap) -} - -// RAMInBytes parses a human-readable string representing an amount of RAM -// in bytes, kibibytes, mebibytes, gibibytes, or tebibytes and -// returns the number of bytes, or -1 if the string is unparseable. -// Units are case-insensitive, and the 'b' suffix is optional. -func RAMInBytes(size string) (int64, error) { - return parseSize(size, binaryMap) -} - -// Parses the human-readable size string into the amount it represents. -func parseSize(sizeStr string, uMap unitMap) (int64, error) { - matches := sizeRegex.FindStringSubmatch(sizeStr) - if len(matches) != 4 { - return -1, fmt.Errorf("invalid size: '%s'", sizeStr) - } - - size, err := strconv.ParseFloat(matches[1], 64) - if err != nil { - return -1, err - } - - unitPrefix := strings.ToLower(matches[3]) - if mul, ok := uMap[unitPrefix]; ok { - size *= float64(mul) - } - - return int64(size), nil -} diff --git a/vendor/github.com/docker/go-units/ulimit.go b/vendor/github.com/docker/go-units/ulimit.go deleted file mode 100644 index 5ac7fd82..00000000 --- a/vendor/github.com/docker/go-units/ulimit.go +++ /dev/null @@ -1,118 +0,0 @@ -package units - -import ( - "fmt" - "strconv" - "strings" -) - -// Ulimit is a human friendly version of Rlimit. -type Ulimit struct { - Name string - Hard int64 - Soft int64 -} - -// Rlimit specifies the resource limits, such as max open files. -type Rlimit struct { - Type int `json:"type,omitempty"` - Hard uint64 `json:"hard,omitempty"` - Soft uint64 `json:"soft,omitempty"` -} - -const ( - // magic numbers for making the syscall - // some of these are defined in the syscall package, but not all. - // Also since Windows client doesn't get access to the syscall package, need to - // define these here - rlimitAs = 9 - rlimitCore = 4 - rlimitCPU = 0 - rlimitData = 2 - rlimitFsize = 1 - rlimitLocks = 10 - rlimitMemlock = 8 - rlimitMsgqueue = 12 - rlimitNice = 13 - rlimitNofile = 7 - rlimitNproc = 6 - rlimitRss = 5 - rlimitRtprio = 14 - rlimitRttime = 15 - rlimitSigpending = 11 - rlimitStack = 3 -) - -var ulimitNameMapping = map[string]int{ - //"as": rlimitAs, // Disabled since this doesn't seem usable with the way Docker inits a container. - "core": rlimitCore, - "cpu": rlimitCPU, - "data": rlimitData, - "fsize": rlimitFsize, - "locks": rlimitLocks, - "memlock": rlimitMemlock, - "msgqueue": rlimitMsgqueue, - "nice": rlimitNice, - "nofile": rlimitNofile, - "nproc": rlimitNproc, - "rss": rlimitRss, - "rtprio": rlimitRtprio, - "rttime": rlimitRttime, - "sigpending": rlimitSigpending, - "stack": rlimitStack, -} - -// ParseUlimit parses and returns a Ulimit from the specified string. -func ParseUlimit(val string) (*Ulimit, error) { - parts := strings.SplitN(val, "=", 2) - if len(parts) != 2 { - return nil, fmt.Errorf("invalid ulimit argument: %s", val) - } - - if _, exists := ulimitNameMapping[parts[0]]; !exists { - return nil, fmt.Errorf("invalid ulimit type: %s", parts[0]) - } - - var ( - soft int64 - hard = &soft // default to soft in case no hard was set - temp int64 - err error - ) - switch limitVals := strings.Split(parts[1], ":"); len(limitVals) { - case 2: - temp, err = strconv.ParseInt(limitVals[1], 10, 64) - if err != nil { - return nil, err - } - hard = &temp - fallthrough - case 1: - soft, err = strconv.ParseInt(limitVals[0], 10, 64) - if err != nil { - return nil, err - } - default: - return nil, fmt.Errorf("too many limit value arguments - %s, can only have up to two, `soft[:hard]`", parts[1]) - } - - if soft > *hard { - return nil, fmt.Errorf("ulimit soft limit must be less than or equal to hard limit: %d > %d", soft, *hard) - } - - return &Ulimit{Name: parts[0], Soft: soft, Hard: *hard}, nil -} - -// GetRlimit returns the RLimit corresponding to Ulimit. -func (u *Ulimit) GetRlimit() (*Rlimit, error) { - t, exists := ulimitNameMapping[u.Name] - if !exists { - return nil, fmt.Errorf("invalid ulimit name %s", u.Name) - } - - return &Rlimit{Type: t, Soft: uint64(u.Soft), Hard: uint64(u.Hard)}, nil -} - -func (u *Ulimit) String() string { - return fmt.Sprintf("%s=%d:%d", u.Name, u.Soft, u.Hard) -} diff --git a/vendor/github.com/google/go-containerregistry/LICENSE b/vendor/github.com/google/go-containerregistry/LICENSE deleted file mode 100644 index 7a4a3ea2..00000000 --- a/vendor/github.com/google/go-containerregistry/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - 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/google/go-containerregistry/cmd/ko/commands.go b/vendor/github.com/google/go-containerregistry/cmd/ko/commands.go deleted file mode 100644 index ad3e75ea..00000000 --- a/vendor/github.com/google/go-containerregistry/cmd/ko/commands.go +++ /dev/null @@ -1,193 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 main - -import ( - "bytes" - "log" - "os" - "os/exec" - - "github.com/spf13/cobra" -) - -// runCmd is suitable for use with cobra.Command's Run field. -type runCmd func(*cobra.Command, []string) - -// passthru returns a runCmd that simply passes our CLI arguments -// through to a binary named command. -func passthru(command string) runCmd { - return func(_ *cobra.Command, _ []string) { - // Start building a command line invocation by passing - // through our arguments to command's CLI. - cmd := exec.Command(command, os.Args[1:]...) - - // Pass through our environment - cmd.Env = os.Environ() - // Pass through our stdfoo - cmd.Stderr = os.Stderr - cmd.Stdout = os.Stdout - cmd.Stdin = os.Stdin - - // Run it. - if err := cmd.Run(); err != nil { - log.Fatalf("error executing %q command with args: %v; %v", command, os.Args[1:], err) - } - } -} - -// addKubeCommands augments our CLI surface with a passthru delete command, and an apply -// command that realizes the promise of ko, as outlined here: -// https://github.com/google/go-containerregistry/issues/80 -func addKubeCommands(topLevel *cobra.Command) { - topLevel.AddCommand(&cobra.Command{ - Use: "delete", - Short: `See "kubectl help delete" for detailed usage.`, - Run: passthru("kubectl"), - // We ignore unknown flags to avoid importing everything Go exposes - // from our commands. - FParseErrWhitelist: cobra.FParseErrWhitelist{ - UnknownFlags: true, - }, - }) - - lo := &LocalOptions{} - no := &NameOptions{} - fo := &FilenameOptions{} - apply := &cobra.Command{ - Use: "apply -f FILENAME", - Short: "Apply the input files with image references resolved to built/pushed image digests.", - Long: `This sub-command finds import path references within the provided files, builds them into Go binaries, containerizes them, publishes them, and then feeds the resulting yaml into "kubectl apply".`, - Example: ` - # Build and publish import path references to a Docker - # Registry as: - # ${KO_DOCKER_REPO}/- - # Then, feed the resulting yaml into "kubectl apply". - # When KO_DOCKER_REPO is ko.local, it is the same as if - # --local and --preserve-import-paths were passed. - ko apply -f config/ - - # Build and publish import path references to a Docker - # Registry preserving import path names as: - # ${KO_DOCKER_REPO}/ - # Then, feed the resulting yaml into "kubectl apply". - ko apply --preserve-import-paths -f config/ - - # Build and publish import path references to a Docker - # daemon as: - # ko.local/ - # Then, feed the resulting yaml into "kubectl apply". - # This always preserves import paths. - ko apply --local -f config/`, - Args: cobra.NoArgs, - Run: func(cmd *cobra.Command, args []string) { - // TODO(mattmoor): Use io.Pipe to avoid buffering the whole thing. - buf := bytes.NewBuffer(nil) - resolveFilesToWriter(fo, no, lo, buf) - - // Issue a "kubectl apply" command reading from stdin, - // to which we will pipe the resolved files. - kubectlCmd := exec.Command("kubectl", "apply", "-f", "-") - - // Pass through our environment - kubectlCmd.Env = os.Environ() - // Pass through our std{out,err} and make our resolved buffer stdin. - kubectlCmd.Stderr = os.Stderr - kubectlCmd.Stdout = os.Stdout - kubectlCmd.Stdin = buf - - // Run it. - if err := kubectlCmd.Run(); err != nil { - log.Fatalf("error executing \"kubectl apply\": %v", err) - } - }, - } - addLocalArg(apply, lo) - addNamingArgs(apply, no) - addFileArg(apply, fo) - topLevel.AddCommand(apply) - - resolve := &cobra.Command{ - Use: "resolve -f FILENAME", - Short: "Print the input files with image references resolved to built/pushed image digests.", - Long: `This sub-command finds import path references within the provided files, builds them into Go binaries, containerizes them, publishes them, and prints the resulting yaml.`, - Example: ` - # Build and publish import path references to a Docker - # Registry as: - # ${KO_DOCKER_REPO}/- - # When KO_DOCKER_REPO is ko.local, it is the same as if - # --local and --preserve-import-paths were passed. - ko resolve -f config/ - - # Build and publish import path references to a Docker - # Registry preserving import path names as: - # ${KO_DOCKER_REPO}/ - # When KO_DOCKER_REPO is ko.local, it is the same as if - # --local was passed. - ko resolve --preserve-import-paths -f config/ - - # Build and publish import path references to a Docker - # daemon as: - # ko.local/ - # This always preserves import paths. - ko resolve --local -f config/`, - Args: cobra.NoArgs, - Run: func(cmd *cobra.Command, args []string) { - resolveFilesToWriter(fo, no, lo, os.Stdout) - }, - } - addLocalArg(resolve, lo) - addNamingArgs(resolve, no) - addFileArg(resolve, fo) - topLevel.AddCommand(resolve) - - publish := &cobra.Command{ - Use: "publish IMPORTPATH...", - Short: "Build and publish container images from the given importpaths.", - Long: `This sub-command builds the provided import paths into Go binaries, containerizes them, and publishes them.`, - Example: ` - # Build and publish import path references to a Docker - # Registry as: - # ${KO_DOCKER_REPO}/- - # When KO_DOCKER_REPO is ko.local, it is the same as if - # --local and --preserve-import-paths were passed. - ko publish github.com/foo/bar/cmd/baz github.com/foo/bar/cmd/blah - - # Build and publish a relative import path as: - # ${KO_DOCKER_REPO}/- - # When KO_DOCKER_REPO is ko.local, it is the same as if - # --local and --preserve-import-paths were passed. - ko publish ./cmd/blah - - # Build and publish a relative import path as: - # ${KO_DOCKER_REPO}/ - # When KO_DOCKER_REPO is ko.local, it is the same as if - # --local was passed. - ko publish --preserve-import-paths ./cmd/blah - - # Build and publish import path references to a Docker - # daemon as: - # ko.local/ - # This always preserves import paths. - ko publish --local github.com/foo/bar/cmd/baz github.com/foo/bar/cmd/blah`, - Args: cobra.MinimumNArgs(1), - Run: func(_ *cobra.Command, args []string) { - publishImages(args, no, lo) - }, - } - addLocalArg(publish, lo) - addNamingArgs(publish, no) - topLevel.AddCommand(publish) -} diff --git a/vendor/github.com/google/go-containerregistry/cmd/ko/config.go b/vendor/github.com/google/go-containerregistry/cmd/ko/config.go deleted file mode 100644 index 506837fa..00000000 --- a/vendor/github.com/google/go-containerregistry/cmd/ko/config.go +++ /dev/null @@ -1,88 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 main - -import ( - "fmt" - "log" - "os" - "strconv" - "time" - - "github.com/spf13/viper" - - "github.com/google/go-containerregistry/pkg/authn" - "github.com/google/go-containerregistry/pkg/name" - "github.com/google/go-containerregistry/pkg/v1" - "github.com/google/go-containerregistry/pkg/v1/remote" -) - -var ( - defaultBaseImage name.Reference - baseImageOverrides map[string]name.Reference -) - -func getBaseImage(s string) (v1.Image, error) { - ref, ok := baseImageOverrides[s] - if !ok { - ref = defaultBaseImage - } - log.Printf("Using base %s for %s", ref, s) - return remote.Image(ref, remote.WithAuthFromKeychain(authn.DefaultKeychain)) -} - -func getCreationTime() (*v1.Time, error) { - epoch := os.Getenv("SOURCE_DATE_EPOCH") - if epoch == "" { - return nil, nil - } - - seconds, err := strconv.ParseInt(epoch, 10, 64) - if err != nil { - return nil, fmt.Errorf("the environment variable SOURCE_DATE_EPOCH is invalid. It's must be a number of seconds since January 1st 1970, 00:00 UTC, got %v", err) - } - return &v1.Time{time.Unix(seconds, 0)}, nil -} - -func init() { - // If omitted, use this base image. - viper.SetDefault("defaultBaseImage", "gcr.io/distroless/base:latest") - - viper.SetConfigName(".ko") // .yaml is implicit - viper.AddConfigPath("./") - - if err := viper.ReadInConfig(); err != nil { - if _, ok := err.(viper.ConfigFileNotFoundError); !ok { - log.Fatalf("error reading config file: %v", err) - } - } - - ref := viper.GetString("defaultBaseImage") - dbi, err := name.ParseReference(ref, name.WeakValidation) - if err != nil { - log.Fatalf("'defaultBaseImage': error parsing %q as image reference: %v", ref, err) - } - defaultBaseImage = dbi - - baseImageOverrides = make(map[string]name.Reference) - overrides := viper.GetStringMapString("baseImageOverrides") - for k, v := range overrides { - bi, err := name.ParseReference(v, name.WeakValidation) - if err != nil { - log.Fatalf("'baseImageOverrides': error parsing %q as image reference: %v", v, err) - } - baseImageOverrides[k] = bi - } -} diff --git a/vendor/github.com/google/go-containerregistry/cmd/ko/filestuff.go b/vendor/github.com/google/go-containerregistry/cmd/ko/filestuff.go deleted file mode 100644 index 17b30b31..00000000 --- a/vendor/github.com/google/go-containerregistry/cmd/ko/filestuff.go +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 main - -import ( - "os" - "path/filepath" - - "github.com/spf13/cobra" -) - -// From pkg/kubectl -type FilenameOptions struct { - Filenames []string - Recursive bool -} - -func addFileArg(cmd *cobra.Command, fo *FilenameOptions) { - // From pkg/kubectl - cmd.Flags().StringSliceVarP(&fo.Filenames, "filename", "f", fo.Filenames, - "Filename, directory, or URL to files to use to create the resource") - cmd.Flags().BoolVarP(&fo.Recursive, "recursive", "R", fo.Recursive, - "Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests organized within the same directory.") -} - -// Based heavily on pkg/kubectl -func enumerateFiles(fo *FilenameOptions) ([]string, error) { - var files []string - for _, paths := range fo.Filenames { - err := filepath.Walk(paths, func(path string, fi os.FileInfo, err error) error { - if err != nil { - return err - } - - if fi.IsDir() { - if path != paths && !fo.Recursive { - return filepath.SkipDir - } - return nil - } - // Don't check extension if the filepath was passed explicitly - if path != paths { - switch filepath.Ext(path) { - case ".json", ".yaml": - // Process these. - default: - return nil - } - } - - files = append(files, path) - return nil - }) - if err != nil { - return nil, err - } - } - return files, nil -} diff --git a/vendor/github.com/google/go-containerregistry/cmd/ko/flatname.go b/vendor/github.com/google/go-containerregistry/cmd/ko/flatname.go deleted file mode 100644 index 5d7b9f5d..00000000 --- a/vendor/github.com/google/go-containerregistry/cmd/ko/flatname.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 main - -import ( - "crypto/md5" - "encoding/hex" - "path/filepath" - - "github.com/spf13/cobra" -) - -type NameOptions struct { - PreserveImportPaths bool -} - -func addNamingArgs(cmd *cobra.Command, no *NameOptions) { - cmd.Flags().BoolVarP(&no.PreserveImportPaths, "preserve-import-paths", "P", no.PreserveImportPaths, - "Whether to preserve the full import path after KO_DOCKER_REPO.") -} - -func packageWithMD5(importpath string) string { - hasher := md5.New() - hasher.Write([]byte(importpath)) - return filepath.Base(importpath) + "-" + hex.EncodeToString(hasher.Sum(nil)) -} - -func preserveImportPath(importpath string) string { - return importpath -} diff --git a/vendor/github.com/google/go-containerregistry/cmd/ko/local.go b/vendor/github.com/google/go-containerregistry/cmd/ko/local.go deleted file mode 100644 index 881a3bc2..00000000 --- a/vendor/github.com/google/go-containerregistry/cmd/ko/local.go +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 main - -import ( - "github.com/spf13/cobra" -) - -type LocalOptions struct { - Local bool -} - -func addLocalArg(cmd *cobra.Command, lo *LocalOptions) { - cmd.Flags().BoolVarP(&lo.Local, "local", "L", lo.Local, - "Whether to publish images to a local docker daemon vs. a registry.") -} diff --git a/vendor/github.com/google/go-containerregistry/cmd/ko/main.go b/vendor/github.com/google/go-containerregistry/cmd/ko/main.go deleted file mode 100644 index 6c2251c6..00000000 --- a/vendor/github.com/google/go-containerregistry/cmd/ko/main.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 main - -import ( - "log" - - "github.com/spf13/cobra" -) - -func main() { - // Parent command to which all subcommands are added. - cmds := &cobra.Command{ - Use: "ko", - Short: "Rapidly iterate with Go, Containers, and Kubernetes.", - Run: func(cmd *cobra.Command, args []string) { - cmd.Help() - }, - } - addKubeCommands(cmds) - - if err := cmds.Execute(); err != nil { - log.Fatalf("error during command execution: %v", err) - } -} diff --git a/vendor/github.com/google/go-containerregistry/cmd/ko/publish.go b/vendor/github.com/google/go-containerregistry/cmd/ko/publish.go deleted file mode 100644 index 01841622..00000000 --- a/vendor/github.com/google/go-containerregistry/cmd/ko/publish.go +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 main - -import ( - "fmt" - gb "go/build" - "log" - "os" - "path/filepath" - "strings" - - "github.com/google/go-containerregistry/pkg/authn" - "github.com/google/go-containerregistry/pkg/ko/build" - "github.com/google/go-containerregistry/pkg/ko/publish" - "github.com/google/go-containerregistry/pkg/name" - "github.com/google/go-containerregistry/pkg/v1/daemon" -) - -func qualifyLocalImport(importpath, gopathsrc, pwd string) (string, error) { - if !strings.HasPrefix(pwd, gopathsrc) { - return "", fmt.Errorf("pwd (%q) must be on $GOPATH/src (%q) to support local imports", pwd, gopathsrc) - } - // Given $GOPATH/src and $PWD (which must be within $GOPATH/src), trim - // off $GOPATH/src/ from $PWD and append local importpath to get the - // fully-qualified importpath. - return filepath.Join(strings.TrimPrefix(pwd, gopathsrc+string(filepath.Separator)), importpath), nil -} - -func publishImages(importpaths []string, no *NameOptions, lo *LocalOptions) { - opt, err := gobuildOptions() - if err != nil { - log.Fatalf("error setting up builder options: %v", err) - } - b, err := build.NewGo(opt...) - if err != nil { - log.Fatalf("error creating go builder: %v", err) - } - for _, importpath := range importpaths { - if gb.IsLocalImport(importpath) { - // Qualify relative imports to their fully-qualified - // import path, assuming $PWD is within $GOPATH/src. - gopathsrc := filepath.Join(gb.Default.GOPATH, "src") - pwd, err := os.Getwd() - if err != nil { - log.Fatalf("error getting current working directory: %v", err) - } - importpath, err = qualifyLocalImport(importpath, gopathsrc, pwd) - if err != nil { - log.Fatal(err) - } - } - - if !b.IsSupportedReference(importpath) { - log.Fatalf("importpath %q is not supported", importpath) - } - - img, err := b.Build(importpath) - if err != nil { - log.Fatalf("error building %q: %v", importpath, err) - } - var pub publish.Interface - repoName := os.Getenv("KO_DOCKER_REPO") - if lo.Local || repoName == publish.LocalDomain { - pub = publish.NewDaemon(daemon.WriteOptions{}) - } else { - if _, err := name.NewRepository(repoName, name.WeakValidation); err != nil { - log.Fatalf("the environment variable KO_DOCKER_REPO must be set to a valid docker repository, got %v", err) - } - opts := []publish.Option{publish.WithAuthFromKeychain(authn.DefaultKeychain)} - if no.PreserveImportPaths { - opts = append(opts, publish.WithNamer(preserveImportPath)) - } else { - opts = append(opts, publish.WithNamer(packageWithMD5)) - } - pub, err = publish.NewDefault(repoName, opts...) - if err != nil { - log.Fatalf("error setting up default image publisher: %v", err) - } - } - if _, err := pub.Publish(img, importpath); err != nil { - log.Fatalf("error publishing %s: %v", importpath, err) - } - } -} diff --git a/vendor/github.com/google/go-containerregistry/cmd/ko/resolve.go b/vendor/github.com/google/go-containerregistry/cmd/ko/resolve.go deleted file mode 100644 index 0c9f7103..00000000 --- a/vendor/github.com/google/go-containerregistry/cmd/ko/resolve.go +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 main - -import ( - "fmt" - "io" - "io/ioutil" - "log" - "os" - "sync" - - "github.com/google/go-containerregistry/pkg/authn" - "github.com/google/go-containerregistry/pkg/ko/build" - "github.com/google/go-containerregistry/pkg/ko/publish" - "github.com/google/go-containerregistry/pkg/ko/resolve" - "github.com/google/go-containerregistry/pkg/name" - "github.com/google/go-containerregistry/pkg/v1/daemon" -) - -func gobuildOptions() ([]build.Option, error) { - creationTime, err := getCreationTime() - if err != nil { - return nil, err - } - opts := []build.Option{ - build.WithBaseImages(getBaseImage), - } - if creationTime != nil { - opts = append(opts, build.WithCreationTime(*creationTime)) - } - return opts, nil -} - -func resolveFilesToWriter(fo *FilenameOptions, no *NameOptions, lo *LocalOptions, out io.Writer) { - fs, err := enumerateFiles(fo) - if err != nil { - log.Fatalf("error enumerating files: %v", err) - } - - opt, err := gobuildOptions() - if err != nil { - log.Fatalf("error setting up builder options: %v", err) - } - var sm sync.Map - wg := sync.WaitGroup{} - for _, f := range fs { - wg.Add(1) - go func(f string) { - defer wg.Done() - - b, err := resolveFile(f, no, lo, opt...) - if err != nil { - log.Fatalf("error processing import paths in %q: %v", f, err) - } - sm.Store(f, b) - }(f) - } - // Wait for all of the go routines to complete. - wg.Wait() - for _, f := range fs { - iface, ok := sm.Load(f) - if !ok { - log.Fatalf("missing file in resolved map: %v", f) - } - b, ok := iface.([]byte) - if !ok { - log.Fatalf("unsupported type in sync.Map's value: %T", iface) - } - // Our sole output should be the resolved yamls - out.Write([]byte("---\n")) - out.Write(b) - } -} - -func resolveFile(f string, no *NameOptions, lo *LocalOptions, opt ...build.Option) ([]byte, error) { - var pub publish.Interface - repoName := os.Getenv("KO_DOCKER_REPO") - if lo.Local || repoName == publish.LocalDomain { - pub = publish.NewDaemon(daemon.WriteOptions{}) - } else { - _, err := name.NewRepository(repoName, name.WeakValidation) - if err != nil { - return nil, fmt.Errorf("the environment variable KO_DOCKER_REPO must be set to a valid docker repository, got %v", err) - } - - opts := []publish.Option{publish.WithAuthFromKeychain(authn.DefaultKeychain)} - if no.PreserveImportPaths { - opts = append(opts, publish.WithNamer(preserveImportPath)) - } else { - opts = append(opts, publish.WithNamer(packageWithMD5)) - } - - pub, err = publish.NewDefault(repoName, opts...) - if err != nil { - return nil, err - } - } - - b, err := ioutil.ReadFile(f) - if err != nil { - return nil, err - } - - builder, err := build.NewGo(opt...) - if err != nil { - return nil, err - } - - return resolve.ImageReferences(b, builder, pub) -} diff --git a/vendor/github.com/google/go-containerregistry/cmd/ko/test/kodata/kenobi b/vendor/github.com/google/go-containerregistry/cmd/ko/test/kodata/kenobi deleted file mode 120000 index 5d7eddc7..00000000 --- a/vendor/github.com/google/go-containerregistry/cmd/ko/test/kodata/kenobi +++ /dev/null @@ -1 +0,0 @@ -../kenobi \ No newline at end of file diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/anon.go b/vendor/github.com/google/go-containerregistry/pkg/authn/anon.go deleted file mode 100644 index c9c08ec7..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/anon.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 authn - -// anonymous implements Authenticator for anonymous authentication. -type anonymous struct{} - -// Authorization implements Authenticator. -func (a *anonymous) Authorization() (string, error) { - return "", nil -} - -// Anonymous is a singleton Authenticator for providing anonymous auth. -var Anonymous Authenticator = &anonymous{} diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/auth.go b/vendor/github.com/google/go-containerregistry/pkg/authn/auth.go deleted file mode 100644 index c39ee5a9..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/auth.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 authn - -import ( - "fmt" -) - -// auth implements Authenticator for an "auth" entry of the docker config. -type auth struct { - token string -} - -// Authorization implements Authenticator. -func (a *auth) Authorization() (string, error) { - return fmt.Sprintf("Basic %s", a.token), nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/authn.go b/vendor/github.com/google/go-containerregistry/pkg/authn/authn.go deleted file mode 100644 index 30e935cb..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/authn.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 authn - -// Authenticator is used to authenticate Docker transports. -type Authenticator interface { - // Authorization returns the value to use in an http transport's Authorization header. - Authorization() (string, error) -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/basic.go b/vendor/github.com/google/go-containerregistry/pkg/authn/basic.go deleted file mode 100644 index 7cd49840..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/basic.go +++ /dev/null @@ -1,33 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 authn - -import ( - "encoding/base64" - "fmt" -) - -// Basic implements Authenticator for basic authentication. -type Basic struct { - Username string - Password string -} - -// Authorization implements Authenticator. -func (b *Basic) Authorization() (string, error) { - delimited := fmt.Sprintf("%s:%s", b.Username, b.Password) - encoded := base64.StdEncoding.EncodeToString([]byte(delimited)) - return fmt.Sprintf("Basic %s", encoded), nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/bearer.go b/vendor/github.com/google/go-containerregistry/pkg/authn/bearer.go deleted file mode 100644 index cb1ae584..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/bearer.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 authn - -import ( - "fmt" -) - -// Bearer implements Authenticator for bearer authentication. -type Bearer struct { - Token string `json:"token"` -} - -// Authorization implements Authenticator. -func (b *Bearer) Authorization() (string, error) { - return fmt.Sprintf("Bearer %s", b.Token), nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/doc.go b/vendor/github.com/google/go-containerregistry/pkg/authn/doc.go deleted file mode 100644 index c2a5fc02..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/doc.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 authn defines different methods of authentication for -// talking to a container registry. -package authn diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/helper.go b/vendor/github.com/google/go-containerregistry/pkg/authn/helper.go deleted file mode 100644 index cb2af535..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/helper.go +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 authn - -import ( - "bytes" - "encoding/json" - "fmt" - "os/exec" - "strings" - - "github.com/google/go-containerregistry/pkg/name" -) - -// magicNotFoundMessage is the string that the CLI special cases to mean -// that a given registry domain wasn't found. -const ( - magicNotFoundMessage = "credentials not found in native keychain" -) - -// runner allows us to swap out how we "Run" os/exec commands. -type runner interface { - Run(*exec.Cmd) error -} - -// defaultRunner implements runner by just calling Run(). -type defaultRunner struct{} - -// Run implements runner. -func (dr *defaultRunner) Run(cmd *exec.Cmd) error { - return cmd.Run() -} - -// helper executes the named credential helper against the given domain. -type helper struct { - name string - domain name.Registry - - // We add this layer of indirection to facilitate unit testing. - r runner -} - -// helperOutput is the expected JSON output form of a credential helper -// (or at least these are the fields that we care about). -type helperOutput struct { - Username string - Secret string -} - -// Authorization implements Authenticator. -func (h *helper) Authorization() (string, error) { - helperName := fmt.Sprintf("docker-credential-%s", h.name) - // We want to execute: - // echo -n {domain} | docker-credential-{name} get - cmd := exec.Command(helperName, "get") - - // Some keychains expect a scheme: - // https://github.com/bazelbuild/rules_docker/issues/111 - cmd.Stdin = strings.NewReader(fmt.Sprintf("https://%v", h.domain)) - - var out bytes.Buffer - cmd.Stdout = &out - err := h.r.Run(cmd) - - // If we see this specific message, it means the domain wasn't found - // and we should fall back on anonymous auth. - output := out.String() - if output == magicNotFoundMessage { - return Anonymous.Authorization() - } - - if err != nil { - return "", err - } - - // Any other output should be parsed as JSON and the Username / Secret - // fields used for Basic authentication. - ho := helperOutput{} - if err := json.Unmarshal([]byte(output), &ho); err != nil { - return "", err - } - b := Basic{Username: ho.Username, Password: ho.Secret} - return b.Authorization() -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/keychain.go b/vendor/github.com/google/go-containerregistry/pkg/authn/keychain.go deleted file mode 100644 index aee1fedb..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/keychain.go +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 authn - -import ( - "encoding/json" - "errors" - "fmt" - "io/ioutil" - "log" - "os" - "path/filepath" - "runtime" - - "github.com/google/go-containerregistry/pkg/name" -) - -// Keychain is an interface for resolving an image reference to a credential. -type Keychain interface { - // Resolve looks up the most appropriate credential for the specified registry. - Resolve(name.Registry) (Authenticator, error) -} - -// defaultKeychain implements Keychain with the semantics of the standard Docker -// credential keychain. -type defaultKeychain struct{} - -// configDir returns the directory containing Docker's config.json -func configDir() (string, error) { - if dc := os.Getenv("DOCKER_CONFIG"); dc != "" { - return dc, nil - } - if h := dockerUserHomeDir(); h != "" { - return filepath.Join(dockerUserHomeDir(), ".docker"), nil - } - return "", errNoHomeDir -} - -var errNoHomeDir = errors.New("could not determine home directory") - -// dockerUserHomeDir returns the current user's home directory, as interpreted by Docker. -func dockerUserHomeDir() string { - if runtime.GOOS == "windows" { - // Docker specifically expands "%USERPROFILE%" on Windows, - return os.Getenv("USERPROFILE") - } - // Docker defaults to "$HOME" Linux and OSX. - return os.Getenv("HOME") -} - -// authEntry is a helper for JSON parsing an "auth" entry of config.json -// This is not meant for direct consumption. -type authEntry struct { - Auth string `json:"auth"` - Username string `json:"username"` - Password string `json:"password"` -} - -// cfg is a helper for JSON parsing Docker's config.json -// This is not meant for direct consumption. -type cfg struct { - CredHelper map[string]string `json:"credHelpers,omitempty"` - CredStore string `json:"credsStore,omitempty"` - Auths map[string]authEntry `json:"auths,omitempty"` -} - -// There are a variety of ways a domain may get qualified within the Docker credential file. -// We enumerate them here as format strings. -var ( - domainForms = []string{ - // Allow naked domains - "%s", - // Allow scheme-prefixed. - "https://%s", - "http://%s", - // Allow scheme-prefixes with version in url path. - "https://%s/v1/", - "http://%s/v1/", - "https://%s/v2/", - "http://%s/v2/", - } - - // Export an instance of the default keychain. - DefaultKeychain Keychain = &defaultKeychain{} -) - -// Resolve implements Keychain. -func (dk *defaultKeychain) Resolve(reg name.Registry) (Authenticator, error) { - dir, err := configDir() - if err != nil { - log.Printf("Unable to determine config dir: %v", err) - return Anonymous, nil - } - file := filepath.Join(dir, "config.json") - content, err := ioutil.ReadFile(file) - if err != nil { - log.Printf("Unable to read %q: %v", file, err) - return Anonymous, nil - } - - var cf cfg - if err := json.Unmarshal(content, &cf); err != nil { - log.Printf("Unable to parse %q: %v", file, err) - return Anonymous, nil - } - - // Per-registry credential helpers take precedence. - if cf.CredHelper != nil { - for _, form := range domainForms { - if entry, ok := cf.CredHelper[fmt.Sprintf(form, reg.Name())]; ok { - return &helper{name: entry, domain: reg, r: &defaultRunner{}}, nil - } - } - } - - // A global credential helper is next in precedence. - if cf.CredStore != "" { - return &helper{name: cf.CredStore, domain: reg, r: &defaultRunner{}}, nil - } - - // Lastly, the 'auths' section directly contains basic auth entries. - if cf.Auths != nil { - for _, form := range domainForms { - if entry, ok := cf.Auths[fmt.Sprintf(form, reg.Name())]; ok { - if entry.Auth != "" { - return &auth{entry.Auth}, nil - } else if entry.Username != "" { - return &Basic{Username: entry.Username, Password: entry.Password}, nil - } else { - // TODO(mattmoor): Support identitytoken - // TODO(mattmoor): Support registrytoken - return nil, fmt.Errorf("Unsupported entry in \"auths\" section of %q", file) - } - } - } - } - - // Fallback on anonymous. - return Anonymous, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/multikeychain.go b/vendor/github.com/google/go-containerregistry/pkg/authn/multikeychain.go deleted file mode 100644 index 9d7fb314..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/authn/multikeychain.go +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 authn - -import ( - "github.com/google/go-containerregistry/pkg/name" -) - -type multiKeychain struct { - keychains []Keychain -} - -// Assert that our multi-keychain implements Keychain. -var _ (Keychain) = (*multiKeychain)(nil) - -// NewMultiKeychain composes a list of keychains into one new keychain. -func NewMultiKeychain(kcs ...Keychain) Keychain { - return &multiKeychain{keychains: kcs} -} - -// Resolve implements Keychain. -func (mk *multiKeychain) Resolve(reg name.Registry) (Authenticator, error) { - for _, kc := range mk.keychains { - auth, err := kc.Resolve(reg) - if err != nil { - return nil, err - } - if auth != Anonymous { - return auth, nil - } - } - return Anonymous, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/ko/build/build.go b/vendor/github.com/google/go-containerregistry/pkg/ko/build/build.go deleted file mode 100644 index 1ef43138..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/ko/build/build.go +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 build - -import ( - "github.com/google/go-containerregistry/pkg/v1" -) - -// Interface abstracts different methods for turning a supported importpath -// reference into a v1.Image. -type Interface interface { - // IsSupportedReference determines whether the given reference is to an importpath reference - // that Ko supports building. - // TODO(mattmoor): Verify that some base repo: foo.io/bar can be suffixed with this reference and parsed. - IsSupportedReference(string) bool - - // Build turns the given importpath reference into a v1.Image containing the Go binary. - Build(string) (v1.Image, error) -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/ko/build/doc.go b/vendor/github.com/google/go-containerregistry/pkg/ko/build/doc.go deleted file mode 100644 index a8cb7fbe..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/ko/build/doc.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 build defines methods for building a v1.Image reference from a -// Go binary reference. -package build diff --git a/vendor/github.com/google/go-containerregistry/pkg/ko/build/gobuild.go b/vendor/github.com/google/go-containerregistry/pkg/ko/build/gobuild.go deleted file mode 100644 index a6272ad8..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/ko/build/gobuild.go +++ /dev/null @@ -1,296 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 build - -import ( - "archive/tar" - "bytes" - "errors" - gb "go/build" - "io" - "io/ioutil" - "log" - "os" - "os/exec" - "path/filepath" - - "github.com/google/go-containerregistry/pkg/v1" - "github.com/google/go-containerregistry/pkg/v1/mutate" - "github.com/google/go-containerregistry/pkg/v1/tarball" - "github.com/google/go-containerregistry/pkg/v1/v1util" -) - -const appPath = "/ko-app" - -type GetBase func(string) (v1.Image, error) -type builder func(string) (string, error) - -type gobuild struct { - getBase GetBase - creationTime v1.Time - build builder -} - -type Option func(*gobuildOpener) error - -type gobuildOpener struct { - getBase GetBase - creationTime v1.Time - build builder -} - -func (gbo *gobuildOpener) Open() (Interface, error) { - if gbo.getBase == nil { - return nil, errors.New("a way of providing base images must be specified, see build.WithBaseImages.") - } - return &gobuild{ - getBase: gbo.getBase, - creationTime: gbo.creationTime, - build: gbo.build, - }, nil -} - -// NewGo returns a build.Interface implementation that: -// 1. builds go binaries named by importpath, -// 2. containerizes the binary on a suitable base, -func NewGo(options ...Option) (Interface, error) { - gbo := &gobuildOpener{ - build: build, - } - - for _, option := range options { - if err := option(gbo); err != nil { - return nil, err - } - } - return gbo.Open() -} - -// IsSupportedReference implements build.Interface -// -// Only valid importpaths that provide commands (i.e., are "package main") are -// supported. -func (*gobuild) IsSupportedReference(s string) bool { - p, err := gb.Import(s, gb.Default.GOPATH, gb.ImportComment) - if err != nil { - return false - } - return p.IsCommand() -} - -func build(ip string) (string, error) { - tmpDir, err := ioutil.TempDir("", "ko") - if err != nil { - return "", err - } - file := filepath.Join(tmpDir, "out") - - cmd := exec.Command("go", "build", "-o", file, ip) - - // Last one wins - // TODO(mattmoor): GOARCH=amd64 - cmd.Env = append(os.Environ(), "CGO_ENABLED=0", "GOOS=linux") - - var output bytes.Buffer - cmd.Stderr = &output - cmd.Stdout = &output - - if err := cmd.Run(); err != nil { - os.RemoveAll(tmpDir) - log.Printf("Unexpected error running \"go build\": %v\n%v", err, output.String()) - return "", err - } - return file, nil -} - -func tarBinary(binary string) ([]byte, error) { - buf := bytes.NewBuffer(nil) - tw := tar.NewWriter(buf) - defer tw.Close() - - file, err := os.Open(binary) - if err != nil { - return nil, err - } - defer file.Close() - stat, err := file.Stat() - if err != nil { - return nil, err - } - header := &tar.Header{ - Name: appPath, - Size: stat.Size(), - // Use a fixed Mode, so that this isn't sensitive to the directory and umask - // under which it was created. Additionally, windows can only set 0222, - // 0444, or 0666, none of which are executable. - Mode: 0555, - } - // write the header to the tarball archive - if err := tw.WriteHeader(header); err != nil { - return nil, err - } - // copy the file data to the tarball - if _, err := io.Copy(tw, file); err != nil { - return nil, err - } - - return buf.Bytes(), nil -} - -func kodataPath(s string) (string, error) { - p, err := gb.Import(s, gb.Default.GOPATH, gb.ImportComment) - if err != nil { - return "", err - } - return filepath.Join(p.Dir, "kodata"), nil -} - -// Where kodata lives in the image. -const kodataRoot = "/var/run/ko" - -func tarKoData(importpath string) ([]byte, error) { - buf := bytes.NewBuffer(nil) - tw := tar.NewWriter(buf) - defer tw.Close() - - root, err := kodataPath(importpath) - if err != nil { - return nil, err - } - - err = filepath.Walk(root, func(path string, info os.FileInfo, err error) error { - if path == root { - // Add an entry for /var/run/ko - header := &tar.Header{ - Name: kodataRoot, - Typeflag: tar.TypeDir, - } - // write the header to the tarball archive - return tw.WriteHeader(header) - } - if err != nil { - return err - } - // Skip other directories. - if info.Mode().IsDir() { - return nil - } - - // Chase symlinks. - info, err = os.Stat(path) - if err != nil { - return err - } - - // Open the file to copy it into the tarball. - file, err := os.Open(path) - if err != nil { - return err - } - defer file.Close() - - // Copy the file into the image tarball. - newPath := filepath.Join(kodataRoot, path[len(root):]) - header := &tar.Header{ - Name: newPath, - Size: info.Size(), - // Use a fixed Mode, so that this isn't sensitive to the directory and umask - // under which it was created. Additionally, windows can only set 0222, - // 0444, or 0666, none of which are executable. - Mode: 0555, - } - if err := tw.WriteHeader(header); err != nil { - return err - } - _, err = io.Copy(tw, file) - return err - }) - if err != nil { - return nil, err - } - - return buf.Bytes(), nil -} - -// Build implements build.Interface -func (gb *gobuild) Build(s string) (v1.Image, error) { - // Do the build into a temporary file. - file, err := gb.build(s) - if err != nil { - return nil, err - } - defer os.RemoveAll(filepath.Dir(file)) - - var layers []v1.Layer - // Create a layer from the kodata directory under this import path. - dataLayerBytes, err := tarKoData(s) - if err != nil { - return nil, err - } - dataLayer, err := tarball.LayerFromOpener(func() (io.ReadCloser, error) { - return v1util.NopReadCloser(bytes.NewBuffer(dataLayerBytes)), nil - }) - if err != nil { - return nil, err - } - layers = append(layers, dataLayer) - - // Construct a tarball with the binary and produce a layer. - binaryLayerBytes, err := tarBinary(file) - if err != nil { - return nil, err - } - binaryLayer, err := tarball.LayerFromOpener(func() (io.ReadCloser, error) { - return v1util.NopReadCloser(bytes.NewBuffer(binaryLayerBytes)), nil - }) - if err != nil { - return nil, err - } - layers = append(layers, binaryLayer) - - // Determine the appropriate base image for this import path. - base, err := gb.getBase(s) - if err != nil { - return nil, err - } - - // Augment the base image with our application layer. - withApp, err := mutate.AppendLayers(base, layers...) - if err != nil { - return nil, err - } - - // Start from a copy of the base image's config file, and set - // the entrypoint to our app. - cfg, err := withApp.ConfigFile() - if err != nil { - return nil, err - } - - cfg = cfg.DeepCopy() - cfg.Config.Entrypoint = []string{appPath} - cfg.Config.Env = append(cfg.Config.Env, "KO_DATA_PATH="+kodataRoot) - - image, err := mutate.Config(withApp, cfg.Config) - if err != nil { - return nil, err - } - - empty := v1.Time{} - if gb.creationTime != empty { - return mutate.CreatedAt(image, gb.creationTime) - } - return image, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/ko/build/options.go b/vendor/github.com/google/go-containerregistry/pkg/ko/build/options.go deleted file mode 100644 index 10f3ac10..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/ko/build/options.go +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 build - -import ( - "github.com/google/go-containerregistry/pkg/v1" -) - -// WithBaseImages is a functional option for overriding the base images -// that are used for different images. -func WithBaseImages(gb GetBase) Option { - return func(gbo *gobuildOpener) error { - gbo.getBase = gb - return nil - } -} - -// WithCreationTime is a functional option for overriding the creation -// time given to images. -func WithCreationTime(t v1.Time) Option { - return func(gbo *gobuildOpener) error { - gbo.creationTime = t - return nil - } -} - -// withBuilder is a functional option for overriding the way go binaries -// are built. This is exposed for testing. -func withBuilder(b builder) Option { - return func(gbo *gobuildOpener) error { - gbo.build = b - return nil - } -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/ko/publish/daemon.go b/vendor/github.com/google/go-containerregistry/pkg/ko/publish/daemon.go deleted file mode 100644 index fba29bdd..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/ko/publish/daemon.go +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 publish - -import ( - "fmt" - "log" - "strings" - - "github.com/google/go-containerregistry/pkg/name" - "github.com/google/go-containerregistry/pkg/v1" - "github.com/google/go-containerregistry/pkg/v1/daemon" -) - -const ( - LocalDomain = "ko.local" -) - -// demon is intentionally misspelled to avoid name collision (and drive Jon nuts). -type demon struct { - wo daemon.WriteOptions -} - -// NewDaemon returns a new publish.Interface that publishes images to a container daemon. -func NewDaemon(wo daemon.WriteOptions) Interface { - return &demon{wo} -} - -// Publish implements publish.Interface -func (d *demon) Publish(img v1.Image, s string) (name.Reference, error) { - // https://github.com/google/go-containerregistry/issues/212 - s = strings.ToLower(s) - - h, err := img.Digest() - if err != nil { - return nil, err - } - tag, err := name.NewTag(fmt.Sprintf("%s/%s:%s", LocalDomain, s, h.Hex), name.WeakValidation) - if err != nil { - return nil, err - } - log.Printf("Loading %v", tag) - if _, err := daemon.Write(tag, img, d.wo); err != nil { - return nil, err - } - log.Printf("Loaded %v", tag) - return &tag, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/ko/publish/default.go b/vendor/github.com/google/go-containerregistry/pkg/ko/publish/default.go deleted file mode 100644 index 51dc1694..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/ko/publish/default.go +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 publish - -import ( - "fmt" - "log" - "net/http" - "strings" - - "github.com/google/go-containerregistry/pkg/authn" - "github.com/google/go-containerregistry/pkg/name" - "github.com/google/go-containerregistry/pkg/v1" - "github.com/google/go-containerregistry/pkg/v1/remote" -) - -// defalt is intentionally misspelled to avoid keyword collision (and drive Jon nuts). -type defalt struct { - base string - t http.RoundTripper - auth authn.Authenticator - namer Namer -} - -type Option func(*defaultOpener) error - -type defaultOpener struct { - base string - t http.RoundTripper - auth authn.Authenticator - namer Namer -} - -// Namer is a function from a supported import path to the portion of the resulting -// image name that follows the "base" repository name. -type Namer func(string) string - -// identity is the default namer, so import paths are affixed as-is under the repository -// name for maximum clarity, e.g. -// gcr.io/foo/github.com/bar/baz/cmd/blah -// ^--base--^ ^-------import path-------^ -func identity(in string) string { return in } - -func (do *defaultOpener) Open() (Interface, error) { - return &defalt{ - base: do.base, - t: do.t, - auth: do.auth, - namer: do.namer, - }, nil -} - -// NewDefault returns a new publish.Interface that publishes references under the provided base -// repository using the default keychain to authenticate and the default naming scheme. -func NewDefault(base string, options ...Option) (Interface, error) { - do := &defaultOpener{ - base: base, - t: http.DefaultTransport, - auth: authn.Anonymous, - namer: identity, - } - - for _, option := range options { - if err := option(do); err != nil { - return nil, err - } - } - return do.Open() -} - -// Publish implements publish.Interface -func (d *defalt) Publish(img v1.Image, s string) (name.Reference, error) { - // https://github.com/google/go-containerregistry/issues/212 - s = strings.ToLower(s) - - // We push via tag (always latest) and then produce a digest because some registries do - // not support publishing by digest. - tag, err := name.NewTag(fmt.Sprintf("%s/%s:latest", d.base, d.namer(s)), name.WeakValidation) - if err != nil { - return nil, err - } - log.Printf("Publishing %v", tag) - if err := remote.Write(tag, img, d.auth, d.t, remote.WriteOptions{}); err != nil { - return nil, err - } - h, err := img.Digest() - if err != nil { - return nil, err - } - dig, err := name.NewDigest(fmt.Sprintf("%s/%s@%s", d.base, d.namer(s), h), name.WeakValidation) - if err != nil { - return nil, err - } - log.Printf("Published %v", dig) - return &dig, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/ko/publish/doc.go b/vendor/github.com/google/go-containerregistry/pkg/ko/publish/doc.go deleted file mode 100644 index 835d575a..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/ko/publish/doc.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 publish defines methods for publishing a v1.Image reference and -// returning the published digest for embedding back into a Kubernetes yaml. -package publish diff --git a/vendor/github.com/google/go-containerregistry/pkg/ko/publish/options.go b/vendor/github.com/google/go-containerregistry/pkg/ko/publish/options.go deleted file mode 100644 index f031e61c..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/ko/publish/options.go +++ /dev/null @@ -1,74 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 publish - -import ( - "log" - "net/http" - - "github.com/google/go-containerregistry/pkg/authn" - "github.com/google/go-containerregistry/pkg/name" -) - -// WithTransport is a functional option for overriding the default transport -// on a default publisher. -func WithTransport(t http.RoundTripper) Option { - return func(i *defaultOpener) error { - i.t = t - return nil - } -} - -// WithAuth is a functional option for overriding the default authenticator -// on a default publisher. -func WithAuth(auth authn.Authenticator) Option { - return func(i *defaultOpener) error { - i.auth = auth - return nil - } -} - -// WithAuthFromKeychain is a functional option for overriding the default -// authenticator on a default publisher using an authn.Keychain -func WithAuthFromKeychain(keys authn.Keychain) Option { - return func(i *defaultOpener) error { - // We parse this lazily because it is a repository prefix, which - // means that docker.io/mattmoor actually gets interpreted as - // docker.io/library/mattmoor, which gets tricky when we start - // appending things to it in the publisher. - repo, err := name.NewRepository(i.base, name.WeakValidation) - if err != nil { - return err - } - auth, err := keys.Resolve(repo.Registry) - if err != nil { - return err - } - if auth == authn.Anonymous { - log.Println("No matching credentials were found, falling back on anonymous") - } - i.auth = auth - return nil - } -} - -// WithNamer is a functional option for overriding the image naming behavior -// in our default publisher. -func WithNamer(n Namer) Option { - return func(i *defaultOpener) error { - i.namer = n - return nil - } -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/ko/publish/publish.go b/vendor/github.com/google/go-containerregistry/pkg/ko/publish/publish.go deleted file mode 100644 index a10a8090..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/ko/publish/publish.go +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 publish - -import ( - "github.com/google/go-containerregistry/pkg/name" - "github.com/google/go-containerregistry/pkg/v1" -) - -// Interface abstracts different methods for publishing images. -type Interface interface { - // Publish uploads the given v1.Image to a registry incorporating the - // provided string into the image's repository name. Returns the digest - // of the published image. - Publish(v1.Image, string) (name.Reference, error) -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/ko/resolve/doc.go b/vendor/github.com/google/go-containerregistry/pkg/ko/resolve/doc.go deleted file mode 100644 index 6d659452..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/ko/resolve/doc.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 resolve defines logic for resolving K8s yaml inputs to ko. -package resolve diff --git a/vendor/github.com/google/go-containerregistry/pkg/ko/resolve/resolve.go b/vendor/github.com/google/go-containerregistry/pkg/ko/resolve/resolve.go deleted file mode 100644 index 340d01ea..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/ko/resolve/resolve.go +++ /dev/null @@ -1,160 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 resolve - -import ( - "bytes" - "fmt" - "io" - "sync" - - "gopkg.in/yaml.v2" - - "golang.org/x/sync/errgroup" - - "github.com/google/go-containerregistry/pkg/ko/build" - "github.com/google/go-containerregistry/pkg/ko/publish" -) - -// ImageReferences resolves supported references to images within the input yaml -// to published image digests. -func ImageReferences(input []byte, builder build.Interface, publisher publish.Interface) ([]byte, error) { - // First, walk the input objects and collect a list of supported references - refs := make(map[string]struct{}) - // The loop is to support multi-document yaml files. - // This is handled by using a yaml.Decoder and reading objects until io.EOF, see: - // https://github.com/go-yaml/yaml/blob/v2.2.1/yaml.go#L124 - decoder := yaml.NewDecoder(bytes.NewBuffer(input)) - for { - var obj interface{} - if err := decoder.Decode(&obj); err != nil { - if err == io.EOF { - break - } - return nil, err - } - // This simply returns the replaced object, which we discard during the gathering phase. - if _, err := replaceRecursive(obj, func(ref string) (string, error) { - if builder.IsSupportedReference(ref) { - refs[ref] = struct{}{} - } - return ref, nil - }); err != nil { - return nil, err - } - } - - // Next, perform parallel builds for each of the supported references. - var sm sync.Map - var errg errgroup.Group - for ref := range refs { - ref := ref - errg.Go(func() error { - img, err := builder.Build(ref) - if err != nil { - return err - } - digest, err := publisher.Publish(img, ref) - if err != nil { - return err - } - sm.Store(ref, digest.String()) - return nil - }) - } - if err := errg.Wait(); err != nil { - return nil, err - } - - // Last, walk the inputs again and replace the supported references with their published images. - decoder = yaml.NewDecoder(bytes.NewBuffer(input)) - buf := bytes.NewBuffer(nil) - encoder := yaml.NewEncoder(buf) - for { - var obj interface{} - if err := decoder.Decode(&obj); err != nil { - if err == io.EOF { - return buf.Bytes(), nil - } - return nil, err - } - // Recursively walk input, replacing supported reference with our computed digests. - obj2, err := replaceRecursive(obj, func(ref string) (string, error) { - if !builder.IsSupportedReference(ref) { - return ref, nil - } - if val, ok := sm.Load(ref); ok { - return val.(string), nil - } - return "", fmt.Errorf("resolved reference to %q not found", ref) - }) - if err != nil { - return nil, err - } - - if err := encoder.Encode(obj2); err != nil { - return nil, err - } - } -} - -type replaceString func(string) (string, error) - -// replaceRecursive walks the provided untyped object recursively by switching -// on the type of the object at each level. It supports walking through the -// keys and values of maps, and the elements of an array. When a leaf of type -// string is encountered, this will call the provided replaceString function on -// it. This function does not support walking through struct types, but also -// should not need to as the input is expected to be the result of parsing yaml -// or json into an interface{}, which should only produce primitives, maps and -// arrays. This function will return a copy of the object rebuilt by the walk -// with the replacements made. -func replaceRecursive(obj interface{}, rs replaceString) (interface{}, error) { - switch typed := obj.(type) { - case map[interface{}]interface{}: - m2 := make(map[interface{}]interface{}, len(typed)) - for k, v := range typed { - k2, err := replaceRecursive(k, rs) - if err != nil { - return nil, err - } - v2, err := replaceRecursive(v, rs) - if err != nil { - return nil, err - } - m2[k2] = v2 - } - return m2, nil - - case []interface{}: - a2 := make([]interface{}, len(typed)) - for idx, v := range typed { - v2, err := replaceRecursive(v, rs) - if err != nil { - return nil, err - } - a2[idx] = v2 - } - return a2, nil - - case string: - // call our replaceString on this string leaf. - return rs(typed) - - default: - // leave other leaves alone. - return typed, nil - } -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/name/check.go b/vendor/github.com/google/go-containerregistry/pkg/name/check.go deleted file mode 100644 index 01a25d55..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/name/check.go +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 name - -import ( - "strings" - "unicode/utf8" -) - -// Strictness defines the level of strictness for name validation. -type Strictness int - -// Enums for CRUD operations. -const ( - StrictValidation Strictness = iota - WeakValidation -) - -// stripRunesFn returns a function which returns -1 (i.e. a value which -// signals deletion in strings.Map) for runes in 'runes', and the rune otherwise. -func stripRunesFn(runes string) func(rune) rune { - return func(r rune) rune { - if strings.ContainsRune(runes, r) { - return -1 - } - return r - } -} - -// checkElement checks a given named element matches character and length restrictions. -// Returns true if the given element adheres to the given restrictions, false otherwise. -func checkElement(name, element, allowedRunes string, minRunes, maxRunes int) error { - numRunes := utf8.RuneCountInString(element) - if (numRunes < minRunes) || (maxRunes < numRunes) { - return NewErrBadName("%s must be between %d and %d runes in length: %s", name, minRunes, maxRunes, element) - } else if len(strings.Map(stripRunesFn(allowedRunes), element)) != 0 { - return NewErrBadName("%s can only contain the runes `%s`: %s", name, allowedRunes, element) - } - return nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/name/digest.go b/vendor/github.com/google/go-containerregistry/pkg/name/digest.go deleted file mode 100644 index ea6287a8..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/name/digest.go +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 name defines structured types for representing image references. -package name - -import ( - "strings" -) - -const ( - // These have the form: sha256: - // TODO(dekkagaijin): replace with opencontainers/go-digest or docker/distribution's validation. - digestChars = "sh:0123456789abcdef" - digestDelim = "@" -) - -// Digest stores a digest name in a structured form. -type Digest struct { - Repository - digest string -} - -// Ensure Digest implements Reference -var _ Reference = (*Digest)(nil) - -// Context implements Reference. -func (d Digest) Context() Repository { - return d.Repository -} - -// Identifier implements Reference. -func (d Digest) Identifier() string { - return d.DigestStr() -} - -// DigestStr returns the digest component of the Digest. -func (d Digest) DigestStr() string { - return d.digest -} - -// Name returns the name from which the Digest was derived. -func (d Digest) Name() string { - return d.Repository.Name() + digestDelim + d.DigestStr() -} - -func (d Digest) String() string { - return d.Name() -} - -func checkDigest(name string) error { - return checkElement("digest", name, digestChars, 7+64, 7+64) -} - -// NewDigest returns a new Digest representing the given name, according to the given strictness. -func NewDigest(name string, strict Strictness) (Digest, error) { - // Split on "@" - parts := strings.Split(name, digestDelim) - if len(parts) != 2 { - return Digest{}, NewErrBadName("a digest must contain exactly one '@' separator (e.g. registry/repository@digest) saw: %s", name) - } - base := parts[0] - digest := parts[1] - - // We don't require a digest, but if we get one check it's valid, - // even when not being strict. - // If we are being strict, we want to validate the digest regardless in case - // it's empty. - if digest != "" || strict == StrictValidation { - if err := checkDigest(digest); err != nil { - return Digest{}, err - } - } - - repo, err := NewRepository(base, strict) - if err != nil { - return Digest{}, err - } - return Digest{repo, digest}, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/name/errors.go b/vendor/github.com/google/go-containerregistry/pkg/name/errors.go deleted file mode 100644 index 7847cc5d..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/name/errors.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 name - -import "fmt" - -// ErrBadName is an error for when a bad docker name is supplied. -type ErrBadName struct { - info string -} - -func (e *ErrBadName) Error() string { - return e.info -} - -// NewErrBadName returns a ErrBadName which returns the given formatted string from Error(). -func NewErrBadName(fmtStr string, args ...interface{}) *ErrBadName { - return &ErrBadName{fmt.Sprintf(fmtStr, args...)} -} - -// IsErrBadName returns true if the given error is an ErrBadName. -func IsErrBadName(err error) bool { - _, ok := err.(*ErrBadName) - return ok -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/name/ref.go b/vendor/github.com/google/go-containerregistry/pkg/name/ref.go deleted file mode 100644 index 58775daa..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/name/ref.go +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 name - -import ( - "errors" - "fmt" -) - -// Reference defines the interface that consumers use when they can -// take either a tag or a digest. -type Reference interface { - fmt.Stringer - - // Context accesses the Repository context of the reference. - Context() Repository - - // Identifier accesses the type-specific portion of the reference. - Identifier() string - - // Name is the fully-qualified reference name. - Name() string - - // Scope is the scope needed to access this reference. - Scope(string) string -} - -// ParseReference parses the string as a reference, either by tag or digest. -func ParseReference(s string, strict Strictness) (Reference, error) { - if t, err := NewTag(s, strict); err == nil { - return t, nil - } - if d, err := NewDigest(s, strict); err == nil { - return d, nil - } - // TODO: Combine above errors into something more useful? - return nil, errors.New("could not parse reference") -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/name/registry.go b/vendor/github.com/google/go-containerregistry/pkg/name/registry.go deleted file mode 100644 index 6d06cc5f..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/name/registry.go +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 name - -import "net/url" - -const ( - DefaultRegistry = "index.docker.io" - defaultRegistryAlias = "docker.io" -) - -// Registry stores a docker registry name in a structured form. -type Registry struct { - registry string -} - -// RegistryStr returns the registry component of the Registry. -func (r Registry) RegistryStr() string { - if r.registry != "" { - return r.registry - } - return DefaultRegistry -} - -// Name returns the name from which the Registry was derived. -func (r Registry) Name() string { - return r.RegistryStr() -} - -func (r Registry) String() string { - return r.Name() -} - -// Scope returns the scope required to access the registry. -func (r Registry) Scope(string) string { - // The only resource under 'registry' is 'catalog'. http://goo.gl/N9cN9Z - return "registry:catalog:*" -} - -func checkRegistry(name string) error { - // Per RFC 3986, registries (authorities) are required to be prefixed with "//" - // url.Host == hostname[:port] == authority - if url, err := url.Parse("//" + name); err != nil || url.Host != name { - return NewErrBadName("registries must be valid RFC 3986 URI authorities: %s", name) - } - return nil -} - -// NewRegistry returns a Registry based on the given name. -// Strict validation requires explicit, valid RFC 3986 URI authorities to be given. -func NewRegistry(name string, strict Strictness) (Registry, error) { - if strict == StrictValidation && len(name) == 0 { - return Registry{}, NewErrBadName("strict validation requires the registry to be explicitly defined") - } - - if err := checkRegistry(name); err != nil { - return Registry{}, err - } - - // Rewrite "docker.io" to "index.docker.io". - // See: https://github.com/google/go-containerregistry/issues/68 - if name == defaultRegistryAlias { - name = DefaultRegistry - } - - return Registry{registry: name}, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/name/repository.go b/vendor/github.com/google/go-containerregistry/pkg/name/repository.go deleted file mode 100644 index 43cc5b82..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/name/repository.go +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 name - -import ( - "fmt" - "strings" -) - -const ( - defaultNamespace = "library" - repositoryChars = "abcdefghijklmnopqrstuvwxyz0123456789_-./" - regRepoDelimiter = "/" -) - -// Repository stores a docker repository name in a structured form. -type Repository struct { - Registry - repository string -} - -// See https://docs.docker.com/docker-hub/official_repos -func hasImplicitNamespace(repo string, reg Registry) bool { - return !strings.ContainsRune(repo, '/') && reg.RegistryStr() == DefaultRegistry -} - -// RepositoryStr returns the repository component of the Repository. -func (r Repository) RepositoryStr() string { - if hasImplicitNamespace(r.repository, r.Registry) { - return fmt.Sprintf("%s/%s", defaultNamespace, r.repository) - } - return r.repository -} - -// Name returns the name from which the Repository was derived. -func (r Repository) Name() string { - regName := r.Registry.Name() - if regName != "" { - return regName + regRepoDelimiter + r.RepositoryStr() - } - return r.RepositoryStr() -} - -func (r Repository) String() string { - return r.Name() -} - -// Scope returns the scope required to perform the given action on the registry. -// TODO(jonjohnsonjr): consider moving scopes to a separate package. -func (r Repository) Scope(action string) string { - return fmt.Sprintf("repository:%s:%s", r.RepositoryStr(), action) -} - -func checkRepository(repository string) error { - return checkElement("repository", repository, repositoryChars, 2, 255) -} - -// NewRepository returns a new Repository representing the given name, according to the given strictness. -func NewRepository(name string, strict Strictness) (Repository, error) { - if len(name) == 0 { - return Repository{}, NewErrBadName("a repository name must be specified") - } - - var registry string - repo := name - parts := strings.SplitN(name, regRepoDelimiter, 2) - if len(parts) == 2 && (strings.ContainsRune(parts[0], '.') || strings.ContainsRune(parts[0], ':')) { - // The first part of the repository is treated as the registry domain - // iff it contains a '.' or ':' character, otherwise it is all repository - // and the domain defaults to Docker Hub. - registry = parts[0] - repo = parts[1] - } - - if err := checkRepository(repo); err != nil { - return Repository{}, err - } - - reg, err := NewRegistry(registry, strict) - if err != nil { - return Repository{}, err - } - if hasImplicitNamespace(repo, reg) && strict == StrictValidation { - return Repository{}, NewErrBadName("strict validation requires the full repository path (missing 'library')") - } - return Repository{reg, repo}, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/name/tag.go b/vendor/github.com/google/go-containerregistry/pkg/name/tag.go deleted file mode 100644 index b8375e1f..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/name/tag.go +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 name - -import ( - "strings" -) - -const ( - defaultTag = "latest" - // TODO(dekkagaijin): use the docker/distribution regexes for validation. - tagChars = "abcdefghijklmnopqrstuvwxyz0123456789_-.ABCDEFGHIJKLMNOPQRSTUVWXYZ" - tagDelim = ":" -) - -// Tag stores a docker tag name in a structured form. -type Tag struct { - Repository - tag string -} - -// Ensure Tag implements Reference -var _ Reference = (*Tag)(nil) - -// Context implements Reference. -func (t Tag) Context() Repository { - return t.Repository -} - -// Identifier implements Reference. -func (t Tag) Identifier() string { - return t.TagStr() -} - -// TagStr returns the tag component of the Tag. -func (t Tag) TagStr() string { - if t.tag != "" { - return t.tag - } - return defaultTag -} - -// Name returns the name from which the Tag was derived. -func (t Tag) Name() string { - return t.Repository.Name() + tagDelim + t.TagStr() -} - -func (t Tag) String() string { - return t.Name() -} - -// Scope returns the scope required to perform the given action on the tag. -func (t Tag) Scope(action string) string { - return t.Repository.Scope(action) -} - -func checkTag(name string) error { - return checkElement("tag", name, tagChars, 1, 127) -} - -// NewTag returns a new Tag representing the given name, according to the given strictness. -func NewTag(name string, strict Strictness) (Tag, error) { - base := name - tag := "" - - // Split on ":" - parts := strings.Split(name, tagDelim) - // Verify that we aren't confusing a tag for a hostname w/ port for the purposes of weak validation. - if len(parts) > 1 && !strings.Contains(parts[len(parts)-1], regRepoDelimiter) { - base = strings.Join(parts[:len(parts)-1], tagDelim) - tag = parts[len(parts)-1] - } - - // We don't require a tag, but if we get one check it's valid, - // even when not being strict. - // If we are being strict, we want to validate the tag regardless in case - // it's empty. - if tag != "" || strict == StrictValidation { - if err := checkTag(tag); err != nil { - return Tag{}, err - } - } - - repo, err := NewRepository(base, strict) - if err != nil { - return Tag{}, err - } - return Tag{repo, tag}, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/config.go b/vendor/github.com/google/go-containerregistry/pkg/v1/config.go deleted file mode 100644 index d1d809d9..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/config.go +++ /dev/null @@ -1,130 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 v1 - -import ( - "encoding/json" - "io" - "time" -) - -// ConfigFile is the configuration file that holds the metadata describing -// how to launch a container. The names of the fields are chosen to reflect -// the JSON payload of the ConfigFile as defined here: https://git.io/vrAEY -type ConfigFile struct { - Architecture string `json:"architecture"` - Container string `json:"container"` - Created Time `json:"created"` - DockerVersion string `json:"docker_version"` - History []History `json:"history"` - OS string `json:"os"` - RootFS RootFS `json:"rootfs"` - Config Config `json:"config"` - ContainerConfig Config `json:"container_config"` - OSVersion string `json:"osversion"` -} - -// History is one entry of a list recording how this container image was built. -type History struct { - Author string `json:"author"` - Created Time `json:"created"` - CreatedBy string `json:"created_by"` - Comment string `json:"comment"` - EmptyLayer bool `json:"empty_layer,omitempty"` -} - -// Time is a wrapper around time.Time to help with deep copying -type Time struct { - time.Time -} - -// DeepCopyInto creates a deep-copy of the Time value. The underlying time.Time -// type is effectively immutable in the time API, so it is safe to -// copy-by-assign, despite the presence of (unexported) Pointer fields. -func (t *Time) DeepCopyInto(out *Time) { - *out = *t -} - -// RootFS holds the ordered list of file system deltas that comprise the -// container image's root filesystem. -type RootFS struct { - Type string `json:"type"` - DiffIDs []Hash `json:"diff_ids"` -} - -// HealthConfig holds configuration settings for the HEALTHCHECK feature. -type HealthConfig struct { - // Test is the test to perform to check that the container is healthy. - // An empty slice means to inherit the default. - // The options are: - // {} : inherit healthcheck - // {"NONE"} : disable healthcheck - // {"CMD", args...} : exec arguments directly - // {"CMD-SHELL", command} : run command with system's default shell - Test []string `json:",omitempty"` - - // Zero means to inherit. Durations are expressed as integer nanoseconds. - Interval time.Duration `json:",omitempty"` // Interval is the time to wait between checks. - Timeout time.Duration `json:",omitempty"` // Timeout is the time to wait before considering the check to have hung. - StartPeriod time.Duration `json:",omitempty"` // The start period for the container to initialize before the retries starts to count down. - - // Retries is the number of consecutive failures needed to consider a container as unhealthy. - // Zero means inherit. - Retries int `json:",omitempty"` -} - -// Config is a submessage of the config file described as: -// The execution parameters which SHOULD be used as a base when running -// a container using the image. -// The names of the fields in this message are chosen to reflect the JSON -// payload of the Config as defined here: -// https://git.io/vrAET -// and -// https://github.com/opencontainers/image-spec/blob/master/config.md -type Config struct { - AttachStderr bool - AttachStdin bool - AttachStdout bool - Cmd []string - Healthcheck *HealthConfig - Domainname string - Entrypoint []string - Env []string - Hostname string - Image string - Labels map[string]string - OnBuild []string - OpenStdin bool - StdinOnce bool - Tty bool - User string - Volumes map[string]struct{} - WorkingDir string - ExposedPorts map[string]struct{} - ArgsEscaped bool - NetworkDisabled bool - MacAddress string - StopSignal string - Shell []string -} - -// ParseConfigFile parses the io.Reader's contents into a ConfigFile. -func ParseConfigFile(r io.Reader) (*ConfigFile, error) { - cf := ConfigFile{} - if err := json.NewDecoder(r).Decode(&cf); err != nil { - return nil, err - } - return &cf, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/doc.go b/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/doc.go deleted file mode 100644 index ac05d961..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/doc.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 daemon provides facilities for reading/writing v1.Image from/to -// a running daemon. -package daemon diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/image.go deleted file mode 100644 index 9783ff4a..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/image.go +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 daemon - -import ( - "bytes" - "context" - "io" - "io/ioutil" - - "github.com/google/go-containerregistry/pkg/v1/tarball" - - "github.com/docker/docker/client" - "github.com/google/go-containerregistry/pkg/name" - "github.com/google/go-containerregistry/pkg/v1" -) - -// image accesses an image from a docker daemon -type image struct { - v1.Image - - opener tarball.Opener - ref name.Reference -} - -var _ v1.Image = (*image)(nil) - -type imageOpener struct { - ref name.Reference - buffered bool -} - -type ImageOption func(*imageOpener) error - -func (i *imageOpener) Open() (v1.Image, error) { - var opener tarball.Opener - var err error - if i.buffered { - opener, err = bufferedOpener(i.ref) - } else { - opener, err = unbufferedOpener(i.ref) - } - if err != nil { - return nil, err - } - - tb, err := tarball.Image(opener, nil) - if err != nil { - return nil, err - } - img := &image{ - Image: tb, - } - return img, nil -} - -// API interface for testing. -type ImageSaver interface { - ImageSave(context.Context, []string) (io.ReadCloser, error) -} - -// This is a variable so we can override in tests. -var getImageSaver = func() (ImageSaver, error) { - return client.NewEnvClient() -} - -func saveImage(ref name.Reference) (io.ReadCloser, error) { - cli, err := getImageSaver() - if err != nil { - return nil, err - } - - return cli.ImageSave(context.Background(), []string{ref.Name()}) -} - -func bufferedOpener(ref name.Reference) (tarball.Opener, error) { - // Store the tarball in memory and return a new reader into the bytes each time we need to access something. - rc, err := saveImage(ref) - if err != nil { - return nil, err - } - defer rc.Close() - - imageBytes, err := ioutil.ReadAll(rc) - if err != nil { - return nil, err - } - // The tarball interface takes a function that it can call to return an opened reader-like object. - // Daemon comes from a set of bytes, so wrap them in a ReadCloser so it looks like an opened file. - return func() (io.ReadCloser, error) { - return ioutil.NopCloser(bytes.NewReader(imageBytes)), nil - }, nil -} - -func unbufferedOpener(ref name.Reference) (tarball.Opener, error) { - // To avoid storing the tarball in memory, do a save every time we need to access something. - return func() (io.ReadCloser, error) { - return saveImage(ref) - }, nil -} - -// Image provides access to an image reference from the Docker daemon, -// applying functional options to the underlying imageOpener before -// resolving the reference into a v1.Image. -func Image(ref name.Reference, options ...ImageOption) (v1.Image, error) { - i := &imageOpener{ - ref: ref, - buffered: true, // buffer by default - } - for _, option := range options { - if err := option(i); err != nil { - return nil, err - } - } - return i.Open() -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/options.go b/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/options.go deleted file mode 100644 index 39350766..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/options.go +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 daemon - -func WithBufferedOpener() ImageOption { - return func(i *imageOpener) error { - return i.setBuffered(true) - } -} - -func WithUnbufferedOpener() ImageOption { - return func(i *imageOpener) error { - return i.setBuffered(false) - } -} - -func (i *imageOpener) setBuffered(buffer bool) error { - i.buffered = buffer - return nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/write.go b/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/write.go deleted file mode 100644 index 196afa98..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/daemon/write.go +++ /dev/null @@ -1,72 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 daemon - -import ( - "context" - "io" - "io/ioutil" - - "github.com/pkg/errors" - - "github.com/docker/docker/api/types" - "github.com/docker/docker/client" - - "github.com/google/go-containerregistry/pkg/name" - "github.com/google/go-containerregistry/pkg/v1" - "github.com/google/go-containerregistry/pkg/v1/tarball" -) - -// API interface for testing. -type ImageLoader interface { - ImageLoad(context.Context, io.Reader, bool) (types.ImageLoadResponse, error) -} - -// This is a variable so we can override in tests. -var GetImageLoader = func() (ImageLoader, error) { - return client.NewEnvClient() -} - -// WriteOptions are used to expose optional information to guide or -// control the image write. -type WriteOptions struct { - // TODO(dlorenc): What kinds of knobs does the daemon expose? -} - -// Write saves the image into the daemon as the given tag. -func Write(tag name.Tag, img v1.Image, wo WriteOptions) (string, error) { - cli, err := GetImageLoader() - if err != nil { - return "", err - } - - pr, pw := io.Pipe() - go func() { - pw.CloseWithError(tarball.Write(tag, img, &tarball.WriteOptions{}, pw)) - }() - - // write the image in docker save format first, then load it - resp, err := cli.ImageLoad(context.Background(), pr, false) - if err != nil { - return "", errors.Wrapf(err, "error loading image") - } - defer resp.Body.Close() - b, readErr := ioutil.ReadAll(resp.Body) - response := string(b) - if readErr != nil { - return response, errors.Wrapf(err, "error reading load response body") - } - return response, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/doc.go b/vendor/github.com/google/go-containerregistry/pkg/v1/doc.go deleted file mode 100644 index c9b20317..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/doc.go +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 v1 defines structured types for OCI v1 images -// +k8s:deepcopy-gen=package - -//go:generate deepcopy-gen -O zz_deepcopy_generated --go-header-file $BOILER_PLATE_FILE -i . -package v1 diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/empty/doc.go b/vendor/github.com/google/go-containerregistry/pkg/v1/empty/doc.go deleted file mode 100644 index 1a521e9a..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/empty/doc.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 empty provides an implementation of v1.Image equivalent to "FROM scratch". -package empty diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/empty/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/empty/image.go deleted file mode 100644 index fa24748a..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/empty/image.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 empty - -import ( - "github.com/google/go-containerregistry/pkg/v1/random" -) - -// Image is a singleton empty image, think: FROM scratch. -var Image, _ = random.Image(0, 0) diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/hash.go b/vendor/github.com/google/go-containerregistry/pkg/v1/hash.go deleted file mode 100644 index f0db0d51..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/hash.go +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 v1 - -import ( - "crypto/sha256" - "encoding/hex" - "encoding/json" - "fmt" - "hash" - "io" - "strconv" - "strings" -) - -// Hash is an unqualified digest of some content, e.g. sha256:deadbeef -type Hash struct { - // Algorithm holds the algorithm used to compute the hash. - Algorithm string - - // Hex holds the hex portion of the content hash. - Hex string -} - -// String reverses NewHash returning the string-form of the hash. -func (h Hash) String() string { - return fmt.Sprintf("%s:%s", h.Algorithm, h.Hex) -} - -// NewHash validates the input string is a hash and returns a strongly type Hash object. -func NewHash(s string) (Hash, error) { - h := Hash{} - if err := h.parse(s); err != nil { - return Hash{}, err - } - return h, nil -} - -// MarshalJSON implements json.Marshaler -func (h *Hash) MarshalJSON() ([]byte, error) { - return json.Marshal(h.String()) -} - -// UnmarshalJSON implements json.Unmarshaler -func (h *Hash) UnmarshalJSON(data []byte) error { - s, err := strconv.Unquote(string(data)) - if err != nil { - return err - } - return h.parse(s) -} - -// Hasher returns a hash.Hash for the named algorithm (e.g. "sha256") -func Hasher(name string) (hash.Hash, error) { - switch name { - case "sha256": - return sha256.New(), nil - default: - return nil, fmt.Errorf("unsupported hash: %q", name) - } -} - -func (h *Hash) parse(unquoted string) error { - parts := strings.Split(unquoted, ":") - if len(parts) != 2 { - return fmt.Errorf("too many parts in hash: %s", unquoted) - } - - rest := strings.TrimLeft(parts[1], "0123456789abcdef") - if len(rest) != 0 { - return fmt.Errorf("found non-hex character in hash: %c", rest[0]) - } - - hasher, err := Hasher(parts[0]) - if err != nil { - return err - } - // Compare the hex to the expected size (2 hex characters per byte) - if len(parts[1]) != hasher.Size()*2 { - return fmt.Errorf("wrong number of hex digits for %s: %s", parts[0], parts[1]) - } - - h.Algorithm = parts[0] - h.Hex = parts[1] - return nil -} - -// SHA256 computes the Hash of the provided io.Reader's content. -func SHA256(r io.Reader) (Hash, int64, error) { - hasher := sha256.New() - n, err := io.Copy(hasher, r) - if err != nil { - return Hash{}, 0, err - } - return Hash{ - Algorithm: "sha256", - Hex: hex.EncodeToString(hasher.Sum(make([]byte, 0, hasher.Size()))), - }, n, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/image.go deleted file mode 100644 index 05568aae..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/image.go +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 v1 - -import ( - "github.com/google/go-containerregistry/pkg/v1/types" -) - -// Image defines the interface for interacting with an OCI v1 image. -type Image interface { - // Layers returns the ordered collection of filesystem layers that comprise this image. - // The order of the list is oldest/base layer first, and most-recent/top layer last. - Layers() ([]Layer, error) - - // BlobSet returns an unordered collection of all the blobs in the image. - BlobSet() (map[Hash]struct{}, error) - - // MediaType of this image's manifest. - MediaType() (types.MediaType, error) - - // ConfigName returns the hash of the image's config file. - ConfigName() (Hash, error) - - // ConfigFile returns this image's config file. - ConfigFile() (*ConfigFile, error) - - // RawConfigFile returns the serialized bytes of ConfigFile() - RawConfigFile() ([]byte, error) - - // Digest returns the sha256 of this image's manifest. - Digest() (Hash, error) - - // Manifest returns this image's Manifest object. - Manifest() (*Manifest, error) - - // RawManifest returns the serialized bytes of Manifest() - RawManifest() ([]byte, error) - - // LayerByDigest returns a Layer for interacting with a particular layer of - // the image, looking it up by "digest" (the compressed hash). - LayerByDigest(Hash) (Layer, error) - - // LayerByDiffID is an analog to LayerByDigest, looking up by "diff id" - // (the uncompressed hash). - LayerByDiffID(Hash) (Layer, error) -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/layer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/layer.go deleted file mode 100644 index 8b5091e4..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/layer.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 v1 - -import ( - "io" -) - -// Layer is an interface for accessing the properties of a particular layer of a v1.Image -type Layer interface { - // Digest returns the Hash of the compressed layer. - Digest() (Hash, error) - - // DiffID returns the Hash of the uncompressed layer. - DiffID() (Hash, error) - - // Compressed returns an io.ReadCloser for the compressed layer contents. - Compressed() (io.ReadCloser, error) - - // Uncompressed returns an io.ReadCloser for the uncompressed layer contents. - Uncompressed() (io.ReadCloser, error) - - // Size returns the compressed size of the Layer. - Size() (int64, error) -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/manifest.go b/vendor/github.com/google/go-containerregistry/pkg/v1/manifest.go deleted file mode 100644 index 6d714c9e..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/manifest.go +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 v1 - -import ( - "encoding/json" - "io" - - "github.com/google/go-containerregistry/pkg/v1/types" -) - -// Manifest represents the OCI image manifest in a structured way. -type Manifest struct { - SchemaVersion int64 `json:"schemaVersion"` - MediaType types.MediaType `json:"mediaType"` - Config Descriptor `json:"config"` - Layers []Descriptor `json:"layers"` - Annotations map[string]string `json:"annotations,omitempty"` -} - -// Descriptor holds a reference from the manifest to one of its constituent elements. -type Descriptor struct { - MediaType types.MediaType `json:"mediaType"` - Size int64 `json:"size"` - Digest Hash `json:"digest"` - URLs []string `json:"urls,omitempty"` - Annotations map[string]string `json:"annotations,omitempty"` -} - -// ParseManifest parses the io.Reader's contents into a Manifest. -func ParseManifest(r io.Reader) (*Manifest, error) { - m := Manifest{} - if err := json.NewDecoder(r).Decode(&m); err != nil { - return nil, err - } - return &m, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/doc.go b/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/doc.go deleted file mode 100644 index dfbd9951..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/doc.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 mutate provides facilities for mutating v1.Images of any kind. -package mutate diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/mutate.go b/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/mutate.go deleted file mode 100644 index b24d6896..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/mutate.go +++ /dev/null @@ -1,513 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 mutate - -import ( - "archive/tar" - "bytes" - "encoding/json" - "errors" - "fmt" - "io" - "io/ioutil" - "path/filepath" - "strings" - "time" - - "github.com/google/go-containerregistry/pkg/v1" - "github.com/google/go-containerregistry/pkg/v1/empty" - "github.com/google/go-containerregistry/pkg/v1/partial" - "github.com/google/go-containerregistry/pkg/v1/tarball" - "github.com/google/go-containerregistry/pkg/v1/types" - "github.com/google/go-containerregistry/pkg/v1/v1util" -) - -const whiteoutPrefix = ".wh." - -// Addendum contains layers and history to be appended -// to a base image -type Addendum struct { - Layer v1.Layer - History v1.History -} - -// AppendLayers applies layers to a base image -func AppendLayers(base v1.Image, layers ...v1.Layer) (v1.Image, error) { - additions := make([]Addendum, 0, len(layers)) - for _, layer := range layers { - additions = append(additions, Addendum{Layer: layer}) - } - - return Append(base, additions...) -} - -// Append will apply the list of addendums to the base image -func Append(base v1.Image, adds ...Addendum) (v1.Image, error) { - if len(adds) == 0 { - return base, nil - } - - if err := validate(adds); err != nil { - return nil, err - } - - m, err := base.Manifest() - if err != nil { - return nil, err - } - - cf, err := base.ConfigFile() - if err != nil { - return nil, err - } - - image := &image{ - Image: base, - manifest: m.DeepCopy(), - configFile: cf.DeepCopy(), - diffIDMap: make(map[v1.Hash]v1.Layer), - digestMap: make(map[v1.Hash]v1.Layer), - } - - diffIDs := image.configFile.RootFS.DiffIDs - history := image.configFile.History - - for _, add := range adds { - diffID, err := add.Layer.DiffID() - if err != nil { - return nil, err - } - diffIDs = append(diffIDs, diffID) - history = append(history, add.History) - image.diffIDMap[diffID] = add.Layer - } - - manifestLayers := image.manifest.Layers - - for _, add := range adds { - d := v1.Descriptor{ - MediaType: types.DockerLayer, - } - - if d.Size, err = add.Layer.Size(); err != nil { - return nil, err - } - - if d.Digest, err = add.Layer.Digest(); err != nil { - return nil, err - } - - manifestLayers = append(manifestLayers, d) - image.digestMap[d.Digest] = add.Layer - } - - image.configFile.RootFS.DiffIDs = diffIDs - image.configFile.History = history - image.manifest.Layers = manifestLayers - - rcfg, err := image.RawConfigFile() - if err != nil { - return nil, err - } - d, sz, err := v1.SHA256(bytes.NewBuffer(rcfg)) - if err != nil { - return nil, err - } - image.manifest.Config.Digest = d - image.manifest.Config.Size = sz - - return image, nil -} - -// Config mutates the provided v1.Image to have the provided v1.Config -func Config(base v1.Image, cfg v1.Config) (v1.Image, error) { - cf, err := base.ConfigFile() - if err != nil { - return nil, err - } - - cf.Config = cfg - - return configFile(base, cf) -} - -func configFile(base v1.Image, cfg *v1.ConfigFile) (v1.Image, error) { - m, err := base.Manifest() - if err != nil { - return nil, err - } - - image := &image{ - Image: base, - manifest: m.DeepCopy(), - configFile: cfg, - digestMap: make(map[v1.Hash]v1.Layer), - } - - rcfg, err := image.RawConfigFile() - if err != nil { - return nil, err - } - d, sz, err := v1.SHA256(bytes.NewBuffer(rcfg)) - if err != nil { - return nil, err - } - image.manifest.Config.Digest = d - image.manifest.Config.Size = sz - return image, nil -} - -// CreatedAt mutates the provided v1.Image to have the provided v1.Time -func CreatedAt(base v1.Image, created v1.Time) (v1.Image, error) { - cf, err := base.ConfigFile() - if err != nil { - return nil, err - } - - cfg := cf.DeepCopy() - cfg.Created = created - - return configFile(base, cfg) -} - -type image struct { - v1.Image - configFile *v1.ConfigFile - manifest *v1.Manifest - diffIDMap map[v1.Hash]v1.Layer - digestMap map[v1.Hash]v1.Layer -} - -// Layers returns the ordered collection of filesystem layers that comprise this image. -// The order of the list is oldest/base layer first, and most-recent/top layer last. -func (i *image) Layers() ([]v1.Layer, error) { - diffIDs, err := partial.DiffIDs(i) - if err != nil { - return nil, err - } - ls := make([]v1.Layer, 0, len(diffIDs)) - for _, h := range diffIDs { - l, err := i.LayerByDiffID(h) - if err != nil { - return nil, err - } - ls = append(ls, l) - } - return ls, nil -} - -// BlobSet returns an unordered collection of all the blobs in the image. -func (i *image) BlobSet() (map[v1.Hash]struct{}, error) { - return partial.BlobSet(i) -} - -// ConfigName returns the hash of the image's config file. -func (i *image) ConfigName() (v1.Hash, error) { - return partial.ConfigName(i) -} - -// ConfigFile returns this image's config file. -func (i *image) ConfigFile() (*v1.ConfigFile, error) { - return i.configFile, nil -} - -// RawConfigFile returns the serialized bytes of ConfigFile() -func (i *image) RawConfigFile() ([]byte, error) { - return json.Marshal(i.configFile) -} - -// Digest returns the sha256 of this image's manifest. -func (i *image) Digest() (v1.Hash, error) { - return partial.Digest(i) -} - -// Manifest returns this image's Manifest object. -func (i *image) Manifest() (*v1.Manifest, error) { - return i.manifest, nil -} - -// RawManifest returns the serialized bytes of Manifest() -func (i *image) RawManifest() ([]byte, error) { - return json.Marshal(i.manifest) -} - -// LayerByDigest returns a Layer for interacting with a particular layer of -// the image, looking it up by "digest" (the compressed hash). -func (i *image) LayerByDigest(h v1.Hash) (v1.Layer, error) { - if cn, err := i.ConfigName(); err != nil { - return nil, err - } else if h == cn { - return partial.ConfigLayer(i) - } - if layer, ok := i.digestMap[h]; ok { - return layer, nil - } - return i.Image.LayerByDigest(h) -} - -// LayerByDiffID is an analog to LayerByDigest, looking up by "diff id" -// (the uncompressed hash). -func (i *image) LayerByDiffID(h v1.Hash) (v1.Layer, error) { - if layer, ok := i.diffIDMap[h]; ok { - return layer, nil - } - return i.Image.LayerByDiffID(h) -} - -func validate(adds []Addendum) error { - for _, add := range adds { - if add.Layer == nil { - return errors.New("Unable to add a nil layer to the image") - } - } - return nil -} - -// Extract takes an image and returns an io.ReadCloser containing the image's -// flattened filesystem. -// -// Callers can read the filesystem contents by passing the reader to -// tar.NewReader, or io.Copy it directly to some output. -// -// If a caller doesn't read the full contents, they should Close it to free up -// resources used during extraction. -// -// Adapted from https://github.com/google/containerregistry/blob/master/client/v2_2/docker_image_.py#L731 -func Extract(img v1.Image) io.ReadCloser { - pr, pw := io.Pipe() - - go func() { - // Close the writer with any errors encountered during - // extraction. These errors will be returned by the reader end - // on subsequent reads. If err == nil, the reader will return - // EOF. - pw.CloseWithError(extract(img, pw)) - }() - - return pr -} - -func extract(img v1.Image, w io.Writer) error { - tarWriter := tar.NewWriter(w) - defer tarWriter.Close() - - fileMap := map[string]bool{} - - layers, err := img.Layers() - if err != nil { - return fmt.Errorf("retrieving image layers: %v", err) - } - // we iterate through the layers in reverse order because it makes handling - // whiteout layers more efficient, since we can just keep track of the removed - // files as we see .wh. layers and ignore those in previous layers. - for i := len(layers) - 1; i >= 0; i-- { - layer := layers[i] - layerReader, err := layer.Uncompressed() - if err != nil { - return fmt.Errorf("reading layer contents: %v", err) - } - tarReader := tar.NewReader(layerReader) - for { - header, err := tarReader.Next() - if err == io.EOF { - break - } - if err != nil { - return fmt.Errorf("reading tar: %v", err) - } - - basename := filepath.Base(header.Name) - dirname := filepath.Dir(header.Name) - tombstone := strings.HasPrefix(basename, whiteoutPrefix) - if tombstone { - basename = basename[len(whiteoutPrefix):] - } - - // check if we have seen value before - // if we're checking a directory, don't filepath.Join names - var name string - if header.Typeflag == tar.TypeDir { - name = header.Name - } else { - name = filepath.Join(dirname, basename) - } - - if _, ok := fileMap[name]; ok { - continue - } - - // check for a whited out parent directory - if inWhiteoutDir(fileMap, name) { - continue - } - - // mark file as handled. non-directory implicitly tombstones - // any entries with a matching (or child) name - fileMap[name] = tombstone || !(header.Typeflag == tar.TypeDir) - if !tombstone { - tarWriter.WriteHeader(header) - if header.Size > 0 { - if _, err := io.Copy(tarWriter, tarReader); err != nil { - return err - } - } - } - } - } - return nil -} - -func inWhiteoutDir(fileMap map[string]bool, file string) bool { - for { - if file == "" { - break - } - dirname := filepath.Dir(file) - if file == dirname { - break - } - if val, ok := fileMap[dirname]; ok && val { - return true - } - file = dirname - } - return false -} - -// Time sets all timestamps in an image to the given timestamp. -func Time(img v1.Image, t time.Time) (v1.Image, error) { - newImage := empty.Image - - layers, err := img.Layers() - if err != nil { - - return nil, fmt.Errorf("Error getting image layers: %v", err) - } - - // Strip away all timestamps from layers - var newLayers []v1.Layer - for _, layer := range layers { - newLayer, err := layerTime(layer, t) - if err != nil { - return nil, fmt.Errorf("Error setting layer times: %v", err) - } - newLayers = append(newLayers, newLayer) - } - - newImage, err = AppendLayers(newImage, newLayers...) - if err != nil { - return nil, fmt.Errorf("Error appending layers: %v", err) - } - - ocf, err := img.ConfigFile() - if err != nil { - return nil, fmt.Errorf("Error getting original config file: %v", err) - } - - cf, err := newImage.ConfigFile() - if err != nil { - return nil, fmt.Errorf("Error setting config file: %v", err) - } - - cfg := cf.DeepCopy() - - // Copy basic config over - cfg.Config = ocf.Config - cfg.ContainerConfig = ocf.ContainerConfig - - // Strip away timestamps from the config file - cfg.Created = v1.Time{Time: t} - - for _, h := range cfg.History { - h.Created = v1.Time{Time: t} - } - - return configFile(newImage, cfg) -} - -func layerTime(layer v1.Layer, t time.Time) (v1.Layer, error) { - layerReader, err := layer.Uncompressed() - if err != nil { - return nil, fmt.Errorf("Error getting layer: %v", err) - } - w := new(bytes.Buffer) - tarWriter := tar.NewWriter(w) - defer tarWriter.Close() - - tarReader := tar.NewReader(layerReader) - for { - header, err := tarReader.Next() - if err == io.EOF { - break - } - if err != nil { - return nil, fmt.Errorf("Error reading layer: %v", err) - } - - header.ModTime = t - if err := tarWriter.WriteHeader(header); err != nil { - return nil, fmt.Errorf("Error writing tar header: %v", err) - } - - if header.Typeflag == tar.TypeReg { - if _, err = io.Copy(tarWriter, tarReader); err != nil { - return nil, fmt.Errorf("Error writing layer file: %v", err) - } - } - } - - b := w.Bytes() - // gzip the contents, then create the layer - opener := func() (io.ReadCloser, error) { - g, err := v1util.GzipReadCloser(ioutil.NopCloser(bytes.NewReader(b))) - if err != nil { - return nil, fmt.Errorf("Error compressing layer: %v", err) - } - - return g, nil - } - layer, err = tarball.LayerFromOpener(opener) - if err != nil { - return nil, fmt.Errorf("Error creating layer: %v", err) - } - - return layer, nil -} - -// Canonical is a helper function to combine Time and configFile -// to remove any randomness during a docker build. -func Canonical(img v1.Image) (v1.Image, error) { - // Set all timestamps to 0 - created := time.Time{} - img, err := Time(img, created) - if err != nil { - return nil, err - } - - cf, err := img.ConfigFile() - if err != nil { - return nil, err - } - - // Get rid of host-dependent random config - cfg := cf.DeepCopy() - - cfg.Container = "" - cfg.Config.Hostname = "" - cfg.ContainerConfig.Hostname = "" - cfg.DockerVersion = "" - - return configFile(img, cfg) -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/rebase.go b/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/rebase.go deleted file mode 100644 index 9a4d4656..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/mutate/rebase.go +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 mutate - -import ( - "fmt" - - "github.com/google/go-containerregistry/pkg/v1" - "github.com/google/go-containerregistry/pkg/v1/empty" -) - -type RebaseOptions struct { - // TODO(jasonhall): Rebase seam hint. -} - -func Rebase(orig, oldBase, newBase v1.Image, opts *RebaseOptions) (v1.Image, error) { - // Verify that oldBase's layers are present in orig, otherwise orig is - // not based on oldBase at all. - origLayers, err := orig.Layers() - if err != nil { - return nil, fmt.Errorf("failed to get layers for original: %v", err) - } - oldBaseLayers, err := oldBase.Layers() - if err != nil { - return nil, err - } - if len(oldBaseLayers) > len(origLayers) { - return nil, fmt.Errorf("image %q is not based on %q (too few layers)", orig, oldBase) - } - for i, l := range oldBaseLayers { - oldLayerDigest, err := l.Digest() - if err != nil { - return nil, fmt.Errorf("failed to get digest of layer %d of %q: %v", i, oldBase, err) - } - origLayerDigest, err := origLayers[i].Digest() - if err != nil { - return nil, fmt.Errorf("failed to get digest of layer %d of %q: %v", i, orig, err) - } - if oldLayerDigest != origLayerDigest { - return nil, fmt.Errorf("image %q is not based on %q (layer %d mismatch)", orig, oldBase, i) - } - } - - origConfig, err := orig.ConfigFile() - if err != nil { - return nil, fmt.Errorf("failed to get config for original: %v", err) - } - - // Stitch together an image that contains: - // - original image's config - // - new base image's layers + top of original image's layers - // - new base image's history + top of original image's history - rebasedImage, err := Config(empty.Image, *origConfig.Config.DeepCopy()) - if err != nil { - return nil, fmt.Errorf("failed to create empty image with original config: %v", err) - } - // Get new base layers and config for history. - newBaseLayers, err := newBase.Layers() - if err != nil { - return nil, fmt.Errorf("could not get new base layers for new base: %v", err) - } - newConfig, err := newBase.ConfigFile() - if err != nil { - return nil, fmt.Errorf("could not get config for new base: %v", err) - } - // Add new base layers. - for i := range newBaseLayers { - rebasedImage, err = Append(rebasedImage, Addendum{ - Layer: newBaseLayers[i], - History: newConfig.History[i], - }) - if err != nil { - return nil, fmt.Errorf("failed to append layer %d of new base layers", i) - } - } - // Add original layers above the old base. - start := len(oldBaseLayers) - for i := range origLayers[start:] { - rebasedImage, err = Append(rebasedImage, Addendum{ - Layer: origLayers[start+i], - History: origConfig.History[start+i], - }) - if err != nil { - return nil, fmt.Errorf("failed to append layer %d of original layers", i) - } - } - return rebasedImage, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/compressed.go b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/compressed.go deleted file mode 100644 index e6e4f4d4..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/compressed.go +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 partial - -import ( - "io" - - "github.com/google/go-containerregistry/pkg/v1" - "github.com/google/go-containerregistry/pkg/v1/v1util" -) - -// CompressedLayer represents the bare minimum interface a natively -// compressed layer must implement for us to produce a v1.Layer -type CompressedLayer interface { - // Digest returns the Hash of the compressed layer. - Digest() (v1.Hash, error) - - // Compressed returns an io.ReadCloser for the compressed layer contents. - Compressed() (io.ReadCloser, error) - - // Size returns the compressed size of the Layer. - Size() (int64, error) -} - -// compressedLayerExtender implements v1.Image using the compressed base properties. -type compressedLayerExtender struct { - CompressedLayer -} - -// Uncompressed implements v1.Layer -func (ule *compressedLayerExtender) Uncompressed() (io.ReadCloser, error) { - u, err := ule.Compressed() - if err != nil { - return nil, err - } - return v1util.GunzipReadCloser(u) -} - -// DiffID implements v1.Layer -func (ule *compressedLayerExtender) DiffID() (v1.Hash, error) { - // If our nested CompressedLayer implements DiffID, - // then delegate to it instead. - if wdi, ok := ule.CompressedLayer.(WithDiffID); ok { - return wdi.DiffID() - } - r, err := ule.Uncompressed() - if err != nil { - return v1.Hash{}, err - } - defer r.Close() - h, _, err := v1.SHA256(r) - return h, err -} - -// CompressedToLayer fills in the missing methods from a CompressedLayer so that it implements v1.Layer -func CompressedToLayer(ul CompressedLayer) (v1.Layer, error) { - return &compressedLayerExtender{ul}, nil -} - -// CompressedImageCore represents the base minimum interface a natively -// compressed image must implement for us to produce a v1.Image. -type CompressedImageCore interface { - imageCore - - // RawManifest returns the serialized bytes of the manifest. - RawManifest() ([]byte, error) - - // LayerByDigest is a variation on the v1.Image method, which returns - // a CompressedLayer instead. - LayerByDigest(v1.Hash) (CompressedLayer, error) -} - -// compressedImageExtender implements v1.Image by extending CompressedImageCore with the -// appropriate methods computed from the minimal core. -type compressedImageExtender struct { - CompressedImageCore -} - -// Assert that our extender type completes the v1.Image interface -var _ v1.Image = (*compressedImageExtender)(nil) - -// BlobSet implements v1.Image -func (i *compressedImageExtender) BlobSet() (map[v1.Hash]struct{}, error) { - return BlobSet(i) -} - -// Digest implements v1.Image -func (i *compressedImageExtender) Digest() (v1.Hash, error) { - return Digest(i) -} - -// ConfigName implements v1.Image -func (i *compressedImageExtender) ConfigName() (v1.Hash, error) { - return ConfigName(i) -} - -// Layers implements v1.Image -func (i *compressedImageExtender) Layers() ([]v1.Layer, error) { - hs, err := FSLayers(i) - if err != nil { - return nil, err - } - ls := make([]v1.Layer, 0, len(hs)) - for _, h := range hs { - l, err := i.LayerByDigest(h) - if err != nil { - return nil, err - } - ls = append(ls, l) - } - return ls, nil -} - -// LayerByDigest implements v1.Image -func (i *compressedImageExtender) LayerByDigest(h v1.Hash) (v1.Layer, error) { - cl, err := i.CompressedImageCore.LayerByDigest(h) - if err != nil { - return nil, err - } - return CompressedToLayer(cl) -} - -// LayerByDiffID implements v1.Image -func (i *compressedImageExtender) LayerByDiffID(h v1.Hash) (v1.Layer, error) { - h, err := DiffIDToBlob(i, h) - if err != nil { - return nil, err - } - return i.LayerByDigest(h) -} - -// ConfigFile implements v1.Image -func (i *compressedImageExtender) ConfigFile() (*v1.ConfigFile, error) { - return ConfigFile(i) -} - -// Manifest implements v1.Image -func (i *compressedImageExtender) Manifest() (*v1.Manifest, error) { - return Manifest(i) -} - -// CompressedToImage fills in the missing methods from a CompressedImageCore so that it implements v1.Image -func CompressedToImage(cic CompressedImageCore) (v1.Image, error) { - return &compressedImageExtender{ - CompressedImageCore: cic, - }, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/doc.go b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/doc.go deleted file mode 100644 index 153dfe4d..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/doc.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 partial defines methods for building up a v1.Image from -// minimal subsets that are sufficient for defining a v1.Image. -package partial diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/image.go deleted file mode 100644 index 5d6da39d..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/image.go +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 partial - -import ( - "github.com/google/go-containerregistry/pkg/v1/types" -) - -// imageCore is the core set of properties without which we cannot build a v1.Image -type imageCore interface { - // RawConfigFile returns the serialized bytes of this image's config file. - RawConfigFile() ([]byte, error) - - // MediaType of this image's manifest. - MediaType() (types.MediaType, error) -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/uncompressed.go b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/uncompressed.go deleted file mode 100644 index 7afa187b..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/uncompressed.go +++ /dev/null @@ -1,229 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 partial - -import ( - "bytes" - "io" - "sync" - - "github.com/google/go-containerregistry/pkg/v1" - "github.com/google/go-containerregistry/pkg/v1/types" - "github.com/google/go-containerregistry/pkg/v1/v1util" -) - -// UncompressedLayer represents the bare minimum interface a natively -// uncompressed layer must implement for us to produce a v1.Layer -type UncompressedLayer interface { - // DiffID returns the Hash of the uncompressed layer. - DiffID() (v1.Hash, error) - - // Uncompressed returns an io.ReadCloser for the uncompressed layer contents. - Uncompressed() (io.ReadCloser, error) -} - -// uncompressedLayerExtender implements v1.Image using the uncompressed base properties. -type uncompressedLayerExtender struct { - UncompressedLayer - // TODO(mattmoor): Memoize size/hash so that the methods aren't twice as - // expensive as doing this manually. -} - -// Compressed implements v1.Layer -func (ule *uncompressedLayerExtender) Compressed() (io.ReadCloser, error) { - u, err := ule.Uncompressed() - if err != nil { - return nil, err - } - return v1util.GzipReadCloser(u) -} - -// Digest implements v1.Layer -func (ule *uncompressedLayerExtender) Digest() (v1.Hash, error) { - r, err := ule.Compressed() - if err != nil { - return v1.Hash{}, err - } - defer r.Close() - h, _, err := v1.SHA256(r) - return h, err -} - -// Size implements v1.Layer -func (ule *uncompressedLayerExtender) Size() (int64, error) { - r, err := ule.Compressed() - if err != nil { - return -1, err - } - defer r.Close() - _, i, err := v1.SHA256(r) - return i, err -} - -// UncompressedToLayer fills in the missing methods from an UncompressedLayer so that it implements v1.Layer -func UncompressedToLayer(ul UncompressedLayer) (v1.Layer, error) { - return &uncompressedLayerExtender{ul}, nil -} - -// UncompressedImageCore represents the bare minimum interface a natively -// uncompressed image must implement for us to produce a v1.Image -type UncompressedImageCore interface { - imageCore - - // LayerByDiffID is a variation on the v1.Image method, which returns - // an UncompressedLayer instead. - LayerByDiffID(v1.Hash) (UncompressedLayer, error) -} - -// UncompressedToImage fills in the missing methods from an UncompressedImageCore so that it implements v1.Image. -func UncompressedToImage(uic UncompressedImageCore) (v1.Image, error) { - return &uncompressedImageExtender{ - UncompressedImageCore: uic, - }, nil -} - -// uncompressedImageExtender implements v1.Image by extending UncompressedImageCore with the -// appropriate methods computed from the minimal core. -type uncompressedImageExtender struct { - UncompressedImageCore - - lock sync.Mutex - manifest *v1.Manifest -} - -// Assert that our extender type completes the v1.Image interface -var _ v1.Image = (*uncompressedImageExtender)(nil) - -// BlobSet implements v1.Image -func (i *uncompressedImageExtender) BlobSet() (map[v1.Hash]struct{}, error) { - return BlobSet(i) -} - -// Digest implements v1.Image -func (i *uncompressedImageExtender) Digest() (v1.Hash, error) { - return Digest(i) -} - -// Manifest implements v1.Image -func (i *uncompressedImageExtender) Manifest() (*v1.Manifest, error) { - i.lock.Lock() - defer i.lock.Unlock() - if i.manifest != nil { - return i.manifest, nil - } - - b, err := i.RawConfigFile() - if err != nil { - return nil, err - } - - cfgHash, cfgSize, err := v1.SHA256(bytes.NewReader(b)) - if err != nil { - return nil, err - } - - m := &v1.Manifest{ - SchemaVersion: 2, - MediaType: types.DockerManifestSchema2, - Config: v1.Descriptor{ - MediaType: types.DockerConfigJSON, - Size: cfgSize, - Digest: cfgHash, - }, - } - - ls, err := i.Layers() - if err != nil { - return nil, err - } - - m.Layers = make([]v1.Descriptor, len(ls)) - for i, l := range ls { - sz, err := l.Size() - if err != nil { - return nil, err - } - h, err := l.Digest() - if err != nil { - return nil, err - } - - m.Layers[i] = v1.Descriptor{ - MediaType: types.DockerLayer, - Size: sz, - Digest: h, - } - } - - i.manifest = m - return i.manifest, nil -} - -// RawManifest implements v1.Image -func (i *uncompressedImageExtender) RawManifest() ([]byte, error) { - return RawManifest(i) -} - -// ConfigName implements v1.Image -func (i *uncompressedImageExtender) ConfigName() (v1.Hash, error) { - return ConfigName(i) -} - -// ConfigFile implements v1.Image -func (i *uncompressedImageExtender) ConfigFile() (*v1.ConfigFile, error) { - return ConfigFile(i) -} - -// Layers implements v1.Image -func (i *uncompressedImageExtender) Layers() ([]v1.Layer, error) { - diffIDs, err := DiffIDs(i) - if err != nil { - return nil, err - } - ls := make([]v1.Layer, 0, len(diffIDs)) - for _, h := range diffIDs { - l, err := i.LayerByDiffID(h) - if err != nil { - return nil, err - } - ls = append(ls, l) - } - return ls, nil -} - -// LayerByDiffID implements v1.Image -func (i *uncompressedImageExtender) LayerByDiffID(diffID v1.Hash) (v1.Layer, error) { - ul, err := i.UncompressedImageCore.LayerByDiffID(diffID) - if err != nil { - return nil, err - } - return UncompressedToLayer(ul) -} - -// LayerByDigest implements v1.Image -func (i *uncompressedImageExtender) LayerByDigest(h v1.Hash) (v1.Layer, error) { - // Support returning the ConfigFile when asked for its hash. - if cfgName, err := i.ConfigName(); err != nil { - return nil, err - } else if cfgName == h { - return ConfigLayer(i) - } - - diffID, err := BlobToDiffID(i, h) - if err != nil { - return nil, err - } - return i.LayerByDiffID(diffID) -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/with.go b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/with.go deleted file mode 100644 index bc6fd8e9..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/partial/with.go +++ /dev/null @@ -1,292 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 partial - -import ( - "bytes" - "encoding/json" - "fmt" - "io" - - "github.com/google/go-containerregistry/pkg/v1" - "github.com/google/go-containerregistry/pkg/v1/v1util" -) - -// WithRawConfigFile defines the subset of v1.Image used by these helper methods -type WithRawConfigFile interface { - // RawConfigFile returns the serialized bytes of this image's config file. - RawConfigFile() ([]byte, error) -} - -// ConfigFile is a helper for implementing v1.Image -func ConfigFile(i WithRawConfigFile) (*v1.ConfigFile, error) { - b, err := i.RawConfigFile() - if err != nil { - return nil, err - } - return v1.ParseConfigFile(bytes.NewReader(b)) -} - -// ConfigName is a helper for implementing v1.Image -func ConfigName(i WithRawConfigFile) (v1.Hash, error) { - b, err := i.RawConfigFile() - if err != nil { - return v1.Hash{}, err - } - h, _, err := v1.SHA256(bytes.NewReader(b)) - return h, err -} - -// configLayer implements v1.Layer from the raw config bytes. -// This is so that clients (e.g. remote) can access the config as a blob. -type configLayer struct { - hash v1.Hash - content []byte -} - -// Digest implements v1.Layer -func (cl *configLayer) Digest() (v1.Hash, error) { - return cl.hash, nil -} - -// DiffID implements v1.Layer -func (cl *configLayer) DiffID() (v1.Hash, error) { - return cl.hash, nil -} - -// Uncompressed implements v1.Layer -func (cl *configLayer) Uncompressed() (io.ReadCloser, error) { - return v1util.NopReadCloser(bytes.NewBuffer(cl.content)), nil -} - -// Compressed implements v1.Layer -func (cl *configLayer) Compressed() (io.ReadCloser, error) { - return v1util.NopReadCloser(bytes.NewBuffer(cl.content)), nil -} - -// Size implements v1.Layer -func (cl *configLayer) Size() (int64, error) { - return int64(len(cl.content)), nil -} - -var _ v1.Layer = (*configLayer)(nil) - -func ConfigLayer(i WithRawConfigFile) (v1.Layer, error) { - h, err := ConfigName(i) - if err != nil { - return nil, err - } - rcfg, err := i.RawConfigFile() - if err != nil { - return nil, err - } - return &configLayer{ - hash: h, - content: rcfg, - }, nil -} - -// WithConfigFile defines the subset of v1.Image used by these helper methods -type WithConfigFile interface { - // ConfigFile returns this image's config file. - ConfigFile() (*v1.ConfigFile, error) -} - -// DiffIDs is a helper for implementing v1.Image -func DiffIDs(i WithConfigFile) ([]v1.Hash, error) { - cfg, err := i.ConfigFile() - if err != nil { - return nil, err - } - return cfg.RootFS.DiffIDs, nil -} - -// RawConfigFile is a helper for implementing v1.Image -func RawConfigFile(i WithConfigFile) ([]byte, error) { - cfg, err := i.ConfigFile() - if err != nil { - return nil, err - } - return json.Marshal(cfg) -} - -// WithUncompressedLayer defines the subset of v1.Image used by these helper methods -type WithUncompressedLayer interface { - // UncompressedLayer is like UncompressedBlob, but takes the "diff id". - UncompressedLayer(v1.Hash) (io.ReadCloser, error) -} - -// Layer is the same as Blob, but takes the "diff id". -func Layer(wul WithUncompressedLayer, h v1.Hash) (io.ReadCloser, error) { - rc, err := wul.UncompressedLayer(h) - if err != nil { - return nil, err - } - return v1util.GzipReadCloser(rc) -} - -// WithRawManifest defines the subset of v1.Image used by these helper methods -type WithRawManifest interface { - // RawManifest returns the serialized bytes of this image's config file. - RawManifest() ([]byte, error) -} - -// Digest is a helper for implementing v1.Image -func Digest(i WithRawManifest) (v1.Hash, error) { - mb, err := i.RawManifest() - if err != nil { - return v1.Hash{}, err - } - digest, _, err := v1.SHA256(bytes.NewReader(mb)) - return digest, err -} - -// Manifest is a helper for implementing v1.Image -func Manifest(i WithRawManifest) (*v1.Manifest, error) { - b, err := i.RawManifest() - if err != nil { - return nil, err - } - return v1.ParseManifest(bytes.NewReader(b)) -} - -// WithManifest defines the subset of v1.Image used by these helper methods -type WithManifest interface { - // Manifest returns this image's Manifest object. - Manifest() (*v1.Manifest, error) -} - -// RawManifest is a helper for implementing v1.Image -func RawManifest(i WithManifest) ([]byte, error) { - m, err := i.Manifest() - if err != nil { - return nil, err - } - return json.Marshal(m) -} - -// FSLayers is a helper for implementing v1.Image -func FSLayers(i WithManifest) ([]v1.Hash, error) { - m, err := i.Manifest() - if err != nil { - return nil, err - } - fsl := make([]v1.Hash, len(m.Layers)) - for i, l := range m.Layers { - fsl[i] = l.Digest - } - return fsl, nil -} - -// BlobSet is a helper for implementing v1.Image -func BlobSet(i WithManifest) (map[v1.Hash]struct{}, error) { - m, err := i.Manifest() - if err != nil { - return nil, err - } - bs := make(map[v1.Hash]struct{}) - for _, l := range m.Layers { - bs[l.Digest] = struct{}{} - } - bs[m.Config.Digest] = struct{}{} - return bs, nil -} - -// BlobSize is a helper for implementing v1.Image -func BlobSize(i WithManifest, h v1.Hash) (int64, error) { - m, err := i.Manifest() - if err != nil { - return -1, err - } - for _, l := range m.Layers { - if l.Digest == h { - return l.Size, nil - } - } - return -1, fmt.Errorf("blob %v not found", h) -} - -// WithManifestAndConfigFile defines the subset of v1.Image used by these helper methods -type WithManifestAndConfigFile interface { - WithConfigFile - - // Manifest returns this image's Manifest object. - Manifest() (*v1.Manifest, error) -} - -// BlobToDiffID is a helper for mapping between compressed -// and uncompressed blob hashes. -func BlobToDiffID(i WithManifestAndConfigFile, h v1.Hash) (v1.Hash, error) { - blobs, err := FSLayers(i) - if err != nil { - return v1.Hash{}, err - } - diffIDs, err := DiffIDs(i) - if err != nil { - return v1.Hash{}, err - } - if len(blobs) != len(diffIDs) { - return v1.Hash{}, fmt.Errorf("mismatched fs layers (%d) and diff ids (%d)", len(blobs), len(diffIDs)) - } - for i, blob := range blobs { - if blob == h { - return diffIDs[i], nil - } - } - return v1.Hash{}, fmt.Errorf("unknown blob %v", h) -} - -// DiffIDToBlob is a helper for mapping between uncompressed -// and compressed blob hashes. -func DiffIDToBlob(wm WithManifestAndConfigFile, h v1.Hash) (v1.Hash, error) { - blobs, err := FSLayers(wm) - if err != nil { - return v1.Hash{}, err - } - diffIDs, err := DiffIDs(wm) - if err != nil { - return v1.Hash{}, err - } - if len(blobs) != len(diffIDs) { - return v1.Hash{}, fmt.Errorf("mismatched fs layers (%d) and diff ids (%d)", len(blobs), len(diffIDs)) - } - for i, diffID := range diffIDs { - if diffID == h { - return blobs[i], nil - } - } - return v1.Hash{}, fmt.Errorf("unknown diffID %v", h) - -} - -// WithBlob defines the subset of v1.Image used by these helper methods -type WithBlob interface { - // Blob returns a ReadCloser for streaming the blob's content. - Blob(v1.Hash) (io.ReadCloser, error) -} - -// UncompressedBlob returns a ReadCloser for streaming the blob's content uncompressed. -func UncompressedBlob(b WithBlob, h v1.Hash) (io.ReadCloser, error) { - rc, err := b.Blob(h) - if err != nil { - return nil, err - } - return v1util.GunzipReadCloser(rc) -} - -// WithDiffID defines the subset of v1.Layer for exposing the DiffID method. -type WithDiffID interface { - DiffID() (v1.Hash, error) -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/random/doc.go b/vendor/github.com/google/go-containerregistry/pkg/v1/random/doc.go deleted file mode 100644 index d3712767..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/random/doc.go +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 random provides a facility for synthesizing pseudo-random images. -package random diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/random/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/random/image.go deleted file mode 100644 index 2f9930fb..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/random/image.go +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 random - -import ( - "archive/tar" - "bytes" - "crypto/rand" - "fmt" - "io" - "time" - - "github.com/google/go-containerregistry/pkg/v1" - "github.com/google/go-containerregistry/pkg/v1/partial" - "github.com/google/go-containerregistry/pkg/v1/types" - "github.com/google/go-containerregistry/pkg/v1/v1util" -) - -// uncompressedLayer implements partial.UncompressedLayer from raw bytes. -// TODO(mattmoor): Consider moving this into a library. -type uncompressedLayer struct { - diffID v1.Hash - content []byte -} - -// DiffID implements partial.UncompressedLayer -func (ul *uncompressedLayer) DiffID() (v1.Hash, error) { - return ul.diffID, nil -} - -// Uncompressed implements partial.UncompressedLayer -func (ul *uncompressedLayer) Uncompressed() (io.ReadCloser, error) { - return v1util.NopReadCloser(bytes.NewBuffer(ul.content)), nil -} - -var _ partial.UncompressedLayer = (*uncompressedLayer)(nil) - -// Image returns a pseudo-randomly generated Image. -func Image(byteSize, layers int64) (v1.Image, error) { - layerz := make(map[v1.Hash]partial.UncompressedLayer) - for i := int64(0); i < layers; i++ { - var b bytes.Buffer - tw := tar.NewWriter(&b) - if err := tw.WriteHeader(&tar.Header{ - Name: fmt.Sprintf("random_file_%d.txt", i), - Size: byteSize, - }); err != nil { - return nil, err - } - if _, err := io.CopyN(tw, rand.Reader, byteSize); err != nil { - return nil, err - } - bts := b.Bytes() - h, _, err := v1.SHA256(bytes.NewReader(bts)) - if err != nil { - return nil, err - } - layerz[h] = &uncompressedLayer{ - diffID: h, - content: bts, - } - } - - cfg := &v1.ConfigFile{} - - // It is ok that iteration order is random in Go, because this is the random image anyways. - for k := range layerz { - cfg.RootFS.DiffIDs = append(cfg.RootFS.DiffIDs, k) - } - - for i := int64(0); i < layers; i++ { - cfg.History = append(cfg.History, v1.History{ - Author: "random.Image", - Comment: fmt.Sprintf("this is a random history %d", i), - CreatedBy: "random", - Created: v1.Time{time.Now()}, - }) - } - - return partial.UncompressedToImage(&image{ - config: cfg, - layers: layerz, - }) -} - -// image is pseudo-randomly generated. -type image struct { - config *v1.ConfigFile - layers map[v1.Hash]partial.UncompressedLayer -} - -var _ partial.UncompressedImageCore = (*image)(nil) - -// RawConfigFile implements partial.UncompressedImageCore -func (i *image) RawConfigFile() ([]byte, error) { - return partial.RawConfigFile(i) -} - -// ConfigFile implements v1.Image -func (i *image) ConfigFile() (*v1.ConfigFile, error) { - return i.config, nil -} - -// MediaType implements partial.UncompressedImageCore -func (i *image) MediaType() (types.MediaType, error) { - return types.DockerManifestSchema2, nil -} - -// LayerByDiffID implements partial.UncompressedImageCore -func (i *image) LayerByDiffID(diffID v1.Hash) (partial.UncompressedLayer, error) { - l, ok := i.layers[diffID] - if !ok { - return nil, fmt.Errorf("unknown diff_id: %v", diffID) - } - return l, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/delete.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/delete.go deleted file mode 100644 index b7024ed4..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/delete.go +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 remote - -import ( - "fmt" - "io/ioutil" - "net/http" - "net/url" - - "github.com/google/go-containerregistry/pkg/authn" - "github.com/google/go-containerregistry/pkg/name" - "github.com/google/go-containerregistry/pkg/v1/remote/transport" -) - -// DeleteOptions are used to expose optional information to guide or -// control the image deletion. -type DeleteOptions struct { - // TODO(mattmoor): Fail on not found? - // TODO(mattmoor): Delete tag and manifest? -} - -// Delete removes the specified image reference from the remote registry. -func Delete(ref name.Reference, auth authn.Authenticator, t http.RoundTripper, do DeleteOptions) error { - scopes := []string{ref.Scope(transport.DeleteScope)} - tr, err := transport.New(ref.Context().Registry, auth, t, scopes) - if err != nil { - return err - } - c := &http.Client{Transport: tr} - - u := url.URL{ - Scheme: transport.Scheme(ref.Context().Registry), - Host: ref.Context().RegistryStr(), - Path: fmt.Sprintf("/v2/%s/manifests/%s", ref.Context().RepositoryStr(), ref.Identifier()), - } - - req, err := http.NewRequest(http.MethodDelete, u.String(), nil) - if err != nil { - return err - } - - resp, err := c.Do(req) - if err != nil { - return err - } - defer resp.Body.Close() - - switch resp.StatusCode { - case http.StatusOK, http.StatusAccepted: - return nil - default: - b, err := ioutil.ReadAll(resp.Body) - if err != nil { - return err - } - return fmt.Errorf("unrecognized status code during DELETE: %v; %v", resp.Status, string(b)) - } -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/doc.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/doc.go deleted file mode 100644 index 846ba07c..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/doc.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 remote provides facilities for reading/writing v1.Images from/to -// a remote image registry. -package remote diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/error.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/error.go deleted file mode 100644 index 8c4b814e..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/error.go +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 remote - -import ( - "encoding/json" - "fmt" - "io/ioutil" - "net/http" - "strings" -) - -// Error implements error to support the following error specification: -// https://github.com/docker/distribution/blob/master/docs/spec/api.md#errors -type Error struct { - Errors []Diagnostic `json:"errors,omitempty"` -} - -// Check that Error implements error -var _ error = (*Error)(nil) - -// Error implements error -func (e *Error) Error() string { - switch len(e.Errors) { - case 0: - return "" - case 1: - return e.Errors[0].String() - default: - var errors []string - for _, d := range e.Errors { - errors = append(errors, d.String()) - } - return fmt.Sprintf("multiple errors returned: %s", - strings.Join(errors, ";")) - } -} - -// Diagnostic represents a single error returned by a Docker registry interaction. -type Diagnostic struct { - Code ErrorCode `json:"code"` - Message string `json:"message,omitempty"` - Detail interface{} `json:"detail,omitempty"` -} - -// String stringifies the Diagnostic -func (d Diagnostic) String() string { - return fmt.Sprintf("%s: %q", d.Code, d.Message) -} - -// ErrorCode is an enumeration of supported error codes. -type ErrorCode string - -// The set of error conditions a registry may return: -// https://github.com/docker/distribution/blob/master/docs/spec/api.md#errors-2 -const ( - BlobUnknownErrorCode ErrorCode = "BLOB_UNKNOWN" - BlobUploadInvalidErrorCode ErrorCode = "BLOB_UPLOAD_INVALID" - BlobUploadUnknownErrorCode ErrorCode = "BLOB_UPLOAD_UNKNOWN" - DigestInvalidErrorCode ErrorCode = "DIGEST_INVALID" - ManifestBlobUnknownErrorCode ErrorCode = "MANIFEST_BLOB_UNKNOWN" - ManifestInvalidErrorCode ErrorCode = "MANIFEST_INVALID" - ManifestUnknownErrorCode ErrorCode = "MANIFEST_UNKNOWN" - ManifestUnverifiedErrorCode ErrorCode = "MANIFEST_UNVERIFIED" - NameInvalidErrorCode ErrorCode = "NAME_INVALID" - NameUnknownErrorCode ErrorCode = "NAME_UNKNOWN" - SizeInvalidErrorCode ErrorCode = "SIZE_INVALID" - TagInvalidErrorCode ErrorCode = "TAG_INVALID" - UnauthorizedErrorCode ErrorCode = "UNAUTHORIZED" - DeniedErrorCode ErrorCode = "DENIED" - UnsupportedErrorCode ErrorCode = "UNSUPPORTED" -) - -func checkError(resp *http.Response, codes ...int) error { - for _, code := range codes { - if resp.StatusCode == code { - // This is one of the supported status codes. - return nil - } - } - b, err := ioutil.ReadAll(resp.Body) - if err != nil { - return err - } - - // https://github.com/docker/distribution/blob/master/docs/spec/api.md#errors - var structuredError Error - if err := json.Unmarshal(b, &structuredError); err != nil { - // If the response isn't an unstructured error, then return some - // reasonable error response containing the response body. - return fmt.Errorf("unsupported status code %d; body: %s", resp.StatusCode, string(b)) - } - return &structuredError -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/image.go deleted file mode 100644 index c532e46b..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/image.go +++ /dev/null @@ -1,245 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 remote - -import ( - "bytes" - "fmt" - "io" - "io/ioutil" - "net/http" - "net/url" - "sync" - - "github.com/google/go-containerregistry/pkg/authn" - "github.com/google/go-containerregistry/pkg/name" - "github.com/google/go-containerregistry/pkg/v1" - "github.com/google/go-containerregistry/pkg/v1/partial" - "github.com/google/go-containerregistry/pkg/v1/remote/transport" - "github.com/google/go-containerregistry/pkg/v1/types" - "github.com/google/go-containerregistry/pkg/v1/v1util" -) - -// remoteImage accesses an image from a remote registry -type remoteImage struct { - ref name.Reference - client *http.Client - manifestLock sync.Mutex // Protects manifest - manifest []byte - configLock sync.Mutex // Protects config - config []byte -} - -type ImageOption func(*imageOpener) error - -var _ partial.CompressedImageCore = (*remoteImage)(nil) - -type imageOpener struct { - auth authn.Authenticator - transport http.RoundTripper - ref name.Reference - client *http.Client -} - -func (i *imageOpener) Open() (v1.Image, error) { - tr, err := transport.New(i.ref.Context().Registry, i.auth, i.transport, []string{i.ref.Scope(transport.PullScope)}) - if err != nil { - return nil, err - } - ri := &remoteImage{ - ref: i.ref, - client: &http.Client{Transport: tr}, - } - imgCore, err := partial.CompressedToImage(ri) - if err != nil { - return imgCore, err - } - // Wrap the v1.Layers returned by this v1.Image in a hint for downstream - // remote.Write calls to facilitate cross-repo "mounting". - return &mountableImage{ - Image: imgCore, - Reference: i.ref, - }, nil -} - -// Image provides access to a remote image reference, applying functional options -// to the underlying imageOpener before resolving the reference into a v1.Image. -func Image(ref name.Reference, options ...ImageOption) (v1.Image, error) { - img := &imageOpener{ - auth: authn.Anonymous, - transport: http.DefaultTransport, - ref: ref, - } - - for _, option := range options { - if err := option(img); err != nil { - return nil, err - } - } - return img.Open() -} - -func (r *remoteImage) url(resource, identifier string) url.URL { - return url.URL{ - Scheme: transport.Scheme(r.ref.Context().Registry), - Host: r.ref.Context().RegistryStr(), - Path: fmt.Sprintf("/v2/%s/%s/%s", r.ref.Context().RepositoryStr(), resource, identifier), - } -} - -func (r *remoteImage) MediaType() (types.MediaType, error) { - // TODO(jonjohnsonjr): Determine this based on response. - return types.DockerManifestSchema2, nil -} - -// TODO(jonjohnsonjr): Handle manifest lists. -func (r *remoteImage) RawManifest() ([]byte, error) { - r.manifestLock.Lock() - defer r.manifestLock.Unlock() - if r.manifest != nil { - return r.manifest, nil - } - - u := r.url("manifests", r.ref.Identifier()) - req, err := http.NewRequest(http.MethodGet, u.String(), nil) - if err != nil { - return nil, err - } - // TODO(jonjohnsonjr): Accept OCI manifest, manifest list, and image index. - req.Header.Set("Accept", string(types.DockerManifestSchema2)) - resp, err := r.client.Do(req) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - if err := checkError(resp, http.StatusOK); err != nil { - return nil, err - } - - manifest, err := ioutil.ReadAll(resp.Body) - if err != nil { - return nil, err - } - - digest, _, err := v1.SHA256(bytes.NewReader(manifest)) - if err != nil { - return nil, err - } - - // Validate the digest matches what we asked for, if pulling by digest. - if dgst, ok := r.ref.(name.Digest); ok { - if digest.String() != dgst.DigestStr() { - return nil, fmt.Errorf("manifest digest: %q does not match requested digest: %q for %q", digest, dgst.DigestStr(), r.ref) - } - } else if checksum := resp.Header.Get("Docker-Content-Digest"); checksum != "" && checksum != digest.String() { - err := fmt.Errorf("manifest digest: %q does not match Docker-Content-Digest: %q for %q", digest, checksum, r.ref) - if r.ref.Context().RegistryStr() == name.DefaultRegistry { - // TODO(docker/distribution#2395): Remove this check. - } else { - // When pulling by tag, we can only validate that the digest matches what the registry told us it should be. - return nil, err - } - } - - r.manifest = manifest - return r.manifest, nil -} - -func (r *remoteImage) RawConfigFile() ([]byte, error) { - r.configLock.Lock() - defer r.configLock.Unlock() - if r.config != nil { - return r.config, nil - } - - m, err := partial.Manifest(r) - if err != nil { - return nil, err - } - - cl, err := r.LayerByDigest(m.Config.Digest) - if err != nil { - return nil, err - } - body, err := cl.Compressed() - if err != nil { - return nil, err - } - defer body.Close() - - r.config, err = ioutil.ReadAll(body) - if err != nil { - return nil, err - } - return r.config, nil -} - -// remoteLayer implements partial.CompressedLayer -type remoteLayer struct { - ri *remoteImage - digest v1.Hash -} - -// Digest implements partial.CompressedLayer -func (rl *remoteLayer) Digest() (v1.Hash, error) { - return rl.digest, nil -} - -// Compressed implements partial.CompressedLayer -func (rl *remoteLayer) Compressed() (io.ReadCloser, error) { - u := rl.ri.url("blobs", rl.digest.String()) - resp, err := rl.ri.client.Get(u.String()) - if err != nil { - return nil, err - } - - if err := checkError(resp, http.StatusOK); err != nil { - resp.Body.Close() - return nil, err - } - - return v1util.VerifyReadCloser(resp.Body, rl.digest) -} - -// Manifest implements partial.WithManifest so that we can use partial.BlobSize below. -func (rl *remoteLayer) Manifest() (*v1.Manifest, error) { - return partial.Manifest(rl.ri) -} - -// Size implements partial.CompressedLayer -func (rl *remoteLayer) Size() (int64, error) { - // Look up the size of this digest in the manifest to avoid a request. - return partial.BlobSize(rl, rl.digest) -} - -// ConfigFile implements partial.WithManifestAndConfigFile so that we can use partial.BlobToDiffID below. -func (rl *remoteLayer) ConfigFile() (*v1.ConfigFile, error) { - return partial.ConfigFile(rl.ri) -} - -// DiffID implements partial.WithDiffID so that we don't recompute a DiffID that we already have -// available in our ConfigFile. -func (rl *remoteLayer) DiffID() (v1.Hash, error) { - return partial.BlobToDiffID(rl, rl.digest) -} - -// LayerByDigest implements partial.CompressedLayer -func (r *remoteImage) LayerByDigest(h v1.Hash) (partial.CompressedLayer, error) { - return &remoteLayer{ - ri: r, - digest: h, - }, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/list.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/list.go deleted file mode 100644 index a86a08cc..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/list.go +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 remote - -import ( - "encoding/json" - "fmt" - "net/http" - "net/url" - - "github.com/google/go-containerregistry/pkg/authn" - "github.com/google/go-containerregistry/pkg/name" - "github.com/google/go-containerregistry/pkg/v1/remote/transport" -) - -type Tags struct { - Name string `json:"name"` - Tags []string `json:"tags"` -} - -// TODO(jonjohnsonjr): return []name.Tag? -func List(repo name.Repository, auth authn.Authenticator, t http.RoundTripper) ([]string, error) { - scopes := []string{repo.Scope(transport.PullScope)} - tr, err := transport.New(repo.Registry, auth, t, scopes) - if err != nil { - return nil, err - } - - uri := url.URL{ - Scheme: transport.Scheme(repo.Registry), - Host: repo.Registry.RegistryStr(), - Path: fmt.Sprintf("/v2/%s/tags/list", repo.RepositoryStr()), - } - - client := http.Client{Transport: tr} - resp, err := client.Get(uri.String()) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - if err := checkError(resp, http.StatusOK); err != nil { - return nil, err - } - - tags := Tags{} - if err := json.NewDecoder(resp.Body).Decode(&tags); err != nil { - return nil, err - } - - return tags.Tags, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/mount.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/mount.go deleted file mode 100644 index 13b79064..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/mount.go +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 remote - -import ( - "github.com/google/go-containerregistry/pkg/name" - "github.com/google/go-containerregistry/pkg/v1" -) - -// MountableLayer wraps a v1.Layer in a shim that enables the layer to be -// "mounted" when published to another registry. -type MountableLayer struct { - v1.Layer - - Reference name.Reference -} - -// mountableImage wraps the v1.Layer references returned by the embedded v1.Image -// in MountableLayer's so that remote.Write might attempt to mount them from their -// source repository. -type mountableImage struct { - v1.Image - - Reference name.Reference -} - -// Layers implements v1.Image -func (mi *mountableImage) Layers() ([]v1.Layer, error) { - ls, err := mi.Image.Layers() - if err != nil { - return nil, err - } - mls := make([]v1.Layer, 0, len(ls)) - for _, l := range ls { - mls = append(mls, &MountableLayer{ - Layer: l, - Reference: mi.Reference, - }) - } - return mls, nil -} - -// LayerByDigest implements v1.Image -func (mi *mountableImage) LayerByDigest(d v1.Hash) (v1.Layer, error) { - l, err := mi.Image.LayerByDigest(d) - if err != nil { - return nil, err - } - return &MountableLayer{ - Layer: l, - Reference: mi.Reference, - }, nil -} - -// LayerByDiffID implements v1.Image -func (mi *mountableImage) LayerByDiffID(d v1.Hash) (v1.Layer, error) { - l, err := mi.Image.LayerByDiffID(d) - if err != nil { - return nil, err - } - return &MountableLayer{ - Layer: l, - Reference: mi.Reference, - }, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go deleted file mode 100644 index a6e9584e..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 remote - -import ( - "log" - "net/http" - - "github.com/google/go-containerregistry/pkg/authn" -) - -// WithTransport is a functional option for overriding the default transport -// on a remote image -func WithTransport(t http.RoundTripper) ImageOption { - return func(i *imageOpener) error { - i.transport = t - return nil - } -} - -// WithAuth is a functional option for overriding the default authenticator -// on a remote image -func WithAuth(auth authn.Authenticator) ImageOption { - return func(i *imageOpener) error { - i.auth = auth - return nil - } -} - -// WithAuthFromKeychain is a functional option for overriding the default -// authenticator on a remote image using an authn.Keychain -func WithAuthFromKeychain(keys authn.Keychain) ImageOption { - return func(i *imageOpener) error { - auth, err := keys.Resolve(i.ref.Context().Registry) - if err != nil { - return err - } - if auth == authn.Anonymous { - log.Println("No matching credentials were found, falling back on anonymous") - } - i.auth = auth - return nil - } -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/basic.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/basic.go deleted file mode 100644 index 752038cb..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/basic.go +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 transport - -import ( - "net/http" - - "github.com/google/go-containerregistry/pkg/authn" -) - -type basicTransport struct { - inner http.RoundTripper - auth authn.Authenticator - target string -} - -var _ http.RoundTripper = (*basicTransport)(nil) - -// RoundTrip implements http.RoundTripper -func (bt *basicTransport) RoundTrip(in *http.Request) (*http.Response, error) { - hdr, err := bt.auth.Authorization() - if err != nil { - return nil, err - } - - // http.Client handles redirects at a layer above the http.RoundTripper - // abstraction, so to avoid forwarding Authorization headers to places - // we are redirected, only set it when the authorization header matches - // the host with which we are interacting. - if in.Host == bt.target { - in.Header.Set("Authorization", hdr) - } - in.Header.Set("User-Agent", transportName) - return bt.inner.RoundTrip(in) -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/bearer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/bearer.go deleted file mode 100644 index 7dd49ae6..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/bearer.go +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 transport - -import ( - "fmt" - - "encoding/json" - "io/ioutil" - "net/http" - "net/url" - - "github.com/google/go-containerregistry/pkg/authn" - "github.com/google/go-containerregistry/pkg/name" -) - -type bearerTransport struct { - // Wrapped by bearerTransport. - inner http.RoundTripper - // Basic credentials that we exchange for bearer tokens. - basic authn.Authenticator - // Holds the bearer response from the token service. - bearer *authn.Bearer - // Registry to which we send bearer tokens. - registry name.Registry - // See https://tools.ietf.org/html/rfc6750#section-3 - realm string - // See https://docs.docker.com/registry/spec/auth/token/ - service string - scopes []string -} - -var _ http.RoundTripper = (*bearerTransport)(nil) - -// RoundTrip implements http.RoundTripper -func (bt *bearerTransport) RoundTrip(in *http.Request) (*http.Response, error) { - hdr, err := bt.bearer.Authorization() - if err != nil { - return nil, err - } - - // http.Client handles redirects at a layer above the http.RoundTripper - // abstraction, so to avoid forwarding Authorization headers to places - // we are redirected, only set it when the authorization header matches - // the registry with which we are interacting. - if in.Host == bt.registry.RegistryStr() { - in.Header.Set("Authorization", hdr) - } - in.Header.Set("User-Agent", transportName) - - // TODO(mattmoor): On 401s perform a single refresh() and retry. - return bt.inner.RoundTrip(in) -} - -func (bt *bearerTransport) refresh() error { - u, err := url.Parse(bt.realm) - if err != nil { - return err - } - b := &basicTransport{ - inner: bt.inner, - auth: bt.basic, - target: u.Host, - } - client := http.Client{Transport: b} - - u.RawQuery = url.Values{ - "scope": bt.scopes, - "service": []string{bt.service}, - }.Encode() - - resp, err := client.Get(u.String()) - if err != nil { - return err - } - defer resp.Body.Close() - - content, err := ioutil.ReadAll(resp.Body) - if err != nil { - return err - } - - // Some registries don't have "token" in the response. See #54. - type tokenResponse struct { - Token string `json:"token"` - AccessToken string `json:"access_token"` - } - - var response tokenResponse - if err := json.Unmarshal(content, &response); err != nil { - return err - } - - // Find a token to turn into a Bearer authenticator - var bearer authn.Bearer - if response.Token != "" { - bearer = authn.Bearer{Token: response.Token} - } else if response.AccessToken != "" { - bearer = authn.Bearer{Token: response.AccessToken} - } else { - return fmt.Errorf("no token in bearer response:\n%s", content) - } - - // Replace our old bearer authenticator (if we had one) with our newly refreshed authenticator. - bt.bearer = &bearer - return nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/doc.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/doc.go deleted file mode 100644 index ff7025b5..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/doc.go +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 transport provides facilities for setting up an authenticated -// http.RoundTripper given an Authenticator and base RoundTripper. See -// transport.New for more information. -package transport diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/ping.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/ping.go deleted file mode 100644 index b00f03c2..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/ping.go +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 transport - -import ( - "fmt" - "net/http" - "strings" - - "github.com/google/go-containerregistry/pkg/name" -) - -type challenge string - -const ( - anonymous challenge = "anonymous" - basic challenge = "basic" - bearer challenge = "bearer" -) - -type pingResp struct { - challenge challenge - - // Following the challenge there are often key/value pairs - // e.g. Bearer service="gcr.io",realm="https://auth.gcr.io/v36/tokenz" - parameters map[string]string -} - -func (c challenge) Canonical() challenge { - return challenge(strings.ToLower(string(c))) -} - -func parseChallenge(suffix string) map[string]string { - kv := make(map[string]string) - for _, token := range strings.Split(suffix, ",") { - // Trim any whitespace around each token. - token = strings.Trim(token, " ") - - // Break the token into a key/value pair - if parts := strings.SplitN(token, "=", 2); len(parts) == 2 { - // Unquote the value, if it is quoted. - kv[parts[0]] = strings.Trim(parts[1], `"`) - } else { - // If there was only one part, treat is as a key with an empty value - kv[token] = "" - } - } - return kv -} - -func ping(reg name.Registry, t http.RoundTripper) (*pingResp, error) { - client := http.Client{Transport: t} - - url := fmt.Sprintf("%s://%s/v2/", Scheme(reg), reg.Name()) - resp, err := client.Get(url) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - switch resp.StatusCode { - case http.StatusOK: - // If we get a 200, then no authentication is needed. - return &pingResp{challenge: anonymous}, nil - case http.StatusUnauthorized: - wac := resp.Header.Get(http.CanonicalHeaderKey("WWW-Authenticate")) - if parts := strings.SplitN(wac, " ", 2); len(parts) == 2 { - // If there are two parts, then parse the challenge parameters. - return &pingResp{ - challenge: challenge(parts[0]).Canonical(), - parameters: parseChallenge(parts[1]), - }, nil - } - // Otherwise, just return the challenge without parameters. - return &pingResp{ - challenge: challenge(wac).Canonical(), - }, nil - default: - return nil, fmt.Errorf("unrecognized HTTP status: %v", resp.Status) - } -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/scheme.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/scheme.go deleted file mode 100644 index fb33d15d..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/scheme.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 transport - -import ( - "regexp" - "strings" - - "github.com/google/go-containerregistry/pkg/name" -) - -// Detect more complex forms of local references. -var reLocal = regexp.MustCompile(`.*\.local(?:host)?(?::\d{1,5})?$`) - -// Detect the loopback IP (127.0.0.1) -var reLoopback = regexp.MustCompile(regexp.QuoteMeta("127.0.0.1")) - -// Scheme returns https scheme for all the endpoints except localhost. -func Scheme(reg name.Registry) string { - if strings.HasPrefix(reg.Name(), "localhost:") { - return "http" - } - if reLocal.MatchString(reg.Name()) { - return "http" - } - if reLoopback.MatchString(reg.Name()) { - return "http" - } - return "https" -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/scope.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/scope.go deleted file mode 100644 index c3b56f7a..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/scope.go +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 transport - -// Scopes suitable to qualify each Repository -const ( - PullScope string = "pull" - PushScope string = "push,pull" - // For now DELETE is PUSH, which is the read/write ACL. - DeleteScope string = PushScope - CatalogScope string = "catalog" -) diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/transport.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/transport.go deleted file mode 100644 index 6140ab2c..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/transport.go +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 transport - -import ( - "fmt" - "net/http" - - "github.com/google/go-containerregistry/pkg/authn" - "github.com/google/go-containerregistry/pkg/name" -) - -const ( - transportName = "go-containerregistry" -) - -// New returns a new RoundTripper based on the provided RoundTripper that has been -// setup to authenticate with the remote registry "reg", in the capacity -// laid out by the specified scopes. -func New(reg name.Registry, auth authn.Authenticator, t http.RoundTripper, scopes []string) (http.RoundTripper, error) { - // The handshake: - // 1. Use "t" to ping() the registry for the authentication challenge. - // - // 2a. If we get back a 200, then simply use "t". - // - // 2b. If we get back a 401 with a Basic challenge, then use a transport - // that just attachs auth each roundtrip. - // - // 2c. If we get back a 401 with a Bearer challenge, then use a transport - // that attaches a bearer token to each request, and refreshes is on 401s. - // Perform an initial refresh to seed the bearer token. - - // First we ping the registry to determine the parameters of the authentication handshake - // (if one is even necessary). - pr, err := ping(reg, t) - if err != nil { - return nil, err - } - - switch pr.challenge.Canonical() { - case anonymous: - return t, nil - case basic: - return &basicTransport{inner: t, auth: auth, target: reg.RegistryStr()}, nil - case bearer: - // We require the realm, which tells us where to send our Basic auth to turn it into Bearer auth. - realm, ok := pr.parameters["realm"] - if !ok { - return nil, fmt.Errorf("malformed www-authenticate, missing realm: %v", pr.parameters) - } - service, ok := pr.parameters["service"] - if !ok { - // If the service parameter is not specified, then default it to the registry - // with which we are talking. - service = reg.String() - } - bt := &bearerTransport{ - inner: t, - basic: auth, - realm: realm, - registry: reg, - service: service, - scopes: scopes, - } - if err := bt.refresh(); err != nil { - return nil, err - } - return bt, nil - default: - return nil, fmt.Errorf("Unrecognized challenge: %s", pr.challenge) - } -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/write.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/write.go deleted file mode 100644 index 77819295..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/write.go +++ /dev/null @@ -1,299 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 remote - -import ( - "bytes" - "errors" - "fmt" - "log" - "net/http" - "net/url" - - "github.com/google/go-containerregistry/pkg/authn" - "github.com/google/go-containerregistry/pkg/name" - "github.com/google/go-containerregistry/pkg/v1" - "github.com/google/go-containerregistry/pkg/v1/remote/transport" -) - -// WriteOptions are used to expose optional information to guide or -// control the image write. -type WriteOptions struct { - // TODO(mattmoor): Expose "threads" to limit parallelism? -} - -// Write pushes the provided img to the specified image reference. -func Write(ref name.Reference, img v1.Image, auth authn.Authenticator, t http.RoundTripper, - wo WriteOptions) error { - - ls, err := img.Layers() - if err != nil { - return err - } - scopes := []string{ref.Scope(transport.PushScope)} - for _, l := range ls { - if ml, ok := l.(*MountableLayer); ok { - scopes = append(scopes, ml.Reference.Context().Scope(transport.PullScope)) - } - } - - tr, err := transport.New(ref.Context().Registry, auth, t, scopes) - if err != nil { - return err - } - w := writer{ - ref: ref, - client: &http.Client{Transport: tr}, - img: img, - options: wo, - } - - bs, err := img.BlobSet() - if err != nil { - return err - } - - // Spin up go routines to publish each of the members of BlobSet(), - // and use an error channel to collect their results. - errCh := make(chan error) - defer close(errCh) - for h := range bs { - go func(h v1.Hash) { - errCh <- w.uploadOne(h) - }(h) - } - - // Now wait for all of the blob uploads to complete. - var errors []error - for _ = range bs { - if err := <-errCh; err != nil { - errors = append(errors, err) - } - } - if len(errors) > 0 { - // Return the first error we encountered. - return errors[0] - } - - // With all of the constituent elements uploaded, upload the manifest - // to commit the image. - return w.commitImage() -} - -// writer writes the elements of an image to a remote image reference. -type writer struct { - ref name.Reference - client *http.Client - img v1.Image - options WriteOptions -} - -// url returns a url.Url for the specified path in the context of this remote image reference. -func (w *writer) url(path string) url.URL { - return url.URL{ - Scheme: transport.Scheme(w.ref.Context().Registry), - Host: w.ref.Context().RegistryStr(), - Path: path, - } -} - -// nextLocation extracts the fully-qualified URL to which we should send the next request in an upload sequence. -func (w *writer) nextLocation(resp *http.Response) (string, error) { - loc := resp.Header.Get("Location") - if len(loc) == 0 { - return "", errors.New("missing Location header") - } - u, err := url.Parse(loc) - if err != nil { - return "", err - } - - // If the location header returned is just a url path, then fully qualify it. - // We cannot simply call w.url, since there might be an embedded query string. - return resp.Request.URL.ResolveReference(u).String(), nil -} - -// initiateUpload initiates the blob upload, which starts with a POST that can -// optionally include the hash of the layer and a list of repositories from -// which that layer might be read. On failure, an error is returned. -// On success, the layer was either mounted (nothing more to do) or a blob -// upload was initiated and the body of that blob should be sent to the returned -// location. -func (w *writer) initiateUpload(h v1.Hash) (location string, mounted bool, err error) { - u := w.url(fmt.Sprintf("/v2/%s/blobs/uploads/", w.ref.Context().RepositoryStr())) - uv := url.Values{ - "mount": []string{h.String()}, - } - l, err := w.img.LayerByDigest(h) - if err != nil { - return "", false, err - } - // We currently avoid HEAD because it's semi-redundant with the mount that is part - // of initiating the blob upload. GCR will perform an existence check on the initiation - // if "mount" is specified, even if no "from" sources are specified. If this turns out - // to not be broadly applicable then we should replace mounts without "from"s with a HEAD. - if ml, ok := l.(*MountableLayer); ok { - if w.ref.Context().RegistryStr() == ml.Reference.Context().RegistryStr() { - uv["from"] = []string{ml.Reference.Context().RepositoryStr()} - } - } - u.RawQuery = uv.Encode() - - // Make the request to initiate the blob upload. - resp, err := w.client.Post(u.String(), "application/json", nil) - if err != nil { - return "", false, err - } - defer resp.Body.Close() - - if err := checkError(resp, http.StatusCreated, http.StatusAccepted); err != nil { - return "", false, err - } - - // Check the response code to determine the result. - switch resp.StatusCode { - case http.StatusCreated: - // We're done, we were able to fast-path. - return "", true, nil - case http.StatusAccepted: - // Proceed to PATCH, upload has begun. - loc, err := w.nextLocation(resp) - return loc, false, err - default: - panic("Unreachable: initiateUpload") - } -} - -// streamBlob streams the contents of the blob to the specified location. -// On failure, this will return an error. On success, this will return the location -// header indicating how to commit the streamed blob. -func (w *writer) streamBlob(h v1.Hash, streamLocation string) (commitLocation string, err error) { - l, err := w.img.LayerByDigest(h) - if err != nil { - return "", err - } - blob, err := l.Compressed() - if err != nil { - return "", err - } - defer blob.Close() - - req, err := http.NewRequest(http.MethodPatch, streamLocation, blob) - if err != nil { - return "", err - } - - resp, err := w.client.Do(req) - if err != nil { - return "", err - } - defer resp.Body.Close() - - if err := checkError(resp, http.StatusNoContent, http.StatusAccepted, http.StatusCreated); err != nil { - return "", err - } - - // The blob has been uploaded, return the location header indicating - // how to commit this layer. - return w.nextLocation(resp) -} - -// commitBlob commits this blob by sending a PUT to the location returned from streaming the blob. -func (w *writer) commitBlob(h v1.Hash, location string) (err error) { - u, err := url.Parse(location) - if err != nil { - return err - } - v := u.Query() - v.Set("digest", h.String()) - u.RawQuery = v.Encode() - - req, err := http.NewRequest(http.MethodPut, u.String(), nil) - if err != nil { - return err - } - - resp, err := w.client.Do(req) - if err != nil { - return err - } - defer resp.Body.Close() - - return checkError(resp, http.StatusCreated) -} - -// uploadOne performs a complete upload of a single layer. -func (w *writer) uploadOne(h v1.Hash) error { - location, mounted, err := w.initiateUpload(h) - if err != nil { - return err - } else if mounted { - log.Printf("mounted blob: %v", h) - return nil - } - - location, err = w.streamBlob(h, location) - if err != nil { - return err - } - - if err := w.commitBlob(h, location); err != nil { - return err - } - log.Printf("pushed blob %v", h) - return nil -} - -// commitImage does a PUT of the image's manifest. -func (w *writer) commitImage() error { - raw, err := w.img.RawManifest() - if err != nil { - return err - } - mt, err := w.img.MediaType() - if err != nil { - return err - } - - u := w.url(fmt.Sprintf("/v2/%s/manifests/%s", w.ref.Context().RepositoryStr(), w.ref.Identifier())) - - // Make the request to PUT the serialized manifest - req, err := http.NewRequest(http.MethodPut, u.String(), bytes.NewBuffer(raw)) - if err != nil { - return err - } - req.Header.Set("Content-Type", string(mt)) - - resp, err := w.client.Do(req) - if err != nil { - return err - } - defer resp.Body.Close() - - if err := checkError(resp, http.StatusOK, http.StatusCreated, http.StatusAccepted); err != nil { - return err - } - - digest, err := w.img.Digest() - if err != nil { - return err - } - - // The image was successfully pushed! - log.Printf("%v: digest: %v size: %d", w.ref, digest, len(raw)) - return nil -} - -// TODO(mattmoor): WriteIndex diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/doc.go b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/doc.go deleted file mode 100644 index 4eb79bb4..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/doc.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 tarball provides facilities for reading/writing v1.Images from/to -// a tarball on-disk. -package tarball diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/image.go deleted file mode 100644 index 2a62327c..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/image.go +++ /dev/null @@ -1,338 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 tarball - -import ( - "archive/tar" - "bytes" - "encoding/json" - "errors" - "fmt" - "io" - "io/ioutil" - "os" - "sync" - - "github.com/google/go-containerregistry/pkg/name" - "github.com/google/go-containerregistry/pkg/v1" - "github.com/google/go-containerregistry/pkg/v1/partial" - "github.com/google/go-containerregistry/pkg/v1/types" - "github.com/google/go-containerregistry/pkg/v1/v1util" -) - -type image struct { - opener Opener - td *tarDescriptor - config []byte - imgDescriptor *singleImageTarDescriptor - - tag *name.Tag -} - -type uncompressedImage struct { - *image -} - -type compressedImage struct { - *image - manifestLock sync.Mutex // Protects manifest - manifest *v1.Manifest -} - -var _ partial.UncompressedImageCore = (*uncompressedImage)(nil) -var _ partial.CompressedImageCore = (*compressedImage)(nil) - -type Opener func() (io.ReadCloser, error) - -func pathOpener(path string) Opener { - return func() (io.ReadCloser, error) { - return os.Open(path) - } -} - -func ImageFromPath(path string, tag *name.Tag) (v1.Image, error) { - return Image(pathOpener(path), tag) -} - -// Image exposes an image from the tarball at the provided path. -func Image(opener Opener, tag *name.Tag) (v1.Image, error) { - img := &image{ - opener: opener, - tag: tag, - } - if err := img.loadTarDescriptorAndConfig(); err != nil { - return nil, err - } - - // Peek at the first layer and see if it's compressed. - compressed, err := img.areLayersCompressed() - if err != nil { - return nil, err - } - if compressed { - c := compressedImage{ - image: img, - } - return partial.CompressedToImage(&c) - } - - uc := uncompressedImage{ - image: img, - } - return partial.UncompressedToImage(&uc) -} - -func (i *image) MediaType() (types.MediaType, error) { - return types.DockerManifestSchema2, nil -} - -// singleImageTarDescriptor is the struct used to represent a single image inside a `docker save` tarball. -type singleImageTarDescriptor struct { - Config string - RepoTags []string - Layers []string -} - -// tarDescriptor is the struct used inside the `manifest.json` file of a `docker save` tarball. -type tarDescriptor []singleImageTarDescriptor - -func (td tarDescriptor) findSpecifiedImageDescriptor(tag *name.Tag) (*singleImageTarDescriptor, error) { - if tag == nil { - if len(td) != 1 { - return nil, errors.New("tarball must contain only a single image to be used with tarball.Image") - } - return &(td)[0], nil - } - for _, img := range td { - for _, tagStr := range img.RepoTags { - repoTag, err := name.NewTag(tagStr, name.WeakValidation) - if err != nil { - return nil, err - } - - // Compare the resolved names, since there are several ways to specify the same tag. - if repoTag.Name() == tag.Name() { - return &img, nil - } - } - } - return nil, fmt.Errorf("tag %s not found in tarball", tag) -} - -func (i *image) areLayersCompressed() (bool, error) { - if len(i.imgDescriptor.Layers) == 0 { - return false, errors.New("0 layers found in image") - } - layer := i.imgDescriptor.Layers[0] - blob, err := extractFileFromTar(i.opener, layer) - if err != nil { - return false, err - } - defer blob.Close() - return v1util.IsGzipped(blob) -} - -func (i *image) loadTarDescriptorAndConfig() error { - td, err := extractFileFromTar(i.opener, "manifest.json") - if err != nil { - return err - } - defer td.Close() - - if err := json.NewDecoder(td).Decode(&i.td); err != nil { - return err - } - - i.imgDescriptor, err = i.td.findSpecifiedImageDescriptor(i.tag) - if err != nil { - return err - } - - cfg, err := extractFileFromTar(i.opener, i.imgDescriptor.Config) - if err != nil { - return err - } - defer cfg.Close() - - i.config, err = ioutil.ReadAll(cfg) - if err != nil { - return err - } - return nil -} - -func (i *image) RawConfigFile() ([]byte, error) { - return i.config, nil -} - -// tarFile represents a single file inside a tar. Closing it closes the tar itself. -type tarFile struct { - io.Reader - io.Closer -} - -func extractFileFromTar(opener Opener, filePath string) (io.ReadCloser, error) { - f, err := opener() - if err != nil { - return nil, err - } - tf := tar.NewReader(f) - for { - hdr, err := tf.Next() - if err == io.EOF { - break - } - if err != nil { - return nil, err - } - if hdr.Name == filePath { - return tarFile{ - Reader: tf, - Closer: f, - }, nil - } - } - return nil, fmt.Errorf("file %s not found in tar", filePath) -} - -// uncompressedLayerFromTarball implements partial.UncompressedLayer -type uncompressedLayerFromTarball struct { - diffID v1.Hash - opener Opener - filePath string -} - -// DiffID implements partial.UncompressedLayer -func (ulft *uncompressedLayerFromTarball) DiffID() (v1.Hash, error) { - return ulft.diffID, nil -} - -// Uncompressed implements partial.UncompressedLayer -func (ulft *uncompressedLayerFromTarball) Uncompressed() (io.ReadCloser, error) { - return extractFileFromTar(ulft.opener, ulft.filePath) -} - -func (i *uncompressedImage) LayerByDiffID(h v1.Hash) (partial.UncompressedLayer, error) { - cfg, err := partial.ConfigFile(i) - if err != nil { - return nil, err - } - for idx, diffID := range cfg.RootFS.DiffIDs { - if diffID == h { - return &uncompressedLayerFromTarball{ - diffID: diffID, - opener: i.opener, - filePath: i.imgDescriptor.Layers[idx], - }, nil - } - } - return nil, fmt.Errorf("diff id %q not found", h) -} - -func (c *compressedImage) Manifest() (*v1.Manifest, error) { - c.manifestLock.Lock() - defer c.manifestLock.Unlock() - if c.manifest != nil { - return c.manifest, nil - } - - b, err := c.RawConfigFile() - if err != nil { - return nil, err - } - - cfgHash, cfgSize, err := v1.SHA256(bytes.NewReader(b)) - if err != nil { - return nil, err - } - - c.manifest = &v1.Manifest{ - SchemaVersion: 2, - MediaType: types.DockerManifestSchema2, - Config: v1.Descriptor{ - MediaType: types.DockerConfigJSON, - Size: cfgSize, - Digest: cfgHash, - }, - } - - for _, p := range c.imgDescriptor.Layers { - l, err := extractFileFromTar(c.opener, p) - if err != nil { - return nil, err - } - defer l.Close() - sha, size, err := v1.SHA256(l) - if err != nil { - return nil, err - } - c.manifest.Layers = append(c.manifest.Layers, v1.Descriptor{ - MediaType: types.DockerLayer, - Size: size, - Digest: sha, - }) - } - return c.manifest, nil -} - -func (c *compressedImage) RawManifest() ([]byte, error) { - return partial.RawManifest(c) -} - -// compressedLayerFromTarball implements partial.CompressedLayer -type compressedLayerFromTarball struct { - digest v1.Hash - opener Opener - filePath string -} - -// Digest implements partial.CompressedLayer -func (clft *compressedLayerFromTarball) Digest() (v1.Hash, error) { - return clft.digest, nil -} - -// Compressed implements partial.CompressedLayer -func (clft *compressedLayerFromTarball) Compressed() (io.ReadCloser, error) { - return extractFileFromTar(clft.opener, clft.filePath) -} - -// Size implements partial.CompressedLayer -func (clft *compressedLayerFromTarball) Size() (int64, error) { - r, err := clft.Compressed() - if err != nil { - return -1, err - } - defer r.Close() - _, i, err := v1.SHA256(r) - return i, err -} - -func (c *compressedImage) LayerByDigest(h v1.Hash) (partial.CompressedLayer, error) { - m, err := c.Manifest() - if err != nil { - return nil, err - } - for i, l := range m.Layers { - if l.Digest == h { - fp := c.imgDescriptor.Layers[i] - return &compressedLayerFromTarball{ - digest: h, - opener: c.opener, - filePath: fp, - }, nil - } - } - return nil, fmt.Errorf("blob %v not found", h) -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go deleted file mode 100644 index 6d43ff7d..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go +++ /dev/null @@ -1,144 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 tarball - -import ( - "compress/gzip" - "io" - "io/ioutil" - "os" - - "github.com/google/go-containerregistry/pkg/v1" - "github.com/google/go-containerregistry/pkg/v1/v1util" -) - -type layer struct { - digest v1.Hash - diffID v1.Hash - size int64 - opener Opener - compressed bool -} - -func (l *layer) Digest() (v1.Hash, error) { - return l.digest, nil -} - -func (l *layer) DiffID() (v1.Hash, error) { - return l.diffID, nil -} - -func (l *layer) Compressed() (io.ReadCloser, error) { - rc, err := l.opener() - if err == nil && !l.compressed { - return v1util.GzipReadCloser(rc) - } - - return rc, err -} - -func (l *layer) Uncompressed() (io.ReadCloser, error) { - rc, err := l.opener() - if err == nil && l.compressed { - return v1util.GunzipReadCloser(rc) - } - - return rc, err -} - -func (l *layer) Size() (int64, error) { - return l.size, nil -} - -// LayerFromFile returns a v1.Layer given a tarball -func LayerFromFile(path string) (v1.Layer, error) { - opener := func() (io.ReadCloser, error) { - return os.Open(path) - } - return LayerFromOpener(opener) -} - -// LayerFromOpener returns a v1.Layer given an Opener function -func LayerFromOpener(opener Opener) (v1.Layer, error) { - rc, err := opener() - if err != nil { - return nil, err - } - defer rc.Close() - - compressed, err := v1util.IsGzipped(rc) - if err != nil { - return nil, err - } - - var digest v1.Hash - var size int64 - if digest, size, err = computeDigest(opener, compressed); err != nil { - return nil, err - } - - diffID, err := computeDiffID(opener, compressed) - if err != nil { - return nil, err - } - - return &layer{ - digest: digest, - diffID: diffID, - size: size, - compressed: compressed, - opener: opener, - }, nil -} - -func computeDigest(opener Opener, compressed bool) (v1.Hash, int64, error) { - rc, err := opener() - if err != nil { - return v1.Hash{}, 0, err - } - defer rc.Close() - - if compressed { - return v1.SHA256(rc) - } - - reader, err := v1util.GzipReadCloser(ioutil.NopCloser(rc)) - if err != nil { - return v1.Hash{}, 0, err - } - - return v1.SHA256(reader) -} - -func computeDiffID(opener Opener, compressed bool) (v1.Hash, error) { - rc, err := opener() - if err != nil { - return v1.Hash{}, err - } - defer rc.Close() - - if !compressed { - digest, _, err := v1.SHA256(rc) - return digest, err - } - - reader, err := gzip.NewReader(rc) - if err != nil { - return v1.Hash{}, err - } - - diffID, _, err := v1.SHA256(reader) - return diffID, err -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/write.go b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/write.go deleted file mode 100644 index a7f72cd9..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/write.go +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 tarball - -import ( - "archive/tar" - "bytes" - "encoding/json" - "fmt" - "io" - "os" - - "github.com/google/go-containerregistry/pkg/name" - "github.com/google/go-containerregistry/pkg/v1" -) - -// WriteOptions are used to expose optional information to guide or -// control the image write. -type WriteOptions struct { - // TODO(mattmoor): Whether to store things compressed? -} - -// WriteToFile writes in the compressed format to a tarball, on disk. -// This is just syntactic sugar wrapping tarball.Write with a new file. -func WriteToFile(p string, tag name.Tag, img v1.Image, wo *WriteOptions) error { - w, err := os.Create(p) - if err != nil { - return err - } - defer w.Close() - - return Write(tag, img, wo, w) -} - -// Write the contents of the image to the provided reader, in the compressed format. -// The contents are written in the following format: -// One manifest.json file at the top level containing information about several images. -// One file for each layer, named after the layer's SHA. -// One file for the config blob, named after its SHA. -func Write(tag name.Tag, img v1.Image, wo *WriteOptions, w io.Writer) error { - tf := tar.NewWriter(w) - defer tf.Close() - - // Write the config. - cfgName, err := img.ConfigName() - if err != nil { - return err - } - cfgBlob, err := img.RawConfigFile() - if err != nil { - return err - } - if err := writeTarEntry(tf, cfgName.String(), bytes.NewReader(cfgBlob), int64(len(cfgBlob))); err != nil { - return err - } - - // Write the layers. - layers, err := img.Layers() - if err != nil { - return err - } - layerFiles := make([]string, len(layers)) - for i, l := range layers { - d, err := l.Digest() - if err != nil { - return err - } - - // Munge the file name to appease ancient technology. - // - // tar assumes anything with a colon is a remote tape drive: - // https://www.gnu.org/software/tar/manual/html_section/tar_45.html - // Drop the algorithm prefix, e.g. "sha256:" - hex := d.Hex - - // gunzip expects certain file extensions: - // https://www.gnu.org/software/gzip/manual/html_node/Overview.html - layerFiles[i] = fmt.Sprintf("%s.tar.gz", hex) - - r, err := l.Compressed() - if err != nil { - return err - } - blobSize, err := l.Size() - if err != nil { - return err - } - - if err := writeTarEntry(tf, layerFiles[i], r, blobSize); err != nil { - return err - } - } - - // Generate the tar descriptor and write it. - td := tarDescriptor{ - singleImageTarDescriptor{ - Config: cfgName.String(), - RepoTags: []string{tag.String()}, - Layers: layerFiles, - }, - } - tdBytes, err := json.Marshal(td) - if err != nil { - return err - } - return writeTarEntry(tf, "manifest.json", bytes.NewReader(tdBytes), int64(len(tdBytes))) -} - -// write a file to the provided writer with a corresponding tar header -func writeTarEntry(tf *tar.Writer, path string, r io.Reader, size int64) error { - hdr := &tar.Header{ - Mode: 0644, - Typeflag: tar.TypeReg, - Size: size, - Name: path, - } - if err := tf.WriteHeader(hdr); err != nil { - return err - } - _, err := io.Copy(tf, r) - return err -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/types/types.go b/vendor/github.com/google/go-containerregistry/pkg/v1/types/types.go deleted file mode 100644 index ddaf7196..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/types/types.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 types - -// MediaType is an enumeration of the supported mime types that an element of an image might have. -type MediaType string - -// The collection of known MediaType values. -const ( - OCIContentDescriptor MediaType = "application/vnd.oci.descriptor.v1+json" - OCIImageIndex MediaType = "application/vnd.oci.image.index.v1+json" - OCIManifestSchema1 MediaType = "application/vnd.oci.image.manifest.v1+json" - OCIConfigJSON MediaType = "application/vnd.oci.image.config.v1+json" - OCILayer MediaType = "application/vnd.oci.image.layer.v1.tar+gzip" - OCIRestrictedLayer MediaType = "application/vnd.oci.image.layer.nondistributable.v1.tar+gzip" - OCIUncompressedLayer MediaType = "application/vnd.oci.image.layer.v1.tar" - OCIUncompressedRestrictedLayer MediaType = "application/vnd.oci.image.layer.nondistributable.v1.tar" - - DockerManifestSchema1 MediaType = "application/vnd.docker.distribution.manifest.v1+json" - DockerManifestSchema1Signed MediaType = "application/vnd.docker.distribution.manifest.v1+prettyjws" - DockerManifestSchema2 MediaType = "application/vnd.docker.distribution.manifest.v2+json" - DockerManifestList MediaType = "application/vnd.docker.distribution.manifest.list.v2+json" - DockerLayer MediaType = "application/vnd.docker.image.rootfs.diff.tar.gzip" - DockerConfigJSON MediaType = "application/vnd.docker.container.image.v1+json" - DockerPluginConfig MediaType = "application/vnd.docker.plugin.v1+json" - DockerForeignLayer MediaType = "application/vnd.docker.image.rootfs.foreign.diff.tar.gzip" - DockerUncompressedLayer MediaType = "application/vnd.docker.image.rootfs.diff.tar" -) diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/and_closer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/and_closer.go deleted file mode 100644 index 0925f13d..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/and_closer.go +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 v1util - -import ( - "io" -) - -// readAndCloser implements io.ReadCloser by reading from a particular io.Reader -// and then calling the provided "Close()" method. -type readAndCloser struct { - io.Reader - CloseFunc func() error -} - -var _ io.ReadCloser = (*readAndCloser)(nil) - -// Close implements io.ReadCloser -func (rac *readAndCloser) Close() error { - return rac.CloseFunc() -} - -// writeAndCloser implements io.WriteCloser by reading from a particular io.Writer -// and then calling the provided "Close()" method. -type writeAndCloser struct { - io.Writer - CloseFunc func() error -} - -var _ io.WriteCloser = (*writeAndCloser)(nil) - -// Close implements io.WriteCloser -func (wac *writeAndCloser) Close() error { - return wac.CloseFunc() -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/nop.go b/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/nop.go deleted file mode 100644 index 8ff288d9..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/nop.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 v1util - -import ( - "io" -) - -func nop() error { - return nil -} - -// NopWriteCloser wraps the io.Writer as an io.WriteCloser with a Close() method that does nothing. -func NopWriteCloser(w io.Writer) io.WriteCloser { - return &writeAndCloser{ - Writer: w, - CloseFunc: nop, - } -} - -// NopReadCloser wraps the io.Reader as an io.ReadCloser with a Close() method that does nothing. -// This is technically redundant with ioutil.NopCloser, but provided for symmetry and clarity. -func NopReadCloser(r io.Reader) io.ReadCloser { - return &readAndCloser{ - Reader: r, - CloseFunc: nop, - } -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/verify.go b/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/verify.go deleted file mode 100644 index 7ebb9dde..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/verify.go +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 v1util - -import ( - "encoding/hex" - "fmt" - "hash" - "io" - - "github.com/google/go-containerregistry/pkg/v1" -) - -type verifyReader struct { - inner io.Reader - hasher hash.Hash - expected v1.Hash -} - -// Read implements io.Reader -func (vc *verifyReader) Read(b []byte) (int, error) { - n, err := vc.inner.Read(b) - if err == io.EOF { - got := hex.EncodeToString(vc.hasher.Sum(make([]byte, 0, vc.hasher.Size()))) - if want := vc.expected.Hex; got != want { - return n, fmt.Errorf("error verifying %s checksum; got %q, want %q", - vc.expected.Algorithm, got, want) - } - } - return n, err -} - -// VerifyReadCloser wraps the given io.ReadCloser to verify that its contents match -// the provided v1.Hash before io.EOF is returned. -func VerifyReadCloser(r io.ReadCloser, h v1.Hash) (io.ReadCloser, error) { - w, err := v1.Hasher(h.Algorithm) - if err != nil { - return nil, err - } - r2 := io.TeeReader(r, w) - return &readAndCloser{ - Reader: &verifyReader{ - inner: r2, - hasher: w, - expected: h, - }, - CloseFunc: r.Close, - }, nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/zip.go b/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/zip.go deleted file mode 100644 index f12d0ed8..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/zip.go +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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 v1util - -import ( - "bytes" - "compress/gzip" - "io" -) - -var gzipMagicHeader = []byte{'\x1f', '\x8b'} - -// GzipReadCloser reads uncompressed input data from the io.ReadCloser and -// returns an io.ReadCloser from which compressed data may be read. -// This uses gzip.BestSpeed for the compression level. -func GzipReadCloser(r io.ReadCloser) (io.ReadCloser, error) { - return GzipReadCloserLevel(r, gzip.BestSpeed) -} - -// GzipReadCloserLevel reads uncompressed input data from the io.ReadCloser and -// returns an io.ReadCloser from which compressed data may be read. -// Refer to compress/gzip for the level: -// https://golang.org/pkg/compress/gzip/#pkg-constants -func GzipReadCloserLevel(r io.ReadCloser, level int) (io.ReadCloser, error) { - pr, pw := io.Pipe() - - go func() { - defer pw.Close() - defer r.Close() - - gw, _ := gzip.NewWriterLevel(pw, level) - defer gw.Close() - - _, err := io.Copy(gw, r) - if err != nil { - pr.CloseWithError(err) - } - }() - - return pr, nil -} - -// GunzipReadCloser reads compressed input data from the io.ReadCloser and -// returns an io.ReadCloser from which uncompessed data may be read. -func GunzipReadCloser(r io.ReadCloser) (io.ReadCloser, error) { - gr, err := gzip.NewReader(r) - if err != nil { - return nil, err - } - return &readAndCloser{ - Reader: gr, - CloseFunc: func() error { - if err := gr.Close(); err != nil { - return err - } - return r.Close() - }, - }, nil -} - -// GzipWriteCloser returns an io.WriteCloser to which uncompressed data may be -// written, and the compressed data is then written to the provided -// io.WriteCloser. -func GzipWriteCloser(w io.WriteCloser) io.WriteCloser { - gw := gzip.NewWriter(w) - return &writeAndCloser{ - Writer: gw, - CloseFunc: func() error { - if err := gw.Close(); err != nil { - return err - } - return w.Close() - }, - } -} - -// gunzipWriteCloser implements io.WriteCloser -// It is used to implement GunzipWriteClose. -type gunzipWriteCloser struct { - *bytes.Buffer - writer io.WriteCloser -} - -// Close implements io.WriteCloser -func (gwc *gunzipWriteCloser) Close() error { - // TODO(mattmoor): How to avoid buffering this whole thing into memory? - gr, err := gzip.NewReader(gwc.Buffer) - if err != nil { - return err - } - if _, err := io.Copy(gwc.writer, gr); err != nil { - return err - } - return gwc.writer.Close() -} - -// GunzipWriteCloser returns an io.WriteCloser to which compressed data may be -// written, and the uncompressed data is then written to the provided -// io.WriteCloser. -func GunzipWriteCloser(w io.WriteCloser) (io.WriteCloser, error) { - return &gunzipWriteCloser{ - Buffer: bytes.NewBuffer(nil), - writer: w, - }, nil -} - -// IsGzipped detects whether the input stream is compressed. -func IsGzipped(r io.Reader) (bool, error) { - magicHeader := make([]byte, 2) - if _, err := r.Read(magicHeader); err != nil { - return false, err - } - return bytes.Equal(magicHeader, gzipMagicHeader), nil -} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/zz_deepcopy_generated.go b/vendor/github.com/google/go-containerregistry/pkg/v1/zz_deepcopy_generated.go deleted file mode 100644 index 530e048f..00000000 --- a/vendor/github.com/google/go-containerregistry/pkg/v1/zz_deepcopy_generated.go +++ /dev/null @@ -1,232 +0,0 @@ -// +build !ignore_autogenerated - -// Copyright 2018 Google LLC All Rights Reserved. -// -// 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. - -// Code generated by deepcopy-gen. DO NOT EDIT. - -package v1 - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Config) DeepCopyInto(out *Config) { - *out = *in - if in.Cmd != nil { - in, out := &in.Cmd, &out.Cmd - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.Entrypoint != nil { - in, out := &in.Entrypoint, &out.Entrypoint - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.Env != nil { - in, out := &in.Env, &out.Env - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.Labels != nil { - in, out := &in.Labels, &out.Labels - *out = make(map[string]string, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } - if in.OnBuild != nil { - in, out := &in.OnBuild, &out.OnBuild - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.Volumes != nil { - in, out := &in.Volumes, &out.Volumes - *out = make(map[string]struct{}, len(*in)) - for key := range *in { - (*out)[key] = struct{}{} - } - } - if in.ExposedPorts != nil { - in, out := &in.ExposedPorts, &out.ExposedPorts - *out = make(map[string]struct{}, len(*in)) - for key := range *in { - (*out)[key] = struct{}{} - } - } - if in.Shell != nil { - in, out := &in.Shell, &out.Shell - *out = make([]string, len(*in)) - copy(*out, *in) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Config. -func (in *Config) DeepCopy() *Config { - if in == nil { - return nil - } - out := new(Config) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *ConfigFile) DeepCopyInto(out *ConfigFile) { - *out = *in - in.Created.DeepCopyInto(&out.Created) - if in.History != nil { - in, out := &in.History, &out.History - *out = make([]History, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - in.RootFS.DeepCopyInto(&out.RootFS) - in.Config.DeepCopyInto(&out.Config) - in.ContainerConfig.DeepCopyInto(&out.ContainerConfig) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigFile. -func (in *ConfigFile) DeepCopy() *ConfigFile { - if in == nil { - return nil - } - out := new(ConfigFile) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Descriptor) DeepCopyInto(out *Descriptor) { - *out = *in - out.Digest = in.Digest - if in.URLs != nil { - in, out := &in.URLs, &out.URLs - *out = make([]string, len(*in)) - copy(*out, *in) - } - if in.Annotations != nil { - in, out := &in.Annotations, &out.Annotations - *out = make(map[string]string, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Descriptor. -func (in *Descriptor) DeepCopy() *Descriptor { - if in == nil { - return nil - } - out := new(Descriptor) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Hash) DeepCopyInto(out *Hash) { - *out = *in - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Hash. -func (in *Hash) DeepCopy() *Hash { - if in == nil { - return nil - } - out := new(Hash) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *History) DeepCopyInto(out *History) { - *out = *in - in.Created.DeepCopyInto(&out.Created) - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new History. -func (in *History) DeepCopy() *History { - if in == nil { - return nil - } - out := new(History) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Manifest) DeepCopyInto(out *Manifest) { - *out = *in - in.Config.DeepCopyInto(&out.Config) - if in.Layers != nil { - in, out := &in.Layers, &out.Layers - *out = make([]Descriptor, len(*in)) - for i := range *in { - (*in)[i].DeepCopyInto(&(*out)[i]) - } - } - if in.Annotations != nil { - in, out := &in.Annotations, &out.Annotations - *out = make(map[string]string, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Manifest. -func (in *Manifest) DeepCopy() *Manifest { - if in == nil { - return nil - } - out := new(Manifest) - in.DeepCopyInto(out) - return out -} - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *RootFS) DeepCopyInto(out *RootFS) { - *out = *in - if in.DiffIDs != nil { - in, out := &in.DiffIDs, &out.DiffIDs - *out = make([]Hash, len(*in)) - copy(*out, *in) - } - return -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RootFS. -func (in *RootFS) DeepCopy() *RootFS { - if in == nil { - return nil - } - out := new(RootFS) - in.DeepCopyInto(out) - return out -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Time. -func (in *Time) DeepCopy() *Time { - if in == nil { - return nil - } - out := new(Time) - in.DeepCopyInto(out) - return out -} diff --git a/vendor/github.com/google/licenseclassifier/LICENSE b/vendor/github.com/google/licenseclassifier/LICENSE deleted file mode 100644 index d6456956..00000000 --- a/vendor/github.com/google/licenseclassifier/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - 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. diff --git a/vendor/github.com/google/licenseclassifier/classifier.go b/vendor/github.com/google/licenseclassifier/classifier.go deleted file mode 100644 index 0a9f39fb..00000000 --- a/vendor/github.com/google/licenseclassifier/classifier.go +++ /dev/null @@ -1,429 +0,0 @@ -// Copyright 2017 Google 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 licenseclassifier provides methods to identify the open source -// license that most closely matches an unknown license. -package licenseclassifier - -import ( - "archive/tar" - "bytes" - "compress/gzip" - "fmt" - "html" - "io" - "math" - "regexp" - "sort" - "strings" - "sync" - "unicode" - - "github.com/google/licenseclassifier/stringclassifier" - "github.com/google/licenseclassifier/stringclassifier/searchset" -) - -// DefaultConfidenceThreshold is the minimum confidence percentage we're willing to accept in order -// to say that a match is good. -const DefaultConfidenceThreshold = 0.80 - -var ( - // Normalizers is a list of functions that get applied to the strings - // before they are registered with the string classifier. - Normalizers = []stringclassifier.NormalizeFunc{ - html.UnescapeString, - removeShebangLine, - RemoveNonWords, - NormalizeEquivalentWords, - NormalizePunctuation, - strings.ToLower, - removeIgnorableTexts, - stringclassifier.FlattenWhitespace, - strings.TrimSpace, - } - - // commonLicenseWords are words that are common to all known licenses. - // If an unknown text doesn't have at least one of these, then we can - // ignore it. - commonLicenseWords = []*regexp.Regexp{ - regexp.MustCompile(`(?i)\bcode\b`), - regexp.MustCompile(`(?i)\blicense\b`), - regexp.MustCompile(`(?i)\boriginal\b`), - regexp.MustCompile(`(?i)\brights\b`), - regexp.MustCompile(`(?i)\bsoftware\b`), - regexp.MustCompile(`(?i)\bterms\b`), - regexp.MustCompile(`(?i)\bversion\b`), - regexp.MustCompile(`(?i)\bwork\b`), - } -) - -// License is a classifier pre-loaded with known open source licenses. -type License struct { - c *stringclassifier.Classifier - - // Threshold is the lowest confidence percentage acceptable for the - // classifier. - Threshold float64 -} - -// New creates a license classifier and pre-loads it with known open source licenses. -func New(threshold float64) (*License, error) { - classifier := &License{ - c: stringclassifier.New(stringclassifier.DefaultConfidenceThreshold, Normalizers...), - Threshold: threshold, - } - if err := classifier.registerLicenses(LicenseArchive); err != nil { - return nil, fmt.Errorf("cannot register licenses: %v", err) - } - return classifier, nil -} - -// NewWithForbiddenLicenses creates a license classifier and pre-loads it with -// known open source licenses which are forbidden. -func NewWithForbiddenLicenses(threshold float64) (*License, error) { - classifier := &License{ - c: stringclassifier.New(stringclassifier.DefaultConfidenceThreshold, Normalizers...), - Threshold: threshold, - } - if err := classifier.registerLicenses(ForbiddenLicenseArchive); err != nil { - return nil, fmt.Errorf("cannot register licenses: %v", err) - } - return classifier, nil -} - -// WithinConfidenceThreshold returns true if the confidence value is above or -// equal to the confidence threshold. -func (c *License) WithinConfidenceThreshold(conf float64) bool { - return conf > c.Threshold || math.Abs(conf-c.Threshold) < math.SmallestNonzeroFloat64 -} - -// NearestMatch returns the "nearest" match to the given set of known licenses. -// Returned are the name of the license, and a confidence percentage indicating -// how confident the classifier is in the result. -func (c *License) NearestMatch(contents string) *stringclassifier.Match { - if !c.hasCommonLicenseWords(contents) { - return nil - } - m := c.c.NearestMatch(contents) - m.Name = strings.TrimSuffix(m.Name, ".header") - return m -} - -// MultipleMatch matches all licenses within an unknown text. -func (c *License) MultipleMatch(contents string, includeHeaders bool) stringclassifier.Matches { - norm := normalizeText(contents) - if !c.hasCommonLicenseWords(norm) { - return nil - } - - m := make(map[stringclassifier.Match]bool) - var matches stringclassifier.Matches - for _, v := range c.c.MultipleMatch(norm) { - if !c.WithinConfidenceThreshold(v.Confidence) { - continue - } - - if !includeHeaders && strings.HasSuffix(v.Name, ".header") { - continue - } - - v.Name = strings.TrimSuffix(v.Name, ".header") - if re, ok := forbiddenRegexps[v.Name]; ok && !re.MatchString(norm) { - continue - } - if _, ok := m[*v]; !ok { - m[*v] = true - matches = append(matches, v) - } - } - sort.Sort(matches) - return matches -} - -func normalizeText(s string) string { - for _, n := range Normalizers { - s = n(s) - } - return s -} - -// hasCommonLicenseWords returns true if the unknown text has at least one word -// that's common to all licenses. -func (c *License) hasCommonLicenseWords(s string) bool { - for _, re := range commonLicenseWords { - if re.MatchString(s) { - return true - } - } - return false -} - -type archivedValue struct { - name string - normalized string - set *searchset.SearchSet -} - -// registerLicenses loads all known licenses and adds them to c as known values -// for comparison. The allocated space after ingesting the 'licenses.db' -// archive is ~167M. -func (c *License) registerLicenses(archive string) error { - contents, err := ReadLicenseFile(archive) - if err != nil { - return err - } - - reader := bytes.NewReader(contents) - gr, err := gzip.NewReader(reader) - if err != nil { - return err - } - defer gr.Close() - - tr := tar.NewReader(gr) - - var muVals sync.Mutex - var vals []archivedValue - for i := 0; ; i++ { - hdr, err := tr.Next() - if err == io.EOF { - break - } - if err != nil { - return err - } - - name := strings.TrimSuffix(hdr.Name, ".txt") - - // Read normalized value. - var b bytes.Buffer - if _, err := io.Copy(&b, tr); err != nil { - return err - } - normalized := b.String() - b.Reset() - - // Read precomputed hashes. - hdr, err = tr.Next() - if err != nil { - return err - } - - if _, err := io.Copy(&b, tr); err != nil { - return err - } - - var set searchset.SearchSet - searchset.Deserialize(&b, &set) - - muVals.Lock() - vals = append(vals, archivedValue{name, normalized, &set}) - muVals.Unlock() - } - - for _, v := range vals { - if err = c.c.AddPrecomputedValue(v.name, v.normalized, v.set); err != nil { - return err - } - } - return nil -} - -// endOfLicenseText is text commonly associated with the end of a license. We -// can remove text that occurs after it. -var endOfLicenseText = []string{ - "END OF TERMS AND CONDITIONS", -} - -// TrimExtraneousTrailingText removes text after an obvious end of the license -// and does not include substantive text of the license. -func TrimExtraneousTrailingText(s string) string { - for _, e := range endOfLicenseText { - if i := strings.LastIndex(s, e); i != -1 { - return s[:i+len(e)] - } - } - return s -} - -var copyrightRE = regexp.MustCompile(`(?m)(?i:Copyright)\s+(?i:©\s+|\(c\)\s+)?(?:\d{2,4})(?:[-,]\s*\d{2,4})*,?\s*(?i:by)?\s*(.*?(?i:\s+Inc\.)?)[.,]?\s*(?i:All rights reserved\.?)?\s*$`) - -// CopyrightHolder finds a copyright notification, if it exists, and returns -// the copyright holder. -func CopyrightHolder(contents string) string { - matches := copyrightRE.FindStringSubmatch(contents) - if len(matches) == 2 { - return matches[1] - } - return "" -} - -var publicDomainRE = regexp.MustCompile("(?i)(this file )?is( in the)? public domain") - -// HasPublicDomainNotice performs a simple regex over the contents to see if a -// public domain notice is in there. As you can imagine, this isn't 100% -// definitive, but can be useful if a license match isn't found. -func (c *License) HasPublicDomainNotice(contents string) bool { - return publicDomainRE.FindString(contents) != "" -} - -// ignorableTexts is a list of lines at the start of the string we can remove -// to get a cleaner match. -var ignorableTexts = []*regexp.Regexp{ - regexp.MustCompile(`(?i)^(?:the )?mit license(?: \(mit\))?$`), - regexp.MustCompile(`(?i)^(?:new )?bsd license$`), - regexp.MustCompile(`(?i)^copyright and permission notice$`), - regexp.MustCompile(`(?i)^copyright (\(c\) )?(\[yyyy\]|\d{4})[,.]? .*$`), - regexp.MustCompile(`(?i)^(all|some) rights reserved\.?$`), - regexp.MustCompile(`(?i)^@license$`), - regexp.MustCompile(`^\s*$`), -} - -// removeIgnorableTexts removes common text, which is not important for -// classification, that shows up before the body of the license. -func removeIgnorableTexts(s string) string { - lines := strings.Split(strings.TrimRight(s, "\n"), "\n") - var start int - for ; start < len(lines); start++ { - line := strings.TrimSpace(lines[start]) - var matches bool - for _, re := range ignorableTexts { - if re.MatchString(line) { - matches = true - break - } - } - if !matches { - break - } - } - end := len(lines) - if start > end { - return "\n" - } - return strings.Join(lines[start:end], "\n") + "\n" -} - -// removeShebangLine removes the '#!...' line if it's the first line in the -// file. Note that if it's the only line in a comment, it won't be removed. -func removeShebangLine(s string) string { - lines := strings.Split(s, "\n") - if len(lines) <= 1 || !strings.HasPrefix(lines[0], "#!") { - return s - } - - return strings.Join(lines[1:], "\n") -} - -// isDecorative returns true if the line is made up purely of non-letter and -// non-digit characters. -func isDecorative(s string) bool { - for _, c := range s { - if unicode.IsLetter(c) || unicode.IsDigit(c) { - return false - } - } - return true -} - -var nonWords = regexp.MustCompile("[[:punct:]]+") - -// RemoveNonWords removes non-words from the string. -func RemoveNonWords(s string) string { - return nonWords.ReplaceAllString(s, " ") -} - -// interchangeablePunctutation is punctuation that can be normalized. -var interchangeablePunctuation = []struct { - interchangeable *regexp.Regexp - substitute string -}{ - // Hyphen, Dash, En Dash, and Em Dash. - {regexp.MustCompile(`[-‒–—]`), "-"}, - // Single, Double, Curly Single, and Curly Double. - {regexp.MustCompile("['\"`‘’“”]"), "'"}, - // Copyright. - {regexp.MustCompile("©"), "(c)"}, - // Hyphen-separated words. - {regexp.MustCompile(`(\S)-\s+(\S)`), "${1}-${2}"}, - // Currency and Section. (Different copies of the CDDL use each marker.) - {regexp.MustCompile("[§¤]"), "(s)"}, - // Middle Dot - {regexp.MustCompile("·"), "*"}, -} - -// NormalizePunctuation takes all hyphens and quotes and normalizes them. -func NormalizePunctuation(s string) string { - for _, iw := range interchangeablePunctuation { - s = iw.interchangeable.ReplaceAllString(s, iw.substitute) - } - return s -} - -// interchangeableWords are words we can substitute for a normalized form -// without changing the meaning of the license. See -// https://spdx.org/spdx-license-list/matching-guidelines for the list. -var interchangeableWords = []struct { - interchangeable *regexp.Regexp - substitute string -}{ - {regexp.MustCompile("(?i)Acknowledgment"), "Acknowledgement"}, - {regexp.MustCompile("(?i)Analogue"), "Analog"}, - {regexp.MustCompile("(?i)Analyse"), "Analyze"}, - {regexp.MustCompile("(?i)Artefact"), "Artifact"}, - {regexp.MustCompile("(?i)Authorisation"), "Authorization"}, - {regexp.MustCompile("(?i)Authorised"), "Authorized"}, - {regexp.MustCompile("(?i)Calibre"), "Caliber"}, - {regexp.MustCompile("(?i)Cancelled"), "Canceled"}, - {regexp.MustCompile("(?i)Capitalisations"), "Capitalizations"}, - {regexp.MustCompile("(?i)Catalogue"), "Catalog"}, - {regexp.MustCompile("(?i)Categorise"), "Categorize"}, - {regexp.MustCompile("(?i)Centre"), "Center"}, - {regexp.MustCompile("(?i)Emphasised"), "Emphasized"}, - {regexp.MustCompile("(?i)Favour"), "Favor"}, - {regexp.MustCompile("(?i)Favourite"), "Favorite"}, - {regexp.MustCompile("(?i)Fulfil"), "Fulfill"}, - {regexp.MustCompile("(?i)Fulfilment"), "Fulfillment"}, - {regexp.MustCompile("(?i)Initialise"), "Initialize"}, - {regexp.MustCompile("(?i)Judgment"), "Judgement"}, - {regexp.MustCompile("(?i)Labelling"), "Labeling"}, - {regexp.MustCompile("(?i)Labour"), "Labor"}, - {regexp.MustCompile("(?i)Licence"), "License"}, - {regexp.MustCompile("(?i)Maximise"), "Maximize"}, - {regexp.MustCompile("(?i)Modelled"), "Modeled"}, - {regexp.MustCompile("(?i)Modelling"), "Modeling"}, - {regexp.MustCompile("(?i)Offence"), "Offense"}, - {regexp.MustCompile("(?i)Optimise"), "Optimize"}, - {regexp.MustCompile("(?i)Organisation"), "Organization"}, - {regexp.MustCompile("(?i)Organise"), "Organize"}, - {regexp.MustCompile("(?i)Practise"), "Practice"}, - {regexp.MustCompile("(?i)Programme"), "Program"}, - {regexp.MustCompile("(?i)Realise"), "Realize"}, - {regexp.MustCompile("(?i)Recognise"), "Recognize"}, - {regexp.MustCompile("(?i)Signalling"), "Signaling"}, - {regexp.MustCompile("(?i)Sub[- ]license"), "Sublicense"}, - {regexp.MustCompile("(?i)Utilisation"), "Utilization"}, - {regexp.MustCompile("(?i)Whilst"), "While"}, - {regexp.MustCompile("(?i)Wilful"), "Wilfull"}, - {regexp.MustCompile("(?i)Non-commercial"), "Noncommercial"}, - {regexp.MustCompile("(?i)Per cent"), "Percent"}, -} - -// NormalizeEquivalentWords normalizes equivalent words that are interchangeable. -func NormalizeEquivalentWords(s string) string { - for _, iw := range interchangeableWords { - s = iw.interchangeable.ReplaceAllString(s, iw.substitute) - } - return s -} diff --git a/vendor/github.com/google/licenseclassifier/file_system_resources.go b/vendor/github.com/google/licenseclassifier/file_system_resources.go deleted file mode 100644 index 0d92e3ae..00000000 --- a/vendor/github.com/google/licenseclassifier/file_system_resources.go +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2017 Google 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 licenseclassifier - -import ( - "go/build" - "io/ioutil" - "os" - "path/filepath" -) - -const ( - // LicenseDirectory is the directory where the prototype licenses are kept. - LicenseDirectory = "src/github.com/google/licenseclassifier/licenses" - // LicenseArchive is the name of the archive containing preprocessed - // license texts. - LicenseArchive = "licenses.db" - // ForbiddenLicenseArchive is the name of the archive containing preprocessed - // forbidden license texts only. - ForbiddenLicenseArchive = "forbidden_licenses.db" -) - -func findInGOPATH(rel string) (fullPath string, err error) { - for _, path := range filepath.SplitList(build.Default.GOPATH) { - fullPath := filepath.Join(path, rel) - if _, err := os.Stat(fullPath); err != nil { - if os.IsNotExist(err) { - continue - } - return "", err - } - return fullPath, nil - } - return "", nil -} - -// ReadLicenseFile locates and reads the license file. -func ReadLicenseFile(filename string) ([]byte, error) { - archive, err := findInGOPATH(filepath.Join(LicenseDirectory, filename)) - if err != nil || archive == "" { - return nil, err - } - return ioutil.ReadFile(archive) -} - -// ReadLicenseDir reads directory containing the license files. -func ReadLicenseDir() ([]os.FileInfo, error) { - filename, err := findInGOPATH(filepath.Join(LicenseDirectory, LicenseArchive)) - if err != nil || filename == "" { - return nil, err - } - return ioutil.ReadDir(filepath.Dir(filename)) -} diff --git a/vendor/github.com/google/licenseclassifier/forbidden.go b/vendor/github.com/google/licenseclassifier/forbidden.go deleted file mode 100644 index 6c02ee5d..00000000 --- a/vendor/github.com/google/licenseclassifier/forbidden.go +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2017 Google 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 licenseclassifier - -import "regexp" - -var ( - reCCBYNC = regexp.MustCompile(`(?i).*\bAttribution NonCommercial\b.*`) - reCCBYNCND = regexp.MustCompile(`(?i).*\bAttribution NonCommercial NoDerivs\b.*`) - reCCBYNCSA = regexp.MustCompile(`(?i).*\bAttribution NonCommercial ShareAlike\b.*`) - - // forbiddenRegexps are regular expressions we expect to find in - // forbidden licenses. If we think we have a forbidden license but - // don't find the equivalent phrase, then it's probably just a - // misclassification. - forbiddenRegexps = map[string]*regexp.Regexp{ - AGPL10: regexp.MustCompile(`(?i).*\bAFFERO GENERAL PUBLIC LICENSE\b.*`), - AGPL30: regexp.MustCompile(`(?i).*\bGNU AFFERO GENERAL PUBLIC LICENSE\b.*`), - CCBYNC10: reCCBYNC, - CCBYNC20: reCCBYNC, - CCBYNC25: reCCBYNC, - CCBYNC30: reCCBYNC, - CCBYNC40: reCCBYNC, - CCBYNCND10: regexp.MustCompile(`(?i).*\bAttribution NoDerivs NonCommercial\b.*`), - CCBYNCND20: reCCBYNCND, - CCBYNCND25: reCCBYNCND, - CCBYNCND30: reCCBYNCND, - CCBYNCND40: regexp.MustCompile(`(?i).*\bAttribution NonCommercial NoDerivatives\b.*`), - CCBYNCSA10: reCCBYNCSA, - CCBYNCSA20: reCCBYNCSA, - CCBYNCSA25: reCCBYNCSA, - CCBYNCSA30: reCCBYNCSA, - CCBYNCSA40: reCCBYNCSA, - WTFPL: regexp.MustCompile(`(?i).*\bDO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\b.*`), - } -) diff --git a/vendor/github.com/google/licenseclassifier/internal/sets/sets.go b/vendor/github.com/google/licenseclassifier/internal/sets/sets.go deleted file mode 100644 index f34ae5bf..00000000 --- a/vendor/github.com/google/licenseclassifier/internal/sets/sets.go +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2017 Google 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 sets provides sets for storing collections of unique elements. -package sets - -// present is an empty struct used as the "value" in the map[int], since -// empty structs consume zero bytes (unlike 1 unnecessary byte per bool). -type present struct{} diff --git a/vendor/github.com/google/licenseclassifier/internal/sets/stringset.go b/vendor/github.com/google/licenseclassifier/internal/sets/stringset.go deleted file mode 100644 index 54edbd4b..00000000 --- a/vendor/github.com/google/licenseclassifier/internal/sets/stringset.go +++ /dev/null @@ -1,228 +0,0 @@ -// Copyright 2017 Google 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 sets - -import ( - "fmt" - "sort" - "strings" -) - -// StringSet stores a set of unique string elements. -type StringSet struct { - set map[string]present -} - -// NewStringSet creates a StringSet containing the supplied initial string elements. -func NewStringSet(elements ...string) *StringSet { - s := &StringSet{} - s.set = make(map[string]present) - s.Insert(elements...) - return s -} - -// Copy returns a newly allocated copy of the supplied StringSet. -func (s *StringSet) Copy() *StringSet { - c := NewStringSet() - if s != nil { - for e := range s.set { - c.set[e] = present{} - } - } - return c -} - -// Insert zero or more string elements into the StringSet. -// As expected for a Set, elements already present in the StringSet are -// simply ignored. -func (s *StringSet) Insert(elements ...string) { - for _, e := range elements { - s.set[e] = present{} - } -} - -// Delete zero or more string elements from the StringSet. -// Any elements not present in the StringSet are simply ignored. -func (s *StringSet) Delete(elements ...string) { - for _, e := range elements { - delete(s.set, e) - } -} - -// Intersect returns a new StringSet containing the intersection of the -// receiver and argument StringSets. Returns an empty set if the argument is nil. -func (s *StringSet) Intersect(other *StringSet) *StringSet { - if other == nil { - return NewStringSet() - } - - // Point a and b to the maps, setting a to the smaller of the two. - a, b := s.set, other.set - if len(b) < len(a) { - a, b = b, a - } - - // Perform the intersection. - intersect := NewStringSet() - for e := range a { - if _, ok := b[e]; ok { - intersect.set[e] = present{} - } - } - return intersect -} - -// Disjoint returns true if the intersection of the receiver and the argument -// StringSets is the empty set. Returns true if the argument is nil or either -// StringSet is the empty set. -func (s *StringSet) Disjoint(other *StringSet) bool { - if other == nil || len(other.set) == 0 || len(s.set) == 0 { - return true - } - - // Point a and b to the maps, setting a to the smaller of the two. - a, b := s.set, other.set - if len(b) < len(a) { - a, b = b, a - } - - // Check for non-empty intersection. - for e := range a { - if _, ok := b[e]; ok { - return false // Early-exit because intersecting. - } - } - return true -} - -// Difference returns a new StringSet containing the elements in the receiver -// that are not present in the argument StringSet. Returns a copy of the -// receiver if the argument is nil. -func (s *StringSet) Difference(other *StringSet) *StringSet { - if other == nil { - return s.Copy() - } - - // Insert only the elements in the receiver that are not present in the - // argument StringSet. - diff := NewStringSet() - for e := range s.set { - if _, ok := other.set[e]; !ok { - diff.set[e] = present{} - } - } - return diff -} - -// Unique returns a new StringSet containing the elements in the receiver -// that are not present in the argument StringSet *and* the elements in the -// argument StringSet that are not in the receiver (which is the union of two -// disjoint sets). Returns a copy of the -// receiver if the argument is nil. -func (s *StringSet) Unique(other *StringSet) *StringSet { - if other == nil { - return s.Copy() - } - - sNotInOther := s.Difference(other) - otherNotInS := other.Difference(s) - - // Duplicate Union implementation here to avoid extra Copy, since both - // sNotInOther and otherNotInS are already copies. - unique := sNotInOther - for e := range otherNotInS.set { - unique.set[e] = present{} - } - return unique -} - -// Equal returns true if the receiver and the argument StringSet contain -// exactly the same elements. -func (s *StringSet) Equal(other *StringSet) bool { - if s == nil || other == nil { - return s == nil && other == nil - } - - // Two sets of different length cannot have the exact same unique elements. - if len(s.set) != len(other.set) { - return false - } - - // Only one loop is needed. If the two sets are known to be of equal - // length, then the two sets are equal only if exactly all of the elements - // in the first set are found in the second. - for e := range s.set { - if _, ok := other.set[e]; !ok { - return false - } - } - - return true -} - -// Union returns a new StringSet containing the union of the receiver and -// argument StringSets. Returns a copy of the receiver if the argument is nil. -func (s *StringSet) Union(other *StringSet) *StringSet { - union := s.Copy() - if other != nil { - for e := range other.set { - union.set[e] = present{} - } - } - return union -} - -// Contains returns true if element is in the StringSet. -func (s *StringSet) Contains(element string) bool { - _, in := s.set[element] - return in -} - -// Len returns the number of unique elements in the StringSet. -func (s *StringSet) Len() int { - return len(s.set) -} - -// Empty returns true if the receiver is the empty set. -func (s *StringSet) Empty() bool { - return len(s.set) == 0 -} - -// Elements returns a []string of the elements in the StringSet, in no -// particular (or consistent) order. -func (s *StringSet) Elements() []string { - elements := []string{} // Return at least an empty slice rather than nil. - for e := range s.set { - elements = append(elements, e) - } - return elements -} - -// Sorted returns a sorted []string of the elements in the StringSet. -func (s *StringSet) Sorted() []string { - elements := s.Elements() - sort.Strings(elements) - return elements -} - -// String formats the StringSet elements as sorted strings, representing them -// in "array initializer" syntax. -func (s *StringSet) String() string { - elements := s.Sorted() - var quoted []string - for _, e := range elements { - quoted = append(quoted, fmt.Sprintf("%q", e)) - } - return fmt.Sprintf("{%s}", strings.Join(quoted, ", ")) -} diff --git a/vendor/github.com/google/licenseclassifier/license_type.go b/vendor/github.com/google/licenseclassifier/license_type.go deleted file mode 100644 index f0070c39..00000000 --- a/vendor/github.com/google/licenseclassifier/license_type.go +++ /dev/null @@ -1,368 +0,0 @@ -// Copyright 2017 Google 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 licenseclassifier - -// *** NOTE: Update this file when adding a new license. You need to: -// -// 1. Add the canonical name to the list, and -// 2. Categorize the license. - -import "github.com/google/licenseclassifier/internal/sets" - -// Canonical names of the licenses. -const ( - // The names come from the https://spdx.org/licenses website, and are - // also the filenames of the licenses in licenseclassifier/licenses. - AFL11 = "AFL-1.1" - AFL12 = "AFL-1.2" - AFL20 = "AFL-2.0" - AFL21 = "AFL-2.1" - AFL30 = "AFL-3.0" - AGPL10 = "AGPL-1.0" - AGPL30 = "AGPL-3.0" - Apache10 = "Apache-1.0" - Apache11 = "Apache-1.1" - Apache20 = "Apache-2.0" - APSL10 = "APSL-1.0" - APSL11 = "APSL-1.1" - APSL12 = "APSL-1.2" - APSL20 = "APSL-2.0" - Artistic10cl8 = "Artistic-1.0-cl8" - Artistic10Perl = "Artistic-1.0-Perl" - Artistic10 = "Artistic-1.0" - Artistic20 = "Artistic-2.0" - BCL = "BCL" - Beerware = "Beerware" - BSD2ClauseFreeBSD = "BSD-2-Clause-FreeBSD" - BSD2ClauseNetBSD = "BSD-2-Clause-NetBSD" - BSD2Clause = "BSD-2-Clause" - BSD3ClauseAttribution = "BSD-3-Clause-Attribution" - BSD3ClauseClear = "BSD-3-Clause-Clear" - BSD3ClauseLBNL = "BSD-3-Clause-LBNL" - BSD3Clause = "BSD-3-Clause" - BSD4Clause = "BSD-4-Clause" - BSD4ClauseUC = "BSD-4-Clause-UC" - BSDProtection = "BSD-Protection" - BSL10 = "BSL-1.0" - CC010 = "CC0-1.0" - CCBY10 = "CC-BY-1.0" - CCBY20 = "CC-BY-2.0" - CCBY25 = "CC-BY-2.5" - CCBY30 = "CC-BY-3.0" - CCBY40 = "CC-BY-4.0" - CCBYNC10 = "CC-BY-NC-1.0" - CCBYNC20 = "CC-BY-NC-2.0" - CCBYNC25 = "CC-BY-NC-2.5" - CCBYNC30 = "CC-BY-NC-3.0" - CCBYNC40 = "CC-BY-NC-4.0" - CCBYNCND10 = "CC-BY-NC-ND-1.0" - CCBYNCND20 = "CC-BY-NC-ND-2.0" - CCBYNCND25 = "CC-BY-NC-ND-2.5" - CCBYNCND30 = "CC-BY-NC-ND-3.0" - CCBYNCND40 = "CC-BY-NC-ND-4.0" - CCBYNCSA10 = "CC-BY-NC-SA-1.0" - CCBYNCSA20 = "CC-BY-NC-SA-2.0" - CCBYNCSA25 = "CC-BY-NC-SA-2.5" - CCBYNCSA30 = "CC-BY-NC-SA-3.0" - CCBYNCSA40 = "CC-BY-NC-SA-4.0" - CCBYND10 = "CC-BY-ND-1.0" - CCBYND20 = "CC-BY-ND-2.0" - CCBYND25 = "CC-BY-ND-2.5" - CCBYND30 = "CC-BY-ND-3.0" - CCBYND40 = "CC-BY-ND-4.0" - CCBYSA10 = "CC-BY-SA-1.0" - CCBYSA20 = "CC-BY-SA-2.0" - CCBYSA25 = "CC-BY-SA-2.5" - CCBYSA30 = "CC-BY-SA-3.0" - CCBYSA40 = "CC-BY-SA-4.0" - CDDL10 = "CDDL-1.0" - CDDL11 = "CDDL-1.1" - CPAL10 = "CPAL-1.0" - CPL10 = "CPL-1.0" - eGenix = "eGenix" - EPL10 = "EPL-1.0" - EUPL10 = "EUPL-1.0" - EUPL11 = "EUPL-1.1" - Facebook2Clause = "Facebook-2-Clause" - Facebook3Clause = "Facebook-3-Clause" - FacebookExamples = "Facebook-Examples" - FreeImage = "FreeImage" - FTL = "FTL" - GPL10 = "GPL-1.0" - GPL20 = "GPL-2.0" - GPL20withautoconfexception = "GPL-2.0-with-autoconf-exception" - GPL20withbisonexception = "GPL-2.0-with-bison-exception" - GPL20withclasspathexception = "GPL-2.0-with-classpath-exception" - GPL20withfontexception = "GPL-2.0-with-font-exception" - GPL20withGCCexception = "GPL-2.0-with-GCC-exception" - GPL30 = "GPL-3.0" - GPL30withautoconfexception = "GPL-3.0-with-autoconf-exception" - GPL30withGCCexception = "GPL-3.0-with-GCC-exception" - ImageMagick = "ImageMagick" - IPL10 = "IPL-1.0" - ISC = "ISC" - LGPL20 = "LGPL-2.0" - LGPL21 = "LGPL-2.1" - LGPL30 = "LGPL-3.0" - LGPLLR = "LGPLLR" - Libpng = "Libpng" - Lil10 = "Lil-1.0" - LPL102 = "LPL-1.02" - LPL10 = "LPL-1.0" - MIT = "MIT" - MPL10 = "MPL-1.0" - MPL11 = "MPL-1.1" - MPL20 = "MPL-2.0" - MSPL = "MS-PL" - NCSA = "NCSA" - NPL10 = "NPL-1.0" - NPL11 = "NPL-1.1" - OpenSSL = "OpenSSL" - OSL10 = "OSL-1.0" - OSL11 = "OSL-1.1" - OSL20 = "OSL-2.0" - OSL21 = "OSL-2.1" - OSL30 = "OSL-3.0" - PHP301 = "PHP-3.01" - PHP30 = "PHP-3.0" - PIL = "PIL" - Python20 = "Python-2.0" - QPL10 = "QPL-1.0" - Ruby = "Ruby" - SGIB10 = "SGI-B-1.0" - SGIB11 = "SGI-B-1.1" - SGIB20 = "SGI-B-2.0" - SISSL12 = "SISSL-1.2" - SISSL = "SISSL" - Sleepycat = "Sleepycat" - UnicodeTOU = "Unicode-TOU" - Unlicense = "Unlicense" - W3C19980720 = "W3C-19980720" - W3C = "W3C" - WTFPL = "WTFPL" - X11 = "X11" - Xnet = "Xnet" - Zend20 = "Zend-2.0" - ZlibAcknowledgement = "zlib-acknowledgement" - Zlib = "Zlib" - ZPL11 = "ZPL-1.1" - ZPL20 = "ZPL-2.0" - ZPL21 = "ZPL-2.1" -) - -var ( - // Licenses Categorized by Type - - // restricted - Licenses in this category require mandatory source - // distribution if we ships a product that includes third-party code - // protected by such a license. - restrictedType = sets.NewStringSet( - BCL, - CCBYND10, - CCBYND20, - CCBYND25, - CCBYND30, - CCBYND40, - CCBYSA10, - CCBYSA20, - CCBYSA25, - CCBYSA30, - CCBYSA40, - GPL10, - GPL20, - GPL20withautoconfexception, - GPL20withbisonexception, - GPL20withclasspathexception, - GPL20withfontexception, - GPL20withGCCexception, - GPL30, - GPL30withautoconfexception, - GPL30withGCCexception, - LGPL20, - LGPL21, - LGPL30, - NPL10, - NPL11, - OSL10, - OSL11, - OSL20, - OSL21, - OSL30, - QPL10, - Sleepycat, - ) - - // reciprocal - These licenses allow usage of software made available - // under such licenses freely in *unmodified* form. If the third-party - // source code is modified in any way these modifications to the - // original third-party source code must be made available. - reciprocalType = sets.NewStringSet( - APSL10, - APSL11, - APSL12, - APSL20, - CDDL10, - CDDL11, - CPL10, - EPL10, - FreeImage, - IPL10, - MPL10, - MPL11, - MPL20, - Ruby, - ) - - // notice - These licenses contain few restrictions, allowing original - // or modified third-party software to be shipped in any product - // without endangering or encumbering our source code. All of the - // licenses in this category do, however, have an "original Copyright - // notice" or "advertising clause", wherein any external distributions - // must include the notice or clause specified in the license. - noticeType = sets.NewStringSet( - AFL11, - AFL12, - AFL20, - AFL21, - AFL30, - Apache10, - Apache11, - Apache20, - Artistic10cl8, - Artistic10Perl, - Artistic10, - Artistic20, - BSL10, - BSD2ClauseFreeBSD, - BSD2ClauseNetBSD, - BSD2Clause, - BSD3ClauseAttribution, - BSD3ClauseClear, - BSD3ClauseLBNL, - BSD3Clause, - BSD4Clause, - BSD4ClauseUC, - BSDProtection, - CCBY10, - CCBY20, - CCBY25, - CCBY30, - CCBY40, - FTL, - ISC, - ImageMagick, - Libpng, - Lil10, - LPL102, - LPL10, - MSPL, - MIT, - NCSA, - OpenSSL, - PHP301, - PHP30, - PIL, - Python20, - SGIB10, - SGIB11, - SGIB20, - UnicodeTOU, - W3C19980720, - W3C, - X11, - Xnet, - Zend20, - ZlibAcknowledgement, - Zlib, - ZPL11, - ZPL20, - ZPL21, - ) - - // permissive - These licenses can be used in (relatively rare) cases - // where third-party software is under a license (not "Public Domain" - // or "free for any use" like 'unencumbered') that is even more lenient - // than a 'notice' license. Use the 'permissive' license type when even - // a copyright notice is not required for license compliance. - permissiveType = sets.NewStringSet() - - // unencumbered - Licenses that basically declare that the code is "free for any use". - unencumberedType = sets.NewStringSet( - CC010, - Unlicense, - ) - - // byexceptiononly - Licenses that are incompatible with all (or most) - // uses in combination with our source code. Commercial third-party - // packages that are purchased and licensed only for a specific use - // fall into this category. - byExceptionOnlyType = sets.NewStringSet( - Beerware, - ) - - // forbidden - Licenses that are forbidden to be used. - forbiddenType = sets.NewStringSet( - AGPL10, - AGPL30, - CCBYNC10, - CCBYNC20, - CCBYNC25, - CCBYNC30, - CCBYNC40, - CCBYNCND10, - CCBYNCND20, - CCBYNCND25, - CCBYNCND30, - CCBYNCND40, - CCBYNCSA10, - CCBYNCSA20, - CCBYNCSA25, - CCBYNCSA30, - CCBYNCSA40, - Facebook2Clause, - Facebook3Clause, - FacebookExamples, - WTFPL, - ) - - // LicenseTypes is a set of the types of licenses Google recognizes. - LicenseTypes = sets.NewStringSet( - "restricted", - "reciprocal", - "notice", - "permissive", - "unencumbered", - "by_exception_only", - ) -) - -// LicenseType returns the type the license has. -func LicenseType(name string) string { - switch { - case restrictedType.Contains(name): - return "restricted" - case reciprocalType.Contains(name): - return "reciprocal" - case noticeType.Contains(name): - return "notice" - case permissiveType.Contains(name): - return "permissive" - case unencumberedType.Contains(name): - return "unencumbered" - case forbiddenType.Contains(name): - return "FORBIDDEN" - } - return "" -} diff --git a/vendor/github.com/google/licenseclassifier/licenses/Unlicense.txt b/vendor/github.com/google/licenseclassifier/licenses/Unlicense.txt deleted file mode 100644 index ac8f5f5f..00000000 --- a/vendor/github.com/google/licenseclassifier/licenses/Unlicense.txt +++ /dev/null @@ -1,24 +0,0 @@ -This is free and unencumbered software released into the public domain. - -Anyone is free to copy, modify, publish, use, compile, sell, or distribute -this software, either in source code form or as a compiled binary, for any -purpose, commercial or non-commercial, and by any means. - -In jurisdictions that recognize copyright laws, the author or authors of this -software dedicate any and all copyright interest in the software to the public -domain. We make this dedication for the benefit of the public at large and to -the detriment of our heirs and - -successors. We intend this dedication to be an overt act of relinquishment in -perpetuity of all present and future rights to this software under copyright -law. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -For more information, please refer to - diff --git a/vendor/github.com/google/licenseclassifier/licenses/licenses.db b/vendor/github.com/google/licenseclassifier/licenses/licenses.db deleted file mode 100644 index 3c9600abea0436b6f929000701fef06f7d5a9a1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5371833 zcmW(+1yCGav&Ef7g9VpBaCditEeSz`6EwI(@L<8+Vey3o&*B>R(8UK^EP()FvEUAm z|4mibt(v-XYi920?$f7d7~*kI{{MJ7=*G{{H*AzMfdyT4ZNLf8wJep0Nl0RFnbe6% zQr(Fq)cHNtl>;k-a-xfl8ardMM;LIK{zS#*Fusb7jips)jm1bE%yCaqW>qJ~WoC+v zO-;cdkrp`BWii7h1VNH)`}EKnDGp*>jGKl$rvPvB{P zW8>JO>S2TC4eW94?ppKiDQn17^7yGgQRxZx^hEvi%3k(`Ja?B2=^N43b$SgOJ6uR& zz&p}rmJ@QjEYzJu{0bA6*KlbZqwAgp^|J$gHB&qxE|l@E;n9+7t-$RN6zJ%xjg=05 zZUu_Y&Jl`9ZbcXc;vMtZtPxty)iDoGwK|Q<;{oc+naatwZ_=){!d}Hu20I~raL=%! z+@R{zZ9x6sr8kF0vGuQq6Miwh{D2Wf?zXcsx*7l5N>zGmdik9TI4Soan(hKBmNCNW zg(c$}O@C1sW)UzD5+ zLyK4P)Kv-wSKDSJS5?V0szfq85jG_|>N%ksX|ey2dX=5z>PV+1iK-Pin3}TE5>~J@ z-t@@Lew&E9yczuqU-)t5q{$pmSoB1ZIh>nI@ZX&9>*M6*6V= z!|#jr{hhvAI<+qJbr#*VC5@`uSViny7LJXOy!+^P(-W9EKs=jP&R36r=Lj>_kqRIr&E7MyxCcN zW_5-lu1ZPTX#fW|uV;?pjau3an0x#AO0Ux2I42GrnfVvGN4H+_q{pgxQnT=4xJPt$ z94*hNaz1};=fGwvho7eQe@ZUAL}LY;aXO(T{X%jx9HgTet;+3XkSQa@6XG%r_QLW9 z`ce_QB;83SkKd1_Ji;4})|a^NoKyY9Q&}}KS!c9x~gxL`yH6~;M%Hld+G%(mZrj)r!zV`5@H#wPH?|v!Msf#a*fKzzlj;0 zA3ZB90JER_Y0OBM!O4To!=C++v`o_blFxsR&QgTf$>XC7cam(=M7vr`qq!eT+D~N# z>m_E3UR{c0#7+3U-2+Q@ZagUV$WS{bDgXSj@ix_8lGLqd9V_XU3Lra}$w-J=&I?Sa zET{x?=B52dV)AnGjDjoGyVS+IZwB&=EoqeFGNT_nPQLhrDhTx-4Ih$*Ow(qr;W&q{ z&GFCBinBt~##~Zuy_`9Yjxv>J9pfsEZKDbU(^VD7v}GW*0_@nQ)r2)Ex1wqWXxvUFxrrPORHISFqX^Q@YZ0R7jMAITjj zU+!~s?md#bU@TU$oNF)v+Fzy|8{(e_wK zWNXKvdZxp=E9GU%Qpc~sI@hC;pk_BzDwLaSm9KkZ7T<6dwLGx;qMo7(q^YjFyH0BQF5uRfoHc=8LM}S8izGg;e zka?!1>Z=_jYq+v96?%p$o<33+T?AIn43oa5{|Q%SmKLKCDz2K1yS$v%Dg~PcVH4J{ zkth1Fwr{n7zgMuVAJnBtg_>Y6=LI&$E3gF9=6>&LxG zmfvjo^Qi@He|0cyC3ccTGs;CDXl+H!Z0YwUzmtk}ju|=dYLqWHyb~_;l)EAn%yfts zZtDUqH~pV%+AY*3tQJznv7=tK}@CEd>@WDvBo=owB3qnyk6y%_)=D`<}M=UX!0nIlh(8?4(GYc>j#6jEYqB zQkDA-3li$5P8_a)EtDWPa8%>pY!=3Ve`prGQI`XF0PknODEm)RL| z-Q=X>N+a(|&9us!Pp{iA|Fe+6Hz0z8@To;$GO1rH$>0}E2u$t98yznWRW%*Ne58>n z6DnoyB7IylkKz|Moxxq@O}(99KZ(2@A%;dvEeWlH6t`$rkFpbxAK~YP;fwd4c_q$` z{;K92w7$u^6xl_g*7U-oz5UkSgel+6f@E9@YxxlPGi@t8+Ve}2C3a;O z?kt~-P9uvyHJ2CHp#@OlL<*~=?K$9AOT}HPuWse&m$J!Za|>oKRZlJm1t0ooYdXWt z=w~fdYIclbC;4@4-n7R!CvE4z@Ko>xE_t5*6H}I>d)qVb;!E?Ah9-_ig92e|UB&E? zB^LeNZa3<|DL^>WX020s*X85+DfiiJ;N_%gZ_0S^09ltd$yu5}&0j9Vf1R9vFL*E| zbtD~u(9S2d`==+I;r}JuhtO7Gg6^B0$;Vz(n#b*@r>gtAjbBfThj&7nU{ksAz#AEc z(9Ee}i{rBsBHQCfoX01XB&6NxA(=YUPyynvQ@f4i{%W{( z^jJUkr2FA^@?0|!xpZMF#>ubkeDhs}VmxJ~UojM66Eso25OPDoGA6cE&7Tsc2&X(% zXVvp+C=tU;35mk~p(g8(kW)&;?tbkgjl0}H=p@Zv@-oq|dx~eJmmk4-lBH@Y6C7Vw z``ClIu)uHr!6i}XsSt(ARv;OX_optdA<`Fs}){7%l9o!1Bx zHvOS{A`GO$|Ds&@`M>`-KH!Nz?N0lyz z$*mG~+*4*6ijMz4j{n^!?&Xp-4(SpW)!$!ohZ*fymuNffG}6evkUqw{8a?bJw4Ij^ zL_WWSW!giWfpE<*m1Pzx7@^iazf)(HL$QusYV1aZLQ-#nBGbxfyW^Uy~p8< z#2{=K-{Y{ee2oJ6wqOu?*rvI?4D7t^`@F@k>QbMPynt@a;uPeS<#$*+Nbr3N(&9Ha zVl=1Vax5m5+arzC-V(OdTX0T7$YMK?EH00|44oePJz+@#(MFIUEoBJVG>*^Fx&KM; zLnD==9B6&qGkyq)#^CkGDMtMwkdH4{bEh~An%Ym0Tyh;E{lHnfS}aB3CWaw~hIpnR z=VKJfL=jRS6C;9TN-=W@czBe*|6+a7_aI97+woV}9mbYlJp75bPdlAW-6o(F(G{vD3F6DE}wEEHI6ZT)v z2nw<*F>JeV6CHYX8OTtO0h;=w#eb~m8}aq;a_XD1$tiU13@S9_Jzky^iAb+oo$w?B zPL5kC9`sC&ntr7C&qa2qnoj7=Tt)A_?*RG@zGnbqXyfnj`}x^11TFo@28x3i+iWfL z%rDUFC_TG)^ziiNQ+5@~*{VM#^8Rc+V#neHFKP_LN zGM?CB$zfSCCwYFY}c^ib-0K&Nx|Sg;iExDVA@UK*hE@9agjf*?7m0YcrH}AOKbYv?(yF69^CQn1dC0v`2S|^BMm*k^!Y8=Y=*a}$&&BM zq1UF(p?96(9RNm1Z~Azl@sBjp08y-uO(ZXYsQSGBxSJfBJ7!)2Dwy7$ZS~~ys8|Ta zGd;=+w)Jv3B8(qWM#&sb!du)ls5x%T($IL-phKO?^r6H{2yY&;33K=}m@+lXo>>kW zPcbq^zBVN&_U8EeWUkMQXKbn?jPrU zX<4WL+T3NS!@v2wd4jmzKl?LGEQb5PDIDXk$un2L%H9F0(E**;e{SmdhF;MoXmA1e{=%#;UY&WFGQFA<9VP~&o_&nNJ>YEV zXZSE%LNynz{TxT_tkTlf1Uss{G>kmK8UAL9)>Db85Z-pnLD$ju1`}F?1U_+CaIY;p zsOC2~UdGrE-{GRMBOjgeXVw#8pyJ25xjvy!^{2;Kf6(EZU7W)=*)I{9bz>yi70yi< zoNLUcCEnS^q!qd|5i=Y_bLD?yZ0vk1*t>nFP_QIaV>-^eLOV0eCx7n==0k1&m>JiG za%EnKBczm_OhWwu2Nq1-&qNj4jAJTf|)^x z4>vS7c663KagwFH8@3Mbc<*|o{Wh}guY%iKkH>Y#txQ8Eo9)KIXf;qY?%7*p^IeFEO)iy}r^<7=%9C0extEr12eZUq;u}FbXZlkCoQd zU=lQm(fQ1yB)8W@?~Lr#r0#Up=V3gr^-0fg%_^&!^I(tWee-9EfcLX20`KFuqqf5W zT*WDU=HEOo))C+F)o6XtU(e9xd9R}XfDL7~wSQBQEHM-*nfauV`6eOCQ@hTRRib;9g~!(9VRDynOBtb02GpZ90W>8+|ka zSq}uKnuj{LFJ&!wL*X7D_INkjXU#-+c|T>-g*YNUhO#dlc*5n5dFunoj}`CfG*g!9 zTC}g`KZaqNE7SP+z`RYgRlidfs+z6!b!`nn^$e4-;9{vx!2CP7{5=0^e{7jLElYs}L{C~Fp*D|S^{^bFlDbfLG7_5ZO9`qS>Kng!ENC&8K6>hgeG z4(+5tlbW*j7d{s+7|0gnvwEG!P!1P}slSP=jrx8ClZgc9;;$`QYHkHySMC4GL*E+ypJgWEE1xi8}ovwRF^hKc5wm=PHn2gDsRuubs$VImuw?5256U( zsE)YTxqtW}ZwUk71yw2$fbA)SP0gKKhZdB?6y zNSzc`&aO2rc(D+TdqP1HQWrF@_3fpzwyUjcHoaFrbVaxJ=1 zcYHt@awLk$KmA5)&LwLR_qCU+5xq}q!0e1*aW8BI&n;q&ej?YhHBqqNwbL_c$yN7; zc4JK)(GJA})^vhoEWCOCN*wqe`7X;;cdUfnU{!^61fg1n#~8@3b?eanT*Ib9`Y~)0 z*4?>pjQKL~aILI)&HGUjnO#v!oc&$rJp0=d=4TKwG9O&cQLtv1mH?W$JnRvbicK^h zUn$=%Z09+iXepTA?PQo@GPn|wps>U9xf++?JLj+xY-=L|WC8=bFC0cBNrMQ4z8nff zlM_)AMRW}NFBiyEqEdWpWP%2LNn~2FL9LC7CsSCnY3!tsF}PhU9Yz+w{x<53Oxt8L zDJ56gTHXaa&upc9S4mDE!Z`GpbXb)!XTukcpO#uNI10o}LvCoq?rx)`Og#Y5iy*OLf-YGBfOP}RKz+)jMm zA3$Yh^T$@TU(^krGOju!CAbVjb9nqC?G?;IhhF~8)M<NQ-7XmNV}La9ZA9uc@IAF@wV~ev#+Hyq@WD0;g?}48(2W%kXkV{qcM_O* z2Ay_hu0AKwQdrvu^)4@QeR5df;*sIwzn^uEgV!&5KHUe_3f9=y6P}XXm6!fl3Cf*6 zhQ;)FkSIZe4u#+|`zZWFUCbBM31#hZ1 zZCcG&;(R8HL7sK3rB}ku|GKw|U<*=(53W|A-+_GTxR;Y2Dwpe)BTGSQM@fg>FNyQ@ zu0rUiT|YTED6ie|>me*F!B?`VvF96xdmrAEJDdbsoO)-ij}12k9~|UTsIFDjq~CSu zS_plW9SE*bF4hZCJr=JI7|Menl=u>hl=^?rAUj6$q3;FWydM!;1^e^bbjdneb zTP#T|?U$^`C33r1)2*A*9z{@?phrH8gTgpPso@`6uP~S_vO$H@yiWZ{cd$gyqKT$p{nNnyt#a5G6X{QV;?9 z$50=)uk`g05C@p=bKs(&(~cf+i3Ki}a_NoB2|yPzRG27S@Owpa#_0q=dai%nN;>(0 zoSd1UMZNVVy2&rWruhoNZ4Jnmz!41)?gK&a6;Nq!T&g8T$_KXw-y80oa5zb$*6eni zxBgu*0SsiI@3uNFE7Y)I^F%<*t2%_Pc6$zqkLix8^+=xp5S|V>dc3FHP-HQWLYSi? zHAj!9nDGvk=~mH^W_uMe+_Z5vD6n91STGu}PqcWb4F5C;rvUq{XNR&RmZOOXtdcE; zoN)Sd$Lon87Y_M&OM1AYhoG9pbf*%5+&20NG@|z``FkET113Pw*b3J47Bvul203a9 z4dS!58-qzcUie|Rw*M8VpKGH7>RGLUW5_c=!re;M%X)Om4Ua6 zz;eC6!$YfvPoN&8P}ANExZ2*fN&?MWH!i1KwQg4xx+PTPAND%ZkLbH#Y;#PQ)6mHs zi4eAc7nMHjV`xH;bOJ&W%W0@_(f`<7*~J3uf`O2l6ure-I5uzg_$uBpHr>%CBGAg> zJ}5T#PN10-=$;71ho+B0(cdYoT|PLQ{vEG|9_~Txg|M`O?I-=*N(8#Y5gmBQ)ancDy%i_G*AMJ=bKo3=mLn0DEA->rOYj!> z)`}n%9RT1;atiS8eQ+l*pTR|2`mLiH-7~6EU8m^eX%n~PAHF|!z6Z8Jq@IvU-WyiE z75YR3JvMRy?$uj)Y&YG520IZNkd4YQPRRWTF~6Ry3RNSkRi*n2s*ybI9CQvpB8Ym+ zS6_6&6i6E;IgR3U!_M_Ir|3eY;6lV6k{^jM$3fP*(cZkc@FRu=Qvoe=Paa?G?#Z2; z<)FLlN%kgnN_0y&$kd|v$8`E)1v+t@ny1#|$_Zz~l9qk>!u3V(T)WxiR6pb}!{ZUo zAVos>SB&+?k4_idPWx!kx!h*Hw?e^S?Au60@1Ll+bN{p@GT_lr^#YQb83Zk3(BM2CE^_^@kd>bFy&=S@fC%wc{JqO%ChPygCNU9iuSGHY%XASO44~a7Mx9 z3f%{GoVLL<*+&5`u@XxxOUf<P-y%$&6@%^juuL2oT;cgx1PHm_wH?uw3SuDf=tY zvGuS)k&-g|KjY8uNP%$9+lMnKx|;m^UiULE;SOUc`XNO2X5QzxVmJzlt||Y!CeZ?7 z3=@32Pn7%19{P6N)C9j8wUi2{;=hNUg^mA?sC1GMBEfEI0h!J+?B9E0$jf@n0_?RBTSzUkTcfiH=8 zLka_rlMyr+$YEW%p%`slteR@FDtlr+jA7Dng~X7%UoT>FU2>LjYfdKuT4%C5^-S;N zCqDnHc!GFX*q{_3FRpcC8GTWmItlb|uSd+!+pu8WAbmmE$mGM<-prA=OESYYfIcZq zga|n6&ACMl48U{>5`psd)<%n}HQ@O)fb^GFu1H)WBf;1){)T2+gRdbWU3=j~EOsEv z9b%}ag|Y5^k|ub|6O67}Z^!uz8l-&peNP|y`BL(vJ2<&eyfdn8kJjn#{buC}G%{VD z?x_1lDK@uCzzYRPdh(sh+DeGhzXIL9C)D=mMD}@uuO4i@U(3|V(-{%g*iNAoxs$?V zh=A7COt~*P0pvn2b2SAR-|46DgDiEb_EA1un^ z#pVrYVVRW-26K)IatBNrXvnMIG35A#{;dUg1TwtsE);Uho8hC2h7|Gm6BiTt(eNo ztbFK>|k$yjd3$}V#n(kIy7P)ra6M2iMH%pP{FY#AzR zVGsXV`juGbNX12tkn^-e;(5lgJY5$)(5v06ILp2CRgwx@1Ud2EdkB+3mF_b+5R}|= zsxTPBO6>OeT&#Tcmn?8i0B!v5XIqoM?>+ zQRb10r7;YbytY+|-suIwU?hNU(Sc{CiFuslKYl2W*`nAi`DDsxESR7FIN|vrHQ-MV zM4az`*O+2N#X@SHWj}tQZ=G$#Lq@sK#Vsyi(=YU-h~L$XR|S#bvNRw3{;14v7WEi z6{*^V;$tZQHT)^#I2cZalqUr)UmP>fE)DCgRLKWlFRRG4xMQrKUy|I)KxG8BDmLm6k>URigWgi`3-vW4Z)!mzELhUzhnXlnlo><|+_= z-s9f?q&s(sB4WKy2hTR#lSg@f*2h<@3_lov3qjUfye}OG;cV~^sPCIX6__sC6SAm) z)#wFm$1p2kfg5~LuWMmn($X?>qaG6$MkGNvA zKyGa$zdlct5&E-f zg)cWhZDGA9S1ab%TP*5tmEm%KUdSXPI&hGa8{ND7BJWi8v1+#drsBqKxidq*<_SC{ z))L+f$EjC7%5LFy1*jG4nnV#ORwm7k1VjG`FYLPZcc_BgG}wA?BLzw zBGoj>HaZ`7N+?4@&6>7Q&{sR`ngjbze~Sy1M09x>a}TcWgcZFlUNB2hum@`5KMrIc zF1Yc~(1Ho+%JLc?>FhKX1l=}Hs4>{8H}{|W3Fn0$uo-J9@uG;hJzjzI;<>!<~*NsUAPBRezLe9!;-A->|0t;;5*0tLvRrrTKI2+jS z+Y32WctIcB5j;S@(usD$yH0sk1Oa^yhSu84Uv!)q&+?;}fw6}o5Z4H9$*KsOzyGjA zIs!&~1KV+7^LS3yi=pf#PBL%o*q|&Tk;WV1VF*bKq%(_ddcWhbnu{C}GD??+&6x5a zPI8G-|FAq_g?Ko<-+Q;T%8-foC;Tlq+q~`6d=MU)V~ok^IVBcX;7==3gy!RM+PdeD zbHI*C0&HFR1ZB{CNRVtJ05ti;LQop{YTtYw2v(-(`a)BmQgr=Nkn~V;k_sHqU&D32 z_C~Tqex9Obhe_0m3tHQ2_Fw@hU?Sytppiko>&nTUdf1oYw}Z~bujpIvN?NcZzDiSY zlnif|zYPyO*j%}r+4=@O6qBzFe61R>p7#}z2ST>rMgf9Z?xjh$TD?e|?$6Y)V8V>% zj}rldj^gORW`%sEiKQ^IPaHgK^Q1B!z6B;LJ`Qj^Vu#M36bzK|uAX~{?pd(i5dd3q z%OR;fwd|c}Kr>g1mJ0m)AbbE~9<(p912?&qg7QfVBq%F0YX77GmRoRF$;Yhe@{VnUlWk?*wD#%U|TZ z4Wbq}8vinmWWro*bvY9(*r9K@&|%TvY}?35$RgMKiR<7BIIgxT9LOy zoeVd))_&gdK13gkH3n7&sdbV61w@r^n40RDO3BOIdA{7c5>K480Z(c-7nKj+N%*}f zOk6mu8g?#Mh>-lsV5GV6Oz+LG=0#Z*$%weiwoza~CybJMk)SF+s8=uNt4zkWXpkGY z%D(uXM?{1~#1ZKyqPt;bwIggdnW{|vQ^R5`WEj^PzaW98DgtpnmwW+vye)0P3d>tO zzcxE>LxI7l^r!r=%3|LeVb`p*T5u`Cx%=UsVBOFkM9zCL;yxM={%;F>AihAj1jN_( zb1V?w=Lm#*K~6(S3v_J@q7bgwFx#o?@@DsksulVLCBgFD zV!pQA);uS087VpWH*`mTJ_uj*Ft9md8|6C`%C8BY@{}hS8A^1&>F#|9XgSS>fVi=J zwlDA?!-wUT5r~s?-INOlxdcQAIq(PfF1ED478)rfzh+eY$iImO=f?6moFtRtDTq4s z{`WzN4h77Rd|sK@hAU*M5Zr4$kxpTEX}R-yp-+P&EHC7kQlnv0U^4C zg^mgpxzyD@=-A&=E)?FuBlsi|xcXcOPy>clkC(x*4<5u&HokSG4E%GJIZFLSw+Tu4 zWHLSM$}k$evp$_!N?u3{U+R0YR4pB_+g{5bZkQO2k2@_?D$Am*_QmRR*dPQ3-X*6t z*(I_*5CXs0HeOADupvWOV1|{OF>_?;3m--hGVTOhPGw`K1e6ta3%{HCZ*N;rutA~l zu3Dw002T?i1xwyv`ps^c0}FG{e4qnKeE0^u@*c9#)sUbi8AR+9gah^Ky0QlTgW}xvm8T)=dRq%bpI15eqrF_IYTN zy84OAT9U)_+8#*bHthMmh=DKh*pp0lAgdh?C_@rQvxB0eAWYt@i|;c7;f>%SEqMQm zcTGv#ZR>;Ld(T}L?6@MOwePYnQ%Wv;%yb@mXoF4%AY=*5Ag@v&h8qjK)_c!(nfFGTs`k`{z{NtlMp+|@g zd!W1c?shd%UBdbs9wK=ckuaLG{83vUY)X%w!rS$3-G8OL5i8EzHR*{c+IyvmHJqm-mq-z+KN#EWSW9hJLH)zQG_|1^xjmvuzhz!ll{nNTrGAR4E>eqE7~eb!!$+=k-!br%Y6n$DGdGn z>YE>Ghr6RW=&(yT8AG|w^IP!^M~L_e8*{Wpd4B}6PzHY?K>Nec{Lmc`#{({<&{&{w6Y>BhHy|~+?%>P^e zQlkF-!!G*XIIxL}(1siZ7-G_0pb9dc%3u6lXs_dAcP6r~S2JMlPV}3!(=dn9M$UB{Z_G6vUu^ z6%)gtMjN@M@ZdYVIJ(fBUDCpUadBHGWL^=EqP?*&hOpL|5qcF-#zU|KbPw zQz1v!b`m6H>>gMh9T#zL4fb!#Km=&8r_`q%|An`+h4Qd&V)l7L-IOL=WYhXY;2cg< zsQkm@*;Hfn(pSXS$eMkxq&6DtRC)}~n@d3jkx zM9fhx4mY|^F`cwaKt>Sj#25`-+=T56=Zn-J!NICv_Dbhh~-yhC^P3OiMiT?+a?xo36nqhQe@!z`?|3c;Trodlf^ zD*$e&<+h*e@z>x6xnD*FDB?tvsCK^pWH55yv zu+yOEXY%ih_q1=-e{s{fLd@MmJaTYgX&DUQbc6dOVZYUJF-_=w&%}U3w9jXTFCCJn zf0Oqbi_~$Q9>&>d>)e>PNr5zWA=;?WJPU6aPg!1SPDV|Wt7@rUI0V0C=C6Y;FWQOV7B*@>*u6EKPPx?QoGEB{zH;v z8``7$UZyTKc#HFDlQ3~NPQo$0fSC;)K+l&|-WBw%3MSw@zQzLSTqz_zD7@b=xOHTn z5(gHP!8b1Z4#o$nv-%1jUv-TLq<{M%3_-iBPszOg}C+oD|y=KC>^i$8ml!A)~R)ftyQe@u?@UZL&zAwo| zi8dPYlHs!z$^@{34+6@9d)2B~>y#2-Dsd%Z^fr51FTKXka`lyZ(P0VQC-&hCaM z!S4dfZzD})8e(-11E94kkdVdzp8Q{ABOt7cxBF{TGZs@PA}^66^=P)K*xAIH3Tz=F z@#Mq5%4})Fn_6|dt*v$lHbzQ4IGkuvosxtcc&!WI82jZH1lBuLb~+J(Hw#mV!czZ3+o6NyFktTd-doNapj5Q2@RK`X3*JXQ?AuMncfuo1A1_F@hM!9scyn zjM{I0gQB~Iz3F|xl&x?9!kNME{MJ;|Bwbn8@BoGgUDvYVD!naKaIZ=87hzH9FEq&! zNPlSRxs7xLO>(4D;P4pVyLaDi=!syz0H>zkhs=O4Ce&~Ly{-IGwt8O#jo)qA!4+*H z&2V_&#=!7b$F7$*HP{!C3&~9ze`t`5VR$dNt^E3MdjKUm8S?I8^U7vHqUR_dB16^q zVheKFU9l+UNLQrlLWgp(>b$rlC5-L^!31I%Tt12f(Ifkq!M%yA-t0btDc3K6W>Cn{5?;8Kfz z@eQf1eAmYbgo{85(q{6Z`TR~n6j1xnn~IRw-0d7=RHr$_qJ{{;r2^dn5%N#Cg#d32 zuFo@)r;8_Foy6hmZIOaEq?*cc1-xj5s^llWf9Qxd>5k_n1`}!bs(;OUU~~$40lnDB zAI%EDL|Q&O!}q{XB%8#vAg4tcqEr{F3O!SN`R>q*1BO|@HN6!O^xtZoFuhjkE32o? zmP+eEELuFIoXO+iw{yA^b5!V8D+Z>uKF-oaJkEyC50Zfe35YyAC)*v+LS$A+3q6Jp zL)WddAWXHig*v-A2asy*2;Zi7l@l>19~|VihJr8DDbSoO8a?4hT74CKBfAc>0>trw z=QH1b?@}-I%)*SvPVg4C};{}b;b^>Jz=zkTUCn&UfvFg(P zKLP1L_lfJPWZIFu-OwBt zZQm^+$rzcK?=_y5(XGT==}Vnc5Jq2}=C4ERSnJ&fG*6*~R0wtevO&sK4nmuy-Js4takh+SYIna=&QQDgP_BAnxV8&O4l zI}{Us9KY50#A!oJ%g}s~VK<&6GevM>TN{??ewpa?DJ$HLw#BZyXgk^s&MIbP((o=x z#FxVFK*V}JL8*iGoBilG9$qmX!CR~SRF;M#hJt)Mnb8y9q=rTvjhc*=<)N|Hs97%w zZY)DFoEg58G?h-W^K?E)unvO=K~2rA5nEvdHa7J_@gmWOo_$Fo2GO$a!l}BBm#dyj z8AM#7oXay4F`}I)*Ijn3uR3ESXoghz(MhSW;Qf@UXbl&m2m@b(Z&$Qy1DE*NgH#M# zb$^upv*{go&`VNr?*pzd>F5rE{&=Ma<9!a{kB;ir`hF&G8FR=K9n(ZV*+XN{FF`XU zuP6FR9NG7eFHzbb1NOr`~4O@o<5b z4Qe6yk(BJ8CDXxFi=>eg)B#JJ%a;#KWcLKa!VO!it4HTS z;0_K}C$q$_DFt>cl7{BQ?#+Z&n*{Eyk<}fa>%-$e{Cq4gjd!ih^44@{e{8p*eygF~ zwW8(hY+Zin6J;Ivu|zrasO0;;IX!n^H^J4mHqYjgHg@MPt6J+d{3GM*JAdk(ffLHB zl$%R8^Bc6XrRCP46mtVF>YoGA*dcT6`18z`+0 zia+{MpmS1zCp~aPxv9AJb)4;oV~(u!#exW^OeRVQFB6)#2lt3S`3Slfr*aTf+Y=L& zaZ#Ud+C=|P5&yK>tT7s^*^(&UFbHA*kqMn<|DG1RYYm|DgijMa@^Yf9X2xsO|v zeZaZLZv3+nri<(3K;poc}xxJw4Pa<)tP%;lXFy zDgFW0rS4HtqDZhrT3-Mvf$Qd9P9@{z0QhSVfr4c*o((Pa@<^->R=rnjlu`ge<8M}i z;#id?tGDL7e?}xvib0-BE}|OVbkB(2|Pp zeq(Ww())v4%WE-qOplaoJ%wj}Gp(^3*V{S#;I?&uF~lOIpCJ@0ZXDZBO$)O6AeTQ~ z;L=|$M8Nv7fLsYq9o8R!o-l1o$)a|%)H%ZF7mee&lyD+{FlI$XU1qT4H^iu-^Uq57 z)mA7K`LGog);Gbr2(qtBHv`w|zQ&#@1>JN9;oA_=NO5ZPUrsL1-2;QMWi?mV_!jfq z_=~&M@^ZZIn9(Ng*J%p)1R++jxGU`m)w}Xx`|Zc^=wabMXshh8Ne0lw>_PgDT9pamtP*2>PdS#q{@n_Gtyipcd!&$Mj!O zTO?@s2!I9BZLFtthW6bQmxf;3S|7doJsdVfxIP%xuWenRAtM+|7)dDR3Z8oZtMsD# z4=P{Mru8?%@+omu0$_lUohkBcVyKm| zEQX44kKF8WN$u)f9w5yxdWw^efSOpl{Os^xHK*gdNB4aE`}9A89#;5&HA|}^{-t@p zIr*viOOxL*B0fu*FFZ-}v-W5Io{XGN*Hag}aqPPCLZt7>TFV)wSu>dVKlLxgF9Hmf z?lPTepO{lE74$WU75jW5Dkw2(2NUlF$l}a8jA%S4-qgi}k+9w~S~0~f#jTjRhegc2 zD34_PhdIe;X*KFc7Mpjiz_w_Z(nETbwu&3h8sBMQX&EsPFp2)`X)wsHZ}#t-=vQxD&Ly)Z20nrl#MW3xN@b_c(~QMM?GGUR}dW) z5-Mp1ChcQTvSuoyVZ3H4@)(^ap-oh7VI9{f?M)-*no(1zR!4bzO2TSppx71BpYi3j z1{Iln${$61bvT20_74`ZMD>4-XuX*LO}_>Xny&OF8bkIVo`SM^0hn<(A}QtjCsYj$ zafJp6+3(%`3h~YsZ}l+RS#pEW__DQdNBv0sW5RA9sL)5dJxM&$u3ycNjYeg)L4KKI z+OP$5Mlg|aRvIiPdZPNSz>q zX-C}ZZxlLlJ}ESzV@9+66H(B_ThJ4fU|lvq>rQ*aEJ2D^M2XV!C7N~Dm@zIb_f>;c z|25vE8m~2RY>sV}CScGsi^1?qH!hRbNG#55mW1_0WwsD=k}p6j?UvgZ1uZT6o>@bZ z0;P;G7&DMfV(xL(kf_5Z%)wJ7+;$dc)~NIp?f(A&%s?~0ms=YI`!6{rlI$SZSwTq& zP(_dv0>2PAvH;j5-Cf|Q0P%@H8F0c>5%?qYYvSH+s1G)V{u9cD8 zDnTX)22PUR<@N!A`}nbcZcddz>un1n^SW=0@il42!!iUPG2grGpa zV&w(`xxq`WT#!Ux$$*!<3%Q{}5-R03F+qRIB?*FEmW(-pKME{cvfbo{2T2l?Gy%yh zm#fO;GOT~ZKezs8%)+O3zFG{rmXy^*{NKo$7x!HVnS`U-du#8UH$!^W_T5 zrj(-7l8i*8X00il=nQrm|EI_NuYZ5Pf1URKKco!sU)uk-G~UvA{||1wzO53n7uSuE)4c=Y3=DRAluI?iaN}97wl+X>Db9!)3k}pdbR-OGkDruQ1gwd z$6Js?`0f>|bF zzdyhK2M@mKrlFndf8TsdRL`S-cymt|~&X&4ciop%8n@~;FviZt)a9NN=6*7OtBM< zUvC5{N6OFsaT^JzEi^mA^XIwnyjof!N#=)CC>Hs@os=mEOikyqWVZ0HV*!qQ~Dx~PWbQ%*}V z(RRIVu1m$aOrI2w!D~QxoY^)WHUmsGC!_5=!gOR_+To%?eEGRcrD)u3Cx;GZ8wwqo zL$oNJ2S=;&R}mqdaGFEOtYP`~i z@{ud3LJn7Pbxi$MSzOsm*`c`ymRqNhI9}?pI&LLaZTR9tnuTC3L|rB_W= zPNrx|#*&Eh?n=>nTpg83eT(56hmUx?*FCbhZ^si(PF+o2Ecp}H z&ve|%nU1NM$&8aorhV&_Em!Aw^`dA{xL-5K% zx}STcARVs=q+`lIQpdiMkB*r?A84_dOGGDI&M`YlwVuVh%451SX&2^;opp)uoZuJi_m1v7N zIVA?2aKarWsVt^VbCU5?bEfy#FhMHe5+>UWk<`}?okTfwpbfG#*>aD+j4%% zh5GnUQk>7>bNjmd)57aKo9LNSY>&_Tw5+$3({pkP={eaFdQK}5DB-Egf68viYW!~1 zJNm@PZ71ZIifWEmOD#w1|H~R#EMfM66A3l9{uz^jPdXWpufAONmtIXd{@Ojfi282r zICJhxy*N4)O^vw!n_2Kd?f9yUIobMRe_9Q5Yq&YS>TSGC*@|tBTdR!*Ma;vpE9Ee8 zLcSSF?KNuDXUJS%yQdjSEj8EbbL*$M6APvP)I4aCe}nPq+A>)a`Hx5CmYs5Z1*dqb zM!R>*OXUhvBk;ZIWKK?9GM**t+PniDxAK_d)g1HblAeL$9eHMxHqFoNE!yIeKN=&} zHkHBLHK((;BgtZgD}b5VQV*%9BbC0KM0+Ieag0}<$`Cu%*$}6%y{@y>y4)fCRituj zaEaF9nl-sbXx6|KUBQ^j{1+Lb>=*izM^n#u>3o2(fSDVbpJKU}J)V;hV#(&Tn7yv8 z=;^Mxha_pGp}9tw8U|-8hmIm@m+hByB-s*4MqC-;9{0&esyz`;MQNY1flFsX2YqF> zPwtwge4N_sG&VFeI$n)0C*p8jFP@KK5wD7uU+<5ma-1G61F?uOihp(^`g-<`cfXX* zeZxCBntYa+_mz8cxk~NzO%XZ|JL&2F)84iJ@Bfqd&p#sYWB&bl|L-kBZoc`Z&i>z9 z1~>f6|NGDQ_rD?jqvtKnEMdU3M0vazPn9pmQ}2uM4CENk2#)cL^2!5_@rQ{fdQHsm zH8IOq-E@IlzL18_^&c}U{gq8KYrMjynJsS7zsyd+qO8Z9GX*(1l{uXA;c@x!0$`B6 z=$wk@RRu)wY7cT;C|j-;s{sS8p_H5DmglL1$Xid*)Ae=){EA6XZY0*}3g8*(~2N$ojHhASf ztr|016YY#R= zDRgf;fOaYpi@DI^JU6W2LWh~S_DGMo_Lv;v+7pDh_H=2tm5Z)>ZfX}|8)Rp-i-pZM z5d#KM73^S)_PrN=anXG|mf$jJ z<-y#sc)KCE3D9l}&5pQmIF}ECyJU@m`#hornG7v0M6BRpPhtd5(yJk2v*20j>|*Ya zugH+|3cTj>syZ!PUia+62z6toC&YNI{o_CkmUtUwL+{>HgE{+KVq0UymduIz8>HlAL#5YOd#9F^rrK zo}kIk>onK=vg};*`wCm+H+bX7A5IL&F&5PMqrH;8`IBYu$)8@wvZ{{xmER@Iu z>iork`6iZxI)61wm_!@u{EgmZ^0)aWlfO$QlmCo2nM3mG(VWH2KPiiwf6?$`{#E)N z^H07uzbh#4s8LYnA5KB7>7k$>V4;M$P!~w`^@36I={Ue*U*HRM0d0pgDKEN!L_szP zhPoi>aS^Rt!E$dTYfLTtf_0s_qF|%%SS;AWhW9{U$gkun%?7Cc|+>J91=V(QZCP>8FG8-4Wk+C%o^@d23npDqx8}Y>2w(vY}XUnb$~h zbt&L~gS;+_hk0!ld&TFA#{mX8%!s;pB4ANA*oeA#n%V5d?IaxCz$5D7IdoE+ zSC)CjvWr)l64}LT0qqXf+ltqFmEGydSW@3s<5pCMCcG zEm0Srmz62LDwVrStejbwl*p`0dipDKm-P47<1QHn807FK>XLE(+T0~mI@RVb2^&I{ zEbu5@vN&f&OO^u`c%doOC2Kv2QnJ-mR7~Uub;(Yzt%JFr9L{aMqNgn;01?Kmx<0__C^lv%B~6R%1aFG%4^;2!l7f- z<@H$tl@F2~Qa;>IiSjYDU~$ytQ_T5PKF!Roe1_L<3t*5#&8W*`9y^uK^Y5qf#W@^Y zzLMx=1Y-FH|6VKi_If$(brY0EUA`Z%P-1|n%a7$We*v&48(TtME=FGkoov~VHR_5w zv#Tlwc?L?w5Wo_D5F2&H2*C1Ap={I@cbLId%mK_dVQthE3%wJy;z5_wDpu3NNuV2b z#TvFyINXi8Vw(()Od2=zjk;n#pq-4SW}~h+YRFu1%52LD(PS$w0Op&(IO>Ww%zP>> z?}f^O9A>Dj5N4?CV-~G)AlrKBR@9Y^-r-m|LfD{kOebMfInnDToU@dbvjB^I0d~}t z3k|DOt|tEX9O$SkNzfBfP*-mATHBrNa-W~`Dh~i!@dWD1<2k?f$WfWA&R1TRIacMF zIabjYH?C*YRkeVH60}EM)z7zQtA=McL)ADLQq`1BRH&NXiP5UkW+GMhv!*DlQnk|8 z;zl!1)%PdXT(Vt zGUC$-B664d+&$B!A7D{7c#OKsaKHi&GJv|vB*WcZ$aInT1nMrWfI*Haq3*KKv91s9<1ve~RxmtCGN(PgjC!_nm#Z|ih9A}^c(%yV%EsJqbV=D`q9 zcezBGg$qVNU2TzeEzxMy)m3H+)%}Um{>U`y>OrI+xbbP!)#J^|RZsIeuAV_6-h(Zm zt|pbvfEQ3#FEm@S+HCUbRcwrYd)$p7BUnebBRRtB-h} zi!E1uI)}rn&kKiFU&~$C8rv@nYw9}jXib0rylX~!6t9^GXvY#H!D{X>-PgY63YJ1&?4bYBaYpN@KDuQ}oE zfSNO&QCV|=PFI(=Yu;eX*@Ix9uF?Jp)mEDpYx@%8F(?Cd?EqPZ+F_jtQajqrwsvan zrmdZxW%Sx49}j8NwTl3Q3{yZ|yUg%&?W#_nuJOoPyA}Q)_TE0cs;k-;o?|E3`2<3M zd=ZjG5+DQ`k`O|G03mHD)*eK}mWx=slk7C1Np`yT4wQ-epE2f~W39EJ>OJqh=Xu}fp8ivktTosC7<10? z@f+g@DFo{Pm21~LcRyaf2I2uK_eHW?mh|CH&OIR@o#7s!a?i5*k$c6r$MTW|Knzq~ zZo*E^D>U88tG42kS5N1gHpBB~2*_~ZA)xYZ5s=gsS_UewMVn_DDgr8RiGbu-Uuy@b zyp;(Pm$w%G7U{+YHVYWwgOGsA!_D4?y*Oy+F7FV|T~}8GzjT!QcFOe~QoCo(H051M z_+q{=OO>CSu+{U6%sctDS8w(F2CszVqw*4qfXZ)Up~zq2??Qgu3Ss`*#6CP|ZI=8k zc3k<-xiXReyqWy`1NJ7(f62S^^N-jEyzZI&vuu**ziVeEUy5R z9G@Ya@q!BbVnH1(qXEKzD!{v3TgCTx}6&w{Xzz41YRdANv4;Eqrst|RV z4iuWgeDje)$K(7h9BoHZSmzr_VIz;EaISCf6fX35;R}}t2x?#ssKR^fC+^qgN;@M!^Q7VrY9a0h#*3lErSE} z4ccKY$Olx>I`S=9s1K;3XA+!LMY|K6R7EeFu@{}u>P|OqkfL+cGy|GI6E@6q|@tT)Z(8`-< z>Uq1A+~B=dO6I!SO3Cd4(i!jts$_|P0Y2ClsFIa-tx6uZGF0-6z1vE*8H=N2C#g|A zccSi9vRgo!g@%DDdC@9uB`3_{m9P(@X0MmU^y+f%1YKnlUoKsj*%X%>tI%2~y0 z>^#iRKPez766*xzJd5&SL296!?E;b`yWk+0d%;mC7-n}6g*v+$)sYwDD`A;;38zKJU> zcJGeTYWrd%zu0WWp!8-dwWag3W5dZ0@880E9{h<1Ni$R4QD<3_Ga&+~GXzUy7sQe|E)8)zOa8)~)j zvO>E@%SwI6c3GwN-Vx9bR9U0#YuQ{gQDwK%8XD*ysItYZE0p!xFWzg6^s-d~GChz$ zP-XX9nJL@M7C_k+?VHCh?y#NRW0#?9Kaa4?r|^~?HDX_O+JC~9y&(WvL6u1X$+gwh zwV=ucj?+L3L6v6+0Q`Ru%0eWDo2}fjt5rVUbHtR_xjIN2sPg6nUwruj(~I&Y9@VeB z*LyIPuQan)zJZm8@{M*4$~PxmiRD{(#N~UvBQAf@Yl4>_7m(%EmO+)DRJHdjqc|KtYQEQnI%<(OL@{bf!nBOK*PPs=(5@kyZ`3CL zGL72o`nE?=)z96Q0@M_iB#I8;@^?hm;o(BIjG(&kog5b!`ymfUeEqI@-@_mGfl4{( z;~Bm6t5co=u76A{Fu)}znGI7{d?XSV4;Su%Uv0k8!?!r7eAN&SyS|4E@63lp6L67k z=7-dkh>7zAxJ)54dK(hLUoZOXaG;X=M0^HRx}GRGfQ!R1S-h?T$5hLPGW_ASU+xF4 z7G@a|ElK_Me}1&eLn6Cl7kmn+AikgSJ?W`k-^9nxgGzZ<5aCR~Q})%AlVq|{UGb5K zass-ZzAd{+Y)T%+DdwdO1_(_; zBz-_M3o_>qcXfK03Js;C<&a#qsQgag^2(N`*;H{Q5*6T5dc^Pt#L?g-&i?g1>C=I$ z)e=_@aP3JsVCl?X09Q0577gHPTk_q?(M0sAYpz>rY)g833_koga8*}gMFK95%51Z` z^655l|_|g*<=01Rpk~>xp0~;Hk4~%B&Kti-!Wgyz>oQ zAX6Mm=1fIsd9m2yDHZ+-NI`%F!ZPkv=*BN!G2`F=^@55Tq6nR!{4lqQBP;QGYG z8w6ZmlUc}hsXro033!XT8Q#)6GTv+eW(JVo47B%pSfan*6F3cAnatGrn2THGmk&ID zKX3s-V%P$%7ffVRz!hfYuePOr35YI(*bKptO;~DNQ}Uac(hUXdtFPVhFTiEms7^>y zAZVCF=EFikl#D>68brkeT=tZinRTf+Ibr#;@8gfV34lcuYrwUzi8>9qT(z9OHSc4< zrPkzK-8tX#Fx7ufZuk`#iV32`0WKUUpM2w=zUg6`f3$cdzG(^ZE%UpsTF0FGh7iBt zdwdK--#tFoyA`hOtb1QJ|e`Y?` z1wM(l5)ADKargn(pC>v%5ApmX=@-Mm708)4-*9Lj8M*bNV2C}45Gln=IKc!DmiE9c z6{<^N%1aG3CxEMU6VVuObzo-J)dgXh^jKF`C2}6%Vt>S335FzuSSZ2JdJtU@a7jaA zO-i!tB`$A=saZ+HnP8Ypm^D}z@g?q`fT#MSDI!QzLcnDUi6s;?&x>5NMNIV2dG{P1 z_#Zx&{w1)(~4L7&;fCfCH`rO(v4+?EAg!cZ>FS+x?lHX$)l4f{vQ{h2_7 znJFyqgUdC*)Bs#U-xhM`QrK>#UoNrBC2hGTEtfyFg+onMMpG$?*y`sk%R|M<6i_E} zI^ep|MD2tleGOE~S(hbWGXoIiBXEg*qL2%C>xk>R%S5sTTtHMl@xZ@rbs5!(R2B@| zkDT|y(^EXG{F7&lLOC`y&zXK(7c(c8E8wb_#A5|q(~{UmfvGo`gIN5Jg_VTPxj=I?1uqMO=RhK zh(i&$pgNJ;0T*5-S~cJTw#14CTtAlB!GJ4{64Ms`c!2=BRNN|{%URtDiv_Xt0avCb zvQS_K2;!Oqu7FRRd%(4!iSiA&*slEOUvJzDOb$f!u)y3Za@vcRKLK1HpO^)Kt8Wu+ zAaKcSq8$dq3`KmJz>ERJdkRc;;intF^zvamXo=H_C|-eSNQlP_C*oyLDaU-w?$@Tz z9(C@|cu$(j+C(qsVdOvjl@&JwF?-3Ae_2OF)|&c(7-NB1ONb#9m=nRWUYqj%L=6XA zu2#Oc{zWtoQucsK*?%?9_k~|xngxbvOE%v9$WMWZfaLX!4Ww#n+5w^!1THvDym%g7 z_{L#h+!gQ^2G;du<*Bu8_*lw|pi&MC;$sFwgXJgJ-~Gfm2bklB7;S;+Pl$XLm|2AQ zM}bKWh=>rloV0u|V=WyCx~MC0N`s;LB64M5;wfTLP4N=2FkcGuiZHu{p%uSy-yFPP z4buYgjRF%35G5pVk#gcw40ub78&>$_Avb-&!@2+02d;b=m^z6_9)U}PzyC-ccG=WZ zCh|bwBFOItR{j=-pR|49^NUeuHe5kOr3_39L=3dRJQ?!Q4=*F-QCH5D8(KSY z-BX@NBSH`}AKGwfpn?O1oK$_RJmBT)(qvIY2o21ZM2wXIZ_##Llw7{>`^o=os{P$J zB^xa?LuMhr^sUd&^sw!(89D%^*04$u-7_#n5mCYdb2rHMYj%+hrg;tIuFSQ#Jx$?y zqL2q-0VGazFa&nQ@(5g&ny5*EOY0L~CvfFtx`QpiG-5<<3{3MP z?{m(*3ry5T)ZD=QRK#~0@Gzm7Qu;*83(T!SB)h<@7ep5eOrap}c<)>>PUIoVHX*`$ zAj(1_IS0dtM=X>0*fCHkuL>gS2clXehIX(Vcf=bD%!5D_!vPPsh$#n61i`?J9z_2M zT3V1gcE z<^-uckdBZ8l$}F__+VHFiB1`qPlYH|feY3XeJXGPdLk_aF1${( z=)kmI#2gLGVMBzczy;jpqy61@a2h%{V*LiDVj_a$fR|85lavqxFEBHN+`s?dJ`PNA zN7V1YTxdjW4NSd5eAB>0HN@i!%q>Aos=yWAiDey_uZy^}f!TnFGa8rxhS;8gX;);< zTUlt}8_pGCVg@Ekk+(hiHW~+pZH`#rf!WB2z8jc`h^S7nSEoUxydj7~9hmrvsK0>; zjfh?xn0SeZ#)0XVh(;TjUx)adfq7GiSr?ekfQWGenoiVm3dns6I`OPAgn+~|49rGB zeDg_6TdA2QElnBmmIJdh5x+bzu^4fR0}~m^_Pf{6m8zL)h;AB~&V`tbfw?b;*cP~; zzO4V(GpGs^9jF}gm#>!qlM)iwE8ZTsZGwW>k%750h))(9Is+=@oFM8~d^n3z&g7lD zK7u>i5GKm~V+C0UnzM$uZGmgu6Z1GQ%@7gm0vGKk3U*-9C}JK5rVt`7Yhd0MA~FW1 zhai4mV6FkVPB!4tk@6C%okHGx`P@4JOG;|VIOX%RoACxRgnUG*56o~zEc3wJT0~F{ zOp8LC)4NF~(Fo${6PG@2C6Jt-e~E%_ZV45CCF4ouWTvQs=t=w{ci{dWomhA12DCmJT)f|7u2xG$^TiBN1k*|l|{7T zz_dF=Fb+(V3ds~0W83H|`4+kc(Ar56=UIlsK z>ramdW`>mM1AqB4FfX5+eY!dwn150x9o_j5FtwxXoOx&@Fgc-|@*eicGQ!F4U-|vp zz-(#qt{caW0cLHLZ%=p;l|{oBDu4fje@-SrV*YCYl=2WE&NZg60x79ytxCb}TTW?YpFycLCf;A`v1ajt1l zWgz%z)RPT0qr5!h*sp*o3FYj}pQ74gr~&0KUwGg>UarV)={5 zf1Cl#)hWkL{N*#i)MrG|56rA3Km69>eZU;H@~0iKOTdhR#OMyp1w?G!zziY8%ni)= zAyLVKrUA40Uq*UpCTpr8(A!%st@cHPXC2L^=*kmhyhxAILwV z8FOXQ+NaU_HbjQ<`Q6{&2!_a5K0EoyNHA={a?pbNa9Iq|s?2_3V>2*=sw~+4@Bb5+ zjZs$Zn%M`$fGx9!-S81G)X(z3CrimOpn3G<_x||$6TtLy@=U>R+kiR9hyfm$XNS1k zf!S?{RUAik6jaIyAtyXliKnq)eU&EC%!nt?&;K6% zsQJH$JRg`oNhUo|@fH}aWqGDEAFmTb#wmaQjn7h0N%M)yvgbZS7oa9_l#lH{M=GFZ zRg}-Y_TNqca}dhA#f>ikv!KcGzdiE}U|KRcfB&@KfgzoifBx7w9IGLfB|dpzJ{)3I z#~+VV{0Jc&w%U`{7F{hjr=fQH9OzLlJ~8E-|{c# zCf^Rsk1fBGJq_i_Fzd>m$FD2|W(1Yb{o(i|VA?VH%^9zeQ$q7f$u-rjw9uN4iMa9c zM+qtz5OUO)|Fj1T$GH4q`|H;Mb6(4PTE2rWIZgTl+21x$WDHt5&DR8X?+Pg}Zy*!HDdKYmS;mmA!2aT_u>`G=Qp#Q_CuIbdo>`HO+yL*2v>0m(a&T!rUe|_eTYjTw zF{!kgv|8?b<W`LFX~<*vSuQUFiWHp>26 zevR^OxX$FliMw#;8!mLYId;umuYsZDm!GeCa~LqWr#$v@=Q?0QG&%R5 zoD%^3YoLFfkhh$F=`2A1%g}#J$mab&AV0C@G?s(%6rGcryi^V^uU#AP5_@W%N%@JD z2Ob7k3H@t?TvXVN_l4n&m)~D@6c2Jk87(XKX#kO?A(f-Q`c;&FL)t0d`q)6U4h`Xz zYKrYVicV2i9A2fvevSdLnS_5xG|3x7SlP*07%q}kTrZk`) zW>~)EL!Z1K?|H*cEMJ-T7ZNi~YbihU%#DS>wEXg+qJ|Z~RP*wiH|0(PrjD0Cd21Hw zOPc#y&gj3DHkoEZmU-V@LKm>+VwI&Qo@@fr7}Al~0X9{&Bp4+lIv z`-a0&9w?teXb4TDE;CDCe;9|?3ksGBdHpY_GP zZGR$rL(}TX?Yn+Sf7P^fM6nXkq$&&Hb|HVcujfYq{p+CrK_Sn+nRywXy#gvIgzP(Z z^cH|QFjvSekN+73*%1556Qh16fXTV#){T#&J!H7CF@`;bVj#s(i7?eMIXbE{HHHn-Y_=}l8 z189QTLVoG?^C+Z-6jMgtTtfDNLU|Ihabxn0IFIwG!k7Hf=f6*=8O{7HU;5NiJWmbn zrTpsC!*J3KU7xJ@-sebT)(ouj%(ka!Cutf^`QO?>y_{|;InhT2?S`g1nU zkD=X_$=}$E6Jn@jWx?4+6mU8RD&>NZ!IT^d$X~>xK*(9gUjHY6(P&;|e6r{pC@s}^ z6rgmj#oZ}nO5GPq175C4O<5?PIzMhSFyo|*p3D6bcB+sng~{AYlTgnyV^B1M&T$z+e3ITzK1jN*$#XzEfyPJBI^8mE zTZ)AL18hqKY$S{p;X+A4qWAzII7#^+z#~C0X|K{QCG-^mU@7=TC#n8;SyBAsry! z3yNHiq^D8LmaqV11d*~vjunFU&@Q7m6G8q6mqm*H`*nYqLa<^|=jgJf_#quUbWPJm zOX>*OIix_4Banbg1c;7?`!D2pPRgp(sn zi(EEzUz2x)A{3;O5=MqRIE2w8>^JG+dc1pzD?UZOM#5r{nL(xixgp4oA-kA-WaP1= z$Sj?F`VY>;B|jwa3>ozl4}AZ^>ksJG(eNQnpZu4E%_ATE z(rD-gB6u!c1LSWcPb-;s6iy->s5`!mdyefPo02R^f;i~?^QFw$KOopKIgtoV?Rf)l zV^YNlJxQ7?0gfoBLf{qh22)s(ptR&zCf7OPCdl3+k9Ezin zSC6tX2%19J7=notGKjooiCV}4cefPaTzWxMxs|X80u~Ndokw=@-ItZ9Xz&lFo zAg3|~70F#rP8q_L5el7vnG{UcGxS>jnO_rJn$#v3PSSd+>a&!pOK{+nu`6aY9Iiktf@GMHC;g?+md!xt~#k)vbC4>aw ziOJunN3^T&qxX@=mymIk-9b=2a^g`ClA<2uOCigeoRg&8lVgv75d>lLtl+jl$_oV3 zCb%-Wfe5Be`YM6@C{97<24M~#lMJWl_ zO^7Ojxlm9;YiKXN-ZcD!FX?Tw4hFD@Zag=vjdW<2~|VkE<&%71xEIszLmS{XP%%u8OpaH ze;2tqDf@wP6ewkhtUPkJQK*cZ-{fv1xH37v2~$bIevi_Xx2^6g6hxs=CSg7(w}zt6 zWSI~ug&fBe$t4^JIo7VJssFWW%qq$mpim6iGVZmvE$``Cf(sI&oa{S-3z9`g20rCm zz5hsF8R2NiKTYm4N?;*`FFBLR6Go^K@{|)2ju0sn_8`A6MYIU-MgS|y4x#id!o^d< z5SiZu{vfO*S^pGfr!)<6qfl6rd<}#)puikOc?tVYIT)1mKv*4$_EWHqfU<1&P9S1ka*y6=iXei<%-u zw|B6ZqWb=Q)%yxO3M1XB)&S8CmV7F1^x;CN6t^eV^Y!zg+M7RLFi45 z@Gpl-LEaHUrV*By9OaZ?MqYjb0aD5&L4|dsj8Hq|;HFr66U-Lm5uju=oi;EB<_f}& zQ%VJ;IuS&l@{I@!Oz3U$n^7ttWi?SIC503SQAatCA zCEp{ZD^PNX27hQrv&qIWSwY5`Z6d+Ow_@CO2Agbx?-h^n3!_&G>ZN7z0qcM0J1MfCSdmWE8sWb*KZgPbT)WyWk z4f@%@?~E_lxbPWGMe!Gt-(wKcCJ<;cv`m1GQ$TdWr_P!*kVg}kw$LmcxiOA*lPzQ- z4hF(wQc6u&-=KM|W7`5GJ=rEUnaJRd80gMf2b{Rca1w?RaqNY$*o^b%ASVZ87(l_P zJnU6tY$>Pud2_Nj(5E2{oL}sX?XdTqLB;Hm)INOn#BIJ8>o@qrAO2 zVm9!|&{y`&yE!~McbB8=?CE8QHv_RauaVI&jF9AD4(A&&rj0>8jNWDJKV$wlNtP2* z*>TTkX~x?zzL=5ho@_W1_~HOCM`k#@#sLtyrzHee4J=})7sJ}w zb~ z79G&xh%P7Mav+p**chwJc~J~DWaK($Y%_+Dk(!*U!-zXh0b}?kr}{Apgex9!3NFJd zIBS!!(B2G2PS(+h&m0G0*cl`JICFxL=NvF+h%6^YaKJvj2~nCBtw2Ut(eg{917$*3=H{XxEm+gbLg7`og8N8 z90P`{c>>6sJL;xMX)HRU&>0`Wktog%;ZQc`B5_QP^!6SxFQRurg458my6&mK}OFp#EK!0oDj>^NEn65s5Z`<;@k?(n`I;{ zmxS>qwsP{WE)T;1RZdc12rh%YIA@isTyXL?C#`UG3QwYrDbc`TT}J0~uAT?}z?shm zr^jjNT(yO9G@Jv%2!2jfVsI`e<8n?Fr}=Zr5F^Dnk&H{iFz|%I9gKBj^bMy&F;0lH zQ5dMg2`QXf!2xB?uVJV%SJ&alw-+m5(umvdVk@F%oVN;wE~vsa6gWA7(}XyulIvG-mKURdI17}) z+MGefIhYJ=Wq>><>@mKT(`~qj1K0B5GzrEUaa{^eEe}(afb;u3Wnf%j7U%kFNEV~? zxNsULt#f89qs|!^%jK!Kh6h8&8S~0Hq>PQ{{CCbp<)jBjesf+6XTEc~wYOfBF6zb= zbGV!s1N1mWl&dN*R*)0(xVRGoFgYoT(Tbe2$SFRYGse|)xUv(MQ{qfu&L`xQATG(l zb%8iHimOX;9VV{d!-zUA(!goMT<(OEH@GYrC(be2lIzhis*sb_I5Cn7rf{h(2G?^P zGS0@}%2b>{#&uk{Ivl5`aJd<-!NV1FxTF>-YyPjucb0-ze&1*GaKlYyYE02_cbTfZRIksjs|C0Bzl( z@s3C|*3sEZulfJJtRoT&J5-h4(`Y2>bcA9~Z&#=_+(y4=suxF7xi}s+7|$Q^Q7(CJ zA8n6Bukq#oi1y>uI7Bjl!*V}kA9VXptOWYen6o_6=Y;T^U2V>?&bF`KwVav?n@{(4g_i%VXKUT%(rhRHscWSL%Y0Z9tdOL)IgzMC44sj# zu5g>vvfMBF@s3d3!37F;w?x`H!)>^L*O=3o)7}^D>5O$;tBr`$9l9&*^u@wXEZo&a z(-vuO4@YS`#6n%y5|nE$(?oX?H8+ma8fo(%1@UmS+xJIeveT<;+3Ory*lS7$_DFNm zIX*Tz97SiGdKJPUSiU*O$28}-9CJ=bWEl;e809{2)4R*A+2Zu3Aci<6d|aXPj|b zF*?UOV?0O1bB4WZ3x~UP|Maxs=rkh`&44>RUZR*eSY!IHPAuFS4aaHxG&MBqojvhz zS68@|PU+rgq&FOmFZZp0=88sVdTJIp;YKj>5$f@3Rc-dqZQ=IL9(@JG!o>3B)MB5socg;$N3ll~yyILN?r}QX zomgLMhY<|CVKm?H2i-7#ciD)Tsy7<8hk_xTbwBIb5!jHv5!*U(hHwh--iUd`jaAC4 z^hp0<$t+&ZvPfT7o6`}(^T$0QZ99{6vv%UJyFK`?P*>M-C(?~_+ve0ep}5{~bZBVd z!ZWM8FBW&A;drRC$Ief}@sItyTCKsZ;`^=9a3~(8tIIuE%;HBpo7S8*JQ4rMEfaH= z(XAe%KG+6$#pw>fYm+*N*JCgBFdn`q?hxB9kxyaEB;?eNZywAE$n($|>NA(Uw{z`g zyZzlsh)0~(P&B&S3DL3B*+W;v)!+NT3r8R9PBh%w+1si2z5N8OzU9-p#$-))EVDf+ zg3-v*a8IbGRo_@H5j_5pA7oK8zcHWl-x73nwq5&-raz$mqu1MrmEEjn+FLvy!tJQF z!$e)q{L$4i>618e*L2Z4iDbpIk4O!nUR-rHdu|!Wyoi>V=X}Kx_g8Huo)JVyI|;?`xt36@Q+LZ=M7&()mbDjCB=N8!QB>Muv|Ejg+}#(_tz2tUcgFOB;mXn^e1L4WMtWlL&N!)xp&o~c8L2B* z$v{uUYdl`{MXyBa`8TWVSqx7<8obj-$BmsB{d`ZvY3+=*_I1bNxW)8x@t?ZFcZRxf zj;}m+KES^anDM*BaO@V#0Aoj#uRHv2?V+&eD0z0(z1#`;A}t1+G~#vKooaA_TFBo*1_ooKjCasA&7<1^4k3vV(f#eBXE|T~Qyy zXZ}GS3Y|6y7p;3glNuUw@6WIkZg0nJ<=zqgjfsar3+Xm`a`ed=qQe9`;Js-hf8&m^ zN@BPx7Is?t;#cj0P>+^5YbTJ+O=oLMIKC_#?(y7#J#921k2l71bD<8QwTb^VN0oMm zSiWPA<&=0Udvxp?dqrCRe z?z{Usmxj8?ObIQcZrGjPhZns$iCdOyom~qcp2aw!%e5ZZ9*KtW2{Th#hy0+qGV*<` zDbv4i>uklPS{~_(diOx${P4Nd?%>AOlW1HCntwOu)KvSn4W2SaG10uo*RoESHrw$L zX7dc|-Rfvc?0-Z!%z#^#C-k3pYnvIaK3w&Fw;gm3`;gNb#RHu#RDIg?;fm;=Jwx+p zA)QX>&QNDh%wq$Qst^t1Jw{R);yG~-O*BFc5i{vTZZkMeJmBKX|Ivo7-d8Q;3a|rf zjdZt|75ab!j6S5L(%Y+!P_&KyT~p&b!kwkzo<1!gcSe?mqdoW)ly};We7VK?I?+n& z3enXPkNB6zct2XAkv`lmk)E#QR#zqVaDBP^zq`!Hu}{B^>Oa=lpE zgMuR58|~~4MVC7*eX&l`6I~UES~S~}>g7* zPTZr?_w~>jVb?(W;`9SOtVqQ;9O6F+$RljDjF|uY(ftbRbMOQ8nMhw8XGoift&!fV zw>qA0?Wn2PjczwI`x9b)ElZ3P(hkH^EgII&6Ea7_J)y3+=Z5qjhNvgjOxC}2Dq>@u zn(7)S9Cu>jyZ=`X$qzUoJ&pw3;aFdEDH+w~@VCQB9CuAE-X4)?Pk4FEX%B~E+Hhnc zCa+w3B-$GO+xJK;93~&R)ks{SM}f7`lxTQqsIv=yjpo2|cXDaFcj=QX8g9icWdto| zrdRuNsegY%H}$9(3B%IIHn!H;)7nQ)e+oVI^q6_06M%HLtItK8kKW#Jh^_+fGyiX9 zexlRe8EXx9b%lDuk-nJ!uhB3{xbY=uMY=1D7Y5(Yt&yHqbMTN@8}aN$WkAOe@Y*t7 zJ-a`z>P2VF=?Hhxytm*kHH%F%NCS0W<;9}gxI5gYPb|My+!JmM$6|QISodRR-0?PA zQ>WdAopw^pP3`NIwle8lj3jDp9@DI^w>KQs#=$b&DWRB+?oiaAt#fH-Tc6gOL&m-{ z_lif2FjuKQ1htfO_jWC}0%jF}50-wigWSe(r|L1$$rSTmXLPQb=o%el{zx01-?k@s zQQM<2(&ZZ8bPH=+-tCHKM(qoF9y;~Dqvms_6@;(b?0wFOI6e_Q!ODqUJ8^>~vbf zJ>m9FG6sDudV5qe$@Q-G8R@~h)eh{cfHN-Xve5DvnM7{KqhYjlTH_o9)jFQ_dif8$ zmgVNYZ*#9&@*d*4V7ufOjEAG`;iz$TX-@!ZGm)NHCvFA`cj8F;@GTRLO5C6B9n$L5 zR##8N??y?73p>$BEUd?4#MngT+Pt<2?Qu7ftWQ}Axfv&;8`w(l&*A3tMm?|AUvQ)? z9uKE|%WJn?I|!qXcRMs%To3+(@qhm(fPdz{zlr~;nKZesraBS-Gr79vzwkf*8UOv? zfd5mcM)t1;mGTur`+2c`X%_2O=)wAx3xK6iCp1?gKs7W9NX8urP2QJpwl6RCyxeXe zg-boZTPYyb1dypqfp~<93?+qnmQ!J&G<$MVDWPOMKB+2DAkt2ye==P76jlA9FZ7@B zz4$i2s05@Cq)HdmNue#T%jD3DRQe{(9;Uj=O;SfFrpwa=HQ-9up)t?T6OhhPa$PfuozEg&1jTLWfPkcS>d+B>;e>aLR8vF`lB$6)pi|fT zFrZE<)uCSx6nfW-DsAW$qZ%2!K2!vQ;hj{<0%~^ z-XR56_!@rDH`9Tq1qAgKq3bOKwUbL%Pe@uG>C=S}Af$^Oq!0*6mpMpY*4Y-;wF^=W zAW0V|Fe6G50+M>L|4A7F(ix(p3k9SzP)Vov5A?&8bY{NW@1%uVN-4uV&=%48?0Qm@ z;{N4LTA@3f^q_rbqkwdVqUj`Z^XhZHmow=l0fEjQopl}59#EZU4J|rhS~q=8 zK&pYR>D1^9*A1w1oKwgdsFRWXe=POSL28Ha@Sd~JcQ)UMo^NsbK5)pZSQg0K1_!~n@;ug_x_Zp_wSldrwH3- zN)UH0t*OqHgf^Y@sGoCi+BB?Ar#G6n>U}*)nZZ3tnI|C4Lg;j!pzc^omjDRsBtG5t zJpxh<3{R))nYK6h+ur21z183LPQBey4!YYb{sNk#SfK#*Wyr<^+rX{tQ z?ygWARBAOYB5s`2sRGh0un<&gv)O#93%C`({HMC|pNb2QmqqGIJO?cJ5LD_K+n2|< zmCgRXY%wyEx?4ap8m*vG_X$Yq!+A-4NkDQe+=ZVzV#O_$rlGwZCoA=|y&zK0Ja$2EnF0DLaTcwS6w^drR0GJ3WZLTYbY4eRBrrjund{7Hkoh#Og@&Yp%G{#YBJ+9g zT4e6=twrV`o`%emW*Rcja>w5GtVQO#ycSsjbBbkU;R%KR$U)WA1%rah$`_E~LP9}h zRnspl-Uw9IY&>Eabp$GFu^D?-6whjcyn@QQhni;KE2ymd?Uu>ftWRkJf(4be1%;HL zu%NQ`nu*CeWUr;HBX+B1oiK-M7HYa$RI<+6-(B#nT-GJhJPmXf)POY8(E&vX3dw*{ zJ9h&bd?GZUiA89@eB1p2i%kayvEeDgD~i|1$HN&!#@YT#M{87|xx)WG$mCPcbH4SdFX7Yy9)ULynd3P?3D zU{C{J;_sahkV3#;Py=5xvpDc=-#QPxNXkbP)SzVh-k>b^y+K3GdxIQfQmR3t1!Q?4 z#GnRMnZXX4!;Q@K4R+A2JlH`U{K+V{d9VGPo1#X*Nr((up6Pz5J#e9)`5pJxQ58lW<$LFa6{SM<@|9YM*?#yj6a zmqBG`qb{le%%HMMd1bO|`J~Ej^o=@uHjg@cp@3B5R|A#Zg5TGkHBi}60VxD^29>=U zpVPiJP}v)Bm$1hTRJPUlv-xhz-s4-*>;otb8ZrSY`Ok zc608)`Nw8^1*96!EvTHOW}0&DXJs{Ky;W9oHnFmrv)K$jXRE8L<~(QL-s3*FUqGe@ z3JxmAUh+Ao?Y!l@;qB-Jk42E9+!-B`rO&h;P($*qlnp8MxkQFkdR`vVNIQdIJE7kHJ_!pi-zFE*NKmyRuk((ZD`0F?x8W{qP1Oypn_u|>!5}P%}|E&JPa-N?eL+a zd4~^e@NT@J*6bNNpEusngV^JwUc0@4|!4Ql8S*Crf#MnF2l<3SC*fZHw{#bq3p%uNi-=1vdudN0+maw|*2 z>UT*j&C7hb{DVau^!89I62|EKUYeADYU;)(S}O2%)w!Y@@!ihi!HxWY{xi z8iqaR>(4F$FbUMKgKmdk@`~NCqXGu_VELeiofeR4!13?{FR2b0%q29tLSKRVwh9C?daIP$v8Ih(f>e@ACm-U|D>`|WJxt@m|j zqy56Oe$md`W);i4ef;W+XqC7r383;`CUg0oIHi1SbBU6p^1d;lgz0#yF_#1R$*JR>Y9OfX^! zDiVyC0(<8dED#XXYB{KaMf9G9c!DbE;BFVJwB0UncYVQw0@7><5>x>@b_=%qgsET` z3sb?10$?(zf+GUbEP5SO!7(E)1-RO7ItHkMx2?Ps2DBYxVCSF;Gt5hcj<2!8(Y_IGJgCCOw!?+({vBA@V-AMG)%^LjX3h#9GX*T%n8GmD#i=WK!89MKf~SIi8Dc|J)nwFzmImt?gCZ(l9}e> zqh>o5pWt^+2}m`GKcI@w+VQaWx>)*zp(L4wp(NKVT8YEksbsX>rzO=a1|xzRa-C&!0lEtXh=gTYIZu_>^PGRW* z>kBBgR($DE{-YnaQ0n3qN-z2swp4l##j@-K87*_X<1VYWGhQ~E{KI&XmCZGuFT-7K z6U0E3-Oe8^>%}X`B#VJ6yO(4~r;LFr!*k9gj)5w(?u@eM1Y~-W$Uv3tvVS^kr@ic` z-2r8Vyd?pK3;1KF_~t z%WriBy?hB>6LC=GO9iA*G8U+E8?i56m+*+{xuf2y+CY_`VymqDqHm9tORd3-8kn$?N9CAqjjFKXGpdTtIjyyfsuz&q zreS~@b%TJUuFx`2qZVm9K_|q48r8zilTk|(CT`R!{9B|O8`vaZfG<%F)TpNo&|}nI zJ9ncFP`s)uf?qnseLL<(z^UC+W|~G_O#I?yvs9x8CT#W5L(My*E3e+_qpQ6VGWr$) zfmj68=*27)qg(u47~N%saP+E#K8#*#oz0^++i{KF;>yHm>!%yN$KI%;_X~h2phgq$ zij$T=jb?Pl=+go+J(zP)qt6-t)tG>7XG~f`7-mei2NyDCw3(bSb#`XQO!XZaW14yY zj#*&lYs~HX_!`reV0@10a35yNZOmG>cgH-)PRucnn>L>HT8;RJttfSrFbHbQKKDW! zbC|n$;_6Fq%xh)}$4CJ|olXd8WBMTMD!iuwdgw4%{8S}~v7 zS?Jmx6?fPdyI3kJe3AHy6<$|g#d-nB;V$~alLC@j@UX4e;=b$iSXJyc(_QfrULrl_ zEUS3g>-VoXB_N%%1VB}s7m#Xl`9O^g_%{F894k6w%kAon9q+-YjIHBeHz(LfV{bN7 zG4>9R|6pu;f&`3>yY7dv>s)x#*i8&?8p|r|SiikK*0tBizG%ii_K5xLaRF&IHxAU; zllJT%d)_RC@#ZbBvZ#S?YEERaR(lU1fvE2(E0j(^Yx1{aWRGTnn9m z3953D>0RX#b8c1knuDTpsYgky^q8@g>ufhGH@TuzX~Q*@+gKbbcX-92a*vsk%0pgp zs665ohsxLd;!t_PD-PrQ#{9UUc6{SlksnuORN!&-eiL+Dqc$i_`X{Jy^Ni6yu3Z4& zt6lnP8Q1G~YK)89i(=ebJM?i63dnGCpg@g#3^j?+GJO9zGZo`@yEpi_eblJQjRH09 z5cmC*?Z;W;z~zJ~P~+Z4eV5XvK#flmkk09)pvLE#H^)~}G}Y#afEr(I*L(bI)0y#e zZQsW)@JQGA#a`(ezr@JH_VLa1#bLikHC$8hTqy@bk0qIy@6=szF^hKk@pxZlTp+uIu$UJg&QkfCuK8`?;6bZS?l?y3MZUblr2f zQZ{WC)OC9V4Dcn-g1YWy?&3K+ZP#72_w037jP+9$AeFA?PL!gmG~Xdom1~!|%3c9g z?7^z?Mk}jkc$c~A7PHJ%i|v=IT8u1JE#dK1^?Juwb+1wWtJc|Xu}7~8PscVIYSm_L za;w&lyS0K=wZj<4RR=uNS@n`%k*_i!hN^P{QYgI_RMmO>HyWa#s;-z*WI~XF^KQZ~ zs0mqi`6i6^EZ>Bxt9%?28U;Wns0p{?QKa*DK}}fXJ6FgzWc1YjqkJSrS`h7US+jLyygl!d+ew0C$pe44ytB7A+2=I zD5#oEW-4p8^5&`W=|VNT?Z&Qo$v6pW@ZvMc)Szl`8X`S-Fw~qiCvMFJJAE~mNayW~ z;$E&%W_oM0^g7q(Ts8LET5wD%21*o$P@1)vAW~8-COb=>%DG8zz zO`+PQ{#RFP&xyf|)NZuLaP1a?mQdn0sM_ZQq}lXsP__H)I@Ee%wYBWvt3AWlXzkl} zn3p*6P%Ez*>BOL49w$1sBNOX%4=ME<)Wk;9-o&|f#V0N>QIk%CLYl~tjfqhKnV!UO zP!lb3XCfzJOngj0P^XH6n)o!T%61P-e2&p;=JkEXpFHuH0i00^IjD)R+EZ&HyKX05 zx>^;Os2HtVS7^FYM>v&8q%8)juF_~ebqShJT_ar@Hq>7?&x(0ni}k(K**uK8sO>`C zJ-!`Vw~BXc-NOP>O^Q0GItDD%ZO03+HPVa!-enuy&pV>-MemNNJ7R>b4tG5zvxBNT zYZtHXV&dgocg4M5C*_z;G^rSs5}iv7YErq`hm+VEoHSKHmN)qw)TCxBgOe5$?A#>6 zgPPQ4dOhhLet)G_4kz8OmBUHv{L0~^4cHic{24roCWD%^&AhV1ys}HDI!xLv04hLD z+G~ElPXLSsHEF+qq?+m)P?HV{2!ydMG!sOiF>$?ahud*?A>IWYblb@l3 z#+DNRHF=wW6e=nJYVv+}PA6L|-{cdxX-$~{P?JyDv0b1On@SFVntaLbmxdtfNRb%* zd!SwDhC)lld4nl{Wy@cJ|?OmJ;9^!OL2VGS=%!(;r-XFNUGrcp+H z8ie2Qyjj79m-Ok_W96#hW!3^3&an5b;k;*g8!r1hKP70TU`ioAMg{R`*`Bh{U56RmKlDb%UMcsT;MERNs}LrdlO$s=KGB`u6nH{pLcNdPG2S zN4TpE)YRifj;Fq61br%6y}m*Ypr*dfOE)de|Ji9d?jlVaZQ7Wo(f7K{1E^^YtV>O^ zUY}{4lQV6R$16OoML;?ifdDnF*FL|7J$=*GnRJe68wF(gIy&ufT-rKN({_>{$(A($ zHEp+sp_PNNT})>!Thf;HBeZ#3S3 z>Q!$q{nDOfjkgL&q2d#u8W#&lZVgcr9c~6qW7Jq_jVsC9Y>QHWYFuMmF`m!Hr`@<* z2rnAvM-D0$-7unUEUh1Cd z(<|+t>v^)KH+m;)`fRIfO~2Lc{Pf%HSxfii^d)u`rmt{8lK6);b~8-h~v(C))%o}{6-kEk&%v|gb_0DXue^_eF@|i2}30uws)Xdek2b%<> zP_YnDGoRGSp{=@;TLlCrRfC#oo!~R~;ekSayO{^=`!)$(%{(R`(^FOi)Xb9tg1Wc} zsG0AYR+<8M;bW(o(gb9<VA3PqgVlpT*Gh7+VZY+svudw99VgCQ8>0p%&3}z=o8X4*Qp) z=@{LCw#*5rCY!?9q%`)zmOKG9E7`2`tRj~1S*701KWn^sc~+x+wAosMv*y@?Xx2QR znLBHth7M7o6i~A`Bsyz_nW$N7NG~y^Q$WpH#~X8&4Fb>FYHq4o&k4x%lvDvVYnR=! zvkvn*%`%xB_(kg;p7n-ZhFRy`5nl3+u-O8hnzQ{@N^`C@L7FQCB-d6~PXyImh2u1( zSwJ;6=!E3vn^6`bv2YKl=DBvYniqKv@a7gb*R2gyb8kYVrFpgO#bcfn!{*Ii4`lOp zGkeW@IZ3VgfL(*;!wE6J=3_kKW?xQ6^SfRR_WEQ2S>CKnP}dLTH?Q~MyRL7rvV8p< zyQbIAGs|@SLLWl&`rCb9>9rDn{VH!v?)tUfNXGS#B}~ipTg`sFexFs^uRrKtrt1&8 zbtbMS;^9~2!@uoq24-EBpRamz7%&m2Y`(i@27pRkOv%OaVt>8_=syhoM}_fJMpYf;s}DW)2DVoXDx+S=yeSPk z@vl2U1$GPh=|?|y7chgg+_docGGMx9xlG(wfrC<@(vpST-kN;`K&8D6D(#|>M~Vub z#Ev(CN}ny{zq}s28-H8_Dt(=hpZIC=avWtPsHAEkA1Z2C0nE5AQ(sBJzrq<%a8AhY zuDE$HzIzB%`Vk?w%{nv?|9Suvyd-4wT<({E*~sOzhu+IfM>@VnpRk55xV zw*2d=Y&k@_-QuwssdC}m5@)grIq22RiKjUgnZ)27iZ&- z4}(g2OvoR$zkVGs)4qJ{_21%$3?9a2H0^5XqqT#tV{P8r3hmc?T*5_ve)7s0~`=Z|l zX8e|`)(C9M(A&zTIjdG;%ez2j>=ANGe9g-NxB+e!paOG21r`W7VCl?X;6y$S3Z547 z*#Sw__@e|B2nhMn%VR!|>v@3^t>t^)`N&9YZxto|%8a&Eqp>gdf=XH?sN!`O<$L`rj4ucXvJTK7Q>UP)RF=yl+Z2Hee`^<)0R8eIWoUxE)k* zrvQ~21eKa4I_7CNq!0uLo%BU0a@~Q7G#vgA5m9bdJTlen0 z8Gq~nl@S**|MeXu_~UU<87GAtou*KP0{cM)UKFzGj-zpa{#T*@H6fqqxaE7;i599u zB4>WMtOJ;6UQT~)+fRUr(dC}sF8eev^|@@@auMY?xCT^kosf6E`3u~r>8nAduNCr@ zhqAweop=UR##SK@eya5m?8IU!_9E|mZ1yYI6rN*2A&)OwH367CT#mZ!FSyRBCqSj1 z67rS2K|63tTR^3C2)Q)&gVF%>uZI4$cmm~sf_x!=|Ap878KD0X^h+TNx&zY!px_2j zBz#FhP)S)rKJc}5&*5;-P@NNb=x5cqebOHUmA*;H8-G3wS0w#yQ0W(i{MJWbxDQ|; z3>9+r7uz1jjg<>3wFo!Xi=fgD3z@uQ;U$#b22e0V$ZeZGj^}Yef=UVqd7ymCd>rH) zP|0(J3P)kG}meY`g+g za+Q$NKa-P#{hS9Xc&m^%t)Kf6&dyvav>|H`OdEk?JPIo9gphUBqgG}>{{braq+kUo zSdIVK2MP}2KVAj}$5333fl7MS$8>Kg!h^Si3bx^XzoP45sI*O>(w-D@!Ed1*`&|wy zP$}fl;16)23|TpmOeSeY$!y3Kun=w+GV2pJ9YQhP0ScbS4qOBUmxbJ(vF>LmRxe?n zgp9nn`ZGA@XYf`O@}W=OkF#$G`epvqOkCHDqo6WQ2>HqV(SHZH1KNdL)^g$kK>vE^ ze^|)#eOvl)rVfJ&9u+ds@&K-PS{T3BwHfQ z#n2*T_OKg15`Yy{!%RUI?mr=4ed|X@0QxUN|79Wbw$V+&?`PB%1cL}Iq zuaM_6A5Xy_H-HLm6ta3kf=bI0a^u(GrU0lk1u7knr}Q|U!a_E^^Du3Y zfuJ&n3R(8#AODEm+fG%c_gaT2`W8+osNP^zemWd=C;uKvtjD2;n{p)i$nl*&WN>TgFs3CzDQKRfu#^Kia)flAvWk7(SI7^ip8o7v=3C;K_S1B zJ#7HKyBSpxAukSi9aV{>`#~kG7xK#S=oUOJ4}(fQireojsMNQGyzSwqRsu|gCL!1V z+np%x8=!xqknio?-5P-Y$D#je0V-n)-uyy7@>=pcIN~{=V6KoScO1>Z5g!8uxZRUh z;Rl6$cwfWRWAu(SI$vAEcx*_qgA+`GpMkYJoLkCd^p9SvQP4rA3gp6 zuFUMZeczw6!H(l z|NFE6^lyiLR4#)1Km`v9Id8*zs80C58%lJ_YoJoj3R%9gJP+S(2bI<(Wo#DmdwcUM1JHj6`j6l-v(?GUK6BSM}$ z(AXCMm2o?$47@=y9t4%KNyuj>A3-G-ZUF`Jg?#?a&P~{pJ)n~J3;ErD-4Mi2*MmxF z6tecl`eXRx3Q#Glh5XUopIL*exEECF0U^8pANKwS-o`TR`^S%C{a@FXWDJtD#>hyL zBuSDa8OazKNs`UpyS>@=*4~>?V`Nm4WF(9*MlzC-WF*NT85tu9Nk&r1NRniv!?Av^ zwacmm$j~S{X38IIM4I=yg!fLUd3+H0@h$LN%6|& zvzXIcIlYr)VXE;d`FhPjvZzB zVN2>+Lz^vp^|4IeZgd4}d?d-PnQQDFkFEpmO>$dZ*~vDKuttxQY#8%)S3A!Rtg+4{ ztE6O^z0~t1k+&ghyou#IhirUC(qQN5;dT=`vnINcj63o=#voH! zgP9~VZd+<=8ud8OehW z?3uuvKFVnuOZMD5!(NycATi3!gSS3s$K7rN8j|rfQZ_P3tYb}VBza~{r%SCvJz<@y zb*RPGsgj(x_>>(aIBY{ll98KgUSe&k5340d#m%=`z8T$Yk%Q!d2F=G=Pk$_f&eK>& z)>s#k10(w$wi{ocHP(n^?kA&clof7oJtfK8uRiflJID-69!V~qFwhdF_;E`)N#Zlw zT2M<2WK9eqS$e^a-`VwtKqHfWO?udfBYDztHe!xE5mzDEK+Wt0W`G2fBP=9h{@0j`_iyIlL zrbec+MrM*cIphb{yCv7LCO49_uCErHf&+HLNLtNWHIX@w2a>%1e7CyH>1~|eMbhoQ zTGpRNJF!N)lGM7Req;NsgRHS5B(Z398)D@oEcYV$$+2w~BSIalA(O1RTrBh?Y5+ke zSFVd6vlAF+?TzF|1@B-EXBF6I^3bwd-nZ}0WeqJL`N7xE+Auk+tdR)GuD7;ZJczes zjkh5g*7ZyDj~!U!ok?bHc-4k>iBYVHu_W!sOlun9^af5_!{eUz4p?kyn&F;mq%UhE zkL1G}!;jfpwhRzT`Ly?b^w5V{BgaUt{nL76Rs_1F^l$Pvdk3Q>U_Z(y8>5!v#+R_h zmy>)rW#G^4ZCb(_wZTGSigni{^Lmz9QWu-S8k<9Mdf%Kc?56hzMNK-d{-nYVGLJRB zkmS9;JYc;^VzDJ~Bz69lYXK!$$eJu6>9xF%4JAU8SwquFM&7x##BNZ1)^H<|BS$XU zW}BN>!&^!EUpDC(J6mOqMMxH&`^pacp#s);G0C=ngg4k}oMO!(lAhyE<=RtBvF0=+ zS#o;GpX@#~wjP&c@Y^N7w#_cAk?thh>fQZFlr=JrH8RoK%_Pp$y*}kP{yq()v>w`#U-F(=7J=usg*_7l@ z$s3UsF9s`5E*~+^hQ7fTfZ?R{k-qoXRhO}bhm)*oU0_W-(gOffxj1rTYdi8{*7!1# zVYeQ$*p*zvn%qEg|JtwZ-3@lL2Kz`Ze(j+}Ax@9w^muz|YOq=t_;%`(t#;E#*_fB4 zZMvs5@Mr>%QTge#$u=-cF1Od19(9B@5s)1CM~-dgRAbGlNpjJhZ&bApZ?JGha!F8N!8}%jHCBhD&!nv* zEaq>pjNAHweU@>PG+2D&m3GXLtclSirzbVG+Z-Eb13HqX*FLw%zEzJk-oW0_{op9d z?F;8^urzxqE87^FkF)YAl4r}$-C>_^Yt77lWfE(AD#?w#i+{k}*8u?2Eu&pFCCzPh(HNwZ{%Mhcz;vWXj6zE5nwJu|_sn zTdkP^ziPA%YqUK{jZb&?vzyt3HQJoy<al(loq->_gln>9JlUht1ugF_?}o}D_tPIxhEu#BYZlB37% zgzEq`EvKV@w#X4$VgqK9re%*>A{^QZ#<8q#(`K&Ss4lGG?j$#l-faWT@NCxbJd$@C zBrFDm_W=SdpZwuL8+S)KutqwQl%6`@+Dfz^YqWqQH!;RK*jRhOTjjOASN_B{D_CPA zN!st)zu9i`A=czklH>(@Y@`?)W3LFw7r%UZo?U4O-2`m4@Sfyg+dRn1M@W9T<|RC43av} z{N8d4KE%pLNlxCrW02j6x~$RqBwsK6qova}+787?u9`C0QsQ_M8{d*dT6a==wKuZH zx7e$_pEZ7v>sSdyzRe86IBbRKJTAxTB2myX(bF0yka>2`uT z+KKfBCR5Ho(0h$FWn#^VkyO<^_u3`Tus4?El~bQsb`fm_+OWJ?HlmtcV?EYn1Cpm2 z9=G9XGLJPmkmQ|9U$d)7jt56n9_&(XuT{_hC{L;O^c1WwHD!&oAZgXJ&g*tFJF~{R zk^J+Wn?ASij%H0hOj7p8->$Ilwr34GkxXtq7qPD!YtWOV+pBY~u|qXsjWj3uYH7cp z+Xa@eCMrm7`K%9;`MIp&1tdl94YCY6yxU$&k}sQHXBQaj4ot8N_~JKM)k(1?8L4q}2m1J9wj_d3Y+gTI4NvgF!$MW)I zAJ$}lk{NA(W$_|1gf%jZDi5l3dnz-4J_LQ$Qh?qffSY%8on5GFXz= zpL^Q!{@BN?u|p)eQ}1qPKhqefWEtCRfZg}_NY?mhl3$*as%sfeH`ZuR3$KS*qen?n zZykT!UZpy$L5k#^FTb)#5h`E}6_Ygl-S4dHk5#e!lw|6doU85LHnQ;<$$d4J-DYhi zu&$5f!r#&-_OH8H6Z=TMUA-R(YbVxZSCS#`{W)zvGz8dL`Td7Ku%sn=(8f$8_tH%p z?P*rEe$tYV6|BkCBrR6_Y`Pt@gAImA7XS14SL`4u)}SFti!bI6W^TZZNuGV-7zU*$ zS>sAFbmWZd?M8M6{$Jkx^AGItMNhHDh@@I*`Y-LWTC>L5k!<>^&!CK3f;{~8b1RwC z`#61op$+dRw~ zIz|%O6IyQ<(}b0qlf2vQYs_g3VdY^YuP-gP@k4kXYj`0^jZnmTplA|N^zeV!H!~)w4 zEnp2TCVBjw#2@Wq3Rok>Bp2L>QDUMBYoa!Zl z(LKBESKHb6oMcMXiIz#lMzh8qCh74>hjZ;oc4ZBE(CN^q_n8}V6O!G3-&n+4z{Mo_ zv%*#ERBS|?AlWeOTgxIsWvrp$B)xXDwj@0{mo>S7ogltHj-{A1SmA(AV< z{dSq1@j}apND6P?TF<`Kj5XPkq{`e|rrG9k*5oOY8=8H+&o)o6CWYkv51Ze@+}Lja z9rtXs`w;EV8Z9KLxb*D{Y;!zobP~xkm;BIr-S|}2_)L-)Rv;TnE@MruB&ofxCE2yM zWDVMooOgFu`^{h&Yw!Tcq3!22vCWYnaZ7`ugFS3>wKYYO!7Z=H@O2jU1G;88vlHnuPZn1xTfHgFRdK7h7Xh6-u9$r>d~F7(LE%u)jN)5tchU2%L~^{dzU%I4M~nZI|pl&Ltr2x zy(_M^uo14#8m>)}AHEcW*MY3jAtcl4je6dmdJ~ux$e%vF(XzByf6E+g+_{l8wuL0; zl^5=}8&<%YEG8K&U3FMg-_s`ql$K^`SwgxNqy!`vq?A~?bLkH0l7^+bL=aZGLpqj5 zU?mm==@t}F@?C%5_n&!g%$@W3oSA#>^PHJ;?&3v3ZO+^;@$UCqSFFQdpgm&PjKK3X zBVQ}b3sUG2Cn8P%bCceNtyaU(J`V~Rpi?;rddu)Dg$PoX2*zz4ZC&FCNCyRkZ(ZCv z3LlHQ)_;iF+T{)Os+*J+9cIlblsw!gt)TW??nqt)AQy3A6|fPW_9Py=MEEoDpQfV$ z$MytBdnnA4<6FRj%QiL~Aqd>)Sy**FD}M>qV1-d9y>$4*#&5mN1{_k;2)6buc?zw3 zj!5Kv*)e_MOg;Vt930YzcUd}&{^WP2O0@+0-6mx4^q1VR)s|) z368Caj!WkD_gs%slnq!pR0>gNeNo8%mHJ^xLxLj09^CdagXL)Qvsw6A4A_(>XhEoK z5QrSqfra319+^dK!~3{kJrtQnm-I^rz><8!-%q_thi6OhGk>5We@JBbdp&q;3$V8K z9Z8NaIkH$BK}U4by!bR10mxPRdU@X>%1PjAPP9Tv-9^{T$`po(Mg7rRQVHZqgp{d+ zT|NioDZYouLkWSPx6+^KG>@8M)P+n97aEwBp_^}DnaNVNOD-Q$KyO~Xxf51v16|kK zxB#;jzD!E|UF1V9n!?<^CDDjeH4cxd{1}<8cX}q64-$;q>MFF!e2Qmf5OD@vkhuC& zz~IjVwUz=m8o0;L&ThkJb%B(>?xUNlEZibe@)!fki9G}ODyUOL?mmXu)RchXC7*zr zL2l(2&o{vEjZZ*nuTP1u!k6K4(y)Wg!up~o5)HT}Dqq$&?a8bl1Dh%}evTF0rS&$M z&S`{zH$%8=u|e=yY~XB3b*iRjlXccs-j5=4P)Qz059VKxm()1v3@MY!Un8q@Kg=kMD)T~Pi~f-;v@6v5&Dn1ED^#ZBVrVNlPrmi}%@ER&74JCc zng71F&UYM+ja25-EuNd^)v4H@+_3Geqn6j8lr7u zyjj*O(Z@1P<5k1CaInY4Ix$tz00=VRt%7{;Fo&+>j{yq79;SE8qR(QR%oCf~{SQVr z#g=2Q>=LPA6A~WJ<6@&BjISE3+#l$7GEvdiONWxjzy0BCR>0GQhcU8YH;~%!o>#o) zvF;Q8uvl1rhiB`>^z1BrHU|7>E}oYeDAvH{<6fzhn3ROBy{FLQuCNTTG{VK;m$2pfOu>|Q$Z~E+o-v5k0GRJ4pf&2l7AA7b z0_L#$;LYmEaiaR>T*aHB#kqyLaO;!qvEXiZ5~v~d19Bp9GJ8%^ygMe6BgDl$qoU#b zHO$f9y)$ux9lo&xyyCf`{a8xe7@cfD^=<9z(4W_bb1E)D_i2tkA=mZn_$r0a&glTS zmLyV38OB}HJ$RkvM%m_$=p1lu6tr@ZfI5jHP`2LeOTHY9>>tyN#ZI~CHaJL@X|lHN z`pq5|_`0$|hDu+z?vi;wy$9JQf>`(4eU`H>H*f^>QcX$bn=k;5&OPd1@BH>-F8B27 zqV>q38uDssU>Cph3bxDm3-ef3eic`>6qqz5tsBhPwW~*04V1A}XME-mvQJ4apKm&_ zPlRN@>BRwyp5D)NbpHV$|KP&bym6-+xur${FJCouC_hCuCN)NDrlKwk(qvY^Oty&( zto|K8g##ZWs^AC!u(Nvd6~fMlE+ZxX;hb9TeatUTx(y(toeL42ylg^hxxEeV8oMmA zwqXOG+;4(Ado9NuKA(|9;N*3={j#&@bm%rHyHoKg;HozQR1X8H!EYp-qd@(mT!Bwj zz8JUtmcDV5N7|z&aK%1(7pxAnz)OgMG6jKe89LK1;2Y{d-BQ+%kq}mrMkV&eyBEU% zN$|P%f*mhXF%zOE=P~XIyZj6xK|)+%o?F(Q z%d^98fC~q_2R2Nm!vHg|(D8v9Pn0HMy=j#76G0v7Y|-lhSO zc>r??ay9K2s@kXR$#! zh@I~*XL8z!S~=RUkDp8nU+unv*+5&DgNPWyXN$brYLC%);GxjW+ol63au7yfkfx?` zkMiNP^%;XiYyh*?#3n3H_%u%0{BIk7xztHghlv+AF?^%>yF!5+C4`Zi={1(BnaK19H!n>}LScgU z#30`vUBvWh_xSZ#F%fj85M3819xEP{GN-KK`0lqDl(mE$&VrsLX*RRS;lO$jb@(+f z0)HEy)$92>_~+o?%Y<-KxSSa*?CoiD9pi)r(N5ZJDYBW9ymkcOC@bW)WOZurv3{a~ zC~&nJ(jwPz%kNui`hdB3iHKZEHgnqT2nE$=Z&AA@1aJ%91LLh$(k5s1p-n>||wetwBhSQRDoZj7WT z)Py{RzIzVdJTsFv*VpO=P^29(WZ8XsTZcEL(ZFMuzil8@kYSgW?o`u(EL>MY{-lCk zLQMyn4yll%J}~mnHFbX&#BtPQ+jlRDzBug~<4uK}C)4rOv&dQ!LoHt-NLJ=wuLL$0 zfZFr6I&hldym-RqT5Kk+>c{wJDjLZxoOE>_AXvOJ6#8$Jmph80^-3+U z+p^(XtQ&EQ#3+?lO!*NbFEEFF&m9soejV>F_nW@H7q^H|{9(=wtxL03z98VaA|!6W zRaU9FaSUf;D2axbumcyE3@w9#two{MjEH7Bjpdj!oH~|tJZ{6!4Xm1W>Qn6dzYd&5 zMMxYQaJ|7wJT+Hv=OjBK_SF0p^WP*+o(#~sRBMFL7s)|3W4U}iy`&V1@85@}B!!m4 zB@tmoFVE|n4{_mV!-Kgm9=C!FuI21H|0tLc!~j8^Y%aDZ!_r{KyAwCwo!|5t(;Q26 ze-a}L4)u_G8nC=*r{Nt77Cby7=Vn(fqRmkyGX7>Y>&LGMV5~A5qwN;t;rvDByfCKz4<$gfbNq<;P1`O%G z8$oW4;2Ac6-y9wYB4dGhMk>!7{w&xAjt@*44188$FHAC`OPa7woM3DJxZf-%&gRNP`Z-+HR5p8MGUn|0y>n}LVjqQ^Fb`_J>SLhK3wJ!gA)Sr}k9VQ9;W z8d)p}9;#`fUSiX+BU)hpyHK@FwZX~_VXX#VGjvP=yq(CQPTYv}qT`0gDMzEZN3Vpg zdgeTuc8zNukocf0hqvP|uMkS-vuHPpx))sN< z;mkM72hQ{Q&DM#{ET8_)${qUt=yry``g->jNxi%yiu}U|Ga})u(_l%pR7YnD?vkJ5dJPGXN3!V!P+#-c;amMbL;Pc8GA?@*C1P_<2JnN?oHK|*Td54e>kEiX3_@8|e zx2lj%Dt?MO--6XgTpAD~Q!|b^`kx@(bYbK~YMLvb*M`Od!2qYDps^EK6C@-ERwhJp zw=S4{fsp*gbQ2ZS#>g$k{JbML&AU1E1fFUNq?Y+Rq_gGe&^*Ec!?A&=1q)KC6g&ei~-`)L+WbI&*wD#WACSv7t4}?5LR9A)aP>j z6$Z!^@rENPOaT5v9|EoOyFu!&=(HRYby<=XYD=#)4V=p*apt; z8g~4S9By(7;Ttc3(=vJ%98ZtO0h6rlPQxUCrLc}(`8R7$`sB{uf>3)}#0)o6GZm$Y z1uZprn&2B#osnKYpqlx)DMfw4^Vv+$Y}kj@Xl>D^_g*%MznLBGE;t{H1=K5D!+uwu zIYv2aSSG$^6R+PDsAAGL8dm*!P<{f@{*1Y+?Ej}Rf2l=$sh=G|_h~dayV}zk=6m0Q z^QOWd-j!nQl;{Z;i<^&ft#P84`HIUk8wH7Um zq4H&Z5RB&>*6n;yad|GDG++P7=gZfQ6UFR`WBciNYgCpnzopBNGdPJ&$*bjUsA`P$ z$;S;b14E04thyjxg8^rimlA$<&XT5@NEIenl6Z(5&5FIW2!a}i`*?{1S;sD#GT*bu zy*2O_k|wNDMa?vFF!35`&WGq`{kS;L@<1Jzf)d`~qPrU0sUN0VwwE{9d)>F%Y@c4L5i^OSW|FfZ@;!)S<2}U-3>eyN~i>oj}Snz|C^;5pZ5db}N zJAdn5UH4ufME(XmEKNh_B<3b{TVk_na-m%}TL4;)->Tk8WC^S`CsKml-ldK6NREFR z$(;-Ru-|YPBlN8m^XvD#F0ll0>AbmLDuq>TE7x~!3`n=Q56a0T0>W>yK*mKMCR`d8k+LqZ_Ik>bP(EH8>^J{~&PrX6h4v<*f!${- z<8mE*@CD>mX|nH*T&DnckC!PXc#(l+8u~=_#nc(}%6g8x@U8 zc4<|_l5%uoN2V)0 z1Wy%$U3c2HG_sz?#59NmSB$gyREomE<1;dMfgF-^kD;U~Jd%I%rsa*3=@t*~F`#~g zh~KSDEw3Y}d;3h5YYXuNRRWP(95B!?v%xs9Fq8?X+0!WK=s!<|{NqFC#uyn=O9(Jt zof3qM0?_H%pZ>mdI*&LY*esuNcoL%8vd7=g^^dW@zLr%K*=kI0{(c3+<4A0#8fpH_ z&9d~cM|Cr)<%!hdh7rp!k~L0Z!%GH$&B>yTVQ*jHoO*tG^NZ>|WTh^8CGFkq+lG~= zregq8IS>CzqOY65a0C{txq7^|?xXvolkxLv&k(2`gBf0r<#UGLWWz)15b{Z|i^1)* zfM-H=%0y)&t2GB?bc_vXW*W`51i?l^tYBe9-=We$T9l^ELhavc&Mr67K^Cxs!v~95 zE)hoD^RK(7R^OW@O+ZPI!mT0Srez*C4*N6=UoJ|1Ww%oOd=^U;tz!Ced2Sddw%1Sy zOeqo7RL%`;z(c5&U+G4+CB&?d7+$9^``?ljNG$Re^p2&0mr*zAL9Fi*K<{8%c~>uA zj1bpFg4*+~&nhI3w>K}~U9nq*zlJqhCkry&Q(ku*elT%u13}vu5Jt*@%LNHd7Ku$9 z{)ZR*9g907nbxTkC`l?x7#`13#T%1_r^YYi&_&`Ng1osBC`UE|&;;N+FZq)ZuU5M)m!r757Z(B>xg zi$FzY91D}hm^~KMQV5}+e0j${xX+ev>Jl_6fm~FA)&8n&+Mt-W+g1eT$?SU*=*1ey z>mGMI_5vJU!#X_Hi;ktD8>5v{U*An~#Y@#w!s{1+$zM07OW|GN8Tu=CGDCo81XS^G z^(7`F$N=)3^(j(C_D%DEO=aWrraoyz|DQCK_S{Bx!_@rzOp@8#7sx>cSidRM%$l!B zbpB)AA2!MF!Ej^Q2G`;Fy44i%%sLo46TRc=GfxXY69>u!SQieRZ0R7kUc+wVT_SL6 zagU0(bExs)t&=eZ5l?_juCA9PEBWTM*a*7Qq<3lU?BCdOE(grYMxCBPt?|KE2WoVS zCf}`DC1IOl3=y_RobN`u~8*T%6|c6#?ka85t~D&ny-^ z0)o#H0Rz_kmb%=`Z1OA+X$UzTLf|$-RSy{f(K@cC@mQAP(lg ze^(fsc@Q{oMhE1#YE z08sTehnm>D7l|%*i6`vh58cn;a+enBzd8Pv&iP+D;w>0NECZ$d3yGfk$#63P5uH~! zUA=hl)U>7?GCAX=0l=E3hlhE**-C14gAz2w$*_H*(4A)p09En$ma6V~976_=tpf69 zc?T{9+edFCiB?6`F zUQ#tzHLyFTbkWqV^}D>KMq2yAPE7Px>O?Crp&C}O`bm6!L5?;q#5@yI$jXmCN90TZ zS>f6bUMS14(@(I+KDR4Ri>YcP6BSNqlZtE{zbgU{oDDovr?0j?I> zlU~5d>xPh(Z$4XYn9#Ot;N6tzqvce1>MW4I$GtatLpyM;I;F|qDrVciUKCz`3B>7C z3UQRtDFA8bS??_D=GRS%)?H-PG!K_LLWQB0bg}ax2X8t9?;sIaFtL|+K?9`8KYl|9 z%ykXgalx290ioj3g>z{t2O({<(elOZA%W#hUTzRh$ZA{9Necc~XUv&8V(DPWfI z-xlery+?sTDw#xg;>b+N`r!_kSJAwEYk{gdQo#gPbah~P`nFUQTFQv{F%tZ~<4+Ad zmJw*QY+`T0TptIjPukK{6J4PZ7VnF81KxbR2%h9C!-3A^Zq;v?LEOeZA#&eleb{B| zPKtTaoj#WmU2B)<{A|hpfy47i)wbc>7?$Wu(%2=U69Y{w9WT;h(z zOC!8L_LMJCIJhryS03z>01Ad}?Q@vcec{cX1Wd4sw;s7eMf=FIH^=+Tu3DxfDxN|$ z-oo-+3Y(`-c0G`bT(Ff8|4pV>=+qwkN%Ld<{#-b7Y~j^`Gqne+iz+Irlf0tBGeFcm zfVM)Ptm2zz0J(brNyQa;1&QZ%cELLWJs0PY-{#wEmm{2d!%)E$+>y%>fZm#Uh*L8~ z7(`y3=U0EHt91i@S3d{n@DAtY^{$h-u2Z^RVX8J@MLLy%AZ6Z1 z$u@9pI5*P4v9);ZsNkc%#oPEe$u;^qmm6X{ao7dNAH# z(*`(sl5dscIFk#qSN2eziq)Oi$IeIBXten%#NN3nBekeuK4G(pnOR`W}4!o&jBUH1pp2j2y(HJ?1cxJBO}okS;Q#!ykGd=)nZbtG%0vu0SPa zNW$O{4;pvjWRO(KR_b13CR~ZGQ7JF=gPCbyuc&0BQfF!c?QJS3&X1o?GBp7uIRs!$ zw%U#b2JTJ*tT~$BgWA(SY(MI??can9kb{vg&+#3}GC%+p|J~HpZ!4)Q^-7X3selhM zNRgQOVMgY57O#eQP(c)ub%`jUZWtTZ-4n7Se-rx%+Q0=~<-eJ#=?CQW0&<+DJ7}Rz z<#&SLhhdlSin?LjMJ5jCF4vd?1mM(aI)D*sS<=0A86tS|a8Sqo_Hsl3xrKc>@*25i z9LQ7!QC4W!DG}Xczp5W5P9e+}d@4CbU$rerMi%@{@dn?aiDhg@$NzJqdWuMjv8I`PzcWHU<7= z-!X8#WECl^GIe}LT7`Mgs02vmxog3iBM*X<-GPy}N8&tZVm67b%wSyy5}Yejz5DE~ zlIdkjGIU+9Jw763xz>=F*1!BoEwWl$QeDInul4c(O|`Yqy_AgRKwD%%yhMROk<=wdWUsv|r#7pUnQ zv;@!xCWC}hfLBbqPLJv75CA%LkIkUgV5?UCWRPIWR!c>#e2%s&T}zsA%TL}F!rVsO z&ngFZrF+6VzqvGOS!sPXgs)bnvlfYf{@#nwY(mB<0E6OJ*Inw&&x7Mf?5R@JT(V&k z!N{L-FlfgYhlps1FcP8$+b;q&n97L8fkZQ{&#Imjt@uLgh7VJ2e=pgHGRO1VCDuOs z6x@XVZ{f(|X!KU}G1KZ8DiU3I5^~IxEY!M=1P0;$HgODcP}6JSd)5^X>dM;k+lIF20DM$?hG*fObGFhp{$VnC{Q@U(lMG*CcKY1Y3*sYf%bB_JKvi~oXQ%&2Yx z-l_qy80(V}z2Z@b%iu%{{{E zf4B>B5o;g zr1V^){KDU*Z`$+BWSU8T)4$%b@FxRO!=IH>k314r+Qs0uG$-C?x6a6ZA7Oqh^8(?& z8<}U(hZ~@#!dtBN%Kz!k9J4eA?-P(x_S`_J7zPs!Fl;x%oknS-(poNyL{YHUgfm{Y zK)m;H##*8wfzd5h+ILReP<(t@<#|lYSegYVPUS%nu(Vg#Y9Mr`#%HZ7jrJA+K7#OLnqji_&vaot!dH4eW{HV4q)MWy z9LkT#@5}q{a!oJ11F@Ameq^tN5o_L$C%jbbiun`=^MyTT2G%}0bKGeeb{FV+Qw1wK z#E2QxBAruG5e{3$B*yn=RA7?@GTY%QQ=wiLO9=Z9FG0?5n9SZEQMmCF;?xH`DFKWP zY1fkMJohT+{5@RC{Kpl8=+&2`9EZwi7G4Ei97hV-1u44k8m)hR1K=-9jEN2l8OnF_*NH{?-ad3B&9n1J>uUl>?+xbx~X>Pz)3$wuiM^m?ql(^DftUX;V)zEQ;cI_RJ0F!n&cN|}D-Q5~AFO$)j$?%m{UvId= z5T?CXO01=I=97}FX-8v>hG)I>Gmi2%L|jz3v6c1H#-}FId1gr^G?@;v@&klyaWBG1 zWXlQnvevh-PQ%Cum<6;`u##}8F0`H8MWtAFO!eqbu?rY+pOaq6Ibo@DAPu$6Fv>+R zpX zWipI+emsl>lZ(}@tycisD8Z&nbz|$WYC1UTO#Fp_mO=>zK>~leiXC6TziMu6QIhvK zBC3^cvb4;PM>&-rB~$)+H51QF_DY*?6dsBxzwm?|>-Tqv1a=s?AyGOP<|}O4nSHO{ zVi@e9g;4+zxMAtyQ{Cz8BFvAt)fQUAR+%)}WIAlv%CR}#7%E&KLgR(0wK9I?X5gPE zTJW&!EPrKmkx~$`<3NdgzZAJSpxD}maU$Wa7KMLCqheo7C##$)-nC;AAa0vj>^dSM zsM?K5*{?uJ(L`D#YnF8V_;HG$GaiGK>XM*v7#XVofANRGQeMYr^-Yf!m!VQsY@Ucz4!xd)b=!? z1@%;Tm6W8eoNbS2Nz_DAEG?<99qk3qLz(dyN!dtKA}zY946i4!+Z;xB9%)&V(qh4) znxPcZrCf|}{N}r`gdQ!j9X!$QA&eEIsw!p)zh_#0r$QQ9g*An%n^xI{YecK)IYVQ$ zibu*fPbm8<`jy{fnPQwM5xmBy8H}n9)vfW`flr)Y>M09Y;XV-@<&>?msj*+0DUx|) zjyoS`-ix6}kd55%0nlGsgp%N(K+$pxq9V#RlGr_-Zkb(ojA;^S@}ea z16;``3jFJF^*V`h3@OBQQwc&+@L8<57)33fpu)nRw;1X3^04S|`}c_g-N`?U1>W{H z%QaK}%;cO?+<2@t%b6T{LZhe!xmA41`*Agl00$2zs*qC!gNY2(0dbG&C0Ehpv6C$) zx}@Y9s2@$nr>ne`eK$fOve*Fmf%}*Af+-YFt|5wxi1e!DNpvMmg3#-V@Fl!UjGbt0 z4;%$0hKSKbP3jHc;VOQg^k0TizW5YXdZrMi^pB&mK z3w=Dqhrggjde{B*VzS}sf~;%*GfKxZZJQ^|O!LN&kA2r-7a*MQF zN=s}214n{rvCo?Q@yqMDljx2oQquNxy>+<1Xz^tQhWkE84O3QGj5=e+L=0i=y>a6U z^}uu^XI2m8$5E$_Q_|XFnZY!}vuW%d47%C|{Q29>AD$ThgPEdKuIf>{%$_!+43mw~ zkDVtG+XwfIP>05R1gjjQktloKynq1299o89lX&58f5Kc91)w+*)(Q!wz>vloZzA2q zc!tdg!0+7H!@whXe1hRCKS_l#%bAZkNRFkXvM7X|sO)hPgjF3`cY{%lAE%J+7lFij z&n?Rfxg4_O=g|qp!nDG)@fY|V7C>O*4=JCx^~(x8Fpj@4UVkUI8XZ8y_PdfLjEi)K zF+)!gS0*5kQipE91_%C1C%ZU_@}t1Ik@>O6TsbSF2&cp%Hru`Hr`-s zu)fdNYVJG4h%)&30#ghpMP214v_iICiV#C+vfMj}f#3JR|=`-St61On9jTdoc zm;xB>6n`vb<1tqvm}xRRe+6M)=#W{AMbgKt=EY$@0#mfY zB<1e(ZH0cX*9I0vTqh9Pfy?Gz365neD!gD$mn;(^lvQX$^kxCA*t83vRd8h={BBmR%8vO=&3RtRbrUJ12xAl+| zPrBOSt*`ZJGkDd;;u0G}KMR+e(o&c61W7`PVHdHZ%fGEZ#oBQm+F3ug+bT8vv(C0_ zDzG_hmBjDH_PG=0S5T5Q+G&t7;Jf-^z?*nV$J;cId*4`kT?ca{RTqh4b1Rwue&@AR z1-YbTJq-WU$pDoz774FNIpi)tnScY*dB1tATeFR@W|7)<^W_WgDPd1pc(zxw+H>je z7RVXd$@!hMtj~K^LqPzA} zwD@SceCSzl@#7V=_N^yl5dk3IX?;pCsmk+5VcKhBrIRUJQw+oQIzg*|jdO2m><)!q zHW}g`kC4nU%3>FqEft%rd+{#=+gNrO$u378$e*JGyuvL$HPdeF33;UAA*~G^KNHMg z-y9^qA$fHh@JYVabS%WEsduBs7j#Ugj$PiF&K{%8cF#L<2M`seEQismN%=mCA2!vw z5YHPJy=n;2WnYbV^wImq@v4?dJU3Ikf%HBbSmgQ^orjV7ryWZP)cAo0yZ6oS;-{+zHclxw-KiGO{`NgT9OKuICNTEEwI-pl#dog_(v(8KK7%vGUcK0%k zn{zdWZ|>>t(n^eVlMxJ8XEfH>YFv5PF@Gx+@0~wnEU?|N4yHygpoe`+k_el@baVN% zWvo%wCd+lEOF^{l)BtxybK=`Dvz=d@)*d!xV<%BHtqQ=7{!iY?dj9rp!NL}4n z6m~)7J(b?cDZYpDhiXiEC>23(x&#(*nlwtz!d=9AywWtNB|2=Xgsteq4*kTgXsUFo z_O0u9VuuQRjDM`RgqdC)mhO#t>=Bv`GY~O6UB`(@>h&o7$T~?MvJV7}Oi8r%DfaMP zT`VhR`F5~HrcKg++kg4drSZUv|4PJrqiRk7l`(X&Rs;6cF0KYMkZG)fV1n!!7f?(j8AG1KzHDaDhjZMMd# zJ+E(1_!WKPOj+7oR`y79p+g0`%d zPTw)FI`l?G5(oG`Yr+0!xj?lbv*-S*!&+oWFYfpTITILKH z5>95YV!YcfLOWgBbE@a~P|3YR5lOcmO63uSD6PfVnvC_}lk-idH`FKAY<(K0?$7cg z7El3WIin{L8%}I7M(ri>MxQ#8n*%F5PurkpCbk$QVm4Ysl>!nJ*`0nc!&^G$fEk3!aB41P# z`L=QX>5=zHO~;u5+Z#0`)oc(o>gza;qQ;`T=IfP7K=Yrp@{112v_|LE;Z@xOVuY`5 zePaQ)|3!zM^r7pIBq5Dd_sy4hfDX@^JUPj+38D}#2XY3%6gD~W`{9fG45@Wg=JEyH zK&d67mg}#xoxiaLv$s&Vq(a9JL}DLm`Fkv(i|bx=QPR3+j}G;zWaW2nmy?_gm#UUL zkmDH#l=E<%J|ifhMqzSLC z_iI1VXz=04Rn-tQ;H;tJ?3m3JzRM?a>@={V3Tf~Y^Br`16K13=aXcJ*oaEvCuD%oS z!hZR}`$YQq2&dve++>EqJ|BDiT1#xwO-4YB+`Cqddb`s(-ScMk>E!Xs>JLQ8my_?d zXmdf+rPTCk#)z~#c=k#GozM)?2zmg`mV`;d);8SuR(&p;CG*>(F z{=HH0k_$3>s0c38l(#Dmn5ZvwftfC0%+?>*m`^cV7I+;irMM)W{Fon`C-dd=Ias1y z(bs41n2>0B55lEB5Pqp=!1#VHiXL`4fl=|T?QMp<;p*h_=V$p@n}kuS9=GtTXko6^ z{@i=)}kJ4~v}98hwoJGuN6i%x@0w0{Vhm6zMq0@ws(sa)5KwbAhxv+5B|vupa~ zM0(xl?MeK>Yxdnii9dbf6DPXsLJq!OKHO|s*`0y8kv2G=lLqD(9D(%W&)|07Y zV|?X^cEO6koEL2~-H}|g?Tvn%yO*8LvHvkJoNwd*ENLo<94@HL-#Ox|c8NXgRlsZS z1fXcwG$wu0yso-@8@>$eIEg_~Kc)>1-?qAWjenekyT{Aeg$2@%cvMVvxMre_VYju! z|KqO~;Bm!dN6|T1wW8P|o&H}l{de?42k-ulZNUh6$M^YNn4JIP%IAd+af`DNe-3vW zb;xb~`?R`0X%|OcVg@Udx#+_oHgWMOlh*veEqfI^ympI5`2hOqO`zDWOlM5^+jj*p zvsm@i^6`$dB03QXiJ80Q0_j5qk^i3E4ry;sn!C^U+M0*hskdo<$-|J?pZ{d+l77-_ zs7%^^7#p}Mc{t#lfMP~I9n%=}02UZoExI5hhl+T5`g|JMdG4*nwOv?F1VFxQ7*~g(dIlzIoyDM*wl*r7 zmblRVADUEm8<#OtcD^qh*iiACD-9n4S}i@P^?WCNrVYhl&8zSy@iMX7|D?hCr(a+O zK^ycEVst=s8MYSqF2j#)(LID%?)!g;mgC25^aM`-sUS;TR<~R*PlEO@O-`Ej)|5_A z|J@@`lU(+p6|=hc_qP8Kg*{pW0Y%!Yx4r$ENG) zYlfI!iHnivDkl{CI~*>oTaVN$K>8kJz7J)MT}8soJ#gO|qbUiK5xE~pvEKUbt>tbz z3D}+}trl;u6 zYeIYdll!Zr2t+>SW^nU=>S|uzzFb$dKGRZHxxQFEX#SZ6+i~p#dFUg9rT z{*!Rc?*9QnTu;6jpXIGVzaeM{RLicN25BqP%b93D{nNULqN|a__}AlTNLO|LAn{uL zr|Ti}KhVqw=L%FK!ekijq<yP4;6H5bVP4qict|!5^&@F;Wn{rNK;I!^Ez(#vQ)55N!{cUTf zOj}0iu`Llgw1Y6w&6%HZ*bo0Rh?P(8ws%tWp9P%R_P&Hpm3AChUU293=fH#ZsM23! zsGNQi-BlnecK3f;?+V89 z=ivOJ6Q9ceG`$tPhjZr^(EWghaM-tx8#6V84w^7@hb6`ddoa+Uzb^l9FMb(7{-=~Z z1;BWdU7zE=)-8|D@Qt8}6HJj2{YL`Q`;Ua>!2h33{O^pFK?^<1{Ii0shWDY}DD9Wq zstB^Z`-FD0Wy+=h6lnLq&U_-;h)Wd`&ilW{7ZU&Loll?t!wJ&=e^ewXHwF?GXgB`T zP5x)K5A%P-lt(71|3etR=#6Un|Hpr8nE7TYpu^4TjDr+OA1@Quu!BY@aob6rV-<*o znKV?C|LC8D5Bam%Lo{^%DTyyYJbCW7bnGTS1yOD9a=yJ1^~S^d&&nZ{d8YyTu62+h zgXv+5?-Z%`%!fRshmgx2Itib4xc?k?F4fNN&UO~)GmYt)*#q5VE(nTjP$al@ZM2>I za?^8}Z1>P|r!V5_Go+h-T`QAz`q$OoU(tmY1icIi%s(|nJ*eGt^8r%K-V_#P0nm%; z%rdJuCp5Q-M<>Ubj76ArwK9u}#)6qaJU#HP$|m4~l=slX-0rQ+!`-*LtAb0jY$MY@ zX7_Xt+BZENe;2+xKj@3}T!$<_gp7o&&XGjtq_uAEW)g9B@%CUnYkoWukWM_t|2#&O z7x}!kOQ47TN7Ghf)L(4e3=#%o;#9*0bbx!Rozy2MaFjBAWWqn|p=XiKbxTQ>VQQU_8?gu6!_s8dL?g|%QlNaTNm*h%Y zb+8a1jG$Q`&Y-)4yM9p&O}}!Tyf}sAW-@6w zC8BV;*2bQ#k8Bb!*ahOeu+OagZg+IH`=YEc;Q{Zr_N~sX42Ajq?t|pq{lml8GrNbI z@2w9zlQmxsI`2Xnt7}~T${auRZ1y~;$GDmVRh8CN-hO}A`z2uK6vZMR7k@tfma_a4 z3ikBV*M`!-I8~4Mw^tdNM5-B7A3S38C^9oMsHuqhzTIDZKjr4(oz~1)(}$_c3gPkc zs!{G_Rzy?m5|2&~+=qYt@#E`FoazZUBVCVzXjGGuh%vuNKiw$ROse#&%(60GIx(%b zo|mS@P);&cdS=ix|3i_r%qQ+QSLxfCI*T?1cR9jLQh_IbZT{XVTfa0c1ZYc$WI%fi z^0PW>Ir(LD^(3CPwpl9d=&P!#z4<$UM?u2N56CP6z|2H}J(l(^?p5#XACBBTZ>aS< z&dNV^eLY2`8m|~-%6x!}xbB7Cp0>}Il1Ul`D%~BI$&a1KY-Mg&oS%=!MQ`gZo-U7! zJ$z%h^K_4hPS1Qdt&O*C9XG~37I#hZc~s^Xc{$GaUrQ+Tu38s+lsN>n;oR!m8}sMm z_^RW$A=6KVintiVFx}T-Tw^zfhz6W_M7|l zrrhQeW;q+BP5IE!U;j_{toIiSwVV^5RhF>Fm{2_;wVX23jO$mZxpSSqnFd(tdH<=T zl7pk$N%8Ic%=xX3f3Ulti;;tzTrh2}yuZuYRX6ANo9r5?K=N_5m`tKNj)JS&lHzAQ zPCt8YH`i}bu=9yI-f{j>e(v#UwT-^u(-jLlkr%!x-Qy8zzvA%YaJTd*GBVeRo>%o6 zY%jABj`MO2GfZ(a2za>#gK=JFj*as(Y3a>>|6&RWVB%X%IuCLk_GJn@k+%7pGXwen z_sW+3iJD(WVMZyk{r%K%i;}v{ZT>CHVfyzOI^y{Gc-uL=&9oIQxMX}~H+tUvHIs=Q zIpXkYVaX_3HOMq8G!x~K@#GNh`&cTXTWF-MlQhoFrI~Tb&)31>$#k78J2(*;`S4qp zBIARH+8af-OFyBJ=i^Lo3{7>k4MqFEn3x*ER(kvt9A#b3LQ96)DgW954%SQKbhN?u zKUw~=*^^vm0A^9AtbNSwL{B4_fdq&MnuADYvWVaqXqs%M_yzhHIB%!5%+euJv^RT0Q4Bc})6Nw*tLurF_-!_Cc4;Pq; zPE5UQv~oLnuM_eJORDYmfhjPA$!^a7j${*Bu&vY9+>uDNr& z%xSs{?&-Pl{{DdSHLHF1@-n}>w!7xykLfqlZyo;!qd;808mb#Z5^_VL^7V~jF;NK| zVcq|WrOG@s?TQZ8!EkM3OV}Tn+oYJ@6bd$m{BuIVa5&JQsYJ61mAaZ)<{4HJQ+_Pi zZ1SkNR_wY`LQ$YzqfcX-%uY!{<3MD3rihw#$J(s@>TeEIg#uwUf5jTb^{ATYNo&=eMx)F)Lp&)*zYS}rak*x+wyY#%#<%^H;&!O?EEF{FE0 zu~Yej=ELh1rMiIIMFd?xDjKY)s@nLuI#3gA&_Y0Spen2Zk%mUy8$^?$T(LzJtn+LQ zH28xx{^pjdT3sRPJ*Q-t|nicR<%Y6=Amrx0qa4ORv%Ud>_=GLRM#tAoNJ zVS&VrW{bL+kn(dlGTK=xp3Mn1ONeTztM=Dci2sRrNMoEq+OP)Wgxm)CS4CajJbz=o z=xw#X$X^lG3{E)>O}WHp)weW<{h>g(BG_Q?r=9y3IzJCkmpMX7R5wgJ|mii?h`2!x~$gLXA~{K((l1b3iQb-{&UH2K0(#VwM>+Ds)oO zEcaDbGzT@Zj6h_HOOLWfU}_BcgY^=%t91_-)G?VnR2Qrd>c~;Z(Z|qJmj>k~YC^$= zSpjj{{`x?us6b_1_hWt$}p{7RNO2ouM0@|9D zwdy+ZSWAUA%D*$}V6!GLk*s3Ef6&dU#)jr_Fsz_rMT0-kEbI+RgsTXJKc@o?jn?Gx zb8ob2q{e?;$`)Z*=qR?bPq`a|G1~nNjsB`&sH&yDIV>ioiOc+{E-EqR6}4^U2v9C7^S8aRmx#TyuKEIqKu?6plGQJ80!#CflzZ}L&QS`LxC!J ziT;n~ra+bOEZ9(`{9#3%o|QER9&6G0SzS?IG0OtXYAb}4fS6-YbFs}5bpp*Tb)VcYQ(G}F(TS9#Tis8Y@;zp^PCmRnFs;aNZa^d zVvGS219i;-e`QPfb5>B%py`~EC#alT`PRxncupYDV2ObZ)oMnT)fh|U5)7fCiT|^O zDs4F=Fjo}b0GBn9lse)AEf_oB2+;)K<5uH28c1Y0ZWRGLyTN0DJzdW!^l-4j>N(=fZHfZ~gVq4P8xSko8^$Q?ST zGz|Hlc%|$2zhjy9_v&Dkh-zMAOUP;i?fGN+r5e8&w#Gz#DWN*3nR0$!l-Y=v(Sb=t zl^(}Gmz@|71pE~(;l}!kaIi|DeuKlBwW3>zr>i+v&E5?H zBhJ3UUlkIEt^%s&ZCXSk+I7XOieN)?I2!vk7$`BIl8L}9ZM{N=qwS-LhFzK!GEqEI zUrB6r9oYu(`1&Jf}hnPqh`HYW45@ z{3xgGZw)lGXeu$Qu{98Cke7>wD+4scS#wKJ^0K-L6->g7(E`!eJ1RqsEn*;z4R!Mj zbXwKe64KM~==aXiH8%=TgaXaMYArAZ<(8ldIgxcMZOufKwkZ^>uL#ZaSGF_<6*7!~ z9yOwFkV<4x?^Urxsf7$v)!0x|7pzj=R}XiZoV4{nJs5^9AikwRc?ClT+UlEjLxTyO zn#~U&(WbA~fOTBa9PM#5x&oT#`;Q2wu_Y`V(vrfe#-`63x2RK%U=zc%4HYz35Sm*m zXA2zDLrh5gSSX+^m#73J&`?nqw#39}_b13Of3WsPe^zr}e|}!RKM?je2Oj%Baf|=K zCt8*cG=iI3Lai!|*4@1^o%Zw2FOYcA7-|U2YxdU!0?k^gXezN50##yCx}r7f?A2Cp6@C8&jaooO zyJ=~TT1E>tRJEvOe)X}bp+V=H@&F30eclraKbo2X70UTr@A<#N`GNlWU~^TVuCAgX z(Ad%({c9*78m_M%XwbPXAR)qx$W@IERl4I*YOSkhy@Y@5tAPY6eI3vAqwT2(Hv4M> zb&BtmVx_vU6$jNs+q>XOp{=GdR3E6;JXSOgZU|Hbnw!PN7z>WUu-`gpexbHd7&Mro z$L1)iw7gRJ#m4qH&613@G&Kc6S~@UCETy8^_@1M_6I2IVgVik>Qm)W5I;Ch)z(Eh5 zniJHtq`s+co}pky$p6pUuQH#=;9{xToRnwMmc8`XD!;0KPg9O8`rDfLZ-WvE&4z1i ztc#@E3Q}mnf@ zpeCr&zo-$d6y*mnAqn&F^fp&RLpBucp^f0C?MHQRoMLOsi8V!oh#bm zRnF7neRU+%s`WyVi;SyQ0>gn&O(3K%Z)v%IDA3&0*w7plV^AMBWhO21l>Py#y?sVv zNR_`JFK?jypF(+gNI|!NKh)S9&?cqpvi>oy+M1FmLyvqw)?BUn(x$I1M!sjYTb2_G zw0`XTJcyC$R$3M|ji;>X+Q0wyqWO4ZeoDgsuKvTU|NFnA@K68Wf35$?A2hh2prC#I z&)~d)|6l#j{}ccFe?$Er|M{i1#mLU*RJEVA*3V>p(=89z=p}`%mcK0obn73G6-l;mqiWS}uV|R3+Vgu1KdKt?JH(l)-ukx2 z8r4AG7b%}oz4O%@+O9-Bc*A^<0iCL(N^48+RJN}*n^zC22J#-mwQ9ZM?X?xnT9bE| zR&b?tbJy>m2Kc znGc+^&QW#d)+VWXYMTX}TGwp7s8cn()*iQ|SmmYqRcjJcou*Css8-Tud8cX!jRjgm zXUx~yIII6(1L#yPUTfPd(ovn5ty8ish#GiR6sK*Q09{(F(7G18v_&qh2eEx#V~f^K z7%Q}v!A@0#q%{k6%n4Qpv<|>-y&y?z@vG0s4uJLsq2KNU^qM6~TDx7ZS*WBn$&HIH zSJL|1M(DOr)wERgiM3TXYF%M9rrN{N;o>>FvHA~U7R;>D?JEO#D-)oA~ zehknSY|wg_y0jHgty?KpYHdfgp|1nF_0l!1!Kg2?45)Pqb*jZct)*x5kLi{livgW# zy-;hG>1b&Z&N(I;lscwGQR=8PDRqPau}W(%sc3R6mKT{(Uh5@kPQkHJR}{w%bL`#G zWABfQeL^{fYOP^nH1!uP)Zfux?F3^?r%NnX$yDn&h}Bx_K^z8XB{90v{rc9*mD8hdKsS9^iCgpW%SrLb>B5!=7A`ZJsy)}Pl_>|C!?KNd2%9V3Iv;0zPv(O=`2vcj2;ER-EYCQ|=wT*MM)&kl~Bw=u z(Z<_irT{v1P!lslXKc)DK(}6ciX78q;9`zh1n7&Dp(4jD*S$f^CXt0!l8PL&Rg*=` zUaKr(_D9Jg=D5j*mEm-LS|a=8h?gSex#}Vq?Wa$v+YVnnsF2kzTTzmWy{nL?UOJ21!J`w}A+;SK z>5y*lu0wH@3Uw$mRj9)xgZvKDbpkt71NtJRw#Xf3o8v5!ltwGNMeeXn7gC3HrXF_K z*q-+twzcDZheNu+I-J#%qQeDCI?&-#`@EvV&1m2m=Q7BNONj>Iap{(U;)+b7;znCC zF^-#{Gc0a~IZ$;Jf8y#){=_W=#6sk_Wq`g&xi50u3I!7y>yhI&TVp}ojz}1ZI{@g` z%Yc#Nj+yT}2k2CVzsPZybS}o-h>~;MZ3R9;$Q>QVa~)$N&vi`HpX=z?Q%dfb2^ecF zAx7?)t53G$SaXmGQIqXB#hh%%TJx15bIke1YZe1KRmm}ON8v`K+7!9t8Xc;1+%BF% zD?&!@D455%MN*x50gD|^h^EQUX9R*PG~V&NLFW}fw_d1>-0`|G?tRU**Efo0$4ksN zN|%x2;{}Uq1851j3rtTHUlKLz_%Y_JQmn*WdP9yk5P!TG+v4{}Ni_bjXoFTVfgFEEH-q>q5hAZ!H7WiMpi_M# zK&Dxz;HoqI8|I4cT=n0(5CBn8=+JHmt{1;X_YmB0;eoI;LFU@fh@3Fq0<;q* zS-G1qQ}{2#HUYZzC0yi$R-H`=OHHtvu)+YV32RNTny^uye8RQ}R!!JxJiR}1;~~Hp zODQ;Vf)V5sE*pGHxMn5vmL(%d;0Q-M$7(*U0l9Osp=F)Zqn1QEXImcbT%s&Pm60QN z9;d5Z=V_W4H4oi+rk06yZqm8dIUKb%s-rp_z$iFV##(y_UnUUlBCPqXu( zDCu@SD#)i*tf;dDzM$M9sHV9^&`{@V5vS4lwvoGZ7Jy@vtRpA7^r;fSXV;6@xM3;Dz=q}dPOYV|k=u(%$ zC`NQCF&WWif*BLLOpPM4izK+_ha2QBVU-}YNUGdr8K9%KLeNf^HCo8-vN56|T{i1% z=(014o;`p#2)WCV2*Jm!YS-m7V27x(eB>^d0o{6WK5`cZ#3JORIKUW7!8meKg2l5X zWgCbpsaR~br8$h8R3>+*0)FHqL-CWQ8rqU%P3)3tOgNbo)|EDCp~26jCGE1uq!p3u zF=?~O(xjax9s9%vRlOQ=(jg<2N;(;hSCYb}b+%R(2tAM`9_5|dvw*cK?!=)#?bV`zw zbeNx<+FmP?t@tl_s3DEyv8GlePXu(T546b1W}25=V_{!%gUP<+1qMJ*Hm9GwvYj#{ zuZ<`}@(xoOlJ}XfKWtHkMU(~EB`MO#I(6>k+C*N#8!)`Xq47;VY zOJcfZwM$~U88N@xWI&e&%aOZHQ_mSCp2*#5O|rW!G|282vHEVS06oUHNaSwj!fv-6 zQOeY9kEu-EjsoIfMfl zu$0Uw7nV{S`L!82Wt=&wl<5Y+DK*g+n9`s-hLpwT>zC;~OIc+;wKi&+DI3jcrtC5w z+i%`|*kaWw$1RR3<(xHyrd+ikmXy1C_SM}HHL31CBLH?!jjRlI&oJ)JGv3<0DEhfl z-J5iuXbvz1FvhZx1i8DB-*;~{q~3i&BqDWRVh+A45{tU8)1}dUi|N?AZ?}5>?t9Ed zj_yayAx^f#%iYf!UsxeXX&$zPDW-v`8Ic;k2YU)-^q4jMq$f*YbJ;vr2 z6VqsAOa*wgPgX}Ru zpIwj1#<>TPTOpfw_7-&w)P;W3BC^n zn;%6^JEpTa?X+%AY3IymE&{ssjX%g~SB?3YtJi51r3^hCrZV(Q(uLO3Z<}f>(o>QYl*>i?wUd9F@>7g?z!0*ZAavl zyRDkn^MIZ=^gI#uXM-I*FGtVuT4av*^*Q<-R?q170ea0%Nyz>bi_Q9TBgWu2ztFRP zY&$OaCjnwHvcI;S!ujj;3HcW*$YQFDf0q?+W!UFR^lCgBWtJ8RkoSHAx84H;WvCkFqStj5nvIQS$i41bCzKJZkC>4v zil?@oA!kHFTSi_xhGY!YXPYrG+GsPTL=-(^wh9wr(NzXp zGqwOa)#f$i3`6D_`y>eK8`+RE4k`#eyG1NHtG#5{Lx3*(k z??v)kW4#Qp7O+FqMmgl(oAg4D-Ukfc^**e=SJgGjn~s~bosE0}SL0sP+0^@X`#0Xx zMU@%X&eSs#^=C4(KX2-pc~%X{91mz~ZbZ(UZYo7)Wi$zyb%qjVE^0?Z<}zckIdh{i zugt9xoyauS=`!~l5jFD=APzy!RE1aOrX}P|vpOU5GGL6Q0v$Q?y1stZ$7YPv$J6dJ zOrLm5T}YoyojH994bJu%8s#+ll$-Y3XR^+(J~K4;)u*~$^4X_0atk%OW{vX0Hqkn@VGy~`!AL;sbHXI?+~FmxrCPAb@_hnfpt?T|-7XiKIo&n^nn}BY8FCTJWTa@wl zO)ylaZ-ybAzB!f}mA-}MpUd0jM}5cXtmr$_vVPFFrkw`#4M&zA`Yw-@H}zd>mN)e^ zA#C61e7$cZU+;TVpL^d^#%s?4dW^ks$bByuzQ6BHT?lmfui3sW9t1@0s104 zqLBNo6C_bFN1orQv!dU=NCfY9Pz|c@ltS)z+@$@YLB~~n0oU9xpEOClZm_NYZ6nV1 zzprOMxi$sq8fJ+W<$9u=NN$oL=3FBLB({KVGBERk3|FdT)l`P z_d1|cZSO_Sy(#~eL=-vqzV1Z^xYWn_$cA6!0kPs(v~9o01EQBR2NW3(jy0GzU_#_e zUjTW)6hM!$Q5ShYWEFS7d}E>mmPC2{0V_<8KVYMph`wbQdB8SpA_ERsG-<#gleq&< zw%5J^=QJ3q?PfzBa4Vuvc@6`1<;6!}S6;HAuX!0dbMta6%*`u^no(Yvg_OKWpIiCK zo2lzS-h9Q|$d+W}yhXau^UT%iyiHNO$lGS}B5%LB#FBR;;sf(eO8%s8UPjJ4uS+EF z2B62-$c&tKTMRTGIo|;oYX#WI`946W+S-hqpJ5nKejcFL+~$m&Uu<~n{PBjc^Cw#v zlRsU5b^dGx^@CyL{3caBrR@qu&Y!Q_Nd5{_X8BPSsQDWVW6j^8C;s_+BwT6RrIGW6 z4UG*Vsr=)*7tJ@+rvp4^irZ)L^KR@^T+H!~HYYWVM2n88Yie8Wd z=+-w}BNrG8*98-F3JNBxjSWFbZwjVGKU$-$hUj%51#=D8TCiM|i>R&H$OWqbJ;nxY zXk(U%M3yWP63RuZ2d+aIKz0p)x2o|piA2fjy!OQz+b}#2CgubaV_vuAsYLhtfz=MWi4m1}t2A=z&aSiRb=j$C-$5MJTg_AamRV#LK2-qnq0kWGMwwp$o^ zkWr5}$gE5llm-}U-QJEoDAUlvL1n6xT;J-BJZP*=^&s=B)u2iZ@C}-+0lq;E(SUD| zs@763Un;I>F!G?4`Xg)fN7iZE7Y1zr#4O}NoAkeL2E@L|gSG(L^YikN2W#f>Qv_+U#fLydkK)tcs9l1#S zVvVXbE;^}urJ{3&1{YnlIO-x}%SzE5RmY~bX(JciHwYW-i-5kt1|}SwW|A~G!%EWN zTwOs2Ya9q@)!c(eTh~ekPmT%%gR712=0e9{(@_jwsvM2cFaUY*N@L_#!gU=|Bt(poT4?b_$%V33p8k^O>ZySOh%*yn&W&_B@u4n*N zoNQeQEzW7Tl2csLZn>g(QnYZ2Yfa%4FEHL&yfi{d@k*_7s6{KRFJ7-puy}{&9UBb2 zD&B3PfZ}83idyk$i+GDKv?Knyp#{Y(x2cu}$U|JZV231{;|xi$j58#|6!?$=t8Nb| ziO6Bdc&ly?F-up5)V9~{Ax*~nmPN*0X;q{l;tTT!A`jUH*deM-0`icZk*AJFJ#|K_ z-PIc>AP>1>5^-N&Os)$EiXLi<&Vz?0YRs)NAkI*8m2+sR)m;u9qjo8TmFpckMNiIT zE<>yJwY8yUG3wB{(TH=X0rG}MY>0M($Z>}4)3twC z1lbQeYUS9lQ|7&w0DY0B5y-=?MV?{nGbJADhpm!i{T(G)0AeYn{qb$^5XUUStx3-dH`UhHZXeDdfEisgA zwxpLO`y#-v$>9?WDGZ+(DSVV4Y7Ju;KHoCk;fqatI((J!iLkLw9$2qi z!0;XIc99L=t*1}JkLg?;e$u%2OoTtfHQZlcFDf2pgW%FQV}7Mc zYR8|}S_8Q>O=nGMB(j$lwbR+sGV2RUr$n@(v<47^$fY5J@1?C0z%*4VU1<3NS-M=G zQ0cm;Pm!e?b;~N<6{!O&HPKD!VO4?|GMsVgabuW^fWAlr59HD-##HW`USb4TNFPWi|eh@%qCf{l=}CMkY8i$8ba=3!~E9ktJF= zkZOg3JaU3T>&Tfpqej*$T%tEeK_1y)8s^Bw#v51Yk!s{>z!*!@6y%ZX43izX%aqf| zecJ8}dE;S&*b{~rMxKt$FlvA9$Sb-J8F?o|Hl6SRL8BA2Ji zl=T)Y$mN;Ze&h0DQH#drKm&4li6OZ1u@+xmJ~6VDts1#}M!OFwx?YlZtg)VH*5RK_qY3`SAN)>eEB)+aR=lYs1amujcJ_A+8EHUQ1u^PP8W$o4(R_Wkl}EV3g3XjpB{05p$ero(S; z`~sS1xRTF%@gSO~;nM82k9`%*BV*}@q2JC%^9WCxJMXoVh-_PcY+DReIP2hNi0n#1 zcKLx;f9HHPB6~8`hF;2kb9`Sk&o8HxKUM_LJP4ddR?cljWcNg5_Y@#o_`vVbJUyD6T_1f3k?|5TUIm(#QojX}?bnd)H-V0~#gBC&JC-9mRsphWHL`1+ z{NpaNi>#-->!&qSqU+ba5!ty3*|`6?|mk%_b-yA}X#D^4Xe&-$f*9@tl9!?yL< zW;rsKhCO>n80StwcKd;zdo^h|ny2Q{n!o&gnsDkQvh56z@0+PV5!viVwjUDNBp^GI zfhu$UxKrq8P+R$ltNV$loTbRl(Lhyay6uq5CCJX@K&Mi>Z9wz*ck1@5fB0-T7Z(CD zdXO;===F@p(&V)pkZqfRj+B&a7DkOnwod{&S=K{%?%9p(*$4DyzhB=+^8|ES_R)r( zh{ae6G@l+nEw*}Vbiw~yGAB5S9g)5@ygUNp}IrcXa!RWCQ+MRpU=hQS@~%E$%Co?@WK zVt?b6%LT}u#Xv*COHSHwG>!vg+XQ6WWFY_cb=MFpu@-3BRv0Kmryx80KsTSRep<+y zkL+9owExAo2Z^?q4TEd2|~}OEfirNpy_H+P7R@8y>G`Rt$3-lwk#QZ+uBAU4CO5A}cB})s_0-sO8?v(r+1VO7i=KXU zAUWHHZO5_glt_FUGR_2Q^^AT{9$tv-SOPTiiwRGP`fNaUZ3en>Chr3@4~wVKy_#G? z{Z(Y!4WN?Rx?cz#Gm)_dD15H8r~I0LY)b~};@NgpF1I1ub^^U}|NR?cPsOU`4DI-2 zjf7n1T4d)2pkFQ+*GV{b2-$lSX#GRm#P{fDlvCd&k6yAN;}~Qd56E^8vONyyv3YCa zg#bpjIe=EZxT;C?Ap_Z-4RqwftZg#2G-O8x(6FM-qOOk9$c}SB1ON4}JtEmn$eyi0 zzi6BjwqXe83U6$xi57hl7%0NRt;o0o=+ZyE2V{UcWJd^S>pPEhm&@JAj(tE~Hyq1D zY&(l>7l3Zw>?tnIejM3;3TW47yM8IRW+OZDfR_FBTB9)eB(m!akjt4Mu|q#vom%Fv zmjH+3R1Yp%`^;c5XnU#H5>RU1YzdC`>#7qH#g}&&D}0-zT6NHGN?TqLzSRnx0CMb_ zDkEbtvc%b!z7rO|;+%o(tOgqMo$A$MgGtElR6zC|P>o3F=leccE@N&-_U-~2{r5={ zfApi|>9d};zsX$kkR3%p7d}~DBA2(39ru8a|0cdoUg1|AhbV1;Gl-asX+Ur7tc*b{ z!V;jLmGzv0*tQhgRsaRM|FnzHcmWwN1Ksw_lXzwqDZ7A%z0yG#>D-Cz+yj)l@CS-> zvyoj*Ku>o1-b9h%c4W^kpdZd#^0sK)dewA``q#Oq3u!Zv9W_9s=6v~6xp^A0XC_eE z*Mc7+wjIE>!$3VJCn;}Tj*Mf0jyzKJoD4Kw^#S{=@NYweq+P0c6%`MCSk%gS3E6oS zXkp*O7v%B?vhz65lx6oT&^)`IeuPt2A+}w^wwpj7|Kw`3+&Tu?IUXo(bpJB(b+yRu z2B7}GdqhmnD{jRF^!BsyVqCs;68nHAPyWmIg@{ySdpgjpJzo)cYrlbPzYVlz|C#-E zWXB<7$5B9bCTWeJ*ja+?EC=e)I^qqP;Cf`-1ax87=>$>oGst*eSiK0@z7)v)wsW4` zb_E%)0}bcZ|FR?7jw0Jm$ZgY+?UfSY!pQFVK+lCA5tFc|Alv;wv;Y3s%R;jQ+2;d# zqJuwGJkdmC=M*94IY zeju3Fb{yGu3h2QV6C`4|C#Zf*w4*9sf|cj8YWqX)Jo=6TxkHh?Wk4~n{QPmboQ~|R z1p4#){pX0vB_YS80<|{(I^BkCi?MB)a3BF0lYt(7F@^La!eM`{>wuGh;6H} zZ5`0n`7^}JyV8+eSwIyZ#Qt6`=Oeoo0p&k;_EovugY4Q5^!~hgGD~+XvO58&ykL=l zBF|1_&mN%I(EEbUy<*K#>mHEg5n10UNYQVXfRWwc`BcO@C~Y((~K0s7kO3*WS1IgS-83{ROe@9=0*iFXD%ZRBaoPZCil44k_L(m%EW| z`+(lg@F<^gN%hvF7oPdK_%YuaWZ!zAZ!A2#+J<4AFG}M;MjueWIjxfr+sAXZJyrB9X(VU8)=$7pQvh6a^{~XvW zNrht{vg07ox(~C&_qY}!yOsdG4e!sCXD1>1glo^vepfE{tA0yl-?Vj?P~|}O_<-tm zI7ELug~*7-zW$atxz)%{ zwF*#(>>3L6jem|1<#w)%sJtO{is@9j1ZHtg?O9dxRleh-dY5pPcPp$*VuERjxN0ncb!8RbfHv?6V z9VNloHx$`d2K4&d^M8++gsDK^YI^XVP~%5-X9_jvkv*4ydVC+=7e<^C4F>XkuXVg! zjzjiL1R8cCb~<9)8EiWbbnpv<9~DZ^Bik+k{c*qq7QvoF_Fe?~w62e2nzo6^wkbfP z3f~hKjy?|mHmIAYs2Y}*Mm{^l`(jhKOq*+3hvefg&%_N)g=T7OnF#FvKb%K*A|;_o4O zD0jqKeA^kleL0;6{&vUd%Ty;G;Bgp$k1zH2~xaRwkJVhYf^ zFHKBEY&(r@=YUqf+f**E-l{rB(i4Y%A<)8c3E6QK$i2QaUEVlTQZS(1{|XDJbWTTh zRs!8@+1etUIf3jt4b(RNEkT0r1<3BjKu<6Es6dRg4%r?8TIap_s9n&f)^m{ELy_HO z@{bkB?$toe_qNIGd{>Zt*Mahucl&~jmWAxj1^RJwN6~qADYARCJhckhy%wmrX`ZAD z?$gNbb3l{sH2zim-9BX7K|!}^$T1l}q3cQCm3fU*%{Qs>=;9~jax=1H8_<<*?^esa z?jk!0=%fCBR?83>$gXUl7rwGU;nOWgjM$_4ds5n`2`cVnAUm^xe)a9{ z62M{{$T2>kZtnyoKlV&Q_Dlu3MO##+dkxup6X@aP6T~BVZ>w&1RD-WxMQmG+ZL5I3 z_5B}60JFtPt_AdX=ymbq_A$uz@jy=vi61U+U5e~n0rY0-K(%_*gzRbsy8rR=zsMw) zAp4dBb%^gh0x=JZfNCCFBHHD=itM}rl-Oa3@*U;KzOg{NRt^!!W}7752&nB>uZfX5 z$El{Fv@^3_esv#2b{_#+^J9EavgA9+p8Eo4XCr%?fWG+rYPHO|L+k`7@S;6d#uOFt z0DbgOKb0ESBHJ2(=Iu=Tu@JCGb=RYjXWsiVVh$Dn&3*sTzG9IVkzH3r`^E}z0^0XN zKXHbRBxFY_kbT*vjdFPz*>MeM@mo(x1aR(9%}42t^}qGW+ZvE9DKeo&$nK>;uVuVA6|wCkww(bQS$IUeiv1R{{Vq`U@{bn?ozszhl|WktpAxa+ zcx0ReH2u#@1OVC2A=@qjy&1FTTk`Bm)i9UVfBp3%@|u~*?i!#DZ>Kq7SOG=@giN@R%F`_ zplRX3@*aBvvOO6ne%$0A$ZMA%JC*|#Pe~E8b&W%IO$4erw@A`oj|bTk2XycGfCB0Z zkv&U*Hs__RlFMbto|Qn4Za7BrqI6_i7Essig#vGEdC0aRpwFDYkxaz43)!|8Xl~^% zRJuyYP8-mYyei56-19{Zfzo$;CIQ7aPPM9}?IVxJ32zT0<1wHYsy)4A3c1MkLZBsy z9R&C}QdI+F`clIkHFAS$WK1_>)(hlttweUM0V?m8ztVwA*h z;C5u(1$1Tmi=x&x2eQovH0fo>RxzeK$j)wLw-VQYX;u;B@xC|Lr z0^#1H@i9PkyY9UwQ^-QL zG!iW&(Y=>x1IpaUwEK z0V;M37FX-4RxN>P)+rL->Yl7R=~9w^igNHLkUgh?UYtKdP^9-1viB^|+J{}@-t1|} z_6(qZ;GOMqxft2L4CuQreOoZ5osb1H>W>^I0LJJ9{lb7?E-O5YfaVJz7W~I1n7m@@xPMcD^;&=8j?FqWbL>s z+6VN^sO6IGxh5dHCIhYQb>~mQsDsG1BS3eH^Uul6_f;oq>Yx13BXaXOamYa5qLmWH zFb`RR%3s&a{;GiEU6M=*&RmY{Sq1d=oBPz)lQXK>FOB&_hUlwzDzbM5Q0f~k0%d$R zkbSp-zI);C!)!Je;1rw=w0+$-U5K#~jVJy1r74JQSFr6m(5y~N*2$aCBI5<1&d+oc zf9RWl?3)a9;`jo7t60}k#Pf1`ne5dLe*u} zOq-59(ki^Rr6AkPIs+#v(gbAUjqAvNKQXAI{FL5=zB1)*!pY z?YizEyIB146lC{w5%zjy&nEfDU1X2?FdC2SO_G1qA$vpekJZRtNt=8&WS<9ULf0jI zWTuCaJ;#8${@_Me#I{Y?wiRgolgA%KY}=1*hk*WA5@!>_D+MwDox9&~NVpr1>`DUK z`JFCe&Ysbdy#PIT$?>u9U@Wo(ssS%%*N9XzksUce&cde!`nc22PCuNvj$nL#B`)WGbMM$S5 zD+0QDrER4Qb5|fH(2AeWx`o)b65G}Qo&WH)Q;2Q1vF#qvjR8jmHrj8Bjso5P#(6>F z&P9UhfCe6R-kty5Zkt5+YX@IPc!xkqgNr@)&jXd zcyqp7-a@wB1$uDNd9i={Mr8XIpzMPRtvk;nJ1+t4{M%VUpLhfrj|0W-&lXRGH`GxM z^z1j6=E%*l$j$_y5u2+dd-d)@_U;Ahy=(3S!6li3C zyn}2LnCaLl*c%Af6}}_clWmhWq9r(dl+cSkN2t%NaK;clYmA% zyjvo+@0>UYpodq#xDatDmH{>1@20Z8naIu>pv)iqK)|Rg7TJ{mwCrbvE>XceWOose z^T<8<)xBM`5@_c?Us7KOl8}9=KtFo9O5mDr0kUr~P~kte)+1&}(%tW=vF8xmE@Rs@ zpn~k(B4Nxz#$2G}TX~X1+5PHF3Hs)TIjWZ72D0lm(2##RgF>D-eGibc<)B(!U5V^m z12km9@8ylIJjvjJhOL`&QbwMQj7>mq{_&)W*INX3042Wn#}wh;U1S>ph4Lp1koO)y zwjTys^RMG_v*RMN;|fr}S6&w^<=%$u-U*cbmpQ83V=uD%0MO=`8*d}Ft-`joKzB16 zKa@ZgJ=gv7nbt^+`eR)0ybq30yB=M2#CkEcJXoe)EZ z4*mRVLeEuX`wgIkr*?_rJ2oOawgCO|qv=J$+eFogoGx6wFFx3pitI}V`odGMq#(9! z#6Ym~m?|z_3;}6~xn39SdlMb{# zMU_fmt)L#D_YMwxN7#J`*?AP`%DgEJVTWIb58-+X!a<+54GNY7q|4Rz1lf-uk?}7Z%_w zKiMKO`Flk(fzt2RRx@ZTgP*EruhH8TUIC-h7hi;g-V z#St&`$Z6aIj}~YSk7|PQO=9hrx`$S`#|Fbo zpYixhP;Z{pE(+6G8}fLC)ytO z_7th~yVFuo9bA8pv<#E8Sk~W3GGj(+eBp~BFTe`aCN+`Fbg(<^{JGsDpDX3HO8C&nIjtF!^L9Ij^QYoBDPePPBEf1~OZH zrI|F(j|^`4+s}3wH6g-Gl9tVe&lGb~ zt|q(L=IS2|rvIqoJxMU1Wi9Zy^B(m~CfVfjV2Jj+EE>)>8ls?O8ta(I{cq@nm(WaQ z3!(Fb(a7ysVheA~$_*W%3+Jp0(GHHY*;Hd8VOtjXsqLD7tMXjM%Y)))$jw`_QF)bV zDyjNi?CpMIIH{ZkF3h~))d#tr=19$oLK?q|zu6Rec8mKL&z3obhvJmLayPT;$uO}Hu2Wg#jgEn4^_bb-@p2V!u*+g ze+|Uc(D5zMJ%s@CHy(0{IZF9v4Z()o=~d_vVra>rz68NIUVS4Xq6jG<0TgSD#+ zo;$+pc!*|_Zh0R4`Qv$h8N9>F?~Ol~a|XywGBczea<=`!{}!`m|3Sg)xMtIQOpOw+ z{WoS|GGLkRl(=Z}x4-C4OZ;Z!PZv$kd>W_Ci%%j+(+r4N&-{*{QOXbQdQfjY68|%l zp>iEpfD3oPF4@~^jgt`)owBx~0n4~;OH$9^mnrbcUA4wRqK=~ho(kllT>W1rgD{QPG}@m9cS)57vjAX3!@J`CG1FWs%nm;uu1q2a4KPbpiDC0YV1N(t7( zTZG7ey)Kkct9=N)AeE2uQBnVhLU#&6^Q?bkXP^pe%v-wEsL$ju90s`{=3J z?qBq-B@|?KZ6w;}s@b?hc=4OGz{;=Dn9WY3%O6*9R*2nh2Vj@a z$SYEXdE?ogmfp$mb2WRy0sk-p-od+k_S3R0>@7yG->*)zN3|P(}RGgT#wD zZ8~iGw^-OyL=#b2)00Vq0uTQB0GhFm*e>IlufB*y-u#5T+=KF4v)=Yu-LzBoh$+eZ zz2NER#kD;JBNatq;tV--4$PeL%tSc>D{svk+sJ0D39&U^w#qVityEZ zoon3pIdP2g*vrLWb@NR-ln6B8e!EcO*C5**5%mP+PsZitlrtbo><`iu1}S|F?_z>i zfx@QT;V&C*$9+%jcS7Ffz(s~V$DngXIQ9K|h@w;6gvRRm7ul0X<6j$1arB@yuZ=N?^c>2BKuIC{Z*q9eC?5lRxE=C6H{oqYGjW-&U zHVph7Uk(XZMDOCDw-)uzDg?&J5wp+pukTS;QncLPLMr+1LR&8Eyl&69Q*F++aF9{E z*)ZG?8XsO*7RFZ7Bg`Hch|HPUx@uIW6gqut_@e*2mXWy(!h(29?7vzi19X|KPkQAC z6+CIHT=lqB|4Pw-)i&|_cpdvp9l6u@p0RHpE$Ud>OvuE{pW;$;px8~TQoyd^5>)nI>zo_gab;KJMFjpn8j|0klL2fJLE4Z@(AG@?|Dz2uWw zF2t;1zFq=6G4W3&h>B?Pxz1*-)ri^P1H&oX5hnc|g(B+QqS3=s?7IT1WCtQ^S*r;L zwUdXx;!zHZj}VI#`EjHiNwD4qj+xhFPFEip828?lr{p_zw~Nwy2jO1~rH@_L?o+lccNr#`2@#h)730I-uX zDSXZWkJK$gFVd4^*sHeS_k@BEx^?NE>rRM4*?hjd zjsm4@S5u=ja8hd`j2R^yjTBiSsD@FzghDv>yc`MiKe@@02TW#9mt& zG9FW|+u+n~=)gQQ$R+O@`b_ffj5Ia+@nxHDraDu-B6C@9!vf`m~Envk}{~ z6rV142G=H-#Qo?KPj3bn+6J{BTVr|yOr|=rVs8<8h}K4~|MHZ1_`2&wbWw!t8#UR1 z+ZAmUnBJ`lJ(K&)E51}}R9yYHRms$-1||C?Sk+kH$i}0k5guX6m-Git@Q+5AsGBoTyUq_u zblsMkVo3Csl|H!L3R9Q2@a@Ng#yGfh+l1@FfjLO|^=&N4@y$iwUSLcaK9kFWZ@gKq zQ>Y?cNyxob4XC?!3Q92_o6KyhK6Xf9JdYJup5(w>>w9G6V{0G$WW|0-NJc4FVl~aA zkEWJHY>rbqy%$7I&Qx;{st-y?NxX4%%x=_~``jg#?3YVo!F#Nbadn;1i`XpXQSq1* z)Ggx+;cqvGu4jgVke<&vH&>TvkGNeP5Z>nL<;|MwSx1y#p-{)4!O5OstHEDz%!d|` z--zi?sJThVQV1@)O|doE@xz4jMV3nYi-?71r<$0GHQjON$2Ng!>~2>t6(V^)&zb5p zN!h$M%l1!zu1t;PAjs~JL=BA@T`fO`cqWscYeP)L@!Q`P)M4j+Dv*LfU%hz^aP}WM zuZ0+{_nXp?@g1E6h50_czBxou^eDNhZa8CV zLQ`%7g>a`ldk7+qpbR)Re3`m&i`1kDfH=Z_|nTN_-A9xb+{+j`P4fQ}Qh3itS1 zQKmxk7YR*IS}b(IV^!EC+xC8YZzqaOgN6y^tDiN#hmod9O z0)HxOzSw#^ny|iquQd#gWh$|~C@s2ENc~kvk@wdfYJ+zaG5+`OPzc}_-;Ah3rQbW| zOq>Q`xh?FeGb_|}HY#o?P%foI5u-x5@Tx8iX)F|CqLz9+X0}eW@fwslty5C8cp>ZK z>U=MA+O)*=s*(nWj6I;8lsT@yabNSht{Cbk)Ts$xG+`wk^iD?2*LV&mvbZNJB?y;e zqq+j$h5xWq%(M%iC>a`k?Z)w22ke~0P(->QZu3dVmtc`NUbU6f>Y%N>2eRbOkyoDoYcl@&l*W4kVVan~qaj&eqe4ay~;O11g+nw10 zcZBM(P7Oz3G)t)*U`V^8bLYzutYfy!r)}brs9?|Sd>5>CDiE~KFH^f5|0@|qZFEuN zB6~6<1X%_ldd2J6vhWLhq_Q&~s6`(WYZ`s5l_>C2wk0~pcR(6-h&^AKaOeF4Ny|64SWun97DMWFE5Vg9^yq7 zj4!50%^H?tKA>S!LOA6umIu73CXdZ>?1owVwS?gw_11h9_GL&u(?K|Oa=AYo(^}Nj zKJ3b-4OY;@i053gW^HP*WNMX8xLSn}-^jA_f%a-Vudn27xwhtYJ1*0dv}GJ5Mewb? z0BhNGx9m)%4;`T?%*Nur1-@=Y!F^*VPDcm)w9iZgDF4=k{3XnH+nD}o+`1d-)0|Tn zi-x5ODF)woE&gc|;|AGQV4K!M&NX4=cWbZ_2|M51E;}{A`>hk_`iqTk{yyR~`mBN> zwglU&%=FlFPHwMrl)RC7WLi zd^Kaj_U;XsY0onMLFK7tCt0nlVpNchPw-jG_|?<_!oeu@+I!mqUfY3ixJ*NZovrd`#O1NQK76bjge%OmBEE4=a+TVj4 z7>W|0BIZpc!Ni_(l4X2@wl?<&Fm>Om1%{Tf8WXoNe~<`xNGwZ*{$+a~f1 z9YgMLt0mOk43q?A!J&0~CldN@*ZU&!9x-qUE%0r#3$1zQ;$j^1HQXUHaUT4hv)joEjlD#9X<4?CYB-C0*JXhjvPGB>-O=#3lMl zS@vCW^_g)k6P_o1MA4>WqB=LHTTQu~TZ#`m9Md|Vd@r4`o4D7$ATWO!o=(u&5uQU^ zVv7mdiL!?j1R+#OebGu#@D*){Zx%elQr2HNb2FT^Z88~E=fkRuPO6;{U$|NA^6-m? z8rmp(L@P1nv!*c|--R$3Uyxq%b1lY%n|+b!(Z9=ktd>1Ae$fFc82s=;I(SHHsR<4)oiNMkB<2@j zE;#(?dW$L`%jv$C0Pd=w%WhFAap`%1r-Ik1FFVjDvAoq1WAcN>{)sRgY+i(Y{nE6- zkx2$o5w4?rtod?dKfx!tyww(Ct=~DqrQ^hzIff_c{7^Ime`p5-FO*>qX?Sg@#@HqU zWM~d#^>s>a_RmYK$hSEAsI8Atr87TE*bq)l6XJn?HfZ*zE{Dd#b@n<62;%(1;7jTy zt~VQdHI8kcL*d(EC2D4Y8)`*mxpx^vi?SGxcMBI3WBh3h_f}&3^9mQ9#Q5tQ?p4P4 zk3JID{5YxlW_>@35wXd1?Z%u1xvq_(+F7H~KRo+GGn!PuEGw6*3Lg8;;lc$nALfuw zB6nU!`QOW|Fu7VLKI!lqXiO#_S)swt^BNDL`Ve8PMUf;aji9;xuv$JcJ5@CfUs%??whg?=A3W~;7{UHu1d3e^!#TjEA|6K0`6+ z%Bcegy@dwYvtdG4Y2gzxYN(2KeM*0I*u= zE*PZnEiEV;zNyVV)qw7260p9+I?}%POh&DzcJ7fbp55*G%V2zY+?>a*i2nR7xgcyJ zLD7SWIw%JI)1sscHyqGs)n*DQ@Y7M=?_VGE)1$K2*TVb=*~d%~BDlQ}+$qf%oAqO3 zOhT^w0GDllB8ns}__*J-8C4;NHh!AMj?Jn`Sgv_9Ts0AbJH(P-eW%adXVa+LFRa$i8wPFDnc$-hMZnTAK1(dSI~Pt%gT ztED`GgC9`vL?L!&D)&#Ay3KlwAZ{SPpuJa9ui1C(ETR{ex*D^PJH9wb0Aj?c8KG?4G^s)VU{O~1!i>eZ?UU{RW0=_7mAZnyp zljSnC3&_Xb55bj35lyyb`Zpc+v%%lI5yo|N?b)DT)uzCgf=g;}!32)DV}$B0ovy1= z+e<;^@kA7H+Vvz?@ivg17c^apO{&4C5VOKu4jC(!VRwmd!ih@kWHOiJO1c=@64z@I zlF5|{u&(h_eKiW&;FIKuuH5V^CFLz@NN8J{i$LHy*YySK>F0^Az?*&X{S=Nr$2OP{ zmU|2V1o%bSXB}~lfcKVMzqG)=Dm*V)Yyl?-vdn3%l92kN@R0r;AIi&@Iw3NLtDj*V zt|?q4o`uiI<9BSpYBhq2Za)Et%+Bw@O%q35P0aB)cF1yvPS^N>Y=F$T<`68;z<=n2 zxD2rT^v>2(9+>dZSe5g}T{O^Q`VD^lm+`386KBgw5u6CePo_iI%U>=35#<84*c&h_LO}kV`@QyBZ59gmLLNhxfcM)v{z$ zO)uKU2gKcRyS$*;Vl3!22?tlqk?P4xp7f%Y6e{Pp+D}WH(Q4=gN8@$QfdHORLVv-<$ zTQ5F98rmWPDm`6JXDgd8n1_II6PMoG&wjAPG#C|NX=M75+AlakFAV+NIL{=n@r$}m zrV`iYvx^#{$$(UUzm{T?D?R*dU`r5jdrkwK_{cx7HGUpj;Q}%Fn|f`2#j$n%7yp?? zK(XimVU1jQ4l&t|CM8WKr#AF=XeTvVZ-iTsJ^LsaBGy6CfIMLG{LWTGuf zZUVP0k%&=lka<2<`Qe?fk<=obpk_TxINJpj311@21k|keL=6FHggRWkSh@-;Qs5?f zm>PxCnUX6n`OFGyoxQ7G&`m$F?_2m;?S%4OIY7av5M+Ed)n@ieW={X$7UGYOAg;Xs zuj^sQCEA$H!2jsa9j&`oP;hY0gv=ECDo0d&T}>7C3)|wP)fw~5oG|{46P2fKrT9Ut z%?v}cw|GhAv!xQR*KD%5x(UN9vRH#ClF5a*5)q{Q%nx$VlzP3p>;PH}h#zd82pPMn@i|K1-~2gcRE>Gk}^!Ji5&%W2Tk?T`-iZ~?ZJ#wz2xx_@d8poB&F z5TJSgKm&4MTEdL22AYfMfG2G+t{pe&CRfKykb<8&A*C0KcCyqSgTfs_BjIQ{D;@C2 zfy>6?-Wq=%7$jebJ+tN5`0}wLQ&G9Za=><2$=s77)2U&CM$Dfbv(G;Svwh@0+ZBf6 z^nU}#W>1Lk;kI_J%1DR$PXvQD+eQx(h-y;Ev(5Z}baIV)Bq(Ts>-90^ZKMaOC^0Tj zM{d-tTMN*iD^;jotA(T`$@k6n48NvIqD2Gzrv zZ!#@4B7Xs&Ga+9($TK{@)>0;UNGMI1B;=rbGt1BZGHMTqWbdX%-x^TjsNWBb8}J># zh>e&g*@Y^yU8a7>>U0N|G61xY)4(%6&NjCNM95$@!CTQXWTF!>f~T1Q03+#TflDK= z!#lbcEO9=2Z+ploJ^Di1RTOB#K&+CN!KXv=`mcyS5F|<0+jkoQWHxTva~?Ph63}Qh z)`F;o?(r`12s3ed0LT(M;)jLvK|L^%MEa%0#_#QbFdG}Td$^;hv++hd_tWg`6Sn&L*SDqo7eA@Rcddw z%N1(Na>!cuw*oha$msh+wB!LY{ZDVLbUovryA>f#k4cof7&*@iTIf6|Pxu@{KEmJ; zMv$c%#&&1`XdNgQhL9s;NQm!hZ6yA5xk=3EJaMI^4ow9iUaXmIcQ~js(oWi)^gU*9 zyN{+P4knX-hbC1OAzf0~d=KR!U!Y$V;PF*+0Yh7tXw~RhJ&x;AD5pir9s-v88}Db3 zBqqfUYeSimPQz2ViW89E$f!i}7gQV=obJ*6w2z{=tpGeiz6xI^Ear*suDut1<;EI@ zq`Wm7Ztk7bbjw=?P`o5cm=C;7nN8U*t`#0SOZ-6?%9nU|=}_n2Se zs}_hTnsDQS)0R-2p}QEcj?^JhaFR9A2&SOF-;+g_A+h;%$%`}O*Sn>F8}Dsfx7C;< zeYbdm;P@jOgY(d50CM283&|9}o_^pPY`LY41$D;h(<~fn?wkjj>mW=PAmf&s#7Q1T z!6~tXS+OH`vMpv0t)P?7{xvEv8zZwhjGG4atdl%KCMiXwx_0j*0mzzIXI!T*fU?w* zz(!Jl15p-d{aE)a)FwOo1Ma-~pn%df<_7mSq$E}nXIxhRjF5p2**yS>`haM1QD_5n z0@S?hhCJAn1_?h}=Wre6z5~#dwA<_9;=TP5piFpA^!9Q$Dak75Cb`=HLB4Rj2JJ_J z6hb@6lc6O94`_ku$xp1>x1>m7==RgUCuc%`k?R%p!UaKIrOm~ZYyrT7 zG!=!;fP!Vu2y1U*WZALZ-NS^7Kqc(&X%*&~cWq}LE=OK+CnjQH(GlUb1R4-8wu4TdK}+D&^@5y zj!d=O{sj;rvm%9L(iz)t0J;tGo!lVHS+~o6QZ~&g-V*H5dP5K(;Y+%6`wp(=GY#M< z;*~0^98UsS7H#7b@2(3o4!{TYwlTX8Frnt4cI}6`B+2}4eapq5??FqFfFtt8b%G(l z7dFUAU3ut{e6b)GFHoJvoS9%2$RgQD?mqGsA&q>MxI*LcEYT;dma6m;+5*s|eq_h{ zFkF$Q%x>E~^z)r!aWt#S8wyAfvIB@DXD|U2BE3N0jgglGQp8{FB#grknW%glGj0Ca zy3nd2^`R)cO|W@-thr*wBOb~)N*zt0HVn5*MZ)^ESa(bRvLwth(4$()iv>Tnw!t6GV42a#^yl zc1$yo68@SJJbygu=*}K(tbwo!_ql^0(Bda9sHqw+$W^{#*wliS62B*@g@kia&q_`g z!88t@5_P-Y{P~UJtm-b1F%Yzygbi>{*g~0ss{lRyZe!|Cw==HXz<|R0&RaZRfR{Zkda>O&;#Mv|Pm&tZ zhnK}g1dnLojL@;^AF3DKPnp9Po5C*8L6s_R@f~>fB3C#AA|>Bh{g3F`QqTABVNcrD z&?nTIj@^A>pC|(}yYDTRkpbK#Y5}ZN)9Q;`Asw_0Tr_#r!VWRA6I`PTC{Fpq1wyOB^j04Jna4yYQ?*q9vVWTd5BCU zQb}MXx3hsB0KO_Mi2&}AhLL6h0RCZ=lvWSX5OoVsex)~6V@dEa4QKP<2Zh7>p7$gg z475=DCsV)cE`#^uYL>NV_Fn=T-JMad6_Meg%&OOPkk-K0K^+&yidtJLH57J~iE*;3 z>hI|$Jh~&uvMDp-+^8rfUM7BTZ`cX>%;QBPl0F?xOm=5`21*0KQtAkF+aUWQAViSH z{05}xLpyKi4n;+vgcu>i8!K&u3r_&UjF6UQUofAqLZU>(TPQ7k*cQd(OY{a&(%nZ7 zlitONdb{BWA)$W9k z3_nd1O(1p4E5Nyf@ZEp|Cu@QW<61wOiSvLd>T|vvNh521NH!xt zKPnaX&0=JaQJT8{ju6zJGZBc9t7Xeak$x7K4ohMqvnN|ZcMni6K(mKb1%Pia4Vr7? zzbP+VCoBTfIXS;BP4y%RK=si|#B8G7rb}A@>|MXX{3ViUwp8LJi0TQqlYfEQ;ic4% zA3P!KM1ugm{sJo`%#-&UvW3<$V<{vwl?1S_*$t6atM0{0h$QT9P2hOywkfb46U%tupJ_Q4mSfm`Ct~&q>ftgOEwx&Nt~E!TTq* zEj;pcOXh8K`wh00389~;DI^oE2>6+NJ>2%=6`s?g!nT>`M)Iu)5Wr?XyQgkpguSp; z9YAiZ+CwN4G$$J7Yo}7+NAQ7ZKjehX>gCPaN(eQX666)Z7h(;TObDkRz@F+%p*t_^ zJE?#aa*~L(2q}-ezSAxTcT zBcXaUu$kmGzt(SL8^u){Ej8g5D-gbPQ>!bptzy0Yox(r|Kt$?qn_WRPNCc+?S|U4$ zC<&12(27v;TjlyoLV*lb7{D!3LF14;aTtu)%&Wxx= z;%2+;k&R5{&Jqr%ma4F1@*qiC(|4AVTJDjPz7jEN5Fmt>NMIPnK8XY{how-h_e#WMpMSj$s+c3uy4 z>v8nh8+Wkk>r$*toUuK4ulw6;%wIELckQ8{0k`<587}}fu9h)OTrXl_nmi+f=qili zdA!;CK|J$$vW$qqy`(ET=Xf#^^7|QXCuGB)^VYu~I%`*S?3c#`CyxnVpew(f*V^1o z0O4poyzJi`NtU;KH=^s@uWO6_6|?dkq(Z;k$auoX)z6^!IK-klJ#_uhALgfVM#1+* zD-{tjr&9KYcig-B(lxni9>U&=kzN8vE#M;nLXCwI{2rbIA z)p=D7zJ;;S&G08}C&8WxUSpxJyz!$(XTKw& zY(^Yj%@KbSEIm1V!1U+T<;#YRd_sa;qP%iRX$rtM#cJPI5m<>W&^O1BKq~Q>Kl)wz6Sc! z5E{8nIQANg3HgWN7{qk#9qD)VRH(@LqgIV6Q5|T0)W@Pt6j?|HuNh@Xa^myYh4jQ< zWL>$OwGoFF#o7^X9xpj6{RG%gdmwoVxS8~5IQXIsVA0Q#%Bp0`*|^l`THr&QOc62r z`#O)h44PyAM3N8*pp?09DHvMuI#{Y#YlHv*qOA+QzAYP6fXb zJ@pL74~--(F4zoR=|u0_lY`z7*%L5je|9UTG>J=mKrx7nRzaDjC0bEFFVmWjHqFXk zjMP<&E`j|u+#FWFt62|@B!V}Ci8Xj=J$gK2-@P~ZOPOoEN};Z&f~E)B@LzlgyUU27 zRgOV>5K_)}B>p@@>%ty>!vM(NYi6_%i}BoM)|O&Y6{I_+UDp{(X0of6_&^yMi?*R~ zfKPvo09zq?BGRqg_zAh`TJIMK)4x|tdO&-~rya{g!X27VZdkYKNr_NHN2+5C&BI_J z#s;^O6-6_*f+ao(u$T+V5ZGTL-m1qKdJL(nPZ^HtTsKPuQI@=ySRya@ATbwxJ3rqv zXvv`T6KBhi(jiS~QOl=5It%(YWIdZPpHlKC)z{&^FVqLj@iTUqo!THSk? zZ6UL;b9^tcm@!S^FM)_uZYRz^QH8Q#Y)|lHe#u9=TvEe#jMvfyW$)ew*h?HHiOLq& zqSvCE>!7yyCsu2%3g3yGvC{R>?FcAWk2{3HgbXuYM2c!QKjg#N8n?n|jeuaFHQ#DZ zuM5}eeBlTC;rT!n3{`^dsx*=GXLA`lQLrpCsO_Sj|m1! z-2yjkbZrZ|kRm)LT8&(>A^&b9zuIO3PnLks3JaV8$b%Jz+sp+O`d7sYhu@xR9 zpA%S+$5iOYWl4L-YFUO3RtA^?-WK)b>Sg1CS*UgkIDhEf75GixE6fv-RyZWQ1@27| zZhh8E0DkdFRTqp?H$<;<2rX~NYT<1))s?DAwu*+BKuBHgL$Yr%+`Rsu*tw73KZM9a>opI4<)Bs9C>r!wHHftO$18Xvt9j>yd zBeRYEURkC~(Zq+3Ap6Ue$<}j7CfO{9rjHo6o6>!e!7uz_5vpt4+``;IL9A=o!;NnU zZs(9}t9H&R^(LKE>$CsF6$Qg~RB^�fiC*7Ipu@`O(Dy7BBGngD)}r74lYfp8syW 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­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∾QN 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

=Wc! zRr=dEdWImgv|f?3B>B-tLnF`H>zS<0I$a+Uv+lZ% zxrswf2Di>7+uYE2`Xn0(H+yu0`hesnP-_~K7?bSt4T-pU6zX$qCHT@~q+E{|LH zc-(qO3;j|~s7@s1jP4Xu&S`*L2J}-$d?Tk^(-7))MRLWZ;$c(R%M#5AR8nhY^f&UH zLHeHB96e*0GuF!t&v6%}&q;I>bWWPSXECQxT`HSX;eD2Ij#h&*NADCiXM?KOb2^l| z8P}o9Ioq@Yj0LXJq&d6Qkax~8O(Ex;REp0O-puLNs}km1a?^0mb(i|jx#M2onRC~@ zz>{i{=u8s=QZZeU2+2b2`l-&%q z;murwM!2~S5B;9oU!h`!JTP~d#+A9FwNvmpioqs0!WOR83CiW_roV z+(KPW=GN+u>Bo2Hw%uQCGPV)R z&+{lkoj2rutmln#JGyzXI^grX&auzSRCzSdsq$!EwbC<29TAT_ug<;oIB&gfWae#A z6jOn9-VX1@(0SUy&3VV&pFQRE*>l=wuW7`Zchdv=d3Q86r5jZ`q&wK96rn?IX(tC8lOuwsPoMBW2GsEU7gc%N%5E+AYqGk;9q)A4UdWJ1y zBA~y=sAlAh80}x_t|ga@-1}}RbidXs7RqSVaLmvHp^WVwhA5-Uvn(v*fcIJXj1xMJ z85g}%>I}8zeg@sIftldBSC%=zBYn+umycwQbu&71k{V@a#%s}FW|G{QQBZ`OsU0oJ z%y;#2DpS5vqI;jrTFt&?D!r_7obvuQm+)k2=W8-MbShNaX1A`vnGz zB5Q~l)vB$sMtU(}MC z>>D2Sx7oMvTb|4@cov`K3~*zYGeWfhInl25lbrD$3qCm$RX}s%``U$^Bz@f}r{unW zR%@inX?Jh^=WJ5NK4*JhDa+X@a#>MYhMaRmqiN1bNjoc@u5dJ`TQkc!SMD>*IXCVz z%ef{^baDsXXM=OKZGv3Al|^ohr!~%v*R64Gx++(>gO5m>y<3!FgXWPt>W1=jl@g^4fI7^EPVV z-r5)OyiPabd51g^&pY8lJny^<@jUk?V%}vfX3x8!efPG$R+V=b(CVHzikxp$(aG=c zxiOPJNF!AKC_sPr5u9@5{AiW7`SBV)`AMGC%6A{s%r9|g6ZzHpVWIp+eHACaO+N@F zGM~T6(?90#lq|+spa6J4`|Pp4gvvkZUKh!~q67lYDrIRnUtc&YfWA)^m{rOb4AKow z!B9_wQ!q-XrA_sfe@}3uQ;?*F?gg1jbeB`$L@p4AS(4#u;apImbkK8cH5D|tmU)yS zqJnmnH3eHd3`@awCE{OHDiU0c#w_o(p30wU}Z4I8CtTPgJrLX9e>7 zDIR^-<|nGl1M}53+Vk@j2`H~Dl3TSplKC~B+!c<@uh*G6f0HLu=W9*D=I?QJH!5{z zyVecn@7F`K`KPq>Y5qBPGBW>?M(FuB`byJ$t(kO@dvaHi*Q}zV0XpT2MyQl88six= z6pd3(*5?#fW-DPsk+y17q@P$S%5}4%sKi~)S)@&2DQfaq2rbfP4-{<{4N=9RXscTs zigu|IQ*=P`xq|YnoT8$PlAO{?f&Z}f&kHUKS#()hq;wUA6-fY9l(7)G=(ejBZlzO= z$%;sG(!~xf+bZs_DMs;N&D|CcSD`MB@?Od=j`sLav37W=SOP||3B~E2|JJt~iz~dm zM{%ugL5tfwj$;*XQe~>RvrpwjahGb1ibW$_!+Vj7k87v21+wY=Ab;!Oh4ep{g{NjC32t68%tf$pkNqN@8@3N>Y>>jB@0XY`G^> zONC2{v^UoEsdy@B)QnWgW>2vz+16)Yt3Rq95QYxuG$(NEK+K*OOL9{7^P=4s+FEozjI0b&J{p&g)=9kT&Z~|z2<7xlHsgy#n7d9 zUH6sQMS2P(kS+^Vp)VTNG#2}UpQ65%1n`I-HMFUzia>z@xZMibNUszeb3!btv z^*a@P04S^0zSgEC2THSuvJL73oyrg&#Xpqo)b8D<9EvGXHfYKY0-8#l*~;sLF2XLbbrC*^LE(>WOQmh6#B=xTb6ihI^LIEpWF}Trg38I97|^ z79?u2xgb?+v1=|i@`7wtNfuPNqr(L?p26FKCKb;GS|i~F9WDV}u+2*V7idLl3-)^n z;DSTi3r=eSxZtdwBQLnam0)m3-rvO>;ImB7w@5-*7PajG2=oJRqD9v}5Mvh#RfkWYIJq;%>jy0ceV z$H~esaa9DBgIbIGis(lPFLk)Db}YIm#u7s{LiF0+~R)>R3#Z2?si*Oe<**fP_Y zjZm@2VW*{C*;7xchMvA*h*GrN;pUrR83pTl!G)pkjsbEkg$ga zSzM77sKlr*hG|a!aqOQuopK$95r&!IgXMX#|L6$A%%N_w+7WKDEF|w+>$f2*fIBZd z-{|3L_iHcaOZMk$ZtvG?zaK@@>lil<*ZkKzJo#(P5#>?vmjAcOi(0x`#9Pa~UIqMl z+o$t$Ima1Ut{0!ylJj*?XSFsi9&~@D-GU}F{d)ZF5qH%L9sQO}Yb>+NwU(JX zH@m8zICZA+DYk5WYEgE$Gm#2h+U$Jz92Cr*I~%*9@RIoFMf=0dp^BfW7PT{O&v(TB zd@{V(KXm;@f2%^9o!lMw@7wqdKkt(F$qen$0pC9f#k%!9?Ar+87QSs%k-Diqv`_E% z2Hn2b5&+<~v_o_Ll>PJQXGDZhh^WOw)HD11R@%;a3ZfF2SQ0rC30e8{4ImoQ8b}eI zA$R+|a6P8OMdY)+?w3*p2Weu0R&DF6pqbM@b*f#oxN-iY?$r(=#9-K@x8rr5(pkxSlg_pl&fyl)LzTjJ%6;B+M4`;0%K4kE zo(32$eRa2aZCOz)S{7@+Hbbht|ITNOa}OCM2Da5auKT?`_4sua1FrUN-?z$dA55^<&01V1VjNkfJD$x2#Oidf zPA|@!^nR~Be(3T}K}cShf_TTn&J9ga&H}}iXWo6sL~zk@?$)0zY0l!9{-ZM-)AFUW z%fi_$;*xn|H8$_cDoJ}0bilp4owDvzFBS9GLP?&de6qI$PWc9zZo90iUq*ymW)O&9{EbOYZ7 zw032>iIlk~+WE%vpJ%sCvqWp0o6V(LRy4L1y7J64LgowtL%39X)k@6GOVoM-wd;;0f||){MRCBL}}Ams3_hJr9$`7ms`<2%bxiY zHb+pL9JEsSI?Z}Fe^(>bYWM@nxiWM>;lUi{Tyox_OVYJam@TGoKB!c(^pADISA!@w zhujZ@4gsp3%b)BjBojW#m_o~XEPMT*aJufs_iC|R%(E|+vT`HHj<6Y~!y~Z>ah)jl zP0~K8E1FHITFazO(b>~EKtA484&iZ>Va65WC^Z#}Zw!YgmMKD#x!{JhGyU44P0`;80T{5P$MWZavaGU^Je8#Tr* zUGD3H-%5vXOFA;TKluA?No(s_**0*YgB9MJJQFJRtI_|#kNR=e82P-NwaF1 zwR7F#b1T!k9j~aUzVK1M*ZEL3^GrUB81Ksc+oJJaN<^|k*1ncZqjjC0i_~wMkT)=^ zN;!VctTyWgYj-Ci;z+eRFvHK8d|Brf;rxnb6SFgH$KiL&i(Ug-EXsX&vxzE?k1WWC7s@$Aly5( z(2a3UGywgq{q^Vfeu>L|%S+uzTY*+O%bbb;iP`U-?J_wjE!6dcKWpP}nEqZs>AS_fJmxlIOG+Xu(^X4GX_`KHd-+GWV`*SUwivC5h*-5$K31ITeL;98|8GrGQN z+n9;Q?KlbKMfd!1SebJtSxfVW2F5#kPt&%3dc_}SQZrYP%$4F0*eYiEERSolY`@8; zav}7+ogw8LmZeN}$O=a6p4dued||Yltol)X4W;_C0@+lG{XCkv7eTEp;a_M9ugOVl zjt$GmVih8aIHBMMTvn));3S)7#pT$mgrUp>;iV@|ZV@U2g{SX2>cwWD(?1?yVoM7H zVT-@ci(8m~*qpsAsIq|fI%;Nq*Z5Lt>QP~ zmMg7Xv{4XFHLxiOR|(oARovgtE)8Fe<1qH}3WCDK0I4(IY zKMel;{=@p@Kks#+-Hp3rSNJ4w-I(oU!+b1BJr9@hU1$Dj`q*0G3#8;a7d2Pm@PoVr%^qVQx>C4u6a9s<~zmAlU z=XfgY(_B01%M#Gxe zvC89m%Ti0sQhp$K(!RWCs|+v$8~M!sUZX?aI|R|p8`J78P1rOzQ*M~~d}xwA^Q!Rf z1A{m7>VAjO$G|@s&UN;>_X1i&ww&%f(2I&F_0v9`v4L|3ciNZD6|=p&QZV0!Erb*n z)Un9nAC=X4;{zlII7Xe~zI4vkL!DZ#Ab+fcpW7UyzyqH_Vwka z*4?X^noV}B+tW8o%>M6Iu49pSd+wy(cddSby;d>WMy1(iVJL>o`j-&t9Z1qkh zV0A+onX_9SR%7*s@Z@}X!u9((LV?@DTkU~jGp8}P*5khxS7>?88E>Ve&03TA$GW9v z1C<`-bo&S7EDt2)I0-aW{k-5RzdlyW{_bzchvxg$=Qg03f(K(N6YeF~=W9}~$G&dg zz$g|5z7GuO+-R!~b~CE|8#Hy!)~dOv9=NsJvcxYcezSu0azL>WtZk0S9`*qj#P1B=bZS>?@b@jX57CD1+A@;+=u)^Moz^IPn z*111Z4_c4XZ`HNNPOP;q+mL6wq!k)=CiSE5*r!LP%q3cP&lDEbWF_ITJHSPO*`3%@ z^K&ZOy>dHU`r|D7ZTV+JZL53T zjbQ!PZ|HZ-4wvnAq;+9^N6lsAjQLi<4sx5HT16!JYN%0H61XKOoanm*S#LD&oMi|r zO{DT&qDm-_cegIDGTvhUuyr`Q9_Q2gzRi|$w9AR9G-Bbb*FrAoZq&);Oqc(X%7ljT z*82d_UtQXYogPC8nXp*_9ox3|bIjcDMXDlpJoWc`i?u2@L{lqg};rp>m zFa5^gLF7zBVgGY_ltLUz0R&$bIG74c57NyJ(xoAhOVL`!k#2^OZq&v9N-*{5K{XJK zX$oEP&Y6Fw&f}n)^dz6{fn8R7H4VO6xaL*eYkQBGjG!F=eR4vQ(T6C8-9tb<$+M9g zmD7#Pi9-nUx9vVK*5DB<8G%db6hERsrG$!uR;Vpc4so=`%=jEZ3=46n^ODvS`p#f5 z7M*fhZvDmFgErT`uJYEzz}X zNLR@lA2k>rHBf)L&b151)C=L;*lJE$%BAS&t5HVd0IuBF4pY01oa`vXSwj170fP!g zyd8DH-aN+|!N>@i@C2wkdG>@2C9WuH=0<(CS30hnF36WE$af`VIN75zW*#$PRseLd zH6=Y?bW0Ju%~H^NUgX8;mM(ZTp85CY;}pOY3^SL(JytpvDI6)minb#>F7NM6tZ&d0 ze(K<2|BU6|GFRGQ?qyVuD_(=xRt<`Q{R?Q$C*mnu^RNj{;KBNj0 zUo$1&1b9sotu#e5NZX$#CSXdjexYIbc=>Kh&^yquM`KXwhcHfzFQeU~@sjr4?&c!3$EN3sn>_ z2p0^ZfP2Trm1y|WpYY=^M6;o7$p~t%in+!lvr~AdoXvUy3@Qc2?vPn{=wF3`)0P1N zdV#KD`}a+b+JWTq-wk1@ulFN4kdNj!8d9632&@9QMqDQgt&o(MZ#K?bL{*r|MQ{I= zs_{{v;ZY#8XA`bJqJS~-L3+glE4atrSr}q9}!Z9U-Kcwqr}Yq&}=4N zAY5LmtJlz?G!K8YyH=ap)0&-ca^}w zkti!R89s_k}_YQ9XF`ZO+H%jb=754sL%88_dsznVNO}od06F|X8 z0O6w+x{+rBt4)qYk$H&-hNy0;DF`%726wc}KEQmkYjUJdLGsy1TOii&)YMxYw=rxWHm>K2O3*^U`ij-v^?V>lYCtZ*Q6afxO?J&7b=<(* z`+xtD4y9lx!RS5~@@M^ZaRn@52O_6kc44lk%8b`zt2rLx05D?v@e|6aTJO&LbZIaU}oe*V-P) zV;%sIhkN#`ACqH|DSs%)e>V74@VQLb+%bsn#!{*1GZ0cJ4RN8;@zw%9pCj1I;&0|~ zP8V|kh6>V?Mv2fSgC`}}Ckqfg+}o2$L+GU{x{}9opj?wiO#2CiE>-&%MCucQ^?cA^G_Q3P$Mmj=p9^;iN?EUB9FJlBL}3Z@zU<^Oj$6yLUagOWPRn% z(Jg2k5AMUtjSSI)7hNZ*1qf0{~T=sXh_prKsnGETVmj044_0x9qPV52_#Pza9$ zPP_DN+l#hx@YNx5^>oNr&UJUwvU5I>gs>a#pGXGSq6)|XcMcOLu!#%b&QTMTn0q4a zX{f;m*LyQ0Nr4F$bv>dOThi|1dqlxZb2h|rpeVMyka~Os==nEYe~^A0`&Sq!$yvtz zyH!$b;Xim~vuzd@>u!f27(D<32H{zBFz$dG0e+?;5tq9#W@oYs+?j(U5tI`fSq+PP`wj z3ybE!)p;uAu$`;W;ceqF5jQaroOWYK*^K9aK{1du1^?xFs025IcAj7)oy_ldqUI+( z!kXb6xb^xHYd|CzqsvLue$Ug*nV&A04@d}^S1oF)9yH1Z|&u;A9BT-CW4=8)cw zJw9LlvL}1HgXVG5%JnQx#(Y+g|7z!m^p|97V~s(I8TS_oN0ZUQ_-H!fN2T_RcMAItCmspeZ!R=r@BpbjOm z-fzAk!+jYcD9_Hnm?Ic3?EjBNBSY?!nP^%bd2hsOP}Ef#aG0&xVek8Cy|Br$6 zH%}_#P}R>W5fJ`iyNgvqnOaj>NT!**3`~FVoTb2>w5LB{tc9|ff$Zv$le!5QA$$uP zF-oA)gVT8lzTM8}zug`|C#LxmdqfF|xQsDZecSku&`1d>pXrrDK3Otm?q(v*6R&IB zPIDlnTciC#dnJCOLa8yKOt@D`|3>2bU-9GHZ>^$%*s9METc-1z*Gj!h*xp|Vseh|4 zCinAGuxw`VizCZbuZpop1gt&8&osMM1AMLyJ~yvfol4zq2KnRC+UL?631R|S@cG2z zr4{)0&5Z4v;%qi-u-6>^f1XE~@uD8lsxtF1Ej`Y5eH>bf?RVc_V}$K#qLXr7Zir(# z1@Mh5=`LpKXQJnvqUYwsU(LdJzo)!J0cY}@et+47ZKH$y7H3bL9*lq>{;%D<;4=;p z^qq#(AD3A9r>F^ALSb~c!O+i+?wab-A_eGUIOwa+OyQN&#@-aES|-V z5b7$q+TsprbElctyZ8ETJ35?zc0<3V25D1Qps;$c5R9a4`%0!mY_E;jbu*;R5Q6)i z5K1~=@o`WH*WA(j#--wnpfS*V8`+>D^A$CIl9@#Q7cOb52N#6#`hPDrLc z*E%P~@jeCV%D6oG{3QA0{Kr8S)UhE)uW9@DbufqQtln^50-6nLa2p~Zyp3fSSh&gv zdNLWBPP)&WtwoBM22aw)7p9|XY$a-e9+##wEhR+TP23pE>h{j~* zvEhg4NgL;Vh41jclra-3=sWj4$d;okLQs8xmdZt=OvM`j{y$(#$d;#xiGnV+NE>4I zD>RpbLKUUr`R=PT^aDlsJ>u$+Nx`w@8B@59*CYrQV+PPc_g%_3sfwow;n|o;GmWXu z1XXT4ih^XglYL1$^$B&(bVc_hHf%jUxq%FBhcn-~bj*K@ro_WQybogY%LkHKh*H5zL+mOwLR zX3&`{KHl5TTpnf)z*T!&ZDiK&LYNn*!{5YB^Y}>GiVAciJhE)qI``!aj_N4RzK)ET z{2G0*%7aK$RXgrmEvN>k4FQ=n{}!kB^swQV0i=(ocfWE8zQE?jqow=)JGc`0)G; z;rA`kA7uUIV0O~D7r&0^hCZ8#rRCAY#zl-XBLV=hk5F{y!rXR2i4qv(PIGo=6S%+e zBbx9-0pDW;scSUurF+_!1r0ph} zAQ_zhafr}$fLTiwy5D~ zIS+6X?=!eMlDETz{Eyzu3yPjyhi=)R$#UAl-0>jr0u69!kzJfy`8AE^YhnK%wh0WZ zfqy-Kc7NZzGNdnG!|GMT6ZOw)PrRQp;RzIH_Xi|0z8cnJDTd@}P_6y}w`>jt%`|d%^0l`CIIfHM+85sg7#WXtm`E zU;eH9cY`Pa!||bqdOHp);+vT@uj=lz5pIi7Z(1`AMvBeLbDfMzGCPX=AKXLmwCt|_ z%I8Ww`r;A+ehzUY&c+#nXtl1ep;*kf(+sKUFxrrIiHa^;)wt9`<`vf z?y16lTnBrePpm!`0bi22hZl|H82xuoX&&AC>PqCJJSW!nvgi?b1 z^Wrt+SO&z`R)a*lDveaAMzmc|dN>N-PGZMY01Agh|4aAIAk$ob;F)~W9|ci| zB&Z;j`nF$#u9QQLp@s>twI}f>SHo? z)Mq|g-~~C~Ef>O^2k6pOz7_N)R2#Ev3N9BBF1!Ka6b0Qx2rnHYS=Dfl1+TsjKM`h9 zBQ`5;76b@5`l>RrPDx1r46#zu7nAy=!;IHqBkp~?Oc$l!%o9|nCEmbatv8_W$`lL- z$|$bL6YXjX&LFKPL0WXAk^~lu#}5{=g0v~7&%fBOGNg=Q`wCr%;M5 zQUp&;My#2z4}5zLuiW!~v{U4cE$V@!Bz0LmUcm_9F)aRHf9ks<8!u@vCeD7l#%&gD zJTc6g`(n5u&nH%1A`fjov7(W0n@yep#Zf>IfIPIH3GErA#18gDfT~gH+IvE&+uAh# zmtVa83MC@2i4~BB!z22NWGQjb7r>!w(_1%lRF>d>RHXPe=StfVN$7|pI@HLJ^Jy2I zW)K6e%q`z;0mhAoQ4#|-A#4&`rqDnTPQ3MtSj15Y_GkfOkrA2+=F3Miy@iPMYU1yl zT<60}a}x)i4$WrOFdAquUFnqLJFOhPAq4s9NbW|5cYmfcX)aPi6NCF#QpFvyY^{($ zk2rZx|2R6$eOX-Y=58O4DW_;jDI{-(?ludG)5CBgnzAXCZdtAuIkNmH+s7_&qjhCcLzOOzpkD zX8TM1*bQ&Ut7oIGy6q$0&Gima|1)#qb@LLb~K<3IxH!WlKdU!MeE`i?cZ0HGv zLXqXO;V@P;M>6s&T!v+0hm)nzD zg*Pv#oC@l8-&2O9WEgo9A={P&-cILD5maF&{+!e20s6=pv^i2RmEgn7LiEzNZvsf` zU;K`Fk>bbVX2JkMV#*cX0=oP)I=Yj7JpQ964AK@np(FiGBrC|8VpyQfkZL}bA0Nw2 zB(y{gNH{BjU6p{RJrTwb7Jmq{KaJ&CNcC#fxwsi4pm_VT-C7@7eji${p`sgyOgPFK zmlhMSr@+6IOO{gf)5r9Es7=d zjgEn13Uc|h3_Dm}X7y{k9R$n@J+L@!OPH&* zGkH5ns3zt}T>P=Y77D0Aslbrvq~71_njC^|8|cgAralIPRw%nz<9)g*^m+NxC=+7h zznb<>=Wg>bxAgZNJc-Aq2ekrr7*Cyo-cMY4wx>XBuEcd$jok_Ha}Rd=g~x(;dT7ki z^P37I7SIts^vI=#1(r{lLeonbmlFE#rsc_XYCIbYVQt~Ol|mT;rzk#I&1&*d3P3S2 zK}3OOnVsrxMjDG$#YZ1KCDZ9@4Vi1Hi}k9_zj{uHnYmH8=tq{M_dWt*9;qQOmB#WL zU7m=#ngW)>^c2UXaBx9??v(>m;A+oUbf}!2z8YO9;HufWOQF!YA&oGiGC!dsP1)bz z&QK?aopV#}{BWRS2c}(BPtaM#TDuQ(%CR^|1c13Xt{l+oy#-wfKwmB{Yq`R|X9wZw z)f3J=|In!wqjrKJO}qN!CRzlS<^c1wT9t9~0MZC6YKG8T5>aCH)lj{%Ce4dCz)+;P zC&!`t#v;;xs%Rl|P!Pu(deKG$bwZlq;&umIlEdlWGX*E<)a88hF-;4}LBXJ|81F~# zDDjC`hYy(|Eef)w+#I(aV|Sww2eAP8FTNamCy!`CSF#`rBKoq3>{C|EsSNJN+XWW7 zfCZ$2HaxLZ^O7UxmnQVwB<2?t;m23V8(Y0z7tVb#*mo{;nx_S71j~j+-G+n--l97r zcOl6~6pkUfO2xaLVh9lKAk8V+^wgIn z-L;Lys4b5wVD$VjrgPh*O%3-of=9BMQ9~580RMEOe2jC`5iAf0PxM%`o3))2ch#W$ zTVN8(hXh7~LEG#MT(W-!a83FN;1A3_PXuE*h%3P5{1LP+*5DlBQyy&%!~f96_ER~8 zgEx<1&6JwcjHHqZqYGL2?}(r!YSM60Qo%LK6He%5bkmbD>_sqS#Wvch@&q1FfU|>* zVt0(cc1BvT(qePzu(@9$<@~+ooT4uu3*MwACitCeb?RgaMgxdZ6YfD=AIHT&?i8_g zYgTkjf=9@ID|_>xo9X?`cS2F5vXtSFWY7a8d26xqt#aYdN3O6G10x zXua)iox5O|u?$X{?V^(UCV=l1e8V17IoOWO>4Atq^|ahSy+p8YQV0p`O}L?uU$GZW zkT|FvP;`v6M>?CE?56JOYds_VFQl@kX5FMXQKeTR9+>Jd~Gd z%dDLu7|BfhEtheJu-_)}5%RU~9b0oM6ZShJ^sd_GW7c2+%mgzU^YUjX1M)U@&>szY zR?p3E%FOkZ=4>KE$R|v^4k;dp5Y~DxpJf&aHVXmL^Lt1)J-^0*FJK|1eS4rpyUULP zy27O{SN!r>Oc)JwdFe?p$34&1jdHMq+~|X+vb_an)AQ9Xm0lnv)j5SF_6eJ+LrH-id{-NufJV zZCwXGJBXgo0x%EsF~3=HzqrOhCiGjVF&lP!61ZfS;;=9351+wrFosNvT$}4#1RsUV z!?0B7A7+u6J+zuBf-q*8HR+RL)-D0fRUMpoQAuazgU`rdaZ1fSb=VJQ^yP)df3K$! zsqu+I#3i1B)QF*LP_rAXT9MZlknO01U4ZWXubKSL1w&LY8BrE?VTfTgW5x>fcJ{YjY$uPjJhoEc+>-StJ*KY}>yiD%4_IgsS1 z2>NjoE2v-xkLDf)?$)pS2J+Fousw5h#md|)9oxCM0En{ZyqqVEJ{^ckNTV1#moS1( zwQ%95={Tc)oHJg9Opq33c=*yY)1M?ZXx|#-r?jV?;hrG@t%{Z}j>m#U448!#G!m6y zdz5G^KHK8Qm=p;Xig{K$8O;wrG0`FDA2E+Cqhl!W(Y(a1ex5{GPq)0Fc`66aD}u}O zuU6QKI|$*9Ak>}IISUOs2Qtaz-qu3_%q}zfQa5ST?4z3KIUcTeD(a{M#Yzy6*C2m2 z1r8p+`i*7lgxKcLxn|vDGz0Xou8ISK<{t;m1E4|mY^i2CS;pJZ1)(gRlvg#fJ@f%qak;RF>f0vaDhuCXRkE zu1ci|y@^{2b5#M}b$hU3 zTQFr;*1YkT+=CD+M}$zqR04>iki4Jg<7=J0?MF2{ z`dwI-%G!|GlG-Iq+FahAXhFcKQ4_Kq-&vl zd-|SIO-J9Bp)KG!@@aHa#Wb+hc$;;2Z8BhcrNEa*4OMj@Ql(<*tR4?|dgs?F!T5||(5*VIA7F(*tW+&;*Z zRd_zT%TvNWC(P~!Zp;8!@cq2l*bS1mdt#X!zjD?3KZon(b-#B=XcGkmQEaMQDOiX? zc|jI{;t!{0q5zlz%p7P(*kg}r7NxJdw02gxMjB%KMEzw+O)xdatxWJ4 z_=y&nO%qH_wD;|Z9)2hdi@uJ_ZvQ+mZsLLx-+{PWl?!CtR@(FFEH}2z)P{{BCxA0Tujf3O{o2rVcRXr`S94@hj>NrCcYZ=;AcLPSM9d! zCnEG|mX-V%Pe39%yPLPJoNhTXjmPIEV5?xrMNxs=j( zNrTO-X|#%A_CLNrq1M1y(QtOU6Depn6LE?ub?S=&Gq?0LrIlpCULk+{Vnbe*S{Fhv zn!$h1tUh0Y=Gcr`n2I#;`g;DKR88b(F@!1CrCa{PnK*H46eW0qYLQ5h=3L^8FyUNv|F~i#goi zxC>pOLMI&wT)Z|Pp|PMvSl+41=*DQHcJgI6932=QXo#gnP)G*L+Bt1smFjIkalsiw z#=2Mt-2y_jPfO;V>M|0-C*%G1^gk6#8t79#V$aj_rxKmYqUQ?~c;U1lTdGacn1>9- zfT$}wqL&<04Rtk`L#4#RkHYl79;K9^QWoHPahI9Kwrq1K@mM&sfJUab3Q0_W*B{>^ zBE)$g9_@=xh!QtrQ0qdD#lb5*^uQ`+xEKQ33UYl4c%kUj#G%<@MQEVWd?zeJo`HNl z5;sJNp8?6+ztgUG1>e)N6<`ZsLSqGFoGH{C>2G1u1_jtWKZ&AqPQHqz9SWDEPhf*0 z+Z&jP7<9Xw&`2t$306uP`Q<`eMPxPwJ1Y(eyQN#>@FLszNQ8;=?838;HKYif=0riR zIORaO3#Q2{cCWT(S5uWyP0~RIeX-H(SEx>J6t$oMUb~Mj>F%DRU89%$Oc}7qA@{>1 z$T0UipoLJP)u{Cj=_g{YrWDsNLJrHRKPX&L5)g@h zvs&4Y@bASILMXT{Lte>1zv~eiQy>OI&oa3_szToZTp~rK$KgR&H|6INy_Hn>b^!74 zGS0$z%EI8t3S`;4_fmorQGrE}5vsD?k_@yvd4gKB#PQuHnc7($8G?@l{3nLLvfnt( zHadDiORBrQl3B&OhRn%;0Pn=RiQ#e$k3@jszn2U1;!!p!NE;)`WW993XybtfR=kIl z{w8uK=M!E4>)j47i`|e;Mr(55U$T(;TtO@OBO%a(81x~_tktGhtGMfD#IVyCH`m@u z&UPP54d(bQTkBe6j?JeDmLVqdl>c53!RitteZvYR9{=LLyeG>u%OCZux{(j(CUSZ5N7%drEafwJ8C_73gQ&7y$N$|*oWk{MI5cY*h~MH~ z%0xcwc}xpw7}vg*t9X_E36bbz&`OL^%ZV)JCk^h6OOlFe+XYtRXCi6s*T6uzVOxfH z#)qs$7Wl=76FLLYo7|c=DT&QdaRYem|BynzA#0cIwy?cMGS)i{J{WXrRoD2I7QaH* zGIvt(c-!ELBlQ)6SGp+yel%d^LN!fjwiO#iZec}rA>A9nB49dC1x#p)M0}dWb;`4m zMc5<8Do&`q7E*=4z*^s#8}ysfMfF^NSo2pt`G(P zU*}=&{salk71t*j)3AQ6911O0M@!GSKSj&=)5Gj^?2bUl5D0UIA#(-|0l9+})kbh% z%2_&qEoJr-C}NI7g7XcK*a4%Dz()f?dUxCC`Yd)>tG2=g_StEYG66-YpC%Z z-W!zk`-WkxA+s_?#LKwVJAko7Xt@#OQpD_zNVR=y+wRtBnP1s%LyUj^#!d75mtRrp z5*GRDX2lZf7WopQDi$z_m^T*R)GeN>Td*5_6SOfbCRpc6JYdfkH#5)w^FAi&_~KP! z+zY>ko>}svrMcGQ`M{+8ecEbT8(@l>$&K)&#jlS$y&By}&-#KZ+*|dZ3(4?b?4HOe zTofTLxGI}KRx52~avyQ*lRTd1i>%73LfND2PSndDZe;UTC*wdQUTwWK;cewYU$ zKQ-x-cMDyYQx|5m;U=H`?htRhmGU*LawO6D{>v#{+He*&GC8ZR)I>NA67|YIc-7R8 z?ms`=lnv?gNZHB9%_BQy4a1fLkdkNUWxJJ>OBjladopK+ODfdJ z{i7XyOi9 z5ksho3AYICASlaJ7<<#|(>UCMD_BhfJo}Pd^X;(08a#G_siIFF`=fj-#>`PEAcRF*@ z4jsevM~W?X(j0cH$|me6S@YaP`(=FHB*C1G_m89&?7+qM#$R@2J%^T#i|l6JK7Q+W zoH_3T1CwkfD5nlgK@B@{Zy>-64=EdqWSGLTUwHY@r2IB%71my!Z-oWo`d9t zmr=JPQ##L$Q5~u~0N_ZrF8%WPT;X9B`UUzTeGf&2{hJq#MMU#M~FUWmfoXH zGrzG3XXR&=Q5VkI;~!M`vTZqfB2Vx1y=W+Mw&3YGcyp_2ljDn1hq0B0pvEugVDbyP z%DT&49eW`>ASSN3$H%ajOS$(;b0oQC~uyvr^;sLBB%XA z^$8S50_@$5%OCWdu>~Fh>=R5F;>Mk6IMMaQKLVB;9gqn+T-e}qKYe8<`QoX!rMG!@ z^>A^J@R5B#d3F2hkJHYRa@;f8RNeZ|g=NlGS*Dzd-^za6W}j^Kz2yOQ+w;5f^AU*8 zNvbAZRnLgi`l_bmuS)yUf~7)bCppqRrLVb zdE8|AzHJVc;>d~z4e&A``d9jc@mX|Vk2{8Uv?x6?q;NijPn9bCS?2rmJvIha&p6zi z1u68I;%}e(f0*u{WnBC!_w)={zo-3t@mlP|MNXsFBt7K>2fKc$s_b=nPuuUc+wflp&l{ zhwT(HRbFLFc=SYzY6UPOt+he^leS}c=v8Gv+Nt_gKQ6uXk>E7Rk+r~A^Q0Q_^F`%* z+sdOW%8atAbIT+8pyZ|)uOI|*?tK<)tWB;zJcsx-A}w3~9*38PT-Pz)#7zFjFl2&p zvRXEOE9gucvZ6TY?b+V-nVN_IoR(ul`m)&UDiEc$uxKV3VPWCOxw6=4nCy zXGWa1D{1R|If7g8P7129lHz?W9Yo&p?>^0Zj-(5 zWL2`VE_=^ADl5re7sc7dS!eUJR~nqn`5KwYA={-$&iG`XmDD-os2oE0`S0`R=kfVG z-uwA}zg+37>tIf+x<2vOKZrmkrA{UfP1r^f)(5`b1XNycv;KU^GVnNwWEV{=Q_5$f zHxh&Db>Ujl`qfB#UIjBEtfAb!r0$x4caN`wf2De!FZi^T@X;CxSgr1JpwDzd%Dw7I zA)tWUY~&*P6JmP1wrf~TN#s>Z8IQl4;_?^QYfKF87`I}l?iuZFKGs0c*_%JbNmySl zlB29Je%pIIlA!?kq3 zdenyleG6jzkg2*Wy*-EA)$*}Jz5!V*bIAcc#;E=MY&ZK`gRm6LUU+6o*~R=ZK%UE1Qw zWOnn%#0yZY>VBZ=Qy!Nf**yl9uTc=EYlPFzT0WClF_PX*Q~>!Y4>zs^{xpYVeh?-g zo>5F&d4sV2u8@(uWCIT^A<_HxDZVD({>sJa((^5SST2Ey7!JK~2u=*<>14-}cCp(n!P= zuVKp6T#wKZPpQyXZ)&#u8DHVI3&xps*6u0Th0+(!R(e;Gp1kZXgf3!+iR3Uge#1)ah0`H$*qCvWj(CSEu_k(0*rfaLV59SnZe>sHoUHtBpLRPq}^+O z#nTrmS}W`qHL=Wv4C5dBO>|<2L?xESU|dpqeIAP2QVkK(+auOfS7`#Tf(xWihE)0m zrH1$uTdFY2{ks0CrJ8Kj<7pzN)m<+y!A-P=gyzmrWGn-rqLRe7Y+OY76G9c8gaPC_ ziegwe=m*81-Qv3Mz|Yv|ToPduhvCx=B24k||07XU)pp+D_o#`7{QiAgS4`>Wz>_Mj zSbrjHz5VxHc#j#DytS@6U}g!KGNH6Ta%$MXOGAQfDchwSg?4}3;jYHWxwXBGt~G=E zlSn3Wlg1r3>eecZ)98^srcy4I9U~Szs)r@obMioIbkF);GhZ-Fx=CIoC@%l+nL7wQ zFLUyP*k&Mj!47$As*G$+{Iu2yfA2i4S25W_5`bVZWuUTWp-6Ss>g=?b3(xt8xn?EO zuIKtDjb{e5SIl_j$?u1ZsE+iQZt@?V*$r<<4o4&lJku)Gry`EaSQ0`SK zwfanTtkDy(pFgmdk*lN$(L0D!6Zvtc`&WBS57HHpc zz}-47qhmR`) zHHXgMnHG}Z?;jw~VR9XX#ZjDGG{jMxJ3VC+bgK-PACw;unq5qU3;X0?r^1?F@nrnerHm(R>Iu6-&3yUj7lQv z46WPBz4Z!rzASJr|ug{?aAKeK@cw2{=Dw91h2xw`QG`lVO6;7BYfHMV|y=LPJ9D$EIQ^|{y?THH| z7+TZaEsvLn@hi_sTRfJIO7L>jRI_FFP1#3uQC&}IDfA97v1~9N~2^1 zZT|bIb8}~xql+;;Kxckkd%KQ?BFDA7)qIkZ<;4V6Y()E0wRXcMN=}D-!WwwM+c!`i zf2W7}g)4C%)d6$U^RIXb6?#@PkPe}}Id|wA9HQ=w-2Ho1EWCmmj(ARLiY--=7M-VK zXisbMIqyn47*HKm0JiTbC~q#wvZ(rA@A`JUUrbJIkB`uT8Z9>~UONz?*O7$wqg306 z3_Z2L3(}g0WHu|oABGTH=|Z)q*_D7hTv3d07++sZe=SqD>cZnH6xOU=_!hYoVQI?MOwe6}H+~OYPJpG~-pTnD&%MBd4>aO>AO@lHyIQ`Goiil3J zUiCjQ!3;mti>4aYVy>b7<=R+w50JnR&6OAM(h(s5BQUXZJ1lA7z9IHUuGph)C`0Ct zjL;rgkM{y)G($BRx-Fq~6~^xBXt4Cj%mT=4^>KDw!8%4fH(*(|j3KVcfM3FQ75i|W z38j{y+9V?czuU=!Uluz-ynoW?f{+JGgBk;G4-ecRjQ!VzKoLiibKY=6R31{=`};k9 zqe~g8z0zkzcHn*HqEu5R(7mEOVdTCeKo8Q6{h)E?2O7GZsm-U6k zWWNbzut+|d;O9(3Waslgj;_J+CwAlJbpbn(zo*c|w;u3+uMF(v&9pT{Hev(s@*%K4i(jTD?sCg@t}7<~ zMl)v8!&uTS3ci~k(M(0d7$+K(o!J?2PtC9wVQu5R?`Pq4y`%*Lg(BQLFPtnalDwil zQeL4k-%y2E9Oc*f#@NeN9@Y_;%Lf0?V!+-FqB_9tBfCsz7RWGV9HVrag=a#~@#D9z zp}L!2wo-Yhl8Pj+zCTc~QO)Oqk0XE#k)U1gC!PW@-sRA9k8z_5Lr6_MY3j(uy_%h! zK2Z$X$`h+(&1jc^y9ykM*!$MzPYL2TB?+BjZPd|G^kB8}oIUFGEKKu`&ZaEFhuzaL z-IZ(p+me?Cv!`Y1c+W|YQoffwNgC7}yEmMd(dS}I#iT38WD7}Sq(jBiQG}k7i8|%5@_Zhlhu0i zb9joIg5^J0u?`=gC$duoGdkFS={<+jcOCElzA=eqHJ5?*j|97FjySLr8@NkKqm~?E ziy(BoI*0jc0j)p-!{9b-PvdEkhOQ%%ad&#(ua&!EsS*3Qo+Qi>UrpA#kM#rZgLy(3 z!K>mYczl?GqWf(+q(ey17=z0`G-a+K`b)XTO|XENCML+cB}7*w(}F+x+vmF}RF+g8 z*3hFK-q6xhG96DObhzEYV_;9_ouNY4(VF8%+5syIGf?BC`!{Tq6acTSK^)dDD!ZT< z(4}%Gi`yE>zZQt__9{}9jD#bkQ!}Ay93y&m67}(Yv^W?Uitq`fe@OZLY%!+A0+qNK zgW2F91vpOF(0A3r)I@d=Bg7S!uA_`|t*_$`-%Ze-Bw*Z9LJPSmVbo`^OJlOsO6p)> z_2WGIeG+>!zIqc;C{F0zlBd0I#&Fx5^76x6gWDXdQW2>?s>KN}WjZjg2(0Rr`KK0K zRz-7Z67AXtY9RF775ujQrXmO4=~`FFJMhX+c81`TjFs@wdF(<7d|K=z>>}Z4Z1)Kq znM|_VYgWvAv3$kzD3$$WtrO&@EoP9(b@qmJLO@D^s+SM*x@7#J{lsmEnpoH7?na7Z z@D+5o8Pev@zr)Z9diZ~alxk1Oth1l~^!x1@F+BCH53+;HO`)f;C$C0eN4F=V?_noY zhKv1e!{Twh7!GzqP#;^+ZLrHN)P|RWgUEm53DW7VNB%5RYo$}=8^t6>%M~B9p^gFY z3)0YGzkDm_-W4K+t8weh&+ByCdos)dd3dCtarDJA{!J%FPD|Ts=XMB#*&75YyJTF; zh#Dfmr89r@Ja>fR2hp*_=AXW>;rB9t@bdVd{#(C0nil|nUqgz#7~Kx2a_LEu_??~cO`nD`daz0YG#=R1Y7G0+aeQdYEPJb9bw2aBMKOVQs#P5*0w zyC;x(TNqycd?OC`DIm>)eptZij5A`6rf+XZ&p(~id4OE$TIHYT^h`XDz$7wu@3lU5 zyE5b}yKqD>gEf!qZT_0Q3$Hdq4o#z5o0g$kDjpXj#<7yEf5o{a9L3*rA#| zlc&s2%fOmt&#x|UL^Go3(acd7j^yW|NmH$w@Mg?b=nIZ=1K8;MH|}7hBgC4?Yd#(A zp3Aw(Y>Y~6-#;HDITGp68e*uF4LPsoPZrl?4c@YTWCkL$m->M7=vQ}5sf}s|CLI8! z8U~H-9XbOyGo&SM+I+V2wOko#D4jT-EV@7Nmj-xuKz8vQ;e-3Mkvc=obwOx#T8Zfw z&*af|@+Y|I{;RR~k_R3eBERL&xp)aZlLt$wWs|6b6EK1?;RCe~l&OrxFry~Xez%1d z*@r^YS3t3oubTFxNLtrVLYI$|6*|cSOWByw=J0`Z`=x(8oY5X|EfanjG%`&>!Q73( zOcg0jnj3jOIY&!5;E!(qE}o;}mC&bwG5S|iT{JvuaB%}*v@mA%OUM}b<_?Uyr8UwO zZUNKRP$viJbFwI>_|i~JrB*beYpRux;s=VZ!|M^E2pp_@qh(%7wv9YqI67FqvvgkU z$W=(E0VU&)dwt0pf4EOdEx&f)626s}A`2=xJl0|0URf#cC?f@OGn)dEhP8yNBx0rB_T`Ic+z%??J7Zs&??yJG^-I{r$I+$NrBnRKkO&Hn-6x?&%f(ahaScF!tbbef zbprgR#7UhdUi<--F(I9OG-8(I6{LsOmepLdyFK*Eh0YU{(R8vMm}el*L1Ip~4I8mz z$#tA;y-UgY9#cOyK8zdi268J($NQ352F#L3pXlXf%9~oseG?D{wOP5%0}PP+l8*0? z$-x|&tA4k(Rw5!23#3?*9aD)4-KVj$&Wy=Euo_}tfRAPm?$U>zMsJID5JezMQe919 z6Ki?>qd3wnz^fxf`Q*C;J!&>><-n|Nk|vCU6v*4S09oZ$eb2=jz<+l5aD+djy%PTK zf3QUch_&QZy@(<86g3)@HRja1StBsGiSA4Vlc?v7y(KEZXe^O7MA-HAO})*SIR-lW zLx}XN{+$bt$|PA^7Yd%ZLsHk0|EHzD!!3OO*S?DFE4zeRE}c^%Yh_bYM0E;ORPZGG zO~bS^#76!E$ju#(9*UEO1A7=z^p``JzS}*@3sE2cY}_q~y_{ojRqwNz&wda^OUklq z30sGU7H(byU~$#xTuEpZL+{EKF2;1V1|ZeZ0@5eA-Xlk=XB>3Pi7=^l8kufj znTFUJfW@@>P*F^vu|*5S>-!$!;6`q;{oLWJvjZ?mPh9iQC(m)ix)yj;0!c1MZ@b;c z?h4T+&BBRN-TF8{m{h0oy?^3fqa+K;G1b;BGXI(6gyE#MG$G_3$Hv`&K*+2mB^zhu zwXjG7vAvF3J7CO`84itWal!mU|L}aI{(+=RT0ls>sTBj%qjZQS|bag%`C&@Q>a`Az(>W9Gg zFWz*)>}gHgznR_b7{8m1=?r^+ z?r$tZE2ad!(0Q}dtXk>_=^ObIrh#@4M~x&rVQ>b{;mC4Q=dT?>JlX^|eFca;oap92 z5VEUFFg;t*GA3)rkf=M9rXqQ@ZK!b^m-TyG?n{5=Pw;9ea%?ifc+o8Iv=0(i0nVYj1m+~=YSz8eG-={c#)(I@A{ zRXnl1?t`0@0H#fJ*DEV3ZKI$j@~)4Qu20e9dDG7SSbV-!cFIb!1-cdfrku?v(NSKd z6OY`MmJEHwNsU~~rxO;*&lX1Dp@q*TN}`vUuH8UrCRDE{GY#T)?f|3TU9ymWy}*fl z%eOmmXy;H(bcwj;-d35S>K_64t{>1VS}OEt)*>#qft2>zE^32jif4erTUlx{KzRnJ zN%THjGW;KWNbF>u_Co1Drb|NF7HRRUm7~#tmEj&VxC!;O?%`8Cu(qtDZq%i$NpuD- zF3Hb=0Y3r~4m;}4`u4xNf%|QU920j2wM|`kS3k+EtJCa;7b?D>57U%3F0NRE!)pK= zVJ=VgCLd;0n`7qMN}mnI^$4eCV-$M&@Wj2t_}%9uqm-tCC;BkRHkZpGES!3hs|41p zz7{!AJLEdqv5MFZhXlSO6*1=j&l#>xo!n|mTufZEz?^E@%{tw|(+2aWj;r_nG-!RC z^hO`(Fa8^nU@l3U{0C+!o2jAD*~nNa2-9*|jL5H;XM)^zq`awHTbDb$r$2We=nCWq z3x*s~Enl_)R*&D@y|#y%?6yL#i<_Jl=I~~ALDl*Ws@Sypcrz8$m=IL!-7u}F^TsM? zA8~XY*O~X}O|P7mE9HUdBsJhj9+}u@UB1^4cb;1wn6Aq+EmOK(V_QF$JE$3=jU0ODFu(L2O$tD1OBi!;!zM z@o3DoyrcP&os+!PxWGs`1eI{kKPeX|V;J&E4~@}&H$`k?&TMXtAk(fhLMQa@ukGaY ziJ1BE%6V@u<&EDQFteppR)L_63s>=2knpe5$g#L;ALT~g=o|Y^9Thut;mK?9&kEFC|V zRt0zOBxQ>~MI7JPGN8P>bIhmem~cCXR2|!>RY#STr3fPPd)LZ)_kt1H#F*V@i&}!;mQ&M^T1IkfR3i9onBiiUsnDxD)bGK7pY0_13 z)L5npXr3xEVMG`6a^(mevd@g`X~LWlr~fTy3RAaA17nv0D^JFr!9!n=x+1%@R=W$X zbP-cmj#s+N7Lt(h6gEqv$zNk`jrbUa6Pg8Fro|0flO z^*)Bl4kzS2oM@T-3)O@QBg~$KfEP?>iH5aZ@*Ud?T0eDXwnYukbaz;U3bwNG&ETencMr?#{rEAV}vu3hw+m3mMCIrHnL? zv8(fB%8j*4==mNa@se7IL>BD-tI$DD-NhnKg+@DzVeoNxpxaqgW1GDrzCak`va7vo zwhuw8OQ1ALThVvfsI99ocG10O%{Kb_1if)W7GTmR<})Hj&GHYsO+U(MqPs56{CICEgpO zRr#YIuMCc#3o)O#U>47(CKR=&X<09egkLMm<2re~;6Qo8GpFYGS#A2EiS)ztPiD{l z8+HugcUeYbX%dvKJ;bj4S@rchoG}JNP18l%C|{Q8iMxEgTe}>4?LX>i_UmA=y3MO@ zW}F8!z#JWb;uM5ka#%0#Ua?dmIY@T}UCc*&Dp6bO0t$rE+m7h4t9UI*RE+h=wrU(x z>MO){XvBE;GbQ~AKj1^7UXeD3(Cv_0>9?(U_^oH)epRH4^f~mcG|7Q*TjVr>M#3Q@0o(KY7d*nlUxd(W+oLKr8L|rLQcRhkQD=Agoaf$}3`r8{h*J~Y5`a?XUZ8&AtNpD=~{ zCJV@%qgt-Se^iIuzDx1zru9sD$ZyuhdFD4x?d3EQAu)298iai}02LA|yyLCj*}~gP zNM)kE7Nhq;B=*$Mu3wB(v@2ZYVOSEL=%4Na9}kBN-!u17MHfnR-4dWCex{D5AFY38Kdzq=}H8eZA+55Cjvh zpZxpr;llnMg>En!dZeaJ*8a6iW1J2ZJ^eP)jlV00L-<;)^0es@K3Yq>hFe5OdjFW@z)adOX~(5 zodeMy!aM&(9F6R%uJo0M#gV>s@0)jSQ0RjhQcDYvC%0Q)CS1u!lzFDGNpfF-FcT9zb!5X8`t2!Uic-+7j1-Q1wD%}NhB>YBS zf_Yi4vo@Ugj5K1*rpowk0Nrv5v{|-qN?Vk`oZOyak$U#-L)R9KaRxLj(5%c0gkYs!kip!M*6QD`PJg)#fBFm;>9R9Azroji&`GC?_F)a6YNqXuNCN?kYt!!AnBYWCPRNd!= zZXYeuiZtr?$J!)MPa5>)@v==pP|xG?J=&rqsDee$8cm^Rxp#Z*-ftsSu?x;gw_B(= zIW2rEPyk0}BZ^F4j{7eel!v8~L|X$x`=YE_hymPZ?-$v;#=?4W_w@k5=8#qQ+k#YL zTvjp18L)>w8fZuHuF2)mFArU5@T2Mc@=+n6=Z3++)+13-#zNKdHx|k@btP$6=I%|} zh@Cvk3E-EDkiqp_1;&Dx<@_b&WgcOg+kQD{e>92z-GUKy>soTSiUr|!K_zW%UsH{1 zdB9sYPWIN)Y>ABzAj)6j>Zr}g{Qk%OgH^;h5BT3#h~rnELWqq8@Bxz3c5I(7mpU_R zHs9HPW1F>{pJrl9045i6Z=UK8EWD13QNf+nws^X-one?xtWl5P;+Bo=IL3JcsW zjvh#=7DqTrAbg-x*8%y)qa~kKU4|};G}qX@y=0?;JP9_asK|F!TeJYJ=TL?PIBe2E zcaj4y!yoPLkOfTiC_)00Yh#ynU-GW8g2zF^ghTo%Wncu3EF=+{u4}1j(3$0>_lcHm zMbSUI4zAEB>WpR{_u?TqcotVvypKYu0tY7oqVp*lI!@|h(kt-!J}~$Dgd|yzrOO6 zawLP&$ImxE#M+bmX?wMx8#X)|l~C0XpO4RDOkS z&x$AeF_38cONj!Otn^M$;%*ftp0Q~5Dt9rx4sUPtk>n7*N6TPO1Zb&v+bS62>(PLz zUmdqky0b&glZDaXxj;W21bgsVVpT)hf-i#jz^;-6%85>ONad7lBJ_fM{$b%}69`R~ zAxP>u`?>hj@@PTb{EokS|4D?zC||7KcMjC|I2 zy-kSH#O>1AgO5O}&Q7da_ZMX&xYhUcMw(gGk?%Q3A1oTTw?q z8xNAqH5n{KDdwMCWI{FSpE$*x+g8&N;^VW2EWP42g2`|dbnD8kNPfKkBgV6VC3h_} zEpZ$KQKZep^Fu$)Sp_gmpKb+ziOoPx>Nyct2!%=03Zk47I{V5t{o79-E|LitO zdadBd21Mwx01y5RGo%fQ{55;VpEN>*zpIkoR~d4DCy3ke1ZH_6wYuXKltbiEGxz6O z10YC#R;z)hc9(I%0m{i6ZF|!9I!Qxau6q5MO#7(;S#y ztQa^G*T;sbFGCGZw|BE5Cpa6=Ed#f2*<7ivgSwG4rybt3Uoi{h5uQFO@NMKSqkrl7 zV_F;1rmviP(O1#Z45qwJ4Xs`B{-mpXh4post$EbY0-bvW>?P?#MqWcJ&W=C_b&L8d z$HS6V0C&$O9SjBpi9CN|V8;T8gZ`Z-s)QvrMPojRzS77LPbim^Ae?_W-D_hhp&h)D zPE<*r$>oDTZbNM26ddT&%o#kUpquAWEqv9-@Tdw>i(m@5ZJU^wMgx5RDw!qFbv5gG zhA!o#we0;Rb2GVWG5~ji%o|YP{erCHG;DBq2Z?N_C3^Rc1 zouj$m$zq#L@U9d@hkvvzcMvg7V;`o+7RlB(c=>k~fgIn9un&yMmT_xJc~x?_)K-mq zk&v$=>;wmVsr$zdgKP;3_t};@NI&fiBiAflxiBes- zo(%Pw5lqspCm`?cKPHl*71;O6kYh%u!dXK~K|=YWSl8dP>NtTq1~Wg-PcH&XlE&6? zOCy+77q#Hbvo>b4hZ(NnuCGf3cUTx0Q_oRj;-R0u@mjlK$fa&JJ{#=}!HXHy0onm| z^pOTTAf0@4c#gnhX|SvO$#Ph9qr@kjp(0oYsDGXcYa$6O3vydhn};9>w;WaK$$qA_ zpRQ#-BhJJ{2torR!(XMByuui+)2f1 zn`$9E`(cR7hdS9YZ74gNI=H-NS&l3hl0=ZdRYZALhehUT>QM^ zOPuIVBGW=S4pmN`H_=VmV1z}^^>_xGV#@37r$gRepg>?}Mh4%pRWIB%7!PQ6&QaZh z>ZLVw4lANLUafJ3H81V_*SJF7V&@Ee_a0!GG6Atc&$CG!rpXuf;I;D|;o-85XLW%J zlk_l5QwYb|H=5{rgEE_|7u1unPzrqRb#iUI_Yf~kj8>-j=RYIdN2cTbPFUV-K|8!U zk(8fvM%E}=v6_rEM4JAD6j}bq2;P)Ktrk~h>`b%Ura)hcI(yN~gfURwkVr@0dYUvD zGBZJ!!spvBZEZnu5qy~bp8XRUVrdAx-4>g3gnOVys$+CvvlXq0*HDr(^Nf!O{yFhA zOSBL~j9WRzEYO(ziBJ<5eWAC%7rDBl1~SXb&{fm+{am0;Cy|q0I#)O4w|`d{y>jb> zsM24UJmO1D6ewK{3GU1CP(iyW5PlA4kH&FwV?c6$uRj8Zf+<2gXT$X4@817+MX-#7 z6YD6lNUIvKzf|RMJ6}X7cqXDHQBueZuGhsOaEnF~%bf0GZJjR0Ox5&&Wu?zl61qH@ z6I>-LyF?Crk`rz^6!2xpU!hkXGnq03Cbk$fSs1kvn*uOyZk@{s1RH-vqiHwwkN4~m z9AF<_|AsEVl4WEQrA5gu3;Q zHmuWHUk5IhUnp0+y2@N_oZ5HcPgwZVCXAl5qMQ|*KhgKaf_k^6E9=dbvS^IPQS}9I zL^g>-QeMf1tB%o#4U>}4D9esM9oQGD(+E64|*C; zEx`l=jydBAutvKQawkjyQqxQlcbZjad0`ocQ^J(){1o7cG#U8&tn~l|X|078>TG3$A)M)#jZ?#=kCO0+?B2?J{$^AU^>KcV z=|sp;mzR>msWaL1liu}IZ8B`y9>vcJ=F7RktJ8G8L zG|)A+;L(8cq?$G5N4J8*!o(&6k-~eh0*nX=xx&{u&-z0BBDar)(5kA@d)u?YL@-)I zoN%`50216IF?XTt=d&1k*P;C{L}lr9O!X%ef#Ve20?!s3I)=!!!;3cDvlSGi#|pX0 zV`67triH_c09*C3a<|sp&#Ud z_P+_-jw;z03^>sFE*j2QBvAl=L?2uddf)JWG_KMMr9!9GYvz{Jt40nwujq?wd;te<`{H#My4W>kt zRUB1!sa*Ku&xz&zRi7+Qf}lq=u`h| zTJ9}cc-doE{W@}7{fG`(1Km3(IxBp-lTEH z(Af86AiNKe60~tznHB=a*kUgx?t0Z{N5F&PNl!v%Y!_bE<9?uk>DqLoydCR-9VC!W zep#Zx6i6?&2utasRAt@L=}dwL*a547 zwHMO~-5THk>688VJ_W~FVqzZ+aMb>B+@V#EBq(+Ar;;3Mf4!OEOa^we7yFf>Z;aCx z)Nkj)i*O%+N}kS&M-JS%k9;_MYVHSRNXW%u)W+U_Ij(gE4Tb@#Ri?tVZXDIB>9biA zP614~lnLtGm-gP?7C0eUu=2<+|oJ z&TCgqN`_WR3F_rX(pqWK62y=5EdM6K@*?{bC)JFQtD|lUkPnyiYduM4B6h21t!+}d z8}W&+OhEFWjF$EWYIR#}#k+EgHMuKIbt0@Z(O3{ix^6Wg20HVcEH57x@A@6MDEiH%|KvcYjAB&*a2czfv5Cr_lGuaK0mOa_!_LZDdDwrX zH?gnlvKHu#X)y(u@nn_G6x@;rMkj{6)-$-o!3xUQ4V)u#u#5rl$Hkq7R&9M;yz0OT?Yyd2Y2!lHmxvf zXa9QlNkkzuA7B?7^`=A6TnSJfzC6V=sq=~5B7V0O!@@y~rc%DF-~@oD-EHH;C;SPy z_W+!Nw&&Y#&GctQP$lw_s-u3@06f@guSIgJVS$hJkh4VZ@42t6lp$R8dRKkl>V~m^ zRw4wI{PUV^nr_#7e8gS2I#WHz{F6V9lmdbL=8p7v5o8FrjxDO`v->eC_-3VxQD z_FvFs+h^wS2N1ZjrlcrdnzOO^Y*kWL`SK3!O;mf=1$kD87B!TiI~m@)UsB@^alWDH zH?5hGbmt0K;1;Um^!r>x1nG^l=;_veD-}xKvq|=3kF@co4@V>oX+Qp?C%aJ)cF&8b4_Cc%rr6;|*qU3Yi zwIAj6q17#s>4!&l>RNm0-cJ^aVP5+W?WdX*Gj#sJOf8b~cLQ_K)fKSC1!-+f^Sab^ z6(GBVH%Ky8sWmgM1w$(#{Xf?_?9$T8Z_jXR`+uE(tfy|CnIF}>?fKxO{QCAl=8N4;%(4>i z)s>#%#D6FZ?Nym2^wAgD9`a~fdou>2I=pJ;_P>n7%=>qWw4cNYL@UBhZzY|n+$&%o zj3`2E=rAvMoxW81bsxJJOrP@BOo@Zd@0up$!J|kY`l&#TWo|Ok?fTPApWra(1X%a~ zq{7cXE85Lhr6ckSnN@5pw0%ndJO*4@cmpQ(m3s>VMSwnfzG6@8AI0E-dl>%@V?q!M zY_widC`c7;>K|)?J$sU*5WStR#MV}fFy%{HH0pIN+6%Tve!G&CL#x`a-0}AvA_bY$ z@Agy3zb{Uech(D#F*J&kUjS2{|u8({Pl|Jr(LkYqDiaCha|XWzW}CppeI-g*TtRhs@c1P0iJ`Pw6GmBT)IWFT@}nBDd*Rb-?ut^wybW=oxE_u%M1Y3!E* z)`*ZK`~8=vY3%|H_m6#8>xYa}Lxt*}b8&I{?Rs`0YFLwwk^+J_JaZ98e9So_+FOVi zk4uM~%)BRgv*7pGUL&G^g4v~yt(51FE7pVoKAXTcWL?4&|2 z6!`N3c>EVCIg2!(SM+lNF%`^b=bycdbK~+bv;^sox>ApaJi4Jk=sMrKAaj*%A+K0q zT!Sx0!}*o-m=k7sPX=4^AhYJaH8gVK0r;q@q2L~!-|Y-Pdbf@i2V&{X^mc(}=;9cs zznb0kf1su}%hs@NQEPQ|?ImUAy(mmCi_Ayzl^^H-eZq6`YI^Os&*~ar=PnnqSC4{j zl4J=A78O%pmx(<7mZ|MJH4u#ilBQ&^lQ8d%#ZqPR=w=(DCWrYvC9vpq%abI;sN=rf zyNu8;m6M&L!AhO`JvRvZ$sZOwjw}jm{wqPOjx#$oJ449hu`du80?h4as$9IGFzf|e z(xZjQUH%c2w8I{sJHZV92z7p6=@zZGc7dlS7x`Ngr2n_H(iaEa^!CTMUJ0U(GCR!{p^(sc1n5hxe)mguX^?YdivTrT=>BkZHe<}=;^QwKJ}?;{kwr{Ks=85_@c*CzHA93 zXUQjlWKy+`F1iD#0?bL-sQY2wVuS?@d~xGS6?hGEc7vCJm0eM+a~(ca$hX24Vg1n- zyRHFb=bMAht*|E51-Nl;VRbiL;IscWxqJVl9^R_`7OR{)-71Z7@s$3j@+i~=0T=@-wHoH zL8qm86(c5MnAc#Yg;#3l9s#bByyp%|b+xHAe`SPZz%e7*oNi;Ojhq|S@Biohh{IgQ z8VyJk{zbR}=L>v3ed&)2Y*I-B_miG&j2GnX{(68Nj7;j!IVpIOx$Ocp_m9dH}{D#tU+~Zo&)ny zNsgUr;FH2Q*xK}e6`uSX&n>Y=kCIGfw$P6<#)sfQX* zuEt^ztG}6hbu!-7w$zj2T$w>(ms{;9{4qw()GTLHnlR$Fwo_Ta|IlSBfG3He+cC({A5AQTL^K=aX*j;HX5F!q@!n@OSq3U zf3-R4n!*0B_M4C1%>@grM>%5nnvxDPzyB30jEg(88>t+7hm)-6STThk^&DRlk|$^w z;%5CXRD<`grn9F$m~WG8cIf>gr-YE2Z=U!!gPjZZq^W&c^=ao{HP5^xVg2ogS|6{@ z#Hq^-&z=thd?H!?(8$Y=+i8||Sa^froA+TjO|qa$`nu-ZS04!c&n)qyOh7yv-+1<- ze^VcxTW+7v=f~2(jenfLVFj~yi6^fz$SWRk^n@AK`|gIB%-$_ROTHoLo7q&m5JypR z^W@=Yb0xWVSbqOBo2OkGZP_bd;YV1K>FBwvW= zo}7LtTgf?((%VQFg`PI5W2+w*9Cq9dNCU`H1 z6N2>DeiVHQ#Lr}Nk!P&dBENblQH47}BfDi-Gv*)hTeO#A{LlF0v*RN+-OQ>E z<949dam8-%COKYT%fQb)A)3f2P~N;NsmSO=fmqz ztWm9D$&Jy_!rjYf>)HgT$1cGW(Wj}0S$5#AKZ`8;L;OI@E^~iCKY}6bVg_@jcFSzP z5Ckvv%s^;`B|Uew(zflrLHM0~Y_Ry%98_qH6)!8ODd8dqTdjSpzS?Hqy&~ntRzyQT&&0=g=|ie;Lh0 zZW46tFMH`+WD%e9$@|#ISBAA7oE?uZ?I7%-lx9V*z=+P+gJFZUnZ9xf;?L;I%}Bnh zbLx~qTda8|LU2~!oZDY%@ZT~oP`b?*RJH5^m${S>LYzL{7ph4=)U3vT;w1N*KeGA` z-`CfY<0fMbae9S(y)kbvXW7!_#$5uUXIklpdrfbfPQ0fo|61~p%NpMP9x)}pU?{S1 zdz3w)P_6V!<2qrZ*s!vGxTrAS5_Z~S%VepmFZ)LY2H70jkL42SC#r?b~lPK^-#F(Tc0+7_mta!I?2o6)4Ejgw%92yz`|1>$;L(g;v2po z`-iVI${RASP0a$;Qn3C%M^^#WR?|ekmKI8IcPLU^in~K`cQ0HM7Ljxn8VO>?s&($R9G}JP0*4C* z&FIUbc*ZZl0GUt+8J_ghiL-p0o_)aaw-w7wPXa11t7iU6cvnwGw2L0lpuMm5ug1i{ z#+(MQw5LyDh0aLn^6V4X^Lt-7fNa8WsV2mx!wwL1QX_UOQDswG1Hg!GiDrLoPP3VQ z18{mMHs<;TGI1AE4&7|l(N$Md1e&M!oec0BLM4Hfza(x*wht@$tZ6R+wrSx%)6=x1 zIu;UMa8K~MnBW}>NMhvi~K zXk$Sd;qky@SqIo-_#fKVT)qL_$l#h)8qx|{re(x3`7f{2*WMEkOReOn(I;%0ua54AyZ28CT;a>d289fY!SUx*C~4>!t-=;~ApNn2;{T ze77v&z3#hgUQVr0)aa6Nu(JF2#=aO#5>B)CG*Re;wKIGdeO7ab)6t&Y1(-U(548@0 zpqd;!a#}_=l{F^VdqL+;+crAGv&|6)(k^5AO2IVo#}p9_AHdJ z0P(TzeFU2oI#V4OP+T66VnG7r^Bo>*tuz}a>A=l(edCp9iaJL_y&9A}miU8iEYg0> z8Y5#A)`*O+pn~Tl+!BHbYx2-PpaO&>-0a7TbL9f5toy*+Xw+-Ld3?x>SiWYDAapMu z70-d8(0Q-_9p|fuF)i4qNg^S$+{*ayK^1uH7W$seKC6Diq1&eA69730M{#45TMoF0 z8X7vsn-!T5APKrr0~GqjI@+(dh1kF*%}S%JOsxhtLC{nVUM>cSHF2B@Y>%I>?_ala zUb&91Lkf!1^@iCnS;leKUu|q?UmVva=XFdMCiyra*HC;2PMLG_%dy&?l@>M`W=-Ak z!0jp(-b9RJyj$m?Go&K2xw3kbRDdq;o=hK@l@l_TJ!=KoGExS5;e~2(gB3AHGuiYM zaQg)RDs%Nvfv?^IR>l{2ahRQuK05GMo$1OPo7yQr8VS%8@H^WkixE(5ZAfay z1g10sN`}EynFan#+`oN@K#$O|;bQ%~eC0DNC5Y7vd!;i)uhzi!Psxu@y_-^ed5a*8 zgvg+n-By-(-$gC;7^79TJON3%@A8vEDq5)53z=xQX*7=Vt9q&O`>A~h%ecMe5 zs|)~K2w9P8|5|u`EGB3@AK;Man(=zOiq0j1J}-fVQWVY%u7KN)TL ztch7IZ%cR3(eIpH|H89Zkm@L=FCtUs+*t0&w>hH^H8$Ax&G1sjhHy@zo{X|UCM4PP z-%h5degwM#_5N#%y1C{F`feji5~`H5hswQuLj%I+eBfV>@NA%8)lHe1c$$C~DcT_iK6w!M>{QYKes-q0LxyQ9TTmCyKgz`iBF-~=90UAXVvf3E!IbC?ZQ_JAK zdWH=N6f@0#wl0{1&BuzGvdp3 z4jhhs^@1EGden%rjoGVFPN|Lwtvf-tnEP?oAJQE$s=5pQ=|tvhFu$l~t7v}PAtM4H z^HWyeuq?)$+B1z>d2WbU2&@8x$6fvS1l{?6r8GNC>HBi7(vMe|h?Ww5x z!NGILA2^2%Qf2^{GA>Q*Kaoj2b}+6AcRz;t=qUk%975A>%SPPnS->pXlpOiLGk&yx z${cO&8}>6&L~wg$1RF7}uBf)Owl(@l`4MR9W(9CjS1`f8Y-k;LF#7)T848hFdC$~J zwvldUe2VGNqC&X^R_4@xz{P>!l*~Z>eZeQumlEt?GQ6zP9x%*P1l7o!UdGaDOdv@| z-Z+-m-TJZ35eE=Q-9)M%Xj_nY>EcH;8 ztwc!Xgrhx+*&Km3i!`A?@!RGsx|S%L+DyQB?8>F3D9HE+Ud5E7Y*)L}a`CuNY> z#=;05)uI&kXlR>1m67VmQ(wBbfVy1**YO}w-7UEvdnNgZx>883Ocov$EB(w>KcuWt zvLP9ZLF=(G(290yUT7UYwCU zMBDy{BK63oA8g!EjkVLdpqZQNydKE}0UQ+~R1osj z)C&-p=(DF!oUGD4p#>0ZT*quS>FGm%(2WAFJZi0}0Ls4Vr758QXsIFUcfC#c9)MRN za0@FD8*=h{Q^!14PhJ4_H6^>s`CCAm_};fYPC^)V@eHSE#90;eb z>F8>C_L&J5#7lC^I7utzoAgR5wu6CqWOEQ3_@z>hwJ74or1o>c2`Q(br!OP;ut_3+ z6ANd;Yl9AaUneoRXssA$dZ`9fDv`M7iuO?#dMoYsj=}#Nz?q~nTwg#&$6(<@z%870 zi4U6Uz&(m{yKcgQ!1f*8H)>QzCV=4OtD60*XxMXMq6SwchMXO|5tR~9$nKlk+Mdo* z;XEcs3cX*m%N)1!k_N7!g}#`Rr(vp;BT(TwQ{Pm|ctLE*akKn&rlq*FSfqRw|pc<%E zHHp1%;vcL6gkeS?GM|&k%1yb=$|8Wf=fuxJUnbe+F%_^PPn*R$?$&KH{RxoccK?fD zRDepa6c<0uSb<7K9CSK}+x$Myda5MG=20FXGMssrJ`|(|9On*Qe3p^UQovyVGwGX3 z{^Euxy*5b$k6Ae#&A0bUF-wk^{!r-2ZuM-Oej z)~j5-6~r1$vQ}-=!b`TAJ(Sj{=38xg^$r{@9Eg;lhxWO`YjnY&Ca7i@H@2p_Us+TR zc*_-fJt?47j|cJo0;I0?I+ONGAHwC6bl)@#71`g*;*VOv13B{Ix`G#LtOKW5LB>e9 zx!u*4CHgfbbe^j8nO=hCRvJ}QGubU z0^x1k<}VMPu=DB}*lbDBSVO@Cwoa7D*-qL>M{?`331*~`vXE(95N?9 zJ6)&)_x(a4i!JFL2g2YdiO`tTpsdQHBvvq;BxUVl<;~tM03>3M7ZuwhtVhG70i+Mj zZjRj(KaatO5EZHhZ7Fh^-$rsy=lA6muV>(8&jnl>GEBs=n$k*7WfT}Chd9h~G^#rr zF@Zgj`qoaTYcmlWjDe5%p$xqylQstw^k7lhtxsPl5QJ(gtb(98#$5xdQp0(x9FK2H`ZZAe~A?3KK z%_@beYevAFT8T4XV=J(ejx^9nDYPLUVM5YjQ446q78euj7Bd8{O9mToib3W%jxvjMQu3H*-gD->uUh!~I)4L$xP%1#@o1B94| zHeL5CrCIXI0oPDNWsLVH>vr!nf!p?><<~0*qYc@k@*Th1dlF3Jj|mox?(Z z0}l(HIdC(p?JA@iKI(tNZFfAj)GvM3;dD@QCM}yVKS*Q*@22;K6_T_D;4*>BD<$%B z7bl!gl5N9yLs5G0KCh+unSxF~;d-LlP8({3_(b8ZTW)kt2_dq6^h0C4*%uaD#%W$!`yOO*9cSh`_IBZ=sUNo+JxL5dpts;N^D!4b^{lwikdYzHqrpi#TTYP%R` zi%TaZ7+TX83M^CKlc^$+70W-`6c`+fR z<>xDNO+-8eYqzi~W8BoXVK%Sf0A8k_G2A`fbvAj}fI(XP?QSJD&>IBY)kVR19uuF8 zgFk-(lRCK^bHD!F79jL6Uag$3U3E0SmtMiwXjN}{o7XU2;4p{B`m#PIl$eTGz>)y) z@mq8F2A)6#<+|Zfr4?laF}X>PQ-xZs)Sj@jQADNg1M;GFL>+wPoj~YTla}SQV0DA7 z8KpY^No8P5qeOkmnjCr*7GzN^-+WAZ&hmaA2V$bT<+s~2*?2Hx2$ZxBl_%g)=Dr=% z1BRFOMR^TRfae+uZKh8F)~u+XaWuzSK&g*_uEoF1<_`t?1#9b!ozGpkTk$_8)wNB{ zU;piGU01V!TY~#a5te;YPNa|om|_mrhNu#+)fzbP0x z`9HiRlR|1|Om_31?YpuZlv)X8h*=6+ns71njP&IHy(vQZPyM_4XDn{D)*2< zAgiY@jiqw3HUYb!IJs{o#$w6|BDKQL#HW4h$w^=tX|sX*{*0`pG$T~L!Djp|=e0W? zWT)D>cvNrduZEOhwN8Z7-53|~G-rV@8zXSThi4g>{}r@O3AlE9wPQEe5(dpK#b}im zz}`~1EoVAe==-qM76X8S?=7$BGNlHvP@S;bZI}5{Ng(P5QsYc_onreCxGep+t0o)N z;aBXl3|nt?3)Svu$RMY!YdrYF7dkoR=9IP3DhsSqUE*4;`E5%XCoR~mxuowJ)|NiC zC?&YTv3AQWpuopl)D#v?=(@keNT~L&>tBY5y>A4~@8Ps1dinomtYqS77-^P|%4Unc zBvKM-vTXC_ERZAKoTqJHn?%_3kDV})Z7$!r;pn#z(Qk|3HOF?GDIB3I{Bxll=M1s6 z`9{iL`_8LO&Ea9$Zobs@`M(b7P-6|-fo;E79B)X&pO+1%ufAUfrbfo3xw!Vh%;CQk zGk(yQyxQFledmQv$trf7=jI0{h7p}g&amCAd5=gh@vC7mKkmrKk$;^JK(_CTZzZIy z)(xKka*npI>i3g%`EfO0^RJ}bA(&wVb~B8kynH;186G|Wxk>#(Ql=U z?ZH+L`9thCA+0!@t~t;D*%yvXmt;f?Hqy_Z%^Bwgnk&ubtj^P6YyRx(c5qE7`b6c0#{sZ~xPcdynSgq_V9& z0K!>RqG7*S@KeoGr}xe#<|om>mRXZr^J!FWu!v?3*nvE?5Ev2iX_t-ilDAT~U(E2{ zHEF-$CD;4>(I%i0c2$L}?lRHbygkOp`!)@W4mDZZA==&5|h zw<-WpJ0D6B|7I67sU|NIvXdp>n}v1+bzqVwLnm-&Hx;nm)DPI*OoKWjkfX$|{l|kS zBa^uo>2H4TV(Sxoe~^H(H>RzAw#JSst|RoQ)R07d(r+SccSrFPXJnL-c^7tNr`-HO zvWL0h_fFV*H(+kQ&;0uPcdD~x(w6U4)YTeKXYmH^5)6jqF*Bi&wDcV{*a=ao$ zORIG#=UL7N;86V;)Bee3vi_fv*I@&5MbY12G0|Mfm&dv88WKp@LSguQV_CKcu^D1{ zAI%Acm+|0xEH)V^wI%KqB!Omth7lif%$H@y+~DNgC`E0sAhBuMYx*gYmR9^dZw)?Q zD7hc`qFA*`;~4wxpzAllYg?gI428y@SC0tO*9PX>78&=Mq{m4K(|`Zj;7K+Z+|EjQ z(_^TC!S}+TMKVXf(yr+Ts2?qu0cH>dUy zv!EYy4q_STs&x2nS6PJIU@XiQW@Da9(Q?hI{(9=efCP? z6FI@nLbJ61f&)R^tr=?)E1LzXf}rBp_gf3P&!!#^X6PPalYv_diwDGBjIs?$nH?V)$Ct6BkHJ(FP1052D~|bQ?iZ69>1=84}5Ny z-rC8I78ZOUL=w62os>qm%Bihg;cp28W_h@ z52ds?PI&zlvVrquGjguoRS5dKAsj5mh?`E)7cg9Wt4sE0Sul{zrTxwA38++Kgpw-; zavY1W-XmNnnw|0=ABD~Vn`6g$8TQuU?KIYqQaO#WyKq*Y22yKHnJC6zNzpaw4l}g` znmhw1`CFZUmRX}{UM%CkvPQHU!w*vou^ZW+DVrv#cG}Ke7&zlTU0D`*8hG$u zP-+HU*|Ime+-peUm7!cwwLRy-yN5ee|3E2KT2esOq!A^8s3cYAfXT@PM~)*kC5(xR zx__K{hwjfDyC`{w%l@Fd#)`>KrnD0->CXT;3u@RV?XrJXT(Isx_ZFYIU)+M|zJB|Z z%ezzml~|Ip&_Fl;`3N}DxROE`Ss3#< zgOwyz8IwM=p5P&fDvQ+UDb>&PO8@n;N?>qbZQ87y0Vtw2XMmAAQLU%{whFWR$!j*Z1^z;|xK$x<2xU;YqQ;MXMe?XpYc2Hf`F zA)nR$VPG!$)uc6fNrI#No)u*jBr3x5{fjv*LDdhL)v(C!1@`dmOmC<5pGUk_EZejc zYk3EAg-O(L3`BF%J9Q*o46S|n&!O8HzQ5^_q78(Uf4_UXC}>!}+l`fz7L%Z+Eb)^P zp-DEH1^mvdk=)o4#5I*H${tN&0Oik z%iISg9U?8k`GPsi;S)M&=hfl1ceN=srd9&a-^X>{tvj$ZeOY+KL#{06F>uCi|gERNOse*EoA zZ~bFU@McyqcI(UJ8@3t2+g$@@9ZKO`Yg*BO(F0JwU;Mrp0uSW=ih#ZLdu%BJf-agk zq2R9J&%d9$dvnOKLqMe$dDrX}YOx3hPbF437aHddTgV0v0?xJT%oGAe^>qEm493~S zA_Qz0c=y5I{c$`oAp_V)K`KVeZtI7iU%83zlPBwL<{oKL8UAdtqU=T>(E!QsYi$L62UPRgtAbWMBZ5QWQw`m%TG zb_WLX!QmU*hm_RQWYdV9CSmptvCLMz|H(@MZ9cSEKQnS*PXF=)UYy=WCK9ibiguS? zuMB%J_!9Yyx2Kx3e11QL3RMS4|N`s(W1_Z{Ub(E`OTy7{7nLb)&m@ z0wuX)=`jq|bH-oHAIXXQS$=f(v-UD#gwNUJlf?i|)6>e0QvgNw|cPyfOh$G#& z{g9%eQcn0~HRFIQvHILbtY@_fof;i4pp@V^B$#YZ(X5{vX}ho>mr}yy&WssXC@4K*6;s%R8h59th2U3%gHrj!_S@H+QfZD7-v;a)AmHa zNBtUSQW=4fppk&@I)RMz@DuVw!E*fD!W@ot)Sj;Vkj5d6T37V zCfBG^sAN3N-{JZxm#;H&J6^K7pmI6N4M9V;xDrU(4Q|;bH4i!}->TMHNCTO zIcV9U`CDg*+qS*(=Tgu0z zP%T?tD*!z^2nO|qfO0D<7&mdxZ%59Ds#YUOMrJ=H1XEf_DaRZRkpfukrJ6Ur$HKak zml8&vdoc1og)Q0){_w(wo#CT+G#J<=oPV#BuJEEcjPP`({f&A4dsmH_eA!BL7Iv#< zDm)*6!Wv#Lwc_`N&1iQ*p-N*5TC#)l9MRuzxO%V`VM)UeJ&w?gnU_HBnGIZ6OvuocIzc!*ss?2)26o(mbp-GQm$-+oZi-GlY5cexLv4{!|(+57&wW6U^9qRSpla#aT0_zv;<{1c| z2)ei@=s->r?TluC_&e4o9=-4wy9Qkp-c9A3>GGD=Kwqv`Gao%q}c&NU#=enj<*6H>8Eda_k{FEblXr;Q75 zK90yYVppshoLtNP7qFyygjj!U^Cd5p8+b|qHj&(eJ~by~4_sKN-&VKmLy&LP`2rkO z-1a6D+$TNwcLxWe!Waf6@ST8twvuM2wP9W1bJj?^Hj>{ef?PtQ8X?E-M@l9i;&3&z04WxF3mxC zEOn%KKMs!pctiuZUkf9neXJ%Q%+;X@Ee8*0OT>l{5#K-tk$7Lag9EI}&z@5|Iakkp zBEN?b+j~Y3Xt9(2VtHqJaD`CeU1cm4FmSue-eb2#l+G-S4h+^%=R^cqV%Ht*2W-zaDwFKU2S)SUK}T+0XI}tt{DbINq7py~KPammtvl zF9OPq?pW|49S~UIuqn#wO_E?t-{5vZtzSoH1D- zu_adNV$Q2DB2dBZMCw$CEPy~^KHfXzib%nNFo9Ux zKY-g@sN`w|^r1JX<0W?Flpr8-^UK-KwA=Gf1r8Y5&W2Fl8kva^3yIM0e)t^q#F-~w z{9}y+NJPzivnBJZ;~X2Wuyhn4dXf)-<-x1rnH3o*W8voOwb78Hd~Rr=4*rQXKZVup zJqJ36#~(Gj`-J=ZLzjO$^^9k2jIgcn9_fr;MSb&}r29#K+3E^-O==x`TV(;iA@5cY zcAZ@-E&&xjSmV)La+Nh!ieU@q(l0fq?ut77OMB5FTfpes>hGn`Uej5K1|UZXM-*Fp z2IP&WC=PEfL8_63?o25>e_c@ZiD0#~Tz!4FkkgR%<Wgx<_|Gc4AL0$K=eg zHRB>%VdPVp>Z~6nN%monEoAGeP$@auHYDA^Bdyq=Aij;wtd*iYT(K<*!BXiRD=g$6 z|EeW^eCFa4Nu9D!_HLm>2&eVZSGYtD!FkLZo=DDNCFF8A_WMUGm(d4R9LBCAA$rQ~ zq|UCy^@)7(3mMdN83Y$SK55jID};X6KZA&!(#z6Ax|{nwflR!dKtKBcBEq8Hj4HeYDs zU>Pyf3!`Vqdp@N0*zID%fj+$n8`&DwLoJ0+mv*Ofm8`)}8TzqJ-jeJ85!I>AxyZZo?I%?L*wbl0U{V*%1q z8<{NtkYsLq?|utDgfLG$2f>Mg9cuTyy6Y{9VDE7ZW_Gjk*i?D-+TIkrb@`p36cl1m z9ZJwd5V)jJh;Fo@I9V^0@}Gs>s`K=o9xg3<1wR3=O0rKl>$ZdTzo*RTwm{$gT$B>W zPoZ(KNEgk{71NiCcc1F?SP&gYztW7v+$aH8>fNa9n`LFG#WUXTUY+*s6%CuWg9x4a znlu7JM}sQF)odm;WS;6dAXOf}jpjN)>OVcJs~83ci$m;RdYxN@_+5&Wx^vvGe(TKc zFkI~?d58J#rg?v6RvEw?HCWQ|k;Yt4<&RgqCrKSP)(sBw{Wdx2`_*+-?Q}3fh<@AH z3$cN`c~q+9%9UM_rT#6bJ$iy=>D(mqHawtBVmY0ucR7&LD)Cg7r0V*?DDSZCIf&x- z7fV!UvAwF=ZCOGy31k9=8scB6pbdjQZiuF5jDr9tNpMF|hN)(jS82MW3=az9pPu3E zRZ)@LE`;GX#iSXe5`~;(j_Q{Y8=2P^)W$J1f;$wR^rHBuEG;>S?hDv`+!hk3hhaOh z^>vdEpSz6&I3mjtNYQ=O@xzf`uQ3!LHl}@(+4h|8i9FpM8=6Cq2fxeRHL05eSFzrO zy_#1;?vfX%&=()jb7I%%YVOt5LyPUxFk~)A7$%Xkr6$_ZuAvPw*<^bY58r+RGjPXcdfw4s)%$;w<_WOAix1iW-5djmKydoo40{ zDlf%MA9KO#B*iuJmqGG4%(apoN9OBlZlmX~CNt6vJH%Z>-)3;Rm3 z5=7TU(qHCAr-Py_7=cECG3mAwertC$7kMLE8SWi2+lbS}`viCn5=hJM)xFm+nO1qG~Ny|1qD=k=@y#<8?Q%fTJ}kp)r{#`fz@t`3(-g z{c{Z7S**iX-#+lvvMKEM92TFglx08osze-ytgCF06~0Ezei)*xesA+cAYOihplW|u zi2OmMaXIw>iA!!dPg;fl-<)tQrFq#>BNx&Bqp)+)8Q33b+uEKyD?fnhFpId{ID4$YFM0Q$ z*60EnW$k?2`x&3JMe-`$!G{_dow;7L{pYn)HDl!y!i!ZD`$*z?;nUAmKNnlVxPM2Z z4UP*Me#(4PdxU6QDvyNGm$olcDPwe!PA#7BGuPainrB-4>Ok8aq|%{g-Z9@Qo&^~5 zaXCuH95f-Ry$oGQizY%)`54IrTuNbD!Gx|C`6ME`&Qu! z=fWr_G0Tjh(@3a?-o>~Td!-$r`N{Gu)|74PYUm*l<$BrpK|g> zzO7}CT#WJ7tr-HT8Vm5&A-O_i^J9Pf>m&D4*WD%O38{8FGCArX)#|sLW1W)Zcx%VT zZxbtpm-RW*)uOMCjYM9NxTZXrh6tKv4L;b{*H^CjYpJ*OvLnK-th>htGo}tqdu;XB zlHCpTC$GbDz*m>w7!nE(6jTAR@x%@46(?2nW7=u*3>^-r+@w2j3M2x!#ykL#0cve)&2sHwzwwnnmY%J8V?9r=6zW z8s0N!F{y>y>Sr7_J)cj6%=^+8Ys~~vouEaih}5ENQ3W0d=AP&)afZCasKv#^ zT}kL@z4>081?O2SkA-z4yZj$Q1=gITv1og{M-B`Qn0W%_MdUsJ`fFoaFhky(g#UP- zPEc5dWO>6@Gww{PU9>YLhe=(t-eO2efU_*b>hLFfQNw=b@dq~ozW@CpvA0*N`Hx-) zp1fkduptYH8cd%(H?E4)(+9zCrJlLJsQsedztm`?R#;%nic7BZ?t6{?>63aRID1xJiFa z#50Fem^|xj_N{xM)YCHVP!i)G3H%DfI3~$sYQE+;A!hMLTI5NqE$m&^U#t((4Ia|< zUVNr{TR=-jy%bD&lGp65pWFKQU01Y^%DE-L2MJLOy5i)Ab3XslOE~0IhGn%%+GWne zzv;LrX6>%10g0y$Si-l%wS5is`ZYFsrJkT0SN2}CM*S>CP*lG~;;J=h{r66ErvW?9 z@WnU2riHR@ZuyFu~QE1 z;jrxL%;oh-Vg``7uxgK9OLhF1h%Wn%Ml#KN!R^RMVhbw^2q6UvOs*=?zYpNFfFue3 zgf@3ne6|R)W4j@33>+#UINOF!ThzX5y}eN>&5QnNQWbmA{Pkw@`BaWdvPC44B0;E z4fN)3o-7RI+)+KS#iy!S(`0`0-;cDLQn2ILd)HGRy)o;g+{8u3Dpgi+ zG{g>_SorFpnQvF;{--ODPsnT=a zDCk2Dw9HRFtO>CJR=;TH+Cosmd0aXyaxM-lDI^l=O4HE>UnjT=Zx=eA58J;`3G`4I z=E(*qw!#(|JdlAm7T1ZWsI&XxhZwArQKU+&xFvx%Bfk=PvmW$XBsxwfydqD(0@s>H z#_qqXAdM3#j$gAUdW#Q)3P+2%mj@&Bg{SsVvRt_NWH06J{ZecxdRX$m>HApa4K8Ic z|IODO=*wL3atV6lBR|poAe9nLAm=J^-b&6J)p7Z<2oz&Ez03$`-pfS2z*xt{2-`<7_bW!PuQl&3LA4{EbkRS(I^4@4EQ&>bT!*<$f6hgzffo@z-LQ6 z{=3eghWGbb9)a&`3ry!+XwPb@@AiY8*l=A=h0@Dh57ah@;}0X+2B!wi8g!m7b-B5? ziC71*D=BH>@@P-ckvshyohQC#A2tho_OPhlB-R$+@TteW$$8B2fFFeQ2?& za>0hTIi%-%-&d$yn?8T^zOu(X?D0vw9{$$ly2XjeYG;x~C>&L~l}T)Xn`6{(9iO0L zNL0?Gi-Y!qHL_XvFJQOgH(=Ae}{{je_NM!9pd`V5=lkesH~Z34afHmWV`}v zMfhJ_K$t2cM`y40h5b<$O>LY$Kr_DOw&o#+qgPi zL*CxXxho_N6ZOa*QWS#PoqHW&N%f)OZ6+7?^4D8xJ>jgk@CMA-wDfkpsrOpK$>T$u z?5V;i5QqrjpMTlz6^J3<^BL7|^bV4^#9lb-ylvjFnsqAA8SHG3HrxvE|5qEaVZR^p zhQU?~8B6TEgt!NrAWWL>CcMxaZ>jguA%=|IvP(VST*H( zDveTj?Od_%Z)iLFl+91}@PQ5C2DhYV*_XiT=hC-Nh~dph_Ma4A=Y=y~Gh7UUc01S3 zzWiHk$hn?N5XL^tdoRWQmwxQs_Kwy8fJZaV=j3X|H@$q7 z^xt&&uFPvV_fY@V(gb52(S0><|E{90MrBM%_>-9pp7;+r!Lb7WlpJoT<6?ii&C69F zSF_TjOVS4(f4yBUvT%ZAzvJE zKjiDz-}W`_`}4Jx+tcx}XILYPqAQTX?{SJ^Yyj9~wk4|2Yf5rL?NW6)Gp6Y?yB$Yo zy}&c{%f&SGFtTr4LXG_A=H}C8w9E+B&;I3@%LU?V(Bsi{BRW%;&XjF%W728bORaP+ zf=D^e-8LvfiQc(Fo%@@OUk#G@ho7^UC%>+h(<;qoZqHtyfP=mblSx6U)jP4>?y_cg z;aE8~O#{&}%PV!1zQ#PRvj>tTSO{C;801AY5$d+th6E{bu7ciPL?HBaw33PYJU3{U zLE>lI^K41kmq6Ni-#!1Uv}=eeXRCpheJQtx8??rz^DG^O0mtT{DO6Y_M)+UwMQVTt z@kWHct*X;6y1_Py&k5PSDsn zu-jyG{JA?WkTOg7LrmZ7&k_|?IvywC`A$z}@*MSU9$IA7MTeH9bBPGg9Lw$BRq@n< zF523}Y0|5BP(*hJYymMo;ayz!BB``342@PyCNMoINAvOplDzM%i9M(*e$wR zSlhm1TP#Zz+I($KGuW^@4u=K6lD%w?{T!ZKkAv=qs|&#oK55N?^9yVp!0V*uSjgK7O!lue%-UJ@G59g$TAM_dZznSBeut_n?DhKx8cBTm5~PR zK@kwVwa&0Kj{G~)nS4pW$UV}T{(7CBZfP9bWUzOwOEA*;@mL~5$HIu_GO;S!(m2T@ zaw7U+T5E3H!Z_8VZQ{70Cf>*NRd5-)kv#gBqjs|W%iiE~sh>yA#Q5XJ8$YWI0-H7Z zOF(s&g>ivLDo?}8);+lsI5o`*r)NT>6$T856J zFzw}R^{}OJ$Mw&NXi?bBKr}emHhlFL8vTW+kNHK=M|=Ypr=A0?^w=(-omFX`5JSoJ zLk!MwUyns)=@7jIaS`Jb51YlQE`KXMrxS47R6p}^^`*6gS54Xz-DY)*Wmk(mT}#hg zgK6qDCB@mefWL@;v)e?r-omiIKg}_YNbJZ%a$KBcz|b&VgUJ52hMvheG^2`bI*)Lr zZKEM++cNcIc}$>xm_g6_o{#02 zl)~ELxqnzs@Abk(IraWd2Hg`1ttEZuuZw2~<+V#7rI2F?0AcKB! zN~F8Sq&y5_{y%xYlMtSe5n;yHM3}(?3+i=*J=!(CpSt(8f?1!8#^Dr(jBucZ11l`M z2%5h8UrYff|noy%es`gK1+kuL>>=^WP~R@DoVIeZ$BKU z;ZO(%a~LR?#K6hD)!`ryQ=p5*7ovt0OA1R~wsn6$J^JS5-SqgI7iPNCjNQ$YSNu02 zX>d6mxUde)@)Urr0KqGcC*4#zZ-+w|97^Dj3WsJm#KNHl4!N*{!j`vAg;gg4s}30* z#{P~1ro()X4nOKm95`seffEjHa6o~Q8YUhMz9aG-;iFZzFgA59P3>VaEH@S$OVO9J78 zZ<7KaA3i#m*t_nG-M>8isXBL!|H4Hp#f-P68IyIEZ6s4Q~uv&HvwH2=8J3zpGsyW*^zXI0U`E z=`4=HvW@6qG9F!>eR+S;E&xHP+vyXqMw=I|2uXl5OT%)oO)TMDJBt~+crR6_$#A~{ zoXZhjkKYd5nF4cynP6;9D)1f=c+Vp|oID=Z z$LgU&t;;{1N!e!XVg~hz{g0$O52$J1;sCBfN`oY&d7epyMkQ&aIj2#h2Bjj2NC!`X5IUyAyfvN_PI`c~ge&9ENO|=- z=g^yqDx{5~+JE%+{O&zK@!m(D+ z4%z^6f06r(+(~phg_F=(z;Ql?<2Z+CXg-;Z3FCy&N^#?Z`~q?MGmY{|S|;2P7!tHa z$$5v#{z$h`z>A~uk|?XG;ThU11RtLaAI!jQ+Op)Z!fE8NuGxhC6p#Us>(A1k*Pt5y z*+I8Z5_2r5?7>t2UuZ49Ec~9O+OFP7?$saHI)D zB8V;p&;0s#{hn6s8~UkTk@Lh!D?t!pw`MZ^xM;aZ2YnYwU+%??gaVw|0!uALS5@2+ zO8)l!Q)b@CWyoTt^1;)>t||VL|IJVO$Z4o_d^>nD>uodjRnzW1x6$RA)#T%&5|uxF zKDPPKJ8(|%Q~ygRscA!(q0SSvB$84iKWcvZv{g(*k@r76GCEZKj8tXi2;(JZPllAq9T?9Tr*{;|Ku(F|7E*9))70$kUuO=| zd$$aeM~Y;Vf{2}@!K_Kx!+mq7Oi5@yd~_iJH6iCuUNCgE{Q4|!Tz#Y#^#<`MF zMOCb<-Tk4E9%B53Tv8WOQX%t^aaS%GR&(w*d3PU zK%RBq1R#1ZK~7QAl7mz9;sm{jv`CcI$6AdClIM2@U${swRxq039>)V&r|1u4Lf=Rb zL5})GjFA6y*Y9)WzTaga2iyZu;4;VnHG%;~R|`|g032l2U7hWq4RjEckW)fV2{|R? zDv_&1t`a$BoKqi<{ssg<9&iG^Knv7^lZ4%$PnOH8QglU`}4r*q{myWrS0RfI=*xqrl6836upA**efDWQJRl+yda+`GW^azIrc0#K{s`TkLnRI!_7?M!?G>p zi>76UTLu@>B;Z9LMFKShG9=(6!B5E+@?Dj3(yV;llx}Y0}9v%LIDRb2b(}3pclK4=y;{z zki`Rwq@OYkbX-Xku>)8V`jp54Y%_An%!5Y508tB~7DO^6$`Tc;0{KSmuw=>%Xw)u~(D58Sgn=i`=u1>Tw*JN=RL=_%yUI(YL-5;EjFJk#8f<BBCU-C(Il`&kVt~=wzklU{VCk@Cej*@3-?RN^m0vq z3_h!?b$Im3&L@g8GwIHXGT95Y_X?claUl&h0Wly)9++W?2d4QC14Q3Qlyy(8nzRqT zbn&}Jzq5N5_q>D0-)E$8TLlOp?EVq$U_L2RX9IQvCtzfLcXjIDc5=Rxq*>OWCcO`h zG@CjNiU?J%q%zDH*n?fb7VH7e<^{95r`lz3m{J_86p;@iCOo|wPd}1@r-$hQD|7N~ zD9eQhWZvp@yFD(MWFIc+-1F~PE=b1Wwzp`YhDZ%jEuvaP#}FMu^cT@z5@ju8ryrS| zjQo>J8M_xDC^G!Xf2xH~rs@D*!_*a!3GQ6{)R}gFKUtJX19`H;;CuSEtjJrD`rM8e zF;7RF95E_4bf*sey z6!?HqzzeboT4xsX{f^EiUJPt8rDc+rNJ|IV1ZoN)8C`Yhv?0RdXm}ibZdV+xACDU% zy>`2&;&=;Wvpy^r=wAU;)MF>zHhAIzvew@T7?45=x09VzOHSsDuu-i$HY_R**m-L- z6)I*_FX`g)4*45mQ{jyi)%iAg1gRv@B*8&sq!CE?%%qQJk*iHeZOQ;?fSyDBrc96y zvI#d)cazjP1lMZSJ;{GEZ62KM@M2P?-Ua9ZD_{cfK`);1Q5?tvX&>^P+8-RbN(T z{q6uXKp5dl$O}dCn1_;pMAcC-^k=;#C#s6XO=2iL3fO@e*hrB2*Ga!q0e9l450wa~ zM1d?ph^)`S^wBf)XaO>yl(0KE2TPgT39NxBa0G^c0?YvxI){a7VQ&lQyFiXw%^lYf zfj5)XwqbEUtsNk0!G`()Hy$Pe3V|!=2PQaw1{RIyY2n4>0Pu6%bS%j)YZd?)_CEuTr zUw$LUpufICM6OttCt6g3AaEEfItJ+T$71SIkPT`t7A^*5YUtuCqL7@UtrJi3L9-*c zTQ~TO?mrr#ZiJDVRiaky{K>GkO$IW6F@U(IUoh-_oA<}0+0bpgb(QV0sTIp-v{*jp1OKo zE|5+pqI8f=_>lrKKpMybsQZDsKkX|P*Ub$xQse&*nKYi6T)vRG`L~07#MuTACAR`n zu6R4#yY5lpAPX=7a^L{i08Tq=QyZ>7$Emb&+y^-B1044OIc{~-P%fTgH!|22I<}YW zNF5&u;&3iFa32obhXeN^*M|f5;lO=3a32}WVQTyt790!Q$s_X*Q4jAToo4I-J+ei# z2RLt<^eLa5*z%M9*h)M*2m=Qpnm{yxNCeR(bW8>opfmWkP}_n5>7tI8G>_Lck4O*) zjR59Y3zZI5NyWaX*q02N+Mo-4GYRC2=P(7G@EYeOvIzT!3Do^&oydX7^z;Lr^?bOZeo zOK89n8n6UmoRYJRoT##c5Y!5Az#!y;kefhm0=Ws~CXf?BP6WAF96A}trysQi=a2!V zzz2*1UXTs!z+0dOYQZt^7jObA%wPm$fDhmWInIL?|E_~PLYOmo-Shhh+IWqNbjZ7; ze}6$vMBkAd?yEsHzBsh;S_|-|mQoc6nS_mYGfWCRi?(N+2P}Bn_mZE|k&8IzfTh@6 zlG)ozt};pR20=avwjxL;!5z|~JQUTuNb$CVHh^3r-qywa%#w(9A>3nbD}dsqFzM3h_n!CA*x4IkLV<#lZYM$N9(@PscS6! zN+$vl1JEP*(VWR|IsEa-B7+EH8ey`Ka^ZB4O(;kK86XXyt^jo$IAA9Z*ogyn;($uX zDIuqXoDy=C$WmGQ0|FoqIDuZE1?s^`Fb9}HEO5ukCBQlI0;X?+I8YAo zzNYIyG`Irr>Zb32L{I_n7N;MANWxLuo0FxpR=@-}00V-iwB3x&f;>PZgpEW1b4*30 zgVCrMjf!z)FrN($dH`okKz9l{$)JhETY>_?;pWfM&#}5kMM)eRoKOD#mZ*DFoLu-I z5F>#d0@NQP!8GbD5Ezmh`!F2ib&)6p#VZKo&sV1nT~_Z(V#nH_T7{`hP}9#EeU3 zL<<;0A2b08a0z&VA;1mNfem;CQ~^WX)52K?paH_b3Sa=FfEVBad%;#vS(B=p^k<+D(aH4C0#mgh&l+gRzeF_<%(7HBcg9)0@Jf#7EWLRlt2);jQLD)P`uqj zJh2mvM{z%OcqL(ECDpHkeX+ z5u}q~B?-Kd*+vSV2a>DLj9@1a2OeN8um&n17@*l_Qy>rg0Q!D*1e)Lkz#~2z0%_n) z@J{~l$>PX)a2@1{hSBV@mS@{Kh zZ0;Kn0C~U(^a3qV4^DzPzzkx6J2oN#&XM_k-3D=>9OQyJ5Dl(?OmGJzf(noi9)d{1 z5nHmQe^$T*H~<5JhBVpIygWc8h>b)5b4*30gVCrMjf!z)FrN($dH`okKz9l{Vg2(G zwFCu%ec;d1kyzaTQ4+@l=aDbE^SS}zqEaj^!t(OG=Ct7P9~yskWH9K z0U00-WC7Gopzd$`#>JYs;q}z_|7V0m%(!Gmw16@6K@*Swmw+c20^A@S*nn3+6)@B_ z7yfYo8Xyd;00uw`cmW=;7i8k5bP+6VN34cHBwfDy0*7QmITume~UwqqF) zSc@=*)Wx{E^a$hXVlBE@3k_?bVJ$SQg@!sB>S(B=p^k<+D(aH4C0#mgh&l+gRzeF_ z<%(7HBcg9)0@Jf#7EWLRlt2);jQLD)P`up&Jh2mvM{z%On1e9FL3Qj9T0CtWtGiG1 z*vzZw;B4|mM=r$4g%<*`W4%i?X7x&qV{ppK(eXfdR- z9kcN{8$j3OhoA*n=p|AGC&&00;ron-QV`@i@)cFg{iauXM{w| zxMW7OfHCwz6OaIxfF~FN+#ns;fLA~jFx0gaE;;}W5C&EN10V&w01wy;wt}J$Ll#tH zvN`HLpbu=oZr}urfE};^u7sr>z>=VgWl*se5e%t|adqht#?{4Ibg>p1)$ zyM=gSCmN69e(Ep-VT6HtqJwGCt>v_?z9{F6YSa|@7cr;Eg*ds`k3ftBwo|tj)cC_5 z6&9y6&u>^s0{1i$Y$KmH1(K@)Mz9lz0}rqkSOXOh3|N6FkOzJMeFq$YCO84`hyg<& z4ZI2N$=aVf51j|sK^~|Fv7i)WgIYi@t|ZYdJK;&69vL#k2Rce5(#E9PvV`y1WDH@< zBAf+MK_6^G)6caiARJf;tclu7FH%2PA?DkPjY$ zNWvjovZWa-U;-R~0YP1wY-wH|AQHqzB7ixjqSC==RE$Q&xH6c}1_wQWGbW%r1)Z?| zd5L6#0>NJRrw{qnIZsg%$4uprFS>KOp5o-f8-W-JCUqI8f= zm`DK`APr;z)J>r7Z@a`|!rU+y_38f^ArUh!nGr2u41Lf9B)}!$35EbSNC!6H6;K5X zVNVKwIsgq2237zAAO*Yt57-N~f+Fp~&f~^pbK(1dKCl71ffFzScEAF-66SXROM*6* z5rMS`V@O?$t4ohCt}fQ1i?z_O78=$+I4(`PrPos2g zL@j1iqo*>+7ah3}Cl_7_#7M9gfrLdb^+vkPeD2Dy#=-+>B-lpMuL8-{7$evT#DND` z3#@?(2nMXc6vzWVzz-aOCO84`h%rMT4ZH~llC=jqL(YTiAP>}oSWpVGK`o#cSCXj4 zu3*yVy$l)RBON6YZO5eBWeMZiWDH@)5C_UZE~o?1;0nkDcR(Vj0Quk{h$MvAk}b_z0TbW=3<#RiWJ?S30Fe+j5&_IH z6_pM~qhd5F#+AW*HaO@3oG}62Dd>dtFGzF}6bKFlKYhrr(;X2daqQGZ@9mp@Cv8`hOnoF{~Uk@2m>pC0gwV-fCuaaTS1ZbP-nO? z*<8dvpbu=oZr}urfE};^u7t%Mz>=VYWl*se5e%t|adqht#?{4Ibg>p1)$ zyM=gSCmN69e(Es$;Waz^e*F)4X&fMQ;HQXI*0B)yQ#rYFUayn^Ij zB<<))2_!3!Jc{I7BtOu5UP96gNi`(Dr>f0V*BSJE>ikRzi`32Q#SsFtk<>@h9Lahl ze`FzPgrp0S57A?e{z*DMam6PL_=I_cl>b3@ZAo&DU$^i`36v*)UAp~OX$Qr2UxR4D z^}clzjAE;~Y<4VHEV?FJv_p3HE*J4EgSZEZtw+oYG#!T9wD*55XMQeqZ_D$RI|mkH zvj0r^@ZHS*qq*(vJ{UQ{d^*z$(^soTd+~**xM&AbE#UL zatjRw5zYDkE`1??jwX40C;h?w^vBRvqqQzGT~7LAIOz}2 zp*LcrD^8b*-cE|H7hN8@d+El~ACpXfj0pWPmGsGU>5rk(Cs<;mPas5pfCjzkYWmIp zKd%`*&ZakVqT5TilHSyn-jw$LcJx!zm~h_zPq4&6Z@Qh{RG2O^y&e6f%qH*nN(Ns| zmnG%IHR{)~rLx6xB_?Z&X^T@UQf3|J`Hi=~(VgCklJd$G$S=r>PTMZMPG+EAsM9ar zGL)CjmPUxvd&tl)T$t&fucLo%@&7xw&@Tk&%?dd#N8J5mG56QDLFiDJ!tUOgO!_9AU>A+a`6~iN*o|oJ|2Pb(+K0LTd#IeD>-lQo+ zkV%A%t)Eqq)@i!I{V7L6O=9x>;sf<(2L6R6k6%bi{cWA)eqXNXSK^KAs#l@i`}ds~ z8!Tm%@VXN4)^x+&^Ak}URJZKuS2-JA^42uQ@C)fNIMhDEos_?YQE5VEW7F;QECGAN z!V%`Xqx@!u+&T&kBEP2${}bHeth8n7%oVox{Kk%TDSu3SzV=+rt4WB^diJERQzL7G zeN1){_m(}E`SK%Y6E^VYZhp35VPS!5d`A7>=CPXajy)SfeI;+yj5-&hzKRPg8%DMAKd_E%8zF^_Lz9 zx;>HZ_?@0>Mmg6Uq)>FNqc@&(0MMf9iRb@zkh( zzsBk$u>H4Edl6g558;g$=ADo%iGpdUSV9WHP)yNYx0cA87Oz z^vJxLdOtv)+5HQzrNoW=l@ga9MryK)vQ%#=D+=ZO>}RPLAX4LN8F!!K{gyJWZEODX zw+yT|=_%H$8&gl|E{d1qID|acA5ytj)BNh$uSajNI7=u>W-V24`3YbDN3qQzy7Tj6)TZm-wY104smc`}>LZ^ay3 zai{u*?ZLV+ryCpxx7OC(81#4eayzYJ#QmuUkE6!XTWkG!st@0IvaI|achDNL3>8yH}R{2v|qd)8F&wjGM zn{Fj|KA56B_aZ)U@OwuHyPt$pXS_GXQlL5Bsp@dXo$?`BCo`Y8r_nqYZg?1<&P-gM z{)T#^D7=|fw|n|=Nz#KmO}GC`dO6KPetn-ceuI5j^VH&E1VzirviAEa_V#p_tT)>Q zuXwOfKBsK-d}qgRYw7&hlr8I>n1YCX^X8QbeD-n1k$abhYUB$g59|#*cRQpAj z6Nek*U8OV?`&(BmyWaO^)&54-4~e#2%-1dL;wTw=Q-<;d?O3cMOebCbX-Q4cjLOHV zJp8<_c9@omoy?}{jq=~B^36OKU@uhTm!xigs+#}I5&K*f=L_+g7u!XzOH=exITiRR z&6Au8td!?gYp(w^Xy!T}viHcYCtrh=<84EXu2WL~D~flQr11Gi?J~X5%_Fg|`7pb@ zte?k8n37)!8bm~TRyXwj^1ef<{-PF{FkIR zYFr;2?odJ~Z?15Z`o*r)rzIYpKl64=OZ>v4Z<)M{^Su9ZPxJg(O`SYGc;M06zxMMY z$K`%E=C|B`%DBEvX};}jb^U2OSEczMQyO#2&X4oPc$*b2vv;6P2K{jP!g%9|>rCO_ zB--i+Y})JRnH}Cd=<2mR!hGEQcVn`IO(o;{4@%lqi@G|iA8?!+=v;g=ee}`!GG3hx zGrw8gj?Oo}<0{H{Dn$@_fnYv?E_B&({-wUYU3%&Ng1l z-8Rm@x|8>Y+QhNbid`-~AfFvC_r$-if=VBD=24G;&s$xh_*OaaBJw zq!b}=TyC~eMCjPfWtH1q?Wbu+H!<=tr`I$-dDd3BEL6`?VZMIj(lz1Z4;LF&)+`pYxWjeAdnC<6856*{oY3#W(0g5a*+=Z<|9*6^>IU=bRYA z`MOv|D24w-&b%F0n(w0(W;3`X&<;_5Q7afKOI-P?{u^KE@U&r)cVx7E$NFj|#hFP8 z(+-}6dkYJ*y32c()zpH_+ukW>6vF1S>Tw|T!>ctu_t1E`?Z=z*TsP^dCOk8 zU8ShcpP#5?Qvc*1ech;o{nMR)s|z3IJ1{+%k0`Dx9ohEC@JlxrM7 zHHUR`2xE-7e>81&W}M@+P)ZkTV!H5gUbiove6zL+Y?6yj9H)zWH~&tgOpY#|G}XQ_ z=z9EUz<3ZthSetDlbc1BZP`&x>6v{V6tK)U_Kjn4VAIQfX1)`gF`N9Nmlk=cHC%3A z6!>N-3eJlUX?>iV1wNB!E&g5ltdVT(n_~4M_AvnrZ3LS zC^5)?xwice`R~Z_7IB1BO#Y#aRxbOjf1YAL*{?nC%E0#VO!35>#zE$w{^j=U0yT~8 z9n|@jW%@x)UGW!CYHr)YV7i=xHb6SJKYt0nyd9kYZ`Uy=S2b;+4hz2RZV`R z&Q`2ET`b~OR>ZS-VxVyC>Gk$kd4v~y!?czeJTa!b#GV2J;_dWfofY^B@UJ#SdwSX_({Dq`B^AAL=CZi@S~OY4E?rIEjFN(^@&Z>s28 zQltLTWndGEEFN-n|I)-0qNf{KtW?ujxYXt}$`F!smFL<8svvt8TZN_1Sz-o-9gFLDG28dbQ_w%4y}z zRtgC}%09B(5~TP=EBjohFtG_;-TZK}bMXXi#paMSk6(?h^DpZpmg$o(xHL-7k0lSr zM_me=e_x}_jC4>9TEYcm%>AOBY9kKwxqXpmJ9UHS$HIA67lxcwHZ_fJe)sV#%X5#V zv^GrlFS0z+`CSnc!EC^xA@q-7#rl7%Go_OFTH-G-|687Ca82B*%cCf3SFwRqq;^94 zhQw8-O!B@N68n|+J4;FhGdZpvcH81&%w4ljHc)m|>zdXW<51hGGF!`;!vTl6EEzsU zy*xNDRWdnrzv%t0Z?WEt>}%pz2QQZw*f0Njs*J-F=KckS95^B~4KAuUGX zTzJCyC`0x-)&Nln?tPnI-!CgXlxt;D6ue_!5-Wol^984M>KPj|mS-%hN%3vATwQ$E zP+ITIuJky@bN>mk3r?++53VULTmDkKxOvBlNX6uBOj}oc^^Rgcx7BjuQt{6GI95(G zp08fJM9WmVJc@ITcASpq9}&5u@P2#7>Mbu;iFJK0kz zyX7sU&9a-VMBkh$)fq3sIanU`I~dOJ@=#xo?YWfj{gXRG0xVrf?-XS6G(YlR-y zwL`D1eV19i6r0+?o#@7tsD5pGjQ+j-mky7}r(CxSTz>DwfM1qBS5p1GuS1rJOu{#v z)OUUQobgR6@NJZV=b9)dm828ul;J;T1(tK%Qtk=&#lXsPl0lV-9LUlL>8-hrY_ z3ALMl)J+H0q&kIh+*el|49)l!%8`7}Vc0TiXg^1#M$f=ZLgb3TZyM%9x1#h91#Z@U!gBA-Pmbc&ad#x!({>Efe(P>nT8QnLAwPyhmI54V%EAs? z&DS1oYiy>)EiHP^FWeV6;QgXj=+XhXUV-70iuV$udntpNm&csO9t^R?S5#!YozN`E zO%reqW>!$A*c0=-#4&y7#|N)Gw5BVn#JW9vCYltaJ&8Y zEe#i^4z+atO1wPQZPAm~V=TD1S4Vg88lQAPWPqUK%b5!a!X0jwVFWl}mM?|Po z#@d{t;(vY3G`DM+jQUG&l$7y*Z0-=~Tgoi=@UVr&2Gykh1Op@0Ry|MIShRsZ)VD|P z=iPvd?`fMR!gK;;Zv7eFsFp#q>~?VBKeko>Lywtd()Vg61+UAel>DPYvno^<>|U64 zOB9`t(|UgU&CWoJ(hAAIi%+F<@9a_Ato^q5;OL5W?~)IOO7C8IYxN{~PTR}*SO)Ip z|0meb_&hg4-FJD+cudxiecR?B&5S;c^AVl3lG{b1m;Jlazh1jFZg-rU+riX`gn*cB z8=faDqQ5q7w3RJYA`4ZfBR#CVrZ!U4C$3{lvSK{ZrH351K{a zmmPZ;q3QTODfg=OLFvE40fpUF{a)IJGTh5UITtMCxqAe>M0>r*B_HZ^WWVaTAQljN zq{9C8pwQGVoneJ0`{(?R%I{OUSs7ooO#CXV4sOV9m+>;+x$c1Q)xEa^ge2roDJ!$R zi@G*zRLmdx=en2S?Agh4HpOlBt?z5CuZd=) zT`wz4;PJ29(%)oOyy}VT(6^n`$&K>v#UFhP)=CdIwD~GqlmB1G%H~5ojLc;gmKj6W z1@ahPJ#c>-qO7{Ce3w*LY2>epWqL%$>-ZpCg(o7N*r+O(FC@rO5#7F^revWGd{C;mo%u;80IymSleO zjOMp0PH$Ktu&gm*y!2i~)w?I%1<8h@{`YT=2$($;Z&F?mc7M{dGv}ItC!5;}gWkpzq#MMI`g*kpEeG*{+%~cN`}=EA5DdA+WkJXEHNoDNhc_aEoqbK!SFqS z&R4}P>#mpY4H5Ee8W=KjYr6TSvmoosS$S=RTOYa-vMx5Qc7IboVEAVJs(s?i7;7!0 zBz;w~*!%^|IFh=usxz++i3m^0iZ*W8QYD?gyYPUP@3qSh*S}MfuS!2)&@}y-ga4m% zJKM&Lg7BLyYBp@A$}OeW*h|m!{#HEFt>Wz_so23|V*R>CwQK+N9jwZZDiR4Rc2~Kt zj@sR^_G${BudU@36`rJD#k;+<7`r~b`Wo`Cdr4Q!J^dxWzg+j1-0=TGxZZn8>=~q< z;M&l0=~a#X&$FppkG*;$r@}0Jc4u9vt)BNo+k*DEip~38w5h&OjeNBGz4tk3-J1ED z+?sV6&kYofXG1p)yKVY?OQ`>d`dF0tRkP*AW9rtdd+vu)R5}eS);?^rkN30eS@Gii zCiyoyS_TaK-j_8f$zyyWZ<_Sp=M>g3NhKfTtFjrC4YJx-{6}(}HD4!4t?_%qsM|`B zrSHbhZs!})T(*6yOIu!MbzqLI@Lc6ytLI@0S-KZL7G-RSu5D`2Z!G?yrm=Rdpkl0_ zn5X1Q2Ulr-)twb(S7l3nMkeHY`l$$U@N0BfbpKhuwMx({4FT?UD^FiFVu=?5X{g{nf;)f}!IJzstQZnMl8}Hh&ytpAi;w zdfoTE@z<;tf`6}j%YA0l{>7*Mm02ULb$`d+@6lGD6R9A` zFdMBOn>BQ|z9+IeU&FydJ3gOGRyplag29{KRj6DoapM*>X!qH zk3nLHBzHJCyX9%=)Gd-__NRV z(iNS(^2v^;lg}7MlqIn3{~je&WxOn@kfHVWtuLng!&-WSwp|$cdZbkGsSd3nYNfX? zv+Wu6q-BlqYu9%e@8vYlJb7+ybBj?2zon2MtC`|K!K14Mu4l?$Fkcst?$#danJA(7 zwc4yH_{RP(CvWB_)Kjuva*u_64&_^*G_LyIWv$X4d(40Hh4pH?2W0{eGOo^lw5Iq< zQTt8_cMTWX@9WXo?wSuoZtrSK7*&pZ{G`U-aG23bHLyM`e4U&cTPigvg==ARtnOyP zWO3bXYhTDpo!_#Di-CJs2SSgew}uWTkUom`^O~Eak>8 z{|q8la4v85yejyS=iR9n{!LN*(Ok;aSzMA21y2@8*s7+i+Pikk)i}o2zkaj(x#q;q z|9V}c|Kt~WrWsY;L%d|uiq{$)oesuA2b=#^=p?89F3kC~$Iwgkw6)G?&KKq4XHzSF zh9{Y%%u?dZolMrVHpR$FKw{+c6xNtz~0hZ^qh88B2@)cCfZZFC?v9Mnb*Oil;@go3Dg{ zZA!aw!ilfAGhTMzgCqSa-C?ng46&6@4|#J8`73hBHx-@t@afdHo6PamY`kang@x(3 z91rUjftxb(8GOkc$I3cuFN>!uOK9@<3h8VSak9T(c5%J@r*p{{1P=XIbN`J=zjyG# z`UIoxPe)Ap*PdQ@YoL6tdAmezanmKscOJL&3l6hQX_y8yh1yX5yQ7~W(6YXT{b7{n z-zPrp`elvVLz%Q59Wcpxp5gdX&QfoWc~cro7gzN|UbdsM!e+O7Gk?xw}25#`YUtrLJ5}Gt{&W*~9!?#+YibA@k_b(4D?<-KQ!$NOwnubg~K^F8vr z@B07t(Kb4GcQD43W2E3p?(oMhR{OgQ@iM!M2Ktqy=6(s;H%$Bso{*lneEiF{fcNGF zv3rD++_t@EGuv-ppzK~RzD|4%i-5}cbCL#8npIo9gKNJ{Yf-MnGTBSF)&zYR5!`h3 zC->E)vkR71cIVhXrZ}$c=LqF|l_IpOczNhWq1zEZ-9zifF5O5y@o2l|Q{hu*nU`K)s8bJ-iy7+tPn9(Jki{XQEEY<>P6WGe5kZR!dh621|XQ?BzhKy|n1 zQK9%0x4Q70pW!DfGvmj9{BbZ$d2D?5QO~uTRn3X3ebr9A);3u6l%qtgr@%n+E7w^3 zinN=2Qt5ev#=PvYPNqI;g&~Ts)VjUXf_YVn$7N2b3i023*K(UT&|_pDmj?UF$S#li zJ6FdAii57c3RQXEp_0B~kJ1jQ^IBdW9?o;@w8lMVnmLcYY>?|ucy=MaB$7q^Gmk-2TLEmFWg|<#~#4! z`E8ToIypnjw5+Zp`YOFvzFn6UhlduWe;H}$=ak-EabbH_p5QtM-u0TC55xL7 ztPjpvDT^fKb2Kx)Vv%4~d1I+`{zsKD<+pK$hjfiu&FTX_)s%K`0RhFK6sKz!V`tKS zu1TJVV`KSqzvuC=PTs10=NBSAlo%fo*zfgbK8?@2(dG8LfwH_u87`O0^OL4H4xhj1 z!Oq$hb=2tOK@L{c#(AyI>@yd;E-jkt_&2LF)yIuDKT#?1*i&-juf-u&nUz;m_uU+P z6Q8y7gUxU5Ze>~CPa;{fX=TnaXFbGb;~4I{oQp6z9IRNa;uIYSixUXHJQ z$)44wdY`9yx|1w>TCI&`n^g7B=p8MXad{vTAN9E|`mTau$I+om_9lb(F_XMa2?n=? zzbY0qi@EEy4$3eF-lrsc+VIFk`kvvpv^t`z$m%1hYkDlRM5z6l^N(N`(Iy`8V*T!z zXeC*h){80P`avrgWXc|h%Rg5&siv^L;@ig=yY?w1xt(!eneTV)lH~JayS}L=*!i+c zZahEEnCGC>S;O7oZxWW|IeX@I*-PJpTQ2a+g_}4yq}PR*3ap*2vgb=u_x{p#G|}Zx z_#g78yIR{mVm~@Rx#Pb*{4Q>6yF@0v`CV@@9Lu9tS@{LzTx?r&@>ww#Ut~jjmh>N< zze)y;tc4$xg)VNOW9oP1|@zly6-(^;Yd1OC+lN@|fVE6r&9jiOK z6W2SYhG~RJhg?qpnZZ0Uv(96bHqJ!d=kFO7I+5I6qsbWi`&-7}+jD&oJ8kU_(E!)PX zbW}&F$JRNgF~&3mubJ(0vuby4do|^IUcGzA#(JLR+O1;q$FeLkQhIkezvCI{wb`36 zm#5g6I9L9nX#e!Zpp%L#%*EEJPU!Vb=<6o@@_$xgbE%`@txt99_HRjH19yY&NeeTs zQsGmctWe|}o0>MYj}+#8ROqj(bD=QtZJWBp$a{*XTr<0wS%S$I{w*7~I7jHqRC_dz z56#&0tPU4Xta)M094(?}`L|*DH7={;tUr#=O8rQ-rnblZx~yKbVPsIiTV?ED`Im0n zYkw~(zAwBK&sVpm>0;3IXPXZK@taxC4@s;yTxWEq!1VOhXv6uDeeJ2k)cK|IXhTlQN+f0sK zmU-J&_P4By-GX|Ze22S_KZ?GYap>dWOPsYK^ZTD(_9)!RujIGwLS8oCZvMRWJb$fg zb|&1J9Qgdy+p~CQ@JL(t&qD{!Q8!rFd8m@#>5d({_kfG7({%n^-=Tl3Qs)Jl56u)D zdbRUXZhdHhLigJh2Ng59l6b`{d)e$WvJV7td6%%Sy8Q0jyL)+`t5o;Mf9CbkG4a&c3F(XtWC{jW8;-@dl`eMw^3%cq8C4b-APy0dgi_dc@y&~!EW>CQK) z$pe*ztVW+se?R!5=2Tqo@YO#!X-q+Y*LzK&5+}1tOdM0c{fXwzX+f_KRSvE8vU!H#tmMmi z{iXhzxgH0{&2(4^EE@@MBc)lH-Cr!xeIxx)P=H^CLLa zcf$A8+uM@IB!+!l67Hotn{6GoP}+Ys#(X6cTQJvt=lCYhivLFomzhw!m$8%F0~(W*#u{Py-d>(da@+maG`VECS-c5ruRr%?pUn?vo20=5 z?K_eA zz~G*)Al9h)t2Sva6;!Kb-u|Lek^-~L?+=DAej!DEv#*XN@UE$?_+yV-GmiT(IvT9B4K7x{(y z?`!tzuYEcGCrS3nn!U?3F4vebZ{69K9?N?&o}XQRbSq!EbA0UEpegAFOMgYSkN*`Z zDxc%s_tbU9Dr>szeEasUy0~t>YL7eox7b!G+`Mi5-=ck`UgEt#&Q&4tgCcV8Jgjb*N>eU&KC9g;grnbz9aL zJM6k#b=n zN4E0Ydf2Wo4%=s2Qxbl`@yp8Vr`^g0tQ(xed^1;W9X!1yWr~B{uyr@fnGBg-UP(H4 zqW1jL(fK@e$!aY1Z3e|cZtMQ`eu`gf22DhPJ9zJZB6T59fo8R5_h_|k8>Tr>iOxXY&26nc&*{13c9L%*V;Pvxszxm2Fepqd}70aAHdgNn58Wr0+_ODAM! z=`$BN4Jxlh-+jbawDPlPwv}JR=Jb{5|DFaFdDg*?yd+Rng``(iZLIXiL^kKDnf%|` zR6X(}H6T?DvBj=xlZ#!|p+P0ywF9JTn+6r0O9iGXO;;;}rBkYMv5F>D`?RP=6_Bc9 zd@ZZqi1+bU)W-$MI8|4uAc~77fmB`7phf^+AXT^MoO5(ls=gO$qpF}mCGMdCsjkof z0wC4nuy#vyeicadL^>{hiWNxpe5JBVbvtK;>W#vHRCj4GLPolQRPPX+TAfo_xq5)l zulfj+*Xm;$RHC;4r1~}SW(##x}IN{q9H8i^!Yf|`k_W-L0fnrRVh)y(DMS+iKawVbMVcJU*S znpJ!PHC;;oHQO`*8%Rxt+A&@asKybG?xjkGT@DGP=73z>npXvJYfhp;>IYJDhEu-g ztOg_G)saAI&QT8K7f1rBxk`;dKi2=M`J78h&291WH}qkCu_Tb1yIizJXwh6pR0*{; zqK?km1~Oub9NP$kt{U}`fQ*={F7SxO8dR|u5s(q9vFaMn&jB)`i<5msMi6jBTyc)* zlYBnnhz8|}JZaTR4m5zSzQ#IIqD7nf(c5#AWgPbz!nc+|XczOd2kcaEo!Z%+O`rFu9a1zYBL%@0!VF+)1x+& z?eCRrSbH#H!`h<)Db=13Y*G7$eCchK3v17D)~da%aAEC-j0PTM@ zY~)_fgCh^hk&QeO@!-hUR3038TH(Qw?{XTC{6K?>K`&3gyHZkJkBq!Vb+ozLqK|$< z1;O!LI_-OWyrVSU(5Na6Mk<$_0vR<*mXaGaGsYjI=1cw<#SQ7G^%}rJAfu?+>)&ql|uCi1g@F43bC#KKe~Dnu|q}Jo>Uq_0gZpDUbd-!p)<a49FOr7lEV>HIOlL1yRNAO0|YY0 zQMJjK{Y91E#vBt=9`mMb;T=(8Zp?e}@qHi&HHMd$Bx63;V3eBv1!RnXkz;;PNi?P) zNi>$a&TOv)$k<7e9AhcZi|cEFjGfOr8QZSGDD^5^AY)f6wHe3m60{xbGO~>AV`Le- zSB!Y6|CW%@yl1t`RYx?bDZABg{2!6;~tUI^?69DdP3~ zERb>Cd}QM?sKZ>B^5Zy{$;P;S8o(kT;|^$0#Zm@4L!(uGQ819;ITnv8#MN_WT4`jj{Q6F!M=g&trVZsFs#>6jH1~TEQ z80qa;7-hmYYUE(TkJLQL3zvaRtd%Hcq7e&YOqBX#;&KftsLlW~QMeToV~}BDmz?WF zZagPaxmW^Zq93#D6C+eT@kpd1CcehVJMpwwh>2&E=)lCY(OVb92(Iu~K2j$*@fs)C z#G4VpCf=5cXX0JXjT7%{P#fJ|3}hmqLTb`J9+*g-S#c27(m@Ssqsy#; zOnO}m;vHoW=lL>Dx+Et%=_)s8lVoga(sitZYqG)KlwvjMTNZ7YbdM8z(*39zBAI1! zjhMycIwr1@r--H}Ps19_4CYUsCD(6q3l~4zp`)MNCY8+O4%x@#ZOYmnCSQt{Y4XQ%nI?a(F4N>&Ojsv>rvbDAnS4(j*L^uI zy($t_eVibHK2?KCys#UHJ`J)tP zE5d>3guhTfCZ;CqCsO6;g)5C>Asi;|)1WrGj}b`yj|y{787KK*$~49=Q)X)bOMy&j5U_JfBVWcTtrCn+X^XgK%39vn zlrAdY@+xy6Q?`jWbBsTx^l4Cu$-zLT?4=+buha%ImTATY!K}Z58cJU4@0n`DN}vrfv|;?9!k%y4W4a)HG+&sr#hPoO)0p@6@BzCuP~* zK&GDLbenosP};=toD&^fiN}Peek6Xl$@Kcv+w=i(P7=t}uf+gjp!1P1!X)r<_SOxOX1*S=8Z`T;>rNrjnL(~gb zFQy0b&>c0BHLZ%T?X*c^M$@K7j?%Q5LgP$pENXgMDM{9xmW|ifj6T7!@dF?6Q6!hJ-{$d^5^ukyJ5O^HCced}rI(EZ^Fp z!3de=2*gM+?llIOtugkAG5du^tqC%)0c~-p3XL5 zI4c2}F1>{5i3t2nr&LhN8vvQ!r$IHZMF3>_G5OYMO0THk0g&l}{ik1w*nj#}?kr6I z6v=1NCO@aD08aw}nSM)5@~#}}z4&yZ(Bq6TqWc-T1{J$4D+gqTp+OZZoB(9TTtTWC zt?IyMwDWFebck+dY>ss^qdV#*CzpE0UJWYo0yiKt4sl7E@v2l`GhSCU#EdtXNt^_y#|$7umQ-7f^1`E4R2#+o#Hvn z)a5j0&JqtassV$Ui=!u23wqA%&|q}zI2@3fTLhcW42$G=ri`l0d`&)dQmBZTXGFwr zCIyCgDJYPc=ebzVyhIlai$egJc~xMznV&@_ZRQPbRc3xI?d;4u>NJ0llX$d3uGXVt zaK{FNFOTZHyGNOO#LO#@N9Rh4Ke}9{_@k@E3sOHmx&!wv#3ijj9!)8F`q907--~0z zM~^5`?MF{>#((r|90@#nE<%%!Qh*!?O!nxfER6Z+EkWEzztRAbKpwq=c0d%a0P?8Z znVD5Z?TRd70c6$~G@NWDfy|mI1Y*|WQvErrP10`GHnEVis8gIVsR5kjNY8gxpX~C0 zpwFx$($dd*l{4F{lT!W7dP6SWtg|KI#90&~$?_OLX35aOtlMfT$*gZh%Rh<-9@Ao? z`&f-+hR3FeSv)pV`fiUkFs&wvY5;j`u_~aCZDa!aShtK)JeHt_mKWOq@|YuM^4NY2 zMk*Kg0eS3*6xGM%X6$2UOR4?Xc|pR*KB03LWjTO6_PKoTTP1VpvG2LonoZ#^Pt6B1 zyNZo>_9XH16iM^hhMdFfxtwsbTSV)#mnkwdd!;1X><;nhHo-2lcgZQw&Xmq&w$Gr# z>|^|2sRw4iF7&|c)5_-E?6*`UH2b}%@2fF8JNpyKlCy8gHouj2cDAHRK~8#3SZU`JB^o-gDj&UA-?K{XnJBoU75Z*O_6N^CimTZu*rBmdv>$(axNE z7-nY`Ie^R|r3*KATr7)kZbLkvHMfnEcW$RL?73UyQ0As(cxi4hbll7dsWF=yB>d1QvZS zM?F=~r~L5v04Lz%hg1%F{1vv}|M*D_D)Bl$AdjDx!#FFf;N$11K9_e>19|+SGP6&G zKsFkUZEREoH+lgkfXq9=15Wea z(V&W5i3w!hd4>VzUFPZ1^R9|X&ih!Id z79GuBju4wk{rpuLRIyX^K<0~0+WEUQD9=!?o}cE7GT+5WCUbME;WEQDqLM=Z~Sm(>9>|5LFF^S>@O&hzi0XkyCxf-1@=i z6ybzn4#)zX>X`n1APc5PZp#AdMkMJ9FIcR>DD{*UkOgg}!(XrkTg*B@7KD7E7VM8R z@q$BQ1`AHG1cwE0h)3TPq+W1VS!QG;;@`C$P zZ8wgQiFA#+ih~-bGril`Od+elOF$YIE10BlJ@2}4i=cXAkYkDbtM~N`TP#xuSI%quDp!<;5xGS35!kk=_h5L$P zg9{HUvB8C>6rXe9Suya17oxDu!pkL@+Y7J7GPf6gtu}H$%E)Y~;)buKu4qT3Mdup1 zWxgPCi@--M%S8~dWo0~Q)v{iR1h#Y+#SK~M5%IZIm0=z<&xm4 z7G!=iOFv%Ipc3yg2h#GnZ2z_rnQi%&^KHxhhzD8-i_9*njWOt=G0_?=GBl_WH#`7Y z)WE!eMQzLrShP~~wrDl~Wh4K$Q~t70FTj#%g1wi_jI;NW26V)+G#8L1 z?Pydm;Q+{z4h^b#nJyqpcCj5RW^*Rv9&MuX~)@E)hS~m(;rL{{! ziq;*N2Z-gtfV8IRTzHW%Agz5=vD%0iTaR#2ZarS&Ahw=lIlry%DS3^p7ov2T)(^!> zwSFetpH>QhSlI(0t+$yJw0@_ya8D*QEG^?}zH}7YEnavG$kI9$9W0GfN|r8`27GCI z#F0zaM^9`P!Oo?-V(E=b#g6jQy+Ug(JrIG1rGgSmk4q!B^rR|IOJz>)()WrMYv~8F z$rUk25OD0c2Uo39#&#B*3!cDgl zIStBO56BbmMI89VMRf!pD(dfv>!_lzD-rm$SwdS+aCkvt%6Tcp}-bA^1i4Mae#?En}4wxjar z*HkfTJE^i|+gXJJ+b$L@K-)*r0U8q>^v!U)1I8B zYLO>rN-gqaiw4!aEFX|3+r&aYxlt_ilbiVt`;*-olm+xdO1j!l_Hy0vWGD^olhiVJ z{q)O2co{&(q<-_0k{zBr$@RyRXQG$hmOT38dCW#uOZ@?P@&ozy4Ply|ye&HaR_*6I zF=rCVN_&NvSo=7s-rIG>@ob+imaM%I(GjO2koHyvsoOVDS6W;y1*E-0y6o*Kp@Q38 zX<^#?idM8;F_i7E3su#AMuTczVh~9CS+1(uWwurO<>PQcYuZU9FchjiRe^3w+M*3TB}L*XiV!lMLqE=sX!lgB1~sB=A&{q52_b!IvzYZ$ z-EqNtD$P>bu$&=~r}pwmJ#~~b?NhHQC-t5>!A{FznL{8?y`@1lzv2+cQ%VZzQ{qtc zQ`a%qzzpc>KXrpI_*37=@!XZG@YD}QtFTgwR$=8NmQ%iRx&}3()*+CUVvl*HOf_5C zrpock)zP3Q3biA4pGAK+n09`; zL4z^z@{K^AZj3dxQG+U0$`Q!Z-KZQWrh3|mZD>9nW$HhDL?muM{hCbNe)=SJ(L`B9 zAWy#;IbKg+;G?;!L2Yy~5|F1qijCw;PPwP=O3FQbPo><`M2O9*F=E|TO^WRateVEj zxT;Y&Osf|2T-{Y|(U?}r?UYp=5lgMw!iTUbCDp^KUUiVGLOFy(atKE?s4yL>T~{4f z4C|`XVl3~-v7DE@z3O6&z^kIIwN;-h#mg3okud3`1m$;&e?2Y%1&6}Ie|1Ca@S=7>C>_{?$TtIo;fR~ z^UQe-DtYG5Ga?WBnGY48^ce}GpSclD{h8ZEuKP3MWY6jf)l9CgmGoRah5o=wX#!b2 zGotS5h#0HeRbs4O&r;x5Z{zb_-5tX;t5aMLtnO36&1!k^%<7}D)m?o&8qHgRZ&sh< z*|%uJR$t)QZ}mqA8PS}s7Uv>Y-w?mvlE-gWf2~1zj+&v>-?4x-yD(<;eGO_vAx|J{ zYIqxKrU>J^hC*p}=MPzf+e_lvmIxNFSt%y7W@BtJYc|WttdWp%jjv8-4Q6U%DNrD5 zqCB-VC-7`^o|>sOXQH&=HScOrBT9qroTQf+Hd)$ z!P+1BmeM*+0UcCx*Lj3eOUz9JFq_1{J;?>;|%~Q4DU~ve@9(McEnax_EEv zx?`yl>x6f?u1`E5^Rm_*RC6cSy%H0sbthxTm)416P3tbH^0iJJYg>0+&}7{W4Jvlq z*n#ARb$24=vrYz>)+^UYtgm6XaQ#H-#nJB8>-_7v0w=AXFQ~D8F{UZ7BCJ5xxAC#8 z?}&wD*KcO3V|_;U>#*|?>qDjg0r{&ET3vsXcYh*2s#E;ycLnZTe_n%8Y6T=9>n~zb z87u4xWc_un7T15xmt?&{l=a`o*?K+Epho0Q0(rJhY(YFbQ-j**;zJdN5!=o&%Pn_)U#}h1x=EszbXG^plfXn}0# z7M*Qyal<%d$IdtO30~T8m;s>;$BKZ^hSv~$`YZu)!`rf<3mS|qDq9O=gSaPQ!>wq4 zXv5dhQSJ@jE1vKM#glq&6jhxbCCziXAo6q5sa!Iu0eNn&R9w%=Eym|4Hjwwn19@&k z{Qi{Zc5&WqP##h9^zEmcw7$aWPDg>qG7!k4eOE^)<;NoUcMK| z#!omp*?61ccD%`Lqu5^9_&r@#R@N8D#{0#4z0V6+@Vucx6)W@$V^XZQ4nr9K zj^<)x-?2=tZAYhQzhg&i5j&z2oE^dnb{r7W)^V6;|GQ`~JB|tE(D8*rlYT64bJ1C)K_!+|2GTi- z8gYIzJCIHt(};TWRGoLu6jlRK)E(7Tl$J9EzH5eT$zzn1_r9l-d zWCW!105kiY$Kvso&e!<&Z?Qew&a)*qGIhSovv4{;5`5nIiHiL?Kj-x66xSY#PHwdebaH*G=(rI-8<%I-6E&P|b@y1KA`K%Qo#&GZZ&v_)slQ^BW=~&4mHz^+CrgsH=-*l0~*G*SM2z=8=8dR|ou0S?@%6s`zgKAzt z8px*Ge62Tq&$f}0$VQuFvQ1ZwViLQ?#V_OPnkIy>OF7ctwM>}duGK;#bZzAQbZw4> z9lCZzH=K6K@N(DQ*!6r}2V<1(ihRPZx7e0^*Ez-i?RrnPb0yx+$MJTeZKbZeJj&a3 zU+SqYaa8%m8m^399K+4VixZWsz89yUyCe$Q0(o&ZXRR08Siawjt8m@1crTC_*Ghx^ z;ueLtFD5vNUd#!F_F`Xr%lgIr$~0emt!PL1#Ww`qUwpr4lkr8FZSmsu7)f5d86(My zcO^+SvsBa2c7SZIWxTU_5+38kM>kK=V05eyG?2|Agt%F{z?;`bOubng+1XBoA!9G#v>q3PuBYX)gB^UTPO<#4oLm z(uiN$8087Sv`xmbUP>1?ljGxk>9E2UFCCS5=B1My&%E?z{N(0KXHj3t0wh3Qx+HIk zeCcy#LbsSh^wJ$viUCW*dr52_Y|+>nY^hSR1h>?3zTBeAv2U41U0@slkS$^>b&I@3 zaf@=-?3Ps`^?OT)O#R-nMatQh1m}t^jy&eE#TSZY%RUXp#0z8t*>Xq>_>2T2TVh#d zTh7b*Z@Cf;`&z`mTRt!4-z~RsrI09FqKizn)^e+|bz(HFtyB20w^Fmui=6}6+Mq!N z3$SfnuKMj;R}127-HaJ&Jau?$H=oN^ml1z!D0T+74siD0dO%I^*?O2S$kx|!LmBFal*4TO$-GHcQB#^D=OU~?Uy;gFI*4D3u5Ny**QaZMYUA1j;&uClx7S(NyF0KuhjS@DoKK_S z@SC^EwwM@fv(fg9rqCUBIC2%K6RhSMj~?YPVEd0Ta_)#9)Y?%e$+=@DJD$mQNp{TV$aP1X9NmuCtu{M0MqbR0Zm!aH z^fJ$w75f6RBgcoa<529(-;P%Vq}Xwa1D+jk%9-pqt00~o^7@V)S5)A&<73hEjiQkF zj$0a(J7zzS9Y4surX7SCVOHKA$jdcionM|BqtMIov%4=xhcjPZEBDY}?i5*lFYhSA z4KGLj&&zwc)Og-+JsXpIteyS|K=YS&j{Gi}#*a{F}`ovxYU`_-lhX_|F{u%@oT$eb5MNg1Xg9%_{`WVWfi zW3Cm7$J~N($XHoCAf~J_U>;DNcT?mMnkOi}3j)EK=4my|X`UC4T@fp4V$v)Y)&*jU z6D8)CT=vYb*s*hpH_UG%nKOTg$df2z&@eHEssj&&DNz@veL`#!Cz^#8PP7W4Otg#G zcVewdjYLPpLy28dCK8S+6Nx^aYDbqLaahnNah&4$te2-FPn_cOPMnQylS!PTeR+;! z`n1sx_-!(YYZ{a_(hr|$P}W30e4#;Y=$k1kYvMLt;>&0(vEA|nk-^^N7!iI->QS~? z(hzh{HYn;fDN^c_D}{h2*NT}WJBqqbikoVZE+x2+NHZB~Q0bZ&H%K0c7AJXB`FtXF zGhy;gi~uBoBr*0w-@K#&3;;=9l|OwXe)^RE^f|jd5)+`3H^fk6E=lrkv^kypp=jtS zu^*VyqoJp!MMF=`)nEkmc(`RtE#{O-t&irB>L}TYN$pU6?$e-Bba+q*RO%RK>D24W zqoSvE5$LYB{#gR{amiC!>^!zol%ASYJhG!1_*u5t0dj zSOpB+V8AXtPJ`N>yq&Tf7QIYQje?fxX0i8{ZquNOqHQ|A^lCoJbeBB9m)<50@TF7H z$kL8Dz?U9~E*nc9&|q@ZXWH`@`YCzLCw)|&;Y(AM(9{GZ{bBq9sPr|Z4?IC(@yqDa zcLd?m1x3DlDv*jHeW6F*0NXQ7+)85wA&{O~e35!u+Z9ot_L$OH+fyP# zXD^lmw^yp|*&+;X@8D}>C-6Qu%!Q=Z#m+=YJN7=QWb7l+sayNC_%@<_nlqgp<<8l$ z+&Nn$McDGVh5dyxd;6AHCR?Nh*+0Y@D6mU^vOs!AaVqyt5^~ZzH6l&#Or}YC8;h@D z>TMBrv3EmBh@!WvBt+5cmV_vJj|g_`JyQ~*=sn9By!Wb_(bW5~l&;t>M7v*C6RLN=8Na(`ceDYz`y;BfMZIDmyFX(Pe)rd<61e+YHCpAU5kO~> zjIFm7Jq0m7LcFm7KStPTv)sQn6=y8BTP!twUjQ!e^PG&S%Qy_YRf*g^fU*yO<<3 zNc$7Xf)3H32KRH22eYULSXHpBI9Z#WE_=z&R(i=cvmJ_TdvS<1EAEZY%F;U7M1<3` zy`tql`SZR~7dm^0UA>d^?F8k9>>Hxh_tXO@*^87P7XrzC%ud8)Kjq`P&J{!U3$|I2 z{j!udvbR;<$P$G&+%b|jTtx}Evp8?K(o=9-x!Q2s#lpL*Wy-F*QG=>fo?V9L%Jb-M zTC#@ga)P)6k|o^zDoeOW7&6W>N76mPH`?8^cwr%%HY;nMBZve<|>PKgM56Zt^B>BTbd&6Z(luf62Q^@3DhB1(w!dO1sbeZ?H);kBNj zmjmL-3(!64E2i^4gPPu3Lgjkzm#AE?^kR7LixQRVeJ=zpH>yPC=EPicGTkfJqAK6q za;bcC8)QS9`J8gy2&u6GI*?pS*ppnST#lF9C;E6r_VH@0j}uWJZ_CJP?z{k=xevHZ z+6^q%^ z7D3`YYvozdJzX*sv8P*}gQbhRC!;F)J$oq>_iZ}BJ)&O9p4W?6XwRw0x!;2dAn*6# z7SW!|f!sgf{R zF$8}VUeU@j4g5|PtH2ymUnD^Jt|CExh_H3gqs-zT6vXvkEgrdlf{)xkCr9qbY7P3A zBZ~N+sub~yuB`U&h&;ML6VM>2QS<16ah&i${4jYii`~r-v@+cqEN7XFK|70}2CH}s zB3R3PkzgZNAVC*XAi*{v8$mbM)InN?wE{SZhvMY+r~ zoXLIMu$jS+u$AvyIrP!xqM`Nb>e3YnJLIB<8Ff)ZpL0!kkX@PQ`6=f7hS3FX;c4Lm zgl|WPIy@%`9ez;EO`*t=4R1yr-;Q;BM^Zj4aLVVaRO6T*g%_?^z4;W{$NW^j6!}I$ zr~Kk*De`SmHh+FSr*wX^63xr+;DgHdQVHSgkk3Wzkl)WaCjSa`O6(wMIgaUCUOoVl ze^vbW4g;e3^VC_FTj@aZ?`u$wnF;x8=+oor?)-JZIr&?vO3QyERa*W&-@586W9!;i z!$J{R%V**DK8l>}kU9;0(>W9LHL%n^=DGBVv*>**DNmX{kiNA{B>FluC~sfDPmE=I_cw5+=x-C<_pefFdiHPN#OmLs602V* z%l@3?&;CA@Kl=|vKfFqPL_P>Qgp);!(;ur&+b_yK^k0vYu>Xc6VZXd;rT>0x0R}YA z2?KSpc@F5j(Sf-|ayrl`<#b@RSowhtt`!F;{%fX+a-cgtnt`+&&44^yHgHJ1cNE{F zpI(avNe52G$NP?aRo+JSf3x-d@j2J)|JU>W{rkRm@7}$8j-(|?a^!;~Ns=Quk|Rfs z#4x{R)*3N0Gcz+YGqW5mIg;c^k|alxw6r8SawIKjNsc5*(&gIsaoxM`dt2xGM~~hw zd*843>vjEjUeD|Gb7pnJnOL&8&+oMhy#U=GpLepUkln$An41%&Xd> zaQkO@^z&UiLuQ5asq-C>S*;1CJ38Io6*8+`^S;dL9P7)he!o-Btic5Hq=uD*vtmO+ zvod4VW^1*bJL$Lb8=}vwk|riNt1Ke3r!BM4*=u6%nZ2>mJ+rqpkxllV=qjD;gN>_nvX3^|mz;enf|}VE8o(&~ za+p0gT>j87ewckVVjr^uO-~q_-FQ#;>}E%*%o;FE^J9}GrM_YOW8JoQ)qT<El&0=yoM(sAI zTVw8&(<}C`v3w_INK7<2Bch_o85ddn7G41j$w`ZVW=`zT+ML4Jq@zMyPHEG*%bYdM zw`$~UiO|%XeUa6jv8*SjrePt#_%WFc@RSoJJvmpJPcr66#4zUg8@z5#D7-#AHbD=W z)AIM@UURxMT_7=MV8k`&jEq^zoRp@PGAAu2jyX9E2P}uz56>xV6yuzV22Yx^rjbC* zSr?JeoGnfLW==CgJf}L0X5r>R<{XWsB6ChRISg>lg=TL_6eV*#kwuZY!SEe1nN!q{ za$|>Z=0=wS=XUT(fDG+{v*NE;py?!8^IJ(Xiag z*pX4WtE07SP;x(M>ZI_-klfA9H(uoKj<{29bgC!!SaZ$h)X(x&NPQ zGUvLQ9EmZvUE|)rx!r!(%em2I;B$vJ>*d_W3!Ua>MEziHc64xdZhlkw&n=Ff@iHDV zcU2S7&)pcUf5-0xK6iJ-ROcRPIE-iRaf0QkF_Xe`esgQX%s;*1%DS)@%stn1GCI!^ zahJScqt)d_*=%0B@cdcowD37~d9f=(^LjO$H`tIULh|}WASAExT)n(z=j!E6jv0Gi zcGUOt3L>zWR}$W|uUr_C7rEXnZ%vbqVP19gz1o=M z^P)F-<(-dp;8G(L=5h1R%(F$`n%6SAP-tG8NEP!sgpZ+^FgUs3J2&LO z`P~Vw@K%7>>Vf>84IRlJ78x7N9}$I>{LxX#=1**L$U%POE~EV1#x=qD(UIZ&(&npr z^DF*mRd4==hV`D~w7s##68Q(4t2IBmCm{c9WA83B>)q9elIJ^`uAG_gYr1k~e)QU& z`JE!#nBTA)Dq@BWsrme#G1bo>-n`2{gO&98`lV|Dn_rSKQV zLFPw8!2H-r)bn={tW(F#oHTX%RLJ~&O%BtWe?)16roc}=IjNy}ry>jC=UM`DCpO4w?p{D1<~U+3u0s6 z1u0EgRKeuf?_x)8737Br!PGI68YVglildb@u7fOSwhppjb4*|byPNGhDA*qf!Uf?q zanr-EoNQo&if9F~+iMCgH|@4GjG8ZS{r}eWEQsCdwxCn^HkQos6Q(u%rF+EW7YzK} zlEVc*FVITKrUDv8+>1|zHw*zg4h_xg6IaY z1^d(;Gsce%N3n*tY9juV)^ITXg1T79TX3b>_*S8zfdm%@qV*O=Z)7NJ-9Up1qxYZ| zwhtp+coIW@8ru_H*oWYWxk3aI3I{|~SU9oC;6`C|q`xqyk-`_|H*ZtpNn?d;n(Dl8 zV@&6TJAXf7UbwIMgjnH;SdT75g<5zec2>?p`h5ip9g(|IVwSWpIf^R_dql_D7e@CNB#c4`E*z+wQzDv*}>?!t7}Bw6M6zVEDrFXw_>XOl;x$7@{oP6dm$j zxIJRu3wOtcych2K-H`Xf=phLU>zWREFFYH;@`YC$j>#&b$Z3dSUQuLfxCMM#T4WBO zC=iuEQTy-`(X7}uxuVXIFBJ7}468+hnpHRA_ti~qnobnuMfFlt78O*{%0@;~w5HkW z%c4yYv?|&ivyY-?ch?miY>b;lVJZ+l>aOT4!JLs6zE-d(dRxyTimGpsgdEQ&4(T%@db?3lDksnaskCyjwDimd`!G$`7UMZ;qM*5t;nMX5~=G+Gon z6rv&XSromAU{UNQf<=|hw&N{Y{Xem9(UxeNYGR)|L@>`7A2!=X$D)0#i`5xk8JHDz zj770YpGBgqaQwLO;a#%Dmar{O&s66w4mO!VEp8Jt!{W}(q*L581}w#cn%=NbJUr5` z;)yY36{j~ z;payp>o1DWMix^juhKU!L|Mt=*agswUEyWe;j5>jM=C82ZwMHpx?3Dw6uh_x!8~Ew zG$kC1dq)Pv77uKmh%O$Y5p!mEKye&oacacf7SC)rmuYcslk+7O=QlrpYjGLD-Y{|! zHu%NsqVZ#K<86(L_cRsa;+pWqmg!GsP0E@czWjFa@mR+$HvQJs=HDu@HTA@jmeC)T zbZ8o?OS;6=Thh0wdP|~v{z_seNSBOjy27F)Eu6??g-K{hPQ?CIjwQvhzLczN+Lw~G zjow?bHNt^Pb~ih%vt(Z+b18{k#Zq#DU`iYFl-5@l(N#(8ma39VP0Xf*qsKWu30dNZ zy1|lA^z9|B8{K3{bouj=F28g9B|Vy)9l50O(6l9*_oYl5Hw&^Px&d@a=I?(zGpf`j zr442~HmdI>l?~RKn$|!DmPD@}S+Xbgo9f2%#+Mw7qRx`z(b%vgJf$&hY{RiWOU_1s zU`gywo>GctE8)SA(&)~g(iQ~E6Vu11j2{arZLLT!CVkAfF_6;O>~Cq$=J(K*_H8)x zEF2e0hif{bPOQQ$jio-NGnyJyX>JoFEG=z7!qiEbQz4~QF+rAYirqq1x;-|CQMxD0 zm7bU$IhUujrtt@j>wQblG_|SH7}hN{L}Tt!N7Iw+m--3z=y2zgkfq5H%UjwlmPhGp zJtLxAIxw6aPiQz3ZE2X|Y0s864`H0^wSuP(P3nAsP+_yZhSv!ifmyv_I%2zfy!?HYbqH6iJ z*nN8C(Uq>{dtokIOGKO1Jz?6&tFkfC9wY}x%|L6CYBTT8n6PbIc2t>@g zBDx8-LW5$;m?y)}ZJSPrS9ET+6R0AZ8dVI9W(^f1Vkc2mq%=tbE7F>thEx&V5?4{& z^ys3BSXNN6rcrAZ8=8cWitz1pku#dKroB7hp}a-!^WMM;BQuc-Llp+_rLHr)-hVsk_; zD|SbB7OvR$KWo`m9BAS`D^7B^B&B~?!T{XyK7nT^(28C&30+3YgT%GCsMf^U!Ou@(^P8Hn{f@xJw6 z4+O+n192WAKK$Rz1%Sj|fy4>%^3kD-fCL6Z0>g+ues}#=KtgLEq4mUVr}ukFt73@F zKgmdUTw=Th-W16)%Nuk{rD9~q7YB}dDt@sh*&#QV`;7Nql4auM@O#Kg1Iv?)CKbDO&kTNaAYZ7RL(>fVg`@ z-2I4e>APG1>K+bpk0RcYWnn<<=OFfr#A}{fcTNR-5)wE~e2XJ>CLqDxkl;Szm+t+b zPK#F|iA22Mmpe|X_*+6k$;4l-koUEC3KBX){Lq3>g%RTD4srA%h-(eRwVoipnGjzt z@#CMq^`Q2m7sT0@`0I}zIHA4R2=Qzo{(C+@42XXn#J`bv!io~<2U;unZMWcrWC(D8b&nf(qIov|6Rhtw_* zT;W`ep!309G@O60bzGz{t`Lq2y?>TuKx?N{MDnhVn;n6Jn!N4;`VkMTI<|R5kjmzZ zn1yC}wC@6ZAf|6=4{cZA(6S!z#YWpn`GheF_ z$IalznMa{XB{ig~clP=7>VBmNO9Gg7%hI30_&3^F?X*PLKUmu*gjL=XyVqK21p(Vy)fo(rG)IHnoI~BC2 z?d*BtFk8pz>Qn>GA1r;!Gy& z)Eg>SePMNR;2IlJ57&yc{BH9ZXJaJ&eD?3XUG3U`*HOCEG0fUi_5A+$s;%(b^p8i7{a&!G4HI>7FEQUjo z)^<#{zujTzqmJb|gXsco!^3p{h@VYi-)y1If+tB$_$^pC2i|YL`#3fV!wafp6W$Ef z23KwyYCEq1EG!Ye6o^D|0GS)I^xxjW6&X+6p-^yxKexju-(L*ujUy11{5NYvm#J|p z#%KTQdgz^vexJV3cdFJu+@PZWg%R( zLh`3JV*(iN7#W`A_{|>(5Wv4Q%vz~H23+DCAFGJJrdchF!!-y}2n`9~&|a zI~|OA^Z`w-X!Nmk?2=%kJh~@~Lh1@^Bk1T^`ypbWsy409ztsD_Dm5Naji=3l* z#-bj|qhH`?Q&)#0yEHk(Yu@Fz?vuY3pK{jeSDW$V&Hqa2;X1bmwcQtPs?Yo295l*OTUe1OE zOJZ6tI-deLAIR&UEAPE|Zh0f`B$kp0*V4qCTAcfc0j*5<*`$u38O{aWu6$Z(i5BmV z9C5mcdP4@^NCFeCmUN(@FqkFJjP0cK47vz8_9Kof7F1#+5c?36xro`STlN%vm+dt* zu*hm6uWaBwix1L+y}XPH{O%~AiWbj5S}lSS6K4xx_5zVyOqjCmeo>|_;s-wHHuGu$ zBc{4!@gFSsrKXMcqR-JPBN*u#Y9I?<&b1n#)k_sTJiQmE`ODCd@OHny(V}K7Dgj|! z3$!jCri4`$D}iHaA*($zeA^GYk;hTsM$cuFWL1+ABOnyDHur6n5XlW`8AiCAKMvFm zL3}MMNKvYKFHYW&0|b1#z?3GwbYwzv8zg#Nx$Y`+xas?lYYFk9V1954Hlymd%Lqs% z5w=)PdaGQYu)25asGrt}h0^msOusACuv@Prde9^gH|v87UR3y(1C2cZ1moI%uJ_qB ze-a1eatW;^Ndop++mx6B|5eo*zk1?FE4q*VC3!ted5^QtQsdG zTVVL~M{YO2(|99eR3QPkNQ1T7$dn8{XpKR&)p|vli7sDokNC#^e&@bC82o~8E>Li; z{V<9hZV3ipM@)jC2_*gw*i8(!Ar|%UHo@#|FRIfN?+cIsy;l60@JlSa=nA$D~E+!DRIs?M& zn}=Z4F(E#p0e1gbqLr!Hu*-PlXN!InVD&m?;5ELA*_0lXeM#8i&$a#0asXQpf=-;y z)D3etZm$UTY^(-&__&4X#6|+xo?injsW59bpt6+s%?uE--x}fo{M0bp6gcihvu2nz zAHHQYQQ-C$#%Pd5I7-uRrja}LD}pW)+|M(%O=a=Wj-3N{?R~8@cb%y)b;y?8ui=I< zpD6Iuz^VUoex)d_cEshCYEjv=qO+;gVq2ge@ZM}Zj&V3;3+`%m_;p_*&Or~U607LeV{Rd zdKv4nIqcL9I;oX3XVMTs7EFNkq}MeA{QGer4Nh0^V#>)UNIN#l-DzJy-v8tKKl*2X z7A|bn0@LE#tO0BwC(8un2!vDMU6!V)*+n|g8DTIthcP!f`bHLaX84T8RnGS}qW~d2 zb;W!Ah0V58uv0RKZkI#7GI5#{;zci>u(ob%O;W?XEq!N6Ka~ssh0DkD_CyQXS2B`| zyn#uir|x8?U_F5&oiGi$ zWyf0EL^r43X<=!d}V;w~bW z{s!3oK1Xutsbkyhb9XnZujr^pZH~Qg?4ratm-(!Z(EII?U?&J@^vs%2ecx$5CkUmGl@tB%pmQ{Yqn^OjutU@26T7QW@q zef|mPk@r%NM(Zikr9S@ifa))TF>itSl@a(pJ6z|fiF(#I7h zXx}*ED=}}q^F17>%pRIaN=(R?`fQW* z+Dw=aJ08GGD9FwS>;66k4(7FLR19@IjdX&ca9)bnT$Fz4MM;EQhSuuZ&T#F;NL(j> z``mjD88~E)+&ll@)FVf;gpdhfVsDRB${~kb&Ia?}FBkvQ)=@yMUcvvk{HP`$8U!v0 zXS!BkVbkzV+bkPgySU?6@3O$u@LTY>=kM%{qdHwfp0MPoYwfkFT{sw&Nf>UMf=BYSD*hvCr&8d`yTfkxT`y)w6*J+Ra zE)0f?Xuz3V!bICRo>(lGPB;L2XbNu&8n<0BZZnHG$rH#!N3w34;#gAu6`{iy=-nUb zo{6m7OEB0`1p);z%fl@ER%;8?m_1a%;Y2R|^MWYYDBAsGu~VVJ{0|yV4&HQI>9YFl zNF$RkwA{HqfMQ>~^H~NuPD}K-@s1AkzipID*RTOUU3Mr_X+EF?LoXB9Ye(}dT^oqy z6mUiu+hi`b#n8Zn;CI%rU&Eavz^M4P@Z&GsfsJp{(Xx2YM5jD&v;?AW8k}*#o*Q14 zEp&ElZg`>grsi%W-8mp&Nq6p&LW86;1SC%1JaS+t)7HrbgU$9;3^03FDLnzK%D75V z6*rYks-Q*AcPowQc{=x9gRavvm_Gf=Jz$>;|0a0otK!)yk`xCvAH0&+QT>J(F@fer zI47gk`H%&YAQnq1Wtn<^8vYy#w4L@O6$Mf$yqC=W6CoF`No6epx znbw7rSc84ol#AYX!QGwB)tfqNv&h_?X=MB-jRKk7JB)aV{^^djp=w}P3Sn_r*Y;|0 zWBM2s)WB1?QjOhZkYPbc^84DuFwdfuRoMzp4-FrR?OlTfGvn(ygS*S-f73LupbE18 z&Kt$4s(~8lOA$f(J4Ohs|1Y@OIMwbFrA{>{UWO5|+z%>^L^&OJtxy92a+v*%=^pg0ewaw`LcJb1NJtaBwryF}(!s zgso6PD)n0R4L2Xt!j(-Tet+T_t@aMmh9ARONJr06MNt&nN^JW)7*{^lYWW=$|D*1T z%CsYTP!#;TWtsC+gc3<7fy16x7)7ei!r^AZd&Il|xm#{=L|w3Y45Qo_uA^&Aj7iRnT?u%45|%SCFuxpIn&YA z36l_Ij^S~vuvFoZLSi6~7#PCp-c|C*oEyxm>=2K4$h^LA4U)bQnNN!^-{}_x+}QTU z5Jp}%@b3%7mhIOxE48!RPFz@m#w}Xo;#J`@5o5+vuN`QN)lIvS%PnnM=jdgABZ7{$ zy{*!g$S`}tq_Q6#R7Y*g>1|P9tHp`88ACxlr6rqISI=Rv>ouPc5*_knU>CSmM<=>mAV z>dl)i)99KcU?ccUUN>b!zFU~II^Gg>GC7|Y77WxMj8_6T`PtNqKCE@A6HT81 zw(V%PV%Yy$HWM_1j2LJTF=50Xsp^ljxZlT5UchTpGWC9p)l2iA3 ze39JU-(1}uVpkIng_$DpDJSRK@;Y5Auz;ShdjdeOmNuk@hSb>HW+OJTsEs}u8^xAj z9^XJI#}bC@*(NVywe__iBG1HYeX3F2*epP4o~1hE6?ytQ4sgoe&Wm9<60uGKuca-j zIcfM(gRgYEYNiC)ML+hz_NAen7c4dw0@y2X>|4Sc5x1MuIa1!gQ3cP=I|C|uQM#$S zK>03r@yJ87I4(Jy(urFM*SazlCJ!n3@8n*Br>7=(NAGNCw6(Hch&L9+D^y1)^TN$9 zTL6A6_;Qz^t_p7rCQRibN7~GT!EPpK**KMB;kDB#wQfW|aC(M$dp%i-3d%J)`@B`Q zZSqDGcqoBC2pF2K8414%X=tnOHwc{Ue0vCU6T%0c`ibVD8H|b)@bxUy5k&%`32kCP z_=A(_xBS6&ehF<8yM3*;+}cJFrcl#!mVDcY%_|K-!pl}X!_>lhkNC_sH^5ghOfOIb@ac% zEZfK|q_%LuAD=glI__8_2m$^2a^hp)!^J4WD9Arwa^fHewsE>ITEf;;n6A^;E+O6* zfK*sQYlrdTBcnwX$W*tBSo`ic{hbBaceIKOwk88@%(^_+)e0Y(9-||sK!FJ8TrcGu z*`p0wnyH4>cg!*aSS3tay8Tg#W)3%7K*)ztOzpNh_zXv=Ci`VFSbGh&!w5CytZwVI zJcTXjLn-=&l`f&w+UmMEQ`uIHcZp3bP!*Eod3)o};qM^8le3|6d;Q?!T}DC8edmXY z?#c$N+i4}Fc!RH`94**MhWF|hM}d!J(Z-Eb%&DiMa{R zF!dN(i|a~&w+!=!?1r76mm>z`K+cf-py8%#?(+s`kAuVXdONAz?^vGwoWgnuMh2Q# z;8G~kyk9rhB{(R-1VT1l0s}Vg0#CW{mbspM-=Q18Q(n9XO(*I7-FzB+;)da=_F2vo zFgO+r7L<(CY_BF?R5ALb4_WS2Sh27Wua@J|mZBEIx5Eb!xMr|^^yZ}R)EJxlrmp&v zZ%*_a9L+Zv@O9abaz5W_)vf6S9)|2Oc&ljwVim=~`i7rtRDn}*yyQiSi8z}l8vYdM z4f_(QgR>F_m94KWg&BFVVYE|nlWydyFf|kk8vTHyF5_x?7RcQYv4re#1;tp*$H(BU z{P0#Bp^r+EDT3q-xP6K5<$&r1HM5@BHY{thx?760ScouP)Q!OGgQ4oIQ7_LWMc|TS z`!U}p5KZi_&@wn%EhwI7+Q^3Wn?VcfY2jlPdsH&KRvGN^vrgN(*Faa}v+@&;i=zMj zXxC^%nQS0yP#x*bE48v=vH1(hUNZJtv8f z$zwKDTV}}DgOWp$XS8rtlRS;?PGUwR57_fc+5e<0camO2_v{+j$KyJ|D2qp-@bZ|5 z>KD0Fzvt1ZyEsF0)$%*98a^X;i_lQ~*xTDzz7yLjKT80@V~l_>+jsnMVCW zXZ*!=7N}Na7p%T}{{gJG+3%>L?&5c zl~ENV)5jh|U-*1Cn$~@dZu8@prPgmy@-XW%4g!X6_;Mb`JA`Z3MABtAP#f1wCb6Z1 z*5GM+G@e(67Q8smZKU zU5J_$t5IZeupMuj9$yXG`#b-Ynz|>0axhTeayYT_?(RqSSb;4EQogs(H+0CUz$}jL z`cy@mvg?A9#C;~L)q@>cZO*{v7cf&!cilclA=m&6oJ}U24^CJ4Iq||$(g?_$`e$R) z^zJ^oc{UN{f358Kz`!?cN5#zEv~SE|-|XD`H}f=e;ze{9cdzm)>Oie9wLPwacR{MO zml)MKSKYi=xL6QX%z)2vy4;9h7AK#EByB`Wy%;x{M=$O+XPBoGYC)}i?_v-3uhH=y zu;8##i#xH!OyF37@>W)+)+5X-4|h-?`+J&qJ~i;gKpnX%fbq__2|Lh(WRxKG+A1Z~ zWEvqLo58l%ILhcY5JD=n3~91%hnbRLwpk*NbfFx$!L>5NpR z=W8_l8_us@y?9j|e-(viY?$-5dIM7?r{fjjZ`~WSJNLVZa?py)YHN=eFVaC*XzD;nP3M!d&?gDgQ- zMv4re`}H3A(9n<~b#-Iyh@RZ zeNw}^{PN#p!5#mV^2*+BHgNelA&x>V@fu>p7m%}j^*SZJO$@A$(7My8e!>no0lnt| zVn;?#MSyl5e9iZAo1y8eQw(@Fr{;k2LN2C;GC208n@^C(0%L=p;QAR8z2&hZ(EXy$ zT#cZlAf*NJ-R78Mh4ysLd}o+)nnLY#)pvjskH|;2X1vMp&BFXq!7Y&VvCfA=!t;{| zddW9_ux}QSF7`av!=}Xrw%`hNRP!mYG`7z8!+Tpg2Zz5V(CG5^0|Eld%C>==(O@%z z|Mt_+wj4kJPRrVgk1Xnau10}Vv+Sw|XB}PW zj|)ew^PfzJHrj1#fZwLO_a-3=Ae;qHDEHy0WTQqbbAYxsL86=%F}Vz?KpzP4u}S>=Xk@{kJyalcuVZ(E%InTxfChX+bkeLZ7y)g0H$w>pJHG zSvAU4XHv?na5IsX2n`AK09jUep+&^;plGw&K`8JKewi)A1Z*XE<7T~aS-#g^*Sl*m zVe$m)3XDxM^JtJGf}m7n_duD)Em}-g#kHE4wi!12HW9HjnU?Q=3?jM$rm?o4G!WCv z;1{fGxy%4-ys{&lh5N+)jiQtQT>N^^-4N}ig&r37dgLDd#~SwwzGj#qAHEzbK5=)q z5gj23ZP-8XM*qERHmSl{?qJ=@>=a;dUY!Wf$Ng*bjJ@P?c(<%@iTQ~b*Z~ZBYW>}; zsxv#i%^Bj+40+c{2G^p6YuT*b@-cFEf^L4^v8!sc(}C>Sw2r@2gi-_dU|>n4L#sWDUD#6UWz!{lt7@L$V3$ra}2 z=6-*mbv3%Ux%Kz52ydFHcs>3S;UfO)JYek44dnUj+mQJnlp=B21TLNavwL>r4 zb_aTr#onjDCfK2T2G5&x4R3U6*ul|}NVB-Y`yyaNl5%=sAd}HlkxH|@Q*M|i5A8hL z3X$kJc-8D_=Ac+ffjz%vSL7g5ptlbaC}zjIsYMk%=(k~(sYQ*K+W=Kr##%b3D<8`v8Se_s$({%>;l3 zExbnSKs80~XvG({i-Sgdj`aeI?(acB>!v`-dchb~##mh2()7XVR_bv24@HRd<=Bk< z3xd|>qyPgOeQ^1HM1|%PhmgST4ZNEpuVYyZ<_1bWHl#0x!nVyF3q0h3_Kji^!-dDH@m%Tp(vumiHj9EE}5VK-A zD)?KYh+kXyoc~b%ai~3%W<%@7v$7%%V6N<+pAyh6g25ZMoHlXxBSv0=JtDVV?Oq?E z7s=eeSq3moxhnykBKTQD=H-%Y9~#__QQnbUrQ$2`bX3-pvH*o)OK&=36Jg2F@Md=! zRo$`t*$7pn6;EM#6uPTrv(!8A-7?HxEASl#mR0qm+-kIvOG;ba9@mRS912iD*MZ*G zgcrWOUP2szE?#EVtx;f~5l~7}ZlC%5;d?6@-okdW8DV^1EKyrJgHS%QyKfiwh)za? zt<_SX!};L?kNb{c*Y*fYO4DV^{)UKhf0RV$*u~f&gU<^O;@$@HBLufc97L@<-pp8Hhu{mRz_6bCFIMBe-o)bPRQ^&`$^)E3D6CP(Yl z50!*oB-#MT=Y-DICknsAzaf`1L8;vSxq7Su*!v>nd@MKICy7~?d=PM|6S(N!Zr1>p zaD>(0;-w@-CTJM7*SH}u{NnY^XXO{M#9=$+xU-^tgJ&^0@zN@{Uj`u**$hCzfyqj%ukWt1E|Ibyv~u zYCB@{F07M)%>+R!d!$xk{XvX-9CY3WbVcZ4&N^^ zG&S86d?l1fp&%Jd4{E$5{4D-lU-`QQt-gShQYU(Zyp5s+)p7{MIr%x4!q&0HytWES z-*aS^a0htNQJ>OL)+hna#e|IaNey~8z@eJ!Z^SP5!5TX-7|)`+n*5%GK>x^5&$8RL z9cIF9Z)712gf->=3s-)L*A~}?UhM{uhOgj*VnaGv!A>e@$>I#O#P+zTMUca>$!|wT z>^gXJXz9w>dOLSc85C(9b&4!@?o^`g2uy3M^Bk>8gHO%G#A8EDkM1#novs2ebh|{R z5WKL$w2*hFVhQ$!Ezos*wO?4_?YPHiXHCe>+?xHon;DofTwL35*1u@WPjAxzS+cro zBTwGzcHIHBmQ>6>Z`LM+>;P^Z`<{Vwpu741a1+qN&0CJtXz@5)VcyFU2j6S74UEX; zixGN#W_tmkS__lgCBjlg3_>q<;;=vG>Z^zry6PLiPQBA#5x=K0pp}7dWm}le?tgH2 z#r2V}heI0Ncf=45`mi`U_s6jPbkwi|w19>d*f=#C=X&*or+-VA}?_O3+qfxg_zC#OU&oI=XP(>_9$A4gO37ZMk+BpGig2qoPXEURI-8yii)r1o4{nZc%fQJE zU~6pV_~P4~;2W2GM{Jo6M$RPtbH9phB-q% zd-i-;csECdQl|BKRKSu};jPn(Xk|NAd#4$a)7lvl*twyd5vH9%gs&((NR9fmL;>xY zcWvfa*Q(rNq3HwC6ygmltL zw~8w&hMmy5_aDA%wI!7zah2fd?Z!;QcyDB}DztIR{FY{tfl?Uir8aDxL8vpja~Yoz z-il$ot4k3B81S6vWdKNcGAoBU#D zTi`2a(6#CuFE=1KI%iW8XiW@RWIK3M=~){K)*}m|eibltM?Xa*MlgLeM6R=e<@}>| z5g%$3XQx>Q_rsN4!xuRrZuIZXrt5dY^XM?6sJ)(t-P_W2yztfx!UEl$RgGuVMq>tD zD;hh3yEdLcgBpJCLT(2hsNmkA@hG-JB`@x+6r819!928Gg30|Gss~QIy%p=J z49X>km{q^PPO${Wfk&vl`Cwzu&j-#%I%Jp^4UV<4UNMv|V0XaE`&tukDr0Zm2>)$L z_Q1!9-#sC>6YLBVS28QO-kV0aTA>v~vYaNzNp86cCTy!Bk5N%Sc*m}eRBpwISK z>aip&oCV72xzJ4}gBF=ERZ1$?AX%9G5k9KcO`RT7fN(u1xU=@Giv})$&Oqz0Lp*motj+svFiFkfxRx>-Q^`dXir}~@^>;^ zAyy2Q3)5=$dF_~baRtP_4Vlfh?zep%ntlt3|BcP**Tst!rRugNcib~h-lJDJN4qU^*bX75*{-aQEtcl|qftO>K71ZyfGs}3eW=(Y$R_iR& zV}2t@f&D&TC!ITyb&+72U+!(nCOuiqlipEIFD*x1_&mI|&GY#uS4h$ba&^D>@;oOc zN9St_&W9A@_^;_m8VpM%#Ow-h`J|`VNh?Qt*w0xz(a zbspYyWkHql;gbbtEUC7Gi=(9Q%k?c<%#($>=lYNZi{zOO)om)7I-wSStySA^Hxt{w z0o8v!_H6$V5HAo7%`*vq5;wD9mXi1_CS6i3M=lFas>J7;y?1Xcd-@MiXw4FPkxB%; zflxmD4+-0x7xUioy&@#7y?582@Wv^7PK)u8WHMmyNCYRQefr~EE+72?uf z{73T7F&+?z2L+H(5q4?PH=EJolF;3H|JKSTL$q@#PD^E6)>+(!3RZZ7r%rOyul!O( z@b#TjwGC$`49ku$RXWKjtFWflE+fw;c_O1icApJ5|6W2KyMlX27U%NmFmkxEe%H_c zPQoZq#cHVHtncNT>3TvjgH>aykC%gNS_SvqQP>wUv03A`fHDAWk zJNexN2vBI~3);M&X{U;kNl_MC+xb&f$CnN+ft52tSILjUt$GUy!zDQ%mi7|f9Ii&m9mmWC2Q*E~U1}I;I@? z2f7iVAXV_9wAsQk8GO_1Y|}bC(}Td-aCNg&JftfcLiB6?8~>ZefOe`K@6fa5`TsrI)} zaRErsI$)@pf|7&Q8I zQ!&RYC&5la%PiVmA=)x5NaM**KZ-0!ikD<9Y*{Lvgu?v8hiaLikC(9o@5 z-e7ous)2x8+uwEYywrMY`+CZ|GR4gr!bkazzCN99Z8_G%G z{^h9ido|*z0BEht8&;$@7ZWZGYNQh6Ub!gzbY;N=Tqpf2HJoTVVMAiJz?&Mft&hqR z(Ruy2CAmGTi)YQzZH{bfmDAhZt}z5NP{CR%z>541qs)y^WA4k^6xnn9NxqlW-L*2k zYInvXL1gs_;y41zDHokG_eBD=?3nQ*5v)yLLG-L8>&)SNX>nf^wY!!juhL#d)i;6V zjmsY@b3s_NnTOJt+oa1oZ0C>83rC>g1%W9X-96PV0I3`OChe8~Nk3x;tbyPtISKW^ z4|LFiN!Lm3ZqB0tzBq6SUWk2C5H*A4hkEtS{+eUySo&UTi)VuOqYjenVTTE`G_c?r zRbJQ52o9(N?OQ6d#*XEJ6fX7C(~0-NARvGfA4o%rFlKM1gU_0%pIQ$5LCppM4>|D( zg%_4qqjNmaZ^MXC0#QnysVbpud$PJ-XHoBWSV&!1ilMC!a*wpqU3@VzxF8#e50f8KKQkP8W6F*FR2Yl z>Oyb1PP*!AKF&}>K9*!{^6yRE6xL_CkG^LCRu#zXg`!;OR1PD~Xzf98d zExW=RtL(^nBEv+-vUQxKOwBqPRz=cHfK-jn?m!pf2baFQ577~Fz@VAdlUGp{F!&85 z>0Xx8ux1D|yvt~jq|kq_sE7Qh8Yp}+bnCCjrMk!u)pJocRb`q&=YC1kbR22^a@iY) z1&iX(euyN9){q0`Z`+oteLhiKXd2xxItw#+u^#v04a`s$zr?xWYwJ=F-DXiKS&w$s zS@b!OsCm;$1#i8qba%8kt3_IqirDbqb_>R7llNeU*GITkTwj@33xPKJi^Mfk(&ZQhOlKGICmG6*vZ*7^RS=8I>)qf}0!Q4EL zoGq}#O}ql97Xk$&#PuwT<89kQE>h*A)MZ z*-1B<+OP(C(Cm}1h3of*`wz3Pk6YY*U+uM_pb%FRN;$;KdA_^*xt`lho;oE5XV>iF z;Ax=dQzWMPGyl!VgHhqT+E2#~IXMm=$5EAjjBQAi+wF_TA3v~`p3^yO7I549Z4gEN z_f_r38p_+KI{z5Eq(k1AGa4E zZj?$&&oP+2x%S+f-opu)E}Lm>CTpUSPMmpp!45_H$faQx<4fh<{KCSn?J zJ)K;mM%BT`Y(;Z&S9N0aSOET37cfOD%a%mCWpAnz-qLoI1IKf> zJ$}swb06ljcb9*W+jn66O{1HnC!qTH6&3cG9M_Vh>QVmrh_Dd@`T{=wRZU7^1bz_H z0Bn9Tbd&bWg-icp8@62DtkK9}dC!UK(3DX2mYx}SmeaS$J@KfdG0AOWRMv~)?V`Bq z-$=_@)t)OulC0fzfkdjJn~s31B7R{b`b-6OJ&c$UV30km7L6Y%naR@nlh0sg6HVut zaU3O$F?#mtd}hY+#V`dMgT7cVHnbxU-;^0R9!Dc${w!uLW&l@P5=4<=qId3jsVflS zh?y%ZDHxPG?~g4O*t~|A?>@U{OSg~FHL`GDN?xz2qv-(z@8_#4W~^^~;Z zQ7S8KCrNBSWe{X-&%EpZe3PQxzOec3rUw}^?Cw7~JGjQKwx!588HQ% z-8u$|&Iy2!v*Il;+mMdsoT;$I!zrRIXAI~G%^l{{-aK(&wbM< z?^Pz1A}j#@x3g85JkRQBmU0<^7cqOUsP#S15+(;;`Yb% zy?;HfrKmN|t6L?FC;YGfmF`^q`!ikRb0LNd z(qkq~eyzETF87^2&RUF@40Fyo(67f(G3eLNKF+p&J`jV)mDFm5{1Q%?wZ8kG#j{Q9 zG>3z13l$rm-pY38IT-^;>+l-ZefCA$Zr1tcn62fc+^J?<8d_I+Os}bGrRR&swlbG| z18W{5bvcfCzIo`aeFZt=bIw|i>?1`*mQ;zWE(b@A)PJ`$?{@TVD!uZb^UuCC1KH#3 zu73Z&AL6YvLsQAiS``G5osSM<3fhMgcJ;xn>tSQf#)mdMy^UY%g}A&W=8tUL`r|jn zrBy8tm+I~EnqC%Mc~!2zqO9;8EwMrVlx+N0q-Xa7GDUv9GOF1}Fi(9$fwzy~LvpY~ zMs~g@b7dpbs^K4jBhQkZKu#_J?@EuWQj{D6`b+&;S{|jFS3J~GqC#(c7^GjkBW>Kj zoPF23Zu2L6V>RTiAeXdDxb3_*_5&T4uVlyJc9Oq>n>ZQUH@y{&gG5X>=qTNweb``{ zOBzgUBsZG|_-kmf_xN(@4Lp*UKOBnjgxBzM`P}H(vzrl|uA#pFO@H4ZqVq~9)hayF z&f@GR)zVZ^c>Aw0i?MD)bnneT>zgEtqTcGrSxRDS^6}fV*QL|q;}IoNUELSR{&>lv z`p(V3^5dR+T()Gy!Ib5Lla71S6Ib8Xh=i>O?O$t8E4;E+u3yhoE1M#`9fM0Oxi3&z zdnNJy>x!L!Z>Y)k;@$uy{&%3R9`!4UX+V!l(`dG)Be{Wzes!zrT6AJ05lqhg&CNbw7SuEm`$^Bs6GC-SJhwdSOy&@>r3w+gz`6 z<@*>{Td??MK0@_mgyfbxniCh}J}w;0B(HkyH$8PY5ak@X_DgYkV%=~2msURiBk2_y zvm?%YtK+UCm1YhzzspO8EzkeuIoLOObNs@0)4`8*j&3NBo$v4VEzdgW+)5UwO@x?dEAvn4p6zz06Y#H5HTIp|Kj{ zN#T)CdYF0z9cJ~LR!=^64^x!(fy(2jbxxaRx_)#XPAO6LCpuUESFacKe6wETXWNno z=jOcFb~qj>mbpAo)SAuoBO)dFPlR-r(P7E(22Zo(A~VMx$N6rVziBy`@%|J? zlAq)?DuaRK;{xeXgrX`(ss$`^7fgQ5q0~1q^vLurZL?(9>(K(ZBvr- z{Gdg4gKF1gtks}tvu-ZS;X^RReW8+occi8^9IN;r;P_f(Zr|e)mbaTy^XjXZ+ursUrFGocu_iXRSXdas3t{ zI%hc*G+u%vWs}3$sw6SShfdMOb|o$wL;u0jQmF;k^eiu07c)e9C{v}_mKM%l!i)I1 zlO=oho=K!@rKszNyQ*$BF+7`!t&6i0Q;hB#E|FM|bnn~Pq6jm?xt2!P zJFm2i(Ulg5UE0J>z{0g{hTgaC+FPHS+oaR~%7+zb`Zle`l{7X|RQ4D*RYm5*k6(>E z8TGhZROUtM$<4d2LM2`W@BTTw>`}MqEZvHJw#|ONbElDGi0`V#!VY_<&G?lMUce^t zz29@qcH!8%n9z`&sYDjoJ-`{#ePvJS$h_ZiGL<2 zy<~H^$G6X-)SF7B%cd7MWAWc=Qh4m@a*5RB?vnz(JxYcXpy%o8L%T0>yXKO~{M&!3 zA02zCNzYp~B}}(=N%~T7v~YG;@Ofa=60Ax@jTJ7sfkLEPtT3CuUh@6r?M#E{ia){*vYlP z9CGTa8jBWc>s`GI-_}pBt()k${3Pc|nJe>mu&Qy{{w2d&TBCK@vrNLrxFBNtPf$Q|D`CETqV=?Ys)+dypuym_!QxGxl{yG>} zv{A7su)pm6Y-r)?VGC@R^pQ!Mb90F$jO9*(-xVTHN(XbW+ZuWQ@W&4^=nz^ie#xA! z4$$xBE%Ns!`oXVzY*%%nME=@+xc}|rtjYMDq(*@&|E&KvgX?*+VP(p_@_00N74Dur;pq5;R2g4-qKja^)-@vSjNpYmW2Cz@0fX|#1*7& zj!BdmXsE9-E$aDn)bxyhs%7GOBo($1iH*F==k!p);aPb9lv3_WOY~NLN!qZw{NULe zilMZ+dC_XG@{9ykrz~&N-{@^!eX{$$IEo9TO8`- zspKT|1WYx88Z$d95gy#bLYseqATP!Fuk}83n~uUck6e8$=xk#zNtz3O!VmrR(kId~ zx0?DNo;b)DAIp@9aaTXuuIa0!m=GoYh}`FK``V&F5>ss>^bc_845I@~$5ny}wK~L^ zXwp%Mz&WXeuH-QyCLvmftt!hT;glYxP^ z}PBarQiAB$RnLWRp88 zt5Wv35GS+jJubR4D`jT%C?k7ko=c(3Cwm-8I9cJ47Y2%oa1 zbZ)DZ-QzZbFcsnji`^cLUjM~ zzhs?oJcT*oPJ8F7D}*Wvjux4z6HTHyKSx zH0Etk)RM3cn`iB!wA$!y%7XNEH7-YYRN(h7Q`g#ia}J0ia30=ri^xOv!}Xx5s(X~F zL#;YY-`5V?+kRw5DKEcMd`gUY;uyka1XYcHW1 zkCj)g(pt-{)8D0W z3|*LmX*D2u>PXdbYYyih5~Q!J>Qu%bKP_H0bosoMUwNE}GX-YYnMQ+Zpwt}ck(hS& znOaqFKd=E&6dV{cs|gH;Xk#d1Di`{axO2vywBz4RT!WiSsEw|#NwaG^iE?Xdc+}O- z+wj7N?fi_=9}H~Qc@>r;eQWnS*Q_6M8&F!OPL8KJROqO_z`pUEr=QGy`nWNCvb46w zSG6Y2#0_>&%@ca}IM$f?0w7X5xH{UbOo&fFSgp=Ldsv%6uuAyKpO9@+GnS@zXs>6* z>eT3mIsq~nBw;G}e!s=0*$+}ck~WHqLUp3#s84ITXJd}hL^Rke7ndz4WqFQAnmY;A zt{|T^N$>I)MPGVEm{5`;uH6TxH(*X1zb{GEF-t_|4qJR#i-d&erB zh^v_Sm*%f9Oy5W0p#6*gKr18r(qbk^+ z|Kgf)4K`bD@B9nK%A~0WGQ8Oz@iJ$e43X{|gn_$#0y^U^V9Q>_pS6ZD2&JAEx+&8< zW!uC++2pbde*EgmOotB~e%o&l+${PuuY2=_c1-Ky9WSYjX|XKtA6HlCz>CjHu3Jb9 zjgG!LlqP=&_f^fX5u^6}TFGnHiBuvxc-@p|WtQQhVL%23muN}2qJf|9XuGF!mxyp& z!rq^Qc6ombZgQ5Wn(LjS+X?H+`HgMlNfCl|`Cm^+_%v$y;wmk3{);`l-hooIE-EqU z;I2ET3qBzP9F0BpHiOT6zPf~lYZxKSo>uM*E|I12wmMy+NdxN+k$f4HNj0z`Zav6yWXsXof0Uw>f^9bgMhlJ= z#Q7#zAuRZ@x4rc>Y@TNz0txLc+YgxD{Ja6Tlu--v4wOnHYN4wLWQjTDk_P#Pvre8U zZ_SeeGoIAlj?ZzxyXT==UQTZr9COL%_fzPh=hC7#-T=d{a``F<3 zjO2B(kZ}o`L){X`P>WIBT>S82T!|K(pM7^GWRq#^;(2i?q&Gh;>h8jCRk#?C;L0Tj z-!G>#TSZkKuVfbll-wRte?W;#lJ)hfV&L--3)%ac7V7z5C~+bJv}v4m{{+ip?c&9I z9gbQNGs@{}B}0P0&iV%|2BROpBSZVuvIdM&&JA+|d8WaXDyD;y9syL}gUk$$a4IEb zpi4lnqsIrVY&KGN?I)p~^Dv|yMRUhj^c}z1K!X+s$BNrfh*>Anb<^A9kD?;1FOkzT z;!|VoJzqE(CO&oYZ-A!1trERaezw^(W<&98$W&DB9^mU`32*8`K?gplQiwF zj-cC=G^bHUTXZXPVtO`$e8D9Y2a$}7_}pHIerH(c=RWoHy6QP27GB!lakl|+TuV|; zLi_K-9%pyIb9|R%LW~t2W@)9-Iqjl^GBZBPlPS>*>|o@~T>q;oVHO@|r-SI*2PhMogeb91Be;eIg^0~Aa~BjM<8cv_ zzlc^mipDzLz93VUrsscbZjU%@{dx|^t&opw1gtn{$(u=x+rBRygqznh_oY*-r!%U_ z6OrwhYCcJNy+vSrJhHUhE>M!3b1gExQpNMP=A%dUerC(B8L|oLrJ zwKK`yBlQF-1UySrhA}B*yl$WXrs#3Uh#F{OYPa4B z`FK{oduWuQ`7Dr!i1=>xc$&#C9pAq5V^#U_31o<1MM+*$(oa7M)jf#-glB>u;VmE>{_AhmK(1V;p_S8oI zr(9$qDYbu^eNUqqzM^#n=$Oo77~GMK=L*E7e=&CaV+Y5Dj-67XbyVP%m#y!BweMor zRjYK6rfq+WUf?Sk76g!$nOn)X(tbaMH{GV#j~fi=%9k6J;b;ABF!Y$}M`V#p`sJ5# znRn4aWtaqqIR#BVyYu?vxQ13m54FqIO!}1N_0I_wQ* zrH8-krWrT-aVusa^kk*Au`e1UJXL+-wAx2m&@n>j23|nskP{PE$Jof55UOF~hTu7x z0RyuUgnqb;!h;p5eOjZG;o&OO9QAEu@7+Zs7B2Yc1*7_U)<@{?#7w>nW4u-bwK(bO z7)zo*SGmJam1I73ulM)-rhn@VEL>Hh%7!d#XUXgQ_XKn|{hib3wyR^I2g>p~tY}F5 zIUCZP&|n+BcDpl!qbmPCB~3jpE9VyzF{r+{@#IV?SG#zAWfOU6@+s?(5EkWXq`fWh zLOc2B8mJYh9h#fzd=3Y?yb={oPG}D|V0C?U*J)_jsP5Y;XZiJzvFO|+fLEnlo`=1d zfu0d%Gh1EXxM+Bmc@ZhFt~K}xvv(y!Q*_FGK-kw?mSO1+-uz^B|AH{#{6RSoS!P*7 zx`?>=<2Mf0MO_UZvhuOwWiRf&scmi2%J8@n zvZ&42>K!PSv4i8O=ufI@si5;+MWt)1w!|{!%&*xtb4yQ%{n1k0zWBl+_Q)D+j0mqu zcv=1-KQcBrOpDL@N;6?sLsUh?%$*KAk3BvnB?_Klas+6z@%)E_$@I0HD4V=M3_*bI z%ee!mp1eBB?D?fV+=h0@z$7X}jyx%+7H(+hT6)MuE|&;tbsJv^NY9B=17?-eGqmvg zj0;#)Gzfhk(}BuoX!mPmYmt!2aaJ3<7WpsX9$+0SWJ}lLDZ%~3th_q89{qj@ioARs+ z65`VorW&NTcRjeQPV5l`8)(y}@E3{EC9lbI-sKHXA6PQ+2y)T3;|`Pbuh^j#ghRZx zb_O_WAH(Zy>$*c%?yWv#9GbSGRKD^WkmaIv{5%7$&Cd$i@Kw_3t)j*)29@M_tRVX4 z@wpzBb0Ym_9iJsZqY}OU6#F}j3_<1PBB6$7p7cvo2@y~CE}0EfQ1eS)lEnxd(5(F%lYBUHk0v znJz~_rCTzmadv@d`GGv9#CtN>eCNUv6<1*s+{6A;s>3G<^VNwp(z{&^Dn1b3zSuk^ z(g*GEZ~{kUB%l#?{HwKO({LD{dDC~@aUF0vp4Cd6p)rb>18C=3p?Be2^m^Aobyjn} z=D6MtpC-)Qo1M1>eQGf)vOvl9Zi;m+%t(&+lG3h#>-vfbyv2axu^r~L6fKL+Zy`^z z3}D~tF!1rog#^M2Houp!S|crDz*Ar!vaHJV>?$$CfRarz%{p}{K^CS_ z7A(`sLrF&(zj>{za?UWBGG&k%#J?jgBIg@L9u|Fb2NM!Bp^0dJMv^AVyEP)U_T3?7 zNYTX4XbzJ0{-q>b!NBi>t3IAd+T#q5azla&gee=}ZvEsi1#+E}*$=rXD>T_Bt8jsm z$Xy|#|#5Z^KPm;qV>8!tMhP4=VcYfp!6W$+vsxl-<lGZ;}mp*kf#)$&P4q=jR z<~DTt?#N!=2dX>w&WmdR673}cf--4QllQPJB?-@_hnFRfW*-5qi7fc5X zJ#y^7S%o8!eo`jC?a;yy$h{>%20d>A?&tA8;+7kuOZ4Z-8S=^AnQ9TV9J*6yOl))c z_~k6T8hPxsyD+N!kCY#phdJ78-O=|K$#2+7QyQCT)i{wXs zBA0)Q%sSdJh0yeuE)4JsCNu>7qP9pg@kYP<01&i%ChjOG!HkkP%PogzI;3*whoMMQ zR_oW*Hfwd$xINOpe)TlhX<~;LI8Hd7H#5vRtLG1lx2X(qMM^Rh{=uhNR3Oq)|6C{x z!R2PtGE0VsAn-aXN|9To`mzO-zCaX}XXRfz@BQ$a<%9tx*?Eldcj=2fQEEU-Y@veP zq3*Z{$eS#4I1=`oj$WjoRI@`z4h*nqw)BT`Fb5-3kQ;D3*JDVWb^IRGByuoh7;5we zm!|ChQ%sSk&xnn-hv#tGXyQRvyus9dBRt@n?M^JkoNZg5P0P6cnMAb@15Fm`*VPe& zbe%h>%IlQed5a)AKKsibu>%5_{(khti<%R`KL>Cg0-1poPnDU!WyqjR zwc3BFc5Yv{B)8^EL71j-vL066St55j{9cg%HXhep4NS*wL<0hwUcXxzWFQNkNQ+>t z#>AxY=qKEljzhIw9msZQ$4auc_T!O(juy>~wJU0SyOkByGd8RcW&G?6WyVop;$EjS zn05@|abZXz#<&1^l^b4|oZJhAuJKwm5&f#Gqx|qtle$he*Xp)FPBKZ-`i^(;yTU+4 zGD)`CVZZ}g^UsoyZV5savsjF=ub&xa+he1 z)BSWT_y7o>4O?|dXn2W!7)yTHd$?OoC*FZH@jHyqEb70$ptFwzQ^q6Ox};l$C>J?M zpV0LsPaT|w#*HYy`vXs0=r1z!FmsZW!?N_?j4@m90D21*>Su;7ahpr*aFU==AP32u z@XL&KJM={*_kvgcc-@Q03*<_LoEo}5PafLu?(wXQ^Ih24+u+N_FmLWjbzX`rTiZ^j zjr8*yAJD}qw_kDh-CXmf2G^;|T&0HNZver)P3Z&8tO4HN~aFQ|kMA9i>k z{VW4wR7bPv+ICUPMw;j_xgkzw3Xf)b(1>b{GGiAE*U%hUC1xAKo?$OZ-IVw-5ND=Xjih*{(OMemcBU4IjO@+bw$0zVC_VwM)#K|-ULmg?(wxf!)u0Wu-gM1sbFw42f zQ^h51D>7AL7tYCpe}Hx@C;ydQeya+|=$J}@uZS)8;{0tAQxmk5cQ3i_y!A)>6<}5; zjMJ`f<)T{~$=*_jBo~)#CKq1ZK*XknXpj|yuPkW#QQ6Lmu+E_0i&Q_FC0-5iqvs<@ zPaQ1I8F6-}VXGei zrCW?Q>#Qsp!t)xpk*T^bCQLYY@Caxe)DG{+uiz&?zBct_PDIKtS1jK(lN@M}<75(} z*@2b=O$QEgNPa3YpbT)b?;Gy=ZovnxaNF-l$Vqzg0&8?^H`3<*mGW5^O|=zl-$ zjc=OuvklzC-WQ4N_-OKA_ZqZKiQ_+mc%ONBicWAsOr|uvZXl_bT(m0<|d!Ktf zWcTPS6CnWIT7XHNm9tUd*d-!GL3wS@`d6tFkIB*@PN`e|X%TR)psU`g2xsXUBwtYgo) zqeTm=MXSRn?ovKJEa(e-M~6ODC|R+j@bXG2;y)O8m_n+b4boM@Efz*HMu8%LQ{c?z z+PfNNN(Gk;zuD^R{^)$~;;V6qw=A`rqwyRdgG9|zoUK?!wq!`);=zgQl|uE5Ki8MD|P z?2UlUQz1H1H%dZ?bl1&65K8UB9~X^Q4wy@|b==7$Px-UEM)vEWDW`v=(CmpfO#3#U zaS?%=7dw?A#mIS*)*8WyU#;>lF!!<39^H{DLi6qJ;*Sp(@{a4a_82*_D7gyv4e88H zh`1qAdwuJ(#NN09{H|>Cu_{aB%`E1^B78&6%G#wgs|zmXIF|n`!ZBl(Uebn?IV@mq z9B!jKCkuY9ADE{jzCrsWkzXjOE(?FT0N1ehvwuRebvHTFnR@EG3I6p&krXi0V&gZ< zWRp{LB-8QP9Ppf0FA}{1tqTJj5ao*1Ijf9I5M0Gyhaa#WZ{3I@%+3jg?~zLmQ!_74 z+&o-;lmQZs9?BF_W??qrqS2_mP_G*j#36pLQLnbW{^c6ulbf%_+BU0ZFEX|jA&ZQ( zm)A_k&Lk@Fv@Jp!X-ejFU0n&s@)56VFL=JL#@sz>`)Qwm56*Xehe>T$$!JJaW-Ry$ zEDwY`1>1faZ_ zpeDArydyLVo9hVX=*b@RFof{%#WRs7&xJI^DlDIlSy}u!O=5*N<2B+ zKdwu#W=G@GfR@`ngbjV|!!Ba8C%VvjF;4}MBpe?0WqS7zGXblRX;=O2L$T8`eOU!#*w1wt= z_LlpGL!;JpB%?v7?9c=H<}oWb7#&1EfhE+(dq!G=i#dsHowgF~Q2w(K!Zc-dDrYjR zA~%CKFG;;PK+p`(!maz?` z(}zRX^c082e@JVvC9>4B`Vxy5H+z|wbHikZc-b^(wv=3fc`o=}vF3%2q^`Jos~scy zpps~JrtNo=GqtHG0>Sf%IxATa(rhqgcU#v%sPlz#q4>GJE~1D2$o|O7$4r|^`H=~j z$uYCxs3Y0m`|$x;lzA8W*9ZBbFR$7YzMl@{4qH}}(=FOPM`Sn7F3^EDYi|w6u1IwR zC1G~m+pY7VQwh2JTMc+*q`=Uey`K*ukGa4}5YEG~u82vTlo{hltmo+$YMSPdoMlQ( z$B%{m`;;_g!9ZQYZLc>C{GfQD^O1Es^JiUSewe@;3@E9~yb`3pBA0uFP{+?+9>~Ie0?F)#$i;+u37n{`c0#eFWgLe zN+C61>0??H>I3jWdo4iOeTsp)AK%{S+$E#j(T_&Akefj?W4p$qA?pPhyt64tx0j~LQ4^gH(U z47B!TC0B5_r9FrY?uZdZ6Q3}BVnF}+i>LWv+~moZ&~c zq)T?_<_kuH@^`K13&-(V`+9`gr4cQ3AptX=(8+x5=?-z`GT0lg&3A#<=nRv1Ld1`{ zY5l|PyKvtdemd_9cEUP5<~hrYLw=llU3#AUST>|{^MPksFpFOTS*1};-RB@As@)#A zls912@GmXv99#M0on@)9gJE+TQX-t-S;c@fgOhI5?e!)!e$utLL{|8*p?!{;a-Q!o zL)=t+`((v}Rl=cLeqb7g@O{G4mw2bj=NZ}4vs;z1ZIHo?38@{~n&SHr6oLC2QHp|> z6VsdaqAIMx=z52~#_z7hoC*z3zK_I^qo2z?**j$f#Zz!zeZ6grYtsGU|f0hT*@i~L6I0$OkOz=pr2~&Tq(Whm`77#x_0g?_k zo;)qNKpABB+>d;eZrvx;IE&jjR7d~Tw!IK{h?D&@_4!B55Is*ElGfjjxcbfOT&)dq zv#oI|^Q|CV>UnT3D^MZoX3{w`Zs4@Z>bq;fb!g#W{Bh9m`YmB?mIFMn-2c{nWKR1c zC57XX)=t~X7~T%;Q;8XU%L}oRfJM!B0qL$@N&&p3^iGn^+gaI3@D3`Hx!rAkmETptkdiJNd#S8x_P;k|4(~|L2x1c2 zCjqm4R8k1LVNATk1hRU!{Zd{19RP2&LHIk3sNQ@BwH&dhG@cj8Q49)=Mm+*fRzpcn zI_;1He_&K)X4Pn2l`#b6cT&A-#6V4sY3Bq=#n8BB{9{lX_!>PxXURN?o*=PjU_V&;16A+_%-qCCQ6907f?+tk>&9pK3ZPx#>cH|!8 z=%c5~P-!{3gq_!JisU&jjYntsGNh-LcU+V&1j>-LPJPS@mDSmIWcbvsQfYm}#-@%Q zX}DvExz!U_xrc1B2VDC?3xiG71f$Q>$4h&=gxvXqj z3>ftj4Zm(w2b`uy|Kq=Ku;= z%=$bTx&KF;%?4^z#8(p!DIz_$h7Ahhz+4R#x7PIi?vFJ)oo2)BRMu&wT)cC zl}UDVKplC$G{(ERY4Leq390x~)|u9Ix)B8|3uR4@+$d$wcr4lM zxtE(Q-Cz)naza_`=G68I^C~2vdR|Je8{d`*Fqhf>K;=)L&X4ak>DjDcCk%Y)q zao3y;XSk{{g=$&zLCH1dTNB`WL&)-8*M7_v4Or;@l9Os#7&Dm($VF1)Zk0{Y!2^(W z8(+oaESqKvEm6DyxwBLG)hgso3G1oj^R9V+WYOcYNV_^%}frHOprx?4sXA0Kv3B^%P;HoDin z7gcQyp4cG*>+L=YSzg!iyS-3rF0R1Y(dP{QFi$bh7;M3=y3|hYsD3_unb?t71N>_q)^j);hw1^M@7p|c7EMXa{`UGMq=<-;FQjw zRrw!Z%}^6*K6z7FXw6}Py;~aoXxYKdL5oh@Btf?24~wtCW08!HJfwPB%3Ich{vLsk zpVY9jo%{~rL*qS?i;$M`Y7m9?D!JAWg1)N<^768%0C55NUvF=I$dPWEq3Q0U!P-$$ z`On~h=-f7-cGy&4bITtR9zg5RfLGn2V63qF{ZbkNvAsAZYZsY&h% z)r`|L&q_z)8`-Mj^OhqsAqr6GEHSm;(C5Fnq~)=A<%yUS*vk0|$T-Zk!eF3g%@3$JOWWKB5PV9q#dZ{7xRRb2$ld3=-VQ$iWkDs+!3T3EO z3}2e(zYwC2<5_r>2W=Fv+U1Zb!8r26H0kvR@q)*{U;B<6iA$vdLV=j^xgYt08SYor z_TIJ7>l`z0FC+JNgT7?ODZ{>8H=JA$Ho?z^5#P`qo?H|DxOT$r*Mv0e{SF=O^z85n z1r1&qymg8ki;CU_1~q*S99PG@;B}^y&%J5KkNA1ch{}U4wdy%4O(Y#tJVt}GVs7~9 zNq!)J8Gc@&r1CEf+x`G3Kg?|*{i=}9cq~r!*}utIOJWOJR%(H#Vz66u?0}!TY;0>QNr4(dW@~xkx_3E75b}C@%7~%lerkSMw zI+=A?z9Ey^n3y*>Jv)%0;6RQkzpii2IXhS6^i59A*63Jt$0QKGxG*-&jsB=l`L^lO zAiw$`2Cma>#l{u>&f~RiPT*DYC6TF}UIA~vXgUV0tZ2C?5gm)!o{f@!=I6?30T`sL z!NqcKMP(wQrKb*)wb< z)qu4ecI9}6e0MzAju3y>BT#RMgrsx}MFuM8KK?Hx3-@PIE@x4frn7klG+C{f@v^XI z5jV%PtXM03QEL)3^5$p@onSNL#$kJK5FwiTdsVV9pN3>}*xCbS;IA6I^{$_HEB2wi z^Hn~6k*QMWc;BOWpDLf%WW%qE;)>Wu=qg*T!4#hX(ry&^f~+*&3Lna9BVx2c^^~NQ zrD!HP-3az=Lxuyrp6u^Eo^-zIsC}phKLf-mgB&W)X1qp^5z5tt_0PdT!$;(_1hxvrv1(=N4unx)1d64!W%F1TW(OgHirwN z?+tg1NP`PPkuC&iB0W7PDzE*ARVCXjV;n2a%iF?nQL33Caf6Gt7`aheuKhuniYo*- zx4R6-qAQZlh79n1<HRjEB;EA6701OTokMUipKTGpOb!+UmgCBIv;6pb?PUeyZ z#P9o~@1xw+0@qv%H&}S~xHJ!Fq23dgH_+m;Q-9y=8=h9-MKkyV36+FUju&~@qcD)X zvOB;YkfZCz*{>o0Q=8`(w*M{9uX6J*r5Bl^Go$9 zIUC*-_^`K!sAw&^ZVvZ3P5aQP-~ z_HVya*EPVb;}mZ{O5J$k(kpY8DLuY@xTIbz!tqK*F&pjUR}%x>wCI(m;Ae+bSf*SY zcJ?l?u6Kf1TxX3s&bT%usGG2ZLOYjWHh&O|>boUkwypu%Yu^N{Lz1I&Qvvk`(jz}@ zuCsbiK*QOCd7Hy^5%^Q1x=vGf>3*{|;(cvUn-J=WSFO;_;FqROI7F(tjyQJ!RA7qy zwYSWIZb*RBeL)m;5bl7&0!(sg-x~ z4BKTMpj}>)zeJV=O=evp8u5agd&@~`p%PKE-vA-4EI4L&9TI+s49y{|6#Lf*@;$z) zR-UIcQp88fmME$w&iupI!EVs*K7u#4Ef%s5OyMJd<>J%q!yq~ z+K%O!e%v&L|FEGH9VYXY-VS6K)YDP1C@o}^L%_J z`1S~^gI&RN(-#i7uzKN0wu6E+g>2$X0JzB$@^&=XQ+N0dZ{JaE(^jk*y1|6%gv&YiJ9Fnm$a*Sf=_+JK}ES36eGcdbcBaIz6 zX)j9kJvvLQGN6=Tlce)6Tt@5O@avAdB-P*M-tjvGl&Z8upOdTQ=qqD4ep{+kYtS71 zk^{7ll=c^tGdfpmhCDg^voCHE|0_)khykzA)e`QRyu4E4TID(GOR~K+Av|fSjIqD@)IP<6OfhT zh()#ig1DVkm@18FG#asa^kQLNF?62wk|<0K6vl40+IgTGkw*B$ko?KA~ZzP=6u-tkQ%GR>;*F zZWnI>cg>iecI7l$P&3#A3|!f2TGl1ihlOFAe6LMC`fleg0b8C>N5K=96Za#v7D?q# zPn!R3?p1NIL$A8MI4tMWGMW{KRrUT1>zYO~aq~c>y{ZrnE7^Og=eeQr%2y}1zn}~d ztqGVQxfZ!#N!acW^z_Ta0D5){TSP^oE=@etYIxcbVP}ZlP?1co8^`Sd=k1uEE?;y$ z`CAvehE%u?2Ed0~UtlnIv4QH%dyZVqNQ7UkZoRgKm+0dJeFQv%05{Y>e6G!%6zm3n z*KMG*_M0Rw*}|OMwl>iGnhBWY#`=2SuOX=XtHb3v7%Gx?=|Bk3smAQB@S64TIsux~3aGXo&3f1^?sY%KB1n>0u5|*h2KCB3)G0 z&daPby4=B_^+Ug%pAm%x^`Jv&w^!C4mWX6EG!O-{t*1)eriuVJ2iTgrg9=vjy%oyo zDLc_eTUaI+(u|S{Ye)QvV*)jKuD{n$Nh*`91;j6(Bnm ze#uqe5cUY?_~^dFH(bj$0duZC0tst>;3L)3!dT00Clc~5*z*HYF6T-1nA4BJ7`b4D zAm;y7J0x=_Wja^=x-FrGQ;Y8kP|Q$z_~G=kFXMzxIQnpVPkV;mGzVYULgY4#>kJh9 z(lKN@?CHYd6hj~%vhxxaG2k)P6NuLrgkw}yvf}$?0C{!j<8#vGp38Q(z<)^Wn6Jyk z35;+D5s|42y3OVC;NLJqObrKTyiX`afUX=go>rH|TF{6uoP6X%o6~C9W>&up3pmX} zO?Ng$KSdT`q2@f74D65TK)-J00hvQq)Ty;BM+1^=O-iUWY~lqfV6Vd(g!5=Np?C;0 zy!hX&c+2AX$8xZduRo1u_b1v3w-L@*;>MKsbolMxYG98HB#9?^p-2UZc>JFD5u8VS z2?jtBNRvI3&)Kv?7nuDIn{j@{Xirz**BLV*|=6h{v2)4pbklkJtHIn1@*OwZmOxBA*>3xQV z478v-)z+23x<)9EGfUlJ6`v_W{EP51W7GN*C_xH#Jdr>1g{MofNfpSo`;rtAHnoxV zJpp3g(EGXwI4=jy)iCjPx{RqNIZm(d8nt{?#%%wy34QVTV|?5wg3mUJ3tJTnJnUuu z$Ybx!OaHDBrMD^I*XK_?oowI1b@3?t``2eb%UtZq+W|4wdc3c5C67zF=h)Nbm6OSY z=Ud%+V7GZfTP3g9W&-VhPdaqV1P94g3R~Y{RD8|>ZBa+Zi=?mMvxS{_Jvb~-!$bDq#Sw}l_OO^=D69hP^{pdGVms~B zcHR$_{JlJrSaJnsHj4f}qJoo?l+3y_^|L$Q*Bj6E3V__|H+WOKse&av6Br43+w;I3 zSIp}Mr!1&sAj(l#H5k_gx0-Lc%aX7~{vdh6^q}bbYRpYTEG)f|VZsS<3lR`UOw>wP z&%Ee*YQ@5a+&XnZH9PaZ(STU+_80jf(u-|6gbQc!)qA}SfR_X|qg<%3j?nlHbH^7e zaThg#2A2E5dSYy?rf}PYe>O#2xAeb zZKaw#JqEBt5~9@5T9clh9|q{gLbo3!)k+=wa{{)CpyKwPU9fCsz}_4i7MWPzJ3Dj^ z9O{EOP%04p73>WOahuhf>vfnf4A>mfkI6ImUNM+ONB$Z~WzCzpO$tVx_<2vex?8mw zhw;0G)$E;`;DpoQAf*6WH+?2VloR#g74els^|SFfoZ3r>qB5f3S$=%6S!c!V0KEPs z_)QIkr6}4}J(L~*9b0|L+F3M{1KWnJjQ`@=&f&6*Dl9?_(c5a<)GEzOQ^$4Z9_z* zj?uh1@92?w&-sto_^i6QllZQ{J7J_#zs9BE*)g^twB-WT{O;-sfX+H-#11b+r$ zJ;ZLfW%OTzy&e4d#mDE{YeU4RDBT&H_Zo|KKni9}1luB{)Py#je7X0-eQ0fUZcTmL z1Rt^t-L^me<#gDVgT#jN^=00BTujqz!4l+_lAE4yvcl>EytN;_vp@--*wBbVJhH1Eyz=k)3>(3 z7fz$uPCB_-p55e=%7T9rKEz!e0|Ysfv^=X;{u-&Xzb_^&!)7i{Z@d+i^hJL4x|HK{ zS7PjE{AO3?8L;Ce5FOynKY1TfQ?EJr8CBr4p0Eah!HJkKP4HhAq{!9ted%hHovMJd zRI75jW^q4CbP6UN{3-j&QWwB315J)l9otBAw3!}FCoZn<+fS-0-9vbl5kn^l^+Gkn z_eR{jhiE+=I-y+N6a4N&a)(TzVobpg14|)ZT`SVtGQwF6IAUGv&RT=C#yy0_EPDN* zGIv@|9Ur$3FFtzGk-g_>#Fdoc!Y1$!OH)`%#`Ni7m$Dryw~-&Ji|gu`(%b+#>4b(8 zrn-}HQ$#--R?XdXc=XMKk#CQxT(`t(G6&<;c%f&1_*WT@3Uyb6+1@sgky&XIsB|7TaDBy3}A$7?1IQV$X}3FV{ya>y2bOY3FMK10q;* zV)ny9vM~@n4Xs%0%@Wf=6o16rF&2esSR;a3jZ*y!Z&>pXqexo=|8n zs!a*fVmj#jJT*Qp7-H<5?CoUn1O(VyuNZSCWq7_=?_3S&XD1mWnp22PdD@B9+QYJ* zXQ62$eR@wFAA%FVAc4c4-<<~k*Z?aVFh30Z@jIM%)4wsk*S7Wjf}-c^$2GCrD+L3S zOqTp$)CEXt4YNpf*fUHIA9g!deR}0$xH*Cf=o0iJlWXVPwU^njo~G)PO`EX^A=Qv+ z$2kFv_Q$ut`~h=&8{u2UG-m})d`1BmJ! zSMg{;HonVFaiY!@!F2cZicv!R@i@VJYGumc{u;NPSHkyjEMjLTcrTE|?k@;?d&~Fp z#`akl4uVkXQU6&xzxSUJM^f&?zrL{*&-j?xj8*#b!(vnS&I&!SLVRo{PFB#wC*-CR z^!?>~jt-hk_UbIJW(8#G-T~tRQrOMy5Ype!pUJv=_b#1k$=&%D_1giei#)vky?kZU z;bRpqTGIggQ0$_J_v9v&?AUk-!fU}h>*U*BfXVWL2&h*!T0|pkki%<;o`1z#Z-Yv% zJV-(;+4^;&>;yFEZUJ<=i5RpPsPn4H00&8`cBL7C=un^GRxYS~fahC7#QP|AV|8=H z`jtb+BFt3yUTl0^$R4HaGVCEQ6FVbPGx?srj-|L zNznT7Q)1TI9a~j_3DY}t%*7lzVnqy6w0TxUXw2KKwKe%U6^cmuWxk95N}5Sx&nh^f zB*!7)g2u62>LSWXO5itby(k6Md{Yja7q8TG<(G{}yFWxOFR{sk6@3?s`T?2ST%zqE zTv5Zeh^xou2N8S7?_w~kj-P7>@6qgYzFS0eNWf-^W;rLSQ;PpL{$$GjvLmoQF!A%z zR2t{HRl6PHVTx|Um^NyXzXo+b0EXP8{kmj;AYBCg_E=5#e+*b*Q-o~AVq5AlHw>^- zDpHen&HJ_^SmNT1*r~geD_L>SG%~(<^!N&vfHULquy7arqJBe$B~sBtq>6 z`e&+c`Py`kY?f9E@%Tf1?X+A%LZO_~9fk2=^_Ce8z)J+Xxo=+kT&nfGW;?{eHOB@V zsIUb6_?gFSN@*vbu%C99_ezW`}=?b>T_scZ0WEpuGI!@LkEuS1FF+ zF4;G7F}66}#k#|6#)RfWBuR9Sq`~E%Cvdm2uGnI>ed5X=&ql@VGR$9;D9l<1QHQg; zb$UVjeSGCULTw5?cogJCF~>tZ;l=7FlZxs}A(J0!h#iB9_SLStSHK>ANV=Sbop;J9 zYfk2d2n^cwJI`6_gP+zQ2C2EzZrtftU>1YmtVVYCz2krpa2uKI{+PYbyTQuXoewWGiD(q8VzTxvWk-Zu}bHs0e*cXtnmThQZ zim-FS`Yuu@Sar5>w?(kMo9W(Y?EzVU*v1@CpEWfh_}UU2VuqwBl-WMk&J8&&3V?># zIe6`8Mx#m$EJggsQdUPyo98d$XhVNLMPcGS-P4!j(N z>PH5?i6ANf)!fX2TCI=u#P@KRwQJZ_`n|Dg@0w^#m>K;Xpd8RB^u`V$nW8(Ra;tW2 zx!C|geL;MU+K!fjDc(eMc_ll#By{yPmi*7sc?VMcesMfx@4cgljO)o{ zDxC3xZzwrlfh@7K=YKVr~+v zcHelUf6vuOVa9`@!9TO=uS*N^Dv^uR=e?DqtTp~+_T^oHYr7K_75krRuPvJjkC

esO-TWrBmY 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 z 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ℑM-NL%Wr4{_J0wpF9gzUa<0y9lGhy z^tm=rKdr3VG`9lcSW%H-#RDsem49{i`9B9{W3H7?+;hX%fmP_X^7@hYei3NyL-T-@ ze>K0keH5C{q4}bY`Q0G)Xbmr#LPp;6rNNcj?kcd-ZRLOV{=aSq=3;@BulU^R?^Muy z0nL~7!QCM4wepXgU-g&Tu^tfpR(|3Ot7AyaqKmD6rTY3S+%U1rx4>oPp;&~8n zTKU^u|9K$61S_wm?zsvUW0{2p?y&Nof9Q0gcTNDc^_wPNzgH)GIfz?yy7q#V{Z{^q zhj#0Fs$8ujXXP)R`MXD}VgOeQ#>DdqM2C@|%u* z`^@E**0#ufF%gr?mK_DfZ=mV6Q%|H!m@DxBM69d}5jwx9MWH z@-6T95AUqtW~{WZ8O?20{^Z2J`3}(BkLCkbUisl~y;?!@IGRstZ#J5eWM28=?+<7L zvrSnu|H_JqODkx;WGbb^Js|d3`NwYXeqL{S6RcQPK5DAK#3Yw?Td|E5m3SzsJADi?y9|M|ig0QUo(6t{I7{_$#2)MRBJSUI47oB=D(S^55Nub&4rA3*aVE5CN; zCqAWpoU8q`@)^^9;T0{;0xNT@{K$82eqM`PO<6KO@t?o(8(O>@tn9J!``Uil*WyvI za@@+(UkdI9JS0~BN8g!TZ~^OWVQ9T~_|;-Dl0>y95kCmSvJ!!vwI#Etp`Bx`R`LKSvS=YIh z&;IcA`?dHGSUF_ne>h{kTS4<7G!N;>tpzKCR{o(+{`C8S=Idy_VdXEZef3-V#8|N6 zSoygxuNDWD4Pa%Hl^;!y{0%Uu8}n;deORZ5GTzF6?%{74Cvvb-v2uH9pLxhlGWGF% z)4HQy0GbEUeAvoAGU-E31zsY`8U7vjbGCWt_E?fmA~(r_pH_m zp4J1-%0KG^5pJ>T2@ zC;HSvk!0n+`myi*5zr;KzS8sC9{`%$(Y(vbzcb;>fj%WY$6ERBZ+w5F77u_ps5bw? zU0TUbu(Hd_FWmM!C$;zlSUG9sZ~m*p&uQ_r?sF^u)bZcWwD=TQdB)1W{tv&k4w#39 zR{pgweD7x}XdXrLxDG*G#94XPbAELN&0}cl8I1-g*}FBwzW-byon*`_R1K%9p?IOXGm%{b)XD zd)Vz#WPaa%1?dz_r_OrAA^%4af){7AXs_W%D4Q(ADA89 zrHISQKeRaeHn0#&tbFOF$qOoIK85BpIxu&F*lFcsr~GxN&c%2TfnJ{q3aH;1df)G9 zJyXHT3@g8B=662@Ov6ko|EYna-_uX-()DWPpE=vr3G^w}{Ou2p){`G6rIwW^bDsRy zdSeGznQY}BKfc#oXiw^LvhsiR#J|<8hy8lESb6Qbo#qG;th8DABR}~1AL-3Ef|Yqz z{&QclpVDFvSn0R&`QzX7`3jaR4%md|Rx95*?ZuB*a0^yjXl_MwyOn?Wo0TzIUk9kO zJg;|8s>M~h2CTgOV@oWp?=eNjR=(;}AClmem%++eEC1%(7yK^JtqbM9ejFjtd=Sk? zto;3(zdchcdC~Oo&5b-TY2q zGNxGhuY6+6&j8ag%gXC_zGGk%nopv6TE~8~=+-~(2l1elzxTcG`=U-xpukP9FE)Lg z`5QB@dqz9*wCQ%t|M*YeZ#FeSKwA0Lv$0HzCv~G*`A2^6k&ghGqP|;?zGECPOQGYR zy|C$5f#zN`_gndy3$J`g>stuwN_pW=zN}cWa-~k5l}9_?_$4h)1S?lr`GnO|uGZor z-I`YZ#S{O<)8aC)vck&0em=h%Xx@e9ZYy6lYuaCFz0(!4TKVU{{&{oC=jz#Mrjq7o~A?AXMmz!b6bwSRx*D?sxs zn&+(iU9+DWt53b8P{+zY`nyjo(&9Nq^j7}p_Xf0y$|eObR(}2qTYo`|TSS7DfAH^q z<$5jd2P+R)`MEo8dJJfXXXPLH@=U|e96ffeeColw|5l67YeQCk<$wG=vzi&&JuCmc z+qeBG(9A`)l^_1u-+xK(eHg@HD-Xi!->>&}>2Yi2pM2MUU8=l}qSR-Udrs9mb8Q08Ohd;jjM ze^^2DaWqd@=KBa#yme^)6ourK%yd}izx#&^-=W1Rrms3baO4Y$Wh+M%yIJ|{)t~(u z5aCKIU-*O5Uj}C4Ml0Wa`_FFxnn%z)YUQ6k{Pr#S#5B{lo$vh8w+?9WX48$GzjxLP zHQ-8xXJ4PPYzVjpQ?2}cZ~w9$1DFO%qfc!4uz4ijq7!fBfBf+;E!N^QI=WW=)n6WG zqWg!z%3&-2m0jO?Ojk~%z)$U3qJ+ZA2M+JA>QgfmiCg*k=eG4~@j>$~fcy`C>9dB& z$CcuW=Rk+R%AbAi`^&ZR$vOm9KJ>#qCN%0+%53FlfBG}OT){G|uy6;OTde$VcOLyq zp!o`#uUYw@PKWHkeY)AL+`pkmXBCfWGgiL-{L}M+`HIfwbsk>~GJ-ri&F9fjsIXg;swva|Ri1S`)gII{A-m7g|6g?qKjR(|il{`b051Pl}VhLsC*L{D-^%X3|%@#H){rcKptowbSxf{)Ut^B6{ z_Kvw)@k-@?R(|VOqJ|bdpn1^BZ}?W5$^CEC-EZZKs())T=6MPot^AyGUrj&tl;BwTpKP3GgjW9Ze_a2Z7LS{+gXAwwaG*C&RuE_9@3;T(Yg#<4OWDf*diNDSUBMzO zwNO_y_>I1Q_*?}mu*yPn3z~OY`Coo_^EZHg#p`dL-KW;?G2c5P8s<_k*^?;>nV8t* zs>W4QqA)cmlOLLB(1>Fy3g($-{4n(kQ|2-;pQ)#rFyB0o%~QqTVx9-4cwn+L6YrP@ zwJEz9z|7Or)R#T zi4#ou%mllpq+u>D6YiRv-y~xuP%`PDsUDi!*Tm%}fidcvJk1nkOtN5d1M{3Qr4e(% zo8a99Ma7w(oL>JKliHf#)g;X(*D_q0?B5jgOs;3Db0*_8RTT5=Gv*pS%tPK(08Dmj zGHp{JGqqHcs+lT@dH9-C)Hq{uCsTSf3QV=llo(7E z%jDE1A~lMbGN8G2Ojc-a>dV)xr<@6&%(Kbdl&1J+3P$FJHZg?>smznzWc8*pVWK%x zlo+vB%12E4XzFOi(e3--YacbwPa~fRkxdL`ieM&VGPTX(qMkdw@xYJy4CP<1t#B-+5X;K6eLz`lRnq1zb3MPgzk)8=TP376-;HK_wicu!UHQ|)W`$njupvBYyOm<)j&!(Vc`an$K z*+l53Xk~(PQ)x7HT9dk)BAV%+Fl7&u%9`q-Gzs;2N_D)=T*Hc6c6tuZAS zQ+P2&qY?YE`LlmjHE#)+1p*@v_zva+A`Hg)2U)=N=2<#d5J0Un?4*Pg1MAvj%nFPROpQeAt z6gEtUlj&VCWh4{x7JVKIvBWB32h$~BioParGan& zep@B^R_xviGKT}4qIlB^_F8FptADChPiplWv|_kcU8z-GZ&f~9b&28nYpcVqh?!gE zuvX=;m2eFgNn3p)t!iDXJl9J0T0Io4$g@>PYgH&({R6G;g;uq>RZ(iyvRg&aRwmIZ z&A0m6TE*B_2U@Ev-RkTplGIju)C%=mIeDvO-zq4#%HyqmtyU*!tI9gu#W9>b4_A}R zY@w`zmK}*@hvvw7WLa4#t71hNxQvoV)?~_LvgjQs``F6Pg|ZK;tg4rFsWP7^I|a*N zx~vtK;eJ^tElVC{xvtEI%VJBJ&6c5j*=<;MH?bJuJIXpy+2v6d zrpk=EtbCTm>JdG67kihAKHxHYFLST5P*+xS$}YLGhFkWymc658r+3*2Q1<$j73s1F zT^2RUzPK{WDyzmLD{^H=Ska|c_OX;M>%N0(hwWp8tm_ex9o>6 zt0b+eMA>Ijem|h>PAx0NWzC{28kF5$Ws$S2mY2nyGRZExGRulu+1*?gYs-pWS%fc> z@)3QSt)9X%=`X7mWd*S8xh~5cWmkXML0k4(mF4WRW3jAumUZH?FRJV!D|;Kt+D%zq zD8J@V7NN?X>#_n;mgmX>Zdn;FYq(`mzU)ye>#k)ztL#!QJ7mgAU-=z{vVWkg;g#Ry zD9f2;EvD@LEsL;aeZMS2mOaL0d7|uuEjzr+4zIEXUDkKXuKBXps4PsERkO0bSQb0W z?>&^gK;^eT%5KrJ;#wB?%HD{w-?RLxOj%Ydd#lPicKJ1lvJ15Q=1%#QiL$<2cDt4( z=CaSc{MJF)8C7--m*2c8JN3%WnzE0*>>w)p9Lp}R@|!wk=W_X7i;@GVx z%KnhD)L8aSm1XL(|G2EomS1=(3xj1zuq-H-W$m)xru>dTS)VGu=v0=d%C5}vdog7f zRM|yRejlpr=q$T9%P!jTdk$syT=~_cvLCptmzG~aD8E%y_A!^eOh5VaPyAE<{_l1F zg5&>O{8>5v&%3Vw$?yOEIR3PLrM<6rO|5^Z)^T0ObsZyz1e!K=>eP|H`uJojcVO%=<8nt?VXQS44 zd$Fm@w_gl}Ghz&!5re)ohH8D?MVq=hZtJPl&1fNJe2qp=Z@tTmw{rXCs~qa+AE>W0 zLtwO4{F4!gE*XKSwy|Sv=dX3v8=V(dI{dFS1MAl5a=&bpqT0sR7$NIwL;p*LEPAU$ z|KA_-=l>hS`@B_~e=^w5PX_z>Ck*!UR+rE}Vt}2u`q;&>blwu~!GU`D7{9b(`df@G zw0`ivKf2I}frx%Q0}cI4$9VsvKO^G*f3fj@uAA{A<9|+n*H6a({IUG`-(&orPnz+6 z28MsD%={9qNqFFxVQVIu|4zDOjFrh|h@e>(+LQ$0#@27Ajrf)GB_n^MZ{?)}Pz<&P zCNT%FHCT{#=i+EV&AmT5Tu}3&;gNt&4v!b~bZfkz=SGYd^y2WlULP@D(1mimAk!z) z8b$>{>o-v`VdOXnYU`zA2AM99)~G&PjJctx2QbdZBA|g_XND;9`L_~^| zA|fIpMMOkODI#unexJ49&N&lmy}x_!^W1x%@<*FV&YZLN+H0@9_C9NUmlYb+U_gWB zYdp`AIB3v{cxccjefzx{8gx)XgO1!68gxuSgRYsOK{pL(5Hlz`9up|RmZA|leiK3` zHx8jwY=#DnHK0LL3~0~{1r3@N4-IP4(4eLIVJqXHL2KioLE9xX=+J$kL5CGI=&~6a zbj^SU-PPT-+pN$ad!mNrn0joF>#^P3W4qB~yU}C2>ajh($9COg`%*Ii$N~+D@3DQm zf(9MZ-#Kz0XwV6L?`sMgbjt({x*JFGaai=xk*2lXk*A?M#qFU%miBW4gY@ak2@6Ez&fv7`NbW{y2F-`a6XWq3Qz8pNQB1l;nrz#P}~ zt?pUn>a^XD@8Rrf5Q9oA#GpzmF=(Qd7*rES42mgYkOn(BSDHyZYpq}35=Yu`?lo9H z$2IHcjQI{1H0$R&fdtdW8<_L90m@0dUoTx<6$8dqV#2<-Dx_w)#;aDlCRsr{Qwg}l zMje=|QI3OazQzeHBH&S5cVMn%I;q{Yo|9xkQM_sk0Vm(g19R;nkQ~3I2j)6Jz@s+y zz+4y1&Ach#MlPmW>9(1vJ3iGKcbfUvek(_(AWr1&O07cfDVnS^Ly>hFG~CD?mV^j* zs~K+OUMOdod!-p}+!aZ?Ly#}g0RNmH5S zo&w8-CGi)IF(rC?rkUYJo>^u(&wTTTWl8}(YX#iMv(eI3&t`L1J$rOlJ%@EyJtr(( z^_;WQ5o1`r zXUwDJy%aZEoc)8#iO-|CI!R`(PFE|QCp%8jeI*9TXT0^&DGI*RU?us46`g01x?riM z^Q_Qxo;7iFo(+o5v&%x~*&9dB@g1>(KYZsEqs4bqDS_{2V zxM0wE67-staK|*R3CuEBiHULJnwY7GJ;j>XQ`Vl?Q>BPK)6B%48cpnJ(!`!tGqGop zmDsZ~p4hX=LhRWaN9;MGns%-|u_y7Onb?y^%{ zScp9yGqER46MJ$Lv8O;2dy37(o^nO(85f7!nP?&Q)G1<5%u4K;ZzlGvh`YslMeNyW z5PSB-5ql2C6MIgnFI}|~dy;Ngh&?t%>`BqYo-|GD@oQp_VsCaV)I6OMP3);qe;i}* za;(;^;}nC~)1ZhwQ46uBRoz5;Z5>y(BlfH{VSN;_XOEfKbI@pk6;s&pjD^_K@v6Gh zy*OeIxeu`?)gbm1Dq>HWLF}n)N9-A=@HsVRVo!r2_RP`5o&{!N&k{?ElUK(XndB|X zP$ciyw3_7C<7qX?$JN6x>&IL(KgNnO>O|rm(<#N|k#x#c=$TF>+AZ#+fpwkCz`9Nv zSl4Mfu3_?66IiEu#pY?%!_#S@wH3>h@$R(Vzz}uXjGkW;Z`Do{h^W&(Gl=Mj^-ibb zxJI3>Sja?Fl8I9E7BeNqLMBQ{H<5`_@|Da}%I-rZN~vl`CQ6wRM%m-Cq1et#J ztB-kmf{dw^iN>6TBUl8QV4et&i{0T}?Sp*S)tc-uWv1_moY!Ac}}L8a%)97jcy zknD;deKBo}|uRi(lubU7_#Y^7rW6E7uDTRs) zBD1q4p+EtiWd6UxIY>r}fEjTdfXbVc+1DzSS;C$aMnGae#?9?jY)b7FGytAQuJAsR zkfX395|AK(8m2636S*EZ;nQbhC-(koo(H4I+VAGYRCdYsB<%IpFgm-~^;!rfju##9Lm5nZ8SZNKnYe1$m zXc(5v_g0t!3F}boBFW)WS?MxeR;2Lqyb?+EQdAZR-BIWYNih+e5}w6=X!(>aIvrmz zg(Mr{dc}LMfdLg$P&b+8uLwz!JD@ONB9NXAANT$@O>h&%-H?gj3Kt~_YZB1F(@^Nf zpT2ZTXX6jr_Sa>agK)O=^+M1Q>^jw7X8wzWeh!Nhz%|Z*5qKsO081n{^W5L3vObpt zGRK7H?tx4k(KHyH_8=(~3ZWtyR*L_nqU{w3NfLb&p+V8+B$I37W83_o!&Q0Or(5JY zXXu-zC{&rmvOTkY${rIDPT}!nmbRjKNfwMq zf#x_Xg~gIN`4^qLkD5R$isYx*I~<9?i7Z*qclmK#uDnWS(Wnp+s88p8iTO?G+!7Ea zQFw}EqH?|^^ruhJ3x5NiG$uJKJhMu&Xe8cA@!S;qPvV^fl8D1$T=_@pL8cCAdY?{A zkeDZh{*rh?0sY{>ERoyJ^W-J|Mo@PSR_=*u64bFFiyk%6+Y~xOQVSF*PNLovb4kKG zZa>}hHOXB1=CP6AlK4A;?Be8#i?><>ChmZueo4TPq7zAio?_xjh@jvsa{7xP@=QWQ zLn}J@LFQ!9fsc2Ytr-U@uU@h`6jD#3B@TUY!7UT0K;g(FQcjUPB)d!jLnO2A)|>m1 zP56c1wrx1Xc?*Iy#E}!5veyzY2$Bj`BI%BbdLbbgid`bXTmr1bF)h_=F9l54DFxJ$ ztS1E_kbI%yhGTz`G$+BiFRuimCKQa~ z4M`-=qu1?MK<4XdUYy7b(o7Ud+kxR<_JPc!qwfuJJgkY1i{AaY4|Hmg1}jR=qNEWi z>W0E%NVtw*vv8`TATV+SsDO=f%8FoTa@OO9zrFEokQsoQ4kvkq3Y;Q=WD1uksgery zAz={;fhM_gshwZEDETk~6k%eeDDaWaZWDP}ns_3aJ_>guky4W8A(%!2C#Ug|3XURC znSzL@ahQVm#5oiSVkH?C3V9=`PKp*Lk!y+oDVbyn4WF%i}r2o?;U=Uvw_(w8(6#G>2!xT$ZQtcG?MFJ-k(^WF71c-!Z2}?$vKo)A; z-?vLzI+{Q`f0}w6_oOoWg>Ja{DSWg-t_jkQ89t^kQ4&|C5POo)TlV)I=QPq!VW}j( zRDx9nK1(5IBsEI0_#`Ay61)WBWqMiJKok3F$+ZoC1%r7iDRv6bBiL6QKqiP_oNjw? z?H|4hGBub!Rk)@L7_eW({*~Zb1&z~rsgg^kP%;w8rD%bYrKi9>k}RnRoDwvnsFV^l zrT98Jhf%^$6X5Ex)lK`$JSGfM!MCV)l+nISb< ztG@S14Q?tKSUKN-b9H)R8z+oP=A@$PO7y29nn^UVLM}qIh`&D|4zhQ#-|+(+Z?C_jwhei}cE5jYq0A^58D5f|t`i3@~d$(=Or zhV%0UzQ%9|hi^;x!4|i8e6Pt}UT$gl^267P|1qkJG2A#QxO-$m#yn%ov+>hKeh|tx z+0^nlgHN=e$>m4YyZdCL&gZ6Eq%R^yRjy~&-IG;UgMtk z|DiA+qxEQqxd-zR(dYj@qK`3*7oEG0@)rm9rR^Bkp%2K9llb0_FIFbQgDxRIo8-r} zqHnnH@%=V`zrxSZ`FbocLFkO|;~2g<{r|}d!bS2Uz|Tj3pN{}P9|3;IM}VJ?06!lA zem(;Hd<6LU2=Ma};OBoH@bl5X|D*oN{NJL2!h(iipe`8w-+%%75dP1g!ol(UpQ0f{ z2YrV zpBHJ-ypNVEH3t2`*4kiGOmGxtH#LR=;o6{qkBR?&q=xf(0=#L8J)kZM#O_N9 zkbiF0*J0yY!i~Y^W`8vJL`x_t=rJ-PwWcxXZw$=k%#oSVprB8L!kiKi3ePm5XH<@# zMIh=Sp=Qek93>$+AvJ;KP_qV-m?0lgGtnm^SUHb}!gc;&h|?xyvWl52(i{w0o?9Og z?ck{m^`TmSV<0@UB``DSpBb4GjE1obMskjTmhj93O*4q=$$zzOe)R8u|G)P3|9?FO z;zR6z$>2dH@%Ddc;gFB)|9{56{}%j*gg>?|hH0i;cmfVw?jTjAIA)5R18c&30Rbmp z{-BD0M=gOcfq;|SN|+&2B20OgF%w$?Md_C7B0u4TB7R^Ah5V$Ff31;bD6Uo|6DIml-l@ro-iGTxFQho&J63Zz+>*EfuzvWjCnMTPKdZbP2w z`GNs~4dCZoBC8a}5papsR~%bGK%750P*URHNnjen`ld0mY&DVahiRa0BxE&W{hANpFBlr$uEr~R^ZB8&P{9@lLHHGg>4NQd572H+w zG*#Rd#(jNmyu&AsLb37#foU#qX! zh~kvK3o!duQ~>G00JHBS;MIN%F#9nA2_|m_nEir=NZcWiVDfB$*_kmCj;=@cU_ zZvP3$Xl+kcQ7;+xx_JM%sEqH9rDW&ID%#GO#g}a2EfJ5nU;6Z|(=t+XSmyFuGRvU+ z-n`GqklBBnSp8|4ZgTwHE*F5m(4ocGo_!Md8y)(E8Q;v8QN4e@@YUTm@xn$%GIu%q zz__ra{FZ&X!xV4 znUiG558X5VPqN5kCnD4|2S5t!vsJ3=J^M7IP9htbEUP9j^I&pLGQ? z{Q8f_woQ~tLn{Z?rK^;d<(G!Y0Ojdda{jFISpM*??RlADmi}P$lFWrUynW_e9US)` zzJ6bo5s;_0HGE7*Do#y&Vu%dqcWim|B=8rE^dBYLzo;Y1XZHWa7i134XZLo0*(P3; z^3b{K9g18skh^K(u|qPcpbM_47x_81Ue^iG5 zKY8et^Exx*<~yIy*Fo;KZ~yQ?S!@5j?|$nWB6Jz1^4ZM=z`M?6$W?)l8=ueot9olJ!+%|AC!d0Hn zSw4hZ{Y)>;QD^u-aC!2n#nqA<46c>jUho0pwuq}1pZI(Vb8Y2zgpUHBkX%UIpm4jy zWz3a;>ms**-0<;v$LB4#9(?S$>ENb^n+2}1+`jU8$>$>3TotU$OW5S`~QDl9Di*T<`|V05-PPc$83)<>fJz*k}FGD1s~+E3)Y9i@;j;- z0#H0V7!a)3|B3qtn#BXeL2q-gR(yGoKh_Y9w9IVq57QV~#e9>kh(zO?5q~HiiTZ=# z7zZ-9#2O;e(0l_%9)B%I)rXq>Gx>fjJkxS=+Zdb~XjJ!#duU78jHs^V-&Icy*Kzp1 z;JEW&hHy0SQ5?w;Y4l6pFaF#pS{I4(Uy9RS!IRQg%hUHjOg%!KDNAaQ!Q3@QO@A4i z-0TlY7V+F*RKcMmQG*X1iwMlJ#LGv;fcQDnI~;N;1+CYmNoN9L?O^5QvI1_)sY1uL*{O^&w8K zw%pO&qIr=PynJ4y#iAsEunCon7gz>1*cy!13fQyx7@li{Qk;-!4u}c`yhuQtPBcY> z^}%Q~SSS9+J-BA zA8ZZGZfdk5>Qz;Xrlw%HF4XF;2{uON3Os)x7Mdfz+#ElG{Ei>mMb$h(-4;U`2maTM zs}ofP8bY<=4PUS>6pKW0o<)OmLh7AVIHKN11sel3k*NG&l&i34I2!+8Gfwe9vp?XU z+Yo6)ebtQb`;FTN+B7vRA0QgkJ5{+t{GRtd8Wec(U{fF}(D>MIoRYz4uyLNhF%*8B zv*$x$KFItPtHS+mc;;@28E@84|c)vDb*uQ?W!-c_i%xh06E zxRx&_>Q8(uMcocuqLmlXPMDSfHAxZwUKeVvZE5CVy#(DnPf#~DGI;$&C7ixM=3pAob84U*gp=dNXCn5qa+BZ2CG1WtAilSY;k4=u$ z%lZzD^H8~(8Uyo;Uo-`y!Ykpw5NoY@XAra+Jy9wn{s|wr=nXam-V}%#JBI%Yq%C7^ z0?q#Bn3^P_hK6*+<2n?Jpl2EMHw5Mcg+C)IlGLLo6Y)0(8ym%cLbID9(U_>6q9>zp z^Q6Xo%05 z`e-OTQ*X&a(YU44A83q(gK{ycjm)kIg|+{A-|Ka367NbZB7GTabL6EcVZBa->iHOk z!m4nMmU1jKQ#z(I1NdiAMMxMC!{`V6wb4j(vyg^}6>34xL44*>QH_DQ%`KrA?gxW2 zg@ao*Rza%*Ij9^5Uo%>I`( z>*R|1K{mu%!;UvI82neo?8G%K%`yK>Y!J-&C3;@C$cvqNDVVX;dQ)X@Mps=0b=68Bs!J;M51V z)2psNRJxCVI8>dVnn}~Zr<`o4ir)NRDxnas!qgZHG^3lY&uNUw(A3EHNwPink(xQ^ z(j>wAKFwtCEGp2htYN*W)LUaDJkwMgv7JW}H5#Wp65|{~x}fd*{b4l(m0;sb2MULl zZ?E*sHxG~~sueZY-U>9DHa582agvQ%S7dJZzS<(Y{cq0LNO)#5 zIxi9KfaA`!t}Ym^YniRwCdnnig#l${~6ie-3-! z4jbl$yG*m?wvGS2y}`$?%T}73hKdzJugT(E{oBXd{Ocwo5UIc4^X1M9r`r8JTGJVc zmL$K=ho7TcmKN>ciSV+Z$u%q z(M-Mr2&uyz&QNX+iV0(yrSjHdu@t9IG1JlF%xF;Ps#0q1!UtP}wJplyGkP5j&J0Aw zS$MoN+w3nf7S!grgR)3a?4ZSd$W&4@7V)b?e*R@ypVM?B$*%W{PohjCukRW#C5;bIOLHtTI}n|xstwl#n`@(?8td^_yF)Lf`sy-iR_|w3hnkD) z;^tmN*v-bt^yk{;^Q3QS4PM zyM_3wrf9xCtf(p93iEdsjlo8A>zkV*;pUL4NLm*Zdj>tNnwp}Krf3NL!l0@Qihty) zV;DH|ITZI9o10r^3o{c9HFL|^9H|ZIy^^q+@`VofRm^X6?z6oqHOtFVPSjkNm6yrp zUk*p)fs(91YC4Gj;JTvse>wKyiYeC7W`A92Wmwb)%$11 zaBF3;%(%7I6=UVzj}KG3vak0mC9CSkno7!kU;$aF#kCCq6hJVl%c}AvPrQg~XR}dE zaivyK!fIqpHq7L)f50KEY6x~u6``FOiPX&vHOiL|&9O*RQ(&f8G+TIi(LkuNB`WNC zps~IstQUK}idf$6)<$OIe6jRdJSo_$3&OTL7}3X!|8}X^X8$mMpcZW{pX|!InO*_} z8ZE_e(I|e$`3psX~^Tf`H@cypWhVUuoMC|nnu z9hNpk$jelUx292^6Ev&B=dxP8EN_9DE&Ugha;T!f=+0|-a6y@Gs69rUb?8xxGY8>0 z$|GP|PguMxj&N~Ft0fwUnq)aJHum=Bu@tvyoTpBc_#_l_koUeGw}kbt|F{2{^S}N}>i-TJGIYp&>i-Tc{3!nGKjYtji~O$(y#BBAYxl4Jt5dWx zc~(&Y&nYV6)%kb;9F&L}z{M~|U7vig$wq21WbP0h3Qz)It|1zaaWf(=?4`8Ri)d?Q@%th4NQqI<2zkt?m$cxw1Nfk4d(P8d54Yd3bDdgnZ^W%c-ciBo+m&! zJW~tK@Y-gz>XGMV7jF=7%dkC>*9F4_Fh?s{04R5nt( z&Jpmaa6w?Ui~2^lED2=y2srs(0hrxqYLmUI(M@}{?xtN=B(sM3Q@!401UxDn5tx0A?wozAEZ7;1;CFVZB3AZ8Ld|5D zA~5?=DL?xKm11^TUwq9-=Ca=+;1WTMBFoFTyCcyk(wm`M;K(s`#8Ie}*-@dB!p0Er zs8dp4jtNpQju~3L9Q6cz##{sDXtF$bDFG)B4FTp@O8`QaGQnF3IC*#^Fvm_)*+R#D z*;B_+OZ`H}37LlIxJbasU(Nt?T+#QtMZl{ADMjsIej8^J0iO|63CyX|{G55Z8l1Dx zBo1epx%QrOtf~wAh^6+PbGmv!leJQwbB_AMa#Z0EFy|_~LIqKZQo^DI+X*;%h$b-S zE&^^Ds0qw@fPigCp{OM+?siHSZ*!hi-@l|w6<;NgU<&30=DbP3B|fmhs(%YC5@>5pao+RABB^1Ugtw zs)4yTTI(^o_p8#G?i0G8@fmaJO!oy<%J_!0E2(?y%~JQO0@B`v+z5zJTVUQLCXsm8YN>m-5b)}kUckIN+mC|xbtQQ31p*1C za9m*CE9!a7SWkQoZcyt&0bsslbW`Rv@oKzi*5^i|j|20W)^uNy9txi}>%OtZwG&lQ z;;DMo7Bk;B!)yS3b7b1LZ>dR~z7?ue@OqO7e4Dh8eLHpaOW!^MUL61o%=fyna{12a zrd={mOy4zC!1x{?EEygwD+%MAPDqvYebcQDMM9>jynjNGUh)zurALu4&QirbVWO(? zTO+%a&_KYWLW_YVsKHNIq^tZc)nZIoDGge}I-V2G1CN0vY*bI%X(`N{utz=Zh`!lz ze4GqR29|J|fRhI&153EVmsoXn1T5he0Vh8}0+#4820JlT4|bwomjlkztxPO34{4&x zmf~yX<;TVl-)~QX4KtGTq!g46IJP1USn7n6i?i$Cwt;v z)%(OlMk9}^8IgEO7dJkK9c~EW>XWFKyTls=ygG0iSmGUSR%G}zunuS(OhMGZI%E<^ zG>1|H>rkSK{Z2F{S%)d@t#pSPes>v*3arCIshb^E3l;3JjyE!b1K(kT)Q1k+2zXSW zu`E6;`q|--DouPWZsv73srubPdo~?zSUj-~cT~w>k6zP~lFU;lDJ@QEl5!2DNvbfE zCTX0qc1cqRxaE`pmNeaTeOQkh@)-oTPp>#3O^1k>9D%s1OZ14$15bAmeV@vg08oobXiWkq#H^YNw>Mzpu)w0B~ew8H$@i! zPScX^=vNxmF)vOi9gB=kb{xyMRQyC1SjWlc65QNYcdRp{)^VYpY8{vB>c?x0XKqj} z+8Q^y9d}sQosO^TCZDnBO2-SP?KtarQxyOvx-zdzKQ1{*bul?jwI)+t-brjudyIu%K!>Qt`(T4h}=I*l{7 zpPiIT-)WZmUXz^6o#w=OtDP38YgZfIYNvH3Z?)5wxXo~<-LiL`j-u7&-3Hd_gfyC+ z&YOxpceEM&%xxyNY=aR-)i7Iz!m z&ZgX!0!v}4Q=J_a#ps+U@7p<370~aTO`v03;sCJD`PQk|dAxG@I?qr>uycdi2^cfeBjt9#&DXQV#>OFgOk zb_EAVr9uEp)#kp7P0!^nJ~d)pQgQKb)nnNuqx}GNDb!NvGG1DsE>pz*#z>t2)@2&s zp+z4@xpZlj;^?x}x~1>3g3l9`QUR>XCTVuM>@}m1x*U*#?Q&fA;FNXNb~$Iv+AcSw zAJOHW(!s7ocobbd?be{KiDH+aUO55lnq#a=T`Tme)ODO?jJi%%a_(BMW^mVVoH^^N z4lTN_Fw9xk)h2V+b)!^~t~*RB(sj2S-mct@Yryrt>k-+9lkNL(nt;6lyWI5#F8x8Y z0$uNLQk6&m0oF}9_}x-0{pgma`q3?qK%zM@1X#Bs0*U5WZeZQew-q6Iz`E6|0qGXg zD%EX);AeHi4J1}>`=G0)`9D`!R%vo+l6zkMf%9y4oO?l?WBIp8RHzen?^Eq zyB2qj-0hZpT$w6+dko0b3YvdVqjSyq*S@hBjTM zS^!Hs$sNHU{^25l1XJ1tu(WGdp?0^KyV||0Y;*S<>2UK{bzt4|(WHnJ7+~Ei;~bIh z6AeeCd%YBB_b6ZfL?#Td?ya~J5#gx7x-Yl>alJTu6Kh)c9Rz$v$_%jX2h{j=KP8Nq zjN$~={hS)`?l-kwb-$~wPq*o#vvglvtJ71BR;TAldy-yaS|rlT<)lm>XWEdZPt>b# z`g8&?7+89Pp}^^lQUK|#1Y9B%99X)AJC?q}ti9Gih&+jb`obu|sQbj|1`A+vAAA7i2vyNaNk(Iu2P(7@Z!sZ2qc)&qkuiIfqRBBNeb8ld(_R3 z^2P;2c&`)fma+%V5ddu6Z30f7LIvyr#TLv|2hW*4-YlI|1uRpYQfB5F_s=Y7cmK>X zasSN8`u$C&K7G!t(L<4`20b%ooRnnF*MiAh+Wyw7uGFId+t_3 z?Rh{8wWm6v=y^ik?Q}aS_B`9p<>-0K`o{h&p{6RW446OP^zzGJEuZV3 zWPV;GIuDrt5tG3EQT}ivj1-uE5$_XvRQ~l!-u^A-FYU0vME(2C?@Ii~r5^dut0DJa zGR|rJ*R(zJ-!aefUPNsHdL?V2_A-uOdSw|-YA@V{>2x+=y-KAG?KNIbie8hH(0V;W zz)>eIo1wM2*Q_{2>lKsUeXr&6O+_8BUZ~*3zR+#e3hvtLh}Gff zbwXLkUYFul{9f1itJWrN)Ut?dcUF>WcUG$IdRB%U&8(cbwLdH0So^c8%tt3#6Qmwz zO;=->RmYFf>Ow8Efn_ynbC5M(-F}Igc$&4m{ozm6dext-z3To4O`b-U()X-WCQl>l ztoAgru2@d7vu^64?rl@z?48KBAVK_PsuD-lF0$Tw^U}M?IIiv8O2B8N{sHT~M2<-B^|}e0^oaD{Ci~fYcif2d-e-(R zZ#n6EpVM^T-WSwuuj+Zw`-XWQ^wv&awub=J0LxBRJ<3kiJ<857-d<4(6wXAyAATpwWB=d>KHf3+k?B6>B+5SKXxeU$@wP4}+j@|ZQ((A5 zIaTI|=1kCi&zVlZRu=)5)1VFwa>8Q!B8DJmj#QYOrAn?jD+oB60_gYUtWho6s9Urp zPU<;345{bnx0E?JEAankq;HU;_dYonjXqs9UasNSZ;7eY*I{}o*O%{ggRL=OeY+}n zH|y({i$UK!-P*o|vbBB7)cIcD%65TNeaGsRuWya&bKl0eUiFO`z3RJM%d_uVrAvJ` z#pzPtZCc6u9yGro>3dZ6>MTFG5Xq##`kvSJqVEmW@ViP#eObI><+{vcoSVt@RVJJQ z%PlZD6S-A-3Cx{n5@qgGEx+6bt2X6E4QTcZy%`%#mT$a82Tk(VMDrM!&xQ382ca<=7FSXSV?YPs#0 z2`q1l_6hQ8)YJ0f^*_&~|9Q*RBiEXmnzum+E^oW}tR!!zHI^aopxoQ!ozl-b8~?0} zrf1!eJ?O6wv-^7pcvPw{u>Q$fx%+2vr42>#Ds+-~@-MLdrDg^0UroTH5`lsB=OKDL z9T-@DebU!ICIhyFXV71rX7^vIuUKQ!kp3IATJ+zp_KW@ZDDSra0sj8Vltc`y|6$83 zmi`y@7PtQ`-B&7SSiVEeuzVjnbUcL-SiXL5nQu7^$j?=FDZf;?sri+7*Sb1j`D1mU zRX#dSk-1@D`BUR9On!}7Z29v|gPp%TZp`x68Do~eQ(K7q{kk28-SPoptyTljO*AqtfDKq2FRB6S%%U2w3%z_EK>%#PA=G$$>y@{Wza@heZ*cK$wF{XZSR@}haD2Oke&8fIg$Eja9eAI<4pc8^2kQ4z12?MW zYv5L`76W(2&4GcYUBJK-a&QNp6J~MXMI*{%;AM-}4ZNw_Q)pA2D@<(Hxx!Q>p2C85 zy(=t{y(^rkw5M>2*7L&Y)?>QD1{sMaj@Jqo=ry2F+qc4Xabr-p$#hm(sJ4QIhxMMO z@R)gI3(@Z%0<7?|I1!g|mcR1bmDjWDUgVW_HKFV}(o*{|BrF=+a+CH$s>TqlDBc}Cl@O1r%Mx&vFW3vB)7paa7 zUdq!UM1nuC!It_lgE!$)q>}xC4c?_jZ}4Gd?FJv$N9lu46YwYq0I(C2SrkJ`EOHxCVR}_EWTLdBL#A755)G+S zb9BfYevG3a2Ec|aR8wQf8eIPr&;Zzw4XW2ecFBo6WS@9FFA)d8hG;*1$Y}yD5m*Im z$a&T5Yx?iTTe~58=_;`iNHD<=fR*^v7fP~Zv<6qR617h$Dbp8Jn*5lOvD&9BnL+@D z0xOXx780HStV9)#Dw&U7u}l#KRb|dc0pa1o?x@B34*4wgl zrMG3-I72w>0$5qT8j`Xy0!|LT09ICo6HVhUfR#6Ijx7=#Cg2j-4Pe77&Eez2)jNveJYtl;Paa-p)%)RL0zL!E z0c`kUOZwFCb#lChZ?}4W!*`j?-tfZ~vp4*dG<(A@$C}OzMr5NGAOIu4MwIZVFohWbHe!tI^N49ObWS5jfQ_gzKYzqRsgNU9 z>Id_cTcJpRjo3iIErBG!M(mPUL-K)EIHWJT*pKRc*s{ zn_JfrOn#}trKWpDqVg6hQswm(8C+6&##CfUAy<^>YjwDAMYT2;72~ZEu9%_%5-VmY z$E_l24k4|WukO6uEUJoCY6vSf5pXo}_uLiRRNHqG@F-*ou!?;~1CF5sEb%G8Do)D{ zU<;RS#TB&S0;K}1LPa8s^bkleVO4;QOj3W+?_EabtLZSZSiL?OS#G>#8(A%CXiD@7 zu#pqZ9U57$?l=dPm%~_qjl>-(+8tmcm&+r-k!$qi9JxMz4vgHQf&)h$(7}Nt52Mlu zYzwfFD&T131vNq=FQa8OKrX;WswKVBp`TXiGdH+0RU}PUX5+3waXNri=2|?kN)>-q zIU#OORXN#ebt`9y*bAJrl?(5)09EP;+RANuKr45t`|poChp0ScoI_NeF~1+Kyre8a zwu{4e+QeQ|!~IJTdh~m7+!l@i*m4H%H-^8^9T0 zqtrY4Q8heztVskCjcTySY*edA*AgHaV58JY^Qeu6K8@O972l{`1QJX<8DOIh>js}! zH@J-Ufg@{xjgoEztE#M8P&HPoP1Usc zhE?fs%BqD*{#E=%8`{&VmHGs@YOVBOt2SxxplYi+)vMZN3Zkvrr#f48M1ARm@ukz) z9DeFlb%Cpv8Jh#F>Z-Cnqh0dbqmxW`AFcA8M`x+|K04PJi_wMg^Kf*zYR>4%x;vw% z$tgTq3t%+v*ZD#SY;;U&-RMQe_~Z6|^io`XIFJX}XdQ+y8fQU6q!EAIr8f=`&PkOGT>AGXA83xOp?!ju&Z&B@?eIN`GdJ}`-le%2{6YQI(ep}0|4`#1LnI(XyV8b zC+xuN7lGNY;1v^rIi?U`o_t`QB0?vW{qtP_=2#5Ov5e5liC;Skz?}8KoQ;Iun%?JA z0L-1l)2`|HA%FS6M-^Ht+xZgTTRcu;C@Zyyb*`J>%X+0G40_mf#`u z6J2{hEvuEj`(^^5tk0gc~%qpPVjSA z@#9uto*jgqd?UIQCBB^_HfY(GQ+|ejod(QPL+HLPU&X(A!oWN+LeFkE^mm*C8Nhs5 zgzouNc|A6*E3kwNLfsuMeGD%i56m-((9ysCa})Ms95C-hLZ9s5&%lrKfq54ZTJ&Ja zY5aH;nD+#sH@{l^9Dck6%zKs4r(b*gMU)={=5Y}E$G?sL5)yeSdBALigjOG{zk?qS0JFVL=+;3A>#&1sf!Q|@TKeXXeuQIs6PW7`p$DS- z597s`coA$mu>J?1!;vWh<|rk!B4KS`{CEqP<1V3#K6&K3I8d`V&w@^P{6Q~%+yuqXZ~a9 zKk(xcV7BFi-h61)@9?=*z#L-p0UPEYFm%6XwxZf1T zteIm5r;gC$&-s$Dd5>@m2mO-&+HL&EfVmumcJ8-kB)0ZCFxM?Y54QYhmR%Gu<@HCI zdnYjW9zx3^C(&%!R`K%V^tn-&cVf#jfjP1X{p#DldjM}*#StKM!M=PO4%>WS?nQ(; z{<=5YLYl%rDUcRs)P>nMcdz+9&Y?Y;9!H1XadVBS(f+cK^kw*!MZU@!|! z;2mH<(OfL!mDy?bo{QLM`%2EOp}(w~za5QQ1~4~T70(gQYoO(mo9AKs#sl+BBGfzL zX^I~yPHIA3&qY25&~_Kv7@^<)!=!uI(H+1%y9r&iglxx4vpBSXUOU|>AE50Hv{6Fe zP0T%j3YE?4^3#lWr*CutvyBr-B4)oV;5W=M8JJ@#0p>g|_$bU%2+UJLfO&5N^WG!$ z7X^+L_?UITd>aX!l(IV;KV}2-cm}?xaH`{=@cH$2wIS7TuBJfXa;bmaXYlPbGff2VJnCX$R&&OW=qBbId37t8ZNXCO$5UBR%NTFa7|Hl6xV_m(Yg;)lcA9z7EWH zl+fOPd~yp~>=a-LX@ve}(_=WA@H#L!N@)JkDgE%{RnE_%!zYhLyK0}otMt>l)i=I~ zqPu|NBlJM$CmM0?Oa|tfO6ar8etQ8Q&nR+H0C*tUGrV$%nCa5 z?ez>FG#(gCBJ}4O3x0}nJ}VGT%rTa;l;|6~n-lPf_kg(wp)X%qzYp~!9hk>Y=u^JG zoy3n5fO#ep8hj~+M!_`+nClTj$NuzHTu|Jv19Kl$MZuZZ1I(L5=;~+Ef1)eJ{~);# zZv@AH!AU}YAN@`mD%@0Hwi$$e|3F$Eeq4y=nb3P%I(!))GaesBXu*@CKZ_k(2+X&H z(D%;2iyH6S3e2~I&`S$zHsGDt0)q{N7VH_>f(B(9FhHfWRRFV9;}0uw87DNW%j2)3 zVxODG+*a3MZ=3NY6+LPres{uYO45zYoezqsO`*YV>vVD_Da z)|5rjmGRxLI{n*Ftz+e}lOH&r0k7i5eC^dQ`VZ9TF z_8hv(IJD!?RVMW0UyDD9_go0fvxLx>2EO$)e%uMnvxm^m-+S{Fyh$N2TM3~ZCasx@ z?YY4TJ~ZtQV}jU#F~Gdz3GLNmb0v0d12EraLf`pS;yPJ~e`aseq|3Qq8_}P;1*Ir= zLi2jH{0cqOa$v41G!UDBxwaD8{Qk$5VM{gx^K2v3|Mq65EKtAy>BpW&@y`I}swec+ zCjU)r#V%mpy@Wnoao2~fCwY3j7=$S^ETzN~6c-_xL?ZvR291mm_3nD-=@P0@Z)h{ z_EUs*u6!7+fae}CFCld5JE3d9>!{P*$?r^a1GA+8vt{CpoDa;l2!GfJ%(ex^kPFO# z=GwC#nCB4wa08g#(?$f~B=LqeVIuR$7EdxDVLf@V+<{Wlm7BG7gp*4R!@DA=fFX6g` z&6?ov057Rezu|%L zs5mEp!D&MOS-KW|5x57;MhNZxr8?Y#IW7ZpTqE@O??#TnDUc4#=_j;&#}w2QC<6wS zgkD>9-C+Y}y8+CG!(^Yr*@X1?C*Qb+55Eh{#|RxW^{4NlfM4e%L7IQ{EQ-XD$B}>Z zx5Gd41$@LL&bFhD&L6{Wxw3(|@(8_q;nisXZKt5^ETMBhp1uRWxrk%^=x6^n5|AuwkNq3=xl4yu!LBJR5hJsVzu zYcQM!2ImN!zovQ)Iwgg`9OzNHb^>$lA@s}--~R=QX*w`h9ifdyCvgSw<*no+g zH%ceGa*w+#OM$@(Li4ZqpT+hZ$4xxWj`P4Amk9leeI*W!Gn)eq>5sqt?O)@^>%g41 z2z|QXPh2@mIRuP$bX-Nr`Hta^lhCgw<~`aSk>!0ZzVow~gmmC2n3 z%$-T-mzI1Q{VmTpPKBduejVYf$sJ%GN@)3;JJ5OXO#$YcMrh8{e{tfib_28TBlPE$ zWvB!8{hV=0zjp5k&IIQMV9w2i&hY)I6s3exb`e_mXs2qtb0RQL3ZZ}gSUMVXCk5uR z5xOH`EzWvR2{2DNp?yVSD?5jt-9DhGZH1M|iR zy}T%`1s`+>nC}RoD;Ly%8#|Z?%$`E%zS#x1_qLaFq$quO`<5fv!9~DaO9_o+4ng6# z4gqr=A=I(u(UUe{o^!xF=ty|C0P}7q^tJaN=npUfCKK9Pe;Abx&H;mqgucJ>^M`RA zyDrF|%rOm^qlVBupPbE&+(cmRDTIz_U9|^QW+Cnp(F|V)=DtPf@f87d;~jf}ISvrI z>o>0@0JLp}wrzwyopBJi`nEa1Yzqi&IrjqYv~8Qvqaw6;Vx7+c%(e@dZ7*)T765ZD z#vcv=a~{DN90ul#5&G(tIX_1Uc!1fH2wh$<4HeII2AJzSp+!%?N~t(wqy?H0@JVeBj{2&P6BhF)w?|Ohj^3ixQr0`UfLJGgk72f%sY+Hk0+%^T6N|p|73qh!YR40fU=_KD#zB7Nt`I%-ulf&xU=Do0#RC#Yjhv z|Mg(J)pm5}2%Vd@pci(n1a*_pXZFv*ZIC+;n7feBUp}7!DEvmf#}P^ZsAB-Z~UwqZ?zhjdmW+u zztXJ-w(1lx&sjo?uRZ%D3hgW~5AKS*o3XcqPR$&ME0T8yFz;?cHyumoyO(l~Wu||( zWuY$Gi#fBGZW*@-mBv}jiLLaeeI#zY+=am0C4@fL@=x?qJ&)ibPw3Ag-EaoNRX#5C`e&_jp z0Br}M?J%JwzPn|3-@U-#0HL9E@4tqP*a*zMh0x(g?&228yNbghY5m|=`=iaMMsI=8 zSpQ$5P`qb30g}?J=lTP*orktdg#PYhpTSLyeH}3SMncbJKL0iRco3NVFrmlZjCI4V zpW-Z7`j2nee~Wruf=)l`^?FWIrT1oK9>RuS;n+;tb>KU=Z}Q#)<|DXGSkoOK1=0we z{`7zffCbRDn9#aTm(jJe6#%mp6Z)$j)l2bFV}Low6Z+RDM*jzjW(^0p($HJ{(8-ex z%#%mx_<0%V!+5iSdGiQu>hbl(*xy^|kq~+gzL5_QgZYGxtbGl2$+?76a_JL)>GUbQ zYbK}A(mMN-)3HCr0z%7N>wvj75<1|Ebr0dw(m2AD&icy}-@}`X!!?}HvB%SJ?zZzGx@H4Q$RqS`H(xx31LXh)K0@s)SHF+FoCVC*MCj4B-h2mjkTa<1+Y|nR zPP}6kCl}M?%pH&5gA#!`QwYuNd<(rQZ$5{L(ji;7qu=B`2F!bs&}mC)28?4h%>u;FFE9F>H2`^!RpuCblt zh3UrmFMJind;ys2GNEi*E$+c=>A-A$LVF*1U<5W`BD#}=_L=pWRutz^&Z4EgKmQ~2 z9eopVjVHA4qbr8tP+UOMN9a#qp3E(lgL7HwkWo!Iz2G7+xI$>g)6>y6aBScJX!_Qx zZ@lIJ=F9-*%)+%}J}@V4NSp_OIS=C^(g@5KCG^?HoH!27y&Q;42cG&YKGZc1m}?@T zuZ7OOg-yE6A))l0XD*`ga8z=5HGQj~EBfKi@#x_a>iOdn=m~f$ad%DrxpO=^KE5@a zUrJB>!p4tTj{@_ZAoRwKo~SFXEMTr&LVuFvdIr_85}0cYs^b=5uI+?A`_jYcKDg%N z%1-DXvksyWcNYV5ml68@woBM)?_#u|xHK<7XVbABm}3*6^Vh%hCd#h@?Fyl{eptf~ zPA35K;U@Z5g%tokNG5d8KhANzoeB(Q5Lz+$!2$R&3Jh8aeelT~v{bexT(JrL`lHM7 zVtX|@afB8v|2+ETZ~z#*PUz~tJRieny3n^GbknJ|XzhJ_f%y&)x@6Rl#Q<%Gq3sx< zC3}zHGUgpig`9bK+ zmv5p`_SNH<68ht(f4~nR%Yk{T2yIHh_XdvZ9QsXv{q7|6nmzR#P)w)2l(ftS40Zy8J?Qo^U^WM#KltML zm3Z?iVD_9+#g)M9V+g(R zRN3G0;xM{Mgg&)3j7Ha0h${f0-@Vd!5&xPF%>zZoYbyTLnZ&v2blw*zI?#@#z#JF5Z9RE4Vm}0S4nyaTej;3-{JJ!0h>Gm6Cz^x)S>3gfZy6*)xFIvj~0j@9abwv)(hnyyppB zJiHLcD8U6RA(7CU+Qm}=qG&CCOPi4!A@r9ghH!8EEN79^^m+V{%F_hQGl$UM|KTsAv0M9bYeeYH z_Xj89$1AucBlL?K_wg<53Sh9B&?8Y7%D{0LnBy3s)4x0!`{BF+%z2y8kFV~~g!;0J z6X9u5bMCYFaV2^mgzk8M%}=pamw|b&5jtc3;e+_yrNEpk2>tGN2mBrl))-(e98A}C zyb=Cz3YhCGp>G}Pj2@JGFEIB3LbvT$h%UD07%TEzSwc7b>c9w2GxWXZQEUevt&0g*oRgGof5o{ zqXd`(oloaF+))#n)&CX#etj`8&oV-{KJ585eq093vy#v+bo&R|P{#sbj>Uw=K6xCs z{B9dCw};St&zGj4{HNpgo6zBckFaGMfx#9+PhQJi zjvqJi!YXvugtyQ%IZ}W*(g^*-g$=00w#&e5*9g7pevzLy7op)J^w{YaGVo&)F#8-r zKkW?S4$E;5n3E7n_l*A&?p7`V^IXNnZ9g#YAwp+fdKCBk-s3nq2+iA4!lPnbyygb| z)pvHI>bn|oxg@mn>Mzd49**Jl1n7jfF7coM7cg%kp-=bq_r%7}N4rC)|Ecvyv9%sx zwj@G-^5T2w_t-0NX(#miPxruS<0%5>DJ67JM}EfPorMb)p}hkg(KxuHz}&5be)*yc zcS)WtxZ5PO>w6DBh2yse{y+Bq22AR*{QJkRbDn1wmIan&Sz#GqMI<6bLNYQ_R6yk%$n9h!BYgiHL|Vp%M|1A|Vo8p7TG> z_vbU`&Mx%5@8f^p$M62#$MN$xzTcQ@XRgonxgO5z={#R=CV08XZXS1TBOLV)_CHPR zUvBKbl2^=;BJGy0ZS48gBPwKuzsG^(b7U%Uq}kZp-n&jlsb?&)XS}g5oVjy`^zR+S z-rbU0e`5b2V?Q(CaqO@L5&MQ3yJgUO=(2r@eFKcWd(MZY?Sl6Z2PYZ((SO~rLEd*B zv3G&7ovKne;d+$VztGqlM~-+}-ghB!c!{yke((3P(T==H964d^KOVjDRigaElz-IN zA)jBqz)SfJ&=O+LXkyQ8@()Yw^%(ozSGSIrjH6OcV?Q{${2ikF5y~Gk_FI2^UN)OF zUnU}B_uts#fP8hMtWu5rdu9rbk86oTjmGY6{7P7glp_v5VC-iuf8dOKJP&@q9WnaA zS}EZ{;>ZzW=X~$Aagy^AhyvN0Rvl}Us@Mj_6Z^$)r^MFy`x5&H7`yO?ABJDXb;SNr z#=iFQah!2qPaL}0*w4SW@HL|R63Q<#Hhawx+;}z+Q_|R<4f?_=$#)sCZ>6#2l?QOe zu~{Bv?49X<%#$LnAr7xM_Mdjt75Xtc3gYOn20l%G%e$Bcb#(ywuuwu#uY)z~iY z&62wIoF?|1GuD5HuSW8GfY>+3*lT*tlGSJUjJ&$Bw^W62FE@`kvcTBtX{FzmH+cg3 zCw5}D(CsojE)WNevHvyc%oEZBHWCN77&|!f1>A=|KpdK5?Ed>tRY=aa5r-!jd*krm z{#xF2yeyH7{qm5%NHfyC#Ik(&Z0bSTgVRc4T5as1U)*%BP?IiZ> zF~p%V;!uULKl#${aa3GG>>Ft8rymO9(E2XP*Vy0P`N~M?)^8Jg&&p_-MC_|KcJ1JA z$UD*w87RhP23?0m{&MKs*q+aq$Ra;D9>O8^sxL1;A$H`bY{|urY$OhEF?Qvyl~T#! zrNrSC#%AB^{Y|O2(Xt;f_W91A7PI2rAS+{If44d)+Y0XP<_76W>D`qa-g*aSk?6?20e}%lu zPGZ_)?7RChV*TaB{wiZ{E_t=qL+l?-?3XbV&Jc%Z82imH|5mno!CAz?xyC*|??sv6 zgX^JXVvkNeiJO6=khHMfe==38T;ff zekRKSnOs5vW4FHlC#mYt7UIx$V*_;$%kG78Vl|B&?WuWQ8t5Fc*GdC55c`tG_Wab< z-m{ZrG4&Taag^92E#-ZV z*!zO9^M0}4FJ)K`O%wa;cP>bCN3JK1+-&TdA6YN^>BvUn$QEP!+%WN*GM`mDDl;6~ zNgUc^?9wq;z#(z~ad5D)H-7&SvF5=;#KEJ+4zJjIH_<(^?EhNH7au3eAE*2&V>f&* zIZ!Ic2YD-d$8FEV#O)Hra4mc8}o+#Nmm?{^Gr-N@bck%`I;`}e!vm?8OWAP#Rf_I11L%S7c=W$ZV)Z0Q{& z_RMfJ$Jn#fkr-qD3}U~e_%{>#x5>I@5OH9rY|9Q42j7&2*eKn|*zRXXhvaGU?SQeB zuYDpbouQsMFxA)|55E8}vZKU-PCv_M{Qpd&TLk#gclm9eodbEO-57E7Uxy->Of3!i4<;51|Z-2K>IqDD#? z`muS)4ckg&2F-@D>N()CtBL&ugp{$m`4oh1%kFt+Tr-B(M~E+D2SjNSg_k9E3oV&4v9f4g=r+-n~t4lXoy##{RiNl9kOTF=;(-3Q9%EwYd}vc%Z4s}GB* z4(^j3gRwXLW8f`PZH+k5o0UL zPr?bMkvNhvcJ#v;DS#(M?8zBB_uMV=(YJuu_k^+22hWftx&JJ&|AMh!`f==LS$_{D z4vdiISxg*QYV53%RX>%=>Q5XTWb9vl{7>1gg~k(y?lJcKmlw&r5IRpBVq1AZXBqp;XP%brs(%f!f4#9+ zUj4dQ{qP~N(#Gzb@{2OrJcfu%N{xMRX8a>W18In{Ux+*&Ai7It!>Td2u9l%uMI4A4 z8~Bc2`f%W3;=rTEz8ik=GO3w~5E8P<=PR*qyAA4L_FI#`C}TQOFH1;cOAZVjAZ0yB z>^WlWYnHXM28vy%NLV*ggz@{h?#(dH5d<{Nu< z+bY~yOq1!%*v9*>>?`%Xn>e)3*!7VcWur?LT8s9@7q5`1z#oyx#n?}j|G7#&b|Lmx z8tXsxpiE_vhar??H~!+K&&kL6#F590J+^Dqo`F1;Ixy<3d^=$+k1 z5%s4*#(w?SEhX}oMa15xjlFu(L0S1ma>S7bjD6?2eXmF-TTATQVC=(>{$3`Mz&YZ8 zHMZAx6OwDNj5t_ftatqDIQm!u(J`AiIr1eh^`!xZuA@;hCJu;&G&VoxhcXR#`x1Kx z82gc1y5Hy__6;WX4U?~JCl2m1w)5!=(iy!n=Z1_;f1lvVv7Okv%h+F?IVF88SVJ5f zXzZ!K&h086&k_eO7<+5!oUh4iJSt|w*k7KS{#)_{j6L+tB`1jTt0=$5*e`shLMqhv zD6wy$v8lUO$WkHr7;$isu^%740t-Ufk%Ww$xu#k+ITRqK4#wKrZ;Iid0mL!|ZoBQZ z-*|{=7%^Qd#<`Z58jby0U5(iP$WY>lYyv&DPP%@7;*vqeUU=az-yj-GeS zXz|%S$t!*#b=8HKDvj;TS8S9_EV0icnIwsQ8Dr1<@#Mdxe-9`2k2LnBm!E(IsDO^3 z{qR%I;b<>P9O!TCmVL`*W#L-|X-E6FXLcf(;Rtc?n6bakJc0GChd2^4w(H|P%8By( zDSyb=Uw5y4M@ln;m}VOry6{;sPM$8ro=Ri?l&$=c6z(js_kt9zp4d0l*qX22f@Sw( z#J)wwPHP^vN|yM$92HRxbs-K_8vEhN<7IsN7eJBGrZ4pPiS(fb#Nj85z2oZ(ehEI1tNR)q$@-GT?HXYG6E`VEuZL&UyPW8Yt&eo#6|BXKBYY-s*J za5OrDI5gYX#^1dvN|rSI%5~~e(Q@;j5mn`CyZV9?;I-jVVT*DowW6kEFZ!H ziNiyTJ@@xOccK~^Xzbp7k4~0sN{Kz?#!gyLZ>0$HiT#fm`=_t|^+PgC))EIAWtQAS z9N2H{f~MzSO_IdHjIpQRDV1GJUA~4Dert!zD!AC${73I``)`> zhHfLVH)ZTIvxht?&0vZB9%I-4;8|?)UyvoJvE%w)zDqjkWa3DJ48xwpC4G&3WZQ0! ze{pyXtt9U&+E)eV3SIm*I!~5SMa}P}-rg~%FIxzn` z@{p&Ay~~Z=_s~cwU`QtGkg<*uCkaaQ0k49C^anb#4f5`qX5RIpM zjQz^Znfqko5;GBy|JO|Hn`Z2{BR`S#hrfc@-_zKaLhH^*dz^rvru|Td?SGW~)(}V5 z8+*C$#%txv0b+j#W8W)J_m?m4g(#;TaqZo!fo6 zZ}$-U_Z$12pN){$ij0?Cld&IrG>NdENwO3&_Fq?gs}s>|%Fi=)%*XG$n<&4C@=qK4 znN|OkNr~PjrnAQ0*;se8wCxFE&)den{_^9}xxy!8k8kV`-~Eb=;m8c)$ZTW3*x!fw zZLX|5jNR1zOG#SBRfdXHe%0CW0yTS=ikzTNn&rt*k6`s_DJbZ%LdWd z=l=QJL>Y@W5C=xfSbUB+@Pe_A^nd$KY3LiE9%>gHdS8}3fn&shlg3V8@j2-;p_9a+ z)5iX5Ww-G}`301J!r1$M(7Btu*ldVo+lO{{m!+6DLhLOww)U@`;2>5@>~AzS(y0`& zI4NR(&e-?%e_J+RkyTKcw0++A$P$?rb`pE{$YyQ;v460!6MXAr#patv?3-om;`gTS zl1v5@`-d4@I{V0*et8{7;Fbd~5C>#48rV-9I3)jgn>cV*hN1jlz}WA+eDACBK93QH z78!fP)>q)f!^B~qu~j#Izf>AyJ#l!Gv6Dt#`4ys3veORM)Q#}dB&s)*q>OA=_sNo1 z{&9xbb6%DK3y8f>7<=K0hQmY;P=1cFSNuFbK?;0^*ni&Gj&-NtDn1xOwf1ZC!m^eP zHxP%D#(u21cU0=+0CD87v3G6WJccNLlJcjG?Rk9n!&29k#8hqUpN{=Zc1N_4n6?-j z_+k3v(h-Iedqx_2=)ZP~IrHw7rG&Blo_$cvfd6`8|INleJ+MLM(C|9q@J3_(EnAMr z$HTLv2UZX?_6|7 zUd_@M=}lrfVeH?Q%snWNxQEy~Nmc<*6Ni=?J8IH>GU)`?5eGIJ+wZ1th9#5hh$Ewn zz4`RoQ!+>@p(AQvs#=Tts}97GF2=sK9T#Yl=3mL z-)HRGqn~(QHsNKCBwck}8%+~NiWGNucPQ>I#WlE<6qn-ALUDH}TBOAxXlM(;EqHMY z?oc2_T3o;M{r{>m+dyt@aFd_TYzO_&_7e^hcNEt zPy_|843pvS;p;zD)%r^fA5FkKCOi0!4JL7+Mbm?#-8WG%g;eG(k1?IcU$UI{cy=2e zz|Oxp{GSpUnDEq+A1@ZT4iC3@p@6a$m0P8b@+~<>_XKQXW}j{b z-Oygl1rBqa_?g|68Lr&+@t`l~?MEUCEgA|3ctnjfaoitQ&hB2=o7wtq#Zez#@WBV* z^TUYP$sfX?1;QZF(cB_!_!stPm@0h3IgWWet>Q;vSGVN{V_R9T%~wE^+NX?*ubYT> zCQ+cSoN!x1?4KbH{DY24`&lRWJ^$KzEXTX}5nyfTQ;$V?W@KEaQnJj$I?9rEY%D=+ zEcKX_&HJn>V^N$D8-5j-Bc~T+6}B(;B(0k%r*bPa7;^YHIl7+YKsaj&9Ez#f^b;ir z5~aSkxlU>`kOY!~#kdN=>|Rw3;PTjwH2WU`xZr?JaOl%?BL4>`!4a4KZ}iL8{=Pl| zwd|@y_Z|XQ0iidXmgNp3UGp&e{WP4OO^@wOS>WmYtp4F@vCFnzGT7e}wVv>vC>EXK z{*nB+S(DOUh(yqTa7J#7Z+uq47&d53UvN#zIfkkSZb5wR^J?h{U6c@`nd*Kyejdhs z%7h0OX}&t8kITZWW5;tB6kRM=Z9XsVhZc(^citCwJctMuhzriZHaGaXRp`FQz`m`+ z#v3f}lccNYi0=G%bChOIJAI0C-#JSA-qB~w6Kzik0ynz0x!!L~g=|kT0^fChGj^EY zq}<+o5By?z&d|r&LKGW7aevd=*_}~4I0g}GUg@=2Ws-v8LAUs39#Fr&be~LyXe`KY z5kj|)lh!U*q|h~;>6ue_1pT$n*5yWq*yETJlWBdPcIC>?zQxJ-B!6`5TPXaW0GBUp~|@usru;#1t?$ZQ$0KpZ4S*?t9l9$cLbhb<16PTH3@ zQO0%1)0jEJ@h9YNWjF&-=T3f~=(IzhVg?CgPXzsKF3Aasg~P>#r(vPjCr?FlS3u~N z%HRUt-8j`PBuc#FCyZWYaco}#k|_@9gK?8TmM5mh%wU?K)39B2aT0Hv+HC|L+MvcM zMJ8)o{~bp!c>reGyoH})i1D(G+Ay#I;p=ksnSOM*8SbfI?tXFt3gOSNpnUMkScIqb z1;M@2U{~M}jO{j;@oG}wYHDPJyNumhjfR3%#tY5MHVZ6w6nxtf|K~49cMt47=+RqJ zKZJG9g!(?V#biSv(?;p`a!`l%?k`n|H1VfN*wmqo4F9E6Jk0PNoV(J0fb}#U8a|S7 z?GL6Ol)d=**OO|TFqTf>%Ja*$Ex?g5_JFD#INs3cLi?JA(hj~Dxz@!f^CJmT)(4x4 zB>iKukq_-69(>}vx1xN0Duq7n4C+vx=^2LvWr%w(!{lP^PFc--Qd>3|LIN5o9Jg2Tn%CTZJW zY3B?nf9?192)^qk-lH#nPz0K+8C?tOhv4sBQwQyBWC)dWvJnNbQ;!AF$Ihx}io-Tw zsWKO@V#LrRU%jYW2YIvKfIOkdix0+n`)D* znQ5bXn>CmnP{2++tuuQ1>Z<3fnk?sOYhkWG<^A#o)kYfAsurBq)$PbN*8X|-SRH=s z>h|`LjFKU}C7#(a+3GBxpd%m`0(FG*5;wbLFRv-UH{9KP)?AzJUb->k!G--N((^po zR~g7gVYnuAcXgQo=*oY7^LsqT@vJf7535chhAmdf@^;`pWMHUINKNggjKx3(Rgm@& zYLonB7U4Zt(&NZ!Q50}S-tL(I_$+yu*i?1a&1qo`tdxe|cDeB!AjUVtiVVs$oFby) zU(X>w-5lf8v*(JuphfLToqIm~Ba<=#gh3}FS10scSMNuDi-Vst!7Yn(edx z!R%GDdm(;pM1O6|4?YM>8ohVp{qKR?mvtpztGIC zsVx4+C;g-;q5&Tu1Aiw4*&owu5XA}(;;n6G(K_EqY@cBd;^7p?e?PajlSE8qxHb=O zUP)`f&79nR=OE zD#yv#57ONZ9dG22ud2XTT;bjRTD|XlpidY{zkSDZ><4JARcWl9;T34}{c#RcZit6> zwToGB5GYf+}wC-Q1&vI{4lxbgWaSNa7gxt<>&eKBv|_l?B3zA*iu6{ zR{Ww7Y!m7#y?sVL27L=pBNu8~#{I&C_vO_UP)@of+6fa^?1~#TCW&?QUB!ba(DC_K z%!X#sY+UEJB*Yr<^}&#zYVcHw`|~e0@eK3D&?mw{Yl^Gz4*RzlUT<5#8$mlf94C#Y++J-}~ENu8W>Zj8UG5 z*J(zwC0(GNob}@~SV*Hmc8~FDHY5bWs%^BMKBI$80A~eLJ z$y^y8v<%}f$YY6=^vn?VT!y7ISTF1{SNwo}S6Ekm!dElzkNdbdTIBQ!99j+L4+yn% zNV8@360nEw)>*u5dnv<6y8&C2dyat{S4ZT2pbC=hu*69`U;!U|2RrgTpf9dD#-oxa zJx+~Th0RcE)3lAlkh$Nbj0|-`i%|ztsGlwLEOdtF-oV9vHVVEkWQ4A74bo9a*tT>` zP*u|czaY|Y)Xe=K?5YI{gO+Je1@#0hQCw>4Pt3Bb>|CCsYqHMpZx7pw!70eTd*~0U9pGka(i?nHq z9N}9BgmJ{{3N-5oTgI{^seL`=^>SZcMQf6T$9_tb@94Zn(-NA#xtZP|i zxReV#+2)R=N^g-EOgC!oRqcsqae$g{R z92j2VzVd%xih=Q%1zmRmZqzY&U-p@CwWY?@Z+7$N$0L2!+Aq_`4p*ly6Hj z>#h)JF%td zR?G#38=%UdS4%D zm;`jm4*f;VOE-47l2>j_GDAt7*Km}R)aq#eB66bo!In+PGxg-w0yg=i>6oouAEn4o zR!o0^=d+RX1j}KK@wVk;cDnsVDJ04T?glDo;?HZWGM<>mzYLW4?YB~ zXbmb+=sOkE9vk8kP`}srC~H?U(cD|HIM;kHbQwg^uZS_YZMl&KP#f%OXWr;+(ctF< zR*K5ze>k&;_Mpt6HsVG+6Y@oqqD$Xz(WT@XTM{9yL~#h#GAqa;o4(A~67TMFCCOzJ zPm1&kw|d#f)MF%1!NTB$2~-movSTD1txRxvhw%MMvYp95PaU)&2C|g6!bzH%8E806T9ayNoFMM9t_nQotCj zXZsBQfejL{RfQJv0kSaUfO$g!jbUgb?b1EdRLW$)djPj8$H_@^6z0(VdpQh`=wm_& zq?f-ZxH2$WYHIae-&wv`UuWnGo5jpgZTuNF%rn}$Hzicwv(d|l|Ca4V?e_MI=}>Vh zbN~|jlg`V*m>qL%U#1o?B#H3{#J&=SdhaZ436fH7AbSVy= zH?Hq&L>)!l)dDd)s66`nNgLMr?iM-{X=00uW&FfjeqOUd(j0G`YSz0((p{ zG{x5hYH{+fUnFchVOB;Xh1wdTeaFq9NCq+Vo72$L6@NP(&n=m;PaJaW?3FWch za)yC>?zb_~oLFCs_QqocY*Y2J3Wd8g%0hebit;Xi|Et8 zidUkOqpW+Jp<^78fXQK}5p7{%VmF#LO=XDaODOpwY8V@G%2Cq%zt}y}IhyLrUy0&8 zs*SH6V4Dv3+iV{1JlpX7Id%58R$`c$(`pHbaU59!`+L&q!nwsakyVI;IT*rv(-p(G z`AoxUpxLyw9xqhF-XcxnKoKh@XeSWaU3%8hp5*v?zJDc!W!$V1QpPLDay zdL%5$#$?Y=%5bcD4h0IRnJkJP|LuNjckuCxRW^mjFg0Wy-SFxNL+JwD%|-lctQ(xj zgh&pzvy7f7biDo0!|_*s!5`iXIo#}R4x(7siQh-#qwo!EL2*3DJc<*zw(+qy|ki)PXDHKqWoj%|3lzaYi=%9m%FVn1=# z=u(-KZbB#~xyFsHq|L-yR}hJ*Fhe=>3_AN_&kSk`{$emxltG+Owm7UVd<|(qFk;Bl zCeA`pe2!WA#WZkJbc>2k=Z!r579KJV5y3A77S&Dc`f;zL1SQF@)LWcMX>V6S-%lBi z-@WsWAnz>?QJVsHNp_YIDsOG z6z0MlLEvW7WA^NGh*%$Tf*OY!wuppjDDD_VPr6NwbkuVxDX-OI$Y4%CZLt|=^(X4c z;++f;iZ}gMqAe-|11X=`8Ak-aNZRPvQ^~QS#dlWcsJ7k(?i+$Wzc5$7Z?Y#0SC)Kh zSiBCt*oeFIfe&sJEm0zUA|juLeD42&Ph;T4y~U$0nPMYMNJn-StiXcCL57sOX-$QK z{dJVtj;O0ed>Z`}Z3Y>_g=~D95ma$Y|6u2MdprUxVB{eqp#HH8rp--_mFt)~o&S=1LjL%@~E(A|hYk8-(@7P`*A~7}JIq z5pGGtX+!4l?}r4@WK>ABdiF`~H~J{en^*=pCMw)1Gi68*Ia$sF<~TAwRubw| zbvQ-#~b{C%zt* z5!>bt+Gp9XN(>*ukkQU@7^09ZR2kSWXnI(b%Op+&k2o-ciohh}KT>F;GIuo;$nO)yyO; z{E&N{_jk8a6zLDnvo%LJ!#ZV4F9BDW2a;X`W>R=6QJ*2mGV$zwP{Og4(Vt!*8nEs~qhR{)_`@{|VTi75mLnF|Sr5k%C; z3oVx{yfny9tYN1OrmCfcV)dwFya4p96Xu3jAvaPJK;x!Vl&u)t@Vhe3(v-iRVz>^5 zVCX+gnIYYf|MZ61heahNdREyZG2kzLl=t4Ui4DYF9gG0uu(NxP5NP7(5-6s6hT`pV zRXv~8NA;r(yMJ9q$;Ifzc?}Y;lsdlCZO1M;xAl}izzn#XIu1)jKV!7Li3CLDyF=2$ zS+JiuzJBfzeBp%`{s)N{RT+OATU-Y@?WHy~QbO+=MQL6pek62^UnG3)Y1~LPGzLOv zQn4lu`laiCmTosxR&h;Z;&h=uHQ}M7!~(WBOh^>qH=BKtlo$qh+ct#7=uqaq{qSP{ z2zmP&+&f9 z5L*+p06NU zn; z?Crm>gjj3x<;?-!d7u06El%1Ow$?|~pT*a(@7(dUAz$&`tR#>5HdI=fj4C>XM{@av zOPrMdIHol@g9L1ndJx1>r)+=t*}m>s?~#Rl=2z%y$w*-$S+V)c+!Mxslh3tiX0@Dk zS`F@@vahRmqarK@yHkZ$zG*zNDnAjVk|~{_QK7OpDl6F~$SEqP5~aGW)*m?neNAaU z$_JTSPz{>Wbku_EQ~GlRx3WIfH1Z9MaI!0G(GL_z0p95cMweQZ6yYSWnCzxxkY%Qo zHY%zBxYE>0U(6F)C^aUM#?iQ?4nHK9?{Q__=h8Ed>=4E@Q7Qp!t06CGpe}M~`1NpkllimeC1f_v`Am^I>0Lw$ zsw7&TlSEcZi---&GkP51)gX&e-PC3XQXSSGIjcZ7j34o07i$Emju>mU{6O@Tc$HYV zdMMQiqt)1jh}E=(s*!PtiWzGH3V{6SG+tI;vczX`lw>MDV;YN+KM5N4+`ocac_jQ& z0VW=PS+h>Ae#Z-q6aX;;qy%&pj%n4%&H0a}DkhnrDmSO{SdKN7_w7`&l_$$s6Z{Uu z)$0kwie(X+11BF+a#KckIo%9Mm*ye?YwZ9Fbym317nLkxQsFW#AeXJ#3vB~N3i7`V zc76#{`ZBC4+ODwDKS3frHLvOAcdqB?r<3ChuiEty0l{)gPt$ZA21Q&LXxa zQ+4pQroeD_WP>X3Sb33CMu|{30oCB}C)0)@T10C}0#>FGS;U}2jiWo^jmDn2Wtg@8 zL&LEf$VHSYxcsg(f!D~lL6U$wR^`@~i?|F6hsvUki8O)EB)5L%fwZpzNx-k12g}YE z8KS{x_^Wywm>FcQJPmLcR{^$$=N#G96hX0m8U5e3N;29C9T_rBuQPJ-(-cOhFk@N8{DHo#+Z6zS<^EBQka19{|6u zLOGRLjZQyR?bl2j++Ri;PRY{x;Uc(QM*9^Y0++MIm?~~pvw23qr9vq_sae@}8JGRn zG)%N#PE#>$YoM^y4?)}!x`0ii#UGf=2QkxJ$~Kpd!o#`}2?-Vk`c!DCH9sQ;C95Jb zh*AHh8vRF9#E~}KkVvRZrd=-o^$}kgYGQu`gIt0w#VT*M_QEbUjT+G12qL8E2pA)NIlekgz^ zgL0ItsZs?ut|gG5D^@n3s1iM$EWWT+&=jkjx5N^$*=1&M2M0T6A!%?_KYqz+Cr z&!pFCflI9?`H4#r6k@9nuVgAV3b$aLHoBW*Wv_~;rG%O< zoUQ7`GwNva5`Df@PqjY60svPleMK7AV8pGW4 zW|7s+kpaL9Fj>+IPNusyNlC7}l43T*hB@ZpRQzQLmt2E&%CE}Bxy0p5iAdq4)6yAQ zaPs?|QI#sPR&+zoXEjcHs=@l{vV>M1wq8(2QbHD|Rv7`!JeA502T^rK*!FNHbtQv0 z?v-KHkBDg2JlM0Zt6P!xIca14p8ziT$`8j>q2*XSqo<3QK)|KGb)KLM;Jdkc8&z+a zxnzQ%36%q(pow3g(Y$swH(#$}WFLS}w;Y@}2eG=!N{|8BWgVTnV1h^WIQFy@YC&VQ zUQblm^)8E4lXXVIxZ*~<%7ARW+N`E5l5vpuTU=VBWCs9)QSo~K4^OtCURf-&Z%waV zh87LM{cOS>K!(=-g#?QWKwTeN;_{lyACTt_$}dM!&EhiC-SR3IW!>v^ zyY(p5bqVuAE>BAwQeUS@tSdct>*Oetml*17c)JPjN4cWPJlVyJ48o&8_~k$8lJ$)h zUaL%Tov1svVTl^pRUXY$lO=GGYY2MD!&AAZD%{?X>KporXUQ3rlLHcrapGL8IM3@$ z1FS^=nFaf=%Rml^2F;lYUu!jzkBs}$?B0<8Kv;RB1$r@Ys)k${hSSOj(_xDmNk;L( zS)rUU9TEwd|B<$4XazryIriE7L2vo!S#%13)Z zO_?mj7z0ln+v}|P9J9)VJy<`CPdY(5T(4hG`*UqqDZc;!KE2&$5U62}i%eTFsBMV| z7j9mCsb*a4VqXd(Nc_W+nOtAufaPMS0Lb#zE9cvL00qXQQ*!HAwcb#T)wvWR>?l~~ z`c*l7KPqG}Q_U5^$!86)HsS^x&LfIQ?umoL#5t~p=AF_IdS1Mtr40TL_sa=pJU%D; zGH!cy)XS`gdSQn>vFi0o)e!DAosn6t(h4M&tT7|TSM$aO>s_F3vaNKhiTa~DbwMvZ zcq%p_LKwnUlQc!rFGeoP;X$KGhIaM;+4`b|5F?=ZPXmAjfJQ{R01^<5zT|vmByj_Z zt6y~|oikvKW9mi8DX2Z#OW-xgP3%)7u?J~kXFX;i@P%dL)o4n%jP4t|3ug@)9;LGo z$3mZ8~Jgo3Q{%)iqL=Q*r3X184!2YRJ`G zOf`r+t!`C~%?PbMPi@Knv<@UylZ9mr8ZlXAc>wZE|F1eL2*F|eqgQky%m1P28e#t6 z`pX&g`v2uW#QtCY##$p-|HF@jn=0j~|15z7(g9v_mq@l6Jb)-FG6oR>cFuPSUy@fbEO33=cpkMk)hrzhk3>T=M>N% za~7*Ib0<*H?*yD0NT*#W>p#obFGT<2D-hw~|3IY0AC1&ZL?e(4JV9_ivYv41XhkC# zg&SwhBUJEQRRRi(-lyRW8&)TSqFF|uZxC&&{+W)bu4e?mMqJ}Y*cZ=CL{;|H9K>-b zOVL=xC|Zw;z$!Y5^koTLAHiJWqgOdSLO-Io+yv1Hm?CJX0kuVg{JH-VxuyS4@K%0& zKf(=OQvbgNUpwN~=ZM?vpK9KJ(rW4(Xn^xE z`U?Nsme9Dv-JI-2r)Rk zs%p=M8UGnf(PmIe`nN*TiEFLK-0wfF#IkDtbc3#|t=nc85X>=Mso`iVBWQCd{v(g5 zayXU1Ze&?DQwHEL$+AaOFj(RuXB~kOg5}aRw&P&*IkLR}oz-*Yc#k0zGF`D7DA5q! z6Cdi*geTN7AAXI}Mno^HMAg|+;t+)C|5sXZOC{vBlB z0h%aeAy$JvDGw4Mju3AcNV5J0(fJ_S$0Jr-6W;H*q*tG%^?|dRY*_ZbdUw?0rE3_~ zlzif{1W~mjntIp4ougf<*;2V6T+ud!xd=NDfbz8eHPv9?D7Bd<0!Y4Ai8T5vAMKNA zT3c(EwPs-NL%N8#)N!yc!?XXHSN`u<9~|)?7RajP{{cv={gYyF{U29DD!U-Jh=_kK z%yc!hmknBljP6z&H-Zv5*mN`Ene9TER^phyhDgcV@9}_~+W#-=^X>luEost7OmPWU zP6eXv*GO0XzYr$(f1(g~mMGW%nT3KC&odPf9*n@l=KuhF`M+*bu*sv$|3O(Y@F5HY zLs=1SEnCAvoD=uRc~0=(5wTJ&X;iKzGY3oVwV+o#>`R8hHW5OOl}SdtCiE#Y^S{c~ z{{-wXos&}4ec%8&*Fg-kUZx|~c_Rp@%}Ahp?1p#i+Iz>l@#$Z0)u7|wo*D94&|Tj z&${-Mx~-7^nJI>B$R~$L60| z7}JyYXQtiwvVFQta&+d|z2kkksNL1)hlHjNljGY4op_dMYTD&QS?Syp#*-FCuRjx? z-#Imx*T4GgnzXk{FE;s;r9ybWB>AxH0m7O6de1K2Nc6L|*g)x0prN~9HYib3;(LeR zp%LFF9o5;{ZOXTX^k2wyEAsQd_jrB0yBJg!q$|wG&3>)jOK;wEuGRe5vb&)p;q8pb zU62h*U0`o&)hcNo_&D7cKwOOglQ{t`J=7AWoOCGl<6W|BPPPLz{&NcEfY?GZ%t4fp*F`<9=x@^^)N1C1ZU0TNejE6Ssr*p~Mn9NSb z^d!ebEK~Zr!uN+*1BpZn8Fn%6Zp$0BFaTO*m4DN7>RR(q%6+RTZm(00YSxFkE zl6@%}7TGSWU~fwHa&Jo95TG6x9Xc-HaoHKUxJc~&G^|=FRd*E4kGgNSfpQ!r2+;PBVmRI7zQnp;E&VA>iUD>PMg`Fd~n~^Rc zfnuyUDI>^=hqQ1xW1N-BL3LI~-xav@;;5L@`b(V3@ywFt_pWjYGpEmOgQgA|($wRu zp9O3`?;P%z`NEtJcfSY9+$oCkwvM1yuxF^Z*q7wpkXsN@I^TVl6;5~k9rPRYt(lcv zyD~$_qI+r%-r;Q3R$a}SH9Vd)=sjIVqPEOV=AK}Gl6p{3zc`nX6+2jPmlg1C7`ii( zHx2u4%5<2N63CO~*Hx%N4jOvj`N2I;nQxs$d$;Ml>;k89NOVxh#fxhD-0gUb-C%mq z6eMfbhdMS#P@oK=4w~VL0Y_C|;6Ic^JOJz;49&MYEh-Hsg91}I- zU&gyx31&NGypc1q;aONMD4?u!&m(ew{WH$7bo@|@&p7|JhNGteOa6D^X_W>3$PX^V zW%&iK77g;X=2VVn1!;$!X1XnbGwimgHKT}q+qqo77RvTw}hQw&K$*q~R@gfJURCEfj zVb;&u88zzJS^YP&)H@S_yusL%J2ig}G=)8=fc$i0qYTO9pIaCUwJIw6jaBkLf!iQ| zW!)|Me#Dc{hw59sz8)7D%;%%~u2b%4&*h@ycuurrTGF+~T<}tqG`2Ijyu|K(#XyDu zuiXNo6S2ZFrKoZbEgFPV=X1$T%!!OrjIw#x;lFcEueC5QIU#m&)SwTre#oHZ$Vp){ z@Egg#d#+dHlQ}VGk2U9^GS{STSd{D48Ew=m!;;~cEtn7|vjB+-v1V&XZ(lpT5*%^SO+^k@R2TUlTm!%riB-GC&oxk`l3Izcfijvzor|IeU5* z=}MrZzfb*G32`pF`xL*7vyf(*xHn_CU4_}Z?&3!=pPh z&3V3B?%Gb~T36w4=xnM)ZUR~GGOR^(%Y7x~>y*0_Wpg1}yc^xnvuYoQ)@RtKm51KL zNdwZ~Qt1}*hw|q}v<{csi<8Yk&(9SnPnDqk&{pOUBdL;a4v0^-XF(0fs-6xjmETXx ze+y}jL*EsuGZs!rF1@w*Y(M&#+8vX{K~i}JZ!YaM(-f(wJm$J6>7Daf$QNWK{=$@v zlC?Ew>LZ!2J;&x~_ljb2j%xq_eHN@0s^Fa>Q`mhfe3jiQU^@tBj7yVoy2 znl}?PnSJ`KdA#qYAx%0737QHdUhlE`={P%bSMtP&ow^|BB38?fGrH}uyvc)yHP6(3 zCHjM@6W%@k#++%NZ@BbN_W6hR{n-@`BOq4RN2XkdZ0>D+*90nTe~9TSZKVhTg@fa>Q3yD}&pL!@&3$9xiZ+=4%Yf?$Ln`2a;fh;aGA zLg^gx0)5zuNU1G2;3^F`MTIS8kDab=_GvizRze=P-o%N4R-qx#H zu>h+%c?Is5zqo=W1A>B&LflXq#oWaf9al+hI;vSI`$1rl(A)Fxrfge3wN7lgrN<PRG4jT4tEu8sH_IZ03FUW-HcRVWp4k zx7t+1>@2U~2fL=%e$AJ-VC9+LxQ2q~Jj)#9lVpWKP7ch=6t$Y};-z4_v9$^yThp|u z_Xjrz(Pf%RVODR!9=_)H2K9;A4ok-EG5p(MEJXS=rQ^NevW#(^# zg$_oxu^8uW?YyL(2|<9INk+gUXu|xzR#M*G9E`%LVFXh@lH*^;707fli{0$Zm<`yEVeM z(}C3=#&z3_f@3IX$H{%jTeJWDYq`gHnnFf{1d zXCBaBPjxkYbuG6T?0fSZ@cj1~8oKk>=8`D-G;T=HFF63}gA{$sA;9=CR5}ZdlSe=@ z+dat<854U0M$ynNw=$E7#!>tI%&X(4jM*r^z@YD#+-|X`#O?tl@wnVCR^5;yM*Leg zsN-%GVpGiDxVTG!DZw{OiyxI`-&4?$%6riMO${7IRbC1Pg8tfk(%RQ#dy?`7Cp~0# zh?O6utEfCt)0IpeoVu!)d7I#?5TXvAwKyCc5CuKUuUi6F^{PC>l^K;3u4fWKIMG<- zHo{Yz?ZPv9J*`Nk`Z3an=v429*_$&?UXgIYHLDlW*wf1k7cu>u{+= ztj-p_U;Te_VUJ$1b41QE08b|#+7+5^@te$yk}(ww=b1aY^{p6`3A7?5yk5f&Vyx&h z9p!6YOH#>T{JFM(7)H4(T|EENvR{HT3NC>zj*=bNVl@DFsqz4K{mKgue&O%{dW~B0 zY&_Av_htTm0yN8+V+UT{yESgSIlAlfopZj8m-x{_zysS05Jx=aVkO+nN^Gj`9le2s&G zGhZ8b=_2ovDWzy;d-e$$tFd=ja(^){#-3(GZLUn(KF-Na>6KmD&Bym$jbM$(XZtS? z$xR@9#>LOBNWbt2{V}M?{r=WR<@W*kY|=Il8LU0Rr(uF*$b#moN4W$8-OSm)R~tN)c9M09o*}Q|QFKndNxAgl!vR zy}tgE=iwE>aeg6h@JY~v7@cm4h4M`B59(jsXe^UH9g3VKLNdK}n}OfPOy;Mf@1VIqAJ)lfXwOQlrYSKdUNv!5w0K9knMm+jp* z7;%!^K+Le8{zTi+q9@X8?%ZQacB}0dq~iIRQI4;;aFg4{N;2Pv38az0S60|q{WXa9 z_Y2Wm@0WQl5&2kV?qVdKe4xVDrFvU~3-L7GwTfqDjJl$~p_k&U(hdCmzs5((i1T-n ziuLk@oSE9#j3Dd&OfCY(N=gYf(!#5>sl^evILW+o@=n1k^`xIo=iHSzmDbIjx6t7skBV8~d2EdB3lv(I1rPY@(_HeuV+G6=QMH3Tk}W z9ePD#i(Bl?ozg`y3u9&C>fbP*VR&FBMuBV4klbqOSkTZC zH8#DtXDMO7ARE>8Ol+Ujif{Uv>>^3jfB_lb4K2O%^{w$2`t#O0#CIgSiLB*HDx($~ z5(agrG?a0@#-3=N4^h)^n1NUlYJ)%agLR94rkg9#CeWhMgjyVc|N5R|RGNt84+y$K z-x?`r|FGiiW1r7)O`7x#R#QUDK^c;o8@WhhY#a63@rsG#FZNQjL4IwYgOU~b_@tHQY4ZU=S(~+UI5)7rCBpEfOa+#&o97|{i zI@>7uig+DPDPm{g@qgDl^o!{`!c?&Q@Qnfpi6O|*5#G(u^B5t>5w%lv%brVGY1eRc zKIJR4c(^N1Z9BDSBl*oPXRaSOJ~Qv$=6@*pd%1k&M{rOhV0=(013p1qK7F#nlo!%B7cKdw^|0iPE>U($@*DdbpL=MdencLd}c z4<*ea&GrN;_6E7oueL*ifUbHy-okh7H`9fu-sJ9uLOSCC+2hOwfpJokf+W6H?-9Q_ zIj`f=Pdb!sI{#u_&r5YP2svRVteb&~%cCLR;CY2*zoTb<``1+cl~pRv75#V+X+H7E zT^n#9q*4LW?5V5a+lz^)4L=u*(#>Buxt#{XV|tnKM3>9Gjell6K=Qq zF-G(F)ITs-JO+%Z%7%ZU zdaE#euo`CkQrdrflA8>OeZQy@T^_txiFh`gXhW?`e(nD_zH7!`@t*F#IwGVF zkSTWEt#|ahUCdgeER~)cM9<10OEP?KUE1$iIJ0|{eAc!3BijCw74+~-Z!^g;HnfG9IsnRvndkG+PJY6 zQXHRKER~imcmMjE z0bGRXLBj+A?IzSUE8qKo?c>f;7j5JGR3Fx|sY>2J*Nn+|LdDkbeOIPV0_*dOvi(+0 zh3PFx1A*=h33rOO+y)*w^||{KmZaaz9qSWXqw{LEU$y)sO~if&0Du4e69Aq${76c@ z0#F`sxW>O<{_ZpozD-sqt{>R*{v%Qgz2F*Zbjn62RpstkCd0{k_oZdsy{A%f#3xd( zYwGXm?YaVU#jvde$URF-N&9hj<2}4&dgk#BE$) zwvSFD9P<;6*Pb|hn#M$8dvru4zihP6ywRZUqdm2&&8?~H)7YGjNqt*jNwwvH>CUK3 z+ozgUlSa<0*p-gJJ@6H;<@@@xdAf4DL?{Cv;61F|%}DsnH%m*G?PjGRDn^Z)8NB=PzI%_3@9rdVbT$=(PB! z&>gH!=qqxp&#D{WKNyO#pl^}C{MzE zN!a|<>D@_!I35q5wwC;;ybM-gBVQEDfE=j8ow512pfUkJ^8S9H^CKUTnd~XiaKDm1 zU2xz}H6-p-j6q3RVfAXjbEliC0j;5az|DBG-Ihgg-L_RCJL{^Lf7@W9anNnO4DTd^ z{I&TX0Cqr$zpsUbM(VXhDxl!9N!)9>R#~q$7bd;7xbM_!k6Zrz&T6c_MW*Xs2Me!v zLJelGw`D?|E``%0;%ZZ9t?G~=Km3Y_tIPDM)jf-!THW6eN$PMzB}ML*#MRdpt){ET zyIZE}$?aAM)eUaBs%55!t0-~xTz5}W{TL=z_m-e~QEMqywjOI#uW=Wq)tg{6Twf#N z>aA{-RPT4Hr23H9DHy%#Bf2uFE==~-XAG4Td2kU|pKsG>z00)GdiO1us@{XJ=yqID ziF*%gV=#N)Tx>9V7cPr>H|oz*?Q5?0H21`~_haq`p!Xs}p@NGSaqp)M(QxA4FK8xf z#V|Nto5a007G|X0JBt@4z4x{*OnM)cV!BR&#Jx|sRn?mf`Qc(m9QC;qL$u7DeWDdk zeZU2lINHv7#-VY1V$&g6%lRFHjO5WdscLsI~Jl37sf*L zQ9~WuIMEVErB5`VA4J!-o*73s>4SH)ok^mFQ;+DItxrDD=E-LY7ZrUxh60Z3EpeZS zTN`~Ui?7}KR2vGbGcIwT!FpWL=Y~Q%^chPT#6eo4KIR4)->$&jCFw=ySNZ+w?i^wsN0y#l5DF zZS6IEJ4mr){PeACSBAb(EkoboT86%DX2rfTD^5$qi2F_~v`^o{F1PPgnU3HzOx(BG zP{45=Chj}iEm+@2kt+6sxbH$)Pdd)T#C?~$&DwXZbD-xq78Cb%97eeBE@?|R858&2 z)6NX_JuKb6$tk6Cc^*#@_vMT1c)yVQpniR|9{UY&&0D{rt=aS&(Q2aljWQH;9h8at zjdL5a-{iIit6zgVp87rD6uRG>i=RKQ@cd<3%l%ds*K)r#7%=jnEk#Ax;qG?(?b8v{ z?_leQ>Gx)#Mf$ysdzn_(XX1Y6+=teb8H%*JK@-g9;tCW{9&btr^kAcGiqk z+gWp4VYaEc#~tJ~lM92qrom8Hou`RwQd-S5bKPpLd9+>g)hukS_nN}tU(I@_5^FZK zvB))BiY;=@-ol$5)#|J{UR<3urw!3H#FraqD{;BcP)U(@G4bUgw|`z9b(RILb2jni z{oT1CfnI(2$cuh@o4e5Y|FQS(@ljRR-|${@%Y^_TK!5;Y2uTPbARr>5rAWOXrIaEf zB3dTNgbXG#ac06ziin655rHBiMWhrXBBc~5A|gMEsECLZks?Klh)B^QA|lo0p7*oX z*=Nm}V1MuXywCG_FQ3n2|0t80v(G;J?91AFeJ@2-$!MmiMnQ%^w?P+8NtvsQ=9|^A zXr5)U)o*%U*D}+lUHi~vWDgh6UHe-rch_MlW25T`E2m2VUf1%*ZQRv973nG~ zVb}Rq=pLr3cU@vvv+L@V2JX7fuEutIv(a^zoiXXUSH@%4gR~ip)YDqjl_o-lzk}|2 z+DsW;FPQGo^;@1hLN%aE1WQ(u$-65X91prAhaM*wqeZ2p#NI`e^py*)OQ~kb4GN$? z=#tTm!>^LDrj<*QeWE0#Pn67(Ri|XJHQY;9G>XkjR$VrUmTWO0R>=VcJ_~jay5umu zEgO6fy5wZaTPnFEE!Hj5ewJ>n>;va+9ZY4r6-s5hl{zcit*^Ojw;NL8xo$&~1&_0T zQYE>fZZ!r}&}|Zp&`F%X>c+VM3)T<1+g$syWxNxwq`R#&FRj~J*`0UWkgVF)l&bBr z;`nX{6=Wu90HC|^xtK);0Nu@=7rF_8vec!(9i$ncG*f}6K1TCLX^v@&(hl;wf<~{U zwDhvqQaVWH`qHs>yOvfahka>{JpxLnm|2j+-lwSV&OV`-d+ac{y zy4%?vrL>8<26U+aDoZI`v`+I&&)ApC1X22JYLwaC0&boZn5LyHsvy89`L0fZU>x;sS&y?cQ!%aU7_YNHe4f&}DNJ zWG1N-pv#sj$Pm&6=(6=GrSDXbnIvF>ZU!$T9K6@Z-DN>Fj|Yk0lG)ru27HJ_JHfbCTtPB?@!)` zLCo^-sU{QCfZf0G=R4}w0(*dC%Pt=-1op_r_fDiA0^`_>Po(!q1Mxz}=KsuF4`So1CW!kjmOS!{{UC0(IIdyZDG+Z#OuKgFQV=&N{A$#l)Vju70WZFM zewfQ)J!5P^Fum-H0EjX?R{U4mk3cli@u7MB?*e1kjjQkIcNd5QG!}mU@Zk$}fj@9%yJ*h3zF)9z9?5T{O@u&vdbAWnt&TH(FVZg~6aDiB9u+%ak-4FF@hiGO~4 z<7~IX`Aj@%j2#00vg7&;5CaB$y#EBN4`e4LwK|DF|k=0Lp z3t|+3_+80K5X(dSXzV4TzBs zz8C1%8^k3YPqrLEUDtT=V!@K1{2j!B8}EPlz)BE5In0@kI$ZD@-v|(|E}WZH@HM~?7_P8cR;Vw)Fc_(D<(aFf zO^mA|0E%Ye^ZPM1r|YZ0gY z)O`-biVeq>eoPN(Jm|1&|Futmcm(0|+WSj@EXYx~{;AH_fmoH}>A#f8I^Y zpm7GlYqt+x0pggCCr5g30GChUh@7J90TQbqLH+ZNF82T=K7_T*61&0gu*^pka){H%`rM4&p|R6-9YhxtuPPmPI5c z+`az-;*p3|qkcLH#Hk+hSH>ymFdpgH`Q1nU1mZ-8r^nCJAZ})Oa^X9?idfc0xbU-| zeFWfwbcIu=AL$2T`iQrzdVU;;7cxH9zB^rK++}dUs5j{S!+g-NSYf1~^(!Fef;i;0 zhiNG{25h*uaK=;+t1WzY|J#2AF|Wc0CjFQe0^{0_l{30O?s8c08q+@fm#f=@Af`%K z^&_tj#P1wEeYaAyVC=ndivKWA0+uNt9$9uT#g)cG2z!tGrYk^V9wZhj{3dVt&*(|| zf~Hw{@wuxwD6_nm@#WhO(pWZTn>a4?<5MOcJai^XSVwQ#5cRfMNJmi3ewhC|Q`}jx@Cx86xn%5o!G3Ug` z=Ix}01|Mh&+{+d$*b8Fhj+=geLb)8~$;O=(?^ze6ncevJet+lDCjt6Ee}#uH_L)P) zy$%}oDZFypbrJeFgW?K>w-5i(P%6DGbN{ec|0gLTb(Mm4^-?%Fu=OV(KH7NAsP!}| zjKd?2>vy39;BKf?sNegFHU`F~3BNqJ?ka%9c1Y|}*uT!l(Y0knj+eIh=_SJuW=-Oy z$2U?1U<_!uTVc_eFDKB)3!vd!h3CKfmS!1a8;6lCtJ{INFX1gc_Z|fpL)Yc)^wInb zWuT#t!qQJ4$^tR>#)HT2eHz5Y4uAjY2mF-Tw74nUclSA(B#l2U9%!@aB@la0%%1ub zy-H*Kgb$oOO5M)*NTdJF`+55`4K&PDm^~`OV&pB`0I2as3?iH!;y#tgideo9MqroyuW`#(<~moPgN*FHLI zH;A<+QD=f) zprN0_z;FBh62y=A`|)o~1M%L(j#Wj^fY{~Xue{C101T#3YWnrNJ5b|=LA&A#yUkhs zK8U9>MqjRUff#n;=N~Oa+9ON{?V6P|?Zap1W-SNt;K%iCAEPDCc;Ml+FEu>~Vs3}8 z^tzjNMlc*Sj8Zu8;>^Fe944B^zYQ0qkM0TL6NY!bb+UkNz13p++HU9={l{6_HMmYO zjTb!wzki%+Lcj1S%>Gd)u8CzTiQYE%Jnw?BFkZnlNX%5&ZIhoSL)TK!t`!QGjygl* z%-C~d^&&+vsc|yJMTeiEFwXc$V$p3|?gsI#!$+R_U=%=NCM4!4ob#`G3cFkvLAy|4 z?qj!dNN(AbV*8H!!vJB3EBt5Ir;DjE{Gg#&VTVwFrXH9@dl`kD_8d6pavGys_T2dQ zjX$S7nK3cPm0ygW?Q&SO8_REe^-?CyO~%g}OFn-74uFvqgdFPJdu6Pf`1`zvA-tz}~m~o(8F2qf5#+x22LZLA$dRo)|LhT@VX= z1noMaa7#fjoj#rb?K-XSrQAgnjvI$}{AlKv6dW1LNZeWQ)k7eDf7m*GEyWPVwhxC^ zkLnBJER0Xy@(qnm*J0+NW3Rg+v=ee&prt_Jip{s*N3|LO+C5s~*EQeKY-$`)F*;=g zE#$^^6uTY#(+m(hKRosM#1=?wS6KJbyzc=L zhaquH;WXcGX;%d|fTpN^@-;^W(#L%)NPs8Ko}=}`wFxF;q(axbbI#BVvm3N)FU=o*(C%V|D?%Uh zx?nl$FsZ{S92c_g0^Wbi-+0Nk{E)HB&hOr#=ll>foK!fm|JAfe8qZ8zHR!8C z5a)UP%MkBQfC4B{_{&Wz6kRt8G>ldFXr4QlZgL*9>ypBC&xf`H41hrjpTF%snzLXr zXjrE3r|G*XtaZ(#y@tZ^J#x9n4PccEd}GiSYB0}mnr9Ub>-Xdo5L0RVh`BVyFXX>U351^$;Rs% zcda^mk*YWVG}ZW}bDz-W+nCT}-sV|vfEd%_r?Jn^Q^`Kit}KOpdlk`GcjZuAuW-ZA z`>ES_@@N53xba{A&I7Tr$4gZ|9z@?}gZAVq?6h~~6CnQFc>2x{o(8Cb8ij+G=MM*Q z&&N;8zw8cTd528DOdzk}cA z5!OG!UD;=8)i!pw_=npjQKxVG<=eFVjB3_-^C96Y8YMKPW+wB#!slD(H^Q_l(t?-UMwY!R)G#s?o4 zS4wC7g%=p#L610+^LVvWMh zIiKA|)g2AmGfrXM9dqxZk4Hg!jw_ru?iWFT#8ODCQ25ysJ!q({fy6q6k;TVpmW8#T zVS~bhpWjFmzwyXMtZ4dIDrPWf&k%)OU%Tel0GW`ju-Dp~dI0z-_WHA!K`#v`vEr7e{4 z^2Yu@uAzwnR)B`p3U>|uO+LNE0?^(Pg?%1=^(}zJW=L#PID6GCXX&TssW&OS;?9!C z==PUDyR|}?)}#|%IRdnIw89H7zCp3KXDBUE3KzYU|0RfTJ(izXT1xM96NS$7P7hG% ztgz~~1r!Mx|6^R)s|9a)m(yb@{CY&gFo48*NNiF#_@|p_3+}p`HfIXo{%m}hKCWf; z9lSI5CR(js2PnKz_)y*8pM!YF<9kywegtAsj_rQko1@)wRzkwO+#$3SxeGwMOB7!E z*Fp-$jps1tTsn0x^qFh7ASnA z&26^fJx((@WW9X%%UAK1~t|AARc<3bZ|KS%3#CqV0bL;=YgT(?9$-RkIIh z=&$g-M@I9WBAw-HaQ=i2UJwg#Tyn=VGz%CjZv4|t^O^$8fW&Ntzr8;59%>8^#l;E} z*>CU+xRz?Ku;H)uG$;5xpnaJN1J6}b+jxf1il?yjuAzLoa1ylVjKbxk`(C72s0_5X z56$BjL3=Uj#*JNz9^{NwThNfNaQ+h?j;06S0@}5m9{doC6yXwYC2h*xr$M{VDqNhg zh*o&dCD0zNF!s@qdtD9(bmL%+Eqeqgesd22?H;c1pZ#8@o@fl$aoMImUVx!6LgC59 zZ*8GRJWN|Kg+J~30`=~rkT|aJn$2&~E)F)ZycW(|KJ^n2r+K{cnF#GYT$ez*w8En9 z|GJL8EnzVn{Gh`tw1OKyZ*2ELm`}%sQY^19BPZh#x@!q&Z%>8myHBTnWsK_aFAu*& z%cpUz#*L?PX?Ad(2JJelaLm4MDd=@qf_6_-*gfYwtwZk7pxxsX;;JV?0O`<7;q?n~ zI#oZL!divH@3}F9R{eBK#7nzoQBS6StOM=ZNKL*6w0l1-J!e6C*kZl|XkUTC;lH2C zxuC%;-i57ycaRnx*L={f#R~8JRXCHD>|vnYBkA(KtOSLRTOjLJg%6D{I8Hy-pgkUi|M=(4)L@>OEDMF_GkQ`a;yDP~b41~t zi$9!coA0G-jZry1->;qz7c8%Sgul-_4p0ic6dr0im=7@zfrg_BXK(HL1>JK8?Jg9q z#wef3%?0gQpzy?>=kx}c1k)AX_^*+x>AC~7qf_|KmgO9IZl}3I;rO>7rAXIxmbQ)x z&n?X!4PqIONA8bqUr{K;V?>JZswLrG_W^- zc5S9!wvYA5@KCEZzo#pXgZ7+K*yOhImjDvWAhA;6L*I|vOLbUh>04>xYA5-+| z%A*aV!j=!OxtVG+h~|EUSGRqPit>h8k_%TIsO6x);=&&JbsN#WX_?{eHQ6SRAd!h?@(=fHF# z4G4vw+`jjA`naDuio$pP*7`KnwJ&Wo6n?d!@540SR?_y0##@+`)bQ({^q{HIvx}wB z@DF!?#98A7puI~J{^jPc9-uOJfrdQ_Uwz;!oe6Bov;!)=!hLyBTft6s{OwK!s(ti6-=-EbXf7_889 zRROIFFbFi;;}0tJ0=0yLaf z_)4D_Y58<%TI&>k(qjK#s1n;L4p8{XZ|iAg^7aJn?W?dwWq^WcZ!gf^ehUA+Z|)NS ziT#i`q;S$L4bRYbTUdAvD}FieJNkG6wD+{aNB;3MT7`TUXz^7D8?RagP)D=fKd*Rt zA3$O*Bo-*Vy<#+VW9UbXrf~O)#c$H<-3;1IJ;)mc?VX}9v1jUiR9Yde`wE|3JCv?U zYXv$jPhn)ucnVSHLt?SQ_ip@{lL^J3U1bVCoAnHZ-#Z|&TVc)4e}7MRn+_UgDI9qC zS!x;AQP8gA3TKSEhBnlmQqZ1W3ZHDK_#;5#6eK=ZIOW^x>5lH%EJcW(b6-&G>75VS zyIA4HBdaNF^bG;+8?Nw$>}#7+^+vPq8UFf}cX+Ec4|Li>g-e=teg|=G{Dx|96RkE1N3VHmtP8ZqN82WP z+v8~4r0{f$i+kxI8bEv2D|~Lm5L(AQJ3xDOEBy6$A4jOn8$kPpDt!6Pl4jH%nY2_Y z?9z5P1>e4PpnV$^-uYE$+CZkwrn)Qqvdgq@0Scj1;gdg_bP^zO5E4fe_8WFP?Ym$s zjc|p}-FAv+^?58(iQDhp`D3c~bkOcu3NNf2O;Nh1A85~Y3Rj+guO&d@EF>-{?C{O^ zL+CpV+UrqxF!Jz|RGV_pzG{WPo}M<5YBL>l+AM{^zgK+?5Qk|B&;Rvzw9t8qL3_#+ ze!O$nLHhVPXwP|tr=EL*<|ywl(B6>>2XA_lVg}zx(7rJWpS|mq*7OlUr@0g!Sha@s zV6YN2tWh}Z)=A$|cRUW-eTrg&KA?U56~5W?7Fv>hD?$6#D10yP9IXfLwV>S_6i!;` ze~&(%1?|3|u;t_9-lhsH1MOX@@b-6+w#VKT6eTNMaOFDcuDEo10oDa)$j6LapYrH|F1A*`^=>>XcGQLAXDuJD`N$I;s6+Yj1zNMYjjA8{zP z0Cd_Cg*%2W{R==V$W!<)Rlbgj*$NtVDC`*i(M787SkUhA3Y*`ufDdUEYeC}Xr+#r0 zl{$`Ig~I)>-b(!|Z5FHZ;euVgZvhxYv)kLn{l5Vi4dWCx@Aj+d0EyL*SgY_?J71vw zkv0c(+I)pw+I`{$Xa=nm4%~B|w)d_Ppk1RCj=bk2A3W{^?Rs6|SBv*iWaAq~Z%g6H zm)<-@-$p^ZrYP*yFp*X`&oI!QkqRGw`!kBSyfrjuDE#fY&PxFjXCQG-;gnZ9@L}*U z&@fWrV=L7C^wVPgF!!nbFxXFTK$tp16&{B{weAC7|d9amTyI#1m&Z7#hLh1VP# z`2s+H7^v`@U+=pgAh8J&TNQ5l`mP=TiHndxg%3XXIG^E-1nn84@Xagpc}r4ETMLDi zw>G69!nX^wj~2D}=h4Q;_d00bK854c@4JK6;*GSgpk-k{?JE?%e&b7w^ZOjM>%79U zDL=o49(WFD_k4x-R{{+O?-J17 z#Y7bYDqUqPgNxTpyzX)OI1IFFq{1Pu<}9F(HT3!v-n=@4b0KR%`!*>2=fabG2$lsJ zaulAt`BaQPj$@Tz{8L>zg+1-|r|DxBXm^f6-Sbjk8tcnJyH`>16G40G z6#n6Wy^7{|K0xb^6bCG_L%puM{ke!2g9 zio4P(S$Gpa{#7%^p$!M^9i?#G`FD0wyElM_^$L%DGM=}n>p{aNg;(4+p1VySRyW3d z_xGX2-Zh4GjPcEe59iXyHMFBrc(Sl#1(n>Ef+~fF?)Xg?`nEr4*Fc4T``6Dt1V|i! z#9@Um-?5X1g}VW?d%Z&M=MPdPJX=6}wkv$Hto8HscyU%o#hV+pa_(~yi-h7YAKp?5 zkZ6F!dWByOdTcR3Vgn>LEBwX%|9lo8aSjp}6*gRxmP@s%1nr%u@Zo0Z-151!#Z!3j zxl&#aCerRq;aeT8{V>V2?JTn8n=BilJ>ps;Vfy4(~gz%c40ke?xzPjw* zKhV!gKvTD^`tT{*pTJJg@VdgKPaj`P4{-*x`<%jmpBY5^anF8M491#P#^+Y@_E zJ~-YDkoXofD1~?LXvGkky|l4ZIAqp4wDP--fOdVTaQDu4XlZpHrPW{I7Y}sco$ET< z>?mB(>orCoYy$1ws_>&9UrT!w-(JwZ0}2~ne1QX(!z{Rqc-IZQCm2nWn!>kNex_-j zSweFSy|hZ2YZTUO`st_i_w}IN)R{cHL3{QpT!+he8T7FxF%JFUloz0ymj5>w@3@Dm zyaKdqwZh=$d_KZo4BE9!;r;LaY#7zC8E9`Sh3z)pcQv(zkA;2lj$gh@^GMotpwk8` z>~y4nMr>L!Z7dX)-o@|@pw5-9aAW47E9v7+w1_Hvaqc5LL+=0$yA_W5&c$zi4{h2M z&KvR3ENZ#Apxp};-txraH|X0iEfxwpZ2b-IHCM8@HBR}4ywMP`Kn*+Zbh10@~A4;g?^Jq9Nw$N4;O+ zJEQMgOXEEov^SUbZp~=#qHy!*yyjH=4A9=$3a|KC-!G}W#h^W$4p|4x(Q^+5oi;?_ zq_O+nNDT(qFNCRwuc+P#G~gj9otmKeGAtOf1aKvP^Cw09c) zV=is4=^q-jk1qH12kje3|Cnn@RcqfNiht-I=PYq)oi>2x5{2(}zL6TplTX`Jg+KDW z%*SJ6DG*lp;{M0D&#VRwYZW&6^DI8hy9gRkq3`v9v__$0FKFKYh0koPVJQD7(5|rx%bsmc zyC8QtXm_>39iM7GvmOB2H%Q@~k;8-NoeiOtQ(S4d)1DIo=eJ2$D=KQ`V=#HaUOdo%8=OeGux2-_?@)W-Q@u2op@>%vXz!7`T@!`c5 zRtCr4O`ZKWYPyl2)5a*A-?2OGs$Kg)yACScxPKANh`v0~KEJ~3PYc(2DA)$=nn4Y? z6|{Q?J;h$oo&(f?ceA279`F1Ng&nSQpj{UgKL74dm<{zIX!l8luQu;R-+Bg8Y^-ow z=%2J2dC!CPUZP^(W279He1GTBCz*-BcvgK!H^#k{E z%8}9Dyn*9PA_rO4wNH;Ks^b(G$68F<;Jphc=@UKn@J`Bml=a0ZbN z5t)(22~j>);;@hp78qB^FdC-dabAM)fQ&t7C;{WAtcpL`Q1M3&xOmUU6C9r^a16+k zJ0G&}#)|iP90oAogE5N?t>*=gqbr6LGuw|3M|g9>gbz+BFhZGQLH)WX~xj?p+E5%uGwBl`sg14>mYNFbAQjG6F${r&97Y{88k;dIjEiU15yR5?G@ofFjND=*7!x^} z4#dZyj5J`-I&akZ;DSL^yshISb`Dv1r^dh@j@_C2#u;T!f-$?o>Myh@<$#NK`pjG4 z!yMir^LomB4&Ej*nTo-ZoHA!^(^#1wz#%f@q8Z`Jv`aoD;82=jEsV)y zW)g2|85hI3ed`vx=Rf@tXLa~|g<%Ao_23jPgK-%y!YL}wZ}FiPXSNwg$LtJ8WESJwIYq$dX}ksE$dGBYoN8q-uhk^90c3s(2gB5!j3_X38rgb{GQ3sV`1@^MM}krkD%NX${7A zGab-su)^<$zr_GNX3{fEmdWP~3}M_Jv(0%^!5DBR7+4+d{9k|f9PiFJyTeBh45Vfl zGXv|aK6GK_=uXTT;Y}wa-Z^mPX8Sut{cBVXA9fWq6Os%sD zc=b|dj4@6OrQ^Lhqqvwf!KrdiCpEq{?b?+~nP<+KZzhQF!5wc@nJ31eTh2W(*psuf zR^M$sZpBh2j9H!avuj>^j8CALbH`8zhUT&U0q@2c>&7SthO~0(obd<@x?x@qlLDDu z%()*&_g-0-zLC$D7-Y%-8m9g*0GIPkobBL4IR=R{e3LOm%yDP3DW9b99-i@~j0|P= z6Q6T3!jlO^oJVFHKBL%}6wPP$40&OIG$VsJ$I6*iPWdwbhe^TA9b_CKgZr7W!|Yeb zcpLr7mA!Zm$_I6v+~R{=hQBeBoatvwptnY2=r`jZVR$vuGnrq^DG)vvWzZyZ1eqqv zX%q$kG@e=x4xbof_&!6kS&xE`FIbI%5veRZ!IVquic76F_24`yC*zs4!$fM%F)$mO zGh+ML(KU|iBG;+H^FgP z^&)lk_v7D~##Cpf@GvEsvAj%LlhlvSYtkLXQB#IIhlUXsct3-Gt8M!ESV(C z3{yVoXS^YAbsg`0;KiALVTg%iM6Mmw>RCQjWrP_Y_A$=eYS*7PeL0IkbBw~^vmM^> z^C31P1bEZlxX0gm;$}am%o%sc@GM5nan^xZeyphAn9Gyl=#EcyXC}ZgsgPM0Oc&zR zF>?|)+s))&PSJ4=g7qypx5~sa<^(a>m5+8fhiDD>1y`11lZf?~|f|Uo-ER6Ge>dV4e;W37LJ( zuqdWIjUo;d~Y6#+h)))NGbjv4YS)%zAPbpR=$A1S946q>{;H3~%F1 z9jEg-NymgWJ~L+W45w|GjLc9ItM&~qzVIZ&*Ex;IM?g&bWeyob`Z&MD#0YD~*yj3U zQ>K(L{>myP_R)}g8HmA(8H|W#KqP0q`LLYzVEAy90pWZ~%h*szD(?8@yTy#f<@^I5 zVzQEnW8c5;wHLQC>6F>7%sb-aEtV=_1P0>}naIK12nL2RA&He@I2*>WDHh~mRySko z7-+?rL?#tkjd*jz)}EXVWyKuEA}}tOQ^K4RXS4+8x;fR$pbsY6a2}rdmCW5^ekVib zm>0X7}LT0R!(y=R*$)#7U88A^i#}{X0Z;Yd~@QONg|xOV#y)~ z0Wf)z6$~s$(hwM~7;MTCAPkCQxf!P0S%9U{FitT!*&-m0gL1`WX$BXw90|)YF}s5E z9((}L0tU<#WKa>)gBcCNh(QKGT3kj8Xk%e~4Gqzd(G8~E&?O8Y$#CHfn8?8Pg`3Jc zBL?bh@b(6_C$u1D9~;=d(M&Kv2!qKt2}?tCHQZeTDmVE{BZXox0S5kV_+>_B$A~`} z^0>h_8FdT8V=(F+2CZ)(dqx4tP!J51%OqnBpvN$J4Ta4JU>RJnVdNV92Sezwd5ne< zWg(_a`qN-AOv=F^eN1N7BwY;r$$%aV62nf@*^(?avsg4RBs(SPP|*SqnJzA#X3 zTLc>{as!g|6(*bjv;|%-KtIu^5ss>)C`F9Nk(f1^SOM|~17C8dLRc0gy9hA|I!*+u zgzzLtLrGB!*ickqgncLpJW&-8oRNTIgnumBW}?s`j4?@NiX4G}zXY}+v;jeV3cW$F zxDM`|0W=8+R789vaVTJEA+ZYhM1;E}p&~*90`(Im2f@S&n^=USM8`w~lLV?M@*YA$ zmxPn><3xc?;KZUmBpFTNxd_BegnuO6B?2sh#Ss3EB%lSCAqaf|;fm~>=(dGD5P>v{dL)bqk>hbtWDS~0vh@NL6Y(2C1q$3s60{-`B={py>Jm1-@Unyh?I0c+ zEe(-L6Be?_feBVk6d;5{B?v@;^f(gdk}EY#0f#1p5sDN3tdoRdF*HQNM_5*Zq7}Z0 zh%t)NjQ~DG=|glIL{Ly5Z~_()@}{uQMTbjZT*3wwR-1z_BU)g>Z4jiPkm`g7AjBq- zsSq-yA#n%`MBtwe9+*(iji!+xiA0T0a@Zm*B-A_6F%WW#2o4C^M7QDV_c!*MvP}YQsDriYjco3AM z5Eq05D9VCP;<_bZBNCXRo+#i+A?Jx6fbbQa#9qN(h!~ztPB1F0f?E-_OOZ}92~iRiaS9R96zxw@fD^G&!QBhlMQAso#v`N#K>-VROK>eB z1S*6vktK1^w*}HBs#~IHAgEfAloSS!sA-6*r06CXRHz{9g^=ce$r-6Zk(zSor3s5f z@Js?>F#vDjy$Hu##0rHLD{ZOQIs^I2*MB*P^Uvfz_1WR^30)!WAt7`h*Y@LB2XaYBq1jX^jffQPW4tHqlhw( zh&c+i-%>&pDFx9*7U2_-6c);_s4|G2ut3K|?MLLKg!m+k5W(dMw@1LIBBvvQHX^ei zTux!Dh?~y z0TsChkz{fR_a?E4f|nGrNDF2s5>LY57qJLIpo(6BNQ4PFR7g|~_@jYjiXNqiREy%W z@IXZ}P2lVT;S?1`k);uamdK(Amr;aakN|+cT)gtPoB2p_vE}(2Y0x zIUy^@Zdr_;~R&a63ou zt5l>WMMqhf142_3Y`QROg-9$Sj3OQ=?gT;u6Ipbj^NDtc$UzD%P1M;1vM+MvB6H** z?i;R>s6LAvljs3C85EXil2E}!K3h1CB2*yKlcJ9+!s4R(A*$uVT^3snQDGKC01=lE zs-{rGMRQja%Ee(s)K5jEU+4#7k03%aLgo<-R#AcxVyiIVh1)7xuR^&J{Yhazi>|jQ zH#q4i7Bfqf;e@3tEDKTB7P(eY&=E?f=n;z6m#Dyts;kJLI5;pO*kiO2#K=O#%0#b7 zi0Q&<6YCb?GKq$pkh??}UbITZi9)zX;yofd@gk=n_5z}lBxV$%)g86y2E zbTW|}7t)T%SBMt2=tPQ0l1Sc)42yVl2#-hzY$DkuR7K%DiTR1>tcnh!$UTZ~wTNbm zgsHG)#Qj8s9Yo?tbRtE5QS@g-`&5i+gn%n*E#d_vqVgi|BYH1FY8H)C5quIttPr)u z&`0DFL_SQ|>q6ldfd`@J3rk%zD?}?)fy9nSlxc;XDdcAn ze-dK?@vHgY|NVdWzw4v%P%Iv*=+V1puO1aO{d>lz#Q#^{qgSt9z54a-%m3f2SFc9@ z-@Er!{jRqEX8pZ)pT2$jDF6TJdi>yj^|5#$s(SVMpDm~H!~Or{zj$@fA25BuUlXbb zhGRj0T{IY|Ew2gs>Dy2^9t_9*kt%<@Iu!F)Mk?xS=?|fpKOXVN;(@sJyNXD-GQ^I$ zem33pPp%GCRQm&dm+!AgIuzM|S6uMWh`#l~FFZ`lg^YXhNhJP-=U z{IN)F&>sudme&Nr6+xY?Yl#8hhP72mU>T0FJLAm?n>QGJ4KOrxBVYl5+uzoI@CkJJXD zQ~gzeSam28_Se*46|D4^PyOKr8Y+eJD!rIU+X=#giSaQFE5p$NiCT&D7)%YU`{g zt%%gt)`vs!ss2FRUqjXL2Vyih0?~VdajT!z*2n0k0jquK*{h<#V9iv2U{WAdV-1C1 zARM!P9gf(|V?AD_yqQouSnChPW5F8g23Gg14n}2qsR{;T$%hYx{ndeRWsN=P&DH)u zO)TQPUo=<|stX0fap_+CODZ!Obd3K{+)QrtlUSfOW!j5Z2kGY(!4Tg%?(fY_PKEHO zr#CSnG%4s0Ob$$?VN)K6hia_}QSKXy)JH3V^tiS1r^X}Ao{ME}vz$Kt4qJ1-Z9{53 zAJxO|G(mr$rp7Ki5)DlVg#$H?*By?;LlwaoS2qxgMJhr(8B~U16*YlSEsgO$@?e3w zx|*r}^7;w>s?d~R%wHFY#sii=sQC*O!`9!IO?B+%>aU7MYOOI>UtSZc@K;7??x)ct z-&{VKB^MRPoMEONYFu{I^~d7W+j-5gjkABaL9dkO;hIhk#Z1Xl=?iOyxUAJ_mI_bh z+g;w+p>Ql1jZ;OVk=jt079^`(>9Sy;qS|j6Tvzgx%gZSB(dx)#Zm`MKL2JC)zv6=V zr}Xs?yxa(ny^M&|INgeVNHG{s;T4f^ zRZXZOZmp0%c$pQ0@!ZQ(UU@LtcN`tbAMnS5b%7{N4z+x|TIRIBl%`>_R*tXq6`+z-6zpuZ-NrQCc)I zAsVQS{m`(Dlury+Q2SMK?B;kLo_7CljV{OS1OKt_IA0Ale@&=7%Hbl1UGd0-AU6a* zZir34D^mKT^W9LzlcOjSra6OxlZbypF#f}>UCv=uZ5{PA4wsz`E^S;JsHhHwIb^A{ zhPbsPH4doh_dhUvDjYZYZ@aX8!w`>;XfResODWACjqB~a$`Qf;$C6XNu!an^cH@3( zmt%F)V7P)K2WKP48nyC&^M?K}y@3De?tYbYcPlRP2mVuJS;Z6W)YQ8)9t({N3s2>1 zt%WBNiCM+O>g#A(|BqMmTx3_rzIW=Fv*NYt$YhChFB`IrR@Mme%Wux|#y|@?cGbhCzh3O11oUCIrL5sM-GoYxxmOY#oc#R63fH;(+9r z^2RFd{_D8a)&2^8$Y8X_AFD5qMrh;UY>je`v`l-2@8N)s_Zf~ttf0|z}YQQdP6AY57bN!OpQ^EYeR8*sMH=}P7p3%U1I)VZF#U#e#kq#V3>9^ zkx3j9#^b@-I{uu)_~nHwr97I{f>Y|E!5Gixp<1iMP39Rl z9^yHlVnLcX?Q3d6wV}Axb9gU!`8B*Bk5Y6V51H)_-Lxtc57Ui!_T`Qls;I9CME!O3 z(YlC<7lYx-|F@6*i@;}_;1gDd-v*fRq}84`R`R%_WIxFzyDACH!|^n z8zAG>AnmJe4aS*u=>gxU$UVVujA@s?A%R$RFve`ljGt5oEAENa*T$H2+06bpl7g2Q zB<3llS|=WIK}rdU*-H5n54ypXn61DCo>9RmamZ5O`*~GWEEoq5U-pOxz(Y6VTlu)O zriov>z{Pyexk}|H9;QO(QX$@3N2K=Pb|FO#Ys)z-!vVRcyU0rc=4= zV?m2Oq zlp$#Xi}#aek_8r5$5U5RAG7E-=7xJ5l|Eos`WW3Na8J;py<{dg0T#8TY093=;-WNh zBo{1xNb)({{S^4D1AL2y!FO?wvMb>p%iY&b64|VC%DR| zTI2y!)Y{Ze>E7t*l_8iT;@lfw#j;V=vhrt!@`)S znbd}b6i+h=4h!#{<&lb7S`8O9t?&pNN>7*&SZghxodfqeVNxMKlV0D`LVaH z>7(9K1)0gjiUn!)P|RaNPp$Xk9ihNyrCKZiDL1FLO1`g2eShA#FjnrGXIKI2@Ci&Aa^LBirCXV!zg@j2nNhk}e z;)#c76-irS7qwD>&q_;K;E{AYKLa{#lReU4|9Y&YE2F3wBz>h zNIPS#hdS-Nf^<8X1v>4L8HVYZ&IeD=HbX7lZ+~BGw?KMXYS&8d>*%)WH20U&8&0Qo zh=gmXw7cy>s-=)H7h;lPpwlN=pRLpw=yaM3Y0^qxsldx86rj`B&>v%<(>GcZMfw&6 zJ}YqsI(?hWbm@C&#;>P$kbaPddVuP7OztjyBmJxbpLI?TI{l)83^}a_o#Elv8lWX0 zqpg&lQK-Nbj)2bSX%~~x*L1Or>*NJjg3cIhkFAW6_PsO4D)5Bj!CKH6 z8U;QpNe4QEq9RV!fzFs~Vj7*X#Jt1|8WUAP>O&c;Q@TjTdNUPd>`;(yr}IE(?3Vi< zPTv1R^OiGCEARwrs6%C(bv*MWdFD(H4>mjT2RgHv>9CoFcFCEgQgUV=yUv-{DadlB z1wm)tU~Zdvx5RZivr>wwqXi*Aqat%kY9OdHXK{^!RPZwH$W{UobmnTi(9H^&P^o)XZJM9QM^MV~m#y~gmnP+d(%C2;i zJOw`M>=$&C0(w1>Xf5a_z3iV3ke?1pStFYaajua~#@fH1DAQh(I_I?4gl0~&_Xgc$ zo`NQhR3_*q%Q-f;w)mi%Y?61_WVhWSP4+9ukQ68ACWompXvS!A#=ie~sqZBP>2~T9 zbe2jT{#iK+(o7l@bXKw5tXchN0hN>}=&XTOz+)#yL1&Fp0DVAb)z}rwsrrZdfWZn{{)q^8Tvg%l=oXKmU*o2Y7jgH1Q^hKlF^rrXSf(e!m|AemD@ z&`tMA9Z#fm$EIhT-LWYufGa^a%d+24vuyhfHEXLNL(-n0oB3%n=0q^)W_=ZSrbgZ1mUp4C zV3huB)`@026l6$p8FaH<3Vc?d1>NkheM{OO1_RW@&CXcUc$la0X51%ukJa3xAk8G8 zK{uz}Qgvi9=;rx$cWYiu%WpNsmdzz_YTn;jUh_dx@#Z6vMURytDpQ`bc}?=?Go(b? z*H=bBH(zL0%H~UHr3?mW)oZ>&fjbhWQrDU$Z@$rfTq`vKLcVvJ&f{vzPHY5~>89z4r1)$lhdvlI;Bod{)98boL>; zt|zE;s{LsNnaQ*k=xhoZtVBHM79R8a7Bmf-q&(;rZS7`hQF8gMTl6wPTZ>^<%eNRw zi*8^d7c^Qynn~P)Zc$DT5u!=DMN}TW#dP!NE#^>w5w8Q?f*PT|9(0Q(6!X!uv{-J} zZMA8j7Hbux2js=K*dVpsnL1Im*yEU}S{ySi)q+Na0Rw<;aZb8Oj=KCIb23dA$&tu0 zrz~Zv$?5ByYI1He9W`gP{61xB$f;BS<)Cxo_8COZ6#3=Mlvy)pZpwwrB@)e9$NM$f zlYq|IoP2;?3Ys{82cUEIna0aGsUXV5A5E6=XRx)u3DVk(bqan0?#Uqf>`o>$@F8uXR)b^ab5|rakYso^7wc zt>-s7cWb>w%3No?K2C&!ZoSD2t=79`*=@boIYe69CkU-iD)3p5574d8@XAeZy7eV9 z9CBTa-b!w|1iQKUDZM7QMBZ2K0K5LVH<&J+JIt(Gxg(S7R_+*k-O8;rb;ttn6c$dP1)$AZxyQzomT0rp*%EE`S`%xVqqNrAcofiW_1ns9-!^5oZ(ErxKQ8lh+ZmTH zG;QZvvvJ!ssnu`0)}D~tZnvkHw!2f>q3yoLFTCxC$=hDE_TZr?=ytTgr2ub0x64W? zt6hn+P1_AQ6T%myC9DDBSLVbB=6x zgmzy^Fc0W0!TVr?SymeC9O)1Zwx6Rq?dHbwsIxl(TpLaYtP3N7t ztRLrHylk3opDi_RZ|Amj`@X5ubo=WZ({%e03g9Zx?eDgyx%TDuG~Irp0-tpv1iF3H znwi?qY;<yrD|wb zt%Ju=wGLT!`5p4?yLTwCFX~XrKaE5v?&=`xc!xo>9kL)#pgY)uy2BW$MTe9WP={(M zaEjDorXAaKnCq<1LaV7dtd!cUmfNmNmcJ>b{OyhtwGR6fq!}0$=nhBa)@S6_=NqjY z9ln)K*t-BJ*^|fGB%wJ0b`DJFc&hKl#r2GNY05;GIbpBvzvi#A`Cd(gho+-c1s(=0@D|W1`r{E%gnt8nZ zc{07{FQnyvau{^}as|*2biSm*@*AkDSx_<1`5WwME`Nt}Va|U&xiIG+rY10;DbV>R z?D||#;AJ=&==^WZRMW|4=Ce*&R2XMSRgmh{#FVy1nLIbUo5+I{{Z_%_;0X> zm4BGoM)*f@n!JX-9jhSA35Nsiuarw?$fa}aODU*J!sI~vm&ic#Cx^d3B~|F(p#ZK1 z?cZ;O1pb5OrTP!kunILp=XySm?f%czD=_h_|cFUc!?P1V4*RE;jd>Vrcx&z&r znjsXX2J75cs?>R)vr3(ZB#-7gkFj5K=SuUKoogB$%yo{+1kib|d5xVHCktPeQut~G z&>wW?O$wSgAbg-ZZ?Ui4pS<=^%C*Tzr}J5BfOfvrXcFm+m(3alIVRIlP^Q3V0slZ3 z^ihx@@ITN6gHq;}f>AQJ6i9Bgpw8aM7fdmgEtn~lEtuo1Y{5eNuB#NJ+n_eCi!O4w z(Pc)X*V1LqWv`{n3OO9=vc+!KE<2Nbugf00?{%>^`CX3jv|%8Qpu5-;WS5Ipf9P`g z>n~KMdWCt?9)*5qdlZ%`fNMY(O2VUXpaPF|NK$AY@)XK>M`5G=Z=rMlTNt$`hC+!F z3g?>o7cR6~trB#hz4<9zr6A3KDnS=EnDJk@#aeo5BeZ50ZkH*Z){??~&ICZ=hcdMn zo=raErIh8g$mLAJ6t$u+4HOe}Q6YuN(GcCZs2}~%f@Oj(8mu5Q3C;vvG*W@9cQ4RI z)pDz%u(LUfrkMU&G&f~P6)i9?t7w(|g9dw&Dq5dXyUliBSG1cN$AWi)F0xO!ijFBr zGq6q2MJE(wCc&Gai_R;^5ZEW^;&f-}#T^u6CLy4pi_7dcTRhlVZt>7Y`T&tpVp~*T&j+V1vg_SBXIu_3U!xn#MpiC|`lszw{@{a;7edkl`{K*z zhdIp0AIhtl4x-P+t}h@mTWog<#>9b5Lcy36i1E0{R$EHKZ2AYHoGi}lmcp}`yIb0@ zYmhjH8#5A8m65B(Ya*@H4y1ewi*M`Z)DR|Fm@1Z#0esE&xSv4hx&O^z}M0qW#>N- zSz-431X0^(H%o`Z@C)xxq;@f?#O#9NaB_ZLdw&V+O~TfsAVve??QQ8^ipRC3XNcF9 zfA}nj&?OrSf#|d0JIxkwSG07}*p|lO7(eFuK{Flp_7-2N6c=G zAoA2~APAxW%+78uhqkKG&&0u*f9M1v6Uy$pVEjbb4i>~ff<00}+z8lG6GS|n9cDl@ zu-FC*L<^6dd_XkU*oX&2@{B!rlD^7pvI=5Xz?PpNLhx*r2_j0)rgBD~J-tsp)J?05sBtHrLHAd=`mO8)h?p6B zo`NXZvneTvBs{xig2-=+v%3h3TB@Jy_5-3H#_p~TNBalP9;N0sn#XK+4Q%IwrH{RF z42;nV8~=h>d9Z)3!$be(ymV?TBOS`##UL&yY!wQkUyl7A-!czGS)2_sK~%2UH3~$} zkIkV#Wck>z8H{NR`(uI#Q?pSch|;h4-Ww0~C3ieSbuvnQY$pxI^oCt@L3|z9%@)M- zfSpM}QKmPjzWhJr|Ovo9lvxGY;Eg6OTXT{MVM z4BIw?n5eLa^8dl!o5x92o$LPlt!{c?9vf(;O@nAiL_kDPV+c`$2{DL>7>S{}dpBKD zUDc_oW>90)I1to0iy9?rl;Cg-L4!t(Ax<%h#26)-s8PfrVvMsSS?>OQ*0bLI)UN8r zd(OT0oclYU&*6`l?ylOy+H0@jeV_OF3P~ftdM0A_{Ay4QAfV8Z6pTNiX($L~LQhHn zzD4mvU}FnuI{?8ZV&490BM)S2BId`g-pfG03(!^oYzuKcpq~l7EdhTMI&OmfE?`@M zbS-4n08cFh!vI_;bVLORQRvDF46u-+0P3y~8vs_U(AXVlOrf_g=)*$ZgIV;2Bkc>V z*3Tdx3T;wB^AdUj0#7f1Z-JgJN_YazuSc9OLWV>HW}r2>n&E=QEF^7!11EIw1Y%8S zMhQf>5QGDcrqG1f%%8U2zBTH23#6pb_ZFaJAz=b6R-vgkX!ruu7tr?tt`}g`LUalE z%R-O^fR94wSK!tXF^5rghy)!?=(z~wv5?6C#<38#0EVy-AOI+@(D@!LTA?92kd;Ee zTM+hyo~h=_+CRJ{AfJH`FA<0etZ^Z22dHZytOS@+q1Q1`h(Z@x@DPO-vf#`KT`>W! zt#te}5Ymc31vNbfw_lVz2IRO9h6A3f(4g8(-f+ae0@fP< z)GjR*gaLY<(4W(MZMmNkg`)wsETk8J?I(051&dGU{t4c!(9GKO7`p7%gk#YGAZLdB z=-zWh0cM~{3sDdNq$Xkz0<~iXaad?c55l0(BNgydp))c-{z6O_!0bX)k2!lnFS`s; zS9$oWTB%y_{c(IdNZ@}rmqTUd_XrQB2--DV{4vCPM;#AshMX_InBNa3J(MJSLh)Q z*sstf+*Ew+^OJ;5)8H`*U1EVW7W%UTP%Ly#2M|~2&<#GO(8U-$e<5)S*mxm>2heAs z!#=Q;iI|VPI{bnyDRjs+yUx7n*P@_4vvkJ(R|tt=U=j;W$^k?cI&oHZF|3h>A=(%LW<0|;ji`(FeuGeUU;pCfYxYceD0L}gy;l-KZRDw=KRyoz^>4d z;7r4DXV}N0fG{A{h3pbAqJ>8EX6G+{YnP{rY68w)$j|}0UdY4&dt3;=Fm-cpcw2zV zG}qqV{Ca|jM^G8f&(FN!7$Moq%slB3ySr9?6%fcmUv*%Nh5qJ%mkMp20pb^ufxt2q zIy-|=Ds*8sW50OlW1JyCyR0v!DmmzxJybN0j)g|qc16c1U!5p;KrQ!)pP9h zq(}?%$Sbo(2)SwI_~p;qt57Zy;Qm5F5ZL@eK##e7#5;Qli9%rg3&B8u_6tcp;7be5 z?agsb3+)3{)}cA*H_JjHWzQtXjQygJTL+}NkXr#PzmSy!9=;G319-WR!T@-=ki1~d zc;J`)MM%u&JM+xS8y*x=zs&BIFU%6MWkC29`j?v(rw{yCK)5v*4{NtWE*P$6^`i&23u%q! z_5545S(N5yc5MCAwL*fQIpw4uR|rW>=J}6)f2WWd1TeGEdf(K(SNDMcdTV}t+r`_3 zh)Q$Uv9IqdL^GPh|2F>yAv6&vW}#6&2+2Z!c{5_vwv2#qYyPoy^;%I@t9h)V&2FN| zT~qRqX+QR(kA?UvQ169E3}A+ZCg$d){RTWJ%E2}37afY1(h&~LaYudLZlx4UXx=#a zIlB;45{vovX@BpNh+|kB8U^5Ip_RS~{@n7R0LW{0e)%;-jT|)8%z1F2y%J^bnREWu zVW(Q9qnTfS`TaA5SW0uk<2xG?F{GSAl>l!R+R&SQUb*#n0aMug?1(je#NmF;hx69Y z6-Dcs{ZBq5D@25vz4!Va0&x!h3Nm#fMs84ZfAjtirk$IJfvl8XV-D?Tu&Yl63xS6% zqz;%zr)}>k#K)T3A9u5wqqmw@k9!R3JqOV=*L`&1JwgPXF(>Upl-uzt%vuxVs9Ac?;NJ>4XQuL%#=zI3I6?+MexR7vQo?E;9 zL?H~->>B-n9W@mnW!|fuR4=6OnCY`8*j1>KSIkG>sOuDh=uD#OlrsbnZ?kLMQA6ES+7BCE{FHDaHD z0$vMMRsgPrH;{Ah>TXDc$bMxOuAW-A*wC3sKFC8c3 zvjVFx1e2I=ox6FWC|ulJ_4(yHMS0%lTbr)2+ZQD}n*~#rO%@V_&A(lH-%A4UyLn>5 zjE@CCcC%*j(RTg@;@s?7yRYrhz?YjP`_^H((6vn?fL!x$4M|?ao~3pr-lzSJ`EwqGDa;p7;)8EDlp{oO{GFXdlpJHux_j@x3*oh9!}gycq~++6 z=96=Nc&d;rXm-tf*v=`6PcuVmHrPF?5_HVW=jY!cGQ+L{I$MyMQbx0R_rnEtA+8i= z(>nJ%Ul+2R%pPN|(nLP>b$yKCod6(W_*0cYK1 z7Yj-uG?zcI%NLT`O#j!%Z>Wf&qRAvxzMgsH@Lyno<_N+jn0Kb#Whx@pTwJqok`PN| zF6+^}LkIvhgEt?vD-p+TIv}Ij>mQqu#dSzZQ|LE#n21-3T*#+0PrY@x-KHx~&D@jtX&)iH%$#t^3-<{TROYkSA8GrhjF(U*dgk(XpBUIH zMtdjPn+(|^3o-&V7WsO_;StJoFR9jU3I{y!ZR-Zx#|u&Ccr%{D%;O zXwH0Qo83Dq6V1%5xyRn1Qmf3MaW7sZ(kv%=X7}E|pCHotfOJ0UneAuYX?Gq<88$CJ zw^wr_Mut@=p}F_Cr|b?^F_Gq(m9?K2Lg>r~b!R^z(z#VSpYqK4qdt3z5VmcaPy6iU zi5PHK(SzoLyMBWVqyvtcOPZE05aQp=5B~Pt(ITB6NvH8l>#Vb|LUPb}Gw-DASwhOR z*)eDCAB3P<^ZBZK?ZR3)d*;WlzhFl)1?ijAg~M$hSJ1jizj2?P7ZfXP4!ZFKJ8CM_ z*9=*F4W<}Jxisf|>6f=B;`l*_7Brpxe}e(faRtrsd*5X{wR}TDS>lY2~k;ZG^zX48*%c!?M@SwX30*)2JHaK-kThsS?= zw2;zfwvK4HM`VIsI{b3-iPzeTngbIpGiAY7?zTUkB%!o><{NccyHJ)0oYvwg?5dw(Kn$Mhm zu8?nQ&i~eYMA#gZ*1Y!IL)VJTlZBpnj&s=ccq_adi*GcD%p1G~&Mcd!y za}wHp$>P)(-WQoJhj`}iXN<(g@wB@ov8R*q5OJ zaP)L@=E`H9NyPcYj$CUF-uumUB8SLq&y4@%st4@x+9kBh$Gf&&i1qt563PvpnR(~q zSj23QP;U3k4JNlrNQ^a2zpA!xibCJahLOANwp-be=DcfPSRm4Qx^$l7ndx`!|FFHV z{&p7h%onRi+uK#7w>fRr>2^3)0Ik_MXrA3BB$mMY%QWp(e?THmoOL)@v-RP-?1NUw zpLzb(C5T$Ax9fM$?0-{swvZ@q#(#3u<3jqf`EBly>xDE^bIYx%`$P`1+rD>aU3iH| z=k3yYr)U1+HM}d*`KWYm^UTNfSAWf(V3LF~%`@Y-Zb78WQ8djTwmtDvAfNVH6oJVPc|ZE*-ubv#-Pdn@iu@YUeyfznj5_&$ACsiI`^b1=-_-7-sXvfRF5Y zNKw9K-J1ts%j`I{=E7^d?+Wp*X48k?+*hRY9qIhYGiz)1g^(^`mnWV%Xu)snlqKib zWv*vV`B@M9dMPvCT)*n9KMKi>=Hl%)A+F(gq~_s2Zn?mI_jb77ncQFA-pk(4OLj%! znQLngo+>29o8QdZZ2PQ&pv}bB&+aWG=bKyq@Fm+ciXu0QPyTp?5O8fi{L;R5>7nRg zbJZK0Ul8ehUOIPprsc(J?b<-@kx;gH=BABl49!Q`4W4IyyZ*)1_Q!P+CT{f1*i$## zL0>_ZX2>fI?2o`(hK?Nc=QUt!+6> zA(77WrSlTc)ZDpprAX%^(z(?$*-KtR!0QG(T6m`4#@DbcbF6f;bAFG* zBvIv=`@eFCtzQ$ZVP8nH@hrXNt&jIn^`2 zI(+9XBApLO=VPAv?9PkrcqtQM&1huo2t+&_iP&6l$56XKRsyeSpS+*#qe@>jmDBD< z=w^#u4|rx};~n;?Ddy6gH}u$JMV3g5XLfJ)?E+S2+d0ZJBeu;&OD&R6PV`L0MzL!d zd0s-<;hB@4Z-n5>VSCN`yY9G3h_p3VFP!#~kfCaR^81^ARx6WankSuCOXqc-bncYS zH|^ekiGbirHAAj{>QH+}=SY}1-!nhyUH_zQ z&QtBCz%xgl+G=;OirzM-EtvT`AyD3|{o~Pg_n_EWvwL>WGlVo!b8WAaszoa8KJ!Nl z_G%aDyhS=UdS=6-hrkGn2n2Z$AwXadZHhRr-M>NNg4r0`Q_K^XJu!kq z=#6fMJO{)n2udSB2E`9v9xMP5h<6`(V#17%Ap(M+0`XDoRncj%MaPmBiv^^MAtT2g z7O4-!dk_;rE&;t8asqd}%leGH39)`m!N_Mo5RObA6u8(u;AKW02x(rtk4R}Fzy%$R zYmBj9JoGWFRuJVx02*O0gw@=4?L$RM0n;ZoQP31Zum}YgL@0>2LLP^dKcv`Lvg579 zfPyI(5mc5f33~@VXZ6K#aFbUFj47>=ABD@SSg}d;H7yjmXWQvjXgIEQL0!%#! zBtamH1v!K}NX=ny3qcctX_%T2EWyNyO*BM((BnZg3S}*_CQy}NgNHl^6wU|?LCgX1 zFw&&hbs+?X`5)sD)__=KAQcRKE>s0jFd|Wc5H+%vh`T}~gy97`8N`IK8iwu_s&WK4 zp^|_M5TPVwoiGexJ&#NV)FrOf)}C`h8^&V@5D?MDni|SUL}jsPL_QA!cqj^yL&98z zSTw}kP}3nB1D!o)b;P2P+(sM=T5M>Kk%WZ!11V8NE+N>(niP_0h&3_OU{#D2AC{klCW(0I_UrypcA7Obm%fBw`_Xgy;f^ zSOgNW^MfQBAquRnk()$_0^ueI#*n{<#t<0+NQ99<#-a~lHmKjBt3qN7Iw%C(5K>1( z8#N;cQ((7>T_4o>uD@KjC|C%QC8Qt_eqy~(oAu?!o1v2Xki`21Q;O`y=cZQT73a5Mnae7DG^o`W5KjQT77W5MkfpQZpSRtxGUKV0iQx|7gqj5UeIy1UVn!?!@gjs9p>aS& z9LgGOSCOSfF$VS!kb^+~2SGpNAXv^|*#vbKw6zGUqAUX$R!G;O!E{aX#JXJ}A|S}8 zAnJ}V3XW3R`C?LT`4@ns~Hq18Yj2uej{ zN&aJ9`JpYpdmq(b*cxGz8+)p2<~46YKo%QQ#M>ZpMJNXqLI`LF`5IK(@s-NB;Lb-4F_fBnsnpJMTf zN*ah2kf%WMJl2uUp3rLsq+uvwf>aM1K!lPZK|<6AvUa4S-Pb-?w{Q${#i-&!p#$`V z*eWA1gaR&zL6P=Bun@XQY(}B%LhYYxusa9tIu;dddv22dP#@ZQ;yd?3w}R|4BrAy5 zBm9NBMz>1&%sDqahj^zP&4Dl#p%rA5 zkf(vv1hFM#15hu3Dgo$*Ayjj3Me5Qe=Rs$SdJF735gtLE350>jJVE<`{0YL5<*)ct zN1c>M{RUK*C`v*75Nbt{{6S^_Dt`Bk-Gevn3uy<+FQAivP7iuvXs@BzL^v3NbnJmq zhk%MZ_lNU8ex(MHVTk&$WrZFBRbq&XL8*hdFQS5|Rz;;ELbL7A7rvWh1H_QFR09iTi`yDnovT${1t`p-@EC0`gZ-u^_yHI2IBk zs0V>&&>bcJ@| zEiD2|vHj52hwr)@a%N}`kUK;y4Y74p;zDx^)gW|}(99!G3qd2KWzcRzwU62Xq?1qp z2vrm6HC!WpdHvm!P_+pi67)RKp(8ec)F~=rkw!<_6}e^Pb|42uEdtVgkRG5)5|s@Q z>>>D!$`@1$BK!j35h{sX_ARWKm8kMiJcZZ;!v4s?LBEaKTWGQ&c1F$^p(zv+qIL>$ z7nH0)HHlgg#1 zB9K!+hKRrzDiK^+hm&hKp`ZrvRS&5p<*F9eI$q5}YFJP;r4)@LzNaF270qaM4r5l3 zbZaI=HB>5aQ(=utcT|C{!6OwfYN%dQwpzoeC6Zb-rll{c^U}gREjQ3Ya7`I%Tu_6W z8u(Wwm*xOfYpP;i)e&j+kCu3<#6?T)H6*OUEfv2-#U2{3bLFb4XIFKymer`JQ3K^F ze9@9#O(JT!Q6wpj((+L`7S%wEuT%BGEC5vjtW;#7AuD28I!tLO%V(I)rm&M`-BiS| zk|kC>ty*!WpQ#68LWIFtCdZh8p;n$n%q+iPxhIvS)b&yBP0<>QtQezZ!4U;^OfRyS znC1FZkFgAewU*TEP~ywDFO#U0kg~KV7QIz%Bm?8D2BE}`iB6WZQZmP^9!1x5Dq#61 zMZZiiP(;W|e3nB}QcJ@Grf4WGWW@pnN-VTzaXFRdtn#7$ol-ScX)_tgdU;msGTp%R zDARw;SyJpqRUcDB6rZzFk@XeK7qg4g}l4eTWso0`un3^Bf zU(or2Wk1yGQVPq|0n4749cGml3maJq$@&)7kF!jX{uMNah}DAA8AFAaF{OxVomt;V z)jTT+;&r>OdWcm8RK`)xz*>LmZLpp5z?yzaR9S3B*O-`ih+;1_fuO9KauwEz$7{Ns1qaJq zsf?x$gUKpNDOqyInnadU)7^&k>@?Y6)iyiD=wUfD9eC*8K?5Jw zK+-6K#w4ubi>FRq)gKk?%)3*uMMDSrJF)yP?w>(hAvzgFW$dbPpyY!BE*kMLozJpE zRIV8Hu`r4m_LvU^O*qv1iDi?N7*iZV%O|=5u^61Sdvr`;IR@<` zs6?e=kD^ajn^B+4T1SeASU*Fn9I8B6w8u(q+OM#Hk4b1IyjfdIcLa)KX|Th38Jdx> zvOeaL!paJ2+^CwTzM7&rmQzudL1!>#?p6Oo2{B7OW1kBLYLP*eEln6GXIUA&Y2wB_&VhkN)HM8J zaXV#G6k)S~m%2%s!?3W6mOpe+UiK+8g@HQC&&12nz5hL#Iy?i>xSjWdRLKEvTPmWhE6_GzpA}c(mY#)u^l+ix;Fi zMLtEYbTFik83q4Tc~X{1DSFJ$p{NC?eHT@luK1P4f3#hp?*uE-Y28HcAXcYSOc;}! zt3w!tpe&T3IEkWsntRdRf!hB~BL{%c) zq3DH3@jmO6sNbjk0tJSwV5PSo70s-(rgER!Zu*YWcamkI)Zx<6iS-IJb)rid4NGIy z}{g&^my|gEYILrj=G~tj?lq5Nn5MAVc3vT2azH zhH`59DN*Ojk^!3funL!zbX1qK;)EWxbflrL2Hi#IF2$-wT7b}yfv!jNyrTOSi?V2? zNsjrC{_#Wu-r>=IQuEB`%8<=|jr`Ru(<7x|0=FG-jbQ7z^-N5KRA4`i{|3 zgC!#LsH3kZ1=F+(pa&pp=lE=4ksy~^o-Cx62YTbl zLbu0j$^}V#tU_xp+p)COF9a(K9m#abwfYgS%2!fV>^kvmiw{24;-?CJYclU=vIV~} z2r_=ewX{uV|4{l%+pis7c{K-e+@-;+_a0>-??UBNl zkHlNZCe~cBjyzf6)Z~i7w8zJER$4X0SdzhJYA7Z!cd|$mTR5-GD>u$dSo=!!=S`x= zt23C%<%_ni&H@!IlM=l<>sUUugYqq{dyXQtI^3Ff*uV|3&K9hi5P^YC zAerHpVSOmp|N7eDb<{-vykaK*TJBX^7ta%#ijOzQ+vae&I7UWYLEPz?DC%~p7OyVBw{z){Xn#RNc@Y#tnlv(K0z1LuYj>tVvnz* ztAv1#rVip_wo1p2n&@-K%?BWbcxy}LyH1>~^*wfWG+Cr2j!sZZ4NJAnU03!m zEYWY#sQ?z(nbczdq)G<{i%UjGwJ! z+umUir2|yu)yAw3Oh%vj_e;eDw$Qv)r8scvC zPA-}0xG>O#g?z|tnAGb0djUIe@wv2)&F|wJ>qGNlX?x4Cub8Tj{$pX&o`{~{e)Ora z9@oG-vH_p8NO`?A6(;0Dw{w<8c8MuLQ8so>%61cq|FZ;1$fWN->@128B0SVKFkZ)<^xk2M2iRSLo6YO(%^Bv6X zS1a>PqL+?#%a1&LbsvJP2gB1b5$#TF1w z;+zU?LvMH{GYcUAari9q?-^nAHqu?d&sm9vPSTM_nG}+FgR;vA{Z#>UY zqS5drR=cY`;ru=SicCt}v7<`yY`t#f`PCfcv2gN_5k37WqrWK?{(fOut1bT11uoFN6 zjJQb1^>qA zyw-&vi4%xz4AvXe>!LB}zJK4s9!Tdm|m7y zuxbReQ5GBg+S-#wwOvr6qLfbhQaG(Whu;|UxAIHb9!2J;wbSxdxDipb-gd(gZdj4? zl&K{LY|yqA?bXb|ms2>q zg2x4pu@T2RWe|SV@jvH#?YV1t^fgQJIda0O+mBw#Al@N5tS*hiws%#+^j%{Z+#QLl zzqv>ByuDj0dRppIQqvl6vvL|E(wK|8FAY|)h5H(##41C4DmKxI3D<7~=wg<7s;s6= zLMwbj!Lu`trb)JnGr+`MrNJnM&+6&aNrYBN)L+fH7~$7$&bgXhkr2k$zq>8sp>cDc zYixse#5fe9@?tCHy}*`b<{@^x7NRflQuzn*q+lP}sKyx1T+sjLqfjjX^KZc-g9gs= z9d_wzBUU21LKwo8J9PddHlYl^+20|p(kgdaPbh4~-QVeTjykfxWZYcgNM&m(+44y% zh%~xtWV~uK794f@t>x`_Bz`ng^JLZ3{^~l<60fCR8|A&$YrZ(jx`{s5z(>zyaG-4O zxWQRwp_k3ONCxw2$mRo+d6-7zP0Fhn-ObNr<%v~b>Ibg3pWxN9a+ ze{+oOp(4Ftm3y^}jmWuUq}IrCk@h$ij0w+CjP>|xPqj!)gnVAFIHxTN{g*dSEaU0g z;gbeo1N6^*rr)j?POUVH85vFpIFF}xId>u%LskkK61{_%y&7(3W#|ty1gAu;tGpezQEp$O2txZaKC$GMU02yng)s=Nnp+p!6Z_Uyyqg# z_J63V_-Hyh7-YitpVm1kO*HM8+pCz&E}a(>sfN8Lw={qFeJZ;w=F@O0BS`n3jDdbv zo(hy(%9vADwR9Wa@?&VMJ59T7o*XOBtC4Gh1T#F9(Y^M=l8PHnc@HDs0-s`qo{mia387$l#0@)!hQn`zr;{)N z>4V0ve00qf-PS}SsO-2Yc#%b-R`Na*LB7^^Ix&Mb{p&XNKFBtnLk?Xfy*<{PzITuC z%7_czHBB~)a*?j<1pE)&YczT$>wrw@^}=jC;-X~O(H*i3ti(F=_SeAXX_t`li5yXo7rGeS;> zukN^ahq2^+Ak9>GkFlh&S5JM8rNkd4SxbB=O`e!s=ceM4wq~{V*BW&f(mtim&F#*9 zaVmC7{}ox0UNt07zJKj|r}38`t$(eFMx9xj#;95!8=y{Obbb;ZVCa=DG^q2c&;-?j zy11n@Ct>X{pP%>O`!%?@da%YiQqBC-y<@&_x*VTdaDE+6 zwdJqslia>5qL$&8S-B0eBu-DQ(@fs-s{J!7@mTR#H1^k*>TK}`sUp`hwNdTptR(85 zq($;XeD~qt(TD*$R`0Sj(Sv96a9Fni&G7YW_mcY@L&{iE-SVPVW+zWXa5vXA{(~p2 zb-cm4K)Km()qaC@JChak!sX1_=k5Lbi-)f#`^c=UGx)rFq23kg%;#Y|8!noBj~-CNV1D%IEY@LqmDa`lbjv)f86Px;Mp}_uwDei3#bWK7B4`!3(D;E+pn?^MZX^ZU}xQxeNq88-6|N z6ZO9L%#!3^ItvKD7ONJnpLuCWFJE{Gb-Hc4cJ&~ygd7HCy*E!``dmI1rHq=vzY6V0 zC!aQAJZzF=&t0Gf71{0eICK~Z1Q~U)yg)r@z0(VpFF`d0zn|Hcb9MszeG3aOmK*}J zeRa>*8c1;!-pvPNmmP3ey0*La@_YY?ainfo^txQ{mtKdv8E$7K*KJGisXlb}PbG=Y zO?kf8To;jN)=O^Y$!|HB+zr0kJrt!J^T5AuUh0%@tA34ld%FF;>(6g5=b)FVJ1^Pw zDnEIbg^%lBMSgF@$E4j9@1-dZX&>x7M31?rFb`btuPjmWqwlFn3Zw7r-pDVx<&^;+ zN2fjIpHwXj?Smb`@3n&h3DzlfpP@CaGk%H8GA|CdU+?+`)!CS> zgOc>kf88TlR|d8MJa!1C0({y=7P-zLwV;nW9iE_IMMz92TyW&43vt&P_CfnvAhh+J_5Bc^7f>h%2M56# zYv+h2{kU>hq+h=#gHeo583;n%RpNiDD{F=!RdM(LSXxKS_$?CyB+XruZvT0i|!OwIXtcE2QgYoRgrBXk}i zNT97@2)$!oZC!If!atP0bT85A2dF;Rg-%2(@S7SPS8^W=u2gbU9!1C{I*uIAwh13p zS$+^Z`)Y64jhG1>GF@B)(CK&MbZaq#n_kHA7bZ74cytHi}u@$@C$9dJ(Ho7fs{d@s?cfC3N!SN=o(?ebyB0 zT7vhDaBV#?L+XrdcgDzjM2yCBj-S~(&Jo062g;X}upsUrduTz@pJ+7$Nv|D!_q!DU`eT+^u$CF6(=OY17 zeQISNNnRAU4!>OlhDJXW=}@s^pk(?JXJ8IV@z{FWMsnE3w0wMvc^HuS{%SP&cOREW z0hPb{RGi(mnJ_wRQ_J&tfJ+?mrtY->V7?+ob^guP<{6Uo!T7p~v|Z4ho@UpP|4%ZU z10~T`=YiJ1V?^umRnSVBhGe1S z{*-vl>ipE`_Nb0^E5-8`4I(%ZJe#0Bi?8eX-f7iMdYW~Qc?Q86v7-LYasCy_V9e9v z9i8e@?A^G<(x+tnRjF5{)A^n1Z;hT`vD?=UK;c&gk;P4Qw0n6Q)8XNz+CHs@CG_po zkRE0J-ofp7_@2}izeMux2s<|1S$8+ws(9coT+H|@@yHng$B5x!B{=-f@%^iuC{XT< z4uF?D*cjp1yK7ka7v8v6KaQ>`8BmPgDz17MF0cHH#7Qx=6Ytu;M}Z>e2u|2o^38|f z8i!?4Je8|~&CQC!OLCZ0n>5?URP3%e9`kzEcB!WGyE6$X@3?(f)`4_?{H&~?GkUGD zsWgJ6DFbR-f~J#aQwx4OpRXWpdkH~%jOI^BMK9Uwr%ag`KSRa>F6T;`Mf$=7$Aet= z6K;=_$1(Gm_|Jm?$@^GRceU;wv_k4NW$J`WDV~Zn96VR8`qJnIn{+8MF z7NI8+W7K3Zah71gcgWxwWP;NeGQ=^YYbmFr`)i_H`80-iK2eAYgA;yu1;$#`(PHAo zc+drj`_ANofjDzW04w`>buZnJk@uERIn8&%Ua=ypP9C^DzjXCVuDT~~kMR;DSYEs! z5A=ihb^0MX8+3&lX~5uDV^8r0EtOb$Zum9ZT(%J@0DIF71)~iGXA&h6bB(OXwS&nJdz7hPv1`^$~xWY&)u(3ZphjG6#p8wTL?T zJEmY1Ya9R6-0?jbLPg1pKg*Bhjy4qfV_!q>s|) z2>S-NMTY5lUpH`&Xl3vDT6EFdCpo_DSoRYOZz1pQ3tJE-J4?b3E4DC!#A7jHER4Oo z^p{|HC9PP|S} zKZT$Em;fzAzkLgiajMhA&G1XwzyJProH`6IPYXVawl)Qh4&cCJ7{*}EuK&aaCaV4H z2Nwn(U-i%*j6X1wTHV-^&B1!9NoiaiQ%ZUDv0LkmXbXyMTn@5m*z(fK~>cTv_aPJF<* ze$N!w5y?Nb+ridizr+pJyDS?#zof_<4I}AxzUV#~z;4Qa*{@n}3vS-(#-RlXMXu^*W;VOVj* z`RCM9@WAOj=d&sZQi>-R{I#FUAXE(mrhzeDS2MI;%^0C#WsoIOc=XH(ItVR4T_?CJ z_Q(2uXz!ZX4?I+bjIv5zcXc4*zVnDLe$j1PXs!^;oe(6Sm}LU=RN@Q?E*V+A8BHDl zh}h`t-OFp0+U?|e9^v0^t*fdq+TCsUHQMkQL*Yw6f(`heoLaGU0bq!vE z*)|R-L*tkNTP(kTNlZqc&%(mP7LhhvuJa!7Na4}|WhV(b)`|)H*m`6pWpOd1@KUZ1 z|8zU|VS)F4-Un@-lgbN9f)w0k*QGjwUG8M7b9>hT9 zlFbwrsX%mJLoB)|jX{K;4{5;5?<#R~!2*9S7$A<3;T>p6%~1lwLydmRt~TA_yma~R zQi!$g@Dt~RaF8P3g4!J&xLn9{^>9=w@Usp~1#C`^+#I%++C}6Kyng>5GfW+;pl{S1 z;xMN&pl^sc2{ZQ?Kk)K73G+OGy-&_KM@^$%s|uw<^CDpIlgOeZ=$;DTD71G=u;j9q zjEHw}Gr_FJ*p<6#M16V?&ZHmjbeO?0SGiryB&uobf-ve*AV0XI=ov;7Q~LZzy10mf zxIh&SJNzcE(cyPyvN)Q$;MIx7mJ-AX?B$rDkg!4) zDWD{Wg50fW?-t`{;R}b@@d5U__}5{u4x8UIGQn>4X!4gESU$o+#n0TKUXkT5lDN|V zQSY_$K9V_bG@ZBK<9=rswCYtKP-5gNnvH>K`=8LU;!T3eL5m-SU{XH*6UUhF9fi`7;Pnm=q=x+>|~&!@lI4QwY$hT z0vPK*qSO5hoHbEpUThI5gw6Ny-L3zUEqu6vBJ}73kYFl+R!BKzfKFkSNtek0x>)dG z)Q_&;&e|gEm@kb(0e8LK9~fSV*4~CODZP0;1qzmP`U)54tS+n7@REh#K$tXbWf3IH zQs4+ITp_Scg17CxxSo6UQOoYnBOK@FPR+I+6NdxzfE>sX0U>S14--lqfCbgmA->_W zjt>h7L(|j)eJum3ggdOJjfX+g0LVh6sRQ7Ph}Qf*%BFM3?~Gxclt5m{C}}g#7y^{} zgrsnT5K&5Wj$Z!-BoV^EbLBuM+6vc(x=vI4z}i>mjF%vbE(hF^lOSaG%$W@Ax^MYD zRA`MrdIZZzpo60bOi0S?&JDbNWPmXyL2e*7_COZte`#ARA4u|A+RYLo(8q~W>?(5e z4TrxR_8g4}2{sVJpIvTH;At_0fJiQXUH~p0`04x&BIIHOY!IGFQx<*+vsZhW4&4d1 z%>WPrBmP$$2|CYw<+HVI^Tb3uMzZ&CYTwpDHP=lEA%tZ7#|!+X&mU(@zL3ChrX3w{ zZl)jK14}L|qd3 zL2O`lKw0Ihgb;TkrGyYLqHn)LXz{LsLTIu3phGm;ezd`7iw9U^5(EYYFoUHBh%w7x zK(6a1l|z>_q3J{YsEvCBx2!=60Dmc)!6dq=*~VO*{_`?#GRjcJ&_nIeIqypzeQjb2BoMGCc!?HK?q1(&g4^bPVSgHc_9b* z-(o_<(M5biK=5SJAtn3%Z-`1heFcc+`a7)}gW#7kmgVi?wzK0nJjB9&o}0 zg%3{4G}sF^K+6FG1Fk)?2d1w%LJkIP07nYRts`Xy{zE$)99&*&BoJ)bAlwNuNI!fL zqFNX36P!&4P8pm~OG+P%N^8Ub%wFB{JIY+~%;oCBWcRKe_ze0tUqB%Wj}zbz9HkSW z3hvDTfDcD$1K5U!Qp;cF^8W;qkig9VOW?j$N8mY#We*3O$q%lg#vp+C7tbK9W?lEO zyhf7aOx8F_GGSBUW_-cBOEn^*Xi#5&s;VHx48ye`pA1IWAq9BQX;gSLz#abr+aPG$ zfQlZDrXev$KUxv8dnW%25bh`hdaw*e2PiWYC4wE(am2&G>Pjhq&ufC391fnG#>I^y z%wIP4&vdltJa_yMrMdE85W7DD;;}QLGHGf%>qSQrAtepMt05NkN8BL1w7xjxWerdY z%3aya${G>xalJ77Q|5mtknWH(0kCOI)^CYy{vuMiH$h*mJSXi>gA)kW7l<=Q3l@x1 zK=kp|F;O0=AfnCU=M9S*qJi`9CigHjwDjJ0Dn~$ za)1~Y8shtu*NgBzI(hlQbASxsKpyl3z#&Q50f?YxYyoSKapr&zFn{BG!Jc&Au?~#9clA7Q}0jJS;??%K$Q*j73OFh9)X*VfPsrM5Y6AicsU{Ji`(St(P&i( zzk^8E9hm})(X_m>r$>Dsd_XgE2FGU!egZ>e4)y_~&kkotA?gL&G0G3=d6ph{G(an$ znf&uO+0w0$A9r}z8!ciy>;yj<75Uhy9p1#A+SBS<9j6Ap(Tm0do!5(oYsSpuFsEH0 zpmTen+Db$=7R5Qt;^&r!777#9g_Z*u*czv5G)3rnRu4g0d+chv&mvymYQ8l6`hX7I z9=KzG4atZxq!}C{fmcpWKO$-hR;f6sr9bwMwY0U{c-xaoBtU@0bT93{RGdGM>rWT^ zIaWau(~tWQFmk1pkS;9t`wdu9TYxl0}&tjzW`EMEsw&_n~Pyw_~+Qe_HxzRb z`Uq#>`i3K$;HrjFOW;(xBM#qMCrKZgz<_o&-QCakP}*aCq?wzk4&siZtmc#YmD7!p zPXCfJ41|R-$>GB;IDQHIO6W$W+DT`?>9X?bz(}0<6V0;bp}Q-U_lC$ToEMCkj(0d$ z(MVLfd56I{!PbYgQ`_tZ6ZG;eF z#4x;z)j^=S2$)oDOOI+f>*i4)pnZGdZ`X^1u`!Y1F{v9Y$MN$r3ihgow=MR0ECiQg4J5@^vS*V! z{IL{oInms$P=Ql7KdEY?i-I{bGTGV4+$EmWY1h;7Nc^zn-@)a#`6@YL$a~kQ-3w9* z?j?p@BH}&2c?M=xdK_M9)?oE(O$ya+cy@s~+fNClrtiZu80g zL20%=IX&E9Dq_s&{;0=~;D*I#Z@yggA292e`NP*y32Y3|}GQj|OA$`$Zqx++&&pJtFaAdH2wHm%nk`SLgU*kq8V@4Ed= za;e>oq_Fi7H&qM%&&{{O}opJebEe2 z!-DOKz>yUoW$3@on#jAPkDTMj^vf*zu`KRfyPTU)TGh?7w;LNged3;Vft#@^bf9}f z`~Ip-r=R9fi3cb{);BZ!8atW8%xxn56&9d5(4F- z;%r?V*?(?UJ?48j%6+>{|7qX%GQPVe7u(un!JnlvH8FX6m_-Yfk?t$`0akrjr~iE@ zrtkYyeDg%-x=_0;9Q79~CTd#5;hvjyRaz-tGKMtW)wJyoE5SFNG_{z+dr>yM{w#?< zVSW=;c_vi`WyXH+Qi_7@>@g|Ljxq>$+9!3W8Ftwvk<{SuA7YjjjHjd$p5{C!B^JA`sfO)qxrtPA+|PMsYl5TsP{u+#E$Ej`=aq( znzh3GVBgPE98QyC-A^|*IF!O6v-ETBNfRKwE^xoJyVA}Fk(~bg_Qo%6K9Zl~(J^f+ z*N?Jk7o+3mZWqh5oq@Cuha|^Q(!VmH%VKC0OlJCXF`jgtv!2}jKbUiKE*geI$;M~J z`HBnyduOFkz}+Nz(Zq7fD_#6lXYsA?^u}Y~+9l%g`{8x`cC#$9*;D3!3c~5ePx-@z-NX0s! zEh5^MxP3`kis-<{5#q}RArpuGC5&A!ByhA*a-onn<|YO-F~C|{Bo?Ve zV>j^%@J{Eb0pGwDV3h;_ED@AE;_O;$-TG=KYeR`0{aBk8oM!-Ro zf2b;yX?}TG5>nX80NVJvD}OEoI=+#z`b9A?a2rN(5wa681tJK^s=oTZek5oQx(9VM z1CzEe5VGvg!TE2UCduL1oC}#!kid}`4s@K0FH`=7WIy;G`b5_Z695E@Ey&iO)j*LM zl>7~2WF}wq_raGHJu)z4WWfj>Hl8%$8LbS!iZF>8Jhk#qOgSnY4Bv7Yjh%Vx()+`6po#m4{)`T>vv zoRMY~Y`aZ}kI&${>ZQ`}r5l$c_Sdpnrpt%>=v=CL>+gkXGsPzyunailemz^~j-?I8M@h$9SW(jk<9Tx&gN*H}51PV1k z;h=1T{_lkffEPG|3I4rIO#f)@(q?|^@53_j&Yw-eTUvhL6p0K6)L9&he-*Tuz`yP0 zS5q|~GC;T*Ny`A-4+@AVQ|O1mxP7vJpqKZ!zsq{y^}VN{PIDn|0D>nOS#Sm}fq~_6 zT&dVBbkp)m9EBM4J(HTTR9=AsJcO^UoN?_?$3sRmTm%q43PiEz1m{dv8=cK}mstiK zqzCtxbw-T>HFz`Ci$NuonHTj&)YQ4IS`q^yo+9|6jys4J=SF2gF1dG4k=Rv*#0eX& z8U0`29PF_n}V4EZ3E_DhFF=!CK`0c1h5d$Muy{c!|;%I zMJ?-;T7t7U$qi_^#e7k;70Qs6Sc81nDCHCqh&2`{D+Iz<&~7AR;FQInM)Qh+_m~UV z;mU=kDCr1rL&})JE9eU|Wk@2&)L1KV*aeKR1^AYZS#Zt`a*t@1fm7Hr&O5tqq zNik#q#AIZMjv6V47@~ioW}$It5DR6GqLi!2S4>HNN#^bq^18GL1V?bNL94CR0U{f z=lj{JXXm>B#RVfBmYyp6lLQ@VP7OE|Ry|V56&b!Wb=?})mW%o3_i9ze0hHL;mM5yW zXc+-Yf*CM3Y6(^KmdOuRIl8w%ornTxJRO1(vls&UIikRn@-hhVzs$>5UOsTH|O14umrl_c96^t#UQ%F$SAZ@z}`IIT%|e zRrt|Uq=gtm^B`hsxrhpW8`nsOE4|8jai|EPV=1hOwX!@s(oPh|6Vf1=$e)o+oyPsCwk$J5C^Q=o<`}GzjzmIwrZX-wvNBX$02w z$DerOOxIiIG@z%Hv;Xb82~7h^HcKQ?&UgjB82pwm=P$BMudt(6GJ$Tx0+q|eXp_^M z(;-KeX6Rw0-gs!l%$){U@t#myTK{2#)3C2|OfS$%L94gVjUd*DQc)SLK%~E+rHVBB zYdQUg06*nK$$DT+1jmp~c#__Ealc-}zx^a_B&$NMIW;dQ>)AcUQki9P%?qcWm3>l= z_@7@DV?Hpd-GV^*+p6Lbx(2?A?y#{r^%$+ag+39(wbr1x5mz>PnvPjTj*N)Rt=5eK zHs4<$V~CMDyN|4;FAx^olXj3HC2J$Of@rL~{I29CS4A6vcMpMw9!9GU*TdNooiLI% z{is+ajDR@hX2#V2{;sOXf2S=Cg*R<2 zX+#qtfA?6?^`E4rO~wC1Rdc8}4P66U5@F?*A0=KKV@y-E!-hVV;~B<^q)#bw5|Qgs z;Yb zY@*0j49fXB$-hxFcRmBym$@UP;cLq7Ic3!GxzTJ@A-w0D(tC zuTdnR`LRklj}@_6k~YF(7ED%2YiM-N9%o4DctVC2fmd5lG97IkK&P7jk`jVgzouQ? zV)9HjiMV%Tswt7MVw&WqDkeWFylBQ~Z-$Nvz0-t{pNwK74;lrY zGNzo)3kOZ%R}okwBiY4*{DD?PrxKvBKWla=T(c5UIQ&Vd%J~wNJUC0LBVU1yti#I7 ziq+z=trs?D;{#9}7@hig;YkS*jIJRn}x#;EK)!rET)(Mp~m{4kwHY(uKvC4n`Kz^5uIh*B6$y z6Y%hB;Z+q|MpJa@WrpW>h1zf8W8M*Z?xhyhzzG5f0@!+@=;n3C);u$^O5f z4efW?Ae5!uxskBsm?qdf%gn`Vj${*cfa@p+j43Df>6{jYOl@P@m~!NdRn_emT=01l z`*vBLNUca;#rS5CwLky7tx9t#?E1;}@t6czN_-{!cKP|+FJ!4N)_^|t9sJ%KD=2LkW>d!qO!14i6o2XyWJmbB9 zxSMnr)(4j4u93+%pELQWoFXe|dqw$56j#o>Jl;SG+ zQ}eeNCs0p!E3CZ@RVFU?F0~{D7QdGY7s}UkhH5&)Hr~rbC)r-xk4L`S(ffg^;MMZ5AJk>cs=!pyR|QqJ2nm-#(z*V zzV5MUH>{iTFDYfA?7zSgpl5O~xw_@~$44WRH`wfAiH@;ig^fd>*stY~=`Uz;-d9q{ zQQo+=S1{FXdd(0-WuYshGvG_PopCP3U6`CG@8!X+_RIPv=!r>u5qvwWgn358)pIUN`#WOdrak1FIj4{yd3;Zg6MEoL)l*JH4P7ibmdEDmdfVm5;&4=|A!_M*B%NkL1JlW$x1mnzKSAuUPie_iD? zgl+NLIYJM>7AVmkn^%4;uhff8<5*KeWUst02mvcsnJY{<>76anz$_D|(73KaFxy&Y zHJ%CAyOUzXPp9;V(9{2?!6o# zr2RsD{r7UMR(EVTQVnp)?RxM{Zph1TYb$H2&=#qCI(R-}84CPKStZeNFW^ul)_`&1b&?xDzT{x3@t@sG4qy zatULAekV^vhI_z22Lds*R|)3$*p^fCw;X=;j`yfe0x$dr?qgHHQo?m669%#4teaaS zH?~FKvy9x;eixx10?k!I`nr7Vrho*8IF7|W0I453cq6oYPep4(=moJ{UE;co zxrtELRg2qucX=l8pz#gL;^$eAm%F9DVHGp6BCE$=Vs#rgXlgY{BqpI0W_cMML@uKi z#DJMSm{dFmRDDVlFC&-W6f*6;wQn%b^R5PxI$mW||M1 zTkiF_$MYBV^Rwr69d<^o#FV-33-TNEJ*xFIr1!qr3msWCv#4wy{L{N5<#Ii7a=1sq z7oBLh!sqQj+I>PFMu?xuaDBF0Vu-)$*g3D?T1H#9g0<(-^__IO@qDc;lBI<`*wG2fTPg_V4}|L%V)QydAuH%c69i z1Lv&sqJXRYI7Q*iKaM&hFS0=ikmtu)X}K~e`3~8=0_h5zuP;9k%Ukw_s*2$CvnUPS zh+Fv0G}>$1+mxEfZDkIfE58Z2U~R0*qAcTan601v**Km}dkAa-yvfxSj1zOi+I1M& zBb@m*7E^?IRKM|Y(g*Fg4WyFLz4(qk68+g=9zPqZUA6B@UhJjz(Qm?lz8Jzc|@Dwii~9bOrDNq0M3$N&STEN4|jaylQ0!`kvKm;-A>0`wa2= zyKa@*z4a8yOPEiiP1)m-uRrV)_an{LIrPAfA%>%Ksm4Kq_sO4&)QP$KfwWo?lU6E) zQ{g>FItlWksVj#k#eiYI6dw(Hhf51){4CR$j|Op%H+pX^HkV&IV_k%BFjEf`@VRsL z@mA=p&=6!3_2y~_oyXt2<8*VZ8zQGR*dA?K(?_0<&*p3w7&>fQOU?{Ejfu533N|l< zf|BLGV0mkgADzA(9uhLkOea*t?dqe7*_u`!h zGT64<|MYQGWDCJ;INYe-OZ2#Mf8hpEX|)WXq+c8z%oPdBF{UTUl?D}Gyw5IbFhUp8 zOh^W?pbQUUIS6#zaBa4mKV0G9He?jbmdxYXtKfI4%${2}>NZolViWdu3IMw&Ka#BK zdD4B(5Pmb+)OtI~JU3-2pJ{BEW?PuTpr=O>FNyy7TQY}k{Z5{_R4w26!MDCAnYKoo zP@<(14T}wELh3R93EHD#vf_txXyqj+VV%b^wh0|lzxbUPj$Zu%aLqu{wC7%UmngU5 zGu^rG1NKa~S?-hli=!?7Ec|?~ed6xDjY5cDGYK@UDZfw41MBpcDc6b9$1%ORLM+Qj zoM?sdSbD?zfUuA-cjNr?kWMf)qtdpa($>}#xmUGr)$`J&j z2R^2@fa!$}a{Is|5QCek0$@2?_tDGz-mwo)i{8SwoII=Og?rEa)1nvUO<#BnbsFbm zI3Z|n??vysTTT{M^xC>J^PISu7ZMu8Rn|!V4 zZEB2(-jDX1yo~70XrH=x(d*7JjrDOow)?#&!D;{R$*`OLdvYAIjf-9rwj9SedhNGC z%z1e9-fpyuyl1T4?%p$z&@e9hD|%-(ijhYdH<}3+y{Kwv=viZkGiF-!imCnTmN+Ie zcSQqH^BcY18FI75qW3j@8Vf`(Sk`l}xk4GV^T(q1AAK4&MXxYMXY%GMUiBGe(c6fI zVZ8la$h?DMN#`9FT>@QO?|6dW9LPm)L*dyYkMUoRts+zsXE4L8r2snH8* zzR6Q`5xu(!f#@Dr^nzKG(B9+j+ImmNt*!Sw!TadshoiT(yypLWK0+Xxy%xQE6(d^a zHkHbjx%}i)k3V|ZDIqqiEqbLX5Y26iUNs8Z88XqELxxViT9>_jGh^A?H%|r2&U}kr z$?>VD7`;prrH$`~mG;H1wC|8J#mOk6`_9xey00#lsy-F-`^QJGghYq-TlEs;PqIhy zXSl%nvtxnv7Z5z-CP%MRM1|Vlmk@~3EP74C9(TB|!o#}a{?P>Q!{+meF0=S+oVD;P zIqV#~=p6$?a{p477Tx;FoH^k!Q-{KCoM|r|z>qV39gLckdG>6{)_*^_W{g-0M z8Spub6i8N)x%b`&Ac6EKX#+Wgkb9^F3FHw%?xrCmP(f%A!yJ&n5FEan_NLi;EFOp zH6%#R*ug+NIKf0hAeu`631$<#<8^{yk^4azArQ?fgaj*N*C9BV&>+U`hXhB};}fhk zlzkKuoI~)NFcA`5;POOp8NoY2r98Mgb|8g3xZapIm8sxv8|mNyg5QMIkl6FyGCM2}Wnev#+LZOp4 z!d2%Ez%~)WKKr|HSash7qj$nd^Aqf>@%2%N)NTJRquLrrtkw8YDc# z8G5t|$^B8@43Bqk4Np^pWN%wS!m9f0?KDVukpti=d;Ya?-bHwQ+}k^DSmf}5`h^Og zRzv3GOG3gIq9ZmSmq{8pRA`XsK-VB87RLq|HaHCmlxa*hDWpNM?cX)1jLMCjSqf>; z-{!;yBh{pu6MRU6u>{|}la#~_rZ@x6uw}2oY;Apo`X#v5FJY#-lV+00`~@Qs_S z^3t%c;|w$$q(=MRG1ZWURq>{=p$0kQ?=|nRNJI4NkTAy+gD7t(N*1JFi?QyOlG zgLsGS(KI~Zz;)O$A`OqZV4WiP#@?%P+^{ZArW#(dX_x46K1;ORmlKoXUQSF`-?LiX zw8R3Ng%eBFS{Uy!v4Rk;Pql?4_9ukggj-1BNL%?Oy6%2rZM^bJoE4+|5|_kJzdDvq ziCgNqEpd-K-l16PBp$P=lUQd{C-H)d=H+@cO#~3lB8D__9iT=j>Hs~gK~$p*_m!!T zM!Aagz3KooDs_n5sPYE%8x4p@ztJcg{YEtoxQ(XAqu(gj7izSWU^!_xkVb1_J< z>(Ott*X8F%hvQt(eHFajFXL@p?yhHQwq@yEB&BjrS5P zCz}G&_-H-QbumC+a=+%d_mh1D%Q={aB&VwVFsGQ1nuu>LPA39K`f+6DIsW|V?de= zi8E5>h0z3bhBTSs7`P_0oKU;Ty!hz4$s$|1H(BFO?uNWgHpj_clkKsx(!>q+o19Sd zX)@9wP0qOgeaRj1TAZMyP;?7yYBUy0Np=X3lH;slit+TK$0v}Kl30vW`Vkt$q!>U_ zs?07{^i&9vGRd{^DYG0Bq|CRY=9I;bvP@ZagZGxQ%E3G(UbIto#$ujwh|nM=2Og4g z%0=NSAu&E59+Dz9do*=-bDCzyk+x}m>;z3K%r2%h9ppgYbcmyUnhw7K=%%A%Hx#95 zZT*g-G@b8Eyv&_=Wei_7UF-5?(=E=cJKb0J#KU+X4#tzt`xjir-}G{NO;Flr4#=lN`FI)-d3-N|DRR}@* zMgXK)vLhJHvej#MZwEk{b?g&7dsajLWnhkdyfCZKiE;twGv82cNXV@e7)EJjOFhyWqZd zJ>If3_r#K+d8+Yhl!cn-)^EW!FS5Oe<`pJdb`pFb&HFk7Hy<7+fXzq83SjdZ2kqu_ zY-gqU0+%70FRq_;g)`Gy6N=atwfP2H^Ecn&&bK>`pPTQGb=;bt_>rM$e%@w*bYGmh zOb^E?`1B0tHP>B9FNq~ldWDTZ`k)x)ls=Sz5=gqcfs;PY;h*$LH)z51X|9~4FNgmlWxcH=~r%4HR;zJRnsELS)3MWu2b70 z%O0ymeyrweQ4}4oMP;0*wdm)HT8m*e0b7iA2-sqL9Fi@nW07nzJ5JHHSnMjg7Hb?@ zw%DjL6un&nX|Xl#WU0kojZh{(0%>u~_J3QPA_VPQCy*9rU2$n~#f3@Y*fk>%3sXiK zA>?MVKr-^2!>bH;8#|+)VK|eQ2gw*@Gib(0C3O9b6-dTdM`dKpFdyp#bK+-LE^uzL zKr&Vm8pPaZfn;p5S0iH|A!w%nLNX3IE0=LHj*1y)T`Fc=b*R{qY_FoFWh?BKi3Gp7 z1p{fRn$PUOw9K+su%)}3*|Lxja&N~#T9!uHpyfb!&%LD^)wCQQx7;n`G(pRncwN?V zj!n3huGMe3GG3FlTpOdwT5flMb2VSfgK@-cc{Famy81)Dmag*8^u#HT%y6vo$W#?D zbuuKgz@=iQyOEh$5f5EvzZmE;hdV-_IX>1xWmdZqpE>Ktx;}Hh?R{jr=M|Y7;*iSR z5{p#kUINBKGLM>_^{FNX%RF8WZ5<&Y_P!4!^O8-sR$&*ER`I(Pt-f9%V_wZCDL96lR=)t)w1Zm~$;qAu?9Ys#PxD}!f6w`s=IK(dmf?3(PMEKch@SG%_^wP$Hv>Au=OZkE=A<7OEhFYc|UIJ3@;*>G*Wpk7E@FDKxBNNZOV zTCa~2*4CS2g|+n_o4Z;c(N)tAk4I_K`c&L|XWaE|Z9MmAnYItPo(?ts@^6xxvcQJb*y_ckeUbZC=N z&wAq^Z3-Pk+fDbjad(25!%>xRB27Y#`Go;NiS7O^ZJDP1S*)C?AtFDLLhGUjEClJrGIVrXZ z%E@yv%qfgzuADM=t2$?ZvwM*#37M_BBRup&17C1=f# zeA*l*4$e6k=Z@tZ(THTS;ftKJ&O7c_R?gKprIaJFlx~}33sl>zxb?l-*jVPScK^OE4$It4u~_Erb|a|V!#@V)glqY7 zuh<-)D+Ir}um)-8vz@?pNzQETH2Rx%ziOIxnKmr#@?3YJUEz-yuw9vbUeIo+IT^iI zrJ>#M9|6;DoHN-hM`+v4t)FaRedbTQWe)Azt#Ra_o%%w~?LtVqE$XT2%C_6A(FCdX zBV3_r@19w=pYkIZ+fR4avi*|Sb!Z}Z=io{;=AZUmpN96!}bYskMI-Js|Yc3WyBhuksF#Eo%2X0N1!dv;Y|#i`YTq*%ZUvTZO6isR5LD2sb*pi9Ss z5%oKH1>#MQZVNRJ}Ow?LbE!4ORivjEal8(JLA}(;Hb+61$7Q_3NG1F zQ*h0ZngWSQ73dg<@@>bIcptK3nzIkovB23i>R95y*0Ca%oE`h!=(lvNa{ZQ$lN=fE zSQ~$C({YwVg^o*Zn0!V3=bPNwx7X9N<8HIz=-j1+bUbKFR!8^rs^hsE>DBR)14^M4 z4@#kH>7S8yQ3ND=E z%;P2`7p{q8#lj6X^A+xlW4^*Yao$(qQF~{wP(wWDZZD+pf=!)5aVF^GyOBDb5(p@R zbjopfr&FFouTDkr^y*Y*Dx>Z5+&<=DQNpX+`}C zcUoKTym#8{%%*{jxkn7? za*ae$qWTbzR6~l=Y>F3U*^?LL68z>qGNh=$?1CHgiporwZX)xdelh2|MMIn+M#UWp z7mbS}KvAs&$9zIU?EPg((IQu*i`K{boJCt4?2GoqVqfH*XcnEgL9-OOl2LTcq{gUb zfpn%=gVQKd6m zWk}~aW=GY&F%9Xw*d}&oH_Y!Gm!aEv3&C%0QbRiLaf#FUki)5+kGr#E#7R1I_+NbiIcKbe9+ykDL&#Tonq&F zv-qq-&EoU1)GWSi8;33)2j(u8odMD%i4d;82@dI!s($1cGjf*#XTUCHu>*Fgv~lb* z#Evbx42u%D%g8tacZu8m?NVdQY?nE4yLnyayN-O974@|5vesGcE}LDrx8JbZU3S~a zX8M7%3D(7xfiCCb;J!o%L~o!&O2}D}l0;{sl2m7+lFZl>sFGY8;SyIaN-F9tNJ&3? z;*ue*1t}R8Ye7ns5cVB*NXeAw=74>Z9a1uz;OSfhDOu(?wy&Vtf zdZr$(OL2f)w@0L?l0)axw3r>eQs)G$wD1N6Tk5(;r2}JODIID@a;0M(ph_n= z(@k-wtBrxPbe0Qe>B3kzOP47>bcU3!a|Ye$TCdVAaf?WcKwQjY9gxGolkZ!Z;_Y@V3<+jvy+Yoco(QUJtj1x2 zG8F?;#{g0`*C9>WVi%U>1iyX4RJPhCLfJ-#QOmYCN}_BBA>>v(fRybqQJ<-M04Y0W z7S8;k&UrC3EVTP9LddPC0O>xD5OV7(K)SDRuV;1N)VoXZV0Ow9*K`94CpzVZX4{HQIl<>%dbFU2ov`L&ou?UCS0SC4c@RD0wQ8pPCy zfb=LZevw@%0@9M!RX{4n#W=wgGi`t>78ro)>sLT37RR7o zvBB)1)mLDERBU&5$|{by!d7uI&gNFs#WH`zHJfdES`NW`DsP*r7m%K*st}yo7m%LW z_MT=>*Td;)Qud>N?dM|ObFk~I^&Eb~8uc7&I}AOi+sU}&AU$WPnka$vTwrH~MRUg> zJr~;o-E$qma%yNmdb-*BJ$J2c*{|d!c*H)L1TBm;=&l4k27$ zo&(a$-TLaaKJLZMH@>*rrcW* zSMRN^`R=`g;5U^+AiehzypzT}0_lC25QtV0f%HBe=N$B|b4I!5zOLb3^<+rp4VM%v z6Jl1s((&vn3vaxBSXttxqE!yEBb&-$gg~?o38ZqQL)^-V&f-_r#0Yui3}f-!$N455 z!l_aMsa)YqzB!u0USF{UQn^jtv}oNDNTs?kcJ&fSCvr@0_juZyi}j%*GDy66gNm8(>CxeUbLt4O~5Qf<`S14fA%Wee&0NBLRASM)>w!& zfjAH6TEcBS&Fj8D^%5X~#gM=<;;RQwEYg=JL9813Vau52z*tNmE%(EFxaoqC{V|rkLBA zylwnw1=nsT|AY5$AH(e%&fX?}nhLiSGXFJU<5IX?EP2k3i_dyux+PkDA=Uumw2j%H zz-=VQN4i^&01`R?2^}ULcp1POW|K}&xOg9JwsC;t1v#c;a;a`@fp zZIzaNA;AH}AFq4M0wMH>#2@^9;WI!03B+kupI>>9gZ%owyZoyER0Z5-%lx~4elY-U zA6m{_HSI09?Na&nn~&^-+h~y|u6x)Z6zzM)|9a)fDxG+?xp>Qs+CM&1fnH|nN$_{S z&aH#ne4FPrpYj{H&6)Y#(5@idW^sJxlai+tr9qIuP~wcIN9oIw_jhbaHc?zPTb-6 zvFG5nYv$^kZvM5-HQU^%<+2gCHGp1a}-v2zPLuEq3ImCf`<|)i}uWPWZn$0Yxw@?Xn{c}!^N1%q zwo&;T2nh}$?()KC`}J{(xq;7TpFO!6@W3Ko_P=)?0}4<~{MH@){tJx6SYqq>gAXVv zra?k8h(D;Qctt-y0|}lZZsfnTK>wNs31t%B^7czv`Z!K$NBq?nHLA7j-j4j%_sxzf zDe@pzA@Qx>|7I)P-qYMDy?P_uR=NEA$kcSW?L>Le>sP-8BF7OqMVy}Sf%2a+xeAWf9hb0LcA0bTtS?7{jX>A+cb!kNxY$Y${+M`9K@PP zd~EEoh5C37VqGN8DEF!s4*ATbcz*8McZ$5H0OBbo{`~HxztqQ35YIT`{Yf_&gHi$s zloMzC>9MzUrDsFJ^N8=h+29je0tqcA{$=J(|JA<+AmIe!wpSKCqmSbt;fcgA482M9 zyLC_*hxm_Q?E3_mj#=hNHCQkp-qs`R^pn1 zUMKanb&$|T;@kZ9swjt!nTz&3zUt>y9^|5+zCSv*?$hgl7ZHX)Ek72kiX}+66cVl= ze)fCnwjkdkhjdNxZ}J!n2C@OjA38E84X_ zqHtuG@&x?R_qR7z=?Fm7j@(uHe+Bw@76R43DSuJ|+P&}j_WK(y(KXy?3h3~<;k_R6 z#5Ae55+PO!@n3s9r(9$AtK|(fsk%OPt4e<7tMyxSxhf%6f8vG1*1P~jHX^cx_`^B3 zs`z0z1fz%tzxI%tEKdT&lT7^V@e6Yl^g>9egxJ&b^KQxpwWb&VKh-@+8#@*fr-SOTN`yA90~~zCtiH@-#=9#5=_ksF1&nAU6#-hNa#56xg(>!3Pu(L zxx}N+_eoVS@*ti<;>p=fjUQD7363DH{qRYJ%5Hzo8Sgi_0Jrx!-+boPL%;wGCf@$( zh2A>MMTqAL@z{Q$25=k1^P||L%M=);FcbIqOMCTyLf0W-B5wJgH=k7G20_9@i66Y9 z_-`E>>kK`<cTa7hqPD)BNjdEOJ#$l300%TpfB{4?Ahw>)TW-DqGCh7$XpthfVi|8#C1 z_+vKQF1go(!5_ly*UWeAm|v+cXQ;^` zKKbx^U1z)dEf25x^)w~PSxE3a@xE^x`IJW%L9C_3=bD}QjR(m{Q$OSY#B-Q|1^FL+*ak>_f*>_^qXu*D3AEe&rWv& zB6AU0K>YUn(dyTE$|0Ug;=JFzYn;GLh&PAWGkRuUPfUw)s~^M~NZjS=^RKJlH2{La zif<*v(_df6fmr#(RWm;A=7o4xM(b;dbs$3=2!$<3 zIFa~Zw>@VY>FP#HkBMhJ#G|^`TMqG7>W?W9Z>|1V2=Ok7>$>kYU3dC~*Z1XiyIwmz zr31;T;`K){Bv7V5hO3mR`Ybm!c(~o&>+e^Z_#oae@o!)5uSU*p8qagOPaXn9HY2i) zcv0b{)yiFKAXra4@3prksp?+`32sy>?1Wf*h_j}wRr3{?2MH`Be(U1T)W--cganol zUoGo=Txl`Flse(7Nt=!2mFOxFUwmoPC50v%;>{y&@YbA}A&9pc;+>}CSOD=Zj_sE2 z_R$U`K>})l0!5HOss0!S320CgTobJVB-VDdZ^Uy~-*nLn@y=5M$F;hSwoc|x@2F8( zu(C}hAO2wVT^ixpJ*l}{+bVVW?9R(P>%C7@oWo_1a4+IlUioSsFc?+Dlfr*64(v)L z8u6+r)@CL12#9yI0(b-xIIaMWfCTk_tZQm$i5vW4?Av|_7DAw_?->`Z{wAJ9(b{ej z+NolqELUub%CNO{`gA4a0ElNW@sekEtBW4q2nlZ?p5Cw0uaEjcfVlTdzrR<>d<^0} zN&G_f%E@q>rE}?bPif3zH&x~?We+~6j|WV#C_Z`L#C+8gK1eW3JiE`Y)H@Cy*06;5 z7mqAeX9WeOz8@DJee{$*o`K*Tap$4mwo@Q`K|KA4zw-U>PPjeZdC*%osqqNyfP{7v zf7>BtkbYYY!8GC*d)A)SZ>u!+C*Jhp4mEhb^$_1C;?&1h9ERHxoZq>l=>fPczWMsV za~%}O@sQvo;%^FGQ==6;XR18$t9yG4)YVQ_Uyu0d{T0sxk)?>NAYS*(kt{K&rknts1WymW&CcS7Bh)|^1ENXr((BS zMNfHVn~EOspa1bup3YVT36&Br_NF%l(lwrG{PZxDX&i&#BysbfJ#rm0 zp|!;0#{5=&bkBU19OC`6e$W`vv&Ixd;TYPF+1B*wtE}z01o2!Y{xDw2GCB^_#CXSDd zFVW=UNDd6Ac2d-?eeN`(~)y^bmH7Q z1M1p^=R(2@i1)vhpx$YCDI~mt_?2OPWgO2)Q+bqo72T{_z;{lGPV8S;uG9#eh6L(} zPe1odwe{9+Q%{c9{jfuq*FVdYW8}I2=%7Kc|2V{diuf;A9#$Vbun`j2Lj1|Qn-oER z0OC&|?l$Eqb#(nBOx;Ib+wI@Vbe67SfY_gVvy$C953w#0kLkZs-Qdt>Q{Ih#wx!aT ziV>zbET3K8u~t!7r_mbmzm5f;(&fGk@m?c-X2I@vJP^+Xi086e-wBXlHSxlBL)7f~ zdO>{si1S;1qd}5y0mQeM_}N#UI-q`ZKEz+7K+S+yvx%2ZzI&I__A(@RjrfUKztg}A zD+mHWENb@Sy{$KmFNi{)wOJ`hv2gbpc{sCeD6p?ji+Y6vR7@IJCdb zMSWZW@vbI5AO}pKxF3Q;#Cuj|oBf8csRzpUT}V-Ko$TUo`Fu^us{n=`X(A0f;O@WGQjGR!u(#B3lsIP8=%e1;t@D z1oMc0|C86or~+9D@fpv)Kg1eDJi6xB>Y4-=Kmv=2J6`y-OefCMc%1lhyT7UL6k-*RjCsdRd_M_-8sZ6WPf;Tg-T(=2CSJPy=un^vBZyD@ zF?WJ4*B*#xKklD?d_8~v>hYZzdNQEGS z_%5rXGD2VlB(R!zbkP&4JFIGmHH|p<&4499400_{7F9BS3!) zB7SN?*-Coz=Co~BXsv%Bp(&ZKf zZxbZEmH6lF-ZTnm2t>(s`1EkIfQb-K3h|$BKcXObvLT*4;wJOf{!G8kQbR%f#Orgu z0V>d!IJsGcGLpX#;x8e-@VB8Fz6P&Ag4cf#_z3bOHW)Z|wO56_5 ztKaRfgZM8H|8Qs1wm{?@A{U8Y-amM+z8Z#jl87(fdi5tN#fcDa3UR-0cc@VNSD7lg z{F9enJExQlYe+@BcHrz+6>WxuJ;d*~JL&@_pqltd=G{+w5jlj&QC-D_kf4St)+$qb zl!xy8`xu=xO${9J@@?{t323PVCk z#4SQ;9rZCC63QZe=dDkM>bFxM;acK9&M{uHCqs!#e9s@Qzo+b+sP>t-E^URv9vEv% z=kiU@{r#W%?Lw7Q;`WVSPX;U`5~r;`u1d#K4e?AP9>4wA|0zZGX^cm_JUH<``d6Ql zP%Yp)P1JmhhIqznNVWjtSxo$8#qnS2S4&OVVea+b3F99Rh6JmK$B$U^BrpyWi97w` z9|b^U0V0cu%Wj$4Rv9O33Z?V9;g^)Hg6AQ@OT;hT5zyE{G_iwUWa&z z_?Bg@dMi)VK)ln5UzzyVkMytCARZy^bnsJSiAI}(+}xn?L#oHD%^G|V^Iry!(8r?? z>jd%E`E9Bd$W;)mCBD|~lUyZNzi3Hw@l1nwW)Oe;pEv)e|Gxp^*{q@cB8Yb>@rpjX z-d5#b0SWX~#v)T`n9H*Mr-sVf1hKXf@A>2R>O2ImL4rd3JFZg+!&L~F_}R26@9N_m z2<8)i+ptWT$g@`GBi@_yx0m$WQ;^_U;sgM?rmBzS>%!O}+?>*G~Z>X#q*wI>K9 zAes2B;ZNSLqb5M~vGnsNKG4UBrUX52YPMCq`cOF}R7t$=)v3x;!TFHjBH|a?j!RVV zk3+0e#6MksRux2OFC=t;xNi0@{-EsDR|9w@QVqm2U8U(V#JZ;O{vk-{C~^Per_`$Y zRzZAgiGTU+7m8?LIwUZQIQ^UbszZGV5MMI!ZPT`>3|c;j6(;_q!eA%5+X z*WYM}DX1kxb|JEt5V;<$<1eUEXG(u8f?%maG#=uaq(2rzJj>L8hatWs{c$W>L0o*7 zAik>#>=X?E^v5p6ks#p`NVuH%(5|l=D9y$x-H0bXI$Wa}&uNIKj`;nHe}6_rs2t+2 zB)5yO+ai`js%^}eVNbodq?%olGFZV;NL&Oty@BKnoV4!+x#I5fCjhgPzJX5Wh7mU31 zUPXTa1dEApuFX=0@>J;36A$`+-Rlb5DTwzh@!y{vuU>3mq^dCDroVV5ppVNTfmOuW ze@_VO<55W91abNY#}(_)B2xyLx85?-9KWoFgw_#%cX0j-I?)h~4~duE)JXs8SpxAa zCr~%u-#+k~YEjQ&br^|*gC75_F3Kf{|0?mJg5SRdM7ATci+Iu3pQ~Gd zYzXp*@4R%oMguqp!A0VW<8D(u;ooZts`KUNSO1{X^wl_p_^!0Cvz3mcA;Iy)Y4f`( z;jAGLYZ&pnqnEY=A}bMDLmd9?rz@4HWu{_2&%V$|V@lr?Qyian|8&`-I?XbOedeHWd2=~Z&XqEmO^|hi2ssy+~jVIQl2FK_4)s3?Cm)V z@th~#RQG!g487wa-buur-mKM7D4Yig7ZNvmrh(z*`6?#F4R6W%y?&doMw$5XloL9y zRRpn0iC=!#zgoSXbrA1Hm6g$^#6J%_U3^8ModXHXCw~9iyLKpe0n<`|KYREd^{{>8 zA-+k(#~+(DOCOIyd?$!s`scUmSOxY%0tbjIe}Afj&Nv5R%_nZLe9}V-Z4xA$O8i8} zdmd3}iypei^BqC>s zcRW4e6(DjI5hiY)R;r@qRRb3we*D7iX20-|noHuVPy9<`dg~O#I!nCt z5`T2-d+U{CGfiI;zV>3(W_{cU!4~58I_y$q?l}nY93lQ=i&s}EtaXsU1>)M%t(T~9 z?S}*p5hs4!+nB0c2nvY*mQta3`YIs4zQm)g$IRi?4v23z@uV$3|EEv=fM}Bq@eP9b z%xOX{Bv7C~&YR`{{K=uN-+LgzRgmCXwN_hAg?Y|8bhk=IXcQzgj<~~yH`OBu)j>iR zi2u~(cmOCuDRElLBg&&Fg6L!D?j0vQ5Nw5DhpOB%NU#@i?UQGeib&D`fO!3Y_f5u) zx(^m{{|yhCoSJ>6s{wbv6j1jvm<$P~5ifYFrP;s8f%x)?Pvo~&w)D@3_!kj(`r~CC zDj0?YlZbyc{?*@lA--Z&Hi~*3#CJihz+8xb0r3w_pHj^ktbqil6aONsM4j;9Rt;l_ zFZ{Q98xYxs$WG$9<-gZ3&3g&ry-Ixdg@fkR0jAjjPZ?LB(Y)0QV)Y{)`_D!iKZG+N z;cVhZYImqI49|ju=Mrz;+oKf_*^9^l;yF78)+mt*G~D9EJBIgbA>Nt9 zecqg11WZ&{>CV63`4=EE2a);2MceCc^FXXZh-LQd=0dCm#IN?gd_qUtt)V0F{|>)m z0Lq1g3W#^DUh=d;p91lx6MuCv+brvH4P=P3+jdrtvra;+GsIK=y21qcJ0RFi-1hu8 z_xT~-`O)4n;yoMf@FKq2Xpa@~Pl5Q=f$<+P?LYX1RmcCLTvV!3L)`k|x6JWEs_A&b zMSET{M|wE2x7^`y*Zz#2ZS4{iZJu-}F@QYkfQe@th-msn<*D*9JD5z8*iMj8NqgT&@yH zocYt&BRX&e#Oh1jefw8$EB!7(LRX2eq&{Ul{J{`U74g_J%M=6OPKa+0@tGXINqO1< z@$V+?*ri(CmcV#OU=lH}xbUztL$+yjz+Yy*{byhjYKZq=n$}IB9|^%&;;HY?Q3t@A z0r6%NuUofC9Sdu{y79!tXs5`8DoqavUf%blMqQz?kkAC;FaGc6Efm0I5YI~DvbChD z!CMURs$>RtLV|mUZ@WCi0DcAHyG~qiB2(kT&@4!3F7bqcV_GW!*C1XY{z<3q!xXJD zh`$%{j0U?j)b;l>?PvJT56`MY;@bo9?I-^8)Q`>fTIX;aOW~z(7;Uf@rWPn zTdVPXXaOX&n7GZ8WhRLyL0N}*)b?ke0!FDPn)l@PwH`$FA#zX|XFUX)h~KaJsm6Dn zd8XYLdtdlciSO&D0SED8&F|Jg$X~21PJH>Dv1T`KHzd4|xc_r!Gl9rFL>3ZP94LNS zSJ8ra6NyV7*>6t$(;&V~;_X%cQbiuv4hifc-qPYTeGK)7ga#2mKke?F`nVMm+ChA6 z*vqQV!owlqQS`$-)51VxF(S)|r}`V@=qv{z-Xp|)=6p6m88HzONKtMqgak^6htI#s zq`2flyamJ~X53?R?E#4IF!9Kzrl=jYmO!lK#H*jGJEo6IA=V1w4O9NBE@)_&=^w)z zD|?xQ;!UQ*8%JI{-9+iN9O79;{42WfZ+$$eDwKHouijLn=9>%gEg)|4=(!5w zSxfwnf8VK&N8kb^aGChF+tQSytO*dSns`Iq*+mLMqH;I!l%s!GtmMpBAC0)d=ovb% zR~4~ETwVIV-TLzk#CuN7=QN0K2JuJ9f6xdyyZ{njOq`T=%J5pWg&R+Nc(*xm*l4o+19pZIP`&DN|K2!RJP4gi>J@LGGTn!1YBW}I$>r7qmrK$&s#ru&- zUf%+-wiEwl&hv(K25P8Hd~o3y_0dAxAfcVa*GKKj3_-kOA>IkPqB9`A+4|!k#Am$C zB8b0Ke~g9r^&S5-h<}FuSf{J1KaN5CC)Ltqm_}gSpzojZln9mzKXJnC6IIn)nGh?7 zxJjE+%4F6h(`AZ(eb*Z*!r^?4gov*-dNl|{HXyQ@_^vN%)e-Sc)aajh!)N2n9_t}U z@F?+beqA_M>A3`g<-~{9v{X3=&4+{*5x4dIL|+b_goMrzr+$>D2HbxN;y+7V)#3ql zzysGH0U>_wy<+tgtc|9979VT(ra9Ce4+%{o{_wH6&4I`&MAj02dV0bFU7Rb*62uRF z)6i@%oQL=>5l_x9?W%v>5Ahx%exmVn8u$7NG{_+S=-;E&PxWn4{vqy=JlE(0QZr2a zxIb|?5Sfk0JmQ``$1BHr2SU6mHd5`$deP$|5{&^7pLgIb@c}PvT|GK&i#C`tNLj8ci zHb`J6F~9hM+0ZJ6gvy9Nz#fg%J*y#}b;LiJ+hefe(--0!K>UsG8+FD>xM*P*1|GQN& z8l^}Q|D^Qe4;7445YJiSbw8i+tQQigcvpSo$BC2++4GXXi!{8C9)eik0Y(neM9&=oJlu*U{{CroF+Qn(zt^d(v zJAl_{Z2oPFN)PV#=T}cjJgdWsqmMr);eUUI<4$|?@H>B1JTR9n+d3g389bF~>BaZVJLz0Gzl&n8pj*KMrM?c{!6MbcLA;o^UtE3g*x}-r2R5S9 zD;M6^itpfT`vksrs312Hn2|zHeP0d;t{wOWh@@6)meJ=EC@`o$Vck}FmF0>|XsLwX zm8krD8-csB4m603@7itrgLU*%tgBUI{;=FEIN@GxMBCMV#HfUzqlSPh!Vb_xI%LXu z$pYjCT181MPqhs-EpqM-e}1p|1JkU0reqy?9Qeea9RQxd_U%6P(K_vIEm?!Up23&( zBG&{3En<>)*2!n?^%bv9`2k+AvXSA7>TM!)^2i`xWmZ;W|6rel{w%%Y($8VmigOz+Gq;bfog z=VUOBVM>8+7W7)IhI6Ti;#K(r8;$7>q=YeQ11zjUEf`_U;-C004w{>0hS8HTujyV^ z`i92bf0M|%iCnb9J+=Fr63S&=_vjUWFkzss4RE{OpZ}wXa0Ts!ZNKt71-7y`O*azm ztrn7xgDI^s^;Dj$N;fR;jv0d7Czb&B#Uj-dijN~t1HT-2q-6oe?&7a31c3zeL z_9J|wl~dC&eG?>W&v9`u=_z=;1Dq|1uWS$u!M!`e9HV?O+ug$u!ZZlljHs^_6B5~e zn+xl4fU)vZUQM|NG@m4zGmJn;*es@c6jj!Z$6*6KTZ!za zO_(d$MW5(;DeCD;r4i@FAOcgAupx5Y0;cHfE_`9ZgE)KK-8zpJQSCjCxR-vo4zD6l z>opE^%WC@tZCyu+kPi+yiz>%^yJo+pQ0YuO=k|K9P<{&zlSErSMzdeV%R0oX;#@O> zr|ap@t!PJiize*pIs9zhX)Me~fI3cU)y6mW@urRlJ5AclxS_;wK3=5y;RERrQ%NGb zomcC(V2o|0P`3u8?QE0_)+sqUsm!j3SIhz5B)3}~nh^wlWC8k%^~T(^fuWnYDcWr+ z!}Sx;9VV^O&7}8%pZw?RJ(SW)}>Bb^J(Vce-L&xnsNWll6{=BZwjf&D&(PyAqP66q|L{T)%bcf+(@mMXQp zanVBC2!hp?aR;M1-&DLdcebP;-e}b9*>`hu{QF53tkkuBcQ4;CNM=%RGyiowwNo(2 zB-LwSz9MbghKADq8MUDBzZ#HfyLrg0cJ`fppBYO^Zp9GO4$bKtppp7&aYXr-9WC~L z^SXZ=_j>xz5GGr+*E%M>49$fS&15C^`RQD3P7BXp!9@K!JnSX$j?=^t1^;0y$+sD@ z<%iUJfseFc{sFz*`S(*g4N!lBZMoQecsxH+%t_nr?&tl8Us>&_7Y0

nA(t5u-LY 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

b2GOBis+dE4jdlr7}VdDakjV*p5 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%0A?I6Ti`nZ{Q-~*!C*M$01yMD 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 z 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

GLn2O#9S4PSG z2e-z;d2qY#>VrE|U3~E2Y=Zy6p_~Ff*i0UIF1zggU=kBOcr^Rw&4X`7e$9g?vN(9~ z!=#kY)8y-erxSTU_=65JA3Uq738S@`2QN%nMtD%-5!mhN2JHU7+4}l8oy+Y1^S+;- zA15nGnyfU*%34XXvXZQw>=2m5^-5bGztt;kQ^HoS zv|VutK-%HfckpSkLuqLj5}+XMO587o+u{*^cv7^_;hp099Nsmd&*6RJTS$%h+wknx zNf=%bv9sZ2vFv7eWpo*H_`Ha^hsQRv3{SipWO(A;Aj3DbnD6i%QQ#WBEB4EMiQ5x~ zABr}9rgeM5@bmFX9)7hYj-=aKnoW1LcuBf1Zr4nDC~95lv1B2=OKWQN8}ul z(jw=G?$^sXqG!CEBZfw#7!e~8Bk~fY7*UiU_K508&>Ioa#E9C&$5%xEzM(ZJj@T3v zd`Im1ixGRGMm^$Syit!hn%LmkIHMkMEp~TGM(ie;j6lK`$&9^c&CHE$U&<_u&U|K>kzz;o8E00-AT@K*^+%~PYg_q#W@D=$+v4I+=I;3T zlX<8$YGlShA~P{+WX4C0Q3+9FR8s3=+^9~8N%N@g(Q%C$82?sa)X@0mvg4IBs;K4N z|EQ|#a@JAN6JVoiugh6S)yI0-blu6NQQM+FI+%D<>8K+umNe=d!PZhd0W#`B;$rux zCW5QA-W(*$7riyls5%G9ir)K|)hDXCto{i^Fl%rmOk~9l`efzCF|Mq_gmvkxir7;N z6Wduzu(edIgJi9ZJ+&!ep0c(jxOmq7$eX6D6A?tniroO1buRk1ONo2(v#v%T8SQGl zs&{lK@^*G~2ZH~)%6E{_(OZQ^54>)6Mn^YHjLwY`-q8gF%j8K$7m*|(a(O&tbZiIc z=p_k58(o($w9)J1m%T@CH)61{_X!#db#Q}yM*Ast_B|@yNY0sRN{kV*GB;-J3@D| zH@9qxkJRRaWN%fJYuN_`$vzO>ew%&5I8@MDtq+oYCjQ80c9h_b@fnvpx7gm8=q9!? z$*r0g)1~ENoC(HufiXP^j%Zy!$e4lAUt~n5X-sy@Do3QJG5OIaD&hqgQympxu^PWo z0T41~dHf`fSrh%~rYQ1_+1k40Zp_Z;pZB+%V~JG>gp7#;u`%Zf?zoD9kTF*yo#*(j zo2;Cq=qst5lxUwhJ>qvQ=JbigvYa8x`DbW6%84$8b*Ln^O?8q@2?0Ff6Ak znpfv6jdi!8l{V)@*F$m|qY*J@a|=Do*&hAV&Zy>d_Qc^x&Vd9R$vGaC>_WtEb1t`R zYBCnlKGGAq9!w`MbTrsMZ_4}H!9)S0g*+Hu|uK`K6Y5^ zsfw|g1Y1ibM9A3u#Fg5yW%156cENSdHCBmEYlTF}*v5$F$L>yq>aqKx&NKEzOo}rE zTg$sJ$k+?<*N}~EimbA={4v*M5UOZJMM!S@$gMfCx{8q89>ylTmg$lklY0Xt5Mbvl3N?O>$Bx5vD~QX=WdR_H#>KmaTq#ss3Lct zaS@rydn{tmxu;^rmU}iX#OGd$5AnGYX?>h8nu3i>inK7UeRTfEC0;^4E+qkP$0?yz z^MQ;@jqtW{vC}-`auRH3TtW0~#<)s?C2xZ9v$+NtHR?Y?#x05pP#$kMPB69P+o`Y>@F`k(r;exMB0$o zFA_)d(xU#Gml+QidC{vl@=9ZHkyjCsByVo?j|*aOk+(QDgL!q=i?JpO7kOJ_-R*3J zi@d!NXUsbsb;i77EmS@)#^mzOTn9pV7b1fjZ@LZ*$2+2tfBf|t86UmvcYNPOjf@|V zu+L_EhKiSGtZpqVmh*X>R_)mQ8Q@D`K1d^J5nf<*y^SIv8)Iqb zgdH&rOo+c*ZbHJ{auZI*GWZD>W9ia_YjN@x#NAg>5QsHe&_1rwg3j@c7W6bWghz@z zLJ9`{-<`b$nJwYEpu81k3Myj~6wGg3Kq`n{V_r}nMdgAu(J3fMd^cW@_-?#lcNAX> zju2d}wMrocC*p>6Io{+7q{ZYW`dVyhVkolOKe3Im92%`>3YplxWj$WR9x+g|CVPWi`Q(+)c z(!#b8+%D|evR+u&BX;FlVXydvqp&~0n^1QZQaCJ<8WtAEIw(tsl7&@K$1IGkdl%Lw zt}qlvHv<)JYF%L{+!{02!rk#xTzH^miVIJ)SYhF**lI%InP>zlyhyOMR5gSYUX8M) zNtRaAoaBkhGpTKY$dfuoBhsWEu?4P4eIkZDX`n{w2@@tmCJixOSG3fDg-lA14s}vN zY)U3+?$=rw7BZ%9}q{fz5Hz~F%JSi3!CSA8GJSn;=JSlEf zcv5V?(4@ruLX#vq%%VW-s`;X}t^3W3lB2&Y>XzWBMTu8_6b)|m#-c2v3{cBz0;H&* zb)$JvWyI2o=3lpzR~$KZHmd0c=KXW;?0XiXCf!li(>O$ z#IdvKlP&Q;J=xc~oqTeK$aeC{DY499a_r{Z$$b)maq@uJ^i7VxE_`xs{PayOX}J_> za*d&v=%)Y4^IE`Xa&5~((Bu^@Ha&S20rx;A$KI1pZXlpHWOAdismZ9K3z@v>`rtWv zS7h!dA8VECWV~GG66CrX?^4CKmTrsNw6gl*cCAxa96R$}+~c~rD~`NME*=)0oZ|EZ zGb_$+B}m03QEe7iMW|Boyw;m!ix)=Fq_{RZamDr5ooOgu8?lw*ZHZ?Zig(7zdpP>g z^_P$qpCNeS>-<8Bnh zO+m<%9D*;gvLIwi)E%bOU3Zt#lvRnPmZrpxyiM7gVE0oFCfNOyQ&H_sxg6P_Zamc# zIWw)1q{I8Y`|T~iBM?R;v?&ZkE0eCoXGQ-Y}r zBN1il8sm+5%j>hL>j+jODS=Gg((>BhIMxE0x+`KaQxC_T|CxI1Iz>-C8(FHD%2Asv zHATr+sVg%6(%2rM(zXdkRoXGZs7iapQj^kwMjmRE<|s|oA4TdfLrSwE!z?Y1ZNn^0 zSoSEbzV2j6>EhO?QMxuZ0i_$`CZKd%`~;NlZSl3zqY=fG9*>RTR9uQwdM+VFD!m%v z;?rW4$)@?Ddox;OnHJqDHZ3J4$h7Wpf=ufZFUYjP5yCbtlVEG90S%d!L+~b4f`&{h zj&Qtb3tO#Y+LDN}rq%yn>N&0D?)d2KvD2a#@J>4z9qTkrgCdoqA=6I8jeOdL#GUlh zqTA%ke6jPmWl0f{$~qV)km95*>lD#cS*+$u*?>e%l?~C1#i%+BDa(lrq^vkW=(4hC z7xP<3UA8FtuyI#@OJ!S#lzM^87Gd*U+9@=)aXSL9a1@{ZA`dd9`Q@;-@iuY7P^+$+zH{-h`pJXJh$>LLTLSQ~xiUlH#L6`K<3P*m(B_^+#44yiblD9ELF zL1vnwhA}fluuf<>+Ay zVRL4A1OjI+h#oUDiq^`^#Ze2HxhCQPGvmr+%-m?qY@|*)Wajo51k5}bvF@3Xh##q( z4w)I-5;^k<0k=bDa)JrXl$L+4j8(s?Op0x9t!y6|ab@S&U%Mu#wX$ctS}Wt#QJImT zj>`PV+*ei@1xfOwB)hUYqNmE(r52TS@$IbENNSW~hg3GUQiICaDY?qM1oQau-653+ z<9~TH{+Gr&@PyVK%axan@Yqt_Vpgp9)vPwrR%dmHKbJPEbNsuDiG4OE^x1l)O;zklo2p~2xKpJ+i7oh7U5PT= zvt5Y?^k#<=I-cD*zT?@wBkG(zI0}WcQ(M#E*%{Zhl^1=yf?z40I&mswb~Lq_y&$op z#R(m)jwdd&H%8%QwkEDdQGCekz4}Z`X?)1+!!3KHryJyM_US~>pM5#Ly=vQa@vOQ{ z1YWAUw!lS6G?}XI5nE`kj*YoGjo^tds1K>m`oDYmtIH#PT)i~*%eu(ut5-*dRNW9~ zz158g5K$csXVnK{EgWvuclGiAlRj6U{r{xTb12fxoDSEe&vQCmx7%V)pQx?O85R+B zPG&;RGbgd~)0|lOpETd*`-jZg9kcH_N2B&V z=Tz)i*PL^)w`FrKN1Kk-NvSc#DYV9wpwODO2}W0w5^r=heWNk3W@sdQ)TFntzw&V{ zr{rt0BJNyM^8a(^n)0YS*VGck(fg+p@7xbapb`?OA-?J8v=JtVCmrI+B1m{1B)pLL zor-tw0mPpH@n;jiUKiY`zuFB6>?0oC``Uj22_J@pj}gD|-?7gDV$Cy(0rT=JPcPN4 zmm$_`#H*%nUk8Y-$|#M?Z@E5x+yozzw71@na6jTFFODby#B&tlIYIpHmpAMNB&iJ~ zsXcLKdH#=Ph<5m^+G$e42_!m#z z^eT{o?!;-0mQ_F*Dv8_fzo{D_Xa_+@;e1Q0q7t-Gb z#GVYXcOm}yioaz5;>d+K3Wx_hou8-u?N9{~pF8laHWfT=lt1H7Ts4KTNL3M#F4DWos<$FVdPf%p>8`X00p2|CAJ|X3vomMToa=I{ zJ|H65{%NaA*GGa0Y~n@k2a+n!<8vY~J$tNN&PfTC{H{5hU-U~GWrKSCb~E~C+MAZk*k3?|AQC06Ji>%N9h>llN|JGUZIo@2L~8+b4|+olvoLdcK%jVB zrYUAF0M0%juU8$aw#OVjhOp0^5}ejK?q(@jX}LdPuje#^k;AV3y)vYG`L+|-blX0f zzIJ`j4+R#gBI#*uSkZ+@Fqj{aURv`XEDAraoT}b()wP7njS<=1#R-crlldg_R<$1% zI{(BwB|^Hpn@R27iHU~17grlp3KcPopw2Wk|HULJf;u_~0j<^VJ_dL-kh1Hpm94U~*1r?`?se^2Tw$3|(XNpuxn%oNFh>1f zOY!E?Nzg+E>6%_MEGrg?|BgfA%brx(jJ%3dn@8gsnb4CLB0a|MobZ0}EB&G%GTU+G zU*4B#4!1>1y2TLB3={k{S?w;Unqpo#n9MU&M2*lIT>{4gk3#vTPC*B%`htCOcwake zRn+T6K7lOxf`3^;+mhhF)74A)4LRSC$|Q=-!L%r_<}XS*2383pg(=(nrn~>eB?M6A z0qO5++H{zx}B)?IO*x_xeqs8 zEa+2X$sfyfZ1wx}CRd-%Og?+BA|&`xz3l40hSFaGz?v7_S?4+QQD296ib@Oa(I}$b z_r3hnefJE}nHcE9|iqHYGmJzS%Gze4d(?pfkxJXI&j!oTKVS9kib49_f>1#ba3|SryJEW-fv; zp|}3{3b5{|3ggS2vBP3esOMb`sx?NA2l>(v(NR)gBLL6nx9+!bM4o=f1^!Y(b{nPw z%A(u2tIr{*;^xxEeP*yDlk(B;mv`uo!v*gp#3R0Md){t8uICiPQ+)o zY2TAPvrxSa- zfnF6j&PcN|yb; zbOS?4?~u)wO_j}*U_)oWkb~gQ12;J3^qi0jtY0O#^38+ln$Z2ek3%4YtbVTsdpT|~$ zfmyaqX<2moTRm9CHEK_)PfNV}E~vX=TcwyB4~Ss*;qSY55*etAx-447luV$_u}_%x zhfuHtDauH+2#qeqPSdB}&kNqI*EeecNtL3nh#u1%3gWowO994An&0DDAAq|ndy6j? z3D_w^`mdQYI>V_J`sMQ=Y4zNdOHeq!TN~l)2gUhJOsW=GaFJ^u5_IQB2Iw!|X!^!q zl}7IDlYBO6H%87~pnuOrEvboq!lXWg9L{vBYg8EkmNMjGMG^zh%aELfzBX*-mj8FX z`?h@zb!0|!*LiQn33O*dR9%np+0ABikmYcdy5kGCw=|E$DZ$4)Bh?9;7rD7?fNinq z-H0fPC^SZF_3M?{tC(OVYl5Vmsg8_=5f#I!K)K`58|nMMSfPsheNp^yJ7Mx%e}&YN z9}1BYi1_5%2c%g5F9CTW1(S(d(fCmd^g&2KW$aHotcp~0B;+dRbIcU8dIc8WufHsj z8KVkyq&5D2`@>1Oz|6x7DvAlUL;v<=A=gXq2M=__^j8^SdjudJiy2+}?mYlUc|03~Z4P^pE9B zhYDVn1@q*cHxm!0@&mNiHekRzY)saWauf~~T2(YSxWsn6#;318J&tCwT#A32Xdz|@DBSomPK!X+Xgen=bUn6@)L%!YZc0!>`ZE%_pon0Xp3QzU6UH~Gy( z-jedavTm9CPmcxnI+n8d_*j|JRwE|$_Le;pV(YWKz=QDijRx|g8(+jPGINDk%M~8T z)JuElJ$OSMnTxDa`MroD^PbeH*$$JqK}u{40b+uNd@gzQ>T6|y;zG(QA6O9^eB_r4 zwIjDv)I9!rZANdzU&SDIdV5x_LtU8_M$o#ui)S<(R8Y{-ldHcX>;q+DM4^s5v^LN1 zGv5y9#Ig3EtD<%E)i1mj$El^$EZw;UzxeuK>Vu(zk1LafUz}LT&as(*xl$PB7Sg5JO4l^tTHzY5|nAt?}!A-Ig z_f;4a&!v4;)DT_5)~7&ejPOlfO?Ewzcq=;Ll0hEA<*pLlM7eqvDl#i;A5 zP`zc~PYohPkbHCXf@tC{4vI>m#cc1769XP%W91(E&7+D6Yb7?>QEe3vE zrM2J0ru{9sua&KPf~#Azul%J->v6P;#aI0m)iS&W1}{$jAw92b%2RyYpge3SeWK%X z7l{YY0e=jgXn&RE`uyI#(XH2xVQmaNO7uO-&zk6L@$U7$*7Ux}L*2=bz0TggTK$o} z4-8-u%Vf>DH#^z8Z8tl)KnMLe4|ym+FL;dI&8O;+Ek|{g)%OJs^5M%k(|9$-p@odv zL3{=yp&CY>m&-< z@X1{E4~g_YWVkEPuA5cknE<)hZ(ZsYIVbTubG6^~hkWBtSgL;ssJ4!q&c5j7KqUEl z_h1yyh7SwW5KBWMShmlY*y_=TAeOVPdzb1aIN)VVtsn9q46U-O?mcMy{*$M}j>#G` zy$YSN8xg*%{t26E4VmUmzTjM1U`B!@T&C47m)tMrf+gYN>%AnK|I)80RC_?{Lb2uX z*x}1?Qfs!Zwf5O>7mahi{a`BeUIn13CyinKpWUUv20qwEcq2H0rXi5F>sD=K6L3X9 z15WasyLr6ECDHyVEs0cmq$pQASPRO(*KuheeBKJINyUf>L$laCjly-+(m5RQwJ4J9 zC_Z@TUJno?xfG|$bSvXoInS-qSHzywpWG(+tV=V>`)PD%(>UBAR z9!%u5&sDycv!~g)R&dkxzV*x{3ME99IS2B(9q*mUi=n>TS>I1<7+|Rdn5tRvq-x_cE?5S@_336 zb;U7y@Y%8-4-$fju2(9jODi2iU(ut(>o4Wp{7}_W0`uBKgLa!&V@I7J`DsS%QMoTr zeE+GPe(O4TK)$utppnW9wq(+}3#FBmk;Ats>;k0K%j=GckRuAI{O0NxPYEsc3XP*# zfkvWDc7bfJj%;Eus%@t1@TvG`4=791;v@z9S1%I{!7w}hI9^EL)6Dw46Y%08aSQRRgGKG|Gyks;YkY(y3(!6C;37FD9ucD3^ zu4G`g%AmA-l{2zUKG@Z8SX6iFpvgO!1*)e~zNfF|m!9ZNZam8G>7Xei%Vv3+B-K8) z(JgOto0;w*h~UsAfB&Nd@AO!n~pI(D7$#SyyI*ft0~p8yF~3JR3MJ? z!jNz6@^l;uFAyg$xZZgbykm{oUu8w|6KK7_NJC8L%Y$hac&*|f`Y7C?*IMa!VCeUm z!`Q?M{_}~$=G9%m2`k1(pvHfhi~>v_cza-=q9eU+M`4$$FN~+W1S}_yS_v&_G9#kW z)3t2wHkM16Ekig(_*h5P(HU0bld!nIncY;j2Hs2tva1L^vGle_fFdt9Bf5d#w>42^a6&VIp#6x~`P*~!!3cS!l)L@}JZ(t-E71FUkYcL5dvPI4=>ujT z&S2qV?)K?xO{Gl#wc9U!-NfovB3X}eDZlt5kB2Oe+3yNe_tLmKh1t&=XK-Q;L=aNG z?9-ATbRirDGCkO7wl-2`brUzF_xy8apLR`Ztm1EI+G}O!uv7($rIF96x}w$v&TQ2c zl5%-NH!9=4lEL*ONVmk=FmcHuu5p4thW^FWQSkbfUh6K^C#Km5VTu>LMm-40@X6^} zB7k08NN4E5ej^twV=Zp$IL3_lO1I0@_LuiJV`2}H=jIg;3S3(V%-Uc~N2?)=QR5-B zoK$qc+tBE}aZWCh)O2%^y{Bp<8m*&GznfDVb1HO&Lt$wna|v@JrLsQUJmJy0Abz=U z=bAiJ8Ps=)jeOH^PK}$K(`PJtm|V1&%nn-5_YWN+pAeTLIAsYo@9Ix}QEMv!NX_pr z$w78{kufQj+9S4yss#l+BX|BgQ#$PnN~ck#bA^@9b68L1xjI$+Br|gJ$?O;xvW(Svz5FuV`KmbXRyytPunwto zv=FdlLpXY;%A7t%pkZx&IT-Zza$^WT=_#`NX~=xX%c|5r z-~`-Z*m|Hl_E6dCaN=nH#*C^yeF7xWNku1X%rPN6NL5~*zwGqJZPo|@@vWF=mt-@! zxaNR{mCP!ycCT~LBNKWzi@TD3Lum4-&BTFXpS^!YyqX<EJGya(%sxJsB zWi*Cg-?Q|#U({29)8#)DsWc0^jp18c|BefLpKt&y<;cA%x_QG~ONWtA$>{l1;pn0p zL7ZqclS!GS)YQ{1oM?a3<&K!qkiBsx^y-Dy_V2>8Y@O$bR_x^7r{>rPa$d0fa{`Frg_gY*g3$#5+qgH=( zJyd-}0A-(1TI5w0J31$T8r@uN(c}9|ZP^rke(t8j;c8jw_F46L3*`!bAk-3e)Y#~k z?V4bR{VcT>{+gRy)aSrF?}TcmcY`_h#*d;G_2`JZe6SsFcOvB|uvXgPe4>_wg&Gnl z2aCDJdh1+D`BLq(OR$3!=y48u0Sc(`a5-V3RK0dY zMgUtc6F7ekSybRrx^J<_X1r*cW7iQZ*B8muok7*q*)6;xIIf>=mNT@i-d*~Q^W6KzJCFrwy1&PjBKJh+1~E`)k@FIEn_FO?sDO7ZA8Cf@f?jfd=v(fRfq5fyxa zf(G&%59UuKi4N+~*QxnUV^voL3t!=x5@u<0#G$}eJvM2m3Z-;8g@(Wta3Jw{Fbj@cB1(^fik%SCfzGkXQ*WhbiC z6FfMf^Yp=3$YlQ>; zV@%b{Qqiv_3(^t`_ms9F#necoqNaN#~}u@hBTHX4X+ zXM^Va{T2sf*!AAWQxEJj11}59#5bOy3dblC_oQ1*twZ6Cjv>4#ix0-$h`#mv&WF;U zIItu)3Hk?2oP^yQMs6B~`Iy=3+*Rfj$P~br;{T{(k1(#Et{*C3qU^eYY zn|+Cp@F4}1RONJTDQm9=%FUVB+DfY5N%ku)N`h8YefuHFMozSoiPoP`$9uGMN6;1$ zJ>gY9pRu`3@l*>fDMn%H_l43Y@FJpuyMHm$1UUOE%IE!$@>sQ@h$zc)t6w5Xv{ZhQ zg|Na!4`Qr+i-2zRUnynOCmS%H+Ocr(v?#Ok2w0|xyr1Iz*z(^=u<#Luc;ya%@;qLa zhsq(p`?kWBfhRSG4rI!0=5AEo9xbC*nV)!pJ>$g2)hoHb|LdZ#O`?=MAN;oCCN)nJNA4RhTFFK$-2o3w&g6d`-@U2gwPhSgGhb_hlbWzZCl(s0jf@9^X zm2~+#?D*wxc?M><3_3QoY0LWo3z`??MyW&XakL3^#}s!pgWvg>u6Y{EXTC3Dgh`$K z@{Jvz^U;D@2aJTnDj!h!-=a0WFP^m63F(ZsSzsqp1d#dz=aMI0I-CmP*q(ojcMPrV z?7%V(WFmGoi`az1Pa0702$t&r(P|vB3}+7pTCp|I*M-An{@xd_hI@^ zB$2|8hzpDQZ7wMj?Lkc)O0oW4)G6qZA-(sb%AJR+oxrvNynjG(J=?c-n-&FyPK(O!ZC+x~<{q54PpZHF7+aj8E>H z-f&GhT7(4#&cW1<@J;nSpF^;({^WjrsFHHMYtm>H|AEHtUe)8>%X(TLO`ihL$P>!n z-xUQ%j8q75jvz{PU$Zk|^><<8&sba{DF0H``wD51M}ZgPQoB%Py1^jwE})T)4q9&9 zEi29kgHLF4KPF9$LfK&*OM1h5EH)P}49#PsYjz_{UUfQSe)vPes*(BS<|~Pre1K}q zzz@ctRLu?Bm$8Q(g4N2!EeIl>pm;!A1Y|l_LtBS^8n$=m(y>efTW!)0U z-}x=Cq4>@v{i-W`*z&(y`QeG@;Mht_c^|Verg#4E{Q}Q3E$1qRa8DZ-^0eF!-ZTHY z1PPQi%b?k7u4-arlMTM}QP$Ol=(aYyXR|;_*Mi1OQ+#6*SR_ce2z2L zq8rK;7Q|9DbD~V#V_QU_sr$5Si*~=#e7`JS{xt1qlTCqIy*P$o+xu|t`fql;CG2b& zY-?Q?lw{wGUemSH)$2G9d7o@=YsIq!z2?P@<~6GPx@9Ry;>2m)qdkd3O^+1Sm$Fl> zRi|!1eP@C75O_7se1Jacz(=;_$BiE1^2bDbkDo~yzi}Qnnn?TjQQGE^k1$xLO^)~L zb}X&j17@)Bnf!YZ7rN)vpqM+fRa7~5O{yedbQbv)x~_DS)}T*s0b?%hy_&PU#`}j4 z-ah)+ON+NEE@1?1mq&9_N2?HCC(`J#5y~d^cKC81>PQvp%)=lCM>S0#W;nvP`os&| z$JxHx^T%MBK2*!&1pbkfEg_!`22~9!*ZkbHO=UF}b3vu(ozn=#NL_e*q_zV8I)72uYSYwJt5{W)6~k%rdq|_bS|_uuPzt`H=Y2jRgnM2y1i!@3_b?$ z^1a!|;Srs5y%<<{PrRe(;|K@*+mh~)G#|LP!UuY(BHHexrXoz8gRuglxh{MpREr0j zCkf?d@SU|y86mW8LS5kp#xfbCLy&4FW&Dijqx^r#1iBa0gqjQ`NcXbF##6otv!rO- z>0^78;6*>@l;FSd-W7~L_*V0?@bQw`IGTj(m$aP`H?Za&EvR=Z(56%eu#17UyV@08 zVDUIgDmq5#Min#nakukc;W?}d4HEnCuZ)z8kz(vzAT-k&_*W(OsVsOlV^o{|A0Qa5 z05#-LzQt#3R_Vmj&O%E<;bkKZ;rg2^Rr0B|^|rk*NnY+aqUN-YsZ4}A!hhCeZ!B4XWvR4b znH$~r{CF_+A0Qcl&X4R*1b}%jx3$lXSxVuO`cBS+DP`Eau$>>Lp-#xPcfTq;SNafA zdx;m20jeJ}X&yeX~@~15*c8=Z~K8jw}Yh5b)%-vd#1t!kH6RS^cuO*G9;g_W! z>$${^W?wG)1*~zy-+fG#S{dOA$1(oP-!JyBPH-TixajrCam~SJm3nk@s47_f%fa_O?(FC6#G5RLPeAsS{HQZfdwk=;{i&=THBq2AjrM_Yq%@5Lf%120Th&X_ zPqD*>U~tWghx?w(Cl^?Z7cD2N*1QsLI-ZAy6B`G9rG9itng%R&Vd3ySr|O=khshyW z|5KWQW#`{YGFJG6&VXM6P>bA`7Vl$cFsnn*>fJN>-we-V@_gZ$=n(&w)Sj16D($X} z_7NW0GR#qfzq&7F74?1FF!k-F)gqv3KIVr?`mG39csI1&RdSNAdgWwg)QLNy?}UiA zbdWsNRpFA9(AzXk{`sTr6Am^FhtT$Bt@ZWY9h*yB#P3RoCW}~~lH_uH!b7lkZCr=* zrVcnK0ePAC%4m$s>G@_TbLA_$BnR=rN8!9}4r9fHyev%Vqp_@GX!(dgzEqtj+~i_` zs+Dwg(VIF+a}S|U9W6*^vyV8Z(sQNYgiH+q)wX$xt>8uG>PG?%mirIij9(>I+-+Ps zTeWZNv0SNU(fTnst(soP?>0t=oY5uGFBELJfYvobeS*YSR0`Cyt-7Rl7ZYp65a4ry z(sn9X;7$G*WIc!f&P8S5D`NnQ?L8>DsAl&35$#>C?(Q&a_2C5jdx>3%8XurA4xP3e zagCvRlPyErsrp*Q;HS2S2rY%sK`uWPG!%R}EO46>wOF*g;N7jy;9Ei0|$*J~3g8o(Ouw_Vy(?6fklrXd(5 z4Ye4Fo@RrWEa>Z&Mf9Vu@avKA4^@ZGQpO+AS9&!abKZ~#W2EU_c z<yGBHec@I@rtTnQ{8P)-}G00d)!_rIr3AXB0 z$yGIM(*=Hpr0*enCN#FOg}+McoZ;r|=XeS?bwGBNW5dT4^gLAE*5$dz)LnP8QaXAT z8SpNe3j)>e((Veb4<*YwW1jd!-FA2H;cEC`7Xz*Bn!nOP_4TE$WtP3kl%xDJxm$ZH zJEM}|?&<2?9{II?e*ZXHJ-S!Os(`?8VI2+6Sg2Q6zX6(=^fvA z2UBVFfzASqTr+s40g@i?AXmW|icB99`uEG~8^>{v@R7fIU1fMSit+TPP($lMQPKIL zGC)AUa{Nzvc=6sTC_0X|dCa2hc%>A`pj5bI`r3I`BqaENyHN+})$?Iokge(DLXW!l zTx@~R8>;rea#Lx}hxEPxSaqh&dGG6+6K-RMk!}`E=S4}9kfVN1(7Qrc77lEz1QeA) zFRnPzZ4LnVi>$GHgS8@VSMZT%5<3|^ zrGe*4+2e$wb7%`2ErNk+d1X$60sc@gh6gK!wlLNEg38hS}dNXIG75qDb z_^v(374nY2%bJAv1_KkP;i3GI{rAk|;Dp9U55r3_c}+V%xS@jAi#{w!o%Fuxhf2n7 z*ozl>`Mgu*uv-@<`ge^GFHbBs{p~rpxZC>3c;}Y_Ur2Q{x=3Zgfg2g*7oQktYDiUK zbUu>%2yO23mwFC;Cym+4Tp)v7>jOZFkJMVGw1xDwC$M?W(7~&z7#CiWE{+0@l1*1d z1jZ#CK8P?Qyb?M)UpfXG%pCx0x$27UrH}YdF~Ele7v=9=ef>DnLl)Y)T6{*2=?+z2 z<`;KGstRBf0q4hTR>XGJ0iN2(1gY)Zu~&M^NI_eOOgE=fENd31s*@FM_9>f{i_w%x zIy2H4%}N?mXs4&1Vc$m|a?>@NT*NozMdidU{Og^p~ z{2eOvw=5RmKOv~xg|tw7*;rSp^z34?J8<_+^wJ?P_;vIsQ}t<&H^Fu{%ED!mXkP}i z-(X^$;1}BmTg^KL!UkG!e9UgQjB?3YU@Zjh2wjZ+k^qb^(l-+mIDn38n*W|=#qdE7 zEOVN7Q-5iIoxp(t9DDGWKESHbo1A&9q()_7S>RxKLWpIiAG2x(yUcgU4n?czwPu44 zZxI~s%CNaDT1;;Cs4AOs%@N|*AotVKug1-Sfq~Po=ld8Xi{ZRvdwKp)2H^+)tr~#s z3Cm*3wi(8YJjOzLbnnH2tixHAcr!w)?~p{Pdv5^f$%e25*GQNBkpp%0TH8vC$=uIG z(3L0KYc&j>9%a`%m#L;+hwv*xldRRRArJP4m_(z|C&FM zHeA&NI5HtA#k%9Ar}{b2ip5P6vZXA9%7? z4)l~K+im+LHK^j_F3_*!nqoiI^SDizMlSXG_bGjvKI*onNB`cFSO}9hsknm-9Yc>-G6a$R1Dw@<>$o>+9{z#L66AHELO-L;5}=(ZnfvcoTb+}XYeN|@_9 zC8<^NLr=NLb2l+%$+QswH_C@zekIO$EqFFM*@%DMgqy119uH75ISX0f#&InB29wb?%yU)@W$=&TqHM(41Wg}ggoN42>&Ig96BCT`l8u1Jc z^mi`Ukw@o}*h*=9qtfN%Qq1!v=!A#EflWXI8$4Y(d>#cm5SKN6+O-C*B{rgf7{Q&Q ziz(75^eG(Q7esaNUo+voHW<;ickk~{oG|XQKAje5{#Y-NB})|;nNt5?zplw#Eh-(d zb$l;tJcti^Y)OB&dOMCQ37?Lqn?I<2e?yb2Iv1OVOr8BQ&&-33m4rU0P5;p?{r(GB z;)ac@{OOk}N{++w5-wrxql~+ZLuethNNkmH)NnhO+l&c)=Z?W|~(H?O(T{PxIzO|8Z z29#oip?d3z5QH&qgz5 z`gT&<7T|iGytQa8q#QSb!DHnbw{LXMzn{SVaE6LCqc(k3!ZDCi0_~gEL|g;@tFqA1 z!L)wN6SKWrfSdXYz9B9*^KYmTjBSd4Js*($K-*CUvVAUR%U*4_m^=hT#GfuKm|Ne$ z3c|z@lpTi8L#9U-RJ7AwPEy;J$vDnUE^%)T(RbRBUmXCp)s=g(K<~M|i-(XSOO#!` z*1h1?r$GLX)-omCp+uJK( zRX>l{JmIaL=RX+xSJo~Ch8~B?D8IVmY1~w4r-jO|GaVwZD}FN2R`mmgBnW9{P+a&d4%{o25>-aeY3UVN(@@kI^T3Wm#vC;07`09vxPAD*k*78!7_ncZ0mooWV z3+lw979n(&5gkAObo~ApvqB4aZ1kYmrOl(JnUlOS+or71tT=d`TGrkh<&sjvj4qcF zHCpwt7lerAnv{&Fnz_-6l01!Ka4R-p$8IsG_eLe|egT=7dT^9MNN029K4q`sHNL_(Gl z)%YRKcp^I5XYJqYgm+uV=3ZrJn@?2U91^+O*}fgMvOB%o3`Wd^Tn;tul}-E)>Sjc% zE}ryeMN}p8RKn7xY6SHr1*jeW-8yB4EGJR61dgrgyx4UN5W_XyRzt48)J~T(496mV zH4(>uytM}dwUBJxkde(93a)pH%iF$MrYjw#1lmV!v&q_^1Zz0ps|CWMrf~dOe01z=^!L zaiab|A$@c=II}jfuZoFcU0~G9Sqt;w;UoCT4^Y+DaipX@`Y=u-l`=5PlTyVP3hVDQ z8m-DdX?Vl?;FP3GShdGt4GS+$^VSXJG&e3!JFtcWp(j^eeEGwH6_J(f@o~DD*v1d) z8qkq3>`^c{0crs}HDc_mK0e^Z%OUam9Y@U7oB$&|qk1`LESw}qbtvcTv|ll|0~DjFojDN0VZ&-?Bu%a)DYso@zm5XcX#&MlPTxHVS zcKG+6;KBHM^H9r3T;mct-+8RdVx=B`vJmR1%`49QvJ^|vheV}<8@L~ZXBhBg>>>Su10dW7WXVl9l%C_ImlMi%Vr@1!tNU&>uly!=*0;f0Ndeb(b zBU*$LuY>GG&Fhw!c5@gTfJ;L@(fR%c?>)GB z4cI2aUY>?a0c81v#tgu<|MiC>9JnkNYQ4>cTij@E)7G8$kG(TTx$q~*cLS{l?@Tci zk2CO2T1SPL%6T;UglXib!d~wqIriMf}*2vHE&rKa+#1p7D&^G;e-Q()VKbHz-`mDVfJ?#&svfRGvLCTupTc zJ{iN}LX)A1;;k?+h$h84eIBsm4xKB~M~1f;Eo+>az) zZ#-F^mu@c(*E>jLET*T%vGRabzU!}d{<~^Ke9ePAcyYdKT9ciekJF*dTD9DAMIj`q z{mmC4LP?QtJd@d9tYa+_KlXG3^D1x-yJF?w zjkQ=c6mYQbo8K{bW*1Y*iQEy3ni)*{0E`geGt*In0Zl3d*pV@+L^Z#thjfTA201%R zs#cl|PX8$d9}~}vi5Gwu%gJ|yjGcKcgC5&>MdBxw`a;`6YOqi-*7W2dV+bS>Q!>l( zBynP2DsfJqa2K@8a4N>TT|b6wAc3Jv z5EyO2YHn#yUm^B5d60bR%nFgQD-=LtTy{(p93nMvI@xOVWM5b3mv=GtCQh5d=B78N z50iZ*qIK5f_uh1jn|EJSWmGXv1Htx|Ue#E@sd=TPBKwjq*7VSxj{NVrkdLNFptmb59+J zafEMVJBIYn2y<{*N=4U>osIF<9bOdS@2GpDU(d3zN%Z-dEyQk|f@=@-{V_0}n+q77 zK)(B}Ir#ZXgH>mcgypyEJMaR~>kI#Rym>b59UGM$oH`b&B$kx|_+t0NCoHCfMV5kt zK+PMwp3T_G!(dsST-!8|5l0+R15H_M4`jfD@*Xc?;wx=(=f~W^mjZ?9kU#w2qhoS5 z4|@_Q*#IghveR;htPZs#Q91?x9aWNzr`hqN+OI!)pJH!Hluf4eu{>E?X52qiO6$19 z+-LWk-UrqI_=;b~s{u~Y+X<?sL^pqvG6*7Pv8f_#!(G@^wDOD*qw8t=$r}^5B8m;#+(k3$Q1U933uICtttJYW|TcA*H~My4z4^} z^9?83p%gU{{CPp8?FicWxm;9goJMfwSbC$MnKK5_iW+63o{=Rg#pAA^QL8^yRql-e z^IGtW9Z$h?J81;^C#w9v-H@r$lYB(Th~6r(Ri@uyPITJ-b%FW8D}%_H-zS7*zN@j? zK!MG}ukXYe0Bct88^7$}1MZrA04WsUxL($!fg%f#&yMW+Y;-jNBu#kqMWFYk*k9>y zh2S3zmNE7X&zXt0PLc<{DSo^e!ACgx3$k;zKj2N*NevRLuDYJ}bU!lqFyv=gPqAXIB@gt~*pC&*I{8A9@o zROVB#hh&NY$CccqG)n(F=_7|EPh+XpP=Uv?T<+r@z*7}2n{$bx)`w`~>hIE~^?wO1 zewf#T*QvcBlo9UiPx#1()ClQ&{SrC16MXnR!(A`Ap17>P4v4EG<%GiTXyPq(q}Vb# z(9mc>1d@cFD!zAUUL*jaag=wrW=`+@Dgs=OB2k{x!}bz7rZeWPu4FJnSA8~}kLDZP1zCp< z^&L`v!a}W+%&YNg4^O`-P7J~zn;a(#V$GDWsUxe(_S%-3#8(2y)QI*uvu`8;Vr`;a zSpae4I5MP2(k^^*B90Xeot4iEt;_mqMSRQ2Yw05o#{5U4fPA;kvh6^D6O1cf@OP{l zVKHzKpYs$-3>&k3at;lPn2I!pJa=PZ>`g2Id7Z$2Rg3S=V?RqlWd}Pq6w{}ZH}G)u z?i2cp_&!e9&m^+&z;gCb7K$o=a(}TR`G`&9kb4+d{3Kj#M4aK}+mdMiJ$iHV9%GR~ zktR>&Iu50uG{WAWh13n?SiY=arY)fS<;t>%jF{Y$4zSKh{(cpofc|?vINBh!ce86= zFi*hp>{mM{wC`aq6^VAw?Z*N^un@s1g~}00p}Pl*EMdu0i|Ax5wE$}PiY$&Wyi}Cz8v5TwHmHtb#U1hWL|g z8heMS>fp?%fDH}&-}=dA6joj>W`7F>iffJFrECAEpwU(r z_E&U3&*PAy)pp(wVC__}LoOz^a_2Q;(Ot>X&yQYw5w*ZX-57p;oP)Zcl7F-KW-e{> z-I;@nC?#%qq~~LX9^6HhFz7C?W$eDPjkIpAa;12loWk7CgQ&XPSAMtt#JjbD(rs5p zEJQQ#=rS;dQu5gC*JUGODGx%O7YkWv6x4s6PN8p@B)+T^0_^-?Qp;W;-*7Gyc|=0z zTw%e!qn$bwe2@0kZ)MPqa!kLKag%XWcBJrEHXqV0Rk??+lHZsO0ZGS@I@2c(pRGy6 zT3zxdc1^)3_#CSdwL$fimB?%+C)o@ey%;;))J!+Q^yEVOU5lq~6Z7J5y=YHT*t?v5 zZX)F@^06wly+YvfE6&SNgTiI@2qG=iPb5LM>y@8@k;^bK*ECpn z-2l^m1Tmi;=N(KECeTx;**9{%ONl#&a5v|3AE$qpfl*8EAMCUcUTA};y2Tb(-PGg@ zJk+k9$REtjFF2|TBucE`t8*sM>Won}eD=(6g@IFW+9fV2AN+%0>i=KIgLOad)#w6a;OT>%4Wcq5^P7;C!Cc z$>)YK-{My~IB!U7u4l)-RG%|rfY(YvbLs21cY-;<7mY=gQK3G%Q5ZXugwpR&J1;wW zhz-s`*&Phuna&GJe8CU>6Op34!Lh0W*h3imI~`w2%=@?>LfFk(lr($K87b3)fCacD zdti6IWHFNFHe2e4G1K|{P^y*m`Nf+*Rmr)JL_L>;zg|nbOnUh5;I4Y>C+jmsV3@^y z(sRh!ZRm1w`>Y%;7)ZK$p-c4qo*ht12Of_g7i7`7Lrd?0$CFXcf9&ExEFXZHIVj>A z$?Tuj5bK8|m~ys+dblA6pQy-$^3b83u22QYd5t0K!@{(UE1y{w~|X$-!5K!-llI(q>Mf* zkzB5sN10hHvpjQ_i#@1PLhSZtSTmhq=m?DQpa;E9~_Q>N>#EAf$7n z!H+V-0oXK9uoWp|)x8x7-bEB!v5xxQ6N;koXJzZWd8hipp$dQ&-ttz-uINyt@EsQ^ zaVjGOby!-*&m&fc9uWaL@R&5@C<>&&3V6a>85pc~G;Ko9 z&;zfczVDR%kL`q|cQ^94m*WkBF0*vWbp6lEbi|L5Opia6Mn)Q3><}u8zQzv8K%B%# zKa#UHhU!8HdvOWbFu?V2BxVFKIV9u>x3I3!d*+b>qXob+Cvab^;7J z^77d~qpbJ&@MWM2G*8IBs*IO`;4R>xkgq5bh4o`Km}&lXBX>h>D3RPVtJ?9+h>^t2 zrw@}>Q~XgNjU7gk*BVHlwg8~`a=5Y5_?`>xh-0Es75AY8Ht=%*F6%l+U8+0?Ek?*m z^>$AyQsb9_w zmRMH*dcUy9Mg0{6T)D-`B9#$m2KOw8_;Lke%}dJf;XMF^+d!;Aq>a3B8k(5#$o1d# z@>??Ro??~1klplqZsvRfQKGPO9_;?{Svj--MwWD|nZP=IU#(mZ!qj5U3C;-wmdl;Q zH5Hv;-U~obg4KHi^oskvAP89X?D?;pD8_F%P@DFQ!tLbysv+$+kPX6<7fL9|>`_Bj zn#!B2fC{}3Vwy9|CF7#y9)GCR%mtX!2(fEVuNY643dfo=7c*LtK80;vMjY{@z1jzl z)^6jX!S|VAxSYQqWXx4^rsS?&sMT1oM2A6Rlcm0B8E*trJW8WNZtNalLvt(ZFtX6N z{sXuML44SHCUx$56VL-hKWNN*ut*HYGBRT_hudTm!-KHiJr0x8n@mtf(7d0VTWTB! zs8SfqgR7`oaD9IVjQUKTev{5IzVKQo@eykd@HaKNGm&7L7$8V!^>i&Y zd@l6?%)v5v>vQa-z%>np3paSJ{!s?Py7t*V?NtdgI?iyK$M9lgxABi9WVFjjsy7^k-qz&QBqOBs%R~+0BPae#U&KBpO`(;9C zW-_mdExSQ@%y0STge*NBckc2QYf)+XJzVp@d*GpDnS|#e<1AZO=$2WO&HwfrZ<^dh zlmiDSO<1!xG>E&b=^@!OEbQ_ zwJUTNrL!Dzmz`)j+ znfl#TFSs`Y)Rc0*F%voiM86_@rk8s7d9Oa^g5UMuuCY2g`l|_fPY;bEF6+sO6$6uM zFX(^W5eV;79)QWSkfjvH=3>nOHD28_+zheq(nu7@`^6M8@NKSi2cgr_HL%13e_TM|?sUaD7dxuvc*EzCdgF?uIS9QE(6Wmi2bS=` zVp5Eh2NI!eLp102RMa{kofX8A`OV}s!9r9NY zubJ6$DGYLhfr(Bc1Zo~NC@YMU5%HPVV{GA^Pi~vfM}(jIw6E!!iW%@d%ixU$>d<96 z8ellPYI6NJJqt#0Rah{zFPg>+F&MvD{W%Cj=5AL_)ZBO#WF?i*H9HSRDQL z*@^d>wjFaLWh+eQn$i`hF|$aZW4PZhLmJX;R%D3hmp65es%jPRZ1hQFZbw`cO($z7 zf4`nQXdy81-xbM7-^3ptzDd^;A$)`w4==XO7AaN011z$iBZ=YGpBpw-`WQ7}8|S(t zwlS%_wY}M(&;ra;#I6Rls>yYC0+Uj(p2|T5Uq8KI zfP9yNR@rYq9@iF*j!bvf$x`Dr#cCJ7Z0fK{G+`ig96Ptr$}u32eCU9kKlg8()&S8) zSTC2Ir@19GSgTm_Do3&=5O$Z~NN915l(>IWFDBA~)r$IuXf!o^o6ygT4%*iD%?f{$ z_*0IMvWgaZ@gb3xu8e^~cq5I)7*8$3ad-*Mh zmfU7J!b+9$SCdI`0O6ia>+a-`*Y^6wz}R$HcMm+095B7I*St~S3L1{bZnhn*twqhK z{pLa-Z{fDKetaxSD9(uVC z@t|r4tZ&xAkh?;)zGFIBit}xyd)bG8#|V)uMOaB#c|^bfvvOXmUmD|I1vu<7Nga7^ ze0BUAQ*s>hs^V*_U#1t$q-+NHYfs_TI$R5A=N!9m>Q^GTtLbCKOIcpzq21_=X7;ot z(8h>R)U~ofsmxA{0+Av z-e7+ToSHDqynuMoK#R|FeW-d*BET1R8uKf3#rnNB;I_9&xD?oka9{mxf|=^<+jdBK@!hJD0V)Zk99Ep;U4q9O$?z&g8FP2qT;P2@&$Z$9 z0i|mMZx(|Yv??etgdSYUu}Pnvz42S@Li}Yj$CCJyop2o0GOnPm1IoXHO}K!f)-ZCH z5Ims6&)x2&MT*RXUV-@lLenrK_Jw+`nINQwfrP)ORW-(4{sDypIL1*`-~CrCfE|q? zzt-?%c)@84{0zn7XO%T=xsCwvU|G_3rQmHQ0i1erHX{2i31{dMLI%hl|c&QK` zB$D-gDel0ML#!=8a5slJC+dUb6VB3h9p)oBcrYup7{4L?veAkLdY9E;Zf@Ixt6?!w z(rP4I>uccuERN6PJL{_3KsywyWDU-=bSePe zl1P5oI3hy32mED;71?%j_m^fEzZjZY$RF-t?A2SFF1oh7;lhpnj{(6fFyv&IiPhL$ zz#8PNJ?ht|t0{}X?ryAiM88+Kk&}9Bxbz19Uy(?1F{=oLFlH3G$_#nW4jnbWU#hN` z7YR0CrTWffyD)vOXYSM_$od}|;W?dY5k9>0K7(&O*V2tulQ-d=bMxl@@>U2PW1L&&x(w&j zJUevkh>0dK-v%T!pVyh0*>HkIGf|Z2c3)rJPL!)Q%&KWT|)%wnE~YM#Z1S_{l-w& zH~L#M3oM}eC6x;&VjV||!{o}(S0FyT(D;Nr zqf2Y^Oi&*F`E!I}wchs^M|TOhN-hs=$6VlWB{pG5SpJ-Ol^yP#Q%U)sS}*ir6pbG% z`1Y{19uEy*!W4d6mG{pEc1HbcnwJF!!1cfPW%S@Atq@Oq>d9RZ^$jM9%B_XR|H3Qew~!w+2UdJ`O5Yo2`Y*@Ao4Mlol1R2H2Po$t}XM5O@G9d2TN3 z-6nv=#gOC8NCsn_;}J9)fI(MEgNIO3cp^lJRI`9NnphByj4WowLpN77yOgg1klG=g z-$sx=+(+tw7(_1*cL|1*^CsPAAZ4vEA#Z}km5y$iIbGSP@+$k2s7Qa-;6+cD{|KhE zBsX40>JPi`4WB?^w4{bN()cQB!xca&cs^4;B%-qOu$dpB!=-QulFr+f9k7Dxy#>(( zLRj!tYXKGoy?2=}j_=V^iIWNhcoK8_#XQcs5G`3Nsei#I@huq1`v9Ojc-L^HJLGa&4!DeCfC762?4$d z7@v<`;@Cytz&Z}1-u_-4f)a%e(3;1g(SqQSk7UxdQ-Bys_9e%eHrECk96BJp&PBxwlu zHD^~Qyo>bxXb7c1^w-1P%iQpp%g|GaLs?pqiENNO1eKz+{~IQhKN)m^;sVQsOexcR>Nl?fwJXZ&v^% z;Q8ABUgzrc(IPb9#AA~Afoa}HW&>H0x%y3E`du(KIE&oX$Fa2=CWBS}MBbnE-@4v- z6CkVpR=` zbgB__&Hv8XM~PWiwEMu6rTy+Q-zSF5cFg`JQv+%X7ZwATZ75+e9xubaAb;6O!RGve zK1@CzX@USSpJN>(o>r?P9>UdQ>Bj?f|8I0gRKCy&EFAzzx`c`4UZu+?s>QzhWN(!d z_7MSu@i}_>#gs0*;DV4SpJ?9s$_E@4#g4iv*>}d!f~vg;?G}6wRDuLX?6KljGj`>p zr=ZX6*x=;!%o~vF;MWNOCy7TzYfKCupJ@SNW)oar5Q$eVa)bu0W}mUWx0VP0hz;ND`G`T@(N%dyg|Lk{ zwLopk{Uj|9{89mc?@rZ^}WI@nO%Vj3*?z@u71A?xL0twz+>Snl(#zgb)j&> zLE@wX!5uR&A)3(e@;}vC@R%Rx)9Z_CzYjmU5a;WeiJAn-;+u!g2`8#oE)euxVuMa> z;s59@o|!Qr!zyV2VYFZL$N%W1S<3je`>IicYQHb!q=m%v?~-wEUTe3uj!U19ncXA! zGGmm>!i=|_FN2km$ipVyf? z-3SKrLip84a++F*V4Yz*=(0}P1K|ZGfEqnbSX2uBoNVklh>5*x-)G zr5f__EQlimtE!{|??>1Y%!dNbl zS0Khf3+=NtBiW+EF$Th#cI!pAxiP3_0m|pb(!%7nM(#**Ur2!G6Yrl^OsmR6ey~E< zBiwJ=7-lBEW+kW!8X<>7L_X3Ou~5BSE2`=x)q&OTuojMO%){DpH?-4Od8jS(4|7xB zT*#{HaiWPoWe6V+1itM{yQ;qOMFhkC)$^7=;|C8%$|U>ZDazhj|z+7$i z-6BLMK7-)`GY?PauFsCuWOg(pP}9Po6^xq-5TDB=9m?Ok)-swb(mMeoUhi*?u>tV@ z>vIA>+|6J6Wb~AlyJ`=ii;5cwTJ- zOZ2fZLH-j7q};@Sdn8vYC27dEH3(cCiTdNJ^<*?bP-2NM?A$~!cfigVQbS9cC6xKf zrL=>(Ut-%TGk@nP>G2ToP~=Ox*xgE7xixdG5;hPBmb+)a%2!=f|WD}MNv z%J~s+VL@B3Lh)V@8wQe2c-Y3Sg)OiWitRsAa=N9%0(q(tay)Dx(U2hY@tF~eGIDg{ zF}=RJ+A2J|6>r#1(`g5{eGH|1o2fER_vR#2UL1+lgyXxf$R?_o6UK!Tc1ALHRct_n zV-c*-gA&eU8O^iNO}uP7bEg>G_Kxao3vfr#<(WG$@6hF$9*80oYC=O28IO6xjH%S6 zYQw2@_Xo5gDm)QQ8&~(=T?RWn9#$WV^Szm_^0jxoS1Jlz1K%@NtkqiG&7d$>yK3j{ zO#V7f{L4$&v@$6f4nREs=cvD(SQ-@9|2D|m-+Y=AE;H!rePQd6jbLJuqqNve6)`t9 zjN`5nHuXXX6(|<_?QoQ2vr{XHInnad{!Id;@nwfF{zB*^SKp!CTXgX7BG&h9wValJ z%_HVjUHAI$d_X0R7W4C#VorjrW{wHzE1iRb+7&%`8-sG+H8sdZm3Le7R|!%WiNf*@ z;%UB>C0>|S1s!c-d{tUoK$aHn`Io@A`OquLT+M5XWk8ZI7Gqx?qH}aC25|5;*R)8=c zdLw1feC?-h49by}=q9F}-+&Rt;^P7+8OS@MwB|0io}Kk%7mvv(x`OiJv22{mn`xV# z^dx_9rKHQTk>r5aoCn-hvCXm0rdgI57b5xL76io&U6|0(*^i(4A5FPm`%&+<2RF9u z1Noifw!ClijLPqAgt1X>ZO8|Y#AgNsV;3XmFB>~Ip+~?x$%E+F+gGqa^nENJj@F$~ z40y437kL|S3LN6jMQEWL4Uz<-Ri7r4`>W=~n~Ny_bAMFrqseyxopO3-)0au%!AAXF4+F?cL`HE?L1!YEK*$a=YV@)bOLH8a<2ZM$~4hVkT4Wq(c5~H z3H0Ks&tbGoMUA}x);mKTFVZ5MF9kMot$~|qJ|ukXk($)aWFg>A z@Vin%%4;5o3y{>tRIy%VJ3>QnRaNj=8ow_THK_7?6>(ZokyD&IM~mPA=Na!m3qE+R zbLR`QyRk33<-EjTtuNB4zg6<>qRfUpC+n3Z2N^L~eI z-=y0IhM_`j=Um!FA*k!5y+-2GJWOVy2@9!#ajrtYNfbLCC-a4){`JxxGZPCwU{7w& zKp_^CXOG42hx)fRxB$VK1|j%mp8o66*6h{9G9Jq22bx~cFWcrwS~ay}EJazYzOcF^ zaq^a)fA4goe7+6CY>TY1P*gh*;9oO5XAT?i5w%dUn zZ*cSxVOZq&lgWh$YaSZf@lQ6)1`PFIO__MZ z+A_JDzn}!E!P_NC$HnSrwFowaJXx9>K+OxCfXQid8;NVDGmgc|kZO z_~wPcfGKX=dTfrKu%mUh!NcmqMLVE&MR!(a)g&D4FAJ`TCg(RgxaM%-X%OkmY~x!; zF&+$o%;`ZT5D~~X9#S9E6Q`>o93ZqX*3lqN)T>}R@x@hwGHqW*39RA+`7vTnl4opN zMBy4BPdlVN`o~xJk~3tNlQh)EWBU6Q+l3w+)w(oS@rhmxw8QVRNDrES(CjEX&K^<= zM9X5W^4gA65A66rCDmA%$eFpiZX*-nGqY7-|Bd)ZZBfibA3|%KqR2YNS2g4^;X!7g zv=gf43cj-rtk&P20P}7@6L6JdDxKmt36FsD|J;TiKR;3bstz~6KeaGVaVwRlg$~XN zY!95UUkpj8o!z^B4h@$GR=Tsq%*E!fA5THQ+OeBE4{LPLw;mr`bJnZ=%@obR! z$Yid*7+u8*o=ipU{WQKa{ESWI>nDa3c~G|)p#m+#yRMGBhe|$cxQt1al($TidrlXbgj7LN#bj6Xfc}@x4$ZHQzHDz$mFAg zH_g)W5<@u8!?Ctlazk%?&`A9?!nA%Xzvt(#SBUT6I6LyGYDCeMi`mIccT0xU6xAG+ z_}7OJ@gV$K^OeWI@aKeVv9J+mCdL>VEtZS8gxMwHgeq?~d^z8Wd&t?7PJ4-2diFG? zu+u>u(1fkUxJaAJqpwFCU{h!-Uw+sCz-KhJgy)L)7F@5B>cJi-?F(EgK^!B6*jRMD z^2&#RLlp(uI!|?A$vdq5fNZlL?{Z?7D4{offU`ib>df<7$$O{aBFF|B8a@q) zic7H$6_hE!^Y{-VW7*qjnL1TYrZaUPDk=wVyB}{jr?=YsyZMQ{n-*?h$&Qnec3P6L zX)g4m9i;U*@r;W4cvoS%yO`@0yOQK}^D>90kC}B)jlAqvGt=B%eD3kv*>$gUsCn9W z`kA-|t)-!yvFXuzLbAWaa^pS>65MtgW+jm=W1$5tB+F^KN1jtk4p9%}IW+1t9`oxD zNQNnpD($b{ZPxSB zOreLN?dpD9R~GV3@D$l3N3Ki%5OfV?vh`}%G!`rpO=WIjlo(+hooNWZrt@6-a$x0~ zAZTMat9YcZ^IjQ@vlR;Zh4u<^RdZgEG3mfw$G+_E*762Y)g zwz)@H8aEVEFb(JZDnGa$Wb3w$XLA_F76P-Js^2U_-*5KayRIed-CepE7eC~qP%03n z_8z7v$Sz*PUp6SIR=$DJ=RWDWH=0y^Q@Ta*DVL&7f|R0B3-|JFaNc+K){o;Wd;eQ^ z>5fmn`Yl`k-|}s~p!3G?*^71TTyk;zm!D)?^17=PrR#M$`H!|$eO2C&<;PF*_Z$Cv z^dM{LJDp2rT6(oy=GPCoa@l#v^*Z)O4C#`&J)-c@{Rf$UcKz-;zEPxd7aefzaCUCK z92yl{6DnVBbo~2R=aG2Di@ej>1P)!zc`?QEtP#eEEo+<)tOD?-^34|a4qhsZn4u~k z=QXf1R#DU^(HL(rWmg!-Gre!67d^!|QySyE@&jc0R_2{SlZC7KZtAc11&x0tF?xaB z-yGs-vClun(@ne@(8cz$OP1@8Zv5RU@7mctM)O%5WqeJTyOheDj_C`D z!QJOV@TX$jI{adVqJnz0TQ+=m7FW-z1MenqXf%rM-ZyTt*D+ttajwXU_)qlQ!sLWv z_14wyj3q_1e&eB~)sN|3TwrBjC#0ZE?}%!$n7sB`dV7e1KQyNf>51$O4NKqpan-(E zAex?1y?CLs`6&{*_sfF6-TDo`!fH%1pC7BeSx-n{r>u0w1fSLhhHd#Hlkt}yrw91W zdwXdlfXSHkH|L_i9(Lpo1FC1t7!{|d>{Za%8RiisKuy1{IHXAY&E<4a-F``OseEKuR-igt@Bw~d5&0gklObcxn`U*Ntzz-9(@`Q-IVqEi`OK(*vT7} zTi@uW;UPpD2itx_BSg&*5ptVKz`(<|gnXkl_bUM%(|tGv^31K#+fsD?qmQet`yMB4<)o*>Og7)xx{0ZB zqaEk|c$!{DJi7MJlgWzRn(Z_Vb(R1!Wk(Iz-a=`1dI~V|54+`md;`tgFYlH%32_J% zr+Q0LkT2=yk4<@WhJWzI!Y)EqnttZC?iXb9rd_kWb6gbTI>uRa-{u-BNAxtBEgsnp z?vMBQ({oAhd8#sHu<#)MEq2XPS7MM?VzKx~vDpX{1X9Oj?Ctp~8*L%z)9_`|Op>>rzY7CP1W((s6&H*>u~ z;^a+=a>JMtD}GtuDw;KI-%cPpO~r}r&UkI=`0BQ02iZ+Gvna)>@kU35<473)b(=9* z(f+$Qois_02Wv&To@PdAejXcv)D8w}?v-?1y|@4^QS@XnzgAG8prg^vxzg|`Z=PSI zw|1~E;}2{(E-;o&`DkguCHBU$ro73`y!CZ6y4aWD@2SqK-n!@QpA+MT^Q;0k`_1F; zeY^j~=vwR?HQl$)W$2L8aKGk?v*Az!=dA+jLb{gS*#VKI$AzmZ?Qf|iiHhN~^N>08 z$}Zu*=eq02Z%t*Il;~=ss@mRoI%g?(_qwF4+}5wek7g(Pf+Ze4Il0A6-@EPvARv!fE|>bV&l^M@$@y^BS*YE#FB( zHdC8c14g4J@LnC>(pGj?0@Jpf?YjIh4kg8!Tpnij9aS#($2xkg=Fk{{@%u~qUGkH4-K}%j&jp3!XdjliaewcO`Z1rcyTZGg8b#J z`=sLXzrT0h$ii@WVf_Eu`pk`M%6J97aV!WD&(a)~rqE7rDF&?mgK;d(U*@Y6yX+w- z|6`U}2PloUTm0A1dvjE{anxbaR6^seW&P1$OCXdg7ehhfs@&Nxa3$1umqWm~*?xVb z^ddq!On#9`QYqxK#n{eg`WYrENmZ3H&{GzDKJ}-W+P2@t8eCXwD70I38H+*|bp=6C z%>4O@=ajeW`)InkjEICs_r1;sTjuSHOULmoV*W!Gn%OpH%zoDHfjmZuuCmCqsh(gR zrQ@z=sb#R`zB|Q5nE}be5~idNcZA;r!;aQ87`CkQPFrik>QfQB?T(gQu0f|ACbsDv z<5pqO**wzm88B4Y;^2JKL@9q+=Z`&Oys%^qBqdM$nnVinhmJlUOYNeGZNU$KQg2R! z%bS#2_1SqFk4gh5%L-wS=Zd88#F^GVlNy0mgxY#dY1byW(X)<^c|5p|N?oD;UMH=1?eL>~)vkx%x1_qh zZw9*8UT)kCp7CZg{gre_g+n7*RFmCcUwNJ*FUgD2lHT|>a5E$HKUqv`1(U86LE4AqjX_4*r$2YMuBp(-f9-ntTj2&5CzT51PH_SRSRCGRk$C=7ty)bz4c@L+1Q6{ z>*~=b16C^%NO3!^B8y0aTTP>n^~xRkWp0u@HB4a%V1nXY#ve zT-dju8;4vlf3&vaebvO}5R9Yr!Fn- z-Ly)Fw)4hr8qI-nb#j!$AVtbCM|;}@^i(92L;`oBIo^w|Vgh@YXImTH{?2YI8=1Nb zD0_iY^jyEoVRKmAsQIF2q{#=YF11Jf7Ablm_?=Qc*`882q2La?Ju>AoPSKIqrYOhN z%_j|S*AsQ-ovm(;8ccA6*J>hRlVtul8hF{w#kR7f!5Q!QX6#suFl{_OulNQ^wTKqwXXj?w2p|Ut%hD+npBm z6g%yZal}95JCtH1!_ovbfkn`au^bw1R`~snYj#-OTpsk#VS3OWRcns=q5BPPwVgV@ zcXURT*Zjn8oW&cT5iQa2f!+35oM=3|s13Hu!C&pJRLkZTKRBuA3$I!ni*uX=ug!hF z4hfBC&#-XkXJPENpB`C#64iMA=+(0rc z)7#R~?=WQNbh}`_4}UIUq2S%i=RdTGn@TgpP(h=A9PcV;^Q*FUWX{ze z4IgD-_qGJ^rti~D<81HFWRBlinbu^DOcKr_r#aRbqlta4HO6P%BFgp=5A>2k4;LN7 zj*0xb^FmTjW7YHwd^*)lVEu&{QAzL=PuTRlyWD%-#nkmYG2`;g*x_37_K7@Jo<0uq ziINq7{iw1>^3Q%^(G0Of>7YU2x?bp)by;y&Z#_W-LPf&2xX7?G@|k~Yl5<$--|Q)- zBm4<{ZH?4SlUP@ujkuwpa~M-jsKaq`Obt=7Vedybuk<}4f7j2*pIPkDz}3e5X?NLy2SxpA<3`}=TNJQ}^;Gg+sIp24-7E?A&+sr|b#UJJQhSOXtXKj3aHD*2 zG!PYbENa5PwVi`zJtb=O5BjY@j*qp%#?ysmkG&nU-h)!+tZ(}E_pp0+BaXLG+W$5K z0GNZ^Ypk{LxH*z0tF~?B?;ifvl}C7*1be3QZ2^5L)jJNR`Ri>1jC!-j!iM$J3uIiS za@|N|O+wZ>!3lD6==0kWq-7$`(1<88o1w6tAMsVy5ua zV=II0$!m-uRcFsfZ9Tu<(fb=|YUk3!qjwo;TI;r}+;6|de{hCXUtCQ8d^RZ|?05wG zcZkf)xHRhNVAPOtP{m)a)Uuk&R^jfsl-;_ily^S!?e7yq*33B!wR%QBBoy<0=U~nO zYAdykQ^rhvsdKEygv{|c64`G)FIt`#;+L3vHsw3m>OVyD-hZp7@$4iODQaAnRVd;h zS!^nh6zV;H6_$6t_T5T!^KuRDV4f!{`l|Qb0m2c>;WuEQ>$QbA9lvl>4`@UD6Z+elHfYo6& zA8fS_22j{OIlek&LS2Z_yP@lM`puUpk-qCNpp4#tj(&2#GOx=Wi+J449f#jzDykDZ z9pg|s)JTcS5)L@VJrOO5Dw5pu$A39)6bUBmR!rex>s3SvF0-Qesd7%KaqxEgU&CS3 z^h_xz>!nH3*&MYOv1%8aKKCznD;TM?DKNzpwqJWn5uk4EMDdu7g)KgPdZLAt)EU;T z@sV=fTpHEA6nMBu84PI`!ieXu@YexPDZ7CPZSYgJqm0)mx0!Uuz7Xwe^RR#AA{nti zr{ypB6c#l#oCEgF%6ZD;P|^ z{gaOp!cVsMIy+J*!hQ1;3X`7H`8JPMk{MCwi;rECDn*EC3CK2SrXbnJkr-( zL9hO8WyRB>$2h8xZx2q88Bu3NsWqWOZ;xv+D1Q0f-Ceg7v_qOt#wK4sK-=(hu6qTw z!M<`&0*A2wRr#k%($!2?7WHUFjKz_^XRc}u6@Ij9$_y!_%NShQM^k6`3wqwNIJ~OqH+#$KY*#Z`Gp>X2OEUFxFq+7^ zB${&Xi|}c!_Gj%|y;88B82)S&VeI3SY1OpsmkQWS5?=bx`IJ0tcWJJu@mKlRE(hwr zmJ~htGE=;p+MsSyQnyq0XCtdd+%qNzrgS{a;qKY#ILy(A=n#xK={T}yy*^J0I4oVp zZAs4kH?>cP3GG{wwQIM+_|#~N4WcRQ59nuj?zzh@mp!O;>RrNS0R_EW!lc)9&dKAEp0dW7Uypv zwe2p>m<4u7Y0L{HjVnLObbVUOMESeLV}}XckMlZ2C&cM_Qj5M*dt1U>@8Yt$L~1Q@ zZ*OFU?w7CW6^-=_mh!fcj#E9Hjnw!w~S+z!l{+IqfJWl>yNm8>TW9f))1b2BqYH8iCG*IK>U_H#Oc zyQxn?;(RsVv#lF^o<~03_Z(n9g(Hgko>)@0M|HbPO}i7f&pC)Vhig&Y=Q1QS` zxyNDZC=;h>y(@p;NIAV5%;xw^n2M4)U11CR(N%u%^xSvlen{=zajbpjz}D7+Yfr82 zR)Xn_yNz{?EOO1i1! zw5PYtE=6W_0Y@);nmy{jf9$qdM2G3C+|5mJz#lL5NjtAZ#V+2C$m4U^*TntA{4X`yT@SfRE`U+L=E zF^68Q+hNjZ<%x!0Pl=UDDno_LHogWI=P{EL`fn?BRR8S!KwV4v9C%8O!PM<(aEzJD zPJyc%hy|jX=t0LSDz@uwig}jeNkJ8?dGSiQDITxP*K%BS_dLZEhNsjC3$<-+ZOsht z;xm3L*M`WPZuJGu{-q-amjLiB7LuF>f^!@+B)J|tuzG_$YK z+P1im-B|8VZMU@&4SX{7NZupc?RoMvQu|QhD3xJK95?5e^+;Yk6f`AJwG)cHjmqeN z9~R0hQy0fq?PC>SM?}gbsfKCxIIMPJpnTxzHO-ZqK8EYoCq;eD*HS!OB8GI+O#HyD zr=dluQ{{q^2M6259)Fh-gu5#PxAeUAMw(66?3&Z`IL!{%Yo#n*jMD95%Tkn5=KN0t z6YLFkPBk_$$F1WE94R7P^71WBM}`VD{4oSWZ z(2InLjFlc%gGZ?eu%&^mbLEVEb#IH7rmVT!h1uWEw-)KSH+mY{4n*edKV`_HM3E1u zyY{OCvZOC(jf0#mqp!=d#mrb?sfsO|~kEl;nz=^5#K93r&9`-NW!@m~qPAoe@vWxlPKAwDaZn%`&G0 z999P~-Q75CvC~0hMVM!U(=XHbzSH;T|3}hw2U6XCVO)DAdsm8VvdT)KWfFDUPA+X9*WSqmM&(h6MVz)KDKYT=6)-Np zcZjJ<=;xuaOX#RyzE$^eclo*CrIFVLhY|7%GBWfX``=GQZjGoXhw+rQ?MK!B<>}*3 zY_J+HP~}n?r+uGDe4eHu=IAfc$p+O5+ksG^+jNEXw#!bsmCcD&@~5ujmagMYkHw_Q zl#^DX32x(zo#z`b#11m~j+YOt3+qW65-38c0*Zq*X#-HW9^vGA^3 z>JofdeH1$_%5m8{tJT*wP=~E?;jpeO>h{rc1DEfJPFPZJ!m@+*r_CkDy{OdMpK&jf z34}(NiuX69)syoL#1k8KrUS1$_$z*#&u#Y5%d6RslK*F$HkYFWlXG@L_xVkmWG?y3 zveLU6tN%=Q{9KO0<;wQQ3QF1pkAG)HIL@p^v5UP6&vxRf+i-DySbyXqq`$ssq?VI! zz>?5#5auaq&2YQ$k_86DKLFOHPb zZ62RF_`4?bD8F?@w83QT0dU)RXUvS(F&o5v$BW4x1hMgQd0-lXQKi+`V9$;Yi^ zy?prGG5U?nD}NjRrR?R-(A@^PgPhdHJ&)M4i4-RjJ+0ZBUHuBy5oXH|&(t}0etODf z^<#SPe(FQ}jSr4Pol!-S;=WuOJ#oRw7t@z>-mo2eRc;o}Q6zE&?+~u|jq}Nm2PE&c zYY5Z}j_rSIF&v@FHjx;^r@hCK;IphZ5~dVh>>&S`diSGuvg6a`z0#+j;>La2KR=LI z$5eAJ?Trw2-NQ+~pE}YIcsbo7zB%c}wb(7|(OW-zizKcTH|>y&*mxOo->>s>`d6gN zCfdWklJ8SAc082Ymhx|WCr;pt}qimE+tTI*1FDK9JN5Ed0e4-t1%14)z&GwxH z8Ist@fq*4;|K*95Z0#!tV~*=zN50qu{C9`O$|7X8%)7yIz9L&{N?zz9+odcfHoxy3 z9QCuQ>ik-Me!pr~qsmlHJO+XzXvlW5LJ>(!R*!olCzcyZ|shRD{8XeexYqnAQ<6F9M@_8dyRkL(s%M|;#+kk`2Hqb z`XskX>)Ri{wPGTy{V8QiGi|38Eb^>JFjh5~Uf0`#)}gM1RL>((>}R0Hk#)K;~$*jgiD$Dq& z#D2V?nr&_N`NiMt{B`)n1boF`+l@3tcEp+^J!ULOeO{3@N189|53Sojm*KWt zW^6{va|#}wbhn;tzIUQf=-&#wnPwMxm7t$mq5moyT?>Xb{3dIJ0^8Y^uSYMKtjrhEK8WOHfkhM?GoYgh2t9EnP` z&3=(u>giEmEfje+w*6i3l(z?+55f1FIuQ!L3WZkjU85SS$-b=?WhC6SI_0A`vXHRQin5ITSyd1uhpZ#L$Bwb!Pb2Si~pEI9~R}$tM)N|D=msl3p%GKwIhW7T{f|8Rml;-GTp;5on5t=J4!y9aP5L?JkVmThg<7>1hQBqn z{_vVr$@##IQ)&@S=t3R;)<#Z0Mf|iz%IjPa{TO+lv(K8%RgdGifGY)zURqRtQyZ!` zZigF2thbF$QA}l(LE;?-G41FPFKYy`re{>JJ*B9CXAHbeXx~AEx|HKUau3Q3tg&T= z_=vr54a&liTC4QS7n+a2Rx8cD7qqz<+BdCA#D7{NE{GGN<{lXRT2~oGMVS4jWC&8?ZlPbX z!`i4N0AspvGX`#*z^w-#8cJze=Z@)HhFp8-#J*$rEr#JNof2+2c0;SUw>G$4Is|WC zh7R0R4nx?kv9-3+{LC{_F>f|JjIldrLp$c~8tTVhcNahN>48&kCTzm4Q|Xb)ohN4B ze6Z7)p4Rj5x5dsy3=cyqve~?KdXxi$9Bs+y$IJT^tM<6(h@jKVX?=+f1Gvx;*hZ}{@$NZ^zC>aiMaiR$hvAmdS_b_QbbF7OLuXW{)ITzZ z-rv(s!H=KO*b_tb8)`M32_fgsnUm_L9EThiXFRc&f-X$v2FKG%I@s#Ry74x_z@k7b zA4<4(Z~A!1lS%}!AjCdUPS>JD{Ja^R;uu0uc_R+8wQ&wiVPjMBc%fDDN4$m{?F`67 z?5+tNHHDH)NVB=mgZhI4+uyy6h#(W71#@ilnnpm6-idYx_|*&-das+1 z8##|CP(~@p&_@aK=WJQRbj zH*3KCG(`Yg@S~Yb^O5UYY#1n)(T|p&AusrmTA!(HRdNo!r_CdpUi97Vx3wqNo!0n{ z%hyBpVFd#>gFNWwu(h2tTz8_A{V*1S@H;OG>>-`^mK2pw>=cL~!Pk9o$N5c+kZ&XB z5&=?g(?JTneVXSG&O@q=I12t}xKrk>@I@YlcrQ6d^#2}p+VNg9ja?Kv@rzYe-RCpQ#TN-XUx+DlmotV-e7x zhzMzSG4kHrk+LM`lZ28HJg~zB6iE>E$i7>N%@d-0ii3&At}Ph8&kZ6bAmWS+=D10t z*oW~=Gs;Y(fBR@89Zou4NFr8+na*|d{|>1NmY39M_<5i39l&hMsDF+d4otRJe*@D8 zGq!yNB0DbJ5W|f}yxT&Wz!%k0$K3>p6$=|>}lns8=SxMSv<_dULft!O9al-tK zoS5Ldd$B~kbgwtquKXJy)%UD@L3n%)AAL;l27X}Ie=R?NQ_z-bkFPtUk>X;~f7yW? zowm=T+YQSH5ltTs^KRoKnNbQz>i{YC^M^y8(?37tgx=lLeuph5NBI|9eT&%pK6IaV zn+TDlFi2YFY1zCDfA2o}7sj!2ow)fM+(P(#QaNJaFZX&uC#vO+8WwVs#ya-J1y@Su zcaNu?{!{vBeCOSJ5y*st89@RtLxjvsbfiJrM?1XPd_YWwA_Tc%1I1B1XibVrJn4Wp zfRuEG;JN`1`B{{L*(A8JW=vtMi4o1m?DVo1m1aLQLsyGG%rM$G?8H+PdT3%VbX-8$ z7cv7zFr+h>sii=o^FwAp#4|u*Y4n zG>$<{*cs7>`fGV5d(Um$65lk@km_0v5PennV|{=TPE9wk&nqejQDniFsWAG2jeN9# z4>?Md*(QOxXz#;Zt>O9D&&t-#?(hLX{XW^?u9>B3OvQ1QO6 zcW@mdnL@?)Vsmip$p@!3Ixr3!IrKpl$~KQ}1aQ%L5C?$-Zo#`=CVC^W=Aqk=l%OtX zO_ixPwkqKY+;Db`Xi7S4wfZMch_1W{^<(8Lcu=5xi?PNlv>Ldk8CP-RCQktcp zWA&v#aR;8moR_uc&}bmqJcOWTY(1*J{0@J zINv$Q$5yg|pcgD*i~wCv1frKYD%kSq`H4MM)M2R@ph|+2AH*vlT?q@SKWk!DV%-}z z_T;+Km<@II2cRo8TCSYY7hR}X*+;Jg^f1O8UbMMjPl{i|FCAo5pf9ZGQ3V)4E>D&M zI@@8b`$QPud7Ow6kQV9oVH2kIX-^lySY2PVAukSbV+wPxhc?1#(;6?)CD~QnFMSuhX z*deZgcrF-uNu`1!Tu5$$X(4>@ zC#o~B9dS#JLw2| zt)rk-ASLjz8~T4Sl_C0Y_vOE7Elwz~XZ8AO`(Yv5hXN7X*3^u}F}JI?j`i7XTRHe} z1omPXaBayAH(Kn2;txx?0B++U$~(wO5tO5sWlSNKNBtuSA957s(@~yMi0yC*$;td@ zYSn#dg=XcMX@tV9^aJ1pG09KTb4l{icEyh;@LD5lmzRvyH)N44r8Gjg=BVR?wieQJ*!{;V`IzCaY-8 zR^uc{x|R&xq$Cxgg>pDZ!mOr9&gV`stgGMvWOjkU4vZBH01?dVWQTnmFrzOqGP5lV zTx#H&C1SZM;3Ep{s#S3uyIxu7=SvFxw%`GBEE#}v;0(G$w@d&l1RGy^GQMkDb;rwB z9{=E|!ynyfDGI8zYEBafbR;XEiCPJ&JS>$(*Iqd2D)Oq)@pQ$CQePt!EXSg7m^&0z zXy7{SS!v)S@WzG&5aJ<7B}6niwsQ2Y8ORW^)$mi$?$SYWJ7NGH0OSB_03#skes!#0 zxdXUegid|9{YAb#jL3*TyKOs%pCADCBxj30%x-If^POwmjU{Ed-%P=M<0(|!fMrla zF$vV|s6w3=2PBvPt{^zj0xk}Oh@)Y8)_}IyjvPst5{z!-Jmaex3aLcDad%ts1Y3Lx zXjZ-8O7s$T3-5J`fN%-Hv=Rd|j9g5F98bcMCcwr765@6#L9ZiZod$W38UK{ojvVn5i4iOiqUyJ#5aLU1a0^xU zG9s2J69RWaq-H}3zze_(AO(QEfcA5aNZH2%y%kWq5d<4Wei2|~4%*I!0ANp{=tLhB ziN0YEe&MW(EeXGh>KLGe9&QEkkP&|5J$C4+J=j~oKmzkFm?19H3=A^iu z(+EHfHBu=f04bVzN4DZy1B@POJYRJ|N&>(OpfJs9|Hjz;SInU16&#tTSwrEWwmr21 zv)iK|8KQRHF!3tv^%n-zDL|b8)QJGlNn^svDDI|b+=%o6_&ZRTGq(}4G=29$1a^8B z8hr)#=zkz|eEBIBknps66SQqLQWOJm84{^3k4jC38Q)G(=zbdgKoOO9q3*5W5C306 zRlCvBdR6cEGQP>))MC`3>#a1tz+a^EQr6_P=yljHXt){vVLGD#y_a9hJL92hr=TL9 zYe_ihBunBk6XkblzKvs-7TvC1N8t0dq!|=c0s4?|bxvr}p({5)7Y^!i8yA2800Tf| zg0?(L7g50+y1Kkxxz>65>j-eKAlL}dj!-}n?g*wYNGkcqW3@LSM+U$Ugk%|l5eR{Q zK|%zk_{f?GUakMTyJD+a;F<$D^kxFM0$w5Kv)KSr8*b?5phzbZI^G2s0H^@q1M^D& zdLgJmF&=1Bz*1Uz7(LKOW@w%WXmZY@-+t`s!+ut|0IUHbKtce)M)r@$BGp}bNa_Me z0C)iuLJb?hyEMOphjwqU(~W^4Zy0P1W||;C<210qrm3KvB#dARbanvj$saThfJX(q zU0BF2Y#bYMfDAi=SiLKD=&82&wx)f>RD#$=t*VWj9Z%t_m@_ zwDvP@O-C^Vr5vuG>yDK-#q-^0ae#;m;5Htj>!mRqSt_x`G^cR~)@v(h96yY`iXaC` zt=~raQ|g3JwE<09l1Tvw0Vn}*0Z0%?v!FiSl=H0|F7yBr01&PjqrMY9AYKE2J?+7X z0KrD5bp*7;I;4k|g7~PV0BSj9f{%2Kz;PYpmKxolR=1JdgkP=*C|?0(El|dR@Dyq; z3H}^FLKzhEVTgP58(C=0Pe2c6Z)%(Z z`V#>SyEq}BQ31edO%9kxz$Aj!2Uq|NqN`nE19HTOEDhjCj1+c-fkF+Gvj7$de3Tq} zt`wtHrPk*fV|{4Dw%weu+wKa1mq|3%2^#^j!-hd1OSQkz(tg$K_#wXk-W2+c)%vY8 zp}<4Zd1-5MbW??H{!z}OZyOd3th&+n`9rzQa8Eej&Jl=*;N*OF>g9>2`67@whu{;- z)=X3&FNCLoH;KM2ej|T;4}b}%JOFtBb^r?qHstO{D4<3*p^b+;h89N#kdr{)N2AHzP*y2?zE4L=4T(Lf@nR_dN}LzeA&}v`>%fhtXa* z=9iOqgg}fcs1f~!v|pSMow1W0|0xW2B#6|<&Ip?zI)f?2pLv@8c1(~Irk<6*wZGQ$RIZtihR+BAP~gCXe-na zgR!%W{7gbw129MlJ|wU{c#w}YD#(!ou)+o8%wfKX)*>jXPu0VY!wa450Sp1?z=J0M zA9U7(WfT!&_GpYTgd5z|^q|KM0DCE+M({uurX~b37l1WD1Skj~*f?h!0YX(lNT?Fr zSAt|E4C73IbeC~3=+7Yt9LPbQ0`#Q89e&M4E$mniBpDM1cl=-jbs)408atr21E*CC z()fiQG513lt^_+Z2gpG9-x=_Rg|lGmE7(#2t*2N(g45y!%wUF{2nosHg3xJT(gM>C zNTNWpf!KayC&ybYqBat`U*X zXv_zrYYbfBhi!1HebzjFOo5_5_yDS?>Pu`B%H;&1GH#Hn!-jC;2C4=IsijaN?ptyM zG8m+JnE-$efC7LG0DD10j^5dJ>sLV60AK_F8@hw;97xWA`2SC#=)?f6yI>qad<3RA zsEsk0tv`iys~HhIq-JbOeL#ZXKTG7>XRoXobngSq0Nes`44f2TE@4zzLVzS(@&